eclipsa 0.1.0 → 0.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/action-LXy_7T1f.mjs +4086 -0
- package/action-LXy_7T1f.mjs.map +1 -0
- package/client-DDoDNYqH.mjs +104 -0
- package/client-DDoDNYqH.mjs.map +1 -0
- package/component-CIul6R1i.d.mts +10 -0
- package/core/client/mod.d.mts +2 -0
- package/core/client/mod.mjs +4 -0
- package/core/dev-client/mod.d.mts +33 -0
- package/core/dev-client/mod.mjs +78 -0
- package/core/dev-client/mod.mjs.map +1 -0
- package/core/internal.d.mts +2 -0
- package/core/internal.mjs +2 -0
- package/core/prod-client/mod.d.mts +18 -0
- package/core/prod-client/mod.mjs +43 -0
- package/core/prod-client/mod.mjs.map +1 -0
- package/internal-CKAmxezZ.d.mts +534 -0
- package/jsx/jsx-dev-runtime.d.mts +17 -0
- package/jsx/jsx-dev-runtime.mjs +2 -0
- package/jsx/jsx-runtime.d.mts +2 -0
- package/jsx/jsx-runtime.mjs +1 -0
- package/jsx/mod.d.mts +7 -0
- package/jsx/mod.mjs +7 -0
- package/jsx/mod.mjs.map +1 -0
- package/jsx-dev-runtime-CY60yQJY.mjs +28 -0
- package/jsx-dev-runtime-CY60yQJY.mjs.map +1 -0
- package/jsx-runtime-BSRqCWNF.d.mts +1 -0
- package/mod-CGP_OpcY.d.mts +25 -0
- package/mod.d.mts +114 -0
- package/mod.mjs +251 -0
- package/mod.mjs.map +1 -0
- package/package.json +66 -3
- package/resume-hmr-BRDojQNp.mjs +6 -0
- package/resume-hmr-BRDojQNp.mjs.map +1 -0
- package/router-shared-Y6ck-Mcm.mjs +103 -0
- package/router-shared-Y6ck-Mcm.mjs.map +1 -0
- package/snapshot-BbvDaNMJ.mjs +139 -0
- package/snapshot-BbvDaNMJ.mjs.map +1 -0
- package/types-DFdkOqSj.d.mts +35 -0
- package/vite/mod.d.mts +13 -0
- package/vite/mod.mjs +11488 -0
- package/vite/mod.mjs.map +1 -0
- package/core/component.ts +0 -7
- package/core/dev-client/mod.ts +0 -17
- package/core/dev-client/renderer.ts +0 -5
- package/core/dev-client/types.ts +0 -3
- package/core/mod.ts +0 -4
- package/core/signal.ts +0 -20
- package/core/types.ts +0 -6
- package/deno.json +0 -23
- package/jsx/jsx-dev-runtime.ts +0 -19
- package/jsx/jsx-runtime.ts +0 -1
- package/jsx/mod.ts +0 -34
- package/jsx/shared.ts +0 -1
- package/jsx/types.ts +0 -23
- package/mod.ts +0 -2
- package/transformers/dev-client/mod.ts +0 -39
- package/transformers/dev-ssr/mod.ts +0 -52
- package/transformers/utils/jsx.ts +0 -77
- package/utils/node-connect.ts +0 -55
- package/vite/dev-app/mod.ts +0 -88
- package/vite/mod.ts +0 -76
- package/vite/utils/routing.ts +0 -26
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-LXy_7T1f.mjs","names":["isPlainObject","composeMiddlewares","createHandleSignal","ACTION_FORM_ATTR"],"sources":["../core/component.ts","../core/serialize.ts","../core/suspense.ts","../core/loader.ts","../core/internal.ts","../core/runtime.ts","../core/action.ts"],"sourcesContent":["import type { JSX } from '../jsx/types.ts'\n\nexport type Component<T = unknown> = (props: T) => JSX.Element\nexport type EURL<T> = T\n\nexport const component$ = <T = unknown>(component: Component<T>): Component<T> => {\n Object.defineProperty(component, '__eclipsa_component', {\n configurable: true,\n enumerable: false,\n value: true,\n })\n return component\n}\n\nexport const $ = <T>(value: T): EURL<T> => value\n","export interface SerializedUndefined {\n __eclipsa_type: 'undefined'\n}\n\nexport interface SerializedObject {\n __eclipsa_type: 'object'\n entries: [string, SerializedValue][]\n}\n\nexport interface SerializedMap {\n __eclipsa_type: 'map'\n entries: [SerializedValue, SerializedValue][]\n}\n\nexport interface SerializedSet {\n __eclipsa_type: 'set'\n entries: SerializedValue[]\n}\n\nexport interface SerializedReference {\n __eclipsa_type: 'ref'\n data?: SerializedValue\n kind: string\n token: string\n}\n\nexport type SerializedValue =\n | SerializedUndefined\n | SerializedObject\n | SerializedMap\n | SerializedSet\n | SerializedReference\n | null\n | boolean\n | number\n | string\n | SerializedValue[]\n\nexport interface SerializeValueOptions {\n maxDepth?: number\n maxEntries?: number\n serializeReference?: (value: unknown) => SerializedReference | null\n}\n\nexport interface DeserializeValueOptions {\n deserializeReference?: (value: SerializedReference) => unknown\n maxDepth?: number\n maxEntries?: number\n}\n\nconst DEFAULT_MAX_DEPTH = 64\nconst DEFAULT_MAX_ENTRIES = 10_000\n\nconst RESERVED_KEYS = new Set(['__proto__', 'constructor', 'prototype'])\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (!value || typeof value !== 'object') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nconst assertSafeEntryBudget = (count: number, maxEntries: number) => {\n if (count > maxEntries) {\n throw new RangeError(`Serialized value exceeds the maximum entry budget of ${maxEntries}.`)\n }\n}\n\nconst assertSafeDepth = (depth: number, maxDepth: number) => {\n if (depth > maxDepth) {\n throw new RangeError(`Serialized value exceeds the maximum depth of ${maxDepth}.`)\n }\n}\n\nconst assertSafeObject = (value: Record<string, unknown>) => {\n const descriptors = Object.getOwnPropertyDescriptors(value)\n const symbolKeys = Object.getOwnPropertySymbols(value)\n if (symbolKeys.length > 0) {\n throw new TypeError('Objects with symbol keys cannot be serialized.')\n }\n for (const [key, descriptor] of Object.entries(descriptors)) {\n if ('get' in descriptor || 'set' in descriptor) {\n throw new TypeError(`Objects with accessors cannot be serialized (${key}).`)\n }\n }\n}\n\nconst defineDecodedProperty = (target: Record<string, unknown>, key: string, value: unknown) => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: true,\n value,\n writable: true,\n })\n}\n\nconst assertReferenceShape = (value: SerializedReference) => {\n const keys = Object.keys(value).sort()\n const allowedKeys =\n value.data === undefined\n ? ['__eclipsa_type', 'kind', 'token']\n : ['__eclipsa_type', 'data', 'kind', 'token']\n if (keys.length !== allowedKeys.length || keys.some((key, index) => key !== allowedKeys[index])) {\n throw new TypeError('Malformed serialized reference.')\n }\n if (typeof value.kind !== 'string' || value.kind.length === 0) {\n throw new TypeError('Serialized references require a non-empty kind.')\n }\n if (typeof value.token !== 'string' || value.token.length === 0) {\n throw new TypeError('Serialized references require a non-empty token.')\n }\n}\n\nconst serializeUnknown = (\n value: unknown,\n state: {\n entryCount: number\n maxDepth: number\n maxEntries: number\n serializeReference?: (value: unknown) => SerializedReference | null\n },\n stack: Set<object>,\n depth: number,\n): SerializedValue => {\n assertSafeDepth(depth, state.maxDepth)\n\n const reference = state.serializeReference?.(value) ?? null\n if (reference) {\n state.entryCount += 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return reference\n }\n\n if (value === undefined) {\n state.entryCount += 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return {\n __eclipsa_type: 'undefined',\n }\n }\n if (value === null || typeof value === 'string' || typeof value === 'boolean') {\n state.entryCount += 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return value\n }\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n throw new TypeError('Non-finite numbers cannot be serialized.')\n }\n state.entryCount += 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return value\n }\n if (typeof value === 'function') {\n throw new TypeError('Functions cannot be serialized.')\n }\n if (typeof value === 'symbol') {\n throw new TypeError('Symbols cannot be serialized.')\n }\n if (typeof value !== 'object') {\n throw new TypeError(`Unsupported primitive ${typeof value}.`)\n }\n if (value instanceof Promise) {\n throw new TypeError('Promises cannot be serialized.')\n }\n if (value instanceof WeakMap || value instanceof WeakSet) {\n throw new TypeError('Weak collections cannot be serialized.')\n }\n if (\n value instanceof Date ||\n value instanceof RegExp ||\n value instanceof URL ||\n value instanceof Error ||\n value instanceof ArrayBuffer ||\n ArrayBuffer.isView(value)\n ) {\n throw new TypeError(`Unsupported object ${Object.prototype.toString.call(value)}.`)\n }\n if (stack.has(value)) {\n throw new TypeError('Circular values cannot be serialized.')\n }\n\n stack.add(value)\n try {\n if (Array.isArray(value)) {\n for (let index = 0; index < value.length; index += 1) {\n if (!(index in value)) {\n throw new TypeError('Sparse arrays cannot be serialized.')\n }\n }\n state.entryCount += value.length + 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return value.map((entry) => serializeUnknown(entry, state, stack, depth + 1))\n }\n if (value instanceof Map) {\n state.entryCount += value.size * 2 + 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n const entries: [SerializedValue, SerializedValue][] = []\n for (const [key, entry] of value.entries()) {\n entries.push([\n serializeUnknown(key, state, stack, depth + 1),\n serializeUnknown(entry, state, stack, depth + 1),\n ])\n }\n return {\n __eclipsa_type: 'map',\n entries,\n }\n }\n if (value instanceof Set) {\n state.entryCount += value.size + 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return {\n __eclipsa_type: 'set',\n entries: [...value].map((entry) => serializeUnknown(entry, state, stack, depth + 1)),\n }\n }\n if (isPlainObject(value)) {\n assertSafeObject(value)\n const descriptors = Object.entries(value)\n state.entryCount += descriptors.length + 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return {\n __eclipsa_type: 'object',\n entries: descriptors.map(([key, entry]) => [\n key,\n serializeUnknown(entry, state, stack, depth + 1),\n ]),\n }\n }\n\n throw new TypeError(`Unsupported object ${Object.prototype.toString.call(value)}.`)\n } finally {\n stack.delete(value)\n }\n}\n\nconst deserializeUnknown = (\n value: SerializedValue,\n state: {\n deserializeReference?: (value: SerializedReference) => unknown\n entryCount: number\n maxDepth: number\n maxEntries: number\n },\n depth: number,\n): unknown => {\n assertSafeDepth(depth, state.maxDepth)\n\n if (\n value === null ||\n typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number'\n ) {\n state.entryCount += 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return value\n }\n if (Array.isArray(value)) {\n state.entryCount += value.length + 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return value.map((entry) => deserializeUnknown(entry, state, depth + 1))\n }\n if (!value || typeof value !== 'object' || typeof value.__eclipsa_type !== 'string') {\n throw new TypeError('Malformed serialized value.')\n }\n\n switch (value.__eclipsa_type) {\n case 'undefined':\n state.entryCount += 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return undefined\n case 'object': {\n const keys = Object.keys(value).sort()\n if (keys.length !== 2 || keys[0] !== '__eclipsa_type' || keys[1] !== 'entries') {\n throw new TypeError('Malformed serialized object.')\n }\n if (!Array.isArray(value.entries)) {\n throw new TypeError('Serialized object entries must be an array.')\n }\n state.entryCount += value.entries.length + 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n const result: Record<string, unknown> = Object.create(null)\n for (const entry of value.entries) {\n if (!Array.isArray(entry) || entry.length !== 2 || typeof entry[0] !== 'string') {\n throw new TypeError('Malformed serialized object entry.')\n }\n const [key, child] = entry\n if (RESERVED_KEYS.has(key)) {\n defineDecodedProperty(result, key, deserializeUnknown(child, state, depth + 1))\n continue\n }\n defineDecodedProperty(result, key, deserializeUnknown(child, state, depth + 1))\n }\n return result\n }\n case 'map': {\n const keys = Object.keys(value).sort()\n if (keys.length !== 2 || keys[0] !== '__eclipsa_type' || keys[1] !== 'entries') {\n throw new TypeError('Malformed serialized map.')\n }\n if (!Array.isArray(value.entries)) {\n throw new TypeError('Serialized map entries must be an array.')\n }\n state.entryCount += value.entries.length * 2 + 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n const result = new Map<unknown, unknown>()\n for (const entry of value.entries) {\n if (!Array.isArray(entry) || entry.length !== 2) {\n throw new TypeError('Malformed serialized map entry.')\n }\n result.set(\n deserializeUnknown(entry[0], state, depth + 1),\n deserializeUnknown(entry[1], state, depth + 1),\n )\n }\n return result\n }\n case 'set': {\n const keys = Object.keys(value).sort()\n if (keys.length !== 2 || keys[0] !== '__eclipsa_type' || keys[1] !== 'entries') {\n throw new TypeError('Malformed serialized set.')\n }\n if (!Array.isArray(value.entries)) {\n throw new TypeError('Serialized set entries must be an array.')\n }\n state.entryCount += value.entries.length + 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n return new Set(value.entries.map((entry) => deserializeUnknown(entry, state, depth + 1)))\n }\n case 'ref':\n assertReferenceShape(value)\n state.entryCount += 1\n assertSafeEntryBudget(state.entryCount, state.maxEntries)\n if (!state.deserializeReference) {\n throw new TypeError(`Cannot deserialize reference kind \"${value.kind}\" in this context.`)\n }\n return state.deserializeReference(value)\n default:\n throw new TypeError(\n `Unknown serialized value type \"${(value as { __eclipsa_type: string }).__eclipsa_type}\".`,\n )\n }\n}\n\nexport const serializeValue = (value: unknown, options?: SerializeValueOptions): SerializedValue =>\n serializeUnknown(\n value,\n {\n entryCount: 0,\n maxDepth: options?.maxDepth ?? DEFAULT_MAX_DEPTH,\n maxEntries: options?.maxEntries ?? DEFAULT_MAX_ENTRIES,\n serializeReference: options?.serializeReference,\n },\n new Set<object>(),\n 0,\n )\n\nexport const deserializeValue = (\n value: SerializedValue,\n options?: DeserializeValueOptions,\n): unknown =>\n deserializeUnknown(\n value,\n {\n deserializeReference: options?.deserializeReference,\n entryCount: 0,\n maxDepth: options?.maxDepth ?? DEFAULT_MAX_DEPTH,\n maxEntries: options?.maxEntries ?? DEFAULT_MAX_ENTRIES,\n },\n 0,\n )\n\nexport const escapeJSONScriptText = (json: string) =>\n json\n .replaceAll('<', '\\\\u003C')\n .replaceAll('>', '\\\\u003E')\n .replaceAll('&', '\\\\u0026')\n .replaceAll('\\u2028', '\\\\u2028')\n .replaceAll('\\u2029', '\\\\u2029')\n\nexport const serializeJSONScriptContent = (value: unknown, options?: SerializeValueOptions) =>\n escapeJSONScriptText(JSON.stringify(serializeValue(value, options)))\n\nexport const parseSerializedJSON = (json: string): SerializedValue => {\n const parsed = JSON.parse(json) as unknown\n return parsed as SerializedValue\n}\n","import type { JSX } from '../jsx/types.ts'\n\nconst PENDING_SIGNAL_ERROR_KEY = Symbol.for('eclipsa.pending-signal-error')\n\nexport interface SuspenseProps {\n children?: JSX.Element | JSX.Element[] | (() => JSX.Element | JSX.Element[])\n fallback?: JSX.Element | JSX.Element[]\n}\n\nexport interface PendingSignalError {\n [PENDING_SIGNAL_ERROR_KEY]: true\n promise: Promise<unknown>\n}\n\nexport const Suspense = (props: SuspenseProps): JSX.Element =>\n (props.children ?? null) as JSX.Element\n\nexport const createPendingSignalError = (promise: Promise<unknown>): PendingSignalError => ({\n [PENDING_SIGNAL_ERROR_KEY]: true,\n promise,\n})\n\nexport const isPendingSignalError = (value: unknown): value is PendingSignalError =>\n !!value &&\n typeof value === 'object' &&\n (value as PendingSignalError)[PENDING_SIGNAL_ERROR_KEY] === true\n\nexport const isSuspenseType = (value: unknown): value is typeof Suspense => value === Suspense\n","import type { Context } from 'hono'\nimport type { Env, MiddlewareHandler, Next } from 'hono/types'\nimport { deserializeValue, serializeValue, type SerializedValue } from './serialize.ts'\nimport { registerLoaderHook, setLoaderHandleMeta, setLoaderHookMeta } from './internal.ts'\nimport {\n createDetachedRuntimeSignal,\n getRuntimeContainer,\n type RuntimeContainer,\n} from './runtime.ts'\n\nconst LOADER_REGISTRY_KEY = Symbol.for('eclipsa.loader-registry')\nconst LOADER_CONTENT_TYPE = 'application/eclipsa-loader+json'\nconst SSR_PENDING_LOADER_ERROR = Symbol.for('eclipsa.ssr-pending-loader-error')\nconst SSR_PENDING_LOADER_IDS_KEY = Symbol.for('eclipsa.ssr-pending-loader-ids')\n\ntype MiddlewareEnv<T> = T extends {\n readonly __eclipsa_loader_env__?: infer MiddlewareEnv\n}\n ? Exclude<MiddlewareEnv, undefined> extends Env\n ? Exclude<MiddlewareEnv, undefined>\n : {}\n : T extends MiddlewareHandler<infer MiddlewareEnv, any, any>\n ? MiddlewareEnv\n : {}\n\ntype LoaderEnv<Middlewares extends readonly LoaderMiddleware<any>[]> =\n Middlewares extends readonly [infer Head, ...infer Tail]\n ? Tail extends readonly LoaderMiddleware<any>[]\n ? MiddlewareEnv<Head> & LoaderEnv<Tail>\n : MiddlewareEnv<Head>\n : {}\n\nexport interface LoaderHandle<Output> {\n readonly data: Output | undefined\n readonly error: unknown\n readonly isLoading: boolean\n load: () => Promise<Output>\n}\n\nexport interface LoaderMiddleware<E extends Env = Env> extends MiddlewareHandler<E> {\n readonly __eclipsa_loader_env__?: E\n}\n\nexport type LoaderHandler<E extends Env = Env, Output = unknown> = (\n c: Context<E>,\n) => Output | Promise<Output>\n\ntype LoaderUse<\n Middlewares extends readonly LoaderMiddleware<any>[],\n Output,\n> = () => LoaderHandle<Output>\n\nexport interface LoaderFactory {\n <Output>(handler: LoaderHandler<{}, Output>): LoaderUse<[], Output>\n <M1 extends LoaderMiddleware<any>, Output>(\n middleware1: M1,\n handler: LoaderHandler<LoaderEnv<[M1]>, Output>,\n ): LoaderUse<[M1], Output>\n <M1 extends LoaderMiddleware<any>, M2 extends LoaderMiddleware<any>, Output>(\n middleware1: M1,\n middleware2: M2,\n handler: LoaderHandler<LoaderEnv<[M1, M2]>, Output>,\n ): LoaderUse<[M1, M2], Output>\n <\n M1 extends LoaderMiddleware<any>,\n M2 extends LoaderMiddleware<any>,\n M3 extends LoaderMiddleware<any>,\n Output,\n >(\n middleware1: M1,\n middleware2: M2,\n middleware3: M3,\n handler: LoaderHandler<LoaderEnv<[M1, M2, M3]>, Output>,\n ): LoaderUse<[M1, M2, M3], Output>\n <\n M1 extends LoaderMiddleware<any>,\n M2 extends LoaderMiddleware<any>,\n M3 extends LoaderMiddleware<any>,\n M4 extends LoaderMiddleware<any>,\n Output,\n >(\n middleware1: M1,\n middleware2: M2,\n middleware3: M3,\n middleware4: M4,\n handler: LoaderHandler<LoaderEnv<[M1, M2, M3, M4]>, Output>,\n ): LoaderUse<[M1, M2, M3, M4], Output>\n <\n M1 extends LoaderMiddleware<any>,\n M2 extends LoaderMiddleware<any>,\n M3 extends LoaderMiddleware<any>,\n M4 extends LoaderMiddleware<any>,\n M5 extends LoaderMiddleware<any>,\n Output,\n >(\n middleware1: M1,\n middleware2: M2,\n middleware3: M3,\n middleware4: M4,\n middleware5: M5,\n handler: LoaderHandler<LoaderEnv<[M1, M2, M3, M4, M5]>, Output>,\n ): LoaderUse<[M1, M2, M3, M4, M5], Output>\n}\n\ninterface RegisteredLoader {\n handler: LoaderHandler<any, unknown>\n id: string\n middlewares: LoaderMiddleware<any>[]\n}\n\ninterface LoaderJsonSuccess {\n ok: true\n value: SerializedValue\n}\n\ninterface LoaderJsonFailure {\n error: SerializedValue\n ok: false\n}\n\nconst ensurePendingSsrLoaderIds = (container: RuntimeContainer) => {\n const record = container as RuntimeContainer & {\n [SSR_PENDING_LOADER_IDS_KEY]?: Set<string>\n }\n const existing = record[SSR_PENDING_LOADER_IDS_KEY]\n if (existing instanceof Set) {\n return existing\n }\n const created = new Set<string>()\n record[SSR_PENDING_LOADER_IDS_KEY] = created\n return created\n}\n\nexport const markPendingSsrLoader = (container: RuntimeContainer, id: string) => {\n ensurePendingSsrLoaderIds(container).add(id)\n}\n\nexport const consumePendingSsrLoaderIds = (container: RuntimeContainer) => {\n const ids = [...ensurePendingSsrLoaderIds(container)]\n ensurePendingSsrLoaderIds(container).clear()\n return ids\n}\n\nexport const isPendingSsrLoaderError = (error: unknown) => error === SSR_PENDING_LOADER_ERROR\n\nconst getLoaderRegistry = () => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const existing = globalRecord[LOADER_REGISTRY_KEY]\n if (existing instanceof Map) {\n return existing as Map<string, RegisteredLoader>\n }\n const created = new Map<string, RegisteredLoader>()\n globalRecord[LOADER_REGISTRY_KEY] = created\n return created\n}\n\nconst composeMiddlewares = async (\n c: Context<any>,\n middlewares: LoaderMiddleware<any>[],\n handler: LoaderHandler<any, unknown>,\n): Promise<Response | unknown> => {\n let index = -1\n const dispatch = async (nextIndex: number): Promise<Response | unknown> => {\n if (nextIndex <= index) {\n throw new Error('Loader middleware called next() multiple times.')\n }\n index = nextIndex\n const middleware = middlewares[nextIndex]\n if (!middleware) {\n return handler(c)\n }\n let nextResult: Response | unknown = undefined\n const result = await middleware(c, (async () => {\n nextResult = await dispatch(nextIndex + 1)\n }) as Next)\n if (result !== undefined) {\n return result\n }\n return nextResult\n }\n return dispatch(0)\n}\n\nconst toSerializedLoaderError = (error: unknown): SerializedValue => {\n if (error instanceof Error) {\n return serializeValue({\n message: error.message,\n name: error.name,\n })\n }\n try {\n return serializeValue(error)\n } catch {\n return serializeValue({\n message: 'Loader failed.',\n })\n }\n}\n\nconst normalizeLoaderValue = (value: unknown) => {\n if (value instanceof Response) {\n throw new TypeError('loader$() handlers and middlewares must resolve to data, not Response.')\n }\n if (typeof ReadableStream !== 'undefined' && value instanceof ReadableStream) {\n throw new TypeError('loader$() does not support ReadableStream results.')\n }\n if (value && typeof value === 'object' && Symbol.asyncIterator in value) {\n throw new TypeError('loader$() does not support async iterable results.')\n }\n return value\n}\n\nconst updateLoaderSnapshot = (\n container: RuntimeContainer | null,\n id: string,\n snapshot: {\n data: unknown\n error: unknown\n loaded: boolean\n },\n) => {\n container?.loaderStates.set(id, snapshot)\n}\n\nconst createHandleSignal = <T>(\n container: RuntimeContainer | null,\n id: string,\n key: string,\n initialValue: T,\n) => {\n if (!container) {\n throw new Error('Loader handles require an active runtime container.')\n }\n return {\n detached: false,\n signal: createDetachedRuntimeSignal(container, `$loader:${id}:${key}`, initialValue),\n }\n}\n\nconst parseJsonLoaderResponse = async (response: Response) => {\n const body = (await response.json()) as LoaderJsonFailure | LoaderJsonSuccess\n if (!body || typeof body !== 'object' || typeof body.ok !== 'boolean') {\n throw new TypeError('Malformed loader response.')\n }\n if (!body.ok) {\n throw deserializeValue(body.error)\n }\n return deserializeValue(body.value)\n}\n\nconst invokeLoader = async (id: string) => {\n const response = await fetch(`/__eclipsa/loader/${encodeURIComponent(id)}`, {\n headers: {\n accept: LOADER_CONTENT_TYPE,\n },\n method: 'GET',\n })\n return parseJsonLoaderResponse(response)\n}\n\nconst resolveLoader = async (id: string, c: Context<any>) => {\n const loader = getLoaderRegistry().get(id)\n if (!loader) {\n throw new Error(`Unknown loader ${id}.`)\n }\n return normalizeLoaderValue(await composeMiddlewares(c, loader.middlewares, loader.handler))\n}\n\nexport const loader$: LoaderFactory = (() => {\n throw new Error('loader$() must be compiled by the Eclipsa analyzer before it can run.')\n}) as LoaderFactory\n\nexport function registerLoader<Output>(\n id: string,\n middlewares: readonly [],\n handler: LoaderHandler<{}, Output>,\n): void\nexport function registerLoader<M1 extends LoaderMiddleware<any>, Output>(\n id: string,\n middlewares: readonly [M1],\n handler: LoaderHandler<LoaderEnv<[M1]>, Output>,\n): void\nexport function registerLoader<\n M1 extends LoaderMiddleware<any>,\n M2 extends LoaderMiddleware<any>,\n Output,\n>(\n id: string,\n middlewares: readonly [M1, M2],\n handler: LoaderHandler<LoaderEnv<[M1, M2]>, Output>,\n): void\nexport function registerLoader<\n M1 extends LoaderMiddleware<any>,\n M2 extends LoaderMiddleware<any>,\n M3 extends LoaderMiddleware<any>,\n Output,\n>(\n id: string,\n middlewares: readonly [M1, M2, M3],\n handler: LoaderHandler<LoaderEnv<[M1, M2, M3]>, Output>,\n): void\nexport function registerLoader<\n M1 extends LoaderMiddleware<any>,\n M2 extends LoaderMiddleware<any>,\n M3 extends LoaderMiddleware<any>,\n M4 extends LoaderMiddleware<any>,\n Output,\n>(\n id: string,\n middlewares: readonly [M1, M2, M3, M4],\n handler: LoaderHandler<LoaderEnv<[M1, M2, M3, M4]>, Output>,\n): void\nexport function registerLoader<\n M1 extends LoaderMiddleware<any>,\n M2 extends LoaderMiddleware<any>,\n M3 extends LoaderMiddleware<any>,\n M4 extends LoaderMiddleware<any>,\n M5 extends LoaderMiddleware<any>,\n Output,\n>(\n id: string,\n middlewares: readonly [M1, M2, M3, M4, M5],\n handler: LoaderHandler<LoaderEnv<[M1, M2, M3, M4, M5]>, Output>,\n): void\nexport function registerLoader(\n id: string,\n middlewares: readonly LoaderMiddleware<any>[],\n handler: LoaderHandler<any, unknown>,\n) {\n getLoaderRegistry().set(id, {\n handler,\n id,\n middlewares: [...middlewares] as LoaderMiddleware<any>[],\n })\n}\n\nexport const hasLoader = (id: string) => getLoaderRegistry().has(id)\n\nexport const executeLoader = async (id: string, c: Context<any>) => {\n try {\n return new Response(\n JSON.stringify({\n ok: true,\n value: serializeValue(await resolveLoader(id, c)),\n } satisfies LoaderJsonSuccess),\n {\n headers: {\n 'content-type': LOADER_CONTENT_TYPE,\n },\n },\n )\n } catch (error) {\n return new Response(\n JSON.stringify({\n error: toSerializedLoaderError(error),\n ok: false,\n } satisfies LoaderJsonFailure),\n {\n headers: {\n 'content-type': LOADER_CONTENT_TYPE,\n },\n status: error instanceof Error && error.message.startsWith('Unknown loader ') ? 404 : 500,\n },\n )\n }\n}\n\nexport const primeLoaderState = async (\n container: RuntimeContainer,\n id: string,\n c: Context<any>,\n) => {\n const value = await resolveLoader(id, c)\n updateLoaderSnapshot(container, id, {\n data: value,\n error: undefined,\n loaded: true,\n })\n return value\n}\n\nexport const resolvePendingLoaders = async (container: RuntimeContainer, c: Context<any>) => {\n const pendingIds = consumePendingSsrLoaderIds(container)\n if (pendingIds.length === 0) {\n return false\n }\n await Promise.all(pendingIds.map((id) => primeLoaderState(container, id, c)))\n return true\n}\n\nexport const __eclipsaLoader = <const Middlewares extends readonly LoaderMiddleware<any>[], Output>(\n id: string,\n middlewares: readonly [...Middlewares],\n handler: LoaderHandler<LoaderEnv<Middlewares>, Output>,\n) => {\n if (typeof window === 'undefined') {\n getLoaderRegistry().set(id, {\n handler: handler as LoaderHandler<any, unknown>,\n id,\n middlewares: [...middlewares] as LoaderMiddleware<any>[],\n })\n }\n\n const useLoaderHandle = registerLoaderHook(\n id,\n setLoaderHookMeta(() => {\n const container = getRuntimeContainer()\n const existing = container?.loaders.get(id)\n if (existing) {\n return existing as LoaderHandle<Output>\n }\n\n const initialState = container?.loaderStates.get(id)\n if (typeof window === 'undefined' && !initialState?.loaded) {\n if (!container) {\n throw new Error(`loader$(\"${id}\") was used during SSR before it was preloaded.`)\n }\n markPendingSsrLoader(container, id)\n throw SSR_PENDING_LOADER_ERROR\n }\n\n const loadingState = createHandleSignal(container, id, 'loading', false)\n const dataState = createHandleSignal<Output | undefined>(\n container,\n id,\n 'data',\n initialState?.loaded ? (initialState.data as Output) : undefined,\n )\n const errorState = createHandleSignal(container, id, 'error', initialState?.error)\n const isDetached = loadingState.detached || dataState.detached || errorState.detached\n const isLoading = loadingState.signal\n const data = dataState.signal\n const error = errorState.signal\n let loaded = initialState?.loaded ?? false\n let inFlight: Promise<Output> | null = null\n let autoRequested = false\n\n const syncSnapshot = () => {\n updateLoaderSnapshot(container ?? null, id, {\n data: data.value,\n error: error.value,\n loaded,\n })\n }\n\n const load = async () => {\n if (inFlight) {\n return inFlight\n }\n isLoading.value = true\n error.value = undefined\n syncSnapshot()\n inFlight = (async () => {\n try {\n const value = (await invokeLoader(id)) as Output\n data.value = value\n loaded = true\n return value\n } catch (caught) {\n error.value = caught\n throw caught\n } finally {\n isLoading.value = false\n syncSnapshot()\n inFlight = null\n }\n })()\n return inFlight\n }\n\n const loaderHandle = setLoaderHandleMeta(\n {\n get data() {\n return data.value\n },\n get error() {\n return error.value\n },\n get isLoading() {\n return isLoading.value\n },\n load,\n } satisfies LoaderHandle<Output>,\n id,\n )\n container?.loaders.set(id, loaderHandle)\n syncSnapshot()\n\n if (typeof window !== 'undefined' && !isDetached && !loaded && !autoRequested) {\n autoRequested = true\n queueMicrotask(() => {\n void load().catch(() => {})\n })\n }\n\n return loaderHandle\n }, id),\n ) as () => LoaderHandle<Output>\n\n return useLoaderHandle\n}\n","import type { Component, EURL } from './component.ts'\nimport type { Navigate } from './router-shared.ts'\n\nexport { __eclipsaAction } from './action.ts'\nexport { __eclipsaLoader } from './loader.ts'\n\nconst COMPONENT_META_KEY = Symbol.for('eclipsa.component-meta')\nconst LAZY_META_KEY = Symbol.for('eclipsa.lazy-meta')\nconst NAVIGATE_META_KEY = Symbol.for('eclipsa.navigate-meta')\nconst SIGNAL_META_KEY = Symbol.for('eclipsa.signal-meta')\nconst ACTION_HOOK_META_KEY = Symbol.for('eclipsa.action-hook-meta')\nconst ACTION_HANDLE_META_KEY = Symbol.for('eclipsa.action-handle-meta')\nconst LOADER_HOOK_META_KEY = Symbol.for('eclipsa.loader-hook-meta')\nconst LOADER_HANDLE_META_KEY = Symbol.for('eclipsa.loader-handle-meta')\nconst WATCH_META_KEY = Symbol.for('eclipsa.watch-meta')\nconst ACTION_HOOK_REGISTRY_KEY = Symbol.for('eclipsa.action-hook-registry')\nconst LOADER_HOOK_REGISTRY_KEY = Symbol.for('eclipsa.loader-hook-registry')\n\nexport interface ComponentMeta {\n captures: () => unknown[]\n projectionSlots?: Record<string, number>\n symbol: string\n}\n\nexport interface LazyMeta {\n captures: () => unknown[]\n eventName?: string\n symbol: string\n}\n\nexport interface WatchMeta {\n captures: () => unknown[]\n symbol: string\n}\n\nexport interface SignalMeta<T = unknown> {\n get(): T\n id: string\n set(value: T): void\n}\n\nexport interface NavigateMeta {\n readonly kind: 'navigate'\n}\n\nexport interface ActionHandleMeta {\n readonly id: string\n readonly kind: 'action'\n}\n\nexport interface ActionHookMeta {\n readonly id: string\n readonly kind: 'action-hook'\n}\n\nexport interface LoaderHandleMeta {\n readonly id: string\n readonly kind: 'loader'\n}\n\nexport interface LoaderHookMeta {\n readonly id: string\n readonly kind: 'loader-hook'\n}\n\nexport interface EventDescriptor {\n captures: () => unknown[]\n eventName?: string\n symbol: string\n}\n\nexport interface LazyReference<\n T extends (...args: any[]) => unknown = (...args: any[]) => unknown,\n> extends Function {\n (...args: Parameters<T>): ReturnType<T>\n [LAZY_META_KEY]?: LazyMeta\n}\n\nexport interface WatchReference<\n T extends (...args: any[]) => unknown = (...args: any[]) => unknown,\n> extends Function {\n (...args: Parameters<T>): ReturnType<T>\n [WATCH_META_KEY]?: WatchMeta\n}\n\nexport const __eclipsaComponent = <T>(\n component: Component<T>,\n symbol: string,\n captures: () => unknown[],\n projectionSlots?: Record<string, number>,\n): Component<T> => {\n Object.defineProperty(component, COMPONENT_META_KEY, {\n configurable: true,\n enumerable: false,\n value: {\n symbol,\n captures,\n ...(projectionSlots ? { projectionSlots } : {}),\n } satisfies ComponentMeta,\n writable: true,\n })\n return component\n}\n\nexport const __eclipsaLazy = <T extends (...args: any[]) => unknown>(\n symbol: string,\n fn: T,\n captures: () => unknown[],\n): EURL<T> => {\n const wrapped = ((...args: Parameters<T>) => fn(...args)) as LazyReference<T>\n Object.defineProperty(wrapped, LAZY_META_KEY, {\n configurable: true,\n enumerable: false,\n value: {\n symbol,\n captures,\n } satisfies LazyMeta,\n writable: true,\n })\n return wrapped as EURL<T>\n}\n\nexport const __eclipsaWatch = <T extends (...args: any[]) => unknown>(\n symbol: string,\n fn: T,\n captures: () => unknown[],\n): T => {\n const wrapped = ((...args: Parameters<T>) => fn(...args)) as WatchReference<T>\n Object.defineProperty(wrapped, WATCH_META_KEY, {\n configurable: true,\n enumerable: false,\n value: {\n symbol,\n captures,\n } satisfies WatchMeta,\n writable: true,\n })\n return wrapped as T\n}\n\nexport const __eclipsaEvent = (\n eventName: string,\n symbol: string,\n captures: () => unknown[],\n): EventDescriptor => ({\n eventName,\n symbol,\n captures,\n})\n\nexport const getComponentMeta = (value: unknown): ComponentMeta | null => {\n if (typeof value !== 'function') {\n return null\n }\n return (\n ((value as unknown as Record<PropertyKey, unknown>)[COMPONENT_META_KEY] as\n | ComponentMeta\n | undefined) ?? null\n )\n}\n\nexport const getLazyMeta = (value: unknown): LazyMeta | null => {\n if (typeof value !== 'function') {\n return null\n }\n return (\n ((value as unknown as Record<PropertyKey, unknown>)[LAZY_META_KEY] as LazyMeta | undefined) ??\n null\n )\n}\n\nexport const setNavigateMeta = <T extends Navigate>(target: T): T => {\n Object.defineProperty(target, NAVIGATE_META_KEY, {\n configurable: true,\n enumerable: false,\n value: {\n kind: 'navigate',\n } satisfies NavigateMeta,\n writable: true,\n })\n return target\n}\n\nexport const getNavigateMeta = (value: unknown): NavigateMeta | null => {\n if (typeof value !== 'function') {\n return null\n }\n return (\n ((value as unknown as Record<PropertyKey, unknown>)[NAVIGATE_META_KEY] as\n | NavigateMeta\n | undefined) ?? null\n )\n}\n\nexport const setActionHookMeta = <T extends Function>(target: T, id: string): T => {\n Object.defineProperty(target, ACTION_HOOK_META_KEY, {\n configurable: true,\n enumerable: false,\n value: {\n id,\n kind: 'action-hook',\n } satisfies ActionHookMeta,\n writable: true,\n })\n return target\n}\n\nexport const getActionHookMeta = (value: unknown): ActionHookMeta | null => {\n if (typeof value !== 'function') {\n return null\n }\n return (\n ((value as unknown as Record<PropertyKey, unknown>)[ACTION_HOOK_META_KEY] as\n | ActionHookMeta\n | undefined) ?? null\n )\n}\n\nexport const setActionHandleMeta = <T extends object>(target: T, id: string): T => {\n Object.defineProperty(target, ACTION_HANDLE_META_KEY, {\n configurable: true,\n enumerable: false,\n value: {\n id,\n kind: 'action',\n } satisfies ActionHandleMeta,\n writable: true,\n })\n return target\n}\n\nexport const getActionHandleMeta = (value: unknown): ActionHandleMeta | null => {\n if (!value || typeof value !== 'object') {\n return null\n }\n return (\n ((value as Record<PropertyKey, unknown>)[ACTION_HANDLE_META_KEY] as\n | ActionHandleMeta\n | undefined) ?? null\n )\n}\n\nexport const setLoaderHookMeta = <T extends Function>(target: T, id: string): T => {\n Object.defineProperty(target, LOADER_HOOK_META_KEY, {\n configurable: true,\n enumerable: false,\n value: {\n id,\n kind: 'loader-hook',\n } satisfies LoaderHookMeta,\n writable: true,\n })\n return target\n}\n\nexport const getLoaderHookMeta = (value: unknown): LoaderHookMeta | null => {\n if (typeof value !== 'function') {\n return null\n }\n return (\n ((value as unknown as Record<PropertyKey, unknown>)[LOADER_HOOK_META_KEY] as\n | LoaderHookMeta\n | undefined) ?? null\n )\n}\n\nexport const setLoaderHandleMeta = <T extends object>(target: T, id: string): T => {\n Object.defineProperty(target, LOADER_HANDLE_META_KEY, {\n configurable: true,\n enumerable: false,\n value: {\n id,\n kind: 'loader',\n } satisfies LoaderHandleMeta,\n writable: true,\n })\n return target\n}\n\nexport const getLoaderHandleMeta = (value: unknown): LoaderHandleMeta | null => {\n if (!value || typeof value !== 'object') {\n return null\n }\n return (\n ((value as Record<PropertyKey, unknown>)[LOADER_HANDLE_META_KEY] as\n | LoaderHandleMeta\n | undefined) ?? null\n )\n}\n\nconst getActionHookRegistry = () => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const existing = globalRecord[ACTION_HOOK_REGISTRY_KEY]\n if (existing instanceof Map) {\n return existing as Map<string, Function>\n }\n const created = new Map<string, Function>()\n globalRecord[ACTION_HOOK_REGISTRY_KEY] = created\n return created\n}\n\nexport const registerActionHook = <T extends Function>(id: string, hook: T): T => {\n getActionHookRegistry().set(id, hook)\n return hook\n}\n\nexport const getRegisteredActionHook = <T extends Function>(id: string): T | null =>\n (getActionHookRegistry().get(id) as T | undefined) ?? null\n\nexport const getRegisteredActionHookIds = () => [...getActionHookRegistry().keys()]\n\nconst getLoaderHookRegistry = () => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const existing = globalRecord[LOADER_HOOK_REGISTRY_KEY]\n if (existing instanceof Map) {\n return existing as Map<string, Function>\n }\n const created = new Map<string, Function>()\n globalRecord[LOADER_HOOK_REGISTRY_KEY] = created\n return created\n}\n\nexport const registerLoaderHook = <T extends Function>(id: string, hook: T): T => {\n getLoaderHookRegistry().set(id, hook)\n return hook\n}\n\nexport const getRegisteredLoaderHook = <T extends Function>(id: string): T | null =>\n (getLoaderHookRegistry().get(id) as T | undefined) ?? null\n\nexport const getRegisteredLoaderHookIds = () => [...getLoaderHookRegistry().keys()]\n\nexport const getWatchMeta = (value: unknown): WatchMeta | null => {\n if (typeof value !== 'function') {\n return null\n }\n return (\n ((value as unknown as Record<PropertyKey, unknown>)[WATCH_META_KEY] as WatchMeta | undefined) ??\n null\n )\n}\n\nexport const getEventMeta = (value: unknown): EventDescriptor | LazyMeta | null => {\n if (value && typeof value === 'object') {\n const descriptor = value as EventDescriptor\n if (typeof descriptor.symbol === 'string' && typeof descriptor.captures === 'function') {\n return descriptor\n }\n }\n return getLazyMeta(value)\n}\n\nexport const setSignalMeta = <T>(target: { value: T }, meta: SignalMeta<T>): { value: T } => {\n Object.defineProperty(target, SIGNAL_META_KEY, {\n configurable: true,\n enumerable: false,\n value: meta,\n writable: true,\n })\n return target\n}\n\nexport const getSignalMeta = <T>(value: unknown): SignalMeta<T> | null => {\n if (!value || typeof value !== 'object') {\n return null\n }\n return (\n ((value as Record<PropertyKey, unknown>)[SIGNAL_META_KEY] as SignalMeta<T> | undefined) ?? null\n )\n}\n","import type { JSX } from '../jsx/types.ts'\nimport { FRAGMENT } from '../jsx/shared.ts'\nimport { isSSRAttrValue, isSSRTemplate, jsxDEV } from '../jsx/jsx-dev-runtime.ts'\nimport { isPendingSignalError, isSuspenseType, type SuspenseProps } from './suspense.ts'\nimport type { ResumeHmrUpdatePayload } from './resume-hmr.ts'\nimport {\n deserializeValue,\n escapeJSONScriptText,\n serializeValue,\n type SerializedReference,\n type SerializedValue,\n} from './serialize.ts'\nimport type { Component } from './component.ts'\nimport {\n ROUTE_METADATA_HEAD_ATTR,\n composeRouteMetadata,\n type RouteMetadata,\n type RouteMetadataExport,\n} from './metadata.ts'\nimport {\n __eclipsaComponent,\n getActionHandleMeta,\n getActionHookMeta,\n getComponentMeta,\n getEventMeta,\n getRegisteredActionHookIds,\n getRegisteredActionHook,\n getRegisteredLoaderHookIds,\n getRegisteredLoaderHook,\n getLazyMeta,\n getLoaderHandleMeta,\n getLoaderHookMeta,\n getNavigateMeta,\n getSignalMeta,\n getWatchMeta,\n setNavigateMeta,\n setSignalMeta,\n type ComponentMeta,\n type EventDescriptor,\n type LazyMeta,\n type SignalMeta,\n} from './internal.ts'\nimport {\n ROUTE_LINK_ATTR,\n ROUTE_PREFETCH_ATTR,\n ROUTE_PREFLIGHT_REQUEST_HEADER,\n ROUTE_REPLACE_ATTR,\n type LinkPrefetchMode,\n type Navigate,\n type NavigateOptions,\n type RouteManifest,\n type RouteModuleManifest,\n type RouteParams,\n} from './router-shared.ts'\n\nconst CONTAINER_STACK_KEY = Symbol.for('eclipsa.container-stack')\nconst FRAME_STACK_KEY = Symbol.for('eclipsa.frame-stack')\nconst DIRTY_FLUSH_PROMISE_KEY = Symbol.for('eclipsa.dirty-flush-promise')\nconst ASYNC_SIGNAL_SNAPSHOT_CACHE_KEY = Symbol.for('eclipsa.async-signal-snapshot-cache')\nconst STANDALONE_SIGNAL_ID_KEY = Symbol.for('eclipsa.standalone-signal-id')\nconst ACTION_FORM_ATTR = 'data-e-action-form'\nconst ROUTER_EVENT_STATE_KEY = Symbol.for('eclipsa.router-event-state')\nconst ROUTER_CURRENT_PATH_SIGNAL_ID = '$router:path'\nconst ROUTER_IS_NAVIGATING_SIGNAL_ID = '$router:isNavigating'\nconst ROUTER_LINK_BOUND_KEY = Symbol.for('eclipsa.router-link-bound')\nconst ROUTER_LINK_PREFETCH_BOUND_KEY = Symbol.for('eclipsa.router-link-prefetch-bound')\nconst ROUTE_NOT_FOUND_KEY = Symbol.for('eclipsa.route-not-found')\nconst ROUTE_PARAMS_PROP = '__eclipsa_route_params'\nconst ROUTE_SLOT_ROUTE_KEY = Symbol.for('eclipsa.route-slot-route')\nconst RESUME_CONTAINERS_KEY = Symbol.for('eclipsa.resume-containers')\nexport const RESUME_STATE_ELEMENT_ID = 'eclipsa-resume'\nexport const RESUME_FINAL_STATE_ELEMENT_ID = 'eclipsa-resume-final'\nconst ROOT_COMPONENT_ID = '$root'\nconst SUSPENSE_COMPONENT_SYMBOL = '$suspense'\nconst ROUTE_SLOT_TYPE = 'route-slot'\nconst PROJECTION_SLOT_TYPE = 'projection-slot'\nconst CONTAINER_ID_KEY = Symbol.for('eclipsa.runtime-container-id')\nconst RENDER_COMPONENT_TYPE_KEY = Symbol.for('eclipsa.render-component-type')\nconst RENDER_REFERENCE_KIND = 'render'\nconst REF_SIGNAL_ATTR = 'data-e-ref'\nconst STREAM_STATE_KEY = '__eclipsa_stream'\ntype DomConstructorName =\n | 'Element'\n | 'HTMLElement'\n | 'HTMLInputElement'\n | 'HTMLTextAreaElement'\n | 'HTMLAnchorElement'\n | 'HTMLFormElement'\n\nexport interface ResumeComponentPayload {\n props: SerializedValue\n projectionSlots?: Record<string, number>\n scope: string\n signalIds: string[]\n symbol: string\n visibleCount: number\n watchCount: number\n}\n\ninterface ResumeWatchPayload {\n componentId: string\n mode: WatchMode\n scope: string\n signals: string[]\n symbol: string\n}\n\ninterface ResumeActionPayload {\n error: SerializedValue\n input: SerializedValue\n result: SerializedValue\n}\n\ninterface ResumeVisiblePayload {\n componentId: string\n scope: string\n symbol: string\n}\n\ninterface ResumeLoaderPayload {\n data: SerializedValue\n error: SerializedValue\n loaded: boolean\n}\n\ninterface LoaderSnapshot {\n data: unknown\n error: unknown\n loaded: boolean\n}\n\nexport interface ResumePayload {\n actions: Record<string, ResumeActionPayload>\n components: Record<string, ResumeComponentPayload>\n loaders: Record<string, ResumeLoaderPayload>\n scopes: Record<string, SerializedValue[]>\n signals: Record<string, SerializedValue>\n subscriptions: Record<string, string[]>\n symbols: Record<string, string>\n visibles: Record<string, ResumeVisiblePayload>\n watches: Record<string, ResumeWatchPayload>\n}\n\ninterface StreamedSuspenseChunk {\n boundaryId: string\n payloadScriptId: string\n templateId: string\n}\n\ninterface StreamState {\n enqueue: (chunk: StreamedSuspenseChunk) => void\n pending: StreamedSuspenseChunk[]\n process?: () => Promise<void>\n processing?: Promise<void> | null\n}\n\ninterface SignalRecord<T = unknown> {\n effects: Set<ReactiveEffect>\n handle: {\n value: T\n }\n id: string\n subscribers: Set<string>\n value: T\n}\n\ntype CleanupCallback = () => void\n\nconst getDomContexts = (value: unknown): Array<Window | typeof globalThis> => {\n const contexts: Array<Window | typeof globalThis> = []\n if (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n return contexts\n }\n if ('ownerDocument' in value) {\n const ownerDocument = (value as { ownerDocument?: Document | null }).ownerDocument\n if (ownerDocument?.defaultView) {\n contexts.push(ownerDocument.defaultView)\n }\n }\n if ('defaultView' in value) {\n const defaultView = (value as { defaultView?: Window | null }).defaultView\n if (defaultView) {\n contexts.push(defaultView)\n }\n }\n contexts.push(globalThis)\n return contexts\n}\n\nconst isDomInstance = <T>(value: unknown, name: DomConstructorName): value is T => {\n for (const context of getDomContexts(value)) {\n const ctor = (context as Record<DomConstructorName, unknown>)[name]\n if (typeof ctor === 'function' && value instanceof ctor) {\n return true\n }\n }\n return false\n}\n\nconst hasOwnerDocument = (value: unknown): value is ParentNode & { ownerDocument: Document } =>\n !!value &&\n (typeof value === 'object' || typeof value === 'function') &&\n 'ownerDocument' in value &&\n !!(value as { ownerDocument?: Document | null }).ownerDocument\n\nconst isElementNode = (value: unknown): value is Element =>\n isDomInstance<Element>(value, 'Element') || isDomInstance<HTMLElement>(value, 'HTMLElement')\n\nconst isHTMLElementNode = (value: unknown): value is HTMLElement =>\n isDomInstance<HTMLElement>(value, 'HTMLElement')\n\nconst isHTMLInputElementNode = (value: unknown): value is HTMLInputElement =>\n isDomInstance<HTMLInputElement>(value, 'HTMLInputElement')\n\nconst isHTMLTextAreaElementNode = (value: unknown): value is HTMLTextAreaElement =>\n isDomInstance<HTMLTextAreaElement>(value, 'HTMLTextAreaElement')\n\nconst isTextEntryElement = (value: unknown): value is HTMLInputElement | HTMLTextAreaElement =>\n isHTMLInputElementNode(value) || isHTMLTextAreaElementNode(value)\n\nconst isHTMLAnchorElementNode = (value: unknown): value is HTMLAnchorElement =>\n isDomInstance<HTMLAnchorElement>(value, 'HTMLAnchorElement')\n\nconst isHTMLFormElementNode = (value: unknown): value is HTMLFormElement =>\n isDomInstance<HTMLFormElement>(value, 'HTMLFormElement')\n\ninterface CleanupSlot {\n callbacks: CleanupCallback[]\n}\n\ninterface ComponentState {\n active: boolean\n didMount: boolean\n end?: Comment\n id: string\n mountCleanupSlots: CleanupSlot[]\n parentId: string | null\n props: unknown\n projectionSlots: Record<string, number> | null\n reuseExistingDomOnActivate?: boolean\n scopeId: string\n signalIds: string[]\n start?: Comment\n symbol: string\n suspensePromise?: Promise<unknown> | null\n visibleCount: number\n watchCount: number\n}\n\ninterface RenderFrame {\n childCursor: number\n component: ComponentState\n container: RuntimeContainer\n mountCallbacks: Array<() => void>\n projectionState: {\n counters: Map<string, number>\n reuseExistingDom: boolean\n }\n visitedDescendants: Set<string>\n mode: 'client' | 'ssr'\n signalCursor: number\n visibleCursor: number\n watchCursor: number\n}\n\ninterface RouterEventState {\n originalPreventDefault: () => void\n routerPrevented: boolean\n userPrevented: boolean\n}\n\ninterface RouterState {\n currentPath: { value: string }\n currentRoute: LoadedRoute | null\n defaultTitle: string\n isNavigating: { value: boolean }\n loadedRoutes: Map<string, LoadedRoute>\n manifest: RouteManifest\n navigate: Navigate\n prefetchedLoaders: Map<string, Map<string, LoaderSnapshot>>\n routePrefetches: Map<string, Promise<void>>\n sequence: number\n}\n\nexport interface RuntimeContainer {\n actions: Map<string, unknown>\n actionStates: Map<\n string,\n {\n error: unknown\n input: unknown\n result: unknown\n }\n >\n components: Map<string, ComponentState>\n dirty: Set<string>\n doc?: Document\n id: string\n imports: Map<string, Promise<RuntimeSymbolModule>>\n loaderStates: Map<\n string,\n {\n data: unknown\n error: unknown\n loaded: boolean\n }\n >\n loaders: Map<string, unknown>\n nextComponentId: number\n nextElementId: number\n nextScopeId: number\n nextSignalId: number\n pendingSuspensePromises: Set<Promise<unknown>>\n rootChildCursor: number\n rootElement?: HTMLElement\n router: RouterState | null\n asyncSignalStates: Map<string, unknown>\n asyncSignalSnapshotCache: Map<string, unknown>\n scopes: Map<string, SerializedValue[]>\n signals: Map<string, SignalRecord>\n symbols: Map<string, string>\n visibilityListenersCleanup: (() => void) | null\n visibilityCheckQueued: boolean\n visibles: Map<string, VisibleState>\n watches: Map<string, WatchState>\n}\n\ninterface RuntimeSymbolModule {\n default: (scope: unknown[], propsOrArg?: unknown, ...args: unknown[]) => unknown\n}\n\ninterface ReactiveEffect {\n fn: () => void\n signals: Set<SignalRecord>\n}\n\ntype WatchDependency = { value: unknown } | (() => unknown)\ntype WatchMode = 'dynamic' | 'explicit'\ntype RouteRenderer = (props: unknown) => unknown\n\ninterface LoadedRouteModule {\n metadata: RouteMetadataExport | null\n renderer: RouteRenderer\n symbol: string | null\n url: string\n}\n\ninterface LoadedRoute {\n entry: RouteModuleManifest\n layouts: LoadedRouteModule[]\n params: RouteParams\n pathname: string\n page: LoadedRouteModule\n render: RouteRenderer\n}\n\ninterface RoutePreflightSuccess {\n ok: true\n}\n\ninterface RoutePreflightRedirect {\n location: string\n ok: false\n}\n\ninterface RoutePreflightDocumentFallback {\n document: true\n ok: false\n}\n\ntype RoutePreflightResult =\n | RoutePreflightSuccess\n | RoutePreflightRedirect\n | RoutePreflightDocumentFallback\n\ninterface RouteSlotValue {\n __eclipsa_type: typeof ROUTE_SLOT_TYPE\n pathname: string\n startLayoutIndex: number\n}\n\ninterface RouteSlotCarrier extends RouteSlotValue {\n [ROUTE_SLOT_ROUTE_KEY]?: LoadedRoute\n}\n\ninterface ProjectionSlotValue {\n __eclipsa_type: typeof PROJECTION_SLOT_TYPE\n componentId: string\n name: string\n occurrence: number\n source: unknown\n}\n\ninterface WatchState {\n cleanupSlot: CleanupSlot\n componentId: string\n effect: ReactiveEffect\n id: string\n mode: WatchMode\n pending: Promise<void> | null\n run: (() => void) | null\n scopeId: string\n symbol: string\n track: (() => void) | null\n}\n\ninterface VisibleState {\n cleanupSlot: CleanupSlot\n componentId: string\n done: boolean\n id: string\n pending: Promise<void> | null\n run: (() => void | Promise<void>) | null\n scopeId: string\n symbol: string\n}\n\ninterface PendingLinkNavigation {\n href: string\n replace: boolean\n state: RouterEventState\n}\n\ntype NavigationMode = 'pop' | 'push' | 'replace'\n\ntype RenderObject = Extract<\n JSX.Element,\n {\n isStatic: boolean\n props: Record<string, unknown>\n type: JSX.Type\n }\n>\n\ninterface RenderComponentTypeRef {\n scopeId: string\n symbol: string\n}\n\nconst resolvedRuntimeSymbols = new WeakMap<RuntimeContainer, Map<string, RuntimeSymbolModule>>()\n\nconst getResolvedRuntimeSymbols = (container: RuntimeContainer) => {\n const existing = resolvedRuntimeSymbols.get(container)\n if (existing) {\n return existing\n }\n const created = new Map<string, RuntimeSymbolModule>()\n resolvedRuntimeSymbols.set(container, created)\n return created\n}\n\nconst isRenderObject = (value: unknown): value is RenderObject =>\n typeof value === 'object' && value !== null && 'type' in value && 'props' in value\n\nconst getContainerStack = (): RuntimeContainer[] => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const existing = globalRecord[CONTAINER_STACK_KEY]\n if (Array.isArray(existing)) {\n return existing as RuntimeContainer[]\n }\n const created: RuntimeContainer[] = []\n globalRecord[CONTAINER_STACK_KEY] = created\n return created\n}\n\nconst getFrameStack = (): RenderFrame[] => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const existing = globalRecord[FRAME_STACK_KEY]\n if (Array.isArray(existing)) {\n return existing as RenderFrame[]\n }\n const created: RenderFrame[] = []\n globalRecord[FRAME_STACK_KEY] = created\n return created\n}\n\nconst getResumeContainers = () => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const existing = globalRecord[RESUME_CONTAINERS_KEY]\n if (existing instanceof Set) {\n return existing as Set<RuntimeContainer>\n }\n const created = new Set<RuntimeContainer>()\n globalRecord[RESUME_CONTAINERS_KEY] = created\n return created\n}\n\nconst getCurrentContainer = (): RuntimeContainer | null => {\n const stack = getContainerStack()\n return stack.length > 0 ? stack[stack.length - 1] : null\n}\n\nconst getAsyncSignalSnapshotCache = () => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const existing = globalRecord[ASYNC_SIGNAL_SNAPSHOT_CACHE_KEY]\n if (existing instanceof Map) {\n return existing as Map<string, unknown>\n }\n const created = new Map<string, unknown>()\n globalRecord[ASYNC_SIGNAL_SNAPSHOT_CACHE_KEY] = created\n return created\n}\n\nexport const readAsyncSignalSnapshot = (\n id: string,\n container: RuntimeContainer | null = getCurrentContainer(),\n) =>\n container?.asyncSignalStates.get(id) ??\n container?.asyncSignalSnapshotCache.get(id) ??\n getAsyncSignalSnapshotCache().get(id)\n\nexport const writeAsyncSignalSnapshot = (\n id: string,\n value: unknown,\n container: RuntimeContainer | null = getCurrentContainer(),\n) => {\n container?.asyncSignalStates.set(id, value)\n container?.asyncSignalSnapshotCache.set(id, value)\n if (!container) {\n getAsyncSignalSnapshotCache().set(id, value)\n }\n}\n\nexport const clearAsyncSignalSnapshot = (\n id: string,\n container: RuntimeContainer | null = getCurrentContainer(),\n) => {\n container?.asyncSignalStates.delete(id)\n container?.asyncSignalSnapshotCache.delete(id)\n if (!container) {\n getAsyncSignalSnapshotCache().delete(id)\n }\n}\n\nconst getCurrentFrame = (): RenderFrame | null => {\n const stack = getFrameStack()\n return stack.length > 0 ? stack[stack.length - 1] : null\n}\n\nconst normalizeRoutePath = (pathname: string) => {\n const normalizedPath = pathname.trim() || '/'\n const withLeadingSlash = normalizedPath.startsWith('/') ? normalizedPath : `/${normalizedPath}`\n if (withLeadingSlash.length > 1 && withLeadingSlash.endsWith('/')) {\n return withLeadingSlash.slice(0, -1)\n }\n return withLeadingSlash\n}\n\nconst EMPTY_ROUTE_PARAMS = Object.freeze({}) as RouteParams\n\nconst splitRoutePath = (pathname: string) => normalizeRoutePath(pathname).split('/').filter(Boolean)\n\nconst matchRouteSegments = (\n segments: RouteModuleManifest['segments'],\n pathnameSegments: string[],\n routeIndex = 0,\n pathIndex = 0,\n params: RouteParams = {},\n): RouteParams | null => {\n if (routeIndex >= segments.length) {\n return pathIndex >= pathnameSegments.length ? params : null\n }\n\n const segment = segments[routeIndex]!\n switch (segment.kind) {\n case 'static':\n if (pathnameSegments[pathIndex] !== segment.value) {\n return null\n }\n return matchRouteSegments(segments, pathnameSegments, routeIndex + 1, pathIndex + 1, params)\n case 'required':\n if (pathIndex >= pathnameSegments.length) {\n return null\n }\n return matchRouteSegments(segments, pathnameSegments, routeIndex + 1, pathIndex + 1, {\n ...params,\n [segment.value]: pathnameSegments[pathIndex],\n })\n case 'optional': {\n const consumed =\n pathIndex < pathnameSegments.length\n ? matchRouteSegments(segments, pathnameSegments, routeIndex + 1, pathIndex + 1, {\n ...params,\n [segment.value]: pathnameSegments[pathIndex],\n })\n : null\n if (consumed) {\n return consumed\n }\n return matchRouteSegments(segments, pathnameSegments, routeIndex + 1, pathIndex, {\n ...params,\n [segment.value]: undefined,\n })\n }\n case 'rest':\n return matchRouteSegments(\n segments,\n pathnameSegments,\n segments.length,\n pathnameSegments.length,\n {\n ...params,\n [segment.value]: pathnameSegments.slice(pathIndex),\n },\n )\n }\n}\n\nconst matchRouteManifest = (manifest: RouteManifest, pathname: string) => {\n const normalizedPath = normalizeRoutePath(pathname)\n const pathnameSegments = splitRoutePath(normalizedPath)\n for (const entry of manifest) {\n const params = matchRouteSegments(entry.segments, pathnameSegments)\n if (params) {\n return {\n entry,\n params,\n pathname: normalizedPath,\n }\n }\n }\n return null\n}\n\nconst scoreSpecialManifestEntry = (entry: RouteModuleManifest, pathname: string) => {\n const pathnameSegments = splitRoutePath(pathname)\n let score = 0\n for (\n let index = 0;\n index < entry.segments.length && index < pathnameSegments.length;\n index += 1\n ) {\n const segment = entry.segments[index]!\n const pathnameSegment = pathnameSegments[index]\n if (segment.kind === 'static') {\n if (segment.value !== pathnameSegment) {\n break\n }\n score += 10\n continue\n }\n score += segment.kind === 'rest' ? 1 : 2\n if (segment.kind === 'rest') {\n break\n }\n }\n return score\n}\n\nconst findSpecialManifestEntry = (\n manifest: RouteManifest,\n pathname: string,\n kind: 'error' | 'notFound',\n) => {\n const matched = matchRouteManifest(manifest, pathname)\n if (matched?.entry[kind]) {\n return matched\n }\n\n let best: ReturnType<typeof matchRouteManifest> = null\n let bestScore = -1\n for (const entry of manifest) {\n if (!entry[kind]) {\n continue\n }\n const score = scoreSpecialManifestEntry(entry, pathname)\n if (score > bestScore) {\n best = {\n entry,\n params: EMPTY_ROUTE_PARAMS,\n pathname: normalizeRoutePath(pathname),\n }\n bestScore = score\n }\n }\n return best\n}\n\nconst routeCacheKey = (\n pathname: string,\n variant: 'page' | 'loading' | 'error' | 'not-found' = 'page',\n) => `${normalizeRoutePath(pathname)}::${variant}`\n\nconst routePrefetchKey = (url: URL) => `${normalizeRoutePath(url.pathname)}${url.search}`\n\nlet currentEffect: ReactiveEffect | null = null\nlet currentCleanupSlot: CleanupSlot | null = null\n\nconst withoutTrackedEffect = <T>(fn: () => T): T => {\n const previous = currentEffect\n currentEffect = null\n try {\n return fn()\n } finally {\n currentEffect = previous\n }\n}\n\nconst createCleanupSlot = (): CleanupSlot => ({\n callbacks: [],\n})\n\nconst withCleanupSlot = <T>(slot: CleanupSlot, fn: () => T): T => {\n const previous = currentCleanupSlot\n currentCleanupSlot = slot\n try {\n return fn()\n } finally {\n currentCleanupSlot = previous\n }\n}\n\nconst disposeCleanupSlot = (slot: CleanupSlot | null | undefined) => {\n if (!slot || slot.callbacks.length === 0) {\n return\n }\n\n const callbacks = [...slot.callbacks].reverse()\n slot.callbacks.length = 0\n let firstError: unknown = null\n const previous = currentCleanupSlot\n currentCleanupSlot = null\n\n try {\n for (const callback of callbacks) {\n try {\n withoutTrackedEffect(callback)\n } catch (error) {\n firstError ??= error\n }\n }\n } finally {\n currentCleanupSlot = previous\n }\n\n if (firstError) {\n throw firstError\n }\n}\n\nconst clearEffectSignals = (effect: ReactiveEffect) => {\n for (const signal of effect.signals) {\n signal.effects.delete(effect)\n }\n effect.signals.clear()\n}\n\nconst collectTrackedDependencies = (effect: ReactiveEffect, fn: () => void) => {\n clearEffectSignals(effect)\n currentEffect = effect\n try {\n fn()\n } finally {\n currentEffect = null\n }\n}\n\nconst trackWatchDependencies = (dependencies: WatchDependency[]) => {\n for (const dependency of dependencies) {\n if (typeof dependency === 'function') {\n dependency()\n continue\n }\n const signalMeta = getSignalMeta(dependency)\n if (!signalMeta) {\n throw new TypeError('useWatch dependencies must be signals or getter functions.')\n }\n dependency.value\n }\n}\n\nconst runWatchCallback = (\n effect: ReactiveEffect,\n cleanupSlot: CleanupSlot,\n fn: () => void,\n dependencies?: WatchDependency[],\n) => {\n disposeCleanupSlot(cleanupSlot)\n if (!dependencies) {\n collectTrackedDependencies(effect, () => {\n withCleanupSlot(cleanupSlot, fn)\n })\n return\n }\n collectTrackedDependencies(effect, () => {\n trackWatchDependencies(dependencies)\n })\n withCleanupSlot(cleanupSlot, fn)\n}\n\nconst createLocalWatchRunner =\n (\n effect: ReactiveEffect,\n cleanupSlot: CleanupSlot,\n fn: () => void,\n dependencies?: WatchDependency[],\n ) =>\n () => {\n runWatchCallback(effect, cleanupSlot, fn, dependencies)\n }\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (!value || typeof value !== 'object') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nconst isProjectionSlot = (value: unknown): value is ProjectionSlotValue =>\n isPlainObject(value) && value.__eclipsa_type === PROJECTION_SLOT_TYPE\n\nconst createProjectionSlot = (\n componentId: string,\n name: string,\n occurrence: number,\n source: unknown,\n): ProjectionSlotValue => ({\n __eclipsa_type: PROJECTION_SLOT_TYPE,\n componentId,\n name,\n occurrence,\n source,\n})\n\nconst encodeProjectionSlotName = (value: string) => encodeURIComponent(value)\nconst decodeProjectionSlotName = (value: string) => decodeURIComponent(value)\n\nconst createProjectionSlotMarker = (\n componentId: string,\n name: string,\n occurrence: number,\n kind: 'start' | 'end',\n) => `ec:s:${componentId}:${encodeProjectionSlotName(name)}:${occurrence}:${kind}`\n\nconst PROJECTION_SLOT_MARKER_REGEX = /^ec:s:([^:]+):([^:]+):(\\d+):(start|end)$/\n\nconst parseProjectionSlotMarker = (value: string) => {\n const matched = value.match(PROJECTION_SLOT_MARKER_REGEX)\n if (!matched) {\n return null\n }\n return {\n componentId: matched[1],\n kind: matched[4] as 'start' | 'end',\n key: `${matched[1]}:${matched[2]}:${matched[3]}`,\n name: decodeProjectionSlotName(matched[2]),\n occurrence: Number(matched[3]),\n }\n}\n\nconst getRenderComponentTypeRef = (value: unknown): RenderComponentTypeRef | null => {\n if (typeof value !== 'function') {\n return null\n }\n return (\n ((value as unknown as Record<PropertyKey, unknown>)[RENDER_COMPONENT_TYPE_KEY] as\n | RenderComponentTypeRef\n | undefined) ?? null\n )\n}\n\nconst createMaterializedRenderComponentType = (\n container: RuntimeContainer,\n symbol: string,\n scopeId: string,\n) => {\n const component = __eclipsaComponent(\n ((props: unknown) => {\n const module = getResolvedRuntimeSymbols(container).get(symbol)\n if (!module) {\n throw new Error(`Missing preloaded render component symbol ${symbol}.`)\n }\n return module.default(materializeScope(container, scopeId), props)\n }) as Component,\n symbol,\n () => materializeScope(container, scopeId),\n )\n Object.defineProperty(component, RENDER_COMPONENT_TYPE_KEY, {\n configurable: true,\n enumerable: false,\n value: {\n scopeId,\n symbol,\n } satisfies RenderComponentTypeRef,\n writable: true,\n })\n return component\n}\n\nconst serializeRenderObjectReference = (\n container: RuntimeContainer,\n value: RenderObject,\n): SerializedReference => {\n const evaluatedProps = evaluateProps(value.props)\n const key = value.key ?? null\n const metadata = value.metadata ?? null\n\n if (typeof value.type === 'string') {\n return {\n __eclipsa_type: 'ref',\n data: [\n 'element',\n value.type,\n null,\n serializeRuntimeValue(container, evaluatedProps),\n serializeRuntimeValue(container, key),\n value.isStatic,\n serializeRuntimeValue(container, metadata),\n ],\n kind: RENDER_REFERENCE_KIND,\n token: 'jsx',\n }\n }\n\n const meta = getComponentMeta(value.type)\n if (!meta) {\n throw new TypeError('Only resumable component render objects can be serialized.')\n }\n\n return {\n __eclipsa_type: 'ref',\n data: [\n 'component',\n meta.symbol,\n registerScope(container, meta.captures()),\n serializeRuntimeValue(container, evaluatedProps),\n serializeRuntimeValue(container, key),\n value.isStatic,\n serializeRuntimeValue(container, metadata),\n ],\n kind: RENDER_REFERENCE_KIND,\n token: 'jsx',\n }\n}\n\nconst deserializeRenderObjectReference = (\n container: RuntimeContainer,\n data: SerializedValue | undefined,\n): RenderObject => {\n if (!Array.isArray(data) || data.length !== 7) {\n throw new TypeError('Render references require a seven-part payload.')\n }\n\n const [variant, typeValue, scopeValue, propsValue, keyValue, isStaticValue, metadataValue] = data\n if (variant !== 'element' && variant !== 'component') {\n throw new TypeError(`Unsupported render reference variant \"${String(variant)}\".`)\n }\n if (typeof isStaticValue !== 'boolean') {\n throw new TypeError('Render references require a boolean static flag.')\n }\n\n const props = deserializeRuntimeValue(container, propsValue as SerializedValue)\n const key = deserializeRuntimeValue(container, keyValue as SerializedValue)\n const metadata = deserializeRuntimeValue(container, metadataValue as SerializedValue)\n\n if (!props || typeof props !== 'object') {\n throw new TypeError('Render references require object props.')\n }\n\n if (variant === 'element') {\n if (typeof typeValue !== 'string') {\n throw new TypeError('Element render references require a string tag name.')\n }\n return {\n isStatic: isStaticValue,\n key: (key ?? undefined) as RenderObject['key'],\n metadata: (metadata ?? undefined) as RenderObject['metadata'],\n props: props as Record<string, unknown>,\n type: typeValue,\n }\n }\n\n if (typeof typeValue !== 'string' || typeof scopeValue !== 'string') {\n throw new TypeError('Component render references require a symbol id and scope id.')\n }\n\n return {\n isStatic: isStaticValue,\n key: (key ?? undefined) as RenderObject['key'],\n metadata: (metadata ?? undefined) as RenderObject['metadata'],\n props: props as Record<string, unknown>,\n type: createMaterializedRenderComponentType(container, typeValue, scopeValue),\n }\n}\n\nconst preloadResumableValue = async (\n container: RuntimeContainer,\n value: unknown,\n seen = new Set<unknown>(),\n): Promise<void> => {\n if (value === null || value === undefined || value === false) {\n return\n }\n if (seen.has(value)) {\n return\n }\n if (typeof value === 'function') {\n const renderComponentRef = getRenderComponentTypeRef(value)\n if (!renderComponentRef) {\n return\n }\n seen.add(value)\n await loadSymbol(container, renderComponentRef.symbol)\n for (const capturedValue of materializeScope(container, renderComponentRef.scopeId)) {\n await preloadResumableValue(container, capturedValue, seen)\n }\n return\n }\n if (Array.isArray(value)) {\n seen.add(value)\n for (const entry of value) {\n await preloadResumableValue(container, entry, seen)\n }\n return\n }\n if (typeof Node !== 'undefined' && value instanceof Node) {\n return\n }\n if (isProjectionSlot(value)) {\n return\n }\n if (isRenderObject(value)) {\n seen.add(value)\n await preloadResumableValue(container, value.type, seen)\n await preloadResumableValue(container, evaluateProps(value.props), seen)\n return\n }\n if (!isPlainObject(value)) {\n return\n }\n\n seen.add(value)\n for (const entry of Object.values(value)) {\n await preloadResumableValue(container, entry, seen)\n }\n}\n\nconst serializeRuntimeValue = (container: RuntimeContainer, value: unknown): SerializedValue =>\n serializeValue(value, {\n serializeReference(candidate) {\n const signalMeta = getSignalMeta(candidate)\n if (signalMeta) {\n return {\n __eclipsa_type: 'ref',\n kind: 'signal',\n token: signalMeta.id,\n }\n }\n if (getNavigateMeta(candidate)) {\n return {\n __eclipsa_type: 'ref',\n kind: 'navigate',\n token: 'navigate',\n }\n }\n const actionMeta = getActionHandleMeta(candidate)\n if (actionMeta) {\n return {\n __eclipsa_type: 'ref',\n kind: 'action',\n token: actionMeta.id,\n }\n }\n const actionHookMeta = getActionHookMeta(candidate)\n if (actionHookMeta) {\n return {\n __eclipsa_type: 'ref',\n kind: 'action-hook',\n token: actionHookMeta.id,\n }\n }\n const loaderMeta = getLoaderHandleMeta(candidate)\n if (loaderMeta) {\n return {\n __eclipsa_type: 'ref',\n kind: 'loader',\n token: loaderMeta.id,\n }\n }\n const loaderHookMeta = getLoaderHookMeta(candidate)\n if (loaderHookMeta) {\n return {\n __eclipsa_type: 'ref',\n kind: 'loader-hook',\n token: loaderHookMeta.id,\n }\n }\n if (isRouteSlot(candidate)) {\n return {\n __eclipsa_type: 'ref',\n data: serializeValue(candidate.startLayoutIndex),\n kind: 'route-slot',\n token: candidate.pathname,\n }\n }\n if (isProjectionSlot(candidate)) {\n return {\n __eclipsa_type: 'ref',\n data: serializeRuntimeValue(container, candidate.source),\n kind: PROJECTION_SLOT_TYPE,\n token: JSON.stringify([candidate.componentId, candidate.name, candidate.occurrence]),\n }\n }\n if (isRenderObject(candidate)) {\n return serializeRenderObjectReference(container, candidate)\n }\n const lazyMeta = getLazyMeta(candidate)\n if (lazyMeta) {\n return {\n __eclipsa_type: 'ref',\n data: lazyMeta.captures().map((entry) => serializeRuntimeValue(container, entry)),\n kind: 'symbol',\n token: lazyMeta.symbol,\n }\n }\n if (isElementNode(candidate)) {\n return {\n __eclipsa_type: 'ref',\n kind: 'dom',\n token: ensureRuntimeElementId(container, candidate),\n }\n }\n return null\n },\n })\n\nconst deserializeRuntimeValue = (container: RuntimeContainer, value: SerializedValue): unknown =>\n deserializeValue(value, {\n deserializeReference(reference) {\n if (reference.kind === 'navigate') {\n return ensureRouterState(container).navigate\n }\n if (reference.kind === 'action') {\n const action = container.actions.get(reference.token)\n if (!action) {\n throw new Error(`Missing action handle ${reference.token}.`)\n }\n return action\n }\n if (reference.kind === 'action-hook') {\n const actionHook = getRegisteredActionHook(reference.token)\n if (!actionHook) {\n throw new Error(`Missing action hook ${reference.token}.`)\n }\n return actionHook\n }\n if (reference.kind === 'loader') {\n const loader = container.loaders.get(reference.token)\n if (!loader) {\n throw new Error(`Missing loader handle ${reference.token}.`)\n }\n return loader\n }\n if (reference.kind === 'loader-hook') {\n const loaderHook = getRegisteredLoaderHook(reference.token)\n if (!loaderHook) {\n throw new Error(`Missing loader hook ${reference.token}.`)\n }\n return loaderHook\n }\n if (reference.kind === 'route-slot') {\n const startLayoutIndex = reference.data === undefined ? 0 : deserializeValue(reference.data)\n if (typeof startLayoutIndex !== 'number' || !Number.isInteger(startLayoutIndex)) {\n throw new TypeError('Route slot references require an integer start layout index.')\n }\n return {\n __eclipsa_type: ROUTE_SLOT_TYPE,\n pathname: reference.token,\n startLayoutIndex,\n } satisfies RouteSlotValue\n }\n if (reference.kind === PROJECTION_SLOT_TYPE) {\n let componentId = ''\n let name = ''\n let occurrence = 0\n try {\n const parsed = JSON.parse(reference.token)\n if (\n !Array.isArray(parsed) ||\n parsed.length !== 3 ||\n typeof parsed[0] !== 'string' ||\n typeof parsed[1] !== 'string' ||\n typeof parsed[2] !== 'number'\n ) {\n throw new Error('invalid projection slot token')\n }\n componentId = parsed[0]\n name = parsed[1]\n occurrence = parsed[2]\n } catch {\n throw new TypeError(\n 'Projection slot references require a component id, name, and occurrence.',\n )\n }\n return createProjectionSlot(\n componentId,\n name,\n occurrence,\n deserializeRuntimeValue(container, reference.data as SerializedValue),\n )\n }\n if (reference.kind === 'signal') {\n const record = container.signals.get(reference.token)\n if (!record) {\n throw new Error(`Missing signal ${reference.token}.`)\n }\n return record.handle\n }\n if (reference.kind === 'symbol') {\n if (!reference.data || !Array.isArray(reference.data)) {\n throw new TypeError('Symbol references require an encoded scope array.')\n }\n const scopeId = registerSerializedScope(container, reference.data)\n return materializeSymbolReference(container, reference.token, scopeId)\n }\n if (reference.kind === RENDER_REFERENCE_KIND) {\n return deserializeRenderObjectReference(container, reference.data)\n }\n if (reference.kind === 'dom') {\n const element = findRuntimeElement(container, reference.token)\n if (!element) {\n throw new Error(`Missing DOM reference ${reference.token}.`)\n }\n return element\n }\n throw new TypeError(`Unsupported runtime reference kind \"${reference.kind}\".`)\n },\n })\n\nconst findNextNumericId = (ids: Iterable<string>, prefix: string) => {\n let nextId = 0\n for (const id of ids) {\n if (!id.startsWith(prefix)) {\n continue\n }\n const suffix = id.slice(prefix.length)\n if (!/^\\d+$/.test(suffix)) {\n continue\n }\n nextId = Math.max(nextId, Number(suffix) + 1)\n }\n return nextId\n}\n\nconst getRefSignalId = (value: unknown) => getSignalMeta(value)?.id ?? null\n\nexport const assignRuntimeRef = (\n value: unknown,\n element: Element,\n container: RuntimeContainer | null = getCurrentContainer(),\n) => {\n const signalMeta = getSignalMeta<Element | undefined>(value)\n if (!signalMeta) {\n return false\n }\n\n const record = container?.signals.get(signalMeta.id)\n if (record) {\n record.value = element\n return true\n }\n\n signalMeta.set(element)\n return true\n}\n\nconst restoreSignalRefs = (container: RuntimeContainer, root: ParentNode) => {\n const assignElement = (element: Element) => {\n const signalId = element.getAttribute(REF_SIGNAL_ATTR)\n if (!signalId) {\n return\n }\n const record = container.signals.get(signalId)\n if (!record) {\n return\n }\n record.value = element\n }\n\n if (isElementNode(root) && root.getAttribute(REF_SIGNAL_ATTR)) {\n assignElement(root)\n }\n\n if (!('querySelectorAll' in root)) {\n return\n }\n\n for (const element of root.querySelectorAll(`[${REF_SIGNAL_ATTR}]`)) {\n assignElement(element)\n }\n}\n\nconst evaluateProps = (props: Record<string, unknown>): Record<string, unknown> => {\n const result: Record<string, unknown> = {}\n for (const [key, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(props))) {\n if (descriptor.get) {\n result[key] = descriptor.get.call(props)\n } else {\n result[key] = descriptor.value\n }\n }\n return result\n}\n\nconst hasProjectionSlotValue = (props: Record<string, unknown>, name: string) =>\n Object.prototype.hasOwnProperty.call(props, name)\n\nconst createRenderProps = (\n componentId: string,\n meta: ComponentMeta,\n props: Record<string, unknown>,\n): Record<string, unknown> => {\n if (!meta.projectionSlots || Object.keys(meta.projectionSlots).length === 0) {\n return props\n }\n\n const nextProps: Record<string, unknown> = {\n ...props,\n }\n const counters = new Map<string, number>()\n\n for (const [name, totalOccurrences] of Object.entries(meta.projectionSlots)) {\n Object.defineProperty(nextProps, name, {\n configurable: true,\n enumerable: true,\n get() {\n if (!hasProjectionSlotValue(props, name)) {\n return undefined\n }\n const current = counters.get(name) ?? 0\n counters.set(name, current + 1)\n const occurrence = totalOccurrences > 0 ? current % totalOccurrences : current\n return createProjectionSlot(componentId, name, occurrence, props[name])\n },\n })\n }\n\n return nextProps\n}\n\nconst preloadComponentProps = async (\n container: RuntimeContainer,\n meta: ComponentMeta,\n props: unknown,\n) => {\n if (!props || typeof props !== 'object' || !meta.projectionSlots) {\n await preloadResumableValue(container, props)\n return\n }\n\n const projectionNames = new Set(Object.keys(meta.projectionSlots))\n const entries: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(props as Record<string, unknown>)) {\n if (projectionNames.has(key)) {\n continue\n }\n entries[key] = value\n }\n await preloadResumableValue(container, entries)\n}\n\nconst createContainer = (\n symbols: Record<string, string>,\n doc?: Document,\n asyncSignalSnapshotCache?: Map<string, unknown>,\n): RuntimeContainer => ({\n actions: new Map(),\n actionStates: new Map(),\n asyncSignalStates: new Map(),\n asyncSignalSnapshotCache: asyncSignalSnapshotCache ?? new Map(),\n components: new Map(),\n dirty: new Set(),\n doc,\n id: `rt${((globalThis as Record<PropertyKey, unknown>)[CONTAINER_ID_KEY] =\n (((globalThis as Record<PropertyKey, unknown>)[CONTAINER_ID_KEY] as number | undefined) ?? 0) +\n 1)}`,\n imports: new Map(),\n loaderStates: new Map(),\n loaders: new Map(),\n nextComponentId: 0,\n nextElementId: 0,\n nextScopeId: 0,\n nextSignalId: 0,\n pendingSuspensePromises: new Set(),\n rootChildCursor: 0,\n rootElement: doc?.body,\n router: null,\n scopes: new Map(),\n signals: new Map(),\n symbols: new Map(Object.entries(symbols)),\n visibilityCheckQueued: false,\n visibilityListenersCleanup: null,\n visibles: new Map(),\n watches: new Map(),\n})\n\nexport const registerResumeContainer = (container: RuntimeContainer) => {\n const containers = getResumeContainers()\n containers.add(container)\n return () => {\n containers.delete(container)\n }\n}\n\nconst createSignalHandle = <T>(record: SignalRecord<T>, container: RuntimeContainer | null) => {\n const handle = {} as { value: T }\n Object.defineProperty(handle, 'value', {\n configurable: true,\n enumerable: true,\n get() {\n recordSignalRead(record)\n return record.value\n },\n set(value: T) {\n record.value = value\n notifySignalWrite(container, record)\n },\n })\n setSignalMeta(handle, {\n get: () => record.value,\n id: record.id,\n set: (value) => {\n record.value = value\n notifySignalWrite(container, record)\n },\n } satisfies SignalMeta<T>)\n return handle\n}\n\nconst ensureSignalRecord = <T>(\n container: RuntimeContainer | null,\n id: string,\n initialValue: T,\n): SignalRecord<T> => {\n if (!container) {\n const record = {\n effects: new Set<ReactiveEffect>(),\n handle: undefined as unknown as { value: T },\n id,\n subscribers: new Set<string>(),\n value: initialValue,\n } satisfies SignalRecord<T>\n record.handle = createSignalHandle(record, null)\n return record\n }\n const existing = container.signals.get(id)\n if (existing) {\n return existing as SignalRecord<T>\n }\n const record: SignalRecord<T> = {\n effects: new Set(),\n handle: undefined as unknown as { value: T },\n id,\n subscribers: new Set(),\n value: initialValue,\n }\n record.handle = createSignalHandle(record, container)\n container.signals.set(id, record as SignalRecord)\n return record\n}\n\nconst isRouterSignalId = (id: string) =>\n id === ROUTER_CURRENT_PATH_SIGNAL_ID || id === ROUTER_IS_NAVIGATING_SIGNAL_ID\n\nconst createStandaloneNavigate = (): Navigate => {\n const navigate = (async (href: string, options?: NavigateOptions) => {\n if (typeof window === 'undefined') {\n return\n }\n const url = new URL(href, window.location.href)\n if (options?.replace) {\n window.location.replace(url.href)\n return\n }\n window.location.assign(url.href)\n }) as Navigate\n\n Object.defineProperty(navigate, 'isNavigating', {\n configurable: true,\n enumerable: true,\n get() {\n return false\n },\n })\n\n return setNavigateMeta(navigate)\n}\n\nconst recordSignalRead = (record: SignalRecord) => {\n if (currentEffect) {\n currentEffect.signals.add(record)\n record.effects.add(currentEffect)\n }\n const frame = getCurrentFrame()\n if (!frame) {\n return\n }\n record.subscribers.add(frame.component.id)\n}\n\nconst notifySignalWrite = (container: RuntimeContainer | null, record: SignalRecord) => {\n for (const effect of [...record.effects]) {\n effect.fn()\n }\n if (!container) {\n return\n }\n for (const componentId of record.subscribers) {\n const component = container.components.get(componentId)\n if (component?.active) {\n continue\n }\n container.dirty.add(componentId)\n }\n}\n\nconst ensureRouterState = (container: RuntimeContainer, manifest?: RouteManifest) => {\n if (container.router) {\n if (manifest) {\n container.router.manifest = [...manifest]\n }\n return container.router\n }\n\n const currentPath = ensureSignalRecord(\n container,\n ROUTER_CURRENT_PATH_SIGNAL_ID,\n normalizeRoutePath(container.doc?.location.pathname ?? '/'),\n ).handle as { value: string }\n const isNavigating = ensureSignalRecord(container, ROUTER_IS_NAVIGATING_SIGNAL_ID, false)\n .handle as { value: boolean }\n\n const router: RouterState = {\n currentPath,\n currentRoute: null,\n defaultTitle: container.doc?.title ?? '',\n isNavigating,\n loadedRoutes: new Map(),\n manifest: [],\n navigate: undefined as unknown as Navigate,\n prefetchedLoaders: new Map(),\n routePrefetches: new Map(),\n sequence: 0,\n }\n\n container.router = router\n router.navigate = setNavigateMeta((async (href: string, options?: NavigateOptions) => {\n await navigateContainer(container, href, {\n mode: options?.replace ? 'replace' : 'push',\n })\n }) as Navigate)\n\n Object.defineProperty(router.navigate, 'isNavigating', {\n configurable: true,\n enumerable: true,\n get() {\n return ensureRouterState(container).isNavigating.value\n },\n })\n\n if (manifest) {\n router.manifest = [...manifest]\n }\n\n return router\n}\n\nconst pushContainer = <T>(container: RuntimeContainer, fn: () => T): T => {\n const stack = getContainerStack()\n stack.push(container)\n try {\n return fn()\n } finally {\n stack.pop()\n }\n}\n\nexport const withRuntimeContainer = pushContainer\n\nconst pushFrame = <T>(frame: RenderFrame, fn: () => T): T => {\n const stack = getFrameStack()\n stack.push(frame)\n try {\n return fn()\n } finally {\n stack.pop()\n }\n}\n\nconst allocateScopeId = (container: RuntimeContainer) => `sc${container.nextScopeId++}`\n\nexport const ensureRuntimeElementId = (container: RuntimeContainer, element: Element) => {\n const existingId = element.getAttribute('data-eid')\n if (existingId) {\n return existingId\n }\n const nextId = `e${container.nextElementId++}`\n element.setAttribute('data-eid', nextId)\n return nextId\n}\n\nexport const findRuntimeElement = (\n container: RuntimeContainer,\n elementId: string,\n): Element | null => {\n const root = container.rootElement ?? container.doc?.body\n if (!root) {\n return null\n }\n if (root.getAttribute('data-eid') === elementId) {\n return root\n }\n return root.querySelector(`[data-eid=\"${elementId}\"]`)\n}\n\nconst registerScope = (container: RuntimeContainer, values: unknown[]): string => {\n const id = allocateScopeId(container)\n container.scopes.set(\n id,\n values.map((value) => serializeRuntimeValue(container, value)),\n )\n return id\n}\n\nconst registerSerializedScope = (container: RuntimeContainer, values: SerializedValue[]) => {\n const id = allocateScopeId(container)\n container.scopes.set(id, [...values])\n return id\n}\n\nconst materializeSymbolReference = (\n container: RuntimeContainer,\n symbolId: string,\n scopeId: string,\n) => {\n const fn = (...args: unknown[]) => {\n void loadSymbol(container, symbolId).then((module) =>\n module.default(materializeScope(container, scopeId), ...args),\n )\n }\n Object.defineProperty(fn, 'name', {\n configurable: true,\n value: `eclipsa$${symbolId}`,\n })\n return fn\n}\n\nconst materializeScope = (container: RuntimeContainer, scopeId: string): unknown[] => {\n const slots = container.scopes.get(scopeId)\n if (!slots) {\n throw new Error(`Missing scope ${scopeId}.`)\n }\n return slots.map((slot) => deserializeRuntimeValue(container, slot))\n}\n\nconst createFrame = (\n container: RuntimeContainer,\n component: ComponentState,\n mode: RenderFrame['mode'],\n options?: {\n reuseExistingDom?: boolean\n },\n): RenderFrame => ({\n childCursor: 0,\n component,\n container,\n mountCallbacks: [],\n mode,\n projectionState: {\n counters: new Map(),\n reuseExistingDom: options?.reuseExistingDom ?? false,\n },\n signalCursor: 0,\n visibleCursor: 0,\n visitedDescendants: new Set(),\n watchCursor: 0,\n})\n\nconst createComponentId = (\n container: RuntimeContainer,\n parentId: string | null,\n childIndex: number,\n) => {\n if (!parentId || parentId === ROOT_COMPONENT_ID) {\n return `c${childIndex}`\n }\n return `${parentId}.${childIndex}`\n}\n\nconst getOrCreateComponentState = (\n container: RuntimeContainer,\n id: string,\n symbol: string,\n parentId: string | null,\n): ComponentState => {\n const existing = container.components.get(id)\n if (existing) {\n existing.parentId = parentId\n existing.symbol = symbol\n return existing\n }\n const component: ComponentState = {\n active: false,\n didMount: false,\n id,\n mountCleanupSlots: [],\n parentId,\n props: {},\n projectionSlots: null,\n reuseExistingDomOnActivate: true,\n scopeId: registerScope(container, []),\n signalIds: [],\n symbol,\n suspensePromise: null,\n visibleCount: 0,\n watchCount: 0,\n }\n container.components.set(id, component)\n return component\n}\n\nconst resetComponentForSymbolChange = (\n container: RuntimeContainer,\n component: ComponentState,\n meta: ComponentMeta,\n) => {\n disposeComponentMountCleanups(component)\n component.didMount = false\n component.projectionSlots = meta.projectionSlots ?? null\n component.scopeId = registerScope(container, meta.captures())\n component.signalIds = []\n component.suspensePromise = null\n pruneComponentVisibles(container, component, 0)\n pruneComponentWatches(container, component, 0)\n}\n\nconst createWatchId = (componentId: string, watchIndex: number) => `${componentId}:w${watchIndex}`\nconst createVisibleId = (componentId: string, visibleIndex: number) =>\n `${componentId}:v${visibleIndex}`\n\nconst getOrCreateWatchState = (\n container: RuntimeContainer,\n id: string,\n componentId: string,\n): WatchState => {\n const existing = container.watches.get(id)\n if (existing) {\n existing.componentId = componentId\n return existing\n }\n const effect: ReactiveEffect = {\n fn() {},\n signals: new Set(),\n }\n const watch: WatchState = {\n cleanupSlot: createCleanupSlot(),\n componentId,\n effect,\n id,\n mode: 'dynamic',\n pending: null,\n run: null,\n scopeId: registerScope(container, []),\n symbol: '',\n track: null,\n }\n effect.fn = () => {\n if (watch.run) {\n watch.run()\n return\n }\n if (!container.doc) {\n return\n }\n const scheduled = (watch.pending ?? Promise.resolve()).then(async () => {\n disposeCleanupSlot(watch.cleanupSlot)\n const module = await loadSymbol(container, watch.symbol)\n const scope = materializeScope(container, watch.scopeId)\n await withClientContainer(container, () => {\n if (watch.mode === 'dynamic') {\n collectTrackedDependencies(effect, () => {\n withCleanupSlot(watch.cleanupSlot, () => {\n module.default(scope)\n })\n })\n return\n }\n collectTrackedDependencies(effect, () => {\n module.default(scope, 'track')\n })\n withCleanupSlot(watch.cleanupSlot, () => {\n module.default(scope, 'run')\n })\n })\n await flushDirtyComponents(container)\n })\n const queued = scheduled.finally(() => {\n if (watch.pending === queued) {\n watch.pending = null\n }\n })\n watch.pending = queued\n }\n container.watches.set(id, watch)\n return watch\n}\n\nconst getOrCreateVisibleState = (\n container: RuntimeContainer,\n id: string,\n componentId: string,\n): VisibleState => {\n const existing = container.visibles.get(id)\n if (existing) {\n existing.componentId = componentId\n return existing\n }\n\n const visible: VisibleState = {\n cleanupSlot: createCleanupSlot(),\n componentId,\n done: false,\n id,\n pending: null,\n run: null,\n scopeId: registerScope(container, []),\n symbol: '',\n }\n container.visibles.set(id, visible)\n return visible\n}\n\nconst clearComponentSubscriptions = (container: RuntimeContainer, componentId: string) => {\n for (const record of container.signals.values()) {\n record.subscribers.delete(componentId)\n }\n}\n\nconst disposeComponentMountCleanups = (component: ComponentState) => {\n const cleanupSlots = [...component.mountCleanupSlots].reverse()\n component.mountCleanupSlots = []\n for (const cleanupSlot of cleanupSlots) {\n disposeCleanupSlot(cleanupSlot)\n }\n}\n\nconst removeWatchState = (container: RuntimeContainer, watchId: string) => {\n const watch = container.watches.get(watchId)\n if (!watch) {\n return\n }\n disposeCleanupSlot(watch.cleanupSlot)\n clearEffectSignals(watch.effect)\n container.watches.delete(watchId)\n}\n\nconst removeVisibleState = (container: RuntimeContainer, visibleId: string) => {\n const visible = container.visibles.get(visibleId)\n if (visible) {\n disposeCleanupSlot(visible.cleanupSlot)\n }\n container.visibles.delete(visibleId)\n}\n\nconst resetVisibleState = (visible: VisibleState) => {\n disposeCleanupSlot(visible.cleanupSlot)\n visible.cleanupSlot = createCleanupSlot()\n visible.done = false\n visible.pending = null\n}\n\nconst resetComponentVisibleStates = (container: RuntimeContainer, componentId: string) => {\n const targetIds = new Set<string>([componentId, ...collectDescendantIds(container, componentId)])\n\n for (const visible of container.visibles.values()) {\n if (!targetIds.has(visible.componentId)) {\n continue\n }\n resetVisibleState(visible)\n }\n}\n\nconst pruneComponentWatches = (\n container: RuntimeContainer,\n component: ComponentState,\n nextCount: number,\n) => {\n for (let index = nextCount; index < component.watchCount; index++) {\n removeWatchState(container, createWatchId(component.id, index))\n }\n component.watchCount = nextCount\n}\n\nconst pruneComponentVisibles = (\n container: RuntimeContainer,\n component: ComponentState,\n nextCount: number,\n) => {\n for (let index = nextCount; index < component.visibleCount; index++) {\n removeVisibleState(container, createVisibleId(component.id, index))\n }\n component.visibleCount = nextCount\n}\n\nconst isDescendantOf = (parentId: string, candidateId: string) =>\n candidateId.startsWith(`${parentId}.`)\n\nconst collectDescendantIds = (container: RuntimeContainer, componentId: string) =>\n [...container.components.keys()].filter((candidate) => isDescendantOf(componentId, candidate))\n\nconst pruneRemovedComponents = (\n container: RuntimeContainer,\n componentId: string,\n keep: Set<string>,\n) => {\n for (const descendantId of collectDescendantIds(container, componentId)) {\n if (keep.has(descendantId)) {\n continue\n }\n clearComponentSubscriptions(container, descendantId)\n const descendant = container.components.get(descendantId)\n if (descendant) {\n disposeComponentMountCleanups(descendant)\n pruneComponentVisibles(container, descendant, 0)\n pruneComponentWatches(container, descendant, 0)\n }\n container.components.delete(descendantId)\n }\n}\n\nconst scheduleMicrotask = (fn: () => void) => {\n if (typeof queueMicrotask === 'function') {\n queueMicrotask(fn)\n return\n }\n Promise.resolve().then(fn)\n}\n\nconst scheduleVisibleCallbacksCheck = (container: RuntimeContainer) => {\n if (container.visibilityCheckQueued || container.visibles.size === 0 || !container.doc) {\n return\n }\n\n ensureVisibilityListeners(container)\n container.visibilityCheckQueued = true\n const run = () => {\n container.visibilityCheckQueued = false\n void flushVisibleCallbacks(container)\n }\n\n const view = container.doc.defaultView\n if (view && typeof view.requestAnimationFrame === 'function') {\n view.requestAnimationFrame(() => run())\n return\n }\n\n scheduleMicrotask(run)\n}\n\nconst rectIntersectsViewport = (\n view: { innerHeight?: number; innerWidth?: number },\n rect: { bottom: number; left: number; right: number; top: number },\n) => {\n const viewportHeight = view.innerHeight ?? 0\n const viewportWidth = view.innerWidth ?? 0\n return rect.bottom > 0 && rect.right > 0 && rect.top < viewportHeight && rect.left < viewportWidth\n}\n\nconst isBoundaryVisible = (doc: Document, start: Comment, end: Comment) => {\n const view = doc.defaultView\n if (typeof doc.createRange !== 'function' || !view) {\n return false\n }\n\n const range = doc.createRange()\n range.setStartAfter(start)\n range.setEndBefore(end)\n\n const rects = range.getClientRects()\n if (rects.length === 0) {\n return rectIntersectsViewport(view, range.getBoundingClientRect())\n }\n\n for (let index = 0; index < rects.length; index++) {\n const rect = rects[index]\n if (rectIntersectsViewport(view, rect)) {\n return true\n }\n }\n return false\n}\n\nconst runVisibleCallback = async (container: RuntimeContainer, visible: VisibleState) => {\n if (visible.done) {\n return\n }\n\n visible.done = true\n const pending = Promise.resolve()\n .then(async () => {\n if (visible.run) {\n await withClientContainer(container, async () => {\n await withCleanupSlot(visible.cleanupSlot, () => visible.run?.())\n })\n } else {\n const module = await loadSymbol(container, visible.symbol)\n await withClientContainer(container, async () => {\n await withCleanupSlot(visible.cleanupSlot, () =>\n module.default(materializeScope(container, visible.scopeId)),\n )\n })\n }\n await flushDirtyComponents(container)\n scheduleVisibleCallbacksCheck(container)\n })\n .finally(() => {\n if (visible.pending === pending) {\n visible.pending = null\n }\n })\n\n visible.pending = pending\n await pending\n}\n\nconst flushVisibleCallbacks = async (container: RuntimeContainer) => {\n if (!container.doc || container.visibles.size === 0) {\n return\n }\n\n for (const visible of [...container.visibles.values()]) {\n if (visible.done || visible.pending) {\n continue\n }\n\n const component = container.components.get(visible.componentId)\n if (!component?.start || !component.end) {\n continue\n }\n\n if (!isBoundaryVisible(container.doc, component.start, component.end)) {\n continue\n }\n\n await runVisibleCallback(container, visible)\n }\n}\n\nconst ensureVisibilityListeners = (container: RuntimeContainer) => {\n if (container.visibilityListenersCleanup || !container.doc) {\n return\n }\n\n const doc = container.doc\n const onVisibilityChange = () => {\n scheduleVisibleCallbacksCheck(container)\n }\n\n doc.addEventListener('scroll', onVisibilityChange, true)\n doc.defaultView?.addEventListener('resize', onVisibilityChange)\n\n container.visibilityListenersCleanup = () => {\n doc.removeEventListener('scroll', onVisibilityChange, true)\n doc.defaultView?.removeEventListener('resize', onVisibilityChange)\n container.visibilityListenersCleanup = null\n }\n}\n\nconst scheduleMountCallbacks = (\n container: RuntimeContainer,\n component: ComponentState,\n callbacks: Array<() => void>,\n) => {\n if (component.didMount || callbacks.length === 0) {\n return\n }\n component.didMount = true\n scheduleMicrotask(() => {\n void withClientContainer(container, () => {\n for (const callback of callbacks) {\n const cleanupSlot = createCleanupSlot()\n component.mountCleanupSlots.push(cleanupSlot)\n withCleanupSlot(cleanupSlot, callback)\n }\n })\n .then(() => flushDirtyComponents(container))\n .then(() => {\n scheduleVisibleCallbacksCheck(container)\n })\n })\n}\n\nconst collectProjectionSlotRanges = (roots: Node[]) => {\n const starts = new Map<string, Comment>()\n const ranges = new Map<string, { end: Comment; start: Comment }>()\n\n const visit = (node: Node) => {\n if (typeof Comment !== 'undefined' ? node instanceof Comment : (node as Node).nodeType === 8) {\n const commentNode = node as Comment\n const marker = parseProjectionSlotMarker(commentNode.data)\n if (marker) {\n if (marker.kind === 'start') {\n starts.set(marker.key, commentNode)\n } else {\n const startNode = starts.get(marker.key)\n if (startNode) {\n ranges.set(marker.key, { end: commentNode, start: startNode })\n }\n }\n }\n }\n for (const child of Array.from((node.childNodes ?? []) as unknown as Iterable<Node>)) {\n visit(child)\n }\n }\n\n for (const root of roots) {\n visit(root)\n }\n\n return ranges\n}\n\nconst preserveProjectionSlotContents = (start: Comment, end: Comment, nodes: Node[]) => {\n const currentNodes = getBoundaryChildren(start, end)\n const currentRanges = collectProjectionSlotRanges(currentNodes)\n const nextRanges = collectProjectionSlotRanges(nodes)\n\n for (const [key, nextRange] of nextRanges) {\n const currentRange = currentRanges.get(key)\n if (!currentRange) {\n continue\n }\n\n let cursor = currentRange.start.nextSibling\n while (cursor && cursor !== currentRange.end) {\n const nextSibling = cursor.nextSibling\n nextRange.end.parentNode?.insertBefore(cursor, nextRange.end)\n cursor = nextSibling\n }\n }\n}\n\nconst replaceBoundaryContents = (\n start: Comment,\n end: Comment,\n nodes: Node[],\n options?: {\n preserveProjectionSlots?: boolean\n },\n) => {\n if (options?.preserveProjectionSlots ?? true) {\n preserveProjectionSlotContents(start, end, nodes)\n }\n let cursor = start.nextSibling\n while (cursor && cursor !== end) {\n const next = cursor.nextSibling\n cursor.remove()\n cursor = next\n }\n for (const node of nodes) {\n end.parentNode?.insertBefore(node, end)\n }\n}\n\ninterface FocusSnapshot {\n path: number[]\n selectionDirection?: 'backward' | 'forward' | 'none' | null\n selectionEnd?: number | null\n selectionStart?: number | null\n}\n\ninterface PendingFocusRestore {\n snapshot: FocusSnapshot\n}\n\nconst getBoundaryChildren = (start: Comment, end: Comment) => {\n const nodes: Node[] = []\n let cursor = start.nextSibling\n while (cursor && cursor !== end) {\n nodes.push(cursor)\n cursor = cursor.nextSibling\n }\n return nodes\n}\n\nconst getNodePath = (root: Node, target: Node): number[] | null => {\n if (root === target) {\n return []\n }\n\n const path: number[] = []\n let cursor: Node | null = target\n while (cursor && cursor !== root) {\n const parent: Node | null = cursor.parentNode\n if (!parent) {\n return null\n }\n const index = Array.prototype.indexOf.call(parent.childNodes, cursor)\n if (index < 0) {\n return null\n }\n path.unshift(index)\n cursor = parent\n }\n\n return cursor === root ? path : null\n}\n\nconst getNodeByPath = (root: Node, path: number[]) => {\n let cursor: Node | null = root\n for (const index of path) {\n cursor = cursor?.childNodes.item(index) ?? null\n if (!cursor) {\n return null\n }\n }\n return cursor\n}\n\nconst getElementPath = (root: Element, target: Element): number[] | null => {\n if (root === target) {\n return []\n }\n\n const path: number[] = []\n let cursor: Element | null = target\n while (cursor && cursor !== root) {\n const parent: HTMLElement | null = cursor.parentElement\n if (!parent) {\n return null\n }\n const index = Array.prototype.indexOf.call(parent.children, cursor)\n if (index < 0) {\n return null\n }\n path.unshift(index)\n cursor = parent\n }\n\n return cursor === root ? path : null\n}\n\nconst getElementByPath = (root: Element, path: number[]) => {\n let cursor: Element | null = root\n for (const index of path) {\n cursor = (cursor?.children.item(index) as Element | null) ?? null\n if (!cursor) {\n return null\n }\n }\n return cursor\n}\n\nconst captureBoundaryFocus = (\n doc: Document,\n start: Comment,\n end: Comment,\n): FocusSnapshot | null => {\n const activeElement = doc.activeElement\n if (!isHTMLElementNode(activeElement)) {\n return null\n }\n\n const topLevelNodes = getBoundaryChildren(start, end)\n for (let i = 0; i < topLevelNodes.length; i++) {\n const candidate = topLevelNodes[i]\n if (\n candidate !== activeElement &&\n (!isElementNode(candidate) || !candidate.contains(activeElement))\n ) {\n continue\n }\n\n const innerPath = getNodePath(candidate, activeElement)\n if (!innerPath) {\n continue\n }\n\n return {\n path: [i, ...innerPath],\n selectionDirection: isTextEntryElement(activeElement)\n ? activeElement.selectionDirection\n : null,\n selectionEnd: isTextEntryElement(activeElement) ? activeElement.selectionEnd : null,\n selectionStart: isTextEntryElement(activeElement) ? activeElement.selectionStart : null,\n }\n }\n\n return null\n}\n\nconst restoreBoundaryFocus = (\n doc: Document,\n start: Comment,\n end: Comment,\n snapshot: FocusSnapshot | null,\n) => {\n if (!snapshot) {\n return\n }\n\n const [topLevelIndex, ...innerPath] = snapshot.path\n const root = getBoundaryChildren(start, end)[topLevelIndex]\n if (!root) {\n return\n }\n\n const nextActive = innerPath.length > 0 ? getNodeByPath(root, innerPath) : root\n if (!isHTMLElementNode(nextActive)) {\n return\n }\n\n restoreFocusTarget(doc, nextActive, snapshot)\n}\n\nconst restoreFocusTarget = (doc: Document, nextActive: HTMLElement, snapshot: FocusSnapshot) => {\n const restore = () => {\n if (!nextActive.isConnected) {\n return false\n }\n nextActive.focus({ preventScroll: true })\n if (\n isTextEntryElement(nextActive) &&\n snapshot.selectionStart !== null &&\n snapshot.selectionStart !== undefined\n ) {\n nextActive.setSelectionRange(\n snapshot.selectionStart,\n snapshot.selectionEnd ?? snapshot.selectionStart,\n snapshot.selectionDirection ?? undefined,\n )\n }\n return doc.activeElement === nextActive\n }\n\n if (restore()) {\n return\n }\n\n const win = doc.defaultView\n if (!win) {\n return\n }\n\n let remainingAttempts = 3\n const retry = () => {\n if (remainingAttempts <= 0) {\n return\n }\n remainingAttempts--\n const run = () => {\n if (restore()) {\n return\n }\n retry()\n }\n\n if (typeof win.requestAnimationFrame === 'function') {\n win.requestAnimationFrame(() => run())\n return\n }\n win.setTimeout(run, 16)\n }\n\n retry()\n}\n\nconst captureDocumentFocus = (\n doc: Document,\n focusSource?: EventTarget | null,\n): FocusSnapshot | null => {\n const candidate = isHTMLElementNode(focusSource)\n ? focusSource\n : isHTMLElementNode(doc.activeElement)\n ? doc.activeElement\n : null\n if (!candidate) {\n return null\n }\n\n const path = getElementPath(doc.body, candidate)\n if (!path) {\n return null\n }\n\n return {\n path,\n selectionDirection: isTextEntryElement(candidate) ? candidate.selectionDirection : null,\n selectionEnd: isTextEntryElement(candidate) ? candidate.selectionEnd : null,\n selectionStart: isTextEntryElement(candidate) ? candidate.selectionStart : null,\n }\n}\n\nconst capturePendingFocusRestore = (\n container: RuntimeContainer,\n focusSource?: EventTarget | null,\n): PendingFocusRestore | null => {\n if (!container.doc) {\n return null\n }\n\n const snapshot = captureDocumentFocus(container.doc, focusSource)\n if (!snapshot) {\n return null\n }\n return {\n snapshot,\n }\n}\n\nconst restorePendingFocus = (container: RuntimeContainer, pending: PendingFocusRestore | null) => {\n if (!pending || !container.doc) {\n return\n }\n\n const nextActive = getElementByPath(container.doc.body, pending.snapshot.path)\n if (!isHTMLElementNode(nextActive)) {\n return\n }\n\n restoreFocusTarget(container.doc, nextActive, pending.snapshot)\n}\n\nconst htmlToNodes = (doc: Document, html: string) => {\n const template = doc.createElement('template')\n template.innerHTML = html\n return Array.from(template.content.childNodes)\n}\n\nconst EVENT_PROP_REGEX = /^on([A-Z].+)\\$$/\nconst DANGEROUSLY_SET_INNER_HTML_PROP = 'dangerouslySetInnerHTML'\n\nconst resolveDangerouslySetInnerHTML = (value: unknown) =>\n value === false || value === undefined || value === null ? null : String(value)\n\nconst toEventName = (propName: string) => {\n const matched = propName.match(EVENT_PROP_REGEX)\n if (!matched) {\n return null\n }\n const [first, ...rest] = matched[1]\n return `${first.toLowerCase()}${rest.join('')}`\n}\n\nconst TEXT_ESCAPE_REGEX = /[&<>]/\nconst ATTR_ESCAPE_REGEX = /[&<>'\"]/\n\nconst escapeString = (value: string, mode: 'text' | 'attr') => {\n const escapePattern = mode === 'attr' ? ATTR_ESCAPE_REGEX : TEXT_ESCAPE_REGEX\n const firstMatch = value.search(escapePattern)\n if (firstMatch < 0) {\n return value\n }\n\n let output = ''\n let lastIndex = 0\n for (let index = firstMatch; index < value.length; index += 1) {\n let escaped: string | null = null\n switch (value.charCodeAt(index)) {\n case 34:\n escaped = mode === 'attr' ? '"' : null\n break\n case 38:\n escaped = '&'\n break\n case 39:\n escaped = mode === 'attr' ? ''' : null\n break\n case 60:\n escaped = '<'\n break\n case 62:\n escaped = '>'\n break\n }\n if (!escaped) {\n continue\n }\n output += value.slice(lastIndex, index)\n output += escaped\n lastIndex = index + 1\n }\n return output + value.slice(lastIndex)\n}\n\nconst escapeText = (value: string) => escapeString(value, 'text')\n\nconst escapeAttr = (value: string) => escapeString(value, 'attr')\n\nconst renderSSRAttr = (name: string, value: unknown) => {\n if (value === false || value === undefined || value === null) {\n return ''\n }\n if (value === true) {\n return ` ${name}`\n }\n return ` ${name}=\"${escapeAttr(String(value))}\"`\n}\n\nconst renderStringArray = (values: readonly (JSX.Element | JSX.Element[])[]) => {\n let output = ''\n for (let index = 0; index < values.length; index += 1) {\n output += renderStringNode(values[index] as JSX.Element | JSX.Element[])\n }\n return output\n}\n\nconst renderSSRTemplateValue = (value: unknown): string => {\n if (value === false || value === null || value === undefined) {\n return ''\n }\n if (Array.isArray(value)) {\n return renderStringArray(value as readonly (JSX.Element | JSX.Element[])[])\n }\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return escapeText(String(value))\n }\n if (isSSRTemplate(value)) {\n return renderSSRTemplateNode(value)\n }\n if (isProjectionSlot(value)) {\n return renderProjectionSlotToString(value)\n }\n if (isRouteSlot(value)) {\n const routeElement = resolveRouteSlot(getCurrentContainer(), value)\n return routeElement ? renderStringNode(routeElement as JSX.Element) : ''\n }\n return renderStringNode(value as JSX.Element)\n}\n\nconst renderSSRTemplateNode = (template: JSX.SSRTemplate) => {\n let output = template.strings[0] ?? ''\n for (let index = 0; index < template.values.length; index += 1) {\n const value = template.values[index]\n output += isSSRAttrValue(value)\n ? renderSSRAttr(value.name, value.value)\n : renderSSRTemplateValue(value)\n output += template.strings[index + 1] ?? ''\n }\n return output\n}\n\nconst resolveRenderable = (value: JSX.Element): JSX.Element => {\n let current = value\n while (typeof current === 'function' && !getLazyMeta(current) && !getComponentMeta(current)) {\n current = current()\n }\n return current\n}\n\nconst nextComponentPosition = (container: RuntimeContainer) => {\n const frame = getCurrentFrame()\n if (!frame) {\n return {\n childIndex: container.rootChildCursor++,\n parentId: ROOT_COMPONENT_ID,\n }\n }\n return {\n childIndex: frame.childCursor++,\n parentId: frame.component.id,\n }\n}\n\nconst registerEventBinding = (\n container: RuntimeContainer,\n descriptor: EventDescriptor | LazyMeta,\n): string => {\n const scopeId = registerScope(container, descriptor.captures())\n return `${descriptor.symbol}:${scopeId}`\n}\n\nexport const bindRuntimeEvent = (element: Element, eventName: string, value: unknown): boolean => {\n const descriptor = getEventMeta(value)\n if (!descriptor) {\n return false\n }\n\n const container = getCurrentContainer()\n if (!container) {\n return false\n }\n\n element.setAttribute('data-eid', `e${container.nextElementId++}`)\n element.setAttribute(`data-e-on${eventName}`, registerEventBinding(container, descriptor))\n return true\n}\n\nconst renderProjectionSlotToString = (slot: ProjectionSlotValue) => {\n const frame = getCurrentFrame()\n const start = createProjectionSlotMarker(slot.componentId, slot.name, slot.occurrence, 'start')\n const end = createProjectionSlotMarker(slot.componentId, slot.name, slot.occurrence, 'end')\n if (frame?.component.id === slot.componentId && frame.projectionState.reuseExistingDom) {\n return `<!--${start}--><!--${end}-->`\n }\n return `<!--${start}-->${renderStringNode(slot.source as JSX.Element)}<!--${end}-->`\n}\n\nconst renderProjectionSlotToNodes = (slot: ProjectionSlotValue, container: RuntimeContainer) => {\n if (!container.doc) {\n throw new Error('Client rendering requires a document.')\n }\n const frame = getCurrentFrame()\n\n const start = container.doc.createComment(\n createProjectionSlotMarker(slot.componentId, slot.name, slot.occurrence, 'start'),\n )\n const end = container.doc.createComment(\n createProjectionSlotMarker(slot.componentId, slot.name, slot.occurrence, 'end'),\n )\n if (frame?.component.id === slot.componentId && frame.projectionState.reuseExistingDom) {\n return [start, end]\n }\n return [start, ...renderClientInsertable(slot.source, container), end]\n}\n\nconst renderStringNode = (inputElementLike: JSX.Element | JSX.Element[]): string => {\n if (Array.isArray(inputElementLike)) {\n return renderStringArray(inputElementLike)\n }\n\n const resolved = resolveRenderable(inputElementLike as JSX.Element)\n if (resolved === false || resolved === null || resolved === undefined) {\n return ''\n }\n if (Array.isArray(resolved)) {\n return renderStringNode(resolved)\n }\n if (\n typeof resolved === 'string' ||\n typeof resolved === 'number' ||\n typeof resolved === 'boolean'\n ) {\n return escapeText(String(resolved))\n }\n if (isSSRTemplate(resolved)) {\n return renderSSRTemplateNode(resolved)\n }\n if (isProjectionSlot(resolved)) {\n return renderProjectionSlotToString(resolved)\n }\n if (isRouteSlot(resolved)) {\n const routeElement = resolveRouteSlot(getCurrentContainer(), resolved)\n return routeElement ? renderStringNode(routeElement as JSX.Element) : ''\n }\n if (!isRenderObject(resolved)) {\n return ''\n }\n\n if (isSuspenseType(resolved.type)) {\n return renderSuspenseComponentToString(resolved.props as SuspenseProps)\n }\n\n if (typeof resolved.type === 'function') {\n const container = getCurrentContainer()\n const componentFn = resolved.type as Component\n const meta = getComponentMeta(componentFn)\n if (!meta || !container) {\n return renderStringNode(componentFn(resolved.props))\n }\n\n const evaluatedProps = evaluateProps(resolved.props)\n const position = nextComponentPosition(container)\n const componentId = createComponentId(container, position.parentId, position.childIndex)\n const component = getOrCreateComponentState(\n container,\n componentId,\n meta.symbol,\n position.parentId,\n )\n component.scopeId = registerScope(container, meta.captures())\n component.props = evaluatedProps\n component.projectionSlots = meta.projectionSlots ?? null\n const frame = createFrame(container, component, 'ssr')\n clearComponentSubscriptions(container, component.id)\n const renderProps = createRenderProps(componentId, meta, evaluatedProps)\n\n const body = pushFrame(frame, () => renderStringNode(componentFn(renderProps)))\n pruneComponentVisibles(container, component, frame.visibleCursor)\n pruneComponentWatches(container, component, frame.watchCursor)\n return `<!--ec:c:${componentId}:start-->${body}<!--ec:c:${componentId}:end-->`\n }\n\n const attrParts: string[] = []\n const container = getCurrentContainer()\n let hasInnerHTML = false\n let innerHTML: string | null = null\n\n for (const name in resolved.props) {\n if (!Object.hasOwn(resolved.props, name)) {\n continue\n }\n if (name === 'children') {\n continue\n }\n\n const eventName = toEventName(name)\n const value = resolved.props[name]\n\n if (eventName) {\n const eventMeta = getEventMeta(value)\n if (!eventMeta || !container) {\n continue\n }\n attrParts.push(`data-eid=\"e${container.nextElementId++}\"`)\n attrParts.push(\n `data-e-on${eventName}=\"${escapeAttr(registerEventBinding(container, eventMeta))}\"`,\n )\n continue\n }\n\n if (name === 'ref') {\n const signalId = getRefSignalId(value)\n if (signalId) {\n attrParts.push(`${REF_SIGNAL_ATTR}=\"${escapeAttr(signalId)}\"`)\n }\n continue\n }\n\n if (name === DANGEROUSLY_SET_INNER_HTML_PROP) {\n hasInnerHTML = true\n innerHTML = resolveDangerouslySetInnerHTML(value)\n continue\n }\n\n if (value === false || value === undefined || value === null) {\n continue\n }\n\n if (resolved.type === 'body' && name === 'data-e-resume') {\n continue\n }\n\n if (value === true) {\n attrParts.push(name)\n continue\n }\n\n attrParts.push(`${name}=\"${escapeAttr(String(value))}\"`)\n }\n\n if (resolved.type === 'body' && container) {\n attrParts.push('data-e-resume=\"paused\"')\n }\n\n let childrenText = innerHTML ?? ''\n if (!hasInnerHTML) {\n const children = resolved.props.children\n if (Array.isArray(children)) {\n for (const child of children) {\n childrenText += renderStringNode(child)\n }\n } else {\n childrenText += renderStringNode(children as JSX.Element)\n }\n }\n\n if (resolved.type === FRAGMENT) {\n return childrenText\n }\n\n return `<${resolved.type}${attrParts.length > 0 ? ` ${attrParts.join(' ')}` : ''}>${childrenText}</${\n resolved.type\n }>`\n}\n\nconst createElementNode = (doc: Document, tagName: string) => doc.createElement(tagName)\n\nconst renderComponentToNodes = (\n componentFn: Component,\n props: Record<string, unknown>,\n container: RuntimeContainer,\n mode: RenderFrame['mode'],\n): Node[] => {\n if (!container.doc) {\n throw new Error('Client rendering requires a document.')\n }\n const meta = getComponentMeta(componentFn)\n if (!meta) {\n return renderClientNodes(componentFn(props), container)\n }\n\n const position = nextComponentPosition(container)\n const componentId = createComponentId(container, position.parentId, position.childIndex)\n const existing = container.components.get(componentId)\n const symbolChanged = !!existing && existing.symbol !== meta.symbol\n const component = getOrCreateComponentState(\n container,\n componentId,\n meta.symbol,\n position.parentId,\n )\n component.active = mode === 'client'\n if (!existing || symbolChanged) {\n resetComponentForSymbolChange(container, component, meta)\n }\n component.props = props\n component.projectionSlots = meta.projectionSlots ?? null\n const frame = createFrame(container, component, mode)\n clearComponentSubscriptions(container, componentId)\n const oldDescendants = collectDescendantIds(container, componentId)\n const start = container.doc.createComment(`ec:c:${componentId}:start`)\n const end = container.doc.createComment(`ec:c:${componentId}:end`)\n component.start = start\n component.end = end\n const renderProps = createRenderProps(componentId, meta, props)\n const rendered = pushFrame(frame, () => toMountedNodes(componentFn(renderProps), container))\n pruneComponentVisibles(container, component, frame.visibleCursor)\n pruneComponentWatches(container, component, frame.watchCursor)\n pruneRemovedComponents(container, componentId, frame.visitedDescendants)\n\n for (const descendantId of oldDescendants) {\n if (frame.visitedDescendants.has(descendantId)) {\n continue\n }\n clearComponentSubscriptions(container, descendantId)\n }\n\n const currentFrame = getCurrentFrame()\n if (currentFrame) {\n currentFrame.visitedDescendants.add(componentId)\n for (const descendantId of frame.visitedDescendants) {\n currentFrame.visitedDescendants.add(descendantId)\n }\n }\n\n scheduleMountCallbacks(container, component, frame.mountCallbacks)\n scheduleVisibleCallbacksCheck(container)\n\n return [start, ...rendered, end]\n}\n\nconst applyElementProp = (\n element: HTMLElement,\n name: string,\n value: unknown,\n container: RuntimeContainer,\n) => {\n const eventName = toEventName(name)\n if (eventName) {\n const eventMeta = getEventMeta(value)\n if (!eventMeta) {\n return\n }\n element.setAttribute('data-eid', `e${container.nextElementId++}`)\n element.setAttribute(`data-e-on${eventName}`, registerEventBinding(container, eventMeta))\n return\n }\n\n if (name === 'ref') {\n assignRuntimeRef(value, element, container)\n return\n }\n\n if (name === DANGEROUSLY_SET_INNER_HTML_PROP) {\n const html = resolveDangerouslySetInnerHTML(value)\n if (html !== null) {\n element.innerHTML = html\n }\n return\n }\n\n if (value === false || value === undefined || value === null) {\n return\n }\n\n if (name === 'class') {\n element.className = String(value)\n return\n }\n\n if (name === 'style' && isPlainObject(value)) {\n element.setAttribute(\n 'style',\n Object.entries(value)\n .map(([styleName, styleValue]) => `${styleName}: ${styleValue}`)\n .join('; '),\n )\n return\n }\n\n if (name === 'value' && 'value' in element) {\n ;(element as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement).value = String(value)\n }\n if (name === 'checked' && isHTMLInputElementNode(element)) {\n element.checked = Boolean(value)\n }\n\n if (value === true) {\n element.setAttribute(name, '')\n return\n }\n\n element.setAttribute(name, String(value))\n}\n\nexport const renderClientNodes = (\n inputElementLike: JSX.Element | JSX.Element[],\n container: RuntimeContainer,\n): Node[] => {\n if (!container.doc) {\n throw new Error('Client rendering requires a document.')\n }\n if (Array.isArray(inputElementLike)) {\n return inputElementLike.flatMap((entry) => renderClientNodes(entry, container))\n }\n\n const resolved = resolveRenderable(inputElementLike as JSX.Element)\n if (resolved === false || resolved === null || resolved === undefined) {\n return []\n }\n if (Array.isArray(resolved)) {\n return renderClientNodes(resolved, container)\n }\n if (\n typeof resolved === 'string' ||\n typeof resolved === 'number' ||\n typeof resolved === 'boolean'\n ) {\n return [container.doc.createTextNode(String(resolved))]\n }\n if (typeof Node !== 'undefined' && resolved instanceof Node) {\n return [resolved]\n }\n if (isProjectionSlot(resolved)) {\n return renderProjectionSlotToNodes(resolved, container)\n }\n if (isRouteSlot(resolved)) {\n const routeElement = resolveRouteSlot(container, resolved)\n return routeElement ? renderClientNodes(routeElement as JSX.Element, container) : []\n }\n if (!isRenderObject(resolved)) {\n return []\n }\n\n if (isSuspenseType(resolved.type)) {\n return renderSuspenseComponentToNodes(resolved.props as SuspenseProps, container, 'client')\n }\n\n if (typeof resolved.type === 'function') {\n const evaluatedProps = evaluateProps(resolved.props)\n const componentFn = resolved.type as Component\n if (getComponentMeta(resolved.type)) {\n return withoutTrackedEffect(() =>\n renderComponentToNodes(componentFn, evaluatedProps, container, 'client'),\n )\n }\n return renderComponentToNodes(componentFn, evaluatedProps, container, 'client')\n }\n\n if (resolved.type === FRAGMENT) {\n const children = resolved.props.children\n return Array.isArray(children)\n ? children.flatMap((child: JSX.Element) => renderClientNodes(child, container))\n : renderClientNodes(children as JSX.Element, container)\n }\n\n const element = createElementNode(container.doc, resolved.type)\n let hasInnerHTML = false\n for (const [name, descriptor] of Object.entries(\n Object.getOwnPropertyDescriptors(resolved.props),\n ) as [string, PropertyDescriptor][]) {\n if (name === 'children') {\n continue\n }\n const value = descriptor.get ? descriptor.get.call(resolved.props) : descriptor.value\n if (resolved.type === 'body' && name === 'data-e-resume') {\n continue\n }\n if (name === DANGEROUSLY_SET_INNER_HTML_PROP) {\n hasInnerHTML = true\n }\n applyElementProp(element, name, value, container)\n }\n\n if (hasInnerHTML) {\n return [element]\n }\n\n const children = resolved.props.children\n const childNodes = Array.isArray(children)\n ? children.flatMap((child: JSX.Element) => renderClientNodes(child, container))\n : renderClientNodes(children as JSX.Element, container)\n for (const child of childNodes) {\n element.appendChild(child)\n }\n\n return [element]\n}\n\nconst scanComponentBoundaries = (\n root: ParentNode & { ownerDocument: Document },\n): Map<string, { end?: Comment; start?: Comment }> => {\n const walker = root.ownerDocument.createTreeWalker(root, NodeFilter.SHOW_COMMENT)\n const boundaries = new Map<string, { end?: Comment; start?: Comment }>()\n\n while (walker.nextNode()) {\n const node = walker.currentNode\n if (!(node instanceof Comment)) {\n continue\n }\n const matched = node.data.match(/^ec:c:(.+):(start|end)$/)\n if (!matched) {\n continue\n }\n const [, id, edge] = matched\n const boundary = boundaries.get(id) ?? {}\n if (edge === 'start') {\n boundary.start = node\n } else {\n boundary.end = node\n }\n boundaries.set(id, boundary)\n }\n\n return boundaries\n}\n\nconst loadSymbol = async (\n container: RuntimeContainer,\n symbolId: string,\n): Promise<RuntimeSymbolModule> => {\n const resolved = getResolvedRuntimeSymbols(container).get(symbolId)\n if (resolved) {\n return resolved\n }\n const existing = container.imports.get(symbolId)\n if (existing) {\n const module = await existing\n getResolvedRuntimeSymbols(container).set(symbolId, module)\n return module\n }\n\n const url = container.symbols.get(symbolId)\n if (!url) {\n throw new Error(`Missing symbol URL for ${symbolId}.`)\n }\n\n const loaded = (import(/* @vite-ignore */ url) as Promise<RuntimeSymbolModule>).then((module) => {\n getResolvedRuntimeSymbols(container).set(symbolId, module)\n return module\n })\n container.imports.set(symbolId, loaded)\n return loaded\n}\n\nconst toMountedNodes = (value: unknown, container: RuntimeContainer): Node[] => {\n if (!container.doc) {\n throw new Error('Client rendering requires a document.')\n }\n\n let resolved = value\n while (typeof resolved === 'function') {\n resolved = resolved()\n }\n\n if (Array.isArray(resolved)) {\n return resolved.flatMap((entry) => toMountedNodes(entry, container))\n }\n if (resolved === null || resolved === undefined || resolved === false) {\n return [container.doc.createComment('eclipsa-empty')]\n }\n if (resolved instanceof Node) {\n return [resolved]\n }\n if (\n typeof resolved === 'string' ||\n typeof resolved === 'number' ||\n typeof resolved === 'boolean'\n ) {\n return [container.doc.createTextNode(String(resolved))]\n }\n return renderClientNodes(resolved as JSX.Element | JSX.Element[], container)\n}\n\nexport const getRuntimeContainer = () => getCurrentContainer()\n\nexport const serializeContainerValue = (\n container: RuntimeContainer | null,\n value: unknown,\n): SerializedValue => (container ? serializeRuntimeValue(container, value) : serializeValue(value))\n\nexport const deserializeContainerValue = (\n container: RuntimeContainer | null,\n value: SerializedValue,\n): unknown => (container ? deserializeRuntimeValue(container, value) : deserializeValue(value))\n\nexport const renderClientInsertable = (\n value: unknown,\n container: RuntimeContainer | null = getCurrentContainer(),\n): Node[] => {\n const doc = container?.doc ?? (typeof document !== 'undefined' ? document : null)\n if (!doc) {\n return []\n }\n if (Array.isArray(value)) {\n return value.flatMap((entry) => renderClientInsertable(entry, container))\n }\n\n let resolved = value\n while (typeof resolved === 'function') {\n resolved = resolved()\n }\n\n if (resolved === null || resolved === undefined || resolved === false) {\n return [doc.createComment('eclipsa-empty')]\n }\n if (resolved instanceof Node) {\n return [resolved]\n }\n if (\n typeof resolved === 'string' ||\n typeof resolved === 'number' ||\n typeof resolved === 'boolean'\n ) {\n return [doc.createTextNode(String(resolved))]\n }\n if (isProjectionSlot(resolved)) {\n return container\n ? renderProjectionSlotToNodes(resolved, container)\n : renderClientInsertable(resolved.source, container)\n }\n if (isRouteSlot(resolved)) {\n const routeElement = resolveRouteSlot(container, resolved)\n return routeElement\n ? renderClientInsertable(routeElement, container)\n : [doc.createComment('eclipsa-empty')]\n }\n if (container) {\n return renderClientNodes(resolved as JSX.Element | JSX.Element[], container)\n }\n return [doc.createTextNode(String(resolved))]\n}\n\nconst resetContainerForRouteRender = (container: RuntimeContainer) => {\n for (const component of container.components.values()) {\n disposeComponentMountCleanups(component)\n pruneComponentVisibles(container, component, 0)\n pruneComponentWatches(container, component, 0)\n }\n\n for (const watch of container.watches.values()) {\n clearEffectSignals(watch.effect)\n }\n\n container.components.clear()\n container.dirty.clear()\n container.nextElementId = 0\n container.nextScopeId = 0\n container.nextSignalId = 0\n container.rootChildCursor = 0\n container.scopes.clear()\n container.visibles.clear()\n container.watches.clear()\n\n for (const [id, record] of [...container.signals.entries()]) {\n for (const effect of [...record.effects]) {\n clearEffectSignals(effect)\n }\n record.effects.clear()\n record.subscribers.clear()\n if (!isRouterSignalId(id)) {\n container.signals.delete(id)\n }\n }\n}\n\nconst resolveRouteComponentSymbol = (Page: RouteRenderer, fallback: string) =>\n getComponentMeta(Page)?.symbol ?? fallback\n\nconst isRouteSlot = (value: unknown): value is RouteSlotCarrier =>\n isPlainObject(value) && value.__eclipsa_type === ROUTE_SLOT_TYPE\n\nconst createRouteSlot = (route: LoadedRoute, startLayoutIndex: number): RouteSlotCarrier => {\n const slot: RouteSlotCarrier = {\n __eclipsa_type: ROUTE_SLOT_TYPE,\n pathname: route.pathname,\n startLayoutIndex,\n }\n Object.defineProperty(slot, ROUTE_SLOT_ROUTE_KEY, {\n configurable: true,\n enumerable: false,\n value: route,\n writable: true,\n })\n return slot\n}\n\nconst resolveRouteSlot = (container: RuntimeContainer | null, slot: RouteSlotCarrier) => {\n const route =\n slot[ROUTE_SLOT_ROUTE_KEY] ??\n container?.router?.loadedRoutes.get(routeCacheKey(slot.pathname, 'page'))\n if (!route) {\n return null\n }\n return createRouteElement(route, slot.startLayoutIndex)\n}\n\nconst createRouteElement = (route: LoadedRoute, startLayoutIndex = 0) => {\n const createRouteProps = (props: Record<string, unknown>) => {\n const nextProps = {\n ...props,\n }\n Object.defineProperty(nextProps, ROUTE_PARAMS_PROP, {\n configurable: true,\n enumerable: false,\n value: route.params,\n writable: true,\n })\n return nextProps\n }\n\n if (startLayoutIndex >= route.layouts.length) {\n return jsxDEV(route.page.renderer as unknown as JSX.Type, createRouteProps({}), null, false, {})\n }\n\n let children: unknown = null\n for (let index = route.layouts.length - 1; index >= startLayoutIndex; index -= 1) {\n const layout = route.layouts[index]!\n children = jsxDEV(\n layout.renderer as unknown as JSX.Type,\n createRouteProps({\n children: createRouteSlot(route, index + 1),\n }),\n null,\n false,\n {},\n )\n }\n return children\n}\n\nconst trackSuspenseBoundaryPromise = (\n container: RuntimeContainer,\n componentId: string,\n promise: Promise<unknown>,\n) => {\n const component = container.components.get(componentId)\n if (!component) {\n return\n }\n component.suspensePromise = promise\n promise.finally(() => {\n const current = container.components.get(componentId)\n if (!current || current.suspensePromise !== promise) {\n return\n }\n current.suspensePromise = null\n current.active = false\n container.dirty.add(componentId)\n void flushDirtyComponents(container)\n })\n}\n\nconst renderSuspenseContentToString = (\n props: SuspenseProps,\n container: RuntimeContainer,\n componentId: string,\n) => {\n try {\n const rendered =\n typeof props.children === 'function' ? props.children() : (props.children ?? null)\n return renderStringNode(rendered as JSX.Element | JSX.Element[])\n } catch (error) {\n if (!isPendingSignalError(error)) {\n throw error\n }\n container.pendingSuspensePromises.add(error.promise)\n const component = container.components.get(componentId)\n if (component) {\n component.suspensePromise = error.promise\n }\n return renderStringNode((props.fallback ?? null) as JSX.Element | JSX.Element[])\n }\n}\n\nexport const collectPendingSuspenseBoundaryIds = (container: RuntimeContainer) =>\n [...container.components.values()]\n .filter(\n (component) => component.symbol === SUSPENSE_COMPONENT_SYMBOL && !!component.suspensePromise,\n )\n .map((component) => component.id)\n .sort((left, right) => left.split('.').length - right.split('.').length)\n\nexport const renderResolvedSuspenseBoundaryToString = (\n container: RuntimeContainer,\n componentId: string,\n) => {\n const component = container.components.get(componentId)\n if (!component || component.symbol !== SUSPENSE_COMPONENT_SYMBOL) {\n throw new Error(`Missing suspense boundary ${componentId}.`)\n }\n\n pruneRemovedComponents(container, componentId, new Set())\n clearComponentSubscriptions(container, component.id)\n component.suspensePromise = null\n const frame = createFrame(container, component, 'ssr')\n return pushContainer(container, () =>\n pushFrame(frame, () =>\n renderSuspenseContentToString(component.props as SuspenseProps, container, componentId),\n ),\n )\n}\n\nconst renderSuspenseContentToNodes = (\n props: SuspenseProps,\n container: RuntimeContainer,\n componentId: string,\n) => {\n try {\n const rendered =\n typeof props.children === 'function' ? props.children() : (props.children ?? null)\n return toMountedNodes(rendered as JSX.Element | JSX.Element[], container)\n } catch (error) {\n if (!isPendingSignalError(error)) {\n throw error\n }\n trackSuspenseBoundaryPromise(container, componentId, error.promise)\n const fallback = props.fallback ?? null\n return toMountedNodes(fallback as JSX.Element | JSX.Element[], container)\n }\n}\n\nconst renderSuspenseComponentToString = (props: SuspenseProps) => {\n const container = getCurrentContainer()\n if (!container) {\n return renderStringNode((props.children ?? null) as JSX.Element | JSX.Element[])\n }\n const parentFrame = getCurrentFrame()\n if (!parentFrame) {\n return renderSuspenseContentToString(props, container, ROOT_COMPONENT_ID)\n }\n\n const position = nextComponentPosition(container)\n const componentId = createComponentId(container, position.parentId, position.childIndex)\n const component = getOrCreateComponentState(\n container,\n componentId,\n SUSPENSE_COMPONENT_SYMBOL,\n position.parentId,\n )\n component.props = {\n children: props.children,\n fallback: props.fallback,\n }\n component.projectionSlots = null\n const frame = createFrame(container, component, 'ssr')\n clearComponentSubscriptions(container, component.id)\n const body = pushFrame(frame, () =>\n renderSuspenseContentToString(component.props as SuspenseProps, container, componentId),\n )\n pruneComponentVisibles(container, component, frame.visibleCursor)\n pruneComponentWatches(container, component, frame.watchCursor)\n return `<!--ec:c:${componentId}:start-->${body}<!--ec:c:${componentId}:end-->`\n}\n\nconst renderSuspenseComponentToNodes = (\n props: SuspenseProps,\n container: RuntimeContainer,\n mode: RenderFrame['mode'],\n) => {\n const parentFrame = getCurrentFrame()\n if (!parentFrame) {\n return renderSuspenseContentToNodes(props, container, ROOT_COMPONENT_ID)\n }\n\n const position = nextComponentPosition(container)\n const componentId = createComponentId(container, position.parentId, position.childIndex)\n const component = getOrCreateComponentState(\n container,\n componentId,\n SUSPENSE_COMPONENT_SYMBOL,\n position.parentId,\n )\n component.props = {\n children: props.children,\n fallback: props.fallback,\n }\n component.projectionSlots = null\n component.active = true\n component.start = undefined\n component.end = undefined\n\n const frame = createFrame(container, component, mode)\n clearComponentSubscriptions(container, component.id)\n const bodyNodes = pushFrame(frame, () =>\n renderSuspenseContentToNodes(component.props as SuspenseProps, container, componentId),\n )\n pruneComponentVisibles(container, component, frame.visibleCursor)\n pruneComponentWatches(container, component, frame.watchCursor)\n parentFrame.visitedDescendants.add(componentId)\n scheduleMountCallbacks(container, component, frame.mountCallbacks)\n scheduleVisibleCallbacksCheck(container)\n\n if (!container.doc) {\n return bodyNodes\n }\n const start = container.doc.createComment(`ec:c:${componentId}:start`)\n const end = container.doc.createComment(`ec:c:${componentId}:end`)\n component.start = start\n component.end = end\n return [start, ...bodyNodes, end]\n}\n\nconst renderRouteIntoRoot = (\n container: RuntimeContainer,\n Page: RouteRenderer,\n routeKey: string,\n) => {\n if (!container.doc || !container.rootElement) {\n throw new Error('Client route rendering requires a document root.')\n }\n\n resetContainerForRouteRender(container)\n const rootComponent = getOrCreateComponentState(\n container,\n 'c0',\n resolveRouteComponentSymbol(Page, routeKey),\n ROOT_COMPONENT_ID,\n )\n rootComponent.active = true\n rootComponent.didMount = false\n rootComponent.end = undefined\n rootComponent.mountCleanupSlots = []\n rootComponent.props = {}\n rootComponent.scopeId = registerScope(container, getComponentMeta(Page)?.captures() ?? [])\n rootComponent.signalIds = []\n rootComponent.start = undefined\n rootComponent.watchCount = 0\n rootComponent.visibleCount = 0\n\n clearComponentSubscriptions(container, rootComponent.id)\n const frame = createFrame(container, rootComponent, 'client')\n const nodes = pushContainer(container, () =>\n pushFrame(frame, () => {\n const rendered = Page({})\n return toMountedNodes(rendered, container)\n }),\n )\n pruneComponentVisibles(container, rootComponent, frame.visibleCursor)\n pruneComponentWatches(container, rootComponent, frame.watchCursor)\n scheduleMountCallbacks(container, rootComponent, frame.mountCallbacks)\n\n const root = container.rootElement\n while (root.firstChild) {\n root.firstChild.remove()\n }\n const start = container.doc.createComment('ec:c:c0:start')\n const end = container.doc.createComment('ec:c:c0:end')\n root.appendChild(start)\n for (const node of nodes) {\n root.appendChild(node)\n }\n root.appendChild(end)\n rootComponent.start = start\n rootComponent.end = end\n bindRouterLinks(container, root)\n scheduleVisibleCallbacksCheck(container)\n}\n\nconst loadRouteModule = async (url: string): Promise<LoadedRouteModule> => {\n const module = (await import(/* @vite-ignore */ url)) as {\n default?: RouteRenderer\n metadata?: RouteMetadataExport\n }\n if (typeof module.default !== 'function') {\n throw new TypeError(`Route module ${url} does not export a default component.`)\n }\n\n return {\n metadata: module.metadata ?? null,\n renderer: module.default,\n symbol: getComponentMeta(module.default)?.symbol ?? null,\n url,\n }\n}\n\nconst createManagedHeadElement = (doc: Document, tagName: 'link' | 'meta') => {\n const element = doc.createElement(tagName)\n element.setAttribute(ROUTE_METADATA_HEAD_ATTR, '')\n return element\n}\n\nconst applyRouteMetadata = (doc: Document, route: LoadedRoute, url: URL, defaultTitle: string) => {\n for (const element of [...doc.head.querySelectorAll(`[${ROUTE_METADATA_HEAD_ATTR}]`)]) {\n element.remove()\n }\n\n const metadata = composeRouteMetadata(\n [...route.layouts.map((layout) => layout.metadata ?? null), route.page.metadata ?? null],\n {\n params: route.params,\n url,\n },\n )\n\n doc.title = metadata?.title ?? defaultTitle\n\n const appendMeta = (name: string, content: string, attr: 'name' | 'property') => {\n const meta = createManagedHeadElement(doc, 'meta')\n meta.setAttribute(attr, name)\n meta.setAttribute('content', content)\n doc.head.appendChild(meta)\n }\n\n if (metadata?.description) {\n appendMeta('description', metadata.description, 'name')\n }\n if (metadata?.canonical) {\n const link = createManagedHeadElement(doc, 'link')\n link.setAttribute('href', metadata.canonical)\n link.setAttribute('rel', 'canonical')\n doc.head.appendChild(link)\n }\n if (metadata?.openGraph?.title) {\n appendMeta('og:title', metadata.openGraph.title, 'property')\n }\n if (metadata?.openGraph?.description) {\n appendMeta('og:description', metadata.openGraph.description, 'property')\n }\n if (metadata?.openGraph?.type) {\n appendMeta('og:type', metadata.openGraph.type, 'property')\n }\n if (metadata?.openGraph?.url) {\n appendMeta('og:url', metadata.openGraph.url, 'property')\n }\n for (const image of metadata?.openGraph?.images ?? []) {\n appendMeta('og:image', image, 'property')\n }\n if (metadata?.twitter?.card) {\n appendMeta('twitter:card', metadata.twitter.card, 'name')\n }\n if (metadata?.twitter?.title) {\n appendMeta('twitter:title', metadata.twitter.title, 'name')\n }\n if (metadata?.twitter?.description) {\n appendMeta('twitter:description', metadata.twitter.description, 'name')\n }\n for (const image of metadata?.twitter?.images ?? []) {\n appendMeta('twitter:image', image, 'name')\n }\n}\n\nconst loadResolvedRoute = async (\n container: RuntimeContainer,\n matched: {\n entry: RouteModuleManifest\n params: RouteParams\n pathname: string\n },\n variant: 'page' | 'loading' | 'error' | 'not-found' = 'page',\n) => {\n const router = ensureRouterState(container)\n const normalizedPath = normalizeRoutePath(matched.pathname)\n const cacheKey = routeCacheKey(normalizedPath, variant)\n const existing = router.loadedRoutes.get(cacheKey)\n if (existing) {\n return existing\n }\n\n const moduleUrl =\n variant === 'page'\n ? matched.entry.page\n : variant === 'loading'\n ? matched.entry.loading\n : variant === 'error'\n ? matched.entry.error\n : matched.entry.notFound\n if (!moduleUrl) {\n return null\n }\n\n const [page, ...layouts] = await Promise.all([\n loadRouteModule(moduleUrl),\n ...matched.entry.layouts.map((layoutUrl) => loadRouteModule(layoutUrl)),\n ])\n let route!: LoadedRoute\n route = {\n entry: matched.entry,\n layouts,\n params: matched.params,\n pathname: normalizedPath,\n page,\n render: () => createRouteElement(route),\n }\n\n router.loadedRoutes.set(cacheKey, route)\n return route\n}\n\nconst loadResolvedRouteFromSpecial = async (\n container: RuntimeContainer,\n pathname: string,\n kind: 'error' | 'notFound',\n) => {\n const matched = findSpecialManifestEntry(ensureRouterState(container).manifest, pathname, kind)\n if (!matched) {\n return null\n }\n return loadResolvedRoute(container, matched, kind === 'error' ? 'error' : 'not-found')\n}\n\nconst loadRouteComponent = async (container: RuntimeContainer, pathname: string) => {\n const matched = matchRouteManifest(ensureRouterState(container).manifest, pathname)\n if (!matched || !matched.entry.page) {\n return null\n }\n return loadResolvedRoute(container, matched, 'page')\n}\n\nconst findRouteComponentChain = (\n container: RuntimeContainer,\n symbols: string[],\n parentId: string | null = null,\n): string[] | null => {\n if (symbols.length === 0) {\n return []\n }\n\n const [symbol, ...rest] = symbols\n const candidates = [...container.components.values()]\n .filter((component) => {\n if (!component.active || component.symbol !== symbol) {\n return false\n }\n if (parentId === null) {\n return true\n }\n return isDescendantOf(parentId, component.id)\n })\n .sort((left, right) => left.id.split('.').length - right.id.split('.').length)\n\n for (const candidate of candidates) {\n const remainder = findRouteComponentChain(container, rest, candidate.id)\n if (!remainder) {\n continue\n }\n return [candidate.id, ...remainder]\n }\n\n return null\n}\n\nconst collectSharedLayoutBoundaryIds = (container: RuntimeContainer, route: LoadedRoute) => {\n if (route.layouts.length === 0 || route.layouts.some((layout) => !layout.symbol)) {\n return null\n }\n\n const symbols = route.layouts.map((layout) => layout.symbol as string)\n if (route.page.symbol) {\n const chain = findRouteComponentChain(container, [...symbols, route.page.symbol])\n if (chain) {\n return chain.slice(0, route.layouts.length)\n }\n }\n\n return findRouteComponentChain(container, symbols)\n}\n\nconst countSharedLayouts = (current: LoadedRoute | null, next: LoadedRoute) => {\n if (!current) {\n return 0\n }\n\n let count = 0\n const limit = Math.min(current.layouts.length, next.layouts.length)\n while (count < limit && current.layouts[count]!.url === next.layouts[count]!.url) {\n count += 1\n }\n return count\n}\n\nconst updateSharedLayoutBoundary = async (\n container: RuntimeContainer,\n current: LoadedRoute,\n next: LoadedRoute,\n sharedLayoutCount: number,\n) => {\n if (sharedLayoutCount <= 0) {\n return false\n }\n\n const boundaryIds = collectSharedLayoutBoundaryIds(container, current)\n if (!boundaryIds || boundaryIds.length < sharedLayoutCount) {\n return false\n }\n\n const boundaryId = boundaryIds[sharedLayoutCount - 1]!\n const boundary = container.components.get(boundaryId)\n if (!boundary) {\n return false\n }\n\n boundary.props = {\n children: createRouteElement(next, sharedLayoutCount),\n }\n boundary.active = false\n boundary.reuseExistingDomOnActivate = false\n container.dirty.add(boundaryId)\n await flushDirtyComponents(container)\n return true\n}\n\nconst commitBrowserNavigation = (doc: Document, url: URL, mode: NavigationMode) => {\n if (!doc.defaultView || mode === 'pop') {\n return\n }\n if (mode === 'replace') {\n doc.defaultView.history.replaceState(null, '', url.href)\n return\n }\n doc.defaultView.history.pushState(null, '', url.href)\n}\n\nconst fallbackDocumentNavigation = (doc: Document, url: URL, mode: NavigationMode) => {\n if (!doc.defaultView) {\n return\n }\n if (mode === 'replace') {\n doc.defaultView.location.replace(url.href)\n return\n }\n if (mode === 'pop') {\n doc.defaultView.location.assign(url.href)\n return\n }\n doc.defaultView.location.assign(url.href)\n}\n\nconst parseResumePayloadFromHtml = (html: string): ResumePayload | null => {\n if (typeof DOMParser === 'undefined') {\n return null\n }\n const parsed = new DOMParser().parseFromString(html, 'text/html')\n const payloadNode =\n parsed.getElementById(RESUME_FINAL_STATE_ELEMENT_ID) ??\n parsed.getElementById(RESUME_STATE_ELEMENT_ID)\n if (!payloadNode?.textContent) {\n return null\n }\n return JSON.parse(payloadNode.textContent) as ResumePayload\n}\n\nconst cachePrefetchedLoaders = (\n container: RuntimeContainer,\n url: URL,\n payload: ResumePayload | null,\n) => {\n if (!payload) {\n return\n }\n const router = ensureRouterState(container)\n const snapshots = new Map<string, LoaderSnapshot>()\n for (const [id, loaderPayload] of Object.entries(payload.loaders ?? {})) {\n snapshots.set(id, {\n data: deserializeRuntimeValue(container, loaderPayload.data),\n error: deserializeRuntimeValue(container, loaderPayload.error),\n loaded: loaderPayload.loaded,\n })\n }\n router.prefetchedLoaders.set(routePrefetchKey(url), snapshots)\n}\n\nconst applyPrefetchedLoaders = (container: RuntimeContainer, url: URL) => {\n const router = ensureRouterState(container)\n const prefetchedLoaders = router.prefetchedLoaders.get(routePrefetchKey(url))\n if (!prefetchedLoaders) {\n return\n }\n for (const [id, snapshot] of prefetchedLoaders) {\n container.loaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n}\n\nconst requestRoutePreflight = async (href: string): Promise<RoutePreflightResult> => {\n try {\n const requestUrl = new URL(\n href,\n typeof window === 'undefined' ? 'http://localhost' : window.location.href,\n )\n const response = await fetch(requestUrl.href, {\n headers: {\n [ROUTE_PREFLIGHT_REQUEST_HEADER]: '1',\n },\n })\n if (response.status < 200 || response.status >= 300) {\n return {\n document: true,\n ok: false,\n }\n }\n const finalUrl = new URL(response.url || requestUrl.href, requestUrl.href)\n if (\n finalUrl.origin !== requestUrl.origin ||\n finalUrl.pathname !== requestUrl.pathname ||\n finalUrl.search !== requestUrl.search\n ) {\n return {\n location: finalUrl.href,\n ok: false,\n }\n }\n return {\n ok: true,\n }\n } catch {\n return {\n document: true,\n ok: false,\n }\n }\n}\n\nconst prefetchResolvedRouteModules = async (\n container: RuntimeContainer,\n pathname: string,\n finalUrl: URL,\n) => {\n const router = ensureRouterState(container)\n const matched = matchRouteManifest(router.manifest, pathname)\n if (matched?.entry.page) {\n await loadResolvedRoute(container, matched)\n return\n }\n const notFoundMatched = findSpecialManifestEntry(router.manifest, pathname, 'notFound')\n if (notFoundMatched?.entry.notFound) {\n await loadResolvedRoute(container, notFoundMatched, 'not-found')\n }\n if (finalUrl.pathname !== pathname) {\n const redirectedPath = normalizeRoutePath(finalUrl.pathname)\n const redirectedMatched = matchRouteManifest(router.manifest, redirectedPath)\n if (redirectedMatched?.entry.page) {\n await loadResolvedRoute(container, redirectedMatched)\n }\n }\n}\n\nconst prefetchRoute = async (container: RuntimeContainer, href: string) => {\n const doc = container.doc\n if (!doc) {\n return\n }\n\n const requestUrl = new URL(href, doc.location.href)\n if (requestUrl.origin !== doc.location.origin) {\n return\n }\n const key = routePrefetchKey(requestUrl)\n const router = ensureRouterState(container)\n const existing = router.routePrefetches.get(key)\n if (existing) {\n await existing\n return\n }\n\n const pathname = normalizeRoutePath(requestUrl.pathname)\n const matched = matchRouteManifest(router.manifest, pathname)\n const specialRoute = !matched\n ? findSpecialManifestEntry(router.manifest, pathname, 'notFound')\n : null\n if (!matched?.entry.page && !specialRoute?.entry.notFound) {\n return\n }\n\n const prefetchPromise = (async () => {\n try {\n const response = await fetch(requestUrl.href)\n if (response.status < 200 || response.status >= 300) {\n return\n }\n\n const finalUrl = new URL(response.url || requestUrl.href, requestUrl.href)\n if (finalUrl.origin !== requestUrl.origin) {\n return\n }\n\n const contentType = response.headers.get('content-type') ?? ''\n const html = contentType.includes('text/html') ? await response.text() : ''\n await prefetchResolvedRouteModules(container, normalizeRoutePath(finalUrl.pathname), finalUrl)\n cachePrefetchedLoaders(\n container,\n new URL(`${finalUrl.pathname}${finalUrl.search}`, requestUrl.origin),\n html ? parseResumePayloadFromHtml(html) : null,\n )\n } catch {\n return\n }\n })()\n\n router.routePrefetches.set(key, prefetchPromise)\n await prefetchPromise\n}\n\nconst navigateContainer = async (\n container: RuntimeContainer,\n href: string,\n options?: {\n redirectDepth?: number\n mode?: NavigationMode\n },\n) => {\n const doc = container.doc\n if (!doc) {\n return\n }\n\n const mode = options?.mode ?? 'push'\n const redirectDepth = options?.redirectDepth ?? 0\n const url = new URL(href, doc.location.href)\n if (url.origin !== doc.location.origin) {\n fallbackDocumentNavigation(doc, url, mode)\n return\n }\n const pathname = normalizeRoutePath(url.pathname)\n const router = ensureRouterState(container)\n const matched = matchRouteManifest(router.manifest, pathname)\n const specialPreflightTarget = !matched\n ? findSpecialManifestEntry(router.manifest, pathname, 'notFound')\n : null\n\n const currentHref = `${doc.location.pathname}${doc.location.search}${doc.location.hash}`\n const nextHref = `${url.pathname}${url.search}${url.hash}`\n if (nextHref === currentHref) {\n return\n }\n\n const shouldPreflight =\n (matched?.entry.page && matched.entry.hasMiddleware) ||\n (!!specialPreflightTarget?.entry.notFound && specialPreflightTarget.entry.hasMiddleware)\n if (shouldPreflight) {\n const preflight = await requestRoutePreflight(url.href)\n if (!preflight.ok) {\n if ('location' in preflight) {\n if (redirectDepth >= 8) {\n fallbackDocumentNavigation(doc, new URL(preflight.location, doc.location.href), mode)\n return\n }\n const redirectUrl = new URL(preflight.location, doc.location.href)\n if (redirectUrl.origin !== doc.location.origin) {\n fallbackDocumentNavigation(doc, redirectUrl, mode)\n return\n }\n await navigateContainer(container, redirectUrl.href, {\n mode,\n redirectDepth: redirectDepth + 1,\n })\n return\n }\n fallbackDocumentNavigation(doc, url, mode)\n return\n }\n }\n\n if (!matched || !matched.entry.page) {\n const notFoundRoute = !matched\n ? await loadResolvedRouteFromSpecial(container, pathname, 'notFound')\n : null\n if (notFoundRoute) {\n renderRouteIntoRoot(container, notFoundRoute.render, `route:${pathname}:not-found`)\n router.currentRoute = notFoundRoute\n applyRouteMetadata(doc, notFoundRoute, url, router.defaultTitle)\n commitBrowserNavigation(doc, url, mode)\n router.currentPath.value = pathname\n return\n }\n fallbackDocumentNavigation(doc, url, mode)\n return\n }\n\n if (pathname === router.currentPath.value) {\n if (nextHref !== currentHref) {\n commitBrowserNavigation(doc, url, mode)\n }\n return\n }\n\n const pendingPrefetch = router.routePrefetches.get(routePrefetchKey(url))\n if (pendingPrefetch) {\n await pendingPrefetch\n }\n applyPrefetchedLoaders(container, url)\n const sequence = ++router.sequence\n router.isNavigating.value = true\n\n try {\n const nextRoutePromise = loadResolvedRoute(container, matched)\n if (matched.entry.loading) {\n let settled = false\n nextRoutePromise.finally(() => {\n settled = true\n })\n await Promise.resolve()\n if (!settled) {\n const loadingRoute = await loadResolvedRoute(container, matched, 'loading')\n if (loadingRoute) {\n renderRouteIntoRoot(container, loadingRoute.render, `route:${pathname}:loading`)\n router.currentRoute = loadingRoute\n }\n }\n }\n const [currentRoute, nextRoute] = await Promise.all([\n router.currentRoute\n ? Promise.resolve(router.currentRoute)\n : loadRouteComponent(container, router.currentPath.value),\n nextRoutePromise,\n ])\n if (!nextRoute) {\n fallbackDocumentNavigation(doc, url, mode)\n return\n }\n if (sequence !== router.sequence) {\n return\n }\n\n const sharedLayoutCount = countSharedLayouts(currentRoute, nextRoute)\n const reusedLayout =\n currentRoute && sharedLayoutCount > 0\n ? await updateSharedLayoutBoundary(container, currentRoute, nextRoute, sharedLayoutCount)\n : false\n\n if (!reusedLayout) {\n renderRouteIntoRoot(container, nextRoute.render, `route:${pathname}`)\n }\n\n router.currentRoute = nextRoute\n applyRouteMetadata(doc, nextRoute, url, router.defaultTitle)\n commitBrowserNavigation(doc, url, mode)\n router.currentPath.value = pathname\n } catch (error) {\n if (sequence === router.sequence) {\n const fallbackRoute = isRouteNotFoundError(error)\n ? await loadResolvedRouteFromSpecial(container, pathname, 'notFound')\n : await loadResolvedRoute(container, matched, 'error')\n if (fallbackRoute) {\n renderRouteIntoRoot(\n container,\n fallbackRoute.render,\n `route:${pathname}:${isRouteNotFoundError(error) ? 'not-found' : 'error'}`,\n )\n router.currentRoute = fallbackRoute\n applyRouteMetadata(doc, fallbackRoute, url, router.defaultTitle)\n commitBrowserNavigation(doc, url, mode)\n router.currentPath.value = pathname\n return\n }\n fallbackDocumentNavigation(doc, url, mode)\n }\n } finally {\n if (sequence === router.sequence) {\n router.isNavigating.value = false\n }\n }\n}\n\nexport const renderClientComponent = <T>(componentFn: Component<T>, props: T): unknown => {\n const container = getCurrentContainer()\n const parentFrame = getCurrentFrame()\n const meta = getComponentMeta(componentFn)\n\n if (!container || !parentFrame || !meta) {\n return componentFn(props)\n }\n\n const position = nextComponentPosition(container)\n const componentId = createComponentId(container, position.parentId, position.childIndex)\n const existing = container.components.get(componentId)\n const symbolChanged = !!existing && existing.symbol !== meta.symbol\n const component = getOrCreateComponentState(\n container,\n componentId,\n meta.symbol,\n position.parentId,\n )\n component.props =\n props && typeof props === 'object'\n ? evaluateProps(props as Record<string, unknown>)\n : (props as unknown)\n component.projectionSlots = meta.projectionSlots ?? null\n if (!existing || symbolChanged) {\n resetComponentForSymbolChange(container, component, meta)\n }\n component.active = true\n component.start = undefined\n component.end = undefined\n\n const frame = createFrame(container, component, 'client')\n const oldDescendants = collectDescendantIds(container, componentId)\n clearComponentSubscriptions(container, componentId)\n const renderProps =\n component.props && typeof component.props === 'object'\n ? createRenderProps(componentId, meta, component.props as Record<string, unknown>)\n : component.props\n const rendered = pushFrame(frame, () => componentFn(renderProps as T))\n pruneComponentVisibles(container, component, frame.visibleCursor)\n pruneComponentWatches(container, component, frame.watchCursor)\n pruneRemovedComponents(container, componentId, frame.visitedDescendants)\n\n for (const descendantId of oldDescendants) {\n if (frame.visitedDescendants.has(descendantId)) {\n continue\n }\n clearComponentSubscriptions(container, descendantId)\n }\n\n parentFrame.visitedDescendants.add(componentId)\n for (const descendantId of frame.visitedDescendants) {\n parentFrame.visitedDescendants.add(descendantId)\n }\n\n scheduleMountCallbacks(container, component, frame.mountCallbacks)\n scheduleVisibleCallbacksCheck(container)\n\n return rendered\n}\n\nconst activateComponent = async (container: RuntimeContainer, componentId: string) => {\n const component = container.components.get(componentId)\n if (!component?.start || !component.end || component.active) {\n return\n }\n\n if (component.symbol === SUSPENSE_COMPONENT_SYMBOL) {\n clearComponentSubscriptions(container, componentId)\n const oldDescendants = collectDescendantIds(container, componentId)\n const frame = createFrame(container, component, 'client', {\n reuseExistingDom: component.reuseExistingDomOnActivate ?? true,\n })\n component.reuseExistingDomOnActivate = true\n const focusSnapshot = captureBoundaryFocus(container.doc!, component.start, component.end)\n const nodes = pushContainer(container, () =>\n pushFrame(frame, () =>\n renderSuspenseContentToNodes(component.props as SuspenseProps, container, componentId),\n ),\n )\n pruneComponentVisibles(container, component, frame.visibleCursor)\n pruneComponentWatches(container, component, frame.watchCursor)\n replaceBoundaryContents(component.start, component.end, nodes, {\n preserveProjectionSlots: frame.projectionState.reuseExistingDom,\n })\n restoreBoundaryFocus(container.doc!, component.start, component.end, focusSnapshot)\n component.active = true\n pruneRemovedComponents(container, componentId, frame.visitedDescendants)\n for (const descendantId of oldDescendants) {\n if (frame.visitedDescendants.has(descendantId)) {\n continue\n }\n clearComponentSubscriptions(container, descendantId)\n }\n return\n }\n\n clearComponentSubscriptions(container, componentId)\n const oldDescendants = collectDescendantIds(container, componentId)\n const scope = materializeScope(container, component.scopeId)\n await preloadResumableValue(container, scope)\n const module = await loadSymbol(container, component.symbol)\n await preloadComponentProps(\n container,\n {\n captures: () => [],\n projectionSlots: component.projectionSlots ?? undefined,\n symbol: component.symbol,\n },\n component.props,\n )\n const frame = createFrame(container, component, 'client', {\n reuseExistingDom: component.reuseExistingDomOnActivate ?? true,\n })\n component.reuseExistingDomOnActivate = true\n const focusSnapshot = captureBoundaryFocus(container.doc!, component.start, component.end)\n const nodes = pushContainer(container, () =>\n pushFrame(frame, () => {\n const renderProps =\n component.props && typeof component.props === 'object'\n ? createRenderProps(\n component.id,\n {\n captures: () => [],\n projectionSlots: component.projectionSlots ?? undefined,\n symbol: component.symbol,\n },\n component.props as Record<string, unknown>,\n )\n : component.props\n const rendered = module.default(scope, renderProps)\n return toMountedNodes(rendered, container)\n }),\n )\n pruneComponentVisibles(container, component, frame.visibleCursor)\n pruneComponentWatches(container, component, frame.watchCursor)\n replaceBoundaryContents(component.start, component.end, nodes, {\n preserveProjectionSlots: frame.projectionState.reuseExistingDom,\n })\n if (component.start.parentNode && 'querySelectorAll' in component.start.parentNode) {\n bindRouterLinks(container, component.start.parentNode as ParentNode)\n }\n restoreBoundaryFocus(container.doc!, component.start, component.end, focusSnapshot)\n\n component.active = true\n for (const descendantId of frame.visitedDescendants) {\n const descendant = container.components.get(descendantId)\n if (!descendant) {\n continue\n }\n descendant.active = true\n descendant.start = undefined\n descendant.end = undefined\n }\n\n pruneRemovedComponents(container, componentId, frame.visitedDescendants)\n\n for (const descendantId of oldDescendants) {\n if (frame.visitedDescendants.has(descendantId)) {\n continue\n }\n clearComponentSubscriptions(container, descendantId)\n }\n clearComponentSubscriptions(container, componentId)\n scheduleMountCallbacks(container, component, frame.mountCallbacks)\n scheduleVisibleCallbacksCheck(container)\n}\n\nconst sortDirtyComponents = (ids: Iterable<string>) =>\n [...ids].sort((a, b) => a.split('.').length - b.split('.').length)\n\nconst parseSymbolIdFromUrl = (url: string) => {\n const parsed = new URL(url, 'http://localhost')\n return parsed.searchParams.get('eclipsa-symbol')\n}\n\nconst findNearestMountedBoundary = (container: RuntimeContainer, componentId: string) => {\n let currentId: string | null = componentId\n while (currentId && currentId !== ROOT_COMPONENT_ID) {\n const component = container.components.get(currentId)\n if (!component) {\n return null\n }\n if (component.start && component.end) {\n return component.id\n }\n currentId = component.parentId\n }\n return null\n}\n\nexport const collectResumeHmrBoundaryIds = (\n container: RuntimeContainer,\n symbolIds: Iterable<string>,\n) => {\n const targetSymbols = new Set(symbolIds)\n const pendingBoundaries = new Set<string>()\n\n for (const component of container.components.values()) {\n if (!targetSymbols.has(component.symbol)) {\n continue\n }\n const boundaryId = findNearestMountedBoundary(container, component.id)\n if (!boundaryId) {\n if (component.active) {\n return null\n }\n continue\n }\n pendingBoundaries.add(boundaryId)\n }\n\n const result: string[] = []\n for (const boundaryId of sortDirtyComponents(pendingBoundaries)) {\n if (\n result.some((parentId) => boundaryId === parentId || isDescendantOf(parentId, boundaryId))\n ) {\n continue\n }\n result.push(boundaryId)\n }\n return result\n}\n\nexport const applyResumeHmrSymbolReplacements = (\n container: RuntimeContainer,\n replacements: Record<string, string>,\n) => {\n for (const [oldSymbolId, url] of Object.entries(replacements)) {\n const currentUrl = container.symbols.get(oldSymbolId)\n const affectedIds = new Set<string>([oldSymbolId])\n\n if (currentUrl) {\n for (const [candidateId, candidateUrl] of container.symbols.entries()) {\n if (candidateUrl === currentUrl) {\n affectedIds.add(candidateId)\n }\n }\n }\n\n for (const affectedId of affectedIds) {\n container.symbols.set(affectedId, url)\n container.imports.delete(affectedId)\n }\n\n const nextSymbolId = parseSymbolIdFromUrl(url)\n if (!nextSymbolId) {\n continue\n }\n\n for (const component of container.components.values()) {\n if (affectedIds.has(component.symbol)) {\n component.symbol = nextSymbolId\n }\n }\n\n for (const watch of container.watches.values()) {\n if (affectedIds.has(watch.symbol)) {\n watch.symbol = nextSymbolId\n }\n }\n\n for (const visible of container.visibles.values()) {\n if (affectedIds.has(visible.symbol)) {\n visible.symbol = nextSymbolId\n }\n }\n\n container.symbols.set(nextSymbolId, url)\n container.imports.delete(nextSymbolId)\n }\n}\n\nexport const applyResumeHmrUpdate = async (\n container: RuntimeContainer,\n payload: ResumeHmrUpdatePayload,\n) => {\n if (payload.fullReload) {\n return 'reload' as const\n }\n\n const boundaryIds = collectResumeHmrBoundaryIds(container, [\n ...payload.rerenderComponentSymbols,\n ...payload.rerenderOwnerSymbols,\n ])\n if (boundaryIds === null) {\n return 'reload' as const\n }\n\n applyResumeHmrSymbolReplacements(container, payload.symbolUrlReplacements)\n\n for (const boundaryId of boundaryIds) {\n const component = container.components.get(boundaryId)\n if (!component) {\n continue\n }\n resetComponentVisibleStates(container, boundaryId)\n component.active = false\n container.dirty.add(boundaryId)\n }\n\n if (container.dirty.size > 0) {\n await flushDirtyComponents(container)\n }\n\n return 'updated' as const\n}\n\nexport const applyResumeHmrUpdateToRegisteredContainers = async (\n payload: ResumeHmrUpdatePayload,\n) => {\n for (const container of getResumeContainers()) {\n const result = await applyResumeHmrUpdate(container, payload)\n if (result === 'reload') {\n return 'reload' as const\n }\n }\n\n return 'updated' as const\n}\n\nexport const flushDirtyComponents = async (container: RuntimeContainer) => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const existing = globalRecord[DIRTY_FLUSH_PROMISE_KEY]\n if (existing instanceof Promise) {\n await existing\n return\n }\n\n const flushing = (async () => {\n while (container.dirty.size > 0) {\n const batch = sortDirtyComponents(container.dirty)\n container.dirty.clear()\n const rerendered = new Set<string>()\n for (const componentId of batch) {\n if (\n [...rerendered].some(\n (parentId) => componentId === parentId || isDescendantOf(parentId, componentId),\n )\n ) {\n continue\n }\n const component = container.components.get(componentId)\n if (component?.active) {\n continue\n }\n await activateComponent(container, componentId)\n rerendered.add(componentId)\n }\n }\n })()\n\n globalRecord[DIRTY_FLUSH_PROMISE_KEY] = flushing\n try {\n await flushing\n } finally {\n delete globalRecord[DIRTY_FLUSH_PROMISE_KEY]\n }\n}\n\nexport const beginSSRContainer = <T>(\n symbols: Record<string, string>,\n render: () => T,\n): {\n container: RuntimeContainer\n result: T\n} => {\n const container = createContainer(symbols)\n const rootComponent: ComponentState = {\n active: false,\n didMount: false,\n id: ROOT_COMPONENT_ID,\n mountCleanupSlots: [],\n parentId: null,\n props: {},\n projectionSlots: null,\n scopeId: registerScope(container, []),\n signalIds: [],\n symbol: ROOT_COMPONENT_ID,\n suspensePromise: null,\n visibleCount: 0,\n watchCount: 0,\n }\n\n const rootFrame = createFrame(container, rootComponent, 'ssr')\n const result = pushContainer(container, () => pushFrame(rootFrame, render))\n return {\n container,\n result,\n }\n}\n\nexport const beginAsyncSSRContainer = async <T>(\n symbols: Record<string, string>,\n render: () => T,\n prepare?: (container: RuntimeContainer) => void | Promise<void>,\n options?: {\n asyncSignalSnapshotCache?: Map<string, unknown>\n },\n): Promise<{\n container: RuntimeContainer\n result: T\n}> => {\n const container = createContainer(symbols, undefined, options?.asyncSignalSnapshotCache)\n const rootComponent: ComponentState = {\n active: false,\n didMount: false,\n id: ROOT_COMPONENT_ID,\n mountCleanupSlots: [],\n parentId: null,\n props: {},\n projectionSlots: null,\n scopeId: registerScope(container, []),\n signalIds: [],\n symbol: ROOT_COMPONENT_ID,\n suspensePromise: null,\n visibleCount: 0,\n watchCount: 0,\n }\n\n const rootFrame = createFrame(container, rootComponent, 'ssr')\n await prepare?.(container)\n const result = pushContainer(container, () => pushFrame(rootFrame, render))\n return {\n container,\n result,\n }\n}\n\nconst createResumePayload = (\n container: RuntimeContainer,\n componentIds?: Iterable<string>,\n): ResumePayload => {\n const keepComponents = componentIds ? new Set(componentIds) : null\n const componentEntries = [...container.components.entries()].filter(\n ([id]) => !keepComponents || keepComponents.has(id),\n )\n const keepSignals = new Set(componentEntries.flatMap(([, component]) => component.signalIds))\n\n return {\n actions: Object.fromEntries(\n [...container.actionStates.entries()].map(([id, action]) => [\n id,\n {\n error: serializeRuntimeValue(container, action.error),\n input: serializeRuntimeValue(container, action.input),\n result: serializeRuntimeValue(container, action.result),\n } satisfies ResumeActionPayload,\n ]),\n ),\n components: Object.fromEntries(\n componentEntries.map(([id, component]) => [\n id,\n {\n props: serializeRuntimeValue(container, component.props),\n ...(component.projectionSlots\n ? { projectionSlots: { ...component.projectionSlots } }\n : {}),\n scope: component.scopeId,\n signalIds: [...component.signalIds],\n symbol: component.symbol,\n visibleCount: component.visibleCount,\n watchCount: component.watchCount,\n } satisfies ResumeComponentPayload,\n ]),\n ),\n loaders: Object.fromEntries(\n [...container.loaderStates.entries()].map(([id, loader]) => [\n id,\n {\n data: serializeRuntimeValue(container, loader.data),\n error: serializeRuntimeValue(container, loader.error),\n loaded: loader.loaded,\n } satisfies ResumeLoaderPayload,\n ]),\n ),\n scopes: Object.fromEntries(container.scopes.entries()),\n signals: Object.fromEntries(\n [...container.signals.entries()]\n .filter(([id]) => !keepComponents || keepSignals.has(id))\n .map(([id, record]) => [id, serializeRuntimeValue(container, record.value)]),\n ),\n subscriptions: Object.fromEntries(\n [...container.signals.entries()]\n .filter(([id]) => !keepComponents || keepSignals.has(id))\n .map(([id, record]) => [\n id,\n [...record.subscribers].filter(\n (componentId) => !keepComponents || keepComponents.has(componentId),\n ),\n ]),\n ),\n symbols: Object.fromEntries(container.symbols.entries()),\n visibles: Object.fromEntries(\n [...container.visibles.entries()]\n .filter(([, visible]) => !keepComponents || keepComponents.has(visible.componentId))\n .map(([id, visible]) => [\n id,\n {\n componentId: visible.componentId,\n scope: visible.scopeId,\n symbol: visible.symbol,\n } satisfies ResumeVisiblePayload,\n ]),\n ),\n watches: Object.fromEntries(\n [...container.watches.entries()]\n .filter(([, watch]) => !keepComponents || keepComponents.has(watch.componentId))\n .map(([id, watch]) => [\n id,\n {\n componentId: watch.componentId,\n mode: watch.mode,\n scope: watch.scopeId,\n signals: [...watch.effect.signals].map((signal) => signal.id),\n symbol: watch.symbol,\n } satisfies ResumeWatchPayload,\n ]),\n ),\n }\n}\n\nexport const toResumePayload = (container: RuntimeContainer): ResumePayload =>\n createResumePayload(container)\n\nexport const toResumePayloadSubset = (\n container: RuntimeContainer,\n componentIds: Iterable<string>,\n): ResumePayload => createResumePayload(container, componentIds)\n\nconst bindComponentBoundaries = (container: RuntimeContainer, root: ParentNode) => {\n if (!hasOwnerDocument(root)) {\n return\n }\n for (const [id, boundary] of scanComponentBoundaries(root)) {\n const component = container.components.get(id)\n if (!component) {\n continue\n }\n component.start = boundary.start\n component.end = boundary.end\n }\n}\n\nexport const mergeResumePayload = (container: RuntimeContainer, payload: ResumePayload) => {\n for (const [id, actionPayload] of Object.entries(payload.actions ?? {})) {\n container.actionStates.set(id, {\n error: deserializeRuntimeValue(container, actionPayload.error),\n input: deserializeRuntimeValue(container, actionPayload.input),\n result: deserializeRuntimeValue(container, actionPayload.result),\n })\n }\n\n for (const [id, encodedValue] of Object.entries(payload.signals)) {\n const decodedValue = deserializeRuntimeValue(container, encodedValue)\n const record = ensureSignalRecord(container, id, decodedValue)\n record.value = decodedValue\n }\n\n for (const [id, loaderPayload] of Object.entries(payload.loaders ?? {})) {\n container.loaderStates.set(id, {\n data: deserializeRuntimeValue(container, loaderPayload.data),\n error: deserializeRuntimeValue(container, loaderPayload.error),\n loaded: loaderPayload.loaded,\n })\n }\n\n for (const [id, slots] of Object.entries(payload.scopes)) {\n container.scopes.set(id, slots)\n }\n container.nextScopeId = findNextNumericId(container.scopes.keys(), 'sc')\n\n for (const [id, componentPayload] of Object.entries(payload.components)) {\n container.components.set(id, {\n active: false,\n didMount: false,\n id,\n mountCleanupSlots: [],\n parentId: id.includes('.') ? id.slice(0, id.lastIndexOf('.')) : ROOT_COMPONENT_ID,\n props: deserializeRuntimeValue(container, componentPayload.props),\n projectionSlots: componentPayload.projectionSlots\n ? { ...componentPayload.projectionSlots }\n : null,\n scopeId: componentPayload.scope,\n signalIds: [...componentPayload.signalIds],\n symbol: componentPayload.symbol,\n suspensePromise: null,\n visibleCount: componentPayload.visibleCount ?? 0,\n watchCount: componentPayload.watchCount,\n })\n }\n\n for (const [signalId, subscribers] of Object.entries(payload.subscriptions)) {\n const record = container.signals.get(signalId)\n if (!record) {\n continue\n }\n record.subscribers = new Set(subscribers)\n }\n container.nextSignalId = findNextNumericId(container.signals.keys(), 's')\n\n for (const [id, watchPayload] of Object.entries(payload.watches)) {\n const watch = getOrCreateWatchState(container, id, watchPayload.componentId)\n watch.mode = watchPayload.mode\n watch.scopeId = watchPayload.scope\n watch.symbol = watchPayload.symbol\n watch.track = null\n watch.run = null\n clearEffectSignals(watch.effect)\n for (const signalId of watchPayload.signals) {\n const record = container.signals.get(signalId)\n if (!record) {\n continue\n }\n watch.effect.signals.add(record)\n record.effects.add(watch.effect)\n }\n }\n\n for (const [id, visiblePayload] of Object.entries(payload.visibles ?? {})) {\n const visible = getOrCreateVisibleState(container, id, visiblePayload.componentId)\n visible.done = false\n visible.pending = null\n visible.run = null\n visible.scopeId = visiblePayload.scope\n visible.symbol = visiblePayload.symbol\n }\n}\n\nconst pruneStreamedBoundaryDescendants = (\n container: RuntimeContainer,\n boundaryId: string,\n payload: ResumePayload,\n) => {\n const keep = new Set(\n Object.keys(payload.components).filter((candidate) => isDescendantOf(boundaryId, candidate)),\n )\n pruneRemovedComponents(container, boundaryId, keep)\n}\n\nconst applyStreamedSuspenseBoundary = (\n container: RuntimeContainer,\n chunk: StreamedSuspenseChunk,\n) => {\n const doc = container.doc\n if (!doc) {\n return\n }\n const component = container.components.get(chunk.boundaryId)\n if (!component?.start || !component.end) {\n return\n }\n const template = doc.getElementById(chunk.templateId)\n const payloadScript = doc.getElementById(chunk.payloadScriptId)\n if (!(template instanceof HTMLTemplateElement) || !payloadScript?.textContent) {\n return\n }\n\n const payload = JSON.parse(payloadScript.textContent) as ResumePayload\n const focusSnapshot = captureBoundaryFocus(doc, component.start, component.end)\n const fragment = template.content.cloneNode(true) as DocumentFragment\n const nodes = [...fragment.childNodes]\n replaceBoundaryContents(component.start, component.end, nodes)\n pruneStreamedBoundaryDescendants(container, chunk.boundaryId, payload)\n mergeResumePayload(container, payload)\n component.suspensePromise = null\n\n const parentRoot = component.start.parentNode\n if (parentRoot) {\n bindComponentBoundaries(container, parentRoot)\n restoreSignalRefs(container, parentRoot)\n if ('querySelectorAll' in parentRoot) {\n bindRouterLinks(container, parentRoot)\n }\n }\n\n restoreBoundaryFocus(doc, component.start, component.end, focusSnapshot)\n scheduleVisibleCallbacksCheck(container)\n template.remove()\n payloadScript.remove()\n}\n\nconst getStreamState = (): StreamState => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const existing = globalRecord[STREAM_STATE_KEY]\n if (existing && typeof existing === 'object' && 'enqueue' in existing && 'pending' in existing) {\n return existing as StreamState\n }\n const created: StreamState = {\n enqueue(chunk) {\n created.pending.push(chunk)\n void created.process?.()\n },\n pending: [],\n processing: null,\n }\n globalRecord[STREAM_STATE_KEY] = created\n return created\n}\n\nexport const getStreamingResumeBootstrapScriptContent = () =>\n '(()=>{const key=\"__eclipsa_stream\";const state=window[key]??={pending:[]};state.enqueue=state.enqueue??function(chunk){this.pending.push(chunk);if(this.process){void this.process();}};})();'\n\nconst installStreamedSuspenseController = (container: RuntimeContainer) => {\n const state = getStreamState()\n state.process = async () => {\n if (state.processing) {\n await state.processing\n return\n }\n state.processing = (async () => {\n while (state.pending.length > 0) {\n const chunk = state.pending.shift()\n if (!chunk) {\n continue\n }\n applyStreamedSuspenseBoundary(container, chunk)\n }\n })()\n try {\n await state.processing\n } finally {\n state.processing = null\n }\n }\n if (state.pending.length > 0) {\n void state.process()\n }\n}\n\nexport const createResumeContainer = (\n source: Document | HTMLElement,\n payload: ResumePayload,\n options?: {\n routeManifest?: RouteManifest\n },\n) => {\n const doc = source instanceof Document ? source : source.ownerDocument\n const root = source instanceof Document ? doc.body : source\n const container = createContainer(payload.symbols, doc)\n container.rootElement = root as HTMLElement\n ensureRouterState(container, options?.routeManifest)\n\n mergeResumePayload(container, payload)\n bindComponentBoundaries(container, root as HTMLElement)\n restoreSignalRefs(container, root as HTMLElement)\n\n restoreRegisteredRpcHandles(container)\n\n const router = ensureRouterState(container)\n router.currentPath.value = normalizeRoutePath(doc.location.pathname)\n router.isNavigating.value = false\n scheduleVisibleCallbacksCheck(container)\n\n return container\n}\n\nexport const restoreRegisteredRpcHandles = (container: RuntimeContainer) => {\n withRuntimeContainer(container, () => {\n for (const id of getRegisteredActionHookIds()) {\n getRegisteredActionHook<() => unknown>(id)?.()\n }\n for (const id of getRegisteredLoaderHookIds()) {\n getRegisteredLoaderHook<() => unknown>(id)?.()\n }\n })\n}\n\nexport const primeRouteModules = async (container: RuntimeContainer) => {\n const router = ensureRouterState(container)\n const currentRoute = await loadRouteComponent(container, router.currentPath.value)\n if (currentRoute) {\n router.currentRoute = currentRoute\n if (container.doc) {\n applyRouteMetadata(\n container.doc,\n currentRoute,\n new URL(container.doc.location.href),\n router.defaultTitle,\n )\n }\n }\n}\n\nconst getRouterEventState = (event: Event): RouterEventState => {\n const eventRecord = event as Event & {\n [ROUTER_EVENT_STATE_KEY]?: RouterEventState\n preventDefault: () => void\n }\n const existing = eventRecord[ROUTER_EVENT_STATE_KEY]\n if (existing) {\n return existing\n }\n\n const originalPreventDefault = event.preventDefault.bind(event)\n const state: RouterEventState = {\n originalPreventDefault,\n routerPrevented: false,\n userPrevented: false,\n }\n\n eventRecord.preventDefault = () => {\n if (state.routerPrevented) {\n state.userPrevented = true\n }\n originalPreventDefault()\n }\n eventRecord[ROUTER_EVENT_STATE_KEY] = state\n return state\n}\n\nconst findInteractiveTarget = (target: EventTarget | null, eventName: string): Element | null => {\n let element = isElementNode(target)\n ? target\n : target instanceof Node\n ? target.parentElement\n : null\n while (element) {\n if (element.hasAttribute(`data-e-on${eventName}`)) {\n return element\n }\n element = element.parentElement\n }\n return null\n}\n\nconst getPendingLinkNavigationForLink = (\n container: RuntimeContainer,\n event: Event,\n link: HTMLAnchorElement,\n): PendingLinkNavigation | null => {\n if (!(event instanceof MouseEvent)) {\n return null\n }\n if (event.defaultPrevented) {\n return null\n }\n if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {\n return null\n }\n if (link.hasAttribute('download')) {\n return null\n }\n if (link.target && link.target !== '_self') {\n return null\n }\n\n const href = link.getAttribute('href')\n if (!href || !container.doc) {\n return null\n }\n\n const url = new URL(href, container.doc.location.href)\n const pathname = normalizeRoutePath(url.pathname)\n if (url.origin !== container.doc.location.origin) {\n return null\n }\n const matched = matchRouteManifest(ensureRouterState(container).manifest, pathname)\n if (!matched?.entry.page) {\n return null\n }\n\n const state = getRouterEventState(event)\n state.routerPrevented = true\n state.originalPreventDefault()\n\n return {\n href: url.href,\n replace: link.getAttribute(ROUTE_REPLACE_ATTR) === 'true',\n state,\n }\n}\n\nconst getLinkPrefetchMode = (link: HTMLAnchorElement): LinkPrefetchMode => {\n const value = link.getAttribute(ROUTE_PREFETCH_ATTR)\n if (value === 'hover' || value === 'focus' || value === 'intent' || value === 'none') {\n return value\n }\n return 'intent'\n}\n\nconst bindRouterLinkPrefetch = (container: RuntimeContainer, link: HTMLAnchorElement) => {\n const boundLink = link as HTMLAnchorElement & {\n [ROUTER_LINK_PREFETCH_BOUND_KEY]?: true\n }\n if (boundLink[ROUTER_LINK_PREFETCH_BOUND_KEY]) {\n return\n }\n\n boundLink[ROUTER_LINK_PREFETCH_BOUND_KEY] = true\n const mode = getLinkPrefetchMode(link)\n if (mode === 'none') {\n return\n }\n\n const runPrefetch = () => {\n const href = link.getAttribute('href')\n if (!href) {\n return\n }\n void prefetchRoute(container, href)\n }\n\n if (mode === 'hover' || mode === 'intent') {\n link.addEventListener('mouseenter', runPrefetch)\n }\n if (mode === 'focus' || mode === 'intent') {\n link.addEventListener('focus', runPrefetch)\n }\n}\n\nconst bindRouterLink = (container: RuntimeContainer, link: HTMLAnchorElement) => {\n const boundLink = link as HTMLAnchorElement & {\n [ROUTER_LINK_BOUND_KEY]?: true\n }\n if (boundLink[ROUTER_LINK_BOUND_KEY]) {\n return\n }\n\n boundLink[ROUTER_LINK_BOUND_KEY] = true\n link.addEventListener('click', (event) => {\n const pendingLink = getPendingLinkNavigationForLink(container, event, link)\n if (!pendingLink || pendingLink.state.userPrevented) {\n return\n }\n void navigateContainer(container, pendingLink.href, {\n mode: pendingLink.replace ? 'replace' : 'push',\n })\n })\n}\n\nconst bindRouterLinks = (container: RuntimeContainer, root: ParentNode) => {\n const links = root.querySelectorAll(`a[${ROUTE_LINK_ATTR}]`)\n for (const link of links) {\n if (!isHTMLAnchorElementNode(link)) {\n continue\n }\n bindRouterLinkPrefetch(container, link)\n bindRouterLink(container, link)\n }\n}\n\nconst parseBinding = (value: string): { scopeId: string; symbolId: string } => {\n const separatorIndex = value.indexOf(':')\n if (separatorIndex < 0) {\n throw new Error(`Invalid binding ${value}.`)\n }\n return {\n symbolId: value.slice(0, separatorIndex),\n scopeId: value.slice(separatorIndex + 1),\n }\n}\n\nconst withClientContainer = async <T>(container: RuntimeContainer, fn: () => Promise<T> | T) =>\n pushContainer(container, () => Promise.resolve(fn()))\n\nconst createDelegatedEvent = (event: Event, currentTarget: Element) =>\n Object.create(event, {\n currentTarget: {\n value: currentTarget,\n },\n }) as Event\n\nexport const createClientLazyListener = (\n descriptor: EventDescriptor | LazyMeta,\n currentTarget: Element,\n) => {\n const container = getCurrentContainer()\n if (!container) {\n return null\n }\n\n return async (event: Event) => {\n const module = await loadSymbol(container, descriptor.symbol)\n await withClientContainer(container, async () => {\n await module.default(descriptor.captures(), createDelegatedEvent(event, currentTarget))\n })\n await flushDirtyComponents(container)\n }\n}\n\nexport const dispatchResumeEvent = async (container: RuntimeContainer, event: Event) => {\n const interactiveTarget = findInteractiveTarget(event.target, event.type)\n if (!interactiveTarget) {\n return\n }\n const pendingFocus = capturePendingFocusRestore(container, event.target)\n\n const binding = interactiveTarget.getAttribute(`data-e-on${event.type}`)\n if (!binding) {\n return\n }\n\n const { scopeId, symbolId } = parseBinding(binding)\n const module = await loadSymbol(container, symbolId)\n await withClientContainer(container, async () => {\n await module.default(\n materializeScope(container, scopeId),\n createDelegatedEvent(event, interactiveTarget),\n )\n })\n await flushDirtyComponents(container)\n restorePendingFocus(container, pendingFocus)\n}\n\nconst dispatchDocumentEvent = async (container: RuntimeContainer, event: Event) => {\n await dispatchResumeEvent(container, event)\n if (event.type === 'submit' && !event.defaultPrevented && isHTMLFormElementNode(event.target)) {\n const actionId = event.target.getAttribute(ACTION_FORM_ATTR)\n if (actionId) {\n const handle = container.actions.get(actionId) as\n | {\n action: (input?: unknown) => Promise<unknown>\n }\n | undefined\n if (handle) {\n event.preventDefault()\n const submitter =\n typeof SubmitEvent !== 'undefined' && event instanceof SubmitEvent\n ? (event.submitter ?? undefined)\n : undefined\n const formData = isHTMLElementNode(submitter)\n ? new FormData(event.target, submitter)\n : new FormData(event.target)\n await handle.action(formData)\n await flushDirtyComponents(container)\n }\n }\n }\n}\n\nexport const installResumeListeners = (container: RuntimeContainer) => {\n const doc = container.doc\n if (!doc) {\n return () => {}\n }\n bindRouterLinks(container, doc)\n installStreamedSuspenseController(container)\n ensureVisibilityListeners(container)\n scheduleVisibleCallbacksCheck(container)\n const listeners = ['click', 'input', 'change', 'submit'] as const\n const onEvent = (event: Event) => {\n void dispatchDocumentEvent(container, event)\n }\n const onPopState = () => {\n void navigateContainer(container, doc.location.href, {\n mode: 'pop',\n })\n }\n\n for (const eventName of listeners) {\n doc.addEventListener(eventName, onEvent, true)\n }\n doc.defaultView?.addEventListener('popstate', onPopState)\n\n return () => {\n for (const eventName of listeners) {\n doc.removeEventListener(eventName, onEvent, true)\n }\n doc.defaultView?.removeEventListener('popstate', onPopState)\n container.visibilityListenersCleanup?.()\n }\n}\n\nexport const renderString = (inputElementLike: JSX.Element | JSX.Element[]) =>\n renderStringNode(inputElementLike)\n\nexport const createStandaloneRuntimeSignal = <T>(fallback: T): { value: T } => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const nextId = ((globalRecord[STANDALONE_SIGNAL_ID_KEY] as number | undefined) ?? 0) + 1\n globalRecord[STANDALONE_SIGNAL_ID_KEY] = nextId\n return ensureSignalRecord(null, `$standalone:${nextId}`, fallback).handle\n}\n\nexport const useRuntimeSignal = <T>(fallback: T): { value: T } => {\n const container = getCurrentContainer()\n const frame = getCurrentFrame()\n\n if (!container || !frame || frame.component.id === ROOT_COMPONENT_ID) {\n throw new Error('useSignal() can only be used while rendering a component.')\n }\n\n const signalIndex = frame.signalCursor++\n const existingId = frame.component.signalIds[signalIndex]\n const signalId = existingId ?? `s${container.nextSignalId++}`\n if (!existingId) {\n frame.component.signalIds.push(signalId)\n }\n const record = ensureSignalRecord(container, signalId, fallback)\n recordSignalRead(record)\n return record.handle\n}\n\nexport const createDetachedRuntimeSignal = <T>(\n container: RuntimeContainer,\n id: string,\n fallback: T,\n): { value: T } => ensureSignalRecord(container, id, fallback).handle\n\nexport const getRuntimeSignalId = (value: unknown) => getSignalMeta(value)?.id ?? null\n\nexport const useRuntimeNavigate = (): Navigate => {\n const container = getCurrentContainer()\n if (!container) {\n return createStandaloneNavigate()\n }\n return ensureRouterState(container).navigate\n}\n\nexport const useRuntimeRouteParams = (): RouteParams => {\n const frame = getCurrentFrame()\n if (frame?.component.props && typeof frame.component.props === 'object') {\n const candidate = (frame.component.props as Record<string, unknown>)[ROUTE_PARAMS_PROP]\n if (candidate && typeof candidate === 'object') {\n return candidate as RouteParams\n }\n }\n const container = getCurrentContainer()\n return container?.router?.currentRoute?.params ?? EMPTY_ROUTE_PARAMS\n}\n\nexport const notFound = (): never => {\n throw {\n __eclipsa_not_found__: true,\n [ROUTE_NOT_FOUND_KEY]: true,\n }\n}\n\nexport const isRouteNotFoundError = (error: unknown) =>\n !!error &&\n typeof error === 'object' &&\n ((error as { __eclipsa_not_found__?: boolean }).__eclipsa_not_found__ === true ||\n (error as Record<PropertyKey, unknown>)[ROUTE_NOT_FOUND_KEY] === true)\n\nexport const createEffect = (fn: () => void) => {\n const effect: ReactiveEffect = {\n fn() {\n collectTrackedDependencies(effect, fn)\n },\n signals: new Set(),\n }\n\n effect.fn()\n}\n\nexport const createOnCleanup = (fn: () => void) => {\n if (!currentCleanupSlot) {\n throw new Error(\n 'onCleanup() can only be used while running onMount(), onVisible(), or useWatch() callbacks.',\n )\n }\n currentCleanupSlot.callbacks.push(fn)\n}\n\nexport const createOnMount = (fn: () => void) => {\n const frame = getCurrentFrame()\n if (!frame || frame.component.id === ROOT_COMPONENT_ID || frame.mode !== 'client') {\n return\n }\n frame.mountCallbacks.push(fn)\n}\n\nexport const createOnVisible = (fn: () => void) => {\n const container = getCurrentContainer()\n const frame = getCurrentFrame()\n const lazyMeta = getLazyMeta(fn)\n\n if (!container || !frame || frame.component.id === ROOT_COMPONENT_ID) {\n return\n }\n\n if (!lazyMeta && frame.mode === 'ssr') {\n return\n }\n\n const visibleIndex = frame.visibleCursor++\n const visibleId = createVisibleId(frame.component.id, visibleIndex)\n const visible = getOrCreateVisibleState(container, visibleId, frame.component.id)\n visible.scopeId = lazyMeta\n ? registerScope(container, lazyMeta.captures())\n : registerScope(container, [])\n visible.symbol = lazyMeta?.symbol ?? ''\n visible.run = lazyMeta ? null : fn\n\n scheduleVisibleCallbacksCheck(container)\n}\n\nexport const createWatch = (fn: () => void, dependencies?: WatchDependency[]) => {\n const container = getCurrentContainer()\n const frame = getCurrentFrame()\n const watchMeta = getWatchMeta(fn)\n\n if (!container || !frame || frame.component.id === ROOT_COMPONENT_ID || !watchMeta) {\n const cleanupSlot = createCleanupSlot()\n const effect: ReactiveEffect = {\n fn() {\n createLocalWatchRunner(effect, cleanupSlot, fn, dependencies)()\n },\n signals: new Set(),\n }\n effect.fn()\n return\n }\n\n const watchIndex = frame.watchCursor++\n const watchId = createWatchId(frame.component.id, watchIndex)\n const watch = getOrCreateWatchState(container, watchId, frame.component.id)\n watch.mode = dependencies ? 'explicit' : 'dynamic'\n watch.scopeId = registerScope(container, watchMeta.captures())\n watch.symbol = watchMeta.symbol\n watch.track = dependencies ? () => trackWatchDependencies(dependencies) : null\n watch.run = createLocalWatchRunner(watch.effect, watch.cleanupSlot, fn, dependencies)\n watch.effect.fn()\n}\n\nexport const getResumePayloadScriptContent = (payload: ResumePayload) =>\n escapeJSONScriptText(JSON.stringify(payload))\n","import type { JSX } from '../jsx/types.ts'\nimport { component$ } from './component.ts'\nimport type { Context } from 'hono'\nimport type { Env, MiddlewareHandler, Next } from 'hono/types'\nimport {\n deserializeValue,\n serializeValue,\n type SerializedReference,\n type SerializedValue,\n} from './serialize.ts'\nimport {\n createDetachedRuntimeSignal,\n ensureRuntimeElementId,\n findRuntimeElement,\n getRuntimeContainer,\n getRuntimeSignalId,\n type RuntimeContainer,\n} from './runtime.ts'\nimport { registerActionHook, setActionHandleMeta, setActionHookMeta } from './internal.ts'\n\nconst ACTION_REGISTRY_KEY = Symbol.for('eclipsa.action-registry')\nexport const ACTION_CONTENT_TYPE = 'application/eclipsa-action+json'\nconst ACTION_STREAM_CONTENT_TYPE = 'application/eclipsa-action-stream+json'\nexport const ACTION_FORM_ATTR = 'data-e-action-form'\nexport const ACTION_FORM_FIELD = '__e_action'\nconst ACTION_INPUT_CACHE_KEY = Symbol.for('eclipsa.action-input-cache')\n\ndeclare const ACTION_REF_BRAND: unique symbol\ndeclare const ACTION_INPUT_TYPE: unique symbol\n\nexport interface StandardSchemaIssue {\n message: string\n path?: ReadonlyArray<PropertyKey | { readonly key: PropertyKey }>\n}\n\nexport type StandardSchemaResult<T> =\n | {\n issues: readonly StandardSchemaIssue[]\n }\n | {\n issues?: undefined\n value: T\n }\n\nexport interface StandardSchemaV1<Input = unknown, Output = Input> {\n readonly '~standard': {\n readonly validate: (\n value: unknown,\n options?: { readonly libraryOptions?: Record<string, unknown> },\n ) => StandardSchemaResult<Output> | Promise<StandardSchemaResult<Output>>\n readonly types?:\n | {\n readonly input: Input\n readonly output: Output\n }\n | undefined\n readonly vendor: string\n readonly version: 1\n }\n}\n\nexport type InferStandardSchemaInput<Schema extends StandardSchemaV1<any, any>> = NonNullable<\n Schema['~standard']['types']\n>['input']\n\nexport type InferStandardSchemaOutput<Schema extends StandardSchemaV1<any, any>> = NonNullable<\n Schema['~standard']['types']\n>['output']\n\nexport interface OpaqueSignalRef {\n readonly [ACTION_REF_BRAND]?: 'signal'\n readonly containerId: string | null\n readonly kind: 'signal-ref'\n readonly token: string\n}\n\nexport interface OpaqueDomRef {\n readonly [ACTION_REF_BRAND]?: 'dom'\n readonly containerId: string | null\n readonly kind: 'dom-ref'\n readonly token: string\n}\n\nexport type ActionOpaqueRef = OpaqueSignalRef | OpaqueDomRef\n\ntype MiddlewareEnv<T> = T extends {\n readonly __eclipsa_action_env__?: infer MiddlewareEnv\n}\n ? Exclude<MiddlewareEnv, undefined> extends Env\n ? Exclude<MiddlewareEnv, undefined>\n : {}\n : T extends MiddlewareHandler<infer MiddlewareEnv, any, any>\n ? MiddlewareEnv\n : {}\n\ntype ActionEnv<Middlewares extends readonly ActionMiddleware<any>[]> =\n Middlewares extends readonly [infer Head, ...infer Tail]\n ? Tail extends readonly ActionMiddleware<any>[]\n ? MiddlewareEnv<Head> & ActionEnv<Tail>\n : MiddlewareEnv<Head>\n : {}\ntype MiddlewareActionInput<T> = T extends {\n readonly [ACTION_INPUT_TYPE]?: infer Input\n}\n ? Exclude<Input, undefined>\n : never\n\ntype ActionInput<Middlewares extends readonly ActionMiddleware<any>[]> = [\n MiddlewareActionInput<Middlewares[number]>,\n] extends [never]\n ? unknown\n : MiddlewareActionInput<Middlewares[number]>\n\ntype ActionInvoker<Input, Output> = unknown extends Input\n ? (input?: Input | FormData) => Promise<Output>\n : undefined extends Input\n ? (input?: Input | FormData) => Promise<Output>\n : (input: Input | FormData) => Promise<Output>\n\nexport interface ActionSubmission<Input, Output> {\n readonly error: unknown\n readonly input: Input\n readonly result: Output | undefined\n}\n\nexport interface ActionFormProps extends Record<string, unknown> {\n children?: JSX.Element | JSX.Element[]\n}\n\nexport interface ActionHandle<Input, Output> {\n Form: (props: ActionFormProps) => JSX.Element\n action: ActionInvoker<Input, Output>\n readonly error: unknown\n readonly formActionId: string\n readonly isPending: boolean\n readonly lastSubmission: ActionSubmission<Input, Output> | undefined\n readonly result: Output | undefined\n}\n\nexport interface ActionMiddleware<E extends Env = Env> extends MiddlewareHandler<E> {\n readonly __eclipsa_action_env__?: E\n}\nexport interface ActionValidatorMiddleware<Input, Output> extends ActionMiddleware<{\n Variables: {\n input: Output\n }\n}> {\n readonly [ACTION_INPUT_TYPE]?: Input\n}\nexport type ActionHandler<E extends Env = Env, Output = unknown> = (\n c: Context<E>,\n) => Output | Promise<Output>\n\ntype ActionUse<Middlewares extends readonly ActionMiddleware<any>[], Output> = () => ActionHandle<\n ActionInput<Middlewares>,\n Output\n>\n\nexport interface ActionFactory {\n <Output>(handler: ActionHandler<{}, Output>): ActionUse<[], Output>\n <M1 extends ActionMiddleware<any>, Output>(\n middleware1: M1,\n handler: ActionHandler<ActionEnv<[M1]>, Output>,\n ): ActionUse<[M1], Output>\n <M1 extends ActionMiddleware<any>, M2 extends ActionMiddleware<any>, Output>(\n middleware1: M1,\n middleware2: M2,\n handler: ActionHandler<ActionEnv<[M1, M2]>, Output>,\n ): ActionUse<[M1, M2], Output>\n <\n M1 extends ActionMiddleware<any>,\n M2 extends ActionMiddleware<any>,\n M3 extends ActionMiddleware<any>,\n Output,\n >(\n middleware1: M1,\n middleware2: M2,\n middleware3: M3,\n handler: ActionHandler<ActionEnv<[M1, M2, M3]>, Output>,\n ): ActionUse<[M1, M2, M3], Output>\n <\n M1 extends ActionMiddleware<any>,\n M2 extends ActionMiddleware<any>,\n M3 extends ActionMiddleware<any>,\n M4 extends ActionMiddleware<any>,\n Output,\n >(\n middleware1: M1,\n middleware2: M2,\n middleware3: M3,\n middleware4: M4,\n handler: ActionHandler<ActionEnv<[M1, M2, M3, M4]>, Output>,\n ): ActionUse<[M1, M2, M3, M4], Output>\n <\n M1 extends ActionMiddleware<any>,\n M2 extends ActionMiddleware<any>,\n M3 extends ActionMiddleware<any>,\n M4 extends ActionMiddleware<any>,\n M5 extends ActionMiddleware<any>,\n Output,\n >(\n middleware1: M1,\n middleware2: M2,\n middleware3: M3,\n middleware4: M4,\n middleware5: M5,\n handler: ActionHandler<ActionEnv<[M1, M2, M3, M4, M5]>, Output>,\n ): ActionUse<[M1, M2, M3, M4, M5], Output>\n}\n\ninterface RegisteredAction {\n handler: ActionHandler<any, unknown>\n id: string\n middlewares: ActionMiddleware<any>[]\n}\n\ninterface ActionJsonSuccess {\n ok: true\n value: SerializedValue\n}\n\ninterface ActionJsonFailure {\n error: SerializedValue\n ok: false\n}\n\ninterface ActionStateSnapshot {\n error: unknown\n input: unknown\n result: unknown\n}\n\ninterface ActionExecutionValue {\n input: unknown\n kind: 'value'\n value: unknown\n}\n\ninterface ActionExecutionResponse {\n input: unknown\n kind: 'response'\n response: Response\n}\n\ntype ActionExecutionResult = ActionExecutionResponse | ActionExecutionValue\n\ninterface StreamChunkFrame {\n type: 'chunk'\n value: SerializedValue\n}\n\ninterface StreamDoneFrame {\n type: 'done'\n}\n\ninterface StreamErrorFrame {\n error: SerializedValue\n type: 'error'\n}\n\ntype ActionStreamFrame = StreamChunkFrame | StreamDoneFrame | StreamErrorFrame\n\nconst getActionRegistry = () => {\n const globalRecord = globalThis as Record<PropertyKey, unknown>\n const existing = globalRecord[ACTION_REGISTRY_KEY]\n if (existing instanceof Map) {\n return existing as Map<string, RegisteredAction>\n }\n const created = new Map<string, RegisteredAction>()\n globalRecord[ACTION_REGISTRY_KEY] = created\n return created\n}\n\nconst isFormDataValue = (value: unknown): value is FormData =>\n typeof FormData !== 'undefined' && value instanceof FormData\n\nconst formDataToInputObject = (value: FormData) => {\n const result: Record<string, FormDataEntryValue | FormDataEntryValue[]> = {}\n for (const [key, entry] of value.entries()) {\n const existing = result[key]\n if (existing === undefined) {\n result[key] = entry\n continue\n }\n result[key] = Array.isArray(existing) ? [...existing, entry] : [existing, entry]\n }\n return result\n}\n\nconst normalizeFormSubmissionInput = (value: unknown) => {\n if (!isFormDataValue(value)) {\n return value\n }\n const normalized = formDataToInputObject(value)\n return Object.fromEntries(\n Object.entries(normalized).flatMap(([key, entry]) => {\n if (key === ACTION_FORM_FIELD) {\n return []\n }\n if (Array.isArray(entry)) {\n const values = entry\n .filter((candidate): candidate is string => typeof candidate === 'string')\n .map((candidate) => candidate)\n return values.length > 0 ? [[key, values.length === 1 ? values[0] : values]] : []\n }\n return typeof entry === 'string' ? [[key, entry]] : []\n }),\n )\n}\n\nconst getActionInputCache = (c: Context<any>) => {\n const record = c as Context<any> & {\n [ACTION_INPUT_CACHE_KEY]?: Promise<unknown>\n }\n if (!record[ACTION_INPUT_CACHE_KEY]) {\n record[ACTION_INPUT_CACHE_KEY] = (async () => {\n const contentType = c.req.header('content-type') ?? ''\n if (contentType.startsWith(ACTION_CONTENT_TYPE)) {\n let parsedBody: unknown\n try {\n parsedBody = await c.req.json()\n } catch {\n throw new TypeError('Action input must be valid JSON.')\n }\n if (!parsedBody || typeof parsedBody !== 'object' || !('input' in parsedBody)) {\n throw new TypeError('Action request body must contain an input field.')\n }\n return deserializeActionServerValue((parsedBody as { input: SerializedValue }).input)\n }\n if (\n contentType.startsWith('application/x-www-form-urlencoded') ||\n contentType.startsWith('multipart/form-data')\n ) {\n return c.req.formData()\n }\n return undefined\n })()\n }\n return record[ACTION_INPUT_CACHE_KEY]!\n}\n\nconst createActionRefScope = (container: RuntimeContainer | null) =>\n container ? serializeValue({ container: container.id }) : undefined\n\nconst readActionRefContainerId = (reference: SerializedReference) => {\n if (!reference.data) {\n return null\n }\n const decoded = deserializeValue(reference.data)\n if (!decoded || typeof decoded !== 'object') {\n return null\n }\n const containerId = (decoded as Record<string, unknown>).container\n return typeof containerId === 'string' ? containerId : null\n}\n\nconst serializeActionClientValue = (container: RuntimeContainer | null, value: unknown) =>\n serializeValue(value, {\n serializeReference(candidate) {\n const signalId = getRuntimeSignalId(candidate)\n if (signalId) {\n return {\n __eclipsa_type: 'ref',\n data: createActionRefScope(container),\n kind: 'signal',\n token: signalId,\n }\n }\n if (container && typeof Element !== 'undefined' && candidate instanceof Element) {\n return {\n __eclipsa_type: 'ref',\n data: createActionRefScope(container),\n kind: 'dom',\n token: ensureRuntimeElementId(container, candidate),\n }\n }\n return null\n },\n })\n\nconst deserializeActionServerValue = (value: SerializedValue) =>\n deserializeValue(value, {\n deserializeReference(reference) {\n const containerId = readActionRefContainerId(reference)\n if (reference.kind === 'signal') {\n return {\n containerId,\n kind: 'signal-ref',\n token: reference.token,\n } satisfies OpaqueSignalRef\n }\n if (reference.kind === 'dom') {\n return {\n containerId,\n kind: 'dom-ref',\n token: reference.token,\n } satisfies OpaqueDomRef\n }\n throw new TypeError(`Unsupported action input reference kind \"${reference.kind}\".`)\n },\n })\n\nconst deserializeActionClientValue = (container: RuntimeContainer | null, value: SerializedValue) =>\n deserializeValue(value, {\n deserializeReference(reference) {\n if (!container) {\n throw new TypeError('Action references require an active runtime container.')\n }\n const containerId = readActionRefContainerId(reference)\n if (containerId !== container.id) {\n throw new TypeError('Action reference does not belong to the active runtime container.')\n }\n if (reference.kind === 'signal') {\n const signal = container.signals.get(reference.token)\n if (!signal) {\n throw new Error(`Missing action signal ${reference.token}.`)\n }\n return signal.handle\n }\n if (reference.kind === 'dom') {\n const element = findRuntimeElement(container, reference.token)\n if (!element) {\n throw new Error(`Missing action DOM ref ${reference.token}.`)\n }\n return element\n }\n throw new TypeError(`Unsupported action output reference kind \"${reference.kind}\".`)\n },\n })\n\nconst isOpaqueSignalRef = (value: unknown): value is OpaqueSignalRef =>\n !!value &&\n typeof value === 'object' &&\n (value as Record<string, unknown>).kind === 'signal-ref' &&\n typeof (value as Record<string, unknown>).token === 'string'\n\nconst isOpaqueDomRef = (value: unknown): value is OpaqueDomRef =>\n !!value &&\n typeof value === 'object' &&\n (value as Record<string, unknown>).kind === 'dom-ref' &&\n typeof (value as Record<string, unknown>).token === 'string'\n\nconst serializeActionServerValue = (value: unknown) =>\n serializeValue(value, {\n serializeReference(candidate) {\n if (isOpaqueSignalRef(candidate)) {\n return {\n __eclipsa_type: 'ref',\n data:\n candidate.containerId === null\n ? undefined\n : serializeValue({\n container: candidate.containerId,\n }),\n kind: 'signal',\n token: candidate.token,\n }\n }\n if (isOpaqueDomRef(candidate)) {\n return {\n __eclipsa_type: 'ref',\n data:\n candidate.containerId === null\n ? undefined\n : serializeValue({\n container: candidate.containerId,\n }),\n kind: 'dom',\n token: candidate.token,\n }\n }\n return null\n },\n })\n\nconst isReadableStreamValue = (value: unknown): value is ReadableStream<unknown> =>\n typeof ReadableStream !== 'undefined' && value instanceof ReadableStream\n\nconst isAsyncGeneratorValue = (\n value: unknown,\n): value is AsyncGenerator<unknown, unknown, unknown> | AsyncIterable<unknown> =>\n !!value && typeof value === 'object' && Symbol.asyncIterator in value\n\nconst toSerializedActionError = (error: unknown): SerializedValue => {\n if (error instanceof Error) {\n return serializeActionServerValue({\n message: error.message,\n name: error.name,\n })\n }\n try {\n return serializeActionServerValue(error)\n } catch {\n return serializeActionServerValue({\n message: 'Action failed.',\n })\n }\n}\n\nconst toAsyncIterable = async function* (\n value: ReadableStream<unknown> | AsyncIterable<unknown>,\n): AsyncGenerator<unknown, void, void> {\n if (isReadableStreamValue(value)) {\n const reader = value.getReader()\n try {\n while (true) {\n const next = await reader.read()\n if (next.done) {\n return\n }\n yield next.value\n }\n } finally {\n reader.releaseLock()\n }\n }\n yield* value\n}\n\nconst encodeStreamFrame = (frame: ActionStreamFrame) =>\n `${JSON.stringify(frame)}\n`\n\nconst streamActionValue = (\n value: ReadableStream<unknown> | AsyncIterable<unknown>,\n serializeChunk: (value: unknown) => SerializedValue,\n) => {\n const encoder = new TextEncoder()\n\n return new ReadableStream<Uint8Array>({\n async start(controller) {\n try {\n for await (const chunk of toAsyncIterable(value)) {\n controller.enqueue(\n encoder.encode(\n encodeStreamFrame({\n type: 'chunk',\n value: serializeChunk(chunk),\n }),\n ),\n )\n }\n controller.enqueue(\n encoder.encode(\n encodeStreamFrame({\n type: 'done',\n }),\n ),\n )\n } catch (error) {\n controller.enqueue(\n encoder.encode(\n encodeStreamFrame({\n error: toSerializedActionError(error),\n type: 'error',\n }),\n ),\n )\n } finally {\n controller.close()\n }\n },\n })\n}\n\nconst parseJsonActionResponse = async (response: Response, container: RuntimeContainer | null) => {\n const body = (await response.json()) as ActionJsonFailure | ActionJsonSuccess\n if (!body || typeof body !== 'object' || typeof body.ok !== 'boolean') {\n throw new TypeError('Malformed action response.')\n }\n if (!body.ok) {\n throw deserializeActionClientValue(container, body.error)\n }\n return deserializeActionClientValue(container, body.value)\n}\n\nconst iterateStreamFrames = async function* (\n body: ReadableStream<Uint8Array>,\n): AsyncGenerator<ActionStreamFrame, void, void> {\n const reader = body.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n\n try {\n while (true) {\n const next = await reader.read()\n if (next.done) {\n break\n }\n buffer += decoder.decode(next.value, { stream: true })\n while (true) {\n const newlineIndex = buffer.indexOf('\\n')\n if (newlineIndex < 0) {\n break\n }\n const line = buffer.slice(0, newlineIndex).trim()\n buffer = buffer.slice(newlineIndex + 1)\n if (!line) {\n continue\n }\n yield JSON.parse(line) as ActionStreamFrame\n }\n }\n const trailing = buffer.trim()\n if (trailing) {\n yield JSON.parse(trailing) as ActionStreamFrame\n }\n } finally {\n reader.releaseLock()\n }\n}\n\nconst toClientStream = (response: Response, container: RuntimeContainer | null) => {\n if (!response.body) {\n throw new TypeError('Missing action stream body.')\n }\n return new ReadableStream<unknown>({\n async start(controller) {\n try {\n for await (const frame of iterateStreamFrames(response.body!)) {\n if (frame.type === 'chunk') {\n controller.enqueue(deserializeActionClientValue(container, frame.value))\n continue\n }\n if (frame.type === 'done') {\n controller.close()\n return\n }\n controller.error(deserializeActionClientValue(container, frame.error))\n return\n }\n controller.close()\n } catch (error) {\n controller.error(error)\n }\n },\n })\n}\n\nconst toClientAsyncGenerator = async function* (\n response: Response,\n container: RuntimeContainer | null,\n) {\n if (!response.body) {\n throw new TypeError('Missing action stream body.')\n }\n for await (const frame of iterateStreamFrames(response.body)) {\n if (frame.type === 'chunk') {\n yield deserializeActionClientValue(container, frame.value)\n continue\n }\n if (frame.type === 'done') {\n return\n }\n throw deserializeActionClientValue(container, frame.error)\n }\n}\n\nconst invokeAction = async (id: string, input: unknown, container: RuntimeContainer | null) => {\n const isFormSubmission = isFormDataValue(input)\n const response = await fetch(`/__eclipsa/action/${encodeURIComponent(id)}`, {\n body: isFormSubmission\n ? input\n : JSON.stringify({\n input: serializeActionClientValue(container, input),\n }),\n headers: {\n accept: `${ACTION_STREAM_CONTENT_TYPE}, ${ACTION_CONTENT_TYPE}`,\n ...(isFormSubmission ? {} : { 'content-type': ACTION_CONTENT_TYPE }),\n },\n method: 'POST',\n })\n const contentType = response.headers.get('content-type') ?? ''\n const streamKind = response.headers.get('x-eclipsa-stream-kind')\n if (contentType.startsWith(ACTION_STREAM_CONTENT_TYPE)) {\n if (streamKind === 'async-generator') {\n return toClientAsyncGenerator(response, container)\n }\n return toClientStream(response, container)\n }\n return parseJsonActionResponse(response, container)\n}\n\nconst composeMiddlewares = async (\n c: Context<any>,\n middlewares: ActionMiddleware<any>[],\n handler: ActionHandler<any, unknown>,\n): Promise<Response | unknown> => {\n let index = -1\n const dispatch = async (nextIndex: number): Promise<Response | unknown> => {\n if (nextIndex <= index) {\n throw new Error('Action middleware called next() multiple times.')\n }\n index = nextIndex\n const middleware = middlewares[nextIndex]\n if (!middleware) {\n return handler(c)\n }\n let nextResult: Response | unknown = undefined\n const result = await middleware(c, (async () => {\n nextResult = await dispatch(nextIndex + 1)\n }) as Next)\n if (result !== undefined) {\n return result\n }\n return nextResult\n }\n return dispatch(0)\n}\n\nconst toActionResponse = (value: unknown): Response => {\n if (value instanceof Response) {\n return value\n }\n if (isReadableStreamValue(value)) {\n return new Response(\n streamActionValue(value, (entry) => serializeActionServerValue(entry)),\n {\n headers: {\n 'content-type': ACTION_STREAM_CONTENT_TYPE,\n 'x-eclipsa-stream-kind': 'readable-stream',\n },\n },\n )\n }\n if (isAsyncGeneratorValue(value)) {\n return new Response(\n streamActionValue(value, (entry) => serializeActionServerValue(entry)),\n {\n headers: {\n 'content-type': ACTION_STREAM_CONTENT_TYPE,\n 'x-eclipsa-stream-kind': 'async-generator',\n },\n },\n )\n }\n return new Response(\n JSON.stringify({\n ok: true,\n value: serializeActionServerValue(value),\n } satisfies ActionJsonSuccess),\n {\n headers: {\n 'content-type': ACTION_CONTENT_TYPE,\n },\n },\n )\n}\n\nconst createHandleSignal = <T>(\n container: RuntimeContainer | null,\n id: string,\n key: string,\n initialValue: T,\n) => {\n if (!container) {\n throw new Error('Action handles require an active runtime container.')\n }\n return createDetachedRuntimeSignal(container, `$action:${id}:${key}`, initialValue)\n}\n\nconst readActionSubmissionInput = async (c: Context<any>) => {\n const cached = await getActionInputCache(c)\n const actionVars = c.var as Record<string, unknown>\n return normalizeFormSubmissionInput(actionVars.__e_action_raw_input ?? cached)\n}\n\nexport const getNormalizedActionInput = (c: Context<any>) => readActionSubmissionInput(c)\n\nexport const getActionFormSubmissionId = async (c: Context<any>) => {\n const input = await getActionInputCache(c)\n if (!isFormDataValue(input)) {\n return null\n }\n const actionId = input.get(ACTION_FORM_FIELD)\n return typeof actionId === 'string' && actionId ? actionId : null\n}\n\nexport const executeActionSubmission = async (\n id: string,\n c: Context<any>,\n): Promise<ActionExecutionResult> => {\n const action = getActionRegistry().get(id)\n if (!action) {\n throw new Error(`Unknown action ${id}.`)\n }\n const input = await readActionSubmissionInput(c)\n const result = await composeMiddlewares(c, action.middlewares, action.handler)\n if (result instanceof Response) {\n return {\n input,\n kind: 'response',\n response: result,\n }\n }\n return {\n input,\n kind: 'value',\n value: result,\n }\n}\n\nexport const primeActionState = (\n container: RuntimeContainer,\n id: string,\n snapshot: ActionStateSnapshot,\n) => {\n container.actionStates.set(id, {\n error: snapshot.error,\n input: snapshot.input,\n result: snapshot.result,\n })\n}\n\nconst appendClientChildren = (parent: Element, value: unknown) => {\n let resolved = value\n while (typeof resolved === 'function') {\n resolved = resolved()\n }\n\n if (Array.isArray(resolved)) {\n for (const entry of resolved) {\n appendClientChildren(parent, entry)\n }\n return\n }\n if (resolved === null || resolved === undefined || resolved === false) {\n return\n }\n if (resolved instanceof Node) {\n parent.appendChild(resolved)\n return\n }\n\n parent.appendChild(document.createTextNode(String(resolved)))\n}\n\nconst createActionFormNode = (id: string, props: ActionFormProps) => {\n const form = document.createElement('form')\n form.setAttribute(ACTION_FORM_ATTR, id)\n form.setAttribute('method', 'post')\n\n const hiddenInput = document.createElement('input')\n hiddenInput.name = ACTION_FORM_FIELD\n hiddenInput.type = 'hidden'\n hiddenInput.value = id\n form.appendChild(hiddenInput)\n\n for (const [name, value] of Object.entries(props)) {\n if (\n name === 'children' ||\n name === 'action' ||\n name === 'method' ||\n value === false ||\n value === undefined ||\n value === null\n ) {\n continue\n }\n if (name === 'class') {\n form.className = String(value)\n continue\n }\n if (name === 'style' && value && typeof value === 'object') {\n form.setAttribute(\n 'style',\n Object.entries(value as Record<string, unknown>)\n .map(([styleName, styleValue]) => `${styleName}: ${styleValue}`)\n .join('; '),\n )\n continue\n }\n if (value === true) {\n form.setAttribute(name, '')\n continue\n }\n form.setAttribute(name, String(value))\n }\n\n appendClientChildren(form, props.children)\n return form\n}\n\nexport const action$: ActionFactory = (() => {\n throw new Error('action$() must be compiled by the Eclipsa analyzer before it can run.')\n}) as ActionFactory\n\nexport const validator = <Schema extends StandardSchemaV1<any, any>>(\n schema: Schema,\n): ActionValidatorMiddleware<\n InferStandardSchemaInput<Schema>,\n InferStandardSchemaOutput<Schema>\n> => {\n const middleware = async (c: any, next: any) => {\n let parsedBody: unknown\n try {\n parsedBody = await getActionInputCache(c)\n } catch (error) {\n return c.json(\n {\n error: serializeValue({\n issues: [\n {\n message:\n error instanceof Error && error.message\n ? error.message\n : 'Action input could not be parsed.',\n },\n ],\n }),\n ok: false,\n } satisfies ActionJsonFailure,\n 400,\n )\n }\n const rawInput = normalizeFormSubmissionInput(parsedBody)\n const validated = await schema['~standard'].validate(rawInput)\n if ('issues' in validated) {\n return c.json(\n {\n error: serializeValue({\n issues: validated.issues,\n }),\n ok: false,\n } satisfies ActionJsonFailure,\n 400,\n )\n }\n c.set('__e_action_raw_input', rawInput)\n c.set('input', validated.value as InferStandardSchemaOutput<Schema>)\n await next()\n }\n return middleware as ActionValidatorMiddleware<\n InferStandardSchemaInput<Schema>,\n InferStandardSchemaOutput<Schema>\n >\n}\n\nexport function registerAction<Output>(\n id: string,\n middlewares: readonly [],\n handler: ActionHandler<{}, Output>,\n): void\nexport function registerAction<M1 extends ActionMiddleware<any>, Output>(\n id: string,\n middlewares: readonly [M1],\n handler: ActionHandler<ActionEnv<[M1]>, Output>,\n): void\nexport function registerAction<\n M1 extends ActionMiddleware<any>,\n M2 extends ActionMiddleware<any>,\n Output,\n>(\n id: string,\n middlewares: readonly [M1, M2],\n handler: ActionHandler<ActionEnv<[M1, M2]>, Output>,\n): void\nexport function registerAction<\n M1 extends ActionMiddleware<any>,\n M2 extends ActionMiddleware<any>,\n M3 extends ActionMiddleware<any>,\n Output,\n>(\n id: string,\n middlewares: readonly [M1, M2, M3],\n handler: ActionHandler<ActionEnv<[M1, M2, M3]>, Output>,\n): void\nexport function registerAction<\n M1 extends ActionMiddleware<any>,\n M2 extends ActionMiddleware<any>,\n M3 extends ActionMiddleware<any>,\n M4 extends ActionMiddleware<any>,\n Output,\n>(\n id: string,\n middlewares: readonly [M1, M2, M3, M4],\n handler: ActionHandler<ActionEnv<[M1, M2, M3, M4]>, Output>,\n): void\nexport function registerAction<\n M1 extends ActionMiddleware<any>,\n M2 extends ActionMiddleware<any>,\n M3 extends ActionMiddleware<any>,\n M4 extends ActionMiddleware<any>,\n M5 extends ActionMiddleware<any>,\n Output,\n>(\n id: string,\n middlewares: readonly [M1, M2, M3, M4, M5],\n handler: ActionHandler<ActionEnv<[M1, M2, M3, M4, M5]>, Output>,\n): void\nexport function registerAction(\n id: string,\n middlewares: readonly ActionMiddleware<any>[],\n handler: ActionHandler<any, unknown>,\n) {\n getActionRegistry().set(id, {\n handler,\n id,\n middlewares: [...middlewares] as ActionMiddleware<any>[],\n })\n}\n\nexport const hasAction = (id: string) => getActionRegistry().has(id)\n\nexport const executeAction = async (id: string, c: Context<any>) => {\n try {\n const result = await executeActionSubmission(id, c)\n return result.kind === 'response' ? result.response : toActionResponse(result.value)\n } catch (error) {\n return new Response(\n JSON.stringify({\n error: toSerializedActionError(error),\n ok: false,\n } satisfies ActionJsonFailure),\n {\n headers: {\n 'content-type': ACTION_CONTENT_TYPE,\n },\n status: 500,\n },\n )\n }\n}\n\nexport const __eclipsaAction = <const Middlewares extends readonly ActionMiddleware<any>[], Output>(\n id: string,\n middlewares: readonly [...Middlewares],\n handler: ActionHandler<ActionEnv<Middlewares>, Output>,\n) => {\n if (typeof window === 'undefined') {\n getActionRegistry().set(id, {\n handler: handler as ActionHandler<any, unknown>,\n id,\n middlewares: [...middlewares] as ActionMiddleware<any>[],\n })\n }\n\n const useActionHandle = registerActionHook(\n id,\n setActionHookMeta(() => {\n const container = getRuntimeContainer()\n const existing = container?.actions.get(id)\n if (existing) {\n return existing as ActionHandle<ActionInput<Middlewares>, Output>\n }\n\n const initialState = container?.actionStates.get(id)\n const pending = createHandleSignal(container, id, 'pending', false)\n const result = createHandleSignal<Output | undefined>(\n container,\n id,\n 'result',\n initialState?.result as Output | undefined,\n )\n const error = createHandleSignal<unknown>(container, id, 'error', initialState?.error)\n const lastSubmission = createHandleSignal<\n ActionSubmission<ActionInput<Middlewares>, Output> | undefined\n >(\n container,\n id,\n 'last-submission',\n initialState\n ? ({\n error: initialState.error,\n input: initialState.input as ActionInput<Middlewares>,\n result: initialState.result as Output | undefined,\n } satisfies ActionSubmission<ActionInput<Middlewares>, Output>)\n : undefined,\n )\n\n const syncSnapshot = () => {\n if (!container) {\n return\n }\n const submission = lastSubmission.value\n if (!submission) {\n container.actionStates.delete(id)\n return\n }\n container.actionStates.set(id, {\n error: submission.error,\n input: submission.input,\n result: submission.result,\n })\n }\n\n const invoke = async (input: ActionInput<Middlewares> | FormData) => {\n pending.value = true\n error.value = undefined\n const normalizedInput = normalizeFormSubmissionInput(input) as ActionInput<Middlewares>\n try {\n const value = (await invokeAction(id, input, container)) as Output\n result.value = value\n lastSubmission.value = {\n error: undefined,\n input: normalizedInput,\n result: value,\n }\n syncSnapshot()\n return value\n } catch (caught) {\n error.value = caught\n lastSubmission.value = {\n error: caught,\n input: normalizedInput,\n result: undefined,\n }\n syncSnapshot()\n throw caught\n } finally {\n pending.value = false\n }\n }\n\n const Form = component$((props: ActionFormProps) => {\n if (typeof document !== 'undefined') {\n return createActionFormNode(id, props) as unknown as JSX.Element\n }\n\n const nextProps: Record<string, unknown> = {\n ...props,\n [ACTION_FORM_ATTR]: id,\n method: 'post',\n children: [\n {\n isStatic: true,\n props: {\n name: ACTION_FORM_FIELD,\n type: 'hidden',\n value: id,\n },\n type: 'input',\n },\n props.children,\n ],\n }\n delete nextProps.action\n delete nextProps.method\n return {\n isStatic: true,\n props: nextProps,\n type: 'form',\n } satisfies JSX.Element\n })\n const actionHandle = setActionHandleMeta(\n {\n Form,\n action: invoke as ActionInvoker<ActionInput<Middlewares>, Output>,\n get error() {\n return error.value\n },\n get formActionId() {\n return id\n },\n get isPending() {\n return pending.value\n },\n get lastSubmission() {\n return lastSubmission.value\n },\n get result() {\n return result.value\n },\n } satisfies ActionHandle<ActionInput<Middlewares>, Output>,\n id,\n )\n container?.actions.set(id, actionHandle)\n syncSnapshot()\n return actionHandle\n }, id),\n ) as () => ActionHandle<ActionInput<Middlewares>, Output>\n\n return useActionHandle\n}\n"],"mappings":"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"}
|