reroute-js 1.0.0-alpha.8 → 1.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/cli/bin.d.ts +1 -1
- package/cli/bin.js +152 -22
- 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 +1 -1
- 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/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 +1 -1
- package/cli/src/commands/lib/version.d.ts +1 -1
- 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 +148 -18
- package/core/index.js.map +9 -8
- package/core/src/bundler/hash.d.ts +1 -1
- package/core/src/bundler/index.d.ts +1 -1
- package/core/src/config.d.ts +26 -2
- 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 +35 -0
- package/core/src/llms/discovery.d.ts.map +1 -0
- 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 +4 -1
- package/core/src/llms/index.d.ts.map +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/generator.d.ts.map +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 +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/render.d.ts.map +1 -1
- package/core/src/ssr/stream.d.ts +1 -1
- package/core/src/ssr/stream.d.ts.map +1 -1
- package/elysia/index.d.ts +1 -1
- package/elysia/index.js +176 -36
- 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 +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/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/llms.d.ts +1 -1
- package/elysia/src/routes/llms.d.ts.map +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 +4 -2
- 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 +25 -10
- package/telemetry/server.js.map +9 -7
- 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/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/image.ts", "../../packages/elysia/src/routes/artifacts.ts", "../../packages/elysia/src/libs/serving.ts", "../../packages/elysia/src/libs/cache.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/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"],
|
|
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/image.ts", "../../packages/elysia/src/routes/artifacts.ts", "../../packages/elysia/src/libs/serving.ts", "../../packages/elysia/src/libs/cache.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/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 * LLMs content configuration options\n */\ninterface LLMsOptions {\n\t/** Enable LLM content features (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for absolute URLs in llms.txt index (e.g., 'https://example.com') */\n\tbaseUrl?: string;\n\n\t/** Enable .txt extension for routes (default: true when enabled) */\n\tenableTextExtension?: boolean;\n\n\t/** Enable .md extension for routes (default: true when enabled) */\n\tenableMarkdownExtension?: boolean;\n\n\t/** Enable Accept header content negotiation (default: true when enabled) */\n\tenableContentNegotiation?: boolean;\n\n\t/** Enable /llms.txt index generation (default: true when enabled) */\n\tenableIndex?: boolean;\n\n\t/** Enable /llms-full.txt generation (default: true when enabled) */\n\tenableFullContent?: boolean;\n\n\t/** Cache duration in seconds for LLM content (default: 86400 = 24 hours, or falls back to options.maxAge) */\n\tmaxAge?: number;\n\n\t/** Cache duration in seconds for llms-full.txt specifically (default: 604800 = 7 days, or falls back to llms.maxAge) */\n\tmaxAgeFull?: number;\n\n\t/** Maximum items in full content bundle (default: 10000) */\n\tmaxItems?: number;\n\n\t/** Maximum file size for full content in bytes (default: 50MB) */\n\tmaxSize?: number;\n\n\t/**\n\t * Exclude specific routes from LLM features\n\t * Supports strings (exact match or substring), RegExp, or custom functions\n\t * @example ['/admin', '/api', /^\\/private/, (path) => path.includes('draft')]\n\t */\n\texcludeRoutes?: (string | RegExp | ((pathname: string) => boolean))[];\n\n\t/**\n\t * Exclude collections from LLM features\n\t * @example ['drafts', 'private']\n\t */\n\texcludeCollections?: string[];\n\n\t/** Site name for index header */\n\tsiteName?: string;\n\n\t/** Site description for index header (brief context for LLMs) */\n\tsiteDescription?: string;\n\n\t/**\n\t * 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/** 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 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 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",
|
|
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",
|
|
@@ -53,16 +53,17 @@
|
|
|
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",
|
|
56
|
-
"import type { Span } from '@opentelemetry/api';\nimport dedent from 'dedent';\nimport { cloneElement, type ReactElement } from 'react';\nimport { renderToString } from 'react-dom/server';\nimport {\n\tgetTraceContextForInjection,\n\twithSpan,\n\twithSpanSync,\n} from 'reroute-js/telemetry/server';\nimport { loadConfig, type OGImageOptions, type OGOptions } from '../config';\nimport {\n\ttype Doc,\n\tduplicateQueryParamData,\n\tgenerateCollectionScripts,\n\tgenerateHydrationScripts,\n\tperformSSRSetup,\n\tresetSSRContentResults,\n\tsetGlobalSSRData,\n\ttakeSSRContentResults,\n} from './lib';\nimport { applyIndexTemplate, loadIndexHtml } from './lib/html';\n\ntype SSRRenderOptions = {\n\tpathname: string;\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tbundleUrl: string;\n\tcachedCollections?: Record<string, unknown[]>;\n\tcachedThemeCSS?: string;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\tminify?: boolean;\n\tmaxAge?: number;\n\tsearchParams?: URLSearchParams;\n\togConfig?: OGImageOptions;\n\togMetaConfig?: OGOptions;\n\tbaseUrl?: string;\n\tautoCanonical?: boolean;\n\tparentSpan?: Span | null;\n\t/** Request headers from the incoming HTTP request */\n\theaders?: Record<string, string>;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n\t/** Hydrated i18n state (opt-in) */\n\ti18n?: Record<string, unknown>;\n};\n\ntype SSRRenderResult = {\n\thtml: string;\n\tstatus: number;\n};\n\n/**\n * Render a React component to a complete HTML document for SSR.\n * Uses synchronous rendering (renderToString) for full HTML generation.\n */\nasync function renderSSRDocument(\n\toptions: SSRRenderOptions,\n): Promise<SSRRenderResult> {\n\tconst {\n\t\tpathname,\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tbundleUrl,\n\t\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tmaxAge = 0,\n\t\tsearchParams,\n\t\togConfig,\n\t} = options;\n\n\t// Perform shared SSR setup\n\tconst setup = await performSSRSetup(\n\t\t{\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\tparentSpan: options.parentSpan,\n\t\t\tbundleUrl,\n\t\t\tmaxAge,\n\t\t\tsearchParams,\n\t\t\togConfig,\n\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\tbaseUrl: options.baseUrl,\n\t\t\tautoCanonical: options.autoCanonical,\n\t\t\tcachedCollections: options.cachedCollections,\n\t\t\tcachedThemeCSS: options.cachedThemeCSS,\n\t\t\theaders: options.headers,\n\t\t\ttitleSuffix: options.titleSuffix,\n\t\t},\n\t\tfalse, // not streaming\n\t);\n\n\t// Duplicate data for query param routes\n\tconst duplicatedData = duplicateQueryParamData(setup.ssrData);\n\tsetGlobalSSRData(duplicatedData);\n\n\t// Render React component to string.\n\t// The capture buffer is reset and read around the synchronous render so a\n\t// concurrent request cannot mix its items (and locale) into this response.\n\tlet capturedResults: Record<string, unknown[]> | undefined;\n\tconst appHtml = await withSpan('ssr.render.react', async (span) => {\n\t\tconst componentWithPathname = cloneElement<Doc>(rootComponent, {\n\t\t\tpathname,\n\t\t\tsearchParams,\n\t\t} as Doc);\n\t\tspan.setAttribute('reroute.pathname', pathname);\n\t\tresetSSRContentResults();\n\t\tconst html = renderToString(componentWithPathname);\n\t\tcapturedResults = takeSSRContentResults();\n\t\tspan.setAttribute('reroute.html.final.size', html.length);\n\t\treturn html;\n\t});\n\n\t// Load base template\n\tconst baseTemplate = await withSpan('ssr.load.template', async (span) => {\n\t\tconst template = await loadIndexHtml(clientDir);\n\t\tspan.setAttribute('reroute.template.size', template.length);\n\t\treturn template;\n\t});\n\n\t// Generate collection scripts from accessed collections\n\tconst collectionScripts = generateCollectionScripts(\n\t\tsetup.byCollectionForSSR,\n\t\tcapturedResults,\n\t);\n\n\t// Load config to get browser telemetry settings\n\tconst config = await loadConfig(cwd);\n\tconst browserTelemetryConfigRaw = config.telemetry?.browser as\n\t\t| Record<string, unknown>\n\t\t| undefined;\n\n\t// Serialize browser telemetry config (convert functions to strings for JSON)\n\tconst { serializeBrowserTelemetryConfig } = await import('./lib/serialize');\n\tconst browserTelemetryConfig = serializeBrowserTelemetryConfig(\n\t\tbrowserTelemetryConfigRaw,\n\t);\n\n\t// Extract trace context from parent span for distributed tracing\n\tconst traceContext = getTraceContextForInjection(options.parentSpan);\n\n\t// Generate all hydration scripts\n\tconst hydrationScript = await withSpan(\n\t\t'ssr.generate.scripts',\n\t\tasync (span) => {\n\t\t\tconst script = generateHydrationScripts(\n\t\t\t\tsetup.ssrData,\n\t\t\t\tisWatchMode,\n\t\t\t\tsetup.ssrError,\n\t\t\t\tcollectionScripts,\n\t\t\t\tsetup.preloadHydrationScript,\n\t\t\t\tbundleUrl,\n\t\t\t\tpathname,\n\t\t\t\tbrowserTelemetryConfig,\n\t\t\t\ttraceContext,\n\t\t\t\toptions.titleSuffix,\n\t\t\t\toptions.i18n,\n\t\t\t);\n\t\t\tspan.setAttribute('reroute.scripts.size', script.length);\n\t\t\treturn script;\n\t\t},\n\t);\n\n\t// Determine final status (only override if value is set)\n\tlet statusOverride = setup.preloadStatusOverride;\n\tif (setup.statusContainer.value !== undefined) {\n\t\tstatusOverride = setup.statusContainer.value;\n\t}\n\tif (setup.metadataResult.statusOverride !== undefined) {\n\t\tstatusOverride = setup.metadataResult.statusOverride;\n\t}\n\n\
|
|
56
|
+
"import type { Span } from '@opentelemetry/api';\nimport dedent from 'dedent';\nimport { cloneElement, type ReactElement } from 'react';\nimport { renderToString } from 'react-dom/server';\nimport {\n\tgetTraceContextForInjection,\n\twithSpan,\n\twithSpanSync,\n} from 'reroute-js/telemetry/server';\nimport { loadConfig, type OGImageOptions, type OGOptions } from '../config';\nimport { appendLlmsAlternateHead } from '../llms/discovery';\nimport {\n\ttype Doc,\n\tduplicateQueryParamData,\n\tgenerateCollectionScripts,\n\tgenerateHydrationScripts,\n\tperformSSRSetup,\n\tresetSSRContentResults,\n\tsetGlobalSSRData,\n\ttakeSSRContentResults,\n} from './lib';\nimport { applyIndexTemplate, loadIndexHtml } from './lib/html';\n\ntype SSRRenderOptions = {\n\tpathname: string;\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tbundleUrl: string;\n\tcachedCollections?: Record<string, unknown[]>;\n\tcachedThemeCSS?: string;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\tminify?: boolean;\n\tmaxAge?: number;\n\tsearchParams?: URLSearchParams;\n\togConfig?: OGImageOptions;\n\togMetaConfig?: OGOptions;\n\tbaseUrl?: string;\n\tautoCanonical?: boolean;\n\tparentSpan?: Span | null;\n\t/** Request headers from the incoming HTTP request */\n\theaders?: Record<string, string>;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n\t/** Hydrated i18n state (opt-in) */\n\ti18n?: Record<string, unknown>;\n};\n\ntype SSRRenderResult = {\n\thtml: string;\n\tstatus: number;\n};\n\n/**\n * Render a React component to a complete HTML document for SSR.\n * Uses synchronous rendering (renderToString) for full HTML generation.\n */\nasync function renderSSRDocument(\n\toptions: SSRRenderOptions,\n): Promise<SSRRenderResult> {\n\tconst {\n\t\tpathname,\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tbundleUrl,\n\t\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tmaxAge = 0,\n\t\tsearchParams,\n\t\togConfig,\n\t} = options;\n\n\t// Perform shared SSR setup\n\tconst setup = await performSSRSetup(\n\t\t{\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\tparentSpan: options.parentSpan,\n\t\t\tbundleUrl,\n\t\t\tmaxAge,\n\t\t\tsearchParams,\n\t\t\togConfig,\n\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\tbaseUrl: options.baseUrl,\n\t\t\tautoCanonical: options.autoCanonical,\n\t\t\tcachedCollections: options.cachedCollections,\n\t\t\tcachedThemeCSS: options.cachedThemeCSS,\n\t\t\theaders: options.headers,\n\t\t\ttitleSuffix: options.titleSuffix,\n\t\t},\n\t\tfalse, // not streaming\n\t);\n\n\t// Duplicate data for query param routes\n\tconst duplicatedData = duplicateQueryParamData(setup.ssrData);\n\tsetGlobalSSRData(duplicatedData);\n\n\t// Render React component to string.\n\t// The capture buffer is reset and read around the synchronous render so a\n\t// concurrent request cannot mix its items (and locale) into this response.\n\tlet capturedResults: Record<string, unknown[]> | undefined;\n\tconst appHtml = await withSpan('ssr.render.react', async (span) => {\n\t\tconst componentWithPathname = cloneElement<Doc>(rootComponent, {\n\t\t\tpathname,\n\t\t\tsearchParams,\n\t\t} as Doc);\n\t\tspan.setAttribute('reroute.pathname', pathname);\n\t\tresetSSRContentResults();\n\t\tconst html = renderToString(componentWithPathname);\n\t\tcapturedResults = takeSSRContentResults();\n\t\tspan.setAttribute('reroute.html.final.size', html.length);\n\t\treturn html;\n\t});\n\n\t// Load base template\n\tconst baseTemplate = await withSpan('ssr.load.template', async (span) => {\n\t\tconst template = await loadIndexHtml(clientDir);\n\t\tspan.setAttribute('reroute.template.size', template.length);\n\t\treturn template;\n\t});\n\n\t// Generate collection scripts from accessed collections\n\tconst collectionScripts = generateCollectionScripts(\n\t\tsetup.byCollectionForSSR,\n\t\tcapturedResults,\n\t);\n\n\t// Load config to get browser telemetry settings\n\tconst config = await loadConfig(cwd);\n\tconst browserTelemetryConfigRaw = config.telemetry?.browser as\n\t\t| Record<string, unknown>\n\t\t| undefined;\n\n\t// Serialize browser telemetry config (convert functions to strings for JSON)\n\tconst { serializeBrowserTelemetryConfig } = await import('./lib/serialize');\n\tconst browserTelemetryConfig = serializeBrowserTelemetryConfig(\n\t\tbrowserTelemetryConfigRaw,\n\t);\n\n\t// Extract trace context from parent span for distributed tracing\n\tconst traceContext = getTraceContextForInjection(options.parentSpan);\n\n\t// Generate all hydration scripts\n\tconst hydrationScript = await withSpan(\n\t\t'ssr.generate.scripts',\n\t\tasync (span) => {\n\t\t\tconst script = generateHydrationScripts(\n\t\t\t\tsetup.ssrData,\n\t\t\t\tisWatchMode,\n\t\t\t\tsetup.ssrError,\n\t\t\t\tcollectionScripts,\n\t\t\t\tsetup.preloadHydrationScript,\n\t\t\t\tbundleUrl,\n\t\t\t\tpathname,\n\t\t\t\tbrowserTelemetryConfig,\n\t\t\t\ttraceContext,\n\t\t\t\toptions.titleSuffix,\n\t\t\t\toptions.i18n,\n\t\t\t);\n\t\t\tspan.setAttribute('reroute.scripts.size', script.length);\n\t\t\treturn script;\n\t\t},\n\t);\n\n\t// Determine final status (only override if value is set)\n\tlet statusOverride = setup.preloadStatusOverride;\n\tif (setup.statusContainer.value !== undefined) {\n\t\tstatusOverride = setup.statusContainer.value;\n\t}\n\tif (setup.metadataResult.statusOverride !== undefined) {\n\t\tstatusOverride = setup.metadataResult.statusOverride;\n\t}\n\n\tconst extraHead = appendLlmsAlternateHead(\n\t\tsetup.bundlePreload + setup.preloadExtraHead,\n\t\tpathname,\n\t\tstatusOverride || 200,\n\t\tconfig.llms,\n\t);\n\tconst combinedHead = dedent(\n\t\t[\n\t\t\tdedent(head) || '',\n\t\t\tdedent(extraHead),\n\t\t\tdedent(setup.metadataResult.perPageHead),\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join('\\n'),\n\t);\n\n\tconst i18nLocale = options.i18n?.enabled\n\t\t? String(options.i18n.locale || '')\n\t\t: '';\n\n\t// Apply template with SSR content\n\tconst html = withSpanSync('ssr.apply.template', (span) => {\n\t\tconst result = applyIndexTemplate(baseTemplate, appHtml, {\n\t\t\thead: [setup.inlineStyleTag, combinedHead].filter(Boolean).join('\\n'),\n\t\t\thydrationScript,\n\t\t\tlang: setup.metadataResult.pageLang || i18nLocale || lang,\n\t\t\tappId,\n\t\t});\n\t\tspan.setAttributes({\n\t\t\t'reroute.html.final.size': result.length,\n\t\t\t'reroute.html.original.size': appHtml.length,\n\t\t});\n\t\treturn result;\n\t});\n\n\treturn {\n\t\thtml,\n\t\tstatus: statusOverride || 200,\n\t};\n}\n\nexport { renderSSRDocument, type SSRRenderOptions, type SSRRenderResult };\n",
|
|
57
57
|
"/**\n * Text and Markdown formatting for LLM-optimized content\n * Focuses on token efficiency: minimal metadata, maximum useful content\n *\n * Zero dependencies - uses lightweight regex-based conversion\n * Works great for 99% of cases without adding runtime deps\n */\n\n/**\n * Format content as plain text (.txt)\n * Token-efficient: No frontmatter, no URLs, just title + body\n */\nexport function formatAsText(content: {\n\ttitle?: string;\n\tbody: string;\n}): string {\n\tconst parts: string[] = [];\n\n\t// Add title if present (single line, no markdown)\n\tif (content.title) {\n\t\tparts.push(content.title);\n\t\tparts.push(''); // Blank line after title\n\t}\n\n\t// Add body (already cleaned text)\n\tparts.push(content.body);\n\n\treturn parts.join('\\n');\n}\n\n/**\n * Format content as markdown (.md)\n * Token-efficient: No frontmatter, but preserves markdown formatting\n */\nexport function formatAsMarkdown(content: {\n\ttitle?: string;\n\tmarkdown: string;\n}): string {\n\tconst parts: string[] = [];\n\n\t// Add title as h1 if present\n\tif (content.title) {\n\t\tparts.push(`# ${content.title}`);\n\t\tparts.push(''); // Blank line after title\n\t}\n\n\t// Add markdown content (preserves formatting)\n\tparts.push(content.markdown);\n\n\treturn parts.join('\\n');\n}\n\n/**\n * Strip HTML tags from text, preserving structure\n * Lightweight regex-based conversion with link preservation\n */\nexport function stripHtmlTags(html: string): string {\n\tlet text = html;\n\n\t// Convert links to readable format: \"text (url)\"\n\ttext = text.replace(\n\t\t/<a[^>]*href=[\"']([^\"']*)[\"'][^>]*>(.*?)<\\/a>/gi,\n\t\t'$2 ($1)',\n\t);\n\n\t// Replace block elements with newlines\n\ttext = text.replace(\n\t\t/<\\/(div|p|h[1-6]|li|tr|section|article|header|footer|nav)>/gi,\n\t\t'\\n',\n\t);\n\ttext = text.replace(/<br\\s*\\/?>/gi, '\\n');\n\ttext = text.replace(/<hr\\s*\\/?>/gi, '\\n---\\n');\n\n\t// Replace list items with bullets\n\ttext = text.replace(/<li[^>]*>/gi, '\\n• ');\n\n\t// Add spacing for headings\n\ttext = text.replace(/<h[1-6][^>]*>/gi, '\\n\\n');\n\ttext = text.replace(/<\\/h[1-6]>/gi, '\\n');\n\n\t// Remove script and style tags completely\n\ttext = text.replace(\n\t\t/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\t\t'',\n\t);\n\ttext = text.replace(/<style\\b[^<]*(?:(?!<\\/style>)<[^<]*)*<\\/style>/gi, '');\n\n\t// Remove all other HTML tags\n\ttext = text.replace(/<[^>]+>/g, '');\n\n\t// Decode common HTML entities\n\ttext = text.replace(/ /g, ' ');\n\ttext = text.replace(/&/g, '&');\n\ttext = text.replace(/</g, '<');\n\ttext = text.replace(/>/g, '>');\n\ttext = text.replace(/"/g, '\"');\n\ttext = text.replace(/'/g, \"'\");\n\ttext = text.replace(/'/g, \"'\");\n\ttext = text.replace(/'/g, \"'\");\n\n\t// Clean up excessive whitespace\n\ttext = text.replace(/[ \\t]+/g, ' '); // Multiple spaces → single space\n\ttext = text.replace(/\\n\\s+\\n/g, '\\n\\n'); // Clean blank lines\n\ttext = text.replace(/\\n{3,}/g, '\\n\\n'); // Max 2 consecutive newlines\n\n\treturn text.trim();\n}\n\n/**\n * Extract title from HTML content\n * Looks for h1, title tag, or first heading\n */\nexport function extractTitle(html: string): string | undefined {\n\t// Try h1 first (most common)\n\tconst h1Match = html.match(/<h1[^>]*>(.*?)<\\/h1>/i);\n\tif (h1Match) {\n\t\treturn stripHtmlTags(h1Match[1]).trim();\n\t}\n\n\t// Try title tag\n\tconst titleMatch = html.match(/<title[^>]*>(.*?)<\\/title>/i);\n\tif (titleMatch) {\n\t\treturn stripHtmlTags(titleMatch[1]).trim();\n\t}\n\n\t// Try any heading\n\tconst headingMatch = html.match(/<h[1-6][^>]*>(.*?)<\\/h[1-6]>/i);\n\tif (headingMatch) {\n\t\treturn stripHtmlTags(headingMatch[1]).trim();\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Convert HTML to markdown\n * Lightweight regex-based conversion that preserves links and structure\n */\nexport function htmlToMarkdown(html: string): string {\n\tlet md = html;\n\n\t// Convert headings\n\tmd = md.replace(/<h1[^>]*>(.*?)<\\/h1>/gi, '\\n# $1\\n');\n\tmd = md.replace(/<h2[^>]*>(.*?)<\\/h2>/gi, '\\n## $1\\n');\n\tmd = md.replace(/<h3[^>]*>(.*?)<\\/h3>/gi, '\\n### $1\\n');\n\tmd = md.replace(/<h4[^>]*>(.*?)<\\/h4>/gi, '\\n#### $1\\n');\n\tmd = md.replace(/<h5[^>]*>(.*?)<\\/h5>/gi, '\\n##### $1\\n');\n\tmd = md.replace(/<h6[^>]*>(.*?)<\\/h6>/gi, '\\n###### $1\\n');\n\n\t// Convert links\n\tmd = md.replace(/<a[^>]*href=\"([^\"]*)\"[^>]*>(.*?)<\\/a>/gi, '[$2]($1)');\n\n\t// Convert images\n\tmd = md.replace(\n\t\t/<img[^>]*src=\"([^\"]*)\"[^>]*alt=\"([^\"]*)\"[^>]*\\/?>/gi,\n\t\t'',\n\t);\n\n\t// Convert strong/bold\n\tmd = md.replace(/<(strong|b)(?:\\s+[^>]*)?>(.+?)<\\/\\1>/gi, '**$2**');\n\n\t// Convert emphasis/italic\n\tmd = md.replace(/<(em|i)(?:\\s+[^>]*)?>(.+?)<\\/\\1>/gi, '*$2*');\n\n\t// Convert code blocks\n\tmd = md.replace(\n\t\t/<pre[^>]*><code[^>]*>(.*?)<\\/code><\\/pre>/gis,\n\t\t'\\n```\\n$1\\n```\\n',\n\t);\n\tmd = md.replace(/<code[^>]*>(.*?)<\\/code>/gi, '`$1`');\n\n\t// Convert lists (process li elements first, then containers)\n\tmd = md.replace(/<li[^>]*>(.*?)<\\/li>/gis, '\\n- $1');\n\tmd = md.replace(/<\\/?ul[^>]*>/gi, '\\n');\n\tmd = md.replace(/<\\/?ol[^>]*>/gi, '\\n');\n\n\t// Convert paragraphs\n\tmd = md.replace(/<p[^>]*>/gi, '\\n');\n\tmd = md.replace(/<\\/p>/gi, '\\n');\n\n\t// Convert line breaks\n\tmd = md.replace(/<br\\s*\\/?>/gi, '\\n');\n\tmd = md.replace(/<hr\\s*\\/?>/gi, '\\n---\\n');\n\n\t// Remove script and style tags\n\tmd = md.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, '');\n\tmd = md.replace(/<style\\b[^<]*(?:(?!<\\/style>)<[^<]*)*<\\/style>/gi, '');\n\n\t// Remove remaining HTML tags\n\tmd = md.replace(/<[^>]+>/g, '');\n\n\t// Decode HTML entities\n\tmd = md.replace(/ /g, ' ');\n\tmd = md.replace(/&/g, '&');\n\tmd = md.replace(/</g, '<');\n\tmd = md.replace(/>/g, '>');\n\tmd = md.replace(/"/g, '\"');\n\tmd = md.replace(/'/g, \"'\");\n\tmd = md.replace(/'/g, \"'\");\n\tmd = md.replace(/'/g, \"'\");\n\n\t// Clean up excessive whitespace\n\tmd = md.replace(/[ \\t]+/g, ' ');\n\tmd = md.replace(/\\n\\s+\\n/g, '\\n\\n');\n\tmd = md.replace(/\\n{3,}/g, '\\n\\n');\n\n\treturn md.trim();\n}\n\n/**\n * Generate footer for llms.txt index\n * Educates LLMs about available formats\n */\nexport function generateLLMsFooter(): string {\n\treturn '---\\nFormats: .txt | .md | Accept: text/plain | Accept: text/markdown';\n}\n",
|
|
58
58
|
"import { pathToFileURL } from 'node:url';\nimport type { ReactElement } from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport type { LLMsOptions } from '../config';\nimport { join } from '../ssr/lib/path';\nimport type { Doc } from '../ssr/lib/types';\nimport { renderSSRDocument } from '../ssr/render';\nimport { extractTitle, htmlToMarkdown, stripHtmlTags } from './formatter';\n\n/**\n * Check if a route should be excluded from LLM features\n * Supports strings (substring match), RegExp, and custom functions\n */\nexport function shouldExcludeRoute(\n\tpathname: string,\n\texcludeRoutes?: (string | RegExp | ((pathname: string) => boolean))[],\n): boolean {\n\tif (!excludeRoutes || excludeRoutes.length === 0) {\n\t\treturn false;\n\t}\n\n\treturn Boolean(\n\t\texcludeRoutes.find((pattern) => {\n\t\t\tif (typeof pattern === 'string') {\n\t\t\t\t// Substring match for simplicity\n\t\t\t\treturn pathname.includes(pattern);\n\t\t\t}\n\t\t\tif (pattern instanceof RegExp) {\n\t\t\t\treturn pattern.test(pathname);\n\t\t\t}\n\t\t\tif (typeof pattern === 'function') {\n\t\t\t\treturn pattern(pathname);\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\t);\n}\n\nasync function loadCollectionItem(\n\tcwd: string,\n\tpathname: string,\n\tisWatchMode: boolean,\n): Promise<{ item: Doc; collection: string } | null> {\n\tconst parts = pathname.split('/').filter(Boolean);\n\tif (parts.length < 2) return null;\n\n\tconst collection = parts[0];\n\tconst collectionFile = join(\n\t\tcwd,\n\t\t'.reroute',\n\t\t'collections',\n\t\t`${collection}.js`,\n\t);\n\tconst exists = await Bun.file(collectionFile).exists();\n\tif (!exists) return null;\n\n\tconst url = `${pathToFileURL(collectionFile).href}${isWatchMode ? `?t=${Date.now()}` : ''}`;\n\tconst mod = await import(url);\n\tconst items = mod.items || [];\n\n\tconst item = items.find((i: Doc) => i.href === pathname);\n\tif (!item) return null;\n\n\treturn { item, collection };\n}\n\nasync function findComponentPath(\n\tclientDir: string,\n\tcollection: string,\n\tslug: string,\n): Promise<string | null> {\n\tconst extensions = ['.mdx', '.md', '.tsx', '.jsx'];\n\n\tfor (const ext of extensions) {\n\t\tconst testPath = join(\n\t\t\tclientDir,\n\t\t\t'routes',\n\t\t\tcollection,\n\t\t\t'content',\n\t\t\t`${slug}${ext}`,\n\t\t);\n\t\tconst file = Bun.file(testPath);\n\t\tif (await file.exists()) {\n\t\t\treturn testPath;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction stripFrontmatterAndJsx(content: string, isMdx: boolean): string {\n\tlet rawContent = content.replace(/^---\\n[\\s\\S]*?\\n---\\n/, '');\n\n\tif (isMdx) {\n\t\trawContent = rawContent.replace(\n\t\t\t/^import\\s+.*?from\\s+['\"].*?['\"];?\\s*$/gm,\n\t\t\t'',\n\t\t);\n\t\trawContent = rawContent.replace(/<[A-Z][\\w]*[^>]*\\/>/g, '');\n\t\trawContent = rawContent.replace(\n\t\t\t/<[A-Z][\\w]*[^>]*>[\\s\\S]*?<\\/[A-Z][\\w]*>/g,\n\t\t\t'',\n\t\t);\n\t}\n\n\treturn rawContent.trim();\n}\n\nasync function extractMarkdownContent(\n\tcomponentPath: string,\n\tmeta: Record<string, unknown>,\n): Promise<{ title?: string; body: string; markdown: string }> {\n\tconst file = Bun.file(componentPath);\n\tlet rawContent = await file.text();\n\n\tconst isMdx = componentPath.endsWith('.mdx');\n\trawContent = stripFrontmatterAndJsx(rawContent, isMdx);\n\n\treturn {\n\t\ttitle: (meta.title as string) || extractTitle(rawContent),\n\t\tbody: stripHtmlTags(rawContent),\n\t\tmarkdown: rawContent,\n\t};\n}\n\nasync function extractComponentContent(\n\tcomponentPath: string,\n\tmeta: Record<string, unknown>,\n\tisWatchMode: boolean,\n): Promise<{ title?: string; body: string; markdown: string } | null> {\n\ttry {\n\t\tconst componentUrl = `${pathToFileURL(componentPath).href}${isWatchMode ? `?t=${Date.now()}` : ''}`;\n\t\tconst componentMod = await import(componentUrl);\n\n\t\tconst Component = componentMod.default;\n\t\tif (!Component || typeof Component !== 'function') return null;\n\n\t\tconst html = renderToStaticMarkup(Component({}));\n\n\t\treturn {\n\t\t\ttitle: (meta.title as string) || extractTitle(html),\n\t\t\tbody: stripHtmlTags(html),\n\t\t\tmarkdown: htmlToMarkdown(html),\n\t\t};\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute/llms] Failed to import component ${componentPath}:`,\n\t\t\terror,\n\t\t);\n\t\treturn null;\n\t}\n}\n\n/**\n * Extract content from a collection item (markdown/mdx)\n */\nasync function extractCollectionContent(\n\tcwd: string,\n\tclientDir: string,\n\tpathname: string,\n\tisWatchMode: boolean,\n\t_format: 'txt' | 'md',\n): Promise<{ title?: string; body: string; markdown: string } | null> {\n\ttry {\n\t\tconst collectionData = await loadCollectionItem(cwd, pathname, isWatchMode);\n\t\tif (!collectionData) return null;\n\n\t\tconst { item, collection } = collectionData;\n\t\tconst slug = item.slug || item.name;\n\t\tif (!slug) return null;\n\n\t\tconst componentPath = await findComponentPath(clientDir, collection, slug);\n\t\tif (!componentPath) return null;\n\n\t\tconst meta = item.meta || {};\n\n\t\tif (componentPath.endsWith('.md') || componentPath.endsWith('.mdx')) {\n\t\t\treturn await extractMarkdownContent(componentPath, meta);\n\t\t}\n\n\t\treturn await extractComponentContent(componentPath, meta, isWatchMode);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute/llms] Failed to extract collection content for ${pathname}:`,\n\t\t\terror,\n\t\t);\n\t\treturn null;\n\t}\n}\n\n/**\n * Extract content from an SSR route using full app rendering\n */\nasync function extractSSRContent(\n\tpathname: string,\n\trootComponent: ReactElement,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tbundleUrl: string,\n\t_format: 'txt' | 'md',\n): Promise<{ title?: string; body: string; markdown: string } | null> {\n\ttry {\n\t\t// Use the full SSR rendering pipeline to get the complete HTML\n\t\t// This includes all providers, context, and hooks - just like a real request\n\t\tconst { html } = await renderSSRDocument({\n\t\t\tpathname,\n\t\t\trootComponent,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\tbundleUrl,\n\t\t\tminify: false,\n\t\t\tmaxAge: 0,\n\t\t});\n\n\t\t// Extract just the content from the rendered HTML\n\t\t// Remove script tags, styles, nav, footer, etc.\n\t\tlet contentHtml = html;\n\n\t\t// Extract the body content (inside the app div)\n\t\tconst appDivMatch = html.match(/<div id=\"[^\"]+\">(.+?)<\\/div>\\s*<script/s);\n\t\tif (appDivMatch) {\n\t\t\tcontentHtml = appDivMatch[1];\n\t\t}\n\n\t\t// Remove nav and footer elements (common layout noise)\n\t\tcontentHtml = contentHtml.replace(/<nav[\\s\\S]*?<\\/nav>/gi, '');\n\t\tcontentHtml = contentHtml.replace(/<footer[\\s\\S]*?<\\/footer>/gi, '');\n\t\tcontentHtml = contentHtml.replace(/<header[\\s\\S]*?<\\/header>/gi, '');\n\t\tcontentHtml = contentHtml.replace(/<aside[\\s\\S]*?<\\/aside>/gi, '');\n\n\t\treturn {\n\t\t\ttitle: extractTitle(html),\n\t\t\tbody: stripHtmlTags(contentHtml),\n\t\t\tmarkdown: htmlToMarkdown(contentHtml),\n\t\t};\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute/llms] Failed to extract SSR content for ${pathname}:`,\n\t\t\terror,\n\t\t);\n\t\treturn null;\n\t}\n}\n\n/**\n * Main content extraction function\n * Extracts clean, LLM-optimized content from any route type\n */\nexport async function extractContentForLLMs(options: {\n\tpathname: string;\n\trootComponent?: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tbundleUrl?: string;\n\tformat: 'txt' | 'md';\n\tllmsConfig?: LLMsOptions;\n}): Promise<string> {\n\tconst {\n\t\tpathname,\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tbundleUrl,\n\t\tformat,\n\t\tllmsConfig,\n\t} = options;\n\n\t// Check if route should be excluded\n\tif (shouldExcludeRoute(pathname, llmsConfig?.excludeRoutes)) {\n\t\tthrow new Error('Route excluded from LLM features');\n\t}\n\n\t// Try collection content first (most common case for content sites)\n\tlet content = await extractCollectionContent(\n\t\tcwd,\n\t\tclientDir,\n\t\tpathname,\n\t\tisWatchMode,\n\t\tformat,\n\t);\n\n\t// Fall back to SSR route (uses full app rendering)\n\tif (!content && rootComponent && bundleUrl) {\n\t\tcontent = await extractSSRContent(\n\t\t\tpathname,\n\t\t\trootComponent,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\tbundleUrl,\n\t\t\tformat,\n\t\t);\n\t}\n\n\t// If we still don't have content, throw\n\tif (!content) {\n\t\tthrow new Error('Content not found');\n\t}\n\n\t// Return based on format\n\tif (format === 'md') {\n\t\t// Return markdown with title as h1\n\t\tconst parts: string[] = [];\n\t\tif (content.title) {\n\t\t\tparts.push(`# ${content.title}`);\n\t\t\tparts.push('');\n\t\t}\n\t\tparts.push(content.markdown);\n\t\treturn parts.join('\\n');\n\t}\n\n\t// Return plain text\n\tconst parts: string[] = [];\n\tif (content.title) {\n\t\tparts.push(content.title);\n\t\tparts.push('');\n\t}\n\tparts.push(content.body);\n\treturn parts.join('\\n');\n}\n",
|
|
59
|
+
"import type { ContentSignalPolicy, LLMsOptions } from '../config';\nimport { shouldExcludeRoute } from './extractor';\n\ntype LlmsDiscovery = {\n\tlinkValues: string[];\n\tcontentSignal?: string;\n\tvary?: string;\n};\n\nfunction yesNo(value: boolean | undefined): 'yes' | 'no' {\n\treturn value === false ? 'no' : 'yes';\n}\n\n/**\n * Format a Content-Signal header / robots.txt value.\n * `whenUndefined: 'default'` emits the allow-all policy used when llms is on.\n */\nexport function formatContentSignal(\n\tpolicy: ContentSignalPolicy | false | undefined,\n\twhenUndefined: 'default' | 'omit' = 'omit',\n): string | undefined {\n\tif (policy === false) return undefined;\n\tif (policy === undefined && whenUndefined === 'omit') return undefined;\n\n\tconst resolved = {\n\t\tsearch: true,\n\t\taiInput: true,\n\t\taiTrain: true,\n\t\t...policy,\n\t};\n\n\treturn `ai-train=${yesNo(resolved.aiTrain)}, search=${yesNo(resolved.search)}, ai-input=${yesNo(resolved.aiInput)}`;\n}\n\n/**\n * Markdown twin path for a page URL (`/` → `/index.md`).\n */\nexport function markdownTwinPath(pathname: string): string {\n\tconst path = pathname.split('?')[0];\n\tif (path === '/' || path === '') return '/index.md';\n\treturn `${path.replace(/\\/$/, '')}.md`;\n}\n\nexport function shouldAdvertiseMarkdownTwin(\n\tpathname: string,\n\tllmsConfig?: LLMsOptions,\n): boolean {\n\tif (!llmsConfig?.enabled) return false;\n\tif (llmsConfig.enableMarkdownExtension === false) return false;\n\tif (shouldExcludeRoute(pathname, llmsConfig.excludeRoutes)) return false;\n\treturn true;\n}\n\nexport function llmsAlternateLinkTag(\n\tpathname: string,\n\tllmsConfig?: LLMsOptions,\n): string {\n\tif (!shouldAdvertiseMarkdownTwin(pathname, llmsConfig)) return '';\n\treturn `<link rel=\"alternate\" type=\"text/markdown\" href=\"${markdownTwinPath(pathname)}\" />`;\n}\n\nexport function mergeVary(existing: string | undefined, token: string): string {\n\tconst parts = (existing ?? '')\n\t\t.split(',')\n\t\t.map((part) => part.trim())\n\t\t.filter(Boolean);\n\tif (!parts.some((part) => part.toLowerCase() === token.toLowerCase())) {\n\t\tparts.push(token);\n\t}\n\treturn parts.join(', ');\n}\n\nfunction appendLinkValues(\n\texisting: string | undefined,\n\tvalues: string[],\n): string {\n\tconst current = (existing ?? '')\n\t\t.split(',')\n\t\t.map((part) => part.trim())\n\t\t.filter(Boolean);\n\tfor (const value of values) {\n\t\tif (!current.includes(value)) current.push(value);\n\t}\n\treturn current.join(', ');\n}\n\nexport function buildLlmsDiscovery(\n\tpathname: string,\n\tllmsConfig?: LLMsOptions,\n): LlmsDiscovery | null {\n\tif (!llmsConfig?.enabled) return null;\n\n\tconst linkValues: string[] = [];\n\tif (shouldAdvertiseMarkdownTwin(pathname, llmsConfig)) {\n\t\tlinkValues.push(\n\t\t\t`<${markdownTwinPath(pathname)}>; rel=\"alternate\"; type=\"text/markdown\"`,\n\t\t);\n\t}\n\tif (llmsConfig.enableIndex !== false) {\n\t\tlinkValues.push('</llms.txt>; rel=\"llms-txt\"');\n\t}\n\n\tconst contentSignal = formatContentSignal(\n\t\tllmsConfig.contentSignal,\n\t\t'default',\n\t);\n\tconst vary =\n\t\tllmsConfig.enableContentNegotiation !== false ? 'Accept' : undefined;\n\n\tif (linkValues.length === 0 && !contentSignal && !vary) return null;\n\treturn { linkValues, contentSignal, vary };\n}\n\nfunction writeHeader(\n\theaders: Record<string, string>,\n\tcanonical: string,\n\tvalue: string,\n): void {\n\tconst lower = canonical.toLowerCase();\n\tif (headers[lower] !== undefined) headers[lower] = value;\n\tif (headers[canonical] !== undefined || headers[lower] === undefined) {\n\t\theaders[canonical] = value;\n\t}\n}\n\nfunction readHeader(\n\theaders: Record<string, string>,\n\tcanonical: string,\n): string | undefined {\n\treturn headers[canonical] ?? headers[canonical.toLowerCase()];\n}\n\n/**\n * Stamp discovery headers onto an HTML header bag. Idempotent.\n */\nexport function applyLlmsDiscoveryHeaders(\n\theaders: Record<string, string>,\n\tpathname: string,\n\tllmsConfig: LLMsOptions | undefined,\n\tstatus = 200,\n): void {\n\tif (status < 200 || status >= 300) return;\n\n\tconst discovery = buildLlmsDiscovery(pathname, llmsConfig);\n\tif (!discovery) return;\n\n\tif (discovery.linkValues.length > 0) {\n\t\twriteHeader(\n\t\t\theaders,\n\t\t\t'Link',\n\t\t\tappendLinkValues(readHeader(headers, 'Link'), discovery.linkValues),\n\t\t);\n\t}\n\tif (discovery.contentSignal) {\n\t\twriteHeader(headers, 'Content-Signal', discovery.contentSignal);\n\t}\n\tif (discovery.vary) {\n\t\twriteHeader(\n\t\t\theaders,\n\t\t\t'Vary',\n\t\t\tmergeVary(readHeader(headers, 'Vary'), discovery.vary),\n\t\t);\n\t}\n}\n\nexport function appendLlmsAlternateHead(\n\textraHead: string,\n\tpathname: string,\n\tstatus: number,\n\tllmsConfig?: LLMsOptions,\n): string {\n\tif (status !== 200) return extraHead;\n\tconst tag = llmsAlternateLinkTag(pathname, llmsConfig);\n\treturn tag ? `${extraHead}\\n${tag}` : extraHead;\n}\n\nexport type { LlmsDiscovery };\n",
|
|
59
60
|
"import { pathToFileURL } from 'node:url';\nimport type { LLMsOptions } from '../config';\nimport { join } from '../ssr/lib/path';\nimport type { Doc, SSR } from '../ssr/lib/types';\nimport { shouldExcludeRoute } from './extractor';\n\ntype RouteEntry = {\n\tpath: string;\n\tsection?: string;\n\ttitle?: string;\n\tdescription?: string;\n};\n\nfunction oneLine(value: string): string {\n\treturn value.replace(/\\s+/g, ' ').trim();\n}\n\nfunction stringField(\n\trecord: Record<string, unknown> | undefined,\n\tkey: string,\n): string | undefined {\n\tconst value = record?.[key];\n\tif (typeof value !== 'string') return undefined;\n\tconst trimmed = oneLine(value);\n\treturn trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction metaFromUnknown(meta: unknown): {\n\ttitle?: string;\n\tdescription?: string;\n} {\n\tif (!meta || typeof meta !== 'object') return {};\n\tconst record = meta as Record<string, unknown>;\n\treturn {\n\t\ttitle: stringField(record, 'title') ?? stringField(record, 'name'),\n\t\tdescription:\n\t\t\tstringField(record, 'description') ?? stringField(record, 'excerpt'),\n\t};\n}\n\n/**\n * Discover static routes from routes.ts\n */\nexport async function discoverStaticRoutes(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<RouteEntry[]> {\n\tconst routes: RouteEntry[] = [];\n\n\ttry {\n\t\t// Check for bundled routes first (compiled binary support)\n\t\tlet routesList = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_ROUTES__ as Doc[] | undefined;\n\n\t\t// Fallback to dynamic import (dev mode)\n\t\tif (!routesList) {\n\t\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\t\tconst url = pathToFileURL(routesPath).href;\n\t\t\tconst mod = await import(\n\t\t\t\t`${url}${isWatchMode ? `?t=${Date.now()}` : ''}`\n\t\t\t);\n\t\t\troutesList = (mod as Doc)?.routes as Doc[] | undefined;\n\t\t}\n\t\tif (Array.isArray(routesList)) {\n\t\t\tfor (const route of routesList) {\n\t\t\t\tconst pattern = String(route?.pattern || '');\n\n\t\t\t\t// Skip error pages, layouts, and dynamic routes\n\t\t\t\tif (\n\t\t\t\t\tpattern.includes('[404]') ||\n\t\t\t\t\tpattern.includes('[layout]') ||\n\t\t\t\t\tpattern.includes('[skeleton]') ||\n\t\t\t\t\tpattern.includes(':')\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst { title, description } = metaFromUnknown(route?.meta);\n\t\t\t\troutes.push({\n\t\t\t\t\tpath: pattern,\n\t\t\t\t\ttitle,\n\t\t\t\t\tdescription,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('[reroute/llms] Failed to discover routes for index:', error);\n\t}\n\n\treturn routes;\n}\n\nasync function loadCollectionModule(\n\tcwd: string,\n\tcollection: string,\n\tisWatchMode: boolean,\n): Promise<Doc[] | null> {\n\tconst collectionFile = join(\n\t\tcwd,\n\t\t'.reroute',\n\t\t'collections',\n\t\t`${collection}.js`,\n\t);\n\tconst exists = await Bun.file(collectionFile).exists();\n\n\tif (!exists) return null;\n\n\tconst url = `${pathToFileURL(collectionFile).href}${isWatchMode ? `?t=${Date.now()}` : ''}`;\n\tconst mod = await import(url);\n\treturn mod.items || [];\n}\n\nfunction createRouteEntriesFromItems(\n\titems: Doc[],\n\tcollection: string,\n): RouteEntry[] {\n\tconst routes: RouteEntry[] = [];\n\n\tfor (const item of items) {\n\t\tconst href = String(item.href || '');\n\t\tif (href) {\n\t\t\tconst fromMeta = metaFromUnknown(item.meta);\n\t\t\tconst title =\n\t\t\t\tfromMeta.title ||\n\t\t\t\t(typeof item.name === 'string' ? item.name : undefined);\n\t\t\troutes.push({\n\t\t\t\tpath: href,\n\t\t\t\tsection: collection,\n\t\t\t\ttitle,\n\t\t\t\tdescription: fromMeta.description,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn routes;\n}\n\nfunction sortRoutesByDate(routes: RouteEntry[], items: Doc[]): void {\n\troutes.sort((a, b) => {\n\t\tconst aItem = items.find((i: Doc) => i.href === a.path);\n\t\tconst bItem = items.find((i: Doc) => i.href === b.path);\n\n\t\tconst aDate = aItem?.meta?.date;\n\t\tconst bDate = bItem?.meta?.date;\n\n\t\tif (aDate && bDate) {\n\t\t\treturn new Date(bDate).getTime() - new Date(aDate).getTime();\n\t\t}\n\n\t\treturn 0;\n\t});\n}\n\n/**\n * Discover collection content\n */\nexport async function discoverCollectionRoutes(\n\tcwd: string,\n\tcollections: string[],\n\tisWatchMode: boolean,\n\tllmsConfig?: LLMsOptions,\n): Promise<Map<string, RouteEntry[]>> {\n\tconst collectionsMap = new Map<string, RouteEntry[]>();\n\n\tfor (const collection of collections) {\n\t\tif (llmsConfig?.excludeCollections?.includes(collection)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttry {\n\t\t\tconst items = await loadCollectionModule(cwd, collection, isWatchMode);\n\t\t\tif (!items) continue;\n\n\t\t\tconst routes = createRouteEntriesFromItems(items, collection);\n\n\t\t\tif (routes.length > 0) {\n\t\t\t\tsortRoutesByDate(routes, items);\n\t\t\t\tcollectionsMap.set(collection, routes);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\n\t\t\t\t`[reroute/llms] Failed to discover collection ${collection}:`,\n\t\t\t\terror,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn collectionsMap;\n}\n\nasync function loadRouteModule(\n\tcwd: string,\n\troutePath: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\tconst abs = join(cwd, 'src', 'client', 'routes', routePath);\n\t\tconst modUrl = `${pathToFileURL(abs).href}${isWatchMode ? `?t=${Date.now()}` : ''}`;\n\t\treturn (await import(modUrl)) as Doc;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nasync function callDataFunction(\n\tdataFn: (ctx: Doc) => unknown | Promise<unknown>,\n\troutePath: string,\n): Promise<unknown> {\n\tconst mockSet = { status: 200 };\n\treturn await dataFn({\n\t\tpathname: routePath,\n\t\tparams: {},\n\t\tset: mockSet,\n\t});\n}\n\nfunction extractIdentifier(item: Record<string, unknown>): string | undefined {\n\treturn (item.version || item.slug || item.id || item.name || item.key) as\n\t\t| string\n\t\t| undefined;\n}\n\nfunction createEntriesFromArray(array: Doc[], routePath: string): RouteEntry[] {\n\tconst entries: RouteEntry[] = [];\n\n\tfor (const item of array) {\n\t\tif (typeof item !== 'object' || item === null) continue;\n\n\t\tconst identifier = extractIdentifier(item);\n\t\tif (identifier) {\n\t\t\tconst fromItem = metaFromUnknown(item);\n\t\t\tconst fromMeta = metaFromUnknown(item.meta);\n\t\t\tentries.push({\n\t\t\t\tpath: `${routePath}/${identifier}`,\n\t\t\t\tsection: routePath.split('/').filter(Boolean)[0],\n\t\t\t\ttitle: fromItem.title ?? fromMeta.title,\n\t\t\t\tdescription: fromItem.description ?? fromMeta.description,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn entries;\n}\n\n/**\n * Discover SSR data routes (routes with ssr.data that return arrays)\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: discovering ssr data routes is complex\nexport async function discoverSSRDataRoutes(\n\tcwd: string,\n\tstaticRoutes: RouteEntry[],\n\tisWatchMode: boolean,\n): Promise<Map<string, RouteEntry[]>> {\n\tconst ssrDataRoutes = new Map<string, RouteEntry[]>();\n\n\t// Check for bundled routes first (compiled binary support)\n\tconst bundledRoutes = (globalThis as Record<string, unknown>)\n\t\t.__REROUTE_ROUTES__ as Doc[] | undefined;\n\n\tif (bundledRoutes && Array.isArray(bundledRoutes)) {\n\t\t// In production: use pre-loaded SSR data from bundled routes\n\t\t// Match static routes against bundled routes to get their ssr.data\n\t\tfor (const route of staticRoutes) {\n\t\t\t// Find the matching bundled route by path\n\t\t\tconst bundledRoute = bundledRoutes.find((r) => r?.path === route.path);\n\n\t\t\tif (!bundledRoute) continue;\n\n\t\t\tconst ssr = (bundledRoute as Doc)?.ssr as Doc | undefined;\n\t\t\tconst dataFn = (ssr as Doc)?.data as\n\t\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t\t| undefined;\n\n\t\t\tif (typeof dataFn !== 'function') continue;\n\n\t\t\tconst result = await callDataFunction(dataFn, route.path);\n\t\t\tconst arrays = findArraysInData(result);\n\n\t\t\tfor (const array of arrays) {\n\t\t\t\tif (array.length === 0) continue;\n\n\t\t\t\tconst entries = createEntriesFromArray(array, route.path);\n\t\t\t\tif (entries.length > 0) {\n\t\t\t\t\tssrDataRoutes.set(route.path, entries);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Dev mode: dynamically import route modules\n\t\tfor (const route of staticRoutes) {\n\t\t\tconst mod = await loadRouteModule(cwd, route.path, isWatchMode);\n\t\t\tif (!mod) continue;\n\n\t\t\tconst ssr = (mod as Doc)?.ssr as SSR | undefined;\n\t\t\tconst dataFn = ssr?.data;\n\n\t\t\tif (typeof dataFn !== 'function') continue;\n\n\t\t\tconst result = await callDataFunction(dataFn, route.path);\n\t\t\tconst arrays = findArraysInData(result);\n\n\t\t\tfor (const array of arrays) {\n\t\t\t\tif (array.length === 0) continue;\n\n\t\t\t\tconst entries = createEntriesFromArray(array, route.path);\n\t\t\t\tif (entries.length > 0) {\n\t\t\t\t\tssrDataRoutes.set(route.path, entries);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn ssrDataRoutes;\n}\n\n/**\n * Find arrays in data object (recursive)\n */\nfunction findArraysInData(obj: unknown): Doc[] {\n\tconst arrays: Doc[] = [];\n\n\tif (!obj || typeof obj !== 'object') {\n\t\treturn arrays;\n\t}\n\n\tfor (const value of Object.values(obj)) {\n\t\tif (Array.isArray(value)) {\n\t\t\tarrays.push(value);\n\t\t} else if (value && typeof value === 'object') {\n\t\t\tarrays.push(...findArraysInData(value));\n\t\t}\n\t}\n\n\treturn arrays;\n}\n\nfunction addIndexHeader(parts: string[], llmsConfig?: LLMsOptions): void {\n\tif (llmsConfig?.siteName) {\n\t\tparts.push(`# ${llmsConfig.siteName}`);\n\t\tparts.push('');\n\t}\n\n\tif (llmsConfig?.siteDescription) {\n\t\tparts.push(llmsConfig.siteDescription);\n\t\tparts.push('');\n\t}\n}\n\nfunction groupStaticRoutes(\n\tstaticRoutes: RouteEntry[],\n\tllmsConfig?: LLMsOptions,\n): { sections: Map<string, RouteEntry[]>; rootRoutes: RouteEntry[] } {\n\tconst sections = new Map<string, RouteEntry[]>();\n\tconst rootRoutes: RouteEntry[] = [];\n\n\tfor (const route of staticRoutes) {\n\t\tif (shouldExcludeRoute(route.path, llmsConfig?.excludeRoutes)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (route.path === '/') {\n\t\t\trootRoutes.push(route);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst firstSegment = route.path.split('/').filter(Boolean)[0];\n\t\tif (!firstSegment) {\n\t\t\trootRoutes.push(route);\n\t\t} else {\n\t\t\tif (!sections.has(firstSegment)) {\n\t\t\t\tsections.set(firstSegment, []);\n\t\t\t}\n\t\t\tsections.get(firstSegment)?.push(route);\n\t\t}\n\t}\n\n\treturn { sections, rootRoutes };\n}\n\nfunction formatRouteUrl(routePath: string, baseUrl: string): string {\n\tconst urlPath = routePath === '/' ? '/index' : routePath;\n\treturn `${baseUrl}${urlPath}.txt`;\n}\n\nfunction getRouteTitle(route: RouteEntry): string {\n\treturn (\n\t\troute.title ||\n\t\t(route.path === '/' ? 'Home' : route.path.split('/').pop() || 'Page')\n\t);\n}\n\nfunction formatIndexLine(\n\troute: RouteEntry,\n\turl: string,\n\tsummaries: boolean,\n): string {\n\tconst link = `- [${getRouteTitle(route)}](${url})`;\n\tif (!(summaries && route.description)) return link;\n\treturn `${link}: ${route.description}`;\n}\n\nfunction summariesEnabled(llmsConfig?: LLMsOptions): boolean {\n\treturn llmsConfig?.indexSummaries !== false;\n}\n\nfunction addRootRoutes(\n\tparts: string[],\n\trootRoutes: RouteEntry[],\n\tbaseUrl: string,\n\tisScoped: boolean,\n\tllmsConfig?: LLMsOptions,\n): void {\n\tif (isScoped || rootRoutes.length === 0) return;\n\n\tconst summaries = summariesEnabled(llmsConfig);\n\tfor (const route of rootRoutes) {\n\t\tparts.push(\n\t\t\tformatIndexLine(route, formatRouteUrl(route.path, baseUrl), summaries),\n\t\t);\n\t}\n\tparts.push('');\n}\n\nfunction addCollectionSection(\n\tparts: string[],\n\tcollection: string,\n\troutes: RouteEntry[],\n\tbaseUrl: string,\n\tllmsConfig?: LLMsOptions,\n): void {\n\tconst filteredRoutes = routes.filter(\n\t\t(r) => !shouldExcludeRoute(r.path, llmsConfig?.excludeRoutes),\n\t);\n\n\tif (filteredRoutes.length === 0) return;\n\n\tconst sectionName = collection.charAt(0).toUpperCase() + collection.slice(1);\n\tparts.push(`## ${sectionName}`);\n\tparts.push('');\n\n\tconst summaries = summariesEnabled(llmsConfig);\n\tfor (const route of filteredRoutes) {\n\t\tparts.push(\n\t\t\tformatIndexLine(route, `${baseUrl}${route.path}.txt`, summaries),\n\t\t);\n\t}\n\tparts.push('');\n}\n\nfunction shouldIncludeSection(\n\tsection: string,\n\tisScoped: boolean,\n\ttargetCollection: string | null,\n): boolean {\n\treturn !isScoped || section === targetCollection;\n}\n\nfunction addSSRDataSection(\n\tparts: string[],\n\troutePattern: string,\n\troutes: RouteEntry[],\n\tbaseUrl: string,\n\tisScoped: boolean,\n\ttargetCollection: string | null,\n\tllmsConfig?: LLMsOptions,\n): void {\n\tconst routeSection = routePattern.split('/').filter(Boolean)[0];\n\n\tif (!shouldIncludeSection(routeSection, isScoped, targetCollection)) {\n\t\treturn;\n\t}\n\n\tconst filteredRoutes = routes.filter(\n\t\t(r) => !shouldExcludeRoute(r.path, llmsConfig?.excludeRoutes),\n\t);\n\n\tif (filteredRoutes.length === 0) return;\n\n\tconst sectionName =\n\t\trouteSection?.charAt(0).toUpperCase() + routeSection?.slice(1) || 'Content';\n\tparts.push(`## ${sectionName}`);\n\tparts.push('');\n\n\tconst summaries = summariesEnabled(llmsConfig);\n\tfor (const route of filteredRoutes) {\n\t\tparts.push(\n\t\t\tformatIndexLine(route, `${baseUrl}${route.path}.txt`, summaries),\n\t\t);\n\t}\n\tparts.push('');\n}\n\nfunction addStaticSection(\n\tparts: string[],\n\tsection: string,\n\troutes: RouteEntry[],\n\tbaseUrl: string,\n\tisScoped: boolean,\n\ttargetCollection: string | null,\n\tcollectionsMap: Map<string, RouteEntry[]>,\n\tllmsConfig?: LLMsOptions,\n): void {\n\tif (!shouldIncludeSection(section, isScoped, targetCollection)) {\n\t\treturn;\n\t}\n\n\tconst filteredRoutes = routes.filter(\n\t\t(r) => !shouldExcludeRoute(r.path, llmsConfig?.excludeRoutes),\n\t);\n\n\tif (filteredRoutes.length === 0 || collectionsMap.has(section)) return;\n\n\tconst sectionName = section.charAt(0).toUpperCase() + section.slice(1);\n\tparts.push(`## ${sectionName}`);\n\tparts.push('');\n\n\tconst summaries = summariesEnabled(llmsConfig);\n\tfor (const route of filteredRoutes) {\n\t\tparts.push(\n\t\t\tformatIndexLine(route, `${baseUrl}${route.path}.txt`, summaries),\n\t\t);\n\t}\n\tparts.push('');\n}\n\n/**\n * Generate /llms.txt index\n * Token-efficient index: title, description, and link per page, grouped by section.\n */\nexport async function generateLLMsIndex(options: {\n\tcwd: string;\n\tcollections: string[];\n\tbaseUrl: string;\n\tisWatchMode: boolean;\n\tllmsConfig?: LLMsOptions;\n\t/** Collection-scoped index (`/help/llms.txt`). Omit for site-wide `/llms.txt`. */\n\ttargetCollection?: string;\n}): Promise<string> {\n\tconst { cwd, collections, baseUrl, isWatchMode, llmsConfig } = options;\n\tconst targetCollection = options.targetCollection ?? null;\n\tconst isScoped = targetCollection !== null;\n\n\tconst parts: string[] = [];\n\taddIndexHeader(parts, llmsConfig);\n\n\tconst staticRoutes = await discoverStaticRoutes(cwd, isWatchMode);\n\tconst collectionsMap = await discoverCollectionRoutes(\n\t\tcwd,\n\t\tcollections,\n\t\tisWatchMode,\n\t\tllmsConfig,\n\t);\n\tconst ssrDataRoutes = await discoverSSRDataRoutes(\n\t\tcwd,\n\t\tstaticRoutes,\n\t\tisWatchMode,\n\t);\n\n\tconst { sections, rootRoutes } = groupStaticRoutes(staticRoutes, llmsConfig);\n\n\taddRootRoutes(parts, rootRoutes, baseUrl, isScoped, llmsConfig);\n\n\tfor (const [collection, routes] of collectionsMap.entries()) {\n\t\tif (routes.length > 0) {\n\t\t\taddCollectionSection(parts, collection, routes, baseUrl, llmsConfig);\n\t\t}\n\t}\n\n\tfor (const [routePattern, routes] of ssrDataRoutes.entries()) {\n\t\tif (routes.length > 0) {\n\t\t\taddSSRDataSection(\n\t\t\t\tparts,\n\t\t\t\troutePattern,\n\t\t\t\troutes,\n\t\t\t\tbaseUrl,\n\t\t\t\tisScoped,\n\t\t\t\ttargetCollection,\n\t\t\t\tllmsConfig,\n\t\t\t);\n\t\t}\n\t}\n\n\tfor (const [section, routes] of sections.entries()) {\n\t\tif (routes.length > 0) {\n\t\t\taddStaticSection(\n\t\t\t\tparts,\n\t\t\t\tsection,\n\t\t\t\troutes,\n\t\t\t\tbaseUrl,\n\t\t\t\tisScoped,\n\t\t\t\ttargetCollection,\n\t\t\t\tcollectionsMap,\n\t\t\t\tllmsConfig,\n\t\t\t);\n\t\t}\n\t}\n\n\tparts.push('---');\n\tparts.push('');\n\tparts.push(\n\t\t'Formats: .txt | .md | Accept: text/plain | Accept: text/markdown',\n\t);\n\n\treturn parts.join('\\n');\n}\n",
|
|
60
61
|
"import type { ReactElement } from 'react';\nimport type { LLMsOptions } from '../config';\nimport { extractContentForLLMs, shouldExcludeRoute } from './extractor';\n\ntype RouteEntry = {\n\tpath: string;\n\tdate?: string;\n};\n\nfunction buildHeader(baseUrl: string, llmsConfig?: LLMsOptions): string[] {\n\tconst parts: string[] = [];\n\n\tif (llmsConfig?.siteName) {\n\t\tparts.push(`# ${llmsConfig.siteName}`);\n\t\tparts.push('');\n\t}\n\n\tif (llmsConfig?.siteDescription) {\n\t\tparts.push(llmsConfig.siteDescription);\n\t\tparts.push('');\n\t}\n\n\tif (parts.length > 0) {\n\t\tparts.push(`${baseUrl}/index.txt`);\n\t\tparts.push('');\n\t\tparts.push('---');\n\t\tparts.push('');\n\t}\n\n\treturn parts;\n}\n\nasync function discoverAllRoutes(\n\tcwd: string,\n\tcollections: string[],\n\tisWatchMode: boolean,\n\tllmsConfig?: LLMsOptions,\n): Promise<RouteEntry[]> {\n\tconst {\n\t\tdiscoverStaticRoutes,\n\t\tdiscoverCollectionRoutes,\n\t\tdiscoverSSRDataRoutes,\n\t} = await import('./index-generator');\n\n\tconst staticRoutes = await discoverStaticRoutes(cwd, isWatchMode);\n\tconst collectionsMap = await discoverCollectionRoutes(\n\t\tcwd,\n\t\tcollections,\n\t\tisWatchMode,\n\t\tllmsConfig,\n\t);\n\tconst ssrDataRoutes = await discoverSSRDataRoutes(\n\t\tcwd,\n\t\tstaticRoutes,\n\t\tisWatchMode,\n\t);\n\n\tconst allRoutes: RouteEntry[] = [];\n\n\tfor (const route of staticRoutes) {\n\t\tif (!shouldExcludeRoute(route.path, llmsConfig?.excludeRoutes)) {\n\t\t\tallRoutes.push({ path: route.path });\n\t\t}\n\t}\n\n\tfor (const [_collection, routes] of collectionsMap.entries()) {\n\t\tfor (const route of routes) {\n\t\t\tif (!shouldExcludeRoute(route.path, llmsConfig?.excludeRoutes)) {\n\t\t\t\tallRoutes.push({ path: route.path });\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const [_routePattern, routes] of ssrDataRoutes.entries()) {\n\t\tfor (const route of routes) {\n\t\t\tif (!shouldExcludeRoute(route.path, llmsConfig?.excludeRoutes)) {\n\t\t\t\tallRoutes.push({ path: route.path });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn allRoutes;\n}\n\nfunction routeBelongsToCollection(path: string, collection: string): boolean {\n\treturn path === `/${collection}` || path.startsWith(`/${collection}/`);\n}\n\nfunction formatContentBlock(\n\tcontent: string,\n\troutePath: string,\n\tbaseUrl: string,\n): string[] {\n\tconst parts: string[] = [];\n\tconst lines = content.split('\\n');\n\tconst title = lines[0] || 'Untitled';\n\tconst body = lines.slice(lines[1] === '' ? 2 : 1).join('\\n');\n\n\tconst urlPath = routePath === '/' ? '/index' : routePath;\n\tconst url = `${baseUrl}${urlPath}.txt`;\n\n\tparts.push(title);\n\tparts.push('');\n\tparts.push(url);\n\tparts.push('');\n\tif (body.trim()) {\n\t\tparts.push(body);\n\t\tparts.push('');\n\t}\n\tparts.push('---');\n\tparts.push('');\n\n\treturn parts;\n}\n\nasync function extractRouteContents(\n\troutes: RouteEntry[],\n\toptions: {\n\t\trootComponent?: ReactElement;\n\t\tcwd: string;\n\t\tclientDir: string;\n\t\tbaseUrl: string;\n\t\tisWatchMode: boolean;\n\t\tbundleUrl?: string;\n\t\tllmsConfig?: LLMsOptions;\n\t},\n): Promise<{ parts: string[]; itemCount: number; currentSize: number }> {\n\tconst parts: string[] = [];\n\tconst maxSize = options.llmsConfig?.maxSize || 50 * 1024 * 1024;\n\tlet itemCount = 0;\n\tlet currentSize = 0;\n\n\tfor (const route of routes) {\n\t\ttry {\n\t\t\tconst content = await extractContentForLLMs({\n\t\t\t\tpathname: route.path,\n\t\t\t\trootComponent: options.rootComponent,\n\t\t\t\tclientDir: options.clientDir,\n\t\t\t\tcwd: options.cwd,\n\t\t\t\tisWatchMode: options.isWatchMode,\n\t\t\t\tbundleUrl: options.bundleUrl,\n\t\t\t\tformat: 'txt',\n\t\t\t\tllmsConfig: options.llmsConfig,\n\t\t\t});\n\n\t\t\tconst contentSize = Buffer.byteLength(content, 'utf8');\n\t\t\tif (currentSize + contentSize > maxSize) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[reroute/llms] Reached size limit (${maxSize} bytes), stopping at ${itemCount} items`,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst blockParts = formatContentBlock(\n\t\t\t\tcontent,\n\t\t\t\troute.path,\n\t\t\t\toptions.baseUrl,\n\t\t\t);\n\t\t\tparts.push(...blockParts);\n\n\t\t\titemCount++;\n\t\t\tcurrentSize += contentSize;\n\t\t} catch (error) {\n\t\t\tconsole.warn(\n\t\t\t\t`[reroute/llms] Failed to extract content for ${route.path}:`,\n\t\t\t\terror,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn { parts, itemCount, currentSize };\n}\n\nfunction buildFooter(parts: string[]): void {\n\tif (parts.length === 0) return;\n\n\t// Remove last separator\n\tif (parts[parts.length - 1] === '') parts.pop();\n\tif (parts[parts.length - 1] === '---') parts.pop();\n\tif (parts[parts.length - 1] === '') parts.pop();\n\n\tparts.push('---');\n\tparts.push('');\n\tparts.push(\n\t\t'Formats: .txt | .md | Accept: text/plain | Accept: text/markdown',\n\t);\n}\n\n/**\n * Generate /llms-full.txt - all site content in one file\n * Runtime-only generation with aggressive caching (7 days default)\n */\nexport async function generateLLMsFullContent(options: {\n\trootComponent?: ReactElement;\n\tcwd: string;\n\tclientDir: string;\n\tcollections: string[];\n\tbaseUrl: string;\n\tisWatchMode: boolean;\n\tbundleUrl?: string;\n\tllmsConfig?: LLMsOptions;\n\t/** Collection-scoped dump (`/help/llms-full.txt`). Omit for site-wide `/llms-full.txt`. */\n\ttargetCollection?: string;\n}): Promise<{\n\tcontent: string;\n\tstats: { itemCount: number; byteSize: number };\n}> {\n\tconst { cwd, collections, baseUrl, isWatchMode, llmsConfig } = options;\n\n\tconst parts = buildHeader(baseUrl, llmsConfig);\n\n\tconst discovered = await discoverAllRoutes(\n\t\tcwd,\n\t\tcollections,\n\t\tisWatchMode,\n\t\tllmsConfig,\n\t);\n\tconst targetCollection = options.targetCollection;\n\tconst allRoutes = targetCollection\n\t\t? discovered.filter((route) =>\n\t\t\t\trouteBelongsToCollection(route.path, targetCollection),\n\t\t\t)\n\t\t: discovered;\n\n\tconst maxItems = llmsConfig?.maxItems || 10000;\n\tconst routesToProcess = allRoutes.slice(0, maxItems);\n\n\tconst extracted = await extractRouteContents(routesToProcess, options);\n\tparts.push(...extracted.parts);\n\n\tbuildFooter(parts);\n\n\tconst fullContent = parts.join('\\n');\n\tconst byteSize = Buffer.byteLength(fullContent, 'utf8');\n\n\treturn {\n\t\tcontent: fullContent,\n\t\tstats: { itemCount: extracted.itemCount, byteSize },\n\t};\n}\n",
|
|
61
|
-
"/**\n * LLMs Feature - Native LLM-friendly content formats\n *\n * Provides:\n * - .txt and .md extensions for any route\n * - Accept header content negotiation (text/plain, text/markdown)\n * - /llms.txt index of all content\n * - /llms-full.txt bundle of all content\n *\n * All formats are token-efficient: minimal metadata, maximum useful content\n */\n\nexport { extractContentForLLMs, shouldExcludeRoute } from './extractor';\nexport {\n\textractTitle,\n\tformatAsMarkdown,\n\tformatAsText,\n\tgenerateLLMsFooter,\n\thtmlToMarkdown,\n\tstripHtmlTags,\n} from './formatter';\nexport { generateLLMsFullContent } from './full-generator';\nexport { generateLLMsIndex } from './index-generator';\n",
|
|
62
|
+
"/**\n * LLMs Feature - Native LLM-friendly content formats\n *\n * Provides:\n * - .txt and .md extensions for any route\n * - Accept header content negotiation (text/plain, text/markdown)\n * - /llms.txt index of all content\n * - /llms-full.txt bundle of all content\n * - HTML discovery (Link / rel=alternate, Content-Signal)\n *\n * All formats are token-efficient: minimal metadata, maximum useful content\n */\n\nexport type { LlmsDiscovery } from './discovery';\nexport {\n\tappendLlmsAlternateHead,\n\tapplyLlmsDiscoveryHeaders,\n\tbuildLlmsDiscovery,\n\tformatContentSignal,\n\tllmsAlternateLinkTag,\n\tmarkdownTwinPath,\n\tmergeVary,\n\tshouldAdvertiseMarkdownTwin,\n} from './discovery';\nexport { extractContentForLLMs, shouldExcludeRoute } from './extractor';\nexport {\n\textractTitle,\n\tformatAsMarkdown,\n\tformatAsText,\n\tgenerateLLMsFooter,\n\thtmlToMarkdown,\n\tstripHtmlTags,\n} from './formatter';\nexport { generateLLMsFullContent } from './full-generator';\nexport { generateLLMsIndex } from './index-generator';\n",
|
|
62
63
|
"import type { ImageResponseOptions } from '@vercel/og';\nimport { createElement } from 'react';\nimport type { OGImageFont } from '../config';\nimport type { OGImageProps } from './types';\n\n// biome-ignore lint/suspicious/noExplicitAny: what we can do here?\ntype Any = any;\n/**\n * Render an OG image component to PNG using Satori and resvg\n */\n\nexport async function renderOGImageToPNG(\n\tComponent: Any,\n\tprops: OGImageProps,\n\toptions: {\n\t\twidth?: number;\n\t\theight?: number;\n\t\tfonts?: OGImageFont[];\n\t} = {},\n): Promise<Buffer> {\n\tconst width = options.width || 1200;\n\tconst height = options.height || 630;\n\n\ttry {\n\t\t// Dynamically import @vercel/og to avoid bundling it if not used\n\t\tconst { ImageResponse } = await import('@vercel/og');\n\n\t\t// Create React element from component\n\t\tconst element = createElement(Component, props);\n\n\t\t// Use ImageResponse to render the component\n\t\tconst imageResponse = new ImageResponse(element, {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tfonts:\n\t\t\t\toptions.fonts?.length && options.fonts.length > 0\n\t\t\t\t\t? (options.fonts as ImageResponseOptions['fonts'])\n\t\t\t\t\t: undefined,\n\t\t});\n\n\t\t// Convert Response to Buffer\n\t\tconst arrayBuffer = await imageResponse.arrayBuffer();\n\t\treturn Buffer.from(arrayBuffer);\n\t} catch (error) {\n\t\tconsole.error('[reroute] Failed to render OG image:', error);\n\t\tthrow new Error(\n\t\t\t`Failed to render OG image: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n}\n\n/**\n * Default OG image template\n * Renders a simple card with title and description\n */\nexport function DefaultOGTemplate({\n\tmeta,\n\tavatar,\n\tsiteName: siteNameProp,\n}: OGImageProps) {\n\tconst title = meta?.title || 'Untitled';\n\tconst description = meta?.description || '';\n\tconst siteName = siteNameProp || meta?.site_name || meta?.siteName || '';\n\n\treturn createElement(\n\t\t'div',\n\t\t{\n\t\t\tstyle: {\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\twidth: '100%',\n\t\t\t\theight: '100%',\n\t\t\t\tbackgroundColor: '#ffffff',\n\t\t\t\tpadding: '80px',\n\t\t\t\tfontFamily: 'system-ui, sans-serif',\n\t\t\t},\n\t\t},\n\t\tcreateElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '100%',\n\t\t\t\t\tborder: '4px solid #000000',\n\t\t\t\t\tborderRadius: '24px',\n\t\t\t\t\tpadding: '64px',\n\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t},\n\t\t\t},\n\t\t\tcreateElement(\n\t\t\t\t'div',\n\t\t\t\t{\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\tgap: '24px',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcreateElement(\n\t\t\t\t\t'h1',\n\t\t\t\t\t{\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tfontSize: '72px',\n\t\t\t\t\t\t\tfontWeight: 'bold',\n\t\t\t\t\t\t\tlineHeight: 1.2,\n\t\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\t\tcolor: '#000000',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\ttitle,\n\t\t\t\t),\n\t\t\t\tdescription &&\n\t\t\t\t\tcreateElement(\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tfontSize: '32px',\n\t\t\t\t\t\t\t\tlineHeight: 1.5,\n\t\t\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\t\t\tcolor: '#666666',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdescription,\n\t\t\t\t\t),\n\t\t\t),\n\t\t\tcreateElement(\n\t\t\t\t'div',\n\t\t\t\t{\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsiteName &&\n\t\t\t\t\tcreateElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tfontSize: '28px',\n\t\t\t\t\t\t\t\tcolor: '#999999',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsiteName,\n\t\t\t\t\t),\n\t\t\t\tavatar &&\n\t\t\t\t\tcreateElement('img', {\n\t\t\t\t\t\tsrc: avatar,\n\t\t\t\t\t\twidth: 80,\n\t\t\t\t\t\theight: 80,\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tborderRadius: '50%',\n\t\t\t\t\t\t\tobjectFit: 'cover',\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t!avatar &&\n\t\t\t\t\tcreateElement('div', {\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\twidth: '80px',\n\t\t\t\t\t\t\theight: '80px',\n\t\t\t\t\t\t\tborderRadius: '50%',\n\t\t\t\t\t\t\tbackgroundColor: '#6366f1',\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t),\n\t\t),\n\t);\n}\n",
|
|
63
64
|
"export {\n\textractParamsFromPath,\n\tfindOGImageForPath,\n\tloadOGImageComponent,\n} from './discovery';\nexport { generateOGImageMetaTags } from './meta';\nexport { DefaultOGTemplate, renderOGImageToPNG } from './render';\nexport type { OGImageProps } from './types';\n",
|
|
64
65
|
"import type { RedirectRule, RobotsOptions, SitemapOptions } from '../config';\nimport { join } from '../ssr/lib/path';\nimport type { Doc } from '../ssr/lib/types';\n\ntype RobotsDiscoveryResult = {\n\t/** All discovered routes (both static and dynamic) */\n\troutes: string[];\n\t/** Routes excluded from sitemap (if sitemapExclusion is enabled) */\n\tsitemapExcludedRoutes: string[];\n\t/** Old redirect source paths (if redirectExclusion is enabled) */\n\tredirectSourcePaths: string[];\n};\n\n/**\n * Discover all routes from the generated routes.ts file\n */\nasync function discoverRoutesForRobots(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<string[]> {\n\tconst routes: string[] = [];\n\n\ttry {\n\t\t// Check for bundled routes first (compiled binary support)\n\t\tlet routesArray = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_ROUTES__ as Doc[] | undefined;\n\n\t\t// Fallback to dynamic import (dev mode)\n\t\tif (!routesArray) {\n\t\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\t\tconst url = Bun.pathToFileURL(routesPath).href;\n\t\t\tconst mod = await import(\n\t\t\t\t`${url}${isWatchMode ? `?t=${Date.now()}` : ''}`\n\t\t\t);\n\t\t\troutesArray = (mod as Doc)?.routes as Doc[] | undefined;\n\t\t}\n\t\tif (Array.isArray(routesArray)) {\n\t\t\tfor (const route of routesArray) {\n\t\t\t\tconst pattern = String(route?.pattern || '');\n\n\t\t\t\t// Skip error pages, layouts, and skeletons\n\t\t\t\tif (\n\t\t\t\t\tpattern.includes('[404]') ||\n\t\t\t\t\tpattern.includes('[layout]') ||\n\t\t\t\t\tpattern.includes('[skeleton]')\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Add the pattern (with dynamic segments)\n\t\t\t\troutes.push(pattern);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('[reroute] Failed to discover routes for robots.txt:', error);\n\t}\n\n\treturn routes;\n}\n\n/**\n * Get routes excluded from sitemap\n */\nfunction getSitemapExcludedRoutes(sitemapConfig?: SitemapOptions): string[] {\n\treturn sitemapConfig?.excludeRoutes || [];\n}\n\n/**\n * Get redirect source paths\n */\nfunction getRedirectSourcePaths(redirects?: RedirectRule[]): string[] {\n\tif (!redirects || redirects.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst sources: string[] = [];\n\tfor (const redirect of redirects) {\n\t\t// Skip disabled redirects (default to enabled if not specified)\n\t\tif (redirect.enabled === false) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Only include string sources (not regex patterns)\n\t\tif (typeof redirect.source === 'string') {\n\t\t\tsources.push(redirect.source);\n\t\t}\n\t}\n\n\treturn sources;\n}\n\n/**\n * Main robots discovery function\n */\nasync function discoverRobotsData(\n\tcwd: string,\n\tisWatchMode: boolean,\n\trobotsConfig: RobotsOptions,\n\tsitemapConfig?: SitemapOptions,\n\tredirects?: RedirectRule[],\n): Promise<RobotsDiscoveryResult> {\n\t// Discover all routes\n\tconst routes = await discoverRoutesForRobots(cwd, isWatchMode);\n\n\t// Get sitemap excluded routes (if feature enabled)\n\tconst sitemapExcludedRoutes =\n\t\trobotsConfig.sitemapExclusion !== false\n\t\t\t? getSitemapExcludedRoutes(sitemapConfig)\n\t\t\t: [];\n\n\t// Get redirect source paths (if feature enabled)\n\tconst redirectSourcePaths =\n\t\trobotsConfig.redirectExclusion !== false\n\t\t\t? getRedirectSourcePaths(redirects)\n\t\t\t: [];\n\n\treturn {\n\t\troutes,\n\t\tsitemapExcludedRoutes,\n\t\tredirectSourcePaths,\n\t};\n}\n\nexport {\n\tdiscoverRoutesForRobots,\n\tgetSitemapExcludedRoutes,\n\tgetRedirectSourcePaths,\n\tdiscoverRobotsData,\n\ttype RobotsDiscoveryResult,\n};\n",
|
|
65
|
-
"import type { RobotsOptions, RobotsPolicy } from '../config';\nimport type { RobotsDiscoveryResult } from './discovery';\n\nfunction getEffectivePolicies(policies: RobotsPolicy[]): RobotsPolicy[] {\n\tif (policies.length > 0) return policies;\n\n\treturn [\n\t\t{\n\t\t\tuserAgent: '*',\n\t\t\tallow: ['/'],\n\t\t},\n\t];\n}\n\nfunction getAutoDisallows(discovery: RobotsDiscoveryResult): Set<string> {\n\treturn new Set<string>([\n\t\t...discovery.sitemapExcludedRoutes,\n\t\t...discovery.redirectSourcePaths,\n\t]);\n}\n\nfunction addAllowDirectives(lines: string[], policy: RobotsPolicy): void {\n\tif (!policy.allow || policy.allow.length === 0) return;\n\n\tfor (const path of policy.allow) {\n\t\tlines.push(`Allow: ${path}`);\n\t}\n}\n\nfunction getDisallows(\n\tpolicy: RobotsPolicy,\n\tautoDisallows: Set<string>,\n): Set<string> {\n\tconst disallows = new Set(policy.disallow || []);\n\n\tif (policy.userAgent === '*') {\n\t\tfor (const path of autoDisallows) {\n\t\t\tdisallows.add(path);\n\t\t}\n\t}\n\n\treturn disallows;\n}\n\nfunction addDisallowDirectives(\n\tlines: string[],\n\tpolicy: RobotsPolicy,\n\tautoDisallows: Set<string>,\n): void {\n\tconst disallows = getDisallows(policy, autoDisallows);\n\n\tif (disallows.size > 0) {\n\t\tfor (const path of Array.from(disallows).sort()) {\n\t\t\tlines.push(`Disallow: ${path}`);\n\t\t}\n\t}\n}\n\nfunction addPolicyBlock(\n\tlines: string[],\n\tpolicy: RobotsPolicy,\n\tautoDisallows: Set<string>,\n): void {\n\tlines.push(`User-agent: ${policy.userAgent}`);\n\n\taddAllowDirectives(lines, policy);\n\taddDisallowDirectives(lines, policy, autoDisallows);\n\n\tif (policy.crawlDelay !== undefined) {\n\t\tlines.push(`Crawl-delay: ${policy.crawlDelay}`);\n\t}\n\n\tlines.push('');\n}\n\nfunction addGlobalCrawlDelay(\n\tlines: string[],\n\tcrawlDelay: number | undefined,\n\teffectivePolicies: RobotsPolicy[],\n): void {\n\tconst hasWildcardCrawlDelay = effectivePolicies.some(\n\t\t(p) => p.userAgent === '*' && p.crawlDelay !== undefined,\n\t);\n\n\tif (crawlDelay !== undefined && !hasWildcardCrawlDelay) {\n\t\tlines.push(`Crawl-delay: ${crawlDelay}`);\n\t\tlines.push('');\n\t}\n}\n\nfunction addSitemapReference(\n\tlines: string[],\n\trobotsConfig: RobotsOptions,\n\tsitemapEnabled: boolean,\n): void {\n\tif (\n\t\trobotsConfig.referenceSitemap !== false &&\n\t\tsitemapEnabled &&\n\t\trobotsConfig.baseUrl\n\t) {\n\t\tlines.push(`Sitemap: ${robotsConfig.baseUrl}/sitemap.xml`);\n\t}\n}\n\n/**\n * Generate robots.txt content from discovery result and configuration\n */\nexport function generateRobots(\n\tdiscovery: RobotsDiscoveryResult,\n\trobotsConfig: RobotsOptions,\n\tsitemapEnabled: boolean,\n): string {\n\tconst lines: string[] = [];\n\tconst { policies = [], customRules, crawlDelay } = robotsConfig;\n\n\tconst effectivePolicies = getEffectivePolicies(policies);\n\tconst autoDisallows = getAutoDisallows(discovery);\n\n\tfor (const policy of effectivePolicies) {\n\t\taddPolicyBlock(lines, policy, autoDisallows);\n\t}\n\n\taddGlobalCrawlDelay(lines, crawlDelay, effectivePolicies);\n\n\tif (customRules) {\n\t\tlines.push(customRules.trim());\n\t\tlines.push('');\n\t}\n\n\taddSitemapReference(lines, robotsConfig, sitemapEnabled);\n\n\treturn `${lines.join('\\n').trim()}\\n`;\n}\n",
|
|
66
|
+
"import type { RobotsOptions, RobotsPolicy } from '../config';\nimport { formatContentSignal } from '../llms/discovery';\nimport type { RobotsDiscoveryResult } from './discovery';\n\nfunction getEffectivePolicies(policies: RobotsPolicy[]): RobotsPolicy[] {\n\tif (policies.length > 0) return policies;\n\n\treturn [\n\t\t{\n\t\t\tuserAgent: '*',\n\t\t\tallow: ['/'],\n\t\t},\n\t];\n}\n\nfunction getAutoDisallows(discovery: RobotsDiscoveryResult): Set<string> {\n\treturn new Set<string>([\n\t\t...discovery.sitemapExcludedRoutes,\n\t\t...discovery.redirectSourcePaths,\n\t]);\n}\n\nfunction addAllowDirectives(lines: string[], policy: RobotsPolicy): void {\n\tif (!policy.allow || policy.allow.length === 0) return;\n\n\tfor (const path of policy.allow) {\n\t\tlines.push(`Allow: ${path}`);\n\t}\n}\n\nfunction getDisallows(\n\tpolicy: RobotsPolicy,\n\tautoDisallows: Set<string>,\n): Set<string> {\n\tconst disallows = new Set(policy.disallow || []);\n\n\tif (policy.userAgent === '*') {\n\t\tfor (const path of autoDisallows) {\n\t\t\tdisallows.add(path);\n\t\t}\n\t}\n\n\treturn disallows;\n}\n\nfunction addDisallowDirectives(\n\tlines: string[],\n\tpolicy: RobotsPolicy,\n\tautoDisallows: Set<string>,\n): void {\n\tconst disallows = getDisallows(policy, autoDisallows);\n\n\tif (disallows.size > 0) {\n\t\tfor (const path of Array.from(disallows).sort()) {\n\t\t\tlines.push(`Disallow: ${path}`);\n\t\t}\n\t}\n}\n\nfunction addContentSignalLine(\n\tlines: string[],\n\tpolicy: RobotsPolicy,\n\trobotsConfig: RobotsOptions,\n): void {\n\tif (policy.userAgent !== '*') return;\n\n\tconst value = formatContentSignal(robotsConfig.contentSignal);\n\tif (value) lines.push(`Content-Signal: ${value}`);\n}\n\nfunction addPolicyBlock(\n\tlines: string[],\n\tpolicy: RobotsPolicy,\n\tautoDisallows: Set<string>,\n\trobotsConfig: RobotsOptions,\n): void {\n\tlines.push(`User-agent: ${policy.userAgent}`);\n\taddContentSignalLine(lines, policy, robotsConfig);\n\n\taddAllowDirectives(lines, policy);\n\taddDisallowDirectives(lines, policy, autoDisallows);\n\n\tif (policy.crawlDelay !== undefined) {\n\t\tlines.push(`Crawl-delay: ${policy.crawlDelay}`);\n\t}\n\n\tlines.push('');\n}\n\nfunction addGlobalCrawlDelay(\n\tlines: string[],\n\tcrawlDelay: number | undefined,\n\teffectivePolicies: RobotsPolicy[],\n): void {\n\tconst hasWildcardCrawlDelay = effectivePolicies.some(\n\t\t(p) => p.userAgent === '*' && p.crawlDelay !== undefined,\n\t);\n\n\tif (crawlDelay !== undefined && !hasWildcardCrawlDelay) {\n\t\tlines.push(`Crawl-delay: ${crawlDelay}`);\n\t\tlines.push('');\n\t}\n}\n\nfunction addSitemapReference(\n\tlines: string[],\n\trobotsConfig: RobotsOptions,\n\tsitemapEnabled: boolean,\n): void {\n\tif (\n\t\trobotsConfig.referenceSitemap !== false &&\n\t\tsitemapEnabled &&\n\t\trobotsConfig.baseUrl\n\t) {\n\t\tlines.push(`Sitemap: ${robotsConfig.baseUrl}/sitemap.xml`);\n\t}\n}\n\n/**\n * Generate robots.txt content from discovery result and configuration\n */\nexport function generateRobots(\n\tdiscovery: RobotsDiscoveryResult,\n\trobotsConfig: RobotsOptions,\n\tsitemapEnabled: boolean,\n): string {\n\tconst lines: string[] = [];\n\tconst { policies = [], customRules, crawlDelay } = robotsConfig;\n\n\tconst effectivePolicies = getEffectivePolicies(policies);\n\tconst autoDisallows = getAutoDisallows(discovery);\n\n\tfor (const policy of effectivePolicies) {\n\t\taddPolicyBlock(lines, policy, autoDisallows, robotsConfig);\n\t}\n\n\taddGlobalCrawlDelay(lines, crawlDelay, effectivePolicies);\n\n\tif (customRules) {\n\t\tlines.push(customRules.trim());\n\t\tlines.push('');\n\t}\n\n\taddSitemapReference(lines, robotsConfig, sitemapEnabled);\n\n\treturn `${lines.join('\\n').trim()}\\n`;\n}\n",
|
|
66
67
|
"import type { RobotsPolicy } from '../config';\n\n/**\n * AI Crawler user-agents\n */\nconst AI_CRAWLERS = {\n\tGPT: 'GPTBot',\n\tCHATGPT: 'ChatGPT-User',\n\tCLAUDE: 'Claude-Web',\n\tANTHROPIC: 'anthropic-ai',\n\tCOHERE: 'cohere-ai',\n\tGOOGLE_EXTENDED: 'Google-Extended',\n\tFACEBOOK: 'FacebookBot',\n\tAPPLE_EXTENDED: 'Applebot-Extended',\n\tPERPLEXITY: 'PerplexityBot',\n\tBYTEDANCE: 'Bytespider',\n\tCOMMON_CRAWL: 'CCBot',\n\tOMGILI: 'Omgilibot',\n} as const;\n\n/**\n * Search Engine crawler user-agents\n */\nconst SEARCH_CRAWLERS = {\n\tGOOGLEBOT: 'Googlebot',\n\tBINGBOT: 'Bingbot',\n\tSLURP: 'Slurp', // Yahoo\n\tDUCKDUCKBOT: 'DuckDuckBot',\n\tBAIDUSPIDER: 'Baiduspider',\n\tYANDEXBOT: 'YandexBot',\n} as const;\n\n/**\n * Block AI crawlers\n * @param crawlers - Optional array of specific crawler user-agents to block (no args = block all)\n * @returns Array of policies blocking specified or all AI crawlers\n */\nfunction blockAICrawlers(crawlers?: string[]): RobotsPolicy[] {\n\tconst agents = crawlers || Object.values(AI_CRAWLERS);\n\treturn agents.map((agent) => ({\n\t\tuserAgent: agent,\n\t\tdisallow: ['/'],\n\t}));\n}\n\n/**\n * Allow AI crawlers\n * @param crawlers - Optional array of specific crawler user-agents to allow (no args = allow all)\n * @returns Array of policies allowing specified or all AI crawlers\n */\nfunction allowAICrawlers(crawlers?: string[]): RobotsPolicy[] {\n\tconst agents = crawlers || Object.values(AI_CRAWLERS);\n\treturn agents.map((agent) => ({\n\t\tuserAgent: agent,\n\t\tallow: ['/'],\n\t}));\n}\n\n/**\n * Block only training/scraping AI crawlers\n * @returns Array of policies blocking training crawlers\n */\nfunction blockAITrainingCrawlers(): RobotsPolicy[] {\n\tconst trainingCrawlers = [\n\t\tAI_CRAWLERS.GOOGLE_EXTENDED,\n\t\tAI_CRAWLERS.COMMON_CRAWL,\n\t\tAI_CRAWLERS.BYTEDANCE,\n\t\tAI_CRAWLERS.OMGILI,\n\t];\n\n\treturn trainingCrawlers.map((agent) => ({\n\t\tuserAgent: agent,\n\t\tdisallow: ['/'],\n\t}));\n}\n\n/**\n * Allow search engines\n * @param crawlers - Optional array of specific search crawler user-agents to allow (no args = allow all)\n * @returns Array of policies allowing specified or all search engines\n */\nfunction allowSearchCrawlers(crawlers?: string[]): RobotsPolicy[] {\n\tconst agents = crawlers || Object.values(SEARCH_CRAWLERS);\n\treturn agents.map((agent) => ({\n\t\tuserAgent: agent,\n\t\tallow: ['/'],\n\t}));\n}\n\n/**\n * Block search engines\n * @param crawlers - Optional array of specific search crawler user-agents to block (no args = block all)\n * @returns Array of policies blocking specified or all search engines\n */\nfunction blockSearchCrawlers(crawlers?: string[]): RobotsPolicy[] {\n\tconst agents = crawlers || Object.values(SEARCH_CRAWLERS);\n\treturn agents.map((agent) => ({\n\t\tuserAgent: agent,\n\t\tdisallow: ['/'],\n\t}));\n}\n\nexport {\n\tAI_CRAWLERS,\n\tSEARCH_CRAWLERS,\n\tblockAICrawlers,\n\tallowAICrawlers,\n\tblockAITrainingCrawlers,\n\tallowSearchCrawlers,\n\tblockSearchCrawlers,\n};\n",
|
|
67
68
|
"export * from './discovery';\nexport * from './generator';\nexport * from './policies';\n",
|
|
68
69
|
"import type { SitemapOptions } from '../config';\nimport { join } from '../ssr/lib/path';\nimport type { Doc, SSR } from '../ssr/lib/types';\n\ntype SitemapRoute = {\n\tpath: string;\n\tpattern: string;\n\tisDynamic: boolean;\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\tpriority?: number;\n\tlastmod?: string;\n};\n\ntype SitemapEntry = {\n\tloc: string;\n\tlastmod?: string;\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\tpriority?: number;\n\t/** xhtml:link hreflang alternates */\n\talternates?: Array<{ hreflang: string; href: string }>;\n};\n\ntype SitemapDiscoveryResult = {\n\tstaticRoutes: SitemapRoute[];\n\tdynamicRoutes: SitemapRoute[];\n\tcollections: Map<string, SitemapEntry[]>;\n\tssrDataRoutes: Map<string, SitemapEntry[]>;\n};\n\nasync function loadRoutesModule(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Doc[] | undefined> {\n\tlet routes = (globalThis as Record<string, unknown>).__REROUTE_ROUTES__ as\n\t\t| Doc[]\n\t\t| undefined;\n\n\tif (!routes) {\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\tconst url = Bun.pathToFileURL(routesPath).href;\n\t\tconst mod = await import(`${url}${isWatchMode ? `?t=${Date.now()}` : ''}`);\n\t\troutes = (mod as Doc)?.routes as Doc[] | undefined;\n\t}\n\n\treturn routes;\n}\n\nfunction shouldSkipRoute(pattern: string): boolean {\n\treturn (\n\t\tpattern.includes('[404]') ||\n\t\tpattern.includes('[layout]') ||\n\t\tpattern.includes('[skeleton]')\n\t);\n}\n\nfunction categorizeRoute(\n\troute: Doc,\n\tstaticRoutes: SitemapRoute[],\n\tdynamicRoutes: SitemapRoute[],\n): void {\n\tconst pattern = String(route?.pattern || '');\n\tconst path = String(route?.path || '');\n\n\tif (shouldSkipRoute(pattern)) return;\n\n\tconst isDynamic = pattern.includes(':');\n\tconst sitemapRoute: SitemapRoute = { path, pattern, isDynamic };\n\n\tif (isDynamic) {\n\t\tdynamicRoutes.push(sitemapRoute);\n\t} else {\n\t\tstaticRoutes.push(sitemapRoute);\n\t}\n}\n\n/**\n * Discover all routes from the generated routes.ts file\n */\nasync function discoverRoutes(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<{ staticRoutes: SitemapRoute[]; dynamicRoutes: SitemapRoute[] }> {\n\tconst staticRoutes: SitemapRoute[] = [];\n\tconst dynamicRoutes: SitemapRoute[] = [];\n\n\ttry {\n\t\tconst routes = await loadRoutesModule(cwd, isWatchMode);\n\n\t\tif (Array.isArray(routes)) {\n\t\t\tfor (const route of routes) {\n\t\t\t\tcategorizeRoute(route, staticRoutes, dynamicRoutes);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('[reroute] Failed to discover routes for sitemap:', error);\n\t}\n\n\treturn { staticRoutes, dynamicRoutes };\n}\n\ntype CollectionItem = {\n\tname?: string;\n\thref?: string;\n\tlocale?: string;\n\tmeta?: { date?: string | Date };\n};\n\nfunction groupNamedCollectionItems(\n\titems: CollectionItem[],\n): Map<string, CollectionItem[]> {\n\tconst byName = new Map<string, CollectionItem[]>();\n\tfor (const item of items) {\n\t\tconst name = String(item.name || '');\n\t\tif (!name) continue;\n\t\tconst list = byName.get(name) || [];\n\t\tlist.push(item);\n\t\tbyName.set(name, list);\n\t}\n\treturn byName;\n}\n\nfunction resolveItemHref(\n\tcollection: string,\n\titem: CollectionItem,\n\tdefaultLocale: string,\n\tlocalize: (\n\t\tcollection: string,\n\t\tname: string,\n\t\tlocale: string,\n\t\tdefaultLocale: string,\n\t) => string,\n): string {\n\tconst name = String(item.name || '');\n\tconst locale = item.locale || defaultLocale;\n\tif (name) return localize(collection, name, locale, defaultLocale);\n\treturn String(item.href || '');\n}\n\nfunction buildNamedCollectionSitemapEntries(\n\tcollection: string,\n\tname: string,\n\tvariants: CollectionItem[],\n\tdefaultLocale: string,\n\tbase: string,\n\tlocalize: (\n\t\tcollection: string,\n\t\tname: string,\n\t\tlocale: string,\n\t\tdefaultLocale: string,\n\t) => string,\n): SitemapEntry[] {\n\tconst locales = [\n\t\t...new Set(variants.map((v) => v.locale || defaultLocale).filter(Boolean)),\n\t] as string[];\n\n\tconst alternates =\n\t\tlocales.length > 1\n\t\t\t? [\n\t\t\t\t\t...locales.map((locale) => ({\n\t\t\t\t\t\threflang: locale,\n\t\t\t\t\t\thref: `${base}${localize(collection, name, locale, defaultLocale)}`,\n\t\t\t\t\t})),\n\t\t\t\t\t{\n\t\t\t\t\t\threflang: 'x-default',\n\t\t\t\t\t\thref: `${base}${localize(collection, name, defaultLocale, defaultLocale)}`,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t: undefined;\n\n\tconst entries: SitemapEntry[] = [];\n\tfor (const item of variants) {\n\t\tconst href = resolveItemHref(collection, item, defaultLocale, localize);\n\t\tif (!href) continue;\n\t\tconst meta = item.meta || {};\n\t\tentries.push({\n\t\t\tloc: `${base}${href}`,\n\t\t\tlastmod: meta.date ? new Date(meta.date).toISOString() : undefined,\n\t\t\tchangefreq: 'weekly',\n\t\t\tpriority: 0.7,\n\t\t\talternates,\n\t\t});\n\t}\n\treturn entries;\n}\n\n/**\n * Discover content items for collections\n */\nasync function discoverCollectionContent(\n\tcwd: string,\n\tcollection: string,\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n): Promise<SitemapEntry[]> {\n\tconst entries: SitemapEntry[] = [];\n\n\ttry {\n\t\t// Load pre-generated collection module\n\t\tconst collectionFile = join(\n\t\t\tcwd,\n\t\t\t'.reroute',\n\t\t\t'collections',\n\t\t\t`${collection}.js`,\n\t\t);\n\t\tconst exists = await Bun.file(collectionFile).exists();\n\n\t\tif (!exists) {\n\t\t\treturn entries;\n\t\t}\n\n\t\tconst url = `${Bun.pathToFileURL(collectionFile).href}${isWatchMode ? `?t=${Date.now()}` : ''}`;\n\t\tconst mod = await import(url);\n\t\tconst items = (mod.items || []) as CollectionItem[];\n\t\tconst defaultLocale = (mod.defaultLocale as string | undefined) || 'en-US';\n\t\tconst { localizeContentHref } = await import('../i18n/pathname');\n\t\tconst base = baseUrl.replace(/\\/$/, '');\n\n\t\t// Named items (content collections) — group for hreflang alternates\n\t\tconst byName = groupNamedCollectionItems(items);\n\t\tfor (const [name, variants] of byName) {\n\t\t\tentries.push(\n\t\t\t\t...buildNamedCollectionSitemapEntries(\n\t\t\t\t\tcollection,\n\t\t\t\t\tname,\n\t\t\t\t\tvariants,\n\t\t\t\t\tdefaultLocale,\n\t\t\t\t\tbase,\n\t\t\t\t\tlocalizeContentHref,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\t// Legacy / href-only items (no name) — keep prior sitemap behavior\n\t\tfor (const item of items) {\n\t\t\tif (item.name) continue;\n\t\t\tconst href = String(item.href || '');\n\t\t\tif (!href) continue;\n\t\t\tconst meta = item.meta || {};\n\t\t\tentries.push({\n\t\t\t\tloc: `${base}${href}`,\n\t\t\t\tlastmod: meta.date ? new Date(meta.date).toISOString() : undefined,\n\t\t\t\tchangefreq: 'weekly',\n\t\t\t\tpriority: 0.7,\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute] Failed to discover collection ${collection}:`,\n\t\t\terror,\n\t\t);\n\t}\n\n\treturn entries;\n}\n\n/**\n * Discover SSR data routes (routes with ssr.data export that return arrays/lists)\n */\nasync function discoverSSRDataRoutes(\n\tcwd: string,\n\tstaticRoutes: SitemapRoute[],\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): Promise<Map<string, SitemapEntry[]>> {\n\tconst ssrDataRoutes = new Map<string, SitemapEntry[]>();\n\n\t// Check for bundled routes first (compiled binary support)\n\tconst bundledRoutes = (globalThis as Record<string, unknown>)\n\t\t.__REROUTE_ROUTES__ as Doc[] | undefined;\n\n\tif (bundledRoutes && Array.isArray(bundledRoutes)) {\n\t\t// In production: use pre-loaded SSR data from bundled routes\n\t\t// Process all routes in parallel for faster discovery\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: discovering ssr data routes is complex\n\t\tconst routePromises = staticRoutes.map(async (route) => {\n\t\t\t// Skip routes excluded from SSR data discovery (prefix match)\n\t\t\tif (\n\t\t\t\tsitemapConfig?.excludeDiscovery?.some((excluded) =>\n\t\t\t\t\troute.pattern.startsWith(excluded),\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Find the matching bundled route\n\t\t\tconst bundledRoute = bundledRoutes.find(\n\t\t\t\t(r) => r?.pattern === route.pattern,\n\t\t\t);\n\n\t\t\tif (!bundledRoute) return null;\n\n\t\t\tconst ssr = (bundledRoute as Doc)?.ssr as Doc | undefined;\n\t\t\tconst dataFn = (ssr as Doc)?.data as\n\t\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t\t| undefined;\n\n\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\ttry {\n\t\t\t\t\t// Call the data function to get the data\n\t\t\t\t\tconst mockSet = { status: 200 };\n\t\t\t\t\tconst result = await dataFn({\n\t\t\t\t\t\tpathname: route.pattern,\n\t\t\t\t\t\tparams: {},\n\t\t\t\t\t\tset: mockSet,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Look for array data that could represent list items\n\t\t\t\t\tconst entries = extractEntriesFromData(\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\troute.pattern,\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tsitemapConfig,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (entries.length > 0) {\n\t\t\t\t\t\treturn { pattern: route.pattern, entries };\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Skip routes that fail\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t});\n\n\t\tconst results = await Promise.all(routePromises);\n\t\tfor (const result of results) {\n\t\t\tif (result) {\n\t\t\t\tssrDataRoutes.set(result.pattern, result.entries);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Dev mode: dynamically import route modules in parallel\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: discovering ssr data routes is complex\n\t\tconst routePromises = staticRoutes.map(async (route) => {\n\t\t\t// Skip routes excluded from SSR data discovery (prefix match)\n\t\t\tif (\n\t\t\t\tsitemapConfig?.excludeDiscovery?.some((excluded) =>\n\t\t\t\t\troute.pattern.startsWith(excluded),\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst routeModulePath = join(\n\t\t\t\t\tcwd,\n\t\t\t\t\t'src',\n\t\t\t\t\t'client',\n\t\t\t\t\t'routes',\n\t\t\t\t\troute.path,\n\t\t\t\t);\n\t\t\t\tconst mod = (await import(\n\t\t\t\t\tBun.pathToFileURL(routeModulePath).href +\n\t\t\t\t\t\t(isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t\t)) as Doc;\n\n\t\t\t\tconst ssr = (mod as Doc)?.ssr as SSR | undefined;\n\t\t\t\tconst dataFn = ssr?.data;\n\n\t\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\t\t// Call the data function to get the data\n\t\t\t\t\tconst mockSet = { status: 200 };\n\t\t\t\t\tconst result = await dataFn({\n\t\t\t\t\t\tpathname: route.pattern,\n\t\t\t\t\t\tparams: {},\n\t\t\t\t\t\tset: mockSet,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Look for array data that could represent list items\n\t\t\t\t\tconst entries = extractEntriesFromData(\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\troute.pattern,\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tsitemapConfig,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (entries.length > 0) {\n\t\t\t\t\t\treturn { pattern: route.pattern, entries };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Route doesn't have ssr.data or it failed - skip silently\n\t\t\t}\n\n\t\t\treturn null;\n\t\t});\n\n\t\tconst results = await Promise.all(routePromises);\n\t\tfor (const result of results) {\n\t\t\tif (result) {\n\t\t\t\tssrDataRoutes.set(result.pattern, result.entries);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn ssrDataRoutes;\n}\n\nfunction findArraysInObject(obj: Doc): Doc[] {\n\tconst arrays: Doc[] = [];\n\n\tfor (const value of Object.values(obj)) {\n\t\tif (Array.isArray(value)) {\n\t\t\tarrays.push(value);\n\t\t} else if (value && typeof value === 'object') {\n\t\t\tarrays.push(...findArraysInObject(value));\n\t\t}\n\t}\n\n\treturn arrays;\n}\n\nfunction processItemsToEntries(\n\titems: unknown[],\n\troutePattern: string,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): SitemapEntry[] {\n\tconst entries: SitemapEntry[] = [];\n\n\tfor (const item of items) {\n\t\tif (typeof item !== 'object' || item === null) continue;\n\n\t\tconst entry = createEntryFromItem(\n\t\t\titem as Record<string, unknown>,\n\t\t\troutePattern,\n\t\t\tbaseUrl,\n\t\t\tsitemapConfig,\n\t\t);\n\t\tif (entry) {\n\t\t\tentries.push(entry);\n\t\t}\n\t}\n\n\treturn entries;\n}\n\nfunction extractWithCustomFunction(\n\tdata: unknown,\n\troutePattern: string,\n\tbaseUrl: string,\n\tsitemapConfig: SitemapOptions,\n): SitemapEntry[] {\n\ttry {\n\t\tconst items = sitemapConfig.extractUrls?.(data, routePattern);\n\t\tif (!Array.isArray(items)) return [];\n\n\t\treturn processItemsToEntries(items, routePattern, baseUrl, sitemapConfig);\n\t} catch (error) {\n\t\tconsole.warn('[reroute/sitemap] extractUrls failed:', error);\n\t\treturn [];\n\t}\n}\n\nfunction extractWithAutoDiscovery(\n\tdata: unknown,\n\troutePattern: string,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): SitemapEntry[] {\n\tconst entries: SitemapEntry[] = [];\n\tconst arrays = findArraysInObject(data as Doc);\n\n\tfor (const array of arrays) {\n\t\tif (array.length > 0) {\n\t\t\tconst arrayEntries = processItemsToEntries(\n\t\t\t\tarray,\n\t\t\t\troutePattern,\n\t\t\t\tbaseUrl,\n\t\t\t\tsitemapConfig,\n\t\t\t);\n\t\t\tentries.push(...arrayEntries);\n\t\t}\n\t}\n\n\treturn entries;\n}\n\n/**\n * Extract sitemap entries from ssr.data result\n * Supports custom extractUrls function or automatic array discovery\n */\nfunction extractEntriesFromData(\n\tdata: unknown,\n\troutePattern: string,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): SitemapEntry[] {\n\tif (!data || typeof data !== 'object') {\n\t\treturn [];\n\t}\n\n\tif (sitemapConfig?.extractUrls) {\n\t\treturn extractWithCustomFunction(\n\t\t\tdata,\n\t\t\troutePattern,\n\t\t\tbaseUrl,\n\t\t\tsitemapConfig,\n\t\t);\n\t}\n\n\treturn extractWithAutoDiscovery(data, routePattern, baseUrl, sitemapConfig);\n}\n\nfunction extractIdentifierFromItem(\n\titem: Record<string, unknown>,\n\troutePattern: string,\n\tsitemapConfig?: SitemapOptions,\n): string | null {\n\tif (sitemapConfig?.extractUrl) {\n\t\ttry {\n\t\t\tconst identifier = sitemapConfig.extractUrl(item, routePattern);\n\t\t\t// Return false explicitly skips this item (no fallback to default extraction)\n\t\t\tif (identifier === false) return null;\n\t\t\tif (identifier) return identifier as string;\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/sitemap] extractUrl failed:', error);\n\t\t}\n\t}\n\n\tconst identifier =\n\t\titem.version || item.slug || item.id || item.name || item.key;\n\treturn identifier ? (identifier as string) : null;\n}\n\nfunction extractLastmodFromItem(\n\titem: Record<string, unknown>,\n\tsitemapConfig?: SitemapOptions,\n): string | undefined {\n\tif (sitemapConfig?.extractLastmod) {\n\t\ttry {\n\t\t\tconst lastmod = sitemapConfig.extractLastmod(item);\n\t\t\tif (lastmod) {\n\t\t\t\treturn new Date(lastmod).toISOString();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/sitemap] extractLastmod failed:', error);\n\t\t}\n\t}\n\n\tif (item.publishedAt && typeof item.publishedAt === 'string') {\n\t\treturn new Date(item.publishedAt).toISOString();\n\t}\n\tif (item.date && typeof item.date === 'string') {\n\t\treturn new Date(item.date).toISOString();\n\t}\n\tif (item.updatedAt && typeof item.updatedAt === 'string') {\n\t\treturn new Date(item.updatedAt).toISOString();\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Create a sitemap entry from a data item\n */\nfunction createEntryFromItem(\n\titem: Record<string, unknown>,\n\troutePattern: string,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): SitemapEntry | null {\n\tconst identifier = extractIdentifierFromItem(\n\t\titem,\n\t\troutePattern,\n\t\tsitemapConfig,\n\t);\n\n\tif (!identifier) {\n\t\treturn null;\n\t}\n\n\tconst url = `${baseUrl}${routePattern}/${identifier}`;\n\n\tconst entry: SitemapEntry = {\n\t\tloc: url,\n\t\tchangefreq: sitemapConfig?.changefreq || 'weekly',\n\t\tpriority:\n\t\t\tsitemapConfig?.priority !== undefined ? sitemapConfig.priority : 0.6,\n\t};\n\n\tconst lastmod = extractLastmodFromItem(item, sitemapConfig);\n\tif (lastmod) {\n\t\tentry.lastmod = lastmod;\n\t}\n\n\treturn entry;\n}\n\n/**\n * Main sitemap discovery function\n */\nexport async function discoverSitemapData(\n\tcwd: string,\n\tcollections: string[],\n\tbaseUrl: string,\n\tisWatchMode: boolean,\n\tsitemapConfig?: SitemapOptions,\n): Promise<SitemapDiscoveryResult> {\n\tconst { staticRoutes, dynamicRoutes } = await discoverRoutes(\n\t\tcwd,\n\t\tisWatchMode,\n\t);\n\t// Note: dynamicRoutes discovered but not used in sitemap (they need actual data to create URLs)\n\n\t// Discover collection content\n\tconst collectionsMap = new Map<string, SitemapEntry[]>();\n\tfor (const collection of collections) {\n\t\tconst entries = await discoverCollectionContent(\n\t\t\tcwd,\n\t\t\tcollection,\n\t\t\tisWatchMode,\n\t\t\tbaseUrl,\n\t\t);\n\t\tif (entries.length > 0) {\n\t\t\tcollectionsMap.set(collection, entries);\n\t\t}\n\t}\n\n\t// Discover SSR data routes\n\tconst ssrDataRoutes = await discoverSSRDataRoutes(\n\t\tcwd,\n\t\tstaticRoutes,\n\t\tisWatchMode,\n\t\tbaseUrl,\n\t\tsitemapConfig,\n\t);\n\n\treturn {\n\t\tstaticRoutes,\n\t\tdynamicRoutes,\n\t\tcollections: collectionsMap,\n\t\tssrDataRoutes,\n\t};\n}\n\nexport {\n\tdiscoverCollectionContent,\n\tdiscoverRoutes,\n\tdiscoverSSRDataRoutes,\n\ttype SitemapDiscoveryResult,\n\ttype SitemapEntry,\n\ttype SitemapRoute,\n};\n",
|
|
@@ -71,11 +72,11 @@
|
|
|
71
72
|
"export * from './discovery';\nexport * from './generator';\n",
|
|
72
73
|
"import type { SitemapDiscoveryResult, SitemapEntry } from './discovery';\n\nconst DEFAULT_MAX_URLS = 50000; // Google's limit per sitemap\n\ntype SitemapPage = {\n\tfilename: string;\n\txml: string;\n\tentryCount: number;\n};\n\ntype SitemapResult = {\n\tpages: SitemapPage[];\n\tindexXml?: string;\n\tneedsIndex: boolean;\n};\n\nfunction normalizeRouteLocation(loc: string): string {\n\tif (loc === '/index') {\n\t\treturn '/';\n\t}\n\tif (loc.endsWith('/index')) {\n\t\treturn loc.slice(0, -6) || '/';\n\t}\n\treturn loc.replace(/\\.(tsx?|jsx?)$/, '');\n}\n\nfunction shouldIncludeRoute(\n\tpattern: string,\n\texcludeRoutes?: string[],\n): boolean {\n\tif (pattern.includes(':')) return false;\n\tif (excludeRoutes?.includes(pattern)) return false;\n\treturn true;\n}\n\nfunction createStaticEntry(\n\troute: { pattern: string; changefreq?: string; priority?: number },\n\tbaseUrl: string,\n\tdefaultChangefreq: string,\n\tdefaultPriority: number,\n): SitemapEntry {\n\tconst loc = normalizeRouteLocation(route.pattern);\n\n\treturn {\n\t\tloc: `${baseUrl}${loc}`,\n\t\tchangefreq: (route.changefreq ||\n\t\t\tdefaultChangefreq) as SitemapEntry['changefreq'],\n\t\tpriority:\n\t\t\troute.priority !== undefined\n\t\t\t\t? route.priority\n\t\t\t\t: loc === '/'\n\t\t\t\t\t? 1.0\n\t\t\t\t\t: defaultPriority,\n\t};\n}\n\nfunction collectAllEntries(\n\tdiscovery: SitemapDiscoveryResult,\n\tbaseUrl: string,\n\tchangefreq: string,\n\tpriority: number,\n\texcludeRoutes?: string[],\n): SitemapEntry[] {\n\tconst allEntries: SitemapEntry[] = [];\n\n\tfor (const route of discovery.staticRoutes) {\n\t\tif (shouldIncludeRoute(route.pattern, excludeRoutes)) {\n\t\t\tallEntries.push(createStaticEntry(route, baseUrl, changefreq, priority));\n\t\t}\n\t}\n\n\tfor (const [_collection, entries] of discovery.collections.entries()) {\n\t\tallEntries.push(...entries);\n\t}\n\n\tfor (const [_pattern, entries] of discovery.ssrDataRoutes.entries()) {\n\t\tallEntries.push(...entries);\n\t}\n\n\treturn allEntries;\n}\n\nfunction sortEntries(entries: SitemapEntry[]): void {\n\tentries.sort((a, b) => {\n\t\tconst priorityDiff = (b.priority || 0.5) - (a.priority || 0.5);\n\t\tif (priorityDiff !== 0) return priorityDiff;\n\t\treturn a.loc.localeCompare(b.loc);\n\t});\n}\n\nfunction createPaginatedSitemaps(\n\tallEntries: SitemapEntry[],\n\tmaxUrlsPerPage: number,\n\tbaseUrl: string,\n): SitemapResult {\n\tconst pages: SitemapPage[] = [];\n\tlet pageNum = 0;\n\n\tfor (let i = 0; i < allEntries.length; i += maxUrlsPerPage) {\n\t\tconst pageEntries = allEntries.slice(i, i + maxUrlsPerPage);\n\t\tconst xml = generateSitemapXML(pageEntries);\n\t\tconst filename = `sitemap-${pageNum}.xml`;\n\n\t\tpages.push({\n\t\t\tfilename,\n\t\t\txml,\n\t\t\tentryCount: pageEntries.length,\n\t\t});\n\t\tpageNum++;\n\t}\n\n\tconst indexXml = generateSitemapIndexXML(pages, baseUrl);\n\treturn { pages, indexXml, needsIndex: true };\n}\n\nfunction createSingleSitemap(allEntries: SitemapEntry[]): SitemapResult {\n\tconst xml = generateSitemapXML(allEntries);\n\tconst pages: SitemapPage[] = [\n\t\t{\n\t\t\tfilename: 'sitemap.xml',\n\t\t\txml,\n\t\t\tentryCount: allEntries.length,\n\t\t},\n\t];\n\n\treturn { pages, needsIndex: false };\n}\n\n/**\n * Generate sitemap XML from discovery result\n */\nasync function generateSitemap(\n\tdiscovery: SitemapDiscoveryResult,\n\tbaseUrl: string,\n\toptions: {\n\t\tchangefreq?:\n\t\t\t| 'always'\n\t\t\t| 'hourly'\n\t\t\t| 'daily'\n\t\t\t| 'weekly'\n\t\t\t| 'monthly'\n\t\t\t| 'yearly'\n\t\t\t| 'never';\n\t\tpriority?: number;\n\t\tmaxUrlsPerPage?: number;\n\t\texcludeRoutes?: string[];\n\t} = {},\n): Promise<SitemapResult> {\n\tconst {\n\t\tchangefreq = 'weekly',\n\t\tpriority = 0.5,\n\t\tmaxUrlsPerPage = DEFAULT_MAX_URLS,\n\t} = options;\n\n\tconst allEntries = collectAllEntries(\n\t\tdiscovery,\n\t\tbaseUrl,\n\t\tchangefreq,\n\t\tpriority,\n\t\toptions.excludeRoutes,\n\t);\n\n\tsortEntries(allEntries);\n\n\tconst needsIndex = allEntries.length > maxUrlsPerPage;\n\n\tif (needsIndex) {\n\t\treturn createPaginatedSitemaps(allEntries, maxUrlsPerPage, baseUrl);\n\t}\n\n\treturn createSingleSitemap(allEntries);\n}\n\n/**\n * Generate sitemap XML for a set of entries\n */\nfunction generateSitemapXML(entries: SitemapEntry[]): string {\n\tconst hasAlternates = entries.some(\n\t\t(e) => e.alternates && e.alternates.length > 0,\n\t);\n\n\tconst urlsetEntries = entries\n\t\t.map((entry) => {\n\t\t\tlet xml = ` <url>\\n <loc>${escapeXml(entry.loc)}</loc>`;\n\n\t\t\tif (entry.lastmod) {\n\t\t\t\txml += `\\n <lastmod>${entry.lastmod.split('T')[0]}</lastmod>`;\n\t\t\t}\n\n\t\t\tif (entry.changefreq) {\n\t\t\t\txml += `\\n <changefreq>${entry.changefreq}</changefreq>`;\n\t\t\t}\n\n\t\t\tif (entry.priority !== undefined) {\n\t\t\t\txml += `\\n <priority>${entry.priority.toFixed(1)}</priority>`;\n\t\t\t}\n\n\t\t\tif (entry.alternates?.length) {\n\t\t\t\tfor (const alt of entry.alternates) {\n\t\t\t\t\txml += `\\n <xhtml:link rel=\"alternate\" hreflang=\"${escapeXml(alt.hreflang)}\" href=\"${escapeXml(alt.href)}\" />`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txml += '\\n </url>';\n\t\t\treturn xml;\n\t\t})\n\t\t.join('\\n');\n\n\tconst xhtmlNs = hasAlternates\n\t\t? ' xmlns:xhtml=\"http://www.w3.org/1999/xhtml\"'\n\t\t: '';\n\n\treturn `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"${xhtmlNs}>\n${urlsetEntries}\n</urlset>`;\n}\n\n/**\n * Generate sitemap index XML\n */\nfunction generateSitemapIndexXML(\n\tpages: SitemapPage[],\n\tbaseUrl: string,\n): string {\n\tconst lastmod = new Date().toISOString().split('T')[0];\n\n\tconst sitemapEntries = pages\n\t\t.map((page) => {\n\t\t\treturn ` <sitemap>\n <loc>${escapeXml(`${baseUrl}/${page.filename}`)}</loc>\n <lastmod>${lastmod}</lastmod>\n </sitemap>`;\n\t\t})\n\t\t.join('\\n');\n\n\treturn `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${sitemapEntries}\n</sitemapindex>`;\n}\n\n/**\n * Escape XML special characters\n */\nfunction escapeXml(unsafe: string): string {\n\treturn unsafe\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\nexport {\n\tescapeXml,\n\tgenerateSitemap,\n\tgenerateSitemapIndexXML,\n\tgenerateSitemapXML,\n\ttype SitemapPage,\n\ttype SitemapResult,\n};\n",
|
|
73
74
|
"export * from './discovery';\nexport * from './generator';\n",
|
|
74
|
-
"import type { Span } from '@opentelemetry/api';\nimport { cloneElement, type ReactElement } from 'react';\nimport { renderToReadableStream } from 'react-dom/server';\nimport {\n\tgetTraceContextForInjection,\n\twithParentSpan,\n\twithSpan,\n} from 'reroute-js/telemetry/server';\nimport { loadConfig, type OGImageOptions, type OGOptions } from '../config';\nimport {\n\tcleanupPathScopedSSRData,\n\tcreateDataScript,\n\tcreateFeedsScript,\n\tcreateLlmsScript,\n\ttype Doc,\n\tgenerateCollectionScripts,\n\tperformSSRSetup,\n\ttype SSR,\n} from './lib';\nimport {\n\tdeduplicateMetaTags,\n\tloadIndexHtml,\n\tremoveOverriddenMetaTags,\n} from './lib/html';\nimport { isThenable } from './lib/imports';\nimport { splitTemplate } from './lib/template';\n\ntype StreamingSSROptions = {\n\tpathname: string;\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tbundleUrl: string;\n\tcachedCollections?: Record<string, unknown[]>;\n\tcachedThemeCSS?: string;\n\tcachedIndexHtml?: string;\n\tdebug?: boolean;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\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/** Maximum streaming timeout in milliseconds (default: 120000 / 120s) */\n\ttimeout?: number;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n\t/** Hydrated i18n state (opt-in) */\n\ti18n?: Record<string, unknown>;\n};\n\ntype StreamingSSRResult = {\n\tstream: ReadableStream<Uint8Array>;\n\tstatus: number;\n};\n\n/**\n * Render a React component to a streaming HTML response.\n * Uses React 19's streaming with progressive Suspense resolution.\n */\nasync function renderSSRDocumentStream(\n\toptions: StreamingSSROptions,\n): Promise<StreamingSSRResult> {\n\tconst debug = options.debug ?? false;\n\tconst t0 = debug ? performance.now() : 0;\n\tconst {\n\t\tpathname,\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tbundleUrl,\n\t\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tmaxAge = 0,\n\t\tsearchParams,\n\t\togConfig,\n\t} = options;\n\n\tif (debug) console.log(`[renderStream] ${pathname} - start: 0ms`);\n\n\t// Perform shared SSR setup\n\tconst setup = await performSSRSetup(\n\t\t{\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\tparentSpan: options.parentSpan,\n\t\t\tbundleUrl,\n\t\t\tmaxAge,\n\t\t\tsearchParams,\n\t\t\togConfig,\n\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\tbaseUrl: options.baseUrl,\n\t\t\tautoCanonical: options.autoCanonical,\n\t\t\tcachedCollections: options.cachedCollections,\n\t\t\tcachedThemeCSS: options.cachedThemeCSS,\n\t\t\tdebug,\n\t\t\theaders: options.headers,\n\t\t\ttitleSuffix: options.titleSuffix,\n\t\t\ttimeout: options.timeout,\n\t\t},\n\t\ttrue, // streaming mode\n\t);\n\tif (debug)\n\t\tconsole.log(\n\t\t\t`[renderStream] ${pathname} - performSSRSetup: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t);\n\n\t// Determine status (only override if value is set)\n\tlet statusOverride = setup.preloadStatusOverride;\n\tif (setup.statusContainer.value !== undefined) {\n\t\tstatusOverride = setup.statusContainer.value;\n\t}\n\tif (setup.metadataResult.statusOverride !== undefined) {\n\t\tstatusOverride = setup.metadataResult.statusOverride;\n\t}\n\n\t// Set up streaming\n\tconst encoder = new TextEncoder();\n\tconst { readable, writable } = new TransformStream<Uint8Array>();\n\tconst writer = writable.getWriter();\n\n\t// Load and split template (use cached if available)\n\tconst usingCache = !!options.cachedIndexHtml;\n\tconst { htmlHead, rootStart, rootEnd, htmlTail } = await withSpan(\n\t\t'ssr.load.template',\n\t\tasync (span) => {\n\t\t\tconst template = options.cachedIndexHtml\n\t\t\t\t? options.cachedIndexHtml\n\t\t\t\t: await loadIndexHtml(clientDir);\n\n\t\t\tspan.setAttribute('reroute.cached', usingCache);\n\t\t\tspan.setAttribute('reroute.template.size', template.length);\n\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[renderStream] ${pathname} - loadIndexHtml (cached: ${usingCache}): ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\n\t\t\tconst parts = splitTemplate(template, appId);\n\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[renderStream] ${pathname} - splitTemplate: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...parts,\n\t\t\t};\n\t\t},\n\t);\n\n\t// Build head with lang attribute (replace existing lang or add new one)\n\tconst i18nLocale = options.i18n?.enabled\n\t\t? String(options.i18n.locale || '')\n\t\t: '';\n\tconst pageLang = setup.metadataResult.pageLang || i18nLocale || lang;\n\tlet headWithLang = htmlHead.replace(/<html([^>]*)>/i, (_m, attrs: string) => {\n\t\tconst hasLang = /(^|\\s)lang\\s*=/.test(attrs);\n\t\tconst newAttrs = hasLang\n\t\t\t? attrs.replace(\n\t\t\t\t\t/lang\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^\\s>]+)/i,\n\t\t\t\t\t`lang=\"${pageLang}\"`,\n\t\t\t\t)\n\t\t\t: `${attrs} lang=\"${pageLang}\"`;\n\t\treturn `<html${newAttrs}>`;\n\t});\n\n\t// Build extra head content\n\tconst extraHead =\n\t\tsetup.bundlePreload +\n\t\tsetup.preloadExtraHead +\n\t\tsetup.metadataResult.perPageHead;\n\n\t// Remove default title/description from template if we have page-specific ones\n\tif (/<title[\\s\\S]*?<\\/title>/i.test(extraHead)) {\n\t\theadWithLang = headWithLang.replace(/<title[\\s\\S]*?<\\/title>/i, '');\n\t}\n\tif (/<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i.test(extraHead)) {\n\t\theadWithLang = headWithLang.replace(\n\t\t\t/<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i,\n\t\t\t'',\n\t\t);\n\t}\n\n\t// Remove OG/Twitter meta tags from template that will be overridden\n\theadWithLang = removeOverriddenMetaTags(headWithLang, extraHead);\n\n\t// Load config to get browser telemetry settings\n\tconst config = await loadConfig(cwd);\n\tconst browserTelemetryConfigRaw = config.telemetry?.browser as\n\t\t| Record<string, unknown>\n\t\t| undefined;\n\n\t// Serialize browser telemetry config (convert functions to strings for JSON)\n\tconst { serializeBrowserTelemetryConfig } = await import('./lib/serialize');\n\tconst browserTelemetryConfig = serializeBrowserTelemetryConfig(\n\t\tbrowserTelemetryConfigRaw,\n\t);\n\n\t// Extract trace context from parent span for distributed tracing\n\tconst traceContext = getTraceContextForInjection(options.parentSpan);\n\n\t// Start streaming in background\n\tstreamSSRContent(writer, encoder, {\n\t\trootComponent,\n\t\tpathname,\n\t\tsearchParams,\n\t\theadWithLang,\n\t\thead,\n\t\textraHead,\n\t\tinlineStyleTag: setup.inlineStyleTag,\n\t\tpageLang,\n\t\trootStart,\n\t\trootEnd,\n\t\thtmlTail,\n\t\tbundleUrl,\n\t\tisWatchMode,\n\t\tdebug,\n\t\tssrData: setup.ssrData,\n\t\tssrError: setup.ssrError,\n\t\tbyCollectionForSSR: setup.byCollectionForSSR,\n\t\tpreloadHydrationScript: setup.preloadHydrationScript,\n\t\tbrowserTelemetryConfig,\n\t\ttraceContext,\n\t\tparentSpan: options.parentSpan,\n\t\ttimeout: options.timeout,\n\t\tssrExport: setup.metadataResult.ssrExport,\n\t\ttitleSuffix: options.titleSuffix,\n\t\ti18n: options.i18n,\n\t});\n\n\tif (debug)\n\t\tconsole.log(\n\t\t\t`[renderStream] ${pathname} - returning stream: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t);\n\treturn { stream: readable, status: statusOverride || 200 };\n}\n\ntype StreamContext = {\n\trootComponent: ReactElement;\n\tpathname: string;\n\tsearchParams?: URLSearchParams;\n\theadWithLang: string;\n\thead: string;\n\textraHead: string;\n\tinlineStyleTag: string;\n\tpageLang: string;\n\trootStart: string;\n\trootEnd: string;\n\thtmlTail: string;\n\tbundleUrl: string;\n\tisWatchMode: boolean;\n\tdebug: boolean;\n\tssrData: Record<string, unknown>;\n\tssrError?: string;\n\tbyCollectionForSSR: Record<string, unknown[]>;\n\tpreloadHydrationScript: string;\n\tbrowserTelemetryConfig?: Record<string, unknown>;\n\ttraceContext?: { traceparent?: string; tracestate?: string };\n\tparentSpan?: Span | null;\n\ttimeout?: number;\n\t/** SSR export for dynamic head generation at stream end */\n\tssrExport?: SSR;\n\t/** Suffix to append to page titles */\n\ttitleSuffix?: string;\n\t/** Hydrated i18n state (opt-in) */\n\ti18n?: Record<string, unknown>;\n};\n\n/**\n * Stream SSR content progressively\n * NOTE: This runs during the HTTP request lifecycle - Elysia waits for the stream\n * to complete before calling onAfterResponse\n */\nasync function streamSSRContent(\n\twriter: WritableStreamDefaultWriter<Uint8Array>,\n\tencoder: TextEncoder,\n\tctx: StreamContext,\n): Promise<void> {\n\t// Execute within parent span context to properly nest spans\n\treturn withParentSpan(ctx.parentSpan, async () => {\n\t\tconst t0 = ctx.debug ? performance.now() : 0;\n\t\t// Set a maximum streaming timeout to prevent server hangs\n\t\t// This ensures the stream always completes even if React is waiting for promises\n\t\t// Default to 120 seconds, but allow configuration for long operations like AI analysis\n\t\tconst STREAM_TIMEOUT_MS = ctx.timeout ?? 120000;\n\t\tlet streamTimedOut = false;\n\t\tlet timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n\t\tconst cleanup = () => {\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\ttimeoutId = null;\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\t// 1. Send HTML head immediately (shell)\n\t\t\tconst combinedHead = deduplicateMetaTags(\n\t\t\t\t[ctx.inlineStyleTag, ctx.head, ctx.extraHead]\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join('\\n'),\n\t\t\t);\n\t\t\t// Inject combined head BEFORE </head> (lang is already handled in headWithLang)\n\t\t\tconst headWithLangAndContent = ctx.headWithLang.replace(\n\t\t\t\t/<\\/head>/i,\n\t\t\t\t`${combinedHead ? `${combinedHead}\\n` : ''}</head>`,\n\t\t\t);\n\t\t\tconst headContent = `${headWithLangAndContent}`;\n\t\t\tawait writer.write(encoder.encode(headContent));\n\t\t\tif (ctx.debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[Stream] ${ctx.pathname} - first byte written: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\n\t\t\t// 2. Send root div start\n\t\t\tawait writer.write(encoder.encode(ctx.rootStart));\n\n\t\t\t// 3. Stream React content (both create and pipe)\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Stream creation and piping requires timeout handling\n\t\t\tawait withSpan('ssr.document.stream', async (span) => {\n\t\t\t\tconst componentWithPathname = cloneElement(ctx.rootComponent, {\n\t\t\t\t\tpathname: ctx.pathname,\n\t\t\t\t\tsearchParams: ctx.searchParams,\n\t\t\t\t} as Doc);\n\n\t\t\t\tspan.setAttribute('reroute.pathname', ctx.pathname);\n\n\t\t\t\tlet streamError: Error | null = null;\n\t\t\t\tconst streamPromise = renderToReadableStream(componentWithPathname, {\n\t\t\t\t\tonError(error) {\n\t\t\t\t\t\tconsole.error('[reroute] SSR stream error:', error);\n\t\t\t\t\t\tstreamError =\n\t\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error));\n\t\t\t\t\t},\n\t\t\t\t}).catch((err) => {\n\t\t\t\t\tstreamError = err;\n\t\t\t\t\tthrow err;\n\t\t\t\t});\n\n\t\t\t\tconst reactStream = await streamPromise;\n\t\t\t\tif (streamError) throw streamError;\n\n\t\t\t\t// Pipe React stream to writer\n\t\t\t\t// Set up streaming timeout - if React takes too long, force close\n\t\t\t\tconst streamTimeoutPromise = new Promise<{\n\t\t\t\t\tdone: true;\n\t\t\t\t\tvalue: undefined;\n\t\t\t\t}>((resolve) => {\n\t\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`[reroute] Stream timeout after ${STREAM_TIMEOUT_MS}ms for ${ctx.pathname}, forcing close`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tstreamTimedOut = true;\n\t\t\t\t\t\tresolve({ done: true, value: undefined });\n\t\t\t\t\t}, STREAM_TIMEOUT_MS);\n\t\t\t\t});\n\n\t\t\t\tconst reader = reactStream.getReader();\n\t\t\t\tlet chunkCount = 0;\n\t\t\t\twhile (true) {\n\t\t\t\t\t// Race between getting next chunk and timeout\n\t\t\t\t\tconst result = await Promise.race([\n\t\t\t\t\t\treader.read(),\n\t\t\t\t\t\tstreamTimeoutPromise,\n\t\t\t\t\t]);\n\n\t\t\t\t\tif (result.done || streamTimedOut) {\n\t\t\t\t\t\tif (streamTimedOut) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait reader.cancel(\n\t\t\t\t\t\t\t\t\t`[reroute] stream timeout for ${ctx.pathname}`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Release the reader lock before breaking\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treader.releaseLock();\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (result.value) {\n\t\t\t\t\t\t// Decode, obfuscate emails, and re-encode if needed\n\t\t\t\t\t\tawait writer.write(result.value);\n\t\t\t\t\t\tchunkCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcleanup();\n\n\t\t\t\tspan.setAttributes({\n\t\t\t\t\t'reroute.stream.chunks': chunkCount,\n\t\t\t\t\t'reroute.stream.timedOut': streamTimedOut,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tif (streamTimedOut) {\n\t\t\t\tcleanupPathScopedSSRData(ctx.pathname);\n\t\t\t}\n\n\t\t\t// 4. Close root div\n\t\t\tawait writer.write(encoder.encode(ctx.rootEnd));\n\n\t\t\t// 5. Generate scripts\n\t\t\tconst allScripts = await withSpan(\n\t\t\t\t'ssr.generate.scripts',\n\t\t\t\tasync (span) => {\n\t\t\t\t\tconst scripts = buildStreamingScripts(ctx);\n\t\t\t\t\tspan.setAttribute('reroute.script_size', scripts.length);\n\t\t\t\t\treturn scripts;\n\t\t\t\t},\n\t\t\t);\n\t\t\tawait writer.write(encoder.encode(allScripts + ctx.htmlTail));\n\t\t\tawait writer.close();\n\t\t} catch (error) {\n\t\t\tcleanup();\n\t\t\tcleanupPathScopedSSRData(ctx.pathname);\n\t\t\tconsole.error('[reroute] Stream error:', error);\n\t\t\ttry {\n\t\t\t\tawait writer.abort(error);\n\t\t\t} catch {\n\t\t\t\t// Writer might already be closed\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * Build all scripts for streaming SSR\n */\nfunction buildStreamingScripts(ctx: StreamContext): string {\n\t// Generate collection scripts\n\tconst collectionScripts = generateCollectionScripts(ctx.byCollectionForSSR);\n\n\t// Create snapshot of resolved SSR data\n\tconst ssrDataSnapshot: Record<string, unknown> = {};\n\tfor (const key of Object.keys(ctx.ssrData)) {\n\t\tconst value = ctx.ssrData[key];\n\t\tif (!isThenable(value)) {\n\t\t\tssrDataSnapshot[key] = value;\n\t\t}\n\t}\n\n\t// Build scripts\n\tconst dataScript = createDataScript(\n\t\tssrDataSnapshot,\n\t\tctx.isWatchMode ? ctx.ssrError : undefined,\n\t\tctx.pathname,\n\t\tctx.browserTelemetryConfig,\n\t\tctx.traceContext,\n\t\tctx.titleSuffix,\n\t\tctx.i18n,\n\t);\n\tconst feedsScript = createFeedsScript();\n\tconst llmsScript = createLlmsScript();\n\n\tlet allScripts =\n\t\tdataScript +\n\t\tfeedsScript +\n\t\tllmsScript +\n\t\tcollectionScripts +\n\t\tctx.preloadHydrationScript;\n\n\t// Generate meta update script if route has dynamic head function\n\tconst metaUpdateScript = generateMetaUpdateScript(ctx, ssrDataSnapshot);\n\tif (metaUpdateScript) {\n\t\tallScripts += metaUpdateScript;\n\t}\n\n\t// Add bundle script\n\tallScripts += `<script type=\"module\" src=\"${ctx.bundleUrl}\"></script>`;\n\n\t// Add dev watcher\n\tif (ctx.isWatchMode) {\n\t\tallScripts += `<script type=\"module\" src=\"/__reroute_watch.js\"></script>`;\n\t}\n\n\treturn allScripts;\n}\n\n/**\n * Apply titleSuffix to title-related fields in meta updates\n */\nfunction applyTitleSuffixToMetaUpdates(\n\tmetaUpdates: Record<string, string>,\n\ttitleSuffix: string,\n): void {\n\tif (metaUpdates.title && !metaUpdates.title.endsWith(titleSuffix)) {\n\t\tmetaUpdates.title = metaUpdates.title + titleSuffix;\n\t}\n\tif (\n\t\tmetaUpdates['og:title'] &&\n\t\t!metaUpdates['og:title'].endsWith(titleSuffix)\n\t) {\n\t\tmetaUpdates['og:title'] = metaUpdates['og:title'] + titleSuffix;\n\t}\n\tif (\n\t\tmetaUpdates['twitter:title'] &&\n\t\t!metaUpdates['twitter:title'].endsWith(titleSuffix)\n\t) {\n\t\tmetaUpdates['twitter:title'] = metaUpdates['twitter:title'] + titleSuffix;\n\t}\n}\n\n/**\n * Generate a script to update head meta tags at stream end.\n * This is used when streaming SSR needs to update dynamic meta tags\n * after data has resolved.\n */\nfunction generateMetaUpdateScript(\n\tctx: StreamContext,\n\tssrDataSnapshot: Record<string, unknown>,\n): string {\n\t// Only generate if route has dynamic head function\n\tif (typeof ctx.ssrExport?.head !== 'function') {\n\t\treturn '';\n\t}\n\n\t// Get the resolved route data\n\tconst routeData = ssrDataSnapshot[ctx.pathname];\n\tif (!routeData) {\n\t\treturn '';\n\t}\n\n\t// Call the head function with resolved data\n\tlet headResult: string | string[] | undefined;\n\ttry {\n\t\theadResult = ctx.ssrExport.head({ data: routeData });\n\t} catch (err) {\n\t\tconsole.error('[reroute] Error calling ssr.head() at stream end:', err);\n\t\treturn '';\n\t}\n\n\tif (!headResult) {\n\t\treturn '';\n\t}\n\n\t// Convert to string\n\tconst headHtml = Array.isArray(headResult)\n\t\t? headResult.join('\\n')\n\t\t: headResult;\n\tif (!headHtml) {\n\t\treturn '';\n\t}\n\n\t// Parse the head HTML to extract meta tag values\n\tconst metaUpdates = parseHeadForMetaUpdates(headHtml);\n\tif (Object.keys(metaUpdates).length === 0) {\n\t\treturn '';\n\t}\n\n\t// Apply titleSuffix to title and related meta tags\n\tif (ctx.titleSuffix) {\n\t\tapplyTitleSuffixToMetaUpdates(metaUpdates, ctx.titleSuffix);\n\t}\n\n\t// Generate inline script to update the head\n\tconst updatesJson = JSON.stringify(metaUpdates);\n\treturn `<script>(function(){var u=${updatesJson};if(u.title){document.title=u.title}Object.keys(u).forEach(function(k){if(k==='title')return;var s=k.split(':');var isOg=s[0]==='og'||s[0]==='twitter';var el=isOg?document.querySelector('meta[property=\"'+k+'\"]')||document.querySelector('meta[name=\"'+k+'\"]'):document.querySelector('meta[name=\"'+k+'\"]');if(el){el.setAttribute('content',u[k])}else{var m=document.createElement('meta');m.setAttribute(isOg?'property':'name',k);m.setAttribute('content',u[k]);document.head.appendChild(m)}})})()</script>`;\n}\n\n/**\n * Parse head HTML to extract values for meta tag updates\n */\nfunction parseHeadForMetaUpdates(headHtml: string): Record<string, string> {\n\tconst updates: Record<string, string> = {};\n\n\t// Extract title\n\tconst titleMatch = headHtml.match(/<title[^>]*>(.*?)<\\/title>/is);\n\tif (titleMatch?.[1]) {\n\t\tupdates.title = unescapeHtmlEntities(titleMatch[1].trim());\n\t}\n\n\t// Extract meta description\n\tlet descMatch = headHtml.match(\n\t\t/<meta\\s+name=[\"']description[\"']\\s+content=[\"'](.+?)[\"']/i,\n\t);\n\tif (!descMatch) {\n\t\tdescMatch = headHtml.match(\n\t\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+name=[\"']description[\"']/i,\n\t\t);\n\t}\n\tif (descMatch?.[1]) {\n\t\tupdates.description = unescapeHtmlEntities(descMatch[1].trim());\n\t}\n\n\t// Extract og:title\n\tlet ogTitleMatch = headHtml.match(\n\t\t/<meta\\s+property=[\"']og:title[\"']\\s+content=[\"'](.+?)[\"']/i,\n\t);\n\tif (!ogTitleMatch) {\n\t\togTitleMatch = headHtml.match(\n\t\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+property=[\"']og:title[\"']/i,\n\t\t);\n\t}\n\tif (ogTitleMatch?.[1]) {\n\t\tupdates['og:title'] = unescapeHtmlEntities(ogTitleMatch[1].trim());\n\t} else if (updates.title) {\n\t\t// Fallback: use title for og:title\n\t\tupdates['og:title'] = updates.title;\n\t}\n\n\t// Extract og:description\n\tlet ogDescMatch = headHtml.match(\n\t\t/<meta\\s+property=[\"']og:description[\"']\\s+content=[\"'](.+?)[\"']/i,\n\t);\n\tif (!ogDescMatch) {\n\t\togDescMatch = headHtml.match(\n\t\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+property=[\"']og:description[\"']/i,\n\t\t);\n\t}\n\tif (ogDescMatch?.[1]) {\n\t\tupdates['og:description'] = unescapeHtmlEntities(ogDescMatch[1].trim());\n\t} else if (updates.description) {\n\t\t// Fallback: use description for og:description\n\t\tupdates['og:description'] = updates.description;\n\t}\n\n\t// Extract twitter:title\n\tlet twitterTitleMatch = headHtml.match(\n\t\t/<meta\\s+name=[\"']twitter:title[\"']\\s+content=[\"'](.+?)[\"']/i,\n\t);\n\tif (!twitterTitleMatch) {\n\t\ttwitterTitleMatch = headHtml.match(\n\t\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+name=[\"']twitter:title[\"']/i,\n\t\t);\n\t}\n\tif (twitterTitleMatch?.[1]) {\n\t\tupdates['twitter:title'] = unescapeHtmlEntities(\n\t\t\ttwitterTitleMatch[1].trim(),\n\t\t);\n\t} else if (updates.title) {\n\t\t// Fallback: use title for twitter:title\n\t\tupdates['twitter:title'] = updates.title;\n\t}\n\n\t// Extract twitter:description\n\tlet twitterDescMatch = headHtml.match(\n\t\t/<meta\\s+name=[\"']twitter:description[\"']\\s+content=[\"'](.+?)[\"']/i,\n\t);\n\tif (!twitterDescMatch) {\n\t\ttwitterDescMatch = headHtml.match(\n\t\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+name=[\"']twitter:description[\"']/i,\n\t\t);\n\t}\n\tif (twitterDescMatch?.[1]) {\n\t\tupdates['twitter:description'] = unescapeHtmlEntities(\n\t\t\ttwitterDescMatch[1].trim(),\n\t\t);\n\t} else if (updates.description) {\n\t\t// Fallback: use description for twitter:description\n\t\tupdates['twitter:description'] = updates.description;\n\t}\n\n\treturn updates;\n}\n\n/**\n * Unescape HTML entities\n */\nfunction unescapeHtmlEntities(str: string): string {\n\treturn str\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\nexport { renderSSRDocumentStream };\nexport type { StreamingSSROptions, StreamingSSRResult };\n",
|
|
75
|
+
"import type { Span } from '@opentelemetry/api';\nimport { cloneElement, type ReactElement } from 'react';\nimport { renderToReadableStream } from 'react-dom/server';\nimport {\n\tgetTraceContextForInjection,\n\twithParentSpan,\n\twithSpan,\n} from 'reroute-js/telemetry/server';\nimport { loadConfig, type OGImageOptions, type OGOptions } from '../config';\nimport { appendLlmsAlternateHead } from '../llms/discovery';\nimport {\n\tcleanupPathScopedSSRData,\n\tcreateDataScript,\n\tcreateFeedsScript,\n\tcreateLlmsScript,\n\ttype Doc,\n\tgenerateCollectionScripts,\n\tperformSSRSetup,\n\ttype SSR,\n} from './lib';\nimport {\n\tdeduplicateMetaTags,\n\tloadIndexHtml,\n\tremoveOverriddenMetaTags,\n} from './lib/html';\nimport { isThenable } from './lib/imports';\nimport { splitTemplate } from './lib/template';\n\ntype StreamingSSROptions = {\n\tpathname: string;\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tbundleUrl: string;\n\tcachedCollections?: Record<string, unknown[]>;\n\tcachedThemeCSS?: string;\n\tcachedIndexHtml?: string;\n\tdebug?: boolean;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\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/** Maximum streaming timeout in milliseconds (default: 120000 / 120s) */\n\ttimeout?: number;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n\t/** Hydrated i18n state (opt-in) */\n\ti18n?: Record<string, unknown>;\n};\n\ntype StreamingSSRResult = {\n\tstream: ReadableStream<Uint8Array>;\n\tstatus: number;\n};\n\n/**\n * Render a React component to a streaming HTML response.\n * Uses React 19's streaming with progressive Suspense resolution.\n */\nasync function renderSSRDocumentStream(\n\toptions: StreamingSSROptions,\n): Promise<StreamingSSRResult> {\n\tconst debug = options.debug ?? false;\n\tconst t0 = debug ? performance.now() : 0;\n\tconst {\n\t\tpathname,\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tbundleUrl,\n\t\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tmaxAge = 0,\n\t\tsearchParams,\n\t\togConfig,\n\t} = options;\n\n\tif (debug) console.log(`[renderStream] ${pathname} - start: 0ms`);\n\n\t// Perform shared SSR setup\n\tconst setup = await performSSRSetup(\n\t\t{\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\tparentSpan: options.parentSpan,\n\t\t\tbundleUrl,\n\t\t\tmaxAge,\n\t\t\tsearchParams,\n\t\t\togConfig,\n\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\tbaseUrl: options.baseUrl,\n\t\t\tautoCanonical: options.autoCanonical,\n\t\t\tcachedCollections: options.cachedCollections,\n\t\t\tcachedThemeCSS: options.cachedThemeCSS,\n\t\t\tdebug,\n\t\t\theaders: options.headers,\n\t\t\ttitleSuffix: options.titleSuffix,\n\t\t\ttimeout: options.timeout,\n\t\t},\n\t\ttrue, // streaming mode\n\t);\n\tif (debug)\n\t\tconsole.log(\n\t\t\t`[renderStream] ${pathname} - performSSRSetup: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t);\n\n\t// Determine status (only override if value is set)\n\tlet statusOverride = setup.preloadStatusOverride;\n\tif (setup.statusContainer.value !== undefined) {\n\t\tstatusOverride = setup.statusContainer.value;\n\t}\n\tif (setup.metadataResult.statusOverride !== undefined) {\n\t\tstatusOverride = setup.metadataResult.statusOverride;\n\t}\n\n\t// Set up streaming\n\tconst encoder = new TextEncoder();\n\tconst { readable, writable } = new TransformStream<Uint8Array>();\n\tconst writer = writable.getWriter();\n\n\t// Load and split template (use cached if available)\n\tconst usingCache = !!options.cachedIndexHtml;\n\tconst { htmlHead, rootStart, rootEnd, htmlTail } = await withSpan(\n\t\t'ssr.load.template',\n\t\tasync (span) => {\n\t\t\tconst template = options.cachedIndexHtml\n\t\t\t\t? options.cachedIndexHtml\n\t\t\t\t: await loadIndexHtml(clientDir);\n\n\t\t\tspan.setAttribute('reroute.cached', usingCache);\n\t\t\tspan.setAttribute('reroute.template.size', template.length);\n\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[renderStream] ${pathname} - loadIndexHtml (cached: ${usingCache}): ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\n\t\t\tconst parts = splitTemplate(template, appId);\n\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[renderStream] ${pathname} - splitTemplate: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...parts,\n\t\t\t};\n\t\t},\n\t);\n\n\t// Build head with lang attribute (replace existing lang or add new one)\n\tconst i18nLocale = options.i18n?.enabled\n\t\t? String(options.i18n.locale || '')\n\t\t: '';\n\tconst pageLang = setup.metadataResult.pageLang || i18nLocale || lang;\n\tlet headWithLang = htmlHead.replace(/<html([^>]*)>/i, (_m, attrs: string) => {\n\t\tconst hasLang = /(^|\\s)lang\\s*=/.test(attrs);\n\t\tconst newAttrs = hasLang\n\t\t\t? attrs.replace(\n\t\t\t\t\t/lang\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^\\s>]+)/i,\n\t\t\t\t\t`lang=\"${pageLang}\"`,\n\t\t\t\t)\n\t\t\t: `${attrs} lang=\"${pageLang}\"`;\n\t\treturn `<html${newAttrs}>`;\n\t});\n\n\t// Build extra head content\n\tconst extraHeadBase =\n\t\tsetup.bundlePreload +\n\t\tsetup.preloadExtraHead +\n\t\tsetup.metadataResult.perPageHead;\n\n\t// Remove default title/description from template if we have page-specific ones\n\tif (/<title[\\s\\S]*?<\\/title>/i.test(extraHeadBase)) {\n\t\theadWithLang = headWithLang.replace(/<title[\\s\\S]*?<\\/title>/i, '');\n\t}\n\tif (/<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i.test(extraHeadBase)) {\n\t\theadWithLang = headWithLang.replace(\n\t\t\t/<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i,\n\t\t\t'',\n\t\t);\n\t}\n\n\t// Remove OG/Twitter meta tags from template that will be overridden\n\theadWithLang = removeOverriddenMetaTags(headWithLang, extraHeadBase);\n\n\t// Load config to get browser telemetry settings\n\tconst config = await loadConfig(cwd);\n\tconst extraHead = appendLlmsAlternateHead(\n\t\textraHeadBase,\n\t\tpathname,\n\t\tstatusOverride || 200,\n\t\tconfig.llms,\n\t);\n\tconst browserTelemetryConfigRaw = config.telemetry?.browser as\n\t\t| Record<string, unknown>\n\t\t| undefined;\n\n\t// Serialize browser telemetry config (convert functions to strings for JSON)\n\tconst { serializeBrowserTelemetryConfig } = await import('./lib/serialize');\n\tconst browserTelemetryConfig = serializeBrowserTelemetryConfig(\n\t\tbrowserTelemetryConfigRaw,\n\t);\n\n\t// Extract trace context from parent span for distributed tracing\n\tconst traceContext = getTraceContextForInjection(options.parentSpan);\n\n\t// Start streaming in background\n\tstreamSSRContent(writer, encoder, {\n\t\trootComponent,\n\t\tpathname,\n\t\tsearchParams,\n\t\theadWithLang,\n\t\thead,\n\t\textraHead,\n\t\tinlineStyleTag: setup.inlineStyleTag,\n\t\tpageLang,\n\t\trootStart,\n\t\trootEnd,\n\t\thtmlTail,\n\t\tbundleUrl,\n\t\tisWatchMode,\n\t\tdebug,\n\t\tssrData: setup.ssrData,\n\t\tssrError: setup.ssrError,\n\t\tbyCollectionForSSR: setup.byCollectionForSSR,\n\t\tpreloadHydrationScript: setup.preloadHydrationScript,\n\t\tbrowserTelemetryConfig,\n\t\ttraceContext,\n\t\tparentSpan: options.parentSpan,\n\t\ttimeout: options.timeout,\n\t\tssrExport: setup.metadataResult.ssrExport,\n\t\ttitleSuffix: options.titleSuffix,\n\t\ti18n: options.i18n,\n\t});\n\n\tif (debug)\n\t\tconsole.log(\n\t\t\t`[renderStream] ${pathname} - returning stream: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t);\n\treturn { stream: readable, status: statusOverride || 200 };\n}\n\ntype StreamContext = {\n\trootComponent: ReactElement;\n\tpathname: string;\n\tsearchParams?: URLSearchParams;\n\theadWithLang: string;\n\thead: string;\n\textraHead: string;\n\tinlineStyleTag: string;\n\tpageLang: string;\n\trootStart: string;\n\trootEnd: string;\n\thtmlTail: string;\n\tbundleUrl: string;\n\tisWatchMode: boolean;\n\tdebug: boolean;\n\tssrData: Record<string, unknown>;\n\tssrError?: string;\n\tbyCollectionForSSR: Record<string, unknown[]>;\n\tpreloadHydrationScript: string;\n\tbrowserTelemetryConfig?: Record<string, unknown>;\n\ttraceContext?: { traceparent?: string; tracestate?: string };\n\tparentSpan?: Span | null;\n\ttimeout?: number;\n\t/** SSR export for dynamic head generation at stream end */\n\tssrExport?: SSR;\n\t/** Suffix to append to page titles */\n\ttitleSuffix?: string;\n\t/** Hydrated i18n state (opt-in) */\n\ti18n?: Record<string, unknown>;\n};\n\n/**\n * Stream SSR content progressively\n * NOTE: This runs during the HTTP request lifecycle - Elysia waits for the stream\n * to complete before calling onAfterResponse\n */\nasync function streamSSRContent(\n\twriter: WritableStreamDefaultWriter<Uint8Array>,\n\tencoder: TextEncoder,\n\tctx: StreamContext,\n): Promise<void> {\n\t// Execute within parent span context to properly nest spans\n\treturn withParentSpan(ctx.parentSpan, async () => {\n\t\tconst t0 = ctx.debug ? performance.now() : 0;\n\t\t// Set a maximum streaming timeout to prevent server hangs\n\t\t// This ensures the stream always completes even if React is waiting for promises\n\t\t// Default to 120 seconds, but allow configuration for long operations like AI analysis\n\t\tconst STREAM_TIMEOUT_MS = ctx.timeout ?? 120000;\n\t\tlet streamTimedOut = false;\n\t\tlet timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n\t\tconst cleanup = () => {\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\ttimeoutId = null;\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\t// 1. Send HTML head immediately (shell)\n\t\t\tconst combinedHead = deduplicateMetaTags(\n\t\t\t\t[ctx.inlineStyleTag, ctx.head, ctx.extraHead]\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join('\\n'),\n\t\t\t);\n\t\t\t// Inject combined head BEFORE </head> (lang is already handled in headWithLang)\n\t\t\tconst headWithLangAndContent = ctx.headWithLang.replace(\n\t\t\t\t/<\\/head>/i,\n\t\t\t\t`${combinedHead ? `${combinedHead}\\n` : ''}</head>`,\n\t\t\t);\n\t\t\tconst headContent = `${headWithLangAndContent}`;\n\t\t\tawait writer.write(encoder.encode(headContent));\n\t\t\tif (ctx.debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[Stream] ${ctx.pathname} - first byte written: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\n\t\t\t// 2. Send root div start\n\t\t\tawait writer.write(encoder.encode(ctx.rootStart));\n\n\t\t\t// 3. Stream React content (both create and pipe)\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Stream creation and piping requires timeout handling\n\t\t\tawait withSpan('ssr.document.stream', async (span) => {\n\t\t\t\tconst componentWithPathname = cloneElement(ctx.rootComponent, {\n\t\t\t\t\tpathname: ctx.pathname,\n\t\t\t\t\tsearchParams: ctx.searchParams,\n\t\t\t\t} as Doc);\n\n\t\t\t\tspan.setAttribute('reroute.pathname', ctx.pathname);\n\n\t\t\t\tlet streamError: Error | null = null;\n\t\t\t\tconst streamPromise = renderToReadableStream(componentWithPathname, {\n\t\t\t\t\tonError(error) {\n\t\t\t\t\t\tconsole.error('[reroute] SSR stream error:', error);\n\t\t\t\t\t\tstreamError =\n\t\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error));\n\t\t\t\t\t},\n\t\t\t\t}).catch((err) => {\n\t\t\t\t\tstreamError = err;\n\t\t\t\t\tthrow err;\n\t\t\t\t});\n\n\t\t\t\tconst reactStream = await streamPromise;\n\t\t\t\tif (streamError) throw streamError;\n\n\t\t\t\t// Pipe React stream to writer\n\t\t\t\t// Set up streaming timeout - if React takes too long, force close\n\t\t\t\tconst streamTimeoutPromise = new Promise<{\n\t\t\t\t\tdone: true;\n\t\t\t\t\tvalue: undefined;\n\t\t\t\t}>((resolve) => {\n\t\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`[reroute] Stream timeout after ${STREAM_TIMEOUT_MS}ms for ${ctx.pathname}, forcing close`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tstreamTimedOut = true;\n\t\t\t\t\t\tresolve({ done: true, value: undefined });\n\t\t\t\t\t}, STREAM_TIMEOUT_MS);\n\t\t\t\t});\n\n\t\t\t\tconst reader = reactStream.getReader();\n\t\t\t\tlet chunkCount = 0;\n\t\t\t\twhile (true) {\n\t\t\t\t\t// Race between getting next chunk and timeout\n\t\t\t\t\tconst result = await Promise.race([\n\t\t\t\t\t\treader.read(),\n\t\t\t\t\t\tstreamTimeoutPromise,\n\t\t\t\t\t]);\n\n\t\t\t\t\tif (result.done || streamTimedOut) {\n\t\t\t\t\t\tif (streamTimedOut) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait reader.cancel(\n\t\t\t\t\t\t\t\t\t`[reroute] stream timeout for ${ctx.pathname}`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Release the reader lock before breaking\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treader.releaseLock();\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (result.value) {\n\t\t\t\t\t\t// Decode, obfuscate emails, and re-encode if needed\n\t\t\t\t\t\tawait writer.write(result.value);\n\t\t\t\t\t\tchunkCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcleanup();\n\n\t\t\t\tspan.setAttributes({\n\t\t\t\t\t'reroute.stream.chunks': chunkCount,\n\t\t\t\t\t'reroute.stream.timedOut': streamTimedOut,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tif (streamTimedOut) {\n\t\t\t\tcleanupPathScopedSSRData(ctx.pathname);\n\t\t\t}\n\n\t\t\t// 4. Close root div\n\t\t\tawait writer.write(encoder.encode(ctx.rootEnd));\n\n\t\t\t// 5. Generate scripts\n\t\t\tconst allScripts = await withSpan(\n\t\t\t\t'ssr.generate.scripts',\n\t\t\t\tasync (span) => {\n\t\t\t\t\tconst scripts = buildStreamingScripts(ctx);\n\t\t\t\t\tspan.setAttribute('reroute.script_size', scripts.length);\n\t\t\t\t\treturn scripts;\n\t\t\t\t},\n\t\t\t);\n\t\t\tawait writer.write(encoder.encode(allScripts + ctx.htmlTail));\n\t\t\tawait writer.close();\n\t\t} catch (error) {\n\t\t\tcleanup();\n\t\t\tcleanupPathScopedSSRData(ctx.pathname);\n\t\t\tconsole.error('[reroute] Stream error:', error);\n\t\t\ttry {\n\t\t\t\tawait writer.abort(error);\n\t\t\t} catch {\n\t\t\t\t// Writer might already be closed\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * Build all scripts for streaming SSR\n */\nfunction buildStreamingScripts(ctx: StreamContext): string {\n\t// Generate collection scripts\n\tconst collectionScripts = generateCollectionScripts(ctx.byCollectionForSSR);\n\n\t// Create snapshot of resolved SSR data\n\tconst ssrDataSnapshot: Record<string, unknown> = {};\n\tfor (const key of Object.keys(ctx.ssrData)) {\n\t\tconst value = ctx.ssrData[key];\n\t\tif (!isThenable(value)) {\n\t\t\tssrDataSnapshot[key] = value;\n\t\t}\n\t}\n\n\t// Build scripts\n\tconst dataScript = createDataScript(\n\t\tssrDataSnapshot,\n\t\tctx.isWatchMode ? ctx.ssrError : undefined,\n\t\tctx.pathname,\n\t\tctx.browserTelemetryConfig,\n\t\tctx.traceContext,\n\t\tctx.titleSuffix,\n\t\tctx.i18n,\n\t);\n\tconst feedsScript = createFeedsScript();\n\tconst llmsScript = createLlmsScript();\n\n\tlet allScripts =\n\t\tdataScript +\n\t\tfeedsScript +\n\t\tllmsScript +\n\t\tcollectionScripts +\n\t\tctx.preloadHydrationScript;\n\n\t// Generate meta update script if route has dynamic head function\n\tconst metaUpdateScript = generateMetaUpdateScript(ctx, ssrDataSnapshot);\n\tif (metaUpdateScript) {\n\t\tallScripts += metaUpdateScript;\n\t}\n\n\t// Add bundle script\n\tallScripts += `<script type=\"module\" src=\"${ctx.bundleUrl}\"></script>`;\n\n\t// Add dev watcher\n\tif (ctx.isWatchMode) {\n\t\tallScripts += `<script type=\"module\" src=\"/__reroute_watch.js\"></script>`;\n\t}\n\n\treturn allScripts;\n}\n\n/**\n * Apply titleSuffix to title-related fields in meta updates\n */\nfunction applyTitleSuffixToMetaUpdates(\n\tmetaUpdates: Record<string, string>,\n\ttitleSuffix: string,\n): void {\n\tif (metaUpdates.title && !metaUpdates.title.endsWith(titleSuffix)) {\n\t\tmetaUpdates.title = metaUpdates.title + titleSuffix;\n\t}\n\tif (\n\t\tmetaUpdates['og:title'] &&\n\t\t!metaUpdates['og:title'].endsWith(titleSuffix)\n\t) {\n\t\tmetaUpdates['og:title'] = metaUpdates['og:title'] + titleSuffix;\n\t}\n\tif (\n\t\tmetaUpdates['twitter:title'] &&\n\t\t!metaUpdates['twitter:title'].endsWith(titleSuffix)\n\t) {\n\t\tmetaUpdates['twitter:title'] = metaUpdates['twitter:title'] + titleSuffix;\n\t}\n}\n\n/**\n * Generate a script to update head meta tags at stream end.\n * This is used when streaming SSR needs to update dynamic meta tags\n * after data has resolved.\n */\nfunction generateMetaUpdateScript(\n\tctx: StreamContext,\n\tssrDataSnapshot: Record<string, unknown>,\n): string {\n\t// Only generate if route has dynamic head function\n\tif (typeof ctx.ssrExport?.head !== 'function') {\n\t\treturn '';\n\t}\n\n\t// Get the resolved route data\n\tconst routeData = ssrDataSnapshot[ctx.pathname];\n\tif (!routeData) {\n\t\treturn '';\n\t}\n\n\t// Call the head function with resolved data\n\tlet headResult: string | string[] | undefined;\n\ttry {\n\t\theadResult = ctx.ssrExport.head({ data: routeData });\n\t} catch (err) {\n\t\tconsole.error('[reroute] Error calling ssr.head() at stream end:', err);\n\t\treturn '';\n\t}\n\n\tif (!headResult) {\n\t\treturn '';\n\t}\n\n\t// Convert to string\n\tconst headHtml = Array.isArray(headResult)\n\t\t? headResult.join('\\n')\n\t\t: headResult;\n\tif (!headHtml) {\n\t\treturn '';\n\t}\n\n\t// Parse the head HTML to extract meta tag values\n\tconst metaUpdates = parseHeadForMetaUpdates(headHtml);\n\tif (Object.keys(metaUpdates).length === 0) {\n\t\treturn '';\n\t}\n\n\t// Apply titleSuffix to title and related meta tags\n\tif (ctx.titleSuffix) {\n\t\tapplyTitleSuffixToMetaUpdates(metaUpdates, ctx.titleSuffix);\n\t}\n\n\t// Generate inline script to update the head\n\tconst updatesJson = JSON.stringify(metaUpdates);\n\treturn `<script>(function(){var u=${updatesJson};if(u.title){document.title=u.title}Object.keys(u).forEach(function(k){if(k==='title')return;var s=k.split(':');var isOg=s[0]==='og'||s[0]==='twitter';var el=isOg?document.querySelector('meta[property=\"'+k+'\"]')||document.querySelector('meta[name=\"'+k+'\"]'):document.querySelector('meta[name=\"'+k+'\"]');if(el){el.setAttribute('content',u[k])}else{var m=document.createElement('meta');m.setAttribute(isOg?'property':'name',k);m.setAttribute('content',u[k]);document.head.appendChild(m)}})})()</script>`;\n}\n\n/**\n * Parse head HTML to extract values for meta tag updates\n */\nfunction parseHeadForMetaUpdates(headHtml: string): Record<string, string> {\n\tconst updates: Record<string, string> = {};\n\n\t// Extract title\n\tconst titleMatch = headHtml.match(/<title[^>]*>(.*?)<\\/title>/is);\n\tif (titleMatch?.[1]) {\n\t\tupdates.title = unescapeHtmlEntities(titleMatch[1].trim());\n\t}\n\n\t// Extract meta description\n\tlet descMatch = headHtml.match(\n\t\t/<meta\\s+name=[\"']description[\"']\\s+content=[\"'](.+?)[\"']/i,\n\t);\n\tif (!descMatch) {\n\t\tdescMatch = headHtml.match(\n\t\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+name=[\"']description[\"']/i,\n\t\t);\n\t}\n\tif (descMatch?.[1]) {\n\t\tupdates.description = unescapeHtmlEntities(descMatch[1].trim());\n\t}\n\n\t// Extract og:title\n\tlet ogTitleMatch = headHtml.match(\n\t\t/<meta\\s+property=[\"']og:title[\"']\\s+content=[\"'](.+?)[\"']/i,\n\t);\n\tif (!ogTitleMatch) {\n\t\togTitleMatch = headHtml.match(\n\t\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+property=[\"']og:title[\"']/i,\n\t\t);\n\t}\n\tif (ogTitleMatch?.[1]) {\n\t\tupdates['og:title'] = unescapeHtmlEntities(ogTitleMatch[1].trim());\n\t} else if (updates.title) {\n\t\t// Fallback: use title for og:title\n\t\tupdates['og:title'] = updates.title;\n\t}\n\n\t// Extract og:description\n\tlet ogDescMatch = headHtml.match(\n\t\t/<meta\\s+property=[\"']og:description[\"']\\s+content=[\"'](.+?)[\"']/i,\n\t);\n\tif (!ogDescMatch) {\n\t\togDescMatch = headHtml.match(\n\t\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+property=[\"']og:description[\"']/i,\n\t\t);\n\t}\n\tif (ogDescMatch?.[1]) {\n\t\tupdates['og:description'] = unescapeHtmlEntities(ogDescMatch[1].trim());\n\t} else if (updates.description) {\n\t\t// Fallback: use description for og:description\n\t\tupdates['og:description'] = updates.description;\n\t}\n\n\t// Extract twitter:title\n\tlet twitterTitleMatch = headHtml.match(\n\t\t/<meta\\s+name=[\"']twitter:title[\"']\\s+content=[\"'](.+?)[\"']/i,\n\t);\n\tif (!twitterTitleMatch) {\n\t\ttwitterTitleMatch = headHtml.match(\n\t\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+name=[\"']twitter:title[\"']/i,\n\t\t);\n\t}\n\tif (twitterTitleMatch?.[1]) {\n\t\tupdates['twitter:title'] = unescapeHtmlEntities(\n\t\t\ttwitterTitleMatch[1].trim(),\n\t\t);\n\t} else if (updates.title) {\n\t\t// Fallback: use title for twitter:title\n\t\tupdates['twitter:title'] = updates.title;\n\t}\n\n\t// Extract twitter:description\n\tlet twitterDescMatch = headHtml.match(\n\t\t/<meta\\s+name=[\"']twitter:description[\"']\\s+content=[\"'](.+?)[\"']/i,\n\t);\n\tif (!twitterDescMatch) {\n\t\ttwitterDescMatch = headHtml.match(\n\t\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+name=[\"']twitter:description[\"']/i,\n\t\t);\n\t}\n\tif (twitterDescMatch?.[1]) {\n\t\tupdates['twitter:description'] = unescapeHtmlEntities(\n\t\t\ttwitterDescMatch[1].trim(),\n\t\t);\n\t} else if (updates.description) {\n\t\t// Fallback: use description for twitter:description\n\t\tupdates['twitter:description'] = updates.description;\n\t}\n\n\treturn updates;\n}\n\n/**\n * Unescape HTML entities\n */\nfunction unescapeHtmlEntities(str: string): string {\n\treturn str\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\nexport { renderSSRDocumentStream };\nexport type { StreamingSSROptions, StreamingSSRResult };\n",
|
|
75
76
|
"export * from './lib';\nexport * from './render';\nexport * from './stream';\n",
|
|
76
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",
|
|
77
78
|
"export * from './src';\n",
|
|
78
|
-
"// 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\tregisterRobotsRoute(app, {\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tmaxAge: robotsConfig.maxAge ?? browserMaxAge,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\trobotsCache,\n\t\t\t\t\t\t\trobotsConfig,\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});\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: browserMaxAge,\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});\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});\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 { 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: robotsConfig.maxAge ?? browserMaxAge,\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});\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: browserMaxAge,\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});\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
80
|
"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",
|
|
80
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 client CSS with proper cache-busting in dev mode\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\n\t\ttry {\n\t\t\t// In watch mode, always read fresh from disk and use no-cache headers\n\t\t\tconst cacheControl = isWatchMode\n\t\t\t\t? 'no-cache, no-store, must-revalidate'\n\t\t\t\t: `${directive}, max-age=${bundleMaxAge}`;\n\n\t\t\t// Skip file cache in watch mode to ensure fresh reads\n\t\t\tif (isWatchMode) {\n\t\t\t\t// Read fresh from disk\n\t\t\t\tconst { readFileSync } = await import('node:fs');\n\t\t\t\tconst content = readFileSync(filePath);\n\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}\n\n\t\t\treturn await serveFile(filePath, acceptEncoding, fileCache, {\n\t\t\t\tcacheControl,\n\t\t\t});\n\t\t} catch {\n\t\t\t// that's fine\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",
|
|
81
82
|
"/**\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",
|
|
@@ -86,7 +87,7 @@
|
|
|
86
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
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",
|
|
88
89
|
"/**\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",
|
|
89
|
-
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport type { ReactElement } from 'react';\nimport {\n\textractContentForLLMs,\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 responseOpts = {\n\t\tmaxAge: defaults.maxAge,\n\t\tdirective: directive as 'public',\n\t};\n\tconst responseOptsFull = {\n\t\tmaxAge: defaults.maxAgeFull,\n\t\tdirective: directive as 'public',\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: { 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: { 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",
|
|
90
|
+
"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",
|
|
90
91
|
"/**\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",
|
|
91
92
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tDefaultOGTemplate,\n\textractParamsFromPath,\n\tfindOGImageForPath,\n\tloadOGImageComponent,\n\tmatchRoutes,\n\ttype OGImageFont,\n\ttype OGImageOptions,\n\trenderOGImageToPNG,\n\ttype TTLCache,\n} from 'reroute-js/core';\nimport type { Any } from '../types';\n\ntype OGRouteOptions = {\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\togConfig: OGImageOptions;\n\togCache: TTLCache<string, Buffer>;\n};\n\n/**\n * Get metadata for a route from SSR data and content\n */\nasync function tryLoadPrebuiltCollection(\n\tcwd: string,\n\tcollection: string,\n\tslug: string,\n\tmeta: Any,\n): Promise<boolean> {\n\ttry {\n\t\t// Try .js file (generated by build process)\n\t\tconst jsPath = `${cwd}/.reroute/collections/${collection}.js`;\n\t\tconst { existsSync } = await import('node:fs');\n\n\t\tif (existsSync(jsPath)) {\n\t\t\ttry {\n\t\t\t\t// Import the JavaScript module dynamically\n\t\t\t\t// Use absolute path to ensure it works in both dev and production\n\t\t\t\tconst mod = await import(jsPath);\n\t\t\t\tconst items = mod.items || [];\n\t\t\t\tconst item = items.find((i: Any) => i.slug === slug || i.name === slug);\n\t\t\t\tif (item?.meta) {\n\t\t\t\t\tObject.assign(meta, item.meta);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (importError) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[reroute/og] Failed to import collection ${collection}:`,\n\t\t\t\t\timportError,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to .json file (legacy)\n\t\tconst jsonPath = `${cwd}/.reroute/collections/${collection}.json`;\n\t\tconst jsonFile = Bun.file(jsonPath);\n\t\tif (await jsonFile.exists()) {\n\t\t\tconst items = await jsonFile.json();\n\t\t\tconst item = Array.isArray(items)\n\t\t\t\t? items.find((i: Any) => i.slug === slug)\n\t\t\t\t: null;\n\t\t\tif (item) {\n\t\t\t\tObject.assign(meta, item);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn(\n\t\t\t`[reroute/og] Failed to load collection metadata for ${collection}/${slug}:`,\n\t\t\terror,\n\t\t);\n\t}\n\treturn false;\n}\n\nasync function tryLoadContentExports(\n\tpathname: string,\n\t_meta: Any,\n): Promise<Any | undefined> {\n\tconst parts = pathname.split('/').filter(Boolean);\n\tif (parts.length >= 2) {\n\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\tconst exports = (globalThis as Any).__REROUTE_SSR_EXPORTS__?.[key];\n\t\tif (exports?.ssr?.ogImage) {\n\t\t\treturn exports.ssr.ogImage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nasync function getRouteMetadata(\n\tpathname: string,\n\tcwd: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n): Promise<{ meta: Any; ogImage?: Any }> {\n\tconst meta: Any = {};\n\tlet ogImage: Any;\n\n\ttry {\n\t\tconst g = globalThis as Any;\n\t\tconst ssrData = g.__REROUTE_SSR_DATA__;\n\n\t\tif (ssrData?.[pathname]) {\n\t\t\tObject.assign(meta, ssrData[pathname]);\n\t\t}\n\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\n\t\tif (parts.length >= 2) {\n\t\t\tconst collection = parts[0];\n\t\t\tconst slug = parts[parts.length - 1];\n\n\t\t\t// Try pre-built collections\n\t\t\tconst foundInPrebuilt = await tryLoadPrebuiltCollection(\n\t\t\t\tcwd,\n\t\t\t\tcollection,\n\t\t\t\tslug,\n\t\t\t\tmeta,\n\t\t\t);\n\n\t\t\t// Try direct content file\n\t\t\tif (!foundInPrebuilt && Object.keys(meta).length === 0) {\n\t\t\t\tawait loadContentMeta(clientDir, collection, slug, isWatchMode, meta);\n\t\t\t}\n\t\t}\n\n\t\t// Get metadata and ogImage from route exports\n\t\tconst routeData = await loadOgImageFromRoute(\n\t\t\tcwd,\n\t\t\tclientDir,\n\t\t\tpathname,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\t// Merge route meta if available - ALWAYS merge, don't skip if meta exists\n\t\tif (routeData.meta) {\n\t\t\tObject.assign(meta, routeData.meta);\n\t\t}\n\n\t\togImage = routeData.ogImage;\n\n\t\t// Check content exports\n\t\tconst contentExportOgImage = await tryLoadContentExports(pathname, meta);\n\t\tif (contentExportOgImage) {\n\t\t\togImage = contentExportOgImage;\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn('[reroute] Failed to get route metadata:', error);\n\t}\n\n\treturn { meta, ogImage };\n}\n\nasync function loadMarkdownMeta(contentFile: Any, meta: Any): Promise<boolean> {\n\ttry {\n\t\tconst matter = await import('gray-matter');\n\t\tconst content = await contentFile.text();\n\t\tconst { data } = matter.default(content);\n\t\tif (data && Object.keys(data).length > 0) {\n\t\t\tObject.assign(meta, data);\n\t\t\treturn true;\n\t\t}\n\t} catch {}\n\treturn false;\n}\n\nasync function loadTsxMeta(\n\tcontentPath: string,\n\tisWatchMode: boolean,\n\tmeta: Any,\n): Promise<boolean> {\n\ttry {\n\t\tconst { getContentMeta } = await import('reroute-js/core');\n\t\tconst contentMeta = await getContentMeta(contentPath, isWatchMode);\n\t\tif (contentMeta && Object.keys(contentMeta).length > 0) {\n\t\t\tObject.assign(meta, contentMeta);\n\t\t\treturn true;\n\t\t}\n\t} catch {}\n\treturn false;\n}\n\nasync function loadContentMeta(\n\tclientDir: string,\n\tcollection: string,\n\tslug: string,\n\tisWatchMode: boolean,\n\tmeta: Any,\n): Promise<void> {\n\tconst contentDir = `${clientDir}/routes/${collection}/content`;\n\tconst extensions = ['.mdx', '.md', '.tsx', '.ts'];\n\n\tfor (const ext of extensions) {\n\t\tconst contentPath = `${contentDir}/${slug}${ext}`;\n\t\tconst contentFile = Bun.file(contentPath);\n\n\t\tif (!(await contentFile.exists())) continue;\n\n\t\tconst isMarkdown = ext === '.md' || ext === '.mdx';\n\t\tconst loaded = isMarkdown\n\t\t\t? await loadMarkdownMeta(contentFile, meta)\n\t\t\t: await loadTsxMeta(contentPath, isWatchMode, meta);\n\n\t\tif (loaded) return;\n\t}\n}\n\nasync function loadMatchedRouteModule(\n\tclientDir: string,\n\troutePath: string,\n\tisWatchMode: boolean,\n): Promise<Any | null> {\n\tconst { existsSync } = await import('node:fs');\n\tconst { pathToFileURL } = await import('node:url');\n\tconst normalizedRoutePath = routePath === '' ? 'index' : routePath;\n\tconst possiblePaths = [\n\t\t`${clientDir}/routes/${normalizedRoutePath}.tsx`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}/index.tsx`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}.ts`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}/index.ts`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}.mdx`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}/index.mdx`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}.md`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}/index.md`,\n\t];\n\n\tfor (const possiblePath of possiblePaths) {\n\t\tif (existsSync(possiblePath)) {\n\t\t\treturn await import(\n\t\t\t\tpathToFileURL(possiblePath).href +\n\t\t\t\t\t(isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t);\n\t\t}\n\t}\n\n\treturn null;\n}\n\nasync function loadOgImageFromRoute(\n\tcwd: string,\n\tclientDir: string,\n\tpathname: string,\n\tisWatchMode: boolean,\n): Promise<{ meta?: Any; ogImage?: Any }> {\n\ttry {\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\n\t\t// In production (compiled binary), check for bundled route metadata first\n\t\tconst routesGlobal = (globalThis as Any).__REROUTE_ROUTES__;\n\t\tif (routesGlobal && Array.isArray(routesGlobal)) {\n\t\t\tconst matchedRoute = matchRoutes(\n\t\t\t\troutesGlobal as Any[],\n\t\t\t\tpathnameOnly,\n\t\t\t)?.route;\n\n\t\t\tif (matchedRoute) {\n\t\t\t\treturn {\n\t\t\t\t\tmeta: matchedRoute.meta,\n\t\t\t\t\togImage: matchedRoute.ssr?.ogImage,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tconst { pathToFileURL } = await import('node:url');\n\n\t\tconst routesPath = `${cwd}/.reroute/routes.ts`;\n\t\tconst routesMod = await import(\n\t\t\tpathToFileURL(routesPath).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t);\n\t\tconst match =\n\t\t\ttypeof routesMod.matchRoute === 'function'\n\t\t\t\t? routesMod.matchRoute(pathnameOnly)\n\t\t\t\t: Array.isArray(routesMod.routes)\n\t\t\t\t\t? matchRoutes(routesMod.routes as Any[], pathnameOnly)\n\t\t\t\t\t: null;\n\t\tconst matchedRoute = match?.route;\n\n\t\tif (matchedRoute && typeof matchedRoute.path === 'string') {\n\t\t\tconst routeMod = await loadMatchedRouteModule(\n\t\t\t\tclientDir,\n\t\t\t\tString(matchedRoute.path),\n\t\t\t\tisWatchMode,\n\t\t\t);\n\t\t\tif (routeMod) {\n\t\t\t\treturn {\n\t\t\t\t\tmeta: routeMod.meta,\n\t\t\t\t\togImage: routeMod.ssr?.ogImage,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (matchedRoute) {\n\t\t\treturn {\n\t\t\t\tmeta: matchedRoute.meta,\n\t\t\t\togImage: matchedRoute.ssr?.ogImage,\n\t\t\t};\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn('[reroute/og] Error loading route metadata:', error);\n\t}\n\treturn {};\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: OG component loading requires handling production/dev modes and multiple fallback paths\nasync function loadOgComponent(\n\togPath: string | null,\n\togConfig: OGImageOptions,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Any> {\n\t// If there's a route-specific [og].tsx file\n\tif (ogPath) {\n\t\t// In production (compiled binary), check global mapping first\n\t\tconst ogRoutes = (globalThis as Any).__REROUTE_OG_ROUTES__;\n\t\tif (ogRoutes) {\n\t\t\t// Extract the route path from the og file path\n\t\t\t// e.g., \"/path/to/client/routes/blog/[og].tsx\" -> \"/blog\"\n\t\t\tconst match = ogPath.match(/routes\\/(.+?)\\/?\\[og]\\.(tsx|ts)$/);\n\t\t\tconst routePath = match ? `/${match[1]}` : '/';\n\t\t\tconst bundledOg = ogRoutes[routePath];\n\t\t\tif (bundledOg) {\n\t\t\t\treturn bundledOg;\n\t\t\t}\n\t\t}\n\n\t\t// Development mode or fallback: load from source\n\t\treturn await loadOGImageComponent(ogPath, isWatchMode);\n\t}\n\n\t// No route-specific [og].tsx, use default template\n\tif (ogConfig.defaultTemplate) {\n\t\tif (ogConfig.defaultTemplate === 'default') {\n\t\t\treturn DefaultOGTemplate;\n\t\t}\n\n\t\t// Check for bundled OG template in compiled binary (production mode)\n\t\tconst bundledTemplate = (globalThis as Any).__REROUTE_OG_TEMPLATE__;\n\t\tif (bundledTemplate) {\n\t\t\treturn bundledTemplate;\n\t\t}\n\n\t\t// Development mode: try to load from source\n\t\ttry {\n\t\t\tconst templatePath = ogConfig.defaultTemplate.startsWith('/')\n\t\t\t\t? ogConfig.defaultTemplate\n\t\t\t\t: `${cwd}/${ogConfig.defaultTemplate.replace(/^\\.\\//, '')}`;\n\t\t\treturn await loadOGImageComponent(templatePath, isWatchMode);\n\t\t} catch (error) {\n\t\t\tconsole.warn(\n\t\t\t\t'[reroute] Failed to load default OG template, using built-in:',\n\t\t\t\terror,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn DefaultOGTemplate;\n}\n\nexport function registerOGRoutes(app: Elysia, options: OGRouteOptions): Elysia {\n\tconst { clientDir, cwd, isWatchMode, ogConfig, ogCache } = options;\n\n\tconst width = ogConfig.width ?? 1200;\n\tconst height = ogConfig.height ?? 630;\n\tconst maxAge = ogConfig.maxAge ?? 3600;\n\n\t// Track ongoing generations to prevent duplicates and allow waiting\n\tconst generatingImages = new Map<string, Promise<void>>();\n\n\t// Global font cache - load fonts once and reuse across all image generations\n\tlet fontsCache: OGImageFont[] | undefined;\n\tlet fontsCachePromise: Promise<OGImageFont[] | undefined> | null = null;\n\n\t// Periodic cache stats logging (every 5 minutes)\n\tconst statsInterval = setInterval(() => {\n\t\tif ('stats' in ogCache && typeof ogCache.stats === 'function') {\n\t\t\tconst stats = ogCache.stats();\n\t\t\tconsole.log(\n\t\t\t\t`[reroute/og] Cache stats: ${stats.entries} entries, ${stats.memoryMB}MB / ${stats.maxMemoryMB}MB (${stats.memoryUsagePercent}%)`,\n\t\t\t);\n\t\t}\n\t}, 300_000);\n\n\t// Cleanup on shutdown\n\tif (statsInterval.unref) {\n\t\tstatsInterval.unref();\n\t}\n\n\tfunction normalizeOgPathname(urlPathname: string): string {\n\t\tlet pathname = urlPathname\n\t\t\t.replace(/^\\/__reroute_og/, '')\n\t\t\t.replace(/\\.png$/, '');\n\n\t\t// Handle index.png -> /\n\t\tif (pathname === '/index' || pathname === 'index') {\n\t\t\tpathname = '/';\n\t\t} else if (pathname.endsWith('/index')) {\n\t\t\tpathname = pathname.replace(/\\/index$/, '') || '/';\n\t\t}\n\n\t\treturn pathname;\n\t}\n\n\tfunction checkOgCache(pathname: string, set: Any): Response | undefined {\n\t\t// TTLCache handles expiration automatically\n\t\tconst cached = ogCache.get(pathname) as Buffer | undefined;\n\t\tif (cached) {\n\t\t\tset.headers['content-type'] = 'image/png';\n\t\t\tset.headers['content-length'] = String(cached.byteLength);\n\t\t\tset.headers['cache-control'] = `public, max-age=${maxAge}`;\n\t\t\tset.headers['Reroute-Cache'] = 'HIT';\n\t\t\treturn new Response(cached as BodyInit);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t// Helper to get possible font paths\n\tfunction getFontPaths(\n\t\tfontPath: string,\n\t\tbaseDir: string,\n\t\tjoin: (...paths: string[]) => string,\n\t): string[] {\n\t\tconst fontRelativePath = fontPath\n\t\t\t.replace(/^(\\.\\/)?src\\/client\\/assets\\//, '')\n\t\t\t.replace(/^assets\\//, '');\n\n\t\treturn [\n\t\t\tjoin(clientDir, 'assets', fontRelativePath),\n\t\t\tjoin(baseDir, '.reroute', 'assets', fontRelativePath),\n\t\t\tjoin(cwd, '.reroute', 'assets', fontRelativePath),\n\t\t\tjoin(cwd, fontPath),\n\t\t\tjoin(baseDir, fontPath),\n\t\t];\n\t}\n\n\t// Helper to load a single font from possible paths\n\tasync function tryLoadFont(\n\t\tfont: { name: string; path: string; weight?: number; style?: string },\n\t\tpossiblePaths: string[],\n\t\texistsSync: (path: string) => boolean,\n\t): Promise<OGImageFont | null> {\n\t\tfor (const fontPath of possiblePaths) {\n\t\t\tif (existsSync(fontPath)) {\n\t\t\t\tconst fontFile = Bun.file(fontPath);\n\t\t\t\tconst data = await fontFile.arrayBuffer();\n\t\t\t\t// console.log(`[reroute/og] Loaded font: ${font.name} from ${fontPath}`);\n\t\t\t\treturn {\n\t\t\t\t\tname: font.name,\n\t\t\t\t\tdata,\n\t\t\t\t\tweight: font.weight || 400,\n\t\t\t\t\tstyle: (font.style as OGImageFont['style']) || 'normal',\n\t\t\t\t\tpath: fontPath as OGImageFont['path'],\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t// Helper to load all configured fonts\n\tasync function loadAllFonts(): Promise<OGImageFont[]> {\n\t\tif (!ogConfig.fonts || ogConfig.fonts.length === 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst { join, dirname } = await import('node:path');\n\t\tconst { existsSync } = await import('node:fs');\n\n\t\tconst isCompiledBinary =\n\t\t\ttypeof Bun !== 'undefined' && process.argv[0]?.endsWith(process.argv[1]);\n\t\tconst baseDir = isCompiledBinary ? dirname(process.argv[1]) : cwd;\n\n\t\tconst loadedFonts: OGImageFont[] = [];\n\n\t\tfor (const font of ogConfig.fonts) {\n\t\t\ttry {\n\t\t\t\tconst possiblePaths = getFontPaths(font.path, baseDir, join);\n\t\t\t\tconst loadedFont = await tryLoadFont(font, possiblePaths, existsSync);\n\n\t\t\t\tif (loadedFont) {\n\t\t\t\t\tloadedFonts.push(loadedFont);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(`[reroute/og] Font file not found: ${font.path}`);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`[reroute/og] Failed to load font ${font.path}:`, error);\n\t\t\t}\n\t\t}\n\n\t\treturn loadedFonts;\n\t}\n\n\t// Load fonts once and cache them for reuse across all image generations\n\tasync function loadFonts(): Promise<OGImageFont[] | undefined> {\n\t\tif (fontsCache !== undefined) {\n\t\t\treturn fontsCache;\n\t\t}\n\n\t\tif (fontsCachePromise) {\n\t\t\treturn await fontsCachePromise;\n\t\t}\n\n\t\tfontsCachePromise = loadAllFonts().then((fonts) => {\n\t\t\tfontsCache = fonts;\n\t\t\treturn fontsCache;\n\t\t});\n\n\t\treturn await fontsCachePromise;\n\t}\n\n\tasync function generateOgImage(\n\t\tpathname: string,\n\t\tclientDir: string,\n\t\tcwd: string,\n\t\tisWatchMode: boolean,\n\t\togConfig: OGImageOptions,\n\t\twidth: number,\n\t\theight: number,\n\t): Promise<void> {\n\t\tconst ogPath = await findOGImageForPath(pathname, clientDir);\n\t\tconst Component = await loadOgComponent(ogPath, ogConfig, cwd, isWatchMode);\n\n\t\tif (!Component) {\n\t\t\tconsole.warn(`[reroute] No OG image component found for ${pathname}`);\n\t\t\tthrow new NotFoundError('OG image component not found');\n\t\t}\n\n\t\tconst params = ogPath\n\t\t\t? extractParamsFromPath(pathname, ogPath, clientDir)\n\t\t\t: {};\n\n\t\tconst { meta, ogImage: routeOgImage } = await getRouteMetadata(\n\t\t\tpathname,\n\t\t\tcwd,\n\t\t\tclientDir,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\t// Use cached fonts instead of loading them every time\n\t\tconst fonts = await loadFonts();\n\n\t\tconst buffer = await renderOGImageToPNG(\n\t\t\tComponent,\n\t\t\t{\n\t\t\t\tparams,\n\t\t\t\tmeta,\n\t\t\t\tavatar: routeOgImage?.avatar ?? ogConfig.avatar,\n\t\t\t\tsiteName: routeOgImage?.siteName ?? ogConfig.siteName,\n\t\t\t\tbaseUrl: ogConfig.baseUrl,\n\t\t\t},\n\t\t\t{ width, height, fonts },\n\t\t);\n\n\t\t// Cache the generated image (TTLCache handles TTL automatically)\n\t\togCache.set(pathname, buffer);\n\t}\n\n\t// Helper to validate pathname for security\n\t// Block bot spam URLs with excessive length or repetitive patterns\n\tfunction validatePathname(pathname: string): boolean {\n\t\t// Hashtag URLs should be short: /tools/hashtag/somehashtag (~30-50 chars)\n\t\t// Even with encoding, should never exceed 80 chars\n\t\tif (pathname.length > 80) return false;\n\n\t\t// Block repetitive patterns (bot spam indicators)\n\t\t// Pattern 1: \"2525252525...\" - encoded percent signs\n\t\tif (/(25){5,}/.test(pathname)) return false;\n\n\t\t// Pattern 2: Any 2-char sequence repeated 5+ times\n\t\tif (/(.{2})\\1{4,}/.test(pathname)) return false;\n\n\t\t// Block excessive percent-encoding\n\t\tconst percentCount = (pathname.match(/%/g) || []).length;\n\t\tif (percentCount > 3) return false;\n\n\t\treturn true;\n\t}\n\n\t// Helper to handle OG image generation with deduplication\n\tasync function handleOgGeneration(pathname: string): Promise<void> {\n\t\tconst existingGeneration = generatingImages.get(pathname);\n\t\tif (existingGeneration) {\n\t\t\tawait existingGeneration;\n\t\t\treturn;\n\t\t}\n\n\t\tconst generationPromise = generateOgImage(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\togConfig,\n\t\t\twidth,\n\t\t\theight,\n\t\t);\n\n\t\tgeneratingImages.set(pathname, generationPromise);\n\n\t\ttry {\n\t\t\tawait generationPromise;\n\t\t\tconsole.log(`[reroute/og] Generated image for: ${pathname}`);\n\t\t} finally {\n\t\t\tgeneratingImages.delete(pathname);\n\t\t}\n\t}\n\n\tapp.get('/__reroute_og/*', async ({ request, set }) => {\n\t\ttry {\n\t\t\tconst url = new URL(request.url);\n\t\t\tconst pathname = normalizeOgPathname(url.pathname);\n\n\t\t\tif (!validatePathname(pathname)) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[reroute/og] Blocked suspicious URL: ${pathname.substring(0, 100)}...`,\n\t\t\t\t);\n\t\t\t\tset.status = 400;\n\t\t\t\treturn new Response('Invalid URL', {\n\t\t\t\t\tstatus: 400,\n\t\t\t\t\theaders: { 'Content-Type': 'text/plain' },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Check cache first\n\t\t\tconst cachedResponse = checkOgCache(pathname, set);\n\t\t\tif (cachedResponse) return cachedResponse;\n\n\t\t\t// Generate image if needed\n\t\t\ttry {\n\t\t\t\tawait handleOgGeneration(pathname);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[reroute/og] Failed to generate image for ${pathname}:`,\n\t\t\t\t\terror,\n\t\t\t\t);\n\t\t\t\tset.status = 500;\n\t\t\t\treturn new Response('Failed to generate image', {\n\t\t\t\t\tstatus: 500,\n\t\t\t\t\theaders: { 'Content-Type': 'text/plain' },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return the generated image from cache\n\t\t\tconst generatedResponse = checkOgCache(pathname, set);\n\t\t\tif (generatedResponse) return generatedResponse;\n\n\t\t\t// Should not reach here, but handle gracefully\n\t\t\tset.status = 500;\n\t\t\treturn new Response('Image generation completed but not cached', {\n\t\t\t\tstatus: 500,\n\t\t\t\theaders: { 'Content-Type': 'text/plain' },\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to handle OG image request:', error);\n\t\t\tset.status = 500;\n\t\t\treturn new Response('Internal Server Error', {\n\t\t\t\tstatus: 500,\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'text/plain',\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t});\n\n\treturn app;\n}\n",
|
|
92
93
|
"import type { Elysia } from 'elysia';\nimport type { RedirectRule } from 'reroute-js/core';\n\ninterface CompiledRedirect {\n\tsource: string | RegExp;\n\tdestination: string | ((url: URL) => string | null | Promise<string | null>);\n\tstatus: 301 | 302 | 307 | 308;\n\tisRegex: boolean;\n}\n\n/**\n * Compile redirect rules into optimized matchers\n */\nfunction compileRedirects(rules: RedirectRule[]): CompiledRedirect[] {\n\treturn rules.map((rule) => {\n\t\tconst isRegex = rule.regex ?? rule.source instanceof RegExp;\n\t\treturn {\n\t\t\tsource: rule.source,\n\t\t\tdestination: rule.destination,\n\t\t\tstatus: rule.status ?? 302, // Default to 302 temporary redirect\n\t\t\tisRegex,\n\t\t};\n\t});\n}\n\n/**\n * Match a pathname against a redirect rule\n */\nfunction matchRedirect(\n\tpathname: string,\n\tredirect: CompiledRedirect,\n): null | {\n\tdestination: string | ((url: URL) => string | null | Promise<string | null>);\n\tcaptures: string[];\n} {\n\tif (redirect.isRegex) {\n\t\tconst pattern =\n\t\t\tredirect.source instanceof RegExp\n\t\t\t\t? redirect.source\n\t\t\t\t: new RegExp(redirect.source);\n\t\tconst match = pathname.match(pattern);\n\t\tif (match) {\n\t\t\treturn {\n\t\t\t\tdestination: redirect.destination,\n\t\t\t\tcaptures: match.slice(1), // Capture groups (excluding full match)\n\t\t\t};\n\t\t}\n\t} else {\n\t\t// Exact match for string sources\n\t\tif (pathname === redirect.source) {\n\t\t\treturn {\n\t\t\t\tdestination: redirect.destination,\n\t\t\t\tcaptures: [],\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\n\n/**\n * Replace capture groups in destination string\n * Supports $1, $2, etc. for regex captures\n */\nfunction replaceCaptures(destination: string, captures: string[]): string {\n\treturn destination.replace(/\\$(\\d+)/g, (_, index) => {\n\t\tconst captureIndex = Number.parseInt(index, 10) - 1;\n\t\treturn captures[captureIndex] ?? '';\n\t});\n}\n\n/**\n * Register redirect routes\n * Redirects are checked before all other routes to ensure proper redirect behavior\n */\nexport function registerRedirectRoutes(\n\tapp: Elysia,\n\trules: RedirectRule[],\n): Elysia {\n\tif (!rules || rules.length === 0) {\n\t\treturn app;\n\t}\n\n\t// Filter out disabled redirects (default to enabled if not specified)\n\tconst enabledRules = rules.filter((rule) => rule.enabled !== false);\n\n\tif (enabledRules.length === 0) {\n\t\treturn app;\n\t}\n\n\tconst compiled = compileRedirects(enabledRules);\n\n\tconsole.log(\n\t\t`[reroute] Registered ${compiled.length} redirect rule${compiled.length === 1 ? '' : 's'}`,\n\t);\n\n\t// Use onBeforeHandle hook to intercept requests before route matching\n\tasync function processRedirectDestination(\n\t\tmatch: {\n\t\t\tdestination:\n\t\t\t\t| string\n\t\t\t\t| ((url: URL) => string | Promise<string | null> | null);\n\t\t\tcaptures: string[];\n\t\t},\n\t\turl: URL,\n\t): Promise<{\n\t\tdestination: string | null;\n\t\tisHandlerFunction: boolean;\n\t} | null> {\n\t\t// Handle function-based redirects\n\t\tif (typeof match.destination === 'function') {\n\t\t\ttry {\n\t\t\t\tconst result = await match.destination(url);\n\t\t\t\tif (result === null) {\n\t\t\t\t\t// Skip redirect, continue to normal route handling\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn { destination: result, isHandlerFunction: true };\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[reroute] Redirect handler error:', error);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\t// Handle string-based redirects with capture group replacement\n\t\tconst destination = match.destination.includes('$')\n\t\t\t? replaceCaptures(match.destination, match.captures)\n\t\t\t: match.destination;\n\n\t\treturn { destination, isHandlerFunction: false };\n\t}\n\n\tfunction buildFinalDestination(\n\t\tdestination: string,\n\t\tisHandlerFunction: boolean,\n\t\turl: URL,\n\t): string {\n\t\tif (!isHandlerFunction && url.search && !destination.includes('?')) {\n\t\t\treturn destination + url.search;\n\t\t}\n\t\treturn destination;\n\t}\n\n\tapp.onBeforeHandle(async ({ request }) => {\n\t\tconst url = new URL(request.url);\n\t\tconst pathname = url.pathname;\n\n\t\t// Try each redirect rule in order\n\t\tfor (const redirectRule of compiled) {\n\t\t\tconst match = matchRedirect(pathname, redirectRule);\n\t\t\tif (!match) continue;\n\n\t\t\tconst processed = await processRedirectDestination(match, url);\n\t\t\tif (!processed) continue;\n\n\t\t\tconst { destination, isHandlerFunction } = processed;\n\n\t\t\t// Apply redirect\n\t\t\tif (destination) {\n\t\t\t\tconst finalDestination = buildFinalDestination(\n\t\t\t\t\tdestination,\n\t\t\t\t\tisHandlerFunction,\n\t\t\t\t\turl,\n\t\t\t\t);\n\n\t\t\t\t// Return redirect response\n\t\t\t\treturn new Response(null, {\n\t\t\t\t\tstatus: redirectRule.status,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tLocation: finalDestination,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// No redirect matched - continue to route handlers\n\t});\n\n\treturn app;\n}\n",
|
|
@@ -95,11 +96,11 @@
|
|
|
95
96
|
"/**\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",
|
|
96
97
|
"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",
|
|
97
98
|
"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};\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): Promise<Awaited<ReturnType<typeof discoverSitemapData>>> {\n\t// In dev mode, always rediscover (files can change)\n\tif (isWatchMode) {\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);\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\n\t// Main sitemap route\n\tapp.get('/sitemap.xml', async () => {\n\t\ttry {\n\t\t\tconst cached = sitemapCache.get('sitemap:main');\n\t\t\tif (cached) {\n\t\t\t\treturn xmlResponse(cached, { maxAge, cacheStatus: 'HIT' });\n\t\t\t}\n\n\t\t\tconst result = await generateAndCacheSitemap(options, ttlMs);\n\n\t\t\t// Cache pages if index mode\n\t\t\tif (result.needsIndex) {\n\t\t\t\tfor (const page of result.pages) {\n\t\t\t\t\tsitemapCache.set(`sitemap:${page.filename}`, page.xml);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Cache main\n\t\t\tsitemapCache.set('sitemap:main', result.xml);\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\tconst cached = sitemapCache.get(cacheKey);\n\t\t\tif (cached) {\n\t\t\t\treturn xmlResponse(cached, { maxAge, cacheStatus: 'HIT' });\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\tsitemapCache.set(cacheKey, pageData.xml);\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",
|
|
98
|
-
"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\tgzipIfAccepted,\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};\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\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\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\tif (set.headers.link) {\n\t\t\t\t\t\t\t\tcacheHeaders.Link = set.headers.link as string;\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\tif (set.headers.link) {\n\t\t\t\t\t\tresHeaders.Link = set.headers.link as string;\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\tif (set.headers.link) {\n\t\t\t\t\t\t\t\t\t\t\t\tcacheHeaders.Link = set.headers.link as string;\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\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\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\tif (set.headers.link) {\n\t\t\t\t\tresHeaders.Link = set.headers.link as string;\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",
|
|
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",
|
|
99
100
|
"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",
|
|
100
101
|
"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"
|
|
101
102
|
],
|
|
102
|
-
"mappings": "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",
|
|
103
|
-
"debugId": "
|
|
103
|
+
"mappings": "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",
|
|
104
|
+
"debugId": "9A63A7812F1BCEAC64756E2164756E21",
|
|
104
105
|
"names": []
|
|
105
106
|
}
|