@absolutejs/absolute 0.20.0-beta.173 → 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 (110) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/changelog.json +71 -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 +113 -34
  8. package/dist/angular/index.js.map +12 -9
  9. package/dist/angular/server.js +113 -34
  10. package/dist/angular/server.js.map +12 -9
  11. package/dist/build.js +946 -731
  12. package/dist/build.js.map +40 -37
  13. package/dist/cli/{add-ae6mg79m.js → add-ntg96znk.js} +32 -31
  14. package/dist/cli/{compile-ndc36zna.js → compile-w2z6c9vt.js} +16 -14
  15. package/dist/cli/config/server.js +85 -65
  16. package/dist/cli/{dev-x49583aj.js → dev-8br5mr7t.js} +17 -3
  17. package/dist/cli/{expoProject-h404n2r8.js → expoProject-1qtw97js.js} +2 -1
  18. package/dist/cli/{generate-brvjesd6.js → generate-5vyz1s44.js} +7 -6
  19. package/dist/cli/{htmx-5twhjz7p.js → htmx-26hs6jdm.js} +2 -1
  20. package/dist/cli/{index-gyjxrnnz.js → index-23hvdyxf.js} +18 -16
  21. package/dist/cli/index-4j1twret.js +22 -0
  22. package/dist/cli/{index-z794p5qg.js → index-6522t968.js} +43 -21
  23. package/dist/cli/{index-25e7k849.js → index-7z1hh3fg.js} +4 -4
  24. package/dist/cli/{index-s0r5q839.js → index-cksezef8.js} +10 -8
  25. package/dist/cli/{index-q3snnhyd.js → index-enbw9484.js} +34 -33
  26. package/dist/cli/{index-b1wht4q5.js → index-kes8he5s.js} +6 -4
  27. package/dist/cli/{index-vh68jb0e.js → index-pkw3jktb.js} +17 -16
  28. package/dist/cli/{index-rervww4p.js → index-zyd80s3h.js} +119 -119
  29. package/dist/cli/index.js +11 -11
  30. package/dist/cli/{islands-p4vgx7a2.js → islands-bx67g15t.js} +8 -7
  31. package/dist/cli/{mobile-nqdkk3gd.js → mobile-we5q51ey.js} +5 -4
  32. package/dist/cli/{remove-abaf0w6k.js → remove-4jh862qa.js} +6 -5
  33. package/dist/cli/{start-t3cq57wn.js → start-srs11bm8.js} +5 -4
  34. package/dist/cli/{typecheck-fag7djt5.js → typecheck-7fvww3b7.js} +28 -26
  35. package/dist/client/chunks/index-4j1snyh2.js +18 -0
  36. package/dist/client/chunks/index-4j1snyh2.js.map +10 -0
  37. package/dist/client/chunks/{index-6b66nzyf.js → index-a3rpg5kw.js} +6 -16
  38. package/dist/client/chunks/{index-6b66nzyf.js.map → index-a3rpg5kw.js.map} +3 -4
  39. package/dist/client/chunks/{islands-s2ta5ajb.js → islands-mfjmdwnb.js} +11 -4
  40. package/dist/client/chunks/{islands-s2ta5ajb.js.map → islands-mfjmdwnb.js.map} +3 -3
  41. package/dist/client/chunks/{react-dcvkaba2.js → react-sprprqzs.js} +20 -4
  42. package/dist/client/chunks/react-sprprqzs.js.map +10 -0
  43. package/dist/client/chunks/svelte-6ewphsvj.js +30 -0
  44. package/dist/client/chunks/svelte-6ewphsvj.js.map +10 -0
  45. package/dist/client/chunks/{vue-a84fzp3v.js → vue-db6ppn1f.js} +14 -4
  46. package/dist/client/chunks/vue-db6ppn1f.js.map +10 -0
  47. package/dist/client/index.js +65 -8
  48. package/dist/client/index.js.map +4 -4
  49. package/dist/client/navigation.js +5 -3
  50. package/dist/client/navigation.js.map +2 -2
  51. package/dist/client/prefetch.js +1 -1
  52. package/dist/dev/client/handlers/islands.ts +85 -0
  53. package/dist/dev/client/hmrClient.ts +6 -0
  54. package/dist/dev/importCostReport.js +45 -26
  55. package/dist/index.js +1080 -852
  56. package/dist/index.js.map +41 -38
  57. package/dist/islands/index.js +57 -10
  58. package/dist/islands/index.js.map +9 -7
  59. package/dist/mobile/index.js +115 -95
  60. package/dist/mobile/index.js.map +6 -5
  61. package/dist/mobile/remoteMacAgentEntry.js +205 -651
  62. package/dist/react/browser.js +15 -4
  63. package/dist/react/browser.js.map +5 -5
  64. package/dist/react/components/client.js +506 -0
  65. package/dist/react/components/index.js +14 -15
  66. package/dist/react/components/index.js.map +4 -4
  67. package/dist/react/components/server/index.js +728 -0
  68. package/dist/react/hooks/index.js +14 -15
  69. package/dist/react/hooks/index.js.map +4 -4
  70. package/dist/react/index.js +66 -6
  71. package/dist/react/index.js.map +11 -9
  72. package/dist/react/router/browser.js +7 -8
  73. package/dist/react/router/browser.js.map +4 -4
  74. package/dist/react/router/index.js +7 -8
  75. package/dist/react/router/index.js.map +4 -4
  76. package/dist/react/server.js +14 -1
  77. package/dist/react/server.js.map +4 -4
  78. package/dist/src/build/buildReactServerComponents.d.ts +4 -0
  79. package/dist/src/build/islandEntries.d.ts +5 -0
  80. package/dist/src/cli/config/absolute/resolveAbsoluteConfig.d.ts +3 -3
  81. package/dist/src/cli/config/auth/resolveAuthSettings.d.ts +3 -3
  82. package/dist/src/client/hydrators/react.d.ts +7 -0
  83. package/dist/src/client/hydrators/svelte.d.ts +3 -0
  84. package/dist/src/client/hydrators/vue.d.ts +3 -0
  85. package/dist/src/client/preserveIslandMarkup.d.ts +5 -0
  86. package/dist/src/core/islandServerGeneration.d.ts +3 -0
  87. package/dist/src/dev/angular/fastHmrCompiler.d.ts +2 -2
  88. package/dist/src/dev/angular/hmrImportGenerator.d.ts +2 -2
  89. package/dist/src/dev/angular/vendor/translator/ts_util.d.ts +2 -2
  90. package/dist/src/dev/angular/vendor/translator/typescript_ast_factory.d.ts +40 -40
  91. package/dist/src/dev/angular/vendor/translator/typescript_translator.d.ts +3 -3
  92. package/dist/src/react/components/client.d.ts +4 -0
  93. package/dist/src/react/components/server/index.d.ts +8 -0
  94. package/dist/src/react/serverComponents/constants.d.ts +2 -1
  95. package/dist/src/utils/lazyTypescript.d.ts +3 -0
  96. package/dist/svelte/index.js +66 -6
  97. package/dist/svelte/index.js.map +10 -8
  98. package/dist/svelte/server.js +38 -3
  99. package/dist/svelte/server.js.map +6 -5
  100. package/dist/types/build.d.ts +3 -2
  101. package/dist/types/globals.d.ts +15 -0
  102. package/dist/vue/browser.js +26 -16
  103. package/dist/vue/browser.js.map +5 -5
  104. package/dist/vue/index.js +65 -21
  105. package/dist/vue/index.js.map +10 -9
  106. package/package.json +1 -1
  107. package/dist/client/chunks/react-dcvkaba2.js.map +0 -10
  108. package/dist/client/chunks/svelte-4yfa5bxa.js +0 -17
  109. package/dist/client/chunks/svelte-4yfa5bxa.js.map +0 -10
  110. package/dist/client/chunks/vue-a84fzp3v.js.map +0 -10
@@ -9,12 +9,12 @@
9
9
  "const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst shouldDispatchFromDevtools = (api) => !!api.dispatchFromDevtools && typeof api.dispatch === \"function\";\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (shouldDispatchFromDevtools(api)) {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (shouldDispatchFromDevtools(api)) {\n api.dispatch(action);\n }\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => window.localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(get(), void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n",
10
10
  "import { createStore, type StateCreator, type StoreApi } from 'zustand/vanilla';\nimport { combine } from 'zustand/middleware';\n\nexport type IslandStoreState = object;\ntype IslandStoreSnapshot = Record<string, unknown>;\ntype IslandStoreShape<\n\tTState extends IslandStoreState,\n\tTActions extends object\n> = Omit<TState, keyof TActions> & TActions;\nexport type IslandStateSnapshot = Record<string, IslandStoreSnapshot>;\ntype AnyIslandStore = StoreApi<object>;\ntype IslandStoreInstance = {\n\tapplyExternalSnapshot: (snapshot: IslandStoreSnapshot) => void;\n\tstore: AnyIslandStore;\n};\n\nexport const ABSOLUTE_ISLAND_STATE = '__ABS_ISLAND_STATE__';\nexport const ABSOLUTE_ISLAND_STORES = '__ABS_ISLAND_STORES__';\n\ndeclare global {\n\tvar __ABS_ISLAND_STATE__: IslandStateSnapshot | undefined;\n\tvar __ABS_ISLAND_STORES__:\n\t\tMap<string, Set<IslandStoreInstance>> | undefined;\n}\n\nconst getIslandStoreSnapshot = () => {\n\tglobalThis.__ABS_ISLAND_STATE__ ??= {};\n\n\treturn globalThis.__ABS_ISLAND_STATE__;\n};\n\nconst getIslandStores = () => {\n\tglobalThis.__ABS_ISLAND_STORES__ ??= new Map();\n\n\treturn globalThis.__ABS_ISLAND_STORES__;\n};\n\nconst isSerializableValue = (value: unknown) =>\n\ttypeof value !== 'function' && value !== undefined;\n\nconst toSerializableState = <T extends object>(state: T) =>\n\tObject.fromEntries(\n\t\tObject.entries(state).filter(([, value]) => isSerializableValue(value))\n\t);\n\nconst applySnapshot = <T extends object>(\n\tstore: StoreApi<T>,\n\tsnapshot: IslandStoreSnapshot | undefined\n) => {\n\tif (!snapshot) {\n\t\treturn;\n\t}\n\n\tstore.setState({\n\t\t...store.getState(),\n\t\t...snapshot\n\t});\n};\n\nconst getPeerStores = (\n\tstoreInstances: Set<IslandStoreInstance>,\n\townerStore: AnyIslandStore\n) => [...storeInstances].filter((peer) => peer.store !== ownerStore);\n\nconst syncIslandSnapshot = <\n\tTState extends IslandStoreState,\n\tTActions extends object\n>(\n\tstoreId: string,\n\tstate: IslandStoreShape<TState, TActions>,\n\tstoreInstances: Set<IslandStoreInstance>,\n\townerStore: AnyIslandStore\n) => {\n\tconst nextSnapshot = toSerializableState(state);\n\tgetIslandStoreSnapshot()[storeId] = nextSnapshot;\n\n\tfor (const peerStore of getPeerStores(storeInstances, ownerStore)) {\n\t\tpeerStore.applyExternalSnapshot(nextSnapshot);\n\t}\n};\n\nexport const createIslandStore = <\n\tTState extends IslandStoreState,\n\tTActions extends object\n>(\n\tstoreId: string,\n\tinitialState: TState,\n\tcreateState: StateCreator<TState, [], [], TActions>\n) => {\n\tconst store = createStore(combine(initialState, createState));\n\tconst stores = getIslandStores();\n\tconst storeInstances =\n\t\tstores.get(storeId) ?? new Set<IslandStoreInstance>();\n\tconst initialSnapshot = getIslandStoreSnapshot()[storeId];\n\tapplySnapshot(store, initialSnapshot);\n\tlet isApplyingExternalSnapshot = false;\n\n\tconst applyExternalSnapshot = (snapshot: IslandStoreSnapshot) => {\n\t\tisApplyingExternalSnapshot = true;\n\t\tapplySnapshot(store, snapshot);\n\t};\n\n\tstoreInstances.add({\n\t\tapplyExternalSnapshot,\n\t\tstore\n\t});\n\tstores.set(storeId, storeInstances);\n\n\tsyncIslandSnapshot(storeId, store.getState(), storeInstances, store);\n\tstore.subscribe((state) => {\n\t\tif (isApplyingExternalSnapshot) {\n\t\t\tisApplyingExternalSnapshot = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tsyncIslandSnapshot(storeId, state, storeInstances, store);\n\t});\n\n\treturn store;\n};\nexport const getIslandStoreServerSnapshot = <\n\tTState extends IslandStoreState,\n\tTSelected\n>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected\n) => selector(store.getInitialState());\nconst applySnapshotToStoreInstances = (\n\tstoreId: string,\n\tinstances: Set<IslandStoreInstance>,\n\tsnapshot: IslandStateSnapshot\n) => {\n\tfor (const instance of instances) {\n\t\tinstance.applyExternalSnapshot(snapshot[storeId] ?? {});\n\t}\n};\n\nexport const initializeIslandStores = (state: IslandStateSnapshot) => {\n\tconst currentSnapshot = getIslandStoreSnapshot();\n\tconst nextSnapshot: IslandStateSnapshot = {\n\t\t...state,\n\t\t...currentSnapshot\n\t};\n\n\tglobalThis.__ABS_ISLAND_STATE__ = nextSnapshot;\n\n\tfor (const [storeId, store] of getIslandStores()) {\n\t\tapplySnapshotToStoreInstances(storeId, store, nextSnapshot);\n\t}\n};\nexport const readIslandStore = <TState extends IslandStoreState, TSelected>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected\n) => selector(store.getState());\nexport const resetIslandStoreForTesting = () => {\n\tdelete globalThis.__ABS_ISLAND_STATE__;\n\tdelete globalThis.__ABS_ISLAND_STORES__;\n};\nexport const subscribeIslandStore = <\n\tTState extends IslandStoreState,\n\tTSelected\n>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected,\n\tlistener: (value: TSelected) => void\n) => {\n\tlet currentSelection = selector(store.getState());\n\n\treturn store.subscribe((state) => {\n\t\tconst nextSelection = selector(state);\n\t\tif (Object.is(nextSelection, currentSelection)) {\n\t\t\treturn;\n\t\t}\n\n\t\tcurrentSelection = nextSelection;\n\t\tlistener(nextSelection);\n\t});\n};\n",
11
11
  "import type {\n\tIslandComponentDefinition,\n\tIslandRegistry,\n\tIslandRegistryInput\n} from '../../types/island';\n\nexport const defineIslandComponent = <Component>(\n\tcomponent: Component,\n\toptions: {\n\t\texport?: string;\n\t\tsource: string;\n\t}\n): IslandComponentDefinition<Component> => ({\n\tcomponent,\n\texport: options.export,\n\tsource: options.source\n});\nexport const defineIslandRegistry = <T extends IslandRegistryInput>(\n\tregistry: IslandRegistry<T>\n) => registry;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nexport const getIslandBuildReference = <Component>(\n\tcomponent: Component | IslandComponentDefinition<Component>\n) => {\n\tif (!isIslandComponentDefinition(component)) return null;\n\n\treturn {\n\t\texport: component.export,\n\t\tsource: component.source\n\t};\n};\nexport const isIslandComponentDefinition = <Component>(\n\tvalue: Component | IslandComponentDefinition<Component>\n): value is IslandComponentDefinition<Component> =>\n\tisRecord(value) &&\n\t'component' in value &&\n\t'source' in value &&\n\ttypeof value.source === 'string';\n\nexport function getIslandComponent<Component>(component: Component): Component;\nexport function getIslandComponent<Component>(\n\tcomponent: IslandComponentDefinition<Component>\n): Component;\nexport function getIslandComponent<Component>(\n\tcomponent: Component | IslandComponentDefinition<Component>\n) {\n\tif (isIslandComponentDefinition(component)) {\n\t\treturn component.component;\n\t}\n\n\treturn component;\n}\nexport const parseIslandProps = (rawProps: string | null) => {\n\tif (!rawProps) return {};\n\n\treturn JSON.parse(rawProps);\n};\nexport const serializeIslandProps = (props: unknown) =>\n\tJSON.stringify(props ?? {});\n\nexport {\n\tgetIslandManifestEntries,\n\tgetIslandManifestKey\n} from './islandManifest';\n",
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
- "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 } =\n\t\t\tawait import('./hydrators/react');\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 } =\n\t\t\tawait import('./hydrators/svelte');\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 } =\n\t\t\tawait import('./hydrators/vue');\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 } =\n\t\t\tawait import('../angular/islands');\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",
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\n/* Attributes the island runtime adds while hydrating. A host framework that\n * re-creates the marker (a remount, an HMR update) must not copy them, or the\n * runtime takes the new, unhydrated marker for a hydrated one and leaves it\n * dead. */\nconst RUNTIME_ISLAND_ATTRIBUTES = new Set(['data-error', 'data-hydrated']);\n\nconst readMarkerAttributes = (element: Element) =>\n\tObject.fromEntries(\n\t\telement\n\t\t\t.getAttributeNames()\n\t\t\t.filter((name) => !RUNTIME_ISLAND_ATTRIBUTES.has(name))\n\t\t\t.map((name) => [name, element.getAttribute(name) ?? ''])\n\t);\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\texisting.push({\n\t\tattributes: readMarkerAttributes(element),\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: readMarkerAttributes(liveCandidate),\n\t\tinnerHTML: liveCandidate.innerHTML\n\t};\n};\n\n/* React 19 compares `dangerouslySetInnerHTML` by object identity and rewrites\n * `innerHTML` whenever the object changes. A fresh `{ __html }` per render\n * made every host re-render (state change, Fast Refresh) replace the island's\n * hydrated DOM with its server markup, leaving a dead copy on screen. One\n * object per markup string keeps the boundary untouched. */\ntype InnerHtml = { __html: string };\n\nconst innerHtmlObjects = new Map<string, InnerHtml>();\n\nexport const getStableInnerHtml = (html: string) => {\n\tconst existing = innerHtmlObjects.get(html);\n\tif (existing) return existing;\n\tconst created: InnerHtml = { __html: html };\n\tinnerHtmlObjects.set(html, created);\n\n\treturn created;\n};\n",
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 } =\n\t\t\tawait import('./hydrators/react');\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 } =\n\t\t\tawait import('./hydrators/svelte');\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 } =\n\t\t\tawait import('./hydrators/vue');\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 } =\n\t\t\tawait import('../angular/islands');\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\ntype IslandHotUpdate = {\n\tcomponent: string;\n\tframework: string;\n\tmodulePath: string;\n};\n\nconst remountByFramework = async (\n\tframework: string,\n\tcomponent: unknown,\n\telement: IslandElement,\n\tprops: unknown\n) => {\n\tif (framework === 'react') {\n\t\tconst { remountReactIsland, isReactComponent } =\n\t\t\tawait import('./hydrators/react');\n\t\tif (!isReactComponent(component)) return false;\n\t\tremountReactIsland(component, element, props);\n\n\t\treturn true;\n\t}\n\tif (framework === 'svelte') {\n\t\tconst { remountSvelteIsland, isSvelteComponent } =\n\t\t\tawait import('./hydrators/svelte');\n\t\tif (!isSvelteComponent(component)) return false;\n\t\tawait remountSvelteIsland(component, element, props);\n\n\t\treturn true;\n\t}\n\tif (framework === 'vue') {\n\t\tconst { remountVueIsland, isVueComponent } =\n\t\t\tawait import('./hydrators/vue');\n\t\tif (!isVueComponent(component)) return false;\n\t\tremountVueIsland(component, element, props);\n\n\t\treturn true;\n\t}\n\n\t// Angular islands are bootstrapped applications; reload instead.\n\treturn false;\n};\n\nconst findIslandElements = (framework: string, component: string) =>\n\tArray.from(\n\t\tdocument.querySelectorAll<IslandElement>('[data-island=\"true\"]')\n\t).filter(\n\t\t(element) =>\n\t\t\telement.dataset.framework === framework &&\n\t\t\telement.dataset.component === component\n\t);\n\nconst remountIslandElement = async (\n\tupdate: IslandHotUpdate,\n\tcomponent: unknown,\n\telement: IslandElement\n) => {\n\t// Not hydrated yet (`visible`/`idle`/`none`): its first hydration\n\t// happens later; nothing on screen runs the old code.\n\tif (element.dataset.hydrated !== 'true') return true;\n\ttry {\n\t\treturn await remountByFramework(\n\t\t\tupdate.framework,\n\t\t\tcomponent,\n\t\t\telement,\n\t\t\tparseIslandProps(element.getAttribute('data-props'))\n\t\t);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[islands] Failed to update ${update.framework}:${update.component}`,\n\t\t\terror\n\t\t);\n\n\t\treturn false;\n\t}\n};\n\nconst applyIslandHotUpdate = async (update: IslandHotUpdate) => {\n\tconst elements = findIslandElements(update.framework, update.component);\n\tif (elements.length === 0) return true;\n\n\tconst loadedModule: { default?: unknown } = await import(update.modulePath);\n\tconst results = await Promise.all(\n\t\telements.map((element) =>\n\t\t\tremountIslandElement(update, loadedModule.default, element)\n\t\t)\n\t);\n\n\treturn results.every(Boolean);\n};\n\n/* Dev HMR entry point (see Window['__ABS_ISLAND_HMR__']): re-mount every\n * island on this page that renders one of the rebuilt components. */\nconst applyIslandHotUpdates = async (updates: IslandHotUpdate[]) => {\n\ttry {\n\t\tconst results = await Promise.all(updates.map(applyIslandHotUpdate));\n\n\t\treturn results.every(Boolean);\n\t} catch (error) {\n\t\tconsole.error('[islands] Failed to load an updated island', error);\n\n\t\treturn false;\n\t}\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\tif (typeof window !== 'undefined') {\n\t\twindow.__ABS_ISLAND_HMR__ = applyIslandHotUpdates;\n\t}\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
  "import type { ActionResult } from '../../types/formAction';\n\n/* The wire contract between `defineAction` (server) and the browser\n * helpers (`submitFormAction`, `enhanceForms`, `useFormAction`). Browser\n * safe: no server imports. */\n\n/* - ACTION_ERROR_ATTRIBUTE: element whose text becomes the named field's\n * error (`data-action-error=\"email\"`).\n * - ACTION_FORM_ATTRIBUTE: marks a plain <form> for `enhanceForms()` and\n * for the server's no-JS result rendering.\n * - ACTION_MESSAGE_ATTRIBUTE: element whose text becomes the form-level\n * error message.\n * - ACTION_REQUEST_HEADER: sent by the browser helpers so the action\n * answers with JSON instead of redirecting.\n * - ACTION_STATUS_ATTRIBUTE: set on the form, `success` or `error`.\n * - ACTION_SUCCESS_ATTRIBUTE: element shown (its `hidden` removed) after\n * a successful submission. */\nexport const ACTION_ERROR_ATTRIBUTE = 'data-action-error';\nexport const ACTION_FORM_ATTRIBUTE = 'data-absolute-action';\nexport const ACTION_MESSAGE_ATTRIBUTE = 'data-action-message';\nexport const ACTION_REQUEST_HEADER = 'x-absolute-action';\nexport const ACTION_STATUS_ATTRIBUTE = 'data-action-status';\nexport const ACTION_SUCCESS_ATTRIBUTE = 'data-action-success';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isStringRecord = (value: unknown) =>\n\tisRecord(value) &&\n\tObject.values(value).every((entry) => typeof entry === 'string');\n\nconst isOptionalString = (value: unknown) =>\n\tvalue === undefined || typeof value === 'string';\n\n/** True for a well-formed action result. The type parameters let callers\n * name the action's data and fields; only the shape is checked. */\nexport const isActionResult = <Data = unknown, Fields extends string = string>(\n\tvalue: unknown\n): value is ActionResult<Data, Fields> => {\n\tif (!isRecord(value)) return false;\n\tif (value.status === 'success') return isOptionalString(value.redirect);\n\n\treturn (\n\t\tvalue.status === 'error' &&\n\t\tisStringRecord(value.errors) &&\n\t\tisOptionalString(value.message)\n\t);\n};\n",
15
15
  "import type {\n\tActionData,\n\tActionErrorState,\n\tActionFields,\n\tActionPath,\n\tActionResult,\n\tAnyFormAction\n} from '../../types/formAction';\nimport {\n\tACTION_ERROR_ATTRIBUTE,\n\tACTION_FORM_ATTRIBUTE,\n\tACTION_MESSAGE_ATTRIBUTE,\n\tACTION_REQUEST_HEADER,\n\tACTION_STATUS_ATTRIBUTE,\n\tACTION_SUCCESS_ATTRIBUTE,\n\tisActionResult\n} from '../utils/formActionProtocol';\n\n/* Browser side of form actions. `submitFormAction` posts a FormData and\n * returns the typed result; `enhanceForms` upgrades plain\n * `<form data-absolute-action>` markup (static HTML and HTMX pages) so it\n * submits without a reload. Without JavaScript the same forms post\n * normally and the server renders the result. */\n\nexport type SubmitFormActionOptions = {\n\tsignal?: AbortSignal;\n};\n\nconst failure = (message: string): ActionErrorState => ({\n\terrors: {},\n\tmessage,\n\tstatus: 'error'\n});\n\nconst readPayload = async (response: Response) => {\n\ttry {\n\t\tconst payload: unknown = await response.json();\n\n\t\treturn payload;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\n/** A reducer for React 19's `useActionState` (JavaScript-only: React\n * renders function form actions as `javascript:` URLs on the server; use\n * `useFormAction` for forms that also work without JavaScript). */\nexport const formActionReducer =\n\t<Action extends AnyFormAction = AnyFormAction>(path: ActionPath<Action>) =>\n\tasync (_previous: unknown, body: FormData) =>\n\t\tsubmitFormAction<Action>(path, body);\n\n/** Posts `body` to the action at `path` and returns its result. Network\n * and unexpected server failures come back as an error state with a\n * `message`; an aborted request rejects with the abort error. */\nexport const submitFormAction = async <\n\tAction extends AnyFormAction = AnyFormAction\n>(\n\tpath: ActionPath<Action>,\n\tbody: FormData,\n\toptions: SubmitFormActionOptions = {}\n) => {\n\ttype Result = ActionResult<ActionData<Action>, ActionFields<Action>>;\n\tconst response = await fetch(path, {\n\t\tbody,\n\t\tcredentials: 'same-origin',\n\t\theaders: { accept: 'application/json', [ACTION_REQUEST_HEADER]: '1' },\n\t\tmethod: 'POST',\n\t\tsignal: options.signal\n\t}).catch((error: unknown) => {\n\t\tif (options.signal?.aborted) throw error;\n\n\t\treturn undefined;\n\t});\n\tif (!response) {\n\t\tconst result: Result = failure('Network error: the form was not sent.');\n\n\t\treturn result;\n\t}\n\tconst payload = await readPayload(response);\n\tif (isActionResult<ActionData<Action>, ActionFields<Action>>(payload))\n\t\treturn payload;\n\tconst result: Result = failure(\n\t\t`The server could not handle the form (HTTP ${response.status}).`\n\t);\n\n\treturn result;\n};\n\n/* ---------------------------------------------------------------- *\n * Plain <form data-absolute-action> enhancement\n * ---------------------------------------------------------------- */\n\nexport type FormActionEventDetail = { result: ActionResult };\n\n/** Fired on the form after every enhanced submission. */\nexport const FORM_ACTION_EVENT = 'absolute:form-action';\n\nconst namedControls = (form: HTMLFormElement) =>\n\tArray.from(form.elements).filter(\n\t\t(element): element is HTMLElement & { name: string } =>\n\t\t\telement instanceof HTMLElement &&\n\t\t\t'name' in element &&\n\t\t\ttypeof element.name === 'string' &&\n\t\t\telement.name !== ''\n\t);\n\nconst markControls = (form: HTMLFormElement, result: ActionResult) => {\n\tconst errors = result.status === 'error' ? result.errors : {};\n\tconst invalid = namedControls(form).filter((control) => {\n\t\tconst message = errors[control.name];\n\t\tif (message) control.setAttribute('aria-invalid', 'true');\n\t\telse control.removeAttribute('aria-invalid');\n\n\t\treturn Boolean(message);\n\t});\n\n\treturn invalid[0];\n};\n\nconst fillErrors = (form: HTMLFormElement, result: ActionResult) => {\n\tconst errors = result.status === 'error' ? result.errors : {};\n\tform.querySelectorAll<HTMLElement>(`[${ACTION_ERROR_ATTRIBUTE}]`).forEach(\n\t\t(element) => {\n\t\t\tconst name = element.getAttribute(ACTION_ERROR_ATTRIBUTE) ?? '';\n\t\t\tconst message = errors[name] ?? '';\n\t\t\telement.textContent = message;\n\t\t\telement.hidden = message === '';\n\t\t}\n\t);\n};\n\nconst fillMessages = (form: HTMLFormElement, result: ActionResult) => {\n\tconst message = result.status === 'error' ? (result.message ?? '') : '';\n\tform.querySelectorAll<HTMLElement>(`[${ACTION_MESSAGE_ATTRIBUTE}]`).forEach(\n\t\t(element) => {\n\t\t\telement.textContent = message;\n\t\t\telement.hidden = message === '';\n\t\t}\n\t);\n\tform.querySelectorAll<HTMLElement>(`[${ACTION_SUCCESS_ATTRIBUTE}]`).forEach(\n\t\t(element) => {\n\t\t\telement.hidden = result.status !== 'success';\n\t\t}\n\t);\n};\n\n/** Writes `result` into a plain form: field errors into\n * `[data-action-error=\"field\"]`, the message into `[data-action-message]`,\n * `[data-action-success]` shown on success, `aria-invalid` on the fields\n * and `data-action-status` on the form. Focuses the first invalid field. */\nexport const applyActionResult = (\n\tform: HTMLFormElement,\n\tresult: ActionResult\n) => {\n\tform.setAttribute(ACTION_STATUS_ATTRIBUTE, result.status);\n\tfillErrors(form, result);\n\tfillMessages(form, result);\n\tconst firstInvalid = markControls(form, result);\n\tfirstInvalid?.focus();\n};\n\nconst setPending = (form: HTMLFormElement, pending: boolean) => {\n\tform.toggleAttribute('aria-busy', pending);\n\tform.toggleAttribute('data-action-pending', pending);\n\tform.querySelectorAll<HTMLButtonElement | HTMLInputElement>(\n\t\t'button[type=\"submit\"], button:not([type]), input[type=\"submit\"]'\n\t).forEach((button) => {\n\t\tbutton.disabled = pending;\n\t});\n};\n\nconst finishSubmission = (form: HTMLFormElement, result: ActionResult) => {\n\tapplyActionResult(form, result);\n\tconst detail: FormActionEventDetail = { result };\n\tform.dispatchEvent(\n\t\tnew CustomEvent(FORM_ACTION_EVENT, { bubbles: true, detail })\n\t);\n\tif (result.status !== 'success') return;\n\tif (result.redirect) window.location.assign(result.redirect);\n\telse form.reset();\n};\n\nconst formActionUrl = (form: HTMLFormElement) => {\n\tconst url = new URL(form.action, window.location.href);\n\n\treturn `${url.pathname}${url.search}`;\n};\n\n/** Submits `form` with fetch instead of a page load. Returns a function\n * that removes the enhancement. */\nexport const enhanceForm = (form: HTMLFormElement) => {\n\tlet controller: AbortController | undefined;\n\tconst submit = async (event: SubmitEvent) => {\n\t\tevent.preventDefault();\n\t\tcontroller?.abort();\n\t\tconst current = new AbortController();\n\t\tcontroller = current;\n\t\tconst body = new FormData(form, event.submitter);\n\t\tsetPending(form, true);\n\t\tconst result = await submitFormAction(formActionUrl(form), body, {\n\t\t\tsignal: current.signal\n\t\t}).catch(() => undefined);\n\t\tif (controller !== current) return;\n\t\tsetPending(form, false);\n\t\tif (result) finishSubmission(form, result);\n\t};\n\tconst listener = (event: SubmitEvent) => {\n\t\tvoid submit(event);\n\t};\n\tform.addEventListener('submit', listener);\n\n\treturn () => {\n\t\tcontroller?.abort();\n\t\tform.removeEventListener('submit', listener);\n\t};\n};\n\n/* HTMX already submits these; enhancing them too would post twice. */\nconst isHtmxForm = (form: HTMLFormElement) =>\n\tform.hasAttribute('hx-post') || form.hasAttribute('data-hx-post');\n\n/** Enhances every `<form data-absolute-action>` under `root` (except\n * `hx-post` forms, which HTMX submits). Returns a function that removes\n * the enhancements. */\nexport const enhanceForms = (root: ParentNode = document) => {\n\tconst cleanups = Array.from(\n\t\troot.querySelectorAll<HTMLFormElement>(`form[${ACTION_FORM_ATTRIBUTE}]`)\n\t)\n\t\t.filter((form) => !isHtmxForm(form))\n\t\t.map((form) => enhanceForm(form));\n\n\treturn () => cleanups.forEach((cleanup) => cleanup());\n};\n"
16
16
  ],
17
- "mappings": "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",
18
- "debugId": "F1F7A19F311E674864756E2164756E21",
17
+ "mappings": "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",
18
+ "debugId": "DB5A54DCE17303CA64756E2164756E21",
19
19
  "names": []
20
20
  }
@@ -1,7 +1,9 @@
1
1
  import {
2
- readPageNonce,
3
2
  consumePrefetch2
4
- } from "./chunks/index-6b66nzyf.js";
3
+ } from "./chunks/index-a3rpg5kw.js";
4
+ import {
5
+ readPageNonce
6
+ } from "./chunks/index-4j1snyh2.js";
5
7
 
6
8
  // src/client/navigation.ts
7
9
  var RUNTIME_KEY = Symbol.for("absolutejs.navigation");
@@ -761,5 +763,5 @@ export {
761
763
  navigateDocument
762
764
  };
763
765
 
764
- //# debugId=1B604181BCFC6A6964756E2164756E21
766
+ //# debugId=54F3B2294F73732864756E2164756E21
765
767
  //# sourceMappingURL=navigation.js.map
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "/**\n * Cross-framework document navigation.\n *\n * Every framework router (React Router via `<UniversalRouter>`, the Svelte\n * router, vue-router, Angular's router) handles the URLs it has routes for\n * and lets every other link fall through to a real page load. This layer\n * catches those fall-through navigations and turns them into a soft swap:\n *\n * fetch the target HTML → load its stylesheets → tear down the current\n * page (`window.__ABSOLUTE_PAGE_DISPOSE__`) → swap <head>/<body> (in a\n * View Transition where supported) → run the target's scripts → the\n * target's hydration index hydrates the new body.\n *\n * So a React page links to a Svelte page (and back) without a reload, and\n * `createIslandStore` state lives on: the store snapshot sits on\n * `globalThis`, which a swap never resets.\n *\n * import { enableNavigation } from '@absolutejs/absolute/client/navigation';\n * enableNavigation();\n *\n * Opt-in per app (call it from every page that should take part; the\n * first call installs, the rest are no-ops) and opt-out per link with\n * `data-absolute-navigation=\"off\"` (on the link or an ancestor). Any\n * error falls back to a full page load.\n *\n * CSP: a fetched page's inline scripts carry THAT response's nonce, which\n * the current document's policy rejects. Scripts and styles are recreated\n * with the current document's nonce, but only those that carried the\n * fetched response's own nonce — what the browser would have run on a\n * full load is what runs here, nothing more. */\nimport { readPageNonce } from '../dev/client/cspNonce';\nimport type {\n\tDocumentNavigationEventDetail,\n\tDocumentNavigationOutcome,\n\tDocumentNavigationType,\n\tEnableNavigationOptions,\n\tNavigateDocumentOptions\n} from '../../types/navigation';\nimport { consumePrefetch } from './prefetch';\n\n/* Shared by every bundle copy of this module (each framework's client pass\n * bundles its own), and read by the Svelte `<Link>` to decide whether a\n * URL no `<Router>` matches should be handed to the browser. */\nconst RUNTIME_KEY = Symbol.for('absolutejs.navigation');\nconst STATE_KEY = '__absoluteNavigation';\nconst OPT_OUT_SELECTOR = '[data-absolute-navigation=\"off\"]';\nconst MODULE_RUN_PARAM = 'absolute-nav';\nconst ANNOUNCER_ID = 'absolute-navigation-announcer';\nconst ISLAND_STATE_GLOBAL = '__ABS_ISLAND_STATE__';\nconst DISPOSE_GLOBAL = '__ABSOLUTE_PAGE_DISPOSE__';\nconst READY_GLOBAL = '__ABSOLUTE_PAGE_READY__';\nconst STYLESHEET_TIMEOUT_MS = 5_000;\nconst PAGE_READY_TIMEOUT_MS = 10_000;\nconst PAGE_READY_POLL_MS = 16;\nconst SCRIPT_PLACEHOLDER = 'absolute-navigation-script';\nconst ID_RADIX = 36;\n\n/* Globals one page's bootstrap writes for its own hydration. Cleared before\n * the next page's scripts run so it never hydrates with the last page's\n * props. `__ABS_ISLAND_STATE__` is deliberately not here: it is the shared\n * island-store snapshot that must survive. */\nconst PAGE_GLOBALS = [\n\t'__INITIAL_PROPS__',\n\t'__SSR_DIRTY__',\n\t'__ABS_SLOT_HYDRATION_PENDING__',\n\t'__ABS_SVELTE_LAZY_ROUTES__',\n\t'__ABS_SVELTE_ISLAND_HTML__',\n\t'__ABS_SERVER_ISLAND_HTML__',\n\t'__ABSOLUTE_SERVER_DATA__',\n\t'__ABS_ANGULAR_REQUEST_CONTEXT__',\n\t'__ABS_ANGULAR_BASE_HREF__',\n\tDISPOSE_GLOBAL,\n\tREADY_GLOBAL\n];\n\nconst JAVASCRIPT_TYPES = new Set([\n\t'',\n\t'application/ecmascript',\n\t'application/javascript',\n\t'module',\n\t'speculationrules',\n\t'text/ecmascript',\n\t'text/javascript'\n]);\n\ntype NavigationLike = EventTarget & { currentEntry: unknown };\n\ntype ScrollPosition = { left: number; top: number };\n\n/* Which inline scripts / styles of a fetched page may run here. */\ntype ElementTrust =\n\t{ kind: 'all' } | { kind: 'none' } | { kind: 'nonce'; nonce: string };\n\ntype PendingScript = {\n\tplaceholder: Comment;\n\tsource: HTMLScriptElement;\n\ttrusted: boolean;\n};\n\ntype HeadContext = {\n\tavailable: Map<string, Element[]>;\n\tpreloaded: Set<Element>;\n\ttrust: ElementTrust;\n};\n\ntype IslandStateRef = { live: Record<string, unknown> | undefined };\n\ntype LoadedDocument = {\n\tdocument: Document;\n\ttrust: ElementTrust;\n\turl: URL;\n};\n\ntype NavigationRequest = {\n\t/** Document the destination entry belongs to (traversals). */\n\tdocumentId?: string;\n\treplace: boolean;\n\t/** Scroll position saved for the destination entry (traversals). */\n\tscroll?: ScrollPosition;\n\ttype: DocumentNavigationType;\n\turl: URL;\n};\n\ntype Runtime = {\n\tcontroller: AbortController | undefined;\n\tdocumentId: string;\n\tentryOwners: Map<string, string>;\n\tevaluatedModules: Set<string>;\n\tmoduleRun: number;\n\tnavigating: boolean;\n\tnavigationApi: NavigationLike | undefined;\n\tnonce: string | undefined;\n\toptions: EnableNavigationOptions;\n\trestoreHistory: (() => void) | undefined;\n\tscroll: Map<string, ScrollPosition>;\n\tscrollFrame: number;\n\tteardown: Array<() => void>;\n\ttoken: number;\n};\n\ntype PublicRuntime = {\n\tdisable: () => void;\n\tnavigate: (\n\t\thref: string,\n\t\toptions?: NavigateDocumentOptions\n\t) => Promise<DocumentNavigationOutcome>;\n};\n\nlet runtime: Runtime | undefined;\n\n/* ------------------------------------------------------------------ */\n/* Small helpers */\n/* ------------------------------------------------------------------ */\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst createId = () =>\n\ttypeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'\n\t\t? crypto.randomUUID()\n\t\t: `${Date.now().toString(ID_RADIX)}-${Math.random().toString(ID_RADIX).slice(2)}`;\n\nconst delay = (millis: number) =>\n\tnew Promise<void>((resolve) => {\n\t\tsetTimeout(resolve, millis);\n\t});\n\nconst readPublicRuntime = () => {\n\tconst value: unknown = Reflect.get(globalThis, RUNTIME_KEY);\n\tif (!isRecord(value)) return undefined;\n\tconst { disable, navigate } = value;\n\tif (typeof disable !== 'function' || typeof navigate !== 'function') {\n\t\treturn undefined;\n\t}\n\n\treturn value;\n};\n\nconst prefersReducedMotion = () =>\n\ttypeof window.matchMedia === 'function' &&\n\twindow.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n/* ------------------------------------------------------------------ */\n/* History entries: which document owns which entry */\n/* ------------------------------------------------------------------ */\n\nconst isNavigationLike = (value: unknown): value is NavigationLike =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t'currentEntry' in value &&\n\ttypeof Reflect.get(value, 'addEventListener') === 'function';\n\nconst readNavigationApi = () => {\n\tconst value: unknown = Reflect.get(window, 'navigation');\n\n\treturn isNavigationLike(value) ? value : undefined;\n};\n\nconst readEntryKey = (api: NavigationLike) => {\n\tconst entry = api.currentEntry;\n\tif (typeof entry !== 'object' || entry === null) return undefined;\n\tconst key: unknown = Reflect.get(entry, 'key');\n\n\treturn typeof key === 'string' ? key : undefined;\n};\n\nconst readStamp = (state: unknown) => {\n\tif (!isRecord(state)) return undefined;\n\tconst stamp = state[STATE_KEY];\n\tif (!isRecord(stamp)) return undefined;\n\tconst { doc, key } = stamp;\n\tif (typeof doc !== 'string' || typeof key !== 'string') return undefined;\n\n\treturn { doc, key };\n};\n\nconst isStampable = (state: unknown) => state === null || isRecord(state);\n\nconst stampState = (state: unknown, doc: string, key: string) => {\n\tif (!isStampable(state)) return state;\n\n\treturn { ...(isRecord(state) ? state : {}), [STATE_KEY]: { doc, key } };\n};\n\n/** Key of the history entry the browser is on right now. */\nconst currentEntryKey = (nav: Runtime) =>\n\tnav.navigationApi\n\t\t? readEntryKey(nav.navigationApi)\n\t\t: readStamp(window.history.state)?.key;\n\n/** Document that owns the current entry. `undefined` = unknown. */\nconst currentEntryOwner = (nav: Runtime) => {\n\tif (!nav.navigationApi) return readStamp(window.history.state)?.doc;\n\tconst key = readEntryKey(nav.navigationApi);\n\n\treturn key === undefined ? undefined : nav.entryOwners.get(key);\n};\n\n/** A traversal landed on an entry another document wrote. Navigation API:\n * every entry this session wrote is in the map, so an unknown one is\n * foreign. History fallback: an entry without a stamp (a hash link, an\n * entry from before `enableNavigation`) stays with the current page. */\nconst isForeignEntry = (nav: Runtime) => {\n\tconst owner = currentEntryOwner(nav);\n\tif (owner === nav.documentId) return false;\n\n\treturn owner !== undefined || nav.navigationApi !== undefined;\n};\n\nconst recordCurrentEntry = (nav: Runtime) => {\n\tif (!nav.navigationApi) return;\n\tconst key = readEntryKey(nav.navigationApi);\n\tif (key !== undefined) nav.entryOwners.set(key, nav.documentId);\n};\n\n/* Navigation API: an entry a router (or a hash link) pushes or replaces\n * belongs to the document on screen. Traversals land on known entries. */\nconst trackEntries = (nav: Runtime, api: NavigationLike) => {\n\tconst onEntryChange = (event: Event) => {\n\t\tif (Reflect.get(event, 'navigationType') === 'traverse') return;\n\t\trecordCurrentEntry(nav);\n\t};\n\tapi.addEventListener('currententrychange', onEntryChange);\n\tnav.teardown.push(() =>\n\t\tapi.removeEventListener('currententrychange', onEntryChange)\n\t);\n\trecordCurrentEntry(nav);\n};\n\n/* History fallback: no entry keys without the Navigation API, so every\n * pushState / replaceState gets a `{ doc, key }` stamp merged into its\n * (object or null) state. Routers keep their own keys next to it. */\nconst patchHistory = (nav: Runtime) => {\n\tconst { history } = window;\n\tconst originalPush = history.pushState;\n\tconst originalReplace = history.replaceState;\n\thistory.pushState = (\n\t\tstate: unknown,\n\t\tunused: string,\n\t\turl?: string | URL | null\n\t) =>\n\t\tReflect.apply(originalPush, history, [\n\t\t\tstampState(state, nav.documentId, createId()),\n\t\t\tunused,\n\t\t\turl\n\t\t]);\n\thistory.replaceState = (\n\t\tstate: unknown,\n\t\tunused: string,\n\t\turl?: string | URL | null\n\t) =>\n\t\tReflect.apply(originalReplace, history, [\n\t\t\tstampState(\n\t\t\t\tstate,\n\t\t\t\tnav.documentId,\n\t\t\t\treadStamp(history.state)?.key ?? createId()\n\t\t\t),\n\t\t\tunused,\n\t\t\turl\n\t\t]);\n\thistory.replaceState(history.state, '');\n\tnav.restoreHistory = () => {\n\t\thistory.pushState = originalPush;\n\t\thistory.replaceState = originalReplace;\n\t};\n};\n\n/* ------------------------------------------------------------------ */\n/* Scroll */\n/* ------------------------------------------------------------------ */\n\nconst recordScroll = (nav: Runtime) => {\n\tif (nav.navigating) return;\n\tconst key = currentEntryKey(nav);\n\tif (key === undefined) return;\n\tnav.scroll.set(key, { left: window.scrollX, top: window.scrollY });\n};\n\nconst trackScroll = (nav: Runtime) => {\n\tconst onScroll = () => {\n\t\tif (nav.scrollFrame !== 0) return;\n\t\tnav.scrollFrame = window.requestAnimationFrame(() => {\n\t\t\tnav.scrollFrame = 0;\n\t\t\trecordScroll(nav);\n\t\t});\n\t};\n\twindow.addEventListener('scroll', onScroll, { passive: true });\n\tnav.teardown.push(() => {\n\t\twindow.removeEventListener('scroll', onScroll);\n\t\tif (nav.scrollFrame !== 0) window.cancelAnimationFrame(nav.scrollFrame);\n\t});\n};\n\nconst scrollToHash = (hash: string) => {\n\tif (hash === '' || hash === '#') return false;\n\tconst id = decodeURIComponent(hash.slice(1));\n\tconst target =\n\t\tdocument.getElementById(id) ?? document.getElementsByName(id)[0];\n\tif (!target) return false;\n\ttarget.scrollIntoView();\n\n\treturn true;\n};\n\nconst applyScroll = (request: NavigationRequest, url: URL) => {\n\tif (request.scroll) {\n\t\twindow.scrollTo(request.scroll.left, request.scroll.top);\n\n\t\treturn;\n\t}\n\tif (scrollToHash(url.hash)) return;\n\twindow.scrollTo(0, 0);\n};\n\n/* Hydrating a document root can put the window back at the top (seen with\n * React 19 on `document`). Once the page is up, a position that was reset\n * to 0 is applied again; a position the user scrolled to stays. */\nconst reapplyScroll = (request: NavigationRequest, url: URL) => {\n\tif (window.scrollY !== 0 || window.scrollX !== 0) return;\n\tif (request.scroll && request.scroll.top + request.scroll.left > 0) {\n\t\twindow.scrollTo(request.scroll.left, request.scroll.top);\n\n\t\treturn;\n\t}\n\tif (!request.scroll) scrollToHash(url.hash);\n};\n\n/* ------------------------------------------------------------------ */\n/* Modules: re-run a page's entry when it is visited again */\n/* ------------------------------------------------------------------ */\n\nconst RELATIVE_SPECIFIER = /^(?:\\/|\\.\\.?\\/|https?:)/;\nconst IMPORT_CALL_RE = /\\bimport\\(\\s*([\"'])([^\"'\\n]+)\\1\\s*\\)/g;\nconst IMPORT_FROM_RE = /\\b(from|import)\\s*([\"'])([^\"'\\n]+)\\2/g;\n\nconst resolveSameOrigin = (specifier: string) => {\n\tif (!RELATIVE_SPECIFIER.test(specifier)) return undefined;\n\ttry {\n\t\tconst url = new URL(specifier, window.location.href);\n\n\t\treturn url.origin === window.location.origin ? url : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\n/* A module URL evaluates once per document, so a page's hydration index\n * that already ran (the user is coming back to it) would be a no-op. Give\n * the revisit a fresh URL; its imports (framework vendor chunks, shared\n * chunks) keep their URLs, so only the entry re-runs. */\nconst moduleUrlFor = (nav: Runtime, specifier: string) => {\n\tconst url = resolveSameOrigin(specifier);\n\tif (!url) return specifier;\n\tif (!nav.evaluatedModules.has(url.href)) {\n\t\tnav.evaluatedModules.add(url.href);\n\n\t\treturn specifier;\n\t}\n\tnav.moduleRun += 1;\n\turl.searchParams.set(MODULE_RUN_PARAM, String(nav.moduleRun));\n\n\treturn url.href;\n};\n\nconst rewriteModuleSpecifiers = (nav: Runtime, source: string) =>\n\tsource\n\t\t.replace(\n\t\t\tIMPORT_CALL_RE,\n\t\t\t(_match, _quote: string, specifier: string) =>\n\t\t\t\t`import(${JSON.stringify(moduleUrlFor(nav, specifier))})`\n\t\t)\n\t\t.replace(\n\t\t\tIMPORT_FROM_RE,\n\t\t\t(match, keyword: string, _quote: string, specifier: string) =>\n\t\t\t\tresolveSameOrigin(specifier)\n\t\t\t\t\t? `${keyword} ${JSON.stringify(moduleUrlFor(nav, specifier))}`\n\t\t\t\t\t: match\n\t\t);\n\nconst rememberSpecifier = (nav: Runtime, specifier: string) => {\n\tconst url = resolveSameOrigin(specifier);\n\tif (url) nav.evaluatedModules.add(url.href);\n};\n\nconst rememberImportCalls = (nav: Runtime, text: string) => {\n\tfor (const match of text.matchAll(IMPORT_CALL_RE)) {\n\t\trememberSpecifier(nav, match[2] ?? '');\n\t}\n};\n\n/** The entries the current document already evaluated. */\nconst rememberDocumentModules = (nav: Runtime) => {\n\tfor (const script of Array.from(document.scripts)) {\n\t\tconst src = script.getAttribute('src');\n\t\tif (src && script.type === 'module') rememberSpecifier(nav, src);\n\t\trememberImportCalls(nav, script.textContent ?? '');\n\t}\n};\n\n/* ------------------------------------------------------------------ */\n/* Fetching and parsing */\n/* ------------------------------------------------------------------ */\n\nconst TRUST_ALL: ElementTrust = { kind: 'all' };\nconst TRUST_NONE: ElementTrust = { kind: 'none' };\n\nconst readTrust = (response: Response) => {\n\tconst policy = response.headers.get('content-security-policy');\n\tif (!policy) return TRUST_ALL;\n\tconst nonce = /'nonce-([^']+)'/.exec(policy)?.[1];\n\tif (!nonce) return TRUST_NONE;\n\tconst trust: ElementTrust = { kind: 'nonce', nonce };\n\n\treturn trust;\n};\n\nconst isTrusted = (element: Element, trust: ElementTrust) => {\n\tif (trust.kind === 'all') return true;\n\tif (trust.kind === 'none') return false;\n\n\treturn element.getAttribute('nonce') === trust.nonce;\n};\n\nconst takePrefetched = async (url: URL) => {\n\tconst pending =\n\t\tconsumePrefetch(url.href) ??\n\t\tconsumePrefetch(`${url.pathname}${url.search}`);\n\tif (!pending) return undefined;\n\tconst response = await pending;\n\n\treturn response.ok ? response : undefined;\n};\n\nconst fetchDocument = async (url: URL, signal: AbortSignal) =>\n\t(await takePrefetched(url)) ??\n\tfetch(url.href, {\n\t\tcredentials: 'same-origin',\n\t\theaders: { Accept: 'text/html' },\n\t\tsignal\n\t});\n\nconst escapeRegExp = (value: string) =>\n\tvalue.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n/* DOMParser documents inherit this document's CSP, so a parsed <style>\n * carrying the fetched response's nonce is reported as a violation the\n * moment it is parsed. Elements carrying that response's nonce (what a full\n * load would have run) get this document's nonce before parsing; nothing\n * else gains one. */\nconst adoptResponseNonce = (\n\tnav: Runtime,\n\thtml: string,\n\ttrust: ElementTrust\n) => {\n\tif (trust.kind !== 'nonce' || !nav.nonce) return { html, trust };\n\tconst pattern = new RegExp(\n\t\t`\\\\bnonce=([\"'])${escapeRegExp(trust.nonce)}\\\\1`,\n\t\t'g'\n\t);\n\tconst adopted: ElementTrust = { kind: 'nonce', nonce: nav.nonce };\n\n\treturn {\n\t\thtml: html.replace(pattern, `nonce=\"${nav.nonce}\"`),\n\t\ttrust: adopted\n\t};\n};\n\nconst loadDocument = async (nav: Runtime, url: URL, signal: AbortSignal) => {\n\tconst response = await fetchDocument(url, signal);\n\tconst contentType = response.headers.get('content-type') ?? '';\n\tconst finalUrl = new URL(response.url || url.href);\n\tfinalUrl.hash = url.hash;\n\tif (\n\t\t!response.ok ||\n\t\t!contentType.includes('text/html') ||\n\t\tfinalUrl.origin !== window.location.origin\n\t) {\n\t\tawait response.body?.cancel().catch(() => undefined);\n\n\t\treturn undefined;\n\t}\n\tconst { html, trust } = adoptResponseNonce(\n\t\tnav,\n\t\tawait response.text(),\n\t\treadTrust(response)\n\t);\n\tconst parsed = new DOMParser().parseFromString(html, 'text/html');\n\tconst loaded: LoadedDocument = {\n\t\tdocument: parsed,\n\t\ttrust,\n\t\turl: finalUrl\n\t};\n\n\treturn loaded;\n};\n\nconst isExecutableScript = (script: HTMLScriptElement) =>\n\tJAVASCRIPT_TYPES.has(\n\t\t(script.getAttribute('type') ?? '').trim().toLowerCase()\n\t);\n\n/* Swap each executable <script> for a comment so the parsed (inert)\n * elements never reach the live document; the comment marks where the\n * recreated script goes. */\nconst extractScripts = (loaded: LoadedDocument) =>\n\tArray.from(loaded.document.querySelectorAll('script'))\n\t\t.filter(isExecutableScript)\n\t\t.map((source) => {\n\t\t\tconst placeholder =\n\t\t\t\tloaded.document.createComment(SCRIPT_PLACEHOLDER);\n\t\t\tconst trusted = isTrusted(source, loaded.trust);\n\t\t\tsource.replaceWith(placeholder);\n\t\t\tconst pending: PendingScript = { placeholder, source, trusted };\n\n\t\t\treturn pending;\n\t\t});\n\n/* ------------------------------------------------------------------ */\n/* Stylesheets, head and body */\n/* ------------------------------------------------------------------ */\n\nconst applyNonce = (nav: Runtime, element: Element, trusted: boolean) => {\n\telement.removeAttribute('nonce');\n\t// The attribute (not just the property) so later readers of the page\n\t// nonce (`script[nonce], style[nonce]`) still find a carrier.\n\tif (trusted && nav.nonce) element.setAttribute('nonce', nav.nonce);\n};\n\nconst waitForStylesheet = (link: HTMLLinkElement) =>\n\tnew Promise<void>((resolve) => {\n\t\tconst timer = setTimeout(resolve, STYLESHEET_TIMEOUT_MS);\n\t\tconst done = () => {\n\t\t\tclearTimeout(timer);\n\t\t\tresolve();\n\t\t};\n\t\tlink.addEventListener('load', done, { once: true });\n\t\tlink.addEventListener('error', done, { once: true });\n\t});\n\n/* Load the target's stylesheets before anything is torn down, inert\n * (`media=\"not all\"`) so they can't restyle the page still on screen. */\nconst preloadStylesheets = async (loaded: LoadedDocument) => {\n\tconst links = Array.from(\n\t\tloaded.document.head.querySelectorAll<HTMLLinkElement>(\n\t\t\t'link[rel~=\"stylesheet\"]'\n\t\t)\n\t);\n\tconst media = new Map<HTMLLinkElement, string | null>();\n\tfor (const link of links) {\n\t\tmedia.set(link, link.getAttribute('media'));\n\t\tlink.setAttribute('media', 'not all');\n\t\tdocument.head.append(document.adoptNode(link));\n\t}\n\tawait Promise.all(links.map(waitForStylesheet));\n\n\treturn media;\n};\n\nconst restoreMedia = (media: Map<HTMLLinkElement, string | null>) => {\n\tfor (const [link, value] of media) {\n\t\tif (value === null) link.removeAttribute('media');\n\t\telse link.setAttribute('media', value);\n\t}\n};\n\nconst elementKey = (element: Element) => {\n\tconst attributes = Array.from(element.attributes)\n\t\t.filter((attribute) => attribute.name !== 'nonce')\n\t\t.map((attribute) => `${attribute.name}=${attribute.value}`)\n\t\t.sort()\n\t\t.join('\\u0000');\n\n\treturn `${element.tagName}\\u0001${attributes}\\u0001${element.textContent ?? ''}`;\n};\n\nconst takeMatch = (available: Map<string, Element[]>, node: Element) =>\n\tavailable.get(elementKey(node))?.shift();\n\nconst syncAttributes = (target: Element, source: Element) => {\n\tfor (const attribute of Array.from(target.attributes)) {\n\t\tif (!source.hasAttribute(attribute.name))\n\t\t\ttarget.removeAttribute(attribute.name);\n\t}\n\tfor (const attribute of Array.from(source.attributes)) {\n\t\ttarget.setAttribute(attribute.name, attribute.value);\n\t}\n};\n\nconst indexHead = (preloaded: Set<Element>) => {\n\tconst available = new Map<string, Element[]>();\n\tfor (const child of Array.from(document.head.children)) {\n\t\tif (preloaded.has(child) || child.tagName === 'SCRIPT') continue;\n\t\tconst key = elementKey(child);\n\t\tavailable.set(key, [...(available.get(key) ?? []), child]);\n\t}\n\n\treturn available;\n};\n\nconst resolveHeadNode = (nav: Runtime, node: Node, context: HeadContext) => {\n\tif (!(node instanceof Element) || context.preloaded.has(node)) return node;\n\tconst existing = takeMatch(context.available, node);\n\tif (existing) return existing;\n\tif (node.tagName === 'STYLE') {\n\t\tapplyNonce(nav, node, isTrusted(node, context.trust));\n\t}\n\n\treturn document.adoptNode(node);\n};\n\n/* Keep head elements the two pages share (same tag, attributes and text):\n * no stylesheet reload, no favicon flash. Everything else is replaced.\n * Every node is kept in order, whitespace text and comments included:\n * Svelte hydrates `<svelte:head>` by walking those nodes, and a missing one\n * makes it throw the server markup away and mount again. */\nconst swapHead = (\n\tnav: Runtime,\n\tloaded: LoadedDocument,\n\theadNodes: Node[],\n\tpreloaded: Set<Element>\n) => {\n\tconst context: HeadContext = {\n\t\tavailable: indexHead(preloaded),\n\t\tpreloaded,\n\t\ttrust: loaded.trust\n\t};\n\tconst nextNodes = headNodes.map((node) =>\n\t\tresolveHeadNode(nav, node, context)\n\t);\n\tsyncAttributes(document.head, loaded.document.head);\n\tdocument.head.replaceChildren(...nextNodes);\n};\n\nconst swapBody = (nav: Runtime, loaded: LoadedDocument) => {\n\tfor (const style of Array.from(\n\t\tloaded.document.body.querySelectorAll('style')\n\t)) {\n\t\tapplyNonce(nav, style, isTrusted(style, loaded.trust));\n\t}\n\tconst nextBody = document.adoptNode(loaded.document.body);\n\tdocument.body.replaceWith(nextBody);\n};\n\nconst disposeCurrentPage = async () => {\n\tconst dispose: unknown = Reflect.get(window, DISPOSE_GLOBAL);\n\tReflect.set(window, DISPOSE_GLOBAL, undefined);\n\tReflect.set(window, READY_GLOBAL, undefined);\n\tif (typeof dispose === 'function') await Reflect.apply(dispose, window, []);\n};\n\nconst canTearDown = () =>\n\ttypeof Reflect.get(window, DISPOSE_GLOBAL) === 'function';\n\n/* ------------------------------------------------------------------ */\n/* Scripts */\n/* ------------------------------------------------------------------ */\n\nconst islandStateOf = (value: unknown) => (isRecord(value) ? value : undefined);\n\n/* A page with islands re-seeds `window.__ABS_ISLAND_STATE__` with the\n * server's store state. The live snapshot wins per store, the same rule\n * `initializeIslandStores` applies. */\nconst keepIslandState = (live: Record<string, unknown> | undefined) => {\n\tconst current = islandStateOf(Reflect.get(globalThis, ISLAND_STATE_GLOBAL));\n\tif (!live || current === live) return live;\n\tconst merged: Record<string, unknown> = { ...(current ?? {}), ...live };\n\tReflect.set(globalThis, ISLAND_STATE_GLOBAL, merged);\n\n\treturn merged;\n};\n\nconst loadEvent = (script: HTMLScriptElement) =>\n\tnew Promise<void>((resolve) => {\n\t\tscript.addEventListener('load', () => resolve(), { once: true });\n\t\tscript.addEventListener('error', () => resolve(), { once: true });\n\t});\n\nconst createScript = (nav: Runtime, pending: PendingScript) => {\n\tconst { source } = pending;\n\tconst script = document.createElement('script');\n\tArray.from(source.attributes)\n\t\t.filter(({ name }) => name !== 'nonce' && name !== 'src')\n\t\t.forEach(({ name, value }) => script.setAttribute(name, value));\n\tapplyNonce(nav, script, pending.trusted);\n\tconst src = source.getAttribute('src');\n\tconst isModule = source.type === 'module';\n\tif (src) script.src = isModule ? moduleUrlFor(nav, src) : src;\n\tif (!src) script.text = rewriteModuleSpecifiers(nav, source.text);\n\tif (src && !source.hasAttribute('async')) script.async = false;\n\n\treturn script;\n};\n\nconst runScript = async (\n\tnav: Runtime,\n\tpending: PendingScript,\n\tislandState: IslandStateRef\n) => {\n\tif (!pending.placeholder.isConnected) return;\n\tconst script = createScript(nav, pending);\n\tconst loaded = script.src ? loadEvent(script) : Promise.resolve();\n\tpending.placeholder.replaceWith(script);\n\tislandState.live = keepIslandState(islandState.live);\n\tawait loaded;\n\tislandState.live = keepIslandState(islandState.live);\n};\n\nconst clearPageGlobals = () => {\n\tfor (const name of PAGE_GLOBALS) Reflect.deleteProperty(window, name);\n};\n\n/* In document order, one at a time: an inline script that sets\n * `__INITIAL_PROPS__` has to run before the module that hydrates with it. */\nconst runScripts = (nav: Runtime, scripts: PendingScript[]) => {\n\tconst islandState: IslandStateRef = {\n\t\tlive: islandStateOf(Reflect.get(globalThis, ISLAND_STATE_GLOBAL))\n\t};\n\n\treturn scripts.reduce<Promise<void>>(\n\t\t(previous, pending) =>\n\t\t\tprevious.then(() => runScript(nav, pending, islandState)),\n\t\tPromise.resolve()\n\t);\n};\n\nconst pollForPage = async (deadline: number): Promise<void> => {\n\tif (canTearDown() || Date.now() >= deadline) return;\n\tawait delay(PAGE_READY_POLL_MS);\n\tawait pollForPage(deadline);\n};\n\n/* The hydration index registers `__ABSOLUTE_PAGE_DISPOSE__` once it has\n * mounted — possibly after an `import()` an inline bootstrap started. */\nconst waitForPageReady = async (hasModules: boolean) => {\n\tif (hasModules) await pollForPage(Date.now() + PAGE_READY_TIMEOUT_MS);\n\tconst ready: unknown = Reflect.get(window, READY_GLOBAL);\n\tif (ready instanceof Promise) await ready.catch(() => undefined);\n};\n\nconst loadsModules = (scripts: PendingScript[]) =>\n\tscripts.some(\n\t\t({ source }) =>\n\t\t\tsource.type === 'module' || /\\bimport\\s*\\(/.test(source.text)\n\t);\n\n/* ------------------------------------------------------------------ */\n/* Focus, announcement, events */\n/* ------------------------------------------------------------------ */\n\nconst ensureAnnouncer = () => {\n\tconst existing = document.getElementById(ANNOUNCER_ID);\n\tif (existing) return existing;\n\tconst region = document.createElement('div');\n\tregion.id = ANNOUNCER_ID;\n\tregion.setAttribute('aria-live', 'assertive');\n\tregion.setAttribute('aria-atomic', 'true');\n\tregion.setAttribute('role', 'status');\n\t// CSSOM, not a style attribute: a strict `style-src-attr` can't block it.\n\tObject.assign(region.style, {\n\t\tborder: '0',\n\t\tclip: 'rect(0 0 0 0)',\n\t\theight: '1px',\n\t\tmargin: '-1px',\n\t\toverflow: 'hidden',\n\t\tpadding: '0',\n\t\tposition: 'absolute',\n\t\twhiteSpace: 'nowrap',\n\t\twidth: '1px'\n\t});\n\tdocument.body.append(region);\n\n\treturn region;\n};\n\nconst announcePage = () => {\n\tconst heading = document.querySelector('h1')?.textContent?.trim();\n\tconst text = document.title || heading || window.location.pathname;\n\tensureAnnouncer().textContent = text;\n};\n\nconst resetFocus = () => {\n\tconst autofocus = document.querySelector<HTMLElement>('[autofocus]');\n\tif (autofocus) {\n\t\tautofocus.focus();\n\n\t\treturn;\n\t}\n\tif (document.activeElement instanceof HTMLElement) {\n\t\tdocument.activeElement.blur();\n\t}\n};\n\nconst dispatch = (\n\tname: string,\n\tdetail: DocumentNavigationEventDetail,\n\tcancelable: boolean\n) => window.dispatchEvent(new CustomEvent(name, { cancelable, detail }));\n\n/* ------------------------------------------------------------------ */\n/* The navigation */\n/* ------------------------------------------------------------------ */\n\nconst outcome = (value: DocumentNavigationOutcome) => value;\n\nconst reload = (request: NavigationRequest, committed: boolean) => {\n\tif (committed || request.type === 'traverse') window.location.reload();\n\telse if (request.replace) window.location.replace(request.url.href);\n\telse window.location.assign(request.url.href);\n\n\treturn outcome('reloaded');\n};\n\nconst commitHistory = (nav: Runtime, request: NavigationRequest, url: URL) => {\n\tnav.documentId = request.documentId ?? createId();\n\tif (request.type === 'traverse') {\n\t\trecordCurrentEntry(nav);\n\n\t\treturn;\n\t}\n\tconst key = currentEntryKey(nav);\n\tif (key !== undefined) {\n\t\tnav.scroll.set(key, { left: window.scrollX, top: window.scrollY });\n\t}\n\tconst state = stampState(null, nav.documentId, createId());\n\tif (request.replace) window.history.replaceState(state, '', url.href);\n\telse window.history.pushState(state, '', url.href);\n\trecordCurrentEntry(nav);\n};\n\nconst shouldAnimate = (nav: Runtime) =>\n\tnav.options.viewTransition !== false &&\n\ttypeof Reflect.get(document, 'startViewTransition') === 'function' &&\n\t!prefersReducedMotion();\n\nconst readPromise = (value: unknown, name: string) => {\n\tif (typeof value !== 'object' || value === null) return undefined;\n\tconst promise: unknown = Reflect.get(value, name);\n\n\treturn promise instanceof Promise ? promise : undefined;\n};\n\nconst runSwap = async (nav: Runtime, swap: () => Promise<void>) => {\n\tconst start: unknown = Reflect.get(document, 'startViewTransition');\n\tif (!shouldAnimate(nav) || typeof start !== 'function') {\n\t\tawait swap();\n\n\t\treturn;\n\t}\n\tconst transition: unknown = Reflect.apply(start, document, [swap]);\n\treadPromise(transition, 'ready')?.catch(() => undefined);\n\treadPromise(transition, 'finished')?.catch(() => undefined);\n\tawait readPromise(transition, 'updateCallbackDone');\n};\n\nconst swapDocument = async (\n\tnav: Runtime,\n\trequest: NavigationRequest,\n\tloaded: LoadedDocument,\n\tisStale: () => boolean\n) => {\n\tconst scripts = extractScripts(loaded);\n\t// Before the preload moves the stylesheet links out of the parsed head.\n\tconst headNodes = Array.from(loaded.document.head.childNodes);\n\tconst media = await preloadStylesheets(loaded);\n\tconst preloaded = new Set<Element>(media.keys());\n\t// A newer navigation started while the stylesheets loaded: it owns the\n\t// page now, so drop what this one added and stop.\n\tif (isStale()) {\n\t\tpreloaded.forEach((link) => link.remove());\n\n\t\treturn false;\n\t}\n\t// Outside the View Transition callback: the browser records the scroll\n\t// position of the entry being left when the new one is pushed, and inside\n\t// the callback it reads 0, which it then restores on a later back.\n\tcommitHistory(nav, request, loaded.url);\n\tconst swap = async () => {\n\t\tawait disposeCurrentPage();\n\t\tclearPageGlobals();\n\t\tsyncAttributes(\n\t\t\tdocument.documentElement,\n\t\t\tloaded.document.documentElement\n\t\t);\n\t\tswapHead(nav, loaded, headNodes, preloaded);\n\t\tswapBody(nav, loaded);\n\t\trestoreMedia(media);\n\t\tapplyScroll(request, loaded.url);\n\t};\n\tawait runSwap(nav, swap);\n\tresetFocus();\n\tawait runScripts(nav, scripts);\n\tawait waitForPageReady(loadsModules(scripts));\n\treapplyScroll(request, loaded.url);\n\tannouncePage();\n\n\treturn true;\n};\n\nconst isCurrent = (nav: Runtime, token: number) => nav.token === token;\n\nconst performNavigation = async (nav: Runtime, request: NavigationRequest) => {\n\tnav.token += 1;\n\tconst { token } = nav;\n\tnav.controller?.abort();\n\tconst controller = new AbortController();\n\tnav.controller = controller;\n\tconst detail: DocumentNavigationEventDetail = {\n\t\ttype: request.type,\n\t\turl: request.url.href\n\t};\n\tconst proceed = dispatch(\n\t\t'absolute:before-navigate',\n\t\tdetail,\n\t\trequest.type !== 'traverse'\n\t);\n\tif (!proceed) return outcome('cancelled');\n\tif (!canTearDown()) return reload(request, false);\n\n\tconst committedBefore = nav.documentId;\n\ttry {\n\t\tconst loaded = await loadDocument(nav, request.url, controller.signal);\n\t\tif (!isCurrent(nav, token)) return outcome('superseded');\n\t\tif (!loaded) return reload(request, false);\n\t\tnav.navigating = true;\n\t\tconst swapped = await swapDocument(\n\t\t\tnav,\n\t\t\trequest,\n\t\t\tloaded,\n\t\t\t() => !isCurrent(nav, token)\n\t\t);\n\t\tif (!swapped) return outcome('superseded');\n\t\tdispatch('absolute:after-navigate', detail, false);\n\n\t\treturn outcome('swapped');\n\t} catch (error) {\n\t\tif (!isCurrent(nav, token)) return outcome('superseded');\n\t\tconsole.error('[absolute] navigation failed, loading the page:', error);\n\n\t\treturn reload(request, nav.documentId !== committedBefore);\n\t} finally {\n\t\tif (isCurrent(nav, token)) nav.navigating = false;\n\t}\n};\n\n/* ------------------------------------------------------------------ */\n/* Interception */\n/* ------------------------------------------------------------------ */\n\nconst isModifiedClick = (event: MouseEvent) =>\n\tevent.metaKey || event.ctrlKey || event.shiftKey || event.altKey;\n\nconst isSamePageFragment = (url: URL) =>\n\turl.hash !== '' &&\n\turl.pathname === window.location.pathname &&\n\turl.search === window.location.search;\n\nconst findAnchor = (event: MouseEvent) => {\n\tconst { target } = event;\n\tif (!(target instanceof Element)) return null;\n\n\treturn target.closest<HTMLAnchorElement>('a[href]');\n};\n\nconst isPlainClick = (event: MouseEvent) =>\n\t!event.defaultPrevented && event.button === 0 && !isModifiedClick(event);\n\nconst isOptedOut = (anchor: HTMLAnchorElement) =>\n\t(anchor.target !== '' && anchor.target !== '_self') ||\n\tanchor.hasAttribute('download') ||\n\tanchor.relList.contains('external') ||\n\tanchor.closest(OPT_OUT_SELECTOR) !== null;\n\nconst interceptableUrl = (nav: Runtime, anchor: HTMLAnchorElement) => {\n\tif (isOptedOut(anchor)) return undefined;\n\tconst url = new URL(anchor.href, window.location.href);\n\tif (url.origin !== window.location.origin) return undefined;\n\tif (isSamePageFragment(url)) return undefined;\n\tif (nav.options.shouldIntercept?.(url) === false) return undefined;\n\n\treturn url;\n};\n\n/* Bubble phase on window: runs after every framework router's handler, so\n * a click a router handled (`preventDefault`) never reaches this. */\nconst listenForClicks = (nav: Runtime) => {\n\tconst onClick = (event: MouseEvent) => {\n\t\tif (!isPlainClick(event)) return;\n\t\tconst anchor = findAnchor(event);\n\t\tconst url = anchor ? interceptableUrl(nav, anchor) : undefined;\n\t\tif (!url || !canTearDown()) return;\n\t\tevent.preventDefault();\n\t\tvoid performNavigation(nav, { replace: false, type: 'link', url });\n\t};\n\twindow.addEventListener('click', onClick);\n\tnav.teardown.push(() => window.removeEventListener('click', onClick));\n};\n\n/* Capture phase, so it runs before the routers' popstate listeners: a\n * traversal onto another document's entry is stopped here and swapped. */\nconst listenForTraversals = (nav: Runtime) => {\n\tconst onPopState = (event: PopStateEvent) => {\n\t\tif (!isForeignEntry(nav)) return;\n\t\tevent.stopImmediatePropagation();\n\t\tconst owner = currentEntryOwner(nav);\n\t\tconst key = currentEntryKey(nav);\n\t\tvoid performNavigation(nav, {\n\t\t\tdocumentId: owner,\n\t\t\treplace: false,\n\t\t\tscroll: key === undefined ? undefined : nav.scroll.get(key),\n\t\t\ttype: 'traverse',\n\t\t\turl: new URL(window.location.href)\n\t\t});\n\t};\n\twindow.addEventListener('popstate', onPopState, { capture: true });\n\tnav.teardown.push(() =>\n\t\twindow.removeEventListener('popstate', onPopState, { capture: true })\n\t);\n};\n\n/* ------------------------------------------------------------------ */\n/* Public API */\n/* ------------------------------------------------------------------ */\n\n/** Turn the layer off: listeners removed, history methods restored. */\nexport const disableNavigation = () => {\n\tconst installed = readPublicRuntime();\n\tif (installed && typeof installed.disable === 'function') {\n\t\tReflect.apply(installed.disable, undefined, []);\n\t}\n};\n\nconst teardownRuntime = (nav: Runtime) => {\n\tnav.controller?.abort();\n\tfor (const cleanup of nav.teardown.splice(0)) cleanup();\n\tnav.restoreHistory?.();\n\tReflect.deleteProperty(globalThis, RUNTIME_KEY);\n\tif (runtime === nav) runtime = undefined;\n};\n\nconst navigateWith =\n\t(nav: Runtime) =>\n\t(href: string, options: NavigateDocumentOptions = {}) => {\n\t\tconst url = new URL(href, window.location.href);\n\t\tif (url.origin !== window.location.origin) {\n\t\t\twindow.location.assign(url.href);\n\n\t\t\treturn Promise.resolve<DocumentNavigationOutcome>('reloaded');\n\t\t}\n\n\t\treturn performNavigation(nav, {\n\t\t\treplace: options.replace === true,\n\t\t\ttype: 'navigate',\n\t\t\turl\n\t\t});\n\t};\n\n/**\n * Install cross-framework document navigation for this tab. Idempotent:\n * every page can call it (each framework bundle carries its own copy of\n * this module; the first call wins and its options apply).\n */\nexport const enableNavigation = (options: EnableNavigationOptions = {}) => {\n\tif (typeof window === 'undefined' || readPublicRuntime()) return;\n\tconst navigationApi = readNavigationApi();\n\tconst nav: Runtime = {\n\t\tcontroller: undefined,\n\t\tdocumentId: createId(),\n\t\tentryOwners: new Map(),\n\t\tevaluatedModules: new Set(),\n\t\tmoduleRun: 0,\n\t\tnavigating: false,\n\t\tnavigationApi,\n\t\tnonce: readPageNonce(),\n\t\toptions,\n\t\trestoreHistory: undefined,\n\t\tscroll: new Map(),\n\t\tscrollFrame: 0,\n\t\tteardown: [],\n\t\ttoken: 0\n\t};\n\truntime = nav;\n\tif (navigationApi) trackEntries(nav, navigationApi);\n\telse patchHistory(nav);\n\trememberDocumentModules(nav);\n\ttrackScroll(nav);\n\tlistenForClicks(nav);\n\tlistenForTraversals(nav);\n\tconst publicRuntime: PublicRuntime = {\n\t\tnavigate: navigateWith(nav),\n\t\tdisable: () => teardownRuntime(nav)\n\t};\n\tReflect.set(globalThis, RUNTIME_KEY, publicRuntime);\n};\n\nconst OUTCOMES = new Set<unknown>([\n\t'cancelled',\n\t'reloaded',\n\t'superseded',\n\t'swapped'\n]);\n\nconst isOutcome = (value: unknown): value is DocumentNavigationOutcome =>\n\tOUTCOMES.has(value);\n\n/** Whether `enableNavigation()` is active in this tab. */\nexport const isNavigationEnabled = () =>\n\ttypeof window !== 'undefined' && readPublicRuntime() !== undefined;\n\n/**\n * Navigate to `href` through the layer: a soft swap when it is enabled\n * and the page can be torn down, a normal page load otherwise.\n */\nexport const navigateDocument = async (\n\thref: string,\n\toptions: NavigateDocumentOptions = {}\n) => {\n\tconst installed = readPublicRuntime();\n\tconst navigate = installed?.navigate;\n\tif (typeof navigate === 'function') {\n\t\tconst result: unknown = await Reflect.apply(navigate, undefined, [\n\t\t\thref,\n\t\t\toptions\n\t\t]);\n\t\tif (isOutcome(result)) return result;\n\t}\n\tif (options.replace) window.location.replace(href);\n\telse window.location.assign(href);\n\n\treturn outcome('reloaded');\n};\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "1B604181BCFC6A6964756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "54F3B2294F73732864756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -14,7 +14,7 @@ import {
14
14
  scheduleHoverPrefetch2,
15
15
  observeViewport2,
16
16
  resetPrefetchState2
17
- } from "./chunks/index-6b66nzyf.js";
17
+ } from "./chunks/index-a3rpg5kw.js";
18
18
  export {
19
19
  ROUTE_DATA_MEDIA_TYPE2 as ROUTE_DATA_MEDIA_TYPE,
20
20
  canPrefetch2 as canPrefetch,
@@ -0,0 +1,85 @@
1
+ import type {} from '../../../types/globals';
2
+ /* Island HMR update handler
3
+ The server rebuilt the bundles of the listed islands. The island runtime
4
+ that hydrated this page re-mounts each matching island in place from its
5
+ new bundle (Window['__ABS_ISLAND_HMR__']); a page without that runtime, or
6
+ an island it cannot swap (Angular), reloads instead. */
7
+
8
+ import { hideErrorOverlay } from '../errorOverlay';
9
+ import { sendAbsoluteHmrTiming } from '../hmrTiming';
10
+
11
+ type IslandUpdate = {
12
+ component: string;
13
+ framework: string;
14
+ modulePath: string;
15
+ };
16
+
17
+ const isIslandUpdate = (value: unknown): value is IslandUpdate =>
18
+ typeof value === 'object' &&
19
+ value !== null &&
20
+ typeof Reflect.get(value, 'component') === 'string' &&
21
+ typeof Reflect.get(value, 'framework') === 'string' &&
22
+ typeof Reflect.get(value, 'modulePath') === 'string';
23
+
24
+ const rendersIsland = ({ component, framework }: IslandUpdate) =>
25
+ Array.from(
26
+ document.querySelectorAll<HTMLElement>('[data-island="true"]')
27
+ ).some(
28
+ (element) =>
29
+ element.dataset.framework === framework &&
30
+ element.dataset.component === component
31
+ );
32
+
33
+ const reloadForIslands = (
34
+ clientStart: number,
35
+ serverDuration?: number,
36
+ updateId?: number
37
+ ) => {
38
+ sendAbsoluteHmrTiming({
39
+ clientStart,
40
+ kind: 'component',
41
+ outcome: 'reloaded',
42
+ serverMs: serverDuration,
43
+ updateId
44
+ });
45
+ window.location.reload();
46
+ };
47
+
48
+ type IslandUpdateMessage = {
49
+ data: { islands?: unknown; serverDuration?: number };
50
+ timestamp?: number;
51
+ };
52
+
53
+ export const handleIslandUpdate = (message: IslandUpdateMessage) => {
54
+ const updates = Array.isArray(message.data.islands)
55
+ ? message.data.islands.filter(isIslandUpdate)
56
+ : [];
57
+ const onPage = updates.filter(rendersIsland);
58
+ if (onPage.length === 0) return;
59
+
60
+ const clientStart = performance.now();
61
+ const { serverDuration } = message.data;
62
+ const applyUpdate = window.__ABS_ISLAND_HMR__;
63
+ if (!applyUpdate) {
64
+ reloadForIslands(clientStart, serverDuration, message.timestamp);
65
+
66
+ return;
67
+ }
68
+
69
+ void applyUpdate(onPage).then((applied) => {
70
+ if (!applied) {
71
+ reloadForIslands(clientStart, serverDuration, message.timestamp);
72
+
73
+ return undefined;
74
+ }
75
+ hideErrorOverlay();
76
+ sendAbsoluteHmrTiming({
77
+ clientStart,
78
+ kind: 'component',
79
+ serverMs: serverDuration,
80
+ updateId: message.timestamp
81
+ });
82
+
83
+ return undefined;
84
+ });
85
+ };
@@ -28,6 +28,7 @@ import {
28
28
  dispatchAngularComponentUpdate
29
29
  } from './handlers/angularHmrShim';
30
30
  import { installAngularRemountGlobal } from './handlers/angularRemountWiring';
31
+ import { handleIslandUpdate } from './handlers/islands';
31
32
  import { handleReactUpdate } from './handlers/react';
32
33
  import { handleHTMLUpdate, handleScriptUpdate } from './handlers/html';
33
34
  import { handleHTMXUpdate } from './handlers/htmx';
@@ -204,6 +205,7 @@ const hmrUpdateTypes = new Set([
204
205
  'htmx-update',
205
206
  'vue-update',
206
207
  'svelte-update',
208
+ 'island-update',
207
209
  'style-update',
208
210
  'module-update',
209
211
  'rebuild-start'
@@ -223,6 +225,7 @@ type HMRMessage = {
223
225
  hasCSSChanges?: boolean;
224
226
  hasComponentChanges?: boolean;
225
227
  html?: string;
228
+ islands?: unknown;
226
229
  line?: number;
227
230
  lineText?: string;
228
231
  manifest?: Record<string, string>;
@@ -280,6 +283,9 @@ const handleHMRMessage = (message: HMRMessage) => {
280
283
  case 'react-update':
281
284
  handleReactUpdate(message);
282
285
  break;
286
+ case 'island-update':
287
+ handleIslandUpdate(message);
288
+ break;
283
289
  case 'script-update':
284
290
  hideErrorOverlay();
285
291
  handleScriptUpdate(message);