next 15.3.0-canary.32 → 15.3.0-canary.33

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 (48) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/index.js +3 -4
  3. package/dist/build/index.js.map +1 -1
  4. package/dist/build/swc/index.js +1 -1
  5. package/dist/build/webpack-config.js +2 -2
  6. package/dist/cli/next-start.js +0 -5
  7. package/dist/cli/next-start.js.map +1 -1
  8. package/dist/client/app-bootstrap.js +1 -1
  9. package/dist/client/index.js +1 -1
  10. package/dist/compiled/next-server/server.runtime.prod.js +1 -1
  11. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  12. package/dist/esm/build/index.js +3 -4
  13. package/dist/esm/build/index.js.map +1 -1
  14. package/dist/esm/build/swc/index.js +1 -1
  15. package/dist/esm/build/webpack-config.js +2 -2
  16. package/dist/esm/client/app-bootstrap.js +1 -1
  17. package/dist/esm/client/index.js +1 -1
  18. package/dist/esm/server/app-render/work-unit-async-storage.external.js +4 -1
  19. package/dist/esm/server/app-render/work-unit-async-storage.external.js.map +1 -1
  20. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  21. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  22. package/dist/esm/server/lib/app-info-log.js +1 -1
  23. package/dist/esm/server/lib/start-server.js +1 -1
  24. package/dist/esm/server/next-server.js +1 -18
  25. package/dist/esm/server/next-server.js.map +1 -1
  26. package/dist/esm/server/next.js +0 -2
  27. package/dist/esm/server/next.js.map +1 -1
  28. package/dist/esm/server/use-cache/use-cache-wrapper.js +9 -5
  29. package/dist/esm/server/use-cache/use-cache-wrapper.js.map +1 -1
  30. package/dist/esm/shared/lib/canary-only.js +1 -1
  31. package/dist/server/app-render/work-unit-async-storage.external.d.ts +1 -1
  32. package/dist/server/app-render/work-unit-async-storage.external.js +4 -1
  33. package/dist/server/app-render/work-unit-async-storage.external.js.map +1 -1
  34. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  35. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  36. package/dist/server/lib/app-info-log.js +1 -1
  37. package/dist/server/lib/start-server.js +1 -1
  38. package/dist/server/next-server.js +1 -18
  39. package/dist/server/next-server.js.map +1 -1
  40. package/dist/server/next.js +0 -2
  41. package/dist/server/next.js.map +1 -1
  42. package/dist/server/use-cache/use-cache-wrapper.js +9 -5
  43. package/dist/server/use-cache/use-cache-wrapper.js.map +1 -1
  44. package/dist/shared/lib/canary-only.js +1 -1
  45. package/dist/telemetry/anonymous-meta.js +1 -1
  46. package/dist/telemetry/events/session-stopped.js +2 -2
  47. package/dist/telemetry/events/version.js +2 -2
  48. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/server/next.ts"],"sourcesContent":["import type { Options as DevServerOptions } from './dev/next-dev-server'\nimport type {\n NodeRequestHandler,\n Options as ServerOptions,\n} from './next-server'\nimport type { UrlWithParsedQuery } from 'url'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { Duplex } from 'stream'\nimport type { NextUrlWithParsedQuery } from './request-meta'\n\nimport './require-hook'\nimport './node-polyfill-crypto'\n\nimport type { default as NextNodeServer } from './next-server'\nimport * as log from '../build/output/log'\nimport loadConfig from './config'\nimport path, { resolve } from 'path'\nimport { NON_STANDARD_NODE_ENV } from '../lib/constants'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n SERVER_FILES_MANIFEST,\n} from '../shared/lib/constants'\nimport { PHASE_PRODUCTION_SERVER } from '../shared/lib/constants'\nimport { getTracer } from './lib/trace/tracer'\nimport { NextServerSpan } from './lib/trace/constants'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\nimport type { ServerFields } from './lib/router-utils/setup-dev-bundler'\nimport type { ServerInitResult } from './lib/render-server'\nimport { AsyncCallbackSet } from './lib/async-callback-set'\n\nlet ServerImpl: typeof NextNodeServer\n\nconst getServerImpl = async () => {\n if (ServerImpl === undefined) {\n ServerImpl = (await Promise.resolve(require('./next-server'))).default\n }\n return ServerImpl\n}\n\nexport type NextServerOptions = Omit<\n ServerOptions | DevServerOptions,\n // This is assigned in this server abstraction.\n 'conf'\n> &\n Partial<Pick<ServerOptions | DevServerOptions, 'conf'>>\n\nexport type RequestHandler = (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: NextUrlWithParsedQuery | undefined\n) => Promise<void>\n\nexport type UpgradeHandler = (\n req: IncomingMessage,\n socket: Duplex,\n head: Buffer\n) => Promise<void>\n\nconst SYMBOL_LOAD_CONFIG = Symbol('next.load_config')\n\ninterface NextWrapperServer {\n // NOTE: the methods/properties here are the public API for custom servers.\n // Consider backwards compatibilty when changing something here!\n\n options: NextServerOptions\n hostname: string | undefined\n port: number | undefined\n\n getRequestHandler(): RequestHandler\n prepare(serverFields?: ServerFields): Promise<void>\n setAssetPrefix(assetPrefix: string): void\n close(): Promise<void>\n\n // used internally\n getUpgradeHandler(): UpgradeHandler\n\n // legacy methods that we left exposed in the past\n\n logError(...args: Parameters<NextNodeServer['logError']>): void\n\n render(\n ...args: Parameters<NextNodeServer['render']>\n ): ReturnType<NextNodeServer['render']>\n\n renderToHTML(\n ...args: Parameters<NextNodeServer['renderToHTML']>\n ): ReturnType<NextNodeServer['renderToHTML']>\n\n renderError(\n ...args: Parameters<NextNodeServer['renderError']>\n ): ReturnType<NextNodeServer['renderError']>\n\n renderErrorToHTML(\n ...args: Parameters<NextNodeServer['renderErrorToHTML']>\n ): ReturnType<NextNodeServer['renderErrorToHTML']>\n\n render404(\n ...args: Parameters<NextNodeServer['render404']>\n ): ReturnType<NextNodeServer['render404']>\n}\n\n/** The wrapper server used by `next start` */\nexport class NextServer implements NextWrapperServer {\n private serverPromise?: Promise<NextNodeServer>\n private server?: NextNodeServer\n private reqHandler?: NodeRequestHandler\n private reqHandlerPromise?: Promise<NodeRequestHandler>\n private preparedAssetPrefix?: string\n\n public options: NextServerOptions\n\n constructor(options: NextServerOptions) {\n this.options = options\n }\n\n get hostname() {\n return this.options.hostname\n }\n\n get port() {\n return this.options.port\n }\n\n getRequestHandler(): RequestHandler {\n return async (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: UrlWithParsedQuery\n ) => {\n return getTracer().trace(NextServerSpan.getRequestHandler, async () => {\n const requestHandler = await this.getServerRequestHandler()\n return requestHandler(req, res, parsedUrl)\n })\n }\n }\n\n getUpgradeHandler(): UpgradeHandler {\n return async (req: IncomingMessage, socket: any, head: any) => {\n const server = await this.getServer()\n // @ts-expect-error we mark this as protected so it\n // causes an error here\n return server.handleUpgrade.apply(server, [req, socket, head])\n }\n }\n\n setAssetPrefix(assetPrefix: string) {\n if (this.server) {\n this.server.setAssetPrefix(assetPrefix)\n } else {\n this.preparedAssetPrefix = assetPrefix\n }\n }\n\n logError(...args: Parameters<NextWrapperServer['logError']>) {\n if (this.server) {\n this.server.logError(...args)\n }\n }\n\n async render(...args: Parameters<NextWrapperServer['render']>) {\n const server = await this.getServer()\n return server.render(...args)\n }\n\n async renderToHTML(...args: Parameters<NextWrapperServer['renderToHTML']>) {\n const server = await this.getServer()\n return server.renderToHTML(...args)\n }\n\n async renderError(...args: Parameters<NextWrapperServer['renderError']>) {\n const server = await this.getServer()\n return server.renderError(...args)\n }\n\n async renderErrorToHTML(\n ...args: Parameters<NextWrapperServer['renderErrorToHTML']>\n ) {\n const server = await this.getServer()\n return server.renderErrorToHTML(...args)\n }\n\n async render404(...args: Parameters<NextWrapperServer['render404']>) {\n const server = await this.getServer()\n return server.render404(...args)\n }\n\n async prepare(serverFields?: ServerFields) {\n const server = await this.getServer()\n\n if (serverFields) {\n Object.assign(server, serverFields)\n }\n // We shouldn't prepare the server in production,\n // because this code won't be executed when deployed\n if (this.options.dev) {\n await server.prepare()\n }\n }\n\n async close() {\n if (this.server) {\n await this.server.close()\n }\n }\n\n private async createServer(\n options: ServerOptions | DevServerOptions\n ): Promise<NextNodeServer> {\n let ServerImplementation: typeof NextNodeServer\n if (options.dev) {\n ServerImplementation = require('./dev/next-dev-server')\n .default as typeof import('./dev/next-dev-server').default\n } else {\n ServerImplementation = await getServerImpl()\n }\n const server = new ServerImplementation(options)\n\n return server\n }\n\n private async [SYMBOL_LOAD_CONFIG]() {\n const dir = resolve(this.options.dir || '.')\n\n const config = await loadConfig(\n this.options.dev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_SERVER,\n dir,\n {\n customConfig: this.options.conf,\n silent: true,\n }\n )\n\n // check serialized build config when available\n if (!this.options.dev) {\n try {\n const serializedConfig = require(\n path.join(dir, config.distDir, SERVER_FILES_MANIFEST)\n ).config\n\n // @ts-expect-error internal field\n config.experimental.isExperimentalCompile =\n serializedConfig.experimental.isExperimentalCompile\n // @ts-expect-error internal field\n config.experimental.isTurbopackBuild =\n serializedConfig.experimental.isTurbopackBuild\n } catch (_) {\n // if distDir is customized we don't know until we\n // load the config so fallback to loading the config\n // from next.config.js\n }\n }\n\n return config\n }\n\n private async getServer() {\n if (!this.serverPromise) {\n this.serverPromise = this[SYMBOL_LOAD_CONFIG]().then(async (conf) => {\n if (!this.options.dev) {\n if (conf.output === 'standalone') {\n if (!process.env.__NEXT_PRIVATE_STANDALONE_CONFIG) {\n log.warn(\n `\"next start\" does not work with \"output: standalone\" configuration. Use \"node .next/standalone/server.js\" instead.`\n )\n }\n } else if (conf.output === 'export') {\n throw new Error(\n `\"next start\" does not work with \"output: export\" configuration. Use \"npx serve@latest out\" instead.`\n )\n }\n }\n\n this.server = await this.createServer({\n ...this.options,\n conf,\n })\n if (this.preparedAssetPrefix) {\n this.server.setAssetPrefix(this.preparedAssetPrefix)\n }\n return this.server\n })\n }\n return this.serverPromise\n }\n\n private async getServerRequestHandler() {\n if (this.reqHandler) return this.reqHandler\n\n // Memoize request handler creation\n if (!this.reqHandlerPromise) {\n this.reqHandlerPromise = this.getServer().then((server) => {\n this.reqHandler = getTracer().wrap(\n NextServerSpan.getServerRequestHandler,\n server.getRequestHandler().bind(server)\n )\n delete this.reqHandlerPromise\n return this.reqHandler\n })\n }\n return this.reqHandlerPromise\n }\n}\n\n/** The wrapper server used for `import next from \"next\" (in a custom server)` */\nclass NextCustomServer implements NextWrapperServer {\n private didWebSocketSetup: boolean = false\n protected cleanupListeners?: AsyncCallbackSet\n\n protected init?: ServerInitResult\n\n public options: NextServerOptions\n\n constructor(options: NextServerOptions) {\n this.options = options\n }\n\n protected getInit() {\n if (!this.init) {\n throw new Error(\n 'prepare() must be called before performing this operation'\n )\n }\n return this.init\n }\n\n protected get requestHandler() {\n return this.getInit().requestHandler\n }\n protected get upgradeHandler() {\n return this.getInit().upgradeHandler\n }\n protected get server() {\n return this.getInit().server\n }\n\n get hostname() {\n return this.options.hostname\n }\n\n get port() {\n return this.options.port\n }\n\n async prepare() {\n const { getRequestHandlers } =\n require('./lib/start-server') as typeof import('./lib/start-server')\n\n let onDevServerCleanup: AsyncCallbackSet['add'] | undefined\n if (this.options.dev) {\n this.cleanupListeners = new AsyncCallbackSet()\n onDevServerCleanup = this.cleanupListeners.add.bind(this.cleanupListeners)\n }\n\n const initResult = await getRequestHandlers({\n dir: this.options.dir!,\n port: this.options.port || 3000,\n isDev: !!this.options.dev,\n onDevServerCleanup,\n hostname: this.options.hostname || 'localhost',\n minimalMode: this.options.minimalMode,\n quiet: this.options.quiet,\n })\n this.init = initResult\n }\n\n private setupWebSocketHandler(\n customServer?: import('http').Server,\n _req?: IncomingMessage\n ) {\n if (!this.didWebSocketSetup) {\n this.didWebSocketSetup = true\n customServer = customServer || (_req?.socket as any)?.server\n\n if (customServer) {\n customServer.on('upgrade', async (req, socket, head) => {\n this.upgradeHandler(req, socket, head)\n })\n }\n }\n }\n\n getRequestHandler(): RequestHandler {\n return async (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: UrlWithParsedQuery\n ) => {\n this.setupWebSocketHandler(this.options.httpServer, req)\n\n if (parsedUrl) {\n req.url = formatUrl(parsedUrl)\n }\n\n return this.requestHandler(req, res)\n }\n }\n\n async render(...args: Parameters<NextWrapperServer['render']>) {\n let [req, res, pathname, query, parsedUrl] = args\n this.setupWebSocketHandler(this.options.httpServer, req as IncomingMessage)\n\n if (!pathname.startsWith('/')) {\n console.error(`Cannot render page with path \"${pathname}\"`)\n pathname = `/${pathname}`\n }\n pathname = pathname === '/index' ? '/' : pathname\n\n req.url = formatUrl({\n ...parsedUrl,\n pathname,\n query,\n })\n\n await this.requestHandler(req as IncomingMessage, res as ServerResponse)\n return\n }\n\n setAssetPrefix(assetPrefix: string): void {\n this.server.setAssetPrefix(assetPrefix)\n }\n\n getUpgradeHandler(): UpgradeHandler {\n return this.server.getUpgradeHandler()\n }\n\n logError(...args: Parameters<NextWrapperServer['logError']>) {\n this.server.logError(...args)\n }\n\n async renderToHTML(...args: Parameters<NextWrapperServer['renderToHTML']>) {\n return this.server.renderToHTML(...args)\n }\n\n async renderError(...args: Parameters<NextWrapperServer['renderError']>) {\n return this.server.renderError(...args)\n }\n\n async renderErrorToHTML(\n ...args: Parameters<NextWrapperServer['renderErrorToHTML']>\n ) {\n return this.server.renderErrorToHTML(...args)\n }\n\n async render404(...args: Parameters<NextWrapperServer['render404']>) {\n return this.server.render404(...args)\n }\n\n async close() {\n await Promise.allSettled([\n this.init?.server.close(),\n this.cleanupListeners?.runAll(),\n ])\n }\n}\n\n// This file is used for when users run `require('next')`\nfunction createServer(\n options: NextServerOptions & {\n turbo?: boolean\n turbopack?: boolean\n }\n): NextWrapperServer {\n if (options && (options.turbo || options.turbopack)) {\n process.env.TURBOPACK = '1'\n }\n // The package is used as a TypeScript plugin.\n if (\n options &&\n 'typescript' in options &&\n 'version' in (options as any).typescript\n ) {\n const pluginMod: typeof import('./next-typescript') = require('./next-typescript')\n return pluginMod.createTSPlugin(\n options as any\n ) as unknown as NextWrapperServer\n }\n\n if (options == null) {\n throw new Error(\n 'The server has not been instantiated properly. https://nextjs.org/docs/messages/invalid-server-options'\n )\n }\n\n if (\n !('isNextDevCommand' in options) &&\n process.env.NODE_ENV &&\n !['production', 'development', 'test'].includes(process.env.NODE_ENV)\n ) {\n log.warn(NON_STANDARD_NODE_ENV)\n }\n\n if (options.dev && typeof options.dev !== 'boolean') {\n console.warn(\n \"Warning: 'dev' is not a boolean which could introduce unexpected behavior. https://nextjs.org/docs/messages/invalid-server-options\"\n )\n }\n\n // When the caller is a custom server (using next()).\n if (options.customServer !== false) {\n const dir = resolve(options.dir || '.')\n\n return new NextCustomServer({\n ...options,\n dir,\n })\n }\n\n // When the caller is Next.js internals (i.e. render worker, start server, etc)\n return new NextServer(options)\n}\n\n// Support commonjs `require('next')`\nmodule.exports = createServer\n// exports = module.exports\n\n// Support `import next from 'next'`\nexport default createServer\n"],"names":["NextServer","ServerImpl","getServerImpl","undefined","Promise","resolve","require","default","SYMBOL_LOAD_CONFIG","Symbol","constructor","options","hostname","port","getRequestHandler","req","res","parsedUrl","getTracer","trace","NextServerSpan","requestHandler","getServerRequestHandler","getUpgradeHandler","socket","head","server","getServer","handleUpgrade","apply","setAssetPrefix","assetPrefix","preparedAssetPrefix","logError","args","render","renderToHTML","renderError","renderErrorToHTML","render404","prepare","serverFields","Object","assign","dev","close","createServer","ServerImplementation","dir","config","loadConfig","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_SERVER","customConfig","conf","silent","serializedConfig","path","join","distDir","SERVER_FILES_MANIFEST","experimental","isExperimentalCompile","isTurbopackBuild","_","serverPromise","then","output","process","env","__NEXT_PRIVATE_STANDALONE_CONFIG","log","warn","Error","reqHandler","reqHandlerPromise","wrap","bind","NextCustomServer","didWebSocketSetup","getInit","init","upgradeHandler","getRequestHandlers","onDevServerCleanup","cleanupListeners","AsyncCallbackSet","add","initResult","isDev","minimalMode","quiet","setupWebSocketHandler","customServer","_req","on","httpServer","url","formatUrl","pathname","query","startsWith","console","error","allSettled","runAll","turbo","turbopack","TURBOPACK","typescript","pluginMod","createTSPlugin","NODE_ENV","includes","NON_STANDARD_NODE_ENV","module","exports"],"mappings":";;;;;;;;;;;;;;;IAsGaA,UAAU;eAAVA;;IA2Zb,2BAA2B;IAE3B,oCAAoC;IACpC,OAA2B;eAA3B;;;QA1fO;QACA;6DAGc;+DACE;8DACO;2BACQ;4BAI/B;wBAEmB;4BACK;2BACL;kCAGO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEjC,IAAIC;AAEJ,MAAMC,gBAAgB;IACpB,IAAID,eAAeE,WAAW;QAC5BF,aAAa,AAAC,CAAA,MAAMG,QAAQC,OAAO,CAACC,QAAQ,iBAAgB,EAAGC,OAAO;IACxE;IACA,OAAON;AACT;AAqBA,MAAMO,qBAAqBC,OAAO;AA4C3B,MAAMT;IASXU,YAAYC,OAA0B,CAAE;QACtC,IAAI,CAACA,OAAO,GAAGA;IACjB;IAEA,IAAIC,WAAW;QACb,OAAO,IAAI,CAACD,OAAO,CAACC,QAAQ;IAC9B;IAEA,IAAIC,OAAO;QACT,OAAO,IAAI,CAACF,OAAO,CAACE,IAAI;IAC1B;IAEAC,oBAAoC;QAClC,OAAO,OACLC,KACAC,KACAC;YAEA,OAAOC,IAAAA,iBAAS,IAAGC,KAAK,CAACC,0BAAc,CAACN,iBAAiB,EAAE;gBACzD,MAAMO,iBAAiB,MAAM,IAAI,CAACC,uBAAuB;gBACzD,OAAOD,eAAeN,KAAKC,KAAKC;YAClC;QACF;IACF;IAEAM,oBAAoC;QAClC,OAAO,OAAOR,KAAsBS,QAAaC;YAC/C,MAAMC,SAAS,MAAM,IAAI,CAACC,SAAS;YACnC,mDAAmD;YACnD,uBAAuB;YACvB,OAAOD,OAAOE,aAAa,CAACC,KAAK,CAACH,QAAQ;gBAACX;gBAAKS;gBAAQC;aAAK;QAC/D;IACF;IAEAK,eAAeC,WAAmB,EAAE;QAClC,IAAI,IAAI,CAACL,MAAM,EAAE;YACf,IAAI,CAACA,MAAM,CAACI,cAAc,CAACC;QAC7B,OAAO;YACL,IAAI,CAACC,mBAAmB,GAAGD;QAC7B;IACF;IAEAE,SAAS,GAAGC,IAA+C,EAAE;QAC3D,IAAI,IAAI,CAACR,MAAM,EAAE;YACf,IAAI,CAACA,MAAM,CAACO,QAAQ,IAAIC;QAC1B;IACF;IAEA,MAAMC,OAAO,GAAGD,IAA6C,EAAE;QAC7D,MAAMR,SAAS,MAAM,IAAI,CAACC,SAAS;QACnC,OAAOD,OAAOS,MAAM,IAAID;IAC1B;IAEA,MAAME,aAAa,GAAGF,IAAmD,EAAE;QACzE,MAAMR,SAAS,MAAM,IAAI,CAACC,SAAS;QACnC,OAAOD,OAAOU,YAAY,IAAIF;IAChC;IAEA,MAAMG,YAAY,GAAGH,IAAkD,EAAE;QACvE,MAAMR,SAAS,MAAM,IAAI,CAACC,SAAS;QACnC,OAAOD,OAAOW,WAAW,IAAIH;IAC/B;IAEA,MAAMI,kBACJ,GAAGJ,IAAwD,EAC3D;QACA,MAAMR,SAAS,MAAM,IAAI,CAACC,SAAS;QACnC,OAAOD,OAAOY,iBAAiB,IAAIJ;IACrC;IAEA,MAAMK,UAAU,GAAGL,IAAgD,EAAE;QACnE,MAAMR,SAAS,MAAM,IAAI,CAACC,SAAS;QACnC,OAAOD,OAAOa,SAAS,IAAIL;IAC7B;IAEA,MAAMM,QAAQC,YAA2B,EAAE;QACzC,MAAMf,SAAS,MAAM,IAAI,CAACC,SAAS;QAEnC,IAAIc,cAAc;YAChBC,OAAOC,MAAM,CAACjB,QAAQe;QACxB;QACA,iDAAiD;QACjD,oDAAoD;QACpD,IAAI,IAAI,CAAC9B,OAAO,CAACiC,GAAG,EAAE;YACpB,MAAMlB,OAAOc,OAAO;QACtB;IACF;IAEA,MAAMK,QAAQ;QACZ,IAAI,IAAI,CAACnB,MAAM,EAAE;YACf,MAAM,IAAI,CAACA,MAAM,CAACmB,KAAK;QACzB;IACF;IAEA,MAAcC,aACZnC,OAAyC,EAChB;QACzB,IAAIoC;QACJ,IAAIpC,QAAQiC,GAAG,EAAE;YACfG,uBAAuBzC,QAAQ,yBAC5BC,OAAO;QACZ,OAAO;YACLwC,uBAAuB,MAAM7C;QAC/B;QACA,MAAMwB,SAAS,IAAIqB,qBAAqBpC;QAExC,OAAOe;IACT;IAEA,MAAc,CAAClB,mBAAmB,GAAG;QACnC,MAAMwC,MAAM3C,IAAAA,aAAO,EAAC,IAAI,CAACM,OAAO,CAACqC,GAAG,IAAI;QAExC,MAAMC,SAAS,MAAMC,IAAAA,eAAU,EAC7B,IAAI,CAACvC,OAAO,CAACiC,GAAG,GAAGO,oCAAwB,GAAGC,mCAAuB,EACrEJ,KACA;YACEK,cAAc,IAAI,CAAC1C,OAAO,CAAC2C,IAAI;YAC/BC,QAAQ;QACV;QAGF,+CAA+C;QAC/C,IAAI,CAAC,IAAI,CAAC5C,OAAO,CAACiC,GAAG,EAAE;YACrB,IAAI;gBACF,MAAMY,mBAAmBlD,QACvBmD,aAAI,CAACC,IAAI,CAACV,KAAKC,OAAOU,OAAO,EAAEC,iCAAqB,GACpDX,MAAM;gBAER,kCAAkC;gBAClCA,OAAOY,YAAY,CAACC,qBAAqB,GACvCN,iBAAiBK,YAAY,CAACC,qBAAqB;gBACrD,kCAAkC;gBAClCb,OAAOY,YAAY,CAACE,gBAAgB,GAClCP,iBAAiBK,YAAY,CAACE,gBAAgB;YAClD,EAAE,OAAOC,GAAG;YACV,kDAAkD;YAClD,oDAAoD;YACpD,sBAAsB;YACxB;QACF;QAEA,OAAOf;IACT;IAEA,MAActB,YAAY;QACxB,IAAI,CAAC,IAAI,CAACsC,aAAa,EAAE;YACvB,IAAI,CAACA,aAAa,GAAG,IAAI,CAACzD,mBAAmB,GAAG0D,IAAI,CAAC,OAAOZ;gBAC1D,IAAI,CAAC,IAAI,CAAC3C,OAAO,CAACiC,GAAG,EAAE;oBACrB,IAAIU,KAAKa,MAAM,KAAK,cAAc;wBAChC,IAAI,CAACC,QAAQC,GAAG,CAACC,gCAAgC,EAAE;4BACjDC,KAAIC,IAAI,CACN,CAAC,kHAAkH,CAAC;wBAExH;oBACF,OAAO,IAAIlB,KAAKa,MAAM,KAAK,UAAU;wBACnC,MAAM,qBAEL,CAFK,IAAIM,MACR,CAAC,mGAAmG,CAAC,GADjG,qBAAA;mCAAA;wCAAA;0CAAA;wBAEN;oBACF;gBACF;gBAEA,IAAI,CAAC/C,MAAM,GAAG,MAAM,IAAI,CAACoB,YAAY,CAAC;oBACpC,GAAG,IAAI,CAACnC,OAAO;oBACf2C;gBACF;gBACA,IAAI,IAAI,CAACtB,mBAAmB,EAAE;oBAC5B,IAAI,CAACN,MAAM,CAACI,cAAc,CAAC,IAAI,CAACE,mBAAmB;gBACrD;gBACA,OAAO,IAAI,CAACN,MAAM;YACpB;QACF;QACA,OAAO,IAAI,CAACuC,aAAa;IAC3B;IAEA,MAAc3C,0BAA0B;QACtC,IAAI,IAAI,CAACoD,UAAU,EAAE,OAAO,IAAI,CAACA,UAAU;QAE3C,mCAAmC;QACnC,IAAI,CAAC,IAAI,CAACC,iBAAiB,EAAE;YAC3B,IAAI,CAACA,iBAAiB,GAAG,IAAI,CAAChD,SAAS,GAAGuC,IAAI,CAAC,CAACxC;gBAC9C,IAAI,CAACgD,UAAU,GAAGxD,IAAAA,iBAAS,IAAG0D,IAAI,CAChCxD,0BAAc,CAACE,uBAAuB,EACtCI,OAAOZ,iBAAiB,GAAG+D,IAAI,CAACnD;gBAElC,OAAO,IAAI,CAACiD,iBAAiB;gBAC7B,OAAO,IAAI,CAACD,UAAU;YACxB;QACF;QACA,OAAO,IAAI,CAACC,iBAAiB;IAC/B;AACF;AAEA,+EAA+E,GAC/E,MAAMG;IAQJpE,YAAYC,OAA0B,CAAE;aAPhCoE,oBAA6B;QAQnC,IAAI,CAACpE,OAAO,GAAGA;IACjB;IAEUqE,UAAU;QAClB,IAAI,CAAC,IAAI,CAACC,IAAI,EAAE;YACd,MAAM,qBAEL,CAFK,IAAIR,MACR,8DADI,qBAAA;uBAAA;4BAAA;8BAAA;YAEN;QACF;QACA,OAAO,IAAI,CAACQ,IAAI;IAClB;IAEA,IAAc5D,iBAAiB;QAC7B,OAAO,IAAI,CAAC2D,OAAO,GAAG3D,cAAc;IACtC;IACA,IAAc6D,iBAAiB;QAC7B,OAAO,IAAI,CAACF,OAAO,GAAGE,cAAc;IACtC;IACA,IAAcxD,SAAS;QACrB,OAAO,IAAI,CAACsD,OAAO,GAAGtD,MAAM;IAC9B;IAEA,IAAId,WAAW;QACb,OAAO,IAAI,CAACD,OAAO,CAACC,QAAQ;IAC9B;IAEA,IAAIC,OAAO;QACT,OAAO,IAAI,CAACF,OAAO,CAACE,IAAI;IAC1B;IAEA,MAAM2B,UAAU;QACd,MAAM,EAAE2C,kBAAkB,EAAE,GAC1B7E,QAAQ;QAEV,IAAI8E;QACJ,IAAI,IAAI,CAACzE,OAAO,CAACiC,GAAG,EAAE;YACpB,IAAI,CAACyC,gBAAgB,GAAG,IAAIC,kCAAgB;YAC5CF,qBAAqB,IAAI,CAACC,gBAAgB,CAACE,GAAG,CAACV,IAAI,CAAC,IAAI,CAACQ,gBAAgB;QAC3E;QAEA,MAAMG,aAAa,MAAML,mBAAmB;YAC1CnC,KAAK,IAAI,CAACrC,OAAO,CAACqC,GAAG;YACrBnC,MAAM,IAAI,CAACF,OAAO,CAACE,IAAI,IAAI;YAC3B4E,OAAO,CAAC,CAAC,IAAI,CAAC9E,OAAO,CAACiC,GAAG;YACzBwC;YACAxE,UAAU,IAAI,CAACD,OAAO,CAACC,QAAQ,IAAI;YACnC8E,aAAa,IAAI,CAAC/E,OAAO,CAAC+E,WAAW;YACrCC,OAAO,IAAI,CAAChF,OAAO,CAACgF,KAAK;QAC3B;QACA,IAAI,CAACV,IAAI,GAAGO;IACd;IAEQI,sBACNC,YAAoC,EACpCC,IAAsB,EACtB;QACA,IAAI,CAAC,IAAI,CAACf,iBAAiB,EAAE;gBAEKe;YADhC,IAAI,CAACf,iBAAiB,GAAG;YACzBc,eAAeA,iBAAiBC,yBAAAA,cAAAA,KAAMtE,MAAM,qBAAb,AAACsE,YAAsBpE,MAAM;YAE5D,IAAImE,cAAc;gBAChBA,aAAaE,EAAE,CAAC,WAAW,OAAOhF,KAAKS,QAAQC;oBAC7C,IAAI,CAACyD,cAAc,CAACnE,KAAKS,QAAQC;gBACnC;YACF;QACF;IACF;IAEAX,oBAAoC;QAClC,OAAO,OACLC,KACAC,KACAC;YAEA,IAAI,CAAC2E,qBAAqB,CAAC,IAAI,CAACjF,OAAO,CAACqF,UAAU,EAAEjF;YAEpD,IAAIE,WAAW;gBACbF,IAAIkF,GAAG,GAAGC,IAAAA,oBAAS,EAACjF;YACtB;YAEA,OAAO,IAAI,CAACI,cAAc,CAACN,KAAKC;QAClC;IACF;IAEA,MAAMmB,OAAO,GAAGD,IAA6C,EAAE;QAC7D,IAAI,CAACnB,KAAKC,KAAKmF,UAAUC,OAAOnF,UAAU,GAAGiB;QAC7C,IAAI,CAAC0D,qBAAqB,CAAC,IAAI,CAACjF,OAAO,CAACqF,UAAU,EAAEjF;QAEpD,IAAI,CAACoF,SAASE,UAAU,CAAC,MAAM;YAC7BC,QAAQC,KAAK,CAAC,CAAC,8BAA8B,EAAEJ,SAAS,CAAC,CAAC;YAC1DA,WAAW,CAAC,CAAC,EAAEA,UAAU;QAC3B;QACAA,WAAWA,aAAa,WAAW,MAAMA;QAEzCpF,IAAIkF,GAAG,GAAGC,IAAAA,oBAAS,EAAC;YAClB,GAAGjF,SAAS;YACZkF;YACAC;QACF;QAEA,MAAM,IAAI,CAAC/E,cAAc,CAACN,KAAwBC;QAClD;IACF;IAEAc,eAAeC,WAAmB,EAAQ;QACxC,IAAI,CAACL,MAAM,CAACI,cAAc,CAACC;IAC7B;IAEAR,oBAAoC;QAClC,OAAO,IAAI,CAACG,MAAM,CAACH,iBAAiB;IACtC;IAEAU,SAAS,GAAGC,IAA+C,EAAE;QAC3D,IAAI,CAACR,MAAM,CAACO,QAAQ,IAAIC;IAC1B;IAEA,MAAME,aAAa,GAAGF,IAAmD,EAAE;QACzE,OAAO,IAAI,CAACR,MAAM,CAACU,YAAY,IAAIF;IACrC;IAEA,MAAMG,YAAY,GAAGH,IAAkD,EAAE;QACvE,OAAO,IAAI,CAACR,MAAM,CAACW,WAAW,IAAIH;IACpC;IAEA,MAAMI,kBACJ,GAAGJ,IAAwD,EAC3D;QACA,OAAO,IAAI,CAACR,MAAM,CAACY,iBAAiB,IAAIJ;IAC1C;IAEA,MAAMK,UAAU,GAAGL,IAAgD,EAAE;QACnE,OAAO,IAAI,CAACR,MAAM,CAACa,SAAS,IAAIL;IAClC;IAEA,MAAMW,QAAQ;YAEV,YACA;QAFF,MAAMzC,QAAQoG,UAAU,CAAC;aACvB,aAAA,IAAI,CAACvB,IAAI,qBAAT,WAAWvD,MAAM,CAACmB,KAAK;aACvB,yBAAA,IAAI,CAACwC,gBAAgB,qBAArB,uBAAuBoB,MAAM;SAC9B;IACH;AACF;AAEA,yDAAyD;AACzD,SAAS3D,aACPnC,OAGC;IAED,IAAIA,WAAYA,CAAAA,QAAQ+F,KAAK,IAAI/F,QAAQgG,SAAS,AAAD,GAAI;QACnDvC,QAAQC,GAAG,CAACuC,SAAS,GAAG;IAC1B;IACA,8CAA8C;IAC9C,IACEjG,WACA,gBAAgBA,WAChB,aAAa,AAACA,QAAgBkG,UAAU,EACxC;QACA,MAAMC,YAAgDxG,QAAQ;QAC9D,OAAOwG,UAAUC,cAAc,CAC7BpG;IAEJ;IAEA,IAAIA,WAAW,MAAM;QACnB,MAAM,qBAEL,CAFK,IAAI8D,MACR,2GADI,qBAAA;mBAAA;wBAAA;0BAAA;QAEN;IACF;IAEA,IACE,CAAE,CAAA,sBAAsB9D,OAAM,KAC9ByD,QAAQC,GAAG,CAAC2C,QAAQ,IACpB,CAAC;QAAC;QAAc;QAAe;KAAO,CAACC,QAAQ,CAAC7C,QAAQC,GAAG,CAAC2C,QAAQ,GACpE;QACAzC,KAAIC,IAAI,CAAC0C,gCAAqB;IAChC;IAEA,IAAIvG,QAAQiC,GAAG,IAAI,OAAOjC,QAAQiC,GAAG,KAAK,WAAW;QACnD0D,QAAQ9B,IAAI,CACV;IAEJ;IAEA,qDAAqD;IACrD,IAAI7D,QAAQkF,YAAY,KAAK,OAAO;QAClC,MAAM7C,MAAM3C,IAAAA,aAAO,EAACM,QAAQqC,GAAG,IAAI;QAEnC,OAAO,IAAI8B,iBAAiB;YAC1B,GAAGnE,OAAO;YACVqC;QACF;IACF;IAEA,+EAA+E;IAC/E,OAAO,IAAIhD,WAAWW;AACxB;AAEA,qCAAqC;AACrCwG,OAAOC,OAAO,GAAGtE;MAIjB,WAAeA"}
1
+ {"version":3,"sources":["../../src/server/next.ts"],"sourcesContent":["import type { Options as DevServerOptions } from './dev/next-dev-server'\nimport type {\n NodeRequestHandler,\n Options as ServerOptions,\n} from './next-server'\nimport type { UrlWithParsedQuery } from 'url'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { Duplex } from 'stream'\nimport type { NextUrlWithParsedQuery } from './request-meta'\n\nimport './require-hook'\nimport './node-polyfill-crypto'\n\nimport type { default as NextNodeServer } from './next-server'\nimport * as log from '../build/output/log'\nimport loadConfig from './config'\nimport path, { resolve } from 'path'\nimport { NON_STANDARD_NODE_ENV } from '../lib/constants'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n SERVER_FILES_MANIFEST,\n} from '../shared/lib/constants'\nimport { PHASE_PRODUCTION_SERVER } from '../shared/lib/constants'\nimport { getTracer } from './lib/trace/tracer'\nimport { NextServerSpan } from './lib/trace/constants'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\nimport type { ServerFields } from './lib/router-utils/setup-dev-bundler'\nimport type { ServerInitResult } from './lib/render-server'\nimport { AsyncCallbackSet } from './lib/async-callback-set'\n\nlet ServerImpl: typeof NextNodeServer\n\nconst getServerImpl = async () => {\n if (ServerImpl === undefined) {\n ServerImpl = (await Promise.resolve(require('./next-server'))).default\n }\n return ServerImpl\n}\n\nexport type NextServerOptions = Omit<\n ServerOptions | DevServerOptions,\n // This is assigned in this server abstraction.\n 'conf'\n> &\n Partial<Pick<ServerOptions | DevServerOptions, 'conf'>>\n\nexport type RequestHandler = (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: NextUrlWithParsedQuery | undefined\n) => Promise<void>\n\nexport type UpgradeHandler = (\n req: IncomingMessage,\n socket: Duplex,\n head: Buffer\n) => Promise<void>\n\nconst SYMBOL_LOAD_CONFIG = Symbol('next.load_config')\n\ninterface NextWrapperServer {\n // NOTE: the methods/properties here are the public API for custom servers.\n // Consider backwards compatibilty when changing something here!\n\n options: NextServerOptions\n hostname: string | undefined\n port: number | undefined\n\n getRequestHandler(): RequestHandler\n prepare(serverFields?: ServerFields): Promise<void>\n setAssetPrefix(assetPrefix: string): void\n close(): Promise<void>\n\n // used internally\n getUpgradeHandler(): UpgradeHandler\n\n // legacy methods that we left exposed in the past\n\n logError(...args: Parameters<NextNodeServer['logError']>): void\n\n render(\n ...args: Parameters<NextNodeServer['render']>\n ): ReturnType<NextNodeServer['render']>\n\n renderToHTML(\n ...args: Parameters<NextNodeServer['renderToHTML']>\n ): ReturnType<NextNodeServer['renderToHTML']>\n\n renderError(\n ...args: Parameters<NextNodeServer['renderError']>\n ): ReturnType<NextNodeServer['renderError']>\n\n renderErrorToHTML(\n ...args: Parameters<NextNodeServer['renderErrorToHTML']>\n ): ReturnType<NextNodeServer['renderErrorToHTML']>\n\n render404(\n ...args: Parameters<NextNodeServer['render404']>\n ): ReturnType<NextNodeServer['render404']>\n}\n\n/** The wrapper server used by `next start` */\nexport class NextServer implements NextWrapperServer {\n private serverPromise?: Promise<NextNodeServer>\n private server?: NextNodeServer\n private reqHandler?: NodeRequestHandler\n private reqHandlerPromise?: Promise<NodeRequestHandler>\n private preparedAssetPrefix?: string\n\n public options: NextServerOptions\n\n constructor(options: NextServerOptions) {\n this.options = options\n }\n\n get hostname() {\n return this.options.hostname\n }\n\n get port() {\n return this.options.port\n }\n\n getRequestHandler(): RequestHandler {\n return async (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: UrlWithParsedQuery\n ) => {\n return getTracer().trace(NextServerSpan.getRequestHandler, async () => {\n const requestHandler = await this.getServerRequestHandler()\n return requestHandler(req, res, parsedUrl)\n })\n }\n }\n\n getUpgradeHandler(): UpgradeHandler {\n return async (req: IncomingMessage, socket: any, head: any) => {\n const server = await this.getServer()\n // @ts-expect-error we mark this as protected so it\n // causes an error here\n return server.handleUpgrade.apply(server, [req, socket, head])\n }\n }\n\n setAssetPrefix(assetPrefix: string) {\n if (this.server) {\n this.server.setAssetPrefix(assetPrefix)\n } else {\n this.preparedAssetPrefix = assetPrefix\n }\n }\n\n logError(...args: Parameters<NextWrapperServer['logError']>) {\n if (this.server) {\n this.server.logError(...args)\n }\n }\n\n async render(...args: Parameters<NextWrapperServer['render']>) {\n const server = await this.getServer()\n return server.render(...args)\n }\n\n async renderToHTML(...args: Parameters<NextWrapperServer['renderToHTML']>) {\n const server = await this.getServer()\n return server.renderToHTML(...args)\n }\n\n async renderError(...args: Parameters<NextWrapperServer['renderError']>) {\n const server = await this.getServer()\n return server.renderError(...args)\n }\n\n async renderErrorToHTML(\n ...args: Parameters<NextWrapperServer['renderErrorToHTML']>\n ) {\n const server = await this.getServer()\n return server.renderErrorToHTML(...args)\n }\n\n async render404(...args: Parameters<NextWrapperServer['render404']>) {\n const server = await this.getServer()\n return server.render404(...args)\n }\n\n async prepare(serverFields?: ServerFields) {\n const server = await this.getServer()\n\n if (serverFields) {\n Object.assign(server, serverFields)\n }\n // We shouldn't prepare the server in production,\n // because this code won't be executed when deployed\n if (this.options.dev) {\n await server.prepare()\n }\n }\n\n async close() {\n if (this.server) {\n await this.server.close()\n }\n }\n\n private async createServer(\n options: ServerOptions | DevServerOptions\n ): Promise<NextNodeServer> {\n let ServerImplementation: typeof NextNodeServer\n if (options.dev) {\n ServerImplementation = require('./dev/next-dev-server')\n .default as typeof import('./dev/next-dev-server').default\n } else {\n ServerImplementation = await getServerImpl()\n }\n const server = new ServerImplementation(options)\n\n return server\n }\n\n private async [SYMBOL_LOAD_CONFIG]() {\n const dir = resolve(this.options.dir || '.')\n\n const config = await loadConfig(\n this.options.dev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_SERVER,\n dir,\n {\n customConfig: this.options.conf,\n silent: true,\n }\n )\n\n // check serialized build config when available\n if (!this.options.dev) {\n try {\n const serializedConfig = require(\n path.join(dir, config.distDir, SERVER_FILES_MANIFEST)\n ).config\n\n // @ts-expect-error internal field\n config.experimental.isExperimentalCompile =\n serializedConfig.experimental.isExperimentalCompile\n } catch (_) {\n // if distDir is customized we don't know until we\n // load the config so fallback to loading the config\n // from next.config.js\n }\n }\n\n return config\n }\n\n private async getServer() {\n if (!this.serverPromise) {\n this.serverPromise = this[SYMBOL_LOAD_CONFIG]().then(async (conf) => {\n if (!this.options.dev) {\n if (conf.output === 'standalone') {\n if (!process.env.__NEXT_PRIVATE_STANDALONE_CONFIG) {\n log.warn(\n `\"next start\" does not work with \"output: standalone\" configuration. Use \"node .next/standalone/server.js\" instead.`\n )\n }\n } else if (conf.output === 'export') {\n throw new Error(\n `\"next start\" does not work with \"output: export\" configuration. Use \"npx serve@latest out\" instead.`\n )\n }\n }\n\n this.server = await this.createServer({\n ...this.options,\n conf,\n })\n if (this.preparedAssetPrefix) {\n this.server.setAssetPrefix(this.preparedAssetPrefix)\n }\n return this.server\n })\n }\n return this.serverPromise\n }\n\n private async getServerRequestHandler() {\n if (this.reqHandler) return this.reqHandler\n\n // Memoize request handler creation\n if (!this.reqHandlerPromise) {\n this.reqHandlerPromise = this.getServer().then((server) => {\n this.reqHandler = getTracer().wrap(\n NextServerSpan.getServerRequestHandler,\n server.getRequestHandler().bind(server)\n )\n delete this.reqHandlerPromise\n return this.reqHandler\n })\n }\n return this.reqHandlerPromise\n }\n}\n\n/** The wrapper server used for `import next from \"next\" (in a custom server)` */\nclass NextCustomServer implements NextWrapperServer {\n private didWebSocketSetup: boolean = false\n protected cleanupListeners?: AsyncCallbackSet\n\n protected init?: ServerInitResult\n\n public options: NextServerOptions\n\n constructor(options: NextServerOptions) {\n this.options = options\n }\n\n protected getInit() {\n if (!this.init) {\n throw new Error(\n 'prepare() must be called before performing this operation'\n )\n }\n return this.init\n }\n\n protected get requestHandler() {\n return this.getInit().requestHandler\n }\n protected get upgradeHandler() {\n return this.getInit().upgradeHandler\n }\n protected get server() {\n return this.getInit().server\n }\n\n get hostname() {\n return this.options.hostname\n }\n\n get port() {\n return this.options.port\n }\n\n async prepare() {\n const { getRequestHandlers } =\n require('./lib/start-server') as typeof import('./lib/start-server')\n\n let onDevServerCleanup: AsyncCallbackSet['add'] | undefined\n if (this.options.dev) {\n this.cleanupListeners = new AsyncCallbackSet()\n onDevServerCleanup = this.cleanupListeners.add.bind(this.cleanupListeners)\n }\n\n const initResult = await getRequestHandlers({\n dir: this.options.dir!,\n port: this.options.port || 3000,\n isDev: !!this.options.dev,\n onDevServerCleanup,\n hostname: this.options.hostname || 'localhost',\n minimalMode: this.options.minimalMode,\n quiet: this.options.quiet,\n })\n this.init = initResult\n }\n\n private setupWebSocketHandler(\n customServer?: import('http').Server,\n _req?: IncomingMessage\n ) {\n if (!this.didWebSocketSetup) {\n this.didWebSocketSetup = true\n customServer = customServer || (_req?.socket as any)?.server\n\n if (customServer) {\n customServer.on('upgrade', async (req, socket, head) => {\n this.upgradeHandler(req, socket, head)\n })\n }\n }\n }\n\n getRequestHandler(): RequestHandler {\n return async (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: UrlWithParsedQuery\n ) => {\n this.setupWebSocketHandler(this.options.httpServer, req)\n\n if (parsedUrl) {\n req.url = formatUrl(parsedUrl)\n }\n\n return this.requestHandler(req, res)\n }\n }\n\n async render(...args: Parameters<NextWrapperServer['render']>) {\n let [req, res, pathname, query, parsedUrl] = args\n this.setupWebSocketHandler(this.options.httpServer, req as IncomingMessage)\n\n if (!pathname.startsWith('/')) {\n console.error(`Cannot render page with path \"${pathname}\"`)\n pathname = `/${pathname}`\n }\n pathname = pathname === '/index' ? '/' : pathname\n\n req.url = formatUrl({\n ...parsedUrl,\n pathname,\n query,\n })\n\n await this.requestHandler(req as IncomingMessage, res as ServerResponse)\n return\n }\n\n setAssetPrefix(assetPrefix: string): void {\n this.server.setAssetPrefix(assetPrefix)\n }\n\n getUpgradeHandler(): UpgradeHandler {\n return this.server.getUpgradeHandler()\n }\n\n logError(...args: Parameters<NextWrapperServer['logError']>) {\n this.server.logError(...args)\n }\n\n async renderToHTML(...args: Parameters<NextWrapperServer['renderToHTML']>) {\n return this.server.renderToHTML(...args)\n }\n\n async renderError(...args: Parameters<NextWrapperServer['renderError']>) {\n return this.server.renderError(...args)\n }\n\n async renderErrorToHTML(\n ...args: Parameters<NextWrapperServer['renderErrorToHTML']>\n ) {\n return this.server.renderErrorToHTML(...args)\n }\n\n async render404(...args: Parameters<NextWrapperServer['render404']>) {\n return this.server.render404(...args)\n }\n\n async close() {\n await Promise.allSettled([\n this.init?.server.close(),\n this.cleanupListeners?.runAll(),\n ])\n }\n}\n\n// This file is used for when users run `require('next')`\nfunction createServer(\n options: NextServerOptions & {\n turbo?: boolean\n turbopack?: boolean\n }\n): NextWrapperServer {\n if (options && (options.turbo || options.turbopack)) {\n process.env.TURBOPACK = '1'\n }\n // The package is used as a TypeScript plugin.\n if (\n options &&\n 'typescript' in options &&\n 'version' in (options as any).typescript\n ) {\n const pluginMod: typeof import('./next-typescript') = require('./next-typescript')\n return pluginMod.createTSPlugin(\n options as any\n ) as unknown as NextWrapperServer\n }\n\n if (options == null) {\n throw new Error(\n 'The server has not been instantiated properly. https://nextjs.org/docs/messages/invalid-server-options'\n )\n }\n\n if (\n !('isNextDevCommand' in options) &&\n process.env.NODE_ENV &&\n !['production', 'development', 'test'].includes(process.env.NODE_ENV)\n ) {\n log.warn(NON_STANDARD_NODE_ENV)\n }\n\n if (options.dev && typeof options.dev !== 'boolean') {\n console.warn(\n \"Warning: 'dev' is not a boolean which could introduce unexpected behavior. https://nextjs.org/docs/messages/invalid-server-options\"\n )\n }\n\n // When the caller is a custom server (using next()).\n if (options.customServer !== false) {\n const dir = resolve(options.dir || '.')\n\n return new NextCustomServer({\n ...options,\n dir,\n })\n }\n\n // When the caller is Next.js internals (i.e. render worker, start server, etc)\n return new NextServer(options)\n}\n\n// Support commonjs `require('next')`\nmodule.exports = createServer\n// exports = module.exports\n\n// Support `import next from 'next'`\nexport default createServer\n"],"names":["NextServer","ServerImpl","getServerImpl","undefined","Promise","resolve","require","default","SYMBOL_LOAD_CONFIG","Symbol","constructor","options","hostname","port","getRequestHandler","req","res","parsedUrl","getTracer","trace","NextServerSpan","requestHandler","getServerRequestHandler","getUpgradeHandler","socket","head","server","getServer","handleUpgrade","apply","setAssetPrefix","assetPrefix","preparedAssetPrefix","logError","args","render","renderToHTML","renderError","renderErrorToHTML","render404","prepare","serverFields","Object","assign","dev","close","createServer","ServerImplementation","dir","config","loadConfig","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_SERVER","customConfig","conf","silent","serializedConfig","path","join","distDir","SERVER_FILES_MANIFEST","experimental","isExperimentalCompile","_","serverPromise","then","output","process","env","__NEXT_PRIVATE_STANDALONE_CONFIG","log","warn","Error","reqHandler","reqHandlerPromise","wrap","bind","NextCustomServer","didWebSocketSetup","getInit","init","upgradeHandler","getRequestHandlers","onDevServerCleanup","cleanupListeners","AsyncCallbackSet","add","initResult","isDev","minimalMode","quiet","setupWebSocketHandler","customServer","_req","on","httpServer","url","formatUrl","pathname","query","startsWith","console","error","allSettled","runAll","turbo","turbopack","TURBOPACK","typescript","pluginMod","createTSPlugin","NODE_ENV","includes","NON_STANDARD_NODE_ENV","module","exports"],"mappings":"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"}
@@ -77,7 +77,7 @@ function generateCacheEntryWithCacheContext(workStore, outerWorkUnitStore, clien
77
77
  explicitExpire: undefined,
78
78
  explicitStale: undefined,
79
79
  tags: null,
80
- hmrRefreshHash: outerWorkUnitStore && (0, _workunitasyncstorageexternal.getHmrRefreshHash)(outerWorkUnitStore),
80
+ hmrRefreshHash: outerWorkUnitStore && (0, _workunitasyncstorageexternal.getHmrRefreshHash)(workStore, outerWorkUnitStore),
81
81
  isHmrRefresh: (useCacheOrRequestStore == null ? void 0 : useCacheOrRequestStore.isHmrRefresh) ?? false,
82
82
  serverComponentsHmrCache: useCacheOrRequestStore == null ? void 0 : useCacheOrRequestStore.serverComponentsHmrCache,
83
83
  forceRevalidate: shouldForceRevalidate(workStore, outerWorkUnitStore),
@@ -166,7 +166,7 @@ async function collectResult(savedStream, outerWorkUnitStore, innerCacheStore, s
166
166
  }
167
167
  async function generateCacheEntryImpl(outerWorkUnitStore, innerCacheStore, clientReferenceManifest, encodedArguments, fn, timeoutError) {
168
168
  const temporaryReferences = (0, _serveredge.createTemporaryReferenceSet)();
169
- const [, , , args] = typeof encodedArguments === 'string' ? await (0, _serveredge.decodeReply)(encodedArguments, (0, _encryptionutils.getServerModuleMap)(), {
169
+ const [, , args] = typeof encodedArguments === 'string' ? await (0, _serveredge.decodeReply)(encodedArguments, (0, _encryptionutils.getServerModuleMap)(), {
170
170
  temporaryReferences
171
171
  }) : await (0, _serveredge.decodeReplyFromAsyncIterable)({
172
172
  async *[Symbol.asyncIterator] () {
@@ -348,7 +348,7 @@ function cache(kind, id, boundArgsLength, fn) {
348
348
  // components have been edited. This is a very coarse approach. But it's
349
349
  // also only a temporary solution until Action IDs are unique per
350
350
  // implementation. Remove this once Action IDs hash the implementation.
351
- const hmrRefreshHash = workUnitStore && (0, _workunitasyncstorageexternal.getHmrRefreshHash)(workUnitStore);
351
+ const hmrRefreshHash = workUnitStore && (0, _workunitasyncstorageexternal.getHmrRefreshHash)(workStore, workUnitStore);
352
352
  const hangingInputAbortSignal = (workUnitStore == null ? void 0 : workUnitStore.type) === 'prerender' ? (0, _dynamicrendering.createHangingInputAbortSignal)(workUnitStore) : undefined;
353
353
  // When dynamicIO is not enabled, we can not encode searchParams as
354
354
  // hanging promises. To still avoid unused search params from making a
@@ -404,9 +404,13 @@ function cache(kind, id, boundArgsLength, fn) {
404
404
  args.unshift(boundArgs);
405
405
  }
406
406
  const temporaryReferences = (0, _clientedge.createTemporaryReferenceSet)();
407
- const cacheKeyParts = [
407
+ const cacheKeyParts = hmrRefreshHash ? [
408
+ buildId,
409
+ id,
410
+ args,
411
+ hmrRefreshHash
412
+ ] : [
408
413
  buildId,
409
- hmrRefreshHash,
410
414
  id,
411
415
  args
412
416
  ];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/use-cache/use-cache-wrapper.ts"],"sourcesContent":["import type { DeepReadonly } from '../../shared/lib/deep-readonly'\n/* eslint-disable import/no-extraneous-dependencies */\nimport {\n renderToReadableStream,\n decodeReply,\n decodeReplyFromAsyncIterable,\n createTemporaryReferenceSet as createServerTemporaryReferenceSet,\n} from 'react-server-dom-webpack/server.edge'\n/* eslint-disable import/no-extraneous-dependencies */\nimport {\n createFromReadableStream,\n encodeReply,\n createTemporaryReferenceSet as createClientTemporaryReferenceSet,\n} from 'react-server-dom-webpack/client.edge'\n\nimport type { WorkStore } from '../app-render/work-async-storage.external'\nimport { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport type {\n UseCacheStore,\n WorkUnitStore,\n} from '../app-render/work-unit-async-storage.external'\nimport {\n getHmrRefreshHash,\n getRenderResumeDataCache,\n getPrerenderResumeDataCache,\n workUnitAsyncStorage,\n getDraftModeProviderForCacheScope,\n} from '../app-render/work-unit-async-storage.external'\nimport { runInCleanSnapshot } from '../app-render/clean-async-snapshot.external'\n\nimport { makeHangingPromise } from '../dynamic-rendering-utils'\n\nimport type { ClientReferenceManifestForRsc } from '../../build/webpack/plugins/flight-manifest-plugin'\n\nimport {\n getClientReferenceManifestForRsc,\n getServerModuleMap,\n} from '../app-render/encryption-utils'\nimport type { CacheEntry } from '../lib/cache-handlers/types'\nimport type { CacheSignal } from '../app-render/cache-signal'\nimport { decryptActionBoundArgs } from '../app-render/encryption'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport { getDigestForWellKnownError } from '../app-render/create-error-handler'\nimport { DYNAMIC_EXPIRE } from './constants'\nimport { getCacheHandler } from './handlers'\nimport { UseCacheTimeoutError } from './use-cache-errors'\nimport { createHangingInputAbortSignal } from '../app-render/dynamic-rendering'\nimport {\n makeErroringExoticSearchParamsForUseCache,\n type SearchParams,\n} from '../request/search-params'\nimport type { Params } from '../request/params'\nimport React from 'react'\nimport type { ImplicitTags } from '../lib/implicit-tags'\n\ntype CacheKeyParts = [\n buildId: string,\n hmrRefreshHash: string | undefined,\n id: string,\n args: unknown[],\n]\n\nexport interface UseCachePageComponentProps {\n params: Promise<Params>\n searchParams: Promise<SearchParams>\n $$isPageComponent: true\n}\n\nconst isEdgeRuntime = process.env.NEXT_RUNTIME === 'edge'\n\nfunction generateCacheEntry(\n workStore: WorkStore,\n outerWorkUnitStore: WorkUnitStore | undefined,\n clientReferenceManifest: DeepReadonly<ClientReferenceManifestForRsc>,\n encodedArguments: FormData | string,\n fn: (...args: unknown[]) => Promise<unknown>,\n timeoutError: UseCacheTimeoutError\n): Promise<[ReadableStream, Promise<CacheEntry>]> {\n // We need to run this inside a clean AsyncLocalStorage snapshot so that the cache\n // generation cannot read anything from the context we're currently executing which\n // might include request specific things like cookies() inside a React.cache().\n // Note: It is important that we await at least once before this because it lets us\n // pop out of any stack specific contexts as well - aka \"Sync\" Local Storage.\n return runInCleanSnapshot(\n generateCacheEntryWithRestoredWorkStore,\n workStore,\n outerWorkUnitStore,\n clientReferenceManifest,\n encodedArguments,\n fn,\n timeoutError\n )\n}\n\nfunction generateCacheEntryWithRestoredWorkStore(\n workStore: WorkStore,\n outerWorkUnitStore: WorkUnitStore | undefined,\n clientReferenceManifest: DeepReadonly<ClientReferenceManifestForRsc>,\n encodedArguments: FormData | string,\n fn: (...args: unknown[]) => Promise<unknown>,\n timeoutError: UseCacheTimeoutError\n) {\n // Since we cleared the AsyncLocalStorage we need to restore the workStore.\n // Note: We explicitly don't restore the RequestStore nor the PrerenderStore.\n // We don't want any request specific information leaking an we don't want to create a\n // bloated fake request mock for every cache call. So any feature that currently lives\n // in RequestStore but should be available to Caches need to move to WorkStore.\n // PrerenderStore is not needed inside the cache scope because the outer most one will\n // be the one to report its result to the outer Prerender.\n return workAsyncStorage.run(\n workStore,\n generateCacheEntryWithCacheContext,\n workStore,\n outerWorkUnitStore,\n clientReferenceManifest,\n encodedArguments,\n fn,\n timeoutError\n )\n}\n\nfunction generateCacheEntryWithCacheContext(\n workStore: WorkStore,\n outerWorkUnitStore: WorkUnitStore | undefined,\n clientReferenceManifest: DeepReadonly<ClientReferenceManifestForRsc>,\n encodedArguments: FormData | string,\n fn: (...args: unknown[]) => Promise<unknown>,\n timeoutError: UseCacheTimeoutError\n) {\n if (!workStore.cacheLifeProfiles) {\n throw new Error(\n 'cacheLifeProfiles should always be provided. This is a bug in Next.js.'\n )\n }\n const defaultCacheLife = workStore.cacheLifeProfiles['default']\n if (\n !defaultCacheLife ||\n defaultCacheLife.revalidate == null ||\n defaultCacheLife.expire == null ||\n defaultCacheLife.stale == null\n ) {\n throw new Error(\n 'A default cacheLife profile must always be provided. This is a bug in Next.js.'\n )\n }\n\n const useCacheOrRequestStore =\n outerWorkUnitStore?.type === 'request' ||\n outerWorkUnitStore?.type === 'cache'\n ? outerWorkUnitStore\n : undefined\n\n // Initialize the Store for this Cache entry.\n const cacheStore: UseCacheStore = {\n type: 'cache',\n phase: 'render',\n implicitTags: outerWorkUnitStore?.implicitTags,\n revalidate: defaultCacheLife.revalidate,\n expire: defaultCacheLife.expire,\n stale: defaultCacheLife.stale,\n explicitRevalidate: undefined,\n explicitExpire: undefined,\n explicitStale: undefined,\n tags: null,\n hmrRefreshHash: outerWorkUnitStore && getHmrRefreshHash(outerWorkUnitStore),\n isHmrRefresh: useCacheOrRequestStore?.isHmrRefresh ?? false,\n serverComponentsHmrCache: useCacheOrRequestStore?.serverComponentsHmrCache,\n forceRevalidate: shouldForceRevalidate(workStore, outerWorkUnitStore),\n draftMode:\n outerWorkUnitStore &&\n getDraftModeProviderForCacheScope(workStore, outerWorkUnitStore),\n }\n\n return workUnitAsyncStorage.run(\n cacheStore,\n generateCacheEntryImpl,\n outerWorkUnitStore,\n cacheStore,\n clientReferenceManifest,\n encodedArguments,\n fn,\n timeoutError\n )\n}\n\nfunction propagateCacheLifeAndTags(\n workUnitStore: WorkUnitStore | undefined,\n entry: CacheEntry\n): void {\n if (\n workUnitStore &&\n (workUnitStore.type === 'cache' ||\n workUnitStore.type === 'prerender' ||\n workUnitStore.type === 'prerender-ppr' ||\n workUnitStore.type === 'prerender-legacy')\n ) {\n // Propagate tags and revalidate upwards\n const outerTags = workUnitStore.tags ?? (workUnitStore.tags = [])\n const entryTags = entry.tags\n for (let i = 0; i < entryTags.length; i++) {\n const tag = entryTags[i]\n if (!outerTags.includes(tag)) {\n outerTags.push(tag)\n }\n }\n if (workUnitStore.stale > entry.stale) {\n workUnitStore.stale = entry.stale\n }\n if (workUnitStore.revalidate > entry.revalidate) {\n workUnitStore.revalidate = entry.revalidate\n }\n if (workUnitStore.expire > entry.expire) {\n workUnitStore.expire = entry.expire\n }\n }\n}\n\nasync function collectResult(\n savedStream: ReadableStream,\n outerWorkUnitStore: WorkUnitStore | undefined,\n innerCacheStore: UseCacheStore,\n startTime: number,\n errors: Array<unknown>, // This is a live array that gets pushed into.,\n timer: any\n): Promise<CacheEntry> {\n // We create a buffered stream that collects all chunks until the end to\n // ensure that RSC has finished rendering and therefore we have collected\n // all tags. In the future the RSC API might allow for the equivalent of\n // the allReady Promise that exists on SSR streams.\n //\n // If something errored or rejected anywhere in the render, we close\n // the stream as errored. This lets a CacheHandler choose to save the\n // partial result up until that point for future hits for a while to avoid\n // unnecessary retries or not to retry. We use the end of the stream for\n // this to avoid another complicated side-channel. A receiver has to consider\n // that the stream might also error for other reasons anyway such as losing\n // connection.\n\n const buffer: any[] = []\n const reader = savedStream.getReader()\n for (let entry; !(entry = await reader.read()).done; ) {\n buffer.push(entry.value)\n }\n\n let idx = 0\n const bufferStream = new ReadableStream({\n pull(controller) {\n if (idx < buffer.length) {\n controller.enqueue(buffer[idx++])\n } else if (errors.length > 0) {\n // TODO: Should we use AggregateError here?\n controller.error(errors[0])\n } else {\n controller.close()\n }\n },\n })\n\n const collectedTags = innerCacheStore.tags\n // If cacheLife() was used to set an explicit revalidate time we use that.\n // Otherwise, we use the lowest of all inner fetch()/unstable_cache() or nested \"use cache\".\n // If they're lower than our default.\n const collectedRevalidate =\n innerCacheStore.explicitRevalidate !== undefined\n ? innerCacheStore.explicitRevalidate\n : innerCacheStore.revalidate\n const collectedExpire =\n innerCacheStore.explicitExpire !== undefined\n ? innerCacheStore.explicitExpire\n : innerCacheStore.expire\n const collectedStale =\n innerCacheStore.explicitStale !== undefined\n ? innerCacheStore.explicitStale\n : innerCacheStore.stale\n\n const entry: CacheEntry = {\n value: bufferStream,\n timestamp: startTime,\n revalidate: collectedRevalidate,\n expire: collectedExpire,\n stale: collectedStale,\n tags: collectedTags === null ? [] : collectedTags,\n }\n // Propagate tags/revalidate to the parent context.\n propagateCacheLifeAndTags(outerWorkUnitStore, entry)\n\n const cacheSignal =\n outerWorkUnitStore && outerWorkUnitStore.type === 'prerender'\n ? outerWorkUnitStore.cacheSignal\n : null\n if (cacheSignal) {\n cacheSignal.endRead()\n }\n\n if (timer !== undefined) {\n clearTimeout(timer)\n }\n\n return entry\n}\n\nasync function generateCacheEntryImpl(\n outerWorkUnitStore: WorkUnitStore | undefined,\n innerCacheStore: UseCacheStore,\n clientReferenceManifest: DeepReadonly<ClientReferenceManifestForRsc>,\n encodedArguments: FormData | string,\n fn: (...args: unknown[]) => Promise<unknown>,\n timeoutError: UseCacheTimeoutError\n): Promise<[ReadableStream, Promise<CacheEntry>]> {\n const temporaryReferences = createServerTemporaryReferenceSet()\n\n const [, , , args] =\n typeof encodedArguments === 'string'\n ? await decodeReply<CacheKeyParts>(\n encodedArguments,\n getServerModuleMap(),\n { temporaryReferences }\n )\n : await decodeReplyFromAsyncIterable<CacheKeyParts>(\n {\n async *[Symbol.asyncIterator]() {\n for (const entry of encodedArguments) {\n yield entry\n }\n\n // The encoded arguments might contain hanging promises. In this\n // case we don't want to reject with \"Error: Connection closed.\",\n // so we intentionally keep the iterable alive. This is similar to\n // the halting trick that we do while rendering.\n if (outerWorkUnitStore?.type === 'prerender') {\n await new Promise<void>((resolve) => {\n if (outerWorkUnitStore.renderSignal.aborted) {\n resolve()\n } else {\n outerWorkUnitStore.renderSignal.addEventListener(\n 'abort',\n () => resolve(),\n { once: true }\n )\n }\n })\n }\n },\n },\n getServerModuleMap(),\n { temporaryReferences }\n )\n\n // Track the timestamp when we started computing the result.\n const startTime = performance.timeOrigin + performance.now()\n\n // Invoke the inner function to load a new result. We delay the invocation\n // though, until React awaits the promise so that React's request store (ALS)\n // is available when the function is invoked. This allows us, for example, to\n // capture logs so that we can later replay them.\n const resultPromise = createLazyResult(() => fn.apply(null, args))\n\n let errors: Array<unknown> = []\n\n let timer = undefined\n const controller = new AbortController()\n if (outerWorkUnitStore?.type === 'prerender') {\n // If we're prerendering, we give you 50 seconds to fill a cache entry.\n // Otherwise we assume you stalled on hanging input and de-opt. This needs\n // to be lower than just the general timeout of 60 seconds.\n timer = setTimeout(() => {\n controller.abort(timeoutError)\n }, 50000)\n }\n\n const stream = renderToReadableStream(\n resultPromise,\n clientReferenceManifest.clientModules,\n {\n environmentName: 'Cache',\n signal: controller.signal,\n temporaryReferences,\n // In the \"Cache\" environment, we only need to make sure that the error\n // digests are handled correctly. Error formatting and reporting is not\n // necessary here; the errors are encoded in the stream, and will be\n // reported in the \"Server\" environment.\n onError: (error) => {\n const digest = getDigestForWellKnownError(error)\n\n if (digest) {\n return digest\n }\n\n if (process.env.NODE_ENV !== 'development') {\n // TODO: For now we're also reporting the error here, because in\n // production, the \"Server\" environment will only get the obfuscated\n // error (created by the Flight Client in the cache wrapper).\n console.error(error)\n }\n\n if (error === timeoutError) {\n // The timeout error already aborted the whole stream. We don't need\n // to also push this error into the `errors` array.\n return timeoutError.digest\n }\n\n errors.push(error)\n },\n }\n )\n\n const [returnStream, savedStream] = stream.tee()\n\n const promiseOfCacheEntry = collectResult(\n savedStream,\n outerWorkUnitStore,\n innerCacheStore,\n startTime,\n errors,\n timer\n )\n\n // Return the stream as we're creating it. This means that if it ends up\n // erroring we cannot return a stale-while-error version but it allows\n // streaming back the result earlier.\n return [returnStream, promiseOfCacheEntry]\n}\n\nfunction cloneCacheEntry(entry: CacheEntry): [CacheEntry, CacheEntry] {\n const [streamA, streamB] = entry.value.tee()\n entry.value = streamA\n const clonedEntry: CacheEntry = {\n value: streamB,\n timestamp: entry.timestamp,\n revalidate: entry.revalidate,\n expire: entry.expire,\n stale: entry.stale,\n tags: entry.tags,\n }\n return [entry, clonedEntry]\n}\n\nasync function clonePendingCacheEntry(\n pendingCacheEntry: Promise<CacheEntry>\n): Promise<[CacheEntry, CacheEntry]> {\n const entry = await pendingCacheEntry\n return cloneCacheEntry(entry)\n}\n\nasync function getNthCacheEntry(\n split: Promise<[CacheEntry, CacheEntry]>,\n i: number\n): Promise<CacheEntry> {\n return (await split)[i]\n}\n\nasync function encodeFormData(formData: FormData): Promise<string> {\n let result = ''\n for (let [key, value] of formData) {\n // We don't need this key to be serializable but from a security perspective it should not be\n // possible to generate a string that looks the same from a different structure. To ensure this\n // we need a delimeter between fields but just using a delimeter is not enough since a string\n // might contain that delimeter. We use the length of each field as the delimeter to avoid\n // escaping the values.\n result += key.length.toString(16) + ':' + key\n let stringValue\n if (typeof value === 'string') {\n stringValue = value\n } else {\n // The FormData might contain binary data that is not valid UTF-8 so this cache\n // key may generate a UCS-2 string. Passing this to another service needs to be\n // aware that the key might not be compatible.\n const arrayBuffer = await value.arrayBuffer()\n if (arrayBuffer.byteLength % 2 === 0) {\n stringValue = String.fromCodePoint(...new Uint16Array(arrayBuffer))\n } else {\n stringValue =\n String.fromCodePoint(\n ...new Uint16Array(arrayBuffer, 0, (arrayBuffer.byteLength - 1) / 2)\n ) +\n String.fromCodePoint(\n new Uint8Array(arrayBuffer, arrayBuffer.byteLength - 1, 1)[0]\n )\n }\n }\n result += stringValue.length.toString(16) + ':' + stringValue\n }\n return result\n}\n\nfunction createTrackedReadableStream(\n stream: ReadableStream,\n cacheSignal: CacheSignal\n) {\n const reader = stream.getReader()\n return new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read()\n if (done) {\n controller.close()\n cacheSignal.endRead()\n } else {\n controller.enqueue(value)\n }\n },\n })\n}\n\nexport function cache(\n kind: string,\n id: string,\n boundArgsLength: number,\n fn: (...args: unknown[]) => Promise<unknown>\n) {\n const cacheHandler = getCacheHandler(kind)\n if (cacheHandler === undefined) {\n throw new Error('Unknown cache handler: ' + kind)\n }\n\n // Capture the timeout error here to ensure a useful stack.\n const timeoutError = new UseCacheTimeoutError()\n Error.captureStackTrace(timeoutError, cache)\n\n const name = fn.name\n const cachedFn = {\n [name]: async function (...args: any[]) {\n const workStore = workAsyncStorage.getStore()\n if (workStore === undefined) {\n throw new Error(\n '\"use cache\" cannot be used outside of App Router. Expected a WorkStore.'\n )\n }\n\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n // Get the clientReferenceManifest while we're still in the outer Context.\n // In case getClientReferenceManifestSingleton is implemented using AsyncLocalStorage.\n const clientReferenceManifest = getClientReferenceManifestForRsc()\n\n // Because the Action ID is not yet unique per implementation of that Action we can't\n // safely reuse the results across builds yet. In the meantime we add the buildId to the\n // arguments as a seed to ensure they're not reused. Remove this once Action IDs hash\n // the implementation.\n const buildId = workStore.buildId\n\n // In dev mode, when the HMR refresh hash is set, we include it in the\n // cache key. This ensures that cache entries are not reused when server\n // components have been edited. This is a very coarse approach. But it's\n // also only a temporary solution until Action IDs are unique per\n // implementation. Remove this once Action IDs hash the implementation.\n const hmrRefreshHash = workUnitStore && getHmrRefreshHash(workUnitStore)\n\n const hangingInputAbortSignal =\n workUnitStore?.type === 'prerender'\n ? createHangingInputAbortSignal(workUnitStore)\n : undefined\n\n // When dynamicIO is not enabled, we can not encode searchParams as\n // hanging promises. To still avoid unused search params from making a\n // page dynamic, we overwrite them here with a promise that resolves to an\n // empty object, while also overwriting the to-be-invoked function for\n // generating a cache entry with a function that creates an erroring\n // searchParams prop before invoking the original function. This ensures\n // that used searchParams inside of cached functions would still yield an\n // error.\n if (!workStore.dynamicIOEnabled && isPageComponent(args)) {\n const [{ params, searchParams }] = args\n // Overwrite the props to omit $$isPageComponent.\n args = [{ params, searchParams }]\n\n const originalFn = fn\n\n fn = {\n [name]: async ({\n params: serializedParams,\n }: Omit<UseCachePageComponentProps, '$$isPageComponent'>) =>\n originalFn.apply(null, [\n {\n params: serializedParams,\n searchParams:\n makeErroringExoticSearchParamsForUseCache(workStore),\n },\n ]),\n }[name] as (...args: unknown[]) => Promise<unknown>\n }\n\n if (boundArgsLength > 0) {\n if (args.length === 0) {\n throw new InvariantError(\n `Expected the \"use cache\" function ${JSON.stringify(fn.name)} to receive its encrypted bound arguments as the first argument.`\n )\n }\n\n const encryptedBoundArgs = args.shift()\n const boundArgs = await decryptActionBoundArgs(id, encryptedBoundArgs)\n\n if (!Array.isArray(boundArgs)) {\n throw new InvariantError(\n `Expected the bound arguments of \"use cache\" function ${JSON.stringify(fn.name)} to deserialize into an array, got ${typeof boundArgs} instead.`\n )\n }\n\n if (boundArgsLength !== boundArgs.length) {\n throw new InvariantError(\n `Expected the \"use cache\" function ${JSON.stringify(fn.name)} to receive ${boundArgsLength} bound arguments, got ${boundArgs.length} instead.`\n )\n }\n\n args.unshift(boundArgs)\n }\n\n const temporaryReferences = createClientTemporaryReferenceSet()\n const cacheKeyParts: CacheKeyParts = [buildId, hmrRefreshHash, id, args]\n const encodedCacheKeyParts: FormData | string = await encodeReply(\n cacheKeyParts,\n { temporaryReferences, signal: hangingInputAbortSignal }\n )\n\n const serializedCacheKey =\n typeof encodedCacheKeyParts === 'string'\n ? // Fast path for the simple case for simple inputs. We let the CacheHandler\n // Convert it to an ArrayBuffer if it wants to.\n encodedCacheKeyParts\n : await encodeFormData(encodedCacheKeyParts)\n\n let stream: undefined | ReadableStream = undefined\n\n // Get an immutable and mutable versions of the resume data cache.\n const prerenderResumeDataCache = workUnitStore\n ? getPrerenderResumeDataCache(workUnitStore)\n : null\n const renderResumeDataCache = workUnitStore\n ? getRenderResumeDataCache(workUnitStore)\n : null\n\n if (renderResumeDataCache) {\n const cacheSignal =\n workUnitStore && workUnitStore.type === 'prerender'\n ? workUnitStore.cacheSignal\n : null\n\n if (cacheSignal) {\n cacheSignal.beginRead()\n }\n const cachedEntry = renderResumeDataCache.cache.get(serializedCacheKey)\n if (cachedEntry !== undefined) {\n const existingEntry = await cachedEntry\n propagateCacheLifeAndTags(workUnitStore, existingEntry)\n if (\n workUnitStore !== undefined &&\n workUnitStore.type === 'prerender' &&\n existingEntry !== undefined &&\n (existingEntry.revalidate === 0 ||\n existingEntry.expire < DYNAMIC_EXPIRE)\n ) {\n // In a Dynamic I/O prerender, if the cache entry has revalidate: 0 or if the\n // expire time is under 5 minutes, then we consider this cache entry dynamic\n // as it's not worth generating static pages for such data. It's better to leave\n // a PPR hole that can be filled in dynamically with a potentially cached entry.\n if (cacheSignal) {\n cacheSignal.endRead()\n }\n return makeHangingPromise(\n workUnitStore.renderSignal,\n 'dynamic \"use cache\"'\n )\n }\n const [streamA, streamB] = existingEntry.value.tee()\n existingEntry.value = streamB\n\n if (cacheSignal) {\n // When we have a cacheSignal we need to block on reading the cache\n // entry before ending the read.\n stream = createTrackedReadableStream(streamA, cacheSignal)\n } else {\n stream = streamA\n }\n } else {\n if (cacheSignal) {\n cacheSignal.endRead()\n }\n }\n }\n\n if (stream === undefined) {\n const cacheSignal =\n workUnitStore && workUnitStore.type === 'prerender'\n ? workUnitStore.cacheSignal\n : null\n if (cacheSignal) {\n // Either the cache handler or the generation can be using I/O at this point.\n // We need to track when they start and when they complete.\n cacheSignal.beginRead()\n }\n\n const implicitTags = workUnitStore?.implicitTags\n const forceRevalidate = shouldForceRevalidate(workStore, workUnitStore)\n\n let entry = forceRevalidate\n ? undefined\n : 'getExpiration' in cacheHandler\n ? await cacheHandler.get(serializedCacheKey)\n : // Legacy cache handlers require implicit tags to be passed in,\n // instead of checking their staleness here, as we do for modern\n // cache handlers (see below).\n await cacheHandler.get(\n serializedCacheKey,\n implicitTags?.tags ?? []\n )\n\n if (entry && shouldDiscardCacheEntry(entry, workStore, implicitTags)) {\n entry = undefined\n }\n\n const currentTime = performance.timeOrigin + performance.now()\n if (\n workUnitStore !== undefined &&\n workUnitStore.type === 'prerender' &&\n entry !== undefined &&\n (entry.revalidate === 0 || entry.expire < DYNAMIC_EXPIRE)\n ) {\n // In a Dynamic I/O prerender, if the cache entry has revalidate: 0 or if the\n // expire time is under 5 minutes, then we consider this cache entry dynamic\n // as it's not worth generating static pages for such data. It's better to leave\n // a PPR hole that can be filled in dynamically with a potentially cached entry.\n if (cacheSignal) {\n cacheSignal.endRead()\n }\n\n return makeHangingPromise(\n workUnitStore.renderSignal,\n 'dynamic \"use cache\"'\n )\n } else if (\n entry === undefined ||\n currentTime > entry.timestamp + entry.expire * 1000 ||\n (workStore.isStaticGeneration &&\n currentTime > entry.timestamp + entry.revalidate * 1000)\n ) {\n // Miss. Generate a new result.\n\n // If the cache entry is stale and we're prerendering, we don't want to use the\n // stale entry since it would unnecessarily need to shorten the lifetime of the\n // prerender. We're not time constrained here so we can re-generated it now.\n\n // We need to run this inside a clean AsyncLocalStorage snapshot so that the cache\n // generation cannot read anything from the context we're currently executing which\n // might include request specific things like cookies() inside a React.cache().\n // Note: It is important that we await at least once before this because it lets us\n // pop out of any stack specific contexts as well - aka \"Sync\" Local Storage.\n\n const [newStream, pendingCacheEntry] = await generateCacheEntry(\n workStore,\n workUnitStore,\n clientReferenceManifest,\n encodedCacheKeyParts,\n fn,\n timeoutError\n )\n\n // When draft mode is enabled, we must not save the cache entry.\n if (!workStore.isDraftMode) {\n let savedCacheEntry\n\n if (prerenderResumeDataCache) {\n // Create a clone that goes into the cache scope memory cache.\n const split = clonePendingCacheEntry(pendingCacheEntry)\n savedCacheEntry = getNthCacheEntry(split, 0)\n prerenderResumeDataCache.cache.set(\n serializedCacheKey,\n getNthCacheEntry(split, 1)\n )\n } else {\n savedCacheEntry = pendingCacheEntry\n }\n\n const promise = cacheHandler.set(\n serializedCacheKey,\n savedCacheEntry\n )\n\n workStore.pendingRevalidateWrites ??= []\n workStore.pendingRevalidateWrites.push(promise)\n }\n\n stream = newStream\n } else {\n propagateCacheLifeAndTags(workUnitStore, entry)\n\n // We want to return this stream, even if it's stale.\n stream = entry.value\n\n // If we have a cache scope, we need to clone the entry and set it on\n // the inner cache scope.\n if (prerenderResumeDataCache) {\n const [entryLeft, entryRight] = cloneCacheEntry(entry)\n if (cacheSignal) {\n stream = createTrackedReadableStream(entryLeft.value, cacheSignal)\n } else {\n stream = entryLeft.value\n }\n\n prerenderResumeDataCache.cache.set(\n serializedCacheKey,\n Promise.resolve(entryRight)\n )\n } else {\n // If we're not regenerating we need to signal that we've finished\n // putting the entry into the cache scope at this point. Otherwise we do\n // that inside generateCacheEntry.\n cacheSignal?.endRead()\n }\n\n if (currentTime > entry.timestamp + entry.revalidate * 1000) {\n // If this is stale, and we're not in a prerender (i.e. this is dynamic render),\n // then we should warm up the cache with a fresh revalidated entry.\n const [ignoredStream, pendingCacheEntry] = await generateCacheEntry(\n workStore,\n undefined, // This is not running within the context of this unit.\n clientReferenceManifest,\n encodedCacheKeyParts,\n fn,\n timeoutError\n )\n\n let savedCacheEntry: Promise<CacheEntry>\n if (prerenderResumeDataCache) {\n const split = clonePendingCacheEntry(pendingCacheEntry)\n savedCacheEntry = getNthCacheEntry(split, 0)\n prerenderResumeDataCache.cache.set(\n serializedCacheKey,\n getNthCacheEntry(split, 1)\n )\n } else {\n savedCacheEntry = pendingCacheEntry\n }\n\n const promise = cacheHandler.set(\n serializedCacheKey,\n savedCacheEntry\n )\n\n if (!workStore.pendingRevalidateWrites) {\n workStore.pendingRevalidateWrites = []\n }\n workStore.pendingRevalidateWrites.push(promise)\n\n await ignoredStream.cancel()\n }\n }\n }\n\n // Logs are replayed even if it's a hit - to ensure we see them on the client eventually.\n // If we didn't then the client wouldn't see the logs if it was seeded from a prewarm that\n // never made it to the client. However, this also means that you see logs even when the\n // cached function isn't actually re-executed. We should instead ensure prewarms always\n // make it to the client. Another issue is that this will cause double logging in the\n // server terminal. Once while generating the cache entry and once when replaying it on\n // the server, which is required to pick it up for replaying again on the client.\n const replayConsoleLogs = true\n\n const serverConsumerManifest = {\n // moduleLoading must be null because we don't want to trigger preloads of ClientReferences\n // to be added to the consumer. Instead, we'll wait for any ClientReference to be emitted\n // which themselves will handle the preloading.\n moduleLoading: null,\n moduleMap: isEdgeRuntime\n ? clientReferenceManifest.edgeRscModuleMapping\n : clientReferenceManifest.rscModuleMapping,\n serverModuleMap: getServerModuleMap(),\n }\n\n return createFromReadableStream(stream, {\n serverConsumerManifest,\n temporaryReferences,\n replayConsoleLogs,\n environmentName: 'Cache',\n })\n },\n }[name]\n\n return React.cache(cachedFn)\n}\n\n/**\n * Calls the given function only when the returned promise is awaited.\n */\nfunction createLazyResult<TResult>(\n fn: () => Promise<TResult>\n): PromiseLike<TResult> {\n let pendingResult: Promise<TResult> | undefined\n\n return {\n then(onfulfilled, onrejected) {\n if (!pendingResult) {\n pendingResult = fn()\n }\n\n return pendingResult.then(onfulfilled, onrejected)\n },\n }\n}\n\nfunction isPageComponent(\n args: any[]\n): args is [UseCachePageComponentProps, undefined] {\n if (args.length !== 2) {\n return false\n }\n\n const [props, ref] = args\n\n return (\n ref === undefined && // server components receive an undefined ref arg\n props !== null &&\n typeof props === 'object' &&\n (props as UseCachePageComponentProps).$$isPageComponent\n )\n}\n\nfunction shouldForceRevalidate(\n workStore: WorkStore,\n workUnitStore: WorkUnitStore | undefined\n): boolean {\n if (workStore.isOnDemandRevalidate || workStore.isDraftMode) {\n return true\n }\n\n if (workStore.dev && workUnitStore) {\n if (workUnitStore.type === 'request') {\n return workUnitStore.headers.get('cache-control') === 'no-cache'\n }\n\n if (workUnitStore.type === 'cache') {\n return workUnitStore.forceRevalidate\n }\n }\n\n return false\n}\n\nfunction shouldDiscardCacheEntry(\n entry: CacheEntry,\n workStore: WorkStore,\n implicitTags: ImplicitTags | undefined\n): boolean {\n // If the cache entry contains revalidated tags that the cache handler might\n // not know about yet, we need to discard it.\n if (entry.tags.some((tag) => isRecentlyRevalidatedTag(tag, workStore))) {\n return true\n }\n\n if (implicitTags) {\n // If the cache entry was created before any of the implicit tags were\n // revalidated last, we also need to discard it.\n if (entry.timestamp <= implicitTags.expiration) {\n return true\n }\n\n // Finally, if any of the implicit tags have been revalidated recently, we\n // also need to discard the cache entry.\n if (\n implicitTags.tags.some((tag) => isRecentlyRevalidatedTag(tag, workStore))\n ) {\n return true\n }\n }\n\n return false\n}\n\nfunction isRecentlyRevalidatedTag(tag: string, workStore: WorkStore): boolean {\n const { previouslyRevalidatedTags, pendingRevalidatedTags } = workStore\n\n // Was the tag previously revalidated (e.g. by a redirecting server action)?\n if (previouslyRevalidatedTags.includes(tag)) {\n return true\n }\n\n // It could also have been revalidated by the currently running server action.\n // In this case the revalidation might not have been propagated to the cache\n // handler yet, so we read it from the pending tags in the work store.\n if (pendingRevalidatedTags?.includes(tag)) {\n return true\n }\n\n return false\n}\n"],"names":["cache","isEdgeRuntime","process","env","NEXT_RUNTIME","generateCacheEntry","workStore","outerWorkUnitStore","clientReferenceManifest","encodedArguments","fn","timeoutError","runInCleanSnapshot","generateCacheEntryWithRestoredWorkStore","workAsyncStorage","run","generateCacheEntryWithCacheContext","cacheLifeProfiles","Error","defaultCacheLife","revalidate","expire","stale","useCacheOrRequestStore","type","undefined","cacheStore","phase","implicitTags","explicitRevalidate","explicitExpire","explicitStale","tags","hmrRefreshHash","getHmrRefreshHash","isHmrRefresh","serverComponentsHmrCache","forceRevalidate","shouldForceRevalidate","draftMode","getDraftModeProviderForCacheScope","workUnitAsyncStorage","generateCacheEntryImpl","propagateCacheLifeAndTags","workUnitStore","entry","outerTags","entryTags","i","length","tag","includes","push","collectResult","savedStream","innerCacheStore","startTime","errors","timer","buffer","reader","getReader","read","done","value","idx","bufferStream","ReadableStream","pull","controller","enqueue","error","close","collectedTags","collectedRevalidate","collectedExpire","collectedStale","timestamp","cacheSignal","endRead","clearTimeout","temporaryReferences","createServerTemporaryReferenceSet","args","decodeReply","getServerModuleMap","decodeReplyFromAsyncIterable","Symbol","asyncIterator","Promise","resolve","renderSignal","aborted","addEventListener","once","performance","timeOrigin","now","resultPromise","createLazyResult","apply","AbortController","setTimeout","abort","stream","renderToReadableStream","clientModules","environmentName","signal","onError","digest","getDigestForWellKnownError","NODE_ENV","console","returnStream","tee","promiseOfCacheEntry","cloneCacheEntry","streamA","streamB","clonedEntry","clonePendingCacheEntry","pendingCacheEntry","getNthCacheEntry","split","encodeFormData","formData","result","key","toString","stringValue","arrayBuffer","byteLength","String","fromCodePoint","Uint16Array","Uint8Array","createTrackedReadableStream","kind","id","boundArgsLength","cacheHandler","getCacheHandler","UseCacheTimeoutError","captureStackTrace","name","cachedFn","getStore","getClientReferenceManifestForRsc","buildId","hangingInputAbortSignal","createHangingInputAbortSignal","dynamicIOEnabled","isPageComponent","params","searchParams","originalFn","serializedParams","makeErroringExoticSearchParamsForUseCache","InvariantError","JSON","stringify","encryptedBoundArgs","shift","boundArgs","decryptActionBoundArgs","Array","isArray","unshift","createClientTemporaryReferenceSet","cacheKeyParts","encodedCacheKeyParts","encodeReply","serializedCacheKey","prerenderResumeDataCache","getPrerenderResumeDataCache","renderResumeDataCache","getRenderResumeDataCache","beginRead","cachedEntry","get","existingEntry","DYNAMIC_EXPIRE","makeHangingPromise","shouldDiscardCacheEntry","currentTime","isStaticGeneration","newStream","isDraftMode","savedCacheEntry","set","promise","pendingRevalidateWrites","entryLeft","entryRight","ignoredStream","cancel","replayConsoleLogs","serverConsumerManifest","moduleLoading","moduleMap","edgeRscModuleMapping","rscModuleMapping","serverModuleMap","createFromReadableStream","React","pendingResult","then","onfulfilled","onrejected","props","ref","$$isPageComponent","isOnDemandRevalidate","dev","headers","some","isRecentlyRevalidatedTag","expiration","previouslyRevalidatedTags","pendingRevalidatedTags"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/server/use-cache/use-cache-wrapper.ts"],"sourcesContent":["import type { DeepReadonly } from '../../shared/lib/deep-readonly'\n/* eslint-disable import/no-extraneous-dependencies */\nimport {\n renderToReadableStream,\n decodeReply,\n decodeReplyFromAsyncIterable,\n createTemporaryReferenceSet as createServerTemporaryReferenceSet,\n} from 'react-server-dom-webpack/server.edge'\n/* eslint-disable import/no-extraneous-dependencies */\nimport {\n createFromReadableStream,\n encodeReply,\n createTemporaryReferenceSet as createClientTemporaryReferenceSet,\n} from 'react-server-dom-webpack/client.edge'\n\nimport type { WorkStore } from '../app-render/work-async-storage.external'\nimport { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport type {\n UseCacheStore,\n WorkUnitStore,\n} from '../app-render/work-unit-async-storage.external'\nimport {\n getHmrRefreshHash,\n getRenderResumeDataCache,\n getPrerenderResumeDataCache,\n workUnitAsyncStorage,\n getDraftModeProviderForCacheScope,\n} from '../app-render/work-unit-async-storage.external'\nimport { runInCleanSnapshot } from '../app-render/clean-async-snapshot.external'\n\nimport { makeHangingPromise } from '../dynamic-rendering-utils'\n\nimport type { ClientReferenceManifestForRsc } from '../../build/webpack/plugins/flight-manifest-plugin'\n\nimport {\n getClientReferenceManifestForRsc,\n getServerModuleMap,\n} from '../app-render/encryption-utils'\nimport type { CacheEntry } from '../lib/cache-handlers/types'\nimport type { CacheSignal } from '../app-render/cache-signal'\nimport { decryptActionBoundArgs } from '../app-render/encryption'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport { getDigestForWellKnownError } from '../app-render/create-error-handler'\nimport { DYNAMIC_EXPIRE } from './constants'\nimport { getCacheHandler } from './handlers'\nimport { UseCacheTimeoutError } from './use-cache-errors'\nimport { createHangingInputAbortSignal } from '../app-render/dynamic-rendering'\nimport {\n makeErroringExoticSearchParamsForUseCache,\n type SearchParams,\n} from '../request/search-params'\nimport type { Params } from '../request/params'\nimport React from 'react'\nimport type { ImplicitTags } from '../lib/implicit-tags'\n\ntype CacheKeyParts =\n | [buildId: string, id: string, args: unknown[]]\n | [buildId: string, id: string, args: unknown[], hmrRefreshHash: string]\n\nexport interface UseCachePageComponentProps {\n params: Promise<Params>\n searchParams: Promise<SearchParams>\n $$isPageComponent: true\n}\n\nconst isEdgeRuntime = process.env.NEXT_RUNTIME === 'edge'\n\nfunction generateCacheEntry(\n workStore: WorkStore,\n outerWorkUnitStore: WorkUnitStore | undefined,\n clientReferenceManifest: DeepReadonly<ClientReferenceManifestForRsc>,\n encodedArguments: FormData | string,\n fn: (...args: unknown[]) => Promise<unknown>,\n timeoutError: UseCacheTimeoutError\n): Promise<[ReadableStream, Promise<CacheEntry>]> {\n // We need to run this inside a clean AsyncLocalStorage snapshot so that the cache\n // generation cannot read anything from the context we're currently executing which\n // might include request specific things like cookies() inside a React.cache().\n // Note: It is important that we await at least once before this because it lets us\n // pop out of any stack specific contexts as well - aka \"Sync\" Local Storage.\n return runInCleanSnapshot(\n generateCacheEntryWithRestoredWorkStore,\n workStore,\n outerWorkUnitStore,\n clientReferenceManifest,\n encodedArguments,\n fn,\n timeoutError\n )\n}\n\nfunction generateCacheEntryWithRestoredWorkStore(\n workStore: WorkStore,\n outerWorkUnitStore: WorkUnitStore | undefined,\n clientReferenceManifest: DeepReadonly<ClientReferenceManifestForRsc>,\n encodedArguments: FormData | string,\n fn: (...args: unknown[]) => Promise<unknown>,\n timeoutError: UseCacheTimeoutError\n) {\n // Since we cleared the AsyncLocalStorage we need to restore the workStore.\n // Note: We explicitly don't restore the RequestStore nor the PrerenderStore.\n // We don't want any request specific information leaking an we don't want to create a\n // bloated fake request mock for every cache call. So any feature that currently lives\n // in RequestStore but should be available to Caches need to move to WorkStore.\n // PrerenderStore is not needed inside the cache scope because the outer most one will\n // be the one to report its result to the outer Prerender.\n return workAsyncStorage.run(\n workStore,\n generateCacheEntryWithCacheContext,\n workStore,\n outerWorkUnitStore,\n clientReferenceManifest,\n encodedArguments,\n fn,\n timeoutError\n )\n}\n\nfunction generateCacheEntryWithCacheContext(\n workStore: WorkStore,\n outerWorkUnitStore: WorkUnitStore | undefined,\n clientReferenceManifest: DeepReadonly<ClientReferenceManifestForRsc>,\n encodedArguments: FormData | string,\n fn: (...args: unknown[]) => Promise<unknown>,\n timeoutError: UseCacheTimeoutError\n) {\n if (!workStore.cacheLifeProfiles) {\n throw new Error(\n 'cacheLifeProfiles should always be provided. This is a bug in Next.js.'\n )\n }\n const defaultCacheLife = workStore.cacheLifeProfiles['default']\n if (\n !defaultCacheLife ||\n defaultCacheLife.revalidate == null ||\n defaultCacheLife.expire == null ||\n defaultCacheLife.stale == null\n ) {\n throw new Error(\n 'A default cacheLife profile must always be provided. This is a bug in Next.js.'\n )\n }\n\n const useCacheOrRequestStore =\n outerWorkUnitStore?.type === 'request' ||\n outerWorkUnitStore?.type === 'cache'\n ? outerWorkUnitStore\n : undefined\n\n // Initialize the Store for this Cache entry.\n const cacheStore: UseCacheStore = {\n type: 'cache',\n phase: 'render',\n implicitTags: outerWorkUnitStore?.implicitTags,\n revalidate: defaultCacheLife.revalidate,\n expire: defaultCacheLife.expire,\n stale: defaultCacheLife.stale,\n explicitRevalidate: undefined,\n explicitExpire: undefined,\n explicitStale: undefined,\n tags: null,\n hmrRefreshHash:\n outerWorkUnitStore && getHmrRefreshHash(workStore, outerWorkUnitStore),\n isHmrRefresh: useCacheOrRequestStore?.isHmrRefresh ?? false,\n serverComponentsHmrCache: useCacheOrRequestStore?.serverComponentsHmrCache,\n forceRevalidate: shouldForceRevalidate(workStore, outerWorkUnitStore),\n draftMode:\n outerWorkUnitStore &&\n getDraftModeProviderForCacheScope(workStore, outerWorkUnitStore),\n }\n\n return workUnitAsyncStorage.run(\n cacheStore,\n generateCacheEntryImpl,\n outerWorkUnitStore,\n cacheStore,\n clientReferenceManifest,\n encodedArguments,\n fn,\n timeoutError\n )\n}\n\nfunction propagateCacheLifeAndTags(\n workUnitStore: WorkUnitStore | undefined,\n entry: CacheEntry\n): void {\n if (\n workUnitStore &&\n (workUnitStore.type === 'cache' ||\n workUnitStore.type === 'prerender' ||\n workUnitStore.type === 'prerender-ppr' ||\n workUnitStore.type === 'prerender-legacy')\n ) {\n // Propagate tags and revalidate upwards\n const outerTags = workUnitStore.tags ?? (workUnitStore.tags = [])\n const entryTags = entry.tags\n for (let i = 0; i < entryTags.length; i++) {\n const tag = entryTags[i]\n if (!outerTags.includes(tag)) {\n outerTags.push(tag)\n }\n }\n if (workUnitStore.stale > entry.stale) {\n workUnitStore.stale = entry.stale\n }\n if (workUnitStore.revalidate > entry.revalidate) {\n workUnitStore.revalidate = entry.revalidate\n }\n if (workUnitStore.expire > entry.expire) {\n workUnitStore.expire = entry.expire\n }\n }\n}\n\nasync function collectResult(\n savedStream: ReadableStream,\n outerWorkUnitStore: WorkUnitStore | undefined,\n innerCacheStore: UseCacheStore,\n startTime: number,\n errors: Array<unknown>, // This is a live array that gets pushed into.,\n timer: any\n): Promise<CacheEntry> {\n // We create a buffered stream that collects all chunks until the end to\n // ensure that RSC has finished rendering and therefore we have collected\n // all tags. In the future the RSC API might allow for the equivalent of\n // the allReady Promise that exists on SSR streams.\n //\n // If something errored or rejected anywhere in the render, we close\n // the stream as errored. This lets a CacheHandler choose to save the\n // partial result up until that point for future hits for a while to avoid\n // unnecessary retries or not to retry. We use the end of the stream for\n // this to avoid another complicated side-channel. A receiver has to consider\n // that the stream might also error for other reasons anyway such as losing\n // connection.\n\n const buffer: any[] = []\n const reader = savedStream.getReader()\n for (let entry; !(entry = await reader.read()).done; ) {\n buffer.push(entry.value)\n }\n\n let idx = 0\n const bufferStream = new ReadableStream({\n pull(controller) {\n if (idx < buffer.length) {\n controller.enqueue(buffer[idx++])\n } else if (errors.length > 0) {\n // TODO: Should we use AggregateError here?\n controller.error(errors[0])\n } else {\n controller.close()\n }\n },\n })\n\n const collectedTags = innerCacheStore.tags\n // If cacheLife() was used to set an explicit revalidate time we use that.\n // Otherwise, we use the lowest of all inner fetch()/unstable_cache() or nested \"use cache\".\n // If they're lower than our default.\n const collectedRevalidate =\n innerCacheStore.explicitRevalidate !== undefined\n ? innerCacheStore.explicitRevalidate\n : innerCacheStore.revalidate\n const collectedExpire =\n innerCacheStore.explicitExpire !== undefined\n ? innerCacheStore.explicitExpire\n : innerCacheStore.expire\n const collectedStale =\n innerCacheStore.explicitStale !== undefined\n ? innerCacheStore.explicitStale\n : innerCacheStore.stale\n\n const entry: CacheEntry = {\n value: bufferStream,\n timestamp: startTime,\n revalidate: collectedRevalidate,\n expire: collectedExpire,\n stale: collectedStale,\n tags: collectedTags === null ? [] : collectedTags,\n }\n // Propagate tags/revalidate to the parent context.\n propagateCacheLifeAndTags(outerWorkUnitStore, entry)\n\n const cacheSignal =\n outerWorkUnitStore && outerWorkUnitStore.type === 'prerender'\n ? outerWorkUnitStore.cacheSignal\n : null\n if (cacheSignal) {\n cacheSignal.endRead()\n }\n\n if (timer !== undefined) {\n clearTimeout(timer)\n }\n\n return entry\n}\n\nasync function generateCacheEntryImpl(\n outerWorkUnitStore: WorkUnitStore | undefined,\n innerCacheStore: UseCacheStore,\n clientReferenceManifest: DeepReadonly<ClientReferenceManifestForRsc>,\n encodedArguments: FormData | string,\n fn: (...args: unknown[]) => Promise<unknown>,\n timeoutError: UseCacheTimeoutError\n): Promise<[ReadableStream, Promise<CacheEntry>]> {\n const temporaryReferences = createServerTemporaryReferenceSet()\n\n const [, , args] =\n typeof encodedArguments === 'string'\n ? await decodeReply<CacheKeyParts>(\n encodedArguments,\n getServerModuleMap(),\n { temporaryReferences }\n )\n : await decodeReplyFromAsyncIterable<CacheKeyParts>(\n {\n async *[Symbol.asyncIterator]() {\n for (const entry of encodedArguments) {\n yield entry\n }\n\n // The encoded arguments might contain hanging promises. In this\n // case we don't want to reject with \"Error: Connection closed.\",\n // so we intentionally keep the iterable alive. This is similar to\n // the halting trick that we do while rendering.\n if (outerWorkUnitStore?.type === 'prerender') {\n await new Promise<void>((resolve) => {\n if (outerWorkUnitStore.renderSignal.aborted) {\n resolve()\n } else {\n outerWorkUnitStore.renderSignal.addEventListener(\n 'abort',\n () => resolve(),\n { once: true }\n )\n }\n })\n }\n },\n },\n getServerModuleMap(),\n { temporaryReferences }\n )\n\n // Track the timestamp when we started computing the result.\n const startTime = performance.timeOrigin + performance.now()\n\n // Invoke the inner function to load a new result. We delay the invocation\n // though, until React awaits the promise so that React's request store (ALS)\n // is available when the function is invoked. This allows us, for example, to\n // capture logs so that we can later replay them.\n const resultPromise = createLazyResult(() => fn.apply(null, args))\n\n let errors: Array<unknown> = []\n\n let timer = undefined\n const controller = new AbortController()\n if (outerWorkUnitStore?.type === 'prerender') {\n // If we're prerendering, we give you 50 seconds to fill a cache entry.\n // Otherwise we assume you stalled on hanging input and de-opt. This needs\n // to be lower than just the general timeout of 60 seconds.\n timer = setTimeout(() => {\n controller.abort(timeoutError)\n }, 50000)\n }\n\n const stream = renderToReadableStream(\n resultPromise,\n clientReferenceManifest.clientModules,\n {\n environmentName: 'Cache',\n signal: controller.signal,\n temporaryReferences,\n // In the \"Cache\" environment, we only need to make sure that the error\n // digests are handled correctly. Error formatting and reporting is not\n // necessary here; the errors are encoded in the stream, and will be\n // reported in the \"Server\" environment.\n onError: (error) => {\n const digest = getDigestForWellKnownError(error)\n\n if (digest) {\n return digest\n }\n\n if (process.env.NODE_ENV !== 'development') {\n // TODO: For now we're also reporting the error here, because in\n // production, the \"Server\" environment will only get the obfuscated\n // error (created by the Flight Client in the cache wrapper).\n console.error(error)\n }\n\n if (error === timeoutError) {\n // The timeout error already aborted the whole stream. We don't need\n // to also push this error into the `errors` array.\n return timeoutError.digest\n }\n\n errors.push(error)\n },\n }\n )\n\n const [returnStream, savedStream] = stream.tee()\n\n const promiseOfCacheEntry = collectResult(\n savedStream,\n outerWorkUnitStore,\n innerCacheStore,\n startTime,\n errors,\n timer\n )\n\n // Return the stream as we're creating it. This means that if it ends up\n // erroring we cannot return a stale-while-error version but it allows\n // streaming back the result earlier.\n return [returnStream, promiseOfCacheEntry]\n}\n\nfunction cloneCacheEntry(entry: CacheEntry): [CacheEntry, CacheEntry] {\n const [streamA, streamB] = entry.value.tee()\n entry.value = streamA\n const clonedEntry: CacheEntry = {\n value: streamB,\n timestamp: entry.timestamp,\n revalidate: entry.revalidate,\n expire: entry.expire,\n stale: entry.stale,\n tags: entry.tags,\n }\n return [entry, clonedEntry]\n}\n\nasync function clonePendingCacheEntry(\n pendingCacheEntry: Promise<CacheEntry>\n): Promise<[CacheEntry, CacheEntry]> {\n const entry = await pendingCacheEntry\n return cloneCacheEntry(entry)\n}\n\nasync function getNthCacheEntry(\n split: Promise<[CacheEntry, CacheEntry]>,\n i: number\n): Promise<CacheEntry> {\n return (await split)[i]\n}\n\nasync function encodeFormData(formData: FormData): Promise<string> {\n let result = ''\n for (let [key, value] of formData) {\n // We don't need this key to be serializable but from a security perspective it should not be\n // possible to generate a string that looks the same from a different structure. To ensure this\n // we need a delimeter between fields but just using a delimeter is not enough since a string\n // might contain that delimeter. We use the length of each field as the delimeter to avoid\n // escaping the values.\n result += key.length.toString(16) + ':' + key\n let stringValue\n if (typeof value === 'string') {\n stringValue = value\n } else {\n // The FormData might contain binary data that is not valid UTF-8 so this cache\n // key may generate a UCS-2 string. Passing this to another service needs to be\n // aware that the key might not be compatible.\n const arrayBuffer = await value.arrayBuffer()\n if (arrayBuffer.byteLength % 2 === 0) {\n stringValue = String.fromCodePoint(...new Uint16Array(arrayBuffer))\n } else {\n stringValue =\n String.fromCodePoint(\n ...new Uint16Array(arrayBuffer, 0, (arrayBuffer.byteLength - 1) / 2)\n ) +\n String.fromCodePoint(\n new Uint8Array(arrayBuffer, arrayBuffer.byteLength - 1, 1)[0]\n )\n }\n }\n result += stringValue.length.toString(16) + ':' + stringValue\n }\n return result\n}\n\nfunction createTrackedReadableStream(\n stream: ReadableStream,\n cacheSignal: CacheSignal\n) {\n const reader = stream.getReader()\n return new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read()\n if (done) {\n controller.close()\n cacheSignal.endRead()\n } else {\n controller.enqueue(value)\n }\n },\n })\n}\n\nexport function cache(\n kind: string,\n id: string,\n boundArgsLength: number,\n fn: (...args: unknown[]) => Promise<unknown>\n) {\n const cacheHandler = getCacheHandler(kind)\n if (cacheHandler === undefined) {\n throw new Error('Unknown cache handler: ' + kind)\n }\n\n // Capture the timeout error here to ensure a useful stack.\n const timeoutError = new UseCacheTimeoutError()\n Error.captureStackTrace(timeoutError, cache)\n\n const name = fn.name\n const cachedFn = {\n [name]: async function (...args: any[]) {\n const workStore = workAsyncStorage.getStore()\n if (workStore === undefined) {\n throw new Error(\n '\"use cache\" cannot be used outside of App Router. Expected a WorkStore.'\n )\n }\n\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n // Get the clientReferenceManifest while we're still in the outer Context.\n // In case getClientReferenceManifestSingleton is implemented using AsyncLocalStorage.\n const clientReferenceManifest = getClientReferenceManifestForRsc()\n\n // Because the Action ID is not yet unique per implementation of that Action we can't\n // safely reuse the results across builds yet. In the meantime we add the buildId to the\n // arguments as a seed to ensure they're not reused. Remove this once Action IDs hash\n // the implementation.\n const buildId = workStore.buildId\n\n // In dev mode, when the HMR refresh hash is set, we include it in the\n // cache key. This ensures that cache entries are not reused when server\n // components have been edited. This is a very coarse approach. But it's\n // also only a temporary solution until Action IDs are unique per\n // implementation. Remove this once Action IDs hash the implementation.\n const hmrRefreshHash =\n workUnitStore && getHmrRefreshHash(workStore, workUnitStore)\n\n const hangingInputAbortSignal =\n workUnitStore?.type === 'prerender'\n ? createHangingInputAbortSignal(workUnitStore)\n : undefined\n\n // When dynamicIO is not enabled, we can not encode searchParams as\n // hanging promises. To still avoid unused search params from making a\n // page dynamic, we overwrite them here with a promise that resolves to an\n // empty object, while also overwriting the to-be-invoked function for\n // generating a cache entry with a function that creates an erroring\n // searchParams prop before invoking the original function. This ensures\n // that used searchParams inside of cached functions would still yield an\n // error.\n if (!workStore.dynamicIOEnabled && isPageComponent(args)) {\n const [{ params, searchParams }] = args\n // Overwrite the props to omit $$isPageComponent.\n args = [{ params, searchParams }]\n\n const originalFn = fn\n\n fn = {\n [name]: async ({\n params: serializedParams,\n }: Omit<UseCachePageComponentProps, '$$isPageComponent'>) =>\n originalFn.apply(null, [\n {\n params: serializedParams,\n searchParams:\n makeErroringExoticSearchParamsForUseCache(workStore),\n },\n ]),\n }[name] as (...args: unknown[]) => Promise<unknown>\n }\n\n if (boundArgsLength > 0) {\n if (args.length === 0) {\n throw new InvariantError(\n `Expected the \"use cache\" function ${JSON.stringify(fn.name)} to receive its encrypted bound arguments as the first argument.`\n )\n }\n\n const encryptedBoundArgs = args.shift()\n const boundArgs = await decryptActionBoundArgs(id, encryptedBoundArgs)\n\n if (!Array.isArray(boundArgs)) {\n throw new InvariantError(\n `Expected the bound arguments of \"use cache\" function ${JSON.stringify(fn.name)} to deserialize into an array, got ${typeof boundArgs} instead.`\n )\n }\n\n if (boundArgsLength !== boundArgs.length) {\n throw new InvariantError(\n `Expected the \"use cache\" function ${JSON.stringify(fn.name)} to receive ${boundArgsLength} bound arguments, got ${boundArgs.length} instead.`\n )\n }\n\n args.unshift(boundArgs)\n }\n\n const temporaryReferences = createClientTemporaryReferenceSet()\n\n const cacheKeyParts: CacheKeyParts = hmrRefreshHash\n ? [buildId, id, args, hmrRefreshHash]\n : [buildId, id, args]\n\n const encodedCacheKeyParts: FormData | string = await encodeReply(\n cacheKeyParts,\n { temporaryReferences, signal: hangingInputAbortSignal }\n )\n\n const serializedCacheKey =\n typeof encodedCacheKeyParts === 'string'\n ? // Fast path for the simple case for simple inputs. We let the CacheHandler\n // Convert it to an ArrayBuffer if it wants to.\n encodedCacheKeyParts\n : await encodeFormData(encodedCacheKeyParts)\n\n let stream: undefined | ReadableStream = undefined\n\n // Get an immutable and mutable versions of the resume data cache.\n const prerenderResumeDataCache = workUnitStore\n ? getPrerenderResumeDataCache(workUnitStore)\n : null\n const renderResumeDataCache = workUnitStore\n ? getRenderResumeDataCache(workUnitStore)\n : null\n\n if (renderResumeDataCache) {\n const cacheSignal =\n workUnitStore && workUnitStore.type === 'prerender'\n ? workUnitStore.cacheSignal\n : null\n\n if (cacheSignal) {\n cacheSignal.beginRead()\n }\n const cachedEntry = renderResumeDataCache.cache.get(serializedCacheKey)\n if (cachedEntry !== undefined) {\n const existingEntry = await cachedEntry\n propagateCacheLifeAndTags(workUnitStore, existingEntry)\n if (\n workUnitStore !== undefined &&\n workUnitStore.type === 'prerender' &&\n existingEntry !== undefined &&\n (existingEntry.revalidate === 0 ||\n existingEntry.expire < DYNAMIC_EXPIRE)\n ) {\n // In a Dynamic I/O prerender, if the cache entry has revalidate: 0 or if the\n // expire time is under 5 minutes, then we consider this cache entry dynamic\n // as it's not worth generating static pages for such data. It's better to leave\n // a PPR hole that can be filled in dynamically with a potentially cached entry.\n if (cacheSignal) {\n cacheSignal.endRead()\n }\n return makeHangingPromise(\n workUnitStore.renderSignal,\n 'dynamic \"use cache\"'\n )\n }\n const [streamA, streamB] = existingEntry.value.tee()\n existingEntry.value = streamB\n\n if (cacheSignal) {\n // When we have a cacheSignal we need to block on reading the cache\n // entry before ending the read.\n stream = createTrackedReadableStream(streamA, cacheSignal)\n } else {\n stream = streamA\n }\n } else {\n if (cacheSignal) {\n cacheSignal.endRead()\n }\n }\n }\n\n if (stream === undefined) {\n const cacheSignal =\n workUnitStore && workUnitStore.type === 'prerender'\n ? workUnitStore.cacheSignal\n : null\n if (cacheSignal) {\n // Either the cache handler or the generation can be using I/O at this point.\n // We need to track when they start and when they complete.\n cacheSignal.beginRead()\n }\n\n const implicitTags = workUnitStore?.implicitTags\n const forceRevalidate = shouldForceRevalidate(workStore, workUnitStore)\n\n let entry = forceRevalidate\n ? undefined\n : 'getExpiration' in cacheHandler\n ? await cacheHandler.get(serializedCacheKey)\n : // Legacy cache handlers require implicit tags to be passed in,\n // instead of checking their staleness here, as we do for modern\n // cache handlers (see below).\n await cacheHandler.get(\n serializedCacheKey,\n implicitTags?.tags ?? []\n )\n\n if (entry && shouldDiscardCacheEntry(entry, workStore, implicitTags)) {\n entry = undefined\n }\n\n const currentTime = performance.timeOrigin + performance.now()\n if (\n workUnitStore !== undefined &&\n workUnitStore.type === 'prerender' &&\n entry !== undefined &&\n (entry.revalidate === 0 || entry.expire < DYNAMIC_EXPIRE)\n ) {\n // In a Dynamic I/O prerender, if the cache entry has revalidate: 0 or if the\n // expire time is under 5 minutes, then we consider this cache entry dynamic\n // as it's not worth generating static pages for such data. It's better to leave\n // a PPR hole that can be filled in dynamically with a potentially cached entry.\n if (cacheSignal) {\n cacheSignal.endRead()\n }\n\n return makeHangingPromise(\n workUnitStore.renderSignal,\n 'dynamic \"use cache\"'\n )\n } else if (\n entry === undefined ||\n currentTime > entry.timestamp + entry.expire * 1000 ||\n (workStore.isStaticGeneration &&\n currentTime > entry.timestamp + entry.revalidate * 1000)\n ) {\n // Miss. Generate a new result.\n\n // If the cache entry is stale and we're prerendering, we don't want to use the\n // stale entry since it would unnecessarily need to shorten the lifetime of the\n // prerender. We're not time constrained here so we can re-generated it now.\n\n // We need to run this inside a clean AsyncLocalStorage snapshot so that the cache\n // generation cannot read anything from the context we're currently executing which\n // might include request specific things like cookies() inside a React.cache().\n // Note: It is important that we await at least once before this because it lets us\n // pop out of any stack specific contexts as well - aka \"Sync\" Local Storage.\n\n const [newStream, pendingCacheEntry] = await generateCacheEntry(\n workStore,\n workUnitStore,\n clientReferenceManifest,\n encodedCacheKeyParts,\n fn,\n timeoutError\n )\n\n // When draft mode is enabled, we must not save the cache entry.\n if (!workStore.isDraftMode) {\n let savedCacheEntry\n\n if (prerenderResumeDataCache) {\n // Create a clone that goes into the cache scope memory cache.\n const split = clonePendingCacheEntry(pendingCacheEntry)\n savedCacheEntry = getNthCacheEntry(split, 0)\n prerenderResumeDataCache.cache.set(\n serializedCacheKey,\n getNthCacheEntry(split, 1)\n )\n } else {\n savedCacheEntry = pendingCacheEntry\n }\n\n const promise = cacheHandler.set(\n serializedCacheKey,\n savedCacheEntry\n )\n\n workStore.pendingRevalidateWrites ??= []\n workStore.pendingRevalidateWrites.push(promise)\n }\n\n stream = newStream\n } else {\n propagateCacheLifeAndTags(workUnitStore, entry)\n\n // We want to return this stream, even if it's stale.\n stream = entry.value\n\n // If we have a cache scope, we need to clone the entry and set it on\n // the inner cache scope.\n if (prerenderResumeDataCache) {\n const [entryLeft, entryRight] = cloneCacheEntry(entry)\n if (cacheSignal) {\n stream = createTrackedReadableStream(entryLeft.value, cacheSignal)\n } else {\n stream = entryLeft.value\n }\n\n prerenderResumeDataCache.cache.set(\n serializedCacheKey,\n Promise.resolve(entryRight)\n )\n } else {\n // If we're not regenerating we need to signal that we've finished\n // putting the entry into the cache scope at this point. Otherwise we do\n // that inside generateCacheEntry.\n cacheSignal?.endRead()\n }\n\n if (currentTime > entry.timestamp + entry.revalidate * 1000) {\n // If this is stale, and we're not in a prerender (i.e. this is dynamic render),\n // then we should warm up the cache with a fresh revalidated entry.\n const [ignoredStream, pendingCacheEntry] = await generateCacheEntry(\n workStore,\n undefined, // This is not running within the context of this unit.\n clientReferenceManifest,\n encodedCacheKeyParts,\n fn,\n timeoutError\n )\n\n let savedCacheEntry: Promise<CacheEntry>\n if (prerenderResumeDataCache) {\n const split = clonePendingCacheEntry(pendingCacheEntry)\n savedCacheEntry = getNthCacheEntry(split, 0)\n prerenderResumeDataCache.cache.set(\n serializedCacheKey,\n getNthCacheEntry(split, 1)\n )\n } else {\n savedCacheEntry = pendingCacheEntry\n }\n\n const promise = cacheHandler.set(\n serializedCacheKey,\n savedCacheEntry\n )\n\n if (!workStore.pendingRevalidateWrites) {\n workStore.pendingRevalidateWrites = []\n }\n workStore.pendingRevalidateWrites.push(promise)\n\n await ignoredStream.cancel()\n }\n }\n }\n\n // Logs are replayed even if it's a hit - to ensure we see them on the client eventually.\n // If we didn't then the client wouldn't see the logs if it was seeded from a prewarm that\n // never made it to the client. However, this also means that you see logs even when the\n // cached function isn't actually re-executed. We should instead ensure prewarms always\n // make it to the client. Another issue is that this will cause double logging in the\n // server terminal. Once while generating the cache entry and once when replaying it on\n // the server, which is required to pick it up for replaying again on the client.\n const replayConsoleLogs = true\n\n const serverConsumerManifest = {\n // moduleLoading must be null because we don't want to trigger preloads of ClientReferences\n // to be added to the consumer. Instead, we'll wait for any ClientReference to be emitted\n // which themselves will handle the preloading.\n moduleLoading: null,\n moduleMap: isEdgeRuntime\n ? clientReferenceManifest.edgeRscModuleMapping\n : clientReferenceManifest.rscModuleMapping,\n serverModuleMap: getServerModuleMap(),\n }\n\n return createFromReadableStream(stream, {\n serverConsumerManifest,\n temporaryReferences,\n replayConsoleLogs,\n environmentName: 'Cache',\n })\n },\n }[name]\n\n return React.cache(cachedFn)\n}\n\n/**\n * Calls the given function only when the returned promise is awaited.\n */\nfunction createLazyResult<TResult>(\n fn: () => Promise<TResult>\n): PromiseLike<TResult> {\n let pendingResult: Promise<TResult> | undefined\n\n return {\n then(onfulfilled, onrejected) {\n if (!pendingResult) {\n pendingResult = fn()\n }\n\n return pendingResult.then(onfulfilled, onrejected)\n },\n }\n}\n\nfunction isPageComponent(\n args: any[]\n): args is [UseCachePageComponentProps, undefined] {\n if (args.length !== 2) {\n return false\n }\n\n const [props, ref] = args\n\n return (\n ref === undefined && // server components receive an undefined ref arg\n props !== null &&\n typeof props === 'object' &&\n (props as UseCachePageComponentProps).$$isPageComponent\n )\n}\n\nfunction shouldForceRevalidate(\n workStore: WorkStore,\n workUnitStore: WorkUnitStore | undefined\n): boolean {\n if (workStore.isOnDemandRevalidate || workStore.isDraftMode) {\n return true\n }\n\n if (workStore.dev && workUnitStore) {\n if (workUnitStore.type === 'request') {\n return workUnitStore.headers.get('cache-control') === 'no-cache'\n }\n\n if (workUnitStore.type === 'cache') {\n return workUnitStore.forceRevalidate\n }\n }\n\n return false\n}\n\nfunction shouldDiscardCacheEntry(\n entry: CacheEntry,\n workStore: WorkStore,\n implicitTags: ImplicitTags | undefined\n): boolean {\n // If the cache entry contains revalidated tags that the cache handler might\n // not know about yet, we need to discard it.\n if (entry.tags.some((tag) => isRecentlyRevalidatedTag(tag, workStore))) {\n return true\n }\n\n if (implicitTags) {\n // If the cache entry was created before any of the implicit tags were\n // revalidated last, we also need to discard it.\n if (entry.timestamp <= implicitTags.expiration) {\n return true\n }\n\n // Finally, if any of the implicit tags have been revalidated recently, we\n // also need to discard the cache entry.\n if (\n implicitTags.tags.some((tag) => isRecentlyRevalidatedTag(tag, workStore))\n ) {\n return true\n }\n }\n\n return false\n}\n\nfunction isRecentlyRevalidatedTag(tag: string, workStore: WorkStore): boolean {\n const { previouslyRevalidatedTags, pendingRevalidatedTags } = workStore\n\n // Was the tag previously revalidated (e.g. by a redirecting server action)?\n if (previouslyRevalidatedTags.includes(tag)) {\n return true\n }\n\n // It could also have been revalidated by the currently running server action.\n // In this case the revalidation might not have been propagated to the cache\n // handler yet, so we read it from the pending tags in the work store.\n if (pendingRevalidatedTags?.includes(tag)) {\n return true\n }\n\n return false\n}\n"],"names":["cache","isEdgeRuntime","process","env","NEXT_RUNTIME","generateCacheEntry","workStore","outerWorkUnitStore","clientReferenceManifest","encodedArguments","fn","timeoutError","runInCleanSnapshot","generateCacheEntryWithRestoredWorkStore","workAsyncStorage","run","generateCacheEntryWithCacheContext","cacheLifeProfiles","Error","defaultCacheLife","revalidate","expire","stale","useCacheOrRequestStore","type","undefined","cacheStore","phase","implicitTags","explicitRevalidate","explicitExpire","explicitStale","tags","hmrRefreshHash","getHmrRefreshHash","isHmrRefresh","serverComponentsHmrCache","forceRevalidate","shouldForceRevalidate","draftMode","getDraftModeProviderForCacheScope","workUnitAsyncStorage","generateCacheEntryImpl","propagateCacheLifeAndTags","workUnitStore","entry","outerTags","entryTags","i","length","tag","includes","push","collectResult","savedStream","innerCacheStore","startTime","errors","timer","buffer","reader","getReader","read","done","value","idx","bufferStream","ReadableStream","pull","controller","enqueue","error","close","collectedTags","collectedRevalidate","collectedExpire","collectedStale","timestamp","cacheSignal","endRead","clearTimeout","temporaryReferences","createServerTemporaryReferenceSet","args","decodeReply","getServerModuleMap","decodeReplyFromAsyncIterable","Symbol","asyncIterator","Promise","resolve","renderSignal","aborted","addEventListener","once","performance","timeOrigin","now","resultPromise","createLazyResult","apply","AbortController","setTimeout","abort","stream","renderToReadableStream","clientModules","environmentName","signal","onError","digest","getDigestForWellKnownError","NODE_ENV","console","returnStream","tee","promiseOfCacheEntry","cloneCacheEntry","streamA","streamB","clonedEntry","clonePendingCacheEntry","pendingCacheEntry","getNthCacheEntry","split","encodeFormData","formData","result","key","toString","stringValue","arrayBuffer","byteLength","String","fromCodePoint","Uint16Array","Uint8Array","createTrackedReadableStream","kind","id","boundArgsLength","cacheHandler","getCacheHandler","UseCacheTimeoutError","captureStackTrace","name","cachedFn","getStore","getClientReferenceManifestForRsc","buildId","hangingInputAbortSignal","createHangingInputAbortSignal","dynamicIOEnabled","isPageComponent","params","searchParams","originalFn","serializedParams","makeErroringExoticSearchParamsForUseCache","InvariantError","JSON","stringify","encryptedBoundArgs","shift","boundArgs","decryptActionBoundArgs","Array","isArray","unshift","createClientTemporaryReferenceSet","cacheKeyParts","encodedCacheKeyParts","encodeReply","serializedCacheKey","prerenderResumeDataCache","getPrerenderResumeDataCache","renderResumeDataCache","getRenderResumeDataCache","beginRead","cachedEntry","get","existingEntry","DYNAMIC_EXPIRE","makeHangingPromise","shouldDiscardCacheEntry","currentTime","isStaticGeneration","newStream","isDraftMode","savedCacheEntry","set","promise","pendingRevalidateWrites","entryLeft","entryRight","ignoredStream","cancel","replayConsoleLogs","serverConsumerManifest","moduleLoading","moduleMap","edgeRscModuleMapping","rscModuleMapping","serverModuleMap","createFromReadableStream","React","pendingResult","then","onfulfilled","onrejected","props","ref","$$isPageComponent","isOnDemandRevalidate","dev","headers","some","isRecentlyRevalidatedTag","expiration","previouslyRevalidatedTags","pendingRevalidatedTags"],"mappings":"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"}
@@ -22,7 +22,7 @@ _export(exports, {
22
22
  });
23
23
  function isStableBuild() {
24
24
  var _process_env___NEXT_VERSION;
25
- return !((_process_env___NEXT_VERSION = "15.3.0-canary.32") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
25
+ return !((_process_env___NEXT_VERSION = "15.3.0-canary.33") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
26
26
  }
27
27
  class CanaryOnlyError extends Error {
28
28
  constructor(arg){
@@ -81,7 +81,7 @@ function getAnonymousMeta() {
81
81
  isWsl: _iswsl.default,
82
82
  isCI: _ciinfo.isCI,
83
83
  ciName: _ciinfo.isCI && _ciinfo.name || null,
84
- nextVersion: "15.3.0-canary.32"
84
+ nextVersion: "15.3.0-canary.33"
85
85
  };
86
86
  return traits;
87
87
  }
@@ -11,11 +11,11 @@ Object.defineProperty(exports, "eventCliSessionStopped", {
11
11
  const EVENT_VERSION = 'NEXT_CLI_SESSION_STOPPED';
12
12
  function eventCliSessionStopped(event) {
13
13
  // This should be an invariant, if it fails our build tooling is broken.
14
- if (typeof "15.3.0-canary.32" !== 'string') {
14
+ if (typeof "15.3.0-canary.33" !== 'string') {
15
15
  return [];
16
16
  }
17
17
  const payload = {
18
- nextVersion: "15.3.0-canary.32",
18
+ nextVersion: "15.3.0-canary.33",
19
19
  nodeVersion: process.version,
20
20
  cliCommand: event.cliCommand,
21
21
  durationMilliseconds: event.durationMilliseconds,
@@ -36,12 +36,12 @@ function hasBabelConfig(dir) {
36
36
  function eventCliSession(dir, nextConfig, event) {
37
37
  var _nextConfig_experimental_staleTimes, _nextConfig_experimental_staleTimes1, _nextConfig_experimental_reactCompiler, _nextConfig_experimental_reactCompiler1;
38
38
  // This should be an invariant, if it fails our build tooling is broken.
39
- if (typeof "15.3.0-canary.32" !== 'string') {
39
+ if (typeof "15.3.0-canary.33" !== 'string') {
40
40
  return [];
41
41
  }
42
42
  const { images, i18n } = nextConfig || {};
43
43
  const payload = {
44
- nextVersion: "15.3.0-canary.32",
44
+ nextVersion: "15.3.0-canary.33",
45
45
  nodeVersion: process.version,
46
46
  cliCommand: event.cliCommand,
47
47
  isSrcDir: event.isSrcDir,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next",
3
- "version": "15.3.0-canary.32",
3
+ "version": "15.3.0-canary.33",
4
4
  "description": "The React Framework",
5
5
  "main": "./dist/server/next.js",
6
6
  "license": "MIT",
@@ -100,7 +100,7 @@
100
100
  ]
101
101
  },
102
102
  "dependencies": {
103
- "@next/env": "15.3.0-canary.32",
103
+ "@next/env": "15.3.0-canary.33",
104
104
  "@swc/counter": "0.1.3",
105
105
  "@swc/helpers": "0.5.15",
106
106
  "busboy": "1.6.0",
@@ -132,14 +132,14 @@
132
132
  },
133
133
  "optionalDependencies": {
134
134
  "sharp": "^0.33.5",
135
- "@next/swc-darwin-arm64": "15.3.0-canary.32",
136
- "@next/swc-darwin-x64": "15.3.0-canary.32",
137
- "@next/swc-linux-arm64-gnu": "15.3.0-canary.32",
138
- "@next/swc-linux-arm64-musl": "15.3.0-canary.32",
139
- "@next/swc-linux-x64-gnu": "15.3.0-canary.32",
140
- "@next/swc-linux-x64-musl": "15.3.0-canary.32",
141
- "@next/swc-win32-arm64-msvc": "15.3.0-canary.32",
142
- "@next/swc-win32-x64-msvc": "15.3.0-canary.32"
135
+ "@next/swc-darwin-arm64": "15.3.0-canary.33",
136
+ "@next/swc-darwin-x64": "15.3.0-canary.33",
137
+ "@next/swc-linux-arm64-gnu": "15.3.0-canary.33",
138
+ "@next/swc-linux-arm64-musl": "15.3.0-canary.33",
139
+ "@next/swc-linux-x64-gnu": "15.3.0-canary.33",
140
+ "@next/swc-linux-x64-musl": "15.3.0-canary.33",
141
+ "@next/swc-win32-arm64-msvc": "15.3.0-canary.33",
142
+ "@next/swc-win32-x64-msvc": "15.3.0-canary.33"
143
143
  },
144
144
  "devDependencies": {
145
145
  "@ampproject/toolbox-optimizer": "2.8.3",
@@ -172,11 +172,11 @@
172
172
  "@jest/types": "29.5.0",
173
173
  "@mswjs/interceptors": "0.23.0",
174
174
  "@napi-rs/triples": "1.2.0",
175
- "@next/font": "15.3.0-canary.32",
176
- "@next/polyfill-module": "15.3.0-canary.32",
177
- "@next/polyfill-nomodule": "15.3.0-canary.32",
178
- "@next/react-refresh-utils": "15.3.0-canary.32",
179
- "@next/swc": "15.3.0-canary.32",
175
+ "@next/font": "15.3.0-canary.33",
176
+ "@next/polyfill-module": "15.3.0-canary.33",
177
+ "@next/polyfill-nomodule": "15.3.0-canary.33",
178
+ "@next/react-refresh-utils": "15.3.0-canary.33",
179
+ "@next/swc": "15.3.0-canary.33",
180
180
  "@opentelemetry/api": "1.6.0",
181
181
  "@playwright/test": "1.51.1",
182
182
  "@storybook/addon-a11y": "8.6.0",