reroute-js 0.37.2 → 0.38.0

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 (177) hide show
  1. package/cli/bin.d.ts +1 -1
  2. package/cli/bin.js +39 -10
  3. package/cli/bin.js.map +5 -5
  4. package/cli/index.d.ts +1 -1
  5. package/cli/index.js +4 -4
  6. package/cli/index.js.map +1 -1
  7. package/cli/src/cli.d.ts +1 -1
  8. package/cli/src/commands/analyze.d.ts +1 -1
  9. package/cli/src/commands/build.d.ts +1 -1
  10. package/cli/src/commands/dev.d.ts +1 -1
  11. package/cli/src/commands/gen.d.ts +1 -1
  12. package/cli/src/commands/index.d.ts +1 -1
  13. package/cli/src/commands/init.d.ts +1 -1
  14. package/cli/src/commands/lib/assets.d.ts +1 -1
  15. package/cli/src/commands/lib/bundler.d.ts +1 -1
  16. package/cli/src/commands/lib/command.d.ts +1 -1
  17. package/cli/src/commands/lib/env.d.ts +1 -1
  18. package/cli/src/commands/lib/index.d.ts +1 -1
  19. package/cli/src/commands/lib/log.d.ts +1 -1
  20. package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
  21. package/cli/src/commands/lib/markdown/index.d.ts +1 -1
  22. package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
  23. package/cli/src/commands/lib/production.d.ts +1 -1
  24. package/cli/src/commands/lib/server.d.ts +1 -1
  25. package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
  26. package/cli/src/commands/lib/streaming/analyzer.d.ts.map +1 -1
  27. package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
  28. package/cli/src/commands/lib/tailwind.d.ts +1 -1
  29. package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
  30. package/cli/src/commands/lib/version.d.ts +1 -1
  31. package/cli/src/commands/og.d.ts +1 -1
  32. package/cli/src/commands/start.d.ts +1 -1
  33. package/cli/src/index.d.ts +1 -1
  34. package/core/index.d.ts +1 -1
  35. package/core/index.js +21 -3
  36. package/core/index.js.map +4 -4
  37. package/core/src/bundler/hash.d.ts +1 -1
  38. package/core/src/bundler/index.d.ts +1 -1
  39. package/core/src/config.d.ts +1 -1
  40. package/core/src/content/discovery.d.ts +1 -1
  41. package/core/src/content/index.d.ts +1 -1
  42. package/core/src/content/metadata.d.ts +1 -1
  43. package/core/src/index.d.ts +1 -1
  44. package/core/src/llms/extractor.d.ts +1 -1
  45. package/core/src/llms/formatter.d.ts +1 -1
  46. package/core/src/llms/full-generator.d.ts +1 -1
  47. package/core/src/llms/index-generator.d.ts +1 -1
  48. package/core/src/llms/index.d.ts +1 -1
  49. package/core/src/og/discovery.d.ts +1 -1
  50. package/core/src/og/index.d.ts +1 -1
  51. package/core/src/og/meta.d.ts +1 -1
  52. package/core/src/og/render.d.ts +1 -1
  53. package/core/src/og/types.d.ts +1 -1
  54. package/core/src/robots/discovery.d.ts +1 -1
  55. package/core/src/robots/generator.d.ts +1 -1
  56. package/core/src/robots/index.d.ts +1 -1
  57. package/core/src/robots/policies.d.ts +1 -1
  58. package/core/src/rss/discovery.d.ts +1 -1
  59. package/core/src/rss/generator.d.ts +1 -1
  60. package/core/src/rss/index.d.ts +1 -1
  61. package/core/src/sitemap/discovery.d.ts +1 -1
  62. package/core/src/sitemap/generator.d.ts +1 -1
  63. package/core/src/sitemap/index.d.ts +1 -1
  64. package/core/src/ssr/index.d.ts +1 -1
  65. package/core/src/ssr/lib/cache.d.ts +1 -1
  66. package/core/src/ssr/lib/collections.d.ts +1 -1
  67. package/core/src/ssr/lib/compression.d.ts +1 -1
  68. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  69. package/core/src/ssr/lib/compute/index.d.ts +2 -1
  70. package/core/src/ssr/lib/compute/index.d.ts.map +1 -1
  71. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  72. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  73. package/core/src/ssr/lib/data.d.ts +1 -1
  74. package/core/src/ssr/lib/html.d.ts +1 -1
  75. package/core/src/ssr/lib/imports.d.ts +1 -1
  76. package/core/src/ssr/lib/index.d.ts +1 -1
  77. package/core/src/ssr/lib/layouts.d.ts +1 -1
  78. package/core/src/ssr/lib/metadata.d.ts +1 -1
  79. package/core/src/ssr/lib/mime.d.ts +1 -1
  80. package/core/src/ssr/lib/modules.d.ts +1 -1
  81. package/core/src/ssr/lib/path.d.ts +1 -1
  82. package/core/src/ssr/lib/preload.d.ts +1 -1
  83. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  84. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  85. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  86. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  87. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  88. package/core/src/ssr/lib/seed.d.ts +1 -1
  89. package/core/src/ssr/lib/serialize.d.ts +1 -1
  90. package/core/src/ssr/lib/setup.d.ts +1 -1
  91. package/core/src/ssr/lib/styles.d.ts +1 -1
  92. package/core/src/ssr/lib/template.d.ts +1 -1
  93. package/core/src/ssr/lib/types.d.ts +1 -1
  94. package/core/src/ssr/render.d.ts +1 -1
  95. package/core/src/ssr/stream.d.ts +1 -1
  96. package/elysia/index.d.ts +1 -1
  97. package/elysia/index.js +21 -3
  98. package/elysia/index.js.map +4 -4
  99. package/elysia/src/index.d.ts +1 -1
  100. package/elysia/src/libs/assets.d.ts +1 -1
  101. package/elysia/src/libs/cache.d.ts +1 -1
  102. package/elysia/src/libs/caching.d.ts +1 -1
  103. package/elysia/src/libs/http.d.ts +1 -1
  104. package/elysia/src/libs/image.d.ts +1 -1
  105. package/elysia/src/libs/index.d.ts +1 -1
  106. package/elysia/src/libs/llms.d.ts +1 -1
  107. package/elysia/src/libs/response.d.ts +1 -1
  108. package/elysia/src/libs/serving.d.ts +1 -1
  109. package/elysia/src/plugin.d.ts +1 -1
  110. package/elysia/src/routes/artifacts.d.ts +1 -1
  111. package/elysia/src/routes/content.d.ts +1 -1
  112. package/elysia/src/routes/image.d.ts +1 -1
  113. package/elysia/src/routes/index.d.ts +1 -1
  114. package/elysia/src/routes/internal.d.ts +1 -1
  115. package/elysia/src/routes/llms.d.ts +1 -1
  116. package/elysia/src/routes/og.d.ts +1 -1
  117. package/elysia/src/routes/redirects.d.ts +1 -1
  118. package/elysia/src/routes/robots.d.ts +1 -1
  119. package/elysia/src/routes/rss.d.ts +1 -1
  120. package/elysia/src/routes/search.d.ts +1 -1
  121. package/elysia/src/routes/sitemap.d.ts +1 -1
  122. package/elysia/src/routes/ssr.d.ts +1 -1
  123. package/elysia/src/routes/static.d.ts +1 -1
  124. package/elysia/src/types.d.ts +1 -1
  125. package/package.json +1 -1
  126. package/react/index.d.ts +1 -1
  127. package/react/index.js +2 -2
  128. package/react/index.js.map +1 -1
  129. package/react/src/components/ClientOnly.d.ts +1 -1
  130. package/react/src/components/ContentRoute.d.ts +1 -1
  131. package/react/src/components/Image.d.ts +1 -1
  132. package/react/src/components/LazyRoute.d.ts +1 -1
  133. package/react/src/components/Link.d.ts +1 -1
  134. package/react/src/components/Markdown.d.ts +1 -1
  135. package/react/src/components/Outlet.d.ts +1 -1
  136. package/react/src/components/index.d.ts +1 -1
  137. package/react/src/hooks/index.d.ts +1 -1
  138. package/react/src/hooks/useContent.d.ts +1 -1
  139. package/react/src/hooks/useData.d.ts +1 -1
  140. package/react/src/hooks/useFeed.d.ts +1 -1
  141. package/react/src/hooks/useLayoutData.d.ts +1 -1
  142. package/react/src/hooks/useLlms.d.ts +1 -1
  143. package/react/src/hooks/useNavigate.d.ts +1 -1
  144. package/react/src/hooks/useParams.d.ts +1 -1
  145. package/react/src/hooks/useRouter.d.ts +1 -1
  146. package/react/src/hooks/useSearch.d.ts +1 -1
  147. package/react/src/hooks/useSearchParams.d.ts +1 -1
  148. package/react/src/hooks/useToc.d.ts +1 -1
  149. package/react/src/index.d.ts +1 -1
  150. package/react/src/lib/collection.d.ts +1 -1
  151. package/react/src/lib/content.d.ts +1 -1
  152. package/react/src/lib/head.d.ts +1 -1
  153. package/react/src/lib/index.d.ts +1 -1
  154. package/react/src/lib/lazy-route.d.ts +1 -1
  155. package/react/src/lib/route-loader.d.ts +1 -1
  156. package/react/src/providers/ContentProvider.d.ts +1 -1
  157. package/react/src/providers/RerouteProvider.d.ts +1 -1
  158. package/react/src/providers/RouterProvider.d.ts +1 -1
  159. package/react/src/providers/index.d.ts +1 -1
  160. package/react/src/types/any.d.ts +1 -1
  161. package/react/src/types/index.d.ts +1 -1
  162. package/react/src/types/router.d.ts +1 -1
  163. package/telemetry/react.d.ts +1 -1
  164. package/telemetry/react.js +2 -2
  165. package/telemetry/react.js.map +1 -1
  166. package/telemetry/server.d.ts +1 -1
  167. package/telemetry/server.js +2 -2
  168. package/telemetry/server.js.map +3 -3
  169. package/telemetry/src/react/api.d.ts +1 -1
  170. package/telemetry/src/react/context.d.ts +1 -1
  171. package/telemetry/src/react/index.d.ts +1 -1
  172. package/telemetry/src/react/telemetry.d.ts +1 -1
  173. package/telemetry/src/server/context.d.ts +1 -1
  174. package/telemetry/src/server/index.d.ts +1 -1
  175. package/telemetry/src/server/instrumentation.d.ts +1 -1
  176. package/telemetry/src/server/plugin.d.ts +1 -1
  177. package/telemetry/src/server/sourcemap.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1009,4 +1009,4 @@ export {
1009
1009
  TelemetryProvider
1010
1010
  };
1011
1011
 
1012
- //# debugId=C6491CF421D9D8C864756E2164756E21
1012
+ //# debugId=AE797EE5F1DD7F2464756E2164756E21
@@ -9,6 +9,6 @@
9
9
  "export * from './src/react';\n"
10
10
  ],
11
11
  "mappings": "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",
12
- "debugId": "C6491CF421D9D8C864756E2164756E21",
12
+ "debugId": "AE797EE5F1DD7F2464756E2164756E21",
13
13
  "names": []
14
14
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1512,4 +1512,4 @@ export {
1512
1512
  addSpanEvent
1513
1513
  };
1514
1514
 
1515
- //# debugId=F5920F1F39D1978A64756E2164756E21
1515
+ //# debugId=9D7D5056E7491BFD64756E2164756E21
@@ -10,8 +10,8 @@
10
10
  "import { dynamicImport } from './imports';\nimport { join } from './path';\nimport type { Doc } from './types';\n\n/**\n * Load content collections for SSR rendering\n */\nexport async function loadCollections(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Record<string, unknown[]>> {\n\ttry {\n\t\tconst p = join(cwd, '.reroute', 'content.ts');\n\t\tconst mod = await dynamicImport(p, isWatchMode);\n\t\treturn (mod?.byCollection || {}) as Record<string, unknown[]>;\n\t} catch {\n\t\treturn {};\n\t}\n}\n\n/**\n * Set global collections for SSR\n */\nexport function setGlobalCollections(\n\tbyCollectionForSSR: Record<string, unknown[]>,\n): void {\n\ttry {\n\t\t(globalThis as Doc).__REROUTE_COLLECTIONS__ = byCollectionForSSR;\n\t} catch {\n\t\t// Ignore errors in restricted environments\n\t}\n}\n",
11
11
  "import { ssrCache, statusCache } from '../cache';\nimport { toPromise } from '../imports';\nimport type { ComputeOptions, Doc } from '../types';\n\ntype ContentComputeResult = {\n\tdata: Record<string, unknown>;\n\terror?: string;\n\tstatusOverride?: number;\n\tpendingTasks: Promise<unknown>[];\n};\n\nfunction checkStatusCache(\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n): number | undefined {\n\tif (maxAgeMs <= 0) return undefined;\n\treturn statusCache.get<number>(statusCacheKey);\n}\n\nfunction checkDataCache(cacheKey: string, maxAgeMs: number): unknown {\n\tif (maxAgeMs <= 0) return undefined;\n\treturn ssrCache.get(cacheKey);\n}\n\nfunction createDataTask(\n\tdataFn: (ctx: Doc) => unknown | Promise<unknown>,\n\tpathname: string,\n\tparts: string[],\n\tsearchParams: URLSearchParams | undefined,\n\tset: { status: number },\n): Promise<unknown> {\n\treturn toPromise(\n\t\tdataFn({\n\t\t\tpathname,\n\t\t\tparams: { name: parts[1] },\n\t\t\tset,\n\t\t\tsearchParams,\n\t\t} as Doc),\n\t).catch((err) => {\n\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\tconst error = `SSR data() failed: ${msg}`;\n\t\tconsole.error(`[reroute] ${error}`);\n\t\tthrow err;\n\t});\n}\n\nfunction handleStreamingMode(\n\tssrData: Record<string, unknown>,\n\tpathname: string,\n\ttask: Promise<unknown>,\n\tset: { status: number },\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n\tpendingTasks: Promise<unknown>[],\n): void {\n\tssrData[pathname] = task;\n\n\tconst storeTask = task.then((value) => {\n\t\tif (set.status !== 200) {\n\t\t\t// statusOverride handled by caller\n\t\t}\n\t\tif (maxAgeMs > 0) {\n\t\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t\t}\n\t\tif (maxAgeMs > 0 && set.status === 200) {\n\t\t\tssrCache.set(cacheKey, value, maxAgeMs);\n\t\t}\n\t\treturn value;\n\t});\n\n\tpendingTasks.push(\n\t\tstoreTask\n\t\t\t.then((value) => {\n\t\t\t\tssrData[pathname] = value;\n\t\t\t})\n\t\t\t.catch(() => {}),\n\t);\n}\n\nasync function handleNonStreamingMode(\n\tssrData: Record<string, unknown>,\n\tpathname: string,\n\ttask: Promise<unknown>,\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n): Promise<unknown> {\n\tconst result = await task;\n\tssrData[pathname] = result;\n\n\tif (maxAgeMs > 0) {\n\t\tstatusCache.set(\n\t\t\tstatusCacheKey,\n\t\t\t(result as { status?: number }).status || 200,\n\t\t\tmaxAgeMs,\n\t\t);\n\t}\n\tif (maxAgeMs > 0) {\n\t\tssrCache.set(cacheKey, result, maxAgeMs);\n\t}\n\n\treturn result;\n}\n\n/**\n * Compute SSR data for content pages (e.g., /blog/my-post).\n * Content pages export ssr.data via __REROUTE_SSR_EXPORTS__.\n *\n * @param sharedSsrData - In streaming mode, the shared ssrData object that gets passed to React.\n * Promise resolution callbacks must update THIS object directly.\n */\nexport async function computeContentData(\n\tpathname: string,\n\toptions: ComputeOptions,\n\tsearchParams?: URLSearchParams,\n\tsharedSsrData?: Record<string, unknown>,\n): Promise<ContentComputeResult> {\n\tconst streaming = options.streaming === true;\n\tconst ssrData: Record<string, unknown> =\n\t\tstreaming && sharedSsrData ? sharedSsrData : {};\n\tconst pendingTasks: Promise<unknown>[] = [];\n\tlet error: string | undefined;\n\tlet statusOverride: number | undefined;\n\n\tconst maxAge = options.maxAge || 0;\n\tconst maxAgeMs = maxAge * 1000;\n\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) {\n\t\t\treturn { data: ssrData, pendingTasks };\n\t\t}\n\n\t\tconst g = globalThis as Doc;\n\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\tconst exp = g.__REROUTE_SSR_EXPORTS__?.[key] as\n\t\t\t| { ssr?: { data?: (ctx: Doc) => unknown | Promise<unknown> } }\n\t\t\t| undefined;\n\n\t\tconst dataFn = (exp as Doc)?.ssr?.data as\n\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t| undefined;\n\n\t\tif (typeof dataFn !== 'function') {\n\t\t\treturn { data: ssrData, pendingTasks };\n\t\t}\n\n\t\tconst cacheKey = `content:${pathname}:${parts[1]}`;\n\t\tconst statusCacheKey = `status:${cacheKey}`;\n\n\t\tconst cachedStatus = checkStatusCache(statusCacheKey, maxAgeMs);\n\t\tif (cachedStatus && cachedStatus !== 200) {\n\t\t\tstatusOverride = cachedStatus;\n\t\t}\n\n\t\tconst cached = checkDataCache(cacheKey, maxAgeMs);\n\t\tif (cached !== undefined) {\n\t\t\tssrData[pathname] = cached;\n\t\t\treturn { data: ssrData, statusOverride, pendingTasks };\n\t\t}\n\n\t\tconst set = { status: 200 };\n\t\tconst task = createDataTask(dataFn, pathname, parts, searchParams, set);\n\n\t\tif (streaming) {\n\t\t\thandleStreamingMode(\n\t\t\t\tssrData,\n\t\t\t\tpathname,\n\t\t\t\ttask,\n\t\t\t\tset,\n\t\t\t\tcacheKey,\n\t\t\t\tstatusCacheKey,\n\t\t\t\tmaxAgeMs,\n\t\t\t\tpendingTasks,\n\t\t\t);\n\t\t\tif (set.status !== 200) {\n\t\t\t\tstatusOverride = set.status;\n\t\t\t}\n\t\t} else {\n\t\t\tawait handleNonStreamingMode(\n\t\t\t\tssrData,\n\t\t\t\tpathname,\n\t\t\t\ttask,\n\t\t\t\tcacheKey,\n\t\t\t\tstatusCacheKey,\n\t\t\t\tmaxAgeMs,\n\t\t\t);\n\t\t\tif (set.status !== 200) {\n\t\t\t\tstatusOverride = set.status;\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Return what we have on error\n\t}\n\n\treturn { data: ssrData, error, statusOverride, pendingTasks };\n}\n",
12
12
  "import { ssrCache, statusCache } from '../cache';\nimport { dynamicImport, toPromise } from '../imports';\nimport {\n\tcreateLayoutCacheKey,\n\tcreateLayoutDataKey,\n\tgetMatchingLayouts,\n} from '../layouts';\nimport { join } from '../path';\nimport type { ComputeOptions, Doc } from '../types';\n\ntype LayoutComputeResult = {\n\tdata: Record<string, unknown>;\n\tstatusOverride?: number;\n\tpendingTasks: Promise<unknown>[];\n};\n\nasync function loadLayoutSSRExport(\n\tlayout: Doc,\n\tclientDir: string,\n\tisWatchMode: boolean,\n): Promise<Doc | undefined> {\n\tlet ssrExport = (layout as Doc)?.ssr as Doc | undefined;\n\n\tif (!ssrExport) {\n\t\tconst abs = join(clientDir, 'routes', String(layout.path));\n\t\tconst mod = await dynamicImport(abs, isWatchMode);\n\t\tssrExport = (mod as Doc)?.ssr as Doc | undefined;\n\t}\n\n\treturn ssrExport;\n}\n\nfunction checkLayoutCache(\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n): { cachedData?: unknown; cachedStatus?: number } {\n\tconst cachedStatus =\n\t\tmaxAgeMs > 0 ? statusCache.get<number>(statusCacheKey) : undefined;\n\tconst cachedData = maxAgeMs > 0 ? ssrCache.get(cacheKey) : undefined;\n\n\treturn { cachedData, cachedStatus };\n}\n\nfunction createLayoutDataTask(\n\tdataFn: (ctx: Doc) => unknown | Promise<unknown>,\n\tpathname: string,\n\tsearchParams: URLSearchParams | undefined,\n\tlayoutPattern: string,\n): Promise<unknown> {\n\tconst set = { status: 200 };\n\treturn toPromise(\n\t\tdataFn({ pathname, params: {}, set, searchParams } as Doc),\n\t).catch((err) => {\n\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\tconsole.error(\n\t\t\t`[reroute] Layout SSR data() failed for ${layoutPattern}:`,\n\t\t\tmsg,\n\t\t);\n\t\tthrow err;\n\t});\n}\n\nfunction handleLayoutStreamingMode(\n\tssrData: Record<string, unknown>,\n\tlayoutKey: string,\n\ttask: Promise<unknown>,\n\tset: { status: number },\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n\tpendingTasks: Promise<unknown>[],\n): void {\n\tssrData[layoutKey] = task;\n\n\tconst storeTask = task.then((value) => {\n\t\tif (maxAgeMs > 0) {\n\t\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t\t}\n\t\tif (maxAgeMs > 0 && set.status === 200) {\n\t\t\tssrCache.set(cacheKey, value, maxAgeMs);\n\t\t}\n\t\treturn value;\n\t});\n\n\tpendingTasks.push(\n\t\tstoreTask\n\t\t\t.then((value) => {\n\t\t\t\tssrData[layoutKey] = value;\n\t\t\t})\n\t\t\t.catch(() => {}),\n\t);\n}\n\nasync function handleLayoutNonStreamingMode(\n\tssrData: Record<string, unknown>,\n\tlayoutKey: string,\n\ttask: Promise<unknown>,\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n): Promise<unknown> {\n\tconst result = await task;\n\tssrData[layoutKey] = result;\n\n\tif (maxAgeMs > 0) {\n\t\tstatusCache.set(\n\t\t\tstatusCacheKey,\n\t\t\t(result as { status?: number }).status || 200,\n\t\t\tmaxAgeMs,\n\t\t);\n\t}\n\tif (maxAgeMs > 0) {\n\t\tssrCache.set(cacheKey, result, maxAgeMs);\n\t}\n\n\treturn result;\n}\n\nasync function processLayout(\n\tlayout: Doc,\n\tpathname: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n\tstreaming: boolean,\n\tmaxAgeMs: number,\n\tsearchParams: URLSearchParams | undefined,\n\tssrData: Record<string, unknown>,\n\tpendingTasks: Promise<unknown>[],\n): Promise<number | undefined> {\n\tif (typeof layout?.path !== 'string') return undefined;\n\n\tconst ssrExport = await loadLayoutSSRExport(layout, clientDir, isWatchMode);\n\tconst dataFn = ssrExport?.data as\n\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t| undefined;\n\n\tif (typeof dataFn !== 'function') return undefined;\n\n\tconst pattern = String(layout.pattern || '/');\n\tconst layoutKey = createLayoutDataKey(pattern);\n\tconst cacheKey = createLayoutCacheKey(pattern, pathname);\n\tconst statusCacheKey = `status:${cacheKey}`;\n\n\tconst { cachedData, cachedStatus } = checkLayoutCache(\n\t\tcacheKey,\n\t\tstatusCacheKey,\n\t\tmaxAgeMs,\n\t);\n\n\tif (cachedStatus && cachedStatus !== 200) {\n\t\treturn cachedStatus;\n\t}\n\n\tif (cachedData !== undefined) {\n\t\tssrData[layoutKey] = cachedData;\n\t\treturn undefined;\n\t}\n\n\tconst set = { status: 200 };\n\tconst task = createLayoutDataTask(dataFn, pathname, searchParams, pattern);\n\n\tif (streaming) {\n\t\thandleLayoutStreamingMode(\n\t\t\tssrData,\n\t\t\tlayoutKey,\n\t\t\ttask,\n\t\t\tset,\n\t\t\tcacheKey,\n\t\t\tstatusCacheKey,\n\t\t\tmaxAgeMs,\n\t\t\tpendingTasks,\n\t\t);\n\t} else {\n\t\tawait handleLayoutNonStreamingMode(\n\t\t\tssrData,\n\t\t\tlayoutKey,\n\t\t\ttask,\n\t\t\tcacheKey,\n\t\t\tstatusCacheKey,\n\t\t\tmaxAgeMs,\n\t\t);\n\t}\n\n\treturn set.status !== 200 ? set.status : undefined;\n}\n\n/**\n * Compute SSR data from all matching layouts for a pathname.\n * Executes layout ssr.data() functions in hierarchical order (root → nested).\n *\n * @param sharedSsrData - In streaming mode, the shared ssrData object that gets passed to React.\n * Promise resolution callbacks must update THIS object directly.\n */\nexport async function computeLayoutData(\n\tpathname: string,\n\tclientDir: string,\n\t_cwd: string,\n\tisWatchMode: boolean,\n\toptions: ComputeOptions,\n\tsearchParams?: URLSearchParams,\n\troutesModule?: Doc,\n\tsharedSsrData?: Record<string, unknown>,\n): Promise<LayoutComputeResult> {\n\tconst streaming = options.streaming === true;\n\tconst ssrData: Record<string, unknown> =\n\t\tstreaming && sharedSsrData ? sharedSsrData : {};\n\tconst pendingTasks: Promise<unknown>[] = [];\n\tlet statusOverride: number | undefined;\n\n\tconst maxAge = options.maxAge || 0;\n\tconst maxAgeMs = maxAge * 1000;\n\n\ttry {\n\t\tconst layouts = routesModule?.layouts as Doc[] | undefined;\n\t\tconst matchingLayouts = getMatchingLayouts(pathname, layouts);\n\n\t\tfor (const layout of matchingLayouts) {\n\t\t\ttry {\n\t\t\t\tconst layoutStatus = await processLayout(\n\t\t\t\t\tlayout,\n\t\t\t\t\tpathname,\n\t\t\t\t\tclientDir,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\tstreaming,\n\t\t\t\t\tmaxAgeMs,\n\t\t\t\t\tsearchParams,\n\t\t\t\t\tssrData,\n\t\t\t\t\tpendingTasks,\n\t\t\t\t);\n\n\t\t\t\tif (layoutStatus && !statusOverride) {\n\t\t\t\t\tstatusOverride = layoutStatus;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Continue to next layout on error\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Return empty data on failure\n\t}\n\n\treturn { data: ssrData, statusOverride, pendingTasks };\n}\n\n/**\n * Merge layout data into route data for non-streaming mode.\n * Users can call useData() without knowing about layout keys.\n */\nexport function mergeLayoutData(\n\tssrData: Record<string, unknown>,\n\tpathname: string,\n): void {\n\tconst layoutKeys = Object.keys(ssrData).filter((key) =>\n\t\tkey.startsWith('__layout:'),\n\t);\n\n\tconst layoutData: Record<string, unknown> = {};\n\tfor (const key of layoutKeys) {\n\t\tObject.assign(layoutData, ssrData[key] as Record<string, unknown>);\n\t}\n\n\tif (pathname in ssrData) {\n\t\tssrData[pathname] = {\n\t\t\t...layoutData,\n\t\t\t...(typeof ssrData[pathname] === 'object' && ssrData[pathname] !== null\n\t\t\t\t? (ssrData[pathname] as Record<string, unknown>)\n\t\t\t\t: {}),\n\t\t};\n\t} else if (Object.keys(layoutData).length > 0) {\n\t\tssrData[pathname] = layoutData;\n\t}\n}\n",
13
- "import { ssrCache, statusCache } from '../cache';\nimport { dynamicImport, isThenable, toPromise } from '../imports';\nimport { join } from '../path';\nimport type { ComputeOptions, Doc, RouteMatch } from '../types';\n\ntype RouteComputeResult = {\n\tdata: Record<string, unknown>;\n\terror?: string;\n\tstatusOverride?: number;\n\tpendingTasks: Promise<unknown>[];\n};\n\n/**\n * Compute SSR data for route-level ssr.data() functions.\n * Handles both streaming and non-streaming modes with promise flattening.\n *\n * @param sharedSsrData - In streaming mode, the shared ssrData object that gets passed to React.\n * Promise resolution callbacks must update THIS object directly.\n */\nfunction checkCache(\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n\tpathname: string,\n\tssrData: Record<string, unknown>,\n): { cached: boolean; statusOverride?: number } {\n\t// Check status cache first\n\tconst cachedStatus =\n\t\tmaxAgeMs > 0 ? statusCache.get<number>(statusCacheKey) : undefined;\n\tconst statusOverride =\n\t\tcachedStatus && cachedStatus !== 200 ? cachedStatus : undefined;\n\n\t// Check data cache\n\tconst cached = maxAgeMs > 0 ? ssrCache.get(cacheKey) : undefined;\n\n\tif (cached !== undefined) {\n\t\tssrData[pathname] = cached;\n\t\treturn { cached: true, statusOverride };\n\t}\n\n\treturn { cached: false, statusOverride };\n}\n\nasync function loadRouteSSRExport(\n\troute: Doc,\n\tclientDir: string,\n\tisWatchMode: boolean,\n): Promise<Doc | undefined> {\n\t// Try to use bundled ssr export first (compiled binary)\n\tlet ssrExport = (route as Doc)?.ssr;\n\n\t// Fallback to dynamic import if not bundled (dev mode)\n\tif (!ssrExport) {\n\t\tconst routePath = String(route.path);\n\t\tconst cwd = join(clientDir, '..');\n\n\t\t// Try streaming wrapper first (for routes with ssr.data())\n\t\tlet abs = join(cwd, '.reroute', 'streaming', routePath);\n\t\tlet mod = await dynamicImport(abs, isWatchMode).catch(() => null);\n\n\t\t// Fallback to source if streaming doesn't exist\n\t\tif (!mod) {\n\t\t\tabs = join(clientDir, 'routes', routePath);\n\t\t\tmod = await dynamicImport(abs, isWatchMode);\n\t\t}\n\n\t\tssrExport = (mod as Doc)?.ssr as Doc | undefined;\n\t}\n\n\treturn ssrExport;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Route data computation handles caching, streaming, and promise flattening\nexport async function computeRouteData(\n\tpathname: string,\n\tclientDir: string,\n\t_cwd: string,\n\tisWatchMode: boolean,\n\toptions: ComputeOptions,\n\tsearchParams?: URLSearchParams,\n\troutesModule?: Doc,\n\tsharedSsrData?: Record<string, unknown>,\n): Promise<RouteComputeResult> {\n\tconst streaming = options.streaming === true;\n\tconst ssrData: Record<string, unknown> =\n\t\tstreaming && sharedSsrData ? sharedSsrData : {};\n\tconst pendingTasks: Promise<unknown>[] = [];\n\tlet error: string | undefined;\n\tlet statusOverride: number | undefined;\n\n\tconst maxAge = options.maxAge || 0;\n\tconst maxAgeMs = maxAge * 1000;\n\n\tconst storeResult = (key: string, task: Promise<unknown>) => {\n\t\tpendingTasks.push(\n\t\t\ttask\n\t\t\t\t.then((value) => {\n\t\t\t\t\tssrData[key] = value;\n\t\t\t\t})\n\t\t\t\t.catch(() => {}),\n\t\t);\n\t};\n\n\ttry {\n\t\t// Strip query string for route matching\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst match: RouteMatch =\n\t\t\ttypeof routesModule?.matchRoute === 'function'\n\t\t\t\t? routesModule.matchRoute(pathnameOnly)\n\t\t\t\t: null;\n\n\t\tconst route = match?.route;\n\t\tconst params = match?.params || {};\n\n\t\tif (!route || typeof route.path !== 'string') {\n\t\t\treturn { data: ssrData, pendingTasks };\n\t\t}\n\n\t\t// Load SSR export\n\t\tconst ssrExport = await loadRouteSSRExport(route, clientDir, isWatchMode);\n\n\t\tconst dataFn = ssrExport?.data as\n\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t| undefined;\n\n\t\tif (typeof dataFn !== 'function') {\n\t\t\treturn { data: ssrData, pendingTasks };\n\t\t}\n\n\t\t// Include search params in cache key\n\t\tconst searchQuery = searchParams ? `?${searchParams.toString()}` : '';\n\t\tconst cacheKey = `route:${pathname}${searchQuery}:${JSON.stringify(params)}`;\n\t\tconst statusCacheKey = `status:${cacheKey}`;\n\n\t\tconst cacheResult = checkCache(\n\t\t\tcacheKey,\n\t\t\tstatusCacheKey,\n\t\t\tmaxAgeMs,\n\t\t\tpathname,\n\t\t\tssrData,\n\t\t);\n\n\t\tif (cacheResult.cached) {\n\t\t\treturn {\n\t\t\t\tdata: ssrData,\n\t\t\t\tstatusOverride: cacheResult.statusOverride,\n\t\t\t\tpendingTasks,\n\t\t\t};\n\t\t}\n\n\t\tif (cacheResult.statusOverride) {\n\t\t\tstatusOverride = cacheResult.statusOverride;\n\t\t}\n\n\t\t// Execute data function\n\t\tconst set = { status: 200 };\n\t\tconst rawResult = dataFn({\n\t\t\tpathname,\n\t\t\tparams,\n\t\t\tset,\n\t\t\tsearchParams,\n\t\t} as Doc);\n\t\tconst isPromise = rawResult instanceof Promise;\n\n\t\tif (streaming) {\n\t\t\tconst result = await handleStreamingRouteData(\n\t\t\t\trawResult,\n\t\t\t\tisPromise,\n\t\t\t\tpathname,\n\t\t\t\tset,\n\t\t\t\t{ ssrData, pendingTasks, storeResult },\n\t\t\t\t{ cacheKey, statusCacheKey, maxAgeMs },\n\t\t\t\t(msg) => {\n\t\t\t\t\terror = msg;\n\t\t\t\t},\n\t\t\t\t(val) => {\n\t\t\t\t\tif (!statusOverride) statusOverride = val;\n\t\t\t\t},\n\t\t\t);\n\t\t\tObject.assign(ssrData, result);\n\t\t} else {\n\t\t\tconst task = toPromise(rawResult).catch((err) => {\n\t\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\t\terror = `SSR data() failed: ${msg}`;\n\t\t\t\tconsole.error(`[reroute] ${error}`);\n\t\t\t\tthrow err;\n\t\t\t});\n\n\t\t\tconst result = await task;\n\t\t\tif (set.status !== 200 && !statusOverride) {\n\t\t\t\tstatusOverride = set.status;\n\t\t\t}\n\t\t\tssrData[pathname] = result;\n\t\t\tif (maxAgeMs > 0) {\n\t\t\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t\t\t}\n\t\t\tif (maxAgeMs > 0 && set.status === 200) {\n\t\t\t\tssrCache.set(cacheKey, result, maxAgeMs);\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Return what we have on error\n\t}\n\n\treturn { data: ssrData, error, statusOverride, pendingTasks };\n}\n\ntype StreamingContext = {\n\tssrData: Record<string, unknown>;\n\tpendingTasks: Promise<unknown>[];\n\tstoreResult: (key: string, task: Promise<unknown>) => void;\n};\n\ntype CacheContext = {\n\tcacheKey: string;\n\tstatusCacheKey: string;\n\tmaxAgeMs: number;\n};\n\nfunction shouldFlattenResult(\n\trawResult: unknown,\n\tisPromise: boolean,\n): { should: boolean; entries?: [string, unknown][] } {\n\tif (\n\t\ttypeof rawResult === 'object' &&\n\t\trawResult !== null &&\n\t\t!Array.isArray(rawResult) &&\n\t\t!isPromise\n\t) {\n\t\tconst entries = Object.entries(rawResult as Record<string, unknown>);\n\t\tconst hasMultipleKeys = entries.length > 1;\n\t\tconst hasPromises = entries.some(([_, v]) => isThenable(v));\n\n\t\tif (hasMultipleKeys || hasPromises) {\n\t\t\treturn { should: true, entries };\n\t\t}\n\t}\n\n\treturn { should: false };\n}\n\nfunction handleCaching(\n\tvalue: unknown,\n\tset: { status: number },\n\tcache: CacheContext,\n\tsetStatus: (val: number) => void,\n) {\n\tconst { cacheKey, statusCacheKey, maxAgeMs } = cache;\n\n\tif (set.status !== 200) {\n\t\tsetStatus(set.status);\n\t}\n\tif (maxAgeMs > 0) {\n\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t}\n\tif (maxAgeMs > 0 && set.status === 200) {\n\t\tssrCache.set(cacheKey, value, maxAgeMs);\n\t}\n}\n\nasync function handleStreamingRouteData(\n\trawResult: unknown,\n\tisPromise: boolean,\n\tpathname: string,\n\tset: { status: number },\n\tctx: StreamingContext,\n\tcache: CacheContext,\n\tsetError: (msg: string) => void,\n\tsetStatus: (val: number) => void,\n): Promise<Record<string, unknown>> {\n\tconst { ssrData, storeResult } = ctx;\n\n\t// Check if this is a plain object with promises (flattening candidate)\n\tconst flattenCheck = shouldFlattenResult(rawResult, isPromise);\n\tif (flattenCheck.should && flattenCheck.entries) {\n\t\treturn handleFlattenedResult(\n\t\t\tflattenCheck.entries,\n\t\t\tset,\n\t\t\tctx,\n\t\t\tcache,\n\t\t\tsetError,\n\t\t\tsetStatus,\n\t\t);\n\t}\n\n\t// Single value, promise, or array - handle normally\n\tconst task = toPromise(rawResult).catch((err) => {\n\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\tsetError(`SSR data() failed: ${msg}`);\n\t\tconsole.error(`[reroute] SSR data() failed: ${msg}`);\n\t\tthrow err;\n\t});\n\n\tssrData[pathname] = task;\n\tstoreResult(\n\t\tpathname,\n\t\ttask.then((value) => {\n\t\t\thandleCaching(value, set, cache, setStatus);\n\t\t\tssrData[pathname] = value;\n\t\t\treturn value;\n\t\t}),\n\t);\n\n\treturn {};\n}\n\n/**\n * Handle flattened object result where each key streams independently.\n */\nfunction handleFlattenedResult(\n\tentries: [string, unknown][],\n\tset: { status: number },\n\tctx: StreamingContext,\n\tcache: CacheContext,\n\tsetError: (msg: string) => void,\n\tsetStatus: (val: number) => void,\n): Record<string, unknown> {\n\tconst { ssrData, storeResult } = ctx;\n\tconst { cacheKey, statusCacheKey, maxAgeMs } = cache;\n\n\tconst promisesToResolve: Promise<[string, unknown]>[] = [];\n\n\tfor (const [key, val] of entries) {\n\t\tif (isThenable(val)) {\n\t\t\tconst wrappedPromise = (val as Promise<unknown>)\n\t\t\t\t.then((resolved) => {\n\t\t\t\t\tif (set.status !== 200) {\n\t\t\t\t\t\tsetStatus(set.status);\n\t\t\t\t\t}\n\t\t\t\t\treturn resolved;\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\t\t\tsetError(`SSR data() failed for key ${key}: ${msg}`);\n\t\t\t\t\tconsole.error(`[reroute] SSR data() failed for key ${key}: ${msg}`);\n\t\t\t\t\tthrow err;\n\t\t\t\t});\n\n\t\t\tssrData[key] = wrappedPromise;\n\t\t\tstoreResult(key, wrappedPromise);\n\t\t\tpromisesToResolve.push(\n\t\t\t\twrappedPromise.then((resolved) => [key, resolved] as [string, unknown]),\n\t\t\t);\n\t\t} else {\n\t\t\tssrData[key] = val;\n\t\t\tpromisesToResolve.push(Promise.resolve([key, val] as [string, unknown]));\n\t\t}\n\t}\n\n\t// Cache when all promises resolve\n\tif (maxAgeMs > 0) {\n\t\tPromise.all(promisesToResolve)\n\t\t\t.then((resolvedEntries) => {\n\t\t\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t\t\t\tif (set.status === 200) {\n\t\t\t\t\tconst resolvedResult: Record<string, unknown> = {};\n\t\t\t\t\tfor (const [key, value] of resolvedEntries) {\n\t\t\t\t\t\tresolvedResult[key] = value;\n\t\t\t\t\t}\n\t\t\t\t\tssrCache.set(cacheKey, resolvedResult, maxAgeMs);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// Don't cache on failure\n\t\t\t});\n\t}\n\n\treturn {};\n}\n",
14
- "import { dynamicImport } from '../imports';\nimport { join } from '../path';\nimport type { ComputeOptions, ComputeResult, Doc } from '../types';\nimport { computeContentData } from './content';\nimport { computeLayoutData, mergeLayoutData } from './layouts';\nimport { computeRouteData } from './routes';\n\n/**\n * Match a route pattern against a pathname\n * Used in compiled binary mode when matchRoute isn't available from routes.ts\n */\nfunction matchPatternUtil(\n\tpattern: string,\n\tpathname: string,\n): Record<string, string> | null {\n\tconst patternParts = pattern.split('/').filter(Boolean);\n\tconst pathnameParts = pathname.split('/').filter(Boolean);\n\n\tif (patternParts.length !== pathnameParts.length) {\n\t\treturn null;\n\t}\n\n\tconst params: Record<string, string> = {};\n\n\tfor (let i = 0; i < patternParts.length; i++) {\n\t\tconst patternPart = patternParts[i];\n\t\tconst pathnamePart = pathnameParts[i];\n\n\t\tif (patternPart.startsWith(':')) {\n\t\t\tparams[patternPart.slice(1)] = pathnamePart;\n\t\t} else if (patternPart !== pathnamePart) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn params;\n}\n\nexport { computeContentData } from './content';\nexport { computeLayoutData, mergeLayoutData } from './layouts';\nexport { computeRouteData } from './routes';\nexport { loadRoutesModule };\n\nfunction createBundledRoutesModule(\n\tbundledRoutes: unknown,\n\tbundledLayouts: unknown,\n): Doc {\n\tconst bundledNotFoundRoutes = (globalThis as Record<string, unknown>)\n\t\t.__REROUTE_NOT_FOUND_ROUTES__;\n\n\treturn {\n\t\troutes: bundledRoutes,\n\t\tlayouts: bundledLayouts,\n\t\tnotFoundRoutes: bundledNotFoundRoutes,\n\t\tmatchRoute: (pathname: string) => {\n\t\t\tfor (const route of bundledRoutes as Doc[]) {\n\t\t\t\tconst pattern = String(route?.pattern || '');\n\t\t\t\tconst match = matchPatternUtil(pattern, pathname);\n\t\t\t\tif (match) {\n\t\t\t\t\treturn { route, params: match };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t};\n}\n\nasync function loadRoutesModule(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\tconst bundledRoutes = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_ROUTES__;\n\t\tconst bundledLayouts = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_LAYOUTS__;\n\n\t\tif (bundledRoutes && bundledLayouts) {\n\t\t\treturn createBundledRoutesModule(bundledRoutes, bundledLayouts);\n\t\t}\n\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\treturn await dynamicImport(routesPath, isWatchMode);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction mergeComputeResult(\n\tresult: {\n\t\tdata: Record<string, unknown>;\n\t\terror?: string;\n\t\tstatusOverride?: number;\n\t\tpendingTasks: Promise<unknown>[];\n\t},\n\tssrData: Record<string, unknown>,\n\tstatusContainer: { value: number | undefined },\n\tallPendingTasks: Promise<unknown>[],\n\tstreaming: boolean,\n): string | undefined {\n\tif (!streaming) {\n\t\tObject.assign(ssrData, result.data);\n\t}\n\tif (result.statusOverride && !statusContainer.value) {\n\t\tstatusContainer.value = result.statusOverride;\n\t}\n\tallPendingTasks.push(...result.pendingTasks);\n\treturn result.error;\n}\n\n/**\n * Compute SSR data by executing ssr.data() from layouts, routes, and content modules.\n * Orchestrates the full data computation pipeline for a request.\n */\nexport async function computeSSRData(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\toptions: ComputeOptions = {},\n\tsearchParams?: URLSearchParams,\n): Promise<ComputeResult> {\n\tconst ssrData: Record<string, unknown> = {};\n\tlet error: string | undefined;\n\tconst statusContainer = { value: undefined as number | undefined };\n\tconst allPendingTasks: Promise<unknown>[] = [];\n\tconst streaming = options.streaming === true;\n\n\tconst routesModule = await loadRoutesModule(cwd, isWatchMode);\n\tif (!routesModule) {\n\t\treturn {\n\t\t\tdata: ssrData,\n\t\t\terror: 'Failed to load routes module',\n\t\t\tstatusContainer,\n\t\t};\n\t}\n\n\ttry {\n\t\tconst layoutResult = await computeLayoutData(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\toptions,\n\t\t\tsearchParams,\n\t\t\troutesModule,\n\t\t\tssrData,\n\t\t);\n\t\tmergeComputeResult(\n\t\t\tlayoutResult,\n\t\t\tssrData,\n\t\t\tstatusContainer,\n\t\t\tallPendingTasks,\n\t\t\tstreaming,\n\t\t);\n\t} catch {\n\t\t// Continue with other data sources\n\t}\n\n\ttry {\n\t\tconst contentResult = await computeContentData(\n\t\t\tpathname,\n\t\t\toptions,\n\t\t\tsearchParams,\n\t\t\tssrData,\n\t\t);\n\t\terror = mergeComputeResult(\n\t\t\tcontentResult,\n\t\t\tssrData,\n\t\t\tstatusContainer,\n\t\t\tallPendingTasks,\n\t\t\tstreaming,\n\t\t);\n\t} catch {\n\t\t// Continue with route data\n\t}\n\n\ttry {\n\t\tconst routeResult = await computeRouteData(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\toptions,\n\t\t\tsearchParams,\n\t\t\troutesModule,\n\t\t\tssrData,\n\t\t);\n\t\tconst routeError = mergeComputeResult(\n\t\t\trouteResult,\n\t\t\tssrData,\n\t\t\tstatusContainer,\n\t\t\tallPendingTasks,\n\t\t\tstreaming,\n\t\t);\n\t\tif (routeError) error = routeError;\n\t} catch {\n\t\t// Return what we have\n\t}\n\n\tif (!streaming) {\n\t\tmergeLayoutData(ssrData, pathname);\n\t}\n\n\tconst pending =\n\t\tstreaming && allPendingTasks.length\n\t\t\t? Promise.allSettled(allPendingTasks).then(() => undefined)\n\t\t\t: undefined;\n\n\treturn { data: ssrData, error, pending, statusContainer };\n}\n\n/**\n * Set global SSR data for client hydration\n */\nexport function setGlobalSSRData(data: Record<string, unknown>): void {\n\ttry {\n\t\t(globalThis as Doc).__REROUTE_DATA__ = data;\n\t} catch {\n\t\t// Ignore errors in restricted environments\n\t}\n}\n",
13
+ "import { ssrCache, statusCache } from '../cache';\nimport { dynamicImport, isThenable, toPromise } from '../imports';\nimport { join } from '../path';\nimport type { ComputeOptions, Doc, RouteMatch } from '../types';\n\ntype RouteComputeResult = {\n\tdata: Record<string, unknown>;\n\terror?: string;\n\tstatusOverride?: number;\n\tpendingTasks: Promise<unknown>[];\n};\n\n/**\n * Compute SSR data for route-level ssr.data() functions.\n * Handles both streaming and non-streaming modes with promise flattening.\n *\n * @param sharedSsrData - In streaming mode, the shared ssrData object that gets passed to React.\n * Promise resolution callbacks must update THIS object directly.\n */\nfunction checkCache(\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n\tpathname: string,\n\tssrData: Record<string, unknown>,\n): { cached: boolean; statusOverride?: number } {\n\t// Check status cache first\n\tconst cachedStatus =\n\t\tmaxAgeMs > 0 ? statusCache.get<number>(statusCacheKey) : undefined;\n\tconst statusOverride =\n\t\tcachedStatus && cachedStatus !== 200 ? cachedStatus : undefined;\n\n\t// Check data cache\n\tconst cached = maxAgeMs > 0 ? ssrCache.get(cacheKey) : undefined;\n\n\tif (cached !== undefined) {\n\t\tssrData[pathname] = cached;\n\t\treturn { cached: true, statusOverride };\n\t}\n\n\treturn { cached: false, statusOverride };\n}\n\nasync function loadRouteSSRExport(\n\troute: Doc,\n\tclientDir: string,\n\tisWatchMode: boolean,\n): Promise<Doc | undefined> {\n\t// Try to use bundled ssr export first (compiled binary)\n\tlet ssrExport = (route as Doc)?.ssr;\n\n\t// Fallback to dynamic import if not bundled (dev mode)\n\tif (!ssrExport) {\n\t\tconst routePath = String(route.path);\n\t\tconst cwd = join(clientDir, '..');\n\n\t\t// Try streaming wrapper first (for routes with ssr.data())\n\t\tlet abs = join(cwd, '.reroute', 'streaming', routePath);\n\t\tlet mod = await dynamicImport(abs, isWatchMode).catch(() => null);\n\n\t\t// Fallback to source if streaming doesn't exist\n\t\tif (!mod) {\n\t\t\tabs = join(clientDir, 'routes', routePath);\n\t\t\tmod = await dynamicImport(abs, isWatchMode);\n\t\t}\n\n\t\tssrExport = (mod as Doc)?.ssr as Doc | undefined;\n\t}\n\n\treturn ssrExport;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Route data computation handles caching, streaming, and promise flattening\nexport async function computeRouteData(\n\tpathname: string,\n\tclientDir: string,\n\t_cwd: string,\n\tisWatchMode: boolean,\n\toptions: ComputeOptions,\n\tsearchParams?: URLSearchParams,\n\troutesModule?: Doc,\n\tsharedSsrData?: Record<string, unknown>,\n): Promise<RouteComputeResult> {\n\tconst streaming = options.streaming === true;\n\tconst ssrData: Record<string, unknown> =\n\t\tstreaming && sharedSsrData ? sharedSsrData : {};\n\tconst pendingTasks: Promise<unknown>[] = [];\n\tlet error: string | undefined;\n\tlet statusOverride: number | undefined;\n\n\tconst maxAge = options.maxAge || 0;\n\tconst maxAgeMs = maxAge * 1000;\n\n\tconst storeResult = (key: string, task: Promise<unknown>) => {\n\t\tpendingTasks.push(\n\t\t\ttask\n\t\t\t\t.then((value) => {\n\t\t\t\t\tssrData[key] = value;\n\t\t\t\t})\n\t\t\t\t.catch(() => {}),\n\t\t);\n\t};\n\n\ttry {\n\t\t// Strip query string for route matching\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst match: RouteMatch =\n\t\t\ttypeof routesModule?.matchRoute === 'function'\n\t\t\t\t? routesModule.matchRoute(pathnameOnly)\n\t\t\t\t: null;\n\n\t\tconst route = match?.route;\n\t\tconst params = match?.params || {};\n\n\t\tif (!route || typeof route.path !== 'string') {\n\t\t\treturn { data: ssrData, pendingTasks };\n\t\t}\n\n\t\t// Load SSR export\n\t\tconst ssrExport = await loadRouteSSRExport(route, clientDir, isWatchMode);\n\n\t\tconst dataFn = ssrExport?.data as\n\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t| undefined;\n\n\t\tif (typeof dataFn !== 'function') {\n\t\t\treturn { data: ssrData, pendingTasks };\n\t\t}\n\n\t\t// Include search params in cache key\n\t\tconst searchQuery = searchParams ? `?${searchParams.toString()}` : '';\n\t\tconst cacheKey = `route:${pathname}${searchQuery}:${JSON.stringify(params)}`;\n\t\tconst statusCacheKey = `status:${cacheKey}`;\n\n\t\tconst cacheResult = checkCache(\n\t\t\tcacheKey,\n\t\t\tstatusCacheKey,\n\t\t\tmaxAgeMs,\n\t\t\tpathname,\n\t\t\tssrData,\n\t\t);\n\n\t\tif (cacheResult.cached) {\n\t\t\treturn {\n\t\t\t\tdata: ssrData,\n\t\t\t\tstatusOverride: cacheResult.statusOverride,\n\t\t\t\tpendingTasks,\n\t\t\t};\n\t\t}\n\n\t\tif (cacheResult.statusOverride) {\n\t\t\tstatusOverride = cacheResult.statusOverride;\n\t\t}\n\n\t\t// Execute data function\n\t\tconst set = { status: 200 };\n\t\tconst rawResult = dataFn({\n\t\t\tpathname,\n\t\t\tparams,\n\t\t\tset,\n\t\t\tsearchParams,\n\t\t} as Doc);\n\t\tconst isPromise = rawResult instanceof Promise;\n\n\t\tif (streaming) {\n\t\t\tconst result = await handleStreamingRouteData(\n\t\t\t\trawResult,\n\t\t\t\tisPromise,\n\t\t\t\tpathname,\n\t\t\t\tset,\n\t\t\t\t{ ssrData, pendingTasks, storeResult },\n\t\t\t\t{ cacheKey, statusCacheKey, maxAgeMs },\n\t\t\t\t(msg) => {\n\t\t\t\t\terror = msg;\n\t\t\t\t},\n\t\t\t\t(val) => {\n\t\t\t\t\tif (!statusOverride) statusOverride = val;\n\t\t\t\t},\n\t\t\t);\n\t\t\tObject.assign(ssrData, result);\n\t\t} else {\n\t\t\tconst task = toPromise(rawResult).catch((err) => {\n\t\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\t\terror = `SSR data() failed: ${msg}`;\n\t\t\t\tconsole.error(`[reroute] ${error}`);\n\t\t\t\tthrow err;\n\t\t\t});\n\n\t\t\tconst result = await task;\n\t\t\tif (set.status !== 200 && !statusOverride) {\n\t\t\t\tstatusOverride = set.status;\n\t\t\t}\n\t\t\tssrData[pathname] = result;\n\t\t\tif (maxAgeMs > 0) {\n\t\t\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t\t\t}\n\t\t\tif (maxAgeMs > 0 && set.status === 200) {\n\t\t\t\tssrCache.set(cacheKey, result, maxAgeMs);\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Return what we have on error\n\t}\n\n\treturn { data: ssrData, error, statusOverride, pendingTasks };\n}\n\ntype StreamingContext = {\n\tssrData: Record<string, unknown>;\n\tpendingTasks: Promise<unknown>[];\n\tstoreResult: (key: string, task: Promise<unknown>) => void;\n};\n\ntype CacheContext = {\n\tcacheKey: string;\n\tstatusCacheKey: string;\n\tmaxAgeMs: number;\n};\n\nfunction shouldFlattenResult(\n\trawResult: unknown,\n\tisPromise: boolean,\n): { should: boolean; entries?: [string, unknown][] } {\n\tif (\n\t\ttypeof rawResult === 'object' &&\n\t\trawResult !== null &&\n\t\t!Array.isArray(rawResult) &&\n\t\t!isPromise\n\t) {\n\t\tconst entries = Object.entries(rawResult as Record<string, unknown>);\n\t\tconst hasMultipleKeys = entries.length > 1;\n\t\tconst hasPromises = entries.some(([_, v]) => isThenable(v));\n\n\t\tif (hasMultipleKeys || hasPromises) {\n\t\t\treturn { should: true, entries };\n\t\t}\n\t}\n\n\treturn { should: false };\n}\n\nfunction handleCaching(\n\tvalue: unknown,\n\tset: { status: number },\n\tcache: CacheContext,\n\tsetStatus: (val: number) => void,\n) {\n\tconst { cacheKey, statusCacheKey, maxAgeMs } = cache;\n\n\tif (set.status !== 200) {\n\t\tsetStatus(set.status);\n\t}\n\tif (maxAgeMs > 0) {\n\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t}\n\tif (maxAgeMs > 0 && set.status === 200) {\n\t\tssrCache.set(cacheKey, value, maxAgeMs);\n\t}\n}\n\nasync function handleStreamingRouteData(\n\trawResult: unknown,\n\tisPromise: boolean,\n\tpathname: string,\n\tset: { status: number },\n\tctx: StreamingContext,\n\tcache: CacheContext,\n\tsetError: (msg: string) => void,\n\tsetStatus: (val: number) => void,\n): Promise<Record<string, unknown>> {\n\tconst { ssrData, storeResult } = ctx;\n\n\t// Check if this is a plain object with promises (flattening candidate)\n\tconst flattenCheck = shouldFlattenResult(rawResult, isPromise);\n\tif (flattenCheck.should && flattenCheck.entries) {\n\t\treturn handleFlattenedResult(\n\t\t\tflattenCheck.entries,\n\t\t\tset,\n\t\t\tctx,\n\t\t\tcache,\n\t\t\tsetError,\n\t\t\tsetStatus,\n\t\t);\n\t}\n\n\t// Single value, promise, or array - handle normally\n\tconst task = toPromise(rawResult).catch((err) => {\n\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\tsetError(`SSR data() failed: ${msg}`);\n\t\tconsole.error(`[reroute] SSR data() failed: ${msg}`);\n\t\tthrow err;\n\t});\n\n\t// Store Promise in both ssrData AND globalThis to handle concurrent requests\n\t// The global is what useData reads from during SSR\n\tssrData[pathname] = task;\n\tconst g = globalThis as unknown as Record<string, Record<string, unknown>>;\n\tif (!g.__REROUTE_DATA__) g.__REROUTE_DATA__ = {};\n\tg.__REROUTE_DATA__[pathname] = task;\n\n\tstoreResult(\n\t\tpathname,\n\t\ttask.then((value) => {\n\t\t\thandleCaching(value, set, cache, setStatus);\n\t\t\t// Update BOTH the local ssrData AND the global\n\t\t\tssrData[pathname] = value;\n\t\t\tif (g.__REROUTE_DATA__) {\n\t\t\t\tg.__REROUTE_DATA__[pathname] = value;\n\t\t\t}\n\t\t\treturn value;\n\t\t}),\n\t);\n\n\treturn {};\n}\n\n/**\n * Handle flattened object result where each key streams independently.\n */\nfunction handleFlattenedResult(\n\tentries: [string, unknown][],\n\tset: { status: number },\n\tctx: StreamingContext,\n\tcache: CacheContext,\n\tsetError: (msg: string) => void,\n\tsetStatus: (val: number) => void,\n): Record<string, unknown> {\n\tconst { ssrData, storeResult } = ctx;\n\tconst { cacheKey, statusCacheKey, maxAgeMs } = cache;\n\n\t// Ensure globalThis.__REROUTE_DATA__ exists for useData to read from\n\tconst g = globalThis as unknown as Record<string, Record<string, unknown>>;\n\tif (!g.__REROUTE_DATA__) g.__REROUTE_DATA__ = {};\n\n\tconst promisesToResolve: Promise<[string, unknown]>[] = [];\n\n\tfor (const [key, val] of entries) {\n\t\tif (isThenable(val)) {\n\t\t\tconst wrappedPromise = (val as Promise<unknown>)\n\t\t\t\t.then((resolved) => {\n\t\t\t\t\tif (set.status !== 200) {\n\t\t\t\t\t\tsetStatus(set.status);\n\t\t\t\t\t}\n\t\t\t\t\t// CRITICAL: Update both ssrData and globalThis with resolved value\n\t\t\t\t\t// This allows React's Suspense retry to find the resolved data\n\t\t\t\t\tssrData[key] = resolved;\n\t\t\t\t\tg.__REROUTE_DATA__[key] = resolved;\n\t\t\t\t\treturn resolved;\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\t\t\tsetError(`SSR data() failed for key ${key}: ${msg}`);\n\t\t\t\t\tconsole.error(`[reroute] SSR data() failed for key ${key}: ${msg}`);\n\t\t\t\t\tthrow err;\n\t\t\t\t});\n\n\t\t\t// Store Promise initially - useData will throw it for Suspense\n\t\t\tssrData[key] = wrappedPromise;\n\t\t\tg.__REROUTE_DATA__[key] = wrappedPromise;\n\t\t\tstoreResult(key, wrappedPromise);\n\t\t\tpromisesToResolve.push(\n\t\t\t\twrappedPromise.then((resolved) => [key, resolved] as [string, unknown]),\n\t\t\t);\n\t\t} else {\n\t\t\tssrData[key] = val;\n\t\t\tg.__REROUTE_DATA__[key] = val;\n\t\t\tpromisesToResolve.push(Promise.resolve([key, val] as [string, unknown]));\n\t\t}\n\t}\n\n\t// Cache when all promises resolve\n\tif (maxAgeMs > 0) {\n\t\tPromise.all(promisesToResolve)\n\t\t\t.then((resolvedEntries) => {\n\t\t\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t\t\t\tif (set.status === 200) {\n\t\t\t\t\tconst resolvedResult: Record<string, unknown> = {};\n\t\t\t\t\tfor (const [key, value] of resolvedEntries) {\n\t\t\t\t\t\tresolvedResult[key] = value;\n\t\t\t\t\t}\n\t\t\t\t\tssrCache.set(cacheKey, resolvedResult, maxAgeMs);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// Don't cache on failure\n\t\t\t});\n\t}\n\n\treturn {};\n}\n",
14
+ "import { dynamicImport } from '../imports';\nimport { join } from '../path';\nimport type { ComputeOptions, ComputeResult, Doc } from '../types';\nimport { computeContentData } from './content';\nimport { computeLayoutData, mergeLayoutData } from './layouts';\nimport { computeRouteData } from './routes';\n\n/**\n * Match a route pattern against a pathname\n * Used in compiled binary mode when matchRoute isn't available from routes.ts\n */\nfunction matchPatternUtil(\n\tpattern: string,\n\tpathname: string,\n): Record<string, string> | null {\n\tconst patternParts = pattern.split('/').filter(Boolean);\n\tconst pathnameParts = pathname.split('/').filter(Boolean);\n\n\tif (patternParts.length !== pathnameParts.length) {\n\t\treturn null;\n\t}\n\n\tconst params: Record<string, string> = {};\n\n\tfor (let i = 0; i < patternParts.length; i++) {\n\t\tconst patternPart = patternParts[i];\n\t\tconst pathnamePart = pathnameParts[i];\n\n\t\tif (patternPart.startsWith(':')) {\n\t\t\tparams[patternPart.slice(1)] = pathnamePart;\n\t\t} else if (patternPart !== pathnamePart) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn params;\n}\n\nexport { computeContentData } from './content';\nexport { computeLayoutData, mergeLayoutData } from './layouts';\nexport { computeRouteData } from './routes';\nexport { loadRoutesModule };\n\nfunction createBundledRoutesModule(\n\tbundledRoutes: unknown,\n\tbundledLayouts: unknown,\n): Doc {\n\tconst bundledNotFoundRoutes = (globalThis as Record<string, unknown>)\n\t\t.__REROUTE_NOT_FOUND_ROUTES__;\n\n\treturn {\n\t\troutes: bundledRoutes,\n\t\tlayouts: bundledLayouts,\n\t\tnotFoundRoutes: bundledNotFoundRoutes,\n\t\tmatchRoute: (pathname: string) => {\n\t\t\tfor (const route of bundledRoutes as Doc[]) {\n\t\t\t\tconst pattern = String(route?.pattern || '');\n\t\t\t\tconst match = matchPatternUtil(pattern, pathname);\n\t\t\t\tif (match) {\n\t\t\t\t\treturn { route, params: match };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t};\n}\n\nasync function loadRoutesModule(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\tconst bundledRoutes = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_ROUTES__;\n\t\tconst bundledLayouts = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_LAYOUTS__;\n\n\t\tif (bundledRoutes && bundledLayouts) {\n\t\t\treturn createBundledRoutesModule(bundledRoutes, bundledLayouts);\n\t\t}\n\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\treturn await dynamicImport(routesPath, isWatchMode);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction mergeComputeResult(\n\tresult: {\n\t\tdata: Record<string, unknown>;\n\t\terror?: string;\n\t\tstatusOverride?: number;\n\t\tpendingTasks: Promise<unknown>[];\n\t},\n\tssrData: Record<string, unknown>,\n\tstatusContainer: { value: number | undefined },\n\tallPendingTasks: Promise<unknown>[],\n\tstreaming: boolean,\n): string | undefined {\n\tif (!streaming) {\n\t\tObject.assign(ssrData, result.data);\n\t}\n\tif (result.statusOverride && !statusContainer.value) {\n\t\tstatusContainer.value = result.statusOverride;\n\t}\n\tallPendingTasks.push(...result.pendingTasks);\n\treturn result.error;\n}\n\n/**\n * Compute SSR data by executing ssr.data() from layouts, routes, and content modules.\n * Orchestrates the full data computation pipeline for a request.\n */\nexport async function computeSSRData(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\toptions: ComputeOptions = {},\n\tsearchParams?: URLSearchParams,\n): Promise<ComputeResult> {\n\tconst ssrData: Record<string, unknown> = {};\n\tlet error: string | undefined;\n\tconst statusContainer = { value: undefined as number | undefined };\n\tconst allPendingTasks: Promise<unknown>[] = [];\n\tconst streaming = options.streaming === true;\n\n\tconst routesModule = await loadRoutesModule(cwd, isWatchMode);\n\tif (!routesModule) {\n\t\treturn {\n\t\t\tdata: ssrData,\n\t\t\terror: 'Failed to load routes module',\n\t\t\tstatusContainer,\n\t\t};\n\t}\n\n\ttry {\n\t\tconst layoutResult = await computeLayoutData(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\toptions,\n\t\t\tsearchParams,\n\t\t\troutesModule,\n\t\t\tssrData,\n\t\t);\n\t\tmergeComputeResult(\n\t\t\tlayoutResult,\n\t\t\tssrData,\n\t\t\tstatusContainer,\n\t\t\tallPendingTasks,\n\t\t\tstreaming,\n\t\t);\n\t} catch {\n\t\t// Continue with other data sources\n\t}\n\n\ttry {\n\t\tconst contentResult = await computeContentData(\n\t\t\tpathname,\n\t\t\toptions,\n\t\t\tsearchParams,\n\t\t\tssrData,\n\t\t);\n\t\terror = mergeComputeResult(\n\t\t\tcontentResult,\n\t\t\tssrData,\n\t\t\tstatusContainer,\n\t\t\tallPendingTasks,\n\t\t\tstreaming,\n\t\t);\n\t} catch {\n\t\t// Continue with route data\n\t}\n\n\ttry {\n\t\tconst routeResult = await computeRouteData(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\toptions,\n\t\t\tsearchParams,\n\t\t\troutesModule,\n\t\t\tssrData,\n\t\t);\n\t\tconst routeError = mergeComputeResult(\n\t\t\trouteResult,\n\t\t\tssrData,\n\t\t\tstatusContainer,\n\t\t\tallPendingTasks,\n\t\t\tstreaming,\n\t\t);\n\t\tif (routeError) error = routeError;\n\t} catch {\n\t\t// Return what we have\n\t}\n\n\tif (!streaming) {\n\t\tmergeLayoutData(ssrData, pathname);\n\t}\n\n\tconst pending =\n\t\tstreaming && allPendingTasks.length\n\t\t\t? Promise.allSettled(allPendingTasks).then(() => undefined)\n\t\t\t: undefined;\n\n\treturn { data: ssrData, error, pending, statusContainer };\n}\n\n/**\n * Set global SSR data for client hydration\n * MERGES into existing data to support concurrent streaming requests\n */\nexport function setGlobalSSRData(data: Record<string, unknown>): void {\n\ttry {\n\t\tconst g = globalThis as Doc;\n\t\tif (!g.__REROUTE_DATA__) {\n\t\t\tg.__REROUTE_DATA__ = {};\n\t\t}\n\t\t// Merge new data into existing - don't replace to avoid race conditions\n\t\tObject.assign(g.__REROUTE_DATA__, data);\n\t} catch {\n\t\t// Ignore errors in restricted environments\n\t}\n}\n",
15
15
  "import { readdir, stat } from 'node:fs/promises';\nimport { dynamicImport } from './imports';\nimport { join } from './path';\nimport type { Doc } from './types';\n\n/**\n * Import a content module for a given pathname like \"/collection/name\".\n * Prefers the latest built chunk in .reroute, falls back to source TS/TSX.\n */\nexport async function importContentModuleForPath(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\t// Strip query params and hash\n\t\tconst pathOnly = pathname.split('?')[0].split('#')[0];\n\t\tconst parts = pathOnly.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return null;\n\n\t\tconst collection = parts[0];\n\t\tconst name = parts[1];\n\n\t\t// 1) Try registry mapping for exact chunk path\n\t\tconst registryModule = await tryRegistryImport(\n\t\t\tcollection,\n\t\t\tname,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t);\n\t\tif (registryModule) return registryModule;\n\n\t\t// 2) Try latest prebuilt chunk from .reroute\n\t\tconst chunkModule = await tryChunkImport(\n\t\t\tcollection,\n\t\t\tname,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t);\n\t\tif (chunkModule) return chunkModule;\n\n\t\t// 3) Fallback to source files\n\t\tconst sourceModule = await trySourceImport(\n\t\t\tcollection,\n\t\t\tname,\n\t\t\tclientDir,\n\t\t\tisWatchMode,\n\t\t);\n\t\tif (sourceModule) return sourceModule;\n\t} catch {\n\t\t// Return null on any error\n\t}\n\n\treturn null;\n}\n\nasync function tryRegistryImport(\n\tcollection: string,\n\tname: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\tconst registryPath = join(cwd, '.reroute', 'content.ts');\n\t\tconst reg = await dynamicImport(registryPath, isWatchMode);\n\n\t\tconst get = reg?.getContentEntry as\n\t\t\t| ((c: string, n: string) => { module?: string } | undefined)\n\t\t\t| undefined;\n\t\tconst entry = typeof get === 'function' ? get(collection, name) : undefined;\n\t\tconst moduleUrl = (entry as Doc)?.module as string | undefined;\n\n\t\tif (!moduleUrl?.endsWith('.js')) return null;\n\n\t\tconst raw = moduleUrl.split('?')[0] || '';\n\t\tconst normalized = raw.replace(/^\\/+/, '');\n\n\t\tconst candidates: string[] = [];\n\t\tif (normalized) {\n\t\t\tcandidates.push(join(cwd, normalized));\n\t\t\tif (!normalized.startsWith('.reroute/')) {\n\t\t\t\tcandidates.push(join(cwd, '.reroute', normalized));\n\t\t\t}\n\t\t}\n\n\t\tfor (const abs of candidates) {\n\t\t\ttry {\n\t\t\t\tif (!(await Bun.file(abs).exists())) continue;\n\t\t\t\treturn await dynamicImport(abs, isWatchMode);\n\t\t\t} catch {\n\t\t\t\t// Try next candidate\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Registry unavailable\n\t}\n\n\treturn null;\n}\n\nasync function tryChunkImport(\n\tcollection: string,\n\tname: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\tconst chunkDir = join(cwd, '.reroute', 'chunks', collection);\n\t\tconst files = await readdir(chunkDir);\n\t\tconst matches = files.filter(\n\t\t\t(n) => n.startsWith(`${name}.`) && n.endsWith('.js'),\n\t\t);\n\n\t\tif (!matches.length) return null;\n\n\t\t// Find latest by modification time\n\t\tlet latest = matches[0];\n\t\tlet latestM = 0;\n\t\tfor (const f of matches) {\n\t\t\ttry {\n\t\t\t\tconst s = await stat(join(chunkDir, f));\n\t\t\t\tif (s.mtimeMs >= latestM) {\n\t\t\t\t\tlatestM = s.mtimeMs;\n\t\t\t\t\tlatest = f;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Skip inaccessible files\n\t\t\t}\n\t\t}\n\n\t\tconst absChunk = join(chunkDir, latest);\n\t\treturn await dynamicImport(absChunk, isWatchMode);\n\t} catch {\n\t\t// Chunk directory doesn't exist\n\t}\n\n\treturn null;\n}\n\nasync function trySourceImport(\n\tcollection: string,\n\tname: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\tconst srcTsx = join(\n\t\t\tclientDir,\n\t\t\t'routes',\n\t\t\tcollection,\n\t\t\t'content',\n\t\t\t`${name}.tsx`,\n\t\t);\n\t\tconst srcTs = join(\n\t\t\tclientDir,\n\t\t\t'routes',\n\t\t\tcollection,\n\t\t\t'content',\n\t\t\t`${name}.ts`,\n\t\t);\n\n\t\tlet absSrc: string | null = null;\n\t\tif (await Bun.file(srcTsx).exists()) {\n\t\t\tabsSrc = srcTsx;\n\t\t} else if (await Bun.file(srcTs).exists()) {\n\t\t\tabsSrc = srcTs;\n\t\t}\n\n\t\tif (absSrc) {\n\t\t\treturn await dynamicImport(absSrc, isWatchMode);\n\t\t}\n\t} catch {\n\t\t// Source files don't exist\n\t}\n\n\treturn null;\n}\n",
16
16
  "import { importContentModuleForPath } from './modules';\nimport type { Doc } from './types';\n\n/**\n * Seed SSR module store for a content path.\n * Makes the content module available for server-side rendering.\n */\nexport async function seedSSRModuleForPath(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<void> {\n\ttry {\n\t\tconst pathOnly = pathname.split('?')[0].split('#')[0];\n\t\tconst parts = pathOnly.split('/').filter(Boolean);\n\n\t\tif (parts.length < 2) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst collection = parts[0];\n\t\tconst name = parts[1];\n\t\tconst key = `${collection}:${name}`;\n\n\t\tconst mod = await importContentModuleForPath(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\tif (!mod) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Store full module for hooks like useToc\n\t\t(globalThis as Doc).__REROUTE_SSR_MODULES__ =\n\t\t\t(globalThis as Doc).__REROUTE_SSR_MODULES__ || {};\n\t\t(globalThis as Doc).__REROUTE_SSR_MODULES__[key] = mod;\n\n\t\t// Capture exports for head injection\n\t\ttry {\n\t\t\t(globalThis as Doc).__REROUTE_SSR_EXPORTS__ =\n\t\t\t\t(globalThis as Doc).__REROUTE_SSR_EXPORTS__ || {};\n\t\t\t(globalThis as Doc).__REROUTE_SSR_EXPORTS__[key] = {\n\t\t\t\tmeta: (mod as Doc).meta || {},\n\t\t\t\tssr: (mod as Doc).ssr || {},\n\t\t\t\ttoc: (mod as Doc).toc || [],\n\t\t\t};\n\t\t} catch {\n\t\t\t// Ignore export capture errors\n\t\t}\n\t} catch {\n\t\t// Ignore seeding errors\n\t}\n}\n",
17
17
  "import { dynamicImport } from './imports';\nimport { getMatchingLayouts } from './layouts';\nimport { join } from './path';\nimport { seedSSRModuleForPath } from './seed';\nimport type { ComputeParams, Doc } from './types';\n\n/**\n * Match a route pattern against a pathname\n * Used in compiled binary mode when matchRoute isn't available\n */\nfunction matchPattern(\n\tpattern: string,\n\tpathname: string,\n): Record<string, string> | null {\n\tconst patternParts = pattern.split('/').filter(Boolean);\n\tconst pathnameParts = pathname.split('/').filter(Boolean);\n\n\tif (patternParts.length !== pathnameParts.length) {\n\t\treturn null;\n\t}\n\n\tconst params: Record<string, string> = {};\n\n\tfor (let i = 0; i < patternParts.length; i++) {\n\t\tconst patternPart = patternParts[i];\n\t\tconst pathnamePart = pathnameParts[i];\n\n\t\tif (patternPart.startsWith(':')) {\n\t\t\tparams[patternPart.slice(1)] = pathnamePart;\n\t\t} else if (patternPart !== pathnamePart) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn params;\n}\n\n/**\n * Compute SSR data for client-side navigation.\n * Returns lazy markers for promises to support progressive loading.\n */\nfunction loadContentData(\n\tpathname: string,\n\tsearchParams?: URLSearchParams,\n): { key: string; data: unknown } | null {\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return null;\n\n\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\tconst g = globalThis as Doc;\n\t\tconst exp = g.__REROUTE_SSR_EXPORTS__?.[key];\n\t\tconst dataFn = (exp as Doc)?.ssr?.data as\n\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t| undefined;\n\n\t\tif (typeof dataFn === 'function') {\n\t\t\tconst rawResult = dataFn({\n\t\t\t\tpathname,\n\t\t\t\tparams: { name: parts[1] },\n\t\t\t\tsearchParams,\n\t\t\t});\n\n\t\t\tconst result = processDataResult(rawResult, pathname, pathname);\n\t\t\treturn { key: pathname, data: result };\n\t\t}\n\t} catch {\n\t\t// Content data unavailable\n\t}\n\n\treturn null;\n}\n\nfunction loadMatchedRouteData(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<{ key: string; data: unknown } | null> {\n\treturn loadRouteDataInternal(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tsearchParams,\n\t);\n}\n\nasync function loadRouteDataInternal(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<{ key: string; data: unknown } | null> {\n\ttry {\n\t\t// Check for bundled routes first (compiled binary support)\n\t\tlet routes = (globalThis as Record<string, unknown>).__REROUTE_ROUTES__ as\n\t\t\t| Doc[]\n\t\t\t| undefined;\n\t\tlet matchRouteFn: ((pathname: string) => Doc | null) | undefined;\n\n\t\t// Fallback to dynamic import (dev mode)\n\t\tif (!routes) {\n\t\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\t\tconst m = await dynamicImport(routesPath, isWatchMode);\n\t\t\troutes = m?.routes as Doc[] | undefined;\n\t\t\tmatchRouteFn = (m as Doc)?.matchRoute as\n\t\t\t\t| ((pathname: string) => Doc | null)\n\t\t\t\t| undefined;\n\t\t} else {\n\t\t\t// In bundled mode, we need to match manually\n\t\t\tmatchRouteFn = (pathname: string) => {\n\t\t\t\tfor (const route of routes || []) {\n\t\t\t\t\tconst pattern = String(route?.pattern || '');\n\t\t\t\t\tconst match = matchPattern(pattern, pathname);\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\treturn { route, params: match };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t};\n\t\t}\n\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst match =\n\t\t\ttypeof matchRouteFn === 'function' ? matchRouteFn(pathnameOnly) : null;\n\n\t\tconst r = (match as Doc | null)?.route;\n\t\tconst paramsValue = ((match as Doc | null)?.params || {}) as Record<\n\t\t\tstring,\n\t\t\tstring\n\t\t>;\n\n\t\tif (r && typeof (r as Doc).path === 'string') {\n\t\t\t// Try to use bundled ssr export first (compiled binary)\n\t\t\tlet ssrExport = (r as Doc)?.ssr as Doc | undefined;\n\n\t\t\t// Fallback to dynamic import if not bundled (dev mode)\n\t\t\tif (!ssrExport) {\n\t\t\t\t// In dev mode, routes might be from .reroute/routes.ts which imports from streaming wrappers\n\t\t\t\t// The streaming wrapper re-exports ssr, so we should try loading from there first\n\t\t\t\tconst routePath = String((r as Doc).path);\n\t\t\t\tlet abs = join(cwd, '.reroute', 'streaming', routePath);\n\n\t\t\t\tlet mod = await dynamicImport(abs, isWatchMode).catch(() => null);\n\n\t\t\t\t// If streaming wrapper doesn't exist or fails, load from source\n\t\t\t\tif (!mod) {\n\t\t\t\t\tabs = join(clientDir, 'routes', routePath);\n\t\t\t\t\tmod = await dynamicImport(abs, isWatchMode);\n\t\t\t\t}\n\n\t\t\t\tssrExport = (mod as Doc)?.ssr as Doc | undefined;\n\t\t\t}\n\n\t\t\tconst dataFn = ssrExport?.data as\n\t\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t\t| undefined;\n\n\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\tconst rawResult = dataFn({\n\t\t\t\t\tpathname,\n\t\t\t\t\tparams: paramsValue,\n\t\t\t\t\tsearchParams,\n\t\t\t\t});\n\n\t\t\t\tconst data = processDataResult(rawResult, pathname, pathname);\n\t\t\t\treturn { key: pathname, data };\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Route data unavailable\n\t}\n\n\treturn null;\n}\n\nfunction determineReturnStructure(allData: Record<string, unknown>): unknown {\n\tconst dataKeys = Object.keys(allData);\n\n\tif (dataKeys.length > 1) {\n\t\treturn { __reroute_multiple__: true, ...allData };\n\t}\n\n\tif (dataKeys.length === 1) {\n\t\tconst singleKey = dataKeys[0];\n\t\t// Keep layout key structure for proper client-side handling\n\t\tif (singleKey.startsWith('__layout:')) {\n\t\t\treturn allData;\n\t\t}\n\t\treturn allData[singleKey];\n\t}\n\n\treturn null;\n}\n\nexport async function computeSSRDataForPath(\n\tparams: ComputeParams,\n): Promise<unknown> {\n\tconst { pathname, clientDir, cwd, isWatchMode, searchParams } = params;\n\n\t// Seed content modules for potential content pages\n\ttry {\n\t\tawait seedSSRModuleForPath(pathname, clientDir, cwd, isWatchMode);\n\t} catch {\n\t\t// Continue without seeding\n\t}\n\n\t// 1) Layout data\n\tconst allData = await loadLayoutData(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tsearchParams,\n\t);\n\n\t// 2) Content-level data\n\tconst contentResult = loadContentData(pathname, searchParams);\n\tif (contentResult) {\n\t\t// For content pages, return directly if it's the only data\n\t\tif (Object.keys(allData).length === 0) {\n\t\t\treturn contentResult.data;\n\t\t}\n\t\tallData[contentResult.key] = contentResult.data;\n\t}\n\n\t// 3) Route-level data\n\tconst routeResult = await loadMatchedRouteData(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tsearchParams,\n\t);\n\tif (routeResult) {\n\t\tallData[routeResult.key] = routeResult.data;\n\t}\n\n\treturn determineReturnStructure(allData);\n}\n\nfunction processLayoutDataResult(\n\trawResult: unknown,\n\tpathname: string,\n\tlayoutKey: string,\n): unknown {\n\tif (rawResult instanceof Promise) {\n\t\treturn createLazyMarker(pathname, layoutKey);\n\t}\n\n\tif (\n\t\ttypeof rawResult === 'object' &&\n\t\trawResult !== null &&\n\t\t!Array.isArray(rawResult)\n\t) {\n\t\tconst entries = Object.entries(rawResult as Record<string, unknown>);\n\t\tconst hasPromises = entries.some(([_, v]) => v instanceof Promise);\n\n\t\tif (hasPromises) {\n\t\t\tconst flattened: Record<string, unknown> = { __flatten__: true };\n\t\t\tfor (const [k, value] of entries) {\n\t\t\t\tif (value instanceof Promise) {\n\t\t\t\t\tflattened[k] = createLazyMarker(pathname, k);\n\t\t\t\t} else {\n\t\t\t\t\tflattened[k] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn flattened;\n\t\t}\n\t}\n\n\treturn rawResult;\n}\n\nasync function processLayout(\n\tlayout: Doc,\n\tpathname: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<{ key: string; data: unknown } | null> {\n\tif (typeof layout?.path !== 'string') return null;\n\n\ttry {\n\t\t// Try to use bundled ssr export first (compiled binary)\n\t\tlet ssrExport = (layout as Doc)?.ssr as Doc | undefined;\n\n\t\t// Fallback to dynamic import if not bundled (dev mode)\n\t\tif (!ssrExport) {\n\t\t\tconst abs = join(clientDir, 'routes', String(layout.path));\n\t\t\tconst mod = await dynamicImport(abs, isWatchMode);\n\t\t\tssrExport = (mod as Doc)?.ssr as Doc | undefined;\n\t\t}\n\n\t\tconst dataFn = ssrExport?.data as\n\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t| undefined;\n\n\t\tif (typeof dataFn !== 'function') return null;\n\n\t\tconst pattern = String(layout.pattern || '/');\n\t\tconst layoutKey = `__layout:${pattern}`;\n\t\tconst rawResult = dataFn({\n\t\t\tpathname,\n\t\t\tparams: {},\n\t\t\tsearchParams,\n\t\t});\n\n\t\tconst processedData = processLayoutDataResult(\n\t\t\trawResult,\n\t\t\tpathname,\n\t\t\tlayoutKey,\n\t\t);\n\t\treturn { key: layoutKey, data: processedData };\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nasync function loadLayoutData(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<Record<string, unknown>> {\n\tconst allData: Record<string, unknown> = {};\n\n\ttry {\n\t\t// Check for bundled layouts first (compiled binary support)\n\t\tlet layouts = (globalThis as Record<string, unknown>).__REROUTE_LAYOUTS__ as\n\t\t\t| Doc[]\n\t\t\t| undefined;\n\n\t\t// Fallback to dynamic import (dev mode)\n\t\tif (!layouts) {\n\t\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\t\tconst m = await dynamicImport(routesPath, isWatchMode);\n\t\t\tlayouts = m?.layouts as Doc[] | undefined;\n\t\t}\n\n\t\tconst matchingLayouts = getMatchingLayouts(pathname, layouts);\n\n\t\tfor (const layout of matchingLayouts) {\n\t\t\tconst result = await processLayout(\n\t\t\t\tlayout,\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tisWatchMode,\n\t\t\t\tsearchParams,\n\t\t\t);\n\n\t\t\tif (result) {\n\t\t\t\tallData[result.key] = result.data;\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Routes unavailable\n\t}\n\n\treturn allData;\n}\n\nfunction processDataResult(\n\trawResult: unknown,\n\tpathname: string,\n\tkey: string,\n): unknown {\n\treturn processLayoutDataResult(rawResult, pathname, key);\n}\n\nfunction createLazyMarker(pathname: string, key: string): unknown {\n\treturn {\n\t\t__lazy__: true,\n\t\t__fetch__: `/__reroute_data?path=${encodeURIComponent(pathname)}&key=${encodeURIComponent(key)}`,\n\t};\n}\n",
@@ -41,6 +41,6 @@
41
41
  "export * from './src/server';\n"
42
42
  ],
43
43
  "mappings": "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",
44
- "debugId": "F5920F1F39D1978A64756E2164756E21",
44
+ "debugId": "9D7D5056E7491BFD64756E2164756E21",
45
45
  "names": []
46
46
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.37.2
2
+ * reroute-js v0.38.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>