@reckona/mreact-router 0.0.203 → 0.0.205

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/README.md +53 -9
  2. package/dist/actions.d.ts +6 -0
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +70 -10
  5. package/dist/actions.js.map +1 -1
  6. package/dist/adapters/aws-lambda.d.ts +15 -4
  7. package/dist/adapters/aws-lambda.d.ts.map +1 -1
  8. package/dist/adapters/aws-lambda.js +301 -63
  9. package/dist/adapters/aws-lambda.js.map +1 -1
  10. package/dist/adapters/cloudflare.d.ts +2 -1
  11. package/dist/adapters/cloudflare.d.ts.map +1 -1
  12. package/dist/adapters/cloudflare.js +18 -10
  13. package/dist/adapters/cloudflare.js.map +1 -1
  14. package/dist/adapters/edge.d.ts +1 -1
  15. package/dist/adapters/edge.d.ts.map +1 -1
  16. package/dist/adapters/edge.js.map +1 -1
  17. package/dist/adapters/node.d.ts +5 -3
  18. package/dist/adapters/node.d.ts.map +1 -1
  19. package/dist/adapters/node.js +2 -1
  20. package/dist/adapters/node.js.map +1 -1
  21. package/dist/adapters/static.d.ts.map +1 -1
  22. package/dist/adapters/static.js +24 -2
  23. package/dist/adapters/static.js.map +1 -1
  24. package/dist/build.d.ts +1 -0
  25. package/dist/build.d.ts.map +1 -1
  26. package/dist/build.js +91 -5
  27. package/dist/build.js.map +1 -1
  28. package/dist/built-runtime.d.ts +2 -0
  29. package/dist/built-runtime.d.ts.map +1 -1
  30. package/dist/built-runtime.js +16 -0
  31. package/dist/built-runtime.js.map +1 -1
  32. package/dist/cache.d.ts +3 -1
  33. package/dist/cache.d.ts.map +1 -1
  34. package/dist/cache.js +211 -13
  35. package/dist/cache.js.map +1 -1
  36. package/dist/cli.js +12 -1
  37. package/dist/cli.js.map +1 -1
  38. package/dist/client.d.ts.map +1 -1
  39. package/dist/client.js +32 -1
  40. package/dist/client.js.map +1 -1
  41. package/dist/config.d.ts +3 -0
  42. package/dist/config.d.ts.map +1 -1
  43. package/dist/config.js +21 -2
  44. package/dist/config.js.map +1 -1
  45. package/dist/csp.d.ts +1 -0
  46. package/dist/csp.d.ts.map +1 -1
  47. package/dist/csp.js +11 -6
  48. package/dist/csp.js.map +1 -1
  49. package/dist/dehydrate-policy.d.ts +3 -0
  50. package/dist/dehydrate-policy.d.ts.map +1 -0
  51. package/dist/dehydrate-policy.js +16 -0
  52. package/dist/dehydrate-policy.js.map +1 -0
  53. package/dist/dev-server.d.ts +7 -2
  54. package/dist/dev-server.d.ts.map +1 -1
  55. package/dist/dev-server.js +120 -11
  56. package/dist/dev-server.js.map +1 -1
  57. package/dist/http.d.ts +1 -1
  58. package/dist/http.d.ts.map +1 -1
  59. package/dist/http.js +147 -7
  60. package/dist/http.js.map +1 -1
  61. package/dist/index.d.ts +4 -3
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +1 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/logger.d.ts +22 -1
  66. package/dist/logger.d.ts.map +1 -1
  67. package/dist/logger.js +22 -8
  68. package/dist/logger.js.map +1 -1
  69. package/dist/metadata.d.ts +8 -0
  70. package/dist/metadata.d.ts.map +1 -1
  71. package/dist/metadata.js +60 -22
  72. package/dist/metadata.js.map +1 -1
  73. package/dist/navigation-marker.d.ts.map +1 -1
  74. package/dist/navigation-marker.js +72 -9
  75. package/dist/navigation-marker.js.map +1 -1
  76. package/dist/navigation.d.ts +1 -0
  77. package/dist/navigation.d.ts.map +1 -1
  78. package/dist/navigation.js +1 -1
  79. package/dist/navigation.js.map +1 -1
  80. package/dist/node-server.d.ts +5 -2
  81. package/dist/node-server.d.ts.map +1 -1
  82. package/dist/node-server.js +75 -6
  83. package/dist/node-server.js.map +1 -1
  84. package/dist/prerender-entry.d.ts +14 -0
  85. package/dist/prerender-entry.d.ts.map +1 -1
  86. package/dist/prerender-entry.js +40 -3
  87. package/dist/prerender-entry.js.map +1 -1
  88. package/dist/render.d.ts +9 -1
  89. package/dist/render.d.ts.map +1 -1
  90. package/dist/render.js +102 -123
  91. package/dist/render.js.map +1 -1
  92. package/dist/serve.d.ts +8 -2
  93. package/dist/serve.d.ts.map +1 -1
  94. package/dist/serve.js +22 -20
  95. package/dist/serve.js.map +1 -1
  96. package/dist/session.d.ts.map +1 -1
  97. package/dist/session.js +52 -19
  98. package/dist/session.js.map +1 -1
  99. package/dist/upgrade.d.ts +59 -2
  100. package/dist/upgrade.d.ts.map +1 -1
  101. package/dist/upgrade.js +282 -1
  102. package/dist/upgrade.js.map +1 -1
  103. package/dist/vite-config.d.ts +2 -0
  104. package/dist/vite-config.d.ts.map +1 -1
  105. package/dist/vite-config.js +2 -0
  106. package/dist/vite-config.js.map +1 -1
  107. package/dist/vite.d.ts +4 -1
  108. package/dist/vite.d.ts.map +1 -1
  109. package/dist/vite.js +117 -6
  110. package/dist/vite.js.map +1 -1
  111. package/package.json +11 -11
  112. package/src/actions.ts +81 -11
  113. package/src/adapters/aws-lambda.ts +426 -115
  114. package/src/adapters/cloudflare.ts +29 -13
  115. package/src/adapters/edge.ts +2 -0
  116. package/src/adapters/node.ts +8 -10
  117. package/src/adapters/static.ts +31 -2
  118. package/src/build.ts +117 -10
  119. package/src/built-runtime.ts +28 -0
  120. package/src/cache.ts +262 -15
  121. package/src/cli.ts +14 -1
  122. package/src/client.ts +32 -1
  123. package/src/config.ts +43 -6
  124. package/src/csp.ts +14 -11
  125. package/src/dehydrate-policy.ts +23 -0
  126. package/src/dev-server.ts +188 -15
  127. package/src/http.ts +172 -6
  128. package/src/index.ts +14 -1
  129. package/src/logger.ts +47 -10
  130. package/src/metadata.ts +125 -60
  131. package/src/navigation-marker.ts +79 -9
  132. package/src/navigation.ts +1 -1
  133. package/src/node-server.ts +128 -22
  134. package/src/prerender-entry.ts +52 -3
  135. package/src/render.ts +807 -753
  136. package/src/serve.ts +49 -56
  137. package/src/session.ts +56 -25
  138. package/src/upgrade.ts +402 -3
  139. package/src/vite-config.ts +6 -0
  140. package/src/vite.ts +157 -5
package/dist/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\n\n/**\n * Describes the cache lifetime assigned to a rendered route response.\n */\nexport interface RouteCachePolicy {\n cacheControl: string;\n revalidateSeconds: number;\n}\n\n/**\n * Configures cache-control directives for route response caching.\n */\nexport interface CacheControlOptions {\n maxAge?: number | undefined;\n sMaxAge?: number | undefined;\n staleWhileRevalidate?: boolean | number | undefined;\n}\n\n/**\n * Stores a cached route response body and its expiration metadata.\n */\nexport interface AppRouterCacheEntry {\n body: string;\n cacheControl: string;\n expiresAt: number;\n /**\n * Response headers to replay on a cache hit.\n *\n * Metadata-derived security headers such as `content-security-policy`,\n * `x-frame-options` and `x-content-type-options` live here, so that turning a\n * route into a cached one does not quietly drop them.\n */\n headers?: Record<string, string> | undefined;\n path: string;\n /**\n * Identifies entries that preserve the complete current cache contract.\n *\n * Missing markers are treated as cache misses so HTML written by older\n * runtimes, or custom serializers that drop new security fields, is never\n * replayed under the current security rules.\n */\n schemaVersion?: 2 | undefined;\n status: number;\n /**\n * Strict-Transport-Security value to replay to secure requests only.\n *\n * It is kept out of `headers` because it depends on the scheme of the\n * request that produced the entry, which the cache key does not cover.\n */\n strictTransportSecurity?: string | undefined;\n}\n\n/**\n * Defines the storage interface used by app-router route response caching.\n */\nexport interface AppRouterCache {\n deleteByPath(path: string): void | Promise<void>;\n get(\n key: string,\n now?: number,\n ): AppRouterCacheEntry | undefined | Promise<AppRouterCacheEntry | undefined>;\n set(key: string, entry: AppRouterCacheEntry): void | Promise<void>;\n}\n\n/**\n * Configures the process-local in-memory route cache implementation.\n */\nexport interface MemoryRouteCacheOptions {\n maxEntries?: number;\n sweepIntervalMs?: number;\n}\n\ninterface AppRouterCacheState {\n activeContexts: RouteCacheContext[];\n invalidatedPaths: Set<string>;\n memoryCache: AppRouterCache;\n storage: AsyncLocalStorage<RouteCacheContext>;\n}\n\ninterface RouteCacheContext {\n cache: AppRouterCache;\n cachePolicy?: RouteCachePolicy | undefined;\n closed?: boolean | undefined;\n revalidatedPaths: Set<string>;\n}\n\nconst cacheState = ((\n globalThis as { __mreactAppRouterCache?: AppRouterCacheState }\n).__mreactAppRouterCache ??= {\n activeContexts: [],\n invalidatedPaths: new Set(),\n memoryCache: createMemoryRouteCache(),\n storage: new AsyncLocalStorage<RouteCacheContext>(),\n});\ncacheState.storage ??= new AsyncLocalStorage<RouteCacheContext>();\n\n/**\n * Creates an in-memory route response cache for app-router rendering.\n *\n * The cache is process-local, evicts expired entries during reads/writes, and is suitable for development, tests, or single-process deployments that do not need shared invalidation.\n */\nexport function createMemoryRouteCache(options: MemoryRouteCacheOptions = {}): AppRouterCache {\n const maxEntries = positiveIntegerOrDefault(options.maxEntries, 10_000);\n const sweepIntervalMs = nonNegativeIntegerOrDefault(options.sweepIntervalMs, 60_000);\n const cachedRoutes = new Map<string, AppRouterCacheEntry>();\n const keysByPath = new Map<string, Set<string>>();\n let nextSweepAt = 0;\n\n function unindexKey(key: string, path: string): void {\n const keys = keysByPath.get(path);\n keys?.delete(key);\n\n if (keys?.size === 0) {\n keysByPath.delete(path);\n }\n }\n\n function deleteEntry(key: string): void {\n const entry = cachedRoutes.get(key);\n cachedRoutes.delete(key);\n\n if (entry !== undefined) {\n unindexKey(key, entry.path);\n }\n }\n\n function indexKey(key: string, path: string): void {\n const keys = keysByPath.get(path);\n\n if (keys === undefined) {\n keysByPath.set(path, new Set([key]));\n return;\n }\n\n keys.add(key);\n }\n\n function sweepExpired(now: number): void {\n for (const [key, entry] of cachedRoutes) {\n if (entry.expiresAt <= now) {\n deleteEntry(key);\n }\n }\n\n nextSweepAt = now + sweepIntervalMs;\n }\n\n function maybeSweepExpired(now: number): void {\n if (sweepIntervalMs === 0 || now >= nextSweepAt) {\n sweepExpired(now);\n }\n }\n\n function evictOldestEntries(): void {\n while (cachedRoutes.size > maxEntries) {\n const oldestKey = cachedRoutes.keys().next().value;\n\n if (oldestKey === undefined) {\n return;\n }\n\n deleteEntry(oldestKey);\n }\n }\n\n return {\n deleteByPath(path) {\n const normalizedPath = normalizeRevalidationPath(path);\n const keys = keysByPath.get(normalizedPath);\n\n if (keys === undefined) {\n return;\n }\n\n for (const key of keys) {\n cachedRoutes.delete(key);\n }\n\n keysByPath.delete(normalizedPath);\n },\n get(key, now = Date.now()) {\n const entry = cachedRoutes.get(key);\n\n if (entry === undefined) {\n return undefined;\n }\n\n if (entry.expiresAt <= now) {\n deleteEntry(key);\n return undefined;\n }\n\n return entry;\n },\n set(key, entry) {\n const now = Date.now();\n maybeSweepExpired(now);\n const previous = cachedRoutes.get(key);\n\n if (previous !== undefined) {\n cachedRoutes.delete(key);\n unindexKey(key, previous.path);\n }\n\n cachedRoutes.set(key, entry);\n indexKey(key, entry.path);\n\n if (cachedRoutes.size > maxEntries) {\n sweepExpired(now);\n evictOldestEntries();\n }\n },\n };\n}\n\nfunction positiveIntegerOrDefault(value: number | undefined, fallback: number): number {\n return value === undefined || !Number.isInteger(value) || value < 1 ? fallback : value;\n}\n\nfunction nonNegativeIntegerOrDefault(value: number | undefined, fallback: number): number {\n return value === undefined || !Number.isInteger(value) || value < 0 ? fallback : value;\n}\n\nexport function routeCachePolicyFromSource(code: string): RouteCachePolicy | undefined {\n const match = /^\\s*export\\s+const\\s+revalidate\\s*=\\s*(?<seconds>\\d+)\\s*;?\\s*$/m.exec(code);\n const seconds = match?.groups?.seconds === undefined ? undefined : Number(match.groups.seconds);\n\n if (seconds === undefined || !Number.isFinite(seconds)) {\n if (/^\\s*export\\s+const\\s+revalidate\\s*=/m.test(code)) {\n console.warn(\n \"export const revalidate must be a plain integer literal, e.g. export const revalidate = 3600\",\n );\n }\n return undefined;\n }\n\n return {\n cacheControl: seconds === 0 ? \"no-store\" : `s-maxage=${seconds}, stale-while-revalidate`,\n revalidateSeconds: seconds,\n };\n}\n\n/**\n * Sets the cache policy for the current app-router render.\n *\n * Call this during a loader or route render to override the response `Cache-Control` policy; it throws outside an active app-router request.\n */\nexport function cacheControl(options: CacheControlOptions): void {\n const activeContext = activeRouteCacheContext();\n\n if (activeContext === undefined) {\n throw new Error(\"cacheControl() must be called during an app router request.\");\n }\n\n activeContext.cachePolicy = routeCachePolicyFromOptions(options);\n}\n\nexport function routeCachePolicyFromOptions(options: CacheControlOptions): RouteCachePolicy {\n const directives: string[] = [];\n const maxAge = cacheControlSeconds(options.maxAge, \"maxAge\");\n const sMaxAge = cacheControlSeconds(options.sMaxAge, \"sMaxAge\");\n\n if (maxAge !== undefined) {\n directives.push(`max-age=${maxAge}`);\n }\n\n if (sMaxAge !== undefined) {\n directives.push(`s-maxage=${sMaxAge}`);\n }\n\n if (options.staleWhileRevalidate !== undefined) {\n directives.push(staleWhileRevalidateDirective(options.staleWhileRevalidate));\n }\n\n if (directives.length === 0) {\n throw new Error(\"cacheControl() requires at least one cache directive.\");\n }\n\n return {\n cacheControl: directives.join(\", \"),\n revalidateSeconds: sMaxAge ?? 0,\n };\n}\n\nexport function cachedRouteResponse(options: {\n cache?: AppRouterCache | undefined;\n key: string;\n now?: number;\n request?: Request | undefined;\n}): Promise<Response | undefined> {\n return Promise.resolve().then(async () => {\n if (requestCarriesCredentials(options.request)) {\n return undefined;\n }\n\n const cache = options.cache ?? cacheState.memoryCache;\n\n await consumeInvalidations(cache);\n const now = options.now ?? Date.now();\n const cached = await cache.get(options.key, now);\n\n if (\n cached === undefined ||\n cached.expiresAt <= now ||\n cached.schemaVersion !== ROUTE_CACHE_ENTRY_SCHEMA_VERSION ||\n !isStringRecord(cached.headers)\n ) {\n return undefined;\n }\n\n const headers = new Headers(cached.headers ?? {});\n headers.set(\"cache-control\", cached.cacheControl);\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"text/html; charset=utf-8\");\n }\n headers.set(\"x-mreact-cache\", \"HIT\");\n // Replayed against the scheme of the request being served, not the one\n // that produced the entry.\n if (cached.strictTransportSecurity !== undefined && isSecureRequest(options.request)) {\n headers.set(HSTS_HEADER, cached.strictTransportSecurity);\n }\n\n return new Response(cached.body, {\n headers,\n status: cached.status,\n });\n });\n}\n\nexport async function cacheRouteResponse(options: {\n cache?: AppRouterCache | undefined;\n headerDependent?: boolean | undefined;\n key: string;\n now?: number;\n path: string;\n policy: RouteCachePolicy | undefined;\n request?: Request | undefined;\n response: Response;\n /** Configured Strict-Transport-Security value, independent of this request's scheme. */\n strictTransportSecurity?: string | undefined;\n}): Promise<Response> {\n if (options.policy === undefined) {\n return options.response;\n }\n\n if (options.policy.revalidateSeconds === 0) {\n // No entry is stored here, but cacheControl({ maxAge }) still emits a bare\n // max-age that a shared cache may store, so a header dependent render has\n // to opt out of that too. Directives that already keep the response out of\n // shared caches are left exactly as the application asked for them.\n const sharedCacheMayStore = !/(^|,)\\s*(private|no-store)\\s*(,|$)/.test(\n options.policy.cacheControl,\n );\n\n if (options.headerDependent === true && sharedCacheMayStore) {\n options.response.headers.set(\"cache-control\", \"private, no-store\");\n options.response.headers.set(\"x-mreact-cache\", \"DYNAMIC\");\n return options.response;\n }\n\n options.response.headers.set(\"cache-control\", options.policy.cacheControl);\n return options.response;\n }\n\n const body = await options.response.text();\n const cacheControl = options.policy.cacheControl;\n const status = options.response.status;\n const contentType = options.response.headers.get(\"content-type\") ?? \"text/html; charset=utf-8\";\n\n // A render that read a request header only produced HTML that is correct for\n // that header value. The cache key covers the path and query alone, so the\n // entry cannot be shared; the response is marked uncacheable for downstream\n // shared caches too, which are keyed the same way.\n if (\n options.headerDependent === true ||\n requestCarriesCredentials(options.request) ||\n options.response.headers.has(\"set-cookie\")\n ) {\n const headers = new Headers(options.response.headers);\n headers.set(\"cache-control\", \"private, no-store\");\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", contentType);\n }\n if (options.headerDependent === true) {\n headers.set(\"x-mreact-cache\", \"DYNAMIC\");\n }\n\n return new Response(body, {\n headers,\n status,\n });\n }\n\n // Metadata-derived security headers are part of the rendered response, so\n // they are stored with it and replayed on a hit rather than dropped by the\n // rebuilt cache response. Strict-Transport-Security is kept apart because it\n // is derived from the scheme of whichever request missed and the key does not\n // cover the scheme: it is replayed only to requests that are themselves\n // secure, instead of pinning one visitor's scheme onto the entry.\n const storedHeaders: Record<string, string> = {};\n options.response.headers.forEach((value, key) => {\n if (key !== \"cache-control\" && key !== \"x-mreact-cache\" && key !== HSTS_HEADER) {\n storedHeaders[key] = value;\n }\n });\n // Taken from the route's configuration rather than from this response, whose\n // HSTS header is present only when this particular request was secure. Using\n // the response would let one plain request pin an entry that withholds HSTS\n // from every later secure visitor.\n const hsts = options.strictTransportSecurity;\n\n await (options.cache ?? cacheState.memoryCache).set(options.key, {\n body,\n cacheControl,\n expiresAt: (options.now ?? Date.now()) + options.policy.revalidateSeconds * 1000,\n headers: storedHeaders,\n ...(hsts === undefined ? {} : { strictTransportSecurity: hsts }),\n path: normalizeRevalidationPath(options.path),\n schemaVersion: ROUTE_CACHE_ENTRY_SCHEMA_VERSION,\n status,\n });\n\n const headers = new Headers(storedHeaders);\n headers.set(\"cache-control\", cacheControl);\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", contentType);\n }\n headers.set(\"x-mreact-cache\", \"MISS\");\n if (hsts !== undefined && isSecureRequest(options.request)) {\n headers.set(HSTS_HEADER, hsts);\n }\n\n return new Response(body, {\n headers,\n status,\n });\n}\n\nconst HSTS_HEADER = \"strict-transport-security\";\nconst ROUTE_CACHE_ENTRY_SCHEMA_VERSION = 2;\n\nfunction isStringRecord(value: unknown): value is Record<string, string> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.values(value).every((entry) => typeof entry === \"string\")\n );\n}\n\nfunction isSecureRequest(request: Request | undefined): boolean {\n // `Request.url` is always absolute, so this avoids parsing a URL on the\n // cache-hit hot path.\n return request?.url.startsWith(\"https://\") === true;\n}\n\nfunction requestCarriesCredentials(request: Request | undefined): boolean {\n if (request === undefined) {\n return false;\n }\n\n if (request.headers.has(\"authorization\") || request.headers.has(\"cookie\")) {\n return true;\n }\n\n for (const name of request.headers.keys()) {\n const lower = name.toLowerCase();\n if (PUBLIC_ROUTE_CACHE_REQUEST_HEADERS.has(lower)) {\n continue;\n }\n\n if (\n lower === \"x-api-key\" ||\n lower === \"cf-access-jwt-assertion\" ||\n lower === \"proxy-authorization\" ||\n lower === \"x-access-token\" ||\n lower === \"x-auth-token\" ||\n lower === \"x-authenticated-user\" ||\n lower === \"x-id-token\" ||\n lower === \"x-forwarded-user\" ||\n lower === \"x-session-id\" ||\n lower === \"x-user-email\" ||\n lower === \"x-user-id\" ||\n lower.endsWith(\"-api-key\") ||\n lower.endsWith(\"-auth-token\") ||\n lower.endsWith(\"-session-id\") ||\n lower.endsWith(\"-user\") ||\n lower.endsWith(\"-user-email\") ||\n lower.endsWith(\"-user-id\") ||\n lower.includes(\"-jwt-\") ||\n lower.endsWith(\"-jwt\")\n ) {\n return true;\n }\n\n continue;\n }\n\n return false;\n}\n\nconst PUBLIC_ROUTE_CACHE_REQUEST_HEADERS = new Set([\n \"accept\",\n \"accept-encoding\",\n \"accept-language\",\n \"cache-control\",\n \"cf-connecting-ip\",\n \"cf-ipcountry\",\n \"cf-ray\",\n \"connection\",\n \"dnt\",\n \"host\",\n \"if-none-match\",\n \"pragma\",\n \"priority\",\n \"purpose\",\n \"referer\",\n \"save-data\",\n \"sec-ch-prefers-color-scheme\",\n \"sec-ch-prefers-reduced-motion\",\n \"sec-ch-ua\",\n \"sec-ch-ua-mobile\",\n \"sec-ch-ua-platform\",\n \"sec-fetch-dest\",\n \"sec-fetch-mode\",\n \"sec-fetch-site\",\n \"sec-fetch-user\",\n \"upgrade-insecure-requests\",\n \"user-agent\",\n \"via\",\n \"x-mreact-navigation\",\n \"x-mreact-navigation-cache\",\n \"x-real-ip\",\n \"x-request-id\",\n \"x-forwarded-for\",\n \"x-forwarded-host\",\n \"x-forwarded-proto\",\n]);\n\n/**\n * Invalidates cached route responses for a normalized app-router path.\n *\n * During a request the invalidation is scoped to that route cache context; outside a request it is queued for the next cache access.\n */\nexport function revalidatePath(path: string): void {\n const normalizedPath = normalizeRevalidationPath(path);\n const activeContext = activeRouteCacheContext();\n\n if (activeContext !== undefined) {\n activeContext.revalidatedPaths.add(normalizedPath);\n return;\n }\n\n cacheState.invalidatedPaths.add(normalizedPath);\n}\n\nexport async function consumeInvalidations(\n cache: AppRouterCache = cacheState.memoryCache,\n): Promise<void> {\n if (cacheState.invalidatedPaths.size === 0) {\n return;\n }\n\n for (const path of cacheState.invalidatedPaths) {\n await cache.deleteByPath(path);\n }\n\n cacheState.invalidatedPaths.clear();\n}\n\nexport async function withRouteCacheContext<T>(\n cache: AppRouterCache | undefined,\n fn: () => T | Promise<T>,\n): Promise<{ cachePolicy: RouteCachePolicy | undefined; revalidatedPaths: string[]; value: T }> {\n const context: RouteCacheContext = {\n cache: cache ?? cacheState.memoryCache,\n revalidatedPaths: new Set(),\n };\n\n return cacheState.storage.run(context, async () => {\n try {\n const value = await fn();\n context.closed = true;\n const cachePolicy = context.cachePolicy;\n const revalidatedPaths = Array.from(context.revalidatedPaths);\n\n for (const path of revalidatedPaths) {\n await context.cache.deleteByPath(path);\n }\n\n return { cachePolicy, revalidatedPaths, value };\n } finally {\n context.closed = true;\n }\n });\n}\n\nexport function beginRouteCacheContext(cache: AppRouterCache | undefined): {\n readonly cachePolicy: RouteCachePolicy | undefined;\n dispose(): Promise<{ revalidatedPaths: string[] }>;\n} {\n const context: RouteCacheContext = {\n cache: cache ?? cacheState.memoryCache,\n revalidatedPaths: new Set(),\n };\n\n cacheState.activeContexts.push(context);\n\n return {\n get cachePolicy() {\n return context.cachePolicy;\n },\n async dispose() {\n context.closed = true;\n const revalidatedPaths = Array.from(context.revalidatedPaths);\n try {\n for (const path of revalidatedPaths) {\n await context.cache.deleteByPath(path);\n }\n } finally {\n const index = cacheState.activeContexts.lastIndexOf(context);\n if (index !== -1) {\n cacheState.activeContexts.splice(index, 1);\n }\n }\n\n return { revalidatedPaths };\n },\n };\n}\n\nexport function activeRouteCacheContext(): RouteCacheContext | undefined {\n const asyncContext = cacheState.storage.getStore();\n\n if (asyncContext !== undefined) {\n return asyncContext.closed === true ? undefined : asyncContext;\n }\n\n for (let index = cacheState.activeContexts.length - 1; index >= 0; index -= 1) {\n const context = cacheState.activeContexts[index];\n\n if (context?.closed !== true) {\n return context;\n }\n }\n\n return undefined;\n}\n\n// Host is excluded from the cache key to prevent attacker-supplied Host\n// headers from fragmenting / poisoning the cache (Issue 068). The Vary\n// dimensions are the request path + query and the document/navigation HTML\n// shape; same-origin reverse proxies are expected to handle vhost separation\n// at their layer.\nexport function routeCacheKey(\n appDir: string,\n routePath: string,\n url: URL,\n responseVariant: \"document\" | \"navigation\" = \"document\",\n): string {\n return `${appDir}\\0${normalizeRevalidationPath(routePath)}\\0${url.pathname}${url.search}\\0${responseVariant}`;\n}\n\nexport function stripRevalidateExport(code: string): string {\n return code.replace(/^\\s*export\\s+const\\s+revalidate\\s*=\\s*\\d+\\s*;?\\s*$/m, \"\");\n}\n\nfunction normalizeRevalidationPath(path: string): string {\n const pathname = path.startsWith(\"/\") ? path : `/${path}`;\n const withoutTrailing = pathname.length > 1 ? pathname.replace(/\\/+$/, \"\") : pathname;\n\n return withoutTrailing === \"\" ? \"/\" : withoutTrailing;\n}\n\nfunction cacheControlSeconds(value: number | undefined, name: string): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new Error(`cacheControl() ${name} must be a non-negative integer.`);\n }\n\n return value;\n}\n\nfunction staleWhileRevalidateDirective(value: boolean | number): string {\n if (value === true) {\n return \"stale-while-revalidate\";\n }\n\n if (value === false) {\n throw new Error(\"cacheControl() staleWhileRevalidate must be true or a non-negative integer.\");\n }\n\n const seconds = cacheControlSeconds(value, \"staleWhileRevalidate\");\n return `stale-while-revalidate=${seconds}`;\n}\n"]}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { responseHeadersContainCspNonce } from \"./csp.js\";\n\n/**\n * Describes the cache lifetime assigned to a rendered route response.\n */\nexport interface RouteCachePolicy {\n cacheControl: string;\n revalidateSeconds: number;\n}\n\n/**\n * Configures cache-control directives for route response caching.\n */\nexport interface CacheControlOptions {\n maxAge?: number | undefined;\n sMaxAge?: number | undefined;\n staleWhileRevalidate?: boolean | number | undefined;\n}\n\n/**\n * Stores a cached route response body and its expiration metadata.\n */\nexport interface AppRouterCacheEntry {\n body: string;\n cacheControl: string;\n expiresAt: number;\n /**\n * Response headers to replay on a cache hit.\n *\n * Metadata-derived security headers such as `content-security-policy`,\n * `x-frame-options` and `x-content-type-options` live here, so that turning a\n * route into a cached one does not quietly drop them.\n */\n headers?: Record<string, string> | undefined;\n path: string;\n /**\n * Identifies entries that preserve the complete current cache contract.\n *\n * Missing markers are treated as cache misses so HTML written by older\n * runtimes, or custom serializers that drop new security fields, is never\n * replayed under the current security rules.\n */\n schemaVersion?: 2 | undefined;\n status: number;\n /**\n * Strict-Transport-Security value to replay to secure requests only.\n *\n * It is kept out of `headers` because it depends on the scheme of the\n * request that produced the entry, which the cache key does not cover.\n */\n strictTransportSecurity?: string | undefined;\n}\n\n/**\n * Defines the storage interface used by app-router route response caching.\n */\nexport interface AppRouterCache {\n deleteByPath(path: string): void | Promise<void>;\n get(\n key: string,\n now?: number,\n ): AppRouterCacheEntry | undefined | Promise<AppRouterCacheEntry | undefined>;\n set(key: string, entry: AppRouterCacheEntry): void | Promise<void>;\n}\n\n/**\n * Configures the process-local in-memory route cache implementation.\n */\nexport interface MemoryRouteCacheOptions {\n maxEntries?: number;\n sweepIntervalMs?: number;\n}\n\ninterface AppRouterCacheState {\n activeContexts: RouteCacheContext[];\n memoryCache: AppRouterCache;\n storage: AsyncLocalStorage<RouteCacheContext>;\n}\n\ninterface RouteCacheContext {\n cache: AppRouterCache;\n cachePolicy?: RouteCachePolicy | undefined;\n closed?: boolean | undefined;\n externalInvalidationOverflowed: boolean;\n externallyInvalidatedPaths: Set<string>;\n revalidatedPaths: Set<string>;\n}\n\ninterface AppRouterCacheInvalidationState {\n activeContexts: WeakMap<AppRouterCache, Set<RouteCacheContext>>;\n disabledCaches: WeakSet<AppRouterCache>;\n finalizer: FinalizationRegistry<WeakRef<AppRouterCache>>;\n liveReferences: Set<WeakRef<AppRouterCache>>;\n pendingPaths: WeakMap<AppRouterCache, Set<string>>;\n registeredCaches: WeakSet<AppRouterCache>;\n running: WeakMap<AppRouterCache, Promise<void>>;\n storesBeingInvalidated: WeakMap<AppRouterCache, number>;\n}\n\nconst MAX_PENDING_ROUTE_INVALIDATIONS = 1024;\n\nconst cacheInvalidationState = ((\n globalThis as {\n __mreactAppRouterCacheInvalidation?: AppRouterCacheInvalidationState;\n }\n).__mreactAppRouterCacheInvalidation ??= createCacheInvalidationState());\ncacheInvalidationState.activeContexts ??= new WeakMap();\ncacheInvalidationState.disabledCaches ??= new WeakSet();\ncacheInvalidationState.storesBeingInvalidated ??= new WeakMap();\n\nconst cacheState = ((\n globalThis as { __mreactAppRouterCache?: AppRouterCacheState }\n).__mreactAppRouterCache ??= {\n activeContexts: [],\n memoryCache: createMemoryRouteCache(),\n storage: new AsyncLocalStorage<RouteCacheContext>(),\n});\ncacheState.storage ??= new AsyncLocalStorage<RouteCacheContext>();\nregisterRouteCache(cacheState.memoryCache);\n\n/**\n * Creates an in-memory route response cache for app-router rendering.\n *\n * The cache is process-local, evicts expired entries during reads/writes, and is suitable for development, tests, or single-process deployments that do not need shared invalidation.\n */\nexport function createMemoryRouteCache(options: MemoryRouteCacheOptions = {}): AppRouterCache {\n const maxEntries = positiveIntegerOrDefault(options.maxEntries, 10_000);\n const sweepIntervalMs = nonNegativeIntegerOrDefault(options.sweepIntervalMs, 60_000);\n const cachedRoutes = new Map<string, AppRouterCacheEntry>();\n const keysByPath = new Map<string, Set<string>>();\n let nextSweepAt = 0;\n\n function unindexKey(key: string, path: string): void {\n const keys = keysByPath.get(path);\n keys?.delete(key);\n\n if (keys?.size === 0) {\n keysByPath.delete(path);\n }\n }\n\n function deleteEntry(key: string): void {\n const entry = cachedRoutes.get(key);\n cachedRoutes.delete(key);\n\n if (entry !== undefined) {\n unindexKey(key, entry.path);\n }\n }\n\n function indexKey(key: string, path: string): void {\n const keys = keysByPath.get(path);\n\n if (keys === undefined) {\n keysByPath.set(path, new Set([key]));\n return;\n }\n\n keys.add(key);\n }\n\n function sweepExpired(now: number): void {\n for (const [key, entry] of cachedRoutes) {\n if (entry.expiresAt <= now) {\n deleteEntry(key);\n }\n }\n\n nextSweepAt = now + sweepIntervalMs;\n }\n\n function maybeSweepExpired(now: number): void {\n if (sweepIntervalMs === 0 || now >= nextSweepAt) {\n sweepExpired(now);\n }\n }\n\n function evictOldestEntries(): void {\n while (cachedRoutes.size > maxEntries) {\n const oldestKey = cachedRoutes.keys().next().value;\n\n if (oldestKey === undefined) {\n return;\n }\n\n deleteEntry(oldestKey);\n }\n }\n\n const cache: AppRouterCache = {\n deleteByPath(path) {\n const normalizedPath = normalizeRevalidationPath(path);\n const keys = keysByPath.get(normalizedPath);\n\n if (keys === undefined) {\n return;\n }\n\n for (const key of keys) {\n cachedRoutes.delete(key);\n }\n\n keysByPath.delete(normalizedPath);\n },\n get(key, now = Date.now()) {\n const entry = cachedRoutes.get(key);\n\n if (entry === undefined) {\n return undefined;\n }\n\n if (entry.expiresAt <= now) {\n deleteEntry(key);\n return undefined;\n }\n\n return entry;\n },\n set(key, entry) {\n const now = Date.now();\n maybeSweepExpired(now);\n const previous = cachedRoutes.get(key);\n\n if (previous !== undefined) {\n cachedRoutes.delete(key);\n unindexKey(key, previous.path);\n }\n\n cachedRoutes.set(key, entry);\n indexKey(key, entry.path);\n\n if (cachedRoutes.size > maxEntries) {\n sweepExpired(now);\n evictOldestEntries();\n }\n },\n };\n registerRouteCache(cache);\n return cache;\n}\n\nfunction positiveIntegerOrDefault(value: number | undefined, fallback: number): number {\n return value === undefined || !Number.isInteger(value) || value < 1 ? fallback : value;\n}\n\nfunction nonNegativeIntegerOrDefault(value: number | undefined, fallback: number): number {\n return value === undefined || !Number.isInteger(value) || value < 0 ? fallback : value;\n}\n\nexport function routeCachePolicyFromSource(code: string): RouteCachePolicy | undefined {\n const match = /^\\s*export\\s+const\\s+revalidate\\s*=\\s*(?<seconds>\\d+)\\s*;?\\s*$/m.exec(code);\n const seconds = match?.groups?.seconds === undefined ? undefined : Number(match.groups.seconds);\n\n if (seconds === undefined || !Number.isFinite(seconds)) {\n if (/^\\s*export\\s+const\\s+revalidate\\s*=/m.test(code)) {\n console.warn(\n \"export const revalidate must be a plain integer literal, e.g. export const revalidate = 3600\",\n );\n }\n return undefined;\n }\n\n return {\n cacheControl: seconds === 0 ? \"no-store\" : `s-maxage=${seconds}, stale-while-revalidate`,\n revalidateSeconds: seconds,\n };\n}\n\n/**\n * Sets the cache policy for the current app-router render.\n *\n * Call this during a loader or route render to override the response `Cache-Control` policy; it throws outside an active app-router request.\n */\nexport function cacheControl(options: CacheControlOptions): void {\n const activeContext = activeRouteCacheContext();\n\n if (activeContext === undefined) {\n throw new Error(\"cacheControl() must be called during an app router request.\");\n }\n\n activeContext.cachePolicy = routeCachePolicyFromOptions(options);\n}\n\nexport function routeCachePolicyFromOptions(options: CacheControlOptions): RouteCachePolicy {\n const directives: string[] = [];\n const maxAge = cacheControlSeconds(options.maxAge, \"maxAge\");\n const sMaxAge = cacheControlSeconds(options.sMaxAge, \"sMaxAge\");\n\n if (maxAge !== undefined) {\n directives.push(`max-age=${maxAge}`);\n }\n\n if (sMaxAge !== undefined) {\n directives.push(`s-maxage=${sMaxAge}`);\n }\n\n if (options.staleWhileRevalidate !== undefined) {\n directives.push(staleWhileRevalidateDirective(options.staleWhileRevalidate));\n }\n\n if (directives.length === 0) {\n throw new Error(\"cacheControl() requires at least one cache directive.\");\n }\n\n return {\n cacheControl: directives.join(\", \"),\n revalidateSeconds: sMaxAge ?? 0,\n };\n}\n\nexport function cachedRouteResponse(options: {\n cache?: AppRouterCache | undefined;\n key: string;\n now?: number;\n request?: Request | undefined;\n}): Promise<Response | undefined> {\n return Promise.resolve().then(async () => {\n if (requestCarriesCredentials(options.request)) {\n return undefined;\n }\n\n const cache = options.cache ?? cacheState.memoryCache;\n\n registerRouteCache(cache);\n if (routeCacheIsUnavailable(cache)) {\n return undefined;\n }\n await consumeInvalidations(cache);\n const now = options.now ?? Date.now();\n const cached = await cache.get(options.key, now);\n\n if (\n cached === undefined ||\n cached.expiresAt <= now ||\n cached.schemaVersion !== ROUTE_CACHE_ENTRY_SCHEMA_VERSION ||\n !isStringRecord(cached.headers)\n ) {\n return undefined;\n }\n\n const headers = new Headers(cached.headers ?? {});\n if (responseHeadersContainCspNonce(headers)) {\n return undefined;\n }\n headers.set(\"cache-control\", cached.cacheControl);\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"text/html; charset=utf-8\");\n }\n headers.set(\"x-mreact-cache\", \"HIT\");\n // Replayed against the scheme of the request being served, not the one\n // that produced the entry.\n if (cached.strictTransportSecurity !== undefined && isSecureRequest(options.request)) {\n headers.set(HSTS_HEADER, cached.strictTransportSecurity);\n }\n\n return new Response(cached.body, {\n headers,\n status: cached.status,\n });\n });\n}\n\nexport async function cacheRouteResponse(options: {\n cache?: AppRouterCache | undefined;\n headerDependent?: boolean | undefined;\n key: string;\n now?: number;\n path: string;\n policy: RouteCachePolicy | undefined;\n request?: Request | undefined;\n response: Response;\n /** Configured Strict-Transport-Security value, independent of this request's scheme. */\n strictTransportSecurity?: string | undefined;\n}): Promise<Response> {\n if (options.policy === undefined) {\n return options.response;\n }\n\n if (options.policy.revalidateSeconds === 0) {\n // No entry is stored here, but cacheControl({ maxAge }) still emits a bare\n // max-age that a shared cache may store, so a header dependent render has\n // to opt out of that too. Directives that already keep the response out of\n // shared caches are left exactly as the application asked for them.\n const sharedCacheMayStore = !/(^|,)\\s*(private|no-store)\\s*(,|$)/.test(\n options.policy.cacheControl,\n );\n\n if (options.headerDependent === true && sharedCacheMayStore) {\n options.response.headers.set(\"cache-control\", \"private, no-store\");\n options.response.headers.set(\"x-mreact-cache\", \"DYNAMIC\");\n return options.response;\n }\n\n options.response.headers.set(\"cache-control\", options.policy.cacheControl);\n return options.response;\n }\n\n const body = await options.response.text();\n const cacheControl = options.policy.cacheControl;\n const status = options.response.status;\n const contentType = options.response.headers.get(\"content-type\") ?? \"text/html; charset=utf-8\";\n const cache = options.cache ?? cacheState.memoryCache;\n const normalizedPath = normalizeRevalidationPath(options.path);\n registerRouteCache(cache);\n const invalidatedBeforeStore = routeCachePathWasInvalidatedDuringActiveContext(normalizedPath);\n\n // A render that read a request header only produced HTML that is correct for\n // that header value. The cache key covers the path and query alone, so the\n // entry cannot be shared; the response is marked uncacheable for downstream\n // shared caches too, which are keyed the same way.\n if (\n options.headerDependent === true ||\n invalidatedBeforeStore ||\n routeCacheIsUnavailable(cache) ||\n requestCarriesCredentials(options.request) ||\n options.response.headers.has(\"set-cookie\") ||\n responseHeadersContainCspNonce(options.response.headers)\n ) {\n const headers = new Headers(options.response.headers);\n headers.set(\"cache-control\", \"private, no-store\");\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", contentType);\n }\n if (\n options.headerDependent === true ||\n invalidatedBeforeStore ||\n routeCacheIsUnavailable(cache) ||\n responseHeadersContainCspNonce(options.response.headers)\n ) {\n headers.set(\"x-mreact-cache\", \"DYNAMIC\");\n }\n\n return new Response(body, {\n headers,\n status,\n });\n }\n\n // Metadata-derived security headers are part of the rendered response, so\n // they are stored with it and replayed on a hit rather than dropped by the\n // rebuilt cache response. Strict-Transport-Security is kept apart because it\n // is derived from the scheme of whichever request missed and the key does not\n // cover the scheme: it is replayed only to requests that are themselves\n // secure, instead of pinning one visitor's scheme onto the entry.\n const storedHeaders: Record<string, string> = {};\n options.response.headers.forEach((value, key) => {\n if (key !== \"cache-control\" && key !== \"x-mreact-cache\" && key !== HSTS_HEADER) {\n storedHeaders[key] = value;\n }\n });\n // Taken from the route's configuration rather than from this response, whose\n // HSTS header is present only when this particular request was secure. Using\n // the response would let one plain request pin an entry that withholds HSTS\n // from every later secure visitor.\n const hsts = options.strictTransportSecurity;\n\n await cache.set(options.key, {\n body,\n cacheControl,\n expiresAt: (options.now ?? Date.now()) + options.policy.revalidateSeconds * 1000,\n headers: storedHeaders,\n ...(hsts === undefined ? {} : { strictTransportSecurity: hsts }),\n path: normalizedPath,\n schemaVersion: ROUTE_CACHE_ENTRY_SCHEMA_VERSION,\n status,\n });\n\n if (\n routeCachePathWasInvalidatedDuringActiveContext(normalizedPath) ||\n routeCacheIsUnavailable(cache)\n ) {\n beginRouteCacheStoreInvalidation(cache);\n try {\n await cache.deleteByPath(normalizedPath);\n endRouteCacheStoreInvalidation(cache);\n } catch (error) {\n // The invalidation may have completed before this asynchronous set did.\n // If deleting the late write now fails, replace its exact key with an\n // expired entry so another adapter object backed by the same persistent\n // store cannot replay the stale current-schema value.\n try {\n await cache.set(options.key, {\n body: \"\",\n cacheControl: \"no-store\",\n expiresAt: 0,\n headers: {},\n path: normalizedPath,\n schemaVersion: ROUTE_CACHE_ENTRY_SCHEMA_VERSION,\n status: 500,\n });\n } catch {\n // The originating cache object still fails closed below even when the\n // persistent backend rejects both deletion and the tombstone write.\n }\n cacheInvalidationState.disabledCaches.add(cache);\n endRouteCacheStoreInvalidation(cache);\n throw error;\n }\n const headers = new Headers(storedHeaders);\n headers.set(\"cache-control\", \"private, no-store\");\n headers.set(\"x-mreact-cache\", \"DYNAMIC\");\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", contentType);\n }\n return new Response(body, { headers, status });\n }\n\n const headers = new Headers(storedHeaders);\n headers.set(\"cache-control\", cacheControl);\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", contentType);\n }\n headers.set(\"x-mreact-cache\", \"MISS\");\n if (hsts !== undefined && isSecureRequest(options.request)) {\n headers.set(HSTS_HEADER, hsts);\n }\n\n return new Response(body, {\n headers,\n status,\n });\n}\n\nconst HSTS_HEADER = \"strict-transport-security\";\nconst ROUTE_CACHE_ENTRY_SCHEMA_VERSION = 2;\n\nfunction isStringRecord(value: unknown): value is Record<string, string> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.values(value).every((entry) => typeof entry === \"string\")\n );\n}\n\nfunction isSecureRequest(request: Request | undefined): boolean {\n // `Request.url` is always absolute, so this avoids parsing a URL on the\n // cache-hit hot path.\n return request?.url.startsWith(\"https://\") === true;\n}\n\nfunction requestCarriesCredentials(request: Request | undefined): boolean {\n if (request === undefined) {\n return false;\n }\n\n if (request.headers.has(\"authorization\") || request.headers.has(\"cookie\")) {\n return true;\n }\n\n for (const name of request.headers.keys()) {\n const lower = name.toLowerCase();\n if (PUBLIC_ROUTE_CACHE_REQUEST_HEADERS.has(lower)) {\n continue;\n }\n\n if (\n lower === \"x-api-key\" ||\n lower === \"cf-access-jwt-assertion\" ||\n lower === \"proxy-authorization\" ||\n lower === \"x-access-token\" ||\n lower === \"x-auth-token\" ||\n lower === \"x-authenticated-user\" ||\n lower === \"x-id-token\" ||\n lower === \"x-forwarded-user\" ||\n lower === \"x-session-id\" ||\n lower === \"x-user-email\" ||\n lower === \"x-user-id\" ||\n lower.endsWith(\"-api-key\") ||\n lower.endsWith(\"-auth-token\") ||\n lower.endsWith(\"-session-id\") ||\n lower.endsWith(\"-user\") ||\n lower.endsWith(\"-user-email\") ||\n lower.endsWith(\"-user-id\") ||\n lower.includes(\"-jwt-\") ||\n lower.endsWith(\"-jwt\")\n ) {\n return true;\n }\n\n continue;\n }\n\n return false;\n}\n\nconst PUBLIC_ROUTE_CACHE_REQUEST_HEADERS = new Set([\n \"accept\",\n \"accept-encoding\",\n \"accept-language\",\n \"cache-control\",\n \"cf-connecting-ip\",\n \"cf-ipcountry\",\n \"cf-ray\",\n \"connection\",\n \"dnt\",\n \"host\",\n \"if-none-match\",\n \"pragma\",\n \"priority\",\n \"purpose\",\n \"referer\",\n \"save-data\",\n \"sec-ch-prefers-color-scheme\",\n \"sec-ch-prefers-reduced-motion\",\n \"sec-ch-ua\",\n \"sec-ch-ua-mobile\",\n \"sec-ch-ua-platform\",\n \"sec-fetch-dest\",\n \"sec-fetch-mode\",\n \"sec-fetch-site\",\n \"sec-fetch-user\",\n \"upgrade-insecure-requests\",\n \"user-agent\",\n \"via\",\n \"x-mreact-navigation\",\n \"x-mreact-navigation-cache\",\n \"x-real-ip\",\n \"x-request-id\",\n \"x-forwarded-for\",\n \"x-forwarded-host\",\n \"x-forwarded-proto\",\n]);\n\n/**\n * Invalidates cached route responses for a normalized app-router path.\n *\n * During a request the invalidation is scoped to that route cache context. Outside a request it is broadcast to every live route cache registered in this process, and later reads wait for their cache's invalidation to finish.\n */\nexport function revalidatePath(path: string): void {\n const normalizedPath = normalizeRevalidationPath(path);\n const activeContext = activeRouteCacheContext();\n\n if (activeContext !== undefined) {\n activeContext.revalidatedPaths.add(normalizedPath);\n return;\n }\n\n for (const reference of cacheInvalidationState.liveReferences) {\n const cache = reference.deref();\n if (cache === undefined) {\n cacheInvalidationState.liveReferences.delete(reference);\n continue;\n }\n\n const pendingPaths = cacheInvalidationState.pendingPaths.get(cache);\n if (\n pendingPaths !== undefined &&\n !cacheInvalidationState.disabledCaches.has(cache) &&\n !pendingPaths.has(normalizedPath)\n ) {\n if (pendingPaths.size >= MAX_PENDING_ROUTE_INVALIDATIONS) {\n pendingPaths.clear();\n cacheInvalidationState.disabledCaches.add(cache);\n } else {\n pendingPaths.add(normalizedPath);\n }\n }\n markActiveRouteCacheContextsInvalidated(cache, normalizedPath);\n void startPendingInvalidations(cache).catch(() => {});\n }\n}\n\nexport async function consumeInvalidations(\n cache: AppRouterCache = cacheState.memoryCache,\n): Promise<void> {\n registerRouteCache(cache);\n await startPendingInvalidations(cache);\n}\n\nfunction registerRouteCache(cache: AppRouterCache): void {\n if (cacheInvalidationState.registeredCaches.has(cache)) {\n return;\n }\n\n cacheInvalidationState.registeredCaches.add(cache);\n cacheInvalidationState.pendingPaths.set(cache, new Set());\n const reference = new WeakRef(cache);\n cacheInvalidationState.liveReferences.add(reference);\n cacheInvalidationState.finalizer.register(cache, reference, reference);\n}\n\nfunction startPendingInvalidations(cache: AppRouterCache): Promise<void> {\n const running = cacheInvalidationState.running.get(cache);\n if (running !== undefined) {\n return running;\n }\n\n const paths = cacheInvalidationState.pendingPaths.get(cache);\n if (paths === undefined || paths.size === 0) {\n return Promise.resolve();\n }\n\n const task = drainPendingInvalidations(cache, paths);\n cacheInvalidationState.running.set(cache, task);\n void task\n .finally(() => {\n if (cacheInvalidationState.running.get(cache) === task) {\n cacheInvalidationState.running.delete(cache);\n }\n })\n .catch(() => {});\n return task;\n}\n\nfunction createCacheInvalidationState(): AppRouterCacheInvalidationState {\n const liveReferences = new Set<WeakRef<AppRouterCache>>();\n return {\n activeContexts: new WeakMap(),\n disabledCaches: new WeakSet(),\n finalizer: new FinalizationRegistry((reference) => {\n liveReferences.delete(reference);\n }),\n liveReferences,\n pendingPaths: new WeakMap(),\n registeredCaches: new WeakSet(),\n running: new WeakMap(),\n storesBeingInvalidated: new WeakMap(),\n };\n}\n\nfunction routeCacheIsUnavailable(cache: AppRouterCache): boolean {\n return (\n cacheInvalidationState.disabledCaches.has(cache) ||\n (cacheInvalidationState.storesBeingInvalidated.get(cache) ?? 0) > 0\n );\n}\n\nfunction beginRouteCacheStoreInvalidation(cache: AppRouterCache): void {\n cacheInvalidationState.storesBeingInvalidated.set(\n cache,\n (cacheInvalidationState.storesBeingInvalidated.get(cache) ?? 0) + 1,\n );\n}\n\nfunction endRouteCacheStoreInvalidation(cache: AppRouterCache): void {\n const remaining = (cacheInvalidationState.storesBeingInvalidated.get(cache) ?? 1) - 1;\n if (remaining <= 0) {\n cacheInvalidationState.storesBeingInvalidated.delete(cache);\n } else {\n cacheInvalidationState.storesBeingInvalidated.set(cache, remaining);\n }\n}\n\nfunction routeCachePathWasInvalidatedDuringActiveContext(path: string): boolean {\n const context = activeRouteCacheContext();\n return (\n context !== undefined &&\n (context.externalInvalidationOverflowed || context.externallyInvalidatedPaths.has(path))\n );\n}\n\nfunction markActiveRouteCacheContextsInvalidated(\n cache: AppRouterCache,\n normalizedPath: string,\n): void {\n for (const context of cacheInvalidationState.activeContexts.get(cache) ?? []) {\n if (cacheInvalidationState.disabledCaches.has(cache)) {\n context.externalInvalidationOverflowed = true;\n context.externallyInvalidatedPaths.clear();\n } else if (\n !context.externallyInvalidatedPaths.has(normalizedPath) &&\n context.externallyInvalidatedPaths.size >= MAX_PENDING_ROUTE_INVALIDATIONS\n ) {\n context.externalInvalidationOverflowed = true;\n context.externallyInvalidatedPaths.clear();\n } else {\n context.externallyInvalidatedPaths.add(normalizedPath);\n }\n }\n}\n\nfunction registerActiveRouteCacheContext(context: RouteCacheContext): void {\n const contexts = cacheInvalidationState.activeContexts.get(context.cache);\n if (contexts === undefined) {\n cacheInvalidationState.activeContexts.set(context.cache, new Set([context]));\n return;\n }\n\n contexts.add(context);\n}\n\nfunction unregisterActiveRouteCacheContext(context: RouteCacheContext): void {\n const contexts = cacheInvalidationState.activeContexts.get(context.cache);\n contexts?.delete(context);\n if (contexts?.size === 0) {\n cacheInvalidationState.activeContexts.delete(context.cache);\n }\n}\n\nasync function drainPendingInvalidations(\n cache: AppRouterCache,\n paths: Set<string>,\n): Promise<void> {\n while (paths.size > 0) {\n const path = paths.values().next().value;\n if (path === undefined) {\n return;\n }\n\n await cache.deleteByPath(path);\n paths.delete(path);\n }\n}\n\nexport async function withRouteCacheContext<T>(\n cache: AppRouterCache | undefined,\n fn: () => T | Promise<T>,\n): Promise<{ cachePolicy: RouteCachePolicy | undefined; revalidatedPaths: string[]; value: T }> {\n const routeCache = cache ?? cacheState.memoryCache;\n registerRouteCache(routeCache);\n const context: RouteCacheContext = {\n cache: routeCache,\n externalInvalidationOverflowed: false,\n externallyInvalidatedPaths: new Set(),\n revalidatedPaths: new Set(),\n };\n registerActiveRouteCacheContext(context);\n\n return cacheState.storage.run(context, async () => {\n try {\n const value = await fn();\n context.closed = true;\n const cachePolicy = context.cachePolicy;\n const revalidatedPaths = Array.from(context.revalidatedPaths);\n\n for (const path of revalidatedPaths) {\n await context.cache.deleteByPath(path);\n }\n\n return { cachePolicy, revalidatedPaths, value };\n } finally {\n context.closed = true;\n unregisterActiveRouteCacheContext(context);\n }\n });\n}\n\nexport function beginRouteCacheContext(cache: AppRouterCache | undefined): {\n readonly cachePolicy: RouteCachePolicy | undefined;\n dispose(): Promise<{ revalidatedPaths: string[] }>;\n} {\n const routeCache = cache ?? cacheState.memoryCache;\n registerRouteCache(routeCache);\n const context: RouteCacheContext = {\n cache: routeCache,\n externalInvalidationOverflowed: false,\n externallyInvalidatedPaths: new Set(),\n revalidatedPaths: new Set(),\n };\n\n cacheState.activeContexts.push(context);\n registerActiveRouteCacheContext(context);\n\n return {\n get cachePolicy() {\n return context.cachePolicy;\n },\n async dispose() {\n context.closed = true;\n const revalidatedPaths = Array.from(context.revalidatedPaths);\n try {\n for (const path of revalidatedPaths) {\n await context.cache.deleteByPath(path);\n }\n } finally {\n const index = cacheState.activeContexts.lastIndexOf(context);\n if (index !== -1) {\n cacheState.activeContexts.splice(index, 1);\n }\n unregisterActiveRouteCacheContext(context);\n }\n\n return { revalidatedPaths };\n },\n };\n}\n\nexport function activeRouteCacheContext(): RouteCacheContext | undefined {\n const asyncContext = cacheState.storage.getStore();\n\n if (asyncContext !== undefined) {\n return asyncContext.closed === true ? undefined : asyncContext;\n }\n\n for (let index = cacheState.activeContexts.length - 1; index >= 0; index -= 1) {\n const context = cacheState.activeContexts[index];\n\n if (context?.closed !== true) {\n return context;\n }\n }\n\n return undefined;\n}\n\n// Host is excluded from the cache key to prevent attacker-supplied Host\n// headers from fragmenting / poisoning the cache (Issue 068). The Vary\n// dimensions are the request path + query and the document/navigation HTML\n// shape; same-origin reverse proxies are expected to handle vhost separation\n// at their layer.\nexport function routeCacheKey(\n appDir: string,\n routePath: string,\n url: URL,\n responseVariant: \"document\" | \"navigation\" = \"document\",\n): string {\n return `${appDir}\\0${normalizeRevalidationPath(routePath)}\\0${url.pathname}${url.search}\\0${responseVariant}`;\n}\n\nexport function stripRevalidateExport(code: string): string {\n return code.replace(/^\\s*export\\s+const\\s+revalidate\\s*=\\s*\\d+\\s*;?\\s*$/m, \"\");\n}\n\nfunction normalizeRevalidationPath(path: string): string {\n const pathname = path.startsWith(\"/\") ? path : `/${path}`;\n const withoutTrailing = pathname.length > 1 ? pathname.replace(/\\/+$/, \"\") : pathname;\n\n return withoutTrailing === \"\" ? \"/\" : withoutTrailing;\n}\n\nfunction cacheControlSeconds(value: number | undefined, name: string): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new Error(`cacheControl() ${name} must be a non-negative integer.`);\n }\n\n return value;\n}\n\nfunction staleWhileRevalidateDirective(value: boolean | number): string {\n if (value === true) {\n return \"stale-while-revalidate\";\n }\n\n if (value === false) {\n throw new Error(\"cacheControl() staleWhileRevalidate must be true or a non-negative integer.\");\n }\n\n const seconds = cacheControlSeconds(value, \"staleWhileRevalidate\");\n return `stale-while-revalidate=${seconds}`;\n}\n"]}
package/dist/cli.js CHANGED
@@ -35,7 +35,14 @@ if (parsed !== undefined) {
35
35
  console.log("Config: loading...");
36
36
  const loaded = routeArg === undefined
37
37
  ? await loadMreactRouterViteConfigDetails({ command: "build", cwd: process.cwd() })
38
- : { project: { appDir: resolve(routeArg) }, viteConfig: undefined };
38
+ : {
39
+ dehydrateOptions: undefined,
40
+ project: { appDir: resolve(routeArg) },
41
+ viteConfig: undefined,
42
+ };
43
+ if (loaded.dehydrateOptions !== undefined) {
44
+ throw new Error("Production builds must configure dehydratePolicyModule instead of an inline dehydrateOptions callback so generated runtimes use the same policy as prerendering.");
45
+ }
39
46
  try {
40
47
  const result = await buildApp({
41
48
  ...loaded.project,
@@ -111,12 +118,16 @@ if (parsed !== undefined) {
111
118
  const loaded = routeArg === undefined
112
119
  ? await loadMreactRouterViteConfigDetails({ command: "serve", cwd: process.cwd() })
113
120
  : {
121
+ dehydrateOptions: undefined,
114
122
  project: { appDir: resolve(routeArg) },
115
123
  serverPort: undefined,
116
124
  viteConfig: undefined,
117
125
  };
118
126
  const server = await startDevServer({
119
127
  ...loaded.project,
128
+ ...(loaded.dehydrateOptions === undefined
129
+ ? {}
130
+ : { dehydrateOptions: loaded.dehydrateOptions }),
120
131
  hostname: resolveCliHost(parsed.host, process.env),
121
132
  logger,
122
133
  port: resolveCliDevPort(parsed.port, process.env, loaded.serverPort),
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport {\n buildApp,\n packageAwsLambdaArtifact,\n packageCloudflarePagesArtifact,\n type BuildAppPhase,\n type BuildAppProgressEvent,\n} from \"./build.js\";\nimport {\n analyzeAppBoundaries,\n formatBoundaryReport,\n formatBoundaryReportJson,\n} from \"./boundaries.js\";\nimport {\n buildTargetsFromCliTarget,\n createCliRequestLogger,\n type CliBuildTarget,\n formatCliHelp,\n parseCliArguments,\n resolveCliAllowedHosts,\n resolveCliDevPort,\n resolveCliHost,\n resolveCliHostPolicy,\n resolveCliRequestLogMode,\n resolveCliStartPort,\n resolveCliTrustForwardedProto,\n} from \"./cli-options.js\";\nimport { startDevServer } from \"./dev-server.js\";\nimport { startServer } from \"./serve.js\";\nimport { loadMreactRouterViteConfigDetails } from \"./vite-config.js\";\n\nlet parsed;\n\ntry {\n parsed = parseCliArguments(process.argv.slice(2));\n} catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n}\n\nif (parsed !== undefined) {\n const command = parsed.command;\n const routeArg = parsed.routeArg;\n\n try {\n if (parsed.help === true || command === \"help\") {\n console.log(formatCliHelp(command === \"help\" ? routeArg : command));\n } else {\n const logger =\n resolveCliRequestLogMode(parsed.log, process.env) === \"requests\"\n ? createCliRequestLogger()\n : undefined;\n\n if (command === \"build\") {\n const startedAt = performance.now();\n let activeBuildPhase: BuildAppPhase | undefined;\n console.log(`mreact-router build v${await readRouterCliVersion()}`);\n console.log(`Target: ${formatCliBuildTarget(parsed.target)}`);\n console.log(`Root: ${process.cwd()}`);\n console.log(\"Config: loading...\");\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"build\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, viteConfig: undefined };\n try {\n const result = await buildApp({\n ...loaded.project,\n ...(parsed.awsLambdaPreload === undefined\n ? {}\n : { awsLambdaPreload: parsed.awsLambdaPreload }),\n ...(parsed.awsLambdaPreloadRoutes === undefined\n ? {}\n : { awsLambdaPreloadRoutes: parsed.awsLambdaPreloadRoutes }),\n ...(parsed.clientSourceMaps === undefined\n ? {}\n : { clientSourceMaps: parsed.clientSourceMaps }),\n onBoundaryReport(report) {\n console.log(formatBoundaryReport(report).trimEnd());\n },\n onBuildProgress(event) {\n activeBuildPhase = updateBuildProgressLog(event, activeBuildPhase);\n },\n outDir: resolve(\".mreact\"),\n targets: buildTargetsFromCliTarget(parsed.target),\n viteConfig: loaded.viteConfig,\n });\n console.log(\n `Built ${result.routes.length} routes in ${formatDurationSeconds(performance.now() - startedAt)}.`,\n );\n } catch (error) {\n if (activeBuildPhase !== undefined) {\n throw new Error(\n `Build failed during ${formatBuildPhaseFailureLabel(activeBuildPhase)}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n throw error;\n }\n } else if (command === \"boundaries\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"build\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, viteConfig: undefined };\n const report = await analyzeAppBoundaries({\n ...loaded.project,\n viteConfig: loaded.viteConfig,\n });\n console.log(\n (parsed.json === true\n ? formatBoundaryReportJson(report)\n : formatBoundaryReport(report)\n ).trimEnd(),\n );\n } else if (command === \"package\") {\n if (routeArg === \"aws-lambda\") {\n const manifest = await packageAwsLambdaArtifact({\n ...(parsed.awsLambdaPreload === undefined\n ? {}\n : { awsLambdaPreload: parsed.awsLambdaPreload }),\n ...(parsed.awsLambdaPreloadRoutes === undefined\n ? {}\n : { awsLambdaPreloadRoutes: parsed.awsLambdaPreloadRoutes }),\n fromDir: resolve(parsed.from ?? \".mreact\"),\n ...(parsed.handler === undefined ? {} : { handlerEntry: resolve(parsed.handler) }),\n outDir: resolve(parsed.out ?? \".lambda\"),\n skipRuntimeDependencyCheck: parsed.skipRuntimeDependencyCheck,\n });\n console.log(\n `Packaged AWS Lambda artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else if (routeArg === \"cloudflare-pages\") {\n const manifest = await packageCloudflarePagesArtifact({\n fromDir: resolve(parsed.from ?? \".mreact\"),\n outDir: resolve(parsed.out ?? \".mreact/pages\"),\n ...(parsed.worker === undefined ? {} : { workerEntry: resolve(parsed.worker) }),\n });\n console.log(\n `Packaged Cloudflare Pages artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else {\n throw new Error(\n `Unsupported package target ${JSON.stringify(routeArg)}. Expected \"aws-lambda\" or \"cloudflare-pages\".`,\n );\n }\n } else if (command === \"dev\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"serve\", cwd: process.cwd() })\n : {\n project: { appDir: resolve(routeArg) },\n serverPort: undefined,\n viteConfig: undefined,\n };\n const server = await startDevServer({\n ...loaded.project,\n hostname: resolveCliHost(parsed.host, process.env),\n logger,\n port: resolveCliDevPort(parsed.port, process.env, loaded.serverPort),\n viteConfig: loaded.viteConfig,\n });\n console.log(`mreact app router ready at ${server.url}`);\n } else if (command === \"start\") {\n const server = await startServer({\n allowedHosts: resolveCliAllowedHosts(parsed.allowedHosts, process.env),\n hostPolicy: resolveCliHostPolicy(parsed.hostPolicy, process.env),\n hostname: resolveCliHost(parsed.host, process.env),\n logger,\n outDir: resolve(routeArg ?? \".mreact\"),\n port: resolveCliStartPort(parsed.port, process.env),\n trustForwardedProto: resolveCliTrustForwardedProto(\n parsed.trustForwardedProto,\n process.env,\n ),\n });\n console.log(`mreact app router serving built output at ${server.url}`);\n } else {\n console.error(`Unknown command: ${command}`);\n process.exitCode = 1;\n }\n }\n } catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n }\n}\n\nasync function readRouterCliVersion(): Promise<string> {\n try {\n const source = await readFile(new URL(\"../package.json\", import.meta.url), \"utf8\");\n const json = JSON.parse(source) as { version?: unknown };\n\n return typeof json.version === \"string\" ? json.version : \"unknown\";\n } catch {\n return \"unknown\";\n }\n}\n\nfunction formatCliBuildTarget(target: CliBuildTarget | undefined): string {\n return target ?? \"default\";\n}\n\nfunction updateBuildProgressLog(\n event: BuildAppProgressEvent,\n activePhase: BuildAppPhase | undefined,\n): BuildAppPhase | undefined {\n if (event.kind === \"routes-discovered\") {\n console.log(`Routes: ${event.count} discovered`);\n return activePhase;\n }\n\n if (event.kind !== \"phase-start\") {\n return activePhase;\n }\n\n const message = buildPhaseProgressMessage(event.phase);\n if (message !== undefined) {\n console.log(message);\n }\n\n return event.phase;\n}\n\nfunction buildPhaseProgressMessage(phase: BuildAppPhase): string | undefined {\n switch (phase) {\n case \"scan\":\n return \"Routes: discovering...\";\n case \"serverModules\":\n return \"Server: building...\";\n case \"clientBundles\":\n return \"Client: building...\";\n case \"writeManifests\":\n return \"Artifacts: writing...\";\n default:\n return undefined;\n }\n}\n\nfunction formatBuildPhaseFailureLabel(phase: BuildAppPhase): string {\n switch (phase) {\n case \"scan\":\n return \"route discovery\";\n case \"collectFiles\":\n return \"source file collection\";\n case \"analyzeSources\":\n return \"source analysis\";\n case \"validate\":\n return \"production route validation\";\n case \"prepareOutput\":\n return \"output preparation\";\n case \"publicAssets\":\n return \"public asset collection\";\n case \"serverActionManifest\":\n return \"server action manifest generation\";\n case \"serverModules\":\n return \"server output build\";\n case \"importPolicy\":\n return \"import policy generation\";\n case \"serverModuleArtifacts\":\n return \"server artifact writing\";\n case \"clientBundles\":\n return \"client output build\";\n case \"navigationRuntime\":\n return \"navigation runtime build\";\n case \"prerender\":\n return \"static prerender\";\n case \"cloudflare\":\n return \"Cloudflare artifact generation\";\n case \"writeManifests\":\n return \"manifest writing\";\n case \"adapterArtifacts\":\n return \"adapter artifact writing\";\n }\n}\n\nfunction formatDurationSeconds(ms: number): string {\n const seconds = ms / 1000;\n\n if (seconds < 10) {\n return `${Math.round(seconds * 10) / 10}s`;\n }\n\n return `${Math.round(seconds)}s`;\n}\n"]}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport {\n buildApp,\n packageAwsLambdaArtifact,\n packageCloudflarePagesArtifact,\n type BuildAppPhase,\n type BuildAppProgressEvent,\n} from \"./build.js\";\nimport {\n analyzeAppBoundaries,\n formatBoundaryReport,\n formatBoundaryReportJson,\n} from \"./boundaries.js\";\nimport {\n buildTargetsFromCliTarget,\n createCliRequestLogger,\n type CliBuildTarget,\n formatCliHelp,\n parseCliArguments,\n resolveCliAllowedHosts,\n resolveCliDevPort,\n resolveCliHost,\n resolveCliHostPolicy,\n resolveCliRequestLogMode,\n resolveCliStartPort,\n resolveCliTrustForwardedProto,\n} from \"./cli-options.js\";\nimport { startDevServer } from \"./dev-server.js\";\nimport { startServer } from \"./serve.js\";\nimport { loadMreactRouterViteConfigDetails } from \"./vite-config.js\";\n\nlet parsed;\n\ntry {\n parsed = parseCliArguments(process.argv.slice(2));\n} catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n}\n\nif (parsed !== undefined) {\n const command = parsed.command;\n const routeArg = parsed.routeArg;\n\n try {\n if (parsed.help === true || command === \"help\") {\n console.log(formatCliHelp(command === \"help\" ? routeArg : command));\n } else {\n const logger =\n resolveCliRequestLogMode(parsed.log, process.env) === \"requests\"\n ? createCliRequestLogger()\n : undefined;\n\n if (command === \"build\") {\n const startedAt = performance.now();\n let activeBuildPhase: BuildAppPhase | undefined;\n console.log(`mreact-router build v${await readRouterCliVersion()}`);\n console.log(`Target: ${formatCliBuildTarget(parsed.target)}`);\n console.log(`Root: ${process.cwd()}`);\n console.log(\"Config: loading...\");\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"build\", cwd: process.cwd() })\n : {\n dehydrateOptions: undefined,\n project: { appDir: resolve(routeArg) },\n viteConfig: undefined,\n };\n if (loaded.dehydrateOptions !== undefined) {\n throw new Error(\n \"Production builds must configure dehydratePolicyModule instead of an inline dehydrateOptions callback so generated runtimes use the same policy as prerendering.\",\n );\n }\n try {\n const result = await buildApp({\n ...loaded.project,\n ...(parsed.awsLambdaPreload === undefined\n ? {}\n : { awsLambdaPreload: parsed.awsLambdaPreload }),\n ...(parsed.awsLambdaPreloadRoutes === undefined\n ? {}\n : { awsLambdaPreloadRoutes: parsed.awsLambdaPreloadRoutes }),\n ...(parsed.clientSourceMaps === undefined\n ? {}\n : { clientSourceMaps: parsed.clientSourceMaps }),\n onBoundaryReport(report) {\n console.log(formatBoundaryReport(report).trimEnd());\n },\n onBuildProgress(event) {\n activeBuildPhase = updateBuildProgressLog(event, activeBuildPhase);\n },\n outDir: resolve(\".mreact\"),\n targets: buildTargetsFromCliTarget(parsed.target),\n viteConfig: loaded.viteConfig,\n });\n console.log(\n `Built ${result.routes.length} routes in ${formatDurationSeconds(performance.now() - startedAt)}.`,\n );\n } catch (error) {\n if (activeBuildPhase !== undefined) {\n throw new Error(\n `Build failed during ${formatBuildPhaseFailureLabel(activeBuildPhase)}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n throw error;\n }\n } else if (command === \"boundaries\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"build\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, viteConfig: undefined };\n const report = await analyzeAppBoundaries({\n ...loaded.project,\n viteConfig: loaded.viteConfig,\n });\n console.log(\n (parsed.json === true\n ? formatBoundaryReportJson(report)\n : formatBoundaryReport(report)\n ).trimEnd(),\n );\n } else if (command === \"package\") {\n if (routeArg === \"aws-lambda\") {\n const manifest = await packageAwsLambdaArtifact({\n ...(parsed.awsLambdaPreload === undefined\n ? {}\n : { awsLambdaPreload: parsed.awsLambdaPreload }),\n ...(parsed.awsLambdaPreloadRoutes === undefined\n ? {}\n : { awsLambdaPreloadRoutes: parsed.awsLambdaPreloadRoutes }),\n fromDir: resolve(parsed.from ?? \".mreact\"),\n ...(parsed.handler === undefined ? {} : { handlerEntry: resolve(parsed.handler) }),\n outDir: resolve(parsed.out ?? \".lambda\"),\n skipRuntimeDependencyCheck: parsed.skipRuntimeDependencyCheck,\n });\n console.log(\n `Packaged AWS Lambda artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else if (routeArg === \"cloudflare-pages\") {\n const manifest = await packageCloudflarePagesArtifact({\n fromDir: resolve(parsed.from ?? \".mreact\"),\n outDir: resolve(parsed.out ?? \".mreact/pages\"),\n ...(parsed.worker === undefined ? {} : { workerEntry: resolve(parsed.worker) }),\n });\n console.log(\n `Packaged Cloudflare Pages artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else {\n throw new Error(\n `Unsupported package target ${JSON.stringify(routeArg)}. Expected \"aws-lambda\" or \"cloudflare-pages\".`,\n );\n }\n } else if (command === \"dev\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"serve\", cwd: process.cwd() })\n : {\n dehydrateOptions: undefined,\n project: { appDir: resolve(routeArg) },\n serverPort: undefined,\n viteConfig: undefined,\n };\n const server = await startDevServer({\n ...loaded.project,\n ...(loaded.dehydrateOptions === undefined\n ? {}\n : { dehydrateOptions: loaded.dehydrateOptions }),\n hostname: resolveCliHost(parsed.host, process.env),\n logger,\n port: resolveCliDevPort(parsed.port, process.env, loaded.serverPort),\n viteConfig: loaded.viteConfig,\n });\n console.log(`mreact app router ready at ${server.url}`);\n } else if (command === \"start\") {\n const server = await startServer({\n allowedHosts: resolveCliAllowedHosts(parsed.allowedHosts, process.env),\n hostPolicy: resolveCliHostPolicy(parsed.hostPolicy, process.env),\n hostname: resolveCliHost(parsed.host, process.env),\n logger,\n outDir: resolve(routeArg ?? \".mreact\"),\n port: resolveCliStartPort(parsed.port, process.env),\n trustForwardedProto: resolveCliTrustForwardedProto(\n parsed.trustForwardedProto,\n process.env,\n ),\n });\n console.log(`mreact app router serving built output at ${server.url}`);\n } else {\n console.error(`Unknown command: ${command}`);\n process.exitCode = 1;\n }\n }\n } catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n }\n}\n\nasync function readRouterCliVersion(): Promise<string> {\n try {\n const source = await readFile(new URL(\"../package.json\", import.meta.url), \"utf8\");\n const json = JSON.parse(source) as { version?: unknown };\n\n return typeof json.version === \"string\" ? json.version : \"unknown\";\n } catch {\n return \"unknown\";\n }\n}\n\nfunction formatCliBuildTarget(target: CliBuildTarget | undefined): string {\n return target ?? \"default\";\n}\n\nfunction updateBuildProgressLog(\n event: BuildAppProgressEvent,\n activePhase: BuildAppPhase | undefined,\n): BuildAppPhase | undefined {\n if (event.kind === \"routes-discovered\") {\n console.log(`Routes: ${event.count} discovered`);\n return activePhase;\n }\n\n if (event.kind !== \"phase-start\") {\n return activePhase;\n }\n\n const message = buildPhaseProgressMessage(event.phase);\n if (message !== undefined) {\n console.log(message);\n }\n\n return event.phase;\n}\n\nfunction buildPhaseProgressMessage(phase: BuildAppPhase): string | undefined {\n switch (phase) {\n case \"scan\":\n return \"Routes: discovering...\";\n case \"serverModules\":\n return \"Server: building...\";\n case \"clientBundles\":\n return \"Client: building...\";\n case \"writeManifests\":\n return \"Artifacts: writing...\";\n default:\n return undefined;\n }\n}\n\nfunction formatBuildPhaseFailureLabel(phase: BuildAppPhase): string {\n switch (phase) {\n case \"scan\":\n return \"route discovery\";\n case \"collectFiles\":\n return \"source file collection\";\n case \"analyzeSources\":\n return \"source analysis\";\n case \"validate\":\n return \"production route validation\";\n case \"prepareOutput\":\n return \"output preparation\";\n case \"publicAssets\":\n return \"public asset collection\";\n case \"serverActionManifest\":\n return \"server action manifest generation\";\n case \"serverModules\":\n return \"server output build\";\n case \"importPolicy\":\n return \"import policy generation\";\n case \"serverModuleArtifacts\":\n return \"server artifact writing\";\n case \"clientBundles\":\n return \"client output build\";\n case \"navigationRuntime\":\n return \"navigation runtime build\";\n case \"prerender\":\n return \"static prerender\";\n case \"cloudflare\":\n return \"Cloudflare artifact generation\";\n case \"writeManifests\":\n return \"manifest writing\";\n case \"adapterArtifacts\":\n return \"adapter artifact writing\";\n }\n}\n\nfunction formatDurationSeconds(ms: number): string {\n const seconds = ms / 1000;\n\n if (seconds < 10) {\n return `${Math.round(seconds * 10) / 10}s`;\n }\n\n return `${Math.round(seconds)}s`;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -2876,7 +2876,7 @@ function __mreactFetchNavigationHtml(href) {
2876
2876
  ? { "x-mreact-navigation": "1", "x-mreact-navigation-cache": "reload" }
2877
2877
  : { "x-mreact-navigation": "1" };
2878
2878
 
2879
- return fetch(href, {
2879
+ return fetch(__mreactStaticNavigationRequestHref(href), {
2880
2880
  headers,
2881
2881
  }).then((response) => {
2882
2882
  __mreactApplyRevalidationHeader(response);
@@ -2888,6 +2888,37 @@ function __mreactFetchNavigationHtml(href) {
2888
2888
  });
2889
2889
  }
2890
2890
 
2891
+ function __mreactStaticNavigationRequestHref(href) {
2892
+ if (typeof document === "undefined" || typeof location === "undefined") {
2893
+ return href;
2894
+ }
2895
+
2896
+ const base = document
2897
+ .querySelector('meta[name="mreact-static-navigation"]')
2898
+ ?.getAttribute("content")
2899
+ ?.trim();
2900
+ if (base === undefined || base === "") {
2901
+ return href;
2902
+ }
2903
+
2904
+ try {
2905
+ const destination = new URL(href, location.href);
2906
+ if (destination.origin !== location.origin) {
2907
+ return href;
2908
+ }
2909
+ const routePath = destination.pathname.replace(/^\\/+|\\/+$/g, "");
2910
+ const artifactPath = routePath === "" ? "index.html" : routePath + "/index.html";
2911
+ const artifact = new URL(
2912
+ base.replace(/\\/+$/g, "") + "/" + artifactPath,
2913
+ location.origin,
2914
+ );
2915
+ artifact.search = destination.search;
2916
+ return artifact.href;
2917
+ } catch {
2918
+ return href;
2919
+ }
2920
+ }
2921
+
2891
2922
  function __mreactNavigationResponseRequiresDocumentReload(response) {
2892
2923
  return response.status === 204 || response.headers.get("x-mreact-navigation") === "reload";
2893
2924
  }