@reckona/mreact-router 0.0.182 → 0.0.184
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.
- package/dist/build.d.ts +3 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +271 -8
- package/dist/build.js.map +1 -1
- package/dist/bundle-pipeline.d.ts.map +1 -1
- package/dist/bundle-pipeline.js +9 -0
- package/dist/bundle-pipeline.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +193 -2
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/module-runner.d.ts.map +1 -1
- package/dist/module-runner.js +132 -1
- package/dist/module-runner.js.map +1 -1
- package/dist/render.d.ts +2 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +24 -13
- package/dist/render.js.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +34 -1
- package/dist/vite.js.map +1 -1
- package/package.json +11 -11
- package/src/build.ts +406 -10
- package/src/bundle-pipeline.ts +9 -0
- package/src/client.ts +195 -2
- package/src/config.ts +8 -0
- package/src/module-runner.ts +185 -1
- package/src/render.ts +37 -15
- package/src/vite.ts +39 -1
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { access, readFile, stat } from \"node:fs/promises\";\nimport { dirname, join, relative, resolve, sep } from \"node:path\";\nimport { formatDiagnostic, transform } from \"@reckona/mreact-compiler\";\nimport type {\n ClientReferenceMetadata,\n ServerOutputMode,\n TransformOutput,\n} from \"@reckona/mreact-shared/compiler-contract\";\nimport {\n createQueryClient,\n dehydrate,\n __MREACT_QUERY_STATE_SCRIPT_ID,\n installQueryAsyncStorage,\n runWithQueryClient,\n type DehydratedQueryClient,\n type QueryClient,\n} from \"@reckona/mreact-query\";\nimport {\n createStringSink,\n type HtmlSink,\n renderAsyncBoundary,\n renderOutOfOrderReorderScript,\n renderReactNodeToString,\n renderToReadableStream,\n} from \"@reckona/mreact-server\";\nimport {\n createClientRouteInferenceCache,\n formatClientRouteInferenceDiagnostic,\n inferClientRouteModule,\n type ClientRouteInferenceCache,\n type ClientRouteInferenceResult,\n} from \"./client-route-inference.js\";\nimport {\n hydrationMarkerParts,\n routeIdForPath,\n withHydrationMarkers,\n withRouteMarkers,\n} from \"./navigation-runtime.js\";\nimport { assetPath } from \"./assets.js\";\nimport { escapeHtmlAttribute } from \"@reckona/mreact-shared/html-escape\";\nimport { matchRoute, scanAppRoutes } from \"./routes.js\";\nimport type { AppRoute, MatchedRoute, RouteMatcher } from \"./routes.js\";\nimport { appFileConventionContentType } from \"./file-conventions.js\";\nimport {\n type AppRouterServerActionOptions,\n type PreparedFormActionReference,\n dispatchServerActionRequest,\n prepareRouteServerActionPlaceholders,\n prepareRouteServerActions,\n} from \"./actions.js\";\nimport { serverActionCookie } from \"./csrf.js\";\nimport {\n type AppRouterCache,\n beginRouteCacheContext,\n cachedRouteResponse,\n cacheRouteResponse,\n routeCacheKey,\n routeCachePolicyFromSource,\n} from \"./cache.js\";\nimport { resolveRouterCacheLimit } from \"./cache-config.js\";\nimport {\n importAppRouterBuiltFileModule,\n importAppRouterFileModule,\n importAppRouterSourceModule,\n fileImportMetaUrlPlugin,\n rewriteCompatVendorPlaceholderImportsForRunner,\n} from \"./module-runner.js\";\nimport { bytesResponse, htmlResponse } from \"./http.js\";\nimport { isNotFoundError, isRedirectError, rewriteLocation } from \"./navigation.js\";\nimport { createAppRouterImportPolicyPlugin, type AppRouterImportPolicy } from \"./import-policy.js\";\nimport { existingRouteShellCandidates } from \"./route-shells.js\";\nimport type { PluginOption, UserConfig } from \"vite\";\nimport type { BuiltRouteSourceAnalysisSummary, BuiltServerModuleArtifact } from \"./build.js\";\nimport {\n hasLoaderExport,\n isStreamRouteSource,\n routeClosureMayUseAwaitBoundary,\n stripRouteBuildExports,\n stripRouteModuleExports,\n stripRouteClientOnlyExports,\n stripRouteClientSource,\n stripRouteLoaderOnlyExports,\n stripRouteMetadataOnlyExports,\n} from \"./route-source.js\";\nimport { emitRouterLog, logDurationMs, logNow, type AppRouterLogger } from \"./logger.js\";\nimport {\n createRouterRuntimeCacheCounters,\n readRouterRuntimeCacheEntry,\n routerRuntimeCacheStat,\n type RouterRuntimeCacheCounters,\n type RouterRuntimeCacheStat,\n} from \"./cache-stats.js\";\nimport { bundleRouterModule } from \"./bundle-pipeline.js\";\nimport { viteDefineCacheKey, vitePluginsCacheKey } from \"./vite-plugin-cache-key.js\";\nimport type {\n ManifestDescriptor,\n RobotsManifest,\n RouteParams,\n RouteMetadata,\n SitemapEntry,\n} from \"./types.js\";\nimport {\n invokeRouterInstrumentation,\n traceContextFromRequest,\n type RouterInstrumentation,\n} from \"./trace.js\";\nimport {\n mergeRouteMiddlewareControls,\n middlewareMatches,\n parseRouteMiddlewareControl,\n parseStaticMiddlewareConfig,\n shouldSkipMiddleware,\n validateRouteMiddlewareControl,\n type MiddlewareModule,\n type RouteMiddlewareControl,\n} from \"./middleware.js\";\nimport {\n applyFileConventionMetadata,\n injectHeadMetadata,\n mergeRouteMetadata,\n responseHeadersForMetadata,\n serializeRobots,\n serializeSitemap,\n validateRouteMetadata,\n} from \"./metadata.js\";\nimport {\n createSlotRenderContext,\n markShellBoundary,\n shellBoundaryId,\n splitLayoutSlot,\n warnUnconsumedRouteSlots,\n type ShellFile,\n type SlotRenderContext,\n} from \"./layout-composer.js\";\nimport {\n importPolicyCacheKey,\n memoizedHashText,\n prebuiltRequestModuleArtifact,\n prebuiltRouteLoaderModuleArtifact,\n prebuiltServerComponentModuleCode,\n prebuiltServerModuleOutputMatches,\n prebuiltServerModuleOutputOptionsMatch,\n type BuiltServerModuleOutputLike,\n} from \"./route-module-loader.js\";\nimport {\n loadRouteDataFromModule,\n type RouteDataContext,\n type RouteLoaderModule,\n} from \"./route-loader-runtime.js\";\nimport { pageRouteMethodResponse } from \"./route-dispatch.js\";\n\nconst nativeEscapeTransform = {\n batchImportName: \"escapeHtmlBatch\",\n batchImportSource: \"@reckona/mreact-router/native-escape\",\n} as const;\nconst authRuntimeStateKey = \"__mreactAuthRuntimeState\";\nconst authSessionScriptId = \"__mreact_auth_session\";\n\ninstallQueryAsyncStorage(new AsyncLocalStorage<QueryClient>());\n\ninterface AuthRuntimeRequestState {\n claims?: unknown;\n}\n\ninterface AuthRuntimeState {\n storage?: AsyncLocalStorage<AuthRuntimeRequestState> | undefined;\n}\n\ninterface RenderTiming {\n phases: Record<string, number>;\n}\n\n/**\n * Loads prebuilt server render artifacts immediately before a route render needs them.\n */\nexport interface AppRouterServerRenderArtifactLoader {\n load(routeFile: string): Promise<void>;\n}\n\n/**\n * Configures server rendering for a source app-router request.\n */\nexport interface RenderAppRequestOptions {\n appDir: string;\n assetBaseUrl?: string | undefined;\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n clientScripts?: ReadonlyMap<string, string>;\n clientStylesByFile?: ReadonlyMap<string, readonly string[]>;\n clientStyles?: ReadonlyMap<string, readonly string[]>;\n define?: UserConfig[\"define\"] | undefined;\n env?: unknown;\n importPolicy?: AppRouterImportPolicy | undefined;\n instrumentation?: RouterInstrumentation | undefined;\n logger?: AppRouterLogger | undefined;\n navigationScripts?: ReadonlyMap<string, string> | undefined;\n onResponse?: AppRouterResponseHook | undefined;\n queryClient?: QueryClient | undefined;\n request: Request;\n requestUrl?: URL | undefined;\n matchedRoute?: MatchedRoute | undefined;\n routeCache?: AppRouterCache | undefined;\n routeMatcher?: RouteMatcher | undefined;\n routes?: readonly AppRoute[] | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n devServerModuleCacheVersion?: string | undefined;\n // True when serving through a dev server: request-time server transforms\n // are expected there and must not trigger the production prebuild warning.\n dev?: boolean | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n serverActions?: AppRouterServerActionOptions | undefined;\n serverActionReferencesByFile?:\n | ReadonlyMap<string, readonly PreparedFormActionReference[]>\n | undefined;\n skipMiddleware?: boolean | undefined;\n preload?: AppRouterRenderPreload | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}\n\nexport interface RenderAppRequestRuntimeOptions extends RenderAppRequestOptions {\n serverRenderArtifactLoader?: AppRouterServerRenderArtifactLoader | undefined;\n}\n\nexport interface AppRouterRenderPreload {\n promise: Promise<void>;\n wait: \"before-render\";\n}\n\n/**\n * Allows callers to inspect or replace an app-router response before it is returned.\n */\nexport type AppRouterResponseHook = (\n response: Response,\n context: AppRouterResponseHookContext,\n) => Response | undefined | void | Promise<Response | undefined | void>;\n\n/**\n * Provides request context to an app-router response hook.\n */\nexport interface AppRouterResponseHookContext {\n request: Request;\n}\n\nexport async function preloadBuiltRequestModules(options: {\n appDir: string;\n define?: UserConfig[\"define\"] | undefined;\n includeRenderModules?: boolean | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n routes: readonly AppRoute[];\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion: string;\n serverSourceFiles: ReadonlyMap<string, string>;\n serverActionReferencesByFile?:\n | ReadonlyMap<string, readonly PreparedFormActionReference[]>\n | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<void> {\n const clientRouteInferenceCache = createClientRouteInferenceCache();\n const middlewareFiles = [\n join(options.appDir, \"middleware.ts\"),\n join(options.appDir, \"middleware.mreact.ts\"),\n ];\n\n for (const file of middlewareFiles) {\n if (options.serverSourceFiles.has(file)) {\n await loadMiddlewareModule({\n appDir: options.appDir,\n file,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n }\n }\n\n for (const route of options.routes) {\n const code = await readServerSourceFile(\n route.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n\n if (route.kind === \"server\") {\n await loadServerRouteModule({\n appDir: options.appDir,\n file: route.file,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n continue;\n }\n\n if (options.includeRenderModules !== false) {\n const actionReferences = options.serverActionReferencesByFile?.get(route.file) ?? [];\n const analysisCode =\n actionReferences.length === 0\n ? code\n : prepareRouteServerActionPlaceholders({\n code,\n formActionReferences: actionReferences,\n });\n const analysis = await analyzeRouteSource({\n appDir: options.appDir,\n artifact: options.serverModules?.get(route.file)?.analysis,\n buildRenderCode: analysisCode !== code,\n code: analysisCode,\n filename: route.file,\n routePath: route.path,\n clientRouteInferenceCache,\n serverModuleCacheVersion:\n actionReferences.length === 0 ? options.serverModuleCacheVersion : undefined,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n });\n await preloadBuiltPageRouteModules({\n ...options,\n analysis,\n code: analysisCode,\n file: route.file,\n });\n }\n\n if (hasLoaderExport(code)) {\n await loadRouteLoaderModule({\n appDir: options.appDir,\n code,\n filename: route.file,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n }\n }\n}\n\nasync function preloadBuiltPageRouteModules(options: {\n analysis: RouteSourceAnalysis;\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion: string;\n serverSourceFiles: ReadonlyMap<string, string>;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<void> {\n const routeCode = options.analysis.routeCode;\n const stringArtifact = options.serverModules?.get(options.file)?.string;\n const shouldPreloadString =\n !options.analysis.streamRoute ||\n options.serverModules === undefined ||\n stringArtifact !== undefined;\n\n if (shouldPreloadString) {\n const stringOutput = transformServerModule({\n code: routeCode,\n clientBoundaryImports: options.analysis.clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: options.analysis.clientInference.clientBoundaryFallbackImports,\n filename: options.file,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n });\n assertNoFatalServerDiagnostics(options.file, stringOutput.diagnostics);\n await loadServerModule(\n stringOutput.code,\n options.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n );\n }\n\n if (options.analysis.streamRoute) {\n const streamOutput = transformServerModule({\n code: routeCode,\n clientBoundaryImports: options.analysis.clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: options.analysis.clientInference.clientBoundaryFallbackImports,\n filename: options.file,\n serverModules: options.serverModules,\n serverOutput: \"stream\",\n serverAwaitHydration: options.analysis.clientInference.client,\n });\n assertNoFatalServerDiagnostics(options.file, streamOutput.diagnostics);\n await loadServerStreamModule(\n streamOutput.code,\n options.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n undefined,\n { serverAwaitHydration: options.analysis.clientInference.client },\n );\n }\n\n await preloadShellModulesForPage({\n appDir: options.appDir,\n pageFile: options.file,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n if (!hasGenerateMetadataExport(options.code)) {\n await loadComposedRouteMetadata({\n appDir: options.appDir,\n code: options.code,\n context: {\n data: undefined,\n params: {},\n request: new Request(\"http://mreact.local/\"),\n },\n filename: options.file,\n importPolicy: options.importPolicy,\n routes: [],\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n }\n}\n\nasync function preloadShellModulesForPage(options: {\n appDir: string;\n define?: UserConfig[\"define\"] | undefined;\n pageFile: string;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion: string;\n serverSourceFiles: ReadonlyMap<string, string>;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<void> {\n const shellFiles = await shellFilesForPage(\n options.appDir,\n options.pageFile,\n options.serverModuleCacheVersion,\n );\n\n for (const shell of shellFiles) {\n const code = await readServerSourceFile(\n shell.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n const output = transformServerModule({\n code,\n filename: shell.file,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n });\n assertNoFatalServerDiagnostics(shell.file, output.diagnostics);\n await loadServerModule(\n output.code,\n shell.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n );\n }\n}\n\nfunction fatalServerDiagnostics(\n diagnostics: TransformOutput[\"diagnostics\"],\n): TransformOutput[\"diagnostics\"] {\n return diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n}\n\nfunction formatServerDiagnostics(\n filename: string,\n diagnostics: TransformOutput[\"diagnostics\"],\n): string {\n return diagnostics.map((diagnostic) => formatDiagnostic(filename, diagnostic)).join(\"\\n\");\n}\n\nfunction assertNoFatalServerDiagnostics(\n filename: string,\n diagnostics: TransformOutput[\"diagnostics\"],\n): void {\n const fatalDiagnostics = fatalServerDiagnostics(diagnostics);\n if (fatalDiagnostics.length > 0) {\n throw new Error(formatServerDiagnostics(filename, fatalDiagnostics));\n }\n}\n\ninterface ServerComponentProps {\n data: unknown;\n params: RouteParams;\n queryClient: QueryClient;\n request: Request;\n}\n\ntype ServerComponent = (props: ServerComponentProps) => string | PromiseLike<string>;\ntype RouteSlotValue = string | ServerComponent;\ntype RouteSlotExports = Record<string, RouteSlotValue>;\ntype ServerModuleExports = Record<string, unknown> & {\n App?: ServerComponent;\n default?: ServerComponent;\n slots?: RouteSlotExports;\n};\ntype StreamComponent = (sink: HtmlSink, props: ServerComponentProps) => void | PromiseLike<void>;\ntype StreamRouteSlotValue = string | StreamComponent;\ntype StreamRouteSlotExports = Record<string, StreamRouteSlotValue>;\ntype StreamModuleExports = Record<string, unknown> & {\n App?: StreamComponent;\n default?: StreamComponent;\n slots?: StreamRouteSlotExports;\n};\n\nconst serverTransformCache = new Map<string, TransformOutput>();\nconst serverTransformCacheCounters = createRouterRuntimeCacheCounters();\nconst productionDynamicServerTransformWarned = new Set<string>();\nconst serverSourceFileCache = new Map<string, Promise<string>>();\nconst serverSourceFileCacheCounters = createRouterRuntimeCacheCounters();\nconst routeSourceAnalysisCache = new Map<string, Promise<RouteSourceAnalysis>>();\nconst routeSourceAnalysisCacheCounters = createRouterRuntimeCacheCounters();\nconst routeOutOfOrderBoundaryAnalysisCache = new Map<string, Promise<boolean>>();\nconst routeOutOfOrderBoundaryAnalysisCacheCounters = createRouterRuntimeCacheCounters();\nconst routeLoaderModuleCache = new Map<string, Promise<RouteLoaderModule>>();\nconst routeLoaderModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst routeMetadataModuleCache = new Map<string, Promise<RouteMetadataModule>>();\nconst routeMetadataModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst middlewareModuleCache = new Map<string, Promise<MiddlewareModule>>();\nconst middlewareModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst serverRouteModuleCache = new Map<string, Promise<Record<string, unknown>>>();\nconst serverRouteModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst composedRouteMetadataCache = new Map<string, Promise<RouteMetadata | undefined>>();\nconst composedRouteMetadataCacheCounters = createRouterRuntimeCacheCounters();\nconst maxServerTransformCacheEntries = resolveRouterCacheLimit(\"SERVER_TRANSFORM\", 512);\nconst maxServerSourceFileCacheEntries = resolveRouterCacheLimit(\"SERVER_SOURCE_FILE\", 512);\nconst maxRouteSourceAnalysisCacheEntries = resolveRouterCacheLimit(\"ROUTE_SOURCE_ANALYSIS\", 512);\nconst maxRouteOutOfOrderBoundaryAnalysisCacheEntries = resolveRouterCacheLimit(\n \"ROUTE_OUT_OF_ORDER_BOUNDARY_ANALYSIS\",\n 512,\n);\nconst maxRouteLoaderModuleCacheEntries = resolveRouterCacheLimit(\"ROUTE_LOADER_MODULE\", 512);\nconst maxRouteMetadataModuleCacheEntries = resolveRouterCacheLimit(\"ROUTE_METADATA_MODULE\", 512);\nconst maxMiddlewareModuleCacheEntries = resolveRouterCacheLimit(\"MIDDLEWARE_MODULE\", 64);\nconst maxServerRouteModuleCacheEntries = resolveRouterCacheLimit(\"SERVER_ROUTE_MODULE\", 512);\nconst maxComposedRouteMetadataCacheEntries = resolveRouterCacheLimit(\n \"COMPOSED_ROUTE_METADATA\",\n 512,\n);\n\nexport function routerRenderRuntimeCacheStats(): RouterRuntimeCacheStat[] {\n return [\n routerRuntimeCacheStat(\n \"server-transform\",\n serverTransformCache,\n maxServerTransformCacheEntries,\n serverTransformCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"server-source-file\",\n serverSourceFileCache,\n maxServerSourceFileCacheEntries,\n serverSourceFileCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"route-source-analysis\",\n routeSourceAnalysisCache,\n maxRouteSourceAnalysisCacheEntries,\n routeSourceAnalysisCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"route-out-of-order-boundary-analysis\",\n routeOutOfOrderBoundaryAnalysisCache,\n maxRouteOutOfOrderBoundaryAnalysisCacheEntries,\n routeOutOfOrderBoundaryAnalysisCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"route-loader-module\",\n routeLoaderModuleCache,\n maxRouteLoaderModuleCacheEntries,\n routeLoaderModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"route-metadata-module\",\n routeMetadataModuleCache,\n maxRouteMetadataModuleCacheEntries,\n routeMetadataModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"middleware-module\",\n middlewareModuleCache,\n maxMiddlewareModuleCacheEntries,\n middlewareModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"server-route-module\",\n serverRouteModuleCache,\n maxServerRouteModuleCacheEntries,\n serverRouteModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"composed-route-metadata\",\n composedRouteMetadataCache,\n maxComposedRouteMetadataCacheEntries,\n composedRouteMetadataCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"rendered-shell\",\n renderedShellCache,\n MAX_RENDERED_SHELL_CACHE_ENTRIES,\n renderedShellCacheCounters,\n ),\n ];\n}\n\n// Issue 086: per-shell prefix/suffix cache. Pure layouts (whose\n// exported component takes zero arguments and therefore cannot\n// depend on the request props) produce the same HTML for every\n// request, so we cache the already-split { prefix, suffix } strings\n// keyed by appDir + shellFile + serverModuleCacheVersion. Impure\n// layouts (function.length > 0) are tagged \"impure\" so we skip the\n// detection on subsequent requests but still render per-request.\n//\n// The cache is only active when a version is present (production\n// builds); dev mode keeps the previous behaviour so reloads pick up\n// edits without server restart.\nconst renderedShellCache = new Map<string, RenderedShell | \"impure\">();\nconst MAX_RENDERED_SHELL_CACHE_ENTRIES = 1024;\nconst renderedShellCacheCounters = createRouterRuntimeCacheCounters();\n\ninterface RenderedShell {\n hasOutOfOrderBoundary: boolean;\n prefix: string;\n suffix: string;\n}\n\ninterface RouteSourceAnalysis {\n authIncludesClaims: boolean;\n cachePolicy: ReturnType<typeof routeCachePolicyFromSource>;\n clientInference: ClientRouteInferenceResult;\n hasLoader: boolean;\n routeCode: string;\n streamRoute: boolean;\n usesRuntimeCacheControl: boolean;\n}\n\n/**\n * Renders a source app-router request into a `Response`.\n */\nexport async function renderAppRequest(options: RenderAppRequestOptions): Promise<Response> {\n const authStorage = authRequestStorage();\n\n if (authStorage.getStore() === undefined) {\n return authStorage.run({}, () => renderAppRequest(options));\n }\n\n const trace = traceContextFromRequest(options.request);\n const url = options.requestUrl ?? new URL(options.request.url);\n const requestEvent = {\n method: options.request.method,\n path: url.pathname,\n request: options.request,\n ...(trace === undefined ? {} : { trace }),\n };\n invokeRouterInstrumentation(options.instrumentation?.onRequestStart, requestEvent);\n const response = await renderAppRequestInternal({ ...options, requestUrl: url });\n invokeRouterInstrumentation(options.instrumentation?.onRequestEnd, {\n ...requestEvent,\n status: response.status,\n });\n\n return applyAppRouterResponseHook(response, options);\n}\n\nfunction createRenderTiming(logger: AppRouterLogger | undefined): RenderTiming | undefined {\n return logger?.debug === undefined ? undefined : { phases: {} };\n}\n\nfunction renderTimingPhaseStartedAt(timing: RenderTiming | undefined): number | undefined {\n return timing === undefined ? undefined : logNow();\n}\n\nfunction finishRenderTimingPhase(\n timing: RenderTiming | undefined,\n startedAt: number | undefined,\n phaseName: string,\n): void {\n if (timing === undefined || startedAt === undefined) {\n return;\n }\n\n timing.phases[phaseName] = logDurationMs(startedAt);\n}\n\nasync function readSettledPromiseAtNextTask<T>(\n promise: Promise<T>,\n): Promise<{ settled: true; value: T } | { settled: false }> {\n return await Promise.race([\n promise.then((value) => ({ settled: true as const, value })),\n new Promise<{ settled: false }>((resolve) => {\n setTimeout(() => resolve({ settled: false }), 0);\n }),\n ]);\n}\n\nfunction addRenderTimingPhaseDuration(\n timing: RenderTiming | undefined,\n startedAt: number | undefined,\n phaseName: string,\n): void {\n if (timing === undefined || startedAt === undefined) {\n return;\n }\n\n timing.phases[phaseName] = (timing.phases[phaseName] ?? 0) + logDurationMs(startedAt);\n}\n\nfunction routeLoaderMayReturnControlResponse(code: string): boolean {\n return (\n /\\b(?:redirect|redirectExternal|rewrite|notFound|throwNotFound)\\s*\\(/.test(code) ||\n /\\bnew\\s+Response\\s*\\(/.test(code) ||\n /\\bResponse\\.(?:redirect|json)\\s*\\(/.test(code)\n );\n}\n\nasync function waitForRenderPreload(\n options: Pick<RenderAppRequestOptions, \"preload\">,\n timing: RenderTiming | undefined,\n): Promise<void> {\n if (options.preload?.wait !== \"before-render\") {\n return;\n }\n\n const phaseStartedAt = renderTimingPhaseStartedAt(timing);\n try {\n await options.preload.promise;\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"preloadWaitMs\");\n }\n}\n\nasync function loadServerRenderArtifacts(\n options: RenderAppRequestRuntimeOptions,\n routeFile: string,\n timing: RenderTiming | undefined,\n): Promise<void> {\n const loader = options.serverRenderArtifactLoader;\n\n if (loader === undefined) {\n return;\n }\n\n const phaseStartedAt = renderTimingPhaseStartedAt(timing);\n try {\n await loader.load(routeFile);\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"renderArtifactLoadMs\");\n }\n}\n\nfunction emitRenderTiming(\n options: RenderAppRequestRuntimeOptions,\n timing: RenderTiming | undefined,\n status: number,\n): void {\n if (timing === undefined) {\n return;\n }\n\n emitRouterLog(options.logger, \"debug\", {\n method: options.request.method,\n path: new URL(options.request.url).pathname,\n phases: timing.phases,\n status,\n type: \"router:render:timing\",\n });\n}\n\nexport type AppRouterMiddlewareResult =\n | { request: Request; type: \"continue\" }\n | { response: Response; type: \"response\" };\n\nexport async function resolveAppRouterMiddleware(options: {\n appDir: string;\n define?: UserConfig[\"define\"] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n instrumentation?: RouterInstrumentation | undefined;\n middlewareControl?: RouteMiddlewareControl | undefined;\n request: Request;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<AppRouterMiddlewareResult> {\n const middlewareResponse = await runMiddleware(options);\n\n if (middlewareResponse === undefined) {\n return { request: options.request, type: \"continue\" };\n }\n\n const location = rewriteLocation(middlewareResponse);\n\n if (location !== undefined) {\n return {\n request: new Request(new URL(location, options.request.url), options.request),\n type: \"continue\",\n };\n }\n\n return { response: middlewareResponse, type: \"response\" };\n}\n\nasync function renderAppRequestInternal(\n options: RenderAppRequestRuntimeOptions,\n): Promise<Response> {\n warnProductionRenderWithoutPrebuiltModules(options);\n const timing = createRenderTiming(options.logger);\n const clientRouteInferenceCache =\n options.clientRouteInferenceCache ?? createClientRouteInferenceCache();\n let phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const routes = options.routes ?? (await scanAppRoutes({ appDir: options.appDir }));\n finishRenderTimingPhase(timing, phaseStartedAt, \"routeScanMs\");\n const url = options.requestUrl ?? new URL(options.request.url);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const matched =\n options.matchedRoute ??\n options.routeMatcher?.match(url.pathname) ??\n matchRoute(routes, url.pathname);\n finishRenderTimingPhase(timing, phaseStartedAt, \"routeMatchMs\");\n const hasMiddleware =\n options.skipMiddleware === true\n ? false\n : await hasAppMiddleware({\n appDir: options.appDir,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n });\n const middlewareControl =\n hasMiddleware && matched?.route.kind === \"page\"\n ? await loadRouteMiddlewareControl({\n appDir: options.appDir,\n pageFile: matched.route.file,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n })\n : undefined;\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const middlewareResult =\n options.skipMiddleware === true || !hasMiddleware\n ? ({ request: options.request, type: \"continue\" } satisfies AppRouterMiddlewareResult)\n : await resolveAppRouterMiddleware({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n instrumentation: options.instrumentation,\n middlewareControl,\n request: options.request,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n timing,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"middlewareMs\");\n\n if (middlewareResult.type === \"response\") {\n emitRenderTiming(options, timing, middlewareResult.response.status);\n return middlewareResult.response;\n }\n\n if (middlewareResult.request !== options.request) {\n return renderAppRequestInternal({\n ...options,\n matchedRoute: undefined,\n request: middlewareResult.request,\n requestUrl: new URL(middlewareResult.request.url),\n skipMiddleware: true,\n });\n }\n\n if (url.pathname === \"/_mreact/actions\") {\n return dispatchServerActionRequest({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n request: options.request,\n renderSingleFlightNavigation: async (singleFlight) =>\n renderAppRequestInternal({\n ...options,\n matchedRoute: undefined,\n request: singleFlightNavigationRequest({\n path: singleFlight.path,\n request: singleFlight.request,\n }),\n requestUrl: undefined,\n }),\n routeCache: options.routeCache,\n ...(options.serverModuleCacheVersion === undefined\n ? {}\n : { serverActionCacheVersion: options.serverModuleCacheVersion }),\n serverActions: options.serverActions,\n });\n }\n\n if (matched === undefined) {\n const notFoundFile = await nearestBoundaryFileForPath({\n appDir: options.appDir,\n filename: \"not-found.mreact.tsx\",\n pathname: url.pathname,\n serverSourceFiles: options.serverSourceFiles,\n });\n\n const response = await renderSpecialRoute({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: options.clientStylesByFile?.get(notFoundFile),\n error: undefined,\n request: options.request,\n routePath: url.pathname,\n routeFile: notFoundFile,\n routeScripts: options.clientScripts,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n status: 404,\n textFallback: \"Not Found\",\n });\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n const queryClient = options.queryClient ?? createQueryClient();\n let recoveryRoute:\n | {\n clientRoute: boolean;\n props: unknown;\n routePath: string;\n script: string | undefined;\n }\n | undefined;\n let routeCacheContext: ReturnType<typeof beginRouteCacheContext> | undefined;\n\n try {\n if (matched.route.kind === \"asset\") {\n return await dispatchConventionAssetRoute({\n file: matched.route.file,\n request: options.request,\n });\n }\n\n if (matched.route.kind === \"metadata\") {\n return await dispatchMetadataRoute({\n appDir: options.appDir,\n file: matched.route.file,\n importPolicy: options.importPolicy,\n params: matched.params,\n request: options.request,\n route: matched.route,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n });\n }\n\n if (matched.route.kind === \"server\") {\n return await dispatchServerRoute({\n appDir: options.appDir,\n env: options.env,\n file: matched.route.file,\n importPolicy: options.importPolicy,\n params: matched.params,\n request: options.request,\n route: matched.route,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n });\n }\n\n // Issue 080: page routes render HTML for GET / HEAD only. Other\n // methods (PUT, PATCH, DELETE, PROPFIND, ...) get 405 with an\n // Allow header so the response shape complies with RFC 9110 §9\n // and so caching intermediaries do not cross-cache method results.\n const methodResponse = pageRouteMethodResponse(options.request.method);\n if (methodResponse !== undefined) {\n return methodResponse;\n }\n\n routeCacheContext = beginRouteCacheContext(options.routeCache);\n const clientScript = options.clientScripts?.get(matched.route.path);\n const clientStyleSheets = options.clientStyles?.get(matched.route.path);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const originalCode = await readServerSourceFile(\n matched.route.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n finishRenderTimingPhase(timing, phaseStartedAt, \"readSourceMs\");\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const originalAnalysis = await analyzeRouteSource({\n appDir: options.appDir,\n artifact: options.serverModules?.get(matched.route.file)?.analysis,\n code: originalCode,\n filename: matched.route.file,\n routePath: matched.route.path,\n clientRouteInferenceCache,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n timing,\n vitePlugins: options.vitePlugins,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"sourceAnalysisMs\");\n const cachePolicy = originalAnalysis.cachePolicy;\n const navigationScript = options.navigationScripts?.get(matched.route.path);\n const cacheKey = routeCacheKey(options.appDir, matched.route.path, url);\n const mayUseRouteCache =\n cachePolicy === undefined\n ? originalAnalysis.usesRuntimeCacheControl\n : cachePolicy.revalidateSeconds !== 0;\n const reloadRouteCache = isNavigationRouteCacheReloadRequest(options.request);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const cachedResponse =\n !mayUseRouteCache || reloadRouteCache\n ? undefined\n : await cachedRouteResponse({\n cache: options.routeCache,\n key: cacheKey,\n request: options.request,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"routeCacheMs\");\n\n if (cachedResponse !== undefined) {\n return cachedResponse;\n }\n\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const preparedActions = await prepareRouteServerActions({\n appDir: options.appDir,\n code: originalCode,\n formActionReferences: options.serverActionReferencesByFile?.get(matched.route.file),\n placeholders: true,\n pageFile: matched.route.file,\n request: options.request,\n });\n for (const diagnostic of preparedActions.diagnostics ?? []) {\n console.warn(`${diagnostic.code}: ${diagnostic.message}`);\n }\n finishRenderTimingPhase(timing, phaseStartedAt, \"serverActionsMs\");\n const code = preparedActions.code;\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const routeAnalysis =\n code === originalCode\n ? originalAnalysis\n : await analyzeRouteSource({\n appDir: options.appDir,\n buildRenderCode: preparedActions.htmlReplacements !== undefined,\n code,\n filename: matched.route.file,\n routePath: matched.route.path,\n clientRouteInferenceCache,\n serverModuleCacheVersion: undefined,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"routeCodeAnalysisMs\");\n const routeCode = routeAnalysis.routeCode;\n const streamRoute = routeAnalysis.streamRoute;\n const clientInference = routeAnalysis.clientInference;\n const clientRoute = clientInference.client;\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const dataPromise = routeAnalysis.hasLoader\n ? loadRouteDataWithInstrumentation({\n appDir: options.appDir,\n code: originalCode,\n context: {\n env: options.env,\n params: matched.params,\n queryClient,\n request: options.request,\n },\n filename: matched.route.file,\n importPolicy: options.importPolicy,\n instrumentation: options.instrumentation,\n request: options.request,\n routeId: routeIdForPath(matched.route.path),\n routePath: matched.route.path,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n define: options.define,\n vitePlugins: options.vitePlugins,\n timing,\n })\n : undefined;\n finishRenderTimingPhase(timing, phaseStartedAt, \"loaderStartMs\");\n recoveryRoute = {\n clientRoute,\n props: {\n params: matched.params,\n request: { url: options.request.url },\n },\n routePath: matched.route.path,\n script: clientScript,\n };\n if (streamRoute) {\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const loadingFile = await nearestExistingBoundaryFileForPage({\n appDir: options.appDir,\n filename: \"loading.mreact.tsx\",\n pageFile: matched.route.file,\n serverSourceFiles: options.serverSourceFiles,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"loadingBoundaryLookupMs\");\n const streamShellResponseHeaders = {\n \"content-type\": \"text/html; charset=utf-8\",\n \"x-mreact-stream\": \"1\",\n };\n\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const mayRenderOutOfOrder = await mayRenderOutOfOrderBoundaryDeep({\n code: routeCode,\n filename: matched.route.file,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"outOfOrderAnalysisMs\");\n\n if (loadingFile === undefined && !mayRenderOutOfOrder) {\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n let data: unknown;\n try {\n data = dataPromise === undefined ? undefined : await dataPromise;\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"loaderWaitMs\");\n }\n if (data instanceof Response) {\n emitRenderTiming(options, timing, data.status);\n return data;\n }\n await waitForRenderPreload(options, timing);\n await loadServerRenderArtifacts(options, matched.route.file, timing);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const stringOutput = transformServerModule({\n code: routeCode,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n filename: matched.route.file,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"stringTransformMs\");\n const stringFatalDiagnostics = fatalServerDiagnostics(stringOutput.diagnostics);\n\n if (stringFatalDiagnostics.length > 0) {\n return new Response(formatServerDiagnostics(matched.route.file, stringFatalDiagnostics), {\n status: 500,\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n });\n }\n\n const renderedPage = await runWithQueryClient(queryClient, () =>\n runServerModuleWithSlots(\n stringOutput.code,\n {\n data,\n params: matched.params,\n queryClient,\n request: options.request,\n },\n matched.route.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n undefined,\n options.importPolicy,\n options.devServerModuleCacheVersion,\n ),\n );\n const pageHtml = renderedPage.html;\n const pageHtmlForLayout = clientRoute\n ? withHydrationMarkers({\n assetBaseUrl: options.assetBaseUrl,\n clientReferenceManifest: stringOutput.metadata.clientReferenceManifest,\n html: pageHtml,\n routePath: matched.route.path,\n script: clientScript,\n props: {\n params: matched.params,\n request: { url: options.request.url },\n data,\n },\n })\n : isNavigationRequest(options.request)\n ? withRouteMarkers({\n html: pageHtml,\n routePath: matched.route.path,\n })\n : pageHtml;\n let html = await runWithQueryClient(queryClient, () =>\n applyLayouts({\n appDir: options.appDir,\n pageFile: matched.route.file,\n html: pageHtmlForLayout,\n props: {\n data,\n params: matched.params,\n queryClient,\n request: options.request,\n },\n slots: renderedPage.slots,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n clientRouteInferenceCache,\n timing,\n vitePlugins: options.vitePlugins,\n importPolicy: options.importPolicy,\n }),\n );\n const metadata = await loadComposedRouteMetadata({\n appDir: options.appDir,\n code: originalCode,\n context: {\n data,\n params: matched.params,\n request: options.request,\n },\n filename: matched.route.file,\n importPolicy: options.importPolicy,\n routes,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n html = injectHeadMetadata(html, metadata);\n warnIfCspNonceWouldBlockInlineTags({\n html,\n logger: options.logger,\n metadata,\n request: options.request,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n html = injectAuthSessionClaims(\n html,\n originalAnalysis.authIncludesClaims ? currentAuthClaims() : undefined,\n );\n html = injectQueryState(html, dehydrate(queryClient));\n const response = withOptionalActionCookie(\n htmlResponse(\n applyActionHtmlReplacements(\n `<!DOCTYPE html>${clientNavigationHeadTags({\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: clientStyleSheets,\n currentScript: clientRoute ? clientScript : undefined,\n currentNavigationScript: clientRoute ? undefined : navigationScript,\n routeScripts: options.clientScripts,\n })}${html}`,\n preparedActions.htmlReplacements,\n ),\n {\n headers: responseHeadersForMetadata(metadata, options.request, {\n \"x-mreact-stream\": \"1\",\n }),\n },\n ),\n preparedActions.csrfToken,\n preparedActions.csrfTokenIsNew === true,\n );\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n let streamData: unknown;\n let streamDataPromise = dataPromise ?? Promise.resolve(undefined);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n if (loadingFile === undefined || routeLoaderMayReturnControlResponse(originalCode)) {\n try {\n streamData = dataPromise === undefined ? undefined : await dataPromise;\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"loaderWaitMs\");\n }\n if (streamData instanceof Response) {\n emitRenderTiming(options, timing, streamData.status);\n return streamData;\n }\n streamDataPromise = Promise.resolve(streamData);\n } else {\n try {\n const settledData = await readSettledPromiseAtNextTask(streamDataPromise);\n if (settledData.settled) {\n if (settledData.value instanceof Response) {\n emitRenderTiming(options, timing, settledData.value.status);\n return settledData.value;\n }\n streamDataPromise = Promise.resolve(settledData.value);\n }\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"loaderWaitMs\");\n }\n }\n\n await waitForRenderPreload(options, timing);\n await loadServerRenderArtifacts(options, matched.route.file, timing);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const output = transformServerModule({\n code: routeCode,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n filename: matched.route.file,\n serverModules: options.serverModules,\n serverOutput: \"stream\",\n serverAwaitHydration: clientRoute,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"streamTransformMs\");\n const fatalDiagnostics = fatalServerDiagnostics(output.diagnostics);\n\n if (fatalDiagnostics.length > 0) {\n return new Response(formatServerDiagnostics(matched.route.file, fatalDiagnostics), {\n status: 500,\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n });\n }\n\n if (loadingFile !== undefined) {\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const stream = await runServerStreamModuleWithLoading(output.code, {\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n clientRoute,\n data: streamDataPromise,\n define: options.define,\n loadingFile,\n pageFile: matched.route.file,\n params: matched.params,\n queryClient,\n request: options.request,\n routePath: matched.route.path,\n routeScripts: options.clientScripts,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n clientRouteInferenceCache,\n importPolicy: options.importPolicy,\n script: clientScript,\n clientReferenceManifest: output.metadata.clientReferenceManifest,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"streamConstructionMs\");\n\n const response = withOptionalActionCookie(\n new Response(stream, {\n headers: streamShellResponseHeaders,\n }),\n preparedActions.csrfToken,\n preparedActions.csrfTokenIsNew === true,\n );\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n const data = streamData;\n const props = {\n data,\n params: matched.params,\n queryClient,\n request: options.request,\n };\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const stream = runServerStreamModule(output.code, {\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n pageFile: matched.route.file,\n props,\n routePath: matched.route.path,\n routeScripts: options.clientScripts,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n clientRouteInferenceCache,\n importPolicy: options.importPolicy,\n clientRoute,\n script: clientScript,\n clientReferenceManifest: output.metadata.clientReferenceManifest,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"streamConstructionMs\");\n\n const response = withOptionalActionCookie(\n new Response(stream, {\n headers: streamShellResponseHeaders,\n }),\n preparedActions.csrfToken,\n preparedActions.csrfTokenIsNew === true,\n );\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n let data: unknown;\n try {\n data = dataPromise === undefined ? undefined : await dataPromise;\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"loaderWaitMs\");\n }\n if (data instanceof Response) {\n emitRenderTiming(options, timing, data.status);\n return data;\n }\n await waitForRenderPreload(options, timing);\n await loadServerRenderArtifacts(options, matched.route.file, timing);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const output = transformServerModule({\n code: routeCode,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n filename: matched.route.file,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"stringTransformMs\");\n const fatalDiagnostics = fatalServerDiagnostics(output.diagnostics);\n\n if (fatalDiagnostics.length > 0) {\n return new Response(formatServerDiagnostics(matched.route.file, fatalDiagnostics), {\n status: 500,\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n });\n }\n\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const renderedPage = await runWithQueryClient(queryClient, () =>\n runServerModuleWithSlots(\n output.code,\n {\n data,\n params: matched.params,\n queryClient,\n request: options.request,\n },\n matched.route.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n timing,\n options.importPolicy,\n options.devServerModuleCacheVersion,\n ),\n );\n finishRenderTimingPhase(timing, phaseStartedAt, \"pageRenderMs\");\n const pageHtml = renderedPage.html;\n // Wrap the page (not the full document) with the hydration marker so\n // the marker sits inside <body>, not around <html>. Wrapping <html>\n // forces the browser HTML parser to strip the wrappers and promote\n // <head> / <body> children up to the marker, which flattens the\n // layout into the marker and breaks the hydration target lookup.\n const pageHtmlForLayout = clientRoute\n ? withHydrationMarkers({\n assetBaseUrl: options.assetBaseUrl,\n clientReferenceManifest: output.metadata.clientReferenceManifest,\n html: pageHtml,\n routePath: matched.route.path,\n script: clientScript,\n props: {\n params: matched.params,\n request: { url: options.request.url },\n data,\n },\n })\n : isNavigationRequest(options.request)\n ? withRouteMarkers({\n html: pageHtml,\n routePath: matched.route.path,\n })\n : pageHtml;\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n let html = await runWithQueryClient(queryClient, () =>\n applyLayouts({\n appDir: options.appDir,\n pageFile: matched.route.file,\n html: pageHtmlForLayout,\n props: {\n data,\n params: matched.params,\n queryClient,\n request: options.request,\n },\n slots: renderedPage.slots,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n clientRouteInferenceCache,\n timing,\n vitePlugins: options.vitePlugins,\n }),\n );\n finishRenderTimingPhase(timing, phaseStartedAt, \"layoutRenderMs\");\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const metadata = await loadComposedRouteMetadata({\n appDir: options.appDir,\n code: originalCode,\n context: {\n data,\n params: matched.params,\n request: options.request,\n },\n filename: matched.route.file,\n importPolicy: options.importPolicy,\n routes,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"metadataMs\");\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n html = injectHeadMetadata(html, metadata);\n warnIfCspNonceWouldBlockInlineTags({\n html,\n logger: options.logger,\n metadata,\n request: options.request,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n html = injectAuthSessionClaims(\n html,\n originalAnalysis.authIncludesClaims ? currentAuthClaims() : undefined,\n );\n html = injectQueryState(html, dehydrate(queryClient));\n\n const response = withOptionalActionCookie(\n htmlResponse(\n applyActionHtmlReplacements(\n `<!DOCTYPE html>${clientNavigationHeadTags({\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: clientStyleSheets,\n currentScript: clientRoute ? clientScript : undefined,\n currentNavigationScript: clientRoute ? undefined : navigationScript,\n routeScripts: options.clientScripts,\n })}${html}`,\n preparedActions.htmlReplacements,\n ),\n {\n headers: responseHeadersForMetadata(metadata, options.request),\n },\n ),\n preparedActions.csrfToken,\n preparedActions.csrfTokenIsNew === true,\n );\n\n const effectiveCachePolicy = cachePolicy ?? routeCacheContext.cachePolicy;\n\n const finalResponse = preparedActions.hasFormActions\n ? withRouteCacheHeader(response, effectiveCachePolicy)\n : await cacheRouteResponse({\n key: cacheKey,\n cache: options.routeCache,\n path: matched.route.path,\n policy: effectiveCachePolicy,\n request: options.request,\n response,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"responseBuildMs\");\n emitRenderTiming(options, timing, finalResponse.status);\n return finalResponse;\n } catch (error) {\n if (isRedirectError(error)) {\n const response = new Response(null, {\n headers: { location: error.location },\n status: error.status,\n });\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n if (isNotFoundError(error)) {\n const notFoundFile = await nearestBoundaryFileForPage({\n appDir: options.appDir,\n filename: \"not-found.mreact.tsx\",\n pageFile: matched.route.file,\n });\n\n const response = await renderSpecialRoute({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: options.clientStylesByFile?.get(notFoundFile),\n error: undefined,\n request: options.request,\n routePath: matched.route.path,\n routeFile: notFoundFile,\n routeScripts: options.clientScripts,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n navigation: recoveryRoute,\n status: 404,\n textFallback: \"Not Found\",\n });\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n const errorFile = await nearestBoundaryFileForPage({\n appDir: options.appDir,\n filename: \"error.mreact.tsx\",\n pageFile: matched.route.file,\n });\n\n const response = await renderSpecialRoute({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: options.clientStylesByFile?.get(errorFile),\n error,\n request: options.request,\n routePath: matched.route.path,\n routeFile: errorFile,\n routeScripts: options.clientScripts,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n navigation: recoveryRoute,\n status: 500,\n textFallback: \"Internal Server Error\",\n });\n emitRenderTiming(options, timing, response.status);\n return response;\n } finally {\n await routeCacheContext?.dispose();\n }\n}\n\nasync function applyAppRouterResponseHook(\n response: Response,\n options: RenderAppRequestOptions,\n): Promise<Response> {\n const hooked = await options.onResponse?.(response, {\n request: options.request,\n });\n\n return hooked instanceof Response ? hooked : response;\n}\n\nfunction withOptionalActionCookie(\n response: Response,\n csrfToken: string | undefined,\n csrfTokenIsNew: boolean,\n): Response {\n // Only re-issue Set-Cookie when this render minted the token. Reusing\n // an incoming cookie value (Issue 070) means no Set-Cookie is needed\n // and avoids stomping on a concurrent tab's hidden form input.\n if (csrfToken !== undefined && csrfTokenIsNew) {\n response.headers.append(\"set-cookie\", serverActionCookie(csrfToken));\n }\n\n return response;\n}\n\nfunction applyActionHtmlReplacements(\n html: string,\n replacements: readonly (readonly [string, string])[] | undefined,\n): string {\n if (replacements === undefined || replacements.length === 0) {\n return html;\n }\n\n let next = html;\n\n for (const [placeholder, value] of replacements) {\n next = next.replaceAll(placeholder, escapeHtmlAttribute(value));\n }\n\n return next;\n}\n\nfunction modulePreloadTags(script: string | undefined, assetBaseUrl: string | undefined): string {\n return script === undefined\n ? \"\"\n : `<link rel=\"modulepreload\" href=\"${escapeHtmlAttribute(\n assetPath(script, assetBaseUrl ?? \"/_mreact/client/\"),\n )}\">`;\n}\n\nfunction clientNavigationHeadTags(options: {\n assetBaseUrl: string | undefined;\n currentStyleSheets?: readonly string[] | undefined;\n currentNavigationScript?: string | undefined;\n currentScript: string | undefined;\n routeScripts: ReadonlyMap<string, string> | undefined;\n}): string {\n return [\n styleSheetTags(options.currentStyleSheets, options.assetBaseUrl),\n modulePreloadTags(options.currentScript, options.assetBaseUrl),\n navigationRuntimeScriptTag(options.currentNavigationScript, options.assetBaseUrl),\n routePrefetchManifestScript(options.routeScripts, options.assetBaseUrl),\n ].join(\"\");\n}\n\nfunction styleSheetTags(\n styleSheets: readonly string[] | undefined,\n assetBaseUrl: string | undefined,\n): string {\n return (styleSheets ?? [])\n .map(\n (styleSheet) =>\n `<link rel=\"stylesheet\" href=\"${escapeHtmlAttribute(\n styleSheetHref(styleSheet, assetBaseUrl),\n )}\">`,\n )\n .join(\"\");\n}\n\nfunction styleSheetHref(styleSheet: string, assetBaseUrl: string | undefined): string {\n if (styleSheet.startsWith(\"/\") || hasUrlScheme(styleSheet)) {\n return styleSheet;\n }\n\n return assetPath(styleSheet, assetBaseUrl ?? \"/_mreact/client/\");\n}\n\nfunction hasUrlScheme(value: string): boolean {\n const colon = value.indexOf(\":\");\n\n if (colon <= 0) {\n return false;\n }\n\n for (let index = 0; index < colon; index += 1) {\n const code = value.charCodeAt(index);\n const letter = (code >= 65 && code <= 90) || (code >= 97 && code <= 122);\n const digit = code >= 48 && code <= 57;\n const allowedSymbol = code === 43 || code === 45 || code === 46;\n\n if (index === 0 ? !letter : !letter && !digit && !allowedSymbol) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction navigationRuntimeScriptTag(\n script: string | undefined,\n assetBaseUrl: string | undefined,\n): string {\n return script === undefined\n ? \"\"\n : `<script type=\"module\" src=\"${escapeHtmlAttribute(\n assetPath(script, assetBaseUrl ?? \"/_mreact/client/\"),\n )}\"></script>`;\n}\n\nfunction routePrefetchManifestScript(\n routeScripts: ReadonlyMap<string, string> | undefined,\n assetBaseUrl: string | undefined,\n): string {\n if (routeScripts === undefined || routeScripts.size === 0) {\n return \"\";\n }\n\n const routes = Array.from(routeScripts.entries(), ([path, script]) => ({\n path,\n script: assetPath(script, assetBaseUrl ?? \"/_mreact/client/\"),\n }));\n const json = JSON.stringify(routes).replaceAll(\"<\", \"\\\\u003c\");\n\n return `<script type=\"application/json\" id=\"mreact-route-prefetch-manifest\">${json}</script>`;\n}\n\nfunction isNavigationRequest(request: Request): boolean {\n return request.headers.get(\"x-mreact-navigation\") === \"1\";\n}\n\nfunction isNavigationRouteCacheReloadRequest(request: Request): boolean {\n return (\n isNavigationRequest(request) && request.headers.get(\"x-mreact-navigation-cache\") === \"reload\"\n );\n}\n\nfunction singleFlightNavigationRequest(options: { path: string; request: Request }): Request {\n const actionUrl = new URL(options.request.url);\n const targetUrl = new URL(options.path, actionUrl);\n const headers = new Headers();\n const cookie = options.request.headers.get(\"cookie\");\n\n if (cookie !== null) {\n headers.set(\"cookie\", cookie);\n }\n\n headers.set(\"x-mreact-navigation\", \"1\");\n headers.set(\"x-mreact-navigation-cache\", \"reload\");\n\n return new Request(targetUrl, {\n headers,\n method: \"GET\",\n });\n}\n\nasync function nearestBoundaryFileForPage(options: {\n appDir: string;\n filename: string;\n pageFile: string;\n}): Promise<string> {\n const relativeDir = relative(options.appDir, dirname(options.pageFile));\n const parts = relativeDir === \"\" ? [] : relativeDir.split(sep);\n\n return nearestBoundaryFileFromParts({\n appDir: options.appDir,\n filename: options.filename,\n parts,\n });\n}\n\nasync function nearestExistingBoundaryFileForPage(options: {\n appDir: string;\n filename: string;\n pageFile: string;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<string | undefined> {\n const relativeDir = relative(options.appDir, dirname(options.pageFile));\n const parts = relativeDir === \"\" ? [] : relativeDir.split(sep);\n\n return nearestExistingBoundaryFileFromParts({\n appDir: options.appDir,\n filename: options.filename,\n parts,\n serverSourceFiles: options.serverSourceFiles,\n });\n}\n\nasync function nearestBoundaryFileForPath(options: {\n appDir: string;\n filename: string;\n pathname: string;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<string> {\n const parts = options.pathname\n .replace(/^\\/+|\\/+$/g, \"\")\n .split(\"/\")\n .filter((part) => part.length > 0 && part !== \".\" && part !== \"..\");\n\n return await nearestBoundaryFileFromParts({\n appDir: options.appDir,\n filename: options.filename,\n parts,\n serverSourceFiles: options.serverSourceFiles,\n });\n}\n\nasync function nearestBoundaryFileFromParts(options: {\n appDir: string;\n filename: string;\n parts: string[];\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<string> {\n for (let count = options.parts.length; count >= 0; count -= 1) {\n for (const filename of boundaryFilenameCandidates(options.filename)) {\n const candidate = join(options.appDir, ...options.parts.slice(0, count), filename);\n\n if (options.serverSourceFiles !== undefined) {\n if (options.serverSourceFiles.has(candidate)) {\n return candidate;\n }\n continue;\n }\n\n try {\n await access(candidate);\n return candidate;\n } catch {\n // Keep walking toward the root boundary.\n }\n }\n }\n\n return join(options.appDir, boundaryFilenameCandidates(options.filename)[0] ?? options.filename);\n}\n\nasync function nearestExistingBoundaryFileFromParts(options: {\n appDir: string;\n filename: string;\n parts: string[];\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<string | undefined> {\n for (let count = options.parts.length; count >= 0; count -= 1) {\n for (const filename of boundaryFilenameCandidates(options.filename)) {\n const candidate = join(options.appDir, ...options.parts.slice(0, count), filename);\n\n if (options.serverSourceFiles !== undefined) {\n if (options.serverSourceFiles.has(candidate)) {\n return candidate;\n }\n continue;\n }\n\n try {\n await access(candidate);\n return candidate;\n } catch {\n // Keep walking toward the root boundary.\n }\n }\n }\n\n return undefined;\n}\n\nfunction boundaryFilenameCandidates(filename: string): string[] {\n if (!filename.endsWith(\".mreact.tsx\")) {\n return [filename];\n }\n\n const standardFilename = filename.replace(\".mreact.tsx\", \".tsx\");\n\n return [standardFilename, filename];\n}\n\nasync function renderSpecialRoute(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n currentStyleSheets?: readonly string[] | undefined;\n error: unknown;\n navigation?:\n | {\n clientRoute: boolean;\n props: unknown;\n routePath: string;\n script: string | undefined;\n }\n | undefined;\n request: Request;\n routePath?: string | undefined;\n routeFile: string;\n routeScripts?: ReadonlyMap<string, string> | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n define?: UserConfig[\"define\"] | undefined;\n status: number;\n textFallback: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Response> {\n if (options.serverSourceFiles !== undefined) {\n if (!options.serverSourceFiles.has(options.routeFile)) {\n return new Response(options.textFallback, { status: options.status });\n }\n } else {\n try {\n await access(options.routeFile);\n } catch {\n return new Response(options.textFallback, { status: options.status });\n }\n }\n\n const props = {\n data: undefined,\n debug: errorDebugContext(options.error, options.routePath),\n error: normalizeErrorForProps(options.error),\n params: {},\n queryClient: createQueryClient(),\n request: options.request,\n requestId: requestIdForErrorContext(options.request),\n routeId: routeIdForPath(options.routePath ?? new URL(options.request.url).pathname),\n traceId: traceContextFromRequest(options.request)?.traceId,\n };\n const pageHtml = await renderServerFileToHtml(\n options.routeFile,\n props,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n options.define,\n options.vitePlugins,\n );\n const pageHtmlForLayout =\n options.navigation?.clientRoute === true\n ? withHydrationMarkers({\n assetBaseUrl: options.assetBaseUrl,\n clientReferenceManifest: undefined,\n html: pageHtml,\n props: options.navigation.props,\n routePath: options.navigation.routePath,\n script: options.navigation.script,\n })\n : pageHtml;\n const html = await applyLayouts({\n appDir: options.appDir,\n pageFile: options.routeFile,\n html: pageHtmlForLayout,\n props,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n\n return new Response(\n `<!DOCTYPE html>${clientNavigationHeadTags({\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: options.currentStyleSheets,\n currentScript:\n options.navigation?.clientRoute === true ? options.navigation.script : undefined,\n routeScripts: options.routeScripts,\n })}${html}`,\n {\n headers: { \"content-type\": \"text/html; charset=utf-8\" },\n status: options.status,\n },\n );\n}\n\nasync function renderServerFileToHtml(\n file: string,\n props: ServerComponentProps,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n serverSourceFiles: ReadonlyMap<string, string> | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n): Promise<string> {\n const code = await readServerSourceFile(file, serverModuleCacheVersion, serverSourceFiles);\n const output = transformServerModule({\n code,\n filename: file,\n serverModules,\n serverOutput: \"string\",\n });\n const fatalDiagnostics = fatalServerDiagnostics(output.diagnostics);\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(formatServerDiagnostics(file, fatalDiagnostics));\n }\n\n return runServerModule(\n output.code,\n props,\n file,\n serverModules,\n serverModuleCacheVersion,\n define,\n vitePlugins,\n );\n}\n\nfunction normalizeErrorForProps(error: unknown): { message: string } {\n if (error instanceof Error) {\n return { message: error.message };\n }\n\n return { message: String(error) };\n}\n\nfunction requestIdForErrorContext(request: Request): string {\n return request.headers.get(\"x-request-id\") ?? randomUUID();\n}\n\nfunction errorDebugContext(\n error: unknown,\n routePath: string | undefined,\n):\n | {\n cause?: unknown;\n route?: { matched: string };\n stack?: string;\n }\n | undefined {\n if (process.env.NODE_ENV === \"production\" || !(error instanceof Error)) {\n return undefined;\n }\n\n return {\n ...(error.cause === undefined ? {} : { cause: error.cause }),\n ...(routePath === undefined ? {} : { route: { matched: routePath } }),\n ...(error.stack === undefined ? {} : { stack: error.stack }),\n };\n}\n\nasync function dispatchServerRoute(options: {\n appDir: string;\n env?: unknown;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n params: RouteParams;\n request: Request;\n route: AppRoute;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Response> {\n const module = await loadServerRouteModule(options);\n const handler = module[options.request.method] ?? module.ALL ?? module.default;\n\n if (typeof handler !== \"function\") {\n return new Response(\"Method Not Allowed\", {\n headers: { allow: allowedServerRouteMethods(module).join(\", \") },\n status: 405,\n });\n }\n\n let response: unknown;\n\n try {\n response = await handler(options.request, {\n env: options.env,\n params: options.params,\n request: options.request,\n route: options.route,\n });\n } catch (error) {\n if (error instanceof Response) {\n return error;\n }\n\n throw error;\n }\n\n return response instanceof Response\n ? response\n : new Response(\"Invalid route response\", { status: 500 });\n}\n\nfunction allowedServerRouteMethods(module: Record<string, unknown>): string[] {\n return [\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"HEAD\", \"OPTIONS\"].filter(\n (method) => typeof module[method] === \"function\",\n );\n}\n\nasync function dispatchConventionAssetRoute(options: {\n file: string;\n request: Request;\n}): Promise<Response> {\n if (options.request.method !== \"GET\" && options.request.method !== \"HEAD\") {\n return new Response(\"Method Not Allowed\", {\n status: 405,\n headers: { allow: \"GET, HEAD\" },\n });\n }\n\n const bytes = await readFile(options.file);\n return bytesResponse(options.request.method === \"HEAD\" ? new Uint8Array() : bytes, {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": appFileConventionContentType(options.file),\n },\n });\n}\n\nfunction textConventionResponse(body: string): Response {\n return htmlResponse(body, {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": \"text/plain; charset=utf-8\",\n },\n });\n}\n\nfunction xmlConventionResponse(body: string): Response {\n return htmlResponse(body, {\n headers: {\n \"cache-control\": \"no-cache\",\n \"content-type\": \"application/xml; charset=utf-8\",\n },\n });\n}\n\nfunction jsonConventionResponse(body: ManifestDescriptor): Response {\n return htmlResponse(JSON.stringify(body), {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": \"application/manifest+json; charset=utf-8\",\n },\n });\n}\n\nasync function dispatchMetadataRoute(options: {\n appDir: string;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n params: RouteParams;\n request: Request;\n route: Extract<AppRoute, { kind: \"metadata\" }>;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Response> {\n if (options.request.method !== \"GET\" && options.request.method !== \"HEAD\") {\n return new Response(\"Method Not Allowed\", {\n status: 405,\n headers: { allow: \"GET, HEAD\" },\n });\n }\n\n const module = await loadServerRouteModule(options);\n const handler = module.default;\n if (typeof handler !== \"function\") {\n return new Response(\"Invalid metadata route response\", { status: 500 });\n }\n\n const url = new URL(options.request.url);\n const context = {\n baseUrl: url.origin,\n host: url.host,\n params: options.params,\n request: options.request,\n };\n const value = await handler(context);\n\n if (value instanceof Response) {\n return value;\n }\n\n if (options.route.convention === \"robots\") {\n return textConventionResponse(serializeRobots(value as RobotsManifest));\n }\n if (options.route.convention === \"sitemap\") {\n return xmlConventionResponse(serializeSitemap(value as readonly SitemapEntry[]));\n }\n if (options.route.convention === \"manifest\") {\n return jsonConventionResponse(value as ManifestDescriptor);\n }\n if (options.route.convention === \"opengraph-image\") {\n const body =\n value instanceof Uint8Array\n ? value\n : new TextEncoder().encode(typeof value === \"string\" ? value : String(value));\n return bytesResponse(body, {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\":\n typeof value === \"string\" && value.trimStart().startsWith(\"<svg\")\n ? \"image/svg+xml\"\n : \"application/octet-stream\",\n },\n });\n }\n\n return new Response(\"Invalid metadata route convention\", { status: 500 });\n}\n\nasync function loadServerRouteModule(options: {\n appDir: string;\n define?: UserConfig[\"define\"] | undefined;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Record<string, unknown>> {\n const code = await readServerSourceFile(\n options.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n const externalSourceDirs = devExternalSourceDirs(options.file, options.importPolicy);\n\n if (\n options.serverModuleCacheVersion === undefined &&\n options.define === undefined &&\n (options.vitePlugins === undefined || options.vitePlugins.length === 0) &&\n (externalSourceDirs === undefined || !hasRelativeSourceImport(code))\n ) {\n return await importAppRouterFileModule<Record<string, unknown>>(options.file);\n }\n\n const artifactCode = options.serverModules?.get(options.file)?.request;\n const codeHash = memoizedHashText(code);\n if (\n artifactCode !== undefined &&\n artifactCode.sourceHash === codeHash &&\n artifactCode.moduleFile !== undefined\n ) {\n return await importBuiltServerModuleFile<Record<string, unknown>>({\n file: artifactCode.moduleFile,\n label: `server-route:${options.file}`,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n }\n\n const moduleCode =\n artifactCode !== undefined && artifactCode.sourceHash === codeHash ? artifactCode.code : code;\n const cacheKey = `server-route\\0${options.file}\\0${options.serverModuleCacheVersion}\\0${codeHash}\\0${memoizedHashText(moduleCode)}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n const cached = readRouterRuntimeCacheEntry(\n serverRouteModuleCache,\n cacheKey,\n serverRouteModuleCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = importAppRouterSourceModule<Record<string, unknown>>({\n cacheKey,\n code: moduleCode,\n define: options.define,\n externalizeAppSourceModuleDirs: externalSourceDirs,\n label: `server-route:${options.file}`,\n plugins: [\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n label: \"Route handler\",\n }),\n ],\n ...(moduleCode === code ? { resolveDir: dirname(options.file) } : {}),\n sourcefile: options.file,\n vitePlugins: options.vitePlugins,\n }).catch((error) => {\n serverRouteModuleCache.delete(cacheKey);\n throw error;\n });\n setBoundedCacheEntry(\n serverRouteModuleCache,\n cacheKey,\n loaded,\n maxServerRouteModuleCacheEntries,\n serverRouteModuleCacheCounters,\n );\n\n return loaded;\n}\n\nfunction hasRelativeSourceImport(code: string): boolean {\n return (\n /\\b(?:import|export)\\s+(?:[^\"'()]*?\\s+from\\s+)?[\"']\\.{1,2}\\//u.test(code) ||\n /\\bimport\\s*\\(\\s*[\"']\\.{1,2}\\//u.test(code)\n );\n}\n\nfunction devExternalSourceDirs(\n baseDir: string,\n importPolicy: AppRouterImportPolicy | undefined,\n): readonly string[] | undefined {\n if (importPolicy?.allowedSourceDirs === undefined) {\n return undefined;\n }\n\n const projectRoot = resolve(importPolicy.projectRoot ?? baseDir);\n return importPolicy.allowedSourceDirs.map((directory) => resolve(projectRoot, directory));\n}\n\nasync function runMiddleware(options: {\n appDir: string;\n define?: UserConfig[\"define\"] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n instrumentation?: RouterInstrumentation | undefined;\n middlewareControl?: RouteMiddlewareControl | undefined;\n request: Request;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Response | undefined> {\n if (options.middlewareControl?.skip === true) {\n return undefined;\n }\n\n const candidates = [\n join(options.appDir, \"middleware.ts\"),\n join(options.appDir, \"middleware.mreact.ts\"),\n ];\n const pathname = new URL(options.request.url).pathname;\n\n if (Array.isArray(options.middlewareControl?.skip)) {\n validateRouteMiddlewareControl({\n availableIds: await collectAvailableMiddlewareIds({\n candidates,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n }),\n control: options.middlewareControl,\n routePath: pathname,\n });\n }\n\n for (const file of candidates) {\n try {\n await access(file);\n } catch {\n continue;\n }\n\n const code = await readServerSourceFile(\n file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n const staticConfig = parseStaticMiddlewareConfig(code);\n\n if (shouldSkipMiddleware(staticConfig, options.middlewareControl)) {\n return undefined;\n }\n\n if (\n staticConfig.hasMatcher &&\n staticConfig.matcher !== undefined &&\n !middlewareMatches(staticConfig, pathname)\n ) {\n return undefined;\n }\n\n let module: MiddlewareModule;\n const moduleLoadStartedAt = renderTimingPhaseStartedAt(options.timing);\n try {\n module = await loadMiddlewareModule({\n appDir: options.appDir,\n code,\n define: options.define,\n file,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n });\n } finally {\n finishRenderTimingPhase(options.timing, moduleLoadStartedAt, \"middlewareModuleLoadMs\");\n }\n\n if (shouldSkipMiddleware(module.config, options.middlewareControl)) {\n return undefined;\n }\n\n if (!middlewareMatches(module.config, pathname)) {\n return undefined;\n }\n\n const middleware = module.middleware ?? module.default;\n\n if (typeof middleware !== \"function\") {\n return undefined;\n }\n\n const trace = traceContextFromRequest(options.request);\n const event = {\n method: options.request.method,\n name: \"middleware\",\n path: new URL(options.request.url).pathname,\n request: options.request,\n ...(trace === undefined ? {} : { trace }),\n };\n invokeRouterInstrumentation(options.instrumentation?.onMiddlewareStart, event);\n\n try {\n const executionStartedAt = renderTimingPhaseStartedAt(options.timing);\n let response: unknown;\n try {\n response = await middleware(options.request);\n } finally {\n finishRenderTimingPhase(options.timing, executionStartedAt, \"middlewareExecutionMs\");\n }\n invokeRouterInstrumentation(options.instrumentation?.onMiddlewareEnd, event);\n\n return response instanceof Response ? response : undefined;\n } catch (error) {\n invokeRouterInstrumentation(options.instrumentation?.onMiddlewareEnd, {\n ...event,\n error,\n });\n\n if (isRedirectError(error)) {\n return new Response(null, {\n headers: { location: error.location },\n status: error.status,\n });\n }\n\n if (isNotFoundError(error)) {\n return new Response(\"Not Found\", { status: 404 });\n }\n\n throw error;\n }\n }\n\n return undefined;\n}\n\nasync function collectAvailableMiddlewareIds(options: {\n candidates: readonly string[];\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<ReadonlySet<string>> {\n const ids = new Set<string>();\n\n for (const file of options.candidates) {\n try {\n await access(file);\n } catch {\n continue;\n }\n\n const code = await readServerSourceFile(\n file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n const id = parseStaticMiddlewareConfig(code).id;\n\n if (id !== undefined) {\n ids.add(id);\n }\n }\n\n return ids;\n}\n\nasync function loadMiddlewareModule(options: {\n appDir: string;\n code?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<MiddlewareModule> {\n const code =\n options.code ??\n (await readServerSourceFile(\n options.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n ));\n const cacheKey =\n options.serverModuleCacheVersion === undefined\n ? undefined\n : `middleware\\0${options.appDir}\\0${options.file}\\0${options.serverModuleCacheVersion}\\0${memoizedHashText(code)}\\0${importPolicyCacheKey(options.importPolicy)}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n\n if (cacheKey !== undefined) {\n const cached = readRouterRuntimeCacheEntry(\n middlewareModuleCache,\n cacheKey,\n middlewareModuleCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n }\n\n const loaded = loadBundledMiddlewareModule({\n appDir: options.appDir,\n code,\n define: options.define,\n file: options.file,\n importPolicy: options.importPolicy,\n prebuiltArtifact: prebuiltRequestModuleArtifact(options.serverModules, options.file, code),\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n vitePlugins: options.vitePlugins,\n }).catch((error) => {\n if (cacheKey !== undefined) {\n middlewareModuleCache.delete(cacheKey);\n }\n throw error;\n });\n\n if (cacheKey !== undefined) {\n setBoundedCacheEntry(\n middlewareModuleCache,\n cacheKey,\n loaded,\n maxMiddlewareModuleCacheEntries,\n middlewareModuleCacheCounters,\n );\n }\n\n return loaded;\n}\n\nexport async function bundleMiddlewareModuleCode(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAllowedPackages?: boolean | undefined;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: options.code,\n define: options.define,\n filename: options.file,\n platform: \"node\",\n root: options.importPolicy?.projectRoot,\n plugins: [\n fileImportMetaUrlPlugin(),\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n importPolicy: options.importPolicy,\n label: \"Middleware\",\n }),\n ],\n vitePlugins: options.vitePlugins,\n });\n const compiled = output.code;\n\n if (compiled === undefined) {\n throw new Error(`Failed to compile middleware for ${options.file}.`);\n }\n\n return compiled;\n}\n\nasync function loadBundledMiddlewareModule(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n prebuiltArtifact?: BuiltServerModuleOutputLike | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<MiddlewareModule> {\n if (options.prebuiltArtifact?.moduleFile !== undefined) {\n return await importBuiltServerModuleFile<MiddlewareModule>({\n file: options.prebuiltArtifact.moduleFile,\n label: `middleware:${options.file}`,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n }\n\n const compiled =\n options.prebuiltArtifact?.code ??\n (await bundleMiddlewareModuleCode({\n appDir: options.appDir,\n code: options.code,\n define: options.define,\n file: options.file,\n importPolicy: options.importPolicy,\n vitePlugins: options.vitePlugins,\n }));\n\n return importAppRouterSourceModule<MiddlewareModule>({\n ...(options.serverModuleCacheVersion === undefined\n ? {}\n : {\n cacheKey: `middleware:${options.file}:${options.serverModuleCacheVersion}:${memoizedHashText(compiled)}:${viteDefineCacheKey(options.define)}:${vitePluginsCacheKey(options.vitePlugins)}`,\n }),\n code: compiled,\n define: options.define,\n label: `middleware:${options.file}`,\n vitePlugins: options.vitePlugins,\n });\n}\n\nfunction transformServerModule(options: {\n code: string;\n clientBoundaryImports?: readonly string[];\n clientBoundaryFallbackImports?: readonly string[];\n filename: string;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverOutput: ServerOutputMode;\n serverAwaitHydration?: boolean;\n}): TransformOutput {\n const sourceHash = memoizedHashText(options.code);\n const artifact = options.serverModules?.get(options.filename)?.[options.serverOutput];\n\n if (\n artifact !== undefined &&\n artifact.sourceHash === sourceHash &&\n prebuiltServerModuleOutputOptionsMatch(\n artifact,\n options.serverAwaitHydration === true ? { serverAwaitHydration: true } : {},\n )\n ) {\n return {\n code: artifact.code,\n diagnostics: [],\n map: null,\n metadata: artifact.metadata ?? {\n compiler: {\n frontend: \"oxc\",\n typescriptFallback: false,\n },\n components: [],\n filename: options.filename,\n imports: [],\n serverOutput: options.serverOutput,\n target: \"server\",\n },\n };\n }\n\n const awaitHydrationKey = options.serverAwaitHydration === true ? \"1\" : \"0\";\n const boundaryKey = options.clientBoundaryImports?.join(\"\\0\") ?? \"\";\n const fallbackKey = options.clientBoundaryFallbackImports?.join(\"\\0\") ?? \"\";\n const key = `${options.filename}\\0${options.serverOutput}\\0${sourceHash}\\0${awaitHydrationKey}\\0${boundaryKey}\\0${fallbackKey}`;\n const cached = readRouterRuntimeCacheEntry(\n serverTransformCache,\n key,\n serverTransformCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n // Only renders that were handed a prebuild map can have a prebuild gap;\n // dev servers pass no serverModules and transform at request time by design.\n if (options.serverModules !== undefined) {\n warnProductionDynamicServerTransform(\n options.filename,\n options.serverOutput,\n artifact === undefined\n ? \"no prebuilt server module for this output mode\"\n : !prebuiltServerModuleOutputOptionsMatch(\n artifact,\n options.serverAwaitHydration === true ? { serverAwaitHydration: true } : {},\n )\n ? `serverAwaitHydration mismatch (artifact=${artifact.metadata?.serverAwaitHydration === true}, requested=${options.serverAwaitHydration === true})`\n : \"stale prebuilt server module (source hash changed)\",\n );\n }\n\n const output = transform({\n code: options.code,\n ...(options.clientBoundaryImports === undefined\n ? {}\n : { clientBoundaryImports: options.clientBoundaryImports }),\n ...(options.clientBoundaryFallbackImports === undefined\n ? {}\n : { clientBoundaryFallbackImports: options.clientBoundaryFallbackImports }),\n dev: true,\n filename: options.filename,\n serverEscape: nativeEscapeTransform,\n serverOutput: options.serverOutput,\n target: \"server\",\n ...(options.serverAwaitHydration === true ? { serverAwaitHydration: true } : {}),\n });\n\n setBoundedCacheEntry(\n serverTransformCache,\n key,\n output,\n maxServerTransformCacheEntries,\n serverTransformCacheCounters,\n );\n\n return output;\n}\n\nexport const __transformServerModuleForTesting = transformServerModule;\n\nlet productionRenderWithoutPrebuiltModulesWarned = false;\n\nexport function __resetProductionRenderWarningsForTesting(): void {\n productionRenderWithoutPrebuiltModulesWarned = false;\n productionDynamicServerTransformWarned.clear();\n}\n\n// Covers the deployment that forgot prebuilt modules entirely; per-module\n// gaps inside a provided prebuild map are reported by\n// warnProductionDynamicServerTransform with the affected file instead.\nexport function __warnProductionRenderWithoutPrebuiltModulesForTesting(options: {\n dev?: boolean | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n}): void {\n warnProductionRenderWithoutPrebuiltModules(options);\n}\n\nfunction warnProductionRenderWithoutPrebuiltModules(options: {\n dev?: boolean | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n}): void {\n if (\n process.env.NODE_ENV !== \"production\" ||\n options.dev === true ||\n options.serverModules !== undefined ||\n productionRenderWithoutPrebuiltModulesWarned\n ) {\n return;\n }\n\n productionRenderWithoutPrebuiltModulesWarned = true;\n console.warn(\n \"mreact router: production render without prebuilt serverModules. Request-time transforms use development compiler settings; pass the build output's serverModules (or set dev: true for dev servers).\",\n );\n}\n\nfunction warnProductionDynamicServerTransform(\n filename: string,\n serverOutput: ServerOutputMode,\n reason: string,\n): void {\n if (process.env.NODE_ENV !== \"production\") {\n return;\n }\n\n const warnedKey = `${filename}\\0${serverOutput}`;\n\n if (productionDynamicServerTransformWarned.has(warnedKey)) {\n return;\n }\n\n productionDynamicServerTransformWarned.add(warnedKey);\n console.warn(\n `mreact router: dynamic server transform path ran in production for ${filename} (serverOutput=${serverOutput}): ${reason}. Production deployments should provide prebuilt serverModules; otherwise request-time transforms use development compiler settings.`,\n );\n}\n\nasync function analyzeRouteSource(options: {\n appDir: string;\n artifact?: BuiltRouteSourceAnalysisSummary | undefined;\n buildRenderCode?: boolean | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n routePath: string;\n serverModuleCacheVersion: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteSourceAnalysis> {\n const sourceHash = memoizedHashText(options.code);\n if (\n options.artifact !== undefined &&\n options.serverModuleCacheVersion !== undefined &&\n options.artifact.sourceHash === sourceHash &&\n options.artifact.routePath === options.routePath\n ) {\n const artifactStartedAt = renderTimingPhaseStartedAt(options.timing);\n const analysis = routeSourceAnalysisFromArtifact(options.artifact);\n finishRenderTimingPhase(options.timing, artifactStartedAt, \"sourceAnalysisArtifactMs\");\n return analysis;\n }\n\n const cacheKey = `${options.serverModuleCacheVersion ?? \"dev\"}\\0${options.filename}\\0${sourceHash}\\0${options.buildRenderCode === true ? \"build-render\" : \"render\"}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n const cached = readRouterRuntimeCacheEntry(\n routeSourceAnalysisCache,\n cacheKey,\n routeSourceAnalysisCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const pending = analyzeRouteSourceUncached(options).catch((error) => {\n routeSourceAnalysisCache.delete(cacheKey);\n throw error;\n });\n setBoundedCacheEntry(\n routeSourceAnalysisCache,\n cacheKey,\n pending,\n maxRouteSourceAnalysisCacheEntries,\n routeSourceAnalysisCacheCounters,\n );\n\n return pending;\n}\n\nfunction routeSourceAnalysisFromArtifact(\n artifact: BuiltRouteSourceAnalysisSummary,\n): RouteSourceAnalysis {\n return {\n authIncludesClaims: artifact.authIncludesClaims,\n cachePolicy: artifact.cachePolicy,\n clientInference: {\n client: artifact.clientRoute,\n clientBoundaryImports: [...artifact.clientBoundaryImports],\n clientBoundaryFallbackImports: [...(artifact.clientBoundaryFallbackImports ?? [])],\n diagnostics: [],\n },\n hasLoader: artifact.hasLoader,\n routeCode: artifact.routeCode,\n streamRoute: artifact.streamRoute,\n usesRuntimeCacheControl: artifact.usesRuntimeCacheControl,\n };\n}\n\nasync function analyzeRouteSourceUncached(options: {\n appDir: string;\n buildRenderCode?: boolean | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n routePath: string;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteSourceAnalysis> {\n const routeCode =\n options.buildRenderCode === true\n ? stripRouteBuildExports(options.code, options.filename)\n : stripRouteModuleExports(options.code, options.filename);\n const clientInference = await inferClientRouteModule({\n appDir: options.appDir,\n cache: options.clientRouteInferenceCache,\n code: stripRouteClientSource({ code: options.code, filename: options.filename }),\n filename: options.filename,\n routePath: options.routePath,\n vitePlugins: options.vitePlugins,\n });\n\n return {\n authIncludesClaims: authIncludesClaims(options.code),\n cachePolicy: routeCachePolicyFromSource(options.code),\n clientInference,\n hasLoader: hasLoaderExport(options.code),\n routeCode,\n streamRoute:\n isStreamRouteSource(options.code) ||\n routeClosureMayUseAwaitBoundary({\n filename: options.filename,\n files: routeSourceFilesForAnalysis(options),\n projectRoot: options.appDir,\n source: options.code,\n }),\n usesRuntimeCacheControl: usesRuntimeCacheControl(options.code),\n };\n}\n\nfunction routeSourceFilesForAnalysis(options: {\n code: string;\n filename: string;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): (file: string) => string | undefined {\n return (file) =>\n file === options.filename ? options.code : options.serverSourceFiles?.get(file);\n}\n\nasync function runServerModule(\n code: string,\n props: ServerComponentProps,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define: UserConfig[\"define\"] | undefined,\n vitePlugins: readonly PluginOption[] | undefined,\n): Promise<string> {\n const component = await loadServerComponent(\n code,\n sourcefile,\n serverModules,\n serverModuleCacheVersion,\n define,\n vitePlugins,\n );\n\n return renderServerComponentResult(await component(props));\n}\n\nasync function renderServerComponentResult(value: unknown): Promise<string> {\n return typeof value === \"string\" ? value : renderReactNodeToString(value);\n}\n\nasync function runServerModuleWithSlots(\n code: string,\n props: ServerComponentProps,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n timing?: RenderTiming | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n devServerModuleCacheVersion?: string | undefined,\n): Promise<{ html: string; slots: Record<string, string> }> {\n const moduleLoadStartedAt = renderTimingPhaseStartedAt(timing);\n const module = await loadServerModule(\n code,\n sourcefile,\n serverModules,\n serverModuleCacheVersion,\n define,\n vitePlugins,\n importPolicy,\n devServerModuleCacheVersion,\n );\n finishRenderTimingPhase(timing, moduleLoadStartedAt, \"pageModuleLoadMs\");\n const component = selectServerComponent(module);\n const componentStartedAt = renderTimingPhaseStartedAt(timing);\n const html = await renderServerComponentResult(await component(props));\n finishRenderTimingPhase(timing, componentStartedAt, \"pageComponentRenderMs\");\n const slotsStartedAt = renderTimingPhaseStartedAt(timing);\n const slots = await renderRouteSlots(module.slots, props);\n finishRenderTimingPhase(timing, slotsStartedAt, \"routeSlotsRenderMs\");\n\n return {\n html,\n slots,\n };\n}\n\nasync function loadServerModule(\n code: string,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n devServerModuleCacheVersion?: string | undefined,\n): Promise<ServerModuleExports> {\n const artifact = serverModules?.get(sourcefile)?.string;\n const codeHash = memoizedHashText(code);\n const prebuiltCode = prebuiltServerComponentModuleCode(artifact, code, codeHash);\n const usesPrebuiltCompiledCode = artifact?.code === code;\n if (\n artifact !== undefined &&\n prebuiltServerModuleOutputMatches(artifact, code, codeHash) &&\n artifact.moduleFile !== undefined\n ) {\n return await importBuiltServerModuleFile<ServerModuleExports>({\n file: artifact.moduleFile,\n label: `server-component:${sourcefile}`,\n serverModuleCacheVersion,\n });\n }\n const moduleCode =\n prebuiltCode === undefined\n ? code\n : rewriteCompatVendorPlaceholderImportsForRunner(prebuiltCode);\n const sourceModuleCacheVersion = serverModuleCacheVersion ?? devServerModuleCacheVersion;\n const cacheKey =\n sourceModuleCacheVersion === undefined\n ? undefined\n : `server-component:${serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}:${sourceModuleCacheVersion}:${sourcefile}:${\n moduleCode === code ? codeHash : memoizedHashText(moduleCode)\n }:${importPolicyCacheKey(importPolicy)}:${viteDefineCacheKey(define)}:${vitePluginsCacheKey(vitePlugins)}`;\n return await importAppRouterSourceModule<ServerModuleExports>({\n cacheKey,\n code: moduleCode,\n define,\n label: `server-component:${sourcefile}`,\n plugins:\n importPolicy === undefined\n ? undefined\n : [\n createAppRouterImportPolicyPlugin({\n appDir: dirname(sourcefile),\n importPolicy,\n label: \"Server component\",\n }),\n ],\n ...(prebuiltCode === undefined && !usesPrebuiltCompiledCode\n ? {\n resolveDir: dirname(sourcefile),\n serverSourceTransform: {\n dev: serverModuleCacheVersion === undefined,\n serverModules,\n serverOutput: \"string\" as const,\n define,\n vitePlugins,\n },\n }\n : {}),\n ...(usesPrebuiltCompiledCode ? { resolveDir: dirname(sourcefile) } : {}),\n sourcefile,\n vitePlugins,\n });\n}\n\nasync function importBuiltServerModuleFile<T>(options: {\n file: string;\n label: string;\n serverModuleCacheVersion?: string | undefined;\n}): Promise<T> {\n return await importAppRouterBuiltFileModule<T>({\n ...(options.serverModuleCacheVersion === undefined\n ? {}\n : {\n cacheKey: `${options.label}:${options.serverModuleCacheVersion}:${options.file}`,\n }),\n file: options.file,\n });\n}\n\nasync function loadServerComponent(\n code: string,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n): Promise<ServerComponent> {\n const module = await loadServerModule(\n code,\n sourcefile,\n serverModules,\n serverModuleCacheVersion,\n define,\n vitePlugins,\n importPolicy,\n );\n return selectServerComponent(module);\n}\n\nfunction selectServerComponent(module: ServerModuleExports): ServerComponent {\n const component = module.default ?? module.App ?? Object.values(module)[0];\n\n if (typeof component !== \"function\") {\n throw new Error(\"No page component export was found.\");\n }\n\n return component as ServerComponent;\n}\n\nasync function renderRouteSlots(\n slots: RouteSlotExports | undefined,\n props: ServerComponentProps,\n): Promise<Record<string, string>> {\n if (slots === undefined) {\n return {};\n }\n\n const rendered: Record<string, string> = {};\n\n for (const [name, value] of Object.entries(slots)) {\n rendered[name] =\n typeof value === \"function\"\n ? await renderServerComponentResult(await value(props))\n : await renderServerComponentResult(value);\n }\n\n return rendered;\n}\n\nfunction runServerStreamModule(\n code: string,\n options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n pageFile: string;\n props: ServerComponentProps;\n routePath: string;\n routeScripts?: ReadonlyMap<string, string> | undefined;\n clientRoute: boolean;\n clientReferenceManifest?: readonly ClientReferenceMetadata[] | undefined;\n define?: UserConfig[\"define\"] | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n script?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n },\n): ReadableStream<Uint8Array> {\n return renderToReadableStream(async (sink) => {\n const slots = await renderServerStreamSlots(code, {\n pageFile: options.pageFile,\n props: options.props,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n define: options.define,\n vitePlugins: options.vitePlugins,\n importPolicy: options.importPolicy,\n });\n const layoutShells = await layoutShellsForPage(\n options.appDir,\n options.pageFile,\n options.props,\n slots,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n options.clientRouteInferenceCache,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n const marker = options.clientRoute\n ? hydrationMarkerParts({\n assetBaseUrl: options.assetBaseUrl,\n clientReferenceManifest: options.clientReferenceManifest,\n routePath: options.routePath,\n script: options.script,\n props: {\n params: options.props.params,\n request: { url: options.props.request.url },\n data: options.props.data,\n },\n })\n : undefined;\n\n sink.append(\"<!DOCTYPE html>\");\n sink.append(\n clientNavigationHeadTags({\n assetBaseUrl: options.assetBaseUrl,\n currentScript: options.clientRoute ? options.script : undefined,\n routeScripts: options.routeScripts,\n }),\n );\n\n for (const shell of layoutShells) {\n sink.append(shell.prefix);\n }\n\n sink.append(marker?.prefix ?? \"\");\n\n await appendServerStreamModule(\n code,\n sink,\n options.props,\n options.pageFile,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n\n sink.append(marker?.suffix ?? \"\");\n\n for (const shell of [...layoutShells].reverse()) {\n sink.append(shell.suffix);\n }\n\n if (hasOutOfOrderBoundary(code) || layoutShells.some((shell) => shell.hasOutOfOrderBoundary)) {\n renderOutOfOrderReorderScript(sink);\n }\n });\n}\n\nfunction hasOutOfOrderBoundary(code: string): boolean {\n return code.includes(\"renderOutOfOrderBoundary\");\n}\n\nfunction mayRenderOutOfOrderBoundary(code: string): boolean {\n return (\n code.includes(\"<Await\") || code.includes(\"Await(\") || code.includes(\"renderOutOfOrderBoundary\")\n );\n}\n\nasync function mayRenderOutOfOrderBoundaryDeep(options: {\n code: string;\n filename: string;\n serverModuleCacheVersion: string | undefined;\n serverSourceFiles: ReadonlyMap<string, string> | undefined;\n}): Promise<boolean> {\n const seen = new Set<string>();\n\n return await mayRenderOutOfOrderBoundaryDeepInner(options, seen);\n}\n\nasync function mayRenderOutOfOrderBoundaryDeepInner(\n options: {\n code: string;\n filename: string;\n serverModuleCacheVersion: string | undefined;\n serverSourceFiles: ReadonlyMap<string, string> | undefined;\n },\n seen: Set<string>,\n): Promise<boolean> {\n if (mayRenderOutOfOrderBoundary(options.code)) {\n return true;\n }\n\n if (seen.has(options.filename)) {\n return false;\n }\n seen.add(options.filename);\n\n const sourceHash = memoizedHashText(options.code);\n const cacheKey = `${options.serverModuleCacheVersion ?? \"dev\"}\\0${options.filename}\\0${sourceHash}`;\n const cached = readRouterRuntimeCacheEntry(\n routeOutOfOrderBoundaryAnalysisCache,\n cacheKey,\n routeOutOfOrderBoundaryAnalysisCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const pending = mayRenderImportedOutOfOrderBoundary(options, seen).catch((error) => {\n routeOutOfOrderBoundaryAnalysisCache.delete(cacheKey);\n throw error;\n });\n setBoundedCacheEntry(\n routeOutOfOrderBoundaryAnalysisCache,\n cacheKey,\n pending,\n maxRouteOutOfOrderBoundaryAnalysisCacheEntries,\n routeOutOfOrderBoundaryAnalysisCacheCounters,\n );\n\n return pending;\n}\n\nasync function mayRenderImportedOutOfOrderBoundary(\n options: {\n code: string;\n filename: string;\n serverModuleCacheVersion: string | undefined;\n serverSourceFiles: ReadonlyMap<string, string> | undefined;\n },\n seen: Set<string>,\n): Promise<boolean> {\n for (const specifier of localModuleSpecifiers(options.code)) {\n const file = await resolveLocalServerSourceImport(options.filename, specifier);\n\n if (file === undefined) {\n continue;\n }\n\n const code = await readServerSourceFile(\n file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n\n if (\n await mayRenderOutOfOrderBoundaryDeepInner(\n {\n code,\n filename: file,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n },\n seen,\n )\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction localModuleSpecifiers(code: string): string[] {\n const specifiers = new Set<string>();\n const importPattern =\n /\\b(?:import|export)\\s+(?:type\\s+)?(?:[^\"']*?\\s+from\\s*)?[\"'](?<source>\\.{1,2}\\/[^\"']+)[\"']/g;\n\n for (const match of code.matchAll(importPattern)) {\n const source = match.groups?.source;\n\n if (source !== undefined) {\n specifiers.add(source);\n }\n }\n\n return Array.from(specifiers);\n}\n\nasync function resolveLocalServerSourceImport(\n fromFile: string,\n specifier: string,\n): Promise<string | undefined> {\n const base = join(dirname(fromFile), specifier);\n const candidates = localServerSourceImportCandidates(base);\n\n for (const candidate of candidates) {\n try {\n await access(candidate);\n return candidate;\n } catch {\n // Try the next TypeScript route/source extension.\n }\n }\n\n return undefined;\n}\n\nfunction localServerSourceImportCandidates(base: string): string[] {\n const candidates = [base];\n\n if (base.endsWith(\".js\")) {\n const withoutJs = base.slice(0, -\".js\".length);\n candidates.push(`${withoutJs}.ts`, `${withoutJs}.tsx`, `${withoutJs}.mreact.tsx`);\n } else if (base.endsWith(\".jsx\")) {\n const withoutJsx = base.slice(0, -\".jsx\".length);\n candidates.push(`${withoutJsx}.tsx`, `${withoutJsx}.mreact.tsx`);\n } else if (base.endsWith(\".mreact\")) {\n candidates.push(`${base}.tsx`);\n } else {\n candidates.push(\n `${base}.ts`,\n `${base}.tsx`,\n `${base}.mreact.tsx`,\n join(base, \"index.ts\"),\n join(base, \"index.tsx\"),\n join(base, \"index.mreact.tsx\"),\n );\n }\n\n return candidates;\n}\n\nasync function runServerStreamModuleWithLoading(\n code: string,\n options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n clientRoute: boolean;\n clientReferenceManifest?: readonly ClientReferenceMetadata[] | undefined;\n data: Promise<unknown>;\n define?: UserConfig[\"define\"] | undefined;\n loadingFile: string;\n pageFile: string;\n params: RouteParams;\n queryClient: QueryClient;\n request: Request;\n routePath: string;\n routeScripts?: ReadonlyMap<string, string> | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n script?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n },\n): Promise<ReadableStream<Uint8Array>> {\n const loadingProps = {\n data: undefined,\n params: options.params,\n queryClient: options.queryClient,\n request: options.request,\n };\n const layoutShells = await layoutShellsForPage(\n options.appDir,\n options.pageFile,\n loadingProps,\n {},\n options.serverModules,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n options.clientRouteInferenceCache,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n const loadingHtml = await renderServerFileToHtml(\n options.loadingFile,\n loadingProps,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n options.define,\n options.vitePlugins,\n );\n const marker = options.clientRoute\n ? hydrationMarkerParts({\n assetBaseUrl: options.assetBaseUrl,\n clientReferenceManifest: options.clientReferenceManifest,\n routePath: options.routePath,\n script: options.script,\n props: {\n params: options.params,\n request: { url: options.request.url },\n },\n })\n : undefined;\n\n return renderToReadableStream((sink) => {\n sink.append(\"<!DOCTYPE html>\");\n sink.append(\n clientNavigationHeadTags({\n assetBaseUrl: options.assetBaseUrl,\n currentScript: options.clientRoute ? options.script : undefined,\n routeScripts: options.routeScripts,\n }),\n );\n\n for (const shell of layoutShells) {\n sink.append(shell.prefix);\n }\n\n sink.append(marker?.prefix ?? \"\");\n\n renderVisibleOutOfOrderBoundary(\n sink,\n \"mreact-route\",\n options.data,\n async (boundarySink, data) => {\n await appendServerStreamModule(\n code,\n boundarySink,\n {\n data,\n params: options.params,\n queryClient: options.queryClient,\n request: options.request,\n },\n options.pageFile,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n },\n {\n placeholder(boundarySink) {\n boundarySink.append(loadingHtml);\n },\n placeholderTag: \"div\",\n },\n );\n\n sink.append(marker?.suffix ?? \"\");\n\n for (const shell of [...layoutShells].reverse()) {\n sink.append(shell.suffix);\n }\n\n renderOutOfOrderReorderScript(sink);\n });\n}\n\nfunction renderVisibleOutOfOrderBoundary<T>(\n sink: HtmlSink,\n id: string,\n value: T,\n render: (sink: HtmlSink, value: Awaited<T>) => void | PromiseLike<void>,\n options: {\n catch?: (sink: HtmlSink, error: unknown) => void | PromiseLike<void>;\n placeholder?: (sink: HtmlSink) => void | PromiseLike<void>;\n placeholderTag?: string;\n } = {},\n): void {\n const placeholderSink = createStringSink();\n void options.placeholder?.(placeholderSink);\n const placeholderTag = normalizeVisibleOutOfOrderPlaceholderTag(options.placeholderTag);\n sink.append(\n `<${placeholderTag} data-mreact-oob-placeholder=\"${escapeHtmlAttribute(id)}\">${placeholderSink.toString()}</${placeholderTag}>`,\n );\n\n const task = renderVisibleOutOfOrderFragment(sink, id, value, render, options);\n\n if (sink.defer === undefined) {\n void task;\n return;\n }\n\n sink.defer(task);\n}\n\nfunction normalizeVisibleOutOfOrderPlaceholderTag(tag: unknown): string {\n if (typeof tag !== \"string\") {\n return \"span\";\n }\n\n const normalized = tag.trim().toLowerCase();\n return /^[a-z][a-z0-9-]*$/.test(normalized) ? normalized : \"span\";\n}\n\nasync function renderVisibleOutOfOrderFragment<T>(\n sink: HtmlSink,\n id: string,\n value: T,\n render: (sink: HtmlSink, value: Awaited<T>) => void | PromiseLike<void>,\n options: {\n catch?: (sink: HtmlSink, error: unknown) => void | PromiseLike<void>;\n },\n): Promise<void> {\n const fragmentSink = createStringSink();\n\n await renderAsyncBoundary(\n fragmentSink,\n value,\n render,\n options.catch === undefined ? {} : { catch: options.catch },\n );\n await fragmentSink.drain();\n\n sink.append(renderVisibleOutOfOrderFragmentHtml(id, fragmentSink.toString()));\n}\n\nfunction renderVisibleOutOfOrderFragmentHtml(id: string, html: string): string {\n const escapedId = escapeHtmlAttribute(id);\n return `<template data-mreact-oob-fragment=\"${escapedId}\">${html}</template><mreact-oob-complete hidden data-mreact-oob-complete=\"${escapedId}\"></mreact-oob-complete>`;\n}\n\nasync function appendServerStreamModule(\n code: string,\n sink: HtmlSink,\n props: ServerComponentProps,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n): Promise<void> {\n const module = await loadServerStreamModule(\n code,\n sourcefile,\n serverModules,\n serverModuleCacheVersion,\n define,\n vitePlugins,\n importPolicy,\n );\n const component = selectStreamComponent(module);\n\n await component(sink, props);\n}\n\nasync function renderServerStreamSlots(\n code: string,\n options: {\n define?: UserConfig[\"define\"] | undefined;\n pageFile: string;\n props: ServerComponentProps;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n },\n): Promise<Record<string, string>> {\n if (!hasRouteSlotsExport(code)) {\n return {};\n }\n\n const module = await loadServerStreamModule(\n code,\n options.pageFile,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n\n if (module.slots === undefined) {\n return {};\n }\n\n const rendered: Record<string, string> = {};\n\n for (const [name, value] of Object.entries(module.slots)) {\n if (typeof value !== \"function\") {\n rendered[name] = value;\n continue;\n }\n\n const sink = createStringSink();\n await value(sink, options.props);\n await sink.drain();\n rendered[name] = sink.toString();\n }\n\n return rendered;\n}\n\nfunction hasRouteSlotsExport(code: string): boolean {\n return /^\\s*export\\s+const\\s+slots\\s*=/m.test(code);\n}\n\nasync function loadServerStreamModule(\n code: string,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n outputOptions: { serverAwaitHydration?: boolean } = {},\n): Promise<StreamModuleExports> {\n const artifactCode = serverModules?.get(sourcefile)?.stream;\n const codeHash = memoizedHashText(code);\n const prebuiltCode = prebuiltServerComponentModuleCode(\n artifactCode,\n code,\n codeHash,\n outputOptions,\n );\n const usesPrebuiltCompiledCode = artifactCode?.code === code;\n if (\n artifactCode !== undefined &&\n prebuiltServerModuleOutputOptionsMatch(artifactCode, outputOptions) &&\n prebuiltServerModuleOutputMatches(artifactCode, code, codeHash) &&\n artifactCode.moduleFile !== undefined\n ) {\n return await importBuiltServerModuleFile<StreamModuleExports>({\n file: artifactCode.moduleFile,\n label: `server-stream-component:${sourcefile}`,\n serverModuleCacheVersion,\n });\n }\n const moduleCode =\n prebuiltCode === undefined\n ? code\n : rewriteCompatVendorPlaceholderImportsForRunner(prebuiltCode);\n const cacheKey =\n serverModuleCacheVersion === undefined\n ? undefined\n : `server-stream-component:${serverModuleCacheVersion}:${sourcefile}:${\n moduleCode === code ? codeHash : memoizedHashText(moduleCode)\n }:${importPolicyCacheKey(importPolicy)}:${viteDefineCacheKey(define)}:${vitePluginsCacheKey(vitePlugins)}`;\n return await importAppRouterSourceModule<StreamModuleExports>({\n cacheKey,\n code: moduleCode,\n define,\n label: `server-stream-component:${sourcefile}`,\n plugins:\n importPolicy === undefined\n ? undefined\n : [\n createAppRouterImportPolicyPlugin({\n appDir: dirname(sourcefile),\n importPolicy,\n label: \"Server stream component\",\n }),\n ],\n ...(prebuiltCode === undefined && !usesPrebuiltCompiledCode\n ? {\n resolveDir: dirname(sourcefile),\n serverSourceTransform: {\n dev: serverModuleCacheVersion === undefined,\n serverModules,\n serverOutput: \"stream\" as const,\n define,\n vitePlugins,\n },\n }\n : {}),\n ...(usesPrebuiltCompiledCode ? { resolveDir: dirname(sourcefile) } : {}),\n sourcefile,\n vitePlugins,\n });\n}\n\nfunction selectStreamComponent(module: StreamModuleExports): StreamComponent {\n const component = module.default ?? module.App ?? Object.values(module)[0];\n\n if (typeof component !== \"function\") {\n throw new Error(\"No page component export was found.\");\n }\n\n return component as StreamComponent;\n}\n\nasync function applyLayouts(options: {\n appDir: string;\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n define?: UserConfig[\"define\"] | undefined;\n pageFile: string;\n html: string;\n props: ServerComponentProps;\n slots?: Record<string, string> | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n}): Promise<string> {\n const layoutFiles = await shellFilesForPage(\n options.appDir,\n options.pageFile,\n options.serverModuleCacheVersion,\n );\n let html = options.html;\n let shellHasOutOfOrderBoundary = false;\n const slotContext = createSlotRenderContext(options.slots);\n const renderShell = (shell: ShellFile) =>\n renderShellPrefixSuffix(\n options.appDir,\n shell,\n options.props,\n slotContext,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n options.clientRouteInferenceCache,\n options.timing,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n const renderedShells =\n Object.keys(slotContext.namedSlots).length === 0\n ? await Promise.all(layoutFiles.map(renderShell))\n : undefined;\n\n for (let index = layoutFiles.length - 1; index >= 0; index -= 1) {\n const shell = layoutFiles[index];\n if (shell === undefined) {\n continue;\n }\n\n const rendered = renderedShells?.[index] ?? (await renderShell(shell));\n shellHasOutOfOrderBoundary ||= rendered.hasOutOfOrderBoundary;\n html = `${rendered.prefix}${html}${rendered.suffix}`;\n }\n\n warnUnconsumedRouteSlots({\n appDir: options.appDir,\n pageFile: options.pageFile,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n slotContext,\n });\n\n if (!shellHasOutOfOrderBoundary) {\n return html;\n }\n\n const sink = createStringSink();\n sink.append(html);\n renderOutOfOrderReorderScript(sink);\n await sink.drain();\n return sink.toString();\n}\n\nasync function layoutShellsForPage(\n appDir: string,\n pageFile: string,\n props: ServerComponentProps,\n slots: Readonly<Record<string, string>>,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n serverSourceFiles: ReadonlyMap<string, string> | undefined,\n clientRouteInferenceCache: ClientRouteInferenceCache | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n): Promise<RenderedShell[]> {\n const layoutFiles = await shellFilesForPage(appDir, pageFile, serverModuleCacheVersion);\n const slotContext = createSlotRenderContext(slots);\n const renderShell = (shell: ShellFile) =>\n renderShellPrefixSuffix(\n appDir,\n shell,\n props,\n slotContext,\n serverModules,\n serverModuleCacheVersion,\n serverSourceFiles,\n clientRouteInferenceCache,\n undefined,\n define,\n vitePlugins,\n importPolicy,\n );\n const shells =\n Object.keys(slotContext.namedSlots).length === 0\n ? await Promise.all(layoutFiles.map(renderShell))\n : [];\n\n if (shells.length === 0 && layoutFiles.length > 0) {\n for (const shell of layoutFiles) {\n shells.push(await renderShell(shell));\n }\n }\n\n warnUnconsumedRouteSlots({\n appDir,\n pageFile,\n serverModuleCacheVersion,\n slotContext,\n });\n\n return shells;\n}\n\nasync function renderShellPrefixSuffix(\n appDir: string,\n shell: ShellFile,\n props: ServerComponentProps,\n slotContext: SlotRenderContext,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n serverSourceFiles: ReadonlyMap<string, string> | undefined,\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined,\n timing?: RenderTiming | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n): Promise<RenderedShell> {\n const hasNamedSlots = Object.keys(slotContext.namedSlots).length > 0;\n const cacheKey =\n serverModuleCacheVersion === undefined || hasNamedSlots || shell.kind === \"template\"\n ? undefined\n : `${appDir}\\0${shell.file}\\0${serverModuleCacheVersion}\\0${importPolicyCacheKey(importPolicy)}\\0${viteDefineCacheKey(define)}\\0${vitePluginsCacheKey(vitePlugins)}`;\n if (cacheKey !== undefined) {\n const cached = readRouterRuntimeCacheEntry(\n renderedShellCache,\n cacheKey,\n renderedShellCacheCounters,\n );\n if (cached !== undefined && cached !== \"impure\") {\n return cached;\n }\n }\n\n const staticEntry = cacheKey === undefined ? undefined : shellStaticRenderCache.get(cacheKey);\n const loadedStaticEntry =\n staticEntry ??\n (await loadShellStaticRenderEntry({\n cacheKey,\n clientRouteInferenceCache,\n define,\n importPolicy,\n serverModuleCacheVersion,\n serverModules,\n serverSourceFiles,\n shell,\n timing,\n vitePlugins,\n }));\n\n let phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const layoutHtml = loadedStaticEntry.shellUsesAwait\n ? await renderShellStreamComponent(loadedStaticEntry.component as StreamComponent, props)\n : await (loadedStaticEntry.component as ServerComponent)(props);\n addRenderTimingPhaseDuration(timing, phaseStartedAt, \"layoutComponentRenderMs\");\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const rendered = {\n ...splitLayoutSlot(markShellBoundary(layoutHtml, shell), slotContext),\n hasOutOfOrderBoundary: loadedStaticEntry.hasOutOfOrderBoundary,\n };\n addRenderTimingPhaseDuration(timing, phaseStartedAt, \"layoutSlotSplitMs\");\n const shellCacheKey = loadedStaticEntry.shellUsesAwait ? undefined : cacheKey;\n const cached =\n shellCacheKey !== undefined\n ? readRouterRuntimeCacheEntry(renderedShellCache, shellCacheKey, renderedShellCacheCounters)\n : undefined;\n\n // Detect purity: a zero-arg component cannot depend on props. The\n // markShellBoundary + splitLayoutSlot output is then constant for\n // the (appDir, shellFile, version) tuple. We only set the cache\n // entry on the first request that observes the function arity; on\n // an \"impure\" tag we never overwrite it.\n if (shellCacheKey !== undefined && cached !== \"impure\") {\n if (loadedStaticEntry.component.length === 0) {\n if (renderedShellCache.size >= MAX_RENDERED_SHELL_CACHE_ENTRIES) {\n const oldestKey = renderedShellCache.keys().next().value;\n if (oldestKey !== undefined) {\n renderedShellCache.delete(oldestKey);\n renderedShellCacheCounters.evictions += 1;\n }\n }\n renderedShellCache.set(shellCacheKey, rendered);\n } else {\n // Impure — stamp the cache so subsequent lookups short-circuit\n // without re-checking arity. We still run the per-request\n // render path above so the props are honoured.\n renderedShellCache.set(shellCacheKey, \"impure\");\n }\n }\n\n return rendered;\n}\n\nasync function loadShellStaticRenderEntry(options: {\n cacheKey: string | undefined;\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n define?: UserConfig[\"define\"] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModuleCacheVersion: string | undefined;\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverSourceFiles: ReadonlyMap<string, string> | undefined;\n shell: ShellFile;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<ShellStaticRenderEntry> {\n let phaseStartedAt = renderTimingPhaseStartedAt(options.timing);\n const code = await readServerSourceFile(\n options.shell.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n addRenderTimingPhaseDuration(options.timing, phaseStartedAt, \"layoutSourceReadMs\");\n phaseStartedAt = renderTimingPhaseStartedAt(options.timing);\n const shellUsesAwait = await mayRenderOutOfOrderBoundaryDeep({\n code,\n filename: options.shell.file,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n });\n const serverOutput: ServerOutputMode = shellUsesAwait ? \"stream\" : \"string\";\n const artifact = options.serverModules?.get(options.shell.file)?.[serverOutput];\n const clientInference =\n artifact !== undefined && artifact.sourceHash === memoizedHashText(code)\n ? {\n client: false,\n clientBoundaryImports: [],\n clientBoundaryFallbackImports: [],\n diagnostics: [],\n }\n : await inferClientRouteModule({\n cache: options.clientRouteInferenceCache,\n code: stripRouteClientOnlyExports(code, options.shell.file),\n filename: options.shell.file,\n vitePlugins: options.vitePlugins,\n });\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n const output = transformServerModule({\n code,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n filename: options.shell.file,\n serverModules: options.serverModules,\n serverOutput,\n });\n addRenderTimingPhaseDuration(options.timing, phaseStartedAt, \"layoutTransformMs\");\n const fatalDiagnostics = fatalServerDiagnostics(output.diagnostics);\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(formatServerDiagnostics(options.shell.file, fatalDiagnostics));\n }\n\n phaseStartedAt = renderTimingPhaseStartedAt(options.timing);\n const component = shellUsesAwait\n ? selectStreamComponent(\n await loadServerStreamModule(\n output.code,\n options.shell.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n ),\n )\n : await loadServerComponent(\n output.code,\n options.shell.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n addRenderTimingPhaseDuration(options.timing, phaseStartedAt, \"layoutModuleLoadMs\");\n const entry = {\n component,\n hasOutOfOrderBoundary: hasOutOfOrderBoundary(output.code),\n shellUsesAwait,\n };\n\n if (options.cacheKey !== undefined) {\n if (shellStaticRenderCache.size >= MAX_SHELL_STATIC_RENDER_CACHE_ENTRIES) {\n const oldestKey = shellStaticRenderCache.keys().next().value;\n if (oldestKey !== undefined) {\n shellStaticRenderCache.delete(oldestKey);\n }\n }\n shellStaticRenderCache.set(options.cacheKey, entry);\n }\n\n return entry;\n}\n\nasync function renderShellStreamComponent(\n component: StreamComponent,\n props: ServerComponentProps,\n): Promise<string> {\n const sink = createStringSink();\n await component(sink, props);\n await sink.drain();\n return sink.toString();\n}\n\n// Layout/template files for a given page do not change during a server's\n// lifetime in production. Each cache miss costs up to N×4 filesystem\n// `access()` syscalls (~5-10μs each on a fast SSD), making this one of\n// the largest fixed costs in `renderBuiltAppRequest` for a minimal page.\n//\n// We cache by `appDir + pageFile + serverModuleCacheVersion` so the cache\n// is only active when a server-module manifest version is available\n// (= production builds). In dev mode the version is `undefined`, so we\n// skip the cache and pick up newly added layout / template files on the\n// next request.\nconst shellFilesCache = new Map<string, ShellFile[]>();\nconst MAX_SHELL_FILES_CACHE_ENTRIES = 1024;\nconst devShellFilesCache = new Map<\n string,\n { directoryStats: readonly FileStat[]; files: ShellFile[] }\n>();\nconst shellStaticRenderCache = new Map<string, ShellStaticRenderEntry>();\nconst MAX_SHELL_STATIC_RENDER_CACHE_ENTRIES = 1024;\nconst routeMiddlewareControlCache = new Map<string, Promise<RouteMiddlewareControl | undefined>>();\nconst MAX_ROUTE_MIDDLEWARE_CONTROL_CACHE_ENTRIES = 1024;\nconst appMiddlewareFileCache = new Map<string, Promise<boolean>>();\nconst MAX_APP_MIDDLEWARE_FILE_CACHE_ENTRIES = 1024;\nconst devAppMiddlewareFileCache = new Map<\n string,\n { directoryStat: FileStat; hasMiddleware: boolean }\n>();\nconst routeMiddlewareControlSourceCache = new Map<\n string,\n { control: RouteMiddlewareControl | undefined; mtimeMs: number }\n>();\nconst devServerSourceFileCache = new Map<\n string,\n { mtimeMs: number; size: number; source: string }\n>();\nconst MAX_DEV_SERVER_SOURCE_FILE_CACHE_ENTRIES = 2048;\n\ninterface FileStat {\n mtimeMs: number;\n size: number;\n}\n\ninterface ShellStaticRenderEntry {\n component: ServerComponent | StreamComponent;\n hasOutOfOrderBoundary: boolean;\n shellUsesAwait: boolean;\n}\n\nasync function shellFilesForPage(\n appDir: string,\n pageFile: string,\n serverModuleCacheVersion?: string,\n): Promise<ShellFile[]> {\n const cacheKey =\n serverModuleCacheVersion === undefined\n ? undefined\n : `${appDir}\\0${pageFile}\\0${serverModuleCacheVersion}`;\n if (cacheKey !== undefined) {\n const cached = shellFilesCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n }\n\n const devCacheKey = cacheKey === undefined ? `${appDir}\\0${pageFile}` : undefined;\n if (devCacheKey !== undefined) {\n const directoryStats = await routeShellDirectoryStats(appDir, pageFile);\n const cached = devShellFilesCache.get(devCacheKey);\n if (cached !== undefined && sameFileStats(cached.directoryStats, directoryStats)) {\n return cached.files;\n }\n\n const files = await shellFilesForPageUncached(appDir, pageFile);\n devShellFilesCache.set(devCacheKey, { directoryStats, files });\n return files;\n }\n\n const files = await shellFilesForPageUncached(appDir, pageFile);\n if (cacheKey !== undefined) {\n if (shellFilesCache.size >= MAX_SHELL_FILES_CACHE_ENTRIES) {\n const oldestKey = shellFilesCache.keys().next().value;\n if (oldestKey !== undefined) {\n shellFilesCache.delete(oldestKey);\n }\n }\n shellFilesCache.set(cacheKey, files);\n }\n return files;\n}\n\nasync function shellFilesForPageUncached(appDir: string, pageFile: string): Promise<ShellFile[]> {\n const shells = await existingRouteShellCandidates(appDir, pageFile, async (file) => {\n try {\n await access(file);\n return true;\n } catch {\n return false;\n }\n });\n const files: ShellFile[] = shells.map((shell) => ({\n file: shell.file,\n id: shellBoundaryId(appDir, shell.directory),\n kind: shell.kind,\n }));\n\n return files;\n}\n\nfunction withRouteCacheHeader(\n response: Response,\n policy: ReturnType<typeof routeCachePolicyFromSource>,\n): Response {\n if (policy !== undefined) {\n response.headers.set(\"cache-control\", policy.cacheControl);\n }\n\n return response;\n}\n\nasync function hasAppMiddleware(options: {\n appDir: string;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<boolean> {\n const middlewareFiles = [\n join(options.appDir, \"middleware.ts\"),\n join(options.appDir, \"middleware.mreact.ts\"),\n ];\n\n if (options.serverSourceFiles !== undefined) {\n return middlewareFiles.some((file) => options.serverSourceFiles?.has(file) === true);\n }\n\n const cacheKey =\n options.serverModuleCacheVersion === undefined\n ? undefined\n : `${options.appDir}\\0${options.serverModuleCacheVersion}`;\n\n if (cacheKey !== undefined) {\n const cached = appMiddlewareFileCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n }\n\n if (cacheKey === undefined) {\n const directoryStat = await fileStat(options.appDir);\n const cached = devAppMiddlewareFileCache.get(options.appDir);\n if (cached !== undefined && sameFileStat(cached.directoryStat, directoryStat)) {\n return cached.hasMiddleware;\n }\n\n const hasMiddleware = await hasAppMiddlewareUncached(middlewareFiles);\n devAppMiddlewareFileCache.set(options.appDir, { directoryStat, hasMiddleware });\n return hasMiddleware;\n }\n\n const loaded = hasAppMiddlewareUncached(middlewareFiles).catch((error) => {\n appMiddlewareFileCache.delete(cacheKey);\n throw error;\n });\n\n if (appMiddlewareFileCache.size >= MAX_APP_MIDDLEWARE_FILE_CACHE_ENTRIES) {\n const oldestKey = appMiddlewareFileCache.keys().next().value;\n if (oldestKey !== undefined) {\n appMiddlewareFileCache.delete(oldestKey);\n }\n }\n appMiddlewareFileCache.set(cacheKey, loaded);\n\n return loaded;\n}\n\nasync function hasAppMiddlewareUncached(files: readonly string[]): Promise<boolean> {\n for (const file of files) {\n try {\n await access(file);\n return true;\n } catch {\n // Missing middleware files are allowed.\n }\n }\n\n return false;\n}\n\nasync function routeShellDirectoryStats(appDir: string, pageFile: string): Promise<FileStat[]> {\n const directories: string[] = [];\n let current = dirname(pageFile);\n const resolvedAppDir = resolve(appDir);\n\n while (true) {\n directories.push(current);\n if (resolve(current) === resolvedAppDir) {\n break;\n }\n\n const parent = dirname(current);\n if (parent === current) {\n break;\n }\n current = parent;\n }\n\n return await Promise.all(directories.map((directory) => fileStatOrMissing(directory)));\n}\n\nasync function fileStat(file: string): Promise<FileStat> {\n const stats = await stat(file);\n return { mtimeMs: stats.mtimeMs, size: stats.size };\n}\n\nasync function fileStatOrMissing(file: string): Promise<FileStat> {\n try {\n return await fileStat(file);\n } catch (error) {\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return { mtimeMs: -1, size: -1 };\n }\n throw error;\n }\n}\n\nfunction sameFileStats(left: readonly FileStat[], right: readonly FileStat[]): boolean {\n return (\n left.length === right.length &&\n left.every((value, index) => {\n const other = right[index];\n return other !== undefined && sameFileStat(value, other);\n })\n );\n}\n\nfunction sameFileStat(left: FileStat, right: FileStat): boolean {\n return left.mtimeMs === right.mtimeMs && left.size === right.size;\n}\n\nasync function loadRouteMiddlewareControl(options: {\n appDir: string;\n pageFile: string;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<RouteMiddlewareControl | undefined> {\n const cacheKey =\n options.serverModuleCacheVersion === undefined\n ? undefined\n : `${options.appDir}\\0${options.pageFile}\\0${options.serverModuleCacheVersion}`;\n\n if (cacheKey !== undefined) {\n const cached = routeMiddlewareControlCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n }\n\n const loaded = loadRouteMiddlewareControlUncached(options).catch((error) => {\n if (cacheKey !== undefined) {\n routeMiddlewareControlCache.delete(cacheKey);\n }\n throw error;\n });\n\n if (cacheKey !== undefined) {\n if (routeMiddlewareControlCache.size >= MAX_ROUTE_MIDDLEWARE_CONTROL_CACHE_ENTRIES) {\n const oldestKey = routeMiddlewareControlCache.keys().next().value;\n if (oldestKey !== undefined) {\n routeMiddlewareControlCache.delete(oldestKey);\n }\n }\n routeMiddlewareControlCache.set(cacheKey, loaded);\n }\n\n return loaded;\n}\n\nasync function loadRouteMiddlewareControlUncached(options: {\n appDir: string;\n pageFile: string;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<RouteMiddlewareControl | undefined> {\n const controls: Array<RouteMiddlewareControl | undefined> = [];\n const shellFiles = await shellFilesForPage(\n options.appDir,\n options.pageFile,\n options.serverModuleCacheVersion,\n );\n\n for (const shell of shellFiles) {\n if (shell.kind !== \"layout\") {\n continue;\n }\n\n controls.push(\n await loadRouteMiddlewareControlFile({\n file: shell.file,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n }),\n );\n }\n\n controls.push(\n await loadRouteMiddlewareControlFile({\n file: options.pageFile,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n }),\n );\n\n return mergeRouteMiddlewareControls(controls);\n}\n\nasync function loadRouteMiddlewareControlFile(options: {\n file: string;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<RouteMiddlewareControl | undefined> {\n if (options.serverSourceFiles !== undefined || options.serverModuleCacheVersion !== undefined) {\n return parseRouteMiddlewareControl(\n await readServerSourceFile(\n options.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n ),\n );\n }\n\n const fileStat = await stat(options.file);\n const cached = routeMiddlewareControlSourceCache.get(options.file);\n\n if (cached !== undefined && cached.mtimeMs === fileStat.mtimeMs) {\n return cached.control;\n }\n\n const control = parseRouteMiddlewareControl(await readFile(options.file, \"utf8\"));\n routeMiddlewareControlSourceCache.set(options.file, {\n control,\n mtimeMs: fileStat.mtimeMs,\n });\n\n return control;\n}\n\ninterface RouteMetadataContext {\n data: unknown;\n params: RouteParams;\n request: Request;\n}\n\ninterface RouteMetadataModule {\n generateMetadata?:\n | ((\n context: RouteMetadataContext,\n ) => Promise<RouteMetadata | undefined> | RouteMetadata | undefined)\n | undefined;\n metadata?: RouteMetadata;\n}\n\nasync function loadRouteData(options: {\n appDir: string;\n code: string;\n context: RouteDataContext;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<unknown> {\n return await loadRouteDataFromModule({\n context: options.context,\n hasLoader: hasLoaderExport(options.code),\n loadModule: () => loadRouteLoaderModule(options),\n timing: {\n finish(startedAt, phase) {\n finishRenderTimingPhase(options.timing, startedAt, phase);\n },\n start() {\n return renderTimingPhaseStartedAt(options.timing);\n },\n },\n });\n}\n\nasync function loadRouteDataWithInstrumentation(options: {\n appDir: string;\n code: string;\n context: RouteDataContext;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n instrumentation?: RouterInstrumentation | undefined;\n request: Request;\n routeId: string;\n routePath: string;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<unknown> {\n const trace = traceContextFromRequest(options.request);\n const event = {\n method: options.request.method,\n path: new URL(options.request.url).pathname,\n request: options.request,\n routeId: options.routeId,\n routePath: options.routePath,\n ...(trace === undefined ? {} : { trace }),\n };\n invokeRouterInstrumentation(options.instrumentation?.onLoaderStart, event);\n\n try {\n const data = await loadRouteData(options);\n invokeRouterInstrumentation(options.instrumentation?.onLoaderEnd, event);\n\n return data;\n } catch (error) {\n invokeRouterInstrumentation(options.instrumentation?.onLoaderEnd, {\n ...event,\n error,\n });\n throw error;\n }\n}\n\nasync function loadRouteLoaderModule(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteLoaderModule> {\n const cacheKey =\n options.serverModuleCacheVersion === undefined\n ? undefined\n : `${options.appDir}\\0${options.filename}\\0${options.serverModuleCacheVersion}\\0${memoizedHashText(options.code)}\\0${importPolicyCacheKey(options.importPolicy)}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n\n if (cacheKey !== undefined) {\n const cached = readRouterRuntimeCacheEntry(\n routeLoaderModuleCache,\n cacheKey,\n routeLoaderModuleCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n }\n\n const loaded = loadBundledRouteLoaderModule({\n ...options,\n prebuiltArtifact: prebuiltRouteLoaderModuleArtifact(\n options.serverModules,\n options.filename,\n options.code,\n ),\n }).catch((error) => {\n if (cacheKey !== undefined) {\n routeLoaderModuleCache.delete(cacheKey);\n }\n throw error;\n });\n\n if (cacheKey !== undefined) {\n setBoundedCacheEntry(\n routeLoaderModuleCache,\n cacheKey,\n loaded,\n maxRouteLoaderModuleCacheEntries,\n routeLoaderModuleCacheCounters,\n );\n }\n\n return loaded;\n}\n\nexport async function bundleRouteLoaderModuleCode(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: stripRouteLoaderOnlyExports(options.code, options.filename),\n define: options.define,\n externalizeAppSourceModuleDirs: options.externalizeAppSourceModuleDirs,\n filename: options.filename,\n platform: \"node\",\n vitePlugins: options.vitePlugins,\n plugins: [\n fileImportMetaUrlPlugin(),\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n label: \"Loader\",\n }),\n ],\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to compile loader for ${options.filename}.`);\n }\n\n return code;\n}\n\nasync function loadBundledRouteLoaderModule(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n prebuiltArtifact?: BuiltServerModuleOutputLike | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteLoaderModule> {\n if (options.prebuiltArtifact?.moduleFile !== undefined) {\n return await importBuiltServerModuleFile<RouteLoaderModule>({\n file: options.prebuiltArtifact.moduleFile,\n label: `loader:${options.filename}`,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n }\n\n const code =\n options.prebuiltArtifact?.code ??\n (await bundleRouteLoaderModuleCode({\n appDir: options.appDir,\n code: options.code,\n externalizeAppSourceModuleDirs:\n options.serverModuleCacheVersion === undefined\n ? devExternalSourceDirs(options.appDir, options.importPolicy)\n : undefined,\n filename: options.filename,\n importPolicy: options.importPolicy,\n define: options.define,\n vitePlugins: options.vitePlugins,\n }));\n\n return await importAppRouterSourceModule<RouteLoaderModule>({\n ...(options.serverModuleCacheVersion === undefined\n ? {}\n : {\n cacheKey: `loader:${options.filename}:${options.serverModuleCacheVersion}:${memoizedHashText(code)}:${viteDefineCacheKey(options.define)}`,\n }),\n code,\n define: options.define,\n label: `loader:${options.filename}`,\n });\n}\n\nasync function loadRouteMetadata(options: {\n appDir: string;\n code: string;\n context: RouteMetadataContext;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteMetadata | undefined> {\n if (!hasMetadataExport(options.code)) {\n return undefined;\n }\n\n const prebuiltArtifact = prebuiltRequestModuleArtifact(\n options.serverModules,\n options.filename,\n options.code,\n \"routeMetadata\",\n );\n if (prebuiltArtifact?.moduleFile !== undefined) {\n const module = await importBuiltServerModuleFile<RouteMetadataModule>({\n file: prebuiltArtifact.moduleFile,\n label: `metadata:${options.filename}`,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n\n return await resolveRouteMetadataModule(module, options.context);\n }\n\n const module = await loadRouteMetadataModule(options, prebuiltArtifact);\n\n return await resolveRouteMetadataModule(module, options.context);\n}\n\nasync function loadRouteMetadataModule(\n options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n },\n prebuiltArtifact: BuiltServerModuleArtifact[\"routeMetadata\"] | undefined,\n): Promise<RouteMetadataModule> {\n if (prebuiltArtifact?.moduleFile !== undefined) {\n return await importBuiltServerModuleFile<RouteMetadataModule>({\n file: prebuiltArtifact.moduleFile,\n label: `metadata:${options.filename}`,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n }\n\n const sourceHash = memoizedHashText(options.code);\n const moduleCacheVersion =\n options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion;\n const moduleCacheKey =\n moduleCacheVersion === undefined\n ? undefined\n : `metadata-module:${options.serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}:${options.filename}:${moduleCacheVersion}:${sourceHash}:${viteDefineCacheKey(options.define)}:${vitePluginsCacheKey(options.vitePlugins)}`;\n\n if (moduleCacheKey !== undefined) {\n const cached = readRouterRuntimeCacheEntry(\n routeMetadataModuleCache,\n moduleCacheKey,\n routeMetadataModuleCacheCounters,\n );\n if (cached !== undefined) {\n return await cached;\n }\n }\n\n const loaded = (async () => {\n const code = prebuiltArtifact?.code ?? (await bundleRouteMetadataModuleCode(options));\n\n return await importAppRouterSourceModule<RouteMetadataModule>({\n ...(moduleCacheVersion === undefined\n ? {}\n : {\n cacheKey: `metadata:${options.serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}:${options.filename}:${moduleCacheVersion}:${memoizedHashText(code)}:${viteDefineCacheKey(options.define)}`,\n }),\n code,\n define: options.define,\n label: `metadata:${options.filename}`,\n });\n })();\n\n if (moduleCacheKey !== undefined) {\n setBoundedCacheEntry(\n routeMetadataModuleCache,\n moduleCacheKey,\n loaded,\n maxRouteMetadataModuleCacheEntries,\n routeMetadataModuleCacheCounters,\n );\n }\n\n try {\n return await loaded;\n } catch (error) {\n if (moduleCacheKey !== undefined) {\n routeMetadataModuleCache.delete(moduleCacheKey);\n }\n throw error;\n }\n}\n\nasync function resolveRouteMetadataModule(\n module: RouteMetadataModule,\n context: RouteMetadataContext,\n): Promise<RouteMetadata | undefined> {\n const staticMetadata = validateRouteMetadata(module.metadata);\n\n if (module.generateMetadata === undefined) {\n return staticMetadata;\n }\n\n let generated: RouteMetadata | undefined;\n try {\n generated = await module.generateMetadata(context);\n } catch (error) {\n if (staticMetadata !== undefined) {\n return staticMetadata;\n }\n\n throw error;\n }\n\n const validatedGenerated = validateRouteMetadata(generated, \"generateMetadata\");\n const merged =\n validatedGenerated === undefined\n ? staticMetadata\n : mergeRouteMetadata([staticMetadata, validatedGenerated].filter(isRouteMetadata));\n\n return validateRouteMetadata(merged);\n}\n\nfunction isRouteMetadata(value: RouteMetadata | undefined): value is RouteMetadata {\n return value !== undefined;\n}\n\nasync function bundleRouteMetadataModuleCode(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: stripRouteMetadataOnlyExports(options.code, options.filename),\n define: options.define,\n filename: options.filename,\n platform: \"node\",\n vitePlugins: options.vitePlugins,\n plugins: [\n fileImportMetaUrlPlugin(),\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n label: \"Metadata\",\n }),\n ],\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to compile metadata for ${options.filename}.`);\n }\n\n return code;\n}\n\nasync function loadComposedRouteMetadata(options: {\n appDir: string;\n code: string;\n context: RouteMetadataContext;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n routes: readonly AppRoute[];\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteMetadata | undefined> {\n const cacheKey = composedRouteMetadataCacheKey(options);\n if (cacheKey !== undefined) {\n const cached = readRouterRuntimeCacheEntry(\n composedRouteMetadataCache,\n cacheKey,\n composedRouteMetadataCacheCounters,\n );\n if (cached !== undefined) {\n return cached;\n }\n }\n\n try {\n const loaded = await loadComposedRouteMetadataUncached(options);\n if (cacheKey !== undefined && !loaded.dynamic) {\n setBoundedCacheEntry(\n composedRouteMetadataCache,\n cacheKey,\n Promise.resolve(loaded.metadata),\n maxComposedRouteMetadataCacheEntries,\n composedRouteMetadataCacheCounters,\n );\n }\n\n return loaded.metadata;\n } catch (error) {\n if (cacheKey !== undefined) {\n composedRouteMetadataCache.delete(cacheKey);\n }\n throw error;\n }\n}\n\nfunction composedRouteMetadataCacheKey(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): string | undefined {\n const moduleCacheVersion =\n options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion;\n\n return moduleCacheVersion === undefined\n ? undefined\n : `${options.appDir}\\0${options.filename}\\0${options.serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}\\0${moduleCacheVersion}\\0${memoizedHashText(options.code)}\\0${importPolicyCacheKey(options.importPolicy)}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n}\n\nexport const __composedRouteMetadataCacheKeyForTesting = composedRouteMetadataCacheKey;\n\nasync function loadComposedRouteMetadataUncached(options: {\n appDir: string;\n code: string;\n context: RouteMetadataContext;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n routes: readonly AppRoute[];\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<{ dynamic: boolean; metadata: RouteMetadata | undefined }> {\n const layoutFiles = await shellFilesForPage(\n options.appDir,\n options.filename,\n options.serverModuleCacheVersion,\n );\n const metadata: RouteMetadata[] = [];\n let dynamic = hasGenerateMetadataExport(options.code);\n const layoutMetadataTasks = layoutFiles.map(async (shell) => {\n if (shell.kind !== \"layout\") {\n return { code: undefined, metadata: undefined };\n }\n\n const code = await readServerSourceFile(\n shell.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n const shellMetadata = await loadRouteMetadata({\n appDir: options.appDir,\n code,\n context: options.context,\n filename: shell.file,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n\n return { code, metadata: shellMetadata };\n });\n const pageMetadataTask = loadRouteMetadata({\n appDir: options.appDir,\n code: options.code,\n context: options.context,\n filename: options.filename,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n\n for (const task of layoutMetadataTasks) {\n const shell = await task;\n if (shell.code !== undefined) {\n dynamic ||= hasGenerateMetadataExport(shell.code);\n }\n if (shell.metadata !== undefined) {\n metadata.push(shell.metadata);\n }\n }\n\n const pageMetadata = await pageMetadataTask;\n if (pageMetadata !== undefined) {\n metadata.push(pageMetadata);\n }\n\n return {\n dynamic,\n metadata: applyFileConventionMetadata(\n mergeRouteMetadata(metadata),\n options.routes,\n options.filename,\n options.context.params,\n ),\n };\n}\n\nfunction hasMetadataExport(code: string): boolean {\n return /\\bexport\\s+const\\s+metadata\\s*=/.test(code) || hasGenerateMetadataExport(code);\n}\n\nfunction hasGenerateMetadataExport(code: string): boolean {\n return (\n /\\bexport\\s+(?:async\\s+)?function\\s+generateMetadata\\b/.test(code) ||\n /\\bexport\\s*\\{[^}]*\\bgenerateMetadata\\b[^}]*\\}/.test(code)\n );\n}\n\nfunction usesRuntimeCacheControl(code: string): boolean {\n return /\\bcacheControl\\s*\\(/.test(code);\n}\n\nfunction warnIfCspNonceWouldBlockInlineTags(options: {\n html: string;\n logger: AppRouterLogger | undefined;\n metadata: RouteMetadata | undefined;\n request: Request;\n serverModuleCacheVersion: string | undefined;\n}): void {\n if (\n options.serverModuleCacheVersion !== undefined ||\n process.env.NODE_ENV === \"production\" ||\n options.metadata?.csp?.disable === true ||\n options.metadata?.csp?.directives === undefined ||\n !/<(?:script|style)\\b/i.test(options.html)\n ) {\n return;\n }\n\n const scriptNonces = cspDirectiveNonces(options.metadata.csp, \"script-src\");\n const styleNonces = cspDirectiveNonces(options.metadata.csp, \"style-src\");\n\n if (scriptNonces.size === 0 && styleNonces.size === 0) {\n return;\n }\n\n for (const tag of inlineCspTags(options.html)) {\n if (tag.name === \"script\") {\n if (\n scriptNonces.size > 0 &&\n !scriptHasExternalSourceOrInertType(tag.attributes) &&\n tag.content.trim() !== \"\" &&\n !tagHasMatchingNonce(tag.attributes, scriptNonces)\n ) {\n warnCspInlineNonceMismatch(options, \"script-src\", \"script\");\n }\n continue;\n }\n\n if (\n styleNonces.size > 0 &&\n tag.content.trim() !== \"\" &&\n !tagHasMatchingNonce(tag.attributes, styleNonces)\n ) {\n warnCspInlineNonceMismatch(options, \"style-src\", \"style\");\n }\n }\n}\n\nfunction warnCspInlineNonceMismatch(\n options: {\n logger: AppRouterLogger | undefined;\n request: Request;\n },\n directive: \"script-src\" | \"style-src\",\n tag: \"script\" | \"style\",\n): void {\n const message =\n tag === \"script\"\n ? \"mreact router: CSP script-src uses a nonce, but an inline <script> without a matching nonce will be blocked. Add the script through metadata.head with nonce: true, move it to an external script, or remove script-src for this route.\"\n : \"mreact router: CSP style-src uses a nonce, but an inline <style> without a matching nonce will be blocked. Add the style through metadata.head with nonce: true, move it to an external stylesheet, or remove style-src for this route.\";\n\n if (options.logger === undefined) {\n console.warn(message);\n return;\n }\n\n emitRouterLog(options.logger, \"warn\", {\n directive,\n path: new URL(options.request.url).pathname,\n tag,\n type: \"router:csp:inline-nonce-warning\",\n });\n}\n\nfunction cspDirectiveNonces(\n csp: NonNullable<RouteMetadata[\"csp\"]>,\n directive: \"script-src\" | \"style-src\",\n): ReadonlySet<string> {\n const values = csp.directives?.[directive];\n const nonces = new Set<string>();\n\n if (values !== undefined && csp.nonce !== undefined) {\n nonces.add(csp.nonce);\n }\n\n for (const value of Array.isArray(values) ? values : values === undefined ? [] : [values]) {\n const match = /^'nonce-([^']+)'$/.exec(value);\n\n if (match?.[1] !== undefined) {\n nonces.add(match[1]);\n }\n }\n\n return nonces;\n}\n\ninterface InlineCspTag {\n attributes: ReadonlyMap<string, string>;\n content: string;\n name: \"script\" | \"style\";\n}\n\nfunction inlineCspTags(html: string): InlineCspTag[] {\n const tags: InlineCspTag[] = [];\n const lowerHtml = html.toLowerCase();\n let position = 0;\n\n while (position < html.length) {\n const scriptIndex = lowerHtml.indexOf(\"<script\", position);\n const styleIndex = lowerHtml.indexOf(\"<style\", position);\n const openerIndex =\n scriptIndex === -1\n ? styleIndex\n : styleIndex === -1\n ? scriptIndex\n : Math.min(scriptIndex, styleIndex);\n\n if (openerIndex === -1) {\n break;\n }\n\n const name = lowerHtml.startsWith(\"<script\", openerIndex) ? \"script\" : \"style\";\n const tagEnd = html.indexOf(\">\", openerIndex + 1);\n if (tagEnd === -1) {\n break;\n }\n\n const closeToken = `</${name}>`;\n const closeIndex = lowerHtml.indexOf(closeToken, tagEnd + 1);\n const nextScriptIndex = lowerHtml.indexOf(\"<script\", tagEnd + 1);\n const nextStyleIndex = lowerHtml.indexOf(\"<style\", tagEnd + 1);\n const nextOpenerIndex =\n nextScriptIndex === -1\n ? nextStyleIndex\n : nextStyleIndex === -1\n ? nextScriptIndex\n : Math.min(nextScriptIndex, nextStyleIndex);\n\n if (closeIndex === -1 || (nextOpenerIndex !== -1 && nextOpenerIndex < closeIndex)) {\n position = tagEnd + 1;\n continue;\n }\n\n tags.push({\n attributes: parseTagAttributes(html.slice(openerIndex + name.length + 1, tagEnd)),\n content: html.slice(tagEnd + 1, closeIndex),\n name,\n });\n\n position = closeIndex + closeToken.length;\n }\n\n return tags;\n}\n\nexport const __inlineCspTagsForTesting = inlineCspTags;\n\nfunction parseTagAttributes(source: string): ReadonlyMap<string, string> {\n const attributes = new Map<string, string>();\n const pattern = /([^\\s=/>]+)(?:\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|([^\\s\"'=<>`]+)))?/g;\n let match: RegExpExecArray | null;\n\n while ((match = pattern.exec(source)) !== null) {\n const name = match[1]?.toLowerCase();\n\n if (name === undefined) {\n continue;\n }\n\n attributes.set(name, match[2] ?? match[3] ?? match[4] ?? \"\");\n }\n\n return attributes;\n}\n\nfunction scriptHasExternalSourceOrInertType(attributes: ReadonlyMap<string, string>): boolean {\n if (attributes.has(\"src\")) {\n return true;\n }\n\n const type = attributes.get(\"type\")?.trim().toLowerCase();\n\n return type === \"application/json\" || type === \"application/ld+json\";\n}\n\nfunction tagHasMatchingNonce(\n attributes: ReadonlyMap<string, string>,\n expectedNonces: ReadonlySet<string>,\n): boolean {\n const nonce = attributes.get(\"nonce\");\n\n return nonce !== undefined && expectedNonces.has(nonce);\n}\n\nfunction injectQueryState(html: string, state: DehydratedQueryClient): string {\n if (state.queries.length === 0) {\n return html;\n }\n\n const script = `<script type=\"application/json\" id=\"${__MREACT_QUERY_STATE_SCRIPT_ID}\">${escapeJsonForHtml(\n JSON.stringify(state),\n )}</script>`;\n\n return /<\\/body>/i.test(html) ? replaceFinalBodyCloseTag(html, script) : `${html}${script}`;\n}\n\nfunction injectAuthSessionClaims(html: string, claims: unknown): string {\n if (claims === undefined) {\n return html;\n }\n\n const script = `<script type=\"application/json\" id=\"${authSessionScriptId}\">${escapeJsonForHtml(\n JSON.stringify(claims),\n )}</script>`;\n\n return /<\\/body>/i.test(html) ? replaceFinalBodyCloseTag(html, script) : `${html}${script}`;\n}\n\nfunction replaceFinalBodyCloseTag(html: string, insertion: string): string {\n const matches = [...html.matchAll(/<\\/body>/gi)];\n const last = matches.at(-1);\n\n if (last?.index === undefined) {\n return `${html}${insertion}`;\n }\n\n return `${html.slice(0, last.index)}${insertion}${html.slice(last.index)}`;\n}\n\nfunction authIncludesClaims(code: string): boolean {\n return /\\bexport\\s+const\\s+auth\\s*=\\s*[\"']include-claims[\"']\\s*;?/.test(code);\n}\n\nfunction currentAuthClaims(): unknown {\n return authRequestStorage().getStore()?.claims;\n}\n\nfunction authRequestStorage(): AsyncLocalStorage<AuthRuntimeRequestState> {\n const global = globalThis as typeof globalThis & {\n [authRuntimeStateKey]?: AuthRuntimeState | undefined;\n };\n global[authRuntimeStateKey] ??= {};\n global[authRuntimeStateKey].storage ??= new AsyncLocalStorage<AuthRuntimeRequestState>();\n return global[authRuntimeStateKey].storage;\n}\n\nfunction escapeJsonForHtml(value: string): string {\n return value\n .replaceAll(\"&\", \"\\\\u0026\")\n .replaceAll(\"<\", \"\\\\u003c\")\n .replaceAll(\">\", \"\\\\u003e\")\n .replaceAll(\"\\u2028\", \"\\\\u2028\")\n .replaceAll(\"\\u2029\", \"\\\\u2029\");\n}\n\nfunction readServerSourceFile(\n file: string,\n serverModuleCacheVersion: string | undefined,\n serverSourceFiles: ReadonlyMap<string, string> | undefined,\n): Promise<string> {\n const manifestSource = serverSourceFiles?.get(file);\n\n if (manifestSource !== undefined) {\n return Promise.resolve(manifestSource);\n }\n\n if (serverModuleCacheVersion === undefined) {\n return readDevServerSourceFile(file);\n }\n\n const key = `${serverModuleCacheVersion}:${file}`;\n const cached = readRouterRuntimeCacheEntry(\n serverSourceFileCache,\n key,\n serverSourceFileCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = readFile(file, \"utf8\").catch((error) => {\n serverSourceFileCache.delete(key);\n throw error;\n });\n setBoundedCacheEntry(\n serverSourceFileCache,\n key,\n loaded,\n maxServerSourceFileCacheEntries,\n serverSourceFileCacheCounters,\n );\n\n return loaded;\n}\n\nasync function readDevServerSourceFile(file: string): Promise<string> {\n const stats = await fileStat(file);\n const cached = devServerSourceFileCache.get(file);\n if (cached !== undefined && cached.mtimeMs === stats.mtimeMs && cached.size === stats.size) {\n return cached.source;\n }\n\n const source = await readFile(file, \"utf8\");\n if (devServerSourceFileCache.size >= MAX_DEV_SERVER_SOURCE_FILE_CACHE_ENTRIES) {\n const oldestKey = devServerSourceFileCache.keys().next().value;\n if (oldestKey !== undefined) {\n devServerSourceFileCache.delete(oldestKey);\n }\n }\n devServerSourceFileCache.set(file, { ...stats, source });\n return source;\n}\n\nfunction setBoundedCacheEntry<K, V>(\n cache: Map<K, V>,\n key: K,\n value: V,\n maxEntries: number,\n counters?: RouterRuntimeCacheCounters,\n): void {\n if (cache.size >= maxEntries) {\n const oldestKey = cache.keys().next().value as K | undefined;\n\n if (oldestKey !== undefined) {\n cache.delete(oldestKey);\n if (counters !== undefined) {\n counters.evictions += 1;\n }\n }\n }\n\n cache.set(key, value);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { access, readFile, stat } from \"node:fs/promises\";\nimport { dirname, join, relative, resolve, sep } from \"node:path\";\nimport { formatDiagnostic, transform } from \"@reckona/mreact-compiler\";\nimport type {\n ClientReferenceMetadata,\n ServerOutputMode,\n TransformOutput,\n} from \"@reckona/mreact-shared/compiler-contract\";\nimport {\n createQueryClient,\n dehydrate,\n __MREACT_QUERY_STATE_SCRIPT_ID,\n installQueryAsyncStorage,\n runWithQueryClient,\n type DehydratedQueryClient,\n type QueryClient,\n} from \"@reckona/mreact-query\";\nimport {\n createStringSink,\n type HtmlSink,\n renderAsyncBoundary,\n renderOutOfOrderReorderScript,\n renderReactNodeToString,\n renderToReadableStream,\n} from \"@reckona/mreact-server\";\nimport {\n createClientRouteInferenceCache,\n formatClientRouteInferenceDiagnostic,\n inferClientRouteModule,\n type ClientRouteInferenceCache,\n type ClientRouteInferenceResult,\n} from \"./client-route-inference.js\";\nimport {\n hydrationMarkerParts,\n routeIdForPath,\n withHydrationMarkers,\n withRouteMarkers,\n} from \"./navigation-runtime.js\";\nimport { assetPath } from \"./assets.js\";\nimport { escapeHtmlAttribute } from \"@reckona/mreact-shared/html-escape\";\nimport { matchRoute, scanAppRoutes } from \"./routes.js\";\nimport type { AppRoute, MatchedRoute, RouteMatcher } from \"./routes.js\";\nimport { appFileConventionContentType } from \"./file-conventions.js\";\nimport {\n type AppRouterServerActionOptions,\n type PreparedFormActionReference,\n dispatchServerActionRequest,\n prepareRouteServerActionPlaceholders,\n prepareRouteServerActions,\n} from \"./actions.js\";\nimport { serverActionCookie } from \"./csrf.js\";\nimport {\n type AppRouterCache,\n beginRouteCacheContext,\n cachedRouteResponse,\n cacheRouteResponse,\n routeCacheKey,\n routeCachePolicyFromSource,\n} from \"./cache.js\";\nimport { resolveRouterCacheLimit } from \"./cache-config.js\";\nimport {\n importAppRouterBuiltFileModule,\n importAppRouterFileModule,\n importAppRouterSourceModule,\n fileImportMetaUrlPlugin,\n rewriteCompatVendorPlaceholderImportsForRunner,\n} from \"./module-runner.js\";\nimport { bytesResponse, htmlResponse } from \"./http.js\";\nimport { isNotFoundError, isRedirectError, rewriteLocation } from \"./navigation.js\";\nimport { createAppRouterImportPolicyPlugin, type AppRouterImportPolicy } from \"./import-policy.js\";\nimport { existingRouteShellCandidates } from \"./route-shells.js\";\nimport type { PluginOption, UserConfig } from \"vite\";\nimport type { BuiltRouteSourceAnalysisSummary, BuiltServerModuleArtifact } from \"./build.js\";\nimport {\n hasLoaderExport,\n isStreamRouteSource,\n routeClosureMayUseAwaitBoundary,\n stripRouteBuildExports,\n stripRouteModuleExports,\n stripRouteClientOnlyExports,\n stripRouteClientSource,\n stripRouteLoaderOnlyExports,\n stripRouteMetadataOnlyExports,\n} from \"./route-source.js\";\nimport { emitRouterLog, logDurationMs, logNow, type AppRouterLogger } from \"./logger.js\";\nimport {\n createRouterRuntimeCacheCounters,\n readRouterRuntimeCacheEntry,\n routerRuntimeCacheStat,\n type RouterRuntimeCacheCounters,\n type RouterRuntimeCacheStat,\n} from \"./cache-stats.js\";\nimport { bundleRouterModule } from \"./bundle-pipeline.js\";\nimport { viteDefineCacheKey, vitePluginsCacheKey } from \"./vite-plugin-cache-key.js\";\nimport type {\n ManifestDescriptor,\n RobotsManifest,\n RouteParams,\n RouteMetadata,\n SitemapEntry,\n} from \"./types.js\";\nimport {\n invokeRouterInstrumentation,\n traceContextFromRequest,\n type RouterInstrumentation,\n} from \"./trace.js\";\nimport {\n mergeRouteMiddlewareControls,\n middlewareMatches,\n parseRouteMiddlewareControl,\n parseStaticMiddlewareConfig,\n shouldSkipMiddleware,\n validateRouteMiddlewareControl,\n type MiddlewareModule,\n type RouteMiddlewareControl,\n} from \"./middleware.js\";\nimport {\n applyFileConventionMetadata,\n injectHeadMetadata,\n mergeRouteMetadata,\n responseHeadersForMetadata,\n serializeRobots,\n serializeSitemap,\n validateRouteMetadata,\n} from \"./metadata.js\";\nimport {\n createSlotRenderContext,\n markShellBoundary,\n shellBoundaryId,\n splitLayoutSlot,\n warnUnconsumedRouteSlots,\n type ShellFile,\n type SlotRenderContext,\n} from \"./layout-composer.js\";\nimport {\n importPolicyCacheKey,\n memoizedHashText,\n prebuiltRequestModuleArtifact,\n prebuiltRouteLoaderModuleArtifact,\n prebuiltServerComponentModuleCode,\n prebuiltServerModuleOutputMatches,\n prebuiltServerModuleOutputOptionsMatch,\n type BuiltServerModuleOutputLike,\n} from \"./route-module-loader.js\";\nimport {\n loadRouteDataFromModule,\n type RouteDataContext,\n type RouteLoaderModule,\n} from \"./route-loader-runtime.js\";\nimport { pageRouteMethodResponse } from \"./route-dispatch.js\";\n\nconst nativeEscapeTransform = {\n batchImportName: \"escapeHtmlBatch\",\n batchImportSource: \"@reckona/mreact-router/native-escape\",\n} as const;\nconst authRuntimeStateKey = \"__mreactAuthRuntimeState\";\nconst authSessionScriptId = \"__mreact_auth_session\";\n\ninstallQueryAsyncStorage(new AsyncLocalStorage<QueryClient>());\n\ninterface AuthRuntimeRequestState {\n claims?: unknown;\n}\n\ninterface AuthRuntimeState {\n storage?: AsyncLocalStorage<AuthRuntimeRequestState> | undefined;\n}\n\ninterface RenderTiming {\n phases: Record<string, number>;\n}\n\n/**\n * Loads prebuilt server render artifacts immediately before a route render needs them.\n */\nexport interface AppRouterServerRenderArtifactLoader {\n load(routeFile: string): Promise<void>;\n}\n\n/**\n * Configures server rendering for a source app-router request.\n */\nexport interface RenderAppRequestOptions {\n appDir: string;\n assetBaseUrl?: string | undefined;\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n clientScripts?: ReadonlyMap<string, string>;\n clientStylesByFile?: ReadonlyMap<string, readonly string[]>;\n clientStyles?: ReadonlyMap<string, readonly string[]>;\n define?: UserConfig[\"define\"] | undefined;\n env?: unknown;\n importPolicy?: AppRouterImportPolicy | undefined;\n instrumentation?: RouterInstrumentation | undefined;\n logger?: AppRouterLogger | undefined;\n navigationScripts?: ReadonlyMap<string, string> | undefined;\n onRenderError?: ((error: unknown) => void) | undefined;\n onResponse?: AppRouterResponseHook | undefined;\n queryClient?: QueryClient | undefined;\n request: Request;\n requestUrl?: URL | undefined;\n matchedRoute?: MatchedRoute | undefined;\n routeCache?: AppRouterCache | undefined;\n routeMatcher?: RouteMatcher | undefined;\n routes?: readonly AppRoute[] | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n devServerModuleCacheVersion?: string | undefined;\n // True when serving through a dev server: request-time server transforms\n // are expected there and must not trigger the production prebuild warning.\n dev?: boolean | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n serverActions?: AppRouterServerActionOptions | undefined;\n serverActionReferencesByFile?:\n | ReadonlyMap<string, readonly PreparedFormActionReference[]>\n | undefined;\n skipMiddleware?: boolean | undefined;\n preload?: AppRouterRenderPreload | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}\n\nexport interface RenderAppRequestRuntimeOptions extends RenderAppRequestOptions {\n serverRenderArtifactLoader?: AppRouterServerRenderArtifactLoader | undefined;\n}\n\nexport interface AppRouterRenderPreload {\n promise: Promise<void>;\n wait: \"before-render\";\n}\n\n/**\n * Allows callers to inspect or replace an app-router response before it is returned.\n */\nexport type AppRouterResponseHook = (\n response: Response,\n context: AppRouterResponseHookContext,\n) => Response | undefined | void | Promise<Response | undefined | void>;\n\n/**\n * Provides request context to an app-router response hook.\n */\nexport interface AppRouterResponseHookContext {\n request: Request;\n}\n\nexport async function preloadBuiltRequestModules(options: {\n appDir: string;\n define?: UserConfig[\"define\"] | undefined;\n includeRenderModules?: boolean | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n routes: readonly AppRoute[];\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion: string;\n serverSourceFiles: ReadonlyMap<string, string>;\n serverActionReferencesByFile?:\n | ReadonlyMap<string, readonly PreparedFormActionReference[]>\n | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<void> {\n const clientRouteInferenceCache = createClientRouteInferenceCache();\n const middlewareFiles = [\n join(options.appDir, \"middleware.ts\"),\n join(options.appDir, \"middleware.mreact.ts\"),\n ];\n\n for (const file of middlewareFiles) {\n if (options.serverSourceFiles.has(file)) {\n await loadMiddlewareModule({\n appDir: options.appDir,\n file,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n }\n }\n\n for (const route of options.routes) {\n const code = await readServerSourceFile(\n route.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n\n if (route.kind === \"server\") {\n await loadServerRouteModule({\n appDir: options.appDir,\n file: route.file,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n continue;\n }\n\n if (options.includeRenderModules !== false) {\n const actionReferences = options.serverActionReferencesByFile?.get(route.file) ?? [];\n const analysisCode =\n actionReferences.length === 0\n ? code\n : prepareRouteServerActionPlaceholders({\n code,\n formActionReferences: actionReferences,\n });\n const analysis = await analyzeRouteSource({\n appDir: options.appDir,\n artifact: options.serverModules?.get(route.file)?.analysis,\n buildRenderCode: analysisCode !== code,\n code: analysisCode,\n filename: route.file,\n routePath: route.path,\n clientRouteInferenceCache,\n serverModuleCacheVersion:\n actionReferences.length === 0 ? options.serverModuleCacheVersion : undefined,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n });\n await preloadBuiltPageRouteModules({\n ...options,\n analysis,\n code: analysisCode,\n file: route.file,\n });\n }\n\n if (hasLoaderExport(code)) {\n await loadRouteLoaderModule({\n appDir: options.appDir,\n code,\n filename: route.file,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n }\n }\n}\n\nasync function preloadBuiltPageRouteModules(options: {\n analysis: RouteSourceAnalysis;\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion: string;\n serverSourceFiles: ReadonlyMap<string, string>;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<void> {\n const routeCode = options.analysis.routeCode;\n const stringArtifact = options.serverModules?.get(options.file)?.string;\n const shouldPreloadString =\n !options.analysis.streamRoute ||\n options.serverModules === undefined ||\n stringArtifact !== undefined;\n\n if (shouldPreloadString) {\n const stringOutput = transformServerModule({\n code: routeCode,\n clientBoundaryImports: options.analysis.clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: options.analysis.clientInference.clientBoundaryFallbackImports,\n filename: options.file,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n });\n assertNoFatalServerDiagnostics(options.file, stringOutput.diagnostics);\n await loadServerModule(\n stringOutput.code,\n options.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n );\n }\n\n if (options.analysis.streamRoute) {\n const streamOutput = transformServerModule({\n code: routeCode,\n clientBoundaryImports: options.analysis.clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: options.analysis.clientInference.clientBoundaryFallbackImports,\n filename: options.file,\n serverModules: options.serverModules,\n serverOutput: \"stream\",\n serverAwaitHydration: options.analysis.clientInference.client,\n });\n assertNoFatalServerDiagnostics(options.file, streamOutput.diagnostics);\n await loadServerStreamModule(\n streamOutput.code,\n options.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n undefined,\n { serverAwaitHydration: options.analysis.clientInference.client },\n );\n }\n\n await preloadShellModulesForPage({\n appDir: options.appDir,\n pageFile: options.file,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n if (!hasGenerateMetadataExport(options.code)) {\n await loadComposedRouteMetadata({\n appDir: options.appDir,\n code: options.code,\n context: {\n data: undefined,\n params: {},\n request: new Request(\"http://mreact.local/\"),\n },\n filename: options.file,\n importPolicy: options.importPolicy,\n routes: [],\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n }\n}\n\nasync function preloadShellModulesForPage(options: {\n appDir: string;\n define?: UserConfig[\"define\"] | undefined;\n pageFile: string;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion: string;\n serverSourceFiles: ReadonlyMap<string, string>;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<void> {\n const shellFiles = await shellFilesForPage(\n options.appDir,\n options.pageFile,\n options.serverModuleCacheVersion,\n );\n\n for (const shell of shellFiles) {\n const code = await readServerSourceFile(\n shell.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n const output = transformServerModule({\n code,\n filename: shell.file,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n });\n assertNoFatalServerDiagnostics(shell.file, output.diagnostics);\n await loadServerModule(\n output.code,\n shell.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n );\n }\n}\n\nfunction fatalServerDiagnostics(\n diagnostics: TransformOutput[\"diagnostics\"],\n): TransformOutput[\"diagnostics\"] {\n return diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n}\n\nfunction formatServerDiagnostics(\n filename: string,\n diagnostics: TransformOutput[\"diagnostics\"],\n): string {\n return diagnostics.map((diagnostic) => formatDiagnostic(filename, diagnostic)).join(\"\\n\");\n}\n\nfunction assertNoFatalServerDiagnostics(\n filename: string,\n diagnostics: TransformOutput[\"diagnostics\"],\n): void {\n const fatalDiagnostics = fatalServerDiagnostics(diagnostics);\n if (fatalDiagnostics.length > 0) {\n throw new Error(formatServerDiagnostics(filename, fatalDiagnostics));\n }\n}\n\ninterface ServerComponentProps {\n data: unknown;\n params: RouteParams;\n queryClient: QueryClient;\n request: Request;\n}\n\ntype ServerComponent = (props: ServerComponentProps) => string | PromiseLike<string>;\ntype RouteSlotValue = string | ServerComponent;\ntype RouteSlotExports = Record<string, RouteSlotValue>;\ntype ServerModuleExports = Record<string, unknown> & {\n App?: ServerComponent;\n default?: ServerComponent;\n slots?: RouteSlotExports;\n};\ntype StreamComponent = (sink: HtmlSink, props: ServerComponentProps) => void | PromiseLike<void>;\ntype StreamRouteSlotValue = string | StreamComponent;\ntype StreamRouteSlotExports = Record<string, StreamRouteSlotValue>;\ntype StreamModuleExports = Record<string, unknown> & {\n App?: StreamComponent;\n default?: StreamComponent;\n slots?: StreamRouteSlotExports;\n};\n\nconst serverTransformCache = new Map<string, TransformOutput>();\nconst serverTransformCacheCounters = createRouterRuntimeCacheCounters();\nconst productionDynamicServerTransformWarned = new Set<string>();\nconst serverSourceFileCache = new Map<string, Promise<string>>();\nconst serverSourceFileCacheCounters = createRouterRuntimeCacheCounters();\nconst routeSourceAnalysisCache = new Map<string, Promise<RouteSourceAnalysis>>();\nconst routeSourceAnalysisCacheCounters = createRouterRuntimeCacheCounters();\nconst routeOutOfOrderBoundaryAnalysisCache = new Map<string, Promise<boolean>>();\nconst routeOutOfOrderBoundaryAnalysisCacheCounters = createRouterRuntimeCacheCounters();\nconst routeLoaderModuleCache = new Map<string, Promise<RouteLoaderModule>>();\nconst routeLoaderModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst routeMetadataModuleCache = new Map<string, Promise<RouteMetadataModule>>();\nconst routeMetadataModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst middlewareModuleCache = new Map<string, Promise<MiddlewareModule>>();\nconst middlewareModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst serverRouteModuleCache = new Map<string, Promise<Record<string, unknown>>>();\nconst serverRouteModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst composedRouteMetadataCache = new Map<string, Promise<RouteMetadata | undefined>>();\nconst composedRouteMetadataCacheCounters = createRouterRuntimeCacheCounters();\nconst maxServerTransformCacheEntries = resolveRouterCacheLimit(\"SERVER_TRANSFORM\", 512);\nconst maxServerSourceFileCacheEntries = resolveRouterCacheLimit(\"SERVER_SOURCE_FILE\", 512);\nconst maxRouteSourceAnalysisCacheEntries = resolveRouterCacheLimit(\"ROUTE_SOURCE_ANALYSIS\", 512);\nconst maxRouteOutOfOrderBoundaryAnalysisCacheEntries = resolveRouterCacheLimit(\n \"ROUTE_OUT_OF_ORDER_BOUNDARY_ANALYSIS\",\n 512,\n);\nconst maxRouteLoaderModuleCacheEntries = resolveRouterCacheLimit(\"ROUTE_LOADER_MODULE\", 512);\nconst maxRouteMetadataModuleCacheEntries = resolveRouterCacheLimit(\"ROUTE_METADATA_MODULE\", 512);\nconst maxMiddlewareModuleCacheEntries = resolveRouterCacheLimit(\"MIDDLEWARE_MODULE\", 64);\nconst maxServerRouteModuleCacheEntries = resolveRouterCacheLimit(\"SERVER_ROUTE_MODULE\", 512);\nconst maxComposedRouteMetadataCacheEntries = resolveRouterCacheLimit(\n \"COMPOSED_ROUTE_METADATA\",\n 512,\n);\n\nexport function routerRenderRuntimeCacheStats(): RouterRuntimeCacheStat[] {\n return [\n routerRuntimeCacheStat(\n \"server-transform\",\n serverTransformCache,\n maxServerTransformCacheEntries,\n serverTransformCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"server-source-file\",\n serverSourceFileCache,\n maxServerSourceFileCacheEntries,\n serverSourceFileCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"route-source-analysis\",\n routeSourceAnalysisCache,\n maxRouteSourceAnalysisCacheEntries,\n routeSourceAnalysisCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"route-out-of-order-boundary-analysis\",\n routeOutOfOrderBoundaryAnalysisCache,\n maxRouteOutOfOrderBoundaryAnalysisCacheEntries,\n routeOutOfOrderBoundaryAnalysisCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"route-loader-module\",\n routeLoaderModuleCache,\n maxRouteLoaderModuleCacheEntries,\n routeLoaderModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"route-metadata-module\",\n routeMetadataModuleCache,\n maxRouteMetadataModuleCacheEntries,\n routeMetadataModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"middleware-module\",\n middlewareModuleCache,\n maxMiddlewareModuleCacheEntries,\n middlewareModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"server-route-module\",\n serverRouteModuleCache,\n maxServerRouteModuleCacheEntries,\n serverRouteModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"composed-route-metadata\",\n composedRouteMetadataCache,\n maxComposedRouteMetadataCacheEntries,\n composedRouteMetadataCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"rendered-shell\",\n renderedShellCache,\n MAX_RENDERED_SHELL_CACHE_ENTRIES,\n renderedShellCacheCounters,\n ),\n ];\n}\n\n// Issue 086: per-shell prefix/suffix cache. Pure layouts (whose\n// exported component takes zero arguments and therefore cannot\n// depend on the request props) produce the same HTML for every\n// request, so we cache the already-split { prefix, suffix } strings\n// keyed by appDir + shellFile + serverModuleCacheVersion. Impure\n// layouts (function.length > 0) are tagged \"impure\" so we skip the\n// detection on subsequent requests but still render per-request.\n//\n// The cache is only active when a version is present (production\n// builds); dev mode keeps the previous behaviour so reloads pick up\n// edits without server restart.\nconst renderedShellCache = new Map<string, RenderedShell | \"impure\">();\nconst MAX_RENDERED_SHELL_CACHE_ENTRIES = 1024;\nconst renderedShellCacheCounters = createRouterRuntimeCacheCounters();\n\ninterface RenderedShell {\n hasOutOfOrderBoundary: boolean;\n prefix: string;\n suffix: string;\n}\n\ninterface RouteSourceAnalysis {\n authIncludesClaims: boolean;\n cachePolicy: ReturnType<typeof routeCachePolicyFromSource>;\n clientInference: ClientRouteInferenceResult;\n hasLoader: boolean;\n routeCode: string;\n streamRoute: boolean;\n usesRuntimeCacheControl: boolean;\n}\n\n/**\n * Renders a source app-router request into a `Response`.\n */\nexport async function renderAppRequest(options: RenderAppRequestOptions): Promise<Response> {\n const authStorage = authRequestStorage();\n\n if (authStorage.getStore() === undefined) {\n return authStorage.run({}, () => renderAppRequest(options));\n }\n\n const trace = traceContextFromRequest(options.request);\n const url = options.requestUrl ?? new URL(options.request.url);\n const requestEvent = {\n method: options.request.method,\n path: url.pathname,\n request: options.request,\n ...(trace === undefined ? {} : { trace }),\n };\n invokeRouterInstrumentation(options.instrumentation?.onRequestStart, requestEvent);\n const response = await renderAppRequestInternal({ ...options, requestUrl: url });\n invokeRouterInstrumentation(options.instrumentation?.onRequestEnd, {\n ...requestEvent,\n status: response.status,\n });\n\n return applyAppRouterResponseHook(response, options);\n}\n\nfunction createRenderTiming(logger: AppRouterLogger | undefined): RenderTiming | undefined {\n return logger?.debug === undefined ? undefined : { phases: {} };\n}\n\nfunction renderTimingPhaseStartedAt(timing: RenderTiming | undefined): number | undefined {\n return timing === undefined ? undefined : logNow();\n}\n\nfunction finishRenderTimingPhase(\n timing: RenderTiming | undefined,\n startedAt: number | undefined,\n phaseName: string,\n): void {\n if (timing === undefined || startedAt === undefined) {\n return;\n }\n\n timing.phases[phaseName] = logDurationMs(startedAt);\n}\n\nasync function readSettledPromiseAtNextTask<T>(\n promise: Promise<T>,\n): Promise<{ settled: true; value: T } | { settled: false }> {\n return await Promise.race([\n promise.then((value) => ({ settled: true as const, value })),\n new Promise<{ settled: false }>((resolve) => {\n setTimeout(() => resolve({ settled: false }), 0);\n }),\n ]);\n}\n\nfunction addRenderTimingPhaseDuration(\n timing: RenderTiming | undefined,\n startedAt: number | undefined,\n phaseName: string,\n): void {\n if (timing === undefined || startedAt === undefined) {\n return;\n }\n\n timing.phases[phaseName] = (timing.phases[phaseName] ?? 0) + logDurationMs(startedAt);\n}\n\nfunction routeLoaderMayReturnControlResponse(code: string): boolean {\n return (\n /\\b(?:redirect|redirectExternal|rewrite|notFound|throwNotFound)\\s*\\(/.test(code) ||\n /\\bnew\\s+Response\\s*\\(/.test(code) ||\n /\\bResponse\\.(?:redirect|json)\\s*\\(/.test(code)\n );\n}\n\nasync function waitForRenderPreload(\n options: Pick<RenderAppRequestOptions, \"preload\">,\n timing: RenderTiming | undefined,\n): Promise<void> {\n if (options.preload?.wait !== \"before-render\") {\n return;\n }\n\n const phaseStartedAt = renderTimingPhaseStartedAt(timing);\n try {\n await options.preload.promise;\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"preloadWaitMs\");\n }\n}\n\nasync function loadServerRenderArtifacts(\n options: RenderAppRequestRuntimeOptions,\n routeFile: string,\n timing: RenderTiming | undefined,\n): Promise<void> {\n const loader = options.serverRenderArtifactLoader;\n\n if (loader === undefined) {\n return;\n }\n\n const phaseStartedAt = renderTimingPhaseStartedAt(timing);\n try {\n await loader.load(routeFile);\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"renderArtifactLoadMs\");\n }\n}\n\nfunction emitRenderTiming(\n options: RenderAppRequestRuntimeOptions,\n timing: RenderTiming | undefined,\n status: number,\n): void {\n if (timing === undefined) {\n return;\n }\n\n emitRouterLog(options.logger, \"debug\", {\n method: options.request.method,\n path: new URL(options.request.url).pathname,\n phases: timing.phases,\n status,\n type: \"router:render:timing\",\n });\n}\n\nexport type AppRouterMiddlewareResult =\n | { request: Request; type: \"continue\" }\n | { response: Response; type: \"response\" };\n\nexport async function resolveAppRouterMiddleware(options: {\n appDir: string;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n instrumentation?: RouterInstrumentation | undefined;\n middlewareControl?: RouteMiddlewareControl | undefined;\n request: Request;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<AppRouterMiddlewareResult> {\n const middlewareResponse = await runMiddleware(options);\n\n if (middlewareResponse === undefined) {\n return { request: options.request, type: \"continue\" };\n }\n\n const location = rewriteLocation(middlewareResponse);\n\n if (location !== undefined) {\n return {\n request: new Request(new URL(location, options.request.url), options.request),\n type: \"continue\",\n };\n }\n\n return { response: middlewareResponse, type: \"response\" };\n}\n\nasync function renderAppRequestInternal(\n options: RenderAppRequestRuntimeOptions,\n): Promise<Response> {\n warnProductionRenderWithoutPrebuiltModules(options);\n const timing = createRenderTiming(options.logger);\n const clientRouteInferenceCache =\n options.clientRouteInferenceCache ?? createClientRouteInferenceCache();\n let phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const routes = options.routes ?? (await scanAppRoutes({ appDir: options.appDir }));\n finishRenderTimingPhase(timing, phaseStartedAt, \"routeScanMs\");\n const url = options.requestUrl ?? new URL(options.request.url);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const matched =\n options.matchedRoute ??\n options.routeMatcher?.match(url.pathname) ??\n matchRoute(routes, url.pathname);\n finishRenderTimingPhase(timing, phaseStartedAt, \"routeMatchMs\");\n const hasMiddleware =\n options.skipMiddleware === true\n ? false\n : await hasAppMiddleware({\n appDir: options.appDir,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n });\n const middlewareControl =\n hasMiddleware && matched?.route.kind === \"page\"\n ? await loadRouteMiddlewareControl({\n appDir: options.appDir,\n pageFile: matched.route.file,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n })\n : undefined;\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const middlewareResult =\n options.skipMiddleware === true || !hasMiddleware\n ? ({ request: options.request, type: \"continue\" } satisfies AppRouterMiddlewareResult)\n : await resolveAppRouterMiddleware({\n appDir: options.appDir,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n importPolicy: options.importPolicy,\n instrumentation: options.instrumentation,\n middlewareControl,\n request: options.request,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n timing,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"middlewareMs\");\n\n if (middlewareResult.type === \"response\") {\n emitRenderTiming(options, timing, middlewareResult.response.status);\n return middlewareResult.response;\n }\n\n if (middlewareResult.request !== options.request) {\n return renderAppRequestInternal({\n ...options,\n matchedRoute: undefined,\n request: middlewareResult.request,\n requestUrl: new URL(middlewareResult.request.url),\n skipMiddleware: true,\n });\n }\n\n if (url.pathname === \"/_mreact/actions\") {\n return dispatchServerActionRequest({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n request: options.request,\n renderSingleFlightNavigation: async (singleFlight) =>\n renderAppRequestInternal({\n ...options,\n matchedRoute: undefined,\n request: singleFlightNavigationRequest({\n path: singleFlight.path,\n request: singleFlight.request,\n }),\n requestUrl: undefined,\n }),\n routeCache: options.routeCache,\n ...(options.serverModuleCacheVersion === undefined\n ? {}\n : { serverActionCacheVersion: options.serverModuleCacheVersion }),\n serverActions: options.serverActions,\n });\n }\n\n if (matched === undefined) {\n const notFoundFile = await nearestBoundaryFileForPath({\n appDir: options.appDir,\n filename: \"not-found.mreact.tsx\",\n pathname: url.pathname,\n serverSourceFiles: options.serverSourceFiles,\n });\n\n const response = await renderSpecialRoute({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: options.clientStylesByFile?.get(notFoundFile),\n error: undefined,\n request: options.request,\n routePath: url.pathname,\n routeFile: notFoundFile,\n routeScripts: options.clientScripts,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n status: 404,\n textFallback: \"Not Found\",\n });\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n const queryClient = options.queryClient ?? createQueryClient();\n let recoveryRoute:\n | {\n clientRoute: boolean;\n props: unknown;\n routePath: string;\n script: string | undefined;\n }\n | undefined;\n let routeCacheContext: ReturnType<typeof beginRouteCacheContext> | undefined;\n\n try {\n if (matched.route.kind === \"asset\") {\n return await dispatchConventionAssetRoute({\n file: matched.route.file,\n request: options.request,\n });\n }\n\n if (matched.route.kind === \"metadata\") {\n return await dispatchMetadataRoute({\n appDir: options.appDir,\n file: matched.route.file,\n importPolicy: options.importPolicy,\n params: matched.params,\n request: options.request,\n route: matched.route,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n });\n }\n\n if (matched.route.kind === \"server\") {\n return await dispatchServerRoute({\n appDir: options.appDir,\n env: options.env,\n file: matched.route.file,\n importPolicy: options.importPolicy,\n params: matched.params,\n request: options.request,\n route: matched.route,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n });\n }\n\n // Issue 080: page routes render HTML for GET / HEAD only. Other\n // methods (PUT, PATCH, DELETE, PROPFIND, ...) get 405 with an\n // Allow header so the response shape complies with RFC 9110 §9\n // and so caching intermediaries do not cross-cache method results.\n const methodResponse = pageRouteMethodResponse(options.request.method);\n if (methodResponse !== undefined) {\n return methodResponse;\n }\n\n routeCacheContext = beginRouteCacheContext(options.routeCache);\n const clientScript = options.clientScripts?.get(matched.route.path);\n const clientStyleSheets = options.clientStyles?.get(matched.route.path);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const originalCode = await readServerSourceFile(\n matched.route.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n finishRenderTimingPhase(timing, phaseStartedAt, \"readSourceMs\");\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const originalAnalysis = await analyzeRouteSource({\n appDir: options.appDir,\n artifact: options.serverModules?.get(matched.route.file)?.analysis,\n code: originalCode,\n filename: matched.route.file,\n routePath: matched.route.path,\n clientRouteInferenceCache,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n timing,\n vitePlugins: options.vitePlugins,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"sourceAnalysisMs\");\n const cachePolicy = originalAnalysis.cachePolicy;\n const navigationScript = options.navigationScripts?.get(matched.route.path);\n const cacheKey = routeCacheKey(options.appDir, matched.route.path, url);\n const mayUseRouteCache =\n cachePolicy === undefined\n ? originalAnalysis.usesRuntimeCacheControl\n : cachePolicy.revalidateSeconds !== 0;\n const reloadRouteCache = isNavigationRouteCacheReloadRequest(options.request);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const cachedResponse =\n !mayUseRouteCache || reloadRouteCache\n ? undefined\n : await cachedRouteResponse({\n cache: options.routeCache,\n key: cacheKey,\n request: options.request,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"routeCacheMs\");\n\n if (cachedResponse !== undefined) {\n return cachedResponse;\n }\n\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const preparedActions = await prepareRouteServerActions({\n appDir: options.appDir,\n code: originalCode,\n formActionReferences: options.serverActionReferencesByFile?.get(matched.route.file),\n placeholders: true,\n pageFile: matched.route.file,\n request: options.request,\n });\n for (const diagnostic of preparedActions.diagnostics ?? []) {\n console.warn(`${diagnostic.code}: ${diagnostic.message}`);\n }\n finishRenderTimingPhase(timing, phaseStartedAt, \"serverActionsMs\");\n const code = preparedActions.code;\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const routeAnalysis =\n code === originalCode\n ? originalAnalysis\n : await analyzeRouteSource({\n appDir: options.appDir,\n buildRenderCode: preparedActions.htmlReplacements !== undefined,\n code,\n filename: matched.route.file,\n routePath: matched.route.path,\n clientRouteInferenceCache,\n serverModuleCacheVersion: undefined,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"routeCodeAnalysisMs\");\n const routeCode = routeAnalysis.routeCode;\n const streamRoute = routeAnalysis.streamRoute;\n const clientInference = routeAnalysis.clientInference;\n const clientRoute = clientInference.client;\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const dataPromise = routeAnalysis.hasLoader\n ? loadRouteDataWithInstrumentation({\n appDir: options.appDir,\n code: originalCode,\n context: {\n env: options.env,\n params: matched.params,\n queryClient,\n request: options.request,\n },\n filename: matched.route.file,\n importPolicy: options.importPolicy,\n instrumentation: options.instrumentation,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n request: options.request,\n routeId: routeIdForPath(matched.route.path),\n routePath: matched.route.path,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n define: options.define,\n vitePlugins: options.vitePlugins,\n timing,\n })\n : undefined;\n finishRenderTimingPhase(timing, phaseStartedAt, \"loaderStartMs\");\n recoveryRoute = {\n clientRoute,\n props: {\n params: matched.params,\n request: { url: options.request.url },\n },\n routePath: matched.route.path,\n script: clientScript,\n };\n if (streamRoute) {\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const loadingFile = await nearestExistingBoundaryFileForPage({\n appDir: options.appDir,\n filename: \"loading.mreact.tsx\",\n pageFile: matched.route.file,\n serverSourceFiles: options.serverSourceFiles,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"loadingBoundaryLookupMs\");\n const streamShellResponseHeaders = {\n \"content-type\": \"text/html; charset=utf-8\",\n \"x-mreact-stream\": \"1\",\n };\n\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const mayRenderOutOfOrder = await mayRenderOutOfOrderBoundaryDeep({\n code: routeCode,\n filename: matched.route.file,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"outOfOrderAnalysisMs\");\n\n if (loadingFile === undefined && !mayRenderOutOfOrder) {\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n let data: unknown;\n try {\n data = dataPromise === undefined ? undefined : await dataPromise;\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"loaderWaitMs\");\n }\n if (data instanceof Response) {\n emitRenderTiming(options, timing, data.status);\n return data;\n }\n await waitForRenderPreload(options, timing);\n await loadServerRenderArtifacts(options, matched.route.file, timing);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const stringOutput = transformServerModule({\n code: routeCode,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n filename: matched.route.file,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"stringTransformMs\");\n const stringFatalDiagnostics = fatalServerDiagnostics(stringOutput.diagnostics);\n\n if (stringFatalDiagnostics.length > 0) {\n return new Response(formatServerDiagnostics(matched.route.file, stringFatalDiagnostics), {\n status: 500,\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n });\n }\n\n const renderedPage = await runWithQueryClient(queryClient, () =>\n runServerModuleWithSlots(\n stringOutput.code,\n {\n data,\n params: matched.params,\n queryClient,\n request: options.request,\n },\n matched.route.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n undefined,\n options.importPolicy,\n options.devServerModuleCacheVersion,\n ),\n );\n const pageHtml = renderedPage.html;\n const pageHtmlForLayout = clientRoute\n ? withHydrationMarkers({\n assetBaseUrl: options.assetBaseUrl,\n clientReferenceManifest: stringOutput.metadata.clientReferenceManifest,\n html: pageHtml,\n routePath: matched.route.path,\n script: clientScript,\n props: {\n params: matched.params,\n request: { url: options.request.url },\n data,\n },\n })\n : isNavigationRequest(options.request)\n ? withRouteMarkers({\n html: pageHtml,\n routePath: matched.route.path,\n })\n : pageHtml;\n let html = await runWithQueryClient(queryClient, () =>\n applyLayouts({\n appDir: options.appDir,\n pageFile: matched.route.file,\n html: pageHtmlForLayout,\n props: {\n data,\n params: matched.params,\n queryClient,\n request: options.request,\n },\n slots: renderedPage.slots,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n clientRouteInferenceCache,\n timing,\n vitePlugins: options.vitePlugins,\n importPolicy: options.importPolicy,\n }),\n );\n const metadata = await loadComposedRouteMetadata({\n appDir: options.appDir,\n code: originalCode,\n context: {\n data,\n params: matched.params,\n request: options.request,\n },\n filename: matched.route.file,\n importPolicy: options.importPolicy,\n routes,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n html = injectHeadMetadata(html, metadata);\n warnIfCspNonceWouldBlockInlineTags({\n html,\n logger: options.logger,\n metadata,\n request: options.request,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n html = injectAuthSessionClaims(\n html,\n originalAnalysis.authIncludesClaims ? currentAuthClaims() : undefined,\n );\n html = injectQueryState(html, dehydrate(queryClient));\n const response = withOptionalActionCookie(\n htmlResponse(\n applyActionHtmlReplacements(\n `<!DOCTYPE html>${clientNavigationHeadTags({\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: clientStyleSheets,\n currentScript: clientRoute ? clientScript : undefined,\n currentNavigationScript: navigationScript,\n routeScripts: options.clientScripts,\n })}${html}`,\n preparedActions.htmlReplacements,\n ),\n {\n headers: responseHeadersForMetadata(metadata, options.request, {\n \"x-mreact-stream\": \"1\",\n }),\n },\n ),\n preparedActions.csrfToken,\n preparedActions.csrfTokenIsNew === true,\n );\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n let streamData: unknown;\n let streamDataPromise = dataPromise ?? Promise.resolve(undefined);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n if (loadingFile === undefined || routeLoaderMayReturnControlResponse(originalCode)) {\n try {\n streamData = dataPromise === undefined ? undefined : await dataPromise;\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"loaderWaitMs\");\n }\n if (streamData instanceof Response) {\n emitRenderTiming(options, timing, streamData.status);\n return streamData;\n }\n streamDataPromise = Promise.resolve(streamData);\n } else {\n try {\n const settledData = await readSettledPromiseAtNextTask(streamDataPromise);\n if (settledData.settled) {\n if (settledData.value instanceof Response) {\n emitRenderTiming(options, timing, settledData.value.status);\n return settledData.value;\n }\n streamDataPromise = Promise.resolve(settledData.value);\n }\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"loaderWaitMs\");\n }\n }\n\n await waitForRenderPreload(options, timing);\n await loadServerRenderArtifacts(options, matched.route.file, timing);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const output = transformServerModule({\n code: routeCode,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n filename: matched.route.file,\n serverModules: options.serverModules,\n serverOutput: \"stream\",\n serverAwaitHydration: clientRoute,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"streamTransformMs\");\n const fatalDiagnostics = fatalServerDiagnostics(output.diagnostics);\n\n if (fatalDiagnostics.length > 0) {\n return new Response(formatServerDiagnostics(matched.route.file, fatalDiagnostics), {\n status: 500,\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n });\n }\n\n if (loadingFile !== undefined) {\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const stream = await runServerStreamModuleWithLoading(output.code, {\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n clientRoute,\n data: streamDataPromise,\n define: options.define,\n loadingFile,\n pageFile: matched.route.file,\n params: matched.params,\n queryClient,\n request: options.request,\n routePath: matched.route.path,\n routeScripts: options.clientScripts,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n clientRouteInferenceCache,\n importPolicy: options.importPolicy,\n script: clientScript,\n clientReferenceManifest: output.metadata.clientReferenceManifest,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"streamConstructionMs\");\n\n const response = withOptionalActionCookie(\n new Response(stream, {\n headers: streamShellResponseHeaders,\n }),\n preparedActions.csrfToken,\n preparedActions.csrfTokenIsNew === true,\n );\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n const data = streamData;\n const props = {\n data,\n params: matched.params,\n queryClient,\n request: options.request,\n };\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const stream = runServerStreamModule(output.code, {\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n pageFile: matched.route.file,\n props,\n routePath: matched.route.path,\n routeScripts: options.clientScripts,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n clientRouteInferenceCache,\n importPolicy: options.importPolicy,\n clientRoute,\n script: clientScript,\n clientReferenceManifest: output.metadata.clientReferenceManifest,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"streamConstructionMs\");\n\n const response = withOptionalActionCookie(\n new Response(stream, {\n headers: streamShellResponseHeaders,\n }),\n preparedActions.csrfToken,\n preparedActions.csrfTokenIsNew === true,\n );\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n let data: unknown;\n try {\n data = dataPromise === undefined ? undefined : await dataPromise;\n } finally {\n finishRenderTimingPhase(timing, phaseStartedAt, \"loaderWaitMs\");\n }\n if (data instanceof Response) {\n emitRenderTiming(options, timing, data.status);\n return data;\n }\n await waitForRenderPreload(options, timing);\n await loadServerRenderArtifacts(options, matched.route.file, timing);\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const output = transformServerModule({\n code: routeCode,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n filename: matched.route.file,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"stringTransformMs\");\n const fatalDiagnostics = fatalServerDiagnostics(output.diagnostics);\n\n if (fatalDiagnostics.length > 0) {\n return new Response(formatServerDiagnostics(matched.route.file, fatalDiagnostics), {\n status: 500,\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n });\n }\n\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const renderedPage = await runWithQueryClient(queryClient, () =>\n runServerModuleWithSlots(\n output.code,\n {\n data,\n params: matched.params,\n queryClient,\n request: options.request,\n },\n matched.route.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n timing,\n options.importPolicy,\n options.devServerModuleCacheVersion,\n ),\n );\n finishRenderTimingPhase(timing, phaseStartedAt, \"pageRenderMs\");\n const pageHtml = renderedPage.html;\n // Wrap the page (not the full document) with the hydration marker so\n // the marker sits inside <body>, not around <html>. Wrapping <html>\n // forces the browser HTML parser to strip the wrappers and promote\n // <head> / <body> children up to the marker, which flattens the\n // layout into the marker and breaks the hydration target lookup.\n const pageHtmlForLayout = clientRoute\n ? withHydrationMarkers({\n assetBaseUrl: options.assetBaseUrl,\n clientReferenceManifest: output.metadata.clientReferenceManifest,\n html: pageHtml,\n routePath: matched.route.path,\n script: clientScript,\n props: {\n params: matched.params,\n request: { url: options.request.url },\n data,\n },\n })\n : isNavigationRequest(options.request)\n ? withRouteMarkers({\n html: pageHtml,\n routePath: matched.route.path,\n })\n : pageHtml;\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n let html = await runWithQueryClient(queryClient, () =>\n applyLayouts({\n appDir: options.appDir,\n pageFile: matched.route.file,\n html: pageHtmlForLayout,\n props: {\n data,\n params: matched.params,\n queryClient,\n request: options.request,\n },\n slots: renderedPage.slots,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n clientRouteInferenceCache,\n timing,\n vitePlugins: options.vitePlugins,\n }),\n );\n finishRenderTimingPhase(timing, phaseStartedAt, \"layoutRenderMs\");\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const metadata = await loadComposedRouteMetadata({\n appDir: options.appDir,\n code: originalCode,\n context: {\n data,\n params: matched.params,\n request: options.request,\n },\n filename: matched.route.file,\n importPolicy: options.importPolicy,\n routes,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"metadataMs\");\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n html = injectHeadMetadata(html, metadata);\n warnIfCspNonceWouldBlockInlineTags({\n html,\n logger: options.logger,\n metadata,\n request: options.request,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n html = injectAuthSessionClaims(\n html,\n originalAnalysis.authIncludesClaims ? currentAuthClaims() : undefined,\n );\n html = injectQueryState(html, dehydrate(queryClient));\n\n const response = withOptionalActionCookie(\n htmlResponse(\n applyActionHtmlReplacements(\n `<!DOCTYPE html>${clientNavigationHeadTags({\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: clientStyleSheets,\n currentScript: clientRoute ? clientScript : undefined,\n currentNavigationScript: navigationScript,\n routeScripts: options.clientScripts,\n })}${html}`,\n preparedActions.htmlReplacements,\n ),\n {\n headers: responseHeadersForMetadata(metadata, options.request),\n },\n ),\n preparedActions.csrfToken,\n preparedActions.csrfTokenIsNew === true,\n );\n\n const effectiveCachePolicy = cachePolicy ?? routeCacheContext.cachePolicy;\n\n const finalResponse = preparedActions.hasFormActions\n ? withRouteCacheHeader(response, effectiveCachePolicy)\n : await cacheRouteResponse({\n key: cacheKey,\n cache: options.routeCache,\n path: matched.route.path,\n policy: effectiveCachePolicy,\n request: options.request,\n response,\n });\n finishRenderTimingPhase(timing, phaseStartedAt, \"responseBuildMs\");\n emitRenderTiming(options, timing, finalResponse.status);\n return finalResponse;\n } catch (error) {\n if (isRedirectError(error)) {\n const response = new Response(null, {\n headers: { location: error.location },\n status: error.status,\n });\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n if (isNotFoundError(error)) {\n const notFoundFile = await nearestBoundaryFileForPage({\n appDir: options.appDir,\n filename: \"not-found.mreact.tsx\",\n pageFile: matched.route.file,\n });\n\n const response = await renderSpecialRoute({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: options.clientStylesByFile?.get(notFoundFile),\n error: undefined,\n request: options.request,\n routePath: matched.route.path,\n routeFile: notFoundFile,\n routeScripts: options.clientScripts,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n navigation: recoveryRoute,\n status: 404,\n textFallback: \"Not Found\",\n });\n emitRenderTiming(options, timing, response.status);\n return response;\n }\n\n const errorFile = await nearestBoundaryFileForPage({\n appDir: options.appDir,\n filename: \"error.mreact.tsx\",\n pageFile: matched.route.file,\n });\n options.onRenderError?.(error);\n\n const response = await renderSpecialRoute({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: options.clientStylesByFile?.get(errorFile),\n error,\n request: options.request,\n routePath: matched.route.path,\n routeFile: errorFile,\n routeScripts: options.clientScripts,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n vitePlugins: options.vitePlugins,\n navigation: recoveryRoute,\n status: 500,\n textFallback: \"Internal Server Error\",\n });\n emitRenderTiming(options, timing, response.status);\n return response;\n } finally {\n await routeCacheContext?.dispose();\n }\n}\n\nasync function applyAppRouterResponseHook(\n response: Response,\n options: RenderAppRequestOptions,\n): Promise<Response> {\n const hooked = await options.onResponse?.(response, {\n request: options.request,\n });\n\n return hooked instanceof Response ? hooked : response;\n}\n\nfunction withOptionalActionCookie(\n response: Response,\n csrfToken: string | undefined,\n csrfTokenIsNew: boolean,\n): Response {\n // Only re-issue Set-Cookie when this render minted the token. Reusing\n // an incoming cookie value (Issue 070) means no Set-Cookie is needed\n // and avoids stomping on a concurrent tab's hidden form input.\n if (csrfToken !== undefined && csrfTokenIsNew) {\n response.headers.append(\"set-cookie\", serverActionCookie(csrfToken));\n }\n\n return response;\n}\n\nfunction applyActionHtmlReplacements(\n html: string,\n replacements: readonly (readonly [string, string])[] | undefined,\n): string {\n if (replacements === undefined || replacements.length === 0) {\n return html;\n }\n\n let next = html;\n\n for (const [placeholder, value] of replacements) {\n next = next.replaceAll(placeholder, escapeHtmlAttribute(value));\n }\n\n return next;\n}\n\nfunction modulePreloadTags(script: string | undefined, assetBaseUrl: string | undefined): string {\n return script === undefined\n ? \"\"\n : `<link rel=\"modulepreload\" href=\"${escapeHtmlAttribute(\n assetPath(script, assetBaseUrl ?? \"/_mreact/client/\"),\n )}\">`;\n}\n\nfunction clientNavigationHeadTags(options: {\n assetBaseUrl: string | undefined;\n currentStyleSheets?: readonly string[] | undefined;\n currentNavigationScript?: string | undefined;\n currentScript: string | undefined;\n routeScripts: ReadonlyMap<string, string> | undefined;\n}): string {\n return [\n styleSheetTags(options.currentStyleSheets, options.assetBaseUrl),\n modulePreloadTags(options.currentScript, options.assetBaseUrl),\n navigationRuntimeScriptTag(options.currentNavigationScript, options.assetBaseUrl),\n routePrefetchManifestScript(options.routeScripts, options.assetBaseUrl),\n ].join(\"\");\n}\n\nfunction styleSheetTags(\n styleSheets: readonly string[] | undefined,\n assetBaseUrl: string | undefined,\n): string {\n return (styleSheets ?? [])\n .map(\n (styleSheet) =>\n `<link rel=\"stylesheet\" href=\"${escapeHtmlAttribute(\n styleSheetHref(styleSheet, assetBaseUrl),\n )}\">`,\n )\n .join(\"\");\n}\n\nfunction styleSheetHref(styleSheet: string, assetBaseUrl: string | undefined): string {\n if (styleSheet.startsWith(\"/\") || hasUrlScheme(styleSheet)) {\n return styleSheet;\n }\n\n return assetPath(styleSheet, assetBaseUrl ?? \"/_mreact/client/\");\n}\n\nfunction hasUrlScheme(value: string): boolean {\n const colon = value.indexOf(\":\");\n\n if (colon <= 0) {\n return false;\n }\n\n for (let index = 0; index < colon; index += 1) {\n const code = value.charCodeAt(index);\n const letter = (code >= 65 && code <= 90) || (code >= 97 && code <= 122);\n const digit = code >= 48 && code <= 57;\n const allowedSymbol = code === 43 || code === 45 || code === 46;\n\n if (index === 0 ? !letter : !letter && !digit && !allowedSymbol) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction navigationRuntimeScriptTag(\n script: string | undefined,\n assetBaseUrl: string | undefined,\n): string {\n if (script === undefined) {\n return \"\";\n }\n\n const json = JSON.stringify({\n script: assetPath(script, assetBaseUrl ?? \"/_mreact/client/\"),\n }).replaceAll(\"<\", \"\\\\u003c\");\n\n return `<script type=\"application/json\" id=\"mreact-navigation-runtime\">${json}</script>`;\n}\n\nfunction routePrefetchManifestScript(\n routeScripts: ReadonlyMap<string, string> | undefined,\n assetBaseUrl: string | undefined,\n): string {\n if (routeScripts === undefined || routeScripts.size === 0) {\n return \"\";\n }\n\n const routes = Array.from(routeScripts.entries(), ([path, script]) => ({\n path,\n script: assetPath(script, assetBaseUrl ?? \"/_mreact/client/\"),\n }));\n const json = JSON.stringify(routes).replaceAll(\"<\", \"\\\\u003c\");\n\n return `<script type=\"application/json\" id=\"mreact-route-prefetch-manifest\">${json}</script>`;\n}\n\nfunction isNavigationRequest(request: Request): boolean {\n return request.headers.get(\"x-mreact-navigation\") === \"1\";\n}\n\nfunction isNavigationRouteCacheReloadRequest(request: Request): boolean {\n return (\n isNavigationRequest(request) && request.headers.get(\"x-mreact-navigation-cache\") === \"reload\"\n );\n}\n\nfunction singleFlightNavigationRequest(options: { path: string; request: Request }): Request {\n const actionUrl = new URL(options.request.url);\n const targetUrl = new URL(options.path, actionUrl);\n const headers = new Headers();\n const cookie = options.request.headers.get(\"cookie\");\n\n if (cookie !== null) {\n headers.set(\"cookie\", cookie);\n }\n\n headers.set(\"x-mreact-navigation\", \"1\");\n headers.set(\"x-mreact-navigation-cache\", \"reload\");\n\n return new Request(targetUrl, {\n headers,\n method: \"GET\",\n });\n}\n\nasync function nearestBoundaryFileForPage(options: {\n appDir: string;\n filename: string;\n pageFile: string;\n}): Promise<string> {\n const relativeDir = relative(options.appDir, dirname(options.pageFile));\n const parts = relativeDir === \"\" ? [] : relativeDir.split(sep);\n\n return nearestBoundaryFileFromParts({\n appDir: options.appDir,\n filename: options.filename,\n parts,\n });\n}\n\nasync function nearestExistingBoundaryFileForPage(options: {\n appDir: string;\n filename: string;\n pageFile: string;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<string | undefined> {\n const relativeDir = relative(options.appDir, dirname(options.pageFile));\n const parts = relativeDir === \"\" ? [] : relativeDir.split(sep);\n\n return nearestExistingBoundaryFileFromParts({\n appDir: options.appDir,\n filename: options.filename,\n parts,\n serverSourceFiles: options.serverSourceFiles,\n });\n}\n\nasync function nearestBoundaryFileForPath(options: {\n appDir: string;\n filename: string;\n pathname: string;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<string> {\n const parts = options.pathname\n .replace(/^\\/+|\\/+$/g, \"\")\n .split(\"/\")\n .filter((part) => part.length > 0 && part !== \".\" && part !== \"..\");\n\n return await nearestBoundaryFileFromParts({\n appDir: options.appDir,\n filename: options.filename,\n parts,\n serverSourceFiles: options.serverSourceFiles,\n });\n}\n\nasync function nearestBoundaryFileFromParts(options: {\n appDir: string;\n filename: string;\n parts: string[];\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<string> {\n for (let count = options.parts.length; count >= 0; count -= 1) {\n for (const filename of boundaryFilenameCandidates(options.filename)) {\n const candidate = join(options.appDir, ...options.parts.slice(0, count), filename);\n\n if (options.serverSourceFiles !== undefined) {\n if (options.serverSourceFiles.has(candidate)) {\n return candidate;\n }\n continue;\n }\n\n try {\n await access(candidate);\n return candidate;\n } catch {\n // Keep walking toward the root boundary.\n }\n }\n }\n\n return join(options.appDir, boundaryFilenameCandidates(options.filename)[0] ?? options.filename);\n}\n\nasync function nearestExistingBoundaryFileFromParts(options: {\n appDir: string;\n filename: string;\n parts: string[];\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<string | undefined> {\n for (let count = options.parts.length; count >= 0; count -= 1) {\n for (const filename of boundaryFilenameCandidates(options.filename)) {\n const candidate = join(options.appDir, ...options.parts.slice(0, count), filename);\n\n if (options.serverSourceFiles !== undefined) {\n if (options.serverSourceFiles.has(candidate)) {\n return candidate;\n }\n continue;\n }\n\n try {\n await access(candidate);\n return candidate;\n } catch {\n // Keep walking toward the root boundary.\n }\n }\n }\n\n return undefined;\n}\n\nfunction boundaryFilenameCandidates(filename: string): string[] {\n if (!filename.endsWith(\".mreact.tsx\")) {\n return [filename];\n }\n\n const standardFilename = filename.replace(\".mreact.tsx\", \".tsx\");\n\n return [standardFilename, filename];\n}\n\nasync function renderSpecialRoute(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n currentStyleSheets?: readonly string[] | undefined;\n error: unknown;\n navigation?:\n | {\n clientRoute: boolean;\n props: unknown;\n routePath: string;\n script: string | undefined;\n }\n | undefined;\n request: Request;\n routePath?: string | undefined;\n routeFile: string;\n routeScripts?: ReadonlyMap<string, string> | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n define?: UserConfig[\"define\"] | undefined;\n status: number;\n textFallback: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Response> {\n if (options.serverSourceFiles !== undefined) {\n if (!options.serverSourceFiles.has(options.routeFile)) {\n return new Response(options.textFallback, { status: options.status });\n }\n } else {\n try {\n await access(options.routeFile);\n } catch {\n return new Response(options.textFallback, { status: options.status });\n }\n }\n\n const props = {\n data: undefined,\n debug: errorDebugContext(options.error, options.routePath),\n error: normalizeErrorForProps(options.error),\n params: {},\n queryClient: createQueryClient(),\n request: options.request,\n requestId: requestIdForErrorContext(options.request),\n routeId: routeIdForPath(options.routePath ?? new URL(options.request.url).pathname),\n traceId: traceContextFromRequest(options.request)?.traceId,\n };\n const pageHtml = await renderServerFileToHtml(\n options.routeFile,\n props,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n options.define,\n options.vitePlugins,\n );\n const pageHtmlForLayout =\n options.navigation?.clientRoute === true\n ? withHydrationMarkers({\n assetBaseUrl: options.assetBaseUrl,\n clientReferenceManifest: undefined,\n html: pageHtml,\n props: options.navigation.props,\n routePath: options.navigation.routePath,\n script: options.navigation.script,\n })\n : pageHtml;\n const html = await applyLayouts({\n appDir: options.appDir,\n pageFile: options.routeFile,\n html: pageHtmlForLayout,\n props,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n\n return new Response(\n `<!DOCTYPE html>${clientNavigationHeadTags({\n assetBaseUrl: options.assetBaseUrl,\n currentStyleSheets: options.currentStyleSheets,\n currentScript:\n options.navigation?.clientRoute === true ? options.navigation.script : undefined,\n routeScripts: options.routeScripts,\n })}${html}`,\n {\n headers: { \"content-type\": \"text/html; charset=utf-8\" },\n status: options.status,\n },\n );\n}\n\nasync function renderServerFileToHtml(\n file: string,\n props: ServerComponentProps,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n serverSourceFiles: ReadonlyMap<string, string> | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n): Promise<string> {\n const code = await readServerSourceFile(file, serverModuleCacheVersion, serverSourceFiles);\n const output = transformServerModule({\n code,\n filename: file,\n serverModules,\n serverOutput: \"string\",\n });\n const fatalDiagnostics = fatalServerDiagnostics(output.diagnostics);\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(formatServerDiagnostics(file, fatalDiagnostics));\n }\n\n return runServerModule(\n output.code,\n props,\n file,\n serverModules,\n serverModuleCacheVersion,\n define,\n vitePlugins,\n );\n}\n\nfunction normalizeErrorForProps(error: unknown): { message: string } {\n if (error instanceof Error) {\n return { message: error.message };\n }\n\n return { message: String(error) };\n}\n\nfunction requestIdForErrorContext(request: Request): string {\n return request.headers.get(\"x-request-id\") ?? randomUUID();\n}\n\nfunction errorDebugContext(\n error: unknown,\n routePath: string | undefined,\n):\n | {\n cause?: unknown;\n route?: { matched: string };\n stack?: string;\n }\n | undefined {\n if (process.env.NODE_ENV === \"production\" || !(error instanceof Error)) {\n return undefined;\n }\n\n return {\n ...(error.cause === undefined ? {} : { cause: error.cause }),\n ...(routePath === undefined ? {} : { route: { matched: routePath } }),\n ...(error.stack === undefined ? {} : { stack: error.stack }),\n };\n}\n\nasync function dispatchServerRoute(options: {\n appDir: string;\n env?: unknown;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n params: RouteParams;\n request: Request;\n route: AppRoute;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Response> {\n const module = await loadServerRouteModule(options);\n const handler = module[options.request.method] ?? module.ALL ?? module.default;\n\n if (typeof handler !== \"function\") {\n return new Response(\"Method Not Allowed\", {\n headers: { allow: allowedServerRouteMethods(module).join(\", \") },\n status: 405,\n });\n }\n\n let response: unknown;\n\n try {\n response = await handler(options.request, {\n env: options.env,\n params: options.params,\n request: options.request,\n route: options.route,\n });\n } catch (error) {\n if (error instanceof Response) {\n return error;\n }\n\n throw error;\n }\n\n return response instanceof Response\n ? response\n : new Response(\"Invalid route response\", { status: 500 });\n}\n\nfunction allowedServerRouteMethods(module: Record<string, unknown>): string[] {\n return [\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"HEAD\", \"OPTIONS\"].filter(\n (method) => typeof module[method] === \"function\",\n );\n}\n\nasync function dispatchConventionAssetRoute(options: {\n file: string;\n request: Request;\n}): Promise<Response> {\n if (options.request.method !== \"GET\" && options.request.method !== \"HEAD\") {\n return new Response(\"Method Not Allowed\", {\n status: 405,\n headers: { allow: \"GET, HEAD\" },\n });\n }\n\n const bytes = await readFile(options.file);\n return bytesResponse(options.request.method === \"HEAD\" ? new Uint8Array() : bytes, {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": appFileConventionContentType(options.file),\n },\n });\n}\n\nfunction textConventionResponse(body: string): Response {\n return htmlResponse(body, {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": \"text/plain; charset=utf-8\",\n },\n });\n}\n\nfunction xmlConventionResponse(body: string): Response {\n return htmlResponse(body, {\n headers: {\n \"cache-control\": \"no-cache\",\n \"content-type\": \"application/xml; charset=utf-8\",\n },\n });\n}\n\nfunction jsonConventionResponse(body: ManifestDescriptor): Response {\n return htmlResponse(JSON.stringify(body), {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": \"application/manifest+json; charset=utf-8\",\n },\n });\n}\n\nasync function dispatchMetadataRoute(options: {\n appDir: string;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n params: RouteParams;\n request: Request;\n route: Extract<AppRoute, { kind: \"metadata\" }>;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Response> {\n if (options.request.method !== \"GET\" && options.request.method !== \"HEAD\") {\n return new Response(\"Method Not Allowed\", {\n status: 405,\n headers: { allow: \"GET, HEAD\" },\n });\n }\n\n const module = await loadServerRouteModule(options);\n const handler = module.default;\n if (typeof handler !== \"function\") {\n return new Response(\"Invalid metadata route response\", { status: 500 });\n }\n\n const url = new URL(options.request.url);\n const context = {\n baseUrl: url.origin,\n host: url.host,\n params: options.params,\n request: options.request,\n };\n const value = await handler(context);\n\n if (value instanceof Response) {\n return value;\n }\n\n if (options.route.convention === \"robots\") {\n return textConventionResponse(serializeRobots(value as RobotsManifest));\n }\n if (options.route.convention === \"sitemap\") {\n return xmlConventionResponse(serializeSitemap(value as readonly SitemapEntry[]));\n }\n if (options.route.convention === \"manifest\") {\n return jsonConventionResponse(value as ManifestDescriptor);\n }\n if (options.route.convention === \"opengraph-image\") {\n const body =\n value instanceof Uint8Array\n ? value\n : new TextEncoder().encode(typeof value === \"string\" ? value : String(value));\n return bytesResponse(body, {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\":\n typeof value === \"string\" && value.trimStart().startsWith(\"<svg\")\n ? \"image/svg+xml\"\n : \"application/octet-stream\",\n },\n });\n }\n\n return new Response(\"Invalid metadata route convention\", { status: 500 });\n}\n\nasync function loadServerRouteModule(options: {\n appDir: string;\n define?: UserConfig[\"define\"] | undefined;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Record<string, unknown>> {\n const code = await readServerSourceFile(\n options.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n const externalSourceDirs = devExternalSourceDirs(options.file, options.importPolicy);\n\n if (\n options.serverModuleCacheVersion === undefined &&\n options.define === undefined &&\n (options.vitePlugins === undefined || options.vitePlugins.length === 0) &&\n (externalSourceDirs === undefined || !hasRelativeSourceImport(code))\n ) {\n return await importAppRouterFileModule<Record<string, unknown>>(options.file);\n }\n\n const artifactCode = options.serverModules?.get(options.file)?.request;\n const codeHash = memoizedHashText(code);\n if (\n artifactCode !== undefined &&\n artifactCode.sourceHash === codeHash &&\n artifactCode.moduleFile !== undefined\n ) {\n return await importBuiltServerModuleFile<Record<string, unknown>>({\n file: artifactCode.moduleFile,\n label: `server-route:${options.file}`,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n }\n\n const moduleCode =\n artifactCode !== undefined && artifactCode.sourceHash === codeHash ? artifactCode.code : code;\n const cacheKey = `server-route\\0${options.file}\\0${options.serverModuleCacheVersion}\\0${codeHash}\\0${memoizedHashText(moduleCode)}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n const cached = readRouterRuntimeCacheEntry(\n serverRouteModuleCache,\n cacheKey,\n serverRouteModuleCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = importAppRouterSourceModule<Record<string, unknown>>({\n cacheKey,\n code: moduleCode,\n define: options.define,\n externalizeAppSourceModuleDirs: externalSourceDirs,\n label: `server-route:${options.file}`,\n plugins: [\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n label: \"Route handler\",\n }),\n ],\n ...(moduleCode === code ? { resolveDir: dirname(options.file) } : {}),\n sourcefile: options.file,\n vitePlugins: options.vitePlugins,\n }).catch((error) => {\n serverRouteModuleCache.delete(cacheKey);\n throw error;\n });\n setBoundedCacheEntry(\n serverRouteModuleCache,\n cacheKey,\n loaded,\n maxServerRouteModuleCacheEntries,\n serverRouteModuleCacheCounters,\n );\n\n return loaded;\n}\n\nfunction hasRelativeSourceImport(code: string): boolean {\n return (\n /\\b(?:import|export)\\s+(?:[^\"'()]*?\\s+from\\s+)?[\"']\\.{1,2}\\//u.test(code) ||\n /\\bimport\\s*\\(\\s*[\"']\\.{1,2}\\//u.test(code)\n );\n}\n\nfunction devExternalSourceDirs(\n baseDir: string,\n importPolicy: AppRouterImportPolicy | undefined,\n): readonly string[] | undefined {\n if (importPolicy?.allowedSourceDirs === undefined) {\n return undefined;\n }\n\n const projectRoot = resolve(importPolicy.projectRoot ?? baseDir);\n return importPolicy.allowedSourceDirs.map((directory) => resolve(projectRoot, directory));\n}\n\nasync function runMiddleware(options: {\n appDir: string;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n instrumentation?: RouterInstrumentation | undefined;\n middlewareControl?: RouteMiddlewareControl | undefined;\n request: Request;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Response | undefined> {\n if (options.middlewareControl?.skip === true) {\n return undefined;\n }\n\n const candidates = [\n join(options.appDir, \"middleware.ts\"),\n join(options.appDir, \"middleware.mreact.ts\"),\n ];\n const pathname = new URL(options.request.url).pathname;\n\n if (Array.isArray(options.middlewareControl?.skip)) {\n validateRouteMiddlewareControl({\n availableIds: await collectAvailableMiddlewareIds({\n candidates,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n }),\n control: options.middlewareControl,\n routePath: pathname,\n });\n }\n\n for (const file of candidates) {\n try {\n await access(file);\n } catch {\n continue;\n }\n\n const code = await readServerSourceFile(\n file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n const staticConfig = parseStaticMiddlewareConfig(code);\n\n if (shouldSkipMiddleware(staticConfig, options.middlewareControl)) {\n return undefined;\n }\n\n if (\n staticConfig.hasMatcher &&\n staticConfig.matcher !== undefined &&\n !middlewareMatches(staticConfig, pathname)\n ) {\n return undefined;\n }\n\n let module: MiddlewareModule;\n const moduleLoadStartedAt = renderTimingPhaseStartedAt(options.timing);\n try {\n module = await loadMiddlewareModule({\n appDir: options.appDir,\n code,\n define: options.define,\n file,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n vitePlugins: options.vitePlugins,\n });\n } finally {\n finishRenderTimingPhase(options.timing, moduleLoadStartedAt, \"middlewareModuleLoadMs\");\n }\n\n if (shouldSkipMiddleware(module.config, options.middlewareControl)) {\n return undefined;\n }\n\n if (!middlewareMatches(module.config, pathname)) {\n return undefined;\n }\n\n const middleware = module.middleware ?? module.default;\n\n if (typeof middleware !== \"function\") {\n return undefined;\n }\n\n const trace = traceContextFromRequest(options.request);\n const event = {\n method: options.request.method,\n name: \"middleware\",\n path: new URL(options.request.url).pathname,\n request: options.request,\n ...(trace === undefined ? {} : { trace }),\n };\n invokeRouterInstrumentation(options.instrumentation?.onMiddlewareStart, event);\n\n try {\n const executionStartedAt = renderTimingPhaseStartedAt(options.timing);\n let response: unknown;\n try {\n response = await middleware(options.request);\n } finally {\n finishRenderTimingPhase(options.timing, executionStartedAt, \"middlewareExecutionMs\");\n }\n invokeRouterInstrumentation(options.instrumentation?.onMiddlewareEnd, event);\n\n return response instanceof Response ? response : undefined;\n } catch (error) {\n invokeRouterInstrumentation(options.instrumentation?.onMiddlewareEnd, {\n ...event,\n error,\n });\n\n if (isRedirectError(error)) {\n return new Response(null, {\n headers: { location: error.location },\n status: error.status,\n });\n }\n\n if (isNotFoundError(error)) {\n return new Response(\"Not Found\", { status: 404 });\n }\n\n throw error;\n }\n }\n\n return undefined;\n}\n\nasync function collectAvailableMiddlewareIds(options: {\n candidates: readonly string[];\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<ReadonlySet<string>> {\n const ids = new Set<string>();\n\n for (const file of options.candidates) {\n try {\n await access(file);\n } catch {\n continue;\n }\n\n const code = await readServerSourceFile(\n file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n const id = parseStaticMiddlewareConfig(code).id;\n\n if (id !== undefined) {\n ids.add(id);\n }\n }\n\n return ids;\n}\n\nasync function loadMiddlewareModule(options: {\n appDir: string;\n code?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<MiddlewareModule> {\n const code =\n options.code ??\n (await readServerSourceFile(\n options.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n ));\n const moduleCacheVersion =\n options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion;\n const cacheKey =\n moduleCacheVersion === undefined\n ? undefined\n : `middleware\\0${options.serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}\\0${options.appDir}\\0${options.file}\\0${moduleCacheVersion}\\0${memoizedHashText(code)}\\0${importPolicyCacheKey(options.importPolicy)}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n\n if (cacheKey !== undefined) {\n const cached = readRouterRuntimeCacheEntry(\n middlewareModuleCache,\n cacheKey,\n middlewareModuleCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n }\n\n const loaded = loadBundledMiddlewareModule({\n appDir: options.appDir,\n code,\n define: options.define,\n file: options.file,\n importPolicy: options.importPolicy,\n prebuiltArtifact: prebuiltRequestModuleArtifact(options.serverModules, options.file, code),\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n vitePlugins: options.vitePlugins,\n }).catch((error) => {\n if (cacheKey !== undefined) {\n middlewareModuleCache.delete(cacheKey);\n }\n throw error;\n });\n\n if (cacheKey !== undefined) {\n setBoundedCacheEntry(\n middlewareModuleCache,\n cacheKey,\n loaded,\n maxMiddlewareModuleCacheEntries,\n middlewareModuleCacheCounters,\n );\n }\n\n return loaded;\n}\n\nexport async function bundleMiddlewareModuleCode(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAllowedPackages?: boolean | undefined;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: options.code,\n define: options.define,\n filename: options.file,\n platform: \"node\",\n root: options.importPolicy?.projectRoot,\n plugins: [\n fileImportMetaUrlPlugin(),\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n importPolicy: options.importPolicy,\n label: \"Middleware\",\n }),\n ],\n vitePlugins: options.vitePlugins,\n });\n const compiled = output.code;\n\n if (compiled === undefined) {\n throw new Error(`Failed to compile middleware for ${options.file}.`);\n }\n\n return compiled;\n}\n\nasync function loadBundledMiddlewareModule(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n file: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n prebuiltArtifact?: BuiltServerModuleOutputLike | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<MiddlewareModule> {\n if (options.prebuiltArtifact?.moduleFile !== undefined) {\n return await importBuiltServerModuleFile<MiddlewareModule>({\n file: options.prebuiltArtifact.moduleFile,\n label: `middleware:${options.file}`,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n }\n\n const compiled =\n options.prebuiltArtifact?.code ??\n (await bundleMiddlewareModuleCode({\n appDir: options.appDir,\n code: options.code,\n define: options.define,\n file: options.file,\n importPolicy: options.importPolicy,\n vitePlugins: options.vitePlugins,\n }));\n\n return importAppRouterSourceModule<MiddlewareModule>({\n ...((options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion) === undefined\n ? {}\n : {\n cacheKey: `middleware:${options.serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}:${options.file}:${options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion}:${memoizedHashText(compiled)}:${viteDefineCacheKey(options.define)}:${vitePluginsCacheKey(options.vitePlugins)}`,\n }),\n code: compiled,\n define: options.define,\n label: `middleware:${options.file}`,\n vitePlugins: options.vitePlugins,\n });\n}\n\nfunction transformServerModule(options: {\n code: string;\n clientBoundaryImports?: readonly string[];\n clientBoundaryFallbackImports?: readonly string[];\n filename: string;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverOutput: ServerOutputMode;\n serverAwaitHydration?: boolean;\n}): TransformOutput {\n const sourceHash = memoizedHashText(options.code);\n const artifact = options.serverModules?.get(options.filename)?.[options.serverOutput];\n\n if (\n artifact !== undefined &&\n artifact.sourceHash === sourceHash &&\n prebuiltServerModuleOutputOptionsMatch(\n artifact,\n options.serverAwaitHydration === true ? { serverAwaitHydration: true } : {},\n )\n ) {\n return {\n code: artifact.code,\n diagnostics: [],\n map: null,\n metadata: artifact.metadata ?? {\n compiler: {\n frontend: \"oxc\",\n typescriptFallback: false,\n },\n components: [],\n filename: options.filename,\n imports: [],\n serverOutput: options.serverOutput,\n target: \"server\",\n },\n };\n }\n\n const awaitHydrationKey = options.serverAwaitHydration === true ? \"1\" : \"0\";\n const boundaryKey = options.clientBoundaryImports?.join(\"\\0\") ?? \"\";\n const fallbackKey = options.clientBoundaryFallbackImports?.join(\"\\0\") ?? \"\";\n const key = `${options.filename}\\0${options.serverOutput}\\0${sourceHash}\\0${awaitHydrationKey}\\0${boundaryKey}\\0${fallbackKey}`;\n const cached = readRouterRuntimeCacheEntry(\n serverTransformCache,\n key,\n serverTransformCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n // Only renders that were handed a prebuild map can have a prebuild gap;\n // dev servers pass no serverModules and transform at request time by design.\n if (options.serverModules !== undefined) {\n warnProductionDynamicServerTransform(\n options.filename,\n options.serverOutput,\n artifact === undefined\n ? \"no prebuilt server module for this output mode\"\n : !prebuiltServerModuleOutputOptionsMatch(\n artifact,\n options.serverAwaitHydration === true ? { serverAwaitHydration: true } : {},\n )\n ? `serverAwaitHydration mismatch (artifact=${artifact.metadata?.serverAwaitHydration === true}, requested=${options.serverAwaitHydration === true})`\n : \"stale prebuilt server module (source hash changed)\",\n );\n }\n\n const output = transform({\n code: options.code,\n ...(options.clientBoundaryImports === undefined\n ? {}\n : { clientBoundaryImports: options.clientBoundaryImports }),\n ...(options.clientBoundaryFallbackImports === undefined\n ? {}\n : { clientBoundaryFallbackImports: options.clientBoundaryFallbackImports }),\n dev: true,\n filename: options.filename,\n serverEscape: nativeEscapeTransform,\n serverOutput: options.serverOutput,\n target: \"server\",\n ...(options.serverAwaitHydration === true ? { serverAwaitHydration: true } : {}),\n });\n\n setBoundedCacheEntry(\n serverTransformCache,\n key,\n output,\n maxServerTransformCacheEntries,\n serverTransformCacheCounters,\n );\n\n return output;\n}\n\nexport const __transformServerModuleForTesting = transformServerModule;\n\nlet productionRenderWithoutPrebuiltModulesWarned = false;\n\nexport function __resetProductionRenderWarningsForTesting(): void {\n productionRenderWithoutPrebuiltModulesWarned = false;\n productionDynamicServerTransformWarned.clear();\n}\n\n// Covers the deployment that forgot prebuilt modules entirely; per-module\n// gaps inside a provided prebuild map are reported by\n// warnProductionDynamicServerTransform with the affected file instead.\nexport function __warnProductionRenderWithoutPrebuiltModulesForTesting(options: {\n dev?: boolean | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n}): void {\n warnProductionRenderWithoutPrebuiltModules(options);\n}\n\nfunction warnProductionRenderWithoutPrebuiltModules(options: {\n dev?: boolean | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n}): void {\n if (\n process.env.NODE_ENV !== \"production\" ||\n options.dev === true ||\n options.serverModules !== undefined ||\n productionRenderWithoutPrebuiltModulesWarned\n ) {\n return;\n }\n\n productionRenderWithoutPrebuiltModulesWarned = true;\n console.warn(\n \"mreact router: production render without prebuilt serverModules. Request-time transforms use development compiler settings; pass the build output's serverModules (or set dev: true for dev servers).\",\n );\n}\n\nfunction warnProductionDynamicServerTransform(\n filename: string,\n serverOutput: ServerOutputMode,\n reason: string,\n): void {\n if (process.env.NODE_ENV !== \"production\") {\n return;\n }\n\n const warnedKey = `${filename}\\0${serverOutput}`;\n\n if (productionDynamicServerTransformWarned.has(warnedKey)) {\n return;\n }\n\n productionDynamicServerTransformWarned.add(warnedKey);\n console.warn(\n `mreact router: dynamic server transform path ran in production for ${filename} (serverOutput=${serverOutput}): ${reason}. Production deployments should provide prebuilt serverModules; otherwise request-time transforms use development compiler settings.`,\n );\n}\n\nasync function analyzeRouteSource(options: {\n appDir: string;\n artifact?: BuiltRouteSourceAnalysisSummary | undefined;\n buildRenderCode?: boolean | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n routePath: string;\n serverModuleCacheVersion: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteSourceAnalysis> {\n const sourceHash = memoizedHashText(options.code);\n if (\n options.artifact !== undefined &&\n options.serverModuleCacheVersion !== undefined &&\n options.artifact.sourceHash === sourceHash &&\n options.artifact.routePath === options.routePath\n ) {\n const artifactStartedAt = renderTimingPhaseStartedAt(options.timing);\n const analysis = routeSourceAnalysisFromArtifact(options.artifact);\n finishRenderTimingPhase(options.timing, artifactStartedAt, \"sourceAnalysisArtifactMs\");\n return analysis;\n }\n\n const cacheKey = `${options.serverModuleCacheVersion ?? \"dev\"}\\0${options.filename}\\0${sourceHash}\\0${options.buildRenderCode === true ? \"build-render\" : \"render\"}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n const cached = readRouterRuntimeCacheEntry(\n routeSourceAnalysisCache,\n cacheKey,\n routeSourceAnalysisCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const pending = analyzeRouteSourceUncached(options).catch((error) => {\n routeSourceAnalysisCache.delete(cacheKey);\n throw error;\n });\n setBoundedCacheEntry(\n routeSourceAnalysisCache,\n cacheKey,\n pending,\n maxRouteSourceAnalysisCacheEntries,\n routeSourceAnalysisCacheCounters,\n );\n\n return pending;\n}\n\nfunction routeSourceAnalysisFromArtifact(\n artifact: BuiltRouteSourceAnalysisSummary,\n): RouteSourceAnalysis {\n return {\n authIncludesClaims: artifact.authIncludesClaims,\n cachePolicy: artifact.cachePolicy,\n clientInference: {\n client: artifact.clientRoute,\n clientBoundaryImports: [...artifact.clientBoundaryImports],\n clientBoundaryFallbackImports: [...(artifact.clientBoundaryFallbackImports ?? [])],\n diagnostics: [],\n },\n hasLoader: artifact.hasLoader,\n routeCode: artifact.routeCode,\n streamRoute: artifact.streamRoute,\n usesRuntimeCacheControl: artifact.usesRuntimeCacheControl,\n };\n}\n\nasync function analyzeRouteSourceUncached(options: {\n appDir: string;\n buildRenderCode?: boolean | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n routePath: string;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteSourceAnalysis> {\n const routeCode =\n options.buildRenderCode === true\n ? stripRouteBuildExports(options.code, options.filename)\n : stripRouteModuleExports(options.code, options.filename);\n const clientInference = await inferClientRouteModule({\n appDir: options.appDir,\n cache: options.clientRouteInferenceCache,\n code: stripRouteClientSource({ code: options.code, filename: options.filename }),\n filename: options.filename,\n routePath: options.routePath,\n vitePlugins: options.vitePlugins,\n });\n\n return {\n authIncludesClaims: authIncludesClaims(options.code),\n cachePolicy: routeCachePolicyFromSource(options.code),\n clientInference,\n hasLoader: hasLoaderExport(options.code),\n routeCode,\n streamRoute:\n isStreamRouteSource(options.code) ||\n routeClosureMayUseAwaitBoundary({\n filename: options.filename,\n files: routeSourceFilesForAnalysis(options),\n projectRoot: options.appDir,\n source: options.code,\n }),\n usesRuntimeCacheControl: usesRuntimeCacheControl(options.code),\n };\n}\n\nfunction routeSourceFilesForAnalysis(options: {\n code: string;\n filename: string;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): (file: string) => string | undefined {\n return (file) =>\n file === options.filename ? options.code : options.serverSourceFiles?.get(file);\n}\n\nasync function runServerModule(\n code: string,\n props: ServerComponentProps,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define: UserConfig[\"define\"] | undefined,\n vitePlugins: readonly PluginOption[] | undefined,\n): Promise<string> {\n const component = await loadServerComponent(\n code,\n sourcefile,\n serverModules,\n serverModuleCacheVersion,\n define,\n vitePlugins,\n );\n\n return renderServerComponentResult(await component(props));\n}\n\nasync function renderServerComponentResult(value: unknown): Promise<string> {\n return typeof value === \"string\" ? value : renderReactNodeToString(value);\n}\n\nasync function runServerModuleWithSlots(\n code: string,\n props: ServerComponentProps,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n timing?: RenderTiming | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n devServerModuleCacheVersion?: string | undefined,\n): Promise<{ html: string; slots: Record<string, string> }> {\n const moduleLoadStartedAt = renderTimingPhaseStartedAt(timing);\n const module = await loadServerModule(\n code,\n sourcefile,\n serverModules,\n serverModuleCacheVersion,\n define,\n vitePlugins,\n importPolicy,\n devServerModuleCacheVersion,\n );\n finishRenderTimingPhase(timing, moduleLoadStartedAt, \"pageModuleLoadMs\");\n const component = selectServerComponent(module);\n const componentStartedAt = renderTimingPhaseStartedAt(timing);\n const html = await renderServerComponentResult(await component(props));\n finishRenderTimingPhase(timing, componentStartedAt, \"pageComponentRenderMs\");\n const slotsStartedAt = renderTimingPhaseStartedAt(timing);\n const slots = await renderRouteSlots(module.slots, props);\n finishRenderTimingPhase(timing, slotsStartedAt, \"routeSlotsRenderMs\");\n\n return {\n html,\n slots,\n };\n}\n\nasync function loadServerModule(\n code: string,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n devServerModuleCacheVersion?: string | undefined,\n): Promise<ServerModuleExports> {\n const artifact = serverModules?.get(sourcefile)?.string;\n const codeHash = memoizedHashText(code);\n const prebuiltCode = prebuiltServerComponentModuleCode(artifact, code, codeHash);\n const usesPrebuiltCompiledCode = artifact?.code === code;\n if (\n artifact !== undefined &&\n prebuiltServerModuleOutputMatches(artifact, code, codeHash) &&\n artifact.moduleFile !== undefined\n ) {\n return await importBuiltServerModuleFile<ServerModuleExports>({\n file: artifact.moduleFile,\n label: `server-component:${sourcefile}`,\n serverModuleCacheVersion,\n });\n }\n const moduleCode =\n prebuiltCode === undefined\n ? code\n : rewriteCompatVendorPlaceholderImportsForRunner(prebuiltCode);\n const sourceModuleCacheVersion = serverModuleCacheVersion ?? devServerModuleCacheVersion;\n const cacheKey =\n sourceModuleCacheVersion === undefined\n ? undefined\n : `server-component:${serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}:${sourceModuleCacheVersion}:${sourcefile}:${\n moduleCode === code ? codeHash : memoizedHashText(moduleCode)\n }:${importPolicyCacheKey(importPolicy)}:${viteDefineCacheKey(define)}:${vitePluginsCacheKey(vitePlugins)}`;\n return await importAppRouterSourceModule<ServerModuleExports>({\n cacheKey,\n code: moduleCode,\n define,\n label: `server-component:${sourcefile}`,\n plugins:\n importPolicy === undefined\n ? undefined\n : [\n createAppRouterImportPolicyPlugin({\n appDir: dirname(sourcefile),\n importPolicy,\n label: \"Server component\",\n }),\n ],\n ...(prebuiltCode === undefined && !usesPrebuiltCompiledCode\n ? {\n resolveDir: dirname(sourcefile),\n serverSourceTransform: {\n dev: serverModuleCacheVersion === undefined,\n serverModules,\n serverOutput: \"string\" as const,\n define,\n vitePlugins,\n },\n }\n : {}),\n ...(usesPrebuiltCompiledCode ? { resolveDir: dirname(sourcefile) } : {}),\n sourcefile,\n vitePlugins,\n });\n}\n\nasync function importBuiltServerModuleFile<T>(options: {\n file: string;\n label: string;\n serverModuleCacheVersion?: string | undefined;\n}): Promise<T> {\n return await importAppRouterBuiltFileModule<T>({\n ...(options.serverModuleCacheVersion === undefined\n ? {}\n : {\n cacheKey: `${options.label}:${options.serverModuleCacheVersion}:${options.file}`,\n }),\n file: options.file,\n });\n}\n\nasync function loadServerComponent(\n code: string,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n): Promise<ServerComponent> {\n const module = await loadServerModule(\n code,\n sourcefile,\n serverModules,\n serverModuleCacheVersion,\n define,\n vitePlugins,\n importPolicy,\n );\n return selectServerComponent(module);\n}\n\nfunction selectServerComponent(module: ServerModuleExports): ServerComponent {\n const component = module.default ?? module.App ?? Object.values(module)[0];\n\n if (typeof component !== \"function\") {\n throw new Error(\"No page component export was found.\");\n }\n\n return component as ServerComponent;\n}\n\nasync function renderRouteSlots(\n slots: RouteSlotExports | undefined,\n props: ServerComponentProps,\n): Promise<Record<string, string>> {\n if (slots === undefined) {\n return {};\n }\n\n const rendered: Record<string, string> = {};\n\n for (const [name, value] of Object.entries(slots)) {\n rendered[name] =\n typeof value === \"function\"\n ? await renderServerComponentResult(await value(props))\n : await renderServerComponentResult(value);\n }\n\n return rendered;\n}\n\nfunction runServerStreamModule(\n code: string,\n options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n pageFile: string;\n props: ServerComponentProps;\n routePath: string;\n routeScripts?: ReadonlyMap<string, string> | undefined;\n clientRoute: boolean;\n clientReferenceManifest?: readonly ClientReferenceMetadata[] | undefined;\n define?: UserConfig[\"define\"] | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n script?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n },\n): ReadableStream<Uint8Array> {\n return renderToReadableStream(async (sink) => {\n const slots = await renderServerStreamSlots(code, {\n pageFile: options.pageFile,\n props: options.props,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n define: options.define,\n vitePlugins: options.vitePlugins,\n importPolicy: options.importPolicy,\n });\n const layoutShells = await layoutShellsForPage(\n options.appDir,\n options.pageFile,\n options.props,\n slots,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n options.clientRouteInferenceCache,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n const marker = options.clientRoute\n ? hydrationMarkerParts({\n assetBaseUrl: options.assetBaseUrl,\n clientReferenceManifest: options.clientReferenceManifest,\n routePath: options.routePath,\n script: options.script,\n props: {\n params: options.props.params,\n request: { url: options.props.request.url },\n data: options.props.data,\n },\n })\n : undefined;\n\n sink.append(\"<!DOCTYPE html>\");\n sink.append(\n clientNavigationHeadTags({\n assetBaseUrl: options.assetBaseUrl,\n currentScript: options.clientRoute ? options.script : undefined,\n routeScripts: options.routeScripts,\n }),\n );\n\n for (const shell of layoutShells) {\n sink.append(shell.prefix);\n }\n\n sink.append(marker?.prefix ?? \"\");\n\n await appendServerStreamModule(\n code,\n sink,\n options.props,\n options.pageFile,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n\n sink.append(marker?.suffix ?? \"\");\n\n for (const shell of [...layoutShells].reverse()) {\n sink.append(shell.suffix);\n }\n\n if (hasOutOfOrderBoundary(code) || layoutShells.some((shell) => shell.hasOutOfOrderBoundary)) {\n renderOutOfOrderReorderScript(sink);\n }\n });\n}\n\nfunction hasOutOfOrderBoundary(code: string): boolean {\n return code.includes(\"renderOutOfOrderBoundary\");\n}\n\nfunction mayRenderOutOfOrderBoundary(code: string): boolean {\n return (\n code.includes(\"<Await\") || code.includes(\"Await(\") || code.includes(\"renderOutOfOrderBoundary\")\n );\n}\n\nasync function mayRenderOutOfOrderBoundaryDeep(options: {\n code: string;\n filename: string;\n serverModuleCacheVersion: string | undefined;\n serverSourceFiles: ReadonlyMap<string, string> | undefined;\n}): Promise<boolean> {\n const seen = new Set<string>();\n\n return await mayRenderOutOfOrderBoundaryDeepInner(options, seen);\n}\n\nasync function mayRenderOutOfOrderBoundaryDeepInner(\n options: {\n code: string;\n filename: string;\n serverModuleCacheVersion: string | undefined;\n serverSourceFiles: ReadonlyMap<string, string> | undefined;\n },\n seen: Set<string>,\n): Promise<boolean> {\n if (mayRenderOutOfOrderBoundary(options.code)) {\n return true;\n }\n\n if (seen.has(options.filename)) {\n return false;\n }\n seen.add(options.filename);\n\n const sourceHash = memoizedHashText(options.code);\n const cacheKey = `${options.serverModuleCacheVersion ?? \"dev\"}\\0${options.filename}\\0${sourceHash}`;\n const cached = readRouterRuntimeCacheEntry(\n routeOutOfOrderBoundaryAnalysisCache,\n cacheKey,\n routeOutOfOrderBoundaryAnalysisCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const pending = mayRenderImportedOutOfOrderBoundary(options, seen).catch((error) => {\n routeOutOfOrderBoundaryAnalysisCache.delete(cacheKey);\n throw error;\n });\n setBoundedCacheEntry(\n routeOutOfOrderBoundaryAnalysisCache,\n cacheKey,\n pending,\n maxRouteOutOfOrderBoundaryAnalysisCacheEntries,\n routeOutOfOrderBoundaryAnalysisCacheCounters,\n );\n\n return pending;\n}\n\nasync function mayRenderImportedOutOfOrderBoundary(\n options: {\n code: string;\n filename: string;\n serverModuleCacheVersion: string | undefined;\n serverSourceFiles: ReadonlyMap<string, string> | undefined;\n },\n seen: Set<string>,\n): Promise<boolean> {\n for (const specifier of localModuleSpecifiers(options.code)) {\n const file = await resolveLocalServerSourceImport(options.filename, specifier);\n\n if (file === undefined) {\n continue;\n }\n\n const code = await readServerSourceFile(\n file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n\n if (\n await mayRenderOutOfOrderBoundaryDeepInner(\n {\n code,\n filename: file,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n },\n seen,\n )\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction localModuleSpecifiers(code: string): string[] {\n const specifiers = new Set<string>();\n const importPattern =\n /\\b(?:import|export)\\s+(?:type\\s+)?(?:[^\"']*?\\s+from\\s*)?[\"'](?<source>\\.{1,2}\\/[^\"']+)[\"']/g;\n\n for (const match of code.matchAll(importPattern)) {\n const source = match.groups?.source;\n\n if (source !== undefined) {\n specifiers.add(source);\n }\n }\n\n return Array.from(specifiers);\n}\n\nasync function resolveLocalServerSourceImport(\n fromFile: string,\n specifier: string,\n): Promise<string | undefined> {\n const base = join(dirname(fromFile), specifier);\n const candidates = localServerSourceImportCandidates(base);\n\n for (const candidate of candidates) {\n try {\n await access(candidate);\n return candidate;\n } catch {\n // Try the next TypeScript route/source extension.\n }\n }\n\n return undefined;\n}\n\nfunction localServerSourceImportCandidates(base: string): string[] {\n const candidates = [base];\n\n if (base.endsWith(\".js\")) {\n const withoutJs = base.slice(0, -\".js\".length);\n candidates.push(`${withoutJs}.ts`, `${withoutJs}.tsx`, `${withoutJs}.mreact.tsx`);\n } else if (base.endsWith(\".jsx\")) {\n const withoutJsx = base.slice(0, -\".jsx\".length);\n candidates.push(`${withoutJsx}.tsx`, `${withoutJsx}.mreact.tsx`);\n } else if (base.endsWith(\".mreact\")) {\n candidates.push(`${base}.tsx`);\n } else {\n candidates.push(\n `${base}.ts`,\n `${base}.tsx`,\n `${base}.mreact.tsx`,\n join(base, \"index.ts\"),\n join(base, \"index.tsx\"),\n join(base, \"index.mreact.tsx\"),\n );\n }\n\n return candidates;\n}\n\nasync function runServerStreamModuleWithLoading(\n code: string,\n options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n clientRoute: boolean;\n clientReferenceManifest?: readonly ClientReferenceMetadata[] | undefined;\n data: Promise<unknown>;\n define?: UserConfig[\"define\"] | undefined;\n loadingFile: string;\n pageFile: string;\n params: RouteParams;\n queryClient: QueryClient;\n request: Request;\n routePath: string;\n routeScripts?: ReadonlyMap<string, string> | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n script?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n },\n): Promise<ReadableStream<Uint8Array>> {\n const loadingProps = {\n data: undefined,\n params: options.params,\n queryClient: options.queryClient,\n request: options.request,\n };\n const layoutShells = await layoutShellsForPage(\n options.appDir,\n options.pageFile,\n loadingProps,\n {},\n options.serverModules,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n options.clientRouteInferenceCache,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n const loadingHtml = await renderServerFileToHtml(\n options.loadingFile,\n loadingProps,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n options.define,\n options.vitePlugins,\n );\n const marker = options.clientRoute\n ? hydrationMarkerParts({\n assetBaseUrl: options.assetBaseUrl,\n clientReferenceManifest: options.clientReferenceManifest,\n routePath: options.routePath,\n script: options.script,\n props: {\n params: options.params,\n request: { url: options.request.url },\n },\n })\n : undefined;\n\n return renderToReadableStream((sink) => {\n sink.append(\"<!DOCTYPE html>\");\n sink.append(\n clientNavigationHeadTags({\n assetBaseUrl: options.assetBaseUrl,\n currentScript: options.clientRoute ? options.script : undefined,\n routeScripts: options.routeScripts,\n }),\n );\n\n for (const shell of layoutShells) {\n sink.append(shell.prefix);\n }\n\n sink.append(marker?.prefix ?? \"\");\n\n renderVisibleOutOfOrderBoundary(\n sink,\n \"mreact-route\",\n options.data,\n async (boundarySink, data) => {\n await appendServerStreamModule(\n code,\n boundarySink,\n {\n data,\n params: options.params,\n queryClient: options.queryClient,\n request: options.request,\n },\n options.pageFile,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n },\n {\n placeholder(boundarySink) {\n boundarySink.append(loadingHtml);\n },\n placeholderTag: \"div\",\n },\n );\n\n sink.append(marker?.suffix ?? \"\");\n\n for (const shell of [...layoutShells].reverse()) {\n sink.append(shell.suffix);\n }\n\n renderOutOfOrderReorderScript(sink);\n });\n}\n\nfunction renderVisibleOutOfOrderBoundary<T>(\n sink: HtmlSink,\n id: string,\n value: T,\n render: (sink: HtmlSink, value: Awaited<T>) => void | PromiseLike<void>,\n options: {\n catch?: (sink: HtmlSink, error: unknown) => void | PromiseLike<void>;\n placeholder?: (sink: HtmlSink) => void | PromiseLike<void>;\n placeholderTag?: string;\n } = {},\n): void {\n const placeholderSink = createStringSink();\n void options.placeholder?.(placeholderSink);\n const placeholderTag = normalizeVisibleOutOfOrderPlaceholderTag(options.placeholderTag);\n sink.append(\n `<${placeholderTag} data-mreact-oob-placeholder=\"${escapeHtmlAttribute(id)}\">${placeholderSink.toString()}</${placeholderTag}>`,\n );\n\n const task = renderVisibleOutOfOrderFragment(sink, id, value, render, options);\n\n if (sink.defer === undefined) {\n void task;\n return;\n }\n\n sink.defer(task);\n}\n\nfunction normalizeVisibleOutOfOrderPlaceholderTag(tag: unknown): string {\n if (typeof tag !== \"string\") {\n return \"span\";\n }\n\n const normalized = tag.trim().toLowerCase();\n return /^[a-z][a-z0-9-]*$/.test(normalized) ? normalized : \"span\";\n}\n\nasync function renderVisibleOutOfOrderFragment<T>(\n sink: HtmlSink,\n id: string,\n value: T,\n render: (sink: HtmlSink, value: Awaited<T>) => void | PromiseLike<void>,\n options: {\n catch?: (sink: HtmlSink, error: unknown) => void | PromiseLike<void>;\n },\n): Promise<void> {\n const fragmentSink = createStringSink();\n\n await renderAsyncBoundary(\n fragmentSink,\n value,\n render,\n options.catch === undefined ? {} : { catch: options.catch },\n );\n await fragmentSink.drain();\n\n sink.append(renderVisibleOutOfOrderFragmentHtml(id, fragmentSink.toString()));\n}\n\nfunction renderVisibleOutOfOrderFragmentHtml(id: string, html: string): string {\n const escapedId = escapeHtmlAttribute(id);\n return `<template data-mreact-oob-fragment=\"${escapedId}\">${html}</template><mreact-oob-complete hidden data-mreact-oob-complete=\"${escapedId}\"></mreact-oob-complete>`;\n}\n\nasync function appendServerStreamModule(\n code: string,\n sink: HtmlSink,\n props: ServerComponentProps,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n): Promise<void> {\n const module = await loadServerStreamModule(\n code,\n sourcefile,\n serverModules,\n serverModuleCacheVersion,\n define,\n vitePlugins,\n importPolicy,\n );\n const component = selectStreamComponent(module);\n\n await component(sink, props);\n}\n\nasync function renderServerStreamSlots(\n code: string,\n options: {\n define?: UserConfig[\"define\"] | undefined;\n pageFile: string;\n props: ServerComponentProps;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n },\n): Promise<Record<string, string>> {\n if (!hasRouteSlotsExport(code)) {\n return {};\n }\n\n const module = await loadServerStreamModule(\n code,\n options.pageFile,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n\n if (module.slots === undefined) {\n return {};\n }\n\n const rendered: Record<string, string> = {};\n\n for (const [name, value] of Object.entries(module.slots)) {\n if (typeof value !== \"function\") {\n rendered[name] = value;\n continue;\n }\n\n const sink = createStringSink();\n await value(sink, options.props);\n await sink.drain();\n rendered[name] = sink.toString();\n }\n\n return rendered;\n}\n\nfunction hasRouteSlotsExport(code: string): boolean {\n return /^\\s*export\\s+const\\s+slots\\s*=/m.test(code);\n}\n\nasync function loadServerStreamModule(\n code: string,\n sourcefile: string,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n outputOptions: { serverAwaitHydration?: boolean } = {},\n): Promise<StreamModuleExports> {\n const artifactCode = serverModules?.get(sourcefile)?.stream;\n const codeHash = memoizedHashText(code);\n const prebuiltCode = prebuiltServerComponentModuleCode(\n artifactCode,\n code,\n codeHash,\n outputOptions,\n );\n const usesPrebuiltCompiledCode = artifactCode?.code === code;\n if (\n artifactCode !== undefined &&\n prebuiltServerModuleOutputOptionsMatch(artifactCode, outputOptions) &&\n prebuiltServerModuleOutputMatches(artifactCode, code, codeHash) &&\n artifactCode.moduleFile !== undefined\n ) {\n return await importBuiltServerModuleFile<StreamModuleExports>({\n file: artifactCode.moduleFile,\n label: `server-stream-component:${sourcefile}`,\n serverModuleCacheVersion,\n });\n }\n const moduleCode =\n prebuiltCode === undefined\n ? code\n : rewriteCompatVendorPlaceholderImportsForRunner(prebuiltCode);\n const cacheKey =\n serverModuleCacheVersion === undefined\n ? undefined\n : `server-stream-component:${serverModuleCacheVersion}:${sourcefile}:${\n moduleCode === code ? codeHash : memoizedHashText(moduleCode)\n }:${importPolicyCacheKey(importPolicy)}:${viteDefineCacheKey(define)}:${vitePluginsCacheKey(vitePlugins)}`;\n return await importAppRouterSourceModule<StreamModuleExports>({\n cacheKey,\n code: moduleCode,\n define,\n label: `server-stream-component:${sourcefile}`,\n plugins:\n importPolicy === undefined\n ? undefined\n : [\n createAppRouterImportPolicyPlugin({\n appDir: dirname(sourcefile),\n importPolicy,\n label: \"Server stream component\",\n }),\n ],\n ...(prebuiltCode === undefined && !usesPrebuiltCompiledCode\n ? {\n resolveDir: dirname(sourcefile),\n serverSourceTransform: {\n dev: serverModuleCacheVersion === undefined,\n serverModules,\n serverOutput: \"stream\" as const,\n define,\n vitePlugins,\n },\n }\n : {}),\n ...(usesPrebuiltCompiledCode ? { resolveDir: dirname(sourcefile) } : {}),\n sourcefile,\n vitePlugins,\n });\n}\n\nfunction selectStreamComponent(module: StreamModuleExports): StreamComponent {\n const component = module.default ?? module.App ?? Object.values(module)[0];\n\n if (typeof component !== \"function\") {\n throw new Error(\"No page component export was found.\");\n }\n\n return component as StreamComponent;\n}\n\nasync function applyLayouts(options: {\n appDir: string;\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n define?: UserConfig[\"define\"] | undefined;\n pageFile: string;\n html: string;\n props: ServerComponentProps;\n slots?: Record<string, string> | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n}): Promise<string> {\n const layoutFiles = await shellFilesForPage(\n options.appDir,\n options.pageFile,\n options.serverModuleCacheVersion,\n );\n let html = options.html;\n let shellHasOutOfOrderBoundary = false;\n const slotContext = createSlotRenderContext(options.slots);\n const renderShell = (shell: ShellFile) =>\n renderShellPrefixSuffix(\n options.appDir,\n shell,\n options.props,\n slotContext,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n options.clientRouteInferenceCache,\n options.timing,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n const renderedShells =\n Object.keys(slotContext.namedSlots).length === 0\n ? await Promise.all(layoutFiles.map(renderShell))\n : undefined;\n\n for (let index = layoutFiles.length - 1; index >= 0; index -= 1) {\n const shell = layoutFiles[index];\n if (shell === undefined) {\n continue;\n }\n\n const rendered = renderedShells?.[index] ?? (await renderShell(shell));\n shellHasOutOfOrderBoundary ||= rendered.hasOutOfOrderBoundary;\n html = `${rendered.prefix}${html}${rendered.suffix}`;\n }\n\n warnUnconsumedRouteSlots({\n appDir: options.appDir,\n pageFile: options.pageFile,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n slotContext,\n });\n\n if (!shellHasOutOfOrderBoundary) {\n return html;\n }\n\n const sink = createStringSink();\n sink.append(html);\n renderOutOfOrderReorderScript(sink);\n await sink.drain();\n return sink.toString();\n}\n\nasync function layoutShellsForPage(\n appDir: string,\n pageFile: string,\n props: ServerComponentProps,\n slots: Readonly<Record<string, string>>,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n serverSourceFiles: ReadonlyMap<string, string> | undefined,\n clientRouteInferenceCache: ClientRouteInferenceCache | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n): Promise<RenderedShell[]> {\n const layoutFiles = await shellFilesForPage(appDir, pageFile, serverModuleCacheVersion);\n const slotContext = createSlotRenderContext(slots);\n const renderShell = (shell: ShellFile) =>\n renderShellPrefixSuffix(\n appDir,\n shell,\n props,\n slotContext,\n serverModules,\n serverModuleCacheVersion,\n serverSourceFiles,\n clientRouteInferenceCache,\n undefined,\n define,\n vitePlugins,\n importPolicy,\n );\n const shells =\n Object.keys(slotContext.namedSlots).length === 0\n ? await Promise.all(layoutFiles.map(renderShell))\n : [];\n\n if (shells.length === 0 && layoutFiles.length > 0) {\n for (const shell of layoutFiles) {\n shells.push(await renderShell(shell));\n }\n }\n\n warnUnconsumedRouteSlots({\n appDir,\n pageFile,\n serverModuleCacheVersion,\n slotContext,\n });\n\n return shells;\n}\n\nasync function renderShellPrefixSuffix(\n appDir: string,\n shell: ShellFile,\n props: ServerComponentProps,\n slotContext: SlotRenderContext,\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined,\n serverModuleCacheVersion: string | undefined,\n serverSourceFiles: ReadonlyMap<string, string> | undefined,\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined,\n timing?: RenderTiming | undefined,\n define?: UserConfig[\"define\"] | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n importPolicy?: AppRouterImportPolicy | undefined,\n): Promise<RenderedShell> {\n const hasNamedSlots = Object.keys(slotContext.namedSlots).length > 0;\n const cacheKey =\n serverModuleCacheVersion === undefined || hasNamedSlots || shell.kind === \"template\"\n ? undefined\n : `${appDir}\\0${shell.file}\\0${serverModuleCacheVersion}\\0${importPolicyCacheKey(importPolicy)}\\0${viteDefineCacheKey(define)}\\0${vitePluginsCacheKey(vitePlugins)}`;\n if (cacheKey !== undefined) {\n const cached = readRouterRuntimeCacheEntry(\n renderedShellCache,\n cacheKey,\n renderedShellCacheCounters,\n );\n if (cached !== undefined && cached !== \"impure\") {\n return cached;\n }\n }\n\n const staticEntry = cacheKey === undefined ? undefined : shellStaticRenderCache.get(cacheKey);\n const loadedStaticEntry =\n staticEntry ??\n (await loadShellStaticRenderEntry({\n cacheKey,\n clientRouteInferenceCache,\n define,\n importPolicy,\n serverModuleCacheVersion,\n serverModules,\n serverSourceFiles,\n shell,\n timing,\n vitePlugins,\n }));\n\n let phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const layoutHtml = loadedStaticEntry.shellUsesAwait\n ? await renderShellStreamComponent(loadedStaticEntry.component as StreamComponent, props)\n : await (loadedStaticEntry.component as ServerComponent)(props);\n addRenderTimingPhaseDuration(timing, phaseStartedAt, \"layoutComponentRenderMs\");\n phaseStartedAt = renderTimingPhaseStartedAt(timing);\n const rendered = {\n ...splitLayoutSlot(markShellBoundary(layoutHtml, shell), slotContext),\n hasOutOfOrderBoundary: loadedStaticEntry.hasOutOfOrderBoundary,\n };\n addRenderTimingPhaseDuration(timing, phaseStartedAt, \"layoutSlotSplitMs\");\n const shellCacheKey = loadedStaticEntry.shellUsesAwait ? undefined : cacheKey;\n const cached =\n shellCacheKey !== undefined\n ? readRouterRuntimeCacheEntry(renderedShellCache, shellCacheKey, renderedShellCacheCounters)\n : undefined;\n\n // Detect purity: a zero-arg component cannot depend on props. The\n // markShellBoundary + splitLayoutSlot output is then constant for\n // the (appDir, shellFile, version) tuple. We only set the cache\n // entry on the first request that observes the function arity; on\n // an \"impure\" tag we never overwrite it.\n if (shellCacheKey !== undefined && cached !== \"impure\") {\n if (loadedStaticEntry.component.length === 0) {\n if (renderedShellCache.size >= MAX_RENDERED_SHELL_CACHE_ENTRIES) {\n const oldestKey = renderedShellCache.keys().next().value;\n if (oldestKey !== undefined) {\n renderedShellCache.delete(oldestKey);\n renderedShellCacheCounters.evictions += 1;\n }\n }\n renderedShellCache.set(shellCacheKey, rendered);\n } else {\n // Impure — stamp the cache so subsequent lookups short-circuit\n // without re-checking arity. We still run the per-request\n // render path above so the props are honoured.\n renderedShellCache.set(shellCacheKey, \"impure\");\n }\n }\n\n return rendered;\n}\n\nasync function loadShellStaticRenderEntry(options: {\n cacheKey: string | undefined;\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n define?: UserConfig[\"define\"] | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModuleCacheVersion: string | undefined;\n serverModules: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverSourceFiles: ReadonlyMap<string, string> | undefined;\n shell: ShellFile;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<ShellStaticRenderEntry> {\n let phaseStartedAt = renderTimingPhaseStartedAt(options.timing);\n const code = await readServerSourceFile(\n options.shell.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n addRenderTimingPhaseDuration(options.timing, phaseStartedAt, \"layoutSourceReadMs\");\n phaseStartedAt = renderTimingPhaseStartedAt(options.timing);\n const shellUsesAwait = await mayRenderOutOfOrderBoundaryDeep({\n code,\n filename: options.shell.file,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n });\n const serverOutput: ServerOutputMode = shellUsesAwait ? \"stream\" : \"string\";\n const artifact = options.serverModules?.get(options.shell.file)?.[serverOutput];\n const clientInference =\n artifact !== undefined && artifact.sourceHash === memoizedHashText(code)\n ? {\n client: false,\n clientBoundaryImports: [],\n clientBoundaryFallbackImports: [],\n diagnostics: [],\n }\n : await inferClientRouteModule({\n cache: options.clientRouteInferenceCache,\n code: stripRouteClientOnlyExports(code, options.shell.file),\n filename: options.shell.file,\n vitePlugins: options.vitePlugins,\n });\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n const output = transformServerModule({\n code,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n filename: options.shell.file,\n serverModules: options.serverModules,\n serverOutput,\n });\n addRenderTimingPhaseDuration(options.timing, phaseStartedAt, \"layoutTransformMs\");\n const fatalDiagnostics = fatalServerDiagnostics(output.diagnostics);\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(formatServerDiagnostics(options.shell.file, fatalDiagnostics));\n }\n\n phaseStartedAt = renderTimingPhaseStartedAt(options.timing);\n const component = shellUsesAwait\n ? selectStreamComponent(\n await loadServerStreamModule(\n output.code,\n options.shell.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n ),\n )\n : await loadServerComponent(\n output.code,\n options.shell.file,\n options.serverModules,\n options.serverModuleCacheVersion,\n options.define,\n options.vitePlugins,\n options.importPolicy,\n );\n addRenderTimingPhaseDuration(options.timing, phaseStartedAt, \"layoutModuleLoadMs\");\n const entry = {\n component,\n hasOutOfOrderBoundary: hasOutOfOrderBoundary(output.code),\n shellUsesAwait,\n };\n\n if (options.cacheKey !== undefined) {\n if (shellStaticRenderCache.size >= MAX_SHELL_STATIC_RENDER_CACHE_ENTRIES) {\n const oldestKey = shellStaticRenderCache.keys().next().value;\n if (oldestKey !== undefined) {\n shellStaticRenderCache.delete(oldestKey);\n }\n }\n shellStaticRenderCache.set(options.cacheKey, entry);\n }\n\n return entry;\n}\n\nasync function renderShellStreamComponent(\n component: StreamComponent,\n props: ServerComponentProps,\n): Promise<string> {\n const sink = createStringSink();\n await component(sink, props);\n await sink.drain();\n return sink.toString();\n}\n\n// Layout/template files for a given page do not change during a server's\n// lifetime in production. Each cache miss costs up to N×4 filesystem\n// `access()` syscalls (~5-10μs each on a fast SSD), making this one of\n// the largest fixed costs in `renderBuiltAppRequest` for a minimal page.\n//\n// We cache by `appDir + pageFile + serverModuleCacheVersion` so the cache\n// is only active when a server-module manifest version is available\n// (= production builds). In dev mode the version is `undefined`, so we\n// skip the cache and pick up newly added layout / template files on the\n// next request.\nconst shellFilesCache = new Map<string, ShellFile[]>();\nconst MAX_SHELL_FILES_CACHE_ENTRIES = 1024;\nconst devShellFilesCache = new Map<\n string,\n { directoryStats: readonly FileStat[]; files: ShellFile[] }\n>();\nconst shellStaticRenderCache = new Map<string, ShellStaticRenderEntry>();\nconst MAX_SHELL_STATIC_RENDER_CACHE_ENTRIES = 1024;\nconst routeMiddlewareControlCache = new Map<string, Promise<RouteMiddlewareControl | undefined>>();\nconst MAX_ROUTE_MIDDLEWARE_CONTROL_CACHE_ENTRIES = 1024;\nconst appMiddlewareFileCache = new Map<string, Promise<boolean>>();\nconst MAX_APP_MIDDLEWARE_FILE_CACHE_ENTRIES = 1024;\nconst devAppMiddlewareFileCache = new Map<\n string,\n { directoryStat: FileStat; hasMiddleware: boolean }\n>();\nconst routeMiddlewareControlSourceCache = new Map<\n string,\n { control: RouteMiddlewareControl | undefined; mtimeMs: number }\n>();\nconst devServerSourceFileCache = new Map<\n string,\n { mtimeMs: number; size: number; source: string }\n>();\nconst MAX_DEV_SERVER_SOURCE_FILE_CACHE_ENTRIES = 2048;\n\ninterface FileStat {\n mtimeMs: number;\n size: number;\n}\n\ninterface ShellStaticRenderEntry {\n component: ServerComponent | StreamComponent;\n hasOutOfOrderBoundary: boolean;\n shellUsesAwait: boolean;\n}\n\nasync function shellFilesForPage(\n appDir: string,\n pageFile: string,\n serverModuleCacheVersion?: string,\n): Promise<ShellFile[]> {\n const cacheKey =\n serverModuleCacheVersion === undefined\n ? undefined\n : `${appDir}\\0${pageFile}\\0${serverModuleCacheVersion}`;\n if (cacheKey !== undefined) {\n const cached = shellFilesCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n }\n\n const devCacheKey = cacheKey === undefined ? `${appDir}\\0${pageFile}` : undefined;\n if (devCacheKey !== undefined) {\n const directoryStats = await routeShellDirectoryStats(appDir, pageFile);\n const cached = devShellFilesCache.get(devCacheKey);\n if (cached !== undefined && sameFileStats(cached.directoryStats, directoryStats)) {\n return cached.files;\n }\n\n const files = await shellFilesForPageUncached(appDir, pageFile);\n devShellFilesCache.set(devCacheKey, { directoryStats, files });\n return files;\n }\n\n const files = await shellFilesForPageUncached(appDir, pageFile);\n if (cacheKey !== undefined) {\n if (shellFilesCache.size >= MAX_SHELL_FILES_CACHE_ENTRIES) {\n const oldestKey = shellFilesCache.keys().next().value;\n if (oldestKey !== undefined) {\n shellFilesCache.delete(oldestKey);\n }\n }\n shellFilesCache.set(cacheKey, files);\n }\n return files;\n}\n\nasync function shellFilesForPageUncached(appDir: string, pageFile: string): Promise<ShellFile[]> {\n const shells = await existingRouteShellCandidates(appDir, pageFile, async (file) => {\n try {\n await access(file);\n return true;\n } catch {\n return false;\n }\n });\n const files: ShellFile[] = shells.map((shell) => ({\n file: shell.file,\n id: shellBoundaryId(appDir, shell.directory),\n kind: shell.kind,\n }));\n\n return files;\n}\n\nfunction withRouteCacheHeader(\n response: Response,\n policy: ReturnType<typeof routeCachePolicyFromSource>,\n): Response {\n if (policy !== undefined) {\n response.headers.set(\"cache-control\", policy.cacheControl);\n }\n\n return response;\n}\n\nasync function hasAppMiddleware(options: {\n appDir: string;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<boolean> {\n const middlewareFiles = [\n join(options.appDir, \"middleware.ts\"),\n join(options.appDir, \"middleware.mreact.ts\"),\n ];\n\n if (options.serverSourceFiles !== undefined) {\n return middlewareFiles.some((file) => options.serverSourceFiles?.has(file) === true);\n }\n\n const cacheKey =\n options.serverModuleCacheVersion === undefined\n ? undefined\n : `${options.appDir}\\0${options.serverModuleCacheVersion}`;\n\n if (cacheKey !== undefined) {\n const cached = appMiddlewareFileCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n }\n\n if (cacheKey === undefined) {\n const directoryStat = await fileStat(options.appDir);\n const cached = devAppMiddlewareFileCache.get(options.appDir);\n if (cached !== undefined && sameFileStat(cached.directoryStat, directoryStat)) {\n return cached.hasMiddleware;\n }\n\n const hasMiddleware = await hasAppMiddlewareUncached(middlewareFiles);\n devAppMiddlewareFileCache.set(options.appDir, { directoryStat, hasMiddleware });\n return hasMiddleware;\n }\n\n const loaded = hasAppMiddlewareUncached(middlewareFiles).catch((error) => {\n appMiddlewareFileCache.delete(cacheKey);\n throw error;\n });\n\n if (appMiddlewareFileCache.size >= MAX_APP_MIDDLEWARE_FILE_CACHE_ENTRIES) {\n const oldestKey = appMiddlewareFileCache.keys().next().value;\n if (oldestKey !== undefined) {\n appMiddlewareFileCache.delete(oldestKey);\n }\n }\n appMiddlewareFileCache.set(cacheKey, loaded);\n\n return loaded;\n}\n\nasync function hasAppMiddlewareUncached(files: readonly string[]): Promise<boolean> {\n for (const file of files) {\n try {\n await access(file);\n return true;\n } catch {\n // Missing middleware files are allowed.\n }\n }\n\n return false;\n}\n\nasync function routeShellDirectoryStats(appDir: string, pageFile: string): Promise<FileStat[]> {\n const directories: string[] = [];\n let current = dirname(pageFile);\n const resolvedAppDir = resolve(appDir);\n\n while (true) {\n directories.push(current);\n if (resolve(current) === resolvedAppDir) {\n break;\n }\n\n const parent = dirname(current);\n if (parent === current) {\n break;\n }\n current = parent;\n }\n\n return await Promise.all(directories.map((directory) => fileStatOrMissing(directory)));\n}\n\nasync function fileStat(file: string): Promise<FileStat> {\n const stats = await stat(file);\n return { mtimeMs: stats.mtimeMs, size: stats.size };\n}\n\nasync function fileStatOrMissing(file: string): Promise<FileStat> {\n try {\n return await fileStat(file);\n } catch (error) {\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return { mtimeMs: -1, size: -1 };\n }\n throw error;\n }\n}\n\nfunction sameFileStats(left: readonly FileStat[], right: readonly FileStat[]): boolean {\n return (\n left.length === right.length &&\n left.every((value, index) => {\n const other = right[index];\n return other !== undefined && sameFileStat(value, other);\n })\n );\n}\n\nfunction sameFileStat(left: FileStat, right: FileStat): boolean {\n return left.mtimeMs === right.mtimeMs && left.size === right.size;\n}\n\nasync function loadRouteMiddlewareControl(options: {\n appDir: string;\n pageFile: string;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<RouteMiddlewareControl | undefined> {\n const cacheKey =\n options.serverModuleCacheVersion === undefined\n ? undefined\n : `${options.appDir}\\0${options.pageFile}\\0${options.serverModuleCacheVersion}`;\n\n if (cacheKey !== undefined) {\n const cached = routeMiddlewareControlCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n }\n\n const loaded = loadRouteMiddlewareControlUncached(options).catch((error) => {\n if (cacheKey !== undefined) {\n routeMiddlewareControlCache.delete(cacheKey);\n }\n throw error;\n });\n\n if (cacheKey !== undefined) {\n if (routeMiddlewareControlCache.size >= MAX_ROUTE_MIDDLEWARE_CONTROL_CACHE_ENTRIES) {\n const oldestKey = routeMiddlewareControlCache.keys().next().value;\n if (oldestKey !== undefined) {\n routeMiddlewareControlCache.delete(oldestKey);\n }\n }\n routeMiddlewareControlCache.set(cacheKey, loaded);\n }\n\n return loaded;\n}\n\nasync function loadRouteMiddlewareControlUncached(options: {\n appDir: string;\n pageFile: string;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<RouteMiddlewareControl | undefined> {\n const controls: Array<RouteMiddlewareControl | undefined> = [];\n const shellFiles = await shellFilesForPage(\n options.appDir,\n options.pageFile,\n options.serverModuleCacheVersion,\n );\n\n for (const shell of shellFiles) {\n if (shell.kind !== \"layout\") {\n continue;\n }\n\n controls.push(\n await loadRouteMiddlewareControlFile({\n file: shell.file,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n }),\n );\n }\n\n controls.push(\n await loadRouteMiddlewareControlFile({\n file: options.pageFile,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n serverSourceFiles: options.serverSourceFiles,\n }),\n );\n\n return mergeRouteMiddlewareControls(controls);\n}\n\nasync function loadRouteMiddlewareControlFile(options: {\n file: string;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n}): Promise<RouteMiddlewareControl | undefined> {\n if (options.serverSourceFiles !== undefined || options.serverModuleCacheVersion !== undefined) {\n return parseRouteMiddlewareControl(\n await readServerSourceFile(\n options.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n ),\n );\n }\n\n const fileStat = await stat(options.file);\n const cached = routeMiddlewareControlSourceCache.get(options.file);\n\n if (cached !== undefined && cached.mtimeMs === fileStat.mtimeMs) {\n return cached.control;\n }\n\n const control = parseRouteMiddlewareControl(await readFile(options.file, \"utf8\"));\n routeMiddlewareControlSourceCache.set(options.file, {\n control,\n mtimeMs: fileStat.mtimeMs,\n });\n\n return control;\n}\n\ninterface RouteMetadataContext {\n data: unknown;\n params: RouteParams;\n request: Request;\n}\n\ninterface RouteMetadataModule {\n generateMetadata?:\n | ((\n context: RouteMetadataContext,\n ) => Promise<RouteMetadata | undefined> | RouteMetadata | undefined)\n | undefined;\n metadata?: RouteMetadata;\n}\n\nasync function loadRouteData(options: {\n appDir: string;\n code: string;\n context: RouteDataContext;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<unknown> {\n return await loadRouteDataFromModule({\n context: options.context,\n hasLoader: hasLoaderExport(options.code),\n loadModule: () => loadRouteLoaderModule(options),\n timing: {\n finish(startedAt, phase) {\n finishRenderTimingPhase(options.timing, startedAt, phase);\n },\n start() {\n return renderTimingPhaseStartedAt(options.timing);\n },\n },\n });\n}\n\nasync function loadRouteDataWithInstrumentation(options: {\n appDir: string;\n code: string;\n context: RouteDataContext;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n instrumentation?: RouterInstrumentation | undefined;\n request: Request;\n routeId: string;\n routePath: string;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n timing?: RenderTiming | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<unknown> {\n const trace = traceContextFromRequest(options.request);\n const event = {\n method: options.request.method,\n path: new URL(options.request.url).pathname,\n request: options.request,\n routeId: options.routeId,\n routePath: options.routePath,\n ...(trace === undefined ? {} : { trace }),\n };\n invokeRouterInstrumentation(options.instrumentation?.onLoaderStart, event);\n\n try {\n const data = await loadRouteData(options);\n invokeRouterInstrumentation(options.instrumentation?.onLoaderEnd, event);\n\n return data;\n } catch (error) {\n invokeRouterInstrumentation(options.instrumentation?.onLoaderEnd, {\n ...event,\n error,\n });\n throw error;\n }\n}\n\nasync function loadRouteLoaderModule(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteLoaderModule> {\n const moduleCacheVersion =\n options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion;\n const cacheKey =\n moduleCacheVersion === undefined\n ? undefined\n : `${options.serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}\\0${options.appDir}\\0${options.filename}\\0${moduleCacheVersion}\\0${memoizedHashText(options.code)}\\0${importPolicyCacheKey(options.importPolicy)}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n\n if (cacheKey !== undefined) {\n const cached = readRouterRuntimeCacheEntry(\n routeLoaderModuleCache,\n cacheKey,\n routeLoaderModuleCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n }\n\n const loaded = loadBundledRouteLoaderModule({\n ...options,\n prebuiltArtifact: prebuiltRouteLoaderModuleArtifact(\n options.serverModules,\n options.filename,\n options.code,\n ),\n }).catch((error) => {\n if (cacheKey !== undefined) {\n routeLoaderModuleCache.delete(cacheKey);\n }\n throw error;\n });\n\n if (cacheKey !== undefined) {\n setBoundedCacheEntry(\n routeLoaderModuleCache,\n cacheKey,\n loaded,\n maxRouteLoaderModuleCacheEntries,\n routeLoaderModuleCacheCounters,\n );\n }\n\n return loaded;\n}\n\nexport async function bundleRouteLoaderModuleCode(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: stripRouteLoaderOnlyExports(options.code, options.filename),\n define: options.define,\n externalizeAppSourceModuleDirs: options.externalizeAppSourceModuleDirs,\n filename: options.filename,\n platform: \"node\",\n vitePlugins: options.vitePlugins,\n plugins: [\n fileImportMetaUrlPlugin(),\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n label: \"Loader\",\n }),\n ],\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to compile loader for ${options.filename}.`);\n }\n\n return code;\n}\n\nasync function loadBundledRouteLoaderModule(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n prebuiltArtifact?: BuiltServerModuleOutputLike | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteLoaderModule> {\n if (options.prebuiltArtifact?.moduleFile !== undefined) {\n return await importBuiltServerModuleFile<RouteLoaderModule>({\n file: options.prebuiltArtifact.moduleFile,\n label: `loader:${options.filename}`,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n }\n\n const code =\n options.prebuiltArtifact?.code ??\n (await bundleRouteLoaderModuleCode({\n appDir: options.appDir,\n code: options.code,\n externalizeAppSourceModuleDirs:\n options.serverModuleCacheVersion === undefined\n ? devExternalSourceDirs(options.appDir, options.importPolicy)\n : undefined,\n filename: options.filename,\n importPolicy: options.importPolicy,\n define: options.define,\n vitePlugins: options.vitePlugins,\n }));\n\n return await importAppRouterSourceModule<RouteLoaderModule>({\n ...((options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion) === undefined\n ? {}\n : {\n cacheKey: `loader:${options.serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}:${options.filename}:${options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion}:${memoizedHashText(code)}:${viteDefineCacheKey(options.define)}:${vitePluginsCacheKey(options.vitePlugins)}`,\n }),\n code,\n define: options.define,\n label: `loader:${options.filename}`,\n });\n}\n\nasync function loadRouteMetadata(options: {\n appDir: string;\n code: string;\n context: RouteMetadataContext;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteMetadata | undefined> {\n if (!hasMetadataExport(options.code)) {\n return undefined;\n }\n\n const prebuiltArtifact = prebuiltRequestModuleArtifact(\n options.serverModules,\n options.filename,\n options.code,\n \"routeMetadata\",\n );\n if (prebuiltArtifact?.moduleFile !== undefined) {\n const module = await importBuiltServerModuleFile<RouteMetadataModule>({\n file: prebuiltArtifact.moduleFile,\n label: `metadata:${options.filename}`,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n\n return await resolveRouteMetadataModule(module, options.context);\n }\n\n const module = await loadRouteMetadataModule(options, prebuiltArtifact);\n\n return await resolveRouteMetadataModule(module, options.context);\n}\n\nasync function loadRouteMetadataModule(\n options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n },\n prebuiltArtifact: BuiltServerModuleArtifact[\"routeMetadata\"] | undefined,\n): Promise<RouteMetadataModule> {\n if (prebuiltArtifact?.moduleFile !== undefined) {\n return await importBuiltServerModuleFile<RouteMetadataModule>({\n file: prebuiltArtifact.moduleFile,\n label: `metadata:${options.filename}`,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n });\n }\n\n const sourceHash = memoizedHashText(options.code);\n const moduleCacheVersion =\n options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion;\n const moduleCacheKey =\n moduleCacheVersion === undefined\n ? undefined\n : `metadata-module:${options.serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}:${options.filename}:${moduleCacheVersion}:${sourceHash}:${viteDefineCacheKey(options.define)}:${vitePluginsCacheKey(options.vitePlugins)}`;\n\n if (moduleCacheKey !== undefined) {\n const cached = readRouterRuntimeCacheEntry(\n routeMetadataModuleCache,\n moduleCacheKey,\n routeMetadataModuleCacheCounters,\n );\n if (cached !== undefined) {\n return await cached;\n }\n }\n\n const loaded = (async () => {\n const code = prebuiltArtifact?.code ?? (await bundleRouteMetadataModuleCode(options));\n\n return await importAppRouterSourceModule<RouteMetadataModule>({\n ...(moduleCacheVersion === undefined\n ? {}\n : {\n cacheKey: `metadata:${options.serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}:${options.filename}:${moduleCacheVersion}:${memoizedHashText(code)}:${viteDefineCacheKey(options.define)}`,\n }),\n code,\n define: options.define,\n label: `metadata:${options.filename}`,\n });\n })();\n\n if (moduleCacheKey !== undefined) {\n setBoundedCacheEntry(\n routeMetadataModuleCache,\n moduleCacheKey,\n loaded,\n maxRouteMetadataModuleCacheEntries,\n routeMetadataModuleCacheCounters,\n );\n }\n\n try {\n return await loaded;\n } catch (error) {\n if (moduleCacheKey !== undefined) {\n routeMetadataModuleCache.delete(moduleCacheKey);\n }\n throw error;\n }\n}\n\nasync function resolveRouteMetadataModule(\n module: RouteMetadataModule,\n context: RouteMetadataContext,\n): Promise<RouteMetadata | undefined> {\n const staticMetadata = validateRouteMetadata(module.metadata);\n\n if (module.generateMetadata === undefined) {\n return staticMetadata;\n }\n\n let generated: RouteMetadata | undefined;\n try {\n generated = await module.generateMetadata(context);\n } catch (error) {\n if (staticMetadata !== undefined) {\n return staticMetadata;\n }\n\n throw error;\n }\n\n const validatedGenerated = validateRouteMetadata(generated, \"generateMetadata\");\n const merged =\n validatedGenerated === undefined\n ? staticMetadata\n : mergeRouteMetadata([staticMetadata, validatedGenerated].filter(isRouteMetadata));\n\n return validateRouteMetadata(merged);\n}\n\nfunction isRouteMetadata(value: RouteMetadata | undefined): value is RouteMetadata {\n return value !== undefined;\n}\n\nasync function bundleRouteMetadataModuleCode(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: stripRouteMetadataOnlyExports(options.code, options.filename),\n define: options.define,\n filename: options.filename,\n platform: \"node\",\n vitePlugins: options.vitePlugins,\n plugins: [\n fileImportMetaUrlPlugin(),\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n label: \"Metadata\",\n }),\n ],\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to compile metadata for ${options.filename}.`);\n }\n\n return code;\n}\n\nasync function loadComposedRouteMetadata(options: {\n appDir: string;\n code: string;\n context: RouteMetadataContext;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n routes: readonly AppRoute[];\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteMetadata | undefined> {\n const cacheKey = composedRouteMetadataCacheKey(options);\n if (cacheKey !== undefined) {\n const cached = readRouterRuntimeCacheEntry(\n composedRouteMetadataCache,\n cacheKey,\n composedRouteMetadataCacheCounters,\n );\n if (cached !== undefined) {\n return cached;\n }\n }\n\n try {\n const loaded = await loadComposedRouteMetadataUncached(options);\n if (cacheKey !== undefined && !loaded.dynamic) {\n setBoundedCacheEntry(\n composedRouteMetadataCache,\n cacheKey,\n Promise.resolve(loaded.metadata),\n maxComposedRouteMetadataCacheEntries,\n composedRouteMetadataCacheCounters,\n );\n }\n\n return loaded.metadata;\n } catch (error) {\n if (cacheKey !== undefined) {\n composedRouteMetadataCache.delete(cacheKey);\n }\n throw error;\n }\n}\n\nfunction composedRouteMetadataCacheKey(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n serverModuleCacheVersion?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): string | undefined {\n const moduleCacheVersion =\n options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion;\n\n return moduleCacheVersion === undefined\n ? undefined\n : `${options.appDir}\\0${options.filename}\\0${options.serverModuleCacheVersion === undefined ? \"dev\" : \"build\"}\\0${moduleCacheVersion}\\0${memoizedHashText(options.code)}\\0${importPolicyCacheKey(options.importPolicy)}\\0${viteDefineCacheKey(options.define)}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n}\n\nexport const __composedRouteMetadataCacheKeyForTesting = composedRouteMetadataCacheKey;\n\nasync function loadComposedRouteMetadataUncached(options: {\n appDir: string;\n code: string;\n context: RouteMetadataContext;\n define?: UserConfig[\"define\"] | undefined;\n devServerModuleCacheVersion?: string | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n routes: readonly AppRoute[];\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverModuleCacheVersion?: string | undefined;\n serverSourceFiles?: ReadonlyMap<string, string> | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<{ dynamic: boolean; metadata: RouteMetadata | undefined }> {\n const layoutFiles = await shellFilesForPage(\n options.appDir,\n options.filename,\n options.serverModuleCacheVersion,\n );\n const metadata: RouteMetadata[] = [];\n let dynamic = hasGenerateMetadataExport(options.code);\n const layoutMetadataTasks = layoutFiles.map(async (shell) => {\n if (shell.kind !== \"layout\") {\n return { code: undefined, metadata: undefined };\n }\n\n const code = await readServerSourceFile(\n shell.file,\n options.serverModuleCacheVersion,\n options.serverSourceFiles,\n );\n const shellMetadata = await loadRouteMetadata({\n appDir: options.appDir,\n code,\n context: options.context,\n filename: shell.file,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n\n return { code, metadata: shellMetadata };\n });\n const pageMetadataTask = loadRouteMetadata({\n appDir: options.appDir,\n code: options.code,\n context: options.context,\n filename: options.filename,\n importPolicy: options.importPolicy,\n serverModules: options.serverModules,\n serverModuleCacheVersion: options.serverModuleCacheVersion,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion,\n define: options.define,\n vitePlugins: options.vitePlugins,\n });\n\n for (const task of layoutMetadataTasks) {\n const shell = await task;\n if (shell.code !== undefined) {\n dynamic ||= hasGenerateMetadataExport(shell.code);\n }\n if (shell.metadata !== undefined) {\n metadata.push(shell.metadata);\n }\n }\n\n const pageMetadata = await pageMetadataTask;\n if (pageMetadata !== undefined) {\n metadata.push(pageMetadata);\n }\n\n return {\n dynamic,\n metadata: applyFileConventionMetadata(\n mergeRouteMetadata(metadata),\n options.routes,\n options.filename,\n options.context.params,\n ),\n };\n}\n\nfunction hasMetadataExport(code: string): boolean {\n return /\\bexport\\s+const\\s+metadata\\s*=/.test(code) || hasGenerateMetadataExport(code);\n}\n\nfunction hasGenerateMetadataExport(code: string): boolean {\n return (\n /\\bexport\\s+(?:async\\s+)?function\\s+generateMetadata\\b/.test(code) ||\n /\\bexport\\s*\\{[^}]*\\bgenerateMetadata\\b[^}]*\\}/.test(code)\n );\n}\n\nfunction usesRuntimeCacheControl(code: string): boolean {\n return /\\bcacheControl\\s*\\(/.test(code);\n}\n\nfunction warnIfCspNonceWouldBlockInlineTags(options: {\n html: string;\n logger: AppRouterLogger | undefined;\n metadata: RouteMetadata | undefined;\n request: Request;\n serverModuleCacheVersion: string | undefined;\n}): void {\n if (\n options.serverModuleCacheVersion !== undefined ||\n process.env.NODE_ENV === \"production\" ||\n options.metadata?.csp?.disable === true ||\n options.metadata?.csp?.directives === undefined ||\n !/<(?:script|style)\\b/i.test(options.html)\n ) {\n return;\n }\n\n const scriptNonces = cspDirectiveNonces(options.metadata.csp, \"script-src\");\n const styleNonces = cspDirectiveNonces(options.metadata.csp, \"style-src\");\n\n if (scriptNonces.size === 0 && styleNonces.size === 0) {\n return;\n }\n\n for (const tag of inlineCspTags(options.html)) {\n if (tag.name === \"script\") {\n if (\n scriptNonces.size > 0 &&\n !scriptHasExternalSourceOrInertType(tag.attributes) &&\n tag.content.trim() !== \"\" &&\n !tagHasMatchingNonce(tag.attributes, scriptNonces)\n ) {\n warnCspInlineNonceMismatch(options, \"script-src\", \"script\");\n }\n continue;\n }\n\n if (\n styleNonces.size > 0 &&\n tag.content.trim() !== \"\" &&\n !tagHasMatchingNonce(tag.attributes, styleNonces)\n ) {\n warnCspInlineNonceMismatch(options, \"style-src\", \"style\");\n }\n }\n}\n\nfunction warnCspInlineNonceMismatch(\n options: {\n logger: AppRouterLogger | undefined;\n request: Request;\n },\n directive: \"script-src\" | \"style-src\",\n tag: \"script\" | \"style\",\n): void {\n const message =\n tag === \"script\"\n ? \"mreact router: CSP script-src uses a nonce, but an inline <script> without a matching nonce will be blocked. Add the script through metadata.head with nonce: true, move it to an external script, or remove script-src for this route.\"\n : \"mreact router: CSP style-src uses a nonce, but an inline <style> without a matching nonce will be blocked. Add the style through metadata.head with nonce: true, move it to an external stylesheet, or remove style-src for this route.\";\n\n if (options.logger === undefined) {\n console.warn(message);\n return;\n }\n\n emitRouterLog(options.logger, \"warn\", {\n directive,\n path: new URL(options.request.url).pathname,\n tag,\n type: \"router:csp:inline-nonce-warning\",\n });\n}\n\nfunction cspDirectiveNonces(\n csp: NonNullable<RouteMetadata[\"csp\"]>,\n directive: \"script-src\" | \"style-src\",\n): ReadonlySet<string> {\n const values = csp.directives?.[directive];\n const nonces = new Set<string>();\n\n if (values !== undefined && csp.nonce !== undefined) {\n nonces.add(csp.nonce);\n }\n\n for (const value of Array.isArray(values) ? values : values === undefined ? [] : [values]) {\n const match = /^'nonce-([^']+)'$/.exec(value);\n\n if (match?.[1] !== undefined) {\n nonces.add(match[1]);\n }\n }\n\n return nonces;\n}\n\ninterface InlineCspTag {\n attributes: ReadonlyMap<string, string>;\n content: string;\n name: \"script\" | \"style\";\n}\n\nfunction inlineCspTags(html: string): InlineCspTag[] {\n const tags: InlineCspTag[] = [];\n const lowerHtml = html.toLowerCase();\n let position = 0;\n\n while (position < html.length) {\n const scriptIndex = lowerHtml.indexOf(\"<script\", position);\n const styleIndex = lowerHtml.indexOf(\"<style\", position);\n const openerIndex =\n scriptIndex === -1\n ? styleIndex\n : styleIndex === -1\n ? scriptIndex\n : Math.min(scriptIndex, styleIndex);\n\n if (openerIndex === -1) {\n break;\n }\n\n const name = lowerHtml.startsWith(\"<script\", openerIndex) ? \"script\" : \"style\";\n const tagEnd = html.indexOf(\">\", openerIndex + 1);\n if (tagEnd === -1) {\n break;\n }\n\n const closeToken = `</${name}>`;\n const closeIndex = lowerHtml.indexOf(closeToken, tagEnd + 1);\n const nextScriptIndex = lowerHtml.indexOf(\"<script\", tagEnd + 1);\n const nextStyleIndex = lowerHtml.indexOf(\"<style\", tagEnd + 1);\n const nextOpenerIndex =\n nextScriptIndex === -1\n ? nextStyleIndex\n : nextStyleIndex === -1\n ? nextScriptIndex\n : Math.min(nextScriptIndex, nextStyleIndex);\n\n if (closeIndex === -1 || (nextOpenerIndex !== -1 && nextOpenerIndex < closeIndex)) {\n position = tagEnd + 1;\n continue;\n }\n\n tags.push({\n attributes: parseTagAttributes(html.slice(openerIndex + name.length + 1, tagEnd)),\n content: html.slice(tagEnd + 1, closeIndex),\n name,\n });\n\n position = closeIndex + closeToken.length;\n }\n\n return tags;\n}\n\nexport const __inlineCspTagsForTesting = inlineCspTags;\n\nfunction parseTagAttributes(source: string): ReadonlyMap<string, string> {\n const attributes = new Map<string, string>();\n const pattern = /([^\\s=/>]+)(?:\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|([^\\s\"'=<>`]+)))?/g;\n let match: RegExpExecArray | null;\n\n while ((match = pattern.exec(source)) !== null) {\n const name = match[1]?.toLowerCase();\n\n if (name === undefined) {\n continue;\n }\n\n attributes.set(name, match[2] ?? match[3] ?? match[4] ?? \"\");\n }\n\n return attributes;\n}\n\nfunction scriptHasExternalSourceOrInertType(attributes: ReadonlyMap<string, string>): boolean {\n if (attributes.has(\"src\")) {\n return true;\n }\n\n const type = attributes.get(\"type\")?.trim().toLowerCase();\n\n return type === \"application/json\" || type === \"application/ld+json\";\n}\n\nfunction tagHasMatchingNonce(\n attributes: ReadonlyMap<string, string>,\n expectedNonces: ReadonlySet<string>,\n): boolean {\n const nonce = attributes.get(\"nonce\");\n\n return nonce !== undefined && expectedNonces.has(nonce);\n}\n\nfunction injectQueryState(html: string, state: DehydratedQueryClient): string {\n if (state.queries.length === 0) {\n return html;\n }\n\n const script = `<script type=\"application/json\" id=\"${__MREACT_QUERY_STATE_SCRIPT_ID}\">${escapeJsonForHtml(\n JSON.stringify(state),\n )}</script>`;\n\n return /<\\/body>/i.test(html) ? replaceFinalBodyCloseTag(html, script) : `${html}${script}`;\n}\n\nfunction injectAuthSessionClaims(html: string, claims: unknown): string {\n if (claims === undefined) {\n return html;\n }\n\n const script = `<script type=\"application/json\" id=\"${authSessionScriptId}\">${escapeJsonForHtml(\n JSON.stringify(claims),\n )}</script>`;\n\n return /<\\/body>/i.test(html) ? replaceFinalBodyCloseTag(html, script) : `${html}${script}`;\n}\n\nfunction replaceFinalBodyCloseTag(html: string, insertion: string): string {\n const matches = [...html.matchAll(/<\\/body>/gi)];\n const last = matches.at(-1);\n\n if (last?.index === undefined) {\n return `${html}${insertion}`;\n }\n\n return `${html.slice(0, last.index)}${insertion}${html.slice(last.index)}`;\n}\n\nfunction authIncludesClaims(code: string): boolean {\n return /\\bexport\\s+const\\s+auth\\s*=\\s*[\"']include-claims[\"']\\s*;?/.test(code);\n}\n\nfunction currentAuthClaims(): unknown {\n return authRequestStorage().getStore()?.claims;\n}\n\nfunction authRequestStorage(): AsyncLocalStorage<AuthRuntimeRequestState> {\n const global = globalThis as typeof globalThis & {\n [authRuntimeStateKey]?: AuthRuntimeState | undefined;\n };\n global[authRuntimeStateKey] ??= {};\n global[authRuntimeStateKey].storage ??= new AsyncLocalStorage<AuthRuntimeRequestState>();\n return global[authRuntimeStateKey].storage;\n}\n\nfunction escapeJsonForHtml(value: string): string {\n return value\n .replaceAll(\"&\", \"\\\\u0026\")\n .replaceAll(\"<\", \"\\\\u003c\")\n .replaceAll(\">\", \"\\\\u003e\")\n .replaceAll(\"\\u2028\", \"\\\\u2028\")\n .replaceAll(\"\\u2029\", \"\\\\u2029\");\n}\n\nfunction readServerSourceFile(\n file: string,\n serverModuleCacheVersion: string | undefined,\n serverSourceFiles: ReadonlyMap<string, string> | undefined,\n): Promise<string> {\n const manifestSource = serverSourceFiles?.get(file);\n\n if (manifestSource !== undefined) {\n return Promise.resolve(manifestSource);\n }\n\n if (serverModuleCacheVersion === undefined) {\n return readDevServerSourceFile(file);\n }\n\n const key = `${serverModuleCacheVersion}:${file}`;\n const cached = readRouterRuntimeCacheEntry(\n serverSourceFileCache,\n key,\n serverSourceFileCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = readFile(file, \"utf8\").catch((error) => {\n serverSourceFileCache.delete(key);\n throw error;\n });\n setBoundedCacheEntry(\n serverSourceFileCache,\n key,\n loaded,\n maxServerSourceFileCacheEntries,\n serverSourceFileCacheCounters,\n );\n\n return loaded;\n}\n\nasync function readDevServerSourceFile(file: string): Promise<string> {\n const stats = await fileStat(file);\n const cached = devServerSourceFileCache.get(file);\n if (cached !== undefined && cached.mtimeMs === stats.mtimeMs && cached.size === stats.size) {\n return cached.source;\n }\n\n const source = await readFile(file, \"utf8\");\n if (devServerSourceFileCache.size >= MAX_DEV_SERVER_SOURCE_FILE_CACHE_ENTRIES) {\n const oldestKey = devServerSourceFileCache.keys().next().value;\n if (oldestKey !== undefined) {\n devServerSourceFileCache.delete(oldestKey);\n }\n }\n devServerSourceFileCache.set(file, { ...stats, source });\n return source;\n}\n\nfunction setBoundedCacheEntry<K, V>(\n cache: Map<K, V>,\n key: K,\n value: V,\n maxEntries: number,\n counters?: RouterRuntimeCacheCounters,\n): void {\n if (cache.size >= maxEntries) {\n const oldestKey = cache.keys().next().value as K | undefined;\n\n if (oldestKey !== undefined) {\n cache.delete(oldestKey);\n if (counters !== undefined) {\n counters.evictions += 1;\n }\n }\n }\n\n cache.set(key, value);\n}\n"]}
|