next 15.4.0-canary.41 → 15.4.0-canary.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/index.js +2 -2
  3. package/dist/build/swc/index.js +1 -1
  4. package/dist/build/turbopack-build/impl.js +50 -0
  5. package/dist/build/turbopack-build/impl.js.map +1 -1
  6. package/dist/build/webpack-config.js +2 -2
  7. package/dist/client/app-bootstrap.js +1 -1
  8. package/dist/client/index.js +1 -1
  9. package/dist/compiled/next-server/app-page-experimental.runtime.dev.js +2 -2
  10. package/dist/compiled/next-server/pages-turbo.runtime.dev.js +2 -2
  11. package/dist/compiled/next-server/pages-turbo.runtime.dev.js.map +1 -1
  12. package/dist/compiled/next-server/pages.runtime.dev.js +2 -2
  13. package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
  14. package/dist/compiled/next-server/server.runtime.prod.js +1 -1
  15. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  16. package/dist/esm/build/index.js +2 -2
  17. package/dist/esm/build/swc/index.js +1 -1
  18. package/dist/esm/build/turbopack-build/impl.js +9 -0
  19. package/dist/esm/build/turbopack-build/impl.js.map +1 -1
  20. package/dist/esm/build/webpack-config.js +2 -2
  21. package/dist/esm/client/app-bootstrap.js +1 -1
  22. package/dist/esm/client/index.js +1 -1
  23. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  24. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  25. package/dist/esm/server/lib/app-info-log.js +1 -1
  26. package/dist/esm/server/lib/incremental-cache/index.js +4 -2
  27. package/dist/esm/server/lib/incremental-cache/index.js.map +1 -1
  28. package/dist/esm/server/lib/start-server.js +1 -1
  29. package/dist/esm/shared/lib/canary-only.js +1 -1
  30. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  31. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  32. package/dist/server/lib/app-info-log.js +1 -1
  33. package/dist/server/lib/incremental-cache/index.js +4 -2
  34. package/dist/server/lib/incremental-cache/index.js.map +1 -1
  35. package/dist/server/lib/start-server.js +1 -1
  36. package/dist/shared/lib/canary-only.js +1 -1
  37. package/dist/telemetry/anonymous-meta.js +1 -1
  38. package/dist/telemetry/events/session-stopped.js +2 -2
  39. package/dist/telemetry/events/version.js +2 -2
  40. package/package.json +15 -15
@@ -296,7 +296,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
296
296
  const nextBuildSpan = trace('next-build', undefined, {
297
297
  buildMode: experimentalBuildMode,
298
298
  isTurboBuild: String(isTurbopack),
299
- version: "15.4.0-canary.41"
299
+ version: "15.4.0-canary.42"
300
300
  });
301
301
  NextBuildContext.nextBuildSpan = nextBuildSpan;
302
302
  NextBuildContext.dir = dir;
@@ -678,7 +678,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
678
678
  // Files outside of the distDir can be "type": "module"
679
679
  await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
680
680
  // These are written to distDir, so they need to come after creating and cleaning distDr.
681
- await recordFrameworkVersion("15.4.0-canary.41");
681
+ await recordFrameworkVersion("15.4.0-canary.42");
682
682
  await updateBuildDiagnostics({
683
683
  buildStage: 'start'
684
684
  });
@@ -11,7 +11,7 @@ import { isDeepStrictEqual } from 'util';
11
11
  import { getDefineEnv } from '../define-env';
12
12
  import { getReactCompilerLoader } from '../get-babel-loader-config';
13
13
  import { TurbopackInternalError } from '../../shared/lib/turbopack/utils';
14
- const nextVersion = "15.4.0-canary.41";
14
+ const nextVersion = "15.4.0-canary.42";
15
15
  const ArchName = arch();
16
16
  const PlatformName = platform();
17
17
  function infoLog(...args) {
@@ -11,6 +11,7 @@ import loadConfig from '../../server/config';
11
11
  import { hasCustomExportOutput } from '../../export/utils';
12
12
  import { Telemetry } from '../../telemetry/storage';
13
13
  import { setGlobal } from '../../trace';
14
+ import * as Log from '../output/log';
14
15
  export async function turbopackBuild() {
15
16
  var _config_experimental, _config_turbopack, _config_experimental1;
16
17
  await validateTurboNextConfig({
@@ -68,6 +69,14 @@ export async function turbopackBuild() {
68
69
  dependencyTracking: persistentCaching
69
70
  });
70
71
  try {
72
+ ;
73
+ (async function logCompilationEvents() {
74
+ for await (const event of project.compilationEventsSubscribe()){
75
+ if (event.severity === 'EVENT') {
76
+ Log.event(event.message);
77
+ }
78
+ }
79
+ })();
71
80
  // Write an empty file in a known location to signal this was built with Turbopack
72
81
  await fs.writeFile(path.join(distDir, 'turbopack'), '');
73
82
  await fs.mkdir(path.join(distDir, 'server'), {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/build/turbopack-build/impl.ts"],"sourcesContent":["import path from 'path'\nimport { validateTurboNextConfig } from '../../lib/turbopack-warning'\nimport {\n formatIssue,\n getTurbopackJsConfig,\n isPersistentCachingEnabled,\n isRelevantWarning,\n} from '../../shared/lib/turbopack/utils'\nimport { NextBuildContext } from '../build-context'\nimport { createDefineEnv, loadBindings } from '../swc'\nimport {\n rawEntrypointsToEntrypoints,\n handleRouteType,\n} from '../handle-entrypoints'\nimport { TurbopackManifestLoader } from '../../shared/lib/turbopack/manifest-loader'\nimport { promises as fs } from 'fs'\nimport { PHASE_PRODUCTION_BUILD } from '../../shared/lib/constants'\nimport loadConfig from '../../server/config'\nimport { hasCustomExportOutput } from '../../export/utils'\nimport { Telemetry } from '../../telemetry/storage'\nimport { setGlobal } from '../../trace'\n\nexport async function turbopackBuild(): Promise<{\n duration: number\n buildTraceContext: undefined\n shutdownPromise: Promise<void>\n}> {\n await validateTurboNextConfig({\n dir: NextBuildContext.dir!,\n isDev: false,\n })\n\n const config = NextBuildContext.config!\n const dir = NextBuildContext.dir!\n const distDir = NextBuildContext.distDir!\n const buildId = NextBuildContext.buildId!\n const encryptionKey = NextBuildContext.encryptionKey!\n const previewProps = NextBuildContext.previewProps!\n const hasRewrites = NextBuildContext.hasRewrites!\n const rewrites = NextBuildContext.rewrites!\n const appDirOnly = NextBuildContext.appDirOnly!\n const noMangling = NextBuildContext.noMangling!\n\n const startTime = process.hrtime()\n const bindings = await loadBindings(config?.experimental?.useWasmBinary)\n const dev = false\n\n // const supportedBrowsers = await getSupportedBrowsers(dir, dev)\n const supportedBrowsers = [\n 'last 1 Chrome versions, last 1 Firefox versions, last 1 Safari versions, last 1 Edge versions',\n ]\n\n const persistentCaching = isPersistentCachingEnabled(config)\n const project = await bindings.turbo.createProject(\n {\n projectPath: dir,\n rootPath: config.turbopack?.root || config.outputFileTracingRoot || dir,\n distDir,\n nextConfig: config,\n jsConfig: await getTurbopackJsConfig(dir, config),\n watch: {\n enable: false,\n },\n dev,\n env: process.env as Record<string, string>,\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters: NextBuildContext.clientRouterFilters!,\n config,\n dev,\n distDir,\n fetchCacheKeyPrefix: config.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // Implemented separately in Turbopack, doesn't have to be passed here.\n middlewareMatchers: undefined,\n }),\n buildId,\n encryptionKey,\n previewProps,\n browserslistQuery: supportedBrowsers.join(', '),\n noMangling,\n },\n {\n persistentCaching,\n memoryLimit: config.experimental?.turbopackMemoryLimit,\n dependencyTracking: persistentCaching,\n }\n )\n try {\n // Write an empty file in a known location to signal this was built with Turbopack\n await fs.writeFile(path.join(distDir, 'turbopack'), '')\n\n await fs.mkdir(path.join(distDir, 'server'), { recursive: true })\n await fs.mkdir(path.join(distDir, 'static', buildId), {\n recursive: true,\n })\n await fs.writeFile(\n path.join(distDir, 'package.json'),\n JSON.stringify(\n {\n type: 'commonjs',\n },\n null,\n 2\n )\n )\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const entrypoints = await project.writeAllEntrypointsToDisk(appDirOnly)\n\n const manifestLoader = new TurbopackManifestLoader({\n buildId,\n distDir,\n encryptionKey,\n })\n\n const topLevelErrors = []\n const topLevelWarnings = []\n for (const issue of entrypoints.issues) {\n if (issue.severity === 'error' || issue.severity === 'fatal') {\n topLevelErrors.push(formatIssue(issue))\n } else if (isRelevantWarning(issue)) {\n topLevelWarnings.push(formatIssue(issue))\n }\n }\n\n if (topLevelWarnings.length > 0) {\n console.warn(\n `Turbopack build encountered ${\n topLevelWarnings.length\n } warnings:\\n${topLevelWarnings.join('\\n')}`\n )\n }\n\n if (topLevelErrors.length > 0) {\n throw new Error(\n `Turbopack build failed with ${\n topLevelErrors.length\n } errors:\\n${topLevelErrors.join('\\n')}`\n )\n }\n\n const currentEntrypoints = await rawEntrypointsToEntrypoints(entrypoints)\n\n const promises: Promise<any>[] = []\n\n if (!appDirOnly) {\n for (const [page, route] of currentEntrypoints.page) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n }\n\n for (const [page, route] of currentEntrypoints.app) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n\n await Promise.all(promises)\n\n await Promise.all([\n manifestLoader.loadBuildManifest('_app'),\n manifestLoader.loadPagesManifest('_app'),\n manifestLoader.loadFontManifest('_app'),\n manifestLoader.loadPagesManifest('_document'),\n manifestLoader.loadBuildManifest('_error'),\n manifestLoader.loadPagesManifest('_error'),\n manifestLoader.loadFontManifest('_error'),\n entrypoints.instrumentation &&\n manifestLoader.loadMiddlewareManifest(\n 'instrumentation',\n 'instrumentation'\n ),\n entrypoints.middleware &&\n (await manifestLoader.loadMiddlewareManifest(\n 'middleware',\n 'middleware'\n )),\n ])\n\n await manifestLoader.writeManifests({\n devRewrites: undefined,\n productionRewrites: rewrites,\n entrypoints: currentEntrypoints,\n })\n\n const shutdownPromise = project.shutdown()\n\n const time = process.hrtime(startTime)\n return {\n duration: time[0] + time[1] / 1e9,\n buildTraceContext: undefined,\n shutdownPromise,\n }\n } catch (err) {\n await project.shutdown()\n throw err\n }\n}\n\nlet shutdownPromise: Promise<void> | undefined\nexport async function workerMain(workerData: {\n buildContext: typeof NextBuildContext\n}): Promise<Awaited<ReturnType<typeof turbopackBuild>>> {\n // setup new build context from the serialized data passed from the parent\n Object.assign(NextBuildContext, workerData.buildContext)\n\n /// load the config because it's not serializable\n NextBuildContext.config = await loadConfig(\n PHASE_PRODUCTION_BUILD,\n NextBuildContext.dir!\n )\n\n // Matches handling in build/index.ts\n // https://github.com/vercel/next.js/blob/84f347fc86f4efc4ec9f13615c215e4b9fb6f8f0/packages/next/src/build/index.ts#L815-L818\n // Ensures the `config.distDir` option is matched.\n if (hasCustomExportOutput(NextBuildContext.config)) {\n NextBuildContext.config.distDir = '.next'\n }\n\n // Clone the telemetry for worker\n const telemetry = new Telemetry({\n distDir: NextBuildContext.config.distDir,\n })\n setGlobal('telemetry', telemetry)\n\n const result = await turbopackBuild()\n shutdownPromise = result.shutdownPromise\n return result\n}\n\nexport async function waitForShutdown(): Promise<void> {\n if (shutdownPromise) {\n await shutdownPromise\n }\n}\n"],"names":["path","validateTurboNextConfig","formatIssue","getTurbopackJsConfig","isPersistentCachingEnabled","isRelevantWarning","NextBuildContext","createDefineEnv","loadBindings","rawEntrypointsToEntrypoints","handleRouteType","TurbopackManifestLoader","promises","fs","PHASE_PRODUCTION_BUILD","loadConfig","hasCustomExportOutput","Telemetry","setGlobal","turbopackBuild","config","dir","isDev","distDir","buildId","encryptionKey","previewProps","hasRewrites","rewrites","appDirOnly","noMangling","startTime","process","hrtime","bindings","experimental","useWasmBinary","dev","supportedBrowsers","persistentCaching","project","turbo","createProject","projectPath","rootPath","turbopack","root","outputFileTracingRoot","nextConfig","jsConfig","watch","enable","env","defineEnv","isTurbopack","clientRouterFilters","fetchCacheKeyPrefix","middlewareMatchers","undefined","browserslistQuery","join","memoryLimit","turbopackMemoryLimit","dependencyTracking","writeFile","mkdir","recursive","JSON","stringify","type","entrypoints","writeAllEntrypointsToDisk","manifestLoader","topLevelErrors","topLevelWarnings","issue","issues","severity","push","length","console","warn","Error","currentEntrypoints","page","route","app","Promise","all","loadBuildManifest","loadPagesManifest","loadFontManifest","instrumentation","loadMiddlewareManifest","middleware","writeManifests","devRewrites","productionRewrites","shutdownPromise","shutdown","time","duration","buildTraceContext","err","workerMain","workerData","Object","assign","buildContext","telemetry","result","waitForShutdown"],"mappings":"AAAA,OAAOA,UAAU,OAAM;AACvB,SAASC,uBAAuB,QAAQ,8BAA6B;AACrE,SACEC,WAAW,EACXC,oBAAoB,EACpBC,0BAA0B,EAC1BC,iBAAiB,QACZ,mCAAkC;AACzC,SAASC,gBAAgB,QAAQ,mBAAkB;AACnD,SAASC,eAAe,EAAEC,YAAY,QAAQ,SAAQ;AACtD,SACEC,2BAA2B,EAC3BC,eAAe,QACV,wBAAuB;AAC9B,SAASC,uBAAuB,QAAQ,6CAA4C;AACpF,SAASC,YAAYC,EAAE,QAAQ,KAAI;AACnC,SAASC,sBAAsB,QAAQ,6BAA4B;AACnE,OAAOC,gBAAgB,sBAAqB;AAC5C,SAASC,qBAAqB,QAAQ,qBAAoB;AAC1D,SAASC,SAAS,QAAQ,0BAAyB;AACnD,SAASC,SAAS,QAAQ,cAAa;AAEvC,OAAO,eAAeC;QAsBgBC,sBAYtBA,mBA4BGA;IAzDjB,MAAMnB,wBAAwB;QAC5BoB,KAAKf,iBAAiBe,GAAG;QACzBC,OAAO;IACT;IAEA,MAAMF,SAASd,iBAAiBc,MAAM;IACtC,MAAMC,MAAMf,iBAAiBe,GAAG;IAChC,MAAME,UAAUjB,iBAAiBiB,OAAO;IACxC,MAAMC,UAAUlB,iBAAiBkB,OAAO;IACxC,MAAMC,gBAAgBnB,iBAAiBmB,aAAa;IACpD,MAAMC,eAAepB,iBAAiBoB,YAAY;IAClD,MAAMC,cAAcrB,iBAAiBqB,WAAW;IAChD,MAAMC,WAAWtB,iBAAiBsB,QAAQ;IAC1C,MAAMC,aAAavB,iBAAiBuB,UAAU;IAC9C,MAAMC,aAAaxB,iBAAiBwB,UAAU;IAE9C,MAAMC,YAAYC,QAAQC,MAAM;IAChC,MAAMC,WAAW,MAAM1B,aAAaY,2BAAAA,uBAAAA,OAAQe,YAAY,qBAApBf,qBAAsBgB,aAAa;IACvE,MAAMC,MAAM;IAEZ,iEAAiE;IACjE,MAAMC,oBAAoB;QACxB;KACD;IAED,MAAMC,oBAAoBnC,2BAA2BgB;IACrD,MAAMoB,UAAU,MAAMN,SAASO,KAAK,CAACC,aAAa,CAChD;QACEC,aAAatB;QACbuB,UAAUxB,EAAAA,oBAAAA,OAAOyB,SAAS,qBAAhBzB,kBAAkB0B,IAAI,KAAI1B,OAAO2B,qBAAqB,IAAI1B;QACpEE;QACAyB,YAAY5B;QACZ6B,UAAU,MAAM9C,qBAAqBkB,KAAKD;QAC1C8B,OAAO;YACLC,QAAQ;QACV;QACAd;QACAe,KAAKpB,QAAQoB,GAAG;QAChBC,WAAW9C,gBAAgB;YACzB+C,aAAa;YACbC,qBAAqBjD,iBAAiBiD,mBAAmB;YACzDnC;YACAiB;YACAd;YACAiC,qBAAqBpC,OAAOe,YAAY,CAACqB,mBAAmB;YAC5D7B;YACA,uEAAuE;YACvE8B,oBAAoBC;QACtB;QACAlC;QACAC;QACAC;QACAiC,mBAAmBrB,kBAAkBsB,IAAI,CAAC;QAC1C9B;IACF,GACA;QACES;QACAsB,WAAW,GAAEzC,wBAAAA,OAAOe,YAAY,qBAAnBf,sBAAqB0C,oBAAoB;QACtDC,oBAAoBxB;IACtB;IAEF,IAAI;QACF,kFAAkF;QAClF,MAAM1B,GAAGmD,SAAS,CAAChE,KAAK4D,IAAI,CAACrC,SAAS,cAAc;QAEpD,MAAMV,GAAGoD,KAAK,CAACjE,KAAK4D,IAAI,CAACrC,SAAS,WAAW;YAAE2C,WAAW;QAAK;QAC/D,MAAMrD,GAAGoD,KAAK,CAACjE,KAAK4D,IAAI,CAACrC,SAAS,UAAUC,UAAU;YACpD0C,WAAW;QACb;QACA,MAAMrD,GAAGmD,SAAS,CAChBhE,KAAK4D,IAAI,CAACrC,SAAS,iBACnB4C,KAAKC,SAAS,CACZ;YACEC,MAAM;QACR,GACA,MACA;QAIJ,6DAA6D;QAC7D,MAAMC,cAAc,MAAM9B,QAAQ+B,yBAAyB,CAAC1C;QAE5D,MAAM2C,iBAAiB,IAAI7D,wBAAwB;YACjDa;YACAD;YACAE;QACF;QAEA,MAAMgD,iBAAiB,EAAE;QACzB,MAAMC,mBAAmB,EAAE;QAC3B,KAAK,MAAMC,SAASL,YAAYM,MAAM,CAAE;YACtC,IAAID,MAAME,QAAQ,KAAK,WAAWF,MAAME,QAAQ,KAAK,SAAS;gBAC5DJ,eAAeK,IAAI,CAAC5E,YAAYyE;YAClC,OAAO,IAAItE,kBAAkBsE,QAAQ;gBACnCD,iBAAiBI,IAAI,CAAC5E,YAAYyE;YACpC;QACF;QAEA,IAAID,iBAAiBK,MAAM,GAAG,GAAG;YAC/BC,QAAQC,IAAI,CACV,CAAC,4BAA4B,EAC3BP,iBAAiBK,MAAM,CACxB,YAAY,EAAEL,iBAAiBd,IAAI,CAAC,OAAO;QAEhD;QAEA,IAAIa,eAAeM,MAAM,GAAG,GAAG;YAC7B,MAAM,qBAIL,CAJK,IAAIG,MACR,CAAC,4BAA4B,EAC3BT,eAAeM,MAAM,CACtB,UAAU,EAAEN,eAAeb,IAAI,CAAC,OAAO,GAHpC,qBAAA;uBAAA;4BAAA;8BAAA;YAIN;QACF;QAEA,MAAMuB,qBAAqB,MAAM1E,4BAA4B6D;QAE7D,MAAM1D,WAA2B,EAAE;QAEnC,IAAI,CAACiB,YAAY;YACf,KAAK,MAAM,CAACuD,MAAMC,MAAM,IAAIF,mBAAmBC,IAAI,CAAE;gBACnDxE,SAASkE,IAAI,CACXpE,gBAAgB;oBACd0E;oBACAC;oBACAb;gBACF;YAEJ;QACF;QAEA,KAAK,MAAM,CAACY,MAAMC,MAAM,IAAIF,mBAAmBG,GAAG,CAAE;YAClD1E,SAASkE,IAAI,CACXpE,gBAAgB;gBACd0E;gBACAC;gBACAb;YACF;QAEJ;QAEA,MAAMe,QAAQC,GAAG,CAAC5E;QAElB,MAAM2E,QAAQC,GAAG,CAAC;YAChBhB,eAAeiB,iBAAiB,CAAC;YACjCjB,eAAekB,iBAAiB,CAAC;YACjClB,eAAemB,gBAAgB,CAAC;YAChCnB,eAAekB,iBAAiB,CAAC;YACjClB,eAAeiB,iBAAiB,CAAC;YACjCjB,eAAekB,iBAAiB,CAAC;YACjClB,eAAemB,gBAAgB,CAAC;YAChCrB,YAAYsB,eAAe,IACzBpB,eAAeqB,sBAAsB,CACnC,mBACA;YAEJvB,YAAYwB,UAAU,IACnB,MAAMtB,eAAeqB,sBAAsB,CAC1C,cACA;SAEL;QAED,MAAMrB,eAAeuB,cAAc,CAAC;YAClCC,aAAatC;YACbuC,oBAAoBrE;YACpB0C,aAAaa;QACf;QAEA,MAAMe,kBAAkB1D,QAAQ2D,QAAQ;QAExC,MAAMC,OAAOpE,QAAQC,MAAM,CAACF;QAC5B,OAAO;YACLsE,UAAUD,IAAI,CAAC,EAAE,GAAGA,IAAI,CAAC,EAAE,GAAG;YAC9BE,mBAAmB5C;YACnBwC;QACF;IACF,EAAE,OAAOK,KAAK;QACZ,MAAM/D,QAAQ2D,QAAQ;QACtB,MAAMI;IACR;AACF;AAEA,IAAIL;AACJ,OAAO,eAAeM,WAAWC,UAEhC;IACC,0EAA0E;IAC1EC,OAAOC,MAAM,CAACrG,kBAAkBmG,WAAWG,YAAY;IAEvD,iDAAiD;IACjDtG,iBAAiBc,MAAM,GAAG,MAAML,WAC9BD,wBACAR,iBAAiBe,GAAG;IAGtB,qCAAqC;IACrC,6HAA6H;IAC7H,kDAAkD;IAClD,IAAIL,sBAAsBV,iBAAiBc,MAAM,GAAG;QAClDd,iBAAiBc,MAAM,CAACG,OAAO,GAAG;IACpC;IAEA,iCAAiC;IACjC,MAAMsF,YAAY,IAAI5F,UAAU;QAC9BM,SAASjB,iBAAiBc,MAAM,CAACG,OAAO;IAC1C;IACAL,UAAU,aAAa2F;IAEvB,MAAMC,SAAS,MAAM3F;IACrB+E,kBAAkBY,OAAOZ,eAAe;IACxC,OAAOY;AACT;AAEA,OAAO,eAAeC;IACpB,IAAIb,iBAAiB;QACnB,MAAMA;IACR;AACF","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../src/build/turbopack-build/impl.ts"],"sourcesContent":["import path from 'path'\nimport { validateTurboNextConfig } from '../../lib/turbopack-warning'\nimport {\n formatIssue,\n getTurbopackJsConfig,\n isPersistentCachingEnabled,\n isRelevantWarning,\n} from '../../shared/lib/turbopack/utils'\nimport { NextBuildContext } from '../build-context'\nimport { createDefineEnv, loadBindings } from '../swc'\nimport {\n rawEntrypointsToEntrypoints,\n handleRouteType,\n} from '../handle-entrypoints'\nimport { TurbopackManifestLoader } from '../../shared/lib/turbopack/manifest-loader'\nimport { promises as fs } from 'fs'\nimport { PHASE_PRODUCTION_BUILD } from '../../shared/lib/constants'\nimport loadConfig from '../../server/config'\nimport { hasCustomExportOutput } from '../../export/utils'\nimport { Telemetry } from '../../telemetry/storage'\nimport { setGlobal } from '../../trace'\nimport * as Log from '../output/log'\n\nexport async function turbopackBuild(): Promise<{\n duration: number\n buildTraceContext: undefined\n shutdownPromise: Promise<void>\n}> {\n await validateTurboNextConfig({\n dir: NextBuildContext.dir!,\n isDev: false,\n })\n\n const config = NextBuildContext.config!\n const dir = NextBuildContext.dir!\n const distDir = NextBuildContext.distDir!\n const buildId = NextBuildContext.buildId!\n const encryptionKey = NextBuildContext.encryptionKey!\n const previewProps = NextBuildContext.previewProps!\n const hasRewrites = NextBuildContext.hasRewrites!\n const rewrites = NextBuildContext.rewrites!\n const appDirOnly = NextBuildContext.appDirOnly!\n const noMangling = NextBuildContext.noMangling!\n\n const startTime = process.hrtime()\n const bindings = await loadBindings(config?.experimental?.useWasmBinary)\n const dev = false\n\n // const supportedBrowsers = await getSupportedBrowsers(dir, dev)\n const supportedBrowsers = [\n 'last 1 Chrome versions, last 1 Firefox versions, last 1 Safari versions, last 1 Edge versions',\n ]\n\n const persistentCaching = isPersistentCachingEnabled(config)\n const project = await bindings.turbo.createProject(\n {\n projectPath: dir,\n rootPath: config.turbopack?.root || config.outputFileTracingRoot || dir,\n distDir,\n nextConfig: config,\n jsConfig: await getTurbopackJsConfig(dir, config),\n watch: {\n enable: false,\n },\n dev,\n env: process.env as Record<string, string>,\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters: NextBuildContext.clientRouterFilters!,\n config,\n dev,\n distDir,\n fetchCacheKeyPrefix: config.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // Implemented separately in Turbopack, doesn't have to be passed here.\n middlewareMatchers: undefined,\n }),\n buildId,\n encryptionKey,\n previewProps,\n browserslistQuery: supportedBrowsers.join(', '),\n noMangling,\n },\n {\n persistentCaching,\n memoryLimit: config.experimental?.turbopackMemoryLimit,\n dependencyTracking: persistentCaching,\n }\n )\n try {\n ;(async function logCompilationEvents() {\n for await (const event of project.compilationEventsSubscribe()) {\n if (event.severity === 'EVENT') {\n Log.event(event.message)\n }\n }\n })()\n\n // Write an empty file in a known location to signal this was built with Turbopack\n await fs.writeFile(path.join(distDir, 'turbopack'), '')\n\n await fs.mkdir(path.join(distDir, 'server'), { recursive: true })\n await fs.mkdir(path.join(distDir, 'static', buildId), {\n recursive: true,\n })\n await fs.writeFile(\n path.join(distDir, 'package.json'),\n JSON.stringify(\n {\n type: 'commonjs',\n },\n null,\n 2\n )\n )\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const entrypoints = await project.writeAllEntrypointsToDisk(appDirOnly)\n\n const manifestLoader = new TurbopackManifestLoader({\n buildId,\n distDir,\n encryptionKey,\n })\n\n const topLevelErrors = []\n const topLevelWarnings = []\n for (const issue of entrypoints.issues) {\n if (issue.severity === 'error' || issue.severity === 'fatal') {\n topLevelErrors.push(formatIssue(issue))\n } else if (isRelevantWarning(issue)) {\n topLevelWarnings.push(formatIssue(issue))\n }\n }\n\n if (topLevelWarnings.length > 0) {\n console.warn(\n `Turbopack build encountered ${\n topLevelWarnings.length\n } warnings:\\n${topLevelWarnings.join('\\n')}`\n )\n }\n\n if (topLevelErrors.length > 0) {\n throw new Error(\n `Turbopack build failed with ${\n topLevelErrors.length\n } errors:\\n${topLevelErrors.join('\\n')}`\n )\n }\n\n const currentEntrypoints = await rawEntrypointsToEntrypoints(entrypoints)\n\n const promises: Promise<any>[] = []\n\n if (!appDirOnly) {\n for (const [page, route] of currentEntrypoints.page) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n }\n\n for (const [page, route] of currentEntrypoints.app) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n\n await Promise.all(promises)\n\n await Promise.all([\n manifestLoader.loadBuildManifest('_app'),\n manifestLoader.loadPagesManifest('_app'),\n manifestLoader.loadFontManifest('_app'),\n manifestLoader.loadPagesManifest('_document'),\n manifestLoader.loadBuildManifest('_error'),\n manifestLoader.loadPagesManifest('_error'),\n manifestLoader.loadFontManifest('_error'),\n entrypoints.instrumentation &&\n manifestLoader.loadMiddlewareManifest(\n 'instrumentation',\n 'instrumentation'\n ),\n entrypoints.middleware &&\n (await manifestLoader.loadMiddlewareManifest(\n 'middleware',\n 'middleware'\n )),\n ])\n\n await manifestLoader.writeManifests({\n devRewrites: undefined,\n productionRewrites: rewrites,\n entrypoints: currentEntrypoints,\n })\n\n const shutdownPromise = project.shutdown()\n\n const time = process.hrtime(startTime)\n return {\n duration: time[0] + time[1] / 1e9,\n buildTraceContext: undefined,\n shutdownPromise,\n }\n } catch (err) {\n await project.shutdown()\n throw err\n }\n}\n\nlet shutdownPromise: Promise<void> | undefined\nexport async function workerMain(workerData: {\n buildContext: typeof NextBuildContext\n}): Promise<Awaited<ReturnType<typeof turbopackBuild>>> {\n // setup new build context from the serialized data passed from the parent\n Object.assign(NextBuildContext, workerData.buildContext)\n\n /// load the config because it's not serializable\n NextBuildContext.config = await loadConfig(\n PHASE_PRODUCTION_BUILD,\n NextBuildContext.dir!\n )\n\n // Matches handling in build/index.ts\n // https://github.com/vercel/next.js/blob/84f347fc86f4efc4ec9f13615c215e4b9fb6f8f0/packages/next/src/build/index.ts#L815-L818\n // Ensures the `config.distDir` option is matched.\n if (hasCustomExportOutput(NextBuildContext.config)) {\n NextBuildContext.config.distDir = '.next'\n }\n\n // Clone the telemetry for worker\n const telemetry = new Telemetry({\n distDir: NextBuildContext.config.distDir,\n })\n setGlobal('telemetry', telemetry)\n\n const result = await turbopackBuild()\n shutdownPromise = result.shutdownPromise\n return result\n}\n\nexport async function waitForShutdown(): Promise<void> {\n if (shutdownPromise) {\n await shutdownPromise\n }\n}\n"],"names":["path","validateTurboNextConfig","formatIssue","getTurbopackJsConfig","isPersistentCachingEnabled","isRelevantWarning","NextBuildContext","createDefineEnv","loadBindings","rawEntrypointsToEntrypoints","handleRouteType","TurbopackManifestLoader","promises","fs","PHASE_PRODUCTION_BUILD","loadConfig","hasCustomExportOutput","Telemetry","setGlobal","Log","turbopackBuild","config","dir","isDev","distDir","buildId","encryptionKey","previewProps","hasRewrites","rewrites","appDirOnly","noMangling","startTime","process","hrtime","bindings","experimental","useWasmBinary","dev","supportedBrowsers","persistentCaching","project","turbo","createProject","projectPath","rootPath","turbopack","root","outputFileTracingRoot","nextConfig","jsConfig","watch","enable","env","defineEnv","isTurbopack","clientRouterFilters","fetchCacheKeyPrefix","middlewareMatchers","undefined","browserslistQuery","join","memoryLimit","turbopackMemoryLimit","dependencyTracking","logCompilationEvents","event","compilationEventsSubscribe","severity","message","writeFile","mkdir","recursive","JSON","stringify","type","entrypoints","writeAllEntrypointsToDisk","manifestLoader","topLevelErrors","topLevelWarnings","issue","issues","push","length","console","warn","Error","currentEntrypoints","page","route","app","Promise","all","loadBuildManifest","loadPagesManifest","loadFontManifest","instrumentation","loadMiddlewareManifest","middleware","writeManifests","devRewrites","productionRewrites","shutdownPromise","shutdown","time","duration","buildTraceContext","err","workerMain","workerData","Object","assign","buildContext","telemetry","result","waitForShutdown"],"mappings":"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","ignoreList":[0]}
@@ -1555,7 +1555,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1555
1555
  isClient && new CopyFilePlugin({
1556
1556
  // file path to build output of `@next/polyfill-nomodule`
1557
1557
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1558
- cacheKey: "15.4.0-canary.41",
1558
+ cacheKey: "15.4.0-canary.42",
1559
1559
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1560
1560
  minimize: false,
1561
1561
  info: {
@@ -1732,7 +1732,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1732
1732
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1733
1733
  // - Next.js version
1734
1734
  // - next.config.js keys that affect compilation
1735
- version: `${__dirname}|${"15.4.0-canary.41"}|${configVars}`,
1735
+ version: `${__dirname}|${"15.4.0-canary.42"}|${configVars}`,
1736
1736
  cacheDirectory: path.join(distDir, 'cache', 'webpack'),
1737
1737
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1738
1738
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
@@ -3,7 +3,7 @@
3
3
  * sure the following scripts are executed in the correct order:
4
4
  * - Polyfills
5
5
  * - next/script with `beforeInteractive` strategy
6
- */ const version = "15.4.0-canary.41";
6
+ */ const version = "15.4.0-canary.42";
7
7
  window.next = {
8
8
  version,
9
9
  appDir: true
@@ -26,7 +26,7 @@ import { SearchParamsContext, PathParamsContext } from '../shared/lib/hooks-clie
26
26
  import { onRecoverableError } from './react-client-callbacks/on-recoverable-error';
27
27
  import tracer from './tracing/tracer';
28
28
  import { isNextRouterError } from './components/is-next-router-error';
29
- export const version = "15.4.0-canary.41";
29
+ export const version = "15.4.0-canary.42";
30
30
  export let router;
31
31
  export const emitter = mitt();
32
32
  const looseToArray = (input)=>[].slice.call(input);
@@ -83,7 +83,7 @@ export async function createHotReloaderTurbopack(opts, serverFields, distDir, re
83
83
  }
84
84
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
85
85
  const hotReloaderSpan = trace('hot-reloader', undefined, {
86
- version: "15.4.0-canary.41"
86
+ version: "15.4.0-canary.42"
87
87
  });
88
88
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
89
89
  // of the current `next dev` invocation.
@@ -181,7 +181,7 @@ export default class HotReloaderWebpack {
181
181
  this.previewProps = previewProps;
182
182
  this.rewrites = rewrites;
183
183
  this.hotReloaderSpan = trace('hot-reloader', undefined, {
184
- version: "15.4.0-canary.41"
184
+ version: "15.4.0-canary.42"
185
185
  });
186
186
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
187
187
  // of the current `next dev` invocation.
@@ -12,7 +12,7 @@ export function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures
12
12
  } else {
13
13
  bundlerSuffix = '';
14
14
  }
15
- Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.4.0-canary.41"}`))}${bundlerSuffix}`);
15
+ Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.4.0-canary.42"}`))}${bundlerSuffix}`);
16
16
  if (appUrl) {
17
17
  Log.bootstrap(`- Local: ${appUrl}`);
18
18
  }
@@ -347,13 +347,15 @@ export class IncrementalCache {
347
347
  if (ctx.fetchCache && // we don't show this error/warning when a custom cache handler is being used
348
348
  // as it might not have this limit
349
349
  !this.hasCustomCacheHandler && itemSize > 2 * 1024 * 1024) {
350
+ const warningText = `Failed to set Next.js data cache for ${ctx.fetchUrl || pathname}, items over 2MB can not be cached (${itemSize} bytes)`;
350
351
  if (this.dev) {
351
- throw Object.defineProperty(new Error(`Failed to set Next.js data cache, items over 2MB can not be cached (${itemSize} bytes)`), "__NEXT_ERROR_CODE", {
352
- value: "E86",
352
+ throw Object.defineProperty(new Error(warningText), "__NEXT_ERROR_CODE", {
353
+ value: "E394",
353
354
  enumerable: false,
354
355
  configurable: true
355
356
  });
356
357
  }
358
+ console.warn(warningText);
357
359
  return;
358
360
  }
359
361
  try {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/server/lib/incremental-cache/index.ts"],"sourcesContent":["import type { CacheFs } from '../../../shared/lib/utils'\nimport type { PrerenderManifest } from '../../../build'\nimport {\n type IncrementalCacheValue,\n type IncrementalCacheEntry,\n type IncrementalCache as IncrementalCacheType,\n IncrementalCacheKind,\n CachedRouteKind,\n type IncrementalResponseCacheEntry,\n type IncrementalFetchCacheEntry,\n type GetIncrementalFetchCacheContext,\n type GetIncrementalResponseCacheContext,\n type CachedFetchValue,\n type SetIncrementalFetchCacheContext,\n type SetIncrementalResponseCacheContext,\n} from '../../response-cache'\nimport type { DeepReadonly } from '../../../shared/lib/deep-readonly'\n\nimport FileSystemCache from './file-system-cache'\nimport { normalizePagePath } from '../../../shared/lib/page-path/normalize-page-path'\n\nimport {\n CACHE_ONE_YEAR,\n PRERENDER_REVALIDATE_HEADER,\n} from '../../../lib/constants'\nimport { toRoute } from '../to-route'\nimport { SharedCacheControls } from './shared-cache-controls'\nimport {\n getPrerenderResumeDataCache,\n getRenderResumeDataCache,\n workUnitAsyncStorage,\n} from '../../app-render/work-unit-async-storage.external'\nimport { InvariantError } from '../../../shared/lib/invariant-error'\nimport type { Revalidate } from '../cache-control'\nimport { getPreviouslyRevalidatedTags } from '../../server-utils'\nimport { workAsyncStorage } from '../../app-render/work-async-storage.external'\n\nexport interface CacheHandlerContext {\n fs?: CacheFs\n dev?: boolean\n flushToDisk?: boolean\n serverDistDir?: string\n maxMemoryCacheSize?: number\n fetchCacheKeyPrefix?: string\n prerenderManifest?: PrerenderManifest\n revalidatedTags: string[]\n _requestHeaders: IncrementalCache['requestHeaders']\n}\n\nexport interface CacheHandlerValue {\n lastModified?: number\n age?: number\n cacheState?: string\n value: IncrementalCacheValue | null\n}\n\nexport class CacheHandler {\n // eslint-disable-next-line\n constructor(_ctx: CacheHandlerContext) {}\n\n public async get(\n _cacheKey: string,\n _ctx: GetIncrementalFetchCacheContext | GetIncrementalResponseCacheContext\n ): Promise<CacheHandlerValue | null> {\n return {} as any\n }\n\n public async set(\n _cacheKey: string,\n _data: IncrementalCacheValue | null,\n _ctx: SetIncrementalFetchCacheContext | SetIncrementalResponseCacheContext\n ): Promise<void> {}\n\n public async revalidateTag(\n ..._args: Parameters<IncrementalCache['revalidateTag']>\n ): Promise<void> {}\n\n public resetRequestCache(): void {}\n}\n\nexport class IncrementalCache implements IncrementalCacheType {\n readonly dev?: boolean\n readonly disableForTestmode?: boolean\n readonly cacheHandler?: CacheHandler\n readonly hasCustomCacheHandler: boolean\n readonly prerenderManifest: DeepReadonly<PrerenderManifest>\n readonly requestHeaders: Record<string, undefined | string | string[]>\n readonly requestProtocol?: 'http' | 'https'\n readonly allowedRevalidateHeaderKeys?: string[]\n readonly minimalMode?: boolean\n readonly fetchCacheKeyPrefix?: string\n readonly revalidatedTags?: string[]\n readonly isOnDemandRevalidate?: boolean\n\n private readonly locks = new Map<string, Promise<void>>()\n\n /**\n * The cache controls for routes. This will source the values from the\n * prerender manifest until the in-memory cache is updated with new values.\n */\n private readonly cacheControls: SharedCacheControls\n\n constructor({\n fs,\n dev,\n flushToDisk,\n minimalMode,\n serverDistDir,\n requestHeaders,\n requestProtocol,\n maxMemoryCacheSize,\n getPrerenderManifest,\n fetchCacheKeyPrefix,\n CurCacheHandler,\n allowedRevalidateHeaderKeys,\n }: {\n fs?: CacheFs\n dev: boolean\n minimalMode?: boolean\n serverDistDir?: string\n flushToDisk?: boolean\n requestProtocol?: 'http' | 'https'\n allowedRevalidateHeaderKeys?: string[]\n requestHeaders: IncrementalCache['requestHeaders']\n maxMemoryCacheSize?: number\n getPrerenderManifest: () => DeepReadonly<PrerenderManifest>\n fetchCacheKeyPrefix?: string\n CurCacheHandler?: typeof CacheHandler\n }) {\n const debug = !!process.env.NEXT_PRIVATE_DEBUG_CACHE\n this.hasCustomCacheHandler = Boolean(CurCacheHandler)\n\n const cacheHandlersSymbol = Symbol.for('@next/cache-handlers')\n const _globalThis: typeof globalThis & {\n [cacheHandlersSymbol]?: {\n FetchCache?: typeof CacheHandler\n }\n } = globalThis\n\n if (!CurCacheHandler) {\n // if we have a global cache handler available leverage it\n const globalCacheHandler = _globalThis[cacheHandlersSymbol]\n\n if (globalCacheHandler?.FetchCache) {\n CurCacheHandler = globalCacheHandler.FetchCache\n } else {\n if (fs && serverDistDir) {\n if (debug) {\n console.log('using filesystem cache handler')\n }\n CurCacheHandler = FileSystemCache\n }\n }\n } else if (debug) {\n console.log('using custom cache handler', CurCacheHandler.name)\n }\n\n if (process.env.__NEXT_TEST_MAX_ISR_CACHE) {\n // Allow cache size to be overridden for testing purposes\n maxMemoryCacheSize = parseInt(process.env.__NEXT_TEST_MAX_ISR_CACHE, 10)\n }\n this.dev = dev\n this.disableForTestmode = process.env.NEXT_PRIVATE_TEST_PROXY === 'true'\n // this is a hack to avoid Webpack knowing this is equal to this.minimalMode\n // because we replace this.minimalMode to true in production bundles.\n const minimalModeKey = 'minimalMode'\n this[minimalModeKey] = minimalMode\n this.requestHeaders = requestHeaders\n this.requestProtocol = requestProtocol\n this.allowedRevalidateHeaderKeys = allowedRevalidateHeaderKeys\n this.prerenderManifest = getPrerenderManifest()\n this.cacheControls = new SharedCacheControls(this.prerenderManifest)\n this.fetchCacheKeyPrefix = fetchCacheKeyPrefix\n let revalidatedTags: string[] = []\n\n if (\n requestHeaders[PRERENDER_REVALIDATE_HEADER] ===\n this.prerenderManifest?.preview?.previewModeId\n ) {\n this.isOnDemandRevalidate = true\n }\n\n if (minimalMode) {\n revalidatedTags = getPreviouslyRevalidatedTags(\n requestHeaders,\n this.prerenderManifest?.preview?.previewModeId\n )\n }\n\n if (CurCacheHandler) {\n this.cacheHandler = new CurCacheHandler({\n dev,\n fs,\n flushToDisk,\n serverDistDir,\n revalidatedTags,\n maxMemoryCacheSize,\n _requestHeaders: requestHeaders,\n fetchCacheKeyPrefix,\n })\n }\n }\n\n private calculateRevalidate(\n pathname: string,\n fromTime: number,\n dev: boolean,\n isFallback: boolean | undefined\n ): Revalidate {\n // in development we don't have a prerender-manifest\n // and default to always revalidating to allow easier debugging\n if (dev)\n return Math.floor(performance.timeOrigin + performance.now() - 1000)\n\n const cacheControl = this.cacheControls.get(toRoute(pathname))\n\n // if an entry isn't present in routes we fallback to a default\n // of revalidating after 1 second unless it's a fallback request.\n const initialRevalidateSeconds = cacheControl\n ? cacheControl.revalidate\n : isFallback\n ? false\n : 1\n\n const revalidateAfter =\n typeof initialRevalidateSeconds === 'number'\n ? initialRevalidateSeconds * 1000 + fromTime\n : initialRevalidateSeconds\n\n return revalidateAfter\n }\n\n _getPathname(pathname: string, fetchCache?: boolean) {\n return fetchCache ? pathname : normalizePagePath(pathname)\n }\n\n resetRequestCache() {\n this.cacheHandler?.resetRequestCache?.()\n }\n\n async lock(cacheKey: string) {\n let unlockNext: () => Promise<void> = () => Promise.resolve()\n const existingLock = this.locks.get(cacheKey)\n\n if (existingLock) {\n await existingLock\n }\n\n const newLock = new Promise<void>((resolve) => {\n unlockNext = async () => {\n resolve()\n this.locks.delete(cacheKey) // Remove the lock upon release\n }\n })\n\n this.locks.set(cacheKey, newLock)\n return unlockNext\n }\n\n async revalidateTag(tags: string | string[]): Promise<void> {\n return this.cacheHandler?.revalidateTag(tags)\n }\n\n // x-ref: https://github.com/facebook/react/blob/2655c9354d8e1c54ba888444220f63e836925caa/packages/react/src/ReactFetch.js#L23\n async generateCacheKey(\n url: string,\n init: RequestInit | Request = {}\n ): Promise<string> {\n // this should be bumped anytime a fix is made to cache entries\n // that should bust the cache\n const MAIN_KEY_PREFIX = 'v3'\n\n const bodyChunks: string[] = []\n\n const encoder = new TextEncoder()\n const decoder = new TextDecoder()\n\n if (init.body) {\n // handle ReadableStream body\n if (typeof (init.body as any).getReader === 'function') {\n const readableBody = init.body as ReadableStream<Uint8Array | string>\n\n const chunks: Uint8Array[] = []\n\n try {\n await readableBody.pipeTo(\n new WritableStream({\n write(chunk) {\n if (typeof chunk === 'string') {\n chunks.push(encoder.encode(chunk))\n bodyChunks.push(chunk)\n } else {\n chunks.push(chunk)\n bodyChunks.push(decoder.decode(chunk, { stream: true }))\n }\n },\n })\n )\n\n // Flush the decoder.\n bodyChunks.push(decoder.decode())\n\n // Create a new buffer with all the chunks.\n const length = chunks.reduce((total, arr) => total + arr.length, 0)\n const arrayBuffer = new Uint8Array(length)\n\n // Push each of the chunks into the new array buffer.\n let offset = 0\n for (const chunk of chunks) {\n arrayBuffer.set(chunk, offset)\n offset += chunk.length\n }\n\n ;(init as any)._ogBody = arrayBuffer\n } catch (err) {\n console.error('Problem reading body', err)\n }\n } // handle FormData or URLSearchParams bodies\n else if (typeof (init.body as any).keys === 'function') {\n const formData = init.body as FormData\n ;(init as any)._ogBody = init.body\n for (const key of new Set([...formData.keys()])) {\n const values = formData.getAll(key)\n bodyChunks.push(\n `${key}=${(\n await Promise.all(\n values.map(async (val) => {\n if (typeof val === 'string') {\n return val\n } else {\n return await val.text()\n }\n })\n )\n ).join(',')}`\n )\n }\n // handle blob body\n } else if (typeof (init.body as any).arrayBuffer === 'function') {\n const blob = init.body as Blob\n const arrayBuffer = await blob.arrayBuffer()\n bodyChunks.push(await blob.text())\n ;(init as any)._ogBody = new Blob([arrayBuffer], { type: blob.type })\n } else if (typeof init.body === 'string') {\n bodyChunks.push(init.body)\n ;(init as any)._ogBody = init.body\n }\n }\n\n const headers =\n typeof (init.headers || {}).keys === 'function'\n ? Object.fromEntries(init.headers as Headers)\n : Object.assign({}, init.headers)\n\n // w3c trace context headers can break request caching and deduplication\n // so we remove them from the cache key\n if ('traceparent' in headers) delete headers['traceparent']\n if ('tracestate' in headers) delete headers['tracestate']\n\n const cacheString = JSON.stringify([\n MAIN_KEY_PREFIX,\n this.fetchCacheKeyPrefix || '',\n url,\n init.method,\n headers,\n init.mode,\n init.redirect,\n init.credentials,\n init.referrer,\n init.referrerPolicy,\n init.integrity,\n init.cache,\n bodyChunks,\n ])\n\n if (process.env.NEXT_RUNTIME === 'edge') {\n function bufferToHex(buffer: ArrayBuffer): string {\n return Array.prototype.map\n .call(new Uint8Array(buffer), (b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n const buffer = encoder.encode(cacheString)\n return bufferToHex(await crypto.subtle.digest('SHA-256', buffer))\n } else {\n const crypto = require('crypto') as typeof import('crypto')\n return crypto.createHash('sha256').update(cacheString).digest('hex')\n }\n }\n\n async get(\n cacheKey: string,\n ctx: GetIncrementalFetchCacheContext\n ): Promise<IncrementalFetchCacheEntry | null>\n async get(\n cacheKey: string,\n ctx: GetIncrementalResponseCacheContext\n ): Promise<IncrementalResponseCacheEntry | null>\n async get(\n cacheKey: string,\n ctx: GetIncrementalFetchCacheContext | GetIncrementalResponseCacheContext\n ): Promise<IncrementalCacheEntry | null> {\n // Unlike other caches if we have a resume data cache, we use it even if\n // testmode would normally disable it or if requestHeaders say 'no-cache'.\n if (ctx.kind === IncrementalCacheKind.FETCH) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n const resumeDataCache = workUnitStore\n ? getRenderResumeDataCache(workUnitStore)\n : null\n if (resumeDataCache) {\n const memoryCacheData = resumeDataCache.fetch.get(cacheKey)\n if (memoryCacheData?.kind === CachedRouteKind.FETCH) {\n return { isStale: false, value: memoryCacheData }\n }\n }\n }\n\n // we don't leverage the prerender cache in dev mode\n // so that getStaticProps is always called for easier debugging\n if (\n this.disableForTestmode ||\n (this.dev &&\n (ctx.kind !== IncrementalCacheKind.FETCH ||\n this.requestHeaders['cache-control'] === 'no-cache'))\n ) {\n return null\n }\n\n cacheKey = this._getPathname(\n cacheKey,\n ctx.kind === IncrementalCacheKind.FETCH\n )\n\n const cacheData = await this.cacheHandler?.get(cacheKey, ctx)\n\n if (ctx.kind === IncrementalCacheKind.FETCH) {\n if (!cacheData) {\n return null\n }\n\n if (cacheData.value?.kind !== CachedRouteKind.FETCH) {\n throw new InvariantError(\n `Expected cached value for cache key ${JSON.stringify(cacheKey)} to be a \"FETCH\" kind, got ${JSON.stringify(cacheData.value?.kind)} instead.`\n )\n }\n\n const workStore = workAsyncStorage.getStore()\n const combinedTags = [...(ctx.tags || []), ...(ctx.softTags || [])]\n // if a tag was revalidated we don't return stale data\n if (\n combinedTags.some(\n (tag) =>\n this.revalidatedTags?.includes(tag) ||\n workStore?.pendingRevalidatedTags?.includes(tag)\n )\n ) {\n return null\n }\n\n const revalidate = ctx.revalidate || cacheData.value.revalidate\n const age =\n (performance.timeOrigin +\n performance.now() -\n (cacheData.lastModified || 0)) /\n 1000\n\n const isStale = age > revalidate\n const data = cacheData.value.data\n\n return {\n isStale,\n value: { kind: CachedRouteKind.FETCH, data, revalidate },\n }\n } else if (cacheData?.value?.kind === CachedRouteKind.FETCH) {\n throw new InvariantError(\n `Expected cached value for cache key ${JSON.stringify(cacheKey)} not to be a ${JSON.stringify(ctx.kind)} kind, got \"FETCH\" instead.`\n )\n }\n\n let entry: IncrementalResponseCacheEntry | null = null\n const cacheControl = this.cacheControls.get(toRoute(cacheKey))\n\n let isStale: boolean | -1 | undefined\n let revalidateAfter: Revalidate\n\n if (cacheData?.lastModified === -1) {\n isStale = -1\n revalidateAfter = -1 * CACHE_ONE_YEAR\n } else {\n revalidateAfter = this.calculateRevalidate(\n cacheKey,\n cacheData?.lastModified || performance.timeOrigin + performance.now(),\n this.dev ?? false,\n ctx.isFallback\n )\n isStale =\n revalidateAfter !== false &&\n revalidateAfter < performance.timeOrigin + performance.now()\n ? true\n : undefined\n }\n\n if (cacheData) {\n entry = {\n isStale,\n cacheControl,\n revalidateAfter,\n value: cacheData.value,\n }\n }\n\n if (\n !cacheData &&\n this.prerenderManifest.notFoundRoutes.includes(cacheKey)\n ) {\n // for the first hit after starting the server the cache\n // may not have a way to save notFound: true so if\n // the prerender-manifest marks this as notFound then we\n // return that entry and trigger a cache set to give it a\n // chance to update in-memory entries\n entry = {\n isStale,\n value: null,\n cacheControl,\n revalidateAfter,\n }\n this.set(cacheKey, entry.value, { ...ctx, cacheControl })\n }\n return entry\n }\n\n async set(\n pathname: string,\n data: CachedFetchValue | null,\n ctx: SetIncrementalFetchCacheContext\n ): Promise<void>\n async set(\n pathname: string,\n data: Exclude<IncrementalCacheValue, CachedFetchValue> | null,\n ctx: SetIncrementalResponseCacheContext\n ): Promise<void>\n async set(\n pathname: string,\n data: IncrementalCacheValue | null,\n ctx: SetIncrementalFetchCacheContext | SetIncrementalResponseCacheContext\n ): Promise<void> {\n // Even if we otherwise disable caching for testMode or if no fetchCache is\n // configured we still always stash results in the resume data cache if one\n // exists. This is because this is a transient in memory cache that\n // populates caches ahead of a dynamic render in dev mode to allow the RSC\n // debug info to have the right environment associated to it.\n if (data?.kind === CachedRouteKind.FETCH) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n const prerenderResumeDataCache = workUnitStore\n ? getPrerenderResumeDataCache(workUnitStore)\n : null\n if (prerenderResumeDataCache) {\n prerenderResumeDataCache.fetch.set(pathname, data)\n }\n }\n\n if (this.disableForTestmode || (this.dev && !ctx.fetchCache)) return\n\n pathname = this._getPathname(pathname, ctx.fetchCache)\n\n // FetchCache has upper limit of 2MB per-entry currently\n const itemSize = JSON.stringify(data).length\n if (\n ctx.fetchCache &&\n // we don't show this error/warning when a custom cache handler is being used\n // as it might not have this limit\n !this.hasCustomCacheHandler &&\n itemSize > 2 * 1024 * 1024\n ) {\n if (this.dev) {\n throw new Error(\n `Failed to set Next.js data cache, items over 2MB can not be cached (${itemSize} bytes)`\n )\n }\n return\n }\n\n try {\n if (!ctx.fetchCache && ctx.cacheControl) {\n this.cacheControls.set(toRoute(pathname), ctx.cacheControl)\n }\n\n await this.cacheHandler?.set(pathname, data, ctx)\n } catch (error) {\n console.warn('Failed to update prerender cache for', pathname, error)\n }\n }\n}\n"],"names":["IncrementalCacheKind","CachedRouteKind","FileSystemCache","normalizePagePath","CACHE_ONE_YEAR","PRERENDER_REVALIDATE_HEADER","toRoute","SharedCacheControls","getPrerenderResumeDataCache","getRenderResumeDataCache","workUnitAsyncStorage","InvariantError","getPreviouslyRevalidatedTags","workAsyncStorage","CacheHandler","constructor","_ctx","get","_cacheKey","set","_data","revalidateTag","_args","resetRequestCache","IncrementalCache","fs","dev","flushToDisk","minimalMode","serverDistDir","requestHeaders","requestProtocol","maxMemoryCacheSize","getPrerenderManifest","fetchCacheKeyPrefix","CurCacheHandler","allowedRevalidateHeaderKeys","locks","Map","debug","process","env","NEXT_PRIVATE_DEBUG_CACHE","hasCustomCacheHandler","Boolean","cacheHandlersSymbol","Symbol","for","_globalThis","globalThis","globalCacheHandler","FetchCache","console","log","name","__NEXT_TEST_MAX_ISR_CACHE","parseInt","disableForTestmode","NEXT_PRIVATE_TEST_PROXY","minimalModeKey","prerenderManifest","cacheControls","revalidatedTags","preview","previewModeId","isOnDemandRevalidate","cacheHandler","_requestHeaders","calculateRevalidate","pathname","fromTime","isFallback","Math","floor","performance","timeOrigin","now","cacheControl","initialRevalidateSeconds","revalidate","revalidateAfter","_getPathname","fetchCache","lock","cacheKey","unlockNext","Promise","resolve","existingLock","newLock","delete","tags","generateCacheKey","url","init","MAIN_KEY_PREFIX","bodyChunks","encoder","TextEncoder","decoder","TextDecoder","body","getReader","readableBody","chunks","pipeTo","WritableStream","write","chunk","push","encode","decode","stream","length","reduce","total","arr","arrayBuffer","Uint8Array","offset","_ogBody","err","error","keys","formData","key","Set","values","getAll","all","map","val","text","join","blob","Blob","type","headers","Object","fromEntries","assign","cacheString","JSON","stringify","method","mode","redirect","credentials","referrer","referrerPolicy","integrity","cache","NEXT_RUNTIME","bufferToHex","buffer","Array","prototype","call","b","toString","padStart","crypto","subtle","digest","require","createHash","update","ctx","cacheData","kind","FETCH","workUnitStore","getStore","resumeDataCache","memoryCacheData","fetch","isStale","value","workStore","combinedTags","softTags","some","tag","includes","pendingRevalidatedTags","age","lastModified","data","entry","undefined","notFoundRoutes","prerenderResumeDataCache","itemSize","Error","warn"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/server/lib/incremental-cache/index.ts"],"sourcesContent":["import type { CacheFs } from '../../../shared/lib/utils'\nimport type { PrerenderManifest } from '../../../build'\nimport {\n type IncrementalCacheValue,\n type IncrementalCacheEntry,\n type IncrementalCache as IncrementalCacheType,\n IncrementalCacheKind,\n CachedRouteKind,\n type IncrementalResponseCacheEntry,\n type IncrementalFetchCacheEntry,\n type GetIncrementalFetchCacheContext,\n type GetIncrementalResponseCacheContext,\n type CachedFetchValue,\n type SetIncrementalFetchCacheContext,\n type SetIncrementalResponseCacheContext,\n} from '../../response-cache'\nimport type { DeepReadonly } from '../../../shared/lib/deep-readonly'\n\nimport FileSystemCache from './file-system-cache'\nimport { normalizePagePath } from '../../../shared/lib/page-path/normalize-page-path'\n\nimport {\n CACHE_ONE_YEAR,\n PRERENDER_REVALIDATE_HEADER,\n} from '../../../lib/constants'\nimport { toRoute } from '../to-route'\nimport { SharedCacheControls } from './shared-cache-controls'\nimport {\n getPrerenderResumeDataCache,\n getRenderResumeDataCache,\n workUnitAsyncStorage,\n} from '../../app-render/work-unit-async-storage.external'\nimport { InvariantError } from '../../../shared/lib/invariant-error'\nimport type { Revalidate } from '../cache-control'\nimport { getPreviouslyRevalidatedTags } from '../../server-utils'\nimport { workAsyncStorage } from '../../app-render/work-async-storage.external'\n\nexport interface CacheHandlerContext {\n fs?: CacheFs\n dev?: boolean\n flushToDisk?: boolean\n serverDistDir?: string\n maxMemoryCacheSize?: number\n fetchCacheKeyPrefix?: string\n prerenderManifest?: PrerenderManifest\n revalidatedTags: string[]\n _requestHeaders: IncrementalCache['requestHeaders']\n}\n\nexport interface CacheHandlerValue {\n lastModified?: number\n age?: number\n cacheState?: string\n value: IncrementalCacheValue | null\n}\n\nexport class CacheHandler {\n // eslint-disable-next-line\n constructor(_ctx: CacheHandlerContext) {}\n\n public async get(\n _cacheKey: string,\n _ctx: GetIncrementalFetchCacheContext | GetIncrementalResponseCacheContext\n ): Promise<CacheHandlerValue | null> {\n return {} as any\n }\n\n public async set(\n _cacheKey: string,\n _data: IncrementalCacheValue | null,\n _ctx: SetIncrementalFetchCacheContext | SetIncrementalResponseCacheContext\n ): Promise<void> {}\n\n public async revalidateTag(\n ..._args: Parameters<IncrementalCache['revalidateTag']>\n ): Promise<void> {}\n\n public resetRequestCache(): void {}\n}\n\nexport class IncrementalCache implements IncrementalCacheType {\n readonly dev?: boolean\n readonly disableForTestmode?: boolean\n readonly cacheHandler?: CacheHandler\n readonly hasCustomCacheHandler: boolean\n readonly prerenderManifest: DeepReadonly<PrerenderManifest>\n readonly requestHeaders: Record<string, undefined | string | string[]>\n readonly requestProtocol?: 'http' | 'https'\n readonly allowedRevalidateHeaderKeys?: string[]\n readonly minimalMode?: boolean\n readonly fetchCacheKeyPrefix?: string\n readonly revalidatedTags?: string[]\n readonly isOnDemandRevalidate?: boolean\n\n private readonly locks = new Map<string, Promise<void>>()\n\n /**\n * The cache controls for routes. This will source the values from the\n * prerender manifest until the in-memory cache is updated with new values.\n */\n private readonly cacheControls: SharedCacheControls\n\n constructor({\n fs,\n dev,\n flushToDisk,\n minimalMode,\n serverDistDir,\n requestHeaders,\n requestProtocol,\n maxMemoryCacheSize,\n getPrerenderManifest,\n fetchCacheKeyPrefix,\n CurCacheHandler,\n allowedRevalidateHeaderKeys,\n }: {\n fs?: CacheFs\n dev: boolean\n minimalMode?: boolean\n serverDistDir?: string\n flushToDisk?: boolean\n requestProtocol?: 'http' | 'https'\n allowedRevalidateHeaderKeys?: string[]\n requestHeaders: IncrementalCache['requestHeaders']\n maxMemoryCacheSize?: number\n getPrerenderManifest: () => DeepReadonly<PrerenderManifest>\n fetchCacheKeyPrefix?: string\n CurCacheHandler?: typeof CacheHandler\n }) {\n const debug = !!process.env.NEXT_PRIVATE_DEBUG_CACHE\n this.hasCustomCacheHandler = Boolean(CurCacheHandler)\n\n const cacheHandlersSymbol = Symbol.for('@next/cache-handlers')\n const _globalThis: typeof globalThis & {\n [cacheHandlersSymbol]?: {\n FetchCache?: typeof CacheHandler\n }\n } = globalThis\n\n if (!CurCacheHandler) {\n // if we have a global cache handler available leverage it\n const globalCacheHandler = _globalThis[cacheHandlersSymbol]\n\n if (globalCacheHandler?.FetchCache) {\n CurCacheHandler = globalCacheHandler.FetchCache\n } else {\n if (fs && serverDistDir) {\n if (debug) {\n console.log('using filesystem cache handler')\n }\n CurCacheHandler = FileSystemCache\n }\n }\n } else if (debug) {\n console.log('using custom cache handler', CurCacheHandler.name)\n }\n\n if (process.env.__NEXT_TEST_MAX_ISR_CACHE) {\n // Allow cache size to be overridden for testing purposes\n maxMemoryCacheSize = parseInt(process.env.__NEXT_TEST_MAX_ISR_CACHE, 10)\n }\n this.dev = dev\n this.disableForTestmode = process.env.NEXT_PRIVATE_TEST_PROXY === 'true'\n // this is a hack to avoid Webpack knowing this is equal to this.minimalMode\n // because we replace this.minimalMode to true in production bundles.\n const minimalModeKey = 'minimalMode'\n this[minimalModeKey] = minimalMode\n this.requestHeaders = requestHeaders\n this.requestProtocol = requestProtocol\n this.allowedRevalidateHeaderKeys = allowedRevalidateHeaderKeys\n this.prerenderManifest = getPrerenderManifest()\n this.cacheControls = new SharedCacheControls(this.prerenderManifest)\n this.fetchCacheKeyPrefix = fetchCacheKeyPrefix\n let revalidatedTags: string[] = []\n\n if (\n requestHeaders[PRERENDER_REVALIDATE_HEADER] ===\n this.prerenderManifest?.preview?.previewModeId\n ) {\n this.isOnDemandRevalidate = true\n }\n\n if (minimalMode) {\n revalidatedTags = getPreviouslyRevalidatedTags(\n requestHeaders,\n this.prerenderManifest?.preview?.previewModeId\n )\n }\n\n if (CurCacheHandler) {\n this.cacheHandler = new CurCacheHandler({\n dev,\n fs,\n flushToDisk,\n serverDistDir,\n revalidatedTags,\n maxMemoryCacheSize,\n _requestHeaders: requestHeaders,\n fetchCacheKeyPrefix,\n })\n }\n }\n\n private calculateRevalidate(\n pathname: string,\n fromTime: number,\n dev: boolean,\n isFallback: boolean | undefined\n ): Revalidate {\n // in development we don't have a prerender-manifest\n // and default to always revalidating to allow easier debugging\n if (dev)\n return Math.floor(performance.timeOrigin + performance.now() - 1000)\n\n const cacheControl = this.cacheControls.get(toRoute(pathname))\n\n // if an entry isn't present in routes we fallback to a default\n // of revalidating after 1 second unless it's a fallback request.\n const initialRevalidateSeconds = cacheControl\n ? cacheControl.revalidate\n : isFallback\n ? false\n : 1\n\n const revalidateAfter =\n typeof initialRevalidateSeconds === 'number'\n ? initialRevalidateSeconds * 1000 + fromTime\n : initialRevalidateSeconds\n\n return revalidateAfter\n }\n\n _getPathname(pathname: string, fetchCache?: boolean) {\n return fetchCache ? pathname : normalizePagePath(pathname)\n }\n\n resetRequestCache() {\n this.cacheHandler?.resetRequestCache?.()\n }\n\n async lock(cacheKey: string) {\n let unlockNext: () => Promise<void> = () => Promise.resolve()\n const existingLock = this.locks.get(cacheKey)\n\n if (existingLock) {\n await existingLock\n }\n\n const newLock = new Promise<void>((resolve) => {\n unlockNext = async () => {\n resolve()\n this.locks.delete(cacheKey) // Remove the lock upon release\n }\n })\n\n this.locks.set(cacheKey, newLock)\n return unlockNext\n }\n\n async revalidateTag(tags: string | string[]): Promise<void> {\n return this.cacheHandler?.revalidateTag(tags)\n }\n\n // x-ref: https://github.com/facebook/react/blob/2655c9354d8e1c54ba888444220f63e836925caa/packages/react/src/ReactFetch.js#L23\n async generateCacheKey(\n url: string,\n init: RequestInit | Request = {}\n ): Promise<string> {\n // this should be bumped anytime a fix is made to cache entries\n // that should bust the cache\n const MAIN_KEY_PREFIX = 'v3'\n\n const bodyChunks: string[] = []\n\n const encoder = new TextEncoder()\n const decoder = new TextDecoder()\n\n if (init.body) {\n // handle ReadableStream body\n if (typeof (init.body as any).getReader === 'function') {\n const readableBody = init.body as ReadableStream<Uint8Array | string>\n\n const chunks: Uint8Array[] = []\n\n try {\n await readableBody.pipeTo(\n new WritableStream({\n write(chunk) {\n if (typeof chunk === 'string') {\n chunks.push(encoder.encode(chunk))\n bodyChunks.push(chunk)\n } else {\n chunks.push(chunk)\n bodyChunks.push(decoder.decode(chunk, { stream: true }))\n }\n },\n })\n )\n\n // Flush the decoder.\n bodyChunks.push(decoder.decode())\n\n // Create a new buffer with all the chunks.\n const length = chunks.reduce((total, arr) => total + arr.length, 0)\n const arrayBuffer = new Uint8Array(length)\n\n // Push each of the chunks into the new array buffer.\n let offset = 0\n for (const chunk of chunks) {\n arrayBuffer.set(chunk, offset)\n offset += chunk.length\n }\n\n ;(init as any)._ogBody = arrayBuffer\n } catch (err) {\n console.error('Problem reading body', err)\n }\n } // handle FormData or URLSearchParams bodies\n else if (typeof (init.body as any).keys === 'function') {\n const formData = init.body as FormData\n ;(init as any)._ogBody = init.body\n for (const key of new Set([...formData.keys()])) {\n const values = formData.getAll(key)\n bodyChunks.push(\n `${key}=${(\n await Promise.all(\n values.map(async (val) => {\n if (typeof val === 'string') {\n return val\n } else {\n return await val.text()\n }\n })\n )\n ).join(',')}`\n )\n }\n // handle blob body\n } else if (typeof (init.body as any).arrayBuffer === 'function') {\n const blob = init.body as Blob\n const arrayBuffer = await blob.arrayBuffer()\n bodyChunks.push(await blob.text())\n ;(init as any)._ogBody = new Blob([arrayBuffer], { type: blob.type })\n } else if (typeof init.body === 'string') {\n bodyChunks.push(init.body)\n ;(init as any)._ogBody = init.body\n }\n }\n\n const headers =\n typeof (init.headers || {}).keys === 'function'\n ? Object.fromEntries(init.headers as Headers)\n : Object.assign({}, init.headers)\n\n // w3c trace context headers can break request caching and deduplication\n // so we remove them from the cache key\n if ('traceparent' in headers) delete headers['traceparent']\n if ('tracestate' in headers) delete headers['tracestate']\n\n const cacheString = JSON.stringify([\n MAIN_KEY_PREFIX,\n this.fetchCacheKeyPrefix || '',\n url,\n init.method,\n headers,\n init.mode,\n init.redirect,\n init.credentials,\n init.referrer,\n init.referrerPolicy,\n init.integrity,\n init.cache,\n bodyChunks,\n ])\n\n if (process.env.NEXT_RUNTIME === 'edge') {\n function bufferToHex(buffer: ArrayBuffer): string {\n return Array.prototype.map\n .call(new Uint8Array(buffer), (b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n const buffer = encoder.encode(cacheString)\n return bufferToHex(await crypto.subtle.digest('SHA-256', buffer))\n } else {\n const crypto = require('crypto') as typeof import('crypto')\n return crypto.createHash('sha256').update(cacheString).digest('hex')\n }\n }\n\n async get(\n cacheKey: string,\n ctx: GetIncrementalFetchCacheContext\n ): Promise<IncrementalFetchCacheEntry | null>\n async get(\n cacheKey: string,\n ctx: GetIncrementalResponseCacheContext\n ): Promise<IncrementalResponseCacheEntry | null>\n async get(\n cacheKey: string,\n ctx: GetIncrementalFetchCacheContext | GetIncrementalResponseCacheContext\n ): Promise<IncrementalCacheEntry | null> {\n // Unlike other caches if we have a resume data cache, we use it even if\n // testmode would normally disable it or if requestHeaders say 'no-cache'.\n if (ctx.kind === IncrementalCacheKind.FETCH) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n const resumeDataCache = workUnitStore\n ? getRenderResumeDataCache(workUnitStore)\n : null\n if (resumeDataCache) {\n const memoryCacheData = resumeDataCache.fetch.get(cacheKey)\n if (memoryCacheData?.kind === CachedRouteKind.FETCH) {\n return { isStale: false, value: memoryCacheData }\n }\n }\n }\n\n // we don't leverage the prerender cache in dev mode\n // so that getStaticProps is always called for easier debugging\n if (\n this.disableForTestmode ||\n (this.dev &&\n (ctx.kind !== IncrementalCacheKind.FETCH ||\n this.requestHeaders['cache-control'] === 'no-cache'))\n ) {\n return null\n }\n\n cacheKey = this._getPathname(\n cacheKey,\n ctx.kind === IncrementalCacheKind.FETCH\n )\n\n const cacheData = await this.cacheHandler?.get(cacheKey, ctx)\n\n if (ctx.kind === IncrementalCacheKind.FETCH) {\n if (!cacheData) {\n return null\n }\n\n if (cacheData.value?.kind !== CachedRouteKind.FETCH) {\n throw new InvariantError(\n `Expected cached value for cache key ${JSON.stringify(cacheKey)} to be a \"FETCH\" kind, got ${JSON.stringify(cacheData.value?.kind)} instead.`\n )\n }\n\n const workStore = workAsyncStorage.getStore()\n const combinedTags = [...(ctx.tags || []), ...(ctx.softTags || [])]\n // if a tag was revalidated we don't return stale data\n if (\n combinedTags.some(\n (tag) =>\n this.revalidatedTags?.includes(tag) ||\n workStore?.pendingRevalidatedTags?.includes(tag)\n )\n ) {\n return null\n }\n\n const revalidate = ctx.revalidate || cacheData.value.revalidate\n const age =\n (performance.timeOrigin +\n performance.now() -\n (cacheData.lastModified || 0)) /\n 1000\n\n const isStale = age > revalidate\n const data = cacheData.value.data\n\n return {\n isStale,\n value: { kind: CachedRouteKind.FETCH, data, revalidate },\n }\n } else if (cacheData?.value?.kind === CachedRouteKind.FETCH) {\n throw new InvariantError(\n `Expected cached value for cache key ${JSON.stringify(cacheKey)} not to be a ${JSON.stringify(ctx.kind)} kind, got \"FETCH\" instead.`\n )\n }\n\n let entry: IncrementalResponseCacheEntry | null = null\n const cacheControl = this.cacheControls.get(toRoute(cacheKey))\n\n let isStale: boolean | -1 | undefined\n let revalidateAfter: Revalidate\n\n if (cacheData?.lastModified === -1) {\n isStale = -1\n revalidateAfter = -1 * CACHE_ONE_YEAR\n } else {\n revalidateAfter = this.calculateRevalidate(\n cacheKey,\n cacheData?.lastModified || performance.timeOrigin + performance.now(),\n this.dev ?? false,\n ctx.isFallback\n )\n isStale =\n revalidateAfter !== false &&\n revalidateAfter < performance.timeOrigin + performance.now()\n ? true\n : undefined\n }\n\n if (cacheData) {\n entry = {\n isStale,\n cacheControl,\n revalidateAfter,\n value: cacheData.value,\n }\n }\n\n if (\n !cacheData &&\n this.prerenderManifest.notFoundRoutes.includes(cacheKey)\n ) {\n // for the first hit after starting the server the cache\n // may not have a way to save notFound: true so if\n // the prerender-manifest marks this as notFound then we\n // return that entry and trigger a cache set to give it a\n // chance to update in-memory entries\n entry = {\n isStale,\n value: null,\n cacheControl,\n revalidateAfter,\n }\n this.set(cacheKey, entry.value, { ...ctx, cacheControl })\n }\n return entry\n }\n\n async set(\n pathname: string,\n data: CachedFetchValue | null,\n ctx: SetIncrementalFetchCacheContext\n ): Promise<void>\n async set(\n pathname: string,\n data: Exclude<IncrementalCacheValue, CachedFetchValue> | null,\n ctx: SetIncrementalResponseCacheContext\n ): Promise<void>\n async set(\n pathname: string,\n data: IncrementalCacheValue | null,\n ctx: SetIncrementalFetchCacheContext | SetIncrementalResponseCacheContext\n ): Promise<void> {\n // Even if we otherwise disable caching for testMode or if no fetchCache is\n // configured we still always stash results in the resume data cache if one\n // exists. This is because this is a transient in memory cache that\n // populates caches ahead of a dynamic render in dev mode to allow the RSC\n // debug info to have the right environment associated to it.\n if (data?.kind === CachedRouteKind.FETCH) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n const prerenderResumeDataCache = workUnitStore\n ? getPrerenderResumeDataCache(workUnitStore)\n : null\n if (prerenderResumeDataCache) {\n prerenderResumeDataCache.fetch.set(pathname, data)\n }\n }\n\n if (this.disableForTestmode || (this.dev && !ctx.fetchCache)) return\n\n pathname = this._getPathname(pathname, ctx.fetchCache)\n\n // FetchCache has upper limit of 2MB per-entry currently\n const itemSize = JSON.stringify(data).length\n if (\n ctx.fetchCache &&\n // we don't show this error/warning when a custom cache handler is being used\n // as it might not have this limit\n !this.hasCustomCacheHandler &&\n itemSize > 2 * 1024 * 1024\n ) {\n const warningText = `Failed to set Next.js data cache for ${ctx.fetchUrl || pathname}, items over 2MB can not be cached (${itemSize} bytes)`\n\n if (this.dev) {\n throw new Error(warningText)\n }\n console.warn(warningText)\n return\n }\n\n try {\n if (!ctx.fetchCache && ctx.cacheControl) {\n this.cacheControls.set(toRoute(pathname), ctx.cacheControl)\n }\n\n await this.cacheHandler?.set(pathname, data, ctx)\n } catch (error) {\n console.warn('Failed to update prerender cache for', pathname, error)\n }\n }\n}\n"],"names":["IncrementalCacheKind","CachedRouteKind","FileSystemCache","normalizePagePath","CACHE_ONE_YEAR","PRERENDER_REVALIDATE_HEADER","toRoute","SharedCacheControls","getPrerenderResumeDataCache","getRenderResumeDataCache","workUnitAsyncStorage","InvariantError","getPreviouslyRevalidatedTags","workAsyncStorage","CacheHandler","constructor","_ctx","get","_cacheKey","set","_data","revalidateTag","_args","resetRequestCache","IncrementalCache","fs","dev","flushToDisk","minimalMode","serverDistDir","requestHeaders","requestProtocol","maxMemoryCacheSize","getPrerenderManifest","fetchCacheKeyPrefix","CurCacheHandler","allowedRevalidateHeaderKeys","locks","Map","debug","process","env","NEXT_PRIVATE_DEBUG_CACHE","hasCustomCacheHandler","Boolean","cacheHandlersSymbol","Symbol","for","_globalThis","globalThis","globalCacheHandler","FetchCache","console","log","name","__NEXT_TEST_MAX_ISR_CACHE","parseInt","disableForTestmode","NEXT_PRIVATE_TEST_PROXY","minimalModeKey","prerenderManifest","cacheControls","revalidatedTags","preview","previewModeId","isOnDemandRevalidate","cacheHandler","_requestHeaders","calculateRevalidate","pathname","fromTime","isFallback","Math","floor","performance","timeOrigin","now","cacheControl","initialRevalidateSeconds","revalidate","revalidateAfter","_getPathname","fetchCache","lock","cacheKey","unlockNext","Promise","resolve","existingLock","newLock","delete","tags","generateCacheKey","url","init","MAIN_KEY_PREFIX","bodyChunks","encoder","TextEncoder","decoder","TextDecoder","body","getReader","readableBody","chunks","pipeTo","WritableStream","write","chunk","push","encode","decode","stream","length","reduce","total","arr","arrayBuffer","Uint8Array","offset","_ogBody","err","error","keys","formData","key","Set","values","getAll","all","map","val","text","join","blob","Blob","type","headers","Object","fromEntries","assign","cacheString","JSON","stringify","method","mode","redirect","credentials","referrer","referrerPolicy","integrity","cache","NEXT_RUNTIME","bufferToHex","buffer","Array","prototype","call","b","toString","padStart","crypto","subtle","digest","require","createHash","update","ctx","cacheData","kind","FETCH","workUnitStore","getStore","resumeDataCache","memoryCacheData","fetch","isStale","value","workStore","combinedTags","softTags","some","tag","includes","pendingRevalidatedTags","age","lastModified","data","entry","undefined","notFoundRoutes","prerenderResumeDataCache","itemSize","warningText","fetchUrl","Error","warn"],"mappings":"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","ignoreList":[0]}
@@ -42,7 +42,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
42
42
  export async function startServer(serverOptions) {
43
43
  const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
44
44
  let { port } = serverOptions;
45
- process.title = `next-server (v${"15.4.0-canary.41"})`;
45
+ process.title = `next-server (v${"15.4.0-canary.42"})`;
46
46
  let handlersReady = ()=>{};
47
47
  let handlersError = ()=>{};
48
48
  let handlersPromise = new Promise((resolve, reject)=>{
@@ -1,6 +1,6 @@
1
1
  export function isStableBuild() {
2
2
  var _process_env___NEXT_VERSION;
3
- return !((_process_env___NEXT_VERSION = "15.4.0-canary.41") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
3
+ return !((_process_env___NEXT_VERSION = "15.4.0-canary.42") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
4
4
  }
5
5
  export class CanaryOnlyError extends Error {
6
6
  constructor(arg){
@@ -139,7 +139,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir, resetFetc
139
139
  }
140
140
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
141
141
  const hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
142
- version: "15.4.0-canary.41"
142
+ version: "15.4.0-canary.42"
143
143
  });
144
144
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
145
145
  // of the current `next dev` invocation.
@@ -257,7 +257,7 @@ class HotReloaderWebpack {
257
257
  this.previewProps = previewProps;
258
258
  this.rewrites = rewrites;
259
259
  this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
260
- version: "15.4.0-canary.41"
260
+ version: "15.4.0-canary.42"
261
261
  });
262
262
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
263
263
  // of the current `next dev` invocation.
@@ -75,7 +75,7 @@ function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, maxEx
75
75
  } else {
76
76
  bundlerSuffix = '';
77
77
  }
78
- _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.4.0-canary.41"}`))}${bundlerSuffix}`);
78
+ _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.4.0-canary.42"}`))}${bundlerSuffix}`);
79
79
  if (appUrl) {
80
80
  _log.bootstrap(`- Local: ${appUrl}`);
81
81
  }
@@ -374,13 +374,15 @@ class IncrementalCache {
374
374
  if (ctx.fetchCache && // we don't show this error/warning when a custom cache handler is being used
375
375
  // as it might not have this limit
376
376
  !this.hasCustomCacheHandler && itemSize > 2 * 1024 * 1024) {
377
+ const warningText = `Failed to set Next.js data cache for ${ctx.fetchUrl || pathname}, items over 2MB can not be cached (${itemSize} bytes)`;
377
378
  if (this.dev) {
378
- throw Object.defineProperty(new Error(`Failed to set Next.js data cache, items over 2MB can not be cached (${itemSize} bytes)`), "__NEXT_ERROR_CODE", {
379
- value: "E86",
379
+ throw Object.defineProperty(new Error(warningText), "__NEXT_ERROR_CODE", {
380
+ value: "E394",
380
381
  enumerable: false,
381
382
  configurable: true
382
383
  });
383
384
  }
385
+ console.warn(warningText);
384
386
  return;
385
387
  }
386
388
  try {