reroute-js 0.45.10 → 0.45.12-beta.1

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 (189) hide show
  1. package/cli/bin.d.ts +1 -1
  2. package/cli/bin.js +231 -130
  3. package/cli/bin.js.map +10 -9
  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/gen.d.ts.map +1 -1
  13. package/cli/src/commands/index.d.ts +1 -1
  14. package/cli/src/commands/init.d.ts +1 -1
  15. package/cli/src/commands/lib/assets.d.ts +1 -1
  16. package/cli/src/commands/lib/bundler.d.ts +1 -1
  17. package/cli/src/commands/lib/command.d.ts +1 -1
  18. package/cli/src/commands/lib/env.d.ts +1 -1
  19. package/cli/src/commands/lib/index.d.ts +1 -1
  20. package/cli/src/commands/lib/log.d.ts +1 -1
  21. package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
  22. package/cli/src/commands/lib/markdown/index.d.ts +1 -1
  23. package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
  24. package/cli/src/commands/lib/production.d.ts +1 -1
  25. package/cli/src/commands/lib/server.d.ts +1 -1
  26. package/cli/src/commands/lib/streaming/analyzer.d.ts +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 +168 -83
  36. package/core/index.js.map +9 -8
  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/discovery.d.ts.map +1 -1
  51. package/core/src/og/index.d.ts +1 -1
  52. package/core/src/og/meta.d.ts +1 -1
  53. package/core/src/og/render.d.ts +1 -1
  54. package/core/src/og/types.d.ts +1 -1
  55. package/core/src/robots/discovery.d.ts +1 -1
  56. package/core/src/robots/generator.d.ts +1 -1
  57. package/core/src/robots/index.d.ts +1 -1
  58. package/core/src/robots/policies.d.ts +1 -1
  59. package/core/src/rss/discovery.d.ts +1 -1
  60. package/core/src/rss/generator.d.ts +1 -1
  61. package/core/src/rss/index.d.ts +1 -1
  62. package/core/src/sitemap/discovery.d.ts +1 -1
  63. package/core/src/sitemap/generator.d.ts +1 -1
  64. package/core/src/sitemap/index.d.ts +1 -1
  65. package/core/src/ssr/index.d.ts +1 -1
  66. package/core/src/ssr/lib/cache.d.ts +1 -1
  67. package/core/src/ssr/lib/cache.d.ts.map +1 -1
  68. package/core/src/ssr/lib/cleanup.d.ts +1 -1
  69. package/core/src/ssr/lib/collections.d.ts +1 -1
  70. package/core/src/ssr/lib/compression.d.ts +1 -1
  71. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  72. package/core/src/ssr/lib/compute/index.d.ts +1 -1
  73. package/core/src/ssr/lib/compute/index.d.ts.map +1 -1
  74. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  75. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  76. package/core/src/ssr/lib/data.d.ts +1 -1
  77. package/core/src/ssr/lib/data.d.ts.map +1 -1
  78. package/core/src/ssr/lib/html.d.ts +1 -1
  79. package/core/src/ssr/lib/imports.d.ts +1 -1
  80. package/core/src/ssr/lib/index.d.ts +2 -1
  81. package/core/src/ssr/lib/index.d.ts.map +1 -1
  82. package/core/src/ssr/lib/layouts.d.ts +1 -1
  83. package/core/src/ssr/lib/metadata.d.ts +1 -1
  84. package/core/src/ssr/lib/mime.d.ts +1 -1
  85. package/core/src/ssr/lib/modules.d.ts +1 -1
  86. package/core/src/ssr/lib/path.d.ts +1 -1
  87. package/core/src/ssr/lib/preload.d.ts +1 -1
  88. package/core/src/ssr/lib/route-match.d.ts +20 -0
  89. package/core/src/ssr/lib/route-match.d.ts.map +1 -0
  90. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  91. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  92. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  93. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  94. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  95. package/core/src/ssr/lib/seed.d.ts +1 -1
  96. package/core/src/ssr/lib/serialize.d.ts +1 -1
  97. package/core/src/ssr/lib/setup.d.ts +1 -1
  98. package/core/src/ssr/lib/styles.d.ts +1 -1
  99. package/core/src/ssr/lib/template.d.ts +1 -1
  100. package/core/src/ssr/lib/types.d.ts +1 -1
  101. package/core/src/ssr/render.d.ts +1 -1
  102. package/core/src/ssr/stream.d.ts +1 -1
  103. package/elysia/index.d.ts +1 -1
  104. package/elysia/index.js +210 -108
  105. package/elysia/index.js.map +11 -10
  106. package/elysia/src/index.d.ts +1 -1
  107. package/elysia/src/libs/assets.d.ts +1 -1
  108. package/elysia/src/libs/cache.d.ts +1 -1
  109. package/elysia/src/libs/caching.d.ts +1 -1
  110. package/elysia/src/libs/http.d.ts +1 -1
  111. package/elysia/src/libs/image.d.ts +1 -1
  112. package/elysia/src/libs/index.d.ts +1 -1
  113. package/elysia/src/libs/llms.d.ts +1 -1
  114. package/elysia/src/libs/response.d.ts +1 -1
  115. package/elysia/src/libs/serving.d.ts +1 -1
  116. package/elysia/src/plugin.d.ts +1 -1
  117. package/elysia/src/plugin.d.ts.map +1 -1
  118. package/elysia/src/routes/artifacts.d.ts +1 -1
  119. package/elysia/src/routes/content.d.ts +1 -1
  120. package/elysia/src/routes/image.d.ts +1 -1
  121. package/elysia/src/routes/index.d.ts +1 -1
  122. package/elysia/src/routes/internal.d.ts +1 -1
  123. package/elysia/src/routes/llms.d.ts +1 -1
  124. package/elysia/src/routes/og.d.ts +1 -1
  125. package/elysia/src/routes/og.d.ts.map +1 -1
  126. package/elysia/src/routes/redirects.d.ts +1 -1
  127. package/elysia/src/routes/robots.d.ts +1 -1
  128. package/elysia/src/routes/rss.d.ts +1 -1
  129. package/elysia/src/routes/search.d.ts +1 -1
  130. package/elysia/src/routes/sitemap.d.ts +1 -1
  131. package/elysia/src/routes/ssr.d.ts +1 -1
  132. package/elysia/src/routes/static.d.ts +1 -1
  133. package/elysia/src/types.d.ts +1 -1
  134. package/package.json +1 -1
  135. package/react/index.d.ts +1 -1
  136. package/react/index.js +7 -3
  137. package/react/index.js.map +2 -2
  138. package/react/src/components/ClientOnly.d.ts +1 -1
  139. package/react/src/components/ContentRoute.d.ts +1 -1
  140. package/react/src/components/Image.d.ts +1 -1
  141. package/react/src/components/LazyRoute.d.ts +1 -1
  142. package/react/src/components/Link.d.ts +1 -1
  143. package/react/src/components/Markdown.d.ts +1 -1
  144. package/react/src/components/Outlet.d.ts +1 -1
  145. package/react/src/components/index.d.ts +1 -1
  146. package/react/src/hooks/index.d.ts +1 -1
  147. package/react/src/hooks/useContent.d.ts +1 -1
  148. package/react/src/hooks/useData.d.ts +1 -1
  149. package/react/src/hooks/useFeed.d.ts +1 -1
  150. package/react/src/hooks/useLayoutData.d.ts +1 -1
  151. package/react/src/hooks/useLlms.d.ts +1 -1
  152. package/react/src/hooks/useNavigate.d.ts +1 -1
  153. package/react/src/hooks/useParams.d.ts +1 -1
  154. package/react/src/hooks/useRouter.d.ts +1 -1
  155. package/react/src/hooks/useSearch.d.ts +1 -1
  156. package/react/src/hooks/useSearchParams.d.ts +1 -1
  157. package/react/src/hooks/useToc.d.ts +1 -1
  158. package/react/src/index.d.ts +1 -1
  159. package/react/src/lib/collection.d.ts +1 -1
  160. package/react/src/lib/content.d.ts +1 -1
  161. package/react/src/lib/head.d.ts +1 -1
  162. package/react/src/lib/index.d.ts +1 -1
  163. package/react/src/lib/lazy-route.d.ts +1 -1
  164. package/react/src/lib/route-loader.d.ts +1 -1
  165. package/react/src/providers/ContentProvider.d.ts +1 -1
  166. package/react/src/providers/RerouteProvider.d.ts +1 -1
  167. package/react/src/providers/RouterProvider.d.ts +1 -1
  168. package/react/src/providers/index.d.ts +1 -1
  169. package/react/src/types/any.d.ts +1 -1
  170. package/react/src/types/index.d.ts +1 -1
  171. package/react/src/types/router.d.ts +1 -1
  172. package/telemetry/react.d.ts +1 -1
  173. package/telemetry/react.js +7 -3
  174. package/telemetry/react.js.map +2 -2
  175. package/telemetry/server.d.ts +1 -1
  176. package/telemetry/server.js +8 -5
  177. package/telemetry/server.js.map +6 -6
  178. package/telemetry/src/react/api.d.ts +1 -1
  179. package/telemetry/src/react/context.d.ts +1 -1
  180. package/telemetry/src/react/index.d.ts +1 -1
  181. package/telemetry/src/react/telemetry.d.ts +1 -1
  182. package/telemetry/src/server/context.d.ts +1 -1
  183. package/telemetry/src/server/headers/extractor.d.ts +1 -1
  184. package/telemetry/src/server/headers/index.d.ts +1 -1
  185. package/telemetry/src/server/headers/presets.d.ts +1 -1
  186. package/telemetry/src/server/index.d.ts +1 -1
  187. package/telemetry/src/server/instrumentation.d.ts +1 -1
  188. package/telemetry/src/server/plugin.d.ts +1 -1
  189. package/telemetry/src/server/sourcemap.d.ts +1 -1
package/core/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/core/src/bundler/hash.ts", "../../packages/core/src/config.ts", "../../packages/core/src/ssr/lib/path.ts", "../../packages/core/src/content/discovery.ts", "../../packages/core/src/content/metadata.ts", "../../packages/core/src/content/index.ts", "../../packages/telemetry/src/server/context.ts", "../../packages/telemetry/src/server/headers/index.ts", "../../packages/telemetry/src/server/instrumentation.ts", "../../packages/telemetry/src/server/sourcemap.ts", "../../packages/telemetry/src/server/plugin.ts", "../../packages/telemetry/src/server/index.ts", "../../packages/telemetry/server.ts", "../../packages/core/src/ssr/lib/cache.ts", "../../packages/core/src/ssr/lib/cleanup.ts", "../../packages/core/src/ssr/lib/imports.ts", "../../packages/core/src/ssr/lib/collections.ts", "../../packages/core/src/ssr/lib/mime.ts", "../../packages/core/src/ssr/lib/compression.ts", "../../packages/core/src/ssr/lib/compute/content.ts", "../../packages/core/src/ssr/lib/layouts.ts", "../../packages/core/src/ssr/lib/compute/layouts.ts", "../../packages/core/src/ssr/lib/compute/routes.ts", "../../packages/core/src/ssr/lib/compute/index.ts", "../../packages/core/src/ssr/lib/modules.ts", "../../packages/core/src/ssr/lib/seed.ts", "../../packages/core/src/ssr/lib/data.ts", "../../packages/core/src/ssr/lib/html.ts", "../../packages/core/src/og/discovery.ts", "../../packages/core/src/og/meta.ts", "../../packages/core/src/ssr/lib/metadata.ts", "../../packages/core/src/ssr/lib/preload.ts", "../../packages/core/src/ssr/lib/scripts/escape.ts", "../../packages/core/src/ssr/lib/scripts/collections.ts", "../../packages/core/src/ssr/lib/scripts/data.ts", "../../packages/core/src/ssr/lib/scripts/feeds.ts", "../../packages/core/src/ssr/lib/scripts/index.ts", "../../packages/core/src/ssr/lib/styles.ts", "../../packages/core/src/ssr/lib/setup.ts", "../../packages/core/src/ssr/lib/template.ts", "../../packages/core/src/ssr/lib/index.ts", "../../packages/core/src/ssr/lib/serialize.ts", "../../packages/core/src/ssr/render.ts", "../../packages/core/src/llms/formatter.ts", "../../packages/core/src/llms/extractor.ts", "../../packages/core/src/llms/index-generator.ts", "../../packages/core/src/llms/full-generator.ts", "../../packages/core/src/llms/index.ts", "../../packages/core/src/og/render.ts", "../../packages/core/src/og/index.ts", "../../packages/core/src/robots/discovery.ts", "../../packages/core/src/robots/generator.ts", "../../packages/core/src/robots/policies.ts", "../../packages/core/src/robots/index.ts", "../../packages/core/src/sitemap/discovery.ts", "../../packages/core/src/rss/discovery.ts", "../../packages/core/src/rss/generator.ts", "../../packages/core/src/rss/index.ts", "../../packages/core/src/sitemap/generator.ts", "../../packages/core/src/sitemap/index.ts", "../../packages/core/src/ssr/stream.ts", "../../packages/core/src/ssr/index.ts", "../../packages/core/src/index.ts", "../../packages/core/index.ts"],
3
+ "sources": ["../../packages/core/src/bundler/hash.ts", "../../packages/core/src/config.ts", "../../packages/core/src/ssr/lib/path.ts", "../../packages/core/src/content/discovery.ts", "../../packages/core/src/content/metadata.ts", "../../packages/core/src/content/index.ts", "../../packages/telemetry/src/server/context.ts", "../../packages/telemetry/src/server/headers/index.ts", "../../packages/telemetry/src/server/instrumentation.ts", "../../packages/telemetry/src/server/sourcemap.ts", "../../packages/telemetry/src/server/plugin.ts", "../../packages/telemetry/src/server/index.ts", "../../packages/telemetry/server.ts", "../../packages/core/src/ssr/lib/cache.ts", "../../packages/core/src/ssr/lib/cleanup.ts", "../../packages/core/src/ssr/lib/imports.ts", "../../packages/core/src/ssr/lib/collections.ts", "../../packages/core/src/ssr/lib/mime.ts", "../../packages/core/src/ssr/lib/compression.ts", "../../packages/core/src/ssr/lib/route-match.ts", "../../packages/core/src/ssr/lib/compute/content.ts", "../../packages/core/src/ssr/lib/layouts.ts", "../../packages/core/src/ssr/lib/compute/layouts.ts", "../../packages/core/src/ssr/lib/compute/routes.ts", "../../packages/core/src/ssr/lib/compute/index.ts", "../../packages/core/src/ssr/lib/modules.ts", "../../packages/core/src/ssr/lib/seed.ts", "../../packages/core/src/ssr/lib/data.ts", "../../packages/core/src/ssr/lib/html.ts", "../../packages/core/src/og/discovery.ts", "../../packages/core/src/og/meta.ts", "../../packages/core/src/ssr/lib/metadata.ts", "../../packages/core/src/ssr/lib/preload.ts", "../../packages/core/src/ssr/lib/scripts/escape.ts", "../../packages/core/src/ssr/lib/scripts/collections.ts", "../../packages/core/src/ssr/lib/scripts/data.ts", "../../packages/core/src/ssr/lib/scripts/feeds.ts", "../../packages/core/src/ssr/lib/scripts/index.ts", "../../packages/core/src/ssr/lib/styles.ts", "../../packages/core/src/ssr/lib/setup.ts", "../../packages/core/src/ssr/lib/template.ts", "../../packages/core/src/ssr/lib/index.ts", "../../packages/core/src/ssr/lib/serialize.ts", "../../packages/core/src/ssr/render.ts", "../../packages/core/src/llms/formatter.ts", "../../packages/core/src/llms/extractor.ts", "../../packages/core/src/llms/index-generator.ts", "../../packages/core/src/llms/full-generator.ts", "../../packages/core/src/llms/index.ts", "../../packages/core/src/og/render.ts", "../../packages/core/src/og/index.ts", "../../packages/core/src/robots/discovery.ts", "../../packages/core/src/robots/generator.ts", "../../packages/core/src/robots/policies.ts", "../../packages/core/src/robots/index.ts", "../../packages/core/src/sitemap/discovery.ts", "../../packages/core/src/rss/discovery.ts", "../../packages/core/src/rss/generator.ts", "../../packages/core/src/rss/index.ts", "../../packages/core/src/sitemap/generator.ts", "../../packages/core/src/sitemap/index.ts", "../../packages/core/src/ssr/stream.ts", "../../packages/core/src/ssr/index.ts", "../../packages/core/src/index.ts", "../../packages/core/index.ts"],
4
4
  "sourcesContent": [
5
5
  "export async function generateContentHash(content: string): Promise<string> {\n\tconst data = new TextEncoder().encode(content);\n\tconst buf = await crypto.subtle.digest('SHA-256', data);\n\tlet hex = '';\n\tfor (const b of new Uint8Array(buf)) hex += b.toString(16).padStart(2, '0');\n\treturn hex.slice(0, 8);\n}\n",
6
6
  "import { pathToFileURL } from 'node:url';\nimport type { ComponentType } from 'react';\n\n// biome-ignore lint/suspicious/noExplicitAny: The user document\ntype Doc = any;\ninterface StreamingOptions {\n\tenabled?: boolean;\n\tdefaultSkeleton?: ComponentType | string;\n\tdefaultLayoutSkeleton?: ComponentType | string;\n\ttimeout?: number;\n}\n\ninterface StaticOptions {\n\t/**\n\t * Patterns to ignore when serving static files\n\t * @default ['.DS_Store', '.git', '.env']\n\t */\n\tignorePatterns?: (string | RegExp)[];\n\t/**\n\t * Custom headers to add to static file responses\n\t */\n\theaders?: Record<string, string>;\n\t/**\n\t * Cache duration in seconds for static assets\n\t * @default 3600 (1 hour)\n\t */\n\tmaxAge?: number;\n\t/**\n\t * Cache-Control directive\n\t * @default 'public'\n\t */\n\tdirective?: string;\n}\n\ninterface ImageOptions {\n\t/**\n\t * Cache duration in seconds for optimized images\n\t * @default 31536000 (1 year)\n\t */\n\tmaxAge?: number;\n\t/**\n\t * Allowed external domains for image optimization\n\t * @default []\n\t */\n\tallowedDomains?: string[];\n\t/**\n\t * Maximum image width in pixels\n\t * @default 3840\n\t */\n\tmaxWidth?: number;\n\t/**\n\t * Maximum image height in pixels\n\t * @default 2160\n\t */\n\tmaxHeight?: number;\n}\n\n/**\n * Sitemap configuration options\n */\ninterface SitemapOptions {\n\t/** Enable sitemap generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for sitemap generation (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/**\n\t * Maximum URLs per sitemap file before pagination (default: 50000)\n\t * When exceeded, creates multiple sitemap files with a sitemap index\n\t * Set lower for testing (e.g., 10) to verify pagination works\n\t */\n\tmaxUrlsPerPage?: number;\n\n\t/**\n\t * Completely exclude specific routes from the sitemap\n\t * Routes listed here will not appear in the sitemap at all\n\t * @example ['/admin', '/api']\n\t */\n\texcludeRoutes?: string[];\n\n\t/**\n\t * Exclude specific routes from SSR data array discovery\n\t * Routes listed here will still appear in the sitemap as single entries,\n\t * but won't generate multiple URLs from arrays found in their SSR data\n\t * @example ['/download', '/pricing'] - these routes appear once, not per array item\n\t */\n\texcludeDiscovery?: string[];\n\n\t/**\n\t * Extract urls from ssr.data result (full control over data shape)\n\t * If provided, this takes precedence over automatic array discovery\n\t * @param data - Full ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns Array of items to process, or null/undefined to skip this route\n\t */\n\textractUrls?: (data: Doc, routePattern: string) => Doc[] | null | undefined;\n\n\t/**\n\t * Extract URL segment from ssr.data items\n\t * @param item - Data item from ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns URL segment to append to routePattern (e.g., '0.1.0' -> '/changelog/0.1.0'),\n\t * null/undefined to use default extraction, or false to skip this item entirely\n\t */\n\textractUrl?: (\n\t\titem: Doc,\n\t\troutePattern: string,\n\t) => string | null | undefined | false;\n\n\t/**\n\t * Extract lastmod date from ssr.data items\n\t * @param item - Data item from ssr.data result\n\t * @returns ISO date string or undefined\n\t */\n\textractLastmod?: (item: Doc) => string | undefined;\n\n\t/** Default changefreq for URLs */\n\tchangefreq?:\n\t\t| 'always'\n\t\t| 'hourly'\n\t\t| 'daily'\n\t\t| 'weekly'\n\t\t| 'monthly'\n\t\t| 'yearly'\n\t\t| 'never';\n\n\t/** Default priority for URLs */\n\tpriority?: number;\n}\n\n/**\n * RSS feed configuration options\n */\ninterface RSSOptions {\n\t/** Enable RSS feed generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for RSS feeds (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/** Feed title (e.g., 'My Blog') */\n\ttitle?: string;\n\n\t/** Feed description */\n\tdescription?: string;\n\n\t/** Maximum number of items per feed (default: 50) */\n\tlimit?: number;\n\n\t/** Feed format: 'rss' or 'atom' (default: 'rss') */\n\tformat?: 'rss' | 'atom';\n\n\t/**\n\t * Completely exclude specific routes from the RSS feed\n\t * Routes listed here will not appear in the feed at all\n\t * @example ['/admin', '/api']\n\t */\n\texcludeRoutes?: string[];\n\n\t/**\n\t * Exclude specific routes from SSR data array discovery\n\t * Routes listed here won't generate multiple feed items from arrays in their SSR data,\n\t * but may still generate a single feed item if appropriate\n\t * @example ['/download', '/pricing'] - won't generate items per array entry\n\t */\n\texcludeDiscovery?: string[];\n\n\t/**\n\t * Extract items from ssr.data result (full control over data shape)\n\t * If provided, this takes precedence over automatic array discovery\n\t * @param data - Full ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns Array of items to process, or null/undefined to skip this route\n\t */\n\textractUrls?: (data: Doc, routePattern: string) => Doc[] | null | undefined;\n\n\t/**\n\t * Extract URL segment from ssr.data items (same as sitemap)\n\t * @returns URL segment, null/undefined for default extraction, or false to skip item\n\t */\n\textractUrl?: (\n\t\titem: Doc,\n\t\troutePattern: string,\n\t) => string | null | undefined | false;\n\n\t/**\n\t * Extract publication date from items\n\t */\n\textractPubDate?: (item: Doc) => string | undefined;\n\n\t/**\n\t * Extract author from items\n\t */\n\textractAuthor?: (item: Doc) => string | undefined;\n\n\t/**\n\t * Extract content/body from items\n\t */\n\textractContent?: (item: Doc) => string | undefined;\n\n\t/**\n\t * Extract description/summary from items\n\t * Falls back to item.description or item.excerpt if not provided\n\t */\n\textractDescription?: (item: Doc) => string | undefined;\n}\n\n/**\n * Markdown configuration options\n */\ninterface MarkdownOptions {\n\t/**\n\t * Custom components to use when rendering markdown\n\t * Path to a module that exports a components object compatible with Streamdown\n\t * @example './src/client/lib/markdown-components'\n\t */\n\tcomponents?: string;\n\n\t/** Enable GitHub Flavored Markdown (default: true if remark-gfm is installed) */\n\tenableGfm?: boolean;\n\n\t/** Shiki theme for syntax highlighting (default: 'github-dark') */\n\ttheme?: string;\n}\n\n/**\n * Search index configuration options\n */\ninterface SearchOptions {\n\t/** Enable search index generation (default: false) */\n\tenabled?: boolean;\n\n\t/**\n\t * Collections to include in search index\n\t * @default [] - all collections will be indexed\n\t * @example ['blog', 'docs']\n\t */\n\tcollections?: string[];\n\n\t/**\n\t * Include full content text in search (increases index size significantly)\n\t * @default false - only index headings and metadata\n\t */\n\tincludeContent?: boolean;\n\n\t/**\n\t * Maximum content length to index per item (characters)\n\t * @default 5000 - prevents huge content from bloating index\n\t */\n\tcontentLimit?: number;\n\n\t/**\n\t * Fields to index from frontmatter metadata\n\t * @default ['title', 'description', 'excerpt', 'tags']\n\t */\n\tmetaFields?: string[];\n\n\t/**\n\t * Minimum heading level to index (1-6)\n\t * @default 1 - index all headings\n\t */\n\tminHeadingLevel?: number;\n\n\t/**\n\t * Maximum heading level to index (1-6)\n\t * @default 6 - index all headings\n\t */\n\tmaxHeadingLevel?: number;\n\n\t/**\n\t * Default page size for paginated results\n\t * @default 20\n\t */\n\tdefaultPageSize?: number;\n\n\t/**\n\t * Maximum allowed page size (prevents excessive results)\n\t * @default 100\n\t */\n\tmaxPageSize?: number;\n}\n\ninterface OGImageFont {\n\t/** Font family name (e.g., 'Inter') */\n\tname: string;\n\t/** Path to font file (TTF, OTF, or WOFF) relative to project root */\n\tpath: string;\n\t/** Font weight (e.g., 400, 700, 900) */\n\tweight?: number;\n\t/** Font style (default: 'normal') */\n\tstyle?:\n\t\t| 'normal'\n\t\t| 'italic'\n\t\t| 'bold'\n\t\t| 'bold-italic'\n\t\t| 'medium'\n\t\t| 'medium-italic'\n\t\t| 'semibold'\n\t\t| 'semibold-italic'\n\t\t| 'light'\n\t\t| 'light-italic'\n\t\t| 'thin'\n\t\t| 'thin-italic'\n\t\t| 'black'\n\t\t| 'black-italic'\n\t\t| 'extra-bold'\n\t\t| 'extra-bold-italic'\n\t\t| 'extra-light'\n\t\t| 'extra-light-italic'\n\t\t| 'extra-medium'\n\t\t| 'extra-medium-italic'\n\t\t| 'extra-semibold'\n\t\t| 'extra-semibold-italic'\n\t\t| 'extra-light'\n\t\t| 'extra-light-italic'\n\t\t| 'extra-medium'\n\t\t| 'extra-medium-italic'\n\t\t| 'extra-semibold'\n\t\t| 'extra-semibold-italic';\n\tdata?: ArrayBuffer | undefined;\n}\n\n/**\n * Open Graph and social meta tags configuration\n */\ninterface OGOptions {\n\t/**\n\t * Site name used for og:site_name meta tag\n\t * This appears as the website name in social media shares\n\t * @example 'My Awesome Site'\n\t */\n\tsiteName?: string;\n\n\t/**\n\t * Default site description used as fallback for og:description\n\t * when a page doesn't define its own description\n\t * @example 'A modern web application built with Reroute'\n\t */\n\tsiteDescription?: string;\n\n\t/**\n\t * Default Open Graph type for pages without explicit og:type\n\t * Common types: 'website', 'article', 'product', 'profile'\n\t * @default 'website'\n\t * @see https://ogp.me/#types\n\t */\n\tdefaultType?: string;\n\n\t/**\n\t * Twitter/X handle for twitter:site meta tag (with or without @)\n\t * @example '@mysite' or 'mysite'\n\t */\n\ttwitterSite?: string;\n\n\t/**\n\t * Twitter/X card type (default: 'summary_large_image')\n\t * @default 'summary_large_image'\n\t */\n\ttwitterCard?: 'summary' | 'summary_large_image' | 'app' | 'player';\n\n\t/**\n\t * Default locale for og:locale meta tag\n\t * @example 'en_US', 'en_GB', 'es_ES'\n\t */\n\tlocale?: string;\n}\n\n/**\n * OG Image generation configuration options\n */\ninterface OGImageOptions {\n\t/** Enable OG image generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for absolute OG image URLs (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/** Path to default template component or 'default' for built-in template */\n\tdefaultTemplate?: string;\n\n\t/** Image width in pixels (default: 1200) */\n\twidth?: number;\n\n\t/** Image height in pixels (default: 630) */\n\theight?: number;\n\n\t/** Cache duration in seconds (default: 3600 = 1 hour) */\n\tmaxAge?: number;\n\n\t/** Default avatar/logo URL (can be external or local path) */\n\tavatar?: string;\n\n\t/** Site name to display */\n\tsiteName?: string;\n\n\t/** Custom fonts to load for OG images */\n\tfonts?: OGImageFont[];\n}\n\n/**\n * LLMs content configuration options\n */\ninterface LLMsOptions {\n\t/** Enable LLM content features (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for absolute URLs in llms.txt index (e.g., 'https://example.com') */\n\tbaseUrl?: string;\n\n\t/** Enable .txt extension for routes (default: true when enabled) */\n\tenableTextExtension?: boolean;\n\n\t/** Enable .md extension for routes (default: true when enabled) */\n\tenableMarkdownExtension?: boolean;\n\n\t/** Enable Accept header content negotiation (default: true when enabled) */\n\tenableContentNegotiation?: boolean;\n\n\t/** Enable /llms.txt index generation (default: true when enabled) */\n\tenableIndex?: boolean;\n\n\t/** Enable /llms-full.txt generation (default: true when enabled) */\n\tenableFullContent?: boolean;\n\n\t/** Cache duration in seconds for LLM content (default: 86400 = 24 hours, or falls back to options.maxAge) */\n\tmaxAge?: number;\n\n\t/** Cache duration in seconds for llms-full.txt specifically (default: 604800 = 7 days, or falls back to llms.maxAge) */\n\tmaxAgeFull?: number;\n\n\t/** Maximum items in full content bundle (default: 10000) */\n\tmaxItems?: number;\n\n\t/** Maximum file size for full content in bytes (default: 50MB) */\n\tmaxSize?: number;\n\n\t/**\n\t * Exclude specific routes from LLM features\n\t * Supports strings (exact match or substring), RegExp, or custom functions\n\t * @example ['/admin', '/api', /^\\/private/, (path) => path.includes('draft')]\n\t */\n\texcludeRoutes?: (string | RegExp | ((pathname: string) => boolean))[];\n\n\t/**\n\t * Exclude collections from LLM features\n\t * @example ['drafts', 'private']\n\t */\n\texcludeCollections?: string[];\n\n\t/** Site name for index header */\n\tsiteName?: string;\n\n\t/** Site description for index header (brief context for LLMs) */\n\tsiteDescription?: string;\n\n\t/**\n\t * Per-collection customization for titles and descriptions\n\t * @example\n\t * ```ts\n\t * collections: {\n\t * blog: {\n\t * title: 'My Awesome Blog',\n\t * description: 'Insights and tutorials about web development'\n\t * },\n\t * docs: {\n\t * title: 'Documentation',\n\t * description: 'Complete API reference and guides'\n\t * }\n\t * }\n\t * ```\n\t */\n\tcollections?: Record<\n\t\tstring,\n\t\t{\n\t\t\t/** Custom title for this collection's LLMS index */\n\t\t\ttitle?: string;\n\t\t\t/** Custom description for this collection's LLMS index */\n\t\t\tdescription?: string;\n\t\t}\n\t>;\n}\n\n/**\n * Robots policy for specific user-agents\n */\ninterface RobotsPolicy {\n\t/** User-Agent (e.g., '*', 'Googlebot', 'GPTBot') */\n\tuserAgent: string;\n\n\t/** Paths to explicitly allow */\n\tallow?: string[];\n\n\t/** Paths to disallow */\n\tdisallow?: string[];\n\n\t/** Crawl delay for this user-agent (seconds) */\n\tcrawlDelay?: number;\n}\n\n/**\n * Robots.txt generation configuration options\n */\ninterface RobotsOptions {\n\t/** Enable robots.txt generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for sitemap reference (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/** Cache duration in seconds (default: 86400 = 24 hours) */\n\tmaxAge?: number;\n\n\t/** Custom policies per user-agent (default: permissive) */\n\tpolicies?: RobotsPolicy[];\n\n\t/** Auto-reference sitemap.xml if sitemap is enabled (default: true) */\n\treferenceSitemap?: boolean;\n\n\t/** Auto-disallow routes excluded from sitemap (default: true) */\n\tsitemapExclusion?: boolean;\n\n\t/** Auto-disallow old redirect source paths (default: true) */\n\tredirectExclusion?: boolean;\n\n\t/** Additional raw text appended to robots.txt */\n\tcustomRules?: string;\n\n\t/** Global crawl delay in seconds (optional) */\n\tcrawlDelay?: number;\n}\n\n/**\n * Telemetry proxy configuration for forwarding browser telemetry\n */\ninterface TelemetryProxyOptions {\n\t/**\n\t * Enable browser telemetry proxy (default: true when proxy config exists)\n\t * Creates endpoints to forward browser traces/metrics/logs to OTLP backend\n\t * This avoids CORS issues and ad blockers\n\t */\n\tenabled?: boolean;\n\n\t/**\n\t * Base path for proxy endpoints (default: '/__reroute_telemetry')\n\t * Creates:\n\t * - {pathname}/v1/traces\n\t * - {pathname}/v1/metrics\n\t * - {pathname}/v1/logs\n\t * - {pathname}/health\n\t */\n\tpathname?: string;\n\n\t/**\n\t * Enable verbose logging for proxy requests\n\t * @default false\n\t */\n\tverbose?: boolean;\n\n\t/**\n\t * Custom handler for proxy requests (advanced)\n\t * If provided, replaces default OTLP forwarding logic\n\t *\n\t * @example\n\t * ```ts\n\t * handler: async ({ body, endpoint, headers }) => {\n\t * // Custom logic: filter, transform, or route to different backends\n\t * await fetch(`https://custom-backend${endpoint}`, {\n\t * method: 'POST',\n\t * headers,\n\t * body: JSON.stringify(body),\n\t * });\n\t * return { status: 200 };\n\t * }\n\t * ```\n\t */\n\thandler?: (params: {\n\t\tbody: unknown;\n\t\tendpoint: string;\n\t\theaders: Record<string, string>;\n\t\totlpEndpoint: string;\n\t}) => Promise<{ status: number }>;\n}\n\n/**\n * Browser telemetry configuration options\n */\ninterface BrowserTelemetryOptions {\n\t/**\n\t * Enable browser telemetry\n\t * @default true\n\t */\n\tenabled?: boolean;\n\n\t/**\n\t * Service name for browser telemetry\n\t * @default 'reroute-app-browser'\n\t */\n\tserviceName?: string;\n\n\t/**\n\t * Service version\n\t * @default '1.0.0'\n\t */\n\tserviceVersion?: string;\n\n\t/**\n\t * OTLP endpoint URL (use relative URL for same-origin proxy)\n\t * @default '/__reroute_telemetry'\n\t */\n\totlpEndpoint?: string;\n\n\t/**\n\t * API key for authentication (optional)\n\t */\n\tapiKey?: string;\n\n\t/**\n\t * Deployment environment (e.g., 'production', 'staging', 'development')\n\t * @default 'development'\n\t */\n\tenvironment?: string;\n\n\t/**\n\t * Enable console.error capture\n\t * @default true\n\t */\n\tenableConsoleCapture?: boolean;\n\n\t/**\n\t * Ignore specific routes/URLs from breadcrumbs and network tracking\n\t *\n\t * Note: Functions are NOT supported for browser telemetry (closures cannot be serialized)\n\t * Use strings or regex patterns instead\n\t *\n\t * @example\n\t * ```ts\n\t * ignoreRoutes: [\n\t * '/bundles/', // String prefix match\n\t * /\\.(js|css|png)$/, // Regex pattern\n\t * /^\\/assets\\//, // Regex for path prefix\n\t * ]\n\t * ```\n\t */\n\tignoreRoutes?: Array<string | RegExp>;\n}\n\n/**\n * Telemetry configuration options for OpenTelemetry integration\n */\ninterface TelemetryOptions {\n\t/**\n\t * Enable server telemetry collection (default: false)\n\t * Must be explicitly enabled to start collecting traces, metrics, and logs\n\t */\n\tenabled?: boolean;\n\n\t/**\n\t * Browser telemetry configuration\n\t * Configure browser-side telemetry separately from server\n\t */\n\tbrowser?: BrowserTelemetryOptions;\n\n\t/**\n\t * Service name for server telemetry\n\t * @default 'reroute-app'\n\t */\n\tserviceName?: string;\n\n\t/**\n\t * Service version\n\t * @default process.env.npm_package_version || '1.0.0'\n\t */\n\tserviceVersion?: string;\n\n\t/**\n\t * OTLP endpoint URL\n\t * @default process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'http://localhost:4318'\n\t */\n\totlpEndpoint?: string;\n\n\t/**\n\t * API key for authentication (optional, only needed for SigNoz Cloud)\n\t */\n\tapiKey?: string;\n\n\t/**\n\t * Deployment environment (e.g., 'production', 'staging', 'development')\n\t * Used as a deployment.environment attribute on all telemetry\n\t * @default process.env.NODE_ENV || 'development'\n\t */\n\tenvironment?: string;\n\n\t/**\n\t * Metric export interval in milliseconds\n\t * @default 5000\n\t */\n\tmetricsInterval?: number;\n\n\t/**\n\t * Browser telemetry proxy configuration\n\t * When configured, creates endpoints to forward browser telemetry to OTLP backend\n\t * This avoids CORS issues and ad blockers\n\t */\n\tproxy?: TelemetryProxyOptions;\n\n\t/**\n\t * Ignore specific routes from telemetry collection\n\t * Supports flexible pattern matching:\n\t * - String: Matches if pathname contains the string (e.g., '/assets' matches '/assets/logo.png')\n\t * - RegExp: Tests pathname against regex (e.g., /\\.(js|css)$/ matches file extensions)\n\t * - Function: Custom logic with pathname and method (server-side only)\n\t *\n\t * Note: For browser telemetry, only strings and regex are supported (functions use closures that cannot be serialized)\n\t *\n\t * @example\n\t * ```ts\n\t * ignoreRoutes: [\n\t * '/health', // String match\n\t * /\\.(js|css|png|jpg|svg|ico|woff2?)$/, // Regex for static assets\n\t * (pathname) => pathname.startsWith('/assets/'), // Function (server-side only)\n\t * (pathname, method) => method === 'OPTIONS', // Access to HTTP method (server-side only)\n\t * ]\n\t * ```\n\t */\n\tignoreRoutes?: (\n\t\t| string\n\t\t| RegExp\n\t\t| ((pathname: string, method: string) => boolean)\n\t)[];\n\n\t/**\n\t * Enable distributed tracing (default: true)\n\t * Captures request flows across services with OpenTelemetry traces\n\t */\n\tenableTraces?: boolean;\n\n\t/**\n\t * Enable metrics collection (default: true)\n\t * Captures counters, gauges, and histograms for request volume, duration, etc.\n\t */\n\tenableMetrics?: boolean;\n\n\t/**\n\t * Enable structured logging (default: true)\n\t * Captures log events with structured attributes for better querying\n\t */\n\tenableLogs?: boolean;\n\n\t/**\n\t * Enable system metrics collection (default: true)\n\t * Captures CPU usage, memory consumption, and process metrics\n\t */\n\tenableSystemMetrics?: boolean;\n\n\t/**\n\t * Enable console.error and console.warn capture (default: true)\n\t * Automatically creates telemetry spans for console.error/warn calls\n\t * Useful for catching errors that are logged but not thrown\n\t */\n\tenableConsoleCapture?: boolean;\n\n\t/**\n\t * Sample rate for regular requests (default: 1.0)\n\t * Controls what percentage of requests to track (0.0 = 0%, 1.0 = 100%)\n\t *\n\t * Use sampling to reduce telemetry volume and costs on high-traffic applications:\n\t * - 1.0 = Track every request (100%)\n\t * - 0.5 = Track half of requests (50%)\n\t * - 0.1 = Track 10% of requests\n\t * - 0.01 = Track 1% of requests\n\t *\n\t * Sampling uses random selection, so a 10% sample of 100,000 requests\n\t * still provides ~10,000 data points for statistical analysis\n\t *\n\t * @example sampleRate: 0.1 // Track 10% of requests\n\t */\n\tsampleRate?: number;\n\n\t/**\n\t * Sample rate for error requests (default: 1.0)\n\t * Controls what percentage of errors to track (0.0 = 0%, 1.0 = 100%)\n\t *\n\t * Typically set higher than sampleRate since errors are more important to track.\n\t * Common pattern: low sample rate for normal requests, 100% for errors\n\t *\n\t * @example\n\t * ```ts\n\t * sampleRate: 0.1, // Track 10% of normal requests\n\t * errorSampleRate: 1.0, // Track 100% of errors\n\t * ```\n\t */\n\terrorSampleRate?: number;\n\n\t/**\n\t * Capture and map HTTP headers to custom telemetry attributes\n\t * Provides fine-grained control over header extraction and attribute naming\n\t *\n\t * Use presets for common scenarios or define custom mappings for any header\n\t *\n\t * @example\n\t * ```ts\n\t * import { RerouteHeaders, CloudflareHeaders } from 'reroute-js/telemetry/server';\n\t *\n\t * capture: [\n\t * ...RerouteHeaders.http(), // user-agent, referer, accept-language, etc.\n\t * ...CloudflareHeaders.geo(), // Cloudflare geolocation (IP, country, city, etc.)\n\t * { header: 'x-custom', as: 'custom.value' }, // Custom mapping\n\t * ]\n\t * ```\n\t */\n\tcapture?: Array<{ header: string; as: string }>;\n\n\t/**\n\t * Custom attributes to add to all spans and logs\n\t * Useful for tagging telemetry with environment, region, version, etc.\n\t *\n\t * @example\n\t * ```ts\n\t * customAttributes: {\n\t * environment: 'production',\n\t * region: 'us-east-1',\n\t * version: '1.2.3',\n\t * }\n\t * ```\n\t */\n\tcustomAttributes?: Record<string, string | number | boolean>;\n\n\t/**\n\t * Source map configuration for production error tracking\n\t * When enabled, error stack traces are mapped to original source files\n\t * instead of compiled/minified code\n\t *\n\t * @example\n\t * ```ts\n\t * sourcemaps: {\n\t * enabled: true, // Enable sourcemap resolution\n\t * }\n\t * ```\n\t */\n\tsourcemaps?: {\n\t\t/**\n\t\t * Enable sourcemap resolution\n\t\t * @default true in production, false in development\n\t\t */\n\t\tenabled?: boolean;\n\t};\n}\n\n/**\n * Redirect handler function that can dynamically determine destination\n * @param url - The original URL object\n * @returns The destination path/url or null to skip redirect\n */\ntype RedirectHandler = (url: URL) => string | null | Promise<string | null>;\n\n/**\n * Individual redirect rule\n */\ninterface RedirectRule {\n\t/** Enable or disable this redirect rule (default: true) */\n\tenabled?: boolean;\n\t/** Source path (string or regex pattern) */\n\tsource: string | RegExp;\n\t/** Destination path or handler function */\n\tdestination: string | RedirectHandler;\n\t/** HTTP status code (301 = permanent, 302 = temporary, 307 = preserve method, 308 = permanent preserve method) */\n\tstatus?: 301 | 302 | 307 | 308;\n\t/** Whether source is a regex pattern (auto-detected if source is RegExp) */\n\tregex?: boolean;\n}\n\n/**\n * Server-side caching configuration\n * Controls internal LRU cache for rendered HTML and data\n */\ninterface ServerOptions {\n\t/**\n\t * Enable server-side caching\n\t * @default true\n\t */\n\tcache?: boolean;\n\n\t/**\n\t * Cache duration in seconds for server-side cache\n\t * @default 3600 (1 hour)\n\t */\n\tmaxAge?: number;\n}\n\n/**\n * Browser caching configuration\n * Controls Cache-Control headers sent to browsers\n */\ninterface BrowserOptions {\n\t/**\n\t * Enable sending Cache-Control headers to browsers\n\t * Set to false when running behind a CDN like Cloudflare that handles caching\n\t * @default true\n\t */\n\tcache?: boolean;\n\n\t/**\n\t * Cache duration in seconds for browser caching\n\t * @default 300 (5 minutes)\n\t */\n\tmaxAge?: number;\n\n\t/**\n\t * Cache-Control directive ('public' | 'private')\n\t * @default 'public'\n\t */\n\tdirective?: 'public' | 'private';\n}\n\ninterface AppOptions {\n\t/** App component path (e.g., './src/client/App') */\n\tsrc?: string;\n\n\t/**\n\t * Base URL for the application (e.g., 'https://example.com')\n\t * Used for canonical URLs, social meta tags, and other absolute URLs\n\t */\n\tbaseUrl?: string;\n\n\t/** Custom HTML to inject into <head> */\n\thead?: string;\n\n\t/** HTML lang attribute @default 'en' */\n\tlang?: string;\n\n\t/** Root element ID @default 'root' */\n\tappId?: string;\n\n\t/** Enable automatic canonical URL generation @default true when baseUrl is set */\n\tautoCanonical?: boolean;\n\n\t/**\n\t * Suffix to append to all page titles (e.g., ' | My Site')\n\t * Applied automatically to page titles and og:title meta tags\n\t */\n\ttitleSuffix?: string;\n\n\t/** Minify HTML output */\n\tminify?: boolean;\n\n\t/** Enable compression for SSR responses @default true */\n\tcompression?: boolean;\n\n\t/** Enable detailed performance logging */\n\tdebug?: boolean;\n\n\t/** Cache duration for JS bundles in seconds @default 31536000 (1 year) */\n\tbundleMaxAge?: number;\n}\n\ninterface RerouteConfig {\n\tapp?: AppOptions;\n\tstatic?: StaticOptions;\n\tstreaming?: StreamingOptions;\n\tredirects?: RedirectRule[];\n\timage?: ImageOptions;\n\tog?: OGOptions;\n\togImage?: OGImageOptions;\n\tsitemap?: SitemapOptions;\n\trss?: RSSOptions;\n\tmarkdown?: MarkdownOptions;\n\tsearch?: SearchOptions;\n\tllms?: LLMsOptions;\n\trobots?: RobotsOptions;\n\ttelemetry?: TelemetryOptions;\n\n\t/**\n\t * Server-side caching configuration\n\t * Controls internal LRU cache for rendered HTML\n\t *\n\t * @example\n\t * ```ts\n\t * // Disable server caching\n\t * server: { cache: false }\n\t *\n\t * // Custom server cache TTL\n\t * server: { cache: true, maxAge: 3600 }\n\t * ```\n\t */\n\tserver?: ServerOptions;\n\n\t/**\n\t * Browser caching configuration\n\t * Controls Cache-Control headers sent to browsers\n\t *\n\t * @example\n\t * ```ts\n\t * // Disable browser caching (recommended when using Cloudflare)\n\t * browser: { cache: false }\n\t *\n\t * // Custom browser cache settings\n\t * browser: { cache: true, maxAge: 60, directive: 'private' }\n\t * ```\n\t */\n\tbrowser?: BrowserOptions;\n}\n\nfunction defineConfig(config: RerouteConfig): RerouteConfig {\n\treturn config;\n}\n\nasync function loadConfig(cwd: string): Promise<RerouteConfig> {\n\t// Check for bundled config first (compiled binary support)\n\tconst bundledConfig = (globalThis as Record<string, unknown>)\n\t\t.__REROUTE_CONFIG__ as RerouteConfig | undefined;\n\tif (bundledConfig) {\n\t\treturn bundledConfig;\n\t}\n\n\t// Fallback to filesystem read (dev mode)\n\tconst configPath = `${cwd}/reroute.config.ts`;\n\tconst configFile = Bun.file(configPath);\n\n\tif (!(await configFile.exists())) {\n\t\treturn {};\n\t}\n\n\ttry {\n\t\tconst mod = await import(\n\t\t\t`${pathToFileURL(configPath).href}?t=${Date.now()}`\n\t\t);\n\t\treturn (mod.default || mod) as RerouteConfig;\n\t} catch (error) {\n\t\tconsole.warn('[reroute] Failed to load reroute.config.ts:', error);\n\t\treturn {};\n\t}\n}\n\nexport {\n\tdefineConfig,\n\tloadConfig,\n\ttype AppOptions,\n\ttype BrowserOptions,\n\ttype ImageOptions,\n\ttype LLMsOptions,\n\ttype MarkdownOptions,\n\ttype OGOptions,\n\ttype OGImageOptions,\n\ttype OGImageFont,\n\ttype RedirectRule,\n\ttype RerouteConfig,\n\ttype RobotsOptions,\n\ttype RobotsPolicy,\n\ttype RSSOptions,\n\ttype SearchOptions,\n\ttype ServerOptions,\n\ttype SitemapOptions,\n\ttype StaticOptions,\n\ttype StreamingOptions,\n\ttype TelemetryOptions,\n\ttype TelemetryProxyOptions,\n\ttype BrowserTelemetryOptions,\n};\n",
@@ -15,22 +15,23 @@
15
15
  "import os from 'node:os';\nimport {\n\ttype Counter,\n\tcontext,\n\ttype Histogram,\n\tmetrics,\n\ttype Span,\n\tSpanStatusCode,\n\ttrace,\n\ttype UpDownCounter,\n} from '@opentelemetry/api';\nimport { logs, SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n\tBatchLogRecordProcessor,\n\tLoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport {\n\tMeterProvider,\n\tPeriodicExportingMetricReader,\n} from '@opentelemetry/sdk-metrics';\nimport {\n\tBatchSpanProcessor,\n\tNodeTracerProvider,\n} from '@opentelemetry/sdk-trace-node';\nimport {\n\tATTR_SERVICE_NAME,\n\tATTR_SERVICE_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_HOST_NAME } from '@opentelemetry/semantic-conventions/incubating';\nimport type { Elysia } from 'elysia';\nimport { loadConfig, type TelemetryOptions } from 'reroute-js/core';\nimport { getContextAttributesForTelemetry } from './context';\nimport { extractHeaders } from './headers/extractor';\nimport { extractTraceContext } from './instrumentation';\nimport { enhanceError } from './sourcemap';\n\n/**\n * Server telemetry options\n * Extends TelemetryOptions from config - all options can be set in reroute.config.ts\n * or passed directly here (direct options override config values)\n */\nexport interface ServerTelemetryOptions extends TelemetryOptions {}\n\n// Helper to extract error details\nfunction getErrorDetails(error: unknown): {\n\tname: string;\n\tmessage: string;\n\tstack: string;\n} {\n\tif (error instanceof Error) {\n\t\treturn {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tstack: error.stack || '',\n\t\t};\n\t}\n\n\tif (typeof error === 'object' && error !== null) {\n\t\tconst err = error as Record<string, unknown>;\n\t\treturn {\n\t\t\tname: String(err.name || err.code || 'UnknownError'),\n\t\t\tmessage: String(err.message || err.error || JSON.stringify(error)),\n\t\t\tstack: String(err.stack || ''),\n\t\t};\n\t}\n\n\treturn {\n\t\tname: 'UnknownError',\n\t\tmessage: String(error),\n\t\tstack: '',\n\t};\n}\n\n/**\n * Check if a route should be ignored based on ignore patterns\n * Supports strings, RegExp, and custom functions\n */\nfunction shouldIgnoreRoute(\n\tpatterns: (\n\t\t| string\n\t\t| RegExp\n\t\t| ((pathname: string, method: string) => boolean)\n\t)[],\n\tpathname: string,\n\tmethod: string,\n): boolean {\n\treturn patterns.some((pattern) => {\n\t\tif (typeof pattern === 'string') {\n\t\t\treturn pathname.includes(pattern);\n\t\t}\n\t\tif (pattern instanceof RegExp) {\n\t\t\treturn pattern.test(pathname);\n\t\t}\n\t\tif (typeof pattern === 'function') {\n\t\t\treturn pattern(pathname, method);\n\t\t}\n\t\treturn false;\n\t});\n}\n\n/**\n * Determine if a request should be sampled based on sample rate\n * Uses deterministic sampling based on trace ID for consistency\n * @param rate - Sample rate between 0.0 and 1.0\n * @param traceId - Trace ID for deterministic sampling (optional)\n * @returns true if request should be sampled\n */\nfunction shouldSample(rate: number, traceId?: string): boolean {\n\tif (rate >= 1.0) return true;\n\tif (rate <= 0.0) return false;\n\n\t// Use deterministic sampling if trace ID provided\n\tif (traceId) {\n\t\t// Convert first 8 chars of trace ID to number for consistent sampling\n\t\tconst hash = Number.parseInt(traceId.slice(0, 8), 16);\n\t\treturn hash % 100 < rate * 100;\n\t}\n\n\t// Fall back to random sampling\n\treturn Math.random() < rate;\n}\n\n/**\n * Server-side telemetry plugin for Elysia\n *\n * Automatically captures:\n * - HTTP requests and responses\n * - Errors with full stack traces\n * - System metrics (CPU, memory)\n * - Request/response sizes\n * - Active connections\n *\n * Configuration is loaded from reroute.config.ts automatically.\n * Direct options override config values.\n *\n * @example\n * ```typescript\n * import { Elysia } from 'elysia';\n * import { telemetry } from 'reroute-js/telemetry/server';\n *\n * new Elysia()\n * .use(telemetry({\n * serviceName: 'My App',\n * }))\n * .listen(3000);\n * ```\n */\nexport function telemetry(options: ServerTelemetryOptions = {}) {\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Telemetry initialization with config loading and feature toggles\n\treturn async (app: Elysia) => {\n\t\t// Load reroute.config.ts automatically\n\t\tconst cwd =\n\t\t\ttypeof process !== 'undefined' && typeof process.cwd === 'function'\n\t\t\t\t? process.cwd()\n\t\t\t\t: '/';\n\t\tconst config = await loadConfig(cwd);\n\n\t\t// Merge config with direct options (direct options take precedence)\n\t\tconst merged = {\n\t\t\t...config.telemetry,\n\t\t\t...options,\n\t\t};\n\n\t\t// Check if telemetry is enabled (default: false)\n\t\tconst TELEMETRY_ENABLED = merged.enabled ?? false;\n\t\tif (!TELEMETRY_ENABLED) {\n\t\t\tconsole.log(\n\t\t\t\t'[telemetry] Disabled - set enabled: true in config or options to enable',\n\t\t\t);\n\t\t\t// Return app unchanged when disabled\n\t\t\treturn app;\n\t\t}\n\n\t\t// Extract configuration values\n\t\tconst SERVICE_NAME = merged.serviceName || 'reroute-app';\n\t\tconst SERVICE_VERSION =\n\t\t\tmerged.serviceVersion || process.env.npm_package_version || '1.0.0';\n\t\tconst OTLP_ENDPOINT =\n\t\t\tmerged.otlpEndpoint ||\n\t\t\tprocess.env.OTEL_EXPORTER_OTLP_ENDPOINT ||\n\t\t\t'http://localhost:4318';\n\t\tconst METRICS_INTERVAL = merged.metricsInterval ?? 60000; // Default: 60s (was 5s, caused memory leaks)\n\n\t\t// Handle proxy configuration\n\t\tconst proxyConfig = merged.proxy;\n\t\tconst ENABLE_PROXY = proxyConfig?.enabled ?? !!proxyConfig;\n\t\tconst PROXY_PATHNAME = proxyConfig?.pathname ?? '/__reroute_telemetry';\n\t\tconst PROXY_VERBOSE = proxyConfig?.verbose ?? false;\n\t\tconst PROXY_HANDLER = proxyConfig?.handler;\n\n\t\t// Feature toggles (default: true when telemetry is enabled)\n\t\tconst ENABLE_TRACES = merged.enableTraces ?? true;\n\t\tconst ENABLE_METRICS = merged.enableMetrics ?? true;\n\t\tconst ENABLE_LOGS = merged.enableLogs ?? true;\n\t\tconst ENABLE_SYSTEM_METRICS = merged.enableSystemMetrics ?? true;\n\n\t\t// Sampling configuration\n\t\t// Default: Sample 20% of normal traffic, 100% of errors\n\t\t// This reduces telemetry volume by 80% while keeping all errors\n\t\tconst SAMPLE_RATE = merged.sampleRate ?? 0.2;\n\t\tconst ERROR_SAMPLE_RATE = merged.errorSampleRate ?? 1.0;\n\n\t\t// Route filtering\n\t\tconst IGNORE_ROUTES = merged.ignoreRoutes || [];\n\n\t\t// Header capture and custom attributes\n\t\tconst CAPTURE_MAPPINGS = merged.capture || [];\n\t\tconst CUSTOM_ATTRIBUTES = merged.customAttributes || {};\n\n\t\tconsole.log(`[telemetry] Initializing with endpoint: ${OTLP_ENDPOINT}`);\n\t\tconsole.log(\n\t\t\t`[telemetry] Features - Traces: ${ENABLE_TRACES}, Metrics: ${ENABLE_METRICS}, Logs: ${ENABLE_LOGS}`,\n\t\t);\n\t\tif (SAMPLE_RATE < 1.0) {\n\t\t\tconsole.log(\n\t\t\t\t`[telemetry] Sampling - Requests: ${SAMPLE_RATE * 100}%, Errors: ${ERROR_SAMPLE_RATE * 100}%`,\n\t\t\t);\n\t\t}\n\t\tif (ENABLE_PROXY) {\n\t\t\tconsole.log(\n\t\t\t\t`[telemetry] Browser telemetry proxy enabled at ${PROXY_PATHNAME}/*`,\n\t\t\t);\n\t\t}\n\n\t\t// Secure headers for API authentication (optional)\n\t\tconst otlpHeaders: Record<string, string> = {};\n\t\tif (merged.apiKey || process.env.SIGNOZ_API_KEY) {\n\t\t\totlpHeaders.Authorization = `Bearer ${merged.apiKey || process.env.SIGNOZ_API_KEY}`;\n\t\t}\n\n\t\t// Configure OTLP exporters with timeouts (conditionally based on feature toggles)\n\t\tconst traceExporter = ENABLE_TRACES\n\t\t\t? new OTLPTraceExporter({\n\t\t\t\t\turl: `${OTLP_ENDPOINT}/v1/traces`,\n\t\t\t\t\theaders:\n\t\t\t\t\t\tObject.keys(otlpHeaders).length > 0 ? otlpHeaders : undefined,\n\t\t\t\t\ttimeoutMillis: 5000, // 5 second timeout\n\t\t\t\t})\n\t\t\t: null;\n\n\t\tconst logExporter = ENABLE_LOGS\n\t\t\t? new OTLPLogExporter({\n\t\t\t\t\turl: `${OTLP_ENDPOINT}/v1/logs`,\n\t\t\t\t\theaders:\n\t\t\t\t\t\tObject.keys(otlpHeaders).length > 0 ? otlpHeaders : undefined,\n\t\t\t\t\ttimeoutMillis: 5000, // 5 second timeout\n\t\t\t\t})\n\t\t\t: null;\n\n\t\tconst metricExporter = ENABLE_METRICS\n\t\t\t? new OTLPMetricExporter({\n\t\t\t\t\turl: `${OTLP_ENDPOINT}/v1/metrics`,\n\t\t\t\t\theaders:\n\t\t\t\t\t\tObject.keys(otlpHeaders).length > 0 ? otlpHeaders : undefined,\n\t\t\t\t\ttimeoutMillis: 5000, // 5 second timeout\n\t\t\t\t})\n\t\t\t: null;\n\n\t\t// Create resource with service information\n\t\t// In Docker, prefer env var over os.hostname() (which returns container ID)\n\t\tconst HOSTNAME =\n\t\t\tprocess.env.OTEL_RESOURCE_ATTRIBUTES?.match(/host\\.name=([^,]+)/)?.[1] ||\n\t\t\tprocess.env.HOSTNAME ||\n\t\t\tos.hostname();\n\n\t\tconst resource = resourceFromAttributes({\n\t\t\t[ATTR_SERVICE_NAME]: SERVICE_NAME,\n\t\t\t[ATTR_SERVICE_VERSION]: SERVICE_VERSION,\n\t\t\t[ATTR_HOST_NAME]: HOSTNAME,\n\t\t});\n\n\t\t// Set up Traces with error handling (only if enabled)\n\t\tif (ENABLE_TRACES && traceExporter) {\n\t\t\ttry {\n\t\t\t\tconst tracerProvider = new NodeTracerProvider({\n\t\t\t\t\tresource,\n\t\t\t\t\t// Note: We use middleware-level sampling instead of SDK sampling\n\t\t\t\t\t// This allows us to preserve 100% of errors while sampling normal traffic\n\t\t\t\t\tspanProcessors: [new BatchSpanProcessor(traceExporter)],\n\t\t\t\t});\n\t\t\t\ttracerProvider.register();\n\n\t\t\t\tif (SAMPLE_RATE < 1.0 || ERROR_SAMPLE_RATE < 1.0) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[telemetry] Middleware sampling: ${SAMPLE_RATE * 100}% normal, ${ERROR_SAMPLE_RATE * 100}% errors`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to initialize tracer:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Set up Logs with error handling (only if enabled)\n\t\tlet logger: ReturnType<LoggerProvider['getLogger']> | null = null;\n\t\tif (ENABLE_LOGS && logExporter) {\n\t\t\ttry {\n\t\t\t\tconst loggerProvider = new LoggerProvider({\n\t\t\t\t\tresource,\n\t\t\t\t\tprocessors: [new BatchLogRecordProcessor(logExporter)],\n\t\t\t\t});\n\t\t\t\tlogs.setGlobalLoggerProvider(loggerProvider);\n\t\t\t\tlogger = loggerProvider.getLogger(SERVICE_NAME, SERVICE_VERSION);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to initialize logger:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Set up Metrics with error handling (only if enabled)\n\t\tlet meter: ReturnType<MeterProvider['getMeter']> | null = null;\n\t\tif (ENABLE_METRICS && metricExporter) {\n\t\t\ttry {\n\t\t\t\tconst meterProvider = new MeterProvider({\n\t\t\t\t\tresource,\n\t\t\t\t\treaders: [\n\t\t\t\t\t\tnew PeriodicExportingMetricReader({\n\t\t\t\t\t\t\texporter: metricExporter,\n\t\t\t\t\t\t\texportIntervalMillis: METRICS_INTERVAL,\n\t\t\t\t\t\t}),\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tmetrics.setGlobalMeterProvider(meterProvider);\n\t\t\t\tmeter = meterProvider.getMeter(SERVICE_NAME, SERVICE_VERSION);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to initialize meter:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Create HTTP metrics with null checks\n\t\tlet httpRequestCounter: Counter | null = null;\n\t\tlet httpRequestDuration: Histogram | null = null;\n\t\tlet httpErrorCounter: Counter | null = null;\n\t\tlet httpActiveRequests: UpDownCounter | null = null;\n\t\tlet activeConnections: UpDownCounter | null = null;\n\n\t\tif (meter) {\n\t\t\ttry {\n\t\t\t\thttpRequestCounter = meter.createCounter('http.server.request.count', {\n\t\t\t\t\tdescription: 'Total HTTP requests',\n\t\t\t\t\tunit: 'requests',\n\t\t\t\t});\n\n\t\t\t\thttpRequestDuration = meter.createHistogram(\n\t\t\t\t\t'http.server.request.duration',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'HTTP request duration',\n\t\t\t\t\t\tunit: 'milliseconds',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\thttpErrorCounter = meter.createCounter('http.server.error.count', {\n\t\t\t\t\tdescription: 'Total HTTP errors',\n\t\t\t\t\tunit: 'errors',\n\t\t\t\t});\n\n\t\t\t\thttpActiveRequests = meter.createUpDownCounter(\n\t\t\t\t\t'http.server.active_requests',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'Active HTTP requests',\n\t\t\t\t\t\tunit: 'requests',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tactiveConnections = meter.createUpDownCounter(\n\t\t\t\t\t'app.connections.active',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'Active connections',\n\t\t\t\t\t\tunit: 'connections',\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to create HTTP metrics:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Create system metrics (optional) with error handling\n\t\tif (ENABLE_SYSTEM_METRICS && meter) {\n\t\t\ttry {\n\t\t\t\t// Reuse HOSTNAME from resource (already computed above)\n\n\t\t\t\tconst memoryUsage = meter.createObservableGauge('app.memory.usage', {\n\t\t\t\t\tdescription: 'Process memory usage',\n\t\t\t\t\tunit: 'bytes',\n\t\t\t\t});\n\n\t\t\t\tmemoryUsage.addCallback((result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst usage = process.memoryUsage();\n\t\t\t\t\t\tresult.observe(usage.heapUsed, {\n\t\t\t\t\t\t\ttype: 'heap',\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresult.observe(usage.rss, { type: 'rss', 'host.name': HOSTNAME });\n\t\t\t\t\t\tresult.observe(usage.external, {\n\t\t\t\t\t\t\ttype: 'external',\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] Memory usage callback failed:', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst systemCpuUsage = meter.createObservableGauge(\n\t\t\t\t\t'system.cpu.utilization',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'System CPU utilization',\n\t\t\t\t\t\tunit: '1',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tsystemCpuUsage.addCallback((result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst cpus = os.cpus();\n\t\t\t\t\t\tlet totalIdle = 0;\n\t\t\t\t\t\tlet totalTick = 0;\n\n\t\t\t\t\t\tcpus.forEach((cpu) => {\n\t\t\t\t\t\t\tconst times = cpu.times;\n\t\t\t\t\t\t\ttotalIdle += times.idle;\n\t\t\t\t\t\t\ttotalTick +=\n\t\t\t\t\t\t\t\ttimes.user + times.nice + times.sys + times.idle + times.irq;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst usage = 1 - totalIdle / totalTick;\n\t\t\t\t\t\tresult.observe(usage, {\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] CPU usage callback failed:', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst systemMemoryUsage = meter.createObservableGauge(\n\t\t\t\t\t'system.memory.utilization',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'System memory utilization',\n\t\t\t\t\t\tunit: '1',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tsystemMemoryUsage.addCallback((result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst totalMem = os.totalmem();\n\t\t\t\t\t\tconst freeMem = os.freemem();\n\t\t\t\t\t\tconst usage = (totalMem - freeMem) / totalMem;\n\n\t\t\t\t\t\tresult.observe(usage, {\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] System memory callback failed:', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to create system metrics:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Graceful shutdown with error handling\n\t\tconst shutdown = async () => {\n\t\t\tconsole.log('[telemetry] Shutting down...');\n\t\t\ttry {\n\t\t\t\t// Note: We can't reference loggerProvider/meterProvider here since they're in try blocks\n\t\t\t\t// The providers will be cleaned up automatically\n\t\t\t\tawait logs.disable();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Shutdown error:', error);\n\t\t\t}\n\t\t};\n\n\t\tprocess.on('SIGTERM', async () => {\n\t\t\tawait shutdown();\n\t\t\tprocess.exit(0);\n\t\t});\n\n\t\t// Initialize tracer for manual span creation\n\t\tlet tracer: ReturnType<typeof trace.getTracer> | null = null;\n\t\tif (ENABLE_TRACES && traceExporter) {\n\t\t\ttracer = trace.getTracer(SERVICE_NAME, SERVICE_VERSION);\n\t\t}\n\n\t\t// Setup global console.error capture for automatic error telemetry\n\t\t// This captures errors that are caught and logged but not thrown\n\t\t// Default to false - console capture creates spans for every error which\n\t\t// can cause significant memory growth in apps with many logged errors\n\t\tconst ENABLE_CONSOLE_CAPTURE = merged.enableConsoleCapture ?? false;\n\t\tif (ENABLE_CONSOLE_CAPTURE && tracer) {\n\t\t\tconst originalError = console.error;\n\t\t\tconst originalWarn = console.warn;\n\n\t\t\t// Don't override if already captured (e.g., in tests)\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\tif (!(originalError as any).__telemetry_captured__) {\n\t\t\t\tconst errorTracer = trace.getTracer('console-error');\n\n\t\t\t\t/** biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Console error capture */\n\t\t\t\tconsole.error = (...args: unknown[]) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Create a span for this console.error\n\t\t\t\t\t\tconst span = errorTracer.startSpan('server.console.error');\n\n\t\t\t\t\t\t// Try to extract error information\n\t\t\t\t\t\tconst firstArg = args[0];\n\t\t\t\t\t\tlet errorMessage = args.map(String).join(' ');\n\t\t\t\t\t\tlet errorStack = '';\n\t\t\t\t\t\tlet errorType = 'ConsoleError';\n\n\t\t\t\t\t\tif (firstArg instanceof Error) {\n\t\t\t\t\t\t\terrorMessage = firstArg.message;\n\t\t\t\t\t\t\terrorStack = firstArg.stack || '';\n\t\t\t\t\t\t\terrorType = firstArg.name;\n\n\t\t\t\t\t\t\t// Enhance error with source maps if available\n\t\t\t\t\t\t\tconst rerouteDir = '.reroute';\n\t\t\t\t\t\t\tif (rerouteDir && firstArg.stack) {\n\t\t\t\t\t\t\t\tenhanceError(firstArg, { rerouteDir })\n\t\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\t\tconst enhancedError = firstArg as Error & {\n\t\t\t\t\t\t\t\t\t\t\tsourceMappedStack?: string;\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tif (enhancedError.sourceMappedStack) {\n\t\t\t\t\t\t\t\t\t\t\terrorStack = enhancedError.sourceMappedStack;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\t\t\t\t// Silently fail sourcemap enhancement\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'log.level': 'error',\n\t\t\t\t\t\t\t'log.message': errorMessage,\n\t\t\t\t\t\t\t'error.type': errorType,\n\t\t\t\t\t\t\t...(errorStack ? { 'error.stack': errorStack } : {}),\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t...getContextAttributesForTelemetry(),\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (firstArg instanceof Error) {\n\t\t\t\t\t\t\tspan.recordException(firstArg);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.end();\n\n\t\t\t\t\t\t// Also emit as log if logger is available\n\t\t\t\t\t\tif (logger) {\n\t\t\t\t\t\t\tlogger.emit({\n\t\t\t\t\t\t\t\tseverityNumber: SeverityNumber.ERROR,\n\t\t\t\t\t\t\t\tseverityText: 'ERROR',\n\t\t\t\t\t\t\t\tbody: errorMessage,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t'log.level': 'error',\n\t\t\t\t\t\t\t\t\t'error.type': errorType,\n\t\t\t\t\t\t\t\t\t...(errorStack ? { 'error.stack': errorStack } : {}),\n\t\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Silently fail - don't break console.error\n\t\t\t\t\t}\n\n\t\t\t\t\t// Call original console.error\n\t\t\t\t\toriginalError.apply(console, args);\n\t\t\t\t};\n\n\t\t\t\t// Mark as captured to prevent double-wrapping\n\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\t\t(console.error as any).__telemetry_captured__ = true;\n\n\t\t\t\tconsole.log('[telemetry] Console error capture enabled');\n\t\t\t}\n\n\t\t\t// Also capture console.warn for completeness\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\tif (!(originalWarn as any).__telemetry_captured__) {\n\t\t\t\tconst warnTracer = trace.getTracer('console-warn');\n\n\t\t\t\tconsole.warn = (...args: unknown[]) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst span = warnTracer.startSpan('server.console.warn');\n\t\t\t\t\t\tconst message = args.map(String).join(' ');\n\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'log.level': 'warn',\n\t\t\t\t\t\t\t'log.message': message,\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t...getContextAttributesForTelemetry(),\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tspan.end();\n\n\t\t\t\t\t\tif (logger) {\n\t\t\t\t\t\t\tlogger.emit({\n\t\t\t\t\t\t\t\tseverityNumber: SeverityNumber.WARN,\n\t\t\t\t\t\t\t\tseverityText: 'WARN',\n\t\t\t\t\t\t\t\tbody: message,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t'log.level': 'warn',\n\t\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Silently fail\n\t\t\t\t\t}\n\n\t\t\t\t\toriginalWarn.apply(console, args);\n\t\t\t\t};\n\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\t\t(console.warn as any).__telemetry_captured__ = true;\n\t\t\t}\n\t\t}\n\n\t\tapp = app\n\t\t\t// Track incoming requests\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Request tracking with filtering and sampling\n\t\t\t.onBeforeHandle(({ request, store }) => {\n\t\t\t\tconst startTime = Date.now();\n\t\t\t\tconst url = new URL(request.url);\n\t\t\t\tconst route = url.pathname;\n\t\t\t\tconst method = request.method;\n\n\t\t\t\t(store as Record<string, unknown>).startTime = startTime;\n\t\t\t\t(store as Record<string, unknown>).route = route;\n\n\t\t\t\t// Check if route should be ignored\n\t\t\t\tconst shouldIgnore =\n\t\t\t\t\tIGNORE_ROUTES.length > 0 &&\n\t\t\t\t\tshouldIgnoreRoute(IGNORE_ROUTES, route, method);\n\t\t\t\t(store as Record<string, unknown>).shouldIgnoreTelemetry = shouldIgnore;\n\n\t\t\t\t// Extract incoming trace context from browser (if present)\n\t\t\t\t// This allows browser spans to link to server spans\n\t\t\t\tconst incomingContext = extractTraceContext(request.headers);\n\n\t\t\t\t// Apply sampling (skip if ignored or not sampled)\n\t\t\t\t// Use trace ID for deterministic sampling if available\n\t\t\t\tconst traceId = incomingContext\n\t\t\t\t\t? (trace.getSpan(incomingContext)?.spanContext().traceId ?? undefined)\n\t\t\t\t\t: undefined;\n\n\t\t\t\tif (!shouldIgnore) {\n\t\t\t\t\tconst sampled = shouldSample(SAMPLE_RATE, traceId);\n\t\t\t\t\t(store as Record<string, unknown>).isSampled = sampled;\n\t\t\t\t\tif (!sampled) {\n\t\t\t\t\t\t(store as Record<string, unknown>).shouldIgnoreTelemetry = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Create manual span for request if traces enabled and not ignored\n\t\t\t\tif (\n\t\t\t\t\ttracer &&\n\t\t\t\t\t!(store as Record<string, unknown>).shouldIgnoreTelemetry\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Extract mapped headers early for span creation\n\t\t\t\t\t\tconst mappedHeaders =\n\t\t\t\t\t\t\tCAPTURE_MAPPINGS.length > 0\n\t\t\t\t\t\t\t\t? extractHeaders(request.headers, CAPTURE_MAPPINGS)\n\t\t\t\t\t\t\t\t: {};\n\n\t\t\t\t\t\t// Create span within extracted context (if available)\n\t\t\t\t\t\tconst createSpan = () => {\n\t\t\t\t\t\t\treturn tracer.startSpan(`${method} ${route}`, {\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t\t\t\t\t'host.address': url.host,\n\t\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t\t...mappedHeaders,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst span = incomingContext\n\t\t\t\t\t\t\t? context.with(incomingContext, createSpan)\n\t\t\t\t\t\t\t: createSpan();\n\n\t\t\t\t\t\t// Add session attributes if any\n\t\t\t\t\t\tconst sessionAttrs = getContextAttributesForTelemetry();\n\t\t\t\t\t\tif (Object.keys(sessionAttrs).length > 0) {\n\t\t\t\t\t\t\tspan.setAttributes(sessionAttrs);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t(store as Record<string, unknown>).telemetrySpan = span;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] Failed to create span:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Always track active connections for metrics accuracy\n\t\t\t\ttry {\n\t\t\t\t\tactiveConnections?.add(1);\n\t\t\t\t\thttpActiveRequests?.add(1, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\troute,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to track active requests:', error);\n\t\t\t\t}\n\n\t\t\t\t// Skip detailed telemetry if ignored or not sampled\n\t\t\t\tif ((store as Record<string, unknown>).shouldIgnoreTelemetry) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Capture mapped headers\n\t\t\t\tconst mappedHeaders =\n\t\t\t\t\tCAPTURE_MAPPINGS.length > 0\n\t\t\t\t\t\t? extractHeaders(request.headers, CAPTURE_MAPPINGS)\n\t\t\t\t\t\t: {};\n\n\t\t\t\t// Build attributes with custom attributes and captured headers\n\t\t\t\tconst baseAttributes = {\n\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t'http.route': route,\n\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t'host.address': url.host,\n\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t...mappedHeaders,\n\t\t\t\t};\n\n\t\t\t\t// Log incoming request - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\tlogger?.emit({\n\t\t\t\t\t\tseverityNumber: SeverityNumber.INFO,\n\t\t\t\t\t\tseverityText: 'INFO',\n\t\t\t\t\t\tbody: `→ ${method} ${route}`,\n\t\t\t\t\t\tattributes: baseAttributes,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to log incoming request:', error);\n\t\t\t\t}\n\n\t\t\t\t// Increment request counter - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\thttpRequestCounter?.add(1, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[telemetry] Failed to increment request counter:',\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Handle errors with full context\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Error handling with context\n\t\t\t.onError(async ({ error, request, set, store }) => {\n\t\t\t\tconst errorDetails = getErrorDetails(error);\n\t\t\t\tconst duration =\n\t\t\t\t\tDate.now() -\n\t\t\t\t\t(((store as Record<string, unknown>).startTime as number) ||\n\t\t\t\t\t\tDate.now());\n\n\t\t\t\t// Check if this error should be sampled (errors have their own sample rate)\n\t\t\t\tconst url = new URL(request.url);\n\t\t\t\tconst route = url.pathname;\n\t\t\t\tconst method = request.method;\n\t\t\t\tconst shouldIgnore =\n\t\t\t\t\tIGNORE_ROUTES.length > 0 &&\n\t\t\t\t\tshouldIgnoreRoute(IGNORE_ROUTES, route, method);\n\n\t\t\t\t// Apply error sampling (separate from regular request sampling)\n\t\t\t\t// Always sample errors if ERROR_SAMPLE_RATE = 1.0 (default)\n\t\t\t\tconst span = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t\t\t| Span\n\t\t\t\t\t| undefined;\n\t\t\t\tconst traceId = span?.spanContext().traceId;\n\t\t\t\tconst errorSampled = shouldSample(ERROR_SAMPLE_RATE, traceId);\n\t\t\t\tconst skipTelemetry = shouldIgnore || !errorSampled;\n\n\t\t\t\t// Record exception in manual span - wrapped in try/catch to prevent blocking\n\t\t\t\tif (!skipTelemetry) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst span = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t\t\t\t\t| Span\n\t\t\t\t\t\t\t| undefined;\n\t\t\t\t\t\tif (span) {\n\t\t\t\t\t\t\tconst errorObj =\n\t\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t\t? error\n\t\t\t\t\t\t\t\t\t: new Error(errorDetails.message);\n\n\t\t\t\t\t\t\t// Enhance error with source maps if available\n\t\t\t\t\t\t\tconst rerouteDir = '.reroute';\n\t\t\t\t\t\t\tif (rerouteDir && errorObj.stack) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait enhanceError(errorObj, { rerouteDir });\n\t\t\t\t\t\t\t\t} catch (smError) {\n\t\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\t\t'[telemetry] Sourcemap enhancement failed:',\n\t\t\t\t\t\t\t\t\t\tsmError,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tspan.recordException(errorObj);\n\t\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\t\t\t\t\tmessage: `${errorDetails.name}: ${errorDetails.message}`,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tconst enhancedError = errorObj as Error & {\n\t\t\t\t\t\t\t\tsourceMappedStack?: string;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst stackToUse =\n\t\t\t\t\t\t\t\tenhancedError.sourceMappedStack || errorDetails.stack;\n\n\t\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t'error.type': errorDetails.name,\n\t\t\t\t\t\t\t\t'error.message': errorDetails.message,\n\t\t\t\t\t\t\t\t'error.stack': errorDetails.stack,\n\t\t\t\t\t\t\t\t...(enhancedError.sourceMappedStack\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t'error.stack.decoded': enhancedError.sourceMappedStack,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t'http.response.status_code':\n\t\t\t\t\t\t\t\t\ttypeof set.status === 'number' ? set.status : 500,\n\t\t\t\t\t\t\t\t'http.duration_ms': duration,\n\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t...getContextAttributesForTelemetry(),\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tspan.addEvent('exception', {\n\t\t\t\t\t\t\t\t'exception.type': errorDetails.name,\n\t\t\t\t\t\t\t\t'exception.message': errorDetails.message,\n\t\t\t\t\t\t\t\t'exception.stacktrace': stackToUse,\n\t\t\t\t\t\t\t\t'exception.escaped': 'false',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t// End the span here since onAfterResponse won't handle errors\n\t\t\t\t\t\t\tspan.end();\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (spanError) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'[telemetry] Failed to record exception in span:',\n\t\t\t\t\t\t\tspanError,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Log error - wrapped in try/catch to prevent blocking\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlogger?.emit({\n\t\t\t\t\t\t\tseverityNumber: SeverityNumber.ERROR,\n\t\t\t\t\t\t\tseverityText: 'ERROR',\n\t\t\t\t\t\t\tbody: `${errorDetails.name}: ${errorDetails.message}`,\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t'error.type': errorDetails.name,\n\t\t\t\t\t\t\t\t'error.message': errorDetails.message,\n\t\t\t\t\t\t\t\t'error.stack': errorDetails.stack,\n\t\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t\t\t\t'http.response.status_code':\n\t\t\t\t\t\t\t\t\ttypeof set.status === 'number' ? set.status : 500,\n\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (logError) {\n\t\t\t\t\t\tconsole.error('[telemetry] Failed to log error:', logError);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Increment error counter - wrapped in try/catch to prevent blocking\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst statusCode =\n\t\t\t\t\t\t\ttypeof set.status === 'number' ? set.status : 500;\n\t\t\t\t\t\thttpErrorCounter?.add(1, {\n\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\t'error.type': errorDetails.name,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\thttpRequestDuration?.record(duration, {\n\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (metricsError) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'[telemetry] Failed to record error metrics:',\n\t\t\t\t\t\t\tmetricsError,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Record response metrics\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response metrics recording\n\t\t\t.onAfterResponse(({ request, set, store }) => {\n\t\t\t\tconst url = new URL(request.url);\n\t\t\t\tconst pathname = url.pathname;\n\t\t\t\tconst method = request.method;\n\t\t\t\tconst statusCode = typeof set.status === 'number' ? set.status : 200;\n\t\t\t\tconst duration =\n\t\t\t\t\tDate.now() -\n\t\t\t\t\t(((store as Record<string, unknown>).startTime as number) ||\n\t\t\t\t\t\tDate.now());\n\t\t\t\tconst route =\n\t\t\t\t\t((store as Record<string, unknown>).route as string) || pathname;\n\n\t\t\t\t// Always decrement active connections for metrics accuracy\n\t\t\t\ttry {\n\t\t\t\t\tactiveConnections?.add(-1);\n\t\t\t\t\thttpActiveRequests?.add(-1, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\troute,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[telemetry] Failed to decrement active requests:',\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Skip detailed telemetry if ignored or not sampled (set in onBeforeHandle)\n\t\t\t\tconst shouldIgnoreTelemetry = (store as Record<string, unknown>)\n\t\t\t\t\t.shouldIgnoreTelemetry;\n\t\t\t\tif (shouldIgnoreTelemetry) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// End manual span with final attributes\n\t\t\t\ttry {\n\t\t\t\t\tconst span = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t\t\t\t| Span\n\t\t\t\t\t\t| undefined;\n\t\t\t\t\tif (span) {\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\t'http.duration_ms': duration,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (statusCode >= 400) {\n\t\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\t\t\t\t\tmessage: `HTTP ${statusCode}`,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tspan.setAttribute('error', true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.end();\n\t\t\t\t\t}\n\t\t\t\t} catch (spanError) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to end span:', spanError);\n\t\t\t\t}\n\n\t\t\t\t// Log response - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\tconst isError = statusCode >= 400;\n\t\t\t\t\tlogger?.emit({\n\t\t\t\t\t\tseverityNumber: isError\n\t\t\t\t\t\t\t? SeverityNumber.ERROR\n\t\t\t\t\t\t\t: SeverityNumber.INFO,\n\t\t\t\t\t\tseverityText: isError ? 'ERROR' : 'INFO',\n\t\t\t\t\t\tbody: `← ${method} ${route} → ${statusCode} (${duration}ms)`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\t'http.duration_ms': duration,\n\t\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t\t\t'host.address': url.host,\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} catch (logError) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to log response:', logError);\n\t\t\t\t}\n\n\t\t\t\t// Record metrics - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\thttpRequestDuration?.record(duration, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t});\n\t\t\t\t} catch (metricsError) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[telemetry] Failed to record request duration:',\n\t\t\t\t\t\tmetricsError,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Optionally add error inspector endpoint for source-mapped stack traces\n\t\tif (merged.sourcemaps?.enabled !== false) {\n\t\t\tconst rerouteDir = '.reroute';\n\n\t\t\tapp.post('/__reroute_telemetry/inspect', async ({ body }) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst { stack } = body as { stack?: string };\n\t\t\t\t\tif (!stack) {\n\t\t\t\t\t\treturn { error: 'Missing stack trace' };\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { resolveStackTrace } = await import('./sourcemap');\n\t\t\t\t\tconst result = await resolveStackTrace(stack, { rerouteDir });\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\toriginal: result.original,\n\t\t\t\t\t\tmapped: result.mapped,\n\t\t\t\t\t\tframes: result.frames,\n\t\t\t\t\t};\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[telemetry] Error inspection failed:', error);\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: error instanceof Error ? error.message : 'Unknown error',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Optionally add browser telemetry proxy\n\t\tif (ENABLE_PROXY) {\n\t\t\tconst API_KEY = merged.apiKey || process.env.SIGNOZ_API_KEY;\n\n\t\t\t// Proxy handler function\n\t\t\tconst handleProxy = async (\n\t\t\t\tendpoint: string,\n\t\t\t\trequestBody: unknown,\n\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Proxy forwarding with error handling\n\t\t\t): Promise<{ status: number }> => {\n\t\t\t\tconst headers: Record<string, string> = {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t};\n\n\t\t\t\tif (API_KEY) {\n\t\t\t\t\theaders.Authorization = `Bearer ${API_KEY}`;\n\t\t\t\t}\n\n\t\t\t\t// Use custom handler if provided\n\t\t\t\tif (PROXY_HANDLER) {\n\t\t\t\t\treturn await PROXY_HANDLER({\n\t\t\t\t\t\tbody: requestBody,\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\theaders,\n\t\t\t\t\t\totlpEndpoint: OTLP_ENDPOINT,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Default handler: forward to OTLP endpoint\n\t\t\t\ttry {\n\t\t\t\t\tconst controller = new AbortController();\n\t\t\t\t\tconst timeoutId = setTimeout(() => controller.abort(), 5000);\n\n\t\t\t\t\tconst response = await fetch(`${OTLP_ENDPOINT}${endpoint}`, {\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\theaders,\n\t\t\t\t\t\tbody: JSON.stringify(requestBody),\n\t\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t\t});\n\n\t\t\t\t\tclearTimeout(timeoutId);\n\n\t\t\t\t\tif (PROXY_VERBOSE) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[telemetry-proxy]${endpoint} forwarded: ${response.status}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!response.ok && PROXY_VERBOSE) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t`[telemetry-proxy] OTLP error: ${response.status} ${response.statusText}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn { status: 200 };\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (PROXY_VERBOSE) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t`[telemetry-proxy] Failed to forward${endpoint}:`,\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn { status: 200 };\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tapp\n\t\t\t\t.post(\n\t\t\t\t\t`${PROXY_PATHNAME}/v1/traces`,\n\t\t\t\t\tasync function forwardBrowserTraces({ body }) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await handleProxy('/v1/traces', body);\n\t\t\t\t\t\t\treturn new Response(null, { status: result.status });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[telemetry-proxy] Handler error:', error);\n\t\t\t\t\t\t\treturn new Response(null, { status: 200 });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.post(\n\t\t\t\t\t`${PROXY_PATHNAME}/v1/metrics`,\n\t\t\t\t\tasync function forwardBrowserMetrics({ body }) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await handleProxy('/v1/metrics', body);\n\t\t\t\t\t\t\treturn new Response(null, { status: result.status });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[telemetry-proxy] Handler error:', error);\n\t\t\t\t\t\t\treturn new Response(null, { status: 200 });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.post(\n\t\t\t\t\t`${PROXY_PATHNAME}/v1/logs`,\n\t\t\t\t\tasync function forwardBrowserLogs({ body }) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await handleProxy('/v1/logs', body);\n\t\t\t\t\t\t\treturn new Response(null, { status: result.status });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[telemetry-proxy] Handler error:', error);\n\t\t\t\t\t\t\treturn new Response(null, { status: 200 });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.get(`${PROXY_PATHNAME}/health`, () => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: 'ok',\n\t\t\t\t\t\totlpEndpoint: OTLP_ENDPOINT,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t}\n\n\t\treturn app;\n\t};\n}\n",
16
16
  "export * from './context';\nexport * from './headers';\nexport * from './instrumentation';\nexport * from './plugin';\nexport * from './sourcemap';\n",
17
17
  "export * from './src/server';\n",
18
- "import type { CacheEntry } from './types';\n\n/**\n * Simple in-memory cache for SSR data.\n * Thread-safe for single-process usage.\n */\nclass SSRDataCache {\n\tprivate cache: Map<string, CacheEntry<unknown>> = new Map();\n\tprivate static cleanupInterval: NodeJS.Timeout | null = null;\n\n\tconstructor() {\n\t\t// Run cleanup every 60 seconds to remove expired entries\n\t\tif (!SSRDataCache.cleanupInterval) {\n\t\t\tSSRDataCache.cleanupInterval = setInterval(() => {\n\t\t\t\tthis.cleanup();\n\t\t\t}, 60_000);\n\t\t}\n\t}\n\n\t/**\n\t * Get cached data if available and not expired\n\t */\n\tget<T>(key: string): T | undefined {\n\t\tconst entry = this.cache.get(key);\n\t\tif (!entry) return undefined;\n\n\t\tconst age = Date.now() - entry.timestamp;\n\t\tif (age > entry.maxAge) {\n\t\t\tthis.cache.delete(key);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn entry.data as T;\n\t}\n\n\t/**\n\t * Set data in cache with maxAge (in milliseconds)\n\t */\n\tset<T>(key: string, data: T, maxAge: number): void {\n\t\tif (maxAge <= 0) return;\n\n\t\tthis.cache.set(key, {\n\t\t\tdata,\n\t\t\ttimestamp: Date.now(),\n\t\t\tmaxAge,\n\t\t});\n\t}\n\n\t/**\n\t * Check if key exists and is not expired\n\t */\n\thas(key: string): boolean {\n\t\treturn this.get(key) !== undefined;\n\t}\n\n\t/**\n\t * Clear all cached data\n\t */\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n\n\t/**\n\t * Remove expired entries\n\t */\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (now - entry.timestamp > entry.maxAge) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get cache stats (useful for debugging)\n\t */\n\tstats(): { size: number; keys: string[] } {\n\t\treturn {\n\t\t\tsize: this.cache.size,\n\t\t\tkeys: Array.from(this.cache.keys()),\n\t\t};\n\t}\n\n\t/**\n\t * Cleanup interval on shutdown\n\t */\n\tdestroy(): void {\n\t\tif (SSRDataCache.cleanupInterval) {\n\t\t\tclearInterval(SSRDataCache.cleanupInterval);\n\t\t\tSSRDataCache.cleanupInterval = null;\n\t\t}\n\t\tthis.clear();\n\t}\n}\n\n/**\n * Simple LRU Cache implementation with TTL support.\n * Used for caching responses and data across requests.\n * Automatically evicts expired entries to prevent memory leaks.\n */\nexport class LRUCache<K, V> {\n\tprivate cache: Map<K, V> = new Map();\n\tprivate maxSize: number;\n\tprivate cleanupInterval: NodeJS.Timeout | null = null;\n\n\tconstructor(maxSize = 100) {\n\t\tthis.maxSize = maxSize;\n\n\t\t// Periodic cleanup of expired entries (every 60 seconds)\n\t\tthis.cleanupInterval = setInterval(() => {\n\t\t\tthis.cleanup();\n\t\t}, 60_000);\n\n\t\t// Prevent interval from keeping process alive\n\t\tif (this.cleanupInterval.unref) {\n\t\t\tthis.cleanupInterval.unref();\n\t\t}\n\t}\n\n\tget(key: K): V | undefined {\n\t\tconst value = this.cache.get(key);\n\t\tif (value !== undefined) {\n\t\t\t// Check if entry has expired (if it has `exp` field)\n\t\t\tconst entry = value as { exp?: number };\n\t\t\tif (entry.exp !== undefined && entry.exp <= Date.now()) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Move to end (most recently used)\n\t\t\tthis.cache.delete(key);\n\t\t\tthis.cache.set(key, value);\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Remove all expired entries\n\t */\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, value] of this.cache.entries()) {\n\t\t\tconst entry = value as { exp?: number };\n\t\t\tif (entry.exp !== undefined && entry.exp <= now) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tset(key: K, value: V): void {\n\t\tthis.cache.delete(key);\n\n\t\tif (this.cache.size >= this.maxSize) {\n\t\t\tconst firstKey = this.cache.keys().next().value;\n\t\t\tthis.cache.delete(firstKey as K);\n\t\t}\n\n\t\tthis.cache.set(key, value);\n\t}\n\n\thas(key: K): boolean {\n\t\treturn this.cache.has(key);\n\t}\n\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n\n\t/**\n\t * Stop cleanup interval and clear cache (call on shutdown)\n\t */\n\tdestroy(): void {\n\t\tif (this.cleanupInterval) {\n\t\t\tclearInterval(this.cleanupInterval);\n\t\t\tthis.cleanupInterval = null;\n\t\t}\n\t\tthis.clear();\n\t}\n}\n\n/**\n * TTL-based cache with automatic expiration and size limits.\n * Use this for content caching where entries should expire after a set time.\n */\nexport class TTLCache<K, V> {\n\tprivate cache: Map<K, { value: V; exp: number; size?: number }> = new Map();\n\tprivate maxSize: number;\n\tprivate defaultTtlMs: number;\n\tprivate cleanupInterval: NodeJS.Timeout | null = null;\n\tprivate maxMemoryBytes: number | null = null;\n\tprivate currentMemoryBytes = 0;\n\n\t/**\n\t * @param maxSize Maximum number of entries (default: 100)\n\t * @param defaultTtlMs Default TTL in milliseconds (default: 300000 = 5 min)\n\t * @param cleanupIntervalMs How often to run cleanup (default: 60000 = 1 min)\n\t * @param maxMemoryMB Optional maximum memory in MB (e.g., 1000 = 1GB)\n\t */\n\tconstructor(\n\t\tmaxSize = 100,\n\t\tdefaultTtlMs = 300_000,\n\t\tcleanupIntervalMs = 60_000,\n\t\tmaxMemoryMB?: number,\n\t) {\n\t\tthis.maxSize = maxSize;\n\t\tthis.defaultTtlMs = defaultTtlMs;\n\t\tthis.maxMemoryBytes = maxMemoryMB ? maxMemoryMB * 1024 * 1024 : null;\n\n\t\t// Periodic cleanup of expired entries\n\t\tthis.cleanupInterval = setInterval(() => {\n\t\t\tthis.cleanup();\n\t\t}, cleanupIntervalMs);\n\n\t\t// Prevent interval from keeping process alive\n\t\tif (this.cleanupInterval.unref) {\n\t\t\tthis.cleanupInterval.unref();\n\t\t}\n\t}\n\n\t/**\n\t * Get value if exists and not expired\n\t */\n\tget(key: K): V | undefined {\n\t\tconst entry = this.cache.get(key);\n\t\tif (!entry) return undefined;\n\n\t\tif (entry.exp <= Date.now()) {\n\t\t\tthis.cache.delete(key);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn entry.value;\n\t}\n\n\t/**\n\t * Estimate size of value in bytes\n\t */\n\tprivate estimateSize(value: V): number {\n\t\tif (value instanceof Buffer || value instanceof ArrayBuffer) {\n\t\t\treturn value.byteLength;\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\treturn value.length * 2; // UTF-16 encoding\n\t\t}\n\t\t// For objects, use rough estimate\n\t\ttry {\n\t\t\treturn JSON.stringify(value).length * 2;\n\t\t} catch {\n\t\t\treturn 1024; // Default estimate\n\t\t}\n\t}\n\n\t/**\n\t * Set value with optional custom TTL\n\t * @param key Cache key\n\t * @param value Value to cache\n\t * @param ttlMs Optional TTL in milliseconds (uses default if not provided)\n\t */\n\tset(key: K, value: V, ttlMs?: number): void {\n\t\t// Calculate size of new entry\n\t\tconst entrySize = this.estimateSize(value);\n\n\t\t// Remove existing entry and update memory tracking\n\t\tconst existing = this.cache.get(key);\n\t\tif (existing) {\n\t\t\tthis.cache.delete(key);\n\t\t\tif (existing.size) {\n\t\t\t\tthis.currentMemoryBytes -= existing.size;\n\t\t\t}\n\t\t}\n\n\t\t// Evict entries if over memory limit\n\t\tif (\n\t\t\tthis.maxMemoryBytes &&\n\t\t\tthis.currentMemoryBytes + entrySize > this.maxMemoryBytes\n\t\t) {\n\t\t\tthis.evictForMemory(entrySize);\n\t\t}\n\n\t\t// Evict oldest entry if at capacity\n\t\tif (this.cache.size >= this.maxSize) {\n\t\t\tconst firstKey = this.cache.keys().next().value;\n\t\t\tif (firstKey !== undefined) {\n\t\t\t\tconst evicted = this.cache.get(firstKey);\n\t\t\t\tthis.cache.delete(firstKey);\n\t\t\t\tif (evicted?.size) {\n\t\t\t\t\tthis.currentMemoryBytes -= evicted.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.cache.set(key, {\n\t\t\tvalue,\n\t\t\texp: Date.now() + (ttlMs ?? this.defaultTtlMs),\n\t\t\tsize: entrySize,\n\t\t});\n\t\tthis.currentMemoryBytes += entrySize;\n\t}\n\n\t/**\n\t * Check if key exists and is not expired\n\t */\n\thas(key: K): boolean {\n\t\treturn this.get(key) !== undefined;\n\t}\n\n\t/**\n\t * Evict entries to free up memory\n\t */\n\tprivate evictForMemory(neededBytes: number): void {\n\t\tif (!this.maxMemoryBytes) return;\n\t\tconst targetBytes = this.maxMemoryBytes * 0.7; // Evict down to 70%\n\t\tconst keys = Array.from(this.cache.keys());\n\n\t\tfor (const key of keys) {\n\t\t\tif (this.currentMemoryBytes + neededBytes <= targetBytes) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst entry = this.cache.get(key);\n\t\t\tif (entry) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\tif (entry.size) {\n\t\t\t\t\tthis.currentMemoryBytes -= entry.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Delete a specific key\n\t */\n\tdelete(key: K): boolean {\n\t\tconst entry = this.cache.get(key);\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted && entry?.size) {\n\t\t\tthis.currentMemoryBytes -= entry.size;\n\t\t}\n\t\treturn deleted;\n\t}\n\n\t/**\n\t * Clear all entries\n\t */\n\tclear(): void {\n\t\tthis.cache.clear();\n\t\tthis.currentMemoryBytes = 0;\n\t}\n\n\t/**\n\t * Get current cache size (including potentially expired entries)\n\t */\n\tget size(): number {\n\t\treturn this.cache.size;\n\t}\n\n\t/**\n\t * Get cache statistics including memory usage\n\t */\n\tstats(): {\n\t\tentries: number;\n\t\tmemoryMB: number;\n\t\tmaxMemoryMB: number | null;\n\t\tmemoryUsagePercent: number | null;\n\t} {\n\t\tconst memoryMB = this.currentMemoryBytes / (1024 * 1024);\n\t\tconst maxMemoryMB = this.maxMemoryBytes\n\t\t\t? this.maxMemoryBytes / (1024 * 1024)\n\t\t\t: null;\n\t\tconst memoryUsagePercent = maxMemoryMB\n\t\t\t? (memoryMB / maxMemoryMB) * 100\n\t\t\t: null;\n\n\t\treturn {\n\t\t\tentries: this.cache.size,\n\t\t\tmemoryMB: Math.round(memoryMB * 100) / 100,\n\t\t\tmaxMemoryMB: maxMemoryMB ? Math.round(maxMemoryMB) : null,\n\t\t\tmemoryUsagePercent: memoryUsagePercent\n\t\t\t\t? Math.round(memoryUsagePercent)\n\t\t\t\t: null,\n\t\t};\n\t}\n\n\t/**\n\t * Remove expired entries\n\t */\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (entry.exp <= now) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\tif (entry.size) {\n\t\t\t\t\tthis.currentMemoryBytes -= entry.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Stop cleanup interval (call on shutdown)\n\t */\n\tdestroy(): void {\n\t\tif (this.cleanupInterval) {\n\t\t\tclearInterval(this.cleanupInterval);\n\t\t\tthis.cleanupInterval = null;\n\t\t}\n\t\tthis.clear();\n\t}\n}\n\n// Global singleton instances using globalThis for hot reload survival\nconst getGlobalCache = (): SSRDataCache => {\n\tconst g = globalThis as typeof globalThis & {\n\t\t__REROUTE_SSR_CACHE__?: SSRDataCache;\n\t};\n\n\tif (!g.__REROUTE_SSR_CACHE__) {\n\t\tg.__REROUTE_SSR_CACHE__ = new SSRDataCache();\n\t}\n\n\treturn g.__REROUTE_SSR_CACHE__;\n};\n\nconst getGlobalStatusCache = (): SSRDataCache => {\n\tconst g = globalThis as typeof globalThis & {\n\t\t__REROUTE_STATUS_CACHE__?: SSRDataCache;\n\t};\n\n\tif (!g.__REROUTE_STATUS_CACHE__) {\n\t\tg.__REROUTE_STATUS_CACHE__ = new SSRDataCache();\n\t}\n\n\treturn g.__REROUTE_STATUS_CACHE__;\n};\n\nconst ssrCache = getGlobalCache();\nconst statusCache = getGlobalStatusCache();\n\nexport { ssrCache, statusCache, SSRDataCache };\n",
18
+ "import type { CacheEntry } from './types';\n\n/**\n * Simple in-memory cache for SSR data.\n * Thread-safe for single-process usage.\n */\nclass SSRDataCache {\n\tprivate cache: Map<string, CacheEntry<unknown>> = new Map();\n\tprivate static cleanupInterval: NodeJS.Timeout | null = null;\n\n\tconstructor() {\n\t\t// Run cleanup every 60 seconds to remove expired entries\n\t\tif (!SSRDataCache.cleanupInterval) {\n\t\t\tSSRDataCache.cleanupInterval = setInterval(() => {\n\t\t\t\tthis.cleanup();\n\t\t\t}, 60_000);\n\t\t}\n\t}\n\n\t/**\n\t * Get cached data if available and not expired\n\t */\n\tget<T>(key: string): T | undefined {\n\t\tconst entry = this.cache.get(key);\n\t\tif (!entry) return undefined;\n\n\t\tconst age = Date.now() - entry.timestamp;\n\t\tif (age > entry.maxAge) {\n\t\t\tthis.cache.delete(key);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn entry.data as T;\n\t}\n\n\t/**\n\t * Set data in cache with maxAge (in milliseconds)\n\t */\n\tset<T>(key: string, data: T, maxAge: number): void {\n\t\tif (maxAge <= 0) return;\n\n\t\tthis.cache.set(key, {\n\t\t\tdata,\n\t\t\ttimestamp: Date.now(),\n\t\t\tmaxAge,\n\t\t});\n\t}\n\n\t/**\n\t * Check if key exists and is not expired\n\t */\n\thas(key: string): boolean {\n\t\treturn this.get(key) !== undefined;\n\t}\n\n\t/**\n\t * Clear all cached data\n\t */\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n\n\t/**\n\t * Remove expired entries\n\t */\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (now - entry.timestamp > entry.maxAge) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get cache stats (useful for debugging)\n\t */\n\tstats(): { size: number; keys: string[] } {\n\t\treturn {\n\t\t\tsize: this.cache.size,\n\t\t\tkeys: Array.from(this.cache.keys()),\n\t\t};\n\t}\n\n\t/**\n\t * Cleanup interval on shutdown\n\t */\n\tdestroy(): void {\n\t\tif (SSRDataCache.cleanupInterval) {\n\t\t\tclearInterval(SSRDataCache.cleanupInterval);\n\t\t\tSSRDataCache.cleanupInterval = null;\n\t\t}\n\t\tthis.clear();\n\t}\n}\n\n/**\n * Simple LRU Cache implementation with TTL support.\n * Used for caching responses and data across requests.\n * Automatically evicts expired entries to prevent memory leaks.\n */\nexport class LRUCache<K, V> {\n\tprivate cache: Map<K, V> = new Map();\n\tprivate maxSize: number;\n\tprivate cleanupInterval: NodeJS.Timeout | null = null;\n\n\tconstructor(maxSize = 100) {\n\t\tthis.maxSize = maxSize;\n\n\t\t// Periodic cleanup of expired entries (every 60 seconds)\n\t\tthis.cleanupInterval = setInterval(() => {\n\t\t\tthis.cleanup();\n\t\t}, 60_000);\n\n\t\t// Prevent interval from keeping process alive\n\t\tif (this.cleanupInterval.unref) {\n\t\t\tthis.cleanupInterval.unref();\n\t\t}\n\t}\n\n\tget(key: K): V | undefined {\n\t\tconst value = this.cache.get(key);\n\t\tif (value !== undefined) {\n\t\t\t// Check if entry has expired (if it has `exp` field)\n\t\t\tconst entry = value as { exp?: number };\n\t\t\tif (entry.exp !== undefined && entry.exp <= Date.now()) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Move to end (most recently used)\n\t\t\tthis.cache.delete(key);\n\t\t\tthis.cache.set(key, value);\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Remove all expired entries\n\t */\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, value] of this.cache.entries()) {\n\t\t\tconst entry = value as { exp?: number };\n\t\t\tif (entry.exp !== undefined && entry.exp <= now) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tset(key: K, value: V): void {\n\t\tthis.cache.delete(key);\n\n\t\tif (this.cache.size >= this.maxSize) {\n\t\t\tconst firstKey = this.cache.keys().next().value;\n\t\t\tthis.cache.delete(firstKey as K);\n\t\t}\n\n\t\tthis.cache.set(key, value);\n\t}\n\n\thas(key: K): boolean {\n\t\treturn this.cache.has(key);\n\t}\n\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n\n\t/**\n\t * Stop cleanup interval and clear cache (call on shutdown)\n\t */\n\tdestroy(): void {\n\t\tif (this.cleanupInterval) {\n\t\t\tclearInterval(this.cleanupInterval);\n\t\t\tthis.cleanupInterval = null;\n\t\t}\n\t\tthis.clear();\n\t}\n}\n\n/**\n * TTL-based cache with automatic expiration and size limits.\n * Use this for content caching where entries should expire after a set time.\n */\nexport class TTLCache<K, V> {\n\tprivate cache: Map<K, { value: V; exp: number; size?: number }> = new Map();\n\tprivate maxSize: number;\n\tprivate defaultTtlMs: number;\n\tprivate cleanupInterval: NodeJS.Timeout | null = null;\n\tprivate maxMemoryBytes: number | null = null;\n\tprivate currentMemoryBytes = 0;\n\n\t/**\n\t * @param maxSize Maximum number of entries (default: 100)\n\t * @param defaultTtlMs Default TTL in milliseconds (default: 300000 = 5 min)\n\t * @param cleanupIntervalMs How often to run cleanup (default: 60000 = 1 min)\n\t * @param maxMemoryMB Optional maximum memory in MB (e.g., 1000 = 1GB)\n\t */\n\tconstructor(\n\t\tmaxSize = 100,\n\t\tdefaultTtlMs = 300_000,\n\t\tcleanupIntervalMs = 60_000,\n\t\tmaxMemoryMB?: number,\n\t) {\n\t\tthis.maxSize = maxSize;\n\t\tthis.defaultTtlMs = defaultTtlMs;\n\t\tthis.maxMemoryBytes = maxMemoryMB ? maxMemoryMB * 1024 * 1024 : null;\n\n\t\t// Periodic cleanup of expired entries\n\t\tthis.cleanupInterval = setInterval(() => {\n\t\t\tthis.cleanup();\n\t\t}, cleanupIntervalMs);\n\n\t\t// Prevent interval from keeping process alive\n\t\tif (this.cleanupInterval.unref) {\n\t\t\tthis.cleanupInterval.unref();\n\t\t}\n\t}\n\n\t/**\n\t * Get value if exists and not expired\n\t */\n\tget(key: K): V | undefined {\n\t\tconst entry = this.cache.get(key);\n\t\tif (!entry) return undefined;\n\n\t\tif (entry.exp <= Date.now()) {\n\t\t\tthis.cache.delete(key);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn entry.value;\n\t}\n\n\t/**\n\t * Estimate size of value in bytes\n\t */\n\tprivate estimateSize(value: V): number {\n\t\tif (value instanceof Buffer || value instanceof ArrayBuffer) {\n\t\t\treturn value.byteLength;\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\treturn value.length * 2; // UTF-16 encoding\n\t\t}\n\t\t// For objects, use rough estimate\n\t\ttry {\n\t\t\treturn JSON.stringify(value).length * 2;\n\t\t} catch {\n\t\t\treturn 1024; // Default estimate\n\t\t}\n\t}\n\n\t/**\n\t * Set value with optional custom TTL\n\t * @param key Cache key\n\t * @param value Value to cache\n\t * @param ttlMs Optional TTL in milliseconds (uses default if not provided)\n\t */\n\tset(key: K, value: V, ttlMs?: number): void {\n\t\t// Calculate size of new entry\n\t\tconst entrySize = this.estimateSize(value);\n\n\t\t// Remove existing entry and update memory tracking\n\t\tconst existing = this.cache.get(key);\n\t\tif (existing) {\n\t\t\tthis.cache.delete(key);\n\t\t\tif (existing.size) {\n\t\t\t\tthis.currentMemoryBytes -= existing.size;\n\t\t\t}\n\t\t}\n\n\t\t// Evict entries if over memory limit\n\t\tif (\n\t\t\tthis.maxMemoryBytes &&\n\t\t\tthis.currentMemoryBytes + entrySize > this.maxMemoryBytes\n\t\t) {\n\t\t\tthis.evictForMemory(entrySize);\n\t\t}\n\n\t\t// Evict oldest entry if at capacity\n\t\tif (this.cache.size >= this.maxSize) {\n\t\t\tconst firstKey = this.cache.keys().next().value;\n\t\t\tif (firstKey !== undefined) {\n\t\t\t\tconst evicted = this.cache.get(firstKey);\n\t\t\t\tthis.cache.delete(firstKey);\n\t\t\t\tif (evicted?.size) {\n\t\t\t\t\tthis.currentMemoryBytes -= evicted.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.cache.set(key, {\n\t\t\tvalue,\n\t\t\texp: Date.now() + (ttlMs ?? this.defaultTtlMs),\n\t\t\tsize: entrySize,\n\t\t});\n\t\tthis.currentMemoryBytes += entrySize;\n\t}\n\n\t/**\n\t * Check if key exists and is not expired\n\t */\n\thas(key: K): boolean {\n\t\treturn this.get(key) !== undefined;\n\t}\n\n\t/**\n\t * Evict entries to free up memory\n\t */\n\tprivate evictForMemory(neededBytes: number): void {\n\t\tif (!this.maxMemoryBytes) return;\n\t\tconst targetBytes = this.maxMemoryBytes * 0.7; // Evict down to 70%\n\t\tconst keys = Array.from(this.cache.keys());\n\n\t\tfor (const key of keys) {\n\t\t\tif (this.currentMemoryBytes + neededBytes <= targetBytes) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst entry = this.cache.get(key);\n\t\t\tif (entry) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\tif (entry.size) {\n\t\t\t\t\tthis.currentMemoryBytes -= entry.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Delete a specific key\n\t */\n\tdelete(key: K): boolean {\n\t\tconst entry = this.cache.get(key);\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted && entry?.size) {\n\t\t\tthis.currentMemoryBytes -= entry.size;\n\t\t}\n\t\treturn deleted;\n\t}\n\n\t/**\n\t * Clear all entries\n\t */\n\tclear(): void {\n\t\tthis.cache.clear();\n\t\tthis.currentMemoryBytes = 0;\n\t}\n\n\t/**\n\t * Get current cache size (including potentially expired entries)\n\t */\n\tget size(): number {\n\t\treturn this.cache.size;\n\t}\n\n\t/**\n\t * Get cache statistics including memory usage\n\t */\n\tstats(): {\n\t\tentries: number;\n\t\tmemoryMB: number;\n\t\tmaxMemoryMB: number | null;\n\t\tmemoryUsagePercent: number | null;\n\t} {\n\t\tconst memoryMB = this.currentMemoryBytes / (1024 * 1024);\n\t\tconst maxMemoryMB = this.maxMemoryBytes\n\t\t\t? this.maxMemoryBytes / (1024 * 1024)\n\t\t\t: null;\n\t\tconst memoryUsagePercent = maxMemoryMB\n\t\t\t? (memoryMB / maxMemoryMB) * 100\n\t\t\t: null;\n\n\t\treturn {\n\t\t\tentries: this.cache.size,\n\t\t\tmemoryMB: Math.round(memoryMB * 100) / 100,\n\t\t\tmaxMemoryMB: maxMemoryMB ? Math.round(maxMemoryMB) : null,\n\t\t\tmemoryUsagePercent:\n\t\t\t\tmemoryUsagePercent !== null ? Math.round(memoryUsagePercent) : null,\n\t\t};\n\t}\n\n\t/**\n\t * Remove expired entries\n\t */\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (entry.exp <= now) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\tif (entry.size) {\n\t\t\t\t\tthis.currentMemoryBytes -= entry.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Stop cleanup interval (call on shutdown)\n\t */\n\tdestroy(): void {\n\t\tif (this.cleanupInterval) {\n\t\t\tclearInterval(this.cleanupInterval);\n\t\t\tthis.cleanupInterval = null;\n\t\t}\n\t\tthis.clear();\n\t}\n}\n\n// Global singleton instances using globalThis for hot reload survival\nconst getGlobalCache = (): SSRDataCache => {\n\tconst g = globalThis as typeof globalThis & {\n\t\t__REROUTE_SSR_CACHE__?: SSRDataCache;\n\t};\n\n\tif (!g.__REROUTE_SSR_CACHE__) {\n\t\tg.__REROUTE_SSR_CACHE__ = new SSRDataCache();\n\t}\n\n\treturn g.__REROUTE_SSR_CACHE__;\n};\n\nconst getGlobalStatusCache = (): SSRDataCache => {\n\tconst g = globalThis as typeof globalThis & {\n\t\t__REROUTE_STATUS_CACHE__?: SSRDataCache;\n\t};\n\n\tif (!g.__REROUTE_STATUS_CACHE__) {\n\t\tg.__REROUTE_STATUS_CACHE__ = new SSRDataCache();\n\t}\n\n\treturn g.__REROUTE_STATUS_CACHE__;\n};\n\nconst ssrCache = getGlobalCache();\nconst statusCache = getGlobalStatusCache();\n\nexport { ssrCache, statusCache, SSRDataCache };\n",
19
19
  "import type { Doc } from './types';\n\nfunction removePathVariants(\n\tstore: Record<string, unknown>,\n\tpathname: string,\n): void {\n\tif (pathname in store) {\n\t\tdelete store[pathname];\n\t}\n\n\tconst pathnameWithoutQuery = pathname.split('?')[0];\n\tif (\n\t\tpathnameWithoutQuery &&\n\t\tpathnameWithoutQuery !== pathname &&\n\t\tpathnameWithoutQuery in store\n\t) {\n\t\tdelete store[pathnameWithoutQuery];\n\t}\n}\n\n/**\n * Remove request-scoped SSR data from the global data store.\n * Used on timeout/error paths to avoid retaining unresolved values.\n */\nexport function cleanupPathScopedSSRData(pathname: string): void {\n\tif (!pathname) return;\n\n\ttry {\n\t\tconst g = globalThis as Doc;\n\t\tconst dataStore = g.__REROUTE_DATA__;\n\t\tif (!dataStore || typeof dataStore !== 'object') {\n\t\t\treturn;\n\t\t}\n\n\t\tremovePathVariants(dataStore as Record<string, unknown>, pathname);\n\n\t\tif (Object.keys(dataStore as Record<string, unknown>).length === 0) {\n\t\t\tdelete g.__REROUTE_DATA__;\n\t\t}\n\t} catch {\n\t\t// Ignore cleanup errors in restricted runtimes\n\t}\n}\n",
20
20
  "import { pathToFileURL } from 'node:url';\nimport type { Doc } from './types';\n\n/**\n * Dynamically import a module with optional cache busting for watch mode.\n * Centralizes the common pattern of importing with timestamp query params.\n */\nexport async function dynamicImport<T = Doc>(\n\tabsolutePath: string,\n\tisWatchMode: boolean,\n): Promise<T> {\n\tconst href = pathToFileURL(absolutePath).href;\n\tconst url = isWatchMode ? `${href}?t=${Date.now()}` : href;\n\treturn (await import(url)) as T;\n}\n\n/**\n * Check if a value is a thenable (Promise-like object)\n */\nexport function isThenable(value: unknown): value is Promise<unknown> {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\ttypeof (value as { then?: unknown }).then === 'function'\n\t);\n}\n\n/**\n * Convert a value to a Promise if it isn't already\n */\nexport function toPromise<T>(input: T | Promise<T>): Promise<T> {\n\treturn input instanceof Promise ? input : Promise.resolve(input);\n}\n",
21
21
  "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",
22
22
  "export function getMimeType(filePath: string): string {\n\tconst ext = filePath.split('.').pop()?.toLowerCase();\n\tconst mimeTypes: Record<string, string> = {\n\t\thtml: 'text/html',\n\t\tcss: 'text/css',\n\t\tjs: 'application/javascript',\n\t\tts: 'application/javascript',\n\t\tjson: 'application/json',\n\t\tpng: 'image/png',\n\t\tjpg: 'image/jpeg',\n\t\tjpeg: 'image/jpeg',\n\t\tgif: 'image/gif',\n\t\tsvg: 'image/svg+xml',\n\t\tico: 'image/x-icon',\n\t\twoff: 'font/woff',\n\t\twoff2: 'font/woff2',\n\t\tttf: 'font/ttf',\n\t};\n\treturn mimeTypes[ext || ''] || 'application/octet-stream';\n}\n\nexport function isCompressible(contentType: string): boolean {\n\tif (!contentType) return false;\n\tconst ct = contentType.split(';')[0].trim();\n\treturn (\n\t\tct.startsWith('text/') ||\n\t\tct === 'application/javascript' ||\n\t\tct === 'application/json' ||\n\t\tct === 'application/xml' ||\n\t\tct === 'image/svg+xml' ||\n\t\t// Compress TTF and WOFF fonts (50-60% reduction for TTF)\n\t\t// WOFF2 is already highly compressed, so skip it to avoid overhead\n\t\tct === 'font/ttf' ||\n\t\tct === 'font/woff'\n\t);\n}\n",
23
23
  "import { brotliCompressSync } from 'node:zlib';\nimport { isCompressible } from './mime';\nimport type { CompressionResult, StreamCompressionResult } from './types';\n\nexport function acceptsGzip(acceptEncoding?: string): boolean {\n\treturn Boolean(acceptEncoding && /gzip/i.test(acceptEncoding));\n}\n\nexport function acceptsBrotli(acceptEncoding?: string): boolean {\n\treturn Boolean(acceptEncoding && /\\bbr\\b/i.test(acceptEncoding));\n}\n\nexport function toBytes(\n\tinput: string | Uint8Array,\n): Uint8Array<ArrayBuffer> | string {\n\treturn typeof input === 'string'\n\t\t? new TextEncoder().encode(input)\n\t\t: (input as Uint8Array<ArrayBuffer>);\n}\n\nexport function gzipIfAccepted(\n\tbody: string | Uint8Array,\n\tcontentType: string,\n\tacceptEncoding?: string,\n): CompressionResult {\n\tconst extraHeaders: Record<string, string> = {};\n\n\tif (isCompressible(contentType)) {\n\t\t// Prefer Brotli if supported\n\t\tif (acceptsBrotli(acceptEncoding)) {\n\t\t\ttry {\n\t\t\t\tconst compressed = brotliCompressSync(toBytes(body) as Uint8Array);\n\t\t\t\textraHeaders['Content-Encoding'] = 'br';\n\t\t\t\textraHeaders.Vary = 'Accept-Encoding';\n\t\t\t\treturn { body: compressed, extraHeaders };\n\t\t\t} catch {\n\t\t\t\t// Fallthrough to gzip\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to gzip\n\t\tif (acceptsGzip(acceptEncoding)) {\n\t\t\ttry {\n\t\t\t\tconst compressed = Bun.gzipSync(toBytes(body));\n\t\t\t\textraHeaders['Content-Encoding'] = 'gzip';\n\t\t\t\textraHeaders.Vary = 'Accept-Encoding';\n\t\t\t\treturn { body: compressed, extraHeaders };\n\t\t\t} catch {\n\t\t\t\t// Return uncompressed\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { body, extraHeaders };\n}\n\n/**\n * Compress stream if accepted (currently not supported in Bun)\n */\nexport function compressStreamIfAccepted(\n\tstream: ReadableStream<Uint8Array>,\n\tcontentType: string,\n\t_acceptEncoding?: string,\n): StreamCompressionResult {\n\tconst extraHeaders: Record<string, string> = {};\n\n\tif (!isCompressible(contentType)) {\n\t\treturn { stream, extraHeaders };\n\t}\n\n\t// Streaming compression not yet supported in Bun\n\treturn { stream, extraHeaders };\n}\n",
24
+ "type MatchableRoute = {\n\tpattern: string;\n};\n\nfunction getPatternParts(pattern: string): string[] {\n\treturn pattern.split('/').filter(Boolean);\n}\n\nfunction isDynamicPatternPart(patternPart: string): boolean {\n\treturn patternPart.startsWith(':');\n}\n\nfunction isCatchAllPatternPart(patternPart: string): boolean {\n\treturn patternPart.startsWith(':...');\n}\n\nfunction isCatchAllParamName(paramName: string): boolean {\n\treturn paramName.startsWith('...');\n}\n\nfunction getPatternPartSpecificity(patternPart: string): number {\n\tif (isCatchAllPatternPart(patternPart)) {\n\t\treturn 2;\n\t}\n\n\tif (isDynamicPatternPart(patternPart)) {\n\t\treturn 1;\n\t}\n\n\treturn 0;\n}\n\nexport function compareRouteSpecificity(\n\ta: MatchableRoute,\n\tb: MatchableRoute,\n): number {\n\tconst aPatternParts = getPatternParts(a.pattern);\n\tconst bPatternParts = getPatternParts(b.pattern);\n\tconst aDepth = aPatternParts.length;\n\tconst bDepth = bPatternParts.length;\n\n\tif (aDepth !== bDepth) {\n\t\treturn bDepth - aDepth;\n\t}\n\n\tfor (let i = 0; i < aPatternParts.length; i++) {\n\t\tconst aSpecificity = getPatternPartSpecificity(aPatternParts[i]);\n\t\tconst bSpecificity = getPatternPartSpecificity(bPatternParts[i]);\n\n\t\tif (aSpecificity !== bSpecificity) {\n\t\t\treturn aSpecificity - bSpecificity;\n\t\t}\n\n\t\tif (aSpecificity === 0 && aPatternParts[i] !== bPatternParts[i]) {\n\t\t\treturn aPatternParts[i].localeCompare(bPatternParts[i]);\n\t\t}\n\t}\n\n\treturn a.pattern.localeCompare(b.pattern);\n}\n\nfunction matchCatchAllParam(\n\tparamName: string,\n\tpatternIndex: number,\n\tpatternLength: number,\n\tpathnameParts: string[],\n\tpathnameIndex: number,\n\tparams: Record<string, string>,\n): boolean {\n\tif (\n\t\tpatternIndex !== patternLength - 1 ||\n\t\tpathnameIndex >= pathnameParts.length\n\t) {\n\t\treturn false;\n\t}\n\n\tparams[paramName.slice(3)] = pathnameParts.slice(pathnameIndex).join('/');\n\treturn true;\n}\n\nfunction matchDynamicParam(\n\tparamName: string,\n\tpathnameParts: string[],\n\tpathnameIndex: number,\n\tparams: Record<string, string>,\n): number | null {\n\tconst pathnamePart = pathnameParts[pathnameIndex];\n\tif (pathnamePart === undefined) {\n\t\treturn null;\n\t}\n\n\tparams[paramName] = pathnamePart;\n\treturn pathnameIndex + 1;\n}\n\nfunction matchPatternPart(\n\tpatternPart: string,\n\tpatternIndex: number,\n\tpatternLength: number,\n\tpathnameParts: string[],\n\tpathnameIndex: number,\n\tparams: Record<string, string>,\n): number | 'catch-all' | null {\n\tif (isDynamicPatternPart(patternPart)) {\n\t\tconst paramName = patternPart.slice(1);\n\n\t\tif (isCatchAllParamName(paramName)) {\n\t\t\treturn matchCatchAllParam(\n\t\t\t\tparamName,\n\t\t\t\tpatternIndex,\n\t\t\t\tpatternLength,\n\t\t\t\tpathnameParts,\n\t\t\t\tpathnameIndex,\n\t\t\t\tparams,\n\t\t\t)\n\t\t\t\t? 'catch-all'\n\t\t\t\t: null;\n\t\t}\n\n\t\treturn matchDynamicParam(paramName, pathnameParts, pathnameIndex, params);\n\t}\n\n\tif (patternPart !== pathnameParts[pathnameIndex]) {\n\t\treturn null;\n\t}\n\n\treturn pathnameIndex + 1;\n}\n\nexport function matchRoutePattern(\n\tpattern: string,\n\tpathname: string,\n): Record<string, string> | null {\n\tconst patternParts = getPatternParts(pattern);\n\tconst pathnameParts = pathname.split('/').filter(Boolean);\n\tconst params: Record<string, string> = {};\n\tlet pathnameIndex = 0;\n\n\tfor (let i = 0; i < patternParts.length; i++) {\n\t\tconst nextPathnameIndex = matchPatternPart(\n\t\t\tpatternParts[i],\n\t\t\ti,\n\t\t\tpatternParts.length,\n\t\t\tpathnameParts,\n\t\t\tpathnameIndex,\n\t\t\tparams,\n\t\t);\n\t\tif (nextPathnameIndex === null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (nextPathnameIndex === 'catch-all') {\n\t\t\treturn params;\n\t\t}\n\n\t\tpathnameIndex = nextPathnameIndex;\n\t}\n\n\treturn pathnameIndex === pathnameParts.length ? params : null;\n}\n\nexport function matchRoutes<T extends MatchableRoute>(\n\troutes: readonly T[],\n\tpathname: string,\n): { route: T; params: Record<string, string> } | null {\n\tfor (const route of routes) {\n\t\tconst params = matchRoutePattern(route.pattern, pathname);\n\t\tif (params) {\n\t\t\treturn { route, params };\n\t\t}\n\t}\n\n\treturn null;\n}\n",
24
25
  "import { ssrCache, statusCache } from '../cache';\nimport { toPromise } from '../imports';\nimport type { ComputeOptions, Doc, SSR, SSRContext } 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: NonNullable<SSR['data']>,\n\tpathname: string,\n\tparts: string[],\n\tsearchParams: URLSearchParams | undefined,\n\tset: { status: number },\n\theaders?: Record<string, string>,\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\theaders,\n\t\t} satisfies SSRContext),\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 { ssr?: SSR } | undefined;\n\n\t\tconst dataFn = exp?.ssr?.data;\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(\n\t\t\tdataFn,\n\t\t\tpathname,\n\t\t\tparts,\n\t\t\tsearchParams,\n\t\t\tset,\n\t\t\toptions.headers,\n\t\t);\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",
25
26
  "import type { Doc, LayoutDef } from './types';\n\n/**\n * Filter and sort layouts that match a given pathname.\n * Layouts are sorted by depth (root → nested) for hierarchical processing.\n */\nexport function getMatchingLayouts(\n\tpathname: string,\n\tlayouts: Doc[] | undefined,\n): LayoutDef[] {\n\tif (!Array.isArray(layouts)) return [];\n\n\treturn layouts\n\t\t.filter((layout: Doc) => {\n\t\t\tconst pattern = String(layout?.pattern || '/');\n\t\t\tif (pattern === '/') return true;\n\t\t\treturn pathname.startsWith(pattern);\n\t\t})\n\t\t.sort((a: Doc, b: Doc) => {\n\t\t\tconst aDepth = getPatternDepth(a?.pattern);\n\t\t\tconst bDepth = getPatternDepth(b?.pattern);\n\t\t\treturn aDepth - bDepth;\n\t\t}) as LayoutDef[];\n}\n\n/**\n * Calculate the depth of a route pattern (number of path segments)\n */\nexport function getPatternDepth(pattern: unknown): number {\n\treturn String(pattern || '/')\n\t\t.split('/')\n\t\t.filter(Boolean).length;\n}\n\n/**\n * Generate a cache key for layout data\n */\nexport function createLayoutCacheKey(\n\tpattern: string,\n\tpathname: string,\n): string {\n\treturn `layout:${pattern}:${pathname}`;\n}\n\n/**\n * Generate the SSR data key for a layout\n */\nexport function createLayoutDataKey(pattern: string): string {\n\treturn `__layout:${pattern}`;\n}\n",
26
27
  "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, SSR, SSRContext } 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<SSR | undefined> {\n\tlet ssrExport = (layout as Doc)?.ssr as SSR | 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 SSR | 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: NonNullable<SSR['data']>,\n\tpathname: string,\n\tsearchParams: URLSearchParams | undefined,\n\tlayoutPattern: string,\n\theaders?: Record<string, string>,\n): Promise<unknown> {\n\tconst set = { status: 200 };\n\treturn toPromise(\n\t\tdataFn({\n\t\t\tpathname,\n\t\t\tparams: {},\n\t\t\tset,\n\t\t\tsearchParams,\n\t\t\theaders,\n\t\t} satisfies SSRContext),\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\t// Ensure global store mirrors streaming promises so useLayoutData() can suspend\n\t// and later resume once the promise resolves.\n\tconst g = globalThis as unknown as Record<string, Record<string, unknown>>;\n\tg.__REROUTE_DATA__ = g.__REROUTE_DATA__ || {};\n\tg.__REROUTE_DATA__[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\t// Keep global store in sync after resolution for Suspense retries\n\t\t\t\tif (g.__REROUTE_DATA__) {\n\t\t\t\t\tg.__REROUTE_DATA__[layoutKey] = value;\n\t\t\t\t}\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\theaders?: Record<string, string>,\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;\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(\n\t\tdataFn,\n\t\tpathname,\n\t\tsearchParams,\n\t\tpattern,\n\t\theaders,\n\t);\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\toptions.headers,\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",
27
28
  "import { ssrCache, statusCache } from '../cache';\nimport { dynamicImport, isThenable, toPromise } from '../imports';\nimport { join } from '../path';\nimport type {\n\tComputeOptions,\n\tDoc,\n\tRouteMatch,\n\tSSR,\n\tSSRContext,\n} 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<SSR | undefined> {\n\t// Try to use bundled ssr export first (compiled binary)\n\tlet ssrExport = (route as Doc)?.ssr as SSR | undefined;\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 SSR | 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;\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\theaders: options.headers,\n\t\t} satisfies SSRContext);\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",
28
- "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",
29
+ "import { dynamicImport } from '../imports';\nimport { join } from '../path';\nimport { matchRoutes } from '../route-match';\nimport type { ComputeOptions, ComputeResult, Doc } from '../types';\nimport { computeContentData } from './content';\nimport { computeLayoutData, mergeLayoutData } from './layouts';\nimport { computeRouteData } from './routes';\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\tmatchRoutes(bundledRoutes as Doc[], pathname),\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",
29
30
  "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",
30
31
  "import { importContentModuleForPath } from './modules';\nimport type { Doc } from './types';\n\n// LRU cache for SSR modules to prevent unbounded memory growth\n// Max 200 modules (each ~3-5MB) = ~1GB max instead of infinite growth\nconst MAX_SSR_MODULES = 200;\nconst moduleAccessOrder: string[] = [];\n\n/**\n * Evict least recently used modules when cache is full\n */\nfunction evictLRUModule(): void {\n\tif (moduleAccessOrder.length === 0) return;\n\n\tconst keyToEvict = moduleAccessOrder.shift(); // Remove oldest\n\tif (!keyToEvict) return;\n\n\tconst g = globalThis as Doc;\n\tif (g.__REROUTE_SSR_MODULES__) {\n\t\tdelete g.__REROUTE_SSR_MODULES__[keyToEvict];\n\t}\n\tif (g.__REROUTE_SSR_EXPORTS__) {\n\t\tdelete g.__REROUTE_SSR_EXPORTS__[keyToEvict];\n\t}\n}\n\n/**\n * Mark module as recently used (move to end of LRU queue)\n */\nfunction touchModule(key: string): void {\n\t// Remove from current position\n\tconst index = moduleAccessOrder.indexOf(key);\n\tif (index > -1) {\n\t\tmoduleAccessOrder.splice(index, 1);\n\t}\n\t// Add to end (most recently used)\n\tmoduleAccessOrder.push(key);\n\n\t// Evict if over limit\n\twhile (moduleAccessOrder.length > MAX_SSR_MODULES) {\n\t\tevictLRUModule();\n\t}\n}\n\n/**\n * Seed SSR module store for a content path.\n * Makes the content module available for server-side rendering.\n * Uses LRU eviction to prevent unbounded memory growth.\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\n\t\t// Mark as recently used for LRU eviction\n\t\ttouchModule(key);\n\t} catch {\n\t\t// Ignore seeding errors\n\t}\n}\n",
31
- "import { dynamicImport } from './imports';\nimport { getMatchingLayouts } from './layouts';\nimport { join } from './path';\nimport { seedSSRModuleForPath } from './seed';\nimport type { ComputeParams, Doc, SSR } 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 SSR['data'] | 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\t// Note: headers are not available in client-side navigation\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 SSR | undefined;\n\t\t\t}\n\n\t\t\tconst dataFn = ssrExport?.data;\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\t// Note: headers are not available in client-side navigation\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 SSR | 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 SSR | undefined;\n\t\t}\n\n\t\tconst dataFn = ssrExport?.data;\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\t// Note: headers are not available in client-side navigation\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",
32
+ "import { dynamicImport } from './imports';\nimport { getMatchingLayouts } from './layouts';\nimport { join } from './path';\nimport { matchRoutes } from './route-match';\nimport { seedSSRModuleForPath } from './seed';\nimport type { ComputeParams, Doc, SSR } from './types';\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 SSR['data'] | 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\t// Note: headers are not available in client-side navigation\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\tmatchRoutes((routes || []) as Doc[], pathname);\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 SSR | undefined;\n\t\t\t}\n\n\t\t\tconst dataFn = ssrExport?.data;\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\t// Note: headers are not available in client-side navigation\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 SSR | 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 SSR | undefined;\n\t\t}\n\n\t\tconst dataFn = ssrExport?.data;\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\t// Note: headers are not available in client-side navigation\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",
32
33
  "import { join } from './path';\nimport type { TemplateContext } from './types';\n\n/**\n * Load the index.html template from the client directory\n */\nexport async function loadIndexHtml(clientDir: string): Promise<string> {\n\t// Check for bundled template first (compiled binary support)\n\tconst bundledTemplate = (globalThis as Record<string, unknown>)\n\t\t.__REROUTE_HTML_TEMPLATE__ as string | undefined;\n\tif (bundledTemplate) {\n\t\treturn bundledTemplate;\n\t}\n\n\t// Fallback to filesystem read (dev mode)\n\tconst templatePath = join(clientDir, 'index.html');\n\ttry {\n\t\tconst content = await Bun.file(templatePath).text();\n\t\treturn content;\n\t} catch {\n\t\t// Minimal fallback template\n\t\treturn `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Reroute</title>\n </head>\n <body>\n <div id=\"root\"></div>\n </body>\n</html>`;\n\t}\n}\n\n/**\n * Apply SSR content to the HTML template\n */\nexport function applyIndexTemplate(\n\ttemplateHtml: string,\n\tappHtml: string,\n\t{\n\t\thead = '',\n\t\thydrationScript = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t}: TemplateContext,\n): string {\n\tlet html = templateHtml;\n\n\t// Ensure <html> has correct lang attribute\n\thtml = html.replace(/<html([^>]*)>/i, (_m, attrs: string) => {\n\t\tconst hasLang = /(^|\\s)lang\\s*=/.test(attrs);\n\t\tconst newAttrs = hasLang\n\t\t\t? attrs.replace(/lang\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^\\s>]+)/i, `lang=\"${lang}\"`)\n\t\t\t: `${attrs} lang=\"${lang}\"`;\n\t\treturn `<html${newAttrs}>`;\n\t});\n\n\t// Handle head injection with deduplication\n\tconst headToInject = head || '';\n\tconst { cleanedTemplate, cleanedHead } = deduplicateHeadContent(\n\t\thtml,\n\t\theadToInject,\n\t);\n\thtml = cleanedTemplate;\n\n\tif (cleanedHead) {\n\t\thtml = html.replace(/<\\/head>/i, `${cleanedHead}\\n\\t</head>`);\n\t}\n\n\t// Remove TS/TSX script tags to avoid double-loading\n\thtml = html.replace(\n\t\t/<script\\b[^>]*src\\s*=\\s*[\"'][^\"']+\\.(ts|tsx)(?:[?#][^\"']*)?[\"'][^>]*>\\s*<\\/script>/gi,\n\t\t'',\n\t);\n\n\t// Extract and move React preload links to head\n\tconst { cleanAppHtml, preloadLinks } = extractPreloadLinks(appHtml);\n\n\tif (preloadLinks.length > 0) {\n\t\tconst preloadHtml = preloadLinks.join('\\n\\t\\t');\n\t\thtml = html.replace(/<\\/head>/i, `\\t\\t${preloadHtml}\\n\\t</head>`);\n\t}\n\n\t// Replace content of the app root\n\thtml = replaceAppRoot(html, cleanAppHtml, appId);\n\n\t// Append hydration scripts before </body>\n\tif (hydrationScript) {\n\t\thtml = html.replace(/<\\/body>/i, `\\t\\t${hydrationScript}\\n\\t</body>`);\n\t}\n\n\treturn html;\n}\n\n/**\n * Deduplicate meta tags within head content\n * Keeps only the last occurrence of each unique meta tag type\n * Handles: <title>, <meta name=\"...\">, <meta property=\"...\">\n */\nfunction deduplicateTitles(headContent: string): string {\n\tconst titleMatches = [...headContent.matchAll(/<title[\\s\\S]*?<\\/title>/gi)];\n\tif (titleMatches.length <= 1) return headContent;\n\n\tlet result = headContent;\n\t// Remove all but the last title tag\n\tfor (let i = 0; i < titleMatches.length - 1; i++) {\n\t\tresult = result.replace(titleMatches[i][0], '');\n\t}\n\treturn result;\n}\n\nfunction deduplicateMetaByName(headContent: string): string {\n\tconst metaNameMatches = [\n\t\t...headContent.matchAll(/<meta\\s+name\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>/gi),\n\t];\n\tconst seenNames = new Map<string, number[]>();\n\n\tfor (let i = 0; i < metaNameMatches.length; i++) {\n\t\tconst match = metaNameMatches[i];\n\t\tconst nameValue = match[1].toLowerCase(); // Case-insensitive\n\t\tif (!seenNames.has(nameValue)) {\n\t\t\tseenNames.set(nameValue, []);\n\t\t}\n\t\tseenNames.get(nameValue)?.push(i);\n\t}\n\n\tlet result = headContent;\n\t// Remove all but the last occurrence of each name\n\tfor (const indices of seenNames.values()) {\n\t\tif (indices.length > 1) {\n\t\t\tfor (let i = 0; i < indices.length - 1; i++) {\n\t\t\t\tresult = result.replace(metaNameMatches[indices[i]][0], '');\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction deduplicateMetaByProperty(headContent: string): string {\n\tconst metaPropMatches = [\n\t\t...headContent.matchAll(/<meta\\s+property\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>/gi),\n\t];\n\tconst seenProps = new Map<string, number[]>();\n\n\tfor (let i = 0; i < metaPropMatches.length; i++) {\n\t\tconst match = metaPropMatches[i];\n\t\tconst propValue = match[1].toLowerCase(); // Case-insensitive\n\t\tif (!seenProps.has(propValue)) {\n\t\t\tseenProps.set(propValue, []);\n\t\t}\n\t\tseenProps.get(propValue)?.push(i);\n\t}\n\n\tlet result = headContent;\n\t// Remove all but the last occurrence of each property\n\tfor (const indices of seenProps.values()) {\n\t\tif (indices.length > 1) {\n\t\t\tfor (let i = 0; i < indices.length - 1; i++) {\n\t\t\t\tresult = result.replace(metaPropMatches[indices[i]][0], '');\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function deduplicateMetaTags(headContent: string): string {\n\ttry {\n\t\tlet result = headContent;\n\t\tresult = deduplicateTitles(result);\n\t\tresult = deduplicateMetaByName(result);\n\t\tresult = deduplicateMetaByProperty(result);\n\t\treturn result;\n\t} catch {\n\t\treturn headContent;\n\t}\n}\n\n/**\n * Remove default title and description tags from template HTML\n */\nfunction removeDefaultMetaTags(templateHtml: string): string {\n\tlet result = templateHtml;\n\n\ttry {\n\t\t// Remove default title tag\n\t\tresult = result.replace(/<title[\\s\\S]*?<\\/title>/i, '');\n\n\t\t// Remove default description meta tag\n\t\tresult = result.replace(\n\t\t\t/<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i,\n\t\t\t'',\n\t\t);\n\t} catch {\n\t\t// Return original on error\n\t}\n\n\treturn result;\n}\n\n/**\n * Remove OG/Twitter meta tags from template that will be overridden by injected head\n * Only removes tags whose property/name values exist in the injected content\n */\nexport function removeOverriddenMetaTags(\n\ttemplateHtml: string,\n\tinjectedHead: string,\n): string {\n\tlet result = templateHtml;\n\n\ttry {\n\t\t// Find all og: property values being injected\n\t\tconst injectedOgProps = [\n\t\t\t...injectedHead.matchAll(\n\t\t\t\t/<meta\\s+property\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>/gi,\n\t\t\t),\n\t\t].map((m) => m[1].toLowerCase());\n\n\t\t// Find all twitter/name meta values being injected\n\t\tconst injectedNameMetas = [\n\t\t\t...injectedHead.matchAll(/<meta\\s+name\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>/gi),\n\t\t].map((m) => m[1].toLowerCase());\n\n\t\t// Remove matching og: property tags from template\n\t\tfor (const prop of injectedOgProps) {\n\t\t\tconst escapedProp = prop.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t\t\tconst regex = new RegExp(\n\t\t\t\t`<meta\\\\s+property\\\\s*=\\\\s*['\"]${escapedProp}['\"][^>]*>`,\n\t\t\t\t'gi',\n\t\t\t);\n\t\t\tresult = result.replace(regex, '');\n\t\t}\n\n\t\t// Remove matching name meta tags from template (twitter:*, description, etc.)\n\t\tfor (const name of injectedNameMetas) {\n\t\t\tconst escapedName = name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t\t\tconst regex = new RegExp(\n\t\t\t\t`<meta\\\\s+name\\\\s*=\\\\s*['\"]${escapedName}['\"][^>]*>`,\n\t\t\t\t'gi',\n\t\t\t);\n\t\t\tresult = result.replace(regex, '');\n\t\t}\n\t} catch {\n\t\t// Return original on error\n\t}\n\n\treturn result;\n}\n\n/**\n * Deduplicate title and description meta tags in head content\n * Returns both the cleaned template HTML and the deduplicated head to inject\n */\nfunction deduplicateHeadContent(\n\ttemplateHtml: string,\n\theadToInject: string,\n): { cleanedTemplate: string; cleanedHead: string } {\n\tlet cleanedTemplate = templateHtml;\n\tlet cleanedHead = headToInject;\n\n\ttry {\n\t\t// First, deduplicate within the injected head itself (e.g., layout vs content meta)\n\t\tcleanedHead = deduplicateMetaTags(headToInject);\n\n\t\t// If we have new title/description tags to inject, remove the defaults from template\n\t\tif (/<title[\\s\\S]*?<\\/title>/i.test(cleanedHead)) {\n\t\t\tcleanedTemplate = removeDefaultMetaTags(cleanedTemplate);\n\t\t} else if (\n\t\t\t/<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i.test(cleanedHead)\n\t\t) {\n\t\t\t// Even if no title, remove description if present\n\t\t\tcleanedTemplate = cleanedTemplate.replace(\n\t\t\t\t/<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i,\n\t\t\t\t'',\n\t\t\t);\n\t\t}\n\n\t\t// Remove OG/Twitter meta tags from template that will be overridden\n\t\tcleanedTemplate = removeOverriddenMetaTags(cleanedTemplate, cleanedHead);\n\t} catch {\n\t\t// Return originals on error\n\t}\n\n\treturn { cleanedTemplate, cleanedHead };\n}\n\n/**\n * Extract React preload links from the beginning of SSR output\n */\nfunction extractPreloadLinks(appHtml: string): {\n\tcleanAppHtml: string;\n\tpreloadLinks: string[];\n} {\n\tconst preloadLinks: string[] = [];\n\tlet cleanAppHtml = appHtml;\n\n\tconst linkPrefixRegex = /^(\\s*(?:<link\\b[^>]*>\\s*)+)/;\n\tconst prefixMatch = appHtml.match(linkPrefixRegex);\n\n\tif (prefixMatch?.[1]) {\n\t\tconst linkMatches = prefixMatch[1].match(/<link\\b[^>]*>/g);\n\t\tif (linkMatches) {\n\t\t\tpreloadLinks.push(...linkMatches);\n\t\t\tcleanAppHtml = appHtml.slice(prefixMatch[1].length);\n\t\t}\n\t}\n\n\treturn { cleanAppHtml, preloadLinks };\n}\n\n/**\n * Replace the app root div content with SSR output\n */\nfunction replaceAppRoot(html: string, appHtml: string, appId: string): string {\n\tconst appIdEscaped = appId.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\tconst rootDivRegex = new RegExp(\n\t\t`(<div[^>]*\\\\bid=(\\\\\"|')${appIdEscaped}\\\\2[^>]*>)([\\\\s\\\\S]*?)(<\\\\/div>)`,\n\t\t'i',\n\t);\n\n\tif (rootDivRegex.test(html)) {\n\t\t// Escape $ in appHtml to prevent backreference interpretation\n\t\tconst escapedAppHtml = appHtml.replace(/\\$/g, '$$$$');\n\t\treturn html.replace(rootDivRegex, `$1${escapedAppHtml}$4`);\n\t}\n\n\t// Fallback: inject before </body>\n\treturn html.replace(\n\t\t/<\\/body>/i,\n\t\t`\\t\\t<div id=\"${appId}\">${appHtml}</div>\\n\\t</body>`,\n\t);\n}\n",
33
- "import { pathToFileURL } from 'node:url';\nimport { join } from '../ssr/lib/path';\n\n/**\n * Find [og].tsx file for a given pathname\n * Returns the absolute path to the OG image component if found\n */\nexport async function findOGImageForPath(\n\tpathname: string,\n\tclientDir: string,\n): Promise<string | null> {\n\t// Remove leading/trailing slashes and split into parts\n\tconst parts = pathname\n\t\t.split('/')\n\t\t.filter(Boolean)\n\t\t.filter((p) => !p.startsWith('__reroute'));\n\n\t// Try to find [og].tsx at each level of the path\n\t// Start from most specific (full path) to least specific (root)\n\tconst routesDir = join(clientDir, 'routes');\n\n\t// Build paths to try, from most specific to least\n\tconst pathsToTry: string[] = [];\n\n\tif (parts.length > 0) {\n\t\t// Try each directory level from deepest to shallowest\n\t\t// For /blog/my-post, try:\n\t\t// 1. routes/blog/my-post/[og].tsx\n\t\t// 2. routes/blog/[og].tsx\n\t\t// 3. routes/[og].tsx\n\t\tfor (let i = parts.length; i > 0; i--) {\n\t\t\tconst dirPath = join(routesDir, ...parts.slice(0, i), '[og].tsx');\n\t\t\tpathsToTry.push(dirPath);\n\t\t}\n\t}\n\n\t// Try root [og].tsx\n\tpathsToTry.push(join(routesDir, '[og].tsx'));\n\n\t// Remove duplicates while preserving order\n\tconst uniquePaths = [...new Set(pathsToTry)];\n\n\t// Try each path and return the first one that exists\n\tfor (const path of uniquePaths) {\n\t\ttry {\n\t\t\tconst file = Bun.file(path);\n\t\t\tif (await file.exists()) {\n\t\t\t\treturn path;\n\t\t\t}\n\t\t} catch {\n\t\t\t// File doesn't exist, continue\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Load OG Image component for a given path\n */\n\nexport async function loadOGImageComponent(\n\togPath: string,\n\tisWatchMode: boolean,\n) {\n\ttry {\n\t\tconst mod = await import(\n\t\t\t`${pathToFileURL(ogPath).href}${isWatchMode ? `?t=${Date.now()}` : ''}`\n\t\t);\n\t\treturn mod.default || mod;\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute] Failed to load OG image component: ${ogPath}`,\n\t\t\terror,\n\t\t);\n\t\treturn null;\n\t}\n}\n\n/**\n * Extract route params from pathname based on OG component path\n * e.g., pathname='/blog/my-post', ogPath='pages/blog/[slug]/[og].tsx' -> { slug: 'my-post' }\n */\nexport function extractParamsFromPath(\n\tpathname: string,\n\togPath: string,\n\tclientDir: string,\n): Record<string, string> {\n\tconst params: Record<string, string> = {};\n\n\t// Get the directory containing [og].tsx\n\tconst ogDir = ogPath.replace(/\\/\\[og\\]\\.tsx$/, '');\n\tconst pagesDir = join(clientDir, 'pages');\n\n\t// Get relative path from pages dir to og dir\n\tconst relativePath = ogDir.replace(pagesDir, '').split('/').filter(Boolean);\n\tconst pathnameParts = pathname.split('/').filter(Boolean);\n\n\t// Match path parts with og path parts to extract dynamic segments\n\tfor (let i = 0; i < relativePath.length && i < pathnameParts.length; i++) {\n\t\tconst part = relativePath[i];\n\t\t// Check if this is a dynamic segment [param]\n\t\tconst match = part.match(/^\\[([^\\]]+)\\]$/);\n\t\tif (match) {\n\t\t\tconst paramName = match[1];\n\t\t\tparams[paramName] = pathnameParts[i];\n\t\t}\n\t}\n\n\t// If there are remaining pathname parts after matching the og path,\n\t// and the last matched part was dynamic, use the last pathname part\n\tif (pathnameParts.length > relativePath.length && relativePath.length > 0) {\n\t\tconst lastRelativePart = relativePath[relativePath.length - 1];\n\t\tconst match = lastRelativePart.match(/^\\[([^\\]]+)\\]$/);\n\t\tif (match) {\n\t\t\tconst paramName = match[1];\n\t\t\t// Use the last pathname part that matches the position\n\t\t\tparams[paramName] = pathnameParts[relativePath.length - 1];\n\t\t}\n\t}\n\n\treturn params;\n}\n",
34
+ "import { readdir } from 'node:fs/promises';\nimport { pathToFileURL } from 'node:url';\nimport { join } from '../ssr/lib/path';\n\nconst CATCH_ALL_ROUTE_DIRECTORY = /^\\[\\.\\.\\.([^\\]]+)\\]$/;\nconst DYNAMIC_ROUTE_DIRECTORY = /^\\[(?:\\.\\.\\.)?[^\\]]+\\]$/;\n\nfunction isCatchAllRouteDirectory(name: string): boolean {\n\treturn CATCH_ALL_ROUTE_DIRECTORY.test(name);\n}\n\nasync function listDynamicRouteDirectories(baseDir: string): Promise<string[]> {\n\ttry {\n\t\tconst entries = await readdir(baseDir, { withFileTypes: true });\n\n\t\treturn entries\n\t\t\t.filter((entry) => entry.isDirectory())\n\t\t\t.map((entry) => entry.name)\n\t\t\t.filter((name) => DYNAMIC_ROUTE_DIRECTORY.test(name))\n\t\t\t.sort((a, b) => {\n\t\t\t\tconst aIsCatchAll = isCatchAllRouteDirectory(a);\n\t\t\t\tconst bIsCatchAll = isCatchAllRouteDirectory(b);\n\n\t\t\t\tif (aIsCatchAll !== bIsCatchAll) {\n\t\t\t\t\treturn Number(aIsCatchAll) - Number(bIsCatchAll);\n\t\t\t\t}\n\n\t\t\t\treturn a.localeCompare(b);\n\t\t\t});\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nasync function collectOGCandidatePaths(\n\tcurrentDir: string,\n\tparts: string[],\n\tdepth: number,\n\tpathsToTry: string[],\n\tallowPartialFallback: boolean,\n): Promise<void> {\n\tif (depth === parts.length) {\n\t\tpathsToTry.push(join(currentDir, '[og].tsx'));\n\t\treturn;\n\t}\n\n\tconst literalDir = join(currentDir, parts[depth]);\n\n\ttry {\n\t\tawait readdir(literalDir);\n\t\tawait collectOGCandidatePaths(\n\t\t\tliteralDir,\n\t\t\tparts,\n\t\t\tdepth + 1,\n\t\t\tpathsToTry,\n\t\t\ttrue,\n\t\t);\n\t} catch {\n\t\t// Literal path doesn't exist, continue with dynamic candidates.\n\t}\n\n\tconst dynamicDirs = await listDynamicRouteDirectories(currentDir);\n\n\tfor (const dynamicDir of dynamicDirs) {\n\t\tif (isCatchAllRouteDirectory(dynamicDir)) {\n\t\t\tpathsToTry.push(join(currentDir, dynamicDir, '[og].tsx'));\n\t\t\tcontinue;\n\t\t}\n\n\t\tawait collectOGCandidatePaths(\n\t\t\tjoin(currentDir, dynamicDir),\n\t\t\tparts,\n\t\t\tdepth + 1,\n\t\t\tpathsToTry,\n\t\t\tfalse,\n\t\t);\n\t}\n\n\tif (allowPartialFallback) {\n\t\tpathsToTry.push(join(currentDir, '[og].tsx'));\n\t}\n}\n\n/**\n * Find [og].tsx file for a given pathname\n * Returns the absolute path to the OG image component if found\n */\nexport async function findOGImageForPath(\n\tpathname: string,\n\tclientDir: string,\n): Promise<string | null> {\n\tconst parts = pathname\n\t\t.split('/')\n\t\t.filter(Boolean)\n\t\t.filter((p) => !p.startsWith('__reroute'));\n\tconst routesDir = join(clientDir, 'routes');\n\tconst pathsToTry: string[] = [];\n\n\tawait collectOGCandidatePaths(routesDir, parts, 0, pathsToTry, true);\n\n\tconst uniquePaths = [...new Set(pathsToTry)];\n\n\tfor (const path of uniquePaths) {\n\t\ttry {\n\t\t\tconst file = Bun.file(path);\n\t\t\tif (await file.exists()) {\n\t\t\t\treturn path;\n\t\t\t}\n\t\t} catch {\n\t\t\t// File doesn't exist, continue\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Load OG Image component for a given path\n */\n\nexport async function loadOGImageComponent(\n\togPath: string,\n\tisWatchMode: boolean,\n) {\n\ttry {\n\t\tconst mod = await import(\n\t\t\t`${pathToFileURL(ogPath).href}${isWatchMode ? `?t=${Date.now()}` : ''}`\n\t\t);\n\t\treturn mod.default || mod;\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute] Failed to load OG image component: ${ogPath}`,\n\t\t\terror,\n\t\t);\n\t\treturn null;\n\t}\n}\n\n/**\n * Extract route params from pathname based on OG component path\n * e.g., pathname='/blog/my-post', ogPath='pages/blog/[slug]/[og].tsx' -> { slug: 'my-post' }\n */\nexport function extractParamsFromPath(\n\tpathname: string,\n\togPath: string,\n\tclientDir: string,\n): Record<string, string> {\n\tconst params: Record<string, string> = {};\n\tconst ogDir = ogPath.replace(/\\/\\[og\\]\\.tsx$/, '');\n\tconst routesDir = join(clientDir, 'routes');\n\tconst relativePath = ogDir.replace(routesDir, '').split('/').filter(Boolean);\n\tconst pathnameParts = pathname.split('/').filter(Boolean);\n\n\tfor (let i = 0; i < relativePath.length && i < pathnameParts.length; i++) {\n\t\tconst part = relativePath[i];\n\n\t\tconst catchAllMatch = part.match(/^\\[\\.\\.\\.([^\\]]+)\\]$/);\n\t\tif (catchAllMatch) {\n\t\t\tparams[catchAllMatch[1]] = pathnameParts.slice(i).join('/');\n\t\t\tbreak;\n\t\t}\n\n\t\tconst dynamicMatch = part.match(/^\\[([^\\]]+)\\]$/);\n\t\tif (dynamicMatch) {\n\t\t\tparams[dynamicMatch[1]] = pathnameParts[i];\n\t\t}\n\t}\n\n\treturn params;\n}\n",
34
35
  "import type { OGImageOptions } from '../config';\nimport { findOGImageForPath } from './discovery';\n\n/**\n * Generate OG image meta tags for SSR\n */\nexport async function generateOGImageMetaTags(\n\tpathname: string,\n\tclientDir: string,\n\togConfig: OGImageOptions | undefined,\n): Promise<string> {\n\tif (!ogConfig?.enabled) {\n\t\treturn '';\n\t}\n\n\tconst width = ogConfig.width || 1200;\n\tconst height = ogConfig.height || 630;\n\n\t// Check if there's an OG image component for this route\n\tconst ogPath = await findOGImageForPath(pathname, clientDir);\n\tconst hasOGImage = ogPath !== null || ogConfig.defaultTemplate;\n\n\tif (!hasOGImage) {\n\t\treturn '';\n\t}\n\n\t// Generate OG image URL (relative path)\n\t// For root (/), use /index.png; for /blog, use /blog/index.png\n\tlet ogImagePath: string;\n\tif (pathname === '/' || pathname === '') {\n\t\togImagePath = '/__reroute_og/index.png';\n\t} else if (pathname.endsWith('/')) {\n\t\togImagePath = `/__reroute_og${pathname}index.png`;\n\t} else {\n\t\togImagePath = `/__reroute_og${pathname}.png`;\n\t}\n\n\t// Convert to absolute URL if baseUrl is provided\n\tconst baseUrl = ogConfig.baseUrl;\n\tif (baseUrl) {\n\t\t// Remove trailing slash from baseUrl if present\n\t\tconst cleanBaseUrl = baseUrl.replace(/\\/$/, '');\n\t\togImagePath = `${cleanBaseUrl}${ogImagePath}`;\n\t} else {\n\t\tconsole.warn(\n\t\t\t'[reroute] OG images require a baseUrl for proper social media sharing. Add baseUrl to ogImage config.',\n\t\t);\n\t}\n\n\t// Generate meta tags\n\t// Note: twitter:card is generated separately in global OG tags based on user config\n\treturn `<meta property=\"og:image\" content=\"${ogImagePath}\" />\n<meta property=\"og:image:width\" content=\"${width}\" />\n<meta property=\"og:image:height\" content=\"${height}\" />\n<meta name=\"twitter:image\" content=\"${ogImagePath}\" />`;\n}\n",
35
36
  "import type { OGImageOptions, OGOptions } from '../../config';\nimport { buildHeadFromMeta } from '../../content/metadata';\nimport { generateOGImageMetaTags } from '../../og/meta';\nimport { loadRoutesModule } from './compute';\nimport { dynamicImport } from './imports';\nimport { getMatchingLayouts } from './layouts';\nimport { join } from './path';\nimport type { Doc, MetadataResult, SSR, SSRHeadContext } from './types';\n\n/**\n * Load meta and ssr exports from a route/layout module.\n * Uses bundled values first (for compiled binaries), falls back to dynamic import.\n */\nasync function loadModuleMetaAndSSR(\n\tmoduleObj: Doc | undefined,\n\tabsolutePath: string,\n\tisWatchMode: boolean,\n): Promise<{ meta?: Doc; ssr?: SSR }> {\n\t// Use bundled meta/ssr if available (compiled binary)\n\tconst bundledMeta = moduleObj?.meta as Doc | undefined;\n\tconst bundledSSR = moduleObj?.ssr as SSR | undefined;\n\n\tif (bundledMeta !== undefined || bundledSSR !== undefined) {\n\t\treturn { meta: bundledMeta, ssr: bundledSSR };\n\t}\n\n\t// Fallback to dynamic import (dev mode)\n\ttry {\n\t\tconst mod = await dynamicImport(absolutePath, isWatchMode);\n\t\treturn {\n\t\t\tmeta: (mod as Doc)?.meta as Doc | undefined,\n\t\t\tssr: (mod as Doc)?.ssr as SSR | undefined,\n\t\t};\n\t} catch {\n\t\treturn {};\n\t}\n}\n\n/**\n * Generate canonical URL meta tag\n */\nfunction generateCanonicalUrl(baseUrl: string, pathname: string): string {\n\t// Remove trailing slash from baseUrl if present\n\tconst cleanBaseUrl = baseUrl.replace(/\\/$/, '');\n\t// Remove query parameters from pathname for canonical URL\n\tconst cleanPathname = pathname.split('?')[0];\n\t// Canonical URLs should not have trailing slashes (except for root)\n\tconst normalizedPath =\n\t\tcleanPathname === '/' ? '/' : cleanPathname.replace(/\\/$/, '');\n\tconst canonicalUrl = `${cleanBaseUrl}${normalizedPath}`;\n\treturn `<link rel=\"canonical\" href=\"${canonicalUrl}\" />`;\n}\n\n/**\n * Generate og:url meta tag to match canonical URL\n */\nfunction generateOgUrl(baseUrl: string, pathname: string): string {\n\t// Remove trailing slash from baseUrl if present\n\tconst cleanBaseUrl = baseUrl.replace(/\\/$/, '');\n\t// Remove query parameters from pathname for og:url\n\tconst cleanPathname = pathname.split('?')[0];\n\t// og:url should not have trailing slashes (except for root)\n\tconst normalizedPath =\n\t\tcleanPathname === '/' ? '/' : cleanPathname.replace(/\\/$/, '');\n\tconst ogUrl = `${cleanBaseUrl}${normalizedPath}`;\n\treturn `<meta property=\"og:url\" content=\"${ogUrl}\" />`;\n}\n\n/**\n * Generate global OG tags from config (og:site_name, og:locale, twitter:site)\n */\nfunction generateGlobalOGTags(ogConfig: OGOptions): string {\n\tconst tags: string[] = [];\n\n\tif (ogConfig.siteName) {\n\t\ttags.push(\n\t\t\t`<meta property=\"og:site_name\" content=\"${escapeHtml(ogConfig.siteName)}\" />`,\n\t\t);\n\t}\n\n\tif (ogConfig.locale) {\n\t\ttags.push(\n\t\t\t`<meta property=\"og:locale\" content=\"${escapeHtml(ogConfig.locale)}\" />`,\n\t\t);\n\t}\n\n\tif (ogConfig.twitterSite) {\n\t\t// Normalize: ensure @ prefix for twitter:site\n\t\tconst handle = ogConfig.twitterSite.startsWith('@')\n\t\t\t? ogConfig.twitterSite\n\t\t\t: `@${ogConfig.twitterSite}`;\n\t\ttags.push(`<meta name=\"twitter:site\" content=\"${escapeHtml(handle)}\" />`);\n\t}\n\n\treturn tags.length ? tags.join('\\n') : '';\n}\n\nfunction escapeHtml(input: string): string {\n\treturn input\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;')\n\t\t.replace(/'/g, '&#39;');\n}\n\n/**\n * Extract per-page head and metadata from layouts, routes, and content modules\n */\nexport async function extractPageMetadata(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tcurrentStatusOverride?: number,\n\togImageConfig?: OGImageOptions,\n\togConfig?: OGOptions,\n\tbaseUrl?: string,\n\tautoCanonical?: boolean,\n\tssrData?: unknown,\n\ttitleSuffix?: string,\n): Promise<MetadataResult> {\n\tlet perPageHead = '';\n\tlet pageLang: string | undefined;\n\tlet statusOverride = currentStatusOverride;\n\n\t// 1. Extract layout metadata hierarchically\n\tawait extractLayoutMetadata(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\t(head) => {\n\t\t\tperPageHead += head;\n\t\t},\n\t\t(lang) => {\n\t\t\tif (!pageLang) pageLang = lang;\n\t\t},\n\t\togConfig,\n\t\ttitleSuffix,\n\t);\n\n\t// 2. Canonical URL and og:url (auto-generated, should be overridable by custom tags)\n\t// Default to true if baseUrl is set, unless explicitly disabled\n\tconst shouldGenerateCanonical =\n\t\tautoCanonical !== false && baseUrl !== undefined;\n\tif (shouldGenerateCanonical) {\n\t\tconst canonicalTag = generateCanonicalUrl(baseUrl, pathname);\n\t\tconst ogUrlTag = generateOgUrl(baseUrl, pathname);\n\t\tperPageHead += `\\n${canonicalTag}`;\n\t\tperPageHead += `\\n${ogUrlTag}`;\n\t}\n\n\t// 3. Global OG tags (og:site_name, og:locale, twitter:site)\n\tif (ogConfig) {\n\t\tconst ogGlobalTags = generateGlobalOGTags(ogConfig);\n\t\tif (ogGlobalTags) {\n\t\t\tperPageHead += `\\n${ogGlobalTags}`;\n\t\t}\n\t}\n\n\t// 4. OG Image meta tags (auto-generated, should be overridable by custom tags)\n\ttry {\n\t\tconst ogMetaTags = await generateOGImageMetaTags(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\togImageConfig,\n\t\t);\n\t\tif (ogMetaTags) {\n\t\t\tperPageHead += `\\n${ogMetaTags}`;\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn('[reroute] Failed to generate OG image meta tags:', error);\n\t}\n\n\t// 5. Content page metadata (can override auto-generated tags)\n\textractContentMetadata(\n\t\tpathname,\n\t\t(head) => {\n\t\t\tperPageHead += head;\n\t\t},\n\t\t(lang) => {\n\t\t\tpageLang = lang;\n\t\t},\n\t\togConfig,\n\t\ttitleSuffix,\n\t);\n\n\t// 6. Route-level metadata (most specific, can override everything)\n\tconst routeResult = await extractRouteMetadata(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tstatusOverride,\n\t\tssrData,\n\t\togConfig,\n\t\ttitleSuffix,\n\t);\n\tperPageHead += routeResult.head;\n\tif (routeResult.lang) pageLang = routeResult.lang;\n\tstatusOverride = routeResult.statusOverride;\n\n\treturn {\n\t\tperPageHead,\n\t\tpageLang,\n\t\tstatusOverride,\n\t\tssrExport: routeResult.ssrExport,\n\t};\n}\n\nasync function processLayoutForMetadata(\n\tlayout: Doc,\n\tclientDir: string,\n\tisWatchMode: boolean,\n\taddHead: (head: string) => void,\n\tsetLang: (lang: string) => void,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): Promise<void> {\n\tif (typeof layout?.path !== 'string') return;\n\n\ttry {\n\t\tconst abs = join(clientDir, 'routes', String(layout.path));\n\t\tconst { meta, ssr } = await loadModuleMetaAndSSR(layout, abs, isWatchMode);\n\n\t\tif (meta) addHead(buildHeadFromMeta(meta, ogConfig, titleSuffix));\n\n\t\tif (ssr) {\n\t\t\t// Pass meta so head function can access layout metadata\n\t\t\tconst ssrHead = extractSSRHead(\n\t\t\t\tssr,\n\t\t\t\tundefined,\n\t\t\t\togConfig,\n\t\t\t\tundefined,\n\t\t\t\tmeta,\n\t\t\t\ttitleSuffix,\n\t\t\t);\n\t\t\tif (ssrHead) addHead(`\\n${ssrHead}`);\n\n\t\t\tconst lang = extractSSRLang(ssr);\n\t\t\tif (lang) setLang(lang);\n\t\t}\n\t} catch {\n\t\t// Continue to next layout\n\t}\n}\n\nasync function extractLayoutMetadata(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\taddHead: (head: string) => void,\n\tsetLang: (lang: string) => void,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): Promise<void> {\n\ttry {\n\t\t// Use loadRoutesModule which handles bundled globals for compiled binaries\n\t\tconst m = await loadRoutesModule(cwd, isWatchMode);\n\t\tconst matchingLayouts = getMatchingLayouts(pathname, m?.layouts);\n\n\t\tfor (const layout of matchingLayouts) {\n\t\t\tawait processLayoutForMetadata(\n\t\t\t\tlayout,\n\t\t\t\tclientDir,\n\t\t\t\tisWatchMode,\n\t\t\t\taddHead,\n\t\t\t\tsetLang,\n\t\t\t\togConfig,\n\t\t\t\ttitleSuffix,\n\t\t\t);\n\t\t}\n\t} catch {\n\t\t// Routes module unavailable\n\t}\n}\n\nfunction extractContentMetadata(\n\tpathname: string,\n\taddHead: (head: string) => void,\n\tsetLang: (lang: string) => void,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): void {\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return;\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] as\n\t\t\t| { meta?: unknown; ssr?: SSR }\n\t\t\t| undefined;\n\n\t\tconst meta = (exp as Doc)?.meta;\n\t\tconst ssr = exp?.ssr;\n\n\t\taddHead(buildHeadFromMeta(meta, ogConfig, titleSuffix));\n\n\t\t// Pass meta to extractSSRHead so head function can access content frontmatter\n\t\tconst ssrHead = extractSSRHead(\n\t\t\tssr,\n\t\t\tundefined,\n\t\t\togConfig,\n\t\t\tundefined,\n\t\t\tmeta,\n\t\t\ttitleSuffix,\n\t\t);\n\t\tif (ssrHead) addHead(`\\n${ssrHead}`);\n\n\t\tconst lang = extractSSRLang(ssr);\n\t\tif (lang) setLang(lang);\n\t} catch {\n\t\t// Content metadata unavailable\n\t}\n}\n\n/**\n * Get content metadata from __REROUTE_SSR_EXPORTS__ for a given pathname.\n * Returns the frontmatter metadata for content pages (e.g., blog posts).\n * Includes the slug derived from the pathname if not already present.\n */\nfunction getContentMetaFromExports(pathname: string): Doc | undefined {\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return undefined;\n\n\t\tconst slug = parts[1];\n\t\tconst key = `${parts[0]}:${slug}`;\n\t\tconst g = globalThis as Doc;\n\t\tconst exp = g.__REROUTE_SSR_EXPORTS__?.[key] as { meta?: Doc } | undefined;\n\n\t\tconst meta = exp?.meta;\n\t\tif (!meta) return undefined;\n\n\t\t// Include slug in metadata if not already present\n\t\tif (!meta.slug) {\n\t\t\treturn { ...meta, slug };\n\t\t}\n\n\t\treturn meta;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Route metadata extraction is complex\nasync function extractMatchedRouteMetadata(\n\tpathname: string,\n\tclientDir: string,\n\tm: Doc,\n\tisWatchMode: boolean,\n\tstatusOverride: number | undefined,\n\tssrData?: unknown,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): Promise<{\n\thead: string;\n\tlang?: string;\n\tstatusOverride?: number;\n\tssrExport?: SSR;\n}> {\n\tconst pathnameOnly = pathname.split('?')[0];\n\tconst match =\n\t\ttypeof m.matchRoute === 'function' ? m.matchRoute(pathnameOnly) : null;\n\tconst r = match?.route as Doc | undefined;\n\n\tif (!r) {\n\t\treturn { head: '', statusOverride: statusOverride || 404 };\n\t}\n\n\tif (r && typeof r.path === 'string') {\n\t\ttry {\n\t\t\tconst abs = join(clientDir, 'routes', String(r.path));\n\t\t\tconst { meta, ssr } = await loadModuleMetaAndSSR(r, abs, isWatchMode);\n\n\t\t\tlet head = '';\n\t\t\tif (meta) head += buildHeadFromMeta(meta, ogConfig, titleSuffix);\n\n\t\t\tif (ssr) {\n\t\t\t\t// Extract route-specific data from the full ssrData object\n\t\t\t\t// ssrData is keyed by pathname for routes\n\t\t\t\tlet routeData =\n\t\t\t\t\tssrData && typeof ssrData === 'object'\n\t\t\t\t\t\t? (ssrData as Record<string, unknown>)[pathname]\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t// If data is a Promise, await it for SSR head generation\n\t\t\t\tif (routeData && typeof routeData === 'object' && 'then' in routeData) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\trouteData = await (routeData as Promise<unknown>);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'[extractMatchedRouteMetadata] Error awaiting route data for head:',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t);\n\t\t\t\t\t\trouteData = undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// For content pages, use the content's frontmatter metadata instead of route's meta.\n\t\t\t\t// This allows ssr.head() in route files like [slug].tsx to receive blog post metadata.\n\t\t\t\tconst contentMeta = getContentMetaFromExports(pathnameOnly);\n\t\t\t\tconst headMeta = contentMeta || meta;\n\n\t\t\t\t// Pass existing head and meta to avoid duplicate OG tags when both meta and ssr.head() exist\n\t\t\t\tconst ssrHead = extractSSRHead(\n\t\t\t\t\tssr,\n\t\t\t\t\trouteData,\n\t\t\t\t\togConfig,\n\t\t\t\t\thead,\n\t\t\t\t\theadMeta,\n\t\t\t\t\ttitleSuffix,\n\t\t\t\t);\n\t\t\t\tif (ssrHead) head += `\\n${ssrHead}`;\n\t\t\t\t// Return SSR export for dynamic head generation at stream end\n\t\t\t\treturn {\n\t\t\t\t\thead,\n\t\t\t\t\tlang: extractSSRLang(ssr),\n\t\t\t\t\tstatusOverride,\n\t\t\t\t\tssrExport: ssr,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn { head, statusOverride };\n\t\t} catch {\n\t\t\t// Route module unavailable\n\t\t}\n\t}\n\n\treturn { head: '', statusOverride };\n}\n\nasync function extractRouteMetadata(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tcurrentStatusOverride?: number,\n\tssrData?: unknown,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): Promise<{\n\thead: string;\n\tlang?: string;\n\tstatusOverride?: number;\n\tssrExport?: SSR;\n}> {\n\tlet head = '';\n\tlet lang: string | undefined;\n\tlet statusOverride = currentStatusOverride;\n\tlet ssrExport: SSR | undefined;\n\n\ttry {\n\t\tconst m = await loadRoutesModule(cwd, isWatchMode);\n\t\tif (!m) {\n\t\t\treturn { head, lang, statusOverride: statusOverride || 404 };\n\t\t}\n\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst match =\n\t\t\ttypeof m.matchRoute === 'function' ? m.matchRoute(pathnameOnly) : null;\n\t\tconst r = match?.route as Doc | undefined;\n\n\t\tif (!r) {\n\t\t\tstatusOverride = statusOverride || 404;\n\t\t}\n\n\t\tif (r && typeof r.path === 'string') {\n\t\t\tconst result = await extractMatchedRouteMetadata(\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tm,\n\t\t\t\tisWatchMode,\n\t\t\t\tstatusOverride,\n\t\t\t\tssrData,\n\t\t\t\togConfig,\n\t\t\t\ttitleSuffix,\n\t\t\t);\n\n\t\t\thead = result.head;\n\t\t\tlang = result.lang;\n\t\t\tstatusOverride = result.statusOverride;\n\t\t\tssrExport = result.ssrExport;\n\t\t} else {\n\t\t\t// Try notFound route metadata only when no route matched\n\t\t\thead += await extractNotFoundMetadata(\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tm,\n\t\t\t\tisWatchMode,\n\t\t\t\t(l) => {\n\t\t\t\t\tlang = l;\n\t\t\t\t},\n\t\t\t\togConfig,\n\t\t\t\ttitleSuffix,\n\t\t\t);\n\t\t}\n\t} catch {\n\t\t// Routes module unavailable\n\t}\n\n\treturn { head, lang, statusOverride, ssrExport };\n}\n\nfunction findBestNotFoundRoute(list: Doc[], pathname: string): Doc | undefined {\n\tlet chosen: Doc | undefined;\n\tlet bestLen = -1;\n\n\tfor (const nf of list) {\n\t\tconst pat = String((nf as Doc)?.pattern || '/');\n\t\tif (!pathname.startsWith(pat)) continue;\n\n\t\tconst len = pat.split('/').filter(Boolean).length;\n\t\tif (len >= bestLen) {\n\t\t\tbestLen = len;\n\t\t\tchosen = nf;\n\t\t}\n\t}\n\n\treturn chosen;\n}\n\nasync function extractNotFoundMetadata(\n\tpathname: string,\n\tclientDir: string,\n\troutesModule: Doc,\n\tisWatchMode: boolean,\n\tsetLang: (lang: string) => void,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): Promise<string> {\n\tlet head = '';\n\n\ttry {\n\t\tconst list = routesModule?.notFoundRoutes as Doc[] | undefined;\n\t\tif (!Array.isArray(list)) return head;\n\n\t\tconst chosen = findBestNotFoundRoute(list, pathname);\n\n\t\tif (chosen && typeof (chosen as Doc).path === 'string') {\n\t\t\tconst abs = join(clientDir, 'routes', String((chosen as Doc).path));\n\t\t\tconst { meta, ssr } = await loadModuleMetaAndSSR(\n\t\t\t\tchosen,\n\t\t\t\tabs,\n\t\t\t\tisWatchMode,\n\t\t\t);\n\n\t\t\tif (meta) head += buildHeadFromMeta(meta, ogConfig, titleSuffix);\n\n\t\t\t// Pass meta so head function can access 404 page metadata\n\t\t\tconst ssrHead = extractSSRHead(\n\t\t\t\tssr,\n\t\t\t\tundefined,\n\t\t\t\togConfig,\n\t\t\t\tundefined,\n\t\t\t\tmeta,\n\t\t\t\ttitleSuffix,\n\t\t\t);\n\t\t\tif (ssrHead) head += `\\n${ssrHead}`;\n\n\t\t\tconst lang = extractSSRLang(ssr);\n\t\t\tif (lang) setLang(lang);\n\t\t}\n\t} catch {\n\t\t// NotFound metadata unavailable\n\t}\n\n\treturn head;\n}\n\n/**\n * Parse title from head HTML string\n */\nfunction parseTitleFromHead(head: string): string | undefined {\n\tconst match = head.match(/<title[^>]*>(.*?)<\\/title>/is);\n\tif (match?.[1]) return unescapeHtml(match[1].trim());\n\treturn undefined;\n}\n\n/**\n * Parse description from head HTML string\n * Handles both attribute orders and content with escaped quotes\n */\nfunction parseDescriptionFromHead(head: string): string | undefined {\n\t// Try name-first format: <meta name=\"description\" content=\"...\">\n\tlet match = head.match(\n\t\t/<meta\\s+name=[\"']description[\"']\\s+content=[\"'](.+?)[\"']\\s*\\/?>/i,\n\t);\n\tif (match?.[1]) return unescapeHtml(match[1].trim());\n\n\t// Try content-first format: <meta content=\"...\" name=\"description\">\n\tmatch = head.match(\n\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+name=[\"']description[\"']\\s*\\/?>/i,\n\t);\n\tif (match?.[1]) return unescapeHtml(match[1].trim());\n\n\treturn undefined;\n}\n\n/**\n * Unescape basic HTML entities in extracted content\n */\nfunction unescapeHtml(input: string): string {\n\treturn input\n\t\t.replace(/&quot;/g, '\"')\n\t\t.replace(/&#39;/g, \"'\")\n\t\t.replace(/&lt;/g, '<')\n\t\t.replace(/&gt;/g, '>')\n\t\t.replace(/&amp;/g, '&');\n}\n\n/**\n * Check if a specific meta tag already exists in head HTML\n */\nfunction hasMetaTag(head: string, property: string): boolean {\n\t// Check both property=\"\" and name=\"\" syntax\n\tconst propRegex = new RegExp(\n\t\t`<meta\\\\s+(?:property|name)=[\"']${property}[\"']`,\n\t\t'i',\n\t);\n\tconst contentFirstRegex = new RegExp(\n\t\t`<meta\\\\s+content=[\"'][^\"']*[\"']\\\\s+(?:property|name)=[\"']${property}[\"']`,\n\t\t'i',\n\t);\n\treturn propRegex.test(head) || contentFirstRegex.test(head);\n}\n\n/**\n * Generate OG/Twitter tags from extracted title/description if not already present\n */\nfunction generateMissingOGTags(head: string, ogConfig?: OGOptions): string {\n\tconst title = parseTitleFromHead(head);\n\tconst description = parseDescriptionFromHead(head);\n\n\tconst additionalTags: string[] = [];\n\n\t// Generate og:title if title exists and og:title is missing\n\tif (title && !hasMetaTag(head, 'og:title')) {\n\t\tadditionalTags.push(\n\t\t\t`<meta property=\"og:title\" content=\"${escapeHtml(title)}\" />`,\n\t\t);\n\t}\n\n\t// Generate og:description if description exists and og:description is missing\n\tconst finalDescription = description || ogConfig?.siteDescription;\n\tif (finalDescription && !hasMetaTag(head, 'og:description')) {\n\t\tadditionalTags.push(\n\t\t\t`<meta property=\"og:description\" content=\"${escapeHtml(finalDescription)}\" />`,\n\t\t);\n\t}\n\n\t// Generate twitter:title if title exists and twitter:title is missing\n\tif (title && !hasMetaTag(head, 'twitter:title')) {\n\t\tadditionalTags.push(\n\t\t\t`<meta name=\"twitter:title\" content=\"${escapeHtml(title)}\" />`,\n\t\t);\n\t}\n\n\t// Generate twitter:description if description exists and twitter:description is missing\n\tif (finalDescription && !hasMetaTag(head, 'twitter:description')) {\n\t\tadditionalTags.push(\n\t\t\t`<meta name=\"twitter:description\" content=\"${escapeHtml(finalDescription)}\" />`,\n\t\t);\n\t}\n\n\t// Generate og:type if missing\n\tif (!hasMetaTag(head, 'og:type')) {\n\t\tconst ogType = ogConfig?.defaultType || 'website';\n\t\tadditionalTags.push(\n\t\t\t`<meta property=\"og:type\" content=\"${escapeHtml(ogType)}\" />`,\n\t\t);\n\t}\n\n\t// Generate twitter:card if missing\n\tif (!hasMetaTag(head, 'twitter:card')) {\n\t\tconst twitterCard = ogConfig?.twitterCard || 'summary_large_image';\n\t\tadditionalTags.push(\n\t\t\t`<meta name=\"twitter:card\" content=\"${twitterCard}\" />`,\n\t\t);\n\t}\n\n\treturn additionalTags.length > 0 ? `\\n${additionalTags.join('\\n')}` : '';\n}\n\nfunction extractSSRHead(\n\tssr: SSR | undefined,\n\tdata?: unknown,\n\togConfig?: OGOptions,\n\texistingHead?: string,\n\tmeta?: Doc,\n\ttitleSuffix?: string,\n): string {\n\tif (!ssr) return '';\n\n\tlet headContent = '';\n\n\t// Support function that receives data result and content meta\n\tif (typeof ssr.head === 'function') {\n\t\ttry {\n\t\t\tconst result = ssr.head({ data, meta } satisfies SSRHeadContext);\n\t\t\tif (typeof result === 'string') headContent = result;\n\t\t\telse if (Array.isArray(result))\n\t\t\t\theadContent = String((result as string[]).join('\\n'));\n\t\t} catch (err) {\n\t\t\tconsole.error('[extractSSRHead] Error calling head function:', err);\n\t\t\treturn '';\n\t\t}\n\t} else if (typeof ssr.head === 'string') {\n\t\theadContent = ssr.head;\n\t} else if (Array.isArray(ssr.head)) {\n\t\theadContent = String(ssr.head.join('\\n'));\n\t}\n\n\tif (!headContent) return '';\n\n\t// Apply titleSuffix to any title tags in the head content\n\tif (titleSuffix) {\n\t\theadContent = applyTitleSuffixToHead(headContent, titleSuffix);\n\t}\n\n\t// Auto-generate missing OG/Twitter tags from the head content\n\t// Check against both the ssr.head() output AND any existing head (from const meta)\n\tconst combinedHead = existingHead\n\t\t? `${existingHead}\\n${headContent}`\n\t\t: headContent;\n\tconst additionalOGTags = generateMissingOGTags(combinedHead, ogConfig);\n\n\treturn headContent + additionalOGTags;\n}\n\nfunction extractSSRLang(ssr: SSR | undefined): string | undefined {\n\tif (!ssr) return undefined;\n\n\tif (typeof ssr.lang === 'string' && ssr.lang.trim()) {\n\t\treturn ssr.lang.trim();\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Apply titleSuffix to any title tags in head HTML content.\n * Also updates og:title and twitter:title if they match the original title.\n */\nfunction applyTitleSuffixToHead(\n\theadContent: string,\n\ttitleSuffix: string,\n): string {\n\tlet result = headContent;\n\n\t// Find and update <title> tag\n\tconst titleMatch = result.match(/<title[^>]*>(.*?)<\\/title>/is);\n\tif (titleMatch?.[1]) {\n\t\tconst originalTitle = titleMatch[1].trim();\n\t\tif (originalTitle && !originalTitle.endsWith(titleSuffix)) {\n\t\t\tconst newTitle = `${originalTitle}${titleSuffix}`;\n\t\t\tresult = result.replace(\n\t\t\t\t/<title[^>]*>(.*?)<\\/title>/is,\n\t\t\t\t`<title>${escapeHtml(unescapeHtml(newTitle))}</title>`,\n\t\t\t);\n\n\t\t\t// Also update og:title if it matches the original title (without suffix)\n\t\t\tconst ogTitleRegex =\n\t\t\t\t/<meta\\s+(?:property\\s*=\\s*[\"']og:title[\"']\\s+content\\s*=\\s*[\"']([^\"']+)[\"']|content\\s*=\\s*[\"']([^\"']+)[\"']\\s+property\\s*=\\s*[\"']og:title[\"'])[^>]*>/gi;\n\t\t\tresult = result.replace(ogTitleRegex, (match, content1, content2) => {\n\t\t\t\tconst content = content1 || content2;\n\t\t\t\tif (content && !content.endsWith(titleSuffix)) {\n\t\t\t\t\tconst newContent = `${content}${titleSuffix}`;\n\t\t\t\t\treturn `<meta property=\"og:title\" content=\"${escapeHtml(unescapeHtml(newContent))}\" />`;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Also update twitter:title if it matches the original title (without suffix)\n\t\t\tconst twitterTitleRegex =\n\t\t\t\t/<meta\\s+(?:name\\s*=\\s*[\"']twitter:title[\"']\\s+content\\s*=\\s*[\"']([^\"']+)[\"']|content\\s*=\\s*[\"']([^\"']+)[\"']\\s+name\\s*=\\s*[\"']twitter:title[\"'])[^>]*>/gi;\n\t\t\tresult = result.replace(\n\t\t\t\ttwitterTitleRegex,\n\t\t\t\t(match, content1, content2) => {\n\t\t\t\t\tconst content = content1 || content2;\n\t\t\t\t\tif (content && !content.endsWith(titleSuffix)) {\n\t\t\t\t\t\tconst newContent = `${content}${titleSuffix}`;\n\t\t\t\t\t\treturn `<meta name=\"twitter:title\" content=\"${escapeHtml(unescapeHtml(newContent))}\" />`;\n\t\t\t\t\t}\n\t\t\t\t\treturn match;\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\treturn result;\n}\n",
36
37
  "import { readdir, stat } from 'node:fs/promises';\nimport { dynamicImport } from './imports';\nimport { join } from './path';\nimport type { Doc, PreloadResult } from './types';\n\n/**\n * Handle content module preloading for content pages\n */\nexport async function preloadContentModule(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<PreloadResult> {\n\tlet extraHead = '';\n\tlet hydrationScript = '';\n\tlet statusOverride: number | undefined;\n\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 { extraHead, hydrationScript };\n\t\t}\n\n\t\tconst collection = parts[0];\n\t\tconst name = parts[1];\n\n\t\t// Check if this is a content collection\n\t\tif (!(await isContentCollection(clientDir, collection))) {\n\t\t\treturn { extraHead, hydrationScript };\n\t\t}\n\n\t\t// Try to find module path\n\t\tconst modulePath = await findContentModulePath(\n\t\t\tcollection,\n\t\t\tname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\tif (!modulePath) {\n\t\t\tstatusOverride = 404;\n\t\t\treturn { extraHead, hydrationScript, statusOverride };\n\t\t}\n\n\t\tconst key = `${collection}:${name}`;\n\t\textraHead += `\\n<link rel=\"modulepreload\" href=\"${modulePath}\" />`;\n\n\t\t// Store the module path and key for the inline loader\n\t\t// The actual loading happens via a blocking mechanism in the data script\n\t\t// Mark that this content module needs to be preloaded in the hydration script\n\t\thydrationScript += `<script>\n(globalThis.__REROUTE_CONTENT_PRELOAD__ ||= []).push({src:'${modulePath}',key:'${key}'});\n</script>`;\n\t} catch {\n\t\t// Return empty result on error\n\t}\n\n\treturn { extraHead, hydrationScript, statusOverride };\n}\n\nasync function isContentCollection(\n\tclientDir: string,\n\tcollection: string,\n): Promise<boolean> {\n\ttry {\n\t\t// In production (clientDir = .reroute), check for collection files instead of source dirs\n\t\tconst isProduction = clientDir.endsWith('.reroute');\n\n\t\tif (isProduction) {\n\t\t\t// Check if collection file exists in .reroute/collections/\n\t\t\tconst collectionFile = join(clientDir, 'collections', `${collection}.js`);\n\t\t\ttry {\n\t\t\t\tconst s = await stat(collectionFile);\n\t\t\t\treturn s?.isFile() ?? false;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// In development, check for content directory\n\t\tconst maybeDir = join(clientDir, 'routes', collection, 'content');\n\t\tconst s = await stat(maybeDir);\n\t\treturn typeof s?.isDirectory === 'function' ? s.isDirectory() : true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function findLatestCandidate(\n\tchunkDir: string,\n\tcandidates: string[],\n): Promise<string> {\n\tlet latest = candidates[0];\n\tlet latestM = 0;\n\n\tfor (const candidateName of candidates) {\n\t\ttry {\n\t\t\tconst s = await stat(join(chunkDir, candidateName));\n\t\t\tif (s.mtimeMs >= latestM) {\n\t\t\t\tlatestM = s.mtimeMs;\n\t\t\t\tlatest = candidateName;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Skip inaccessible files\n\t\t}\n\t}\n\n\treturn latest;\n}\n\nasync function findContentModulePath(\n\tcollection: string,\n\tname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<string | null> {\n\t// 1. Try registry mapping\n\ttry {\n\t\tconst registryPath = join(cwd, '.reroute', 'content.ts');\n\t\tconst reg = await dynamicImport(registryPath, isWatchMode);\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')) {\n\t\t\treturn moduleUrl;\n\t\t}\n\t} catch {\n\t\t// Registry unavailable\n\t}\n\n\t// 2. Try newest chunk\n\ttry {\n\t\tconst chunkDir = join(cwd, '.reroute', 'chunks', collection);\n\t\tconst files = await readdir(chunkDir);\n\t\tconst candidates = files.filter(\n\t\t\t(n) => n.startsWith(`${name}.`) && n.endsWith('.js'),\n\t\t);\n\n\t\tif (candidates.length) {\n\t\t\tconst latest = await findLatestCandidate(chunkDir, candidates);\n\t\t\treturn `/${join('.reroute', 'chunks', collection, latest).replace(/\\\\+/g, '/')}`;\n\t\t}\n\t} catch {\n\t\t// Chunk directory unavailable\n\t}\n\n\t// 3. Try source files\n\ttry {\n\t\tconst tsx = join(clientDir, 'routes', collection, 'content', `${name}.tsx`);\n\t\tconst ts = join(clientDir, 'routes', collection, 'content', `${name}.ts`);\n\n\t\tif (await Bun.file(tsx).exists()) {\n\t\t\treturn `/${join('routes', collection, 'content', `${name}.tsx`).replace(/\\\\+/g, '/')}`;\n\t\t}\n\t\tif (await Bun.file(ts).exists()) {\n\t\t\treturn `/${join('routes', collection, 'content', `${name}.ts`).replace(/\\\\+/g, '/')}`;\n\t\t}\n\t} catch {\n\t\t// Source files unavailable\n\t}\n\n\treturn null;\n}\n\n/**\n * Reset SSR access tracking for a new request\n */\nexport function resetSSRAccessTracking(): void {\n\ttry {\n\t\t(globalThis as Doc).__REROUTE_SSR_ACCESSED__ = {};\n\t} catch {\n\t\t// Ignore errors in restricted environments\n\t}\n}\n\n/**\n * Create bundle preload link\n */\nexport function createBundlePreload(bundleUrl: string): string {\n\ttry {\n\t\tif (typeof bundleUrl === 'string' && bundleUrl.endsWith('.js')) {\n\t\t\treturn `\\n<link rel=\"modulepreload\" href=\"${bundleUrl}\" />`;\n\t\t}\n\t} catch {\n\t\t// Return empty on error\n\t}\n\treturn '';\n}\n",
@@ -42,7 +43,7 @@
42
43
  "import { join } from './path';\n\n/**\n * Find and inline Tailwind CSS from .reroute directory\n * In watch mode, returns a link tag instead of inlining to ensure fresh CSS on every request\n */\nexport async function inlineTailwindCSS(\n\tclientDir: string,\n\tminify = false,\n\tisWatchMode = false,\n): Promise<string> {\n\ttry {\n\t\t// Check for bundled CSS first (compiled binary support)\n\t\tconst bundledCss = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_THEME_CSS__ as string | undefined;\n\n\t\tif (bundledCss) {\n\t\t\tconst css = minify ? minifyCSS(bundledCss) : bundledCss;\n\t\t\treturn `<style data-reroute=\"tailwind\">${css}</style>`;\n\t\t}\n\n\t\t// In watch mode, return a link tag to ensure fresh CSS\n\t\t// The server will serve the CSS from /.reroute/theme.css with no-cache headers\n\t\tif (isWatchMode) {\n\t\t\t// Add timestamp to bust browser cache\n\t\t\tconst timestamp = Date.now();\n\t\t\treturn `<link rel=\"stylesheet\" href=\"/.reroute/theme.css?t=${timestamp}\" data-reroute=\"tailwind\">`;\n\t\t}\n\n\t\t// Production mode: inline the CSS\n\t\tconst candidates = [\n\t\t\tjoin(clientDir, '..', '.reroute', 'theme.css'),\n\t\t\tjoin(clientDir, '..', '..', '.reroute', 'theme.css'),\n\t\t\tjoin(clientDir, '..', '..', '..', '.reroute', 'theme.css'),\n\t\t\tjoin(clientDir, '..', '..', '..', '..', '.reroute', 'theme.css'),\n\t\t];\n\n\t\tlet cssPath = '';\n\t\tfor (const p of candidates) {\n\t\t\tif (await Bun.file(p).exists()) {\n\t\t\t\tcssPath = p;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!cssPath) return '';\n\n\t\tconst { readFileSync } = await import('node:fs');\n\t\tconst css = readFileSync(cssPath, 'utf-8');\n\n\t\treturn `<style data-reroute=\"tailwind\">${minifyCSS(css)}</style>`;\n\t} catch {\n\t\treturn '';\n\t}\n}\n\n/**\n * Basic CSS minification without external dependencies\n */\nfunction minifyCSS(css: string): string {\n\treturn (\n\t\tcss\n\t\t\t// Remove block comments\n\t\t\t.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n\t\t\t// Collapse whitespace\n\t\t\t.replace(/\\s+/g, ' ')\n\t\t\t// Remove space around selectors and operators\n\t\t\t.replace(/\\s*([{}:;,>+~])\\s*/g, '$1')\n\t\t\t// Remove final semicolons before closing brace\n\t\t\t.replace(/;}/g, '}')\n\t\t\t.trim()\n\t);\n}\n",
43
44
  "import type { Span } from '@opentelemetry/api';\nimport { withParentSpan, withSpan } from 'reroute-js/telemetry/server';\nimport type { OGImageOptions, OGOptions } from '../../config';\nimport { cleanupPathScopedSSRData } from './cleanup';\nimport { loadCollections, setGlobalCollections } from './collections';\nimport { computeSSRData, setGlobalSSRData } from './compute';\nimport { extractPageMetadata } from './metadata';\nimport {\n\tcreateBundlePreload,\n\tpreloadContentModule,\n\tresetSSRAccessTracking,\n} from './preload';\nimport {\n\tcreateCollectionScript,\n\tcreateDataScript,\n\tcreateFeedsScript,\n\tcreateLlmsScript,\n\tprocessCollections,\n} from './scripts';\nimport { seedSSRModuleForPath } from './seed';\nimport { inlineTailwindCSS } from './styles';\nimport type { ComputeResult, SSR } from './types';\n\n/**\n * Common SSR options shared between render and stream modes\n */\ntype SSRSetupOptions = {\n\tpathname: string;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tbundleUrl: string;\n\tcachedCollections?: Record<string, unknown[]>;\n\tcachedTailwindCSS?: string;\n\tdebug?: boolean;\n\tmaxAge?: number;\n\tsearchParams?: URLSearchParams;\n\togConfig?: OGImageOptions;\n\togMetaConfig?: OGOptions;\n\tbaseUrl?: string;\n\tautoCanonical?: boolean;\n\tparentSpan?: Span | null;\n\t/** Request headers from the incoming HTTP request */\n\theaders?: Record<string, string>;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n\t/** Maximum timeout in milliseconds for SSR setup */\n\ttimeout?: number;\n};\n\n/**\n * Result of SSR setup phase\n */\ntype SSRSetupResult = {\n\tssrData: Record<string, unknown>;\n\tssrError?: string;\n\tstatusContainer: { value: number | undefined };\n\tbyCollectionForSSR: Record<string, unknown[]>;\n\tbundlePreload: string;\n\tpreloadExtraHead: string;\n\tpreloadHydrationScript: string;\n\tpreloadStatusOverride?: number;\n\tinlineStyleTag: string;\n\tmetadataResult: {\n\t\tperPageHead: string;\n\t\tpageLang?: string;\n\t\tstatusOverride?: number;\n\t\t/** SSR export for dynamic head generation at stream end */\n\t\tssrExport?: SSR;\n\t};\n\tpending?: Promise<void>;\n};\n\ntype SSRSetupTimeoutState = {\n\ttimedOut: boolean;\n};\n\n/**\n * Perform common SSR setup steps shared between render and stream modes.\n * This includes seeding modules, computing data, loading collections, and preloading.\n */\nasync function performSSRSetup(\n\toptions: SSRSetupOptions,\n\tstreaming = false,\n): Promise<SSRSetupResult> {\n\tconst { pathname } = options;\n\tconst timeoutState: SSRSetupTimeoutState = { timedOut: false };\n\n\t// Add a global timeout for SSR setup to prevent indefinite hangs.\n\t// Consumer-provided timeout takes precedence.\n\tconst setupTimeout = options.timeout ?? (streaming ? 10000 : 30000);\n\tlet timeoutId: ReturnType<typeof setTimeout> | null = null;\n\tconst timeoutPromise = new Promise<never>((_, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutState.timedOut = true;\n\t\t\treject(\n\t\t\t\tnew Error(\n\t\t\t\t\t`[reroute] SSR setup timeout after ${setupTimeout}ms for ${pathname}`,\n\t\t\t\t),\n\t\t\t);\n\t\t}, setupTimeout);\n\t});\n\tconst setupPromise = withParentSpan(options.parentSpan, () =>\n\t\tperformSSRSetupInternal(options, streaming, timeoutState),\n\t);\n\tconst setupPromiseWithCleanup = setupPromise.finally(() => {\n\t\tif (timeoutState.timedOut) {\n\t\t\tcleanupPathScopedSSRData(pathname);\n\t\t}\n\t});\n\n\ttry {\n\t\treturn await Promise.race([setupPromiseWithCleanup, timeoutPromise]);\n\t} catch (error) {\n\t\tcleanupPathScopedSSRData(pathname);\n\t\tconsole.error('[reroute] SSR setup error:', error);\n\t\t// Return minimal setup result to allow page to render with fallback\n\t\treturn {\n\t\t\tssrData: {},\n\t\t\tssrError: error instanceof Error ? error.message : String(error),\n\t\t\tstatusContainer: { value: 500 },\n\t\t\tbyCollectionForSSR: {},\n\t\t\tbundlePreload: '',\n\t\t\tpreloadExtraHead: '',\n\t\t\tpreloadHydrationScript: '',\n\t\t\tinlineStyleTag: '',\n\t\t\tmetadataResult: { perPageHead: '' },\n\t\t};\n\t} finally {\n\t\tif (timeoutId) {\n\t\t\tclearTimeout(timeoutId);\n\t\t}\n\t}\n}\n\n/**\n * Internal SSR setup implementation (wrapped with timeout above)\n */\nasync function performSSRSetupInternal(\n\toptions: SSRSetupOptions,\n\tstreaming: boolean,\n\ttimeoutState: SSRSetupTimeoutState,\n): Promise<SSRSetupResult> {\n\tconst debug = options.debug ?? false;\n\tconst t0 = debug ? performance.now() : 0;\n\tconst {\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tbundleUrl,\n\t\tmaxAge = 0,\n\t\tsearchParams,\n\t\togConfig,\n\t} = options;\n\tconst assertNotTimedOut = () => {\n\t\tif (timeoutState.timedOut) {\n\t\t\tthrow new Error(`[reroute] SSR setup cancelled for ${pathname}`);\n\t\t}\n\t};\n\n\t// Note: We don't reset SSR globals here because multiple requests may run concurrently.\n\t// Instead, we use pathname-scoped serialization to ensure each response only includes\n\t// its own data (see createContentHtmlScript and createSSRExportsScript).\n\n\t// 1. Seed content modules for SSR rendering\n\tawait withSpan('ssr.seed', async (span) => {\n\t\tspan.setAttribute('pathname', pathname);\n\t\tspan.setAttribute('streaming', streaming);\n\t\tawait seedSSRModuleForPath(pathname, clientDir, cwd, isWatchMode);\n\t\tif (debug)\n\t\t\tconsole.log(\n\t\t\t\t`[Setup] ${pathname} - seedModule: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t);\n\t});\n\tassertNotTimedOut();\n\n\t// 2. Reset SSR access tracking and create bundle preload\n\tresetSSRAccessTracking();\n\tconst bundlePreload = createBundlePreload(bundleUrl);\n\n\t// 3. Preload content module\n\tconst preloadResult = await withSpan('ssr.preload', async (span) => {\n\t\tspan.setAttribute('pathname', pathname);\n\t\tconst result = await preloadContentModule(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t);\n\t\tspan.setAttribute('has_module', !!result.modulePath);\n\t\tif (debug)\n\t\t\tconsole.log(\n\t\t\t\t`[Setup] ${pathname} - preloadContent: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t);\n\t\treturn result;\n\t});\n\tassertNotTimedOut();\n\n\t// 4. Compute SSR data\n\tconst computeResult: ComputeResult = await withSpan(\n\t\t'ssr.compute.data',\n\t\tasync (span) => {\n\t\t\tspan.setAttribute('pathname', pathname);\n\t\t\tspan.setAttribute('streaming', streaming);\n\t\t\tconst result = await computeSSRData(\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tcwd,\n\t\t\t\tisWatchMode,\n\t\t\t\t{ streaming, maxAge, headers: options.headers },\n\t\t\t\tsearchParams,\n\t\t\t);\n\t\t\tspan.setAttribute('has_error', !!result.error);\n\t\t\tspan.setAttribute('has_data', Object.keys(result.data).length > 0);\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[Setup] ${pathname} - computeSSRData: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\t\t\treturn result;\n\t\t},\n\t);\n\tassertNotTimedOut();\n\n\tsetGlobalSSRData(computeResult.data);\n\n\t// 5. Load content collections (use cached if available)\n\tconst usingCachedCollections = !!options.cachedCollections;\n\tconst byCollectionForSSR = await withSpan(\n\t\t'ssr.load.collections',\n\t\tasync (span) => {\n\t\t\tspan.setAttribute('pathname', pathname);\n\t\t\tspan.setAttribute('cached', usingCachedCollections);\n\t\t\tconst collections = options.cachedCollections\n\t\t\t\t? options.cachedCollections\n\t\t\t\t: await loadCollections(cwd, isWatchMode);\n\t\t\tspan.setAttribute('collection_count', Object.keys(collections).length);\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[Setup] ${pathname} - loadCollections (cached: ${usingCachedCollections}): ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\t\t\treturn collections;\n\t\t},\n\t);\n\tassertNotTimedOut();\n\tsetGlobalCollections(byCollectionForSSR);\n\n\t// 6. Inline Tailwind CSS (use cached if available)\n\tconst usingCachedCSS = !!options.cachedTailwindCSS;\n\tconst inlineStyleTag = await withSpan('ssr.inline.css', async (span) => {\n\t\tconst css = options.cachedTailwindCSS\n\t\t\t? options.cachedTailwindCSS\n\t\t\t: await inlineTailwindCSS(clientDir, !streaming, isWatchMode);\n\t\tspan.setAttributes({\n\t\t\t'reroute.cached': usingCachedCSS,\n\t\t\t'reroute.css.size': css.length,\n\t\t});\n\t\tif (debug)\n\t\t\tconsole.log(\n\t\t\t\t`[Setup] ${pathname} - inlineTailwindCSS (cached: ${usingCachedCSS}): ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t);\n\t\treturn css;\n\t});\n\tassertNotTimedOut();\n\n\t// 7. Determine initial status override\n\tlet statusOverride = preloadResult.statusOverride;\n\tif (computeResult.statusContainer.value !== undefined) {\n\t\tstatusOverride = computeResult.statusContainer.value;\n\t}\n\n\t// 8. Extract page metadata (with SSR data for dynamic head tags)\n\tconst metadataResult = await withSpan(\n\t\t'ssr.extract.metadata',\n\t\tasync (span) => {\n\t\t\tconst result = await extractPageMetadata(\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tcwd,\n\t\t\t\tisWatchMode,\n\t\t\t\tstatusOverride,\n\t\t\t\togConfig,\n\t\t\t\toptions.ogMetaConfig,\n\t\t\t\toptions.baseUrl,\n\t\t\t\toptions.autoCanonical,\n\t\t\t\tcomputeResult.data,\n\t\t\t\toptions.titleSuffix,\n\t\t\t);\n\t\t\tspan.setAttributes({\n\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t'reroute.metadata.exists': !!result.perPageHead,\n\t\t\t});\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[Setup] ${pathname} - extractMetadata: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\t\t\treturn result;\n\t\t},\n\t);\n\tassertNotTimedOut();\n\n\treturn {\n\t\tssrData: computeResult.data,\n\t\tssrError: computeResult.error,\n\t\tstatusContainer: computeResult.statusContainer,\n\t\tbyCollectionForSSR,\n\t\tbundlePreload,\n\t\tpreloadExtraHead: preloadResult.extraHead,\n\t\tpreloadHydrationScript: preloadResult.hydrationScript,\n\t\tpreloadStatusOverride: preloadResult.statusOverride,\n\t\tinlineStyleTag,\n\t\tmetadataResult,\n\t\tpending: computeResult.pending,\n\t};\n}\n\n/**\n * Generate hydration scripts for collections that were accessed during SSR.\n */\nfunction generateCollectionScripts(\n\tbyCollectionForSSR: Record<string, unknown[]>,\n): string {\n\ttry {\n\t\tconst g = globalThis as unknown as { __REROUTE_SSR_ACCESSED__?: unknown };\n\t\tconst acc = g.__REROUTE_SSR_ACCESSED__;\n\n\t\tif (acc) {\n\t\t\tconst { subset, partial } = processCollections(acc, byCollectionForSSR);\n\t\t\tif (Object.keys(subset).length > 0) {\n\t\t\t\treturn createCollectionScript(subset, partial);\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Ignore errors\n\t}\n\treturn '';\n}\n\n/**\n * Generate all hydration scripts for SSR\n */\nfunction generateHydrationScripts(\n\tssrData: Record<string, unknown>,\n\tisWatchMode: boolean,\n\tssrError?: string,\n\tcollectionScripts = '',\n\tpreloadScript = '',\n\tbundleUrl = '',\n\tpathname = '',\n\tbrowserTelemetryConfig?: Record<string, unknown>,\n\ttraceContext?: { traceparent?: string; tracestate?: string },\n\ttitleSuffix?: string,\n): string {\n\tlet scripts = preloadScript;\n\n\t// Add collection scripts\n\tscripts += collectionScripts;\n\n\t// Add SSR data script (pathname is used to scope content HTML and exports to current request)\n\tscripts += createDataScript(\n\t\tssrData,\n\t\tisWatchMode ? ssrError : undefined,\n\t\tpathname,\n\t\tbrowserTelemetryConfig,\n\t\ttraceContext,\n\t\ttitleSuffix,\n\t);\n\n\t// Add feeds and llms scripts\n\tscripts += createFeedsScript();\n\tscripts += createLlmsScript();\n\n\t// Add bundle script\n\tif (bundleUrl) {\n\t\tscripts += `<script type=\"module\" src=\"${bundleUrl}\"></script>`;\n\t}\n\n\t// Add dev watcher in watch mode\n\tif (isWatchMode) {\n\t\tscripts += `<script type=\"module\" src=\"/__reroute_watch.js\"></script>`;\n\t}\n\n\treturn scripts;\n}\n\nexport type { SSRSetupOptions, SSRSetupResult };\nexport { performSSRSetup, generateCollectionScripts, generateHydrationScripts };\n",
44
45
  "import type { TemplateParts } from './types';\n\n/**\n * Split HTML template into parts for streaming SSR.\n * Separates the template into head, root div, and tail sections.\n */\nexport function splitTemplate(html: string, appId = 'root'): TemplateParts {\n\tconst appIdEscaped = appId.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n\tconst rootDivRegex = new RegExp(\n\t\t`(<div[^>]*\\\\bid=[\"']${appIdEscaped}[\"'][^>]*>)([\\\\s\\\\S]*?)(<\\\\/div>)`,\n\t\t'i',\n\t);\n\n\tconst match = html.match(rootDivRegex);\n\tif (!match || match.index === undefined) {\n\t\tthrow new Error(`Could not find app root div with id=\"${appId}\"`);\n\t}\n\n\tconst [fullMatch, rootStart, , rootEnd] = match;\n\tconst matchIndex = match.index;\n\n\treturn {\n\t\thtmlHead: html.substring(0, matchIndex),\n\t\trootStart,\n\t\trootEnd,\n\t\thtmlTail: html.substring(matchIndex + fullMatch.length),\n\t};\n}\n",
45
- "// Types\n\n// Core utilities\nexport * from './cache';\nexport * from './cleanup';\n// Content handling\nexport * from './collections';\n// HTTP utilities\nexport * from './compression';\n// SSR compute\nexport * from './compute';\nexport { computeSSRDataForPath } from './data';\n// HTML handling\nexport * from './html';\nexport * from './imports';\nexport * from './layouts';\nexport * from './metadata';\nexport * from './mime';\nexport * from './modules';\nexport * from './path';\nexport * from './preload';\n// Script generation\nexport * from './scripts';\nexport * from './seed';\n// Shared setup\nexport * from './setup';\nexport * from './styles';\nexport * from './template';\nexport * from './types';\n",
46
+ "// Types\n\n// Core utilities\nexport * from './cache';\nexport * from './cleanup';\n// Content handling\nexport * from './collections';\n// HTTP utilities\nexport * from './compression';\n// SSR compute\nexport * from './compute';\nexport { computeSSRDataForPath } from './data';\n// HTML handling\nexport * from './html';\nexport * from './imports';\nexport * from './layouts';\nexport * from './metadata';\nexport * from './mime';\nexport * from './modules';\nexport * from './path';\nexport * from './preload';\nexport * from './route-match';\n// Script generation\nexport * from './scripts';\nexport * from './seed';\n// Shared setup\nexport * from './setup';\nexport * from './styles';\nexport * from './template';\nexport * from './types';\n",
46
47
  "/** biome-ignore-all lint/suspicious/noExplicitAny: That's fine */\n/**\n * Serialize telemetry config for browser injection\n * Converts functions and RegExps to string representations that can be parsed in browser\n */\nexport function serializeBrowserTelemetryConfig(\n\tconfig: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n\tif (!config) return undefined;\n\n\tconst serialized: Record<string, unknown> = {};\n\n\tfor (const [key, value] of Object.entries(config)) {\n\t\tif (key === 'shouldIgnoreUrl' && Array.isArray(value)) {\n\t\t\t// Serialize ignore patterns (strings and regexes only - functions not supported)\n\t\t\tserialized[key] = value\n\t\t\t\t.map((pattern) => {\n\t\t\t\t\tif (typeof pattern === 'string') {\n\t\t\t\t\t\treturn { type: 'string', value: pattern };\n\t\t\t\t\t}\n\t\t\t\t\tif (pattern instanceof RegExp) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'regex',\n\t\t\t\t\t\t\tvalue: pattern.source,\n\t\t\t\t\t\t\tflags: pattern.flags,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t// Skip functions - closures cannot be serialized\n\t\t\t\t\treturn null;\n\t\t\t\t})\n\t\t\t\t.filter(Boolean);\n\t\t} else if (key === 'ignoreRoutes' && Array.isArray(value)) {\n\t\t\t// Same handling for ignoreRoutes\n\t\t\tserialized[key] = value\n\t\t\t\t.map((pattern) => {\n\t\t\t\t\tif (typeof pattern === 'string') {\n\t\t\t\t\t\treturn { type: 'string', value: pattern };\n\t\t\t\t\t}\n\t\t\t\t\tif (pattern instanceof RegExp) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'regex',\n\t\t\t\t\t\t\tvalue: pattern.source,\n\t\t\t\t\t\t\tflags: pattern.flags,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t// Skip functions\n\t\t\t\t\treturn null;\n\t\t\t\t})\n\t\t\t\t.filter(Boolean);\n\t\t} else {\n\t\t\tserialized[key] = value;\n\t\t}\n\t}\n\n\treturn serialized;\n}\n",
47
48
  "import type { Span } from '@opentelemetry/api';\nimport dedent from 'dedent';\nimport { cloneElement, type ReactElement } from 'react';\nimport { renderToString } from 'react-dom/server';\nimport {\n\tgetTraceContextForInjection,\n\twithSpan,\n\twithSpanSync,\n} from 'reroute-js/telemetry/server';\nimport { loadConfig, type OGImageOptions, type OGOptions } from '../config';\nimport {\n\ttype Doc,\n\tduplicateQueryParamData,\n\tgenerateCollectionScripts,\n\tgenerateHydrationScripts,\n\tperformSSRSetup,\n\tsetGlobalSSRData,\n} from './lib';\nimport { applyIndexTemplate, loadIndexHtml } from './lib/html';\n\ntype SSRRenderOptions = {\n\tpathname: string;\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tbundleUrl: string;\n\tcachedCollections?: Record<string, unknown[]>;\n\tcachedTailwindCSS?: string;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\tminify?: boolean;\n\tmaxAge?: number;\n\tsearchParams?: URLSearchParams;\n\togConfig?: OGImageOptions;\n\togMetaConfig?: OGOptions;\n\tbaseUrl?: string;\n\tautoCanonical?: boolean;\n\tparentSpan?: Span | null;\n\t/** Request headers from the incoming HTTP request */\n\theaders?: Record<string, string>;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n};\n\ntype SSRRenderResult = {\n\thtml: string;\n\tstatus: number;\n};\n\n/**\n * Render a React component to a complete HTML document for SSR.\n * Uses synchronous rendering (renderToString) for full HTML generation.\n */\nasync function renderSSRDocument(\n\toptions: SSRRenderOptions,\n): Promise<SSRRenderResult> {\n\tconst {\n\t\tpathname,\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tbundleUrl,\n\t\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tmaxAge = 0,\n\t\tsearchParams,\n\t\togConfig,\n\t} = options;\n\n\t// Perform shared SSR setup\n\tconst setup = await performSSRSetup(\n\t\t{\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\tparentSpan: options.parentSpan,\n\t\t\tbundleUrl,\n\t\t\tmaxAge,\n\t\t\tsearchParams,\n\t\t\togConfig,\n\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\tbaseUrl: options.baseUrl,\n\t\t\tautoCanonical: options.autoCanonical,\n\t\t\tcachedCollections: options.cachedCollections,\n\t\t\tcachedTailwindCSS: options.cachedTailwindCSS,\n\t\t\theaders: options.headers,\n\t\t\ttitleSuffix: options.titleSuffix,\n\t\t},\n\t\tfalse, // not streaming\n\t);\n\n\t// Duplicate data for query param routes\n\tconst duplicatedData = duplicateQueryParamData(setup.ssrData);\n\tsetGlobalSSRData(duplicatedData);\n\n\t// Render React component to string\n\tconst appHtml = await withSpan('ssr.render.react', async (span) => {\n\t\tconst componentWithPathname = cloneElement<Doc>(rootComponent, {\n\t\t\tpathname,\n\t\t\tsearchParams,\n\t\t} as Doc);\n\t\tspan.setAttribute('reroute.pathname', pathname);\n\t\tconst html = renderToString(componentWithPathname);\n\t\tspan.setAttribute('reroute.html.final.size', html.length);\n\t\treturn html;\n\t});\n\n\t// Load base template\n\tconst baseTemplate = await withSpan('ssr.load.template', async (span) => {\n\t\tconst template = await loadIndexHtml(clientDir);\n\t\tspan.setAttribute('reroute.template.size', template.length);\n\t\treturn template;\n\t});\n\n\t// Generate collection scripts from accessed collections\n\tconst collectionScripts = generateCollectionScripts(setup.byCollectionForSSR);\n\n\t// Load config to get browser telemetry settings\n\tconst config = await loadConfig(cwd);\n\tconst browserTelemetryConfigRaw = config.telemetry?.browser as\n\t\t| Record<string, unknown>\n\t\t| undefined;\n\n\t// Serialize browser telemetry config (convert functions to strings for JSON)\n\tconst { serializeBrowserTelemetryConfig } = await import('./lib/serialize');\n\tconst browserTelemetryConfig = serializeBrowserTelemetryConfig(\n\t\tbrowserTelemetryConfigRaw,\n\t);\n\n\t// Extract trace context from parent span for distributed tracing\n\tconst traceContext = getTraceContextForInjection(options.parentSpan);\n\n\t// Generate all hydration scripts\n\tconst hydrationScript = await withSpan(\n\t\t'ssr.generate.scripts',\n\t\tasync (span) => {\n\t\t\tconst script = generateHydrationScripts(\n\t\t\t\tsetup.ssrData,\n\t\t\t\tisWatchMode,\n\t\t\t\tsetup.ssrError,\n\t\t\t\tcollectionScripts,\n\t\t\t\tsetup.preloadHydrationScript,\n\t\t\t\tbundleUrl,\n\t\t\t\tpathname,\n\t\t\t\tbrowserTelemetryConfig,\n\t\t\t\ttraceContext,\n\t\t\t\toptions.titleSuffix,\n\t\t\t);\n\t\t\tspan.setAttribute('reroute.scripts.size', script.length);\n\t\t\treturn script;\n\t\t},\n\t);\n\n\t// Determine final status (only override if value is set)\n\tlet statusOverride = setup.preloadStatusOverride;\n\tif (setup.statusContainer.value !== undefined) {\n\t\tstatusOverride = setup.statusContainer.value;\n\t}\n\tif (setup.metadataResult.statusOverride !== undefined) {\n\t\tstatusOverride = setup.metadataResult.statusOverride;\n\t}\n\n\t// Build combined head content\n\tconst extraHead = setup.bundlePreload + setup.preloadExtraHead;\n\tconst combinedHead = dedent(\n\t\t[\n\t\t\tdedent(head) || '',\n\t\t\tdedent(extraHead),\n\t\t\tdedent(setup.metadataResult.perPageHead),\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join('\\n'),\n\t);\n\n\t// Apply template with SSR content\n\tconst html = withSpanSync('ssr.apply.template', (span) => {\n\t\tconst result = applyIndexTemplate(baseTemplate, appHtml, {\n\t\t\thead: [setup.inlineStyleTag, combinedHead].filter(Boolean).join('\\n'),\n\t\t\thydrationScript,\n\t\t\tlang: setup.metadataResult.pageLang || lang,\n\t\t\tappId,\n\t\t});\n\t\tspan.setAttributes({\n\t\t\t'reroute.html.final.size': result.length,\n\t\t\t'reroute.html.original.size': appHtml.length,\n\t\t});\n\t\treturn result;\n\t});\n\n\treturn {\n\t\thtml,\n\t\tstatus: statusOverride || 200,\n\t};\n}\n\nexport { renderSSRDocument, type SSRRenderOptions, type SSRRenderResult };\n",
48
49
  "/**\n * Text and Markdown formatting for LLM-optimized content\n * Focuses on token efficiency: minimal metadata, maximum useful content\n *\n * Zero dependencies - uses lightweight regex-based conversion\n * Works great for 99% of cases without adding runtime deps\n */\n\n/**\n * Format content as plain text (.txt)\n * Token-efficient: No frontmatter, no URLs, just title + body\n */\nexport function formatAsText(content: {\n\ttitle?: string;\n\tbody: string;\n}): string {\n\tconst parts: string[] = [];\n\n\t// Add title if present (single line, no markdown)\n\tif (content.title) {\n\t\tparts.push(content.title);\n\t\tparts.push(''); // Blank line after title\n\t}\n\n\t// Add body (already cleaned text)\n\tparts.push(content.body);\n\n\treturn parts.join('\\n');\n}\n\n/**\n * Format content as markdown (.md)\n * Token-efficient: No frontmatter, but preserves markdown formatting\n */\nexport function formatAsMarkdown(content: {\n\ttitle?: string;\n\tmarkdown: string;\n}): string {\n\tconst parts: string[] = [];\n\n\t// Add title as h1 if present\n\tif (content.title) {\n\t\tparts.push(`# ${content.title}`);\n\t\tparts.push(''); // Blank line after title\n\t}\n\n\t// Add markdown content (preserves formatting)\n\tparts.push(content.markdown);\n\n\treturn parts.join('\\n');\n}\n\n/**\n * Strip HTML tags from text, preserving structure\n * Lightweight regex-based conversion with link preservation\n */\nexport function stripHtmlTags(html: string): string {\n\tlet text = html;\n\n\t// Convert links to readable format: \"text (url)\"\n\ttext = text.replace(\n\t\t/<a[^>]*href=[\"']([^\"']*)[\"'][^>]*>(.*?)<\\/a>/gi,\n\t\t'$2 ($1)',\n\t);\n\n\t// Replace block elements with newlines\n\ttext = text.replace(\n\t\t/<\\/(div|p|h[1-6]|li|tr|section|article|header|footer|nav)>/gi,\n\t\t'\\n',\n\t);\n\ttext = text.replace(/<br\\s*\\/?>/gi, '\\n');\n\ttext = text.replace(/<hr\\s*\\/?>/gi, '\\n---\\n');\n\n\t// Replace list items with bullets\n\ttext = text.replace(/<li[^>]*>/gi, '\\n• ');\n\n\t// Add spacing for headings\n\ttext = text.replace(/<h[1-6][^>]*>/gi, '\\n\\n');\n\ttext = text.replace(/<\\/h[1-6]>/gi, '\\n');\n\n\t// Remove script and style tags completely\n\ttext = text.replace(\n\t\t/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\t\t'',\n\t);\n\ttext = text.replace(/<style\\b[^<]*(?:(?!<\\/style>)<[^<]*)*<\\/style>/gi, '');\n\n\t// Remove all other HTML tags\n\ttext = text.replace(/<[^>]+>/g, '');\n\n\t// Decode common HTML entities\n\ttext = text.replace(/&nbsp;/g, ' ');\n\ttext = text.replace(/&amp;/g, '&');\n\ttext = text.replace(/&lt;/g, '<');\n\ttext = text.replace(/&gt;/g, '>');\n\ttext = text.replace(/&quot;/g, '\"');\n\ttext = text.replace(/&#39;/g, \"'\");\n\ttext = text.replace(/&apos;/g, \"'\");\n\ttext = text.replace(/&#x27;/g, \"'\");\n\n\t// Clean up excessive whitespace\n\ttext = text.replace(/[ \\t]+/g, ' '); // Multiple spaces → single space\n\ttext = text.replace(/\\n\\s+\\n/g, '\\n\\n'); // Clean blank lines\n\ttext = text.replace(/\\n{3,}/g, '\\n\\n'); // Max 2 consecutive newlines\n\n\treturn text.trim();\n}\n\n/**\n * Extract title from HTML content\n * Looks for h1, title tag, or first heading\n */\nexport function extractTitle(html: string): string | undefined {\n\t// Try h1 first (most common)\n\tconst h1Match = html.match(/<h1[^>]*>(.*?)<\\/h1>/i);\n\tif (h1Match) {\n\t\treturn stripHtmlTags(h1Match[1]).trim();\n\t}\n\n\t// Try title tag\n\tconst titleMatch = html.match(/<title[^>]*>(.*?)<\\/title>/i);\n\tif (titleMatch) {\n\t\treturn stripHtmlTags(titleMatch[1]).trim();\n\t}\n\n\t// Try any heading\n\tconst headingMatch = html.match(/<h[1-6][^>]*>(.*?)<\\/h[1-6]>/i);\n\tif (headingMatch) {\n\t\treturn stripHtmlTags(headingMatch[1]).trim();\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Convert HTML to markdown\n * Lightweight regex-based conversion that preserves links and structure\n */\nexport function htmlToMarkdown(html: string): string {\n\tlet md = html;\n\n\t// Convert headings\n\tmd = md.replace(/<h1[^>]*>(.*?)<\\/h1>/gi, '\\n# $1\\n');\n\tmd = md.replace(/<h2[^>]*>(.*?)<\\/h2>/gi, '\\n## $1\\n');\n\tmd = md.replace(/<h3[^>]*>(.*?)<\\/h3>/gi, '\\n### $1\\n');\n\tmd = md.replace(/<h4[^>]*>(.*?)<\\/h4>/gi, '\\n#### $1\\n');\n\tmd = md.replace(/<h5[^>]*>(.*?)<\\/h5>/gi, '\\n##### $1\\n');\n\tmd = md.replace(/<h6[^>]*>(.*?)<\\/h6>/gi, '\\n###### $1\\n');\n\n\t// Convert links\n\tmd = md.replace(/<a[^>]*href=\"([^\"]*)\"[^>]*>(.*?)<\\/a>/gi, '[$2]($1)');\n\n\t// Convert images\n\tmd = md.replace(\n\t\t/<img[^>]*src=\"([^\"]*)\"[^>]*alt=\"([^\"]*)\"[^>]*\\/?>/gi,\n\t\t'![$2]($1)',\n\t);\n\n\t// Convert strong/bold\n\tmd = md.replace(/<(strong|b)(?:\\s+[^>]*)?>(.+?)<\\/\\1>/gi, '**$2**');\n\n\t// Convert emphasis/italic\n\tmd = md.replace(/<(em|i)(?:\\s+[^>]*)?>(.+?)<\\/\\1>/gi, '*$2*');\n\n\t// Convert code blocks\n\tmd = md.replace(\n\t\t/<pre[^>]*><code[^>]*>(.*?)<\\/code><\\/pre>/gis,\n\t\t'\\n```\\n$1\\n```\\n',\n\t);\n\tmd = md.replace(/<code[^>]*>(.*?)<\\/code>/gi, '`$1`');\n\n\t// Convert lists (process li elements first, then containers)\n\tmd = md.replace(/<li[^>]*>(.*?)<\\/li>/gis, '\\n- $1');\n\tmd = md.replace(/<\\/?ul[^>]*>/gi, '\\n');\n\tmd = md.replace(/<\\/?ol[^>]*>/gi, '\\n');\n\n\t// Convert paragraphs\n\tmd = md.replace(/<p[^>]*>/gi, '\\n');\n\tmd = md.replace(/<\\/p>/gi, '\\n');\n\n\t// Convert line breaks\n\tmd = md.replace(/<br\\s*\\/?>/gi, '\\n');\n\tmd = md.replace(/<hr\\s*\\/?>/gi, '\\n---\\n');\n\n\t// Remove script and style tags\n\tmd = md.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, '');\n\tmd = md.replace(/<style\\b[^<]*(?:(?!<\\/style>)<[^<]*)*<\\/style>/gi, '');\n\n\t// Remove remaining HTML tags\n\tmd = md.replace(/<[^>]+>/g, '');\n\n\t// Decode HTML entities\n\tmd = md.replace(/&nbsp;/g, ' ');\n\tmd = md.replace(/&amp;/g, '&');\n\tmd = md.replace(/&lt;/g, '<');\n\tmd = md.replace(/&gt;/g, '>');\n\tmd = md.replace(/&quot;/g, '\"');\n\tmd = md.replace(/&#39;/g, \"'\");\n\tmd = md.replace(/&apos;/g, \"'\");\n\tmd = md.replace(/&#x27;/g, \"'\");\n\n\t// Clean up excessive whitespace\n\tmd = md.replace(/[ \\t]+/g, ' ');\n\tmd = md.replace(/\\n\\s+\\n/g, '\\n\\n');\n\tmd = md.replace(/\\n{3,}/g, '\\n\\n');\n\n\treturn md.trim();\n}\n\n/**\n * Generate footer for llms.txt index\n * Educates LLMs about available formats\n */\nexport function generateLLMsFooter(): string {\n\treturn '---\\nFormats: .txt | .md | Accept: text/plain | Accept: text/markdown';\n}\n",
@@ -67,7 +68,7 @@
67
68
  "export * from './bundler';\nexport * from './config';\nexport * from './content';\nexport * from './llms';\nexport * from './og';\nexport * from './robots';\nexport * from './rss';\nexport * from './sitemap';\nexport * from './ssr';\n",
68
69
  "export * from './src';\n"
69
70
  ],
70
- "mappings": "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",
71
- "debugId": "E7634759DB570E2264756E2164756E21",
71
+ "mappings": "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",
72
+ "debugId": "87E733A691C556DC64756E2164756E21",
72
73
  "names": []
73
74
  }