@absolutejs/absolute 0.20.0-beta.121 → 0.20.0-beta.123

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 (59) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/changelog.json +57 -0
  3. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  4. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  5. package/dist/angular/index.js +14 -2
  6. package/dist/angular/index.js.map +5 -4
  7. package/dist/angular/server.js +14 -2
  8. package/dist/angular/server.js.map +5 -4
  9. package/dist/build.js +120 -43
  10. package/dist/build.js.map +7 -6
  11. package/dist/cli/config/server.js +9 -1
  12. package/dist/cli/{dev-pdefc9ac.js → dev-s7kct3xq.js} +6 -1
  13. package/dist/cli/index-hty8111z.js +410 -0
  14. package/dist/cli/index.js +6 -2
  15. package/dist/cli/patchedBun-zjtrn2s4.js +38 -0
  16. package/dist/client/chunks/index-dk743xs6.js +146 -0
  17. package/dist/client/chunks/index-dk743xs6.js.map +10 -0
  18. package/dist/client/chunks/index-jrcwp722.js +12 -0
  19. package/dist/client/chunks/index-jrcwp722.js.map +10 -0
  20. package/dist/client/chunks/{islands-xj2n8nwf.js → islands-50dg63j9.js} +6 -3
  21. package/dist/client/chunks/{islands-xj2n8nwf.js.map → islands-50dg63j9.js.map} +3 -3
  22. package/dist/client/chunks/{react-pdg4325x.js → react-yq4ss9y4.js} +4 -3
  23. package/dist/client/chunks/{react-pdg4325x.js.map → react-yq4ss9y4.js.map} +2 -2
  24. package/dist/client/index.js +5 -4
  25. package/dist/client/index.js.map +2 -2
  26. package/dist/dev/client/handlers/react.ts +31 -39
  27. package/dist/dev/client/hmrClient.ts +3 -0
  28. package/dist/dev/serverBootstrap.js +11 -0
  29. package/dist/index.js +122 -45
  30. package/dist/index.js.map +7 -6
  31. package/dist/islands/index.js +14 -2
  32. package/dist/islands/index.js.map +5 -4
  33. package/dist/mobile/remoteMacAgentEntry.js +1 -1
  34. package/dist/react/index.js +14 -2
  35. package/dist/react/index.js.map +5 -4
  36. package/dist/react/server.js +14 -2
  37. package/dist/react/server.js.map +5 -4
  38. package/dist/src/cli/patchedBun.d.ts +84 -0
  39. package/dist/src/client/browserTranslation.d.ts +3 -0
  40. package/dist/src/client/browserTranslationAttributes.d.ts +2 -0
  41. package/dist/src/dev/hotRejectionGuard.d.ts +1 -0
  42. package/dist/src/dev/moduleServer.d.ts +10 -3
  43. package/dist/src/mobile/emulatorDoctor.d.ts +1 -1
  44. package/dist/src/vue/components/Image.d.ts +1 -1
  45. package/dist/svelte/index.js +14 -2
  46. package/dist/svelte/index.js.map +5 -4
  47. package/dist/svelte/server.js +14 -2
  48. package/dist/svelte/server.js.map +5 -4
  49. package/dist/types/globals.d.ts +10 -0
  50. package/dist/vue/browser.js +75 -8
  51. package/dist/vue/browser.js.map +5 -4
  52. package/dist/vue/index.js +77 -9
  53. package/dist/vue/index.js.map +6 -5
  54. package/dist/vue/server.js +14 -2
  55. package/dist/vue/server.js.map +5 -4
  56. package/package.json +1 -1
  57. package/dist/client/chunks/index-5py90ctf.js +0 -87
  58. package/dist/client/chunks/index-5py90ctf.js.map +0 -10
  59. package/dist/cli/{mobile-00bqw12c.js → mobile-6kdsrhxy.js} +3 -3
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/client/browserTranslation.ts"],
4
+ "sourcesContent": [
5
+ "import { TRANSLATABLE_ATTRIBUTES } from './browserTranslationAttributes';\n\ntype TextBaseline = ReadonlyMap<number, string>;\ntype SsrTextBaselines = WeakMap<Element, TextBaseline>;\ntype AttributeBaseline = ReadonlyMap<string, string>;\ntype SsrAttributeBaselines = WeakMap<Element, AttributeBaseline>;\n\ndeclare global {\n\t// Window augmentation requires interface declaration merging.\n\t// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n\tinterface Window {\n\t\t__ABSOLUTE_SSR_TEXT_BASELINES__?: SsrTextBaselines;\n\t\t__ABSOLUTE_SSR_ATTRIBUTE_BASELINES__?: SsrAttributeBaselines;\n\t}\n}\n\ntype TranslatedText = {\n\tbaseline: string;\n\tindex: number;\n\tpath: number[];\n\ttranslated: string;\n};\n\ntype TranslatedAttribute = {\n\tbaseline: string;\n\tname: string;\n\tpath: number[];\n\ttranslated: string;\n};\n\n// Translate inserts font wrappers around text. Remove only newly inserted,\n// text-only font trees; never flatten authored elements or interactive markup.\nconst translatedFontText = (\n\tnode: Node | undefined,\n\tbaselines: SsrTextBaselines\n) => {\n\tif (!(node instanceof Element) || node.tagName !== 'FONT') return undefined;\n\tconst elements = [node, ...node.querySelectorAll('*')];\n\tif (\n\t\telements.some(\n\t\t\t(element) => element.tagName !== 'FONT' || baselines.has(element)\n\t\t)\n\t)\n\t\treturn undefined;\n\n\treturn node.textContent ?? '';\n};\n\nconst translationRestorer = (restore: () => void, hasTranslation: boolean) =>\n\tObject.assign(restore, { hasTranslation });\n\nconst emptyTranslationRestorer = () =>\n\ttranslationRestorer(() => undefined, false);\n\nconst textNodeAt = (parent: Element, index: number) => {\n\tconst node = parent.childNodes[index];\n\n\treturn node instanceof Text ? node : undefined;\n};\n\nconst prepareTextTranslation = (\n\telement: Element,\n\tindex: number,\n\tbaseline: string,\n\tpath: number[],\n\tbaselines: SsrTextBaselines\n) => {\n\tconst original = element.childNodes[index];\n\tconst wrappedText = translatedFontText(original, baselines);\n\tif (wrappedText !== undefined) {\n\t\toriginal?.replaceWith(document.createTextNode(baseline));\n\n\t\treturn { baseline, index, path, translated: wrappedText };\n\t}\n\tconst node = textNodeAt(element, index);\n\tif (node === undefined || node.data === baseline) return undefined;\n\tconst snapshot: TranslatedText = {\n\t\tbaseline,\n\t\tindex,\n\t\tpath,\n\t\ttranslated: node.data\n\t};\n\tnode.data = baseline;\n\n\treturn snapshot;\n};\n\nconst visitElements = (root: Element, visit: (element: Element) => void) => {\n\tvisit(root);\n\tfor (const element of root.querySelectorAll('*')) visit(element);\n};\n\nconst elementPath = (root: Element, element: Element) => {\n\tconst path: number[] = [];\n\tlet current = element;\n\twhile (current !== root) {\n\t\tconst parent = current.parentElement;\n\t\tif (parent === null) return null;\n\t\tpath.unshift([...parent.children].indexOf(current));\n\t\tcurrent = parent;\n\t}\n\n\treturn path;\n};\n\nconst elementAtPath = (root: Element, path: number[]) => {\n\tlet current = root;\n\tfor (const index of path) {\n\t\tconst child = current.children[index];\n\t\tif (!(child instanceof Element)) return null;\n\t\tcurrent = child;\n\t}\n\n\treturn current;\n};\n\n/** Capture server-authored text before client modules load. Absolute page\n * handlers install the same snapshot inline; this export supports custom\n * documents and non-standard bootstraps. */\nexport const captureSsrTextBaselines = (root: Element | null) => {\n\tif (root === null || typeof window === 'undefined') return;\n\tconst baselines: SsrTextBaselines =\n\t\twindow.__ABSOLUTE_SSR_TEXT_BASELINES__ ?? new WeakMap();\n\tconst attributes: SsrAttributeBaselines =\n\t\twindow.__ABSOLUTE_SSR_ATTRIBUTE_BASELINES__ ?? new WeakMap();\n\tvisitElements(root, (element) => {\n\t\tconst text = new Map<number, string>();\n\t\tfor (const [index, node] of [...element.childNodes].entries()) {\n\t\t\tif (node.nodeType === Node.TEXT_NODE)\n\t\t\t\ttext.set(index, node.nodeValue ?? '');\n\t\t}\n\t\tif (text.size > 0) baselines.set(element, text);\n\t\tconst values = new Map<string, string>();\n\t\tfor (const name of TRANSLATABLE_ATTRIBUTES) {\n\t\t\tconst value = element.getAttribute(name);\n\t\t\tif (value !== null) values.set(name, value);\n\t\t}\n\t\tif (values.size > 0) attributes.set(element, values);\n\t});\n\twindow.__ABSOLUTE_SSR_TEXT_BASELINES__ = baselines;\n\twindow.__ABSOLUTE_SSR_ATTRIBUTE_BASELINES__ = attributes;\n};\n\n/** Temporarily restore server text while a framework attaches to SSR DOM,\n * then reapply translated text. Paths preserve translations even when a\n * framework replaces nodes while mounting. Genuine server/client mismatches\n * are left unchanged. */\nexport const prepareBrowserTranslationHydration = (root: Element | null) => {\n\tif (root === null || typeof window === 'undefined')\n\t\treturn emptyTranslationRestorer();\n\tconst baselines = window.__ABSOLUTE_SSR_TEXT_BASELINES__;\n\tif (baselines === undefined) return emptyTranslationRestorer();\n\tconst translated: TranslatedText[] = [];\n\tconst translatedAttributes: TranslatedAttribute[] = [];\n\tconst attributes = window.__ABSOLUTE_SSR_ATTRIBUTE_BASELINES__;\n\tvisitElements(root, (element) => {\n\t\tconst text = baselines.get(element);\n\t\tconst path = elementPath(root, element);\n\t\tif (path === null) return;\n\t\tfor (const [index, baseline] of text ?? []) {\n\t\t\tconst snapshot = prepareTextTranslation(\n\t\t\t\telement,\n\t\t\t\tindex,\n\t\t\t\tbaseline,\n\t\t\t\tpath,\n\t\t\t\tbaselines\n\t\t\t);\n\t\t\tif (snapshot === undefined) continue;\n\t\t\ttranslated.push(snapshot);\n\t\t}\n\t\tfor (const [name, baseline] of attributes?.get(element) ?? []) {\n\t\t\tconst value = element.getAttribute(name);\n\t\t\tif (value === null || value === baseline) continue;\n\t\t\ttranslatedAttributes.push({\n\t\t\t\tbaseline,\n\t\t\t\tname,\n\t\t\t\tpath,\n\t\t\t\ttranslated: value\n\t\t\t});\n\t\t\telement.setAttribute(name, baseline);\n\t\t}\n\t});\n\n\treturn translationRestorer(\n\t\t() => {\n\t\t\tfor (const snapshot of translated) {\n\t\t\t\tconst parent = elementAtPath(root, snapshot.path);\n\t\t\t\tif (parent === null) continue;\n\t\t\t\tconst node = textNodeAt(parent, snapshot.index);\n\t\t\t\tif (node !== undefined && node.data === snapshot.baseline)\n\t\t\t\t\tnode.data = snapshot.translated;\n\t\t\t}\n\t\t\tfor (const snapshot of translatedAttributes) {\n\t\t\t\tconst element = elementAtPath(root, snapshot.path);\n\t\t\t\tif (element?.getAttribute(snapshot.name) === snapshot.baseline)\n\t\t\t\t\telement.setAttribute(snapshot.name, snapshot.translated);\n\t\t\t}\n\t\t},\n\t\ttranslated.length > 0 || translatedAttributes.length > 0\n\t);\n};\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "2B49FE79D0C510E564756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,12 @@
1
+ // src/client/browserTranslationAttributes.ts
2
+ var TRANSLATABLE_ATTRIBUTES = [
3
+ "alt",
4
+ "title",
5
+ "placeholder",
6
+ "aria-label"
7
+ ];
8
+
9
+ export { TRANSLATABLE_ATTRIBUTES };
10
+
11
+ //# debugId=4CF889867CFAFA1F64756E2164756E21
12
+ //# sourceMappingURL=index-jrcwp722.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/client/browserTranslationAttributes.ts"],
4
+ "sourcesContent": [
5
+ "/** Human-readable attributes a browser translator may rewrite before hydration. */\nexport const TRANSLATABLE_ATTRIBUTES = [\n\t'alt',\n\t'title',\n\t'placeholder',\n\t'aria-label'\n] as const;\n"
6
+ ],
7
+ "mappings": ";AACO,IAAM,0BAA0B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;",
8
+ "debugId": "4CF889867CFAFA1F64756E2164756E21",
9
+ "names": []
10
+ }
@@ -1,3 +1,6 @@
1
+ import {
2
+ TRANSLATABLE_ATTRIBUTES
3
+ } from "./index-jrcwp722.js";
1
4
  import {
2
5
  isDevelopmentRuntime,
3
6
  isProductionRuntime,
@@ -81,7 +84,7 @@ if (typeof globalThis !== "undefined") {
81
84
  }
82
85
 
83
86
  // src/core/browserTranslation.ts
84
- var BROWSER_TRANSLATION_BASELINE_SCRIPT = "window.__ABSOLUTE_SSR_TEXT_BASELINES__=new WeakMap();" + "{const r=document.body,b=window.__ABSOLUTE_SSR_TEXT_BASELINES__;" + 'if(r)for(const e of [r,...r.querySelectorAll("*")]){' + "const t=new Map();for(const [i,n]of[...e.childNodes].entries())" + 'if(n.nodeType===3)t.set(i,n.nodeValue??"");if(t.size)b.set(e,t);}}';
87
+ var BROWSER_TRANSLATION_BASELINE_SCRIPT = "window.__ABSOLUTE_SSR_TEXT_BASELINES__=new WeakMap();" + "window.__ABSOLUTE_SSR_ATTRIBUTE_BASELINES__=new WeakMap();" + "{const r=document.body,b=window.__ABSOLUTE_SSR_TEXT_BASELINES__," + "a=window.__ABSOLUTE_SSR_ATTRIBUTE_BASELINES__;" + 'if(r)for(const e of [r,...r.querySelectorAll("*")]){' + "const t=new Map();for(const [i,n]of[...e.childNodes].entries())" + 'if(n.nodeType===3)t.set(i,n.nodeValue??"");if(t.size)b.set(e,t);' + `const v=new Map();for(const k of ${JSON.stringify(TRANSLATABLE_ATTRIBUTES)}){` + "const s=e.getAttribute(k);if(s!==null)v.set(k,s);}if(v.size)a.set(e,v);}}";
85
88
 
86
89
  // src/angular/ssrRender.ts
87
90
  var routeContextCache = new Map;
@@ -277,5 +280,5 @@ export {
277
280
  renderAngularIslandToHtml
278
281
  };
279
282
 
280
- //# debugId=7C3519B230DCC58D64756E2164756E21
281
- //# sourceMappingURL=islands-xj2n8nwf.js.map
283
+ //# debugId=718D23D8BE97A0B064756E2164756E21
284
+ //# sourceMappingURL=islands-50dg63j9.js.map
@@ -4,11 +4,11 @@
4
4
  "sourcesContent": [
5
5
  "import type { AngularDeps } from '../../types/angular';\nimport { resolveAngularRuntimePath } from './resolveAngularPackage';\nimport {\n\tisDevelopmentRuntime,\n\tisProductionRuntime\n} from '../utils/runtimeMode';\n\nconst initDominoAdapter = (platformServer: {\n\tɵDominoAdapter?: { makeCurrent?: () => void };\n}) => {\n\ttry {\n\t\tplatformServer.ɵDominoAdapter?.makeCurrent?.();\n\t} catch (err) {\n\t\tconsole.error('Failed to initialize DominoAdapter:', err);\n\t}\n};\n\nconst loadAngularDeps = async () => {\n\t// JIT compiler is only needed in development, where user pages are\n\t// runtime-compiled by `compileAngularFileJIT` and emit partial\n\t// declarations that need the compiler facade to link. In production\n\t// the linker has already processed every partial declaration into\n\t// final ɵdir/ɵcmp/ɵfac at vendor build time, so the compiler isn't\n\t// imported and isn't part of the prod vendor bundle.\n\tif (!isProductionRuntime()) {\n\t\t// Bare specifier in dev — Bun's module cache dedupes on\n\t\t// normalized specifier, so this is the same instance as the\n\t\t// `import \"@angular/compiler\"` baked into bundled server pages.\n\t\tawait import('@angular/compiler');\n\t}\n\n\t// angularPatch imports @angular/platform-server internally, so it\n\t// must also run after the compiler is available.\n\tconst { applyPatches } = await import('./angularPatch');\n\tawait applyPatches();\n\n\t// In dev (no Angular server vendor on disk — see §1.1), use bare\n\t// specifiers so Bun resolves them through node_modules and shares\n\t// the same module records with the bundled server pages, which\n\t// also have bare `@angular/*` imports in dev. Production keeps the\n\t// resolved-path import because the vendor bundle is what every\n\t// server-side import points at, and the resolved path is stable.\n\tconst useBareSpecifiers = !isProductionRuntime();\n\tconst [platformBrowser, platformServer, common, core] = await Promise.all([\n\t\timport(\n\t\t\tuseBareSpecifiers\n\t\t\t\t? '@angular/platform-browser'\n\t\t\t\t: resolveAngularRuntimePath('@angular/platform-browser')\n\t\t),\n\t\timport(\n\t\t\tuseBareSpecifiers\n\t\t\t\t? '@angular/platform-server'\n\t\t\t\t: resolveAngularRuntimePath('@angular/platform-server')\n\t\t),\n\t\timport(\n\t\t\tuseBareSpecifiers\n\t\t\t\t? '@angular/common'\n\t\t\t\t: resolveAngularRuntimePath('@angular/common')\n\t\t),\n\t\timport(\n\t\t\tuseBareSpecifiers\n\t\t\t\t? '@angular/core'\n\t\t\t\t: resolveAngularRuntimePath('@angular/core')\n\t\t)\n\t]);\n\n\tif (!isDevelopmentRuntime()) {\n\t\tcore.enableProdMode();\n\t}\n\n\tinitDominoAdapter(platformServer);\n\n\treturn {\n\t\tAPP_BASE_HREF: common.APP_BASE_HREF,\n\t\tbootstrapApplication: platformBrowser.bootstrapApplication,\n\t\tComponent: core.Component,\n\t\tDomSanitizer: platformBrowser.DomSanitizer,\n\t\tENVIRONMENT_INITIALIZER: core.ENVIRONMENT_INITIALIZER,\n\t\tinject: core.inject,\n\t\tInjectionToken: core.InjectionToken,\n\t\tNgComponentOutlet: common.NgComponentOutlet,\n\t\tprovideClientHydration: platformBrowser.provideClientHydration,\n\t\tprovideServerRendering: platformServer.provideServerRendering,\n\t\tprovideZonelessChangeDetection: core.provideZonelessChangeDetection,\n\t\treflectComponentType: core.reflectComponentType,\n\t\trenderApplication: platformServer.renderApplication,\n\t\tREQUEST: core.REQUEST,\n\t\tREQUEST_CONTEXT: core.REQUEST_CONTEXT,\n\t\tRESPONSE_INIT: core.RESPONSE_INIT,\n\t\tSanitizer: core.Sanitizer,\n\t\tSecurityContext: core.SecurityContext,\n\t\twithHttpTransferCacheOptions:\n\t\t\tplatformBrowser.withHttpTransferCacheOptions\n\t};\n};\n\nlet angularDeps: Promise<AngularDeps> | null = null;\n\nexport const getAngularDeps = () => {\n\tif (!angularDeps) {\n\t\tangularDeps = loadAngularDeps();\n\t}\n\n\treturn angularDeps;\n};\n\n// TODO(test): the unit-style coverage in\n// `tests/integration/angular/single-core.test.ts` checks that\n// `resolveAngularRuntimePath` is consistent across calls and that two\n// dynamic imports from the resolved path return the same module record\n// — necessary but not sufficient. A stronger test would spawn a dev\n// server, trigger an HMR cycle, and assert the SSR process never sees\n// two `@angular/core` evaluations (e.g. via a marker incremented at\n// module init in a vendor stub). The fixture in\n// `tests/fixtures/compile-angular` is wired for compile-time checks\n// only, so end-to-end verification of the SSR core uniqueness fix\n// happens manually in `~/onspark/absolutejs/dealroom` (see\n// docs/ABSOLUTEJS_ANGULAR_HMR.md §3.9).\n",
6
6
  "/**\n * Utility for registering client-side scripts that need to run after Angular SSR hydration.\n *\n * This is necessary because Angular's lifecycle hooks don't always run reliably on the client\n * after SSR hydration, especially for event listeners attached to DOM elements.\n *\n * Usage in Angular components:\n * ```typescript\n * import { registerClientScript } from '@absolutejs/absolute';\n *\n * // Register an event listener script\n * registerClientScript(() => {\n * const element = document.querySelector('.my-element');\n * if (element) {\n * element.addEventListener('click', () => {\n * console.log('Clicked!');\n * });\n * }\n * });\n * ```\n *\n * The script will be automatically injected into the HTML response and executed on the client.\n */\n\n// Request-scoped registry for client scripts\n// Each request gets its own set of scripts to inject\nconst scriptRegistry = new Map<string, Set<() => void>>();\n\n// Generate a unique request ID for tracking scripts per request\nlet requestCounter = 0;\nconst getRequestId = () => `req_${Date.now()}_${++requestCounter}`;\n\n// Allow SSR frameworks to inject a request context getter (e.g. AsyncLocalStorage)\nlet ssrContextGetter: (() => string | undefined) | null = null;\nexport const getSsrContextId = () =>\n\tssrContextGetter?.() ||\n\tObject.getOwnPropertyDescriptor(globalThis, '__absolutejs_requestId')\n\t\t?.value;\nexport const registerClientScript = (\n\tscript: () => void,\n\trequestId?: string\n) => {\n\t// Try to get requestId from explicit arg, then Async Context, then global fallback\n\tconst id = requestId || getSsrContextId() || getRequestId();\n\n\tif (!scriptRegistry.has(id)) {\n\t\tscriptRegistry.set(id, new Set());\n\t}\n\n\tscriptRegistry.get(id)?.add(script);\n\n\treturn id;\n};\nexport const setSsrContextGetter = (getter: () => string | undefined) => {\n\tssrContextGetter = getter;\n};\n\n// Make registerClientScript available globally during SSR for Angular components\n// Using type assertion for globalThis extension\nif (typeof globalThis !== 'undefined') {\n\tObject.assign(globalThis, { registerClientScript });\n}\n\n/**\n * Get all registered scripts for a request and clear them.\n * This is called by the page handler after rendering.\n *\n * @param requestId - The request ID to get scripts for\n * @returns Array of script functions, or empty array if none registered\n */\nexport const clearAllClientScripts = () => {\n\tscriptRegistry.clear();\n};\nexport const generateClientScriptCode = (scripts: (() => void)[]) => {\n\tif (scripts.length === 0) {\n\t\treturn '';\n\t}\n\n\t// Convert functions to strings and wrap in IIFE\n\tconst scriptCode = scripts\n\t\t.map((script, index) => {\n\t\t\t// Get the function body as a string\n\t\t\tconst funcString = script.toString();\n\n\t\t\t// Extract the body (everything between { and })\n\t\t\tconst bodyMatch = funcString.match(/\\{([\\s\\S]*)\\}/);\n\t\t\tif (!bodyMatch || !bodyMatch[1]) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst body = bodyMatch[1].trim();\n\n\t\t\t// Wrap in IIFE with MutationObserver for DOM readiness\n\t\t\treturn `\n\t(function() {\n\t\tvar executed = false;\n\t\tfunction executeScript_${index}() {\n\t\t\tif (executed) return;\n\t\t\texecuted = true;\n\t\t\t${body}\n\t\t}\n\n\t\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\t\texecuteScript_${index}();\n\t\t} else {\n\t\t\tdocument.addEventListener('DOMContentLoaded', executeScript_${index});\n\t\t}\n\n\t\t// Watch for hydration-added elements\n\t\tvar observer = new MutationObserver(function() {\n\t\t\texecuteScript_${index}();\n\t\t\tif (executed) observer.disconnect();\n\t\t});\n\t\tif (!executed) {\n\t\t\tobserver.observe(document.body || document.documentElement, { childList: true, subtree: true });\n\t\t}\n\n\t\t// Single fallback timeout\n\t\tsetTimeout(function() {\n\t\t\texecuteScript_${index}();\n\t\t\tobserver.disconnect();\n\t\t}, 1000);\n\t})();`;\n\t\t})\n\t\t.join('\\n');\n\n\treturn `<script>\n(function() {\n${scriptCode}\n})();\n</script>`;\n};\nexport const getAndClearClientScripts = (requestId?: string) => {\n\tconst id = requestId || ssrContextGetter?.();\n\tif (!id) return [];\n\n\tconst scripts = scriptRegistry.get(id);\n\tif (!scripts) {\n\t\treturn [];\n\t}\n\n\tconst scriptArray = Array.from(scripts);\n\tscriptRegistry.delete(id);\n\n\treturn scriptArray;\n};\n",
7
- "const BASELINE_MARKER = '__ABSOLUTE_SSR_TEXT_BASELINES__';\n\n/** Inline this after SSR markup and before any client entry executes. The\n * snapshot records server-authored text while keeping it out of the DOM, so\n * browser translation remains free to edit the rendered text. */\nexport const BROWSER_TRANSLATION_BASELINE_SCRIPT =\n\t'window.__ABSOLUTE_SSR_TEXT_BASELINES__=new WeakMap();' +\n\t'{const r=document.body,b=window.__ABSOLUTE_SSR_TEXT_BASELINES__;' +\n\t'if(r)for(const e of [r,...r.querySelectorAll(\"*\")]){' +\n\t'const t=new Map();for(const [i,n]of[...e.childNodes].entries())' +\n\t'if(n.nodeType===3)t.set(i,n.nodeValue??\"\");if(t.size)b.set(e,t);}}';\n\nexport const browserTranslationBaselineTag = () =>\n\t`<script>${BROWSER_TRANSLATION_BASELINE_SCRIPT}</script>`;\n\nexport const injectBrowserTranslationBaseline = (html: string) => {\n\tif (html.includes(BASELINE_MARKER)) return html;\n\tconst script = browserTranslationBaselineTag();\n\tconst closingBodyIndex = html.lastIndexOf('</body>');\n\tif (closingBodyIndex < 0) return `${html}${script}`;\n\n\treturn `${html.slice(0, closingBodyIndex)}${script}${html.slice(closingBodyIndex)}`;\n};\n",
7
+ "import { TRANSLATABLE_ATTRIBUTES } from '../client/browserTranslationAttributes';\n\nconst BASELINE_MARKER = '__ABSOLUTE_SSR_TEXT_BASELINES__';\n\n/** Inline this after SSR markup and before any client entry executes. The\n * snapshot records server-authored text while keeping it out of the DOM, so\n * browser translation remains free to edit the rendered text. */\nexport const BROWSER_TRANSLATION_BASELINE_SCRIPT =\n\t'window.__ABSOLUTE_SSR_TEXT_BASELINES__=new WeakMap();' +\n\t'window.__ABSOLUTE_SSR_ATTRIBUTE_BASELINES__=new WeakMap();' +\n\t'{const r=document.body,b=window.__ABSOLUTE_SSR_TEXT_BASELINES__,' +\n\t'a=window.__ABSOLUTE_SSR_ATTRIBUTE_BASELINES__;' +\n\t'if(r)for(const e of [r,...r.querySelectorAll(\"*\")]){' +\n\t'const t=new Map();for(const [i,n]of[...e.childNodes].entries())' +\n\t'if(n.nodeType===3)t.set(i,n.nodeValue??\"\");if(t.size)b.set(e,t);' +\n\t`const v=new Map();for(const k of ${JSON.stringify(TRANSLATABLE_ATTRIBUTES)}){` +\n\t'const s=e.getAttribute(k);if(s!==null)v.set(k,s);}if(v.size)a.set(e,v);}}';\n\nexport const browserTranslationBaselineTag = () =>\n\t`<script>${BROWSER_TRANSLATION_BASELINE_SCRIPT}</script>`;\n\nexport const injectBrowserTranslationBaseline = (html: string) => {\n\tif (html.includes(BASELINE_MARKER)) return html;\n\tconst script = browserTranslationBaselineTag();\n\tconst closingBodyIndex = html.lastIndexOf('</body>');\n\tif (closingBodyIndex < 0) return `${html}${script}`;\n\n\treturn `${html.slice(0, closingBodyIndex)}${script}${html.slice(closingBodyIndex)}`;\n};\n",
8
8
  "import type { EnvironmentProviders, Provider, Type } from '@angular/core';\nimport type { BootstrapContext } from '@angular/platform-browser';\nimport type { AngularDeps, CachedRouteData } from '../../types/angular';\nimport {\n\tgetAndClearClientScripts,\n\tgenerateClientScriptCode\n} from '../utils/registerClientScript';\nimport { browserTranslationBaselineTag } from '../core/browserTranslation';\nimport { buildAbsoluteHttpTransferCacheOptions } from './httpTransferCache';\nimport { buildRequestProviders } from './requestProviders';\n\n// --- Last-used requestContext cache for HMR ---\n// Stores { requestContext, headTag } from the most recent real request per\n// route so HMR re-renders with the same data the user last saw.\n\nconst routeContextCache = new Map<string, CachedRouteData>();\n\nexport const cacheRouteData = (pagePath: string, data: CachedRouteData) => {\n\tconst cacheKey = pagePath.split('?')[0] ?? pagePath;\n\trouteContextCache.set(cacheKey, data);\n};\nexport const getCachedRouteData = (pagePath: string) =>\n\trouteContextCache.get(pagePath);\n\n// --- Selector cache ---\n\nconst selectorCache = new Map<string, string>();\nexport const buildProviders = (\n\tdeps: AngularDeps,\n\tsanitizer: InstanceType<AngularDeps['DomSanitizer']>,\n\trequest: Request | undefined,\n\trequestContext: unknown,\n\tresponseInit: ResponseInit | undefined,\n\tuserProviders: ReadonlyArray<Provider | EnvironmentProviders> = []\n) => [\n\tdeps.provideServerRendering(),\n\tdeps.provideClientHydration(\n\t\tdeps.withHttpTransferCacheOptions(\n\t\t\tbuildAbsoluteHttpTransferCacheOptions()\n\t\t)\n\t),\n\tdeps.provideZonelessChangeDetection(),\n\t{ provide: deps.APP_BASE_HREF, useValue: '/' },\n\t{ provide: deps.DomSanitizer, useValue: sanitizer },\n\t{ provide: deps.Sanitizer, useValue: sanitizer },\n\t...buildRequestProviders(deps, request, requestContext, responseInit),\n\t...userProviders\n];\nexport const clearSelectorCache = () => selectorCache.clear();\n\nexport const resolveSelector = (\n\tdeps: AngularDeps,\n\tpagePath: string,\n\tPageComponent: Type<unknown>\n) => {\n\tconst cached = selectorCache.get(pagePath);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst selector =\n\t\tdeps.reflectComponentType(PageComponent)?.selector ?? 'ng-app';\n\tselectorCache.set(pagePath, selector);\n\n\treturn selector;\n};\n\n// --- Inject HTML helper ---\n\nconst injectBeforeClose = (html: string, snippet: string) => {\n\tif (html.includes('</body>')) {\n\t\treturn html.replace('</body>', `${snippet}</body>`);\n\t}\n\tif (html.includes('</html>')) {\n\t\treturn html.replace('</html>', `${snippet}</html>`);\n\t}\n\n\treturn html + snippet;\n};\n\n// --- Post-render HTML injection ---\n\nexport const injectSsrScripts = (\n\thtml: string,\n\trequestId: string,\n\tindexPath: string,\n\trequestContext?: unknown\n) => {\n\tlet result = injectBeforeClose(html, browserTranslationBaselineTag());\n\n\tconst registeredScripts = getAndClearClientScripts(requestId);\n\tif (registeredScripts.length > 0) {\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\tgenerateClientScriptCode(registeredScripts)\n\t\t);\n\t}\n\n\tif (requestContext !== undefined) {\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\t`<script>window.__ABS_ANGULAR_REQUEST_CONTEXT__ = ${JSON.stringify(requestContext)};</script>`\n\t\t);\n\t}\n\n\tif (indexPath) {\n\t\tconst escapedIndexPath = JSON.stringify(indexPath);\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\t`<script>import(${escapedIndexPath});</script>`\n\t\t);\n\t}\n\n\treturn result;\n};\nexport const renderAngularApp = async (\n\tdeps: AngularDeps,\n\tPageComponent: Type<unknown>,\n\tproviders: (Provider | EnvironmentProviders)[],\n\tdocument: string | Document,\n\turl: string = '/'\n) => {\n\tconst bootstrap = (context: BootstrapContext) =>\n\t\tdeps.bootstrapApplication(PageComponent, { providers }, context);\n\n\treturn withSuppressedAngularDevLogs(() =>\n\t\tdeps.renderApplication(bootstrap, {\n\t\t\tdocument,\n\t\t\tplatformProviders: [],\n\t\t\turl\n\t\t})\n\t);\n};\nexport const withSuppressedAngularDevLogs = async <T>(\n\trender: () => Promise<T>\n) => {\n\tconst origLog = console.log;\n\tconsole.log = (...args: unknown[]) => {\n\t\tif (\n\t\t\ttypeof args[0] === 'string' &&\n\t\t\targs[0].includes('development mode')\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\torigLog.apply(console, args);\n\t};\n\n\ttry {\n\t\treturn await render();\n\t} finally {\n\t\tconsole.log = origLog;\n\t}\n};\n",
9
9
  "import { getAngularDeps } from './angularDeps';\nimport { withSuppressedAngularDevLogs } from './ssrRender';\nimport { getSsrContextId } from '../utils/registerClientScript';\n\nconst angularIslandSelector = 'abs-angular-island';\n\nexport const getAngularIslandSelector = (_islandId: string) =>\n\tangularIslandSelector;\nexport const isAngularComponent = (\n\tvalue: unknown\n): value is import('@angular/core').Type<object> => typeof value === 'function';\n\nconst getSelectorFromRenderedIsland = (rootElement: HTMLElement) => {\n\tconst firstChild = rootElement.firstElementChild;\n\tif (!(firstChild instanceof HTMLElement)) {\n\t\treturn null;\n\t}\n\n\tconst selector = firstChild.tagName.toLowerCase();\n\n\treturn selector.length > 0 ? selector : null;\n};\n\nconst getClientAngularComponentSelector = (\n\tcomponent: import('@angular/core').Type<object>\n) => {\n\tconst maybeDef = Reflect.get(component, 'ɵcmp');\n\tif (typeof maybeDef !== 'object' || maybeDef === null) {\n\t\treturn null;\n\t}\n\n\tconst maybeSelectors = Reflect.get(maybeDef, 'selectors');\n\tif (!Array.isArray(maybeSelectors)) {\n\t\treturn null;\n\t}\n\n\tconst [firstSelectorGroup] = maybeSelectors;\n\tif (!Array.isArray(firstSelectorGroup)) {\n\t\treturn null;\n\t}\n\n\tconst [selector] = firstSelectorGroup;\n\n\treturn typeof selector === 'string' && selector.length > 0\n\t\t? selector\n\t\t: null;\n};\n\nconst createAngularIslandApp = async () => {\n\tconst { EnvironmentInjector, provideZonelessChangeDetection } =\n\t\tawait import('@angular/core');\n\tconst { createApplication } = await import('@angular/platform-browser');\n\tconst app = await createApplication({\n\t\tproviders: [provideZonelessChangeDetection()]\n\t});\n\tconst environmentInjector = app.injector.get(EnvironmentInjector);\n\n\treturn { app, environmentInjector };\n};\n\nlet angularIslandAppPromise: Promise<{\n\tapp: import('@angular/core').ApplicationRef;\n\tenvironmentInjector: import('@angular/core').EnvironmentInjector;\n}> | null = null;\n\nconst getAngularIslandApp = async () => {\n\tif (!angularIslandAppPromise) {\n\t\tangularIslandAppPromise = createAngularIslandApp();\n\t}\n\n\treturn angularIslandAppPromise;\n};\n\ntype AngularIslandWrapperMetadata = {\n\tdeps: Awaited<ReturnType<typeof getAngularDeps>>;\n\tpropsToken: import('@angular/core').InjectionToken<Record<string, unknown>>;\n\tselector: string;\n\tWrapperComponent: import('@angular/core').Type<object>;\n};\n\nconst wrapperMetadataCache = new Map<\n\tstring,\n\tPromise<AngularIslandWrapperMetadata>\n>();\nconst requestRenderCache = new Map<string, Map<string, string>>();\n\nconst getRequestRenderCache = () => {\n\tconst requestId = getSsrContextId();\n\tif (!requestId) {\n\t\treturn null;\n\t}\n\n\tconst cached = requestRenderCache.get(requestId);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst renderCache = new Map<string, string>();\n\trequestRenderCache.set(requestId, renderCache);\n\n\treturn renderCache;\n};\n\nconst getAngularIslandWrapperKey = (\n\tcomponent: import('@angular/core').Type<object>,\n\t_islandId: string\n) => {\n\tconst componentName =\n\t\ttypeof component.name === 'string' && component.name.length > 0\n\t\t\t? component.name\n\t\t\t: 'AngularIsland';\n\n\treturn `${componentName}:${angularIslandSelector}`;\n};\n\nconst getIslandRenderCacheKey = (\n\tcomponent: import('@angular/core').Type<object>,\n\tprops: Record<string, unknown>\n) => {\n\tconst componentName =\n\t\ttypeof component.name === 'string' && component.name.length > 0\n\t\t\t? component.name\n\t\t\t: 'AngularIsland';\n\n\treturn `${componentName}:${JSON.stringify(props)}`;\n};\n\nconst buildAngularIslandWrapperMetadata = async (\n\tcomponent: import('@angular/core').Type<object>,\n\tislandId: string,\n\twrapperKey: string\n) => {\n\t// Resolve Angular through getAngularDeps so the wrapper is built with the\n\t// SAME Angular instance that renders it. In production server-side imports\n\t// point at the pre-linked Angular vendor bundle; bare `@angular/*` imports\n\t// here would instead resolve to node_modules, giving the wrapper component\n\t// (its decorator, InjectionToken and inject) a different Angular instance\n\t// than the render pipeline's injector — every cross-instance token lookup\n\t// then fails with NG0201. (Dev uses a single node_modules Angular, so this\n\t// only manifests in production.)\n\tconst deps = await getAngularDeps();\n\tconst { Component, InjectionToken, NgComponentOutlet, inject } = deps;\n\tconst selector = getAngularIslandSelector(islandId);\n\tconst propsToken = new InjectionToken<Record<string, unknown>>(\n\t\t`${wrapperKey}:props`\n\t);\n\n\tclass AngularIslandWrapperComponent {\n\t\tcomponent = component;\n\t\tprops = inject(propsToken);\n\t}\n\n\treturn {\n\t\tdeps,\n\t\tpropsToken,\n\t\tselector,\n\t\tWrapperComponent: Component({\n\t\t\timports: [NgComponentOutlet, component],\n\t\t\tselector,\n\t\t\tstandalone: true,\n\t\t\ttemplate:\n\t\t\t\t'<ng-container *ngComponentOutlet=\"component; inputs: props\"></ng-container>'\n\t\t})(AngularIslandWrapperComponent)\n\t};\n};\n\nconst createAngularIslandWrapper = async (\n\tcomponent: import('@angular/core').Type<object>,\n\tislandId: string\n) => {\n\tconst wrapperKey = getAngularIslandWrapperKey(component, islandId);\n\tconst cached = wrapperMetadataCache.get(wrapperKey);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst metadataPromise = buildAngularIslandWrapperMetadata(\n\t\tcomponent,\n\t\tislandId,\n\t\twrapperKey\n\t);\n\n\twrapperMetadataCache.set(wrapperKey, metadataPromise);\n\n\treturn metadataPromise;\n};\n\nconst extractAngularIslandRoot = (html: string, selector: string) => {\n\tconst openTag = `<${selector}`;\n\tconst start = html.indexOf(openTag);\n\tif (start < 0) {\n\t\tthrow new Error(`Could not find Angular island root \"${selector}\".`);\n\t}\n\n\tconst endTag = `</${selector}>`;\n\tconst end = html.indexOf(endTag, start);\n\tif (end < 0) {\n\t\tthrow new Error(`Could not close Angular island root \"${selector}\".`);\n\t}\n\n\treturn html.slice(start, end + endTag.length);\n};\n\nexport const mountAngularIsland = async <Props extends Record<string, unknown>>(\n\tcomponent: import('@angular/core').Type<object>,\n\telement: HTMLElement,\n\tprops: Props,\n\tislandId: string\n) => {\n\tawait import('@angular/compiler');\n\tconst { createComponent, inputBinding } = await import('@angular/core');\n\tconst selector = getAngularIslandSelector(islandId);\n\tconst { app, environmentInjector } = await getAngularIslandApp();\n\n\tlet rootElement = element.querySelector(selector);\n\tif (!(rootElement instanceof HTMLElement)) {\n\t\telement.innerHTML = `<${selector}></${selector}>`;\n\t\trootElement = element.querySelector(selector);\n\t}\n\tif (!(rootElement instanceof HTMLElement)) return app;\n\n\tconst componentSelector =\n\t\tgetClientAngularComponentSelector(component) ??\n\t\tgetSelectorFromRenderedIsland(rootElement);\n\tif (!componentSelector) return app;\n\n\trootElement.innerHTML = `<${componentSelector}></${componentSelector}>`;\n\tconst hostElement = rootElement.querySelector(componentSelector);\n\tif (!(hostElement instanceof HTMLElement)) return app;\n\n\tconst bindings = Object.entries(props).map(([key, value]) =>\n\t\tinputBinding(key, () => value)\n\t);\n\tconst componentRef = createComponent(component, {\n\t\tbindings,\n\t\tenvironmentInjector,\n\t\thostElement\n\t});\n\tapp.attachView(componentRef.hostView);\n\tcomponentRef.changeDetectorRef.detectChanges();\n\twindow.__ABS_ANGULAR_ISLAND_APPS__ ??= [];\n\twindow.__ABS_ANGULAR_ISLAND_APPS__.push(app);\n\n\treturn app;\n};\nexport const renderAngularIslandToHtml = async <\n\tProps extends Record<string, unknown>\n>(\n\tcomponent: import('@angular/core').Type<object>,\n\tprops: Props,\n\tislandId: string\n) => {\n\tconst requestCache = getRequestRenderCache();\n\tconst renderCacheKey = getIslandRenderCacheKey(component, props);\n\tconst cachedHtml = requestCache?.get(renderCacheKey);\n\tif (cachedHtml) {\n\t\treturn cachedHtml;\n\t}\n\n\tconst { deps, propsToken, selector, WrapperComponent } =\n\t\tawait createAngularIslandWrapper(component, islandId);\n\n\tconst providers: (\n\t\t| import('@angular/core').Provider\n\t\t| import('@angular/core').EnvironmentProviders\n\t)[] = [\n\t\tdeps.provideServerRendering(),\n\t\tdeps.provideZonelessChangeDetection(),\n\t\t{ provide: deps.APP_BASE_HREF, useValue: '/' },\n\t\t{ provide: propsToken, useValue: props }\n\t];\n\tconst document = `<!DOCTYPE html><html><body><${selector}></${selector}></body></html>`;\n\tconst html = await withSuppressedAngularDevLogs(() =>\n\t\tdeps.renderApplication(\n\t\t\t(context) =>\n\t\t\t\tdeps.bootstrapApplication(\n\t\t\t\t\tWrapperComponent,\n\t\t\t\t\t{ providers },\n\t\t\t\t\tcontext\n\t\t\t\t),\n\t\t\t{\n\t\t\t\tdocument,\n\t\t\t\tplatformProviders: [],\n\t\t\t\turl: '/'\n\t\t\t}\n\t\t)\n\t);\n\tconst islandHtml = extractAngularIslandRoot(html, selector);\n\trequestCache?.set(renderCacheKey, islandHtml);\n\n\treturn islandHtml;\n};\n"
10
10
  ],
11
- "mappings": "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",
12
- "debugId": "7C3519B230DCC58D64756E2164756E21",
11
+ "mappings": "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",
12
+ "debugId": "718D23D8BE97A0B064756E2164756E21",
13
13
  "names": []
14
14
  }
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  prepareBrowserTranslationHydration
3
- } from "./index-5py90ctf.js";
3
+ } from "./index-dk743xs6.js";
4
+ import"./index-jrcwp722.js";
4
5
  import"./index-qxjc7kc5.js";
5
6
 
6
7
  // src/client/hydrators/react.ts
@@ -61,5 +62,5 @@ export {
61
62
  isReactComponent
62
63
  };
63
64
 
64
- //# debugId=510C9829CFC48A1664756E2164756E21
65
- //# sourceMappingURL=react-pdg4325x.js.map
65
+ //# debugId=D11DE2271415DC6964756E2164756E21
66
+ //# sourceMappingURL=react-yq4ss9y4.js.map
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import { type ComponentType, createElement, type ReactNode } from 'react';\nimport { hydrateRoot, type Root as ReactRoot } from 'react-dom/client';\nimport { flushSync } from 'react-dom';\nimport { prepareBrowserTranslationHydration } from '../browserTranslation';\n\nconst reactIslandRoots = new WeakMap<HTMLElement, ReactRoot>();\n\nconst isPropsRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\n// The island marker is rendered by the host page's React tree as a\n// `dangerouslySetInnerHTML` boundary, so the host root tags it with internal\n// fiber expandos (`__reactFiber$…`, `__reactProps$…`). React refuses to create\n// a second root on a node it already manages that also sets\n// dangerouslySetInnerHTML (\"Cannot use a ref … as a container … if that element\n// also sets dangerouslySetInnerHTML\"). Detaching those expandos hands ownership\n// of the marker (and its opaque SSR children) to the island root before it\n// hydrates. The host root never recurses into the boundary, so it has no fibers\n// for the children and won't reconcile this subtree again.\nconst HOST_REACT_EXPANDO_PREFIXES = [\n\t'__reactFiber$',\n\t'__reactProps$',\n\t'__reactContainer$',\n\t'__reactEvents$',\n\t'__reactListeners$',\n\t'__reactHandles$'\n];\n\nconst detachFromHostReactRoot = (element: HTMLElement) => {\n\tfor (const key of Object.keys(element)) {\n\t\tconst isHostExpando = HOST_REACT_EXPANDO_PREFIXES.some((prefix) =>\n\t\t\tkey.startsWith(prefix)\n\t\t);\n\t\tif (!isHostExpando) continue;\n\t\tReflect.deleteProperty(element, key);\n\t}\n};\n\nexport const hydrateReactIsland = (\n\tcomponent: ComponentType<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tconst existingRoot = reactIslandRoots.get(element);\n\tif (existingRoot) {\n\t\texistingRoot.render(\n\t\t\tisPropsRecord(props)\n\t\t\t\t? createElement(component, props)\n\t\t\t\t: createElement(component)\n\t\t);\n\n\t\treturn;\n\t}\n\n\tdetachFromHostReactRoot(element);\n\tconst restoreTranslation = prepareBrowserTranslationHydration(element);\n\tconst hydrate = (elementToHydrate: ReactNode) => {\n\t\tlet root: ReactRoot | undefined;\n\t\tconst startHydration = () => {\n\t\t\troot = hydrateRoot(element, elementToHydrate);\n\t\t};\n\t\ttry {\n\t\t\tif (restoreTranslation.hasTranslation) flushSync(startHydration);\n\t\t\telse startHydration();\n\t\t} finally {\n\t\t\trestoreTranslation();\n\t\t}\n\t\tif (root !== undefined) reactIslandRoots.set(element, root);\n\t};\n\n\tif (!isPropsRecord(props)) {\n\t\thydrate(createElement(component));\n\n\t\treturn;\n\t}\n\n\thydrate(createElement(component, props));\n};\nexport const isReactComponent = (\n\tvalue: unknown\n): value is ComponentType<Record<string, unknown>> =>\n\ttypeof value === 'function';\n"
6
6
  ],
7
- "mappings": ";;;;;;AAAA;AACA;AACA;AAGA,IAAM,mBAAmB,IAAI;AAE7B,IAAM,gBAAgB,CAAC,UACtB,OAAO,UAAU,YAAY,UAAU;AAWxC,IAAM,8BAA8B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAM,0BAA0B,CAAC,YAAyB;AAAA,EACzD,WAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AAAA,IACvC,MAAM,gBAAgB,4BAA4B,KAAK,CAAC,WACvD,IAAI,WAAW,MAAM,CACtB;AAAA,IACA,IAAI,CAAC;AAAA,MAAe;AAAA,IACpB,QAAQ,eAAe,SAAS,GAAG;AAAA,EACpC;AAAA;AAGM,IAAM,qBAAqB,CACjC,WACA,SACA,UACI;AAAA,EACJ,MAAM,eAAe,iBAAiB,IAAI,OAAO;AAAA,EACjD,IAAI,cAAc;AAAA,IACjB,aAAa,OACZ,cAAc,KAAK,IAChB,cAAc,WAAW,KAAK,IAC9B,cAAc,SAAS,CAC3B;AAAA,IAEA;AAAA,EACD;AAAA,EAEA,wBAAwB,OAAO;AAAA,EAC/B,MAAM,qBAAqB,mCAAmC,OAAO;AAAA,EACrE,MAAM,UAAU,CAAC,qBAAgC;AAAA,IAChD,IAAI;AAAA,IACJ,MAAM,iBAAiB,MAAM;AAAA,MAC5B,OAAO,YAAY,SAAS,gBAAgB;AAAA;AAAA,IAE7C,IAAI;AAAA,MACH,IAAI,mBAAmB;AAAA,QAAgB,UAAU,cAAc;AAAA,MAC1D;AAAA,uBAAe;AAAA,cACnB;AAAA,MACD,mBAAmB;AAAA;AAAA,IAEpB,IAAI,SAAS;AAAA,MAAW,iBAAiB,IAAI,SAAS,IAAI;AAAA;AAAA,EAG3D,IAAI,CAAC,cAAc,KAAK,GAAG;AAAA,IAC1B,QAAQ,cAAc,SAAS,CAAC;AAAA,IAEhC;AAAA,EACD;AAAA,EAEA,QAAQ,cAAc,WAAW,KAAK,CAAC;AAAA;AAEjC,IAAM,mBAAmB,CAC/B,UAEA,OAAO,UAAU;",
8
- "debugId": "510C9829CFC48A1664756E2164756E21",
7
+ "mappings": ";;;;;;;AAAA;AACA;AACA;AAGA,IAAM,mBAAmB,IAAI;AAE7B,IAAM,gBAAgB,CAAC,UACtB,OAAO,UAAU,YAAY,UAAU;AAWxC,IAAM,8BAA8B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAM,0BAA0B,CAAC,YAAyB;AAAA,EACzD,WAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AAAA,IACvC,MAAM,gBAAgB,4BAA4B,KAAK,CAAC,WACvD,IAAI,WAAW,MAAM,CACtB;AAAA,IACA,IAAI,CAAC;AAAA,MAAe;AAAA,IACpB,QAAQ,eAAe,SAAS,GAAG;AAAA,EACpC;AAAA;AAGM,IAAM,qBAAqB,CACjC,WACA,SACA,UACI;AAAA,EACJ,MAAM,eAAe,iBAAiB,IAAI,OAAO;AAAA,EACjD,IAAI,cAAc;AAAA,IACjB,aAAa,OACZ,cAAc,KAAK,IAChB,cAAc,WAAW,KAAK,IAC9B,cAAc,SAAS,CAC3B;AAAA,IAEA;AAAA,EACD;AAAA,EAEA,wBAAwB,OAAO;AAAA,EAC/B,MAAM,qBAAqB,mCAAmC,OAAO;AAAA,EACrE,MAAM,UAAU,CAAC,qBAAgC;AAAA,IAChD,IAAI;AAAA,IACJ,MAAM,iBAAiB,MAAM;AAAA,MAC5B,OAAO,YAAY,SAAS,gBAAgB;AAAA;AAAA,IAE7C,IAAI;AAAA,MACH,IAAI,mBAAmB;AAAA,QAAgB,UAAU,cAAc;AAAA,MAC1D;AAAA,uBAAe;AAAA,cACnB;AAAA,MACD,mBAAmB;AAAA;AAAA,IAEpB,IAAI,SAAS;AAAA,MAAW,iBAAiB,IAAI,SAAS,IAAI;AAAA;AAAA,EAG3D,IAAI,CAAC,cAAc,KAAK,GAAG;AAAA,IAC1B,QAAQ,cAAc,SAAS,CAAC;AAAA,IAEhC;AAAA,EACD;AAAA,EAEA,QAAQ,cAAc,WAAW,KAAK,CAAC;AAAA;AAEjC,IAAM,mBAAmB,CAC/B,UAEA,OAAO,UAAU;",
8
+ "debugId": "D11DE2271415DC6964756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  captureSsrTextBaselines,
3
3
  prepareBrowserTranslationHydration
4
- } from "./chunks/index-5py90ctf.js";
4
+ } from "./chunks/index-dk743xs6.js";
5
+ import"./chunks/index-jrcwp722.js";
5
6
  import {
6
7
  __require
7
8
  } from "./chunks/index-qxjc7kc5.js";
@@ -342,7 +343,7 @@ var hydratePreservingBrowserTranslation = async (element, hydrate) => {
342
343
  var hydrateByFramework = async (registry, framework, componentName, element, props, resolveComponent) => {
343
344
  const propsRecord = isPropsRecord(props) ? props : undefined;
344
345
  if (framework === "react") {
345
- const { hydrateReactIsland, isReactComponent } = await import("./chunks/react-pdg4325x.js");
346
+ const { hydrateReactIsland, isReactComponent } = await import("./chunks/react-yq4ss9y4.js");
346
347
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.react?.[componentName]);
347
348
  if (!isReactComponent(resolvedComponent))
348
349
  return;
@@ -369,7 +370,7 @@ var hydrateByFramework = async (registry, framework, componentName, element, pro
369
370
  return;
370
371
  }
371
372
  if (framework === "angular") {
372
- const { mountAngularIsland, isAngularComponent } = await import("./chunks/islands-xj2n8nwf.js");
373
+ const { mountAngularIsland, isAngularComponent } = await import("./chunks/islands-50dg63j9.js");
373
374
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.angular?.[componentName]);
374
375
  const { islandId } = element.dataset;
375
376
  if (!isAngularComponent(resolvedComponent) || !islandId)
@@ -477,5 +478,5 @@ export {
477
478
  subscribeIslandStore
478
479
  };
479
480
 
480
- //# debugId=24D0394AB472467064756E2164756E21
481
+ //# debugId=7EB687085157DB7464756E2164756E21
481
482
  //# sourceMappingURL=index.js.map
@@ -12,7 +12,7 @@
12
12
  "import type { RuntimeIslandRenderProps } from '../../types/island';\nimport { getIslandMarkerAttributes } from '../core/islandMarkupAttributes';\n\ntype PreservedIslandMarkup = {\n\tattributes: Record<string, string>;\n\tinnerHTML: string;\n};\n\ntype IslandMarkerElement = HTMLElement & {\n\tdataset: DOMStringMap & {\n\t\tcomponent?: string;\n\t\tframework?: string;\n\t\thydrate?: string;\n\t\tisland?: string;\n\t\tislandId?: string;\n\t\tprops?: string;\n\t};\n};\n\nconst getSnapshotMap = () => {\n\tif (typeof window === 'undefined') {\n\t\treturn null;\n\t}\n\n\twindow.__ABS_SERVER_ISLAND_HTML__ ??= new Map<\n\t\tstring,\n\t\tPreservedIslandMarkup[]\n\t>();\n\n\treturn window.__ABS_SERVER_ISLAND_HTML__;\n};\n\nconst getIslandSignature = (props: RuntimeIslandRenderProps) => {\n\tconst attributes = getIslandMarkerAttributes(props);\n\n\treturn [\n\t\tattributes['data-component'],\n\t\tattributes['data-framework'],\n\t\tattributes['data-hydrate'],\n\t\tattributes['data-props']\n\t].join('::');\n};\n\nconst isMatchingIslandElement = (\n\telement: Element,\n\tprops: RuntimeIslandRenderProps\n): element is IslandMarkerElement => {\n\tif (!(element instanceof HTMLElement)) {\n\t\treturn false;\n\t}\n\n\tconst attributes = getIslandMarkerAttributes(props);\n\n\treturn (\n\t\telement.dataset.island === 'true' &&\n\t\telement.dataset.component === attributes['data-component'] &&\n\t\telement.dataset.framework === attributes['data-framework'] &&\n\t\t(element.dataset.hydrate ?? 'load') === attributes['data-hydrate'] &&\n\t\t(element.dataset.props ?? '{}') === attributes['data-props']\n\t);\n};\n\nconst snapshotIslandElement = (\n\telement: HTMLElement,\n\tsnapshotMap: Map<string, PreservedIslandMarkup[]>\n) => {\n\tconst signature = [\n\t\telement.dataset.component,\n\t\telement.dataset.framework,\n\t\telement.dataset.hydrate ?? 'load',\n\t\telement.dataset.props ?? '{}'\n\t].join('::');\n\tconst existing = snapshotMap.get(signature) ?? [];\n\tconst attributes = Object.fromEntries(\n\t\telement\n\t\t\t.getAttributeNames()\n\t\t\t.map((name) => [name, element.getAttribute(name) ?? ''])\n\t);\n\texisting.push({\n\t\tattributes,\n\t\tinnerHTML: element.innerHTML\n\t});\n\tsnapshotMap.set(signature, existing);\n};\n\nexport const initializeIslandMarkupSnapshot = () => {\n\tif (typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\tconst snapshotMap = getSnapshotMap();\n\tif (!snapshotMap || snapshotMap.size > 0) {\n\t\treturn;\n\t}\n\n\tconst elements = Array.from(\n\t\tdocument.querySelectorAll<HTMLElement>('[data-island=\"true\"]')\n\t);\n\tfor (const element of elements) {\n\t\tsnapshotIslandElement(element, snapshotMap);\n\t}\n};\n\nexport const preserveIslandMarkup = (props: RuntimeIslandRenderProps) => {\n\tif (typeof document === 'undefined') {\n\t\treturn {\n\t\t\tattributes: getIslandMarkerAttributes(props),\n\t\t\tinnerHTML: ''\n\t\t};\n\t}\n\n\tconst snapshotMap = getSnapshotMap();\n\tconst signature = getIslandSignature(props);\n\t// Islands that share a signature (same component, framework, hydrate mode\n\t// and serialized props) produce byte-identical SSR markup, so the first\n\t// captured snapshot is correct for every instance. Returning it\n\t// unconditionally keeps this stateless: React may call the component many\n\t// times during a single hydration (StrictMode double-render, hydration\n\t// retries, mismatch regeneration), and a per-call claim counter would run\n\t// past the snapshot list and yield empty markup — making the host render\n\t// `dangerouslySetInnerHTML={{ __html: '' }}` and wipe the island's\n\t// server-rendered DOM before the island runtime can hydrate it.\n\tconst snapshotCandidate = snapshotMap?.get(signature)?.[0];\n\tif (snapshotCandidate) {\n\t\treturn snapshotCandidate;\n\t}\n\n\t// Snapshot not captured yet (the island runtime module hasn't evaluated):\n\t// fall back to reading the live SSR DOM directly.\n\tconst liveCandidate = Array.from(\n\t\tdocument.querySelectorAll('[data-island=\"true\"]')\n\t).find((element) => isMatchingIslandElement(element, props));\n\tif (!liveCandidate) {\n\t\treturn {\n\t\t\tattributes: getIslandMarkerAttributes(props),\n\t\t\tinnerHTML: ''\n\t\t};\n\t}\n\n\treturn {\n\t\tattributes: Object.fromEntries(\n\t\t\tliveCandidate\n\t\t\t\t.getAttributeNames()\n\t\t\t\t.map((name) => [name, liveCandidate.getAttribute(name) ?? ''])\n\t\t),\n\t\tinnerHTML: liveCandidate.innerHTML\n\t};\n};\n",
13
13
  "import type { IslandFramework } from '../../types/island';\nimport { getIslandComponent, parseIslandProps } from '../core/islands';\nimport { initializeIslandMarkupSnapshot } from './preserveIslandMarkup';\nimport { prepareBrowserTranslationHydration } from './browserTranslation';\n\ninitializeIslandMarkupSnapshot();\n\ntype RuntimeIslandRegistry = Partial<\n\tRecord<IslandFramework, Record<string, unknown>>\n>;\n\ntype StartIslandsOptions = {\n\tregistry: RuntimeIslandRegistry;\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>;\n\troot?: ParentNode & Node;\n};\n\ntype IslandElement = HTMLElement & {\n\tdataset: DOMStringMap & {\n\t\tcomponent?: string;\n\t\terror?: string;\n\t\tframework?: IslandFramework;\n\t\thydrate?: string;\n\t\tislandId?: string;\n\t\tprops?: string;\n\t};\n};\n\nconst idleDeadline: IdleDeadline = {\n\tdidTimeout: false,\n\ttimeRemaining: () => 0\n};\n\nconst requestIdle =\n\ttypeof window !== 'undefined' && 'requestIdleCallback' in window\n\t\t? window.requestIdleCallback.bind(window)\n\t\t: (callback: IdleRequestCallback) =>\n\t\t\t\twindow.setTimeout(() => callback(idleDeadline), 1);\n\nconst isPropsRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isIslandElement = (value: EventTarget | null): value is IslandElement =>\n\tvalue instanceof HTMLElement && value.dataset.island === 'true';\n\nconst observedRoots = new WeakSet<Node>();\nconst hydratingIslands = new WeakSet<HTMLElement>();\n\nconst hydratePreservingBrowserTranslation = async (\n\telement: HTMLElement,\n\thydrate: () => unknown | Promise<unknown>\n) => {\n\tconst restoreTranslation = prepareBrowserTranslationHydration(element);\n\ttry {\n\t\tawait hydrate();\n\t} finally {\n\t\trestoreTranslation();\n\t}\n};\n\n// Framework-specific hydrators are dynamic-imported on first use so the\n// island runtime never statically pulls in a framework's runtime (and its\n// transitive deps) the consumer doesn't actually use. Without this, a\n// React-only project loading `@absolutejs/absolute/client` would resolve\n// every framework's peer deps — including `@angular/core` — and fail at\n// module load if any of them weren't installed.\nconst hydrateByFramework = async (\n\tregistry: RuntimeIslandRegistry,\n\tframework: IslandFramework,\n\tcomponentName: string,\n\telement: IslandElement,\n\tprops: unknown,\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>\n) => {\n\tconst propsRecord = isPropsRecord(props) ? props : undefined;\n\n\tif (framework === 'react') {\n\t\tconst { hydrateReactIsland, isReactComponent } = await import(\n\t\t\t'./hydrators/react'\n\t\t);\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.react?.[componentName]);\n\t\tif (!isReactComponent(resolvedComponent)) return;\n\n\t\thydrateReactIsland(resolvedComponent, element, propsRecord);\n\t\telement.dataset.hydrated = 'true';\n\n\t\treturn;\n\t}\n\n\tif (framework === 'svelte') {\n\t\tconst { hydrateSvelteIsland, isSvelteComponent } = await import(\n\t\t\t'./hydrators/svelte'\n\t\t);\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.svelte?.[componentName]);\n\t\tif (!isSvelteComponent(resolvedComponent)) return;\n\n\t\tawait hydratePreservingBrowserTranslation(element, () =>\n\t\t\thydrateSvelteIsland(resolvedComponent, element, propsRecord)\n\t\t);\n\t\telement.dataset.hydrated = 'true';\n\n\t\treturn;\n\t}\n\n\tif (framework === 'vue') {\n\t\tconst { hydrateVueIsland, isVueComponent } = await import(\n\t\t\t'./hydrators/vue'\n\t\t);\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.vue?.[componentName]);\n\t\tif (!isVueComponent(resolvedComponent)) return;\n\n\t\tawait hydratePreservingBrowserTranslation(element, () =>\n\t\t\thydrateVueIsland(resolvedComponent, element, propsRecord)\n\t\t);\n\t\telement.dataset.hydrated = 'true';\n\n\t\treturn;\n\t}\n\n\tif (framework === 'angular') {\n\t\tconst { mountAngularIsland, isAngularComponent } = await import(\n\t\t\t'../angular/islands'\n\t\t);\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.angular?.[componentName]);\n\t\tconst { islandId } = element.dataset;\n\t\tif (!isAngularComponent(resolvedComponent) || !islandId) return;\n\n\t\tawait hydratePreservingBrowserTranslation(element, () =>\n\t\t\tmountAngularIsland(\n\t\t\t\tresolvedComponent,\n\t\t\t\telement,\n\t\t\t\tpropsRecord ?? {},\n\t\t\t\tislandId\n\t\t\t)\n\t\t);\n\t\telement.dataset.hydrated = 'true';\n\t}\n};\n\nconst hydrateIsland = async (\n\tregistry: RuntimeIslandRegistry,\n\telement: IslandElement,\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>\n) => {\n\tif (element.dataset.hydrated === 'true' || hydratingIslands.has(element)) {\n\t\treturn;\n\t}\n\n\tconst { framework } = element.dataset;\n\tconst componentName = element.dataset.component;\n\tif (!framework || !componentName) return;\n\n\tconst props = parseIslandProps(element.getAttribute('data-props'));\n\thydratingIslands.add(element);\n\n\ttry {\n\t\tawait hydrateByFramework(\n\t\t\tregistry,\n\t\t\tframework,\n\t\t\tcomponentName,\n\t\t\telement,\n\t\t\tprops,\n\t\t\tresolveComponent\n\t\t);\n\t} catch (error) {\n\t\tconst message =\n\t\t\terror instanceof Error ? error.message : 'Unknown island error';\n\t\telement.dataset.error = message;\n\t\tconsole.error(\n\t\t\t`[islands] Failed to hydrate ${framework}:${componentName}`,\n\t\t\terror\n\t\t);\n\t} finally {\n\t\thydratingIslands.delete(element);\n\t}\n};\n\nconst scheduleIsland = (\n\tregistry: RuntimeIslandRegistry,\n\telement: IslandElement,\n\tobserver: IntersectionObserver | null,\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>\n) => {\n\tconst mode = element.dataset.hydrate ?? 'load';\n\tif (mode === 'none') return;\n\tif (mode === 'load') {\n\t\tvoid hydrateIsland(registry, element, resolveComponent);\n\n\t\treturn;\n\t}\n\tif (mode === 'idle') {\n\t\trequestIdle(\n\t\t\t() => void hydrateIsland(registry, element, resolveComponent)\n\t\t);\n\n\t\treturn;\n\t}\n\tif (mode === 'visible' && observer) {\n\t\tobserver.observe(element);\n\n\t\treturn;\n\t}\n\n\tvoid hydrateIsland(registry, element, resolveComponent);\n};\n\nconst collectIslandElements = (node: Node) => {\n\tconst islands: IslandElement[] = [];\n\tif (isIslandElement(node)) islands.push(node);\n\tif (!(node instanceof Element)) return islands;\n\n\tconst nested = node.querySelectorAll<IslandElement>('[data-island=\"true\"]');\n\tfor (const island of nested) {\n\t\tislands.push(island);\n\t}\n\n\treturn islands;\n};\n\nexport const startIslands = ({\n\tregistry,\n\tresolveComponent,\n\troot = document.documentElement\n}: StartIslandsOptions) => {\n\tconst targetRoot = root instanceof Document ? root.documentElement : root;\n\n\tconst observer =\n\t\ttypeof IntersectionObserver === 'undefined'\n\t\t\t? null\n\t\t\t: new IntersectionObserver((entries) => {\n\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\tif (!entry.isIntersecting) continue;\n\t\t\t\t\t\tif (!isIslandElement(entry.target)) continue;\n\n\t\t\t\t\t\tobserver?.unobserve(entry.target);\n\t\t\t\t\t\tvoid hydrateIsland(\n\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t\tentry.target,\n\t\t\t\t\t\t\tresolveComponent\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\tconst islands = targetRoot.querySelectorAll<IslandElement>(\n\t\t'[data-island=\"true\"]'\n\t);\n\tfor (const island of islands) {\n\t\tscheduleIsland(registry, island, observer, resolveComponent);\n\t}\n\n\tif (typeof MutationObserver === 'undefined') return;\n\tif (observedRoots.has(targetRoot)) return;\n\n\tconst mutationObserver = new MutationObserver((records) => {\n\t\tconst addedIslands = records.flatMap((record) =>\n\t\t\tArray.from(record.addedNodes).flatMap(collectIslandElements)\n\t\t);\n\t\tfor (const island of addedIslands) {\n\t\t\tscheduleIsland(registry, island, observer, resolveComponent);\n\t\t}\n\t});\n\n\tobservedRoots.add(targetRoot);\n\tmutationObserver.observe(targetRoot, {\n\t\tchildList: true,\n\t\tsubtree: true\n\t});\n};\n"
14
14
  ],
15
- "mappings": "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",
16
- "debugId": "24D0394AB472467064756E2164756E21",
15
+ "mappings": "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",
16
+ "debugId": "7EB687085157DB7464756E2164756E21",
17
17
  "names": []
18
18
  }
@@ -7,7 +7,6 @@ import type {} from '../../../types/globals';
7
7
  import { hideErrorOverlay } from '../errorOverlay';
8
8
  import { detectCurrentFramework } from '../frameworkDetect';
9
9
  import { sendAbsoluteHmrTiming } from '../hmrTiming';
10
- import { swapCSSStylesheet } from '../cssUtils';
11
10
 
12
11
  const reloadReactPage = () => {
13
12
  const url = new URL(window.location.href);
@@ -21,7 +20,9 @@ export const handleReactUpdate = (message: {
21
20
  hasCSSChanges?: boolean;
22
21
  hasComponentChanges?: boolean;
23
22
  manifest?: Record<string, string>;
23
+ moduleUrls?: string[];
24
24
  pageModuleUrl?: string;
25
+ pageModuleUrls?: Record<string, string>;
25
26
  primarySource?: string;
26
27
  serverDuration?: number;
27
28
  };
@@ -30,30 +31,26 @@ export const handleReactUpdate = (message: {
30
31
  const currentFramework = detectCurrentFramework();
31
32
  if (currentFramework !== 'react') return;
32
33
 
33
- const hasComponentChanges = message.data.hasComponentChanges !== false;
34
- const hasCSSChanges = message.data.hasCSSChanges === true;
35
- const cssPath =
36
- message.data.manifest && message.data.manifest.ReactExampleCSS;
37
- if (!hasComponentChanges && hasCSSChanges && cssPath) {
38
- const clientStart = performance.now();
39
- void reloadReactCSS(cssPath).then((applied) => {
40
- sendAbsoluteHmrTiming({
41
- clientStart,
42
- kind: 'css',
43
- outcome: applied ? 'applied' : 'failed',
44
- serverMs: message.data.serverDuration,
45
- updateId: message.timestamp
46
- });
47
- });
48
-
49
- return;
50
- }
34
+ // BUN-REACT-REFRESH-LEGACY: the remount/reload fallback for a dev server on
35
+ // stock Bun, which cannot emit React Fast Refresh registrations. Remove it,
36
+ // and the fastRefreshSupported message field, once the minimum Bun has the fix.
51
37
  if (message.data.fastRefreshSupported === false) {
52
- const { pageModuleUrl } = message.data;
38
+ // The remount re-renders the whole page, so it needs this page's
39
+ // module; a changed child's module would be rendered as the page.
40
+ const componentKey = window.__REACT_COMPONENT_KEY__;
41
+ const pageUrls = message.data.pageModuleUrls;
42
+ if (pageUrls && componentKey && !pageUrls[componentKey]) {
43
+ // This edit does not reach the page on screen.
44
+ return;
45
+ }
46
+ const remountUrl =
47
+ pageUrls && componentKey
48
+ ? pageUrls[componentKey]
49
+ : message.data.pageModuleUrl;
53
50
  const remount = window.__ABS_REACT_REMOUNT__;
54
- if (pageModuleUrl && remount) {
51
+ if (remountUrl && remount) {
55
52
  applyRemountImport(
56
- pageModuleUrl,
53
+ remountUrl,
57
54
  remount,
58
55
  message.data.serverDuration,
59
56
  message.timestamp
@@ -75,10 +72,15 @@ export const handleReactUpdate = (message: {
75
72
  const refreshRuntime = window.$RefreshRuntime$;
76
73
  const { serverDuration } = message.data;
77
74
  const { pageModuleUrl } = message.data;
75
+ const fallbackUrls = pageModuleUrl ? [pageModuleUrl] : [];
76
+ const moduleUrls =
77
+ message.data.moduleUrls && message.data.moduleUrls.length > 0
78
+ ? message.data.moduleUrls
79
+ : fallbackUrls;
78
80
 
79
- if (pageModuleUrl && refreshRuntime) {
81
+ if (moduleUrls.length > 0 && refreshRuntime) {
80
82
  applyRefreshImport(
81
- pageModuleUrl,
83
+ moduleUrls,
82
84
  refreshRuntime,
83
85
  serverDuration,
84
86
  message.timestamp
@@ -117,13 +119,16 @@ const finishUpdate = (
117
119
  };
118
120
 
119
121
  const applyRefreshImport = (
120
- moduleUrl: string,
122
+ moduleUrls: string[],
121
123
  refreshRuntime: { performReactRefresh: () => unknown },
122
124
  serverDuration?: number,
123
125
  updateId?: number
124
126
  ) => {
125
127
  const clientStart = performance.now();
126
- import(`${moduleUrl}?t=${Date.now()}`)
128
+ const stamp = Date.now();
129
+ // Every edited module has to run before the refresh, or a page that
130
+ // now renders a new child refreshes without it.
131
+ Promise.all(moduleUrls.map((url) => import(`${url}?t=${stamp}`)))
127
132
  .then(() => {
128
133
  refreshRuntime.performReactRefresh();
129
134
  finishUpdate(clientStart, serverDuration, updateId);
@@ -175,16 +180,3 @@ const applyRemountImport = (
175
180
  reloadReactPage();
176
181
  });
177
182
  };
178
-
179
- const reloadReactCSS = (cssPath: string) =>
180
- swapCSSStylesheet(cssPath, (href) => {
181
- const hrefBase = (href.split('?')[0] ?? '').split('/').pop() ?? '';
182
- const cssPathBase =
183
- (cssPath.split('?')[0] ?? '').split('/').pop() ?? '';
184
-
185
- return (
186
- hrefBase === cssPathBase ||
187
- href.includes('react-example') ||
188
- cssPathBase.includes(hrefBase)
189
- );
190
- });
@@ -200,6 +200,7 @@ type HMRMessage = {
200
200
  affectedFrameworks?: string[];
201
201
  column?: number;
202
202
  error?: string;
203
+ // BUN-REACT-REFRESH-LEGACY: false only on stock Bun (see handlers/react.ts).
203
204
  fastRefreshSupported?: boolean;
204
205
  file?: string;
205
206
  framework?: string;
@@ -209,8 +210,10 @@ type HMRMessage = {
209
210
  line?: number;
210
211
  lineText?: string;
211
212
  manifest?: Record<string, string>;
213
+ moduleUrls?: string[];
212
214
  moduleVersions?: Record<string, number>;
213
215
  pageModuleUrl?: string;
216
+ pageModuleUrls?: Record<string, string>;
214
217
  primarySource?: string;
215
218
  scriptUrl?: string;
216
219
  serverDuration?: number;
@@ -633,6 +633,16 @@ var markBootAt = (label, epochMs) => {
633
633
  };
634
634
  var processStartEpochMs = () => Date.now() - process.uptime() * MILLISECONDS_IN_A_SECOND;
635
635
 
636
+ // src/dev/hotRejectionGuard.ts
637
+ var installHotRejectionGuard = () => {
638
+ if (globalThis.__absoluteHotRejectionGuard)
639
+ return;
640
+ globalThis.__absoluteHotRejectionGuard = true;
641
+ process.on("unhandledRejection", (reason) => {
642
+ console.error(reason);
643
+ });
644
+ };
645
+
636
646
  // src/dev/importCost/hint.ts
637
647
  var ENTRY_GRAPH_START = "server entry import start";
638
648
  var ENTRY_GRAPH_END = "framework runtime imported";
@@ -733,6 +743,7 @@ var isStaleAbsoluteServerEntryCopy = (name, currentPid = process.pid, ownerIsAli
733
743
  adoptParentBootMarks();
734
744
  markBootAt("child process start", processStartEpochMs());
735
745
  markBoot("bootstrap imports evaluated");
746
+ installHotRejectionGuard();
736
747
  var originalEntry = process.env.ABSOLUTE_SERVER_ENTRY;
737
748
  if (!originalEntry) {
738
749
  throw new Error("ABSOLUTE_SERVER_ENTRY is required by the AbsoluteJS dev bootstrap");