@reckona/mreact-router 0.0.154 → 0.0.156

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/README.md CHANGED
@@ -350,7 +350,7 @@ For Cloudflare Workers, `mreact-router build --target=cloudflare` emits `.mreact
350
350
 
351
351
  For Cloudflare Pages advanced mode, run `mreact-router package cloudflare-pages --from .mreact --out .mreact/pages` after `mreact-router build --target=cloudflare`, then deploy with `wrangler pages deploy .mreact/pages`. The package command creates a Pages output directory with bundled `_worker.js`, `_mreact/client/*` static route assets, root public assets, and `mreact-cloudflare-pages-artifact.json`. Pages provides the `ASSETS` binding to `_worker.js`; mreact's generated worker reads that binding and serves only generated client manifest assets, route-linked CSS, and public files. The package step bundles the generated Worker entry, route registry, route chunks, and router adapter code, so application deploy scripts do not need to copy `worker.mjs` manually or decide whether Wrangler should bundle package imports. If your Worker graph includes dependencies that import Node builtins such as `node:util` or bare `util`, configure Cloudflare Pages with the `nodejs_compat` compatibility flag so the packaged Worker can use Cloudflare's Node.js compatibility runtime.
352
352
 
353
- User Vite plugins from the project config are forwarded into router bundle builds after the `mreact-router` plugin itself is removed, so MDX-style syntax transforms and custom content loaders can participate in server, client, Cloudflare, and prerender bundles. Vite `define` values are also forwarded into generated Cloudflare server bundles, including `import.meta.env.*` aliases and plain define identifiers used by loaders and route handlers. Client assets, route stylesheet assets imported by pages/layouts/templates or special `error.tsx`/`not-found.tsx` boundaries, and copied public assets are served only when they appear in the generated manifest allow-list. Dynamic routes resolve modules through a build-time registry keyed by `route.file`, not by constructing module ids from request input. Generated Cloudflare route modules preserve app-router layout/template shells and named slots for both string and `stream = true` pages, including route-local `<Await>` boundaries and local server-component imports. Generated Cloudflare server route modules dispatch method exports such as `GET`, `POST`, and `ALL` with decoded dynamic params plus `context.env`, `context.context`, `context.request`, and `context.route`, so handlers can use Worker bindings directly. The Cloudflare adapter marks streamed HTML with `Cache-Control: no-transform` and `Content-Encoding: identity` so Workers compression does not gzip-buffer the first shell before placeholders can paint. Pass `onResponse` to add cross-cutting response headers to rendered, static, asset, reload, not-found, and error responses. If a generated Cloudflare route module cannot produce the `data-mreact-route-id` marker contract required by client navigation, the adapter returns a reload signal for `x-mreact-navigation: 1` requests so the browser performs a normal document navigation without first buffering the full HTML response.
353
+ User Vite plugins from the project config are forwarded into router bundle builds after the `mreact-router` plugin itself is removed, so MDX-style syntax transforms and custom content loaders can participate in server, client, Cloudflare, and prerender bundles. Vite `define` values are also forwarded into generated Cloudflare server bundles, including `import.meta.env.*` aliases and plain define identifiers used by loaders and route handlers. Client assets, route stylesheet assets imported by pages/layouts/templates or special `error.tsx`/`not-found.tsx` boundaries, and copied public assets are served only when they appear in the generated manifest allow-list. Dynamic routes resolve modules through a build-time registry keyed by `route.file`, not by constructing module ids from request input. Generated Cloudflare route modules preserve app-router layout/template shells and named slots for both string and `stream = true` pages, including route-local `<Await>` boundaries and local server-component imports. Generated Cloudflare server route modules dispatch method exports such as `GET`, `POST`, and `ALL` with decoded dynamic params plus `context.env`, `context.context`, `context.request`, and `context.route`, so handlers can use Worker bindings directly. Cloudflare page rendering installs the per-request query client scope before loader, page, metadata, and document rendering, so server-rendered helpers can call `getQueryClient()` even in runtimes without `AsyncLocalStorage`. The Cloudflare adapter marks streamed HTML with `Cache-Control: no-transform` and `Content-Encoding: identity` so Workers compression does not gzip-buffer the first shell before placeholders can paint. Pass `onResponse` to add cross-cutting response headers to rendered, static, asset, reload, not-found, and error responses. If a generated Cloudflare route module cannot produce the `data-mreact-route-id` marker contract required by client navigation, the adapter returns a reload signal for `x-mreact-navigation: 1` requests so the browser performs a normal document navigation without first buffering the full HTML response.
354
354
 
355
355
  For AWS Lambda, use `createPreloadedAwsLambdaRequestHandler()` with API Gateway
356
356
  HTTP API v2 or Lambda Function URL payload format 2.0:
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { __MREACT_QUERY_STATE_SCRIPT_ID, createQueryClient, dehydrate, isQueryClientScopeUnavailableError, runWithQueryClient, } from "@reckona/mreact-query";
1
+ import { __MREACT_QUERY_STATE_SCRIPT_ID, createQueryClient, dehydrate, installQueryAsyncStorage, isQueryClientScopeUnavailableError, runWithQueryClient, } from "@reckona/mreact-query";
2
2
  import { emitRouterLog, logDurationMs, logError, logNow, requestLogFields, } from "../logger.js";
3
3
  import { normalizeRoutePath } from "../route-path.js";
4
4
  import { contentSecurityPolicy } from "../csp.js";
@@ -195,17 +195,73 @@ function injectCloudflareQueryStateScript(html, state) {
195
195
  ? html.replace(/<\/body>/i, () => `${script}</body>`)
196
196
  : `${html}${script}`;
197
197
  }
198
- function runWithCloudflareQueryClient(queryClient, fn) {
198
+ async function runWithCloudflareQueryClient(queryClient, fn) {
199
199
  try {
200
- return runWithQueryClient(queryClient, fn);
200
+ return await runWithQueryClient(queryClient, fn);
201
201
  }
202
202
  catch (error) {
203
203
  if (isQueryClientScopeUnavailableError(error)) {
204
- return fn();
204
+ installQueryAsyncStorage(cloudflareQueryClientStorage);
205
+ return await runWithSerializedCloudflareQueryClient(queryClient, fn);
205
206
  }
206
207
  throw error;
207
208
  }
208
209
  }
210
+ const cloudflareQueryClientStorage = createCloudflareQueryClientStorage();
211
+ let cloudflareQueryClientFallbackQueue = Promise.resolve();
212
+ async function runWithSerializedCloudflareQueryClient(queryClient, fn) {
213
+ const previous = cloudflareQueryClientFallbackQueue;
214
+ let releaseCurrent;
215
+ const current = new Promise((resolve) => {
216
+ releaseCurrent = resolve;
217
+ });
218
+ cloudflareQueryClientFallbackQueue = previous.then(() => current, () => current);
219
+ await previous;
220
+ try {
221
+ return await runWithQueryClient(queryClient, fn);
222
+ }
223
+ finally {
224
+ releaseCurrent();
225
+ }
226
+ }
227
+ function createCloudflareQueryClientStorage() {
228
+ const stores = [];
229
+ return {
230
+ getStore() {
231
+ return stores.at(-1);
232
+ },
233
+ run(store, callback) {
234
+ stores.push(store);
235
+ let popSynchronously = true;
236
+ try {
237
+ const result = callback();
238
+ if (isPromiseLike(result)) {
239
+ popSynchronously = false;
240
+ return Promise.resolve(result).finally(() => {
241
+ removeCloudflareQueryClientStore(stores, store);
242
+ });
243
+ }
244
+ return result;
245
+ }
246
+ finally {
247
+ if (popSynchronously) {
248
+ removeCloudflareQueryClientStore(stores, store);
249
+ }
250
+ }
251
+ },
252
+ };
253
+ }
254
+ function removeCloudflareQueryClientStore(stores, store) {
255
+ const index = stores.lastIndexOf(store);
256
+ if (index >= 0) {
257
+ stores.splice(index, 1);
258
+ }
259
+ }
260
+ function isPromiseLike(value) {
261
+ return ((typeof value === "object" || typeof value === "function") &&
262
+ value !== null &&
263
+ typeof value.then === "function");
264
+ }
209
265
  async function dispatchCloudflareServerRoute(module, request, context) {
210
266
  const handler = module[request.method] ?? module.ALL ?? module.default;
211
267
  if (typeof handler !== "function") {
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BuiltPrerenderedRoute, BuiltServerManifest } from \"../build.js\";\nimport type { ClientRouteManifestEntry } from \"../client.js\";\nimport type { AppRouterResponseHook } from \"../render.js\";\nimport {\n __MREACT_QUERY_STATE_SCRIPT_ID,\n createQueryClient,\n dehydrate,\n isQueryClientScopeUnavailableError,\n runWithQueryClient,\n type DehydratedQueryClient,\n type QueryClient,\n} from \"@reckona/mreact-query\";\nimport type {\n GenerateMetadataContext,\n ManifestDescriptor,\n RobotsManifest,\n RouteMetadata,\n SitemapEntry,\n} from \"../types.js\";\nimport {\n emitRouterLog,\n logDurationMs,\n logError,\n logNow,\n requestLogFields,\n type AppRouterLogger,\n} from \"../logger.js\";\nimport { normalizeRoutePath } from \"../route-path.js\";\nimport type { AppRoute } from \"../routes.js\";\nimport { contentSecurityPolicy } from \"../csp.js\";\nimport { isNotFoundError } from \"../navigation.js\";\nimport { validateRouteMetadata } from \"../metadata.js\";\nimport { routeSecurityHeaders } from \"../security-headers.js\";\nimport type { AppRouterPrerenderStore } from \"../serve.js\";\nimport { emitRouterDevtoolsEvent } from \"./devtools.js\";\nimport { escapeHtmlAttribute, escapeHtmlText } from \"@reckona/mreact-shared/html-escape\";\n\nexport interface CloudflareExecutionContext {\n passThroughOnException(): void;\n waitUntil(promise: Promise<unknown>): void;\n}\n\nexport interface CloudflareAssetLoader<Env = unknown> {\n fetch?:\n | ((\n pathname: string,\n request: Request,\n env: Env,\n context: CloudflareExecutionContext,\n ) => Response | Promise<Response | undefined> | undefined)\n | undefined;\n}\n\nexport interface CloudflareRenderContext<Env = unknown> {\n clientManifest: CloudflareClientManifest;\n context: CloudflareExecutionContext;\n env: Env;\n serverManifest: BuiltServerManifest;\n}\n\nexport interface CloudflareRequestHandlerOptions<Env = unknown> {\n assets?: CloudflareAssetLoader<Env> | undefined;\n clientManifest: CloudflareClientManifest;\n logger?: AppRouterLogger | undefined;\n onResponse?: AppRouterResponseHook | undefined;\n onError?:\n | ((\n error: unknown,\n request: Request,\n env: Env,\n context: CloudflareExecutionContext,\n ) => Response | Promise<Response>)\n | undefined;\n render?:\n | ((request: Request, context: CloudflareRenderContext<Env>) => Response | Promise<Response>)\n | undefined;\n serverManifest: BuiltServerManifest;\n}\n\nexport interface CloudflareRequestHandler<Env = unknown> {\n fetch(request: Request, env: Env, context: CloudflareExecutionContext): Promise<Response>;\n}\n\nexport interface CloudflareBuiltRouteRenderContext<\n Env = unknown,\n> extends CloudflareRenderContext<Env> {\n params: Record<string, readonly string[] | string>;\n route: AppRoute;\n}\n\nexport interface CloudflareRouteModuleLoaderContext<\n Env = unknown,\n> extends CloudflareBuiltRouteRenderContext<Env> {\n queryClient: QueryClient;\n request: Request;\n}\n\nexport interface CloudflareServerRouteContext<\n Env = unknown,\n> extends CloudflareBuiltRouteRenderContext<Env> {\n request: Request;\n}\n\nexport interface CloudflareRouteModuleComponentProps<\n Data = unknown,\n Env = unknown,\n> extends CloudflareBuiltRouteRenderContext<Env> {\n data: Data;\n queryClient: QueryClient;\n request: Request;\n}\n\nexport type CloudflareRouteModuleComponent<Data = unknown, Env = unknown> = (\n props: CloudflareRouteModuleComponentProps<Data, Env>,\n) => Response | string | PromiseLike<Response | string>;\n\nexport interface CloudflareRouteModule<Data = unknown, Env = unknown> {\n App?: CloudflareRouteModuleComponent<Data, Env> | undefined;\n CloudflareRouteComponent?: CloudflareRouteModuleComponent<Data, Env> | undefined;\n default?: CloudflareRouteModuleComponent<Data, Env> | undefined;\n generateMetadata?:\n | ((\n context: GenerateMetadataContext<Data>,\n ) => RouteMetadata | PromiseLike<RouteMetadata | undefined> | undefined)\n | undefined;\n loader?:\n | ((context: CloudflareRouteModuleLoaderContext<Env>) => Data | PromiseLike<Data>)\n | undefined;\n metadata?: RouteMetadata | undefined;\n}\n\nexport type CloudflareServerRouteHandler<Env = unknown> = (\n request: Request,\n context: CloudflareServerRouteContext<Env>,\n) => unknown | PromiseLike<unknown>;\n\nexport interface CloudflareServerRouteModule<Env = unknown> {\n ALL?: CloudflareServerRouteHandler<Env> | undefined;\n DELETE?: CloudflareServerRouteHandler<Env> | undefined;\n default?: CloudflareServerRouteHandler<Env> | undefined;\n GET?: CloudflareServerRouteHandler<Env> | undefined;\n HEAD?: CloudflareServerRouteHandler<Env> | undefined;\n OPTIONS?: CloudflareServerRouteHandler<Env> | undefined;\n PATCH?: CloudflareServerRouteHandler<Env> | undefined;\n POST?: CloudflareServerRouteHandler<Env> | undefined;\n PUT?: CloudflareServerRouteHandler<Env> | undefined;\n}\n\nexport interface CloudflareMetadataRouteContext {\n baseUrl: string;\n host: string;\n params: Record<string, readonly string[] | string>;\n request: Request;\n}\n\nexport interface CloudflareMetadataRouteModule {\n default?: ((context: CloudflareMetadataRouteContext) => unknown | PromiseLike<unknown>) | undefined;\n}\n\nexport type CloudflareRouteModuleRegistryEntry<Env = unknown> =\n | CloudflareRouteModule<unknown, Env>\n | CloudflareMetadataRouteModule\n | CloudflareServerRouteModule<Env>;\n\nexport type CloudflareRouteModuleRegistry<Env = unknown> = Record<\n string,\n | CloudflareRouteModuleRegistryEntry<Env>\n | (() => CloudflareRouteModuleRegistryEntry<Env> | PromiseLike<CloudflareRouteModuleRegistryEntry<Env>>)\n>;\n\nexport interface CloudflareRouteModuleRendererOptions<Env = unknown> {\n document?:\n | ((\n context: CloudflareRouteModuleComponentProps<unknown, Env> & {\n body: string;\n modulePreload: string;\n },\n ) => Response | string | PromiseLike<Response | string>)\n | undefined;\n modules: CloudflareRouteModuleRegistry<Env>;\n}\n\nexport type CloudflareRouteModuleGlob<Env = unknown> = Record<\n string,\n | CloudflareRouteModuleRegistryEntry<Env>\n | (() => CloudflareRouteModuleRegistryEntry<Env> | PromiseLike<CloudflareRouteModuleRegistryEntry<Env>>)\n>;\n\nexport interface CollectCloudflareRouteModulesOptions {\n manifest: BuiltServerManifest;\n}\n\nexport interface CloudflareBuiltRequestHandlerOptions<Env = unknown> extends Omit<\n CloudflareRequestHandlerOptions<Env>,\n \"render\"\n> {\n renderRoute?:\n | ((\n request: Request,\n context: CloudflareBuiltRouteRenderContext<Env>,\n ) => Response | Promise<Response>)\n | undefined;\n}\n\nexport interface CloudflareClientManifest {\n assets?: readonly string[] | undefined;\n publicAssets?: readonly string[] | undefined;\n routes: ClientRouteManifestEntry[];\n}\n\nexport interface CloudflareAssetBinding {\n fetch(request: Request): Response | Promise<Response>;\n}\n\nexport interface CloudflareStaticAssetLoaderOptions<Env = unknown> {\n binding:\n | CloudflareAssetBinding\n | ((\n env: Env,\n ) => CloudflareAssetBinding | Promise<CloudflareAssetBinding | undefined> | undefined);\n clientManifest: CloudflareClientManifest;\n extraPaths?: readonly string[] | undefined;\n prefix?: string | undefined;\n}\n\nexport interface CloudflareCache {\n delete(request: Request | string): boolean | Promise<boolean>;\n match(request: Request | string): Response | Promise<Response | undefined> | undefined;\n put(request: Request | string, response: Response): void | Promise<void>;\n}\n\nexport interface CloudflarePrerenderStoreOptions {\n cache: CloudflareCache;\n keyOrigin?: string | undefined;\n keyPrefix?: string | undefined;\n}\n\nconst clientPrefix = \"/_mreact/client/\";\nconst defaultPrerenderCacheOrigin = \"https://mreact.local\";\nconst defaultPrerenderCachePrefix = \"/_mreact/prerender\";\n\n/**\n * Creates a Cloudflare Worker `fetch` handler from manifests, asset loading, and an optional renderer.\n *\n * The handler serves generated client assets and prerendered routes before calling `render`, preserves streamed HTML responses, and routes errors through `onError` when provided.\n */\nexport function createCloudflareRequestHandler<Env = unknown>(\n options: CloudflareRequestHandlerOptions<Env>,\n): CloudflareRequestHandler<Env> {\n return {\n async fetch(request, env, context) {\n const startedAt = logNow();\n try {\n return await handleCloudflareRequest(options, request, env, context);\n } catch (error) {\n const logFields = requestLogFields(request, \"cloudflare\");\n emitRouterDevtoolsEvent({\n method: request.method,\n type: \"router:request:error\",\n url: request.url,\n });\n emitRouterLog(options.logger, \"error\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n error: logError(error),\n type: \"router:request:error\",\n });\n\n return await applyCloudflareResponseHook(\n options.onError === undefined\n ? new Response(\"Internal Server Error\", {\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n status: 500,\n })\n : await options.onError(error, request, env, context),\n options,\n request,\n );\n }\n },\n };\n}\n\n/**\n * Creates a Cloudflare Worker handler that matches built app-router routes before rendering.\n *\n * Pair it with `createCloudflareRouteModuleRenderer()` and the generated route module registry from Cloudflare-target builds.\n */\nexport function createCloudflareBuiltRequestHandler<Env = unknown>(\n options: CloudflareBuiltRequestHandlerOptions<Env>,\n): CloudflareRequestHandler<Env> {\n const sortedRoutes = [...options.serverManifest.routes].sort(compareCloudflareRoutes);\n\n return createCloudflareRequestHandler({\n ...options,\n render(request, context) {\n const matched = matchCloudflareRoute(\n sortedRoutes,\n new URL(request.url).pathname,\n );\n\n if (matched === undefined || options.renderRoute === undefined) {\n return new Response(\"Not Found\", { status: 404 });\n }\n\n return options.renderRoute(request, {\n ...context,\n params: matched.params,\n route: matched.route,\n });\n },\n });\n}\n\n/**\n * Creates the renderer used by the generated Cloudflare Worker route registry.\n *\n * It loads matched route modules, dispatches server route handlers, evaluates loaders and metadata, and renders page routes with Cloudflare request context.\n */\nexport function createCloudflareRouteModuleRenderer<Env = unknown>(\n options: CloudflareRouteModuleRendererOptions<Env>,\n): NonNullable<CloudflareBuiltRequestHandlerOptions<Env>[\"renderRoute\"]> {\n return async (request, context) => {\n if (context.route.kind !== \"server\" && isCloudflareNavigationRequest(request)) {\n return cloudflareDocumentReloadNavigationResponse();\n }\n\n const module = await loadCloudflareRouteModule(options.modules, context.route.file);\n\n if (module === undefined) {\n return new Response(`No Cloudflare route module registered for ${context.route.file}.`, {\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n status: 500,\n });\n }\n\n if (context.route.kind === \"server\") {\n return withDefaultSecurityHeaders(\n await dispatchCloudflareServerRoute(module as CloudflareServerRouteModule<Env>, request, {\n ...context,\n request,\n }),\n request,\n );\n }\n\n if (context.route.kind === \"metadata\") {\n return withDefaultSecurityHeaders(\n await dispatchCloudflareMetadataRoute(module as CloudflareMetadataRouteModule, request, {\n ...context,\n request,\n }),\n request,\n );\n }\n\n const pageModule = module as CloudflareRouteModule<unknown, Env>;\n const component = selectCloudflarePageComponent(pageModule);\n const queryClient = createQueryClient();\n\n if (component === undefined) {\n return new Response(\n `No Cloudflare page component registered for ${context.route.file}. Module exports: ${describeCloudflareModuleExports(pageModule)}.`,\n {\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n status: 500,\n },\n );\n }\n\n const loaderContext = {\n ...context,\n queryClient,\n request,\n };\n let data: unknown;\n\n try {\n data =\n pageModule.loader === undefined\n ? undefined\n : await runWithCloudflareQueryClient(queryClient, () => pageModule.loader!(loaderContext));\n } catch (error) {\n if (error instanceof Response) {\n return error;\n }\n\n if (isNotFoundError(error)) {\n return cloudflareNotFoundResponse(request);\n }\n\n throw error;\n }\n const props = {\n ...context,\n data,\n queryClient,\n request,\n };\n let rendered: Awaited<ReturnType<typeof component>>;\n\n try {\n rendered = await runWithCloudflareQueryClient(queryClient, () => component(props));\n } catch (error) {\n if (isNotFoundError(error)) {\n return cloudflareNotFoundResponse(request);\n }\n\n throw error;\n }\n\n const metadata = await runWithCloudflareQueryClient(queryClient, () =>\n resolveCloudflareRouteMetadata([pageModule], props),\n );\n\n if (rendered instanceof Response) {\n return withDefaultSecurityHeaders(rendered, request, metadata);\n }\n\n const modulePreload = cloudflareModulePreloadTag(context.clientManifest, context.route.path);\n const body = withCloudflareHydrationMarkers({\n data,\n html: rendered,\n manifest: context.clientManifest,\n params: context.params,\n request,\n routePath: context.route.path,\n });\n const documented =\n options.document === undefined\n ? defaultCloudflareDocument(body, modulePreload, metadata)\n : await runWithCloudflareQueryClient(queryClient, () =>\n options.document!({\n ...props,\n body,\n modulePreload,\n }),\n );\n const documentedWithQueryState = await injectCloudflareQueryState(\n documented,\n dehydrate(queryClient),\n );\n\n return withDefaultSecurityHeaders(\n documentedWithQueryState instanceof Response\n ? documentedWithQueryState\n : new Response(documentedWithQueryState, {\n headers: { \"content-type\": \"text/html; charset=utf-8\" },\n }),\n request,\n metadata,\n );\n };\n}\n\nasync function injectCloudflareQueryState<T extends Response | string>(\n document: T,\n state: DehydratedQueryClient,\n): Promise<T | Response | string> {\n if (state.queries.length === 0) {\n return document;\n }\n\n if (typeof document === \"string\") {\n return injectCloudflareQueryStateScript(document, state);\n }\n\n const contentType = document.headers.get(\"content-type\") ?? \"\";\n if (!/^text\\/html\\b/i.test(contentType)) {\n return document;\n }\n\n const headers = new Headers(document.headers);\n headers.delete(\"content-length\");\n return new Response(injectCloudflareQueryStateScript(await document.text(), state), {\n headers,\n status: document.status,\n statusText: document.statusText,\n });\n}\n\nfunction injectCloudflareQueryStateScript(html: string, state: DehydratedQueryClient): string {\n const script = `<script type=\"application/json\" id=\"${__MREACT_QUERY_STATE_SCRIPT_ID}\">${escapeJsonForHtml(\n JSON.stringify(state),\n )}</script>`;\n\n return /<\\/body>/i.test(html)\n ? html.replace(/<\\/body>/i, () => `${script}</body>`)\n : `${html}${script}`;\n}\n\nfunction runWithCloudflareQueryClient<T>(queryClient: QueryClient, fn: () => T): T {\n try {\n return runWithQueryClient(queryClient, fn);\n } catch (error) {\n if (isQueryClientScopeUnavailableError(error)) {\n return fn();\n }\n\n throw error;\n }\n}\n\nasync function dispatchCloudflareServerRoute<Env>(\n module: CloudflareServerRouteModule<Env>,\n request: Request,\n context: CloudflareServerRouteContext<Env>,\n): Promise<Response> {\n const handler =\n module[request.method as keyof CloudflareServerRouteModule<Env>] ?? module.ALL ?? module.default;\n\n if (typeof handler !== \"function\") {\n return new Response(\"Method Not Allowed\", { status: 405 });\n }\n\n let response: unknown;\n\n try {\n response = await handler(request, context);\n } catch (error) {\n if (error instanceof Response) {\n return error;\n }\n\n throw error;\n }\n\n return response instanceof Response\n ? response\n : new Response(\"Invalid route response\", { status: 500 });\n}\n\nconst cloudflareReservedPageModuleExportNames = new Set([\n \"ALL\",\n \"DELETE\",\n \"GET\",\n \"HEAD\",\n \"OPTIONS\",\n \"PATCH\",\n \"POST\",\n \"PUT\",\n \"App\",\n \"CloudflareRouteComponent\",\n \"default\",\n \"generateMetadata\",\n \"generateStaticParams\",\n \"loader\",\n \"metadata\",\n \"middleware\",\n \"prerender\",\n \"revalidate\",\n \"slots\",\n \"stream\",\n]);\n\nfunction selectCloudflarePageComponent<Data, Env>(\n module: CloudflareRouteModule<Data, Env>,\n): CloudflareRouteModuleComponent<Data, Env> | undefined {\n const defaultExport = readCloudflareModuleExport(module, \"default\");\n if (typeof defaultExport === \"function\") {\n return defaultExport as CloudflareRouteModuleComponent<Data, Env>;\n }\n\n const appExport = readCloudflareModuleExport(module, \"App\");\n if (typeof appExport === \"function\") {\n return appExport as CloudflareRouteModuleComponent<Data, Env>;\n }\n\n const cloudflareRouteComponentExport = readCloudflareModuleExport(module, \"CloudflareRouteComponent\");\n if (typeof cloudflareRouteComponentExport === \"function\") {\n return cloudflareRouteComponentExport as CloudflareRouteModuleComponent<Data, Env>;\n }\n\n for (const name of Object.keys(module)) {\n const value = readCloudflareModuleExport(module, name);\n if (\n !cloudflareReservedPageModuleExportNames.has(name) &&\n typeof value === \"function\"\n ) {\n return value as CloudflareRouteModuleComponent<Data, Env>;\n }\n }\n\n return undefined;\n}\n\nfunction readCloudflareModuleExport(module: object, name: string): unknown {\n const descriptor = Object.getOwnPropertyDescriptor(module, name);\n if (descriptor === undefined) {\n return undefined;\n }\n\n if (\"value\" in descriptor) {\n return descriptor.value;\n }\n\n return descriptor.get?.call(module);\n}\n\nconst cloudflareDiagnosticPageModuleExportNames = [\"default\", \"App\", \"CloudflareRouteComponent\", \"slots\"] as const;\n\n// Fixed names + typeof only (never values) so the 500 response is useful without\n// listing app-specific export names. Accessors are not invoked.\nfunction describeCloudflareModuleExports(module: object): string {\n const described = cloudflareDiagnosticPageModuleExportNames.map(\n (name) => `${name}=${typeofCloudflareModuleExport(module, name)}`,\n );\n\n return described.join(\", \");\n}\n\nfunction typeofCloudflareModuleExport(module: object, name: string): string {\n const descriptor = Object.getOwnPropertyDescriptor(module, name);\n if (descriptor === undefined) {\n return \"absent\";\n }\n\n if (!(\"value\" in descriptor)) {\n return \"accessor\";\n }\n\n return typeof descriptor.value;\n}\n\nasync function dispatchCloudflareMetadataRoute(\n module: CloudflareMetadataRouteModule,\n request: Request,\n context: CloudflareBuiltRouteRenderContext & { request: Request },\n): Promise<Response> {\n if (request.method !== \"GET\" && request.method !== \"HEAD\") {\n return new Response(\"Method Not Allowed\", {\n headers: { allow: \"GET, HEAD\" },\n status: 405,\n });\n }\n\n if (typeof module.default !== \"function\") {\n return new Response(\"Invalid metadata route response\", { status: 500 });\n }\n\n const url = new URL(request.url);\n const value = await module.default({\n baseUrl: url.origin,\n host: url.host,\n params: context.params,\n request,\n });\n\n if (value instanceof Response) {\n return value;\n }\n\n if (context.route.kind !== \"metadata\") {\n return new Response(\"Invalid metadata route convention\", { status: 500 });\n }\n\n if (context.route.convention === \"robots\") {\n return new Response(serializeCloudflareRobots(value as RobotsManifest), {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": \"text/plain; charset=utf-8\",\n },\n });\n }\n\n if (context.route.convention === \"sitemap\") {\n return new Response(serializeCloudflareSitemap(value as readonly SitemapEntry[]), {\n headers: {\n \"cache-control\": \"no-cache\",\n \"content-type\": \"application/xml; charset=utf-8\",\n },\n });\n }\n\n if (context.route.convention === \"manifest\") {\n return new Response(JSON.stringify(value as ManifestDescriptor), {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": \"application/manifest+json; charset=utf-8\",\n },\n });\n }\n\n if (context.route.convention === \"opengraph-image\") {\n const body = value instanceof Uint8Array ? value.slice().buffer : String(value);\n return new Response(body, {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": typeof value === \"string\" && value.trimStart().startsWith(\"<svg\")\n ? \"image/svg+xml\"\n : \"application/octet-stream\",\n },\n });\n }\n\n return new Response(\"Invalid metadata route convention\", { status: 500 });\n}\n\nfunction isCloudflareNavigationRequest(request: Request): boolean {\n return request.headers.get(\"x-mreact-navigation\") === \"1\";\n}\n\nfunction cloudflareDocumentReloadNavigationResponse(): Response {\n return new Response(null, {\n headers: { \"x-mreact-navigation\": \"reload\" },\n status: 204,\n });\n}\n\nfunction withDefaultSecurityHeaders(\n response: Response,\n request: Request,\n metadata?: RouteMetadata | undefined,\n): Response {\n const headers = new Headers(response.headers);\n const csp = contentSecurityPolicy(metadata?.csp);\n\n if (\n isHtmlContentType(headers.get(\"content-type\")) &&\n csp !== undefined &&\n !headers.has(\"content-security-policy\")\n ) {\n headers.set(\"content-security-policy\", csp);\n }\n\n for (const [name, value] of Object.entries(\n routeSecurityHeaders({ request, security: metadata?.security }),\n )) {\n if (!headers.has(name)) {\n headers.set(name, value);\n }\n }\n\n return new Response(response.body, {\n headers,\n status: response.status,\n statusText: response.statusText,\n });\n}\n\n/**\n * Validates and normalizes a Vite `import.meta.glob` map into a Cloudflare route module registry.\n *\n * Every manifest route that needs a module must be present, and extra glob entries are rejected to catch stale generated workers.\n */\nexport function collectCloudflareRouteModules<Env = unknown>(\n glob: CloudflareRouteModuleGlob<Env>,\n options: CollectCloudflareRouteModulesOptions,\n): CloudflareRouteModuleRegistry<Env> {\n const requiredRoutes = options.manifest.routes.filter((route) =>\n cloudflareRouteRequiresModule(route, options.manifest),\n );\n const matchedKeys = new Set<string>();\n const modules: CloudflareRouteModuleRegistry<Env> = {};\n\n for (const route of requiredRoutes) {\n const match = Object.entries(glob).find(([key]) =>\n cloudflareRouteGlobKeyMatchesRoute(key, route.file),\n );\n\n if (match === undefined) {\n throw new Error(`Missing Cloudflare route module for ${route.file}.`);\n }\n\n const [key, module] = match;\n matchedKeys.add(key);\n modules[route.file] = module;\n }\n\n const extraKeys = Object.keys(glob).filter((key) => !matchedKeys.has(key));\n\n if (extraKeys.length > 0) {\n throw new Error(`Extra Cloudflare route module entries: ${extraKeys.join(\", \")}.`);\n }\n\n return modules;\n}\n\n/**\n * Creates a Cloudflare asset loader that forwards only manifest-listed client and public asset paths.\n *\n * This keeps the Worker from passing arbitrary paths to the `ASSETS` binding while still serving generated route scripts, CSS, imports, source maps, and allowed public files.\n */\nexport function createCloudflareStaticAssetLoader<Env = unknown>(\n options: CloudflareStaticAssetLoaderOptions<Env>,\n): CloudflareAssetLoader<Env> {\n const prefix = normalizeAssetPrefix(options.prefix ?? clientPrefix);\n const allowedPaths = cloudflareClientAssetPaths(options.clientManifest, {\n extraPaths: options.extraPaths,\n prefix,\n });\n\n return {\n async fetch(pathname, request, env) {\n if (!allowedPaths.has(pathname)) {\n return undefined;\n }\n\n const binding =\n typeof options.binding === \"function\" ? await options.binding(env) : options.binding;\n\n if (binding === undefined) {\n return undefined;\n }\n\n const assetUrl = new URL(request.url);\n assetUrl.pathname = pathname;\n assetUrl.search = \"\";\n\n return await binding.fetch(new Request(assetUrl, request));\n },\n };\n}\n\n/**\n * Returns the set of client and public asset paths a Cloudflare Worker is allowed to serve.\n */\nexport function cloudflareClientAssetPaths(\n manifest: CloudflareClientManifest,\n options: { extraPaths?: readonly string[] | undefined; prefix?: string | undefined } = {},\n): Set<string> {\n const prefix = normalizeAssetPrefix(options.prefix ?? clientPrefix);\n const paths = new Set<string>([`${prefix}manifest.json`]);\n\n for (const route of manifest.routes) {\n for (const asset of [\n route.script,\n route.sourceMap,\n route.navigationScript,\n ...(route.css ?? []),\n ...(route.imports ?? []),\n ]) {\n const path = safeClientAssetPath(prefix, asset);\n\n if (path !== undefined) {\n paths.add(path);\n }\n }\n }\n\n for (const asset of manifest.assets ?? []) {\n const path = safeClientAssetPath(prefix, asset);\n\n if (path !== undefined) {\n paths.add(path);\n }\n }\n\n for (const extraPath of options.extraPaths ?? []) {\n const path = safeClientAssetPath(prefix, extraPath);\n\n if (path !== undefined) {\n paths.add(path);\n }\n }\n\n for (const publicAsset of manifest.publicAssets ?? []) {\n const path = safePublicAssetPath(publicAsset);\n\n if (path !== undefined) {\n paths.add(path);\n }\n }\n\n return paths;\n}\n\nfunction safePublicAssetPath(asset: string): string | undefined {\n if (!asset.startsWith(\"/\") || asset.startsWith(\"//\") || asset.includes(\"..\")) {\n return undefined;\n }\n\n return asset;\n}\n\n/**\n * Creates an app-router prerender store backed by the Cloudflare Cache API.\n *\n * Keys are represented as synthetic requests so Workers cache entries can be shared by path and optional key prefix.\n */\nexport function createCloudflarePrerenderStore(\n options: CloudflarePrerenderStoreOptions,\n): AppRouterPrerenderStore {\n return {\n async delete(path) {\n await options.cache.delete(prerenderCacheRequest(options, path));\n },\n async get(path) {\n const response = await options.cache.match(prerenderCacheRequest(options, path));\n\n if (response === undefined) {\n return undefined;\n }\n\n return (await response.json()) as BuiltPrerenderedRoute;\n },\n async set(path, entry) {\n await options.cache.put(\n prerenderCacheRequest(options, path),\n Response.json(entry, {\n headers: { \"cache-control\": \"no-store\" },\n }),\n );\n },\n };\n}\n\nasync function handleCloudflareRequest<Env>(\n options: CloudflareRequestHandlerOptions<Env>,\n request: Request,\n env: Env,\n context: CloudflareExecutionContext,\n): Promise<Response> {\n const startedAt = logNow();\n const logFields = requestLogFields(request, \"cloudflare\");\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n type: \"router:request:start\",\n });\n emitRouterDevtoolsEvent({\n method: request.method,\n type: \"router:request:start\",\n url: request.url,\n });\n\n const url = new URL(request.url);\n\n if (\n url.pathname.startsWith(clientPrefix) ||\n isCloudflarePublicAssetPath(options.clientManifest, url.pathname)\n ) {\n const response = await options.assets?.fetch?.(url.pathname, request, env, context);\n const assetResponse = await applyCloudflareResponseHook(\n response ?? new Response(\"Not Found\", { status: 404 }),\n options,\n request,\n );\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n status: assetResponse.status,\n type: \"router:request:end\",\n });\n return assetResponse;\n }\n\n const staticResponse = prerenderedResponse(\n options.serverManifest.prerenderedRoutes,\n normalizeRoutePath(url.pathname),\n request.method,\n isCloudflareNavigationRequest(request),\n );\n\n if (staticResponse !== undefined) {\n emitRouterDevtoolsEvent({\n method: request.method,\n status: staticResponse.status,\n type: \"router:request:end\",\n url: request.url,\n });\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n status: staticResponse.status,\n type: \"router:request:end\",\n });\n return await applyCloudflareResponseHook(staticResponse, options, request);\n }\n\n if (options.render === undefined) {\n const notFoundResponse = await applyCloudflareResponseHook(\n new Response(\"Not Found\", { status: 404 }),\n options,\n request,\n );\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n status: notFoundResponse.status,\n type: \"router:request:end\",\n });\n return notFoundResponse;\n }\n\n const renderedResponse = await options.render(request, {\n clientManifest: options.clientManifest,\n context,\n env,\n serverManifest: options.serverManifest,\n });\n const response = await applyCloudflareResponseHook(\n preserveCloudflareStreamedHtmlResponse(renderedResponse),\n options,\n request,\n );\n emitRouterDevtoolsEvent({\n method: request.method,\n status: response.status,\n type: \"router:request:end\",\n url: request.url,\n });\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n status: response.status,\n type: \"router:request:end\",\n });\n\n return response;\n}\n\nfunction isCloudflarePublicAssetPath(manifest: CloudflareClientManifest, pathname: string): boolean {\n return (manifest.publicAssets ?? []).includes(pathname);\n}\n\nasync function applyCloudflareResponseHook<Env>(\n response: Response,\n options: Pick<CloudflareRequestHandlerOptions<Env>, \"onResponse\">,\n request: Request,\n): Promise<Response> {\n const hooked = await options.onResponse?.(response, { request });\n\n return hooked instanceof Response ? hooked : response;\n}\n\nfunction preserveCloudflareStreamedHtmlResponse(response: Response): Response {\n if (\n response.headers.get(\"x-mreact-stream\") !== \"1\" ||\n !isHtmlContentType(response.headers.get(\"content-type\"))\n ) {\n return response;\n }\n\n const headers = new Headers(response.headers);\n const cacheControl = headers.get(\"cache-control\");\n\n if (!cacheControlHasDirective(cacheControl, \"no-transform\")) {\n headers.set(\n \"cache-control\",\n cacheControl === null || cacheControl.trim() === \"\"\n ? \"no-transform\"\n : `${cacheControl}, no-transform`,\n );\n }\n\n if (headers.get(\"content-encoding\") === null) {\n headers.set(\"content-encoding\", \"identity\");\n }\n\n return new Response(response.body, {\n headers,\n status: response.status,\n statusText: response.statusText,\n });\n}\n\nfunction isHtmlContentType(contentType: string | null): boolean {\n return contentType?.toLowerCase().split(\";\", 1)[0]?.trim() === \"text/html\";\n}\n\nfunction cacheControlHasDirective(cacheControl: string | null, directive: string): boolean {\n if (cacheControl === null) {\n return false;\n }\n\n const normalizedDirective = directive.toLowerCase();\n return cacheControl\n .split(\",\")\n .some((part) => part.trim().toLowerCase() === normalizedDirective);\n}\n\nfunction prerenderedResponse(\n prerenderedRoutes: Record<string, BuiltPrerenderedRoute> | undefined,\n path: string,\n method: string,\n isNavigation: boolean,\n): Response | undefined {\n if (method !== \"GET\" && method !== \"HEAD\") {\n return undefined;\n }\n\n const prerendered = prerenderedRoutes?.[path];\n\n if (prerendered === undefined) {\n return undefined;\n }\n\n if (isNavigation && !prerendered.html.includes(\"data-mreact-route-id\")) {\n return cloudflareDocumentReloadNavigationResponse();\n }\n\n return new Response(method === \"HEAD\" ? null : prerendered.html, {\n headers: prerendered.headers,\n status: prerendered.status,\n });\n}\n\nfunction cloudflareRouteRequiresModule(\n route: AppRoute,\n manifest: BuiltServerManifest,\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 manifest.prerenderedRoutes?.[route.path] === undefined))\n );\n}\n\nfunction cloudflareRouteGlobKeyMatchesRoute(key: string, routeFile: string): boolean {\n const normalizedKey = normalizeCloudflareRouteModulePath(key);\n const normalizedRoute = normalizeCloudflareRouteModulePath(routeFile);\n\n return (\n normalizedKey === normalizedRoute ||\n normalizedKey.endsWith(`/${normalizedRoute}`)\n );\n}\n\nfunction normalizeCloudflareRouteModulePath(path: string): string {\n const withoutPrefix = path\n .replace(/\\\\/g, \"/\")\n .replace(/^\\.\\//, \"\")\n .replace(/^\\/+/, \"\");\n\n return withoutPrefix.replace(/\\.(?:mjs|js|ts|tsx)$/, \"\");\n}\n\nfunction matchCloudflareRoute(\n routes: readonly AppRoute[],\n pathname: string,\n): { params: Record<string, readonly string[] | string>; route: AppRoute } | undefined {\n const normalizedPath = normalizeRoutePath(pathname);\n const pathSegments = normalizedPath === \"/\" ? [] : normalizedPath.slice(1).split(\"/\");\n\n for (const route of routes) {\n const params: Record<string, readonly string[] | string> = {};\n const catchAllIndex = route.segments.findIndex((segment) => segment.kind === \"catch-all\");\n\n if (catchAllIndex === -1 && route.segments.length !== pathSegments.length) {\n continue;\n }\n\n if (\n catchAllIndex !== -1 &&\n pathSegments.length <\n catchAllIndex + 1 + route.segments.length - catchAllIndex - 1\n ) {\n continue;\n }\n\n let matched = true;\n\n for (const [index, segment] of route.segments.entries()) {\n const value = pathSegments[index];\n\n if (value === undefined) {\n matched = false;\n break;\n }\n\n if (segment.kind === \"static\") {\n if (segment.value !== value) {\n matched = false;\n break;\n }\n continue;\n }\n\n if (segment.kind === \"dynamic\") {\n const decoded = safeDecodePathSegment(value);\n if (decoded === undefined) {\n matched = false;\n break;\n }\n params[segment.name] = decoded;\n continue;\n }\n\n const suffixSegments = route.segments.slice(index + 1);\n const catchAllEnd = pathSegments.length - suffixSegments.length;\n\n if (catchAllEnd <= index) {\n matched = false;\n break;\n }\n\n const decodedParts: string[] = [];\n for (const part of pathSegments.slice(index, catchAllEnd)) {\n const decoded = safeDecodePathSegment(part);\n if (decoded === undefined) {\n matched = false;\n break;\n }\n decodedParts.push(decoded);\n }\n params[segment.name] = decodedParts;\n\n for (let suffixIndex = 0; suffixIndex < suffixSegments.length; suffixIndex += 1) {\n const suffixSegment = suffixSegments[suffixIndex];\n const suffixValue = pathSegments[catchAllEnd + suffixIndex];\n\n if (suffixSegment === undefined || suffixValue === undefined) {\n matched = false;\n break;\n }\n\n if (suffixSegment.kind === \"static\") {\n if (suffixSegment.value !== suffixValue) {\n matched = false;\n break;\n }\n continue;\n }\n\n if (suffixSegment.kind === \"dynamic\") {\n const decoded = safeDecodePathSegment(suffixValue);\n if (decoded === undefined) {\n matched = false;\n break;\n }\n params[suffixSegment.name] = decoded;\n continue;\n }\n\n matched = false;\n break;\n }\n\n break;\n }\n\n if (matched) {\n return { params, route };\n }\n }\n\n return undefined;\n}\n\nfunction compareCloudflareRoutes(a: AppRoute, b: AppRoute): number {\n const scoreDelta = routeSpecificityScore(b) - routeSpecificityScore(a);\n\n return scoreDelta === 0 ? a.path.localeCompare(b.path) || a.kind.localeCompare(b.kind) : scoreDelta;\n}\n\nfunction routeSpecificityScore(route: AppRoute): number {\n return route.segments.reduce((score, segment) => {\n if (segment.kind === \"static\") {\n return score + 100;\n }\n\n if (segment.kind === \"dynamic\") {\n return score + 10;\n }\n\n return score;\n }, route.segments.length);\n}\n\nfunction safeDecodePathSegment(segment: string): string | undefined {\n try {\n return decodeURIComponent(segment);\n } catch {\n return undefined;\n }\n}\n\nfunction normalizeAssetPrefix(prefix: string): string {\n const withLeadingSlash = prefix.startsWith(\"/\") ? prefix : `/${prefix}`;\n\n return withLeadingSlash.endsWith(\"/\") ? withLeadingSlash : `${withLeadingSlash}/`;\n}\n\nfunction safeClientAssetPath(prefix: string, asset: string | undefined): string | undefined {\n if (asset === undefined || asset === \"\" || asset.startsWith(\"/\") || asset.includes(\"\\\\\")) {\n return undefined;\n }\n\n const segments = asset.split(\"/\");\n\n if (segments.some((segment) => unsafeAssetSegment(segment))) {\n return undefined;\n }\n\n return `${prefix}${segments.join(\"/\")}`;\n}\n\nfunction withCloudflareHydrationMarkers(options: {\n data: unknown;\n html: string;\n manifest: CloudflareClientManifest;\n params: Record<string, readonly string[] | string>;\n request: Request;\n routePath: string;\n}): string {\n const marker = cloudflareHydrationMarkerParts(options);\n\n return marker.prefix === \"\" && marker.suffix === \"\"\n ? options.html\n : `${marker.prefix}${options.html}${marker.suffix}`;\n}\n\nfunction cloudflareHydrationMarkerParts(options: {\n data: unknown;\n manifest: CloudflareClientManifest;\n params: Record<string, readonly string[] | string>;\n request: Request;\n routePath: string;\n}): { prefix: string; suffix: string } {\n const route = options.manifest.routes.find(\n (route) => route.path === options.routePath && route.client === true,\n );\n\n if (route?.script === undefined) {\n return { prefix: \"\", suffix: \"\" };\n }\n\n const routeId = route.routeId ?? cloudflareRouteIdForPath(options.routePath);\n const escapedRouteId = escapeHtmlAttribute(routeId);\n const propsJson = escapeScriptJson(\n JSON.stringify({\n params: options.params,\n request: { url: options.request.url },\n data: options.data,\n }),\n );\n const clientReferencesJson =\n route.clientReferenceManifest === undefined || route.clientReferenceManifest.length === 0\n ? undefined\n : escapeScriptJson(JSON.stringify(route.clientReferenceManifest));\n\n return {\n prefix: `<div data-mreact-route-id=\"${escapedRouteId}\">`,\n suffix: [\n \"</div>\",\n `<script type=\"application/json\" id=\"mreact-props-${escapedRouteId}\">${propsJson}</script>`,\n clientReferencesJson === undefined\n ? undefined\n : `<script type=\"application/json\" id=\"mreact-client-references-${escapedRouteId}\">${clientReferencesJson}</script>`,\n `<script type=\"module\" src=\"/_mreact/client/${escapeHtmlAttribute(route.script)}\"></script>`,\n ]\n .filter((part): part is string => part !== undefined)\n .join(\"\"),\n };\n}\n\nfunction escapeScriptJson(json: string): string {\n return escapeJsonForHtml(json);\n}\n\nfunction escapeJsonForHtml(value: string): string {\n return value\n .replaceAll(\"&\", \"\\\\u0026\")\n .replaceAll(\"<\", \"\\\\u003c\")\n .replaceAll(\">\", \"\\\\u003e\")\n .replaceAll(\"\\u2028\", \"\\\\u2028\")\n .replaceAll(\"\\u2029\", \"\\\\u2029\");\n}\n\nfunction cloudflareRouteIdForPath(path: string): string {\n if (path === \"/\") {\n return \"index\";\n }\n\n return path\n .slice(1)\n .replaceAll(\"/\", \"_\")\n .replaceAll(\":\", \"_\")\n .replace(/[^A-Za-z0-9_$-]/g, \"_\");\n}\n\nfunction unsafeAssetSegment(segment: string): boolean {\n if (segment === \"\" || segment === \".\" || segment === \"..\") {\n return true;\n }\n\n try {\n const decoded = decodeURIComponent(segment);\n return decoded === \".\" || decoded === \"..\" || decoded.includes(\"/\") || decoded.includes(\"\\\\\");\n } catch {\n return true;\n }\n}\n\nasync function loadCloudflareRouteModule<Env>(\n modules: CloudflareRouteModuleRegistry<Env>,\n file: string,\n): Promise<CloudflareRouteModuleRegistryEntry<Env> | undefined> {\n const entry = modules[file];\n\n return typeof entry === \"function\" ? await entry() : entry;\n}\n\nfunction cloudflareModulePreloadTag(manifest: CloudflareClientManifest, routePath: string): string {\n const script = manifest.routes.find((route) => route.path === routePath)?.script;\n\n return script === undefined\n ? \"\"\n : `<link rel=\"modulepreload\" href=\"/_mreact/client/${escapeHtmlAttribute(script)}\">`;\n}\n\nasync function resolveCloudflareRouteMetadata<Data, Env>(\n modules: readonly CloudflareRouteModule<Data, Env>[],\n context: GenerateMetadataContext<Data>,\n): Promise<RouteMetadata | undefined> {\n const metadata: RouteMetadata[] = [];\n\n for (const module of modules) {\n let next = validateRouteMetadata(module.metadata);\n\n if (module.generateMetadata !== undefined) {\n const generated = await module.generateMetadata(context);\n next = mergeCloudflareRouteMetadata(\n [next, validateRouteMetadata(generated, \"generateMetadata\")].filter(\n isCloudflareRouteMetadata,\n ),\n );\n }\n\n if (next !== undefined) {\n metadata.push(next);\n }\n }\n\n return validateRouteMetadata(mergeCloudflareRouteMetadata(metadata));\n}\n\nfunction isCloudflareRouteMetadata(value: RouteMetadata | undefined): value is RouteMetadata {\n return value !== undefined;\n}\n\nfunction mergeCloudflareRouteMetadata(metadata: readonly RouteMetadata[]): RouteMetadata | undefined {\n if (metadata.length === 0) {\n return undefined;\n }\n\n return metadata.reduce<RouteMetadata>((merged, next) => {\n const openGraph = mergeCloudflareMetadataObject(merged.openGraph, next.openGraph);\n const openGraphImages = mergeCloudflareMetadataArrays(\n merged.openGraph?.images,\n next.openGraph?.images,\n );\n\n const alternates = mergeCloudflareMetadataObject(merged.alternates, next.alternates);\n const csp = mergeCloudflareMetadataObject(merged.csp, next.csp);\n const head = mergeCloudflareMetadataArrays(merged.head, next.head);\n const icons = mergeCloudflareMetadataObject(merged.icons, next.icons);\n const mergedMetadata: RouteMetadata = {\n ...merged,\n ...next,\n ...(alternates === undefined ? {} : { alternates }),\n ...(csp === undefined ? {} : { csp }),\n ...(head === undefined ? {} : { head }),\n ...(icons === undefined ? {} : { icons }),\n ...(openGraph === undefined && openGraphImages === undefined\n ? {}\n : { openGraph: { ...openGraph, ...(openGraphImages === undefined ? {} : { images: openGraphImages }) } }),\n };\n\n return mergedMetadata;\n }, {});\n}\n\nfunction mergeCloudflareMetadataObject<T extends object>(\n left: T | undefined,\n right: T | undefined,\n): T | undefined {\n if (left === undefined) {\n return right;\n }\n if (right === undefined) {\n return left;\n }\n\n return { ...left, ...right };\n}\n\nfunction mergeCloudflareMetadataArrays<T>(\n left: readonly T[] | undefined,\n right: readonly T[] | undefined,\n): readonly T[] | undefined {\n if (left === undefined || left.length === 0) {\n return right;\n }\n if (right === undefined || right.length === 0) {\n return left;\n }\n\n return [...left, ...right];\n}\n\nfunction defaultCloudflareDocument(\n body: string,\n modulePreload: string,\n metadata: RouteMetadata | undefined,\n): string {\n return `<!DOCTYPE html><html><head>${modulePreload}${cloudflareMetadataTitle(metadata)}</head><body>${body}</body></html>`;\n}\n\nfunction cloudflareMetadataTitle(metadata: RouteMetadata | undefined): string {\n if (metadata?.title === undefined) {\n return \"\";\n }\n\n return `<title>${escapeHtmlText(metadataString(metadata.title))}</title>`;\n}\n\nfunction metadataString(value: boolean | number | string): string {\n return String(value);\n}\n\nfunction serializeCloudflareRobots(manifest: RobotsManifest): string {\n const lines: string[] = [];\n const rules =\n manifest.rules === undefined\n ? []\n : Array.isArray(manifest.rules)\n ? manifest.rules\n : [manifest.rules];\n\n for (const rule of rules) {\n for (const userAgent of arrayValue(rule.userAgent)) {\n lines.push(`User-agent: ${userAgent}`);\n }\n for (const allow of arrayValue(rule.allow)) {\n lines.push(`Allow: ${allow}`);\n }\n for (const disallow of arrayValue(rule.disallow)) {\n lines.push(`Disallow: ${disallow}`);\n }\n }\n\n for (const sitemap of arrayValue(manifest.sitemap)) {\n lines.push(`Sitemap: ${sitemap}`);\n }\n if (manifest.host !== undefined) {\n lines.push(`Host: ${manifest.host}`);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction serializeCloudflareSitemap(entries: readonly SitemapEntry[]): string {\n const urls = entries\n .map((entry) => {\n const fields = [\n `<loc>${escapeXml(entry.url)}</loc>`,\n entry.lastModified === undefined\n ? undefined\n : `<lastmod>${escapeXml(sitemapDate(entry.lastModified))}</lastmod>`,\n entry.changeFrequency === undefined\n ? undefined\n : `<changefreq>${escapeXml(entry.changeFrequency)}</changefreq>`,\n entry.priority === undefined ? undefined : `<priority>${entry.priority}</priority>`,\n ].filter((field): field is string => field !== undefined);\n\n return `<url>${fields.join(\"\")}</url>`;\n })\n .join(\"\");\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?><urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">${urls}</urlset>`;\n}\n\nfunction sitemapDate(value: Date | number | string): string {\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n return typeof value === \"number\" ? new Date(value).toISOString() : value;\n}\n\nfunction arrayValue<T>(value: T | readonly T[] | undefined): readonly T[] {\n if (value === undefined) {\n return [];\n }\n\n return Array.isArray(value) ? (value as readonly T[]) : [value as T];\n}\n\nfunction escapeXml(value: string): string {\n return value\n .replaceAll(\"&\", \"&amp;\")\n .replaceAll(\"<\", \"&lt;\")\n .replaceAll(\">\", \"&gt;\")\n .replaceAll('\"', \"&quot;\");\n}\n\nfunction cloudflareNotFoundResponse(request: Request): Response {\n return withDefaultSecurityHeaders(\n new Response(\"<!DOCTYPE html><html><head></head><body>Not Found</body></html>\", {\n headers: { \"content-type\": \"text/html; charset=utf-8\" },\n status: 404,\n }),\n request,\n );\n}\n\nfunction prerenderCacheRequest(options: CloudflarePrerenderStoreOptions, path: string): Request {\n const origin = options.keyOrigin ?? defaultPrerenderCacheOrigin;\n const prefix = options.keyPrefix ?? defaultPrerenderCachePrefix;\n const normalizedPath = normalizeRoutePath(path.startsWith(\"/\") ? path : `/${path}`);\n const url = new URL(`${normalizePrerenderPrefix(prefix)}${normalizedPath}`, origin);\n\n return new Request(url, { method: \"GET\" });\n}\n\nfunction normalizePrerenderPrefix(prefix: string): string {\n const withLeadingSlash = prefix.startsWith(\"/\") ? prefix : `/${prefix}`;\n\n return withLeadingSlash.replace(/\\/+$/, \"\");\n}\n"]}
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BuiltPrerenderedRoute, BuiltServerManifest } from \"../build.js\";\nimport type { ClientRouteManifestEntry } from \"../client.js\";\nimport type { AppRouterResponseHook } from \"../render.js\";\nimport {\n __MREACT_QUERY_STATE_SCRIPT_ID,\n createQueryClient,\n dehydrate,\n installQueryAsyncStorage,\n isQueryClientScopeUnavailableError,\n runWithQueryClient,\n type DehydratedQueryClient,\n type QueryAsyncStorage,\n type QueryClient,\n} from \"@reckona/mreact-query\";\nimport type {\n GenerateMetadataContext,\n ManifestDescriptor,\n RobotsManifest,\n RouteMetadata,\n SitemapEntry,\n} from \"../types.js\";\nimport {\n emitRouterLog,\n logDurationMs,\n logError,\n logNow,\n requestLogFields,\n type AppRouterLogger,\n} from \"../logger.js\";\nimport { normalizeRoutePath } from \"../route-path.js\";\nimport type { AppRoute } from \"../routes.js\";\nimport { contentSecurityPolicy } from \"../csp.js\";\nimport { isNotFoundError } from \"../navigation.js\";\nimport { validateRouteMetadata } from \"../metadata.js\";\nimport { routeSecurityHeaders } from \"../security-headers.js\";\nimport type { AppRouterPrerenderStore } from \"../serve.js\";\nimport { emitRouterDevtoolsEvent } from \"./devtools.js\";\nimport { escapeHtmlAttribute, escapeHtmlText } from \"@reckona/mreact-shared/html-escape\";\n\nexport interface CloudflareExecutionContext {\n passThroughOnException(): void;\n waitUntil(promise: Promise<unknown>): void;\n}\n\nexport interface CloudflareAssetLoader<Env = unknown> {\n fetch?:\n | ((\n pathname: string,\n request: Request,\n env: Env,\n context: CloudflareExecutionContext,\n ) => Response | Promise<Response | undefined> | undefined)\n | undefined;\n}\n\nexport interface CloudflareRenderContext<Env = unknown> {\n clientManifest: CloudflareClientManifest;\n context: CloudflareExecutionContext;\n env: Env;\n serverManifest: BuiltServerManifest;\n}\n\nexport interface CloudflareRequestHandlerOptions<Env = unknown> {\n assets?: CloudflareAssetLoader<Env> | undefined;\n clientManifest: CloudflareClientManifest;\n logger?: AppRouterLogger | undefined;\n onResponse?: AppRouterResponseHook | undefined;\n onError?:\n | ((\n error: unknown,\n request: Request,\n env: Env,\n context: CloudflareExecutionContext,\n ) => Response | Promise<Response>)\n | undefined;\n render?:\n | ((request: Request, context: CloudflareRenderContext<Env>) => Response | Promise<Response>)\n | undefined;\n serverManifest: BuiltServerManifest;\n}\n\nexport interface CloudflareRequestHandler<Env = unknown> {\n fetch(request: Request, env: Env, context: CloudflareExecutionContext): Promise<Response>;\n}\n\nexport interface CloudflareBuiltRouteRenderContext<\n Env = unknown,\n> extends CloudflareRenderContext<Env> {\n params: Record<string, readonly string[] | string>;\n route: AppRoute;\n}\n\nexport interface CloudflareRouteModuleLoaderContext<\n Env = unknown,\n> extends CloudflareBuiltRouteRenderContext<Env> {\n queryClient: QueryClient;\n request: Request;\n}\n\nexport interface CloudflareServerRouteContext<\n Env = unknown,\n> extends CloudflareBuiltRouteRenderContext<Env> {\n request: Request;\n}\n\nexport interface CloudflareRouteModuleComponentProps<\n Data = unknown,\n Env = unknown,\n> extends CloudflareBuiltRouteRenderContext<Env> {\n data: Data;\n queryClient: QueryClient;\n request: Request;\n}\n\nexport type CloudflareRouteModuleComponent<Data = unknown, Env = unknown> = (\n props: CloudflareRouteModuleComponentProps<Data, Env>,\n) => Response | string | PromiseLike<Response | string>;\n\nexport interface CloudflareRouteModule<Data = unknown, Env = unknown> {\n App?: CloudflareRouteModuleComponent<Data, Env> | undefined;\n CloudflareRouteComponent?: CloudflareRouteModuleComponent<Data, Env> | undefined;\n default?: CloudflareRouteModuleComponent<Data, Env> | undefined;\n generateMetadata?:\n | ((\n context: GenerateMetadataContext<Data>,\n ) => RouteMetadata | PromiseLike<RouteMetadata | undefined> | undefined)\n | undefined;\n loader?:\n | ((context: CloudflareRouteModuleLoaderContext<Env>) => Data | PromiseLike<Data>)\n | undefined;\n metadata?: RouteMetadata | undefined;\n}\n\nexport type CloudflareServerRouteHandler<Env = unknown> = (\n request: Request,\n context: CloudflareServerRouteContext<Env>,\n) => unknown | PromiseLike<unknown>;\n\nexport interface CloudflareServerRouteModule<Env = unknown> {\n ALL?: CloudflareServerRouteHandler<Env> | undefined;\n DELETE?: CloudflareServerRouteHandler<Env> | undefined;\n default?: CloudflareServerRouteHandler<Env> | undefined;\n GET?: CloudflareServerRouteHandler<Env> | undefined;\n HEAD?: CloudflareServerRouteHandler<Env> | undefined;\n OPTIONS?: CloudflareServerRouteHandler<Env> | undefined;\n PATCH?: CloudflareServerRouteHandler<Env> | undefined;\n POST?: CloudflareServerRouteHandler<Env> | undefined;\n PUT?: CloudflareServerRouteHandler<Env> | undefined;\n}\n\nexport interface CloudflareMetadataRouteContext {\n baseUrl: string;\n host: string;\n params: Record<string, readonly string[] | string>;\n request: Request;\n}\n\nexport interface CloudflareMetadataRouteModule {\n default?: ((context: CloudflareMetadataRouteContext) => unknown | PromiseLike<unknown>) | undefined;\n}\n\nexport type CloudflareRouteModuleRegistryEntry<Env = unknown> =\n | CloudflareRouteModule<unknown, Env>\n | CloudflareMetadataRouteModule\n | CloudflareServerRouteModule<Env>;\n\nexport type CloudflareRouteModuleRegistry<Env = unknown> = Record<\n string,\n | CloudflareRouteModuleRegistryEntry<Env>\n | (() => CloudflareRouteModuleRegistryEntry<Env> | PromiseLike<CloudflareRouteModuleRegistryEntry<Env>>)\n>;\n\nexport interface CloudflareRouteModuleRendererOptions<Env = unknown> {\n document?:\n | ((\n context: CloudflareRouteModuleComponentProps<unknown, Env> & {\n body: string;\n modulePreload: string;\n },\n ) => Response | string | PromiseLike<Response | string>)\n | undefined;\n modules: CloudflareRouteModuleRegistry<Env>;\n}\n\nexport type CloudflareRouteModuleGlob<Env = unknown> = Record<\n string,\n | CloudflareRouteModuleRegistryEntry<Env>\n | (() => CloudflareRouteModuleRegistryEntry<Env> | PromiseLike<CloudflareRouteModuleRegistryEntry<Env>>)\n>;\n\nexport interface CollectCloudflareRouteModulesOptions {\n manifest: BuiltServerManifest;\n}\n\nexport interface CloudflareBuiltRequestHandlerOptions<Env = unknown> extends Omit<\n CloudflareRequestHandlerOptions<Env>,\n \"render\"\n> {\n renderRoute?:\n | ((\n request: Request,\n context: CloudflareBuiltRouteRenderContext<Env>,\n ) => Response | Promise<Response>)\n | undefined;\n}\n\nexport interface CloudflareClientManifest {\n assets?: readonly string[] | undefined;\n publicAssets?: readonly string[] | undefined;\n routes: ClientRouteManifestEntry[];\n}\n\nexport interface CloudflareAssetBinding {\n fetch(request: Request): Response | Promise<Response>;\n}\n\nexport interface CloudflareStaticAssetLoaderOptions<Env = unknown> {\n binding:\n | CloudflareAssetBinding\n | ((\n env: Env,\n ) => CloudflareAssetBinding | Promise<CloudflareAssetBinding | undefined> | undefined);\n clientManifest: CloudflareClientManifest;\n extraPaths?: readonly string[] | undefined;\n prefix?: string | undefined;\n}\n\nexport interface CloudflareCache {\n delete(request: Request | string): boolean | Promise<boolean>;\n match(request: Request | string): Response | Promise<Response | undefined> | undefined;\n put(request: Request | string, response: Response): void | Promise<void>;\n}\n\nexport interface CloudflarePrerenderStoreOptions {\n cache: CloudflareCache;\n keyOrigin?: string | undefined;\n keyPrefix?: string | undefined;\n}\n\nconst clientPrefix = \"/_mreact/client/\";\nconst defaultPrerenderCacheOrigin = \"https://mreact.local\";\nconst defaultPrerenderCachePrefix = \"/_mreact/prerender\";\n\n/**\n * Creates a Cloudflare Worker `fetch` handler from manifests, asset loading, and an optional renderer.\n *\n * The handler serves generated client assets and prerendered routes before calling `render`, preserves streamed HTML responses, and routes errors through `onError` when provided.\n */\nexport function createCloudflareRequestHandler<Env = unknown>(\n options: CloudflareRequestHandlerOptions<Env>,\n): CloudflareRequestHandler<Env> {\n return {\n async fetch(request, env, context) {\n const startedAt = logNow();\n try {\n return await handleCloudflareRequest(options, request, env, context);\n } catch (error) {\n const logFields = requestLogFields(request, \"cloudflare\");\n emitRouterDevtoolsEvent({\n method: request.method,\n type: \"router:request:error\",\n url: request.url,\n });\n emitRouterLog(options.logger, \"error\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n error: logError(error),\n type: \"router:request:error\",\n });\n\n return await applyCloudflareResponseHook(\n options.onError === undefined\n ? new Response(\"Internal Server Error\", {\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n status: 500,\n })\n : await options.onError(error, request, env, context),\n options,\n request,\n );\n }\n },\n };\n}\n\n/**\n * Creates a Cloudflare Worker handler that matches built app-router routes before rendering.\n *\n * Pair it with `createCloudflareRouteModuleRenderer()` and the generated route module registry from Cloudflare-target builds.\n */\nexport function createCloudflareBuiltRequestHandler<Env = unknown>(\n options: CloudflareBuiltRequestHandlerOptions<Env>,\n): CloudflareRequestHandler<Env> {\n const sortedRoutes = [...options.serverManifest.routes].sort(compareCloudflareRoutes);\n\n return createCloudflareRequestHandler({\n ...options,\n render(request, context) {\n const matched = matchCloudflareRoute(\n sortedRoutes,\n new URL(request.url).pathname,\n );\n\n if (matched === undefined || options.renderRoute === undefined) {\n return new Response(\"Not Found\", { status: 404 });\n }\n\n return options.renderRoute(request, {\n ...context,\n params: matched.params,\n route: matched.route,\n });\n },\n });\n}\n\n/**\n * Creates the renderer used by the generated Cloudflare Worker route registry.\n *\n * It loads matched route modules, dispatches server route handlers, evaluates loaders and metadata, and renders page routes with Cloudflare request context.\n */\nexport function createCloudflareRouteModuleRenderer<Env = unknown>(\n options: CloudflareRouteModuleRendererOptions<Env>,\n): NonNullable<CloudflareBuiltRequestHandlerOptions<Env>[\"renderRoute\"]> {\n return async (request, context) => {\n if (context.route.kind !== \"server\" && isCloudflareNavigationRequest(request)) {\n return cloudflareDocumentReloadNavigationResponse();\n }\n\n const module = await loadCloudflareRouteModule(options.modules, context.route.file);\n\n if (module === undefined) {\n return new Response(`No Cloudflare route module registered for ${context.route.file}.`, {\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n status: 500,\n });\n }\n\n if (context.route.kind === \"server\") {\n return withDefaultSecurityHeaders(\n await dispatchCloudflareServerRoute(module as CloudflareServerRouteModule<Env>, request, {\n ...context,\n request,\n }),\n request,\n );\n }\n\n if (context.route.kind === \"metadata\") {\n return withDefaultSecurityHeaders(\n await dispatchCloudflareMetadataRoute(module as CloudflareMetadataRouteModule, request, {\n ...context,\n request,\n }),\n request,\n );\n }\n\n const pageModule = module as CloudflareRouteModule<unknown, Env>;\n const component = selectCloudflarePageComponent(pageModule);\n const queryClient = createQueryClient();\n\n if (component === undefined) {\n return new Response(\n `No Cloudflare page component registered for ${context.route.file}. Module exports: ${describeCloudflareModuleExports(pageModule)}.`,\n {\n headers: { \"content-type\": \"text/plain; charset=utf-8\" },\n status: 500,\n },\n );\n }\n\n const loaderContext = {\n ...context,\n queryClient,\n request,\n };\n let data: unknown;\n\n try {\n data =\n pageModule.loader === undefined\n ? undefined\n : await runWithCloudflareQueryClient(queryClient, () => pageModule.loader!(loaderContext));\n } catch (error) {\n if (error instanceof Response) {\n return error;\n }\n\n if (isNotFoundError(error)) {\n return cloudflareNotFoundResponse(request);\n }\n\n throw error;\n }\n const props = {\n ...context,\n data,\n queryClient,\n request,\n };\n let rendered: Awaited<ReturnType<typeof component>>;\n\n try {\n rendered = await runWithCloudflareQueryClient(queryClient, () => component(props));\n } catch (error) {\n if (isNotFoundError(error)) {\n return cloudflareNotFoundResponse(request);\n }\n\n throw error;\n }\n\n const metadata = await runWithCloudflareQueryClient(queryClient, () =>\n resolveCloudflareRouteMetadata([pageModule], props),\n );\n\n if (rendered instanceof Response) {\n return withDefaultSecurityHeaders(rendered, request, metadata);\n }\n\n const modulePreload = cloudflareModulePreloadTag(context.clientManifest, context.route.path);\n const body = withCloudflareHydrationMarkers({\n data,\n html: rendered,\n manifest: context.clientManifest,\n params: context.params,\n request,\n routePath: context.route.path,\n });\n const documented =\n options.document === undefined\n ? defaultCloudflareDocument(body, modulePreload, metadata)\n : await runWithCloudflareQueryClient(queryClient, () =>\n options.document!({\n ...props,\n body,\n modulePreload,\n }),\n );\n const documentedWithQueryState = await injectCloudflareQueryState(\n documented,\n dehydrate(queryClient),\n );\n\n return withDefaultSecurityHeaders(\n documentedWithQueryState instanceof Response\n ? documentedWithQueryState\n : new Response(documentedWithQueryState, {\n headers: { \"content-type\": \"text/html; charset=utf-8\" },\n }),\n request,\n metadata,\n );\n };\n}\n\nasync function injectCloudflareQueryState<T extends Response | string>(\n document: T,\n state: DehydratedQueryClient,\n): Promise<T | Response | string> {\n if (state.queries.length === 0) {\n return document;\n }\n\n if (typeof document === \"string\") {\n return injectCloudflareQueryStateScript(document, state);\n }\n\n const contentType = document.headers.get(\"content-type\") ?? \"\";\n if (!/^text\\/html\\b/i.test(contentType)) {\n return document;\n }\n\n const headers = new Headers(document.headers);\n headers.delete(\"content-length\");\n return new Response(injectCloudflareQueryStateScript(await document.text(), state), {\n headers,\n status: document.status,\n statusText: document.statusText,\n });\n}\n\nfunction injectCloudflareQueryStateScript(html: string, state: DehydratedQueryClient): string {\n const script = `<script type=\"application/json\" id=\"${__MREACT_QUERY_STATE_SCRIPT_ID}\">${escapeJsonForHtml(\n JSON.stringify(state),\n )}</script>`;\n\n return /<\\/body>/i.test(html)\n ? html.replace(/<\\/body>/i, () => `${script}</body>`)\n : `${html}${script}`;\n}\n\nasync function runWithCloudflareQueryClient<T>(\n queryClient: QueryClient,\n fn: () => T,\n): Promise<Awaited<T>> {\n try {\n return await runWithQueryClient(queryClient, fn);\n } catch (error) {\n if (isQueryClientScopeUnavailableError(error)) {\n installQueryAsyncStorage(cloudflareQueryClientStorage);\n return await runWithSerializedCloudflareQueryClient(queryClient, fn);\n }\n\n throw error;\n }\n}\n\nconst cloudflareQueryClientStorage = createCloudflareQueryClientStorage();\nlet cloudflareQueryClientFallbackQueue: Promise<void> = Promise.resolve();\n\nasync function runWithSerializedCloudflareQueryClient<T>(\n queryClient: QueryClient,\n fn: () => T,\n): Promise<Awaited<T>> {\n const previous = cloudflareQueryClientFallbackQueue;\n let releaseCurrent!: () => void;\n const current = new Promise<void>((resolve) => {\n releaseCurrent = resolve;\n });\n cloudflareQueryClientFallbackQueue = previous.then(() => current, () => current);\n\n await previous;\n\n try {\n return await runWithQueryClient(queryClient, fn);\n } finally {\n releaseCurrent();\n }\n}\n\nfunction createCloudflareQueryClientStorage(): QueryAsyncStorage<QueryClient> {\n const stores: QueryClient[] = [];\n\n return {\n getStore() {\n return stores.at(-1);\n },\n run<TResult>(store: QueryClient, callback: () => TResult): TResult {\n stores.push(store);\n let popSynchronously = true;\n\n try {\n const result = callback();\n\n if (isPromiseLike(result)) {\n popSynchronously = false;\n return Promise.resolve(result).finally(() => {\n removeCloudflareQueryClientStore(stores, store);\n }) as TResult;\n }\n\n return result;\n } finally {\n if (popSynchronously) {\n removeCloudflareQueryClientStore(stores, store);\n }\n }\n },\n };\n}\n\nfunction removeCloudflareQueryClientStore(stores: QueryClient[], store: QueryClient): void {\n const index = stores.lastIndexOf(store);\n\n if (index >= 0) {\n stores.splice(index, 1);\n }\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return (\n (typeof value === \"object\" || typeof value === \"function\") &&\n value !== null &&\n typeof (value as { then?: unknown }).then === \"function\"\n );\n}\n\nasync function dispatchCloudflareServerRoute<Env>(\n module: CloudflareServerRouteModule<Env>,\n request: Request,\n context: CloudflareServerRouteContext<Env>,\n): Promise<Response> {\n const handler =\n module[request.method as keyof CloudflareServerRouteModule<Env>] ?? module.ALL ?? module.default;\n\n if (typeof handler !== \"function\") {\n return new Response(\"Method Not Allowed\", { status: 405 });\n }\n\n let response: unknown;\n\n try {\n response = await handler(request, context);\n } catch (error) {\n if (error instanceof Response) {\n return error;\n }\n\n throw error;\n }\n\n return response instanceof Response\n ? response\n : new Response(\"Invalid route response\", { status: 500 });\n}\n\nconst cloudflareReservedPageModuleExportNames = new Set([\n \"ALL\",\n \"DELETE\",\n \"GET\",\n \"HEAD\",\n \"OPTIONS\",\n \"PATCH\",\n \"POST\",\n \"PUT\",\n \"App\",\n \"CloudflareRouteComponent\",\n \"default\",\n \"generateMetadata\",\n \"generateStaticParams\",\n \"loader\",\n \"metadata\",\n \"middleware\",\n \"prerender\",\n \"revalidate\",\n \"slots\",\n \"stream\",\n]);\n\nfunction selectCloudflarePageComponent<Data, Env>(\n module: CloudflareRouteModule<Data, Env>,\n): CloudflareRouteModuleComponent<Data, Env> | undefined {\n const defaultExport = readCloudflareModuleExport(module, \"default\");\n if (typeof defaultExport === \"function\") {\n return defaultExport as CloudflareRouteModuleComponent<Data, Env>;\n }\n\n const appExport = readCloudflareModuleExport(module, \"App\");\n if (typeof appExport === \"function\") {\n return appExport as CloudflareRouteModuleComponent<Data, Env>;\n }\n\n const cloudflareRouteComponentExport = readCloudflareModuleExport(module, \"CloudflareRouteComponent\");\n if (typeof cloudflareRouteComponentExport === \"function\") {\n return cloudflareRouteComponentExport as CloudflareRouteModuleComponent<Data, Env>;\n }\n\n for (const name of Object.keys(module)) {\n const value = readCloudflareModuleExport(module, name);\n if (\n !cloudflareReservedPageModuleExportNames.has(name) &&\n typeof value === \"function\"\n ) {\n return value as CloudflareRouteModuleComponent<Data, Env>;\n }\n }\n\n return undefined;\n}\n\nfunction readCloudflareModuleExport(module: object, name: string): unknown {\n const descriptor = Object.getOwnPropertyDescriptor(module, name);\n if (descriptor === undefined) {\n return undefined;\n }\n\n if (\"value\" in descriptor) {\n return descriptor.value;\n }\n\n return descriptor.get?.call(module);\n}\n\nconst cloudflareDiagnosticPageModuleExportNames = [\"default\", \"App\", \"CloudflareRouteComponent\", \"slots\"] as const;\n\n// Fixed names + typeof only (never values) so the 500 response is useful without\n// listing app-specific export names. Accessors are not invoked.\nfunction describeCloudflareModuleExports(module: object): string {\n const described = cloudflareDiagnosticPageModuleExportNames.map(\n (name) => `${name}=${typeofCloudflareModuleExport(module, name)}`,\n );\n\n return described.join(\", \");\n}\n\nfunction typeofCloudflareModuleExport(module: object, name: string): string {\n const descriptor = Object.getOwnPropertyDescriptor(module, name);\n if (descriptor === undefined) {\n return \"absent\";\n }\n\n if (!(\"value\" in descriptor)) {\n return \"accessor\";\n }\n\n return typeof descriptor.value;\n}\n\nasync function dispatchCloudflareMetadataRoute(\n module: CloudflareMetadataRouteModule,\n request: Request,\n context: CloudflareBuiltRouteRenderContext & { request: Request },\n): Promise<Response> {\n if (request.method !== \"GET\" && request.method !== \"HEAD\") {\n return new Response(\"Method Not Allowed\", {\n headers: { allow: \"GET, HEAD\" },\n status: 405,\n });\n }\n\n if (typeof module.default !== \"function\") {\n return new Response(\"Invalid metadata route response\", { status: 500 });\n }\n\n const url = new URL(request.url);\n const value = await module.default({\n baseUrl: url.origin,\n host: url.host,\n params: context.params,\n request,\n });\n\n if (value instanceof Response) {\n return value;\n }\n\n if (context.route.kind !== \"metadata\") {\n return new Response(\"Invalid metadata route convention\", { status: 500 });\n }\n\n if (context.route.convention === \"robots\") {\n return new Response(serializeCloudflareRobots(value as RobotsManifest), {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": \"text/plain; charset=utf-8\",\n },\n });\n }\n\n if (context.route.convention === \"sitemap\") {\n return new Response(serializeCloudflareSitemap(value as readonly SitemapEntry[]), {\n headers: {\n \"cache-control\": \"no-cache\",\n \"content-type\": \"application/xml; charset=utf-8\",\n },\n });\n }\n\n if (context.route.convention === \"manifest\") {\n return new Response(JSON.stringify(value as ManifestDescriptor), {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": \"application/manifest+json; charset=utf-8\",\n },\n });\n }\n\n if (context.route.convention === \"opengraph-image\") {\n const body = value instanceof Uint8Array ? value.slice().buffer : String(value);\n return new Response(body, {\n headers: {\n \"cache-control\": \"public, max-age=3600\",\n \"content-type\": typeof value === \"string\" && value.trimStart().startsWith(\"<svg\")\n ? \"image/svg+xml\"\n : \"application/octet-stream\",\n },\n });\n }\n\n return new Response(\"Invalid metadata route convention\", { status: 500 });\n}\n\nfunction isCloudflareNavigationRequest(request: Request): boolean {\n return request.headers.get(\"x-mreact-navigation\") === \"1\";\n}\n\nfunction cloudflareDocumentReloadNavigationResponse(): Response {\n return new Response(null, {\n headers: { \"x-mreact-navigation\": \"reload\" },\n status: 204,\n });\n}\n\nfunction withDefaultSecurityHeaders(\n response: Response,\n request: Request,\n metadata?: RouteMetadata | undefined,\n): Response {\n const headers = new Headers(response.headers);\n const csp = contentSecurityPolicy(metadata?.csp);\n\n if (\n isHtmlContentType(headers.get(\"content-type\")) &&\n csp !== undefined &&\n !headers.has(\"content-security-policy\")\n ) {\n headers.set(\"content-security-policy\", csp);\n }\n\n for (const [name, value] of Object.entries(\n routeSecurityHeaders({ request, security: metadata?.security }),\n )) {\n if (!headers.has(name)) {\n headers.set(name, value);\n }\n }\n\n return new Response(response.body, {\n headers,\n status: response.status,\n statusText: response.statusText,\n });\n}\n\n/**\n * Validates and normalizes a Vite `import.meta.glob` map into a Cloudflare route module registry.\n *\n * Every manifest route that needs a module must be present, and extra glob entries are rejected to catch stale generated workers.\n */\nexport function collectCloudflareRouteModules<Env = unknown>(\n glob: CloudflareRouteModuleGlob<Env>,\n options: CollectCloudflareRouteModulesOptions,\n): CloudflareRouteModuleRegistry<Env> {\n const requiredRoutes = options.manifest.routes.filter((route) =>\n cloudflareRouteRequiresModule(route, options.manifest),\n );\n const matchedKeys = new Set<string>();\n const modules: CloudflareRouteModuleRegistry<Env> = {};\n\n for (const route of requiredRoutes) {\n const match = Object.entries(glob).find(([key]) =>\n cloudflareRouteGlobKeyMatchesRoute(key, route.file),\n );\n\n if (match === undefined) {\n throw new Error(`Missing Cloudflare route module for ${route.file}.`);\n }\n\n const [key, module] = match;\n matchedKeys.add(key);\n modules[route.file] = module;\n }\n\n const extraKeys = Object.keys(glob).filter((key) => !matchedKeys.has(key));\n\n if (extraKeys.length > 0) {\n throw new Error(`Extra Cloudflare route module entries: ${extraKeys.join(\", \")}.`);\n }\n\n return modules;\n}\n\n/**\n * Creates a Cloudflare asset loader that forwards only manifest-listed client and public asset paths.\n *\n * This keeps the Worker from passing arbitrary paths to the `ASSETS` binding while still serving generated route scripts, CSS, imports, source maps, and allowed public files.\n */\nexport function createCloudflareStaticAssetLoader<Env = unknown>(\n options: CloudflareStaticAssetLoaderOptions<Env>,\n): CloudflareAssetLoader<Env> {\n const prefix = normalizeAssetPrefix(options.prefix ?? clientPrefix);\n const allowedPaths = cloudflareClientAssetPaths(options.clientManifest, {\n extraPaths: options.extraPaths,\n prefix,\n });\n\n return {\n async fetch(pathname, request, env) {\n if (!allowedPaths.has(pathname)) {\n return undefined;\n }\n\n const binding =\n typeof options.binding === \"function\" ? await options.binding(env) : options.binding;\n\n if (binding === undefined) {\n return undefined;\n }\n\n const assetUrl = new URL(request.url);\n assetUrl.pathname = pathname;\n assetUrl.search = \"\";\n\n return await binding.fetch(new Request(assetUrl, request));\n },\n };\n}\n\n/**\n * Returns the set of client and public asset paths a Cloudflare Worker is allowed to serve.\n */\nexport function cloudflareClientAssetPaths(\n manifest: CloudflareClientManifest,\n options: { extraPaths?: readonly string[] | undefined; prefix?: string | undefined } = {},\n): Set<string> {\n const prefix = normalizeAssetPrefix(options.prefix ?? clientPrefix);\n const paths = new Set<string>([`${prefix}manifest.json`]);\n\n for (const route of manifest.routes) {\n for (const asset of [\n route.script,\n route.sourceMap,\n route.navigationScript,\n ...(route.css ?? []),\n ...(route.imports ?? []),\n ]) {\n const path = safeClientAssetPath(prefix, asset);\n\n if (path !== undefined) {\n paths.add(path);\n }\n }\n }\n\n for (const asset of manifest.assets ?? []) {\n const path = safeClientAssetPath(prefix, asset);\n\n if (path !== undefined) {\n paths.add(path);\n }\n }\n\n for (const extraPath of options.extraPaths ?? []) {\n const path = safeClientAssetPath(prefix, extraPath);\n\n if (path !== undefined) {\n paths.add(path);\n }\n }\n\n for (const publicAsset of manifest.publicAssets ?? []) {\n const path = safePublicAssetPath(publicAsset);\n\n if (path !== undefined) {\n paths.add(path);\n }\n }\n\n return paths;\n}\n\nfunction safePublicAssetPath(asset: string): string | undefined {\n if (!asset.startsWith(\"/\") || asset.startsWith(\"//\") || asset.includes(\"..\")) {\n return undefined;\n }\n\n return asset;\n}\n\n/**\n * Creates an app-router prerender store backed by the Cloudflare Cache API.\n *\n * Keys are represented as synthetic requests so Workers cache entries can be shared by path and optional key prefix.\n */\nexport function createCloudflarePrerenderStore(\n options: CloudflarePrerenderStoreOptions,\n): AppRouterPrerenderStore {\n return {\n async delete(path) {\n await options.cache.delete(prerenderCacheRequest(options, path));\n },\n async get(path) {\n const response = await options.cache.match(prerenderCacheRequest(options, path));\n\n if (response === undefined) {\n return undefined;\n }\n\n return (await response.json()) as BuiltPrerenderedRoute;\n },\n async set(path, entry) {\n await options.cache.put(\n prerenderCacheRequest(options, path),\n Response.json(entry, {\n headers: { \"cache-control\": \"no-store\" },\n }),\n );\n },\n };\n}\n\nasync function handleCloudflareRequest<Env>(\n options: CloudflareRequestHandlerOptions<Env>,\n request: Request,\n env: Env,\n context: CloudflareExecutionContext,\n): Promise<Response> {\n const startedAt = logNow();\n const logFields = requestLogFields(request, \"cloudflare\");\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n type: \"router:request:start\",\n });\n emitRouterDevtoolsEvent({\n method: request.method,\n type: \"router:request:start\",\n url: request.url,\n });\n\n const url = new URL(request.url);\n\n if (\n url.pathname.startsWith(clientPrefix) ||\n isCloudflarePublicAssetPath(options.clientManifest, url.pathname)\n ) {\n const response = await options.assets?.fetch?.(url.pathname, request, env, context);\n const assetResponse = await applyCloudflareResponseHook(\n response ?? new Response(\"Not Found\", { status: 404 }),\n options,\n request,\n );\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n status: assetResponse.status,\n type: \"router:request:end\",\n });\n return assetResponse;\n }\n\n const staticResponse = prerenderedResponse(\n options.serverManifest.prerenderedRoutes,\n normalizeRoutePath(url.pathname),\n request.method,\n isCloudflareNavigationRequest(request),\n );\n\n if (staticResponse !== undefined) {\n emitRouterDevtoolsEvent({\n method: request.method,\n status: staticResponse.status,\n type: \"router:request:end\",\n url: request.url,\n });\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n status: staticResponse.status,\n type: \"router:request:end\",\n });\n return await applyCloudflareResponseHook(staticResponse, options, request);\n }\n\n if (options.render === undefined) {\n const notFoundResponse = await applyCloudflareResponseHook(\n new Response(\"Not Found\", { status: 404 }),\n options,\n request,\n );\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n status: notFoundResponse.status,\n type: \"router:request:end\",\n });\n return notFoundResponse;\n }\n\n const renderedResponse = await options.render(request, {\n clientManifest: options.clientManifest,\n context,\n env,\n serverManifest: options.serverManifest,\n });\n const response = await applyCloudflareResponseHook(\n preserveCloudflareStreamedHtmlResponse(renderedResponse),\n options,\n request,\n );\n emitRouterDevtoolsEvent({\n method: request.method,\n status: response.status,\n type: \"router:request:end\",\n url: request.url,\n });\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n status: response.status,\n type: \"router:request:end\",\n });\n\n return response;\n}\n\nfunction isCloudflarePublicAssetPath(manifest: CloudflareClientManifest, pathname: string): boolean {\n return (manifest.publicAssets ?? []).includes(pathname);\n}\n\nasync function applyCloudflareResponseHook<Env>(\n response: Response,\n options: Pick<CloudflareRequestHandlerOptions<Env>, \"onResponse\">,\n request: Request,\n): Promise<Response> {\n const hooked = await options.onResponse?.(response, { request });\n\n return hooked instanceof Response ? hooked : response;\n}\n\nfunction preserveCloudflareStreamedHtmlResponse(response: Response): Response {\n if (\n response.headers.get(\"x-mreact-stream\") !== \"1\" ||\n !isHtmlContentType(response.headers.get(\"content-type\"))\n ) {\n return response;\n }\n\n const headers = new Headers(response.headers);\n const cacheControl = headers.get(\"cache-control\");\n\n if (!cacheControlHasDirective(cacheControl, \"no-transform\")) {\n headers.set(\n \"cache-control\",\n cacheControl === null || cacheControl.trim() === \"\"\n ? \"no-transform\"\n : `${cacheControl}, no-transform`,\n );\n }\n\n if (headers.get(\"content-encoding\") === null) {\n headers.set(\"content-encoding\", \"identity\");\n }\n\n return new Response(response.body, {\n headers,\n status: response.status,\n statusText: response.statusText,\n });\n}\n\nfunction isHtmlContentType(contentType: string | null): boolean {\n return contentType?.toLowerCase().split(\";\", 1)[0]?.trim() === \"text/html\";\n}\n\nfunction cacheControlHasDirective(cacheControl: string | null, directive: string): boolean {\n if (cacheControl === null) {\n return false;\n }\n\n const normalizedDirective = directive.toLowerCase();\n return cacheControl\n .split(\",\")\n .some((part) => part.trim().toLowerCase() === normalizedDirective);\n}\n\nfunction prerenderedResponse(\n prerenderedRoutes: Record<string, BuiltPrerenderedRoute> | undefined,\n path: string,\n method: string,\n isNavigation: boolean,\n): Response | undefined {\n if (method !== \"GET\" && method !== \"HEAD\") {\n return undefined;\n }\n\n const prerendered = prerenderedRoutes?.[path];\n\n if (prerendered === undefined) {\n return undefined;\n }\n\n if (isNavigation && !prerendered.html.includes(\"data-mreact-route-id\")) {\n return cloudflareDocumentReloadNavigationResponse();\n }\n\n return new Response(method === \"HEAD\" ? null : prerendered.html, {\n headers: prerendered.headers,\n status: prerendered.status,\n });\n}\n\nfunction cloudflareRouteRequiresModule(\n route: AppRoute,\n manifest: BuiltServerManifest,\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 manifest.prerenderedRoutes?.[route.path] === undefined))\n );\n}\n\nfunction cloudflareRouteGlobKeyMatchesRoute(key: string, routeFile: string): boolean {\n const normalizedKey = normalizeCloudflareRouteModulePath(key);\n const normalizedRoute = normalizeCloudflareRouteModulePath(routeFile);\n\n return (\n normalizedKey === normalizedRoute ||\n normalizedKey.endsWith(`/${normalizedRoute}`)\n );\n}\n\nfunction normalizeCloudflareRouteModulePath(path: string): string {\n const withoutPrefix = path\n .replace(/\\\\/g, \"/\")\n .replace(/^\\.\\//, \"\")\n .replace(/^\\/+/, \"\");\n\n return withoutPrefix.replace(/\\.(?:mjs|js|ts|tsx)$/, \"\");\n}\n\nfunction matchCloudflareRoute(\n routes: readonly AppRoute[],\n pathname: string,\n): { params: Record<string, readonly string[] | string>; route: AppRoute } | undefined {\n const normalizedPath = normalizeRoutePath(pathname);\n const pathSegments = normalizedPath === \"/\" ? [] : normalizedPath.slice(1).split(\"/\");\n\n for (const route of routes) {\n const params: Record<string, readonly string[] | string> = {};\n const catchAllIndex = route.segments.findIndex((segment) => segment.kind === \"catch-all\");\n\n if (catchAllIndex === -1 && route.segments.length !== pathSegments.length) {\n continue;\n }\n\n if (\n catchAllIndex !== -1 &&\n pathSegments.length <\n catchAllIndex + 1 + route.segments.length - catchAllIndex - 1\n ) {\n continue;\n }\n\n let matched = true;\n\n for (const [index, segment] of route.segments.entries()) {\n const value = pathSegments[index];\n\n if (value === undefined) {\n matched = false;\n break;\n }\n\n if (segment.kind === \"static\") {\n if (segment.value !== value) {\n matched = false;\n break;\n }\n continue;\n }\n\n if (segment.kind === \"dynamic\") {\n const decoded = safeDecodePathSegment(value);\n if (decoded === undefined) {\n matched = false;\n break;\n }\n params[segment.name] = decoded;\n continue;\n }\n\n const suffixSegments = route.segments.slice(index + 1);\n const catchAllEnd = pathSegments.length - suffixSegments.length;\n\n if (catchAllEnd <= index) {\n matched = false;\n break;\n }\n\n const decodedParts: string[] = [];\n for (const part of pathSegments.slice(index, catchAllEnd)) {\n const decoded = safeDecodePathSegment(part);\n if (decoded === undefined) {\n matched = false;\n break;\n }\n decodedParts.push(decoded);\n }\n params[segment.name] = decodedParts;\n\n for (let suffixIndex = 0; suffixIndex < suffixSegments.length; suffixIndex += 1) {\n const suffixSegment = suffixSegments[suffixIndex];\n const suffixValue = pathSegments[catchAllEnd + suffixIndex];\n\n if (suffixSegment === undefined || suffixValue === undefined) {\n matched = false;\n break;\n }\n\n if (suffixSegment.kind === \"static\") {\n if (suffixSegment.value !== suffixValue) {\n matched = false;\n break;\n }\n continue;\n }\n\n if (suffixSegment.kind === \"dynamic\") {\n const decoded = safeDecodePathSegment(suffixValue);\n if (decoded === undefined) {\n matched = false;\n break;\n }\n params[suffixSegment.name] = decoded;\n continue;\n }\n\n matched = false;\n break;\n }\n\n break;\n }\n\n if (matched) {\n return { params, route };\n }\n }\n\n return undefined;\n}\n\nfunction compareCloudflareRoutes(a: AppRoute, b: AppRoute): number {\n const scoreDelta = routeSpecificityScore(b) - routeSpecificityScore(a);\n\n return scoreDelta === 0 ? a.path.localeCompare(b.path) || a.kind.localeCompare(b.kind) : scoreDelta;\n}\n\nfunction routeSpecificityScore(route: AppRoute): number {\n return route.segments.reduce((score, segment) => {\n if (segment.kind === \"static\") {\n return score + 100;\n }\n\n if (segment.kind === \"dynamic\") {\n return score + 10;\n }\n\n return score;\n }, route.segments.length);\n}\n\nfunction safeDecodePathSegment(segment: string): string | undefined {\n try {\n return decodeURIComponent(segment);\n } catch {\n return undefined;\n }\n}\n\nfunction normalizeAssetPrefix(prefix: string): string {\n const withLeadingSlash = prefix.startsWith(\"/\") ? prefix : `/${prefix}`;\n\n return withLeadingSlash.endsWith(\"/\") ? withLeadingSlash : `${withLeadingSlash}/`;\n}\n\nfunction safeClientAssetPath(prefix: string, asset: string | undefined): string | undefined {\n if (asset === undefined || asset === \"\" || asset.startsWith(\"/\") || asset.includes(\"\\\\\")) {\n return undefined;\n }\n\n const segments = asset.split(\"/\");\n\n if (segments.some((segment) => unsafeAssetSegment(segment))) {\n return undefined;\n }\n\n return `${prefix}${segments.join(\"/\")}`;\n}\n\nfunction withCloudflareHydrationMarkers(options: {\n data: unknown;\n html: string;\n manifest: CloudflareClientManifest;\n params: Record<string, readonly string[] | string>;\n request: Request;\n routePath: string;\n}): string {\n const marker = cloudflareHydrationMarkerParts(options);\n\n return marker.prefix === \"\" && marker.suffix === \"\"\n ? options.html\n : `${marker.prefix}${options.html}${marker.suffix}`;\n}\n\nfunction cloudflareHydrationMarkerParts(options: {\n data: unknown;\n manifest: CloudflareClientManifest;\n params: Record<string, readonly string[] | string>;\n request: Request;\n routePath: string;\n}): { prefix: string; suffix: string } {\n const route = options.manifest.routes.find(\n (route) => route.path === options.routePath && route.client === true,\n );\n\n if (route?.script === undefined) {\n return { prefix: \"\", suffix: \"\" };\n }\n\n const routeId = route.routeId ?? cloudflareRouteIdForPath(options.routePath);\n const escapedRouteId = escapeHtmlAttribute(routeId);\n const propsJson = escapeScriptJson(\n JSON.stringify({\n params: options.params,\n request: { url: options.request.url },\n data: options.data,\n }),\n );\n const clientReferencesJson =\n route.clientReferenceManifest === undefined || route.clientReferenceManifest.length === 0\n ? undefined\n : escapeScriptJson(JSON.stringify(route.clientReferenceManifest));\n\n return {\n prefix: `<div data-mreact-route-id=\"${escapedRouteId}\">`,\n suffix: [\n \"</div>\",\n `<script type=\"application/json\" id=\"mreact-props-${escapedRouteId}\">${propsJson}</script>`,\n clientReferencesJson === undefined\n ? undefined\n : `<script type=\"application/json\" id=\"mreact-client-references-${escapedRouteId}\">${clientReferencesJson}</script>`,\n `<script type=\"module\" src=\"/_mreact/client/${escapeHtmlAttribute(route.script)}\"></script>`,\n ]\n .filter((part): part is string => part !== undefined)\n .join(\"\"),\n };\n}\n\nfunction escapeScriptJson(json: string): string {\n return escapeJsonForHtml(json);\n}\n\nfunction escapeJsonForHtml(value: string): string {\n return value\n .replaceAll(\"&\", \"\\\\u0026\")\n .replaceAll(\"<\", \"\\\\u003c\")\n .replaceAll(\">\", \"\\\\u003e\")\n .replaceAll(\"\\u2028\", \"\\\\u2028\")\n .replaceAll(\"\\u2029\", \"\\\\u2029\");\n}\n\nfunction cloudflareRouteIdForPath(path: string): string {\n if (path === \"/\") {\n return \"index\";\n }\n\n return path\n .slice(1)\n .replaceAll(\"/\", \"_\")\n .replaceAll(\":\", \"_\")\n .replace(/[^A-Za-z0-9_$-]/g, \"_\");\n}\n\nfunction unsafeAssetSegment(segment: string): boolean {\n if (segment === \"\" || segment === \".\" || segment === \"..\") {\n return true;\n }\n\n try {\n const decoded = decodeURIComponent(segment);\n return decoded === \".\" || decoded === \"..\" || decoded.includes(\"/\") || decoded.includes(\"\\\\\");\n } catch {\n return true;\n }\n}\n\nasync function loadCloudflareRouteModule<Env>(\n modules: CloudflareRouteModuleRegistry<Env>,\n file: string,\n): Promise<CloudflareRouteModuleRegistryEntry<Env> | undefined> {\n const entry = modules[file];\n\n return typeof entry === \"function\" ? await entry() : entry;\n}\n\nfunction cloudflareModulePreloadTag(manifest: CloudflareClientManifest, routePath: string): string {\n const script = manifest.routes.find((route) => route.path === routePath)?.script;\n\n return script === undefined\n ? \"\"\n : `<link rel=\"modulepreload\" href=\"/_mreact/client/${escapeHtmlAttribute(script)}\">`;\n}\n\nasync function resolveCloudflareRouteMetadata<Data, Env>(\n modules: readonly CloudflareRouteModule<Data, Env>[],\n context: GenerateMetadataContext<Data>,\n): Promise<RouteMetadata | undefined> {\n const metadata: RouteMetadata[] = [];\n\n for (const module of modules) {\n let next = validateRouteMetadata(module.metadata);\n\n if (module.generateMetadata !== undefined) {\n const generated = await module.generateMetadata(context);\n next = mergeCloudflareRouteMetadata(\n [next, validateRouteMetadata(generated, \"generateMetadata\")].filter(\n isCloudflareRouteMetadata,\n ),\n );\n }\n\n if (next !== undefined) {\n metadata.push(next);\n }\n }\n\n return validateRouteMetadata(mergeCloudflareRouteMetadata(metadata));\n}\n\nfunction isCloudflareRouteMetadata(value: RouteMetadata | undefined): value is RouteMetadata {\n return value !== undefined;\n}\n\nfunction mergeCloudflareRouteMetadata(metadata: readonly RouteMetadata[]): RouteMetadata | undefined {\n if (metadata.length === 0) {\n return undefined;\n }\n\n return metadata.reduce<RouteMetadata>((merged, next) => {\n const openGraph = mergeCloudflareMetadataObject(merged.openGraph, next.openGraph);\n const openGraphImages = mergeCloudflareMetadataArrays(\n merged.openGraph?.images,\n next.openGraph?.images,\n );\n\n const alternates = mergeCloudflareMetadataObject(merged.alternates, next.alternates);\n const csp = mergeCloudflareMetadataObject(merged.csp, next.csp);\n const head = mergeCloudflareMetadataArrays(merged.head, next.head);\n const icons = mergeCloudflareMetadataObject(merged.icons, next.icons);\n const mergedMetadata: RouteMetadata = {\n ...merged,\n ...next,\n ...(alternates === undefined ? {} : { alternates }),\n ...(csp === undefined ? {} : { csp }),\n ...(head === undefined ? {} : { head }),\n ...(icons === undefined ? {} : { icons }),\n ...(openGraph === undefined && openGraphImages === undefined\n ? {}\n : { openGraph: { ...openGraph, ...(openGraphImages === undefined ? {} : { images: openGraphImages }) } }),\n };\n\n return mergedMetadata;\n }, {});\n}\n\nfunction mergeCloudflareMetadataObject<T extends object>(\n left: T | undefined,\n right: T | undefined,\n): T | undefined {\n if (left === undefined) {\n return right;\n }\n if (right === undefined) {\n return left;\n }\n\n return { ...left, ...right };\n}\n\nfunction mergeCloudflareMetadataArrays<T>(\n left: readonly T[] | undefined,\n right: readonly T[] | undefined,\n): readonly T[] | undefined {\n if (left === undefined || left.length === 0) {\n return right;\n }\n if (right === undefined || right.length === 0) {\n return left;\n }\n\n return [...left, ...right];\n}\n\nfunction defaultCloudflareDocument(\n body: string,\n modulePreload: string,\n metadata: RouteMetadata | undefined,\n): string {\n return `<!DOCTYPE html><html><head>${modulePreload}${cloudflareMetadataTitle(metadata)}</head><body>${body}</body></html>`;\n}\n\nfunction cloudflareMetadataTitle(metadata: RouteMetadata | undefined): string {\n if (metadata?.title === undefined) {\n return \"\";\n }\n\n return `<title>${escapeHtmlText(metadataString(metadata.title))}</title>`;\n}\n\nfunction metadataString(value: boolean | number | string): string {\n return String(value);\n}\n\nfunction serializeCloudflareRobots(manifest: RobotsManifest): string {\n const lines: string[] = [];\n const rules =\n manifest.rules === undefined\n ? []\n : Array.isArray(manifest.rules)\n ? manifest.rules\n : [manifest.rules];\n\n for (const rule of rules) {\n for (const userAgent of arrayValue(rule.userAgent)) {\n lines.push(`User-agent: ${userAgent}`);\n }\n for (const allow of arrayValue(rule.allow)) {\n lines.push(`Allow: ${allow}`);\n }\n for (const disallow of arrayValue(rule.disallow)) {\n lines.push(`Disallow: ${disallow}`);\n }\n }\n\n for (const sitemap of arrayValue(manifest.sitemap)) {\n lines.push(`Sitemap: ${sitemap}`);\n }\n if (manifest.host !== undefined) {\n lines.push(`Host: ${manifest.host}`);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction serializeCloudflareSitemap(entries: readonly SitemapEntry[]): string {\n const urls = entries\n .map((entry) => {\n const fields = [\n `<loc>${escapeXml(entry.url)}</loc>`,\n entry.lastModified === undefined\n ? undefined\n : `<lastmod>${escapeXml(sitemapDate(entry.lastModified))}</lastmod>`,\n entry.changeFrequency === undefined\n ? undefined\n : `<changefreq>${escapeXml(entry.changeFrequency)}</changefreq>`,\n entry.priority === undefined ? undefined : `<priority>${entry.priority}</priority>`,\n ].filter((field): field is string => field !== undefined);\n\n return `<url>${fields.join(\"\")}</url>`;\n })\n .join(\"\");\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?><urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">${urls}</urlset>`;\n}\n\nfunction sitemapDate(value: Date | number | string): string {\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n return typeof value === \"number\" ? new Date(value).toISOString() : value;\n}\n\nfunction arrayValue<T>(value: T | readonly T[] | undefined): readonly T[] {\n if (value === undefined) {\n return [];\n }\n\n return Array.isArray(value) ? (value as readonly T[]) : [value as T];\n}\n\nfunction escapeXml(value: string): string {\n return value\n .replaceAll(\"&\", \"&amp;\")\n .replaceAll(\"<\", \"&lt;\")\n .replaceAll(\">\", \"&gt;\")\n .replaceAll('\"', \"&quot;\");\n}\n\nfunction cloudflareNotFoundResponse(request: Request): Response {\n return withDefaultSecurityHeaders(\n new Response(\"<!DOCTYPE html><html><head></head><body>Not Found</body></html>\", {\n headers: { \"content-type\": \"text/html; charset=utf-8\" },\n status: 404,\n }),\n request,\n );\n}\n\nfunction prerenderCacheRequest(options: CloudflarePrerenderStoreOptions, path: string): Request {\n const origin = options.keyOrigin ?? defaultPrerenderCacheOrigin;\n const prefix = options.keyPrefix ?? defaultPrerenderCachePrefix;\n const normalizedPath = normalizeRoutePath(path.startsWith(\"/\") ? path : `/${path}`);\n const url = new URL(`${normalizePrerenderPrefix(prefix)}${normalizedPath}`, origin);\n\n return new Request(url, { method: \"GET\" });\n}\n\nfunction normalizePrerenderPrefix(prefix: string): string {\n const withLeadingSlash = prefix.startsWith(\"/\") ? prefix : `/${prefix}`;\n\n return withLeadingSlash.replace(/\\/+$/, \"\");\n}\n"]}
@@ -27,6 +27,7 @@ export declare const COMPAT_VENDOR_PLACEHOLDER_PREFIX = "mreact-compat-vendor:";
27
27
  export declare function compatVendorEntryNames(): readonly string[];
28
28
  export declare function sourceReferencesCompatVendorSpecifier(source: string): boolean;
29
29
  export declare function resolveCompatVendorEntryFiles(resolveDir?: string): Map<string, string>;
30
+ export declare function rewriteCompatVendorPlaceholderImportsForRunner(code: string, resolveDir?: string): string;
30
31
  export declare function compatVendorExternalizePlugin(): RouterCompatPlugin;
31
32
  export declare function bundleAppRouterSourceModule(options: {
32
33
  code: string;
@@ -1 +1 @@
1
- {"version":3,"file":"module-runner.d.ts","sourceRoot":"","sources":["../src/module-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-runner.d.ts","sourceRoot":"","sources":["../src/module-runner.ts"],"names":[],"mappings":"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"}
@@ -208,6 +208,17 @@ export function resolveCompatVendorEntryFiles(resolveDir) {
208
208
  }
209
209
  return files;
210
210
  }
211
+ const compatVendorPlaceholderImportPattern = /(["'])mreact-compat-vendor:([\w-]+)\1/gu;
212
+ export function rewriteCompatVendorPlaceholderImportsForRunner(code, resolveDir) {
213
+ if (!code.includes(COMPAT_VENDOR_PLACEHOLDER_PREFIX)) {
214
+ return code;
215
+ }
216
+ const entryFiles = resolveCompatVendorEntryFiles(resolveDir);
217
+ return code.replace(compatVendorPlaceholderImportPattern, (source, quote, entry) => {
218
+ const file = entryFiles.get(entry);
219
+ return file === undefined ? source : `${quote}${pathToFileURL(file).href}${quote}`;
220
+ });
221
+ }
211
222
  // Marks every compat-family import as external with a deterministic
212
223
  // placeholder specifier; writeServerModuleArtifactFiles later rewrites the
213
224
  // placeholders to relative paths into the emitted shared vendor chunks.