reroute-js 0.45.3 → 0.45.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/bin.d.ts +1 -1
- package/cli/bin.js +150 -63
- package/cli/bin.js.map +6 -6
- 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/dev.d.ts.map +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/tailwind.d.ts +1 -1
- package/cli/src/commands/lib/terminal-ui.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/commands/start.d.ts.map +1 -1
- package/cli/src/index.d.ts +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +76 -21
- package/core/index.js.map +4 -4
- package/core/src/bundler/hash.d.ts +1 -1
- package/core/src/bundler/index.d.ts +1 -1
- package/core/src/config.d.ts +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/index.d.ts +1 -1
- package/core/src/llms/extractor.d.ts +1 -1
- package/core/src/llms/formatter.d.ts +1 -1
- package/core/src/llms/full-generator.d.ts +1 -1
- package/core/src/llms/index-generator.d.ts +1 -1
- package/core/src/llms/index.d.ts +1 -1
- package/core/src/og/discovery.d.ts +1 -1
- package/core/src/og/index.d.ts +1 -1
- package/core/src/og/meta.d.ts +1 -1
- package/core/src/og/render.d.ts +1 -1
- package/core/src/og/types.d.ts +1 -1
- package/core/src/robots/discovery.d.ts +1 -1
- package/core/src/robots/generator.d.ts +1 -1
- package/core/src/robots/index.d.ts +1 -1
- package/core/src/robots/policies.d.ts +1 -1
- package/core/src/rss/discovery.d.ts +1 -1
- package/core/src/rss/generator.d.ts +1 -1
- package/core/src/rss/index.d.ts +1 -1
- package/core/src/sitemap/discovery.d.ts +1 -1
- package/core/src/sitemap/generator.d.ts +1 -1
- package/core/src/sitemap/index.d.ts +1 -1
- package/core/src/ssr/index.d.ts +1 -1
- package/core/src/ssr/lib/cache.d.ts +22 -2
- package/core/src/ssr/lib/cache.d.ts.map +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/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/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/stream.d.ts +1 -1
- package/elysia/index.d.ts +1 -1
- package/elysia/index.js +180 -86
- package/elysia/index.js.map +6 -6
- 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/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/og.d.ts +1 -1
- package/elysia/src/routes/og.d.ts.map +1 -1
- package/elysia/src/routes/redirects.d.ts +1 -1
- package/elysia/src/routes/robots.d.ts +1 -1
- package/elysia/src/routes/rss.d.ts +1 -1
- package/elysia/src/routes/search.d.ts +1 -1
- package/elysia/src/routes/sitemap.d.ts +1 -1
- package/elysia/src/routes/ssr.d.ts +1 -1
- package/elysia/src/routes/static.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/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 -17
- package/telemetry/react.js.map +2 -2
- package/telemetry/server.d.ts +1 -1
- package/telemetry/server.js +102 -18
- package/telemetry/server.js.map +4 -4
- package/telemetry/src/react/api.d.ts +1 -1
- package/telemetry/src/react/context.d.ts +1 -1
- package/telemetry/src/react/index.d.ts +1 -1
- package/telemetry/src/react/telemetry.d.ts +1 -1
- package/telemetry/src/server/context.d.ts +1 -1
- package/telemetry/src/server/headers/extractor.d.ts +1 -1
- package/telemetry/src/server/headers/index.d.ts +1 -1
- package/telemetry/src/server/headers/presets.d.ts +1 -1
- package/telemetry/src/server/index.d.ts +1 -1
- package/telemetry/src/server/instrumentation.d.ts +1 -1
- package/telemetry/src/server/plugin.d.ts +1 -1
- package/telemetry/src/server/plugin.d.ts.map +1 -1
- package/telemetry/src/server/sourcemap.d.ts +1 -1
package/elysia/index.js.map
CHANGED
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
"export * from './extractor';\nexport * from './presets';\n",
|
|
13
13
|
"/**\n * Telemetry utilities for instrumenting operations\n *\n * This module provides helpers to create spans for custom instrumentation:\n * - API endpoints\n * - Database queries\n * - External service calls\n * - Business logic operations\n */\n\nimport { context, type Span, SpanStatusCode, trace } from '@opentelemetry/api';\n\n// Check if OpenTelemetry is available (lazy loaded to avoid requiring it)\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\n/**\n * No-op span implementation when OpenTelemetry is not available\n * Implements the Span interface but all methods do nothing\n */\nclass NoopSpan implements Span {\n\tspanContext() {\n\t\treturn {\n\t\t\ttraceId: '',\n\t\t\tspanId: '',\n\t\t\ttraceFlags: 0,\n\t\t};\n\t}\n\tsetAttribute() {\n\t\treturn this;\n\t}\n\tsetAttributes() {\n\t\treturn this;\n\t}\n\taddEvent() {\n\t\treturn this;\n\t}\n\taddLink() {\n\t\treturn this;\n\t}\n\taddLinks() {\n\t\treturn this;\n\t}\n\tsetStatus() {\n\t\treturn this;\n\t}\n\tupdateName() {\n\t\treturn this;\n\t}\n\tend() {}\n\tisRecording() {\n\t\treturn false;\n\t}\n\trecordException() {}\n}\n\n// Singleton instance\nconst noopSpan = new NoopSpan();\n\n/**\n * Execute a function within a named span for distributed tracing\n *\n * @example\n * ```ts\n * const result = await withSpan('database.query', async (span) => {\n * span.setAttribute('query', 'SELECT * FROM users');\n * return await db.query('SELECT * FROM users');\n * });\n * ```\n */\nexport async function withSpan<T>(\n\tname: string,\n\tfn: (span: Span) => Promise<T>,\n\tattributes?: Record<string, string | number | boolean>,\n): Promise<T> {\n\tif (!isOtelAvailable()) {\n\t\treturn fn(noopSpan);\n\t}\n\n\tconst tracer = trace.getTracer('reroute');\n\treturn tracer.startActiveSpan(name, { attributes }, async (span) => {\n\t\ttry {\n\t\t\tconst result = await fn(span);\n\t\t\tspan.end();\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tspan.recordException(error as Error);\n\t\t\tspan.setStatus({\n\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\tmessage: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t\tspan.end();\n\t\t\tthrow error;\n\t\t}\n\t});\n}\n\n/**\n * Execute a synchronous function within a named span\n */\nexport function withSpanSync<T>(\n\tname: string,\n\tfn: (span: Span) => T,\n\tattributes?: Record<string, string | number | boolean>,\n): T {\n\tif (!isOtelAvailable()) {\n\t\treturn fn(noopSpan);\n\t}\n\n\tconst tracer = trace.getTracer('reroute');\n\treturn tracer.startActiveSpan(name, { attributes }, (span) => {\n\t\ttry {\n\t\t\tconst result = fn(span);\n\t\t\tspan.end();\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tspan.recordException(error as Error);\n\t\t\tspan.setStatus({\n\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\tmessage: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t\tspan.end();\n\t\t\tthrow error;\n\t\t}\n\t});\n}\n\n/**\n * Add attributes to the current active span (if available)\n */\nexport function setSpanAttributes(\n\tattributes: Record<string, string | number | boolean>,\n) {\n\tif (!isOtelAvailable()) return;\n\n\tconst span = trace.getActiveSpan();\n\tif (span) {\n\t\tspan.setAttributes(attributes);\n\t}\n}\n\n/**\n * Record an event in the current active span\n */\nexport function addSpanEvent(\n\tname: string,\n\tattributes?: Record<string, string | number | boolean>,\n) {\n\tif (!isOtelAvailable()) return;\n\n\tconst span = trace.getActiveSpan();\n\tif (span) {\n\t\tspan.addEvent(name, attributes);\n\t}\n}\n\n/**\n * Execute a function within the context of a parent span\n * This ensures child spans created inside the function are properly nested\n *\n * @example\n * ```ts\n * const parentSpan = store.telemetrySpan;\n * await withParentSpan(parentSpan, async () => {\n * // Any spans created here will be children of parentSpan\n * await withSpan('child.operation', async () => {...});\n * });\n * ```\n */\nexport async function withParentSpan<T>(\n\tparentSpan: Span | undefined | null,\n\tfn: () => Promise<T>,\n): Promise<T> {\n\tif (!(isOtelAvailable() && parentSpan)) {\n\t\treturn fn();\n\t}\n\n\t// Set the parent span as active in the context\n\tconst ctx = trace.setSpan(context.active(), parentSpan);\n\treturn context.with(ctx, fn);\n}\n\n/**\n * Execute a synchronous function within the context of a parent span\n */\nexport function withParentSpanSync<T>(\n\tparentSpan: Span | undefined | null,\n\tfn: () => T,\n): T {\n\tif (!(isOtelAvailable() && parentSpan)) {\n\t\treturn fn();\n\t}\n\n\tconst ctx = trace.setSpan(context.active(), parentSpan);\n\treturn context.with(ctx, fn);\n}\n\n/**\n * Extract W3C Trace Context from incoming HTTP request headers\n * Returns the extracted context or undefined if not available\n *\n * @example\n * ```ts\n * const traceContext = extractTraceContext(request.headers);\n * ```\n */\nexport function extractTraceContext(\n\theaders: Headers | Record<string, string | undefined>,\n): ReturnType<typeof context.active> | undefined {\n\tif (!isOtelAvailable()) return undefined;\n\n\ttry {\n\t\tconst { propagation } = require('@opentelemetry/api');\n\n\t\t// Create a carrier object that matches the W3C Trace Context format\n\t\tconst carrier: Record<string, string | undefined> = {};\n\n\t\tif (headers instanceof Headers) {\n\t\t\tcarrier.traceparent = headers.get('traceparent') || undefined;\n\t\t\tcarrier.tracestate = headers.get('tracestate') || undefined;\n\t\t} else {\n\t\t\tcarrier.traceparent = headers.traceparent;\n\t\t\tcarrier.tracestate = headers.tracestate;\n\t\t}\n\n\t\t// If no traceparent header, return undefined\n\t\tif (!carrier.traceparent) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Extract context from carrier\n\t\treturn propagation.extract(context.active(), carrier);\n\t} catch (error) {\n\t\tconsole.error('[telemetry] Failed to extract trace context:', error);\n\t\treturn undefined;\n\t}\n}\n\n/**\n * Get the trace context from a span for injection into browser\n * Returns an object with traceparent and tracestate (if available)\n *\n * @example\n * ```ts\n * const span = store.telemetrySpan;\n * const traceContext = getTraceContextForInjection(span);\n * // Inject into HTML: <script>window.__TRACE_CONTEXT__ = {...traceContext};</script>\n * ```\n */\nexport function getTraceContextForInjection(\n\tspan: Span | undefined | null,\n): { traceparent?: string; tracestate?: string } | undefined {\n\tif (!(isOtelAvailable() && span)) return undefined;\n\n\ttry {\n\t\tconst { propagation } = require('@opentelemetry/api');\n\t\tconst carrier: Record<string, string | undefined> = {};\n\n\t\t// Set the span as active and inject context\n\t\tconst ctx = trace.setSpan(context.active(), span);\n\t\tpropagation.inject(ctx, carrier);\n\n\t\treturn {\n\t\t\ttraceparent: carrier.traceparent,\n\t\t\ttracestate: carrier.tracestate,\n\t\t};\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t'[telemetry] Failed to get trace context for injection:',\n\t\t\terror,\n\t\t);\n\t\treturn undefined;\n\t}\n}\n",
|
|
14
14
|
"import { promises as fs } from 'node:fs';\nimport { join } from 'node:path';\nimport { SourceMapConsumer } from 'source-map';\n\ninterface SourceMappedPosition {\n\tsource: string | null;\n\tline: number | null;\n\tcolumn: number | null;\n\tname: string | null;\n}\n\ninterface StackFrame {\n\traw: string;\n\tfunctionName?: string;\n\tfileName?: string;\n\tlineNumber?: number;\n\tcolumnNumber?: number;\n\tmapped?: SourceMappedPosition;\n}\n\n/**\n * Cache for loaded sourcemaps\n */\nconst sourcemapCache = new Map<string, SourceMapConsumer>();\n\n/**\n * Parse a stack trace line into a structured frame\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Stack frame parsing requires many conditions\nfunction parseStackFrame(line: string): StackFrame {\n\t// Common stack trace patterns:\n\t// at functionName (file:line:column)\n\t// at file:line:column\n\t// at <anonymous>\n\n\tconst patterns = [\n\t\t// Chrome/V8: at functionName (file:line:column)\n\t\t/^\\s*at\\s+(.+?)\\s+\\((.+?):(\\d+):(\\d+)\\)/,\n\t\t// Chrome/V8: at file:line:column\n\t\t/^\\s*at\\s+(.+?):(\\d+):(\\d+)/,\n\t\t// Firefox: functionName@file:line:column\n\t\t/^(.+?)@(.+?):(\\d+):(\\d+)/,\n\t];\n\n\tfor (const pattern of patterns) {\n\t\tconst match = line.match(pattern);\n\t\tif (match) {\n\t\t\tif (match.length === 5 && match[2]) {\n\t\t\t\t// Pattern with function name\n\t\t\t\treturn {\n\t\t\t\t\traw: line,\n\t\t\t\t\tfunctionName: match[1].trim(),\n\t\t\t\t\tfileName: match[2],\n\t\t\t\t\tlineNumber: Number.parseInt(match[3], 10),\n\t\t\t\t\tcolumnNumber: Number.parseInt(match[4], 10),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (match.length === 4 && match[1]) {\n\t\t\t\t// Pattern without function name or Firefox pattern\n\t\t\t\tconst hasAt = line.includes('@');\n\t\t\t\treturn {\n\t\t\t\t\traw: line,\n\t\t\t\t\tfunctionName: hasAt ? match[1] : undefined,\n\t\t\t\t\tfileName: hasAt ? match[2] : match[1],\n\t\t\t\t\tlineNumber: Number.parseInt(hasAt ? match[3] : match[2], 10),\n\t\t\t\t\tcolumnNumber: Number.parseInt(hasAt ? match[4] : match[3], 10),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { raw: line };\n}\n\n/**\n * Find and load a sourcemap for a given file\n */\nasync function loadSourceMap(\n\tfileName: string,\n\trerouteDir?: string,\n): Promise<SourceMapConsumer | null> {\n\t// Check cache first\n\tif (sourcemapCache.has(fileName)) {\n\t\treturn sourcemapCache.get(fileName) || null;\n\t}\n\n\ttry {\n\t\t// Common locations to check for sourcemaps\n\t\tconst possiblePaths: string[] = [];\n\n\t\t// If we have a .reroute directory, look there\n\t\tif (rerouteDir) {\n\t\t\t// Extract just the filename from the path\n\t\t\tconst baseName = fileName.split('/').pop() || fileName;\n\t\t\tpossiblePaths.push(join(rerouteDir, 'bundles', `${baseName}.map`));\n\t\t}\n\n\t\t// Also try adjacent to the file\n\t\tpossiblePaths.push(`${fileName}.map`);\n\n\t\tfor (const mapPath of possiblePaths) {\n\t\t\ttry {\n\t\t\t\tconst mapContent = await fs.readFile(mapPath, 'utf-8');\n\t\t\t\tconst consumer = await new SourceMapConsumer(mapContent);\n\t\t\t\tsourcemapCache.set(fileName, consumer);\n\t\t\t\treturn consumer;\n\t\t\t} catch {}\n\t\t}\n\n\t\treturn null;\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[sourcemap] Failed to load sourcemap for ${fileName}:`,\n\t\t\terror,\n\t\t);\n\t\treturn null;\n\t}\n}\n\n/**\n * Map a position using a sourcemap consumer\n */\nfunction mapPosition(\n\tconsumer: SourceMapConsumer,\n\tline: number,\n\tcolumn: number,\n): SourceMappedPosition {\n\tconst pos = consumer.originalPositionFor({ line, column });\n\treturn {\n\t\tsource: pos.source,\n\t\tline: pos.line,\n\t\tcolumn: pos.column,\n\t\tname: pos.name,\n\t};\n}\n\n/**\n * Process a stack trace and resolve source positions\n */\nexport async function resolveStackTrace(\n\tstack: string,\n\toptions: {\n\t\trerouteDir?: string;\n\t\tcwd?: string;\n\t} = {},\n): Promise<{\n\toriginal: string;\n\tframes: StackFrame[];\n\tmapped: string;\n}> {\n\tconst lines = stack.split('\\n');\n\tconst frames: StackFrame[] = [];\n\n\tfor (const line of lines) {\n\t\tconst frame = parseStackFrame(line);\n\t\tif (frame?.fileName && frame.lineNumber && frame.columnNumber) {\n\t\t\ttry {\n\t\t\t\tconst consumer = await loadSourceMap(\n\t\t\t\t\tframe.fileName,\n\t\t\t\t\toptions.rerouteDir,\n\t\t\t\t);\n\t\t\t\tif (consumer) {\n\t\t\t\t\tframe.mapped = mapPosition(\n\t\t\t\t\t\tconsumer,\n\t\t\t\t\t\tframe.lineNumber,\n\t\t\t\t\t\tframe.columnNumber,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch (_error) {\n\t\t\t\t// Keep frame without mapping\n\t\t\t}\n\t\t}\n\t\tframes.push(frame);\n\t}\n\n\t// Generate mapped stack trace\n\tconst mappedLines = frames.map((frame) => {\n\t\tif (frame.mapped?.source && frame.mapped.line !== null) {\n\t\t\tconst location = `${frame.mapped.source}:${frame.mapped.line}:${frame.mapped.column ?? 0}`;\n\t\t\tif (frame.mapped.name || frame.functionName) {\n\t\t\t\treturn ` at ${frame.mapped.name || frame.functionName} (${location})`;\n\t\t\t}\n\t\t\treturn ` at ${location}`;\n\t\t}\n\t\treturn frame.raw;\n\t});\n\n\treturn {\n\t\toriginal: stack,\n\t\tframes,\n\t\tmapped: mappedLines.join('\\n'),\n\t};\n}\n\n/**\n * Enhance error with source-mapped stack trace\n * Adds a `sourceMappedStack` property to the error object\n */\nexport async function enhanceError(\n\terror: Error,\n\toptions: {\n\t\trerouteDir?: string;\n\t\tcwd?: string;\n\t} = {},\n): Promise<Error & { sourceMappedStack?: string; stackFrames?: StackFrame[] }> {\n\tif (!error.stack) return error;\n\n\ttry {\n\t\tconst result = await resolveStackTrace(error.stack, options);\n\t\t// Attach enhanced info to the error object\n\t\t(\n\t\t\terror as Error & {\n\t\t\t\tsourceMappedStack?: string;\n\t\t\t\tstackFrames?: StackFrame[];\n\t\t\t}\n\t\t).sourceMappedStack = result.mapped;\n\t\t(error as Error & { stackFrames?: StackFrame[] }).stackFrames =\n\t\t\tresult.frames;\n\t} catch {\n\t\t// Silently fail - source mapping is optional\n\t}\n\n\treturn error;\n}\n\n/**\n * Clear the sourcemap cache (useful for development)\n */\nexport function clearSourceMapCache(): void {\n\tfor (const consumer of sourcemapCache.values()) {\n\t\tconsumer.destroy();\n\t}\n\tsourcemapCache.clear();\n}\n\n/**\n * Format stack frames for display\n */\nexport function formatStackFrames(frames: StackFrame[]): string {\n\treturn frames\n\t\t.map((frame) => {\n\t\t\tif (frame.mapped?.source && frame.mapped.line !== null) {\n\t\t\t\tconst location = `${frame.mapped.source}:${frame.mapped.line}:${frame.mapped.column ?? 0}`;\n\t\t\t\tif (frame.mapped.name || frame.functionName) {\n\t\t\t\t\treturn ` at ${frame.mapped.name || frame.functionName} (${location})`;\n\t\t\t\t}\n\t\t\t\treturn ` at ${location}`;\n\t\t\t}\n\t\t\treturn frame.raw;\n\t\t})\n\t\t.join('\\n');\n}\n",
|
|
15
|
-
"import os from 'node:os';\nimport {\n\ttype Counter,\n\tcontext,\n\ttype Histogram,\n\tmetrics,\n\ttype Span,\n\tSpanStatusCode,\n\ttrace,\n\ttype UpDownCounter,\n} from '@opentelemetry/api';\nimport { logs, SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n\tBatchLogRecordProcessor,\n\tLoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport {\n\tMeterProvider,\n\tPeriodicExportingMetricReader,\n} from '@opentelemetry/sdk-metrics';\nimport {\n\tBatchSpanProcessor,\n\tNodeTracerProvider,\n} from '@opentelemetry/sdk-trace-node';\nimport {\n\tATTR_SERVICE_NAME,\n\tATTR_SERVICE_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_HOST_NAME } from '@opentelemetry/semantic-conventions/incubating';\nimport type { Elysia } from 'elysia';\nimport { loadConfig, type TelemetryOptions } from 'reroute-js/core';\nimport { getContextAttributesForTelemetry } from './context';\nimport { extractHeaders } from './headers/extractor';\nimport { extractTraceContext } from './instrumentation';\nimport { enhanceError } from './sourcemap';\n\n/**\n * Server telemetry options\n * Extends TelemetryOptions from config - all options can be set in reroute.config.ts\n * or passed directly here (direct options override config values)\n */\nexport interface ServerTelemetryOptions extends TelemetryOptions {}\n\n// Helper to extract error details\nfunction getErrorDetails(error: unknown): {\n\tname: string;\n\tmessage: string;\n\tstack: string;\n} {\n\tif (error instanceof Error) {\n\t\treturn {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tstack: error.stack || '',\n\t\t};\n\t}\n\n\tif (typeof error === 'object' && error !== null) {\n\t\tconst err = error as Record<string, unknown>;\n\t\treturn {\n\t\t\tname: String(err.name || err.code || 'UnknownError'),\n\t\t\tmessage: String(err.message || err.error || JSON.stringify(error)),\n\t\t\tstack: String(err.stack || ''),\n\t\t};\n\t}\n\n\treturn {\n\t\tname: 'UnknownError',\n\t\tmessage: String(error),\n\t\tstack: '',\n\t};\n}\n\n/**\n * Check if a route should be ignored based on ignore patterns\n * Supports strings, RegExp, and custom functions\n */\nfunction shouldIgnoreRoute(\n\tpatterns: (\n\t\t| string\n\t\t| RegExp\n\t\t| ((pathname: string, method: string) => boolean)\n\t)[],\n\tpathname: string,\n\tmethod: string,\n): boolean {\n\treturn patterns.some((pattern) => {\n\t\tif (typeof pattern === 'string') {\n\t\t\treturn pathname.includes(pattern);\n\t\t}\n\t\tif (pattern instanceof RegExp) {\n\t\t\treturn pattern.test(pathname);\n\t\t}\n\t\tif (typeof pattern === 'function') {\n\t\t\treturn pattern(pathname, method);\n\t\t}\n\t\treturn false;\n\t});\n}\n\n/**\n * Determine if a request should be sampled based on sample rate\n * @param rate - Sample rate between 0.0 and 1.0\n * @returns true if request should be sampled\n */\nfunction shouldSample(rate: number): boolean {\n\treturn Math.random() < rate;\n}\n\n/**\n * Server-side telemetry plugin for Elysia\n *\n * Automatically captures:\n * - HTTP requests and responses\n * - Errors with full stack traces\n * - System metrics (CPU, memory)\n * - Request/response sizes\n * - Active connections\n *\n * Configuration is loaded from reroute.config.ts automatically.\n * Direct options override config values.\n *\n * @example\n * ```typescript\n * import { Elysia } from 'elysia';\n * import { telemetry } from 'reroute-js/telemetry/server';\n *\n * new Elysia()\n * .use(telemetry({\n * serviceName: 'My App',\n * }))\n * .listen(3000);\n * ```\n */\nexport function telemetry(options: ServerTelemetryOptions = {}) {\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Telemetry initialization with config loading and feature toggles\n\treturn async (app: Elysia) => {\n\t\t// Load reroute.config.ts automatically\n\t\tconst cwd =\n\t\t\ttypeof process !== 'undefined' && typeof process.cwd === 'function'\n\t\t\t\t? process.cwd()\n\t\t\t\t: '/';\n\t\tconst config = await loadConfig(cwd);\n\n\t\t// Merge config with direct options (direct options take precedence)\n\t\tconst merged = {\n\t\t\t...config.telemetry,\n\t\t\t...options,\n\t\t};\n\n\t\t// Check if telemetry is enabled (default: false)\n\t\tconst TELEMETRY_ENABLED = merged.enabled ?? false;\n\t\tif (!TELEMETRY_ENABLED) {\n\t\t\tconsole.log(\n\t\t\t\t'[telemetry] Disabled - set enabled: true in config or options to enable',\n\t\t\t);\n\t\t\t// Return app unchanged when disabled\n\t\t\treturn app;\n\t\t}\n\n\t\t// Extract configuration values\n\t\tconst SERVICE_NAME = merged.serviceName || 'reroute-app';\n\t\tconst SERVICE_VERSION =\n\t\t\tmerged.serviceVersion || process.env.npm_package_version || '1.0.0';\n\t\tconst OTLP_ENDPOINT =\n\t\t\tmerged.otlpEndpoint ||\n\t\t\tprocess.env.OTEL_EXPORTER_OTLP_ENDPOINT ||\n\t\t\t'http://localhost:4318';\n\t\tconst METRICS_INTERVAL = merged.metricsInterval ?? 5000;\n\n\t\t// Handle proxy configuration\n\t\tconst proxyConfig = merged.proxy;\n\t\tconst ENABLE_PROXY = proxyConfig?.enabled ?? !!proxyConfig;\n\t\tconst PROXY_PATHNAME = proxyConfig?.pathname ?? '/__reroute_telemetry';\n\t\tconst PROXY_VERBOSE = proxyConfig?.verbose ?? false;\n\t\tconst PROXY_HANDLER = proxyConfig?.handler;\n\n\t\t// Feature toggles (default: true when telemetry is enabled)\n\t\tconst ENABLE_TRACES = merged.enableTraces ?? true;\n\t\tconst ENABLE_METRICS = merged.enableMetrics ?? true;\n\t\tconst ENABLE_LOGS = merged.enableLogs ?? true;\n\t\tconst ENABLE_SYSTEM_METRICS = merged.enableSystemMetrics ?? true;\n\n\t\t// Sampling configuration\n\t\tconst SAMPLE_RATE = merged.sampleRate ?? 1.0;\n\t\tconst ERROR_SAMPLE_RATE = merged.errorSampleRate ?? 1.0;\n\n\t\t// Route filtering\n\t\tconst IGNORE_ROUTES = merged.ignoreRoutes || [];\n\n\t\t// Header capture and custom attributes\n\t\tconst CAPTURE_MAPPINGS = merged.capture || [];\n\t\tconst CUSTOM_ATTRIBUTES = merged.customAttributes || {};\n\n\t\tconsole.log(`[telemetry] Initializing with endpoint: ${OTLP_ENDPOINT}`);\n\t\tconsole.log(\n\t\t\t`[telemetry] Features - Traces: ${ENABLE_TRACES}, Metrics: ${ENABLE_METRICS}, Logs: ${ENABLE_LOGS}`,\n\t\t);\n\t\tif (SAMPLE_RATE < 1.0) {\n\t\t\tconsole.log(\n\t\t\t\t`[telemetry] Sampling - Requests: ${SAMPLE_RATE * 100}%, Errors: ${ERROR_SAMPLE_RATE * 100}%`,\n\t\t\t);\n\t\t}\n\t\tif (ENABLE_PROXY) {\n\t\t\tconsole.log(\n\t\t\t\t`[telemetry] Browser telemetry proxy enabled at ${PROXY_PATHNAME}/*`,\n\t\t\t);\n\t\t}\n\n\t\t// Secure headers for API authentication (optional)\n\t\tconst otlpHeaders: Record<string, string> = {};\n\t\tif (merged.apiKey || process.env.SIGNOZ_API_KEY) {\n\t\t\totlpHeaders.Authorization = `Bearer ${merged.apiKey || process.env.SIGNOZ_API_KEY}`;\n\t\t}\n\n\t\t// Configure OTLP exporters with timeouts (conditionally based on feature toggles)\n\t\tconst traceExporter = ENABLE_TRACES\n\t\t\t? new OTLPTraceExporter({\n\t\t\t\t\turl: `${OTLP_ENDPOINT}/v1/traces`,\n\t\t\t\t\theaders:\n\t\t\t\t\t\tObject.keys(otlpHeaders).length > 0 ? otlpHeaders : undefined,\n\t\t\t\t\ttimeoutMillis: 5000, // 5 second timeout\n\t\t\t\t})\n\t\t\t: null;\n\n\t\tconst logExporter = ENABLE_LOGS\n\t\t\t? new OTLPLogExporter({\n\t\t\t\t\turl: `${OTLP_ENDPOINT}/v1/logs`,\n\t\t\t\t\theaders:\n\t\t\t\t\t\tObject.keys(otlpHeaders).length > 0 ? otlpHeaders : undefined,\n\t\t\t\t\ttimeoutMillis: 5000, // 5 second timeout\n\t\t\t\t})\n\t\t\t: null;\n\n\t\tconst metricExporter = ENABLE_METRICS\n\t\t\t? new OTLPMetricExporter({\n\t\t\t\t\turl: `${OTLP_ENDPOINT}/v1/metrics`,\n\t\t\t\t\theaders:\n\t\t\t\t\t\tObject.keys(otlpHeaders).length > 0 ? otlpHeaders : undefined,\n\t\t\t\t\ttimeoutMillis: 5000, // 5 second timeout\n\t\t\t\t})\n\t\t\t: null;\n\n\t\t// Create resource with service information\n\t\t// In Docker, prefer env var over os.hostname() (which returns container ID)\n\t\tconst HOSTNAME =\n\t\t\tprocess.env.OTEL_RESOURCE_ATTRIBUTES?.match(/host\\.name=([^,]+)/)?.[1] ||\n\t\t\tprocess.env.HOSTNAME ||\n\t\t\tos.hostname();\n\n\t\tconst resource = resourceFromAttributes({\n\t\t\t[ATTR_SERVICE_NAME]: SERVICE_NAME,\n\t\t\t[ATTR_SERVICE_VERSION]: SERVICE_VERSION,\n\t\t\t[ATTR_HOST_NAME]: HOSTNAME,\n\t\t});\n\n\t\t// Set up Traces with error handling (only if enabled)\n\t\tif (ENABLE_TRACES && traceExporter) {\n\t\t\ttry {\n\t\t\t\tconst tracerProvider = new NodeTracerProvider({\n\t\t\t\t\tresource,\n\t\t\t\t\tspanProcessors: [new BatchSpanProcessor(traceExporter)],\n\t\t\t\t});\n\t\t\t\ttracerProvider.register();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to initialize tracer:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Set up Logs with error handling (only if enabled)\n\t\tlet logger: ReturnType<LoggerProvider['getLogger']> | null = null;\n\t\tif (ENABLE_LOGS && logExporter) {\n\t\t\ttry {\n\t\t\t\tconst loggerProvider = new LoggerProvider({\n\t\t\t\t\tresource,\n\t\t\t\t\tprocessors: [new BatchLogRecordProcessor(logExporter)],\n\t\t\t\t});\n\t\t\t\tlogs.setGlobalLoggerProvider(loggerProvider);\n\t\t\t\tlogger = loggerProvider.getLogger(SERVICE_NAME, SERVICE_VERSION);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to initialize logger:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Set up Metrics with error handling (only if enabled)\n\t\tlet meter: ReturnType<MeterProvider['getMeter']> | null = null;\n\t\tif (ENABLE_METRICS && metricExporter) {\n\t\t\ttry {\n\t\t\t\tconst meterProvider = new MeterProvider({\n\t\t\t\t\tresource,\n\t\t\t\t\treaders: [\n\t\t\t\t\t\tnew PeriodicExportingMetricReader({\n\t\t\t\t\t\t\texporter: metricExporter,\n\t\t\t\t\t\t\texportIntervalMillis: METRICS_INTERVAL,\n\t\t\t\t\t\t}),\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tmetrics.setGlobalMeterProvider(meterProvider);\n\t\t\t\tmeter = meterProvider.getMeter(SERVICE_NAME, SERVICE_VERSION);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to initialize meter:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Create HTTP metrics with null checks\n\t\tlet httpRequestCounter: Counter | null = null;\n\t\tlet httpRequestDuration: Histogram | null = null;\n\t\tlet httpErrorCounter: Counter | null = null;\n\t\tlet httpActiveRequests: UpDownCounter | null = null;\n\t\tlet activeConnections: UpDownCounter | null = null;\n\n\t\tif (meter) {\n\t\t\ttry {\n\t\t\t\thttpRequestCounter = meter.createCounter('http.server.request.count', {\n\t\t\t\t\tdescription: 'Total HTTP requests',\n\t\t\t\t\tunit: 'requests',\n\t\t\t\t});\n\n\t\t\t\thttpRequestDuration = meter.createHistogram(\n\t\t\t\t\t'http.server.request.duration',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'HTTP request duration',\n\t\t\t\t\t\tunit: 'milliseconds',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\thttpErrorCounter = meter.createCounter('http.server.error.count', {\n\t\t\t\t\tdescription: 'Total HTTP errors',\n\t\t\t\t\tunit: 'errors',\n\t\t\t\t});\n\n\t\t\t\thttpActiveRequests = meter.createUpDownCounter(\n\t\t\t\t\t'http.server.active_requests',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'Active HTTP requests',\n\t\t\t\t\t\tunit: 'requests',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tactiveConnections = meter.createUpDownCounter(\n\t\t\t\t\t'app.connections.active',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'Active connections',\n\t\t\t\t\t\tunit: 'connections',\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to create HTTP metrics:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Create system metrics (optional) with error handling\n\t\tif (ENABLE_SYSTEM_METRICS && meter) {\n\t\t\ttry {\n\t\t\t\t// Reuse HOSTNAME from resource (already computed above)\n\n\t\t\t\tconst memoryUsage = meter.createObservableGauge('app.memory.usage', {\n\t\t\t\t\tdescription: 'Process memory usage',\n\t\t\t\t\tunit: 'bytes',\n\t\t\t\t});\n\n\t\t\t\tmemoryUsage.addCallback((result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst usage = process.memoryUsage();\n\t\t\t\t\t\tresult.observe(usage.heapUsed, {\n\t\t\t\t\t\t\ttype: 'heap',\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresult.observe(usage.rss, { type: 'rss', 'host.name': HOSTNAME });\n\t\t\t\t\t\tresult.observe(usage.external, {\n\t\t\t\t\t\t\ttype: 'external',\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] Memory usage callback failed:', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst systemCpuUsage = meter.createObservableGauge(\n\t\t\t\t\t'system.cpu.utilization',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'System CPU utilization',\n\t\t\t\t\t\tunit: '1',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tsystemCpuUsage.addCallback((result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst cpus = os.cpus();\n\t\t\t\t\t\tlet totalIdle = 0;\n\t\t\t\t\t\tlet totalTick = 0;\n\n\t\t\t\t\t\tcpus.forEach((cpu) => {\n\t\t\t\t\t\t\tconst times = cpu.times;\n\t\t\t\t\t\t\ttotalIdle += times.idle;\n\t\t\t\t\t\t\ttotalTick +=\n\t\t\t\t\t\t\t\ttimes.user + times.nice + times.sys + times.idle + times.irq;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst usage = 1 - totalIdle / totalTick;\n\t\t\t\t\t\tresult.observe(usage, {\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] CPU usage callback failed:', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst systemMemoryUsage = meter.createObservableGauge(\n\t\t\t\t\t'system.memory.utilization',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'System memory utilization',\n\t\t\t\t\t\tunit: '1',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tsystemMemoryUsage.addCallback((result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst totalMem = os.totalmem();\n\t\t\t\t\t\tconst freeMem = os.freemem();\n\t\t\t\t\t\tconst usage = (totalMem - freeMem) / totalMem;\n\n\t\t\t\t\t\tresult.observe(usage, {\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] System memory callback failed:', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to create system metrics:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Graceful shutdown with error handling\n\t\tconst shutdown = async () => {\n\t\t\tconsole.log('[telemetry] Shutting down...');\n\t\t\ttry {\n\t\t\t\t// Note: We can't reference loggerProvider/meterProvider here since they're in try blocks\n\t\t\t\t// The providers will be cleaned up automatically\n\t\t\t\tawait logs.disable();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Shutdown error:', error);\n\t\t\t}\n\t\t};\n\n\t\tprocess.on('SIGTERM', async () => {\n\t\t\tawait shutdown();\n\t\t\tprocess.exit(0);\n\t\t});\n\n\t\t// Initialize tracer for manual span creation\n\t\tlet tracer: ReturnType<typeof trace.getTracer> | null = null;\n\t\tif (ENABLE_TRACES && traceExporter) {\n\t\t\ttracer = trace.getTracer(SERVICE_NAME, SERVICE_VERSION);\n\t\t}\n\n\t\t// Setup global console.error capture for automatic error telemetry\n\t\t// This captures errors that are caught and logged but not thrown\n\t\tconst ENABLE_CONSOLE_CAPTURE = merged.enableConsoleCapture ?? true;\n\t\tif (ENABLE_CONSOLE_CAPTURE && tracer) {\n\t\t\tconst originalError = console.error;\n\t\t\tconst originalWarn = console.warn;\n\n\t\t\t// Don't override if already captured (e.g., in tests)\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\tif (!(originalError as any).__telemetry_captured__) {\n\t\t\t\tconst errorTracer = trace.getTracer('console-error');\n\n\t\t\t\t/** biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Console error capture */\n\t\t\t\tconsole.error = (...args: unknown[]) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Create a span for this console.error\n\t\t\t\t\t\tconst span = errorTracer.startSpan('server.console.error');\n\n\t\t\t\t\t\t// Try to extract error information\n\t\t\t\t\t\tconst firstArg = args[0];\n\t\t\t\t\t\tlet errorMessage = args.map(String).join(' ');\n\t\t\t\t\t\tlet errorStack = '';\n\t\t\t\t\t\tlet errorType = 'ConsoleError';\n\n\t\t\t\t\t\tif (firstArg instanceof Error) {\n\t\t\t\t\t\t\terrorMessage = firstArg.message;\n\t\t\t\t\t\t\terrorStack = firstArg.stack || '';\n\t\t\t\t\t\t\terrorType = firstArg.name;\n\n\t\t\t\t\t\t\t// Enhance error with source maps if available\n\t\t\t\t\t\t\tconst rerouteDir = '.reroute';\n\t\t\t\t\t\t\tif (rerouteDir && firstArg.stack) {\n\t\t\t\t\t\t\t\tenhanceError(firstArg, { rerouteDir })\n\t\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\t\tconst enhancedError = firstArg as Error & {\n\t\t\t\t\t\t\t\t\t\t\tsourceMappedStack?: string;\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tif (enhancedError.sourceMappedStack) {\n\t\t\t\t\t\t\t\t\t\t\terrorStack = enhancedError.sourceMappedStack;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\t\t\t\t// Silently fail sourcemap enhancement\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'log.level': 'error',\n\t\t\t\t\t\t\t'log.message': errorMessage,\n\t\t\t\t\t\t\t'error.type': errorType,\n\t\t\t\t\t\t\t...(errorStack ? { 'error.stack': errorStack } : {}),\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t...getContextAttributesForTelemetry(),\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (firstArg instanceof Error) {\n\t\t\t\t\t\t\tspan.recordException(firstArg);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.end();\n\n\t\t\t\t\t\t// Also emit as log if logger is available\n\t\t\t\t\t\tif (logger) {\n\t\t\t\t\t\t\tlogger.emit({\n\t\t\t\t\t\t\t\tseverityNumber: SeverityNumber.ERROR,\n\t\t\t\t\t\t\t\tseverityText: 'ERROR',\n\t\t\t\t\t\t\t\tbody: errorMessage,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t'log.level': 'error',\n\t\t\t\t\t\t\t\t\t'error.type': errorType,\n\t\t\t\t\t\t\t\t\t...(errorStack ? { 'error.stack': errorStack } : {}),\n\t\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Silently fail - don't break console.error\n\t\t\t\t\t}\n\n\t\t\t\t\t// Call original console.error\n\t\t\t\t\toriginalError.apply(console, args);\n\t\t\t\t};\n\n\t\t\t\t// Mark as captured to prevent double-wrapping\n\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\t\t(console.error as any).__telemetry_captured__ = true;\n\n\t\t\t\tconsole.log('[telemetry] Console error capture enabled');\n\t\t\t}\n\n\t\t\t// Also capture console.warn for completeness\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\tif (!(originalWarn as any).__telemetry_captured__) {\n\t\t\t\tconst warnTracer = trace.getTracer('console-warn');\n\n\t\t\t\tconsole.warn = (...args: unknown[]) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst span = warnTracer.startSpan('server.console.warn');\n\t\t\t\t\t\tconst message = args.map(String).join(' ');\n\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'log.level': 'warn',\n\t\t\t\t\t\t\t'log.message': message,\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t...getContextAttributesForTelemetry(),\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tspan.end();\n\n\t\t\t\t\t\tif (logger) {\n\t\t\t\t\t\t\tlogger.emit({\n\t\t\t\t\t\t\t\tseverityNumber: SeverityNumber.WARN,\n\t\t\t\t\t\t\t\tseverityText: 'WARN',\n\t\t\t\t\t\t\t\tbody: message,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t'log.level': 'warn',\n\t\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Silently fail\n\t\t\t\t\t}\n\n\t\t\t\t\toriginalWarn.apply(console, args);\n\t\t\t\t};\n\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\t\t(console.warn as any).__telemetry_captured__ = true;\n\t\t\t}\n\t\t}\n\n\t\tapp = app\n\t\t\t// Track incoming requests\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Request tracking with filtering and sampling\n\t\t\t.onBeforeHandle(({ request, store }) => {\n\t\t\t\tconst startTime = Date.now();\n\t\t\t\tconst url = new URL(request.url);\n\t\t\t\tconst route = url.pathname;\n\t\t\t\tconst method = request.method;\n\n\t\t\t\t(store as Record<string, unknown>).startTime = startTime;\n\t\t\t\t(store as Record<string, unknown>).route = route;\n\n\t\t\t\t// Check if route should be ignored\n\t\t\t\tconst shouldIgnore =\n\t\t\t\t\tIGNORE_ROUTES.length > 0 &&\n\t\t\t\t\tshouldIgnoreRoute(IGNORE_ROUTES, route, method);\n\t\t\t\t(store as Record<string, unknown>).shouldIgnoreTelemetry = shouldIgnore;\n\n\t\t\t\t// Apply sampling (skip if ignored or not sampled)\n\t\t\t\tif (!shouldIgnore) {\n\t\t\t\t\tconst sampled = shouldSample(SAMPLE_RATE);\n\t\t\t\t\t(store as Record<string, unknown>).isSampled = sampled;\n\t\t\t\t\tif (!sampled) {\n\t\t\t\t\t\t(store as Record<string, unknown>).shouldIgnoreTelemetry = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Extract incoming trace context from browser (if present)\n\t\t\t\t// This allows browser spans to link to server spans\n\t\t\t\tconst incomingContext = extractTraceContext(request.headers);\n\n\t\t\t\t// Create manual span for request if traces enabled and not ignored\n\t\t\t\tif (\n\t\t\t\t\ttracer &&\n\t\t\t\t\t!(store as Record<string, unknown>).shouldIgnoreTelemetry\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Extract mapped headers early for span creation\n\t\t\t\t\t\tconst mappedHeaders =\n\t\t\t\t\t\t\tCAPTURE_MAPPINGS.length > 0\n\t\t\t\t\t\t\t\t? extractHeaders(request.headers, CAPTURE_MAPPINGS)\n\t\t\t\t\t\t\t\t: {};\n\n\t\t\t\t\t\t// Create span within extracted context (if available)\n\t\t\t\t\t\tconst createSpan = () => {\n\t\t\t\t\t\t\treturn tracer.startSpan(`${method} ${route}`, {\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t\t\t\t\t'host.address': url.host,\n\t\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t\t...mappedHeaders,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst span = incomingContext\n\t\t\t\t\t\t\t? context.with(incomingContext, createSpan)\n\t\t\t\t\t\t\t: createSpan();\n\n\t\t\t\t\t\t// Add session attributes if any\n\t\t\t\t\t\tconst sessionAttrs = getContextAttributesForTelemetry();\n\t\t\t\t\t\tif (Object.keys(sessionAttrs).length > 0) {\n\t\t\t\t\t\t\tspan.setAttributes(sessionAttrs);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t(store as Record<string, unknown>).telemetrySpan = span;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] Failed to create span:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Always track active connections for metrics accuracy\n\t\t\t\ttry {\n\t\t\t\t\tactiveConnections?.add(1);\n\t\t\t\t\thttpActiveRequests?.add(1, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\troute,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to track active requests:', error);\n\t\t\t\t}\n\n\t\t\t\t// Skip detailed telemetry if ignored or not sampled\n\t\t\t\tif ((store as Record<string, unknown>).shouldIgnoreTelemetry) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Capture mapped headers\n\t\t\t\tconst mappedHeaders =\n\t\t\t\t\tCAPTURE_MAPPINGS.length > 0\n\t\t\t\t\t\t? extractHeaders(request.headers, CAPTURE_MAPPINGS)\n\t\t\t\t\t\t: {};\n\n\t\t\t\t// Build attributes with custom attributes and captured headers\n\t\t\t\tconst baseAttributes = {\n\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t'http.route': route,\n\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t'host.address': url.host,\n\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t...mappedHeaders,\n\t\t\t\t};\n\n\t\t\t\t// Log incoming request - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\tlogger?.emit({\n\t\t\t\t\t\tseverityNumber: SeverityNumber.INFO,\n\t\t\t\t\t\tseverityText: 'INFO',\n\t\t\t\t\t\tbody: `→ ${method} ${route}`,\n\t\t\t\t\t\tattributes: baseAttributes,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to log incoming request:', error);\n\t\t\t\t}\n\n\t\t\t\t// Increment request counter - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\thttpRequestCounter?.add(1, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[telemetry] Failed to increment request counter:',\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Handle errors with full context\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Error handling with context\n\t\t\t.onError(async ({ error, request, set, store }) => {\n\t\t\t\tconst errorDetails = getErrorDetails(error);\n\t\t\t\tconst duration =\n\t\t\t\t\tDate.now() -\n\t\t\t\t\t(((store as Record<string, unknown>).startTime as number) ||\n\t\t\t\t\t\tDate.now());\n\n\t\t\t\t// Check if this error should be sampled (errors have their own sample rate)\n\t\t\t\tconst url = new URL(request.url);\n\t\t\t\tconst route = url.pathname;\n\t\t\t\tconst method = request.method;\n\t\t\t\tconst shouldIgnore =\n\t\t\t\t\tIGNORE_ROUTES.length > 0 &&\n\t\t\t\t\tshouldIgnoreRoute(IGNORE_ROUTES, route, method);\n\n\t\t\t\t// Apply error sampling (separate from regular request sampling)\n\t\t\t\tconst errorSampled = shouldSample(ERROR_SAMPLE_RATE);\n\t\t\t\tconst skipTelemetry = shouldIgnore || !errorSampled;\n\n\t\t\t\t// Record exception in manual span - wrapped in try/catch to prevent blocking\n\t\t\t\tif (!skipTelemetry) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst span = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t\t\t\t\t| Span\n\t\t\t\t\t\t\t| undefined;\n\t\t\t\t\t\tif (span) {\n\t\t\t\t\t\t\tconst errorObj =\n\t\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t\t? error\n\t\t\t\t\t\t\t\t\t: new Error(errorDetails.message);\n\n\t\t\t\t\t\t\t// Enhance error with source maps if available\n\t\t\t\t\t\t\tconst rerouteDir = '.reroute';\n\t\t\t\t\t\t\tif (rerouteDir && errorObj.stack) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait enhanceError(errorObj, { rerouteDir });\n\t\t\t\t\t\t\t\t} catch (smError) {\n\t\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\t\t'[telemetry] Sourcemap enhancement failed:',\n\t\t\t\t\t\t\t\t\t\tsmError,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tspan.recordException(errorObj);\n\t\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\t\t\t\t\tmessage: `${errorDetails.name}: ${errorDetails.message}`,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tconst enhancedError = errorObj as Error & {\n\t\t\t\t\t\t\t\tsourceMappedStack?: string;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst stackToUse =\n\t\t\t\t\t\t\t\tenhancedError.sourceMappedStack || errorDetails.stack;\n\n\t\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t'error.type': errorDetails.name,\n\t\t\t\t\t\t\t\t'error.message': errorDetails.message,\n\t\t\t\t\t\t\t\t'error.stack': errorDetails.stack,\n\t\t\t\t\t\t\t\t...(enhancedError.sourceMappedStack\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t'error.stack.decoded': enhancedError.sourceMappedStack,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t'http.response.status_code':\n\t\t\t\t\t\t\t\t\ttypeof set.status === 'number' ? set.status : 500,\n\t\t\t\t\t\t\t\t'http.duration_ms': duration,\n\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t...getContextAttributesForTelemetry(),\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tspan.addEvent('exception', {\n\t\t\t\t\t\t\t\t'exception.type': errorDetails.name,\n\t\t\t\t\t\t\t\t'exception.message': errorDetails.message,\n\t\t\t\t\t\t\t\t'exception.stacktrace': stackToUse,\n\t\t\t\t\t\t\t\t'exception.escaped': 'false',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t// End the span here since onAfterResponse won't handle errors\n\t\t\t\t\t\t\tspan.end();\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (spanError) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'[telemetry] Failed to record exception in span:',\n\t\t\t\t\t\t\tspanError,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Log error - wrapped in try/catch to prevent blocking\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlogger?.emit({\n\t\t\t\t\t\t\tseverityNumber: SeverityNumber.ERROR,\n\t\t\t\t\t\t\tseverityText: 'ERROR',\n\t\t\t\t\t\t\tbody: `${errorDetails.name}: ${errorDetails.message}`,\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t'error.type': errorDetails.name,\n\t\t\t\t\t\t\t\t'error.message': errorDetails.message,\n\t\t\t\t\t\t\t\t'error.stack': errorDetails.stack,\n\t\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t\t\t\t'http.response.status_code':\n\t\t\t\t\t\t\t\t\ttypeof set.status === 'number' ? set.status : 500,\n\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (logError) {\n\t\t\t\t\t\tconsole.error('[telemetry] Failed to log error:', logError);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Increment error counter - wrapped in try/catch to prevent blocking\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst statusCode =\n\t\t\t\t\t\t\ttypeof set.status === 'number' ? set.status : 500;\n\t\t\t\t\t\thttpErrorCounter?.add(1, {\n\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\t'error.type': errorDetails.name,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\thttpRequestDuration?.record(duration, {\n\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (metricsError) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'[telemetry] Failed to record error metrics:',\n\t\t\t\t\t\t\tmetricsError,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Record response metrics\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response metrics recording\n\t\t\t.onAfterResponse(({ request, set, store }) => {\n\t\t\t\tconst url = new URL(request.url);\n\t\t\t\tconst pathname = url.pathname;\n\t\t\t\tconst method = request.method;\n\t\t\t\tconst statusCode = typeof set.status === 'number' ? set.status : 200;\n\t\t\t\tconst duration =\n\t\t\t\t\tDate.now() -\n\t\t\t\t\t(((store as Record<string, unknown>).startTime as number) ||\n\t\t\t\t\t\tDate.now());\n\t\t\t\tconst route =\n\t\t\t\t\t((store as Record<string, unknown>).route as string) || pathname;\n\n\t\t\t\t// Always decrement active connections for metrics accuracy\n\t\t\t\ttry {\n\t\t\t\t\tactiveConnections?.add(-1);\n\t\t\t\t\thttpActiveRequests?.add(-1, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\troute,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[telemetry] Failed to decrement active requests:',\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Skip detailed telemetry if ignored or not sampled (set in onBeforeHandle)\n\t\t\t\tconst shouldIgnoreTelemetry = (store as Record<string, unknown>)\n\t\t\t\t\t.shouldIgnoreTelemetry;\n\t\t\t\tif (shouldIgnoreTelemetry) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// End manual span with final attributes\n\t\t\t\ttry {\n\t\t\t\t\tconst span = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t\t\t\t| Span\n\t\t\t\t\t\t| undefined;\n\t\t\t\t\tif (span) {\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\t'http.duration_ms': duration,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (statusCode >= 400) {\n\t\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\t\t\t\t\tmessage: `HTTP ${statusCode}`,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tspan.setAttribute('error', true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.end();\n\t\t\t\t\t}\n\t\t\t\t} catch (spanError) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to end span:', spanError);\n\t\t\t\t}\n\n\t\t\t\t// Log response - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\tconst isError = statusCode >= 400;\n\t\t\t\t\tlogger?.emit({\n\t\t\t\t\t\tseverityNumber: isError\n\t\t\t\t\t\t\t? SeverityNumber.ERROR\n\t\t\t\t\t\t\t: SeverityNumber.INFO,\n\t\t\t\t\t\tseverityText: isError ? 'ERROR' : 'INFO',\n\t\t\t\t\t\tbody: `← ${method} ${route} → ${statusCode} (${duration}ms)`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\t'http.duration_ms': duration,\n\t\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t\t\t'host.address': url.host,\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} catch (logError) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to log response:', logError);\n\t\t\t\t}\n\n\t\t\t\t// Record metrics - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\thttpRequestDuration?.record(duration, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t});\n\t\t\t\t} catch (metricsError) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[telemetry] Failed to record request duration:',\n\t\t\t\t\t\tmetricsError,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Optionally add error inspector endpoint for source-mapped stack traces\n\t\tif (merged.sourcemaps?.enabled !== false) {\n\t\t\tconst rerouteDir = '.reroute';\n\n\t\t\tapp.post('/__reroute_telemetry/inspect', async ({ body }) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst { stack } = body as { stack?: string };\n\t\t\t\t\tif (!stack) {\n\t\t\t\t\t\treturn { error: 'Missing stack trace' };\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { resolveStackTrace } = await import('./sourcemap');\n\t\t\t\t\tconst result = await resolveStackTrace(stack, { rerouteDir });\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\toriginal: result.original,\n\t\t\t\t\t\tmapped: result.mapped,\n\t\t\t\t\t\tframes: result.frames,\n\t\t\t\t\t};\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[telemetry] Error inspection failed:', error);\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: error instanceof Error ? error.message : 'Unknown error',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Optionally add browser telemetry proxy\n\t\tif (ENABLE_PROXY) {\n\t\t\tconst API_KEY = merged.apiKey || process.env.SIGNOZ_API_KEY;\n\n\t\t\t// Proxy handler function\n\t\t\tconst handleProxy = async (\n\t\t\t\tendpoint: string,\n\t\t\t\trequestBody: unknown,\n\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Proxy forwarding with error handling\n\t\t\t): Promise<{ status: number }> => {\n\t\t\t\tconst headers: Record<string, string> = {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t};\n\n\t\t\t\tif (API_KEY) {\n\t\t\t\t\theaders.Authorization = `Bearer ${API_KEY}`;\n\t\t\t\t}\n\n\t\t\t\t// Use custom handler if provided\n\t\t\t\tif (PROXY_HANDLER) {\n\t\t\t\t\treturn await PROXY_HANDLER({\n\t\t\t\t\t\tbody: requestBody,\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\theaders,\n\t\t\t\t\t\totlpEndpoint: OTLP_ENDPOINT,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Default handler: forward to OTLP endpoint\n\t\t\t\ttry {\n\t\t\t\t\tconst controller = new AbortController();\n\t\t\t\t\tconst timeoutId = setTimeout(() => controller.abort(), 5000);\n\n\t\t\t\t\tconst response = await fetch(`${OTLP_ENDPOINT}${endpoint}`, {\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\theaders,\n\t\t\t\t\t\tbody: JSON.stringify(requestBody),\n\t\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t\t});\n\n\t\t\t\t\tclearTimeout(timeoutId);\n\n\t\t\t\t\tif (PROXY_VERBOSE) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[telemetry-proxy]${endpoint} forwarded: ${response.status}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!response.ok && PROXY_VERBOSE) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t`[telemetry-proxy] OTLP error: ${response.status} ${response.statusText}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn { status: 200 };\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (PROXY_VERBOSE) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t`[telemetry-proxy] Failed to forward${endpoint}:`,\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn { status: 200 };\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tapp\n\t\t\t\t.post(\n\t\t\t\t\t`${PROXY_PATHNAME}/v1/traces`,\n\t\t\t\t\tasync function forwardBrowserTraces({ body }) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await handleProxy('/v1/traces', body);\n\t\t\t\t\t\t\treturn new Response(null, { status: result.status });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[telemetry-proxy] Handler error:', error);\n\t\t\t\t\t\t\treturn new Response(null, { status: 200 });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.post(\n\t\t\t\t\t`${PROXY_PATHNAME}/v1/metrics`,\n\t\t\t\t\tasync function forwardBrowserMetrics({ body }) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await handleProxy('/v1/metrics', body);\n\t\t\t\t\t\t\treturn new Response(null, { status: result.status });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[telemetry-proxy] Handler error:', error);\n\t\t\t\t\t\t\treturn new Response(null, { status: 200 });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.post(\n\t\t\t\t\t`${PROXY_PATHNAME}/v1/logs`,\n\t\t\t\t\tasync function forwardBrowserLogs({ body }) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await handleProxy('/v1/logs', body);\n\t\t\t\t\t\t\treturn new Response(null, { status: result.status });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[telemetry-proxy] Handler error:', error);\n\t\t\t\t\t\t\treturn new Response(null, { status: 200 });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.get(`${PROXY_PATHNAME}/health`, () => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: 'ok',\n\t\t\t\t\t\totlpEndpoint: OTLP_ENDPOINT,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t}\n\n\t\treturn app;\n\t};\n}\n",
|
|
15
|
+
"import os from 'node:os';\nimport {\n\ttype Counter,\n\tcontext,\n\ttype Histogram,\n\tmetrics,\n\ttype Span,\n\tSpanStatusCode,\n\ttrace,\n\ttype UpDownCounter,\n} from '@opentelemetry/api';\nimport { logs, SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n\tBatchLogRecordProcessor,\n\tLoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport {\n\tMeterProvider,\n\tPeriodicExportingMetricReader,\n} from '@opentelemetry/sdk-metrics';\nimport {\n\tBatchSpanProcessor,\n\tNodeTracerProvider,\n} from '@opentelemetry/sdk-trace-node';\nimport {\n\tATTR_SERVICE_NAME,\n\tATTR_SERVICE_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_HOST_NAME } from '@opentelemetry/semantic-conventions/incubating';\nimport type { Elysia } from 'elysia';\nimport { loadConfig, type TelemetryOptions } from 'reroute-js/core';\nimport { getContextAttributesForTelemetry } from './context';\nimport { extractHeaders } from './headers/extractor';\nimport { extractTraceContext } from './instrumentation';\nimport { enhanceError } from './sourcemap';\n\n/**\n * Server telemetry options\n * Extends TelemetryOptions from config - all options can be set in reroute.config.ts\n * or passed directly here (direct options override config values)\n */\nexport interface ServerTelemetryOptions extends TelemetryOptions {}\n\n// Helper to extract error details\nfunction getErrorDetails(error: unknown): {\n\tname: string;\n\tmessage: string;\n\tstack: string;\n} {\n\tif (error instanceof Error) {\n\t\treturn {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tstack: error.stack || '',\n\t\t};\n\t}\n\n\tif (typeof error === 'object' && error !== null) {\n\t\tconst err = error as Record<string, unknown>;\n\t\treturn {\n\t\t\tname: String(err.name || err.code || 'UnknownError'),\n\t\t\tmessage: String(err.message || err.error || JSON.stringify(error)),\n\t\t\tstack: String(err.stack || ''),\n\t\t};\n\t}\n\n\treturn {\n\t\tname: 'UnknownError',\n\t\tmessage: String(error),\n\t\tstack: '',\n\t};\n}\n\n/**\n * Check if a route should be ignored based on ignore patterns\n * Supports strings, RegExp, and custom functions\n */\nfunction shouldIgnoreRoute(\n\tpatterns: (\n\t\t| string\n\t\t| RegExp\n\t\t| ((pathname: string, method: string) => boolean)\n\t)[],\n\tpathname: string,\n\tmethod: string,\n): boolean {\n\treturn patterns.some((pattern) => {\n\t\tif (typeof pattern === 'string') {\n\t\t\treturn pathname.includes(pattern);\n\t\t}\n\t\tif (pattern instanceof RegExp) {\n\t\t\treturn pattern.test(pathname);\n\t\t}\n\t\tif (typeof pattern === 'function') {\n\t\t\treturn pattern(pathname, method);\n\t\t}\n\t\treturn false;\n\t});\n}\n\n/**\n * Determine if a request should be sampled based on sample rate\n * Uses deterministic sampling based on trace ID for consistency\n * @param rate - Sample rate between 0.0 and 1.0\n * @param traceId - Trace ID for deterministic sampling (optional)\n * @returns true if request should be sampled\n */\nfunction shouldSample(rate: number, traceId?: string): boolean {\n\tif (rate >= 1.0) return true;\n\tif (rate <= 0.0) return false;\n\n\t// Use deterministic sampling if trace ID provided\n\tif (traceId) {\n\t\t// Convert first 8 chars of trace ID to number for consistent sampling\n\t\tconst hash = Number.parseInt(traceId.slice(0, 8), 16);\n\t\treturn hash % 100 < rate * 100;\n\t}\n\n\t// Fall back to random sampling\n\treturn Math.random() < rate;\n}\n\n/**\n * Server-side telemetry plugin for Elysia\n *\n * Automatically captures:\n * - HTTP requests and responses\n * - Errors with full stack traces\n * - System metrics (CPU, memory)\n * - Request/response sizes\n * - Active connections\n *\n * Configuration is loaded from reroute.config.ts automatically.\n * Direct options override config values.\n *\n * @example\n * ```typescript\n * import { Elysia } from 'elysia';\n * import { telemetry } from 'reroute-js/telemetry/server';\n *\n * new Elysia()\n * .use(telemetry({\n * serviceName: 'My App',\n * }))\n * .listen(3000);\n * ```\n */\nexport function telemetry(options: ServerTelemetryOptions = {}) {\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Telemetry initialization with config loading and feature toggles\n\treturn async (app: Elysia) => {\n\t\t// Load reroute.config.ts automatically\n\t\tconst cwd =\n\t\t\ttypeof process !== 'undefined' && typeof process.cwd === 'function'\n\t\t\t\t? process.cwd()\n\t\t\t\t: '/';\n\t\tconst config = await loadConfig(cwd);\n\n\t\t// Merge config with direct options (direct options take precedence)\n\t\tconst merged = {\n\t\t\t...config.telemetry,\n\t\t\t...options,\n\t\t};\n\n\t\t// Check if telemetry is enabled (default: false)\n\t\tconst TELEMETRY_ENABLED = merged.enabled ?? false;\n\t\tif (!TELEMETRY_ENABLED) {\n\t\t\tconsole.log(\n\t\t\t\t'[telemetry] Disabled - set enabled: true in config or options to enable',\n\t\t\t);\n\t\t\t// Return app unchanged when disabled\n\t\t\treturn app;\n\t\t}\n\n\t\t// Extract configuration values\n\t\tconst SERVICE_NAME = merged.serviceName || 'reroute-app';\n\t\tconst SERVICE_VERSION =\n\t\t\tmerged.serviceVersion || process.env.npm_package_version || '1.0.0';\n\t\tconst OTLP_ENDPOINT =\n\t\t\tmerged.otlpEndpoint ||\n\t\t\tprocess.env.OTEL_EXPORTER_OTLP_ENDPOINT ||\n\t\t\t'http://localhost:4318';\n\t\tconst METRICS_INTERVAL = merged.metricsInterval ?? 5000;\n\n\t\t// Handle proxy configuration\n\t\tconst proxyConfig = merged.proxy;\n\t\tconst ENABLE_PROXY = proxyConfig?.enabled ?? !!proxyConfig;\n\t\tconst PROXY_PATHNAME = proxyConfig?.pathname ?? '/__reroute_telemetry';\n\t\tconst PROXY_VERBOSE = proxyConfig?.verbose ?? false;\n\t\tconst PROXY_HANDLER = proxyConfig?.handler;\n\n\t\t// Feature toggles (default: true when telemetry is enabled)\n\t\tconst ENABLE_TRACES = merged.enableTraces ?? true;\n\t\tconst ENABLE_METRICS = merged.enableMetrics ?? true;\n\t\tconst ENABLE_LOGS = merged.enableLogs ?? true;\n\t\tconst ENABLE_SYSTEM_METRICS = merged.enableSystemMetrics ?? true;\n\n\t\t// Sampling configuration\n\t\t// Default: Sample 20% of normal traffic, 100% of errors\n\t\t// This reduces telemetry volume by 80% while keeping all errors\n\t\tconst SAMPLE_RATE = merged.sampleRate ?? 0.2;\n\t\tconst ERROR_SAMPLE_RATE = merged.errorSampleRate ?? 1.0;\n\n\t\t// Route filtering\n\t\tconst IGNORE_ROUTES = merged.ignoreRoutes || [];\n\n\t\t// Header capture and custom attributes\n\t\tconst CAPTURE_MAPPINGS = merged.capture || [];\n\t\tconst CUSTOM_ATTRIBUTES = merged.customAttributes || {};\n\n\t\tconsole.log(`[telemetry] Initializing with endpoint: ${OTLP_ENDPOINT}`);\n\t\tconsole.log(\n\t\t\t`[telemetry] Features - Traces: ${ENABLE_TRACES}, Metrics: ${ENABLE_METRICS}, Logs: ${ENABLE_LOGS}`,\n\t\t);\n\t\tif (SAMPLE_RATE < 1.0) {\n\t\t\tconsole.log(\n\t\t\t\t`[telemetry] Sampling - Requests: ${SAMPLE_RATE * 100}%, Errors: ${ERROR_SAMPLE_RATE * 100}%`,\n\t\t\t);\n\t\t}\n\t\tif (ENABLE_PROXY) {\n\t\t\tconsole.log(\n\t\t\t\t`[telemetry] Browser telemetry proxy enabled at ${PROXY_PATHNAME}/*`,\n\t\t\t);\n\t\t}\n\n\t\t// Secure headers for API authentication (optional)\n\t\tconst otlpHeaders: Record<string, string> = {};\n\t\tif (merged.apiKey || process.env.SIGNOZ_API_KEY) {\n\t\t\totlpHeaders.Authorization = `Bearer ${merged.apiKey || process.env.SIGNOZ_API_KEY}`;\n\t\t}\n\n\t\t// Configure OTLP exporters with timeouts (conditionally based on feature toggles)\n\t\tconst traceExporter = ENABLE_TRACES\n\t\t\t? new OTLPTraceExporter({\n\t\t\t\t\turl: `${OTLP_ENDPOINT}/v1/traces`,\n\t\t\t\t\theaders:\n\t\t\t\t\t\tObject.keys(otlpHeaders).length > 0 ? otlpHeaders : undefined,\n\t\t\t\t\ttimeoutMillis: 5000, // 5 second timeout\n\t\t\t\t})\n\t\t\t: null;\n\n\t\tconst logExporter = ENABLE_LOGS\n\t\t\t? new OTLPLogExporter({\n\t\t\t\t\turl: `${OTLP_ENDPOINT}/v1/logs`,\n\t\t\t\t\theaders:\n\t\t\t\t\t\tObject.keys(otlpHeaders).length > 0 ? otlpHeaders : undefined,\n\t\t\t\t\ttimeoutMillis: 5000, // 5 second timeout\n\t\t\t\t})\n\t\t\t: null;\n\n\t\tconst metricExporter = ENABLE_METRICS\n\t\t\t? new OTLPMetricExporter({\n\t\t\t\t\turl: `${OTLP_ENDPOINT}/v1/metrics`,\n\t\t\t\t\theaders:\n\t\t\t\t\t\tObject.keys(otlpHeaders).length > 0 ? otlpHeaders : undefined,\n\t\t\t\t\ttimeoutMillis: 5000, // 5 second timeout\n\t\t\t\t})\n\t\t\t: null;\n\n\t\t// Create resource with service information\n\t\t// In Docker, prefer env var over os.hostname() (which returns container ID)\n\t\tconst HOSTNAME =\n\t\t\tprocess.env.OTEL_RESOURCE_ATTRIBUTES?.match(/host\\.name=([^,]+)/)?.[1] ||\n\t\t\tprocess.env.HOSTNAME ||\n\t\t\tos.hostname();\n\n\t\tconst resource = resourceFromAttributes({\n\t\t\t[ATTR_SERVICE_NAME]: SERVICE_NAME,\n\t\t\t[ATTR_SERVICE_VERSION]: SERVICE_VERSION,\n\t\t\t[ATTR_HOST_NAME]: HOSTNAME,\n\t\t});\n\n\t\t// Set up Traces with error handling (only if enabled)\n\t\tif (ENABLE_TRACES && traceExporter) {\n\t\t\ttry {\n\t\t\t\tconst tracerProvider = new NodeTracerProvider({\n\t\t\t\t\tresource,\n\t\t\t\t\t// Note: We use middleware-level sampling instead of SDK sampling\n\t\t\t\t\t// This allows us to preserve 100% of errors while sampling normal traffic\n\t\t\t\t\tspanProcessors: [new BatchSpanProcessor(traceExporter)],\n\t\t\t\t});\n\t\t\t\ttracerProvider.register();\n\n\t\t\t\tif (SAMPLE_RATE < 1.0 || ERROR_SAMPLE_RATE < 1.0) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[telemetry] Middleware sampling: ${SAMPLE_RATE * 100}% normal, ${ERROR_SAMPLE_RATE * 100}% errors`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to initialize tracer:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Set up Logs with error handling (only if enabled)\n\t\tlet logger: ReturnType<LoggerProvider['getLogger']> | null = null;\n\t\tif (ENABLE_LOGS && logExporter) {\n\t\t\ttry {\n\t\t\t\tconst loggerProvider = new LoggerProvider({\n\t\t\t\t\tresource,\n\t\t\t\t\tprocessors: [new BatchLogRecordProcessor(logExporter)],\n\t\t\t\t});\n\t\t\t\tlogs.setGlobalLoggerProvider(loggerProvider);\n\t\t\t\tlogger = loggerProvider.getLogger(SERVICE_NAME, SERVICE_VERSION);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to initialize logger:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Set up Metrics with error handling (only if enabled)\n\t\tlet meter: ReturnType<MeterProvider['getMeter']> | null = null;\n\t\tif (ENABLE_METRICS && metricExporter) {\n\t\t\ttry {\n\t\t\t\tconst meterProvider = new MeterProvider({\n\t\t\t\t\tresource,\n\t\t\t\t\treaders: [\n\t\t\t\t\t\tnew PeriodicExportingMetricReader({\n\t\t\t\t\t\t\texporter: metricExporter,\n\t\t\t\t\t\t\texportIntervalMillis: METRICS_INTERVAL,\n\t\t\t\t\t\t}),\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tmetrics.setGlobalMeterProvider(meterProvider);\n\t\t\t\tmeter = meterProvider.getMeter(SERVICE_NAME, SERVICE_VERSION);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to initialize meter:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Create HTTP metrics with null checks\n\t\tlet httpRequestCounter: Counter | null = null;\n\t\tlet httpRequestDuration: Histogram | null = null;\n\t\tlet httpErrorCounter: Counter | null = null;\n\t\tlet httpActiveRequests: UpDownCounter | null = null;\n\t\tlet activeConnections: UpDownCounter | null = null;\n\n\t\tif (meter) {\n\t\t\ttry {\n\t\t\t\thttpRequestCounter = meter.createCounter('http.server.request.count', {\n\t\t\t\t\tdescription: 'Total HTTP requests',\n\t\t\t\t\tunit: 'requests',\n\t\t\t\t});\n\n\t\t\t\thttpRequestDuration = meter.createHistogram(\n\t\t\t\t\t'http.server.request.duration',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'HTTP request duration',\n\t\t\t\t\t\tunit: 'milliseconds',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\thttpErrorCounter = meter.createCounter('http.server.error.count', {\n\t\t\t\t\tdescription: 'Total HTTP errors',\n\t\t\t\t\tunit: 'errors',\n\t\t\t\t});\n\n\t\t\t\thttpActiveRequests = meter.createUpDownCounter(\n\t\t\t\t\t'http.server.active_requests',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'Active HTTP requests',\n\t\t\t\t\t\tunit: 'requests',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tactiveConnections = meter.createUpDownCounter(\n\t\t\t\t\t'app.connections.active',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'Active connections',\n\t\t\t\t\t\tunit: 'connections',\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to create HTTP metrics:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Create system metrics (optional) with error handling\n\t\tif (ENABLE_SYSTEM_METRICS && meter) {\n\t\t\ttry {\n\t\t\t\t// Reuse HOSTNAME from resource (already computed above)\n\n\t\t\t\tconst memoryUsage = meter.createObservableGauge('app.memory.usage', {\n\t\t\t\t\tdescription: 'Process memory usage',\n\t\t\t\t\tunit: 'bytes',\n\t\t\t\t});\n\n\t\t\t\tmemoryUsage.addCallback((result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst usage = process.memoryUsage();\n\t\t\t\t\t\tresult.observe(usage.heapUsed, {\n\t\t\t\t\t\t\ttype: 'heap',\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresult.observe(usage.rss, { type: 'rss', 'host.name': HOSTNAME });\n\t\t\t\t\t\tresult.observe(usage.external, {\n\t\t\t\t\t\t\ttype: 'external',\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] Memory usage callback failed:', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst systemCpuUsage = meter.createObservableGauge(\n\t\t\t\t\t'system.cpu.utilization',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'System CPU utilization',\n\t\t\t\t\t\tunit: '1',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tsystemCpuUsage.addCallback((result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst cpus = os.cpus();\n\t\t\t\t\t\tlet totalIdle = 0;\n\t\t\t\t\t\tlet totalTick = 0;\n\n\t\t\t\t\t\tcpus.forEach((cpu) => {\n\t\t\t\t\t\t\tconst times = cpu.times;\n\t\t\t\t\t\t\ttotalIdle += times.idle;\n\t\t\t\t\t\t\ttotalTick +=\n\t\t\t\t\t\t\t\ttimes.user + times.nice + times.sys + times.idle + times.irq;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst usage = 1 - totalIdle / totalTick;\n\t\t\t\t\t\tresult.observe(usage, {\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] CPU usage callback failed:', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst systemMemoryUsage = meter.createObservableGauge(\n\t\t\t\t\t'system.memory.utilization',\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: 'System memory utilization',\n\t\t\t\t\t\tunit: '1',\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tsystemMemoryUsage.addCallback((result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst totalMem = os.totalmem();\n\t\t\t\t\t\tconst freeMem = os.freemem();\n\t\t\t\t\t\tconst usage = (totalMem - freeMem) / totalMem;\n\n\t\t\t\t\t\tresult.observe(usage, {\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t'host.name': HOSTNAME,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] System memory callback failed:', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Failed to create system metrics:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Graceful shutdown with error handling\n\t\tconst shutdown = async () => {\n\t\t\tconsole.log('[telemetry] Shutting down...');\n\t\t\ttry {\n\t\t\t\t// Note: We can't reference loggerProvider/meterProvider here since they're in try blocks\n\t\t\t\t// The providers will be cleaned up automatically\n\t\t\t\tawait logs.disable();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[telemetry] Shutdown error:', error);\n\t\t\t}\n\t\t};\n\n\t\tprocess.on('SIGTERM', async () => {\n\t\t\tawait shutdown();\n\t\t\tprocess.exit(0);\n\t\t});\n\n\t\t// Initialize tracer for manual span creation\n\t\tlet tracer: ReturnType<typeof trace.getTracer> | null = null;\n\t\tif (ENABLE_TRACES && traceExporter) {\n\t\t\ttracer = trace.getTracer(SERVICE_NAME, SERVICE_VERSION);\n\t\t}\n\n\t\t// Setup global console.error capture for automatic error telemetry\n\t\t// This captures errors that are caught and logged but not thrown\n\t\tconst ENABLE_CONSOLE_CAPTURE = merged.enableConsoleCapture ?? true;\n\t\tif (ENABLE_CONSOLE_CAPTURE && tracer) {\n\t\t\tconst originalError = console.error;\n\t\t\tconst originalWarn = console.warn;\n\n\t\t\t// Don't override if already captured (e.g., in tests)\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\tif (!(originalError as any).__telemetry_captured__) {\n\t\t\t\tconst errorTracer = trace.getTracer('console-error');\n\n\t\t\t\t/** biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Console error capture */\n\t\t\t\tconsole.error = (...args: unknown[]) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Create a span for this console.error\n\t\t\t\t\t\tconst span = errorTracer.startSpan('server.console.error');\n\n\t\t\t\t\t\t// Try to extract error information\n\t\t\t\t\t\tconst firstArg = args[0];\n\t\t\t\t\t\tlet errorMessage = args.map(String).join(' ');\n\t\t\t\t\t\tlet errorStack = '';\n\t\t\t\t\t\tlet errorType = 'ConsoleError';\n\n\t\t\t\t\t\tif (firstArg instanceof Error) {\n\t\t\t\t\t\t\terrorMessage = firstArg.message;\n\t\t\t\t\t\t\terrorStack = firstArg.stack || '';\n\t\t\t\t\t\t\terrorType = firstArg.name;\n\n\t\t\t\t\t\t\t// Enhance error with source maps if available\n\t\t\t\t\t\t\tconst rerouteDir = '.reroute';\n\t\t\t\t\t\t\tif (rerouteDir && firstArg.stack) {\n\t\t\t\t\t\t\t\tenhanceError(firstArg, { rerouteDir })\n\t\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\t\tconst enhancedError = firstArg as Error & {\n\t\t\t\t\t\t\t\t\t\t\tsourceMappedStack?: string;\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tif (enhancedError.sourceMappedStack) {\n\t\t\t\t\t\t\t\t\t\t\terrorStack = enhancedError.sourceMappedStack;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\t\t\t\t// Silently fail sourcemap enhancement\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'log.level': 'error',\n\t\t\t\t\t\t\t'log.message': errorMessage,\n\t\t\t\t\t\t\t'error.type': errorType,\n\t\t\t\t\t\t\t...(errorStack ? { 'error.stack': errorStack } : {}),\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t...getContextAttributesForTelemetry(),\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (firstArg instanceof Error) {\n\t\t\t\t\t\t\tspan.recordException(firstArg);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.end();\n\n\t\t\t\t\t\t// Also emit as log if logger is available\n\t\t\t\t\t\tif (logger) {\n\t\t\t\t\t\t\tlogger.emit({\n\t\t\t\t\t\t\t\tseverityNumber: SeverityNumber.ERROR,\n\t\t\t\t\t\t\t\tseverityText: 'ERROR',\n\t\t\t\t\t\t\t\tbody: errorMessage,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t'log.level': 'error',\n\t\t\t\t\t\t\t\t\t'error.type': errorType,\n\t\t\t\t\t\t\t\t\t...(errorStack ? { 'error.stack': errorStack } : {}),\n\t\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Silently fail - don't break console.error\n\t\t\t\t\t}\n\n\t\t\t\t\t// Call original console.error\n\t\t\t\t\toriginalError.apply(console, args);\n\t\t\t\t};\n\n\t\t\t\t// Mark as captured to prevent double-wrapping\n\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\t\t(console.error as any).__telemetry_captured__ = true;\n\n\t\t\t\tconsole.log('[telemetry] Console error capture enabled');\n\t\t\t}\n\n\t\t\t// Also capture console.warn for completeness\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\tif (!(originalWarn as any).__telemetry_captured__) {\n\t\t\t\tconst warnTracer = trace.getTracer('console-warn');\n\n\t\t\t\tconsole.warn = (...args: unknown[]) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst span = warnTracer.startSpan('server.console.warn');\n\t\t\t\t\t\tconst message = args.map(String).join(' ');\n\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'log.level': 'warn',\n\t\t\t\t\t\t\t'log.message': message,\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t...getContextAttributesForTelemetry(),\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tspan.end();\n\n\t\t\t\t\t\tif (logger) {\n\t\t\t\t\t\t\tlogger.emit({\n\t\t\t\t\t\t\t\tseverityNumber: SeverityNumber.WARN,\n\t\t\t\t\t\t\t\tseverityText: 'WARN',\n\t\t\t\t\t\t\t\tbody: message,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t'log.level': 'warn',\n\t\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Silently fail\n\t\t\t\t\t}\n\n\t\t\t\t\toriginalWarn.apply(console, args);\n\t\t\t\t};\n\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: Console capture\n\t\t\t\t(console.warn as any).__telemetry_captured__ = true;\n\t\t\t}\n\t\t}\n\n\t\tapp = app\n\t\t\t// Track incoming requests\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Request tracking with filtering and sampling\n\t\t\t.onBeforeHandle(({ request, store }) => {\n\t\t\t\tconst startTime = Date.now();\n\t\t\t\tconst url = new URL(request.url);\n\t\t\t\tconst route = url.pathname;\n\t\t\t\tconst method = request.method;\n\n\t\t\t\t(store as Record<string, unknown>).startTime = startTime;\n\t\t\t\t(store as Record<string, unknown>).route = route;\n\n\t\t\t\t// Check if route should be ignored\n\t\t\t\tconst shouldIgnore =\n\t\t\t\t\tIGNORE_ROUTES.length > 0 &&\n\t\t\t\t\tshouldIgnoreRoute(IGNORE_ROUTES, route, method);\n\t\t\t\t(store as Record<string, unknown>).shouldIgnoreTelemetry = shouldIgnore;\n\n\t\t\t\t// Extract incoming trace context from browser (if present)\n\t\t\t\t// This allows browser spans to link to server spans\n\t\t\t\tconst incomingContext = extractTraceContext(request.headers);\n\n\t\t\t\t// Apply sampling (skip if ignored or not sampled)\n\t\t\t\t// Use trace ID for deterministic sampling if available\n\t\t\t\tconst traceId = incomingContext\n\t\t\t\t\t? (trace.getSpan(incomingContext)?.spanContext().traceId ?? undefined)\n\t\t\t\t\t: undefined;\n\n\t\t\t\tif (!shouldIgnore) {\n\t\t\t\t\tconst sampled = shouldSample(SAMPLE_RATE, traceId);\n\t\t\t\t\t(store as Record<string, unknown>).isSampled = sampled;\n\t\t\t\t\tif (!sampled) {\n\t\t\t\t\t\t(store as Record<string, unknown>).shouldIgnoreTelemetry = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Create manual span for request if traces enabled and not ignored\n\t\t\t\tif (\n\t\t\t\t\ttracer &&\n\t\t\t\t\t!(store as Record<string, unknown>).shouldIgnoreTelemetry\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Extract mapped headers early for span creation\n\t\t\t\t\t\tconst mappedHeaders =\n\t\t\t\t\t\t\tCAPTURE_MAPPINGS.length > 0\n\t\t\t\t\t\t\t\t? extractHeaders(request.headers, CAPTURE_MAPPINGS)\n\t\t\t\t\t\t\t\t: {};\n\n\t\t\t\t\t\t// Create span within extracted context (if available)\n\t\t\t\t\t\tconst createSpan = () => {\n\t\t\t\t\t\t\treturn tracer.startSpan(`${method} ${route}`, {\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t\t\t\t\t'host.address': url.host,\n\t\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t\t...mappedHeaders,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst span = incomingContext\n\t\t\t\t\t\t\t? context.with(incomingContext, createSpan)\n\t\t\t\t\t\t\t: createSpan();\n\n\t\t\t\t\t\t// Add session attributes if any\n\t\t\t\t\t\tconst sessionAttrs = getContextAttributesForTelemetry();\n\t\t\t\t\t\tif (Object.keys(sessionAttrs).length > 0) {\n\t\t\t\t\t\t\tspan.setAttributes(sessionAttrs);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t(store as Record<string, unknown>).telemetrySpan = span;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[telemetry] Failed to create span:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Always track active connections for metrics accuracy\n\t\t\t\ttry {\n\t\t\t\t\tactiveConnections?.add(1);\n\t\t\t\t\thttpActiveRequests?.add(1, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\troute,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to track active requests:', error);\n\t\t\t\t}\n\n\t\t\t\t// Skip detailed telemetry if ignored or not sampled\n\t\t\t\tif ((store as Record<string, unknown>).shouldIgnoreTelemetry) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Capture mapped headers\n\t\t\t\tconst mappedHeaders =\n\t\t\t\t\tCAPTURE_MAPPINGS.length > 0\n\t\t\t\t\t\t? extractHeaders(request.headers, CAPTURE_MAPPINGS)\n\t\t\t\t\t\t: {};\n\n\t\t\t\t// Build attributes with custom attributes and captured headers\n\t\t\t\tconst baseAttributes = {\n\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t'http.route': route,\n\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t'host.address': url.host,\n\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t...mappedHeaders,\n\t\t\t\t};\n\n\t\t\t\t// Log incoming request - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\tlogger?.emit({\n\t\t\t\t\t\tseverityNumber: SeverityNumber.INFO,\n\t\t\t\t\t\tseverityText: 'INFO',\n\t\t\t\t\t\tbody: `→ ${method} ${route}`,\n\t\t\t\t\t\tattributes: baseAttributes,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to log incoming request:', error);\n\t\t\t\t}\n\n\t\t\t\t// Increment request counter - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\thttpRequestCounter?.add(1, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[telemetry] Failed to increment request counter:',\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Handle errors with full context\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Error handling with context\n\t\t\t.onError(async ({ error, request, set, store }) => {\n\t\t\t\tconst errorDetails = getErrorDetails(error);\n\t\t\t\tconst duration =\n\t\t\t\t\tDate.now() -\n\t\t\t\t\t(((store as Record<string, unknown>).startTime as number) ||\n\t\t\t\t\t\tDate.now());\n\n\t\t\t\t// Check if this error should be sampled (errors have their own sample rate)\n\t\t\t\tconst url = new URL(request.url);\n\t\t\t\tconst route = url.pathname;\n\t\t\t\tconst method = request.method;\n\t\t\t\tconst shouldIgnore =\n\t\t\t\t\tIGNORE_ROUTES.length > 0 &&\n\t\t\t\t\tshouldIgnoreRoute(IGNORE_ROUTES, route, method);\n\n\t\t\t\t// Apply error sampling (separate from regular request sampling)\n\t\t\t\t// Always sample errors if ERROR_SAMPLE_RATE = 1.0 (default)\n\t\t\t\tconst span = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t\t\t| Span\n\t\t\t\t\t| undefined;\n\t\t\t\tconst traceId = span?.spanContext().traceId;\n\t\t\t\tconst errorSampled = shouldSample(ERROR_SAMPLE_RATE, traceId);\n\t\t\t\tconst skipTelemetry = shouldIgnore || !errorSampled;\n\n\t\t\t\t// Record exception in manual span - wrapped in try/catch to prevent blocking\n\t\t\t\tif (!skipTelemetry) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst span = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t\t\t\t\t| Span\n\t\t\t\t\t\t\t| undefined;\n\t\t\t\t\t\tif (span) {\n\t\t\t\t\t\t\tconst errorObj =\n\t\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t\t? error\n\t\t\t\t\t\t\t\t\t: new Error(errorDetails.message);\n\n\t\t\t\t\t\t\t// Enhance error with source maps if available\n\t\t\t\t\t\t\tconst rerouteDir = '.reroute';\n\t\t\t\t\t\t\tif (rerouteDir && errorObj.stack) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait enhanceError(errorObj, { rerouteDir });\n\t\t\t\t\t\t\t\t} catch (smError) {\n\t\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\t\t'[telemetry] Sourcemap enhancement failed:',\n\t\t\t\t\t\t\t\t\t\tsmError,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tspan.recordException(errorObj);\n\t\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\t\t\t\t\tmessage: `${errorDetails.name}: ${errorDetails.message}`,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tconst enhancedError = errorObj as Error & {\n\t\t\t\t\t\t\t\tsourceMappedStack?: string;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst stackToUse =\n\t\t\t\t\t\t\t\tenhancedError.sourceMappedStack || errorDetails.stack;\n\n\t\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t'error.type': errorDetails.name,\n\t\t\t\t\t\t\t\t'error.message': errorDetails.message,\n\t\t\t\t\t\t\t\t'error.stack': errorDetails.stack,\n\t\t\t\t\t\t\t\t...(enhancedError.sourceMappedStack\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t'error.stack.decoded': enhancedError.sourceMappedStack,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t'http.response.status_code':\n\t\t\t\t\t\t\t\t\ttypeof set.status === 'number' ? set.status : 500,\n\t\t\t\t\t\t\t\t'http.duration_ms': duration,\n\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t\t...getContextAttributesForTelemetry(),\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tspan.addEvent('exception', {\n\t\t\t\t\t\t\t\t'exception.type': errorDetails.name,\n\t\t\t\t\t\t\t\t'exception.message': errorDetails.message,\n\t\t\t\t\t\t\t\t'exception.stacktrace': stackToUse,\n\t\t\t\t\t\t\t\t'exception.escaped': 'false',\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t// End the span here since onAfterResponse won't handle errors\n\t\t\t\t\t\t\tspan.end();\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (spanError) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'[telemetry] Failed to record exception in span:',\n\t\t\t\t\t\t\tspanError,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Log error - wrapped in try/catch to prevent blocking\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlogger?.emit({\n\t\t\t\t\t\t\tseverityNumber: SeverityNumber.ERROR,\n\t\t\t\t\t\t\tseverityText: 'ERROR',\n\t\t\t\t\t\t\tbody: `${errorDetails.name}: ${errorDetails.message}`,\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t'error.type': errorDetails.name,\n\t\t\t\t\t\t\t\t'error.message': errorDetails.message,\n\t\t\t\t\t\t\t\t'error.stack': errorDetails.stack,\n\t\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t\t\t\t'http.response.status_code':\n\t\t\t\t\t\t\t\t\ttypeof set.status === 'number' ? set.status : 500,\n\t\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (logError) {\n\t\t\t\t\t\tconsole.error('[telemetry] Failed to log error:', logError);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Increment error counter - wrapped in try/catch to prevent blocking\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst statusCode =\n\t\t\t\t\t\t\ttypeof set.status === 'number' ? set.status : 500;\n\t\t\t\t\t\thttpErrorCounter?.add(1, {\n\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\t'error.type': errorDetails.name,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\thttpRequestDuration?.record(duration, {\n\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (metricsError) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'[telemetry] Failed to record error metrics:',\n\t\t\t\t\t\t\tmetricsError,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Record response metrics\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response metrics recording\n\t\t\t.onAfterResponse(({ request, set, store }) => {\n\t\t\t\tconst url = new URL(request.url);\n\t\t\t\tconst pathname = url.pathname;\n\t\t\t\tconst method = request.method;\n\t\t\t\tconst statusCode = typeof set.status === 'number' ? set.status : 200;\n\t\t\t\tconst duration =\n\t\t\t\t\tDate.now() -\n\t\t\t\t\t(((store as Record<string, unknown>).startTime as number) ||\n\t\t\t\t\t\tDate.now());\n\t\t\t\tconst route =\n\t\t\t\t\t((store as Record<string, unknown>).route as string) || pathname;\n\n\t\t\t\t// Always decrement active connections for metrics accuracy\n\t\t\t\ttry {\n\t\t\t\t\tactiveConnections?.add(-1);\n\t\t\t\t\thttpActiveRequests?.add(-1, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\troute,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[telemetry] Failed to decrement active requests:',\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Skip detailed telemetry if ignored or not sampled (set in onBeforeHandle)\n\t\t\t\tconst shouldIgnoreTelemetry = (store as Record<string, unknown>)\n\t\t\t\t\t.shouldIgnoreTelemetry;\n\t\t\t\tif (shouldIgnoreTelemetry) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// End manual span with final attributes\n\t\t\t\ttry {\n\t\t\t\t\tconst span = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t\t\t\t| Span\n\t\t\t\t\t\t| undefined;\n\t\t\t\t\tif (span) {\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\t'http.duration_ms': duration,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (statusCode >= 400) {\n\t\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\t\t\t\t\t\tmessage: `HTTP ${statusCode}`,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tspan.setAttribute('error', true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.end();\n\t\t\t\t\t}\n\t\t\t\t} catch (spanError) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to end span:', spanError);\n\t\t\t\t}\n\n\t\t\t\t// Log response - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\tconst isError = statusCode >= 400;\n\t\t\t\t\tlogger?.emit({\n\t\t\t\t\t\tseverityNumber: isError\n\t\t\t\t\t\t\t? SeverityNumber.ERROR\n\t\t\t\t\t\t\t: SeverityNumber.INFO,\n\t\t\t\t\t\tseverityText: isError ? 'ERROR' : 'INFO',\n\t\t\t\t\t\tbody: `← ${method} ${route} → ${statusCode} (${duration}ms)`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t\t'http.request.url': request.url,\n\t\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t\t'http.duration_ms': duration,\n\t\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t\t\t'host.address': url.host,\n\t\t\t\t\t\t\t'service.name': SERVICE_NAME,\n\t\t\t\t\t\t\t...CUSTOM_ATTRIBUTES,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t} catch (logError) {\n\t\t\t\t\tconsole.error('[telemetry] Failed to log response:', logError);\n\t\t\t\t}\n\n\t\t\t\t// Record metrics - wrapped in try/catch to prevent blocking\n\t\t\t\ttry {\n\t\t\t\t\thttpRequestDuration?.record(duration, {\n\t\t\t\t\t\t'http.request.method': method,\n\t\t\t\t\t\t'http.route': route,\n\t\t\t\t\t\t'http.response.status_code': statusCode,\n\t\t\t\t\t\t'http.request.scheme': url.protocol.replace(':', ''),\n\t\t\t\t\t});\n\t\t\t\t} catch (metricsError) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[telemetry] Failed to record request duration:',\n\t\t\t\t\t\tmetricsError,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Optionally add error inspector endpoint for source-mapped stack traces\n\t\tif (merged.sourcemaps?.enabled !== false) {\n\t\t\tconst rerouteDir = '.reroute';\n\n\t\t\tapp.post('/__reroute_telemetry/inspect', async ({ body }) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst { stack } = body as { stack?: string };\n\t\t\t\t\tif (!stack) {\n\t\t\t\t\t\treturn { error: 'Missing stack trace' };\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { resolveStackTrace } = await import('./sourcemap');\n\t\t\t\t\tconst result = await resolveStackTrace(stack, { rerouteDir });\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\toriginal: result.original,\n\t\t\t\t\t\tmapped: result.mapped,\n\t\t\t\t\t\tframes: result.frames,\n\t\t\t\t\t};\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[telemetry] Error inspection failed:', error);\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: error instanceof Error ? error.message : 'Unknown error',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Optionally add browser telemetry proxy\n\t\tif (ENABLE_PROXY) {\n\t\t\tconst API_KEY = merged.apiKey || process.env.SIGNOZ_API_KEY;\n\n\t\t\t// Proxy handler function\n\t\t\tconst handleProxy = async (\n\t\t\t\tendpoint: string,\n\t\t\t\trequestBody: unknown,\n\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Proxy forwarding with error handling\n\t\t\t): Promise<{ status: number }> => {\n\t\t\t\tconst headers: Record<string, string> = {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t};\n\n\t\t\t\tif (API_KEY) {\n\t\t\t\t\theaders.Authorization = `Bearer ${API_KEY}`;\n\t\t\t\t}\n\n\t\t\t\t// Use custom handler if provided\n\t\t\t\tif (PROXY_HANDLER) {\n\t\t\t\t\treturn await PROXY_HANDLER({\n\t\t\t\t\t\tbody: requestBody,\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\theaders,\n\t\t\t\t\t\totlpEndpoint: OTLP_ENDPOINT,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Default handler: forward to OTLP endpoint\n\t\t\t\ttry {\n\t\t\t\t\tconst controller = new AbortController();\n\t\t\t\t\tconst timeoutId = setTimeout(() => controller.abort(), 5000);\n\n\t\t\t\t\tconst response = await fetch(`${OTLP_ENDPOINT}${endpoint}`, {\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\theaders,\n\t\t\t\t\t\tbody: JSON.stringify(requestBody),\n\t\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t\t});\n\n\t\t\t\t\tclearTimeout(timeoutId);\n\n\t\t\t\t\tif (PROXY_VERBOSE) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[telemetry-proxy]${endpoint} forwarded: ${response.status}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!response.ok && PROXY_VERBOSE) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t`[telemetry-proxy] OTLP error: ${response.status} ${response.statusText}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn { status: 200 };\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (PROXY_VERBOSE) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t`[telemetry-proxy] Failed to forward${endpoint}:`,\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn { status: 200 };\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tapp\n\t\t\t\t.post(\n\t\t\t\t\t`${PROXY_PATHNAME}/v1/traces`,\n\t\t\t\t\tasync function forwardBrowserTraces({ body }) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await handleProxy('/v1/traces', body);\n\t\t\t\t\t\t\treturn new Response(null, { status: result.status });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[telemetry-proxy] Handler error:', error);\n\t\t\t\t\t\t\treturn new Response(null, { status: 200 });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.post(\n\t\t\t\t\t`${PROXY_PATHNAME}/v1/metrics`,\n\t\t\t\t\tasync function forwardBrowserMetrics({ body }) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await handleProxy('/v1/metrics', body);\n\t\t\t\t\t\t\treturn new Response(null, { status: result.status });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[telemetry-proxy] Handler error:', error);\n\t\t\t\t\t\t\treturn new Response(null, { status: 200 });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.post(\n\t\t\t\t\t`${PROXY_PATHNAME}/v1/logs`,\n\t\t\t\t\tasync function forwardBrowserLogs({ body }) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await handleProxy('/v1/logs', body);\n\t\t\t\t\t\t\treturn new Response(null, { status: result.status });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[telemetry-proxy] Handler error:', error);\n\t\t\t\t\t\t\treturn new Response(null, { status: 200 });\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.get(`${PROXY_PATHNAME}/health`, () => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: 'ok',\n\t\t\t\t\t\totlpEndpoint: OTLP_ENDPOINT,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t}\n\n\t\treturn app;\n\t};\n}\n",
|
|
16
16
|
"export * from './context';\nexport * from './headers';\nexport * from './instrumentation';\nexport * from './plugin';\nexport * from './sourcemap';\n",
|
|
17
17
|
"export * from './src/server';\n",
|
|
18
|
-
"import type { CacheEntry } from './types';\n\n/**\n * Simple in-memory cache for SSR data.\n * Thread-safe for single-process usage.\n */\nclass SSRDataCache {\n\tprivate cache: Map<string, CacheEntry<unknown>> = new Map();\n\tprivate static cleanupInterval: NodeJS.Timeout | null = null;\n\n\tconstructor() {\n\t\t// Run cleanup every 60 seconds to remove expired entries\n\t\tif (!SSRDataCache.cleanupInterval) {\n\t\t\tSSRDataCache.cleanupInterval = setInterval(() => {\n\t\t\t\tthis.cleanup();\n\t\t\t}, 60_000);\n\t\t}\n\t}\n\n\t/**\n\t * Get cached data if available and not expired\n\t */\n\tget<T>(key: string): T | undefined {\n\t\tconst entry = this.cache.get(key);\n\t\tif (!entry) return undefined;\n\n\t\tconst age = Date.now() - entry.timestamp;\n\t\tif (age > entry.maxAge) {\n\t\t\tthis.cache.delete(key);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn entry.data as T;\n\t}\n\n\t/**\n\t * Set data in cache with maxAge (in milliseconds)\n\t */\n\tset<T>(key: string, data: T, maxAge: number): void {\n\t\tif (maxAge <= 0) return;\n\n\t\tthis.cache.set(key, {\n\t\t\tdata,\n\t\t\ttimestamp: Date.now(),\n\t\t\tmaxAge,\n\t\t});\n\t}\n\n\t/**\n\t * Check if key exists and is not expired\n\t */\n\thas(key: string): boolean {\n\t\treturn this.get(key) !== undefined;\n\t}\n\n\t/**\n\t * Clear all cached data\n\t */\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n\n\t/**\n\t * Remove expired entries\n\t */\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (now - entry.timestamp > entry.maxAge) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get cache stats (useful for debugging)\n\t */\n\tstats(): { size: number; keys: string[] } {\n\t\treturn {\n\t\t\tsize: this.cache.size,\n\t\t\tkeys: Array.from(this.cache.keys()),\n\t\t};\n\t}\n\n\t/**\n\t * Cleanup interval on shutdown\n\t */\n\tdestroy(): void {\n\t\tif (SSRDataCache.cleanupInterval) {\n\t\t\tclearInterval(SSRDataCache.cleanupInterval);\n\t\t\tSSRDataCache.cleanupInterval = null;\n\t\t}\n\t\tthis.clear();\n\t}\n}\n\n/**\n * Simple LRU Cache implementation.\n * Used for caching responses and data across requests.\n * NOTE: This does NOT support TTL - use TTLCache for time-based expiration.\n */\nexport class LRUCache<K, V> {\n\tprivate cache: Map<K, V> = new Map();\n\tprivate maxSize: number;\n\n\tconstructor(maxSize = 100) {\n\t\tthis.maxSize = maxSize;\n\t}\n\n\tget(key: K): V | undefined {\n\t\tconst value = this.cache.get(key);\n\t\tif (value !== undefined) {\n\t\t\t// Move to end (most recently used)\n\t\t\tthis.cache.delete(key);\n\t\t\tthis.cache.set(key, value);\n\t\t}\n\t\treturn value;\n\t}\n\n\tset(key: K, value: V): void {\n\t\tthis.cache.delete(key);\n\n\t\tif (this.cache.size >= this.maxSize) {\n\t\t\tconst firstKey = this.cache.keys().next().value;\n\t\t\tthis.cache.delete(firstKey as K);\n\t\t}\n\n\t\tthis.cache.set(key, value);\n\t}\n\n\thas(key: K): boolean {\n\t\treturn this.cache.has(key);\n\t}\n\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n}\n\n/**\n * TTL-based cache with automatic expiration and size limits.\n * Use this for content caching where entries should expire after a set time.\n */\nexport class TTLCache<K, V> {\n\tprivate cache: Map<K, { value: V; exp: number }> = new Map();\n\tprivate maxSize: number;\n\tprivate defaultTtlMs: number;\n\tprivate cleanupInterval: NodeJS.Timeout | null = null;\n\n\t/**\n\t * @param maxSize Maximum number of entries (default: 100)\n\t * @param defaultTtlMs Default TTL in milliseconds (default: 300000 = 5 min)\n\t * @param cleanupIntervalMs How often to run cleanup (default: 60000 = 1 min)\n\t */\n\tconstructor(\n\t\tmaxSize = 100,\n\t\tdefaultTtlMs = 300_000,\n\t\tcleanupIntervalMs = 60_000,\n\t) {\n\t\tthis.maxSize = maxSize;\n\t\tthis.defaultTtlMs = defaultTtlMs;\n\n\t\t// Periodic cleanup of expired entries\n\t\tthis.cleanupInterval = setInterval(() => {\n\t\t\tthis.cleanup();\n\t\t}, cleanupIntervalMs);\n\n\t\t// Prevent interval from keeping process alive\n\t\tif (this.cleanupInterval.unref) {\n\t\t\tthis.cleanupInterval.unref();\n\t\t}\n\t}\n\n\t/**\n\t * Get value if exists and not expired\n\t */\n\tget(key: K): V | undefined {\n\t\tconst entry = this.cache.get(key);\n\t\tif (!entry) return undefined;\n\n\t\tif (entry.exp <= Date.now()) {\n\t\t\tthis.cache.delete(key);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn entry.value;\n\t}\n\n\t/**\n\t * Set value with optional custom TTL\n\t * @param key Cache key\n\t * @param value Value to cache\n\t * @param ttlMs Optional TTL in milliseconds (uses default if not provided)\n\t */\n\tset(key: K, value: V, ttlMs?: number): void {\n\t\t// Remove existing entry
|
|
18
|
+
"import type { CacheEntry } from './types';\n\n/**\n * Simple in-memory cache for SSR data.\n * Thread-safe for single-process usage.\n */\nclass SSRDataCache {\n\tprivate cache: Map<string, CacheEntry<unknown>> = new Map();\n\tprivate static cleanupInterval: NodeJS.Timeout | null = null;\n\n\tconstructor() {\n\t\t// Run cleanup every 60 seconds to remove expired entries\n\t\tif (!SSRDataCache.cleanupInterval) {\n\t\t\tSSRDataCache.cleanupInterval = setInterval(() => {\n\t\t\t\tthis.cleanup();\n\t\t\t}, 60_000);\n\t\t}\n\t}\n\n\t/**\n\t * Get cached data if available and not expired\n\t */\n\tget<T>(key: string): T | undefined {\n\t\tconst entry = this.cache.get(key);\n\t\tif (!entry) return undefined;\n\n\t\tconst age = Date.now() - entry.timestamp;\n\t\tif (age > entry.maxAge) {\n\t\t\tthis.cache.delete(key);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn entry.data as T;\n\t}\n\n\t/**\n\t * Set data in cache with maxAge (in milliseconds)\n\t */\n\tset<T>(key: string, data: T, maxAge: number): void {\n\t\tif (maxAge <= 0) return;\n\n\t\tthis.cache.set(key, {\n\t\t\tdata,\n\t\t\ttimestamp: Date.now(),\n\t\t\tmaxAge,\n\t\t});\n\t}\n\n\t/**\n\t * Check if key exists and is not expired\n\t */\n\thas(key: string): boolean {\n\t\treturn this.get(key) !== undefined;\n\t}\n\n\t/**\n\t * Clear all cached data\n\t */\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n\n\t/**\n\t * Remove expired entries\n\t */\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (now - entry.timestamp > entry.maxAge) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get cache stats (useful for debugging)\n\t */\n\tstats(): { size: number; keys: string[] } {\n\t\treturn {\n\t\t\tsize: this.cache.size,\n\t\t\tkeys: Array.from(this.cache.keys()),\n\t\t};\n\t}\n\n\t/**\n\t * Cleanup interval on shutdown\n\t */\n\tdestroy(): void {\n\t\tif (SSRDataCache.cleanupInterval) {\n\t\t\tclearInterval(SSRDataCache.cleanupInterval);\n\t\t\tSSRDataCache.cleanupInterval = null;\n\t\t}\n\t\tthis.clear();\n\t}\n}\n\n/**\n * Simple LRU Cache implementation.\n * Used for caching responses and data across requests.\n * NOTE: This does NOT support TTL - use TTLCache for time-based expiration.\n */\nexport class LRUCache<K, V> {\n\tprivate cache: Map<K, V> = new Map();\n\tprivate maxSize: number;\n\n\tconstructor(maxSize = 100) {\n\t\tthis.maxSize = maxSize;\n\t}\n\n\tget(key: K): V | undefined {\n\t\tconst value = this.cache.get(key);\n\t\tif (value !== undefined) {\n\t\t\t// Move to end (most recently used)\n\t\t\tthis.cache.delete(key);\n\t\t\tthis.cache.set(key, value);\n\t\t}\n\t\treturn value;\n\t}\n\n\tset(key: K, value: V): void {\n\t\tthis.cache.delete(key);\n\n\t\tif (this.cache.size >= this.maxSize) {\n\t\t\tconst firstKey = this.cache.keys().next().value;\n\t\t\tthis.cache.delete(firstKey as K);\n\t\t}\n\n\t\tthis.cache.set(key, value);\n\t}\n\n\thas(key: K): boolean {\n\t\treturn this.cache.has(key);\n\t}\n\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n}\n\n/**\n * TTL-based cache with automatic expiration and size limits.\n * Use this for content caching where entries should expire after a set time.\n */\nexport class TTLCache<K, V> {\n\tprivate cache: Map<K, { value: V; exp: number; size?: number }> = new Map();\n\tprivate maxSize: number;\n\tprivate defaultTtlMs: number;\n\tprivate cleanupInterval: NodeJS.Timeout | null = null;\n\tprivate maxMemoryBytes: number | null = null;\n\tprivate currentMemoryBytes = 0;\n\n\t/**\n\t * @param maxSize Maximum number of entries (default: 100)\n\t * @param defaultTtlMs Default TTL in milliseconds (default: 300000 = 5 min)\n\t * @param cleanupIntervalMs How often to run cleanup (default: 60000 = 1 min)\n\t * @param maxMemoryMB Optional maximum memory in MB (e.g., 1000 = 1GB)\n\t */\n\tconstructor(\n\t\tmaxSize = 100,\n\t\tdefaultTtlMs = 300_000,\n\t\tcleanupIntervalMs = 60_000,\n\t\tmaxMemoryMB?: number,\n\t) {\n\t\tthis.maxSize = maxSize;\n\t\tthis.defaultTtlMs = defaultTtlMs;\n\t\tthis.maxMemoryBytes = maxMemoryMB ? maxMemoryMB * 1024 * 1024 : null;\n\n\t\t// Periodic cleanup of expired entries\n\t\tthis.cleanupInterval = setInterval(() => {\n\t\t\tthis.cleanup();\n\t\t}, cleanupIntervalMs);\n\n\t\t// Prevent interval from keeping process alive\n\t\tif (this.cleanupInterval.unref) {\n\t\t\tthis.cleanupInterval.unref();\n\t\t}\n\t}\n\n\t/**\n\t * Get value if exists and not expired\n\t */\n\tget(key: K): V | undefined {\n\t\tconst entry = this.cache.get(key);\n\t\tif (!entry) return undefined;\n\n\t\tif (entry.exp <= Date.now()) {\n\t\t\tthis.cache.delete(key);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn entry.value;\n\t}\n\n\t/**\n\t * Estimate size of value in bytes\n\t */\n\tprivate estimateSize(value: V): number {\n\t\tif (value instanceof Buffer || value instanceof ArrayBuffer) {\n\t\t\treturn value.byteLength;\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\treturn value.length * 2; // UTF-16 encoding\n\t\t}\n\t\t// For objects, use rough estimate\n\t\ttry {\n\t\t\treturn JSON.stringify(value).length * 2;\n\t\t} catch {\n\t\t\treturn 1024; // Default estimate\n\t\t}\n\t}\n\n\t/**\n\t * Set value with optional custom TTL\n\t * @param key Cache key\n\t * @param value Value to cache\n\t * @param ttlMs Optional TTL in milliseconds (uses default if not provided)\n\t */\n\tset(key: K, value: V, ttlMs?: number): void {\n\t\t// Calculate size of new entry\n\t\tconst entrySize = this.estimateSize(value);\n\n\t\t// Remove existing entry and update memory tracking\n\t\tconst existing = this.cache.get(key);\n\t\tif (existing) {\n\t\t\tthis.cache.delete(key);\n\t\t\tif (existing.size) {\n\t\t\t\tthis.currentMemoryBytes -= existing.size;\n\t\t\t}\n\t\t}\n\n\t\t// Evict entries if over memory limit\n\t\tif (\n\t\t\tthis.maxMemoryBytes &&\n\t\t\tthis.currentMemoryBytes + entrySize > this.maxMemoryBytes\n\t\t) {\n\t\t\tthis.evictForMemory(entrySize);\n\t\t}\n\n\t\t// Evict oldest entry if at capacity\n\t\tif (this.cache.size >= this.maxSize) {\n\t\t\tconst firstKey = this.cache.keys().next().value;\n\t\t\tif (firstKey !== undefined) {\n\t\t\t\tconst evicted = this.cache.get(firstKey);\n\t\t\t\tthis.cache.delete(firstKey);\n\t\t\t\tif (evicted?.size) {\n\t\t\t\t\tthis.currentMemoryBytes -= evicted.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.cache.set(key, {\n\t\t\tvalue,\n\t\t\texp: Date.now() + (ttlMs ?? this.defaultTtlMs),\n\t\t\tsize: entrySize,\n\t\t});\n\t\tthis.currentMemoryBytes += entrySize;\n\t}\n\n\t/**\n\t * Check if key exists and is not expired\n\t */\n\thas(key: K): boolean {\n\t\treturn this.get(key) !== undefined;\n\t}\n\n\t/**\n\t * Evict entries to free up memory\n\t */\n\tprivate evictForMemory(neededBytes: number): void {\n\t\tif (!this.maxMemoryBytes) return;\n\t\tconst targetBytes = this.maxMemoryBytes * 0.7; // Evict down to 70%\n\t\tconst keys = Array.from(this.cache.keys());\n\n\t\tfor (const key of keys) {\n\t\t\tif (this.currentMemoryBytes + neededBytes <= targetBytes) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst entry = this.cache.get(key);\n\t\t\tif (entry) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\tif (entry.size) {\n\t\t\t\t\tthis.currentMemoryBytes -= entry.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Delete a specific key\n\t */\n\tdelete(key: K): boolean {\n\t\tconst entry = this.cache.get(key);\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted && entry?.size) {\n\t\t\tthis.currentMemoryBytes -= entry.size;\n\t\t}\n\t\treturn deleted;\n\t}\n\n\t/**\n\t * Clear all entries\n\t */\n\tclear(): void {\n\t\tthis.cache.clear();\n\t\tthis.currentMemoryBytes = 0;\n\t}\n\n\t/**\n\t * Get current cache size (including potentially expired entries)\n\t */\n\tget size(): number {\n\t\treturn this.cache.size;\n\t}\n\n\t/**\n\t * Get cache statistics including memory usage\n\t */\n\tstats(): {\n\t\tentries: number;\n\t\tmemoryMB: number;\n\t\tmaxMemoryMB: number | null;\n\t\tmemoryUsagePercent: number | null;\n\t} {\n\t\tconst memoryMB = this.currentMemoryBytes / (1024 * 1024);\n\t\tconst maxMemoryMB = this.maxMemoryBytes\n\t\t\t? this.maxMemoryBytes / (1024 * 1024)\n\t\t\t: null;\n\t\tconst memoryUsagePercent = maxMemoryMB\n\t\t\t? (memoryMB / maxMemoryMB) * 100\n\t\t\t: null;\n\n\t\treturn {\n\t\t\tentries: this.cache.size,\n\t\t\tmemoryMB: Math.round(memoryMB * 100) / 100,\n\t\t\tmaxMemoryMB: maxMemoryMB ? Math.round(maxMemoryMB) : null,\n\t\t\tmemoryUsagePercent: memoryUsagePercent\n\t\t\t\t? Math.round(memoryUsagePercent)\n\t\t\t\t: null,\n\t\t};\n\t}\n\n\t/**\n\t * Remove expired entries\n\t */\n\tprivate cleanup(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (entry.exp <= now) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\tif (entry.size) {\n\t\t\t\t\tthis.currentMemoryBytes -= entry.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Stop cleanup interval (call on shutdown)\n\t */\n\tdestroy(): void {\n\t\tif (this.cleanupInterval) {\n\t\t\tclearInterval(this.cleanupInterval);\n\t\t\tthis.cleanupInterval = null;\n\t\t}\n\t\tthis.clear();\n\t}\n}\n\n// Global singleton instances using globalThis for hot reload survival\nconst getGlobalCache = (): SSRDataCache => {\n\tconst g = globalThis as typeof globalThis & {\n\t\t__REROUTE_SSR_CACHE__?: SSRDataCache;\n\t};\n\n\tif (!g.__REROUTE_SSR_CACHE__) {\n\t\tg.__REROUTE_SSR_CACHE__ = new SSRDataCache();\n\t}\n\n\treturn g.__REROUTE_SSR_CACHE__;\n};\n\nconst getGlobalStatusCache = (): SSRDataCache => {\n\tconst g = globalThis as typeof globalThis & {\n\t\t__REROUTE_STATUS_CACHE__?: SSRDataCache;\n\t};\n\n\tif (!g.__REROUTE_STATUS_CACHE__) {\n\t\tg.__REROUTE_STATUS_CACHE__ = new SSRDataCache();\n\t}\n\n\treturn g.__REROUTE_STATUS_CACHE__;\n};\n\nconst ssrCache = getGlobalCache();\nconst statusCache = getGlobalStatusCache();\n\nexport { ssrCache, statusCache, SSRDataCache };\n",
|
|
19
19
|
"import { pathToFileURL } from 'node:url';\nimport type { Doc } from './types';\n\n/**\n * Dynamically import a module with optional cache busting for watch mode.\n * Centralizes the common pattern of importing with timestamp query params.\n */\nexport async function dynamicImport<T = Doc>(\n\tabsolutePath: string,\n\tisWatchMode: boolean,\n): Promise<T> {\n\tconst href = pathToFileURL(absolutePath).href;\n\tconst url = isWatchMode ? `${href}?t=${Date.now()}` : href;\n\treturn (await import(url)) as T;\n}\n\n/**\n * Check if a value is a thenable (Promise-like object)\n */\nexport function isThenable(value: unknown): value is Promise<unknown> {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\ttypeof (value as { then?: unknown }).then === 'function'\n\t);\n}\n\n/**\n * Convert a value to a Promise if it isn't already\n */\nexport function toPromise<T>(input: T | Promise<T>): Promise<T> {\n\treturn input instanceof Promise ? input : Promise.resolve(input);\n}\n",
|
|
20
20
|
"import { dynamicImport } from './imports';\nimport { join } from './path';\nimport type { Doc } from './types';\n\n/**\n * Load content collections for SSR rendering\n */\nexport async function loadCollections(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Record<string, unknown[]>> {\n\ttry {\n\t\tconst p = join(cwd, '.reroute', 'content.ts');\n\t\tconst mod = await dynamicImport(p, isWatchMode);\n\t\treturn (mod?.byCollection || {}) as Record<string, unknown[]>;\n\t} catch {\n\t\treturn {};\n\t}\n}\n\n/**\n * Set global collections for SSR\n */\nexport function setGlobalCollections(\n\tbyCollectionForSSR: Record<string, unknown[]>,\n): void {\n\ttry {\n\t\t(globalThis as Doc).__REROUTE_COLLECTIONS__ = byCollectionForSSR;\n\t} catch {\n\t\t// Ignore errors in restricted environments\n\t}\n}\n",
|
|
21
21
|
"export function getMimeType(filePath: string): string {\n\tconst ext = filePath.split('.').pop()?.toLowerCase();\n\tconst mimeTypes: Record<string, string> = {\n\t\thtml: 'text/html',\n\t\tcss: 'text/css',\n\t\tjs: 'application/javascript',\n\t\tts: 'application/javascript',\n\t\tjson: 'application/json',\n\t\tpng: 'image/png',\n\t\tjpg: 'image/jpeg',\n\t\tjpeg: 'image/jpeg',\n\t\tgif: 'image/gif',\n\t\tsvg: 'image/svg+xml',\n\t\tico: 'image/x-icon',\n\t\twoff: 'font/woff',\n\t\twoff2: 'font/woff2',\n\t\tttf: 'font/ttf',\n\t};\n\treturn mimeTypes[ext || ''] || 'application/octet-stream';\n}\n\nexport function isCompressible(contentType: string): boolean {\n\tif (!contentType) return false;\n\tconst ct = contentType.split(';')[0].trim();\n\treturn (\n\t\tct.startsWith('text/') ||\n\t\tct === 'application/javascript' ||\n\t\tct === 'application/json' ||\n\t\tct === 'application/xml' ||\n\t\tct === 'image/svg+xml' ||\n\t\t// Compress TTF and WOFF fonts (50-60% reduction for TTF)\n\t\t// WOFF2 is already highly compressed, so skip it to avoid overhead\n\t\tct === 'font/ttf' ||\n\t\tct === 'font/woff'\n\t);\n}\n",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"export * from './lib';\nexport * from './render';\nexport * from './stream';\n",
|
|
66
66
|
"export * from './bundler';\nexport * from './config';\nexport * from './content';\nexport * from './llms';\nexport * from './og';\nexport * from './robots';\nexport * from './rss';\nexport * from './sitemap';\nexport * from './ssr';\n",
|
|
67
67
|
"export * from './src';\n",
|
|
68
|
-
"// 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 { discoverCollections, loadConfig, TTLCache } 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\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\tconst ogCache = new TTLCache<string, Buffer>(100, serverTtlMs);\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,\n\t\t};\n\t\tconst reloadEncoder = new TextEncoder();\n\t\tconst reloadMessage = reloadEncoder.encode('data: reload\\n\\n');\n\t\tconst rebuildingMessage = reloadEncoder.encode('data: rebuilding\\n\\n');\n\n\t\tconst notifyReload = () => {\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(reloadMessage);\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 = true;\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\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', () => {\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[reroute] Reload notification received, notifying ${liveReloadState.clients.size} browser(s)...`,\n\t\t\t\t);\n\t\t\t\tnotifyReload();\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\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, inlineTailwindCSS, loadIndexHtml } = await import(\n\t\t\t'reroute-js/core'\n\t\t);\n\t\tconst startupCollections = await loadCollections(cwd, isWatchMode);\n\t\tconst startupTailwindCSS = await inlineTailwindCSS(\n\t\t\tclientDir,\n\t\t\tfalse,\n\t\t\tisWatchMode,\n\t\t);\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 getTailwindCSS = isWatchMode\n\t\t\t? () => inlineTailwindCSS(clientDir, false, isWatchMode) // Reload in dev\n\t\t\t: async () => startupTailwindCSS; // 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\tgetTailwindCSS,\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",
|
|
68
|
+
"// 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 { discoverCollections, loadConfig, TTLCache } 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\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>(\n\t\t\t1000,\n\t\t\tserverTtlMs,\n\t\t\t60_000,\n\t\t\t1000,\n\t\t);\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,\n\t\t};\n\t\tconst reloadEncoder = new TextEncoder();\n\t\tconst reloadMessage = reloadEncoder.encode('data: reload\\n\\n');\n\t\tconst rebuildingMessage = reloadEncoder.encode('data: rebuilding\\n\\n');\n\n\t\tconst notifyReload = () => {\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(reloadMessage);\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 = true;\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\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', () => {\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[reroute] Reload notification received, notifying ${liveReloadState.clients.size} browser(s)...`,\n\t\t\t\t);\n\t\t\t\tnotifyReload();\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\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, inlineTailwindCSS, loadIndexHtml } = await import(\n\t\t\t'reroute-js/core'\n\t\t);\n\t\tconst startupCollections = await loadCollections(cwd, isWatchMode);\n\t\tconst startupTailwindCSS = await inlineTailwindCSS(\n\t\t\tclientDir,\n\t\t\tfalse,\n\t\t\tisWatchMode,\n\t\t);\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 getTailwindCSS = isWatchMode\n\t\t\t? () => inlineTailwindCSS(clientDir, false, isWatchMode) // Reload in dev\n\t\t\t: async () => startupTailwindCSS; // 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\tgetTailwindCSS,\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",
|
|
69
69
|
"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",
|
|
70
70
|
"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 Tailwind CSS with proper cache-busting in dev mode\n\tapp.get('/.reroute/theme.css', async ({ headers }) => {\n\t\tconst filePath = join(cwd, '.reroute', 'theme.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",
|
|
71
71
|
"/**\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",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"// 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",
|
|
78
78
|
"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\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\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",
|
|
79
79
|
"/**\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",
|
|
80
|
-
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tDefaultOGTemplate,\n\textractParamsFromPath,\n\tfindOGImageForPath,\n\tloadOGImageComponent,\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 loadOgImageFromRoute(\n\t_cwd: string,\n\tclientDir: string,\n\tpathname: string,\n\tisWatchMode: boolean,\n): Promise<{ meta?: Any; ogImage?: Any }> {\n\ttry {\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\t// Find the route that matches this pathname\n\t\t\tconst matchedRoute = routesGlobal.find((r: Any) => {\n\t\t\t\t// For dynamic routes, we need to match patterns\n\t\t\t\tif (r.isDynamic) {\n\t\t\t\t\t// Convert pattern like \"/blog/:slug\" to match \"/blog/anything\"\n\t\t\t\t\tconst pattern = r.pattern.replace(/:[^/]+/g, '[^/]+');\n\t\t\t\t\tconst regex = new RegExp(`^${pattern}$`);\n\t\t\t\t\treturn regex.test(pathname);\n\t\t\t\t}\n\t\t\t\t// For static routes, exact match\n\t\t\t\treturn r.pattern === pathname;\n\t\t\t});\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\t// Development mode: try to load from source files\n\t\tconst { pathToFileURL } = await import('node:url');\n\t\tconst { existsSync } = await import('node:fs');\n\n\t\t// Convert pathname to route file path\n\t\t// \"/\" -> \"index.tsx\", \"/about\" -> \"about.tsx\" or \"about/index.tsx\"\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst cleanPath =\n\t\t\tpathnameOnly === '/'\n\t\t\t\t? 'index'\n\t\t\t\t: pathnameOnly.replace(/^\\//, '').replace(/\\/$/, '');\n\n\t\t// Try multiple possible file locations\n\t\tconst possiblePaths = [\n\t\t\t`${clientDir}/routes/${cleanPath}.tsx`,\n\t\t\t`${clientDir}/routes/${cleanPath}/index.tsx`,\n\t\t\t`${clientDir}/routes/${cleanPath}.ts`,\n\t\t\t`${clientDir}/routes/${cleanPath}/index.ts`,\n\t\t];\n\n\t\tfor (const routePath of possiblePaths) {\n\t\t\tif (existsSync(routePath)) {\n\t\t\t\tconst routeMod = await import(\n\t\t\t\t\tpathToFileURL(routePath).href +\n\t\t\t\t\t\t(isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t\t);\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\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\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// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: OG image generation requires handling multiple font loading paths and metadata sources\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// Load custom fonts if configured\n\t\tlet fonts: OGImageFont[] | undefined;\n\t\tif (ogConfig.fonts && ogConfig.fonts.length > 0) {\n\t\t\tconst { join, dirname } = await import('node:path');\n\t\t\tconst { existsSync } = await import('node:fs');\n\n\t\t\tconst loadedFonts: OGImageFont[] = [];\n\n\t\t\t// In compiled binary mode, cwd is the directory containing the binary\n\t\t\t// We need to look for .reroute folder relative to the binary location\n\t\t\tconst isCompiledBinary =\n\t\t\t\ttypeof Bun !== 'undefined' &&\n\t\t\t\tprocess.argv[0]?.endsWith(process.argv[1]);\n\t\t\tconst baseDir = isCompiledBinary ? dirname(process.argv[1]) : cwd;\n\n\t\t\tfor (const font of ogConfig.fonts) {\n\t\t\t\ttry {\n\t\t\t\t\t// Extract relative path from various possible prefixes\n\t\t\t\t\tconst fontRelativePath = font.path\n\t\t\t\t\t\t.replace(/^(\\.\\/)?src\\/client\\/assets\\//, '')\n\t\t\t\t\t\t.replace(/^assets\\//, '');\n\n\t\t\t\t\t// Try multiple locations for font files:\n\t\t\t\t\t// 1. Dev mode: src/client/assets/{path} (source location)\n\t\t\t\t\t// 2. Prod mode (standalone binary): .reroute/assets/{path} (relative to binary)\n\t\t\t\t\t// 3. Prod mode (regular): .reroute/assets/{path} (relative to cwd)\n\t\t\t\t\t// 4. Custom path from config (relative to cwd)\n\t\t\t\t\tconst possiblePaths = [\n\t\t\t\t\t\tjoin(clientDir, 'assets', fontRelativePath),\n\t\t\t\t\t\tjoin(baseDir, '.reroute', 'assets', fontRelativePath),\n\t\t\t\t\t\tjoin(cwd, '.reroute', 'assets', fontRelativePath),\n\t\t\t\t\t\tjoin(cwd, font.path),\n\t\t\t\t\t\tjoin(baseDir, font.path),\n\t\t\t\t\t];\n\n\t\t\t\t\tlet loaded = false;\n\t\t\t\t\tfor (const fontPath of possiblePaths) {\n\t\t\t\t\t\tif (existsSync(fontPath)) {\n\t\t\t\t\t\t\tconst fontFile = Bun.file(fontPath);\n\t\t\t\t\t\t\tconst data = await fontFile.arrayBuffer();\n\t\t\t\t\t\t\tloadedFonts.push({\n\t\t\t\t\t\t\t\tname: font.name,\n\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t\tweight: font.weight || 400,\n\t\t\t\t\t\t\t\tstyle: font.style || 'normal',\n\t\t\t\t\t\t\t\tpath: fontPath,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tloaded = true;\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`[reroute/og] Loaded font: ${font.name} from ${fontPath}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!loaded) {\n\t\t\t\t\t\tconsole.warn(`[reroute/og] Font file not found: ${font.path}`);\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`[reroute/og] Tried paths: ${possiblePaths.join(', ')}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.warn(`[reroute/og] Failed to load font ${font.path}:`, error);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (loadedFonts.length > 0) {\n\t\t\t\tfonts = loadedFonts;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'[reroute/og] No fonts could be loaded, using empty fonts array',\n\t\t\t\t);\n\t\t\t\t// Always provide fonts array (even if empty) to prevent @vercel/og from\n\t\t\t\t// trying to load default fonts from hardcoded paths\n\t\t\t\tfonts = [];\n\t\t\t}\n\t\t} else {\n\t\t\t// No fonts configured - provide empty array to prevent @vercel/og default font loading\n\t\t\tfonts = [];\n\t\t}\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\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\t// Check cache first\n\t\t\tconst cachedResponse = checkOgCache(pathname, set);\n\t\t\tif (cachedResponse) return cachedResponse;\n\n\t\t\t// Check if already generating - if so, wait for it\n\t\t\tconst existingGeneration = generatingImages.get(pathname);\n\t\t\tif (existingGeneration) {\n\t\t\t\tawait existingGeneration;\n\t\t\t\t// After waiting, check cache again\n\t\t\t\tconst cachedAfterWait = checkOgCache(pathname, set);\n\t\t\t\tif (cachedAfterWait) return cachedAfterWait;\n\t\t\t}\n\n\t\t\t// Start generation and wait for it to complete\n\t\t\tconst generationPromise = generateOgImage(\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tcwd,\n\t\t\t\tisWatchMode,\n\t\t\t\togConfig,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t);\n\n\t\t\tgeneratingImages.set(pathname, generationPromise);\n\n\t\t\ttry {\n\t\t\t\tawait generationPromise;\n\t\t\t\tconsole.log(`[reroute/og] Generated image for: ${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} finally {\n\t\t\t\tgeneratingImages.delete(pathname);\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",
|
|
80
|
+
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tDefaultOGTemplate,\n\textractParamsFromPath,\n\tfindOGImageForPath,\n\tloadOGImageComponent,\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 loadOgImageFromRoute(\n\t_cwd: string,\n\tclientDir: string,\n\tpathname: string,\n\tisWatchMode: boolean,\n): Promise<{ meta?: Any; ogImage?: Any }> {\n\ttry {\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\t// Find the route that matches this pathname\n\t\t\tconst matchedRoute = routesGlobal.find((r: Any) => {\n\t\t\t\t// For dynamic routes, we need to match patterns\n\t\t\t\tif (r.isDynamic) {\n\t\t\t\t\t// Convert pattern like \"/blog/:slug\" to match \"/blog/anything\"\n\t\t\t\t\tconst pattern = r.pattern.replace(/:[^/]+/g, '[^/]+');\n\t\t\t\t\tconst regex = new RegExp(`^${pattern}$`);\n\t\t\t\t\treturn regex.test(pathname);\n\t\t\t\t}\n\t\t\t\t// For static routes, exact match\n\t\t\t\treturn r.pattern === pathname;\n\t\t\t});\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\t// Development mode: try to load from source files\n\t\tconst { pathToFileURL } = await import('node:url');\n\t\tconst { existsSync } = await import('node:fs');\n\n\t\t// Convert pathname to route file path\n\t\t// \"/\" -> \"index.tsx\", \"/about\" -> \"about.tsx\" or \"about/index.tsx\"\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst cleanPath =\n\t\t\tpathnameOnly === '/'\n\t\t\t\t? 'index'\n\t\t\t\t: pathnameOnly.replace(/^\\//, '').replace(/\\/$/, '');\n\n\t\t// Try multiple possible file locations\n\t\tconst possiblePaths = [\n\t\t\t`${clientDir}/routes/${cleanPath}.tsx`,\n\t\t\t`${clientDir}/routes/${cleanPath}/index.tsx`,\n\t\t\t`${clientDir}/routes/${cleanPath}.ts`,\n\t\t\t`${clientDir}/routes/${cleanPath}/index.ts`,\n\t\t];\n\n\t\tfor (const routePath of possiblePaths) {\n\t\t\tif (existsSync(routePath)) {\n\t\t\t\tconst routeMod = await import(\n\t\t\t\t\tpathToFileURL(routePath).href +\n\t\t\t\t\t\t(isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t\t);\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\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\tfunction validatePathname(pathname: string): boolean {\n\t\tconst encodingDepth = (pathname.match(/%25/g) || []).length;\n\t\treturn encodingDepth <= 3 && pathname.length <= 500;\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",
|
|
81
81
|
"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",
|
|
82
82
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tdiscoverRobotsData,\n\tgenerateRobots,\n\ttype RedirectRule,\n\ttype RobotsOptions,\n\ttype SitemapOptions,\n\ttype TTLCache,\n} from 'reroute-js/core';\nimport { textResponse } from '../libs/response';\n\ntype RobotsRouteOptions = {\n\tcwd: string;\n\tmaxAge: number;\n\tisWatchMode: boolean;\n\trobotsCache: TTLCache<string, string>;\n\trobotsConfig: RobotsOptions;\n\tsitemapConfig?: SitemapOptions;\n\tsitemapEnabled: boolean;\n\tredirects?: RedirectRule[];\n};\n\nexport function registerRobotsRoute(\n\tapp: Elysia,\n\toptions: RobotsRouteOptions,\n): Elysia {\n\tconst {\n\t\tcwd,\n\t\tmaxAge,\n\t\tisWatchMode,\n\t\trobotsCache,\n\t\trobotsConfig,\n\t\tsitemapConfig,\n\t\tsitemapEnabled,\n\t\tredirects,\n\t} = options;\n\n\tapp.get('/robots.txt', async () => {\n\t\ttry {\n\t\t\tconst cached = robotsCache.get('robots:main');\n\t\t\tif (cached) {\n\t\t\t\treturn textResponse(cached, { maxAge, cacheStatus: 'HIT' });\n\t\t\t}\n\n\t\t\tconst discovery = await discoverRobotsData(\n\t\t\t\tcwd,\n\t\t\t\tisWatchMode,\n\t\t\t\trobotsConfig,\n\t\t\t\tsitemapConfig,\n\t\t\t\tredirects,\n\t\t\t);\n\n\t\t\tconst txt = generateRobots(discovery, robotsConfig, sitemapEnabled);\n\n\t\t\trobotsCache.set('robots:main', txt);\n\n\t\t\treturn textResponse(txt, { maxAge, cacheStatus: 'MISS' });\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to generate robots.txt:', error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\treturn app;\n}\n",
|
|
83
83
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\ttype Doc,\n\tdiscoverRSSData,\n\tdiscoverSSRDataFeedItems,\n\tgenerateFeed,\n\tjoin,\n\ttype RSSFeed,\n\ttype RSSOptions,\n\tTTLCache,\n\ttype TTLCache as TTLCacheType,\n} from 'reroute-js/core';\nimport { toTTL } from '../libs/caching';\nimport { feedResponse } from '../libs/response';\n\ntype RSSRouteOptions = {\n\tcwd: string;\n\tclientDir: string;\n\tcollections: string[];\n\tbaseUrl: string;\n\tmaxAge: number;\n\tisWatchMode: boolean;\n\trssCache: TTLCacheType<string, string>;\n\trssConfig?: RSSOptions;\n};\n\n// Cache discovery results separately (structure of feeds, not content)\n// This has a much longer TTL since route structure rarely changes (5 minutes)\nconst rssDiscoveryCache = new TTLCache<\n\tstring,\n\tAwaited<ReturnType<typeof discoverRSSData>>\n>(1, 5 * 60 * 1000);\n\nasync function getOrDiscoverRSSData(\n\tcwd: string,\n\tcollections: string[],\n\tbaseUrl: string,\n\tisWatchMode: boolean,\n\trssConfig?: RSSOptions,\n): Promise<Awaited<ReturnType<typeof discoverRSSData>>> {\n\t// In dev mode, always rediscover (files can change)\n\tif (isWatchMode) {\n\t\treturn discoverRSSData(cwd, collections, baseUrl, isWatchMode, rssConfig);\n\t}\n\n\t// In production, cache discovery (TTLCache handles expiration)\n\tconst cacheKey = 'rss:discovery';\n\tconst cached = rssDiscoveryCache.get(cacheKey);\n\tif (cached) return cached;\n\n\tconst discovery = await discoverRSSData(\n\t\tcwd,\n\t\tcollections,\n\t\tbaseUrl,\n\t\tisWatchMode,\n\t\trssConfig,\n\t);\n\n\trssDiscoveryCache.set(cacheKey, discovery);\n\treturn discovery;\n}\n\nfunction createFeedTitle(\n\tconfigTitle: string | undefined,\n\tname: string,\n): string {\n\treturn configTitle ?? `${name.charAt(0).toUpperCase() + name.slice(1)} Feed`;\n}\n\nasync function discoverSSRRoutes(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Array<{ pattern: string; path: string; isLayout?: boolean }>> {\n\ttry {\n\t\tconst { discoverSitemapData } = await import('reroute-js/core');\n\t\tconst sitemapData = await discoverSitemapData(cwd, [], '', isWatchMode);\n\t\tconst staticRoutes = sitemapData.staticRoutes\n\t\t\t.filter((r) => !r.pattern.includes(':'))\n\t\t\t.map((r) => ({ pattern: r.pattern, path: r.path }));\n\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\tconst routesMod = await import(\n\t\t\t`${Bun.pathToFileURL(routesPath).href}${isWatchMode ? `?t=${Date.now()}` : ''}`\n\t\t);\n\t\tconst layouts = routesMod.layouts ?? [];\n\n\t\tfor (const layout of layouts) {\n\t\t\tconst pattern = String(layout?.pattern ?? '/');\n\t\t\tconst path = String(layout?.path ?? '');\n\t\t\tif (path && pattern !== '/') {\n\t\t\t\tstaticRoutes.push({ pattern, path });\n\t\t\t}\n\t\t}\n\n\t\treturn staticRoutes;\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nasync function registerMainFeedRoute(\n\tapp: Elysia,\n\tcwd: string,\n\tcollections: string[],\n\tbaseUrl: string,\n\tisWatchMode: boolean,\n\trssCache: TTLCacheType<string, string>,\n\tformat: 'rss' | 'atom',\n\tlimit: number,\n\tmaxAge: number,\n\t_ttlMs: number,\n\tfeedTitle: string,\n\tfeedDescription: string,\n\trssConfig: RSSOptions | undefined,\n) {\n\tapp.get('/feed.xml', async () => {\n\t\ttry {\n\t\t\tconst cached = rssCache.get('rss:main');\n\t\t\tif (cached) {\n\t\t\t\treturn feedResponse(cached, format, { maxAge, cacheStatus: 'HIT' });\n\t\t\t}\n\n\t\t\tconst discovery = await getOrDiscoverRSSData(\n\t\t\t\tcwd,\n\t\t\t\tcollections,\n\t\t\t\tbaseUrl,\n\t\t\t\tisWatchMode,\n\t\t\t\trssConfig,\n\t\t\t);\n\n\t\t\tconst allItems = [\n\t\t\t\t...Array.from(discovery.collections.values()).flat(),\n\t\t\t\t...Array.from(discovery.ssrDataFeeds.values()).flat(),\n\t\t\t].sort((a, b) => {\n\t\t\t\tif (!a.pubDate) return 1;\n\t\t\t\tif (!b.pubDate) return -1;\n\t\t\t\treturn new Date(b.pubDate).getTime() - new Date(a.pubDate).getTime();\n\t\t\t});\n\n\t\t\tconst feed: RSSFeed = {\n\t\t\t\ttitle: feedTitle,\n\t\t\t\tlink: `${baseUrl}/feed.xml`,\n\t\t\t\tdescription: feedDescription,\n\t\t\t\titems: allItems,\n\t\t\t};\n\n\t\t\tconst xml = generateFeed(feed, { format, limit });\n\t\t\trssCache.set('rss:main', xml);\n\n\t\t\treturn feedResponse(xml, format, { maxAge, cacheStatus: 'MISS' });\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to generate main feed:', error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n}\n\nfunction registerCollectionFeedRoutes(\n\tapp: Elysia,\n\tcollections: string[],\n\toptions: {\n\t\tcwd: string;\n\t\tclientDir: string;\n\t\tbaseUrl: string;\n\t\tisWatchMode: boolean;\n\t\trssCache: TTLCacheType<string, string>;\n\t\tformat: 'rss' | 'atom';\n\t\tlimit: number;\n\t\tmaxAge: number;\n\t\tttlMs: number;\n\t\trssConfig: RSSOptions | undefined;\n\t\tavailableFeeds: string[];\n\t},\n) {\n\tfor (const collection of collections) {\n\t\toptions.availableFeeds.push(`/${collection}/feed.xml`);\n\n\t\tapp.get(`/${collection}/feed.xml`, async () => {\n\t\t\tconst cacheKey = `rss:${collection}`;\n\n\t\t\ttry {\n\t\t\t\tconst cached = options.rssCache.get(cacheKey);\n\t\t\t\tif (cached) {\n\t\t\t\t\treturn feedResponse(cached, options.format, {\n\t\t\t\t\t\tmaxAge: options.maxAge,\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 discovery = await getOrDiscoverRSSData(\n\t\t\t\t\toptions.cwd,\n\t\t\t\t\t[collection],\n\t\t\t\t\toptions.baseUrl,\n\t\t\t\t\toptions.isWatchMode,\n\t\t\t\t\toptions.rssConfig,\n\t\t\t\t);\n\n\t\t\t\tconst items = discovery.collections.get(collection) ?? [];\n\t\t\t\tif (items.length === 0) throw new NotFoundError();\n\n\t\t\t\tconst feed: RSSFeed = {\n\t\t\t\t\ttitle: createFeedTitle(options.rssConfig?.title, collection),\n\t\t\t\t\tlink: `${options.baseUrl}/${collection}/feed.xml`,\n\t\t\t\t\tdescription:\n\t\t\t\t\t\toptions.rssConfig?.description ?? `Latest ${collection} updates`,\n\t\t\t\t\titems,\n\t\t\t\t};\n\n\t\t\t\tconst xml = generateFeed(feed, {\n\t\t\t\t\tformat: options.format,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t});\n\t\t\t\toptions.rssCache.set(cacheKey, xml);\n\n\t\t\t\treturn feedResponse(xml, options.format, {\n\t\t\t\t\tmaxAge: options.maxAge,\n\t\t\t\t\tcacheStatus: 'MISS',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof NotFoundError) throw error;\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[reroute] Failed to generate ${collection} feed:`,\n\t\t\t\t\terror,\n\t\t\t\t);\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\t\t});\n\t}\n}\n\nasync function discoverRoutesWithFeeds(\n\tssrDataRoutes: Array<{ pattern: string; path: string; isLayout?: boolean }>,\n\tcollections: string[],\n\toptions: {\n\t\tcwd: string;\n\t\tclientDir: string;\n\t\tbaseUrl: string;\n\t\tisWatchMode: boolean;\n\t\trssConfig: RSSOptions | undefined;\n\t\tavailableFeeds: string[];\n\t},\n): Promise<Array<{ pattern: string; path: string; isLayout?: boolean }>> {\n\tconst routesWithFeeds: typeof ssrDataRoutes = [];\n\n\tfor (const route of ssrDataRoutes) {\n\t\tconst routeName = route.pattern.replace(/^\\//, '') || 'index';\n\t\tif (routeName === 'index' || collections.includes(routeName)) continue;\n\t\tif (options.rssConfig?.excludeRoutes?.includes(route.pattern)) continue;\n\n\t\ttry {\n\t\t\tconst items = await discoverSSRDataFeedItems(\n\t\t\t\toptions.cwd,\n\t\t\t\troute.pattern,\n\t\t\t\troute.path,\n\t\t\t\toptions.isWatchMode,\n\t\t\t\toptions.baseUrl,\n\t\t\t\toptions.rssConfig,\n\t\t\t);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\troutesWithFeeds.push(route);\n\t\t\t\toptions.availableFeeds.push(`${route.pattern}/feed.xml`);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Skip routes that error during discovery\n\t\t}\n\t}\n\n\treturn routesWithFeeds;\n}\n\nasync function generateSSRDataFeed(\n\troute: { pattern: string; path: string; isLayout?: boolean },\n\toptions: {\n\t\tcwd: string;\n\t\tbaseUrl: string;\n\t\tisWatchMode: boolean;\n\t\trssCache: TTLCacheType<string, string>;\n\t\tformat: 'rss' | 'atom';\n\t\tlimit: number;\n\t\tmaxAge: number;\n\t\tttlMs: number;\n\t\trssConfig: RSSOptions | undefined;\n\t},\n): Promise<Response> {\n\tconst routeName = route.pattern.replace(/^\\//, '') || 'index';\n\tconst cacheKey = `rss:${routeName}`;\n\n\tconst cached = options.rssCache.get(cacheKey);\n\tif (cached) {\n\t\treturn feedResponse(cached, options.format, {\n\t\t\tmaxAge: options.maxAge,\n\t\t\tcacheStatus: 'HIT',\n\t\t});\n\t}\n\n\tlet items = await discoverSSRDataFeedItems(\n\t\toptions.cwd,\n\t\troute.pattern,\n\t\troute.path,\n\t\toptions.isWatchMode,\n\t\toptions.baseUrl,\n\t\toptions.rssConfig,\n\t);\n\n\tif (items.length === 0 && route.isLayout) {\n\t\tconst discovery = await getOrDiscoverRSSData(\n\t\t\toptions.cwd,\n\t\t\t[],\n\t\t\toptions.baseUrl,\n\t\t\toptions.isWatchMode,\n\t\t\toptions.rssConfig,\n\t\t);\n\t\titems = discovery.ssrDataFeeds.get(route.pattern) ?? [];\n\t}\n\n\tif (items.length === 0) throw new NotFoundError();\n\n\tconst feed: RSSFeed = {\n\t\ttitle: createFeedTitle(options.rssConfig?.title, routeName),\n\t\tlink: `${options.baseUrl}${route.pattern}/feed.xml`,\n\t\tdescription:\n\t\t\toptions.rssConfig?.description ?? `Latest ${routeName} updates`,\n\t\titems,\n\t};\n\n\tconst xml = generateFeed(feed, {\n\t\tformat: options.format,\n\t\tlimit: options.limit,\n\t});\n\toptions.rssCache.set(cacheKey, xml);\n\n\treturn feedResponse(xml, options.format, {\n\t\tmaxAge: options.maxAge,\n\t\tcacheStatus: 'MISS',\n\t});\n}\n\nfunction registerSSRDataFeedRoutes(\n\tapp: Elysia,\n\troutesWithFeeds: Array<{ pattern: string; path: string; isLayout?: boolean }>,\n\toptions: {\n\t\tcwd: string;\n\t\tbaseUrl: string;\n\t\tisWatchMode: boolean;\n\t\trssCache: TTLCacheType<string, string>;\n\t\tformat: 'rss' | 'atom';\n\t\tlimit: number;\n\t\tmaxAge: number;\n\t\tttlMs: number;\n\t\trssConfig: RSSOptions | undefined;\n\t},\n) {\n\tfor (const route of routesWithFeeds) {\n\t\tapp.get(`${route.pattern}/feed.xml`, async () => {\n\t\t\ttry {\n\t\t\t\treturn await generateSSRDataFeed(route, options);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof NotFoundError) throw error;\n\t\t\t\tconst routeName = route.pattern.replace(/^\\//, '') || 'index';\n\t\t\t\tconsole.error(`[reroute] Failed to generate ${routeName} feed:`, error);\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport async function registerRSSRoutes(\n\tapp: Elysia,\n\toptions: RSSRouteOptions,\n): Promise<Elysia> {\n\tconst {\n\t\tcwd,\n\t\tclientDir,\n\t\tcollections,\n\t\tbaseUrl,\n\t\tmaxAge,\n\t\tisWatchMode,\n\t\trssCache,\n\t\trssConfig,\n\t} = options;\n\n\tconst ttlMs = toTTL(maxAge);\n\tconst limit = rssConfig?.limit ?? 50;\n\tconst format: 'rss' | 'atom' = (rssConfig?.format as 'rss' | 'atom') ?? 'rss';\n\tconst feedTitle = rssConfig?.title ?? 'Feed';\n\tconst feedDescription = rssConfig?.description ?? 'Latest updates';\n\tconst availableFeeds: string[] = ['/feed.xml'];\n\n\t// Main feed route\n\tregisterMainFeedRoute(\n\t\tapp,\n\t\tcwd,\n\t\tcollections,\n\t\tbaseUrl,\n\t\tisWatchMode,\n\t\trssCache,\n\t\tformat,\n\t\tlimit,\n\t\tmaxAge,\n\t\tttlMs,\n\t\tfeedTitle,\n\t\tfeedDescription,\n\t\trssConfig,\n\t);\n\n\t// Collection-specific feeds\n\tregisterCollectionFeedRoutes(app, collections, {\n\t\tcwd,\n\t\tclientDir,\n\t\tbaseUrl,\n\t\tisWatchMode,\n\t\trssCache,\n\t\tformat,\n\t\tlimit,\n\t\tmaxAge,\n\t\tttlMs,\n\t\trssConfig,\n\t\tavailableFeeds,\n\t});\n\n\t// In dev mode, skip expensive SSR data route discovery\n\t// Collection feeds (blog/feed.xml, etc.) are already registered above\n\t// SSR data route feeds can be accessed via direct route patterns\n\tif (isWatchMode) {\n\t\t// Just set the feeds list with what we know (collections)\n\t\t(globalThis as Doc).__REROUTE_AVAILABLE_FEEDS__ = availableFeeds;\n\t\treturn app;\n\t}\n\n\t// Production mode: do full discovery upfront (cached, one-time cost)\n\tconst ssrDataRoutes = await discoverSSRRoutes(cwd, isWatchMode);\n\n\t// Discover routes with feed items\n\tconst routesWithFeeds = await discoverRoutesWithFeeds(\n\t\tssrDataRoutes,\n\t\tcollections,\n\t\t{\n\t\t\tcwd,\n\t\t\tclientDir,\n\t\t\tbaseUrl,\n\t\t\tisWatchMode,\n\t\t\trssConfig,\n\t\t\tavailableFeeds,\n\t\t},\n\t);\n\n\t// Register SSR data route feeds\n\tregisterSSRDataFeedRoutes(app, routesWithFeeds, {\n\t\tcwd,\n\t\tbaseUrl,\n\t\tisWatchMode,\n\t\trssCache,\n\t\tformat,\n\t\tlimit,\n\t\tmaxAge,\n\t\tttlMs,\n\t\trssConfig,\n\t});\n\n\t(globalThis as Doc).__REROUTE_AVAILABLE_FEEDS__ = availableFeeds;\n\n\treturn app;\n}\n",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"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 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\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\tgetTailwindCSS: () => 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\tgetTailwindCSS,\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\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, cachedTailwindCSS, 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 tailwindCSS = await getTailwindCSS();\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\tcachedTailwindCSS: tailwindCSS,\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\tcachedTailwindCSS,\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,\n\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\tmaxAge: 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});\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,\n\t\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\t\tmaxAge: 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});\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",
|
|
88
88
|
"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"
|
|
89
89
|
],
|
|
90
|
-
"mappings": "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",
|
|
91
|
-
"debugId": "
|
|
90
|
+
"mappings": "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",
|
|
91
|
+
"debugId": "790384CC68A902D864756E2164756E21",
|
|
92
92
|
"names": []
|
|
93
93
|
}
|