reroute-js 1.0.0-alpha.39 → 1.0.0-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/cli/bin.d.ts +1 -1
- package/cli/bin.js +231 -50
- package/cli/bin.js.map +13 -13
- package/cli/index.d.ts +1 -1
- package/cli/index.js +8 -5
- package/cli/index.js.map +11 -10
- package/cli/src/cli.d.ts +1 -1
- package/cli/src/commands/analyze.d.ts +1 -1
- package/cli/src/commands/build.d.ts +1 -1
- package/cli/src/commands/dev.d.ts +1 -1
- package/cli/src/commands/gen.d.ts +1 -1
- package/cli/src/commands/gen.d.ts.map +1 -1
- package/cli/src/commands/index.d.ts +1 -1
- package/cli/src/commands/init.d.ts +1 -1
- package/cli/src/commands/lib/assets.d.ts +1 -1
- package/cli/src/commands/lib/bundler.d.ts +1 -1
- package/cli/src/commands/lib/command.d.ts +1 -1
- package/cli/src/commands/lib/env.d.ts +1 -1
- package/cli/src/commands/lib/images.d.ts +1 -1
- package/cli/src/commands/lib/index.d.ts +1 -1
- package/cli/src/commands/lib/log.d.ts +1 -1
- package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
- package/cli/src/commands/lib/markdown/index.d.ts +1 -1
- package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
- package/cli/src/commands/lib/prerender.d.ts +1 -1
- package/cli/src/commands/lib/production.d.ts +1 -1
- package/cli/src/commands/lib/routes.d.ts +1 -1
- package/cli/src/commands/lib/server.d.ts +1 -1
- package/cli/src/commands/lib/ssr-strip.d.ts +1 -1
- package/cli/src/commands/lib/static.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/supervise.d.ts +1 -1
- package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
- package/cli/src/commands/lib/theme.d.ts +1 -1
- package/cli/src/commands/lib/version.d.ts +1 -1
- package/cli/src/commands/lib/watch.d.ts +1 -1
- package/cli/src/commands/og.d.ts +1 -1
- package/cli/src/commands/start.d.ts +1 -1
- package/cli/src/commands/static-render.d.ts +1 -1
- package/cli/src/index.d.ts +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +221 -46
- package/core/index.js.map +12 -12
- package/core/src/app-paths.d.ts +1 -1
- package/core/src/bundler/hash.d.ts +1 -1
- package/core/src/bundler/index.d.ts +1 -1
- package/core/src/config.d.ts +1 -1
- package/core/src/content/discovery.d.ts +1 -1
- package/core/src/content/index.d.ts +1 -1
- package/core/src/content/metadata.d.ts +1 -1
- package/core/src/i18n/catalog.d.ts +1 -1
- package/core/src/i18n/discover.d.ts +1 -1
- package/core/src/i18n/discover.d.ts.map +1 -1
- package/core/src/i18n/index.d.ts +2 -2
- package/core/src/i18n/index.d.ts.map +1 -1
- package/core/src/i18n/messages.d.ts +1 -1
- package/core/src/i18n/negotiate.d.ts +1 -1
- package/core/src/i18n/pathname.d.ts +32 -4
- package/core/src/i18n/pathname.d.ts.map +1 -1
- package/core/src/i18n/resolve.d.ts +3 -2
- package/core/src/i18n/resolve.d.ts.map +1 -1
- package/core/src/i18n/types.d.ts +44 -1
- package/core/src/i18n/types.d.ts.map +1 -1
- package/core/src/image.d.ts +1 -1
- package/core/src/index.d.ts +1 -1
- package/core/src/llms/discovery.d.ts +1 -1
- package/core/src/llms/extractor.d.ts +1 -1
- package/core/src/llms/formatter.d.ts +1 -1
- package/core/src/llms/full-generator.d.ts +1 -1
- package/core/src/llms/index-generator.d.ts +1 -1
- package/core/src/llms/index.d.ts +1 -1
- package/core/src/og/discovery.d.ts +1 -1
- package/core/src/og/index.d.ts +1 -1
- package/core/src/og/meta.d.ts +1 -1
- package/core/src/og/render.d.ts +1 -1
- package/core/src/og/types.d.ts +1 -1
- package/core/src/robots/discovery.d.ts +1 -1
- package/core/src/robots/generator.d.ts +1 -1
- package/core/src/robots/index.d.ts +1 -1
- package/core/src/robots/policies.d.ts +1 -1
- package/core/src/rss/discovery.d.ts +1 -1
- package/core/src/rss/generator.d.ts +1 -1
- package/core/src/rss/index.d.ts +1 -1
- package/core/src/sitemap/discovery.d.ts +1 -1
- package/core/src/sitemap/generator.d.ts +12 -2
- 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/cleanup.d.ts +1 -1
- package/core/src/ssr/lib/collections.d.ts +1 -1
- package/core/src/ssr/lib/compression.d.ts +1 -1
- package/core/src/ssr/lib/compute/content.d.ts +1 -1
- package/core/src/ssr/lib/compute/index.d.ts +1 -1
- package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
- package/core/src/ssr/lib/compute/layouts.d.ts.map +1 -1
- package/core/src/ssr/lib/compute/routes.d.ts +1 -1
- package/core/src/ssr/lib/compute/routes.d.ts.map +1 -1
- package/core/src/ssr/lib/content-path.d.ts +13 -2
- package/core/src/ssr/lib/content-path.d.ts.map +1 -1
- package/core/src/ssr/lib/data.d.ts +1 -1
- package/core/src/ssr/lib/html.d.ts +1 -1
- package/core/src/ssr/lib/imports.d.ts +1 -1
- package/core/src/ssr/lib/index.d.ts +1 -1
- package/core/src/ssr/lib/layouts.d.ts +1 -1
- package/core/src/ssr/lib/metadata.d.ts +1 -1
- package/core/src/ssr/lib/metadata.d.ts.map +1 -1
- package/core/src/ssr/lib/mime.d.ts +1 -1
- package/core/src/ssr/lib/modules.d.ts +1 -1
- package/core/src/ssr/lib/path.d.ts +1 -1
- package/core/src/ssr/lib/preload.d.ts +1 -1
- package/core/src/ssr/lib/route-match.d.ts +1 -1
- package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
- package/core/src/ssr/lib/scripts/data.d.ts +1 -1
- package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
- package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
- package/core/src/ssr/lib/scripts/index.d.ts +1 -1
- package/core/src/ssr/lib/seed.d.ts +1 -1
- package/core/src/ssr/lib/serialize.d.ts +1 -1
- package/core/src/ssr/lib/setup.d.ts +1 -1
- package/core/src/ssr/lib/styles.d.ts +1 -1
- package/core/src/ssr/lib/template.d.ts +1 -1
- package/core/src/ssr/lib/types.d.ts +7 -1
- package/core/src/ssr/lib/types.d.ts.map +1 -1
- package/core/src/ssr/render.d.ts +1 -1
- package/core/src/ssr/stream.d.ts +1 -1
- package/core/src/ssr/stream.d.ts.map +1 -1
- package/elysia/index.d.ts +1 -1
- package/elysia/index.js +370 -87
- package/elysia/index.js.map +18 -17
- package/elysia/src/index.d.ts +1 -1
- package/elysia/src/libs/assets.d.ts +1 -1
- package/elysia/src/libs/cache.d.ts +1 -1
- package/elysia/src/libs/caching.d.ts +1 -1
- package/elysia/src/libs/devReload.d.ts +1 -1
- package/elysia/src/libs/http.d.ts +1 -1
- package/elysia/src/libs/i18n.d.ts +14 -3
- package/elysia/src/libs/i18n.d.ts.map +1 -1
- package/elysia/src/libs/image.d.ts +1 -1
- package/elysia/src/libs/index.d.ts +1 -1
- package/elysia/src/libs/lazyData.d.ts +38 -0
- package/elysia/src/libs/lazyData.d.ts.map +1 -0
- package/elysia/src/libs/llms.d.ts +1 -1
- package/elysia/src/libs/response.d.ts +1 -1
- package/elysia/src/libs/serving.d.ts +1 -1
- package/elysia/src/plugin.d.ts +1 -1
- package/elysia/src/routes/artifacts.d.ts +1 -1
- package/elysia/src/routes/content.d.ts +1 -1
- package/elysia/src/routes/image.d.ts +1 -1
- package/elysia/src/routes/index.d.ts +1 -1
- package/elysia/src/routes/internal.d.ts +1 -1
- package/elysia/src/routes/internal.d.ts.map +1 -1
- package/elysia/src/routes/liveReloadClient.d.ts +1 -1
- package/elysia/src/routes/llms.d.ts +1 -1
- package/elysia/src/routes/og.d.ts +1 -1
- package/elysia/src/routes/redirects.d.ts +1 -1
- package/elysia/src/routes/robots.d.ts +1 -1
- package/elysia/src/routes/rss.d.ts +1 -1
- package/elysia/src/routes/search.d.ts +1 -1
- package/elysia/src/routes/sitemap.d.ts +1 -1
- package/elysia/src/routes/sitemap.d.ts.map +1 -1
- package/elysia/src/routes/ssr.d.ts +1 -1
- package/elysia/src/routes/ssr.d.ts.map +1 -1
- package/elysia/src/routes/static.d.ts +1 -1
- package/elysia/src/routes/themeCssRefresh.d.ts +1 -1
- package/elysia/src/types.d.ts +1 -1
- package/package.json +1 -1
- package/react/index.d.ts +1 -1
- package/react/index.js +85 -20
- package/react/index.js.map +6 -6
- package/react/src/components/ClientOnly.d.ts +1 -1
- package/react/src/components/ContentRoute.d.ts +1 -1
- package/react/src/components/Image.d.ts +1 -1
- package/react/src/components/LazyRoute.d.ts +1 -1
- package/react/src/components/Link.d.ts +1 -1
- package/react/src/components/Markdown.d.ts +1 -1
- package/react/src/components/Outlet.d.ts +1 -1
- package/react/src/components/index.d.ts +1 -1
- package/react/src/hooks/index.d.ts +1 -1
- package/react/src/hooks/useContent.d.ts +1 -1
- package/react/src/hooks/useData.d.ts +1 -1
- package/react/src/hooks/useFeed.d.ts +1 -1
- package/react/src/hooks/useLayoutData.d.ts +1 -1
- package/react/src/hooks/useLlms.d.ts +1 -1
- package/react/src/hooks/useNavigate.d.ts +1 -1
- package/react/src/hooks/useParams.d.ts +1 -1
- package/react/src/hooks/useRouter.d.ts +1 -1
- package/react/src/hooks/useSearch.d.ts +1 -1
- package/react/src/hooks/useSearchParams.d.ts +1 -1
- package/react/src/hooks/useToc.d.ts +1 -1
- package/react/src/i18n/LocaleProvider.d.ts +20 -2
- package/react/src/i18n/LocaleProvider.d.ts.map +1 -1
- package/react/src/i18n/helpers.d.ts +31 -3
- package/react/src/i18n/helpers.d.ts.map +1 -1
- package/react/src/i18n/index.d.ts +2 -2
- package/react/src/i18n/index.d.ts.map +1 -1
- package/react/src/index.d.ts +1 -1
- package/react/src/lib/bundle.d.ts +1 -1
- package/react/src/lib/collection.d.ts +1 -1
- package/react/src/lib/content.d.ts +1 -1
- package/react/src/lib/head.d.ts +1 -1
- package/react/src/lib/index.d.ts +1 -1
- package/react/src/lib/layouts.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/lib/static-data.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/RerouteProvider.d.ts.map +1 -1
- package/react/src/providers/RouterProvider.d.ts +4 -2
- package/react/src/providers/RouterProvider.d.ts.map +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 +7 -1
- package/react/src/types/router.d.ts.map +1 -1
- package/telemetry/react.d.ts +1 -1
- package/telemetry/react.js +2 -2
- package/telemetry/react.js.map +1 -1
- package/telemetry/server.d.ts +1 -1
- package/telemetry/server.js +6 -3
- package/telemetry/server.js.map +11 -10
- package/telemetry/src/react/api.d.ts +1 -1
- package/telemetry/src/react/context.d.ts +1 -1
- package/telemetry/src/react/index.d.ts +1 -1
- package/telemetry/src/react/telemetry.d.ts +1 -1
- package/telemetry/src/server/context.d.ts +1 -1
- package/telemetry/src/server/headers/extractor.d.ts +1 -1
- package/telemetry/src/server/headers/index.d.ts +1 -1
- package/telemetry/src/server/headers/presets.d.ts +1 -1
- package/telemetry/src/server/index.d.ts +1 -1
- package/telemetry/src/server/instrumentation.d.ts +1 -1
- package/telemetry/src/server/plugin.d.ts +1 -1
- package/telemetry/src/server/sourcemap.d.ts +1 -1
package/react/index.js.map
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
"import type { CSSProperties, ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\n\ninterface ClientOnlyProps {\n\tchildren: ReactNode;\n\tfallback?: ReactNode;\n\t/**\n\t * Optional className applied to wrapper div.\n\t * Useful for preserving height/layout during hydration.\n\t */\n\tclassName?: string;\n\t/**\n\t * Optional inline styles applied to wrapper div.\n\t * Useful for preserving height/layout during hydration.\n\t */\n\tstyle?: CSSProperties;\n}\n\n/**\n * ClientOnly component that only renders its children on the client-side.\n * Useful for components that cause hydration mismatches due to:\n * - Using Date.now(), Math.random(), or other dynamic values\n * - Browser-specific APIs (localStorage, window, etc.)\n * - Time-sensitive data that changes between server and client render\n *\n * @example\n * ```tsx\n * // Basic usage\n * <ClientOnly fallback={<div>Loading...</div>}>\n * <CountdownTimer />\n * </ClientOnly>\n *\n * // With height preservation\n * <ClientOnly\n * fallback={<Skeleton />}\n * className=\"min-h-screen\"\n * >\n * <PricingSection />\n * </ClientOnly>\n * ```\n */\nfunction ClientOnly({\n\tchildren,\n\tfallback = null,\n\tclassName,\n\tstyle,\n}: ClientOnlyProps) {\n\tconst [mounted, setMounted] = useState(false);\n\n\tuseEffect(() => {\n\t\tsetMounted(true);\n\t}, []);\n\n\t// If no className or style, return unwrapped for backward compatibility\n\tif (!(className || style)) {\n\t\tif (!mounted) {\n\t\t\treturn <>{fallback}</>;\n\t\t}\n\t\treturn <>{children}</>;\n\t}\n\n\t// With className or style, wrap in div to preserve layout\n\treturn (\n\t\t<div className={className} style={style}>\n\t\t\t{mounted ? children : fallback}\n\t\t</div>\n\t);\n}\n\nexport { ClientOnly };\n",
|
|
7
7
|
"import {\n\ttype ComponentType,\n\tisValidElement,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { flushSync } from 'react-dom';\nimport { useParams, useRouter } from '../hooks';\nimport { useLocale } from '../i18n/LocaleProvider';\nimport { applyLang, applyPageMeta, applySsrHead } from '../lib/head';\nimport {\n\tuseContentGetEntry,\n\tuseContentIndex,\n\tuseContentLoadCollection,\n\tuseMarkdownComponents,\n} from '../providers/ContentProvider';\nimport type { Any } from '../types/any';\n\nfunction looksLikeLocale(segment: string): boolean {\n\treturn /^[a-z]{2}(?:-[A-Za-z0-9]{2,8})*$/i.test(segment);\n}\n\nfunction contentModuleKey(\n\tcollection: string,\n\tname: string,\n\tlocale: string,\n\tdefaultLocale: string,\n): string {\n\tif (locale && locale !== defaultLocale) {\n\t\treturn `${collection}:${name}:${locale}`;\n\t}\n\treturn `${collection}:${name}`;\n}\n\n/**\n * Get captured HTML for a content key (set during SSR)\n */\nfunction getCapturedHtml(key: string): string | null {\n\ttry {\n\t\tconst g = globalThis as Any;\n\t\treturn g.__REROUTE_CONTENT_HTML__?.[key] || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\ntype RerouteGetEntry = (\n\tcollection: string,\n\tname: string,\n\tlocale?: string,\n) => { module?: string; component?: Any; meta?: Any } | undefined;\n\nfunction toComponent(x: Any): ComponentType {\n\tif (typeof x === 'function') return x as ComponentType;\n\tif (isValidElement(x)) return () => x as Any;\n\treturn () => null;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Content routing involves SSR data handling, component loading, and error states\nfunction ContentRoute({\n\tcollection,\n\tname,\n\tgetEntry,\n}: {\n\tcollection: string;\n\tname?: string;\n\tgetEntry?: RerouteGetEntry;\n}) {\n\tconst params = useParams<Record<string, string>>();\n\tconst router = useRouter() as Any;\n\tconst { pathname, notFoundResolver } = router;\n\tconst { locale, defaultLocale, enabled: i18nEnabled } = useLocale();\n\n\tconst pathInfo = (() => {\n\t\ttry {\n\t\t\tconst parts = String(pathname || '')\n\t\t\t\t.split('/')\n\t\t\t\t.filter(Boolean);\n\t\t\tif (parts.length >= 3 && looksLikeLocale(parts[1])) {\n\t\t\t\treturn { name: parts[2], locale: parts[1] };\n\t\t\t}\n\t\t\tif (parts.length >= 2) {\n\t\t\t\treturn { name: parts[1], locale: undefined as string | undefined };\n\t\t\t}\n\t\t} catch {\n\t\t\t// ignore\n\t\t}\n\t\treturn { name: undefined as string | undefined, locale: undefined };\n\t})();\n\n\tconst inferredName = name || params.slug || params.name || pathInfo.name;\n\tconst activeLocale =\n\t\tpathInfo.locale || (i18nEnabled ? locale : defaultLocale) || defaultLocale;\n\tconst key = inferredName\n\t\t? contentModuleKey(collection, inferredName, activeLocale, defaultLocale)\n\t\t: `${collection}:`;\n\tconst ctxGetEntry = useContentGetEntry();\n\tconst idx = useContentIndex();\n\tconst ensureCollection = useContentLoadCollection();\n\tconst markdownComponents = useMarkdownComponents();\n\tconst resolved404 = notFoundResolver ? notFoundResolver(pathname) : undefined;\n\n\tconst resolveEntry: RerouteGetEntry | undefined =\n\t\tgetEntry ||\n\t\tctxGetEntry ||\n\t\t((c, n, loc) => {\n\t\t\ttry {\n\t\t\t\tconst list = (idx as Any)?.[c] as Any[] | undefined;\n\t\t\t\tif (!Array.isArray(list)) return undefined;\n\t\t\t\tconst found =\n\t\t\t\t\t(loc\n\t\t\t\t\t\t? list.find((e: Any) => e?.name === n && e?.locale === loc)\n\t\t\t\t\t\t: undefined) ||\n\t\t\t\t\tlist.find((e: Any) => e?.name === n && e?.locale === defaultLocale) ||\n\t\t\t\t\tlist.find((e: Any) => e?.name === n);\n\t\t\t\tif (!found) return undefined;\n\t\t\t\treturn {\n\t\t\t\t\tmodule: found.module,\n\t\t\t\t\tmeta: found.meta,\n\t\t\t\t\tcomponent: found.component,\n\t\t\t\t} as Any;\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t});\n\tconst entry =\n\t\tinferredName && resolveEntry\n\t\t\t? resolveEntry(collection, inferredName, activeLocale)\n\t\t\t: undefined;\n\n\t// Do not auto-load the whole collection for a single content page.\n\t// Rely on SSR-seeded module and import-by-module when available.\n\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Component initialization checks SSR modules, preloaded modules, and handles fallbacks\n\tconst initialComp = useMemo<ComponentType>(() => {\n\t\t// Check SSR modules first (server-side and client after preload)\n\t\ttry {\n\t\t\tconst g: Any = globalThis as Any;\n\t\t\tconst mod = g.__REROUTE_SSR_MODULES__?.[key];\n\t\t\tif (mod) {\n\t\t\t\tconst C = (mod as Any).default || mod;\n\t\t\t\treturn toComponent(C);\n\t\t\t}\n\t\t} catch {}\n\n\t\t// Check client-side module cache\n\t\tif (typeof window !== 'undefined') {\n\t\t\tconst store = (window as Any).__REROUTE_MODULES__ || {};\n\t\t\tconst cached = store[key];\n\t\t\tif (cached) {\n\t\t\t\tconst C = (cached as Any).default || cached;\n\t\t\t\treturn toComponent(C);\n\t\t\t}\n\t\t}\n\n\t\t// Check entry component\n\t\tif ((entry as Any)?.component) {\n\t\t\treturn toComponent((entry as Any).component);\n\t\t}\n\n\t\t// Check for 404 case\n\t\tconst noContentFromSSR = !(globalThis as Any).__REROUTE_SSR_MODULES__?.[\n\t\t\tkey\n\t\t];\n\t\tconst noContentCached =\n\t\t\ttypeof window === 'undefined' ||\n\t\t\t!(window as Any).__REROUTE_MODULES__?.[key];\n\t\tconst noKnownContent = noContentFromSSR && noContentCached && !entry;\n\n\t\tif (noKnownContent && resolved404) {\n\t\t\treturn toComponent(resolved404);\n\t\t}\n\n\t\t// Return empty component while content loads\n\t\treturn () => null;\n\t}, [key, entry, resolved404]);\n\n\t// Check if we have content from SSR or cache\n\tlet hasInitialContent = false;\n\ttry {\n\t\tconst g: Any = globalThis as Any;\n\t\tif (g.__REROUTE_SSR_MODULES__?.[key]) {\n\t\t\thasInitialContent = true;\n\t\t} else if (typeof window !== 'undefined') {\n\t\t\tconst store = (window as Any).__REROUTE_MODULES__ || {};\n\t\t\tif (store[key]) {\n\t\t\t\thasInitialContent = true;\n\t\t\t}\n\t\t} else if ((entry as Any)?.component) {\n\t\t\thasInitialContent = true;\n\t\t} else {\n\t\t\t// Check if we're rendering 404 (no SSR/cache/entry but have 404 resolver)\n\t\t\tconst noContentFromSSR = !g.__REROUTE_SSR_MODULES__?.[key];\n\t\t\tconst noContentCached =\n\t\t\t\ttypeof window === 'undefined' ||\n\t\t\t\t!(window as Any).__REROUTE_MODULES__?.[key];\n\t\t\tconst noKnownContent = noContentFromSSR && noContentCached && !entry;\n\t\t\tif (noKnownContent && resolved404) {\n\t\t\t\thasInitialContent = true;\n\t\t\t}\n\t\t}\n\t} catch {}\n\n\tconst [Comp, setComp] = useState<ComponentType>(() => initialComp);\n\tconst [isContentLoaded, setIsContentLoaded] = useState(hasInitialContent);\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\tconst isLoadingRef = useRef(false);\n\tconst prevKeyRef = useRef(key);\n\n\t// Track if we've marked this key as loading to avoid setting flag every render\n\tconst hasMarkedLoadingRef = useRef<string | null>(null);\n\n\t// Reset state when key changes (navigating to different content)\n\tuseEffect(() => {\n\t\tif (prevKeyRef.current !== key) {\n\t\t\tprevKeyRef.current = key;\n\t\t\tsetComp(() => initialComp);\n\t\t\tsetIsContentLoaded(hasInitialContent);\n\t\t\tisLoadingRef.current = false;\n\t\t\thasMarkedLoadingRef.current = null;\n\t\t}\n\t}, [key, initialComp, hasInitialContent]);\n\n\t// CRITICAL: Use layoutEffect to mark as loading BEFORE paint\n\t// This prevents the flash of empty content\n\tuseLayoutEffect(() => {\n\t\t// Skip if already loaded from SSR or cache\n\t\tif (isContentLoaded) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Skip if already marked for this key\n\t\tif (hasMarkedLoadingRef.current === key) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Skip if no module to load\n\t\tif (!entry?.module || typeof window === 'undefined') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Mark this content as loading globally BEFORE paint\n\t\tconst w = window as Any;\n\t\tw.__REROUTE_CONTENT_LOADING__ = w.__REROUTE_CONTENT_LOADING__ || {};\n\t\tw.__REROUTE_CONTENT_LOADING__[key] = true;\n\t\thasMarkedLoadingRef.current = key;\n\n\t\t// Dispatch event immediately\n\t\ttry {\n\t\t\tw.dispatchEvent(\n\t\t\t\tnew CustomEvent('__reroute_content_loading__', {\n\t\t\t\t\tdetail: { collection, key },\n\t\t\t\t}),\n\t\t\t);\n\t\t} catch {}\n\t}, [key, entry?.module, isContentLoaded, collection]);\n\n\tuseEffect(() => {\n\t\t// Skip if already loaded from SSR or cache\n\t\tif (isContentLoaded) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Skip if already loading (prevents cancellation from re-runs)\n\t\tif (isLoadingRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet cancelled = false;\n\t\tif (entry?.module && typeof window !== 'undefined') {\n\t\t\tisLoadingRef.current = true;\n\t\t\tconst w = window as Any;\n\t\t\timport(/* @vite-ignore */ entry.module)\n\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Dynamic module import with fallbacks requires branching logic\n\t\t\t\t.then((m) => {\n\t\t\t\t\tif (cancelled) return;\n\n\t\t\t\t\tconst C = (m as Any).default || (m as Any);\n\t\t\t\t\tconst K = toComponent(C);\n\n\t\t\t\t\t// CRITICAL: Use flushSync to commit ContentRoute's DOM changes\n\t\t\t\t\t// BEFORE notifying parent to hide skeleton\n\t\t\t\t\tflushSync(() => {\n\t\t\t\t\t\tsetComp(() => K);\n\t\t\t\t\t\tsetIsContentLoaded(true);\n\t\t\t\t\t});\n\n\t\t\t\t\tisLoadingRef.current = false;\n\n\t\t\t\t\t// Clean up loading flag\n\t\t\t\t\tdelete w.__REROUTE_CONTENT_LOADING__[key];\n\n\t\t\t\t\t// Store FULL module (not just component) so useToc, etc. can access exports\n\t\t\t\t\t// MUST be before event dispatch so listeners can immediately access it\n\t\t\t\t\tw.__REROUTE_MODULES__ ||= {};\n\t\t\t\t\tw.__REROUTE_MODULES__[key] = m;\n\n\t\t\t\t\t// Dispatch event so useContent and useToc can update\n\t\t\t\t\ttry {\n\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\tnew CustomEvent('__reroute_content_loaded__', {\n\t\t\t\t\t\t\t\tdetail: { collection, key },\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch {}\n\n\t\t\t\t\t// Update head from module exports if available\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst meta = (m as Any).meta || (m as Any).frontmatter;\n\t\t\t\t\t\tif (meta) applyPageMeta(meta);\n\t\t\t\t\t} catch {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst ssr = (m as Any).ssr;\n\t\t\t\t\t\tif (ssr?.head) applySsrHead(ssr.head);\n\t\t\t\t\t\tif (ssr?.lang) applyLang(ssr.lang);\n\t\t\t\t\t} catch {}\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tif (!cancelled) {\n\t\t\t\t\t\tsetIsContentLoaded(true);\n\t\t\t\t\t\tisLoadingRef.current = false;\n\t\t\t\t\t\t// Clean up loading flag\n\t\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\t\tdelete w.__REROUTE_CONTENT_LOADING__?.[key];\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_content_loaded__', {\n\t\t\t\t\t\t\t\t\tdetail: { collection, key },\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\treturn () => {\n\t\t\t// Only cancel if we're NOT actively loading a module\n\t\t\t// This prevents cancellation when effect re-runs due to entry change\n\t\t\tif (!isLoadingRef.current) {\n\t\t\t\tcancelled = true;\n\t\t\t}\n\t\t\t// Clear previously injected head items from ssr.head\n\t\t\tapplySsrHead(undefined);\n\t\t};\n\t}, [entry?.module, key, collection, isContentLoaded]);\n\n\t// If entry info wasn't available yet (e.g., on SPA nav without SSR-seeded index),\n\t// proactively load the collection index so we can resolve the module URL and import it.\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return;\n\t\tif (entry || !collection) return;\n\t\ttry {\n\t\t\tif (typeof ensureCollection === 'function') {\n\t\t\t\t// Fire-and-forget; ContentProvider will update idx and entry will resolve on next render\n\t\t\t\tvoid ensureCollection(collection);\n\t\t\t}\n\t\t} catch {}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [collection, ensureCollection, entry]);\n\n\t// Apply title/description early based on registry meta\n\tuseEffect(() => {\n\t\ttry {\n\t\t\tif (entry && (entry as Any).meta) applyPageMeta((entry as Any).meta);\n\t\t} catch {}\n\t}, [entry]);\n\n\t// MDX components accept a 'components' prop for custom rendering\n\tconst compProps = markdownComponents\n\t\t? { components: markdownComponents }\n\t\t: {};\n\n\tconst isServer = typeof window === 'undefined';\n\n\t// On server: render with key attribute so client can capture HTML before hydration\n\tif (isServer) {\n\t\treturn (\n\t\t\t<div data-reroute='content' data-reroute-key={key} ref={containerRef}>\n\t\t\t\t<Comp {...(compProps as Any)} />\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// On client: check if we have captured HTML to use during hydration\n\t// The HTML is captured from the DOM by an inline script before React runs\n\tconst capturedHtml = getCapturedHtml(key);\n\tconst hasLoadedModule =\n\t\t!!(globalThis as Any).__REROUTE_SSR_MODULES__?.[key] ||\n\t\t!!(globalThis as Any).__REROUTE_MODULES__?.[key];\n\n\t// If we have captured HTML and the module hasn't loaded yet, use dangerouslySetInnerHTML\n\t// This ensures hydration succeeds by matching the server-rendered HTML exactly\n\tif (capturedHtml && !hasLoadedModule) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-reroute='content'\n\t\t\t\tdata-reroute-key={key}\n\t\t\t\tref={containerRef}\n\t\t\t\t// biome-ignore lint/security/noDangerouslySetInnerHtml: Required\n\t\t\t\tdangerouslySetInnerHTML={{ __html: capturedHtml }}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Normal render with the actual component\n\treturn (\n\t\t<div data-reroute='content' data-reroute-key={key} ref={containerRef}>\n\t\t\t<Comp {...(compProps as Any)} />\n\t\t</div>\n\t);\n}\n\nexport { ContentRoute };\n",
|
|
8
8
|
"import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { localizeContentHref } from '../i18n/helpers';\nimport { useLocale } from '../i18n/LocaleProvider';\nimport {\n\tuseContentIndex,\n\tuseContentLoadCollection,\n} from '../providers/ContentProvider';\nimport type { Any } from '../types/any';\n\nexport { useSearch } from './useSearch';\n\n/**\n * Prefer active locale, fall back to default; one entry per name.\n */\nfunction pickLocaleEntries<T extends { name?: string; locale?: string }>(\n\tlist: T[],\n\tlocale: string,\n\tdefaultLocale: string,\n): T[] {\n\tconst byName = new Map<string, T[]>();\n\tfor (const item of list) {\n\t\tconst name = item.name;\n\t\tif (!name) continue;\n\t\tconst arr = byName.get(name) || [];\n\t\tarr.push(item);\n\t\tbyName.set(name, arr);\n\t}\n\n\tconst result: T[] = [];\n\tfor (const variants of byName.values()) {\n\t\tconst preferred =\n\t\t\tvariants.find((v) => v.locale === locale) ||\n\t\t\tvariants.find((v) => v.locale === defaultLocale) ||\n\t\t\tvariants.find((v) => !v.locale) ||\n\t\t\tvariants[0];\n\t\tif (preferred) result.push(preferred);\n\t}\n\treturn result;\n}\n\ntype ContentMeta = Record<string, Any> | undefined;\n\ntype ContentListEntry<Meta = ContentMeta> = {\n\tcollection: string;\n\tname: string;\n\tslug?: string;\n\thref: string;\n\tmodule?: string;\n\tmeta: Meta extends ContentMeta ? Meta : ContentMeta;\n} & Record<string, Any>;\n\n/**\n * MongoDB-style query operators for advanced filtering\n */\ntype QueryOperators = {\n\t$gt?: string | number | Date;\n\t$gte?: string | number | Date;\n\t$lt?: string | number | Date;\n\t$lte?: string | number | Date;\n\t$eq?: string | number | boolean;\n\t$ne?: string | number | boolean;\n\t$in?: Array<string | number | boolean>;\n\t$nin?: Array<string | number | boolean>;\n\t$regex?: RegExp | string;\n\t$exists?: boolean;\n};\n\ntype QueryValue = string | number | boolean | RegExp | QueryOperators;\n\n/**\n * Filter type for content items. Supports:\n *\n * 1. Simple exact match:\n * { slug: 'my-post', 'meta.category': 'blog' }\n *\n * 2. RegExp patterns:\n * { slug: /^post-/, 'meta.title': /tutorial/i }\n *\n * 3. MongoDB-style operators:\n * { 'meta.date': { $lt: '2024-01-01' } }\n * { 'meta.priority': { $gte: 5, $lte: 10 } }\n * { 'meta.status': { $in: ['draft', 'published'] } }\n * { slug: { $regex: /^blog-/ } }\n *\n * 4. Logical operators:\n * { $and: [{ slug: 'foo' }, { 'meta.published': true }] }\n * { $or: [{ 'meta.featured': true }, { 'meta.priority': { $gt: 5 } }] }\n *\n * 5. Custom function:\n * (item) => item.meta.category === 'pricing'\n */\ntype ContentFilterObject<Meta = ContentMeta> = {\n\t[key: string]: QueryValue;\n} & {\n\t$and?: ContentFilter<Meta>[];\n\t$or?: ContentFilter<Meta>[];\n\t$not?: ContentFilter<Meta>;\n};\n\ntype ContentFilter<Meta = ContentMeta> =\n\t| ContentFilterObject<Meta>\n\t| ((item: ContentListEntry<Meta>) => boolean);\n\n/**\n * Sort type for content items. Supports:\n *\n * 1. MongoDB-style field sorting:\n * { 'meta.date': -1 } // descending\n * { 'meta.priority': 1 } // ascending\n * { 'meta.date': 'desc', 'meta.priority': 'asc' }\n *\n * 2. Multi-field sorting (evaluated in order):\n * { 'meta.priority': -1, 'meta.date': -1 }\n *\n * 3. Legacy date sorting (for backwards compatibility):\n * { date: 'asc' | 'desc' }\n *\n * 4. Custom function:\n * (a, b) => a.meta.priority - b.meta.priority\n *\n * 5. No sorting:\n * false\n */\ntype ContentSort<Meta = ContentMeta> =\n\t| { [key: string]: 1 | -1 | 'asc' | 'desc' }\n\t| ((a: ContentListEntry<Meta>, b: ContentListEntry<Meta>) => number)\n\t| false;\n\ntype UseContentCollectionParams<Meta = ContentMeta> = {\n\tcollection: string;\n\tsort?: ContentSort<Meta>;\n\t/** Optional limit for items returned and shipped by SSR */\n\tlimit?: number;\n\t/** Optional filter for specific items. Supports exact match, regex, or custom function */\n\tfilter?: ContentFilter<Meta>;\n\t/** Optional fields to include in the result. If provided, other fields may be stripped during SSR optimization */\n\tfields?: string[];\n};\n\ntype UseContentCollectionResult<Meta = ContentMeta> = {\n\titems: ContentListEntry<Meta>[];\n\tisLoading: boolean;\n\tprefetch: (\n\t\tentry: Pick<ContentListEntry<Meta>, 'collection' | 'name' | 'module'>,\n\t) => void;\n};\n\nfunction sortByDate<Meta = ContentMeta>(\n\torder: 'asc' | 'desc',\n): (a: ContentListEntry<Meta>, b: ContentListEntry<Meta>) => number {\n\treturn (a: ContentListEntry<Meta>, b: ContentListEntry<Meta>) => {\n\t\tconst da =\n\t\t\ta?.meta && (a.meta as Any)?.date\n\t\t\t\t? Date.parse(String((a.meta as Any).date))\n\t\t\t\t: 0;\n\t\tconst db =\n\t\t\tb?.meta && (b.meta as Any)?.date\n\t\t\t\t? Date.parse(String((b.meta as Any).date))\n\t\t\t\t: 0;\n\t\treturn order === 'asc' ? da - db : db - da;\n\t};\n}\n\n/**\n * Compare two values for sorting (handles strings, numbers, dates)\n */\nfunction compareForSort(a: Any, b: Any): number {\n\t// Handle null/undefined\n\tif (a == null && b == null) return 0;\n\tif (a == null) return 1; // nulls go last\n\tif (b == null) return -1;\n\n\t// Try parsing as dates if they're strings\n\tif (typeof a === 'string' && typeof b === 'string') {\n\t\tconst dateA = Date.parse(a);\n\t\tconst dateB = Date.parse(b);\n\t\tif (!(Number.isNaN(dateA) || Number.isNaN(dateB))) {\n\t\t\treturn dateA - dateB;\n\t\t}\n\t}\n\n\t// Handle Date objects\n\tif (a instanceof Date && b instanceof Date) {\n\t\treturn a.getTime() - b.getTime();\n\t}\n\n\t// Numeric comparison\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a - b;\n\t}\n\n\t// String comparison\n\treturn String(a).localeCompare(String(b));\n}\n\n/**\n * Create sort function from MongoDB-style sort spec\n */\nfunction createSortFunction<Meta = ContentMeta>(sortSpec: {\n\t[key: string]: 1 | -1 | 'asc' | 'desc';\n}): (a: ContentListEntry<Meta>, b: ContentListEntry<Meta>) => number {\n\tconst fields = Object.keys(sortSpec);\n\n\treturn (a: ContentListEntry<Meta>, b: ContentListEntry<Meta>) => {\n\t\tfor (const field of fields) {\n\t\t\tconst direction = sortSpec[field];\n\t\t\tconst multiplier = direction === -1 || direction === 'desc' ? -1 : 1;\n\n\t\t\tconst aVal = getNestedValue(a, field);\n\t\t\tconst bVal = getNestedValue(b, field);\n\n\t\t\tconst comparison = compareForSort(aVal, bVal);\n\t\t\tif (comparison !== 0) {\n\t\t\t\treturn comparison * multiplier;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t};\n}\n\n/**\n * Get value from object using dot notation path (e.g. 'meta.category')\n */\nfunction getNestedValue(obj: Any, path: string): Any {\n\tconst parts = path.split('.');\n\tlet current = obj;\n\tfor (const part of parts) {\n\t\tif (current == null) return undefined;\n\t\tcurrent = current[part];\n\t}\n\treturn current;\n}\n\n/**\n * Compare two values based on operator\n */\nfunction compareValues(\n\titemValue: Any,\n\toperator: string,\n\tfilterValue: Any,\n): boolean {\n\t// Convert to comparable types\n\tconst normalize = (val: Any): Any => {\n\t\tif (val == null) return null;\n\t\tif (val instanceof Date) return val.getTime();\n\t\tif (typeof val === 'string') {\n\t\t\tconst date = Date.parse(val);\n\t\t\tif (!Number.isNaN(date)) return date;\n\t\t\t// Try to parse as number for string numbers like \"4\"\n\t\t\tconst num = Number(val);\n\t\t\tif (!Number.isNaN(num)) return num;\n\t\t}\n\t\treturn val;\n\t};\n\n\tconst normalizedItem = normalize(itemValue);\n\tconst normalizedFilter = normalize(filterValue);\n\n\tswitch (operator) {\n\t\tcase '$gt':\n\t\t\treturn normalizedItem != null && normalizedItem > normalizedFilter;\n\t\tcase '$gte':\n\t\t\treturn normalizedItem != null && normalizedItem >= normalizedFilter;\n\t\tcase '$lt':\n\t\t\treturn normalizedItem != null && normalizedItem < normalizedFilter;\n\t\tcase '$lte':\n\t\t\treturn normalizedItem != null && normalizedItem <= normalizedFilter;\n\t\tcase '$eq':\n\t\t\treturn itemValue === filterValue;\n\t\tcase '$ne':\n\t\t\treturn itemValue !== filterValue;\n\t\tcase '$in':\n\t\t\treturn Array.isArray(filterValue) && filterValue.includes(itemValue);\n\t\tcase '$nin':\n\t\t\treturn Array.isArray(filterValue) && !filterValue.includes(itemValue);\n\t\tcase '$regex': {\n\t\t\tconst regex =\n\t\t\t\tfilterValue instanceof RegExp\n\t\t\t\t\t? filterValue\n\t\t\t\t\t: new RegExp(filterValue as string);\n\t\t\treturn regex.test(String(itemValue ?? ''));\n\t\t}\n\t\tcase '$exists':\n\t\t\treturn filterValue ? itemValue !== undefined : itemValue === undefined;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Check if a value is a query operator object\n */\nfunction isOperatorObject(value: Any): value is QueryOperators {\n\tif (\n\t\ttypeof value !== 'object' ||\n\t\tvalue === null ||\n\t\tvalue instanceof RegExp ||\n\t\tvalue instanceof Date\n\t) {\n\t\treturn false;\n\t}\n\tconst keys = Object.keys(value);\n\treturn keys.length > 0 && keys.every((k) => k.startsWith('$'));\n}\n\n/**\n * Match a single item against a filter spec\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Content hook manages SSR data, client hydration, and data fetching\nfunction matchesFilter<Meta = ContentMeta>(\n\titem: ContentListEntry<Meta>,\n\tfilter: ContentFilter<Meta>,\n): boolean {\n\t// Handle function filter\n\tif (typeof filter === 'function') {\n\t\treturn filter(item);\n\t}\n\n\t// Handle logical operators\n\tif ('$and' in filter && Array.isArray(filter.$and)) {\n\t\treturn filter.$and.every((f) => matchesFilter(item, f));\n\t}\n\tif ('$or' in filter && Array.isArray(filter.$or)) {\n\t\treturn filter.$or.some((f) => matchesFilter(item, f));\n\t}\n\tif ('$not' in filter && filter.$not) {\n\t\treturn !matchesFilter(item, filter.$not);\n\t}\n\n\t// Handle field-based filters\n\tfor (const key in filter) {\n\t\t// Skip logical operators\n\t\tif (key === '$and' || key === '$or' || key === '$not') continue;\n\n\t\tconst filterValue = filter[key];\n\t\tconst itemValue = getNestedValue(item, key);\n\n\t\t// Handle RegExp (legacy support)\n\t\tif (filterValue instanceof RegExp) {\n\t\t\tif (!filterValue.test(String(itemValue ?? ''))) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Handle operator object\n\t\tif (isOperatorObject(filterValue)) {\n\t\t\tfor (const operator in filterValue) {\n\t\t\t\tconst opValue = (filterValue as Any)[operator];\n\t\t\t\tif (!compareValues(itemValue, operator, opValue)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Handle exact match\n\t\tif (itemValue !== filterValue) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Apply filter to content items\n */\nfunction applyFilter<Meta = ContentMeta>(\n\titems: ContentListEntry<Meta>[],\n\tfilter: ContentFilter<Meta> | undefined,\n): ContentListEntry<Meta>[] {\n\tif (!filter) return items;\n\treturn items.filter((item) => matchesFilter(item, filter));\n}\n\nexport function prefetchContent<Meta = ContentMeta>(\n\tentry: Pick<ContentListEntry<Meta>, 'collection' | 'name' | 'module'>,\n): void {\n\tif (typeof window === 'undefined') return;\n\tconst modUrl = (entry as Any)?.module as string | undefined;\n\tif (!modUrl || typeof modUrl !== 'string') return;\n\ttry {\n\t\tconst key = `${entry.collection}:${entry.name}`;\n\t\tconst w = window as Any;\n\t\tif (!w.__REROUTE_MODULES__) w.__REROUTE_MODULES__ = {};\n\t\tconst store: Any = w.__REROUTE_MODULES__;\n\t\tif (store[key]) return;\n\t\timport(/* @vite-ignore */ modUrl)\n\t\t\t.then((m) => {\n\t\t\t\t// Store full module (not just component) so hooks like useToc can access toc, meta, etc\n\t\t\t\tstore[key] = m;\n\t\t\t})\n\t\t\t.catch(() => {});\n\t} catch {}\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Content hook manages SSR data, client hydration, and data fetching\nexport function useContent<Meta = ContentMeta>(\n\tparams: UseContentCollectionParams<Meta>,\n): UseContentCollectionResult<Meta> {\n\tconst { collection, sort = { date: 'desc' }, limit, filter, fields } = params;\n\n\t// Dev warnings for performance optimization\n\t// Use bracket notation to prevent bundler from replacing NODE_ENV at build time\n\tif (typeof window === 'undefined') {\n\t\t// biome-ignore lint/complexity/useLiteralKeys: bracket notation required to prevent build-time replacement\n\t\tconst nodeEnv = process.env['NODE_ENV'];\n\t\tconst isProduction = nodeEnv === 'production';\n\n\t\tif (!isProduction) {\n\t\t\t// Get call site information from stack trace\n\t\t\tconst stack = new Error().stack || '';\n\t\t\tconst stackLines = stack.split('\\n');\n\t\t\t// Find the first line that's not from this file (useContent.ts)\n\t\t\tconst callerLine = stackLines.find(\n\t\t\t\t(line) =>\n\t\t\t\t\t!line.includes('useContent') &&\n\t\t\t\t\t(line.includes('.tsx') ||\n\t\t\t\t\t\tline.includes('.ts') ||\n\t\t\t\t\t\tline.includes('.jsx') ||\n\t\t\t\t\t\tline.includes('.js')),\n\t\t\t);\n\t\t\tconst location = callerLine\n\t\t\t\t? callerLine\n\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t.replace(/^at\\s+/, '')\n\t\t\t\t\t\t.replace(/\\s+\\(/g, ' (')\n\t\t\t\t: 'unknown location';\n\n\t\t\tif (!limit) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`\\n[reroute] Performance Warning ⚠️\\n` +\n\t\t\t\t\t\t` Collection: \"${collection}\"\\n` +\n\t\t\t\t\t\t` Issue: Missing 'limit' parameter\\n` +\n\t\t\t\t\t\t` Location: ${location}\\n` +\n\t\t\t\t\t\t` Impact: Entire collection (all items) will be sent to the client\\n` +\n\t\t\t\t\t\t` Fix: Add 'limit: N' to your useContent() call\\n` +\n\t\t\t\t\t\t` Example: useContent({ collection: \"${collection}\", limit: 10 })\\n`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!fields) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`\\n[reroute] Performance Warning ⚠️\\n` +\n\t\t\t\t\t\t` Collection: \"${collection}\"\\n` +\n\t\t\t\t\t\t` Issue: Missing 'fields' parameter\\n` +\n\t\t\t\t\t\t` Location: ${location}\\n` +\n\t\t\t\t\t\t` Impact: All fields for all items will be sent to the client\\n` +\n\t\t\t\t\t\t` Fix: Add 'fields' array to your useContent() call\\n` +\n\t\t\t\t\t\t` Example: useContent({ collection: \"${collection}\", fields: ['slug', 'href', 'meta'] })\\n`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// During SSR, we'll capture the actual results after filtering/sorting/limiting\n\t// and store them for serialization to the client\n\t// (This happens in the items memo below)\n\tconst index = useContentIndex();\n\tconst loadCollection = useContentLoadCollection();\n\tconst { locale, defaultLocale, enabled: i18nEnabled } = useLocale();\n\n\t// Initialize _ready based on whether collection is already available\n\t// This ensures SSR works correctly when data is pre-loaded\n\tconst [_ready, setReady] = useState(() => {\n\t\tconst have = (index as Any)?.[collection] as Any[] | undefined;\n\t\treturn Array.isArray(have) && have.length > 0;\n\t});\n\n\tconst [_contentLoadTick, setContentLoadTick] = useState(0);\n\n\t// Detect if we're hydrating with SSR-seeded data\n\t// If so, start with _extraRender: true to match server behavior\n\t// IMPORTANT: Only for initial hydration, not for SPA navigations!\n\tconst [_extraRender, setExtraRender] = useState(() => {\n\t\t// On server, we don't need extra render\n\t\tif (typeof window === 'undefined') return true;\n\n\t\t// On client, check if this is INITIAL HYDRATION (not SPA navigation)\n\t\ttry {\n\t\t\tconst w = window as Any;\n\t\t\tconst ssrCollections = w.__REROUTE_COLLECTIONS__ || {};\n\t\t\tconst hasSSRData =\n\t\t\t\tArray.isArray(ssrCollections[collection]) &&\n\t\t\t\tssrCollections[collection].length > 0;\n\n\t\t\t// Only skip extra render if we have SSR data AND we haven't hydrated yet\n\t\t\t// After first hydration, __REROUTE_HYDRATED__ will be true\n\t\t\tconst isInitialHydration = !w.__REROUTE_HYDRATED__;\n\n\t\t\t// If we have SSR data AND it's initial hydration, skip the extra render delay\n\t\t\treturn hasSSRData && isInitialHydration;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// When ready becomes true, wait for ContentRoute to render and possibly start loading\n\t// This gives ContentRoute time to set __REROUTE_CONTENT_LOADING__ flag\n\t// But only for client-side navigations, not initial SSR hydration\n\tuseEffect(() => {\n\t\tif (_ready && !_extraRender) {\n\t\t\t// Use double rAF to ensure ContentRoute has rendered and started loading\n\t\t\t// First rAF: ContentRoute renders\n\t\t\t// Second rAF: Loading flag is set, we can check hasLoadingModules\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tsetExtraRender(true);\n\t\t\t\t\t// Mark that we've completed initial hydration\n\t\t\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\t\t\t(window as Any).__REROUTE_HYDRATED__ = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}, [_ready, _extraRender]);\n\n\t// Reset extra render flag when collection changes (new navigation)\n\t// This ensures client-side navigations properly wait for content to load\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: we too scared to remove this at this point\n\tuseEffect(() => {\n\t\t// Always reset for SPA navigations (after initial hydration)\n\t\tif (typeof window !== 'undefined') {\n\t\t\tconst w = window as Any;\n\t\t\t// Only reset if we've already hydrated (not initial load)\n\t\t\tif (w.__REROUTE_HYDRATED__) {\n\t\t\t\tsetExtraRender(false);\n\t\t\t}\n\t\t}\n\t}, [collection]);\n\n\tuseEffect(() => {\n\t\tlet cancelled = false;\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Collection loading with pagination and filtering\n\t\tasync function ensure() {\n\t\t\ttry {\n\t\t\t\tconst have = (index as Any)?.[collection] as Any[] | undefined;\n\t\t\t\t// In hydration, a subset may be inlined. If limit is undefined (caller expects full list)\n\t\t\t\t// or requested limit exceeds current subset size, try loading the full collection.\n\t\t\t\tconst w: Any | undefined =\n\t\t\t\t\ttypeof window !== 'undefined' ? (window as Any) : undefined;\n\t\t\t\tconst partial: boolean = Boolean(\n\t\t\t\t\tw?.__REROUTE_COLLECTIONS_PARTIAL__?.[collection],\n\t\t\t\t);\n\n\t\t\t\t// If we have a filter with slug and the collection is partial (field-stripped),\n\t\t\t\t// we need to load the full collection to get complete data for the focused item\n\t\t\t\tconst filterSlug =\n\t\t\t\t\tfilter && typeof filter === 'object' && !Array.isArray(filter)\n\t\t\t\t\t\t? (filter as Any).slug\n\t\t\t\t\t\t: undefined;\n\t\t\t\tconst needsFullItem =\n\t\t\t\t\ttypeof filterSlug === 'string' && partial && fields;\n\n\t\t\t\tif (\n\t\t\t\t\t!have ||\n\t\t\t\t\tneedsFullItem ||\n\t\t\t\t\t(partial &&\n\t\t\t\t\t\t(!limit || (typeof limit === 'number' && have.length < limit)))\n\t\t\t\t) {\n\t\t\t\t\tif (loadCollection) await loadCollection(collection);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (!cancelled) setReady(true);\n\t\t\t}\n\t\t}\n\t\tensure();\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t}, [collection, index, loadCollection, limit, filter, fields]);\n\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Filtering and transforming content list\n\tconst items = useMemo<ContentListEntry<Meta>[]>(() => {\n\t\tconst source = index || {};\n\t\tconst list = (source as Any)?.[collection] as\n\t\t\t| ContentListEntry<Meta>[]\n\t\t\t| undefined;\n\t\tif (!Array.isArray(list) || list.length === 0)\n\t\t\treturn [] as ContentListEntry<Meta>[];\n\t\tlet cloned = [...list];\n\n\t\t// Locale-aware selection when i18n is on (dedupe by name)\n\t\tif (i18nEnabled) {\n\t\t\tcloned = pickLocaleEntries(cloned, locale, defaultLocale);\n\t\t\tcloned = cloned.map((item) => ({\n\t\t\t\t...item,\n\t\t\t\thref: localizeContentHref(\n\t\t\t\t\titem.collection || collection,\n\t\t\t\t\titem.name,\n\t\t\t\t\tlocale,\n\t\t\t\t\tdefaultLocale,\n\t\t\t\t),\n\t\t\t}));\n\t\t}\n\n\t\t// Apply filtering\n\t\tcloned = applyFilter<Meta>(cloned, filter);\n\n\t\t// Apply sorting\n\t\tif (typeof sort === 'function') {\n\t\t\t// Custom function\n\t\t\tcloned = cloned.sort(sort);\n\t\t} else if (sort && typeof sort === 'object') {\n\t\t\t// Check if it's the legacy { date: 'asc' | 'desc' } format\n\t\t\tif ('date' in sort && Object.keys(sort).length === 1) {\n\t\t\t\t// Legacy date sorting\n\t\t\t\tcloned = cloned.sort(\n\t\t\t\t\tsortByDate<Meta>((sort as Any).date === 'asc' ? 'asc' : 'desc'),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// MongoDB-style sorting\n\t\t\t\tcloned = cloned.sort(createSortFunction<Meta>(sort as Any));\n\t\t\t}\n\t\t}\n\t\t// sort === false -> leave as-is\n\n\t\t// Apply limit\n\t\tif (typeof limit === 'number' && limit >= 0)\n\t\t\tcloned = cloned.slice(0, limit);\n\n\t\t// During SSR, capture the actual filtered/sorted/limited results\n\t\t// Store them so we can send exactly these items to the client\n\t\tif (typeof window === 'undefined' && cloned.length > 0) {\n\t\t\ttry {\n\t\t\t\tconst g = globalThis as Any;\n\t\t\t\tif (!g.__REROUTE_SSR_RESULTS__) {\n\t\t\t\t\tg.__REROUTE_SSR_RESULTS__ = {};\n\t\t\t\t}\n\n\t\t\t\t// Merge results with any existing ones for this collection\n\t\t\t\tif (!g.__REROUTE_SSR_RESULTS__[collection]) {\n\t\t\t\t\tg.__REROUTE_SSR_RESULTS__[collection] = [];\n\t\t\t\t}\n\n\t\t\t\t// Add items that aren't already in the results.\n\t\t\t\t// The locale belongs in the key: the same name exists once per\n\t\t\t\t// translation, and dropping a variant as a duplicate would ship the\n\t\t\t\t// wrong language to the client.\n\t\t\t\tconst itemKey = (item: Any) =>\n\t\t\t\t\t`${item.name || item.slug}\\u0000${item.locale || ''}`;\n\t\t\t\tconst existing = g.__REROUTE_SSR_RESULTS__[collection] as Any[];\n\t\t\t\tconst existingKeys = new Set(existing.map(itemKey));\n\n\t\t\t\tfor (const item of cloned) {\n\t\t\t\t\tif (!((item as Any).name || (item as Any).slug)) continue;\n\t\t\t\t\tconst key = itemKey(item);\n\t\t\t\t\tif (!existingKeys.has(key)) {\n\t\t\t\t\t\texisting.push(item);\n\t\t\t\t\t\texistingKeys.add(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t}\n\n\t\treturn cloned;\n\t}, [\n\t\tindex,\n\t\tcollection,\n\t\tsort,\n\t\tlimit,\n\t\tfilter,\n\t\ti18nEnabled,\n\t\tlocale,\n\t\tdefaultLocale,\n\t]);\n\n\t// Listen for content module loading events (both start and finish)\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return;\n\n\t\tconst handler = (e: Event) => {\n\t\t\tconst detail = (e as CustomEvent).detail;\n\t\t\tif (detail?.collection === collection) {\n\t\t\t\tsetContentLoadTick((t) => t + 1);\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener('__reroute_content_loading__' as Any, handler);\n\t\twindow.addEventListener('__reroute_content_loaded__' as Any, handler);\n\t\treturn () => {\n\t\t\twindow.removeEventListener('__reroute_content_loading__' as Any, handler);\n\t\t\twindow.removeEventListener('__reroute_content_loaded__' as Any, handler);\n\t\t};\n\t}, [collection]);\n\n\tconst prefetch = useCallback(\n\t\t(entry: Pick<ContentListEntry<Meta>, 'collection' | 'name' | 'module'>) =>\n\t\t\tprefetchContent<Meta>(entry),\n\t\t[],\n\t);\n\n\t// ==================================================================================\n\t// CRITICAL: Check if content modules are currently loading\n\t// ==================================================================================\n\t// This checks __REROUTE_CONTENT_LOADING__ which is set by ContentRoute when it\n\t// starts fetching/importing a content module bundle.\n\t//\n\t// **DEPENDENCY CRITICAL**: `_contentLoadTick` MUST be in the dependency array!\n\t// Without it, this useMemo won't recalculate when loading events fire, causing\n\t// the loading skeleton to disappear prematurely while the JS bundle downloads.\n\t//\n\t// Flow:\n\t// 1. Collection loads → _ready: true\n\t// 2. Component renders with skeleton (isLoading: true due to !_extraRender)\n\t// 3. Double rAF → _extraRender: true\n\t// 4. ContentRoute renders and sets __REROUTE_CONTENT_LOADING__[key] = true\n\t// 5. ContentRoute fires '__reroute_content_loading__' event\n\t// 6. Event handler increments _contentLoadTick\n\t// 7. This useMemo recalculates due to _contentLoadTick dependency\n\t// 8. Returns true → isLoading stays true → skeleton stays visible\n\t// 9. Module loads, ContentRoute fires '__reroute_content_loaded__' event\n\t// 10. Event handler increments _contentLoadTick again\n\t// 11. This useMemo recalculates, returns false → isLoading: false → show content\n\t//\n\t// If you remove _contentLoadTick from deps, steps 7-8 won't happen and the\n\t// skeleton will disappear immediately after step 3, before the bundle downloads!\n\t// ==================================================================================\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: we too scared to remove this at this point\n\tconst hasLoadingModules = useMemo(() => {\n\t\tif (typeof window === 'undefined') {\n\t\t\t// During SSR, check if any content modules for this collection are being accessed\n\t\t\t// but not yet fully loaded into the SSR modules store\n\t\t\treturn false;\n\t\t}\n\t\tconst w = window as Any;\n\t\tconst loading = w.__REROUTE_CONTENT_LOADING__ || {};\n\t\tfor (const key in loading) {\n\t\t\tif (key.startsWith(`${collection}:`)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}, [collection, _contentLoadTick]);\n\n\t// ==================================================================================\n\t// CRITICAL: isLoading calculation\n\t// ==================================================================================\n\t// Server: Simple - just check if collection is ready\n\t// Client: THREE conditions (ALL are critical, DO NOT remove any!):\n\t// 1. !_ready - Collection index not loaded yet\n\t// 2. !_extraRender - Gives ContentRoute time to render and set loading flags\n\t// 3. hasLoadingModules - Content module JS bundle is downloading\n\t//\n\t// Why all three are needed:\n\t// - Without !_ready: No skeleton on initial navigation\n\t// - Without !_extraRender: hasLoadingModules will be false because ContentRoute\n\t// hasn't rendered yet to set the loading flag, causing skeleton to disappear\n\t// - Without hasLoadingModules: Skeleton disappears while JS bundle downloads\n\t//\n\t// The _extraRender delay (double rAF) gives ContentRoute enough time to:\n\t// 1. Render itself\n\t// 2. Start dynamic import() of content module\n\t// 3. Set __REROUTE_CONTENT_LOADING__ flag\n\t// 4. Fire event to increment _contentLoadTick\n\t// 5. Trigger hasLoadingModules recalculation\n\t// ==================================================================================\n\tconst isLoading =\n\t\ttypeof window === 'undefined'\n\t\t\t? !_ready\n\t\t\t: !(_ready && _extraRender) || hasLoadingModules;\n\n\treturn { items, isLoading, prefetch };\n}\n\nexport type {\n\tContentFilter,\n\tContentListEntry,\n\tContentSort,\n\tUseContentCollectionParams,\n\tUseContentCollectionResult,\n};\n",
|
|
9
|
-
"import { IntlMessageFormat } from 'intl-messageformat';\n\ntype MessageCatalog = {\n\t[key: string]: string | MessageCatalog;\n};\n\ntype MessageValues = Record<\n\tstring,\n\tstring | number | boolean | Date | null | undefined\n>;\n\nfunction getMessage(\n\tcatalog: MessageCatalog | undefined,\n\tkey: string,\n): string | undefined {\n\tif (!(catalog && key)) return undefined;\n\tconst parts = key.split('.');\n\tlet current: string | MessageCatalog | undefined = catalog;\n\tfor (const part of parts) {\n\t\tif (current == null || typeof current === 'string') return undefined;\n\t\tcurrent = current[part];\n\t}\n\treturn typeof current === 'string' ? current : undefined;\n}\n\nfunction lookupMessage(\n\tcatalogs: Record<string, MessageCatalog>,\n\tlocale: string,\n\tdefaultLocale: string,\n\tkey: string,\n): string | undefined {\n\treturn (\n\t\tgetMessage(catalogs[locale], key) ??\n\t\t(locale !== defaultLocale\n\t\t\t? getMessage(catalogs[defaultLocale], key)\n\t\t\t: undefined)\n\t);\n}\n\nconst formatterCache = new Map<string, IntlMessageFormat>();\n\nfunction formatMessage(\n\tmessage: string,\n\tlocale: string,\n\tvalues?: MessageValues,\n): string {\n\tif (\n\t\t(!values || Object.keys(values).length === 0) &&\n\t\t!/\\{[^}]+\\}/.test(message)\n\t) {\n\t\treturn message;\n\t}\n\n\tconst cacheKey = `${locale}\\0${message}`;\n\tlet formatter = formatterCache.get(cacheKey);\n\tif (!formatter) {\n\t\tformatter = new IntlMessageFormat(message, locale);\n\t\tformatterCache.set(cacheKey, formatter);\n\t}\n\n\ttry {\n\t\tconst result = formatter.format(values as Record<string, unknown>);\n\t\treturn typeof result === 'string' ? result : String(result);\n\t} catch {\n\t\treturn message;\n\t}\n}\n\nfunction createTranslator(\n\tcatalogs: Record<string, MessageCatalog>,\n\tlocale: string,\n\tdefaultLocale: string,\n): (key: string, values?: MessageValues) => string {\n\treturn (key: string, values?: MessageValues) => {\n\t\tconst message = lookupMessage(catalogs, locale, defaultLocale, key);\n\t\tif (message == null) return key;\n\t\treturn formatMessage(message, locale, values);\n\t};\n}\n\nfunction looksLikeLocale(segment: string): boolean {\n\treturn /^[a-z]{2}(?:-[A-Za-z0-9]{2,8})*$/i.test(segment);\n}\n\nfunction parseContentPath(\n\tpathname: string,\n\tavailableLocales: string[] = [],\n\tcollections?: string[],\n):\n\t| {\n\t\t\tcollection: string;\n\t\t\tname: string;\n\t\t\tlocale?: string;\n\t\t\troutingPathname: string;\n\t }\n\t| undefined {\n\tconst pathOnly = pathname.split('?')[0].split('#')[0];\n\tconst parts = pathOnly.split('/').filter(Boolean);\n\tif (parts.length < 2) return undefined;\n\n\tconst [collection, second, third] = parts;\n\t// When a collections list is provided, only those paths are content URLs\n\tif (collections && !collections.includes(collection)) {\n\t\treturn undefined;\n\t}\n\n\tconst localeSet = new Set(availableLocales.map((l) => l.toLowerCase()));\n\n\tif (parts.length >= 3 && third) {\n\t\tconst secondIsLocale =\n\t\t\tlocaleSet.size > 0\n\t\t\t\t? localeSet.has(second.toLowerCase())\n\t\t\t\t: looksLikeLocale(second);\n\t\tif (secondIsLocale) {\n\t\t\tconst locale =\n\t\t\t\tavailableLocales.find(\n\t\t\t\t\t(l) => l.toLowerCase() === second.toLowerCase(),\n\t\t\t\t) || second;\n\t\t\treturn {\n\t\t\t\tcollection,\n\t\t\t\tname: third,\n\t\t\t\tlocale,\n\t\t\t\t// Only the locale segment goes: `/blog/pt-BR/a/b` routes as `/blog/a/b`.\n\t\t\t\troutingPathname: `/${[collection, ...parts.slice(2)].join('/')}`,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn {\n\t\tcollection,\n\t\tname: second,\n\t\troutingPathname: `/${parts.join('/')}`,\n\t};\n}\n\nfunction localizeContentHref(\n\tcollection: string,\n\tname: string,\n\tlocale: string,\n\tdefaultLocale: string,\n): string {\n\tif (!locale || locale === defaultLocale) {\n\t\treturn `/${collection}/${name}`;\n\t}\n\treturn `/${collection}/${locale}/${name}`;\n}\n\nfunction localizeHref(\n\tto: string,\n\tlocale: string,\n\tdefaultLocale: string,\n\tavailableLocales: string[] = [],\n\tcollections?: string[],\n): string {\n\ttry {\n\t\tconst url = new URL(to, 'http://local');\n\t\tconst parsed = parseContentPath(\n\t\t\turl.pathname,\n\t\t\tavailableLocales,\n\t\t\
|
|
10
|
-
"import {\n\tcreateContext,\n\ttype ReactNode,\n\tuseCallback,\n\tuseContext,\n\tuseMemo,\n\tuseSyncExternalStore,\n} from 'react';\nimport {\n\tcreateTranslator,\n\tlocalizeContentHref,\n\tlocalizeHref,\n\ttype MessageCatalog,\n\ttype MessageValues,\n} from './helpers';\n\ntype I18nHydration = {\n\tenabled: boolean;\n\tlocale: string;\n\tdefaultLocale: string;\n\tlocales: string[];\n\tcookie: string;\n\tcatalogs: Record<string, MessageCatalog>;\n\tcollections?: string[];\n};\n\ntype LocaleContextValue = {\n\tenabled: boolean;\n\tlocale: string;\n\tdefaultLocale: string;\n\tlocales: string[];\n\tt: (key: string, values?: MessageValues) => string;\n\tsetLocale: (next: string) => void;\n\tlocalizePath: (to: string) => string;\n\tlocalizeContentPath: (collection: string, name: string) => string;\n};\n\nconst LocaleContext = createContext<LocaleContextValue | null>(null);\n\ntype LocaleStore = {\n\tstate: I18nHydration;\n\tlisteners: Set<() => void>;\n};\n\nconst DISABLED_STATE: I18nHydration = {\n\tenabled: false,\n\tlocale: 'en-US',\n\tdefaultLocale: 'en-US',\n\tlocales: [],\n\tcookie: 'reroute-locale',\n\tcatalogs: {},\n};\n\nfunction readHydration(): I18nHydration {\n\ttry {\n\t\tconst g = globalThis as Record<string, unknown>;\n\t\tconst raw = g.__REROUTE_I18N__ as I18nHydration | undefined;\n\t\tif (raw && typeof raw === 'object') {\n\t\t\treturn {\n\t\t\t\tenabled: !!raw.enabled,\n\t\t\t\tlocale: raw.locale || 'en-US',\n\t\t\t\tdefaultLocale: raw.defaultLocale || 'en-US',\n\t\t\t\tlocales: Array.isArray(raw.locales) ? raw.locales : [],\n\t\t\t\tcookie: raw.cookie || 'reroute-locale',\n\t\t\t\tcatalogs: raw.catalogs || {},\n\t\t\t\tcollections: raw.collections,\n\t\t\t};\n\t\t}\n\t} catch {\n\t\t// ignore\n\t}\n\treturn DISABLED_STATE;\n}\n\nfunction sameHydration(a: I18nHydration, b: I18nHydration): boolean {\n\treturn (\n\t\ta.enabled === b.enabled &&\n\t\ta.locale === b.locale &&\n\t\ta.defaultLocale === b.defaultLocale &&\n\t\ta.cookie === b.cookie &&\n\t\ta.catalogs === b.catalogs &&\n\t\ta.locales === b.locales &&\n\t\ta.collections === b.collections\n\t);\n}\n\nconst store: LocaleStore = {\n\tstate: readHydration(),\n\tlisteners: new Set(),\n};\n\nfunction subscribe(listener: () => void) {\n\tstore.listeners.add(listener);\n\treturn () => {\n\t\tstore.listeners.delete(listener);\n\t};\n}\n\n/**\n * Must return a stable object reference across calls when nothing changed.\n * Recreating state here breaks useSyncExternalStore (infinite update loop).\n */\nfunction getSnapshot(): I18nHydration {\n\tconst fromGlobal = readHydration();\n\tif (fromGlobal.enabled && !sameHydration(store.state, fromGlobal)) {\n\t\tstore.state = fromGlobal;\n\t}\n\treturn store.state;\n}\n\nfunction getServerSnapshot(): I18nHydration {\n\treturn getSnapshot();\n}\n\nfunction seedStore(value: Partial<I18nHydration>) {\n\tconst next: I18nHydration = {\n\t\t...readHydration(),\n\t\t...value,\n\t\tenabled: true,\n\t\tlocale: value.locale || store.state.locale,\n\t\tdefaultLocale: value.defaultLocale || store.state.defaultLocale,\n\t\tlocales: value.locales || store.state.locales,\n\t\tcookie: value.cookie || store.state.cookie,\n\t\tcatalogs: value.catalogs || store.state.catalogs,\n\t\tcollections: value.collections || store.state.collections,\n\t};\n\tif (sameHydration(store.state, next)) return;\n\tstore.state = next;\n\ttry {\n\t\t(globalThis as Record<string, unknown>).__REROUTE_I18N__ = store.state;\n\t} catch {\n\t\t// ignore\n\t}\n}\n\nfunction writeLocaleCookie(name: string, locale: string) {\n\tif (typeof document === 'undefined') return;\n\tconst maxAge = 60 * 60 * 24 * 365;\n\t// biome-ignore lint/suspicious/noDocumentCookie: Cookie Store API is not universally available; locale cookie must work on SSR hydration clients\n\tdocument.cookie = `${name}=${encodeURIComponent(locale)}; Path=/; Max-Age=${maxAge}; SameSite=Lax`;\n}\n\nfunction LocaleProvider({\n\tchildren,\n\tvalue,\n}: {\n\tchildren?: ReactNode;\n\tvalue?: Partial<I18nHydration>;\n}) {\n\t// Seed from props once per distinct hydration payload (SSR / App)\n\tif (value?.enabled) {\n\t\tseedStore(value);\n\t}\n\n\tconst state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n\tconst translator = useMemo(() => {\n\t\tif (!state.enabled) {\n\t\t\treturn (key: string) => key;\n\t\t}\n\t\treturn createTranslator(state.catalogs, state.locale, state.defaultLocale);\n\t}, [state.enabled, state.catalogs, state.locale, state.defaultLocale]);\n\n\tconst setLocale = useCallback(\n\t\t(next: string) => {\n\t\t\tif (!state.enabled) return;\n\t\t\tif (!state.locales.includes(next)) return;\n\t\t\tif (typeof window === 'undefined') return;\n\n\t\t\twriteLocaleCookie(state.cookie, next);\n\n\t\t\tconst url = new URL(window.location.href);\n\t\t\turl.searchParams.set('lang', next);\n\t\t\twindow.location.assign(`${url.pathname}${url.search}${url.hash}`);\n\t\t},\n\t\t[state],\n\t);\n\n\tconst localizePath = useCallback(\n\t\t(to: string) => {\n\t\t\tif (!state.enabled) return to;\n\t\t\treturn localizeHref(\n\t\t\t\tto,\n\t\t\t\tstate.locale,\n\t\t\t\tstate.defaultLocale,\n\t\t\t\tstate.locales,\n\t\t\t\tstate.collections,\n\t\t\t);\n\t\t},\n\t\t[state],\n\t);\n\n\tconst localizeContentPath = useCallback(\n\t\t(collection: string, name: string) => {\n\t\t\tif (!state.enabled) return `/${collection}/${name}`;\n\t\t\treturn localizeContentHref(\n\t\t\t\tcollection,\n\t\t\t\tname,\n\t\t\t\tstate.locale,\n\t\t\t\tstate.defaultLocale,\n\t\t\t);\n\t\t},\n\t\t[state],\n\t);\n\n\tconst ctx = useMemo<LocaleContextValue>(\n\t\t() => ({\n\t\t\tenabled: state.enabled,\n\t\t\tlocale: state.locale,\n\t\t\tdefaultLocale: state.defaultLocale,\n\t\t\tlocales: state.locales,\n\t\t\tt: translator,\n\t\t\tsetLocale,\n\t\t\tlocalizePath,\n\t\t\tlocalizeContentPath,\n\t\t}),\n\t\t[state, translator, setLocale, localizePath, localizeContentPath],\n\t);\n\n\treturn (\n\t\t<LocaleContext.Provider value={ctx}>{children}</LocaleContext.Provider>\n\t);\n}\n\nfunction useLocaleContext(): LocaleContextValue {\n\tconst ctx = useContext(LocaleContext);\n\tif (ctx) return ctx;\n\treturn {\n\t\tenabled: false,\n\t\tlocale: 'en-US',\n\t\tdefaultLocale: 'en-US',\n\t\tlocales: [],\n\t\tt: (key: string) => key,\n\t\tsetLocale: () => {},\n\t\tlocalizePath: (to: string) => to,\n\t\tlocalizeContentPath: (collection: string, name: string) =>\n\t\t\t`/${collection}/${name}`,\n\t};\n}\n\nfunction useLocale() {\n\tconst { locale, locales, defaultLocale, enabled, setLocale } =\n\t\tuseLocaleContext();\n\treturn { locale, locales, defaultLocale, enabled, setLocale };\n}\n\n/**\n * Plain translator (not a hook). Reads the active locale from the i18n store.\n * Locale switches via setLocale reload the document.\n */\nfunction t(key: string, values?: MessageValues): string {\n\tconst state = getSnapshot();\n\tif (!state.enabled) return key;\n\treturn createTranslator(\n\t\tstate.catalogs,\n\t\tstate.locale,\n\t\tstate.defaultLocale,\n\t)(key, values);\n}\n\nexport {\n\tLocaleProvider,\n\tt,\n\tuseLocale,\n\tuseLocaleContext,\n\ttype I18nHydration,\n\ttype LocaleContextValue,\n};\n",
|
|
9
|
+
"import { IntlMessageFormat } from 'intl-messageformat';\n\ntype MessageCatalog = {\n\t[key: string]: string | MessageCatalog;\n};\n\ntype MessageValues = Record<\n\tstring,\n\tstring | number | boolean | Date | null | undefined\n>;\n\nfunction getMessage(\n\tcatalog: MessageCatalog | undefined,\n\tkey: string,\n): string | undefined {\n\tif (!(catalog && key)) return undefined;\n\tconst parts = key.split('.');\n\tlet current: string | MessageCatalog | undefined = catalog;\n\tfor (const part of parts) {\n\t\tif (current == null || typeof current === 'string') return undefined;\n\t\tcurrent = current[part];\n\t}\n\treturn typeof current === 'string' ? current : undefined;\n}\n\nfunction lookupMessage(\n\tcatalogs: Record<string, MessageCatalog>,\n\tlocale: string,\n\tdefaultLocale: string,\n\tkey: string,\n): string | undefined {\n\treturn (\n\t\tgetMessage(catalogs[locale], key) ??\n\t\t(locale !== defaultLocale\n\t\t\t? getMessage(catalogs[defaultLocale], key)\n\t\t\t: undefined)\n\t);\n}\n\nconst formatterCache = new Map<string, IntlMessageFormat>();\n\nfunction formatMessage(\n\tmessage: string,\n\tlocale: string,\n\tvalues?: MessageValues,\n): string {\n\tif (\n\t\t(!values || Object.keys(values).length === 0) &&\n\t\t!/\\{[^}]+\\}/.test(message)\n\t) {\n\t\treturn message;\n\t}\n\n\tconst cacheKey = `${locale}\\0${message}`;\n\tlet formatter = formatterCache.get(cacheKey);\n\tif (!formatter) {\n\t\tformatter = new IntlMessageFormat(message, locale);\n\t\tformatterCache.set(cacheKey, formatter);\n\t}\n\n\ttry {\n\t\tconst result = formatter.format(values as Record<string, unknown>);\n\t\treturn typeof result === 'string' ? result : String(result);\n\t} catch {\n\t\treturn message;\n\t}\n}\n\nfunction createTranslator(\n\tcatalogs: Record<string, MessageCatalog>,\n\tlocale: string,\n\tdefaultLocale: string,\n): (key: string, values?: MessageValues) => string {\n\treturn (key: string, values?: MessageValues) => {\n\t\tconst message = lookupMessage(catalogs, locale, defaultLocale, key);\n\t\tif (message == null) return key;\n\t\treturn formatMessage(message, locale, values);\n\t};\n}\n\nfunction looksLikeLocale(segment: string): boolean {\n\treturn /^[a-z]{2}(?:-[A-Za-z0-9]{2,8})*$/i.test(segment);\n}\n\nfunction parseContentPath(\n\tpathname: string,\n\tavailableLocales: string[] = [],\n\tcollections?: string[],\n):\n\t| {\n\t\t\tcollection: string;\n\t\t\tname: string;\n\t\t\tlocale?: string;\n\t\t\troutingPathname: string;\n\t }\n\t| undefined {\n\tconst pathOnly = pathname.split('?')[0].split('#')[0];\n\tconst parts = pathOnly.split('/').filter(Boolean);\n\tif (parts.length < 2) return undefined;\n\n\tconst [collection, second, third] = parts;\n\t// When a collections list is provided, only those paths are content URLs\n\tif (collections && !collections.includes(collection)) {\n\t\treturn undefined;\n\t}\n\n\tconst localeSet = new Set(availableLocales.map((l) => l.toLowerCase()));\n\n\tif (parts.length >= 3 && third) {\n\t\tconst secondIsLocale =\n\t\t\tlocaleSet.size > 0\n\t\t\t\t? localeSet.has(second.toLowerCase())\n\t\t\t\t: looksLikeLocale(second);\n\t\tif (secondIsLocale) {\n\t\t\tconst locale =\n\t\t\t\tavailableLocales.find(\n\t\t\t\t\t(l) => l.toLowerCase() === second.toLowerCase(),\n\t\t\t\t) || second;\n\t\t\treturn {\n\t\t\t\tcollection,\n\t\t\t\tname: third,\n\t\t\t\tlocale,\n\t\t\t\t// Only the locale segment goes: `/blog/pt-BR/a/b` routes as `/blog/a/b`.\n\t\t\t\troutingPathname: `/${[collection, ...parts.slice(2)].join('/')}`,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn {\n\t\tcollection,\n\t\tname: second,\n\t\troutingPathname: `/${parts.join('/')}`,\n\t};\n}\n\nfunction localizeContentHref(\n\tcollection: string,\n\tname: string,\n\tlocale: string,\n\tdefaultLocale: string,\n): string {\n\tif (!locale || locale === defaultLocale) {\n\t\treturn `/${collection}/${name}`;\n\t}\n\treturn `/${collection}/${locale}/${name}`;\n}\n\n/**\n * A page URL's locale prefix (`prefixPages`): `/pt-BR/compare` is pt-BR at\n * `/compare`. Same rule as reroute-js/core's parseLocalePrefix.\n */\nfunction parseLocalePrefix(\n\tpathname: string,\n\tavailableLocales: string[],\n): { locale: string; routingPathname: string } | undefined {\n\tconst pathOnly = pathname.split('?')[0].split('#')[0];\n\tconst [, segment = '', ...rest] = pathOnly.split('/');\n\tconst locale = availableLocales.find(\n\t\t(l) => l.toLowerCase() === segment.toLowerCase(),\n\t);\n\tif (!locale) return undefined;\n\treturn { locale, routingPathname: `/${rest.join('/')}` };\n}\n\n/** A page's URL in a locale: unprefixed for the default (`prefixPages`). */\nfunction localizePagePath(\n\tpathname: string,\n\tlocale: string,\n\tdefaultLocale: string,\n): string {\n\tif (locale === defaultLocale) return pathname;\n\treturn pathname === '/' ? `/${locale}` : `/${locale}${pathname}`;\n}\n\n/**\n * The locale a URL names (`prefixPages`): a content URL's segment, else the\n * page's prefix, else the default.\n */\nfunction pathLocale(\n\tpathname: string,\n\tavailableLocales: string[],\n\tdefaultLocale: string,\n\tcollections: string[] = [],\n): string {\n\tconst prefix = parseLocalePrefix(pathname, availableLocales);\n\tconst page = prefix?.routingPathname ?? pathname;\n\treturn (\n\t\tparseContentPath(page, availableLocales, collections)?.locale ??\n\t\tprefix?.locale ??\n\t\tdefaultLocale\n\t);\n}\n\n/**\n * Whether `pathname` is under one of `unprefixedPaths` (`/portfolio` covers\n * `/portfolio/x`, never `/portfolios`). Same rule as reroute-js/core's.\n */\nfunction isUnprefixedPath(\n\tpathname: string,\n\tunprefixedPaths: string[] = [],\n): boolean {\n\tconst path = pathname.split('?')[0].split('#')[0];\n\treturn unprefixedPaths.some((prefix) => {\n\t\tconst base = prefix.replace(/\\/+$/, '');\n\t\treturn base === '' || path === base || path.startsWith(`${base}/`);\n\t});\n}\n\n/**\n * Rewrite `to` for the active locale: a content href gets its locale segment;\n * with `prefixPages` (given), any other page path gets its locale prefix (a\n * path that names a locale already, one of its `unprefixedPaths`, or a file\n * such as `/feed.xml` stays as written). Same rule as reroute-js/core's.\n */\nfunction localizeHref(\n\tto: string,\n\tlocale: string,\n\tdefaultLocale: string,\n\tavailableLocales: string[] = [],\n\tcollections?: string[],\n\tprefixPages?: { unprefixedPaths?: string[] },\n): string {\n\ttry {\n\t\tconst url = new URL(to, 'http://local');\n\t\tconst parsed = parseContentPath(\n\t\t\turl.pathname,\n\t\t\tavailableLocales,\n\t\t\t// Pages own every path that isn't a known collection's\n\t\t\tprefixPages ? (collections ?? []) : collections,\n\t\t);\n\t\tif (parsed) {\n\t\t\turl.pathname = localizeContentHref(\n\t\t\t\tparsed.collection,\n\t\t\t\tparsed.name,\n\t\t\t\tlocale,\n\t\t\t\tdefaultLocale,\n\t\t\t);\n\t\t} else if (\n\t\t\tprefixPages &&\n\t\t\tto.startsWith('/') &&\n\t\t\turl.origin === 'http://local' &&\n\t\t\t!/\\.[^/]+$/.test(url.pathname) &&\n\t\t\t!parseLocalePrefix(url.pathname, availableLocales) &&\n\t\t\t!isUnprefixedPath(url.pathname, prefixPages.unprefixedPaths)\n\t\t) {\n\t\t\turl.pathname = localizePagePath(url.pathname, locale, defaultLocale);\n\t\t} else {\n\t\t\treturn to;\n\t\t}\n\t\treturn `${url.pathname}${url.search}${url.hash}`;\n\t} catch {\n\t\treturn to;\n\t}\n}\n\nexport {\n\tcreateTranslator,\n\tisUnprefixedPath,\n\tlocalizeContentHref,\n\tlocalizeHref,\n\tlocalizePagePath,\n\tparseContentPath,\n\tparseLocalePrefix,\n\tpathLocale,\n\ttype MessageCatalog,\n\ttype MessageValues,\n};\n",
|
|
10
|
+
"import {\n\tcreateContext,\n\ttype ReactNode,\n\tuseCallback,\n\tuseContext,\n\tuseMemo,\n\tuseSyncExternalStore,\n} from 'react';\nimport {\n\tcreateTranslator,\n\tisUnprefixedPath,\n\tlocalizeContentHref,\n\tlocalizeHref,\n\ttype MessageCatalog,\n\ttype MessageValues,\n\tparseLocalePrefix,\n\tpathLocale,\n} from './helpers';\n\ntype I18nHydration = {\n\tenabled: boolean;\n\tlocale: string;\n\tdefaultLocale: string;\n\tlocales: string[];\n\tcookie: string;\n\tcatalogs: Record<string, MessageCatalog>;\n\tcollections?: string[];\n\t/** Pages carry their locale as a path prefix (`/pt-BR/compare`). */\n\tprefixPages?: boolean;\n\t/** With prefixPages, paths whose locale comes from the cookie instead. */\n\tunprefixedPaths?: string[];\n};\n\ntype LocaleContextValue = {\n\tenabled: boolean;\n\tlocale: string;\n\tdefaultLocale: string;\n\tlocales: string[];\n\tt: (key: string, values?: MessageValues) => string;\n\tsetLocale: (next: string) => void;\n\tlocalizePath: (to: string) => string;\n\tlocalizeContentPath: (collection: string, name: string) => string;\n};\n\nconst LocaleContext = createContext<LocaleContextValue | null>(null);\n\ntype LocaleStore = {\n\tstate: I18nHydration;\n\tlisteners: Set<() => void>;\n};\n\nconst DISABLED_STATE: I18nHydration = {\n\tenabled: false,\n\tlocale: 'en-US',\n\tdefaultLocale: 'en-US',\n\tlocales: [],\n\tcookie: 'reroute-locale',\n\tcatalogs: {},\n};\n\nfunction readHydration(): I18nHydration {\n\ttry {\n\t\tconst g = globalThis as Record<string, unknown>;\n\t\tconst raw = g.__REROUTE_I18N__ as I18nHydration | undefined;\n\t\tif (raw && typeof raw === 'object') {\n\t\t\treturn {\n\t\t\t\tenabled: !!raw.enabled,\n\t\t\t\tlocale: raw.locale || 'en-US',\n\t\t\t\tdefaultLocale: raw.defaultLocale || 'en-US',\n\t\t\t\tlocales: Array.isArray(raw.locales) ? raw.locales : [],\n\t\t\t\tcookie: raw.cookie || 'reroute-locale',\n\t\t\t\tcatalogs: raw.catalogs || {},\n\t\t\t\tcollections: raw.collections,\n\t\t\t\tprefixPages: raw.prefixPages,\n\t\t\t\tunprefixedPaths: raw.unprefixedPaths,\n\t\t\t};\n\t\t}\n\t} catch {\n\t\t// ignore\n\t}\n\treturn DISABLED_STATE;\n}\n\nfunction sameHydration(a: I18nHydration, b: I18nHydration): boolean {\n\treturn (\n\t\ta.enabled === b.enabled &&\n\t\ta.locale === b.locale &&\n\t\ta.defaultLocale === b.defaultLocale &&\n\t\ta.cookie === b.cookie &&\n\t\ta.catalogs === b.catalogs &&\n\t\ta.locales === b.locales &&\n\t\ta.collections === b.collections &&\n\t\ta.prefixPages === b.prefixPages &&\n\t\ta.unprefixedPaths === b.unprefixedPaths\n\t);\n}\n\nconst store: LocaleStore = {\n\tstate: readHydration(),\n\tlisteners: new Set(),\n};\n\nfunction subscribe(listener: () => void) {\n\tstore.listeners.add(listener);\n\treturn () => {\n\t\tstore.listeners.delete(listener);\n\t};\n}\n\n/**\n * Must return a stable object reference across calls when nothing changed.\n * Recreating state here breaks useSyncExternalStore (infinite update loop).\n */\nfunction getSnapshot(): I18nHydration {\n\tconst fromGlobal = readHydration();\n\tif (fromGlobal.enabled && !sameHydration(store.state, fromGlobal)) {\n\t\tstore.state = fromGlobal;\n\t}\n\treturn store.state;\n}\n\nfunction getServerSnapshot(): I18nHydration {\n\treturn getSnapshot();\n}\n\nfunction seedStore(value: Partial<I18nHydration>) {\n\tconst next: I18nHydration = {\n\t\t...readHydration(),\n\t\t...value,\n\t\tenabled: true,\n\t\tlocale: value.locale || store.state.locale,\n\t\tdefaultLocale: value.defaultLocale || store.state.defaultLocale,\n\t\tlocales: value.locales || store.state.locales,\n\t\tcookie: value.cookie || store.state.cookie,\n\t\tcatalogs: value.catalogs || store.state.catalogs,\n\t\tcollections: value.collections || store.state.collections,\n\t};\n\tif (sameHydration(store.state, next)) return;\n\tstore.state = next;\n\ttry {\n\t\t(globalThis as Record<string, unknown>).__REROUTE_I18N__ = store.state;\n\t} catch {\n\t\t// ignore\n\t}\n}\n\nfunction writeLocaleCookie(name: string, locale: string) {\n\tif (typeof document === 'undefined') return;\n\tconst maxAge = 60 * 60 * 24 * 365;\n\t// biome-ignore lint/suspicious/noDocumentCookie: Cookie Store API is not universally available; locale cookie must work on SSR hydration clients\n\tdocument.cookie = `${name}=${encodeURIComponent(locale)}; Path=/; Max-Age=${maxAge}; SameSite=Lax`;\n}\n\nfunction LocaleProvider({\n\tchildren,\n\tvalue,\n}: {\n\tchildren?: ReactNode;\n\tvalue?: Partial<I18nHydration>;\n}) {\n\t// Seed from props once per distinct hydration payload (SSR / App)\n\tif (value?.enabled) {\n\t\tseedStore(value);\n\t}\n\n\tconst state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n\tconst translator = useMemo(() => {\n\t\tif (!state.enabled) {\n\t\t\treturn (key: string) => key;\n\t\t}\n\t\treturn createTranslator(state.catalogs, state.locale, state.defaultLocale);\n\t}, [state.enabled, state.catalogs, state.locale, state.defaultLocale]);\n\n\tconst setLocale = useCallback(\n\t\t(next: string) => {\n\t\t\tif (!state.enabled) return;\n\t\t\tif (!state.locales.includes(next)) return;\n\t\t\tif (typeof window === 'undefined') return;\n\n\t\t\twriteLocaleCookie(state.cookie, next);\n\n\t\t\tconst url = new URL(window.location.href);\n\t\t\turl.searchParams.set('lang', next);\n\t\t\twindow.location.assign(`${url.pathname}${url.search}${url.hash}`);\n\t\t},\n\t\t[state],\n\t);\n\n\tconst localizePath = useCallback(\n\t\t(to: string) => {\n\t\t\tif (!state.enabled) return to;\n\t\t\treturn localizeHref(\n\t\t\t\tto,\n\t\t\t\tstate.locale,\n\t\t\t\tstate.defaultLocale,\n\t\t\t\tstate.locales,\n\t\t\t\tstate.collections,\n\t\t\t\tstate.prefixPages\n\t\t\t\t\t? { unprefixedPaths: state.unprefixedPaths }\n\t\t\t\t\t: undefined,\n\t\t\t);\n\t\t},\n\t\t[state],\n\t);\n\n\tconst localizeContentPath = useCallback(\n\t\t(collection: string, name: string) => {\n\t\t\tif (!state.enabled) return `/${collection}/${name}`;\n\t\t\treturn localizeContentHref(\n\t\t\t\tcollection,\n\t\t\t\tname,\n\t\t\t\tstate.locale,\n\t\t\t\tstate.defaultLocale,\n\t\t\t);\n\t\t},\n\t\t[state],\n\t);\n\n\tconst ctx = useMemo<LocaleContextValue>(\n\t\t() => ({\n\t\t\tenabled: state.enabled,\n\t\t\tlocale: state.locale,\n\t\t\tdefaultLocale: state.defaultLocale,\n\t\t\tlocales: state.locales,\n\t\t\tt: translator,\n\t\t\tsetLocale,\n\t\t\tlocalizePath,\n\t\t\tlocalizeContentPath,\n\t\t}),\n\t\t[state, translator, setLocale, localizePath, localizeContentPath],\n\t);\n\n\treturn (\n\t\t<LocaleContext.Provider value={ctx}>{children}</LocaleContext.Provider>\n\t);\n}\n\n/**\n * Whether navigating from `current` to `pathname` may change the locale\n * (`prefixPages`). Such a navigation loads the document, so the locale, its\n * `<html lang>` and every value bound to it come from the server. An\n * `unprefixedPaths` page takes its locale from the cookie, which only the\n * server reads: reached from a page whose URL named the locale, it loads.\n */\nfunction leavesLocale(pathname: string, current: string): boolean {\n\tconst state = getSnapshot();\n\tif (!(state.enabled && state.prefixPages)) return false;\n\tconst prefix = parseLocalePrefix(pathname, state.locales);\n\tconst page = prefix?.routingPathname ?? pathname;\n\tif (isUnprefixedPath(page, state.unprefixedPaths)) {\n\t\treturn !!prefix || !isUnprefixedPath(current, state.unprefixedPaths);\n\t}\n\treturn (\n\t\tpathLocale(\n\t\t\tpathname,\n\t\t\tstate.locales,\n\t\t\tstate.defaultLocale,\n\t\t\tstate.collections,\n\t\t) !== state.locale\n\t);\n}\n\n/**\n * Leaving a page whose URL named the locale for an `unprefixedPaths` page\n * (`prefixPages`): that page picks its language from the cookie, so the\n * cookie gets the language the visitor was reading.\n */\nfunction carryLocale(pathname: string, current: string): void {\n\tconst state = getSnapshot();\n\tif (!(state.enabled && state.prefixPages)) return;\n\tconst page =\n\t\tparseLocalePrefix(pathname, state.locales)?.routingPathname ?? pathname;\n\tif (!isUnprefixedPath(page, state.unprefixedPaths)) return;\n\tif (isUnprefixedPath(current, state.unprefixedPaths)) return;\n\twriteLocaleCookie(state.cookie, state.locale);\n}\n\nfunction useLocaleContext(): LocaleContextValue {\n\tconst ctx = useContext(LocaleContext);\n\tif (ctx) return ctx;\n\treturn {\n\t\tenabled: false,\n\t\tlocale: 'en-US',\n\t\tdefaultLocale: 'en-US',\n\t\tlocales: [],\n\t\tt: (key: string) => key,\n\t\tsetLocale: () => {},\n\t\tlocalizePath: (to: string) => to,\n\t\tlocalizeContentPath: (collection: string, name: string) =>\n\t\t\t`/${collection}/${name}`,\n\t};\n}\n\nfunction useLocale() {\n\tconst { locale, locales, defaultLocale, enabled, setLocale } =\n\t\tuseLocaleContext();\n\treturn { locale, locales, defaultLocale, enabled, setLocale };\n}\n\n/**\n * Plain translator (not a hook). Reads the active locale from the i18n store.\n * Locale switches via setLocale reload the document.\n */\nfunction t(key: string, values?: MessageValues): string {\n\tconst state = getSnapshot();\n\tif (!state.enabled) return key;\n\treturn createTranslator(\n\t\tstate.catalogs,\n\t\tstate.locale,\n\t\tstate.defaultLocale,\n\t)(key, values);\n}\n\nexport {\n\tcarryLocale,\n\tLocaleProvider,\n\tleavesLocale,\n\tt,\n\tuseLocale,\n\tuseLocaleContext,\n\ttype I18nHydration,\n\ttype LocaleContextValue,\n};\n",
|
|
11
11
|
"import {\n\tcreateContext,\n\ttype ReactNode,\n\tuseCallback,\n\tuseContext,\n\tuseMemo,\n\tuseState,\n} from 'react';\nimport { createResolverFromGetEntry, parseContentHref } from '../lib/content';\nimport type { Any } from '../types/any';\n\ntype ContentRef =\n\t| { collection: string; name: string; module?: string }\n\t| undefined;\n\ntype ContentResolver = (href: string) => ContentRef;\n\nfunction findIndexEntry(\n\tlist: Any[],\n\tname: string,\n\tlocale?: string,\n): Any | undefined {\n\tif (locale) {\n\t\treturn (\n\t\t\tlist.find((e: Any) => e?.name === name && e?.locale === locale) ||\n\t\t\tlist.find((e: Any) => e?.name === name)\n\t\t);\n\t}\n\treturn list.find((e: Any) => e?.name === name);\n}\n\nfunction resolveFromIndex(\n\thref: string,\n\tidx: Record<string, Any[]>,\n): ContentRef {\n\tconst parsed = parseContentHref(href);\n\tif (!parsed) return undefined;\n\ttry {\n\t\tconst list = idx[parsed.collection];\n\t\tif (Array.isArray(list)) {\n\t\t\tconst found = findIndexEntry(list, parsed.name, parsed.locale);\n\t\t\tif (found && typeof found.module === 'string') {\n\t\t\t\treturn { ...parsed, module: found.module };\n\t\t\t}\n\t\t}\n\t} catch {}\n\treturn parsed;\n}\n\nconst ContentRegistryContext = createContext<ContentResolver | null>(null);\nconst ContentIndexContext = createContext<Record<string, Any[]> | null>(null);\nconst ContentGetEntryContext = createContext<\n\t| ((collection: string, name: string, locale?: string) => Any | undefined)\n\t| null\n>(null);\nconst ContentLoadCollectionContext = createContext<\n\t((collection: string) => Promise<Any[] | undefined>) | null\n>(null);\nconst MarkdownComponentsContext = createContext<Any | null>(null);\n\ntype ContentProviderProps = {\n\tchildren?: ReactNode;\n\t/**\n\t * Resolve a content link target to a content reference.\n\t * Return collection + name + module (if known) for optimal prefetching.\n\t */\n\tresolveByHref?: ContentResolver;\n\t/** Optional access to the app's content registry getter (e.g., .reroute/content#getContentEntry) */\n\tgetEntry?: (\n\t\tcollection: string,\n\t\tname: string,\n\t\tlocale?: string,\n\t) => Any | undefined;\n\t/** Optional prebuilt byCollection index (e.g., from .reroute/content) */\n\tbyCollection?: Record<string, Any[]> | null;\n\t/** Optional lazy loader that loads a single collection at a time */\n\tloadCollection?: (collection: string) => Promise<{ items: Any[] } | Any>;\n\t/** Optional markdown components for custom markdown rendering */\n\tmarkdownComponents?: Any;\n};\n\nfunction ContentProvider({\n\tchildren,\n\tresolveByHref,\n\tgetEntry,\n\tbyCollection,\n\tloadCollection,\n\tmarkdownComponents,\n}: ContentProviderProps) {\n\tconst [idx, setIdx] = useState<Record<string, Any[]>>(() => {\n\t\tconst seededClient: Record<string, Any[]> = (() => {\n\t\t\ttry {\n\t\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\treturn (w.__REROUTE_COLLECTIONS__ as Record<string, Any[]>) || {};\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\treturn {};\n\t\t})();\n\t\tconst seededServer: Record<string, Any[]> = (() => {\n\t\t\ttry {\n\t\t\t\tif (typeof window === 'undefined') {\n\t\t\t\t\tconst g = globalThis as Any;\n\t\t\t\t\treturn (g.__REROUTE_COLLECTIONS__ as Record<string, Any[]>) || {};\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\treturn {};\n\t\t})();\n\t\tconst result = {\n\t\t\t...(byCollection || {}),\n\t\t\t...seededServer,\n\t\t\t...seededClient,\n\t\t} as Record<string, Any[]>;\n\n\t\treturn result;\n\t});\n\tconst entryFn = getEntry || null;\n\n\tconst resolver = useMemo<ContentResolver | null>(() => {\n\t\tif (typeof resolveByHref === 'function') return resolveByHref;\n\t\tif (typeof getEntry === 'function')\n\t\t\treturn createResolverFromGetEntry(getEntry);\n\t\t// Fallback: resolve from in-memory index when available (no bundling)\n\t\treturn (href: string) => resolveFromIndex(href, idx);\n\t}, [resolveByHref, getEntry, idx]);\n\n\tconst ensureCollection = useCallback(\n\t\tasync (collection: string): Promise<Any[] | undefined> => {\n\t\t\ttry {\n\t\t\t\tconst existing = (idx as Any)[collection];\n\t\t\t\t// Check if this collection is marked as partial (field-stripped)\n\t\t\t\tconst w: Any | undefined =\n\t\t\t\t\ttypeof window !== 'undefined' ? (window as Any) : undefined;\n\t\t\t\tconst isPartial = Boolean(\n\t\t\t\t\tw?.__REROUTE_COLLECTIONS_PARTIAL__?.[collection],\n\t\t\t\t);\n\n\t\t\t\t// If we have items but they're partial, we need to load the full collection\n\t\t\t\t// Otherwise, if we have items, return them\n\t\t\t\tif (Array.isArray(existing) && existing.length && !isPartial) {\n\t\t\t\t\treturn existing;\n\t\t\t\t}\n\n\t\t\t\tif (!loadCollection) return existing;\n\t\t\t\tconst mod = await loadCollection(collection);\n\t\t\t\tconst items = ((mod as Any).items || (mod as Any).list || []) as Any[];\n\t\t\t\tif (Array.isArray(items)) {\n\t\t\t\t\tsetIdx((prev) => ({ ...(prev || {}), [collection]: items }));\n\t\t\t\t\t// Clear the partial flag since we now have full data\n\t\t\t\t\tif (w?.__REROUTE_COLLECTIONS_PARTIAL__) {\n\t\t\t\t\t\tw.__REROUTE_COLLECTIONS_PARTIAL__[collection] = false;\n\t\t\t\t\t}\n\t\t\t\t\treturn items;\n\t\t\t\t}\n\t\t\t\treturn existing;\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t\t[idx, loadCollection],\n\t);\n\n\treturn (\n\t\t<ContentRegistryContext.Provider value={resolver}>\n\t\t\t<ContentIndexContext.Provider value={idx}>\n\t\t\t\t<ContentGetEntryContext.Provider value={entryFn}>\n\t\t\t\t\t<ContentLoadCollectionContext.Provider value={ensureCollection}>\n\t\t\t\t\t\t<MarkdownComponentsContext.Provider\n\t\t\t\t\t\t\tvalue={markdownComponents || null}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</MarkdownComponentsContext.Provider>\n\t\t\t\t\t</ContentLoadCollectionContext.Provider>\n\t\t\t\t</ContentGetEntryContext.Provider>\n\t\t\t</ContentIndexContext.Provider>\n\t\t</ContentRegistryContext.Provider>\n\t);\n}\n\nfunction useContentResolver(): ContentResolver | null {\n\treturn useContext(ContentRegistryContext);\n}\n\nexport { ContentProvider, useContentResolver };\nfunction useContentIndex(): Record<string, Any[]> | null {\n\treturn useContext(ContentIndexContext);\n}\n\nexport { useContentIndex };\nexport type { ContentRef, ContentResolver };\n\nfunction useContentGetEntry():\n\t| ((collection: string, name: string) => Any | undefined)\n\t| null {\n\treturn useContext(ContentGetEntryContext);\n}\n\nexport { useContentGetEntry };\n\nfunction useContentLoadCollection():\n\t| ((collection: string) => Promise<Any[] | undefined>)\n\t| null {\n\treturn useContext(ContentLoadCollectionContext);\n}\n\nexport { useContentLoadCollection };\n\nfunction useMarkdownComponents(): Any | null {\n\treturn useContext(MarkdownComponentsContext);\n}\n\nexport { useMarkdownComponents };\n",
|
|
12
12
|
"import type { ContentRef, ContentResolver } from '../providers/ContentProvider';\nimport type { Any } from '../types/any';\n\nfunction looksLikeLocale(segment: string): boolean {\n\treturn /^[a-z]{2}(?:-[A-Za-z0-9]{2,8})*$/i.test(segment);\n}\n\nexport function parseContentHref(href: string):\n\t| {\n\t\t\tcollection: string;\n\t\t\tname: string;\n\t\t\tlocale?: string;\n\t }\n\t| undefined {\n\ttry {\n\t\tconst url = new URL(href, 'http://local');\n\t\tconst parts = url.pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return undefined;\n\n\t\tconst [collection, second, third] = parts;\n\n\t\t// /collection/locale/name\n\t\tif (parts.length >= 3 && third && looksLikeLocale(second)) {\n\t\t\treturn { collection, name: third, locale: second };\n\t\t}\n\n\t\treturn { collection, name: second };\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function createResolverFromGetEntry(\n\tgetEntry: (\n\t\tcollection: string,\n\t\tname: string,\n\t\tlocale?: string,\n\t) => Any | undefined,\n): ContentResolver {\n\treturn (href: string): ContentRef => {\n\t\tconst parsed = parseContentHref(href);\n\t\tif (!parsed) return undefined;\n\t\ttry {\n\t\t\tconst entry = getEntry(\n\t\t\t\tparsed.collection,\n\t\t\t\tparsed.name,\n\t\t\t\tparsed.locale,\n\t\t\t) as Any;\n\t\t\tif (!entry) return parsed;\n\t\t\tconst moduleUrl = (entry as Any)?.module as string | undefined;\n\t\t\treturn moduleUrl ? { ...parsed, module: moduleUrl } : parsed;\n\t\t} catch {\n\t\t\treturn parsed;\n\t\t}\n\t};\n}\n",
|
|
13
13
|
"import { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { SearchHeading } from '../lib/collection';\n\nexport interface SearchResultEntry {\n\tid: string;\n\tcollection: string;\n\tslug: string;\n\thref: string;\n\ttitle: string;\n\texcerpt?: string;\n\t/** Headings that matched the search query */\n\tmatchedHeadings: SearchHeading[];\n}\n\nexport interface SearchResult {\n\ttotal: number;\n\tpage: number;\n\tpageSize: number;\n\ttotalPages: number;\n\tresults: SearchResultEntry[];\n}\n\nexport interface UseSearchParams {\n\t/** Search query string */\n\tquery: string;\n\t/** Optional: filter by specific collections */\n\tcollections?: string[];\n\t/** Optional: page number (default: 1) */\n\tpage?: number;\n\t/** Optional: page size (default: configured in reroute.config or 20) */\n\tpageSize?: number;\n\t/** Optional: enable search (default: true, set to false to disable) */\n\tenabled?: boolean;\n\t/** Optional: debounce delay in ms (default: 300) */\n\tdebounce?: number;\n}\n\nexport interface UseSearchResult {\n\t/** Search results */\n\tresults: SearchResultEntry[];\n\t/** Total number of results */\n\ttotal: number;\n\t/** Current page number */\n\tpage: number;\n\t/** Number of results per page */\n\tpageSize: number;\n\t/** Total number of pages */\n\ttotalPages: number;\n\t/** Whether search is in progress */\n\tisLoading: boolean;\n\t/** Error if search failed */\n\terror: Error | null;\n\t/** Manually trigger search with a new query */\n\tsearch: (query: string, page?: number) => Promise<void>;\n}\n\n/**\n * React hook for searching content using the server-side search endpoint\n *\n * @example\n * ```tsx\n * function SearchBox() {\n * const [query, setQuery] = useState('');\n * const [page, setPage] = useState(1);\n * const { results, isLoading, error, total, totalPages } = useSearch({\n * query,\n * page,\n * pageSize: 10,\n * collections: ['blog', 'docs'],\n * });\n *\n * return (\n * <div>\n * <input\n * type=\"search\"\n * value={query}\n * onChange={(e) => setQuery(e.target.value)}\n * placeholder=\"Search...\"\n * />\n * {isLoading && <div>Searching...</div>}\n * {error && <div>Error: {error.message}</div>}\n * <ul>\n * {results.map((result) => (\n * <li key={result.id}>\n * <a href={result.href}>{result.title}</a>\n * </li>\n * ))}\n * </ul>\n * <div>\n * <button onClick={() => setPage(p => Math.max(1, p - 1))} disabled={page === 1}>\n * Previous\n * </button>\n * <span>Page {page} of {totalPages}</span>\n * <button onClick={() => setPage(p => p + 1)} disabled={page === totalPages}>\n * Next\n * </button>\n * </div>\n * </div>\n * );\n * }\n * ```\n */\nexport function useSearch(params: UseSearchParams): UseSearchResult {\n\tconst {\n\t\tquery,\n\t\tcollections,\n\t\tpage: paramPage = 1,\n\t\tpageSize: paramPageSize,\n\t\tenabled = true,\n\t\tdebounce = 300,\n\t} = params;\n\n\tconst stableCollections = useMemo(() => collections, [collections]);\n\n\tconst [results, setResults] = useState<SearchResultEntry[]>([]);\n\tconst [total, setTotal] = useState(0);\n\tconst [page, setPage] = useState(paramPage);\n\tconst [pageSize, setPageSize] = useState(paramPageSize ?? 20);\n\tconst [totalPages, setTotalPages] = useState(0);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [error, setError] = useState<Error | null>(null);\n\n\tconst performSearch = useCallback(\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Search execution with filtering and pagination\n\t\tasync (searchQuery: string, searchPage?: number) => {\n\t\t\tif (!searchQuery.trim()) {\n\t\t\t\tsetResults([]);\n\t\t\t\tsetTotal(0);\n\t\t\t\tsetPage(1);\n\t\t\t\tsetTotalPages(0);\n\t\t\t\tsetError(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetIsLoading(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\t// Build query params\n\t\t\t\tconst params = new URLSearchParams();\n\t\t\t\tparams.set('q', searchQuery);\n\n\t\t\t\tif (stableCollections && stableCollections.length > 0) {\n\t\t\t\t\tparams.set('collections', stableCollections.join(','));\n\t\t\t\t}\n\n\t\t\t\tconst currentPage = searchPage ?? paramPage;\n\t\t\t\tif (currentPage > 1) {\n\t\t\t\t\tparams.set('page', String(currentPage));\n\t\t\t\t}\n\n\t\t\t\tif (paramPageSize) {\n\t\t\t\t\tparams.set('pageSize', String(paramPageSize));\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tconst g = globalThis as {\n\t\t\t\t\t\t__REROUTE_I18N__?: { locale?: string; enabled?: boolean };\n\t\t\t\t\t};\n\t\t\t\t\tif (g.__REROUTE_I18N__?.enabled && g.__REROUTE_I18N__.locale) {\n\t\t\t\t\t\tparams.set('lang', g.__REROUTE_I18N__.locale);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// ignore\n\t\t\t\t}\n\n\t\t\t\tconst response = await fetch(`/__reroute_search?${params.toString()}`);\n\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tconst errorData = await response.json().catch(() => ({}));\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\terrorData.error || `Search failed with status ${response.status}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst data = (await response.json()) as SearchResult;\n\t\t\t\tsetResults(data.results);\n\t\t\t\tsetTotal(data.total);\n\t\t\t\tsetPage(data.page);\n\t\t\t\tsetPageSize(data.pageSize);\n\t\t\t\tsetTotalPages(data.totalPages);\n\t\t\t} catch (err) {\n\t\t\t\tconst error = err instanceof Error ? err : new Error('Search failed');\n\t\t\t\tsetError(error);\n\t\t\t\tsetResults([]);\n\t\t\t\tsetTotal(0);\n\t\t\t\tsetPage(1);\n\t\t\t\tsetTotalPages(0);\n\t\t\t} finally {\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t},\n\t\t[stableCollections, paramPage, paramPageSize],\n\t);\n\n\t// Debounced search effect\n\tuseEffect(() => {\n\t\tif (!enabled) {\n\t\t\tsetResults([]);\n\t\t\tsetTotal(0);\n\t\t\tsetPage(1);\n\t\t\tsetTotalPages(0);\n\t\t\tsetError(null);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!query.trim()) {\n\t\t\tsetResults([]);\n\t\t\tsetTotal(0);\n\t\t\tsetPage(1);\n\t\t\tsetTotalPages(0);\n\t\t\tsetError(null);\n\t\t\treturn;\n\t\t}\n\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tperformSearch(query, paramPage);\n\t\t}, debounce);\n\n\t\treturn () => clearTimeout(timeoutId);\n\t}, [query, paramPage, enabled, debounce, performSearch]);\n\n\tconst search = useCallback(\n\t\tasync (newQuery: string, newPage?: number) => {\n\t\t\tawait performSearch(newQuery, newPage);\n\t\t},\n\t\t[performSearch],\n\t);\n\n\treturn {\n\t\tresults,\n\t\ttotal,\n\t\tpage,\n\t\tpageSize,\n\t\ttotalPages,\n\t\tisLoading,\n\t\terror,\n\t\tsearch,\n\t};\n}\n",
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"import type { Any } from '../types/any';\n\n/** Directory that holds prerendered route data in a `reroute build --static` output. */\nexport const STATIC_DATA_DIR = '/__reroute_data';\n\n/**\n * Path of the prerendered JSON for a route (or one lazy `ssr.data` key) in a\n * static build: `/` → `/__reroute_data/index.json`,\n * `/blog/a` + `posts` → `/__reroute_data/blog/a/__key/posts.json`.\n */\nexport function staticDataPath(pathname: string, key?: string): string {\n\tconst route = pathname.split(/[?#]/)[0].replace(/\\/+$/, '');\n\tconst base = `${STATIC_DATA_DIR}${route}`;\n\treturn key\n\t\t? `${base}/__key/${encodeURIComponent(key)}.json`\n\t\t: `${base}/index.json`;\n}\n\n/** True when the page was served from a `reroute build --static` output. */\nexport function isStaticBuild(): boolean {\n\treturn (\n\t\ttypeof window !== 'undefined' && (window as Any).__REROUTE_STATIC__ === true\n\t);\n}\n\n/**\n * URL the client fetches route data from: the `/__reroute_data` endpoint on a\n * server, or the prerendered JSON file in a static build.\n */\nexport function routeDataUrl(pathname: string): string {\n\treturn isStaticBuild()\n\t\t? staticDataPath(pathname)\n\t\t: `/__reroute_data?path=${encodeURIComponent(pathname)}`;\n}\n\n/**\n * URL of a page's head alone (a route without `ssr`): the data endpoint's\n * head answer on a server, the prerendered JSON (data and head) in a static\n * build.\n */\nexport function navigationHeadUrl(pathname: string): string {\n\treturn isStaticBuild()\n\t\t? staticDataPath(pathname)\n\t\t: `/__reroute_data?path=${encodeURIComponent(pathname)}&head`;\n}\n",
|
|
16
16
|
"import type { Any } from '../types/any';\nimport { navigationHeadUrl, routeDataUrl } from './static-data';\n\nconst HEAD_ATTR = 'data-reroute-ssr-head';\nconst HEAD_ATTR_ROUTE = 'data-reroute-route-head';\n\nfunction isBrowser(): boolean {\n\treturn typeof document !== 'undefined' && typeof window !== 'undefined';\n}\n\n/**\n * Get the title suffix from the global config (injected by SSR)\n */\nfunction getTitleSuffix(): string {\n\tif (!isBrowser()) return '';\n\ttry {\n\t\tconst suffix = (window as Any).__REROUTE_TITLE_SUFFIX__;\n\t\treturn typeof suffix === 'string' ? suffix : '';\n\t} catch {\n\t\treturn '';\n\t}\n}\n\n/**\n * Apply title suffix if configured and not already present\n */\nfunction applyTitleSuffix(title: string): string {\n\tconst suffix = getTitleSuffix();\n\tif (!suffix || title.endsWith(suffix)) return title;\n\treturn `${title}${suffix}`;\n}\n\nexport function applyPageMeta(meta: Any | undefined): void {\n\tif (!(isBrowser() && meta) || typeof meta !== 'object') return;\n\ttry {\n\t\tconst rawTitle = typeof meta.title === 'string' ? meta.title : undefined;\n\t\tconst description =\n\t\t\ttypeof (meta as Any).description === 'string'\n\t\t\t\t? (meta as Any).description\n\t\t\t\t: typeof (meta as Any).excerpt === 'string'\n\t\t\t\t\t? (meta as Any).excerpt\n\t\t\t\t\t: undefined;\n\n\t\tif (rawTitle) document.title = applyTitleSuffix(rawTitle);\n\n\t\tif (description) {\n\t\t\tlet tag = document.head.querySelector(\n\t\t\t\t'meta[name=\"description\"]',\n\t\t\t) as HTMLMetaElement | null;\n\t\t\tif (!tag) {\n\t\t\t\ttag = document.createElement('meta');\n\t\t\t\ttag.setAttribute('name', 'description');\n\t\t\t\tdocument.head.appendChild(tag);\n\t\t\t}\n\t\t\ttag.setAttribute('content', description);\n\t\t}\n\t} catch {}\n}\n\nexport function applyLang(lang: Any | undefined): void {\n\tif (!isBrowser()) return;\n\tif (typeof lang === 'string' && lang.trim()) {\n\t\ttry {\n\t\t\tdocument.documentElement.lang = lang.trim();\n\t\t} catch {}\n\t}\n}\n\n/**\n * Check if an equivalent meta tag already exists in the head\n */\nfunction metaTagExists(el: Element): boolean {\n\tif (el.tagName !== 'META') return false;\n\n\tconst name = el.getAttribute('name');\n\tconst property = el.getAttribute('property');\n\tconst content = el.getAttribute('content');\n\n\t// Build selector for existing tag\n\tlet selector = 'meta';\n\tif (name) selector += `[name=\"${name}\"]`;\n\tif (property) selector += `[property=\"${property}\"]`;\n\n\tconst existing = document.head.querySelector(selector);\n\tif (!existing) return false;\n\n\t// Check if content matches\n\treturn existing.getAttribute('content') === content;\n}\n\nexport function applySsrHead(head: Any | undefined): void {\n\tif (!isBrowser()) return;\n\ttry {\n\t\t// Remove previous injected nodes\n\t\tdocument.querySelectorAll(`[${HEAD_ATTR}]`).forEach((n) => {\n\t\t\tn.parentElement?.removeChild(n);\n\t\t});\n\n\t\tif (!head) return;\n\n\t\tconst parts: string[] = Array.isArray(head)\n\t\t\t? (head as Any[]).map((x) => String(x))\n\t\t\t: [String(head)];\n\t\tconst html = parts\n\t\t\t.map((p) => (typeof p === 'string' ? p : String(p)))\n\t\t\t.join('\\n');\n\t\tif (!html.trim()) return;\n\n\t\tconst tpl = document.createElement('template');\n\t\ttpl.innerHTML = html;\n\t\tconst nodes = Array.from(tpl.content.childNodes);\n\t\tfor (const node of nodes) {\n\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\tconst el = node as Element;\n\t\t\t\t// Skip if an equivalent meta tag already exists (from SSR)\n\t\t\t\tif (metaTagExists(el)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tel.setAttribute(HEAD_ATTR, '');\n\t\t\t\tdocument.head.appendChild(node);\n\t\t\t}\n\t\t}\n\t} catch {}\n}\n\n/**\n * Convert head content to HTML string\n */\nfunction headToHtml(head: Any): string {\n\tconst parts: string[] = Array.isArray(head)\n\t\t? (head as Any[]).map((x) => String(x))\n\t\t: [String(head)];\n\treturn parts.map((p) => (typeof p === 'string' ? p : String(p))).join('\\n');\n}\n\n/**\n * Process a title element by updating document.title\n * @returns true if element was handled, false otherwise\n */\nfunction processTitleElement(el: Element): boolean {\n\tif (el.tagName !== 'TITLE') return false;\n\n\tconst titleText = el.textContent;\n\tif (titleText) {\n\t\t// Apply suffix if needed (usually already present from SSR)\n\t\tdocument.title = applyTitleSuffix(titleText);\n\t}\n\treturn true;\n}\n\n/**\n * Process and append a head element if it doesn't already exist\n */\nfunction processHeadElement(node: Node): void {\n\tif (node.nodeType !== Node.ELEMENT_NODE) return;\n\n\tconst el = node as Element;\n\t// console.log(\n\t// \t'[applyRouteHead] Processing element:',\n\t// \tel.tagName,\n\t// \t'content:',\n\t// \tel.textContent?.substring(0, 50),\n\t// );\n\n\t// Handle title tag specially\n\tif (processTitleElement(el)) return;\n\n\t// Skip if an equivalent meta tag already exists (from SSR)\n\tif (metaTagExists(el)) return;\n\n\tel.setAttribute(HEAD_ATTR_ROUTE, '');\n\tdocument.head.appendChild(node);\n}\n\nexport function applyRouteHead(head: Any | undefined): void {\n\tif (!isBrowser()) return;\n\ttry {\n\t\t// Remove previous injected nodes for route-level head\n\t\tdocument.querySelectorAll(`[${HEAD_ATTR_ROUTE}]`).forEach((n) => {\n\t\t\tn.parentElement?.removeChild(n);\n\t\t});\n\n\t\tif (!head) return;\n\n\t\tconst html = headToHtml(head);\n\t\tif (!html.trim()) return;\n\n\t\t// console.log('[applyRouteHead] Processing HTML:', html.substring(0, 200));\n\n\t\tconst tpl = document.createElement('template');\n\t\ttpl.innerHTML = html;\n\t\tconst nodes = Array.from(tpl.content.childNodes);\n\t\t// console.log('[applyRouteHead] Parsed nodes:', nodes.length, 'nodes');\n\n\t\tfor (const node of nodes) {\n\t\t\tprocessHeadElement(node);\n\t\t}\n\t} catch (e) {\n\t\tconsole.error('[applyRouteHead] Error:', e);\n\t}\n}\n\n/**\n * A page's head and lang as `/__reroute_data` answers them: built on the\n * server the way a full page load builds them (the browser bundle never holds\n * a route's `ssr`). A route whose data still streams gets it with its key\n * answer.\n */\ntype NavigationHead = { path: string; html: string; lang: string };\n\n/** The comments SSR puts around a page's own head (reroute-js/core `markPageHead`). */\nconst PAGE_HEAD_START = 'reroute:head';\nconst PAGE_HEAD_END = '/reroute:head';\n\nconst navigationHeads = new Map<string, NavigationHead>();\n\nfunction currentPath(): string {\n\treturn window.location.pathname + window.location.search;\n}\n\n/** The head kept for `path`: its exact search first, then the pathname alone. */\nexport function navigationHeadFor(path: string): NavigationHead | undefined {\n\treturn navigationHeads.get(path) ?? navigationHeads.get(path.split('?')[0]);\n}\n\nfunction pageHeadRegion(): { start: Comment; end: Comment } | undefined {\n\tconst comments = Array.from(document.head.childNodes).filter(\n\t\t(node): node is Comment => node.nodeType === Node.COMMENT_NODE,\n\t);\n\tconst start = comments.find((node) => node.data === PAGE_HEAD_START);\n\tconst end = comments.find((node) => node.data === PAGE_HEAD_END);\n\treturn start && end ? { start, end } : undefined;\n}\n\nfunction regionNodes(region: { start: Comment; end: Comment }): ChildNode[] {\n\tconst nodes: ChildNode[] = [];\n\tfor (\n\t\tlet node = region.start.nextSibling;\n\t\tnode && node !== region.end;\n\t\tnode = node.nextSibling\n\t)\n\t\tnodes.push(node);\n\treturn nodes;\n}\n\n/**\n * The server-rendered page's own head, kept when the client starts (before\n * anything changes the document) for when the browser comes back to it.\n */\nfunction keepServerRenderedHead(): void {\n\tconst region = pageHeadRegion();\n\tif (!region) return;\n\tconst path = currentPath();\n\tnavigationHeads.set(path, {\n\t\tpath,\n\t\thtml: regionNodes(region)\n\t\t\t.map((node) =>\n\t\t\t\tnode.nodeType === Node.ELEMENT_NODE ? (node as Element).outerHTML : '',\n\t\t\t)\n\t\t\t.filter(Boolean)\n\t\t\t.join('\\n'),\n\t\tlang: document.documentElement.lang,\n\t});\n}\n\nif (isBrowser()) keepServerRenderedHead();\n\n/**\n * Applies a page's head: what is between SSR's markers becomes the page's\n * own head (title, description, canonical, OG, structured data), so nothing\n * of the page before stays.\n */\nexport function applyNavigationHead(head: NavigationHead): void {\n\tif (!isBrowser()) return;\n\ttry {\n\t\tconst region = pageHeadRegion();\n\t\tif (!region) {\n\t\t\tapplyRouteHead(head.html);\n\t\t\tapplyLang(head.lang);\n\t\t\treturn;\n\t\t}\n\t\tfor (const node of regionNodes(region)) node.remove();\n\t\t// Heads earlier client code added (content pages) belong to the page before\n\t\tfor (const node of document.querySelectorAll(\n\t\t\t`[${HEAD_ATTR}], [${HEAD_ATTR_ROUTE}]`,\n\t\t))\n\t\t\tnode.remove();\n\n\t\tconst template = document.createElement('template');\n\t\ttemplate.innerHTML = head.html;\n\t\tfor (const node of Array.from(template.content.childNodes)) {\n\t\t\tif (node.nodeType !== Node.ELEMENT_NODE) continue;\n\t\t\tif ((node as Element).tagName === 'TITLE')\n\t\t\t\tdocument.title = (node as Element).textContent ?? '';\n\t\t\tregion.end.before(node);\n\t\t}\n\t\tapplyLang(head.lang);\n\t} catch (e) {\n\t\tconsole.error('[applyNavigationHead] Error:', e);\n\t}\n}\n\nfunction keepNavigationHead(head: unknown): void {\n\tif (\n\t\t!head ||\n\t\ttypeof head !== 'object' ||\n\t\ttypeof (head as NavigationHead).path !== 'string' ||\n\t\ttypeof (head as NavigationHead).html !== 'string'\n\t)\n\t\treturn;\n\tconst kept = head as NavigationHead;\n\tnavigationHeads.set(kept.path, kept);\n\tif (\n\t\tisBrowser() &&\n\t\t(kept.path === currentPath() || kept.path === window.location.pathname)\n\t)\n\t\tapplyNavigationHead(kept);\n}\n\n/**\n * Reads a `/__reroute_data` answer (null when it failed). The head it carries\n * is kept for its path, and applied when that page is on screen.\n */\nexport async function readRouteAnswer(response: Response): Promise<Any | null> {\n\tif (!response.ok) return null;\n\tconst json = await response.json();\n\tkeepNavigationHead(json?.head);\n\treturn json;\n}\n\nconst headRequests = new Set<string>();\n\n/**\n * Asks the server for a page's head: alone for a route without `ssr`, with\n * its data otherwise (the head may be made from it).\n */\nexport function fetchNavigationHead(path: string, alone: boolean): void {\n\tif (headRequests.has(path)) return;\n\theadRequests.add(path);\n\tfetch(alone ? navigationHeadUrl(path) : routeDataUrl(path), {\n\t\theaders: { Accept: 'application/json' },\n\t\tcredentials: 'same-origin',\n\t})\n\t\t.then(readRouteAnswer)\n\t\t.catch(() => null)\n\t\t.finally(() => headRequests.delete(path));\n}\n\n/**\n * For a route with `ssr`: its data answer brings the head. When none came\n * shortly after the navigation (nothing asked for the data), ask for it.\n */\nexport function fetchNavigationHeadSoon(path: string, waitMs = 300): void {\n\tsetTimeout(() => {\n\t\tif (!navigationHeadFor(path) && currentPath() === path)\n\t\t\tfetchNavigationHead(path, false);\n\t}, waitMs);\n}\n\n/**\n * The page the server rendered has its head in the document until the first\n * navigation away; true while `path` (its pathname) is still that page.\n */\nlet serverRenderedPathname: string | undefined = isBrowser()\n\t? window.location.pathname\n\t: undefined;\n\nexport function onServerRenderedPage(path: string): boolean {\n\tif (serverRenderedPathname !== path.split('?')[0])\n\t\tserverRenderedPathname = undefined;\n\treturn serverRenderedPathname !== undefined;\n}\n",
|
|
17
17
|
"import { useContext } from 'react';\nimport { RouterContext } from '../providers';\nimport type { RouterContextFactory } from '../types/router';\n\n/**\n * Hook to access the router context.\n * Must be used within a RouterProvider.\n */\nexport function useRouter(): RouterContextFactory {\n\tconst context = useContext(RouterContext);\n\tif (!context) {\n\t\tthrow new Error('useRouter must be used within a RouterProvider');\n\t}\n\treturn context;\n}\n",
|
|
18
|
-
"import { type ReactNode, useCallback, useMemo } from 'react';\nimport { parseContentPath } from '../i18n/helpers';\nimport { type I18nHydration, LocaleProvider } from '../i18n/LocaleProvider';\nimport {\n\tmissingBundleMessage,\n\treadInjectedBundle,\n\tresolveBundleField,\n} from '../lib/bundle';\nimport type { Any } from '../types/any';\nimport { ContentProvider } from './ContentProvider';\nimport { RouterProvider } from './RouterProvider';\n\ntype RerouteProps = {\n\tbyCollection?: Record<string, Any[]> | null;\n\tgetContentEntry?: (\n\t\tcollection: string,\n\t\tname: string,\n\t\tlocale?: string,\n\t) => Any | undefined;\n\tloadContent?: () => Promise<{\n\t\tbyCollection: Record<string, Any[]>;\n\t\tgetContentEntry: (\n\t\t\tcollection: string,\n\t\t\tname: string,\n\t\t\tlocale?: string,\n\t\t) => Any | undefined;\n\t}>;\n\tcontentBaseUrl?: string;\n\tlayouts?: readonly Any[];\n\tmatchRoute?: (pathname: string) => Any;\n\tnotFoundRoutes?: readonly Any[];\n\tnotFound?: React.ComponentType;\n\tpathname?: string;\n\tsearchParams?: URLSearchParams;\n\tviewTransitions?: boolean;\n\tscrollRestoration?: boolean;\n\tmarkdownComponents?: Any;\n\ti18n?: Partial<I18nHydration>;\n\tchildren?: ReactNode;\n};\n\nfunction readI18nHydration(): Partial<I18nHydration> | undefined {\n\ttry {\n\t\tconst raw = (globalThis as Record<string, unknown>).__REROUTE_I18N__ as\n\t\t\t| Partial<I18nHydration>\n\t\t\t| undefined;\n\t\tif (raw?.enabled) return raw;\n\t} catch {\n\t\t// ignore\n\t}\n\treturn undefined;\n}\n\nfunction RerouteProvider({\n\tbyCollection,\n\tgetContentEntry,\n\tloadContent,\n\tcontentBaseUrl,\n\tlayouts,\n\tmatchRoute,\n\tnotFoundRoutes,\n\tnotFound,\n\tpathname,\n\tsearchParams,\n\tviewTransitions,\n\tscrollRestoration,\n\tmarkdownComponents,\n\ti18n: i18nProp,\n\tchildren,\n}: RerouteProps) {\n\tconst injected = readInjectedBundle();\n\tconst resolvedMatchRoute = resolveBundleField(\n\t\tinjected,\n\t\t'matchRoute',\n\t\tmatchRoute,\n\t);\n\tconst resolvedLayouts =\n\t\tresolveBundleField(injected, 'layouts', layouts) ?? [];\n\tconst resolvedNotFoundRoutes = resolveBundleField(\n\t\tinjected,\n\t\t'notFoundRoutes',\n\t\tnotFoundRoutes,\n\t);\n\tconst resolvedContentBaseUrl = resolveBundleField(\n\t\tinjected,\n\t\t'contentBaseUrl',\n\t\tcontentBaseUrl,\n\t);\n\tconst resolvedMarkdownComponents = resolveBundleField(\n\t\tinjected,\n\t\t'markdownComponents',\n\t\tmarkdownComponents,\n\t);\n\n\tif (!resolvedMatchRoute) {\n\t\tthrow new Error(missingBundleMessage());\n\t}\n\n\tconst loader =\n\t\tloadContent ||\n\t\t(resolvedContentBaseUrl\n\t\t\t? (((c?: string) =>\n\t\t\t\t\timport(/* @vite-ignore */ `${resolvedContentBaseUrl}/${c}.js
|
|
18
|
+
"import { type ReactNode, useCallback, useMemo } from 'react';\nimport { parseContentPath, parseLocalePrefix } from '../i18n/helpers';\nimport { type I18nHydration, LocaleProvider } from '../i18n/LocaleProvider';\nimport {\n\tmissingBundleMessage,\n\treadInjectedBundle,\n\tresolveBundleField,\n} from '../lib/bundle';\nimport type { Any } from '../types/any';\nimport { ContentProvider } from './ContentProvider';\nimport { RouterProvider } from './RouterProvider';\n\ntype RerouteProps = {\n\tbyCollection?: Record<string, Any[]> | null;\n\tgetContentEntry?: (\n\t\tcollection: string,\n\t\tname: string,\n\t\tlocale?: string,\n\t) => Any | undefined;\n\tloadContent?: () => Promise<{\n\t\tbyCollection: Record<string, Any[]>;\n\t\tgetContentEntry: (\n\t\t\tcollection: string,\n\t\t\tname: string,\n\t\t\tlocale?: string,\n\t\t) => Any | undefined;\n\t}>;\n\tcontentBaseUrl?: string;\n\tlayouts?: readonly Any[];\n\tmatchRoute?: (pathname: string) => Any;\n\tnotFoundRoutes?: readonly Any[];\n\tnotFound?: React.ComponentType;\n\tpathname?: string;\n\tsearchParams?: URLSearchParams;\n\tviewTransitions?: boolean;\n\tscrollRestoration?: boolean;\n\tmarkdownComponents?: Any;\n\ti18n?: Partial<I18nHydration>;\n\tchildren?: ReactNode;\n};\n\nfunction readI18nHydration(): Partial<I18nHydration> | undefined {\n\ttry {\n\t\tconst raw = (globalThis as Record<string, unknown>).__REROUTE_I18N__ as\n\t\t\t| Partial<I18nHydration>\n\t\t\t| undefined;\n\t\tif (raw?.enabled) return raw;\n\t} catch {\n\t\t// ignore\n\t}\n\treturn undefined;\n}\n\nfunction RerouteProvider({\n\tbyCollection,\n\tgetContentEntry,\n\tloadContent,\n\tcontentBaseUrl,\n\tlayouts,\n\tmatchRoute,\n\tnotFoundRoutes,\n\tnotFound,\n\tpathname,\n\tsearchParams,\n\tviewTransitions,\n\tscrollRestoration,\n\tmarkdownComponents,\n\ti18n: i18nProp,\n\tchildren,\n}: RerouteProps) {\n\tconst injected = readInjectedBundle();\n\tconst resolvedMatchRoute = resolveBundleField(\n\t\tinjected,\n\t\t'matchRoute',\n\t\tmatchRoute,\n\t);\n\tconst resolvedLayouts =\n\t\tresolveBundleField(injected, 'layouts', layouts) ?? [];\n\tconst resolvedNotFoundRoutes = resolveBundleField(\n\t\tinjected,\n\t\t'notFoundRoutes',\n\t\tnotFoundRoutes,\n\t);\n\tconst resolvedContentBaseUrl = resolveBundleField(\n\t\tinjected,\n\t\t'contentBaseUrl',\n\t\tcontentBaseUrl,\n\t);\n\tconst resolvedMarkdownComponents = resolveBundleField(\n\t\tinjected,\n\t\t'markdownComponents',\n\t\tmarkdownComponents,\n\t);\n\n\tif (!resolvedMatchRoute) {\n\t\tthrow new Error(missingBundleMessage());\n\t}\n\n\tconst loader =\n\t\tloadContent ||\n\t\t(resolvedContentBaseUrl\n\t\t\t? (((c?: string) =>\n\t\t\t\t\timport(\n\t\t\t\t\t\t/* @vite-ignore */ `${resolvedContentBaseUrl}/${c}.js`\n\t\t\t\t\t)) as Any)\n\t\t\t: undefined);\n\n\t// Prefer explicit prop; fall back to SSR-injected __REROUTE_I18N__\n\tconst i18n = i18nProp?.enabled ? i18nProp : readI18nHydration();\n\n\tconst locales = i18n?.locales || [];\n\tconst collections = useMemo(() => {\n\t\tif (i18n?.collections?.length) return i18n.collections;\n\t\tif (byCollection) return Object.keys(byCollection);\n\t\treturn undefined;\n\t}, [i18n?.collections, byCollection]);\n\n\t// Routes and layouts match without the locale: `/blog/pt-BR/hello` is\n\t// `/blog/hello`, and with prefixPages `/pt-BR/compare` is `/compare`\n\tconst prefixPages = !!i18n?.prefixPages;\n\tconst routingPath = useCallback(\n\t\t(path: string) => {\n\t\t\tif (!(i18n?.enabled && locales.length)) return path;\n\t\t\tconst page =\n\t\t\t\t(prefixPages && parseLocalePrefix(path, locales)?.routingPathname) ||\n\t\t\t\tpath;\n\t\t\treturn (\n\t\t\t\tparseContentPath(page, locales, collections)?.routingPathname || page\n\t\t\t);\n\t\t},\n\t\t[i18n?.enabled, prefixPages, locales, collections],\n\t);\n\n\tconst matchRouteWithLocale = useCallback(\n\t\t(path: string) => resolvedMatchRoute(routingPath(path)),\n\t\t[routingPath, resolvedMatchRoute],\n\t);\n\n\treturn (\n\t\t<LocaleProvider value={i18n}>\n\t\t\t<ContentProvider\n\t\t\t\tgetEntry={getContentEntry}\n\t\t\t\tbyCollection={byCollection || null}\n\t\t\t\tloadCollection={loader as Any}\n\t\t\t\tmarkdownComponents={resolvedMarkdownComponents}\n\t\t\t>\n\t\t\t\t<RouterProvider\n\t\t\t\t\tlayouts={resolvedLayouts as Any[]}\n\t\t\t\t\tmatchRoute={matchRouteWithLocale as Any}\n\t\t\t\t\troutingPath={routingPath}\n\t\t\t\t\tnotFoundRoutes={resolvedNotFoundRoutes as Any}\n\t\t\t\t\tnotFound={notFound}\n\t\t\t\t\tpathname={pathname}\n\t\t\t\t\tsearchParams={searchParams}\n\t\t\t\t\tviewTransitions={viewTransitions}\n\t\t\t\t\tscrollRestoration={scrollRestoration}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</RouterProvider>\n\t\t\t</ContentProvider>\n\t\t</LocaleProvider>\n\t);\n}\n\nexport { RerouteProvider };\nexport type { RerouteProps };\n",
|
|
19
19
|
"import type { Any } from '../types/any';\n\nexport type InjectedBundle = {\n\tmatchRoute?: (pathname: string) => Any;\n\tlayouts?: readonly Any[];\n\tnotFoundRoutes?: readonly Any[];\n\tcontentBaseUrl?: string;\n\tmarkdownComponents?: Any;\n};\n\nfunction readGlobalBundle(key: string): InjectedBundle | undefined {\n\ttry {\n\t\treturn (globalThis as Record<string, unknown>)[key] as\n\t\t\t| InjectedBundle\n\t\t\t| undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/** SSR bundle set by `.reroute/artifacts.server`. */\nexport function readServerBundle(): InjectedBundle | undefined {\n\tif (typeof window !== 'undefined') return undefined;\n\treturn readGlobalBundle('__REROUTE_SERVER_BUNDLE__');\n}\n\n/** Client bundle set by `.reroute/artifacts.client`. */\nexport function readClientBundle(): InjectedBundle | undefined {\n\tif (typeof window === 'undefined') return undefined;\n\treturn readGlobalBundle('__REROUTE_CLIENT_BUNDLE__');\n}\n\n/** Active bundle for the current runtime (server or browser). */\nexport function readInjectedBundle(): InjectedBundle | undefined {\n\treturn typeof window === 'undefined'\n\t\t? readServerBundle()\n\t\t: readClientBundle();\n}\n\nexport function missingBundleMessage(): string {\n\tconst side =\n\t\ttypeof window === 'undefined'\n\t\t\t? 'Run reroute gen so the server bundle loads.'\n\t\t\t: 'Run reroute gen so the client bundle is included.';\n\treturn `RerouteProvider: no route bundle found. ${side} Or pass matchRoute and layouts explicitly.`;\n}\n\n/** Server prefers injected bundle; client prefers explicit props. */\nexport function resolveBundleField<T>(\n\tinjected: InjectedBundle | undefined,\n\tkey: keyof InjectedBundle,\n\tprop: T | undefined,\n): T | undefined {\n\tconst fromInjected = injected?.[key] as T | undefined;\n\tif (typeof window === 'undefined') {\n\t\treturn fromInjected ?? prop;\n\t}\n\treturn prop ?? fromInjected;\n}\n",
|
|
20
|
-
"import type { ReactNode } from 'react';\nimport React, {\n\tcreateContext,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseSyncExternalStore,\n} from 'react';\nimport { flushSync } from 'react-dom';\nimport { wouldUnload } from '../hooks/useData';\nimport {\n\tapplyNavigationHead,\n\tapplyPageMeta,\n\tapplyRouteHead,\n\tfetchNavigationHead,\n\tfetchNavigationHeadSoon,\n\tnavigationHeadFor,\n\tonServerRenderedPage,\n\treadRouteAnswer,\n} from '../lib/head';\nimport { layoutWraps } from '../lib/layouts';\nimport { routeDataUrl } from '../lib/static-data';\nimport type { Any } from '../types/any';\nimport type {\n\tNavigateOptions,\n\tRouteMatch,\n\tRouterContextFactory,\n} from '../types/router';\n\n// Check if we're in a browser environment\nconst isBrowser =\n\ttypeof window !== 'undefined' && typeof window.document !== 'undefined';\n\nconst OutletContext = createContext<ReactNode>(null);\n/**\n * The pattern of the layout being rendered (`/a`, `/`), so useLayoutData reads\n * that layout's own data. Pages see their innermost layout's.\n */\nconst LayoutPatternContext = createContext<string | null>(null);\nconst RouterContext = createContext<RouterContextFactory | null>(null);\n\n// Create a simple store for location changes\nlet listeners: Array<() => void> = [];\nlet currentLocation = isBrowser\n\t? {\n\t\t\tpathname: window.location.pathname,\n\t\t\tsearch: window.location.search,\n\t\t\thash: window.location.hash,\n\t\t}\n\t: { pathname: '/', search: '', hash: '' };\n\ninterface RouterProviderProps {\n\tchildren?: ReactNode;\n\tlayouts?: readonly Any[];\n\tmatchRoute: (pathname: string) => RouteMatch | null;\n\tnotFoundRoutes?: readonly Any[];\n\tnotFound?: React.ComponentType;\n\tpathname?: string;\n\tsearchParams?: URLSearchParams;\n\tviewTransitions?: boolean;\n\tscrollRestoration?: boolean;\n}\n\n/**\n * True while the store holds a lazy marker for `path`: the route's data\n * streams, and its key answer brings the head.\n */\nfunction routeDataStreams(path: string): boolean {\n\tconst store = (globalThis as Any).__REROUTE_DATA__ || {};\n\tconst own = store[path] ?? store[path.split('?')[0]];\n\treturn (\n\t\town !== null && typeof own === 'object' && (own as Any).__lazy__ === true\n\t);\n}\n\n/**\n * Apply the page's head and lang. The server builds them as for a full page\n * load and sends them with the route's data (the browser bundle never holds\n * `ssr`), or alone for a route without `ssr`. The page it rendered already\n * has its head, kept when the browser first leaves it.\n */\nfunction applyRouteHeadAndLang(\n\tpath: string,\n\tmatchRoute: (pathname: string) => RouteMatch | null,\n): void {\n\ttry {\n\t\tconst landing = onServerRenderedPage(path);\n\t\tconst route: Any = matchRoute(path.split('?')[0])?.route as Any;\n\t\tif (!route) return;\n\n\t\tconst kept = navigationHeadFor(path);\n\t\tif (kept) applyNavigationHead(kept);\n\t\telse if (landing) return;\n\t\telse if (!route.hasSsr) fetchNavigationHead(path, true);\n\t\t// A route with `ssr` gets its head with its data, if anything asks for it\n\t\t// (content pages load their own way)\n\t\telse if (!routeDataStreams(path)) fetchNavigationHeadSoon(path);\n\t} catch {\n\t\t// Silently ignore errors\n\t}\n}\n\nfunction subscribe(listener: () => void) {\n\tif (!isBrowser) return () => {};\n\tlisteners.push(listener);\n\treturn () => {\n\t\tlisteners = listeners.filter((l) => l !== listener);\n\t};\n}\n\nfunction getSnapshot() {\n\treturn currentLocation;\n}\n\nfunction emitChange() {\n\tfor (const listener of listeners) {\n\t\tlistener();\n\t}\n}\n\n// Helper to check if view transitions are supported\nconst supportsViewTransitions =\n\ttypeof document !== 'undefined' && 'startViewTransition' in document;\n\n// Global flag to track if view transitions are enabled\nlet viewTransitionsEnabled = false;\n\nfunction setViewTransitionsEnabled(enabled: boolean) {\n\tviewTransitionsEnabled = enabled && supportsViewTransitions;\n}\n\n// Global flag to track if scroll restoration is enabled\nlet scrollRestorationEnabled = true;\n\nfunction setScrollRestorationEnabled(enabled: boolean) {\n\tscrollRestorationEnabled = enabled;\n}\n\n// Store scroll positions for each path for restoration on back/forward\nconst scrollPositions = new Map<string, { x: number; y: number }>();\n\n/**\n * A newer navigation skips the running transition, rejecting its promises\n * with an AbortError: expected, so don't let it surface as an uncaught error.\n */\nfunction settleTransition(transition: {\n\tready: Promise<unknown>;\n\tfinished: Promise<unknown>;\n\tupdateCallbackDone: Promise<unknown>;\n}) {\n\ttransition.ready.catch(() => {});\n\ttransition.finished.catch(() => {});\n\ttransition.updateCallbackDone.catch(() => {});\n}\n\n/**\n * Whether an element's `view-transition-name` asks for a transition. Browsers\n * give `<html>` `root` in their own stylesheet, so that one doesn't count:\n * otherwise every navigation became a view transition, which commits the new\n * location a frame late, after state set in the same handler has rendered\n * against the old URL.\n */\nexport function namesViewTransition(\n\tname: string | undefined,\n\tisRoot: boolean,\n): boolean {\n\tif (!name || name === 'none') return false;\n\treturn !(isRoot && name === 'root');\n}\n\n// Helper to check if page has named view transition elements\nfunction hasViewTransitionNames(): boolean {\n\tif (!isBrowser) return false;\n\ttry {\n\t\t// Check if any element has view-transition-name set (including via CSS)\n\t\tconst allElements = document.querySelectorAll('*');\n\t\tfor (const el of allElements) {\n\t\t\tconst computedStyle = window.getComputedStyle(el);\n\t\t\tif (\n\t\t\t\tnamesViewTransition(\n\t\t\t\t\tcomputedStyle.viewTransitionName,\n\t\t\t\t\tel === document.documentElement,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * The SSR script sets `__REROUTE_INITIAL_HYDRATION__` so hooks don't suspend\n * while hydrating. Only useData/LazyRoute cleared it, so an app whose first\n * page used neither kept it forever, and later navigations then read lazy\n * data as `undefined` (rendering nothing). A navigation is never hydration.\n */\nexport function endInitialHydration(): void {\n\ttry {\n\t\tdelete (globalThis as { __REROUTE_INITIAL_HYDRATION__?: boolean })\n\t\t\t.__REROUTE_INITIAL_HYDRATION__;\n\t} catch {}\n}\n\n/**\n * Whether a navigation scrolls to the top: always when asked, else only when\n * the page (pathname) changes. Rewriting the query of the page you're on\n * (a tab, a sort, a filter) keeps you where you are.\n */\nexport function shouldScrollOnNavigate(\n\tfromPathname: string,\n\ttoPathname: string,\n\tscroll?: boolean,\n): boolean {\n\treturn scroll ?? fromPathname !== toPathname;\n}\n\nfunction navigateInternal(to: string, options: NavigateOptions = {}) {\n\tif (!isBrowser) return;\n\tendInitialHydration();\n\n\tconst url = new URL(to, window.location.origin);\n\n\tif (url.origin !== window.location.origin) {\n\t\t// External link\n\t\twindow.location.href = to;\n\t\treturn;\n\t}\n\n\tconst newPath = url.pathname + url.search + url.hash;\n\tconst currentPath =\n\t\twindow.location.pathname + window.location.search + window.location.hash;\n\n\tif (newPath === currentPath) return;\n\tconst scrollToTop = shouldScrollOnNavigate(\n\t\twindow.location.pathname,\n\t\turl.pathname,\n\t\toptions.scroll,\n\t);\n\n\t// Save current scroll position before navigating away\n\tif (scrollRestorationEnabled) {\n\t\tscrollPositions.set(currentPath, {\n\t\t\tx: window.scrollX,\n\t\t\ty: window.scrollY,\n\t\t});\n\t}\n\n\tif (options.replace) {\n\t\twindow.history.replaceState(options.state || null, '', to);\n\t} else {\n\t\twindow.history.pushState(options.state || null, '', to);\n\t}\n\n\tconst updateState = () => {\n\t\tcurrentLocation = {\n\t\t\tpathname: url.pathname,\n\t\t\tsearch: url.search,\n\t\t\thash: url.hash,\n\t\t};\n\t\temitChange();\n\t};\n\n\t// Only use view transitions if enabled AND page has named transition elements\n\tconst shouldUseViewTransition =\n\t\tviewTransitionsEnabled && hasViewTransitionNames();\n\n\tif (shouldUseViewTransition) {\n\t\tconst transition = document.startViewTransition(() => {\n\t\t\tflushSync(() => {\n\t\t\t\tupdateState();\n\t\t\t\t// For view transitions, adjust scroll inside the transition callback so\n\t\t\t\t// the old snapshot keeps its current scroll position while the new page\n\t\t\t\t// is captured at the desired position.\n\t\t\t\tif (url.hash) {\n\t\t\t\t\tconst immediate = document.querySelector(url.hash);\n\t\t\t\t\tif (immediate) {\n\t\t\t\t\t\timmediate.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet attempts = 0;\n\t\t\t\t\t\tconst maxAttempts = 10;\n\t\t\t\t\t\tconst tryScroll = () => {\n\t\t\t\t\t\t\tconst el = document.querySelector(url.hash);\n\t\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\t\tel.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t\t\t} else if (attempts < maxAttempts) {\n\t\t\t\t\t\t\t\tattempts++;\n\t\t\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t}\n\t\t\t\t} else if (scrollToTop) {\n\t\t\t\t\twindow.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tsettleTransition(transition);\n\t} else {\n\t\tupdateState();\n\t\t// Handle scrolling after the DOM updates (non-view-transition only)\n\t\trequestAnimationFrame(() => {\n\t\t\tif (url.hash) {\n\t\t\t\t// Try to scroll to the fragment with retries for slow-rendering components\n\t\t\t\tlet attempts = 0;\n\t\t\t\tconst maxAttempts = 10;\n\t\t\t\tconst tryScroll = () => {\n\t\t\t\t\tconst element = document.querySelector(url.hash);\n\t\t\t\t\tif (element) {\n\t\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t} else if (attempts < maxAttempts) {\n\t\t\t\t\t\tattempts++;\n\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\ttryScroll();\n\t\t\t} else if (scrollToTop) {\n\t\t\t\t// Scroll to top for a new page - happens after it renders\n\t\t\t\twindow.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * RouterProvider component that manages client-side routing with SSR support.\n * Uses React's useSyncExternalStore for proper hydration without mismatches.\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Router state management with history API\nfunction RouterProvider({\n\tchildren,\n\tlayouts = [],\n\tmatchRoute,\n\tnotFoundRoutes = [],\n\tnotFound: NotFound,\n\tpathname = '/',\n\tsearchParams: ssrSearchParams,\n\tviewTransitions = true,\n\tscrollRestoration = true,\n}: RouterProviderProps) {\n\t// Set global view transitions and scroll restoration flags\n\tuseEffect(() => {\n\t\tsetViewTransitionsEnabled(viewTransitions);\n\t\tsetScrollRestorationEnabled(scrollRestoration);\n\t\t// Disable browser's automatic scroll restoration\n\t\tif (isBrowser && 'scrollRestoration' in window.history) {\n\t\t\twindow.history.scrollRestoration = 'manual';\n\t\t}\n\t}, [viewTransitions, scrollRestoration]);\n\t// Create stable server snapshot reference that never changes\n\tconst serverSnapshotRef = React.useRef<{\n\t\tpathname: string;\n\t\tsearch: string;\n\t\thash: string;\n\t} | null>(null);\n\n\tif (!serverSnapshotRef.current) {\n\t\tif (isBrowser) {\n\t\t\t// During hydration, point to the exact same object reference\n\t\t\t// that getSnapshot() returns so useSyncExternalStore doesn't\n\t\t\t// detect a mismatch and trigger a second render.\n\t\t\tserverSnapshotRef.current = currentLocation;\n\t\t} else {\n\t\t\t// During pure SSR, use the pathname and searchParams from props\n\t\t\t// Extract hash from pathname if present (e.g., \"/path#hash\")\n\t\t\tconst hIdx = pathname.indexOf('#');\n\t\t\tlet pathOnly = pathname;\n\t\t\tlet hash = '';\n\n\t\t\tif (hIdx !== -1) {\n\t\t\t\tpathOnly = pathname.slice(0, hIdx);\n\t\t\t\thash = pathname.slice(hIdx);\n\t\t\t}\n\n\t\t\t// Use provided searchParams if available, otherwise try to parse from pathname\n\t\t\tlet search = '';\n\t\t\tif (ssrSearchParams) {\n\t\t\t\tconst searchString = ssrSearchParams.toString();\n\t\t\t\tsearch = searchString ? `?${searchString}` : '';\n\t\t\t} else {\n\t\t\t\t// Fallback: extract search from pathname if present\n\t\t\t\tconst qIdx = pathOnly.indexOf('?');\n\t\t\t\tif (qIdx !== -1) {\n\t\t\t\t\tsearch = pathOnly.slice(qIdx);\n\t\t\t\t\tpathOnly = pathOnly.slice(0, qIdx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tserverSnapshotRef.current = { pathname: pathOnly, search, hash };\n\t\t}\n\t}\n\n\t// Return the same cached snapshot object every time\n\tconst getServerSnapshot = useCallback(() => serverSnapshotRef.current, []);\n\n\t// Use useSyncExternalStore for proper SSR hydration\n\tconst location =\n\t\tuseSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) ||\n\t\tcurrentLocation;\n\n\t// Initialize location on mount (client-side only)\n\t// Avoid emitting a change if nothing actually changed to prevent a redundant re-render after hydration\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\t\tconst next = {\n\t\t\tpathname: window.location.pathname,\n\t\t\tsearch: window.location.search,\n\t\t\thash: window.location.hash,\n\t\t};\n\t\tif (\n\t\t\tcurrentLocation.pathname !== next.pathname ||\n\t\t\tcurrentLocation.search !== next.search ||\n\t\t\tcurrentLocation.hash !== next.hash\n\t\t) {\n\t\t\tcurrentLocation = next;\n\t\t\temitChange();\n\t\t}\n\t}, []);\n\n\tconst target = useMemo(\n\t\t() => matchRoute(location.pathname),\n\t\t[location.pathname, matchRoute],\n\t);\n\n\tconst params = target?.params || {};\n\tconst searchParams = useMemo(\n\t\t() => new URLSearchParams(location.search),\n\t\t[location.search],\n\t);\n\n\tconst navigate = useCallback((to: string, options: NavigateOptions = {}) => {\n\t\tnavigateInternal(to, options);\n\t}, []);\n\n\t// Handle browser back/forward\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Navigation handling with prefetch\n\t\tconst handlePopState = () => {\n\t\t\tendInitialHydration();\n\t\t\tconst next = {\n\t\t\t\tpathname: window.location.pathname,\n\t\t\t\tsearch: window.location.search,\n\t\t\t\thash: window.location.hash,\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tconst w = window as Any;\n\t\t\t\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\t\t\t\tconst have = (w.__REROUTE_DATA__ as Any)[next.pathname];\n\t\t\t\t// Only prefetch for dynamic routes; static/content pages don't need it\n\t\t\t\tconst isDynamic = !!matchRoute?.(next.pathname)?.route?.isDynamic;\n\t\t\t\tif (isDynamic && have === undefined) {\n\t\t\t\t\tlet updated = false;\n\t\t\t\t\tconst fallback = setTimeout(() => {\n\t\t\t\t\t\tif (updated) return;\n\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t\tcurrentLocation = next;\n\t\t\t\t\t\temitChange();\n\t\t\t\t\t}, 250);\n\t\t\t\t\tfetch(routeDataUrl(next.pathname), {\n\t\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\t})\n\t\t\t\t\t\t.then(readRouteAnswer)\n\t\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Data fetching with caching\n\t\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst payload = j ? (j.data ?? j) : undefined;\n\t\t\t\t\t\t\t\tif (payload !== undefined) {\n\t\t\t\t\t\t\t\t\t// Check if this is a multi-source response (layout + route)\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\tpayload.__reroute_multiple__ === true\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// Multiple data sources: populate each at its specific key\n\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t\t\t\t\t\t\t// Check if this value needs flattening\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t(value as Any).__flatten__\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\t\t// Flatten this nested object\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor (const [subKey, subValue] of Object.entries(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue as Record<string, unknown>,\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\t\tif (subKey !== '__flatten__') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Store all values including lazy markers,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// never over data already loaded\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[subKey],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubValue,\n\t\t\t\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\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[subKey] = subValue;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(subKey);\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\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\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\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\ttry {\n\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: { keys },\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} catch {}\n\t\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\t(payload.__reroute_flattened__ === true ||\n\t\t\t\t\t\t\t\t\t\t\tpayload.__flatten__ === true)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// Flatten: populate each key individually\n\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tkey !== '__reroute_flattened__' &&\n\t\t\t\t\t\t\t\t\t\t\t\tkey !== '__flatten__'\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Store all values including lazy markers (never over\n\t\t\t\t\t\t\t\t\t\t\t\t// loaded data); useData fetches lazy markers on demand\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload((w.__REROUTE_DATA__ as Any)[key], value)\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\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\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\t// Also store at pathname, unless the page's own data sits there\n\t\t\t\t\t\t\t\t\t\t// (`/` answers `{ '/': … }`; see storeAndDispatchData)\n\t\t\t\t\t\t\t\t\t\tconst ownKey = keys.includes(next.pathname);\n\t\t\t\t\t\t\t\t\t\tif (!ownKey)\n\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[next.pathname] = payload;\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys: ownKey ? keys : [...keys, next.pathname],\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}),\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// Single key response\n\t\t\t\t\t\t\t\t\t\t// Check if this single response needs flattening\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\t\t(payload as Any).__flatten__ === true\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t// Flatten this data into individual keys\n\t\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (key !== '__flatten__') {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\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\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\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\t// Also store at pathname, unless the page's own data sits there\n\t\t\t\t\t\t\t\t\t\t\tconst ownKey = keys.includes(next.pathname);\n\t\t\t\t\t\t\t\t\t\t\tif (!ownKey)\n\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[next.pathname] = payload;\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys: ownKey ? keys : [...keys, next.pathname],\n\t\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\t}),\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 {}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t// Regular single key response\n\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[next.pathname] = payload;\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: { key: next.pathname },\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);\n\t\t\t\t\t\t\t\t\t\t\t} catch {}\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} catch {}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {})\n\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\tif (!updated) {\n\t\t\t\t\t\t\t\tclearTimeout(fallback);\n\t\t\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t\t\t\tcurrentLocation = next;\n\t\t\t\t\t\t\t\temitChange();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\treturn; // we'll update after prefetch or fallback timer\n\t\t\t\t}\n\t\t\t} catch {}\n\n\t\t\tconst updateState = () => {\n\t\t\t\tcurrentLocation = next;\n\t\t\t\temitChange();\n\t\t\t};\n\n\t\t\t// Only use view transitions if enabled AND page has named transition elements\n\t\t\tconst shouldUseViewTransition =\n\t\t\t\tviewTransitionsEnabled && hasViewTransitionNames();\n\n\t\t\tif (shouldUseViewTransition) {\n\t\t\t\tsettleTransition(\n\t\t\t\t\t(document as Any).startViewTransition(() => {\n\t\t\t\t\t\tflushSync(() => {\n\t\t\t\t\t\t\tupdateState();\n\t\t\t\t\t\t});\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tupdateState();\n\t\t\t}\n\n\t\t\t// Restore scroll position for back/forward navigation\n\t\t\tif (scrollRestorationEnabled) {\n\t\t\t\tconst nextPath = next.pathname + next.search + next.hash;\n\t\t\t\tconst savedPosition = scrollPositions.get(nextPath);\n\n\t\t\t\t// Wait for DOM to settle and view transition to complete\n\t\t\t\tconst restoreScroll = () => {\n\t\t\t\t\tif (next.hash) {\n\t\t\t\t\t\t// Handle hash navigation\n\t\t\t\t\t\tconst element = document.querySelector(next.hash);\n\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth' });\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (savedPosition) {\n\t\t\t\t\t\t// Restore saved scroll position\n\t\t\t\t\t\twindow.scrollTo({\n\t\t\t\t\t\t\ttop: savedPosition.y,\n\t\t\t\t\t\t\tleft: savedPosition.x,\n\t\t\t\t\t\t\tbehavior: 'instant',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t// If no saved position and no hash, keep current scroll (don't reset to top)\n\t\t\t\t};\n\n\t\t\t\tif (shouldUseViewTransition) {\n\t\t\t\t\t// Double rAF to ensure view transition has started rendering\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\trequestAnimationFrame(restoreScroll);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\trequestAnimationFrame(restoreScroll);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener('popstate', handlePopState);\n\t\treturn () => window.removeEventListener('popstate', handlePopState);\n\t}, [matchRoute]);\n\n\t// Apply route-level meta/ssr if exported by the route module (non-content pages)\n\tuseEffect(() => {\n\t\tconst route: Any = target?.route as Any;\n\t\tif (!route) return;\n\t\ttry {\n\t\t\tif (route.meta) applyPageMeta(route.meta);\n\t\t} catch {}\n\n\t\t// The page on screen (the `pathname` prop is the one the server rendered)\n\t\tconst onScreen = () => window.location.pathname + window.location.search;\n\n\t\t// Apply immediately (will skip if no data available)\n\t\tapplyRouteHeadAndLang(onScreen(), matchRoute);\n\n\t\t// Listen for data updates and re-apply head when data becomes available\n\t\tconst handleDataUpdate = (e: Event) => {\n\t\t\tconst detail = (e as CustomEvent).detail as Any;\n\t\t\tconst keys: string[] = Array.isArray(detail?.keys)\n\t\t\t\t? detail.keys\n\t\t\t\t: detail?.key\n\t\t\t\t\t? [detail.key]\n\t\t\t\t\t: [];\n\t\t\tconst currentPathname = onScreen();\n\n\t\t\t// Check if any key matches the current pathname\n\t\t\tconst shouldApply =\n\t\t\t\tkeys.length === 0 ||\n\t\t\t\tkeys.includes(currentPathname) ||\n\t\t\t\tkeys.some((k) => currentPathname.startsWith(k));\n\n\t\t\t// If this event is for our current pathname, re-apply head\n\t\t\tif (shouldApply) {\n\t\t\t\tapplyRouteHeadAndLang(currentPathname, matchRoute);\n\t\t\t}\n\t\t};\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.addEventListener(\n\t\t\t\t'__reroute_data__' as Any,\n\t\t\t\thandleDataUpdate as Any,\n\t\t\t);\n\t\t}\n\n\t\treturn () => {\n\t\t\t// Clear previously injected route-level head items\n\t\t\tapplyRouteHead(undefined);\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\twindow.removeEventListener(\n\t\t\t\t\t'__reroute_data__' as Any,\n\t\t\t\t\thandleDataUpdate as Any,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t}, [target, matchRoute]);\n\n\tconst notFoundResolver = useCallback(\n\t\t(pathname: string) => {\n\t\t\ttry {\n\t\t\t\t// Choose the most specific notFound whose pattern is a prefix of pathname\n\t\t\t\tconst list = Array.isArray(notFoundRoutes)\n\t\t\t\t\t? (notFoundRoutes as Any[])\n\t\t\t\t\t: [];\n\t\t\t\tlet chosen: Any | undefined;\n\t\t\t\tlet bestLen = -1;\n\t\t\t\tfor (const nf of list) {\n\t\t\t\t\tconst pat = String(nf?.pattern || '/');\n\t\t\t\t\tif (!pathname.startsWith(pat)) continue;\n\t\t\t\t\tconst len = pat.split('/').filter(Boolean).length;\n\t\t\t\t\tif (len >= bestLen) {\n\t\t\t\t\t\tbestLen = len;\n\t\t\t\t\t\tchosen = nf;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn chosen?.component as Any | undefined;\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t\t[notFoundRoutes],\n\t);\n\n\tconst contextValue = useMemo<RouterContextFactory>(\n\t\t() =>\n\t\t\t({\n\t\t\t\tpathname: location.pathname,\n\t\t\t\tparams,\n\t\t\t\tsearchParams,\n\t\t\t\tnavigate,\n\t\t\t\ttarget,\n\t\t\t\tmatchRoute,\n\t\t\t\tnotFoundResolver,\n\t\t\t}) as Any,\n\t\t[\n\t\t\tlocation.pathname,\n\t\t\tparams,\n\t\t\tsearchParams,\n\t\t\tnavigate,\n\t\t\ttarget,\n\t\t\tmatchRoute,\n\t\t\tnotFoundResolver,\n\t\t],\n\t);\n\n\t// Find matching layouts for the current pathname\n\tconst matchingLayouts = useMemo(() => {\n\t\treturn layouts\n\t\t\t.filter((layout: Any) =>\n\t\t\t\tlayoutWraps(layout, location.pathname, target?.route.pattern),\n\t\t\t)\n\t\t\t.sort((a: Any, b: Any) => {\n\t\t\t\t// Sort by depth (shallow first) since we wrap from innermost to outermost\n\t\t\t\t// This ensures root layouts are outermost, specific layouts are innermost\n\t\t\t\treturn (\n\t\t\t\t\ta.pattern.split('/').filter(Boolean).length -\n\t\t\t\t\tb.pattern.split('/').filter(Boolean).length\n\t\t\t\t);\n\t\t\t});\n\t}, [layouts, location.pathname, target]);\n\n\tlet content: ReactNode;\n\n\tif (target) {\n\t\tconst Component = target.route.component;\n\t\tlet outletContent: ReactNode = <Component />;\n\n\t\t// Build layout hierarchy from innermost to outermost\n\t\tfor (let i = matchingLayouts.length - 1; i >= 0; i--) {\n\t\t\tconst Layout = matchingLayouts[i].component;\n\t\t\tconst pattern = String(matchingLayouts[i].pattern || '/');\n\t\t\tconst currentOutlet = outletContent;\n\t\t\toutletContent = (\n\t\t\t\t<LayoutPatternContext.Provider value={pattern}>\n\t\t\t\t\t<OutletContext.Provider value={currentOutlet}>\n\t\t\t\t\t\t<Layout />\n\t\t\t\t\t</OutletContext.Provider>\n\t\t\t\t</LayoutPatternContext.Provider>\n\t\t\t);\n\t\t}\n\n\t\tcontent = outletContent;\n\t} else {\n\t\tconst Fallback = (notFoundResolver(location.pathname) as Any) || NotFound;\n\t\tif (Fallback) {\n\t\t\tcontent = <Fallback />;\n\t\t} else {\n\t\t\tcontent = (\n\t\t\t\t<div style={{ padding: '2rem', textAlign: 'center' }}>\n\t\t\t\t\t<h1>404 - Page Not Found</h1>\n\t\t\t\t\t<p>The page {location.pathname} could not be found.</p>\n\t\t\t\t\t<a href='/'>Go Home</a>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t<RouterContext.Provider value={contextValue}>\n\t\t\t{children || content}\n\t\t</RouterContext.Provider>\n\t);\n}\n\nexport { LayoutPatternContext, OutletContext, RouterContext, RouterProvider };\n",
|
|
20
|
+
"import type { ReactNode } from 'react';\nimport React, {\n\tcreateContext,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseSyncExternalStore,\n} from 'react';\nimport { flushSync } from 'react-dom';\nimport { wouldUnload } from '../hooks/useData';\nimport { carryLocale, leavesLocale } from '../i18n/LocaleProvider';\nimport {\n\tapplyNavigationHead,\n\tapplyPageMeta,\n\tapplyRouteHead,\n\tfetchNavigationHead,\n\tfetchNavigationHeadSoon,\n\tnavigationHeadFor,\n\tonServerRenderedPage,\n\treadRouteAnswer,\n} from '../lib/head';\nimport { layoutWraps } from '../lib/layouts';\nimport { routeDataUrl } from '../lib/static-data';\nimport type { Any } from '../types/any';\nimport type {\n\tNavigateOptions,\n\tRouteMatch,\n\tRouterContextFactory,\n} from '../types/router';\n\nconst samePath = (path: string) => path;\n\n// Check if we're in a browser environment\nconst isBrowser =\n\ttypeof window !== 'undefined' && typeof window.document !== 'undefined';\n\nconst OutletContext = createContext<ReactNode>(null);\n/**\n * The pattern of the layout being rendered (`/a`, `/`), so useLayoutData reads\n * that layout's own data. Pages see their innermost layout's.\n */\nconst LayoutPatternContext = createContext<string | null>(null);\nconst RouterContext = createContext<RouterContextFactory | null>(null);\n\n// Create a simple store for location changes\nlet listeners: Array<() => void> = [];\nlet currentLocation = isBrowser\n\t? {\n\t\t\tpathname: window.location.pathname,\n\t\t\tsearch: window.location.search,\n\t\t\thash: window.location.hash,\n\t\t}\n\t: { pathname: '/', search: '', hash: '' };\n\ninterface RouterProviderProps {\n\tchildren?: ReactNode;\n\tlayouts?: readonly Any[];\n\tmatchRoute: (pathname: string) => RouteMatch | null;\n\t/** The path layouts and 404 pages match: the pathname without its locale. */\n\troutingPath?: (pathname: string) => string;\n\tnotFoundRoutes?: readonly Any[];\n\tnotFound?: React.ComponentType;\n\tpathname?: string;\n\tsearchParams?: URLSearchParams;\n\tviewTransitions?: boolean;\n\tscrollRestoration?: boolean;\n}\n\n/**\n * True while the store holds a lazy marker for `path`: the route's data\n * streams, and its key answer brings the head.\n */\nfunction routeDataStreams(path: string): boolean {\n\tconst store = (globalThis as Any).__REROUTE_DATA__ || {};\n\tconst own = store[path] ?? store[path.split('?')[0]];\n\treturn (\n\t\town !== null && typeof own === 'object' && (own as Any).__lazy__ === true\n\t);\n}\n\n/**\n * Apply the page's head and lang. The server builds them as for a full page\n * load and sends them with the route's data (the browser bundle never holds\n * `ssr`), or alone for a route without `ssr`. The page it rendered already\n * has its head, kept when the browser first leaves it.\n */\nfunction applyRouteHeadAndLang(\n\tpath: string,\n\tmatchRoute: (pathname: string) => RouteMatch | null,\n): void {\n\ttry {\n\t\tconst landing = onServerRenderedPage(path);\n\t\tconst route: Any = matchRoute(path.split('?')[0])?.route as Any;\n\t\tif (!route) return;\n\n\t\tconst kept = navigationHeadFor(path);\n\t\tif (kept) applyNavigationHead(kept);\n\t\telse if (landing) return;\n\t\telse if (!route.hasSsr) fetchNavigationHead(path, true);\n\t\t// A route with `ssr` gets its head with its data, if anything asks for it\n\t\t// (content pages load their own way)\n\t\telse if (!routeDataStreams(path)) fetchNavigationHeadSoon(path);\n\t} catch {\n\t\t// Silently ignore errors\n\t}\n}\n\nfunction subscribe(listener: () => void) {\n\tif (!isBrowser) return () => {};\n\tlisteners.push(listener);\n\treturn () => {\n\t\tlisteners = listeners.filter((l) => l !== listener);\n\t};\n}\n\nfunction getSnapshot() {\n\treturn currentLocation;\n}\n\nfunction emitChange() {\n\tfor (const listener of listeners) {\n\t\tlistener();\n\t}\n}\n\n// Helper to check if view transitions are supported\nconst supportsViewTransitions =\n\ttypeof document !== 'undefined' && 'startViewTransition' in document;\n\n// Global flag to track if view transitions are enabled\nlet viewTransitionsEnabled = false;\n\nfunction setViewTransitionsEnabled(enabled: boolean) {\n\tviewTransitionsEnabled = enabled && supportsViewTransitions;\n}\n\n// Global flag to track if scroll restoration is enabled\nlet scrollRestorationEnabled = true;\n\nfunction setScrollRestorationEnabled(enabled: boolean) {\n\tscrollRestorationEnabled = enabled;\n}\n\n// Store scroll positions for each path for restoration on back/forward\nconst scrollPositions = new Map<string, { x: number; y: number }>();\n\n/**\n * A newer navigation skips the running transition, rejecting its promises\n * with an AbortError: expected, so don't let it surface as an uncaught error.\n */\nfunction settleTransition(transition: {\n\tready: Promise<unknown>;\n\tfinished: Promise<unknown>;\n\tupdateCallbackDone: Promise<unknown>;\n}) {\n\ttransition.ready.catch(() => {});\n\ttransition.finished.catch(() => {});\n\ttransition.updateCallbackDone.catch(() => {});\n}\n\n/**\n * Whether an element's `view-transition-name` asks for a transition. Browsers\n * give `<html>` `root` in their own stylesheet, so that one doesn't count:\n * otherwise every navigation became a view transition, which commits the new\n * location a frame late, after state set in the same handler has rendered\n * against the old URL.\n */\nexport function namesViewTransition(\n\tname: string | undefined,\n\tisRoot: boolean,\n): boolean {\n\tif (!name || name === 'none') return false;\n\treturn !(isRoot && name === 'root');\n}\n\n// Helper to check if page has named view transition elements\nfunction hasViewTransitionNames(): boolean {\n\tif (!isBrowser) return false;\n\ttry {\n\t\t// Check if any element has view-transition-name set (including via CSS)\n\t\tconst allElements = document.querySelectorAll('*');\n\t\tfor (const el of allElements) {\n\t\t\tconst computedStyle = window.getComputedStyle(el);\n\t\t\tif (\n\t\t\t\tnamesViewTransition(\n\t\t\t\t\tcomputedStyle.viewTransitionName,\n\t\t\t\t\tel === document.documentElement,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * The SSR script sets `__REROUTE_INITIAL_HYDRATION__` so hooks don't suspend\n * while hydrating. Only useData/LazyRoute cleared it, so an app whose first\n * page used neither kept it forever, and later navigations then read lazy\n * data as `undefined` (rendering nothing). A navigation is never hydration.\n */\nexport function endInitialHydration(): void {\n\ttry {\n\t\tdelete (globalThis as { __REROUTE_INITIAL_HYDRATION__?: boolean })\n\t\t\t.__REROUTE_INITIAL_HYDRATION__;\n\t} catch {}\n}\n\n/**\n * Whether a navigation scrolls to the top: always when asked, else only when\n * the page (pathname) changes. Rewriting the query of the page you're on\n * (a tab, a sort, a filter) keeps you where you are.\n */\nexport function shouldScrollOnNavigate(\n\tfromPathname: string,\n\ttoPathname: string,\n\tscroll?: boolean,\n): boolean {\n\treturn scroll ?? fromPathname !== toPathname;\n}\n\nfunction navigateInternal(to: string, options: NavigateOptions = {}) {\n\tif (!isBrowser) return;\n\tendInitialHydration();\n\n\tconst url = new URL(to, window.location.origin);\n\n\tif (url.origin !== window.location.origin) {\n\t\t// External link\n\t\twindow.location.href = to;\n\t\treturn;\n\t}\n\n\t// Another locale's page (i18n.prefixPages) loads as a document\n\tif (leavesLocale(url.pathname, window.location.pathname)) {\n\t\tcarryLocale(url.pathname, window.location.pathname);\n\t\twindow.location.assign(to);\n\t\treturn;\n\t}\n\n\tconst newPath = url.pathname + url.search + url.hash;\n\tconst currentPath =\n\t\twindow.location.pathname + window.location.search + window.location.hash;\n\n\tif (newPath === currentPath) return;\n\tconst scrollToTop = shouldScrollOnNavigate(\n\t\twindow.location.pathname,\n\t\turl.pathname,\n\t\toptions.scroll,\n\t);\n\n\t// Save current scroll position before navigating away\n\tif (scrollRestorationEnabled) {\n\t\tscrollPositions.set(currentPath, {\n\t\t\tx: window.scrollX,\n\t\t\ty: window.scrollY,\n\t\t});\n\t}\n\n\tif (options.replace) {\n\t\twindow.history.replaceState(options.state || null, '', to);\n\t} else {\n\t\twindow.history.pushState(options.state || null, '', to);\n\t}\n\n\tconst updateState = () => {\n\t\tcurrentLocation = {\n\t\t\tpathname: url.pathname,\n\t\t\tsearch: url.search,\n\t\t\thash: url.hash,\n\t\t};\n\t\temitChange();\n\t};\n\n\t// Only use view transitions if enabled AND page has named transition elements\n\tconst shouldUseViewTransition =\n\t\tviewTransitionsEnabled && hasViewTransitionNames();\n\n\tif (shouldUseViewTransition) {\n\t\tconst transition = document.startViewTransition(() => {\n\t\t\tflushSync(() => {\n\t\t\t\tupdateState();\n\t\t\t\t// For view transitions, adjust scroll inside the transition callback so\n\t\t\t\t// the old snapshot keeps its current scroll position while the new page\n\t\t\t\t// is captured at the desired position.\n\t\t\t\tif (url.hash) {\n\t\t\t\t\tconst immediate = document.querySelector(url.hash);\n\t\t\t\t\tif (immediate) {\n\t\t\t\t\t\timmediate.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet attempts = 0;\n\t\t\t\t\t\tconst maxAttempts = 10;\n\t\t\t\t\t\tconst tryScroll = () => {\n\t\t\t\t\t\t\tconst el = document.querySelector(url.hash);\n\t\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\t\tel.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t\t\t} else if (attempts < maxAttempts) {\n\t\t\t\t\t\t\t\tattempts++;\n\t\t\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t}\n\t\t\t\t} else if (scrollToTop) {\n\t\t\t\t\twindow.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tsettleTransition(transition);\n\t} else {\n\t\tupdateState();\n\t\t// Handle scrolling after the DOM updates (non-view-transition only)\n\t\trequestAnimationFrame(() => {\n\t\t\tif (url.hash) {\n\t\t\t\t// Try to scroll to the fragment with retries for slow-rendering components\n\t\t\t\tlet attempts = 0;\n\t\t\t\tconst maxAttempts = 10;\n\t\t\t\tconst tryScroll = () => {\n\t\t\t\t\tconst element = document.querySelector(url.hash);\n\t\t\t\t\tif (element) {\n\t\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t} else if (attempts < maxAttempts) {\n\t\t\t\t\t\tattempts++;\n\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\ttryScroll();\n\t\t\t} else if (scrollToTop) {\n\t\t\t\t// Scroll to top for a new page - happens after it renders\n\t\t\t\twindow.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * RouterProvider component that manages client-side routing with SSR support.\n * Uses React's useSyncExternalStore for proper hydration without mismatches.\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Router state management with history API\nfunction RouterProvider({\n\tchildren,\n\tlayouts = [],\n\tmatchRoute,\n\troutingPath = samePath,\n\tnotFoundRoutes = [],\n\tnotFound: NotFound,\n\tpathname = '/',\n\tsearchParams: ssrSearchParams,\n\tviewTransitions = true,\n\tscrollRestoration = true,\n}: RouterProviderProps) {\n\t// Set global view transitions and scroll restoration flags\n\tuseEffect(() => {\n\t\tsetViewTransitionsEnabled(viewTransitions);\n\t\tsetScrollRestorationEnabled(scrollRestoration);\n\t\t// Disable browser's automatic scroll restoration\n\t\tif (isBrowser && 'scrollRestoration' in window.history) {\n\t\t\twindow.history.scrollRestoration = 'manual';\n\t\t}\n\t}, [viewTransitions, scrollRestoration]);\n\t// Create stable server snapshot reference that never changes\n\tconst serverSnapshotRef = React.useRef<{\n\t\tpathname: string;\n\t\tsearch: string;\n\t\thash: string;\n\t} | null>(null);\n\n\tif (!serverSnapshotRef.current) {\n\t\tif (isBrowser) {\n\t\t\t// During hydration, point to the exact same object reference\n\t\t\t// that getSnapshot() returns so useSyncExternalStore doesn't\n\t\t\t// detect a mismatch and trigger a second render.\n\t\t\tserverSnapshotRef.current = currentLocation;\n\t\t} else {\n\t\t\t// During pure SSR, use the pathname and searchParams from props\n\t\t\t// Extract hash from pathname if present (e.g., \"/path#hash\")\n\t\t\tconst hIdx = pathname.indexOf('#');\n\t\t\tlet pathOnly = pathname;\n\t\t\tlet hash = '';\n\n\t\t\tif (hIdx !== -1) {\n\t\t\t\tpathOnly = pathname.slice(0, hIdx);\n\t\t\t\thash = pathname.slice(hIdx);\n\t\t\t}\n\n\t\t\t// Use provided searchParams if available, otherwise try to parse from pathname\n\t\t\tlet search = '';\n\t\t\tif (ssrSearchParams) {\n\t\t\t\tconst searchString = ssrSearchParams.toString();\n\t\t\t\tsearch = searchString ? `?${searchString}` : '';\n\t\t\t} else {\n\t\t\t\t// Fallback: extract search from pathname if present\n\t\t\t\tconst qIdx = pathOnly.indexOf('?');\n\t\t\t\tif (qIdx !== -1) {\n\t\t\t\t\tsearch = pathOnly.slice(qIdx);\n\t\t\t\t\tpathOnly = pathOnly.slice(0, qIdx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tserverSnapshotRef.current = { pathname: pathOnly, search, hash };\n\t\t}\n\t}\n\n\t// Return the same cached snapshot object every time\n\tconst getServerSnapshot = useCallback(() => serverSnapshotRef.current, []);\n\n\t// Use useSyncExternalStore for proper SSR hydration\n\tconst location =\n\t\tuseSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) ||\n\t\tcurrentLocation;\n\n\t// Initialize location on mount (client-side only)\n\t// Avoid emitting a change if nothing actually changed to prevent a redundant re-render after hydration\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\t\tconst next = {\n\t\t\tpathname: window.location.pathname,\n\t\t\tsearch: window.location.search,\n\t\t\thash: window.location.hash,\n\t\t};\n\t\tif (\n\t\t\tcurrentLocation.pathname !== next.pathname ||\n\t\t\tcurrentLocation.search !== next.search ||\n\t\t\tcurrentLocation.hash !== next.hash\n\t\t) {\n\t\t\tcurrentLocation = next;\n\t\t\temitChange();\n\t\t}\n\t}, []);\n\n\tconst target = useMemo(\n\t\t() => matchRoute(location.pathname),\n\t\t[location.pathname, matchRoute],\n\t);\n\n\tconst params = target?.params || {};\n\tconst searchParams = useMemo(\n\t\t() => new URLSearchParams(location.search),\n\t\t[location.search],\n\t);\n\n\tconst navigate = useCallback((to: string, options: NavigateOptions = {}) => {\n\t\tnavigateInternal(to, options);\n\t}, []);\n\n\t// Handle browser back/forward\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Navigation handling with prefetch\n\t\tconst handlePopState = () => {\n\t\t\tendInitialHydration();\n\t\t\tconst next = {\n\t\t\t\tpathname: window.location.pathname,\n\t\t\t\tsearch: window.location.search,\n\t\t\t\thash: window.location.hash,\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tconst w = window as Any;\n\t\t\t\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\t\t\t\tconst have = (w.__REROUTE_DATA__ as Any)[next.pathname];\n\t\t\t\t// Only prefetch for dynamic routes; static/content pages don't need it\n\t\t\t\tconst isDynamic = !!matchRoute?.(next.pathname)?.route?.isDynamic;\n\t\t\t\tif (isDynamic && have === undefined) {\n\t\t\t\t\tlet updated = false;\n\t\t\t\t\tconst fallback = setTimeout(() => {\n\t\t\t\t\t\tif (updated) return;\n\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t\tcurrentLocation = next;\n\t\t\t\t\t\temitChange();\n\t\t\t\t\t}, 250);\n\t\t\t\t\tfetch(routeDataUrl(next.pathname), {\n\t\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\t})\n\t\t\t\t\t\t.then(readRouteAnswer)\n\t\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Data fetching with caching\n\t\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst payload = j ? (j.data ?? j) : undefined;\n\t\t\t\t\t\t\t\tif (payload !== undefined) {\n\t\t\t\t\t\t\t\t\t// Check if this is a multi-source response (layout + route)\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\tpayload.__reroute_multiple__ === true\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// Multiple data sources: populate each at its specific key\n\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t\t\t\t\t\t\t// Check if this value needs flattening\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t(value as Any).__flatten__\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\t\t// Flatten this nested object\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor (const [subKey, subValue] of Object.entries(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue as Record<string, unknown>,\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\t\tif (subKey !== '__flatten__') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Store all values including lazy markers,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// never over data already loaded\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[subKey],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubValue,\n\t\t\t\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\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[subKey] = subValue;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(subKey);\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\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\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\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\ttry {\n\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: { keys },\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} catch {}\n\t\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\t(payload.__reroute_flattened__ === true ||\n\t\t\t\t\t\t\t\t\t\t\tpayload.__flatten__ === true)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// Flatten: populate each key individually\n\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tkey !== '__reroute_flattened__' &&\n\t\t\t\t\t\t\t\t\t\t\t\tkey !== '__flatten__'\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Store all values including lazy markers (never over\n\t\t\t\t\t\t\t\t\t\t\t\t// loaded data); useData fetches lazy markers on demand\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload((w.__REROUTE_DATA__ as Any)[key], value)\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\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\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\t// Also store at pathname, unless the page's own data sits there\n\t\t\t\t\t\t\t\t\t\t// (`/` answers `{ '/': … }`; see storeAndDispatchData)\n\t\t\t\t\t\t\t\t\t\tconst ownKey = keys.includes(next.pathname);\n\t\t\t\t\t\t\t\t\t\tif (!ownKey)\n\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[next.pathname] = payload;\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys: ownKey ? keys : [...keys, next.pathname],\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}),\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// Single key response\n\t\t\t\t\t\t\t\t\t\t// Check if this single response needs flattening\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\t\t(payload as Any).__flatten__ === true\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t// Flatten this data into individual keys\n\t\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (key !== '__flatten__') {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\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\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\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\t// Also store at pathname, unless the page's own data sits there\n\t\t\t\t\t\t\t\t\t\t\tconst ownKey = keys.includes(next.pathname);\n\t\t\t\t\t\t\t\t\t\t\tif (!ownKey)\n\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[next.pathname] = payload;\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys: ownKey ? keys : [...keys, next.pathname],\n\t\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\t}),\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 {}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t// Regular single key response\n\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[next.pathname] = payload;\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: { key: next.pathname },\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);\n\t\t\t\t\t\t\t\t\t\t\t} catch {}\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} catch {}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {})\n\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\tif (!updated) {\n\t\t\t\t\t\t\t\tclearTimeout(fallback);\n\t\t\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t\t\t\tcurrentLocation = next;\n\t\t\t\t\t\t\t\temitChange();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\treturn; // we'll update after prefetch or fallback timer\n\t\t\t\t}\n\t\t\t} catch {}\n\n\t\t\tconst updateState = () => {\n\t\t\t\tcurrentLocation = next;\n\t\t\t\temitChange();\n\t\t\t};\n\n\t\t\t// Only use view transitions if enabled AND page has named transition elements\n\t\t\tconst shouldUseViewTransition =\n\t\t\t\tviewTransitionsEnabled && hasViewTransitionNames();\n\n\t\t\tif (shouldUseViewTransition) {\n\t\t\t\tsettleTransition(\n\t\t\t\t\t(document as Any).startViewTransition(() => {\n\t\t\t\t\t\tflushSync(() => {\n\t\t\t\t\t\t\tupdateState();\n\t\t\t\t\t\t});\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tupdateState();\n\t\t\t}\n\n\t\t\t// Restore scroll position for back/forward navigation\n\t\t\tif (scrollRestorationEnabled) {\n\t\t\t\tconst nextPath = next.pathname + next.search + next.hash;\n\t\t\t\tconst savedPosition = scrollPositions.get(nextPath);\n\n\t\t\t\t// Wait for DOM to settle and view transition to complete\n\t\t\t\tconst restoreScroll = () => {\n\t\t\t\t\tif (next.hash) {\n\t\t\t\t\t\t// Handle hash navigation\n\t\t\t\t\t\tconst element = document.querySelector(next.hash);\n\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth' });\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (savedPosition) {\n\t\t\t\t\t\t// Restore saved scroll position\n\t\t\t\t\t\twindow.scrollTo({\n\t\t\t\t\t\t\ttop: savedPosition.y,\n\t\t\t\t\t\t\tleft: savedPosition.x,\n\t\t\t\t\t\t\tbehavior: 'instant',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t// If no saved position and no hash, keep current scroll (don't reset to top)\n\t\t\t\t};\n\n\t\t\t\tif (shouldUseViewTransition) {\n\t\t\t\t\t// Double rAF to ensure view transition has started rendering\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\trequestAnimationFrame(restoreScroll);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\trequestAnimationFrame(restoreScroll);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener('popstate', handlePopState);\n\t\treturn () => window.removeEventListener('popstate', handlePopState);\n\t}, [matchRoute]);\n\n\t// Apply route-level meta/ssr if exported by the route module (non-content pages)\n\tuseEffect(() => {\n\t\tconst route: Any = target?.route as Any;\n\t\tif (!route) return;\n\t\ttry {\n\t\t\tif (route.meta) applyPageMeta(route.meta);\n\t\t} catch {}\n\n\t\t// The page on screen (the `pathname` prop is the one the server rendered)\n\t\tconst onScreen = () => window.location.pathname + window.location.search;\n\n\t\t// Apply immediately (will skip if no data available)\n\t\tapplyRouteHeadAndLang(onScreen(), matchRoute);\n\n\t\t// Listen for data updates and re-apply head when data becomes available\n\t\tconst handleDataUpdate = (e: Event) => {\n\t\t\tconst detail = (e as CustomEvent).detail as Any;\n\t\t\tconst keys: string[] = Array.isArray(detail?.keys)\n\t\t\t\t? detail.keys\n\t\t\t\t: detail?.key\n\t\t\t\t\t? [detail.key]\n\t\t\t\t\t: [];\n\t\t\tconst currentPathname = onScreen();\n\n\t\t\t// Check if any key matches the current pathname\n\t\t\tconst shouldApply =\n\t\t\t\tkeys.length === 0 ||\n\t\t\t\tkeys.includes(currentPathname) ||\n\t\t\t\tkeys.some((k) => currentPathname.startsWith(k));\n\n\t\t\t// If this event is for our current pathname, re-apply head\n\t\t\tif (shouldApply) {\n\t\t\t\tapplyRouteHeadAndLang(currentPathname, matchRoute);\n\t\t\t}\n\t\t};\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.addEventListener(\n\t\t\t\t'__reroute_data__' as Any,\n\t\t\t\thandleDataUpdate as Any,\n\t\t\t);\n\t\t}\n\n\t\treturn () => {\n\t\t\t// Clear previously injected route-level head items\n\t\t\tapplyRouteHead(undefined);\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\twindow.removeEventListener(\n\t\t\t\t\t'__reroute_data__' as Any,\n\t\t\t\t\thandleDataUpdate as Any,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t}, [target, matchRoute]);\n\n\tconst notFoundResolver = useCallback(\n\t\t(pathname: string) => {\n\t\t\ttry {\n\t\t\t\t// Choose the most specific notFound whose pattern is a prefix of pathname\n\t\t\t\tconst list = Array.isArray(notFoundRoutes)\n\t\t\t\t\t? (notFoundRoutes as Any[])\n\t\t\t\t\t: [];\n\t\t\t\tlet chosen: Any | undefined;\n\t\t\t\tlet bestLen = -1;\n\t\t\t\tfor (const nf of list) {\n\t\t\t\t\tconst pat = String(nf?.pattern || '/');\n\t\t\t\t\tif (!pathname.startsWith(pat)) continue;\n\t\t\t\t\tconst len = pat.split('/').filter(Boolean).length;\n\t\t\t\t\tif (len >= bestLen) {\n\t\t\t\t\t\tbestLen = len;\n\t\t\t\t\t\tchosen = nf;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn chosen?.component as Any | undefined;\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t\t[notFoundRoutes],\n\t);\n\n\tconst contextValue = useMemo<RouterContextFactory>(\n\t\t() =>\n\t\t\t({\n\t\t\t\tpathname: location.pathname,\n\t\t\t\troutingPathname: routingPath(location.pathname),\n\t\t\t\tparams,\n\t\t\t\tsearchParams,\n\t\t\t\tnavigate,\n\t\t\t\ttarget,\n\t\t\t\tmatchRoute,\n\t\t\t\tnotFoundResolver,\n\t\t\t}) as Any,\n\t\t[\n\t\t\tlocation.pathname,\n\t\t\troutingPath,\n\t\t\tparams,\n\t\t\tsearchParams,\n\t\t\tnavigate,\n\t\t\ttarget,\n\t\t\tmatchRoute,\n\t\t\tnotFoundResolver,\n\t\t],\n\t);\n\n\t// Find matching layouts for the current pathname\n\tconst matchingLayouts = useMemo(() => {\n\t\treturn layouts\n\t\t\t.filter((layout: Any) =>\n\t\t\t\tlayoutWraps(\n\t\t\t\t\tlayout,\n\t\t\t\t\troutingPath(location.pathname),\n\t\t\t\t\ttarget?.route.pattern,\n\t\t\t\t),\n\t\t\t)\n\t\t\t.sort((a: Any, b: Any) => {\n\t\t\t\t// Sort by depth (shallow first) since we wrap from innermost to outermost\n\t\t\t\t// This ensures root layouts are outermost, specific layouts are innermost\n\t\t\t\treturn (\n\t\t\t\t\ta.pattern.split('/').filter(Boolean).length -\n\t\t\t\t\tb.pattern.split('/').filter(Boolean).length\n\t\t\t\t);\n\t\t\t});\n\t}, [layouts, location.pathname, routingPath, target]);\n\n\tlet content: ReactNode;\n\n\tif (target) {\n\t\tconst Component = target.route.component;\n\t\tlet outletContent: ReactNode = <Component />;\n\n\t\t// Build layout hierarchy from innermost to outermost\n\t\tfor (let i = matchingLayouts.length - 1; i >= 0; i--) {\n\t\t\tconst Layout = matchingLayouts[i].component;\n\t\t\tconst pattern = String(matchingLayouts[i].pattern || '/');\n\t\t\tconst currentOutlet = outletContent;\n\t\t\toutletContent = (\n\t\t\t\t<LayoutPatternContext.Provider value={pattern}>\n\t\t\t\t\t<OutletContext.Provider value={currentOutlet}>\n\t\t\t\t\t\t<Layout />\n\t\t\t\t\t</OutletContext.Provider>\n\t\t\t\t</LayoutPatternContext.Provider>\n\t\t\t);\n\t\t}\n\n\t\tcontent = outletContent;\n\t} else {\n\t\tconst Fallback =\n\t\t\t(notFoundResolver(routingPath(location.pathname)) as Any) || NotFound;\n\t\tif (Fallback) {\n\t\t\tcontent = <Fallback />;\n\t\t} else {\n\t\t\tcontent = (\n\t\t\t\t<div style={{ padding: '2rem', textAlign: 'center' }}>\n\t\t\t\t\t<h1>404 - Page Not Found</h1>\n\t\t\t\t\t<p>The page {location.pathname} could not be found.</p>\n\t\t\t\t\t<a href='/'>Go Home</a>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t<RouterContext.Provider value={contextValue}>\n\t\t\t{children || content}\n\t\t</RouterContext.Provider>\n\t);\n}\n\nexport { LayoutPatternContext, OutletContext, RouterContext, RouterProvider };\n",
|
|
21
21
|
"/**\n * Whether a layout at `pattern` wraps `pathname`: the path is the pattern or\n * below it, segment by segment (`/a` wraps `/a/x`, never `/auth`). The\n * server's `layoutCovers` in reroute-js/core is the same rule.\n */\nexport function layoutCovers(pattern: string, pathname: string): boolean {\n\tconst base = pattern.replace(/\\/+$/, '');\n\tif (base === '') return true;\n\treturn pathname === base || pathname.startsWith(`${base}/`);\n}\n\n/**\n * Whether `layout` wraps the page at `pathname`, whose route is\n * `routePattern`. A layout inside a route group lists its `routes` and wraps\n * only those; any other layout wraps everything under its URL. The server's\n * `layoutWraps` in reroute-js/core is the same rule.\n */\nexport function layoutWraps(\n\tlayout: { pattern?: unknown; routes?: readonly string[] },\n\tpathname: string,\n\troutePattern: string | undefined,\n): boolean {\n\tif (Array.isArray(layout.routes)) {\n\t\treturn routePattern !== undefined && layout.routes.includes(routePattern);\n\t}\n\treturn layoutCovers(String(layout.pattern || '/'), pathname);\n}\n",
|
|
22
22
|
"import { useMemo } from 'react';\nimport { useRouter } from './useRouter';\n\nexport interface FeedInfo {\n\t/** URL of the specific feed for current route/collection (null if none) */\n\tfeedUrl: string | null;\n\t/** Main feed URL (always available) */\n\tmainFeedUrl: string;\n\t/** Collection name if current route is in a collection */\n\tcollection: string | null;\n\t/** Whether current route has a specific feed */\n\thasFeed: boolean;\n}\n\n/**\n * Get RSS feed information for the current route\n *\n * @example\n * ```tsx\n * import { useFeed } from 'reroute-js/react';\n *\n * function Header() {\n * const feed = useFeed();\n *\n * return (\n * <header>\n * {feed.feedUrl && (\n * <a href={feed.feedUrl} target=\"_blank\">\n * Subscribe to feed\n * </a>\n * )}\n * <a href={feed.mainFeedUrl}>Main RSS Feed</a>\n * </header>\n * );\n * }\n * ```\n *\n * @remarks\n * This hook intelligently detects which RSS feeds actually exist on your site.\n * It returns the route-specific feed URL if available (e.g., `/blog/feed.xml`),\n * or falls back to the main feed (`/feed.xml`) if the current route doesn't have one.\n */\nexport function useFeed(): FeedInfo {\n\tconst { pathname } = useRouter();\n\n\treturn useMemo(() => {\n\t\t// Get available feeds from SSR-injected global (works in both SSR and client)\n\t\tconst availableFeeds: string[] =\n\t\t\ttypeof globalThis !== 'undefined'\n\t\t\t\t? (\n\t\t\t\t\t\tglobalThis as {\n\t\t\t\t\t\t\t__REROUTE_AVAILABLE_FEEDS__?: string[];\n\t\t\t\t\t\t\t__REROUTE_FEEDS__?: string[];\n\t\t\t\t\t\t}\n\t\t\t\t\t).__REROUTE_AVAILABLE_FEEDS__ ||\n\t\t\t\t\t(globalThis as { __REROUTE_FEEDS__?: string[] }).__REROUTE_FEEDS__ ||\n\t\t\t\t\t[]\n\t\t\t\t: [];\n\n\t\t// Parse pathname to determine collection or route\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\n\t\t// Default values\n\t\tconst mainFeedUrl = '/feed.xml';\n\t\tlet feedUrl: string | null = null;\n\t\tlet collection: string | null = null;\n\n\t\tif (parts.length > 0) {\n\t\t\t// First segment might be a collection or route with a feed\n\t\t\tconst segment = parts[0];\n\t\t\tconst potentialFeedUrl = `/${segment}/feed.xml`;\n\n\t\t\t// Only return this feed URL if it actually exists\n\t\t\t// If availableFeeds is empty (SSR before feeds registered), default to main feed for safety\n\t\t\tif (\n\t\t\t\tavailableFeeds.length > 0 &&\n\t\t\t\tavailableFeeds.includes(potentialFeedUrl)\n\t\t\t) {\n\t\t\t\tcollection = segment;\n\t\t\t\tfeedUrl = potentialFeedUrl;\n\t\t\t} else {\n\t\t\t\t// Fall back to main feed\n\t\t\t\tfeedUrl = mainFeedUrl;\n\t\t\t}\n\t\t} else {\n\t\t\t// Home page - feedUrl is the main feed\n\t\t\tfeedUrl = mainFeedUrl;\n\t\t}\n\n\t\tconst hasFeed = feedUrl !== null;\n\n\t\treturn {\n\t\t\tfeedUrl,\n\t\t\tmainFeedUrl,\n\t\t\tcollection,\n\t\t\thasFeed,\n\t\t};\n\t}, [pathname]);\n}\n",
|
|
23
23
|
"import { useContext, useEffect, useMemo, useState } from 'react';\nimport { readRouteAnswer } from '../lib/head';\nimport { routeDataUrl } from '../lib/static-data';\nimport { LayoutPatternContext } from '../providers/RouterProvider';\nimport type { Any } from '../types/any';\nimport { useRouter } from './useRouter';\n\nconst isThenable = (value: unknown): value is Promise<unknown> => {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\ttypeof (value as { then?: unknown }).then === 'function'\n\t);\n};\n\n/**\n * Check if we're in the initial hydration phase.\n * During initial hydration, we should not throw Suspense promises\n * as the SSR data should already be available.\n */\nconst isInitialHydration = (): boolean => {\n\ttry {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: dynamic global access\n\t\tconst g = globalThis as any;\n\t\treturn !!g.__REROUTE_INITIAL_HYDRATION__;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\n/**\n * Where a layout's data lives. Inside a layout (the router says which) it is\n * exactly `__layout:<pattern>`: while that loads the data is undefined, never\n * another layout's. Outside one, the first path segment's layout, falling\n * back to the root's.\n */\nexport function layoutDataKey(\n\tpattern: string | null,\n\tpathname: string,\n): { key: string; exact: boolean } {\n\tif (pattern !== null) return { key: `__layout:${pattern}`, exact: true };\n\tconst first = pathname.split('/').filter(Boolean)[0];\n\treturn { key: first ? `__layout:/${first}` : '__layout:/', exact: false };\n}\n\n/**\n * Read SSR-seeded layout data.\n * - On server: reads from globalThis.__REROUTE_DATA__['__layout:pattern']\n * - On client: reads from window.__REROUTE_DATA__['__layout:pattern']\n *\n * Automatically determines the layout key based on current pathname.\n */\nexport function useLayoutData<T = unknown>(): T | undefined {\n\tconst { pathname } = useRouter();\n\tconst pattern = useContext(LayoutPatternContext);\n\tconst [_tick, setTick] = useState(0);\n\tconst { key: layoutKey, exact } = useMemo(\n\t\t() => layoutDataKey(pattern, pathname),\n\t\t[pattern, pathname],\n\t);\n\n\t// Client-side hooks\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return;\n\t\tconst handler = (e: Event) => {\n\t\t\ttry {\n\t\t\t\tconst detail = (e as CustomEvent).detail as Any;\n\t\t\t\tconst keys: string[] = Array.isArray(detail?.keys)\n\t\t\t\t\t? detail.keys\n\t\t\t\t\t: detail?.key\n\t\t\t\t\t\t? [detail.key]\n\t\t\t\t\t\t: [];\n\t\t\t\tif (keys.length > 0 && !keys.includes(layoutKey)) return;\n\t\t\t\tsetTick((x) => x + 1);\n\t\t\t} catch {}\n\t\t};\n\t\twindow.addEventListener('__reroute_data__' as Any, handler as Any);\n\t\treturn () => {\n\t\t\ttry {\n\t\t\t\twindow.removeEventListener('__reroute_data__' as Any, handler as Any);\n\t\t\t} catch {}\n\t\t};\n\t}, [layoutKey]);\n\n\t// Client fallback: if there is no layout data for this key after SPA navigation,\n\t// lazily fetch it from the server once by fetching the pathname\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Layout data fetching with caching\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return;\n\t\ttry {\n\t\t\tconst w = window as Any;\n\t\t\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\n\t\t\t// Check if pathname holds a __reroute_multiple__ object that needs unpacking\n\t\t\tconst pathnameValue = (w.__REROUTE_DATA__ as Any)[pathname];\n\t\t\tif (\n\t\t\t\tpathnameValue &&\n\t\t\t\ttypeof pathnameValue === 'object' &&\n\t\t\t\tpathnameValue.__reroute_multiple__ === true\n\t\t\t) {\n\t\t\t\t// Unpack the multiple sources into individual keys\n\t\t\t\tfor (const [key, value] of Object.entries(pathnameValue)) {\n\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Remove the packed version\n\t\t\t\tdelete (w.__REROUTE_DATA__ as Any)[pathname];\n\t\t\t\t// Trigger re-render\n\t\t\t\tsetTick((x) => x + 1);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If layout key already exists, no need to fetch\n\t\t\tif ((w.__REROUTE_DATA__ as Any)[layoutKey] !== undefined) return;\n\n\t\t\t// Fetch the current pathname to get all data including layout\n\t\t\tconst pathToFetch = pathname;\n\n\t\t\t// Deduplicate concurrent fetches for the same path\n\t\t\tw.__REROUTE_DATA_PENDING__ = w.__REROUTE_DATA_PENDING__ || ({} as Any);\n\t\t\tconst pending = w.__REROUTE_DATA_PENDING__;\n\t\t\tif (pending[pathToFetch]) {\n\t\t\t\t// Another hook is already fetching this path, wait for it\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpending[pathToFetch] = true;\n\n\t\t\tfetch(routeDataUrl(pathToFetch), {\n\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\tcredentials: 'same-origin',\n\t\t\t})\n\t\t\t\t.then(readRouteAnswer)\n\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response parsing and state updates\n\t\t\t\t.then((j) => {\n\t\t\t\t\tif (!j) return;\n\t\t\t\t\tconst payload = j.data ?? j;\n\n\t\t\t\t\t// Check if this is a multi-source response (layout + route)\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\tpayload.__reroute_multiple__ === true\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Multiple data sources: populate each at its specific key\n\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Notify all affected keys\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { keys },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Single key response - store at pathname\n\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[pathToFetch] = payload;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { key: pathToFetch },\n\t\t\t\t\t\t\t\t}) as Any,\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\t// Force a local re-render\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsetTick((x) => x + 1);\n\t\t\t\t\t} catch {}\n\t\t\t\t})\n\t\t\t\t.catch(() => {})\n\t\t\t\t.finally(() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tdelete (w.__REROUTE_DATA_PENDING__ as Any)[pathToFetch];\n\t\t\t\t\t} catch {}\n\t\t\t\t});\n\t\t} catch {}\n\t}, [layoutKey, pathname]);\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Pagination state management\n\treturn useMemo(() => {\n\t\ttry {\n\t\t\t_tick;\n\t\t\tconst source =\n\t\t\t\ttypeof window === 'undefined'\n\t\t\t\t\t? ((globalThis as Any).__REROUTE_DATA__ as Record<string, unknown>)\n\t\t\t\t\t: ((window as Any).__REROUTE_DATA__ as Record<string, unknown>);\n\n\t\t\t// This layout's own data (or, outside a layout, the path's)\n\t\t\tlet value = source?.[layoutKey] as T | Promise<T> | undefined;\n\n\t\t\t// Outside a layout, a path without its own layout data uses the root's\n\t\t\tif (value === undefined && !exact && layoutKey !== '__layout:/') {\n\t\t\t\tvalue = source?.['__layout:/'] as T | Promise<T> | undefined;\n\t\t\t}\n\n\t\t\t// Check if this is a lazy marker\n\t\t\tif (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\tvalue !== null &&\n\t\t\t\t(value as Any).__lazy__ === true\n\t\t\t) {\n\t\t\t\t// During initial hydration, return undefined to avoid skeleton flash\n\t\t\t\tif (isInitialHydration()) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst fetchUrl = (value as Any).__fetch__;\n\t\t\t\tif (typeof fetchUrl === 'string' && typeof window !== 'undefined') {\n\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\t// Deduplicate fetches\n\t\t\t\t\tw.__REROUTE_LAZY_PENDING__ = w.__REROUTE_LAZY_PENDING__ || {};\n\t\t\t\t\tconst pending = w.__REROUTE_LAZY_PENDING__;\n\n\t\t\t\t\tif (!pending[layoutKey]) {\n\t\t\t\t\t\t// Start fetch and throw the promise\n\t\t\t\t\t\tconst fetchPromise = fetch(fetchUrl, {\n\t\t\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.then(readRouteAnswer)\n\t\t\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\t\t\tif (j) {\n\t\t\t\t\t\t\t\t\tconst payload = j.data ?? j;\n\t\t\t\t\t\t\t\t\t// Store the resolved data\n\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[layoutKey] = payload;\n\t\t\t\t\t\t\t\t\t// Notify\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\tdetail: { key: layoutKey },\n\t\t\t\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn j?.data;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\t\tdelete pending[layoutKey];\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tpending[layoutKey] = fetchPromise;\n\t\t\t\t\t\tthrow fetchPromise; // Trigger Suspense\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Re-throw the pending promise\n\t\t\t\t\t\tthrow pending[layoutKey];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Fallback: treat as undefined\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// During initial hydration, don't throw promises to avoid skeleton flash\n\t\t\tif (isThenable(value)) {\n\t\t\t\tif (isInitialHydration()) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tthrow value;\n\t\t\t}\n\t\t\treturn value as T | undefined;\n\t\t} catch (error) {\n\t\t\t// Re-throw promises for React Suspense\n\t\t\tif (isThenable(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t}, [layoutKey, exact, _tick]);\n}\n",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"import { useContext } from 'react';\nimport { OutletContext } from '../providers';\n\n/**\n * Outlet component for rendering nested routes within layouts.\n * Must be used within a layout component that's rendered by RouterProvider.\n */\nfunction Outlet() {\n\tconst outletContent = useContext(OutletContext);\n\treturn <>{outletContent}</>;\n}\n\nexport { Outlet };\n",
|
|
34
34
|
"import type { Any } from '../types/any';\n\nexport interface SearchHeading {\n\tlevel: number;\n\ttext: string;\n\tslug: string;\n}\n\nexport interface CollectionSearchResult {\n\ttotal: number;\n\tpage: number;\n\tpageSize: number;\n\ttotalPages: number;\n\tresults: Array<{\n\t\tid: string;\n\t\tcollection: string;\n\t\tslug: string;\n\t\thref: string;\n\t\ttitle: string;\n\t\texcerpt?: string;\n\t\t/** Headings that matched the search query */\n\t\tmatchedHeadings?: SearchHeading[];\n\t}>;\n}\n\n/**\n * Search content collections during SSR\n *\n * Loads the search index and performs search during SSR.\n * Returns null if no query or no results.\n *\n * @example\n * ```tsx\n * import { collectionSearch } from 'reroute-js/react';\n *\n * const ssr = {\n * async data({ searchParams }) {\n * return await collectionSearch({ searchParams });\n * }\n * };\n * ```\n */\nexport async function collectionSearch(options: {\n\tsearchParams?: URLSearchParams;\n\tpage?: number;\n\tpageSize?: number;\n}): Promise<CollectionSearchResult | null> {\n\tconst { searchParams, page = 1, pageSize = 20 } = options;\n\tconst query = searchParams?.get('q');\n\n\tif (!query) return null;\n\n\ttry {\n\t\t// Load search index directly during SSR\n\t\tconst { join } = await import('node:path');\n\t\tconst cwd =\n\t\t\ttypeof process !== 'undefined' && typeof process.cwd === 'function'\n\t\t\t\t? process.cwd()\n\t\t\t\t: '/';\n\t\tconst indexPath = join(cwd, '.reroute', 'search.json');\n\n\t\tconst file = Bun.file(indexPath);\n\t\tif (!(await file.exists())) return null;\n\n\t\tconst indexData = JSON.parse(await file.text());\n\t\tconst entries = indexData.entries || [];\n\n\t\t// Parse search terms\n\t\tconst terms = query\n\t\t\t.toLowerCase()\n\t\t\t.split(/\\s+/)\n\t\t\t.filter((t: string) => t.length > 1);\n\t\tif (terms.length === 0) return null;\n\n\t\t// Parse collection filter\n\t\tconst collectionsFilter = searchParams\n\t\t\t?.get('collections')\n\t\t\t?.split(',')\n\t\t\t.filter(Boolean);\n\n\t\t// Score and rank entries\n\t\tconst scored = entries\n\t\t\t.filter((entry: Any) => {\n\t\t\t\tif (collectionsFilter && collectionsFilter.length > 0) {\n\t\t\t\t\treturn collectionsFilter.includes(entry.collection);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t})\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Collection management with caching and filtering\n\t\t\t.map((entry: Any) => {\n\t\t\t\tlet score = 0;\n\t\t\t\tconst matchedHeadings: SearchHeading[] = [];\n\n\t\t\t\tfor (const term of terms) {\n\t\t\t\t\t// Title match (highest weight)\n\t\t\t\t\tif (entry.title.toLowerCase().includes(term)) {\n\t\t\t\t\t\tscore += 10;\n\t\t\t\t\t\tif (entry.title.toLowerCase() === term) score += 20;\n\t\t\t\t\t}\n\t\t\t\t\t// Heading matches - also collect matched headings\n\t\t\t\t\tfor (const heading of entry.headings || []) {\n\t\t\t\t\t\tif (heading.text.toLowerCase().includes(term)) {\n\t\t\t\t\t\t\tscore += 5;\n\t\t\t\t\t\t\t// Only add each heading once\n\t\t\t\t\t\t\tif (!matchedHeadings.some((h) => h.slug === heading.slug)) {\n\t\t\t\t\t\t\t\tmatchedHeadings.push({\n\t\t\t\t\t\t\t\t\tlevel: heading.level,\n\t\t\t\t\t\t\t\t\ttext: heading.text,\n\t\t\t\t\t\t\t\t\tslug: heading.slug,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Meta field matches\n\t\t\t\t\tfor (const value of Object.values(entry.meta || {})) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof value === 'string' &&\n\t\t\t\t\t\t\tvalue.toLowerCase().includes(term)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tscore += 3;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Content match (if indexed)\n\t\t\t\t\tif (entry.content?.toLowerCase().includes(term)) {\n\t\t\t\t\t\tscore += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn { entry, score, matchedHeadings };\n\t\t\t})\n\t\t\t.filter((item: Any) => item.score > 0)\n\t\t\t.sort((a: Any, b: Any) => b.score - a.score);\n\n\t\t// Calculate pagination\n\t\tconst total = scored.length;\n\t\tconst startIndex = (page - 1) * pageSize;\n\t\tconst endIndex = startIndex + pageSize;\n\t\tconst paginatedScored = scored.slice(startIndex, endIndex);\n\t\tconst totalPages = Math.ceil(total / pageSize);\n\n\t\t// Map to concise result format\n\t\tconst results = paginatedScored.map((item: Any) => ({\n\t\t\tid: item.entry.id,\n\t\t\tcollection: item.entry.collection,\n\t\t\tslug: item.entry.slug,\n\t\t\thref: item.entry.href,\n\t\t\ttitle: item.entry.title,\n\t\t\texcerpt:\n\t\t\t\titem.entry.excerpt ||\n\t\t\t\tString(\n\t\t\t\t\titem.entry.meta.excerpt || item.entry.meta.description || '',\n\t\t\t\t).slice(0, 160),\n\t\t\tmatchedHeadings: item.matchedHeadings,\n\t\t}));\n\n\t\treturn {\n\t\t\ttotal,\n\t\t\tpage,\n\t\t\tpageSize,\n\t\t\ttotalPages,\n\t\t\tresults,\n\t\t};\n\t} catch (error) {\n\t\tconsole.error('[serverSearch] Error:', error);\n\t\treturn null;\n\t}\n}\n"
|
|
35
35
|
],
|
|
36
|
-
"mappings": "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",
|
|
37
|
-
"debugId": "
|
|
36
|
+
"mappings": "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",
|
|
37
|
+
"debugId": "538C9CF2568B4E8964756E2164756E21",
|
|
38
38
|
"names": []
|
|
39
39
|
}
|