eclipsa 0.1.10 → 0.1.11
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-DCc4fBhy.mjs → action-BcEktMN2.mjs} +26 -14
- package/action-BcEktMN2.mjs.map +1 -0
- package/{client--uq9YZzN.mjs → client-DI_VsKvi.mjs} +3 -3
- package/{client--uq9YZzN.mjs.map → client-DI_VsKvi.mjs.map} +1 -1
- package/core/client/mod.mjs +3 -3
- package/core/dev-client/mod.mjs +3 -3
- package/core/internal.d.mts +1 -1
- package/core/internal.mjs +1 -1
- package/core/prod-client/mod.mjs +3 -3
- package/{internal-1QlldZaD.d.mts → internal-L0hnuNCn.d.mts} +2 -1
- package/jsx/mod.mjs +1 -1
- package/mod.d.mts +2 -2
- package/mod.mjs +3 -3
- package/package.json +2 -2
- package/{signal-DoW9q--8.mjs → signal-B1aQQyxh.mjs} +2 -2
- package/{signal-DoW9q--8.mjs.map → signal-B1aQQyxh.mjs.map} +1 -1
- package/{ssr-lXZqUHZs.mjs → ssr-Bqev931T.mjs} +4 -4
- package/{ssr-lXZqUHZs.mjs.map → ssr-Bqev931T.mjs.map} +1 -1
- package/{ssr-wXShLrdB.d.mts → ssr-OV5GBPzK.d.mts} +2 -2
- package/vite/build/runtime.d.mts +2 -2
- package/vite/build/runtime.mjs +2 -2
- package/vite/mod.mjs +6 -3
- package/vite/mod.mjs.map +1 -1
- package/web-utils/mod.mjs +2 -2
- package/action-DCc4fBhy.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $ as shouldReconnectDetachedInsertMarkers, I as preserveReusableContentInRoots, Ln as readActionCsrfTokenFromDocument, M as getRuntimeSignalId, Mn as isSuspenseType, Nn as ACTION_CSRF_FIELD, Pn as ACTION_CSRF_INPUT_ATTR, Q as restoreSignalRefs, St as ACTION_FORM_ATTR, U as renderClientInsertable, W as renderClientInsertableForOwner, _t as getRememberedInsertMarkerNodeCount, bt as rememberManagedAttributesForNodes, et as syncRuntimeRefMarker, gt as parseInsertMarker, h as assignRuntimeRef, ht as parseComponentBoundaryMarker, it as tryPatchNodeSequenceInPlace, j as getRuntimeContainer, jt as getComponentMeta, mt as createInsertMarker, rt as tryPatchElementShellInPlace, v as bindRuntimeEvent, vt as rememberInsertMarkerRange, x as createDetachedClientInsertOwner, xt as syncManagedAttributeSnapshot, y as captureClientInsertOwner, yt as rememberManagedAttributesForNode } from "./action-
|
|
1
|
+
import { $ as shouldReconnectDetachedInsertMarkers, I as preserveReusableContentInRoots, Ln as readActionCsrfTokenFromDocument, M as getRuntimeSignalId, Mn as isSuspenseType, Nn as ACTION_CSRF_FIELD, Pn as ACTION_CSRF_INPUT_ATTR, Q as restoreSignalRefs, St as ACTION_FORM_ATTR, U as renderClientInsertable, W as renderClientInsertableForOwner, _t as getRememberedInsertMarkerNodeCount, bt as rememberManagedAttributesForNodes, et as syncRuntimeRefMarker, gt as parseInsertMarker, h as assignRuntimeRef, ht as parseComponentBoundaryMarker, it as tryPatchNodeSequenceInPlace, j as getRuntimeContainer, jt as getComponentMeta, mt as createInsertMarker, rt as tryPatchElementShellInPlace, v as bindRuntimeEvent, vt as rememberInsertMarkerRange, x as createDetachedClientInsertOwner, xt as syncManagedAttributeSnapshot, y as captureClientInsertOwner, yt as rememberManagedAttributesForNode } from "./action-BcEktMN2.mjs";
|
|
2
2
|
import { a as jsxDEV } from "./jsx-dev-runtime-DpbWQ4Q0.mjs";
|
|
3
|
-
import { t as effect$1 } from "./signal-
|
|
3
|
+
import { t as effect$1 } from "./signal-B1aQQyxh.mjs";
|
|
4
4
|
import { r as withSignalSnapshot } from "./snapshot-BdY3jcVk.mjs";
|
|
5
5
|
//#region core/client/dom.ts
|
|
6
6
|
const EMPTY_INSERT_COMMENT = "eclipsa-empty";
|
|
@@ -429,4 +429,4 @@ const effect = (fn) => {
|
|
|
429
429
|
//#endregion
|
|
430
430
|
export { hydrate as a, createTemplate as i, attr as n, insert as o, createComponent as r, effect as t };
|
|
431
431
|
|
|
432
|
-
//# sourceMappingURL=client
|
|
432
|
+
//# sourceMappingURL=client-DI_VsKvi.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client--uq9YZzN.mjs","names":[],"sources":["../core/client/dom.ts","../core/reactive/core.ts"],"sourcesContent":["import { jsxDEV } from '../../jsx/jsx-dev-runtime.ts'\nimport {\n ACTION_CSRF_FIELD,\n ACTION_CSRF_INPUT_ATTR,\n readActionCsrfTokenFromDocument,\n} from '../action-csrf.ts'\nimport type { Component } from '../component.ts'\nimport { getComponentMeta } from '../internal.ts'\nimport { ACTION_FORM_ATTR } from '../runtime/constants.ts'\nimport {\n INSERT_MARKER_PREFIX,\n createInsertMarker,\n parseComponentBoundaryMarker,\n parseInsertMarker,\n} from '../runtime/markers.ts'\nimport {\n assignRuntimeRef,\n bindRuntimeEvent,\n captureClientInsertOwner,\n createDetachedClientInsertOwner,\n getRuntimeSignalId,\n getRuntimeContainer,\n preserveReusableContentInRoots,\n rememberManagedAttributesForNode,\n rememberManagedAttributesForNodes,\n rememberInsertMarkerRange,\n getRememberedInsertMarkerNodeCount,\n renderClientInsertable,\n renderClientInsertableForOwner,\n restoreSignalRefs,\n syncManagedAttributeSnapshot,\n syncRuntimeRefMarker,\n shouldReconnectDetachedInsertMarkers,\n tryPatchElementShellInPlace,\n tryPatchNodeSequenceInPlace,\n} from '../runtime.ts'\nimport { effect } from '../signal.ts'\nimport { isSuspenseType } from '../suspense.ts'\nimport { withSignalSnapshot } from '../snapshot.ts'\nimport type { ClientElementLike, Insertable } from './types.ts'\n\nconst EMPTY_INSERT_COMMENT = 'eclipsa-empty'\nconst ATTR_UNSET = Symbol('eclipsa.attr-unset')\n\nconst createActionCsrfInput = (doc: Document, token: string) => {\n const input = doc.createElement('input')\n input.setAttribute(ACTION_CSRF_INPUT_ATTR, '')\n input.setAttribute('name', ACTION_CSRF_FIELD)\n input.setAttribute('type', 'hidden')\n input.setAttribute('value', token)\n return input\n}\n\nconst ensureActionCsrfInput = (form: HTMLFormElement) => {\n const token = readActionCsrfTokenFromDocument(document)\n if (!token) {\n return\n }\n\n const existing = form.querySelector(`input[${ACTION_CSRF_INPUT_ATTR}]`)\n const input =\n existing instanceof HTMLInputElement ? existing : createActionCsrfInput(document, token)\n input.setAttribute('name', ACTION_CSRF_FIELD)\n input.setAttribute('type', 'hidden')\n input.setAttribute('value', token)\n if (input.parentNode !== form) {\n form.insertBefore(input, form.firstChild)\n }\n}\n\nconst ensureActionCsrfInputsInNode = (node: Node) => {\n if (node instanceof HTMLFormElement && node.hasAttribute(ACTION_FORM_ATTR)) {\n ensureActionCsrfInput(node)\n }\n if (node instanceof Element) {\n for (const form of node.querySelectorAll(`form[${ACTION_FORM_ATTR}]`)) {\n if (form instanceof HTMLFormElement) {\n ensureActionCsrfInput(form)\n }\n }\n }\n}\n\nconst ensureInsertMarkerKey = (\n marker: Node | undefined,\n runtimeContainer: ReturnType<typeof getRuntimeContainer>,\n) => {\n if (!(marker instanceof Comment) || !runtimeContainer) {\n return null\n }\n\n if (marker.data.startsWith(INSERT_MARKER_PREFIX)) {\n return marker.data\n }\n\n const key = createInsertMarker(runtimeContainer.nextElementId++)\n marker.data = key\n return key\n}\n\nconst findLiveInsertMarker = (doc: Document | undefined, markerKey: string | null) => {\n if (!doc?.body || !markerKey || typeof doc.createTreeWalker !== 'function') {\n return null\n }\n\n const walker = doc.createTreeWalker(doc.body, NodeFilter.SHOW_COMMENT)\n let next = walker.nextNode()\n while (next) {\n if (next instanceof Comment && next.data === markerKey) {\n return next\n }\n next = walker.nextNode()\n }\n return null\n}\n\nconst isConnectedNode = (node: Node | null | undefined) =>\n !!node &&\n (!('isConnected' in node) ||\n (\n node as Node & {\n isConnected?: boolean\n }\n ).isConnected !== false)\n\nconst isUsableInsertParent = (\n candidate: Node | null | undefined,\n stableParents: Array<Node | null | undefined>,\n) => !!candidate && (isConnectedNode(candidate) || stableParents.includes(candidate))\n\nconst removeNodeFromParent = (node: Node, parent: Node) => {\n const removable = node as Node & {\n remove?: () => void\n }\n if (typeof removable.remove === 'function') {\n removable.remove()\n return\n }\n\n const parentWithRemoveChild = parent as Node & {\n removeChild?: (child: Node) => Node\n }\n if (typeof parentWithRemoveChild.removeChild === 'function') {\n parentWithRemoveChild.removeChild(node)\n }\n}\n\nconst hasUsableInsertParent = (\n node: Node | null | undefined,\n stableParents: Array<Node | null | undefined>,\n) => isUsableInsertParent(node?.parentNode, stableParents)\n\nconst collectNodesBeforeMarker = (marker: Node | null | undefined, count: number) => {\n if (!marker?.parentNode || count === 0) {\n return [] as Node[]\n }\n\n const nodes: Node[] = []\n let cursor = marker.previousSibling\n while (cursor && nodes.length < count) {\n nodes.unshift(cursor)\n cursor = cursor.previousSibling\n }\n\n return nodes.length === count ? nodes : []\n}\n\nconst getBoundaryMarker = (node: Node | null | undefined) => {\n if (!(node instanceof Comment)) {\n return null\n }\n\n return parseComponentBoundaryMarker(node.data)\n}\n\nconst canReconnectOwnerRange = (currentNodes: Node[], newNodes: Node[]) => {\n if (currentNodes.length === 0 || currentNodes.length !== newNodes.length) {\n return false\n }\n\n let sawBoundary = false\n\n for (let index = 0; index < newNodes.length; index += 1) {\n const currentNode = currentNodes[index]!\n const newNode = newNodes[index]!\n if (currentNode.nodeType !== newNode.nodeType) {\n return false\n }\n\n const currentBoundary = getBoundaryMarker(currentNode)\n const newBoundary = getBoundaryMarker(newNode)\n if (currentBoundary || newBoundary) {\n if (\n !currentBoundary ||\n !newBoundary ||\n currentBoundary.kind !== newBoundary.kind ||\n currentBoundary.id !== newBoundary.id\n ) {\n return false\n }\n sawBoundary = true\n continue\n }\n\n if (currentNode instanceof Element && newNode instanceof Element) {\n if (currentNode.tagName !== newNode.tagName) {\n return false\n }\n continue\n }\n\n if (currentNode.nodeType === Node.TEXT_NODE && newNode.nodeType === Node.TEXT_NODE) {\n continue\n }\n\n return false\n }\n\n return sawBoundary\n}\n\nconst resolveFastInsertValue = (value: unknown) => {\n let resolved = value\n while (typeof resolved === 'function') {\n resolved = resolved()\n }\n\n if (resolved === null || resolved === undefined || resolved === false) {\n return {\n kind: 'empty' as const,\n }\n }\n\n if (\n typeof resolved === 'string' ||\n typeof resolved === 'number' ||\n typeof resolved === 'boolean'\n ) {\n return {\n kind: 'text' as const,\n value: String(resolved),\n }\n }\n\n return null\n}\n\nconst isManagedEmptyInsertComment = (node: Node | null | undefined) =>\n node instanceof Comment && node.data === EMPTY_INSERT_COMMENT\n\nconst getElementStyleDeclaration = (elem: Element) => {\n const style = (\n elem as Element & {\n style?: {\n removeProperty?: (name: string) => string\n setProperty?: (name: string, value: string) => void\n }\n }\n ).style\n\n return style &&\n typeof style === 'object' &&\n typeof style.setProperty === 'function' &&\n typeof style.removeProperty === 'function'\n ? (style as {\n removeProperty: (name: string) => string\n setProperty: (name: string, value: string) => void\n })\n : null\n}\n\nconst serializeStyleValue = (resolved: unknown) =>\n resolved && typeof resolved === 'object'\n ? Object.entries(resolved as Record<string, string>)\n .map(([k, v]) => `${k}: ${v}`)\n .join('; ')\n : String(resolved ?? '')\n\nexport const createTemplate = (html: string): (() => Node) => {\n let template: HTMLTemplateElement | null = null\n\n return () => {\n if (!template) {\n template = document.createElement('template')\n template.innerHTML = html\n }\n const node = (template.cloneNode(true) as HTMLTemplateElement).content.firstChild as Node\n ensureActionCsrfInputsInNode(node)\n rememberManagedAttributesForNode(node)\n return node\n }\n}\n\nexport const insert = (value: Insertable, parent: Node, marker?: Node) => {\n let lastFirstNode = marker\n let lastNodeLength = 0\n const runtimeContainer = getRuntimeContainer()\n if (!runtimeContainer) {\n throw new Error('Client insertions require an active runtime container.')\n }\n const ownerSiteKey =\n marker instanceof Comment && !parseInsertMarker(marker.data) ? marker.data : null\n const owner =\n captureClientInsertOwner(runtimeContainer, ownerSiteKey) ??\n createDetachedClientInsertOwner(runtimeContainer)\n const markerKey = ensureInsertMarkerKey(marker, runtimeContainer)\n const collectCurrentNodes = (\n liveMarker: Node | undefined,\n stableParents: Array<Node | null | undefined>,\n ) => {\n if (\n !lastFirstNode ||\n lastNodeLength === 0 ||\n !hasUsableInsertParent(lastFirstNode, stableParents)\n ) {\n const liveNodes = collectNodesBeforeMarker(liveMarker, lastNodeLength)\n return liveNodes.every((node) => hasUsableInsertParent(node, stableParents)) ? liveNodes : []\n }\n const nodes = [lastFirstNode]\n let cursor = lastFirstNode\n while (nodes.length < lastNodeLength) {\n const next = cursor.nextSibling\n if (!next || !hasUsableInsertParent(next, stableParents)) {\n return [] as Node[]\n }\n cursor = next\n nodes.push(cursor)\n }\n return nodes\n }\n\n effect(() => {\n const shouldReconnect = shouldReconnectDetachedInsertMarkers(runtimeContainer)\n const liveMarker = !(marker instanceof Comment)\n ? marker\n : isConnectedNode(marker.parentNode)\n ? marker\n : shouldReconnect\n ? (findLiveInsertMarker(runtimeContainer.doc, markerKey) ?? marker)\n : marker\n const stableParents = liveMarker?.parentNode\n ? [liveMarker.parentNode, parent === liveMarker.parentNode ? parent : null]\n : [parent, marker?.parentNode]\n const liveLastParent = isUsableInsertParent(lastFirstNode?.parentNode, stableParents)\n ? lastFirstNode?.parentNode\n : null\n const liveMarkerParent = isUsableInsertParent(liveMarker?.parentNode, stableParents)\n ? liveMarker?.parentNode\n : null\n const resolvedParent = (liveLastParent ?? liveMarkerParent ?? parent) as ParentNode | null\n const targetParent = resolvedParent ?? (parent as ParentNode)\n const primitiveValue = resolveFastInsertValue(value)\n const seedCurrentNodes = (count: number) =>\n lastNodeLength === 0 &&\n liveMarker instanceof Comment &&\n getRememberedInsertMarkerNodeCount(liveMarker) === count\n ? collectNodesBeforeMarker(liveMarker, count)\n : []\n const replaceCurrentNodes = (currentNodes: Node[], replacementNode: Node) => {\n const insertReference =\n liveMarker?.parentNode === targetParent\n ? liveMarker\n : (currentNodes[currentNodes.length - 1]?.nextSibling ?? null)\n for (const node of currentNodes) {\n if (node.parentNode === targetParent) {\n removeNodeFromParent(node, targetParent)\n }\n }\n targetParent.insertBefore(replacementNode, insertReference)\n rememberInsertMarkerRange(liveMarker, [replacementNode])\n lastFirstNode = replacementNode\n lastNodeLength = 1\n }\n\n if (primitiveValue) {\n const seededCurrentNodes = seedCurrentNodes(1)\n const currentNodes =\n seededCurrentNodes.length !== 0 &&\n seededCurrentNodes.every((node) => hasUsableInsertParent(node, stableParents))\n ? seededCurrentNodes\n : collectCurrentNodes(liveMarker, stableParents)\n\n if (currentNodes.length !== 0 && lastNodeLength === 0) {\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n }\n\n if (primitiveValue.kind === 'text') {\n if (currentNodes.length === 1 && currentNodes[0] instanceof Text) {\n if (currentNodes[0].data !== primitiveValue.value) {\n currentNodes[0].data = primitiveValue.value\n }\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = 1\n return\n }\n\n const doc = runtimeContainer.doc ?? targetParent.ownerDocument\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n\n replaceCurrentNodes(currentNodes, doc.createTextNode(primitiveValue.value))\n return\n }\n\n if (currentNodes.length === 1 && isManagedEmptyInsertComment(currentNodes[0])) {\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = 1\n return\n }\n\n const doc = runtimeContainer.doc ?? targetParent.ownerDocument\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n\n replaceCurrentNodes(currentNodes, doc.createComment(EMPTY_INSERT_COMMENT))\n return\n }\n\n const newNodes = owner\n ? renderClientInsertableForOwner(value, runtimeContainer, owner)\n : renderClientInsertable(value, runtimeContainer)\n const seededCurrentNodes = seedCurrentNodes(newNodes.length)\n const currentNodes =\n seededCurrentNodes.length !== 0 &&\n seededCurrentNodes.every((node) => hasUsableInsertParent(node, stableParents)) &&\n canReconnectOwnerRange(seededCurrentNodes, newNodes)\n ? seededCurrentNodes\n : collectCurrentNodes(liveMarker, stableParents)\n\n if (currentNodes.length !== 0 && lastNodeLength === 0) {\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n }\n\n if (\n currentNodes.length === lastNodeLength &&\n currentNodes.length !== 0 &&\n newNodes.length !== 0 &&\n (tryPatchNodeSequenceInPlace(currentNodes, newNodes) ||\n tryPatchSingleElementShellInPlace(currentNodes, newNodes))\n ) {\n restoreSignalRefs(runtimeContainer, targetParent)\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n return\n }\n\n let replacementNodes = newNodes\n if (currentNodes.length !== 0 && newNodes.length !== 0) {\n const doc = runtimeContainer.doc\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n const stagingParent = doc.createElement('div')\n for (const node of newNodes) {\n stagingParent.appendChild(node)\n }\n preserveReusableContentInRoots(currentNodes, Array.from(stagingParent.childNodes))\n replacementNodes = Array.from(stagingParent.childNodes)\n }\n\n const insertReference = liveMarker?.parentNode === targetParent ? liveMarker : null\n for (const node of currentNodes) {\n if (node.parentNode === targetParent) {\n removeNodeFromParent(node, targetParent)\n }\n }\n for (const node of replacementNodes) {\n targetParent.insertBefore(node, insertReference)\n }\n\n rememberManagedAttributesForNodes(replacementNodes)\n rememberInsertMarkerRange(liveMarker, replacementNodes)\n\n lastFirstNode = replacementNodes[0] ?? liveMarker\n lastNodeLength = replacementNodes.length\n })\n}\n\nconst EVENT_ATTR_REGEX = /^on[A-Z].+$/\nconst DANGEROUSLY_SET_INNER_HTML_PROP = 'dangerouslySetInnerHTML'\nconst BIND_VALUE_PROP = 'bind:value'\nconst BIND_CHECKED_PROP = 'bind:checked'\nconst BIND_VALUE_ATTR = 'data-e-bind-value'\nconst BIND_CHECKED_ATTR = 'data-e-bind-checked'\nconst shouldUseAttributeAssignment = (elem: Element, name: string, isSVG: boolean) =>\n isSVG || name.startsWith('data-') || name.startsWith('aria-') || !(name in elem)\n\ntype BindableSignal<T> = {\n value: T\n}\n\nconst isBindableSignal = <T>(value: unknown): value is BindableSignal<T> =>\n !!value && (typeof value === 'object' || typeof value === 'function') && 'value' in value\n\nconst readValueBinding = (elem: Element, currentValue: unknown) => {\n if (\n elem instanceof HTMLInputElement &&\n typeof currentValue === 'number' &&\n (elem.type === 'number' || elem.type === 'range') &&\n !Number.isNaN(elem.valueAsNumber)\n ) {\n return elem.valueAsNumber\n }\n\n return (elem as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement).value\n}\n\nconst tryPatchSingleElementShellInPlace = (currentNodes: Node[], nextNodes: Node[]) => {\n if (currentNodes.length !== 1 || nextNodes.length !== 1) {\n return false\n }\n\n const [current] = currentNodes\n const [next] = nextNodes\n if (\n !(current instanceof Element) ||\n !(next instanceof Element) ||\n current.tagName !== next.tagName\n ) {\n return false\n }\n return tryPatchElementShellInPlace(current, next)\n}\n\nexport const attr = (elem: Element, name: string, value: () => unknown) => {\n const isSVG = elem.namespaceURI === 'http://www.w3.org/2000/svg'\n\n if (name === BIND_VALUE_PROP) {\n let lastSignalId = ATTR_UNSET as string | symbol | null\n const readBinding = () => {\n const binding = value()\n const signalId = getRuntimeSignalId(binding)\n if (signalId !== lastSignalId) {\n if (signalId) {\n elem.setAttribute(BIND_VALUE_ATTR, signalId)\n } else {\n elem.removeAttribute(BIND_VALUE_ATTR)\n }\n syncManagedAttributeSnapshot(elem, BIND_VALUE_ATTR)\n lastSignalId = signalId\n }\n return binding\n }\n\n const syncSignalFromElement = () => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n binding.value = readValueBinding(elem, binding.value) as never\n }\n\n elem.addEventListener('input', syncSignalFromElement)\n elem.addEventListener('change', syncSignalFromElement)\n\n effect(() => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n const input = elem as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n const nextValue = String(binding.value ?? '')\n if (input.value !== nextValue) {\n input.value = nextValue\n }\n })\n return\n }\n\n if (name === BIND_CHECKED_PROP) {\n if (!(elem instanceof HTMLInputElement)) {\n return\n }\n\n let lastSignalId = ATTR_UNSET as string | symbol | null\n const readBinding = () => {\n const binding = value()\n const signalId = getRuntimeSignalId(binding)\n if (signalId !== lastSignalId) {\n if (signalId) {\n elem.setAttribute(BIND_CHECKED_ATTR, signalId)\n } else {\n elem.removeAttribute(BIND_CHECKED_ATTR)\n }\n syncManagedAttributeSnapshot(elem, BIND_CHECKED_ATTR)\n lastSignalId = signalId\n }\n return binding\n }\n\n const syncSignalFromElement = () => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n binding.value = elem.checked as never\n }\n\n elem.addEventListener('input', syncSignalFromElement)\n elem.addEventListener('change', syncSignalFromElement)\n\n effect(() => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n const nextChecked = Boolean(binding.value)\n if (elem.checked !== nextChecked) {\n elem.checked = nextChecked\n }\n })\n return\n }\n\n if (EVENT_ATTR_REGEX.test(name)) {\n const eventName = name[2].toLowerCase() + name.slice(3)\n const resolved = value()\n if (bindRuntimeEvent(elem, eventName, resolved)) {\n return\n }\n if (typeof resolved !== 'function') {\n throw new Error('Resumable event bindings require an active runtime container.')\n }\n elem.addEventListener(eventName, resolved as () => void)\n return\n }\n\n if (name === 'style') {\n let lastStyleString = ATTR_UNSET as string | symbol\n let lastStyleMap: Map<string, string> | null = null\n const style = getElementStyleDeclaration(elem)\n\n effect(() => {\n const resolved = value()\n if (style && resolved && typeof resolved === 'object') {\n const nextStyleMap = new Map(\n Object.entries(resolved as Record<string, string>).map(([styleName, styleValue]) => [\n styleName,\n String(styleValue),\n ]),\n )\n\n for (const [styleName, styleValue] of nextStyleMap) {\n if (lastStyleMap?.get(styleName) !== styleValue) {\n style.setProperty(styleName, styleValue)\n }\n }\n\n if (lastStyleMap) {\n for (const styleName of lastStyleMap.keys()) {\n if (!nextStyleMap.has(styleName)) {\n style.removeProperty(styleName)\n }\n }\n }\n\n lastStyleMap = nextStyleMap\n lastStyleString = ATTR_UNSET\n syncManagedAttributeSnapshot(elem, 'style')\n return\n }\n\n lastStyleMap = null\n const styleValue = serializeStyleValue(resolved)\n if (lastStyleString === styleValue) {\n return\n }\n elem.setAttribute('style', styleValue)\n lastStyleString = styleValue\n syncManagedAttributeSnapshot(elem, 'style')\n })\n return\n }\n\n if (name === 'class') {\n let lastClassValue = ATTR_UNSET as string | symbol\n effect(() => {\n const nextClassValue = String(value())\n if (lastClassValue === nextClassValue) {\n return\n }\n if (isSVG) {\n elem.setAttribute('class', nextClassValue)\n syncManagedAttributeSnapshot(elem, 'class')\n } else {\n ;(elem as Element & { className: string }).className = nextClassValue\n syncManagedAttributeSnapshot(elem, 'class')\n }\n lastClassValue = nextClassValue\n })\n return\n }\n\n if (name === 'ref') {\n const resolved = value()\n syncRuntimeRefMarker(elem, resolved)\n assignRuntimeRef(resolved, elem, getRuntimeContainer())\n return\n }\n\n if (name === ACTION_FORM_ATTR) {\n let lastAssignedValue = ATTR_UNSET as string | symbol | null\n effect(() => {\n const resolved = value()\n const nextValue =\n resolved === false || resolved === undefined || resolved === null ? null : String(resolved)\n if (lastAssignedValue === nextValue) {\n return\n }\n if (nextValue === null) {\n elem.removeAttribute(name)\n } else {\n elem.setAttribute(name, nextValue)\n }\n syncManagedAttributeSnapshot(elem, name)\n if (nextValue !== null && elem instanceof HTMLFormElement) {\n ensureActionCsrfInput(elem)\n }\n lastAssignedValue = nextValue\n })\n return\n }\n\n if (name === DANGEROUSLY_SET_INNER_HTML_PROP) {\n let lastHTML = ATTR_UNSET as string | symbol\n effect(() => {\n const html = value()\n const nextHTML = html === false || html === undefined || html === null ? '' : String(html)\n if (lastHTML === nextHTML) {\n return\n }\n ;(elem as Element & { innerHTML: string }).innerHTML = nextHTML\n lastHTML = nextHTML\n })\n return\n }\n\n let lastAssignedValue = ATTR_UNSET as string | symbol\n effect(() => {\n const nextValue = String(value())\n if (lastAssignedValue === nextValue) {\n return\n }\n if (shouldUseAttributeAssignment(elem, name, isSVG)) {\n elem.setAttribute(name, nextValue)\n syncManagedAttributeSnapshot(elem, name)\n } else {\n // @ts-expect-error DOM property assignment uses dynamic keys.\n elem[name] = nextValue\n syncManagedAttributeSnapshot(elem, name)\n }\n lastAssignedValue = nextValue\n })\n}\n\nexport const hydrate = (\n Component: Component,\n target: HTMLElement,\n options?: {\n snapshot?: unknown[]\n },\n) => {\n const elem = withSignalSnapshot(options?.snapshot ?? null, () => Component({}))\n .result as unknown as ClientElementLike\n\n while (target.childNodes.length > 0) {\n target.lastChild?.remove()\n }\n\n for (const entry of Array.isArray(elem) ? elem : [elem]) {\n insert(() => entry, target)\n }\n}\n\nexport const createComponent = (Component: Component, props: unknown) => {\n if (isSuspenseType(Component)) {\n return () => jsxDEV(Component, props as Record<string, unknown>, null, false, {})\n }\n if (!getComponentMeta(Component)) {\n const render = Component as (props: unknown) => unknown\n return () => render(props) as ClientElementLike\n }\n return () => jsxDEV(Component, props as Record<string, unknown>, null, false, {})\n}\n","export interface Signal<T> {\n get(): T\n set(newValue: T): T\n effects: Set<Effect>\n}\n\ninterface Effect {\n fn: () => void\n signals: Set<Signal<unknown>>\n}\nlet currentEffect: Effect | null = null\n\nconst isPrimitiveSignalValue = (value: unknown) =>\n value === null || (typeof value !== 'object' && typeof value !== 'function')\n\nconst didSignalValueChange = (previous: unknown, next: unknown) => {\n if (isPrimitiveSignalValue(previous) && isPrimitiveSignalValue(next)) {\n return !Object.is(previous, next)\n }\n\n return previous !== next\n}\n\nexport const signal = <T>(init: T): Signal<T> => {\n let value = init\n const signal: Signal<T> = {\n get() {\n if (currentEffect) {\n this.effects.add(currentEffect)\n }\n return value\n },\n set(newValue) {\n if (!didSignalValueChange(value, newValue)) {\n return value\n }\n value = newValue\n for (const effect of this.effects) {\n effect.fn()\n }\n return value\n },\n effects: new Set(),\n }\n return signal\n}\n\nconst registry = new FinalizationRegistry<Effect>((effect) => {\n for (const signal of effect.signals) {\n signal.effects.delete(effect)\n }\n})\n\nexport const effect = (fn: () => void) => {\n const newEffect: Effect = {\n fn() {\n fn()\n },\n signals: new Set(),\n }\n\n currentEffect = newEffect\n newEffect.fn()\n currentEffect = null\n\n registry.register(fn, newEffect)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client-DI_VsKvi.mjs","names":[],"sources":["../core/client/dom.ts","../core/reactive/core.ts"],"sourcesContent":["import { jsxDEV } from '../../jsx/jsx-dev-runtime.ts'\nimport {\n ACTION_CSRF_FIELD,\n ACTION_CSRF_INPUT_ATTR,\n readActionCsrfTokenFromDocument,\n} from '../action-csrf.ts'\nimport type { Component } from '../component.ts'\nimport { getComponentMeta } from '../internal.ts'\nimport { ACTION_FORM_ATTR } from '../runtime/constants.ts'\nimport {\n INSERT_MARKER_PREFIX,\n createInsertMarker,\n parseComponentBoundaryMarker,\n parseInsertMarker,\n} from '../runtime/markers.ts'\nimport {\n assignRuntimeRef,\n bindRuntimeEvent,\n captureClientInsertOwner,\n createDetachedClientInsertOwner,\n getRuntimeSignalId,\n getRuntimeContainer,\n preserveReusableContentInRoots,\n rememberManagedAttributesForNode,\n rememberManagedAttributesForNodes,\n rememberInsertMarkerRange,\n getRememberedInsertMarkerNodeCount,\n renderClientInsertable,\n renderClientInsertableForOwner,\n restoreSignalRefs,\n syncManagedAttributeSnapshot,\n syncRuntimeRefMarker,\n shouldReconnectDetachedInsertMarkers,\n tryPatchElementShellInPlace,\n tryPatchNodeSequenceInPlace,\n} from '../runtime.ts'\nimport { effect } from '../signal.ts'\nimport { isSuspenseType } from '../suspense.ts'\nimport { withSignalSnapshot } from '../snapshot.ts'\nimport type { ClientElementLike, Insertable } from './types.ts'\n\nconst EMPTY_INSERT_COMMENT = 'eclipsa-empty'\nconst ATTR_UNSET = Symbol('eclipsa.attr-unset')\n\nconst createActionCsrfInput = (doc: Document, token: string) => {\n const input = doc.createElement('input')\n input.setAttribute(ACTION_CSRF_INPUT_ATTR, '')\n input.setAttribute('name', ACTION_CSRF_FIELD)\n input.setAttribute('type', 'hidden')\n input.setAttribute('value', token)\n return input\n}\n\nconst ensureActionCsrfInput = (form: HTMLFormElement) => {\n const token = readActionCsrfTokenFromDocument(document)\n if (!token) {\n return\n }\n\n const existing = form.querySelector(`input[${ACTION_CSRF_INPUT_ATTR}]`)\n const input =\n existing instanceof HTMLInputElement ? existing : createActionCsrfInput(document, token)\n input.setAttribute('name', ACTION_CSRF_FIELD)\n input.setAttribute('type', 'hidden')\n input.setAttribute('value', token)\n if (input.parentNode !== form) {\n form.insertBefore(input, form.firstChild)\n }\n}\n\nconst ensureActionCsrfInputsInNode = (node: Node) => {\n if (node instanceof HTMLFormElement && node.hasAttribute(ACTION_FORM_ATTR)) {\n ensureActionCsrfInput(node)\n }\n if (node instanceof Element) {\n for (const form of node.querySelectorAll(`form[${ACTION_FORM_ATTR}]`)) {\n if (form instanceof HTMLFormElement) {\n ensureActionCsrfInput(form)\n }\n }\n }\n}\n\nconst ensureInsertMarkerKey = (\n marker: Node | undefined,\n runtimeContainer: ReturnType<typeof getRuntimeContainer>,\n) => {\n if (!(marker instanceof Comment) || !runtimeContainer) {\n return null\n }\n\n if (marker.data.startsWith(INSERT_MARKER_PREFIX)) {\n return marker.data\n }\n\n const key = createInsertMarker(runtimeContainer.nextElementId++)\n marker.data = key\n return key\n}\n\nconst findLiveInsertMarker = (doc: Document | undefined, markerKey: string | null) => {\n if (!doc?.body || !markerKey || typeof doc.createTreeWalker !== 'function') {\n return null\n }\n\n const walker = doc.createTreeWalker(doc.body, NodeFilter.SHOW_COMMENT)\n let next = walker.nextNode()\n while (next) {\n if (next instanceof Comment && next.data === markerKey) {\n return next\n }\n next = walker.nextNode()\n }\n return null\n}\n\nconst isConnectedNode = (node: Node | null | undefined) =>\n !!node &&\n (!('isConnected' in node) ||\n (\n node as Node & {\n isConnected?: boolean\n }\n ).isConnected !== false)\n\nconst isUsableInsertParent = (\n candidate: Node | null | undefined,\n stableParents: Array<Node | null | undefined>,\n) => !!candidate && (isConnectedNode(candidate) || stableParents.includes(candidate))\n\nconst removeNodeFromParent = (node: Node, parent: Node) => {\n const removable = node as Node & {\n remove?: () => void\n }\n if (typeof removable.remove === 'function') {\n removable.remove()\n return\n }\n\n const parentWithRemoveChild = parent as Node & {\n removeChild?: (child: Node) => Node\n }\n if (typeof parentWithRemoveChild.removeChild === 'function') {\n parentWithRemoveChild.removeChild(node)\n }\n}\n\nconst hasUsableInsertParent = (\n node: Node | null | undefined,\n stableParents: Array<Node | null | undefined>,\n) => isUsableInsertParent(node?.parentNode, stableParents)\n\nconst collectNodesBeforeMarker = (marker: Node | null | undefined, count: number) => {\n if (!marker?.parentNode || count === 0) {\n return [] as Node[]\n }\n\n const nodes: Node[] = []\n let cursor = marker.previousSibling\n while (cursor && nodes.length < count) {\n nodes.unshift(cursor)\n cursor = cursor.previousSibling\n }\n\n return nodes.length === count ? nodes : []\n}\n\nconst getBoundaryMarker = (node: Node | null | undefined) => {\n if (!(node instanceof Comment)) {\n return null\n }\n\n return parseComponentBoundaryMarker(node.data)\n}\n\nconst canReconnectOwnerRange = (currentNodes: Node[], newNodes: Node[]) => {\n if (currentNodes.length === 0 || currentNodes.length !== newNodes.length) {\n return false\n }\n\n let sawBoundary = false\n\n for (let index = 0; index < newNodes.length; index += 1) {\n const currentNode = currentNodes[index]!\n const newNode = newNodes[index]!\n if (currentNode.nodeType !== newNode.nodeType) {\n return false\n }\n\n const currentBoundary = getBoundaryMarker(currentNode)\n const newBoundary = getBoundaryMarker(newNode)\n if (currentBoundary || newBoundary) {\n if (\n !currentBoundary ||\n !newBoundary ||\n currentBoundary.kind !== newBoundary.kind ||\n currentBoundary.id !== newBoundary.id\n ) {\n return false\n }\n sawBoundary = true\n continue\n }\n\n if (currentNode instanceof Element && newNode instanceof Element) {\n if (currentNode.tagName !== newNode.tagName) {\n return false\n }\n continue\n }\n\n if (currentNode.nodeType === Node.TEXT_NODE && newNode.nodeType === Node.TEXT_NODE) {\n continue\n }\n\n return false\n }\n\n return sawBoundary\n}\n\nconst resolveFastInsertValue = (value: unknown) => {\n let resolved = value\n while (typeof resolved === 'function') {\n resolved = resolved()\n }\n\n if (resolved === null || resolved === undefined || resolved === false) {\n return {\n kind: 'empty' as const,\n }\n }\n\n if (\n typeof resolved === 'string' ||\n typeof resolved === 'number' ||\n typeof resolved === 'boolean'\n ) {\n return {\n kind: 'text' as const,\n value: String(resolved),\n }\n }\n\n return null\n}\n\nconst isManagedEmptyInsertComment = (node: Node | null | undefined) =>\n node instanceof Comment && node.data === EMPTY_INSERT_COMMENT\n\nconst getElementStyleDeclaration = (elem: Element) => {\n const style = (\n elem as Element & {\n style?: {\n removeProperty?: (name: string) => string\n setProperty?: (name: string, value: string) => void\n }\n }\n ).style\n\n return style &&\n typeof style === 'object' &&\n typeof style.setProperty === 'function' &&\n typeof style.removeProperty === 'function'\n ? (style as {\n removeProperty: (name: string) => string\n setProperty: (name: string, value: string) => void\n })\n : null\n}\n\nconst serializeStyleValue = (resolved: unknown) =>\n resolved && typeof resolved === 'object'\n ? Object.entries(resolved as Record<string, string>)\n .map(([k, v]) => `${k}: ${v}`)\n .join('; ')\n : String(resolved ?? '')\n\nexport const createTemplate = (html: string): (() => Node) => {\n let template: HTMLTemplateElement | null = null\n\n return () => {\n if (!template) {\n template = document.createElement('template')\n template.innerHTML = html\n }\n const node = (template.cloneNode(true) as HTMLTemplateElement).content.firstChild as Node\n ensureActionCsrfInputsInNode(node)\n rememberManagedAttributesForNode(node)\n return node\n }\n}\n\nexport const insert = (value: Insertable, parent: Node, marker?: Node) => {\n let lastFirstNode = marker\n let lastNodeLength = 0\n const runtimeContainer = getRuntimeContainer()\n if (!runtimeContainer) {\n throw new Error('Client insertions require an active runtime container.')\n }\n const ownerSiteKey =\n marker instanceof Comment && !parseInsertMarker(marker.data) ? marker.data : null\n const owner =\n captureClientInsertOwner(runtimeContainer, ownerSiteKey) ??\n createDetachedClientInsertOwner(runtimeContainer)\n const markerKey = ensureInsertMarkerKey(marker, runtimeContainer)\n const collectCurrentNodes = (\n liveMarker: Node | undefined,\n stableParents: Array<Node | null | undefined>,\n ) => {\n if (\n !lastFirstNode ||\n lastNodeLength === 0 ||\n !hasUsableInsertParent(lastFirstNode, stableParents)\n ) {\n const liveNodes = collectNodesBeforeMarker(liveMarker, lastNodeLength)\n return liveNodes.every((node) => hasUsableInsertParent(node, stableParents)) ? liveNodes : []\n }\n const nodes = [lastFirstNode]\n let cursor = lastFirstNode\n while (nodes.length < lastNodeLength) {\n const next = cursor.nextSibling\n if (!next || !hasUsableInsertParent(next, stableParents)) {\n return [] as Node[]\n }\n cursor = next\n nodes.push(cursor)\n }\n return nodes\n }\n\n effect(() => {\n const shouldReconnect = shouldReconnectDetachedInsertMarkers(runtimeContainer)\n const liveMarker = !(marker instanceof Comment)\n ? marker\n : isConnectedNode(marker.parentNode)\n ? marker\n : shouldReconnect\n ? (findLiveInsertMarker(runtimeContainer.doc, markerKey) ?? marker)\n : marker\n const stableParents = liveMarker?.parentNode\n ? [liveMarker.parentNode, parent === liveMarker.parentNode ? parent : null]\n : [parent, marker?.parentNode]\n const liveLastParent = isUsableInsertParent(lastFirstNode?.parentNode, stableParents)\n ? lastFirstNode?.parentNode\n : null\n const liveMarkerParent = isUsableInsertParent(liveMarker?.parentNode, stableParents)\n ? liveMarker?.parentNode\n : null\n const resolvedParent = (liveLastParent ?? liveMarkerParent ?? parent) as ParentNode | null\n const targetParent = resolvedParent ?? (parent as ParentNode)\n const primitiveValue = resolveFastInsertValue(value)\n const seedCurrentNodes = (count: number) =>\n lastNodeLength === 0 &&\n liveMarker instanceof Comment &&\n getRememberedInsertMarkerNodeCount(liveMarker) === count\n ? collectNodesBeforeMarker(liveMarker, count)\n : []\n const replaceCurrentNodes = (currentNodes: Node[], replacementNode: Node) => {\n const insertReference =\n liveMarker?.parentNode === targetParent\n ? liveMarker\n : (currentNodes[currentNodes.length - 1]?.nextSibling ?? null)\n for (const node of currentNodes) {\n if (node.parentNode === targetParent) {\n removeNodeFromParent(node, targetParent)\n }\n }\n targetParent.insertBefore(replacementNode, insertReference)\n rememberInsertMarkerRange(liveMarker, [replacementNode])\n lastFirstNode = replacementNode\n lastNodeLength = 1\n }\n\n if (primitiveValue) {\n const seededCurrentNodes = seedCurrentNodes(1)\n const currentNodes =\n seededCurrentNodes.length !== 0 &&\n seededCurrentNodes.every((node) => hasUsableInsertParent(node, stableParents))\n ? seededCurrentNodes\n : collectCurrentNodes(liveMarker, stableParents)\n\n if (currentNodes.length !== 0 && lastNodeLength === 0) {\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n }\n\n if (primitiveValue.kind === 'text') {\n if (currentNodes.length === 1 && currentNodes[0] instanceof Text) {\n if (currentNodes[0].data !== primitiveValue.value) {\n currentNodes[0].data = primitiveValue.value\n }\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = 1\n return\n }\n\n const doc = runtimeContainer.doc ?? targetParent.ownerDocument\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n\n replaceCurrentNodes(currentNodes, doc.createTextNode(primitiveValue.value))\n return\n }\n\n if (currentNodes.length === 1 && isManagedEmptyInsertComment(currentNodes[0])) {\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = 1\n return\n }\n\n const doc = runtimeContainer.doc ?? targetParent.ownerDocument\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n\n replaceCurrentNodes(currentNodes, doc.createComment(EMPTY_INSERT_COMMENT))\n return\n }\n\n const newNodes = owner\n ? renderClientInsertableForOwner(value, runtimeContainer, owner)\n : renderClientInsertable(value, runtimeContainer)\n const seededCurrentNodes = seedCurrentNodes(newNodes.length)\n const currentNodes =\n seededCurrentNodes.length !== 0 &&\n seededCurrentNodes.every((node) => hasUsableInsertParent(node, stableParents)) &&\n canReconnectOwnerRange(seededCurrentNodes, newNodes)\n ? seededCurrentNodes\n : collectCurrentNodes(liveMarker, stableParents)\n\n if (currentNodes.length !== 0 && lastNodeLength === 0) {\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n }\n\n if (\n currentNodes.length === lastNodeLength &&\n currentNodes.length !== 0 &&\n newNodes.length !== 0 &&\n (tryPatchNodeSequenceInPlace(currentNodes, newNodes) ||\n tryPatchSingleElementShellInPlace(currentNodes, newNodes))\n ) {\n restoreSignalRefs(runtimeContainer, targetParent)\n rememberInsertMarkerRange(liveMarker, currentNodes)\n lastFirstNode = currentNodes[0]\n lastNodeLength = currentNodes.length\n return\n }\n\n let replacementNodes = newNodes\n if (currentNodes.length !== 0 && newNodes.length !== 0) {\n const doc = runtimeContainer.doc\n if (!doc) {\n throw new Error('Client insertions require an active runtime document.')\n }\n const stagingParent = doc.createElement('div')\n for (const node of newNodes) {\n stagingParent.appendChild(node)\n }\n preserveReusableContentInRoots(currentNodes, Array.from(stagingParent.childNodes))\n replacementNodes = Array.from(stagingParent.childNodes)\n }\n\n const insertReference = liveMarker?.parentNode === targetParent ? liveMarker : null\n for (const node of currentNodes) {\n if (node.parentNode === targetParent) {\n removeNodeFromParent(node, targetParent)\n }\n }\n for (const node of replacementNodes) {\n targetParent.insertBefore(node, insertReference)\n }\n\n rememberManagedAttributesForNodes(replacementNodes)\n rememberInsertMarkerRange(liveMarker, replacementNodes)\n\n lastFirstNode = replacementNodes[0] ?? liveMarker\n lastNodeLength = replacementNodes.length\n })\n}\n\nconst EVENT_ATTR_REGEX = /^on[A-Z].+$/\nconst DANGEROUSLY_SET_INNER_HTML_PROP = 'dangerouslySetInnerHTML'\nconst BIND_VALUE_PROP = 'bind:value'\nconst BIND_CHECKED_PROP = 'bind:checked'\nconst BIND_VALUE_ATTR = 'data-e-bind-value'\nconst BIND_CHECKED_ATTR = 'data-e-bind-checked'\nconst shouldUseAttributeAssignment = (elem: Element, name: string, isSVG: boolean) =>\n isSVG || name.startsWith('data-') || name.startsWith('aria-') || !(name in elem)\n\ntype BindableSignal<T> = {\n value: T\n}\n\nconst isBindableSignal = <T>(value: unknown): value is BindableSignal<T> =>\n !!value && (typeof value === 'object' || typeof value === 'function') && 'value' in value\n\nconst readValueBinding = (elem: Element, currentValue: unknown) => {\n if (\n elem instanceof HTMLInputElement &&\n typeof currentValue === 'number' &&\n (elem.type === 'number' || elem.type === 'range') &&\n !Number.isNaN(elem.valueAsNumber)\n ) {\n return elem.valueAsNumber\n }\n\n return (elem as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement).value\n}\n\nconst tryPatchSingleElementShellInPlace = (currentNodes: Node[], nextNodes: Node[]) => {\n if (currentNodes.length !== 1 || nextNodes.length !== 1) {\n return false\n }\n\n const [current] = currentNodes\n const [next] = nextNodes\n if (\n !(current instanceof Element) ||\n !(next instanceof Element) ||\n current.tagName !== next.tagName\n ) {\n return false\n }\n return tryPatchElementShellInPlace(current, next)\n}\n\nexport const attr = (elem: Element, name: string, value: () => unknown) => {\n const isSVG = elem.namespaceURI === 'http://www.w3.org/2000/svg'\n\n if (name === BIND_VALUE_PROP) {\n let lastSignalId = ATTR_UNSET as string | symbol | null\n const readBinding = () => {\n const binding = value()\n const signalId = getRuntimeSignalId(binding)\n if (signalId !== lastSignalId) {\n if (signalId) {\n elem.setAttribute(BIND_VALUE_ATTR, signalId)\n } else {\n elem.removeAttribute(BIND_VALUE_ATTR)\n }\n syncManagedAttributeSnapshot(elem, BIND_VALUE_ATTR)\n lastSignalId = signalId\n }\n return binding\n }\n\n const syncSignalFromElement = () => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n binding.value = readValueBinding(elem, binding.value) as never\n }\n\n elem.addEventListener('input', syncSignalFromElement)\n elem.addEventListener('change', syncSignalFromElement)\n\n effect(() => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n const input = elem as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n const nextValue = String(binding.value ?? '')\n if (input.value !== nextValue) {\n input.value = nextValue\n }\n })\n return\n }\n\n if (name === BIND_CHECKED_PROP) {\n if (!(elem instanceof HTMLInputElement)) {\n return\n }\n\n let lastSignalId = ATTR_UNSET as string | symbol | null\n const readBinding = () => {\n const binding = value()\n const signalId = getRuntimeSignalId(binding)\n if (signalId !== lastSignalId) {\n if (signalId) {\n elem.setAttribute(BIND_CHECKED_ATTR, signalId)\n } else {\n elem.removeAttribute(BIND_CHECKED_ATTR)\n }\n syncManagedAttributeSnapshot(elem, BIND_CHECKED_ATTR)\n lastSignalId = signalId\n }\n return binding\n }\n\n const syncSignalFromElement = () => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n binding.value = elem.checked as never\n }\n\n elem.addEventListener('input', syncSignalFromElement)\n elem.addEventListener('change', syncSignalFromElement)\n\n effect(() => {\n const binding = readBinding()\n if (!isBindableSignal(binding)) {\n return\n }\n const nextChecked = Boolean(binding.value)\n if (elem.checked !== nextChecked) {\n elem.checked = nextChecked\n }\n })\n return\n }\n\n if (EVENT_ATTR_REGEX.test(name)) {\n const eventName = name[2].toLowerCase() + name.slice(3)\n const resolved = value()\n if (bindRuntimeEvent(elem, eventName, resolved)) {\n return\n }\n if (typeof resolved !== 'function') {\n throw new Error('Resumable event bindings require an active runtime container.')\n }\n elem.addEventListener(eventName, resolved as () => void)\n return\n }\n\n if (name === 'style') {\n let lastStyleString = ATTR_UNSET as string | symbol\n let lastStyleMap: Map<string, string> | null = null\n const style = getElementStyleDeclaration(elem)\n\n effect(() => {\n const resolved = value()\n if (style && resolved && typeof resolved === 'object') {\n const nextStyleMap = new Map(\n Object.entries(resolved as Record<string, string>).map(([styleName, styleValue]) => [\n styleName,\n String(styleValue),\n ]),\n )\n\n for (const [styleName, styleValue] of nextStyleMap) {\n if (lastStyleMap?.get(styleName) !== styleValue) {\n style.setProperty(styleName, styleValue)\n }\n }\n\n if (lastStyleMap) {\n for (const styleName of lastStyleMap.keys()) {\n if (!nextStyleMap.has(styleName)) {\n style.removeProperty(styleName)\n }\n }\n }\n\n lastStyleMap = nextStyleMap\n lastStyleString = ATTR_UNSET\n syncManagedAttributeSnapshot(elem, 'style')\n return\n }\n\n lastStyleMap = null\n const styleValue = serializeStyleValue(resolved)\n if (lastStyleString === styleValue) {\n return\n }\n elem.setAttribute('style', styleValue)\n lastStyleString = styleValue\n syncManagedAttributeSnapshot(elem, 'style')\n })\n return\n }\n\n if (name === 'class') {\n let lastClassValue = ATTR_UNSET as string | symbol\n effect(() => {\n const nextClassValue = String(value())\n if (lastClassValue === nextClassValue) {\n return\n }\n if (isSVG) {\n elem.setAttribute('class', nextClassValue)\n syncManagedAttributeSnapshot(elem, 'class')\n } else {\n ;(elem as Element & { className: string }).className = nextClassValue\n syncManagedAttributeSnapshot(elem, 'class')\n }\n lastClassValue = nextClassValue\n })\n return\n }\n\n if (name === 'ref') {\n const resolved = value()\n syncRuntimeRefMarker(elem, resolved)\n assignRuntimeRef(resolved, elem, getRuntimeContainer())\n return\n }\n\n if (name === ACTION_FORM_ATTR) {\n let lastAssignedValue = ATTR_UNSET as string | symbol | null\n effect(() => {\n const resolved = value()\n const nextValue =\n resolved === false || resolved === undefined || resolved === null ? null : String(resolved)\n if (lastAssignedValue === nextValue) {\n return\n }\n if (nextValue === null) {\n elem.removeAttribute(name)\n } else {\n elem.setAttribute(name, nextValue)\n }\n syncManagedAttributeSnapshot(elem, name)\n if (nextValue !== null && elem instanceof HTMLFormElement) {\n ensureActionCsrfInput(elem)\n }\n lastAssignedValue = nextValue\n })\n return\n }\n\n if (name === DANGEROUSLY_SET_INNER_HTML_PROP) {\n let lastHTML = ATTR_UNSET as string | symbol\n effect(() => {\n const html = value()\n const nextHTML = html === false || html === undefined || html === null ? '' : String(html)\n if (lastHTML === nextHTML) {\n return\n }\n ;(elem as Element & { innerHTML: string }).innerHTML = nextHTML\n lastHTML = nextHTML\n })\n return\n }\n\n let lastAssignedValue = ATTR_UNSET as string | symbol\n effect(() => {\n const nextValue = String(value())\n if (lastAssignedValue === nextValue) {\n return\n }\n if (shouldUseAttributeAssignment(elem, name, isSVG)) {\n elem.setAttribute(name, nextValue)\n syncManagedAttributeSnapshot(elem, name)\n } else {\n // @ts-expect-error DOM property assignment uses dynamic keys.\n elem[name] = nextValue\n syncManagedAttributeSnapshot(elem, name)\n }\n lastAssignedValue = nextValue\n })\n}\n\nexport const hydrate = (\n Component: Component,\n target: HTMLElement,\n options?: {\n snapshot?: unknown[]\n },\n) => {\n const elem = withSignalSnapshot(options?.snapshot ?? null, () => Component({}))\n .result as unknown as ClientElementLike\n\n while (target.childNodes.length > 0) {\n target.lastChild?.remove()\n }\n\n for (const entry of Array.isArray(elem) ? elem : [elem]) {\n insert(() => entry, target)\n }\n}\n\nexport const createComponent = (Component: Component, props: unknown) => {\n if (isSuspenseType(Component)) {\n return () => jsxDEV(Component, props as Record<string, unknown>, null, false, {})\n }\n if (!getComponentMeta(Component)) {\n const render = Component as (props: unknown) => unknown\n return () => render(props) as ClientElementLike\n }\n return () => jsxDEV(Component, props as Record<string, unknown>, null, false, {})\n}\n","export interface Signal<T> {\n get(): T\n set(newValue: T): T\n effects: Set<Effect>\n}\n\ninterface Effect {\n fn: () => void\n signals: Set<Signal<unknown>>\n}\nlet currentEffect: Effect | null = null\n\nconst isPrimitiveSignalValue = (value: unknown) =>\n value === null || (typeof value !== 'object' && typeof value !== 'function')\n\nconst didSignalValueChange = (previous: unknown, next: unknown) => {\n if (isPrimitiveSignalValue(previous) && isPrimitiveSignalValue(next)) {\n return !Object.is(previous, next)\n }\n\n return previous !== next\n}\n\nexport const signal = <T>(init: T): Signal<T> => {\n let value = init\n const signal: Signal<T> = {\n get() {\n if (currentEffect) {\n this.effects.add(currentEffect)\n }\n return value\n },\n set(newValue) {\n if (!didSignalValueChange(value, newValue)) {\n return value\n }\n value = newValue\n for (const effect of this.effects) {\n effect.fn()\n }\n return value\n },\n effects: new Set(),\n }\n return signal\n}\n\nconst registry = new FinalizationRegistry<Effect>((effect) => {\n for (const signal of effect.signals) {\n signal.effects.delete(effect)\n }\n})\n\nexport const effect = (fn: () => void) => {\n const newEffect: Effect = {\n fn() {\n fn()\n },\n signals: new Set(),\n }\n\n currentEffect = newEffect\n newEffect.fn()\n currentEffect = null\n\n registry.register(fn, newEffect)\n}\n"],"mappings":"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"}
|
package/core/client/mod.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../../action-
|
|
2
|
-
import "../../signal-
|
|
1
|
+
import "../../action-BcEktMN2.mjs";
|
|
2
|
+
import "../../signal-B1aQQyxh.mjs";
|
|
3
3
|
import "../../snapshot-BdY3jcVk.mjs";
|
|
4
|
-
import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../client
|
|
4
|
+
import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../client-DI_VsKvi.mjs";
|
|
5
5
|
export { attr, createComponent, createTemplate, effect, hydrate, insert };
|
package/core/dev-client/mod.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Jt as setExternalComponentMeta, Nt as getExternalComponentMeta, Tt as __eclipsaComponent, jt as getComponentMeta } from "../../action-
|
|
2
|
-
import "../../signal-
|
|
1
|
+
import { Jt as setExternalComponentMeta, Nt as getExternalComponentMeta, Tt as __eclipsaComponent, jt as getComponentMeta } from "../../action-BcEktMN2.mjs";
|
|
2
|
+
import "../../signal-B1aQQyxh.mjs";
|
|
3
3
|
import "../../snapshot-BdY3jcVk.mjs";
|
|
4
|
-
import { a as hydrate } from "../../client
|
|
4
|
+
import { a as hydrate } from "../../client-DI_VsKvi.mjs";
|
|
5
5
|
//#region core/dev-client/hot.ts
|
|
6
6
|
const HOT_COMPONENT_TARGET_KEY = Symbol.for("eclipsa.hot-component-target");
|
|
7
7
|
const unwrapHotComponent = (Component) => Component[HOT_COMPONENT_TARGET_KEY] ?? Component;
|
package/core/internal.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as getRegisteredActionHook, B as setExternalComponentMeta, C as getComponentMeta, Ct as __eclipsaAction, D as getLoaderHandleMeta, E as getLazyMeta, F as getWatchMeta, H as setLoaderHookMeta, I as registerActionHook, L as registerLoaderHook, M as getRegisteredLoaderHook, N as getRegisteredLoaderHookIds, Nt as getRuntimeComponentId, O as getLoaderHookMeta, P as getSignalMeta, R as setActionHandleMeta, S as getActionHookMeta, T as getExternalComponentMeta, U as setNavigateMeta, V as setLoaderHandleMeta, W as setSignalMeta, Y as __eclipsaLoader, _ as __eclipsaComponent, a as EventDescriptor, b as __eclipsaWatch, c as ExternalComponentReference, d as LoaderHandleMeta, f as LoaderHookMeta, g as WatchReference, h as WatchMeta, i as ComponentOptions, j as getRegisteredActionHookIds, k as getNavigateMeta, l as LazyMeta, m as SignalMeta, n as ActionHookMeta, o as ExternalComponentDescriptor, p as NavigateMeta, r as ComponentMeta, s as ExternalComponentMeta, t as ActionHandleMeta, u as LazyReference, v as __eclipsaEvent, w as getEventMeta, x as getActionHandleMeta, y as __eclipsaLazy, z as setActionHookMeta } from "../internal-
|
|
1
|
+
import { A as getRegisteredActionHook, B as setExternalComponentMeta, C as getComponentMeta, Ct as __eclipsaAction, D as getLoaderHandleMeta, E as getLazyMeta, F as getWatchMeta, H as setLoaderHookMeta, I as registerActionHook, L as registerLoaderHook, M as getRegisteredLoaderHook, N as getRegisteredLoaderHookIds, Nt as getRuntimeComponentId, O as getLoaderHookMeta, P as getSignalMeta, R as setActionHandleMeta, S as getActionHookMeta, T as getExternalComponentMeta, U as setNavigateMeta, V as setLoaderHandleMeta, W as setSignalMeta, Y as __eclipsaLoader, _ as __eclipsaComponent, a as EventDescriptor, b as __eclipsaWatch, c as ExternalComponentReference, d as LoaderHandleMeta, f as LoaderHookMeta, g as WatchReference, h as WatchMeta, i as ComponentOptions, j as getRegisteredActionHookIds, k as getNavigateMeta, l as LazyMeta, m as SignalMeta, n as ActionHookMeta, o as ExternalComponentDescriptor, p as NavigateMeta, r as ComponentMeta, s as ExternalComponentMeta, t as ActionHandleMeta, u as LazyReference, v as __eclipsaEvent, w as getEventMeta, x as getActionHandleMeta, y as __eclipsaLazy, z as setActionHookMeta } from "../internal-L0hnuNCn.mjs";
|
|
2
2
|
export { ActionHandleMeta, ActionHookMeta, ComponentMeta, ComponentOptions, EventDescriptor, ExternalComponentDescriptor, ExternalComponentMeta, ExternalComponentReference, LazyMeta, LazyReference, LoaderHandleMeta, LoaderHookMeta, NavigateMeta, SignalMeta, WatchMeta, WatchReference, __eclipsaAction, __eclipsaComponent, __eclipsaEvent, __eclipsaLazy, __eclipsaLoader, __eclipsaWatch, getActionHandleMeta, getActionHookMeta, getComponentMeta, getEventMeta, getExternalComponentMeta, getLazyMeta, getLoaderHandleMeta, getLoaderHookMeta, getNavigateMeta, getRegisteredActionHook, getRegisteredActionHookIds, getRegisteredLoaderHook, getRegisteredLoaderHookIds, getRuntimeComponentId, getSignalMeta, getWatchMeta, registerActionHook, registerLoaderHook, setActionHandleMeta, setActionHookMeta, setExternalComponentMeta, setLoaderHandleMeta, setLoaderHookMeta, setNavigateMeta, setSignalMeta };
|
package/core/internal.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $t as __eclipsaLoader, A as getRuntimeComponentId, At as getActionHookMeta, Bt as getRegisteredLoaderHook, Dt as __eclipsaLazy, Et as __eclipsaEvent, Ft as getLoaderHandleMeta, Gt as registerLoaderHook, Ht as getSignalMeta, It as getLoaderHookMeta, Jt as setExternalComponentMeta, Kt as setActionHandleMeta, Lt as getNavigateMeta, Mt as getEventMeta, Nt as getExternalComponentMeta, Ot as __eclipsaWatch, Pt as getLazyMeta, Qt as setSignalMeta, Rt as getRegisteredActionHook, Tt as __eclipsaComponent, Ut as getWatchMeta, Vt as getRegisteredLoaderHookIds, Wt as registerActionHook, Xt as setLoaderHookMeta, Yt as setLoaderHandleMeta, Zt as setNavigateMeta, i as __eclipsaAction, jt as getComponentMeta, kt as getActionHandleMeta, qt as setActionHookMeta, zt as getRegisteredActionHookIds } from "../action-
|
|
1
|
+
import { $t as __eclipsaLoader, A as getRuntimeComponentId, At as getActionHookMeta, Bt as getRegisteredLoaderHook, Dt as __eclipsaLazy, Et as __eclipsaEvent, Ft as getLoaderHandleMeta, Gt as registerLoaderHook, Ht as getSignalMeta, It as getLoaderHookMeta, Jt as setExternalComponentMeta, Kt as setActionHandleMeta, Lt as getNavigateMeta, Mt as getEventMeta, Nt as getExternalComponentMeta, Ot as __eclipsaWatch, Pt as getLazyMeta, Qt as setSignalMeta, Rt as getRegisteredActionHook, Tt as __eclipsaComponent, Ut as getWatchMeta, Vt as getRegisteredLoaderHookIds, Wt as registerActionHook, Xt as setLoaderHookMeta, Yt as setLoaderHandleMeta, Zt as setNavigateMeta, i as __eclipsaAction, jt as getComponentMeta, kt as getActionHandleMeta, qt as setActionHookMeta, zt as getRegisteredActionHookIds } from "../action-BcEktMN2.mjs";
|
|
2
2
|
export { __eclipsaAction, __eclipsaComponent, __eclipsaEvent, __eclipsaLazy, __eclipsaLoader, __eclipsaWatch, getActionHandleMeta, getActionHookMeta, getComponentMeta, getEventMeta, getExternalComponentMeta, getLazyMeta, getLoaderHandleMeta, getLoaderHookMeta, getNavigateMeta, getRegisteredActionHook, getRegisteredActionHookIds, getRegisteredLoaderHook, getRegisteredLoaderHookIds, getRuntimeComponentId, getSignalMeta, getWatchMeta, registerActionHook, registerLoaderHook, setActionHandleMeta, setActionHookMeta, setExternalComponentMeta, setLoaderHandleMeta, setLoaderHookMeta, setNavigateMeta, setSignalMeta };
|
package/core/prod-client/mod.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { U as renderClientInsertable, j as getRuntimeContainer } from "../../action-
|
|
1
|
+
import { U as renderClientInsertable, j as getRuntimeContainer } from "../../action-BcEktMN2.mjs";
|
|
2
2
|
import { a as jsxDEV } from "../../jsx-dev-runtime-DpbWQ4Q0.mjs";
|
|
3
|
-
import "../../signal-
|
|
3
|
+
import "../../signal-B1aQQyxh.mjs";
|
|
4
4
|
import "../../snapshot-BdY3jcVk.mjs";
|
|
5
|
-
import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../client
|
|
5
|
+
import { a as hydrate, i as createTemplate, n as attr, o as insert, r as createComponent, t as effect } from "../../client-DI_VsKvi.mjs";
|
|
6
6
|
//#region core/prod-client/eurl.ts
|
|
7
7
|
const eurlMaps = /* @__PURE__ */ new Map();
|
|
8
8
|
const fetchEurl = async (id) => {
|
|
@@ -254,6 +254,7 @@ interface ResumePayload {
|
|
|
254
254
|
watches: Record<string, ResumeWatchPayload>;
|
|
255
255
|
}
|
|
256
256
|
interface ReactiveEffect {
|
|
257
|
+
container?: RuntimeContainer | null;
|
|
257
258
|
fn: () => void;
|
|
258
259
|
signals: Set<SignalRecord>;
|
|
259
260
|
}
|
|
@@ -716,4 +717,4 @@ declare const setSignalMeta: <T>(target: {
|
|
|
716
717
|
declare const getSignalMeta: <T>(value: unknown) => SignalMeta<T> | null;
|
|
717
718
|
//#endregion
|
|
718
719
|
export { isPendingSsrLoaderError as $, NavigateOptions as $n, APP_HOOKS_ELEMENT_ID as $t, getRegisteredActionHook as A, resolveReroute as An, primeActionState as At, setExternalComponentMeta as B, SerializedReference as Bn, RuntimeContextToken as Bt, getComponentMeta as C, createRequestFetch as Cn, __eclipsaAction as Ct, getLoaderHandleMeta as D, markPublicError as Dn, getActionFormSubmissionId as Dt, getLazyMeta as E, getCurrentServerRequestContext as En, executeActionSubmission as Et, getWatchMeta as F, withServerRequestContext as Fn, renderSSRAttr as Ft, LoaderFactory as G, escapeInlineScriptText as Gn, RouteMetadata as Gt, setLoaderHookMeta as H, SerializedUndefined as Hn, MetadataContext as Ht, registerActionHook as I, DeserializeValueOptions as In, renderSSRMap as It, LoaderMiddleware as J, serializeJSONScriptContent as Jn, RouteMetadataValue as Jt, LoaderHandle as K, escapeJSONScriptText as Kn, RouteMetadataExport as Kt, registerLoaderHook as L, SerializeValueOptions as Ln, renderSSRValue as Lt, getRegisteredLoaderHook as M, serializePublicValue as Mn, validator as Mt, getRegisteredLoaderHookIds as N, toPublicError as Nn, getRuntimeComponentId as Nt, getLoaderHookMeta as O, registerClientHooks as On, getNormalizedActionInput as Ot, getSignalMeta as P, transformCurrentPublicError as Pn, primeLocationState as Pt, hasLoader as Q, Navigate as Qn, resolveRouteMetadata as Qt, setActionHandleMeta as R, SerializedMap as Rn, ResumePayload as Rt, getActionHookMeta as S, attachRequestFetch as Sn, StandardSchemaV1 as St, getExternalComponentMeta as T, getClientHooks as Tn, executeAction as Tt, setNavigateMeta as U, SerializedValue as Un, OpenGraphMetadata as Ut, setLoaderHandleMeta as V, SerializedSet as Vn, RESUME_FINAL_STATE_ELEMENT_ID as Vt, setSignalMeta as W, deserializeValue as Wn, ROUTE_METADATA_HEAD_ATTR as Wt, consumePendingSsrLoaderIds as X, GetStaticPaths as Xn, composeRouteMetadata as Xt, __eclipsaLoader as Y, serializeValue as Yn, TwitterMetadata as Yt, executeLoader as Z, LinkPrefetchMode as Zn, renderRouteMetadataHead as Zt, __eclipsaComponent as _, ServerHooksModule as _n, InferStandardSchemaOutput as _t, EventDescriptor as a, BaseAppVariables as an, ACTION_CONTENT_TYPE as at, __eclipsaWatch as b, TransportHook as bn, StandardSchemaIssue as bt, ExternalComponentReference as c, HandleErrorInput as cn, ActionFactory as ct, LoaderHandleMeta as d, HandleResolveOptions as dn, ActionHandler as dt, AppContext as en, RouteLocation as er, loader as et, LoaderHookMeta as f, PublicError as fn, ActionMiddleware as ft, WatchReference as g, ResolvedHooks as gn, InferStandardSchemaInput as gt, WatchMeta as h, Reroute as hn, ActionValidatorMiddleware as ht, ComponentOptions as i, AppVariables as in, resolvePendingLoaders as it, getRegisteredActionHookIds as j, runHandleError as jn, registerAction as jt, getNavigateMeta as k, resetClientHooks as kn, hasAction as kt, LazyMeta as l, HandleFetch as ln, ActionFormProps as lt, SignalMeta as m, RequestFetch as mn, ActionSubmission as mt, ActionHookMeta as n, AppHooksManifest as nn, StaticPath as nr, primeLoaderState as nt, ExternalComponentDescriptor as o, Handle as on, ACTION_FORM_ATTR as ot, NavigateMeta as p, PublicErrorShape as pn, ActionOpaqueRef as pt, LoaderHandler as q, parseSerializedJSON as qn, RouteMetadataResolver as qt, ComponentMeta as r, AppHooksModule as rn, registerLoader as rt, ExternalComponentMeta as s, HandleError as sn, ACTION_FORM_FIELD as st, ActionHandleMeta as t, AppEnv as tn, RouteParams as tr, markPendingSsrLoader as tt, LazyReference as u, HandleResolve as un, ActionHandle as ut, __eclipsaEvent as v, ServerInit as vn, OpaqueDomRef as vt, getEventMeta as w, deserializePublicValue as wn, action as wt, getActionHandleMeta as x, WithAppEnv as xn, StandardSchemaResult as xt, __eclipsaLazy as y, Transport as yn, OpaqueSignalRef as yt, setActionHookMeta as z, SerializedObject as zn, RuntimeContainer as zt };
|
|
719
|
-
//# sourceMappingURL=internal-
|
|
720
|
+
//# sourceMappingURL=internal-L0hnuNCn.d.mts.map
|
package/jsx/mod.mjs
CHANGED
package/mod.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { i as JSX, n as DelegatedEvent, r as EventHandler, t as BindTarget } from "./types-Cu9gFlEY.mjs";
|
|
2
2
|
import { n as EURL, t as Component } from "./component-yvTtnI00.mjs";
|
|
3
|
-
import { $ as isPendingSsrLoaderError, $n as NavigateOptions, $t as APP_HOOKS_ELEMENT_ID, An as resolveReroute, At as primeActionState, Bn as SerializedReference, Bt as RuntimeContextToken, Cn as createRequestFetch, Ct as __eclipsaAction, Dn as markPublicError, Dt as getActionFormSubmissionId, En as getCurrentServerRequestContext, Et as executeActionSubmission, Fn as withServerRequestContext, Ft as renderSSRAttr, G as LoaderFactory, Gn as escapeInlineScriptText, Gt as RouteMetadata, Hn as SerializedUndefined, Ht as MetadataContext, In as DeserializeValueOptions, It as renderSSRMap, J as LoaderMiddleware, Jn as serializeJSONScriptContent, Jt as RouteMetadataValue, K as LoaderHandle, Kn as escapeJSONScriptText, Kt as RouteMetadataExport, Ln as SerializeValueOptions, Lt as renderSSRValue, Mn as serializePublicValue, Mt as validator, Nn as toPublicError, On as registerClientHooks, Ot as getNormalizedActionInput, Pn as transformCurrentPublicError, Q as hasLoader, Qn as Navigate, Qt as resolveRouteMetadata, Rn as SerializedMap, Sn as attachRequestFetch, St as StandardSchemaV1, Tn as getClientHooks, Tt as executeAction, Un as SerializedValue, Ut as OpenGraphMetadata, Vn as SerializedSet, Vt as RESUME_FINAL_STATE_ELEMENT_ID, Wn as deserializeValue, Wt as ROUTE_METADATA_HEAD_ATTR, X as consumePendingSsrLoaderIds, Xn as GetStaticPaths, Xt as composeRouteMetadata, Y as __eclipsaLoader, Yn as serializeValue, Yt as TwitterMetadata, Z as executeLoader, Zn as LinkPrefetchMode, Zt as renderRouteMetadataHead, _n as ServerHooksModule, _t as InferStandardSchemaOutput, an as BaseAppVariables, at as ACTION_CONTENT_TYPE, bn as TransportHook, bt as StandardSchemaIssue, cn as HandleErrorInput, ct as ActionFactory, dn as HandleResolveOptions, dt as ActionHandler, en as AppContext, er as RouteLocation, et as loader, fn as PublicError, ft as ActionMiddleware, gn as ResolvedHooks, gt as InferStandardSchemaInput, hn as Reroute, ht as ActionValidatorMiddleware, in as AppVariables, it as resolvePendingLoaders, jn as runHandleError, jt as registerAction, kn as resetClientHooks, kt as hasAction, ln as HandleFetch, lt as ActionFormProps, mn as RequestFetch, mt as ActionSubmission, nn as AppHooksManifest, nr as StaticPath, nt as primeLoaderState, on as Handle, ot as ACTION_FORM_ATTR, pn as PublicErrorShape, pt as ActionOpaqueRef, q as LoaderHandler, qn as parseSerializedJSON, qt as RouteMetadataResolver, rn as AppHooksModule, rt as registerLoader, sn as HandleError, st as ACTION_FORM_FIELD, tn as AppEnv, tr as RouteParams, tt as markPendingSsrLoader, un as HandleResolve, ut as ActionHandle, vn as ServerInit, vt as OpaqueDomRef, wn as deserializePublicValue, wt as action, xn as WithAppEnv, xt as StandardSchemaResult, yn as Transport, yt as OpaqueSignalRef, zn as SerializedObject } from "./internal-
|
|
3
|
+
import { $ as isPendingSsrLoaderError, $n as NavigateOptions, $t as APP_HOOKS_ELEMENT_ID, An as resolveReroute, At as primeActionState, Bn as SerializedReference, Bt as RuntimeContextToken, Cn as createRequestFetch, Ct as __eclipsaAction, Dn as markPublicError, Dt as getActionFormSubmissionId, En as getCurrentServerRequestContext, Et as executeActionSubmission, Fn as withServerRequestContext, Ft as renderSSRAttr, G as LoaderFactory, Gn as escapeInlineScriptText, Gt as RouteMetadata, Hn as SerializedUndefined, Ht as MetadataContext, In as DeserializeValueOptions, It as renderSSRMap, J as LoaderMiddleware, Jn as serializeJSONScriptContent, Jt as RouteMetadataValue, K as LoaderHandle, Kn as escapeJSONScriptText, Kt as RouteMetadataExport, Ln as SerializeValueOptions, Lt as renderSSRValue, Mn as serializePublicValue, Mt as validator, Nn as toPublicError, On as registerClientHooks, Ot as getNormalizedActionInput, Pn as transformCurrentPublicError, Q as hasLoader, Qn as Navigate, Qt as resolveRouteMetadata, Rn as SerializedMap, Sn as attachRequestFetch, St as StandardSchemaV1, Tn as getClientHooks, Tt as executeAction, Un as SerializedValue, Ut as OpenGraphMetadata, Vn as SerializedSet, Vt as RESUME_FINAL_STATE_ELEMENT_ID, Wn as deserializeValue, Wt as ROUTE_METADATA_HEAD_ATTR, X as consumePendingSsrLoaderIds, Xn as GetStaticPaths, Xt as composeRouteMetadata, Y as __eclipsaLoader, Yn as serializeValue, Yt as TwitterMetadata, Z as executeLoader, Zn as LinkPrefetchMode, Zt as renderRouteMetadataHead, _n as ServerHooksModule, _t as InferStandardSchemaOutput, an as BaseAppVariables, at as ACTION_CONTENT_TYPE, bn as TransportHook, bt as StandardSchemaIssue, cn as HandleErrorInput, ct as ActionFactory, dn as HandleResolveOptions, dt as ActionHandler, en as AppContext, er as RouteLocation, et as loader, fn as PublicError, ft as ActionMiddleware, gn as ResolvedHooks, gt as InferStandardSchemaInput, hn as Reroute, ht as ActionValidatorMiddleware, in as AppVariables, it as resolvePendingLoaders, jn as runHandleError, jt as registerAction, kn as resetClientHooks, kt as hasAction, ln as HandleFetch, lt as ActionFormProps, mn as RequestFetch, mt as ActionSubmission, nn as AppHooksManifest, nr as StaticPath, nt as primeLoaderState, on as Handle, ot as ACTION_FORM_ATTR, pn as PublicErrorShape, pt as ActionOpaqueRef, q as LoaderHandler, qn as parseSerializedJSON, qt as RouteMetadataResolver, rn as AppHooksModule, rt as registerLoader, sn as HandleError, st as ACTION_FORM_FIELD, tn as AppEnv, tr as RouteParams, tt as markPendingSsrLoader, un as HandleResolve, ut as ActionHandle, vn as ServerInit, vt as OpaqueDomRef, wn as deserializePublicValue, wt as action, xn as WithAppEnv, xt as StandardSchemaResult, yn as Transport, yt as OpaqueSignalRef, zn as SerializedObject } from "./internal-L0hnuNCn.mjs";
|
|
4
4
|
import { a as onMount, c as useComputed, d as useWatch, i as onCleanup, l as useComputed$, n as WatchDependency, o as onVisible, r as effect, s as signal, t as Signal, u as useSignal } from "./signal-CosyYdtA.mjs";
|
|
5
|
-
import { a as renderSSR, c as serializeResumePayload, i as getStreamingResumeBootstrapScriptContent, n as SSRStreamChunk, o as renderSSRAsync, r as SSRStreamRenderResult, s as renderSSRStream, t as SSRRenderResult } from "./ssr-
|
|
5
|
+
import { a as renderSSR, c as serializeResumePayload, i as getStreamingResumeBootstrapScriptContent, n as SSRStreamChunk, o as renderSSRAsync, r as SSRStreamRenderResult, s as renderSSRStream, t as SSRRenderResult } from "./ssr-OV5GBPzK.mjs";
|
|
6
6
|
import { Env, MiddlewareHandler } from "hono/types";
|
|
7
7
|
|
|
8
8
|
//#region core/context.d.ts
|
package/mod.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { $n as deserializeValue, $t as __eclipsaLoader, An as createPendingSignalError, B as refreshRegisteredRouteContainers, Bn as createRequestFetch, Cn as createContext, Ct as RESUME_FINAL_STATE_ELEMENT_ID, Dn as materializeRuntimeContextProvider, E as createResumeContainer, En as materializeRuntimeContext, F as notFound$1, G as renderSSRAttr, Gn as registerClientHooks, H as registerRuntimeScopedStyle, Hn as getClientHooks, Jn as runHandleError, K as renderSSRMap, Kn as resetClientHooks, Mn as isSuspenseType, On as useContext, P as installResumeListeners, Qn as withServerRequestContext, R as primeRouteModules, Rn as APP_HOOKS_ELEMENT_ID, Sn as resolveRouteMetadata, Tn as getRuntimeContextReference, Un as getCurrentServerRequestContext, V as registerResumeContainer, Vn as deserializePublicValue, Wn as markPublicError, X as restoreResumedExternalComponents, Xn as toPublicError, Y as restoreRegisteredRpcHandles, Yn as serializePublicValue, Z as restoreResumedLocalSignalEffects, Zn as transformCurrentPublicError, _n as ROUTE_REPLACE_ATTR, a as action, ar as IS_BROWSER, at as useRuntimeLocation, bn as composeRouteMetadata, c as getActionFormSubmissionId, cn as registerLoader, cr as noSerialize, ct as useRuntimeRouteParams, d as primeActionState, en as consumePendingSsrLoaderIds, er as escapeInlineScriptText, f as registerAction, fn as ROUTE_LINK_ATTR, i as __eclipsaAction, in as loader, ir as serializeValue, jn as isPendingSignalError, kn as Suspense, l as getNormalizedActionInput, ln as resolvePendingLoaders, m as applyResumeHmrUpdateToRegisteredContainers, mn as ROUTE_PREFETCH_ATTR, n as ACTION_FORM_ATTR, nn as hasLoader, nr as parseSerializedJSON, o as executeAction, on as markPendingSsrLoader, or as IS_SSR, ot as useRuntimeNavigate, p as validator, pn as ROUTE_MANIFEST_ELEMENT_ID, q as renderSSRValue, qn as resolveReroute, r as ACTION_FORM_FIELD, rn as isPendingSsrLoaderError, rr as serializeJSONScriptContent, s as executeActionSubmission, sn as primeLoaderState, sr as isNoSerialize, st as useRuntimeRouteError, t as ACTION_CONTENT_TYPE, tn as executeLoader, tr as escapeJSONScriptText, u as hasAction, wn as getContextProviderMeta, xn as renderRouteMetadataHead, yn as ROUTE_METADATA_HEAD_ATTR, zn as attachRequestFetch } from "./action-
|
|
1
|
+
import { $n as deserializeValue, $t as __eclipsaLoader, An as createPendingSignalError, B as refreshRegisteredRouteContainers, Bn as createRequestFetch, Cn as createContext, Ct as RESUME_FINAL_STATE_ELEMENT_ID, Dn as materializeRuntimeContextProvider, E as createResumeContainer, En as materializeRuntimeContext, F as notFound$1, G as renderSSRAttr, Gn as registerClientHooks, H as registerRuntimeScopedStyle, Hn as getClientHooks, Jn as runHandleError, K as renderSSRMap, Kn as resetClientHooks, Mn as isSuspenseType, On as useContext, P as installResumeListeners, Qn as withServerRequestContext, R as primeRouteModules, Rn as APP_HOOKS_ELEMENT_ID, Sn as resolveRouteMetadata, Tn as getRuntimeContextReference, Un as getCurrentServerRequestContext, V as registerResumeContainer, Vn as deserializePublicValue, Wn as markPublicError, X as restoreResumedExternalComponents, Xn as toPublicError, Y as restoreRegisteredRpcHandles, Yn as serializePublicValue, Z as restoreResumedLocalSignalEffects, Zn as transformCurrentPublicError, _n as ROUTE_REPLACE_ATTR, a as action, ar as IS_BROWSER, at as useRuntimeLocation, bn as composeRouteMetadata, c as getActionFormSubmissionId, cn as registerLoader, cr as noSerialize, ct as useRuntimeRouteParams, d as primeActionState, en as consumePendingSsrLoaderIds, er as escapeInlineScriptText, f as registerAction, fn as ROUTE_LINK_ATTR, i as __eclipsaAction, in as loader, ir as serializeValue, jn as isPendingSignalError, kn as Suspense, l as getNormalizedActionInput, ln as resolvePendingLoaders, m as applyResumeHmrUpdateToRegisteredContainers, mn as ROUTE_PREFETCH_ATTR, n as ACTION_FORM_ATTR, nn as hasLoader, nr as parseSerializedJSON, o as executeAction, on as markPendingSsrLoader, or as IS_SSR, ot as useRuntimeNavigate, p as validator, pn as ROUTE_MANIFEST_ELEMENT_ID, q as renderSSRValue, qn as resolveReroute, r as ACTION_FORM_FIELD, rn as isPendingSsrLoaderError, rr as serializeJSONScriptContent, s as executeActionSubmission, sn as primeLoaderState, sr as isNoSerialize, st as useRuntimeRouteError, t as ACTION_CONTENT_TYPE, tn as executeLoader, tr as escapeJSONScriptText, u as hasAction, wn as getContextProviderMeta, xn as renderRouteMetadataHead, yn as ROUTE_METADATA_HEAD_ATTR, zn as attachRequestFetch } from "./action-BcEktMN2.mjs";
|
|
2
2
|
import { a as jsxDEV } from "./jsx-dev-runtime-DpbWQ4Q0.mjs";
|
|
3
3
|
import { t as RESUME_HMR_EVENT } from "./resume-hmr-qTpLc5o-.mjs";
|
|
4
|
-
import { a as signal, c as useSignal, i as onVisible, l as useWatch, n as onCleanup, o as useComputed, r as onMount, s as useComputed$, t as effect } from "./signal-
|
|
4
|
+
import { a as signal, c as useSignal, i as onVisible, l as useWatch, n as onCleanup, o as useComputed, r as onMount, s as useComputed$, t as effect } from "./signal-B1aQQyxh.mjs";
|
|
5
5
|
import { n as registerSnapshotSignal, r as withSignalSnapshot, t as consumeSnapshotValue } from "./snapshot-BdY3jcVk.mjs";
|
|
6
|
-
import { a as serializeResumePayload, i as renderSSRStream, n as renderSSR, r as renderSSRAsync, t as getStreamingResumeBootstrapScriptContent } from "./ssr-
|
|
6
|
+
import { a as serializeResumePayload, i as renderSSRStream, n as renderSSR, r as renderSSRAsync, t as getStreamingResumeBootstrapScriptContent } from "./ssr-Bqev931T.mjs";
|
|
7
7
|
//#region core/dynamic.ts
|
|
8
8
|
const omitComponentProp = (props) => {
|
|
9
9
|
const descriptors = Object.getOwnPropertyDescriptors(props);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eclipsa",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"homepage": "https://github.com/pnsk-lab/eclipsa",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/pnsk-lab/eclipsa/issues"
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@eclipsa/optimizer": "^0.1.
|
|
66
|
+
"@eclipsa/optimizer": "^0.1.11",
|
|
67
67
|
"fast-glob": "^3.3.2",
|
|
68
68
|
"hono": "^4.6.4"
|
|
69
69
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { An as createPendingSignalError, C as createOnCleanup, D as createStandaloneRuntimeSignal, M as getRuntimeSignalId, O as createWatch, Qt as setSignalMeta, S as createEffect, T as createOnVisible, dt as writeAsyncSignalSnapshot, j as getRuntimeContainer, jn as isPendingSignalError, lt as useRuntimeSignal, w as createOnMount, z as readAsyncSignalSnapshot } from "./action-
|
|
1
|
+
import { An as createPendingSignalError, C as createOnCleanup, D as createStandaloneRuntimeSignal, M as getRuntimeSignalId, O as createWatch, Qt as setSignalMeta, S as createEffect, T as createOnVisible, dt as writeAsyncSignalSnapshot, j as getRuntimeContainer, jn as isPendingSignalError, lt as useRuntimeSignal, w as createOnMount, z as readAsyncSignalSnapshot } from "./action-BcEktMN2.mjs";
|
|
2
2
|
//#region core/signal.ts
|
|
3
3
|
const isPromiseLike = (value) => !!value && typeof value === "object" && "then" in value && typeof value.then === "function";
|
|
4
4
|
const isComputedSnapshot = (value) => !!value && typeof value === "object" && value.__e_async_computed === true;
|
|
@@ -113,4 +113,4 @@ const useComputed$ = useComputed;
|
|
|
113
113
|
//#endregion
|
|
114
114
|
export { signal as a, useSignal as c, onVisible as i, useWatch as l, onCleanup as n, useComputed as o, onMount as r, useComputed$ as s, effect as t };
|
|
115
115
|
|
|
116
|
-
//# sourceMappingURL=signal-
|
|
116
|
+
//# sourceMappingURL=signal-B1aQQyxh.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-
|
|
1
|
+
{"version":3,"file":"signal-B1aQQyxh.mjs","names":[],"sources":["../core/signal.ts"],"sourcesContent":["import {\n createStandaloneRuntimeSignal,\n createEffect,\n createOnCleanup,\n createOnMount,\n createOnVisible,\n createWatch,\n getRuntimeContainer,\n getRuntimeSignalId,\n readAsyncSignalSnapshot,\n useRuntimeSignal,\n writeAsyncSignalSnapshot,\n} from './runtime.ts'\nimport { setSignalMeta, type SignalMeta } from './internal.ts'\nimport { createPendingSignalError, isPendingSignalError } from './suspense.ts'\n\nexport interface Signal<T> {\n value: T\n}\n\ninterface SignalFactory {\n <T>(value: T): Signal<T>\n <T>(value?: T | undefined): Signal<T | undefined>\n computed<T>(value: () => T | Promise<T>, dependencies?: WatchDependency[]): Signal<T>\n}\n\ninterface ComputedSnapshot<T> {\n __e_async_computed: true\n error?: unknown\n promise?: Promise<T>\n status: 'pending' | 'rejected' | 'resolved'\n value?: T\n}\n\nexport type WatchDependency<T = unknown> = Signal<T> | (() => T)\n\nconst isPromiseLike = <T>(value: unknown): value is Promise<T> =>\n !!value && typeof value === 'object' && 'then' in value && typeof value.then === 'function'\n\nconst isComputedSnapshot = <T>(value: unknown): value is ComputedSnapshot<T> =>\n !!value && typeof value === 'object' && (value as ComputedSnapshot<T>).__e_async_computed === true\n\nconst createComputedSnapshot = <T>(\n snapshot: Omit<ComputedSnapshot<T>, '__e_async_computed'>,\n): ComputedSnapshot<T> => ({\n __e_async_computed: true,\n ...snapshot,\n})\n\nconst createComputedSignalFactory =\n (createBaseSignal: <T>(value: T) => Signal<T>): SignalFactory['computed'] =>\n <T>(fn: () => T | Promise<T>, dependencies?: WatchDependency[]) => {\n const state = createBaseSignal<ComputedSnapshot<T>>(\n createComputedSnapshot({\n status: 'pending',\n }),\n )\n const runtimeContainer = getRuntimeContainer()\n const signalId = getRuntimeSignalId(state)\n const seededSnapshot =\n signalId !== null\n ? (readAsyncSignalSnapshot(signalId, runtimeContainer) as ComputedSnapshot<T> | undefined)\n : undefined\n let useSeededSnapshot = !!seededSnapshot && seededSnapshot.status !== 'pending'\n let version = 0\n\n createEffect(\n () => {\n if (useSeededSnapshot && seededSnapshot) {\n useSeededSnapshot = false\n state.value = seededSnapshot\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, seededSnapshot, runtimeContainer)\n }\n return\n }\n\n const currentVersion = ++version\n try {\n const nextValue = fn()\n if (isPromiseLike<T>(nextValue)) {\n const pending = createComputedSnapshot<T>({\n promise: nextValue,\n status: 'pending',\n })\n state.value = pending\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, pending, runtimeContainer)\n }\n nextValue.then(\n (resolved) => {\n if (currentVersion !== version) {\n return\n }\n const completed = createComputedSnapshot<T>({\n status: 'resolved',\n value: resolved,\n })\n state.value = completed\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, completed, runtimeContainer)\n }\n },\n (error) => {\n if (currentVersion !== version) {\n return\n }\n const failed = createComputedSnapshot<T>({\n error,\n status: 'rejected',\n })\n state.value = failed\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, failed, runtimeContainer)\n }\n },\n )\n return\n }\n\n const resolved = createComputedSnapshot<T>({\n status: 'resolved',\n value: nextValue,\n })\n state.value = resolved\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, resolved, runtimeContainer)\n }\n } catch (error) {\n if (isPendingSignalError(error)) {\n const pending = createComputedSnapshot<T>({\n promise: error.promise as Promise<T>,\n status: 'pending',\n })\n state.value = pending\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, pending, runtimeContainer)\n }\n return\n }\n const failed = createComputedSnapshot<T>({\n error,\n status: 'rejected',\n })\n state.value = failed\n if (signalId !== null) {\n writeAsyncSignalSnapshot(signalId, failed, runtimeContainer)\n }\n }\n },\n dependencies\n ? {\n dependencies,\n errorLabel: 'useComputed',\n untracked: true,\n }\n : undefined,\n )\n\n const handle = {} as Signal<T>\n Object.defineProperty(handle, 'value', {\n configurable: true,\n enumerable: true,\n get() {\n const snapshot = state.value\n if (!isComputedSnapshot<T>(snapshot)) {\n return snapshot as T\n }\n if (snapshot.status === 'pending') {\n throw createPendingSignalError(snapshot.promise ?? Promise.resolve(undefined))\n }\n if (snapshot.status === 'rejected') {\n throw snapshot.error\n }\n return snapshot.value as T\n },\n })\n if (signalId !== null) {\n setSignalMeta(handle, {\n get: () => handle.value,\n id: signalId,\n kind: 'computed-signal',\n set: () => {\n throw new TypeError('Computed signals are read-only.')\n },\n } satisfies SignalMeta<T>)\n }\n return handle\n }\n\nexport const signal = ((value) => createStandaloneRuntimeSignal(value)) as SignalFactory\n\nexport const useSignal = ((value) => useRuntimeSignal(value)) as SignalFactory\n\nsignal.computed = createComputedSignalFactory((value) => createStandaloneRuntimeSignal(value))\nuseSignal.computed = createComputedSignalFactory((value) => useRuntimeSignal(value))\n\nexport const effect = (fn: () => void) => createEffect(fn)\nexport const onCleanup = (fn: () => void) => createOnCleanup(fn)\nexport const onMount = (fn: () => void) => createOnMount(fn)\nexport const onVisible = (fn: () => void) => createOnVisible(fn)\nexport const useWatch = (fn: () => void, dependencies?: WatchDependency[]) =>\n createWatch(fn, dependencies)\n\nexport const useComputed = <T>(fn: () => T | Promise<T>, dependencies?: WatchDependency[]) =>\n useSignal.computed(fn, dependencies)\nexport const useComputed$ = useComputed\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { N as getStreamingResumeBootstrapScriptContent$1, _ as beginSSRContainer, b as collectPendingSuspenseBoundaryIds, g as beginAsyncSSRContainer, k as getResumePayloadScriptContent, nt as toResumePayloadSubset, pt as createComponentBoundaryHtmlComment, tt as toResumePayload, ut as withRuntimeContainer } from "./action-
|
|
1
|
+
import { N as getStreamingResumeBootstrapScriptContent$1, _ as beginSSRContainer, b as collectPendingSuspenseBoundaryIds, g as beginAsyncSSRContainer, k as getResumePayloadScriptContent, nt as toResumePayloadSubset, pt as createComponentBoundaryHtmlComment, tt as toResumePayload, ut as withRuntimeContainer } from "./action-BcEktMN2.mjs";
|
|
2
2
|
import { renderToString } from "./jsx/mod.mjs";
|
|
3
3
|
//#region core/ssr.ts
|
|
4
4
|
const collectRenderedComponentIdsFromHtml = (html) => {
|
|
@@ -47,7 +47,7 @@ const renderSSRAsync = async (render, options) => {
|
|
|
47
47
|
payload: toResumePayload(container)
|
|
48
48
|
};
|
|
49
49
|
} catch (error) {
|
|
50
|
-
const { isPendingSsrLoaderError, resolvePendingLoaders } = await import("./action-
|
|
50
|
+
const { isPendingSsrLoaderError, resolvePendingLoaders } = await import("./action-BcEktMN2.mjs").then((n) => n.an);
|
|
51
51
|
if (!isPendingSsrLoaderError(error)) throw error;
|
|
52
52
|
if (!(options?.resolvePendingLoaders ? await options.resolvePendingLoaders(container) : options?.context ? await resolvePendingLoaders(container, options.context) : false)) throw error;
|
|
53
53
|
seededLoaderStates.clear();
|
|
@@ -95,7 +95,7 @@ const renderStreamingAttempt = async (render, options, seededLoaderStates, async
|
|
|
95
95
|
pendingBoundaryIds: collectPendingSuspenseBoundaryIds(container)
|
|
96
96
|
};
|
|
97
97
|
} catch (error) {
|
|
98
|
-
const { isPendingSsrLoaderError, resolvePendingLoaders } = await import("./action-
|
|
98
|
+
const { isPendingSsrLoaderError, resolvePendingLoaders } = await import("./action-BcEktMN2.mjs").then((n) => n.an);
|
|
99
99
|
if (!isPendingSsrLoaderError(error)) throw error;
|
|
100
100
|
if (!(options.resolvePendingLoaders ? await options.resolvePendingLoaders(container) : options.context ? await resolvePendingLoaders(container, options.context) : false)) throw error;
|
|
101
101
|
seededLoaderStates.clear();
|
|
@@ -154,4 +154,4 @@ const getStreamingResumeBootstrapScriptContent = () => getStreamingResumeBootstr
|
|
|
154
154
|
//#endregion
|
|
155
155
|
export { serializeResumePayload as a, renderSSRStream as i, renderSSR as n, renderSSRAsync as r, getStreamingResumeBootstrapScriptContent as t };
|
|
156
156
|
|
|
157
|
-
//# sourceMappingURL=ssr-
|
|
157
|
+
//# sourceMappingURL=ssr-Bqev931T.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr-lXZqUHZs.mjs","names":["getStreamingResumeBootstrapScriptContentFromRuntime"],"sources":["../core/ssr.ts"],"sourcesContent":["import type { Context } from 'hono'\nimport type { JSX } from '../jsx/types.ts'\nimport { renderToString } from '../jsx/mod.ts'\nimport { createComponentBoundaryHtmlComment } from './runtime/markers.ts'\nimport {\n beginAsyncSSRContainer,\n beginSSRContainer,\n collectPendingSuspenseBoundaryIds,\n getResumePayloadScriptContent,\n getStreamingResumeBootstrapScriptContent as getStreamingResumeBootstrapScriptContentFromRuntime,\n toResumePayload,\n toResumePayloadSubset,\n type ResumePayload,\n type RuntimeContainer,\n withRuntimeContainer,\n} from './runtime.ts'\n\nexport interface SSRRenderResult {\n html: string\n payload: ResumePayload\n}\n\nexport interface SSRStreamChunk {\n boundaryId: string\n html: string\n payload: ResumePayload\n}\n\nexport interface SSRStreamRenderResult extends SSRRenderResult {\n chunks: AsyncIterable<SSRStreamChunk>\n}\n\nconst collectRenderedComponentIdsFromHtml = (html: string) => {\n const ids = new Set<string>()\n const pattern = /<!--ec:c:([^:]+):start-->/g\n for (const match of html.matchAll(pattern)) {\n const id = match[1]\n if (id) {\n ids.add(id)\n }\n }\n return ids\n}\n\nconst createStreamingResumePayload = (\n container: RuntimeContainer,\n renderedComponentIds: Set<string>,\n): ResumePayload => toResumePayloadSubset(container, ['$root', ...renderedComponentIds])\n\nconst getPendingSuspensePromises = (container: RuntimeContainer) =>\n collectPendingSuspenseBoundaryIds(container)\n .map((boundaryId) => container.components.get(boundaryId)?.suspensePromise ?? null)\n .filter((promise): promise is Promise<unknown> => !!promise)\n\nexport const renderSSR = (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n symbols?: Record<string, string>\n },\n): SSRRenderResult => {\n const { container, result } = beginSSRContainer(options?.symbols ?? {}, render)\n return {\n html: withRuntimeContainer(container, () => renderToString(result)),\n payload: toResumePayload(container),\n }\n}\n\nexport const renderSSRAsync = async (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n): Promise<SSRRenderResult> => {\n const asyncSignalSnapshotCache = new Map<string, unknown>()\n const externalRenderCache = new Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >()\n const seededLoaderStates = new Map<string, { data: unknown; error: unknown; loaded: boolean }>()\n\n for (let attempt = 0; attempt < 10; attempt += 1) {\n const { container, result } = await beginAsyncSSRContainer(\n options?.symbols ?? {},\n render,\n async (runtimeContainer) => {\n for (const [id, snapshot] of seededLoaderStates) {\n runtimeContainer.loaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n await options?.prepare?.(runtimeContainer)\n },\n {\n asyncSignalSnapshotCache,\n externalRenderCache,\n },\n )\n\n try {\n const html = withRuntimeContainer(container, () => renderToString(result))\n const pendingSuspensePromises = getPendingSuspensePromises(container)\n if (container.pendingSuspensePromises.size > 0 || pendingSuspensePromises.length > 0) {\n await Promise.allSettled([...container.pendingSuspensePromises, ...pendingSuspensePromises])\n continue\n }\n asyncSignalSnapshotCache.clear()\n return {\n html,\n payload: toResumePayload(container),\n }\n } catch (error) {\n const { isPendingSsrLoaderError, resolvePendingLoaders } = await import('./loader.ts')\n if (!isPendingSsrLoaderError(error)) {\n throw error\n }\n const resolved = options?.resolvePendingLoaders\n ? await options.resolvePendingLoaders(container)\n : options?.context\n ? await resolvePendingLoaders(container, options.context)\n : false\n if (!resolved) {\n throw error\n }\n seededLoaderStates.clear()\n for (const [id, snapshot] of container.loaderStates) {\n seededLoaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n }\n }\n\n throw new Error('SSR loader resolution did not converge.')\n}\n\nconst extractBoundaryHtml = (html: string, boundaryId: string) => {\n const startToken = createComponentBoundaryHtmlComment(boundaryId, 'start')\n const endToken = createComponentBoundaryHtmlComment(boundaryId, 'end')\n const startIndex = html.indexOf(startToken)\n if (startIndex < 0) {\n return null\n }\n const endIndex = html.indexOf(endToken, startIndex + startToken.length)\n if (endIndex < 0) {\n return null\n }\n return html.slice(startIndex + startToken.length, endIndex)\n}\n\nconst renderStreamingAttempt = async (\n render: () => JSX.Element | JSX.Element[],\n options: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n seededLoaderStates: Map<string, { data: unknown; error: unknown; loaded: boolean }>,\n asyncSignalSnapshotCache: Map<string, unknown>,\n externalRenderCache: Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >,\n): Promise<{\n container: RuntimeContainer\n html: string\n payload: ResumePayload\n pendingBoundaryIds: string[]\n}> => {\n for (let attempt = 0; attempt < 10; attempt += 1) {\n const { container, result } = await beginAsyncSSRContainer(\n options.symbols ?? {},\n render,\n async (runtimeContainer) => {\n for (const [id, snapshot] of seededLoaderStates) {\n runtimeContainer.loaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n await options.prepare?.(runtimeContainer)\n },\n {\n asyncSignalSnapshotCache,\n externalRenderCache,\n },\n )\n\n try {\n const html = withRuntimeContainer(container, () => renderToString(result))\n if (container.pendingSuspensePromises.size > 0) {\n await Promise.allSettled(container.pendingSuspensePromises)\n continue\n }\n const renderedComponentIds = collectRenderedComponentIdsFromHtml(html)\n return {\n container,\n html,\n payload: createStreamingResumePayload(container, renderedComponentIds),\n pendingBoundaryIds: collectPendingSuspenseBoundaryIds(container),\n }\n } catch (error) {\n const { isPendingSsrLoaderError, resolvePendingLoaders } = await import('./loader.ts')\n if (!isPendingSsrLoaderError(error)) {\n throw error\n }\n const resolved = options.resolvePendingLoaders\n ? await options.resolvePendingLoaders(container)\n : options.context\n ? await resolvePendingLoaders(container, options.context)\n : false\n if (!resolved) {\n throw error\n }\n seededLoaderStates.clear()\n for (const [id, snapshot] of container.loaderStates) {\n seededLoaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n }\n }\n\n throw new Error('SSR loader resolution did not converge.')\n}\n\nexport const renderSSRStream = async (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n): Promise<SSRStreamRenderResult> => {\n const asyncSignalSnapshotCache = new Map<string, unknown>()\n const externalRenderCache = new Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >()\n const seededLoaderStates = new Map<string, { data: unknown; error: unknown; loaded: boolean }>()\n const initial = await renderStreamingAttempt(\n render,\n options ?? {},\n seededLoaderStates,\n asyncSignalSnapshotCache,\n externalRenderCache,\n )\n\n if (initial.pendingBoundaryIds.length === 0) {\n asyncSignalSnapshotCache.clear()\n return {\n chunks: (async function* () {})(),\n html: initial.html,\n payload: initial.payload,\n }\n }\n\n const chunks = (async function* () {\n let current = initial\n\n try {\n while (current.pendingBoundaryIds.length > 0) {\n await Promise.race(\n current.pendingBoundaryIds.map(\n (boundaryId) =>\n current.container.components.get(boundaryId)?.suspensePromise?.then(\n () => boundaryId,\n () => boundaryId,\n ) ?? Promise.resolve(boundaryId),\n ),\n )\n\n const next = await renderStreamingAttempt(\n render,\n options ?? {},\n seededLoaderStates,\n asyncSignalSnapshotCache,\n externalRenderCache,\n )\n\n const nextPending = new Set(next.pendingBoundaryIds)\n const completedIds = current.pendingBoundaryIds\n .filter((boundaryId) => !nextPending.has(boundaryId))\n .sort((left, right) => left.split('.').length - right.split('.').length)\n\n for (const boundaryId of completedIds) {\n const boundaryHtml = extractBoundaryHtml(next.html, boundaryId)\n if (boundaryHtml === null) {\n continue\n }\n yield {\n boundaryId,\n html: boundaryHtml,\n payload: next.payload,\n }\n }\n\n current = next\n }\n } finally {\n asyncSignalSnapshotCache.clear()\n }\n })()\n\n return {\n chunks,\n html: initial.html,\n payload: initial.payload,\n }\n}\n\nexport const serializeResumePayload = (payload: ResumePayload) =>\n getResumePayloadScriptContent(payload)\n\nexport const getStreamingResumeBootstrapScriptContent = () =>\n getStreamingResumeBootstrapScriptContentFromRuntime()\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ssr-Bqev931T.mjs","names":["getStreamingResumeBootstrapScriptContentFromRuntime"],"sources":["../core/ssr.ts"],"sourcesContent":["import type { Context } from 'hono'\nimport type { JSX } from '../jsx/types.ts'\nimport { renderToString } from '../jsx/mod.ts'\nimport { createComponentBoundaryHtmlComment } from './runtime/markers.ts'\nimport {\n beginAsyncSSRContainer,\n beginSSRContainer,\n collectPendingSuspenseBoundaryIds,\n getResumePayloadScriptContent,\n getStreamingResumeBootstrapScriptContent as getStreamingResumeBootstrapScriptContentFromRuntime,\n toResumePayload,\n toResumePayloadSubset,\n type ResumePayload,\n type RuntimeContainer,\n withRuntimeContainer,\n} from './runtime.ts'\n\nexport interface SSRRenderResult {\n html: string\n payload: ResumePayload\n}\n\nexport interface SSRStreamChunk {\n boundaryId: string\n html: string\n payload: ResumePayload\n}\n\nexport interface SSRStreamRenderResult extends SSRRenderResult {\n chunks: AsyncIterable<SSRStreamChunk>\n}\n\nconst collectRenderedComponentIdsFromHtml = (html: string) => {\n const ids = new Set<string>()\n const pattern = /<!--ec:c:([^:]+):start-->/g\n for (const match of html.matchAll(pattern)) {\n const id = match[1]\n if (id) {\n ids.add(id)\n }\n }\n return ids\n}\n\nconst createStreamingResumePayload = (\n container: RuntimeContainer,\n renderedComponentIds: Set<string>,\n): ResumePayload => toResumePayloadSubset(container, ['$root', ...renderedComponentIds])\n\nconst getPendingSuspensePromises = (container: RuntimeContainer) =>\n collectPendingSuspenseBoundaryIds(container)\n .map((boundaryId) => container.components.get(boundaryId)?.suspensePromise ?? null)\n .filter((promise): promise is Promise<unknown> => !!promise)\n\nexport const renderSSR = (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n symbols?: Record<string, string>\n },\n): SSRRenderResult => {\n const { container, result } = beginSSRContainer(options?.symbols ?? {}, render)\n return {\n html: withRuntimeContainer(container, () => renderToString(result)),\n payload: toResumePayload(container),\n }\n}\n\nexport const renderSSRAsync = async (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n): Promise<SSRRenderResult> => {\n const asyncSignalSnapshotCache = new Map<string, unknown>()\n const externalRenderCache = new Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >()\n const seededLoaderStates = new Map<string, { data: unknown; error: unknown; loaded: boolean }>()\n\n for (let attempt = 0; attempt < 10; attempt += 1) {\n const { container, result } = await beginAsyncSSRContainer(\n options?.symbols ?? {},\n render,\n async (runtimeContainer) => {\n for (const [id, snapshot] of seededLoaderStates) {\n runtimeContainer.loaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n await options?.prepare?.(runtimeContainer)\n },\n {\n asyncSignalSnapshotCache,\n externalRenderCache,\n },\n )\n\n try {\n const html = withRuntimeContainer(container, () => renderToString(result))\n const pendingSuspensePromises = getPendingSuspensePromises(container)\n if (container.pendingSuspensePromises.size > 0 || pendingSuspensePromises.length > 0) {\n await Promise.allSettled([...container.pendingSuspensePromises, ...pendingSuspensePromises])\n continue\n }\n asyncSignalSnapshotCache.clear()\n return {\n html,\n payload: toResumePayload(container),\n }\n } catch (error) {\n const { isPendingSsrLoaderError, resolvePendingLoaders } = await import('./loader.ts')\n if (!isPendingSsrLoaderError(error)) {\n throw error\n }\n const resolved = options?.resolvePendingLoaders\n ? await options.resolvePendingLoaders(container)\n : options?.context\n ? await resolvePendingLoaders(container, options.context)\n : false\n if (!resolved) {\n throw error\n }\n seededLoaderStates.clear()\n for (const [id, snapshot] of container.loaderStates) {\n seededLoaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n }\n }\n\n throw new Error('SSR loader resolution did not converge.')\n}\n\nconst extractBoundaryHtml = (html: string, boundaryId: string) => {\n const startToken = createComponentBoundaryHtmlComment(boundaryId, 'start')\n const endToken = createComponentBoundaryHtmlComment(boundaryId, 'end')\n const startIndex = html.indexOf(startToken)\n if (startIndex < 0) {\n return null\n }\n const endIndex = html.indexOf(endToken, startIndex + startToken.length)\n if (endIndex < 0) {\n return null\n }\n return html.slice(startIndex + startToken.length, endIndex)\n}\n\nconst renderStreamingAttempt = async (\n render: () => JSX.Element | JSX.Element[],\n options: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n seededLoaderStates: Map<string, { data: unknown; error: unknown; loaded: boolean }>,\n asyncSignalSnapshotCache: Map<string, unknown>,\n externalRenderCache: Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >,\n): Promise<{\n container: RuntimeContainer\n html: string\n payload: ResumePayload\n pendingBoundaryIds: string[]\n}> => {\n for (let attempt = 0; attempt < 10; attempt += 1) {\n const { container, result } = await beginAsyncSSRContainer(\n options.symbols ?? {},\n render,\n async (runtimeContainer) => {\n for (const [id, snapshot] of seededLoaderStates) {\n runtimeContainer.loaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n await options.prepare?.(runtimeContainer)\n },\n {\n asyncSignalSnapshotCache,\n externalRenderCache,\n },\n )\n\n try {\n const html = withRuntimeContainer(container, () => renderToString(result))\n if (container.pendingSuspensePromises.size > 0) {\n await Promise.allSettled(container.pendingSuspensePromises)\n continue\n }\n const renderedComponentIds = collectRenderedComponentIdsFromHtml(html)\n return {\n container,\n html,\n payload: createStreamingResumePayload(container, renderedComponentIds),\n pendingBoundaryIds: collectPendingSuspenseBoundaryIds(container),\n }\n } catch (error) {\n const { isPendingSsrLoaderError, resolvePendingLoaders } = await import('./loader.ts')\n if (!isPendingSsrLoaderError(error)) {\n throw error\n }\n const resolved = options.resolvePendingLoaders\n ? await options.resolvePendingLoaders(container)\n : options.context\n ? await resolvePendingLoaders(container, options.context)\n : false\n if (!resolved) {\n throw error\n }\n seededLoaderStates.clear()\n for (const [id, snapshot] of container.loaderStates) {\n seededLoaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n }\n }\n\n throw new Error('SSR loader resolution did not converge.')\n}\n\nexport const renderSSRStream = async (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n): Promise<SSRStreamRenderResult> => {\n const asyncSignalSnapshotCache = new Map<string, unknown>()\n const externalRenderCache = new Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >()\n const seededLoaderStates = new Map<string, { data: unknown; error: unknown; loaded: boolean }>()\n const initial = await renderStreamingAttempt(\n render,\n options ?? {},\n seededLoaderStates,\n asyncSignalSnapshotCache,\n externalRenderCache,\n )\n\n if (initial.pendingBoundaryIds.length === 0) {\n asyncSignalSnapshotCache.clear()\n return {\n chunks: (async function* () {})(),\n html: initial.html,\n payload: initial.payload,\n }\n }\n\n const chunks = (async function* () {\n let current = initial\n\n try {\n while (current.pendingBoundaryIds.length > 0) {\n await Promise.race(\n current.pendingBoundaryIds.map(\n (boundaryId) =>\n current.container.components.get(boundaryId)?.suspensePromise?.then(\n () => boundaryId,\n () => boundaryId,\n ) ?? Promise.resolve(boundaryId),\n ),\n )\n\n const next = await renderStreamingAttempt(\n render,\n options ?? {},\n seededLoaderStates,\n asyncSignalSnapshotCache,\n externalRenderCache,\n )\n\n const nextPending = new Set(next.pendingBoundaryIds)\n const completedIds = current.pendingBoundaryIds\n .filter((boundaryId) => !nextPending.has(boundaryId))\n .sort((left, right) => left.split('.').length - right.split('.').length)\n\n for (const boundaryId of completedIds) {\n const boundaryHtml = extractBoundaryHtml(next.html, boundaryId)\n if (boundaryHtml === null) {\n continue\n }\n yield {\n boundaryId,\n html: boundaryHtml,\n payload: next.payload,\n }\n }\n\n current = next\n }\n } finally {\n asyncSignalSnapshotCache.clear()\n }\n })()\n\n return {\n chunks,\n html: initial.html,\n payload: initial.payload,\n }\n}\n\nexport const serializeResumePayload = (payload: ResumePayload) =>\n getResumePayloadScriptContent(payload)\n\nexport const getStreamingResumeBootstrapScriptContent = () =>\n getStreamingResumeBootstrapScriptContentFromRuntime()\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as JSX } from "./types-Cu9gFlEY.mjs";
|
|
2
|
-
import { Rt as ResumePayload, zt as RuntimeContainer } from "./internal-
|
|
2
|
+
import { Rt as ResumePayload, zt as RuntimeContainer } from "./internal-L0hnuNCn.mjs";
|
|
3
3
|
import { Context } from "hono";
|
|
4
4
|
|
|
5
5
|
//#region core/ssr.d.ts
|
|
@@ -34,4 +34,4 @@ declare const serializeResumePayload: (payload: ResumePayload) => string;
|
|
|
34
34
|
declare const getStreamingResumeBootstrapScriptContent: () => string;
|
|
35
35
|
//#endregion
|
|
36
36
|
export { renderSSR as a, serializeResumePayload as c, getStreamingResumeBootstrapScriptContent as i, SSRStreamChunk as n, renderSSRAsync as o, SSRStreamRenderResult as r, renderSSRStream as s, SSRRenderResult as t };
|
|
37
|
-
//# sourceMappingURL=ssr-
|
|
37
|
+
//# sourceMappingURL=ssr-OV5GBPzK.d.mts.map
|
package/vite/build/runtime.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $t as APP_HOOKS_ELEMENT_ID, An as resolveReroute, At as primeActionState, Cn as createRequestFetch, Dn as markPublicError, Dt as getActionFormSubmissionId, Fn as withServerRequestContext, Gn as escapeInlineScriptText, Kn as escapeJSONScriptText, Mn as serializePublicValue, Nn as toPublicError, On as registerClientHooks, Ot as getNormalizedActionInput, Pt as primeLocationState, Q as hasLoader, Sn as attachRequestFetch, Tt as executeAction, Vt as RESUME_FINAL_STATE_ELEMENT_ID, Wn as deserializeValue, Xt as composeRouteMetadata, Z as executeLoader, Zt as renderRouteMetadataHead, _n as ServerHooksModule, an as BaseAppVariables, at as ACTION_CONTENT_TYPE, en as AppContext, fn as PublicError, gn as ResolvedHooks, hn as Reroute, it as resolvePendingLoaders, jn as runHandleError, kt as hasAction, ln as HandleFetch, mn as RequestFetch, nn as AppHooksManifest, nt as primeLoaderState, on as Handle, rn as AppHooksModule, sn as HandleError, wn as deserializePublicValue, xn as WithAppEnv, yn as Transport } from "../../internal-
|
|
1
|
+
import { $t as APP_HOOKS_ELEMENT_ID, An as resolveReroute, At as primeActionState, Cn as createRequestFetch, Dn as markPublicError, Dt as getActionFormSubmissionId, Fn as withServerRequestContext, Gn as escapeInlineScriptText, Kn as escapeJSONScriptText, Mn as serializePublicValue, Nn as toPublicError, On as registerClientHooks, Ot as getNormalizedActionInput, Pt as primeLocationState, Q as hasLoader, Sn as attachRequestFetch, Tt as executeAction, Vt as RESUME_FINAL_STATE_ELEMENT_ID, Wn as deserializeValue, Xt as composeRouteMetadata, Z as executeLoader, Zt as renderRouteMetadataHead, _n as ServerHooksModule, an as BaseAppVariables, at as ACTION_CONTENT_TYPE, en as AppContext, fn as PublicError, gn as ResolvedHooks, hn as Reroute, it as resolvePendingLoaders, jn as runHandleError, kt as hasAction, ln as HandleFetch, mn as RequestFetch, nn as AppHooksManifest, nt as primeLoaderState, on as Handle, rn as AppHooksModule, sn as HandleError, wn as deserializePublicValue, xn as WithAppEnv, yn as Transport } from "../../internal-L0hnuNCn.mjs";
|
|
2
2
|
import { Fragment, jsxDEV } from "../../jsx/jsx-dev-runtime.mjs";
|
|
3
|
-
import { a as renderSSR, c as serializeResumePayload, i as getStreamingResumeBootstrapScriptContent, o as renderSSRAsync, s as renderSSRStream } from "../../ssr-
|
|
3
|
+
import { a as renderSSR, c as serializeResumePayload, i as getStreamingResumeBootstrapScriptContent, o as renderSSRAsync, s as renderSSRStream } from "../../ssr-OV5GBPzK.mjs";
|
|
4
4
|
|
|
5
5
|
//#region core/action-csrf.d.ts
|
|
6
6
|
declare const ensureActionCsrfToken: (c: AppContext<any>) => string;
|
package/vite/build/runtime.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $n as deserializeValue, Bn as createRequestFetch, Ct as RESUME_FINAL_STATE_ELEMENT_ID, Fn as applyActionCsrfCookie, Gn as registerClientHooks, In as ensureActionCsrfToken, Jn as runHandleError, L as primeLocationState, Qn as withServerRequestContext, Rn as APP_HOOKS_ELEMENT_ID, Vn as deserializePublicValue, Wn as markPublicError, Xn as toPublicError, Yn as serializePublicValue, bn as composeRouteMetadata, c as getActionFormSubmissionId, d as primeActionState, er as escapeInlineScriptText, l as getNormalizedActionInput, ln as resolvePendingLoaders, nn as hasLoader, o as executeAction, qn as resolveReroute, sn as primeLoaderState, t as ACTION_CONTENT_TYPE, tn as executeLoader, tr as escapeJSONScriptText, u as hasAction, xn as renderRouteMetadataHead, zn as attachRequestFetch } from "../../action-
|
|
1
|
+
import { $n as deserializeValue, Bn as createRequestFetch, Ct as RESUME_FINAL_STATE_ELEMENT_ID, Fn as applyActionCsrfCookie, Gn as registerClientHooks, In as ensureActionCsrfToken, Jn as runHandleError, L as primeLocationState, Qn as withServerRequestContext, Rn as APP_HOOKS_ELEMENT_ID, Vn as deserializePublicValue, Wn as markPublicError, Xn as toPublicError, Yn as serializePublicValue, bn as composeRouteMetadata, c as getActionFormSubmissionId, d as primeActionState, er as escapeInlineScriptText, l as getNormalizedActionInput, ln as resolvePendingLoaders, nn as hasLoader, o as executeAction, qn as resolveReroute, sn as primeLoaderState, t as ACTION_CONTENT_TYPE, tn as executeLoader, tr as escapeJSONScriptText, u as hasAction, xn as renderRouteMetadataHead, zn as attachRequestFetch } from "../../action-BcEktMN2.mjs";
|
|
2
2
|
import { a as jsxDEV, t as Fragment } from "../../jsx-dev-runtime-DpbWQ4Q0.mjs";
|
|
3
|
-
import { a as serializeResumePayload, i as renderSSRStream, n as renderSSR, r as renderSSRAsync, t as getStreamingResumeBootstrapScriptContent } from "../../ssr-
|
|
3
|
+
import { a as serializeResumePayload, i as renderSSRStream, n as renderSSR, r as renderSSRAsync, t as getStreamingResumeBootstrapScriptContent } from "../../ssr-Bqev931T.mjs";
|
|
4
4
|
export { ACTION_CONTENT_TYPE, APP_HOOKS_ELEMENT_ID, Fragment, RESUME_FINAL_STATE_ELEMENT_ID, applyActionCsrfCookie, attachRequestFetch, composeRouteMetadata, createRequestFetch, deserializePublicValue, deserializeValue, ensureActionCsrfToken, escapeInlineScriptText, escapeJSONScriptText, executeAction, executeLoader, getActionFormSubmissionId, getNormalizedActionInput, getStreamingResumeBootstrapScriptContent, hasAction, hasLoader, jsxDEV, markPublicError, primeActionState, primeLoaderState, primeLocationState, registerClientHooks, renderRouteMetadataHead, renderSSR, renderSSRAsync, renderSSRStream, resolvePendingLoaders, resolveReroute, runHandleError, serializePublicValue, serializeResumePayload, toPublicError, withServerRequestContext };
|