diff --git a/.changeset/fluffy-trains-fry.md b/.changeset/fluffy-trains-fry.md new file mode 100644 index 00000000..ffa02f2b --- /dev/null +++ b/.changeset/fluffy-trains-fry.md @@ -0,0 +1,5 @@ +--- +"open-next": patch +--- + +server: add OpenNext response header to track version diff --git a/packages/open-next/src/adapters/server-adapter.ts b/packages/open-next/src/adapters/server-adapter.ts index 0ad7fe8e..faf597e8 100644 --- a/packages/open-next/src/adapters/server-adapter.ts +++ b/packages/open-next/src/adapters/server-adapter.ts @@ -132,6 +132,7 @@ export async function handler( fixCacheHeaderForHtmlPages(internalEvent.rawPath, headers); fixSWRCacheHeader(headers); + addOpenNextHeader(headers); await revalidateIfRequired( internalEvent.headers.host, internalEvent.rawPath, @@ -255,6 +256,10 @@ function fixSWRCacheHeader(headers: Record) { } } +function addOpenNextHeader(headers: Record) { + headers["X-OpenNext"] = process.env.OPEN_NEXT_VERSION; +} + async function revalidateIfRequired( host: string, rawPath: string, diff --git a/packages/open-next/src/build.ts b/packages/open-next/src/build.ts index c921b8b4..316403a7 100644 --- a/packages/open-next/src/build.ts +++ b/packages/open-next/src/build.ts @@ -71,6 +71,7 @@ function normalizeOptions(opts: BuildOptions) { const appPath = process.cwd(); const outputDir = ".open-next"; return { + openNextVersion: getOpenNextVersion(), appPath, appPublicPath: path.join(appPath, "public"), outputDir, @@ -167,8 +168,8 @@ function printNextjsVersion() { } function printOpenNextVersion() { - const onVersion = require(path.join(__dirname, "../package.json")).version; - console.info(`OpenNext v${onVersion}`); + const { openNextVersion } = options; + console.info(`OpenNext v${openNextVersion}`); } function initOutputDir() { @@ -526,7 +527,7 @@ function addCacheHandler(outputPath: string) { /********************/ function esbuildSync(esbuildOptions: ESBuildOptions) { - const { appPath, debug } = options; + const { openNextVersion, debug } = options; const result = buildSync({ target: "esnext", format: "esm", @@ -541,6 +542,7 @@ function esbuildSync(esbuildOptions: ESBuildOptions) { "process.env.OPEN_NEXT_DEBUG": process.env.OPEN_NEXT_DEBUG ? "true" : "false", + "process.env.OPEN_NEXT_VERSION": `"${openNextVersion}"`, }, }); @@ -601,3 +603,7 @@ function getBuildId(dotNextPath: string) { .readFileSync(path.join(dotNextPath, ".next/BUILD_ID"), "utf-8") .trim(); } + +function getOpenNextVersion() { + return require(path.join(__dirname, "../package.json")).version; +}