@absolutejs/absolute 0.20.0-beta.174 → 0.20.0-beta.175

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.
Files changed (84) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/changelog.json +60 -0
  3. package/dist/angular/browser.js +13 -2
  4. package/dist/angular/browser.js.map +3 -3
  5. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  6. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  7. package/dist/angular/index.js +67 -8
  8. package/dist/angular/index.js.map +10 -8
  9. package/dist/angular/server.js +67 -8
  10. package/dist/angular/server.js.map +10 -8
  11. package/dist/build.js +312 -119
  12. package/dist/build.js.map +20 -18
  13. package/dist/cli/{compile-n6fs2vmx.js → compile-w2z6c9vt.js} +1 -1
  14. package/dist/cli/{dev-6h1f0mzq.js → dev-8br5mr7t.js} +16 -2
  15. package/dist/cli/{index-mqevg32w.js → index-6522t968.js} +21 -2
  16. package/dist/cli/{index-bhyd3ejc.js → index-7z1hh3fg.js} +1 -1
  17. package/dist/cli/index.js +6 -6
  18. package/dist/cli/{islands-vk05sj6v.js → islands-bx67g15t.js} +4 -4
  19. package/dist/cli/{mobile-62b6j3j7.js → mobile-we5q51ey.js} +2 -2
  20. package/dist/cli/{start-jh6kyp92.js → start-srs11bm8.js} +2 -2
  21. package/dist/client/chunks/index-4j1snyh2.js +18 -0
  22. package/dist/client/chunks/index-4j1snyh2.js.map +10 -0
  23. package/dist/client/chunks/{index-6b66nzyf.js → index-a3rpg5kw.js} +6 -16
  24. package/dist/client/chunks/{index-6b66nzyf.js.map → index-a3rpg5kw.js.map} +3 -4
  25. package/dist/client/chunks/{islands-s2ta5ajb.js → islands-mfjmdwnb.js} +11 -4
  26. package/dist/client/chunks/{islands-s2ta5ajb.js.map → islands-mfjmdwnb.js.map} +3 -3
  27. package/dist/client/chunks/{react-dcvkaba2.js → react-sprprqzs.js} +20 -4
  28. package/dist/client/chunks/react-sprprqzs.js.map +10 -0
  29. package/dist/client/chunks/svelte-6ewphsvj.js +30 -0
  30. package/dist/client/chunks/svelte-6ewphsvj.js.map +10 -0
  31. package/dist/client/chunks/{vue-a84fzp3v.js → vue-db6ppn1f.js} +14 -4
  32. package/dist/client/chunks/vue-db6ppn1f.js.map +10 -0
  33. package/dist/client/index.js +65 -8
  34. package/dist/client/index.js.map +4 -4
  35. package/dist/client/navigation.js +5 -3
  36. package/dist/client/navigation.js.map +2 -2
  37. package/dist/client/prefetch.js +1 -1
  38. package/dist/dev/client/handlers/islands.ts +85 -0
  39. package/dist/dev/client/hmrClient.ts +6 -0
  40. package/dist/index.js +448 -242
  41. package/dist/index.js.map +21 -19
  42. package/dist/islands/index.js +57 -10
  43. package/dist/islands/index.js.map +9 -7
  44. package/dist/react/browser.js +15 -4
  45. package/dist/react/browser.js.map +5 -5
  46. package/dist/react/components/client.js +506 -0
  47. package/dist/react/components/index.js +14 -15
  48. package/dist/react/components/index.js.map +4 -4
  49. package/dist/react/components/server/index.js +728 -0
  50. package/dist/react/hooks/index.js +14 -15
  51. package/dist/react/hooks/index.js.map +4 -4
  52. package/dist/react/index.js +66 -6
  53. package/dist/react/index.js.map +11 -9
  54. package/dist/react/router/browser.js +7 -8
  55. package/dist/react/router/browser.js.map +4 -4
  56. package/dist/react/router/index.js +7 -8
  57. package/dist/react/router/index.js.map +4 -4
  58. package/dist/react/server.js +14 -1
  59. package/dist/react/server.js.map +4 -4
  60. package/dist/src/build/buildReactServerComponents.d.ts +4 -0
  61. package/dist/src/build/islandEntries.d.ts +5 -0
  62. package/dist/src/client/hydrators/react.d.ts +7 -0
  63. package/dist/src/client/hydrators/svelte.d.ts +3 -0
  64. package/dist/src/client/hydrators/vue.d.ts +3 -0
  65. package/dist/src/client/preserveIslandMarkup.d.ts +5 -0
  66. package/dist/src/core/islandServerGeneration.d.ts +3 -0
  67. package/dist/src/react/components/client.d.ts +4 -0
  68. package/dist/src/react/components/server/index.d.ts +8 -0
  69. package/dist/src/react/serverComponents/constants.d.ts +2 -1
  70. package/dist/svelte/index.js +66 -6
  71. package/dist/svelte/index.js.map +10 -8
  72. package/dist/svelte/server.js +38 -3
  73. package/dist/svelte/server.js.map +6 -5
  74. package/dist/types/build.d.ts +3 -2
  75. package/dist/types/globals.d.ts +15 -0
  76. package/dist/vue/browser.js +26 -16
  77. package/dist/vue/browser.js.map +5 -5
  78. package/dist/vue/index.js +65 -21
  79. package/dist/vue/index.js.map +10 -9
  80. package/package.json +1 -1
  81. package/dist/client/chunks/react-dcvkaba2.js.map +0 -10
  82. package/dist/client/chunks/svelte-4yfa5bxa.js +0 -17
  83. package/dist/client/chunks/svelte-4yfa5bxa.js.map +0 -10
  84. package/dist/client/chunks/vue-a84fzp3v.js.map +0 -10
@@ -1,23 +1,22 @@
1
1
  // @bun
2
- // src/react/router/Link.tsx
3
- import {
4
- useContext
5
- } from "react";
6
-
7
2
  // src/dev/client/cspNonce.ts
8
3
  var applyPageNonce = (element) => {
9
4
  const nonce = readPageNonce();
10
5
  if (nonce)
11
6
  element.nonce = nonce;
12
7
  return element;
13
- };
14
- var readPageNonce = () => {
8
+ }, readPageNonce = () => {
15
9
  if (typeof document === "undefined")
16
10
  return;
17
11
  const carrier = document.querySelector("script[nonce], style[nonce]");
18
12
  return carrier?.nonce || undefined;
19
13
  };
20
14
 
15
+ // src/react/router/Link.tsx
16
+ import {
17
+ useContext
18
+ } from "react";
19
+
21
20
  // src/client/prefetch.ts
22
21
  var PREFETCH_CACHE_LIMIT = 16;
23
22
  var HOVER_DEBOUNCE_MS = 250;
@@ -569,5 +568,5 @@ export {
569
568
  usePrefetch
570
569
  };
571
570
 
572
- //# debugId=ACD953FCD3889D0664756E2164756E21
571
+ //# debugId=024A990FB016C43064756E2164756E21
573
572
  //# sourceMappingURL=browser.js.map
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/react/router/Link.tsx", "../src/dev/client/cspNonce.ts", "../src/client/prefetch.ts", "../src/react/hooks/usePrefetch.ts", "../src/react/router/navigationContext.ts", "../src/react/router/UniversalRouter.tsx"],
3
+ "sources": ["../src/dev/client/cspNonce.ts", "../src/react/router/Link.tsx", "../src/client/prefetch.ts", "../src/react/hooks/usePrefetch.ts", "../src/react/router/navigationContext.ts", "../src/react/router/UniversalRouter.tsx"],
4
4
  "sourcesContent": [
5
- "import {\n\ttype AnchorHTMLAttributes,\n\ttype FocusEvent,\n\ttype MouseEvent,\n\ttype PointerEvent,\n\ttype ReactNode,\n\tuseContext\n} from 'react';\nimport type { PrefetchMode } from '../../../types/prefetch';\nimport { isPrefetchableHref } from '../../client/prefetch';\nimport { usePrefetch } from '../hooks/usePrefetch';\nimport { RouterNavigationContext } from './navigationContext';\n\nexport type LinkProps = Omit<\n\tAnchorHTMLAttributes<HTMLAnchorElement>,\n\t'href' | 'children'\n> & {\n\t/** Destination URL — relative or absolute. */\n\thref: string;\n\t/** `'viewport'` (production default) — prefetch when the link enters\n\t * the viewport and on hover / pointerdown.\n\t * `'hover'` (development default) — prefetch on hover only.\n\t * `'none'` — disable prefetch for this link. */\n\tprefetch?: PrefetchMode;\n\t/** Also inject a prerender speculation rule on hover / pointerdown so\n\t * the target page is fully rendered before the click lands. */\n\tprerender?: boolean;\n\t/** Inside a `<UniversalRouter>`: use `history.replaceState` instead\n\t * of `pushState` for the client-side navigation. */\n\treplace?: boolean;\n\tchildren?: ReactNode;\n};\n\nconst isModifierClick = (event: MouseEvent<HTMLAnchorElement>) =>\n\tevent.metaKey || event.ctrlKey || event.shiftKey || event.altKey;\n\n/**\n * Prefetching anchor — the React counterpart of Next.js `<Link>`.\n *\n * Renders a plain `<a>`; for a same-origin `href` it prefetches the target\n * document when the link scrolls into view (production) and on hover /\n * focus / pointerdown (production + development), so the click resolves\n * from cache. Modifier / middle clicks, `target`, `download` and external\n * URLs pass straight through to the browser.\n *\n * Inside a `<UniversalRouter>` an `href` matching one of the shell's\n * `<Route>`s navigates client-side through react-router; anything else is\n * a real navigation to that page.\n *\n * import { Link } from '@absolutejs/absolute/react/components';\n * <Link href=\"/pricing\" prefetch=\"viewport\">Pricing</Link>\n *\n * `@absolutejs/absolute/react/router` exports the same component next to\n * `<UniversalRouter>`, so importing from it needs react-router installed;\n * `react/components` doesn't. Without a `<UniversalRouter>`, a click falls\n * through to the document, where `enableNavigation()` soft-navigates it.\n */\nexport const Link = ({\n\thref,\n\tprefetch: prefetchMode,\n\tprerender = false,\n\treplace = false,\n\ttarget,\n\tdownload,\n\tchildren,\n\tonBlur,\n\tonClick,\n\tonFocus,\n\tonPointerDown,\n\tonPointerEnter,\n\tonPointerLeave,\n\t...rest\n}: LinkProps) => {\n\tconst navigation = useContext(RouterNavigationContext);\n\tconst {\n\t\tref,\n\t\tonBlur: prefetchBlur,\n\t\tonFocus: prefetchFocus,\n\t\tonPointerDown: prefetchPointerDown,\n\t\tonPointerEnter: prefetchPointerEnter,\n\t\tonPointerLeave: prefetchPointerLeave\n\t} = usePrefetch<HTMLAnchorElement>(href, { mode: prefetchMode, prerender });\n\n\tconst handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n\t\tonClick?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tif (isModifierClick(event) || event.button !== 0) return;\n\t\tif (target && target !== '_self') return;\n\t\tif (download !== undefined) return;\n\t\tif (!navigation || !isPrefetchableHref(href)) return;\n\t\tif (navigation.matches(href) === false) return;\n\n\t\tevent.preventDefault();\n\t\tnavigation.navigate(href, { replace });\n\t};\n\n\tconst handlePointerEnter = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerEnter?.(event);\n\t\tprefetchPointerEnter();\n\t};\n\n\tconst handlePointerLeave = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerLeave?.(event);\n\t\tprefetchPointerLeave();\n\t};\n\n\tconst handlePointerDown = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerDown?.(event);\n\t\tprefetchPointerDown();\n\t};\n\n\tconst handleFocus = (event: FocusEvent<HTMLAnchorElement>) => {\n\t\tonFocus?.(event);\n\t\tprefetchFocus();\n\t};\n\n\tconst handleBlur = (event: FocusEvent<HTMLAnchorElement>) => {\n\t\tonBlur?.(event);\n\t\tprefetchBlur();\n\t};\n\n\treturn (\n\t\t<a\n\t\t\t{...rest}\n\t\t\tdownload={download}\n\t\t\thref={href}\n\t\t\tonBlur={handleBlur}\n\t\t\tonClick={handleClick}\n\t\t\tonFocus={handleFocus}\n\t\t\tonPointerDown={handlePointerDown}\n\t\t\tonPointerEnter={handlePointerEnter}\n\t\t\tonPointerLeave={handlePointerLeave}\n\t\t\tref={ref}\n\t\t\ttarget={target}\n\t\t>\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n",
6
5
  "/* The page's CSP nonce, read back in the browser from an element the server\n * gave it to. Browsers hide the attribute's value but keep the `nonce`\n * property, so a script that runs can hand the nonce to the <style>/<script>\n * elements it creates; a nonce-based policy blocks them otherwise. Without\n * secureHeaders() there is no nonce and this does nothing.\n *\n * Lives in the dev client because that ships as raw TypeScript and may only\n * import from its own directory; the bundled client runtime\n * (src/client/prefetch.ts) imports it from here. */\n\nexport const applyPageNonce = <Element extends HTMLElement>(\n\telement: Element\n) => {\n\tconst nonce = readPageNonce();\n\tif (nonce) element.nonce = nonce;\n\n\treturn element;\n};\n\nexport const readPageNonce = () => {\n\tif (typeof document === 'undefined') return undefined;\n\tconst carrier = document.querySelector<HTMLElement>(\n\t\t'script[nonce], style[nonce]'\n\t);\n\n\treturn carrier?.nonce || undefined;\n};\n",
6
+ "import {\n\ttype AnchorHTMLAttributes,\n\ttype FocusEvent,\n\ttype MouseEvent,\n\ttype PointerEvent,\n\ttype ReactNode,\n\tuseContext\n} from 'react';\nimport type { PrefetchMode } from '../../../types/prefetch';\nimport { isPrefetchableHref } from '../../client/prefetch';\nimport { usePrefetch } from '../hooks/usePrefetch';\nimport { RouterNavigationContext } from './navigationContext';\n\nexport type LinkProps = Omit<\n\tAnchorHTMLAttributes<HTMLAnchorElement>,\n\t'href' | 'children'\n> & {\n\t/** Destination URL — relative or absolute. */\n\thref: string;\n\t/** `'viewport'` (production default) — prefetch when the link enters\n\t * the viewport and on hover / pointerdown.\n\t * `'hover'` (development default) — prefetch on hover only.\n\t * `'none'` — disable prefetch for this link. */\n\tprefetch?: PrefetchMode;\n\t/** Also inject a prerender speculation rule on hover / pointerdown so\n\t * the target page is fully rendered before the click lands. */\n\tprerender?: boolean;\n\t/** Inside a `<UniversalRouter>`: use `history.replaceState` instead\n\t * of `pushState` for the client-side navigation. */\n\treplace?: boolean;\n\tchildren?: ReactNode;\n};\n\nconst isModifierClick = (event: MouseEvent<HTMLAnchorElement>) =>\n\tevent.metaKey || event.ctrlKey || event.shiftKey || event.altKey;\n\n/**\n * Prefetching anchor — the React counterpart of Next.js `<Link>`.\n *\n * Renders a plain `<a>`; for a same-origin `href` it prefetches the target\n * document when the link scrolls into view (production) and on hover /\n * focus / pointerdown (production + development), so the click resolves\n * from cache. Modifier / middle clicks, `target`, `download` and external\n * URLs pass straight through to the browser.\n *\n * Inside a `<UniversalRouter>` an `href` matching one of the shell's\n * `<Route>`s navigates client-side through react-router; anything else is\n * a real navigation to that page.\n *\n * import { Link } from '@absolutejs/absolute/react/components';\n * <Link href=\"/pricing\" prefetch=\"viewport\">Pricing</Link>\n *\n * `@absolutejs/absolute/react/router` exports the same component next to\n * `<UniversalRouter>`, so importing from it needs react-router installed;\n * `react/components` doesn't. Without a `<UniversalRouter>`, a click falls\n * through to the document, where `enableNavigation()` soft-navigates it.\n */\nexport const Link = ({\n\thref,\n\tprefetch: prefetchMode,\n\tprerender = false,\n\treplace = false,\n\ttarget,\n\tdownload,\n\tchildren,\n\tonBlur,\n\tonClick,\n\tonFocus,\n\tonPointerDown,\n\tonPointerEnter,\n\tonPointerLeave,\n\t...rest\n}: LinkProps) => {\n\tconst navigation = useContext(RouterNavigationContext);\n\tconst {\n\t\tref,\n\t\tonBlur: prefetchBlur,\n\t\tonFocus: prefetchFocus,\n\t\tonPointerDown: prefetchPointerDown,\n\t\tonPointerEnter: prefetchPointerEnter,\n\t\tonPointerLeave: prefetchPointerLeave\n\t} = usePrefetch<HTMLAnchorElement>(href, { mode: prefetchMode, prerender });\n\n\tconst handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n\t\tonClick?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tif (isModifierClick(event) || event.button !== 0) return;\n\t\tif (target && target !== '_self') return;\n\t\tif (download !== undefined) return;\n\t\tif (!navigation || !isPrefetchableHref(href)) return;\n\t\tif (navigation.matches(href) === false) return;\n\n\t\tevent.preventDefault();\n\t\tnavigation.navigate(href, { replace });\n\t};\n\n\tconst handlePointerEnter = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerEnter?.(event);\n\t\tprefetchPointerEnter();\n\t};\n\n\tconst handlePointerLeave = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerLeave?.(event);\n\t\tprefetchPointerLeave();\n\t};\n\n\tconst handlePointerDown = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerDown?.(event);\n\t\tprefetchPointerDown();\n\t};\n\n\tconst handleFocus = (event: FocusEvent<HTMLAnchorElement>) => {\n\t\tonFocus?.(event);\n\t\tprefetchFocus();\n\t};\n\n\tconst handleBlur = (event: FocusEvent<HTMLAnchorElement>) => {\n\t\tonBlur?.(event);\n\t\tprefetchBlur();\n\t};\n\n\treturn (\n\t\t<a\n\t\t\t{...rest}\n\t\t\tdownload={download}\n\t\t\thref={href}\n\t\t\tonBlur={handleBlur}\n\t\t\tonClick={handleClick}\n\t\t\tonFocus={handleFocus}\n\t\t\tonPointerDown={handlePointerDown}\n\t\t\tonPointerEnter={handlePointerEnter}\n\t\t\tonPointerLeave={handlePointerLeave}\n\t\t\tref={ref}\n\t\t\ttarget={target}\n\t\t>\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n",
7
7
  "/**\n * Framework-neutral navigation prefetch primitive.\n *\n * Pure DOM + `fetch` — no framework imports — so the React, Vue and Svelte\n * `<Link>` components (and user code) share one cache, one in-flight\n * budget, one IntersectionObserver and one set of data-saver guards.\n *\n * import { prefetch, speculate } from '@absolutejs/absolute/client/prefetch';\n *\n * What a prefetch buys the click that follows:\n * - `'document'` — the HTML lands in the browser's HTTP cache (pages\n * carry a content-hash `ETag`), so the real navigation revalidates\n * with a 304 instead of re-rendering.\n * - `'module'` — `<link rel=\"modulepreload\">` parses + compiles the\n * client module graph ahead of time.\n * - `'data'` — the route-data payload\n * (`application/vnd.absolute.route+json`): the page's props plus the\n * client entry and stylesheets it needs, which are `modulepreload`ed\n * / prefetched as the payload lands. A 404 / 406 from a server that\n * doesn't speak route data is remembered as \"no data\".\n * - `'route'` — `'document'` + `'data'`, i.e. everything a click\n * needs. What a `<Link>` warms on hover / pointerdown.\n * - `speculate()` — a prerender speculation rule; the browser renders\n * the whole target page in a hidden tab so the click is instant.\n *\n * Global opt-out: `window.__ABSOLUTE_PREFETCH__ = false` disables every\n * entry point in this module (useful for analytics-sensitive pages).\n */\nimport { applyPageNonce } from '../dev/client/cspNonce';\nimport type {\n\tHoverPrefetchHandle,\n\tHoverPrefetchOptions,\n\tPrefetchKind,\n\tPrefetchOptions,\n\tViewportPrefetchOptions\n} from '../../types/prefetch';\n\nconst PREFETCH_CACHE_LIMIT = 16;\nconst HOVER_DEBOUNCE_MS = 250;\nconst MAX_IN_FLIGHT = 2;\nconst MAX_LIVE_SPECULATION_RULES = 2;\nconst VIEWPORT_ROOT_MARGIN = '128px';\nconst SLOW_EFFECTIVE_TYPES = new Set(['slow-2g', '2g']);\nconst NOT_FOUND = 404;\nconst NOT_ACCEPTABLE = 406;\n\nexport const ROUTE_DATA_MEDIA_TYPE = 'application/vnd.absolute.route+json';\n\ntype CacheEntry = {\n\tabort: () => void;\n\tkind: PrefetchKind;\n\tpromise: Promise<Response>;\n\turl: string;\n};\n\ntype QueuedTask = {\n\tcancelled: boolean;\n\tstart: () => void;\n};\n\nconst cache = new Map<string, CacheEntry>();\nconst queue: QueuedTask[] = [];\nlet inFlight = 0;\n\nconst preloadedModules = new Set<string>();\nconst prefetchedStyles = new Set<string>();\nconst liveSpeculationRules = new Map<string, HTMLScriptElement>();\n\nconst offlineResponse = () => new Response(null, { status: 0 });\n\n/** `'route'` is a compound trigger, not a cache entry of its own: it\n * warms the `'document'` and `'data'` entries, so lookups for it read\n * the document it warmed. */\nconst storageKind = (kind: PrefetchKind) =>\n\tkind === 'route' ? 'document' : kind;\n\nconst cacheKey = (kind: PrefetchKind, url: string) =>\n\t`${storageKind(kind)}:${url}`;\n\nconst resolveHref = (url: string) => {\n\tif (typeof window === 'undefined') return url;\n\n\ttry {\n\t\treturn new URL(url, window.location.href).href;\n\t} catch {\n\t\treturn url;\n\t}\n};\n\n/* ------------------------------------------------------------------ */\n/* Guards */\n/* ------------------------------------------------------------------ */\n\nconst isGloballyDisabled = () =>\n\ttypeof window !== 'undefined' &&\n\tReflect.get(window, '__ABSOLUTE_PREFETCH__') === false;\n\nconst isSlowConnection = () => {\n\tif (typeof navigator === 'undefined') return false;\n\n\tconst connection = Reflect.get(navigator, 'connection');\n\tif (typeof connection !== 'object' || connection === null) return false;\n\tif (Reflect.get(connection, 'saveData') === true) return true;\n\n\tconst effectiveType = Reflect.get(connection, 'effectiveType');\n\n\treturn (\n\t\ttypeof effectiveType === 'string' &&\n\t\tSLOW_EFFECTIVE_TYPES.has(effectiveType)\n\t);\n};\n\nconst prefersReducedData = () => {\n\tif (typeof window === 'undefined' || !window.matchMedia) return false;\n\n\treturn window.matchMedia('(prefers-reduced-data: reduce)').matches;\n};\n\n/** `true` when prefetching is allowed right now: we're in a browser, the\n * page hasn't opted out via `window.__ABSOLUTE_PREFETCH__ = false`, and\n * the user hasn't asked for less data (Save-Data, 2g, reduced-data). */\nexport const canPrefetch = () =>\n\ttypeof window !== 'undefined' &&\n\t!isGloballyDisabled() &&\n\t!isSlowConnection() &&\n\t!prefersReducedData();\n\nconst readNodeEnv = () => {\n\t// Deliberately not the bare `process.env.NODE_ENV` member expression:\n\t// bundlers substitute that at build time, which would bake this\n\t// package's own build environment into the shipped client entry. In a\n\t// browser `process` is undefined and this yields `undefined`.\n\tconst processLike = Reflect.get(globalThis, 'process');\n\tif (typeof processLike !== 'object' || processLike === null) {\n\t\treturn undefined;\n\t}\n\tconst env = Reflect.get(processLike, 'env');\n\tif (typeof env !== 'object' || env === null) return undefined;\n\tconst value = Reflect.get(env, 'NODE_ENV');\n\n\treturn typeof value === 'string' ? value : undefined;\n};\n\n/** Whether the page was served by the AbsoluteJS dev server. The HMR\n * client is only injected in dev, so its markers are the reliable\n * signal; `NODE_ENV` is the fallback for environments that bundle\n * without the dev server (tests, custom hosts). */\nexport const isDevelopmentClient = () => {\n\tif (typeof window === 'undefined') return false;\n\tif (Reflect.get(window, '__HMR_FRAMEWORK__') !== undefined) return true;\n\tif (Reflect.get(window, '__HMR_WS__') !== undefined) return true;\n\tif (\n\t\ttypeof document !== 'undefined' &&\n\t\tdocument.querySelector('script[data-hmr-client]') !== null\n\t) {\n\t\treturn true;\n\t}\n\n\treturn readNodeEnv() === 'development';\n};\n\n/** Same-origin, non-hash, http(s) URL — the only kind worth prefetching. */\nexport const isPrefetchableHref = (href: string) => {\n\tif (typeof window === 'undefined') return false;\n\tif (href === '' || href.startsWith('#')) return false;\n\n\ttry {\n\t\tconst url = new URL(href, window.location.href);\n\t\tif (url.protocol !== 'http:' && url.protocol !== 'https:') return false;\n\n\t\treturn url.origin === window.location.origin;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\n/** Production → `'viewport'` (viewport + hover). Development → `'hover'`\n * only, so a page full of links doesn't fan out into the dev server. */\nexport const resolveDefaultPrefetchMode = () =>\n\tisDevelopmentClient() ? 'hover' : 'viewport';\n\n/* ------------------------------------------------------------------ */\n/* In-flight budget */\n/* ------------------------------------------------------------------ */\n\nconst runQueue = () => {\n\twhile (inFlight < MAX_IN_FLIGHT) {\n\t\tconst next = queue.shift();\n\t\tif (!next) return;\n\t\tif (next.cancelled) continue;\n\t\tnext.start();\n\t}\n};\n\nconst finishTask = () => {\n\tinFlight = Math.max(0, inFlight - 1);\n\trunQueue();\n};\n\n/** Run `task` when one of the `MAX_IN_FLIGHT` slots frees up. The\n * returned promise never rejects — network failures resolve to a\n * status-0 response so consumers can treat \"no prefetch\" uniformly. */\nconst runWhenReleased = async (\n\tgate: Promise<void>,\n\ttask: (signal: AbortSignal) => Promise<Response>,\n\tsignal: AbortSignal\n) => {\n\tawait gate;\n\ttry {\n\t\treturn await task(signal);\n\t} catch {\n\t\treturn offlineResponse();\n\t} finally {\n\t\tfinishTask();\n\t}\n};\n\nconst enqueue = (task: (signal: AbortSignal) => Promise<Response>) => {\n\tconst controller = new AbortController();\n\tlet release: () => void = () => undefined;\n\tconst gate = new Promise<void>((resolve) => {\n\t\trelease = resolve;\n\t});\n\tconst queued: QueuedTask = {\n\t\tcancelled: false,\n\t\tstart: () => {\n\t\t\t// Count the slot synchronously so `runQueue` can't overshoot the\n\t\t\t// budget while the async runner is still waiting on the gate.\n\t\t\tinFlight += 1;\n\t\t\trelease();\n\t\t}\n\t};\n\tconst promise = runWhenReleased(gate, task, controller.signal);\n\tqueue.push(queued);\n\trunQueue();\n\n\tconst abort = () => {\n\t\tif (queued.cancelled) return;\n\t\tqueued.cancelled = true;\n\t\tcontroller.abort();\n\t};\n\n\treturn { abort, promise };\n};\n\n/* ------------------------------------------------------------------ */\n/* Cache */\n/* ------------------------------------------------------------------ */\n\nconst evictOldest = () => {\n\tconst oldest = cache.keys().next();\n\tif (oldest.done) return;\n\tcache.get(oldest.value)?.abort();\n\tcache.delete(oldest.value);\n};\n\nconst touch = (key: string, entry: CacheEntry) => {\n\t// Re-insert so Map iteration order doubles as LRU recency.\n\tcache.delete(key);\n\tcache.set(key, entry);\n};\n\nexport const clearPrefetchCache = () => {\n\tfor (const entry of cache.values()) entry.abort();\n\tcache.clear();\n};\n\n/** Take the prefetched response for `url` out of the cache. Returns\n * `undefined` when nothing was prefetched (or it was evicted). Callers\n * that fetch the same URL themselves can await this instead. */\nexport const consumePrefetch = (\n\turl: string,\n\tkind: PrefetchKind = 'document'\n) => {\n\tconst key = cacheKey(kind, url);\n\tconst entry = cache.get(key);\n\tif (!entry) return undefined;\n\tcache.delete(key);\n\n\treturn entry.promise;\n};\n\n/** Whether `url` is already prefetched (in flight, queued or settled). */\nexport const hasPrefetched = (url: string, kind: PrefetchKind = 'document') =>\n\tcache.has(cacheKey(kind, url));\n\n/* ------------------------------------------------------------------ */\n/* Kinds */\n/* ------------------------------------------------------------------ */\n\nconst injectLink = (rel: string, href: string, asType?: string) => {\n\tif (typeof document === 'undefined') return;\n\tconst link = document.createElement('link');\n\tlink.rel = rel;\n\tlink.href = href;\n\tif (asType) link.setAttribute('as', asType);\n\tdocument.head.append(link);\n};\n\n/** Without `fetch` (very old engines) fall back to a `<link rel=\"prefetch\">`\n * for documents; other kinds have no declarative equivalent. */\nconst injectPrefetchFallback = (kind: PrefetchKind, url: string) => {\n\tif (kind !== 'document' || !supportsLinkRel('prefetch')) return;\n\tinjectLink('prefetch', url, 'document');\n};\n\nconst supportsLinkRel = (rel: string) => {\n\tif (typeof document === 'undefined') return false;\n\tconst link = document.createElement('link');\n\n\treturn (\n\t\ttypeof link.relList?.supports === 'function' &&\n\t\tlink.relList.supports(rel)\n\t);\n};\n\n/** Inject `<link rel=\"prefetch\" as=\"style\">` once per resolved href, so\n * the target page's stylesheets are in the HTTP cache before the click.\n * `prefetch` rather than `preload`: the sheet is for the NEXT document,\n * so preloading it would warn about an unused preload on this one. */\nexport const prefetchStylesheet = (href: string) => {\n\tif (typeof document === 'undefined') return false;\n\tconst resolved = resolveHref(href);\n\tif (prefetchedStyles.has(resolved)) return false;\n\tprefetchedStyles.add(resolved);\n\t// No `relList.supports` gate: a browser that doesn't know `prefetch`\n\t// simply ignores the tag, and there is no fallback worth branching to.\n\tinjectLink('prefetch', href, 'style');\n\n\treturn true;\n};\n\n/** Inject `<link rel=\"modulepreload\">` once per resolved href. Returns\n * `true` when a new tag was added. */\nexport const preloadModule = (href: string) => {\n\tif (typeof document === 'undefined') return false;\n\tconst resolved = resolveHref(href);\n\tif (preloadedModules.has(resolved)) return false;\n\n\tconst existing = Array.from(\n\t\tdocument.querySelectorAll<HTMLLinkElement>('link[rel=\"modulepreload\"]')\n\t);\n\tif (existing.some((link) => resolveHref(link.href) === resolved)) {\n\t\tpreloadedModules.add(resolved);\n\n\t\treturn false;\n\t}\n\n\tpreloadedModules.add(resolved);\n\tinjectLink('modulepreload', href);\n\n\treturn true;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isHref = (value: unknown): value is string =>\n\ttypeof value === 'string' && value.length > 0;\n\n/** Warm what a route-data envelope points at: `modulepreload` for the\n * page's client entry (and a separate client module when it has one),\n * `<link rel=\"prefetch\">` for its stylesheets. Anything unexpected in\n * the payload is ignored — a prefetch must never break a page. */\nconst warmRouteDataAssets = (envelope: unknown) => {\n\tif (!isRecord(envelope)) return;\n\tconst { assets } = envelope;\n\tif (!isRecord(assets)) return;\n\tconst { client, css, index } = assets;\n\tfor (const href of [index, client].filter(isHref)) preloadModule(href);\n\tif (!Array.isArray(css)) return;\n\tfor (const href of css.filter(isHref)) prefetchStylesheet(href);\n};\n\n/** Read the envelope out of a clone so the cached response body is still\n * unconsumed for whoever calls `consumePrefetch`. */\nconst warmFromRouteData = async (response: Response) => {\n\ttry {\n\t\twarmRouteDataAssets(await response.clone().json());\n\t} catch {\n\t\t/* malformed payload — the document prefetch still stands */\n\t}\n\n\treturn response;\n};\n\nconst fetchDocument = (url: string, signal: AbortSignal) =>\n\tfetch(url, { credentials: 'same-origin', signal });\n\nconst fetchRouteData = async (url: string, signal: AbortSignal) => {\n\tconst response = await fetch(url, {\n\t\tcredentials: 'same-origin',\n\t\theaders: { Accept: ROUTE_DATA_MEDIA_TYPE },\n\t\tsignal\n\t});\n\tconst contentType = response.headers.get('content-type') ?? '';\n\tconst isRouteData =\n\t\tresponse.ok && contentType.includes(ROUTE_DATA_MEDIA_TYPE);\n\tif (isRouteData) return warmFromRouteData(response);\n\n\t// The server doesn't speak route data (yet) — 404 / 406 / HTML fallback.\n\t// Remember that as \"no data\" so the URL isn't asked again, and drain\n\t// the body so the connection can be reused.\n\tawait response.body?.cancel().catch(() => undefined);\n\tconst status =\n\t\tresponse.status === NOT_FOUND || response.status === NOT_ACCEPTABLE\n\t\t\t? response.status\n\t\t\t: NOT_ACCEPTABLE;\n\n\treturn new Response(null, { status });\n};\n\n/**\n * Prefetch `url`. No-op when the user signalled data-saver / reduced-data\n * / 2g, when the page opted out, or when the URL is already cached. At\n * most two prefetches are in flight at once; the rest queue in order.\n */\nexport const prefetch = (url: string, options: PrefetchOptions = {}) => {\n\tconst kind = options.kind ?? 'document';\n\tif (!canPrefetch()) return;\n\n\tif (kind === 'module') {\n\t\tpreloadModule(url);\n\n\t\treturn;\n\t}\n\n\t// `'route'` is document + data: the HTML for the navigation itself and\n\t// the payload that names the modules and CSS to warm alongside it.\n\tif (kind === 'route') {\n\t\tprefetch(url, { kind: 'document' });\n\t\tprefetch(url, { kind: 'data' });\n\n\t\treturn;\n\t}\n\n\tconst key = cacheKey(kind, url);\n\tconst existing = cache.get(key);\n\tif (existing) {\n\t\ttouch(key, existing);\n\n\t\treturn;\n\t}\n\n\tif (typeof fetch === 'undefined') {\n\t\tinjectPrefetchFallback(kind, url);\n\n\t\treturn;\n\t}\n\n\twhile (cache.size >= PREFETCH_CACHE_LIMIT) evictOldest();\n\n\tconst { abort, promise } = enqueue((signal) =>\n\t\tkind === 'data'\n\t\t\t? fetchRouteData(url, signal)\n\t\t\t: fetchDocument(url, signal)\n\t);\n\tcache.set(key, { abort, kind, promise, url });\n};\n\n/* ------------------------------------------------------------------ */\n/* Speculation rules */\n/* ------------------------------------------------------------------ */\n\nconst supportsSpeculationRules = () =>\n\ttypeof HTMLScriptElement !== 'undefined' &&\n\ttypeof HTMLScriptElement.supports === 'function' &&\n\tHTMLScriptElement.supports('speculationrules');\n\n/**\n * Ask the browser to prerender `url` right away via a speculation-rules\n * script. Deduped per URL and capped to two live rules — the oldest is\n * removed when a third arrives, so a hover trail can't pile up hidden\n * prerendered tabs. Silently no-ops where the API is unsupported.\n */\nexport const speculate = (url: string) => {\n\tif (!canPrefetch() || !supportsSpeculationRules()) return false;\n\tif (typeof document === 'undefined') return false;\n\n\tconst resolved = resolveHref(url);\n\tif (liveSpeculationRules.has(resolved)) return false;\n\n\twhile (liveSpeculationRules.size >= MAX_LIVE_SPECULATION_RULES) {\n\t\tconst oldest = liveSpeculationRules.keys().next();\n\t\tif (oldest.done) break;\n\t\tliveSpeculationRules.get(oldest.value)?.remove();\n\t\tliveSpeculationRules.delete(oldest.value);\n\t}\n\n\tconst script = applyPageNonce(document.createElement('script'));\n\tscript.type = 'speculationrules';\n\tscript.textContent = JSON.stringify({\n\t\tprerender: [{ eagerness: 'immediate', urls: [url] }]\n\t});\n\tdocument.head.append(script);\n\tliveSpeculationRules.set(resolved, script);\n\n\treturn true;\n};\n\n/* ------------------------------------------------------------------ */\n/* Triggers */\n/* ------------------------------------------------------------------ */\n\nconst noopHandle: HoverPrefetchHandle = {\n\tcancel: () => {\n\t\t/* nothing scheduled */\n\t}\n};\n\n/**\n * Wrap a prefetch trigger in a hover-debounce so glancing across many links\n * doesn't fire a fetch storm. The returned handle's `cancel()` aborts the\n * pending hover prefetch (e.g. on `pointerleave`).\n *\n * Defaults to `kind: 'route'` — a hover is deliberate enough to be worth\n * the document AND the route data (and the modules + CSS that payload\n * names). Viewport prefetching stays document-only.\n */\nexport const scheduleHoverPrefetch = (\n\turl: string,\n\toptions: HoverPrefetchOptions = {}\n): HoverPrefetchHandle => {\n\tif (typeof window === 'undefined') return noopHandle;\n\n\tconst timer = window.setTimeout(() => {\n\t\tprefetch(url, { kind: options.kind ?? 'route' });\n\t\tif (options.prerender) speculate(url);\n\t\toptions.onPrefetch?.();\n\t}, HOVER_DEBOUNCE_MS);\n\n\treturn {\n\t\tcancel: () => window.clearTimeout(timer)\n\t};\n};\n\ntype ViewportTarget = {\n\toptions: ViewportPrefetchOptions;\n\turl: string;\n};\n\nconst viewportTargets = new WeakMap<Element, ViewportTarget>();\nlet viewportObserver: IntersectionObserver | null = null;\n\nconst handleIntersections = (entries: IntersectionObserverEntry[]) => {\n\tfor (const entry of entries) {\n\t\tif (!entry.isIntersecting) continue;\n\t\tconst target = viewportTargets.get(entry.target);\n\t\tviewportObserver?.unobserve(entry.target);\n\t\tviewportTargets.delete(entry.target);\n\t\tif (!target) continue;\n\t\tprefetch(target.url, { kind: target.options.kind });\n\t\ttarget.options.onVisible?.();\n\t}\n};\n\nconst getViewportObserver = () => {\n\tif (viewportObserver) return viewportObserver;\n\tif (typeof IntersectionObserver === 'undefined') return null;\n\tviewportObserver = new IntersectionObserver(handleIntersections, {\n\t\trootMargin: VIEWPORT_ROOT_MARGIN\n\t});\n\n\treturn viewportObserver;\n};\n\n/**\n * Prefetch `url` once `element` scrolls within 128px of the viewport. One\n * IntersectionObserver is shared by every link on the page. Returns an\n * unobserve function for the caller's unmount hook.\n */\nexport const observeViewport = (\n\telement: Element,\n\turl: string,\n\toptions: ViewportPrefetchOptions = {}\n) => {\n\tconst observer = getViewportObserver();\n\tif (!observer || !canPrefetch()) return () => undefined;\n\n\tviewportTargets.set(element, { options, url });\n\tobserver.observe(element);\n\n\treturn () => {\n\t\tobserver.unobserve(element);\n\t\tviewportTargets.delete(element);\n\t};\n};\n\n/** Test / teardown helper — forgets injected modulepreload + speculation\n * rule bookkeeping and cancels any queued fetches. */\nexport const resetPrefetchState = () => {\n\tclearPrefetchCache();\n\tqueue.length = 0;\n\tpreloadedModules.clear();\n\tprefetchedStyles.clear();\n\tfor (const script of liveSpeculationRules.values()) script.remove();\n\tliveSpeculationRules.clear();\n\tviewportObserver?.disconnect();\n\tviewportObserver = null;\n};\n",
8
8
  "import { useCallback, useEffect, useRef } from 'react';\nimport type {\n\tHoverPrefetchHandle,\n\tPrefetchKind,\n\tPrefetchMode\n} from '../../../types/prefetch';\nimport {\n\tisPrefetchableHref,\n\tobserveViewport,\n\tprefetch,\n\tresolveDefaultPrefetchMode,\n\tscheduleHoverPrefetch,\n\tspeculate\n} from '../../client/prefetch';\n\nexport type UsePrefetchOptions = {\n\t/** `'viewport'` (production default), `'hover'` (development default)\n\t * or `'none'`. */\n\tmode?: PrefetchMode;\n\t/** What to warm. Defaults to `'document'` for the viewport trigger and\n\t * `'route'` (document + route data + the modules / CSS it names) for\n\t * hover and pointerdown. */\n\tkind?: PrefetchKind;\n\t/** Also inject a prerender speculation rule when the hover /\n\t * pointerdown trigger fires. */\n\tprerender?: boolean;\n};\n\n/**\n * Prefetch `href` when the returned handlers fire. Spread the handlers on\n * any element and attach `ref` to it for viewport-triggered prefetching:\n *\n * const { ref, ...prefetchHandlers } = usePrefetch('/pricing');\n * <a href=\"/pricing\" ref={ref} {...prefetchHandlers}>Pricing</a>\n *\n * Cross-origin, hash-only and empty hrefs are ignored, as is everything\n * when the user has data-saver on or the page set\n * `window.__ABSOLUTE_PREFETCH__ = false`.\n */\nexport const usePrefetch = <TElement extends HTMLElement = HTMLElement>(\n\thref: string | undefined,\n\toptions: UsePrefetchOptions = {}\n) => {\n\tconst { kind, mode, prerender = false } = options;\n\tconst viewportKind = kind ?? 'document';\n\tconst triggerKind = kind ?? 'route';\n\tconst elementRef = useRef<TElement | null>(null);\n\tconst hoverHandle = useRef<HoverPrefetchHandle | null>(null);\n\n\tconst cancelHover = useCallback(() => {\n\t\thoverHandle.current?.cancel();\n\t\thoverHandle.current = null;\n\t}, []);\n\n\tconst isActive = useCallback(() => {\n\t\tif (href === undefined || !isPrefetchableHref(href)) return false;\n\t\tconst resolved = mode ?? resolveDefaultPrefetchMode();\n\n\t\treturn resolved !== 'none';\n\t}, [href, mode]);\n\n\tuseEffect(() => {\n\t\tconst element = elementRef.current;\n\t\tif (!element || href === undefined || !isActive()) return undefined;\n\t\tconst resolved = mode ?? resolveDefaultPrefetchMode();\n\t\tif (resolved !== 'viewport') return undefined;\n\n\t\treturn observeViewport(element, href, { kind: viewportKind });\n\t}, [href, isActive, mode, viewportKind]);\n\n\tuseEffect(() => cancelHover, [cancelHover]);\n\n\tconst onPointerEnter = useCallback(() => {\n\t\tif (href === undefined || !isActive()) return;\n\t\tcancelHover();\n\t\thoverHandle.current = scheduleHoverPrefetch(href, {\n\t\t\tkind: triggerKind,\n\t\t\tprerender\n\t\t});\n\t}, [cancelHover, href, isActive, prerender, triggerKind]);\n\n\tconst onPointerDown = useCallback(() => {\n\t\tif (href === undefined || !isActive()) return;\n\t\tcancelHover();\n\t\tprefetch(href, { kind: triggerKind });\n\t\tif (prerender) speculate(href);\n\t}, [cancelHover, href, isActive, prerender, triggerKind]);\n\n\treturn {\n\t\tonBlur: cancelHover,\n\t\tonFocus: onPointerEnter,\n\t\tonPointerDown,\n\t\tonPointerEnter,\n\t\tonPointerLeave: cancelHover,\n\t\tref: elementRef\n\t};\n};\n",
9
9
  "import { createContext } from 'react';\n\nexport type NavigateOptions = {\n\treplace?: boolean;\n};\n\n/** Client-side navigation bridge published by `<UniversalRouter>` so a\n * `<Link>` rendered inside an SPA shell can push history through\n * react-router instead of triggering a full document load.\n *\n * Lives in its own module with no `react-router` import: `<Link>` reads\n * the context and stays usable (as a prefetching `<a>`) in MPA projects\n * that never install react-router. Only `UniversalRouter` — already on\n * the `react/router` subpath that owns the react-router dependency —\n * provides a value. */\nexport type RouterNavigation = {\n\t/** `true` / `false` when the shell's `<Route>` tree could be inspected\n\t * and `href` does / doesn't match one of its routes; `null` when the\n\t * routes are opaque (rendered by a component, not inline JSX) and the\n\t * shell should be trusted to handle the path. */\n\tmatches: (href: string) => boolean | null;\n\tnavigate: (href: string, options?: NavigateOptions) => void;\n};\n\nexport const RouterNavigationContext = createContext<RouterNavigation | null>(\n\tnull\n);\n",
10
10
  "import {\n\tChildren,\n\tcreateElement,\n\tisValidElement,\n\ttype ReactNode,\n\tuseCallback,\n\tuseMemo\n} from 'react';\nimport {\n\tBrowserRouter,\n\tmatchRoutes,\n\ttype RouteObject,\n\tStaticRouter,\n\tuseNavigate\n} from 'react-router';\nimport {\n\ttype NavigateOptions,\n\ttype RouterNavigation,\n\tRouterNavigationContext\n} from './navigationContext';\n\nexport type UniversalRouterProps = {\n\t/** The request URL to seed `<StaticRouter>` with on the server. Pages\n\t * typically forward `props.url` (auto-injected by handleReactPageRequest\n\t * from `request.url`). Ignored in the browser, where `<BrowserRouter>`\n\t * reads `window.location` directly. Defaults to '/'. */\n\turl?: string;\n\tchildren?: ReactNode;\n};\n\ntype RouteLikeProps = {\n\tchildren?: ReactNode;\n\tindex?: boolean;\n\tpath?: string;\n};\n\nconst readRouteProps = (props: unknown): RouteLikeProps => {\n\tif (typeof props !== 'object' || props === null) return {};\n\tconst path = Reflect.get(props, 'path');\n\tconst index = Reflect.get(props, 'index');\n\tconst children = Reflect.get(props, 'children');\n\n\treturn {\n\t\tchildren:\n\t\t\tisValidElement(children) || Array.isArray(children)\n\t\t\t\t? children\n\t\t\t\t: undefined,\n\t\tindex: index === true ? true : undefined,\n\t\tpath: typeof path === 'string' ? path : undefined\n\t};\n};\n\n/** Best-effort static view of the `<Route>` tree under the router, so\n * `<Link>` can tell a shell route (client-side navigation) from a\n * different page (real navigation). Walks inline JSX only — routes\n * produced by an intermediate component are opaque and yield `[]`. */\nconst collectRoutes = (node: ReactNode): RouteObject[] =>\n\tChildren.toArray(node).flatMap((child) => {\n\t\tif (!isValidElement(child)) return [];\n\t\tconst { children, index, path } = readRouteProps(child.props);\n\t\tif (index === true) return [{ index: true, path }];\n\t\tif (path !== undefined) {\n\t\t\treturn [{ children: collectRoutes(children), path }];\n\t\t}\n\n\t\treturn collectRoutes(children);\n\t});\n\nconst toPathname = (href: string) => {\n\tif (typeof window === 'undefined') return href;\n\n\ttry {\n\t\treturn new URL(href, window.location.href).pathname;\n\t} catch {\n\t\treturn href;\n\t}\n};\n\ntype NavigationBridgeProps = {\n\troutes: RouteObject[];\n\tchildren?: ReactNode;\n};\n\n/** Publishes react-router's `navigate` (plus a route matcher) on\n * `RouterNavigationContext` so `<Link>` — which deliberately never\n * imports react-router — can navigate client-side inside the shell. */\nconst NavigationBridge = ({ routes, children }: NavigationBridgeProps) => {\n\tconst routerNavigate = useNavigate();\n\n\tconst navigate = useCallback(\n\t\t(href: string, options: NavigateOptions = {}) => {\n\t\t\tvoid routerNavigate(href, { replace: options.replace === true });\n\t\t},\n\t\t[routerNavigate]\n\t);\n\n\tconst matches = useCallback(\n\t\t(href: string) => {\n\t\t\tif (routes.length === 0) return null;\n\n\t\t\treturn matchRoutes(routes, toPathname(href)) !== null;\n\t\t},\n\t\t[routes]\n\t);\n\n\tconst value = useMemo<RouterNavigation>(\n\t\t() => ({ matches, navigate }),\n\t\t[matches, navigate]\n\t);\n\n\treturn createElement(RouterNavigationContext.Provider, { value }, children);\n};\n\n/** SSR-safe wrapper around react-router that picks `<StaticRouter>` on the\n * server and `<BrowserRouter>` in the browser. Without it, every SPA page\n * has to write its own `typeof window === 'undefined'` branch and import\n * both routers — boilerplate that's the same in every page.\n *\n * Usage:\n *\n * import { Link, UniversalRouter } from '@absolutejs/absolute/react/router';\n *\n * export const MySpa = ({ url }: { url?: string }) => (\n * <html>\n * <Head />\n * <body>\n * <UniversalRouter url={url}>\n * <Link href=\"/foo\">Foo</Link>\n * <Routes>\n * <Route path=\"/foo\" element={<Foo />} />\n * </Routes>\n * </UniversalRouter>\n * </body>\n * </html>\n * );\n *\n * `<Link>`s rendered inside navigate client-side when their `href`\n * matches one of the `<Route>`s above (see `navigationContext.ts`).\n *\n * This component lives on its own `@absolutejs/absolute/react/router`\n * subpath rather than the main `@absolutejs/absolute/react` barrel so the\n * static `import 'react-router'` below only loads for consumers who\n * actually use the router — importing `Head`/`Image`/`Island` from\n * `@absolutejs/absolute/react` does not pull react-router into the bundle,\n * so projects that don't route aren't forced to install it.\n *\n * `<BrowserRouter>` reads `window.history` at construction, so it throws\n * if instantiated on the server. The `typeof window` check has to live at\n * render time (not import time) because the module is loaded in both\n * environments. */\nexport const UniversalRouter = ({ url, children }: UniversalRouterProps) => {\n\tconst routes = useMemo(() => collectRoutes(children), [children]);\n\tconst bridged = createElement(NavigationBridge, { routes }, children);\n\n\tif (typeof window === 'undefined') {\n\t\treturn createElement(StaticRouter, { location: url ?? '/' }, bridged);\n\t}\n\n\treturn createElement(BrowserRouter, null, bridged);\n};\n"
11
11
  ],
12
- "mappings": "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",
13
- "debugId": "ACD953FCD3889D0664756E2164756E21",
12
+ "mappings": "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",
13
+ "debugId": "024A990FB016C43064756E2164756E21",
14
14
  "names": []
15
15
  }
@@ -1,23 +1,22 @@
1
1
  // @bun
2
- // src/react/router/Link.tsx
3
- import {
4
- useContext
5
- } from "react";
6
-
7
2
  // src/dev/client/cspNonce.ts
8
3
  var applyPageNonce = (element) => {
9
4
  const nonce = readPageNonce();
10
5
  if (nonce)
11
6
  element.nonce = nonce;
12
7
  return element;
13
- };
14
- var readPageNonce = () => {
8
+ }, readPageNonce = () => {
15
9
  if (typeof document === "undefined")
16
10
  return;
17
11
  const carrier = document.querySelector("script[nonce], style[nonce]");
18
12
  return carrier?.nonce || undefined;
19
13
  };
20
14
 
15
+ // src/react/router/Link.tsx
16
+ import {
17
+ useContext
18
+ } from "react";
19
+
21
20
  // src/client/prefetch.ts
22
21
  var PREFETCH_CACHE_LIMIT = 16;
23
22
  var HOVER_DEBOUNCE_MS = 250;
@@ -569,5 +568,5 @@ export {
569
568
  usePrefetch
570
569
  };
571
570
 
572
- //# debugId=92D7DC91C0C0265C64756E2164756E21
571
+ //# debugId=E23A7D6B7152942564756E2164756E21
573
572
  //# sourceMappingURL=index.js.map
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/react/router/Link.tsx", "../src/dev/client/cspNonce.ts", "../src/client/prefetch.ts", "../src/react/hooks/usePrefetch.ts", "../src/react/router/navigationContext.ts", "../src/react/router/UniversalRouter.tsx"],
3
+ "sources": ["../src/dev/client/cspNonce.ts", "../src/react/router/Link.tsx", "../src/client/prefetch.ts", "../src/react/hooks/usePrefetch.ts", "../src/react/router/navigationContext.ts", "../src/react/router/UniversalRouter.tsx"],
4
4
  "sourcesContent": [
5
- "import {\n\ttype AnchorHTMLAttributes,\n\ttype FocusEvent,\n\ttype MouseEvent,\n\ttype PointerEvent,\n\ttype ReactNode,\n\tuseContext\n} from 'react';\nimport type { PrefetchMode } from '../../../types/prefetch';\nimport { isPrefetchableHref } from '../../client/prefetch';\nimport { usePrefetch } from '../hooks/usePrefetch';\nimport { RouterNavigationContext } from './navigationContext';\n\nexport type LinkProps = Omit<\n\tAnchorHTMLAttributes<HTMLAnchorElement>,\n\t'href' | 'children'\n> & {\n\t/** Destination URL — relative or absolute. */\n\thref: string;\n\t/** `'viewport'` (production default) — prefetch when the link enters\n\t * the viewport and on hover / pointerdown.\n\t * `'hover'` (development default) — prefetch on hover only.\n\t * `'none'` — disable prefetch for this link. */\n\tprefetch?: PrefetchMode;\n\t/** Also inject a prerender speculation rule on hover / pointerdown so\n\t * the target page is fully rendered before the click lands. */\n\tprerender?: boolean;\n\t/** Inside a `<UniversalRouter>`: use `history.replaceState` instead\n\t * of `pushState` for the client-side navigation. */\n\treplace?: boolean;\n\tchildren?: ReactNode;\n};\n\nconst isModifierClick = (event: MouseEvent<HTMLAnchorElement>) =>\n\tevent.metaKey || event.ctrlKey || event.shiftKey || event.altKey;\n\n/**\n * Prefetching anchor — the React counterpart of Next.js `<Link>`.\n *\n * Renders a plain `<a>`; for a same-origin `href` it prefetches the target\n * document when the link scrolls into view (production) and on hover /\n * focus / pointerdown (production + development), so the click resolves\n * from cache. Modifier / middle clicks, `target`, `download` and external\n * URLs pass straight through to the browser.\n *\n * Inside a `<UniversalRouter>` an `href` matching one of the shell's\n * `<Route>`s navigates client-side through react-router; anything else is\n * a real navigation to that page.\n *\n * import { Link } from '@absolutejs/absolute/react/components';\n * <Link href=\"/pricing\" prefetch=\"viewport\">Pricing</Link>\n *\n * `@absolutejs/absolute/react/router` exports the same component next to\n * `<UniversalRouter>`, so importing from it needs react-router installed;\n * `react/components` doesn't. Without a `<UniversalRouter>`, a click falls\n * through to the document, where `enableNavigation()` soft-navigates it.\n */\nexport const Link = ({\n\thref,\n\tprefetch: prefetchMode,\n\tprerender = false,\n\treplace = false,\n\ttarget,\n\tdownload,\n\tchildren,\n\tonBlur,\n\tonClick,\n\tonFocus,\n\tonPointerDown,\n\tonPointerEnter,\n\tonPointerLeave,\n\t...rest\n}: LinkProps) => {\n\tconst navigation = useContext(RouterNavigationContext);\n\tconst {\n\t\tref,\n\t\tonBlur: prefetchBlur,\n\t\tonFocus: prefetchFocus,\n\t\tonPointerDown: prefetchPointerDown,\n\t\tonPointerEnter: prefetchPointerEnter,\n\t\tonPointerLeave: prefetchPointerLeave\n\t} = usePrefetch<HTMLAnchorElement>(href, { mode: prefetchMode, prerender });\n\n\tconst handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n\t\tonClick?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tif (isModifierClick(event) || event.button !== 0) return;\n\t\tif (target && target !== '_self') return;\n\t\tif (download !== undefined) return;\n\t\tif (!navigation || !isPrefetchableHref(href)) return;\n\t\tif (navigation.matches(href) === false) return;\n\n\t\tevent.preventDefault();\n\t\tnavigation.navigate(href, { replace });\n\t};\n\n\tconst handlePointerEnter = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerEnter?.(event);\n\t\tprefetchPointerEnter();\n\t};\n\n\tconst handlePointerLeave = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerLeave?.(event);\n\t\tprefetchPointerLeave();\n\t};\n\n\tconst handlePointerDown = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerDown?.(event);\n\t\tprefetchPointerDown();\n\t};\n\n\tconst handleFocus = (event: FocusEvent<HTMLAnchorElement>) => {\n\t\tonFocus?.(event);\n\t\tprefetchFocus();\n\t};\n\n\tconst handleBlur = (event: FocusEvent<HTMLAnchorElement>) => {\n\t\tonBlur?.(event);\n\t\tprefetchBlur();\n\t};\n\n\treturn (\n\t\t<a\n\t\t\t{...rest}\n\t\t\tdownload={download}\n\t\t\thref={href}\n\t\t\tonBlur={handleBlur}\n\t\t\tonClick={handleClick}\n\t\t\tonFocus={handleFocus}\n\t\t\tonPointerDown={handlePointerDown}\n\t\t\tonPointerEnter={handlePointerEnter}\n\t\t\tonPointerLeave={handlePointerLeave}\n\t\t\tref={ref}\n\t\t\ttarget={target}\n\t\t>\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n",
6
5
  "/* The page's CSP nonce, read back in the browser from an element the server\n * gave it to. Browsers hide the attribute's value but keep the `nonce`\n * property, so a script that runs can hand the nonce to the <style>/<script>\n * elements it creates; a nonce-based policy blocks them otherwise. Without\n * secureHeaders() there is no nonce and this does nothing.\n *\n * Lives in the dev client because that ships as raw TypeScript and may only\n * import from its own directory; the bundled client runtime\n * (src/client/prefetch.ts) imports it from here. */\n\nexport const applyPageNonce = <Element extends HTMLElement>(\n\telement: Element\n) => {\n\tconst nonce = readPageNonce();\n\tif (nonce) element.nonce = nonce;\n\n\treturn element;\n};\n\nexport const readPageNonce = () => {\n\tif (typeof document === 'undefined') return undefined;\n\tconst carrier = document.querySelector<HTMLElement>(\n\t\t'script[nonce], style[nonce]'\n\t);\n\n\treturn carrier?.nonce || undefined;\n};\n",
6
+ "import {\n\ttype AnchorHTMLAttributes,\n\ttype FocusEvent,\n\ttype MouseEvent,\n\ttype PointerEvent,\n\ttype ReactNode,\n\tuseContext\n} from 'react';\nimport type { PrefetchMode } from '../../../types/prefetch';\nimport { isPrefetchableHref } from '../../client/prefetch';\nimport { usePrefetch } from '../hooks/usePrefetch';\nimport { RouterNavigationContext } from './navigationContext';\n\nexport type LinkProps = Omit<\n\tAnchorHTMLAttributes<HTMLAnchorElement>,\n\t'href' | 'children'\n> & {\n\t/** Destination URL — relative or absolute. */\n\thref: string;\n\t/** `'viewport'` (production default) — prefetch when the link enters\n\t * the viewport and on hover / pointerdown.\n\t * `'hover'` (development default) — prefetch on hover only.\n\t * `'none'` — disable prefetch for this link. */\n\tprefetch?: PrefetchMode;\n\t/** Also inject a prerender speculation rule on hover / pointerdown so\n\t * the target page is fully rendered before the click lands. */\n\tprerender?: boolean;\n\t/** Inside a `<UniversalRouter>`: use `history.replaceState` instead\n\t * of `pushState` for the client-side navigation. */\n\treplace?: boolean;\n\tchildren?: ReactNode;\n};\n\nconst isModifierClick = (event: MouseEvent<HTMLAnchorElement>) =>\n\tevent.metaKey || event.ctrlKey || event.shiftKey || event.altKey;\n\n/**\n * Prefetching anchor — the React counterpart of Next.js `<Link>`.\n *\n * Renders a plain `<a>`; for a same-origin `href` it prefetches the target\n * document when the link scrolls into view (production) and on hover /\n * focus / pointerdown (production + development), so the click resolves\n * from cache. Modifier / middle clicks, `target`, `download` and external\n * URLs pass straight through to the browser.\n *\n * Inside a `<UniversalRouter>` an `href` matching one of the shell's\n * `<Route>`s navigates client-side through react-router; anything else is\n * a real navigation to that page.\n *\n * import { Link } from '@absolutejs/absolute/react/components';\n * <Link href=\"/pricing\" prefetch=\"viewport\">Pricing</Link>\n *\n * `@absolutejs/absolute/react/router` exports the same component next to\n * `<UniversalRouter>`, so importing from it needs react-router installed;\n * `react/components` doesn't. Without a `<UniversalRouter>`, a click falls\n * through to the document, where `enableNavigation()` soft-navigates it.\n */\nexport const Link = ({\n\thref,\n\tprefetch: prefetchMode,\n\tprerender = false,\n\treplace = false,\n\ttarget,\n\tdownload,\n\tchildren,\n\tonBlur,\n\tonClick,\n\tonFocus,\n\tonPointerDown,\n\tonPointerEnter,\n\tonPointerLeave,\n\t...rest\n}: LinkProps) => {\n\tconst navigation = useContext(RouterNavigationContext);\n\tconst {\n\t\tref,\n\t\tonBlur: prefetchBlur,\n\t\tonFocus: prefetchFocus,\n\t\tonPointerDown: prefetchPointerDown,\n\t\tonPointerEnter: prefetchPointerEnter,\n\t\tonPointerLeave: prefetchPointerLeave\n\t} = usePrefetch<HTMLAnchorElement>(href, { mode: prefetchMode, prerender });\n\n\tconst handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n\t\tonClick?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tif (isModifierClick(event) || event.button !== 0) return;\n\t\tif (target && target !== '_self') return;\n\t\tif (download !== undefined) return;\n\t\tif (!navigation || !isPrefetchableHref(href)) return;\n\t\tif (navigation.matches(href) === false) return;\n\n\t\tevent.preventDefault();\n\t\tnavigation.navigate(href, { replace });\n\t};\n\n\tconst handlePointerEnter = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerEnter?.(event);\n\t\tprefetchPointerEnter();\n\t};\n\n\tconst handlePointerLeave = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerLeave?.(event);\n\t\tprefetchPointerLeave();\n\t};\n\n\tconst handlePointerDown = (event: PointerEvent<HTMLAnchorElement>) => {\n\t\tonPointerDown?.(event);\n\t\tprefetchPointerDown();\n\t};\n\n\tconst handleFocus = (event: FocusEvent<HTMLAnchorElement>) => {\n\t\tonFocus?.(event);\n\t\tprefetchFocus();\n\t};\n\n\tconst handleBlur = (event: FocusEvent<HTMLAnchorElement>) => {\n\t\tonBlur?.(event);\n\t\tprefetchBlur();\n\t};\n\n\treturn (\n\t\t<a\n\t\t\t{...rest}\n\t\t\tdownload={download}\n\t\t\thref={href}\n\t\t\tonBlur={handleBlur}\n\t\t\tonClick={handleClick}\n\t\t\tonFocus={handleFocus}\n\t\t\tonPointerDown={handlePointerDown}\n\t\t\tonPointerEnter={handlePointerEnter}\n\t\t\tonPointerLeave={handlePointerLeave}\n\t\t\tref={ref}\n\t\t\ttarget={target}\n\t\t>\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n",
7
7
  "/**\n * Framework-neutral navigation prefetch primitive.\n *\n * Pure DOM + `fetch` — no framework imports — so the React, Vue and Svelte\n * `<Link>` components (and user code) share one cache, one in-flight\n * budget, one IntersectionObserver and one set of data-saver guards.\n *\n * import { prefetch, speculate } from '@absolutejs/absolute/client/prefetch';\n *\n * What a prefetch buys the click that follows:\n * - `'document'` — the HTML lands in the browser's HTTP cache (pages\n * carry a content-hash `ETag`), so the real navigation revalidates\n * with a 304 instead of re-rendering.\n * - `'module'` — `<link rel=\"modulepreload\">` parses + compiles the\n * client module graph ahead of time.\n * - `'data'` — the route-data payload\n * (`application/vnd.absolute.route+json`): the page's props plus the\n * client entry and stylesheets it needs, which are `modulepreload`ed\n * / prefetched as the payload lands. A 404 / 406 from a server that\n * doesn't speak route data is remembered as \"no data\".\n * - `'route'` — `'document'` + `'data'`, i.e. everything a click\n * needs. What a `<Link>` warms on hover / pointerdown.\n * - `speculate()` — a prerender speculation rule; the browser renders\n * the whole target page in a hidden tab so the click is instant.\n *\n * Global opt-out: `window.__ABSOLUTE_PREFETCH__ = false` disables every\n * entry point in this module (useful for analytics-sensitive pages).\n */\nimport { applyPageNonce } from '../dev/client/cspNonce';\nimport type {\n\tHoverPrefetchHandle,\n\tHoverPrefetchOptions,\n\tPrefetchKind,\n\tPrefetchOptions,\n\tViewportPrefetchOptions\n} from '../../types/prefetch';\n\nconst PREFETCH_CACHE_LIMIT = 16;\nconst HOVER_DEBOUNCE_MS = 250;\nconst MAX_IN_FLIGHT = 2;\nconst MAX_LIVE_SPECULATION_RULES = 2;\nconst VIEWPORT_ROOT_MARGIN = '128px';\nconst SLOW_EFFECTIVE_TYPES = new Set(['slow-2g', '2g']);\nconst NOT_FOUND = 404;\nconst NOT_ACCEPTABLE = 406;\n\nexport const ROUTE_DATA_MEDIA_TYPE = 'application/vnd.absolute.route+json';\n\ntype CacheEntry = {\n\tabort: () => void;\n\tkind: PrefetchKind;\n\tpromise: Promise<Response>;\n\turl: string;\n};\n\ntype QueuedTask = {\n\tcancelled: boolean;\n\tstart: () => void;\n};\n\nconst cache = new Map<string, CacheEntry>();\nconst queue: QueuedTask[] = [];\nlet inFlight = 0;\n\nconst preloadedModules = new Set<string>();\nconst prefetchedStyles = new Set<string>();\nconst liveSpeculationRules = new Map<string, HTMLScriptElement>();\n\nconst offlineResponse = () => new Response(null, { status: 0 });\n\n/** `'route'` is a compound trigger, not a cache entry of its own: it\n * warms the `'document'` and `'data'` entries, so lookups for it read\n * the document it warmed. */\nconst storageKind = (kind: PrefetchKind) =>\n\tkind === 'route' ? 'document' : kind;\n\nconst cacheKey = (kind: PrefetchKind, url: string) =>\n\t`${storageKind(kind)}:${url}`;\n\nconst resolveHref = (url: string) => {\n\tif (typeof window === 'undefined') return url;\n\n\ttry {\n\t\treturn new URL(url, window.location.href).href;\n\t} catch {\n\t\treturn url;\n\t}\n};\n\n/* ------------------------------------------------------------------ */\n/* Guards */\n/* ------------------------------------------------------------------ */\n\nconst isGloballyDisabled = () =>\n\ttypeof window !== 'undefined' &&\n\tReflect.get(window, '__ABSOLUTE_PREFETCH__') === false;\n\nconst isSlowConnection = () => {\n\tif (typeof navigator === 'undefined') return false;\n\n\tconst connection = Reflect.get(navigator, 'connection');\n\tif (typeof connection !== 'object' || connection === null) return false;\n\tif (Reflect.get(connection, 'saveData') === true) return true;\n\n\tconst effectiveType = Reflect.get(connection, 'effectiveType');\n\n\treturn (\n\t\ttypeof effectiveType === 'string' &&\n\t\tSLOW_EFFECTIVE_TYPES.has(effectiveType)\n\t);\n};\n\nconst prefersReducedData = () => {\n\tif (typeof window === 'undefined' || !window.matchMedia) return false;\n\n\treturn window.matchMedia('(prefers-reduced-data: reduce)').matches;\n};\n\n/** `true` when prefetching is allowed right now: we're in a browser, the\n * page hasn't opted out via `window.__ABSOLUTE_PREFETCH__ = false`, and\n * the user hasn't asked for less data (Save-Data, 2g, reduced-data). */\nexport const canPrefetch = () =>\n\ttypeof window !== 'undefined' &&\n\t!isGloballyDisabled() &&\n\t!isSlowConnection() &&\n\t!prefersReducedData();\n\nconst readNodeEnv = () => {\n\t// Deliberately not the bare `process.env.NODE_ENV` member expression:\n\t// bundlers substitute that at build time, which would bake this\n\t// package's own build environment into the shipped client entry. In a\n\t// browser `process` is undefined and this yields `undefined`.\n\tconst processLike = Reflect.get(globalThis, 'process');\n\tif (typeof processLike !== 'object' || processLike === null) {\n\t\treturn undefined;\n\t}\n\tconst env = Reflect.get(processLike, 'env');\n\tif (typeof env !== 'object' || env === null) return undefined;\n\tconst value = Reflect.get(env, 'NODE_ENV');\n\n\treturn typeof value === 'string' ? value : undefined;\n};\n\n/** Whether the page was served by the AbsoluteJS dev server. The HMR\n * client is only injected in dev, so its markers are the reliable\n * signal; `NODE_ENV` is the fallback for environments that bundle\n * without the dev server (tests, custom hosts). */\nexport const isDevelopmentClient = () => {\n\tif (typeof window === 'undefined') return false;\n\tif (Reflect.get(window, '__HMR_FRAMEWORK__') !== undefined) return true;\n\tif (Reflect.get(window, '__HMR_WS__') !== undefined) return true;\n\tif (\n\t\ttypeof document !== 'undefined' &&\n\t\tdocument.querySelector('script[data-hmr-client]') !== null\n\t) {\n\t\treturn true;\n\t}\n\n\treturn readNodeEnv() === 'development';\n};\n\n/** Same-origin, non-hash, http(s) URL — the only kind worth prefetching. */\nexport const isPrefetchableHref = (href: string) => {\n\tif (typeof window === 'undefined') return false;\n\tif (href === '' || href.startsWith('#')) return false;\n\n\ttry {\n\t\tconst url = new URL(href, window.location.href);\n\t\tif (url.protocol !== 'http:' && url.protocol !== 'https:') return false;\n\n\t\treturn url.origin === window.location.origin;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\n/** Production → `'viewport'` (viewport + hover). Development → `'hover'`\n * only, so a page full of links doesn't fan out into the dev server. */\nexport const resolveDefaultPrefetchMode = () =>\n\tisDevelopmentClient() ? 'hover' : 'viewport';\n\n/* ------------------------------------------------------------------ */\n/* In-flight budget */\n/* ------------------------------------------------------------------ */\n\nconst runQueue = () => {\n\twhile (inFlight < MAX_IN_FLIGHT) {\n\t\tconst next = queue.shift();\n\t\tif (!next) return;\n\t\tif (next.cancelled) continue;\n\t\tnext.start();\n\t}\n};\n\nconst finishTask = () => {\n\tinFlight = Math.max(0, inFlight - 1);\n\trunQueue();\n};\n\n/** Run `task` when one of the `MAX_IN_FLIGHT` slots frees up. The\n * returned promise never rejects — network failures resolve to a\n * status-0 response so consumers can treat \"no prefetch\" uniformly. */\nconst runWhenReleased = async (\n\tgate: Promise<void>,\n\ttask: (signal: AbortSignal) => Promise<Response>,\n\tsignal: AbortSignal\n) => {\n\tawait gate;\n\ttry {\n\t\treturn await task(signal);\n\t} catch {\n\t\treturn offlineResponse();\n\t} finally {\n\t\tfinishTask();\n\t}\n};\n\nconst enqueue = (task: (signal: AbortSignal) => Promise<Response>) => {\n\tconst controller = new AbortController();\n\tlet release: () => void = () => undefined;\n\tconst gate = new Promise<void>((resolve) => {\n\t\trelease = resolve;\n\t});\n\tconst queued: QueuedTask = {\n\t\tcancelled: false,\n\t\tstart: () => {\n\t\t\t// Count the slot synchronously so `runQueue` can't overshoot the\n\t\t\t// budget while the async runner is still waiting on the gate.\n\t\t\tinFlight += 1;\n\t\t\trelease();\n\t\t}\n\t};\n\tconst promise = runWhenReleased(gate, task, controller.signal);\n\tqueue.push(queued);\n\trunQueue();\n\n\tconst abort = () => {\n\t\tif (queued.cancelled) return;\n\t\tqueued.cancelled = true;\n\t\tcontroller.abort();\n\t};\n\n\treturn { abort, promise };\n};\n\n/* ------------------------------------------------------------------ */\n/* Cache */\n/* ------------------------------------------------------------------ */\n\nconst evictOldest = () => {\n\tconst oldest = cache.keys().next();\n\tif (oldest.done) return;\n\tcache.get(oldest.value)?.abort();\n\tcache.delete(oldest.value);\n};\n\nconst touch = (key: string, entry: CacheEntry) => {\n\t// Re-insert so Map iteration order doubles as LRU recency.\n\tcache.delete(key);\n\tcache.set(key, entry);\n};\n\nexport const clearPrefetchCache = () => {\n\tfor (const entry of cache.values()) entry.abort();\n\tcache.clear();\n};\n\n/** Take the prefetched response for `url` out of the cache. Returns\n * `undefined` when nothing was prefetched (or it was evicted). Callers\n * that fetch the same URL themselves can await this instead. */\nexport const consumePrefetch = (\n\turl: string,\n\tkind: PrefetchKind = 'document'\n) => {\n\tconst key = cacheKey(kind, url);\n\tconst entry = cache.get(key);\n\tif (!entry) return undefined;\n\tcache.delete(key);\n\n\treturn entry.promise;\n};\n\n/** Whether `url` is already prefetched (in flight, queued or settled). */\nexport const hasPrefetched = (url: string, kind: PrefetchKind = 'document') =>\n\tcache.has(cacheKey(kind, url));\n\n/* ------------------------------------------------------------------ */\n/* Kinds */\n/* ------------------------------------------------------------------ */\n\nconst injectLink = (rel: string, href: string, asType?: string) => {\n\tif (typeof document === 'undefined') return;\n\tconst link = document.createElement('link');\n\tlink.rel = rel;\n\tlink.href = href;\n\tif (asType) link.setAttribute('as', asType);\n\tdocument.head.append(link);\n};\n\n/** Without `fetch` (very old engines) fall back to a `<link rel=\"prefetch\">`\n * for documents; other kinds have no declarative equivalent. */\nconst injectPrefetchFallback = (kind: PrefetchKind, url: string) => {\n\tif (kind !== 'document' || !supportsLinkRel('prefetch')) return;\n\tinjectLink('prefetch', url, 'document');\n};\n\nconst supportsLinkRel = (rel: string) => {\n\tif (typeof document === 'undefined') return false;\n\tconst link = document.createElement('link');\n\n\treturn (\n\t\ttypeof link.relList?.supports === 'function' &&\n\t\tlink.relList.supports(rel)\n\t);\n};\n\n/** Inject `<link rel=\"prefetch\" as=\"style\">` once per resolved href, so\n * the target page's stylesheets are in the HTTP cache before the click.\n * `prefetch` rather than `preload`: the sheet is for the NEXT document,\n * so preloading it would warn about an unused preload on this one. */\nexport const prefetchStylesheet = (href: string) => {\n\tif (typeof document === 'undefined') return false;\n\tconst resolved = resolveHref(href);\n\tif (prefetchedStyles.has(resolved)) return false;\n\tprefetchedStyles.add(resolved);\n\t// No `relList.supports` gate: a browser that doesn't know `prefetch`\n\t// simply ignores the tag, and there is no fallback worth branching to.\n\tinjectLink('prefetch', href, 'style');\n\n\treturn true;\n};\n\n/** Inject `<link rel=\"modulepreload\">` once per resolved href. Returns\n * `true` when a new tag was added. */\nexport const preloadModule = (href: string) => {\n\tif (typeof document === 'undefined') return false;\n\tconst resolved = resolveHref(href);\n\tif (preloadedModules.has(resolved)) return false;\n\n\tconst existing = Array.from(\n\t\tdocument.querySelectorAll<HTMLLinkElement>('link[rel=\"modulepreload\"]')\n\t);\n\tif (existing.some((link) => resolveHref(link.href) === resolved)) {\n\t\tpreloadedModules.add(resolved);\n\n\t\treturn false;\n\t}\n\n\tpreloadedModules.add(resolved);\n\tinjectLink('modulepreload', href);\n\n\treturn true;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isHref = (value: unknown): value is string =>\n\ttypeof value === 'string' && value.length > 0;\n\n/** Warm what a route-data envelope points at: `modulepreload` for the\n * page's client entry (and a separate client module when it has one),\n * `<link rel=\"prefetch\">` for its stylesheets. Anything unexpected in\n * the payload is ignored — a prefetch must never break a page. */\nconst warmRouteDataAssets = (envelope: unknown) => {\n\tif (!isRecord(envelope)) return;\n\tconst { assets } = envelope;\n\tif (!isRecord(assets)) return;\n\tconst { client, css, index } = assets;\n\tfor (const href of [index, client].filter(isHref)) preloadModule(href);\n\tif (!Array.isArray(css)) return;\n\tfor (const href of css.filter(isHref)) prefetchStylesheet(href);\n};\n\n/** Read the envelope out of a clone so the cached response body is still\n * unconsumed for whoever calls `consumePrefetch`. */\nconst warmFromRouteData = async (response: Response) => {\n\ttry {\n\t\twarmRouteDataAssets(await response.clone().json());\n\t} catch {\n\t\t/* malformed payload — the document prefetch still stands */\n\t}\n\n\treturn response;\n};\n\nconst fetchDocument = (url: string, signal: AbortSignal) =>\n\tfetch(url, { credentials: 'same-origin', signal });\n\nconst fetchRouteData = async (url: string, signal: AbortSignal) => {\n\tconst response = await fetch(url, {\n\t\tcredentials: 'same-origin',\n\t\theaders: { Accept: ROUTE_DATA_MEDIA_TYPE },\n\t\tsignal\n\t});\n\tconst contentType = response.headers.get('content-type') ?? '';\n\tconst isRouteData =\n\t\tresponse.ok && contentType.includes(ROUTE_DATA_MEDIA_TYPE);\n\tif (isRouteData) return warmFromRouteData(response);\n\n\t// The server doesn't speak route data (yet) — 404 / 406 / HTML fallback.\n\t// Remember that as \"no data\" so the URL isn't asked again, and drain\n\t// the body so the connection can be reused.\n\tawait response.body?.cancel().catch(() => undefined);\n\tconst status =\n\t\tresponse.status === NOT_FOUND || response.status === NOT_ACCEPTABLE\n\t\t\t? response.status\n\t\t\t: NOT_ACCEPTABLE;\n\n\treturn new Response(null, { status });\n};\n\n/**\n * Prefetch `url`. No-op when the user signalled data-saver / reduced-data\n * / 2g, when the page opted out, or when the URL is already cached. At\n * most two prefetches are in flight at once; the rest queue in order.\n */\nexport const prefetch = (url: string, options: PrefetchOptions = {}) => {\n\tconst kind = options.kind ?? 'document';\n\tif (!canPrefetch()) return;\n\n\tif (kind === 'module') {\n\t\tpreloadModule(url);\n\n\t\treturn;\n\t}\n\n\t// `'route'` is document + data: the HTML for the navigation itself and\n\t// the payload that names the modules and CSS to warm alongside it.\n\tif (kind === 'route') {\n\t\tprefetch(url, { kind: 'document' });\n\t\tprefetch(url, { kind: 'data' });\n\n\t\treturn;\n\t}\n\n\tconst key = cacheKey(kind, url);\n\tconst existing = cache.get(key);\n\tif (existing) {\n\t\ttouch(key, existing);\n\n\t\treturn;\n\t}\n\n\tif (typeof fetch === 'undefined') {\n\t\tinjectPrefetchFallback(kind, url);\n\n\t\treturn;\n\t}\n\n\twhile (cache.size >= PREFETCH_CACHE_LIMIT) evictOldest();\n\n\tconst { abort, promise } = enqueue((signal) =>\n\t\tkind === 'data'\n\t\t\t? fetchRouteData(url, signal)\n\t\t\t: fetchDocument(url, signal)\n\t);\n\tcache.set(key, { abort, kind, promise, url });\n};\n\n/* ------------------------------------------------------------------ */\n/* Speculation rules */\n/* ------------------------------------------------------------------ */\n\nconst supportsSpeculationRules = () =>\n\ttypeof HTMLScriptElement !== 'undefined' &&\n\ttypeof HTMLScriptElement.supports === 'function' &&\n\tHTMLScriptElement.supports('speculationrules');\n\n/**\n * Ask the browser to prerender `url` right away via a speculation-rules\n * script. Deduped per URL and capped to two live rules — the oldest is\n * removed when a third arrives, so a hover trail can't pile up hidden\n * prerendered tabs. Silently no-ops where the API is unsupported.\n */\nexport const speculate = (url: string) => {\n\tif (!canPrefetch() || !supportsSpeculationRules()) return false;\n\tif (typeof document === 'undefined') return false;\n\n\tconst resolved = resolveHref(url);\n\tif (liveSpeculationRules.has(resolved)) return false;\n\n\twhile (liveSpeculationRules.size >= MAX_LIVE_SPECULATION_RULES) {\n\t\tconst oldest = liveSpeculationRules.keys().next();\n\t\tif (oldest.done) break;\n\t\tliveSpeculationRules.get(oldest.value)?.remove();\n\t\tliveSpeculationRules.delete(oldest.value);\n\t}\n\n\tconst script = applyPageNonce(document.createElement('script'));\n\tscript.type = 'speculationrules';\n\tscript.textContent = JSON.stringify({\n\t\tprerender: [{ eagerness: 'immediate', urls: [url] }]\n\t});\n\tdocument.head.append(script);\n\tliveSpeculationRules.set(resolved, script);\n\n\treturn true;\n};\n\n/* ------------------------------------------------------------------ */\n/* Triggers */\n/* ------------------------------------------------------------------ */\n\nconst noopHandle: HoverPrefetchHandle = {\n\tcancel: () => {\n\t\t/* nothing scheduled */\n\t}\n};\n\n/**\n * Wrap a prefetch trigger in a hover-debounce so glancing across many links\n * doesn't fire a fetch storm. The returned handle's `cancel()` aborts the\n * pending hover prefetch (e.g. on `pointerleave`).\n *\n * Defaults to `kind: 'route'` — a hover is deliberate enough to be worth\n * the document AND the route data (and the modules + CSS that payload\n * names). Viewport prefetching stays document-only.\n */\nexport const scheduleHoverPrefetch = (\n\turl: string,\n\toptions: HoverPrefetchOptions = {}\n): HoverPrefetchHandle => {\n\tif (typeof window === 'undefined') return noopHandle;\n\n\tconst timer = window.setTimeout(() => {\n\t\tprefetch(url, { kind: options.kind ?? 'route' });\n\t\tif (options.prerender) speculate(url);\n\t\toptions.onPrefetch?.();\n\t}, HOVER_DEBOUNCE_MS);\n\n\treturn {\n\t\tcancel: () => window.clearTimeout(timer)\n\t};\n};\n\ntype ViewportTarget = {\n\toptions: ViewportPrefetchOptions;\n\turl: string;\n};\n\nconst viewportTargets = new WeakMap<Element, ViewportTarget>();\nlet viewportObserver: IntersectionObserver | null = null;\n\nconst handleIntersections = (entries: IntersectionObserverEntry[]) => {\n\tfor (const entry of entries) {\n\t\tif (!entry.isIntersecting) continue;\n\t\tconst target = viewportTargets.get(entry.target);\n\t\tviewportObserver?.unobserve(entry.target);\n\t\tviewportTargets.delete(entry.target);\n\t\tif (!target) continue;\n\t\tprefetch(target.url, { kind: target.options.kind });\n\t\ttarget.options.onVisible?.();\n\t}\n};\n\nconst getViewportObserver = () => {\n\tif (viewportObserver) return viewportObserver;\n\tif (typeof IntersectionObserver === 'undefined') return null;\n\tviewportObserver = new IntersectionObserver(handleIntersections, {\n\t\trootMargin: VIEWPORT_ROOT_MARGIN\n\t});\n\n\treturn viewportObserver;\n};\n\n/**\n * Prefetch `url` once `element` scrolls within 128px of the viewport. One\n * IntersectionObserver is shared by every link on the page. Returns an\n * unobserve function for the caller's unmount hook.\n */\nexport const observeViewport = (\n\telement: Element,\n\turl: string,\n\toptions: ViewportPrefetchOptions = {}\n) => {\n\tconst observer = getViewportObserver();\n\tif (!observer || !canPrefetch()) return () => undefined;\n\n\tviewportTargets.set(element, { options, url });\n\tobserver.observe(element);\n\n\treturn () => {\n\t\tobserver.unobserve(element);\n\t\tviewportTargets.delete(element);\n\t};\n};\n\n/** Test / teardown helper — forgets injected modulepreload + speculation\n * rule bookkeeping and cancels any queued fetches. */\nexport const resetPrefetchState = () => {\n\tclearPrefetchCache();\n\tqueue.length = 0;\n\tpreloadedModules.clear();\n\tprefetchedStyles.clear();\n\tfor (const script of liveSpeculationRules.values()) script.remove();\n\tliveSpeculationRules.clear();\n\tviewportObserver?.disconnect();\n\tviewportObserver = null;\n};\n",
8
8
  "import { useCallback, useEffect, useRef } from 'react';\nimport type {\n\tHoverPrefetchHandle,\n\tPrefetchKind,\n\tPrefetchMode\n} from '../../../types/prefetch';\nimport {\n\tisPrefetchableHref,\n\tobserveViewport,\n\tprefetch,\n\tresolveDefaultPrefetchMode,\n\tscheduleHoverPrefetch,\n\tspeculate\n} from '../../client/prefetch';\n\nexport type UsePrefetchOptions = {\n\t/** `'viewport'` (production default), `'hover'` (development default)\n\t * or `'none'`. */\n\tmode?: PrefetchMode;\n\t/** What to warm. Defaults to `'document'` for the viewport trigger and\n\t * `'route'` (document + route data + the modules / CSS it names) for\n\t * hover and pointerdown. */\n\tkind?: PrefetchKind;\n\t/** Also inject a prerender speculation rule when the hover /\n\t * pointerdown trigger fires. */\n\tprerender?: boolean;\n};\n\n/**\n * Prefetch `href` when the returned handlers fire. Spread the handlers on\n * any element and attach `ref` to it for viewport-triggered prefetching:\n *\n * const { ref, ...prefetchHandlers } = usePrefetch('/pricing');\n * <a href=\"/pricing\" ref={ref} {...prefetchHandlers}>Pricing</a>\n *\n * Cross-origin, hash-only and empty hrefs are ignored, as is everything\n * when the user has data-saver on or the page set\n * `window.__ABSOLUTE_PREFETCH__ = false`.\n */\nexport const usePrefetch = <TElement extends HTMLElement = HTMLElement>(\n\thref: string | undefined,\n\toptions: UsePrefetchOptions = {}\n) => {\n\tconst { kind, mode, prerender = false } = options;\n\tconst viewportKind = kind ?? 'document';\n\tconst triggerKind = kind ?? 'route';\n\tconst elementRef = useRef<TElement | null>(null);\n\tconst hoverHandle = useRef<HoverPrefetchHandle | null>(null);\n\n\tconst cancelHover = useCallback(() => {\n\t\thoverHandle.current?.cancel();\n\t\thoverHandle.current = null;\n\t}, []);\n\n\tconst isActive = useCallback(() => {\n\t\tif (href === undefined || !isPrefetchableHref(href)) return false;\n\t\tconst resolved = mode ?? resolveDefaultPrefetchMode();\n\n\t\treturn resolved !== 'none';\n\t}, [href, mode]);\n\n\tuseEffect(() => {\n\t\tconst element = elementRef.current;\n\t\tif (!element || href === undefined || !isActive()) return undefined;\n\t\tconst resolved = mode ?? resolveDefaultPrefetchMode();\n\t\tif (resolved !== 'viewport') return undefined;\n\n\t\treturn observeViewport(element, href, { kind: viewportKind });\n\t}, [href, isActive, mode, viewportKind]);\n\n\tuseEffect(() => cancelHover, [cancelHover]);\n\n\tconst onPointerEnter = useCallback(() => {\n\t\tif (href === undefined || !isActive()) return;\n\t\tcancelHover();\n\t\thoverHandle.current = scheduleHoverPrefetch(href, {\n\t\t\tkind: triggerKind,\n\t\t\tprerender\n\t\t});\n\t}, [cancelHover, href, isActive, prerender, triggerKind]);\n\n\tconst onPointerDown = useCallback(() => {\n\t\tif (href === undefined || !isActive()) return;\n\t\tcancelHover();\n\t\tprefetch(href, { kind: triggerKind });\n\t\tif (prerender) speculate(href);\n\t}, [cancelHover, href, isActive, prerender, triggerKind]);\n\n\treturn {\n\t\tonBlur: cancelHover,\n\t\tonFocus: onPointerEnter,\n\t\tonPointerDown,\n\t\tonPointerEnter,\n\t\tonPointerLeave: cancelHover,\n\t\tref: elementRef\n\t};\n};\n",
9
9
  "import { createContext } from 'react';\n\nexport type NavigateOptions = {\n\treplace?: boolean;\n};\n\n/** Client-side navigation bridge published by `<UniversalRouter>` so a\n * `<Link>` rendered inside an SPA shell can push history through\n * react-router instead of triggering a full document load.\n *\n * Lives in its own module with no `react-router` import: `<Link>` reads\n * the context and stays usable (as a prefetching `<a>`) in MPA projects\n * that never install react-router. Only `UniversalRouter` — already on\n * the `react/router` subpath that owns the react-router dependency —\n * provides a value. */\nexport type RouterNavigation = {\n\t/** `true` / `false` when the shell's `<Route>` tree could be inspected\n\t * and `href` does / doesn't match one of its routes; `null` when the\n\t * routes are opaque (rendered by a component, not inline JSX) and the\n\t * shell should be trusted to handle the path. */\n\tmatches: (href: string) => boolean | null;\n\tnavigate: (href: string, options?: NavigateOptions) => void;\n};\n\nexport const RouterNavigationContext = createContext<RouterNavigation | null>(\n\tnull\n);\n",
10
10
  "import {\n\tChildren,\n\tcreateElement,\n\tisValidElement,\n\ttype ReactNode,\n\tuseCallback,\n\tuseMemo\n} from 'react';\nimport {\n\tBrowserRouter,\n\tmatchRoutes,\n\ttype RouteObject,\n\tStaticRouter,\n\tuseNavigate\n} from 'react-router';\nimport {\n\ttype NavigateOptions,\n\ttype RouterNavigation,\n\tRouterNavigationContext\n} from './navigationContext';\n\nexport type UniversalRouterProps = {\n\t/** The request URL to seed `<StaticRouter>` with on the server. Pages\n\t * typically forward `props.url` (auto-injected by handleReactPageRequest\n\t * from `request.url`). Ignored in the browser, where `<BrowserRouter>`\n\t * reads `window.location` directly. Defaults to '/'. */\n\turl?: string;\n\tchildren?: ReactNode;\n};\n\ntype RouteLikeProps = {\n\tchildren?: ReactNode;\n\tindex?: boolean;\n\tpath?: string;\n};\n\nconst readRouteProps = (props: unknown): RouteLikeProps => {\n\tif (typeof props !== 'object' || props === null) return {};\n\tconst path = Reflect.get(props, 'path');\n\tconst index = Reflect.get(props, 'index');\n\tconst children = Reflect.get(props, 'children');\n\n\treturn {\n\t\tchildren:\n\t\t\tisValidElement(children) || Array.isArray(children)\n\t\t\t\t? children\n\t\t\t\t: undefined,\n\t\tindex: index === true ? true : undefined,\n\t\tpath: typeof path === 'string' ? path : undefined\n\t};\n};\n\n/** Best-effort static view of the `<Route>` tree under the router, so\n * `<Link>` can tell a shell route (client-side navigation) from a\n * different page (real navigation). Walks inline JSX only — routes\n * produced by an intermediate component are opaque and yield `[]`. */\nconst collectRoutes = (node: ReactNode): RouteObject[] =>\n\tChildren.toArray(node).flatMap((child) => {\n\t\tif (!isValidElement(child)) return [];\n\t\tconst { children, index, path } = readRouteProps(child.props);\n\t\tif (index === true) return [{ index: true, path }];\n\t\tif (path !== undefined) {\n\t\t\treturn [{ children: collectRoutes(children), path }];\n\t\t}\n\n\t\treturn collectRoutes(children);\n\t});\n\nconst toPathname = (href: string) => {\n\tif (typeof window === 'undefined') return href;\n\n\ttry {\n\t\treturn new URL(href, window.location.href).pathname;\n\t} catch {\n\t\treturn href;\n\t}\n};\n\ntype NavigationBridgeProps = {\n\troutes: RouteObject[];\n\tchildren?: ReactNode;\n};\n\n/** Publishes react-router's `navigate` (plus a route matcher) on\n * `RouterNavigationContext` so `<Link>` — which deliberately never\n * imports react-router — can navigate client-side inside the shell. */\nconst NavigationBridge = ({ routes, children }: NavigationBridgeProps) => {\n\tconst routerNavigate = useNavigate();\n\n\tconst navigate = useCallback(\n\t\t(href: string, options: NavigateOptions = {}) => {\n\t\t\tvoid routerNavigate(href, { replace: options.replace === true });\n\t\t},\n\t\t[routerNavigate]\n\t);\n\n\tconst matches = useCallback(\n\t\t(href: string) => {\n\t\t\tif (routes.length === 0) return null;\n\n\t\t\treturn matchRoutes(routes, toPathname(href)) !== null;\n\t\t},\n\t\t[routes]\n\t);\n\n\tconst value = useMemo<RouterNavigation>(\n\t\t() => ({ matches, navigate }),\n\t\t[matches, navigate]\n\t);\n\n\treturn createElement(RouterNavigationContext.Provider, { value }, children);\n};\n\n/** SSR-safe wrapper around react-router that picks `<StaticRouter>` on the\n * server and `<BrowserRouter>` in the browser. Without it, every SPA page\n * has to write its own `typeof window === 'undefined'` branch and import\n * both routers — boilerplate that's the same in every page.\n *\n * Usage:\n *\n * import { Link, UniversalRouter } from '@absolutejs/absolute/react/router';\n *\n * export const MySpa = ({ url }: { url?: string }) => (\n * <html>\n * <Head />\n * <body>\n * <UniversalRouter url={url}>\n * <Link href=\"/foo\">Foo</Link>\n * <Routes>\n * <Route path=\"/foo\" element={<Foo />} />\n * </Routes>\n * </UniversalRouter>\n * </body>\n * </html>\n * );\n *\n * `<Link>`s rendered inside navigate client-side when their `href`\n * matches one of the `<Route>`s above (see `navigationContext.ts`).\n *\n * This component lives on its own `@absolutejs/absolute/react/router`\n * subpath rather than the main `@absolutejs/absolute/react` barrel so the\n * static `import 'react-router'` below only loads for consumers who\n * actually use the router — importing `Head`/`Image`/`Island` from\n * `@absolutejs/absolute/react` does not pull react-router into the bundle,\n * so projects that don't route aren't forced to install it.\n *\n * `<BrowserRouter>` reads `window.history` at construction, so it throws\n * if instantiated on the server. The `typeof window` check has to live at\n * render time (not import time) because the module is loaded in both\n * environments. */\nexport const UniversalRouter = ({ url, children }: UniversalRouterProps) => {\n\tconst routes = useMemo(() => collectRoutes(children), [children]);\n\tconst bridged = createElement(NavigationBridge, { routes }, children);\n\n\tif (typeof window === 'undefined') {\n\t\treturn createElement(StaticRouter, { location: url ?? '/' }, bridged);\n\t}\n\n\treturn createElement(BrowserRouter, null, bridged);\n};\n"
11
11
  ],
12
- "mappings": "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",
13
- "debugId": "92D7DC91C0C0265C64756E2164756E21",
12
+ "mappings": "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",
13
+ "debugId": "E23A7D6B7152942564756E2164756E21",
14
14
  "names": []
15
15
  }
@@ -2421,6 +2421,17 @@ var defineFileRouteWith = (framework, route, render) => {
2421
2421
 
2422
2422
  // src/core/lookup.ts
2423
2423
  init_requestContext();
2424
+ var DOUBLED_RSC_SUFFIX = "RSCRSC";
2425
+ var warnedDoubledRscKeys = new Set;
2426
+ var warnDoubledRscKey = (source, name, assetPath) => {
2427
+ if (!name.endsWith(DOUBLED_RSC_SUFFIX))
2428
+ return;
2429
+ const current = name.slice(0, -"RSC".length);
2430
+ if (source[current] !== assetPath || warnedDoubledRscKeys.has(name))
2431
+ return;
2432
+ warnedDoubledRscKeys.add(name);
2433
+ console.warn(`[asset] key "${name}" is deprecated: React Server Components pages whose file name ends in RSC no longer get the suffix twice. Use asset(manifest, '${current}').`);
2434
+ };
2424
2435
  var asset = (source, name) => {
2425
2436
  const assetPath = source[name];
2426
2437
  if (assetPath === undefined) {
@@ -2434,6 +2445,8 @@ var asset = (source, name) => {
2434
2445
  console.warn(`[asset] key "${name}" not found in manifest (dev mode \u2014 skipping)`);
2435
2446
  return "";
2436
2447
  }
2448
+ if (!isProductionRuntime())
2449
+ warnDoubledRscKey(source, name, assetPath);
2437
2450
  return assetPath;
2438
2451
  };
2439
2452
 
@@ -3001,5 +3014,5 @@ export {
3001
3014
  reactFileRoute
3002
3015
  };
3003
3016
 
3004
- //# debugId=F85367DEFF82D2FC64756E2164756E21
3017
+ //# debugId=FB633E162EB858B764756E2164756E21
3005
3018
  //# sourceMappingURL=server.js.map