reroute-js 1.0.0-alpha.11 → 1.0.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/bin.d.ts +1 -1
- package/cli/bin.js +342 -274
- package/cli/bin.js.map +9 -8
- package/cli/index.d.ts +1 -1
- package/cli/index.js +4 -4
- package/cli/index.js.map +3 -3
- package/cli/src/cli.d.ts +1 -1
- package/cli/src/commands/analyze.d.ts +1 -1
- package/cli/src/commands/build.d.ts +1 -1
- package/cli/src/commands/dev.d.ts +1 -1
- package/cli/src/commands/gen.d.ts +1 -1
- package/cli/src/commands/gen.d.ts.map +1 -1
- package/cli/src/commands/index.d.ts +1 -1
- package/cli/src/commands/init.d.ts +1 -1
- package/cli/src/commands/lib/assets.d.ts +1 -1
- package/cli/src/commands/lib/bundler.d.ts +1 -1
- package/cli/src/commands/lib/command.d.ts +1 -1
- package/cli/src/commands/lib/env.d.ts +1 -1
- package/cli/src/commands/lib/index.d.ts +1 -1
- package/cli/src/commands/lib/log.d.ts +1 -1
- package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
- package/cli/src/commands/lib/markdown/index.d.ts +1 -1
- package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
- package/cli/src/commands/lib/production.d.ts +1 -1
- package/cli/src/commands/lib/server.d.ts +1 -1
- package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
- package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
- package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
- package/cli/src/commands/lib/theme.d.ts +2 -2
- package/cli/src/commands/lib/theme.d.ts.map +1 -1
- package/cli/src/commands/lib/version.d.ts +1 -1
- package/cli/src/commands/lib/watch.d.ts +26 -0
- package/cli/src/commands/lib/watch.d.ts.map +1 -0
- package/cli/src/commands/og.d.ts +1 -1
- package/cli/src/commands/start.d.ts +1 -1
- package/cli/src/index.d.ts +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +34 -31
- package/core/index.js.map +5 -5
- package/core/src/bundler/hash.d.ts +1 -1
- package/core/src/bundler/index.d.ts +1 -1
- package/core/src/config.d.ts +6 -5
- package/core/src/config.d.ts.map +1 -1
- package/core/src/content/discovery.d.ts +1 -1
- package/core/src/content/index.d.ts +1 -1
- package/core/src/content/metadata.d.ts +1 -1
- package/core/src/i18n/catalog.d.ts +1 -1
- package/core/src/i18n/discover.d.ts +1 -1
- package/core/src/i18n/index.d.ts +1 -1
- package/core/src/i18n/messages.d.ts +1 -1
- package/core/src/i18n/negotiate.d.ts +1 -1
- package/core/src/i18n/pathname.d.ts +1 -1
- package/core/src/i18n/resolve.d.ts +1 -1
- package/core/src/i18n/types.d.ts +1 -1
- package/core/src/index.d.ts +1 -1
- package/core/src/llms/discovery.d.ts +1 -1
- package/core/src/llms/extractor.d.ts +1 -1
- package/core/src/llms/formatter.d.ts +1 -1
- package/core/src/llms/full-generator.d.ts +1 -1
- package/core/src/llms/index-generator.d.ts +1 -1
- package/core/src/llms/index.d.ts +1 -1
- package/core/src/og/discovery.d.ts +1 -1
- package/core/src/og/index.d.ts +1 -1
- package/core/src/og/meta.d.ts +1 -1
- package/core/src/og/render.d.ts +1 -1
- package/core/src/og/types.d.ts +1 -1
- package/core/src/robots/discovery.d.ts +1 -1
- package/core/src/robots/generator.d.ts +1 -1
- package/core/src/robots/index.d.ts +1 -1
- package/core/src/robots/policies.d.ts +1 -1
- package/core/src/rss/discovery.d.ts +1 -1
- package/core/src/rss/generator.d.ts +1 -1
- package/core/src/rss/index.d.ts +1 -1
- package/core/src/sitemap/discovery.d.ts +1 -1
- package/core/src/sitemap/generator.d.ts +1 -1
- package/core/src/sitemap/index.d.ts +1 -1
- package/core/src/ssr/index.d.ts +1 -1
- package/core/src/ssr/lib/cache.d.ts +1 -1
- package/core/src/ssr/lib/cleanup.d.ts +1 -1
- package/core/src/ssr/lib/collections.d.ts +1 -1
- package/core/src/ssr/lib/compression.d.ts +1 -1
- package/core/src/ssr/lib/compute/content.d.ts +1 -1
- package/core/src/ssr/lib/compute/index.d.ts +1 -1
- package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
- package/core/src/ssr/lib/compute/routes.d.ts +1 -1
- package/core/src/ssr/lib/content-path.d.ts +1 -1
- package/core/src/ssr/lib/data.d.ts +1 -1
- package/core/src/ssr/lib/html.d.ts +1 -1
- package/core/src/ssr/lib/imports.d.ts +1 -1
- package/core/src/ssr/lib/index.d.ts +1 -1
- package/core/src/ssr/lib/layouts.d.ts +1 -1
- package/core/src/ssr/lib/metadata.d.ts +1 -1
- package/core/src/ssr/lib/mime.d.ts +1 -1
- package/core/src/ssr/lib/modules.d.ts +1 -1
- package/core/src/ssr/lib/path.d.ts +1 -1
- package/core/src/ssr/lib/preload.d.ts +1 -1
- package/core/src/ssr/lib/route-match.d.ts +1 -1
- package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
- package/core/src/ssr/lib/scripts/data.d.ts +1 -1
- package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
- package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
- package/core/src/ssr/lib/scripts/index.d.ts +1 -1
- package/core/src/ssr/lib/seed.d.ts +1 -1
- package/core/src/ssr/lib/serialize.d.ts +1 -1
- package/core/src/ssr/lib/setup.d.ts +1 -1
- package/core/src/ssr/lib/styles.d.ts +7 -4
- package/core/src/ssr/lib/styles.d.ts.map +1 -1
- package/core/src/ssr/lib/template.d.ts +1 -1
- package/core/src/ssr/lib/types.d.ts +1 -1
- package/core/src/ssr/render.d.ts +1 -1
- package/core/src/ssr/stream.d.ts +1 -1
- package/elysia/index.d.ts +1 -1
- package/elysia/index.js +114 -60
- package/elysia/index.js.map +12 -11
- package/elysia/src/index.d.ts +1 -1
- package/elysia/src/libs/assets.d.ts +1 -1
- package/elysia/src/libs/cache.d.ts +6 -1
- package/elysia/src/libs/cache.d.ts.map +1 -1
- package/elysia/src/libs/caching.d.ts +1 -1
- package/elysia/src/libs/http.d.ts +1 -1
- package/elysia/src/libs/i18n.d.ts +1 -1
- package/elysia/src/libs/image.d.ts +1 -1
- package/elysia/src/libs/index.d.ts +1 -1
- package/elysia/src/libs/llms.d.ts +1 -1
- package/elysia/src/libs/response.d.ts +1 -1
- package/elysia/src/libs/serving.d.ts +1 -1
- package/elysia/src/plugin.d.ts +1 -1
- package/elysia/src/plugin.d.ts.map +1 -1
- package/elysia/src/routes/artifacts.d.ts +1 -1
- package/elysia/src/routes/artifacts.d.ts.map +1 -1
- package/elysia/src/routes/content.d.ts +1 -1
- package/elysia/src/routes/image.d.ts +1 -1
- package/elysia/src/routes/index.d.ts +1 -1
- package/elysia/src/routes/internal.d.ts +1 -1
- package/elysia/src/routes/internal.d.ts.map +1 -1
- package/elysia/src/routes/liveReloadClient.d.ts +16 -0
- package/elysia/src/routes/liveReloadClient.d.ts.map +1 -0
- package/elysia/src/routes/llms.d.ts +1 -1
- package/elysia/src/routes/og.d.ts +1 -1
- package/elysia/src/routes/redirects.d.ts +1 -1
- package/elysia/src/routes/robots.d.ts +1 -1
- package/elysia/src/routes/rss.d.ts +1 -1
- package/elysia/src/routes/search.d.ts +1 -1
- package/elysia/src/routes/sitemap.d.ts +1 -1
- package/elysia/src/routes/ssr.d.ts +1 -1
- package/elysia/src/routes/ssr.d.ts.map +1 -1
- package/elysia/src/routes/static.d.ts +1 -1
- package/elysia/src/routes/themeCssRefresh.d.ts +1 -1
- package/elysia/src/types.d.ts +1 -1
- package/package.json +1 -1
- package/react/index.d.ts +1 -1
- package/react/index.js +2 -2
- package/react/index.js.map +1 -1
- package/react/src/components/ClientOnly.d.ts +1 -1
- package/react/src/components/ContentRoute.d.ts +1 -1
- package/react/src/components/Image.d.ts +1 -1
- package/react/src/components/LazyRoute.d.ts +1 -1
- package/react/src/components/Link.d.ts +1 -1
- package/react/src/components/Markdown.d.ts +1 -1
- package/react/src/components/Outlet.d.ts +1 -1
- package/react/src/components/index.d.ts +1 -1
- package/react/src/hooks/index.d.ts +1 -1
- package/react/src/hooks/useContent.d.ts +1 -1
- package/react/src/hooks/useData.d.ts +1 -1
- package/react/src/hooks/useFeed.d.ts +1 -1
- package/react/src/hooks/useLayoutData.d.ts +1 -1
- package/react/src/hooks/useLlms.d.ts +1 -1
- package/react/src/hooks/useNavigate.d.ts +1 -1
- package/react/src/hooks/useParams.d.ts +1 -1
- package/react/src/hooks/useRouter.d.ts +1 -1
- package/react/src/hooks/useSearch.d.ts +1 -1
- package/react/src/hooks/useSearchParams.d.ts +1 -1
- package/react/src/hooks/useToc.d.ts +1 -1
- package/react/src/i18n/LocaleProvider.d.ts +1 -1
- package/react/src/i18n/helpers.d.ts +1 -1
- package/react/src/i18n/index.d.ts +1 -1
- package/react/src/index.d.ts +1 -1
- package/react/src/lib/collection.d.ts +1 -1
- package/react/src/lib/content.d.ts +1 -1
- package/react/src/lib/head.d.ts +1 -1
- package/react/src/lib/index.d.ts +1 -1
- package/react/src/lib/lazy-route.d.ts +1 -1
- package/react/src/lib/route-loader.d.ts +1 -1
- package/react/src/providers/ContentProvider.d.ts +1 -1
- package/react/src/providers/RerouteProvider.d.ts +1 -1
- package/react/src/providers/RouterProvider.d.ts +1 -1
- package/react/src/providers/index.d.ts +1 -1
- package/react/src/types/any.d.ts +1 -1
- package/react/src/types/index.d.ts +1 -1
- package/react/src/types/router.d.ts +1 -1
- package/telemetry/react.d.ts +1 -1
- package/telemetry/react.js +2 -2
- package/telemetry/react.js.map +1 -1
- package/telemetry/server.d.ts +1 -1
- package/telemetry/server.js +2 -2
- package/telemetry/server.js.map +4 -4
- package/telemetry/src/react/api.d.ts +1 -1
- package/telemetry/src/react/context.d.ts +1 -1
- package/telemetry/src/react/index.d.ts +1 -1
- package/telemetry/src/react/telemetry.d.ts +1 -1
- package/telemetry/src/server/context.d.ts +1 -1
- package/telemetry/src/server/headers/extractor.d.ts +1 -1
- package/telemetry/src/server/headers/index.d.ts +1 -1
- package/telemetry/src/server/headers/presets.d.ts +1 -1
- package/telemetry/src/server/index.d.ts +1 -1
- package/telemetry/src/server/instrumentation.d.ts +1 -1
- package/telemetry/src/server/plugin.d.ts +1 -1
- package/telemetry/src/server/sourcemap.d.ts +1 -1
package/elysia/index.js.map
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
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/core/src/i18n/catalog.ts", "../../packages/core/src/i18n/discover.ts", "../../packages/core/src/i18n/messages.ts", "../../packages/core/src/i18n/negotiate.ts", "../../packages/core/src/i18n/pathname.ts", "../../packages/core/src/i18n/resolve.ts", "../../packages/core/src/i18n/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/content-path.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/discovery.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", "../../packages/elysia/src/plugin.ts", "../../packages/elysia/src/libs/
|
|
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/core/src/i18n/catalog.ts", "../../packages/core/src/i18n/discover.ts", "../../packages/core/src/i18n/messages.ts", "../../packages/core/src/i18n/negotiate.ts", "../../packages/core/src/i18n/pathname.ts", "../../packages/core/src/i18n/resolve.ts", "../../packages/core/src/i18n/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/content-path.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/discovery.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", "../../packages/elysia/src/plugin.ts", "../../packages/elysia/src/libs/cache.ts", "../../packages/elysia/src/libs/image.ts", "../../packages/elysia/src/routes/artifacts.ts", "../../packages/elysia/src/libs/serving.ts", "../../packages/elysia/src/libs/response.ts", "../../packages/elysia/src/routes/content.ts", "../../packages/elysia/src/routes/image.ts", "../../packages/elysia/src/routes/internal.ts", "../../packages/elysia/src/libs/http.ts", "../../packages/elysia/src/routes/liveReloadClient.ts", "../../packages/elysia/src/routes/themeCssRefresh.ts", "../../packages/elysia/src/routes/llms.ts", "../../packages/elysia/src/libs/llms.ts", "../../packages/elysia/src/routes/og.ts", "../../packages/elysia/src/routes/redirects.ts", "../../packages/elysia/src/routes/robots.ts", "../../packages/elysia/src/routes/rss.ts", "../../packages/elysia/src/libs/caching.ts", "../../packages/elysia/src/routes/search.ts", "../../packages/elysia/src/routes/sitemap.ts", "../../packages/elysia/src/routes/ssr.ts", "../../packages/elysia/src/libs/i18n.ts", "../../packages/elysia/src/routes/static.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
|
-
"import { pathToFileURL } from 'node:url';\nimport type { ComponentType } from 'react';\nimport type { I18nOptions } from './i18n/types';\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 * Preferences for how fetched content may be used (Content Signals).\n * Omitted keys default to yes.\n */\ninterface ContentSignalPolicy {\n\t/** Use in search results */\n\tsearch?: boolean;\n\n\t/** Use as live context for an AI answer */\n\taiInput?: boolean;\n\n\t/** Use to train or fine-tune a model */\n\taiTrain?: boolean;\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/**\n\t * Content-Signal header on HTML and markdown/text responses.\n\t * Default when enabled: `ai-train=yes, search=yes, ai-input=yes`.\n\t * Set `false` to omit the header.\n\t */\n\tcontentSignal?: ContentSignalPolicy | false;\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 * Include each page's description next to the index link\n\t * (`- [Title](url.txt): description`). Default: true.\n\t * Set false for compact title+link only.\n\t */\n\tindexSummaries?: boolean;\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/**\n\t * Content-Signal line on the `User-agent: *` group.\n\t * When omitted, no line is written (the plugin copies `llms.contentSignal`\n\t * when both features are enabled).\n\t */\n\tcontentSignal?: ContentSignalPolicy | false;\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\t/** Optional i18n overrides. Feature still requires a `locales/` directory. */\n\ti18n?: I18nOptions;\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 ContentSignalPolicy,\n\ttype I18nOptions,\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",
|
|
6
|
+
"import { pathToFileURL } from 'node:url';\nimport type { ComponentType } from 'react';\nimport type { I18nOptions } from './i18n/types';\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 * Preferences for how fetched content may be used (Content Signals).\n * Omitted keys default to yes.\n */\ninterface ContentSignalPolicy {\n\t/** Use in search results */\n\tsearch?: boolean;\n\n\t/** Use as live context for an AI answer */\n\taiInput?: boolean;\n\n\t/** Use to train or fine-tune a model */\n\taiTrain?: boolean;\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/**\n\t * Content-Signal header on HTML and markdown/text responses.\n\t * Default when enabled: `ai-train=yes, search=yes, ai-input=yes`.\n\t * Set `false` to omit the header.\n\t */\n\tcontentSignal?: ContentSignalPolicy | false;\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 * Include each page's description next to the index link\n\t * (`- [Title](url.txt): description`). Default: true.\n\t * Set false for compact title+link only.\n\t */\n\tindexSummaries?: boolean;\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/**\n\t * Content-Signal line on the `User-agent: *` group.\n\t * When omitted, no line is written (the plugin copies `llms.contentSignal`\n\t * when both features are enabled).\n\t */\n\tcontentSignal?: ContentSignalPolicy | false;\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 in-process HTML, `ssr.data()`, and `/__reroute_data` caches.\n */\ninterface ServerOptions {\n\t/**\n\t * Enable server-side caching.\n\t * `false` recomputes `ssr.data()` on every origin request.\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\t/** Optional i18n overrides. Feature still requires a `locales/` directory. */\n\ti18n?: I18nOptions;\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 in-process HTML and ssr.data() caches (use behind a CDN)\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 ContentSignalPolicy,\n\ttype I18nOptions,\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",
|
|
7
7
|
"export function join(...parts: string[]): string {\n\treturn parts.join('/').replace(/\\/+/g, '/');\n}\n\nexport function extname(p: string): string {\n\tconst i = p.lastIndexOf('.');\n\treturn i >= 0 ? p.slice(i) : '';\n}\n\nexport function basename(p: string, ext?: string): string {\n\tconst name = p.replace(/\\\\/g, '/').split('/').pop() || p;\n\treturn ext && name.endsWith(ext) ? name.slice(0, -ext.length) : name;\n}\n\nexport function stripStart(p: string, ch: string): string {\n\treturn p.startsWith(ch) ? p.slice(ch.length) : p;\n}\n\nexport function stripEnd(p: string, ch: string): string {\n\treturn p.endsWith(ch) ? p.slice(0, -ch.length) : p;\n}\n",
|
|
8
8
|
"import { readdir, stat } from 'node:fs/promises';\nimport { join } from '../ssr/lib/path';\n\nexport async function listContentFiles(\n\tdir: string,\n\tbaseRel: string,\n): Promise<string[]> {\n\tconst out: string[] = [];\n\ttry {\n\t\tconst entries = await readdir(dir, { withFileTypes: true });\n\t\tfor (const entry of entries) {\n\t\t\tconst full = join(dir, entry.name);\n\t\t\tconst rel = join(baseRel, entry.name);\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tconst nested = await listContentFiles(full, rel);\n\t\t\t\tout.push(...nested);\n\t\t\t} else if (entry.isFile()) {\n\t\t\t\tif (/\\.(tsx|ts)$/.test(entry.name) && !entry.name.startsWith('_')) {\n\t\t\t\t\tout.push(rel);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// ignore missing dirs\n\t}\n\treturn out;\n}\n\n// buildContentDTOs removed - content is now fully pre-generated at build time\n\nexport async function discoverCollections(\n\tclientDir: string,\n): Promise<string[]> {\n\tconst collections = new Set<string>();\n\n\t// First, check for bundled collections in .reroute/collections/ (production)\n\t// clientDir in production is .reroute, so check for collections/*.js\n\tconst bundledCollectionsDir = join(clientDir, 'collections');\n\ttry {\n\t\tconst bundledEntries = await readdir(bundledCollectionsDir, {\n\t\t\twithFileTypes: true,\n\t\t});\n\t\tfor (const entry of bundledEntries) {\n\t\t\tif (entry.isFile() && entry.name.endsWith('.js')) {\n\t\t\t\t// Extract collection name from filename (e.g., blog.js -> blog)\n\t\t\t\tconst collectionName = entry.name.replace(/\\.js$/, '');\n\t\t\t\tcollections.add(collectionName);\n\t\t\t}\n\t\t}\n\t\t// If we found bundled collections, return them\n\t\tif (collections.size > 0) {\n\t\t\treturn Array.from(collections);\n\t\t}\n\t} catch {\n\t\t// .reroute/collections doesn't exist, continue to dev mode discovery\n\t}\n\n\t// Fallback: scan routes/*/content for dev mode\n\tconst root = join(clientDir, 'routes');\n\ttry {\n\t\tconst entries = await readdir(root, { withFileTypes: true });\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tconst contentDir = join(root, entry.name, 'content');\n\t\t\t\ttry {\n\t\t\t\t\tawait stat(contentDir);\n\t\t\t\t\tcollections.add(entry.name);\n\t\t\t\t} catch {\n\t\t\t\t\t// content directory doesn't exist, skip\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// routes directory doesn't exist\n\t}\n\treturn Array.from(collections);\n}\n",
|
|
9
9
|
"import { stat } from 'node:fs/promises';\nimport { pathToFileURL } from 'node:url';\nimport type { OGOptions } from '../config';\nimport type { ContentMeta, Doc } from '../ssr/lib/types';\n\nexport async function getContentMeta(\n\tabsPath: string,\n\tisWatchMode: boolean,\n): Promise<ContentMeta> {\n\ttry {\n\t\tconst url = pathToFileURL(absPath).href;\n\t\tconst mod = await import(`${url}${isWatchMode ? `?t=${Date.now()}` : ''}`);\n\t\tconst meta: unknown = (mod as Doc).meta || {};\n\t\tif (meta && typeof meta === 'object') return meta as ContentMeta;\n\t\treturn {};\n\t} catch {\n\t\ttry {\n\t\t\tconst s = await stat(absPath);\n\t\t\treturn { date: new Date(s.mtimeMs).toISOString() };\n\t\t} catch {\n\t\t\treturn {};\n\t\t}\n\t}\n}\n\n/**\n * Build a minimal <head> snippet from content metadata.\n * Generates:\n * - <title>\n * - <meta name=\"description\">\n * - Required Open Graph tags: og:title, og:type, og:description\n * - Twitter/X card tags: twitter:card, twitter:title, twitter:description\n * Note: og:url, og:image, and twitter:image are generated separately in metadata.ts and og/meta.ts\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: building head from meta is complex\nexport function buildHeadFromMeta(\n\tmeta: ContentMeta | undefined | null,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): string {\n\tif (!meta || typeof meta !== 'object') return '';\n\tconst parts: string[] = [];\n\tconst rawTitle = typeof meta.title === 'string' ? meta.title : undefined;\n\t// Apply title suffix if configured and not already present\n\tconst title =\n\t\trawTitle && titleSuffix && !rawTitle.endsWith(titleSuffix)\n\t\t\t? `${rawTitle}${titleSuffix}`\n\t\t\t: rawTitle;\n\tconst description =\n\t\ttypeof meta.description === 'string'\n\t\t\t? meta.description\n\t\t\t: typeof meta.excerpt === 'string'\n\t\t\t\t? meta.excerpt\n\t\t\t\t: undefined;\n\n\t// Standard HTML tags\n\tif (title) parts.push(`<title>${escapeHtml(title)}</title>`);\n\tif (description)\n\t\tparts.push(\n\t\t\t`<meta name=\"description\" content=\"${escapeHtml(description)}\" />`,\n\t\t);\n\n\t// Required Open Graph tags (og:url and og:image are handled separately)\n\t// og:type defaults from config or \"website\" for most pages, can be overridden via meta.ogType or ssr.head\n\tconst ogType =\n\t\ttypeof meta.ogType === 'string'\n\t\t\t? meta.ogType\n\t\t\t: ogConfig?.defaultType || 'website';\n\tparts.push(`<meta property=\"og:type\" content=\"${escapeHtml(ogType)}\" />`);\n\n\tif (title) {\n\t\tparts.push(`<meta property=\"og:title\" content=\"${escapeHtml(title)}\" />`);\n\t}\n\n\t// Use siteDescription from config as fallback if no page description\n\tconst finalDescription = description || ogConfig?.siteDescription;\n\tif (finalDescription) {\n\t\tparts.push(\n\t\t\t`<meta property=\"og:description\" content=\"${escapeHtml(finalDescription)}\" />`,\n\t\t);\n\t}\n\n\t// Twitter/X card tags (mirror OG tags for consistency)\n\t// Generate twitter:card with config value or sensible default\n\tconst twitterCard = ogConfig?.twitterCard || 'summary_large_image';\n\tparts.push(`<meta name=\"twitter:card\" content=\"${twitterCard}\" />`);\n\n\tif (title) {\n\t\tparts.push(`<meta name=\"twitter:title\" content=\"${escapeHtml(title)}\" />`);\n\t}\n\n\tif (finalDescription) {\n\t\tparts.push(\n\t\t\t`<meta name=\"twitter:description\" content=\"${escapeHtml(finalDescription)}\" />`,\n\t\t);\n\t}\n\n\treturn parts.length ? `\\n${parts.join('\\n')}` : '';\n}\n\nfunction escapeHtml(input: string): string {\n\treturn input\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/'/g, ''');\n}\n",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"import { resolveContentPathParts } from '../content-path';\nimport { escapeJsonForScript } from './escape';\n\n/**\n * Duplicate SSR data for query param routes.\n * Stores at both /path?query and /path so useData() can find it.\n */\nexport function duplicateQueryParamData(\n\tssrData: Record<string, unknown>,\n): Record<string, unknown> {\n\tconst duplicated: Record<string, unknown> = {};\n\tfor (const [key, value] of Object.entries(ssrData)) {\n\t\tduplicated[key] = value;\n\t\tconst pathnameOnly = key.split('?')[0];\n\t\tif (pathnameOnly !== key) {\n\t\t\tduplicated[pathnameOnly] = value;\n\t\t}\n\t}\n\treturn duplicated;\n}\n\n/**\n * Get the content key from a pathname (e.g., /blog/my-post -> blog:my-post,\n * /blog/pt-BR/my-post -> blog:my-post:pt-BR)\n */\nfunction getContentKeyFromPathname(pathname: string): string | null {\n\treturn resolveContentPathParts(pathname)?.key ?? null;\n}\n\n/**\n * Create inline script for i18n hydration.\n */\nfunction createI18nScript(i18n?: Record<string, unknown>): string {\n\tif (!i18n?.enabled) return '';\n\ttry {\n\t\tconst json = escapeJsonForScript(JSON.stringify(i18n));\n\t\treturn `<script>(function(){try{var w=(typeof window!=='undefined'?window:globalThis);w.__REROUTE_I18N__=${json};}catch(e){}})();</script>`;\n\t} catch (error) {\n\t\tconsole.error('[reroute] Failed to serialize i18n hydration:', error);\n\t\treturn '';\n\t}\n}\n\n/**\n * Create inline script that captures DOM content HTML BEFORE React hydrates.\n * This eliminates the need to duplicate HTML in the response - we just read it from the DOM.\n * Must be placed BEFORE the React bundle script.\n *\n * Also sets __REROUTE_INITIAL_HYDRATION__ flag to true so components know this is\n * the first render and should not replace SSR'd content.\n */\nexport function createContentCaptureScript(): string {\n\t// This script:\n\t// 1. Sets initial hydration flag so components know not to replace content\n\t// 2. Finds all [data-reroute-key] elements and captures their innerHTML\n\t// into __REROUTE_CONTENT_HTML__ before React runs and potentially modifies them\n\t// 3. Finds the [data-reroute-route=\"ssr\"] element and captures its innerHTML\n\t// into __REROUTE_ROUTE_HTML__ for LazyRoute hydration\n\treturn `<script>(function(){try{var w=window;w.__REROUTE_INITIAL_HYDRATION__=true;var h={};document.querySelectorAll('[data-reroute-key]').forEach(function(el){var k=el.getAttribute('data-reroute-key');if(k)h[k]=el.innerHTML;});w.__REROUTE_CONTENT_HTML__=h;var r=document.querySelector('[data-reroute-route=\"ssr\"]');if(r)w.__REROUTE_ROUTE_HTML__=r.innerHTML;}catch(e){}})();</script>`;\n}\n\n/**\n * Create inline script for SSR exports hydration (includes toc, meta, etc.)\n * This ensures hooks like useToc have access to server-side data during hydration\n * Only includes data for the current pathname to avoid cross-request pollution\n */\nexport function createSSRExportsScript(pathname: string): string {\n\ttry {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: dynamic global access\n\t\tconst g = globalThis as any;\n\t\tconst ssrExports = g.__REROUTE_SSR_EXPORTS__;\n\n\t\tif (!ssrExports || typeof ssrExports !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\t// Only serialize the current page's exports, not all accumulated exports\n\t\tconst currentKey = getContentKeyFromPathname(pathname);\n\t\tif (!currentKey) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst currentExports = ssrExports[currentKey];\n\t\tif (!currentExports) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst filteredExports = { [currentKey]: currentExports };\n\t\tconst exportsJson = escapeJsonForScript(JSON.stringify(filteredExports));\n\n\t\treturn `<script>(function(){try{var w=(typeof window!=='undefined'?window:globalThis);w.__REROUTE_SSR_EXPORTS__=${exportsJson};}catch(e){}})();</script>`;\n\t} catch (error) {\n\t\tconsole.error('[reroute] Failed to create SSR exports script:', error);\n\t\treturn '';\n\t}\n}\n\n/**\n * Create inline script for browser telemetry config hydration\n * Injects telemetry.browser config so TelemetryProvider can use it\n */\nfunction createTelemetryConfigScript(\n\tbrowserTelemetryConfig?: Record<string, unknown>,\n): string {\n\tif (\n\t\t!browserTelemetryConfig ||\n\t\tObject.keys(browserTelemetryConfig).length === 0\n\t) {\n\t\treturn '';\n\t}\n\n\ttry {\n\t\tconst configJson = escapeJsonForScript(\n\t\t\tJSON.stringify(browserTelemetryConfig),\n\t\t);\n\t\treturn `<script>(function(){try{var w=(typeof window!=='undefined'?window:globalThis);w.__REROUTE_TELEMETRY_BROWSER__=${configJson};}catch(e){}})();</script>`;\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t'[reroute] Failed to serialize browser telemetry config:',\n\t\t\terror,\n\t\t);\n\t\treturn '';\n\t}\n}\n\n/**\n * Create inline script for trace context injection\n * Injects W3C Trace Context so browser spans can link to server spans\n */\nfunction createTraceContextScript(traceContext?: {\n\ttraceparent?: string;\n\ttracestate?: string;\n}): string {\n\tif (\n\t\t!traceContext?.traceparent ||\n\t\ttypeof traceContext.traceparent !== 'string'\n\t) {\n\t\treturn '';\n\t}\n\n\ttry {\n\t\tconst contextJson = escapeJsonForScript(JSON.stringify(traceContext));\n\t\treturn `<script>(function(){try{var w=(typeof window!=='undefined'?window:globalThis);w.__REROUTE_TRACE_CONTEXT__=${contextJson};}catch(e){}})();</script>`;\n\t} catch (error) {\n\t\tconsole.error('[reroute] Failed to serialize trace context:', error);\n\t\treturn '';\n\t}\n}\n\n/**\n * Create inline script for title suffix hydration\n * Injects titleSuffix so client-side navigation maintains the suffix\n */\nfunction createTitleSuffixScript(titleSuffix?: string): string {\n\tif (!titleSuffix) {\n\t\treturn '';\n\t}\n\n\ttry {\n\t\tconst suffixJson = escapeJsonForScript(JSON.stringify(titleSuffix));\n\t\treturn `<script>(function(){try{var w=(typeof window!=='undefined'?window:globalThis);w.__REROUTE_TITLE_SUFFIX__=${suffixJson};}catch(e){}})();</script>`;\n\t} catch (error) {\n\t\tconsole.error('[reroute] Failed to serialize title suffix:', error);\n\t\treturn '';\n\t}\n}\n\n/**\n * Create inline script for SSR pathname hydration\n * Tells the client which pathname was SSR'd so components can skip re-rendering\n * on the initial hydration pass.\n */\nfunction createSSRPathnameScript(pathname?: string): string {\n\tif (!pathname) {\n\t\treturn '';\n\t}\n\n\ttry {\n\t\tconst pathnameJson = escapeJsonForScript(JSON.stringify(pathname));\n\t\treturn `<script>(function(){try{var w=(typeof window!=='undefined'?window:globalThis);w.__REROUTE_SSR_PATHNAME__=${pathnameJson};}catch(e){}})();</script>`;\n\t} catch (error) {\n\t\tconsole.error('[reroute] Failed to serialize SSR pathname:', error);\n\t\treturn '';\n\t}\n}\n\n/**\n * Create inline script for SSR data hydration\n */\nexport function createDataScript(\n\tssrData: Record<string, unknown>,\n\terrorMsg?: string,\n\tpathname?: string,\n\tbrowserTelemetryConfig?: Record<string, unknown>,\n\ttraceContext?: { traceparent?: string; tracestate?: string },\n\ttitleSuffix?: string,\n\ti18n?: Record<string, unknown>,\n): string {\n\tlet script = '';\n\n\t// Capture DOM content HTML before React hydrates (reads from DOM, no duplication)\n\tscript += createContentCaptureScript();\n\n\t// Add SSR pathname script (tells client which route was SSR'd)\n\tscript += createSSRPathnameScript(pathname);\n\n\t// Add SSR exports script (for useToc, etc.) - scoped to current pathname\n\tif (pathname) {\n\t\tscript += createSSRExportsScript(pathname);\n\t}\n\n\t// Inject i18n hydration (locale + catalogs)\n\tscript += createI18nScript(i18n);\n\n\t// Inject browser telemetry config\n\tscript += createTelemetryConfigScript(browserTelemetryConfig);\n\n\t// Inject trace context for distributed tracing\n\tscript += createTraceContextScript(traceContext);\n\n\t// Inject title suffix for client-side navigation\n\tscript += createTitleSuffixScript(titleSuffix);\n\n\tif (ssrData && Object.keys(ssrData).length > 0) {\n\t\ttry {\n\t\t\tconst duplicatedData = duplicateQueryParamData(ssrData);\n\t\t\tconst dataJson = escapeJsonForScript(JSON.stringify(duplicatedData));\n\t\t\tconst keysJson = escapeJsonForScript(\n\t\t\t\tJSON.stringify(Object.keys(ssrData)),\n\t\t\t);\n\t\t\tscript += `<script>(function(){try{var w=(typeof window!=='undefined'?window:globalThis);w.__REROUTE_DATA__=Object.assign({},w.__REROUTE_DATA__||{},${dataJson});try{w.dispatchEvent(new CustomEvent('__reroute_data__',{detail:{keys:${keysJson}}}));}catch(e){}}catch(e){}})();</script>`;\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to serialize SSR data:', error);\n\t\t}\n\t}\n\n\tif (errorMsg) {\n\t\tconst escapedMsg = JSON.stringify(errorMsg);\n\t\tscript += `<script>(function(){try{console.warn('%c[reroute] SSR Data Error','background: #ff5555; color: white; padding: 2px 6px; border-radius: 3px;',${escapedMsg});}catch(e){}})();</script>`;\n\t}\n\n\treturn script;\n}\n",
|
|
49
49
|
"import type { Doc } from '../types';\nimport { escapeJsonForScript } from './escape';\n\n/**\n * Create inline script for available RSS feeds\n */\nexport function createFeedsScript(): string {\n\ttry {\n\t\tconst feeds = (globalThis as Doc).__REROUTE_AVAILABLE_FEEDS__ || [];\n\t\tif (feeds.length === 0) return '';\n\n\t\tconst feedsJson = escapeJsonForScript(JSON.stringify(feeds));\n\t\treturn `<script>(function(){try{var w=(typeof window!=='undefined'?window:globalThis);w.__REROUTE_FEEDS__=${feedsJson};}catch(e){}})();</script>`;\n\t} catch {\n\t\treturn '';\n\t}\n}\n\n/**\n * Create inline script for available LLMS files\n */\nexport function createLlmsScript(): string {\n\ttry {\n\t\tconst llms = (globalThis as Doc).__REROUTE_AVAILABLE_LLMS__ || [];\n\t\tif (llms.length === 0) return '';\n\n\t\tconst llmsJson = escapeJsonForScript(JSON.stringify(llms));\n\t\treturn `<script>(function(){try{var w=(typeof window!=='undefined'?window:globalThis);w.__REROUTE_LLMS__=${llmsJson};}catch(e){}})();</script>`;\n\t} catch {\n\t\treturn '';\n\t}\n}\n",
|
|
50
50
|
"export { createCollectionScript, processCollections } from './collections';\nexport { createDataScript, duplicateQueryParamData } from './data';\nexport { escapeJsonForScript } from './escape';\nexport { createFeedsScript, createLlmsScript } from './feeds';\n",
|
|
51
|
-
"import {
|
|
52
|
-
"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 {\n\tloadCollections,\n\tresetSSRContentResults,\n\tsetGlobalCollections,\n} 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 { inlineThemeCSS } 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\tcachedThemeCSS?: 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\tresetSSRContentResults();\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 theme CSS (use cached if available)\n\tconst usingCachedCSS = !!options.cachedThemeCSS;\n\tconst inlineStyleTag = await withSpan('ssr.inline.css', async (span) => {\n\t\tconst css = options.cachedThemeCSS\n\t\t\t? options.cachedThemeCSS\n\t\t\t: await inlineThemeCSS(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} - inlineThemeCSS (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\tcapturedResults?: 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(\n\t\t\t\tacc,\n\t\t\t\tbyCollectionForSSR,\n\t\t\t\tcapturedResults,\n\t\t\t);\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\ti18n?: Record<string, unknown>,\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\ti18n,\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",
|
|
51
|
+
"import { createHash } from 'node:crypto';\nimport { join } from './path';\n\nconst THEME_CSS_HREF = '/.reroute/index.css';\n\nfunction themeLink(query: string): string {\n\treturn `<link rel=\"stylesheet\" href=\"${THEME_CSS_HREF}?${query}\" data-reroute=\"theme\">`;\n}\n\nfunction hashCss(css: string): string {\n\treturn createHash('sha1').update(css).digest('hex').slice(0, 12);\n}\n\nasync function readThemeCssFromDisk(clientDir: string): Promise<string> {\n\tconst candidates = [\n\t\tjoin(clientDir, '..', '.reroute', 'index.css'),\n\t\tjoin(clientDir, '..', '..', '.reroute', 'index.css'),\n\t\tjoin(clientDir, '..', '..', '..', '.reroute', 'index.css'),\n\t\tjoin(clientDir, '..', '..', '..', '..', '.reroute', 'index.css'),\n\t];\n\n\tfor (const cssPath of candidates) {\n\t\tif (await Bun.file(cssPath).exists()) {\n\t\t\tconst { readFileSync } = await import('node:fs');\n\t\t\treturn readFileSync(cssPath, 'utf-8');\n\t\t}\n\t}\n\n\treturn '';\n}\n\nfunction bundledThemeCss(): string {\n\treturn (\n\t\t((globalThis as Record<string, unknown>).__REROUTE_THEME_CSS__ as\n\t\t\t| string\n\t\t\t| undefined) || ''\n\t);\n}\n\n/**\n * Theme tag for SSR. Always a stylesheet link — never an inlined <style>\n * block — so HTML stays small for crawlers and the file can be cached.\n *\n * Watch mode cache-busts with a timestamp so live reload can refetch.\n * Production cache-busts with a content hash so deploys invalidate.\n */\nexport async function inlineThemeCSS(\n\tclientDir: string,\n\tisWatchMode = false,\n): Promise<string> {\n\ttry {\n\t\tif (isWatchMode) {\n\t\t\treturn themeLink(`t=${Date.now()}`);\n\t\t}\n\n\t\tconst css = bundledThemeCss() || (await readThemeCssFromDisk(clientDir));\n\t\tif (!css) return '';\n\n\t\treturn themeLink(`v=${hashCss(css)}`);\n\t} catch {\n\t\treturn '';\n\t}\n}\n",
|
|
52
|
+
"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 {\n\tloadCollections,\n\tresetSSRContentResults,\n\tsetGlobalCollections,\n} 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 { inlineThemeCSS } 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\tcachedThemeCSS?: 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\tresetSSRContentResults();\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. Theme stylesheet tag (use cached if available)\n\tconst usingCachedCSS = !!options.cachedThemeCSS;\n\tconst inlineStyleTag = await withSpan('ssr.inline.css', async (span) => {\n\t\tconst css = options.cachedThemeCSS\n\t\t\t? options.cachedThemeCSS\n\t\t\t: await inlineThemeCSS(clientDir, 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} - inlineThemeCSS (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\tcapturedResults?: 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(\n\t\t\t\tacc,\n\t\t\t\tbyCollectionForSSR,\n\t\t\t\tcapturedResults,\n\t\t\t);\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\ti18n?: Record<string, unknown>,\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\ti18n,\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",
|
|
53
53
|
"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",
|
|
54
54
|
"// 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",
|
|
55
55
|
"/** 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",
|
|
@@ -76,16 +76,17 @@
|
|
|
76
76
|
"export * from './lib';\nexport * from './render';\nexport * from './stream';\n",
|
|
77
77
|
"export * from './bundler';\nexport * from './config';\nexport * from './content';\nexport * from './i18n';\nexport * from './llms';\nexport * from './og';\nexport * from './robots';\nexport * from './rss';\nexport * from './sitemap';\nexport * from './ssr';\n",
|
|
78
78
|
"export * from './src';\n",
|
|
79
|
-
"// All file watching happens in the CLI (reroute gen --watch)\n\nimport { existsSync } from 'node:fs';\nimport { pathToFileURL } from 'node:url';\nimport type { Elysia } from 'elysia';\nimport { type ComponentType, createElement, type ReactElement } from 'react';\nimport {\n\tclearSSRModuleStores,\n\tclearWatchImportCache,\n\tdiscoverCollections,\n\tloadConfig,\n\tssrCache,\n\tstatusCache,\n\tTTLCache,\n} from 'reroute-js/core';\nimport { initImageCache } from './libs/image';\nimport type { CachedFileData } from './libs/serving';\nimport { registerArtifactsRoutes } from './routes/artifacts';\nimport { registerContentRoutes } from './routes/content';\nimport { registerImageRoutes } from './routes/image';\nimport {\n\tregisterInternalRoutes,\n\tregisterLiveReloadRoutes,\n} from './routes/internal';\nimport { registerLLMsRoutes } from './routes/llms';\nimport { registerOGRoutes } from './routes/og';\nimport { registerRedirectRoutes } from './routes/redirects';\nimport { registerRobotsRoute } from './routes/robots';\nimport { registerRSSRoutes } from './routes/rss';\nimport { registerSearchRoute } from './routes/search';\nimport { registerSitemapRoutes } from './routes/sitemap';\nimport { registerSSRRoutes } from './routes/ssr';\nimport { registerStaticRoutes } from './routes/static';\n\nconst reroute =\n\t() =>\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Plugin initialization is inherently complex\n\tasync (app: Elysia) => {\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\n\t\t// Global HEAD request handler - MUST be first to intercept before Elysia's buggy automatic handling\n\t\t// Elysia has a bug with automatic HEAD handling, so we handle them ourselves\n\t\tapp.onRequest(({ request }) => {\n\t\t\tif (request.method === 'HEAD') {\n\t\t\t\treturn new Response(null, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: { 'content-type': 'text/html; charset=utf-8' },\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// Load global config\n\t\tconst globalConfig = await loadConfig(cwd);\n\n\t\t// Handle App component (can be ReactElement in plugin or string path in config)\n\t\tlet rootComponent: ReactElement | undefined;\n\n\t\t// Check for pre-bundled App component (set by .reroute/artifacts.ts in compiled binaries)\n\t\tconst globalApp = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_APP_COMPONENT__ as ComponentType | undefined;\n\n\t\tif (globalApp) {\n\t\t\t// Use pre-bundled App component from global (compiled binary)\n\t\t\trootComponent = createElement(globalApp);\n\t\t} else if (globalConfig.app?.src) {\n\t\t\t// Fallback to dynamic import (dev mode)\n\t\t\tconst appPath = globalConfig.app.src.startsWith('/')\n\t\t\t\t? globalConfig.app.src\n\t\t\t\t: `${cwd}/${globalConfig.app.src.replace(/^\\.\\//, '')}`;\n\t\t\tconst AppModule = await import(\n\t\t\t\t`${pathToFileURL(appPath).href}?t=${Date.now()}`\n\t\t\t);\n\t\t\trootComponent = createElement(AppModule.default);\n\t\t}\n\n\t\tif (!rootComponent) {\n\t\t\tconsole.warn(\n\t\t\t\t'[reroute] No app component provided. SSR routes will not be registered.',\n\t\t\t);\n\t\t}\n\n\t\t// Merge: plugin options > global config.options > defaults\n\t\tconst ssrHead = globalConfig.app?.head ?? '';\n\t\tconst ssrLang = globalConfig.app?.lang ?? 'en';\n\t\tconst ssrAppId = globalConfig.app?.appId ?? 'root';\n\n\t\t// Static file serving configuration\n\t\t// Convention: static assets are ALWAYS at /assets/* URL path\n\t\t// - Dev mode: serves from ${cwd}/src/client/assets/\n\t\t// - Prod mode: serves from ${cwd}/.reroute/assets/\n\t\tconst staticAssetsDir = existsSync(`${cwd}/.reroute/assets`)\n\t\t\t? `${cwd}/.reroute/assets`\n\t\t\t: `${cwd}/src/client/assets`;\n\n\t\tconst staticConfig = globalConfig.static ?? {};\n\t\tconst ignorePatterns = staticConfig.ignorePatterns ?? [\n\t\t\t'.DS_Store',\n\t\t\t'.git',\n\t\t\t'.env',\n\t\t];\n\t\tconst staticHeaders = staticConfig.headers;\n\n\t\t// Server-side cache configuration\n\t\tconst server = globalConfig.server;\n\t\tconst serverCacheEnabled = server?.cache ?? true;\n\t\tconst serverMaxAge = server?.maxAge ?? 3600;\n\n\t\t// Browser cache configuration (controls Cache-Control headers)\n\t\tconst browser = globalConfig.browser;\n\t\tconst browserCacheEnabled = browser?.cache ?? true;\n\t\tconst browserMaxAge = browser?.maxAge ?? 300;\n\t\tconst browserDirective = browser?.directive ?? 'public';\n\n\t\t// Static assets can override cache settings or use defaults\n\t\tconst staticMaxAge = staticConfig.maxAge ?? serverMaxAge;\n\t\tconst staticDirective = staticConfig.directive ?? browserDirective;\n\n\t\t// Compression configuration (plugin > config > default: true)\n\t\tconst compression = globalConfig.app?.compression ?? true;\n\n\t\t// Debug mode configuration (plugin > config > default: false)\n\t\tconst debug = globalConfig.app?.debug ?? false;\n\n\t\t// Image optimization configuration (from config file only)\n\t\tconst imageConfig = globalConfig.image ?? {};\n\t\tconst imageMaxAge = imageConfig.maxAge ?? 31536000; // 1 year\n\t\tconst imageAllowedDomains = imageConfig.allowedDomains ?? [];\n\t\tconst imageMaxWidth = imageConfig.maxWidth ?? 3840;\n\t\tconst imageMaxHeight = imageConfig.maxHeight ?? 2160;\n\n\t\t// Bundle caching configuration (plugin > config > default)\n\t\tconst bundleMaxAge = globalConfig.app?.bundleMaxAge ?? 3600; // 1 hour default for main bundle\n\n\t\t// Streaming configuration (from config file only)\n\t\tconst streamingEnabled = globalConfig.streaming?.enabled ?? false;\n\n\t\t// Base URL and canonical URL configuration (plugin > config)\n\t\tconst baseUrl = globalConfig.app?.baseUrl;\n\t\tconst autoCanonical = globalConfig.app?.autoCanonical;\n\t\tconst titleSuffix = globalConfig.app?.titleSuffix;\n\n\t\t// Sitemap configuration (from config file only)\n\t\tconst sitemapConfig = globalConfig.sitemap;\n\t\tconst sitemapEnabled = sitemapConfig?.enabled === true;\n\t\tconst sitemapBaseUrl = sitemapConfig?.baseUrl;\n\n\t\t// RSS configuration (plugin > config > disabled by default)\n\t\tconst rssConfig = globalConfig.rss;\n\t\tconst rssEnabled = rssConfig?.enabled === true;\n\t\tconst rssBaseUrl = rssConfig?.baseUrl;\n\n\t\t// OG Image configuration (plugin > config > disabled by default)\n\t\tconst ogConfig = globalConfig.ogImage;\n\t\tconst ogEnabled = ogConfig?.enabled === true;\n\n\t\t// LLMs configuration (plugin > config > disabled by default)\n\t\tconst llmsConfig = globalConfig.llms;\n\t\tconst llmsEnabled = llmsConfig?.enabled === true;\n\n\t\t// Robots configuration (plugin > config > disabled by default)\n\t\tconst robotsConfig = globalConfig.robots;\n\t\tconst robotsEnabled = robotsConfig?.enabled === true;\n\n\t\t// TTL caches for content that should expire based on serverMaxAge\n\t\tconst serverTtlMs = serverMaxAge * 1000;\n\t\t// OG cache should honor OG-specific maxAge when configured.\n\t\tconst ogTtlMs = (ogConfig?.maxAge ?? serverMaxAge) * 1000;\n\t\tconst fileCache = new TTLCache<string, CachedFileData>(100, serverTtlMs);\n\t\tconst dataCache = new TTLCache<string, unknown>(100, serverTtlMs);\n\t\tconst collectionCache = new TTLCache<string, Response>(50, serverTtlMs);\n\t\tconst sitemapCache = new TTLCache<string, string>(20, serverTtlMs);\n\t\tconst rssCache = new TTLCache<string, string>(20, serverTtlMs);\n\t\t// Increased OG cache entries to reduce cache thrashing\n\t\t// With ~240 images/hour, 1000 entries gives ~4 hours of cache coverage\n\t\t// Memory limit of 1GB prevents unbounded memory growth from OG image buffers\n\t\tconst ogCache = new TTLCache<string, Buffer>(1000, ogTtlMs, 60_000, 1000);\n\t\tconst robotsCache = new TTLCache<string, string>(10, serverTtlMs);\n\n\t\t// Live reload SSE clients + pending reload if no clients connected\n\t\tconst liveReloadState = {\n\t\t\tclients: new Set<ReadableStreamDefaultController>(),\n\t\t\tpendingReload: false as false | 'css' | 'full',\n\t\t};\n\t\tconst reloadEncoder = new TextEncoder();\n\t\tconst reloadFullMessage = reloadEncoder.encode('data: reload\\n\\n');\n\t\tconst reloadCssMessage = reloadEncoder.encode('data: reload:css\\n\\n');\n\t\tconst rebuildingMessage = reloadEncoder.encode('data: rebuilding\\n\\n');\n\n\t\tconst notifyReload = (mode: 'css' | 'full' = 'full') => {\n\t\t\tconst message = mode === 'css' ? reloadCssMessage : reloadFullMessage;\n\t\t\tlet delivered = false;\n\t\t\tfor (const controller of liveReloadState.clients) {\n\t\t\t\ttry {\n\t\t\t\t\tcontroller.enqueue(message);\n\t\t\t\t\tdelivered = true;\n\t\t\t\t} catch {\n\t\t\t\t\tliveReloadState.clients.delete(controller);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!delivered) {\n\t\t\t\t// Remember to reload once the next client connects\n\t\t\t\tliveReloadState.pendingReload = mode;\n\t\t\t}\n\t\t};\n\n\t\tconst notifyRebuilding = () => {\n\t\t\tfor (const controller of liveReloadState.clients) {\n\t\t\t\ttry {\n\t\t\t\t\tcontroller.enqueue(rebuildingMessage);\n\t\t\t\t} catch {\n\t\t\t\t\tliveReloadState.clients.delete(controller);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Client directory for SSR rendering (contains routes, components, etc.)\n\t\t// - Dev: ${cwd}/src/client\n\t\t// - Prod: ${cwd}/.reroute\n\t\tconst clientDir = existsSync(`${cwd}/.reroute/assets`)\n\t\t\t? `${cwd}/.reroute`\n\t\t\t: `${cwd}/src/client`;\n\n\t\tconst shouldIgnore = !ignorePatterns.length\n\t\t\t? () => false\n\t\t\t: (file: string) =>\n\t\t\t\t\tignorePatterns.find((pattern: string | RegExp) =>\n\t\t\t\t\t\ttypeof pattern === 'string'\n\t\t\t\t\t\t\t? file.includes(pattern)\n\t\t\t\t\t\t\t: pattern.test(file),\n\t\t\t\t\t);\n\n\t\tconst isWatchMode =\n\t\t\tprocess.env.REROUTE_DEV === '1' ||\n\t\t\t(Array.isArray(process.execArgv) &&\n\t\t\t\tprocess.execArgv.includes('--watch')) ||\n\t\t\t(Array.isArray(process.argv) && process.argv.includes('--watch'));\n\n\t\t// Shared cache-control for data responses (prefetch + client navigations)\n\t\t// Align with static caching to reduce repeated XHRs even in dev.\n\t\tconst dataCacheControl = browserCacheEnabled\n\t\t\t? `${browserDirective}, max-age=${browserMaxAge}`\n\t\t\t: undefined;\n\n\t\tif (isWatchMode) {\n\t\t\tconsole.log(`[reroute] Live reload enabled`);\n\n\t\t\t// Register live reload routes IMMEDIATELY in watch mode\n\t\t\t// This must happen before any async operations to ensure the SSE endpoint\n\t\t\t// is available as soon as the server starts (prevents 404 during reconnect)\n\t\t\tregisterLiveReloadRoutes(app, liveReloadState);\n\n\t\t\t// Also register rebuilding/reload notification endpoints early\n\t\t\tapp.post('/__reroute_rebuilding', () => {\n\t\t\t\tconsole.log(\n\t\t\t\t\t'[reroute] Rebuild notification received, notifying browsers...',\n\t\t\t\t);\n\t\t\t\tnotifyRebuilding();\n\t\t\t\treturn new Response(\n\t\t\t\t\tJSON.stringify({ ok: true, clients: liveReloadState.clients.size }),\n\t\t\t\t\t{\n\t\t\t\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tapp.post('/__reroute_reload', async ({ request }) => {\n\t\t\t\tlet mode: 'css' | 'full' = 'full';\n\t\t\t\ttry {\n\t\t\t\t\tconst body = (await request.json()) as { mode?: string };\n\t\t\t\t\tif (body?.mode === 'css') mode = 'css';\n\t\t\t\t} catch {\n\t\t\t\t\t// No/invalid body → full reload (backward compatible)\n\t\t\t\t}\n\t\t\t\tif (mode === 'full') {\n\t\t\t\t\tssrCache.clear();\n\t\t\t\t\tstatusCache.clear();\n\t\t\t\t\tcollectionCache.clear();\n\t\t\t\t\tdataCache.clear();\n\t\t\t\t\tfileCache.clear();\n\t\t\t\t\tclearWatchImportCache();\n\t\t\t\t\tclearSSRModuleStores();\n\t\t\t\t}\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[reroute] Reload notification received (${mode}), notifying ${liveReloadState.clients.size} browser(s)...`,\n\t\t\t\t);\n\t\t\t\tnotifyReload(mode);\n\t\t\t\treturn new Response(\n\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\tok: true,\n\t\t\t\t\t\tmode,\n\t\t\t\t\t\tclients: liveReloadState.clients.size,\n\t\t\t\t\t}),\n\t\t\t\t\t{\n\t\t\t\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\t// Find bundle URL by scanning bundles directory\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: File scanning with retry logic is inherently complex\n\t\tconst readBundleUrl = async (): Promise<string> => {\n\t\t\tconst bundlesDir = `${cwd}/.reroute/bundles`;\n\t\t\tconst maxAttempts = isWatchMode ? 500 : 10;\n\t\t\tconst sleepMs = isWatchMode ? 100 : 250;\n\n\t\t\tfor (let attempt = 0; attempt < maxAttempts; attempt++) {\n\t\t\t\ttry {\n\t\t\t\t\tconst glob = new Bun.Glob('index.*.js');\n\t\t\t\t\tconst files = await Array.fromAsync(glob.scan(bundlesDir));\n\t\t\t\t\tconst indexFile =\n\t\t\t\t\t\tfiles.find((f) => !f.includes('.stub.')) || files[0];\n\t\t\t\t\tif (indexFile) {\n\t\t\t\t\t\treturn `/bundles/${indexFile}`;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Directory might not exist yet or be empty during rebuild\n\t\t\t\t}\n\n\t\t\t\tif (attempt === 0) {\n\t\t\t\t\tconsole.warn('[reroute] Waiting for bundles to be generated...');\n\t\t\t\t}\n\t\t\t\tawait Bun.sleep(sleepMs);\n\t\t\t}\n\n\t\t\tthrow new Error('Bundle not found. Run `reroute gen` first.');\n\t\t};\n\n\t\t// Read bundle URL at startup and cache it\n\t\tconst initialBundleUrl = await readBundleUrl();\n\t\tconsole.log(`[reroute] Using pre-built bundle: ${initialBundleUrl}`);\n\n\t\t// Cache bundle URL function (instant in prod, rescan in dev)\n\t\tconst getBundleUrl = isWatchMode\n\t\t\t? readBundleUrl // Rescan in dev to detect rebuilds\n\t\t\t: async () => initialBundleUrl; // Instant in prod\n\n\t\t// Pre-cache expensive SSR setup work at startup\n\t\t// These don't change per-request and can be shared across all SSR renders\n\t\tconst { loadCollections, inlineThemeCSS, loadIndexHtml } = await import(\n\t\t\t'reroute-js/core'\n\t\t);\n\t\tconst startupCollections = await loadCollections(cwd, isWatchMode);\n\t\tconst startupThemeCSS = await inlineThemeCSS(clientDir, false, isWatchMode);\n\t\tconst startupIndexHtml = await loadIndexHtml(clientDir);\n\n\t\t// TTL-based cache for collections in production\n\t\t// This allows content updates to be reflected after cache expiration\n\t\tconst collectionsTtlMs = serverMaxAge * 1000;\n\t\tlet collectionsCache: {\n\t\t\tdata: Record<string, unknown[]>;\n\t\t\texp: number;\n\t\t} | null = serverCacheEnabled\n\t\t\t? { data: startupCollections, exp: Date.now() + collectionsTtlMs }\n\t\t\t: null;\n\n\t\t// Export cached values for SSR to use\n\t\tconst getCollections = isWatchMode\n\t\t\t? () => loadCollections(cwd, isWatchMode) // Reload in dev\n\t\t\t: async () => {\n\t\t\t\t\t// In production: use TTL-based caching\n\t\t\t\t\tif (!serverCacheEnabled) {\n\t\t\t\t\t\treturn loadCollections(cwd, isWatchMode);\n\t\t\t\t\t}\n\t\t\t\t\tif (collectionsCache && collectionsCache.exp > Date.now()) {\n\t\t\t\t\t\treturn collectionsCache.data;\n\t\t\t\t\t}\n\t\t\t\t\t// Cache expired or missing - reload\n\t\t\t\t\tconst fresh = await loadCollections(cwd, isWatchMode);\n\t\t\t\t\tcollectionsCache = {\n\t\t\t\t\t\tdata: fresh,\n\t\t\t\t\t\texp: Date.now() + collectionsTtlMs,\n\t\t\t\t\t};\n\t\t\t\t\treturn fresh;\n\t\t\t\t};\n\n\t\tconst getThemeCSS = isWatchMode\n\t\t\t? () => inlineThemeCSS(clientDir, false, isWatchMode) // Reload in dev\n\t\t\t: async () => startupThemeCSS; // Use cache in prod\n\n\t\tconst getIndexHtml = isWatchMode\n\t\t\t? () => loadIndexHtml(clientDir) // Reload in dev\n\t\t\t: async () => startupIndexHtml; // Use cache in prod\n\n\t\t// Register redirect routes (must be early to intercept before other routes)\n\t\tif (globalConfig.redirects && globalConfig.redirects.length > 0) {\n\t\t\tregisterRedirectRoutes(app, globalConfig.redirects);\n\t\t}\n\n\t\t// Register content routes\n\t\tregisterContentRoutes(\n\t\t\tapp,\n\t\t\tcwd,\n\t\t\tcollectionCache,\n\t\t\tbrowserDirective,\n\t\t\tbrowserMaxAge,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\t// Register search route (if search is enabled in config)\n\t\tregisterSearchRoute(app, cwd, browserDirective, browserMaxAge, {\n\t\t\tdefaultPageSize: globalConfig.search?.defaultPageSize,\n\t\t\tmaxPageSize: globalConfig.search?.maxPageSize,\n\t\t});\n\n\t\t// Register internal routes (preload, data endpoints - always needed)\n\t\tregisterInternalRoutes(app, {\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tdataCacheControl,\n\t\t\tdataCache,\n\t\t\tisWatchMode,\n\t\t\tmaxAge: serverMaxAge,\n\t\t});\n\n\t\t// Note: Live reload routes (/__reroute_watch, /__reroute_rebuilding, /__reroute_reload)\n\t\t// are registered early in the plugin initialization (before async operations)\n\t\t// to ensure they're available immediately when the server starts.\n\n\t\t// Register artifacts routes (.reroute directory)\n\t\tregisterArtifactsRoutes(app, cwd, fileCache, {\n\t\t\tbundleMaxAge,\n\t\t\tdirective: browserDirective,\n\t\t\tisWatchMode,\n\t\t});\n\n\t\t// Initialize and register image optimization routes\n\t\tconst imageCacheDir = `${cwd}/.reroute/image-cache`;\n\t\tinitImageCache(imageCacheDir);\n\t\tregisterImageRoutes(app, {\n\t\t\tclientDir,\n\t\t\tmaxAge: imageMaxAge,\n\t\t\tallowedDomains: imageAllowedDomains,\n\t\t\tmaxWidth: imageMaxWidth,\n\t\t\tmaxHeight: imageMaxHeight,\n\t\t\tcompression,\n\t\t});\n\n\t\t// Register static file serving (BEFORE SSR routes to prevent catch-all interception)\n\t\t// Static assets at /assets/* must be registered before the SSR catch-all route\n\t\tregisterStaticRoutes(app, {\n\t\t\tstaticAssetsDir,\n\t\t\tmaxAge: staticMaxAge,\n\t\t\tdirective: staticDirective,\n\t\t\tstaticHeaders,\n\t\t\tshouldIgnore: shouldIgnore as () => boolean,\n\t\t\tfileCache,\n\t\t\tisWatchMode,\n\t\t\tcompression,\n\t\t});\n\n\t\t// Register SSR routes if root component is provided\n\t\tif (rootComponent) {\n\t\t\ttry {\n\t\t\t\tconst collections = await discoverCollections(clientDir);\n\t\t\t\tif (collections.length > 0) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[reroute] Discovered collections: ${collections.join(', ')}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Register robots.txt route (BEFORE LLMs routes to avoid .txt extension interception)\n\t\t\t\tif (robotsEnabled && robotsConfig) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst robotsWithSignal =\n\t\t\t\t\t\t\trobotsConfig.contentSignal !== undefined || !llmsEnabled\n\t\t\t\t\t\t\t\t? robotsConfig\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t...robotsConfig,\n\t\t\t\t\t\t\t\t\t\tcontentSignal: llmsConfig?.contentSignal ?? {},\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\tregisterRobotsRoute(app, {\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tmaxAge: browserCacheEnabled\n\t\t\t\t\t\t\t\t? (robotsConfig.maxAge ?? browserMaxAge)\n\t\t\t\t\t\t\t\t: 0,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\trobotsCache,\n\t\t\t\t\t\t\trobotsConfig: robotsWithSignal,\n\t\t\t\t\t\t\tsitemapConfig,\n\t\t\t\t\t\t\tsitemapEnabled,\n\t\t\t\t\t\t\tredirects: globalConfig.redirects,\n\t\t\t\t\t\t\tcacheEnabled: serverCacheEnabled,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconsole.log('[reroute] Robots.txt generation enabled');\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[reroute] Failed to register robots route:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Register sitemap routes (BEFORE SSR to prevent catch-all interception)\n\t\t\t\tif (sitemapEnabled && sitemapBaseUrl) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tregisterSitemapRoutes(app, {\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tcollections,\n\t\t\t\t\t\t\tbaseUrl: sitemapBaseUrl,\n\t\t\t\t\t\t\tmaxAge: browserCacheEnabled ? browserMaxAge : 0,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\tsitemapCache,\n\t\t\t\t\t\t\tsitemapConfig,\n\t\t\t\t\t\t\tcacheEnabled: serverCacheEnabled,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[reroute] Sitemap enabled at ${sitemapBaseUrl}/sitemap.xml`,\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'[reroute] Failed to register sitemap routes:',\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}\n\n\t\t\t\t// Register RSS feed routes (BEFORE SSR to prevent catch-all interception)\n\t\t\t\tif (rssEnabled && rssBaseUrl) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait registerRSSRoutes(app, {\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\tcollections,\n\t\t\t\t\t\t\tbaseUrl: rssBaseUrl,\n\t\t\t\t\t\t\tmaxAge: browserMaxAge,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\trssCache,\n\t\t\t\t\t\t\trssConfig,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[reroute] RSS feeds enabled at ${rssBaseUrl}/feed.xml`,\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[reroute] Failed to register RSS routes:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Register LLMs routes (BEFORE SSR routes to intercept .txt/.md extensions)\n\t\t\t\tif (llmsEnabled && llmsConfig) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tregisterLLMsRoutes(app, {\n\t\t\t\t\t\t\trootComponent: rootComponent as ReactElement,\n\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\tgetBundleUrl,\n\t\t\t\t\t\t\tmaxAge: serverMaxAge,\n\t\t\t\t\t\t\tdirective: browserDirective,\n\t\t\t\t\t\t\tllmsConfig,\n\t\t\t\t\t\t\tcollections,\n\t\t\t\t\t\t\tdataCache,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst features: string[] = [];\n\t\t\t\t\t\tif (llmsConfig.enableTextExtension !== false) features.push('.txt');\n\t\t\t\t\t\tif (llmsConfig.enableMarkdownExtension !== false)\n\t\t\t\t\t\t\tfeatures.push('.md');\n\t\t\t\t\t\tif (llmsConfig.enableContentNegotiation !== false)\n\t\t\t\t\t\t\tfeatures.push('Accept headers');\n\t\t\t\t\t\tif (llmsConfig.enableIndex !== false) features.push('/llms.txt');\n\t\t\t\t\t\tif (llmsConfig.enableFullContent !== false)\n\t\t\t\t\t\t\tfeatures.push('/llms-full.txt');\n\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[reroute] LLMs content enabled: ${features.join(', ')}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[reroute] Failed to register LLMs routes:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Register OG Image routes (BEFORE SSR to prevent catch-all interception)\n\t\t\t\tif (ogEnabled && ogConfig) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tregisterOGRoutes(app, {\n\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\togConfig,\n\t\t\t\t\t\t\togCache,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconsole.log('[reroute] OG image generation enabled');\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[reroute] Failed to register OG routes:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Register SSR routes LAST - the catch-all must come after all specific routes\n\t\t\t\tregisterSSRRoutes(app, {\n\t\t\t\t\trootComponent: rootComponent as ReactElement,\n\t\t\t\t\tclientDir,\n\t\t\t\t\tcwd,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\tgetBundleUrl,\n\t\t\t\t\tgetCollections,\n\t\t\t\t\tgetThemeCSS,\n\t\t\t\t\tgetIndexHtml,\n\t\t\t\t\tdebug,\n\t\t\t\t\thead: ssrHead,\n\t\t\t\t\tlang: ssrLang,\n\t\t\t\t\tappId: ssrAppId,\n\t\t\t\t\tserverCacheEnabled,\n\t\t\t\t\tserverMaxAge,\n\t\t\t\t\tbrowserCacheEnabled,\n\t\t\t\t\tbrowserMaxAge,\n\t\t\t\t\tbrowserDirective,\n\t\t\t\t\tcompression,\n\t\t\t\t\tstreamingEnabled,\n\t\t\t\t\tstreamingTimeout: globalConfig.streaming?.timeout,\n\t\t\t\t\togConfig,\n\t\t\t\t\togMetaConfig: globalConfig.og,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\tautoCanonical,\n\t\t\t\t\ttitleSuffix,\n\t\t\t\t\tllmsConfig: llmsEnabled ? llmsConfig : undefined,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[reroute] Failed to register SSR routes:', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\t// Global error handler\n\t\tapp.onError(({ set, error }) => {\n\t\t\tif ('status' in error && error.status === 404) {\n\t\t\t\tset.status = 404;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// biome-ignore lint/complexity/useLiteralKeys: bracket notation required to prevent build-time replacement\n\t\t\tif (process.env['NODE_ENV'] !== 'production') {\n\t\t\t\tconsole.error('[reroute] 🚨 Server error:', error);\n\t\t\t}\n\t\t});\n\n\t\treturn app;\n\t};\n\nexport { reroute };\n",
|
|
79
|
+
"// All file watching happens in the CLI (reroute gen --watch)\n\nimport { existsSync } from 'node:fs';\nimport { pathToFileURL } from 'node:url';\nimport type { Elysia } from 'elysia';\nimport { type ComponentType, createElement, type ReactElement } from 'react';\nimport {\n\tclearSSRModuleStores,\n\tclearWatchImportCache,\n\tdiscoverCollections,\n\tloadConfig,\n\tssrCache,\n\tstatusCache,\n\tTTLCache,\n} from 'reroute-js/core';\nimport { resolveServerDataMaxAge } from './libs/cache';\nimport { initImageCache } from './libs/image';\nimport type { CachedFileData } from './libs/serving';\nimport { registerArtifactsRoutes } from './routes/artifacts';\nimport { registerContentRoutes } from './routes/content';\nimport { registerImageRoutes } from './routes/image';\nimport {\n\tregisterInternalRoutes,\n\tregisterLiveReloadRoutes,\n} from './routes/internal';\nimport { registerLLMsRoutes } from './routes/llms';\nimport { registerOGRoutes } from './routes/og';\nimport { registerRedirectRoutes } from './routes/redirects';\nimport { registerRobotsRoute } from './routes/robots';\nimport { registerRSSRoutes } from './routes/rss';\nimport { registerSearchRoute } from './routes/search';\nimport { registerSitemapRoutes } from './routes/sitemap';\nimport { registerSSRRoutes } from './routes/ssr';\nimport { registerStaticRoutes } from './routes/static';\n\nconst reroute =\n\t() =>\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Plugin initialization is inherently complex\n\tasync (app: Elysia) => {\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\n\t\t// Global HEAD request handler - MUST be first to intercept before Elysia's buggy automatic handling\n\t\t// Elysia has a bug with automatic HEAD handling, so we handle them ourselves\n\t\tapp.onRequest(({ request }) => {\n\t\t\tif (request.method === 'HEAD') {\n\t\t\t\treturn new Response(null, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: { 'content-type': 'text/html; charset=utf-8' },\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// Load global config\n\t\tconst globalConfig = await loadConfig(cwd);\n\n\t\t// Handle App component (can be ReactElement in plugin or string path in config)\n\t\tlet rootComponent: ReactElement | undefined;\n\n\t\t// Check for pre-bundled App component (set by .reroute/artifacts.ts in compiled binaries)\n\t\tconst globalApp = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_APP_COMPONENT__ as ComponentType | undefined;\n\n\t\tif (globalApp) {\n\t\t\t// Use pre-bundled App component from global (compiled binary)\n\t\t\trootComponent = createElement(globalApp);\n\t\t} else if (globalConfig.app?.src) {\n\t\t\t// Fallback to dynamic import (dev mode)\n\t\t\tconst appPath = globalConfig.app.src.startsWith('/')\n\t\t\t\t? globalConfig.app.src\n\t\t\t\t: `${cwd}/${globalConfig.app.src.replace(/^\\.\\//, '')}`;\n\t\t\tconst AppModule = await import(\n\t\t\t\t`${pathToFileURL(appPath).href}?t=${Date.now()}`\n\t\t\t);\n\t\t\trootComponent = createElement(AppModule.default);\n\t\t}\n\n\t\tif (!rootComponent) {\n\t\t\tconsole.warn(\n\t\t\t\t'[reroute] No app component provided. SSR routes will not be registered.',\n\t\t\t);\n\t\t}\n\n\t\t// Merge: plugin options > global config.options > defaults\n\t\tconst ssrHead = globalConfig.app?.head ?? '';\n\t\tconst ssrLang = globalConfig.app?.lang ?? 'en';\n\t\tconst ssrAppId = globalConfig.app?.appId ?? 'root';\n\n\t\t// Static file serving configuration\n\t\t// Convention: static assets are ALWAYS at /assets/* URL path\n\t\t// - Dev mode: serves from ${cwd}/src/client/assets/\n\t\t// - Prod mode: serves from ${cwd}/.reroute/assets/\n\t\tconst staticAssetsDir = existsSync(`${cwd}/.reroute/assets`)\n\t\t\t? `${cwd}/.reroute/assets`\n\t\t\t: `${cwd}/src/client/assets`;\n\n\t\tconst staticConfig = globalConfig.static ?? {};\n\t\tconst ignorePatterns = staticConfig.ignorePatterns ?? [\n\t\t\t'.DS_Store',\n\t\t\t'.git',\n\t\t\t'.env',\n\t\t];\n\t\tconst staticHeaders = staticConfig.headers;\n\n\t\t// Server-side cache configuration\n\t\tconst server = globalConfig.server;\n\t\tconst serverCacheEnabled = server?.cache ?? true;\n\t\tconst serverMaxAge = server?.maxAge ?? 3600;\n\t\tconst serverDataMaxAge = resolveServerDataMaxAge(\n\t\t\tserverCacheEnabled,\n\t\t\tserverMaxAge,\n\t\t);\n\n\t\t// Browser cache configuration (controls Cache-Control headers)\n\t\tconst browser = globalConfig.browser;\n\t\tconst browserCacheEnabled = browser?.cache ?? true;\n\t\tconst browserMaxAge = browser?.maxAge ?? 300;\n\t\tconst browserDirective = browser?.directive ?? 'public';\n\n\t\t// Static assets can override cache settings or use defaults\n\t\tconst staticMaxAge = staticConfig.maxAge ?? serverMaxAge;\n\t\tconst staticDirective = staticConfig.directive ?? browserDirective;\n\n\t\t// Compression configuration (plugin > config > default: true)\n\t\tconst compression = globalConfig.app?.compression ?? true;\n\n\t\t// Debug mode configuration (plugin > config > default: false)\n\t\tconst debug = globalConfig.app?.debug ?? false;\n\n\t\t// Image optimization configuration (from config file only)\n\t\tconst imageConfig = globalConfig.image ?? {};\n\t\tconst imageMaxAge = imageConfig.maxAge ?? 31536000; // 1 year\n\t\tconst imageAllowedDomains = imageConfig.allowedDomains ?? [];\n\t\tconst imageMaxWidth = imageConfig.maxWidth ?? 3840;\n\t\tconst imageMaxHeight = imageConfig.maxHeight ?? 2160;\n\n\t\t// Bundle caching configuration (plugin > config > default)\n\t\tconst bundleMaxAge = globalConfig.app?.bundleMaxAge ?? 3600; // 1 hour default for main bundle\n\n\t\t// Streaming configuration (from config file only)\n\t\tconst streamingEnabled = globalConfig.streaming?.enabled ?? false;\n\n\t\t// Base URL and canonical URL configuration (plugin > config)\n\t\tconst baseUrl = globalConfig.app?.baseUrl;\n\t\tconst autoCanonical = globalConfig.app?.autoCanonical;\n\t\tconst titleSuffix = globalConfig.app?.titleSuffix;\n\n\t\t// Sitemap configuration (from config file only)\n\t\tconst sitemapConfig = globalConfig.sitemap;\n\t\tconst sitemapEnabled = sitemapConfig?.enabled === true;\n\t\tconst sitemapBaseUrl = sitemapConfig?.baseUrl;\n\n\t\t// RSS configuration (plugin > config > disabled by default)\n\t\tconst rssConfig = globalConfig.rss;\n\t\tconst rssEnabled = rssConfig?.enabled === true;\n\t\tconst rssBaseUrl = rssConfig?.baseUrl;\n\n\t\t// OG Image configuration (plugin > config > disabled by default)\n\t\tconst ogConfig = globalConfig.ogImage;\n\t\tconst ogEnabled = ogConfig?.enabled === true;\n\n\t\t// LLMs configuration (plugin > config > disabled by default)\n\t\tconst llmsConfig = globalConfig.llms;\n\t\tconst llmsEnabled = llmsConfig?.enabled === true;\n\n\t\t// Robots configuration (plugin > config > disabled by default)\n\t\tconst robotsConfig = globalConfig.robots;\n\t\tconst robotsEnabled = robotsConfig?.enabled === true;\n\n\t\t// TTL caches for content that should expire based on serverMaxAge\n\t\tconst serverTtlMs = serverMaxAge * 1000;\n\t\t// OG cache should honor OG-specific maxAge when configured.\n\t\tconst ogTtlMs = (ogConfig?.maxAge ?? serverMaxAge) * 1000;\n\t\tconst fileCache = new TTLCache<string, CachedFileData>(100, serverTtlMs);\n\t\tconst dataCache = new TTLCache<string, unknown>(100, serverTtlMs);\n\t\tconst collectionCache = new TTLCache<string, Response>(50, serverTtlMs);\n\t\tconst sitemapCache = new TTLCache<string, string>(20, serverTtlMs);\n\t\tconst rssCache = new TTLCache<string, string>(20, serverTtlMs);\n\t\t// Increased OG cache entries to reduce cache thrashing\n\t\t// With ~240 images/hour, 1000 entries gives ~4 hours of cache coverage\n\t\t// Memory limit of 1GB prevents unbounded memory growth from OG image buffers\n\t\tconst ogCache = new TTLCache<string, Buffer>(1000, ogTtlMs, 60_000, 1000);\n\t\tconst robotsCache = new TTLCache<string, string>(10, serverTtlMs);\n\n\t\t// Live reload SSE clients + pending reload if no clients connected\n\t\tconst liveReloadState = {\n\t\t\tclients: new Set<ReadableStreamDefaultController>(),\n\t\t\tpendingReload: false as false | 'css' | 'full',\n\t\t};\n\t\tconst reloadEncoder = new TextEncoder();\n\t\tconst reloadFullMessage = reloadEncoder.encode('data: reload\\n\\n');\n\t\tconst reloadCssMessage = reloadEncoder.encode('data: reload:css\\n\\n');\n\t\tconst rebuildingMessage = reloadEncoder.encode('data: rebuilding\\n\\n');\n\n\t\tconst notifyReload = (mode: 'css' | 'full' = 'full') => {\n\t\t\tconst message = mode === 'css' ? reloadCssMessage : reloadFullMessage;\n\t\t\tlet delivered = false;\n\t\t\tfor (const controller of liveReloadState.clients) {\n\t\t\t\ttry {\n\t\t\t\t\tcontroller.enqueue(message);\n\t\t\t\t\tdelivered = true;\n\t\t\t\t} catch {\n\t\t\t\t\tliveReloadState.clients.delete(controller);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!delivered) {\n\t\t\t\t// Remember to reload once the next client connects\n\t\t\t\tliveReloadState.pendingReload = mode;\n\t\t\t}\n\t\t};\n\n\t\tconst notifyRebuilding = () => {\n\t\t\tfor (const controller of liveReloadState.clients) {\n\t\t\t\ttry {\n\t\t\t\t\tcontroller.enqueue(rebuildingMessage);\n\t\t\t\t} catch {\n\t\t\t\t\tliveReloadState.clients.delete(controller);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Client directory for SSR rendering (contains routes, components, etc.)\n\t\t// - Dev: ${cwd}/src/client\n\t\t// - Prod: ${cwd}/.reroute\n\t\tconst clientDir = existsSync(`${cwd}/.reroute/assets`)\n\t\t\t? `${cwd}/.reroute`\n\t\t\t: `${cwd}/src/client`;\n\n\t\tconst shouldIgnore = !ignorePatterns.length\n\t\t\t? () => false\n\t\t\t: (file: string) =>\n\t\t\t\t\tignorePatterns.find((pattern: string | RegExp) =>\n\t\t\t\t\t\ttypeof pattern === 'string'\n\t\t\t\t\t\t\t? file.includes(pattern)\n\t\t\t\t\t\t\t: pattern.test(file),\n\t\t\t\t\t);\n\n\t\tconst isWatchMode =\n\t\t\tprocess.env.REROUTE_DEV === '1' ||\n\t\t\t(Array.isArray(process.execArgv) &&\n\t\t\t\tprocess.execArgv.includes('--watch')) ||\n\t\t\t(Array.isArray(process.argv) && process.argv.includes('--watch'));\n\n\t\t// Shared cache-control for data responses (prefetch + client navigations)\n\t\t// Align with static caching to reduce repeated XHRs even in dev.\n\t\tconst dataCacheControl = browserCacheEnabled\n\t\t\t? `${browserDirective}, max-age=${browserMaxAge}`\n\t\t\t: undefined;\n\n\t\tif (isWatchMode) {\n\t\t\tconsole.log(`[reroute] Live reload enabled`);\n\n\t\t\t// Register live reload routes IMMEDIATELY in watch mode\n\t\t\t// This must happen before any async operations to ensure the SSE endpoint\n\t\t\t// is available as soon as the server starts (prevents 404 during reconnect)\n\t\t\tregisterLiveReloadRoutes(app, liveReloadState);\n\n\t\t\t// Also register rebuilding/reload notification endpoints early\n\t\t\tapp.post('/__reroute_rebuilding', () => {\n\t\t\t\tconsole.log(\n\t\t\t\t\t'[reroute] Rebuild notification received, notifying browsers...',\n\t\t\t\t);\n\t\t\t\tnotifyRebuilding();\n\t\t\t\treturn new Response(\n\t\t\t\t\tJSON.stringify({ ok: true, clients: liveReloadState.clients.size }),\n\t\t\t\t\t{\n\t\t\t\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tapp.post('/__reroute_reload', async ({ request }) => {\n\t\t\t\tlet mode: 'css' | 'full' = 'full';\n\t\t\t\ttry {\n\t\t\t\t\tconst body = (await request.json()) as { mode?: string };\n\t\t\t\t\tif (body?.mode === 'css') mode = 'css';\n\t\t\t\t} catch {\n\t\t\t\t\t// No/invalid body → full reload (backward compatible)\n\t\t\t\t}\n\t\t\t\tif (mode === 'full') {\n\t\t\t\t\tssrCache.clear();\n\t\t\t\t\tstatusCache.clear();\n\t\t\t\t\tcollectionCache.clear();\n\t\t\t\t\tdataCache.clear();\n\t\t\t\t\tfileCache.clear();\n\t\t\t\t\tclearWatchImportCache();\n\t\t\t\t\tclearSSRModuleStores();\n\t\t\t\t}\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[reroute] Reload notification received (${mode}), notifying ${liveReloadState.clients.size} browser(s)...`,\n\t\t\t\t);\n\t\t\t\tnotifyReload(mode);\n\t\t\t\treturn new Response(\n\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\tok: true,\n\t\t\t\t\t\tmode,\n\t\t\t\t\t\tclients: liveReloadState.clients.size,\n\t\t\t\t\t}),\n\t\t\t\t\t{\n\t\t\t\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\t// Find bundle URL by scanning bundles directory\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: File scanning with retry logic is inherently complex\n\t\tconst readBundleUrl = async (): Promise<string> => {\n\t\t\tconst bundlesDir = `${cwd}/.reroute/bundles`;\n\t\t\tconst maxAttempts = isWatchMode ? 500 : 10;\n\t\t\tconst sleepMs = isWatchMode ? 100 : 250;\n\n\t\t\tfor (let attempt = 0; attempt < maxAttempts; attempt++) {\n\t\t\t\ttry {\n\t\t\t\t\tconst glob = new Bun.Glob('index.*.js');\n\t\t\t\t\tconst files = await Array.fromAsync(glob.scan(bundlesDir));\n\t\t\t\t\tconst indexFile =\n\t\t\t\t\t\tfiles.find((f) => !f.includes('.stub.')) || files[0];\n\t\t\t\t\tif (indexFile) {\n\t\t\t\t\t\treturn `/bundles/${indexFile}`;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Directory might not exist yet or be empty during rebuild\n\t\t\t\t}\n\n\t\t\t\tif (attempt === 0) {\n\t\t\t\t\tconsole.warn('[reroute] Waiting for bundles to be generated...');\n\t\t\t\t}\n\t\t\t\tawait Bun.sleep(sleepMs);\n\t\t\t}\n\n\t\t\tthrow new Error('Bundle not found. Run `reroute gen` first.');\n\t\t};\n\n\t\t// Read bundle URL at startup and cache it\n\t\tconst initialBundleUrl = await readBundleUrl();\n\t\tconsole.log(`[reroute] Using pre-built bundle: ${initialBundleUrl}`);\n\n\t\t// Cache bundle URL function (instant in prod, rescan in dev)\n\t\tconst getBundleUrl = isWatchMode\n\t\t\t? readBundleUrl // Rescan in dev to detect rebuilds\n\t\t\t: async () => initialBundleUrl; // Instant in prod\n\n\t\t// Pre-cache expensive SSR setup work at startup\n\t\t// These don't change per-request and can be shared across all SSR renders\n\t\tconst { loadCollections, inlineThemeCSS, loadIndexHtml } = await import(\n\t\t\t'reroute-js/core'\n\t\t);\n\t\tconst startupCollections = await loadCollections(cwd, isWatchMode);\n\t\tconst startupThemeCSS = await inlineThemeCSS(clientDir, isWatchMode);\n\t\tconst startupIndexHtml = await loadIndexHtml(clientDir);\n\n\t\t// TTL-based cache for collections in production\n\t\t// This allows content updates to be reflected after cache expiration\n\t\tconst collectionsTtlMs = serverMaxAge * 1000;\n\t\tlet collectionsCache: {\n\t\t\tdata: Record<string, unknown[]>;\n\t\t\texp: number;\n\t\t} | null = serverCacheEnabled\n\t\t\t? { data: startupCollections, exp: Date.now() + collectionsTtlMs }\n\t\t\t: null;\n\n\t\t// Export cached values for SSR to use\n\t\tconst getCollections = isWatchMode\n\t\t\t? () => loadCollections(cwd, isWatchMode) // Reload in dev\n\t\t\t: async () => {\n\t\t\t\t\t// In production: use TTL-based caching\n\t\t\t\t\tif (!serverCacheEnabled) {\n\t\t\t\t\t\treturn loadCollections(cwd, isWatchMode);\n\t\t\t\t\t}\n\t\t\t\t\tif (collectionsCache && collectionsCache.exp > Date.now()) {\n\t\t\t\t\t\treturn collectionsCache.data;\n\t\t\t\t\t}\n\t\t\t\t\t// Cache expired or missing - reload\n\t\t\t\t\tconst fresh = await loadCollections(cwd, isWatchMode);\n\t\t\t\t\tcollectionsCache = {\n\t\t\t\t\t\tdata: fresh,\n\t\t\t\t\t\texp: Date.now() + collectionsTtlMs,\n\t\t\t\t\t};\n\t\t\t\t\treturn fresh;\n\t\t\t\t};\n\n\t\tconst getThemeCSS = isWatchMode\n\t\t\t? () => inlineThemeCSS(clientDir, isWatchMode) // Reload in dev\n\t\t\t: async () => startupThemeCSS; // Use cache in prod\n\n\t\tconst getIndexHtml = isWatchMode\n\t\t\t? () => loadIndexHtml(clientDir) // Reload in dev\n\t\t\t: async () => startupIndexHtml; // Use cache in prod\n\n\t\t// Register redirect routes (must be early to intercept before other routes)\n\t\tif (globalConfig.redirects && globalConfig.redirects.length > 0) {\n\t\t\tregisterRedirectRoutes(app, globalConfig.redirects);\n\t\t}\n\n\t\t// Register content routes\n\t\tregisterContentRoutes(\n\t\t\tapp,\n\t\t\tcwd,\n\t\t\tcollectionCache,\n\t\t\tbrowserDirective,\n\t\t\tbrowserMaxAge,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\t// Register search route (if search is enabled in config)\n\t\tregisterSearchRoute(app, cwd, browserDirective, browserMaxAge, {\n\t\t\tdefaultPageSize: globalConfig.search?.defaultPageSize,\n\t\t\tmaxPageSize: globalConfig.search?.maxPageSize,\n\t\t});\n\n\t\t// Register internal routes (preload, data endpoints - always needed)\n\t\tregisterInternalRoutes(app, {\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tdataCacheControl,\n\t\t\tdataCache: serverDataMaxAge > 0 ? dataCache : undefined,\n\t\t\tisWatchMode,\n\t\t\tmaxAge: serverDataMaxAge,\n\t\t});\n\n\t\t// Note: Live reload routes (/__reroute_watch, /__reroute_rebuilding, /__reroute_reload)\n\t\t// are registered early in the plugin initialization (before async operations)\n\t\t// to ensure they're available immediately when the server starts.\n\n\t\t// Register artifacts routes (.reroute directory)\n\t\tregisterArtifactsRoutes(app, cwd, fileCache, {\n\t\t\tbundleMaxAge,\n\t\t\tdirective: browserDirective,\n\t\t\tisWatchMode,\n\t\t});\n\n\t\t// Initialize and register image optimization routes\n\t\tconst imageCacheDir = `${cwd}/.reroute/image-cache`;\n\t\tinitImageCache(imageCacheDir);\n\t\tregisterImageRoutes(app, {\n\t\t\tclientDir,\n\t\t\tmaxAge: imageMaxAge,\n\t\t\tallowedDomains: imageAllowedDomains,\n\t\t\tmaxWidth: imageMaxWidth,\n\t\t\tmaxHeight: imageMaxHeight,\n\t\t\tcompression,\n\t\t});\n\n\t\t// Register static file serving (BEFORE SSR routes to prevent catch-all interception)\n\t\t// Static assets at /assets/* must be registered before the SSR catch-all route\n\t\tregisterStaticRoutes(app, {\n\t\t\tstaticAssetsDir,\n\t\t\tmaxAge: staticMaxAge,\n\t\t\tdirective: staticDirective,\n\t\t\tstaticHeaders,\n\t\t\tshouldIgnore: shouldIgnore as () => boolean,\n\t\t\tfileCache,\n\t\t\tisWatchMode,\n\t\t\tcompression,\n\t\t});\n\n\t\t// Register SSR routes if root component is provided\n\t\tif (rootComponent) {\n\t\t\ttry {\n\t\t\t\tconst collections = await discoverCollections(clientDir);\n\t\t\t\tif (collections.length > 0) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[reroute] Discovered collections: ${collections.join(', ')}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Register robots.txt route (BEFORE LLMs routes to avoid .txt extension interception)\n\t\t\t\tif (robotsEnabled && robotsConfig) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst robotsWithSignal =\n\t\t\t\t\t\t\trobotsConfig.contentSignal !== undefined || !llmsEnabled\n\t\t\t\t\t\t\t\t? robotsConfig\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t...robotsConfig,\n\t\t\t\t\t\t\t\t\t\tcontentSignal: llmsConfig?.contentSignal ?? {},\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\tregisterRobotsRoute(app, {\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tmaxAge: browserCacheEnabled\n\t\t\t\t\t\t\t\t? (robotsConfig.maxAge ?? browserMaxAge)\n\t\t\t\t\t\t\t\t: 0,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\trobotsCache,\n\t\t\t\t\t\t\trobotsConfig: robotsWithSignal,\n\t\t\t\t\t\t\tsitemapConfig,\n\t\t\t\t\t\t\tsitemapEnabled,\n\t\t\t\t\t\t\tredirects: globalConfig.redirects,\n\t\t\t\t\t\t\tcacheEnabled: serverCacheEnabled,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconsole.log('[reroute] Robots.txt generation enabled');\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[reroute] Failed to register robots route:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Register sitemap routes (BEFORE SSR to prevent catch-all interception)\n\t\t\t\tif (sitemapEnabled && sitemapBaseUrl) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tregisterSitemapRoutes(app, {\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tcollections,\n\t\t\t\t\t\t\tbaseUrl: sitemapBaseUrl,\n\t\t\t\t\t\t\tmaxAge: browserCacheEnabled ? browserMaxAge : 0,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\tsitemapCache,\n\t\t\t\t\t\t\tsitemapConfig,\n\t\t\t\t\t\t\tcacheEnabled: serverCacheEnabled,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[reroute] Sitemap enabled at ${sitemapBaseUrl}/sitemap.xml`,\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'[reroute] Failed to register sitemap routes:',\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}\n\n\t\t\t\t// Register RSS feed routes (BEFORE SSR to prevent catch-all interception)\n\t\t\t\tif (rssEnabled && rssBaseUrl) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait registerRSSRoutes(app, {\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\tcollections,\n\t\t\t\t\t\t\tbaseUrl: rssBaseUrl,\n\t\t\t\t\t\t\tmaxAge: browserMaxAge,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\trssCache,\n\t\t\t\t\t\t\trssConfig,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[reroute] RSS feeds enabled at ${rssBaseUrl}/feed.xml`,\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[reroute] Failed to register RSS routes:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Register LLMs routes (BEFORE SSR routes to intercept .txt/.md extensions)\n\t\t\t\tif (llmsEnabled && llmsConfig) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tregisterLLMsRoutes(app, {\n\t\t\t\t\t\t\trootComponent: rootComponent as ReactElement,\n\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\tgetBundleUrl,\n\t\t\t\t\t\t\tmaxAge: serverMaxAge,\n\t\t\t\t\t\t\tdirective: browserDirective,\n\t\t\t\t\t\t\tllmsConfig,\n\t\t\t\t\t\t\tcollections,\n\t\t\t\t\t\t\tdataCache,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst features: string[] = [];\n\t\t\t\t\t\tif (llmsConfig.enableTextExtension !== false) features.push('.txt');\n\t\t\t\t\t\tif (llmsConfig.enableMarkdownExtension !== false)\n\t\t\t\t\t\t\tfeatures.push('.md');\n\t\t\t\t\t\tif (llmsConfig.enableContentNegotiation !== false)\n\t\t\t\t\t\t\tfeatures.push('Accept headers');\n\t\t\t\t\t\tif (llmsConfig.enableIndex !== false) features.push('/llms.txt');\n\t\t\t\t\t\tif (llmsConfig.enableFullContent !== false)\n\t\t\t\t\t\t\tfeatures.push('/llms-full.txt');\n\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[reroute] LLMs content enabled: ${features.join(', ')}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[reroute] Failed to register LLMs routes:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Register OG Image routes (BEFORE SSR to prevent catch-all interception)\n\t\t\t\tif (ogEnabled && ogConfig) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tregisterOGRoutes(app, {\n\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\togConfig,\n\t\t\t\t\t\t\togCache,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconsole.log('[reroute] OG image generation enabled');\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[reroute] Failed to register OG routes:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Register SSR routes LAST - the catch-all must come after all specific routes\n\t\t\t\tregisterSSRRoutes(app, {\n\t\t\t\t\trootComponent: rootComponent as ReactElement,\n\t\t\t\t\tclientDir,\n\t\t\t\t\tcwd,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\tgetBundleUrl,\n\t\t\t\t\tgetCollections,\n\t\t\t\t\tgetThemeCSS,\n\t\t\t\t\tgetIndexHtml,\n\t\t\t\t\tdebug,\n\t\t\t\t\thead: ssrHead,\n\t\t\t\t\tlang: ssrLang,\n\t\t\t\t\tappId: ssrAppId,\n\t\t\t\t\tserverCacheEnabled,\n\t\t\t\t\tserverMaxAge,\n\t\t\t\t\tbrowserCacheEnabled,\n\t\t\t\t\tbrowserMaxAge,\n\t\t\t\t\tbrowserDirective,\n\t\t\t\t\tcompression,\n\t\t\t\t\tstreamingEnabled,\n\t\t\t\t\tstreamingTimeout: globalConfig.streaming?.timeout,\n\t\t\t\t\togConfig,\n\t\t\t\t\togMetaConfig: globalConfig.og,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\tautoCanonical,\n\t\t\t\t\ttitleSuffix,\n\t\t\t\t\tllmsConfig: llmsEnabled ? llmsConfig : undefined,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[reroute] Failed to register SSR routes:', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\t// Global error handler\n\t\tapp.onError(({ set, error }) => {\n\t\t\tif ('status' in error && error.status === 404) {\n\t\t\t\tset.status = 404;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// biome-ignore lint/complexity/useLiteralKeys: bracket notation required to prevent build-time replacement\n\t\t\tif (process.env['NODE_ENV'] !== 'production') {\n\t\t\t\tconsole.error('[reroute] 🚨 Server error:', error);\n\t\t\t}\n\t\t});\n\n\t\treturn app;\n\t};\n\nexport { reroute };\n",
|
|
80
|
+
"/**\n * In-process ssr.data() / `__reroute_data` TTL. `server.cache: false` or\n * `maxAge: 0` means recompute on every origin request.\n */\nexport function resolveServerDataMaxAge(\n\tcacheEnabled: boolean,\n\tmaxAgeSeconds: number,\n): number {\n\tif (!cacheEnabled || maxAgeSeconds <= 0) return 0;\n\treturn maxAgeSeconds;\n}\n\n/**\n * Determine encoding that will be used (matches gzipIfAccepted priority: Brotli > Gzip > Raw)\n */\nexport function getEncoding(acceptEncoding: string): 'br' | 'gz' | 'raw' {\n\treturn /\\bbr\\b/i.test(acceptEncoding)\n\t\t? 'br'\n\t\t: /gzip/i.test(acceptEncoding)\n\t\t\t? 'gz'\n\t\t\t: 'raw';\n}\n",
|
|
80
81
|
"import { existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport sharp from 'sharp';\n\ninterface ImageTransformOptions {\n\twidth?: number;\n\theight?: number;\n\tquality?: number;\n\tformat?: 'webp' | 'avif' | 'jpeg' | 'png' | 'auto';\n\tfit?: 'cover' | 'contain' | 'fill' | 'inside' | 'outside';\n}\n\ninterface ImageOptimizationResult {\n\tbuffer: Buffer;\n\tcontentType: string;\n\tformat: string;\n\twidth: number;\n\theight: number;\n\tsize: number;\n}\n\n// In-memory cache for transformed images\nconst imageCache = new Map<string, ImageOptimizationResult>();\nconst MAX_CACHE_SIZE = 100; // Maximum number of images to cache in memory\n\n// Disk cache directory\nlet diskCacheDir: string | null = null;\n\n/**\n * Initialize disk cache directory\n */\nexport function initImageCache(cacheDir: string) {\n\tdiskCacheDir = cacheDir;\n}\n\n/**\n * Generate cache key for image transformation\n */\nfunction getCacheKey(\n\timagePath: string,\n\toptions: ImageTransformOptions,\n): string {\n\tconst optionsString = JSON.stringify(options);\n\tconst hasher = new Bun.CryptoHasher('sha256');\n\thasher.update(`${imagePath}:${optionsString}`);\n\tconst hash = hasher.digest('hex');\n\treturn hash;\n}\n\n/**\n * Get content type for image format\n */\nfunction getContentType(format: string): string {\n\tconst contentTypes: Record<string, string> = {\n\t\twebp: 'image/webp',\n\t\tavif: 'image/avif',\n\t\tjpeg: 'image/jpeg',\n\t\tjpg: 'image/jpeg',\n\t\tpng: 'image/png',\n\t\tgif: 'image/gif',\n\t};\n\treturn contentTypes[format] || 'image/jpeg';\n}\n\n/**\n * Determine optimal format based on Accept header\n */\nfunction negotiateFormat(\n\tacceptHeader: string | undefined,\n\trequestedFormat: string | undefined,\n): 'webp' | 'avif' | 'jpeg' | 'png' {\n\t// If format is explicitly requested, use it\n\tif (\n\t\trequestedFormat &&\n\t\t['webp', 'avif', 'jpeg', 'png'].includes(requestedFormat)\n\t) {\n\t\treturn requestedFormat as 'webp' | 'avif' | 'jpeg' | 'png';\n\t}\n\n\t// Parse Accept header\n\tconst accept = acceptHeader?.toLowerCase() || '';\n\n\t// Check for AVIF support (best compression)\n\tif (accept.includes('image/avif')) {\n\t\treturn 'avif';\n\t}\n\n\t// Check for WebP support (good compression, wide support)\n\tif (accept.includes('image/webp')) {\n\t\treturn 'webp';\n\t}\n\n\t// Default to JPEG\n\treturn 'jpeg';\n}\n\n/**\n * Load image from disk cache\n */\nasync function loadFromDiskCache(\n\tcacheKey: string,\n): Promise<ImageOptimizationResult | null> {\n\tif (!diskCacheDir) return null;\n\n\ttry {\n\t\tconst cachePath = join(diskCacheDir, `${cacheKey}.json`);\n\t\tconst imagePath = join(diskCacheDir, `${cacheKey}.img`);\n\n\t\tif (!(existsSync(cachePath) && existsSync(imagePath))) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst metadata = JSON.parse(await Bun.file(cachePath).text());\n\t\tconst buffer = Buffer.from(await Bun.file(imagePath).arrayBuffer());\n\n\t\treturn {\n\t\t\tbuffer,\n\t\t\tcontentType: metadata.contentType,\n\t\t\tformat: metadata.format,\n\t\t\twidth: metadata.width,\n\t\t\theight: metadata.height,\n\t\t\tsize: metadata.size,\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Save image to disk cache\n */\nasync function saveToDiskCache(\n\tcacheKey: string,\n\tresult: ImageOptimizationResult,\n): Promise<void> {\n\tif (!diskCacheDir) return;\n\n\ttry {\n\t\tconst cachePath = join(diskCacheDir, `${cacheKey}.json`);\n\t\tconst imagePath = join(diskCacheDir, `${cacheKey}.img`);\n\n\t\t// Save metadata\n\t\tawait Bun.write(\n\t\t\tcachePath,\n\t\t\tJSON.stringify({\n\t\t\t\tcontentType: result.contentType,\n\t\t\t\tformat: result.format,\n\t\t\t\twidth: result.width,\n\t\t\t\theight: result.height,\n\t\t\t\tsize: result.size,\n\t\t\t}),\n\t\t);\n\n\t\t// Save image buffer\n\t\tawait Bun.write(imagePath, result.buffer);\n\t} catch (error) {\n\t\tconsole.error('Failed to save image to disk cache:', error);\n\t}\n}\n\n/**\n * Optimize and transform image using Sharp\n */\nasync function fetchImageBuffer(imagePath: string): Promise<Buffer> {\n\tif (imagePath.startsWith('http://') || imagePath.startsWith('https://')) {\n\t\tconst response = await fetch(imagePath);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to fetch image: ${response.status} ${response.statusText}`,\n\t\t\t);\n\t\t}\n\t\tconst arrayBuffer = await response.arrayBuffer();\n\t\treturn Buffer.from(arrayBuffer);\n\t}\n\n\treturn Buffer.from(await Bun.file(imagePath).arrayBuffer());\n}\n\nfunction applyFormatTransform(\n\ttransformer: sharp.Sharp,\n\tformat: 'webp' | 'avif' | 'jpeg' | 'png',\n\tquality: number,\n): sharp.Sharp {\n\tswitch (format) {\n\t\tcase 'webp':\n\t\t\treturn transformer.webp({ quality, effort: 4 });\n\t\tcase 'avif':\n\t\t\treturn transformer.avif({ quality, effort: 4 });\n\t\tcase 'png':\n\t\t\treturn transformer.png({\n\t\t\t\tquality,\n\t\t\t\tcompressionLevel: 9,\n\t\t\t\tadaptiveFiltering: true,\n\t\t\t});\n\t\tdefault:\n\t\t\treturn transformer.jpeg({ quality, mozjpeg: true });\n\t}\n}\n\nfunction addToMemoryCache(cacheKey: string, result: ImageOptimizationResult) {\n\tif (imageCache.size >= MAX_CACHE_SIZE) {\n\t\tconst firstKey = imageCache.keys().next().value;\n\t\tif (firstKey) {\n\t\t\timageCache.delete(firstKey);\n\t\t}\n\t}\n\timageCache.set(cacheKey, result);\n}\n\nexport async function optimizeImage(\n\timagePath: string,\n\toptions: ImageTransformOptions,\n\tacceptHeader?: string,\n): Promise<ImageOptimizationResult> {\n\t// Generate cache key\n\tconst cacheKey = getCacheKey(imagePath, options);\n\n\t// Check in-memory cache first\n\tconst memCached = imageCache.get(cacheKey);\n\tif (memCached) {\n\t\treturn memCached;\n\t}\n\n\t// Check disk cache\n\tconst diskCached = await loadFromDiskCache(cacheKey);\n\tif (diskCached) {\n\t\taddToMemoryCache(cacheKey, diskCached);\n\t\treturn diskCached;\n\t}\n\n\t// Read source image\n\tconst sourceBuffer = await fetchImageBuffer(imagePath);\n\n\t// Determine output format\n\tconst format =\n\t\toptions.format === 'auto' || !options.format\n\t\t\t? negotiateFormat(acceptHeader, undefined)\n\t\t\t: options.format;\n\n\t// Initialize sharp instance\n\tlet transformer = sharp(sourceBuffer);\n\n\t// Get source metadata\n\tconst metadata = await transformer.metadata();\n\n\t// Apply resize if width or height is specified\n\tif (options.width || options.height) {\n\t\tconst resizeOptions: sharp.ResizeOptions = {\n\t\t\twidth: options.width,\n\t\t\theight: options.height,\n\t\t\tfit: options.fit || 'cover',\n\t\t\twithoutEnlargement: true,\n\t\t};\n\t\ttransformer = transformer.resize(resizeOptions);\n\t}\n\n\t// Apply format-specific optimizations\n\tconst quality = options.quality ?? 75;\n\ttransformer = applyFormatTransform(transformer, format, quality);\n\n\t// Execute transformation\n\tconst buffer = await transformer.toBuffer();\n\tconst info = await sharp(buffer).metadata();\n\n\tconst result: ImageOptimizationResult = {\n\t\tbuffer,\n\t\tcontentType: getContentType(format),\n\t\tformat,\n\t\twidth: info.width || metadata.width || options.width || 0,\n\t\theight: info.height || metadata.height || options.height || 0,\n\t\tsize: buffer.length,\n\t};\n\n\t// Save to disk cache\n\tawait saveToDiskCache(cacheKey, result);\n\n\t// Add to memory cache\n\tif (imageCache.size >= MAX_CACHE_SIZE) {\n\t\tconst firstKey = imageCache.keys().next().value;\n\t\tif (firstKey) {\n\t\t\timageCache.delete(firstKey);\n\t\t}\n\t}\n\timageCache.set(cacheKey, result);\n\n\treturn result;\n}\n\n/**\n * Check if path is an image file\n */\nexport function isImageFile(path: string): boolean {\n\tconst imageExtensions = ['.jpg', '.jpeg', '.png', '.webp', '.avif', '.gif'];\n\tconst ext = path.toLowerCase().split('.').pop();\n\treturn ext ? imageExtensions.includes(`.${ext}`) : false;\n}\n",
|
|
81
|
-
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport { join, type TTLCache } from 'reroute-js/core';\nimport {\n\ttype CachedFileData,\n\tgetHashedFileCacheControl,\n\tserveFile,\n} from '../libs/serving';\n\ntype ArtifactsOptions = {\n\tbundleMaxAge: number;\n\tdirective: string;\n\tisWatchMode?: boolean;\n};\n\nexport function registerArtifactsRoutes(\n\tapp: Elysia,\n\tcwd: string,\n\tfileCache: TTLCache<string, CachedFileData>,\n\toptions: ArtifactsOptions,\n): Elysia {\n\tconst { bundleMaxAge, directive, isWatchMode = false } = options;\n\n\t// Serve
|
|
82
|
+
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport { join, type TTLCache } from 'reroute-js/core';\nimport {\n\ttype CachedFileData,\n\tgetHashedFileCacheControl,\n\tserveFile,\n} from '../libs/serving';\n\nfunction bundledThemeCssResponse(cacheControl: string): Response {\n\tconst bundled = (globalThis as Record<string, unknown>)\n\t\t.__REROUTE_THEME_CSS__ as string | undefined;\n\tif (!bundled) throw new NotFoundError();\n\treturn new Response(bundled, {\n\t\theaders: {\n\t\t\t'Content-Type': 'text/css; charset=utf-8',\n\t\t\t'Cache-Control': cacheControl,\n\t\t},\n\t});\n}\n\ntype ArtifactsOptions = {\n\tbundleMaxAge: number;\n\tdirective: string;\n\tisWatchMode?: boolean;\n};\n\nexport function registerArtifactsRoutes(\n\tapp: Elysia,\n\tcwd: string,\n\tfileCache: TTLCache<string, CachedFileData>,\n\toptions: ArtifactsOptions,\n): Elysia {\n\tconst { bundleMaxAge, directive, isWatchMode = false } = options;\n\n\t// Serve the theme stylesheet linked from SSR HTML\n\tapp.get('/.reroute/index.css', async ({ headers }) => {\n\t\tconst filePath = join(cwd, '.reroute', 'index.css');\n\t\tconst acceptEncoding = headers['accept-encoding'] ?? '';\n\t\tconst cacheControl = isWatchMode\n\t\t\t? 'no-cache, no-store, must-revalidate'\n\t\t\t: `${directive}, max-age=${bundleMaxAge}`;\n\n\t\tif (isWatchMode) {\n\t\t\ttry {\n\t\t\t\tconst { readFileSync } = await import('node:fs');\n\t\t\t\tconst content = readFileSync(filePath);\n\t\t\t\treturn new Response(content, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'text/css; charset=utf-8',\n\t\t\t\t\t\t'Cache-Control': cacheControl,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\treturn bundledThemeCssResponse(cacheControl);\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\treturn await serveFile(filePath, acceptEncoding, fileCache, {\n\t\t\t\tcacheControl,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (error instanceof NotFoundError) {\n\t\t\t\treturn bundledThemeCssResponse(cacheControl);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t});\n\n\t// Serve pre-built bundles and chunks from .reroute/bundles/\n\tapp.get('/bundles/*', async ({ params, headers }) => {\n\t\tconst fileName = String(params['*'] ?? '').replace(/^\\/+/, '');\n\t\tif (!fileName) throw new NotFoundError();\n\n\t\tconst filePath = join(cwd, '.reroute', 'bundles', fileName);\n\t\tconst acceptEncoding = headers['accept-encoding'] ?? '';\n\n\t\ttry {\n\t\t\tconst cacheControl = getHashedFileCacheControl(\n\t\t\t\tfileName,\n\t\t\t\tbundleMaxAge,\n\t\t\t\tdirective,\n\t\t\t\tisWatchMode,\n\t\t\t);\n\n\t\t\t// serveFile will automatically use pre-compressed .br/.gz files if they exist (prod)\n\t\t\t// or serve raw files if they don't (dev). No on-the-fly compression!\n\t\t\treturn await serveFile(filePath, acceptEncoding, fileCache, {\n\t\t\t\tcacheControl,\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tif (e instanceof NotFoundError) throw e;\n\t\t\tconsole.error('[reroute] Failed to serve bundle:', filePath, e);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\t// Serve generated collections from .reroute/collections/\n\t// Collections don't have content hashes in filenames, so we use short cache\n\t// with revalidation instead of immutable to ensure fresh content after rebuilds\n\tapp.get('/.reroute/collections/*', async ({ params, headers }) => {\n\t\tconst fileName = String(params['*'] ?? '').replace(/^\\/+/, '');\n\t\tif (!fileName) throw new NotFoundError();\n\n\t\tconst filePath = join(cwd, '.reroute', 'collections', fileName);\n\t\tconst acceptEncoding = headers['accept-encoding'] ?? '';\n\n\t\ttry {\n\t\t\t// Collections don't have content hashes, so use short cache with revalidation\n\t\t\t// This ensures browsers fetch fresh collections after content rebuilds\n\t\t\tconst cacheControl = isWatchMode\n\t\t\t\t? 'no-cache, no-store, must-revalidate'\n\t\t\t\t: 'public, max-age=60, must-revalidate';\n\n\t\t\treturn await serveFile(filePath, acceptEncoding, fileCache, {\n\t\t\t\tcacheControl,\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tif (e instanceof NotFoundError) throw e;\n\t\t\tconsole.error('[reroute] Failed to serve collection file:', filePath, e);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\treturn app;\n}\n",
|
|
82
83
|
"/**\n * Static file serving primitives\n * Shared logic for serving files with caching and pre-compressed file handling\n */\n\nimport { NotFoundError } from 'elysia';\nimport { getMimeType, type TTLCache } from 'reroute-js/core';\nimport { getEncoding } from './cache';\nimport { buildCacheControl, buildDevCacheControl } from './response';\n\nexport interface ServeFileOptions {\n\tcacheControl: string;\n\tcompression?: boolean;\n\textraHeaders?: Record<string, string>;\n}\n\n/**\n * Cached file data - stores raw bytes and metadata instead of Response objects.\n * This avoids issues with Response.clone() on teed/locked body streams that can\n * cause empty responses on concurrent requests (especially on slow connections).\n */\nexport interface CachedFileData {\n\tbuffer: ArrayBuffer;\n\tcontentType: string;\n\tcontentEncoding?: string;\n}\n\n/**\n * Serve a static file with caching and optional pre-compressed versions\n * No on-the-fly compression - files should be pre-compressed at build time\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Static file serving with caching and compression\nexport async function serveFile(\n\tfilePath: string,\n\tacceptEncoding: string,\n\tfileCache: TTLCache<string, CachedFileData>,\n\toptions: ServeFileOptions,\n): Promise<Response> {\n\tconst { cacheControl, compression = true, extraHeaders = {} } = options;\n\n\tconst encoding = getEncoding(acceptEncoding);\n\tconst cacheKey = `${filePath}:${encoding}`;\n\n\t// TTLCache handles expiration automatically\n\t// We cache raw ArrayBuffer data instead of Response objects to avoid\n\t// issues with Response.clone() failing on concurrent requests\n\tconst cached = fileCache.get(cacheKey);\n\tif (cached) {\n\t\tconst headers: Record<string, string> = {\n\t\t\t'Content-Type': cached.contentType,\n\t\t\t'Cache-Control': cacheControl,\n\t\t\t'Reroute-Cache': 'HIT',\n\t\t\t...extraHeaders,\n\t\t};\n\t\tif (cached.contentEncoding) {\n\t\t\theaders['Content-Encoding'] = cached.contentEncoding;\n\t\t\theaders.Vary = 'Accept-Encoding';\n\t\t}\n\t\t// Create fresh Response from cached ArrayBuffer - safe for concurrent requests\n\t\treturn new Response(cached.buffer, { headers });\n\t}\n\n\t// Cache miss - check if file exists\n\tconst file = Bun.file(filePath);\n\tconst exists = await file.exists();\n\tif (!exists) throw new NotFoundError();\n\n\tconst contentType = getMimeType(filePath);\n\n\t// Try to serve pre-compressed versions (production builds only)\n\tif (compression && /\\.(js|css)$/i.test(filePath)) {\n\t\t// Prefer Brotli (better compression)\n\t\tif (/\\bbr\\b/i.test(acceptEncoding)) {\n\t\t\tconst brFile = Bun.file(`${filePath}.br`);\n\t\t\tif (await brFile.exists()) {\n\t\t\t\tconst brContent = await brFile.arrayBuffer();\n\t\t\t\t// Cache raw data instead of Response\n\t\t\t\tfileCache.set(cacheKey, {\n\t\t\t\t\tbuffer: brContent,\n\t\t\t\t\tcontentType,\n\t\t\t\t\tcontentEncoding: 'br',\n\t\t\t\t});\n\t\t\t\treturn new Response(brContent, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': contentType,\n\t\t\t\t\t\t'Cache-Control': cacheControl,\n\t\t\t\t\t\t'Content-Encoding': 'br',\n\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\tVary: 'Accept-Encoding',\n\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to gzip\n\t\tif (/gzip/i.test(acceptEncoding)) {\n\t\t\tconst gzFile = Bun.file(`${filePath}.gz`);\n\t\t\tif (await gzFile.exists()) {\n\t\t\t\tconst gzContent = await gzFile.arrayBuffer();\n\t\t\t\t// Cache raw data instead of Response\n\t\t\t\tfileCache.set(cacheKey, {\n\t\t\t\t\tbuffer: gzContent,\n\t\t\t\t\tcontentType,\n\t\t\t\t\tcontentEncoding: 'gzip',\n\t\t\t\t});\n\t\t\t\treturn new Response(gzContent, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': contentType,\n\t\t\t\t\t\t'Cache-Control': cacheControl,\n\t\t\t\t\t\t'Content-Encoding': 'gzip',\n\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\tVary: 'Accept-Encoding',\n\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Serve raw file (uncompressed)\n\t// Dev mode: no pre-compressed files exist, serve raw (fast)\n\t// Prod mode: browser doesn't accept compression, serve raw fallback\n\tconst buf = await file.arrayBuffer();\n\n\t// Cache raw data instead of Response\n\tfileCache.set(cacheKey, {\n\t\tbuffer: buf,\n\t\tcontentType,\n\t});\n\n\treturn new Response(buf, {\n\t\theaders: {\n\t\t\t'Content-Type': contentType,\n\t\t\t'Cache-Control': cacheControl,\n\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t...extraHeaders,\n\t\t},\n\t});\n}\n\n/**\n * Determine cache control for content-hashed files\n */\nexport function getHashedFileCacheControl(\n\tfileName: string,\n\tdefaultMaxAge: number,\n\tdirective: string,\n\tisWatchMode: boolean,\n): string {\n\tif (isWatchMode) {\n\t\treturn buildDevCacheControl();\n\t}\n\n\t// Files matching pattern: [name].[hash].[ext] or chunk.[hash].[ext]\n\tconst isContentHashed = /\\.([a-z0-9]{8,})\\.(js|css)$/i.test(fileName);\n\n\tif (isContentHashed) {\n\t\treturn 'public, max-age=31536000, immutable';\n\t}\n\n\treturn defaultMaxAge > 0\n\t\t? buildCacheControl(defaultMaxAge, directive as 'public' | 'private')\n\t\t: 'no-cache';\n}\n\n/**\n * Determine cache control for static assets\n */\nexport function getAssetCacheControl(\n\tfilePath: string,\n\tcontentType: string,\n\tmaxAge: number,\n\tdirective: string,\n\tisWatchMode: boolean,\n): string {\n\tif (isWatchMode) {\n\t\tconst isSourceFile = /\\.(tsx?|jsx?|css)$/i.test(filePath);\n\t\treturn isSourceFile\n\t\t\t? buildDevCacheControl()\n\t\t\t: buildCacheControl(maxAge, directive as 'public' | 'private');\n\t}\n\n\tconst isLongLivedAsset =\n\t\tcontentType.startsWith('image/') ||\n\t\tcontentType.startsWith('font/') ||\n\t\tcontentType.includes('woff') ||\n\t\tcontentType.includes('ttf') ||\n\t\tcontentType.includes('otf');\n\n\tconst effectiveMaxAge =\n\t\tmaxAge === 0 ? 0 : isLongLivedAsset ? 365 * 24 * 60 * 60 : maxAge;\n\n\tif (effectiveMaxAge <= 0) {\n\t\treturn 'no-cache';\n\t}\n\n\treturn `${directive}, max-age=${effectiveMaxAge}${isLongLivedAsset ? ', immutable' : ''}`;\n}\n",
|
|
83
|
-
"/**\n * Determine encoding that will be used (matches gzipIfAccepted priority: Brotli > Gzip > Raw)\n */\nexport function getEncoding(acceptEncoding: string): 'br' | 'gz' | 'raw' {\n\treturn /\\bbr\\b/i.test(acceptEncoding)\n\t\t? 'br'\n\t\t: /gzip/i.test(acceptEncoding)\n\t\t\t? 'gz'\n\t\t\t: 'raw';\n}\n",
|
|
84
84
|
"/**\n * Response factory functions for consistent HTTP response creation\n * Centralizes content-type headers and cache-control patterns\n */\n\ntype ContentType =\n\t| 'xml'\n\t| 'json'\n\t| 'text'\n\t| 'markdown'\n\t| 'javascript'\n\t| 'html'\n\t| 'rss'\n\t| 'atom'\n\t| 'png';\n\nconst CONTENT_TYPES: Record<ContentType, string> = {\n\txml: 'application/xml; charset=utf-8',\n\tjson: 'application/json; charset=utf-8',\n\ttext: 'text/plain; charset=utf-8',\n\tmarkdown: 'text/markdown; charset=utf-8',\n\tjavascript: 'application/javascript; charset=utf-8',\n\thtml: 'text/html; charset=utf-8',\n\trss: 'application/rss+xml; charset=utf-8',\n\tatom: 'application/atom+xml; charset=utf-8',\n\tpng: 'image/png',\n};\n\ninterface ResponseOptions {\n\tstatus?: number;\n\tmaxAge?: number;\n\tdirective?: 'public' | 'private';\n\textraHeaders?: Record<string, string>;\n\tvary?: string;\n\tcacheStatus?: 'HIT' | 'MISS';\n}\n\n/**\n * Build cache-control header value\n */\nfunction buildCacheControl(\n\tmaxAge: number,\n\tdirective: 'public' | 'private' = 'public',\n\timmutable = false,\n): string {\n\tif (maxAge <= 0) return 'no-cache';\n\treturn `${directive}, max-age=${maxAge}${immutable ? ', immutable' : ''}`;\n}\n\n/**\n * Build cache-control header for watch/dev mode\n */\nfunction buildDevCacheControl(): string {\n\treturn 'no-cache, no-store, must-revalidate';\n}\n\n/**\n * Create a typed response with consistent headers\n */\nfunction createResponse(\n\tbody: BodyInit | null,\n\tcontentType: ContentType,\n\toptions: ResponseOptions = {},\n): Response {\n\tconst {\n\t\tstatus = 200,\n\t\tmaxAge = 0,\n\t\tdirective = 'public',\n\t\textraHeaders = {},\n\t\tvary,\n\t\tcacheStatus,\n\t} = options;\n\n\tconst headers: Record<string, string> = {\n\t\t'content-type': CONTENT_TYPES[contentType],\n\t\t'cache-control': buildCacheControl(maxAge, directive),\n\t\t...extraHeaders,\n\t};\n\n\tif (vary) {\n\t\theaders.Vary = vary;\n\t}\n\n\tif (cacheStatus) {\n\t\theaders['Reroute-Cache'] = cacheStatus;\n\t}\n\n\treturn new Response(body, { status, headers });\n}\n\n/**\n * Create XML response (sitemap, RSS, etc.)\n */\nfunction xmlResponse(xml: string, options: ResponseOptions = {}): Response {\n\treturn createResponse(xml, 'xml', options);\n}\n\n/**\n * Create RSS feed response\n */\nfunction feedResponse(\n\txml: string,\n\tformat: 'rss' | 'atom' = 'rss',\n\toptions: ResponseOptions = {},\n): Response {\n\treturn createResponse(xml, format, options);\n}\n\n/**\n * Create plain text response\n */\nfunction textResponse(text: string, options: ResponseOptions = {}): Response {\n\treturn createResponse(text, 'text', options);\n}\n\n/**\n * Create markdown response\n */\nfunction markdownResponse(\n\ttext: string,\n\toptions: ResponseOptions = {},\n): Response {\n\treturn createResponse(text, 'markdown', { ...options, vary: 'Accept' });\n}\n\n/**\n * Create JavaScript response\n */\nfunction jsResponse(code: string, options: ResponseOptions = {}): Response {\n\treturn createResponse(code, 'javascript', options);\n}\n\n/**\n * Create HTML response\n */\nfunction htmlResponse(\n\thtml: string | Uint8Array,\n\toptions: ResponseOptions & { encoding?: Record<string, string> } = {},\n): Response {\n\tconst { encoding = {}, ...rest } = options;\n\treturn createResponse(html as BodyInit, 'html', {\n\t\t...rest,\n\t\textraHeaders: { ...rest.extraHeaders, ...encoding },\n\t});\n}\n\n/**\n * Create PNG image response\n */\nfunction pngResponse(\n\tbuffer: Buffer | ArrayBuffer,\n\toptions: ResponseOptions = {},\n): Response {\n\treturn createResponse(buffer as BodyInit, 'png', options);\n}\n\nexport {\n\ttype ContentType,\n\ttype ResponseOptions,\n\tbuildCacheControl,\n\tbuildDevCacheControl,\n\tcreateResponse,\n\txmlResponse,\n\tfeedResponse,\n\ttextResponse,\n\tmarkdownResponse,\n\tjsResponse,\n\thtmlResponse,\n\tpngResponse,\n};\n",
|
|
85
85
|
"import { trace } from '@opentelemetry/api';\nimport type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport { dynamicImport, join, type TTLCache } from 'reroute-js/core';\nimport { buildCacheControl, buildDevCacheControl } from '../libs/response';\n\n// Helper to check if OpenTelemetry is available\nlet otelAvailable: boolean | undefined;\n\nfunction isOtelAvailable(): boolean {\n\tif (otelAvailable !== undefined) return otelAvailable;\n\n\ttry {\n\t\trequire('@opentelemetry/api');\n\t\totelAvailable = true;\n\t\treturn true;\n\t} catch {\n\t\totelAvailable = false;\n\t\treturn false;\n\t}\n}\n\nexport function registerContentRoutes(\n\tapp: Elysia,\n\tcwd: string,\n\tcollectionCache: TTLCache<string, Response>,\n\tdirective: string,\n\tmaxAge: number,\n\tisWatchMode: boolean,\n): Elysia {\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Content serving with caching and error handling\n\tapp.get('/__content/*', async function serveCollectionContent({ params }) {\n\t\tconst collectionPath = String(params['*'] ?? '').trim();\n\t\tif (!collectionPath) throw new NotFoundError();\n\n\t\tconst cacheKey = `content:${collectionPath}`;\n\n\t\t// Never serve a cached collection in watch mode — gen rewrites\n\t\t// `.reroute/collections/*.js` and the previous Response still\n\t\t// points at old content-chunk URLs.\n\t\tconst cached = isWatchMode ? undefined : collectionCache.get(cacheKey);\n\t\tif (cached) {\n\t\t\tif (isOtelAvailable()) {\n\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\tcurrentSpan?.setAttributes({\n\t\t\t\t\t'reroute.cache.hit': true,\n\t\t\t\t\t'reroute.collection': collectionPath,\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst response = cached.clone();\n\t\t\tresponse.headers.set('Reroute-Cache', 'HIT');\n\t\t\treturn response;\n\t\t}\n\n\t\ttry {\n\t\t\tconst collectionFile = join(\n\t\t\t\tcwd,\n\t\t\t\t'.reroute',\n\t\t\t\t'collections',\n\t\t\t\t`${collectionPath}.js`,\n\t\t\t);\n\t\t\tconst file = Bun.file(collectionFile);\n\n\t\t\tif (!(await file.exists())) {\n\t\t\t\tif (isOtelAvailable()) {\n\t\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\t\tcurrentSpan?.setAttribute('reroute.collection', collectionPath);\n\t\t\t\t}\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\n\t\t\tconst mod = await dynamicImport<{ items?: unknown[] }>(\n\t\t\t\tcollectionFile,\n\t\t\t\tisWatchMode,\n\t\t\t);\n\t\t\tconst items = mod.items ?? [];\n\n\t\t\tconst body = JSON.stringify({ collection: collectionPath, items });\n\t\t\tconst response = new Response(body, {\n\t\t\t\tstatus: 200,\n\t\t\t\theaders: {\n\t\t\t\t\t'content-type': 'application/json; charset=utf-8',\n\t\t\t\t\t'cache-control': isWatchMode\n\t\t\t\t\t\t? buildDevCacheControl()\n\t\t\t\t\t\t: buildCacheControl(maxAge, directive as 'public' | 'private'),\n\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tif (!isWatchMode) {\n\t\t\t\tcollectionCache.set(cacheKey, response);\n\t\t\t}\n\n\t\t\tif (isOtelAvailable()) {\n\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\tcurrentSpan?.setAttributes({\n\t\t\t\t\t'reroute.collection': collectionPath,\n\t\t\t\t\t'reroute.collection.docs': items.length,\n\t\t\t\t\t'reroute.cache.hit': false,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn response.clone();\n\t\t} catch (e) {\n\t\t\tif (e instanceof NotFoundError) throw e;\n\t\t\tconsole.error(\n\t\t\t\t`[reroute] Failed to serve collection ${collectionPath}:`,\n\t\t\t\te,\n\t\t\t);\n\t\t\tif (isOtelAvailable()) {\n\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\tcurrentSpan?.setAttribute('reroute.collection', collectionPath);\n\t\t\t}\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\treturn app;\n}\n",
|
|
86
86
|
"import { existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { Elysia } from 'elysia';\nimport { gzipIfAccepted } from 'reroute-js/core';\nimport { isImageFile, optimizeImage } from '../libs/image';\n\ninterface ImageRouteOptions {\n\tclientDir: string;\n\tmaxAge?: number;\n\tallowedDomains?: string[];\n\tmaxWidth?: number;\n\tmaxHeight?: number;\n\tcompression?: boolean;\n}\n\nfunction parseNumericParam(value: string | undefined): number | undefined {\n\tif (!value) return undefined;\n\tconst num = Number.parseInt(value, 10);\n\treturn Number.isNaN(num) || num <= 0 ? undefined : num;\n}\n\nfunction clamp(value: number | undefined, max: number): number | undefined {\n\treturn value && value > max ? max : value;\n}\n\nexport function registerImageRoutes(\n\tapp: Elysia,\n\toptions: ImageRouteOptions,\n): void {\n\tconst {\n\t\tclientDir,\n\t\tmaxAge = 31536000,\n\t\tallowedDomains = [],\n\t\tmaxWidth = 3840,\n\t\tmaxHeight = 2160,\n\t\tcompression = true,\n\t} = options;\n\n\tfunction validateImageParams(query: Record<string, unknown>):\n\t\t| { error: string }\n\t\t| {\n\t\t\t\twidth: number | undefined;\n\t\t\t\theight: number | undefined;\n\t\t\t\tquality: number | undefined;\n\t\t } {\n\t\tconst width = parseNumericParam(query.w as string);\n\t\tconst height = parseNumericParam(query.h as string);\n\t\tconst quality = parseNumericParam(query.q as string);\n\n\t\tif (query.w && width === undefined) {\n\t\t\treturn { error: 'Invalid width parameter' };\n\t\t}\n\n\t\tif (query.h && height === undefined) {\n\t\t\treturn { error: 'Invalid height parameter' };\n\t\t}\n\n\t\tif (query.q) {\n\t\t\tconst q = Number.parseInt(query.q as string, 10);\n\t\t\tif (Number.isNaN(q) || q < 1 || q > 100) {\n\t\t\t\treturn { error: 'Invalid quality parameter (must be 1-100)' };\n\t\t\t}\n\t\t}\n\n\t\treturn { width, height, quality };\n\t}\n\n\tfunction resolveExternalImagePath(url: string): string | { error: string } {\n\t\tconst urlObj = new URL(url);\n\t\tconst isAllowed = allowedDomains.some(\n\t\t\t(domain) =>\n\t\t\t\turlObj.hostname === domain || urlObj.hostname.endsWith(`.${domain}`),\n\t\t);\n\n\t\tif (!isAllowed) {\n\t\t\treturn { error: 'Domain not allowed' };\n\t\t}\n\n\t\treturn url;\n\t}\n\n\tfunction resolveInternalImagePath(\n\t\turl: string,\n\t\tclientDir: string,\n\t): string | { error: string } {\n\t\tconst cleanUrl = url.startsWith('/') ? url.slice(1) : url;\n\t\tconst imagePath = join(clientDir, cleanUrl);\n\t\tconst normalizedPath = join(clientDir, cleanUrl);\n\n\t\tif (!normalizedPath.startsWith(clientDir)) {\n\t\t\treturn { error: 'Access denied' };\n\t\t}\n\n\t\tif (!existsSync(imagePath)) {\n\t\t\treturn { error: 'Image not found' };\n\t\t}\n\n\t\tif (!isImageFile(imagePath)) {\n\t\t\treturn { error: 'File is not a supported image format' };\n\t\t}\n\n\t\treturn imagePath;\n\t}\n\n\tfunction createImageResponse(\n\t\tbody: unknown,\n\t\tcontentType: string,\n\t\tresult: { width: number; height: number; format: string },\n\t\tmaxAge: number,\n\t) {\n\t\treturn new Response(body as BodyInit, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': contentType,\n\t\t\t\t'Cache-Control': `public, max-age=${maxAge}, immutable`,\n\t\t\t\t'X-Image-Width': result.width.toString(),\n\t\t\t\t'X-Image-Height': result.height.toString(),\n\t\t\t\t'X-Image-Format': result.format,\n\t\t\t\tVary: 'Accept',\n\t\t\t},\n\t\t});\n\t}\n\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Image processing involves validation, path resolution, and optimization\n\tasync function processImageRequest(\n\t\tquery: Record<string, unknown>,\n\t\theaders: Record<string, string>,\n\t\tclientDir: string,\n\t\tmaxWidth: number,\n\t\tmaxHeight: number,\n\t\tcompression: boolean,\n\t\tmaxAge: number,\n\t): Promise<{\n\t\tresponse: Response | null;\n\t\tstatus?: number;\n\t\terror?: { error: string };\n\t}> {\n\t\tconst url = query.url as string | undefined;\n\t\tif (!url) {\n\t\t\treturn {\n\t\t\t\tresponse: null,\n\t\t\t\tstatus: 400,\n\t\t\t\terror: { error: 'Missing required parameter: url' },\n\t\t\t};\n\t\t}\n\n\t\tconst validation = validateImageParams(query);\n\t\tif ('error' in validation) {\n\t\t\treturn { response: null, status: 400, error: validation };\n\t\t}\n\n\t\tconst { width, height, quality } = validation;\n\t\tconst formatParam = query.f as string | undefined;\n\t\tconst finalWidth = clamp(width, maxWidth);\n\t\tconst finalHeight = clamp(height, maxHeight);\n\n\t\t// Resolve image path\n\t\tconst imagePath =\n\t\t\turl.startsWith('http://') || url.startsWith('https://')\n\t\t\t\t? resolveExternalImagePath(url)\n\t\t\t\t: resolveInternalImagePath(url, clientDir);\n\n\t\tif (typeof imagePath === 'object' && 'error' in imagePath) {\n\t\t\t// Determine appropriate status code based on error type\n\t\t\tlet status = 403; // Default to forbidden\n\t\t\tif (imagePath.error === 'Image not found') {\n\t\t\t\tstatus = 404;\n\t\t\t} else if (imagePath.error === 'File is not a supported image format') {\n\t\t\t\tstatus = 400;\n\t\t\t}\n\t\t\treturn { response: null, status, error: imagePath };\n\t\t}\n\n\t\t// Optimize image\n\t\tconst acceptHeader = headers.accept;\n\t\tconst format = formatParam ?? 'auto';\n\n\t\tconst result = await optimizeImage(\n\t\t\timagePath,\n\t\t\t{\n\t\t\t\twidth: finalWidth,\n\t\t\t\theight: finalHeight,\n\t\t\t\tquality,\n\t\t\t\tformat: format as 'webp' | 'avif' | 'jpeg' | 'png' | 'auto',\n\t\t\t\tfit: 'cover',\n\t\t\t},\n\t\t\tacceptHeader,\n\t\t);\n\n\t\tconst { body, extraHeaders } = compression\n\t\t\t? gzipIfAccepted(\n\t\t\t\t\tnew Uint8Array(result.buffer),\n\t\t\t\t\tresult.contentType,\n\t\t\t\t\theaders['accept-encoding'],\n\t\t\t\t)\n\t\t\t: { body: result.buffer, extraHeaders: {} };\n\n\t\tconst response = createImageResponse(\n\t\t\tbody,\n\t\t\tresult.contentType,\n\t\t\tresult,\n\t\t\tmaxAge,\n\t\t);\n\n\t\t// Merge extra headers (like Content-Encoding)\n\t\tfor (const [key, value] of Object.entries(extraHeaders)) {\n\t\t\tresponse.headers.set(key, value);\n\t\t}\n\n\t\treturn { response };\n\t}\n\n\tapp.get('/__reroute_image', async ({ query, headers, set }) => {\n\t\ttry {\n\t\t\tconst result = await processImageRequest(\n\t\t\t\tquery,\n\t\t\t\theaders as Record<string, string>,\n\t\t\t\tclientDir,\n\t\t\t\tmaxWidth,\n\t\t\t\tmaxHeight,\n\t\t\t\tcompression,\n\t\t\t\tmaxAge,\n\t\t\t);\n\n\t\t\tif (result.status) {\n\t\t\t\tset.status = result.status;\n\t\t\t\tif (result.error) return result.error;\n\t\t\t}\n\n\t\t\tif (result.response) {\n\t\t\t\t// Copy headers from response to set\n\t\t\t\tconst responseHeaders = Object.fromEntries(\n\t\t\t\t\tresult.response.headers.entries(),\n\t\t\t\t);\n\t\t\t\tset.headers = responseHeaders;\n\t\t\t\treturn result.response;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Image optimization error:', error);\n\t\t\tset.status = 500;\n\t\t\treturn { error: 'Failed to optimize image' };\n\t\t}\n\t});\n}\n",
|
|
87
|
-
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport type { TTLCache } from 'reroute-js/core';\nimport { jsonError, jsonWithCache } from '../libs/http';\nimport { buildDevCacheControl } from '../libs/response';\nimport { refreshThemeCss } from './themeCssRefresh';\n\ntype InternalRouteOptions = {\n\tclientDir: string;\n\tcwd: string;\n\tdataCacheControl?: string;\n\tdataCache?: TTLCache<string, unknown>;\n\tisWatchMode: boolean;\n\tmaxAge?: number;\n};\n\nfunction parsePathname(p: string): string {\n\ttry {\n\t\tconst u = new URL(p, 'http://localhost');\n\t\treturn u.pathname + u.search;\n\t} catch {\n\t\treturn String(p);\n\t}\n}\n\nfunction extractSearchParams(pathname: string): URLSearchParams | undefined {\n\ttry {\n\t\treturn new URL(pathname, 'http://localhost').searchParams;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/**\n * Register internal Reroute routes (production-critical)\n * - /__reroute_preload: Content module preloading for SSR hydration\n * - /__reroute_data: Client-side navigation data fetching\n */\nexport function registerInternalRoutes(\n\tapp: Elysia,\n\topts: InternalRouteOptions,\n): Elysia {\n\tconst {\n\t\tclientDir,\n\t\tcwd,\n\t\tdataCacheControl,\n\t\tdataCache,\n\t\tisWatchMode,\n\t\tmaxAge = 0,\n\t} = opts;\n\n\t// Content module preload endpoint\n\tapp.get('/__reroute_preload', async ({ query }) => {\n\t\tconst rawSrc = String(query.src || '').trim();\n\t\tconst key = String(query.key || '').trim();\n\n\t\tlet src = rawSrc;\n\t\ttry {\n\t\t\tsrc = decodeURIComponent(rawSrc);\n\t\t} catch {\n\t\t\t// Use raw value if decode fails\n\t\t}\n\n\t\tconst safeChunk =\n\t\t\tsrc.startsWith('/.reroute/chunks/') && /^[A-Za-z0-9_./-]+\\.js$/.test(src);\n\t\tconst safeBundle =\n\t\t\tsrc.startsWith('/bundles/') && /^[A-Za-z0-9_./-]+\\.js$/.test(src);\n\t\tconst safeSource =\n\t\t\tsrc.startsWith('/routes/') &&\n\t\t\t/^[A-Za-z0-9_./\\-[\\]]+\\.(tsx?|js)$/.test(src);\n\t\tconst safe = (safeChunk || safeBundle || safeSource) && !src.includes('..');\n\n\t\tif (!(safe && key)) throw new NotFoundError();\n\n\t\tconst code =\n\t\t\t`// preload for ${key}\\n` +\n\t\t\t`import * as __m from '${src}';\\n` +\n\t\t\t`(globalThis.__REROUTE_MODULES__ ||= {});\\n` +\n\t\t\t`globalThis.__REROUTE_MODULES__['${key}'] = __m;\\n` +\n\t\t\t`// Also populate __REROUTE_SSR_MODULES__ for hydration\\n` +\n\t\t\t`(globalThis.__REROUTE_SSR_MODULES__ ||= {});\\n` +\n\t\t\t`globalThis.__REROUTE_SSR_MODULES__['${key}'] = __m;\\n` +\n\t\t\t`export {};`;\n\n\t\tconst cacheControl = isWatchMode\n\t\t\t? buildDevCacheControl()\n\t\t\t: 'public, max-age=31536000, immutable';\n\n\t\treturn new Response(code, {\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/javascript; charset=utf-8',\n\t\t\t\t'cache-control': cacheControl,\n\t\t\t},\n\t\t});\n\t});\n\n\t// Data endpoint for client navigation\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Request handling involves caching, route matching, and data computation\n\tasync function handleKeyRequest(\n\t\tpathname: string,\n\t\tdataKey: string,\n\t\theaders: Record<string, string>,\n\t) {\n\t\tconst { computeSSRData } = await import('reroute-js/core');\n\t\tconst cacheKey = `${pathname}:promises`;\n\n\t\tlet promiseData = isWatchMode\n\t\t\t? undefined\n\t\t\t: (dataCache?.get(cacheKey) as Record<string, unknown> | undefined);\n\n\t\tconst promiseDataCached = promiseData !== undefined;\n\n\t\tif (!promiseData) {\n\t\t\tconst sp = extractSearchParams(pathname);\n\t\t\tconst { data } = 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: true, maxAge },\n\t\t\t\tsp,\n\t\t\t);\n\t\t\tpromiseData = data as Record<string, unknown>;\n\t\t\tif (!isWatchMode) {\n\t\t\t\tdataCache?.set(cacheKey, promiseData);\n\t\t\t}\n\t\t}\n\n\t\tif (promiseData && typeof promiseData === 'object') {\n\t\t\tconst value = promiseData[dataKey];\n\t\t\tif (value instanceof Promise) {\n\t\t\t\tconst resolved = await value;\n\t\t\t\tconst resolvedCacheKey = `${pathname}:${dataKey}:resolved`;\n\t\t\t\tif (!isWatchMode) {\n\t\t\t\t\tdataCache?.set(resolvedCacheKey, resolved);\n\t\t\t\t}\n\t\t\t\treturn jsonWithCache(\n\t\t\t\t\t{ data: resolved },\n\t\t\t\t\tdataCacheControl || 'no-cache',\n\t\t\t\t\theaders,\n\t\t\t\t\tpromiseDataCached ? 'HIT' : 'MISS',\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn jsonWithCache(\n\t\t\t\t\t{ data: value },\n\t\t\t\t\tdataCacheControl || 'no-cache',\n\t\t\t\t\theaders,\n\t\t\t\t\tpromiseDataCached ? 'HIT' : 'MISS',\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn jsonError('key not found', 404);\n\t}\n\n\tasync function handleFullDataRequest(\n\t\tpathname: string,\n\t): Promise<{ data: unknown; cacheHit: boolean }> {\n\t\tconst { computeSSRData } = await import('reroute-js/core');\n\n\t\t// Use streaming computation to get lazy markers for routes with ssr.data()\n\t\tconst cacheKey = `${pathname}:streaming`;\n\t\tlet data = isWatchMode ? undefined : dataCache?.get(cacheKey);\n\t\tconst cacheHit = data !== undefined;\n\n\t\tif (data === undefined) {\n\t\t\tconst sp = extractSearchParams(pathname);\n\n\t\t\ttry {\n\t\t\t\t// Use streaming mode to get Promises, not resolved data\n\t\t\t\tconst result = await computeSSRData(\n\t\t\t\t\tpathname,\n\t\t\t\t\tclientDir,\n\t\t\t\t\tcwd,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\t{ streaming: true, maxAge },\n\t\t\t\t\tsp,\n\t\t\t\t);\n\n\t\t\t\t// Convert any Promises to lazy markers for JSON serialization\n\t\t\t\tdata = convertPromisesToLazyMarkers(result.data, pathname);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[__reroute_data] Error computing data:', error);\n\t\t\t\tdata = null;\n\t\t\t}\n\n\t\t\tif (!isWatchMode) {\n\t\t\t\tdataCache?.set(cacheKey, data);\n\t\t\t}\n\t\t}\n\n\t\treturn { data, cacheHit };\n\t}\n\n\t// Convert Promises to lazy markers so they can be JSON serialized\n\tfunction convertPromisesToLazyMarkers(\n\t\tdata: unknown,\n\t\tpathname: string,\n\t): unknown {\n\t\t// console.log('[convertPromisesToLazyMarkers]', {\n\t\t// \tpathname,\n\t\t// \tdataType: typeof data,\n\t\t// \tisPromise: data instanceof Promise,\n\t\t// \tisObject: typeof data === 'object' && data !== null,\n\t\t// \tkeys: typeof data === 'object' && data !== null ? Object.keys(data) : [],\n\t\t// });\n\n\t\tif (data instanceof Promise) {\n\t\t\t// Single promise - return lazy marker\n\t\t\t// console.log('[convertPromisesToLazyMarkers] Single promise -> lazy marker');\n\t\t\treturn {\n\t\t\t\t__lazy__: true,\n\t\t\t\t__fetch__: `/__reroute_data?path=${encodeURIComponent(pathname)}`,\n\t\t\t};\n\t\t}\n\n\t\tif (typeof data === 'object' && data !== null && !Array.isArray(data)) {\n\t\t\tconst result: Record<string, unknown> = {};\n\t\t\tlet hasPromises = false;\n\n\t\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\t\t// console.log(`[convertPromisesToLazyMarkers] key=${key}, isPromise=${value instanceof Promise}`);\n\t\t\t\tif (value instanceof Promise) {\n\t\t\t\t\thasPromises = true;\n\t\t\t\t\tresult[key] = {\n\t\t\t\t\t\t__lazy__: true,\n\t\t\t\t\t\t__fetch__: `/__reroute_data?path=${encodeURIComponent(pathname)}&key=${encodeURIComponent(key)}`,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tresult[key] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Mark as flattened if we have lazy markers\n\t\t\tif (hasPromises) {\n\t\t\t\tresult.__flatten__ = true;\n\t\t\t}\n\n\t\t\t// console.log('[convertPromisesToLazyMarkers] Result:', {\n\t\t\t// \thasPromises,\n\t\t\t// \thasFlatten: result.__flatten__,\n\t\t\t// \tkeys: Object.keys(result),\n\t\t\t// });\n\n\t\t\treturn result;\n\t\t}\n\n\t\t// console.log('[convertPromisesToLazyMarkers] Returning data as-is');\n\t\treturn data;\n\t}\n\n\tapp.get('/__reroute_data', async ({ query, headers }) => {\n\t\tconst p = String(query.path || query.p || '/');\n\t\tconst dataKey = String(query.key || '');\n\t\tconst pathname = parsePathname(p);\n\n\t\ttry {\n\t\t\t// Handle specific key request (progressive loading)\n\t\t\tif (dataKey) {\n\t\t\t\treturn await handleKeyRequest(\n\t\t\t\t\tpathname,\n\t\t\t\t\tdataKey,\n\t\t\t\t\theaders as Record<string, string>,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Full data request\n\t\t\tconst { data, cacheHit } = await handleFullDataRequest(pathname);\n\n\t\t\treturn jsonWithCache(\n\t\t\t\t{ data },\n\t\t\t\tdataCacheControl || 'no-cache',\n\t\t\t\theaders as Record<string, string>,\n\t\t\t\tcacheHit ? 'HIT' : 'MISS',\n\t\t\t);\n\t\t} catch {\n\t\t\treturn jsonError('failed', 500);\n\t\t}\n\t});\n\n\treturn app;\n}\n\n/**\n * Live reload state for SSE connections\n */\ntype LiveReloadState = {\n\tclients: Set<ReadableStreamDefaultController>;\n\t/** Queued reload mode when no browser was connected at notify time */\n\tpendingReload: false | 'css' | 'full';\n};\n\nconst LIVE_RELOAD_CLIENT_CODE = `// Reroute live reload client\nlet eventSource = null;\nlet hasConnected = false;\nlet wasDisconnected = false;\nlet reloadTriggered = false;\nlet rebuildNotice = null;\nlet reconnectAttempts = 0;\nlet isReconnecting = false;\n\nconst SCROLL_KEY = '__reroute_scroll';\n\nfunction saveScrollPosition() {\n try {\n sessionStorage.setItem(SCROLL_KEY, JSON.stringify({\n x: window.scrollX,\n y: window.scrollY,\n path: location.pathname + location.search,\n }));\n } catch {\n // sessionStorage unavailable\n }\n}\n\nfunction restoreScrollPosition() {\n try {\n const raw = sessionStorage.getItem(SCROLL_KEY);\n if (!raw) return;\n sessionStorage.removeItem(SCROLL_KEY);\n const { x, y, path } = JSON.parse(raw);\n if (path !== location.pathname + location.search) return;\n if (typeof x !== 'number' || typeof y !== 'number') return;\n\n const apply = () => window.scrollTo(x, y);\n // Apply now, after paint, and after full load (images/fonts can shift layout).\n apply();\n requestAnimationFrame(apply);\n if (document.readyState === 'complete') {\n setTimeout(apply, 0);\n } else {\n window.addEventListener('load', () => setTimeout(apply, 0), { once: true });\n }\n } catch {\n // ignore corrupt scroll state\n }\n}\n\nfunction triggerFullReload(reason) {\n if (reloadTriggered) return;\n console.log('[reroute] ✓ ' + reason);\n reloadTriggered = true;\n hideRebuildNotice();\n eventSource?.close();\n saveScrollPosition();\n window.location.reload();\n}\n\nFUNCTION_REFRESH_THEME_CSS\n\nfunction showRebuildNotice() {\n if (rebuildNotice) return;\n \n rebuildNotice = document.createElement('div');\n rebuildNotice.id = '__reroute_rebuild_notice';\n rebuildNotice.innerHTML = \\`\n <style>\n @keyframes __reroute_slide_in {\n from { transform: translateY(10px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n }\n @keyframes __reroute_spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n #__reroute_rebuild_notice {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: rgba(17, 17, 17, 0.95);\n backdrop-filter: saturate(180%) blur(20px);\n color: #fafafa;\n padding: 12px 16px;\n border-radius: 12px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n font-size: 13px;\n font-weight: 500;\n box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.08), 0 8px 32px rgba(0, 0, 0, 0.4);\n z-index: 999999;\n display: flex;\n align-items: center;\n gap: 12px;\n animation: __reroute_slide_in 0.2s cubic-bezier(0.16, 1, 0.3, 1);\n border: 1px solid rgba(255, 255, 255, 0.1);\n }\n #__reroute_rebuild_notice::before {\n content: '';\n width: 14px;\n height: 14px;\n border: 2px solid rgba(168, 85, 247, 0.3);\n border-top-color: #a855f7;\n border-radius: 50%;\n animation: __reroute_spin 0.8s linear infinite;\n }\n @media (prefers-color-scheme: light) {\n #__reroute_rebuild_notice {\n background: rgba(255, 255, 255, 0.95);\n color: #171717;\n border: 1px solid rgba(0, 0, 0, 0.08);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.04), 0 8px 32px rgba(0, 0, 0, 0.12);\n }\n #__reroute_rebuild_notice::before {\n border: 2px solid rgba(168, 85, 247, 0.2);\n border-top-color: #a855f7;\n }\n }\n </style>\n <span>Rebuilding...</span>\n \\`;\n document.body.appendChild(rebuildNotice);\n console.log('[reroute] 🔨 Rebuilding...');\n}\n\nfunction hideRebuildNotice() {\n if (rebuildNotice) {\n rebuildNotice.style.animation = 'none';\n rebuildNotice.style.opacity = '0';\n rebuildNotice.style.transform = 'translateY(10px)';\n rebuildNotice.style.transition = 'all 0.2s ease-out';\n setTimeout(() => {\n rebuildNotice?.remove();\n rebuildNotice = null;\n }, 200);\n }\n}\n\n// Check if server is ready before attempting SSE connection\nasync function waitForServer() {\n const maxAttempts = 60; // 30 seconds max\n for (let i = 0; i < maxAttempts; i++) {\n try {\n const res = await fetch('/__reroute_watch.js', { method: 'HEAD' });\n if (res.ok) return true;\n } catch {\n // Server not ready, continue waiting\n }\n await new Promise(r => setTimeout(r, 500));\n }\n return false;\n}\n\nasync function scheduleReconnect() {\n if (reloadTriggered || isReconnecting) return;\n isReconnecting = true;\n \n // Exponential backoff: 300ms, 600ms, 1200ms, max 2000ms\n const delay = Math.min(300 * Math.pow(2, reconnectAttempts), 2000);\n reconnectAttempts++;\n \n await new Promise(r => setTimeout(r, delay));\n \n // Wait for server to be ready before creating EventSource\n const ready = await waitForServer();\n isReconnecting = false;\n \n if (ready && !reloadTriggered) {\n connect();\n } else if (!reloadTriggered) {\n // Server still not ready, try again\n scheduleReconnect();\n }\n}\n\nfunction connect() {\n if (reloadTriggered) return;\n \n eventSource = new EventSource('/__reroute_watch');\n \n eventSource.addEventListener('message', (e) => {\n if (e.data === 'connected') {\n reconnectAttempts = 0; // Reset backoff on successful connection\n if (hasConnected && wasDisconnected && !reloadTriggered) {\n triggerFullReload('Server restarted, reloading...');\n return;\n }\n hasConnected = true;\n wasDisconnected = false;\n console.log('[reroute] ✓ Live reload connected');\n } else if (e.data === 'rebuilding') {\n console.log('[reroute] 🔨 Rebuilding...');\n showRebuildNotice();\n } else if (e.data === 'reload:css') {\n hideRebuildNotice();\n refreshThemeCss();\n console.log('[reroute] ✓ Theme CSS refreshed');\n } else if (e.data === 'reload' || e.data === 'reload:full') {\n triggerFullReload('Build complete, reloading...');\n }\n });\n\n eventSource.addEventListener('error', () => {\n if (reloadTriggered) return;\n wasDisconnected = true;\n eventSource?.close();\n if (hasConnected && reconnectAttempts === 0) {\n // Only log on first disconnect to reduce console spam\n console.log('[reroute] 🔄 Server restarting...');\n showRebuildNotice();\n }\n scheduleReconnect();\n });\n}\n\nrestoreScrollPosition();\nconnect();\n`.replace('FUNCTION_REFRESH_THEME_CSS', refreshThemeCss.toString());\n\n/**\n * Register live reload routes (dev-only)\n */\nexport function registerLiveReloadRoutes(\n\tapp: Elysia,\n\tstate: LiveReloadState,\n): Elysia {\n\tconsole.log('[reroute] Registering SSE endpoint at /__reroute_watch');\n\n\tapp.get('/__reroute_watch', () => {\n\t\tconst encoder = new TextEncoder();\n\t\tlet interval: NodeJS.Timeout;\n\t\tlet currentController: ReadableStreamDefaultController | null = null;\n\n\t\tconst stream = new ReadableStream({\n\t\t\tstart(controller) {\n\t\t\t\tcurrentController = controller;\n\t\t\t\tstate.clients.add(controller);\n\t\t\t\tconsole.log('[reroute] Browser connected for live reload');\n\n\t\t\t\tcontroller.enqueue(encoder.encode('retry: 1000\\n'));\n\t\t\t\tcontroller.enqueue(encoder.encode('data: connected\\n\\n'));\n\n\t\t\t\tif (state.pendingReload) {\n\t\t\t\t\tconst mode = state.pendingReload;\n\t\t\t\t\tstate.pendingReload = false;\n\t\t\t\t\tconst data = mode === 'css' ? 'reload:css' : 'reload';\n\t\t\t\t\tcontroller.enqueue(encoder.encode(`data: ${data}\\n\\n`));\n\t\t\t\t}\n\n\t\t\t\t// Heartbeat every 25s\n\t\t\t\tinterval = setInterval(() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcontroller.enqueue(encoder.encode(': ping\\n\\n'));\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Connection closed\n\t\t\t\t\t}\n\t\t\t\t}, 25000);\n\t\t\t},\n\t\t\tcancel() {\n\t\t\t\tif (interval) clearInterval(interval);\n\t\t\t\tif (currentController) {\n\t\t\t\t\tstate.clients.delete(currentController);\n\t\t\t\t}\n\t\t\t\tconsole.log('[reroute] Browser disconnected from live reload');\n\t\t\t},\n\t\t});\n\n\t\treturn new Response(stream, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/event-stream',\n\t\t\t\t'Cache-Control': 'no-cache',\n\t\t\t\tConnection: 'keep-alive',\n\t\t\t},\n\t\t});\n\t});\n\n\tapp.get('/__reroute_watch.js', () => {\n\t\treturn new Response(LIVE_RELOAD_CLIENT_CODE, {\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/javascript; charset=utf-8',\n\t\t\t\t'cache-control': 'no-cache',\n\t\t\t},\n\t\t});\n\t});\n\n\treturn app;\n}\n",
|
|
87
|
+
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport type { TTLCache } from 'reroute-js/core';\nimport { jsonError, jsonWithCache } from '../libs/http';\nimport { buildDevCacheControl } from '../libs/response';\nimport {\n\tparseConnectedBootId,\n\tshouldReloadOnReconnect,\n} from './liveReloadClient';\nimport { refreshThemeCss } from './themeCssRefresh';\n\ntype InternalRouteOptions = {\n\tclientDir: string;\n\tcwd: string;\n\tdataCacheControl?: string;\n\tdataCache?: TTLCache<string, unknown>;\n\tisWatchMode: boolean;\n\tmaxAge?: number;\n};\n\nfunction parsePathname(p: string): string {\n\ttry {\n\t\tconst u = new URL(p, 'http://localhost');\n\t\treturn u.pathname + u.search;\n\t} catch {\n\t\treturn String(p);\n\t}\n}\n\nfunction extractSearchParams(pathname: string): URLSearchParams | undefined {\n\ttry {\n\t\treturn new URL(pathname, 'http://localhost').searchParams;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/**\n * Register internal Reroute routes (production-critical)\n * - /__reroute_preload: Content module preloading for SSR hydration\n * - /__reroute_data: Client-side navigation data fetching\n */\nexport function registerInternalRoutes(\n\tapp: Elysia,\n\topts: InternalRouteOptions,\n): Elysia {\n\tconst {\n\t\tclientDir,\n\t\tcwd,\n\t\tdataCacheControl,\n\t\tdataCache,\n\t\tisWatchMode,\n\t\tmaxAge = 0,\n\t} = opts;\n\n\t// Content module preload endpoint\n\tapp.get('/__reroute_preload', async ({ query }) => {\n\t\tconst rawSrc = String(query.src || '').trim();\n\t\tconst key = String(query.key || '').trim();\n\n\t\tlet src = rawSrc;\n\t\ttry {\n\t\t\tsrc = decodeURIComponent(rawSrc);\n\t\t} catch {\n\t\t\t// Use raw value if decode fails\n\t\t}\n\n\t\tconst safeChunk =\n\t\t\tsrc.startsWith('/.reroute/chunks/') && /^[A-Za-z0-9_./-]+\\.js$/.test(src);\n\t\tconst safeBundle =\n\t\t\tsrc.startsWith('/bundles/') && /^[A-Za-z0-9_./-]+\\.js$/.test(src);\n\t\tconst safeSource =\n\t\t\tsrc.startsWith('/routes/') &&\n\t\t\t/^[A-Za-z0-9_./\\-[\\]]+\\.(tsx?|js)$/.test(src);\n\t\tconst safe = (safeChunk || safeBundle || safeSource) && !src.includes('..');\n\n\t\tif (!(safe && key)) throw new NotFoundError();\n\n\t\tconst code =\n\t\t\t`// preload for ${key}\\n` +\n\t\t\t`import * as __m from '${src}';\\n` +\n\t\t\t`(globalThis.__REROUTE_MODULES__ ||= {});\\n` +\n\t\t\t`globalThis.__REROUTE_MODULES__['${key}'] = __m;\\n` +\n\t\t\t`// Also populate __REROUTE_SSR_MODULES__ for hydration\\n` +\n\t\t\t`(globalThis.__REROUTE_SSR_MODULES__ ||= {});\\n` +\n\t\t\t`globalThis.__REROUTE_SSR_MODULES__['${key}'] = __m;\\n` +\n\t\t\t`export {};`;\n\n\t\tconst cacheControl = isWatchMode\n\t\t\t? buildDevCacheControl()\n\t\t\t: 'public, max-age=31536000, immutable';\n\n\t\treturn new Response(code, {\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/javascript; charset=utf-8',\n\t\t\t\t'cache-control': cacheControl,\n\t\t\t},\n\t\t});\n\t});\n\n\t// Data endpoint for client navigation\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Request handling involves caching, route matching, and data computation\n\tasync function handleKeyRequest(\n\t\tpathname: string,\n\t\tdataKey: string,\n\t\theaders: Record<string, string>,\n\t) {\n\t\tconst { computeSSRData } = await import('reroute-js/core');\n\t\tconst cacheKey = `${pathname}:promises`;\n\n\t\tlet promiseData =\n\t\t\tisWatchMode || maxAge <= 0\n\t\t\t\t? undefined\n\t\t\t\t: (dataCache?.get(cacheKey) as Record<string, unknown> | undefined);\n\n\t\tconst promiseDataCached = promiseData !== undefined;\n\n\t\tif (!promiseData) {\n\t\t\tconst sp = extractSearchParams(pathname);\n\t\t\tconst { data } = 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: true, maxAge },\n\t\t\t\tsp,\n\t\t\t);\n\t\t\tpromiseData = data as Record<string, unknown>;\n\t\t\tif (!isWatchMode && maxAge > 0) {\n\t\t\t\tdataCache?.set(cacheKey, promiseData);\n\t\t\t}\n\t\t}\n\n\t\tif (promiseData && typeof promiseData === 'object') {\n\t\t\tconst value = promiseData[dataKey];\n\t\t\tif (value instanceof Promise) {\n\t\t\t\tconst resolved = await value;\n\t\t\t\tconst resolvedCacheKey = `${pathname}:${dataKey}:resolved`;\n\t\t\t\tif (!isWatchMode && maxAge > 0) {\n\t\t\t\t\tdataCache?.set(resolvedCacheKey, resolved);\n\t\t\t\t}\n\t\t\t\treturn jsonWithCache(\n\t\t\t\t\t{ data: resolved },\n\t\t\t\t\tdataCacheControl || 'no-cache',\n\t\t\t\t\theaders,\n\t\t\t\t\tpromiseDataCached ? 'HIT' : 'MISS',\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn jsonWithCache(\n\t\t\t\t\t{ data: value },\n\t\t\t\t\tdataCacheControl || 'no-cache',\n\t\t\t\t\theaders,\n\t\t\t\t\tpromiseDataCached ? 'HIT' : 'MISS',\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn jsonError('key not found', 404);\n\t}\n\n\tasync function handleFullDataRequest(\n\t\tpathname: string,\n\t): Promise<{ data: unknown; cacheHit: boolean }> {\n\t\tconst { computeSSRData } = await import('reroute-js/core');\n\n\t\t// Use streaming computation to get lazy markers for routes with ssr.data()\n\t\tconst cacheKey = `${pathname}:streaming`;\n\t\tlet data =\n\t\t\tisWatchMode || maxAge <= 0 ? undefined : dataCache?.get(cacheKey);\n\t\tconst cacheHit = data !== undefined;\n\n\t\tif (data === undefined) {\n\t\t\tconst sp = extractSearchParams(pathname);\n\n\t\t\ttry {\n\t\t\t\t// Use streaming mode to get Promises, not resolved data\n\t\t\t\tconst result = await computeSSRData(\n\t\t\t\t\tpathname,\n\t\t\t\t\tclientDir,\n\t\t\t\t\tcwd,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\t{ streaming: true, maxAge },\n\t\t\t\t\tsp,\n\t\t\t\t);\n\n\t\t\t\t// Convert any Promises to lazy markers for JSON serialization\n\t\t\t\tdata = convertPromisesToLazyMarkers(result.data, pathname);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[__reroute_data] Error computing data:', error);\n\t\t\t\tdata = null;\n\t\t\t}\n\n\t\t\tif (!isWatchMode && maxAge > 0) {\n\t\t\t\tdataCache?.set(cacheKey, data);\n\t\t\t}\n\t\t}\n\n\t\treturn { data, cacheHit };\n\t}\n\n\t// Convert Promises to lazy markers so they can be JSON serialized\n\tfunction convertPromisesToLazyMarkers(\n\t\tdata: unknown,\n\t\tpathname: string,\n\t): unknown {\n\t\t// console.log('[convertPromisesToLazyMarkers]', {\n\t\t// \tpathname,\n\t\t// \tdataType: typeof data,\n\t\t// \tisPromise: data instanceof Promise,\n\t\t// \tisObject: typeof data === 'object' && data !== null,\n\t\t// \tkeys: typeof data === 'object' && data !== null ? Object.keys(data) : [],\n\t\t// });\n\n\t\tif (data instanceof Promise) {\n\t\t\t// Single promise - return lazy marker\n\t\t\t// console.log('[convertPromisesToLazyMarkers] Single promise -> lazy marker');\n\t\t\treturn {\n\t\t\t\t__lazy__: true,\n\t\t\t\t__fetch__: `/__reroute_data?path=${encodeURIComponent(pathname)}`,\n\t\t\t};\n\t\t}\n\n\t\tif (typeof data === 'object' && data !== null && !Array.isArray(data)) {\n\t\t\tconst result: Record<string, unknown> = {};\n\t\t\tlet hasPromises = false;\n\n\t\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\t\t// console.log(`[convertPromisesToLazyMarkers] key=${key}, isPromise=${value instanceof Promise}`);\n\t\t\t\tif (value instanceof Promise) {\n\t\t\t\t\thasPromises = true;\n\t\t\t\t\tresult[key] = {\n\t\t\t\t\t\t__lazy__: true,\n\t\t\t\t\t\t__fetch__: `/__reroute_data?path=${encodeURIComponent(pathname)}&key=${encodeURIComponent(key)}`,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tresult[key] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Mark as flattened if we have lazy markers\n\t\t\tif (hasPromises) {\n\t\t\t\tresult.__flatten__ = true;\n\t\t\t}\n\n\t\t\t// console.log('[convertPromisesToLazyMarkers] Result:', {\n\t\t\t// \thasPromises,\n\t\t\t// \thasFlatten: result.__flatten__,\n\t\t\t// \tkeys: Object.keys(result),\n\t\t\t// });\n\n\t\t\treturn result;\n\t\t}\n\n\t\t// console.log('[convertPromisesToLazyMarkers] Returning data as-is');\n\t\treturn data;\n\t}\n\n\tapp.get('/__reroute_data', async ({ query, headers }) => {\n\t\tconst p = String(query.path || query.p || '/');\n\t\tconst dataKey = String(query.key || '');\n\t\tconst pathname = parsePathname(p);\n\n\t\ttry {\n\t\t\t// Handle specific key request (progressive loading)\n\t\t\tif (dataKey) {\n\t\t\t\treturn await handleKeyRequest(\n\t\t\t\t\tpathname,\n\t\t\t\t\tdataKey,\n\t\t\t\t\theaders as Record<string, string>,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Full data request\n\t\t\tconst { data, cacheHit } = await handleFullDataRequest(pathname);\n\n\t\t\treturn jsonWithCache(\n\t\t\t\t{ data },\n\t\t\t\tdataCacheControl || 'no-cache',\n\t\t\t\theaders as Record<string, string>,\n\t\t\t\tcacheHit ? 'HIT' : 'MISS',\n\t\t\t);\n\t\t} catch {\n\t\t\treturn jsonError('failed', 500);\n\t\t}\n\t});\n\n\treturn app;\n}\n\n/**\n * Live reload state for SSE connections\n */\ntype LiveReloadState = {\n\tclients: Set<ReadableStreamDefaultController>;\n\t/** Queued reload mode when no browser was connected at notify time */\n\tpendingReload: false | 'css' | 'full';\n};\n\nconst LIVE_RELOAD_CLIENT_CODE = `// Reroute live reload client\nlet eventSource = null;\nlet hasConnected = false;\nlet wasDisconnected = false;\nlet lastBootId = null;\nlet reloadTriggered = false;\nlet rebuildNotice = null;\nlet reconnectAttempts = 0;\nlet isReconnecting = false;\n\nconst SCROLL_KEY = '__reroute_scroll';\n\nfunction saveScrollPosition() {\n try {\n sessionStorage.setItem(SCROLL_KEY, JSON.stringify({\n x: window.scrollX,\n y: window.scrollY,\n path: location.pathname + location.search,\n }));\n } catch {\n // sessionStorage unavailable\n }\n}\n\nfunction restoreScrollPosition() {\n try {\n const raw = sessionStorage.getItem(SCROLL_KEY);\n if (!raw) return;\n sessionStorage.removeItem(SCROLL_KEY);\n const { x, y, path } = JSON.parse(raw);\n if (path !== location.pathname + location.search) return;\n if (typeof x !== 'number' || typeof y !== 'number') return;\n\n const apply = () => window.scrollTo(x, y);\n // Apply now, after paint, and after full load (images/fonts can shift layout).\n apply();\n requestAnimationFrame(apply);\n if (document.readyState === 'complete') {\n setTimeout(apply, 0);\n } else {\n window.addEventListener('load', () => setTimeout(apply, 0), { once: true });\n }\n } catch {\n // ignore corrupt scroll state\n }\n}\n\nfunction triggerFullReload(reason) {\n if (reloadTriggered) return;\n console.log('[reroute] ✓ ' + reason);\n reloadTriggered = true;\n hideRebuildNotice();\n eventSource?.close();\n saveScrollPosition();\n window.location.reload();\n}\n\nFUNCTION_PARSE_CONNECTED_BOOT_ID\nFUNCTION_SHOULD_RELOAD_ON_RECONNECT\nFUNCTION_REFRESH_THEME_CSS\n\nfunction showRebuildNotice() {\n if (rebuildNotice) return;\n \n rebuildNotice = document.createElement('div');\n rebuildNotice.id = '__reroute_rebuild_notice';\n rebuildNotice.innerHTML = \\`\n <style>\n @keyframes __reroute_slide_in {\n from { transform: translateY(10px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n }\n @keyframes __reroute_spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n #__reroute_rebuild_notice {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: rgba(17, 17, 17, 0.95);\n backdrop-filter: saturate(180%) blur(20px);\n color: #fafafa;\n padding: 12px 16px;\n border-radius: 12px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n font-size: 13px;\n font-weight: 500;\n box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.08), 0 8px 32px rgba(0, 0, 0, 0.4);\n z-index: 999999;\n display: flex;\n align-items: center;\n gap: 12px;\n animation: __reroute_slide_in 0.2s cubic-bezier(0.16, 1, 0.3, 1);\n border: 1px solid rgba(255, 255, 255, 0.1);\n }\n #__reroute_rebuild_notice::before {\n content: '';\n width: 14px;\n height: 14px;\n border: 2px solid rgba(168, 85, 247, 0.3);\n border-top-color: #a855f7;\n border-radius: 50%;\n animation: __reroute_spin 0.8s linear infinite;\n }\n @media (prefers-color-scheme: light) {\n #__reroute_rebuild_notice {\n background: rgba(255, 255, 255, 0.95);\n color: #171717;\n border: 1px solid rgba(0, 0, 0, 0.08);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.04), 0 8px 32px rgba(0, 0, 0, 0.12);\n }\n #__reroute_rebuild_notice::before {\n border: 2px solid rgba(168, 85, 247, 0.2);\n border-top-color: #a855f7;\n }\n }\n </style>\n <span>Rebuilding...</span>\n \\`;\n document.body.appendChild(rebuildNotice);\n console.log('[reroute] 🔨 Rebuilding...');\n}\n\nfunction hideRebuildNotice() {\n if (rebuildNotice) {\n rebuildNotice.style.animation = 'none';\n rebuildNotice.style.opacity = '0';\n rebuildNotice.style.transform = 'translateY(10px)';\n rebuildNotice.style.transition = 'all 0.2s ease-out';\n setTimeout(() => {\n rebuildNotice?.remove();\n rebuildNotice = null;\n }, 200);\n }\n}\n\n// Check if server is ready before attempting SSE connection\nasync function waitForServer() {\n const maxAttempts = 60; // 30 seconds max\n for (let i = 0; i < maxAttempts; i++) {\n try {\n const res = await fetch('/__reroute_watch.js', { method: 'HEAD' });\n if (res.ok) return true;\n } catch {\n // Server not ready, continue waiting\n }\n await new Promise(r => setTimeout(r, 500));\n }\n return false;\n}\n\nasync function scheduleReconnect() {\n if (reloadTriggered || isReconnecting) return;\n isReconnecting = true;\n \n // Exponential backoff: 300ms, 600ms, 1200ms, max 2000ms\n const delay = Math.min(300 * Math.pow(2, reconnectAttempts), 2000);\n reconnectAttempts++;\n \n await new Promise(r => setTimeout(r, delay));\n \n // Wait for server to be ready before creating EventSource\n const ready = await waitForServer();\n isReconnecting = false;\n \n if (ready && !reloadTriggered) {\n connect();\n } else if (!reloadTriggered) {\n // Server still not ready, try again\n scheduleReconnect();\n }\n}\n\nfunction connect() {\n if (reloadTriggered) return;\n \n eventSource = new EventSource('/__reroute_watch');\n \n eventSource.addEventListener('message', (e) => {\n const bootId = parseConnectedBootId(e.data);\n if (bootId !== null) {\n reconnectAttempts = 0;\n if (bootId) lastBootId = lastBootId ?? bootId;\n if (hasConnected && wasDisconnected && !reloadTriggered) {\n if (shouldReloadOnReconnect(lastBootId, bootId)) {\n triggerFullReload('Server restarted, reloading...');\n return;\n }\n lastBootId = bootId || lastBootId;\n wasDisconnected = false;\n hideRebuildNotice();\n console.log('[reroute] ✓ Live reload reconnected');\n return;\n }\n if (bootId) lastBootId = bootId;\n hasConnected = true;\n wasDisconnected = false;\n console.log('[reroute] ✓ Live reload connected');\n } else if (e.data === 'rebuilding') {\n console.log('[reroute] 🔨 Rebuilding...');\n showRebuildNotice();\n } else if (e.data === 'reload:css') {\n hideRebuildNotice();\n refreshThemeCss();\n console.log('[reroute] ✓ Theme CSS refreshed');\n } else if (e.data === 'reload' || e.data === 'reload:full') {\n triggerFullReload('Build complete, reloading...');\n }\n });\n\n eventSource.addEventListener('error', () => {\n if (reloadTriggered) return;\n wasDisconnected = true;\n eventSource?.close();\n if (hasConnected && reconnectAttempts === 0) {\n console.log('[reroute] 🔄 Live reload disconnected, reconnecting...');\n }\n scheduleReconnect();\n });\n}\n\nrestoreScrollPosition();\nconnect();\n`\n\t.replace('FUNCTION_PARSE_CONNECTED_BOOT_ID', parseConnectedBootId.toString())\n\t.replace(\n\t\t'FUNCTION_SHOULD_RELOAD_ON_RECONNECT',\n\t\tshouldReloadOnReconnect.toString(),\n\t)\n\t.replace('FUNCTION_REFRESH_THEME_CSS', refreshThemeCss.toString());\n\n/**\n * Register live reload routes (dev-only)\n */\nexport function registerLiveReloadRoutes(\n\tapp: Elysia,\n\tstate: LiveReloadState,\n): Elysia {\n\tconst bootId = crypto.randomUUID();\n\tconsole.log('[reroute] Registering SSE endpoint at /__reroute_watch');\n\n\tapp.get('/__reroute_watch', () => {\n\t\tconst encoder = new TextEncoder();\n\t\tlet interval: NodeJS.Timeout;\n\t\tlet currentController: ReadableStreamDefaultController | null = null;\n\n\t\tconst stream = new ReadableStream({\n\t\t\tstart(controller) {\n\t\t\t\tcurrentController = controller;\n\t\t\t\tstate.clients.add(controller);\n\t\t\t\tconsole.log('[reroute] Browser connected for live reload');\n\n\t\t\t\t// Disable EventSource auto-retry — the client reconnects itself.\n\t\t\t\tcontroller.enqueue(encoder.encode('retry: 2147483647\\n'));\n\t\t\t\tcontroller.enqueue(encoder.encode(`data: connected:${bootId}\\n\\n`));\n\n\t\t\t\tif (state.pendingReload) {\n\t\t\t\t\tconst mode = state.pendingReload;\n\t\t\t\t\tstate.pendingReload = false;\n\t\t\t\t\tconst data = mode === 'css' ? 'reload:css' : 'reload';\n\t\t\t\t\tcontroller.enqueue(encoder.encode(`data: ${data}\\n\\n`));\n\t\t\t\t}\n\n\t\t\t\t// Heartbeat every 25s\n\t\t\t\tinterval = setInterval(() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcontroller.enqueue(encoder.encode(': ping\\n\\n'));\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Connection closed\n\t\t\t\t\t}\n\t\t\t\t}, 25000);\n\t\t\t},\n\t\t\tcancel() {\n\t\t\t\tif (interval) clearInterval(interval);\n\t\t\t\tif (currentController) {\n\t\t\t\t\tstate.clients.delete(currentController);\n\t\t\t\t}\n\t\t\t\tconsole.log('[reroute] Browser disconnected from live reload');\n\t\t\t},\n\t\t});\n\n\t\treturn new Response(stream, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/event-stream',\n\t\t\t\t'Cache-Control': 'no-cache',\n\t\t\t\tConnection: 'keep-alive',\n\t\t\t},\n\t\t});\n\t});\n\n\tapp.get('/__reroute_watch.js', () => {\n\t\treturn new Response(LIVE_RELOAD_CLIENT_CODE, {\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/javascript; charset=utf-8',\n\t\t\t\t'cache-control': 'no-cache',\n\t\t\t},\n\t\t});\n\t});\n\n\treturn app;\n}\n",
|
|
88
88
|
"// Small helpers for JSON responses with caching/ETag\n// Keep local to Elysia package to avoid core dependency surface changes\n\n// biome-ignore lint/suspicious/noExplicitAny: Bun env types vary\ntype Any = any;\n\n/**\n * Simple djb2 hash for strings (fallback when Bun.hash unavailable)\n */\nfunction djb2Hash(str: string): number {\n\tlet hash = 5381;\n\tfor (let i = 0; i < str.length; i++) {\n\t\thash = (hash * 33) ^ str.charCodeAt(i);\n\t}\n\treturn hash >>> 0; // Convert to unsigned 32-bit\n}\n\nconst makeETag = (s: string) => {\n\ttry {\n\t\t// Prefer Bun.hash if available (fast)\n\t\tconst bunHash = (globalThis as Any)?.Bun?.hash;\n\t\tconst h = typeof bunHash === 'function' ? bunHash(s) : djb2Hash(s);\n\t\treturn `W/\"${s.length.toString(16)}-${Number(h).toString(36)}\"`;\n\t} catch {\n\t\t// Fallback: djb2 hash\n\t\treturn `W/\"${s.length.toString(16)}-${djb2Hash(s).toString(36)}\"`;\n\t}\n};\n\nconst getIfNoneMatch = (headers?: Headers | Record<string, string>) => {\n\ttry {\n\t\tif (!headers) return undefined;\n\t\t// Elysia provides Headers-like and plain-record in different hooks\n\t\t// Try .get first, then record access in lower/normal case\n\t\tconst h: Any = headers as Any;\n\t\tif (typeof h?.get === 'function')\n\t\t\treturn String(h.get('if-none-match') || '');\n\t\treturn String((h['if-none-match'] || h['If-None-Match'] || '') as string);\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nexport function jsonWithCache(\n\tpayload: Any,\n\tcacheControl: string,\n\treqHeaders?: Headers | Record<string, string>,\n\tcacheStatus?: 'HIT' | 'MISS',\n): Response {\n\tconst body = typeof payload === 'string' ? payload : JSON.stringify(payload);\n\tconst etag = makeETag(body);\n\tconst inm = getIfNoneMatch(reqHeaders) || '';\n\n\tconst headers: Record<string, string> = {\n\t\tETag: etag,\n\t\t'Cache-Control': cacheControl,\n\t};\n\n\tif (cacheStatus) {\n\t\theaders['Reroute-Cache'] = cacheStatus;\n\t}\n\n\tif (etag && inm && inm === etag) {\n\t\treturn new Response(null, {\n\t\t\tstatus: 304,\n\t\t\theaders,\n\t\t});\n\t}\n\n\treturn new Response(body, {\n\t\theaders: {\n\t\t\t...headers,\n\t\t\t'Content-Type': 'application/json; charset=utf-8',\n\t\t},\n\t});\n}\n\nexport function jsonError(message: string, status = 500): Response {\n\treturn new Response(JSON.stringify({ error: message }), {\n\t\tstatus,\n\t\theaders: { 'Content-Type': 'application/json; charset=utf-8' },\n\t});\n}\n",
|
|
89
|
+
"/**\n * Live-reload reconnect policy. A dropped SSE stream is not a server\n * restart — only a new boot id means the process actually came back.\n */\nexport function parseConnectedBootId(data: string): string | null {\n\tif (data === 'connected') return '';\n\tif (data.startsWith('connected:')) return data.slice('connected:'.length);\n\treturn null;\n}\n\nexport function shouldReloadOnReconnect(\n\tpreviousBootId: string | null,\n\tnextBootId: string,\n): boolean {\n\treturn Boolean(previousBootId && nextBootId && previousBootId !== nextBootId);\n}\n",
|
|
89
90
|
"/**\n * Swap the theme stylesheet in place. Never returns false — a missing\n * <link> (inlined <style>, or the tag gone after hydrate) used to fall\n * through to location.reload() of the whole JS bundle.\n */\nfunction refreshThemeCss(): boolean {\n\tconst href = `/.reroute/index.css?t=${Date.now()}`;\n\tconst next = document.createElement('link');\n\tnext.rel = 'stylesheet';\n\tnext.setAttribute('data-reroute', 'theme');\n\tnext.href = href;\n\n\tconst existing = document.querySelector('link[data-reroute=\"theme\"]');\n\tconst style = document.querySelector('style[data-reroute=\"theme\"]');\n\tconst previous = existing ?? style;\n\n\tif (previous) {\n\t\tprevious.removeAttribute('data-reroute');\n\t\tnext.onload = () => previous.remove();\n\t\tprevious.after(next);\n\t\treturn true;\n\t}\n\n\tdocument.head.appendChild(next);\n\treturn true;\n}\n\nexport { refreshThemeCss };\n",
|
|
90
91
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport type { ReactElement } from 'react';\nimport {\n\textractContentForLLMs,\n\tformatContentSignal,\n\tgenerateLLMsFullContent,\n\tgenerateLLMsIndex,\n\ttype LLMsOptions,\n\tTTLCache,\n\ttype TTLCache as TTLCacheType,\n} from 'reroute-js/core';\nimport {\n\tbuildLlmsCacheKey,\n\tbuildLlmsFullCacheKey,\n\tbuildLlmsIndexCacheKey,\n\tcalculateLlmsDefaults,\n\tformatByteSize,\n\tgetCollectionLlmsRoutes,\n\tgetCollectionMeta,\n\tgetRootLlmsRoutes,\n\tisLlmsSpecificRoute,\n\tparseContentFormat,\n\tshouldEnableContentNegotiation,\n} from '../libs/llms';\nimport { markdownResponse, textResponse } from '../libs/response';\nimport type { Any } from '../types';\n\ntype LLMsRouteOptions = {\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tgetBundleUrl: () => Promise<string>;\n\tmaxAge: number;\n\tdirective: string;\n\tllmsConfig: LLMsOptions;\n\tcollections: string[];\n\tdataCache: TTLCacheType<string, unknown>;\n};\n\nexport function registerLLMsRoutes(\n\tapp: Elysia,\n\toptions: LLMsRouteOptions,\n): Elysia {\n\tconst {\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tgetBundleUrl,\n\t\tmaxAge,\n\t\tdirective,\n\t\tllmsConfig,\n\t\tcollections,\n\t} = options;\n\n\tconst defaults = calculateLlmsDefaults(llmsConfig, maxAge);\n\tconst { ttlMs, ttlMsFull, baseUrl } = defaults;\n\t// Use TTLCache for automatic expiration\n\tconst llmsCache = new TTLCache<string, string>(100, ttlMs);\n\tconst availableLlms: string[] = [];\n\n\tconst contentSignal = formatContentSignal(\n\t\tllmsConfig.contentSignal,\n\t\t'default',\n\t);\n\tconst signalHeaders: Record<string, string> = contentSignal\n\t\t? { 'Content-Signal': contentSignal }\n\t\t: {};\n\tconst responseOpts = {\n\t\tmaxAge: defaults.maxAge,\n\t\tdirective: directive as 'public',\n\t\textraHeaders: signalHeaders,\n\t};\n\tconst responseOptsFull = {\n\t\tmaxAge: defaults.maxAgeFull,\n\t\tdirective: directive as 'public',\n\t\textraHeaders: signalHeaders,\n\t};\n\n\t// Add root-level routes\n\tavailableLlms.push(...getRootLlmsRoutes(llmsConfig));\n\n\t// /llms.txt index route\n\tif (llmsConfig.enableIndex !== false) {\n\t\tapp.get('/llms.txt', async () => {\n\t\t\tconst cacheKey = buildLlmsIndexCacheKey();\n\n\t\t\ttry {\n\t\t\t\tconst cached = llmsCache.get(cacheKey);\n\t\t\t\tif (cached) {\n\t\t\t\t\treturn textResponse(cached, {\n\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst content = await generateLLMsIndex({\n\t\t\t\t\tcwd,\n\t\t\t\t\tcollections,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\tllmsConfig,\n\t\t\t\t});\n\n\t\t\t\tllmsCache.set(cacheKey, content);\n\n\t\t\t\treturn textResponse(content, { ...responseOpts, cacheStatus: 'MISS' });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[reroute/llms] Failed to generate index:', error);\n\t\t\t\tthrow new NotFoundError('Failed to generate LLM index');\n\t\t\t}\n\t\t});\n\t}\n\n\t// /llms-full.txt bundle route\n\tif (llmsConfig.enableFullContent !== false) {\n\t\tapp.get('/llms-full.txt', async () => {\n\t\t\tconst cacheKey = buildLlmsFullCacheKey();\n\n\t\t\ttry {\n\t\t\t\tconst cached = llmsCache.get(cacheKey);\n\t\t\t\tif (cached) {\n\t\t\t\t\treturn textResponse(cached, {\n\t\t\t\t\t\t...responseOptsFull,\n\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconsole.log(\n\t\t\t\t\t'[reroute/llms] Generating llms-full.txt (may take a moment for large sites)...',\n\t\t\t\t);\n\n\t\t\t\tconst bundleUrl = await getBundleUrl();\n\t\t\t\tconst { content, stats } = await generateLLMsFullContent({\n\t\t\t\t\trootComponent,\n\t\t\t\t\tcwd,\n\t\t\t\t\tclientDir,\n\t\t\t\t\tcollections,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\tbundleUrl,\n\t\t\t\t\tllmsConfig,\n\t\t\t\t});\n\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[reroute/llms] Generated llms-full.txt: ${stats.itemCount} items, ${formatByteSize(stats.byteSize)}MB`,\n\t\t\t\t);\n\n\t\t\t\tllmsCache.set(cacheKey, content, ttlMsFull);\n\n\t\t\t\treturn textResponse(content, {\n\t\t\t\t\t...responseOptsFull,\n\t\t\t\t\tcacheStatus: 'MISS',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[reroute/llms] Failed to generate full content:', error);\n\t\t\t\tthrow new NotFoundError('Failed to generate LLM full content');\n\t\t\t}\n\t\t});\n\t}\n\n\t// Collection-specific routes\n\tfor (const collection of collections) {\n\t\tif (llmsConfig.excludeCollections?.includes(collection)) continue;\n\n\t\tconst meta = getCollectionMeta(collection, llmsConfig);\n\n\t\t// Track collection routes\n\t\tavailableLlms.push(...getCollectionLlmsRoutes(collection, llmsConfig));\n\n\t\t// Collection index\n\t\tif (llmsConfig.enableIndex !== false) {\n\t\t\tapp.get(`/${collection}/llms.txt`, async () => {\n\t\t\t\tconst cacheKey = buildLlmsIndexCacheKey(collection);\n\n\t\t\t\ttry {\n\t\t\t\t\tconst cached = llmsCache.get(cacheKey);\n\t\t\t\t\tif (cached) {\n\t\t\t\t\t\treturn textResponse(cached, {\n\t\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst content = await generateLLMsIndex({\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tcollections: [collection],\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\ttargetCollection: collection,\n\t\t\t\t\t\tllmsConfig: {\n\t\t\t\t\t\t\t...llmsConfig,\n\t\t\t\t\t\t\tsiteName: meta.title,\n\t\t\t\t\t\t\tsiteDescription: meta.description,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\tllmsCache.set(cacheKey, content);\n\n\t\t\t\t\treturn textResponse(content, {\n\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\tcacheStatus: 'MISS',\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`[reroute/llms] Failed to generate ${collection} index:`,\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t\tthrow new NotFoundError('Failed to generate LLM index');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Collection full content\n\t\tif (llmsConfig.enableFullContent !== false) {\n\t\t\tapp.get(`/${collection}/llms-full.txt`, async () => {\n\t\t\t\tconst cacheKey = buildLlmsFullCacheKey(collection);\n\n\t\t\t\ttry {\n\t\t\t\t\tconst cached = llmsCache.get(cacheKey);\n\t\t\t\t\tif (cached) {\n\t\t\t\t\t\treturn textResponse(cached, {\n\t\t\t\t\t\t\t...responseOptsFull,\n\t\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[reroute/llms] Generating ${collection}/llms-full.txt...`,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst bundleUrl = await getBundleUrl();\n\t\t\t\t\tconst { content, stats } = await generateLLMsFullContent({\n\t\t\t\t\t\trootComponent,\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\tcollections: [collection],\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\tbundleUrl,\n\t\t\t\t\t\ttargetCollection: collection,\n\t\t\t\t\t\tllmsConfig: {\n\t\t\t\t\t\t\t...llmsConfig,\n\t\t\t\t\t\t\tsiteName: meta.title,\n\t\t\t\t\t\t\tsiteDescription: meta.description,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[reroute/llms] Generated ${collection}/llms-full.txt: ${stats.itemCount} items, ${formatByteSize(stats.byteSize)}MB`,\n\t\t\t\t\t);\n\n\t\t\t\t\tllmsCache.set(cacheKey, content, ttlMsFull);\n\n\t\t\t\t\treturn textResponse(content, {\n\t\t\t\t\t\t...responseOptsFull,\n\t\t\t\t\t\tcacheStatus: 'MISS',\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`[reroute/llms] Failed to generate ${collection} full content:`,\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t\tthrow new NotFoundError('Failed to generate LLM full content');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Content negotiation hook\n\tif (shouldEnableContentNegotiation(llmsConfig)) {\n\t\tasync function handleLLMRequest(\n\t\t\tpathname: string,\n\t\t\tformat: 'txt' | 'md',\n\t\t\tacceptEncoding: string,\n\t\t) {\n\t\t\tconst cacheKey = buildLlmsCacheKey(pathname, format, acceptEncoding);\n\n\t\t\tconst cached = llmsCache.get(cacheKey);\n\t\t\tif (cached) {\n\t\t\t\treturn format === 'md'\n\t\t\t\t\t? markdownResponse(cached, {\n\t\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t\t})\n\t\t\t\t\t: textResponse(cached, {\n\t\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\t\textraHeaders: { ...signalHeaders, Vary: 'Accept' },\n\t\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst bundleUrl = await getBundleUrl();\n\t\t\tconst content = await extractContentForLLMs({\n\t\t\t\tpathname,\n\t\t\t\trootComponent,\n\t\t\t\tclientDir,\n\t\t\t\tcwd,\n\t\t\t\tisWatchMode,\n\t\t\t\tbundleUrl,\n\t\t\t\tformat,\n\t\t\t\tllmsConfig,\n\t\t\t});\n\n\t\t\tllmsCache.set(cacheKey, content);\n\n\t\t\treturn format === 'md'\n\t\t\t\t? markdownResponse(content, { ...responseOpts, cacheStatus: 'MISS' })\n\t\t\t\t: textResponse(content, {\n\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\textraHeaders: { ...signalHeaders, Vary: 'Accept' },\n\t\t\t\t\t\tcacheStatus: 'MISS',\n\t\t\t\t\t});\n\t\t}\n\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Content negotiation involves checking multiple extensions and headers\n\t\tapp.onBeforeHandle(async ({ request }) => {\n\t\t\tconst url = new URL(request.url);\n\t\t\tconst pathname = url.pathname;\n\n\t\t\t// Skip LLM-specific routes\n\t\t\tif (isLlmsSpecificRoute(pathname)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst acceptHeader = request.headers.get('accept') ?? '';\n\t\t\tconst parsed = parseContentFormat(pathname, acceptHeader, llmsConfig);\n\n\t\t\tif (!parsed) return;\n\n\t\t\tconst { format, cleanPath } = parsed;\n\n\t\t\ttry {\n\t\t\t\tconst acceptEncoding = request.headers.get('accept-encoding') ?? '';\n\t\t\t\treturn await handleLLMRequest(\n\t\t\t\t\tcleanPath,\n\t\t\t\t\tformat as 'txt' | 'md',\n\t\t\t\t\tacceptEncoding,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[reroute/llms] Failed to extract content for ${cleanPath}:`,\n\t\t\t\t\terror,\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\terror instanceof Error &&\n\t\t\t\t\t(error.message.includes('excluded') ||\n\t\t\t\t\t\terror.message.includes('not found'))\n\t\t\t\t) {\n\t\t\t\t\tthrow new NotFoundError(\n\t\t\t\t\t\t'Route not found or excluded from LLM features',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthrow new NotFoundError('Failed to extract content');\n\t\t\t}\n\t\t});\n\t}\n\n\t// Store globally for SSR injection\n\t(globalThis as Any).__REROUTE_AVAILABLE_LLMS__ = availableLlms;\n\n\t// Provide cache clearing method\n\t(app as Any)._clearLLMsCache = () => llmsCache.clear();\n\n\treturn app;\n}\n",
|
|
91
92
|
"/**\n * LLMs utilities\n * Testable helper functions for LLMs route handlers\n */\n\nimport type { LLMsOptions } from 'reroute-js/core';\n\n/**\n * Capitalize first letter of a string\n */\nexport function capitalize(str: string): string {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n/**\n * Collection metadata used for LLMs index generation\n */\nexport interface CollectionMeta {\n\ttitle: string;\n\tdescription?: string;\n}\n\n/**\n * Get title and description for a collection\n */\nexport function getCollectionMeta(\n\tcollection: string,\n\tllmsConfig: LLMsOptions,\n): CollectionMeta {\n\tconst collectionConfig = llmsConfig.collections?.[collection];\n\treturn {\n\t\ttitle:\n\t\t\tcollectionConfig?.title ??\n\t\t\t(llmsConfig.siteName\n\t\t\t\t? `${llmsConfig.siteName} - ${capitalize(collection)}`\n\t\t\t\t: capitalize(collection)),\n\t\tdescription: collectionConfig?.description ?? llmsConfig.siteDescription,\n\t};\n}\n\n/**\n * LLM-specific routes that should be skipped during content negotiation\n */\nconst LLMS_SPECIFIC_ROUTES = [\n\t'/llms.txt',\n\t'/llms-full.txt',\n\t'/robots.txt',\n] as const;\n\n/**\n * Check if a pathname is an LLM-specific route that should be skipped\n */\nexport function isLlmsSpecificRoute(pathname: string): boolean {\n\tif (\n\t\tLLMS_SPECIFIC_ROUTES.includes(\n\t\t\tpathname as (typeof LLMS_SPECIFIC_ROUTES)[number],\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\treturn pathname.endsWith('/llms.txt') || pathname.endsWith('/llms-full.txt');\n}\n\n/**\n * Parsed content format result\n */\nexport interface ParsedContentFormat {\n\tformat: 'txt' | 'md';\n\tcleanPath: string;\n}\n\n/**\n * Clean a pathname by removing .txt or .md extension\n * and normalizing root paths\n */\nexport function cleanPathname(\n\tpathname: string,\n\textension: '.txt' | '.md',\n): string {\n\tlet cleanPath = pathname.replace(\n\t\tnew RegExp(`${extension.replace('.', '\\\\.')}$`),\n\t\t'',\n\t);\n\tif (cleanPath === '' || cleanPath === '/index') {\n\t\tcleanPath = '/';\n\t}\n\treturn cleanPath;\n}\n\n/**\n * Parse Accept header to extract primary media type\n */\nexport function parseAcceptHeader(acceptHeader: string): string | null {\n\tif (!acceptHeader) return null;\n\tconst acceptTypes = acceptHeader\n\t\t.split(',')\n\t\t.map((t) => t.split(';')[0].trim());\n\treturn acceptTypes[0] || null;\n}\n\n/**\n * Determine content format from Accept header\n */\nexport function getFormatFromAccept(\n\tprimaryType: string | null,\n): 'txt' | 'md' | null {\n\tif (primaryType === 'text/plain') return 'txt';\n\tif (primaryType === 'text/markdown') return 'md';\n\treturn null;\n}\n\n/**\n * Configuration flags for content negotiation\n */\nexport interface ContentNegotiationConfig {\n\tenableTextExtension?: boolean;\n\tenableMarkdownExtension?: boolean;\n\tenableContentNegotiation?: boolean;\n}\n\n/**\n * Parse pathname and Accept header to determine content format\n * Returns null if no LLM format is requested\n */\nexport function parseContentFormat(\n\tpathname: string,\n\tacceptHeader: string,\n\tconfig: ContentNegotiationConfig,\n): ParsedContentFormat | null {\n\t// Check .txt extension\n\tif (config.enableTextExtension !== false && pathname.endsWith('.txt')) {\n\t\treturn {\n\t\t\tformat: 'txt',\n\t\t\tcleanPath: cleanPathname(pathname, '.txt'),\n\t\t};\n\t}\n\n\t// Check .md extension\n\tif (config.enableMarkdownExtension !== false && pathname.endsWith('.md')) {\n\t\treturn {\n\t\t\tformat: 'md',\n\t\t\tcleanPath: cleanPathname(pathname, '.md'),\n\t\t};\n\t}\n\n\t// Check Accept header content negotiation\n\tif (config.enableContentNegotiation !== false) {\n\t\tconst primaryType = parseAcceptHeader(acceptHeader);\n\t\tconst format = getFormatFromAccept(primaryType);\n\n\t\tif (format) {\n\t\t\treturn {\n\t\t\t\tformat,\n\t\t\t\tcleanPath: pathname,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Build cache key for LLMs content\n */\nexport function buildLlmsCacheKey(\n\tpathname: string,\n\tformat: 'txt' | 'md',\n\tacceptEncoding?: string,\n): string {\n\treturn `llms:${pathname}::${format}::${acceptEncoding ?? ''}`;\n}\n\n/**\n * Build cache key for LLMs index\n */\nexport function buildLlmsIndexCacheKey(collection?: string): string {\n\treturn collection ? `llms:index:${collection}` : 'llms:index';\n}\n\n/**\n * Build cache key for LLMs full content\n */\nexport function buildLlmsFullCacheKey(collection?: string): string {\n\treturn collection ? `llms:full:${collection}` : 'llms:full';\n}\n\n/**\n * Calculate available LLMs routes for a collection\n */\nexport function getCollectionLlmsRoutes(\n\tcollection: string,\n\tconfig: {\n\t\tenableIndex?: boolean;\n\t\tenableFullContent?: boolean;\n\t\tenableTextExtension?: boolean;\n\t\tenableMarkdownExtension?: boolean;\n\t},\n): string[] {\n\tconst routes: string[] = [];\n\n\tif (config.enableIndex !== false) {\n\t\troutes.push(`/${collection}/llms.txt`);\n\t}\n\n\tif (config.enableFullContent !== false) {\n\t\troutes.push(`/${collection}/llms-full.txt`);\n\t}\n\n\tif (config.enableTextExtension !== false) {\n\t\troutes.push(`/${collection}.txt`);\n\t}\n\n\tif (config.enableMarkdownExtension !== false) {\n\t\troutes.push(`/${collection}.md`);\n\t}\n\n\treturn routes;\n}\n\n/**\n * Calculate root-level LLMs routes\n */\nexport function getRootLlmsRoutes(config: {\n\tenableIndex?: boolean;\n\tenableFullContent?: boolean;\n}): string[] {\n\tconst routes: string[] = [];\n\n\tif (config.enableIndex !== false) {\n\t\troutes.push('/llms.txt');\n\t}\n\n\tif (config.enableFullContent !== false) {\n\t\troutes.push('/llms-full.txt');\n\t}\n\n\treturn routes;\n}\n\n/**\n * Check if content negotiation should be enabled\n */\nexport function shouldEnableContentNegotiation(config: {\n\tenableTextExtension?: boolean;\n\tenableMarkdownExtension?: boolean;\n\tenableContentNegotiation?: boolean;\n}): boolean {\n\treturn (\n\t\tconfig.enableTextExtension !== false ||\n\t\tconfig.enableMarkdownExtension !== false ||\n\t\tconfig.enableContentNegotiation !== false\n\t);\n}\n\n/**\n * LLMs configuration defaults calculated from options\n */\nexport interface LlmsConfigDefaults {\n\tmaxAge: number;\n\tmaxAgeFull: number;\n\tttlMs: number;\n\tttlMsFull: number;\n\tbaseUrl: string;\n}\n\n/**\n * Calculate LLMs configuration defaults\n */\nexport function calculateLlmsDefaults(\n\tllmsConfig: LLMsOptions,\n\tfallbackMaxAge: number,\n): LlmsConfigDefaults {\n\tconst maxAge = llmsConfig.maxAge ?? fallbackMaxAge ?? 86400;\n\tconst maxAgeFull = llmsConfig.maxAgeFull ?? maxAge ?? 604800;\n\treturn {\n\t\tmaxAge,\n\t\tmaxAgeFull,\n\t\tttlMs: maxAge * 1000,\n\t\tttlMsFull: maxAgeFull * 1000,\n\t\tbaseUrl: llmsConfig.baseUrl ?? '',\n\t};\n}\n\n/**\n * Format byte size to human readable MB string\n */\nexport function formatByteSize(bytes: number): string {\n\treturn (bytes / 1024 / 1024).toFixed(2);\n}\n",
|
|
@@ -96,11 +97,11 @@
|
|
|
96
97
|
"/**\n * Caching primitives for route handlers\n * Provides consistent cache patterns across all routes\n */\n\nimport type { LRUCache } from 'reroute-js/core';\n\n/**\n * Convert seconds to milliseconds for TTL\n */\nexport function toTTL(seconds: number): number {\n\treturn seconds * 1000;\n}\n\n/**\n * Cache entry with expiration\n */\nexport interface CacheEntry<T> {\n\tdata: T;\n\texp: number;\n}\n\n/**\n * Standard cache entry types used across routes\n */\nexport interface XmlCacheEntry {\n\txml: string;\n\texp: number;\n}\n\nexport interface TextCacheEntry {\n\ttxt: string;\n\texp: number;\n}\n\nexport interface ContentCacheEntry {\n\tcontent: string;\n\texp: number;\n}\n\nexport interface BufferCacheEntry {\n\tbuffer: Buffer;\n\texp: number;\n}\n\n/**\n * Check if a cache entry is still valid\n */\nexport function isValid<T extends { exp: number }>(\n\tentry: T | undefined,\n): entry is T {\n\treturn entry !== undefined && entry.exp > Date.now();\n}\n\n/**\n * Get from cache if valid, returns undefined if expired or missing\n */\nexport function getIfValid<K, V extends { exp: number }>(\n\tcache: LRUCache<K, V> | Map<K, V>,\n\tkey: K,\n): V | undefined {\n\tconst entry = cache.get(key);\n\treturn isValid(entry) ? entry : undefined;\n}\n\n/**\n * Set cache entry with TTL\n */\nexport function setWithTTL<K, V>(\n\tcache: LRUCache<K, V> | Map<K, V>,\n\tkey: K,\n\tdata: Omit<V, 'exp'>,\n\tttlMs: number,\n): void {\n\tcache.set(key, { ...data, exp: Date.now() + ttlMs } as V);\n}\n\n/**\n * Create a cache key with encoding suffix\n */\nexport function encodedKey(path: string, encoding: string): string {\n\treturn `${path}:${encoding}`;\n}\n\n/**\n * Create a namespaced cache key\n */\nexport function namespacedKey(namespace: string, key: string): string {\n\treturn `${namespace}:${key}`;\n}\n\n/**\n * Cache wrapper for common get-or-compute pattern\n * Returns cached value if valid, otherwise computes and caches new value\n */\nexport async function getOrCompute<K, V extends { exp: number }>(\n\tcache: LRUCache<K, V> | Map<K, V>,\n\tkey: K,\n\tttlMs: number,\n\tcompute: () => Promise<Omit<V, 'exp'>>,\n): Promise<Omit<V, 'exp'>> {\n\tconst cached = getIfValid(cache, key);\n\tif (cached) {\n\t\tconst { exp: _, ...data } = cached;\n\t\treturn data;\n\t}\n\n\tconst computed = await compute();\n\tsetWithTTL(cache, key, computed, ttlMs);\n\treturn computed;\n}\n",
|
|
97
98
|
"import type { Elysia } from 'elysia';\nimport type { HeadingNode } from 'reroute-js/cli';\nimport { join } from 'reroute-js/core';\nimport { buildCacheControl } from '../libs/response';\n\ninterface SearchIndexEntry {\n\tid: string;\n\tcollection: string;\n\tname: string;\n\tslug: string;\n\thref: string;\n\ttitle: string;\n\texcerpt?: string;\n\tcontent?: string;\n\theadings: Array<{ level: number; text: string; slug: string }>;\n\tmeta: Record<string, unknown>;\n\tlocale?: string;\n}\n\ninterface SearchHeading {\n\tlevel: number;\n\ttext: string;\n\tslug: string;\n}\n\ninterface SearchResultItem {\n\tid: string;\n\tcollection: string;\n\tslug: string;\n\thref: string;\n\ttitle: string;\n\texcerpt?: string;\n\tmatchedHeadings: SearchHeading[];\n}\n\ninterface SearchIndex {\n\tversion: number;\n\tgenerated: string;\n\tentries: SearchIndexEntry[];\n}\n\ninterface SearchOptions {\n\tcollections?: string[];\n\tpage?: number;\n\tpageSize?: number;\n\tlocale?: string;\n}\n\nfunction scoreTitleMatch(title: string, term: string): number {\n\tconst lowerTitle = title.toLowerCase();\n\tif (!lowerTitle.includes(term)) return 0;\n\n\tlet score = 10;\n\tif (lowerTitle === term) score += 20;\n\treturn score;\n}\n\nfunction scoreHeadingMatches(\n\theadings: HeadingNode[],\n\tterm: string,\n\tmatchedHeadings: SearchHeading[],\n): number {\n\tlet score = 0;\n\tfor (const heading of headings) {\n\t\tif (heading.text.toLowerCase().includes(term)) {\n\t\t\tscore += 5;\n\t\t\tif (!matchedHeadings.some((h) => h.slug === heading.slug)) {\n\t\t\t\tmatchedHeadings.push(heading);\n\t\t\t}\n\t\t}\n\t}\n\treturn score;\n}\n\nfunction scoreMetaMatch(meta: Record<string, unknown>, term: string): number {\n\tlet score = 0;\n\tfor (const value of Object.values(meta)) {\n\t\tif (typeof value === 'string' && value.toLowerCase().includes(term)) {\n\t\t\tscore += 3;\n\t\t} else if (\n\t\t\tArray.isArray(value) &&\n\t\t\tvalue.some((v) => typeof v === 'string' && v.toLowerCase().includes(term))\n\t\t) {\n\t\t\tscore += 3;\n\t\t}\n\t}\n\treturn score;\n}\n\nfunction scoreEntry(\n\tentry: SearchIndexEntry,\n\tterms: string[],\n): {\n\tscore: number;\n\tmatchedHeadings: SearchHeading[];\n} {\n\tlet score = 0;\n\tconst matchedHeadings: SearchHeading[] = [];\n\n\tfor (const term of terms) {\n\t\tscore += scoreTitleMatch(entry.title, term);\n\t\tscore += scoreHeadingMatches(entry.headings, term, matchedHeadings);\n\t\tscore += scoreMetaMatch(entry.meta, term);\n\n\t\t// Content match (lower weight)\n\t\tif (entry.content?.toLowerCase().includes(term)) {\n\t\t\tscore += 1;\n\t\t}\n\t}\n\n\treturn { score, matchedHeadings };\n}\n\nfunction searchEntries(\n\tentries: SearchIndexEntry[],\n\tquery: string,\n\toptions: SearchOptions = {},\n): { results: SearchResultItem[]; total: number } {\n\tconst { collections, page = 1, pageSize = 20, locale } = options;\n\n\tconst terms = query\n\t\t.toLowerCase()\n\t\t.split(/\\s+/)\n\t\t.filter((t) => t.length > 1);\n\n\tif (terms.length === 0) return { results: [], total: 0 };\n\n\tconst scored = entries\n\t\t.filter(\n\t\t\t(entry) => !collections?.length || collections.includes(entry.collection),\n\t\t)\n\t\t.filter((entry) => !(locale && entry.locale) || entry.locale === locale)\n\t\t.map((entry) => ({ entry, ...scoreEntry(entry, terms) }))\n\t\t.filter((item) => item.score > 0)\n\t\t.sort((a, b) => b.score - a.score);\n\n\tconst total = scored.length;\n\tconst startIndex = (page - 1) * pageSize;\n\tconst paginatedScored = scored.slice(startIndex, startIndex + pageSize);\n\n\tconst results = paginatedScored.map((item) => ({\n\t\tid: item.entry.id,\n\t\tcollection: item.entry.collection,\n\t\tslug: item.entry.slug,\n\t\thref: item.entry.href,\n\t\ttitle: item.entry.title,\n\t\texcerpt:\n\t\t\titem.entry.excerpt ??\n\t\t\tString(\n\t\t\t\titem.entry.meta.excerpt ?? item.entry.meta.description ?? '',\n\t\t\t).slice(0, 160),\n\t\tmatchedHeadings: item.matchedHeadings,\n\t}));\n\n\treturn { results, total };\n}\n\nexport function registerSearchRoute(\n\tapp: Elysia,\n\tcwd: string,\n\tdirective: string,\n\tmaxAge: number,\n\tsearchConfig?: {\n\t\tdefaultPageSize?: number;\n\t\tmaxPageSize?: number;\n\t},\n): Elysia {\n\tconst defaultPageSize = searchConfig?.defaultPageSize ?? 20;\n\tconst maxPageSize = searchConfig?.maxPageSize ?? 100;\n\n\tlet cachedIndex: SearchIndex | null = null;\n\tlet lastModified: number | null = null;\n\n\tasync function loadSearchIndex(): Promise<SearchIndex | null> {\n\t\ttry {\n\t\t\tconst indexPath = join(cwd, '.reroute', 'search.json');\n\t\t\tconst file = Bun.file(indexPath);\n\n\t\t\tif (!(await file.exists())) return null;\n\n\t\t\tconst stats = await file.stat();\n\t\t\tif (\n\t\t\t\t!(cachedIndex && lastModified) ||\n\t\t\t\tstats.mtime.getTime() > lastModified\n\t\t\t) {\n\t\t\t\tconst text = await file.text();\n\t\t\t\tcachedIndex = JSON.parse(text) as SearchIndex;\n\t\t\t\tlastModified = stats.mtime.getTime();\n\t\t\t}\n\n\t\t\treturn cachedIndex;\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to load search index:', error);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tapp.get('/__reroute_search', async ({ query }) => {\n\t\tconst searchQuery = String(query.q || query.query || '').trim();\n\n\t\tif (!searchQuery) {\n\t\t\treturn Response.json(\n\t\t\t\t{ error: 'Query parameter \"q\" is required' },\n\t\t\t\t{ status: 400 },\n\t\t\t);\n\t\t}\n\n\t\tconst index = await loadSearchIndex();\n\n\t\tif (!index) {\n\t\t\treturn Response.json(\n\t\t\t\t{ error: 'Search index not found. Enable search in reroute.config.ts' },\n\t\t\t\t{ status: 404 },\n\t\t\t);\n\t\t}\n\n\t\tconst collections = query.collections\n\t\t\t? String(query.collections).split(',').filter(Boolean)\n\t\t\t: undefined;\n\n\t\tconst page = query.page\n\t\t\t? Math.max(1, Number.parseInt(String(query.page), 10))\n\t\t\t: 1;\n\n\t\tconst requestedPageSize = query.pageSize\n\t\t\t? Number.parseInt(String(query.pageSize), 10)\n\t\t\t: defaultPageSize;\n\n\t\tconst pageSize = Math.min(Math.max(1, requestedPageSize), maxPageSize);\n\n\t\tconst locale = query.lang ? String(query.lang) : undefined;\n\n\t\tconst { results, total } = searchEntries(index.entries, searchQuery, {\n\t\t\tcollections,\n\t\t\tpage,\n\t\t\tpageSize,\n\t\t\tlocale,\n\t\t});\n\n\t\treturn Response.json(\n\t\t\t{\n\t\t\t\ttotal,\n\t\t\t\tpage,\n\t\t\t\tpageSize,\n\t\t\t\ttotalPages: Math.ceil(total / pageSize),\n\t\t\t\tresults,\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: {\n\t\t\t\t\t'content-type': 'application/json; charset=utf-8',\n\t\t\t\t\t'cache-control': buildCacheControl(\n\t\t\t\t\t\tmaxAge,\n\t\t\t\t\t\tdirective as 'public' | 'private',\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t});\n\n\treturn app;\n}\n",
|
|
98
99
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tdiscoverSitemapData,\n\tgenerateSitemap,\n\ttype SitemapOptions,\n\tTTLCache,\n\ttype TTLCache as TTLCacheType,\n} from 'reroute-js/core';\nimport { toTTL } from '../libs/caching';\nimport { xmlResponse } from '../libs/response';\nimport type { Any } from '../types';\n\ntype SitemapRouteOptions = {\n\tcwd: string;\n\tcollections: string[];\n\tbaseUrl: string;\n\tmaxAge: number;\n\tisWatchMode: boolean;\n\tsitemapCache: TTLCacheType<string, string>;\n\tsitemapConfig?: SitemapOptions;\n\t/** In-process sitemap cache. Off when `server.cache` is false. */\n\tcacheEnabled?: boolean;\n};\n\n// Cache discovery results separately (structure of routes, not content)\n// This has a much longer TTL since route structure rarely changes (5 minutes)\nconst sitemapDiscoveryCache = new TTLCache<\n\tstring,\n\tAwaited<ReturnType<typeof discoverSitemapData>>\n>(1, 5 * 60 * 1000);\n\nasync function getOrDiscoverSitemapData(\n\tcwd: string,\n\tcollections: string[],\n\tbaseUrl: string,\n\tisWatchMode: boolean,\n\tsitemapConfig?: SitemapOptions,\n\tcacheEnabled = true,\n): Promise<Awaited<ReturnType<typeof discoverSitemapData>>> {\n\t// In dev mode, always rediscover (files can change)\n\tif (isWatchMode || !cacheEnabled) {\n\t\treturn discoverSitemapData(\n\t\t\tcwd,\n\t\t\tcollections,\n\t\t\tbaseUrl,\n\t\t\tisWatchMode,\n\t\t\tsitemapConfig,\n\t\t);\n\t}\n\n\t// In production, cache discovery (TTLCache handles expiration)\n\tconst cacheKey = 'sitemap:discovery';\n\tconst cached = sitemapDiscoveryCache.get(cacheKey);\n\tif (cached) return cached;\n\n\tconst discovery = await discoverSitemapData(\n\t\tcwd,\n\t\tcollections,\n\t\tbaseUrl,\n\t\tisWatchMode,\n\t\tsitemapConfig,\n\t);\n\n\tsitemapDiscoveryCache.set(cacheKey, discovery);\n\treturn discovery;\n}\n\nasync function generateAndCacheSitemap(\n\toptions: SitemapRouteOptions,\n\t_ttlMs: number,\n): Promise<{\n\txml: string;\n\tpages: Array<{ filename: string; xml: string }>;\n\tneedsIndex: boolean;\n}> {\n\tconst { cwd, collections, baseUrl, isWatchMode, sitemapConfig } = options;\n\n\tconst discovery = await getOrDiscoverSitemapData(\n\t\tcwd,\n\t\tcollections,\n\t\tbaseUrl,\n\t\tisWatchMode,\n\t\tsitemapConfig,\n\t\toptions.cacheEnabled,\n\t);\n\n\tconst result = await generateSitemap(discovery, baseUrl, {\n\t\tchangefreq: sitemapConfig?.changefreq,\n\t\tpriority: sitemapConfig?.priority,\n\t\tmaxUrlsPerPage: sitemapConfig?.maxUrlsPerPage,\n\t\texcludeRoutes: sitemapConfig?.excludeRoutes,\n\t});\n\n\treturn {\n\t\txml: result.needsIndex\n\t\t\t? (result.indexXml ?? '')\n\t\t\t: (result.pages[0]?.xml ?? ''),\n\t\tpages: result.pages,\n\t\tneedsIndex: result.needsIndex,\n\t};\n}\n\nexport function registerSitemapRoutes(\n\tapp: Elysia,\n\toptions: SitemapRouteOptions,\n): Elysia {\n\tconst { maxAge, sitemapCache } = options;\n\tconst ttlMs = toTTL(maxAge);\n\tconst cacheEnabled = options.cacheEnabled !== false;\n\n\t// Main sitemap route\n\tapp.get('/sitemap.xml', async () => {\n\t\ttry {\n\t\t\tif (cacheEnabled) {\n\t\t\t\tconst cached = sitemapCache.get('sitemap:main');\n\t\t\t\tif (cached) {\n\t\t\t\t\treturn xmlResponse(cached, { maxAge, cacheStatus: 'HIT' });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst result = await generateAndCacheSitemap(options, ttlMs);\n\n\t\t\tif (cacheEnabled) {\n\t\t\t\t// Cache pages if index mode\n\t\t\t\tif (result.needsIndex) {\n\t\t\t\t\tfor (const page of result.pages) {\n\t\t\t\t\t\tsitemapCache.set(`sitemap:${page.filename}`, page.xml);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Cache main\n\t\t\t\tsitemapCache.set('sitemap:main', result.xml);\n\t\t\t}\n\n\t\t\treturn xmlResponse(result.xml, { maxAge, cacheStatus: 'MISS' });\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to generate sitemap:', error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\t// Paginated sitemap routes\n\tapp.get('/sitemap-*', async ({ params }: Any) => {\n\t\tconst wildcardPath = params['*'] || '';\n\t\tconst pageMatch = wildcardPath.match(/^(\\d+)\\.xml$/);\n\n\t\tif (!pageMatch) {\n\t\t\tthrow new NotFoundError();\n\t\t}\n\n\t\tconst filename = `sitemap-${pageMatch[1]}.xml`;\n\t\tconst cacheKey = `sitemap:${filename}`;\n\n\t\ttry {\n\t\t\tif (cacheEnabled) {\n\t\t\t\tconst cached = sitemapCache.get(cacheKey);\n\t\t\t\tif (cached) {\n\t\t\t\t\treturn xmlResponse(cached, { maxAge, cacheStatus: 'HIT' });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst result = await generateAndCacheSitemap(options, ttlMs);\n\t\t\tconst pageData = result.pages.find((p) => p.filename === filename);\n\n\t\t\tif (!pageData) {\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\n\t\t\tif (cacheEnabled) {\n\t\t\t\tsitemapCache.set(cacheKey, pageData.xml);\n\t\t\t}\n\n\t\t\treturn xmlResponse(pageData.xml, { maxAge, cacheStatus: 'MISS' });\n\t\t} catch (error) {\n\t\t\tif (error instanceof NotFoundError) throw error;\n\t\t\tconsole.error('[reroute] Failed to generate paginated sitemap:', error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\treturn app;\n}\n",
|
|
99
|
-
"import { join } from 'node:path';\nimport { type Span, trace } from '@opentelemetry/api';\nimport type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport type { ReactElement } from 'react';\nimport {\n\tapplyLlmsDiscoveryHeaders,\n\tgzipIfAccepted,\n\ttype LLMsOptions,\n\tLRUCache,\n\ttype OGImageOptions,\n\ttype OGOptions,\n\trenderSSRDocument,\n\trenderSSRDocumentStream,\n} from 'reroute-js/core';\nimport { withParentSpan, withSpan } from 'reroute-js/telemetry/server';\nimport { resolveI18nForRequest } from '../libs/i18n';\nimport type { Any } from '../types';\n\n// CRITICAL: Add global handlers to prevent unhandled errors from crashing the server\n// These catch errors that escape all other error handling\nif (typeof process !== 'undefined') {\n\tprocess.on('unhandledRejection', (reason, _promise) => {\n\t\tconsole.error('[reroute] Unhandled Promise Rejection:', reason);\n\t\t// Don't exit - just log and continue\n\t});\n\n\tprocess.on('uncaughtException', (error) => {\n\t\tconsole.error('[reroute] Uncaught Exception:', error);\n\t\t// Don't exit for recoverable errors - just log\n\t\t// The server will continue running\n\t});\n}\n\n// Helper to check if OpenTelemetry is available\nlet otelAvailable: boolean | undefined;\n\nfunction isOtelAvailable(): boolean {\n\tif (otelAvailable !== undefined) return otelAvailable;\n\n\ttry {\n\t\t// Check if @opentelemetry/api is available\n\t\trequire('@opentelemetry/api');\n\t\totelAvailable = true;\n\t\treturn true;\n\t} catch {\n\t\totelAvailable = false;\n\t\treturn false;\n\t}\n}\n\nasync function applyI18nForSSR(\n\tcwd: string,\n\tpathname: string,\n\theaders: Record<string, string>,\n\tset: Any,\n\tfallbackLang: string,\n\tsearch = '',\n): Promise<{\n\tredirect?: Response;\n\thydration?: Record<string, unknown>;\n\teffectiveLang: string;\n}> {\n\tconst i18nResult = await resolveI18nForRequest(\n\t\tcwd,\n\t\tpathname,\n\t\theaders,\n\t\tundefined,\n\t\tsearch,\n\t);\n\tconst current = `${pathname}${search}`;\n\tif (i18nResult.redirectTo && i18nResult.redirectTo !== current) {\n\t\tconst redirectHeaders: Record<string, string> = {\n\t\t\tLocation: i18nResult.redirectTo,\n\t\t};\n\t\tif (i18nResult.setCookie) {\n\t\t\tredirectHeaders['Set-Cookie'] = i18nResult.setCookie;\n\t\t}\n\t\treturn {\n\t\t\tredirect: new Response(null, { status: 302, headers: redirectHeaders }),\n\t\t\teffectiveLang: fallbackLang,\n\t\t};\n\t}\n\tif (i18nResult.setCookie) {\n\t\tset.headers['set-cookie'] = i18nResult.setCookie;\n\t}\n\treturn {\n\t\thydration: i18nResult.enabled ? i18nResult.hydration : undefined,\n\t\teffectiveLang: i18nResult.enabled ? i18nResult.locale : fallbackLang,\n\t};\n}\n\ntype SSRRouteOptions = {\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tgetBundleUrl: () => Promise<string>;\n\tgetCollections: () => Promise<Record<string, unknown[]>>;\n\tgetThemeCSS: () => Promise<string>;\n\tgetIndexHtml: () => Promise<string>;\n\tdebug?: boolean;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\tserverCacheEnabled?: boolean;\n\tserverMaxAge?: number;\n\tbrowserCacheEnabled?: boolean;\n\tbrowserMaxAge?: number;\n\tbrowserDirective?: string;\n\tcompression?: boolean;\n\tstreamingEnabled?: boolean;\n\tstreamingTimeout?: number;\n\togConfig?: OGImageOptions;\n\togMetaConfig?: OGOptions;\n\tbaseUrl?: string;\n\tautoCanonical?: boolean;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n\t/** When set, HTML responses advertise the markdown twin */\n\tllmsConfig?: LLMsOptions;\n};\n\nfunction registerSSRRoutes(app: Elysia, options: SSRRouteOptions): Elysia {\n\tconst {\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tgetBundleUrl,\n\t\tgetCollections,\n\t\tgetThemeCSS,\n\t\tgetIndexHtml,\n\t\tdebug = false,\n\t\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tserverCacheEnabled = true,\n\t\tserverMaxAge = 3600,\n\t\tbrowserCacheEnabled = true,\n\t\tbrowserMaxAge = 300,\n\t\tbrowserDirective = 'public',\n\t\tcompression = true,\n\t\tstreamingEnabled = false,\n\t} = options;\n\n\t// Helper to add Cache-Control header only when browser caching is enabled\n\tconst addCacheControl = (\n\t\theaders: Record<string, string>,\n\t\tcacheControl: string | undefined,\n\t): Record<string, string> => {\n\t\tif (cacheControl) {\n\t\t\theaders['Cache-Control'] = cacheControl;\n\t\t}\n\t\treturn headers;\n\t};\n\n\tconst attachHtmlHeaders = (\n\t\theaders: Record<string, string>,\n\t\tpathname: string,\n\t\tstatus: number,\n\t\tlink?: string,\n\t) => {\n\t\tif (link && !headers.Link && !headers.link) {\n\t\t\theaders.Link = link;\n\t\t}\n\t\tapplyLlmsDiscoveryHeaders(headers, pathname, options.llmsConfig, status);\n\t};\n\n\t// Server-side cache TTL\n\t// If server cache is disabled or maxAge is 0, don't cache\n\tconst SSR_HTML_TTL_MS =\n\t\tserverCacheEnabled && serverMaxAge > 0 ? serverMaxAge * 1000 : 0;\n\tconst htmlCache = new LRUCache<\n\t\tstring,\n\t\t{\n\t\t\tstatus: number;\n\t\t\theaders: Record<string, string>;\n\t\t\tbody: BodyInit;\n\t\t\texp: number;\n\t\t}\n\t>(200);\n\tconst makeKey = (\n\t\tpathname: string,\n\t\tsearchParams: URLSearchParams | undefined,\n\t\tacceptEncoding: string | undefined,\n\t) => {\n\t\tconst queryString = searchParams?.toString();\n\t\tconst fullPath = queryString ? `${pathname}?${queryString}` : pathname;\n\t\treturn `${fullPath}::${acceptEncoding || 'identity'}`;\n\t};\n\n\t// Load routes from manifest.json\n\tlet staticRoutes: string[] = [];\n\tlet contentRoutes: string[] = [];\n\tlet dynamicRoutes: string[] = [];\n\ttry {\n\t\tconst manifestPath = join(cwd, '.reroute', 'manifest.json');\n\t\tconst { readFileSync } = require('node:fs');\n\t\tconst manifestText = readFileSync(manifestPath, 'utf-8');\n\t\tconst manifest = JSON.parse(manifestText);\n\t\tstaticRoutes = manifest.staticRoutes || [];\n\t\tcontentRoutes = manifest.contentRoutes || [];\n\t\tdynamicRoutes = manifest.dynamicRoutes || [];\n\t} catch {\n\t\t// Manifest not found, fallback to root only\n\t\tstaticRoutes = ['/'];\n\t}\n\n\t// Shared SSR handler function\n\n\t// Static file extensions that should never be SSR-rendered\n\t// If these paths don't match a static route, they should 404\n\tconst staticFileExtensions =\n\t\t/\\.(jpe?g|png|gif|webp|avif|svg|ico|bmp|tiff?|woff2?|ttf|otf|eot|mp[34]|wav|ogg|webm|avi|mov|pdf|zip|tar|gz|rar|map)$/i;\n\n\tconst handleSSR = async ({\n\t\trequest,\n\t\tset,\n\t\tstore,\n\t}: {\n\t\trequest: Request;\n\t\tset: Any;\n\t\tstore: Any;\n\t}) => {\n\t\tconst t0 = performance.now();\n\t\tconst method = request.method || 'GET';\n\t\tif (method !== 'GET') throw new NotFoundError();\n\n\t\tconst url = new URL(request.url);\n\t\tconst pathname = url.pathname;\n\n\t\t// Reject requests for static file extensions that weren't caught by earlier routes\n\t\t// These should 404, not return an HTML page with the JS bundle\n\t\tif (staticFileExtensions.test(pathname)) {\n\t\t\tthrow new NotFoundError();\n\t\t}\n\n\t\t// Only handle HTML requests (or Accept: */*)\n\t\tconst accept = request.headers.get('accept') || '';\n\t\t// Accept text/html, */* (any type), or missing Accept header\n\t\tif (accept && !/text\\/html|\\*\\/\\*/i.test(String(accept))) {\n\t\t\tthrow new NotFoundError();\n\t\t}\n\n\t\tconst fullPath = pathname;\n\t\tconst searchParams = url.searchParams;\n\t\tconst acceptEncoding = request.headers.get('accept-encoding') || '';\n\n\t\t// Extract request headers for SSR data functions\n\t\tconst headers: Record<string, string> = {};\n\t\trequest.headers.forEach((value, key) => {\n\t\t\theaders[key.toLowerCase()] = value;\n\t\t});\n\n\t\tconst i18n = await applyI18nForSSR(\n\t\t\tcwd,\n\t\t\tpathname,\n\t\t\theaders,\n\t\t\tset,\n\t\t\tlang,\n\t\t\turl.search,\n\t\t);\n\t\tif (i18n.redirect) return i18n.redirect;\n\n\t\t// Execute SSR operations within parent span context\n\t\tconst parentSpan = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t| Span\n\t\t\t| undefined;\n\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: SSR request handling involves many scenarios - streaming, caching, compression, and error handling\n\t\treturn withParentSpan(parentSpan, async () => {\n\t\t\t// Serve cached HTML if fresh (skip cache in watch mode)\n\t\t\t// For streaming mode, we track whether this is first or subsequent request\n\t\t\tlet isFirstStreamingRequest = false;\n\t\t\tif (!isWatchMode && SSR_HTML_TTL_MS > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tconst ck = makeKey(pathname, searchParams, acceptEncoding);\n\t\t\t\t\tconst cached = htmlCache.get(ck);\n\t\t\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\t\t\tif (isOtelAvailable()) {\n\t\t\t\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\t\t\t\tcurrentSpan?.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.cache.hit': true,\n\t\t\t\t\t\t\t\t'reroute.cache.key': ck,\n\t\t\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tset.status = cached.status;\n\t\t\t\t\t\tObject.assign(set.headers, cached.headers);\n\t\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\t\tset.headers as Record<string, string>,\n\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\tcached.status,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tset.headers['Reroute-Cache'] = 'HIT';\n\t\t\t\t\t\treturn new Response(cached.body);\n\t\t\t\t\t}\n\n\t\t\t\t\t// For streaming mode: check if uncompressed version is cached\n\t\t\t\t\t// This helps us determine if it's the first request (no cache) or subsequent (has uncompressed cache)\n\t\t\t\t\tif (streamingEnabled && acceptEncoding) {\n\t\t\t\t\t\tconst uncompressedKey = makeKey(pathname, searchParams, 'identity');\n\t\t\t\t\t\tconst uncompressedCached = htmlCache.get(uncompressedKey);\n\t\t\t\t\t\tisFirstStreamingRequest =\n\t\t\t\t\t\t\t!uncompressedCached || uncompressedCached.exp <= Date.now();\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\n\t\t\tconst bundleUrl = await withSpan('ssr.get.bundle', async (span) => {\n\t\t\t\tspan.setAttribute('reroute.pathname', pathname);\n\t\t\t\tconst url = await getBundleUrl();\n\t\t\t\tif (debug)\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[SSR] ${pathname} - bundleUrl: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t);\n\t\t\t\treturn url;\n\t\t\t});\n\n\t\t\t// Get cached collections, CSS, and template (instant in prod, reload in dev)\n\t\t\tconst { cachedCollections, cachedThemeCSS, cachedIndexHtml } =\n\t\t\t\tawait withSpan('ssr.load.cache', async (span) => {\n\t\t\t\t\tconst collections = await getCollections();\n\t\t\t\t\tconst themeCSS = await getThemeCSS();\n\t\t\t\t\tconst indexHtml = await getIndexHtml();\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t'reroute.collections.exists': !!collections,\n\t\t\t\t\t\t'reroute.collections.count': Object.keys(collections).length,\n\t\t\t\t\t});\n\t\t\t\t\tif (debug)\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[SSR] ${pathname} - cached setup: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcachedCollections: collections,\n\t\t\t\t\t\tcachedThemeCSS: themeCSS,\n\t\t\t\t\t\tcachedIndexHtml: indexHtml,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t// Compose Early Hints (103) and Link header for main bundle\n\t\t\ttry {\n\t\t\t\tconst linkValue = `<${bundleUrl}>; rel=modulepreload; as=script`;\n\t\t\t\ttry {\n\t\t\t\t\tconst hints = new Headers({ Link: linkValue });\n\t\t\t\t\t(request as Any)?.sendEarlyHints?.(hints);\n\t\t\t\t} catch {}\n\t\t\t\tset.headers.link = set.headers.link\n\t\t\t\t\t? `${set.headers.link}, ${linkValue}`\n\t\t\t\t\t: linkValue;\n\t\t\t} catch {}\n\n\t\t\t// Build Cache-Control header for browser responses\n\t\t\t// - Watch mode: always no-cache to ensure fresh content during development\n\t\t\t// - Browser cache disabled: no Cache-Control header (let CDN handle it)\n\t\t\t// - Browser cache enabled: use configured maxAge and directive\n\t\t\tconst cacheControlHeader = isWatchMode\n\t\t\t\t? 'no-cache, no-store, must-revalidate'\n\t\t\t\t: browserCacheEnabled\n\t\t\t\t\t? `${browserDirective}, max-age=${browserMaxAge}`\n\t\t\t\t\t: undefined;\n\n\t\t\tlet response: Response;\n\n\t\t\tif (streamingEnabled) {\n\t\t\t\t// Streaming SSR path\n\t\t\t\tif (debug)\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[SSR] ${pathname} - starting stream: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t);\n\n\t\t\t\tconst { stream, status } = await withSpan(\n\t\t\t\t\t'ssr.document.render',\n\t\t\t\t\tasync (renderSpan) => {\n\t\t\t\t\t\trenderSpan?.setAttributes({\n\t\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t\t'reroute.cache.hit': false,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst result = await renderSSRDocumentStream({\n\t\t\t\t\t\t\tpathname: fullPath,\n\t\t\t\t\t\t\trootComponent,\n\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\tbundleUrl,\n\t\t\t\t\t\t\tcachedCollections,\n\t\t\t\t\t\t\tcachedThemeCSS,\n\t\t\t\t\t\t\tcachedIndexHtml,\n\t\t\t\t\t\t\tdebug,\n\t\t\t\t\t\t\thead,\n\t\t\t\t\t\t\tlang: i18n.effectiveLang,\n\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\tmaxAge: isWatchMode ? 0 : serverMaxAge,\n\t\t\t\t\t\t\tsearchParams,\n\t\t\t\t\t\t\togConfig: options.ogConfig,\n\t\t\t\t\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\t\t\t\t\tbaseUrl: options.baseUrl,\n\t\t\t\t\t\t\tautoCanonical: options.autoCanonical,\n\t\t\t\t\t\t\tparentSpan: renderSpan,\n\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\ttimeout: options.streamingTimeout,\n\t\t\t\t\t\t\ttitleSuffix: options.titleSuffix,\n\t\t\t\t\t\t\ti18n: i18n.hydration,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\trenderSpan?.setAttribute(\n\t\t\t\t\t\t\t'http.response.status_code',\n\t\t\t\t\t\t\tresult.status,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`[SSR] ${pathname} - render completed: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\t// Determine if we should compress this streaming response\n\t\t\t\t// - First request: No compression (fast TTFB)\n\t\t\t\t// - Subsequent requests: Compress and cache (better transfer size)\n\t\t\t\tconst shouldCompressStream =\n\t\t\t\t\tcompression && acceptEncoding && !isFirstStreamingRequest;\n\n\t\t\t\tif (debug)\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[SSR] ${pathname} - before compression check: ${(performance.now() - t0).toFixed(2)}ms, compression=${compression}, acceptEncoding=${!!acceptEncoding}, isFirstRequest=${isFirstStreamingRequest}, shouldCompress=${shouldCompressStream}`,\n\t\t\t\t\t);\n\n\t\t\t\t// When compression is enabled and not first request, buffer and compress the stream\n\t\t\t\tif (shouldCompressStream) {\n\t\t\t\t\t// Buffer all chunks with instrumentation\n\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Stream buffering with chunking\n\t\t\t\t\tconst fullHtml = await withSpan('ssr.buffer.stream', async (span) => {\n\t\t\t\t\t\tconst chunks: Uint8Array[] = [];\n\t\t\t\t\t\tconst reader = stream.getReader();\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\t\t\t\tif (done) break;\n\t\t\t\t\t\t\t\tchunks.push(new Uint8Array(value));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\treader.releaseLock();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Combine chunks into single buffer\n\t\t\t\t\t\tconst totalLength = chunks.reduce((sum, c) => sum + c.length, 0);\n\t\t\t\t\t\tconst buffer = new Uint8Array(totalLength);\n\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\tfor (const chunk of chunks) {\n\t\t\t\t\t\t\tbuffer.set(chunk, offset);\n\t\t\t\t\t\t\toffset += chunk.length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'reroute.stream.chunks': chunks.length,\n\t\t\t\t\t\t\t'reroute.stream.bytes': totalLength,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn buffer;\n\t\t\t\t\t});\n\n\t\t\t\t\t// Compress the buffered HTML\n\t\t\t\t\tconst { body, extraHeaders } = await withSpan(\n\t\t\t\t\t\t'ssr.compress',\n\t\t\t\t\t\tasync (span) => {\n\t\t\t\t\t\t\tconst result = gzipIfAccepted(\n\t\t\t\t\t\t\t\tfullHtml,\n\t\t\t\t\t\t\t\t'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\tacceptEncoding,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.size.original': fullHtml.length,\n\t\t\t\t\t\t\t\t'reroute.size.compressed': (result.body as Uint8Array).length,\n\t\t\t\t\t\t\t\t'reroute.encoding':\n\t\t\t\t\t\t\t\t\tresult.extraHeaders['Content-Encoding'] || 'none',\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\t// Cache if needed\n\t\t\t\t\tif (!isWatchMode && SSR_HTML_TTL_MS > 0 && status === 200) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst ck = makeKey(pathname, searchParams, acceptEncoding);\n\t\t\t\t\t\t\tconst cacheHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taddCacheControl(cacheHeaders, cacheControlHeader);\n\t\t\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\t\t\tcacheHeaders,\n\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\theaders: cacheHeaders,\n\t\t\t\t\t\t\t\tbody: body as BodyInit,\n\t\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst resHeaders: Record<string, string> = {\n\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t};\n\t\t\t\t\taddCacheControl(resHeaders, cacheControlHeader);\n\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\tresHeaders,\n\t\t\t\t\t\tpathname,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t\t);\n\n\t\t\t\t\tset.status = status;\n\n\t\t\t\t\tresponse = new Response(body as BodyInit, {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// No compression - stream with caching if enabled\n\t\t\t\t\tconst shouldCache =\n\t\t\t\t\t\t!isWatchMode && SSR_HTML_TTL_MS > 0 && status === 200;\n\n\t\t\t\t\tif (debug)\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[SSR] ${pathname} - no compression path, shouldCache=${shouldCache}`,\n\t\t\t\t\t\t);\n\n\t\t\t\t\tif (shouldCache) {\n\t\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response creation with transform stream caching\n\t\t\t\t\t\tresponse = await withSpan('ssr.create.response', async (span) => {\n\t\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t`[SSR] ${pathname} - creating caching stream: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t// Cache the stream as it passes through\n\t\t\t\t\t\t\tconst chunks: Uint8Array[] = [];\n\t\t\t\t\t\t\tconst cachingStream = stream.pipeThrough(\n\t\t\t\t\t\t\t\tnew TransformStream({\n\t\t\t\t\t\t\t\t\ttransform(chunk, controller) {\n\t\t\t\t\t\t\t\t\t\tchunks.push(new Uint8Array(chunk));\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Flush callback handles caching and error recovery for streaming\n\t\t\t\t\t\t\t\t\tflush() {\n\t\t\t\t\t\t\t\t\t\t// Cache the complete HTML after streaming finishes\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tconst totalLength = chunks.reduce(\n\t\t\t\t\t\t\t\t\t\t\t\t(sum, c) => sum + c.length,\n\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tconst fullHtml = new Uint8Array(totalLength);\n\t\t\t\t\t\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\t\t\t\t\t\tfor (const chunk of chunks) {\n\t\t\t\t\t\t\t\t\t\t\t\tfullHtml.set(chunk, offset);\n\t\t\t\t\t\t\t\t\t\t\t\toffset += chunk.length;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// Cache as uncompressed with 'identity' encoding\n\t\t\t\t\t\t\t\t\t\t\t// This allows subsequent requests to detect it's cached and use compression\n\t\t\t\t\t\t\t\t\t\t\tconst ck = makeKey(pathname, searchParams, 'identity');\n\t\t\t\t\t\t\t\t\t\t\tconst cacheHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\taddCacheControl(cacheHeaders, cacheControlHeader);\n\t\t\t\t\t\t\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\t\t\t\t\t\t\tcacheHeaders,\n\t\t\t\t\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\t\t\t\t\theaders: cacheHeaders,\n\t\t\t\t\t\t\t\t\t\t\t\tbody: fullHtml,\n\t\t\t\t\t\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.error('[reroute] Failed to cache stream:', e);\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}),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tset.status = status;\n\n\t\t\t\t\t\t\tconst tBeforeResponse = debug ? performance.now() : 0;\n\t\t\t\t\t\t\tconst resHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taddCacheControl(resHeaders, cacheControlHeader);\n\t\t\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\t\t\tresHeaders,\n\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst res = new Response(cachingStream, {\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t`[SSR] ${pathname} - Response created (cached stream): ${(performance.now() - t0).toFixed(2)}ms (creation: ${(performance.now() - tBeforeResponse).toFixed(2)}ms)`,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tspan.setAttribute('reroute.cached', true);\n\t\t\t\t\t\t\treturn res;\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No caching - return stream directly\n\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`[SSR] ${pathname} - creating direct stream response: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\tset.status = status;\n\n\t\t\t\t\t\tconst streamHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\t};\n\t\t\t\t\t\taddCacheControl(streamHeaders, cacheControlHeader);\n\t\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\t\tstreamHeaders,\n\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponse = new Response(stream, {\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\theaders: streamHeaders,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`[SSR] ${pathname} - Response created (direct stream): ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Non-streaming SSR path\n\t\t\t\tlet html: string;\n\t\t\t\tlet status: number;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await withSpan(\n\t\t\t\t\t\t'ssr.render.sync',\n\t\t\t\t\t\tasync (renderSpan) => {\n\t\t\t\t\t\t\trenderSpan?.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t\t\t'reroute.cache.hit': false,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tconst renderResult = await renderSSRDocument({\n\t\t\t\t\t\t\t\tpathname: fullPath,\n\t\t\t\t\t\t\t\trootComponent,\n\t\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\t\tbundleUrl,\n\t\t\t\t\t\t\t\thead,\n\t\t\t\t\t\t\t\tlang: i18n.effectiveLang,\n\t\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\t\tmaxAge: isWatchMode ? 0 : serverMaxAge,\n\t\t\t\t\t\t\t\tsearchParams,\n\t\t\t\t\t\t\t\togConfig: options.ogConfig,\n\t\t\t\t\t\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\t\t\t\t\t\tbaseUrl: options.baseUrl,\n\t\t\t\t\t\t\t\tautoCanonical: options.autoCanonical,\n\t\t\t\t\t\t\t\tparentSpan: renderSpan, // Pass the ssr.render.sync span as parent\n\t\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\t\ttitleSuffix: options.titleSuffix,\n\t\t\t\t\t\t\t\ti18n: i18n.hydration,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\trenderSpan?.setAttribute(\n\t\t\t\t\t\t\t\t'http.response.status_code',\n\t\t\t\t\t\t\t\trenderResult.status,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn renderResult;\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\thtml = result.html;\n\t\t\t\t\tstatus = result.status;\n\t\t\t\t} catch (ssrError) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[reroute] SSR rendering failed, returning error page:',\n\t\t\t\t\t\tssrError,\n\t\t\t\t\t);\n\t\t\t\t\tset.status = 500; // Ensure telemetry captures 500 status\n\t\t\t\t\tconst errorHtml = `<!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>Error</title>\n <style>\n body { font-family: system-ui, sans-serif; padding: 2rem; background: #111; color: #fff; }\n h1 { color: #f87171; }\n pre { background: #222; padding: 1rem; border-radius: 0.5rem; overflow: auto; }\n </style>\n</head>\n<body>\n <h1>Server Error</h1>\n <p>An error occurred while rendering this page.</p>\n ${isWatchMode ? `<pre>${ssrError instanceof Error ? ssrError.stack : String(ssrError)}</pre>` : ''}\n <script type=\"module\" src=\"${bundleUrl}\"></script>\n</body>\n</html>`;\n\t\t\t\t\treturn new Response(errorHtml, {\n\t\t\t\t\t\tstatus: 500,\n\t\t\t\t\t\theaders: { 'Content-Type': 'text/html; charset=utf-8' },\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Apply compression if enabled\n\t\t\t\tconst { body, extraHeaders } = compression\n\t\t\t\t\t? await withSpan('ssr.compress', async (span) => {\n\t\t\t\t\t\t\tconst result = gzipIfAccepted(\n\t\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\t\t'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\tacceptEncoding,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.size.original': html.length,\n\t\t\t\t\t\t\t\t'reroute.size.compressed':\n\t\t\t\t\t\t\t\t\ttypeof result.body === 'string'\n\t\t\t\t\t\t\t\t\t\t? result.body.length\n\t\t\t\t\t\t\t\t\t\t: (result.body as Uint8Array).length,\n\t\t\t\t\t\t\t\t'reroute.encoding':\n\t\t\t\t\t\t\t\t\tresult.extraHeaders['Content-Encoding'] || 'none',\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t})\n\t\t\t\t\t: { body: html, extraHeaders: {} };\n\n\t\t\t\tconst resHeaders: Record<string, string> = {\n\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t...extraHeaders,\n\t\t\t\t};\n\t\t\t\taddCacheControl(resHeaders, cacheControlHeader);\n\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\tresHeaders,\n\t\t\t\t\tpathname,\n\t\t\t\t\tstatus,\n\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t);\n\n\t\t\t\tset.status = status;\n\n\t\t\t\tresponse = new Response(body as BodyInit, {\n\t\t\t\t\tstatus,\n\t\t\t\t\theaders: resHeaders,\n\t\t\t\t});\n\n\t\t\t\t// Cache the HTML if successful and cacheable\n\t\t\t\tif (\n\t\t\t\t\t!isWatchMode &&\n\t\t\t\t\tSSR_HTML_TTL_MS > 0 &&\n\t\t\t\t\tstatus >= 200 &&\n\t\t\t\t\tstatus < 300\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst ck = makeKey(pathname, searchParams, acceptEncoding);\n\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t\t\tbody: body as BodyInit,\n\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst tBeforeReturn = debug ? performance.now() : 0;\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[SSR] ${pathname} - about to return response: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\t\t\tconst returnValue = response;\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[SSR] ${pathname} - response returned: ${(performance.now() - t0).toFixed(2)}ms (return overhead: ${(performance.now() - tBeforeReturn).toFixed(2)}ms)`,\n\t\t\t\t);\n\t\t\treturn returnValue;\n\t\t});\n\t};\n\n\t// Register all routes from manifest\n\tconst allRoutes = [...staticRoutes, ...contentRoutes, ...dynamicRoutes];\n\tfor (const path of allRoutes) {\n\t\tapp.get(path, handleSSR);\n\t}\n\n\t// Register a catch-all route to handle 404s with custom not found pages\n\t// This must come after all other routes\n\tapp.get('*', handleSSR);\n\n\treturn app;\n}\n\nexport { registerSSRRoutes };\n",
|
|
100
|
+
"import { join } from 'node:path';\nimport { type Span, trace } from '@opentelemetry/api';\nimport type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport type { ReactElement } from 'react';\nimport {\n\tapplyLlmsDiscoveryHeaders,\n\tgzipIfAccepted,\n\ttype LLMsOptions,\n\tLRUCache,\n\ttype OGImageOptions,\n\ttype OGOptions,\n\trenderSSRDocument,\n\trenderSSRDocumentStream,\n} from 'reroute-js/core';\nimport { withParentSpan, withSpan } from 'reroute-js/telemetry/server';\nimport { resolveServerDataMaxAge } from '../libs/cache';\nimport { resolveI18nForRequest } from '../libs/i18n';\nimport type { Any } from '../types';\n\n// CRITICAL: Add global handlers to prevent unhandled errors from crashing the server\n// These catch errors that escape all other error handling\nif (typeof process !== 'undefined') {\n\tprocess.on('unhandledRejection', (reason, _promise) => {\n\t\tconsole.error('[reroute] Unhandled Promise Rejection:', reason);\n\t\t// Don't exit - just log and continue\n\t});\n\n\tprocess.on('uncaughtException', (error) => {\n\t\tconsole.error('[reroute] Uncaught Exception:', error);\n\t\t// Don't exit for recoverable errors - just log\n\t\t// The server will continue running\n\t});\n}\n\n// Helper to check if OpenTelemetry is available\nlet otelAvailable: boolean | undefined;\n\nfunction isOtelAvailable(): boolean {\n\tif (otelAvailable !== undefined) return otelAvailable;\n\n\ttry {\n\t\t// Check if @opentelemetry/api is available\n\t\trequire('@opentelemetry/api');\n\t\totelAvailable = true;\n\t\treturn true;\n\t} catch {\n\t\totelAvailable = false;\n\t\treturn false;\n\t}\n}\n\nasync function applyI18nForSSR(\n\tcwd: string,\n\tpathname: string,\n\theaders: Record<string, string>,\n\tset: Any,\n\tfallbackLang: string,\n\tsearch = '',\n): Promise<{\n\tredirect?: Response;\n\thydration?: Record<string, unknown>;\n\teffectiveLang: string;\n}> {\n\tconst i18nResult = await resolveI18nForRequest(\n\t\tcwd,\n\t\tpathname,\n\t\theaders,\n\t\tundefined,\n\t\tsearch,\n\t);\n\tconst current = `${pathname}${search}`;\n\tif (i18nResult.redirectTo && i18nResult.redirectTo !== current) {\n\t\tconst redirectHeaders: Record<string, string> = {\n\t\t\tLocation: i18nResult.redirectTo,\n\t\t};\n\t\tif (i18nResult.setCookie) {\n\t\t\tredirectHeaders['Set-Cookie'] = i18nResult.setCookie;\n\t\t}\n\t\treturn {\n\t\t\tredirect: new Response(null, { status: 302, headers: redirectHeaders }),\n\t\t\teffectiveLang: fallbackLang,\n\t\t};\n\t}\n\tif (i18nResult.setCookie) {\n\t\tset.headers['set-cookie'] = i18nResult.setCookie;\n\t}\n\treturn {\n\t\thydration: i18nResult.enabled ? i18nResult.hydration : undefined,\n\t\teffectiveLang: i18nResult.enabled ? i18nResult.locale : fallbackLang,\n\t};\n}\n\ntype SSRRouteOptions = {\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tgetBundleUrl: () => Promise<string>;\n\tgetCollections: () => Promise<Record<string, unknown[]>>;\n\tgetThemeCSS: () => Promise<string>;\n\tgetIndexHtml: () => Promise<string>;\n\tdebug?: boolean;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\tserverCacheEnabled?: boolean;\n\tserverMaxAge?: number;\n\tbrowserCacheEnabled?: boolean;\n\tbrowserMaxAge?: number;\n\tbrowserDirective?: string;\n\tcompression?: boolean;\n\tstreamingEnabled?: boolean;\n\tstreamingTimeout?: number;\n\togConfig?: OGImageOptions;\n\togMetaConfig?: OGOptions;\n\tbaseUrl?: string;\n\tautoCanonical?: boolean;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n\t/** When set, HTML responses advertise the markdown twin */\n\tllmsConfig?: LLMsOptions;\n};\n\nfunction registerSSRRoutes(app: Elysia, options: SSRRouteOptions): Elysia {\n\tconst {\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tgetBundleUrl,\n\t\tgetCollections,\n\t\tgetThemeCSS,\n\t\tgetIndexHtml,\n\t\tdebug = false,\n\t\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tserverCacheEnabled = true,\n\t\tserverMaxAge = 3600,\n\t\tbrowserCacheEnabled = true,\n\t\tbrowserMaxAge = 300,\n\t\tbrowserDirective = 'public',\n\t\tcompression = true,\n\t\tstreamingEnabled = false,\n\t} = options;\n\n\t// Helper to add Cache-Control header only when browser caching is enabled\n\tconst addCacheControl = (\n\t\theaders: Record<string, string>,\n\t\tcacheControl: string | undefined,\n\t): Record<string, string> => {\n\t\tif (cacheControl) {\n\t\t\theaders['Cache-Control'] = cacheControl;\n\t\t}\n\t\treturn headers;\n\t};\n\n\tconst attachHtmlHeaders = (\n\t\theaders: Record<string, string>,\n\t\tpathname: string,\n\t\tstatus: number,\n\t\tlink?: string,\n\t) => {\n\t\tif (link && !headers.Link && !headers.link) {\n\t\t\theaders.Link = link;\n\t\t}\n\t\tapplyLlmsDiscoveryHeaders(headers, pathname, options.llmsConfig, status);\n\t};\n\n\t// Server-side cache TTL\n\t// If server cache is disabled or maxAge is 0, don't cache HTML or ssr.data()\n\tconst SSR_HTML_TTL_MS =\n\t\tserverCacheEnabled && serverMaxAge > 0 ? serverMaxAge * 1000 : 0;\n\tconst ssrDataMaxAge = isWatchMode\n\t\t? 0\n\t\t: resolveServerDataMaxAge(serverCacheEnabled, serverMaxAge);\n\tconst htmlCache = new LRUCache<\n\t\tstring,\n\t\t{\n\t\t\tstatus: number;\n\t\t\theaders: Record<string, string>;\n\t\t\tbody: BodyInit;\n\t\t\texp: number;\n\t\t}\n\t>(200);\n\tconst makeKey = (\n\t\tpathname: string,\n\t\tsearchParams: URLSearchParams | undefined,\n\t\tacceptEncoding: string | undefined,\n\t) => {\n\t\tconst queryString = searchParams?.toString();\n\t\tconst fullPath = queryString ? `${pathname}?${queryString}` : pathname;\n\t\treturn `${fullPath}::${acceptEncoding || 'identity'}`;\n\t};\n\n\t// Load routes from manifest.json\n\tlet staticRoutes: string[] = [];\n\tlet contentRoutes: string[] = [];\n\tlet dynamicRoutes: string[] = [];\n\ttry {\n\t\tconst manifestPath = join(cwd, '.reroute', 'manifest.json');\n\t\tconst { readFileSync } = require('node:fs');\n\t\tconst manifestText = readFileSync(manifestPath, 'utf-8');\n\t\tconst manifest = JSON.parse(manifestText);\n\t\tstaticRoutes = manifest.staticRoutes || [];\n\t\tcontentRoutes = manifest.contentRoutes || [];\n\t\tdynamicRoutes = manifest.dynamicRoutes || [];\n\t} catch {\n\t\t// Manifest not found, fallback to root only\n\t\tstaticRoutes = ['/'];\n\t}\n\n\t// Shared SSR handler function\n\n\t// Static file extensions that should never be SSR-rendered\n\t// If these paths don't match a static route, they should 404\n\tconst staticFileExtensions =\n\t\t/\\.(jpe?g|png|gif|webp|avif|svg|ico|bmp|tiff?|woff2?|ttf|otf|eot|mp[34]|wav|ogg|webm|avi|mov|pdf|zip|tar|gz|rar|map)$/i;\n\n\tconst handleSSR = async ({\n\t\trequest,\n\t\tset,\n\t\tstore,\n\t}: {\n\t\trequest: Request;\n\t\tset: Any;\n\t\tstore: Any;\n\t}) => {\n\t\tconst t0 = performance.now();\n\t\tconst method = request.method || 'GET';\n\t\tif (method !== 'GET') throw new NotFoundError();\n\n\t\tconst url = new URL(request.url);\n\t\tconst pathname = url.pathname;\n\n\t\t// Reject requests for static file extensions that weren't caught by earlier routes\n\t\t// These should 404, not return an HTML page with the JS bundle\n\t\tif (staticFileExtensions.test(pathname)) {\n\t\t\tthrow new NotFoundError();\n\t\t}\n\n\t\t// Only handle HTML requests (or Accept: */*)\n\t\tconst accept = request.headers.get('accept') || '';\n\t\t// Accept text/html, */* (any type), or missing Accept header\n\t\tif (accept && !/text\\/html|\\*\\/\\*/i.test(String(accept))) {\n\t\t\tthrow new NotFoundError();\n\t\t}\n\n\t\tconst fullPath = pathname;\n\t\tconst searchParams = url.searchParams;\n\t\tconst acceptEncoding = request.headers.get('accept-encoding') || '';\n\n\t\t// Extract request headers for SSR data functions\n\t\tconst headers: Record<string, string> = {};\n\t\trequest.headers.forEach((value, key) => {\n\t\t\theaders[key.toLowerCase()] = value;\n\t\t});\n\n\t\tconst i18n = await applyI18nForSSR(\n\t\t\tcwd,\n\t\t\tpathname,\n\t\t\theaders,\n\t\t\tset,\n\t\t\tlang,\n\t\t\turl.search,\n\t\t);\n\t\tif (i18n.redirect) return i18n.redirect;\n\n\t\t// Execute SSR operations within parent span context\n\t\tconst parentSpan = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t| Span\n\t\t\t| undefined;\n\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: SSR request handling involves many scenarios - streaming, caching, compression, and error handling\n\t\treturn withParentSpan(parentSpan, async () => {\n\t\t\t// Serve cached HTML if fresh (skip cache in watch mode)\n\t\t\t// For streaming mode, we track whether this is first or subsequent request\n\t\t\tlet isFirstStreamingRequest = false;\n\t\t\tif (!isWatchMode && SSR_HTML_TTL_MS > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tconst ck = makeKey(pathname, searchParams, acceptEncoding);\n\t\t\t\t\tconst cached = htmlCache.get(ck);\n\t\t\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\t\t\tif (isOtelAvailable()) {\n\t\t\t\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\t\t\t\tcurrentSpan?.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.cache.hit': true,\n\t\t\t\t\t\t\t\t'reroute.cache.key': ck,\n\t\t\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tset.status = cached.status;\n\t\t\t\t\t\tObject.assign(set.headers, cached.headers);\n\t\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\t\tset.headers as Record<string, string>,\n\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\tcached.status,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tset.headers['Reroute-Cache'] = 'HIT';\n\t\t\t\t\t\treturn new Response(cached.body);\n\t\t\t\t\t}\n\n\t\t\t\t\t// For streaming mode: check if uncompressed version is cached\n\t\t\t\t\t// This helps us determine if it's the first request (no cache) or subsequent (has uncompressed cache)\n\t\t\t\t\tif (streamingEnabled && acceptEncoding) {\n\t\t\t\t\t\tconst uncompressedKey = makeKey(pathname, searchParams, 'identity');\n\t\t\t\t\t\tconst uncompressedCached = htmlCache.get(uncompressedKey);\n\t\t\t\t\t\tisFirstStreamingRequest =\n\t\t\t\t\t\t\t!uncompressedCached || uncompressedCached.exp <= Date.now();\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\n\t\t\tconst bundleUrl = await withSpan('ssr.get.bundle', async (span) => {\n\t\t\t\tspan.setAttribute('reroute.pathname', pathname);\n\t\t\t\tconst url = await getBundleUrl();\n\t\t\t\tif (debug)\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[SSR] ${pathname} - bundleUrl: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t);\n\t\t\t\treturn url;\n\t\t\t});\n\n\t\t\t// Get cached collections, CSS, and template (instant in prod, reload in dev)\n\t\t\tconst { cachedCollections, cachedThemeCSS, cachedIndexHtml } =\n\t\t\t\tawait withSpan('ssr.load.cache', async (span) => {\n\t\t\t\t\tconst collections = await getCollections();\n\t\t\t\t\tconst themeCSS = await getThemeCSS();\n\t\t\t\t\tconst indexHtml = await getIndexHtml();\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t'reroute.collections.exists': !!collections,\n\t\t\t\t\t\t'reroute.collections.count': Object.keys(collections).length,\n\t\t\t\t\t});\n\t\t\t\t\tif (debug)\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[SSR] ${pathname} - cached setup: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcachedCollections: collections,\n\t\t\t\t\t\tcachedThemeCSS: themeCSS,\n\t\t\t\t\t\tcachedIndexHtml: indexHtml,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t// Compose Early Hints (103) and Link header for main bundle\n\t\t\ttry {\n\t\t\t\tconst linkValue = `<${bundleUrl}>; rel=modulepreload; as=script`;\n\t\t\t\ttry {\n\t\t\t\t\tconst hints = new Headers({ Link: linkValue });\n\t\t\t\t\t(request as Any)?.sendEarlyHints?.(hints);\n\t\t\t\t} catch {}\n\t\t\t\tset.headers.link = set.headers.link\n\t\t\t\t\t? `${set.headers.link}, ${linkValue}`\n\t\t\t\t\t: linkValue;\n\t\t\t} catch {}\n\n\t\t\t// Build Cache-Control header for browser responses\n\t\t\t// - Watch mode: always no-cache to ensure fresh content during development\n\t\t\t// - Browser cache disabled: no Cache-Control header (let CDN handle it)\n\t\t\t// - Browser cache enabled: use configured maxAge and directive\n\t\t\tconst cacheControlHeader = isWatchMode\n\t\t\t\t? 'no-cache, no-store, must-revalidate'\n\t\t\t\t: browserCacheEnabled\n\t\t\t\t\t? `${browserDirective}, max-age=${browserMaxAge}`\n\t\t\t\t\t: undefined;\n\n\t\t\tlet response: Response;\n\n\t\t\tif (streamingEnabled) {\n\t\t\t\t// Streaming SSR path\n\t\t\t\tif (debug)\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[SSR] ${pathname} - starting stream: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t);\n\n\t\t\t\tconst { stream, status } = await withSpan(\n\t\t\t\t\t'ssr.document.render',\n\t\t\t\t\tasync (renderSpan) => {\n\t\t\t\t\t\trenderSpan?.setAttributes({\n\t\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t\t'reroute.cache.hit': false,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst result = await renderSSRDocumentStream({\n\t\t\t\t\t\t\tpathname: fullPath,\n\t\t\t\t\t\t\trootComponent,\n\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\tbundleUrl,\n\t\t\t\t\t\t\tcachedCollections,\n\t\t\t\t\t\t\tcachedThemeCSS,\n\t\t\t\t\t\t\tcachedIndexHtml,\n\t\t\t\t\t\t\tdebug,\n\t\t\t\t\t\t\thead,\n\t\t\t\t\t\t\tlang: i18n.effectiveLang,\n\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\tmaxAge: ssrDataMaxAge,\n\t\t\t\t\t\t\tsearchParams,\n\t\t\t\t\t\t\togConfig: options.ogConfig,\n\t\t\t\t\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\t\t\t\t\tbaseUrl: options.baseUrl,\n\t\t\t\t\t\t\tautoCanonical: options.autoCanonical,\n\t\t\t\t\t\t\tparentSpan: renderSpan,\n\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\ttimeout: options.streamingTimeout,\n\t\t\t\t\t\t\ttitleSuffix: options.titleSuffix,\n\t\t\t\t\t\t\ti18n: i18n.hydration,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\trenderSpan?.setAttribute(\n\t\t\t\t\t\t\t'http.response.status_code',\n\t\t\t\t\t\t\tresult.status,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`[SSR] ${pathname} - render completed: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\t// Determine if we should compress this streaming response\n\t\t\t\t// - First request: No compression (fast TTFB)\n\t\t\t\t// - Subsequent requests: Compress and cache (better transfer size)\n\t\t\t\tconst shouldCompressStream =\n\t\t\t\t\tcompression && acceptEncoding && !isFirstStreamingRequest;\n\n\t\t\t\tif (debug)\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[SSR] ${pathname} - before compression check: ${(performance.now() - t0).toFixed(2)}ms, compression=${compression}, acceptEncoding=${!!acceptEncoding}, isFirstRequest=${isFirstStreamingRequest}, shouldCompress=${shouldCompressStream}`,\n\t\t\t\t\t);\n\n\t\t\t\t// When compression is enabled and not first request, buffer and compress the stream\n\t\t\t\tif (shouldCompressStream) {\n\t\t\t\t\t// Buffer all chunks with instrumentation\n\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Stream buffering with chunking\n\t\t\t\t\tconst fullHtml = await withSpan('ssr.buffer.stream', async (span) => {\n\t\t\t\t\t\tconst chunks: Uint8Array[] = [];\n\t\t\t\t\t\tconst reader = stream.getReader();\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\t\t\t\tif (done) break;\n\t\t\t\t\t\t\t\tchunks.push(new Uint8Array(value));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\treader.releaseLock();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Combine chunks into single buffer\n\t\t\t\t\t\tconst totalLength = chunks.reduce((sum, c) => sum + c.length, 0);\n\t\t\t\t\t\tconst buffer = new Uint8Array(totalLength);\n\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\tfor (const chunk of chunks) {\n\t\t\t\t\t\t\tbuffer.set(chunk, offset);\n\t\t\t\t\t\t\toffset += chunk.length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'reroute.stream.chunks': chunks.length,\n\t\t\t\t\t\t\t'reroute.stream.bytes': totalLength,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn buffer;\n\t\t\t\t\t});\n\n\t\t\t\t\t// Compress the buffered HTML\n\t\t\t\t\tconst { body, extraHeaders } = await withSpan(\n\t\t\t\t\t\t'ssr.compress',\n\t\t\t\t\t\tasync (span) => {\n\t\t\t\t\t\t\tconst result = gzipIfAccepted(\n\t\t\t\t\t\t\t\tfullHtml,\n\t\t\t\t\t\t\t\t'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\tacceptEncoding,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.size.original': fullHtml.length,\n\t\t\t\t\t\t\t\t'reroute.size.compressed': (result.body as Uint8Array).length,\n\t\t\t\t\t\t\t\t'reroute.encoding':\n\t\t\t\t\t\t\t\t\tresult.extraHeaders['Content-Encoding'] || 'none',\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\t// Cache if needed\n\t\t\t\t\tif (!isWatchMode && SSR_HTML_TTL_MS > 0 && status === 200) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst ck = makeKey(pathname, searchParams, acceptEncoding);\n\t\t\t\t\t\t\tconst cacheHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taddCacheControl(cacheHeaders, cacheControlHeader);\n\t\t\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\t\t\tcacheHeaders,\n\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\theaders: cacheHeaders,\n\t\t\t\t\t\t\t\tbody: body as BodyInit,\n\t\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst resHeaders: Record<string, string> = {\n\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t};\n\t\t\t\t\taddCacheControl(resHeaders, cacheControlHeader);\n\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\tresHeaders,\n\t\t\t\t\t\tpathname,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t\t);\n\n\t\t\t\t\tset.status = status;\n\n\t\t\t\t\tresponse = new Response(body as BodyInit, {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// No compression - stream with caching if enabled\n\t\t\t\t\tconst shouldCache =\n\t\t\t\t\t\t!isWatchMode && SSR_HTML_TTL_MS > 0 && status === 200;\n\n\t\t\t\t\tif (debug)\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[SSR] ${pathname} - no compression path, shouldCache=${shouldCache}`,\n\t\t\t\t\t\t);\n\n\t\t\t\t\tif (shouldCache) {\n\t\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response creation with transform stream caching\n\t\t\t\t\t\tresponse = await withSpan('ssr.create.response', async (span) => {\n\t\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t`[SSR] ${pathname} - creating caching stream: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t// Cache the stream as it passes through\n\t\t\t\t\t\t\tconst chunks: Uint8Array[] = [];\n\t\t\t\t\t\t\tconst cachingStream = stream.pipeThrough(\n\t\t\t\t\t\t\t\tnew TransformStream({\n\t\t\t\t\t\t\t\t\ttransform(chunk, controller) {\n\t\t\t\t\t\t\t\t\t\tchunks.push(new Uint8Array(chunk));\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Flush callback handles caching and error recovery for streaming\n\t\t\t\t\t\t\t\t\tflush() {\n\t\t\t\t\t\t\t\t\t\t// Cache the complete HTML after streaming finishes\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tconst totalLength = chunks.reduce(\n\t\t\t\t\t\t\t\t\t\t\t\t(sum, c) => sum + c.length,\n\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tconst fullHtml = new Uint8Array(totalLength);\n\t\t\t\t\t\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\t\t\t\t\t\tfor (const chunk of chunks) {\n\t\t\t\t\t\t\t\t\t\t\t\tfullHtml.set(chunk, offset);\n\t\t\t\t\t\t\t\t\t\t\t\toffset += chunk.length;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// Cache as uncompressed with 'identity' encoding\n\t\t\t\t\t\t\t\t\t\t\t// This allows subsequent requests to detect it's cached and use compression\n\t\t\t\t\t\t\t\t\t\t\tconst ck = makeKey(pathname, searchParams, 'identity');\n\t\t\t\t\t\t\t\t\t\t\tconst cacheHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\taddCacheControl(cacheHeaders, cacheControlHeader);\n\t\t\t\t\t\t\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\t\t\t\t\t\t\tcacheHeaders,\n\t\t\t\t\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\t\t\t\t\theaders: cacheHeaders,\n\t\t\t\t\t\t\t\t\t\t\t\tbody: fullHtml,\n\t\t\t\t\t\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.error('[reroute] Failed to cache stream:', e);\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}),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tset.status = status;\n\n\t\t\t\t\t\t\tconst tBeforeResponse = debug ? performance.now() : 0;\n\t\t\t\t\t\t\tconst resHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taddCacheControl(resHeaders, cacheControlHeader);\n\t\t\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\t\t\tresHeaders,\n\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst res = new Response(cachingStream, {\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t`[SSR] ${pathname} - Response created (cached stream): ${(performance.now() - t0).toFixed(2)}ms (creation: ${(performance.now() - tBeforeResponse).toFixed(2)}ms)`,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tspan.setAttribute('reroute.cached', true);\n\t\t\t\t\t\t\treturn res;\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No caching - return stream directly\n\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`[SSR] ${pathname} - creating direct stream response: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\tset.status = status;\n\n\t\t\t\t\t\tconst streamHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\t};\n\t\t\t\t\t\taddCacheControl(streamHeaders, cacheControlHeader);\n\t\t\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\t\t\tstreamHeaders,\n\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponse = new Response(stream, {\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\theaders: streamHeaders,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`[SSR] ${pathname} - Response created (direct stream): ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Non-streaming SSR path\n\t\t\t\tlet html: string;\n\t\t\t\tlet status: number;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await withSpan(\n\t\t\t\t\t\t'ssr.render.sync',\n\t\t\t\t\t\tasync (renderSpan) => {\n\t\t\t\t\t\t\trenderSpan?.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t\t\t'reroute.cache.hit': false,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tconst renderResult = await renderSSRDocument({\n\t\t\t\t\t\t\t\tpathname: fullPath,\n\t\t\t\t\t\t\t\trootComponent,\n\t\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\t\tbundleUrl,\n\t\t\t\t\t\t\t\thead,\n\t\t\t\t\t\t\t\tlang: i18n.effectiveLang,\n\t\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\t\tmaxAge: ssrDataMaxAge,\n\t\t\t\t\t\t\t\tsearchParams,\n\t\t\t\t\t\t\t\togConfig: options.ogConfig,\n\t\t\t\t\t\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\t\t\t\t\t\tbaseUrl: options.baseUrl,\n\t\t\t\t\t\t\t\tautoCanonical: options.autoCanonical,\n\t\t\t\t\t\t\t\tparentSpan: renderSpan, // Pass the ssr.render.sync span as parent\n\t\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\t\ttitleSuffix: options.titleSuffix,\n\t\t\t\t\t\t\t\ti18n: i18n.hydration,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\trenderSpan?.setAttribute(\n\t\t\t\t\t\t\t\t'http.response.status_code',\n\t\t\t\t\t\t\t\trenderResult.status,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn renderResult;\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\thtml = result.html;\n\t\t\t\t\tstatus = result.status;\n\t\t\t\t} catch (ssrError) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[reroute] SSR rendering failed, returning error page:',\n\t\t\t\t\t\tssrError,\n\t\t\t\t\t);\n\t\t\t\t\tset.status = 500; // Ensure telemetry captures 500 status\n\t\t\t\t\tconst errorHtml = `<!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>Error</title>\n <style>\n body { font-family: system-ui, sans-serif; padding: 2rem; background: #111; color: #fff; }\n h1 { color: #f87171; }\n pre { background: #222; padding: 1rem; border-radius: 0.5rem; overflow: auto; }\n </style>\n</head>\n<body>\n <h1>Server Error</h1>\n <p>An error occurred while rendering this page.</p>\n ${isWatchMode ? `<pre>${ssrError instanceof Error ? ssrError.stack : String(ssrError)}</pre>` : ''}\n <script type=\"module\" src=\"${bundleUrl}\"></script>\n</body>\n</html>`;\n\t\t\t\t\treturn new Response(errorHtml, {\n\t\t\t\t\t\tstatus: 500,\n\t\t\t\t\t\theaders: { 'Content-Type': 'text/html; charset=utf-8' },\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Apply compression if enabled\n\t\t\t\tconst { body, extraHeaders } = compression\n\t\t\t\t\t? await withSpan('ssr.compress', async (span) => {\n\t\t\t\t\t\t\tconst result = gzipIfAccepted(\n\t\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\t\t'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\tacceptEncoding,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.size.original': html.length,\n\t\t\t\t\t\t\t\t'reroute.size.compressed':\n\t\t\t\t\t\t\t\t\ttypeof result.body === 'string'\n\t\t\t\t\t\t\t\t\t\t? result.body.length\n\t\t\t\t\t\t\t\t\t\t: (result.body as Uint8Array).length,\n\t\t\t\t\t\t\t\t'reroute.encoding':\n\t\t\t\t\t\t\t\t\tresult.extraHeaders['Content-Encoding'] || 'none',\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t})\n\t\t\t\t\t: { body: html, extraHeaders: {} };\n\n\t\t\t\tconst resHeaders: Record<string, string> = {\n\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t...extraHeaders,\n\t\t\t\t};\n\t\t\t\taddCacheControl(resHeaders, cacheControlHeader);\n\t\t\t\tattachHtmlHeaders(\n\t\t\t\t\tresHeaders,\n\t\t\t\t\tpathname,\n\t\t\t\t\tstatus,\n\t\t\t\t\tset.headers.link as string | undefined,\n\t\t\t\t);\n\n\t\t\t\tset.status = status;\n\n\t\t\t\tresponse = new Response(body as BodyInit, {\n\t\t\t\t\tstatus,\n\t\t\t\t\theaders: resHeaders,\n\t\t\t\t});\n\n\t\t\t\t// Cache the HTML if successful and cacheable\n\t\t\t\tif (\n\t\t\t\t\t!isWatchMode &&\n\t\t\t\t\tSSR_HTML_TTL_MS > 0 &&\n\t\t\t\t\tstatus >= 200 &&\n\t\t\t\t\tstatus < 300\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst ck = makeKey(pathname, searchParams, acceptEncoding);\n\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t\t\tbody: body as BodyInit,\n\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst tBeforeReturn = debug ? performance.now() : 0;\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[SSR] ${pathname} - about to return response: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\t\t\tconst returnValue = response;\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[SSR] ${pathname} - response returned: ${(performance.now() - t0).toFixed(2)}ms (return overhead: ${(performance.now() - tBeforeReturn).toFixed(2)}ms)`,\n\t\t\t\t);\n\t\t\treturn returnValue;\n\t\t});\n\t};\n\n\t// Register all routes from manifest\n\tconst allRoutes = [...staticRoutes, ...contentRoutes, ...dynamicRoutes];\n\tfor (const path of allRoutes) {\n\t\tapp.get(path, handleSSR);\n\t}\n\n\t// Register a catch-all route to handle 404s with custom not found pages\n\t// This must come after all other routes\n\tapp.get('*', handleSSR);\n\n\treturn app;\n}\n\nexport { registerSSRRoutes };\n",
|
|
100
101
|
"import { join } from 'node:path';\nimport {\n\tbuildLocaleCookie,\n\tcontentNegotiateRedirect,\n\ttype ResolvedI18n,\n\tresolveLocale,\n} from 'reroute-js/core';\n\ntype LoadedI18n = ResolvedI18n & {\n\tcollections?: string[];\n};\n\nlet cachedI18n: { cwd: string; data: LoadedI18n; mtime: number } | null = null;\n\nasync function loadI18nState(cwd: string): Promise<LoadedI18n> {\n\tconst path = join(cwd, '.reroute', 'i18n.json');\n\ttry {\n\t\tconst file = Bun.file(path);\n\t\tif (!(await file.exists())) {\n\t\t\treturn {\n\t\t\t\tenabled: false,\n\t\t\t\tdefaultLocale: 'en-US',\n\t\t\t\tlocales: [],\n\t\t\t\tlocalesDir: 'locales',\n\t\t\t\tcookie: 'reroute-locale',\n\t\t\t\tredirectContentOnNegotiate: true,\n\t\t\t\tcatalogs: {},\n\t\t\t};\n\t\t}\n\n\t\tconst stat = await file.stat();\n\t\tconst mtime = stat?.mtime?.getTime?.() ?? Date.now();\n\t\tif (cachedI18n && cachedI18n.cwd === cwd && cachedI18n.mtime === mtime) {\n\t\t\treturn cachedI18n.data;\n\t\t}\n\n\t\tconst data = (await file.json()) as LoadedI18n;\n\t\tcachedI18n = { cwd, data, mtime };\n\t\treturn data;\n\t} catch {\n\t\treturn {\n\t\t\tenabled: false,\n\t\t\tdefaultLocale: 'en-US',\n\t\t\tlocales: [],\n\t\t\tlocalesDir: 'locales',\n\t\t\tcookie: 'reroute-locale',\n\t\t\tredirectContentOnNegotiate: true,\n\t\t\tcatalogs: {},\n\t\t};\n\t}\n}\n\ntype I18nRequestResult = {\n\tenabled: boolean;\n\tlocale: string;\n\tdefaultLocale: string;\n\tlocales: string[];\n\tcookie: string;\n\tcatalogs: Record<string, unknown>;\n\tcollections?: string[];\n\t/** Set-Cookie header value when locale should be persisted */\n\tsetCookie?: string;\n\t/** 302 Location when a redirect is required */\n\tredirectTo?: string;\n\thydration: Record<string, unknown>;\n};\n\nasync function listContentCollections(cwd: string): Promise<string[]> {\n\ttry {\n\t\tconst { readdir } = await import('node:fs/promises');\n\t\tconst dir = join(cwd, '.reroute', 'collections');\n\t\tconst entries = await readdir(dir);\n\t\treturn entries\n\t\t\t.filter((f) => f.endsWith('.js'))\n\t\t\t.map((f) => f.replace(/\\.js$/, ''));\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nasync function resolveI18nForRequest(\n\tcwd: string,\n\tpathname: string,\n\theaders: Record<string, string>,\n\tcollections?: string[],\n\tsearch?: string,\n): Promise<I18nRequestResult> {\n\tconst i18n = await loadI18nState(cwd);\n\tconst disabled: I18nRequestResult = {\n\t\tenabled: false,\n\t\tlocale: i18n.defaultLocale,\n\t\tdefaultLocale: i18n.defaultLocale,\n\t\tlocales: [],\n\t\tcookie: i18n.cookie,\n\t\tcatalogs: {},\n\t\thydration: { enabled: false },\n\t};\n\n\tif (!i18n.enabled || i18n.locales.length === 0) {\n\t\treturn disabled;\n\t}\n\n\tconst knownCollections = collections?.length\n\t\t? collections\n\t\t: await listContentCollections(cwd);\n\n\tconst resolution = resolveLocale({\n\t\tpathname,\n\t\tsearch,\n\t\tcookieHeader: headers.cookie,\n\t\tacceptLanguage: headers['accept-language'],\n\t\tavailableLocales: i18n.locales,\n\t\tdefaultLocale: i18n.defaultLocale,\n\t\tcookieName: i18n.cookie,\n\t\t// Only treat known content collections as localizable paths\n\t\tcollections: knownCollections.length > 0 ? knownCollections : undefined,\n\t});\n\n\tlet redirectTo = resolution.redirectTo;\n\t// Content negotiate redirects require a known collection list so we\n\t// never rewrite arbitrary /foo/bar routes.\n\tif (\n\t\t!redirectTo &&\n\t\ti18n.redirectContentOnNegotiate &&\n\t\tknownCollections.length > 0\n\t) {\n\t\tredirectTo = contentNegotiateRedirect(resolution, i18n.defaultLocale, true);\n\t}\n\n\tconst cookieValue = buildLocaleCookie(i18n.cookie, resolution.locale);\n\n\tconst hydration = {\n\t\tenabled: true,\n\t\tlocale: resolution.locale,\n\t\tdefaultLocale: i18n.defaultLocale,\n\t\tlocales: i18n.locales,\n\t\tcookie: i18n.cookie,\n\t\tcatalogs: i18n.catalogs,\n\t\tcollections: knownCollections,\n\t};\n\n\t// Expose for SSR content key helpers during this request\n\ttry {\n\t\t(globalThis as Record<string, unknown>).__REROUTE_I18N__ = hydration;\n\t} catch {\n\t\t// ignore\n\t}\n\n\treturn {\n\t\tenabled: true,\n\t\tlocale: resolution.locale,\n\t\tdefaultLocale: i18n.defaultLocale,\n\t\tlocales: i18n.locales,\n\t\tcookie: i18n.cookie,\n\t\tcatalogs: i18n.catalogs as Record<string, unknown>,\n\t\tcollections: knownCollections,\n\t\tsetCookie: cookieValue,\n\t\tredirectTo,\n\t\thydration,\n\t};\n}\n\nexport { resolveI18nForRequest };\n",
|
|
101
102
|
"import { trace } from '@opentelemetry/api';\nimport type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tgetMimeType,\n\tgzipIfAccepted,\n\tjoin,\n\ttype TTLCache,\n} from 'reroute-js/core';\nimport { getEncoding } from '../libs/cache';\nimport { type CachedFileData, getAssetCacheControl } from '../libs/serving';\n\n// Helper to check if OpenTelemetry is available\nlet otelAvailable: boolean | undefined;\n\nfunction isOtelAvailable(): boolean {\n\tif (otelAvailable !== undefined) return otelAvailable;\n\n\ttry {\n\t\trequire('@opentelemetry/api');\n\t\totelAvailable = true;\n\t\treturn true;\n\t} catch {\n\t\totelAvailable = false;\n\t\treturn false;\n\t}\n}\n\ntype StaticRouteOptions = {\n\tstaticAssetsDir: string;\n\tmaxAge: number;\n\tdirective: string;\n\tstaticHeaders?: Record<string, string>;\n\tshouldIgnore: (file: string) => boolean;\n\tfileCache: TTLCache<string, CachedFileData>;\n\tisWatchMode?: boolean;\n\tcompression?: boolean;\n};\n\nexport function registerStaticRoutes(\n\tapp: Elysia,\n\toptions: StaticRouteOptions,\n): Elysia {\n\tconst {\n\t\tstaticAssetsDir,\n\t\tmaxAge,\n\t\tdirective,\n\t\tstaticHeaders = {},\n\t\tshouldIgnore,\n\t\tfileCache,\n\t\tisWatchMode = false,\n\t\tcompression = true,\n\t} = options;\n\n\tfunction setOtelAttributes(\n\t\tstatusCode: number,\n\t\tcachHit: boolean,\n\t\trequestPath: string,\n\t\tencoding?: string,\n\t\treason?: string,\n\t) {\n\t\tif (!isOtelAvailable()) return;\n\n\t\tconst currentSpan = trace.getActiveSpan();\n\t\tconst attrs: Record<string, string | number | boolean> = {\n\t\t\t'reroute.static.path': requestPath,\n\t\t};\n\n\t\tif (statusCode === 200) {\n\t\t\tattrs['reroute.cache.hit'] = cachHit;\n\t\t\tif (encoding) attrs['reroute.encoding'] = encoding;\n\t\t} else if (reason) {\n\t\t\tattrs['reroute.error.reason'] = reason;\n\t\t}\n\n\t\tcurrentSpan?.setAttributes(attrs);\n\t}\n\n\t// Static assets are served from /assets/* URL path\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Static file serving with caching, compression, and resolution\n\tapp.get('/assets/*', async function serveStaticFile({ params, headers }) {\n\t\tconst requestPath = params['*'];\n\t\t// Route /assets/* strips the prefix, so params['*'] is just the filename\n\t\t// Example: GET /assets/logo.svg -> params['*'] = 'logo.svg'\n\t\t// filePath = staticAssetsDir/logo.svg\n\t\tconst filePath = join(staticAssetsDir, requestPath);\n\n\t\ttry {\n\t\t\tconst acceptEncoding = headers['accept-encoding'] ?? '';\n\t\t\tconst encoding = getEncoding(acceptEncoding);\n\t\t\tconst cacheKey = `${filePath}:${encoding}`;\n\n\t\t\t// TTLCache handles expiration automatically\n\t\t\t// We cache raw data instead of Response objects to avoid issues with\n\t\t\t// Response.clone() failing on concurrent requests (slow connection bug)\n\t\t\tconst cached = fileCache.get(cacheKey);\n\t\t\tif (cached) {\n\t\t\t\tsetOtelAttributes(200, true, requestPath, encoding);\n\t\t\t\tconst cachedCacheControl = getAssetCacheControl(\n\t\t\t\t\tfilePath,\n\t\t\t\t\tcached.contentType,\n\t\t\t\t\tmaxAge,\n\t\t\t\t\tdirective,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t);\n\t\t\t\tconst responseHeaders: Record<string, string> = {\n\t\t\t\t\t'Content-Type': cached.contentType,\n\t\t\t\t\t'Cache-Control': cachedCacheControl,\n\t\t\t\t\t'Reroute-Cache': 'HIT',\n\t\t\t\t\t...staticHeaders,\n\t\t\t\t};\n\t\t\t\tif (cached.contentEncoding) {\n\t\t\t\t\tresponseHeaders['Content-Encoding'] = cached.contentEncoding;\n\t\t\t\t}\n\t\t\t\t// Create fresh Response from cached data - safe for concurrent requests\n\t\t\t\treturn new Response(cached.buffer, { headers: responseHeaders });\n\t\t\t}\n\n\t\t\t// Check if file exists\n\t\t\tconst exists = await Bun.file(filePath).exists();\n\t\t\tif (!exists) {\n\t\t\t\tsetOtelAttributes(\n\t\t\t\t\t404,\n\t\t\t\t\tfalse,\n\t\t\t\t\trequestPath,\n\t\t\t\t\tundefined,\n\t\t\t\t\t'file_not_exists',\n\t\t\t\t);\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\n\t\t\tif (shouldIgnore(filePath)) {\n\t\t\t\tsetOtelAttributes(404, false, requestPath, undefined, 'file_ignored');\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\n\t\t\tconst contentBuf = await Bun.file(filePath).arrayBuffer();\n\t\t\tconst content = new Uint8Array(contentBuf);\n\t\t\tconst contentType = getMimeType(filePath);\n\n\t\t\tconst { body, extraHeaders } = compression\n\t\t\t\t? gzipIfAccepted(content, contentType, acceptEncoding)\n\t\t\t\t: { body: content, extraHeaders: {} };\n\n\t\t\tconst cacheControl = getAssetCacheControl(\n\t\t\t\tfilePath,\n\t\t\t\tcontentType,\n\t\t\t\tmaxAge,\n\t\t\t\tdirective,\n\t\t\t\tisWatchMode,\n\t\t\t);\n\n\t\t\t// Convert body to ArrayBuffer for caching\n\t\t\t// gzipIfAccepted returns string | Uint8Array, we need ArrayBuffer for consistent caching\n\t\t\tlet bodyBuffer: ArrayBuffer;\n\t\t\tif (typeof body === 'string') {\n\t\t\t\tbodyBuffer = new TextEncoder().encode(body).buffer as ArrayBuffer;\n\t\t\t} else if (body instanceof Uint8Array) {\n\t\t\t\t// Use slice to create a proper copy of the ArrayBuffer\n\t\t\t\t// Type assertion is safe - Uint8Array always uses ArrayBuffer, not SharedArrayBuffer\n\t\t\t\tbodyBuffer = body.buffer.slice(\n\t\t\t\t\tbody.byteOffset,\n\t\t\t\t\tbody.byteOffset + body.byteLength,\n\t\t\t\t) as ArrayBuffer;\n\t\t\t} else {\n\t\t\t\tbodyBuffer = body as ArrayBuffer;\n\t\t\t}\n\n\t\t\t// Cache raw data instead of Response object\n\t\t\tfileCache.set(cacheKey, {\n\t\t\t\tbuffer: bodyBuffer,\n\t\t\t\tcontentType,\n\t\t\t\tcontentEncoding: extraHeaders['Content-Encoding'],\n\t\t\t});\n\n\t\t\t// Track static file attributes\n\t\t\tif (isOtelAvailable()) {\n\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\tcurrentSpan?.setAttributes({\n\t\t\t\t\t'reroute.static.path': requestPath,\n\t\t\t\t\t'reroute.content.type': contentType,\n\t\t\t\t\t'reroute.cache.hit': false,\n\t\t\t\t\t'reroute.compressed': !!extraHeaders['Content-Encoding'],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn new Response(body as BodyInit, {\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': contentType,\n\t\t\t\t\t'Cache-Control': cacheControl,\n\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t...staticHeaders,\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (error instanceof NotFoundError) {\n\t\t\t\t// 404 attributes already set above\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconsole.error(`[reroute] Error serving ${filePath}:`, error);\n\t\t\tif (isOtelAvailable()) {\n\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\tcurrentSpan?.setAttribute('reroute.static.path', requestPath);\n\t\t\t}\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\treturn app;\n}\n"
|
|
102
103
|
],
|
|
103
|
-
"mappings": "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",
|
|
104
|
-
"debugId": "
|
|
104
|
+
"mappings": "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",
|
|
105
|
+
"debugId": "78024E3217BF060B64756E2164756E21",
|
|
105
106
|
"names": []
|
|
106
107
|
}
|