@reckona/mreact-router 0.0.180 → 0.0.181
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/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +53 -18
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +65 -12
- package/dist/build.js.map +1 -1
- package/package.json +11 -11
- package/src/adapters/cloudflare.ts +98 -41
- package/src/build.ts +93 -30
package/dist/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { Dirent } from \"node:fs\";\nimport {\n copyFile,\n cp,\n lstat,\n mkdir,\n readdir,\n readFile,\n rm,\n stat,\n writeFile,\n} from \"node:fs/promises\";\nimport { builtinModules } from \"node:module\";\nimport { availableParallelism } from \"node:os\";\nimport { dirname, join, relative, resolve, sep } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport {\n collectStaticImportReferences,\n collectTopLevelValueExportNames,\n formatDiagnostic,\n hasModuleDirective,\n transform,\n} from \"@reckona/mreact-compiler\";\nimport { transformCompilerModuleContext } from \"@reckona/mreact-compiler/internal\";\nimport type { ServerOutputMode } from \"@reckona/mreact-compiler\";\nimport {\n compilerModuleContextForSource,\n collectClientRouteReferences,\n createClientRouteInferenceCache,\n detectClientNavigationHint,\n formatClientRouteInferenceDiagnostic,\n inferClientRouteModule,\n navigationRuntimeLinkDisabledDiagnostic,\n resolveNavigationRuntime,\n type ClientRouteManifestEntry,\n type ClientRouteInferenceCache,\n} from \"./client-route-inference.js\";\nimport {\n buildClientRouteBatchOutput,\n buildNavigationRuntimeBundle,\n clientScriptForPath,\n routeIdForPath,\n type BuildClientRouteOutputOptions,\n} from \"./navigation-runtime.js\";\nimport {\n COMPAT_VENDOR_PLACEHOLDER_PREFIX,\n bundleAppRouterSourceModule,\n fileImportMetaUrlPlugin,\n importAppRouterSourceModule,\n resolveCompatVendorEntryFiles,\n sourceReferencesCompatVendorSpecifier,\n} from \"./module-runner.js\";\nimport { compileRouteMatcherArtifact, scanAppRoutes } from \"./routes.js\";\nimport type { AppRoute, CompiledRouteMatcherArtifact } from \"./routes.js\";\nimport { appFileConventionForRootFilename } from \"./file-conventions.js\";\nimport {\n resolveAppRouterProjectOptions,\n resolveBuildTargets,\n type AppRouterProjectOptions,\n type AppRouterBuildTarget,\n type AppRouterClientSourceMapMode,\n type ResolvedAppRouterProject,\n} from \"./config.js\";\nimport type { ModuleMetadata } from \"@reckona/mreact-compiler\";\nimport type { RouteCachePolicy } from \"./cache.js\";\nimport { routeCachePolicyFromSource } from \"./cache.js\";\nimport { bundleMiddlewareModuleCode, renderAppRequest } from \"./render.js\";\nimport { createAppRouterImportPolicyPlugin, type AppRouterImportPolicy } from \"./import-policy.js\";\nimport {\n hasGenerateStaticParamsExport,\n hasLoaderExport,\n hasPrerenderExport,\n isStreamRouteSource,\n routeClosureMayUseAwaitBoundary,\n stripRouteBuildExports,\n stripRouteClientOnlyExports,\n stripRouteClientSource,\n stripRouteLoaderOnlyExports,\n stripRouteMetadataOnlyExports,\n stripRouteRequestOnlyExports,\n} from \"./route-source.js\";\nimport {\n bundleRouterModule,\n bundleRouterModules,\n type RouterCompatPlugin,\n type RouterBundleChunkOutput,\n type RouterBundleModulesOutput,\n type RouterBundleOutput,\n} from \"./bundle-pipeline.js\";\nimport { collectRouteCssFilesFromSources, collectSpecialBoundaryFiles } from \"./route-styles.js\";\nimport { existingRouteShellCandidates } from \"./route-shells.js\";\nimport { sourceModuleCandidates } from \"./source-modules.js\";\nimport { collectBuildInferredServerActions } from \"./server-action-inference.js\";\nimport { prepareRouteServerActionPlaceholders } from \"./actions.js\";\nimport { viteDefineCacheKey, vitePluginsCacheKey } from \"./vite-plugin-cache-key.js\";\nimport { workspacePackageFile } from \"./workspace-packages.js\";\nimport { prependTailwindSourceDirectives } from \"./tailwind-source.js\";\nimport {\n parseRouteMiddlewareControl,\n parseStaticMiddlewareConfig,\n validateRouteMiddlewareControl,\n} from \"./middleware.js\";\nimport type { Plugin, PluginOption, UserConfig } from \"vite\";\n\nconst nativeEscapeTransform = {\n batchImportName: \"escapeHtmlBatch\",\n batchImportSource: \"@reckona/mreact-router/native-escape\",\n} as const;\n\nconst defaultBuildConcurrency = Math.max(1, Math.min(2, availableParallelism()));\nconst serverArtifactFilesystemConcurrency = 2;\n\ntype ServerTransformOutput = ReturnType<typeof transform>;\ntype ServerTransformCache = Map<string, Promise<ServerTransformOutput>>;\n\n/**\n * Configures an app-router production build and its deployment targets.\n */\nexport interface BuildAppOptions extends AppRouterProjectOptions {\n onBuildProgress?: ((event: BuildAppProgressEvent) => void) | undefined;\n onBuildPhaseTiming?: ((timing: BuildAppPhaseTiming) => void) | undefined;\n outDir: string;\n targets?: readonly AppRouterBuildTarget[] | undefined;\n viteConfig?: Pick<UserConfig, \"define\" | \"plugins\"> | undefined;\n}\n\nasync function validateBuildMiddlewareControls(\n appDir: string,\n routes: readonly AppRoute[],\n): Promise<void> {\n const availableIds = await collectBuildMiddlewareIds(appDir);\n\n for (const route of routes) {\n if (route.kind !== \"page\") {\n continue;\n }\n\n validateRouteMiddlewareControl({\n availableIds,\n control: parseRouteMiddlewareControl(await readFile(route.file, \"utf8\")),\n routePath: route.path,\n });\n }\n}\n\nasync function collectBuildMiddlewareIds(appDir: string): Promise<ReadonlySet<string>> {\n const ids = new Set<string>();\n\n for (const file of [join(appDir, \"middleware.ts\"), join(appDir, \"middleware.mreact.ts\")]) {\n let code: string;\n try {\n code = await readFile(file, \"utf8\");\n } catch {\n continue;\n }\n\n const id = parseStaticMiddlewareConfig(code).id;\n\n if (id !== undefined) {\n ids.add(id);\n }\n }\n\n return ids;\n}\n\n/**\n * Names a high-level phase reported while building an app-router application.\n */\nexport type BuildAppPhase =\n | \"scan\"\n | \"collectFiles\"\n | \"analyzeSources\"\n | \"validate\"\n | \"prepareOutput\"\n | \"publicAssets\"\n | \"serverActionManifest\"\n | \"serverModules\"\n | \"importPolicy\"\n | \"serverModuleArtifacts\"\n | \"clientBundles\"\n | \"navigationRuntime\"\n | \"prerender\"\n | \"cloudflare\"\n | \"writeManifests\"\n | \"adapterArtifacts\";\n\n/**\n * Captures the elapsed time for a completed app-router build phase.\n */\nexport interface BuildAppPhaseTiming {\n ms: number;\n phase: BuildAppPhase;\n}\n\n/**\n * Reports build progress events emitted during app-router compilation and packaging.\n */\nexport type BuildAppProgressEvent =\n | {\n kind: \"phase-start\";\n phase: BuildAppPhase;\n }\n | {\n kind: \"phase-end\";\n ms: number;\n phase: BuildAppPhase;\n }\n | {\n count: number;\n kind: \"routes-discovered\";\n };\n\n/**\n * Contains the route graph produced by an app-router build.\n */\nexport interface BuildAppResult {\n routes: AppRoute[];\n}\n\n/**\n * Describes the generated import policy artifact consumed by built request handlers.\n */\nexport interface BuiltImportPolicyArtifact {\n byRoute: Record<string, string[]>;\n runtimePackages: string[];\n version: 1;\n}\n\n/**\n * Summarizes the files and entry point produced for an AWS Lambda artifact.\n */\nexport interface AwsLambdaArtifactManifest {\n files: Array<{ bytes: number; path: string }>;\n handler: string;\n runtime: \"aws-lambda\";\n totalBytes: number;\n version: 1;\n}\n\n/**\n * Summarizes the files and worker entry produced for a Cloudflare Pages artifact.\n */\nexport interface CloudflarePagesArtifactManifest {\n files: Array<{ bytes: number; path: string }>;\n runtime: \"cloudflare-pages\";\n totalBytes: number;\n version: 1;\n worker: \"_worker.js\";\n}\n\n/**\n * Configures packaging of a built app-router output directory for AWS Lambda.\n */\nexport interface PackageAwsLambdaArtifactOptions {\n fromDir: string;\n handlerEntry?: string | undefined;\n outDir: string;\n skipRuntimeDependencyCheck?: boolean | undefined;\n}\n\n/**\n * Configures packaging of a built app-router output directory for Cloudflare Pages.\n */\nexport interface PackageCloudflarePagesArtifactOptions {\n fromDir: string;\n outDir: string;\n}\n\nexport interface BuiltServerManifest {\n allowedSourceDirs?: readonly string[];\n assetBaseUrl?: string;\n version: 1;\n files: Record<string, string>;\n prerenderedRoutes?: Record<string, BuiltPrerenderedRoute>;\n publicAssetBaseUrl?: string;\n routeMatcher?: CompiledRouteMatcherArtifact;\n routesDir?: string;\n routeServerActionReferences?: Record<string, BuiltServerActionExpressionReference[]>;\n serverActionManifest?: BuiltServerActionReference[];\n serverModuleClosureFiles?: Record<string, string[]>;\n serverModuleFiles?: Record<string, string>;\n serverModuleRenderFiles?: Record<string, string>;\n serverModuleRequestFiles?: Record<string, string>;\n routes: AppRoute[];\n serverModules?: Record<string, BuiltServerModuleArtifact>;\n}\n\nexport interface BuiltServerActionReference {\n exportName: string;\n inferred?: boolean;\n moduleId: string;\n}\n\nexport interface BuiltServerActionExpressionReference {\n end: number;\n exportName: string;\n expression: string;\n expressionEnd: number;\n expressionStart: number;\n inferred: boolean;\n moduleId: string;\n sourceHash: string;\n start: number;\n}\n\nexport interface BuiltServerModuleArtifact {\n analysis?: BuiltRouteSourceAnalysisSummary;\n loader?: BuiltServerModuleOutput;\n routeMetadata?: BuiltServerModuleOutput;\n request?: BuiltServerModuleOutput;\n stream?: BuiltServerModuleOutput;\n string?: BuiltServerModuleOutput;\n}\n\nexport interface BuiltRouteSourceAnalysisSummary {\n authIncludesClaims: boolean;\n cachePolicy?: RouteCachePolicy | undefined;\n clientBoundaryImports: readonly string[];\n clientBoundaryFallbackImports: readonly string[];\n clientRoute: boolean;\n hasLoader: boolean;\n routeCode: string;\n routePath: string;\n sourceHash: string;\n streamRoute: boolean;\n usesRuntimeCacheControl: boolean;\n}\n\ninterface BuildSourceAnalysis {\n authIncludesClaims: boolean;\n cachePolicy?: RouteCachePolicy | undefined;\n hasGenerateStaticParams: boolean;\n hasLoader: boolean;\n hasMetadata: boolean;\n hasPrerender: boolean;\n source: string;\n sourceHash: string;\n usesRuntimeCacheControl: boolean;\n}\n\ninterface BuildRouteSourceAnalysis extends BuildSourceAnalysis {\n clientBoundaryImports: readonly string[];\n clientBoundaryFallbackImports: readonly string[];\n clientRoute: boolean;\n file: string;\n route: AppRoute & { kind: \"page\" };\n routeCode: string;\n streamRoute: boolean;\n}\n\ninterface BuildSourceAnalysisScope {\n byFile: ReadonlyMap<string, BuildSourceAnalysis>;\n byRouteFile: ReadonlyMap<string, BuildRouteSourceAnalysis>;\n}\n\nexport interface BuiltServerModuleOutput {\n bundleCode?: string;\n code: string;\n metadata?: ModuleMetadata;\n moduleFile?: string;\n sourceHash: string;\n}\n\nexport interface BuiltPrerenderedRoute {\n headers: Record<string, string>;\n html: string;\n status: number;\n}\n\ntype StaticParams = Record<string, string | number | boolean | readonly string[]>;\n\n/**\n * Builds an app-router project into server, client, and optional deployment-target artifacts.\n *\n * Use this from custom build scripts when the CLI is too coarse-grained; the returned manifest paths describe the files written under `outDir`. The build reads route files, loaders, middleware, metadata, server actions, and client references, so callers should pass the same project root and source allow-list they expect to deploy.\n */\nexport async function buildApp(options: BuildAppOptions): Promise<BuildAppResult> {\n const timingSink = options.onBuildPhaseTiming;\n const progressSink = options.onBuildProgress;\n const shouldTrackBuildPhases = timingSink !== undefined || progressSink !== undefined;\n const project = resolveAppRouterProjectOptions(options);\n const buildTargets = resolveBuildTargets(options.targets ?? project.buildTargets);\n const shouldBuildCloudflare = buildTargets.includes(\"cloudflare\");\n const shouldBuildAwsLambda = buildTargets.includes(\"aws-lambda\");\n const routes =\n shouldTrackBuildPhases === false\n ? await scanAppRoutes({ appDir: project.routesDir })\n : await timeBuildPhase(timingSink, progressSink, \"scan\", () =>\n scanAppRoutes({ appDir: project.routesDir }),\n );\n progressSink?.({ count: routes.length, kind: \"routes-discovered\" });\n await validateBuildMiddlewareControls(project.routesDir, routes);\n const viteDefine = options.viteConfig?.define;\n const vitePlugins = options.viteConfig?.plugins;\n const files =\n shouldTrackBuildPhases === false\n ? await collectBuildFiles(project.projectRoot, project.allowedSourceDirs, project.routesDir)\n : await timeBuildPhase(timingSink, progressSink, \"collectFiles\", () =>\n collectBuildFiles(project.projectRoot, project.allowedSourceDirs, project.routesDir),\n );\n const serverClientRouteInferenceCache = createClientRouteInferenceCache();\n const serverTransformCache: ServerTransformCache = new Map();\n const serverDir = join(options.outDir, \"server\");\n const clientDir = join(options.outDir, \"client\");\n const cloudflareDir = join(options.outDir, \"cloudflare\");\n const sourceAnalysis =\n shouldTrackBuildPhases === false\n ? await analyzeBuildRouteSources({\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n files,\n project,\n projectRoot: project.projectRoot,\n routes,\n vitePlugins,\n })\n : await timeBuildPhase(timingSink, progressSink, \"analyzeSources\", () =>\n analyzeBuildRouteSources({\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n files,\n project,\n projectRoot: project.projectRoot,\n routes,\n vitePlugins,\n }),\n );\n\n if (shouldTrackBuildPhases === false) {\n await validateProductionRoutes({\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n files,\n project,\n projectRoot: project.projectRoot,\n routes,\n sourceAnalysis,\n serverTransformCache,\n vitePlugins,\n });\n } else {\n await timeBuildPhase(timingSink, progressSink, \"validate\", () =>\n validateProductionRoutes({\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n files,\n project,\n projectRoot: project.projectRoot,\n routes,\n sourceAnalysis,\n serverTransformCache,\n vitePlugins,\n }),\n );\n }\n\n if (shouldTrackBuildPhases === false) {\n await rm(options.outDir, { force: true, recursive: true });\n await Promise.all([\n mkdir(serverDir, { recursive: true }),\n mkdir(clientDir, { recursive: true }),\n ...(shouldBuildCloudflare ? [mkdir(cloudflareDir, { recursive: true })] : []),\n mkdir(join(clientDir, \".vite\"), { recursive: true }),\n mkdir(join(clientDir, \"assets\", \"routes\"), { recursive: true }),\n ]);\n } else {\n await timeBuildPhase(timingSink, progressSink, \"prepareOutput\", async () => {\n await rm(options.outDir, { force: true, recursive: true });\n await Promise.all([\n mkdir(serverDir, { recursive: true }),\n mkdir(clientDir, { recursive: true }),\n ...(shouldBuildCloudflare ? [mkdir(cloudflareDir, { recursive: true })] : []),\n mkdir(join(clientDir, \".vite\"), { recursive: true }),\n mkdir(join(clientDir, \"assets\", \"routes\"), { recursive: true }),\n ]);\n });\n }\n\n const publicAssets =\n shouldTrackBuildPhases === false\n ? await buildPublicAssetManifest(project, clientDir)\n : await timeBuildPhase(timingSink, progressSink, \"publicAssets\", () =>\n buildPublicAssetManifest(project, clientDir),\n );\n\n const clientRouteInferenceCache = createClientRouteInferenceCache();\n const [serverActionManifest, generatedImportPolicy] = await Promise.all([\n shouldTrackBuildPhases === false\n ? collectBuildServerActionManifest({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n })\n : timeBuildPhase(timingSink, progressSink, \"serverActionManifest\", () =>\n collectBuildServerActionManifest({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n }),\n ),\n shouldTrackBuildPhases === false\n ? buildGeneratedImportPolicy({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n })\n : timeBuildPhase(timingSink, progressSink, \"importPolicy\", () =>\n buildGeneratedImportPolicy({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n }),\n ),\n ]);\n const { artifacts: serverModules, sharedChunks: serverModuleSharedChunks } = await (\n shouldTrackBuildPhases === false\n ? buildServerModuleArtifacts({\n bundleRequestRuntimePackages: shouldBuildAwsLambda,\n bundleCache: new Map(),\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n define: viteDefine,\n files,\n prebundleServerComponents: buildTargets.includes(\"node\") || shouldBuildAwsLambda,\n project,\n projectRoot: project.projectRoot,\n routes,\n serverActionReferencesByFile: serverActionManifest.routeReferences,\n sourceAnalysis,\n serverTransformCache,\n vitePlugins,\n })\n : timeBuildPhase(timingSink, progressSink, \"serverModules\", () =>\n buildServerModuleArtifacts({\n bundleRequestRuntimePackages: shouldBuildAwsLambda,\n bundleCache: new Map(),\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n define: viteDefine,\n files,\n prebundleServerComponents: buildTargets.includes(\"node\") || shouldBuildAwsLambda,\n project,\n projectRoot: project.projectRoot,\n routes,\n serverActionReferencesByFile: serverActionManifest.routeReferences,\n sourceAnalysis,\n serverTransformCache,\n vitePlugins,\n }),\n )\n );\n const serverRoutes = routes.map((route) => ({\n ...route,\n file: relative(project.projectRoot, route.file),\n }));\n const [serverModuleArtifacts, clientBundle] = await Promise.all([\n shouldTrackBuildPhases === false\n ? writeServerModuleArtifactFiles(\n serverDir,\n serverModules,\n generatedImportPolicy.runtimePackages,\n serverModuleSharedChunks,\n )\n : timeBuildPhase(timingSink, progressSink, \"serverModuleArtifacts\", () =>\n writeServerModuleArtifactFiles(\n serverDir,\n serverModules,\n generatedImportPolicy.runtimePackages,\n serverModuleSharedChunks,\n ),\n ),\n shouldTrackBuildPhases === false\n ? writeClientRouteBundles({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientDir,\n clientConsolePureFunctions: project.clientConsolePureFunctions,\n clientRouteInferenceCache,\n projectRoot: project.projectRoot,\n routes,\n sourceAnalysis,\n sourceMapDir: join(options.outDir, \"source-maps\", \"client\"),\n sourceMaps: project.clientSourceMaps,\n sourceDirs: project.allowedSourceDirs,\n vitePlugins,\n })\n : timeBuildPhase(timingSink, progressSink, \"clientBundles\", () =>\n writeClientRouteBundles({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientDir,\n clientConsolePureFunctions: project.clientConsolePureFunctions,\n clientRouteInferenceCache,\n projectRoot: project.projectRoot,\n routes,\n sourceAnalysis,\n sourceMapDir: join(options.outDir, \"source-maps\", \"client\"),\n sourceMaps: project.clientSourceMaps,\n sourceDirs: project.allowedSourceDirs,\n vitePlugins,\n }),\n ),\n ]);\n const clientRoutes = clientBundle.routes;\n const navigationRuntimeScript = clientRoutes.some(\n (route) => route.navigation === true && !route.client,\n )\n ? shouldTrackBuildPhases === false\n ? await writeNavigationRuntimeBundle(clientDir, project.clientConsolePureFunctions)\n : await timeBuildPhase(timingSink, progressSink, \"navigationRuntime\", () =>\n writeNavigationRuntimeBundle(clientDir, project.clientConsolePureFunctions),\n )\n : undefined;\n const clientManifestRoutes =\n navigationRuntimeScript === undefined\n ? clientRoutes\n : clientRoutes.map((route) =>\n route.navigation === true && !route.client\n ? { ...route, navigationScript: navigationRuntimeScript }\n : route,\n );\n const clientManifestAssets = Array.from(\n new Set([\n ...clientBundle.assets,\n ...clientBundle.styles.flatMap((style) => style.css),\n ...(navigationRuntimeScript === undefined ? [] : [navigationRuntimeScript]),\n ]),\n ).sort();\n const serverModuleClosureFiles = buildServerModuleClosureManifest(\n serverModules,\n sourceAnalysis,\n );\n const prerenderedRoutes =\n shouldTrackBuildPhases === false\n ? await prerenderStaticRoutes({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientRoutes: clientManifestRoutes,\n define: viteDefine,\n project,\n routes,\n serverModules,\n sourceAnalysis,\n vitePlugins,\n })\n : await timeBuildPhase(timingSink, progressSink, \"prerender\", () =>\n prerenderStaticRoutes({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientRoutes: clientManifestRoutes,\n define: viteDefine,\n project,\n routes,\n serverModules,\n sourceAnalysis,\n vitePlugins,\n }),\n );\n let cloudflareRouteModules: CloudflareRouteModulesOutput | undefined;\n if (shouldBuildCloudflare) {\n cloudflareRouteModules =\n shouldTrackBuildPhases === false\n ? await writeCloudflareRouteModules({\n cloudflareDir,\n define: viteDefine,\n files,\n prerenderedRoutes,\n projectRoot: project.projectRoot,\n routesDir: project.routesDir,\n routes,\n serverModules,\n sourceAnalysis,\n vitePlugins,\n })\n : await timeBuildPhase(timingSink, progressSink, \"cloudflare\", () =>\n writeCloudflareRouteModules({\n cloudflareDir,\n define: viteDefine,\n files,\n prerenderedRoutes,\n projectRoot: project.projectRoot,\n routesDir: project.routesDir,\n routes,\n serverModules,\n sourceAnalysis,\n vitePlugins,\n }),\n );\n }\n\n const routeServerActionReferences = Object.fromEntries(\n [...serverActionManifest.routeReferences.entries()].sort(([left], [right]) =>\n left.localeCompare(right),\n ),\n );\n const serverManifest = {\n allowedSourceDirs: project.allowedSourceDirs.map((directory) =>\n relative(project.projectRoot, directory),\n ),\n ...(project.assetBaseUrl === undefined ? {} : { assetBaseUrl: project.assetBaseUrl }),\n version: 1,\n routes: serverRoutes,\n routeMatcher: compileRouteMatcherArtifact(serverRoutes),\n routesDir: relative(project.projectRoot, project.routesDir),\n files,\n prerenderedRoutes,\n ...(project.publicAssetBaseUrl === undefined\n ? {}\n : { publicAssetBaseUrl: project.publicAssetBaseUrl }),\n ...(Object.keys(routeServerActionReferences).length === 0\n ? {}\n : { routeServerActionReferences }),\n ...(serverActionManifest.allowedActions.length === 0\n ? {}\n : { serverActionManifest: serverActionManifest.allowedActions }),\n ...(Object.keys(serverModuleClosureFiles).length === 0\n ? {}\n : { serverModuleClosureFiles }),\n ...(Object.keys(serverModuleArtifacts.files).length === 0\n ? {}\n : { serverModuleFiles: serverModuleArtifacts.files }),\n ...(Object.keys(serverModuleArtifacts.requestFiles).length === 0\n ? {}\n : { serverModuleRequestFiles: serverModuleArtifacts.requestFiles }),\n ...(Object.keys(serverModuleArtifacts.renderFiles).length === 0\n ? {}\n : { serverModuleRenderFiles: serverModuleArtifacts.renderFiles }),\n } satisfies BuiltServerManifest;\n const clientManifest = {\n ...(clientManifestAssets.length === 0 ? {} : { assets: clientManifestAssets }),\n ...(publicAssets.length === 0 ? {} : { publicAssets }),\n routes: clientManifestRoutes,\n ...(clientBundle.styles.length === 0 ? {} : { styles: clientBundle.styles }),\n };\n const writeManifestFiles = async () => {\n await Promise.all([\n writeFile(join(serverDir, \"manifest.json\"), JSON.stringify(serverManifest, null, 2)),\n writeFile(join(options.outDir, \"routes.d.ts\"), typedRoutesDeclaration(routes)),\n writeFile(\n join(options.outDir, \"public-assets.d.ts\"),\n typedPublicAssetsDeclaration(publicAssets),\n ),\n writeFile(\n join(serverDir, \"import-policy.json\"),\n JSON.stringify(generatedImportPolicy, null, 2),\n ),\n writeFile(join(clientDir, \"manifest.json\"), JSON.stringify(clientManifest, null, 2)),\n writeFile(\n join(clientDir, \".vite\", \"manifest.json\"),\n JSON.stringify(viteManifestFromClientRoutes(clientManifestRoutes), null, 2),\n ),\n ]);\n };\n if (shouldTrackBuildPhases === false) {\n await writeManifestFiles();\n } else {\n await timeBuildPhase(timingSink, progressSink, \"writeManifests\", writeManifestFiles);\n }\n\n if (shouldTrackBuildPhases === false) {\n await Promise.all([\n ...(shouldBuildAwsLambda ? [writeAwsLambdaHandlerArtifact(options.outDir)] : []),\n ...(shouldBuildCloudflare\n ? [\n writeCloudflareWorkerArtifact({\n cloudflareDir,\n clientManifest,\n modulesFile: cloudflareRouteModules?.registryFile ?? \"route-modules.mjs\",\n serverManifest,\n }),\n ]\n : []),\n ]);\n } else {\n await timeBuildPhase(timingSink, progressSink, \"adapterArtifacts\", async () => {\n await Promise.all([\n ...(shouldBuildAwsLambda ? [writeAwsLambdaHandlerArtifact(options.outDir)] : []),\n ...(shouldBuildCloudflare\n ? [\n writeCloudflareWorkerArtifact({\n cloudflareDir,\n clientManifest,\n modulesFile: cloudflareRouteModules?.registryFile ?? \"route-modules.mjs\",\n serverManifest,\n }),\n ]\n : []),\n ]);\n });\n }\n\n return { routes };\n}\n\nfunction typedRoutesDeclaration(routes: readonly AppRoute[]): string {\n const routePaths = Array.from(\n new Set(\n routes\n .filter((route) => route.kind === \"page\" || route.kind === \"server\")\n .map((route) => route.path),\n ),\n ).sort((left, right) => {\n if (left === \"/\") {\n return -1;\n }\n if (right === \"/\") {\n return 1;\n }\n return left.localeCompare(right);\n });\n const routeUnion = routePaths.map((routePath) => JSON.stringify(routePath)).join(\" | \");\n return [\n `import type { AppRouteLinkHref as MreactAppRouteLinkHref } from \"@reckona/mreact-router\";`,\n ``,\n `export type AppRoutePath = ${routeUnion === \"\" ? \"never\" : routeUnion};`,\n `export type AppRouteHref = MreactAppRouteLinkHref<AppRoutePath>;`,\n ``,\n `declare module \"@reckona/mreact-router/link\" {`,\n ` interface AppRouteDeclarations {`,\n ` readonly path: AppRoutePath;`,\n ` }`,\n `}`,\n ``,\n ].join(\"\\n\");\n}\n\nfunction typedPublicAssetsDeclaration(publicAssets: readonly string[]): string {\n const assetUnion = publicAssets.map((assetPath) => JSON.stringify(assetPath)).join(\" | \");\n\n return [\n `declare module \"mreact:public-assets\" {`,\n ` export type PublicAssetPath = ${assetUnion === \"\" ? \"never\" : assetUnion};`,\n `}`,\n ``,\n ].join(\"\\n\");\n}\n\nasync function timeBuildPhase<T>(\n timingSink: ((timing: BuildAppPhaseTiming) => void) | undefined,\n progressSink: ((event: BuildAppProgressEvent) => void) | undefined,\n phase: BuildAppPhase,\n run: () => Promise<T>,\n): Promise<T> {\n progressSink?.({ kind: \"phase-start\", phase });\n const startedAt = performance.now();\n\n try {\n return await run();\n } finally {\n const ms = roundBuildPhaseMs(performance.now() - startedAt);\n timingSink?.({\n ms,\n phase,\n });\n progressSink?.({\n kind: \"phase-end\",\n ms,\n phase,\n });\n }\n}\n\nfunction roundBuildPhaseMs(value: number): number {\n return Math.round(value * 100) / 100;\n}\n\nasync function mapWithBuildConcurrency<T, R>(\n items: readonly T[],\n map: (item: T, index: number) => Promise<R>,\n concurrency = defaultBuildConcurrency,\n): Promise<R[]> {\n if (items.length === 0) {\n return [];\n }\n\n const workerCount = Math.max(1, Math.min(concurrency, items.length));\n const results: R[] = [];\n results.length = items.length;\n let nextIndex = 0;\n\n async function runWorker(): Promise<void> {\n while (nextIndex < items.length) {\n const index = nextIndex;\n nextIndex += 1;\n results[index] = await map(items[index] as T, index);\n }\n }\n\n await Promise.all(\n Array.from({ length: workerCount }, async () => {\n await runWorker();\n }),\n );\n\n return results;\n}\n\nexport async function __mapWithBuildConcurrencyForTests<T, R>(\n items: readonly T[],\n map: (item: T, index: number) => Promise<R>,\n concurrency?: number,\n): Promise<R[]> {\n return await mapWithBuildConcurrency(items, map, concurrency);\n}\n\nasync function analyzeBuildRouteSources(options: {\n clientRouteInferenceCache: ClientRouteInferenceCache;\n files: Record<string, string>;\n project: ResolvedAppRouterProject;\n projectRoot: string;\n routes: readonly AppRoute[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<BuildSourceAnalysisScope> {\n const byFile = new Map<string, BuildSourceAnalysis>();\n\n for (const [file, source] of Object.entries(options.files)) {\n byFile.set(file, analyzeBuildSource(source, join(options.projectRoot, file)));\n }\n\n const routeAnalyses = await mapWithBuildConcurrency(\n options.routes.filter((route): route is AppRoute & { kind: \"page\" } => route.kind === \"page\"),\n async (route) => {\n const file = relative(options.projectRoot, route.file).split(sep).join(\"/\");\n const source = options.files[file];\n\n if (source === undefined) {\n return undefined;\n }\n\n const routeCode = stripRouteBuildExports(source, route.file);\n const clientInference = await inferClientRouteModule({\n appDir: options.project.routesDir,\n cache: options.clientRouteInferenceCache,\n code: stripRouteClientSource({ code: source, filename: route.file }),\n filename: route.file,\n routePath: route.path,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n return [\n file,\n {\n ...analyzeBuildSource(source, route.file),\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n clientRoute: clientInference.client,\n file,\n route,\n routeCode,\n streamRoute: shouldBuildRouteAsStream({\n filename: file,\n files: options.files,\n projectRoot: options.projectRoot,\n source,\n }),\n },\n ] as const;\n },\n );\n const byRouteFile = new Map<string, BuildRouteSourceAnalysis>();\n\n for (const entry of routeAnalyses) {\n if (entry !== undefined) {\n byRouteFile.set(entry[0], entry[1]);\n }\n }\n\n return { byFile, byRouteFile };\n}\n\nfunction analyzeBuildSource(source: string, filename: string): BuildSourceAnalysis {\n const cachePolicy = routeCachePolicyFromSource(source);\n const sourceHash = hashText(source);\n\n if (!isSourceModuleFile(filename)) {\n return {\n authIncludesClaims: false,\n ...(cachePolicy === undefined ? {} : { cachePolicy }),\n hasGenerateStaticParams: false,\n hasLoader: false,\n hasMetadata: false,\n hasPrerender: false,\n source,\n sourceHash,\n usesRuntimeCacheControl: usesRuntimeCacheControl(source),\n };\n }\n\n return {\n authIncludesClaims: authIncludesClaims(source),\n ...(cachePolicy === undefined ? {} : { cachePolicy }),\n hasGenerateStaticParams: hasGenerateStaticParamsExport(source, filename),\n hasLoader: hasLoaderExport(source, filename),\n hasMetadata: hasMetadataExport(source),\n hasPrerender: hasPrerenderExport(source, filename),\n source,\n sourceHash,\n usesRuntimeCacheControl: usesRuntimeCacheControl(source),\n };\n}\n\nfunction buildSourceAnalysisForFile(\n sourceAnalysis: BuildSourceAnalysisScope,\n projectRoot: string,\n file: string,\n): BuildSourceAnalysis | undefined {\n return sourceAnalysis.byFile.get(relative(projectRoot, file).split(sep).join(\"/\"));\n}\n\nfunction buildServerModuleClosureManifest(\n serverModules: Record<string, BuiltServerModuleArtifact>,\n sourceAnalysis: BuildSourceAnalysisScope,\n): Record<string, string[]> {\n const sourceFiles = new Set(sourceAnalysis.byFile.keys());\n const closureFiles: Record<string, string[]> = {};\n\n for (const file of Object.keys(serverModules).sort()) {\n const closure: string[] = [];\n collectManifestServerModuleClosureFiles(file, sourceAnalysis, sourceFiles, new Set(), closure);\n\n if (closure.length > 0) {\n closureFiles[file] = closure;\n }\n }\n\n return closureFiles;\n}\n\nfunction collectManifestServerModuleClosureFiles(\n file: string,\n sourceAnalysis: BuildSourceAnalysisScope,\n sourceFiles: ReadonlySet<string>,\n seen: Set<string>,\n closure: string[],\n): void {\n if (seen.has(file)) {\n return;\n }\n seen.add(file);\n closure.push(file);\n\n const source = sourceAnalysis.byFile.get(file)?.source;\n if (source === undefined) {\n return;\n }\n\n for (const specifier of localManifestServerModuleSpecifiers(source)) {\n const resolved = resolveManifestLocalServerSourceImport(file, specifier, sourceFiles);\n if (resolved !== undefined) {\n collectManifestServerModuleClosureFiles(\n resolved,\n sourceAnalysis,\n sourceFiles,\n seen,\n closure,\n );\n }\n }\n}\n\nconst localManifestServerModuleImportPattern =\n /\\b(?:import|export)\\s+(?:type\\s+)?(?:[^\"']*?\\s+from\\s*)?[\"'](?<source>\\.{1,2}\\/[^\"']+)[\"']/g;\n\nfunction localManifestServerModuleSpecifiers(code: string): string[] {\n const specifiers = new Set<string>();\n localManifestServerModuleImportPattern.lastIndex = 0;\n\n for (const match of code.matchAll(localManifestServerModuleImportPattern)) {\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\nfunction resolveManifestLocalServerSourceImport(\n fromFile: string,\n specifier: string,\n sourceFiles: ReadonlySet<string>,\n): string | undefined {\n const base = resolveManifestRelativePath(manifestDirname(fromFile), specifier);\n\n for (const candidate of manifestLocalServerSourceImportCandidates(base)) {\n if (sourceFiles.has(candidate)) {\n return candidate;\n }\n }\n\n return undefined;\n}\n\nfunction manifestLocalServerSourceImportCandidates(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 `${base}/index.ts`,\n `${base}/index.tsx`,\n `${base}/index.mreact.tsx`,\n );\n }\n\n return candidates;\n}\n\nfunction manifestDirname(file: string): string {\n const index = file.lastIndexOf(\"/\");\n\n return index === -1 ? \"\" : file.slice(0, index);\n}\n\nfunction resolveManifestRelativePath(fromDir: string, specifier: string): string {\n const segments = fromDir === \"\" ? [] : fromDir.split(\"/\");\n\n for (const segment of specifier.split(\"/\")) {\n if (segment === \"\" || segment === \".\") {\n continue;\n }\n\n if (segment === \"..\") {\n segments.pop();\n continue;\n }\n\n segments.push(segment);\n }\n\n return segments.join(\"/\");\n}\n\nfunction canUseBuildServerActionPlaceholders(\n references: readonly BuiltServerActionExpressionReference[],\n): boolean {\n return references.every(\n (reference) =>\n reference.expression === reference.exportName &&\n /^[A-Za-z_$][\\w$]*$/u.test(reference.expression),\n );\n}\n\nasync function buildPublicAssetManifest(\n project: ResolvedAppRouterProject,\n clientDir: string,\n): Promise<string[]> {\n const [publicAssetPaths, appConventionPublicAssets] = await Promise.all([\n collectPublicAssetPaths(project.publicDir),\n copyAppFileConventionAssets(project.routesDir, clientDir),\n copyPublicAssets(project.publicDir, join(clientDir, \"public\")),\n copyPublicAssets(project.publicDir, clientDir),\n ]);\n\n return [...new Set([...publicAssetPaths, ...appConventionPublicAssets])].sort();\n}\n\nconst COMPAT_VENDOR_PLACEHOLDER_IMPORT_PATTERN = /([\"'])mreact-compat-vendor:([\\w-]+)\\1/gu;\n\nfunction rewriteCompatVendorPlaceholderImports(code: string): string {\n if (!code.includes(COMPAT_VENDOR_PLACEHOLDER_PREFIX)) {\n return code;\n }\n\n // Module files live in server-modules/code/, vendor chunks in\n // server-modules/chunks/, so the relative path is stable.\n return code.replace(\n COMPAT_VENDOR_PLACEHOLDER_IMPORT_PATTERN,\n (_match, quote: string, entry: string) => `${quote}../chunks/compat.${entry}.mjs${quote}`,\n );\n}\n\nfunction collectCompatVendorEntryUsage(\n artifacts: ReadonlyArray<readonly [string, BuiltServerModuleArtifact]>,\n): ReadonlySet<string> {\n const usedEntries = new Set<string>();\n\n for (const [, artifact] of artifacts) {\n for (const output of [artifact.string, artifact.stream]) {\n const bundleCode = output?.bundleCode;\n\n if (bundleCode === undefined || !bundleCode.includes(COMPAT_VENDOR_PLACEHOLDER_PREFIX)) {\n continue;\n }\n\n for (const match of bundleCode.matchAll(COMPAT_VENDOR_PLACEHOLDER_IMPORT_PATTERN)) {\n const entry = match[2];\n\n if (entry !== undefined) {\n usedEntries.add(entry);\n }\n }\n }\n }\n\n return usedEntries;\n}\n\n// Bundles the react-compat server runtime once per build into shared chunks\n// under server-modules/chunks/ so per-route server modules can import it via\n// relative paths instead of inlining their own copy.\nasync function writeCompatVendorChunks(\n serverDir: string,\n usedEntries: ReadonlySet<string>,\n): Promise<void> {\n const entryFiles = resolveCompatVendorEntryFiles(serverDir);\n const entries = await Promise.all(\n [...entryFiles]\n .filter(([name]) => usedEntries.has(name))\n .map(async ([name, filename]) => ({\n code: await readFile(filename, \"utf8\"),\n filename,\n name,\n })),\n );\n const firstEntry = entries[0];\n\n if (firstEntry === undefined) {\n return;\n }\n\n const output = await bundleRouterModules({\n chunkFileNames: \"compat-shared.[hash].mjs\",\n entries,\n entryFileNames: \"compat.[name].mjs\",\n platform: \"node\",\n root: dirname(firstEntry.filename),\n });\n const chunksDir = join(serverDir, \"server-modules\", \"chunks\");\n\n await mkdir(chunksDir, { recursive: true });\n await Promise.all(\n output.chunks.map((chunk) => writeFile(join(chunksDir, chunk.fileName), chunk.code)),\n );\n}\n\nasync function writeServerModuleArtifactFiles(\n serverDir: string,\n serverModules: Record<string, BuiltServerModuleArtifact>,\n portableRuntimePackages: readonly string[] = [],\n sharedChunks: readonly SharedServerModuleChunk[] = [],\n): Promise<{\n files: Record<string, string>;\n renderFiles: Record<string, string>;\n requestFiles: Record<string, string>;\n}> {\n const files: Record<string, string> = {};\n const renderFiles: Record<string, string> = {};\n const requestFiles: Record<string, string> = {};\n const modulesDir = join(serverDir, \"server-modules\");\n const artifactEntries = Object.entries(serverModules);\n type WrittenServerModuleArtifact =\n | { artifactFile: string; file: string }\n | { file: string; renderArtifactFile: string; requestArtifactFile: string };\n\n await Promise.all([\n mkdir(modulesDir, { recursive: true }),\n mkdir(join(modulesDir, \"code\"), { recursive: true }),\n mkdir(join(modulesDir, \"request\"), { recursive: true }),\n mkdir(join(modulesDir, \"render\"), { recursive: true }),\n ]);\n\n if (sharedChunks.length > 0) {\n // Shared request chunks are referenced from externalized module code via\n // \"./chunks/...\" imports, so they live next to server-modules/code files.\n await mkdir(join(modulesDir, \"code\", \"chunks\"), { recursive: true });\n await Promise.all(\n sharedChunks.map((chunk) =>\n writeFile(\n join(modulesDir, \"code\", chunk.fileName),\n rewriteCompatVendorPlaceholderImports(\n rewritePortableRuntimePackageImports(chunk.code, portableRuntimePackages),\n ),\n ),\n ),\n );\n }\n\n const usedCompatVendorEntries = collectCompatVendorEntryUsage(artifactEntries);\n\n if (usedCompatVendorEntries.size > 0) {\n await writeCompatVendorChunks(serverDir, usedCompatVendorEntries);\n }\n\n const writtenArtifacts = await mapWithBuildConcurrency<\n [string, BuiltServerModuleArtifact],\n WrittenServerModuleArtifact\n >(\n artifactEntries,\n async ([file, artifact]) => {\n const externalized = await externalizeServerModuleArtifactCode(\n serverDir,\n artifact,\n portableRuntimePackages,\n );\n const requestArtifact = requestServerModuleArtifact(externalized);\n const renderArtifact = renderServerModuleArtifact(externalized);\n\n if (Object.keys(requestArtifact).length > 0 && Object.keys(renderArtifact).length > 0) {\n const requestJson = JSON.stringify(requestArtifact);\n const requestArtifactFile = `server-modules/request/${hashText(`${file}\\0request\\0${requestJson}`).slice(0, 16)}.json`;\n await writeFile(join(serverDir, requestArtifactFile), requestJson);\n\n const renderJson = JSON.stringify(renderArtifact);\n const renderArtifactFile = `server-modules/render/${hashText(`${file}\\0render\\0${renderJson}`).slice(0, 16)}.json`;\n await writeFile(join(serverDir, renderArtifactFile), renderJson);\n\n return { file, renderArtifactFile, requestArtifactFile };\n }\n\n const json = JSON.stringify(externalized);\n const artifactFile = `server-modules/${hashText(`${file}\\0${json}`).slice(0, 16)}.json`;\n\n await writeFile(join(serverDir, artifactFile), json);\n return { artifactFile, file };\n },\n serverArtifactFilesystemConcurrency,\n );\n\n for (const artifact of writtenArtifacts) {\n if (\"requestArtifactFile\" in artifact) {\n requestFiles[artifact.file] = artifact.requestArtifactFile;\n renderFiles[artifact.file] = artifact.renderArtifactFile;\n continue;\n }\n\n files[artifact.file] = artifact.artifactFile;\n }\n\n return { files, renderFiles, requestFiles };\n}\n\nexport async function __writeServerModuleArtifactFilesForTests(\n serverDir: string,\n serverModules: Record<string, BuiltServerModuleArtifact>,\n): Promise<{\n files: Record<string, string>;\n renderFiles: Record<string, string>;\n requestFiles: Record<string, string>;\n}> {\n return await writeServerModuleArtifactFiles(serverDir, serverModules);\n}\n\nasync function externalizeServerModuleArtifactCode(\n serverDir: string,\n artifact: BuiltServerModuleArtifact,\n portableRuntimePackages: readonly string[],\n): Promise<BuiltServerModuleArtifact> {\n return {\n ...(artifact.analysis === undefined ? {} : { analysis: artifact.analysis }),\n ...(artifact.loader === undefined\n ? {}\n : {\n loader: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.loader,\n \"code\",\n portableRuntimePackages,\n ),\n }),\n ...(artifact.routeMetadata === undefined\n ? {}\n : {\n routeMetadata: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.routeMetadata,\n \"code\",\n portableRuntimePackages,\n ),\n }),\n ...(artifact.request === undefined\n ? {}\n : {\n request: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.request,\n \"code\",\n portableRuntimePackages,\n ),\n }),\n ...(artifact.stream === undefined\n ? {}\n : {\n stream: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.stream,\n \"bundle\",\n portableRuntimePackages,\n ),\n }),\n ...(artifact.string === undefined\n ? {}\n : {\n string: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.string,\n \"bundle\",\n portableRuntimePackages,\n ),\n }),\n };\n}\n\nasync function externalizeServerModuleOutputCode(\n serverDir: string,\n output: BuiltServerModuleOutput,\n kind: \"bundle\" | \"code\",\n portableRuntimePackages: readonly string[],\n): Promise<BuiltServerModuleOutput> {\n const sourceCode = kind === \"bundle\" ? output.bundleCode : output.code;\n const moduleCode =\n sourceCode === undefined\n ? undefined\n : rewriteCompatVendorPlaceholderImports(\n rewritePortableRuntimePackageImports(sourceCode, portableRuntimePackages),\n );\n\n if (moduleCode === undefined || moduleCode.length === 0) {\n return output;\n }\n\n const moduleFile = `server-modules/code/${hashText(moduleCode).slice(0, 16)}.mjs`;\n await writeFile(join(serverDir, moduleFile), moduleCode);\n\n return {\n code: kind === \"code\" ? \"\" : output.code,\n ...(output.metadata === undefined ? {} : { metadata: output.metadata }),\n moduleFile,\n sourceHash: output.sourceHash,\n };\n}\n\nfunction rewritePortableRuntimePackageImports(\n code: string,\n runtimePackages: readonly string[],\n): string {\n if (runtimePackages.length === 0 || !code.includes(\"file://\")) {\n return code;\n }\n\n return code.replace(\n /\\b(from\\s+|import\\s*)[\"'](?<specifier>file:\\/\\/[^\"']+)[\"']/gu,\n (match, prefix: string, specifier: string | undefined) => {\n const packageName =\n specifier === undefined ? undefined : runtimePackageForFileUrl(specifier, runtimePackages);\n\n return packageName === undefined ? match : `${prefix}\"${packageName}\"`;\n },\n );\n}\n\nfunction runtimePackageForFileUrl(\n specifier: string,\n runtimePackages: readonly string[],\n): string | undefined {\n let filePath: string;\n\n try {\n filePath = fileURLToPath(specifier).split(sep).join(\"/\");\n } catch {\n return undefined;\n }\n\n return [...runtimePackages]\n .sort((left, right) => right.length - left.length)\n .find((packageName) => filePath.includes(`/node_modules/${packageName}/`));\n}\n\nfunction requestServerModuleArtifact(\n artifact: BuiltServerModuleArtifact,\n): BuiltServerModuleArtifact {\n return {\n ...(artifact.analysis === undefined ? {} : { analysis: artifact.analysis }),\n ...(artifact.loader === undefined ? {} : { loader: artifact.loader }),\n ...(artifact.routeMetadata === undefined ? {} : { routeMetadata: artifact.routeMetadata }),\n ...(artifact.request === undefined ? {} : { request: artifact.request }),\n };\n}\n\nfunction renderServerModuleArtifact(\n artifact: BuiltServerModuleArtifact,\n): BuiltServerModuleArtifact {\n return {\n ...(artifact.stream === undefined ? {} : { stream: artifact.stream }),\n ...(artifact.string === undefined ? {} : { string: artifact.string }),\n };\n}\n\nconst nodeBuiltinPackages = new Set(builtinModules.flatMap((name) => [name, `node:${name}`]));\nconst frameworkRuntimePackages = new Set([\n \"@reckona/mreact\",\n \"@reckona/mreact-auth\",\n \"@reckona/mreact-compiler\",\n \"@reckona/mreact-query\",\n \"@reckona/mreact-reactive-core\",\n \"@reckona/mreact-router\",\n \"@reckona/mreact-server\",\n]);\nconst maxRuntimePackageManifestReads = 1000;\n\nasync function buildGeneratedImportPolicy(options: {\n files: Record<string, string>;\n projectRoot: string;\n routes: readonly AppRoute[];\n routesDir: string;\n}): Promise<BuiltImportPolicyArtifact> {\n const routePackages = new Map<string, string[]>();\n const allPackages = new Set<string>();\n const relativeRoutesDir = relative(options.projectRoot, options.routesDir);\n const packageJsonLookupCache = new Map<\n string,\n Promise<(RuntimePackageManifest & { packageJsonPath: string }) | undefined>\n >();\n\n for (const route of options.routes) {\n const file = relative(options.projectRoot, route.file);\n const packages = await collectRuntimePackagesForFile({\n file,\n files: options.files,\n packageJsonLookupCache,\n projectRoot: options.projectRoot,\n seen: new Set(),\n });\n\n if (packages.length > 0) {\n routePackages.set(route.path, packages);\n for (const packageName of packages) {\n allPackages.add(packageName);\n }\n }\n }\n\n const middlewareFile = [\"middleware.ts\", \"middleware.mreact.ts\"]\n .map((file) => (relativeRoutesDir === \"\" ? file : `${relativeRoutesDir}/${file}`))\n .find((file) => options.files[file] !== undefined);\n\n if (middlewareFile !== undefined) {\n const packages = await collectRuntimePackagesForFile({\n file: middlewareFile,\n files: options.files,\n packageJsonLookupCache,\n projectRoot: options.projectRoot,\n seen: new Set(),\n });\n\n if (packages.length > 0) {\n routePackages.set(\"middleware\", packages);\n for (const packageName of packages) {\n allPackages.add(packageName);\n }\n }\n }\n\n return {\n byRoute: Object.fromEntries(\n [...routePackages.entries()].sort(([left], [right]) => left.localeCompare(right)),\n ),\n runtimePackages: [...allPackages].sort(),\n version: 1,\n };\n}\n\nasync function collectRuntimePackagesForFile(options: {\n file: string;\n files: Record<string, string>;\n packageJsonLookupCache: RuntimePackageManifestCache;\n projectRoot: string;\n seen: Set<string>;\n}): Promise<string[]> {\n if (options.seen.has(options.file)) {\n return [];\n }\n\n const source = options.files[options.file];\n if (\n source === undefined ||\n hasModuleDirective({\n code: source,\n directive: \"use client\",\n filename: join(options.projectRoot, options.file),\n })\n ) {\n return [];\n }\n\n options.seen.add(options.file);\n const packages = new Set<string>();\n\n for (const reference of collectStaticImportReferences({\n code: source,\n filename: join(options.projectRoot, options.file),\n })) {\n if (isRuntimePackageSpecifier(reference.source)) {\n const packageName = runtimePackageNameForSpecifier(reference.source);\n packages.add(packageName);\n for (const optionalPackageName of await collectRuntimeOptionalPackages({\n packageJsonLookupCache: options.packageJsonLookupCache,\n packageName,\n projectRoot: options.projectRoot,\n })) {\n packages.add(optionalPackageName);\n }\n continue;\n }\n\n const localFile = resolveBuildLocalSourceImport(options.files, options.file, reference.source);\n if (localFile === undefined) {\n continue;\n }\n\n for (const packageName of await collectRuntimePackagesForFile({\n ...options,\n file: localFile,\n })) {\n packages.add(packageName);\n }\n }\n\n options.seen.delete(options.file);\n\n return [...packages].sort();\n}\n\ninterface RuntimePackageManifest {\n dependencies?: Record<string, unknown> | undefined;\n optionalDependencies?: Record<string, unknown> | undefined;\n}\n\ntype RuntimePackageManifestCache = Map<\n string,\n Promise<(RuntimePackageManifest & { packageJsonPath: string }) | undefined>\n>;\n\nasync function collectRuntimeOptionalPackages(options: {\n packageJsonLookupCache: RuntimePackageManifestCache;\n packageName: string;\n projectRoot: string;\n}): Promise<string[]> {\n const optionalPackages = new Set<string>();\n const seenPackageJson = new Set<string>();\n const queue: Array<{ packageName: string; optional: boolean; startDir: string }> = [\n { packageName: options.packageName, optional: false, startDir: options.projectRoot },\n ];\n let stoppedAtManifestReadCap = false;\n\n for (let index = 0; index < queue.length; index += 1) {\n if (seenPackageJson.size >= maxRuntimePackageManifestReads) {\n stoppedAtManifestReadCap = true;\n break;\n }\n\n const item = queue[index];\n if (item === undefined || !isValidRuntimePackageName(item.packageName)) {\n continue;\n }\n\n const manifest = await readRuntimePackageManifest({\n cache: options.packageJsonLookupCache,\n packageName: item.packageName,\n startDir: item.startDir,\n });\n\n if (manifest === undefined || seenPackageJson.has(manifest.packageJsonPath)) {\n continue;\n }\n\n seenPackageJson.add(manifest.packageJsonPath);\n if (item.optional && isRuntimePackageName(item.packageName)) {\n optionalPackages.add(item.packageName);\n }\n\n const packageDir = dirname(manifest.packageJsonPath);\n for (const dependencyName of Object.keys(manifest.dependencies ?? {})) {\n if (isValidRuntimePackageName(dependencyName)) {\n queue.push({ packageName: dependencyName, optional: false, startDir: packageDir });\n }\n }\n\n for (const optionalDependencyName of Object.keys(manifest.optionalDependencies ?? {})) {\n if (isValidRuntimePackageName(optionalDependencyName)) {\n queue.push({ packageName: optionalDependencyName, optional: true, startDir: packageDir });\n }\n }\n }\n\n if (stoppedAtManifestReadCap) {\n console.warn(\n [\n \"MR_RUNTIME_PACKAGE_MANIFEST_SCAN_LIMIT:\",\n `stopped scanning optional runtime package manifests after ${maxRuntimePackageManifestReads} files`,\n `while collecting transitive optional dependencies for ${options.packageName}.`,\n \"Generated import-policy.json may omit deeper optional runtime packages.\",\n ].join(\" \"),\n );\n }\n\n return [...optionalPackages].sort();\n}\n\nasync function readRuntimePackageManifest(options: {\n cache: RuntimePackageManifestCache;\n packageName: string;\n startDir: string;\n}): Promise<(RuntimePackageManifest & { packageJsonPath: string }) | undefined> {\n const key = `${options.startDir}\\0${options.packageName}`;\n const cached = options.cache.get(key);\n const manifest =\n cached ??\n findRuntimePackageJson(options.packageName, options.startDir).then(async (packageJsonPath) => {\n if (packageJsonPath === undefined) {\n return undefined;\n }\n\n try {\n const json = JSON.parse(await readFile(packageJsonPath, \"utf8\")) as RuntimePackageManifest;\n return { ...json, packageJsonPath };\n } catch {\n return undefined;\n }\n });\n\n if (cached === undefined) {\n options.cache.set(key, manifest);\n }\n\n return (await manifest) as (RuntimePackageManifest & { packageJsonPath: string }) | undefined;\n}\n\nasync function findRuntimePackageJson(\n packageName: string,\n startDir: string,\n): Promise<string | undefined> {\n if (!isValidRuntimePackageName(packageName)) {\n return undefined;\n }\n\n let current = startDir;\n\n while (true) {\n const candidate = join(current, \"node_modules\", ...packageName.split(\"/\"), \"package.json\");\n try {\n if ((await stat(candidate)).isFile()) {\n return candidate;\n }\n } catch {\n // Keep walking toward the filesystem root.\n }\n\n const parent = dirname(current);\n if (parent === current) {\n return undefined;\n }\n current = parent;\n }\n}\n\nfunction isRuntimePackageSpecifier(specifier: string): boolean {\n if (\n specifier.startsWith(\".\") ||\n specifier.startsWith(\"/\") ||\n /^[A-Za-z][A-Za-z0-9+.-]*:/.test(specifier)\n ) {\n return false;\n }\n\n const packageName = runtimePackageNameForSpecifier(specifier);\n return !nodeBuiltinPackages.has(specifier) && isRuntimePackageName(packageName);\n}\n\nfunction isRuntimePackageName(packageName: string): boolean {\n return !frameworkRuntimePackages.has(packageName);\n}\n\nfunction isValidRuntimePackageName(packageName: string): boolean {\n return (\n /^(?:@[a-z0-9][a-z0-9._~-]*\\/)?[a-z0-9][a-z0-9._~-]*$/u.test(packageName) &&\n !packageName.includes(\"..\")\n );\n}\n\nfunction runtimePackageNameForSpecifier(specifier: string): string {\n if (!specifier.startsWith(\"@\")) {\n return specifier.split(\"/\")[0] ?? specifier;\n }\n\n const [scope, name] = specifier.split(\"/\");\n return scope !== undefined && name !== undefined ? `${scope}/${name}` : specifier;\n}\n\nasync function collectBuildServerActionManifest(options: {\n files: Record<string, string>;\n projectRoot: string;\n routes: readonly AppRoute[];\n routesDir: string;\n}): Promise<{\n allowedActions: BuiltServerActionReference[];\n routeReferences: Map<string, BuiltServerActionExpressionReference[]>;\n}> {\n const entries = new Map<string, BuiltServerActionReference>();\n const routeReferences = new Map<string, BuiltServerActionExpressionReference[]>();\n const relativeRoutesDir = relative(options.projectRoot, options.routesDir);\n const routeSourceFiles = new Set(\n options.routes\n .filter((route) => route.kind === \"page\")\n .map((route) => relative(options.projectRoot, route.file).split(sep).join(\"/\")),\n );\n const inferredRouteReferences: Array<{ code: string; file: string }> = [];\n\n for (const [file, code] of Object.entries(options.files)) {\n if (!isAppRelativeFile(file, relativeRoutesDir) || !isSourceModuleFile(file)) {\n continue;\n }\n\n if (hasModuleDirective({ code, directive: \"use server\", filename: file })) {\n const moduleId = moduleIdForBuildFile(file, relativeRoutesDir);\n\n for (const exportName of collectTopLevelValueExportNames({ code, filename: file })) {\n entries.set(`${moduleId}#${exportName}`, { moduleId, exportName });\n }\n }\n\n if (routeSourceFiles.has(file)) {\n inferredRouteReferences.push({ code, file });\n }\n }\n\n const inferredRouteResults = await mapWithBuildConcurrency(\n inferredRouteReferences,\n async ({ code, file }) => ({\n file,\n inference: await collectBuildInferredServerActionReferences({\n file,\n files: options.files,\n relativeRoutesDir,\n source: code,\n }),\n }),\n );\n\n for (const { file, inference } of inferredRouteResults) {\n for (const diagnostic of inference.diagnostics) {\n console.warn(formatServerActionInferenceDiagnostic(diagnostic));\n }\n\n routeReferences.set(file, inference.references);\n\n for (const reference of inference.references) {\n const key = `${reference.moduleId}#${reference.exportName}`;\n\n if (!entries.has(key)) {\n entries.set(key, {\n exportName: reference.exportName,\n inferred: reference.inferred,\n moduleId: reference.moduleId,\n });\n }\n }\n }\n\n return {\n allowedActions: [...entries.values()].sort((left, right) =>\n left.moduleId === right.moduleId\n ? left.exportName.localeCompare(right.exportName)\n : left.moduleId.localeCompare(right.moduleId),\n ),\n routeReferences,\n };\n}\n\nfunction collectBuildInferredServerActionReferences(options: {\n file: string;\n files: Record<string, string>;\n relativeRoutesDir: string;\n source: string;\n}): Promise<{\n diagnostics: { code: string; message: string }[];\n references: BuiltServerActionExpressionReference[];\n}> {\n return collectBuildInferredServerActions({\n file: options.file,\n files: options.files,\n relativeRoutesDir: options.relativeRoutesDir,\n resolveSourceImport: (importer, source) =>\n resolveBuildLocalSourceImport(options.files, importer, source),\n source: options.source,\n });\n}\n\nfunction formatServerActionInferenceDiagnostic(diagnostic: {\n code: string;\n message: string;\n}): string {\n return `${diagnostic.code}: ${diagnostic.message}`;\n}\n\nfunction isSourceModuleFile(file: string): boolean {\n return /\\.(?:mreact\\.tsx|tsx?|jsx?|mjs|mts|cjs|cts)$/.test(file);\n}\n\nfunction isAppRelativeFile(file: string, relativeRoutesDir: string): boolean {\n return (\n relativeRoutesDir === \"\" ||\n file === relativeRoutesDir ||\n file.startsWith(`${relativeRoutesDir}/`)\n );\n}\n\nfunction moduleIdForBuildFile(file: string, relativeRoutesDir: string): string {\n return relativeRoutesDir === \"\" ? file : file.slice(relativeRoutesDir.length + 1);\n}\n\nasync function copyPublicAssets(publicDir: string, outDir: string): Promise<void> {\n if (!(await isPublicAssetDirectory(publicDir))) {\n return;\n }\n\n await copyPublicAssetsInner(publicDir, \"\", outDir);\n}\n\nasync function collectPublicAssetPaths(publicDir: string): Promise<string[]> {\n if (!(await isPublicAssetDirectory(publicDir))) {\n return [];\n }\n\n const paths: string[] = [];\n await collectPublicAssetPathsInner(publicDir, \"\", paths);\n\n return paths.sort();\n}\n\nasync function isPublicAssetDirectory(publicDir: string): Promise<boolean> {\n try {\n const info = await lstat(publicDir);\n\n return info.isDirectory();\n } catch (error) {\n if (isNodeError(error) && error.code === \"ENOENT\") {\n return false;\n }\n\n throw error;\n }\n}\n\nasync function copyAppFileConventionAssets(appDir: string, outDir: string): Promise<string[]> {\n let entries: Dirent[];\n try {\n entries = await readdir(appDir, { withFileTypes: true });\n } catch (error) {\n if (isNodeError(error) && error.code === \"ENOENT\") {\n return [];\n }\n\n throw error;\n }\n\n const paths: string[] = [];\n await mkdir(outDir, { recursive: true });\n\n for (const entry of entries) {\n if (!entry.isFile()) {\n continue;\n }\n\n const convention = appFileConventionForRootFilename(entry.name);\n if (convention === undefined || convention.kind !== \"asset\") {\n continue;\n }\n\n const outputPath = convention.path.startsWith(\"/\") ? convention.path.slice(1) : convention.path;\n await copyFile(join(appDir, entry.name), join(outDir, outputPath));\n paths.push(convention.path);\n }\n\n return paths.sort();\n}\n\nasync function collectPublicAssetPathsInner(\n publicDir: string,\n relativeDir: string,\n paths: string[],\n): Promise<void> {\n const entries = await readdir(join(publicDir, relativeDir), { withFileTypes: true });\n\n for (const entry of entries) {\n const relativePath = relativeDir === \"\" ? entry.name : `${relativeDir}/${entry.name}`;\n const publicPath = `/${relativePath}`;\n\n if (isReservedPublicAssetPath(publicPath)) {\n continue;\n }\n\n if (entry.isDirectory()) {\n await collectPublicAssetPathsInner(publicDir, relativePath, paths);\n continue;\n }\n\n if (entry.isFile()) {\n paths.push(publicPath);\n }\n }\n}\n\nasync function copyPublicAssetsInner(\n publicDir: string,\n relativeDir: string,\n outDir: string,\n): Promise<void> {\n const entries = await readdir(join(publicDir, relativeDir), { withFileTypes: true });\n\n for (const entry of entries) {\n const relativePath = relativeDir === \"\" ? entry.name : `${relativeDir}/${entry.name}`;\n\n if (isReservedPublicAssetPath(`/${relativePath}`)) {\n continue;\n }\n\n if (entry.isDirectory()) {\n await copyPublicAssetsInner(publicDir, relativePath, outDir);\n continue;\n }\n\n if (entry.isFile()) {\n const destination = join(outDir, relativePath);\n await mkdir(dirname(destination), { recursive: true });\n await copyFile(join(publicDir, relativePath), destination);\n }\n }\n}\n\nfunction isReservedPublicAssetPath(pathname: string): boolean {\n return pathname === \"/_mreact\" || pathname.startsWith(\"/_mreact/\");\n}\n\nfunction isNodeError(error: unknown): error is NodeJS.ErrnoException {\n return error instanceof Error && \"code\" in error;\n}\n\nasync function prerenderStaticRoutes(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n clientRoutes: readonly ClientRouteManifestEntry[];\n define?: UserConfig[\"define\"] | undefined;\n project: ResolvedAppRouterProject;\n routes: readonly AppRoute[];\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Record<string, BuiltPrerenderedRoute>> {\n const clientScripts = new Map(\n options.clientRoutes.flatMap((route) =>\n route.client && route.script !== undefined ? [[route.path, route.script]] : [],\n ),\n );\n const clientStyles = new Map(\n options.clientRoutes.flatMap((route) =>\n route.css !== undefined && route.css.length > 0 ? [[route.path, route.css]] : [],\n ),\n );\n const navigationScripts = new Map(\n options.clientRoutes.flatMap((route) =>\n route.navigation === true && route.navigationScript !== undefined\n ? [[route.path, route.navigationScript]]\n : [],\n ),\n );\n const prerendered: Record<string, BuiltPrerenderedRoute> = {};\n const importPolicy = {\n allowedPackages: await readDeclaredProjectPackages(options.project.projectRoot),\n allowedSourceDirs: options.project.allowedSourceDirs,\n projectRoot: options.project.projectRoot,\n } satisfies AppRouterImportPolicy;\n const serverModuleMap = new Map(\n Object.entries(options.serverModules).map(([file, artifact]) => [\n join(options.project.projectRoot, file),\n artifact,\n ]),\n );\n const serverModuleCacheVersion = buildPrerenderServerModuleCacheVersion({\n define: options.define,\n project: options.project,\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n\n const prerenderedEntries = await mapWithBuildConcurrency(\n options.routes.filter((route): route is AppRoute & { kind: \"page\" } => route.kind === \"page\"),\n async (route) => {\n const routeFile = relative(options.project.projectRoot, route.file).split(sep).join(\"/\");\n const analysis = options.sourceAnalysis.byRouteFile.get(routeFile);\n\n if (analysis === undefined || !analysis.hasPrerender) {\n return [] as Array<[string, BuiltPrerenderedRoute]>;\n }\n\n const entries: Array<[string, BuiltPrerenderedRoute]> = [];\n for (const pathname of await prerenderPathsForRoute(route, analysis, options.vitePlugins)) {\n const response = await renderAppRequest({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n clientScripts,\n clientStyles,\n define: options.define,\n importPolicy,\n navigationScripts,\n request: new Request(`http://mreact.local${pathname}`),\n serverModuleCacheVersion,\n serverModules: serverModuleMap,\n vitePlugins: options.vitePlugins,\n });\n const headers: Record<string, string> = {};\n\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n entries.push([\n pathname,\n {\n headers,\n html: await response.text(),\n status: response.status,\n },\n ]);\n }\n return entries;\n },\n );\n\n for (const entries of prerenderedEntries) {\n for (const [pathname, route] of entries) {\n prerendered[pathname] = route;\n }\n }\n\n return prerendered;\n}\n\nfunction buildPrerenderServerModuleCacheVersion(options: {\n define?: UserConfig[\"define\"] | undefined;\n project: ResolvedAppRouterProject;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): string {\n const sourceHashes = Array.from(options.sourceAnalysis.byFile.entries())\n .map(([file, analysis]) => [file, analysis.sourceHash] as const)\n .sort(([left], [right]) => left.localeCompare(right));\n\n return `build-prerender:${hashText(\n JSON.stringify({\n allowedSourceDirs: [...options.project.allowedSourceDirs].sort(),\n projectRoot: options.project.projectRoot,\n routesDir: options.project.routesDir,\n sourceHashes,\n viteDefine: viteDefineCacheKey(options.define),\n vitePlugins: vitePluginsCacheKey(options.vitePlugins),\n }),\n ).slice(0, 16)}`;\n}\n\nasync function prerenderPathsForRoute(\n route: AppRoute,\n analysis: BuildRouteSourceAnalysis,\n vitePlugins: readonly PluginOption[] | undefined,\n): Promise<string[]> {\n if (route.segments.every((segment) => segment.kind === \"static\")) {\n return [route.path];\n }\n\n if (!analysis.hasGenerateStaticParams) {\n return [];\n }\n\n const module = await importAppRouterSourceModule<{\n generateStaticParams?: () => Iterable<StaticParams> | PromiseLike<Iterable<StaticParams>>;\n }>({\n code: analysis.source,\n label: `generate-static-params:${route.file}`,\n resolveDir: dirname(route.file),\n sourcefile: route.file,\n vitePlugins,\n });\n const params = await module.generateStaticParams?.();\n\n if (params === undefined) {\n return [];\n }\n\n return Array.from(params, (entry) => routePathFromParams(route, entry));\n}\n\nfunction routePathFromParams(route: AppRoute, params: StaticParams): string {\n const parts = route.segments.flatMap((segment) => {\n if (segment.kind === \"static\") {\n return [segment.value];\n }\n\n const value = params[segment.name];\n\n if (value === undefined) {\n throw new Error(`${route.file}: generateStaticParams() is missing \"${segment.name}\".`);\n }\n\n if (segment.kind === \"catch-all\") {\n const values = Array.isArray(value) ? value : String(value).split(\"/\");\n\n return values.map((part) => encodeURIComponent(String(part)));\n }\n\n return [encodeURIComponent(String(value))];\n });\n\n return `/${parts.join(\"/\")}`;\n}\n\nasync function buildServerModuleArtifacts(options: {\n bundleRequestRuntimePackages: boolean;\n bundleCache: Map<string, Promise<RouterBundleOutput>>;\n cacheDir?: string | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n define?: UserConfig[\"define\"] | undefined;\n files: Record<string, string>;\n prebundleServerComponents: boolean;\n project: ResolvedAppRouterProject;\n projectRoot: string;\n routes: readonly AppRoute[];\n serverActionReferencesByFile: ReadonlyMap<string, readonly BuiltServerActionExpressionReference[]>;\n sourceAnalysis: BuildSourceAnalysisScope;\n serverTransformCache: ServerTransformCache;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<{\n artifacts: Record<string, BuiltServerModuleArtifact>;\n sharedChunks: readonly SharedServerModuleChunk[];\n}> {\n const routeByFile = new Map(\n options.routes.map((route) => [relative(options.projectRoot, route.file), route]),\n );\n // One shared compat vendor chunk set replaces per-route inlining whenever\n // any app source references the react/compat specifier family.\n const externalizeCompatVendor =\n options.prebundleServerComponents &&\n Object.values(options.files).some(sourceReferencesCompatVendorSpecifier);\n const loaderArtifactFiles = new Set<string>();\n const metadataArtifactFiles = new Set<string>();\n const requestArtifactFiles = new Set<string>();\n const requestModuleImportPolicy = {\n allowedPackages: await readDeclaredProjectPackages(options.project.projectRoot),\n allowedSourceDirs: options.project.allowedSourceDirs,\n projectRoot: options.project.projectRoot,\n } satisfies AppRouterImportPolicy;\n const artifacts: Record<string, BuiltServerModuleArtifact> = {};\n\n for (const file of Object.keys(options.files)) {\n const absoluteFile = join(options.projectRoot, file);\n const route = routeByFile.get(file);\n const analysis = options.sourceAnalysis.byFile.get(file);\n\n if (isMiddlewareFile(options.project.routesDir, absoluteFile)) {\n requestArtifactFiles.add(file);\n }\n\n if (route?.kind === \"server\" || route?.kind === \"metadata\") {\n requestArtifactFiles.add(file);\n }\n\n if (route?.kind === \"page\" && analysis?.hasLoader === true) {\n loaderArtifactFiles.add(file);\n }\n\n if (isServerComponentFile(file) && analysis?.hasMetadata === true) {\n metadataArtifactFiles.add(file);\n }\n }\n\n const requestBatchEntries: RouteRequestModuleBatchEntry[] = [];\n for (const [file, source] of Object.entries(options.files)) {\n const absoluteFile = join(options.projectRoot, file);\n const route = routeByFile.get(file);\n\n if (loaderArtifactFiles.has(file)) {\n requestBatchEntries.push({\n code: stripRouteLoaderOnlyExports(source, absoluteFile),\n filename: absoluteFile,\n key: routeRequestArtifactBatchKey(file, \"loader\"),\n label: \"Loader\",\n });\n }\n\n if (metadataArtifactFiles.has(file)) {\n requestBatchEntries.push({\n code: stripRouteMetadataOnlyExports(source, absoluteFile),\n filename: absoluteFile,\n key: routeRequestArtifactBatchKey(file, \"metadata\"),\n label: \"Metadata\",\n });\n }\n\n if (isMiddlewareFile(options.project.routesDir, absoluteFile)) {\n // Middleware joins the batch when runtime packages are bundled so the\n // auth/control dependency graph is shared with route loader artifacts.\n if (options.bundleRequestRuntimePackages) {\n requestBatchEntries.push({\n code: source,\n filename: absoluteFile,\n key: routeRequestArtifactBatchKey(file, \"request\"),\n label: \"Middleware\",\n });\n }\n continue;\n }\n\n if (\n requestArtifactFiles.has(file) &&\n route?.kind !== \"server\" &&\n route?.kind !== \"metadata\"\n ) {\n requestBatchEntries.push({\n code: stripRouteRequestOnlyExports(source, absoluteFile),\n filename: absoluteFile,\n key: routeRequestArtifactBatchKey(file, \"request\"),\n label: \"Loader\",\n });\n }\n }\n\n const { codeByKey: requestBatchOutputs, sharedChunks } =\n requestBatchEntries.length >= (options.bundleRequestRuntimePackages ? 2 : 3)\n ? await bundleRouteRequestModuleBatchCode({\n appDir: options.project.routesDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n emitSharedChunks: options.bundleRequestRuntimePackages,\n entries: requestBatchEntries,\n externalizeAllowedPackages: !options.bundleRequestRuntimePackages,\n importPolicy: requestModuleImportPolicy,\n define: options.define,\n vitePlugins: options.vitePlugins,\n })\n : { codeByKey: new Map<string, string>(), sharedChunks: [] };\n\n const artifactEntries = await mapWithBuildConcurrency(\n Object.entries(options.files),\n async ([file, source]) => {\n const absoluteFile = join(options.projectRoot, file);\n const route = routeByFile.get(file);\n const routeAnalysis = options.sourceAnalysis.byRouteFile.get(file);\n const artifact: BuiltServerModuleArtifact = {};\n const routeActionReferences = options.serverActionReferencesByFile.get(file) ?? [];\n const renderSource =\n routeActionReferences.length === 0\n ? source\n : prepareRouteServerActionPlaceholders({\n code: source,\n formActionReferences: routeActionReferences,\n });\n\n if (\n requestArtifactFiles.has(file) ||\n loaderArtifactFiles.has(file) ||\n metadataArtifactFiles.has(file)\n ) {\n if (loaderArtifactFiles.has(file)) {\n const code =\n requestBatchOutputs.get(routeRequestArtifactBatchKey(file, \"loader\")) ??\n (await bundleRouteLoaderModuleCode({\n appDir: options.project.routesDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n code: stripRouteLoaderOnlyExports(source, absoluteFile),\n filename: absoluteFile,\n externalizeAllowedPackages: !options.bundleRequestRuntimePackages,\n importPolicy: requestModuleImportPolicy,\n define: options.define,\n vitePlugins: options.vitePlugins,\n }));\n artifact.loader = {\n code,\n sourceHash: hashText(source),\n };\n }\n\n if (metadataArtifactFiles.has(file)) {\n const code =\n requestBatchOutputs.get(routeRequestArtifactBatchKey(file, \"metadata\")) ??\n (await bundleRouteRequestModuleCode({\n appDir: options.project.routesDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n code: stripRouteMetadataOnlyExports(source, absoluteFile),\n filename: absoluteFile,\n externalizeAllowedPackages: !options.bundleRequestRuntimePackages,\n importPolicy: requestModuleImportPolicy,\n label: \"Metadata\",\n define: options.define,\n vitePlugins: options.vitePlugins,\n }));\n artifact.routeMetadata = {\n code,\n sourceHash: hashText(source),\n };\n }\n\n if (requestArtifactFiles.has(file)) {\n const batchedRequestCode = requestBatchOutputs.get(\n routeRequestArtifactBatchKey(file, \"request\"),\n );\n artifact.request = {\n code:\n batchedRequestCode ??\n (await buildRequestModuleArtifactCode({\n appDir: options.project.routesDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n filename: absoluteFile,\n externalizeAllowedPackages: !options.bundleRequestRuntimePackages,\n importPolicy: requestModuleImportPolicy,\n define: options.define,\n routeKind: route?.kind,\n source,\n vitePlugins: options.vitePlugins,\n })),\n sourceHash: hashText(source),\n };\n }\n }\n\n if (!isServerComponentFile(file)) {\n return Object.keys(artifact).length > 0 ? ([file, artifact] as const) : undefined;\n }\n\n const closureUsesAwait =\n routeAnalysis?.streamRoute ??\n shouldBuildRouteAsStream({\n filename: file,\n files: options.files,\n projectRoot: options.projectRoot,\n source,\n });\n const streamRoute = route !== undefined && closureUsesAwait;\n const serverOutputs =\n streamRoute || (route === undefined && closureUsesAwait)\n ? ([\"stream\", \"string\"] as const)\n : ([\"string\"] as const);\n const code =\n routeActionReferences.length === 0 && routeAnalysis !== undefined\n ? routeAnalysis.routeCode\n : route === undefined\n ? renderSource\n : stripRouteBuildExports(renderSource, absoluteFile);\n const clientInference =\n routeAnalysis === undefined\n ? await inferClientRouteModule({\n ...(route === undefined ? {} : { appDir: options.project.routesDir }),\n cache: options.clientRouteInferenceCache,\n code:\n route === undefined\n ? stripRouteClientOnlyExports(source, absoluteFile)\n : stripRouteClientSource({ code: source, filename: route.file }),\n filename: join(options.projectRoot, file),\n ...(route === undefined ? {} : { routePath: route.path }),\n vitePlugins: options.vitePlugins,\n })\n : undefined;\n const clientBoundaryImports =\n routeAnalysis?.clientBoundaryImports ?? clientInference?.clientBoundaryImports ?? [];\n const clientBoundaryFallbackImports =\n routeAnalysis?.clientBoundaryFallbackImports ??\n clientInference?.clientBoundaryFallbackImports ??\n [];\n\n for (const diagnostic of clientInference?.diagnostics ?? []) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n if (routeAnalysis !== undefined) {\n artifact.analysis = builtRouteSourceAnalysisSummary({\n analysis: routeAnalysis,\n });\n }\n\n const serverOutputArtifacts = await mapWithBuildConcurrency(\n serverOutputs,\n async (serverOutput) => {\n const output = await transformServerRouteSource({\n cache: options.serverTransformCache,\n code,\n clientBoundaryImports,\n clientBoundaryFallbackImports,\n filename: join(options.projectRoot, file),\n moduleContextCache: options.clientRouteInferenceCache,\n serverOutput,\n ...(serverOutput === \"stream\" &&\n (routeAnalysis?.clientRoute ?? clientInference?.client) === true\n ? { serverAwaitHydration: true as const }\n : {}),\n });\n const fatalDiagnostics = output.diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n\n if (fatalDiagnostics.length > 0) {\n if (\n serverOutput === \"string\" &&\n streamRoute &&\n route?.kind === \"page\" &&\n fatalDiagnostics.every(\n (diagnostic) => diagnostic.code === \"MR_UNSUPPORTED_AWAIT_INNER_COMPONENT\",\n )\n ) {\n return undefined;\n }\n\n throw new Error(\n fatalDiagnostics.map((diagnostic) => formatDiagnostic(file, diagnostic)).join(\"\\n\"),\n );\n }\n\n if (\n serverOutput === \"string\" &&\n streamRoute &&\n route?.kind === \"page\" &&\n source.includes(\"<Await\") &&\n /\\bLink\\b/.test(source)\n ) {\n // Native Link renders pre-rendered children as HTML. Keep direct\n // Await renderers on the stream artifact so the string artifact\n // cannot drop deferred Link content before the boundary resolves.\n return undefined;\n }\n\n const shouldWriteRenderBundle =\n options.prebundleServerComponents &&\n (routeActionReferences.length === 0 ||\n canUseBuildServerActionPlaceholders(routeActionReferences));\n const bundleCode = shouldWriteRenderBundle\n ? await buildServerComponentBundleArtifactCode({\n clientRouteInferenceCache: options.clientRouteInferenceCache,\n code: output.code,\n externalizeCompatVendor,\n filename: absoluteFile,\n define: options.define,\n root: options.projectRoot,\n serverOutput,\n vitePlugins: options.vitePlugins,\n })\n : undefined;\n\n return [\n serverOutput,\n {\n ...(bundleCode === undefined ? {} : { bundleCode }),\n code: output.code,\n metadata: output.metadata,\n sourceHash: hashText(code),\n },\n ] as const;\n },\n );\n\n for (const entry of serverOutputArtifacts) {\n if (entry !== undefined) {\n artifact[entry[0]] = entry[1];\n }\n }\n\n return [file, artifact] as const;\n },\n );\n\n for (const entry of artifactEntries) {\n if (entry !== undefined) {\n artifacts[entry[0]] = entry[1];\n }\n }\n\n return { artifacts, sharedChunks };\n}\n\nasync function buildServerComponentBundleArtifactCode(options: {\n clientRouteInferenceCache: ClientRouteInferenceCache;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeCompatVendor?: boolean | undefined;\n filename: string;\n root?: string | undefined;\n serverOutput: ServerOutputMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return await bundleAppRouterSourceModule({\n code: options.code,\n define: options.define,\n externalizeCompatVendor: options.externalizeCompatVendor,\n label: `server-component:${options.filename}`,\n resolveDir: dirname(options.filename),\n root: options.root,\n serverSourceTransform: {\n clientRouteInferenceCache: options.clientRouteInferenceCache,\n define: options.define,\n dev: false,\n serverOutput: options.serverOutput,\n vitePlugins: options.vitePlugins,\n },\n sourcefile: options.filename,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function transformServerRouteSource(options: {\n cache: ServerTransformCache;\n clientBoundaryImports: readonly string[];\n clientBoundaryFallbackImports?: readonly string[];\n code: string;\n filename: string;\n moduleContextCache: ClientRouteInferenceCache;\n serverOutput: ServerOutputMode;\n}): Promise<ServerTransformOutput> {\n const cacheKey = stableCacheKey({\n clientBoundaryImports: options.clientBoundaryImports,\n clientBoundaryFallbackImports: options.clientBoundaryFallbackImports ?? [],\n codeHash: hashText(options.code),\n filename: resolve(options.filename),\n serverOutput: options.serverOutput,\n target: \"server\",\n });\n const cached = options.cache.get(cacheKey);\n\n if (cached !== undefined) {\n return await cached;\n }\n\n const transformed = Promise.resolve().then(async () => {\n const moduleContext = await compilerModuleContextForSource({\n cache: options.moduleContextCache,\n code: options.code,\n filename: options.filename,\n });\n\n return transformCompilerModuleContext({\n code: options.code,\n clientBoundaryImports: options.clientBoundaryImports,\n clientBoundaryFallbackImports: options.clientBoundaryFallbackImports ?? [],\n dev: false,\n filename: options.filename,\n moduleContext,\n serverEscape: nativeEscapeTransform,\n serverOutput: options.serverOutput,\n target: \"server\",\n });\n });\n options.cache.set(cacheKey, transformed);\n return await transformed;\n}\n\nfunction builtRouteSourceAnalysisSummary(options: {\n analysis: BuildRouteSourceAnalysis;\n}): BuiltRouteSourceAnalysisSummary {\n return {\n authIncludesClaims: options.analysis.authIncludesClaims,\n ...(options.analysis.cachePolicy === undefined\n ? {}\n : { cachePolicy: options.analysis.cachePolicy }),\n clientBoundaryImports: options.analysis.clientBoundaryImports,\n clientBoundaryFallbackImports: options.analysis.clientBoundaryFallbackImports,\n clientRoute: options.analysis.clientRoute,\n hasLoader: options.analysis.hasLoader,\n routeCode: options.analysis.routeCode,\n routePath: options.analysis.route.path,\n sourceHash: options.analysis.sourceHash,\n streamRoute: options.analysis.streamRoute,\n usesRuntimeCacheControl: options.analysis.usesRuntimeCacheControl,\n };\n}\n\nfunction shouldBuildRouteAsStream(options: {\n filename: string;\n files: Record<string, string>;\n projectRoot: string;\n source: string;\n}): boolean {\n return (\n isStreamRouteSource(\n options.source,\n sourceFilenameForBuildAnalysis(options.projectRoot, options.filename),\n ) ||\n routeClosureMayUseAwaitBoundary({\n filename: options.filename,\n files: options.files,\n projectRoot: options.projectRoot,\n source: options.source,\n })\n );\n}\n\nfunction sourceFilenameForBuildAnalysis(projectRoot: string, filename: string): string {\n return filename.startsWith(\"/\") ? filename : join(projectRoot, filename);\n}\n\nfunction resolveBuildLocalSourceImport(\n files: Record<string, string>,\n importer: string,\n specifier: string,\n): string | undefined {\n if (!specifier.startsWith(\".\")) {\n return undefined;\n }\n\n const base = join(dirname(importer), specifier);\n\n for (const candidate of sourceModuleCandidates(base)) {\n if (files[candidate] !== undefined) {\n return candidate;\n }\n }\n\n return undefined;\n}\n\nfunction usesRuntimeCacheControl(code: string): boolean {\n return /\\bcacheControl\\s*\\(/.test(code);\n}\n\nfunction routeRequestArtifactBatchKey(\n file: string,\n kind: \"loader\" | \"metadata\" | \"request\",\n): string {\n return `${kind}:${file}`;\n}\n\nfunction authIncludesClaims(code: string): boolean {\n return /\\bexport\\s+const\\s+auth\\s*=\\s*[\"']include-claims[\"']\\s*;?/.test(code);\n}\n\nasync function buildRequestModuleArtifactCode(options: {\n appDir: string;\n bundleCache: Map<string, Promise<RouterBundleOutput>>;\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAllowedPackages: boolean;\n filename: string;\n importPolicy: AppRouterImportPolicy;\n routeKind?: AppRoute[\"kind\"] | undefined;\n source: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n if (isMiddlewareFile(options.appDir, options.filename)) {\n return await bundleMiddlewareModuleCode({\n appDir: options.appDir,\n code: options.source,\n define: options.define,\n file: options.filename,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n importPolicy: options.importPolicy,\n vitePlugins: options.vitePlugins,\n });\n }\n\n if (options.routeKind === \"server\" || options.routeKind === \"metadata\") {\n return await bundleAppRouterSourceModule({\n code: options.source,\n define: options.define,\n label: `server-route:${options.filename}`,\n plugins: [fileImportMetaUrlPlugin()],\n resolveDir: dirname(options.filename),\n root: options.importPolicy.projectRoot,\n sourcefile: options.filename,\n vitePlugins: options.vitePlugins,\n });\n }\n\n return await bundleRouteLoaderModuleCode({\n appDir: options.appDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n code: stripRouteRequestOnlyExports(options.source, options.filename),\n define: options.define,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n filename: options.filename,\n importPolicy: options.importPolicy,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function bundleRouteLoaderModuleCode(options: {\n appDir: string;\n bundleCache?: Map<string, Promise<RouterBundleOutput>> | undefined;\n cacheDir?: string | undefined;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAllowedPackages?: boolean | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return await bundleRouteRequestModuleCode({\n ...options,\n label: \"Loader\",\n });\n}\n\nasync function bundleRouteRequestModuleBatchCode(options: {\n appDir: string;\n bundleCache?: Map<string, Promise<RouterBundleOutput>> | undefined;\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n emitSharedChunks?: boolean | undefined;\n entries: readonly RouteRequestModuleBatchEntry[];\n externalizeAllowedPackages?: boolean | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteRequestModuleBatchOutput> {\n if (options.entries.length === 0) {\n return { codeByKey: new Map(), sharedChunks: [] };\n }\n\n if (options.entries.length === 1) {\n const entry = options.entries[0];\n if (entry === undefined) {\n return { codeByKey: new Map(), sharedChunks: [] };\n }\n\n return {\n codeByKey: new Map([\n [\n entry.key,\n await bundleRouteRequestModuleCode({\n appDir: options.appDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n code: entry.code,\n define: options.define,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n filename: entry.filename,\n importPolicy: options.importPolicy,\n label: entry.label,\n vitePlugins: options.vitePlugins,\n }),\n ],\n ]),\n sharedChunks: [],\n };\n }\n\n const namesByKey = new Map(\n options.entries.map((entry, index) => [\n entry.key,\n `request-${index}-${hashText(entry.key).slice(0, 8)}`,\n ]),\n );\n const output = await bundleRouterModules({\n cacheDir: options.cacheDir,\n // Externalized module code lives flat in server-modules/code, so shared\n // chunks must be importable as \"./chunks/...\" from any entry file there.\n chunkFileNames: \"chunks/request.[hash].mjs\",\n entries: options.entries.map((entry) => ({\n code: entry.code,\n filename: entry.filename,\n name: namesByKey.get(entry.key) ?? hashText(entry.key).slice(0, 8),\n })),\n entryFileNames: \"[name].mjs\",\n define: options.define,\n platform: \"node\",\n plugins: [\n fileImportMetaUrlPlugin(),\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n label: \"Request artifact\",\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n }),\n ],\n root:\n options.importPolicy?.projectRoot ?? dirname(options.entries[0]?.filename ?? options.appDir),\n vitePlugins: options.vitePlugins,\n });\n const sharedChunks = output.chunks.filter((chunk) => !chunk.isEntry);\n\n if (sharedChunks.length > 0 && !canEmitSharedRequestChunks(options.emitSharedChunks, output)) {\n const fallbackEntries = await mapWithBuildConcurrency(\n options.entries,\n async (entry) =>\n [\n entry.key,\n await bundleRouteRequestModuleCode({\n appDir: options.appDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n code: entry.code,\n define: options.define,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n filename: entry.filename,\n importPolicy: options.importPolicy,\n label: entry.label,\n vitePlugins: options.vitePlugins,\n }),\n ] as const,\n );\n return { codeByKey: new Map(fallbackEntries), sharedChunks: [] };\n }\n\n const chunksByName = new Map(output.chunks.map((chunk) => [chunk.name, chunk]));\n return {\n codeByKey: new Map(\n options.entries.map((entry) => {\n const name = namesByKey.get(entry.key);\n const chunk = name === undefined ? undefined : chunksByName.get(name);\n\n if (chunk === undefined) {\n throw new Error(`Failed to compile request artifact for ${entry.filename}.`);\n }\n\n return [entry.key, chunk.code] as const;\n }),\n ),\n sharedChunks: sharedChunks.map((chunk) => ({ code: chunk.code, fileName: chunk.fileName })),\n };\n}\n\nfunction canEmitSharedRequestChunks(\n emitSharedChunks: boolean | undefined,\n output: RouterBundleModulesOutput,\n): boolean {\n if (emitSharedChunks !== true) {\n return false;\n }\n\n if (output.assets !== undefined && output.assets.length > 0) {\n return false;\n }\n\n // Entry code is rewritten into content-addressed module files, so emitted\n // imports may only target shared chunk files or external specifiers.\n const entryFileNames = new Set(\n output.chunks.filter((chunk) => chunk.isEntry).map((chunk) => chunk.fileName),\n );\n return output.chunks.every((chunk) =>\n chunk.imports.every((specifier) => !entryFileNames.has(specifier)),\n );\n}\n\nexport async function __bundleRouteRequestModuleBatchForTests(options: {\n appDir: string;\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n entries: readonly RouteRequestModuleBatchEntry[];\n externalizeAllowedPackages?: boolean | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Record<string, string>> {\n return Object.fromEntries(\n (\n await bundleRouteRequestModuleBatchCode({\n appDir: options.appDir,\n cacheDir: options.cacheDir,\n define: options.define,\n entries: options.entries,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n importPolicy: options.importPolicy,\n vitePlugins: options.vitePlugins,\n })\n ).codeByKey,\n );\n}\n\nasync function bundleRouteRequestModuleCode(options: {\n appDir: string;\n bundleCache?: Map<string, Promise<RouterBundleOutput>> | undefined;\n cacheDir?: string | undefined;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAllowedPackages?: boolean | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n label: RouteRequestModuleBundleLabel;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n cache: options.bundleCache,\n cacheDir: options.cacheDir,\n cacheKey: routeRequestBundleCacheKey(options),\n code: options.code,\n define: options.define,\n filename: options.filename,\n platform: \"node\",\n root: options.importPolicy?.projectRoot,\n vitePlugins: options.vitePlugins,\n plugins: [\n fileImportMetaUrlPlugin(),\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n importPolicy: options.importPolicy,\n label: options.label,\n }),\n ],\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to compile ${options.label.toLowerCase()} for ${options.filename}.`);\n }\n\n return code;\n}\n\nfunction routeRequestBundleCacheKey(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAllowedPackages?: boolean | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n label: RouteRequestModuleBundleLabel;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): string {\n return stableCacheKey({\n appDir: resolve(options.appDir),\n codeHash: hashText(options.code),\n filename: resolve(options.filename),\n importPolicy:\n options.importPolicy === undefined\n ? undefined\n : {\n allowedPackages: [...(options.importPolicy.allowedPackages ?? [])].sort(),\n allowedSourceDirs: (options.importPolicy.allowedSourceDirs ?? [])\n .map((dir) => resolve(dir))\n .sort(),\n projectRoot:\n options.importPolicy.projectRoot === undefined\n ? undefined\n : resolve(options.importPolicy.projectRoot),\n },\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n label: options.label,\n platform: \"node\",\n target: \"es2022\",\n viteDefine: viteDefineCacheKey(options.define),\n vitePlugins: vitePluginsCacheKey(options.vitePlugins),\n });\n}\n\nfunction stableCacheKey(value: unknown): string {\n return JSON.stringify(value);\n}\n\nfunction isMiddlewareFile(appDir: string, file: string): boolean {\n return file === join(appDir, \"middleware.ts\") || file === join(appDir, \"middleware.mreact.ts\");\n}\n\nfunction hasMetadataExport(code: string): boolean {\n return (\n /\\bexport\\s+const\\s+metadata\\s*=/.test(code) ||\n /\\bexport\\s+(?:async\\s+)?function\\s+generateMetadata\\b/.test(code) ||\n /\\bexport\\s*\\{[^}]*\\bgenerateMetadata\\b[^}]*\\}/.test(code)\n );\n}\n\nasync function readDeclaredProjectPackages(projectRoot: string): Promise<string[]> {\n try {\n const json = JSON.parse(await readFile(join(projectRoot, \"package.json\"), \"utf8\")) as {\n dependencies?: Record<string, unknown> | undefined;\n devDependencies?: Record<string, unknown> | undefined;\n optionalDependencies?: Record<string, unknown> | undefined;\n peerDependencies?: Record<string, unknown> | undefined;\n };\n\n return [\n ...Object.keys(json.dependencies ?? {}),\n ...Object.keys(json.devDependencies ?? {}),\n ...Object.keys(json.optionalDependencies ?? {}),\n ...Object.keys(json.peerDependencies ?? {}),\n ];\n } catch {\n return [];\n }\n}\n\ninterface CloudflareRouteModulesOutput {\n registryFile: string;\n}\n\ninterface CloudflareRequiredRoute {\n route: AppRoute;\n routeFile: string;\n routeId: string;\n}\n\ninterface CloudflareBatchedRouteModule {\n code: string;\n fileName: string;\n}\n\ninterface CloudflareBatchedRouteModules {\n chunks: readonly RouterBundleChunkOutput[];\n entries: ReadonlyMap<string, CloudflareBatchedRouteModule>;\n}\n\ninterface CloudflareBatchedComponentRoute {\n filename: string;\n routeId: string;\n}\n\ninterface CloudflareBatchedStringRoute {\n filename: string;\n routeId: string;\n shellFiles: CloudflareShellFile[];\n}\n\ninterface RouteRequestModuleBatchEntry {\n code: string;\n filename: string;\n key: string;\n label: RouteRequestModuleBundleLabel;\n}\n\ntype RouteRequestModuleBundleLabel = \"Loader\" | \"Metadata\" | \"Middleware\";\n\ninterface SharedServerModuleChunk {\n code: string;\n fileName: string;\n}\n\ninterface RouteRequestModuleBatchOutput {\n codeByKey: Map<string, string>;\n sharedChunks: readonly SharedServerModuleChunk[];\n}\n\nasync function writeCloudflareRouteModules(options: {\n cacheDir?: string | undefined;\n cloudflareDir: string;\n define?: UserConfig[\"define\"] | undefined;\n files: Record<string, string>;\n prerenderedRoutes: Record<string, BuiltPrerenderedRoute>;\n projectRoot: string;\n routesDir: string;\n routes: readonly AppRoute[];\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareRouteModulesOutput> {\n const routesDir = join(options.cloudflareDir, \"routes\");\n const requiredRoutes = await Promise.all(\n options.routes\n .filter((route) => cloudflareRouteRequiresGeneratedModule(route, options.prerenderedRoutes))\n .flatMap((route): CloudflareRequiredRoute[] => {\n const routeFile = relative(options.projectRoot, route.file).replaceAll(sep, \"/\");\n const analysis = options.sourceAnalysis.byFile.get(routeFile);\n\n return analysis === undefined\n ? []\n : [\n {\n route,\n routeFile,\n routeId: routeIdForPath(route.path),\n },\n ];\n }),\n );\n\n await mkdir(routesDir, { recursive: true });\n\n const serverRouteModules = await buildCloudflareServerRouteModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n routes: requiredRoutes\n .filter(({ route }) => route.kind === \"server\" || route.kind === \"metadata\")\n .map(({ route, routeId }) => ({ filename: route.file, routeId })),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const loaderRouteModules = await buildCloudflareRouteLoaderModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n routes: requiredRoutes\n .filter(\n ({ route, routeFile }) =>\n route.kind === \"page\" &&\n options.sourceAnalysis.byRouteFile.get(routeFile)?.hasLoader === true,\n )\n .map(({ route, routeId }) => ({ filename: route.file, routeId })),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const directComponentRoutes = await collectCloudflareDirectComponentRoutes({\n requiredRoutes,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n });\n const stringShellComponentRoutes = await collectCloudflareStringShellComponentRoutes({\n requiredRoutes,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n });\n const directComponentRouteIds = new Set(directComponentRoutes.map((route) => route.routeId));\n const stringShellComponentRouteIds = new Set(\n stringShellComponentRoutes.map((route) => route.routeId),\n );\n const directComponentModules = await buildCloudflareServerComponentModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n projectRoot: options.projectRoot,\n routes: directComponentRoutes,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n const stringShellComponentModules = await buildCloudflareStringRouteComponentModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n projectRoot: options.projectRoot,\n routes: stringShellComponentRoutes,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n\n await Promise.all([\n writeCloudflareBatchedRouteModuleChunks(options.cloudflareDir, serverRouteModules),\n writeCloudflareBatchedRouteModuleChunks(options.cloudflareDir, loaderRouteModules),\n writeCloudflareBatchedRouteModuleChunks(options.cloudflareDir, directComponentModules),\n writeCloudflareBatchedRouteModuleChunks(options.cloudflareDir, stringShellComponentModules),\n ]);\n\n const registryEntries = await mapWithBuildConcurrency(\n requiredRoutes,\n async ({ route, routeFile, routeId }) => {\n const routeModuleFile = `routes/${routeId}.mjs`;\n let routeModuleExports: string[];\n\n if (route.kind === \"server\" || route.kind === \"metadata\") {\n try {\n const serverRouteModule = serverRouteModules.entries.get(routeId);\n\n if (serverRouteModule === undefined) {\n throw new Error(`Missing bundled Cloudflare ${route.kind} route module.`);\n }\n\n const serverRouteFile = serverRouteModule.fileName;\n const serverRouteImport = `./${serverRouteFile.split(\"/\").pop() ?? serverRouteFile}`;\n routeModuleExports = [\n `export * from ${JSON.stringify(serverRouteImport)};`,\n ...(route.kind === \"metadata\"\n ? [`export { default } from ${JSON.stringify(serverRouteImport)};`]\n : []),\n ];\n } catch (error) {\n throw new Error(\n `Failed to build Cloudflare ${route.kind} route module for ${routeFile}: ${errorMessage(error)}`,\n );\n }\n\n await writeFile(\n join(options.cloudflareDir, routeModuleFile),\n `${routeModuleExports.join(\"\\n\")}\\n`,\n );\n return `${JSON.stringify(routeFile)}: () => import(${JSON.stringify(`./${routeModuleFile}`)})`;\n }\n\n const serverOutput =\n options.serverModules[routeFile]?.analysis?.streamRoute === true ||\n options.sourceAnalysis.byRouteFile.get(routeFile)?.streamRoute === true\n ? \"stream\"\n : \"string\";\n\n try {\n const batchedComponent = stringShellComponentRouteIds.has(routeId)\n ? stringShellComponentModules.entries.get(routeId)\n : directComponentRouteIds.has(routeId)\n ? directComponentModules.entries.get(routeId)\n : undefined;\n let componentFile = batchedComponent?.fileName;\n\n if (batchedComponent === undefined) {\n const componentOutput =\n serverOutput === \"stream\"\n ? await buildCloudflareStreamRouteComponentModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: route.file,\n projectRoot: options.projectRoot,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n })\n : await buildCloudflareStringRouteComponentModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: route.file,\n projectRoot: options.projectRoot,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n\n componentFile = `routes/${routeId}.${hashText(componentOutput).slice(0, 8)}.component.mjs`;\n await writeFile(join(options.cloudflareDir, componentFile), componentOutput);\n }\n\n if (componentFile === undefined) {\n throw new Error(\"Missing bundled Cloudflare component module.\");\n }\n\n const componentImport = `./${componentFile.split(\"/\").pop() ?? componentFile}`;\n routeModuleExports = [cloudflarePageRouteFacadeModuleSource(componentImport)];\n } catch (error) {\n throw new Error(\n `Failed to build Cloudflare route module for ${routeFile}: ${errorMessage(error)}`,\n );\n }\n\n if (options.sourceAnalysis.byRouteFile.get(routeFile)?.hasLoader === true) {\n try {\n const loaderModule = loaderRouteModules.entries.get(routeId);\n\n if (loaderModule === undefined) {\n throw new Error(\"Missing bundled Cloudflare loader module.\");\n }\n\n const loaderFile = loaderModule.fileName;\n const loaderImport = `./${loaderFile.split(\"/\").pop() ?? loaderFile}`;\n routeModuleExports.push(`export { loader } from ${JSON.stringify(loaderImport)};`);\n } catch (error) {\n throw new Error(\n `Failed to build Cloudflare loader module for ${routeFile}: ${errorMessage(error)}`,\n );\n }\n }\n\n await writeFile(\n join(options.cloudflareDir, routeModuleFile),\n `${routeModuleExports.join(\"\\n\")}\\n`,\n );\n return `${JSON.stringify(routeFile)}: () => import(${JSON.stringify(`./${routeModuleFile}`)})`;\n },\n );\n\n const registrySource = [\n `export const routeModules = {`,\n ...registryEntries.map((entry) => ` ${entry},`),\n `};`,\n `export default routeModules;`,\n ``,\n ].join(\"\\n\");\n\n await writeFile(join(options.cloudflareDir, \"route-modules.mjs\"), registrySource);\n\n return { registryFile: \"route-modules.mjs\" };\n}\n\nfunction cloudflarePageRouteFacadeModuleSource(componentImport: string): string {\n return `import * as componentModule from ${JSON.stringify(componentImport)};\n\nconst componentSlots = readComponentModuleExport(componentModule, \"slots\");\nconst componentGenerateMetadata = readComponentModuleExport(componentModule, \"generateMetadata\");\nconst componentMetadata = readComponentModuleExport(componentModule, \"metadata\");\n\nexport function App(props) {\n return renderCloudflareRouteComponent(props);\n}\nexport default function CloudflareDefaultRouteComponent(props) {\n return renderCloudflareRouteComponent(props);\n}\nexport function CloudflareRouteComponent(props) {\n return renderCloudflareRouteComponent(props);\n}\nexport const slots = componentSlots === undefined ? undefined : { ...componentSlots };\nexport const generateMetadata =\n typeof componentGenerateMetadata === \"function\" ? componentGenerateMetadata : undefined;\nexport const metadata = componentMetadata;\n\nfunction renderCloudflareRouteComponent(props) {\n const routeComponent = resolveCloudflareRouteComponent();\n if (routeComponent === undefined) {\n throw new Error(\"No Cloudflare component export was found for ${componentImport}.\");\n }\n\n return routeComponent(props);\n}\n\nfunction resolveCloudflareRouteComponent() {\n const componentDefault = readComponentModuleExport(componentModule, \"default\");\n if (typeof componentDefault === \"function\") {\n return componentDefault;\n }\n\n const componentApp = readComponentModuleExport(componentModule, \"App\");\n if (typeof componentApp === \"function\") {\n return componentApp;\n }\n\n return undefined;\n}\n\nfunction readComponentModuleExport(module, name) {\n const descriptor = Object.getOwnPropertyDescriptor(module, name);\n if (descriptor === undefined) {\n return undefined;\n }\n\n if (\"value\" in descriptor) {\n return descriptor.value;\n }\n\n return descriptor.get?.call(module);\n}`;\n}\n\nasync function collectCloudflareDirectComponentRoutes(options: {\n requiredRoutes: readonly CloudflareRequiredRoute[];\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n}): Promise<CloudflareBatchedComponentRoute[]> {\n const routes = await Promise.all(\n options.requiredRoutes.map(async ({ route, routeFile, routeId }) => {\n if (route.kind !== \"page\") {\n return undefined;\n }\n\n const serverOutput =\n options.serverModules[routeFile]?.analysis?.streamRoute === true ||\n options.sourceAnalysis.byRouteFile.get(routeFile)?.streamRoute === true\n ? \"stream\"\n : \"string\";\n\n if (serverOutput !== \"string\") {\n return undefined;\n }\n\n const shellFiles = await cloudflareShellFilesForPage(options.routesDir, route.file);\n\n if (shellFiles.length > 0) {\n return undefined;\n }\n\n return {\n filename: route.file,\n routeId,\n };\n }),\n );\n\n return routes.filter((route): route is CloudflareBatchedComponentRoute => route !== undefined);\n}\n\nasync function collectCloudflareStringShellComponentRoutes(options: {\n requiredRoutes: readonly CloudflareRequiredRoute[];\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n}): Promise<CloudflareBatchedStringRoute[]> {\n const routes = await Promise.all(\n options.requiredRoutes.map(async ({ route, routeFile, routeId }) => {\n if (route.kind !== \"page\") {\n return undefined;\n }\n\n const serverOutput =\n options.serverModules[routeFile]?.analysis?.streamRoute === true ||\n options.sourceAnalysis.byRouteFile.get(routeFile)?.streamRoute === true\n ? \"stream\"\n : \"string\";\n\n if (serverOutput !== \"string\") {\n return undefined;\n }\n\n const shellFiles = await cloudflareShellFilesForPage(options.routesDir, route.file);\n\n if (shellFiles.length === 0) {\n return undefined;\n }\n\n return {\n filename: route.file,\n routeId,\n shellFiles,\n };\n }),\n );\n\n return routes.filter((route): route is CloudflareBatchedStringRoute => route !== undefined);\n}\n\ninterface CloudflareShellFile {\n file: string;\n id: string;\n kind: \"layout\" | \"template\";\n}\n\nasync function buildCloudflareServerComponentModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n projectRoot: string;\n routes: readonly CloudflareBatchedComponentRoute[];\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n if (options.routes.length === 0) {\n return { chunks: [], entries: new Map() };\n }\n\n const virtualModules = new Map<string, CloudflareVirtualModule>();\n const bundleEntries = await Promise.all(\n options.routes.map(async (route) => {\n const metadataModule = await buildCloudflareRouteMetadataExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: route.filename,\n hasMetadata: buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n route.filename,\n )?.hasMetadata,\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const metadataId = `mreact:metadata:${route.routeId}`;\n\n if (metadataModule !== undefined) {\n virtualModules.set(metadataId, {\n contents: metadataModule,\n resolveDir: dirname(route.filename),\n });\n }\n\n return {\n code: cloudflareServerComponentModuleEntry(\n route.filename,\n metadataModule === undefined ? undefined : metadataId,\n ),\n filename: `${route.filename}.mreact-cloudflare-component.js`,\n name: `${route.routeId}.component`,\n routeId: route.routeId,\n };\n }),\n );\n const output = await bundleRouterModules({\n cacheDir: options.cacheDir,\n chunkFileNames: \"routes/chunks/[name].[hash].mjs\",\n define: options.define,\n entries: bundleEntries,\n entryFileNames: \"routes/[name].[hash].mjs\",\n minify: true,\n platform: \"node\",\n plugins: [\n cloudflareVirtualModulesPlugin(virtualModules),\n cloudflareServerSourceTransformPlugin({\n projectRoot: options.projectRoot,\n serverOutput: \"string\",\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n }),\n cloudflareWorkspaceRuntimePlugin(),\n ],\n root: options.projectRoot,\n target: \"es2022\",\n vitePlugins: options.vitePlugins,\n });\n const entriesByName = new Map(bundleEntries.map((entry) => [entry.name, entry]));\n const entries = new Map<string, CloudflareBatchedRouteModule>();\n\n for (const chunk of output.chunks) {\n if (!chunk.isEntry) {\n continue;\n }\n\n const entry = entriesByName.get(chunk.name);\n\n if (entry === undefined) {\n continue;\n }\n\n entries.set(entry.routeId, {\n code: chunk.code,\n fileName: chunk.fileName,\n });\n }\n\n return { chunks: output.chunks, entries };\n}\n\nasync function buildCloudflareStringRouteComponentModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n projectRoot: string;\n routes: readonly CloudflareBatchedStringRoute[];\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n if (options.routes.length === 0) {\n return { chunks: [], entries: new Map() };\n }\n\n const virtualModules = new Map<string, CloudflareVirtualModule>();\n const bundleEntries = await Promise.all(\n options.routes.map(async (route) => {\n const metadataImports: string[] = [];\n const pageMetadataId = `mreact:metadata:${route.routeId}:page`;\n const pageMetadataModule = await buildCloudflareRouteMetadataExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: route.filename,\n hasMetadata: buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n route.filename,\n )?.hasMetadata,\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n\n if (pageMetadataModule === undefined) {\n metadataImports.push(\"const pageMetadataModule = {};\");\n } else {\n virtualModules.set(pageMetadataId, {\n contents: pageMetadataModule,\n resolveDir: dirname(route.filename),\n });\n metadataImports.push(\n `import * as pageMetadataModule from ${JSON.stringify(pageMetadataId)};`,\n );\n }\n\n const shellMetadataImports = await Promise.all(\n route.shellFiles.map(async (shell, index) => {\n const shellMetadataId = `mreact:metadata:${route.routeId}:shell:${index}`;\n const shellMetadataModule = await buildCloudflareRouteMetadataExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: shell.file,\n hasMetadata: buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n shell.file,\n )?.hasMetadata,\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n\n if (shellMetadataModule === undefined) {\n return `const shellMetadataModule${index} = {};`;\n }\n\n virtualModules.set(shellMetadataId, {\n contents: shellMetadataModule,\n resolveDir: dirname(shell.file),\n });\n return `import * as shellMetadataModule${index} from ${JSON.stringify(shellMetadataId)};`;\n }),\n );\n metadataImports.push(...shellMetadataImports);\n\n return {\n code: cloudflareStringRouteComponentModuleEntry({\n filename: route.filename,\n metadataImports,\n pageMetadataModuleName: \"pageMetadataModule\",\n shellFiles: route.shellFiles,\n shellMetadataModuleName: (index) => `shellMetadataModule${index}`,\n }),\n filename: `${route.filename}.mreact-cloudflare-string-route.js`,\n name: `${route.routeId}.string`,\n routeId: route.routeId,\n };\n }),\n );\n const output = await bundleRouterModules({\n cacheDir: options.cacheDir,\n chunkFileNames: \"routes/chunks/[name].[hash].mjs\",\n define: options.define,\n entries: bundleEntries,\n entryFileNames: \"routes/[name].[hash].mjs\",\n minify: true,\n platform: \"node\",\n plugins: [\n cloudflareVirtualModulesPlugin(virtualModules),\n cloudflareServerSourceTransformPlugin({\n projectRoot: options.projectRoot,\n serverOutput: \"string\",\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n }),\n cloudflareWorkspaceRuntimePlugin(),\n ],\n root: options.projectRoot,\n target: \"es2022\",\n vitePlugins: options.vitePlugins,\n });\n const entriesByName = new Map(bundleEntries.map((entry) => [entry.name, entry]));\n const entries = new Map<string, CloudflareBatchedRouteModule>();\n\n for (const chunk of output.chunks) {\n if (!chunk.isEntry) {\n continue;\n }\n\n const entry = entriesByName.get(chunk.name);\n\n if (entry === undefined) {\n continue;\n }\n\n entries.set(entry.routeId, {\n code: chunk.code,\n fileName: chunk.fileName,\n });\n }\n\n return { chunks: output.chunks, entries };\n}\n\nfunction cloudflareStringRouteComponentModuleEntry(options: {\n filename: string;\n metadataImports: readonly string[];\n pageMetadataModuleName: string;\n shellFiles: readonly CloudflareShellFile[];\n shellMetadataModuleName: (index: number) => string;\n}): string {\n const shellImports = options.shellFiles.map(\n (shell, index) => `import * as shellRouteModule${index} from ${JSON.stringify(shell.file)};`,\n );\n const shellDefinitions = options.shellFiles.map(\n (shell, index) =>\n `{ component: selectComponent(shell${index}, ${JSON.stringify(shell.file)}), id: ${JSON.stringify(shell.id)}, kind: ${JSON.stringify(shell.kind)}, module: shell${index} }`,\n );\n const shellModules = options.shellFiles.map(\n (_, index) =>\n `const shell${index} = routeComponentModule(shellRouteModule${index}, ${options.shellMetadataModuleName(index)});`,\n );\n\n return `import * as pageRouteModule from ${JSON.stringify(options.filename)};\n${shellImports.join(\"\\n\")}\n${options.metadataImports.join(\"\\n\")}\n\nconst pageModule = routeComponentModule(pageRouteModule, ${options.pageMetadataModuleName});\n${shellModules.join(\"\\n\")}\nconst pageComponent = selectComponent(pageModule, ${JSON.stringify(options.filename)});\nconst shells = [${shellDefinitions.join(\", \")}];\nexport const slots = pageModule.slots;\nexport default function CloudflareStringRouteComponent(props) {\n return renderCloudflareStringRoute(props);\n}\n\nasync function renderCloudflareStringRoute(props) {\n const slotHtml = await renderRouteSlots(pageModule.slots, props);\n const layoutShells = await renderLayoutShells(shells, props, slotHtml);\n const metadata = await resolveRouteMetadata([...shells.map((shell) => shell.module), pageModule], props);\n let html = \"<!DOCTYPE html>\";\n for (const shell of layoutShells) {\n html += shell.prefix;\n }\n html += withCloudflareHydrationMarkers(props, String(await pageComponent(props) ?? \"\"));\n for (const shell of [...layoutShells].reverse()) {\n html += shell.suffix;\n }\n html = injectCloudflareHead(html, metadata, cloudflareRouteHeadTags(props.clientManifest, props.route.path));\n return new Response(html, {\n headers: cloudflareMetadataHeaders(metadata, props.request, {\n \"content-type\": \"text/html; charset=utf-8\"\n })\n });\n}\n\nfunction routeComponentModule(routeModule, metadataModule) {\n const component = routeModule.default ?? routeModule.App ?? Object.values(routeModule).find((value) => typeof value === \"function\");\n return {\n ...routeModule,\n App: component,\n default: component,\n generateMetadata: metadataModule.generateMetadata,\n metadata: metadataModule.metadata,\n slots: routeModule.slots,\n };\n}\n\nfunction selectComponent(module, label) {\n const component = module.default ?? module.App ?? Object.values(module).find((value) => typeof value === \"function\");\n if (typeof component !== \"function\") {\n throw new Error(\\`No Cloudflare component export was found for \\${label}.\\`);\n }\n return component;\n}\n\nasync function renderRouteSlots(slots, props) {\n if (slots === undefined) {\n return {};\n }\n const rendered = {};\n for (const [name, value] of Object.entries(slots)) {\n rendered[name] = typeof value === \"function\" ? String(await value(props) ?? \"\") : String(value ?? \"\");\n }\n return rendered;\n}\n\n${cloudflareShellRuntimeSource()}`;\n}\n\nasync function buildCloudflareServerComponentModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n projectRoot: string;\n serverOutput: ServerOutputMode;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const metadataModule = await buildCloudflareRouteMetadataExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: options.filename,\n hasMetadata: buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n options.filename,\n )?.hasMetadata,\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const entry = cloudflareServerComponentModuleEntry(\n options.filename,\n metadataModule === undefined ? undefined : \"mreact:metadata\",\n );\n\n return bundleCloudflareVirtualModule({\n entry,\n filename: `${options.filename}.mreact-cloudflare-component.js`,\n cacheDir: options.cacheDir,\n define: options.define,\n modules:\n metadataModule === undefined ? new Map() : new Map([[\"mreact:metadata\", metadataModule]]),\n plugins: [\n cloudflareServerSourceTransformPlugin({\n projectRoot: options.projectRoot,\n serverOutput: options.serverOutput,\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n }),\n cloudflareWorkspaceRuntimePlugin(),\n ],\n resolveDir: dirname(options.filename),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n}\n\nfunction cloudflareServerComponentModuleEntry(\n filename: string,\n metadataModuleId: string | undefined,\n): string {\n return `import * as routeModule from ${JSON.stringify(filename)};\n${metadataModuleId === undefined ? \"const metadataModule = {};\" : `import * as metadataModule from ${JSON.stringify(metadataModuleId)};`}\n\nconst component = routeModule.default ?? routeModule.App ?? Object.values(routeModule).find((value) => typeof value === \"function\");\nexport const App = component;\nexport default component;\nexport const generateMetadata = metadataModule.generateMetadata;\nexport const metadata = metadataModule.metadata;\nexport const slots = routeModule.slots;`;\n}\n\nasync function buildCloudflareStringRouteComponentModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n projectRoot: string;\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const shellFiles = await cloudflareShellFilesForPage(options.routesDir, options.filename);\n\n if (shellFiles.length === 0) {\n return buildCloudflareServerComponentModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n }\n\n const pageModule = await buildCloudflareComponentExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n const shellModules = await Promise.all(\n shellFiles.map((shell) =>\n buildCloudflareComponentExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: shell.file,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n }),\n ),\n );\n const shellImports = shellFiles.map(\n (_, index) => `import * as shell${index} from \"mreact:shell-${index}\";`,\n );\n const shellDefinitions = shellFiles.map(\n (shell, index) =>\n `{ component: selectComponent(shell${index}, ${JSON.stringify(shell.file)}), id: ${JSON.stringify(shell.id)}, kind: ${JSON.stringify(shell.kind)}, module: shell${index} }`,\n );\n const entry = `import * as pageModule from \"mreact:page\";\n${shellImports.join(\"\\n\")}\n\nconst pageComponent = selectComponent(pageModule, ${JSON.stringify(options.filename)});\nconst shells = [${shellDefinitions.join(\", \")}];\nexport const slots = pageModule.slots;\nexport default function CloudflareStringRouteComponent(props) {\n return renderCloudflareStringRoute(props);\n}\n\nasync function renderCloudflareStringRoute(props) {\n const slotHtml = await renderRouteSlots(pageModule.slots, props);\n const layoutShells = await renderLayoutShells(shells, props, slotHtml);\n const metadata = await resolveRouteMetadata([...shells.map((shell) => shell.module), pageModule], props);\n let html = \"<!DOCTYPE html>\";\n for (const shell of layoutShells) {\n html += shell.prefix;\n }\n html += withCloudflareHydrationMarkers(props, String(await pageComponent(props) ?? \"\"));\n for (const shell of [...layoutShells].reverse()) {\n html += shell.suffix;\n }\n html = injectCloudflareHead(html, metadata, cloudflareRouteHeadTags(props.clientManifest, props.route.path));\n return new Response(html, {\n headers: cloudflareMetadataHeaders(metadata, props.request, {\n \"content-type\": \"text/html; charset=utf-8\"\n })\n });\n}\n\nfunction selectComponent(module, label) {\n const component = module.default ?? module.App ?? Object.values(module).find((value) => typeof value === \"function\");\n if (typeof component !== \"function\") {\n throw new Error(\\`No Cloudflare component export was found for \\${label}.\\`);\n }\n return component;\n}\n\nasync function renderRouteSlots(slots, props) {\n if (slots === undefined) {\n return {};\n }\n const rendered = {};\n for (const [name, value] of Object.entries(slots)) {\n rendered[name] = typeof value === \"function\" ? String(await value(props) ?? \"\") : String(value ?? \"\");\n }\n return rendered;\n}\n\n${cloudflareShellRuntimeSource()}`;\n\n return bundleCloudflareVirtualModule({\n entry,\n cacheDir: options.cacheDir,\n define: options.define,\n filename: `${options.filename}.mreact-cloudflare-string-route.js`,\n modules: new Map([\n [\"mreact:page\", pageModule],\n ...shellModules.map((source, index) => [`mreact:shell-${index}`, source] as const),\n ]),\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareStreamRouteComponentModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n projectRoot: string;\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const pageModule = await buildCloudflareComponentExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"stream\",\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n const shellFiles = await cloudflareShellFilesForPage(options.routesDir, options.filename);\n const shellModules = await Promise.all(\n shellFiles.map((shell) =>\n buildCloudflareComponentExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: shell.file,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n }),\n ),\n );\n const shellImports = shellFiles.map(\n (_, index) => `import * as shell${index} from \"mreact:shell-${index}\";`,\n );\n const shellDefinitions = shellFiles.map(\n (shell, index) =>\n `{ component: selectComponent(shell${index}, ${JSON.stringify(shell.file)}), id: ${JSON.stringify(shell.id)}, kind: ${JSON.stringify(shell.kind)}, module: shell${index} }`,\n );\n const entry = `import { createStringSink, renderOutOfOrderReorderScript, renderToReadableStream } from \"@reckona/mreact-server\";\nimport * as pageModule from \"mreact:page\";\n${shellImports.join(\"\\n\")}\n\nconst pageComponent = selectComponent(pageModule, ${JSON.stringify(options.filename)});\nconst shells = [${shellDefinitions.join(\", \")}];\nexport const slots = pageModule.slots;\nexport const App = renderCloudflareStreamRoute;\nexport default renderCloudflareStreamRoute;\n\nasync function renderCloudflareStreamRoute(props) {\n const metadata = await resolveRouteMetadata([...shells.map((shell) => shell.module), pageModule], props);\n const body = renderToReadableStream(async ($sink) => {\n const slotHtml = await renderRouteSlots(pageModule.slots, props);\n const layoutShells = await renderLayoutShells(shells, props, slotHtml);\n const routeHeadTags = cloudflareRouteHeadTags(props.clientManifest, props.route.path);\n $sink.append(\"<!DOCTYPE html>\");\n if (layoutShells.length === 0) {\n $sink.append(injectCloudflareHead(\"\", metadata, routeHeadTags));\n }\n for (let index = 0; index < layoutShells.length; index += 1) {\n const shell = layoutShells[index];\n $sink.append(index === 0 ? injectCloudflareHead(shell.prefix, metadata, routeHeadTags) : shell.prefix);\n }\n const hydrationMarker = cloudflareHydrationMarkerParts(props);\n $sink.append(hydrationMarker.prefix);\n await pageComponent($sink, props);\n $sink.append(hydrationMarker.suffix);\n renderOutOfOrderReorderScript($sink);\n for (const shell of [...layoutShells].reverse()) {\n $sink.append(shell.suffix);\n }\n });\n return new Response(body, {\n headers: cloudflareMetadataHeaders(metadata, props.request, {\n \"content-type\": \"text/html; charset=utf-8\",\n \"x-mreact-stream\": \"1\"\n })\n });\n}\n\nfunction selectComponent(module, label) {\n const component = module.default ?? module.App ?? Object.values(module).find((value) => typeof value === \"function\");\n if (typeof component !== \"function\") {\n throw new Error(\\`No Cloudflare component export was found for \\${label}.\\`);\n }\n return component;\n}\n\nasync function renderRouteSlots(slots, props) {\n if (slots === undefined) {\n return {};\n }\n const rendered = {};\n for (const [name, value] of Object.entries(slots)) {\n if (typeof value !== \"function\") {\n rendered[name] = String(value ?? \"\");\n continue;\n }\n const sink = createStringSink();\n await value(sink, props);\n await sink.drain();\n rendered[name] = sink.toString();\n }\n return rendered;\n}\n\n${cloudflareShellRuntimeSource()}`;\n\n return bundleCloudflareVirtualModule({\n entry,\n cacheDir: options.cacheDir,\n define: options.define,\n filename: `${options.filename}.mreact-cloudflare-stream-route.js`,\n modules: new Map([\n [\"mreact:page\", pageModule],\n ...shellModules.map((source, index) => [`mreact:shell-${index}`, source] as const),\n ]),\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n}\n\nfunction cloudflareShellRuntimeSource(): string {\n return `async function renderLayoutShells(shells, props, namedSlots) {\n const slotContext = { consumedSlots: new Set(), namedSlots };\n const rendered = [];\n for (const shell of shells) {\n const html = await shell.component(props);\n rendered.push(splitLayoutSlot(markShellBoundary(String(html ?? \"\"), shell), slotContext));\n }\n return rendered;\n}\n\nfunction splitLayoutSlot(layoutHtml, slotContext) {\n const html = replaceNamedLayoutSlots(layoutHtml, slotContext);\n const match = findDefaultLayoutSlot(html);\n if (match === null) {\n return { prefix: html, suffix: \"\" };\n }\n return {\n prefix: html.slice(0, match.index),\n suffix: html.slice(match.index + match[0].length),\n };\n}\n\nfunction markShellBoundary(html, shell) {\n const attributeName = shell.kind === \"layout\" ? \"data-mreact-layout-boundary\" : \"data-mreact-template-boundary\";\n if (html.includes(\\`\\${attributeName}=\\`)) {\n return html;\n }\n return html.replace(/<([A-Za-z][^\\\\s/>]*)([^>]*)>/, \\`<$1$2 \\${attributeName}=\"\\${escapeHtmlAttribute(shell.id)}\">\\`);\n}\n\nconst SLOT_TAG_PATTERN = /<slot\\\\b([^>]*)>(?:<\\\\/slot\\\\s*>)?/g;\n\nfunction replaceNamedLayoutSlots(layoutHtml, slotContext) {\n return layoutHtml.replace(SLOT_TAG_PATTERN, (source, openAttributes) => {\n const name = readSlotName(openAttributes);\n if (name === undefined || name === \"default\") {\n return source;\n }\n if (Object.hasOwn(slotContext.namedSlots, name)) {\n slotContext.consumedSlots.add(name);\n return slotContext.namedSlots[name] ?? \"\";\n }\n return \"\";\n });\n}\n\nfunction findDefaultLayoutSlot(html) {\n SLOT_TAG_PATTERN.lastIndex = 0;\n for (;;) {\n const match = SLOT_TAG_PATTERN.exec(html);\n if (match === null) {\n return null;\n }\n const name = readSlotName(match[1] ?? \"\");\n if (name === undefined || name === \"default\") {\n return match;\n }\n }\n}\n\nfunction readSlotName(attributes) {\n const match = /\\\\bname\\\\s*=\\\\s*(?:\"([^\"]*)\"|'([^']*)')/.exec(attributes);\n return match?.[1] ?? match?.[2];\n}\n\nfunction withCloudflareHydrationMarkers(props, html) {\n const marker = cloudflareHydrationMarkerParts(props);\n return marker.prefix === \"\" && marker.suffix === \"\" ? html : \\`\\${marker.prefix}\\${html}\\${marker.suffix}\\`;\n}\n\nfunction cloudflareHydrationMarkerParts(props) {\n const route = props.clientManifest.routes.find((route) => route.path === props.route.path && route.client === true);\n if (route?.script === undefined) {\n return { prefix: \"\", suffix: \"\" };\n }\n const routeId = route.routeId ?? cloudflareRouteIdForPath(props.route.path);\n const escapedRouteId = escapeHtmlAttribute(routeId);\n const propsJson = escapeScriptJson(JSON.stringify({\n params: props.params,\n request: { url: props.request.url },\n data: props.data,\n }));\n const clientReferencesJson = route.clientReferenceManifest === undefined || route.clientReferenceManifest.length === 0\n ? undefined\n : escapeScriptJson(JSON.stringify(route.clientReferenceManifest));\n return {\n prefix: \\`<div data-mreact-route-id=\"\\${escapedRouteId}\">\\`,\n suffix: [\n \"</div>\",\n \\`<script type=\"application/json\" id=\"mreact-props-\\${escapedRouteId}\">\\${propsJson}</script>\\`,\n clientReferencesJson === undefined\n ? undefined\n : \\`<script type=\"application/json\" id=\"mreact-client-references-\\${escapedRouteId}\">\\${clientReferencesJson}</script>\\`,\n \\`<script type=\"module\" src=\"/_mreact/client/\\${escapeHtmlAttribute(route.script)}\"></script>\\`,\n ].filter((part) => part !== undefined).join(\"\"),\n };\n}\n\nfunction escapeScriptJson(json) {\n return json\n .replaceAll(\"&\", \"\\\\\\\\u0026\")\n .replaceAll(\"<\", \"\\\\\\\\u003c\")\n .replaceAll(\">\", \"\\\\\\\\u003e\")\n .replaceAll(\"\\\\u2028\", \"\\\\\\\\u2028\")\n .replaceAll(\"\\\\u2029\", \"\\\\\\\\u2029\");\n}\n\nfunction cloudflareRouteIdForPath(path) {\n if (path === \"/\") {\n return \"index\";\n }\n return path\n .slice(1)\n .replaceAll(\"/\", \"_\")\n .replaceAll(\":\", \"_\")\n .replace(/[^A-Za-z0-9_$-]/g, \"_\");\n}\n\nasync function resolveRouteMetadata(modules, props) {\n const metadata = [];\n const context = {\n data: props.data,\n params: props.params,\n request: props.request\n };\n for (const module of modules) {\n let next = validateRouteMetadata(module.metadata);\n if (typeof module.generateMetadata === \"function\") {\n const generated = validateRouteMetadata(await module.generateMetadata(context), \"generateMetadata\");\n next = mergeRouteMetadata([next, generated].filter(Boolean));\n }\n if (next !== undefined) {\n metadata.push(next);\n }\n }\n return validateRouteMetadata(mergeRouteMetadata(metadata));\n}\n\nfunction validateRouteMetadata(metadata, path = \"metadata\") {\n if (metadata === undefined) {\n return undefined;\n }\n assertMetadataObject(metadata, path);\n validateOptionalMetadataObject(metadata.alternates, \\`\\${path}.alternates\\`, { canonical: validateMetadataScalar });\n validateOptionalCspMetadata(metadata.csp, \\`\\${path}.csp\\`);\n validateOptionalMetadataScalar(metadata.description, \\`\\${path}.description\\`);\n validateOptionalHeadMetadata(metadata.head, \\`\\${path}.head\\`);\n validateOptionalMetadataObject(metadata.icons, \\`\\${path}.icons\\`, {\n apple: validateMetadataScalar,\n icon: validateMetadataScalar,\n });\n validateOptionalOpenGraphMetadata(metadata.openGraph, \\`\\${path}.openGraph\\`);\n validateOptionalMetadataScalar(metadata.lang, \\`\\${path}.lang\\`);\n validateOptionalRobotsMetadata(metadata.robots, \\`\\${path}.robots\\`);\n validateOptionalSecurityMetadata(metadata.security, \\`\\${path}.security\\`);\n validateOptionalThemeColorMetadata(metadata.themeColor, \\`\\${path}.themeColor\\`);\n validateOptionalMetadataScalar(metadata.title, \\`\\${path}.title\\`);\n validateOptionalViewportMetadata(metadata.viewport, \\`\\${path}.viewport\\`);\n validateUnknownJsonMetadataFields(metadata, path, new Set([\"alternates\", \"csp\", \"description\", \"head\", \"icons\", \"lang\", \"openGraph\", \"robots\", \"security\", \"themeColor\", \"title\", \"viewport\"]));\n return metadata;\n}\n\nfunction validateOptionalMetadataScalar(value, path) {\n if (value !== undefined) {\n validateMetadataScalar(value, path);\n }\n}\n\nfunction validateMetadataScalar(value, path) {\n if (!isMetadataScalar(value)) {\n throw new Error(\\`Invalid metadata field \\${path}: expected string, number, or boolean.\\`);\n }\n}\n\nfunction isMetadataScalar(value) {\n return typeof value === \"string\" || (typeof value === \"number\" && Number.isFinite(value)) || typeof value === \"boolean\";\n}\n\nfunction validateOptionalMetadataObject(value, path, validators) {\n if (value === undefined) {\n return;\n }\n assertMetadataObject(value, path);\n for (const [key, validator] of Object.entries(validators)) {\n if (value[key] !== undefined) {\n validator(value[key], \\`\\${path}.\\${key}\\`);\n }\n }\n validateUnknownJsonMetadataFields(value, path, new Set(Object.keys(validators)));\n}\n\nfunction validateOptionalCspMetadata(value, path) {\n if (value === undefined) {\n return;\n }\n assertMetadataObject(value, path);\n if (value.disable !== undefined && typeof value.disable !== \"boolean\") {\n throw new Error(\\`Invalid metadata field \\${path}.disable: expected boolean.\\`);\n }\n if (value.nonce !== undefined && typeof value.nonce !== \"string\") {\n throw new Error(\\`Invalid metadata field \\${path}.nonce: expected string.\\`);\n }\n validateOptionalDirectiveMap(value.directives, \\`\\${path}.directives\\`);\n validateOptionalDirectiveMap(value.replace, \\`\\${path}.replace\\`);\n if (value.remove !== undefined) {\n validateStringArray(value.remove, \\`\\${path}.remove\\`);\n }\n validateUnknownJsonMetadataFields(value, path, new Set([\"directives\", \"disable\", \"nonce\", \"remove\", \"replace\"]));\n}\n\nfunction validateOptionalDirectiveMap(value, path) {\n if (value === undefined) {\n return;\n }\n assertMetadataObject(value, path);\n for (const [name, directive] of Object.entries(value)) {\n if (typeof directive !== \"string\") {\n validateStringArray(directive, \\`\\${path}.\\${name}\\`);\n }\n }\n}\n\nfunction validateStringArray(value, path) {\n if (!Array.isArray(value)) {\n throw new Error(\\`Invalid metadata field \\${path}: expected string or string array.\\`);\n }\n value.forEach((entry, index) => {\n if (typeof entry !== \"string\") {\n throw new Error(\\`Invalid metadata field \\${path}.\\${index}: expected string.\\`);\n }\n });\n}\n\nfunction validateOptionalHeadMetadata(value, path) {\n if (value === undefined) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new Error(\\`Invalid metadata field \\${path}: expected array.\\`);\n }\n value.forEach((descriptor, index) => {\n const descriptorPath = \\`\\${path}.\\${index}\\`;\n assertMetadataObject(descriptor, descriptorPath);\n if (![\"base\", \"link\", \"meta\", \"script\", \"style\"].includes(String(descriptor.tag))) {\n throw new Error(\\`Invalid metadata field \\${descriptorPath}.tag: expected supported head tag.\\`);\n }\n if (descriptor.content !== undefined && typeof descriptor.content !== \"string\") {\n throw new Error(\\`Invalid metadata field \\${descriptorPath}.content: expected string.\\`);\n }\n if (descriptor.nonce !== undefined && typeof descriptor.nonce !== \"boolean\" && typeof descriptor.nonce !== \"string\") {\n throw new Error(\\`Invalid metadata field \\${descriptorPath}.nonce: expected string or boolean.\\`);\n }\n if (descriptor.attrs !== undefined) {\n assertMetadataObject(descriptor.attrs, \\`\\${descriptorPath}.attrs\\`);\n for (const [name, attr] of Object.entries(descriptor.attrs)) {\n validateHeadAttribute(name, attr, \\`\\${descriptorPath}.attrs.\\${name}\\`);\n if (attr !== undefined && typeof attr !== \"boolean\" && typeof attr !== \"number\" && typeof attr !== \"string\") {\n throw new Error(\\`Invalid metadata field \\${descriptorPath}.attrs.\\${name}: expected string, number, boolean, or undefined.\\`);\n }\n }\n }\n });\n}\n\nfunction validateHeadAttribute(name, value, path) {\n if (!isSafeHeadAttributeName(name)) {\n throw new Error(\\`Invalid metadata field \\${path}: expected safe HTML attribute name.\\`);\n }\n const canonicalName = name.toLowerCase();\n if (canonicalName.startsWith(\"on\") || canonicalName === \"srcdoc\") {\n throw new Error(\\`Invalid metadata field \\${path}: event and dangerous attributes are not allowed.\\`);\n }\n if (typeof value === \"string\" && isUnsafeUrlAttribute(canonicalName, value)) {\n throw new Error(\\`Invalid metadata field \\${path}: unsafe URL value.\\`);\n }\n}\n\nfunction isSafeHeadAttributeName(name) {\n if (name.length === 0) {\n return false;\n }\n for (let index = 0; index < name.length; index += 1) {\n const code = name.charCodeAt(index);\n if (code <= 0x20 || code === 0x22 || code === 0x27 || code === 0x2f || code === 0x3c || code === 0x3d || code === 0x3e || code === 0x60 || code === 0x7f) {\n return false;\n }\n }\n return true;\n}\n\nfunction isUnsafeUrlAttribute(name, value) {\n if (name === \"srcset\" || name === \"imagesrcset\") {\n const canonical = canonicalizeUrlForSchemeCheck(value);\n for (const candidate of canonical.split(\",\")) {\n const url = candidate.trim().split(/\\\\s+/)[0] ?? \"\";\n if (url !== \"\" && isUnsafeUrlValueForName(\"src\", url)) {\n return true;\n }\n }\n return false;\n }\n if (name !== \"href\" && name !== \"src\" && name !== \"action\" && name !== \"formaction\" && name !== \"xlink:href\" && name !== \"ping\" && name !== \"poster\" && name !== \"background\" && name !== \"manifest\") {\n return false;\n }\n\n return isUnsafeUrlValueForName(name, value);\n}\n\nfunction canonicalizeUrlForSchemeCheck(value) {\n let start = 0;\n while (start < value.length && value.charCodeAt(start) <= 0x20) {\n start += 1;\n }\n\n return value.slice(start).replace(/[\\\\t\\\\r\\\\n]/g, \"\");\n}\n\nfunction isUnsafeUrlValueForName(name, value) {\n const canonical = canonicalizeUrlForSchemeCheck(value);\n const match = /^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(canonical);\n if (match === null) {\n return false;\n }\n const scheme = match[1].toLowerCase();\n if (scheme === \"data\" && (name === \"src\" || name === \"poster\")) {\n return !/^data:image\\\\/(?!svg\\\\+xml(?:[;,]|$))/i.test(canonical);\n }\n return scheme === \"javascript\" || scheme === \"data\" || scheme === \"vbscript\" || scheme === \"livescript\" || scheme === \"mhtml\" || scheme === \"file\";\n}\n\nfunction validateOptionalOpenGraphMetadata(value, path) {\n if (value === undefined) {\n return;\n }\n assertMetadataObject(value, path);\n validateOptionalMetadataScalar(value.description, \\`\\${path}.description\\`);\n validateOptionalMetadataImage(value.image, \\`\\${path}.image\\`);\n if (value.images !== undefined) {\n if (!Array.isArray(value.images)) {\n throw new Error(\\`Invalid metadata field \\${path}.images: expected array.\\`);\n }\n value.images.forEach((image, index) => validateOptionalMetadataImage(image, \\`\\${path}.images.\\${index}\\`));\n }\n validateOptionalMetadataScalar(value.title, \\`\\${path}.title\\`);\n validateUnknownJsonMetadataFields(value, path, new Set([\"description\", \"image\", \"images\", \"title\"]));\n}\n\nfunction validateOptionalMetadataImage(value, path) {\n if (value === undefined || isMetadataScalar(value)) {\n return;\n }\n assertMetadataObject(value, path);\n validateMetadataScalar(value.url, \\`\\${path}.url\\`);\n validateOptionalMetadataScalar(value.alt, \\`\\${path}.alt\\`);\n validateOptionalMetadataScalar(value.height, \\`\\${path}.height\\`);\n validateOptionalMetadataScalar(value.type, \\`\\${path}.type\\`);\n validateOptionalMetadataScalar(value.width, \\`\\${path}.width\\`);\n validateUnknownJsonMetadataFields(value, path, new Set([\"alt\", \"height\", \"type\", \"url\", \"width\"]));\n}\n\nfunction validateOptionalRobotsMetadata(value, path) {\n if (value === undefined || typeof value === \"string\") {\n return;\n }\n assertMetadataObject(value, path);\n if (value.follow !== undefined && typeof value.follow !== \"boolean\") {\n throw new Error(\\`Invalid metadata field \\${path}.follow: expected boolean.\\`);\n }\n if (value.index !== undefined && typeof value.index !== \"boolean\") {\n throw new Error(\\`Invalid metadata field \\${path}.index: expected boolean.\\`);\n }\n validateUnknownJsonMetadataFields(value, path, new Set([\"follow\", \"index\"]));\n}\n\nfunction validateOptionalSecurityMetadata(value, path) {\n if (value !== undefined) {\n validateJsonSerializableMetadata(value, path);\n }\n}\n\nfunction validateOptionalThemeColorMetadata(value, path) {\n if (value === undefined || isMetadataScalar(value)) {\n return;\n }\n validateOptionalMetadataObject(value, path, {\n color: validateMetadataScalar,\n media: validateMetadataScalar,\n });\n}\n\nfunction validateOptionalViewportMetadata(value, path) {\n if (value === undefined || isMetadataScalar(value)) {\n return;\n }\n assertMetadataObject(value, path);\n for (const [key, viewportValue] of Object.entries(value)) {\n if (viewportValue !== undefined && viewportValue !== null && !isMetadataScalar(viewportValue)) {\n throw new Error(\\`Invalid metadata field \\${path}.\\${key}: expected string, number, boolean, null, or undefined.\\`);\n }\n }\n}\n\nfunction validateUnknownJsonMetadataFields(value, path, knownFields) {\n for (const [key, entry] of Object.entries(value)) {\n if (!knownFields.has(key)) {\n validateJsonSerializableMetadata(entry, \\`\\${path}.\\${key}\\`);\n }\n }\n}\n\nfunction validateJsonSerializableMetadata(value, path) {\n if (value === undefined || value === null || isMetadataScalar(value)) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((entry, index) => validateJsonSerializableMetadata(entry, \\`\\${path}.\\${index}\\`));\n return;\n }\n if (typeof value === \"object\" && Object.getPrototypeOf(value) === Object.prototype) {\n for (const [key, entry] of Object.entries(value)) {\n validateJsonSerializableMetadata(entry, \\`\\${path}.\\${key}\\`);\n }\n return;\n }\n throw new Error(\\`Invalid metadata field \\${path}: expected a JSON-serializable value.\\`);\n}\n\nfunction assertMetadataObject(value, path) {\n if (typeof value !== \"object\" || value === null || Array.isArray(value) || (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)) {\n throw new Error(\\`Invalid metadata field \\${path}: expected object.\\`);\n }\n}\n\nfunction cloudflareMetadataHeaders(metadata, request, extraHeaders) {\n const headers = new Headers(extraHeaders);\n const csp = contentSecurityPolicy(metadata?.csp);\n if (csp !== undefined && !headers.has(\"content-security-policy\")) {\n headers.set(\"content-security-policy\", csp);\n }\n for (const [name, value] of Object.entries(routeSecurityHeaders(metadata?.security, request))) {\n if (!headers.has(name)) {\n headers.set(name, value);\n }\n }\n return headers;\n}\n\nfunction contentSecurityPolicy(csp) {\n if (csp?.disable === true || csp?.directives === undefined) {\n return undefined;\n }\n const serialized = [];\n for (const [name, value] of Object.entries(csp.directives)) {\n if (!/^[a-z][a-z0-9-]*$/i.test(name)) {\n throw new TypeError(\\`invalid CSP directive name: \\${JSON.stringify(name)}\\`);\n }\n const values = Array.isArray(value) ? [...value] : [value];\n for (const rawValue of values) {\n if (typeof rawValue !== \"string\" || !isValidCspDirectiveValue(rawValue)) {\n throw new TypeError(\\`invalid CSP directive value for \\${name}: \\${JSON.stringify(rawValue)}\\`);\n }\n }\n if (csp.nonce !== undefined && (name === \"script-src\" || name === \"style-src\")) {\n values.push(\\`'nonce-\\${csp.nonce}'\\`);\n }\n serialized.push(\\`\\${name} \\${values.join(\" \")}\\`);\n }\n return serialized.join(\"; \");\n}\n\nfunction isValidCspDirectiveValue(value) {\n if (/^'[A-Za-z0-9+/=_:.-]+'$/.test(value)) {\n return true;\n }\n if (value.length === 0) {\n return false;\n }\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n if (code <= 0x20 || code === 0x22 || code === 0x27 || code === 0x3b || code === 0x7f) {\n return false;\n }\n }\n return true;\n}\n\nfunction routeSecurityHeaders(security, request) {\n const headers = {\n \"permissions-policy\": \"camera=(), microphone=(), geolocation=()\",\n \"referrer-policy\": \"strict-origin-when-cross-origin\",\n \"x-content-type-options\": \"nosniff\",\n };\n if (security?.contentTypeOptions === null) {\n delete headers[\"x-content-type-options\"];\n } else {\n headers[\"x-content-type-options\"] = validateHeaderValue(security?.contentTypeOptions ?? \"nosniff\");\n }\n if (security?.referrerPolicy === null) {\n delete headers[\"referrer-policy\"];\n } else {\n headers[\"referrer-policy\"] = validateHeaderValue(security?.referrerPolicy ?? \"strict-origin-when-cross-origin\");\n }\n if (security?.frameOptions === null) {\n delete headers[\"x-frame-options\"];\n } else if (security?.frameOptions !== undefined) {\n headers[\"x-frame-options\"] = validateHeaderValue(security.frameOptions);\n }\n if (request.url.startsWith(\"https://\") && security?.hsts !== undefined && security.hsts !== false && security.hsts !== null) {\n headers[\"strict-transport-security\"] = \\`max-age=\\${Math.trunc(security.hsts.maxAge)}\\${security.hsts.includeSubDomains === true ? \"; includeSubDomains\" : \"\"}\\${security.hsts.preload === true ? \"; preload\" : \"\"}\\`;\n }\n return headers;\n}\n\nfunction validateHeaderValue(value) {\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n if (code <= 0x1f || code === 0x7f) {\n throw new TypeError(\\`Invalid security header value: \\${JSON.stringify(value)}\\`);\n }\n }\n return value;\n}\n\nfunction mergeRouteMetadata(metadata) {\n if (metadata.length === 0) {\n return undefined;\n }\n return metadata.reduce((merged, next) => ({\n ...merged,\n ...next,\n alternates: mergeObject(merged.alternates, next.alternates),\n csp: mergeObject(merged.csp, next.csp),\n head: mergeArrays(merged.head, next.head),\n icons: mergeObject(merged.icons, next.icons),\n openGraph: {\n ...mergeObject(merged.openGraph, next.openGraph),\n images: mergeArrays(merged.openGraph?.images, next.openGraph?.images),\n },\n }), {});\n}\n\nfunction mergeObject(left, right) {\n if (left === undefined) {\n return right;\n }\n if (right === undefined) {\n return left;\n }\n return { ...left, ...right };\n}\n\nfunction mergeArrays(left, right) {\n if (left === undefined || left.length === 0) {\n return right;\n }\n if (right === undefined || right.length === 0) {\n return left;\n }\n return [...left, ...right];\n}\n\nfunction injectCloudflareHead(html, metadata, routeHeadTags) {\n const metadataTags = routeMetadataHeadTags(metadata);\n const tags = routeHeadTags + metadataTags;\n let nextHtml = metadata?.lang === undefined ? html : injectHtmlLangAttribute(html, metadataString(metadata.lang));\n\n if (metadata?.title !== undefined) {\n nextHtml = nextHtml.replace(/<title\\\\b[^>]*>[\\\\s\\\\S]*?<\\\\/title\\\\s*>/i, \"\");\n }\n\n if (tags === \"\") {\n return nextHtml;\n }\n if (/<head(?:\\\\s[^>]*)?>/i.test(nextHtml)) {\n return nextHtml.replace(/<head(\\\\s[^>]*)?>/i, (match) => \\`\\${match}\\${tags}\\`);\n }\n if (/<html(?:\\\\s[^>]*)?>/i.test(nextHtml)) {\n return nextHtml.replace(/<html(\\\\s[^>]*)?>/i, (match) => \\`\\${match}<head>\\${tags}</head>\\`);\n }\n return \\`<head>\\${tags}</head>\\${nextHtml}\\`;\n}\n\nfunction routeMetadataHeadTags(metadata) {\n if (metadata === undefined) {\n return \"\";\n }\n const tags = [\n metadata.title === undefined ? undefined : \\`<title>\\${escapeHtml(metadataString(metadata.title))}</title>\\`,\n metadata.description === undefined ? undefined : \\`<meta name=\"description\" content=\"\\${escapeHtmlAttribute(metadataString(metadata.description))}\">\\`,\n metadata.alternates?.canonical === undefined ? undefined : \\`<link rel=\"canonical\" href=\"\\${escapeHtmlAttribute(metadataString(metadata.alternates.canonical))}\">\\`,\n metadata.openGraph?.title === undefined ? undefined : \\`<meta property=\"og:title\" content=\"\\${escapeHtmlAttribute(metadataString(metadata.openGraph.title))}\">\\`,\n metadata.openGraph?.description === undefined ? undefined : \\`<meta property=\"og:description\" content=\"\\${escapeHtmlAttribute(metadataString(metadata.openGraph.description))}\">\\`,\n ...openGraphImages(metadata.openGraph).map((image) => \\`<meta property=\"og:image\" content=\"\\${escapeHtmlAttribute(image)}\">\\`),\n metadata.icons?.icon === undefined ? undefined : \\`<link rel=\"icon\" href=\"\\${escapeHtmlAttribute(metadataString(metadata.icons.icon))}\">\\`,\n metadata.icons?.apple === undefined ? undefined : \\`<link rel=\"apple-touch-icon\" href=\"\\${escapeHtmlAttribute(metadataString(metadata.icons.apple))}\">\\`,\n ...headDescriptorTags(metadata.head, metadata.csp?.nonce),\n ];\n return tags.filter((tag) => tag !== undefined).join(\"\");\n}\n\nfunction openGraphImages(openGraph) {\n if (openGraph?.images !== undefined && openGraph.images.length > 0) {\n return openGraph.images.map(metadataImageUrl);\n }\n return openGraph?.image === undefined ? [] : [metadataImageUrl(openGraph.image)];\n}\n\nfunction headDescriptorTags(descriptors, nonce) {\n return (descriptors ?? []).flatMap((descriptor) => {\n const descriptorNonce = descriptor.nonce === true ? nonce : descriptor.nonce || undefined;\n const attrs = {\n ...descriptor.attrs,\n ...(descriptorNonce === undefined ? {} : { nonce: descriptorNonce }),\n };\n const attrText = Object.entries(attrs)\n .flatMap(([name, value]) => {\n if (value === undefined || value === false) {\n return [];\n }\n return value === true\n ? [escapeHtmlAttribute(name)]\n : [\\`\\${escapeHtmlAttribute(name)}=\"\\${escapeHtmlAttribute(String(value))}\"\\`];\n })\n .join(\" \");\n const open = attrText === \"\" ? \\`<\\${descriptor.tag}>\\` : \\`<\\${descriptor.tag} \\${attrText}>\\`;\n if (descriptor.tag === \"meta\" || descriptor.tag === \"link\" || descriptor.tag === \"base\") {\n return [open.slice(0, -1) + \">\"];\n }\n return [\\`\\${open}\\${String(descriptor.content ?? \"\").replaceAll(\"<\", \"\\\\\\\\u003c\")}</\\${descriptor.tag}>\\`];\n });\n}\n\nfunction injectHtmlLangAttribute(html, lang) {\n const escapedLang = escapeHtmlAttribute(lang);\n if (!/<html(?:\\\\s[^>]*)?>/i.test(html)) {\n return html;\n }\n return html.replace(/<html(\\\\s[^>]*)?>/i, (_match, attrs = \"\") => {\n const strippedAttrs = String(attrs).replace(/\\\\s+lang=(?:\"[^\"]*\"|'[^']*'|[^\\\\s>]+)/i, \"\");\n return \\`<html lang=\"\\${escapedLang}\"\\${strippedAttrs}>\\`;\n });\n}\n\nfunction metadataString(value) {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n throw new Error(\"Invalid metadata field: expected string, number, or boolean.\");\n}\n\nfunction metadataImageUrl(value) {\n if (typeof value === \"object\" && value !== null && \"url\" in value) {\n return metadataString(value.url);\n }\n return metadataString(value);\n}\n\nfunction cloudflareRouteHeadTags(manifest, routePath) {\n const route = manifest.routes.find((route) => route.path === routePath);\n const css = route?.css ?? [];\n const styles = css\n .map((styleSheet) => \\`<link rel=\"stylesheet\" href=\"/_mreact/client/\\${escapeHtmlAttribute(styleSheet)}\">\\`)\n .join(\"\");\n const script = route?.script;\n const preload = script === undefined\n ? \"\"\n : \\`<link rel=\"modulepreload\" href=\"/_mreact/client/\\${escapeHtmlAttribute(script)}\">\\`;\n return styles + preload;\n}\n\nfunction escapeHtmlAttribute(value) {\n return String(value ?? \"\")\n .replaceAll(\"&\", \"&\")\n .replaceAll('\"', \""\")\n .replaceAll(\"<\", \"<\");\n}\n\nfunction escapeHtml(value) {\n return String(value ?? \"\")\n .replaceAll(\"&\", \"&\")\n .replaceAll(\"<\", \"<\")\n .replaceAll(\">\", \">\");\n}`;\n}\n\nasync function buildCloudflareComponentExportModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n projectRoot: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n serverOutput: ServerOutputMode;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const metadataModule = await buildCloudflareRouteMetadataExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: options.filename,\n hasMetadata: buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n options.filename,\n )?.hasMetadata,\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const entry = `import * as routeModule from ${JSON.stringify(options.filename)};\n${metadataModule === undefined ? \"const metadataModule = {};\" : 'import * as metadataModule from \"mreact:metadata\";'}\n\nconst component = routeModule.default ?? routeModule.App ?? Object.values(routeModule).find((value) => typeof value === \"function\");\nexport const App = component;\nexport default component;\nexport const generateMetadata = metadataModule.generateMetadata;\nexport const metadata = metadataModule.metadata;\nexport const slots = routeModule.slots;`;\n\n return bundleCloudflareVirtualModule({\n entry,\n cacheDir: options.cacheDir,\n define: options.define,\n filename: `${options.filename}.mreact-cloudflare-${options.serverOutput}-component.js`,\n modules:\n metadataModule === undefined ? new Map() : new Map([[\"mreact:metadata\", metadataModule]]),\n plugins: [\n cloudflareServerSourceTransformPlugin({\n projectRoot: options.projectRoot,\n serverOutput: options.serverOutput,\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n }),\n cloudflareWorkspaceRuntimePlugin(),\n ],\n resolveDir: dirname(options.filename),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function writeCloudflareBatchedRouteModuleChunks(\n cloudflareDir: string,\n modules: CloudflareBatchedRouteModules,\n): Promise<void> {\n if (modules.chunks.some((chunk) => chunk.fileName.startsWith(\"routes/chunks/\"))) {\n await mkdir(join(cloudflareDir, \"routes\", \"chunks\"), { recursive: true });\n }\n\n await Promise.all(\n modules.chunks.map((chunk) => writeFile(join(cloudflareDir, chunk.fileName), chunk.code)),\n );\n}\n\nasync function buildCloudflareRouteLoaderModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n routes: readonly { filename: string; routeId: string }[];\n root: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n return await bundleCloudflareModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n entries: options.routes.map((route) => ({\n code: cloudflareRouteLoaderModuleEntry(route.filename),\n filename: `${route.filename}.mreact-cloudflare-loader.js`,\n name: `${route.routeId}.loader`,\n routeId: route.routeId,\n })),\n root: options.root,\n vitePlugins: options.vitePlugins,\n });\n}\n\nexport async function __buildCloudflareRouteLoaderModuleBatchForTests(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n projectRoot: string;\n routes: readonly { filename: string; routeId: string }[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Record<string, string>> {\n const output = await buildCloudflareRouteLoaderModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n root: options.projectRoot,\n routes: options.routes,\n vitePlugins: options.vitePlugins,\n });\n\n return Object.fromEntries(\n options.routes.map((route) => [route.routeId, output.entries.get(route.routeId)?.code ?? \"\"]),\n );\n}\n\nasync function buildCloudflareServerRouteModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n routes: readonly { filename: string; routeId: string }[];\n root: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n return await bundleCloudflareModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n entries: options.routes.map((route) => ({\n code: cloudflareServerRouteModuleEntry(route.filename),\n filename: `${route.filename}.mreact-cloudflare-server-route.js`,\n name: `${route.routeId}.server`,\n routeId: route.routeId,\n })),\n root: options.root,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function bundleCloudflareModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n entries: readonly {\n code: string;\n filename: string;\n name: string;\n routeId: string;\n }[];\n root: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n if (options.entries.length === 0) {\n return { chunks: [], entries: new Map() };\n }\n\n const output = await bundleRouterModules({\n cacheDir: options.cacheDir,\n chunkFileNames: \"routes/chunks/[name].[hash].mjs\",\n define: options.define,\n entries: options.entries,\n entryFileNames: \"routes/[name].[hash].mjs\",\n minify: true,\n platform: \"node\",\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n root: options.root,\n target: \"es2022\",\n vitePlugins: options.vitePlugins,\n });\n const entriesByName = new Map(options.entries.map((entry) => [entry.name, entry]));\n const entries = new Map<string, CloudflareBatchedRouteModule>();\n\n for (const chunk of output.chunks) {\n if (!chunk.isEntry) {\n continue;\n }\n\n const entry = entriesByName.get(chunk.name);\n\n if (entry === undefined) {\n continue;\n }\n\n entries.set(entry.routeId, {\n code: chunk.code,\n fileName: chunk.fileName,\n });\n }\n\n return { chunks: output.chunks, entries };\n}\n\nfunction cloudflareRouteLoaderModuleEntry(filename: string): string {\n return `export { loader } from ${JSON.stringify(filename)};`;\n}\n\nasync function buildCloudflareRouteMetadataExportModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n hasMetadata?: boolean | undefined;\n root?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string | undefined> {\n if (options.hasMetadata !== true) {\n return undefined;\n }\n\n const entry = `import * as routeMetadataModule from ${JSON.stringify(options.filename)};\nexport const generateMetadata = routeMetadataModule.generateMetadata;\nexport const metadata = routeMetadataModule.metadata;`;\n\n return bundleCloudflareModule({\n entry,\n cacheDir: options.cacheDir,\n define: options.define,\n filename: `${options.filename}.mreact-cloudflare-metadata.js`,\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n root: options.root,\n vitePlugins: options.vitePlugins,\n });\n}\n\nfunction cloudflareServerRouteModuleEntry(filename: string): string {\n return `import * as routeModule from ${JSON.stringify(filename)};\n\nexport const GET = routeModule.GET;\nexport const HEAD = routeModule.HEAD;\nexport const POST = routeModule.POST;\nexport const PUT = routeModule.PUT;\nexport const PATCH = routeModule.PATCH;\nexport const DELETE = routeModule.DELETE;\nexport const OPTIONS = routeModule.OPTIONS;\nexport const ALL = routeModule.ALL;\nconst defaultHandler = routeModule.default;\nexport default defaultHandler;`;\n}\n\nasync function bundleCloudflareModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n entry: string;\n filename: string;\n plugins: RouterCompatPlugin[];\n resolveDir: string;\n root?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n cacheDir: options.cacheDir,\n code: options.entry,\n define: options.define,\n filename: options.filename,\n minify: true,\n platform: \"node\",\n preserveExports: true,\n plugins: options.plugins,\n root: options.root,\n target: \"es2022\",\n vitePlugins: options.vitePlugins,\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to build Cloudflare route module for ${options.filename}.`);\n }\n\n return code;\n}\n\nasync function bundleCloudflareVirtualModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n entry: string;\n filename: string;\n modules: ReadonlyMap<string, string>;\n plugins: RouterCompatPlugin[];\n resolveDir: string;\n root?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return bundleCloudflareModule({\n cacheDir: options.cacheDir,\n define: options.define,\n entry: options.entry,\n filename: options.filename,\n plugins: [\n cloudflareVirtualModulesPlugin(\n new Map(\n Array.from(options.modules, ([id, contents]) => [\n id,\n { contents, resolveDir: options.resolveDir },\n ]),\n ),\n ),\n ...options.plugins,\n ],\n resolveDir: options.resolveDir,\n root: options.root,\n vitePlugins: options.vitePlugins,\n });\n}\n\ninterface CloudflareVirtualModule {\n contents: string;\n resolveDir: string;\n}\n\nfunction cloudflareVirtualModulesPlugin(\n modules: ReadonlyMap<string, CloudflareVirtualModule>,\n): RouterCompatPlugin {\n return {\n name: \"mreact-cloudflare-virtual-modules\",\n setup(buildApi) {\n buildApi.onResolve({ filter: /^mreact:/ }, (args) => ({\n namespace: \"mreact-cloudflare-virtual\",\n path: args.path,\n }));\n buildApi.onLoad({ filter: /.*/, namespace: \"mreact-cloudflare-virtual\" }, (args) => {\n const module = modules.get(args.path);\n\n if (module === undefined) {\n throw new Error(`Missing virtual Cloudflare module ${args.path}.`);\n }\n\n return {\n contents: module.contents,\n loader: \"js\",\n resolveDir: module.resolveDir,\n };\n });\n },\n };\n}\n\nasync function cloudflareShellFilesForPage(\n routesDir: string,\n pageFile: string,\n): Promise<CloudflareShellFile[]> {\n const shells = await existingRouteShellCandidates(routesDir, pageFile, async (file) => {\n try {\n return (await stat(file)).isFile();\n } catch {\n return false;\n }\n });\n\n return shells.map((shell) => ({\n file: shell.file,\n id: cloudflareShellBoundaryId(routesDir, shell.directory),\n kind: shell.kind,\n }));\n}\n\nfunction cloudflareShellBoundaryId(routesDir: string, directory: string): string {\n const relativeDirectory = relative(routesDir, directory);\n\n return relativeDirectory === \"\"\n ? \"root\"\n : relativeDirectory.replaceAll(sep, \"/\").replace(/[^A-Za-z0-9_$/-]/g, \"_\");\n}\n\nfunction cloudflareServerSourceTransformPlugin(options: {\n projectRoot: string;\n serverOutput: ServerOutputMode;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): RouterCompatPlugin {\n const clientRouteInferenceCache = createClientRouteInferenceCache();\n\n return {\n name: \"mreact-cloudflare-server-source-transform\",\n setup(buildApi) {\n buildApi.onLoad({ filter: /(?:\\.mreact)?\\.[cm]?[jt]sx$/ }, async (args) => {\n if (args.path.includes(`${sep}node_modules${sep}`)) {\n return undefined;\n }\n\n const source = await readFile(args.path, \"utf8\");\n const serverSource = isServerComponentFile(args.path)\n ? stripRouteBuildExports(source, args.path)\n : source;\n const sourceHash = hashText(serverSource);\n const routeFile = relative(options.projectRoot, args.path).replaceAll(sep, \"/\");\n const artifact = options.serverModules[routeFile]?.[options.serverOutput];\n const contents =\n artifact !== undefined && artifact.sourceHash === sourceHash\n ? artifact.code\n : await transformCloudflareServerSource({\n cache: clientRouteInferenceCache,\n filename: args.path,\n serverOutput: options.serverOutput,\n source: serverSource,\n vitePlugins: options.vitePlugins,\n });\n\n return {\n contents,\n loader: \"js\",\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n\nasync function transformCloudflareServerSource(options: {\n cache: ClientRouteInferenceCache;\n filename: string;\n serverOutput: ServerOutputMode;\n source: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const moduleContext = await compilerModuleContextForSource({\n cache: options.cache,\n code: options.source,\n filename: options.filename,\n });\n const clientInference = await inferClientRouteModule({\n cache: options.cache,\n code: options.source,\n filename: options.filename,\n moduleContext,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n const output = transformCompilerModuleContext({\n code: options.source,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n dev: false,\n filename: options.filename,\n moduleContext,\n serverEscape: nativeEscapeTransform,\n serverOutput: options.serverOutput,\n target: \"server\",\n });\n const fatalDiagnostics = output.diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(\n fatalDiagnostics\n .map((diagnostic) => formatDiagnostic(options.filename, diagnostic))\n .join(\"\\n\"),\n );\n }\n\n return output.code;\n}\n\nfunction cloudflareWorkspaceRuntimePlugin(): RouterCompatPlugin {\n const packageFile = (\n monorepoDir: string,\n packageName: string,\n entry: string,\n sourceExtension?: \"ts\" | \"tsx\" | undefined,\n ): string =>\n workspacePackageFile({\n currentFileUrl: import.meta.url,\n entry,\n monorepoDir,\n packageName,\n ...(sourceExtension === undefined ? {} : { sourceExtension }),\n });\n const routerCachePath = packageFile(\"router\", \"@reckona/mreact-router\", \"cache\");\n const routerCookiesPath = packageFile(\"router\", \"@reckona/mreact-router\", \"cookies\");\n const routerCsrfPath = packageFile(\"router\", \"@reckona/mreact-router\", \"csrf\");\n const routerDeferredPath = packageFile(\"router\", \"@reckona/mreact-router\", \"deferred\");\n const routerI18nPath = packageFile(\"router\", \"@reckona/mreact-router\", \"i18n\");\n const routerLinkPath = packageFile(\"router\", \"@reckona/mreact-router\", \"link\");\n const routerMultipartPath = packageFile(\"router\", \"@reckona/mreact-router\", \"multipart\");\n const routerNavigationPath = packageFile(\"router\", \"@reckona/mreact-router\", \"navigation\");\n const routerRuntimeStatePath = packageFile(\"router\", \"@reckona/mreact-router\", \"runtime-state\");\n const routerStreamListPath = packageFile(\"router\", \"@reckona/mreact-router\", \"stream-list\");\n const runtimePaths = new Map([\n [\"@reckona/mreact\", packageFile(\"react\", \"@reckona/mreact\", \"index\")],\n [\"@reckona/mreact/jsx-dev-runtime\", packageFile(\"react\", \"@reckona/mreact\", \"jsx-dev-runtime\")],\n [\"@reckona/mreact/jsx-runtime\", packageFile(\"react\", \"@reckona/mreact\", \"jsx-runtime\")],\n [\"@reckona/mreact-auth\", packageFile(\"auth\", \"@reckona/mreact-auth\", \"index\")],\n [\"@reckona/mreact-compat\", packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"index\")],\n [\n \"@reckona/mreact-compat/event-priority\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"event-priority\"),\n ],\n [\n \"@reckona/mreact-compat/flight\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"flight\"),\n ],\n [\n \"@reckona/mreact-compat/hooks\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"hooks-entry\"),\n ],\n [\n \"@reckona/mreact-compat/internal\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"internal\"),\n ],\n [\n \"@reckona/mreact-compat/jsx-dev-runtime\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-dev-runtime\"),\n ],\n [\n \"@reckona/mreact-compat/jsx-runtime\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-runtime\"),\n ],\n [\n \"@reckona/mreact-compat/scheduler\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"scheduler\"),\n ],\n [\"@reckona/mreact-query\", packageFile(\"query\", \"@reckona/mreact-query\", \"index\")],\n [\n \"@reckona/mreact-reactive-core\",\n packageFile(\"reactive-core\", \"@reckona/mreact-reactive-core\", \"index\"),\n ],\n [\n \"@reckona/mreact-router/adapters/cloudflare\",\n packageFile(\"router\", \"@reckona/mreact-router\", \"adapters/cloudflare\"),\n ],\n [\"@reckona/mreact-router/link\", routerLinkPath],\n [\"@reckona/mreact-router/runtime-state\", routerRuntimeStatePath],\n [\"@reckona/mreact-router/session\", packageFile(\"router\", \"@reckona/mreact-router\", \"session\")],\n [\"@reckona/mreact-router/stream-list\", routerStreamListPath],\n [\"@reckona/mreact-server\", packageFile(\"server\", \"@reckona/mreact-server\", \"index\")],\n [\n \"@reckona/mreact-shared/html-escape\",\n packageFile(\"shared\", \"@reckona/mreact-shared\", \"html-escape\"),\n ],\n ]);\n\n return {\n name: \"mreact-cloudflare-workspace-runtime\",\n setup(buildApi) {\n buildApi.onResolve(\n { filter: /^@reckona\\/mreact-router\\/(?:internal\\/)?native-escape$/ },\n () => ({\n namespace: \"mreact-cloudflare-native-escape\",\n path: \"native-escape\",\n }),\n );\n buildApi.onResolve({ filter: /^@reckona\\/mreact-router$/ }, () => ({\n namespace: \"mreact-cloudflare-router-index\",\n path: \"index\",\n }));\n buildApi.onResolve({ filter: /^@reckona\\/mreact(?:-[\\w-]+)?(?:\\/[\\w/-]+)?$/ }, (args) => {\n const path = runtimePaths.get(args.path);\n\n return path === undefined ? undefined : { path };\n });\n buildApi.onLoad(\n { filter: /^native-escape$/, namespace: \"mreact-cloudflare-native-escape\" },\n () => ({\n contents: `function escapeHtml(value) {\n return String(value ?? \"\").replace(/[&<>\"]/g, (char) =>\n char === \"&\" ? \"&\" : char === \"<\" ? \"<\" : char === \">\" ? \">\" : \""\"\n );\n}\nexport function escapeHtmlBatch(values) {\n return values.map(escapeHtml);\n}`,\n loader: \"js\",\n }),\n );\n buildApi.onLoad({ filter: /^index$/, namespace: \"mreact-cloudflare-router-index\" }, () => ({\n contents: `export { cacheControl, revalidatePath } from ${JSON.stringify(routerCachePath)};\nexport { deleteCookie, parseCookieHeader, serializeCookie, setCookie } from ${JSON.stringify(routerCookiesPath)};\nexport { createFormCsrfToken, formCsrfCookie, formCsrfFieldName, serverActionCookie, validateFormCsrf } from ${JSON.stringify(routerCsrfPath)};\nexport { defer, isDeferredLoaderData } from ${JSON.stringify(routerDeferredPath)};\nexport { defineMessages, detectLocale } from ${JSON.stringify(routerI18nPath)};\nexport { Link, linkProps } from ${JSON.stringify(routerLinkPath)};\nexport { parseMultipartStream } from ${JSON.stringify(routerMultipartPath)};\nexport { cookies, headers, html, json, next, notFound, redirect, redirectExternal, rewrite, throwNotFound } from ${JSON.stringify(routerNavigationPath)};\nexport { getServerRuntimeState } from ${JSON.stringify(routerRuntimeStatePath)};`,\n loader: \"js\",\n resolveDir: dirname(routerNavigationPath),\n }));\n buildApi.onLoad(\n { filter: /(?:^|[/\\\\])packages[/\\\\]server[/\\\\](?:src|dist)[/\\\\]native-flight\\.[jt]s$/ },\n () => ({\n contents: `export function getNativeFlight() {\n return undefined;\n}`,\n loader: \"js\",\n }),\n );\n },\n };\n}\n\nfunction cloudflareRouteRequiresGeneratedModule(\n route: AppRoute,\n prerenderedRoutes: Record<string, BuiltPrerenderedRoute>,\n): boolean {\n return (\n route.kind === \"metadata\" ||\n route.kind === \"server\" ||\n (route.kind === \"page\" &&\n (route.segments.some((segment) => segment.kind !== \"static\") ||\n prerenderedRoutes[route.path] === undefined))\n );\n}\n\nfunction isServerComponentFile(file: string): boolean {\n return /(?:^|\\/)(?:page|layout|template|loading|error|not-found)(?:\\.mreact)?\\.tsx$/.test(file);\n}\n\nfunction viteManifestFromClientRoutes(routes: ClientRouteManifestEntry[]): Record<\n string,\n {\n css?: readonly string[];\n file: string;\n imports?: readonly string[];\n isEntry: true;\n name: string;\n src: string;\n }\n> {\n const manifest: Record<\n string,\n {\n file: string;\n imports?: readonly string[];\n isEntry: true;\n name: string;\n src: string;\n }\n > = {};\n\n for (const route of routes) {\n if (!route.client || route.script === undefined || route.devScript === undefined) {\n continue;\n }\n\n manifest[route.devScript] = {\n ...(route.css === undefined ? {} : { css: route.css }),\n file: route.script,\n ...(route.imports === undefined ? {} : { imports: route.imports }),\n isEntry: true,\n name: route.routeId ?? routeIdForPath(route.path),\n src: route.devScript,\n };\n }\n\n return manifest;\n}\n\ninterface ClientRouteBundleManifest {\n assets: string[];\n routes: ClientRouteManifestEntry[];\n styles: ClientStyleManifestEntry[];\n}\n\ninterface ClientStyleManifestEntry {\n css: string[];\n file: string;\n}\n\ninterface RouteCssAssetBatch {\n assets: string[];\n css: string[];\n}\n\nasync function writeClientRouteBundles(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n cacheDir?: string | undefined;\n clientDir: string;\n clientConsolePureFunctions?: readonly string[] | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n projectRoot: string;\n routes: readonly AppRoute[];\n sourceAnalysis: BuildSourceAnalysisScope;\n sourceMapDir: string;\n sourceMaps: AppRouterClientSourceMapMode;\n sourceDirs: readonly string[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<ClientRouteBundleManifest> {\n type PreparedClientRouteEntry = {\n build: BuildClientRouteOutputOptions;\n css: string[];\n navigation: boolean;\n route: AppRoute & { kind: \"page\" };\n };\n type PreparedClientManifestEntry = { manifest: ClientRouteManifestEntry };\n type PreparedRouteEntry = PreparedClientRouteEntry | PreparedClientManifestEntry;\n const pageRoutes = options.routes.filter(\n (route): route is AppRoute & { kind: \"page\" } => route.kind === \"page\",\n );\n const routeCssAssets = await writeRouteCssAssetBatches({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n cacheDir: options.cacheDir,\n clientDir: options.clientDir,\n pageRoutes,\n projectRoot: options.projectRoot,\n sourceAnalysis: options.sourceAnalysis,\n sourceDirs: options.sourceDirs,\n vitePlugins: options.vitePlugins,\n });\n const specialCssAssets = await writeSpecialRouteCssAssetBatches({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n cacheDir: options.cacheDir,\n clientDir: options.clientDir,\n projectRoot: options.projectRoot,\n sourceAnalysis: options.sourceAnalysis,\n sourceDirs: options.sourceDirs,\n vitePlugins: options.vitePlugins,\n });\n const entries: PreparedRouteEntry[] = await Promise.all(\n options.routes.map(async (route) => {\n if (route.kind !== \"page\") {\n return {\n manifest: { path: route.path, kind: route.kind, client: false },\n };\n }\n\n const css = routeCssAssets.byRoute.get(route.file) ?? [];\n const source = buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n route.file,\n )?.source;\n\n if (source === undefined) {\n return {\n manifest: { path: route.path, kind: route.kind, client: false },\n };\n }\n\n const clientSource = stripRouteClientSource({ code: source, filename: route.file });\n const references = await collectClientRouteReferences({\n appDir: options.appDir,\n cache: options.clientRouteInferenceCache,\n code: clientSource,\n filename: route.file,\n routePath: route.path,\n vitePlugins: options.vitePlugins,\n });\n const navigation = await resolveNavigationRuntime({\n cache: options.clientRouteInferenceCache,\n code: source,\n filename: route.file,\n references,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of references.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n const navigationRuntimeDiagnostic = navigationRuntimeLinkDisabledDiagnostic({\n filename: route.file,\n references,\n routePath: route.path,\n source,\n });\n\n if (navigationRuntimeDiagnostic !== undefined) {\n console.warn(formatClientRouteInferenceDiagnostic(navigationRuntimeDiagnostic));\n }\n\n if (!references.client) {\n return {\n manifest: {\n path: route.path,\n kind: route.kind,\n client: false,\n ...(css.length === 0 ? {} : { css }),\n ...(navigation ? { navigation } : {}),\n },\n };\n }\n\n return {\n css,\n navigation,\n route: route as AppRoute & { kind: \"page\" },\n build: {\n code: clientSource,\n clientBoundaryImports: references.clientBoundaryImports,\n clientReferenceImports: references.clientReferenceImports,\n clientReferenceManifest: references.clientReferenceManifest,\n clientNavigation: detectClientNavigationHint(source),\n cacheDir: options.cacheDir,\n dropConsoleFunctions: options.clientConsolePureFunctions,\n filename: route.file,\n minify: true,\n routePath: route.path,\n sourceMap: options.sourceMaps !== \"none\",\n vitePlugins: options.vitePlugins,\n },\n };\n }),\n );\n const clientEntries = entries.filter(\n (entry): entry is PreparedClientRouteEntry => \"build\" in entry,\n );\n\n if (clientEntries.length === 0) {\n return {\n assets: [...routeCssAssets.assets, ...specialCssAssets.assets].sort(),\n routes: entries.flatMap((entry) => (\"manifest\" in entry ? [entry.manifest] : [])),\n styles: specialCssAssets.styles,\n };\n }\n\n let output: Awaited<ReturnType<typeof buildClientRouteBatchOutput>>;\n\n try {\n output = await buildClientRouteBatchOutput({\n assetBaseUrl: options.assetBaseUrl,\n cacheDir: options.cacheDir,\n dropConsoleFunctions: options.clientConsolePureFunctions,\n minify: true,\n projectRoot: options.projectRoot,\n routes: clientEntries.map((entry) => entry.build),\n sourceMap: options.sourceMaps !== \"none\",\n vitePlugins: options.vitePlugins,\n });\n } catch (error) {\n const routeContexts = clientEntries\n .map(\n (entry) => `Failed to build client bundle for ${entry.route.path} (${entry.route.file}).`,\n )\n .join(\"\\n\");\n\n throw new Error(\n `${routeContexts}\\nFailed to build client route bundles.\\n${errorMessage(error)}`,\n {\n cause: error,\n },\n );\n }\n\n const routeOutputs = new Map(output.routes.map((route) => [route.routePath, route]));\n const mapAssets = new Map(\n output.chunks.flatMap((chunk) =>\n chunk.map === undefined ? [] : [[`${chunk.fileName}.map`, chunk.map] as const],\n ),\n );\n\n for (const chunk of output.chunks) {\n const scriptBasename = chunk.fileName.split(\"/\").pop() ?? \"chunk.js\";\n const code = applyClientSourceMapReference({\n code: chunk.code,\n scriptBasename,\n sourceMaps: options.sourceMaps,\n });\n\n await mkdir(dirname(join(options.clientDir, chunk.fileName)), { recursive: true });\n await writeFile(join(options.clientDir, chunk.fileName), code);\n }\n\n for (const [sourceMap, map] of mapAssets) {\n const mapBaseDir = options.sourceMaps === \"hidden\" ? options.sourceMapDir : options.clientDir;\n\n await mkdir(dirname(join(mapBaseDir, sourceMap)), { recursive: true });\n await writeFile(join(mapBaseDir, sourceMap), map);\n }\n\n for (const asset of output.assets ?? []) {\n const source =\n typeof asset.source === \"string\" ? asset.source : Buffer.from(asset.source).toString(\"utf8\");\n\n await mkdir(dirname(join(options.clientDir, asset.fileName)), { recursive: true });\n await writeFile(join(options.clientDir, asset.fileName), source);\n }\n\n const generatedAssets = new Set<string>([\n ...routeCssAssets.assets,\n ...specialCssAssets.assets,\n ]);\n\n for (const chunk of output.chunks) {\n generatedAssets.add(chunk.fileName);\n if (options.sourceMaps === \"linked\" && chunk.map !== undefined) {\n generatedAssets.add(`${chunk.fileName}.map`);\n }\n }\n\n for (const asset of output.assets ?? []) {\n generatedAssets.add(asset.fileName);\n }\n\n const routes = entries.map((entry) => {\n if (!(\"build\" in entry)) {\n return entry.manifest;\n }\n\n const routeOutput = routeOutputs.get(entry.route.path);\n\n if (routeOutput === undefined) {\n throw new Error(`Failed to build client bundle for ${entry.route.path}: missing output.`);\n }\n\n const routeId = routeIdForPath(entry.route.path);\n const sourceMap = `${routeOutput.chunk.fileName}.map`;\n const code = applyClientSourceMapReference({\n code: routeOutput.chunk.code,\n scriptBasename: routeOutput.chunk.fileName.split(\"/\").pop() ?? \"route.js\",\n sourceMaps: options.sourceMaps,\n });\n\n return {\n bytes: Buffer.byteLength(code),\n path: entry.route.path,\n kind: entry.route.kind,\n client: true,\n ...(entry.build.clientReferenceManifest === undefined ||\n entry.build.clientReferenceManifest.length === 0\n ? {}\n : { clientReferenceManifest: entry.build.clientReferenceManifest }),\n ...(entry.css.length === 0 ? {} : { css: entry.css }),\n ...(routeOutput.chunk.imports.length === 0 ? {} : { imports: routeOutput.chunk.imports }),\n ...(entry.navigation ? { navigation: entry.navigation } : {}),\n routeId,\n script: routeOutput.chunk.fileName,\n ...(options.sourceMaps === \"linked\" ? { sourceMap } : {}),\n devScript: clientScriptForPath(entry.route.path),\n };\n });\n\n return {\n assets: Array.from(generatedAssets).sort(),\n routes,\n styles: specialCssAssets.styles,\n };\n}\n\nasync function writeSpecialRouteCssAssetBatches(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n cacheDir?: string | undefined;\n clientDir: string;\n projectRoot: string;\n sourceAnalysis: BuildSourceAnalysisScope;\n sourceDirs: readonly string[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<{ assets: string[]; styles: ClientStyleManifestEntry[] }> {\n const boundaryFiles = await collectSpecialBoundaryFiles(options.appDir);\n const entries = await mapWithBuildConcurrency(boundaryFiles, async (file) => {\n const cssFiles = await collectRouteCssFilesFromSources({\n appDir: options.appDir,\n pageFile: file,\n projectRoot: options.projectRoot,\n readSource: (sourceFile) =>\n buildSourceAnalysisForFile(options.sourceAnalysis, options.projectRoot, sourceFile)?.source,\n });\n\n if (cssFiles.length === 0) {\n return undefined;\n }\n\n const batch = await writeRouteCssAssetsForFiles({\n assetBaseUrl: options.assetBaseUrl,\n cacheDir: options.cacheDir,\n clientDir: options.clientDir,\n cssFiles,\n pageFile: file,\n projectRoot: options.projectRoot,\n routeIds: [specialBoundaryRouteId(options.appDir, file)],\n sourceDirs: options.sourceDirs,\n vitePlugins: options.vitePlugins,\n });\n\n return batch.css.length === 0\n ? undefined\n : ({\n assets: batch.assets,\n style: {\n css: batch.css,\n file: relative(options.appDir, file).split(sep).join(\"/\"),\n } satisfies ClientStyleManifestEntry,\n });\n });\n\n return {\n assets: entries.flatMap((entry) => entry?.assets ?? []).sort(),\n styles: entries\n .flatMap((entry) => (entry === undefined ? [] : [entry.style]))\n .sort((left, right) => left.file.localeCompare(right.file)),\n };\n}\n\nfunction specialBoundaryRouteId(appDir: string, file: string): string {\n const relativeFile = relative(appDir, file).split(sep);\n const filename = relativeFile.pop() ?? \"boundary.tsx\";\n const boundaryName = filename.replace(/(?:\\.mreact)?\\.tsx$/u, \"\");\n const routeParts = relativeFile.filter((part) => !part.startsWith(\"(\") || !part.endsWith(\")\"));\n const path = `/${[...routeParts, boundaryName].join(\"/\")}`;\n\n return routeIdForPath(path);\n}\n\nasync function writeRouteCssAssetBatches(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n cacheDir?: string | undefined;\n clientDir: string;\n pageRoutes: readonly (AppRoute & { kind: \"page\" })[];\n projectRoot: string;\n sourceAnalysis: BuildSourceAnalysisScope;\n sourceDirs: readonly string[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<{ assets: string[]; byRoute: Map<string, string[]> }> {\n const cssInputs = await mapWithBuildConcurrency(options.pageRoutes, async (route) => {\n const cssFiles = await collectRouteCssFilesFromSources({\n appDir: options.appDir,\n pageFile: route.file,\n projectRoot: options.projectRoot,\n readSource: (file) =>\n buildSourceAnalysisForFile(options.sourceAnalysis, options.projectRoot, file)?.source,\n });\n\n return { cssFiles, route };\n });\n const groups = new Map<\n string,\n { cssFiles: string[]; routeIds: string[]; routeFiles: string[] }\n >();\n\n for (const { cssFiles, route } of cssInputs) {\n if (cssFiles.length === 0) {\n continue;\n }\n\n const key = cssFiles.join(\"\\0\");\n const group = groups.get(key) ?? { cssFiles, routeFiles: [], routeIds: [] };\n group.routeFiles.push(route.file);\n group.routeIds.push(routeIdForPath(route.path));\n groups.set(key, group);\n }\n\n const writtenGroups = await mapWithBuildConcurrency(\n [...groups.entries()],\n async ([key, group]) =>\n [\n key,\n await writeRouteCssAssetsForFiles({\n assetBaseUrl: options.assetBaseUrl,\n cacheDir: options.cacheDir,\n clientDir: options.clientDir,\n cssFiles: group.cssFiles,\n pageFile: group.routeFiles[0] ?? options.appDir,\n projectRoot: options.projectRoot,\n routeIds: group.routeIds,\n sourceDirs: options.sourceDirs,\n vitePlugins: options.vitePlugins,\n }),\n ] as const,\n );\n const cssByGroup = new Map(writtenGroups);\n const cssByRoute = new Map<string, string[]>();\n const assets = new Set<string>();\n\n for (const [key, group] of groups) {\n const batch = cssByGroup.get(key);\n const css = batch?.css ?? [];\n\n for (const asset of batch?.assets ?? []) {\n assets.add(asset);\n }\n\n for (const routeFile of group.routeFiles) {\n cssByRoute.set(routeFile, css);\n }\n }\n\n return { assets: [...assets].sort(), byRoute: cssByRoute };\n}\n\nasync function writeRouteCssAssetsForFiles(options: {\n assetBaseUrl?: string | undefined;\n cacheDir?: string | undefined;\n clientDir: string;\n cssFiles: readonly string[];\n pageFile: string;\n projectRoot: string;\n routeIds: readonly string[];\n sourceDirs: readonly string[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteCssAssetBatch> {\n const cssFiles = [...options.cssFiles];\n if (cssFiles.length === 0) {\n return { assets: [], css: [] };\n }\n\n const code = [\n ...cssFiles.map((file) => `import ${JSON.stringify(file)};`),\n \"export default undefined;\",\n ].join(\"\\n\");\n const output = await bundleRouterModule({\n base: options.assetBaseUrl ?? \"/_mreact/client/\",\n cacheDir: options.cacheDir,\n code,\n filename: options.pageFile,\n minify: true,\n platform: \"browser\",\n root: options.projectRoot,\n vitePlugins: [\n productionRouteCssTailwindSourcePlugin({\n cssFiles,\n sourceDirs: options.sourceDirs,\n }),\n ...(options.vitePlugins ?? []),\n ],\n });\n const cssAssets = (output.assets ?? []).filter((asset) => asset.fileName.endsWith(\".css\"));\n const nonCssAssets = (output.assets ?? []).filter((asset) => !asset.fileName.endsWith(\".css\"));\n const writtenAssets: string[] = [];\n const written: string[] = [];\n const routeStem =\n options.routeIds.length === 1\n ? (options.routeIds[0] ?? \"index\")\n : `shared.${hashText(cssFiles.join(\"\\0\")).slice(0, 8)}`;\n\n for (const [index, asset] of cssAssets.entries()) {\n const source =\n typeof asset.source === \"string\" ? asset.source : Buffer.from(asset.source).toString(\"utf8\");\n const hash = createHash(\"sha256\").update(source).digest(\"hex\").slice(0, 8);\n const cssFile = `assets/routes/${routeStem}${cssAssets.length === 1 ? \"\" : `.${index}`}.${hash}.css`;\n\n await mkdir(dirname(join(options.clientDir, cssFile)), { recursive: true });\n await writeFile(join(options.clientDir, cssFile), source);\n written.push(cssFile);\n }\n\n for (const asset of nonCssAssets) {\n await mkdir(dirname(join(options.clientDir, asset.fileName)), { recursive: true });\n await writeFile(\n join(options.clientDir, asset.fileName),\n typeof asset.source === \"string\" ? asset.source : Buffer.from(asset.source),\n );\n writtenAssets.push(asset.fileName);\n }\n\n return { assets: writtenAssets.sort(), css: written };\n}\n\nfunction productionRouteCssTailwindSourcePlugin(options: {\n cssFiles: readonly string[];\n sourceDirs: readonly string[];\n}): Plugin {\n const cssFiles = new Set(options.cssFiles);\n\n return {\n name: \"mreact-production-route-css-tailwind-source\",\n enforce: \"pre\",\n transform(code, id) {\n const [filename] = id.split(/[?#]/, 1);\n\n if (filename === undefined || !cssFiles.has(filename)) {\n return;\n }\n\n return prependTailwindSourceDirectives({\n code,\n cssFile: filename,\n sourceDirs: options.sourceDirs,\n });\n },\n };\n}\n\nfunction applyClientSourceMapReference(options: {\n code: string;\n scriptBasename: string;\n sourceMaps: AppRouterClientSourceMapMode;\n}): string {\n const sourceMappingUrlPattern = /\\n?\\/\\/# sourceMappingURL=route\\.js\\.map\\s*$/;\n\n if (options.sourceMaps === \"none\") {\n return options.code;\n }\n\n if (options.sourceMaps === \"hidden\") {\n return options.code.replace(sourceMappingUrlPattern, \"\");\n }\n\n const code = options.code.replace(\n sourceMappingUrlPattern,\n `\\n//# sourceMappingURL=${options.scriptBasename}.map`,\n );\n\n return code.includes(\"sourceMappingURL=\")\n ? code\n : `${code}\\n//# sourceMappingURL=${options.scriptBasename}.map`;\n}\n\nasync function writeNavigationRuntimeBundle(\n clientDir: string,\n dropConsoleFunctions: readonly string[] | undefined,\n): Promise<string> {\n const output = await buildNavigationRuntimeBundle({\n dropConsoleFunctions,\n minify: true,\n sourceMap: false,\n });\n const hash = createHash(\"sha256\").update(output.code).digest(\"hex\").slice(0, 8);\n const script = `assets/navigation.${hash}.js`;\n\n await mkdir(dirname(join(clientDir, script)), { recursive: true });\n await writeFile(join(clientDir, script), output.code);\n\n return script;\n}\n\nasync function writeAwsLambdaHandlerArtifact(outDir: string): Promise<void> {\n const awsLambdaDir = join(outDir, \"aws-lambda\");\n await mkdir(awsLambdaDir, { recursive: true });\n await writeFile(join(awsLambdaDir, \"mreact-handler.mjs\"), awsLambdaHandlerSource(\"..\"));\n}\n\nasync function writeCloudflareWorkerArtifact(options: {\n cloudflareDir: string;\n clientManifest: { publicAssets?: readonly string[]; routes: readonly ClientRouteManifestEntry[] };\n modulesFile: string;\n serverManifest: BuiltServerManifest;\n}): Promise<void> {\n await writeFile(\n join(options.cloudflareDir, \"worker.mjs\"),\n [\n `import { createCloudflareBuiltRequestHandler, createCloudflareRouteModuleRenderer, createCloudflareStaticAssetLoader } from \"@reckona/mreact-router/adapters/cloudflare\";`,\n `import { routeModules } from ${JSON.stringify(`./${options.modulesFile}`)};`,\n ``,\n `const serverManifest = ${JSON.stringify(options.serverManifest, null, 2)};`,\n `const clientManifest = ${JSON.stringify(options.clientManifest, null, 2)};`,\n ``,\n `export default createCloudflareBuiltRequestHandler({`,\n ` assets: createCloudflareStaticAssetLoader({`,\n ` binding: (env) => env?.ASSETS,`,\n ` clientManifest,`,\n ` }),`,\n ` clientManifest,`,\n ` renderRoute: createCloudflareRouteModuleRenderer({ modules: routeModules }),`,\n ` serverManifest,`,\n `});`,\n ``,\n ].join(\"\\n\"),\n );\n}\n\n/**\n * Packages a built app-router output directory into the minimal AWS Lambda artifact layout.\n *\n * The package contains `.mreact`, a Lambda handler, project package metadata, production dependencies, and `mreact-lambda-artifact.json`; it intentionally excludes source files and development tooling that are not needed at runtime.\n */\nexport async function packageAwsLambdaArtifact(\n options: PackageAwsLambdaArtifactOptions,\n): Promise<AwsLambdaArtifactManifest> {\n await assertRequiredBuildFile(join(options.fromDir, \"server\", \"manifest.json\"));\n await assertRequiredBuildFile(join(options.fromDir, \"server\", \"import-policy.json\"));\n await assertRequiredBuildFile(join(options.fromDir, \"client\", \"manifest.json\"));\n\n await rm(options.outDir, { force: true, recursive: true });\n await mkdir(options.outDir, { recursive: true });\n await cp(options.fromDir, join(options.outDir, \".mreact\"), {\n force: true,\n recursive: true,\n });\n await copyAwsLambdaProjectMetadata({\n fromDir: dirname(options.fromDir),\n outDir: options.outDir,\n });\n if (options.handlerEntry === undefined) {\n await writeFile(join(options.outDir, \"mreact-handler.mjs\"), awsLambdaHandlerSource(\".mreact\"));\n } else {\n await writeAwsLambdaCustomHandlerArtifact({\n entry: options.handlerEntry,\n projectRoot: dirname(options.fromDir),\n outDir: options.outDir,\n });\n }\n\n if (options.skipRuntimeDependencyCheck !== true) {\n await assertAwsLambdaRuntimeDependencies(options.outDir);\n }\n\n const files = await collectArtifactFiles(options.outDir, \"\");\n const manifest = {\n files,\n handler: \"mreact-handler.handler\",\n runtime: \"aws-lambda\",\n totalBytes: files.reduce((total, file) => total + file.bytes, 0),\n version: 1,\n } satisfies AwsLambdaArtifactManifest;\n\n await writeFile(\n join(options.outDir, \"mreact-lambda-artifact.json\"),\n JSON.stringify(manifest, null, 2),\n );\n\n return manifest;\n}\n\nasync function writeAwsLambdaCustomHandlerArtifact(options: {\n entry: string;\n outDir: string;\n projectRoot: string;\n}): Promise<void> {\n const entry = resolve(options.entry);\n const output = await bundleRouterModule({\n code: await readFile(entry, \"utf8\"),\n filename: entry,\n outfile: \"mreact-handler.mjs\",\n platform: \"node\",\n plugins: [externalizePackageImportsPlugin()],\n preserveExports: true,\n root: options.projectRoot,\n target: \"node24\",\n });\n\n await writeFile(join(options.outDir, \"mreact-handler.mjs\"), output.code);\n}\n\nfunction externalizePackageImportsPlugin(): RouterCompatPlugin {\n return {\n name: \"mreact-router-externalize-package-imports\",\n setup(buildApi) {\n buildApi.onResolve({ filter: /^(?:node:|[A-Za-z@])/ }, (args) =>\n isBarePackageImport(args.path) ? { external: true, path: args.path } : undefined,\n );\n },\n };\n}\n\nfunction isBarePackageImport(specifier: string): boolean {\n return (\n specifier.startsWith(\"node:\") ||\n (!specifier.startsWith(\".\") && !specifier.startsWith(\"/\") && !specifier.includes(\"\\\\\"))\n );\n}\n\nasync function assertAwsLambdaRuntimeDependencies(outDir: string): Promise<void> {\n try {\n const info = await stat(\n join(outDir, \"node_modules\", \"@reckona\", \"mreact-router\", \"package.json\"),\n );\n if (info.isFile()) {\n return;\n }\n } catch {\n // Throw the actionable error below.\n }\n\n throw new Error(\n [\n \"AWS Lambda artifact is missing production runtime dependencies.\",\n \"Install production dependencies into the package directory before deployment,\",\n \"or rerun with --skip-runtime-dependency-check only when a later deploy step installs them into .lambda/node_modules.\",\n ].join(\" \"),\n );\n}\n\n/**\n * Packages a Cloudflare-target build for Cloudflare Pages advanced mode.\n *\n * The package writes `_worker.js`, generated client assets, public assets, and `mreact-cloudflare-pages-artifact.json`; deploy the output directory rather than the raw `.mreact` build tree.\n */\nexport async function packageCloudflarePagesArtifact(\n options: PackageCloudflarePagesArtifactOptions,\n): Promise<CloudflarePagesArtifactManifest> {\n const clientManifestPath = join(options.fromDir, \"client\", \"manifest.json\");\n const workerPath = join(options.fromDir, \"cloudflare\", \"worker.mjs\");\n\n await assertRequiredBuildFile(clientManifestPath);\n await assertRequiredBuildFile(workerPath);\n await assertRequiredBuildFile(join(options.fromDir, \"cloudflare\", \"route-modules.mjs\"));\n assertPackageOutputDoesNotReplaceBuildOutput(options);\n\n const clientManifest = JSON.parse(await readFile(clientManifestPath, \"utf8\")) as {\n publicAssets?: readonly string[] | undefined;\n };\n\n await rm(options.outDir, { force: true, recursive: true });\n await mkdir(options.outDir, { recursive: true });\n await cp(join(options.fromDir, \"client\"), join(options.outDir, \"_mreact\", \"client\"), {\n force: true,\n recursive: true,\n });\n await copyCloudflarePagesPublicAssets({\n clientDir: join(options.fromDir, \"client\"),\n outDir: options.outDir,\n publicAssets: clientManifest.publicAssets ?? [],\n });\n\n const bundledWorker = await bundleRouterModule({\n code: await readFile(workerPath, \"utf8\"),\n filename: workerPath,\n minify: true,\n modulePreload: false,\n nodeBuiltins: \"externalize\",\n outfile: \"_worker.js\",\n platform: \"browser\",\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n preserveExports: true,\n target: \"es2022\",\n });\n await writeFile(join(options.outDir, \"_worker.js\"), bundledWorker.code);\n\n const files = await collectArtifactFiles(options.outDir, \"\");\n const manifest = {\n files,\n runtime: \"cloudflare-pages\",\n totalBytes: files.reduce((total, file) => total + file.bytes, 0),\n version: 1,\n worker: \"_worker.js\",\n } satisfies CloudflarePagesArtifactManifest;\n\n await writeFile(\n join(options.outDir, \"mreact-cloudflare-pages-artifact.json\"),\n JSON.stringify(manifest, null, 2),\n );\n\n return manifest;\n}\n\nasync function assertRequiredBuildFile(path: string): Promise<void> {\n try {\n const info = await stat(path);\n if (info.isFile()) {\n return;\n }\n } catch {\n // Throw the actionable error below.\n }\n\n throw new Error(`Missing required mreact build artifact: ${path}`);\n}\n\nfunction assertPackageOutputDoesNotReplaceBuildOutput(options: {\n fromDir: string;\n outDir: string;\n}): void {\n if (resolve(options.fromDir) === resolve(options.outDir)) {\n throw new Error(\n \"Package output directory must be different from the mreact build output directory.\",\n );\n }\n}\n\nasync function copyCloudflarePagesPublicAssets(options: {\n clientDir: string;\n outDir: string;\n publicAssets: readonly string[];\n}): Promise<void> {\n for (const asset of options.publicAssets) {\n if (\n !asset.startsWith(\"/\") ||\n asset.startsWith(\"//\") ||\n asset.includes(\"..\") ||\n asset === \"/_mreact\" ||\n asset.startsWith(\"/_mreact/\")\n ) {\n continue;\n }\n\n const relativeAsset = asset.slice(1);\n await mkdir(dirname(join(options.outDir, relativeAsset)), { recursive: true });\n await copyFile(join(options.clientDir, relativeAsset), join(options.outDir, relativeAsset));\n }\n}\n\nasync function copyAwsLambdaProjectMetadata(options: {\n fromDir: string;\n outDir: string;\n}): Promise<void> {\n for (const file of [\n \"package.json\",\n \"package-lock.json\",\n \"npm-shrinkwrap.json\",\n \"pnpm-lock.yaml\",\n \"pnpm-workspace.yaml\",\n \"bun.lock\",\n ]) {\n try {\n await cp(join(options.fromDir, file), join(options.outDir, file), { force: true });\n } catch (error) {\n if (!isNodeError(error) || error.code !== \"ENOENT\") {\n throw error;\n }\n }\n }\n}\n\nasync function collectArtifactFiles(\n rootDir: string,\n relativeDir: string,\n): Promise<Array<{ bytes: number; path: string }>> {\n const entries = await readdir(join(rootDir, relativeDir), { withFileTypes: true });\n const files: Array<{ bytes: number; path: string }> = [];\n\n for (const entry of entries) {\n const relativePath = relativeDir === \"\" ? entry.name : `${relativeDir}/${entry.name}`;\n const absolutePath = join(rootDir, relativePath);\n\n if (entry.isDirectory()) {\n files.push(...(await collectArtifactFiles(rootDir, relativePath)));\n continue;\n }\n\n if (entry.isFile()) {\n const info = await stat(absolutePath);\n files.push({ bytes: info.size, path: relativePath });\n }\n }\n\n return files.sort(\n (left, right) => right.bytes - left.bytes || left.path.localeCompare(right.path),\n );\n}\n\nfunction awsLambdaHandlerSource(outDirRelativeToHandler: string): string {\n return `import { fileURLToPath } from \"node:url\";\nimport { dirname, resolve } from \"node:path\";\nimport { createPreloadedAwsLambdaRequestHandler } from \"@reckona/mreact-router/adapters/aws-lambda\";\n\nconst here = dirname(fileURLToPath(import.meta.url));\n\nexport const handler = await createPreloadedAwsLambdaRequestHandler({\n importPolicy: \"generated\",\n outDir: resolve(here, ${JSON.stringify(outDirRelativeToHandler)}),\n preload: { mode: \"all\" },\n timings: process.env.MREACT_ROUTER_TIMINGS === \"1\",\n});\n`;\n}\n\nasync function validateProductionRoutes(options: {\n clientRouteInferenceCache: ClientRouteInferenceCache;\n files: Record<string, string>;\n project: ResolvedAppRouterProject;\n projectRoot: string;\n routes: readonly AppRoute[];\n sourceAnalysis: BuildSourceAnalysisScope;\n serverTransformCache: ServerTransformCache;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<void> {\n for (const route of options.routes) {\n if (route.kind !== \"page\") {\n continue;\n }\n\n const filename = relative(options.projectRoot, route.file);\n const analysis = options.sourceAnalysis.byRouteFile.get(filename.split(sep).join(\"/\"));\n\n if (analysis === undefined) {\n continue;\n }\n\n const output = await transformServerRouteSource({\n cache: options.serverTransformCache,\n code: analysis.routeCode,\n clientBoundaryImports: analysis.clientBoundaryImports,\n clientBoundaryFallbackImports: analysis.clientBoundaryFallbackImports,\n filename: route.file,\n moduleContextCache: options.clientRouteInferenceCache,\n serverOutput: analysis.streamRoute ? \"stream\" : \"string\",\n });\n const fatalDiagnostics = output.diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(\n fatalDiagnostics.map((diagnostic) => formatDiagnostic(route.file, diagnostic)).join(\"\\n\"),\n );\n }\n }\n}\n\nasync function collectBuildFiles(\n projectRoot: string,\n allowedSourceDirs: readonly string[],\n appDir: string,\n): Promise<Record<string, string>> {\n const files: Record<string, string> = {};\n\n for (const directory of allowedSourceDirs) {\n const sourceFiles = (await collectFiles(directory)).flatMap((file) => {\n const relativeFile = relative(projectRoot, file);\n\n if (\n relativeFile === \"\" ||\n relativeFile.startsWith(\"..\") ||\n relativeFile.startsWith(sep) ||\n isAppFileConventionAsset(file, appDir) ||\n isProductionBuildIgnoredSourceFile(relativeFile)\n ) {\n return [];\n }\n\n return [{ file, relativeFile }];\n });\n const fileContents = await mapWithBuildConcurrency(\n sourceFiles,\n async ({ file, relativeFile }) => [relativeFile, await readFile(file, \"utf8\")] as const,\n );\n\n for (const [relativeFile, source] of fileContents) {\n files[relativeFile] = source;\n }\n }\n\n return files;\n}\n\nfunction isProductionBuildIgnoredSourceFile(relativeFile: string): boolean {\n return (\n /(?:^|[/\\\\])__tests__(?:[/\\\\]|$)/u.test(relativeFile) ||\n /(?:^|[/\\\\])[^/\\\\]+\\.(?:spec|test)\\.[cm]?[jt]sx?$/u.test(relativeFile)\n );\n}\n\nfunction isAppFileConventionAsset(file: string, appDir: string): boolean {\n const relativeFile = relative(appDir, file);\n if (relativeFile === \"\" || relativeFile.startsWith(\"..\") || relativeFile.includes(sep)) {\n return false;\n }\n\n return appFileConventionForRootFilename(relativeFile)?.kind === \"asset\";\n}\n\nasync function collectFiles(directory: string): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true });\n const nestedFiles = await mapWithBuildConcurrency(entries, async (entry) => {\n const path = join(directory, entry.name);\n\n if (entry.isDirectory()) {\n return await collectFiles(path);\n }\n\n if (entry.isFile()) {\n return [path];\n }\n\n return [];\n });\n\n return nestedFiles.flat();\n}\n\nfunction hashText(text: string): string {\n return createHash(\"sha256\").update(text).digest(\"hex\").slice(0, 16);\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { Dirent } from \"node:fs\";\nimport {\n copyFile,\n cp,\n lstat,\n mkdir,\n readdir,\n readFile,\n rm,\n stat,\n writeFile,\n} from \"node:fs/promises\";\nimport { builtinModules } from \"node:module\";\nimport { availableParallelism } from \"node:os\";\nimport { dirname, join, relative, resolve, sep } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport {\n collectStaticImportReferences,\n collectTopLevelValueExportNames,\n formatDiagnostic,\n hasModuleDirective,\n transform,\n} from \"@reckona/mreact-compiler\";\nimport { transformCompilerModuleContext } from \"@reckona/mreact-compiler/internal\";\nimport type { ServerOutputMode } from \"@reckona/mreact-compiler\";\nimport {\n compilerModuleContextForSource,\n collectClientRouteReferences,\n createClientRouteInferenceCache,\n detectClientNavigationHint,\n formatClientRouteInferenceDiagnostic,\n inferClientRouteModule,\n navigationRuntimeLinkDisabledDiagnostic,\n resolveNavigationRuntime,\n type ClientRouteManifestEntry,\n type ClientRouteInferenceCache,\n} from \"./client-route-inference.js\";\nimport {\n buildClientRouteBatchOutput,\n buildNavigationRuntimeBundle,\n clientScriptForPath,\n routeIdForPath,\n type BuildClientRouteOutputOptions,\n} from \"./navigation-runtime.js\";\nimport {\n COMPAT_VENDOR_PLACEHOLDER_PREFIX,\n bundleAppRouterSourceModule,\n fileImportMetaUrlPlugin,\n importAppRouterSourceModule,\n resolveCompatVendorEntryFiles,\n sourceReferencesCompatVendorSpecifier,\n} from \"./module-runner.js\";\nimport { compileRouteMatcherArtifact, scanAppRoutes } from \"./routes.js\";\nimport type { AppRoute, CompiledRouteMatcherArtifact } from \"./routes.js\";\nimport { appFileConventionForRootFilename } from \"./file-conventions.js\";\nimport {\n resolveAppRouterProjectOptions,\n resolveBuildTargets,\n type AppRouterProjectOptions,\n type AppRouterBuildTarget,\n type AppRouterClientSourceMapMode,\n type ResolvedAppRouterProject,\n} from \"./config.js\";\nimport type { ModuleMetadata } from \"@reckona/mreact-compiler\";\nimport type { RouteCachePolicy } from \"./cache.js\";\nimport { routeCachePolicyFromSource } from \"./cache.js\";\nimport { bundleMiddlewareModuleCode, renderAppRequest } from \"./render.js\";\nimport { createAppRouterImportPolicyPlugin, type AppRouterImportPolicy } from \"./import-policy.js\";\nimport {\n hasGenerateStaticParamsExport,\n hasLoaderExport,\n hasPrerenderExport,\n isStreamRouteSource,\n routeClosureMayUseAwaitBoundary,\n stripRouteBuildExports,\n stripRouteClientOnlyExports,\n stripRouteClientSource,\n stripRouteLoaderOnlyExports,\n stripRouteMetadataOnlyExports,\n stripRouteRequestOnlyExports,\n} from \"./route-source.js\";\nimport {\n bundleRouterModule,\n bundleRouterModules,\n type RouterCompatPlugin,\n type RouterBundleChunkOutput,\n type RouterBundleModulesOutput,\n type RouterBundleOutput,\n} from \"./bundle-pipeline.js\";\nimport { collectRouteCssFilesFromSources, collectSpecialBoundaryFiles } from \"./route-styles.js\";\nimport { existingRouteShellCandidates } from \"./route-shells.js\";\nimport { sourceModuleCandidates } from \"./source-modules.js\";\nimport { collectBuildInferredServerActions } from \"./server-action-inference.js\";\nimport { prepareRouteServerActionPlaceholders } from \"./actions.js\";\nimport { viteDefineCacheKey, vitePluginsCacheKey } from \"./vite-plugin-cache-key.js\";\nimport { workspacePackageFile } from \"./workspace-packages.js\";\nimport { prependTailwindSourceDirectives } from \"./tailwind-source.js\";\nimport {\n parseRouteMiddlewareControl,\n parseStaticMiddlewareConfig,\n validateRouteMiddlewareControl,\n} from \"./middleware.js\";\nimport type { Plugin, PluginOption, UserConfig } from \"vite\";\n\nconst nativeEscapeTransform = {\n batchImportName: \"escapeHtmlBatch\",\n batchImportSource: \"@reckona/mreact-router/native-escape\",\n} as const;\n\nconst defaultBuildConcurrency = Math.max(1, Math.min(2, availableParallelism()));\nconst serverArtifactFilesystemConcurrency = 2;\n\ntype ServerTransformOutput = ReturnType<typeof transform>;\ntype ServerTransformCache = Map<string, Promise<ServerTransformOutput>>;\n\n/**\n * Configures an app-router production build and its deployment targets.\n */\nexport interface BuildAppOptions extends AppRouterProjectOptions {\n onBuildProgress?: ((event: BuildAppProgressEvent) => void) | undefined;\n onBuildPhaseTiming?: ((timing: BuildAppPhaseTiming) => void) | undefined;\n outDir: string;\n targets?: readonly AppRouterBuildTarget[] | undefined;\n viteConfig?: Pick<UserConfig, \"define\" | \"plugins\"> | undefined;\n}\n\nasync function validateBuildMiddlewareControls(\n appDir: string,\n routes: readonly AppRoute[],\n): Promise<void> {\n const availableIds = await collectBuildMiddlewareIds(appDir);\n\n for (const route of routes) {\n if (route.kind !== \"page\") {\n continue;\n }\n\n validateRouteMiddlewareControl({\n availableIds,\n control: parseRouteMiddlewareControl(await readFile(route.file, \"utf8\")),\n routePath: route.path,\n });\n }\n}\n\nasync function collectBuildMiddlewareIds(appDir: string): Promise<ReadonlySet<string>> {\n const ids = new Set<string>();\n\n for (const file of [join(appDir, \"middleware.ts\"), join(appDir, \"middleware.mreact.ts\")]) {\n let code: string;\n try {\n code = await readFile(file, \"utf8\");\n } catch {\n continue;\n }\n\n const id = parseStaticMiddlewareConfig(code).id;\n\n if (id !== undefined) {\n ids.add(id);\n }\n }\n\n return ids;\n}\n\n/**\n * Names a high-level phase reported while building an app-router application.\n */\nexport type BuildAppPhase =\n | \"scan\"\n | \"collectFiles\"\n | \"analyzeSources\"\n | \"validate\"\n | \"prepareOutput\"\n | \"publicAssets\"\n | \"serverActionManifest\"\n | \"serverModules\"\n | \"importPolicy\"\n | \"serverModuleArtifacts\"\n | \"clientBundles\"\n | \"navigationRuntime\"\n | \"prerender\"\n | \"cloudflare\"\n | \"writeManifests\"\n | \"adapterArtifacts\";\n\n/**\n * Captures the elapsed time for a completed app-router build phase.\n */\nexport interface BuildAppPhaseTiming {\n ms: number;\n phase: BuildAppPhase;\n}\n\n/**\n * Reports build progress events emitted during app-router compilation and packaging.\n */\nexport type BuildAppProgressEvent =\n | {\n kind: \"phase-start\";\n phase: BuildAppPhase;\n }\n | {\n kind: \"phase-end\";\n ms: number;\n phase: BuildAppPhase;\n }\n | {\n count: number;\n kind: \"routes-discovered\";\n };\n\n/**\n * Contains the route graph produced by an app-router build.\n */\nexport interface BuildAppResult {\n routes: AppRoute[];\n}\n\n/**\n * Describes the generated import policy artifact consumed by built request handlers.\n */\nexport interface BuiltImportPolicyArtifact {\n byRoute: Record<string, string[]>;\n runtimePackages: string[];\n version: 1;\n}\n\n/**\n * Summarizes the files and entry point produced for an AWS Lambda artifact.\n */\nexport interface AwsLambdaArtifactManifest {\n files: Array<{ bytes: number; path: string }>;\n handler: string;\n runtime: \"aws-lambda\";\n totalBytes: number;\n version: 1;\n}\n\n/**\n * Summarizes the files and worker entry produced for a Cloudflare Pages artifact.\n */\nexport interface CloudflarePagesArtifactManifest {\n files: Array<{ bytes: number; path: string }>;\n runtime: \"cloudflare-pages\";\n totalBytes: number;\n version: 1;\n worker: \"_worker.js\";\n}\n\n/**\n * Configures packaging of a built app-router output directory for AWS Lambda.\n */\nexport interface PackageAwsLambdaArtifactOptions {\n fromDir: string;\n handlerEntry?: string | undefined;\n outDir: string;\n skipRuntimeDependencyCheck?: boolean | undefined;\n}\n\n/**\n * Configures packaging of a built app-router output directory for Cloudflare Pages.\n */\nexport interface PackageCloudflarePagesArtifactOptions {\n fromDir: string;\n outDir: string;\n}\n\nexport interface BuiltServerManifest {\n allowedSourceDirs?: readonly string[];\n assetBaseUrl?: string;\n version: 1;\n files: Record<string, string>;\n prerenderedRoutes?: Record<string, BuiltPrerenderedRoute>;\n publicAssetBaseUrl?: string;\n routeMatcher?: CompiledRouteMatcherArtifact;\n routesDir?: string;\n routeServerActionReferences?: Record<string, BuiltServerActionExpressionReference[]>;\n serverActionManifest?: BuiltServerActionReference[];\n serverModuleClosureFiles?: Record<string, string[]>;\n serverModuleFiles?: Record<string, string>;\n serverModuleRenderFiles?: Record<string, string>;\n serverModuleRequestFiles?: Record<string, string>;\n routes: AppRoute[];\n serverModules?: Record<string, BuiltServerModuleArtifact>;\n}\n\nexport interface BuiltServerActionReference {\n exportName: string;\n inferred?: boolean;\n moduleId: string;\n}\n\nexport interface BuiltServerActionExpressionReference {\n end: number;\n exportName: string;\n expression: string;\n expressionEnd: number;\n expressionStart: number;\n inferred: boolean;\n moduleId: string;\n sourceHash: string;\n start: number;\n}\n\nexport interface BuiltServerModuleArtifact {\n analysis?: BuiltRouteSourceAnalysisSummary;\n loader?: BuiltServerModuleOutput;\n routeMetadata?: BuiltServerModuleOutput;\n request?: BuiltServerModuleOutput;\n stream?: BuiltServerModuleOutput;\n string?: BuiltServerModuleOutput;\n}\n\nexport interface BuiltRouteSourceAnalysisSummary {\n authIncludesClaims: boolean;\n cachePolicy?: RouteCachePolicy | undefined;\n clientBoundaryImports: readonly string[];\n clientBoundaryFallbackImports: readonly string[];\n clientRoute: boolean;\n hasLoader: boolean;\n routeCode: string;\n routePath: string;\n sourceHash: string;\n streamRoute: boolean;\n usesRuntimeCacheControl: boolean;\n}\n\ninterface BuildSourceAnalysis {\n authIncludesClaims: boolean;\n cachePolicy?: RouteCachePolicy | undefined;\n hasGenerateStaticParams: boolean;\n hasLoader: boolean;\n hasMetadata: boolean;\n hasPrerender: boolean;\n source: string;\n sourceHash: string;\n usesRuntimeCacheControl: boolean;\n}\n\ninterface BuildRouteSourceAnalysis extends BuildSourceAnalysis {\n clientBoundaryImports: readonly string[];\n clientBoundaryFallbackImports: readonly string[];\n clientRoute: boolean;\n file: string;\n route: AppRoute & { kind: \"page\" };\n routeCode: string;\n streamRoute: boolean;\n}\n\ninterface BuildSourceAnalysisScope {\n byFile: ReadonlyMap<string, BuildSourceAnalysis>;\n byRouteFile: ReadonlyMap<string, BuildRouteSourceAnalysis>;\n}\n\nexport interface BuiltServerModuleOutput {\n bundleCode?: string;\n code: string;\n metadata?: ModuleMetadata;\n moduleFile?: string;\n sourceHash: string;\n}\n\nexport interface BuiltPrerenderedRoute {\n headers: Record<string, string>;\n html: string;\n status: number;\n}\n\ntype StaticParams = Record<string, string | number | boolean | readonly string[]>;\n\n/**\n * Builds an app-router project into server, client, and optional deployment-target artifacts.\n *\n * Use this from custom build scripts when the CLI is too coarse-grained; the returned manifest paths describe the files written under `outDir`. The build reads route files, loaders, middleware, metadata, server actions, and client references, so callers should pass the same project root and source allow-list they expect to deploy.\n */\nexport async function buildApp(options: BuildAppOptions): Promise<BuildAppResult> {\n const timingSink = options.onBuildPhaseTiming;\n const progressSink = options.onBuildProgress;\n const shouldTrackBuildPhases = timingSink !== undefined || progressSink !== undefined;\n const project = resolveAppRouterProjectOptions(options);\n const buildTargets = resolveBuildTargets(options.targets ?? project.buildTargets);\n const shouldBuildCloudflare = buildTargets.includes(\"cloudflare\");\n const shouldBuildAwsLambda = buildTargets.includes(\"aws-lambda\");\n const routes =\n shouldTrackBuildPhases === false\n ? await scanAppRoutes({ appDir: project.routesDir })\n : await timeBuildPhase(timingSink, progressSink, \"scan\", () =>\n scanAppRoutes({ appDir: project.routesDir }),\n );\n progressSink?.({ count: routes.length, kind: \"routes-discovered\" });\n await validateBuildMiddlewareControls(project.routesDir, routes);\n const viteDefine = options.viteConfig?.define;\n const vitePlugins = options.viteConfig?.plugins;\n const files =\n shouldTrackBuildPhases === false\n ? await collectBuildFiles(project.projectRoot, project.allowedSourceDirs, project.routesDir)\n : await timeBuildPhase(timingSink, progressSink, \"collectFiles\", () =>\n collectBuildFiles(project.projectRoot, project.allowedSourceDirs, project.routesDir),\n );\n const serverClientRouteInferenceCache = createClientRouteInferenceCache();\n const serverTransformCache: ServerTransformCache = new Map();\n const serverDir = join(options.outDir, \"server\");\n const clientDir = join(options.outDir, \"client\");\n const cloudflareDir = join(options.outDir, \"cloudflare\");\n const sourceAnalysis =\n shouldTrackBuildPhases === false\n ? await analyzeBuildRouteSources({\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n files,\n project,\n projectRoot: project.projectRoot,\n routes,\n vitePlugins,\n })\n : await timeBuildPhase(timingSink, progressSink, \"analyzeSources\", () =>\n analyzeBuildRouteSources({\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n files,\n project,\n projectRoot: project.projectRoot,\n routes,\n vitePlugins,\n }),\n );\n\n if (shouldTrackBuildPhases === false) {\n await validateProductionRoutes({\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n files,\n project,\n projectRoot: project.projectRoot,\n routes,\n sourceAnalysis,\n serverTransformCache,\n vitePlugins,\n });\n } else {\n await timeBuildPhase(timingSink, progressSink, \"validate\", () =>\n validateProductionRoutes({\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n files,\n project,\n projectRoot: project.projectRoot,\n routes,\n sourceAnalysis,\n serverTransformCache,\n vitePlugins,\n }),\n );\n }\n\n if (shouldTrackBuildPhases === false) {\n await rm(options.outDir, { force: true, recursive: true });\n await Promise.all([\n mkdir(serverDir, { recursive: true }),\n mkdir(clientDir, { recursive: true }),\n ...(shouldBuildCloudflare ? [mkdir(cloudflareDir, { recursive: true })] : []),\n mkdir(join(clientDir, \".vite\"), { recursive: true }),\n mkdir(join(clientDir, \"assets\", \"routes\"), { recursive: true }),\n ]);\n } else {\n await timeBuildPhase(timingSink, progressSink, \"prepareOutput\", async () => {\n await rm(options.outDir, { force: true, recursive: true });\n await Promise.all([\n mkdir(serverDir, { recursive: true }),\n mkdir(clientDir, { recursive: true }),\n ...(shouldBuildCloudflare ? [mkdir(cloudflareDir, { recursive: true })] : []),\n mkdir(join(clientDir, \".vite\"), { recursive: true }),\n mkdir(join(clientDir, \"assets\", \"routes\"), { recursive: true }),\n ]);\n });\n }\n\n const publicAssets =\n shouldTrackBuildPhases === false\n ? await buildPublicAssetManifest(project, clientDir)\n : await timeBuildPhase(timingSink, progressSink, \"publicAssets\", () =>\n buildPublicAssetManifest(project, clientDir),\n );\n\n const clientRouteInferenceCache = createClientRouteInferenceCache();\n const [serverActionManifest, generatedImportPolicy] = await Promise.all([\n shouldTrackBuildPhases === false\n ? collectBuildServerActionManifest({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n })\n : timeBuildPhase(timingSink, progressSink, \"serverActionManifest\", () =>\n collectBuildServerActionManifest({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n }),\n ),\n shouldTrackBuildPhases === false\n ? buildGeneratedImportPolicy({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n })\n : timeBuildPhase(timingSink, progressSink, \"importPolicy\", () =>\n buildGeneratedImportPolicy({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n }),\n ),\n ]);\n const { artifacts: serverModules, sharedChunks: serverModuleSharedChunks } =\n await (shouldTrackBuildPhases === false\n ? buildServerModuleArtifacts({\n bundleRequestRuntimePackages: shouldBuildAwsLambda,\n bundleCache: new Map(),\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n define: viteDefine,\n files,\n prebundleServerComponents: buildTargets.includes(\"node\") || shouldBuildAwsLambda,\n project,\n projectRoot: project.projectRoot,\n routes,\n serverActionReferencesByFile: serverActionManifest.routeReferences,\n sourceAnalysis,\n serverTransformCache,\n vitePlugins,\n })\n : timeBuildPhase(timingSink, progressSink, \"serverModules\", () =>\n buildServerModuleArtifacts({\n bundleRequestRuntimePackages: shouldBuildAwsLambda,\n bundleCache: new Map(),\n clientRouteInferenceCache: serverClientRouteInferenceCache,\n define: viteDefine,\n files,\n prebundleServerComponents: buildTargets.includes(\"node\") || shouldBuildAwsLambda,\n project,\n projectRoot: project.projectRoot,\n routes,\n serverActionReferencesByFile: serverActionManifest.routeReferences,\n sourceAnalysis,\n serverTransformCache,\n vitePlugins,\n }),\n ));\n const serverRoutes = routes.map((route) => ({\n ...route,\n file: relative(project.projectRoot, route.file),\n }));\n const [serverModuleArtifacts, clientBundle] = await Promise.all([\n shouldTrackBuildPhases === false\n ? writeServerModuleArtifactFiles(\n serverDir,\n serverModules,\n generatedImportPolicy.runtimePackages,\n serverModuleSharedChunks,\n )\n : timeBuildPhase(timingSink, progressSink, \"serverModuleArtifacts\", () =>\n writeServerModuleArtifactFiles(\n serverDir,\n serverModules,\n generatedImportPolicy.runtimePackages,\n serverModuleSharedChunks,\n ),\n ),\n shouldTrackBuildPhases === false\n ? writeClientRouteBundles({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientDir,\n clientConsolePureFunctions: project.clientConsolePureFunctions,\n clientRouteInferenceCache,\n projectRoot: project.projectRoot,\n routes,\n sourceAnalysis,\n sourceMapDir: join(options.outDir, \"source-maps\", \"client\"),\n sourceMaps: project.clientSourceMaps,\n sourceDirs: project.allowedSourceDirs,\n vitePlugins,\n })\n : timeBuildPhase(timingSink, progressSink, \"clientBundles\", () =>\n writeClientRouteBundles({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientDir,\n clientConsolePureFunctions: project.clientConsolePureFunctions,\n clientRouteInferenceCache,\n projectRoot: project.projectRoot,\n routes,\n sourceAnalysis,\n sourceMapDir: join(options.outDir, \"source-maps\", \"client\"),\n sourceMaps: project.clientSourceMaps,\n sourceDirs: project.allowedSourceDirs,\n vitePlugins,\n }),\n ),\n ]);\n const clientRoutes = clientBundle.routes;\n const navigationRuntimeScript = clientRoutes.some(\n (route) => route.navigation === true && !route.client,\n )\n ? shouldTrackBuildPhases === false\n ? await writeNavigationRuntimeBundle(clientDir, project.clientConsolePureFunctions)\n : await timeBuildPhase(timingSink, progressSink, \"navigationRuntime\", () =>\n writeNavigationRuntimeBundle(clientDir, project.clientConsolePureFunctions),\n )\n : undefined;\n const clientManifestRoutes =\n navigationRuntimeScript === undefined\n ? clientRoutes\n : clientRoutes.map((route) =>\n route.navigation === true && !route.client\n ? { ...route, navigationScript: navigationRuntimeScript }\n : route,\n );\n const clientManifestAssets = Array.from(\n new Set([\n ...clientBundle.assets,\n ...clientBundle.styles.flatMap((style) => style.css),\n ...(navigationRuntimeScript === undefined ? [] : [navigationRuntimeScript]),\n ]),\n ).sort();\n const serverModuleClosureFiles = buildServerModuleClosureManifest(serverModules, sourceAnalysis);\n const prerenderedRoutes =\n shouldTrackBuildPhases === false\n ? await prerenderStaticRoutes({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientRoutes: clientManifestRoutes,\n define: viteDefine,\n project,\n routes,\n serverModules,\n sourceAnalysis,\n vitePlugins,\n })\n : await timeBuildPhase(timingSink, progressSink, \"prerender\", () =>\n prerenderStaticRoutes({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientRoutes: clientManifestRoutes,\n define: viteDefine,\n project,\n routes,\n serverModules,\n sourceAnalysis,\n vitePlugins,\n }),\n );\n let cloudflareRouteModules: CloudflareRouteModulesOutput | undefined;\n if (shouldBuildCloudflare) {\n cloudflareRouteModules =\n shouldTrackBuildPhases === false\n ? await writeCloudflareRouteModules({\n cloudflareDir,\n define: viteDefine,\n files,\n prerenderedRoutes,\n projectRoot: project.projectRoot,\n routesDir: project.routesDir,\n routes,\n serverModules,\n sourceAnalysis,\n vitePlugins,\n })\n : await timeBuildPhase(timingSink, progressSink, \"cloudflare\", () =>\n writeCloudflareRouteModules({\n cloudflareDir,\n define: viteDefine,\n files,\n prerenderedRoutes,\n projectRoot: project.projectRoot,\n routesDir: project.routesDir,\n routes,\n serverModules,\n sourceAnalysis,\n vitePlugins,\n }),\n );\n }\n\n const routeServerActionReferences = Object.fromEntries(\n [...serverActionManifest.routeReferences.entries()].sort(([left], [right]) =>\n left.localeCompare(right),\n ),\n );\n const serverManifest = {\n allowedSourceDirs: project.allowedSourceDirs.map((directory) =>\n relative(project.projectRoot, directory),\n ),\n ...(project.assetBaseUrl === undefined ? {} : { assetBaseUrl: project.assetBaseUrl }),\n version: 1,\n routes: serverRoutes,\n routeMatcher: compileRouteMatcherArtifact(serverRoutes),\n routesDir: relative(project.projectRoot, project.routesDir),\n files,\n prerenderedRoutes,\n ...(project.publicAssetBaseUrl === undefined\n ? {}\n : { publicAssetBaseUrl: project.publicAssetBaseUrl }),\n ...(Object.keys(routeServerActionReferences).length === 0\n ? {}\n : { routeServerActionReferences }),\n ...(serverActionManifest.allowedActions.length === 0\n ? {}\n : { serverActionManifest: serverActionManifest.allowedActions }),\n ...(Object.keys(serverModuleClosureFiles).length === 0 ? {} : { serverModuleClosureFiles }),\n ...(Object.keys(serverModuleArtifacts.files).length === 0\n ? {}\n : { serverModuleFiles: serverModuleArtifacts.files }),\n ...(Object.keys(serverModuleArtifacts.requestFiles).length === 0\n ? {}\n : { serverModuleRequestFiles: serverModuleArtifacts.requestFiles }),\n ...(Object.keys(serverModuleArtifacts.renderFiles).length === 0\n ? {}\n : { serverModuleRenderFiles: serverModuleArtifacts.renderFiles }),\n } satisfies BuiltServerManifest;\n const clientManifest = {\n ...(clientManifestAssets.length === 0 ? {} : { assets: clientManifestAssets }),\n ...(publicAssets.length === 0 ? {} : { publicAssets }),\n routes: clientManifestRoutes,\n ...(clientBundle.styles.length === 0 ? {} : { styles: clientBundle.styles }),\n };\n const writeManifestFiles = async () => {\n await Promise.all([\n writeFile(join(serverDir, \"manifest.json\"), JSON.stringify(serverManifest, null, 2)),\n writeFile(join(options.outDir, \"routes.d.ts\"), typedRoutesDeclaration(routes)),\n writeFile(\n join(options.outDir, \"public-assets.d.ts\"),\n typedPublicAssetsDeclaration(publicAssets),\n ),\n writeFile(\n join(serverDir, \"import-policy.json\"),\n JSON.stringify(generatedImportPolicy, null, 2),\n ),\n writeFile(join(clientDir, \"manifest.json\"), JSON.stringify(clientManifest, null, 2)),\n writeFile(\n join(clientDir, \".vite\", \"manifest.json\"),\n JSON.stringify(viteManifestFromClientRoutes(clientManifestRoutes), null, 2),\n ),\n ]);\n };\n if (shouldTrackBuildPhases === false) {\n await writeManifestFiles();\n } else {\n await timeBuildPhase(timingSink, progressSink, \"writeManifests\", writeManifestFiles);\n }\n\n if (shouldTrackBuildPhases === false) {\n await Promise.all([\n ...(shouldBuildAwsLambda ? [writeAwsLambdaHandlerArtifact(options.outDir)] : []),\n ...(shouldBuildCloudflare\n ? [\n writeCloudflareWorkerArtifact({\n cloudflareDir,\n clientManifest,\n modulesFile: cloudflareRouteModules?.registryFile ?? \"route-modules.mjs\",\n serverManifest,\n }),\n ]\n : []),\n ]);\n } else {\n await timeBuildPhase(timingSink, progressSink, \"adapterArtifacts\", async () => {\n await Promise.all([\n ...(shouldBuildAwsLambda ? [writeAwsLambdaHandlerArtifact(options.outDir)] : []),\n ...(shouldBuildCloudflare\n ? [\n writeCloudflareWorkerArtifact({\n cloudflareDir,\n clientManifest,\n modulesFile: cloudflareRouteModules?.registryFile ?? \"route-modules.mjs\",\n serverManifest,\n }),\n ]\n : []),\n ]);\n });\n }\n\n return { routes };\n}\n\nfunction typedRoutesDeclaration(routes: readonly AppRoute[]): string {\n const routePaths = Array.from(\n new Set(\n routes\n .filter((route) => route.kind === \"page\" || route.kind === \"server\")\n .map((route) => route.path),\n ),\n ).sort((left, right) => {\n if (left === \"/\") {\n return -1;\n }\n if (right === \"/\") {\n return 1;\n }\n return left.localeCompare(right);\n });\n const routeUnion = routePaths.map((routePath) => JSON.stringify(routePath)).join(\" | \");\n return [\n `import type { AppRouteLinkHref as MreactAppRouteLinkHref } from \"@reckona/mreact-router\";`,\n ``,\n `export type AppRoutePath = ${routeUnion === \"\" ? \"never\" : routeUnion};`,\n `export type AppRouteHref = MreactAppRouteLinkHref<AppRoutePath>;`,\n ``,\n `declare module \"@reckona/mreact-router/link\" {`,\n ` interface AppRouteDeclarations {`,\n ` readonly path: AppRoutePath;`,\n ` }`,\n `}`,\n ``,\n ].join(\"\\n\");\n}\n\nfunction typedPublicAssetsDeclaration(publicAssets: readonly string[]): string {\n const assetUnion = publicAssets.map((assetPath) => JSON.stringify(assetPath)).join(\" | \");\n\n return [\n `declare module \"mreact:public-assets\" {`,\n ` export type PublicAssetPath = ${assetUnion === \"\" ? \"never\" : assetUnion};`,\n `}`,\n ``,\n ].join(\"\\n\");\n}\n\nasync function timeBuildPhase<T>(\n timingSink: ((timing: BuildAppPhaseTiming) => void) | undefined,\n progressSink: ((event: BuildAppProgressEvent) => void) | undefined,\n phase: BuildAppPhase,\n run: () => Promise<T>,\n): Promise<T> {\n progressSink?.({ kind: \"phase-start\", phase });\n const startedAt = performance.now();\n\n try {\n return await run();\n } finally {\n const ms = roundBuildPhaseMs(performance.now() - startedAt);\n timingSink?.({\n ms,\n phase,\n });\n progressSink?.({\n kind: \"phase-end\",\n ms,\n phase,\n });\n }\n}\n\nfunction roundBuildPhaseMs(value: number): number {\n return Math.round(value * 100) / 100;\n}\n\nasync function mapWithBuildConcurrency<T, R>(\n items: readonly T[],\n map: (item: T, index: number) => Promise<R>,\n concurrency = defaultBuildConcurrency,\n): Promise<R[]> {\n if (items.length === 0) {\n return [];\n }\n\n const workerCount = Math.max(1, Math.min(concurrency, items.length));\n const results: R[] = [];\n results.length = items.length;\n let nextIndex = 0;\n\n async function runWorker(): Promise<void> {\n while (nextIndex < items.length) {\n const index = nextIndex;\n nextIndex += 1;\n results[index] = await map(items[index] as T, index);\n }\n }\n\n await Promise.all(\n Array.from({ length: workerCount }, async () => {\n await runWorker();\n }),\n );\n\n return results;\n}\n\nexport async function __mapWithBuildConcurrencyForTests<T, R>(\n items: readonly T[],\n map: (item: T, index: number) => Promise<R>,\n concurrency?: number,\n): Promise<R[]> {\n return await mapWithBuildConcurrency(items, map, concurrency);\n}\n\nasync function analyzeBuildRouteSources(options: {\n clientRouteInferenceCache: ClientRouteInferenceCache;\n files: Record<string, string>;\n project: ResolvedAppRouterProject;\n projectRoot: string;\n routes: readonly AppRoute[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<BuildSourceAnalysisScope> {\n const byFile = new Map<string, BuildSourceAnalysis>();\n\n for (const [file, source] of Object.entries(options.files)) {\n byFile.set(file, analyzeBuildSource(source, join(options.projectRoot, file)));\n }\n\n const routeAnalyses = await mapWithBuildConcurrency(\n options.routes.filter((route): route is AppRoute & { kind: \"page\" } => route.kind === \"page\"),\n async (route) => {\n const file = relative(options.projectRoot, route.file).split(sep).join(\"/\");\n const source = options.files[file];\n\n if (source === undefined) {\n return undefined;\n }\n\n const routeCode = stripRouteBuildExports(source, route.file);\n const clientInference = await inferClientRouteModule({\n appDir: options.project.routesDir,\n cache: options.clientRouteInferenceCache,\n code: stripRouteClientSource({ code: source, filename: route.file }),\n filename: route.file,\n routePath: route.path,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n return [\n file,\n {\n ...analyzeBuildSource(source, route.file),\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n clientRoute: clientInference.client,\n file,\n route,\n routeCode,\n streamRoute: shouldBuildRouteAsStream({\n filename: file,\n files: options.files,\n projectRoot: options.projectRoot,\n source,\n }),\n },\n ] as const;\n },\n );\n const byRouteFile = new Map<string, BuildRouteSourceAnalysis>();\n\n for (const entry of routeAnalyses) {\n if (entry !== undefined) {\n byRouteFile.set(entry[0], entry[1]);\n }\n }\n\n return { byFile, byRouteFile };\n}\n\nfunction analyzeBuildSource(source: string, filename: string): BuildSourceAnalysis {\n const cachePolicy = routeCachePolicyFromSource(source);\n const sourceHash = hashText(source);\n\n if (!isSourceModuleFile(filename)) {\n return {\n authIncludesClaims: false,\n ...(cachePolicy === undefined ? {} : { cachePolicy }),\n hasGenerateStaticParams: false,\n hasLoader: false,\n hasMetadata: false,\n hasPrerender: false,\n source,\n sourceHash,\n usesRuntimeCacheControl: usesRuntimeCacheControl(source),\n };\n }\n\n return {\n authIncludesClaims: authIncludesClaims(source),\n ...(cachePolicy === undefined ? {} : { cachePolicy }),\n hasGenerateStaticParams: hasGenerateStaticParamsExport(source, filename),\n hasLoader: hasLoaderExport(source, filename),\n hasMetadata: hasMetadataExport(source),\n hasPrerender: hasPrerenderExport(source, filename),\n source,\n sourceHash,\n usesRuntimeCacheControl: usesRuntimeCacheControl(source),\n };\n}\n\nfunction buildSourceAnalysisForFile(\n sourceAnalysis: BuildSourceAnalysisScope,\n projectRoot: string,\n file: string,\n): BuildSourceAnalysis | undefined {\n return sourceAnalysis.byFile.get(relative(projectRoot, file).split(sep).join(\"/\"));\n}\n\nfunction buildServerModuleClosureManifest(\n serverModules: Record<string, BuiltServerModuleArtifact>,\n sourceAnalysis: BuildSourceAnalysisScope,\n): Record<string, string[]> {\n const sourceFiles = new Set(sourceAnalysis.byFile.keys());\n const closureFiles: Record<string, string[]> = {};\n\n for (const file of Object.keys(serverModules).sort()) {\n const closure: string[] = [];\n collectManifestServerModuleClosureFiles(file, sourceAnalysis, sourceFiles, new Set(), closure);\n\n if (closure.length > 0) {\n closureFiles[file] = closure;\n }\n }\n\n return closureFiles;\n}\n\nfunction collectManifestServerModuleClosureFiles(\n file: string,\n sourceAnalysis: BuildSourceAnalysisScope,\n sourceFiles: ReadonlySet<string>,\n seen: Set<string>,\n closure: string[],\n): void {\n if (seen.has(file)) {\n return;\n }\n seen.add(file);\n closure.push(file);\n\n const source = sourceAnalysis.byFile.get(file)?.source;\n if (source === undefined) {\n return;\n }\n\n for (const specifier of localManifestServerModuleSpecifiers(source)) {\n const resolved = resolveManifestLocalServerSourceImport(file, specifier, sourceFiles);\n if (resolved !== undefined) {\n collectManifestServerModuleClosureFiles(resolved, sourceAnalysis, sourceFiles, seen, closure);\n }\n }\n}\n\nconst localManifestServerModuleImportPattern =\n /\\b(?:import|export)\\s+(?:type\\s+)?(?:[^\"']*?\\s+from\\s*)?[\"'](?<source>\\.{1,2}\\/[^\"']+)[\"']/g;\n\nfunction localManifestServerModuleSpecifiers(code: string): string[] {\n const specifiers = new Set<string>();\n localManifestServerModuleImportPattern.lastIndex = 0;\n\n for (const match of code.matchAll(localManifestServerModuleImportPattern)) {\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\nfunction resolveManifestLocalServerSourceImport(\n fromFile: string,\n specifier: string,\n sourceFiles: ReadonlySet<string>,\n): string | undefined {\n const base = resolveManifestRelativePath(manifestDirname(fromFile), specifier);\n\n for (const candidate of manifestLocalServerSourceImportCandidates(base)) {\n if (sourceFiles.has(candidate)) {\n return candidate;\n }\n }\n\n return undefined;\n}\n\nfunction manifestLocalServerSourceImportCandidates(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 `${base}/index.ts`,\n `${base}/index.tsx`,\n `${base}/index.mreact.tsx`,\n );\n }\n\n return candidates;\n}\n\nfunction manifestDirname(file: string): string {\n const index = file.lastIndexOf(\"/\");\n\n return index === -1 ? \"\" : file.slice(0, index);\n}\n\nfunction resolveManifestRelativePath(fromDir: string, specifier: string): string {\n const segments = fromDir === \"\" ? [] : fromDir.split(\"/\");\n\n for (const segment of specifier.split(\"/\")) {\n if (segment === \"\" || segment === \".\") {\n continue;\n }\n\n if (segment === \"..\") {\n segments.pop();\n continue;\n }\n\n segments.push(segment);\n }\n\n return segments.join(\"/\");\n}\n\nfunction canUseBuildServerActionPlaceholders(\n references: readonly BuiltServerActionExpressionReference[],\n): boolean {\n return references.every(\n (reference) =>\n reference.expression === reference.exportName &&\n /^[A-Za-z_$][\\w$]*$/u.test(reference.expression),\n );\n}\n\nasync function buildPublicAssetManifest(\n project: ResolvedAppRouterProject,\n clientDir: string,\n): Promise<string[]> {\n const [publicAssetPaths, appConventionPublicAssets] = await Promise.all([\n collectPublicAssetPaths(project.publicDir),\n copyAppFileConventionAssets(project.routesDir, clientDir),\n copyPublicAssets(project.publicDir, join(clientDir, \"public\")),\n copyPublicAssets(project.publicDir, clientDir),\n ]);\n\n return [...new Set([...publicAssetPaths, ...appConventionPublicAssets])].sort();\n}\n\nconst COMPAT_VENDOR_PLACEHOLDER_IMPORT_PATTERN = /([\"'])mreact-compat-vendor:([\\w-]+)\\1/gu;\n\nfunction rewriteCompatVendorPlaceholderImports(code: string): string {\n if (!code.includes(COMPAT_VENDOR_PLACEHOLDER_PREFIX)) {\n return code;\n }\n\n // Module files live in server-modules/code/, vendor chunks in\n // server-modules/chunks/, so the relative path is stable.\n return code.replace(\n COMPAT_VENDOR_PLACEHOLDER_IMPORT_PATTERN,\n (_match, quote: string, entry: string) => `${quote}../chunks/compat.${entry}.mjs${quote}`,\n );\n}\n\nfunction collectCompatVendorEntryUsage(\n artifacts: ReadonlyArray<readonly [string, BuiltServerModuleArtifact]>,\n): ReadonlySet<string> {\n const usedEntries = new Set<string>();\n\n for (const [, artifact] of artifacts) {\n for (const output of [artifact.string, artifact.stream]) {\n const bundleCode = output?.bundleCode;\n\n if (bundleCode === undefined || !bundleCode.includes(COMPAT_VENDOR_PLACEHOLDER_PREFIX)) {\n continue;\n }\n\n for (const match of bundleCode.matchAll(COMPAT_VENDOR_PLACEHOLDER_IMPORT_PATTERN)) {\n const entry = match[2];\n\n if (entry !== undefined) {\n usedEntries.add(entry);\n }\n }\n }\n }\n\n return usedEntries;\n}\n\n// Bundles the react-compat server runtime once per build into shared chunks\n// under server-modules/chunks/ so per-route server modules can import it via\n// relative paths instead of inlining their own copy.\nasync function writeCompatVendorChunks(\n serverDir: string,\n usedEntries: ReadonlySet<string>,\n): Promise<void> {\n const entryFiles = resolveCompatVendorEntryFiles(serverDir);\n const entries = await Promise.all(\n [...entryFiles]\n .filter(([name]) => usedEntries.has(name))\n .map(async ([name, filename]) => ({\n code: await readFile(filename, \"utf8\"),\n filename,\n name,\n })),\n );\n const firstEntry = entries[0];\n\n if (firstEntry === undefined) {\n return;\n }\n\n const output = await bundleRouterModules({\n chunkFileNames: \"compat-shared.[hash].mjs\",\n entries,\n entryFileNames: \"compat.[name].mjs\",\n platform: \"node\",\n root: dirname(firstEntry.filename),\n });\n const chunksDir = join(serverDir, \"server-modules\", \"chunks\");\n\n await mkdir(chunksDir, { recursive: true });\n await Promise.all(\n output.chunks.map((chunk) => writeFile(join(chunksDir, chunk.fileName), chunk.code)),\n );\n}\n\nasync function writeServerModuleArtifactFiles(\n serverDir: string,\n serverModules: Record<string, BuiltServerModuleArtifact>,\n portableRuntimePackages: readonly string[] = [],\n sharedChunks: readonly SharedServerModuleChunk[] = [],\n): Promise<{\n files: Record<string, string>;\n renderFiles: Record<string, string>;\n requestFiles: Record<string, string>;\n}> {\n const files: Record<string, string> = {};\n const renderFiles: Record<string, string> = {};\n const requestFiles: Record<string, string> = {};\n const modulesDir = join(serverDir, \"server-modules\");\n const artifactEntries = Object.entries(serverModules);\n type WrittenServerModuleArtifact =\n | { artifactFile: string; file: string }\n | { file: string; renderArtifactFile: string; requestArtifactFile: string };\n\n await Promise.all([\n mkdir(modulesDir, { recursive: true }),\n mkdir(join(modulesDir, \"code\"), { recursive: true }),\n mkdir(join(modulesDir, \"request\"), { recursive: true }),\n mkdir(join(modulesDir, \"render\"), { recursive: true }),\n ]);\n\n if (sharedChunks.length > 0) {\n // Shared request chunks are referenced from externalized module code via\n // \"./chunks/...\" imports, so they live next to server-modules/code files.\n await mkdir(join(modulesDir, \"code\", \"chunks\"), { recursive: true });\n await Promise.all(\n sharedChunks.map((chunk) =>\n writeFile(\n join(modulesDir, \"code\", chunk.fileName),\n rewriteCompatVendorPlaceholderImports(\n rewritePortableRuntimePackageImports(chunk.code, portableRuntimePackages),\n ),\n ),\n ),\n );\n }\n\n const usedCompatVendorEntries = collectCompatVendorEntryUsage(artifactEntries);\n\n if (usedCompatVendorEntries.size > 0) {\n await writeCompatVendorChunks(serverDir, usedCompatVendorEntries);\n }\n\n const writtenArtifacts = await mapWithBuildConcurrency<\n [string, BuiltServerModuleArtifact],\n WrittenServerModuleArtifact\n >(\n artifactEntries,\n async ([file, artifact]) => {\n const externalized = await externalizeServerModuleArtifactCode(\n serverDir,\n artifact,\n portableRuntimePackages,\n );\n const requestArtifact = requestServerModuleArtifact(externalized);\n const renderArtifact = renderServerModuleArtifact(externalized);\n\n if (Object.keys(requestArtifact).length > 0 && Object.keys(renderArtifact).length > 0) {\n const requestJson = JSON.stringify(requestArtifact);\n const requestArtifactFile = `server-modules/request/${hashText(`${file}\\0request\\0${requestJson}`).slice(0, 16)}.json`;\n await writeFile(join(serverDir, requestArtifactFile), requestJson);\n\n const renderJson = JSON.stringify(renderArtifact);\n const renderArtifactFile = `server-modules/render/${hashText(`${file}\\0render\\0${renderJson}`).slice(0, 16)}.json`;\n await writeFile(join(serverDir, renderArtifactFile), renderJson);\n\n return { file, renderArtifactFile, requestArtifactFile };\n }\n\n const json = JSON.stringify(externalized);\n const artifactFile = `server-modules/${hashText(`${file}\\0${json}`).slice(0, 16)}.json`;\n\n await writeFile(join(serverDir, artifactFile), json);\n return { artifactFile, file };\n },\n serverArtifactFilesystemConcurrency,\n );\n\n for (const artifact of writtenArtifacts) {\n if (\"requestArtifactFile\" in artifact) {\n requestFiles[artifact.file] = artifact.requestArtifactFile;\n renderFiles[artifact.file] = artifact.renderArtifactFile;\n continue;\n }\n\n files[artifact.file] = artifact.artifactFile;\n }\n\n return { files, renderFiles, requestFiles };\n}\n\nexport async function __writeServerModuleArtifactFilesForTests(\n serverDir: string,\n serverModules: Record<string, BuiltServerModuleArtifact>,\n): Promise<{\n files: Record<string, string>;\n renderFiles: Record<string, string>;\n requestFiles: Record<string, string>;\n}> {\n return await writeServerModuleArtifactFiles(serverDir, serverModules);\n}\n\nasync function externalizeServerModuleArtifactCode(\n serverDir: string,\n artifact: BuiltServerModuleArtifact,\n portableRuntimePackages: readonly string[],\n): Promise<BuiltServerModuleArtifact> {\n return {\n ...(artifact.analysis === undefined ? {} : { analysis: artifact.analysis }),\n ...(artifact.loader === undefined\n ? {}\n : {\n loader: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.loader,\n \"code\",\n portableRuntimePackages,\n ),\n }),\n ...(artifact.routeMetadata === undefined\n ? {}\n : {\n routeMetadata: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.routeMetadata,\n \"code\",\n portableRuntimePackages,\n ),\n }),\n ...(artifact.request === undefined\n ? {}\n : {\n request: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.request,\n \"code\",\n portableRuntimePackages,\n ),\n }),\n ...(artifact.stream === undefined\n ? {}\n : {\n stream: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.stream,\n \"bundle\",\n portableRuntimePackages,\n ),\n }),\n ...(artifact.string === undefined\n ? {}\n : {\n string: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.string,\n \"bundle\",\n portableRuntimePackages,\n ),\n }),\n };\n}\n\nasync function externalizeServerModuleOutputCode(\n serverDir: string,\n output: BuiltServerModuleOutput,\n kind: \"bundle\" | \"code\",\n portableRuntimePackages: readonly string[],\n): Promise<BuiltServerModuleOutput> {\n const sourceCode = kind === \"bundle\" ? output.bundleCode : output.code;\n const moduleCode =\n sourceCode === undefined\n ? undefined\n : rewriteCompatVendorPlaceholderImports(\n rewritePortableRuntimePackageImports(sourceCode, portableRuntimePackages),\n );\n\n if (moduleCode === undefined || moduleCode.length === 0) {\n return output;\n }\n\n const moduleFile = `server-modules/code/${hashText(moduleCode).slice(0, 16)}.mjs`;\n await writeFile(join(serverDir, moduleFile), moduleCode);\n\n return {\n code: kind === \"code\" ? \"\" : output.code,\n ...(output.metadata === undefined ? {} : { metadata: output.metadata }),\n moduleFile,\n sourceHash: output.sourceHash,\n };\n}\n\nfunction rewritePortableRuntimePackageImports(\n code: string,\n runtimePackages: readonly string[],\n): string {\n if (runtimePackages.length === 0 || !code.includes(\"file://\")) {\n return code;\n }\n\n return code.replace(\n /\\b(from\\s+|import\\s*)[\"'](?<specifier>file:\\/\\/[^\"']+)[\"']/gu,\n (match, prefix: string, specifier: string | undefined) => {\n const packageName =\n specifier === undefined ? undefined : runtimePackageForFileUrl(specifier, runtimePackages);\n\n return packageName === undefined ? match : `${prefix}\"${packageName}\"`;\n },\n );\n}\n\nfunction runtimePackageForFileUrl(\n specifier: string,\n runtimePackages: readonly string[],\n): string | undefined {\n let filePath: string;\n\n try {\n filePath = fileURLToPath(specifier).split(sep).join(\"/\");\n } catch {\n return undefined;\n }\n\n return [...runtimePackages]\n .sort((left, right) => right.length - left.length)\n .find((packageName) => filePath.includes(`/node_modules/${packageName}/`));\n}\n\nfunction requestServerModuleArtifact(\n artifact: BuiltServerModuleArtifact,\n): BuiltServerModuleArtifact {\n return {\n ...(artifact.analysis === undefined ? {} : { analysis: artifact.analysis }),\n ...(artifact.loader === undefined ? {} : { loader: artifact.loader }),\n ...(artifact.routeMetadata === undefined ? {} : { routeMetadata: artifact.routeMetadata }),\n ...(artifact.request === undefined ? {} : { request: artifact.request }),\n };\n}\n\nfunction renderServerModuleArtifact(\n artifact: BuiltServerModuleArtifact,\n): BuiltServerModuleArtifact {\n return {\n ...(artifact.stream === undefined ? {} : { stream: artifact.stream }),\n ...(artifact.string === undefined ? {} : { string: artifact.string }),\n };\n}\n\nconst nodeBuiltinPackages = new Set(builtinModules.flatMap((name) => [name, `node:${name}`]));\nconst frameworkRuntimePackages = new Set([\n \"@reckona/mreact\",\n \"@reckona/mreact-auth\",\n \"@reckona/mreact-compiler\",\n \"@reckona/mreact-query\",\n \"@reckona/mreact-reactive-core\",\n \"@reckona/mreact-router\",\n \"@reckona/mreact-server\",\n]);\nconst maxRuntimePackageManifestReads = 1000;\n\nasync function buildGeneratedImportPolicy(options: {\n files: Record<string, string>;\n projectRoot: string;\n routes: readonly AppRoute[];\n routesDir: string;\n}): Promise<BuiltImportPolicyArtifact> {\n const routePackages = new Map<string, string[]>();\n const allPackages = new Set<string>();\n const relativeRoutesDir = relative(options.projectRoot, options.routesDir);\n const packageJsonLookupCache = new Map<\n string,\n Promise<(RuntimePackageManifest & { packageJsonPath: string }) | undefined>\n >();\n\n for (const route of options.routes) {\n const file = relative(options.projectRoot, route.file);\n const packages = await collectRuntimePackagesForFile({\n file,\n files: options.files,\n packageJsonLookupCache,\n projectRoot: options.projectRoot,\n seen: new Set(),\n });\n\n if (packages.length > 0) {\n routePackages.set(route.path, packages);\n for (const packageName of packages) {\n allPackages.add(packageName);\n }\n }\n }\n\n const middlewareFile = [\"middleware.ts\", \"middleware.mreact.ts\"]\n .map((file) => (relativeRoutesDir === \"\" ? file : `${relativeRoutesDir}/${file}`))\n .find((file) => options.files[file] !== undefined);\n\n if (middlewareFile !== undefined) {\n const packages = await collectRuntimePackagesForFile({\n file: middlewareFile,\n files: options.files,\n packageJsonLookupCache,\n projectRoot: options.projectRoot,\n seen: new Set(),\n });\n\n if (packages.length > 0) {\n routePackages.set(\"middleware\", packages);\n for (const packageName of packages) {\n allPackages.add(packageName);\n }\n }\n }\n\n return {\n byRoute: Object.fromEntries(\n [...routePackages.entries()].sort(([left], [right]) => left.localeCompare(right)),\n ),\n runtimePackages: [...allPackages].sort(),\n version: 1,\n };\n}\n\nasync function collectRuntimePackagesForFile(options: {\n file: string;\n files: Record<string, string>;\n packageJsonLookupCache: RuntimePackageManifestCache;\n projectRoot: string;\n seen: Set<string>;\n}): Promise<string[]> {\n if (options.seen.has(options.file)) {\n return [];\n }\n\n const source = options.files[options.file];\n if (\n source === undefined ||\n hasModuleDirective({\n code: source,\n directive: \"use client\",\n filename: join(options.projectRoot, options.file),\n })\n ) {\n return [];\n }\n\n options.seen.add(options.file);\n const packages = new Set<string>();\n\n for (const reference of collectStaticImportReferences({\n code: source,\n filename: join(options.projectRoot, options.file),\n })) {\n if (isRuntimePackageSpecifier(reference.source)) {\n const packageName = runtimePackageNameForSpecifier(reference.source);\n packages.add(packageName);\n for (const optionalPackageName of await collectRuntimeOptionalPackages({\n packageJsonLookupCache: options.packageJsonLookupCache,\n packageName,\n projectRoot: options.projectRoot,\n })) {\n packages.add(optionalPackageName);\n }\n continue;\n }\n\n const localFile = resolveBuildLocalSourceImport(options.files, options.file, reference.source);\n if (localFile === undefined) {\n continue;\n }\n\n for (const packageName of await collectRuntimePackagesForFile({\n ...options,\n file: localFile,\n })) {\n packages.add(packageName);\n }\n }\n\n options.seen.delete(options.file);\n\n return [...packages].sort();\n}\n\ninterface RuntimePackageManifest {\n dependencies?: Record<string, unknown> | undefined;\n optionalDependencies?: Record<string, unknown> | undefined;\n}\n\ntype RuntimePackageManifestCache = Map<\n string,\n Promise<(RuntimePackageManifest & { packageJsonPath: string }) | undefined>\n>;\n\nasync function collectRuntimeOptionalPackages(options: {\n packageJsonLookupCache: RuntimePackageManifestCache;\n packageName: string;\n projectRoot: string;\n}): Promise<string[]> {\n const optionalPackages = new Set<string>();\n const seenPackageJson = new Set<string>();\n const queue: Array<{ packageName: string; optional: boolean; startDir: string }> = [\n { packageName: options.packageName, optional: false, startDir: options.projectRoot },\n ];\n let stoppedAtManifestReadCap = false;\n\n for (let index = 0; index < queue.length; index += 1) {\n if (seenPackageJson.size >= maxRuntimePackageManifestReads) {\n stoppedAtManifestReadCap = true;\n break;\n }\n\n const item = queue[index];\n if (item === undefined || !isValidRuntimePackageName(item.packageName)) {\n continue;\n }\n\n const manifest = await readRuntimePackageManifest({\n cache: options.packageJsonLookupCache,\n packageName: item.packageName,\n startDir: item.startDir,\n });\n\n if (manifest === undefined || seenPackageJson.has(manifest.packageJsonPath)) {\n continue;\n }\n\n seenPackageJson.add(manifest.packageJsonPath);\n if (item.optional && isRuntimePackageName(item.packageName)) {\n optionalPackages.add(item.packageName);\n }\n\n const packageDir = dirname(manifest.packageJsonPath);\n for (const dependencyName of Object.keys(manifest.dependencies ?? {})) {\n if (isValidRuntimePackageName(dependencyName)) {\n queue.push({ packageName: dependencyName, optional: false, startDir: packageDir });\n }\n }\n\n for (const optionalDependencyName of Object.keys(manifest.optionalDependencies ?? {})) {\n if (isValidRuntimePackageName(optionalDependencyName)) {\n queue.push({ packageName: optionalDependencyName, optional: true, startDir: packageDir });\n }\n }\n }\n\n if (stoppedAtManifestReadCap) {\n console.warn(\n [\n \"MR_RUNTIME_PACKAGE_MANIFEST_SCAN_LIMIT:\",\n `stopped scanning optional runtime package manifests after ${maxRuntimePackageManifestReads} files`,\n `while collecting transitive optional dependencies for ${options.packageName}.`,\n \"Generated import-policy.json may omit deeper optional runtime packages.\",\n ].join(\" \"),\n );\n }\n\n return [...optionalPackages].sort();\n}\n\nasync function readRuntimePackageManifest(options: {\n cache: RuntimePackageManifestCache;\n packageName: string;\n startDir: string;\n}): Promise<(RuntimePackageManifest & { packageJsonPath: string }) | undefined> {\n const key = `${options.startDir}\\0${options.packageName}`;\n const cached = options.cache.get(key);\n const manifest =\n cached ??\n findRuntimePackageJson(options.packageName, options.startDir).then(async (packageJsonPath) => {\n if (packageJsonPath === undefined) {\n return undefined;\n }\n\n try {\n const json = JSON.parse(await readFile(packageJsonPath, \"utf8\")) as RuntimePackageManifest;\n return { ...json, packageJsonPath };\n } catch {\n return undefined;\n }\n });\n\n if (cached === undefined) {\n options.cache.set(key, manifest);\n }\n\n return (await manifest) as (RuntimePackageManifest & { packageJsonPath: string }) | undefined;\n}\n\nasync function findRuntimePackageJson(\n packageName: string,\n startDir: string,\n): Promise<string | undefined> {\n if (!isValidRuntimePackageName(packageName)) {\n return undefined;\n }\n\n let current = startDir;\n\n while (true) {\n const candidate = join(current, \"node_modules\", ...packageName.split(\"/\"), \"package.json\");\n try {\n if ((await stat(candidate)).isFile()) {\n return candidate;\n }\n } catch {\n // Keep walking toward the filesystem root.\n }\n\n const parent = dirname(current);\n if (parent === current) {\n return undefined;\n }\n current = parent;\n }\n}\n\nfunction isRuntimePackageSpecifier(specifier: string): boolean {\n if (\n specifier.startsWith(\".\") ||\n specifier.startsWith(\"/\") ||\n /^[A-Za-z][A-Za-z0-9+.-]*:/.test(specifier)\n ) {\n return false;\n }\n\n const packageName = runtimePackageNameForSpecifier(specifier);\n return !nodeBuiltinPackages.has(specifier) && isRuntimePackageName(packageName);\n}\n\nfunction isRuntimePackageName(packageName: string): boolean {\n return !frameworkRuntimePackages.has(packageName);\n}\n\nfunction isValidRuntimePackageName(packageName: string): boolean {\n return (\n /^(?:@[a-z0-9][a-z0-9._~-]*\\/)?[a-z0-9][a-z0-9._~-]*$/u.test(packageName) &&\n !packageName.includes(\"..\")\n );\n}\n\nfunction runtimePackageNameForSpecifier(specifier: string): string {\n if (!specifier.startsWith(\"@\")) {\n return specifier.split(\"/\")[0] ?? specifier;\n }\n\n const [scope, name] = specifier.split(\"/\");\n return scope !== undefined && name !== undefined ? `${scope}/${name}` : specifier;\n}\n\nasync function collectBuildServerActionManifest(options: {\n files: Record<string, string>;\n projectRoot: string;\n routes: readonly AppRoute[];\n routesDir: string;\n}): Promise<{\n allowedActions: BuiltServerActionReference[];\n routeReferences: Map<string, BuiltServerActionExpressionReference[]>;\n}> {\n const entries = new Map<string, BuiltServerActionReference>();\n const routeReferences = new Map<string, BuiltServerActionExpressionReference[]>();\n const relativeRoutesDir = relative(options.projectRoot, options.routesDir);\n const routeSourceFiles = new Set(\n options.routes\n .filter((route) => route.kind === \"page\")\n .map((route) => relative(options.projectRoot, route.file).split(sep).join(\"/\")),\n );\n const inferredRouteReferences: Array<{ code: string; file: string }> = [];\n\n for (const [file, code] of Object.entries(options.files)) {\n if (!isAppRelativeFile(file, relativeRoutesDir) || !isSourceModuleFile(file)) {\n continue;\n }\n\n if (hasModuleDirective({ code, directive: \"use server\", filename: file })) {\n const moduleId = moduleIdForBuildFile(file, relativeRoutesDir);\n\n for (const exportName of collectTopLevelValueExportNames({ code, filename: file })) {\n entries.set(`${moduleId}#${exportName}`, { moduleId, exportName });\n }\n }\n\n if (routeSourceFiles.has(file)) {\n inferredRouteReferences.push({ code, file });\n }\n }\n\n const inferredRouteResults = await mapWithBuildConcurrency(\n inferredRouteReferences,\n async ({ code, file }) => ({\n file,\n inference: await collectBuildInferredServerActionReferences({\n file,\n files: options.files,\n relativeRoutesDir,\n source: code,\n }),\n }),\n );\n\n for (const { file, inference } of inferredRouteResults) {\n for (const diagnostic of inference.diagnostics) {\n console.warn(formatServerActionInferenceDiagnostic(diagnostic));\n }\n\n routeReferences.set(file, inference.references);\n\n for (const reference of inference.references) {\n const key = `${reference.moduleId}#${reference.exportName}`;\n\n if (!entries.has(key)) {\n entries.set(key, {\n exportName: reference.exportName,\n inferred: reference.inferred,\n moduleId: reference.moduleId,\n });\n }\n }\n }\n\n return {\n allowedActions: [...entries.values()].sort((left, right) =>\n left.moduleId === right.moduleId\n ? left.exportName.localeCompare(right.exportName)\n : left.moduleId.localeCompare(right.moduleId),\n ),\n routeReferences,\n };\n}\n\nfunction collectBuildInferredServerActionReferences(options: {\n file: string;\n files: Record<string, string>;\n relativeRoutesDir: string;\n source: string;\n}): Promise<{\n diagnostics: { code: string; message: string }[];\n references: BuiltServerActionExpressionReference[];\n}> {\n return collectBuildInferredServerActions({\n file: options.file,\n files: options.files,\n relativeRoutesDir: options.relativeRoutesDir,\n resolveSourceImport: (importer, source) =>\n resolveBuildLocalSourceImport(options.files, importer, source),\n source: options.source,\n });\n}\n\nfunction formatServerActionInferenceDiagnostic(diagnostic: {\n code: string;\n message: string;\n}): string {\n return `${diagnostic.code}: ${diagnostic.message}`;\n}\n\nfunction isSourceModuleFile(file: string): boolean {\n return /\\.(?:mreact\\.tsx|tsx?|jsx?|mjs|mts|cjs|cts)$/.test(file);\n}\n\nfunction isAppRelativeFile(file: string, relativeRoutesDir: string): boolean {\n return (\n relativeRoutesDir === \"\" ||\n file === relativeRoutesDir ||\n file.startsWith(`${relativeRoutesDir}/`)\n );\n}\n\nfunction moduleIdForBuildFile(file: string, relativeRoutesDir: string): string {\n return relativeRoutesDir === \"\" ? file : file.slice(relativeRoutesDir.length + 1);\n}\n\nasync function copyPublicAssets(publicDir: string, outDir: string): Promise<void> {\n if (!(await isPublicAssetDirectory(publicDir))) {\n return;\n }\n\n await copyPublicAssetsInner(publicDir, \"\", outDir);\n}\n\nasync function collectPublicAssetPaths(publicDir: string): Promise<string[]> {\n if (!(await isPublicAssetDirectory(publicDir))) {\n return [];\n }\n\n const paths: string[] = [];\n await collectPublicAssetPathsInner(publicDir, \"\", paths);\n\n return paths.sort();\n}\n\nasync function isPublicAssetDirectory(publicDir: string): Promise<boolean> {\n try {\n const info = await lstat(publicDir);\n\n return info.isDirectory();\n } catch (error) {\n if (isNodeError(error) && error.code === \"ENOENT\") {\n return false;\n }\n\n throw error;\n }\n}\n\nasync function copyAppFileConventionAssets(appDir: string, outDir: string): Promise<string[]> {\n let entries: Dirent[];\n try {\n entries = await readdir(appDir, { withFileTypes: true });\n } catch (error) {\n if (isNodeError(error) && error.code === \"ENOENT\") {\n return [];\n }\n\n throw error;\n }\n\n const paths: string[] = [];\n await mkdir(outDir, { recursive: true });\n\n for (const entry of entries) {\n if (!entry.isFile()) {\n continue;\n }\n\n const convention = appFileConventionForRootFilename(entry.name);\n if (convention === undefined || convention.kind !== \"asset\") {\n continue;\n }\n\n const outputPath = convention.path.startsWith(\"/\") ? convention.path.slice(1) : convention.path;\n await copyFile(join(appDir, entry.name), join(outDir, outputPath));\n paths.push(convention.path);\n }\n\n return paths.sort();\n}\n\nasync function collectPublicAssetPathsInner(\n publicDir: string,\n relativeDir: string,\n paths: string[],\n): Promise<void> {\n const entries = await readdir(join(publicDir, relativeDir), { withFileTypes: true });\n\n for (const entry of entries) {\n const relativePath = relativeDir === \"\" ? entry.name : `${relativeDir}/${entry.name}`;\n const publicPath = `/${relativePath}`;\n\n if (isReservedPublicAssetPath(publicPath)) {\n continue;\n }\n\n if (entry.isDirectory()) {\n await collectPublicAssetPathsInner(publicDir, relativePath, paths);\n continue;\n }\n\n if (entry.isFile()) {\n paths.push(publicPath);\n }\n }\n}\n\nasync function copyPublicAssetsInner(\n publicDir: string,\n relativeDir: string,\n outDir: string,\n): Promise<void> {\n const entries = await readdir(join(publicDir, relativeDir), { withFileTypes: true });\n\n for (const entry of entries) {\n const relativePath = relativeDir === \"\" ? entry.name : `${relativeDir}/${entry.name}`;\n\n if (isReservedPublicAssetPath(`/${relativePath}`)) {\n continue;\n }\n\n if (entry.isDirectory()) {\n await copyPublicAssetsInner(publicDir, relativePath, outDir);\n continue;\n }\n\n if (entry.isFile()) {\n const destination = join(outDir, relativePath);\n await mkdir(dirname(destination), { recursive: true });\n await copyFile(join(publicDir, relativePath), destination);\n }\n }\n}\n\nfunction isReservedPublicAssetPath(pathname: string): boolean {\n return pathname === \"/_mreact\" || pathname.startsWith(\"/_mreact/\");\n}\n\nfunction isNodeError(error: unknown): error is NodeJS.ErrnoException {\n return error instanceof Error && \"code\" in error;\n}\n\nasync function prerenderStaticRoutes(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n clientRoutes: readonly ClientRouteManifestEntry[];\n define?: UserConfig[\"define\"] | undefined;\n project: ResolvedAppRouterProject;\n routes: readonly AppRoute[];\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Record<string, BuiltPrerenderedRoute>> {\n const clientScripts = new Map(\n options.clientRoutes.flatMap((route) =>\n route.client && route.script !== undefined ? [[route.path, route.script]] : [],\n ),\n );\n const clientStyles = new Map(\n options.clientRoutes.flatMap((route) =>\n route.css !== undefined && route.css.length > 0 ? [[route.path, route.css]] : [],\n ),\n );\n const navigationScripts = new Map(\n options.clientRoutes.flatMap((route) =>\n route.navigation === true && route.navigationScript !== undefined\n ? [[route.path, route.navigationScript]]\n : [],\n ),\n );\n const prerendered: Record<string, BuiltPrerenderedRoute> = {};\n const importPolicy = {\n allowedPackages: await readDeclaredProjectPackages(options.project.projectRoot),\n allowedSourceDirs: options.project.allowedSourceDirs,\n projectRoot: options.project.projectRoot,\n } satisfies AppRouterImportPolicy;\n const serverModuleMap = new Map(\n Object.entries(options.serverModules).map(([file, artifact]) => [\n join(options.project.projectRoot, file),\n artifact,\n ]),\n );\n const serverModuleCacheVersion = buildPrerenderServerModuleCacheVersion({\n define: options.define,\n project: options.project,\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n\n const prerenderedEntries = await mapWithBuildConcurrency(\n options.routes.filter((route): route is AppRoute & { kind: \"page\" } => route.kind === \"page\"),\n async (route) => {\n const routeFile = relative(options.project.projectRoot, route.file).split(sep).join(\"/\");\n const analysis = options.sourceAnalysis.byRouteFile.get(routeFile);\n\n if (analysis === undefined || !analysis.hasPrerender) {\n return [] as Array<[string, BuiltPrerenderedRoute]>;\n }\n\n const entries: Array<[string, BuiltPrerenderedRoute]> = [];\n for (const pathname of await prerenderPathsForRoute(route, analysis, options.vitePlugins)) {\n const response = await renderAppRequest({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n clientScripts,\n clientStyles,\n define: options.define,\n importPolicy,\n navigationScripts,\n request: new Request(`http://mreact.local${pathname}`),\n serverModuleCacheVersion,\n serverModules: serverModuleMap,\n vitePlugins: options.vitePlugins,\n });\n const headers: Record<string, string> = {};\n\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n entries.push([\n pathname,\n {\n headers,\n html: await response.text(),\n status: response.status,\n },\n ]);\n }\n return entries;\n },\n );\n\n for (const entries of prerenderedEntries) {\n for (const [pathname, route] of entries) {\n prerendered[pathname] = route;\n }\n }\n\n return prerendered;\n}\n\nfunction buildPrerenderServerModuleCacheVersion(options: {\n define?: UserConfig[\"define\"] | undefined;\n project: ResolvedAppRouterProject;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): string {\n const sourceHashes = Array.from(options.sourceAnalysis.byFile.entries())\n .map(([file, analysis]) => [file, analysis.sourceHash] as const)\n .sort(([left], [right]) => left.localeCompare(right));\n\n return `build-prerender:${hashText(\n JSON.stringify({\n allowedSourceDirs: [...options.project.allowedSourceDirs].sort(),\n projectRoot: options.project.projectRoot,\n routesDir: options.project.routesDir,\n sourceHashes,\n viteDefine: viteDefineCacheKey(options.define),\n vitePlugins: vitePluginsCacheKey(options.vitePlugins),\n }),\n ).slice(0, 16)}`;\n}\n\nasync function prerenderPathsForRoute(\n route: AppRoute,\n analysis: BuildRouteSourceAnalysis,\n vitePlugins: readonly PluginOption[] | undefined,\n): Promise<string[]> {\n if (route.segments.every((segment) => segment.kind === \"static\")) {\n return [route.path];\n }\n\n if (!analysis.hasGenerateStaticParams) {\n return [];\n }\n\n const module = await importAppRouterSourceModule<{\n generateStaticParams?: () => Iterable<StaticParams> | PromiseLike<Iterable<StaticParams>>;\n }>({\n code: analysis.source,\n label: `generate-static-params:${route.file}`,\n resolveDir: dirname(route.file),\n sourcefile: route.file,\n vitePlugins,\n });\n const params = await module.generateStaticParams?.();\n\n if (params === undefined) {\n return [];\n }\n\n return Array.from(params, (entry) => routePathFromParams(route, entry));\n}\n\nfunction routePathFromParams(route: AppRoute, params: StaticParams): string {\n const parts = route.segments.flatMap((segment) => {\n if (segment.kind === \"static\") {\n return [segment.value];\n }\n\n const value = params[segment.name];\n\n if (value === undefined) {\n throw new Error(`${route.file}: generateStaticParams() is missing \"${segment.name}\".`);\n }\n\n if (segment.kind === \"catch-all\") {\n const values = Array.isArray(value) ? value : String(value).split(\"/\");\n\n return values.map((part) => encodeURIComponent(String(part)));\n }\n\n return [encodeURIComponent(String(value))];\n });\n\n return `/${parts.join(\"/\")}`;\n}\n\nasync function buildServerModuleArtifacts(options: {\n bundleRequestRuntimePackages: boolean;\n bundleCache: Map<string, Promise<RouterBundleOutput>>;\n cacheDir?: string | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n define?: UserConfig[\"define\"] | undefined;\n files: Record<string, string>;\n prebundleServerComponents: boolean;\n project: ResolvedAppRouterProject;\n projectRoot: string;\n routes: readonly AppRoute[];\n serverActionReferencesByFile: ReadonlyMap<\n string,\n readonly BuiltServerActionExpressionReference[]\n >;\n sourceAnalysis: BuildSourceAnalysisScope;\n serverTransformCache: ServerTransformCache;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<{\n artifacts: Record<string, BuiltServerModuleArtifact>;\n sharedChunks: readonly SharedServerModuleChunk[];\n}> {\n const routeByFile = new Map(\n options.routes.map((route) => [relative(options.projectRoot, route.file), route]),\n );\n // One shared compat vendor chunk set replaces per-route inlining whenever\n // any app source references the react/compat specifier family.\n const externalizeCompatVendor =\n options.prebundleServerComponents &&\n Object.values(options.files).some(sourceReferencesCompatVendorSpecifier);\n const loaderArtifactFiles = new Set<string>();\n const metadataArtifactFiles = new Set<string>();\n const requestArtifactFiles = new Set<string>();\n const requestModuleImportPolicy = {\n allowedPackages: await readDeclaredProjectPackages(options.project.projectRoot),\n allowedSourceDirs: options.project.allowedSourceDirs,\n projectRoot: options.project.projectRoot,\n } satisfies AppRouterImportPolicy;\n const artifacts: Record<string, BuiltServerModuleArtifact> = {};\n\n for (const file of Object.keys(options.files)) {\n const absoluteFile = join(options.projectRoot, file);\n const route = routeByFile.get(file);\n const analysis = options.sourceAnalysis.byFile.get(file);\n\n if (isMiddlewareFile(options.project.routesDir, absoluteFile)) {\n requestArtifactFiles.add(file);\n }\n\n if (route?.kind === \"server\" || route?.kind === \"metadata\") {\n requestArtifactFiles.add(file);\n }\n\n if (route?.kind === \"page\" && analysis?.hasLoader === true) {\n loaderArtifactFiles.add(file);\n }\n\n if (isServerComponentFile(file) && analysis?.hasMetadata === true) {\n metadataArtifactFiles.add(file);\n }\n }\n\n const requestBatchEntries: RouteRequestModuleBatchEntry[] = [];\n for (const [file, source] of Object.entries(options.files)) {\n const absoluteFile = join(options.projectRoot, file);\n const route = routeByFile.get(file);\n\n if (loaderArtifactFiles.has(file)) {\n requestBatchEntries.push({\n code: stripRouteLoaderOnlyExports(source, absoluteFile),\n filename: absoluteFile,\n key: routeRequestArtifactBatchKey(file, \"loader\"),\n label: \"Loader\",\n });\n }\n\n if (metadataArtifactFiles.has(file)) {\n requestBatchEntries.push({\n code: stripRouteMetadataOnlyExports(source, absoluteFile),\n filename: absoluteFile,\n key: routeRequestArtifactBatchKey(file, \"metadata\"),\n label: \"Metadata\",\n });\n }\n\n if (isMiddlewareFile(options.project.routesDir, absoluteFile)) {\n // Middleware joins the batch when runtime packages are bundled so the\n // auth/control dependency graph is shared with route loader artifacts.\n if (options.bundleRequestRuntimePackages) {\n requestBatchEntries.push({\n code: source,\n filename: absoluteFile,\n key: routeRequestArtifactBatchKey(file, \"request\"),\n label: \"Middleware\",\n });\n }\n continue;\n }\n\n if (requestArtifactFiles.has(file) && route?.kind !== \"server\" && route?.kind !== \"metadata\") {\n requestBatchEntries.push({\n code: stripRouteRequestOnlyExports(source, absoluteFile),\n filename: absoluteFile,\n key: routeRequestArtifactBatchKey(file, \"request\"),\n label: \"Loader\",\n });\n }\n }\n\n const { codeByKey: requestBatchOutputs, sharedChunks } =\n requestBatchEntries.length >= (options.bundleRequestRuntimePackages ? 2 : 3)\n ? await bundleRouteRequestModuleBatchCode({\n appDir: options.project.routesDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n emitSharedChunks: options.bundleRequestRuntimePackages,\n entries: requestBatchEntries,\n externalizeAllowedPackages: !options.bundleRequestRuntimePackages,\n importPolicy: requestModuleImportPolicy,\n define: options.define,\n vitePlugins: options.vitePlugins,\n })\n : { codeByKey: new Map<string, string>(), sharedChunks: [] };\n\n const artifactEntries = await mapWithBuildConcurrency(\n Object.entries(options.files),\n async ([file, source]) => {\n const absoluteFile = join(options.projectRoot, file);\n const route = routeByFile.get(file);\n const routeAnalysis = options.sourceAnalysis.byRouteFile.get(file);\n const artifact: BuiltServerModuleArtifact = {};\n const routeActionReferences = options.serverActionReferencesByFile.get(file) ?? [];\n const renderSource =\n routeActionReferences.length === 0\n ? source\n : prepareRouteServerActionPlaceholders({\n code: source,\n formActionReferences: routeActionReferences,\n });\n\n if (\n requestArtifactFiles.has(file) ||\n loaderArtifactFiles.has(file) ||\n metadataArtifactFiles.has(file)\n ) {\n if (loaderArtifactFiles.has(file)) {\n const code =\n requestBatchOutputs.get(routeRequestArtifactBatchKey(file, \"loader\")) ??\n (await bundleRouteLoaderModuleCode({\n appDir: options.project.routesDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n code: stripRouteLoaderOnlyExports(source, absoluteFile),\n filename: absoluteFile,\n externalizeAllowedPackages: !options.bundleRequestRuntimePackages,\n importPolicy: requestModuleImportPolicy,\n define: options.define,\n vitePlugins: options.vitePlugins,\n }));\n artifact.loader = {\n code,\n sourceHash: hashText(source),\n };\n }\n\n if (metadataArtifactFiles.has(file)) {\n const code =\n requestBatchOutputs.get(routeRequestArtifactBatchKey(file, \"metadata\")) ??\n (await bundleRouteRequestModuleCode({\n appDir: options.project.routesDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n code: stripRouteMetadataOnlyExports(source, absoluteFile),\n filename: absoluteFile,\n externalizeAllowedPackages: !options.bundleRequestRuntimePackages,\n importPolicy: requestModuleImportPolicy,\n label: \"Metadata\",\n define: options.define,\n vitePlugins: options.vitePlugins,\n }));\n artifact.routeMetadata = {\n code,\n sourceHash: hashText(source),\n };\n }\n\n if (requestArtifactFiles.has(file)) {\n const batchedRequestCode = requestBatchOutputs.get(\n routeRequestArtifactBatchKey(file, \"request\"),\n );\n artifact.request = {\n code:\n batchedRequestCode ??\n (await buildRequestModuleArtifactCode({\n appDir: options.project.routesDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n filename: absoluteFile,\n externalizeAllowedPackages: !options.bundleRequestRuntimePackages,\n importPolicy: requestModuleImportPolicy,\n define: options.define,\n routeKind: route?.kind,\n source,\n vitePlugins: options.vitePlugins,\n })),\n sourceHash: hashText(source),\n };\n }\n }\n\n if (!isServerComponentFile(file)) {\n return Object.keys(artifact).length > 0 ? ([file, artifact] as const) : undefined;\n }\n\n const closureUsesAwait =\n routeAnalysis?.streamRoute ??\n shouldBuildRouteAsStream({\n filename: file,\n files: options.files,\n projectRoot: options.projectRoot,\n source,\n });\n const streamRoute = route !== undefined && closureUsesAwait;\n const serverOutputs =\n streamRoute || (route === undefined && closureUsesAwait)\n ? ([\"stream\", \"string\"] as const)\n : ([\"string\"] as const);\n const code =\n routeActionReferences.length === 0 && routeAnalysis !== undefined\n ? routeAnalysis.routeCode\n : route === undefined\n ? renderSource\n : stripRouteBuildExports(renderSource, absoluteFile);\n const clientInference =\n routeAnalysis === undefined\n ? await inferClientRouteModule({\n ...(route === undefined ? {} : { appDir: options.project.routesDir }),\n cache: options.clientRouteInferenceCache,\n code:\n route === undefined\n ? stripRouteClientOnlyExports(source, absoluteFile)\n : stripRouteClientSource({ code: source, filename: route.file }),\n filename: join(options.projectRoot, file),\n ...(route === undefined ? {} : { routePath: route.path }),\n vitePlugins: options.vitePlugins,\n })\n : undefined;\n const clientBoundaryImports =\n routeAnalysis?.clientBoundaryImports ?? clientInference?.clientBoundaryImports ?? [];\n const clientBoundaryFallbackImports =\n routeAnalysis?.clientBoundaryFallbackImports ??\n clientInference?.clientBoundaryFallbackImports ??\n [];\n\n for (const diagnostic of clientInference?.diagnostics ?? []) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n if (routeAnalysis !== undefined) {\n artifact.analysis = builtRouteSourceAnalysisSummary({\n analysis: routeAnalysis,\n });\n }\n\n const serverOutputArtifacts = await mapWithBuildConcurrency(\n serverOutputs,\n async (serverOutput) => {\n const output = await transformServerRouteSource({\n cache: options.serverTransformCache,\n code,\n clientBoundaryImports,\n clientBoundaryFallbackImports,\n filename: join(options.projectRoot, file),\n moduleContextCache: options.clientRouteInferenceCache,\n serverOutput,\n ...(serverOutput === \"stream\" &&\n (routeAnalysis?.clientRoute ?? clientInference?.client) === true\n ? { serverAwaitHydration: true as const }\n : {}),\n });\n const fatalDiagnostics = output.diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n\n if (fatalDiagnostics.length > 0) {\n if (\n serverOutput === \"string\" &&\n streamRoute &&\n route?.kind === \"page\" &&\n fatalDiagnostics.every(\n (diagnostic) => diagnostic.code === \"MR_UNSUPPORTED_AWAIT_INNER_COMPONENT\",\n )\n ) {\n return undefined;\n }\n\n throw new Error(\n fatalDiagnostics.map((diagnostic) => formatDiagnostic(file, diagnostic)).join(\"\\n\"),\n );\n }\n\n if (\n serverOutput === \"string\" &&\n streamRoute &&\n route?.kind === \"page\" &&\n source.includes(\"<Await\") &&\n /\\bLink\\b/.test(source)\n ) {\n // Native Link renders pre-rendered children as HTML. Keep direct\n // Await renderers on the stream artifact so the string artifact\n // cannot drop deferred Link content before the boundary resolves.\n return undefined;\n }\n\n const shouldWriteRenderBundle =\n options.prebundleServerComponents &&\n (routeActionReferences.length === 0 ||\n canUseBuildServerActionPlaceholders(routeActionReferences));\n const bundleCode = shouldWriteRenderBundle\n ? await buildServerComponentBundleArtifactCode({\n clientRouteInferenceCache: options.clientRouteInferenceCache,\n code: output.code,\n externalizeCompatVendor,\n filename: absoluteFile,\n define: options.define,\n root: options.projectRoot,\n serverOutput,\n vitePlugins: options.vitePlugins,\n })\n : undefined;\n\n return [\n serverOutput,\n {\n ...(bundleCode === undefined ? {} : { bundleCode }),\n code: output.code,\n metadata: output.metadata,\n sourceHash: hashText(code),\n },\n ] as const;\n },\n );\n\n for (const entry of serverOutputArtifacts) {\n if (entry !== undefined) {\n artifact[entry[0]] = entry[1];\n }\n }\n\n return [file, artifact] as const;\n },\n );\n\n for (const entry of artifactEntries) {\n if (entry !== undefined) {\n artifacts[entry[0]] = entry[1];\n }\n }\n\n return { artifacts, sharedChunks };\n}\n\nasync function buildServerComponentBundleArtifactCode(options: {\n clientRouteInferenceCache: ClientRouteInferenceCache;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeCompatVendor?: boolean | undefined;\n filename: string;\n root?: string | undefined;\n serverOutput: ServerOutputMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return await bundleAppRouterSourceModule({\n code: options.code,\n define: options.define,\n externalizeCompatVendor: options.externalizeCompatVendor,\n label: `server-component:${options.filename}`,\n resolveDir: dirname(options.filename),\n root: options.root,\n serverSourceTransform: {\n clientRouteInferenceCache: options.clientRouteInferenceCache,\n define: options.define,\n dev: false,\n serverOutput: options.serverOutput,\n vitePlugins: options.vitePlugins,\n },\n sourcefile: options.filename,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function transformServerRouteSource(options: {\n cache: ServerTransformCache;\n clientBoundaryImports: readonly string[];\n clientBoundaryFallbackImports?: readonly string[];\n code: string;\n filename: string;\n moduleContextCache: ClientRouteInferenceCache;\n serverOutput: ServerOutputMode;\n}): Promise<ServerTransformOutput> {\n const cacheKey = stableCacheKey({\n clientBoundaryImports: options.clientBoundaryImports,\n clientBoundaryFallbackImports: options.clientBoundaryFallbackImports ?? [],\n codeHash: hashText(options.code),\n filename: resolve(options.filename),\n serverOutput: options.serverOutput,\n target: \"server\",\n });\n const cached = options.cache.get(cacheKey);\n\n if (cached !== undefined) {\n return await cached;\n }\n\n const transformed = Promise.resolve().then(async () => {\n const moduleContext = await compilerModuleContextForSource({\n cache: options.moduleContextCache,\n code: options.code,\n filename: options.filename,\n });\n\n return transformCompilerModuleContext({\n code: options.code,\n clientBoundaryImports: options.clientBoundaryImports,\n clientBoundaryFallbackImports: options.clientBoundaryFallbackImports ?? [],\n dev: false,\n filename: options.filename,\n moduleContext,\n serverEscape: nativeEscapeTransform,\n serverOutput: options.serverOutput,\n target: \"server\",\n });\n });\n options.cache.set(cacheKey, transformed);\n return await transformed;\n}\n\nfunction builtRouteSourceAnalysisSummary(options: {\n analysis: BuildRouteSourceAnalysis;\n}): BuiltRouteSourceAnalysisSummary {\n return {\n authIncludesClaims: options.analysis.authIncludesClaims,\n ...(options.analysis.cachePolicy === undefined\n ? {}\n : { cachePolicy: options.analysis.cachePolicy }),\n clientBoundaryImports: options.analysis.clientBoundaryImports,\n clientBoundaryFallbackImports: options.analysis.clientBoundaryFallbackImports,\n clientRoute: options.analysis.clientRoute,\n hasLoader: options.analysis.hasLoader,\n routeCode: options.analysis.routeCode,\n routePath: options.analysis.route.path,\n sourceHash: options.analysis.sourceHash,\n streamRoute: options.analysis.streamRoute,\n usesRuntimeCacheControl: options.analysis.usesRuntimeCacheControl,\n };\n}\n\nfunction shouldBuildRouteAsStream(options: {\n filename: string;\n files: Record<string, string>;\n projectRoot: string;\n source: string;\n}): boolean {\n return (\n isStreamRouteSource(\n options.source,\n sourceFilenameForBuildAnalysis(options.projectRoot, options.filename),\n ) ||\n routeClosureMayUseAwaitBoundary({\n filename: options.filename,\n files: options.files,\n projectRoot: options.projectRoot,\n source: options.source,\n })\n );\n}\n\nfunction sourceFilenameForBuildAnalysis(projectRoot: string, filename: string): string {\n return filename.startsWith(\"/\") ? filename : join(projectRoot, filename);\n}\n\nfunction resolveBuildLocalSourceImport(\n files: Record<string, string>,\n importer: string,\n specifier: string,\n): string | undefined {\n if (!specifier.startsWith(\".\")) {\n return undefined;\n }\n\n const base = join(dirname(importer), specifier);\n\n for (const candidate of sourceModuleCandidates(base)) {\n if (files[candidate] !== undefined) {\n return candidate;\n }\n }\n\n return undefined;\n}\n\nfunction usesRuntimeCacheControl(code: string): boolean {\n return /\\bcacheControl\\s*\\(/.test(code);\n}\n\nfunction routeRequestArtifactBatchKey(\n file: string,\n kind: \"loader\" | \"metadata\" | \"request\",\n): string {\n return `${kind}:${file}`;\n}\n\nfunction authIncludesClaims(code: string): boolean {\n return /\\bexport\\s+const\\s+auth\\s*=\\s*[\"']include-claims[\"']\\s*;?/.test(code);\n}\n\nasync function buildRequestModuleArtifactCode(options: {\n appDir: string;\n bundleCache: Map<string, Promise<RouterBundleOutput>>;\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAllowedPackages: boolean;\n filename: string;\n importPolicy: AppRouterImportPolicy;\n routeKind?: AppRoute[\"kind\"] | undefined;\n source: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n if (isMiddlewareFile(options.appDir, options.filename)) {\n return await bundleMiddlewareModuleCode({\n appDir: options.appDir,\n code: options.source,\n define: options.define,\n file: options.filename,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n importPolicy: options.importPolicy,\n vitePlugins: options.vitePlugins,\n });\n }\n\n if (options.routeKind === \"server\" || options.routeKind === \"metadata\") {\n return await bundleAppRouterSourceModule({\n code: options.source,\n define: options.define,\n label: `server-route:${options.filename}`,\n plugins: [fileImportMetaUrlPlugin()],\n resolveDir: dirname(options.filename),\n root: options.importPolicy.projectRoot,\n sourcefile: options.filename,\n vitePlugins: options.vitePlugins,\n });\n }\n\n return await bundleRouteLoaderModuleCode({\n appDir: options.appDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n code: stripRouteRequestOnlyExports(options.source, options.filename),\n define: options.define,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n filename: options.filename,\n importPolicy: options.importPolicy,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function bundleRouteLoaderModuleCode(options: {\n appDir: string;\n bundleCache?: Map<string, Promise<RouterBundleOutput>> | undefined;\n cacheDir?: string | undefined;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAllowedPackages?: boolean | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return await bundleRouteRequestModuleCode({\n ...options,\n label: \"Loader\",\n });\n}\n\nasync function bundleRouteRequestModuleBatchCode(options: {\n appDir: string;\n bundleCache?: Map<string, Promise<RouterBundleOutput>> | undefined;\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n emitSharedChunks?: boolean | undefined;\n entries: readonly RouteRequestModuleBatchEntry[];\n externalizeAllowedPackages?: boolean | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteRequestModuleBatchOutput> {\n if (options.entries.length === 0) {\n return { codeByKey: new Map(), sharedChunks: [] };\n }\n\n if (options.entries.length === 1) {\n const entry = options.entries[0];\n if (entry === undefined) {\n return { codeByKey: new Map(), sharedChunks: [] };\n }\n\n return {\n codeByKey: new Map([\n [\n entry.key,\n await bundleRouteRequestModuleCode({\n appDir: options.appDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n code: entry.code,\n define: options.define,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n filename: entry.filename,\n importPolicy: options.importPolicy,\n label: entry.label,\n vitePlugins: options.vitePlugins,\n }),\n ],\n ]),\n sharedChunks: [],\n };\n }\n\n const namesByKey = new Map(\n options.entries.map((entry, index) => [\n entry.key,\n `request-${index}-${hashText(entry.key).slice(0, 8)}`,\n ]),\n );\n const output = await bundleRouterModules({\n cacheDir: options.cacheDir,\n // Externalized module code lives flat in server-modules/code, so shared\n // chunks must be importable as \"./chunks/...\" from any entry file there.\n chunkFileNames: \"chunks/request.[hash].mjs\",\n entries: options.entries.map((entry) => ({\n code: entry.code,\n filename: entry.filename,\n name: namesByKey.get(entry.key) ?? hashText(entry.key).slice(0, 8),\n })),\n entryFileNames: \"[name].mjs\",\n define: options.define,\n platform: \"node\",\n plugins: [\n fileImportMetaUrlPlugin(),\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n importPolicy: options.importPolicy,\n label: \"Request artifact\",\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n }),\n ],\n root:\n options.importPolicy?.projectRoot ?? dirname(options.entries[0]?.filename ?? options.appDir),\n vitePlugins: options.vitePlugins,\n });\n const sharedChunks = output.chunks.filter((chunk) => !chunk.isEntry);\n\n if (sharedChunks.length > 0 && !canEmitSharedRequestChunks(options.emitSharedChunks, output)) {\n const fallbackEntries = await mapWithBuildConcurrency(\n options.entries,\n async (entry) =>\n [\n entry.key,\n await bundleRouteRequestModuleCode({\n appDir: options.appDir,\n bundleCache: options.bundleCache,\n cacheDir: options.cacheDir,\n code: entry.code,\n define: options.define,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n filename: entry.filename,\n importPolicy: options.importPolicy,\n label: entry.label,\n vitePlugins: options.vitePlugins,\n }),\n ] as const,\n );\n return { codeByKey: new Map(fallbackEntries), sharedChunks: [] };\n }\n\n const chunksByName = new Map(output.chunks.map((chunk) => [chunk.name, chunk]));\n return {\n codeByKey: new Map(\n options.entries.map((entry) => {\n const name = namesByKey.get(entry.key);\n const chunk = name === undefined ? undefined : chunksByName.get(name);\n\n if (chunk === undefined) {\n throw new Error(`Failed to compile request artifact for ${entry.filename}.`);\n }\n\n return [entry.key, chunk.code] as const;\n }),\n ),\n sharedChunks: sharedChunks.map((chunk) => ({ code: chunk.code, fileName: chunk.fileName })),\n };\n}\n\nfunction canEmitSharedRequestChunks(\n emitSharedChunks: boolean | undefined,\n output: RouterBundleModulesOutput,\n): boolean {\n if (emitSharedChunks !== true) {\n return false;\n }\n\n if (output.assets !== undefined && output.assets.length > 0) {\n return false;\n }\n\n // Entry code is rewritten into content-addressed module files, so emitted\n // imports may only target shared chunk files or external specifiers.\n const entryFileNames = new Set(\n output.chunks.filter((chunk) => chunk.isEntry).map((chunk) => chunk.fileName),\n );\n return output.chunks.every((chunk) =>\n chunk.imports.every((specifier) => !entryFileNames.has(specifier)),\n );\n}\n\nexport async function __bundleRouteRequestModuleBatchForTests(options: {\n appDir: string;\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n entries: readonly RouteRequestModuleBatchEntry[];\n externalizeAllowedPackages?: boolean | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Record<string, string>> {\n return Object.fromEntries(\n (\n await bundleRouteRequestModuleBatchCode({\n appDir: options.appDir,\n cacheDir: options.cacheDir,\n define: options.define,\n entries: options.entries,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n importPolicy: options.importPolicy,\n vitePlugins: options.vitePlugins,\n })\n ).codeByKey,\n );\n}\n\nasync function bundleRouteRequestModuleCode(options: {\n appDir: string;\n bundleCache?: Map<string, Promise<RouterBundleOutput>> | undefined;\n cacheDir?: string | undefined;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAllowedPackages?: boolean | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n label: RouteRequestModuleBundleLabel;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n cache: options.bundleCache,\n cacheDir: options.cacheDir,\n cacheKey: routeRequestBundleCacheKey(options),\n code: options.code,\n define: options.define,\n filename: options.filename,\n platform: \"node\",\n root: options.importPolicy?.projectRoot,\n vitePlugins: options.vitePlugins,\n plugins: [\n fileImportMetaUrlPlugin(),\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n importPolicy: options.importPolicy,\n label: options.label,\n }),\n ],\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to compile ${options.label.toLowerCase()} for ${options.filename}.`);\n }\n\n return code;\n}\n\nfunction routeRequestBundleCacheKey(options: {\n appDir: string;\n code: string;\n define?: UserConfig[\"define\"] | undefined;\n externalizeAllowedPackages?: boolean | undefined;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n label: RouteRequestModuleBundleLabel;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): string {\n return stableCacheKey({\n appDir: resolve(options.appDir),\n codeHash: hashText(options.code),\n filename: resolve(options.filename),\n importPolicy:\n options.importPolicy === undefined\n ? undefined\n : {\n allowedPackages: [...(options.importPolicy.allowedPackages ?? [])].sort(),\n allowedSourceDirs: (options.importPolicy.allowedSourceDirs ?? [])\n .map((dir) => resolve(dir))\n .sort(),\n projectRoot:\n options.importPolicy.projectRoot === undefined\n ? undefined\n : resolve(options.importPolicy.projectRoot),\n },\n externalizeAllowedPackages: options.externalizeAllowedPackages,\n label: options.label,\n platform: \"node\",\n target: \"es2022\",\n viteDefine: viteDefineCacheKey(options.define),\n vitePlugins: vitePluginsCacheKey(options.vitePlugins),\n });\n}\n\nfunction stableCacheKey(value: unknown): string {\n return JSON.stringify(value);\n}\n\nfunction isMiddlewareFile(appDir: string, file: string): boolean {\n return file === join(appDir, \"middleware.ts\") || file === join(appDir, \"middleware.mreact.ts\");\n}\n\nfunction hasMetadataExport(code: string): boolean {\n return (\n /\\bexport\\s+const\\s+metadata\\s*=/.test(code) ||\n /\\bexport\\s+(?:async\\s+)?function\\s+generateMetadata\\b/.test(code) ||\n /\\bexport\\s*\\{[^}]*\\bgenerateMetadata\\b[^}]*\\}/.test(code)\n );\n}\n\nasync function readDeclaredProjectPackages(projectRoot: string): Promise<string[]> {\n try {\n const json = JSON.parse(await readFile(join(projectRoot, \"package.json\"), \"utf8\")) as {\n dependencies?: Record<string, unknown> | undefined;\n devDependencies?: Record<string, unknown> | undefined;\n optionalDependencies?: Record<string, unknown> | undefined;\n peerDependencies?: Record<string, unknown> | undefined;\n };\n\n return [\n ...Object.keys(json.dependencies ?? {}),\n ...Object.keys(json.devDependencies ?? {}),\n ...Object.keys(json.optionalDependencies ?? {}),\n ...Object.keys(json.peerDependencies ?? {}),\n ];\n } catch {\n return [];\n }\n}\n\ninterface CloudflareRouteModulesOutput {\n registryFile: string;\n}\n\ninterface CloudflareRequiredRoute {\n route: AppRoute;\n routeFile: string;\n routeId: string;\n}\n\ninterface CloudflareBatchedRouteModule {\n code: string;\n fileName: string;\n}\n\ninterface CloudflareBatchedRouteModules {\n chunks: readonly RouterBundleChunkOutput[];\n entries: ReadonlyMap<string, CloudflareBatchedRouteModule>;\n}\n\ninterface CloudflareBatchedComponentRoute {\n filename: string;\n routeId: string;\n}\n\ninterface CloudflareBatchedStringRoute {\n filename: string;\n routeId: string;\n shellFiles: CloudflareShellFile[];\n}\n\ninterface RouteRequestModuleBatchEntry {\n code: string;\n filename: string;\n key: string;\n label: RouteRequestModuleBundleLabel;\n}\n\ntype RouteRequestModuleBundleLabel = \"Loader\" | \"Metadata\" | \"Middleware\";\n\ninterface SharedServerModuleChunk {\n code: string;\n fileName: string;\n}\n\ninterface RouteRequestModuleBatchOutput {\n codeByKey: Map<string, string>;\n sharedChunks: readonly SharedServerModuleChunk[];\n}\n\nconst cloudflareMiddlewareRouteModuleKey = \"__middleware__\";\n\nasync function writeCloudflareRouteModules(options: {\n cacheDir?: string | undefined;\n cloudflareDir: string;\n define?: UserConfig[\"define\"] | undefined;\n files: Record<string, string>;\n prerenderedRoutes: Record<string, BuiltPrerenderedRoute>;\n projectRoot: string;\n routesDir: string;\n routes: readonly AppRoute[];\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareRouteModulesOutput> {\n const routesDir = join(options.cloudflareDir, \"routes\");\n const requiredRoutes = await Promise.all(\n options.routes\n .filter((route) => cloudflareRouteRequiresGeneratedModule(route, options.prerenderedRoutes))\n .flatMap((route): CloudflareRequiredRoute[] => {\n const routeFile = relative(options.projectRoot, route.file).replaceAll(sep, \"/\");\n const analysis = options.sourceAnalysis.byFile.get(routeFile);\n\n return analysis === undefined\n ? []\n : [\n {\n route,\n routeFile,\n routeId: routeIdForPath(route.path),\n },\n ];\n }),\n );\n\n await mkdir(routesDir, { recursive: true });\n\n const serverRouteModules = await buildCloudflareServerRouteModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n routes: requiredRoutes\n .filter(({ route }) => route.kind === \"server\" || route.kind === \"metadata\")\n .map(({ route, routeId }) => ({ filename: route.file, routeId })),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const loaderRouteModules = await buildCloudflareRouteLoaderModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n routes: requiredRoutes\n .filter(\n ({ route, routeFile }) =>\n route.kind === \"page\" &&\n options.sourceAnalysis.byRouteFile.get(routeFile)?.hasLoader === true,\n )\n .map(({ route, routeId }) => ({ filename: route.file, routeId })),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const cloudflareMiddlewareFile = findCloudflareMiddlewareFile({\n files: options.files,\n projectRoot: options.projectRoot,\n routesDir: options.routesDir,\n });\n const middlewareRouteModules = await buildCloudflareMiddlewareModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n root: options.projectRoot,\n routes:\n cloudflareMiddlewareFile === undefined\n ? []\n : [\n {\n filename: cloudflareMiddlewareFile,\n routeId: cloudflareMiddlewareRouteModuleKey,\n },\n ],\n vitePlugins: options.vitePlugins,\n });\n const directComponentRoutes = await collectCloudflareDirectComponentRoutes({\n requiredRoutes,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n });\n const stringShellComponentRoutes = await collectCloudflareStringShellComponentRoutes({\n requiredRoutes,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n });\n const directComponentRouteIds = new Set(directComponentRoutes.map((route) => route.routeId));\n const stringShellComponentRouteIds = new Set(\n stringShellComponentRoutes.map((route) => route.routeId),\n );\n const directComponentModules = await buildCloudflareServerComponentModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n projectRoot: options.projectRoot,\n routes: directComponentRoutes,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n const stringShellComponentModules = await buildCloudflareStringRouteComponentModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n projectRoot: options.projectRoot,\n routes: stringShellComponentRoutes,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n\n await Promise.all([\n writeCloudflareBatchedRouteModuleChunks(options.cloudflareDir, serverRouteModules),\n writeCloudflareBatchedRouteModuleChunks(options.cloudflareDir, loaderRouteModules),\n writeCloudflareBatchedRouteModuleChunks(options.cloudflareDir, directComponentModules),\n writeCloudflareBatchedRouteModuleChunks(options.cloudflareDir, stringShellComponentModules),\n writeCloudflareBatchedRouteModuleChunks(options.cloudflareDir, middlewareRouteModules),\n ]);\n\n const registryEntries = await mapWithBuildConcurrency(\n requiredRoutes,\n async ({ route, routeFile, routeId }) => {\n const routeModuleFile = `routes/${routeId}.mjs`;\n let routeModuleExports: string[];\n\n if (route.kind === \"server\" || route.kind === \"metadata\") {\n try {\n const serverRouteModule = serverRouteModules.entries.get(routeId);\n\n if (serverRouteModule === undefined) {\n throw new Error(`Missing bundled Cloudflare ${route.kind} route module.`);\n }\n\n const serverRouteFile = serverRouteModule.fileName;\n const serverRouteImport = `./${serverRouteFile.split(\"/\").pop() ?? serverRouteFile}`;\n routeModuleExports = [\n `export * from ${JSON.stringify(serverRouteImport)};`,\n ...(route.kind === \"metadata\"\n ? [`export { default } from ${JSON.stringify(serverRouteImport)};`]\n : []),\n ];\n } catch (error) {\n throw new Error(\n `Failed to build Cloudflare ${route.kind} route module for ${routeFile}: ${errorMessage(error)}`,\n );\n }\n\n await writeFile(\n join(options.cloudflareDir, routeModuleFile),\n `${routeModuleExports.join(\"\\n\")}\\n`,\n );\n return `${JSON.stringify(routeFile)}: () => import(${JSON.stringify(`./${routeModuleFile}`)})`;\n }\n\n const serverOutput =\n options.serverModules[routeFile]?.analysis?.streamRoute === true ||\n options.sourceAnalysis.byRouteFile.get(routeFile)?.streamRoute === true\n ? \"stream\"\n : \"string\";\n\n try {\n const batchedComponent = stringShellComponentRouteIds.has(routeId)\n ? stringShellComponentModules.entries.get(routeId)\n : directComponentRouteIds.has(routeId)\n ? directComponentModules.entries.get(routeId)\n : undefined;\n let componentFile = batchedComponent?.fileName;\n\n if (batchedComponent === undefined) {\n const componentOutput =\n serverOutput === \"stream\"\n ? await buildCloudflareStreamRouteComponentModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: route.file,\n projectRoot: options.projectRoot,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n })\n : await buildCloudflareStringRouteComponentModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: route.file,\n projectRoot: options.projectRoot,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n\n componentFile = `routes/${routeId}.${hashText(componentOutput).slice(0, 8)}.component.mjs`;\n await writeFile(join(options.cloudflareDir, componentFile), componentOutput);\n }\n\n if (componentFile === undefined) {\n throw new Error(\"Missing bundled Cloudflare component module.\");\n }\n\n const componentImport = `./${componentFile.split(\"/\").pop() ?? componentFile}`;\n routeModuleExports = [cloudflarePageRouteFacadeModuleSource(componentImport)];\n } catch (error) {\n throw new Error(\n `Failed to build Cloudflare route module for ${routeFile}: ${errorMessage(error)}`,\n );\n }\n\n if (options.sourceAnalysis.byRouteFile.get(routeFile)?.hasLoader === true) {\n try {\n const loaderModule = loaderRouteModules.entries.get(routeId);\n\n if (loaderModule === undefined) {\n throw new Error(\"Missing bundled Cloudflare loader module.\");\n }\n\n const loaderFile = loaderModule.fileName;\n const loaderImport = `./${loaderFile.split(\"/\").pop() ?? loaderFile}`;\n routeModuleExports.push(`export { loader } from ${JSON.stringify(loaderImport)};`);\n } catch (error) {\n throw new Error(\n `Failed to build Cloudflare loader module for ${routeFile}: ${errorMessage(error)}`,\n );\n }\n }\n\n await writeFile(\n join(options.cloudflareDir, routeModuleFile),\n `${routeModuleExports.join(\"\\n\")}\\n`,\n );\n return `${JSON.stringify(routeFile)}: () => import(${JSON.stringify(`./${routeModuleFile}`)})`;\n },\n );\n\n const registrySource = [\n `export const routeModules = {`,\n ...cloudflareMiddlewareRegistryEntries(middlewareRouteModules),\n ...registryEntries.map((entry) => ` ${entry},`),\n `};`,\n `export default routeModules;`,\n ``,\n ].join(\"\\n\");\n\n await writeFile(join(options.cloudflareDir, \"route-modules.mjs\"), registrySource);\n\n return { registryFile: \"route-modules.mjs\" };\n}\n\nfunction findCloudflareMiddlewareFile(options: {\n files: Record<string, string>;\n projectRoot: string;\n routesDir: string;\n}): string | undefined {\n const relativeRoutesDir = relative(options.projectRoot, options.routesDir).replaceAll(sep, \"/\");\n\n const relativeFile = [\"middleware.ts\", \"middleware.mreact.ts\"]\n .map((file) => (relativeRoutesDir === \"\" ? file : `${relativeRoutesDir}/${file}`))\n .find((file) => options.files[file] !== undefined);\n\n return relativeFile === undefined ? undefined : join(options.projectRoot, relativeFile);\n}\n\nfunction cloudflareMiddlewareRegistryEntries(modules: CloudflareBatchedRouteModules): string[] {\n const middleware = modules.entries.get(cloudflareMiddlewareRouteModuleKey);\n if (middleware === undefined) {\n return [];\n }\n\n return [\n ` ${JSON.stringify(cloudflareMiddlewareRouteModuleKey)}: () => import(${JSON.stringify(`./${middleware.fileName}`)}),`,\n ];\n}\n\nfunction cloudflarePageRouteFacadeModuleSource(componentImport: string): string {\n return `import * as componentModule from ${JSON.stringify(componentImport)};\n\nconst componentSlots = readComponentModuleExport(componentModule, \"slots\");\nconst componentGenerateMetadata = readComponentModuleExport(componentModule, \"generateMetadata\");\nconst componentMetadata = readComponentModuleExport(componentModule, \"metadata\");\n\nexport function App(props) {\n return renderCloudflareRouteComponent(props);\n}\nexport default function CloudflareDefaultRouteComponent(props) {\n return renderCloudflareRouteComponent(props);\n}\nexport function CloudflareRouteComponent(props) {\n return renderCloudflareRouteComponent(props);\n}\nexport const slots = componentSlots === undefined ? undefined : { ...componentSlots };\nexport const generateMetadata =\n typeof componentGenerateMetadata === \"function\" ? componentGenerateMetadata : undefined;\nexport const metadata = componentMetadata;\n\nfunction renderCloudflareRouteComponent(props) {\n const routeComponent = resolveCloudflareRouteComponent();\n if (routeComponent === undefined) {\n throw new Error(\"No Cloudflare component export was found for ${componentImport}.\");\n }\n\n return routeComponent(props);\n}\n\nfunction resolveCloudflareRouteComponent() {\n const componentDefault = readComponentModuleExport(componentModule, \"default\");\n if (typeof componentDefault === \"function\") {\n return componentDefault;\n }\n\n const componentApp = readComponentModuleExport(componentModule, \"App\");\n if (typeof componentApp === \"function\") {\n return componentApp;\n }\n\n return undefined;\n}\n\nfunction readComponentModuleExport(module, name) {\n const descriptor = Object.getOwnPropertyDescriptor(module, name);\n if (descriptor === undefined) {\n return undefined;\n }\n\n if (\"value\" in descriptor) {\n return descriptor.value;\n }\n\n return descriptor.get?.call(module);\n}`;\n}\n\nasync function collectCloudflareDirectComponentRoutes(options: {\n requiredRoutes: readonly CloudflareRequiredRoute[];\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n}): Promise<CloudflareBatchedComponentRoute[]> {\n const routes = await Promise.all(\n options.requiredRoutes.map(async ({ route, routeFile, routeId }) => {\n if (route.kind !== \"page\") {\n return undefined;\n }\n\n const serverOutput =\n options.serverModules[routeFile]?.analysis?.streamRoute === true ||\n options.sourceAnalysis.byRouteFile.get(routeFile)?.streamRoute === true\n ? \"stream\"\n : \"string\";\n\n if (serverOutput !== \"string\") {\n return undefined;\n }\n\n const shellFiles = await cloudflareShellFilesForPage(options.routesDir, route.file);\n\n if (shellFiles.length > 0) {\n return undefined;\n }\n\n return {\n filename: route.file,\n routeId,\n };\n }),\n );\n\n return routes.filter((route): route is CloudflareBatchedComponentRoute => route !== undefined);\n}\n\nasync function collectCloudflareStringShellComponentRoutes(options: {\n requiredRoutes: readonly CloudflareRequiredRoute[];\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n}): Promise<CloudflareBatchedStringRoute[]> {\n const routes = await Promise.all(\n options.requiredRoutes.map(async ({ route, routeFile, routeId }) => {\n if (route.kind !== \"page\") {\n return undefined;\n }\n\n const serverOutput =\n options.serverModules[routeFile]?.analysis?.streamRoute === true ||\n options.sourceAnalysis.byRouteFile.get(routeFile)?.streamRoute === true\n ? \"stream\"\n : \"string\";\n\n if (serverOutput !== \"string\") {\n return undefined;\n }\n\n const shellFiles = await cloudflareShellFilesForPage(options.routesDir, route.file);\n\n if (shellFiles.length === 0) {\n return undefined;\n }\n\n return {\n filename: route.file,\n routeId,\n shellFiles,\n };\n }),\n );\n\n return routes.filter((route): route is CloudflareBatchedStringRoute => route !== undefined);\n}\n\ninterface CloudflareShellFile {\n file: string;\n id: string;\n kind: \"layout\" | \"template\";\n}\n\nasync function buildCloudflareServerComponentModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n projectRoot: string;\n routes: readonly CloudflareBatchedComponentRoute[];\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n if (options.routes.length === 0) {\n return { chunks: [], entries: new Map() };\n }\n\n const virtualModules = new Map<string, CloudflareVirtualModule>();\n const bundleEntries = await Promise.all(\n options.routes.map(async (route) => {\n const metadataModule = await buildCloudflareRouteMetadataExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: route.filename,\n hasMetadata: buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n route.filename,\n )?.hasMetadata,\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const metadataId = `mreact:metadata:${route.routeId}`;\n\n if (metadataModule !== undefined) {\n virtualModules.set(metadataId, {\n contents: metadataModule,\n resolveDir: dirname(route.filename),\n });\n }\n\n return {\n code: cloudflareServerComponentModuleEntry(\n route.filename,\n metadataModule === undefined ? undefined : metadataId,\n ),\n filename: `${route.filename}.mreact-cloudflare-component.js`,\n name: `${route.routeId}.component`,\n routeId: route.routeId,\n };\n }),\n );\n const output = await bundleRouterModules({\n cacheDir: options.cacheDir,\n chunkFileNames: \"routes/chunks/[name].[hash].mjs\",\n define: options.define,\n entries: bundleEntries,\n entryFileNames: \"routes/[name].[hash].mjs\",\n minify: true,\n platform: \"node\",\n plugins: [\n cloudflareVirtualModulesPlugin(virtualModules),\n cloudflareServerSourceTransformPlugin({\n projectRoot: options.projectRoot,\n serverOutput: \"string\",\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n }),\n cloudflareWorkspaceRuntimePlugin(),\n ],\n root: options.projectRoot,\n target: \"es2022\",\n vitePlugins: options.vitePlugins,\n });\n const entriesByName = new Map(bundleEntries.map((entry) => [entry.name, entry]));\n const entries = new Map<string, CloudflareBatchedRouteModule>();\n\n for (const chunk of output.chunks) {\n if (!chunk.isEntry) {\n continue;\n }\n\n const entry = entriesByName.get(chunk.name);\n\n if (entry === undefined) {\n continue;\n }\n\n entries.set(entry.routeId, {\n code: chunk.code,\n fileName: chunk.fileName,\n });\n }\n\n return { chunks: output.chunks, entries };\n}\n\nasync function buildCloudflareStringRouteComponentModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n projectRoot: string;\n routes: readonly CloudflareBatchedStringRoute[];\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n if (options.routes.length === 0) {\n return { chunks: [], entries: new Map() };\n }\n\n const virtualModules = new Map<string, CloudflareVirtualModule>();\n const bundleEntries = await Promise.all(\n options.routes.map(async (route) => {\n const metadataImports: string[] = [];\n const pageMetadataId = `mreact:metadata:${route.routeId}:page`;\n const pageMetadataModule = await buildCloudflareRouteMetadataExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: route.filename,\n hasMetadata: buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n route.filename,\n )?.hasMetadata,\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n\n if (pageMetadataModule === undefined) {\n metadataImports.push(\"const pageMetadataModule = {};\");\n } else {\n virtualModules.set(pageMetadataId, {\n contents: pageMetadataModule,\n resolveDir: dirname(route.filename),\n });\n metadataImports.push(\n `import * as pageMetadataModule from ${JSON.stringify(pageMetadataId)};`,\n );\n }\n\n const shellMetadataImports = await Promise.all(\n route.shellFiles.map(async (shell, index) => {\n const shellMetadataId = `mreact:metadata:${route.routeId}:shell:${index}`;\n const shellMetadataModule = await buildCloudflareRouteMetadataExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: shell.file,\n hasMetadata: buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n shell.file,\n )?.hasMetadata,\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n\n if (shellMetadataModule === undefined) {\n return `const shellMetadataModule${index} = {};`;\n }\n\n virtualModules.set(shellMetadataId, {\n contents: shellMetadataModule,\n resolveDir: dirname(shell.file),\n });\n return `import * as shellMetadataModule${index} from ${JSON.stringify(shellMetadataId)};`;\n }),\n );\n metadataImports.push(...shellMetadataImports);\n\n return {\n code: cloudflareStringRouteComponentModuleEntry({\n filename: route.filename,\n metadataImports,\n pageMetadataModuleName: \"pageMetadataModule\",\n shellFiles: route.shellFiles,\n shellMetadataModuleName: (index) => `shellMetadataModule${index}`,\n }),\n filename: `${route.filename}.mreact-cloudflare-string-route.js`,\n name: `${route.routeId}.string`,\n routeId: route.routeId,\n };\n }),\n );\n const output = await bundleRouterModules({\n cacheDir: options.cacheDir,\n chunkFileNames: \"routes/chunks/[name].[hash].mjs\",\n define: options.define,\n entries: bundleEntries,\n entryFileNames: \"routes/[name].[hash].mjs\",\n minify: true,\n platform: \"node\",\n plugins: [\n cloudflareVirtualModulesPlugin(virtualModules),\n cloudflareServerSourceTransformPlugin({\n projectRoot: options.projectRoot,\n serverOutput: \"string\",\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n }),\n cloudflareWorkspaceRuntimePlugin(),\n ],\n root: options.projectRoot,\n target: \"es2022\",\n vitePlugins: options.vitePlugins,\n });\n const entriesByName = new Map(bundleEntries.map((entry) => [entry.name, entry]));\n const entries = new Map<string, CloudflareBatchedRouteModule>();\n\n for (const chunk of output.chunks) {\n if (!chunk.isEntry) {\n continue;\n }\n\n const entry = entriesByName.get(chunk.name);\n\n if (entry === undefined) {\n continue;\n }\n\n entries.set(entry.routeId, {\n code: chunk.code,\n fileName: chunk.fileName,\n });\n }\n\n return { chunks: output.chunks, entries };\n}\n\nfunction cloudflareStringRouteComponentModuleEntry(options: {\n filename: string;\n metadataImports: readonly string[];\n pageMetadataModuleName: string;\n shellFiles: readonly CloudflareShellFile[];\n shellMetadataModuleName: (index: number) => string;\n}): string {\n const shellImports = options.shellFiles.map(\n (shell, index) => `import * as shellRouteModule${index} from ${JSON.stringify(shell.file)};`,\n );\n const shellDefinitions = options.shellFiles.map(\n (shell, index) =>\n `{ component: selectComponent(shell${index}, ${JSON.stringify(shell.file)}), id: ${JSON.stringify(shell.id)}, kind: ${JSON.stringify(shell.kind)}, module: shell${index} }`,\n );\n const shellModules = options.shellFiles.map(\n (_, index) =>\n `const shell${index} = routeComponentModule(shellRouteModule${index}, ${options.shellMetadataModuleName(index)});`,\n );\n\n return `import * as pageRouteModule from ${JSON.stringify(options.filename)};\n${shellImports.join(\"\\n\")}\n${options.metadataImports.join(\"\\n\")}\n\nconst pageModule = routeComponentModule(pageRouteModule, ${options.pageMetadataModuleName});\n${shellModules.join(\"\\n\")}\nconst pageComponent = selectComponent(pageModule, ${JSON.stringify(options.filename)});\nconst shells = [${shellDefinitions.join(\", \")}];\nexport const slots = pageModule.slots;\nexport default function CloudflareStringRouteComponent(props) {\n return renderCloudflareStringRoute(props);\n}\n\nasync function renderCloudflareStringRoute(props) {\n const slotHtml = await renderRouteSlots(pageModule.slots, props);\n const layoutShells = await renderLayoutShells(shells, props, slotHtml);\n const metadata = await resolveRouteMetadata([...shells.map((shell) => shell.module), pageModule], props);\n let html = \"<!DOCTYPE html>\";\n for (const shell of layoutShells) {\n html += shell.prefix;\n }\n html += withCloudflareHydrationMarkers(props, String(await pageComponent(props) ?? \"\"));\n for (const shell of [...layoutShells].reverse()) {\n html += shell.suffix;\n }\n html = injectCloudflareHead(html, metadata, cloudflareRouteHeadTags(props.clientManifest, props.route.path));\n return new Response(html, {\n headers: cloudflareMetadataHeaders(metadata, props.request, {\n \"content-type\": \"text/html; charset=utf-8\"\n })\n });\n}\n\nfunction routeComponentModule(routeModule, metadataModule) {\n const component = routeModule.default ?? routeModule.App ?? Object.values(routeModule).find((value) => typeof value === \"function\");\n return {\n ...routeModule,\n App: component,\n default: component,\n generateMetadata: metadataModule.generateMetadata,\n metadata: metadataModule.metadata,\n slots: routeModule.slots,\n };\n}\n\nfunction selectComponent(module, label) {\n const component = module.default ?? module.App ?? Object.values(module).find((value) => typeof value === \"function\");\n if (typeof component !== \"function\") {\n throw new Error(\\`No Cloudflare component export was found for \\${label}.\\`);\n }\n return component;\n}\n\nasync function renderRouteSlots(slots, props) {\n if (slots === undefined) {\n return {};\n }\n const rendered = {};\n for (const [name, value] of Object.entries(slots)) {\n rendered[name] = typeof value === \"function\" ? String(await value(props) ?? \"\") : String(value ?? \"\");\n }\n return rendered;\n}\n\n${cloudflareShellRuntimeSource()}`;\n}\n\nasync function buildCloudflareServerComponentModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n projectRoot: string;\n serverOutput: ServerOutputMode;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const metadataModule = await buildCloudflareRouteMetadataExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: options.filename,\n hasMetadata: buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n options.filename,\n )?.hasMetadata,\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const entry = cloudflareServerComponentModuleEntry(\n options.filename,\n metadataModule === undefined ? undefined : \"mreact:metadata\",\n );\n\n return bundleCloudflareVirtualModule({\n entry,\n filename: `${options.filename}.mreact-cloudflare-component.js`,\n cacheDir: options.cacheDir,\n define: options.define,\n modules:\n metadataModule === undefined ? new Map() : new Map([[\"mreact:metadata\", metadataModule]]),\n plugins: [\n cloudflareServerSourceTransformPlugin({\n projectRoot: options.projectRoot,\n serverOutput: options.serverOutput,\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n }),\n cloudflareWorkspaceRuntimePlugin(),\n ],\n resolveDir: dirname(options.filename),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n}\n\nfunction cloudflareServerComponentModuleEntry(\n filename: string,\n metadataModuleId: string | undefined,\n): string {\n return `import * as routeModule from ${JSON.stringify(filename)};\n${metadataModuleId === undefined ? \"const metadataModule = {};\" : `import * as metadataModule from ${JSON.stringify(metadataModuleId)};`}\n\nconst component = routeModule.default ?? routeModule.App ?? Object.values(routeModule).find((value) => typeof value === \"function\");\nexport const App = component;\nexport default component;\nexport const generateMetadata = metadataModule.generateMetadata;\nexport const metadata = metadataModule.metadata;\nexport const slots = routeModule.slots;`;\n}\n\nasync function buildCloudflareStringRouteComponentModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n projectRoot: string;\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const shellFiles = await cloudflareShellFilesForPage(options.routesDir, options.filename);\n\n if (shellFiles.length === 0) {\n return buildCloudflareServerComponentModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n }\n\n const pageModule = await buildCloudflareComponentExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n const shellModules = await Promise.all(\n shellFiles.map((shell) =>\n buildCloudflareComponentExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: shell.file,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n }),\n ),\n );\n const shellImports = shellFiles.map(\n (_, index) => `import * as shell${index} from \"mreact:shell-${index}\";`,\n );\n const shellDefinitions = shellFiles.map(\n (shell, index) =>\n `{ component: selectComponent(shell${index}, ${JSON.stringify(shell.file)}), id: ${JSON.stringify(shell.id)}, kind: ${JSON.stringify(shell.kind)}, module: shell${index} }`,\n );\n const entry = `import * as pageModule from \"mreact:page\";\n${shellImports.join(\"\\n\")}\n\nconst pageComponent = selectComponent(pageModule, ${JSON.stringify(options.filename)});\nconst shells = [${shellDefinitions.join(\", \")}];\nexport const slots = pageModule.slots;\nexport default function CloudflareStringRouteComponent(props) {\n return renderCloudflareStringRoute(props);\n}\n\nasync function renderCloudflareStringRoute(props) {\n const slotHtml = await renderRouteSlots(pageModule.slots, props);\n const layoutShells = await renderLayoutShells(shells, props, slotHtml);\n const metadata = await resolveRouteMetadata([...shells.map((shell) => shell.module), pageModule], props);\n let html = \"<!DOCTYPE html>\";\n for (const shell of layoutShells) {\n html += shell.prefix;\n }\n html += withCloudflareHydrationMarkers(props, String(await pageComponent(props) ?? \"\"));\n for (const shell of [...layoutShells].reverse()) {\n html += shell.suffix;\n }\n html = injectCloudflareHead(html, metadata, cloudflareRouteHeadTags(props.clientManifest, props.route.path));\n return new Response(html, {\n headers: cloudflareMetadataHeaders(metadata, props.request, {\n \"content-type\": \"text/html; charset=utf-8\"\n })\n });\n}\n\nfunction selectComponent(module, label) {\n const component = module.default ?? module.App ?? Object.values(module).find((value) => typeof value === \"function\");\n if (typeof component !== \"function\") {\n throw new Error(\\`No Cloudflare component export was found for \\${label}.\\`);\n }\n return component;\n}\n\nasync function renderRouteSlots(slots, props) {\n if (slots === undefined) {\n return {};\n }\n const rendered = {};\n for (const [name, value] of Object.entries(slots)) {\n rendered[name] = typeof value === \"function\" ? String(await value(props) ?? \"\") : String(value ?? \"\");\n }\n return rendered;\n}\n\n${cloudflareShellRuntimeSource()}`;\n\n return bundleCloudflareVirtualModule({\n entry,\n cacheDir: options.cacheDir,\n define: options.define,\n filename: `${options.filename}.mreact-cloudflare-string-route.js`,\n modules: new Map([\n [\"mreact:page\", pageModule],\n ...shellModules.map((source, index) => [`mreact:shell-${index}`, source] as const),\n ]),\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareStreamRouteComponentModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n projectRoot: string;\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const pageModule = await buildCloudflareComponentExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"stream\",\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n });\n const shellFiles = await cloudflareShellFilesForPage(options.routesDir, options.filename);\n const shellModules = await Promise.all(\n shellFiles.map((shell) =>\n buildCloudflareComponentExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: shell.file,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n sourceAnalysis: options.sourceAnalysis,\n vitePlugins: options.vitePlugins,\n }),\n ),\n );\n const shellImports = shellFiles.map(\n (_, index) => `import * as shell${index} from \"mreact:shell-${index}\";`,\n );\n const shellDefinitions = shellFiles.map(\n (shell, index) =>\n `{ component: selectComponent(shell${index}, ${JSON.stringify(shell.file)}), id: ${JSON.stringify(shell.id)}, kind: ${JSON.stringify(shell.kind)}, module: shell${index} }`,\n );\n const entry = `import { createStringSink, renderOutOfOrderReorderScript, renderToReadableStream } from \"@reckona/mreact-server\";\nimport * as pageModule from \"mreact:page\";\n${shellImports.join(\"\\n\")}\n\nconst pageComponent = selectComponent(pageModule, ${JSON.stringify(options.filename)});\nconst shells = [${shellDefinitions.join(\", \")}];\nexport const slots = pageModule.slots;\nexport const App = renderCloudflareStreamRoute;\nexport default renderCloudflareStreamRoute;\n\nasync function renderCloudflareStreamRoute(props) {\n const metadata = await resolveRouteMetadata([...shells.map((shell) => shell.module), pageModule], props);\n const body = renderToReadableStream(async ($sink) => {\n const slotHtml = await renderRouteSlots(pageModule.slots, props);\n const layoutShells = await renderLayoutShells(shells, props, slotHtml);\n const routeHeadTags = cloudflareRouteHeadTags(props.clientManifest, props.route.path);\n $sink.append(\"<!DOCTYPE html>\");\n if (layoutShells.length === 0) {\n $sink.append(injectCloudflareHead(\"\", metadata, routeHeadTags));\n }\n for (let index = 0; index < layoutShells.length; index += 1) {\n const shell = layoutShells[index];\n $sink.append(index === 0 ? injectCloudflareHead(shell.prefix, metadata, routeHeadTags) : shell.prefix);\n }\n const hydrationMarker = cloudflareHydrationMarkerParts(props);\n $sink.append(hydrationMarker.prefix);\n await pageComponent($sink, props);\n $sink.append(hydrationMarker.suffix);\n renderOutOfOrderReorderScript($sink);\n for (const shell of [...layoutShells].reverse()) {\n $sink.append(shell.suffix);\n }\n });\n return new Response(body, {\n headers: cloudflareMetadataHeaders(metadata, props.request, {\n \"content-type\": \"text/html; charset=utf-8\",\n \"x-mreact-stream\": \"1\"\n })\n });\n}\n\nfunction selectComponent(module, label) {\n const component = module.default ?? module.App ?? Object.values(module).find((value) => typeof value === \"function\");\n if (typeof component !== \"function\") {\n throw new Error(\\`No Cloudflare component export was found for \\${label}.\\`);\n }\n return component;\n}\n\nasync function renderRouteSlots(slots, props) {\n if (slots === undefined) {\n return {};\n }\n const rendered = {};\n for (const [name, value] of Object.entries(slots)) {\n if (typeof value !== \"function\") {\n rendered[name] = String(value ?? \"\");\n continue;\n }\n const sink = createStringSink();\n await value(sink, props);\n await sink.drain();\n rendered[name] = sink.toString();\n }\n return rendered;\n}\n\n${cloudflareShellRuntimeSource()}`;\n\n return bundleCloudflareVirtualModule({\n entry,\n cacheDir: options.cacheDir,\n define: options.define,\n filename: `${options.filename}.mreact-cloudflare-stream-route.js`,\n modules: new Map([\n [\"mreact:page\", pageModule],\n ...shellModules.map((source, index) => [`mreact:shell-${index}`, source] as const),\n ]),\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n}\n\nfunction cloudflareShellRuntimeSource(): string {\n return `async function renderLayoutShells(shells, props, namedSlots) {\n const slotContext = { consumedSlots: new Set(), namedSlots };\n const rendered = [];\n for (const shell of shells) {\n const html = await shell.component(props);\n rendered.push(splitLayoutSlot(markShellBoundary(String(html ?? \"\"), shell), slotContext));\n }\n return rendered;\n}\n\nfunction splitLayoutSlot(layoutHtml, slotContext) {\n const html = replaceNamedLayoutSlots(layoutHtml, slotContext);\n const match = findDefaultLayoutSlot(html);\n if (match === null) {\n return { prefix: html, suffix: \"\" };\n }\n return {\n prefix: html.slice(0, match.index),\n suffix: html.slice(match.index + match[0].length),\n };\n}\n\nfunction markShellBoundary(html, shell) {\n const attributeName = shell.kind === \"layout\" ? \"data-mreact-layout-boundary\" : \"data-mreact-template-boundary\";\n if (html.includes(\\`\\${attributeName}=\\`)) {\n return html;\n }\n return html.replace(/<([A-Za-z][^\\\\s/>]*)([^>]*)>/, \\`<$1$2 \\${attributeName}=\"\\${escapeHtmlAttribute(shell.id)}\">\\`);\n}\n\nconst SLOT_TAG_PATTERN = /<slot\\\\b([^>]*)>(?:<\\\\/slot\\\\s*>)?/g;\n\nfunction replaceNamedLayoutSlots(layoutHtml, slotContext) {\n return layoutHtml.replace(SLOT_TAG_PATTERN, (source, openAttributes) => {\n const name = readSlotName(openAttributes);\n if (name === undefined || name === \"default\") {\n return source;\n }\n if (Object.hasOwn(slotContext.namedSlots, name)) {\n slotContext.consumedSlots.add(name);\n return slotContext.namedSlots[name] ?? \"\";\n }\n return \"\";\n });\n}\n\nfunction findDefaultLayoutSlot(html) {\n SLOT_TAG_PATTERN.lastIndex = 0;\n for (;;) {\n const match = SLOT_TAG_PATTERN.exec(html);\n if (match === null) {\n return null;\n }\n const name = readSlotName(match[1] ?? \"\");\n if (name === undefined || name === \"default\") {\n return match;\n }\n }\n}\n\nfunction readSlotName(attributes) {\n const match = /\\\\bname\\\\s*=\\\\s*(?:\"([^\"]*)\"|'([^']*)')/.exec(attributes);\n return match?.[1] ?? match?.[2];\n}\n\nfunction withCloudflareHydrationMarkers(props, html) {\n const marker = cloudflareHydrationMarkerParts(props);\n return marker.prefix === \"\" && marker.suffix === \"\" ? html : \\`\\${marker.prefix}\\${html}\\${marker.suffix}\\`;\n}\n\nfunction cloudflareHydrationMarkerParts(props) {\n const route = props.clientManifest.routes.find((route) => route.path === props.route.path && route.client === true);\n if (route?.script === undefined) {\n return { prefix: \"\", suffix: \"\" };\n }\n const routeId = route.routeId ?? cloudflareRouteIdForPath(props.route.path);\n const escapedRouteId = escapeHtmlAttribute(routeId);\n const propsJson = escapeScriptJson(JSON.stringify({\n params: props.params,\n request: { url: props.request.url },\n data: props.data,\n }));\n const clientReferencesJson = route.clientReferenceManifest === undefined || route.clientReferenceManifest.length === 0\n ? undefined\n : escapeScriptJson(JSON.stringify(route.clientReferenceManifest));\n return {\n prefix: \\`<div data-mreact-route-id=\"\\${escapedRouteId}\">\\`,\n suffix: [\n \"</div>\",\n \\`<script type=\"application/json\" id=\"mreact-props-\\${escapedRouteId}\">\\${propsJson}</script>\\`,\n clientReferencesJson === undefined\n ? undefined\n : \\`<script type=\"application/json\" id=\"mreact-client-references-\\${escapedRouteId}\">\\${clientReferencesJson}</script>\\`,\n \\`<script type=\"module\" src=\"/_mreact/client/\\${escapeHtmlAttribute(route.script)}\"></script>\\`,\n ].filter((part) => part !== undefined).join(\"\"),\n };\n}\n\nfunction escapeScriptJson(json) {\n return json\n .replaceAll(\"&\", \"\\\\\\\\u0026\")\n .replaceAll(\"<\", \"\\\\\\\\u003c\")\n .replaceAll(\">\", \"\\\\\\\\u003e\")\n .replaceAll(\"\\\\u2028\", \"\\\\\\\\u2028\")\n .replaceAll(\"\\\\u2029\", \"\\\\\\\\u2029\");\n}\n\nfunction cloudflareRouteIdForPath(path) {\n if (path === \"/\") {\n return \"index\";\n }\n return path\n .slice(1)\n .replaceAll(\"/\", \"_\")\n .replaceAll(\":\", \"_\")\n .replace(/[^A-Za-z0-9_$-]/g, \"_\");\n}\n\nasync function resolveRouteMetadata(modules, props) {\n const metadata = [];\n const context = {\n data: props.data,\n params: props.params,\n request: props.request\n };\n for (const module of modules) {\n let next = validateRouteMetadata(module.metadata);\n if (typeof module.generateMetadata === \"function\") {\n const generated = validateRouteMetadata(await module.generateMetadata(context), \"generateMetadata\");\n next = mergeRouteMetadata([next, generated].filter(Boolean));\n }\n if (next !== undefined) {\n metadata.push(next);\n }\n }\n return validateRouteMetadata(mergeRouteMetadata(metadata));\n}\n\nfunction validateRouteMetadata(metadata, path = \"metadata\") {\n if (metadata === undefined) {\n return undefined;\n }\n assertMetadataObject(metadata, path);\n validateOptionalMetadataObject(metadata.alternates, \\`\\${path}.alternates\\`, { canonical: validateMetadataScalar });\n validateOptionalCspMetadata(metadata.csp, \\`\\${path}.csp\\`);\n validateOptionalMetadataScalar(metadata.description, \\`\\${path}.description\\`);\n validateOptionalHeadMetadata(metadata.head, \\`\\${path}.head\\`);\n validateOptionalMetadataObject(metadata.icons, \\`\\${path}.icons\\`, {\n apple: validateMetadataScalar,\n icon: validateMetadataScalar,\n });\n validateOptionalOpenGraphMetadata(metadata.openGraph, \\`\\${path}.openGraph\\`);\n validateOptionalMetadataScalar(metadata.lang, \\`\\${path}.lang\\`);\n validateOptionalRobotsMetadata(metadata.robots, \\`\\${path}.robots\\`);\n validateOptionalSecurityMetadata(metadata.security, \\`\\${path}.security\\`);\n validateOptionalThemeColorMetadata(metadata.themeColor, \\`\\${path}.themeColor\\`);\n validateOptionalMetadataScalar(metadata.title, \\`\\${path}.title\\`);\n validateOptionalViewportMetadata(metadata.viewport, \\`\\${path}.viewport\\`);\n validateUnknownJsonMetadataFields(metadata, path, new Set([\"alternates\", \"csp\", \"description\", \"head\", \"icons\", \"lang\", \"openGraph\", \"robots\", \"security\", \"themeColor\", \"title\", \"viewport\"]));\n return metadata;\n}\n\nfunction validateOptionalMetadataScalar(value, path) {\n if (value !== undefined) {\n validateMetadataScalar(value, path);\n }\n}\n\nfunction validateMetadataScalar(value, path) {\n if (!isMetadataScalar(value)) {\n throw new Error(\\`Invalid metadata field \\${path}: expected string, number, or boolean.\\`);\n }\n}\n\nfunction isMetadataScalar(value) {\n return typeof value === \"string\" || (typeof value === \"number\" && Number.isFinite(value)) || typeof value === \"boolean\";\n}\n\nfunction validateOptionalMetadataObject(value, path, validators) {\n if (value === undefined) {\n return;\n }\n assertMetadataObject(value, path);\n for (const [key, validator] of Object.entries(validators)) {\n if (value[key] !== undefined) {\n validator(value[key], \\`\\${path}.\\${key}\\`);\n }\n }\n validateUnknownJsonMetadataFields(value, path, new Set(Object.keys(validators)));\n}\n\nfunction validateOptionalCspMetadata(value, path) {\n if (value === undefined) {\n return;\n }\n assertMetadataObject(value, path);\n if (value.disable !== undefined && typeof value.disable !== \"boolean\") {\n throw new Error(\\`Invalid metadata field \\${path}.disable: expected boolean.\\`);\n }\n if (value.nonce !== undefined && typeof value.nonce !== \"string\") {\n throw new Error(\\`Invalid metadata field \\${path}.nonce: expected string.\\`);\n }\n validateOptionalDirectiveMap(value.directives, \\`\\${path}.directives\\`);\n validateOptionalDirectiveMap(value.replace, \\`\\${path}.replace\\`);\n if (value.remove !== undefined) {\n validateStringArray(value.remove, \\`\\${path}.remove\\`);\n }\n validateUnknownJsonMetadataFields(value, path, new Set([\"directives\", \"disable\", \"nonce\", \"remove\", \"replace\"]));\n}\n\nfunction validateOptionalDirectiveMap(value, path) {\n if (value === undefined) {\n return;\n }\n assertMetadataObject(value, path);\n for (const [name, directive] of Object.entries(value)) {\n if (typeof directive !== \"string\") {\n validateStringArray(directive, \\`\\${path}.\\${name}\\`);\n }\n }\n}\n\nfunction validateStringArray(value, path) {\n if (!Array.isArray(value)) {\n throw new Error(\\`Invalid metadata field \\${path}: expected string or string array.\\`);\n }\n value.forEach((entry, index) => {\n if (typeof entry !== \"string\") {\n throw new Error(\\`Invalid metadata field \\${path}.\\${index}: expected string.\\`);\n }\n });\n}\n\nfunction validateOptionalHeadMetadata(value, path) {\n if (value === undefined) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new Error(\\`Invalid metadata field \\${path}: expected array.\\`);\n }\n value.forEach((descriptor, index) => {\n const descriptorPath = \\`\\${path}.\\${index}\\`;\n assertMetadataObject(descriptor, descriptorPath);\n if (![\"base\", \"link\", \"meta\", \"script\", \"style\"].includes(String(descriptor.tag))) {\n throw new Error(\\`Invalid metadata field \\${descriptorPath}.tag: expected supported head tag.\\`);\n }\n if (descriptor.content !== undefined && typeof descriptor.content !== \"string\") {\n throw new Error(\\`Invalid metadata field \\${descriptorPath}.content: expected string.\\`);\n }\n if (descriptor.nonce !== undefined && typeof descriptor.nonce !== \"boolean\" && typeof descriptor.nonce !== \"string\") {\n throw new Error(\\`Invalid metadata field \\${descriptorPath}.nonce: expected string or boolean.\\`);\n }\n if (descriptor.attrs !== undefined) {\n assertMetadataObject(descriptor.attrs, \\`\\${descriptorPath}.attrs\\`);\n for (const [name, attr] of Object.entries(descriptor.attrs)) {\n validateHeadAttribute(name, attr, \\`\\${descriptorPath}.attrs.\\${name}\\`);\n if (attr !== undefined && typeof attr !== \"boolean\" && typeof attr !== \"number\" && typeof attr !== \"string\") {\n throw new Error(\\`Invalid metadata field \\${descriptorPath}.attrs.\\${name}: expected string, number, boolean, or undefined.\\`);\n }\n }\n }\n });\n}\n\nfunction validateHeadAttribute(name, value, path) {\n if (!isSafeHeadAttributeName(name)) {\n throw new Error(\\`Invalid metadata field \\${path}: expected safe HTML attribute name.\\`);\n }\n const canonicalName = name.toLowerCase();\n if (canonicalName.startsWith(\"on\") || canonicalName === \"srcdoc\") {\n throw new Error(\\`Invalid metadata field \\${path}: event and dangerous attributes are not allowed.\\`);\n }\n if (typeof value === \"string\" && isUnsafeUrlAttribute(canonicalName, value)) {\n throw new Error(\\`Invalid metadata field \\${path}: unsafe URL value.\\`);\n }\n}\n\nfunction isSafeHeadAttributeName(name) {\n if (name.length === 0) {\n return false;\n }\n for (let index = 0; index < name.length; index += 1) {\n const code = name.charCodeAt(index);\n if (code <= 0x20 || code === 0x22 || code === 0x27 || code === 0x2f || code === 0x3c || code === 0x3d || code === 0x3e || code === 0x60 || code === 0x7f) {\n return false;\n }\n }\n return true;\n}\n\nfunction isUnsafeUrlAttribute(name, value) {\n if (name === \"srcset\" || name === \"imagesrcset\") {\n const canonical = canonicalizeUrlForSchemeCheck(value);\n for (const candidate of canonical.split(\",\")) {\n const url = candidate.trim().split(/\\\\s+/)[0] ?? \"\";\n if (url !== \"\" && isUnsafeUrlValueForName(\"src\", url)) {\n return true;\n }\n }\n return false;\n }\n if (name !== \"href\" && name !== \"src\" && name !== \"action\" && name !== \"formaction\" && name !== \"xlink:href\" && name !== \"ping\" && name !== \"poster\" && name !== \"background\" && name !== \"manifest\") {\n return false;\n }\n\n return isUnsafeUrlValueForName(name, value);\n}\n\nfunction canonicalizeUrlForSchemeCheck(value) {\n let start = 0;\n while (start < value.length && value.charCodeAt(start) <= 0x20) {\n start += 1;\n }\n\n return value.slice(start).replace(/[\\\\t\\\\r\\\\n]/g, \"\");\n}\n\nfunction isUnsafeUrlValueForName(name, value) {\n const canonical = canonicalizeUrlForSchemeCheck(value);\n const match = /^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(canonical);\n if (match === null) {\n return false;\n }\n const scheme = match[1].toLowerCase();\n if (scheme === \"data\" && (name === \"src\" || name === \"poster\")) {\n return !/^data:image\\\\/(?!svg\\\\+xml(?:[;,]|$))/i.test(canonical);\n }\n return scheme === \"javascript\" || scheme === \"data\" || scheme === \"vbscript\" || scheme === \"livescript\" || scheme === \"mhtml\" || scheme === \"file\";\n}\n\nfunction validateOptionalOpenGraphMetadata(value, path) {\n if (value === undefined) {\n return;\n }\n assertMetadataObject(value, path);\n validateOptionalMetadataScalar(value.description, \\`\\${path}.description\\`);\n validateOptionalMetadataImage(value.image, \\`\\${path}.image\\`);\n if (value.images !== undefined) {\n if (!Array.isArray(value.images)) {\n throw new Error(\\`Invalid metadata field \\${path}.images: expected array.\\`);\n }\n value.images.forEach((image, index) => validateOptionalMetadataImage(image, \\`\\${path}.images.\\${index}\\`));\n }\n validateOptionalMetadataScalar(value.title, \\`\\${path}.title\\`);\n validateUnknownJsonMetadataFields(value, path, new Set([\"description\", \"image\", \"images\", \"title\"]));\n}\n\nfunction validateOptionalMetadataImage(value, path) {\n if (value === undefined || isMetadataScalar(value)) {\n return;\n }\n assertMetadataObject(value, path);\n validateMetadataScalar(value.url, \\`\\${path}.url\\`);\n validateOptionalMetadataScalar(value.alt, \\`\\${path}.alt\\`);\n validateOptionalMetadataScalar(value.height, \\`\\${path}.height\\`);\n validateOptionalMetadataScalar(value.type, \\`\\${path}.type\\`);\n validateOptionalMetadataScalar(value.width, \\`\\${path}.width\\`);\n validateUnknownJsonMetadataFields(value, path, new Set([\"alt\", \"height\", \"type\", \"url\", \"width\"]));\n}\n\nfunction validateOptionalRobotsMetadata(value, path) {\n if (value === undefined || typeof value === \"string\") {\n return;\n }\n assertMetadataObject(value, path);\n if (value.follow !== undefined && typeof value.follow !== \"boolean\") {\n throw new Error(\\`Invalid metadata field \\${path}.follow: expected boolean.\\`);\n }\n if (value.index !== undefined && typeof value.index !== \"boolean\") {\n throw new Error(\\`Invalid metadata field \\${path}.index: expected boolean.\\`);\n }\n validateUnknownJsonMetadataFields(value, path, new Set([\"follow\", \"index\"]));\n}\n\nfunction validateOptionalSecurityMetadata(value, path) {\n if (value !== undefined) {\n validateJsonSerializableMetadata(value, path);\n }\n}\n\nfunction validateOptionalThemeColorMetadata(value, path) {\n if (value === undefined || isMetadataScalar(value)) {\n return;\n }\n validateOptionalMetadataObject(value, path, {\n color: validateMetadataScalar,\n media: validateMetadataScalar,\n });\n}\n\nfunction validateOptionalViewportMetadata(value, path) {\n if (value === undefined || isMetadataScalar(value)) {\n return;\n }\n assertMetadataObject(value, path);\n for (const [key, viewportValue] of Object.entries(value)) {\n if (viewportValue !== undefined && viewportValue !== null && !isMetadataScalar(viewportValue)) {\n throw new Error(\\`Invalid metadata field \\${path}.\\${key}: expected string, number, boolean, null, or undefined.\\`);\n }\n }\n}\n\nfunction validateUnknownJsonMetadataFields(value, path, knownFields) {\n for (const [key, entry] of Object.entries(value)) {\n if (!knownFields.has(key)) {\n validateJsonSerializableMetadata(entry, \\`\\${path}.\\${key}\\`);\n }\n }\n}\n\nfunction validateJsonSerializableMetadata(value, path) {\n if (value === undefined || value === null || isMetadataScalar(value)) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((entry, index) => validateJsonSerializableMetadata(entry, \\`\\${path}.\\${index}\\`));\n return;\n }\n if (typeof value === \"object\" && Object.getPrototypeOf(value) === Object.prototype) {\n for (const [key, entry] of Object.entries(value)) {\n validateJsonSerializableMetadata(entry, \\`\\${path}.\\${key}\\`);\n }\n return;\n }\n throw new Error(\\`Invalid metadata field \\${path}: expected a JSON-serializable value.\\`);\n}\n\nfunction assertMetadataObject(value, path) {\n if (typeof value !== \"object\" || value === null || Array.isArray(value) || (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)) {\n throw new Error(\\`Invalid metadata field \\${path}: expected object.\\`);\n }\n}\n\nfunction cloudflareMetadataHeaders(metadata, request, extraHeaders) {\n const headers = new Headers(extraHeaders);\n const csp = contentSecurityPolicy(metadata?.csp);\n if (csp !== undefined && !headers.has(\"content-security-policy\")) {\n headers.set(\"content-security-policy\", csp);\n }\n for (const [name, value] of Object.entries(routeSecurityHeaders(metadata?.security, request))) {\n if (!headers.has(name)) {\n headers.set(name, value);\n }\n }\n return headers;\n}\n\nfunction contentSecurityPolicy(csp) {\n if (csp?.disable === true || csp?.directives === undefined) {\n return undefined;\n }\n const serialized = [];\n for (const [name, value] of Object.entries(csp.directives)) {\n if (!/^[a-z][a-z0-9-]*$/i.test(name)) {\n throw new TypeError(\\`invalid CSP directive name: \\${JSON.stringify(name)}\\`);\n }\n const values = Array.isArray(value) ? [...value] : [value];\n for (const rawValue of values) {\n if (typeof rawValue !== \"string\" || !isValidCspDirectiveValue(rawValue)) {\n throw new TypeError(\\`invalid CSP directive value for \\${name}: \\${JSON.stringify(rawValue)}\\`);\n }\n }\n if (csp.nonce !== undefined && (name === \"script-src\" || name === \"style-src\")) {\n values.push(\\`'nonce-\\${csp.nonce}'\\`);\n }\n serialized.push(\\`\\${name} \\${values.join(\" \")}\\`);\n }\n return serialized.join(\"; \");\n}\n\nfunction isValidCspDirectiveValue(value) {\n if (/^'[A-Za-z0-9+/=_:.-]+'$/.test(value)) {\n return true;\n }\n if (value.length === 0) {\n return false;\n }\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n if (code <= 0x20 || code === 0x22 || code === 0x27 || code === 0x3b || code === 0x7f) {\n return false;\n }\n }\n return true;\n}\n\nfunction routeSecurityHeaders(security, request) {\n const headers = {\n \"permissions-policy\": \"camera=(), microphone=(), geolocation=()\",\n \"referrer-policy\": \"strict-origin-when-cross-origin\",\n \"x-content-type-options\": \"nosniff\",\n };\n if (security?.contentTypeOptions === null) {\n delete headers[\"x-content-type-options\"];\n } else {\n headers[\"x-content-type-options\"] = validateHeaderValue(security?.contentTypeOptions ?? \"nosniff\");\n }\n if (security?.referrerPolicy === null) {\n delete headers[\"referrer-policy\"];\n } else {\n headers[\"referrer-policy\"] = validateHeaderValue(security?.referrerPolicy ?? \"strict-origin-when-cross-origin\");\n }\n if (security?.frameOptions === null) {\n delete headers[\"x-frame-options\"];\n } else if (security?.frameOptions !== undefined) {\n headers[\"x-frame-options\"] = validateHeaderValue(security.frameOptions);\n }\n if (request.url.startsWith(\"https://\") && security?.hsts !== undefined && security.hsts !== false && security.hsts !== null) {\n headers[\"strict-transport-security\"] = \\`max-age=\\${Math.trunc(security.hsts.maxAge)}\\${security.hsts.includeSubDomains === true ? \"; includeSubDomains\" : \"\"}\\${security.hsts.preload === true ? \"; preload\" : \"\"}\\`;\n }\n return headers;\n}\n\nfunction validateHeaderValue(value) {\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n if (code <= 0x1f || code === 0x7f) {\n throw new TypeError(\\`Invalid security header value: \\${JSON.stringify(value)}\\`);\n }\n }\n return value;\n}\n\nfunction mergeRouteMetadata(metadata) {\n if (metadata.length === 0) {\n return undefined;\n }\n return metadata.reduce((merged, next) => ({\n ...merged,\n ...next,\n alternates: mergeObject(merged.alternates, next.alternates),\n csp: mergeObject(merged.csp, next.csp),\n head: mergeArrays(merged.head, next.head),\n icons: mergeObject(merged.icons, next.icons),\n openGraph: {\n ...mergeObject(merged.openGraph, next.openGraph),\n images: mergeArrays(merged.openGraph?.images, next.openGraph?.images),\n },\n }), {});\n}\n\nfunction mergeObject(left, right) {\n if (left === undefined) {\n return right;\n }\n if (right === undefined) {\n return left;\n }\n return { ...left, ...right };\n}\n\nfunction mergeArrays(left, right) {\n if (left === undefined || left.length === 0) {\n return right;\n }\n if (right === undefined || right.length === 0) {\n return left;\n }\n return [...left, ...right];\n}\n\nfunction injectCloudflareHead(html, metadata, routeHeadTags) {\n const metadataTags = routeMetadataHeadTags(metadata);\n const tags = routeHeadTags + metadataTags;\n let nextHtml = metadata?.lang === undefined ? html : injectHtmlLangAttribute(html, metadataString(metadata.lang));\n\n if (metadata?.title !== undefined) {\n nextHtml = nextHtml.replace(/<title\\\\b[^>]*>[\\\\s\\\\S]*?<\\\\/title\\\\s*>/i, \"\");\n }\n\n if (tags === \"\") {\n return nextHtml;\n }\n if (/<head(?:\\\\s[^>]*)?>/i.test(nextHtml)) {\n return nextHtml.replace(/<head(\\\\s[^>]*)?>/i, (match) => \\`\\${match}\\${tags}\\`);\n }\n if (/<html(?:\\\\s[^>]*)?>/i.test(nextHtml)) {\n return nextHtml.replace(/<html(\\\\s[^>]*)?>/i, (match) => \\`\\${match}<head>\\${tags}</head>\\`);\n }\n return \\`<head>\\${tags}</head>\\${nextHtml}\\`;\n}\n\nfunction routeMetadataHeadTags(metadata) {\n if (metadata === undefined) {\n return \"\";\n }\n const tags = [\n metadata.title === undefined ? undefined : \\`<title>\\${escapeHtml(metadataString(metadata.title))}</title>\\`,\n metadata.description === undefined ? undefined : \\`<meta name=\"description\" content=\"\\${escapeHtmlAttribute(metadataString(metadata.description))}\">\\`,\n metadata.alternates?.canonical === undefined ? undefined : \\`<link rel=\"canonical\" href=\"\\${escapeHtmlAttribute(metadataString(metadata.alternates.canonical))}\">\\`,\n metadata.openGraph?.title === undefined ? undefined : \\`<meta property=\"og:title\" content=\"\\${escapeHtmlAttribute(metadataString(metadata.openGraph.title))}\">\\`,\n metadata.openGraph?.description === undefined ? undefined : \\`<meta property=\"og:description\" content=\"\\${escapeHtmlAttribute(metadataString(metadata.openGraph.description))}\">\\`,\n ...openGraphImages(metadata.openGraph).map((image) => \\`<meta property=\"og:image\" content=\"\\${escapeHtmlAttribute(image)}\">\\`),\n metadata.icons?.icon === undefined ? undefined : \\`<link rel=\"icon\" href=\"\\${escapeHtmlAttribute(metadataString(metadata.icons.icon))}\">\\`,\n metadata.icons?.apple === undefined ? undefined : \\`<link rel=\"apple-touch-icon\" href=\"\\${escapeHtmlAttribute(metadataString(metadata.icons.apple))}\">\\`,\n ...headDescriptorTags(metadata.head, metadata.csp?.nonce),\n ];\n return tags.filter((tag) => tag !== undefined).join(\"\");\n}\n\nfunction openGraphImages(openGraph) {\n if (openGraph?.images !== undefined && openGraph.images.length > 0) {\n return openGraph.images.map(metadataImageUrl);\n }\n return openGraph?.image === undefined ? [] : [metadataImageUrl(openGraph.image)];\n}\n\nfunction headDescriptorTags(descriptors, nonce) {\n return (descriptors ?? []).flatMap((descriptor) => {\n const descriptorNonce = descriptor.nonce === true ? nonce : descriptor.nonce || undefined;\n const attrs = {\n ...descriptor.attrs,\n ...(descriptorNonce === undefined ? {} : { nonce: descriptorNonce }),\n };\n const attrText = Object.entries(attrs)\n .flatMap(([name, value]) => {\n if (value === undefined || value === false) {\n return [];\n }\n return value === true\n ? [escapeHtmlAttribute(name)]\n : [\\`\\${escapeHtmlAttribute(name)}=\"\\${escapeHtmlAttribute(String(value))}\"\\`];\n })\n .join(\" \");\n const open = attrText === \"\" ? \\`<\\${descriptor.tag}>\\` : \\`<\\${descriptor.tag} \\${attrText}>\\`;\n if (descriptor.tag === \"meta\" || descriptor.tag === \"link\" || descriptor.tag === \"base\") {\n return [open.slice(0, -1) + \">\"];\n }\n return [\\`\\${open}\\${String(descriptor.content ?? \"\").replaceAll(\"<\", \"\\\\\\\\u003c\")}</\\${descriptor.tag}>\\`];\n });\n}\n\nfunction injectHtmlLangAttribute(html, lang) {\n const escapedLang = escapeHtmlAttribute(lang);\n if (!/<html(?:\\\\s[^>]*)?>/i.test(html)) {\n return html;\n }\n return html.replace(/<html(\\\\s[^>]*)?>/i, (_match, attrs = \"\") => {\n const strippedAttrs = String(attrs).replace(/\\\\s+lang=(?:\"[^\"]*\"|'[^']*'|[^\\\\s>]+)/i, \"\");\n return \\`<html lang=\"\\${escapedLang}\"\\${strippedAttrs}>\\`;\n });\n}\n\nfunction metadataString(value) {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n throw new Error(\"Invalid metadata field: expected string, number, or boolean.\");\n}\n\nfunction metadataImageUrl(value) {\n if (typeof value === \"object\" && value !== null && \"url\" in value) {\n return metadataString(value.url);\n }\n return metadataString(value);\n}\n\nfunction cloudflareRouteHeadTags(manifest, routePath) {\n const route = manifest.routes.find((route) => route.path === routePath);\n const css = route?.css ?? [];\n const styles = css\n .map((styleSheet) => \\`<link rel=\"stylesheet\" href=\"/_mreact/client/\\${escapeHtmlAttribute(styleSheet)}\">\\`)\n .join(\"\");\n const script = route?.script;\n const preload = script === undefined\n ? \"\"\n : \\`<link rel=\"modulepreload\" href=\"/_mreact/client/\\${escapeHtmlAttribute(script)}\">\\`;\n return styles + preload;\n}\n\nfunction escapeHtmlAttribute(value) {\n return String(value ?? \"\")\n .replaceAll(\"&\", \"&\")\n .replaceAll('\"', \""\")\n .replaceAll(\"<\", \"<\");\n}\n\nfunction escapeHtml(value) {\n return String(value ?? \"\")\n .replaceAll(\"&\", \"&\")\n .replaceAll(\"<\", \"<\")\n .replaceAll(\">\", \">\");\n}`;\n}\n\nasync function buildCloudflareComponentExportModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n projectRoot: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n serverOutput: ServerOutputMode;\n sourceAnalysis: BuildSourceAnalysisScope;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const metadataModule = await buildCloudflareRouteMetadataExportModule({\n cacheDir: options.cacheDir,\n define: options.define,\n filename: options.filename,\n hasMetadata: buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n options.filename,\n )?.hasMetadata,\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const entry = `import * as routeModule from ${JSON.stringify(options.filename)};\n${metadataModule === undefined ? \"const metadataModule = {};\" : 'import * as metadataModule from \"mreact:metadata\";'}\n\nconst component = routeModule.default ?? routeModule.App ?? Object.values(routeModule).find((value) => typeof value === \"function\");\nexport const App = component;\nexport default component;\nexport const generateMetadata = metadataModule.generateMetadata;\nexport const metadata = metadataModule.metadata;\nexport const slots = routeModule.slots;`;\n\n return bundleCloudflareVirtualModule({\n entry,\n cacheDir: options.cacheDir,\n define: options.define,\n filename: `${options.filename}.mreact-cloudflare-${options.serverOutput}-component.js`,\n modules:\n metadataModule === undefined ? new Map() : new Map([[\"mreact:metadata\", metadataModule]]),\n plugins: [\n cloudflareServerSourceTransformPlugin({\n projectRoot: options.projectRoot,\n serverOutput: options.serverOutput,\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n }),\n cloudflareWorkspaceRuntimePlugin(),\n ],\n resolveDir: dirname(options.filename),\n root: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function writeCloudflareBatchedRouteModuleChunks(\n cloudflareDir: string,\n modules: CloudflareBatchedRouteModules,\n): Promise<void> {\n if (modules.chunks.some((chunk) => chunk.fileName.startsWith(\"routes/chunks/\"))) {\n await mkdir(join(cloudflareDir, \"routes\", \"chunks\"), { recursive: true });\n }\n\n await Promise.all(\n modules.chunks.map((chunk) => writeFile(join(cloudflareDir, chunk.fileName), chunk.code)),\n );\n}\n\nasync function buildCloudflareRouteLoaderModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n routes: readonly { filename: string; routeId: string }[];\n root: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n return await bundleCloudflareModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n entries: options.routes.map((route) => ({\n code: cloudflareRouteLoaderModuleEntry(route.filename),\n filename: `${route.filename}.mreact-cloudflare-loader.js`,\n name: `${route.routeId}.loader`,\n routeId: route.routeId,\n })),\n root: options.root,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareMiddlewareModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n routes: readonly { filename: string; routeId: string }[];\n root: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n return await bundleCloudflareModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n entries: options.routes.map((route) => ({\n code: cloudflareMiddlewareModuleEntry(route.filename),\n filename: `${route.filename}.mreact-cloudflare-middleware.js`,\n name: `${route.routeId}.middleware`,\n routeId: route.routeId,\n })),\n root: options.root,\n vitePlugins: options.vitePlugins,\n });\n}\n\nexport async function __buildCloudflareRouteLoaderModuleBatchForTests(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n projectRoot: string;\n routes: readonly { filename: string; routeId: string }[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Record<string, string>> {\n const output = await buildCloudflareRouteLoaderModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n root: options.projectRoot,\n routes: options.routes,\n vitePlugins: options.vitePlugins,\n });\n\n return Object.fromEntries(\n options.routes.map((route) => [route.routeId, output.entries.get(route.routeId)?.code ?? \"\"]),\n );\n}\n\nasync function buildCloudflareServerRouteModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n routes: readonly { filename: string; routeId: string }[];\n root: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n return await bundleCloudflareModuleBatch({\n cacheDir: options.cacheDir,\n define: options.define,\n entries: options.routes.map((route) => ({\n code: cloudflareServerRouteModuleEntry(route.filename),\n filename: `${route.filename}.mreact-cloudflare-server-route.js`,\n name: `${route.routeId}.server`,\n routeId: route.routeId,\n })),\n root: options.root,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function bundleCloudflareModuleBatch(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n entries: readonly {\n code: string;\n filename: string;\n name: string;\n routeId: string;\n }[];\n root: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareBatchedRouteModules> {\n if (options.entries.length === 0) {\n return { chunks: [], entries: new Map() };\n }\n\n const output = await bundleRouterModules({\n cacheDir: options.cacheDir,\n chunkFileNames: \"routes/chunks/[name].[hash].mjs\",\n define: options.define,\n entries: options.entries,\n entryFileNames: \"routes/[name].[hash].mjs\",\n minify: true,\n platform: \"node\",\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n root: options.root,\n target: \"es2022\",\n vitePlugins: options.vitePlugins,\n });\n const entriesByName = new Map(options.entries.map((entry) => [entry.name, entry]));\n const entries = new Map<string, CloudflareBatchedRouteModule>();\n\n for (const chunk of output.chunks) {\n if (!chunk.isEntry) {\n continue;\n }\n\n const entry = entriesByName.get(chunk.name);\n\n if (entry === undefined) {\n continue;\n }\n\n entries.set(entry.routeId, {\n code: chunk.code,\n fileName: chunk.fileName,\n });\n }\n\n return { chunks: output.chunks, entries };\n}\n\nfunction cloudflareRouteLoaderModuleEntry(filename: string): string {\n return `export { loader } from ${JSON.stringify(filename)};`;\n}\n\nfunction cloudflareMiddlewareModuleEntry(filename: string): string {\n return `import * as middlewareModule from ${JSON.stringify(filename)};\n\nexport const config = middlewareModule.config;\nexport const middleware = middlewareModule.middleware;\nconst defaultMiddleware = middlewareModule.default;\nexport default defaultMiddleware;`;\n}\n\nasync function buildCloudflareRouteMetadataExportModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n filename: string;\n hasMetadata?: boolean | undefined;\n root?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string | undefined> {\n if (options.hasMetadata !== true) {\n return undefined;\n }\n\n const entry = `import * as routeMetadataModule from ${JSON.stringify(options.filename)};\nexport const generateMetadata = routeMetadataModule.generateMetadata;\nexport const metadata = routeMetadataModule.metadata;`;\n\n return bundleCloudflareModule({\n entry,\n cacheDir: options.cacheDir,\n define: options.define,\n filename: `${options.filename}.mreact-cloudflare-metadata.js`,\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n root: options.root,\n vitePlugins: options.vitePlugins,\n });\n}\n\nfunction cloudflareServerRouteModuleEntry(filename: string): string {\n return `import * as routeModule from ${JSON.stringify(filename)};\n\nexport const GET = routeModule.GET;\nexport const HEAD = routeModule.HEAD;\nexport const POST = routeModule.POST;\nexport const PUT = routeModule.PUT;\nexport const PATCH = routeModule.PATCH;\nexport const DELETE = routeModule.DELETE;\nexport const OPTIONS = routeModule.OPTIONS;\nexport const ALL = routeModule.ALL;\nconst defaultHandler = routeModule.default;\nexport default defaultHandler;`;\n}\n\nasync function bundleCloudflareModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n entry: string;\n filename: string;\n plugins: RouterCompatPlugin[];\n resolveDir: string;\n root?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n cacheDir: options.cacheDir,\n code: options.entry,\n define: options.define,\n filename: options.filename,\n minify: true,\n platform: \"node\",\n preserveExports: true,\n plugins: options.plugins,\n root: options.root,\n target: \"es2022\",\n vitePlugins: options.vitePlugins,\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to build Cloudflare route module for ${options.filename}.`);\n }\n\n return code;\n}\n\nasync function bundleCloudflareVirtualModule(options: {\n cacheDir?: string | undefined;\n define?: UserConfig[\"define\"] | undefined;\n entry: string;\n filename: string;\n modules: ReadonlyMap<string, string>;\n plugins: RouterCompatPlugin[];\n resolveDir: string;\n root?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return bundleCloudflareModule({\n cacheDir: options.cacheDir,\n define: options.define,\n entry: options.entry,\n filename: options.filename,\n plugins: [\n cloudflareVirtualModulesPlugin(\n new Map(\n Array.from(options.modules, ([id, contents]) => [\n id,\n { contents, resolveDir: options.resolveDir },\n ]),\n ),\n ),\n ...options.plugins,\n ],\n resolveDir: options.resolveDir,\n root: options.root,\n vitePlugins: options.vitePlugins,\n });\n}\n\ninterface CloudflareVirtualModule {\n contents: string;\n resolveDir: string;\n}\n\nfunction cloudflareVirtualModulesPlugin(\n modules: ReadonlyMap<string, CloudflareVirtualModule>,\n): RouterCompatPlugin {\n return {\n name: \"mreact-cloudflare-virtual-modules\",\n setup(buildApi) {\n buildApi.onResolve({ filter: /^mreact:/ }, (args) => ({\n namespace: \"mreact-cloudflare-virtual\",\n path: args.path,\n }));\n buildApi.onLoad({ filter: /.*/, namespace: \"mreact-cloudflare-virtual\" }, (args) => {\n const module = modules.get(args.path);\n\n if (module === undefined) {\n throw new Error(`Missing virtual Cloudflare module ${args.path}.`);\n }\n\n return {\n contents: module.contents,\n loader: \"js\",\n resolveDir: module.resolveDir,\n };\n });\n },\n };\n}\n\nasync function cloudflareShellFilesForPage(\n routesDir: string,\n pageFile: string,\n): Promise<CloudflareShellFile[]> {\n const shells = await existingRouteShellCandidates(routesDir, pageFile, async (file) => {\n try {\n return (await stat(file)).isFile();\n } catch {\n return false;\n }\n });\n\n return shells.map((shell) => ({\n file: shell.file,\n id: cloudflareShellBoundaryId(routesDir, shell.directory),\n kind: shell.kind,\n }));\n}\n\nfunction cloudflareShellBoundaryId(routesDir: string, directory: string): string {\n const relativeDirectory = relative(routesDir, directory);\n\n return relativeDirectory === \"\"\n ? \"root\"\n : relativeDirectory.replaceAll(sep, \"/\").replace(/[^A-Za-z0-9_$/-]/g, \"_\");\n}\n\nfunction cloudflareServerSourceTransformPlugin(options: {\n projectRoot: string;\n serverOutput: ServerOutputMode;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): RouterCompatPlugin {\n const clientRouteInferenceCache = createClientRouteInferenceCache();\n\n return {\n name: \"mreact-cloudflare-server-source-transform\",\n setup(buildApi) {\n buildApi.onLoad({ filter: /(?:\\.mreact)?\\.[cm]?[jt]sx$/ }, async (args) => {\n if (args.path.includes(`${sep}node_modules${sep}`)) {\n return undefined;\n }\n\n const source = await readFile(args.path, \"utf8\");\n const serverSource = isServerComponentFile(args.path)\n ? stripRouteBuildExports(source, args.path)\n : source;\n const sourceHash = hashText(serverSource);\n const routeFile = relative(options.projectRoot, args.path).replaceAll(sep, \"/\");\n const artifact = options.serverModules[routeFile]?.[options.serverOutput];\n const contents =\n artifact !== undefined && artifact.sourceHash === sourceHash\n ? artifact.code\n : await transformCloudflareServerSource({\n cache: clientRouteInferenceCache,\n filename: args.path,\n serverOutput: options.serverOutput,\n source: serverSource,\n vitePlugins: options.vitePlugins,\n });\n\n return {\n contents,\n loader: \"js\",\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n\nasync function transformCloudflareServerSource(options: {\n cache: ClientRouteInferenceCache;\n filename: string;\n serverOutput: ServerOutputMode;\n source: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const moduleContext = await compilerModuleContextForSource({\n cache: options.cache,\n code: options.source,\n filename: options.filename,\n });\n const clientInference = await inferClientRouteModule({\n cache: options.cache,\n code: options.source,\n filename: options.filename,\n moduleContext,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n const output = transformCompilerModuleContext({\n code: options.source,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n dev: false,\n filename: options.filename,\n moduleContext,\n serverEscape: nativeEscapeTransform,\n serverOutput: options.serverOutput,\n target: \"server\",\n });\n const fatalDiagnostics = output.diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(\n fatalDiagnostics\n .map((diagnostic) => formatDiagnostic(options.filename, diagnostic))\n .join(\"\\n\"),\n );\n }\n\n return output.code;\n}\n\nfunction cloudflareWorkspaceRuntimePlugin(): RouterCompatPlugin {\n const packageFile = (\n monorepoDir: string,\n packageName: string,\n entry: string,\n sourceExtension?: \"ts\" | \"tsx\" | undefined,\n ): string =>\n workspacePackageFile({\n currentFileUrl: import.meta.url,\n entry,\n monorepoDir,\n packageName,\n ...(sourceExtension === undefined ? {} : { sourceExtension }),\n });\n const routerCachePath = packageFile(\"router\", \"@reckona/mreact-router\", \"cache\");\n const routerCookiesPath = packageFile(\"router\", \"@reckona/mreact-router\", \"cookies\");\n const routerCsrfPath = packageFile(\"router\", \"@reckona/mreact-router\", \"csrf\");\n const routerDeferredPath = packageFile(\"router\", \"@reckona/mreact-router\", \"deferred\");\n const routerI18nPath = packageFile(\"router\", \"@reckona/mreact-router\", \"i18n\");\n const routerLinkPath = packageFile(\"router\", \"@reckona/mreact-router\", \"link\");\n const routerMultipartPath = packageFile(\"router\", \"@reckona/mreact-router\", \"multipart\");\n const routerNavigationPath = packageFile(\"router\", \"@reckona/mreact-router\", \"navigation\");\n const routerRuntimeStatePath = packageFile(\"router\", \"@reckona/mreact-router\", \"runtime-state\");\n const routerStreamListPath = packageFile(\"router\", \"@reckona/mreact-router\", \"stream-list\");\n const runtimePaths = new Map([\n [\"@reckona/mreact\", packageFile(\"react\", \"@reckona/mreact\", \"index\")],\n [\"@reckona/mreact/jsx-dev-runtime\", packageFile(\"react\", \"@reckona/mreact\", \"jsx-dev-runtime\")],\n [\"@reckona/mreact/jsx-runtime\", packageFile(\"react\", \"@reckona/mreact\", \"jsx-runtime\")],\n [\"@reckona/mreact-auth\", packageFile(\"auth\", \"@reckona/mreact-auth\", \"index\")],\n [\"@reckona/mreact-compat\", packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"index\")],\n [\n \"@reckona/mreact-compat/event-priority\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"event-priority\"),\n ],\n [\n \"@reckona/mreact-compat/flight\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"flight\"),\n ],\n [\n \"@reckona/mreact-compat/hooks\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"hooks-entry\"),\n ],\n [\n \"@reckona/mreact-compat/internal\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"internal\"),\n ],\n [\n \"@reckona/mreact-compat/jsx-dev-runtime\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-dev-runtime\"),\n ],\n [\n \"@reckona/mreact-compat/jsx-runtime\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-runtime\"),\n ],\n [\n \"@reckona/mreact-compat/scheduler\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"scheduler\"),\n ],\n [\"@reckona/mreact-query\", packageFile(\"query\", \"@reckona/mreact-query\", \"index\")],\n [\n \"@reckona/mreact-reactive-core\",\n packageFile(\"reactive-core\", \"@reckona/mreact-reactive-core\", \"index\"),\n ],\n [\n \"@reckona/mreact-router/adapters/cloudflare\",\n packageFile(\"router\", \"@reckona/mreact-router\", \"adapters/cloudflare\"),\n ],\n [\"@reckona/mreact-router/link\", routerLinkPath],\n [\"@reckona/mreact-router/runtime-state\", routerRuntimeStatePath],\n [\"@reckona/mreact-router/session\", packageFile(\"router\", \"@reckona/mreact-router\", \"session\")],\n [\"@reckona/mreact-router/stream-list\", routerStreamListPath],\n [\"@reckona/mreact-server\", packageFile(\"server\", \"@reckona/mreact-server\", \"index\")],\n [\n \"@reckona/mreact-shared/html-escape\",\n packageFile(\"shared\", \"@reckona/mreact-shared\", \"html-escape\"),\n ],\n ]);\n\n return {\n name: \"mreact-cloudflare-workspace-runtime\",\n setup(buildApi) {\n buildApi.onResolve(\n { filter: /^@reckona\\/mreact-router\\/(?:internal\\/)?native-escape$/ },\n () => ({\n namespace: \"mreact-cloudflare-native-escape\",\n path: \"native-escape\",\n }),\n );\n buildApi.onResolve({ filter: /^@reckona\\/mreact-router$/ }, () => ({\n namespace: \"mreact-cloudflare-router-index\",\n path: \"index\",\n }));\n buildApi.onResolve({ filter: /^@reckona\\/mreact(?:-[\\w-]+)?(?:\\/[\\w/-]+)?$/ }, (args) => {\n const path = runtimePaths.get(args.path);\n\n return path === undefined ? undefined : { path };\n });\n buildApi.onLoad(\n { filter: /^native-escape$/, namespace: \"mreact-cloudflare-native-escape\" },\n () => ({\n contents: `function escapeHtml(value) {\n return String(value ?? \"\").replace(/[&<>\"]/g, (char) =>\n char === \"&\" ? \"&\" : char === \"<\" ? \"<\" : char === \">\" ? \">\" : \""\"\n );\n}\nexport function escapeHtmlBatch(values) {\n return values.map(escapeHtml);\n}`,\n loader: \"js\",\n }),\n );\n buildApi.onLoad({ filter: /^index$/, namespace: \"mreact-cloudflare-router-index\" }, () => ({\n contents: `export { cacheControl, revalidatePath } from ${JSON.stringify(routerCachePath)};\nexport { deleteCookie, parseCookieHeader, serializeCookie, setCookie } from ${JSON.stringify(routerCookiesPath)};\nexport { createFormCsrfToken, formCsrfCookie, formCsrfFieldName, serverActionCookie, validateFormCsrf } from ${JSON.stringify(routerCsrfPath)};\nexport { defer, isDeferredLoaderData } from ${JSON.stringify(routerDeferredPath)};\nexport { defineMessages, detectLocale } from ${JSON.stringify(routerI18nPath)};\nexport { Link, linkProps } from ${JSON.stringify(routerLinkPath)};\nexport { parseMultipartStream } from ${JSON.stringify(routerMultipartPath)};\nexport { cookies, headers, html, json, next, notFound, redirect, redirectExternal, rewrite, throwNotFound } from ${JSON.stringify(routerNavigationPath)};\nexport { getServerRuntimeState } from ${JSON.stringify(routerRuntimeStatePath)};`,\n loader: \"js\",\n resolveDir: dirname(routerNavigationPath),\n }));\n buildApi.onLoad(\n { filter: /(?:^|[/\\\\])packages[/\\\\]server[/\\\\](?:src|dist)[/\\\\]native-flight\\.[jt]s$/ },\n () => ({\n contents: `export function getNativeFlight() {\n return undefined;\n}`,\n loader: \"js\",\n }),\n );\n },\n };\n}\n\nfunction cloudflareRouteRequiresGeneratedModule(\n route: AppRoute,\n prerenderedRoutes: Record<string, BuiltPrerenderedRoute>,\n): boolean {\n return (\n route.kind === \"metadata\" ||\n route.kind === \"server\" ||\n (route.kind === \"page\" &&\n (route.segments.some((segment) => segment.kind !== \"static\") ||\n prerenderedRoutes[route.path] === undefined))\n );\n}\n\nfunction isServerComponentFile(file: string): boolean {\n return /(?:^|\\/)(?:page|layout|template|loading|error|not-found)(?:\\.mreact)?\\.tsx$/.test(file);\n}\n\nfunction viteManifestFromClientRoutes(routes: ClientRouteManifestEntry[]): Record<\n string,\n {\n css?: readonly string[];\n file: string;\n imports?: readonly string[];\n isEntry: true;\n name: string;\n src: string;\n }\n> {\n const manifest: Record<\n string,\n {\n file: string;\n imports?: readonly string[];\n isEntry: true;\n name: string;\n src: string;\n }\n > = {};\n\n for (const route of routes) {\n if (!route.client || route.script === undefined || route.devScript === undefined) {\n continue;\n }\n\n manifest[route.devScript] = {\n ...(route.css === undefined ? {} : { css: route.css }),\n file: route.script,\n ...(route.imports === undefined ? {} : { imports: route.imports }),\n isEntry: true,\n name: route.routeId ?? routeIdForPath(route.path),\n src: route.devScript,\n };\n }\n\n return manifest;\n}\n\ninterface ClientRouteBundleManifest {\n assets: string[];\n routes: ClientRouteManifestEntry[];\n styles: ClientStyleManifestEntry[];\n}\n\ninterface ClientStyleManifestEntry {\n css: string[];\n file: string;\n}\n\ninterface RouteCssAssetBatch {\n assets: string[];\n css: string[];\n}\n\nasync function writeClientRouteBundles(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n cacheDir?: string | undefined;\n clientDir: string;\n clientConsolePureFunctions?: readonly string[] | undefined;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n projectRoot: string;\n routes: readonly AppRoute[];\n sourceAnalysis: BuildSourceAnalysisScope;\n sourceMapDir: string;\n sourceMaps: AppRouterClientSourceMapMode;\n sourceDirs: readonly string[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<ClientRouteBundleManifest> {\n type PreparedClientRouteEntry = {\n build: BuildClientRouteOutputOptions;\n css: string[];\n navigation: boolean;\n route: AppRoute & { kind: \"page\" };\n };\n type PreparedClientManifestEntry = { manifest: ClientRouteManifestEntry };\n type PreparedRouteEntry = PreparedClientRouteEntry | PreparedClientManifestEntry;\n const pageRoutes = options.routes.filter(\n (route): route is AppRoute & { kind: \"page\" } => route.kind === \"page\",\n );\n const routeCssAssets = await writeRouteCssAssetBatches({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n cacheDir: options.cacheDir,\n clientDir: options.clientDir,\n pageRoutes,\n projectRoot: options.projectRoot,\n sourceAnalysis: options.sourceAnalysis,\n sourceDirs: options.sourceDirs,\n vitePlugins: options.vitePlugins,\n });\n const specialCssAssets = await writeSpecialRouteCssAssetBatches({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n cacheDir: options.cacheDir,\n clientDir: options.clientDir,\n projectRoot: options.projectRoot,\n sourceAnalysis: options.sourceAnalysis,\n sourceDirs: options.sourceDirs,\n vitePlugins: options.vitePlugins,\n });\n const entries: PreparedRouteEntry[] = await Promise.all(\n options.routes.map(async (route) => {\n if (route.kind !== \"page\") {\n return {\n manifest: { path: route.path, kind: route.kind, client: false },\n };\n }\n\n const css = routeCssAssets.byRoute.get(route.file) ?? [];\n const source = buildSourceAnalysisForFile(\n options.sourceAnalysis,\n options.projectRoot,\n route.file,\n )?.source;\n\n if (source === undefined) {\n return {\n manifest: { path: route.path, kind: route.kind, client: false },\n };\n }\n\n const clientSource = stripRouteClientSource({ code: source, filename: route.file });\n const references = await collectClientRouteReferences({\n appDir: options.appDir,\n cache: options.clientRouteInferenceCache,\n code: clientSource,\n filename: route.file,\n routePath: route.path,\n vitePlugins: options.vitePlugins,\n });\n const navigation = await resolveNavigationRuntime({\n cache: options.clientRouteInferenceCache,\n code: source,\n filename: route.file,\n references,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of references.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n const navigationRuntimeDiagnostic = navigationRuntimeLinkDisabledDiagnostic({\n filename: route.file,\n references,\n routePath: route.path,\n source,\n });\n\n if (navigationRuntimeDiagnostic !== undefined) {\n console.warn(formatClientRouteInferenceDiagnostic(navigationRuntimeDiagnostic));\n }\n\n if (!references.client) {\n return {\n manifest: {\n path: route.path,\n kind: route.kind,\n client: false,\n ...(css.length === 0 ? {} : { css }),\n ...(navigation ? { navigation } : {}),\n },\n };\n }\n\n return {\n css,\n navigation,\n route: route as AppRoute & { kind: \"page\" },\n build: {\n code: clientSource,\n clientBoundaryImports: references.clientBoundaryImports,\n clientReferenceImports: references.clientReferenceImports,\n clientReferenceManifest: references.clientReferenceManifest,\n clientNavigation: detectClientNavigationHint(source),\n cacheDir: options.cacheDir,\n dropConsoleFunctions: options.clientConsolePureFunctions,\n filename: route.file,\n minify: true,\n routePath: route.path,\n sourceMap: options.sourceMaps !== \"none\",\n vitePlugins: options.vitePlugins,\n },\n };\n }),\n );\n const clientEntries = entries.filter(\n (entry): entry is PreparedClientRouteEntry => \"build\" in entry,\n );\n\n if (clientEntries.length === 0) {\n return {\n assets: [...routeCssAssets.assets, ...specialCssAssets.assets].sort(),\n routes: entries.flatMap((entry) => (\"manifest\" in entry ? [entry.manifest] : [])),\n styles: specialCssAssets.styles,\n };\n }\n\n let output: Awaited<ReturnType<typeof buildClientRouteBatchOutput>>;\n\n try {\n output = await buildClientRouteBatchOutput({\n assetBaseUrl: options.assetBaseUrl,\n cacheDir: options.cacheDir,\n dropConsoleFunctions: options.clientConsolePureFunctions,\n minify: true,\n projectRoot: options.projectRoot,\n routes: clientEntries.map((entry) => entry.build),\n sourceMap: options.sourceMaps !== \"none\",\n vitePlugins: options.vitePlugins,\n });\n } catch (error) {\n const routeContexts = clientEntries\n .map(\n (entry) => `Failed to build client bundle for ${entry.route.path} (${entry.route.file}).`,\n )\n .join(\"\\n\");\n\n throw new Error(\n `${routeContexts}\\nFailed to build client route bundles.\\n${errorMessage(error)}`,\n {\n cause: error,\n },\n );\n }\n\n const routeOutputs = new Map(output.routes.map((route) => [route.routePath, route]));\n const mapAssets = new Map(\n output.chunks.flatMap((chunk) =>\n chunk.map === undefined ? [] : [[`${chunk.fileName}.map`, chunk.map] as const],\n ),\n );\n\n for (const chunk of output.chunks) {\n const scriptBasename = chunk.fileName.split(\"/\").pop() ?? \"chunk.js\";\n const code = applyClientSourceMapReference({\n code: chunk.code,\n scriptBasename,\n sourceMaps: options.sourceMaps,\n });\n\n await mkdir(dirname(join(options.clientDir, chunk.fileName)), { recursive: true });\n await writeFile(join(options.clientDir, chunk.fileName), code);\n }\n\n for (const [sourceMap, map] of mapAssets) {\n const mapBaseDir = options.sourceMaps === \"hidden\" ? options.sourceMapDir : options.clientDir;\n\n await mkdir(dirname(join(mapBaseDir, sourceMap)), { recursive: true });\n await writeFile(join(mapBaseDir, sourceMap), map);\n }\n\n for (const asset of output.assets ?? []) {\n const source =\n typeof asset.source === \"string\" ? asset.source : Buffer.from(asset.source).toString(\"utf8\");\n\n await mkdir(dirname(join(options.clientDir, asset.fileName)), { recursive: true });\n await writeFile(join(options.clientDir, asset.fileName), source);\n }\n\n const generatedAssets = new Set<string>([...routeCssAssets.assets, ...specialCssAssets.assets]);\n\n for (const chunk of output.chunks) {\n generatedAssets.add(chunk.fileName);\n if (options.sourceMaps === \"linked\" && chunk.map !== undefined) {\n generatedAssets.add(`${chunk.fileName}.map`);\n }\n }\n\n for (const asset of output.assets ?? []) {\n generatedAssets.add(asset.fileName);\n }\n\n const routes = entries.map((entry) => {\n if (!(\"build\" in entry)) {\n return entry.manifest;\n }\n\n const routeOutput = routeOutputs.get(entry.route.path);\n\n if (routeOutput === undefined) {\n throw new Error(`Failed to build client bundle for ${entry.route.path}: missing output.`);\n }\n\n const routeId = routeIdForPath(entry.route.path);\n const sourceMap = `${routeOutput.chunk.fileName}.map`;\n const code = applyClientSourceMapReference({\n code: routeOutput.chunk.code,\n scriptBasename: routeOutput.chunk.fileName.split(\"/\").pop() ?? \"route.js\",\n sourceMaps: options.sourceMaps,\n });\n\n return {\n bytes: Buffer.byteLength(code),\n path: entry.route.path,\n kind: entry.route.kind,\n client: true,\n ...(entry.build.clientReferenceManifest === undefined ||\n entry.build.clientReferenceManifest.length === 0\n ? {}\n : { clientReferenceManifest: entry.build.clientReferenceManifest }),\n ...(entry.css.length === 0 ? {} : { css: entry.css }),\n ...(routeOutput.chunk.imports.length === 0 ? {} : { imports: routeOutput.chunk.imports }),\n ...(entry.navigation ? { navigation: entry.navigation } : {}),\n routeId,\n script: routeOutput.chunk.fileName,\n ...(options.sourceMaps === \"linked\" ? { sourceMap } : {}),\n devScript: clientScriptForPath(entry.route.path),\n };\n });\n\n return {\n assets: Array.from(generatedAssets).sort(),\n routes,\n styles: specialCssAssets.styles,\n };\n}\n\nasync function writeSpecialRouteCssAssetBatches(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n cacheDir?: string | undefined;\n clientDir: string;\n projectRoot: string;\n sourceAnalysis: BuildSourceAnalysisScope;\n sourceDirs: readonly string[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<{ assets: string[]; styles: ClientStyleManifestEntry[] }> {\n const boundaryFiles = await collectSpecialBoundaryFiles(options.appDir);\n const entries = await mapWithBuildConcurrency(boundaryFiles, async (file) => {\n const cssFiles = await collectRouteCssFilesFromSources({\n appDir: options.appDir,\n pageFile: file,\n projectRoot: options.projectRoot,\n readSource: (sourceFile) =>\n buildSourceAnalysisForFile(options.sourceAnalysis, options.projectRoot, sourceFile)?.source,\n });\n\n if (cssFiles.length === 0) {\n return undefined;\n }\n\n const batch = await writeRouteCssAssetsForFiles({\n assetBaseUrl: options.assetBaseUrl,\n cacheDir: options.cacheDir,\n clientDir: options.clientDir,\n cssFiles,\n pageFile: file,\n projectRoot: options.projectRoot,\n routeIds: [specialBoundaryRouteId(options.appDir, file)],\n sourceDirs: options.sourceDirs,\n vitePlugins: options.vitePlugins,\n });\n\n return batch.css.length === 0\n ? undefined\n : {\n assets: batch.assets,\n style: {\n css: batch.css,\n file: relative(options.appDir, file).split(sep).join(\"/\"),\n } satisfies ClientStyleManifestEntry,\n };\n });\n\n return {\n assets: entries.flatMap((entry) => entry?.assets ?? []).sort(),\n styles: entries\n .flatMap((entry) => (entry === undefined ? [] : [entry.style]))\n .sort((left, right) => left.file.localeCompare(right.file)),\n };\n}\n\nfunction specialBoundaryRouteId(appDir: string, file: string): string {\n const relativeFile = relative(appDir, file).split(sep);\n const filename = relativeFile.pop() ?? \"boundary.tsx\";\n const boundaryName = filename.replace(/(?:\\.mreact)?\\.tsx$/u, \"\");\n const routeParts = relativeFile.filter((part) => !part.startsWith(\"(\") || !part.endsWith(\")\"));\n const path = `/${[...routeParts, boundaryName].join(\"/\")}`;\n\n return routeIdForPath(path);\n}\n\nasync function writeRouteCssAssetBatches(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n cacheDir?: string | undefined;\n clientDir: string;\n pageRoutes: readonly (AppRoute & { kind: \"page\" })[];\n projectRoot: string;\n sourceAnalysis: BuildSourceAnalysisScope;\n sourceDirs: readonly string[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<{ assets: string[]; byRoute: Map<string, string[]> }> {\n const cssInputs = await mapWithBuildConcurrency(options.pageRoutes, async (route) => {\n const cssFiles = await collectRouteCssFilesFromSources({\n appDir: options.appDir,\n pageFile: route.file,\n projectRoot: options.projectRoot,\n readSource: (file) =>\n buildSourceAnalysisForFile(options.sourceAnalysis, options.projectRoot, file)?.source,\n });\n\n return { cssFiles, route };\n });\n const groups = new Map<\n string,\n { cssFiles: string[]; routeIds: string[]; routeFiles: string[] }\n >();\n\n for (const { cssFiles, route } of cssInputs) {\n if (cssFiles.length === 0) {\n continue;\n }\n\n const key = cssFiles.join(\"\\0\");\n const group = groups.get(key) ?? { cssFiles, routeFiles: [], routeIds: [] };\n group.routeFiles.push(route.file);\n group.routeIds.push(routeIdForPath(route.path));\n groups.set(key, group);\n }\n\n const writtenGroups = await mapWithBuildConcurrency(\n [...groups.entries()],\n async ([key, group]) =>\n [\n key,\n await writeRouteCssAssetsForFiles({\n assetBaseUrl: options.assetBaseUrl,\n cacheDir: options.cacheDir,\n clientDir: options.clientDir,\n cssFiles: group.cssFiles,\n pageFile: group.routeFiles[0] ?? options.appDir,\n projectRoot: options.projectRoot,\n routeIds: group.routeIds,\n sourceDirs: options.sourceDirs,\n vitePlugins: options.vitePlugins,\n }),\n ] as const,\n );\n const cssByGroup = new Map(writtenGroups);\n const cssByRoute = new Map<string, string[]>();\n const assets = new Set<string>();\n\n for (const [key, group] of groups) {\n const batch = cssByGroup.get(key);\n const css = batch?.css ?? [];\n\n for (const asset of batch?.assets ?? []) {\n assets.add(asset);\n }\n\n for (const routeFile of group.routeFiles) {\n cssByRoute.set(routeFile, css);\n }\n }\n\n return { assets: [...assets].sort(), byRoute: cssByRoute };\n}\n\nasync function writeRouteCssAssetsForFiles(options: {\n assetBaseUrl?: string | undefined;\n cacheDir?: string | undefined;\n clientDir: string;\n cssFiles: readonly string[];\n pageFile: string;\n projectRoot: string;\n routeIds: readonly string[];\n sourceDirs: readonly string[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<RouteCssAssetBatch> {\n const cssFiles = [...options.cssFiles];\n if (cssFiles.length === 0) {\n return { assets: [], css: [] };\n }\n\n const code = [\n ...cssFiles.map((file) => `import ${JSON.stringify(file)};`),\n \"export default undefined;\",\n ].join(\"\\n\");\n const output = await bundleRouterModule({\n base: options.assetBaseUrl ?? \"/_mreact/client/\",\n cacheDir: options.cacheDir,\n code,\n filename: options.pageFile,\n minify: true,\n platform: \"browser\",\n root: options.projectRoot,\n vitePlugins: [\n productionRouteCssTailwindSourcePlugin({\n cssFiles,\n sourceDirs: options.sourceDirs,\n }),\n ...(options.vitePlugins ?? []),\n ],\n });\n const cssAssets = (output.assets ?? []).filter((asset) => asset.fileName.endsWith(\".css\"));\n const nonCssAssets = (output.assets ?? []).filter((asset) => !asset.fileName.endsWith(\".css\"));\n const writtenAssets: string[] = [];\n const written: string[] = [];\n const routeStem =\n options.routeIds.length === 1\n ? (options.routeIds[0] ?? \"index\")\n : `shared.${hashText(cssFiles.join(\"\\0\")).slice(0, 8)}`;\n\n for (const [index, asset] of cssAssets.entries()) {\n const source =\n typeof asset.source === \"string\" ? asset.source : Buffer.from(asset.source).toString(\"utf8\");\n const hash = createHash(\"sha256\").update(source).digest(\"hex\").slice(0, 8);\n const cssFile = `assets/routes/${routeStem}${cssAssets.length === 1 ? \"\" : `.${index}`}.${hash}.css`;\n\n await mkdir(dirname(join(options.clientDir, cssFile)), { recursive: true });\n await writeFile(join(options.clientDir, cssFile), source);\n written.push(cssFile);\n }\n\n for (const asset of nonCssAssets) {\n await mkdir(dirname(join(options.clientDir, asset.fileName)), { recursive: true });\n await writeFile(\n join(options.clientDir, asset.fileName),\n typeof asset.source === \"string\" ? asset.source : Buffer.from(asset.source),\n );\n writtenAssets.push(asset.fileName);\n }\n\n return { assets: writtenAssets.sort(), css: written };\n}\n\nfunction productionRouteCssTailwindSourcePlugin(options: {\n cssFiles: readonly string[];\n sourceDirs: readonly string[];\n}): Plugin {\n const cssFiles = new Set(options.cssFiles);\n\n return {\n name: \"mreact-production-route-css-tailwind-source\",\n enforce: \"pre\",\n transform(code, id) {\n const [filename] = id.split(/[?#]/, 1);\n\n if (filename === undefined || !cssFiles.has(filename)) {\n return;\n }\n\n return prependTailwindSourceDirectives({\n code,\n cssFile: filename,\n sourceDirs: options.sourceDirs,\n });\n },\n };\n}\n\nfunction applyClientSourceMapReference(options: {\n code: string;\n scriptBasename: string;\n sourceMaps: AppRouterClientSourceMapMode;\n}): string {\n const sourceMappingUrlPattern = /\\n?\\/\\/# sourceMappingURL=route\\.js\\.map\\s*$/;\n\n if (options.sourceMaps === \"none\") {\n return options.code;\n }\n\n if (options.sourceMaps === \"hidden\") {\n return options.code.replace(sourceMappingUrlPattern, \"\");\n }\n\n const code = options.code.replace(\n sourceMappingUrlPattern,\n `\\n//# sourceMappingURL=${options.scriptBasename}.map`,\n );\n\n return code.includes(\"sourceMappingURL=\")\n ? code\n : `${code}\\n//# sourceMappingURL=${options.scriptBasename}.map`;\n}\n\nasync function writeNavigationRuntimeBundle(\n clientDir: string,\n dropConsoleFunctions: readonly string[] | undefined,\n): Promise<string> {\n const output = await buildNavigationRuntimeBundle({\n dropConsoleFunctions,\n minify: true,\n sourceMap: false,\n });\n const hash = createHash(\"sha256\").update(output.code).digest(\"hex\").slice(0, 8);\n const script = `assets/navigation.${hash}.js`;\n\n await mkdir(dirname(join(clientDir, script)), { recursive: true });\n await writeFile(join(clientDir, script), output.code);\n\n return script;\n}\n\nasync function writeAwsLambdaHandlerArtifact(outDir: string): Promise<void> {\n const awsLambdaDir = join(outDir, \"aws-lambda\");\n await mkdir(awsLambdaDir, { recursive: true });\n await writeFile(join(awsLambdaDir, \"mreact-handler.mjs\"), awsLambdaHandlerSource(\"..\"));\n}\n\nasync function writeCloudflareWorkerArtifact(options: {\n cloudflareDir: string;\n clientManifest: { publicAssets?: readonly string[]; routes: readonly ClientRouteManifestEntry[] };\n modulesFile: string;\n serverManifest: BuiltServerManifest;\n}): Promise<void> {\n await writeFile(\n join(options.cloudflareDir, \"worker.mjs\"),\n [\n `import { createCloudflareBuiltRequestHandler, createCloudflareRouteModuleRenderer, createCloudflareStaticAssetLoader } from \"@reckona/mreact-router/adapters/cloudflare\";`,\n `import { routeModules } from ${JSON.stringify(`./${options.modulesFile}`)};`,\n ``,\n `const serverManifest = ${JSON.stringify(options.serverManifest, null, 2)};`,\n `const clientManifest = ${JSON.stringify(options.clientManifest, null, 2)};`,\n ``,\n `export default createCloudflareBuiltRequestHandler({`,\n ` assets: createCloudflareStaticAssetLoader({`,\n ` binding: (env) => env?.ASSETS,`,\n ` clientManifest,`,\n ` }),`,\n ` clientManifest,`,\n ` renderRoute: createCloudflareRouteModuleRenderer({ modules: routeModules }),`,\n ` serverManifest,`,\n `});`,\n ``,\n ].join(\"\\n\"),\n );\n}\n\n/**\n * Packages a built app-router output directory into the minimal AWS Lambda artifact layout.\n *\n * The package contains `.mreact`, a Lambda handler, project package metadata, production dependencies, and `mreact-lambda-artifact.json`; it intentionally excludes source files and development tooling that are not needed at runtime.\n */\nexport async function packageAwsLambdaArtifact(\n options: PackageAwsLambdaArtifactOptions,\n): Promise<AwsLambdaArtifactManifest> {\n await assertRequiredBuildFile(join(options.fromDir, \"server\", \"manifest.json\"));\n await assertRequiredBuildFile(join(options.fromDir, \"server\", \"import-policy.json\"));\n await assertRequiredBuildFile(join(options.fromDir, \"client\", \"manifest.json\"));\n\n await rm(options.outDir, { force: true, recursive: true });\n await mkdir(options.outDir, { recursive: true });\n await cp(options.fromDir, join(options.outDir, \".mreact\"), {\n force: true,\n recursive: true,\n });\n await copyAwsLambdaProjectMetadata({\n fromDir: dirname(options.fromDir),\n outDir: options.outDir,\n });\n if (options.handlerEntry === undefined) {\n await writeFile(join(options.outDir, \"mreact-handler.mjs\"), awsLambdaHandlerSource(\".mreact\"));\n } else {\n await writeAwsLambdaCustomHandlerArtifact({\n entry: options.handlerEntry,\n projectRoot: dirname(options.fromDir),\n outDir: options.outDir,\n });\n }\n\n if (options.skipRuntimeDependencyCheck !== true) {\n await assertAwsLambdaRuntimeDependencies(options.outDir);\n }\n\n const files = await collectArtifactFiles(options.outDir, \"\");\n const manifest = {\n files,\n handler: \"mreact-handler.handler\",\n runtime: \"aws-lambda\",\n totalBytes: files.reduce((total, file) => total + file.bytes, 0),\n version: 1,\n } satisfies AwsLambdaArtifactManifest;\n\n await writeFile(\n join(options.outDir, \"mreact-lambda-artifact.json\"),\n JSON.stringify(manifest, null, 2),\n );\n\n return manifest;\n}\n\nasync function writeAwsLambdaCustomHandlerArtifact(options: {\n entry: string;\n outDir: string;\n projectRoot: string;\n}): Promise<void> {\n const entry = resolve(options.entry);\n const output = await bundleRouterModule({\n code: await readFile(entry, \"utf8\"),\n filename: entry,\n outfile: \"mreact-handler.mjs\",\n platform: \"node\",\n plugins: [externalizePackageImportsPlugin()],\n preserveExports: true,\n root: options.projectRoot,\n target: \"node24\",\n });\n\n await writeFile(join(options.outDir, \"mreact-handler.mjs\"), output.code);\n}\n\nfunction externalizePackageImportsPlugin(): RouterCompatPlugin {\n return {\n name: \"mreact-router-externalize-package-imports\",\n setup(buildApi) {\n buildApi.onResolve({ filter: /^(?:node:|[A-Za-z@])/ }, (args) =>\n isBarePackageImport(args.path) ? { external: true, path: args.path } : undefined,\n );\n },\n };\n}\n\nfunction isBarePackageImport(specifier: string): boolean {\n return (\n specifier.startsWith(\"node:\") ||\n (!specifier.startsWith(\".\") && !specifier.startsWith(\"/\") && !specifier.includes(\"\\\\\"))\n );\n}\n\nasync function assertAwsLambdaRuntimeDependencies(outDir: string): Promise<void> {\n try {\n const info = await stat(\n join(outDir, \"node_modules\", \"@reckona\", \"mreact-router\", \"package.json\"),\n );\n if (info.isFile()) {\n return;\n }\n } catch {\n // Throw the actionable error below.\n }\n\n throw new Error(\n [\n \"AWS Lambda artifact is missing production runtime dependencies.\",\n \"Install production dependencies into the package directory before deployment,\",\n \"or rerun with --skip-runtime-dependency-check only when a later deploy step installs them into .lambda/node_modules.\",\n ].join(\" \"),\n );\n}\n\n/**\n * Packages a Cloudflare-target build for Cloudflare Pages advanced mode.\n *\n * The package writes `_worker.js`, generated client assets, public assets, and `mreact-cloudflare-pages-artifact.json`; deploy the output directory rather than the raw `.mreact` build tree.\n */\nexport async function packageCloudflarePagesArtifact(\n options: PackageCloudflarePagesArtifactOptions,\n): Promise<CloudflarePagesArtifactManifest> {\n const clientManifestPath = join(options.fromDir, \"client\", \"manifest.json\");\n const workerPath = join(options.fromDir, \"cloudflare\", \"worker.mjs\");\n\n await assertRequiredBuildFile(clientManifestPath);\n await assertRequiredBuildFile(workerPath);\n await assertRequiredBuildFile(join(options.fromDir, \"cloudflare\", \"route-modules.mjs\"));\n assertPackageOutputDoesNotReplaceBuildOutput(options);\n\n const clientManifest = JSON.parse(await readFile(clientManifestPath, \"utf8\")) as {\n publicAssets?: readonly string[] | undefined;\n };\n\n await rm(options.outDir, { force: true, recursive: true });\n await mkdir(options.outDir, { recursive: true });\n await cp(join(options.fromDir, \"client\"), join(options.outDir, \"_mreact\", \"client\"), {\n force: true,\n recursive: true,\n });\n await copyCloudflarePagesPublicAssets({\n clientDir: join(options.fromDir, \"client\"),\n outDir: options.outDir,\n publicAssets: clientManifest.publicAssets ?? [],\n });\n\n const bundledWorker = await bundleRouterModule({\n code: await readFile(workerPath, \"utf8\"),\n filename: workerPath,\n minify: true,\n modulePreload: false,\n nodeBuiltins: \"externalize\",\n outfile: \"_worker.js\",\n platform: \"browser\",\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n preserveExports: true,\n target: \"es2022\",\n });\n await writeFile(join(options.outDir, \"_worker.js\"), bundledWorker.code);\n\n const files = await collectArtifactFiles(options.outDir, \"\");\n const manifest = {\n files,\n runtime: \"cloudflare-pages\",\n totalBytes: files.reduce((total, file) => total + file.bytes, 0),\n version: 1,\n worker: \"_worker.js\",\n } satisfies CloudflarePagesArtifactManifest;\n\n await writeFile(\n join(options.outDir, \"mreact-cloudflare-pages-artifact.json\"),\n JSON.stringify(manifest, null, 2),\n );\n\n return manifest;\n}\n\nasync function assertRequiredBuildFile(path: string): Promise<void> {\n try {\n const info = await stat(path);\n if (info.isFile()) {\n return;\n }\n } catch {\n // Throw the actionable error below.\n }\n\n throw new Error(`Missing required mreact build artifact: ${path}`);\n}\n\nfunction assertPackageOutputDoesNotReplaceBuildOutput(options: {\n fromDir: string;\n outDir: string;\n}): void {\n if (resolve(options.fromDir) === resolve(options.outDir)) {\n throw new Error(\n \"Package output directory must be different from the mreact build output directory.\",\n );\n }\n}\n\nasync function copyCloudflarePagesPublicAssets(options: {\n clientDir: string;\n outDir: string;\n publicAssets: readonly string[];\n}): Promise<void> {\n for (const asset of options.publicAssets) {\n if (\n !asset.startsWith(\"/\") ||\n asset.startsWith(\"//\") ||\n asset.includes(\"..\") ||\n asset === \"/_mreact\" ||\n asset.startsWith(\"/_mreact/\")\n ) {\n continue;\n }\n\n const relativeAsset = asset.slice(1);\n await mkdir(dirname(join(options.outDir, relativeAsset)), { recursive: true });\n await copyFile(join(options.clientDir, relativeAsset), join(options.outDir, relativeAsset));\n }\n}\n\nasync function copyAwsLambdaProjectMetadata(options: {\n fromDir: string;\n outDir: string;\n}): Promise<void> {\n for (const file of [\n \"package.json\",\n \"package-lock.json\",\n \"npm-shrinkwrap.json\",\n \"pnpm-lock.yaml\",\n \"pnpm-workspace.yaml\",\n \"bun.lock\",\n ]) {\n try {\n await cp(join(options.fromDir, file), join(options.outDir, file), { force: true });\n } catch (error) {\n if (!isNodeError(error) || error.code !== \"ENOENT\") {\n throw error;\n }\n }\n }\n}\n\nasync function collectArtifactFiles(\n rootDir: string,\n relativeDir: string,\n): Promise<Array<{ bytes: number; path: string }>> {\n const entries = await readdir(join(rootDir, relativeDir), { withFileTypes: true });\n const files: Array<{ bytes: number; path: string }> = [];\n\n for (const entry of entries) {\n const relativePath = relativeDir === \"\" ? entry.name : `${relativeDir}/${entry.name}`;\n const absolutePath = join(rootDir, relativePath);\n\n if (entry.isDirectory()) {\n files.push(...(await collectArtifactFiles(rootDir, relativePath)));\n continue;\n }\n\n if (entry.isFile()) {\n const info = await stat(absolutePath);\n files.push({ bytes: info.size, path: relativePath });\n }\n }\n\n return files.sort(\n (left, right) => right.bytes - left.bytes || left.path.localeCompare(right.path),\n );\n}\n\nfunction awsLambdaHandlerSource(outDirRelativeToHandler: string): string {\n return `import { fileURLToPath } from \"node:url\";\nimport { dirname, resolve } from \"node:path\";\nimport { createPreloadedAwsLambdaRequestHandler } from \"@reckona/mreact-router/adapters/aws-lambda\";\n\nconst here = dirname(fileURLToPath(import.meta.url));\n\nexport const handler = await createPreloadedAwsLambdaRequestHandler({\n importPolicy: \"generated\",\n outDir: resolve(here, ${JSON.stringify(outDirRelativeToHandler)}),\n preload: { mode: \"all\" },\n timings: process.env.MREACT_ROUTER_TIMINGS === \"1\",\n});\n`;\n}\n\nasync function validateProductionRoutes(options: {\n clientRouteInferenceCache: ClientRouteInferenceCache;\n files: Record<string, string>;\n project: ResolvedAppRouterProject;\n projectRoot: string;\n routes: readonly AppRoute[];\n sourceAnalysis: BuildSourceAnalysisScope;\n serverTransformCache: ServerTransformCache;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<void> {\n for (const route of options.routes) {\n if (route.kind !== \"page\") {\n continue;\n }\n\n const filename = relative(options.projectRoot, route.file);\n const analysis = options.sourceAnalysis.byRouteFile.get(filename.split(sep).join(\"/\"));\n\n if (analysis === undefined) {\n continue;\n }\n\n const output = await transformServerRouteSource({\n cache: options.serverTransformCache,\n code: analysis.routeCode,\n clientBoundaryImports: analysis.clientBoundaryImports,\n clientBoundaryFallbackImports: analysis.clientBoundaryFallbackImports,\n filename: route.file,\n moduleContextCache: options.clientRouteInferenceCache,\n serverOutput: analysis.streamRoute ? \"stream\" : \"string\",\n });\n const fatalDiagnostics = output.diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(\n fatalDiagnostics.map((diagnostic) => formatDiagnostic(route.file, diagnostic)).join(\"\\n\"),\n );\n }\n }\n}\n\nasync function collectBuildFiles(\n projectRoot: string,\n allowedSourceDirs: readonly string[],\n appDir: string,\n): Promise<Record<string, string>> {\n const files: Record<string, string> = {};\n\n for (const directory of allowedSourceDirs) {\n const sourceFiles = (await collectFiles(directory)).flatMap((file) => {\n const relativeFile = relative(projectRoot, file);\n\n if (\n relativeFile === \"\" ||\n relativeFile.startsWith(\"..\") ||\n relativeFile.startsWith(sep) ||\n isAppFileConventionAsset(file, appDir) ||\n isProductionBuildIgnoredSourceFile(relativeFile)\n ) {\n return [];\n }\n\n return [{ file, relativeFile }];\n });\n const fileContents = await mapWithBuildConcurrency(\n sourceFiles,\n async ({ file, relativeFile }) => [relativeFile, await readFile(file, \"utf8\")] as const,\n );\n\n for (const [relativeFile, source] of fileContents) {\n files[relativeFile] = source;\n }\n }\n\n return files;\n}\n\nfunction isProductionBuildIgnoredSourceFile(relativeFile: string): boolean {\n return (\n /(?:^|[/\\\\])__tests__(?:[/\\\\]|$)/u.test(relativeFile) ||\n /(?:^|[/\\\\])[^/\\\\]+\\.(?:spec|test)\\.[cm]?[jt]sx?$/u.test(relativeFile)\n );\n}\n\nfunction isAppFileConventionAsset(file: string, appDir: string): boolean {\n const relativeFile = relative(appDir, file);\n if (relativeFile === \"\" || relativeFile.startsWith(\"..\") || relativeFile.includes(sep)) {\n return false;\n }\n\n return appFileConventionForRootFilename(relativeFile)?.kind === \"asset\";\n}\n\nasync function collectFiles(directory: string): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true });\n const nestedFiles = await mapWithBuildConcurrency(entries, async (entry) => {\n const path = join(directory, entry.name);\n\n if (entry.isDirectory()) {\n return await collectFiles(path);\n }\n\n if (entry.isFile()) {\n return [path];\n }\n\n return [];\n });\n\n return nestedFiles.flat();\n}\n\nfunction hashText(text: string): string {\n return createHash(\"sha256\").update(text).digest(\"hex\").slice(0, 16);\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"]}
|