@reckona/mreact-router 0.0.74 → 0.0.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/build.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 { copyFile, cp, mkdir, readdir, readFile, rm, stat, writeFile } from \"node:fs/promises\";\nimport { builtinModules } from \"node:module\";\nimport { dirname, join, relative, sep } from \"node:path\";\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 buildClientRouteBatchOutput,\n buildNavigationRuntimeBundle,\n clientScriptForPath,\n compilerModuleContextForSource,\n collectClientRouteReferences,\n createClientRouteInferenceCache,\n detectClientNavigationHint,\n detectNavigationRuntimeHint,\n formatClientRouteInferenceDiagnostic,\n inferClientRouteModule,\n routeIdForPath,\n type BuildClientRouteOutputOptions,\n type ClientRouteManifestEntry,\n type ClientRouteInferenceCache,\n} from \"./client.js\";\nimport { bundleAppRouterSourceModule, importAppRouterSourceModule } from \"./module-runner.js\";\nimport { scanAppRoutes } from \"./routes.js\";\nimport type { AppRoute } from \"./routes.js\";\nimport {\n appFileConventionForRootFilename,\n} 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 type RouterCompatPlugin,\n} from \"./bundle-pipeline.js\";\nimport { collectRouteCssFiles } from \"./route-styles.js\";\nimport { existingRouteShellCandidates } from \"./route-shells.js\";\nimport { sourceModuleCandidates } from \"./source-modules.js\";\nimport { collectBuildInferredServerActions } from \"./server-action-inference.js\";\nimport { workspacePackageFile } from \"./workspace-packages.js\";\nimport type { PluginOption, UserConfig } from \"vite\";\n\nconst nativeEscapeTransform = {\n batchImportName: \"escapeHtmlBatch\",\n batchImportSource: \"@reckona/mreact-router/native-escape\",\n} as const;\n\nexport interface BuildAppOptions extends AppRouterProjectOptions {\n outDir: string;\n targets?: readonly AppRouterBuildTarget[] | undefined;\n viteConfig?: Pick<UserConfig, \"plugins\"> | undefined;\n}\n\nexport interface BuildAppResult {\n routes: AppRoute[];\n}\n\nexport interface BuiltImportPolicyArtifact {\n byRoute: Record<string, string[]>;\n runtimePackages: string[];\n version: 1;\n}\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\nexport interface PackageAwsLambdaArtifactOptions {\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 routesDir?: string;\n routeServerActionReferences?: Record<string, BuiltServerActionExpressionReference[]>;\n serverActionManifest?: BuiltServerActionReference[];\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 clientRoute: boolean;\n hasLoader: boolean;\n routeCode: string;\n routePath: string;\n sourceHash: string;\n streamRoute: boolean;\n usesRuntimeCacheControl: boolean;\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\nexport async function buildApp(options: BuildAppOptions): Promise<BuildAppResult> {\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 = await scanAppRoutes({ appDir: project.routesDir });\n const vitePlugins = options.viteConfig?.plugins;\n const files = await collectBuildFiles(\n project.projectRoot,\n project.allowedSourceDirs,\n project.routesDir,\n );\n const serverDir = join(options.outDir, \"server\");\n const clientDir = join(options.outDir, \"client\");\n const cloudflareDir = join(options.outDir, \"cloudflare\");\n\n await validateProductionRoutes({ files, projectRoot: project.projectRoot, routes });\n\n await rm(options.outDir, { force: true, recursive: true });\n await mkdir(serverDir, { recursive: true });\n await mkdir(clientDir, { recursive: true });\n if (shouldBuildCloudflare) {\n await mkdir(cloudflareDir, { recursive: true });\n }\n await mkdir(join(clientDir, \".vite\"), { recursive: true });\n await mkdir(join(clientDir, \"assets\", \"routes\"), { recursive: true });\n await copyPublicAssets(project.publicDir, join(clientDir, \"public\"));\n const appConventionPublicAssets = await copyAppFileConventionAssets(\n project.routesDir,\n clientDir,\n );\n await copyPublicAssets(project.publicDir, clientDir);\n const publicAssets = [\n ...new Set([...(await collectPublicAssetPaths(project.publicDir)), ...appConventionPublicAssets]),\n ].sort();\n\n const serverActionManifest = await collectBuildServerActionManifest({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n });\n const clientRouteInferenceCache = createClientRouteInferenceCache();\n const serverModules = await buildServerModuleArtifacts({\n clientRouteInferenceCache,\n files,\n prebundleServerComponents: buildTargets.includes(\"node\") || shouldBuildAwsLambda,\n project,\n projectRoot: project.projectRoot,\n routes,\n vitePlugins,\n });\n const generatedImportPolicy = buildGeneratedImportPolicy({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n });\n const serverModuleArtifacts = await writeServerModuleArtifactFiles(serverDir, serverModules);\n const serverRoutes = routes.map((route) => ({\n ...route,\n file: relative(project.projectRoot, route.file),\n }));\n const clientRoutes = await writeClientRouteBundles({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientDir,\n clientRouteInferenceCache,\n projectRoot: project.projectRoot,\n routes,\n sourceMapDir: join(options.outDir, \"source-maps\", \"client\"),\n sourceMaps: project.clientSourceMaps,\n vitePlugins,\n });\n const navigationRuntimeScript = clientRoutes.some(\n (route) => route.navigation === true && !route.client,\n )\n ? await writeNavigationRuntimeBundle(clientDir)\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 prerenderedRoutes = await prerenderStaticRoutes({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientRoutes: clientManifestRoutes,\n project,\n routes,\n serverModules,\n vitePlugins,\n });\n let cloudflareRouteModules: CloudflareRouteModulesOutput | undefined;\n if (shouldBuildCloudflare) {\n cloudflareRouteModules = await writeCloudflareRouteModules({\n cloudflareDir,\n files,\n prerenderedRoutes,\n projectRoot: project.projectRoot,\n routesDir: project.routesDir,\n routes,\n serverModules,\n vitePlugins,\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 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(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 ...(publicAssets.length === 0 ? {} : { publicAssets }),\n routes: clientManifestRoutes,\n };\n await writeFile(\n join(serverDir, \"manifest.json\"),\n JSON.stringify(serverManifest, null, 2),\n );\n await writeFile(\n join(serverDir, \"import-policy.json\"),\n JSON.stringify(generatedImportPolicy, null, 2),\n );\n await writeFile(\n join(clientDir, \"manifest.json\"),\n JSON.stringify(clientManifest, null, 2),\n );\n await writeFile(\n join(clientDir, \".vite\", \"manifest.json\"),\n JSON.stringify(viteManifestFromClientRoutes(clientManifestRoutes), null, 2),\n );\n if (shouldBuildAwsLambda) {\n await writeAwsLambdaHandlerArtifact(options.outDir);\n }\n if (shouldBuildCloudflare) {\n await writeCloudflareWorkerArtifact({\n cloudflareDir,\n clientManifest,\n modulesFile: cloudflareRouteModules?.registryFile ?? \"route-modules.mjs\",\n serverManifest,\n });\n }\n\n return { routes };\n}\n\nasync function writeServerModuleArtifactFiles(\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 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\n for (const [file, artifact] of Object.entries(serverModules)) {\n const externalized = await externalizeServerModuleArtifactCode(serverDir, artifact);\n const requestArtifact = requestServerModuleArtifact(externalized);\n const renderArtifact = renderServerModuleArtifact(externalized);\n\n await mkdir(modulesDir, { recursive: true });\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 mkdir(join(modulesDir, \"request\"), { recursive: true });\n await writeFile(join(serverDir, requestArtifactFile), requestJson);\n requestFiles[file] = requestArtifactFile;\n\n const renderJson = JSON.stringify(renderArtifact);\n const renderArtifactFile = `server-modules/render/${hashText(`${file}\\0render\\0${renderJson}`).slice(0, 16)}.json`;\n await mkdir(join(modulesDir, \"render\"), { recursive: true });\n await writeFile(join(serverDir, renderArtifactFile), renderJson);\n renderFiles[file] = renderArtifactFile;\n continue;\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 files[file] = artifactFile;\n }\n\n return { files, renderFiles, requestFiles };\n}\n\nasync function externalizeServerModuleArtifactCode(\n serverDir: string,\n artifact: BuiltServerModuleArtifact,\n): Promise<BuiltServerModuleArtifact> {\n return {\n ...(artifact.analysis === undefined ? {} : { analysis: artifact.analysis }),\n ...(artifact.loader === undefined\n ? {}\n : { loader: await externalizeServerModuleOutputCode(serverDir, artifact.loader, \"code\") }),\n ...(artifact.routeMetadata === undefined\n ? {}\n : {\n routeMetadata: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.routeMetadata,\n \"code\",\n ),\n }),\n ...(artifact.request === undefined\n ? {}\n : { request: await externalizeServerModuleOutputCode(serverDir, artifact.request, \"code\") }),\n ...(artifact.stream === undefined\n ? {}\n : { stream: await externalizeServerModuleOutputCode(serverDir, artifact.stream, \"bundle\") }),\n ...(artifact.string === undefined\n ? {}\n : { string: await externalizeServerModuleOutputCode(serverDir, artifact.string, \"bundle\") }),\n };\n}\n\nasync function externalizeServerModuleOutputCode(\n serverDir: string,\n output: BuiltServerModuleOutput,\n kind: \"bundle\" | \"code\",\n): Promise<BuiltServerModuleOutput> {\n const moduleCode = kind === \"bundle\" ? output.bundleCode : output.code;\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 mkdir(join(serverDir, \"server-modules\", \"code\"), { recursive: true });\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 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]);\n\nfunction buildGeneratedImportPolicy(options: {\n files: Record<string, string>;\n projectRoot: string;\n routes: readonly AppRoute[];\n routesDir: string;\n}): BuiltImportPolicyArtifact {\n const routePackages = new Map<string, string[]>();\n const allPackages = new Set<string>();\n const relativeRoutesDir = relative(options.projectRoot, options.routesDir);\n\n for (const route of options.routes) {\n const file = relative(options.projectRoot, route.file);\n const packages = collectRuntimePackagesForFile({\n file,\n files: options.files,\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 = collectRuntimePackagesForFile({\n file: middlewareFile,\n files: options.files,\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\nfunction collectRuntimePackagesForFile(options: {\n file: string;\n files: Record<string, string>;\n projectRoot: string;\n seen: Set<string>;\n}): 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 packages.add(runtimePackageNameForSpecifier(reference.source));\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 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\nfunction isRuntimePackageSpecifier(specifier: string): boolean {\n if (specifier.startsWith(\".\") || specifier.startsWith(\"/\") || /^[A-Za-z][A-Za-z0-9+.-]*:/.test(specifier)) {\n return false;\n }\n\n const packageName = runtimePackageNameForSpecifier(specifier);\n return !nodeBuiltinPackages.has(specifier) && !frameworkRuntimePackages.has(packageName);\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\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 const inference = await collectBuildInferredServerActionReferences({\n file,\n files: options.files,\n relativeRoutesDir,\n source: code,\n });\n\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\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 relativeRoutesDir === \"\" || file === relativeRoutesDir || file.startsWith(`${relativeRoutesDir}/`);\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 try {\n await cp(publicDir, outDir, { force: true, recursive: true });\n } catch (error) {\n if (isNodeError(error) && error.code === \"ENOENT\") {\n return;\n }\n\n throw error;\n }\n}\n\nasync function collectPublicAssetPaths(publicDir: string): Promise<string[]> {\n try {\n const info = await stat(publicDir);\n\n if (!info.isDirectory()) {\n return [];\n }\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 collectPublicAssetPathsInner(publicDir, \"\", paths);\n\n return paths.sort();\n}\n\nasync function copyAppFileConventionAssets(\n appDir: string,\n outDir: string,\n): 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(\"/\")\n ? convention.path.slice(1)\n : 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\n if (entry.isDirectory()) {\n await collectPublicAssetPathsInner(publicDir, relativePath, paths);\n continue;\n }\n\n if (entry.isFile()) {\n paths.push(`/${relativePath}`);\n }\n }\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 project: ResolvedAppRouterProject;\n routes: readonly AppRoute[];\n serverModules: Record<string, BuiltServerModuleArtifact>;\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 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\n for (const route of options.routes) {\n if (route.kind !== \"page\") {\n continue;\n }\n\n const source = await readFile(route.file, \"utf8\");\n\n if (!hasPrerenderExport(source)) {\n continue;\n }\n\n for (const pathname of await prerenderPathsForRoute(route, source, options.vitePlugins)) {\n const response = await renderAppRequest({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n clientScripts,\n importPolicy,\n request: new Request(`http://mreact.local${pathname}`),\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 prerendered[pathname] = {\n headers,\n html: await response.text(),\n status: response.status,\n };\n }\n }\n\n return prerendered;\n}\n\nasync function prerenderPathsForRoute(\n route: AppRoute,\n source: string,\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 (!hasGenerateStaticParamsExport(source)) {\n return [];\n }\n\n const module = await importAppRouterSourceModule<{\n generateStaticParams?: () => Iterable<StaticParams> | PromiseLike<Iterable<StaticParams>>;\n }>({\n code: 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 clientRouteInferenceCache: ClientRouteInferenceCache;\n files: Record<string, string>;\n prebundleServerComponents: boolean;\n project: ResolvedAppRouterProject;\n projectRoot: string;\n routes: readonly AppRoute[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Record<string, BuiltServerModuleArtifact>> {\n const routeByFile = new Map(\n options.routes.map((route) => [relative(options.projectRoot, route.file), route]),\n );\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, source] of Object.entries(options.files)) {\n const absoluteFile = join(options.projectRoot, file);\n const route = routeByFile.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\" && hasLoaderExport(source)) {\n loaderArtifactFiles.add(file);\n }\n\n if (hasMetadataExport(source)) {\n metadataArtifactFiles.add(file);\n }\n }\n\n for (const [file, source] of Object.entries(options.files)) {\n const absoluteFile = join(options.projectRoot, file);\n const route = routeByFile.get(file);\n const artifact: BuiltServerModuleArtifact = {};\n\n if (\n requestArtifactFiles.has(file) ||\n loaderArtifactFiles.has(file) ||\n metadataArtifactFiles.has(file)\n ) {\n if (loaderArtifactFiles.has(file)) {\n const code = await bundleRouteLoaderModuleCode({\n appDir: options.project.routesDir,\n code: stripRouteLoaderOnlyExports(source),\n filename: absoluteFile,\n importPolicy: requestModuleImportPolicy,\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 = await bundleRouteMetadataModuleCode({\n appDir: options.project.routesDir,\n code: stripRouteMetadataOnlyExports(source),\n filename: absoluteFile,\n importPolicy: requestModuleImportPolicy,\n vitePlugins: options.vitePlugins,\n });\n artifact.routeMetadata = {\n code,\n sourceHash: hashText(source),\n };\n }\n\n if (requestArtifactFiles.has(file)) {\n artifact.request = {\n code: await buildRequestModuleArtifactCode({\n appDir: options.project.routesDir,\n filename: absoluteFile,\n importPolicy: requestModuleImportPolicy,\n routeKind: route?.kind,\n source,\n vitePlugins: options.vitePlugins,\n }),\n sourceHash: hashText(source),\n };\n }\n }\n\n if (!isServerComponentFile(file)) {\n if (Object.keys(artifact).length > 0) {\n artifacts[file] = artifact;\n }\n continue;\n }\n\n const closureUsesAwait = 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 = route === undefined ? source : stripRouteBuildExports(source);\n const clientInference = await inferClientRouteModule({\n ...(route === undefined ? {} : { appDir: options.project.routesDir }),\n cache: options.clientRouteInferenceCache,\n code:\n route === undefined\n ? stripRouteClientOnlyExports(source)\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 const clientBoundaryImports = clientInference.clientBoundaryImports;\n\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n if (route?.kind === \"page\") {\n artifact.analysis = builtRouteSourceAnalysisSummary({\n clientBoundaryImports,\n clientRoute: clientInference.client,\n route,\n routeCode: code,\n source,\n streamRoute,\n });\n }\n\n for (const serverOutput of serverOutputs) {\n const output = transform({\n code,\n clientBoundaryImports,\n dev: false,\n filename: join(options.projectRoot, file),\n serverEscape: nativeEscapeTransform,\n 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 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 continue;\n }\n\n throw new Error(\n fatalDiagnostics.map((diagnostic) => formatDiagnostic(file, diagnostic)).join(\"\\n\"),\n );\n }\n\n artifact[serverOutput] = {\n ...(options.prebundleServerComponents\n ? {\n bundleCode: await buildServerComponentBundleArtifactCode({\n clientRouteInferenceCache: options.clientRouteInferenceCache,\n code: output.code,\n filename: absoluteFile,\n serverOutput,\n vitePlugins: options.vitePlugins,\n }),\n }\n : {}),\n code: output.code,\n metadata: output.metadata,\n sourceHash: hashText(code),\n };\n }\n\n artifacts[file] = artifact;\n }\n\n return artifacts;\n}\n\nasync function buildServerComponentBundleArtifactCode(options: {\n clientRouteInferenceCache: ClientRouteInferenceCache;\n code: string;\n filename: string;\n serverOutput: ServerOutputMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return await bundleAppRouterSourceModule({\n code: options.code,\n label: `server-component:${options.filename}`,\n resolveDir: dirname(options.filename),\n serverSourceTransform: {\n clientRouteInferenceCache: options.clientRouteInferenceCache,\n dev: false,\n serverOutput: options.serverOutput,\n vitePlugins: options.vitePlugins,\n },\n sourcefile: options.filename,\n vitePlugins: options.vitePlugins,\n });\n}\n\nfunction builtRouteSourceAnalysisSummary(options: {\n clientBoundaryImports: readonly string[];\n clientRoute: boolean;\n route: AppRoute;\n routeCode: string;\n source: string;\n streamRoute: boolean;\n}): BuiltRouteSourceAnalysisSummary {\n const cachePolicy = routeCachePolicyFromSource(options.source);\n\n return {\n authIncludesClaims: authIncludesClaims(options.source),\n ...(cachePolicy === undefined ? {} : { cachePolicy }),\n clientBoundaryImports: options.clientBoundaryImports,\n clientRoute: options.clientRoute,\n hasLoader: hasLoaderExport(options.source),\n routeCode: options.routeCode,\n routePath: options.route.path,\n sourceHash: hashText(options.source),\n streamRoute: options.streamRoute,\n usesRuntimeCacheControl: usesRuntimeCacheControl(options.source),\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(options.source) ||\n routeClosureMayUseAwaitBoundary({\n filename: options.filename,\n files: options.files,\n projectRoot: options.projectRoot,\n source: options.source,\n })\n );\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 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 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 file: options.filename,\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 label: `server-route:${options.filename}`,\n resolveDir: dirname(options.filename),\n sourcefile: options.filename,\n vitePlugins: options.vitePlugins,\n });\n }\n\n return await bundleRouteLoaderModuleCode({\n appDir: options.appDir,\n code: stripRouteRequestOnlyExports(options.source),\n filename: options.filename,\n importPolicy: options.importPolicy,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function bundleRouteLoaderModuleCode(options: {\n appDir: string;\n code: string;\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 bundleRouteMetadataModuleCode(options: {\n appDir: string;\n code: string;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return await bundleRouteRequestModuleCode({\n ...options,\n label: \"Metadata\",\n });\n}\n\nasync function bundleRouteRequestModuleCode(options: {\n appDir: string;\n code: string;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n label: \"Loader\" | \"Metadata\";\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: options.code,\n filename: options.filename,\n platform: \"node\",\n vitePlugins: options.vitePlugins,\n plugins: [\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\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 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 /\\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\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\nasync function writeCloudflareRouteModules(options: {\n cloudflareDir: string;\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 vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareRouteModulesOutput> {\n const routesDir = join(options.cloudflareDir, \"routes\");\n const requiredRoutes = options.routes.filter((route) =>\n cloudflareRouteRequiresGeneratedModule(route, options.prerenderedRoutes),\n );\n const registryEntries: string[] = [];\n\n await mkdir(routesDir, { recursive: true });\n\n for (const route of requiredRoutes) {\n const routeFile = relative(options.projectRoot, route.file).replaceAll(sep, \"/\");\n const source = await readFile(route.file, \"utf8\");\n const routeId = routeIdForPath(route.path);\n const routeModuleFile = `routes/${routeId}.mjs`;\n let routeModuleExports: string[];\n\n if (route.kind === \"server\" || route.kind === \"metadata\") {\n try {\n const routeOutput = await buildCloudflareServerRouteModule({\n filename: route.file,\n vitePlugins: options.vitePlugins,\n });\n const serverRouteFile = `routes/${routeId}.${hashText(routeOutput).slice(0, 8)}.server.mjs`;\n\n await writeFile(join(options.cloudflareDir, serverRouteFile), routeOutput);\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(join(options.cloudflareDir, routeModuleFile), `${routeModuleExports.join(\"\\n\")}\\n`);\n registryEntries.push(\n `${JSON.stringify(routeFile)}: () => import(${JSON.stringify(`./${routeModuleFile}`)})`,\n );\n continue;\n }\n\n const serverOutput =\n options.serverModules[routeFile]?.analysis?.streamRoute === true ||\n shouldBuildRouteAsStream({\n filename: routeFile,\n files: options.files,\n projectRoot: options.projectRoot,\n source,\n })\n ? \"stream\"\n : \"string\";\n\n try {\n const componentOutput =\n serverOutput === \"stream\"\n ? await buildCloudflareStreamRouteComponentModule({\n filename: route.file,\n projectRoot: options.projectRoot,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n })\n : await buildCloudflareStringRouteComponentModule({\n filename: route.file,\n projectRoot: options.projectRoot,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n });\n const componentFile = `routes/${routeId}.${hashText(componentOutput).slice(0, 8)}.component.mjs`;\n\n await writeFile(join(options.cloudflareDir, componentFile), componentOutput);\n\n const componentImport = `./${componentFile.split(\"/\").pop() ?? componentFile}`;\n routeModuleExports = [\n `export { default, App, slots } from ${JSON.stringify(componentImport)};`,\n ];\n } catch (error) {\n throw new Error(\n `Failed to build Cloudflare route module for ${routeFile}: ${errorMessage(error)}`,\n );\n }\n\n if (hasLoaderExport(source)) {\n try {\n const loaderOutput = await buildCloudflareRouteLoaderModule({\n filename: route.file,\n projectRoot: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const loaderFile = `routes/${routeId}.${hashText(loaderOutput).slice(0, 8)}.loader.mjs`;\n\n await writeFile(join(options.cloudflareDir, loaderFile), loaderOutput);\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(join(options.cloudflareDir, routeModuleFile), `${routeModuleExports.join(\"\\n\")}\\n`);\n registryEntries.push(\n `${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\ninterface CloudflareShellFile {\n file: string;\n id: string;\n kind: \"layout\" | \"template\";\n}\n\nasync function buildCloudflareServerComponentModule(options: {\n filename: string;\n projectRoot: string;\n serverOutput: ServerOutputMode;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const metadataModule = await buildCloudflareRouteMetadataExportModule({\n filename: options.filename,\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 filename: `${options.filename}.mreact-cloudflare-component.js`,\n modules: metadataModule === undefined\n ? new Map()\n : 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 vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareStringRouteComponentModule(options: {\n filename: string;\n projectRoot: string;\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\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 filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n vitePlugins: options.vitePlugins,\n });\n }\n\n const pageModule = await buildCloudflareComponentExportModule({\n filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n vitePlugins: options.vitePlugins,\n });\n const shellModules = await Promise.all(\n shellFiles.map((shell) =>\n buildCloudflareComponentExportModule({\n filename: shell.file,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n vitePlugins: options.vitePlugins,\n }),\n ),\n );\n const shellImports = shellFiles.map((_, index) => `import * as shell${index} from \"mreact:shell-${index}\";`);\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 const App = renderCloudflareStringRoute;\nexport default renderCloudflareStringRoute;\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 += 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: {\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 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 vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareStreamRouteComponentModule(options: {\n filename: string;\n projectRoot: string;\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const pageModule = await buildCloudflareComponentExportModule({\n filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"stream\",\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 filename: shell.file,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n vitePlugins: options.vitePlugins,\n }),\n ),\n );\n const shellImports = shellFiles.map((_, index) => `import * as shell${index} from \"mreact:shell-${index}\";`);\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\nfunction renderCloudflareStreamRoute(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 metadata = await resolveRouteMetadata([...shells.map((shell) => shell.module), pageModule], props);\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 await pageComponent($sink, props);\n renderOutOfOrderReorderScript($sink);\n for (const shell of [...layoutShells].reverse()) {\n $sink.append(shell.suffix);\n }\n });\n return new Response(body, {\n headers: {\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 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 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\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 = module.metadata;\n if (typeof module.generateMetadata === \"function\") {\n const generated = await module.generateMetadata(context);\n next = mergeRouteMetadata([next, generated].filter(Boolean));\n }\n if (next !== undefined) {\n metadata.push(next);\n }\n }\n return mergeRouteMetadata(metadata);\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(\"&\", \"&amp;\")\n .replaceAll('\"', \"&quot;\")\n .replaceAll(\"<\", \"&lt;\");\n}\n\nfunction escapeHtml(value) {\n return String(value ?? \"\")\n .replaceAll(\"&\", \"&amp;\")\n .replaceAll(\"<\", \"&lt;\")\n .replaceAll(\">\", \"&gt;\");\n}`;\n}\n\nasync function buildCloudflareComponentExportModule(options: {\n filename: string;\n projectRoot: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n serverOutput: ServerOutputMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const metadataModule = await buildCloudflareRouteMetadataExportModule({\n filename: options.filename,\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 filename: `${options.filename}.mreact-cloudflare-${options.serverOutput}-component.js`,\n modules: metadataModule === undefined\n ? new Map()\n : 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 vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareRouteLoaderModule(options: {\n filename: string;\n projectRoot: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const entry = `export { loader } from ${JSON.stringify(options.filename)};`;\n\n return bundleCloudflareModule({\n entry,\n filename: `${options.filename}.mreact-cloudflare-loader.js`,\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareRouteMetadataExportModule(options: {\n filename: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string | undefined> {\n const source = await readFile(options.filename, \"utf8\");\n\n if (!hasMetadataExport(source)) {\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 filename: `${options.filename}.mreact-cloudflare-metadata.js`,\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareServerRouteModule(options: {\n filename: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const entry = `import * as routeModule from ${JSON.stringify(options.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 return bundleCloudflareModule({\n entry,\n filename: `${options.filename}.mreact-cloudflare-server-route.js`,\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function bundleCloudflareModule(options: {\n entry: string;\n filename: string;\n plugins: RouterCompatPlugin[];\n resolveDir: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: options.entry,\n filename: options.filename,\n minify: true,\n platform: \"browser\",\n preserveExports: true,\n plugins: options.plugins,\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 entry: string;\n filename: string;\n modules: ReadonlyMap<string, string>;\n plugins: RouterCompatPlugin[];\n resolveDir: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return bundleCloudflareModule({\n entry: options.entry,\n filename: options.filename,\n plugins: [\n {\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 contents = options.modules.get(args.path);\n\n if (contents === undefined) {\n throw new Error(`Missing virtual Cloudflare module ${args.path}.`);\n }\n\n return {\n contents,\n loader: \"js\",\n resolveDir: options.resolveDir,\n };\n });\n },\n },\n ...options.plugins,\n ],\n resolveDir: options.resolveDir,\n vitePlugins: options.vitePlugins,\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) ? stripRouteBuildExports(source) : 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 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.map((diagnostic) => formatDiagnostic(options.filename, diagnostic)).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 [\"@reckona/mreact-compat/flight\", packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"flight\")],\n [\"@reckona/mreact-compat/internal\", packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"internal\")],\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 [\"@reckona/mreact-compat/scheduler\", packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"scheduler\")],\n [\"@reckona/mreact-query\", packageFile(\"query\", \"@reckona/mreact-query\", \"index\")],\n [\"@reckona/mreact-reactive-core\", packageFile(\"reactive-core\", \"@reckona/mreact-reactive-core\", \"index\")],\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({ filter: /^@reckona\\/mreact-router\\/(?:internal\\/)?native-escape$/ }, () => ({\n namespace: \"mreact-cloudflare-native-escape\",\n path: \"native-escape\",\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({ filter: /^native-escape$/, namespace: \"mreact-cloudflare-native-escape\" }, () => ({\n contents: `function escapeHtml(value) {\n return String(value ?? \"\").replace(/[&<>\"']/g, (char) =>\n char === \"&\" ? \"&amp;\" : char === \"<\" ? \"&lt;\" : char === \">\" ? \"&gt;\" : char === '\"' ? \"&quot;\" : \"&#39;\"\n );\n}\nexport function escapeHtmlBatch(values) {\n return values.map(escapeHtml);\n}`,\n loader: \"js\",\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 } from ${JSON.stringify(routerNavigationPath)};\nexport { getServerRuntimeState } from ${JSON.stringify(routerRuntimeStatePath)};`,\n loader: \"js\",\n resolveDir: dirname(routerNavigationPath),\n }));\n buildApi.onLoad({ filter: /(?:^|[/\\\\])packages[/\\\\]server[/\\\\](?:src|dist)[/\\\\]native-flight\\.[jt]s$/ }, () => ({\n contents: `export function getNativeFlight() {\n return undefined;\n}`,\n loader: \"js\",\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\nasync function writeClientRouteBundles(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n clientDir: string;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n projectRoot: string;\n routes: readonly AppRoute[];\n sourceMapDir: string;\n sourceMaps: AppRouterClientSourceMapMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<ClientRouteManifestEntry[]> {\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 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 = await writeRouteCssAssets({\n appDir: options.appDir,\n clientDir: options.clientDir,\n pageFile: route.file,\n projectRoot: options.projectRoot,\n routeId: routeIdForPath(route.path),\n vitePlugins: options.vitePlugins,\n });\n const source = await readFile(route.file, \"utf8\");\n const clientSource = stripRouteClientSource({ code: source, filename: route.file });\n const navigation = detectNavigationRuntimeHint(source);\n const references = await collectClientRouteReferences({\n appDir: options.appDir,\n cache: options.clientRouteInferenceCache,\n code: clientSource,\n filename: route.file,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of references.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\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 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 entries.flatMap((entry) => (\"manifest\" in entry ? [entry.manifest] : []));\n }\n\n let output: Awaited<ReturnType<typeof buildClientRouteBatchOutput>>;\n\n try {\n output = await buildClientRouteBatchOutput({\n assetBaseUrl: options.assetBaseUrl,\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((entry) => `Failed to build client bundle for ${entry.route.path} (${entry.route.file}).`)\n .join(\"\\n\");\n\n throw new Error(`${routeContexts}\\nFailed to build client route bundles.\\n${errorMessage(error)}`, {\n cause: error,\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\"\n ? asset.source\n : 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 return 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.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\nasync function writeRouteCssAssets(options: {\n appDir: string;\n clientDir: string;\n pageFile: string;\n projectRoot: string;\n routeId: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string[]> {\n const cssFiles = await collectRouteCssFiles({\n appDir: options.appDir,\n pageFile: options.pageFile,\n projectRoot: options.projectRoot,\n });\n\n if (cssFiles.length === 0) {\n return [];\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 code,\n filename: options.pageFile,\n minify: true,\n platform: \"browser\",\n vitePlugins: options.vitePlugins,\n });\n const cssAssets = (output.assets ?? []).filter((asset) => asset.fileName.endsWith(\".css\"));\n const written: string[] = [];\n\n for (const asset of cssAssets) {\n const source =\n typeof asset.source === \"string\"\n ? asset.source\n : Buffer.from(asset.source).toString(\"utf8\");\n const hash = createHash(\"sha256\").update(source).digest(\"hex\").slice(0, 8);\n const cssFile = `assets/routes/${options.routeId}.${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 return written;\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(clientDir: string): Promise<string> {\n const output = await buildNavigationRuntimeBundle({\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\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 await writeFile(join(options.outDir, \"mreact-handler.mjs\"), awsLambdaHandlerSource(\".mreact\"));\n\n const files = await collectAwsLambdaArtifactFiles(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 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\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 collectAwsLambdaArtifactFiles(\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 collectAwsLambdaArtifactFiles(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((left, right) => right.bytes - left.bytes || left.path.localeCompare(right.path));\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 timings: process.env.MREACT_ROUTER_TIMINGS === \"1\",\n});\n`;\n}\n\nasync function validateProductionRoutes(options: {\n files: Record<string, string>;\n projectRoot: string;\n routes: readonly AppRoute[];\n}): Promise<void> {\n for (const route of options.routes) {\n if (route.kind !== \"page\") {\n continue;\n }\n\n const source = await readFile(route.file, \"utf8\");\n const filename = relative(options.projectRoot, route.file);\n const output = transform({\n code: stripRouteBuildExports(source),\n dev: false,\n filename: route.file,\n serverEscape: nativeEscapeTransform,\n serverOutput: shouldBuildRouteAsStream({\n filename,\n files: options.files,\n projectRoot: options.projectRoot,\n source,\n })\n ? \"stream\"\n : \"string\",\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.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 for (const file of await collectFiles(directory)) {\n if (isAppFileConventionAsset(file, appDir)) {\n continue;\n }\n\n const relativeFile = relative(projectRoot, file);\n\n if (relativeFile === \"\" || relativeFile.startsWith(\"..\") || relativeFile.startsWith(sep)) {\n continue;\n }\n\n files[relativeFile] = await readFile(file, \"utf8\");\n }\n }\n\n return files;\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 files: string[] = [];\n\n for (const entry of entries) {\n const path = join(directory, entry.name);\n\n if (entry.isDirectory()) {\n files.push(...(await collectFiles(path)));\n continue;\n }\n\n if (entry.isFile()) {\n files.push(path);\n }\n }\n\n return files;\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 { copyFile, cp, mkdir, readdir, readFile, rm, stat, writeFile } from \"node:fs/promises\";\nimport { builtinModules } from \"node:module\";\nimport { dirname, join, relative, sep } from \"node:path\";\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 buildClientRouteBatchOutput,\n buildNavigationRuntimeBundle,\n clientScriptForPath,\n compilerModuleContextForSource,\n collectClientRouteReferences,\n createClientRouteInferenceCache,\n detectClientNavigationHint,\n detectNavigationRuntimeHint,\n formatClientRouteInferenceDiagnostic,\n inferClientRouteModule,\n routeIdForPath,\n type BuildClientRouteOutputOptions,\n type ClientRouteManifestEntry,\n type ClientRouteInferenceCache,\n} from \"./client.js\";\nimport { bundleAppRouterSourceModule, importAppRouterSourceModule } from \"./module-runner.js\";\nimport { scanAppRoutes } from \"./routes.js\";\nimport type { AppRoute } from \"./routes.js\";\nimport {\n appFileConventionForRootFilename,\n} 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 type RouterCompatPlugin,\n} from \"./bundle-pipeline.js\";\nimport { collectRouteCssFiles } from \"./route-styles.js\";\nimport { existingRouteShellCandidates } from \"./route-shells.js\";\nimport { sourceModuleCandidates } from \"./source-modules.js\";\nimport { collectBuildInferredServerActions } from \"./server-action-inference.js\";\nimport { workspacePackageFile } from \"./workspace-packages.js\";\nimport type { PluginOption, UserConfig } from \"vite\";\n\nconst nativeEscapeTransform = {\n batchImportName: \"escapeHtmlBatch\",\n batchImportSource: \"@reckona/mreact-router/native-escape\",\n} as const;\n\nexport interface BuildAppOptions extends AppRouterProjectOptions {\n outDir: string;\n targets?: readonly AppRouterBuildTarget[] | undefined;\n viteConfig?: Pick<UserConfig, \"plugins\"> | undefined;\n}\n\nexport interface BuildAppResult {\n routes: AppRoute[];\n}\n\nexport interface BuiltImportPolicyArtifact {\n byRoute: Record<string, string[]>;\n runtimePackages: string[];\n version: 1;\n}\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\nexport interface PackageAwsLambdaArtifactOptions {\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 routesDir?: string;\n routeServerActionReferences?: Record<string, BuiltServerActionExpressionReference[]>;\n serverActionManifest?: BuiltServerActionReference[];\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 clientRoute: boolean;\n hasLoader: boolean;\n routeCode: string;\n routePath: string;\n sourceHash: string;\n streamRoute: boolean;\n usesRuntimeCacheControl: boolean;\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\nexport async function buildApp(options: BuildAppOptions): Promise<BuildAppResult> {\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 = await scanAppRoutes({ appDir: project.routesDir });\n const vitePlugins = options.viteConfig?.plugins;\n const files = await collectBuildFiles(\n project.projectRoot,\n project.allowedSourceDirs,\n project.routesDir,\n );\n const serverDir = join(options.outDir, \"server\");\n const clientDir = join(options.outDir, \"client\");\n const cloudflareDir = join(options.outDir, \"cloudflare\");\n\n await validateProductionRoutes({ files, projectRoot: project.projectRoot, routes });\n\n await rm(options.outDir, { force: true, recursive: true });\n await mkdir(serverDir, { recursive: true });\n await mkdir(clientDir, { recursive: true });\n if (shouldBuildCloudflare) {\n await mkdir(cloudflareDir, { recursive: true });\n }\n await mkdir(join(clientDir, \".vite\"), { recursive: true });\n await mkdir(join(clientDir, \"assets\", \"routes\"), { recursive: true });\n await copyPublicAssets(project.publicDir, join(clientDir, \"public\"));\n const appConventionPublicAssets = await copyAppFileConventionAssets(\n project.routesDir,\n clientDir,\n );\n await copyPublicAssets(project.publicDir, clientDir);\n const publicAssets = [\n ...new Set([...(await collectPublicAssetPaths(project.publicDir)), ...appConventionPublicAssets]),\n ].sort();\n\n const serverActionManifest = await collectBuildServerActionManifest({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n });\n const clientRouteInferenceCache = createClientRouteInferenceCache();\n const serverModules = await buildServerModuleArtifacts({\n clientRouteInferenceCache,\n files,\n prebundleServerComponents: buildTargets.includes(\"node\") || shouldBuildAwsLambda,\n project,\n projectRoot: project.projectRoot,\n routes,\n vitePlugins,\n });\n const generatedImportPolicy = await buildGeneratedImportPolicy({\n files,\n projectRoot: project.projectRoot,\n routes,\n routesDir: project.routesDir,\n });\n const serverModuleArtifacts = await writeServerModuleArtifactFiles(serverDir, serverModules);\n const serverRoutes = routes.map((route) => ({\n ...route,\n file: relative(project.projectRoot, route.file),\n }));\n const clientRoutes = await writeClientRouteBundles({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientDir,\n clientRouteInferenceCache,\n projectRoot: project.projectRoot,\n routes,\n sourceMapDir: join(options.outDir, \"source-maps\", \"client\"),\n sourceMaps: project.clientSourceMaps,\n vitePlugins,\n });\n const navigationRuntimeScript = clientRoutes.some(\n (route) => route.navigation === true && !route.client,\n )\n ? await writeNavigationRuntimeBundle(clientDir)\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 prerenderedRoutes = await prerenderStaticRoutes({\n appDir: project.routesDir,\n assetBaseUrl: project.assetBaseUrl,\n clientRoutes: clientManifestRoutes,\n project,\n routes,\n serverModules,\n vitePlugins,\n });\n let cloudflareRouteModules: CloudflareRouteModulesOutput | undefined;\n if (shouldBuildCloudflare) {\n cloudflareRouteModules = await writeCloudflareRouteModules({\n cloudflareDir,\n files,\n prerenderedRoutes,\n projectRoot: project.projectRoot,\n routesDir: project.routesDir,\n routes,\n serverModules,\n vitePlugins,\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 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(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 ...(publicAssets.length === 0 ? {} : { publicAssets }),\n routes: clientManifestRoutes,\n };\n await writeFile(\n join(serverDir, \"manifest.json\"),\n JSON.stringify(serverManifest, null, 2),\n );\n await writeFile(\n join(serverDir, \"import-policy.json\"),\n JSON.stringify(generatedImportPolicy, null, 2),\n );\n await writeFile(\n join(clientDir, \"manifest.json\"),\n JSON.stringify(clientManifest, null, 2),\n );\n await writeFile(\n join(clientDir, \".vite\", \"manifest.json\"),\n JSON.stringify(viteManifestFromClientRoutes(clientManifestRoutes), null, 2),\n );\n if (shouldBuildAwsLambda) {\n await writeAwsLambdaHandlerArtifact(options.outDir);\n }\n if (shouldBuildCloudflare) {\n await writeCloudflareWorkerArtifact({\n cloudflareDir,\n clientManifest,\n modulesFile: cloudflareRouteModules?.registryFile ?? \"route-modules.mjs\",\n serverManifest,\n });\n }\n\n return { routes };\n}\n\nasync function writeServerModuleArtifactFiles(\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 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\n for (const [file, artifact] of Object.entries(serverModules)) {\n const externalized = await externalizeServerModuleArtifactCode(serverDir, artifact);\n const requestArtifact = requestServerModuleArtifact(externalized);\n const renderArtifact = renderServerModuleArtifact(externalized);\n\n await mkdir(modulesDir, { recursive: true });\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 mkdir(join(modulesDir, \"request\"), { recursive: true });\n await writeFile(join(serverDir, requestArtifactFile), requestJson);\n requestFiles[file] = requestArtifactFile;\n\n const renderJson = JSON.stringify(renderArtifact);\n const renderArtifactFile = `server-modules/render/${hashText(`${file}\\0render\\0${renderJson}`).slice(0, 16)}.json`;\n await mkdir(join(modulesDir, \"render\"), { recursive: true });\n await writeFile(join(serverDir, renderArtifactFile), renderJson);\n renderFiles[file] = renderArtifactFile;\n continue;\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 files[file] = artifactFile;\n }\n\n return { files, renderFiles, requestFiles };\n}\n\nasync function externalizeServerModuleArtifactCode(\n serverDir: string,\n artifact: BuiltServerModuleArtifact,\n): Promise<BuiltServerModuleArtifact> {\n return {\n ...(artifact.analysis === undefined ? {} : { analysis: artifact.analysis }),\n ...(artifact.loader === undefined\n ? {}\n : { loader: await externalizeServerModuleOutputCode(serverDir, artifact.loader, \"code\") }),\n ...(artifact.routeMetadata === undefined\n ? {}\n : {\n routeMetadata: await externalizeServerModuleOutputCode(\n serverDir,\n artifact.routeMetadata,\n \"code\",\n ),\n }),\n ...(artifact.request === undefined\n ? {}\n : { request: await externalizeServerModuleOutputCode(serverDir, artifact.request, \"code\") }),\n ...(artifact.stream === undefined\n ? {}\n : { stream: await externalizeServerModuleOutputCode(serverDir, artifact.stream, \"bundle\") }),\n ...(artifact.string === undefined\n ? {}\n : { string: await externalizeServerModuleOutputCode(serverDir, artifact.string, \"bundle\") }),\n };\n}\n\nasync function externalizeServerModuleOutputCode(\n serverDir: string,\n output: BuiltServerModuleOutput,\n kind: \"bundle\" | \"code\",\n): Promise<BuiltServerModuleOutput> {\n const moduleCode = kind === \"bundle\" ? output.bundleCode : output.code;\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 mkdir(join(serverDir, \"server-modules\", \"code\"), { recursive: true });\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 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\n for (let index = 0; index < queue.length && seenPackageJson.size < maxRuntimePackageManifestReads; index += 1) {\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 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 (specifier.startsWith(\".\") || specifier.startsWith(\"/\") || /^[A-Za-z][A-Za-z0-9+.-]*:/.test(specifier)) {\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\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 const inference = await collectBuildInferredServerActionReferences({\n file,\n files: options.files,\n relativeRoutesDir,\n source: code,\n });\n\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\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 relativeRoutesDir === \"\" || file === relativeRoutesDir || file.startsWith(`${relativeRoutesDir}/`);\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 try {\n await cp(publicDir, outDir, { force: true, recursive: true });\n } catch (error) {\n if (isNodeError(error) && error.code === \"ENOENT\") {\n return;\n }\n\n throw error;\n }\n}\n\nasync function collectPublicAssetPaths(publicDir: string): Promise<string[]> {\n try {\n const info = await stat(publicDir);\n\n if (!info.isDirectory()) {\n return [];\n }\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 collectPublicAssetPathsInner(publicDir, \"\", paths);\n\n return paths.sort();\n}\n\nasync function copyAppFileConventionAssets(\n appDir: string,\n outDir: string,\n): 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(\"/\")\n ? convention.path.slice(1)\n : 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\n if (entry.isDirectory()) {\n await collectPublicAssetPathsInner(publicDir, relativePath, paths);\n continue;\n }\n\n if (entry.isFile()) {\n paths.push(`/${relativePath}`);\n }\n }\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 project: ResolvedAppRouterProject;\n routes: readonly AppRoute[];\n serverModules: Record<string, BuiltServerModuleArtifact>;\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 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\n for (const route of options.routes) {\n if (route.kind !== \"page\") {\n continue;\n }\n\n const source = await readFile(route.file, \"utf8\");\n\n if (!hasPrerenderExport(source)) {\n continue;\n }\n\n for (const pathname of await prerenderPathsForRoute(route, source, options.vitePlugins)) {\n const response = await renderAppRequest({\n appDir: options.appDir,\n assetBaseUrl: options.assetBaseUrl,\n clientScripts,\n importPolicy,\n request: new Request(`http://mreact.local${pathname}`),\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 prerendered[pathname] = {\n headers,\n html: await response.text(),\n status: response.status,\n };\n }\n }\n\n return prerendered;\n}\n\nasync function prerenderPathsForRoute(\n route: AppRoute,\n source: string,\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 (!hasGenerateStaticParamsExport(source)) {\n return [];\n }\n\n const module = await importAppRouterSourceModule<{\n generateStaticParams?: () => Iterable<StaticParams> | PromiseLike<Iterable<StaticParams>>;\n }>({\n code: 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 clientRouteInferenceCache: ClientRouteInferenceCache;\n files: Record<string, string>;\n prebundleServerComponents: boolean;\n project: ResolvedAppRouterProject;\n projectRoot: string;\n routes: readonly AppRoute[];\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<Record<string, BuiltServerModuleArtifact>> {\n const routeByFile = new Map(\n options.routes.map((route) => [relative(options.projectRoot, route.file), route]),\n );\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, source] of Object.entries(options.files)) {\n const absoluteFile = join(options.projectRoot, file);\n const route = routeByFile.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\" && hasLoaderExport(source)) {\n loaderArtifactFiles.add(file);\n }\n\n if (hasMetadataExport(source)) {\n metadataArtifactFiles.add(file);\n }\n }\n\n for (const [file, source] of Object.entries(options.files)) {\n const absoluteFile = join(options.projectRoot, file);\n const route = routeByFile.get(file);\n const artifact: BuiltServerModuleArtifact = {};\n\n if (\n requestArtifactFiles.has(file) ||\n loaderArtifactFiles.has(file) ||\n metadataArtifactFiles.has(file)\n ) {\n if (loaderArtifactFiles.has(file)) {\n const code = await bundleRouteLoaderModuleCode({\n appDir: options.project.routesDir,\n code: stripRouteLoaderOnlyExports(source),\n filename: absoluteFile,\n importPolicy: requestModuleImportPolicy,\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 = await bundleRouteMetadataModuleCode({\n appDir: options.project.routesDir,\n code: stripRouteMetadataOnlyExports(source),\n filename: absoluteFile,\n importPolicy: requestModuleImportPolicy,\n vitePlugins: options.vitePlugins,\n });\n artifact.routeMetadata = {\n code,\n sourceHash: hashText(source),\n };\n }\n\n if (requestArtifactFiles.has(file)) {\n artifact.request = {\n code: await buildRequestModuleArtifactCode({\n appDir: options.project.routesDir,\n filename: absoluteFile,\n importPolicy: requestModuleImportPolicy,\n routeKind: route?.kind,\n source,\n vitePlugins: options.vitePlugins,\n }),\n sourceHash: hashText(source),\n };\n }\n }\n\n if (!isServerComponentFile(file)) {\n if (Object.keys(artifact).length > 0) {\n artifacts[file] = artifact;\n }\n continue;\n }\n\n const closureUsesAwait = 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 = route === undefined ? source : stripRouteBuildExports(source);\n const clientInference = await inferClientRouteModule({\n ...(route === undefined ? {} : { appDir: options.project.routesDir }),\n cache: options.clientRouteInferenceCache,\n code:\n route === undefined\n ? stripRouteClientOnlyExports(source)\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 const clientBoundaryImports = clientInference.clientBoundaryImports;\n\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n if (route?.kind === \"page\") {\n artifact.analysis = builtRouteSourceAnalysisSummary({\n clientBoundaryImports,\n clientRoute: clientInference.client,\n route,\n routeCode: code,\n source,\n streamRoute,\n });\n }\n\n for (const serverOutput of serverOutputs) {\n const output = transform({\n code,\n clientBoundaryImports,\n dev: false,\n filename: join(options.projectRoot, file),\n serverEscape: nativeEscapeTransform,\n 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 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 continue;\n }\n\n throw new Error(\n fatalDiagnostics.map((diagnostic) => formatDiagnostic(file, diagnostic)).join(\"\\n\"),\n );\n }\n\n artifact[serverOutput] = {\n ...(options.prebundleServerComponents\n ? {\n bundleCode: await buildServerComponentBundleArtifactCode({\n clientRouteInferenceCache: options.clientRouteInferenceCache,\n code: output.code,\n filename: absoluteFile,\n serverOutput,\n vitePlugins: options.vitePlugins,\n }),\n }\n : {}),\n code: output.code,\n metadata: output.metadata,\n sourceHash: hashText(code),\n };\n }\n\n artifacts[file] = artifact;\n }\n\n return artifacts;\n}\n\nasync function buildServerComponentBundleArtifactCode(options: {\n clientRouteInferenceCache: ClientRouteInferenceCache;\n code: string;\n filename: string;\n serverOutput: ServerOutputMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return await bundleAppRouterSourceModule({\n code: options.code,\n label: `server-component:${options.filename}`,\n resolveDir: dirname(options.filename),\n serverSourceTransform: {\n clientRouteInferenceCache: options.clientRouteInferenceCache,\n dev: false,\n serverOutput: options.serverOutput,\n vitePlugins: options.vitePlugins,\n },\n sourcefile: options.filename,\n vitePlugins: options.vitePlugins,\n });\n}\n\nfunction builtRouteSourceAnalysisSummary(options: {\n clientBoundaryImports: readonly string[];\n clientRoute: boolean;\n route: AppRoute;\n routeCode: string;\n source: string;\n streamRoute: boolean;\n}): BuiltRouteSourceAnalysisSummary {\n const cachePolicy = routeCachePolicyFromSource(options.source);\n\n return {\n authIncludesClaims: authIncludesClaims(options.source),\n ...(cachePolicy === undefined ? {} : { cachePolicy }),\n clientBoundaryImports: options.clientBoundaryImports,\n clientRoute: options.clientRoute,\n hasLoader: hasLoaderExport(options.source),\n routeCode: options.routeCode,\n routePath: options.route.path,\n sourceHash: hashText(options.source),\n streamRoute: options.streamRoute,\n usesRuntimeCacheControl: usesRuntimeCacheControl(options.source),\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(options.source) ||\n routeClosureMayUseAwaitBoundary({\n filename: options.filename,\n files: options.files,\n projectRoot: options.projectRoot,\n source: options.source,\n })\n );\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 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 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 file: options.filename,\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 label: `server-route:${options.filename}`,\n resolveDir: dirname(options.filename),\n sourcefile: options.filename,\n vitePlugins: options.vitePlugins,\n });\n }\n\n return await bundleRouteLoaderModuleCode({\n appDir: options.appDir,\n code: stripRouteRequestOnlyExports(options.source),\n filename: options.filename,\n importPolicy: options.importPolicy,\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function bundleRouteLoaderModuleCode(options: {\n appDir: string;\n code: string;\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 bundleRouteMetadataModuleCode(options: {\n appDir: string;\n code: string;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return await bundleRouteRequestModuleCode({\n ...options,\n label: \"Metadata\",\n });\n}\n\nasync function bundleRouteRequestModuleCode(options: {\n appDir: string;\n code: string;\n filename: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n label: \"Loader\" | \"Metadata\";\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: options.code,\n filename: options.filename,\n platform: \"node\",\n vitePlugins: options.vitePlugins,\n plugins: [\n createAppRouterImportPolicyPlugin({\n appDir: options.appDir,\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 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 /\\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\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\nasync function writeCloudflareRouteModules(options: {\n cloudflareDir: string;\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 vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<CloudflareRouteModulesOutput> {\n const routesDir = join(options.cloudflareDir, \"routes\");\n const requiredRoutes = options.routes.filter((route) =>\n cloudflareRouteRequiresGeneratedModule(route, options.prerenderedRoutes),\n );\n const registryEntries: string[] = [];\n\n await mkdir(routesDir, { recursive: true });\n\n for (const route of requiredRoutes) {\n const routeFile = relative(options.projectRoot, route.file).replaceAll(sep, \"/\");\n const source = await readFile(route.file, \"utf8\");\n const routeId = routeIdForPath(route.path);\n const routeModuleFile = `routes/${routeId}.mjs`;\n let routeModuleExports: string[];\n\n if (route.kind === \"server\" || route.kind === \"metadata\") {\n try {\n const routeOutput = await buildCloudflareServerRouteModule({\n filename: route.file,\n vitePlugins: options.vitePlugins,\n });\n const serverRouteFile = `routes/${routeId}.${hashText(routeOutput).slice(0, 8)}.server.mjs`;\n\n await writeFile(join(options.cloudflareDir, serverRouteFile), routeOutput);\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(join(options.cloudflareDir, routeModuleFile), `${routeModuleExports.join(\"\\n\")}\\n`);\n registryEntries.push(\n `${JSON.stringify(routeFile)}: () => import(${JSON.stringify(`./${routeModuleFile}`)})`,\n );\n continue;\n }\n\n const serverOutput =\n options.serverModules[routeFile]?.analysis?.streamRoute === true ||\n shouldBuildRouteAsStream({\n filename: routeFile,\n files: options.files,\n projectRoot: options.projectRoot,\n source,\n })\n ? \"stream\"\n : \"string\";\n\n try {\n const componentOutput =\n serverOutput === \"stream\"\n ? await buildCloudflareStreamRouteComponentModule({\n filename: route.file,\n projectRoot: options.projectRoot,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n })\n : await buildCloudflareStringRouteComponentModule({\n filename: route.file,\n projectRoot: options.projectRoot,\n routesDir: options.routesDir,\n serverModules: options.serverModules,\n vitePlugins: options.vitePlugins,\n });\n const componentFile = `routes/${routeId}.${hashText(componentOutput).slice(0, 8)}.component.mjs`;\n\n await writeFile(join(options.cloudflareDir, componentFile), componentOutput);\n\n const componentImport = `./${componentFile.split(\"/\").pop() ?? componentFile}`;\n routeModuleExports = [\n `export { default, App, slots } from ${JSON.stringify(componentImport)};`,\n ];\n } catch (error) {\n throw new Error(\n `Failed to build Cloudflare route module for ${routeFile}: ${errorMessage(error)}`,\n );\n }\n\n if (hasLoaderExport(source)) {\n try {\n const loaderOutput = await buildCloudflareRouteLoaderModule({\n filename: route.file,\n projectRoot: options.projectRoot,\n vitePlugins: options.vitePlugins,\n });\n const loaderFile = `routes/${routeId}.${hashText(loaderOutput).slice(0, 8)}.loader.mjs`;\n\n await writeFile(join(options.cloudflareDir, loaderFile), loaderOutput);\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(join(options.cloudflareDir, routeModuleFile), `${routeModuleExports.join(\"\\n\")}\\n`);\n registryEntries.push(\n `${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\ninterface CloudflareShellFile {\n file: string;\n id: string;\n kind: \"layout\" | \"template\";\n}\n\nasync function buildCloudflareServerComponentModule(options: {\n filename: string;\n projectRoot: string;\n serverOutput: ServerOutputMode;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const metadataModule = await buildCloudflareRouteMetadataExportModule({\n filename: options.filename,\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 filename: `${options.filename}.mreact-cloudflare-component.js`,\n modules: metadataModule === undefined\n ? new Map()\n : 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 vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareStringRouteComponentModule(options: {\n filename: string;\n projectRoot: string;\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\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 filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n vitePlugins: options.vitePlugins,\n });\n }\n\n const pageModule = await buildCloudflareComponentExportModule({\n filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n vitePlugins: options.vitePlugins,\n });\n const shellModules = await Promise.all(\n shellFiles.map((shell) =>\n buildCloudflareComponentExportModule({\n filename: shell.file,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n vitePlugins: options.vitePlugins,\n }),\n ),\n );\n const shellImports = shellFiles.map((_, index) => `import * as shell${index} from \"mreact:shell-${index}\";`);\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 const App = renderCloudflareStringRoute;\nexport default renderCloudflareStringRoute;\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 += 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: {\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 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 vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareStreamRouteComponentModule(options: {\n filename: string;\n projectRoot: string;\n routesDir: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const pageModule = await buildCloudflareComponentExportModule({\n filename: options.filename,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"stream\",\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 filename: shell.file,\n projectRoot: options.projectRoot,\n serverModules: options.serverModules,\n serverOutput: \"string\",\n vitePlugins: options.vitePlugins,\n }),\n ),\n );\n const shellImports = shellFiles.map((_, index) => `import * as shell${index} from \"mreact:shell-${index}\";`);\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\nfunction renderCloudflareStreamRoute(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 metadata = await resolveRouteMetadata([...shells.map((shell) => shell.module), pageModule], props);\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 await pageComponent($sink, props);\n renderOutOfOrderReorderScript($sink);\n for (const shell of [...layoutShells].reverse()) {\n $sink.append(shell.suffix);\n }\n });\n return new Response(body, {\n headers: {\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 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 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\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 = module.metadata;\n if (typeof module.generateMetadata === \"function\") {\n const generated = await module.generateMetadata(context);\n next = mergeRouteMetadata([next, generated].filter(Boolean));\n }\n if (next !== undefined) {\n metadata.push(next);\n }\n }\n return mergeRouteMetadata(metadata);\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(\"&\", \"&amp;\")\n .replaceAll('\"', \"&quot;\")\n .replaceAll(\"<\", \"&lt;\");\n}\n\nfunction escapeHtml(value) {\n return String(value ?? \"\")\n .replaceAll(\"&\", \"&amp;\")\n .replaceAll(\"<\", \"&lt;\")\n .replaceAll(\">\", \"&gt;\");\n}`;\n}\n\nasync function buildCloudflareComponentExportModule(options: {\n filename: string;\n projectRoot: string;\n serverModules: Record<string, BuiltServerModuleArtifact>;\n serverOutput: ServerOutputMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const metadataModule = await buildCloudflareRouteMetadataExportModule({\n filename: options.filename,\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 filename: `${options.filename}.mreact-cloudflare-${options.serverOutput}-component.js`,\n modules: metadataModule === undefined\n ? new Map()\n : 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 vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareRouteLoaderModule(options: {\n filename: string;\n projectRoot: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const entry = `export { loader } from ${JSON.stringify(options.filename)};`;\n\n return bundleCloudflareModule({\n entry,\n filename: `${options.filename}.mreact-cloudflare-loader.js`,\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareRouteMetadataExportModule(options: {\n filename: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string | undefined> {\n const source = await readFile(options.filename, \"utf8\");\n\n if (!hasMetadataExport(source)) {\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 filename: `${options.filename}.mreact-cloudflare-metadata.js`,\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function buildCloudflareServerRouteModule(options: {\n filename: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const entry = `import * as routeModule from ${JSON.stringify(options.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 return bundleCloudflareModule({\n entry,\n filename: `${options.filename}.mreact-cloudflare-server-route.js`,\n plugins: [cloudflareWorkspaceRuntimePlugin()],\n resolveDir: dirname(options.filename),\n vitePlugins: options.vitePlugins,\n });\n}\n\nasync function bundleCloudflareModule(options: {\n entry: string;\n filename: string;\n plugins: RouterCompatPlugin[];\n resolveDir: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: options.entry,\n filename: options.filename,\n minify: true,\n platform: \"browser\",\n preserveExports: true,\n plugins: options.plugins,\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 entry: string;\n filename: string;\n modules: ReadonlyMap<string, string>;\n plugins: RouterCompatPlugin[];\n resolveDir: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n return bundleCloudflareModule({\n entry: options.entry,\n filename: options.filename,\n plugins: [\n {\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 contents = options.modules.get(args.path);\n\n if (contents === undefined) {\n throw new Error(`Missing virtual Cloudflare module ${args.path}.`);\n }\n\n return {\n contents,\n loader: \"js\",\n resolveDir: options.resolveDir,\n };\n });\n },\n },\n ...options.plugins,\n ],\n resolveDir: options.resolveDir,\n vitePlugins: options.vitePlugins,\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) ? stripRouteBuildExports(source) : 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 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.map((diagnostic) => formatDiagnostic(options.filename, diagnostic)).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 [\"@reckona/mreact-compat/flight\", packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"flight\")],\n [\"@reckona/mreact-compat/internal\", packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"internal\")],\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 [\"@reckona/mreact-compat/scheduler\", packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"scheduler\")],\n [\"@reckona/mreact-query\", packageFile(\"query\", \"@reckona/mreact-query\", \"index\")],\n [\"@reckona/mreact-reactive-core\", packageFile(\"reactive-core\", \"@reckona/mreact-reactive-core\", \"index\")],\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({ filter: /^@reckona\\/mreact-router\\/(?:internal\\/)?native-escape$/ }, () => ({\n namespace: \"mreact-cloudflare-native-escape\",\n path: \"native-escape\",\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({ filter: /^native-escape$/, namespace: \"mreact-cloudflare-native-escape\" }, () => ({\n contents: `function escapeHtml(value) {\n return String(value ?? \"\").replace(/[&<>\"']/g, (char) =>\n char === \"&\" ? \"&amp;\" : char === \"<\" ? \"&lt;\" : char === \">\" ? \"&gt;\" : char === '\"' ? \"&quot;\" : \"&#39;\"\n );\n}\nexport function escapeHtmlBatch(values) {\n return values.map(escapeHtml);\n}`,\n loader: \"js\",\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 } from ${JSON.stringify(routerNavigationPath)};\nexport { getServerRuntimeState } from ${JSON.stringify(routerRuntimeStatePath)};`,\n loader: \"js\",\n resolveDir: dirname(routerNavigationPath),\n }));\n buildApi.onLoad({ filter: /(?:^|[/\\\\])packages[/\\\\]server[/\\\\](?:src|dist)[/\\\\]native-flight\\.[jt]s$/ }, () => ({\n contents: `export function getNativeFlight() {\n return undefined;\n}`,\n loader: \"js\",\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\nasync function writeClientRouteBundles(options: {\n appDir: string;\n assetBaseUrl?: string | undefined;\n clientDir: string;\n clientRouteInferenceCache: ClientRouteInferenceCache;\n projectRoot: string;\n routes: readonly AppRoute[];\n sourceMapDir: string;\n sourceMaps: AppRouterClientSourceMapMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<ClientRouteManifestEntry[]> {\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 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 = await writeRouteCssAssets({\n appDir: options.appDir,\n clientDir: options.clientDir,\n pageFile: route.file,\n projectRoot: options.projectRoot,\n routeId: routeIdForPath(route.path),\n vitePlugins: options.vitePlugins,\n });\n const source = await readFile(route.file, \"utf8\");\n const clientSource = stripRouteClientSource({ code: source, filename: route.file });\n const navigation = detectNavigationRuntimeHint(source);\n const references = await collectClientRouteReferences({\n appDir: options.appDir,\n cache: options.clientRouteInferenceCache,\n code: clientSource,\n filename: route.file,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of references.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\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 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 entries.flatMap((entry) => (\"manifest\" in entry ? [entry.manifest] : []));\n }\n\n let output: Awaited<ReturnType<typeof buildClientRouteBatchOutput>>;\n\n try {\n output = await buildClientRouteBatchOutput({\n assetBaseUrl: options.assetBaseUrl,\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((entry) => `Failed to build client bundle for ${entry.route.path} (${entry.route.file}).`)\n .join(\"\\n\");\n\n throw new Error(`${routeContexts}\\nFailed to build client route bundles.\\n${errorMessage(error)}`, {\n cause: error,\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\"\n ? asset.source\n : 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 return 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.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\nasync function writeRouteCssAssets(options: {\n appDir: string;\n clientDir: string;\n pageFile: string;\n projectRoot: string;\n routeId: string;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string[]> {\n const cssFiles = await collectRouteCssFiles({\n appDir: options.appDir,\n pageFile: options.pageFile,\n projectRoot: options.projectRoot,\n });\n\n if (cssFiles.length === 0) {\n return [];\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 code,\n filename: options.pageFile,\n minify: true,\n platform: \"browser\",\n vitePlugins: options.vitePlugins,\n });\n const cssAssets = (output.assets ?? []).filter((asset) => asset.fileName.endsWith(\".css\"));\n const written: string[] = [];\n\n for (const asset of cssAssets) {\n const source =\n typeof asset.source === \"string\"\n ? asset.source\n : Buffer.from(asset.source).toString(\"utf8\");\n const hash = createHash(\"sha256\").update(source).digest(\"hex\").slice(0, 8);\n const cssFile = `assets/routes/${options.routeId}.${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 return written;\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(clientDir: string): Promise<string> {\n const output = await buildNavigationRuntimeBundle({\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\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 await writeFile(join(options.outDir, \"mreact-handler.mjs\"), awsLambdaHandlerSource(\".mreact\"));\n\n const files = await collectAwsLambdaArtifactFiles(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 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\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 collectAwsLambdaArtifactFiles(\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 collectAwsLambdaArtifactFiles(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((left, right) => right.bytes - left.bytes || left.path.localeCompare(right.path));\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 timings: process.env.MREACT_ROUTER_TIMINGS === \"1\",\n});\n`;\n}\n\nasync function validateProductionRoutes(options: {\n files: Record<string, string>;\n projectRoot: string;\n routes: readonly AppRoute[];\n}): Promise<void> {\n for (const route of options.routes) {\n if (route.kind !== \"page\") {\n continue;\n }\n\n const source = await readFile(route.file, \"utf8\");\n const filename = relative(options.projectRoot, route.file);\n const output = transform({\n code: stripRouteBuildExports(source),\n dev: false,\n filename: route.file,\n serverEscape: nativeEscapeTransform,\n serverOutput: shouldBuildRouteAsStream({\n filename,\n files: options.files,\n projectRoot: options.projectRoot,\n source,\n })\n ? \"stream\"\n : \"string\",\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.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 for (const file of await collectFiles(directory)) {\n if (isAppFileConventionAsset(file, appDir)) {\n continue;\n }\n\n const relativeFile = relative(projectRoot, file);\n\n if (relativeFile === \"\" || relativeFile.startsWith(\"..\") || relativeFile.startsWith(sep)) {\n continue;\n }\n\n files[relativeFile] = await readFile(file, \"utf8\");\n }\n }\n\n return files;\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 files: string[] = [];\n\n for (const entry of entries) {\n const path = join(directory, entry.name);\n\n if (entry.isDirectory()) {\n files.push(...(await collectFiles(path)));\n continue;\n }\n\n if (entry.isFile()) {\n files.push(path);\n }\n }\n\n return files;\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"]}