reroute-js 0.13.2 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/bin.d.ts +1 -1
- package/cli/bin.js +22 -11
- package/cli/bin.js.map +8 -8
- package/cli/index.d.ts +1 -1
- package/cli/index.js +7 -7
- package/cli/index.js.map +3 -3
- package/cli/src/cli.d.ts +1 -1
- package/cli/src/commands/analyze.d.ts +1 -1
- package/cli/src/commands/build.d.ts +1 -1
- package/cli/src/commands/dev.d.ts +1 -1
- package/cli/src/commands/gen.d.ts +1 -1
- package/cli/src/commands/index.d.ts +1 -1
- package/cli/src/commands/init.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/env.d.ts.map +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/availability.d.ts.map +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/version.d.ts +1 -1
- package/cli/src/commands/start.d.ts +1 -1
- package/cli/src/index.d.ts +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +12 -3
- package/core/index.js.map +6 -6
- package/core/src/bundler/hash.d.ts +1 -1
- package/core/src/bundler/index.d.ts +1 -1
- package/core/src/config.d.ts +27 -1
- package/core/src/config.d.ts.map +1 -1
- package/core/src/content/discovery.d.ts +1 -1
- package/core/src/content/index.d.ts +1 -1
- package/core/src/content/metadata.d.ts +1 -1
- package/core/src/index.d.ts +1 -1
- package/core/src/rss/discovery.d.ts +1 -1
- package/core/src/rss/discovery.d.ts.map +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/discovery.d.ts.map +1 -1
- package/core/src/sitemap/generator.d.ts +2 -1
- package/core/src/sitemap/generator.d.ts.map +1 -1
- package/core/src/sitemap/index.d.ts +1 -1
- package/core/src/ssr/index.d.ts +1 -1
- package/core/src/ssr/lib/cache.d.ts +1 -1
- package/core/src/ssr/lib/collections.d.ts +1 -1
- package/core/src/ssr/lib/compression.d.ts +1 -1
- package/core/src/ssr/lib/compute.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/index.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.d.ts +1 -1
- package/core/src/ssr/lib/seed.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 +19 -5
- package/elysia/index.js.map +8 -8
- package/elysia/src/index.d.ts +1 -1
- package/elysia/src/libs/cache.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/plugin.d.ts +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/internal.d.ts +1 -1
- package/elysia/src/routes/redirects.d.ts +1 -1
- package/elysia/src/routes/rss.d.ts +1 -1
- package/elysia/src/routes/rss.d.ts.map +1 -1
- package/elysia/src/routes/sitemap.d.ts +1 -1
- package/elysia/src/routes/sitemap.d.ts.map +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/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/useSearchParams.d.ts +1 -1
- package/react/src/index.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/elysia/index.js.map
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
"sources": ["../../packages/core/src/bundler/hash.ts", "../../packages/core/src/config.ts", "../../packages/core/src/ssr/lib/path.ts", "../../packages/core/src/content/discovery.ts", "../../packages/core/src/content/metadata.ts", "../../packages/core/src/content/index.ts", "../../packages/core/src/sitemap/discovery.ts", "../../packages/core/src/rss/discovery.ts", "../../packages/core/src/rss/generator.ts", "../../packages/core/src/rss/index.ts", "../../packages/core/src/sitemap/generator.ts", "../../packages/core/src/sitemap/index.ts", "../../packages/core/src/ssr/lib/cache.ts", "../../packages/core/src/ssr/lib/collections.ts", "../../packages/core/src/ssr/lib/mime.ts", "../../packages/core/src/ssr/lib/compression.ts", "../../packages/core/src/ssr/lib/compute.ts", "../../packages/core/src/ssr/lib/modules.ts", "../../packages/core/src/ssr/lib/seed.ts", "../../packages/core/src/ssr/lib/data.ts", "../../packages/core/src/ssr/lib/html.ts", "../../packages/core/src/ssr/lib/metadata.ts", "../../packages/core/src/ssr/lib/preload.ts", "../../packages/core/src/ssr/lib/scripts.ts", "../../packages/core/src/ssr/lib/styles.ts", "../../packages/core/src/ssr/lib/template.ts", "../../packages/core/src/ssr/lib/index.ts", "../../node_modules/.bun/dedent@1.7.0/node_modules/dedent/dist/dedent.mjs", "../../packages/core/src/ssr/render.ts", "../../packages/core/src/ssr/stream.ts", "../../packages/core/src/ssr/index.ts", "../../packages/core/src/index.ts", "../../packages/core/index.ts", "../../packages/elysia/src/plugin.ts", "../../packages/elysia/src/libs/image.ts", "../../packages/elysia/src/routes/artifacts.ts", "../../packages/elysia/src/libs/cache.ts", "../../packages/elysia/src/routes/content.ts", "../../packages/elysia/src/routes/image.ts", "../../packages/elysia/src/routes/internal.ts", "../../packages/elysia/src/libs/http.ts", "../../packages/elysia/src/routes/redirects.ts", "../../packages/elysia/src/routes/rss.ts", "../../packages/elysia/src/routes/sitemap.ts", "../../packages/elysia/src/routes/ssr.ts", "../../packages/elysia/src/routes/static.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"export async function generateContentHash(content: string): Promise<string> {\n\tconst data = new TextEncoder().encode(content);\n\tconst buf = await crypto.subtle.digest('SHA-256', data);\n\tlet hex = '';\n\tfor (const b of new Uint8Array(buf)) hex += b.toString(16).padStart(2, '0');\n\treturn hex.slice(0, 8);\n}\n",
|
|
6
|
-
"import { pathToFileURL } from 'node:url';\nimport type { ComponentType } from 'react';\n\n// biome-ignore lint/suspicious/noExplicitAny: The user document\ntype Doc = any;\nexport interface StreamingOptions {\n\tenabled?: boolean;\n\tdefaultSkeleton?: ComponentType | string;\n\tdefaultLayoutSkeleton?: ComponentType | string;\n}\n\n/**\n * Sitemap configuration options\n */\ninterface SitemapOptions {\n\t/** Enable sitemap generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for sitemap generation (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/**\n\t * Maximum URLs per sitemap file before pagination (default: 50000)\n\t * When exceeded, creates multiple sitemap files with a sitemap index\n\t * Set lower for testing (e.g., 10) to verify pagination works\n\t */\n\tmaxUrlsPerPage?: number;\n\n\t/**\n\t * Extract urls from ssr.data result (full control over data shape)\n\t * If provided, this takes precedence over automatic array discovery\n\t * @param data - Full ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns Array of items to process, or null/undefined to skip this route\n\t */\n\textractUrls?: (data: Doc, routePattern: string) => Doc[] | null | undefined;\n\n\t/**\n\t * Extract URL segment from ssr.data items\n\t * @param item - Data item from ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns URL segment to append to routePattern (e.g., '0.1.0' -> '/changelog/0.1.0')\n\t */\n\textractUrl?: (item: Doc, routePattern: string) => string | null | undefined;\n\n\t/**\n\t * Extract lastmod date from ssr.data items\n\t * @param item - Data item from ssr.data result\n\t * @returns ISO date string or undefined\n\t */\n\textractLastmod?: (item: Doc) => string | undefined;\n\n\t/** Default changefreq for URLs */\n\tchangefreq?:\n\t\t| 'always'\n\t\t| 'hourly'\n\t\t| 'daily'\n\t\t| 'weekly'\n\t\t| 'monthly'\n\t\t| 'yearly'\n\t\t| 'never';\n\n\t/** Default priority for URLs */\n\tpriority?: number;\n}\n\n/**\n * RSS feed configuration options\n */\nexport interface RSSOptions {\n\t/** Enable RSS feed generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for RSS feeds (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/** Feed title (e.g., 'My Blog') */\n\ttitle?: string;\n\n\t/** Feed description */\n\tdescription?: string;\n\n\t/** Maximum number of items per feed (default: 50) */\n\tlimit?: number;\n\n\t/** Feed format: 'rss' or 'atom' (default: 'rss') */\n\tformat?: 'rss' | 'atom';\n\n\t/**\n\t * Extract items from ssr.data result (full control over data shape)\n\t * If provided, this takes precedence over automatic array discovery\n\t * @param data - Full ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns Array of items to process, or null/undefined to skip this route\n\t */\n\textractUrls?: (data: Doc, routePattern: string) => Doc[] | null | undefined;\n\n\t/**\n\t * Extract URL segment from ssr.data items (same as sitemap)\n\t */\n\textractUrl?: (item: Doc, routePattern: string) => string | null | undefined;\n\n\t/**\n\t * Extract publication date from items\n\t */\n\textractPubDate?: (item: Doc) => string | undefined;\n\n\t/**\n\t * Extract author from items\n\t */\n\textractAuthor?: (item: Doc) => string | undefined;\n\n\t/**\n\t * Extract content/body from items\n\t */\n\textractContent?: (item: Doc) => string | undefined;\n}\n\n/**\n * Redirect handler function that can dynamically determine destination\n * @param url - The original URL object\n * @returns The destination path/url or null to skip redirect\n */\ntype RedirectHandler = (url: URL) => string | null | Promise<string | null>;\n\n/**\n * Individual redirect rule\n */\ninterface RedirectRule {\n\t/** Source path (string or regex pattern) */\n\tsource: string | RegExp;\n\t/** Destination path or handler function */\n\tdestination: string | RedirectHandler;\n\t/** HTTP status code (301 = permanent, 302 = temporary, 307 = preserve method, 308 = permanent preserve method) */\n\tstatus?: 301 | 302 | 307 | 308;\n\t/** Whether source is a regex pattern (auto-detected if source is RegExp) */\n\tregex?: boolean;\n}\n\ninterface ConfigOptions {\n\t// App component - must be string path in config (not ReactElement)\n\tapp?: string;\n\n\t// SSR options\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\n\t// Static serving options\n\tassets?: string;\n\tprefix?: string;\n\tignorePatterns?: (string | RegExp)[];\n\tstaticHeaders?: Record<string, string>;\n\tmaxAge?: number;\n\tdirective?: string;\n\tindexHTML?: boolean;\n\n\t// Build options\n\tminify?: boolean;\n\n\t// Compression (applies to both sync and streaming SSR)\n\tcompression?: boolean;\n\n\t// Image optimization options\n\timageMaxAge?: number;\n\timageAllowedDomains?: string[];\n\timageMaxWidth?: number;\n\timageMaxHeight?: number;\n\n\t// Bundle caching options\n\tbundleMaxAge?: number;\n}\n\ninterface RerouteConfig {\n\toptions?: ConfigOptions;\n\tstreaming?: StreamingOptions;\n\tredirects?: RedirectRule[];\n\tsitemap?: SitemapOptions;\n\trss?: RSSOptions;\n}\n\nfunction defineConfig(config: RerouteConfig): RerouteConfig {\n\treturn config;\n}\n\nasync function loadConfig(cwd: string): Promise<RerouteConfig> {\n\tconst configPath = `${cwd}/reroute.config.ts`;\n\tconst configFile = Bun.file(configPath);\n\n\tif (!(await configFile.exists())) {\n\t\treturn {};\n\t}\n\n\ttry {\n\t\tconst mod = await import(\n\t\t\t`${pathToFileURL(configPath).href}?t=${Date.now()}`\n\t\t);\n\t\treturn (mod.default || mod) as RerouteConfig;\n\t} catch (error) {\n\t\tconsole.warn('[reroute] Failed to load reroute.config.ts:', error);\n\t\treturn {};\n\t}\n}\n\nexport {\n\tdefineConfig,\n\tloadConfig,\n\ttype ConfigOptions,\n\ttype RedirectRule,\n\ttype RerouteConfig,\n\ttype SitemapOptions,\n};\n",
|
|
6
|
+
"import { pathToFileURL } from 'node:url';\nimport type { ComponentType } from 'react';\n\n// biome-ignore lint/suspicious/noExplicitAny: The user document\ntype Doc = any;\nexport interface StreamingOptions {\n\tenabled?: boolean;\n\tdefaultSkeleton?: ComponentType | string;\n\tdefaultLayoutSkeleton?: ComponentType | string;\n}\n\n/**\n * Sitemap configuration options\n */\ninterface SitemapOptions {\n\t/** Enable sitemap generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for sitemap generation (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/**\n\t * Maximum URLs per sitemap file before pagination (default: 50000)\n\t * When exceeded, creates multiple sitemap files with a sitemap index\n\t * Set lower for testing (e.g., 10) to verify pagination works\n\t */\n\tmaxUrlsPerPage?: number;\n\n\t/**\n\t * Completely exclude specific routes from the sitemap\n\t * Routes listed here will not appear in the sitemap at all\n\t * @example ['/admin', '/api']\n\t */\n\texcludeRoutes?: string[];\n\n\t/**\n\t * Exclude specific routes from SSR data array discovery\n\t * Routes listed here will still appear in the sitemap as single entries,\n\t * but won't generate multiple URLs from arrays found in their SSR data\n\t * @example ['/download', '/pricing'] - these routes appear once, not per array item\n\t */\n\texcludeDiscovery?: string[];\n\n\t/**\n\t * Extract urls from ssr.data result (full control over data shape)\n\t * If provided, this takes precedence over automatic array discovery\n\t * @param data - Full ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns Array of items to process, or null/undefined to skip this route\n\t */\n\textractUrls?: (data: Doc, routePattern: string) => Doc[] | null | undefined;\n\n\t/**\n\t * Extract URL segment from ssr.data items\n\t * @param item - Data item from ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns URL segment to append to routePattern (e.g., '0.1.0' -> '/changelog/0.1.0')\n\t */\n\textractUrl?: (item: Doc, routePattern: string) => string | null | undefined;\n\n\t/**\n\t * Extract lastmod date from ssr.data items\n\t * @param item - Data item from ssr.data result\n\t * @returns ISO date string or undefined\n\t */\n\textractLastmod?: (item: Doc) => string | undefined;\n\n\t/** Default changefreq for URLs */\n\tchangefreq?:\n\t\t| 'always'\n\t\t| 'hourly'\n\t\t| 'daily'\n\t\t| 'weekly'\n\t\t| 'monthly'\n\t\t| 'yearly'\n\t\t| 'never';\n\n\t/** Default priority for URLs */\n\tpriority?: number;\n}\n\n/**\n * RSS feed configuration options\n */\nexport interface RSSOptions {\n\t/** Enable RSS feed generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for RSS feeds (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/** Feed title (e.g., 'My Blog') */\n\ttitle?: string;\n\n\t/** Feed description */\n\tdescription?: string;\n\n\t/** Maximum number of items per feed (default: 50) */\n\tlimit?: number;\n\n\t/** Feed format: 'rss' or 'atom' (default: 'rss') */\n\tformat?: 'rss' | 'atom';\n\n\t/**\n\t * Completely exclude specific routes from the RSS feed\n\t * Routes listed here will not appear in the feed at all\n\t * @example ['/admin', '/api']\n\t */\n\texcludeRoutes?: string[];\n\n\t/**\n\t * Exclude specific routes from SSR data array discovery\n\t * Routes listed here won't generate multiple feed items from arrays in their SSR data,\n\t * but may still generate a single feed item if appropriate\n\t * @example ['/download', '/pricing'] - won't generate items per array entry\n\t */\n\texcludeDiscovery?: string[];\n\n\t/**\n\t * Extract items from ssr.data result (full control over data shape)\n\t * If provided, this takes precedence over automatic array discovery\n\t * @param data - Full ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns Array of items to process, or null/undefined to skip this route\n\t */\n\textractUrls?: (data: Doc, routePattern: string) => Doc[] | null | undefined;\n\n\t/**\n\t * Extract URL segment from ssr.data items (same as sitemap)\n\t */\n\textractUrl?: (item: Doc, routePattern: string) => string | null | undefined;\n\n\t/**\n\t * Extract publication date from items\n\t */\n\textractPubDate?: (item: Doc) => string | undefined;\n\n\t/**\n\t * Extract author from items\n\t */\n\textractAuthor?: (item: Doc) => string | undefined;\n\n\t/**\n\t * Extract content/body from items\n\t */\n\textractContent?: (item: Doc) => string | undefined;\n}\n\n/**\n * Redirect handler function that can dynamically determine destination\n * @param url - The original URL object\n * @returns The destination path/url or null to skip redirect\n */\ntype RedirectHandler = (url: URL) => string | null | Promise<string | null>;\n\n/**\n * Individual redirect rule\n */\ninterface RedirectRule {\n\t/** Source path (string or regex pattern) */\n\tsource: string | RegExp;\n\t/** Destination path or handler function */\n\tdestination: string | RedirectHandler;\n\t/** HTTP status code (301 = permanent, 302 = temporary, 307 = preserve method, 308 = permanent preserve method) */\n\tstatus?: 301 | 302 | 307 | 308;\n\t/** Whether source is a regex pattern (auto-detected if source is RegExp) */\n\tregex?: boolean;\n}\n\ninterface ConfigOptions {\n\t// App component - must be string path in config (not ReactElement)\n\tapp?: string;\n\n\t// SSR options\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\n\t// Static serving options\n\tassets?: string;\n\tprefix?: string;\n\tignorePatterns?: (string | RegExp)[];\n\tstaticHeaders?: Record<string, string>;\n\tmaxAge?: number;\n\tdirective?: string;\n\tindexHTML?: boolean;\n\n\t// Build options\n\tminify?: boolean;\n\n\t// Compression (applies to both sync and streaming SSR)\n\tcompression?: boolean;\n\n\t// Image optimization options\n\timageMaxAge?: number;\n\timageAllowedDomains?: string[];\n\timageMaxWidth?: number;\n\timageMaxHeight?: number;\n\n\t// Bundle caching options\n\tbundleMaxAge?: number;\n}\n\ninterface RerouteConfig {\n\toptions?: ConfigOptions;\n\tstreaming?: StreamingOptions;\n\tredirects?: RedirectRule[];\n\tsitemap?: SitemapOptions;\n\trss?: RSSOptions;\n}\n\nfunction defineConfig(config: RerouteConfig): RerouteConfig {\n\treturn config;\n}\n\nasync function loadConfig(cwd: string): Promise<RerouteConfig> {\n\tconst configPath = `${cwd}/reroute.config.ts`;\n\tconst configFile = Bun.file(configPath);\n\n\tif (!(await configFile.exists())) {\n\t\treturn {};\n\t}\n\n\ttry {\n\t\tconst mod = await import(\n\t\t\t`${pathToFileURL(configPath).href}?t=${Date.now()}`\n\t\t);\n\t\treturn (mod.default || mod) as RerouteConfig;\n\t} catch (error) {\n\t\tconsole.warn('[reroute] Failed to load reroute.config.ts:', error);\n\t\treturn {};\n\t}\n}\n\nexport {\n\tdefineConfig,\n\tloadConfig,\n\ttype ConfigOptions,\n\ttype RedirectRule,\n\ttype RerouteConfig,\n\ttype SitemapOptions,\n};\n",
|
|
7
7
|
"export function join(...parts: string[]): string {\n\treturn parts.join('/').replace(/\\/+/g, '/');\n}\n\nexport function extname(p: string): string {\n\tconst i = p.lastIndexOf('.');\n\treturn i >= 0 ? p.slice(i) : '';\n}\n\nexport function basename(p: string, ext?: string): string {\n\tconst name = p.replace(/\\\\/g, '/').split('/').pop() || p;\n\treturn ext && name.endsWith(ext) ? name.slice(0, -ext.length) : name;\n}\n\nexport function stripStart(p: string, ch: string): string {\n\treturn p.startsWith(ch) ? p.slice(ch.length) : p;\n}\n\nexport function stripEnd(p: string, ch: string): string {\n\treturn p.endsWith(ch) ? p.slice(0, -ch.length) : p;\n}\n",
|
|
8
8
|
"import { readdir, stat } from 'node:fs/promises';\nimport { join } from '../ssr/lib/path';\n\nexport async function listContentFiles(\n\tdir: string,\n\tbaseRel: string,\n): Promise<string[]> {\n\tconst out: string[] = [];\n\ttry {\n\t\tconst entries = await readdir(dir, { withFileTypes: true });\n\t\tfor (const entry of entries) {\n\t\t\tconst full = join(dir, entry.name);\n\t\t\tconst rel = join(baseRel, entry.name);\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tconst nested = await listContentFiles(full, rel);\n\t\t\t\tout.push(...nested);\n\t\t\t} else if (entry.isFile()) {\n\t\t\t\tif (/\\.(tsx|ts)$/.test(entry.name) && !entry.name.startsWith('_')) {\n\t\t\t\t\tout.push(rel);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// ignore missing dirs\n\t}\n\treturn out;\n}\n\n// buildContentDTOs removed - content is now fully pre-generated at build time\n\nexport async function discoverCollections(\n\tclientDir: string,\n): Promise<string[]> {\n\tconst root = join(clientDir, 'routes');\n\tconst collections = new Set<string>();\n\ttry {\n\t\tconst entries = await readdir(root, { withFileTypes: true });\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tconst contentDir = join(root, entry.name, 'content');\n\t\t\t\ttry {\n\t\t\t\t\tawait stat(contentDir);\n\t\t\t\t\tcollections.add(entry.name);\n\t\t\t\t} catch {\n\t\t\t\t\t// content directory doesn't exist, skip\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// routes directory doesn't exist\n\t}\n\treturn Array.from(collections);\n}\n",
|
|
9
9
|
"import { stat } from 'node:fs/promises';\nimport { pathToFileURL } from 'node:url';\nimport type { ContentMeta, Doc } from '../ssr/lib/types';\n\nexport async function getContentMeta(\n\tabsPath: string,\n\tisWatchMode: boolean,\n): Promise<ContentMeta> {\n\ttry {\n\t\tconst url = pathToFileURL(absPath).href;\n\t\tconst mod = await import(`${url}${isWatchMode ? `?t=${Date.now()}` : ''}`);\n\t\tconst meta: unknown = (mod as Doc).meta || (mod as Doc).frontmatter || {};\n\t\tif (meta && typeof meta === 'object') return meta as ContentMeta;\n\t\treturn {};\n\t} catch {\n\t\ttry {\n\t\t\tconst s = await stat(absPath);\n\t\t\treturn { date: new Date(s.mtimeMs).toISOString() };\n\t\t} catch {\n\t\t\treturn {};\n\t\t}\n\t}\n}\n\n/**\n * Build a minimal <head> snippet from content metadata.\n * - <title>\n * - <meta name=\"description\">\n */\nexport function buildHeadFromMeta(\n\tmeta: ContentMeta | undefined | null,\n): string {\n\tif (!meta || typeof meta !== 'object') return '';\n\tconst parts: string[] = [];\n\tconst title = typeof meta.title === 'string' ? meta.title : undefined;\n\tconst description =\n\t\ttypeof meta.description === 'string'\n\t\t\t? meta.description\n\t\t\t: typeof meta.excerpt === 'string'\n\t\t\t\t? meta.excerpt\n\t\t\t\t: undefined;\n\tif (title) parts.push(`<title>${escapeHtml(title)}</title>`);\n\tif (description)\n\t\tparts.push(\n\t\t\t`<meta name=\"description\" content=\"${escapeHtml(description)}\" />`,\n\t\t);\n\treturn parts.length ? `\\n${parts.join('\\n')}` : '';\n}\n\nfunction escapeHtml(input: string): string {\n\treturn input\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/'/g, ''');\n}\n",
|
|
10
10
|
"export * from './discovery';\nexport * from './metadata';\n",
|
|
11
|
-
"import type { SitemapOptions } from '../config';\nimport { join } from '../ssr/lib/path';\nimport type { Doc } from '../ssr/lib/types';\n\ntype SitemapRoute = {\n\tpath: string;\n\tpattern: string;\n\tisDynamic: boolean;\n\tchangefreq?:\n\t\t| 'always'\n\t\t| 'hourly'\n\t\t| 'daily'\n\t\t| 'weekly'\n\t\t| 'monthly'\n\t\t| 'yearly'\n\t\t| 'never';\n\tpriority?: number;\n\tlastmod?: string;\n};\n\ntype SitemapEntry = {\n\tloc: string;\n\tlastmod?: string;\n\tchangefreq?:\n\t\t| 'always'\n\t\t| 'hourly'\n\t\t| 'daily'\n\t\t| 'weekly'\n\t\t| 'monthly'\n\t\t| 'yearly'\n\t\t| 'never';\n\tpriority?: number;\n};\n\ntype SitemapDiscoveryResult = {\n\tstaticRoutes: SitemapRoute[];\n\tdynamicRoutes: SitemapRoute[];\n\tcollections: Map<string, SitemapEntry[]>;\n\tssrDataRoutes: Map<string, SitemapEntry[]>;\n};\n\n/**\n * Discover all routes from the generated routes.ts file\n */\nasync function discoverRoutes(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<{ staticRoutes: SitemapRoute[]; dynamicRoutes: SitemapRoute[] }> {\n\tconst staticRoutes: SitemapRoute[] = [];\n\tconst dynamicRoutes: SitemapRoute[] = [];\n\n\ttry {\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\tconst url = Bun.pathToFileURL(routesPath).href;\n\t\tconst mod = await import(`${url}${isWatchMode ? `?t=${Date.now()}` : ''}`);\n\n\t\tconst routes = (mod as Doc)?.routes as Doc[] | undefined;\n\t\tif (Array.isArray(routes)) {\n\t\t\tfor (const route of routes) {\n\t\t\t\tconst pattern = String(route?.pattern || '');\n\t\t\t\tconst path = String(route?.path || '');\n\n\t\t\t\t// Skip error pages and layouts\n\t\t\t\tif (\n\t\t\t\t\tpattern.includes('[404]') ||\n\t\t\t\t\tpattern.includes('[layout]') ||\n\t\t\t\t\tpattern.includes('[skeleton]')\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst isDynamic = pattern.includes('[') && pattern.includes(']');\n\n\t\t\t\tconst sitemapRoute: SitemapRoute = {\n\t\t\t\t\tpath,\n\t\t\t\t\tpattern,\n\t\t\t\t\tisDynamic,\n\t\t\t\t};\n\n\t\t\t\tif (isDynamic) {\n\t\t\t\t\tdynamicRoutes.push(sitemapRoute);\n\t\t\t\t} else {\n\t\t\t\t\tstaticRoutes.push(sitemapRoute);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('[reroute] Failed to discover routes for sitemap:', error);\n\t}\n\n\treturn { staticRoutes, dynamicRoutes };\n}\n\n/**\n * Discover content items for collections\n */\nasync function discoverCollectionContent(\n\tcwd: string,\n\tcollection: string,\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n): Promise<SitemapEntry[]> {\n\tconst entries: SitemapEntry[] = [];\n\n\ttry {\n\t\t// Load pre-generated collection module\n\t\tconst collectionFile = join(\n\t\t\tcwd,\n\t\t\t'.reroute',\n\t\t\t'collections',\n\t\t\t`${collection}.js`,\n\t\t);\n\t\tconst exists = await Bun.file(collectionFile).exists();\n\n\t\tif (!exists) {\n\t\t\treturn entries;\n\t\t}\n\n\t\tconst url = `${Bun.pathToFileURL(collectionFile).href}${isWatchMode ? `?t=${Date.now()}` : ''}`;\n\t\tconst mod = await import(url);\n\t\tconst items = mod.items || [];\n\n\t\tfor (const item of items) {\n\t\t\tconst href = String(item.href || '');\n\t\t\tconst meta = item.meta || {};\n\n\t\t\tif (href) {\n\t\t\t\tconst entry: SitemapEntry = {\n\t\t\t\t\tloc: `${baseUrl}${href}`,\n\t\t\t\t\tlastmod: meta.date ? new Date(meta.date).toISOString() : undefined,\n\t\t\t\t\tchangefreq: 'weekly',\n\t\t\t\t\tpriority: 0.7,\n\t\t\t\t};\n\t\t\t\tentries.push(entry);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute] Failed to discover collection ${collection}:`,\n\t\t\terror,\n\t\t);\n\t}\n\n\treturn entries;\n}\n\n/**\n * Discover SSR data routes (routes with ssr.data export that return arrays/lists)\n */\nasync function discoverSSRDataRoutes(\n\t_cwd: string,\n\tclientDir: string,\n\tstaticRoutes: SitemapRoute[],\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): Promise<Map<string, SitemapEntry[]>> {\n\tconst ssrDataRoutes = new Map<string, SitemapEntry[]>();\n\n\tfor (const route of staticRoutes) {\n\t\ttry {\n\t\t\tconst abs = join(clientDir, 'routes', route.path);\n\t\t\tconst mod = (await import(\n\t\t\t\tBun.pathToFileURL(abs).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t)) as Doc;\n\n\t\t\tconst ssr = (mod as Doc)?.ssr as Doc | undefined;\n\t\t\tconst dataFn = (ssr as Doc)?.data as\n\t\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t\t| undefined;\n\n\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\t// Call the data function to get the data\n\t\t\t\t// Provide a mock context with set.status for routes that need it\n\t\t\t\tconst mockSet = { status: 200 };\n\t\t\t\tconst result = await dataFn({\n\t\t\t\t\tpathname: route.pattern,\n\t\t\t\t\tparams: {},\n\t\t\t\t\tset: mockSet,\n\t\t\t\t});\n\n\t\t\t\t// Look for array data that could represent list items\n\t\t\t\tconst entries = extractEntriesFromData(\n\t\t\t\t\tresult,\n\t\t\t\t\troute.pattern,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\tsitemapConfig,\n\t\t\t\t);\n\n\t\t\t\tif (entries.length > 0) {\n\t\t\t\t\tssrDataRoutes.set(route.pattern, entries);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// Route doesn't have ssr.data or it failed - skip silently\n\t\t}\n\t}\n\n\treturn ssrDataRoutes;\n}\n\n/**\n * Extract sitemap entries from ssr.data result\n * Supports custom extractUrls function or automatic array discovery\n */\nfunction extractEntriesFromData(\n\tdata: unknown,\n\troutePattern: string,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): SitemapEntry[] {\n\tconst entries: SitemapEntry[] = [];\n\n\tif (!data || typeof data !== 'object') {\n\t\treturn entries;\n\t}\n\n\t// Use custom extractUrls if provided\n\tif (sitemapConfig?.extractUrls) {\n\t\ttry {\n\t\t\tconst items = sitemapConfig.extractUrls(data, routePattern);\n\t\t\tif (Array.isArray(items)) {\n\t\t\t\tfor (const item of items) {\n\t\t\t\t\tif (typeof item === 'object' && item !== null) {\n\t\t\t\t\t\tconst entry = createEntryFromItem(\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\troutePattern,\n\t\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\t\tsitemapConfig,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (entry) {\n\t\t\t\t\t\t\tentries.push(entry);\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\treturn entries;\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/sitemap] extractUrls failed:', error);\n\t\t\treturn entries;\n\t\t}\n\t}\n\n\t// Otherwise, recursively discover arrays in the data\n\tfunction findArrays(obj: Doc): Doc[] {\n\t\tconst arrays: Doc[] = [];\n\n\t\tfor (const value of Object.values(obj)) {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tarrays.push(value);\n\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\t// Recursively search nested objects\n\t\t\t\tarrays.push(...findArrays(value));\n\t\t\t}\n\t\t}\n\n\t\treturn arrays;\n\t}\n\n\tconst arrays = findArrays(data);\n\n\tfor (const array of arrays) {\n\t\tif (array.length > 0) {\n\t\t\tfor (const item of array) {\n\t\t\t\tif (typeof item === 'object' && item !== null) {\n\t\t\t\t\tconst entry = createEntryFromItem(\n\t\t\t\t\t\titem,\n\t\t\t\t\t\troutePattern,\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tsitemapConfig,\n\t\t\t\t\t);\n\t\t\t\t\tif (entry) {\n\t\t\t\t\t\tentries.push(entry);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn entries;\n}\n\n/**\n * Create a sitemap entry from a data item\n */\nfunction createEntryFromItem(\n\titem: Record<string, unknown>,\n\troutePattern: string,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): SitemapEntry | null {\n\t// Try custom extractor first\n\tlet identifier: string | null | undefined | unknown;\n\n\tif (sitemapConfig?.extractUrl) {\n\t\ttry {\n\t\t\tidentifier = sitemapConfig.extractUrl(item, routePattern);\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/sitemap] extractUrl failed:', error);\n\t\t}\n\t}\n\n\t// Fall back to default field detection if no custom extractor or it returned nothing\n\tif (!identifier) {\n\t\tidentifier = item.version || item.slug || item.id || item.name || item.key;\n\t}\n\n\tif (!identifier) {\n\t\treturn null;\n\t}\n\n\t// Build the URL based on the route pattern\n\tconst url = `${baseUrl}${routePattern}/${identifier}`;\n\n\tconst entry: SitemapEntry = {\n\t\tloc: url,\n\t\tchangefreq: sitemapConfig?.changefreq || 'weekly',\n\t\tpriority:\n\t\t\tsitemapConfig?.priority !== undefined ? sitemapConfig.priority : 0.6,\n\t};\n\n\t// Try custom lastmod extractor first\n\tif (sitemapConfig?.extractLastmod) {\n\t\ttry {\n\t\t\tconst lastmod = sitemapConfig.extractLastmod(item);\n\t\t\tif (lastmod) {\n\t\t\t\tentry.lastmod = new Date(lastmod).toISOString();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/sitemap] extractLastmod failed:', error);\n\t\t}\n\t}\n\n\t// Fall back to default field detection if no custom extractor\n\tif (!entry.lastmod) {\n\t\tif (item.publishedAt && typeof item.publishedAt === 'string') {\n\t\t\tentry.lastmod = new Date(item.publishedAt).toISOString();\n\t\t} else if (item.date && typeof item.date === 'string') {\n\t\t\tentry.lastmod = new Date(item.date).toISOString();\n\t\t} else if (item.updatedAt && typeof item.updatedAt === 'string') {\n\t\t\tentry.lastmod = new Date(item.updatedAt).toISOString();\n\t\t}\n\t}\n\n\treturn entry;\n}\n\n/**\n * Main sitemap discovery function\n */\nexport async function discoverSitemapData(\n\tcwd: string,\n\tclientDir: string,\n\tcollections: string[],\n\tbaseUrl: string,\n\tisWatchMode: boolean,\n\tsitemapConfig?: SitemapOptions,\n): Promise<SitemapDiscoveryResult> {\n\tconst { staticRoutes, dynamicRoutes } = await discoverRoutes(\n\t\tcwd,\n\t\tisWatchMode,\n\t);\n\t// Note: dynamicRoutes discovered but not used in sitemap (they need actual data to create URLs)\n\n\t// Discover collection content\n\tconst collectionsMap = new Map<string, SitemapEntry[]>();\n\tfor (const collection of collections) {\n\t\tconst entries = await discoverCollectionContent(\n\t\t\tcwd,\n\t\t\tcollection,\n\t\t\tisWatchMode,\n\t\t\tbaseUrl,\n\t\t);\n\t\tif (entries.length > 0) {\n\t\t\tcollectionsMap.set(collection, entries);\n\t\t}\n\t}\n\n\t// Discover SSR data routes\n\tconst ssrDataRoutes = await discoverSSRDataRoutes(\n\t\tcwd,\n\t\tclientDir,\n\t\tstaticRoutes,\n\t\tisWatchMode,\n\t\tbaseUrl,\n\t\tsitemapConfig,\n\t);\n\n\treturn {\n\t\tstaticRoutes,\n\t\tdynamicRoutes,\n\t\tcollections: collectionsMap,\n\t\tssrDataRoutes,\n\t};\n}\n\nexport {\n\tdiscoverCollectionContent,\n\tdiscoverRoutes,\n\tdiscoverSSRDataRoutes,\n\ttype SitemapDiscoveryResult,\n\ttype SitemapEntry,\n\ttype SitemapRoute,\n};\n",
|
|
12
|
-
"import { pathToFileURL } from 'node:url';\nimport type { RSSOptions } from '../config';\nimport { join } from '../ssr/lib/path';\nimport type { Doc } from '../ssr/lib/types';\n\ntype RSSItem = {\n\ttitle: string;\n\tlink: string;\n\tdescription?: string;\n\tpubDate?: string;\n\tauthor?: string;\n\tguid?: string;\n\tcontent?: string;\n};\n\ntype RSSFeed = {\n\ttitle: string;\n\tlink: string;\n\tdescription: string;\n\titems: RSSItem[];\n};\n\ntype RSSDiscoveryResult = {\n\tcollections: Map<string, RSSItem[]>;\n\tssrDataFeeds: Map<string, RSSItem[]>;\n};\n\n/**\n * Discover RSS feed items from collections\n */\nasync function discoverCollectionFeedItems(\n\tcwd: string,\n\tcollection: string,\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n\trssConfig?: RSSOptions,\n): Promise<RSSItem[]> {\n\tconst items: RSSItem[] = [];\n\n\ttry {\n\t\t// Load pre-generated collection module\n\t\tconst collectionFile = join(\n\t\t\tcwd,\n\t\t\t'.reroute',\n\t\t\t'collections',\n\t\t\t`${collection}.js`,\n\t\t);\n\t\tconst exists = await Bun.file(collectionFile).exists();\n\n\t\tif (!exists) {\n\t\t\treturn items;\n\t\t}\n\n\t\tconst url = `${Bun.pathToFileURL(collectionFile).href}${isWatchMode ? `?t=${Date.now()}` : ''}`;\n\t\tconst mod = await import(url);\n\t\tconst contentItems = mod.items || [];\n\n\t\tfor (const item of contentItems) {\n\t\t\tconst href = String(item.href || '');\n\t\t\tconst meta = item.meta || {};\n\n\t\t\tif (href) {\n\t\t\t\tconst rssItem: RSSItem = {\n\t\t\t\t\ttitle: meta.title || item.name || 'Untitled',\n\t\t\t\t\tlink: `${baseUrl}${href}`,\n\t\t\t\t\tguid: `${baseUrl}${href}`,\n\t\t\t\t\tdescription: meta.description || meta.excerpt || '',\n\t\t\t\t};\n\n\t\t\t\t// Extract pubDate using custom extractor or defaults\n\t\t\t\tif (rssConfig?.extractPubDate) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst pubDate = rssConfig.extractPubDate(meta);\n\t\t\t\t\t\tif (pubDate) {\n\t\t\t\t\t\t\trssItem.pubDate = new Date(pubDate).toUTCString();\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.warn('[reroute/rss] extractPubDate failed:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fall back to default date fields if no custom extractor provided result\n\t\t\t\tif (!rssItem.pubDate) {\n\t\t\t\t\tif (meta.date) {\n\t\t\t\t\t\trssItem.pubDate = new Date(meta.date).toUTCString();\n\t\t\t\t\t} else if (meta.publishedAt) {\n\t\t\t\t\t\trssItem.pubDate = new Date(meta.publishedAt).toUTCString();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Extract author\n\t\t\t\tif (rssConfig?.extractAuthor) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst author = rssConfig.extractAuthor(meta);\n\t\t\t\t\t\tif (author) {\n\t\t\t\t\t\t\trssItem.author = author;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.warn('[reroute/rss] extractAuthor failed:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fall back to default author field\n\t\t\t\tif (!rssItem.author && meta.author) {\n\t\t\t\t\trssItem.author = String(meta.author);\n\t\t\t\t}\n\n\t\t\t\t// Extract content\n\t\t\t\tif (rssConfig?.extractContent) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst content = rssConfig.extractContent(meta);\n\t\t\t\t\t\tif (content) {\n\t\t\t\t\t\t\trssItem.content = content;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.warn('[reroute/rss] extractContent failed:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titems.push(rssItem);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute/rss] Failed to discover collection ${collection}:`,\n\t\t\terror,\n\t\t);\n\t}\n\n\t// Sort by pubDate (newest first)\n\titems.sort((a, b) => {\n\t\tif (!a.pubDate) return 1;\n\t\tif (!b.pubDate) return -1;\n\t\treturn new Date(b.pubDate).getTime() - new Date(a.pubDate).getTime();\n\t});\n\n\treturn items;\n}\n\n/**\n * Discover RSS feed items from SSR data routes\n */\nasync function discoverSSRDataFeedItems(\n\t_cwd: string,\n\tclientDir: string,\n\troutePattern: string,\n\troutePath: string,\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n\trssConfig?: RSSOptions,\n): Promise<RSSItem[]> {\n\tconst items: RSSItem[] = [];\n\n\ttry {\n\t\tconst abs = join(clientDir, 'routes', routePath);\n\t\tconst mod = (await import(\n\t\t\tpathToFileURL(abs).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t)) as Doc;\n\n\t\tconst ssr = (mod as Doc)?.ssr as Doc | undefined;\n\t\tconst dataFn = (ssr as Doc)?.data as\n\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t| undefined;\n\n\t\tif (typeof dataFn === 'function') {\n\t\t\t// Call the data function with mock context\n\t\t\tconst mockSet = { status: 200 };\n\t\t\tconst result = await dataFn({\n\t\t\t\tpathname: routePattern,\n\t\t\t\tparams: {},\n\t\t\t\tset: mockSet,\n\t\t\t});\n\n\t\t\t// Extract RSS urls from data\n\t\t\tconst extractedItems = extractRSSItemsFromData(\n\t\t\t\tresult,\n\t\t\t\troutePattern,\n\t\t\t\tbaseUrl,\n\t\t\t\trssConfig,\n\t\t\t);\n\t\t\titems.push(...extractedItems);\n\t\t}\n\t} catch {\n\t\t// Route doesn't have ssr.data or it failed - skip silently\n\t}\n\n\treturn items;\n}\n\n/**\n * Extract RSS urls from ssr.data result\n * Supports custom extractUrls function or automatic array discovery\n */\nfunction extractRSSItemsFromData(\n\tdata: unknown,\n\troutePattern: string,\n\tbaseUrl: string,\n\trssConfig?: RSSOptions,\n): RSSItem[] {\n\tconst items: RSSItem[] = [];\n\n\tif (!data || typeof data !== 'object') {\n\t\treturn items;\n\t}\n\n\t// Use custom extractUrls if provided\n\tif (rssConfig?.extractUrls) {\n\t\ttry {\n\t\t\tconst extractedItems = rssConfig.extractUrls(data, routePattern);\n\t\t\tif (Array.isArray(extractedItems)) {\n\t\t\t\tfor (const item of extractedItems) {\n\t\t\t\t\tif (typeof item === 'object' && item !== null) {\n\t\t\t\t\t\tconst rssItem = createRSSItemFromData(\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\troutePattern,\n\t\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\t\trssConfig,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (rssItem) {\n\t\t\t\t\t\t\titems.push(rssItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sort by pubDate (newest first)\n\t\t\titems.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\treturn items;\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/rss] extractUrls failed:', error);\n\t\t\treturn items;\n\t\t}\n\t}\n\n\t// Otherwise, recursively discover arrays in the data\n\tfunction findArrays(obj: Doc): Doc[] {\n\t\tconst arrays: Doc[] = [];\n\n\t\tfor (const value of Object.values(obj)) {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tarrays.push(value);\n\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\t// Recursively search nested objects\n\t\t\t\tarrays.push(...findArrays(value));\n\t\t\t}\n\t\t}\n\n\t\treturn arrays;\n\t}\n\n\tconst arrays = findArrays(data);\n\n\tfor (const array of arrays) {\n\t\tif (array.length > 0) {\n\t\t\tfor (const item of array) {\n\t\t\t\tif (typeof item === 'object' && item !== null) {\n\t\t\t\t\tconst rssItem = createRSSItemFromData(\n\t\t\t\t\t\titem,\n\t\t\t\t\t\troutePattern,\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\trssConfig,\n\t\t\t\t\t);\n\t\t\t\t\tif (rssItem) {\n\t\t\t\t\t\titems.push(rssItem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sort by pubDate (newest first)\n\titems.sort((a, b) => {\n\t\tif (!a.pubDate) return 1;\n\t\tif (!b.pubDate) return -1;\n\t\treturn new Date(b.pubDate).getTime() - new Date(a.pubDate).getTime();\n\t});\n\n\treturn items;\n}\n\n/**\n * Create RSS item from data object\n */\nfunction createRSSItemFromData(\n\titem: Record<string, unknown>,\n\troutePattern: string,\n\tbaseUrl: string,\n\trssConfig?: RSSOptions,\n): RSSItem | null {\n\t// Try custom URL extractor first\n\tlet identifier: string | null | undefined | unknown;\n\n\tif (rssConfig?.extractUrl) {\n\t\ttry {\n\t\t\tidentifier = rssConfig.extractUrl(item, routePattern);\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/rss] extractUrl failed:', error);\n\t\t}\n\t}\n\n\t// Fall back to default field detection\n\tif (!identifier) {\n\t\tidentifier = item.version || item.slug || item.id || item.name || item.key;\n\t}\n\n\tif (!identifier) {\n\t\treturn null;\n\t}\n\n\tconst link = `${baseUrl}${routePattern}/${identifier}`;\n\n\tconst rssItem: RSSItem = {\n\t\ttitle: String(item.title || item.name || identifier),\n\t\tlink,\n\t\tguid: link,\n\t\tdescription: String(item.description || item.excerpt || ''),\n\t};\n\n\t// Extract pubDate\n\tif (rssConfig?.extractPubDate) {\n\t\ttry {\n\t\t\tconst pubDate = rssConfig.extractPubDate(item);\n\t\t\tif (pubDate) {\n\t\t\t\trssItem.pubDate = new Date(pubDate).toUTCString();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/rss] extractPubDate failed:', error);\n\t\t}\n\t} else {\n\t\tif (item.publishedAt && typeof item.publishedAt === 'string') {\n\t\t\trssItem.pubDate = new Date(item.publishedAt).toUTCString();\n\t\t} else if (item.date && typeof item.date === 'string') {\n\t\t\trssItem.pubDate = new Date(item.date).toUTCString();\n\t\t} else if (item.createdAt && typeof item.createdAt === 'string') {\n\t\t\trssItem.pubDate = new Date(item.createdAt).toUTCString();\n\t\t}\n\t}\n\n\t// Extract author\n\tif (rssConfig?.extractAuthor) {\n\t\ttry {\n\t\t\tconst author = rssConfig.extractAuthor(item);\n\t\t\tif (author) {\n\t\t\t\trssItem.author = author;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/rss] extractAuthor failed:', error);\n\t\t}\n\t} else if (item.author) {\n\t\trssItem.author = String(item.author);\n\t}\n\n\t// Extract content\n\tif (rssConfig?.extractContent) {\n\t\ttry {\n\t\t\tconst content = rssConfig.extractContent(item);\n\t\t\tif (content) {\n\t\t\t\trssItem.content = content;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/rss] extractContent failed:', error);\n\t\t}\n\t}\n\n\treturn rssItem;\n}\n\n/**\n * Main RSS discovery function\n */\nasync function discoverRSSData(\n\tcwd: string,\n\tclientDir: string,\n\tcollections: string[],\n\tbaseUrl: string,\n\tisWatchMode: boolean,\n\trssConfig?: RSSOptions,\n): Promise<RSSDiscoveryResult> {\n\t// Discover collection content\n\tconst collectionsMap = new Map<string, RSSItem[]>();\n\tfor (const collection of collections) {\n\t\tconst items = await discoverCollectionFeedItems(\n\t\t\tcwd,\n\t\t\tcollection,\n\t\t\tisWatchMode,\n\t\t\tbaseUrl,\n\t\t\trssConfig,\n\t\t);\n\t\tif (items.length > 0) {\n\t\t\tcollectionsMap.set(collection, items);\n\t\t}\n\t}\n\n\t// Discover SSR data routes\n\tconst ssrDataFeeds = new Map<string, RSSItem[]>();\n\tconst { discoverRoutes } = await import('../sitemap/discovery');\n\tconst { staticRoutes } = await discoverRoutes(cwd, isWatchMode);\n\n\tfor (const route of staticRoutes) {\n\t\tconst items = await discoverSSRDataFeedItems(\n\t\t\tcwd,\n\t\t\tclientDir,\n\t\t\troute.pattern,\n\t\t\troute.path,\n\t\t\tisWatchMode,\n\t\t\tbaseUrl,\n\t\t\trssConfig,\n\t\t);\n\n\t\tif (items.length > 0) {\n\t\t\tssrDataFeeds.set(route.pattern, items);\n\t\t}\n\t}\n\n\t// Also discover layout ssr.data\n\tconst layoutFeeds = await discoverLayoutFeedItems(\n\t\tcwd,\n\t\tclientDir,\n\t\tisWatchMode,\n\t\tbaseUrl,\n\t\trssConfig,\n\t);\n\tfor (const [pattern, items] of layoutFeeds.entries()) {\n\t\tconst existing = ssrDataFeeds.get(pattern) || [];\n\t\tssrDataFeeds.set(pattern, [...existing, ...items]);\n\t}\n\n\treturn {\n\t\tcollections: collectionsMap,\n\t\tssrDataFeeds,\n\t};\n}\n\n/**\n * Discover RSS urls from layout ssr.data\n */\nasync function discoverLayoutFeedItems(\n\tcwd: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n\trssConfig?: RSSOptions,\n): Promise<Map<string, RSSItem[]>> {\n\tconst layoutFeeds = new Map<string, RSSItem[]>();\n\n\ttry {\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\tconst url = pathToFileURL(routesPath).href;\n\t\tconst mod = await import(`${url}${isWatchMode ? `?t=${Date.now()}` : ''}`);\n\n\t\tconst layouts = (mod as Doc)?.layouts as Doc[] | undefined;\n\t\tif (Array.isArray(layouts)) {\n\t\t\tfor (const layout of layouts) {\n\t\t\t\tconst pattern = String(layout?.pattern || '/');\n\t\t\t\tconst path = String(layout?.path || '');\n\n\t\t\t\tif (!path) continue;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst abs = join(clientDir, 'routes', path);\n\t\t\t\t\tconst layoutMod = (await import(\n\t\t\t\t\t\tpathToFileURL(abs).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t\t\t)) as Doc;\n\n\t\t\t\t\tconst ssr = (layoutMod as Doc)?.ssr as Doc | undefined;\n\t\t\t\t\tconst dataFn = (ssr as Doc)?.data as\n\t\t\t\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t\t\t\t| undefined;\n\n\t\t\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\t\t\tconst mockSet = { status: 200 };\n\t\t\t\t\t\tconst result = await dataFn({\n\t\t\t\t\t\t\tpathname: pattern,\n\t\t\t\t\t\t\tparams: {},\n\t\t\t\t\t\t\tset: mockSet,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst items = extractRSSItemsFromData(\n\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\t\trssConfig,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (items.length > 0) {\n\t\t\t\t\t\t\tlayoutFeeds.set(pattern, items);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Layout doesn't have ssr.data or failed - skip\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// routes.ts doesn't exist or failed to load\n\t}\n\n\treturn layoutFeeds;\n}\n\nexport {\n\tdiscoverLayoutFeedItems,\n\tdiscoverRSSData,\n\tdiscoverSSRDataFeedItems,\n\ttype RSSDiscoveryResult,\n\ttype RSSFeed,\n\ttype RSSItem,\n};\n",
|
|
11
|
+
"import type { SitemapOptions } from '../config';\nimport { join } from '../ssr/lib/path';\nimport type { Doc } from '../ssr/lib/types';\n\ntype SitemapRoute = {\n\tpath: string;\n\tpattern: string;\n\tisDynamic: boolean;\n\tchangefreq?:\n\t\t| 'always'\n\t\t| 'hourly'\n\t\t| 'daily'\n\t\t| 'weekly'\n\t\t| 'monthly'\n\t\t| 'yearly'\n\t\t| 'never';\n\tpriority?: number;\n\tlastmod?: string;\n};\n\ntype SitemapEntry = {\n\tloc: string;\n\tlastmod?: string;\n\tchangefreq?:\n\t\t| 'always'\n\t\t| 'hourly'\n\t\t| 'daily'\n\t\t| 'weekly'\n\t\t| 'monthly'\n\t\t| 'yearly'\n\t\t| 'never';\n\tpriority?: number;\n};\n\ntype SitemapDiscoveryResult = {\n\tstaticRoutes: SitemapRoute[];\n\tdynamicRoutes: SitemapRoute[];\n\tcollections: Map<string, SitemapEntry[]>;\n\tssrDataRoutes: Map<string, SitemapEntry[]>;\n};\n\n/**\n * Discover all routes from the generated routes.ts file\n */\nasync function discoverRoutes(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<{ staticRoutes: SitemapRoute[]; dynamicRoutes: SitemapRoute[] }> {\n\tconst staticRoutes: SitemapRoute[] = [];\n\tconst dynamicRoutes: SitemapRoute[] = [];\n\n\ttry {\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\tconst url = Bun.pathToFileURL(routesPath).href;\n\t\tconst mod = await import(`${url}${isWatchMode ? `?t=${Date.now()}` : ''}`);\n\n\t\tconst routes = (mod as Doc)?.routes as Doc[] | undefined;\n\t\tif (Array.isArray(routes)) {\n\t\t\tfor (const route of routes) {\n\t\t\t\tconst pattern = String(route?.pattern || '');\n\t\t\t\tconst path = String(route?.path || '');\n\n\t\t\t\t// Skip error pages and layouts\n\t\t\t\tif (\n\t\t\t\t\tpattern.includes('[404]') ||\n\t\t\t\t\tpattern.includes('[layout]') ||\n\t\t\t\t\tpattern.includes('[skeleton]')\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Check for dynamic segments (both bracket and colon syntax)\n\t\t\t\tconst isDynamic = pattern.includes(':');\n\n\t\t\t\tconst sitemapRoute: SitemapRoute = {\n\t\t\t\t\tpath,\n\t\t\t\t\tpattern,\n\t\t\t\t\tisDynamic,\n\t\t\t\t};\n\n\t\t\t\tif (isDynamic) {\n\t\t\t\t\tdynamicRoutes.push(sitemapRoute);\n\t\t\t\t} else {\n\t\t\t\t\tstaticRoutes.push(sitemapRoute);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('[reroute] Failed to discover routes for sitemap:', error);\n\t}\n\n\treturn { staticRoutes, dynamicRoutes };\n}\n\n/**\n * Discover content items for collections\n */\nasync function discoverCollectionContent(\n\tcwd: string,\n\tcollection: string,\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n): Promise<SitemapEntry[]> {\n\tconst entries: SitemapEntry[] = [];\n\n\ttry {\n\t\t// Load pre-generated collection module\n\t\tconst collectionFile = join(\n\t\t\tcwd,\n\t\t\t'.reroute',\n\t\t\t'collections',\n\t\t\t`${collection}.js`,\n\t\t);\n\t\tconst exists = await Bun.file(collectionFile).exists();\n\n\t\tif (!exists) {\n\t\t\treturn entries;\n\t\t}\n\n\t\tconst url = `${Bun.pathToFileURL(collectionFile).href}${isWatchMode ? `?t=${Date.now()}` : ''}`;\n\t\tconst mod = await import(url);\n\t\tconst items = mod.items || [];\n\n\t\tfor (const item of items) {\n\t\t\tconst href = String(item.href || '');\n\t\t\tconst meta = item.meta || {};\n\n\t\t\tif (href) {\n\t\t\t\tconst entry: SitemapEntry = {\n\t\t\t\t\tloc: `${baseUrl}${href}`,\n\t\t\t\t\tlastmod: meta.date ? new Date(meta.date).toISOString() : undefined,\n\t\t\t\t\tchangefreq: 'weekly',\n\t\t\t\t\tpriority: 0.7,\n\t\t\t\t};\n\t\t\t\tentries.push(entry);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute] Failed to discover collection ${collection}:`,\n\t\t\terror,\n\t\t);\n\t}\n\n\treturn entries;\n}\n\n/**\n * Discover SSR data routes (routes with ssr.data export that return arrays/lists)\n */\nasync function discoverSSRDataRoutes(\n\t_cwd: string,\n\tclientDir: string,\n\tstaticRoutes: SitemapRoute[],\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): Promise<Map<string, SitemapEntry[]>> {\n\tconst ssrDataRoutes = new Map<string, SitemapEntry[]>();\n\n\tfor (const route of staticRoutes) {\n\t\t// Skip routes excluded from SSR data discovery\n\t\tif (sitemapConfig?.excludeDiscovery?.includes(route.pattern)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttry {\n\t\t\tconst abs = join(clientDir, 'routes', route.path);\n\t\t\tconst mod = (await import(\n\t\t\t\tBun.pathToFileURL(abs).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t)) as Doc;\n\n\t\t\tconst ssr = (mod as Doc)?.ssr as Doc | undefined;\n\t\t\tconst dataFn = (ssr as Doc)?.data as\n\t\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t\t| undefined;\n\n\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\t// Call the data function to get the data\n\t\t\t\t// Provide a mock context with set.status for routes that need it\n\t\t\t\tconst mockSet = { status: 200 };\n\t\t\t\tconst result = await dataFn({\n\t\t\t\t\tpathname: route.pattern,\n\t\t\t\t\tparams: {},\n\t\t\t\t\tset: mockSet,\n\t\t\t\t});\n\n\t\t\t\t// Look for array data that could represent list items\n\t\t\t\tconst entries = extractEntriesFromData(\n\t\t\t\t\tresult,\n\t\t\t\t\troute.pattern,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\tsitemapConfig,\n\t\t\t\t);\n\n\t\t\t\tif (entries.length > 0) {\n\t\t\t\t\tssrDataRoutes.set(route.pattern, entries);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// Route doesn't have ssr.data or it failed - skip silently\n\t\t}\n\t}\n\n\treturn ssrDataRoutes;\n}\n\n/**\n * Extract sitemap entries from ssr.data result\n * Supports custom extractUrls function or automatic array discovery\n */\nfunction extractEntriesFromData(\n\tdata: unknown,\n\troutePattern: string,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): SitemapEntry[] {\n\tconst entries: SitemapEntry[] = [];\n\n\tif (!data || typeof data !== 'object') {\n\t\treturn entries;\n\t}\n\n\t// Use custom extractUrls if provided\n\tif (sitemapConfig?.extractUrls) {\n\t\ttry {\n\t\t\tconst items = sitemapConfig.extractUrls(data, routePattern);\n\t\t\tif (Array.isArray(items)) {\n\t\t\t\tfor (const item of items) {\n\t\t\t\t\tif (typeof item === 'object' && item !== null) {\n\t\t\t\t\t\tconst entry = createEntryFromItem(\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\troutePattern,\n\t\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\t\tsitemapConfig,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (entry) {\n\t\t\t\t\t\t\tentries.push(entry);\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\treturn entries;\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/sitemap] extractUrls failed:', error);\n\t\t\treturn entries;\n\t\t}\n\t}\n\n\t// Otherwise, recursively discover arrays in the data\n\tfunction findArrays(obj: Doc): Doc[] {\n\t\tconst arrays: Doc[] = [];\n\n\t\tfor (const value of Object.values(obj)) {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tarrays.push(value);\n\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\t// Recursively search nested objects\n\t\t\t\tarrays.push(...findArrays(value));\n\t\t\t}\n\t\t}\n\n\t\treturn arrays;\n\t}\n\n\tconst arrays = findArrays(data);\n\n\tfor (const array of arrays) {\n\t\tif (array.length > 0) {\n\t\t\tfor (const item of array) {\n\t\t\t\tif (typeof item === 'object' && item !== null) {\n\t\t\t\t\tconst entry = createEntryFromItem(\n\t\t\t\t\t\titem,\n\t\t\t\t\t\troutePattern,\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tsitemapConfig,\n\t\t\t\t\t);\n\t\t\t\t\tif (entry) {\n\t\t\t\t\t\tentries.push(entry);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn entries;\n}\n\n/**\n * Create a sitemap entry from a data item\n */\nfunction createEntryFromItem(\n\titem: Record<string, unknown>,\n\troutePattern: string,\n\tbaseUrl: string,\n\tsitemapConfig?: SitemapOptions,\n): SitemapEntry | null {\n\t// Try custom extractor first\n\tlet identifier: string | null | undefined | unknown;\n\n\tif (sitemapConfig?.extractUrl) {\n\t\ttry {\n\t\t\tidentifier = sitemapConfig.extractUrl(item, routePattern);\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/sitemap] extractUrl failed:', error);\n\t\t}\n\t}\n\n\t// Fall back to default field detection if no custom extractor or it returned nothing\n\tif (!identifier) {\n\t\tidentifier = item.version || item.slug || item.id || item.name || item.key;\n\t}\n\n\tif (!identifier) {\n\t\treturn null;\n\t}\n\n\t// Build the URL based on the route pattern\n\tconst url = `${baseUrl}${routePattern}/${identifier}`;\n\n\tconst entry: SitemapEntry = {\n\t\tloc: url,\n\t\tchangefreq: sitemapConfig?.changefreq || 'weekly',\n\t\tpriority:\n\t\t\tsitemapConfig?.priority !== undefined ? sitemapConfig.priority : 0.6,\n\t};\n\n\t// Try custom lastmod extractor first\n\tif (sitemapConfig?.extractLastmod) {\n\t\ttry {\n\t\t\tconst lastmod = sitemapConfig.extractLastmod(item);\n\t\t\tif (lastmod) {\n\t\t\t\tentry.lastmod = new Date(lastmod).toISOString();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/sitemap] extractLastmod failed:', error);\n\t\t}\n\t}\n\n\t// Fall back to default field detection if no custom extractor\n\tif (!entry.lastmod) {\n\t\tif (item.publishedAt && typeof item.publishedAt === 'string') {\n\t\t\tentry.lastmod = new Date(item.publishedAt).toISOString();\n\t\t} else if (item.date && typeof item.date === 'string') {\n\t\t\tentry.lastmod = new Date(item.date).toISOString();\n\t\t} else if (item.updatedAt && typeof item.updatedAt === 'string') {\n\t\t\tentry.lastmod = new Date(item.updatedAt).toISOString();\n\t\t}\n\t}\n\n\treturn entry;\n}\n\n/**\n * Main sitemap discovery function\n */\nexport async function discoverSitemapData(\n\tcwd: string,\n\tclientDir: string,\n\tcollections: string[],\n\tbaseUrl: string,\n\tisWatchMode: boolean,\n\tsitemapConfig?: SitemapOptions,\n): Promise<SitemapDiscoveryResult> {\n\tconst { staticRoutes, dynamicRoutes } = await discoverRoutes(\n\t\tcwd,\n\t\tisWatchMode,\n\t);\n\t// Note: dynamicRoutes discovered but not used in sitemap (they need actual data to create URLs)\n\n\t// Discover collection content\n\tconst collectionsMap = new Map<string, SitemapEntry[]>();\n\tfor (const collection of collections) {\n\t\tconst entries = await discoverCollectionContent(\n\t\t\tcwd,\n\t\t\tcollection,\n\t\t\tisWatchMode,\n\t\t\tbaseUrl,\n\t\t);\n\t\tif (entries.length > 0) {\n\t\t\tcollectionsMap.set(collection, entries);\n\t\t}\n\t}\n\n\t// Discover SSR data routes\n\tconst ssrDataRoutes = await discoverSSRDataRoutes(\n\t\tcwd,\n\t\tclientDir,\n\t\tstaticRoutes,\n\t\tisWatchMode,\n\t\tbaseUrl,\n\t\tsitemapConfig,\n\t);\n\n\treturn {\n\t\tstaticRoutes,\n\t\tdynamicRoutes,\n\t\tcollections: collectionsMap,\n\t\tssrDataRoutes,\n\t};\n}\n\nexport {\n\tdiscoverCollectionContent,\n\tdiscoverRoutes,\n\tdiscoverSSRDataRoutes,\n\ttype SitemapDiscoveryResult,\n\ttype SitemapEntry,\n\ttype SitemapRoute,\n};\n",
|
|
12
|
+
"import { pathToFileURL } from 'node:url';\nimport type { RSSOptions } from '../config';\nimport { join } from '../ssr/lib/path';\nimport type { Doc } from '../ssr/lib/types';\n\ntype RSSItem = {\n\ttitle: string;\n\tlink: string;\n\tdescription?: string;\n\tpubDate?: string;\n\tauthor?: string;\n\tguid?: string;\n\tcontent?: string;\n};\n\ntype RSSFeed = {\n\ttitle: string;\n\tlink: string;\n\tdescription: string;\n\titems: RSSItem[];\n};\n\ntype RSSDiscoveryResult = {\n\tcollections: Map<string, RSSItem[]>;\n\tssrDataFeeds: Map<string, RSSItem[]>;\n};\n\n/**\n * Discover RSS feed items from collections\n */\nasync function discoverCollectionFeedItems(\n\tcwd: string,\n\tcollection: string,\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n\trssConfig?: RSSOptions,\n): Promise<RSSItem[]> {\n\tconst items: RSSItem[] = [];\n\n\ttry {\n\t\t// Load pre-generated collection module\n\t\tconst collectionFile = join(\n\t\t\tcwd,\n\t\t\t'.reroute',\n\t\t\t'collections',\n\t\t\t`${collection}.js`,\n\t\t);\n\t\tconst exists = await Bun.file(collectionFile).exists();\n\n\t\tif (!exists) {\n\t\t\treturn items;\n\t\t}\n\n\t\tconst url = `${Bun.pathToFileURL(collectionFile).href}${isWatchMode ? `?t=${Date.now()}` : ''}`;\n\t\tconst mod = await import(url);\n\t\tconst contentItems = mod.items || [];\n\n\t\tfor (const item of contentItems) {\n\t\t\tconst href = String(item.href || '');\n\t\t\tconst meta = item.meta || {};\n\n\t\t\tif (href) {\n\t\t\t\tconst rssItem: RSSItem = {\n\t\t\t\t\ttitle: meta.title || item.name || 'Untitled',\n\t\t\t\t\tlink: `${baseUrl}${href}`,\n\t\t\t\t\tguid: `${baseUrl}${href}`,\n\t\t\t\t\tdescription: meta.description || meta.excerpt || '',\n\t\t\t\t};\n\n\t\t\t\t// Extract pubDate using custom extractor or defaults\n\t\t\t\tif (rssConfig?.extractPubDate) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst pubDate = rssConfig.extractPubDate(meta);\n\t\t\t\t\t\tif (pubDate) {\n\t\t\t\t\t\t\trssItem.pubDate = new Date(pubDate).toUTCString();\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.warn('[reroute/rss] extractPubDate failed:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fall back to default date fields if no custom extractor provided result\n\t\t\t\tif (!rssItem.pubDate) {\n\t\t\t\t\tif (meta.date) {\n\t\t\t\t\t\trssItem.pubDate = new Date(meta.date).toUTCString();\n\t\t\t\t\t} else if (meta.publishedAt) {\n\t\t\t\t\t\trssItem.pubDate = new Date(meta.publishedAt).toUTCString();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Extract author\n\t\t\t\tif (rssConfig?.extractAuthor) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst author = rssConfig.extractAuthor(meta);\n\t\t\t\t\t\tif (author) {\n\t\t\t\t\t\t\trssItem.author = author;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.warn('[reroute/rss] extractAuthor failed:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fall back to default author field\n\t\t\t\tif (!rssItem.author && meta.author) {\n\t\t\t\t\trssItem.author = String(meta.author);\n\t\t\t\t}\n\n\t\t\t\t// Extract content\n\t\t\t\tif (rssConfig?.extractContent) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst content = rssConfig.extractContent(meta);\n\t\t\t\t\t\tif (content) {\n\t\t\t\t\t\t\trssItem.content = content;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.warn('[reroute/rss] extractContent failed:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titems.push(rssItem);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute/rss] Failed to discover collection ${collection}:`,\n\t\t\terror,\n\t\t);\n\t}\n\n\t// Sort by pubDate (newest first)\n\titems.sort((a, b) => {\n\t\tif (!a.pubDate) return 1;\n\t\tif (!b.pubDate) return -1;\n\t\treturn new Date(b.pubDate).getTime() - new Date(a.pubDate).getTime();\n\t});\n\n\treturn items;\n}\n\n/**\n * Discover RSS feed items from SSR data routes\n */\nasync function discoverSSRDataFeedItems(\n\t_cwd: string,\n\tclientDir: string,\n\troutePattern: string,\n\troutePath: string,\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n\trssConfig?: RSSOptions,\n): Promise<RSSItem[]> {\n\tconst items: RSSItem[] = [];\n\n\ttry {\n\t\tconst abs = join(clientDir, 'routes', routePath);\n\t\tconst mod = (await import(\n\t\t\tpathToFileURL(abs).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t)) as Doc;\n\n\t\tconst ssr = (mod as Doc)?.ssr as Doc | undefined;\n\t\tconst dataFn = (ssr as Doc)?.data as\n\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t| undefined;\n\n\t\tif (typeof dataFn === 'function') {\n\t\t\t// Call the data function with mock context\n\t\t\tconst mockSet = { status: 200 };\n\t\t\tconst result = await dataFn({\n\t\t\t\tpathname: routePattern,\n\t\t\t\tparams: {},\n\t\t\t\tset: mockSet,\n\t\t\t});\n\n\t\t\t// Extract RSS urls from data\n\t\t\tconst extractedItems = extractRSSItemsFromData(\n\t\t\t\tresult,\n\t\t\t\troutePattern,\n\t\t\t\tbaseUrl,\n\t\t\t\trssConfig,\n\t\t\t);\n\t\t\titems.push(...extractedItems);\n\t\t}\n\t} catch {\n\t\t// Route doesn't have ssr.data or it failed - skip silently\n\t}\n\n\treturn items;\n}\n\n/**\n * Extract RSS urls from ssr.data result\n * Supports custom extractUrls function or automatic array discovery\n */\nfunction extractRSSItemsFromData(\n\tdata: unknown,\n\troutePattern: string,\n\tbaseUrl: string,\n\trssConfig?: RSSOptions,\n): RSSItem[] {\n\tconst items: RSSItem[] = [];\n\n\tif (!data || typeof data !== 'object') {\n\t\treturn items;\n\t}\n\n\t// Use custom extractUrls if provided\n\tif (rssConfig?.extractUrls) {\n\t\ttry {\n\t\t\tconst extractedItems = rssConfig.extractUrls(data, routePattern);\n\t\t\tif (Array.isArray(extractedItems)) {\n\t\t\t\tfor (const item of extractedItems) {\n\t\t\t\t\tif (typeof item === 'object' && item !== null) {\n\t\t\t\t\t\tconst rssItem = createRSSItemFromData(\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\troutePattern,\n\t\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\t\trssConfig,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (rssItem) {\n\t\t\t\t\t\t\titems.push(rssItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sort by pubDate (newest first)\n\t\t\titems.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\treturn items;\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/rss] extractUrls failed:', error);\n\t\t\treturn items;\n\t\t}\n\t}\n\n\t// Otherwise, recursively discover arrays in the data\n\tfunction findArrays(obj: Doc): Doc[] {\n\t\tconst arrays: Doc[] = [];\n\n\t\tfor (const value of Object.values(obj)) {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tarrays.push(value);\n\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\t// Recursively search nested objects\n\t\t\t\tarrays.push(...findArrays(value));\n\t\t\t}\n\t\t}\n\n\t\treturn arrays;\n\t}\n\n\tconst arrays = findArrays(data);\n\n\tfor (const array of arrays) {\n\t\tif (array.length > 0) {\n\t\t\tfor (const item of array) {\n\t\t\t\tif (typeof item === 'object' && item !== null) {\n\t\t\t\t\tconst rssItem = createRSSItemFromData(\n\t\t\t\t\t\titem,\n\t\t\t\t\t\troutePattern,\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\trssConfig,\n\t\t\t\t\t);\n\t\t\t\t\tif (rssItem) {\n\t\t\t\t\t\titems.push(rssItem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sort by pubDate (newest first)\n\titems.sort((a, b) => {\n\t\tif (!a.pubDate) return 1;\n\t\tif (!b.pubDate) return -1;\n\t\treturn new Date(b.pubDate).getTime() - new Date(a.pubDate).getTime();\n\t});\n\n\treturn items;\n}\n\n/**\n * Create RSS item from data object\n */\nfunction createRSSItemFromData(\n\titem: Record<string, unknown>,\n\troutePattern: string,\n\tbaseUrl: string,\n\trssConfig?: RSSOptions,\n): RSSItem | null {\n\t// Try custom URL extractor first\n\tlet identifier: string | null | undefined | unknown;\n\n\tif (rssConfig?.extractUrl) {\n\t\ttry {\n\t\t\tidentifier = rssConfig.extractUrl(item, routePattern);\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/rss] extractUrl failed:', error);\n\t\t}\n\t}\n\n\t// Fall back to default field detection\n\tif (!identifier) {\n\t\tidentifier = item.version || item.slug || item.id || item.name || item.key;\n\t}\n\n\tif (!identifier) {\n\t\treturn null;\n\t}\n\n\tconst link = `${baseUrl}${routePattern}/${identifier}`;\n\n\tconst rssItem: RSSItem = {\n\t\ttitle: String(item.title || item.name || identifier),\n\t\tlink,\n\t\tguid: link,\n\t\tdescription: String(item.description || item.excerpt || ''),\n\t};\n\n\t// Extract pubDate\n\tif (rssConfig?.extractPubDate) {\n\t\ttry {\n\t\t\tconst pubDate = rssConfig.extractPubDate(item);\n\t\t\tif (pubDate) {\n\t\t\t\trssItem.pubDate = new Date(pubDate).toUTCString();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/rss] extractPubDate failed:', error);\n\t\t}\n\t} else {\n\t\tif (item.publishedAt && typeof item.publishedAt === 'string') {\n\t\t\trssItem.pubDate = new Date(item.publishedAt).toUTCString();\n\t\t} else if (item.date && typeof item.date === 'string') {\n\t\t\trssItem.pubDate = new Date(item.date).toUTCString();\n\t\t} else if (item.createdAt && typeof item.createdAt === 'string') {\n\t\t\trssItem.pubDate = new Date(item.createdAt).toUTCString();\n\t\t}\n\t}\n\n\t// Extract author\n\tif (rssConfig?.extractAuthor) {\n\t\ttry {\n\t\t\tconst author = rssConfig.extractAuthor(item);\n\t\t\tif (author) {\n\t\t\t\trssItem.author = author;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/rss] extractAuthor failed:', error);\n\t\t}\n\t} else if (item.author) {\n\t\trssItem.author = String(item.author);\n\t}\n\n\t// Extract content\n\tif (rssConfig?.extractContent) {\n\t\ttry {\n\t\t\tconst content = rssConfig.extractContent(item);\n\t\t\tif (content) {\n\t\t\t\trssItem.content = content;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('[reroute/rss] extractContent failed:', error);\n\t\t}\n\t}\n\n\treturn rssItem;\n}\n\n/**\n * Main RSS discovery function\n */\nasync function discoverRSSData(\n\tcwd: string,\n\tclientDir: string,\n\tcollections: string[],\n\tbaseUrl: string,\n\tisWatchMode: boolean,\n\trssConfig?: RSSOptions,\n): Promise<RSSDiscoveryResult> {\n\t// Discover collection content\n\tconst collectionsMap = new Map<string, RSSItem[]>();\n\tfor (const collection of collections) {\n\t\tconst items = await discoverCollectionFeedItems(\n\t\t\tcwd,\n\t\t\tcollection,\n\t\t\tisWatchMode,\n\t\t\tbaseUrl,\n\t\t\trssConfig,\n\t\t);\n\t\tif (items.length > 0) {\n\t\t\tcollectionsMap.set(collection, items);\n\t\t}\n\t}\n\n\t// Discover SSR data routes\n\tconst ssrDataFeeds = new Map<string, RSSItem[]>();\n\tconst { discoverRoutes } = await import('../sitemap/discovery');\n\tconst { staticRoutes } = await discoverRoutes(cwd, isWatchMode);\n\n\tfor (const route of staticRoutes) {\n\t\t// Skip routes excluded from SSR data discovery\n\t\tif (rssConfig?.excludeDiscovery?.includes(route.pattern)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst items = await discoverSSRDataFeedItems(\n\t\t\tcwd,\n\t\t\tclientDir,\n\t\t\troute.pattern,\n\t\t\troute.path,\n\t\t\tisWatchMode,\n\t\t\tbaseUrl,\n\t\t\trssConfig,\n\t\t);\n\n\t\tif (items.length > 0) {\n\t\t\tssrDataFeeds.set(route.pattern, items);\n\t\t}\n\t}\n\n\t// Also discover layout ssr.data\n\tconst layoutFeeds = await discoverLayoutFeedItems(\n\t\tcwd,\n\t\tclientDir,\n\t\tisWatchMode,\n\t\tbaseUrl,\n\t\trssConfig,\n\t);\n\tfor (const [pattern, items] of layoutFeeds.entries()) {\n\t\tconst existing = ssrDataFeeds.get(pattern) || [];\n\t\tssrDataFeeds.set(pattern, [...existing, ...items]);\n\t}\n\n\treturn {\n\t\tcollections: collectionsMap,\n\t\tssrDataFeeds,\n\t};\n}\n\n/**\n * Discover RSS urls from layout ssr.data\n */\nasync function discoverLayoutFeedItems(\n\tcwd: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n\tbaseUrl: string,\n\trssConfig?: RSSOptions,\n): Promise<Map<string, RSSItem[]>> {\n\tconst layoutFeeds = new Map<string, RSSItem[]>();\n\n\ttry {\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\tconst url = pathToFileURL(routesPath).href;\n\t\tconst mod = await import(`${url}${isWatchMode ? `?t=${Date.now()}` : ''}`);\n\n\t\tconst layouts = (mod as Doc)?.layouts as Doc[] | undefined;\n\t\tif (Array.isArray(layouts)) {\n\t\t\tfor (const layout of layouts) {\n\t\t\t\tconst pattern = String(layout?.pattern || '/');\n\t\t\t\tconst path = String(layout?.path || '');\n\n\t\t\t\tif (!path) continue;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst abs = join(clientDir, 'routes', path);\n\t\t\t\t\tconst layoutMod = (await import(\n\t\t\t\t\t\tpathToFileURL(abs).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t\t\t)) as Doc;\n\n\t\t\t\t\tconst ssr = (layoutMod as Doc)?.ssr as Doc | undefined;\n\t\t\t\t\tconst dataFn = (ssr as Doc)?.data as\n\t\t\t\t\t\t| ((ctx: Doc) => unknown | Promise<unknown>)\n\t\t\t\t\t\t| undefined;\n\n\t\t\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\t\t\tconst mockSet = { status: 200 };\n\t\t\t\t\t\tconst result = await dataFn({\n\t\t\t\t\t\t\tpathname: pattern,\n\t\t\t\t\t\t\tparams: {},\n\t\t\t\t\t\t\tset: mockSet,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst items = extractRSSItemsFromData(\n\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\tpattern,\n\t\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\t\trssConfig,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (items.length > 0) {\n\t\t\t\t\t\t\tlayoutFeeds.set(pattern, items);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Layout doesn't have ssr.data or failed - skip\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// routes.ts doesn't exist or failed to load\n\t}\n\n\treturn layoutFeeds;\n}\n\nexport {\n\tdiscoverLayoutFeedItems,\n\tdiscoverRSSData,\n\tdiscoverSSRDataFeedItems,\n\ttype RSSDiscoveryResult,\n\ttype RSSFeed,\n\ttype RSSItem,\n};\n",
|
|
13
13
|
"import type { RSSFeed } from './discovery';\n\ntype RSSFormat = 'rss' | 'atom';\n\ntype RSSGeneratorOptions = {\n\tformat?: RSSFormat;\n\tlimit?: number;\n};\n\n/**\n * Generate RSS 2.0 XML\n */\nexport function generateRSSXML(\n\tfeed: RSSFeed,\n\toptions: RSSGeneratorOptions = {},\n): string {\n\tconst { limit } = options;\n\tconst items = limit ? feed.items.slice(0, limit) : feed.items;\n\n\tconst itemsXML = items\n\t\t.map((item) => {\n\t\t\tlet xml = ' <item>\\n';\n\t\t\txml += ` <title>${escapeXml(item.title)}</title>\\n`;\n\t\t\txml += ` <link>${escapeXml(item.link)}</link>\\n`;\n\n\t\t\tif (item.description) {\n\t\t\t\txml += ` <description>${escapeXml(item.description)}</description>\\n`;\n\t\t\t}\n\n\t\t\tif (item.pubDate) {\n\t\t\t\txml += ` <pubDate>${item.pubDate}</pubDate>\\n`;\n\t\t\t}\n\n\t\t\tif (item.guid) {\n\t\t\t\txml += ` <guid isPermaLink=\"true\">${escapeXml(item.guid)}</guid>\\n`;\n\t\t\t}\n\n\t\t\tif (item.author) {\n\t\t\t\txml += ` <author>${escapeXml(item.author)}</author>\\n`;\n\t\t\t}\n\n\t\t\tif (item.content) {\n\t\t\t\txml += ` <content:encoded><![CDATA[${item.content}]]></content:encoded>\\n`;\n\t\t\t}\n\n\t\t\txml += ' </item>';\n\t\t\treturn xml;\n\t\t})\n\t\t.join('\\n');\n\n\tconst lastBuildDate = new Date().toUTCString();\n\n\treturn `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n <channel>\n <title>${escapeXml(feed.title)}</title>\n <link>${escapeXml(feed.link)}</link>\n <description>${escapeXml(feed.description)}</description>\n <lastBuildDate>${lastBuildDate}</lastBuildDate>\n <language>en</language>\n <atom:link href=\"${escapeXml(feed.link)}\" rel=\"self\" type=\"application/rss+xml\" />\n${itemsXML}\n </channel>\n</rss>`;\n}\n\n/**\n * Generate Atom XML\n */\nexport function generateAtomXML(\n\tfeed: RSSFeed,\n\toptions: RSSGeneratorOptions = {},\n): string {\n\tconst { limit } = options;\n\tconst items = limit ? feed.items.slice(0, limit) : feed.items;\n\n\tconst entriesXML = items\n\t\t.map((item) => {\n\t\t\tlet xml = ' <entry>\\n';\n\t\t\txml += ` <title>${escapeXml(item.title)}</title>\\n`;\n\t\t\txml += ` <link href=\"${escapeXml(item.link)}\" />\\n`;\n\t\t\txml += ` <id>${escapeXml(item.guid || item.link)}</id>\\n`;\n\n\t\t\tif (item.pubDate) {\n\t\t\t\t// Convert to ISO 8601 for Atom\n\t\t\t\tconst isoDate = new Date(item.pubDate).toISOString();\n\t\t\t\txml += ` <published>${isoDate}</published>\\n`;\n\t\t\t\txml += ` <updated>${isoDate}</updated>\\n`;\n\t\t\t}\n\n\t\t\tif (item.author) {\n\t\t\t\txml += ` <author>\\n`;\n\t\t\t\txml += ` <name>${escapeXml(item.author)}</name>\\n`;\n\t\t\t\txml += ` </author>\\n`;\n\t\t\t}\n\n\t\t\tif (item.description) {\n\t\t\t\txml += ` <summary>${escapeXml(item.description)}</summary>\\n`;\n\t\t\t}\n\n\t\t\tif (item.content) {\n\t\t\t\txml += ` <content type=\"html\"><![CDATA[${item.content}]]></content>\\n`;\n\t\t\t}\n\n\t\t\txml += ' </entry>';\n\t\t\treturn xml;\n\t\t})\n\t\t.join('\\n');\n\n\tconst updated = new Date().toISOString();\n\n\treturn `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<feed xmlns=\"http://www.w3.org/2005/Atom\">\n <title>${escapeXml(feed.title)}</title>\n <link href=\"${escapeXml(feed.link)}\" rel=\"self\" />\n <updated>${updated}</updated>\n <id>${escapeXml(feed.link)}</id>\n${entriesXML}\n</feed>`;\n}\n\n/**\n * Generate feed based on format\n */\nexport function generateFeed(\n\tfeed: RSSFeed,\n\toptions: RSSGeneratorOptions = {},\n): string {\n\tconst format = options.format || 'rss';\n\n\tif (format === 'atom') {\n\t\treturn generateAtomXML(feed, options);\n\t}\n\n\treturn generateRSSXML(feed, options);\n}\n\n/**\n * Escape XML special characters\n */\nfunction escapeXml(unsafe: string): string {\n\treturn unsafe\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/'/g, ''');\n}\n",
|
|
14
14
|
"export * from './discovery';\nexport * from './generator';\n",
|
|
15
|
-
"import type { SitemapDiscoveryResult, SitemapEntry } from './discovery';\n\nconst DEFAULT_MAX_URLS = 50000; // Google's limit per sitemap\n\ntype SitemapPage = {\n\tfilename: string;\n\txml: string;\n\tentryCount: number;\n};\n\ntype SitemapResult = {\n\tpages: SitemapPage[];\n\tindexXml?: string;\n\tneedsIndex: boolean;\n};\n\n/**\n * Generate sitemap XML from discovery result\n */\nasync function generateSitemap(\n\tdiscovery: SitemapDiscoveryResult,\n\tbaseUrl: string,\n\toptions: {\n\t\tchangefreq?:\n\t\t\t| 'always'\n\t\t\t| 'hourly'\n\t\t\t| 'daily'\n\t\t\t| 'weekly'\n\t\t\t| 'monthly'\n\t\t\t| 'yearly'\n\t\t\t| 'never';\n\t\tpriority?: number;\n\t\tmaxUrlsPerPage?: number;\n\t} = {},\n): Promise<SitemapResult> {\n\tconst {\n\t\tchangefreq = 'weekly',\n\t\tpriority = 0.5,\n\t\tmaxUrlsPerPage = DEFAULT_MAX_URLS,\n\t} = options;\n\n\tconst allEntries: SitemapEntry[] = [];\n\n\t// Add static routes (skip dynamic patterns with :param)\n\tfor (const route of discovery.staticRoutes) {\n\t\t// Skip dynamic route patterns (they shouldn't be in staticRoutes, but double-check)\n\t\tif (route.pattern.includes(':')) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Normalize the pattern to URL\n\t\tlet loc = route.pattern;\n\n\t\t// Convert /index to /\n\t\tif (loc === '/index') {\n\t\t\tloc = '/';\n\t\t} else if (loc.endsWith('/index')) {\n\t\t\tloc = loc.slice(0, -6) || '/';\n\t\t}\n\n\t\t// Remove .tsx, .ts, .jsx, .js extensions\n\t\tloc = loc.replace(/\\.(tsx?|jsx?)$/, '');\n\n\t\tallEntries.push({\n\t\t\tloc: `${baseUrl}${loc}`,\n\t\t\tchangefreq: route.changefreq || changefreq,\n\t\t\tpriority:\n\t\t\t\troute.priority !== undefined\n\t\t\t\t\t? route.priority\n\t\t\t\t\t: loc === '/'\n\t\t\t\t\t\t? 1.0\n\t\t\t\t\t\t: priority,\n\t\t});\n\t}\n\n\t// Add collection content\n\tfor (const [_collection, entries] of discovery.collections.entries()) {\n\t\tallEntries.push(...entries);\n\t}\n\n\t// Add SSR data routes\n\tfor (const [_pattern, entries] of discovery.ssrDataRoutes.entries()) {\n\t\tallEntries.push(...entries);\n\t}\n\n\t// Sort by priority (desc) and then by URL (asc)\n\tallEntries.sort((a, b) => {\n\t\tconst priorityDiff = (b.priority || 0.5) - (a.priority || 0.5);\n\t\tif (priorityDiff !== 0) return priorityDiff;\n\t\treturn a.loc.localeCompare(b.loc);\n\t});\n\n\t// Paginate if needed\n\tconst pages: SitemapPage[] = [];\n\tconst needsIndex = allEntries.length > maxUrlsPerPage;\n\n\tif (needsIndex) {\n\t\t// Create multiple sitemap files\n\t\tlet pageNum = 0;\n\t\tfor (let i = 0; i < allEntries.length; i += maxUrlsPerPage) {\n\t\t\tconst pageEntries = allEntries.slice(i, i + maxUrlsPerPage);\n\t\t\tconst xml = generateSitemapXML(pageEntries);\n\t\t\tconst filename = `sitemap-${pageNum}.xml`;\n\n\t\t\tpages.push({\n\t\t\t\tfilename,\n\t\t\t\txml,\n\t\t\t\tentryCount: pageEntries.length,\n\t\t\t});\n\t\t\tpageNum++;\n\t\t}\n\n\t\t// Create sitemap index\n\t\tconst indexXml = generateSitemapIndexXML(pages, baseUrl);\n\t\treturn { pages, indexXml, needsIndex: true };\n\t} else {\n\t\t// Single sitemap file\n\t\tconst xml = generateSitemapXML(allEntries);\n\t\tpages.push({\n\t\t\tfilename: 'sitemap.xml',\n\t\t\txml,\n\t\t\tentryCount: allEntries.length,\n\t\t});\n\n\t\treturn { pages, needsIndex: false };\n\t}\n}\n\n/**\n * Generate sitemap XML for a set of entries\n */\nfunction generateSitemapXML(entries: SitemapEntry[]): string {\n\tconst urlsetEntries = entries\n\t\t.map((entry) => {\n\t\t\tlet xml = ` <url>\\n <loc>${escapeXml(entry.loc)}</loc>`;\n\n\t\t\tif (entry.lastmod) {\n\t\t\t\txml += `\\n <lastmod>${entry.lastmod.split('T')[0]}</lastmod>`;\n\t\t\t}\n\n\t\t\tif (entry.changefreq) {\n\t\t\t\txml += `\\n <changefreq>${entry.changefreq}</changefreq>`;\n\t\t\t}\n\n\t\t\tif (entry.priority !== undefined) {\n\t\t\t\txml += `\\n <priority>${entry.priority.toFixed(1)}</priority>`;\n\t\t\t}\n\n\t\t\txml += '\\n </url>';\n\t\t\treturn xml;\n\t\t})\n\t\t.join('\\n');\n\n\treturn `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${urlsetEntries}\n</urlset>`;\n}\n\n/**\n * Generate sitemap index XML\n */\nfunction generateSitemapIndexXML(\n\tpages: SitemapPage[],\n\tbaseUrl: string,\n): string {\n\tconst lastmod = new Date().toISOString().split('T')[0];\n\n\tconst sitemapEntries = pages\n\t\t.map((page) => {\n\t\t\treturn ` <sitemap>\n <loc>${escapeXml(`${baseUrl}/${page.filename}`)}</loc>\n <lastmod>${lastmod}</lastmod>\n </sitemap>`;\n\t\t})\n\t\t.join('\\n');\n\n\treturn `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${sitemapEntries}\n</sitemapindex>`;\n}\n\n/**\n * Escape XML special characters\n */\nfunction escapeXml(unsafe: string): string {\n\treturn unsafe\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/'/g, ''');\n}\n\nexport {\n\tescapeXml,\n\tgenerateSitemap,\n\tgenerateSitemapIndexXML,\n\tgenerateSitemapXML,\n\ttype SitemapPage,\n\ttype SitemapResult,\n};\n",
|
|
15
|
+
"import type { SitemapDiscoveryResult, SitemapEntry } from './discovery';\n\nconst DEFAULT_MAX_URLS = 50000; // Google's limit per sitemap\n\ntype SitemapPage = {\n\tfilename: string;\n\txml: string;\n\tentryCount: number;\n};\n\ntype SitemapResult = {\n\tpages: SitemapPage[];\n\tindexXml?: string;\n\tneedsIndex: boolean;\n};\n\n/**\n * Generate sitemap XML from discovery result\n */\nasync function generateSitemap(\n\tdiscovery: SitemapDiscoveryResult,\n\tbaseUrl: string,\n\toptions: {\n\t\tchangefreq?:\n\t\t\t| 'always'\n\t\t\t| 'hourly'\n\t\t\t| 'daily'\n\t\t\t| 'weekly'\n\t\t\t| 'monthly'\n\t\t\t| 'yearly'\n\t\t\t| 'never';\n\t\tpriority?: number;\n\t\tmaxUrlsPerPage?: number;\n\t\texcludeRoutes?: string[];\n\t} = {},\n): Promise<SitemapResult> {\n\tconst {\n\t\tchangefreq = 'weekly',\n\t\tpriority = 0.5,\n\t\tmaxUrlsPerPage = DEFAULT_MAX_URLS,\n\t} = options;\n\n\tconst allEntries: SitemapEntry[] = [];\n\n\t// Add static routes (skip dynamic patterns with :param)\n\tfor (const route of discovery.staticRoutes) {\n\t\t// Skip dynamic route patterns (they shouldn't be in staticRoutes, but double-check)\n\t\tif (route.pattern.includes(':')) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Skip completely excluded routes\n\t\tif (options.excludeRoutes?.includes(route.pattern)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Normalize the pattern to URL\n\t\tlet loc = route.pattern;\n\n\t\t// Convert /index to /\n\t\tif (loc === '/index') {\n\t\t\tloc = '/';\n\t\t} else if (loc.endsWith('/index')) {\n\t\t\tloc = loc.slice(0, -6) || '/';\n\t\t}\n\n\t\t// Remove .tsx, .ts, .jsx, .js extensions\n\t\tloc = loc.replace(/\\.(tsx?|jsx?)$/, '');\n\n\t\tallEntries.push({\n\t\t\tloc: `${baseUrl}${loc}`,\n\t\t\tchangefreq: route.changefreq || changefreq,\n\t\t\tpriority:\n\t\t\t\troute.priority !== undefined\n\t\t\t\t\t? route.priority\n\t\t\t\t\t: loc === '/'\n\t\t\t\t\t\t? 1.0\n\t\t\t\t\t\t: priority,\n\t\t});\n\t}\n\n\t// Add collection content\n\tfor (const [_collection, entries] of discovery.collections.entries()) {\n\t\tallEntries.push(...entries);\n\t}\n\n\t// Add SSR data routes\n\tfor (const [_pattern, entries] of discovery.ssrDataRoutes.entries()) {\n\t\tallEntries.push(...entries);\n\t}\n\n\t// Sort by priority (desc) and then by URL (asc)\n\tallEntries.sort((a, b) => {\n\t\tconst priorityDiff = (b.priority || 0.5) - (a.priority || 0.5);\n\t\tif (priorityDiff !== 0) return priorityDiff;\n\t\treturn a.loc.localeCompare(b.loc);\n\t});\n\n\t// Paginate if needed\n\tconst pages: SitemapPage[] = [];\n\tconst needsIndex = allEntries.length > maxUrlsPerPage;\n\n\tif (needsIndex) {\n\t\t// Create multiple sitemap files\n\t\tlet pageNum = 0;\n\t\tfor (let i = 0; i < allEntries.length; i += maxUrlsPerPage) {\n\t\t\tconst pageEntries = allEntries.slice(i, i + maxUrlsPerPage);\n\t\t\tconst xml = generateSitemapXML(pageEntries);\n\t\t\tconst filename = `sitemap-${pageNum}.xml`;\n\n\t\t\tpages.push({\n\t\t\t\tfilename,\n\t\t\t\txml,\n\t\t\t\tentryCount: pageEntries.length,\n\t\t\t});\n\t\t\tpageNum++;\n\t\t}\n\n\t\t// Create sitemap index\n\t\tconst indexXml = generateSitemapIndexXML(pages, baseUrl);\n\t\treturn { pages, indexXml, needsIndex: true };\n\t} else {\n\t\t// Single sitemap file\n\t\tconst xml = generateSitemapXML(allEntries);\n\t\tpages.push({\n\t\t\tfilename: 'sitemap.xml',\n\t\t\txml,\n\t\t\tentryCount: allEntries.length,\n\t\t});\n\n\t\treturn { pages, needsIndex: false };\n\t}\n}\n\n/**\n * Generate sitemap XML for a set of entries\n */\nfunction generateSitemapXML(entries: SitemapEntry[]): string {\n\tconst urlsetEntries = entries\n\t\t.map((entry) => {\n\t\t\tlet xml = ` <url>\\n <loc>${escapeXml(entry.loc)}</loc>`;\n\n\t\t\tif (entry.lastmod) {\n\t\t\t\txml += `\\n <lastmod>${entry.lastmod.split('T')[0]}</lastmod>`;\n\t\t\t}\n\n\t\t\tif (entry.changefreq) {\n\t\t\t\txml += `\\n <changefreq>${entry.changefreq}</changefreq>`;\n\t\t\t}\n\n\t\t\tif (entry.priority !== undefined) {\n\t\t\t\txml += `\\n <priority>${entry.priority.toFixed(1)}</priority>`;\n\t\t\t}\n\n\t\t\txml += '\\n </url>';\n\t\t\treturn xml;\n\t\t})\n\t\t.join('\\n');\n\n\treturn `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${urlsetEntries}\n</urlset>`;\n}\n\n/**\n * Generate sitemap index XML\n */\nfunction generateSitemapIndexXML(\n\tpages: SitemapPage[],\n\tbaseUrl: string,\n): string {\n\tconst lastmod = new Date().toISOString().split('T')[0];\n\n\tconst sitemapEntries = pages\n\t\t.map((page) => {\n\t\t\treturn ` <sitemap>\n <loc>${escapeXml(`${baseUrl}/${page.filename}`)}</loc>\n <lastmod>${lastmod}</lastmod>\n </sitemap>`;\n\t\t})\n\t\t.join('\\n');\n\n\treturn `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${sitemapEntries}\n</sitemapindex>`;\n}\n\n/**\n * Escape XML special characters\n */\nfunction escapeXml(unsafe: string): string {\n\treturn unsafe\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/'/g, ''');\n}\n\nexport {\n\tescapeXml,\n\tgenerateSitemap,\n\tgenerateSitemapIndexXML,\n\tgenerateSitemapXML,\n\ttype SitemapPage,\n\ttype SitemapResult,\n};\n",
|
|
16
16
|
"export * from './discovery';\nexport * from './generator';\n",
|
|
17
17
|
"type CacheEntry<T> = {\n\tdata: T;\n\ttimestamp: number;\n\tmaxAge: number;\n};\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\t// Only start interval once globally\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; // Don't cache if maxAge is 0 or negative\n\n\t\tthis.cache.set(key, {\n\t\t\tdata,\n\t\t\ttimestamp: Date.now(),\n\t\t\tmaxAge, // maxAge should be in milliseconds\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// Simple LRU Cache implementation for backward compatibility\nexport class LRUCache<K, V> {\n\tprivate cache: Map<K, V> = new Map();\n\tprivate maxSize: number;\n\n\tconstructor(maxSize: number = 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\t// Delete if exists (to update position)\n\t\tthis.cache.delete(key);\n\n\t\t// Evict oldest if at capacity\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// Global singleton instance - persist across module reloads in dev mode\n// Use globalThis to ensure cache survives hot reloads\nconst getGlobalCache = (): SSRDataCache => {\n\tconst g = globalThis as typeof globalThis & {\n\t\t__REROUTE_SSR_CACHE__?: SSRDataCache;\n\t\t__REROUTE_SSR_CACHE_INIT__?: boolean;\n\t};\n\n\tif (!g.__REROUTE_SSR_CACHE__) {\n\t\tg.__REROUTE_SSR_CACHE__ = new SSRDataCache();\n\t\tg.__REROUTE_SSR_CACHE_INIT__ = true;\n\t}\n\n\treturn g.__REROUTE_SSR_CACHE__;\n};\n\nconst ssrCache = getGlobalCache();\n\n/**\n * Separate cache for HTTP status codes\n * Used to cache status codes from SSR data functions for fast lookup\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 statusCache = getGlobalStatusCache();\n\nexport { ssrCache, statusCache, SSRDataCache };\nexport type { CacheEntry };\n",
|
|
18
18
|
"import { pathToFileURL } from 'node:url';\nimport { join } from './path';\n\n// biome-ignore lint/suspicious/noExplicitAny: flexible types\ntype Doc = any;\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 import(\n\t\t\tpathToFileURL(p).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t);\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 as Doc;\n\t} catch {}\n}\n",
|
|
@@ -44,12 +44,12 @@
|
|
|
44
44
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport { computeSSRDataForPath, type LRUCache } from 'reroute-js/core';\nimport { jsonError, jsonWithCache } from '../libs/http';\n\ntype InternalRouteOptions = {\n\tclientDir: string;\n\tcwd: string;\n\tdataCacheControl?: string;\n\tdataCache?: LRUCache<string, unknown>;\n\tisWatchMode: boolean;\n};\n\n/**\n * Register internal Reroute routes (production-critical)\n * - /__reroute_preload: Content module preloading for SSR hydration\n * - /__reroute_data: Client-side navigation data fetching\n */\nexport function registerInternalRoutes(\n\tapp: Elysia,\n\topts: InternalRouteOptions,\n): Elysia {\n\tconst { clientDir, cwd, dataCacheControl, dataCache, isWatchMode } = opts;\n\n\t// Content module preload endpoint (used in SSR for hydration - ALWAYS needed)\n\tapp.get('/__reroute_preload', async ({ query }) => {\n\t\tconst rawSrc = String(query.src || '').trim();\n\t\tconst key = String(query.key || '').trim();\n\t\tlet src = rawSrc;\n\t\ttry {\n\t\t\tsrc = decodeURIComponent(rawSrc);\n\t\t} catch {}\n\t\tconst safeChunk =\n\t\t\tsrc.startsWith('/.reroute/chunks/') && /^[A-Za-z0-9_./-]+\\.js$/.test(src);\n\t\tconst safeBundle =\n\t\t\tsrc.startsWith('/bundles/') && /^[A-Za-z0-9_./-]+\\.js$/.test(src);\n\t\tconst safeSource =\n\t\t\tsrc.startsWith('/routes/') &&\n\t\t\t/^[A-Za-z0-9_./\\-[\\]]+\\.(tsx?|js)$/.test(src);\n\t\tconst safe = (safeChunk || safeBundle || safeSource) && !src.includes('..');\n\t\tif (!safe || !key) throw new NotFoundError();\n\n\t\t// Use static import to guarantee execution ordering and avoid race during hydration\n\t\tconst code =\n\t\t\t`// preload for ${key}\\n` +\n\t\t\t`import * as __m from '${src}';\\n` +\n\t\t\t`const __C = __m.default || __m;\\n` +\n\t\t\t`(globalThis.__REROUTE_MODULES__ ||= {});\\n` +\n\t\t\t`globalThis.__REROUTE_MODULES__['${key}'] = __C;\\n` +\n\t\t\t`export {};`;\n\n\t\t// Use no-cache in watch mode to ensure fresh modules\n\t\tconst cacheControl = isWatchMode\n\t\t\t? 'no-cache, no-store, must-revalidate'\n\t\t\t: 'public, max-age=31536000, immutable';\n\n\t\treturn new Response(code, {\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/javascript; charset=utf-8',\n\t\t\t\t'cache-control': cacheControl,\n\t\t\t},\n\t\t});\n\t});\n\n\t// Data endpoint for client Link prefetch and client navigations (ALWAYS needed)\n\tapp.get('/__reroute_data', async ({ query, headers }) => {\n\t\tconst p = String(query.path || query.p || '/');\n\t\tconst dataKey = String(query.key || '');\n\t\tlet pathname = '/';\n\t\ttry {\n\t\t\tconst u = new URL(p, 'http://localhost');\n\t\t\tpathname = u.pathname + u.search;\n\t\t} catch {\n\t\t\tpathname = String(p);\n\t\t}\n\t\ttry {\n\t\t\t// If a specific key is requested, we need to fetch and resolve just that key\n\t\t\t// This is used for progressive loading during SPA navigation\n\t\t\tif (dataKey) {\n\t\t\t\t// Import the necessary function to get the raw promise-based data\n\t\t\t\tconst { computeSSRData } = await import('reroute-js/core');\n\n\t\t\t\tconst cacheKey = `${pathname}:promises`;\n\t\t\t\tlet promiseData = dataCache?.get(cacheKey) as\n\t\t\t\t\t| Record<string, unknown>\n\t\t\t\t\t| undefined;\n\n\t\t\t\tif (!promiseData) {\n\t\t\t\t\t// Get the raw data with promises (streaming mode)\n\t\t\t\t\tconst { data } = await computeSSRData(\n\t\t\t\t\t\tpathname,\n\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstreaming: true,\n\t\t\t\t\t\t\tmaxAge: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\tpromiseData = data as Record<string, unknown>;\n\t\t\t\t\t// Cache the promise-based data\n\t\t\t\t\tdataCache?.set(cacheKey, promiseData);\n\t\t\t\t}\n\n\t\t\t\t// Extract the specific key's promise and await it\n\t\t\t\tif (promiseData && typeof promiseData === 'object') {\n\t\t\t\t\tconst value = promiseData[dataKey];\n\t\t\t\t\tif (value instanceof Promise) {\n\t\t\t\t\t\tconst resolved = await value;\n\t\t\t\t\t\t// Cache the resolved value\n\t\t\t\t\t\tconst resolvedCacheKey = `${pathname}:${dataKey}:resolved`;\n\t\t\t\t\t\tdataCache?.set(resolvedCacheKey, resolved);\n\t\t\t\t\t\treturn jsonWithCache(\n\t\t\t\t\t\t\t{ data: resolved },\n\t\t\t\t\t\t\tdataCacheControl || 'no-cache',\n\t\t\t\t\t\t\theaders as Record<string, string>,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (value !== undefined) {\n\t\t\t\t\t\treturn jsonWithCache(\n\t\t\t\t\t\t\t{ data: value },\n\t\t\t\t\t\t\tdataCacheControl || 'no-cache',\n\t\t\t\t\t\t\theaders as Record<string, string>,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fallback: key not found\n\t\t\t\treturn jsonError('key not found', 404);\n\t\t\t}\n\n\t\t\t// Check cache first (consistent in all modes)\n\t\t\tlet data = dataCache?.get(pathname);\n\n\t\t\tif (data === undefined) {\n\t\t\t\tdata = await computeSSRDataForPath({\n\t\t\t\t\tpathname,\n\t\t\t\t\tclientDir,\n\t\t\t\t\tcwd,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t});\n\t\t\t\t// Cache the result (even in watch mode for request deduplication)\n\t\t\t\tdataCache?.set(pathname, data);\n\t\t\t}\n\n\t\t\treturn jsonWithCache(\n\t\t\t\t{ data },\n\t\t\t\tdataCacheControl || 'no-cache',\n\t\t\t\theaders as Record<string, string>,\n\t\t\t);\n\t\t} catch (_e) {\n\t\t\treturn jsonError('failed', 500);\n\t\t}\n\t});\n\n\treturn app;\n}\n\n/**\n * Register live reload routes (dev-only)\n * - /__reroute_watch: SSE endpoint for live reload notifications\n * - /__reroute_watch.js: Client-side watch module\n */\ntype LiveReloadState = {\n\tclients: Set<ReadableStreamDefaultController>;\n\tpendingReload: boolean;\n};\n\nexport function registerLiveReloadRoutes(\n\tapp: Elysia,\n\tstate: LiveReloadState,\n): Elysia {\n\t// SSE endpoint for live reload\n\tconsole.log('[reroute] Registering SSE endpoint at /__reroute_watch');\n\tapp.get('/__reroute_watch', () => {\n\t\tconst encoder = new TextEncoder();\n\t\tlet interval: NodeJS.Timeout;\n\t\tlet currentController: ReadableStreamDefaultController | null = null;\n\t\tconst stream = new ReadableStream({\n\t\t\tstart(controller) {\n\t\t\t\tcurrentController = controller;\n\t\t\t\tstate.clients.add(controller);\n\t\t\t\tconsole.log('[reroute] Browser connected for live reload');\n\t\t\t\t// Send connect + retry hint\n\t\t\t\tcontroller.enqueue(encoder.encode('retry: 1000\\n'));\n\t\t\t\tcontroller.enqueue(encoder.encode('data: connected\\n\\n'));\n\t\t\t\tif (state.pendingReload) {\n\t\t\t\t\tcontroller.enqueue(encoder.encode('data: reload\\n\\n'));\n\t\t\t\t\tstate.pendingReload = false;\n\t\t\t\t}\n\t\t\t\t// Heartbeat every 25s to keep connections alive behind proxies\n\t\t\t\tinterval = setInterval(() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcontroller.enqueue(encoder.encode(': ping\\n\\n'));\n\t\t\t\t\t} catch {}\n\t\t\t\t}, 25000);\n\t\t\t},\n\t\t\tcancel() {\n\t\t\t\tif (interval) clearInterval(interval);\n\t\t\t\tif (currentController) {\n\t\t\t\t\tstate.clients.delete(currentController);\n\t\t\t\t}\n\t\t\t\tconsole.log('[reroute] Browser disconnected from live reload');\n\t\t\t},\n\t\t});\n\n\t\treturn new Response(stream, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/event-stream',\n\t\t\t\t'Cache-Control': 'no-cache',\n\t\t\t\tConnection: 'keep-alive',\n\t\t\t},\n\t\t});\n\t});\n\n\t// External preload module: imports a content chunk and seeds client store\n\tapp.get('/__reroute_watch.js', () => {\n\t\tconst code = `// Reroute live reload client\nlet eventSource = null;\nlet hasConnected = false;\nlet wasDisconnected = false;\nlet reloadTriggered = false;\n\nfunction connect() {\n if (reloadTriggered) return; // Don't reconnect if reload is pending\n \n eventSource = new EventSource('/__reroute_watch');\n \n eventSource.addEventListener('message', (e) => {\n if (e.data === 'connected') {\n // If this is a reconnection (not the first connection), reload the page\n if (hasConnected && wasDisconnected && !reloadTriggered) {\n console.log('[reroute] Reconnected after server restart, reloading...');\n reloadTriggered = true;\n eventSource?.close();\n window.location.reload();\n return;\n }\n hasConnected = true;\n wasDisconnected = false;\n console.log('[reroute] Live reload connected');\n } else if (e.data === 'reload') {\n console.log('[reroute] Reloading...');\n reloadTriggered = true;\n eventSource?.close();\n window.location.reload();\n }\n });\n\n eventSource.addEventListener('error', () => {\n if (reloadTriggered) return;\n wasDisconnected = true;\n eventSource?.close();\n // Retry connection after a delay\n setTimeout(connect, 1000);\n });\n}\n\nconnect();\n`;\n\n\t\treturn new Response(code, {\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/javascript; charset=utf-8',\n\t\t\t\t'cache-control': 'no-cache',\n\t\t\t},\n\t\t});\n\t});\n\n\treturn app;\n}\n",
|
|
45
45
|
"// 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\nconst makeETag = (s: string) => {\n\ttry {\n\t\t// Prefer Bun.hash if available (fast)\n\t\tconst h = (globalThis as Any)?.Bun?.hash?.(s) ?? 0;\n\t\treturn `W/\"${s.length.toString(16)}-${Number(h).toString(36)}\"`;\n\t} catch {\n\t\t// Fallback: length-based weak tag\n\t\treturn `W/\"${s.length.toString(16)}-0\"`;\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): Response {\n\tconst body = typeof payload === 'string' ? payload : JSON.stringify(payload);\n\tconst etag = makeETag(body);\n\tconst inm = getIfNoneMatch(reqHeaders) || '';\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\t\tETag: etag,\n\t\t\t\t'Cache-Control': cacheControl,\n\t\t\t},\n\t\t});\n\t}\n\n\treturn new Response(body, {\n\t\theaders: {\n\t\t\t'Content-Type': 'application/json; charset=utf-8',\n\t\t\t'Cache-Control': cacheControl,\n\t\t\tETag: etag,\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",
|
|
46
46
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } 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\tconst compiled = compileRedirects(rules);\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\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\tlet destination: string | null = null;\n\t\t\tlet isHandlerFunction = false;\n\n\t\t\t// Handle function-based redirects\n\t\t\tif (typeof match.destination === 'function') {\n\t\t\t\tisHandlerFunction = true;\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await match.destination(url);\n\t\t\t\t\tif (result === null) {\n\t\t\t\t\t\t// Handler explicitly returned null - throw 404 to render [404].tsx\n\t\t\t\t\t\tthrow new NotFoundError();\n\t\t\t\t\t}\n\t\t\t\t\tdestination = result;\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// If it's a NotFoundError, re-throw to trigger SSR 404 handler\n\t\t\t\t\tif (error instanceof NotFoundError) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tconsole.error('[reroute] Redirect handler error:', error);\n\t\t\t\t\tcontinue; // Skip on error and try next rule\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Handle string-based redirects with capture group replacement\n\t\t\t\t// Always replace if destination contains $ placeholders\n\t\t\t\tif (match.destination.includes('$')) {\n\t\t\t\t\tdestination = replaceCaptures(match.destination, match.captures);\n\t\t\t\t} else {\n\t\t\t\t\tdestination = match.destination;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply redirect\n\t\t\tif (destination) {\n\t\t\t\t// Only preserve query string for string-based destinations\n\t\t\t\t// Handler functions have full control over the destination URL\n\t\t\t\tlet finalDestination = destination;\n\t\t\t\tif (!isHandlerFunction && url.search && !destination.includes('?')) {\n\t\t\t\t\tfinalDestination += url.search;\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",
|
|
47
|
-
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\ttype Doc,\n\tdiscoverRSSData,\n\tgenerateFeed,\n\tjoin,\n\ttype LRUCache,\n\ttype RSSFeed,\n\ttype RSSOptions,\n} from 'reroute-js/core';\n\ntype RSSRouteOptions = {\n\tcwd: string;\n\tclientDir: string;\n\tcollections: string[];\n\tbaseUrl: string;\n\tmaxAge: number;\n\tisWatchMode: boolean;\n\trssCache: LRUCache<string, { xml: string; exp: number }>;\n\trssConfig?: RSSOptions;\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 TTL_MS = maxAge * 1000;\n\tconst limit = rssConfig?.limit || 50;\n\tconst format = rssConfig?.format || 'rss';\n\tconst feedTitle = rssConfig?.title || 'Feed';\n\tconst feedDescription = rssConfig?.description || 'Latest updates';\n\n\t// Track available feeds for client-side\n\tconst availableFeeds: string[] = ['/feed.xml'];\n\n\t// Main feed route (/feed.xml) - all content\n\tapp.get('/feed.xml', async () => {\n\t\ttry {\n\t\t\t// Check cache\n\t\t\tconst cacheKey = 'rss:main';\n\t\t\tconst cached = rssCache.get(cacheKey);\n\n\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\treturn new Response(cached.xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type':\n\t\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Discover RSS data\n\t\t\tconst discovery = await discoverRSSData(\n\t\t\t\tcwd,\n\t\t\t\tclientDir,\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\t// Combine all items from all collections\n\t\t\tconst allItems = [];\n\t\t\tfor (const [_collection, items] of discovery.collections.entries()) {\n\t\t\t\tallItems.push(...items);\n\t\t\t}\n\t\t\tfor (const [_pattern, items] of discovery.ssrDataFeeds.entries()) {\n\t\t\t\tallItems.push(...items);\n\t\t\t}\n\n\t\t\t// Sort by pubDate (newest first)\n\t\t\tallItems.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\n\t\t\t// Cache the feed\n\t\t\trssCache.set(cacheKey, {\n\t\t\t\txml,\n\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t});\n\n\t\t\treturn new Response(xml, {\n\t\t\t\tstatus: 200,\n\t\t\t\theaders: {\n\t\t\t\t\t'content-type':\n\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t},\n\t\t\t});\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\t// Discover routes and layouts with ssr.data for per-route feeds\n\tlet ssrDataRoutes: Array<{\n\t\tpattern: string;\n\t\tpath: string;\n\t\tisLayout?: boolean;\n\t}> = [];\n\ttry {\n\t\tconst { discoverRoutes } = await import('reroute-js/core');\n\t\tconst { staticRoutes } = await discoverRoutes(cwd, isWatchMode);\n\t\tssrDataRoutes = 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\t// Also discover layouts with ssr.data\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\tssrDataRoutes.push({ pattern, path, isLayout: true });\n\t\t\t}\n\t\t}\n\t} catch {}\n\n\t// Collection-specific feeds (e.g., /blog/feed.xml)\n\tfor (const collection of collections) {\n\t\tavailableFeeds.push(`/${collection}/feed.xml`);\n\t\tapp.get(`/${collection}/feed.xml`, async () => {\n\t\t\ttry {\n\t\t\t\t// Check cache\n\t\t\t\tconst cacheKey = `rss:${collection}`;\n\t\t\t\tconst cached = rssCache.get(cacheKey);\n\n\t\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\t\treturn new Response(cached.xml, {\n\t\t\t\t\t\tstatus: 200,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'content-type':\n\t\t\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Discover RSS data for this collection only\n\t\t\t\tconst discovery = await discoverRSSData(\n\t\t\t\t\tcwd,\n\t\t\t\t\tclientDir,\n\t\t\t\t\t[collection],\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\trssConfig,\n\t\t\t\t);\n\n\t\t\t\tconst items = discovery.collections.get(collection) || [];\n\n\t\t\t\tif (items.length === 0) {\n\t\t\t\t\tthrow new NotFoundError();\n\t\t\t\t}\n\n\t\t\t\tconst collectionTitle = rssConfig?.title\n\t\t\t\t\t? `${rssConfig.title} - ${collection.charAt(0).toUpperCase() + collection.slice(1)}`\n\t\t\t\t\t: `${collection.charAt(0).toUpperCase() + collection.slice(1)} Feed`;\n\n\t\t\t\tconst feed: RSSFeed = {\n\t\t\t\t\ttitle: collectionTitle,\n\t\t\t\t\tlink: `${baseUrl}/${collection}/feed.xml`,\n\t\t\t\t\tdescription: 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, { format, limit });\n\n\t\t\t\t// Cache the feed\n\t\t\t\trssCache.set(cacheKey, {\n\t\t\t\t\txml,\n\t\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t\t});\n\n\t\t\t\treturn new Response(xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type':\n\t\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\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\t// SSR data route-specific feeds (e.g., /changelog/feed.xml, /announcements/feed.xml)\n\t// First, discover which routes actually have feed items\n\tconst { discoverSSRDataFeedItems } = await import('reroute-js/core');\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\n\t\t// Check if this route has any feed items\n\t\ttry {\n\t\t\tconst items = await discoverSSRDataFeedItems(\n\t\t\t\tcwd,\n\t\t\t\tclientDir,\n\t\t\t\troute.pattern,\n\t\t\t\troute.path,\n\t\t\t\tisWatchMode,\n\t\t\t\tbaseUrl,\n\t\t\t\trssConfig,\n\t\t\t);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\troutesWithFeeds.push(route);\n\t\t\t\tavailableFeeds.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\t// Now register feeds only for routes that have items\n\tfor (const route of routesWithFeeds) {\n\t\tconst routeName = route.pattern.replace(/^\\//, '') || 'index';\n\n\t\tapp.get(`${route.pattern}/feed.xml`, async () => {\n\t\t\ttry {\n\t\t\t\t// Check cache\n\t\t\t\tconst cacheKey = `rss:${routeName}`;\n\t\t\t\tconst cached = rssCache.get(cacheKey);\n\n\t\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\t\treturn new Response(cached.xml, {\n\t\t\t\t\t\tstatus: 200,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'content-type':\n\t\t\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Discover RSS data - check if this is from layout or route ssr.data\n\t\t\t\tlet items = await discoverSSRDataFeedItems(\n\t\t\t\t\tcwd,\n\t\t\t\t\tclientDir,\n\t\t\t\t\troute.pattern,\n\t\t\t\t\troute.path,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\trssConfig,\n\t\t\t\t);\n\n\t\t\t\t// If no items and this is a layout, check for layout ssr.data\n\t\t\t\tif (items.length === 0 && route.isLayout) {\n\t\t\t\t\t// Re-discover for the main feed to get layout items\n\t\t\t\t\tconst discovery = await discoverRSSData(\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t[],\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\trssConfig,\n\t\t\t\t\t);\n\t\t\t\t\titems = discovery.ssrDataFeeds.get(route.pattern) || [];\n\t\t\t\t}\n\n\t\t\t\tif (items.length === 0) {\n\t\t\t\t\tthrow new NotFoundError();\n\t\t\t\t}\n\n\t\t\t\tconst routeTitle = rssConfig?.title\n\t\t\t\t\t? `${rssConfig.title} - ${routeName.charAt(0).toUpperCase() + routeName.slice(1)}`\n\t\t\t\t\t: `${routeName.charAt(0).toUpperCase() + routeName.slice(1)} Feed`;\n\n\t\t\t\tconst feed: RSSFeed = {\n\t\t\t\t\ttitle: routeTitle,\n\t\t\t\t\tlink: `${baseUrl}${route.pattern}/feed.xml`,\n\t\t\t\t\tdescription: rssConfig?.description || `Latest ${routeName} updates`,\n\t\t\t\t\titems,\n\t\t\t\t};\n\n\t\t\t\tconst xml = generateFeed(feed, { format, limit });\n\n\t\t\t\t// Cache the feed\n\t\t\t\trssCache.set(cacheKey, {\n\t\t\t\t\txml,\n\t\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t\t});\n\n\t\t\t\treturn new Response(xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type':\n\t\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\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(`[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\t// Store available feeds globally for SSR injection\n\t(globalThis as Doc).__REROUTE_AVAILABLE_FEEDS__ = availableFeeds;\n\n\treturn app;\n}\n",
|
|
48
|
-
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tdiscoverSitemapData,\n\tgenerateSitemap,\n\ttype LRUCache,\n\ttype SitemapOptions,\n} from 'reroute-js/core';\nimport type { Any } from '../types';\n\ntype SitemapRouteOptions = {\n\tcwd: string;\n\tclientDir: string;\n\tcollections: string[];\n\tbaseUrl: string;\n\tmaxAge: number;\n\tisWatchMode: boolean;\n\tsitemapCache: LRUCache<string, { xml: string; exp: number }>;\n\tsitemapConfig?: SitemapOptions;\n};\n\nexport function registerSitemapRoutes(\n\tapp: Elysia,\n\toptions: SitemapRouteOptions,\n): Elysia {\n\tconst {\n\t\tcwd,\n\t\tclientDir,\n\t\tcollections,\n\t\tbaseUrl,\n\t\tmaxAge,\n\t\tisWatchMode,\n\t\tsitemapCache,\n\t\tsitemapConfig,\n\t} = options;\n\n\tconst TTL_MS = maxAge * 1000;\n\n\t// Main sitemap route\n\tapp.get('/sitemap.xml', async () => {\n\t\ttry {\n\t\t\t// Check cache\n\t\t\tconst cacheKey = 'sitemap:main';\n\t\t\tconst cached = sitemapCache.get(cacheKey);\n\n\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\treturn new Response(cached.xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'application/xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generate sitemap\n\t\t\tconst discovery = await discoverSitemapData(\n\t\t\t\tcwd,\n\t\t\t\tclientDir,\n\t\t\t\tcollections,\n\t\t\t\tbaseUrl,\n\t\t\t\tisWatchMode,\n\t\t\t\tsitemapConfig,\n\t\t\t);\n\n\t\t\tconst result = await generateSitemap(discovery, baseUrl, {\n\t\t\t\tchangefreq: sitemapConfig?.changefreq,\n\t\t\t\tpriority: sitemapConfig?.priority,\n\t\t\t\tmaxUrlsPerPage: sitemapConfig?.maxUrlsPerPage,\n\t\t\t});\n\n\t\t\t// If we need an index, return the index and cache individual pages\n\t\t\tif (result.needsIndex && result.indexXml) {\n\t\t\t\t// Cache all pages\n\t\t\t\tfor (const page of result.pages) {\n\t\t\t\t\tsitemapCache.set(`sitemap:${page.filename}`, {\n\t\t\t\t\t\txml: page.xml,\n\t\t\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Cache and return index\n\t\t\t\tsitemapCache.set(cacheKey, {\n\t\t\t\t\txml: result.indexXml,\n\t\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t\t});\n\n\t\t\t\treturn new Response(result.indexXml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'application/xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// Single sitemap\n\t\t\t\tconst xml = result.pages[0]?.xml || '';\n\n\t\t\t\tsitemapCache.set(cacheKey, {\n\t\t\t\t\txml,\n\t\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t\t});\n\n\t\t\t\treturn new Response(xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'application/xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to generate sitemap:', error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\t// Paginated sitemap routes (for large sitemaps)\n\tapp.get('/sitemap-*', async ({ params }: Any) => {\n\t\tconst wildcardPath = params['*'] || '';\n\n\t\t// Match pattern like \"0.xml\", \"1.xml\", etc.\n\t\tconst pageMatch = wildcardPath.match(/^(\\d+)\\.xml$/);\n\t\tif (!pageMatch) {\n\t\t\tthrow new NotFoundError();\n\t\t}\n\n\t\tconst page = pageMatch[1];\n\t\tconst filename = `sitemap-${page}.xml`;\n\n\t\ttry {\n\t\t\t// Check cache\n\t\t\tconst cacheKey = `sitemap:${filename}`;\n\t\t\tconst cached = sitemapCache.get(cacheKey);\n\n\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\treturn new Response(cached.xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'application/xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generate sitemap to get the page\n\t\t\tconst discovery = await discoverSitemapData(\n\t\t\t\tcwd,\n\t\t\t\tclientDir,\n\t\t\t\tcollections,\n\t\t\t\tbaseUrl,\n\t\t\t\tisWatchMode,\n\t\t\t\tsitemapConfig,\n\t\t\t);\n\n\t\t\tconst result = await generateSitemap(discovery, baseUrl, {\n\t\t\t\tchangefreq: sitemapConfig?.changefreq,\n\t\t\t\tpriority: sitemapConfig?.priority,\n\t\t\t\tmaxUrlsPerPage: sitemapConfig?.maxUrlsPerPage,\n\t\t\t});\n\n\t\t\tconst pageData = result.pages.find((p) => p.filename === filename);\n\n\t\t\tif (!pageData) {\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\n\t\t\t// Cache the page\n\t\t\tsitemapCache.set(cacheKey, {\n\t\t\t\txml: pageData.xml,\n\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t});\n\n\t\t\treturn new Response(pageData.xml, {\n\t\t\t\tstatus: 200,\n\t\t\t\theaders: {\n\t\t\t\t\t'content-type': 'application/xml; charset=utf-8',\n\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (error instanceof NotFoundError) throw error;\n\t\t\tconsole.error('[reroute] Failed to generate paginated sitemap:', error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\treturn app;\n}\n",
|
|
47
|
+
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\ttype Doc,\n\tdiscoverRSSData,\n\tgenerateFeed,\n\tjoin,\n\ttype LRUCache,\n\ttype RSSFeed,\n\ttype RSSOptions,\n} from 'reroute-js/core';\n\ntype RSSRouteOptions = {\n\tcwd: string;\n\tclientDir: string;\n\tcollections: string[];\n\tbaseUrl: string;\n\tmaxAge: number;\n\tisWatchMode: boolean;\n\trssCache: LRUCache<string, { xml: string; exp: number }>;\n\trssConfig?: RSSOptions;\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 TTL_MS = maxAge * 1000;\n\tconst limit = rssConfig?.limit || 50;\n\tconst format = rssConfig?.format || 'rss';\n\tconst feedTitle = rssConfig?.title || 'Feed';\n\tconst feedDescription = rssConfig?.description || 'Latest updates';\n\n\t// Track available feeds for client-side\n\tconst availableFeeds: string[] = ['/feed.xml'];\n\n\t// Main feed route (/feed.xml) - all content\n\tapp.get('/feed.xml', async () => {\n\t\ttry {\n\t\t\t// Check cache\n\t\t\tconst cacheKey = 'rss:main';\n\t\t\tconst cached = rssCache.get(cacheKey);\n\n\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\treturn new Response(cached.xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type':\n\t\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Discover RSS data\n\t\t\tconst discovery = await discoverRSSData(\n\t\t\t\tcwd,\n\t\t\t\tclientDir,\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\t// Combine all items from all collections\n\t\t\tconst allItems = [];\n\t\t\tfor (const [_collection, items] of discovery.collections.entries()) {\n\t\t\t\tallItems.push(...items);\n\t\t\t}\n\t\t\tfor (const [_pattern, items] of discovery.ssrDataFeeds.entries()) {\n\t\t\t\tallItems.push(...items);\n\t\t\t}\n\n\t\t\t// Sort by pubDate (newest first)\n\t\t\tallItems.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\n\t\t\t// Cache the feed\n\t\t\trssCache.set(cacheKey, {\n\t\t\t\txml,\n\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t});\n\n\t\t\treturn new Response(xml, {\n\t\t\t\tstatus: 200,\n\t\t\t\theaders: {\n\t\t\t\t\t'content-type':\n\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t},\n\t\t\t});\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\t// Discover routes and layouts with ssr.data for per-route feeds\n\tlet ssrDataRoutes: Array<{\n\t\tpattern: string;\n\t\tpath: string;\n\t\tisLayout?: boolean;\n\t}> = [];\n\ttry {\n\t\tconst { discoverRoutes } = await import('reroute-js/core');\n\t\tconst { staticRoutes } = await discoverRoutes(cwd, isWatchMode);\n\t\tssrDataRoutes = 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\t// Also discover layouts with ssr.data\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\tssrDataRoutes.push({ pattern, path, isLayout: true });\n\t\t\t}\n\t\t}\n\t} catch {}\n\n\t// Collection-specific feeds (e.g., /blog/feed.xml)\n\tfor (const collection of collections) {\n\t\tavailableFeeds.push(`/${collection}/feed.xml`);\n\t\tapp.get(`/${collection}/feed.xml`, async () => {\n\t\t\ttry {\n\t\t\t\t// Check cache\n\t\t\t\tconst cacheKey = `rss:${collection}`;\n\t\t\t\tconst cached = rssCache.get(cacheKey);\n\n\t\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\t\treturn new Response(cached.xml, {\n\t\t\t\t\t\tstatus: 200,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'content-type':\n\t\t\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Discover RSS data for this collection only\n\t\t\t\tconst discovery = await discoverRSSData(\n\t\t\t\t\tcwd,\n\t\t\t\t\tclientDir,\n\t\t\t\t\t[collection],\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\trssConfig,\n\t\t\t\t);\n\n\t\t\t\tconst items = discovery.collections.get(collection) || [];\n\n\t\t\t\tif (items.length === 0) {\n\t\t\t\t\tthrow new NotFoundError();\n\t\t\t\t}\n\n\t\t\t\tconst collectionTitle = rssConfig?.title\n\t\t\t\t\t? `${rssConfig.title} - ${collection.charAt(0).toUpperCase() + collection.slice(1)}`\n\t\t\t\t\t: `${collection.charAt(0).toUpperCase() + collection.slice(1)} Feed`;\n\n\t\t\t\tconst feed: RSSFeed = {\n\t\t\t\t\ttitle: collectionTitle,\n\t\t\t\t\tlink: `${baseUrl}/${collection}/feed.xml`,\n\t\t\t\t\tdescription: 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, { format, limit });\n\n\t\t\t\t// Cache the feed\n\t\t\t\trssCache.set(cacheKey, {\n\t\t\t\t\txml,\n\t\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t\t});\n\n\t\t\t\treturn new Response(xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type':\n\t\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\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\t// SSR data route-specific feeds (e.g., /changelog/feed.xml, /announcements/feed.xml)\n\t// First, discover which routes actually have feed items\n\tconst { discoverSSRDataFeedItems } = await import('reroute-js/core');\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\n\t\t// Skip completely excluded routes\n\t\tif (rssConfig?.excludeRoutes?.includes(route.pattern)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Check if this route has any feed items\n\t\ttry {\n\t\t\tconst items = await discoverSSRDataFeedItems(\n\t\t\t\tcwd,\n\t\t\t\tclientDir,\n\t\t\t\troute.pattern,\n\t\t\t\troute.path,\n\t\t\t\tisWatchMode,\n\t\t\t\tbaseUrl,\n\t\t\t\trssConfig,\n\t\t\t);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\troutesWithFeeds.push(route);\n\t\t\t\tavailableFeeds.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\t// Now register feeds only for routes that have items\n\tfor (const route of routesWithFeeds) {\n\t\tconst routeName = route.pattern.replace(/^\\//, '') || 'index';\n\n\t\tapp.get(`${route.pattern}/feed.xml`, async () => {\n\t\t\ttry {\n\t\t\t\t// Check cache\n\t\t\t\tconst cacheKey = `rss:${routeName}`;\n\t\t\t\tconst cached = rssCache.get(cacheKey);\n\n\t\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\t\treturn new Response(cached.xml, {\n\t\t\t\t\t\tstatus: 200,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'content-type':\n\t\t\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Discover RSS data - check if this is from layout or route ssr.data\n\t\t\t\tlet items = await discoverSSRDataFeedItems(\n\t\t\t\t\tcwd,\n\t\t\t\t\tclientDir,\n\t\t\t\t\troute.pattern,\n\t\t\t\t\troute.path,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\trssConfig,\n\t\t\t\t);\n\n\t\t\t\t// If no items and this is a layout, check for layout ssr.data\n\t\t\t\tif (items.length === 0 && route.isLayout) {\n\t\t\t\t\t// Re-discover for the main feed to get layout items\n\t\t\t\t\tconst discovery = await discoverRSSData(\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t[],\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\trssConfig,\n\t\t\t\t\t);\n\t\t\t\t\titems = discovery.ssrDataFeeds.get(route.pattern) || [];\n\t\t\t\t}\n\n\t\t\t\tif (items.length === 0) {\n\t\t\t\t\tthrow new NotFoundError();\n\t\t\t\t}\n\n\t\t\t\tconst routeTitle = rssConfig?.title\n\t\t\t\t\t? `${rssConfig.title} - ${routeName.charAt(0).toUpperCase() + routeName.slice(1)}`\n\t\t\t\t\t: `${routeName.charAt(0).toUpperCase() + routeName.slice(1)} Feed`;\n\n\t\t\t\tconst feed: RSSFeed = {\n\t\t\t\t\ttitle: routeTitle,\n\t\t\t\t\tlink: `${baseUrl}${route.pattern}/feed.xml`,\n\t\t\t\t\tdescription: rssConfig?.description || `Latest ${routeName} updates`,\n\t\t\t\t\titems,\n\t\t\t\t};\n\n\t\t\t\tconst xml = generateFeed(feed, { format, limit });\n\n\t\t\t\t// Cache the feed\n\t\t\t\trssCache.set(cacheKey, {\n\t\t\t\t\txml,\n\t\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t\t});\n\n\t\t\t\treturn new Response(xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type':\n\t\t\t\t\t\t\tformat === 'atom'\n\t\t\t\t\t\t\t\t? 'application/atom+xml; charset=utf-8'\n\t\t\t\t\t\t\t\t: 'application/rss+xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\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(`[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\t// Store available feeds globally for SSR injection\n\t(globalThis as Doc).__REROUTE_AVAILABLE_FEEDS__ = availableFeeds;\n\n\treturn app;\n}\n",
|
|
48
|
+
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tdiscoverSitemapData,\n\tgenerateSitemap,\n\ttype LRUCache,\n\ttype SitemapOptions,\n} from 'reroute-js/core';\nimport type { Any } from '../types';\n\ntype SitemapRouteOptions = {\n\tcwd: string;\n\tclientDir: string;\n\tcollections: string[];\n\tbaseUrl: string;\n\tmaxAge: number;\n\tisWatchMode: boolean;\n\tsitemapCache: LRUCache<string, { xml: string; exp: number }>;\n\tsitemapConfig?: SitemapOptions;\n};\n\nexport function registerSitemapRoutes(\n\tapp: Elysia,\n\toptions: SitemapRouteOptions,\n): Elysia {\n\tconst {\n\t\tcwd,\n\t\tclientDir,\n\t\tcollections,\n\t\tbaseUrl,\n\t\tmaxAge,\n\t\tisWatchMode,\n\t\tsitemapCache,\n\t\tsitemapConfig,\n\t} = options;\n\n\tconst TTL_MS = maxAge * 1000;\n\n\t// Main sitemap route\n\tapp.get('/sitemap.xml', async () => {\n\t\ttry {\n\t\t\t// Check cache\n\t\t\tconst cacheKey = 'sitemap:main';\n\t\t\tconst cached = sitemapCache.get(cacheKey);\n\n\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\treturn new Response(cached.xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'application/xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generate sitemap\n\t\t\tconst discovery = await discoverSitemapData(\n\t\t\t\tcwd,\n\t\t\t\tclientDir,\n\t\t\t\tcollections,\n\t\t\t\tbaseUrl,\n\t\t\t\tisWatchMode,\n\t\t\t\tsitemapConfig,\n\t\t\t);\n\n\t\t\tconst result = await generateSitemap(discovery, baseUrl, {\n\t\t\t\tchangefreq: sitemapConfig?.changefreq,\n\t\t\t\tpriority: sitemapConfig?.priority,\n\t\t\t\tmaxUrlsPerPage: sitemapConfig?.maxUrlsPerPage,\n\t\t\t\texcludeRoutes: sitemapConfig?.excludeRoutes,\n\t\t\t});\n\n\t\t\t// If we need an index, return the index and cache individual pages\n\t\t\tif (result.needsIndex && result.indexXml) {\n\t\t\t\t// Cache all pages\n\t\t\t\tfor (const page of result.pages) {\n\t\t\t\t\tsitemapCache.set(`sitemap:${page.filename}`, {\n\t\t\t\t\t\txml: page.xml,\n\t\t\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Cache and return index\n\t\t\t\tsitemapCache.set(cacheKey, {\n\t\t\t\t\txml: result.indexXml,\n\t\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t\t});\n\n\t\t\t\treturn new Response(result.indexXml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'application/xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// Single sitemap\n\t\t\t\tconst xml = result.pages[0]?.xml || '';\n\n\t\t\t\tsitemapCache.set(cacheKey, {\n\t\t\t\t\txml,\n\t\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t\t});\n\n\t\t\t\treturn new Response(xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'application/xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to generate sitemap:', error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\t// Paginated sitemap routes (for large sitemaps)\n\tapp.get('/sitemap-*', async ({ params }: Any) => {\n\t\tconst wildcardPath = params['*'] || '';\n\n\t\t// Match pattern like \"0.xml\", \"1.xml\", etc.\n\t\tconst pageMatch = wildcardPath.match(/^(\\d+)\\.xml$/);\n\t\tif (!pageMatch) {\n\t\t\tthrow new NotFoundError();\n\t\t}\n\n\t\tconst page = pageMatch[1];\n\t\tconst filename = `sitemap-${page}.xml`;\n\n\t\ttry {\n\t\t\t// Check cache\n\t\t\tconst cacheKey = `sitemap:${filename}`;\n\t\t\tconst cached = sitemapCache.get(cacheKey);\n\n\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\treturn new Response(cached.xml, {\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'application/xml; charset=utf-8',\n\t\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generate sitemap to get the page\n\t\t\tconst discovery = await discoverSitemapData(\n\t\t\t\tcwd,\n\t\t\t\tclientDir,\n\t\t\t\tcollections,\n\t\t\t\tbaseUrl,\n\t\t\t\tisWatchMode,\n\t\t\t\tsitemapConfig,\n\t\t\t);\n\n\t\t\tconst result = await generateSitemap(discovery, baseUrl, {\n\t\t\t\tchangefreq: sitemapConfig?.changefreq,\n\t\t\t\tpriority: sitemapConfig?.priority,\n\t\t\t\tmaxUrlsPerPage: sitemapConfig?.maxUrlsPerPage,\n\t\t\t\texcludeRoutes: sitemapConfig?.excludeRoutes,\n\t\t\t});\n\n\t\t\tconst pageData = result.pages.find((p) => p.filename === filename);\n\n\t\t\tif (!pageData) {\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\n\t\t\t// Cache the page\n\t\t\tsitemapCache.set(cacheKey, {\n\t\t\t\txml: pageData.xml,\n\t\t\t\texp: Date.now() + TTL_MS,\n\t\t\t});\n\n\t\t\treturn new Response(pageData.xml, {\n\t\t\t\tstatus: 200,\n\t\t\t\theaders: {\n\t\t\t\t\t'content-type': 'application/xml; charset=utf-8',\n\t\t\t\t\t'cache-control': `public, max-age=${maxAge}`,\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (error instanceof NotFoundError) throw error;\n\t\t\tconsole.error('[reroute] Failed to generate paginated sitemap:', error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\treturn app;\n}\n",
|
|
49
49
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport type { ReactElement } from 'react';\nimport {\n\tcomputeSSRDataForPath,\n\tgzipIfAccepted,\n\tLRUCache,\n\trenderSSRDocument,\n\trenderSSRDocumentStream,\n} from 'reroute-js/core';\nimport { jsonError, jsonWithCache } from '../libs/http';\n\ntype SSRRouteOptions = {\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tgetBundleUrl: () => Promise<string>;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\tcollections: string[];\n\tminify?: boolean;\n\tmaxAge?: number;\n\tdirective?: string;\n\tdataCacheControl?: string;\n\tdataCache?: LRUCache<string, unknown>;\n\tcompression?: boolean;\n\tstreamingEnabled?: boolean;\n\tshouldIgnorePathname?: (pathname: string) => boolean;\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\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tcollections,\n\t\tminify = false,\n\t\tmaxAge = 3600,\n\t\tdirective = 'public',\n\t\tdataCacheControl,\n\t\tdataCache,\n\t\tcompression: userCompression = true,\n\t\tstreamingEnabled = false,\n\t\tshouldIgnorePathname,\n\t} = options;\n\n\t// CRITICAL: When streaming is enabled, we MUST disable compression.\n\t// Compression requires buffering the entire response before sending,\n\t// which completely defeats the purpose of streaming SSR.\n\tconst compression = streamingEnabled ? false : userCompression;\n\n\t// Cache SSR HTML in-memory based on maxAge config\n\t// If maxAge is 0, don't cache at all (user wants fresh data)\n\t// Otherwise use maxAge or default to 5 minutes\n\tconst SSR_HTML_TTL_MS = maxAge === 0 ? 0 : maxAge * 1000 || 5 * 60 * 1000;\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 = (pathname: string, acceptEncoding: string | undefined) =>\n\t\t`${pathname}::${acceptEncoding || 'identity'}`;\n\n\t// Register SSR routes for each collection\n\tfor (const collection of collections) {\n\t\tapp.get(`/${collection}/*`, async ({ request, headers }) => {\n\t\t\tconst method = request.method || 'GET';\n\n\t\t\tif (method !== 'GET') throw new NotFoundError();\n\t\t\tconst accept = request.headers.get?.('accept') || '';\n\t\t\tif (!/text\\/html/i.test(String(accept))) throw new NotFoundError();\n\t\t\ttry {\n\t\t\t\tconst url = new URL(request.url);\n\t\t\t\tconst pathname = url.pathname;\n\t\t\t\tconst fullPath = url.pathname + url.search; // Include query string for SSR\n\t\t\t\tconst acceptEncoding = headers['accept-encoding'] || '';\n\n\t\t\t\t// Serve cached HTML if fresh\n\t\t\t\tif (SSR_HTML_TTL_MS > 0) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst ck = makeKey(pathname, acceptEncoding);\n\t\t\t\t\t\tconst cached = htmlCache.get(ck);\n\t\t\t\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\t\t\t\treturn new Response(cached.body, {\n\t\t\t\t\t\t\t\tstatus: cached.status,\n\t\t\t\t\t\t\t\theaders: cached.headers,\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}\n\n\t\t\t\tconst bundleUrl = await getBundleUrl();\n\t\t\t\t// Compose Early Hints (103) and Link header for main bundle\n\t\t\t\ttry {\n\t\t\t\t\tconst linkValue = `<${bundleUrl}>; rel=modulepreload; as=script`;\n\t\t\t\t\t// Best-effort Early Hints (if supported by runtime)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst hints = new Headers({ Link: linkValue });\n\t\t\t\t\t\t// @ts-expect-error runtime specific hook\n\t\t\t\t\t\t(request as Any)?.sendEarlyHints?.(hints);\n\t\t\t\t\t} catch {}\n\t\t\t\t\t// Also attach Link on final response\n\t\t\t\t\theaders.link = headers.link\n\t\t\t\t\t\t? `${headers.link}, ${linkValue}`\n\t\t\t\t\t\t: linkValue;\n\t\t\t\t} catch {}\n\n\t\t\t\t// Use no-cache headers in watch mode to ensure fresh content\n\t\t\t\tconst cacheControlHeader = isWatchMode\n\t\t\t\t\t? 'no-cache, no-store, must-revalidate'\n\t\t\t\t\t: `${directive}, max-age=${maxAge}`;\n\n\t\t\t\tlet response: Response;\n\n\t\t\t\tif (streamingEnabled) {\n\t\t\t\t\t// Streaming SSR path\n\t\t\t\t\tconst { stream, status } = await renderSSRDocumentStream({\n\t\t\t\t\t\tpathname: fullPath,\n\t\t\t\t\t\trootComponent,\n\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\tbundleUrl,\n\t\t\t\t\t\thead,\n\t\t\t\t\t\tlang,\n\t\t\t\t\t\tappId,\n\t\t\t\t\t\tmaxAge,\n\t\t\t\t\t});\n\n\t\t\t\t\t// When compression is enabled, we need to buffer the stream first\n\t\t\t\t\t// This trades streaming performance for compression (needed for Lighthouse)\n\t\t\t\t\tif (compression && acceptEncoding) {\n\t\t\t\t\t\t// Buffer all chunks\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 fullHtml = 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\tfullHtml.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\t// Compress the buffered HTML\n\t\t\t\t\t\tconst { body, extraHeaders } = gzipIfAccepted(\n\t\t\t\t\t\t\tfullHtml,\n\t\t\t\t\t\t\t'text/html; charset=utf-8',\n\t\t\t\t\t\t\tacceptEncoding,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Cache if needed\n\t\t\t\t\t\tif (SSR_HTML_TTL_MS > 0 && status === 200) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst ck = makeKey(pathname, acceptEncoding);\n\t\t\t\t\t\t\t\tconst cacheHeaders: Record<string, string> = {\n\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'Cache-Control': cacheControlHeader,\n\t\t\t\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (headers.link) {\n\t\t\t\t\t\t\t\t\tcacheHeaders.Link = headers.link;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\t\theaders: cacheHeaders,\n\t\t\t\t\t\t\t\t\tbody: body as BodyInit,\n\t\t\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\tconsole.error('[reroute] Failed to cache:', e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst resHeaders: 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'Cache-Control': cacheControlHeader,\n\t\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (headers.link) {\n\t\t\t\t\t\t\tresHeaders.Link = headers.link;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponse = new Response(body as BodyInit, {\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No compression - stream as normal\n\t\t\t\t\t\tconst chunks: Uint8Array[] = [];\n\t\t\t\t\t\tconst shouldCache = SSR_HTML_TTL_MS > 0 && status === 200;\n\n\t\t\t\t\t\tconst cachingStream = shouldCache\n\t\t\t\t\t\t\t? stream.pipeThrough(\n\t\t\t\t\t\t\t\t\tnew TransformStream({\n\t\t\t\t\t\t\t\t\t\ttransform(chunk, controller) {\n\t\t\t\t\t\t\t\t\t\t\tchunks.push(new Uint8Array(chunk));\n\t\t\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tflush() {\n\t\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\t\ttry {\n\t\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\t(sum, c) => sum + c.length,\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\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\t\tlet offset = 0;\n\t\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\t\tfullHtml.set(chunk, offset);\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst ck = makeKey(pathname, acceptEncoding);\n\t\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\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Cache-Control': cacheControlHeader,\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\tif (headers.link) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcacheHeaders.Link = headers.link;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\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\t\tstatus,\n\t\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\t\tbody: fullHtml,\n\t\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\t});\n\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\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\t}\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: stream;\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'Cache-Control': cacheControlHeader,\n\t\t\t\t\t\t\t'Transfer-Encoding': 'chunked',\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (headers.link) {\n\t\t\t\t\t\t\tstreamHeaders.Link = headers.link;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponse = new Response(cachingStream, {\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\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Synchronous SSR path\n\t\t\t\t\tconst result = await renderSSRDocument({\n\t\t\t\t\t\tpathname: fullPath,\n\t\t\t\t\t\trootComponent,\n\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\tbundleUrl,\n\t\t\t\t\t\thead,\n\t\t\t\t\t\tlang,\n\t\t\t\t\t\tappId,\n\t\t\t\t\t\tminify,\n\t\t\t\t\t\tmaxAge,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst { body, extraHeaders } = compression\n\t\t\t\t\t\t? gzipIfAccepted(\n\t\t\t\t\t\t\t\tresult.html,\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: { body: result.html, extraHeaders: {} };\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'Cache-Control': cacheControlHeader,\n\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t};\n\t\t\t\t\tif (headers.link) {\n\t\t\t\t\t\tresHeaders.Link = headers.link;\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse = new Response(body as BodyInit, {\n\t\t\t\t\t\tstatus: result.status,\n\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Cache successful renders (skip in watch mode and streaming mode)\n\t\t\t\t// Streaming responses cannot be cached as they are consumed once\n\t\t\t\tif (\n\t\t\t\t\t!isWatchMode &&\n\t\t\t\t\t!streamingEnabled &&\n\t\t\t\t\tSSR_HTML_TTL_MS > 0 &&\n\t\t\t\t\tresponse.status === 200\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst ck = makeKey(pathname, acceptEncoding);\n\t\t\t\t\t\t// Clone response body for caching\n\t\t\t\t\t\tconst clonedResponse = response.clone();\n\t\t\t\t\t\tconst body = await clonedResponse.arrayBuffer();\n\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\tstatus: response.status,\n\t\t\t\t\t\t\theaders: Object.fromEntries(response.headers.entries()),\n\t\t\t\t\t\t\tbody: body,\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\n\t\t\t\treturn response;\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(`[reroute] SSR ${collection} render error:`, e);\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\t\t});\n\t}\n\n\t// Global error handler for SSR fallback\n\tapp.onError(async ({ code, request, set }) => {\n\t\tif (code === 'NOT_FOUND') {\n\t\t\tconst url = new URL(request.url);\n\t\t\tconst pathname = url.pathname;\n\t\t\tconst fullPath = url.pathname + url.search; // Include query string for SSR\n\t\t\tconst method = request.method || 'GET';\n\t\t\tconst isInternal =\n\t\t\t\tpathname.startsWith('/__reroute_watch') ||\n\t\t\t\tpathname.startsWith('/__content/') ||\n\t\t\t\tpathname.startsWith('/__reroute_preload') ||\n\t\t\t\tpathname.startsWith('/__reroute_data') ||\n\t\t\t\tpathname.startsWith('/__reroute_watch.js');\n\n\t\t\tif (!isInternal && typeof shouldIgnorePathname === 'function') {\n\t\t\t\ttry {\n\t\t\t\t\tif (shouldIgnorePathname(pathname)) {\n\t\t\t\t\t\treturn new Response('Not Found', { status: 404 });\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\n\t\t\tif (pathname === '/__reroute_data' && method === 'GET') {\n\t\t\t\ttry {\n\t\t\t\t\tconst p = url.searchParams.get('path') || '/';\n\n\t\t\t\t\t// Check cache first (consistent in all modes)\n\t\t\t\t\tlet data = dataCache?.get(p);\n\n\t\t\t\t\tif (data === undefined) {\n\t\t\t\t\t\tdata = await computeSSRDataForPath({\n\t\t\t\t\t\t\tpathname: p,\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});\n\t\t\t\t\t\t// Cache the result (even in watch mode for request deduplication)\n\t\t\t\t\t\tdataCache?.set(p, data);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jsonWithCache(\n\t\t\t\t\t\t{ data },\n\t\t\t\t\t\tdataCacheControl || 'no-cache',\n\t\t\t\t\t\trequest.headers,\n\t\t\t\t\t);\n\t\t\t\t} catch (_e) {\n\t\t\t\t\treturn jsonError('failed', 500);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (method === 'GET' && !isInternal) {\n\t\t\t\ttry {\n\t\t\t\t\tconst acceptEncoding = request.headers.get('accept-encoding') || '';\n\t\t\t\t\t// Serve cached HTML if fresh (skip cache in watch mode)\n\t\t\t\t\tif (!isWatchMode && SSR_HTML_TTL_MS > 0) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst ck = makeKey(pathname, acceptEncoding);\n\t\t\t\t\t\t\tconst cached = htmlCache.get(ck);\n\t\t\t\t\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\t\t\t\t\tset.status = cached.status;\n\t\t\t\t\t\t\t\tObject.assign(set.headers, cached.headers);\n\t\t\t\t\t\t\t\treturn new Response(cached.body);\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 bundleUrl = await getBundleUrl();\n\t\t\t\t\t// Compose Early Hints (103) and Link header for main bundle\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst linkValue = `<${bundleUrl}>; rel=modulepreload; as=script`;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst hints = new Headers({ Link: linkValue });\n\t\t\t\t\t\t\t// @ts-expect-error runtime specific hook\n\t\t\t\t\t\t\t(request as Any)?.sendEarlyHints?.(hints);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\tset.headers.link = set.headers.link\n\t\t\t\t\t\t\t? `${set.headers.link}, ${linkValue}`\n\t\t\t\t\t\t\t: linkValue;\n\t\t\t\t\t} catch {}\n\n\t\t\t\t\t// Use no-cache headers in watch mode to ensure fresh content\n\t\t\t\t\tconst cacheControlHeader = isWatchMode\n\t\t\t\t\t\t? 'no-cache, no-store, must-revalidate'\n\t\t\t\t\t\t: `${directive}, max-age=${maxAge}`;\n\n\t\t\t\t\tlet response: Response;\n\n\t\t\t\t\tif (streamingEnabled) {\n\t\t\t\t\t\t// Streaming SSR path\n\t\t\t\t\t\tconst { stream, status } = 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\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,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// When compression is enabled, we need to buffer the stream first\n\t\t\t\t\t\t// This trades streaming performance for compression (needed for Lighthouse)\n\t\t\t\t\t\tif (compression && acceptEncoding) {\n\t\t\t\t\t\t\t// Buffer all chunks\n\t\t\t\t\t\t\tconst chunks: Uint8Array[] = [];\n\t\t\t\t\t\t\tconst reader = stream.getReader();\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\t\t\t\t\tif (done) break;\n\t\t\t\t\t\t\t\t\tchunks.push(new Uint8Array(value));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\treader.releaseLock();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Combine chunks into single buffer\n\t\t\t\t\t\t\tconst totalLength = chunks.reduce((sum, c) => sum + c.length, 0);\n\t\t\t\t\t\t\tconst fullHtml = new Uint8Array(totalLength);\n\t\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\t\tfor (const chunk of chunks) {\n\t\t\t\t\t\t\t\tfullHtml.set(chunk, offset);\n\t\t\t\t\t\t\t\toffset += chunk.length;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Compress the buffered HTML\n\t\t\t\t\t\t\tconst { body, extraHeaders } = 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\n\t\t\t\t\t\t\t// Cache if needed\n\t\t\t\t\t\t\tif (SSR_HTML_TTL_MS > 0 && status === 200) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tconst ck = makeKey(pathname, acceptEncoding);\n\t\t\t\t\t\t\t\t\tconst cacheHeaders: Record<string, string> = {\n\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'Cache-Control': cacheControlHeader,\n\t\t\t\t\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tif (set.headers.link) {\n\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}\n\t\t\t\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\t\t\theaders: cacheHeaders,\n\t\t\t\t\t\t\t\t\t\tbody: body as BodyInit,\n\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});\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tconsole.error('[reroute] Failed to cache:', e);\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\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'Cache-Control': cacheControlHeader,\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\tif (set.headers.link) {\n\t\t\t\t\t\t\t\tresHeaders.Link = set.headers.link as string;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Set status explicitly for Elysia error handler\n\t\t\t\t\t\t\tset.status = status;\n\n\t\t\t\t\t\t\tresponse = new Response(body as BodyInit, {\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} else {\n\t\t\t\t\t\t\t// No compression - stream as normal\n\t\t\t\t\t\t\tconst chunks: Uint8Array[] = [];\n\t\t\t\t\t\t\tconst shouldCache = SSR_HTML_TTL_MS > 0 && status === 200;\n\n\t\t\t\t\t\t\tconst cachingStream = shouldCache\n\t\t\t\t\t\t\t\t? stream.pipeThrough(\n\t\t\t\t\t\t\t\t\t\tnew TransformStream({\n\t\t\t\t\t\t\t\t\t\t\ttransform(chunk, controller) {\n\t\t\t\t\t\t\t\t\t\t\t\tchunks.push(new Uint8Array(chunk));\n\t\t\t\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tflush() {\n\t\t\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\t\t\ttry {\n\t\t\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\t\t(sum, c) => sum + c.length,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\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\t\t\tlet offset = 0;\n\t\t\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\t\t\tfullHtml.set(chunk, offset);\n\t\t\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\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst ck = makeKey(pathname, acceptEncoding);\n\t\t\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\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Cache-Control': cacheControlHeader,\n\t\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\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\t\t\tcacheHeaders.Link = set.headers.link as string;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\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\t\t\tstatus,\n\t\t\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\t\t\tbody: fullHtml,\n\t\t\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\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\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\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\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: stream;\n\n\t\t\t\t\t\t\tconst streamHeaders: 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'Cache-Control': cacheControlHeader,\n\t\t\t\t\t\t\t\t'Transfer-Encoding': 'chunked',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tif (set.headers.link) {\n\t\t\t\t\t\t\t\tstreamHeaders.Link = set.headers.link as string;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Set status explicitly for Elysia error handler\n\t\t\t\t\t\t\tset.status = status;\n\n\t\t\t\t\t\t\tresponse = new Response(cachingStream, {\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\theaders: streamHeaders,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Synchronous SSR path\n\t\t\t\t\t\tconst result = await renderSSRDocument({\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\thead,\n\t\t\t\t\t\t\tlang,\n\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\tminify,\n\t\t\t\t\t\t\tmaxAge,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst { body, extraHeaders } = compression\n\t\t\t\t\t\t\t? gzipIfAccepted(\n\t\t\t\t\t\t\t\t\tresult.html,\n\t\t\t\t\t\t\t\t\t'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t\tacceptEncoding,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: { body: result.html, extraHeaders: {} };\n\n\t\t\t\t\t\tconst resHeaders: 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'Cache-Control': cacheControlHeader,\n\t\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (set.headers.link) {\n\t\t\t\t\t\t\tresHeaders.Link = set.headers.link as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponse = new Response(body as BodyInit, {\n\t\t\t\t\t\t\tstatus: result.status,\n\t\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Cache successful renders (skip in watch mode)\n\t\t\t\t\t\tif (!isWatchMode && SSR_HTML_TTL_MS > 0 && result.status === 200) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst ck = makeKey(pathname, acceptEncoding);\n\t\t\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\t\t\tstatus: result.status,\n\t\t\t\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t\t\t\t\tbody: body as BodyInit,\n\t\t\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set status explicitly for Elysia error handler\n\t\t\t\t\tset.status = response.status;\n\t\t\t\t\treturn response;\n\t\t\t\t} catch {\n\t\t\t\t\t// fallthrough to default 404 if template fails\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn app;\n}\n\nexport { registerSSRRoutes };\n",
|
|
50
50
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tgetMimeType,\n\tgzipIfAccepted,\n\tjoin,\n\ttype LRUCache,\n} from 'reroute-js/core';\nimport { getEncoding } from '../libs/cache';\n\ntype StaticRouteOptions = {\n\tclientDir: string;\n\tprefix: string;\n\tmaxAge: number;\n\tdirective: string;\n\tindexHTML: boolean;\n\tstaticHeaders?: Record<string, string>;\n\tshouldIgnore: (file: string) => boolean;\n\tfileCache: LRUCache<string, Response>;\n\tisWatchMode?: boolean;\n\tcompression?: boolean;\n};\n\nfunction registerStaticRoutes(\n\tapp: Elysia,\n\toptions: StaticRouteOptions,\n): Elysia {\n\tconst {\n\t\tclientDir,\n\t\tprefix,\n\t\tmaxAge,\n\t\tdirective,\n\t\tindexHTML,\n\t\tstaticHeaders,\n\t\tshouldIgnore,\n\t\tfileCache,\n\t\tisWatchMode = false,\n\t\tcompression = true,\n\t} = options;\n\n\t// Static files route (scoped under prefix, e.g. '/assets/*')\n\tapp.get(`${prefix}/*`, async ({ params, headers }) => {\n\t\tconst requestPath = params['*'];\n\n\t\tconst filePath = join(clientDir, requestPath);\n\n\t\ttry {\n\t\t\t// Determine encoding and create cache key\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// Check cache FIRST (before any filesystem I/O)\n\t\t\tconst cached = fileCache.get(cacheKey);\n\t\t\tif (cached) return cached.clone();\n\n\t\t\t// Cache miss - resolve file path\n\t\t\tlet actualFilePath = filePath;\n\t\t\tlet exists = await Bun.file(actualFilePath).exists();\n\n\t\t\tif (!exists && indexHTML) {\n\t\t\t\tactualFilePath = join(filePath, 'index.html');\n\t\t\t\texists = await Bun.file(actualFilePath).exists();\n\t\t\t}\n\n\t\t\tif (!exists) throw new NotFoundError();\n\n\t\t\t// Check if the resolved file should be ignored (e.g., index.html)\n\t\t\tif (shouldIgnore(actualFilePath)) throw new NotFoundError();\n\n\t\t\tconst contentBuf = await Bun.file(actualFilePath).arrayBuffer();\n\t\t\tconst content = new Uint8Array(contentBuf);\n\t\t\tconst contentType = getMimeType(actualFilePath);\n\n\t\t\t// Apply compression if enabled\n\t\t\tconst { body, extraHeaders } = compression\n\t\t\t\t? gzipIfAccepted(content, contentType, headers['accept-encoding'])\n\t\t\t\t: { body: content, extraHeaders: {} };\n\n\t\t\t// Determine cache duration based on content type and watch mode\n\t\t\t// In watch mode, use no-cache for all source files (tsx, ts, js, css)\n\t\t\tlet cacheControl: string;\n\n\t\t\tif (isWatchMode) {\n\t\t\t\t// Source files like routes/*.tsx should never be cached in dev\n\t\t\t\tconst isSourceFile = /\\.(tsx?|jsx?|css)$/i.test(actualFilePath);\n\t\t\t\tcacheControl = isSourceFile\n\t\t\t\t\t? 'no-cache, no-store, must-revalidate'\n\t\t\t\t\t: `${directive}, max-age=${maxAge}`;\n\t\t\t} else {\n\t\t\t\tconst isLongLivedAsset =\n\t\t\t\t\tcontentType.startsWith('image/') ||\n\t\t\t\t\tcontentType.startsWith('font/') ||\n\t\t\t\t\tcontentType.includes('woff') ||\n\t\t\t\t\tcontentType.includes('ttf') ||\n\t\t\t\t\tcontentType.includes('otf');\n\n\t\t\t\tconst cacheMaxAge =\n\t\t\t\t\tmaxAge === 0 ? 0 : isLongLivedAsset ? 365 * 24 * 60 * 60 : maxAge;\n\n\t\t\t\tcacheControl =\n\t\t\t\t\tcacheMaxAge > 0\n\t\t\t\t\t\t? `${directive}, max-age=${cacheMaxAge}${isLongLivedAsset ? ', immutable' : ''}`\n\t\t\t\t\t\t: 'no-cache';\n\t\t\t}\n\n\t\t\tconst response = new Response(body as string, {\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...extraHeaders,\n\t\t\t\t\t...staticHeaders,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tfileCache.set(cacheKey, response);\n\n\t\t\treturn response.clone();\n\t\t} catch (error) {\n\t\t\tif (error instanceof NotFoundError) throw error;\n\t\t\tconsole.error(`[reroute] Error serving ${filePath}:`, error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\treturn app;\n}\n\nexport { registerStaticRoutes };\n"
|
|
51
51
|
],
|
|
52
|
-
"mappings": "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",
|
|
53
|
-
"debugId": "
|
|
52
|
+
"mappings": "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",
|
|
53
|
+
"debugId": "C00254499B184A5864756E2164756E21",
|
|
54
54
|
"names": []
|
|
55
55
|
}
|