@fictjs/runtime 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced.cjs +9 -9
- package/dist/advanced.d.cts +3 -3
- package/dist/advanced.d.ts +3 -3
- package/dist/advanced.js +4 -4
- package/dist/{binding-DqxS9ZQf.d.ts → binding-DcnhUSQK.d.ts} +1 -1
- package/dist/{binding-DUEukRxl.d.cts → binding-FRyTeLDn.d.cts} +1 -1
- package/dist/{chunk-DKA2I6ET.js → chunk-2UR2UWE2.js} +3 -3
- package/dist/{chunk-SZLJCQFZ.cjs → chunk-44EQF3AR.cjs} +63 -52
- package/dist/chunk-44EQF3AR.cjs.map +1 -0
- package/dist/{chunk-I4GKKAAY.cjs → chunk-4QGEN5SJ.cjs} +295 -262
- package/dist/chunk-4QGEN5SJ.cjs.map +1 -0
- package/dist/{chunk-V7BC64W2.cjs → chunk-C5IE4WUG.cjs} +8 -8
- package/dist/{chunk-V7BC64W2.cjs.map → chunk-C5IE4WUG.cjs.map} +1 -1
- package/dist/{chunk-F4RVNXOL.js → chunk-DIK33H5U.js} +8 -2
- package/dist/chunk-DIK33H5U.js.map +1 -0
- package/dist/{chunk-2JRPPCG7.js → chunk-FESAXMHT.js} +7 -6
- package/dist/{chunk-2JRPPCG7.js.map → chunk-FESAXMHT.js.map} +1 -1
- package/dist/chunk-FHQZCAAK.cjs +112 -0
- package/dist/chunk-FHQZCAAK.cjs.map +1 -0
- package/dist/{chunk-EQ5E4WOV.cjs → chunk-QNMYVXRL.cjs} +44 -38
- package/dist/chunk-QNMYVXRL.cjs.map +1 -0
- package/dist/{chunk-P4TZLFV6.js → chunk-S63VBIWN.js} +27 -16
- package/dist/chunk-S63VBIWN.js.map +1 -0
- package/dist/{chunk-R6FINS25.js → chunk-WIHNVN6L.js} +106 -73
- package/dist/chunk-WIHNVN6L.js.map +1 -0
- package/dist/{devtools-CMxlJUTx.d.cts → devtools-BtIkN77t.d.cts} +1 -1
- package/dist/{devtools-C4Hgfa-S.d.ts → devtools-D2z4llpA.d.ts} +1 -1
- package/dist/index.cjs +60 -58
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.dev.js +72 -51
- package/dist/index.dev.js.map +1 -1
- package/dist/index.js +13 -11
- package/dist/index.js.map +1 -1
- package/dist/internal-list.cjs +4 -4
- package/dist/internal-list.d.cts +1 -1
- package/dist/internal-list.d.ts +1 -1
- package/dist/internal-list.js +3 -3
- package/dist/internal.cjs +5 -5
- package/dist/internal.d.cts +4 -4
- package/dist/internal.d.ts +4 -4
- package/dist/internal.js +4 -4
- package/dist/{list-BBzsJhrm.d.ts → list-BKM6YOPq.d.ts} +1 -1
- package/dist/{list-_NJCcjl1.d.cts → list-Bi8dDF8Q.d.cts} +1 -1
- package/dist/loader.cjs +28 -26
- package/dist/loader.cjs.map +1 -1
- package/dist/loader.js +11 -9
- package/dist/loader.js.map +1 -1
- package/dist/{props--zJ4ebbT.d.cts → props-9chMyBGb.d.cts} +1 -1
- package/dist/{props-BAGR7j-j.d.ts → props-D1nj2p_3.d.ts} +1 -1
- package/dist/{scope-CuImnvh1.d.ts → scope-BSkhJr0a.d.ts} +1 -1
- package/dist/{scope-Dq5hOu7c.d.cts → scope-Bn3sxem5.d.cts} +1 -1
- package/package.json +1 -1
- package/src/binding.ts +59 -29
- package/src/context.ts +4 -3
- package/src/dom.ts +65 -39
- package/src/error-boundary.ts +5 -5
- package/src/lifecycle.ts +8 -1
- package/src/list-helpers.ts +30 -13
- package/src/loader.ts +10 -8
- package/src/node-ops.ts +8 -5
- package/src/suspense.ts +5 -4
- package/dist/chunk-EQ5E4WOV.cjs.map +0 -1
- package/dist/chunk-F4RVNXOL.js.map +0 -1
- package/dist/chunk-I4GKKAAY.cjs.map +0 -1
- package/dist/chunk-K3DH5SD5.cjs +0 -111
- package/dist/chunk-K3DH5SD5.cjs.map +0 -1
- package/dist/chunk-P4TZLFV6.js.map +0 -1
- package/dist/chunk-R6FINS25.js.map +0 -1
- package/dist/chunk-SZLJCQFZ.cjs.map +0 -1
- /package/dist/{chunk-DKA2I6ET.js.map → chunk-2UR2UWE2.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
createContext,
|
|
3
3
|
hasContext,
|
|
4
4
|
useContext
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-FESAXMHT.js";
|
|
6
6
|
import {
|
|
7
7
|
Fragment,
|
|
8
8
|
batch,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
untrack,
|
|
20
20
|
useDeferredValue,
|
|
21
21
|
useTransition
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-WIHNVN6L.js";
|
|
23
23
|
import {
|
|
24
24
|
__fictGetSSRStreamHooks,
|
|
25
25
|
__fictPopSSRBoundary,
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
registerErrorHandler,
|
|
41
41
|
registerSuspenseHandler,
|
|
42
42
|
signal
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-DIK33H5U.js";
|
|
44
44
|
|
|
45
45
|
// src/ref.ts
|
|
46
46
|
function createRef() {
|
|
@@ -49,10 +49,11 @@ function createRef() {
|
|
|
49
49
|
|
|
50
50
|
// src/error-boundary.ts
|
|
51
51
|
function ErrorBoundary(props) {
|
|
52
|
-
const fragment = document.createDocumentFragment();
|
|
53
|
-
const marker = document.createComment("fict:error-boundary");
|
|
54
|
-
fragment.appendChild(marker);
|
|
55
52
|
const hostRoot = getCurrentRoot();
|
|
53
|
+
const markerOwnerDocument = hostRoot?.ownerDocument ?? document;
|
|
54
|
+
const fragment = markerOwnerDocument.createDocumentFragment();
|
|
55
|
+
const marker = markerOwnerDocument.createComment("fict:error-boundary");
|
|
56
|
+
fragment.appendChild(marker);
|
|
56
57
|
let cleanup;
|
|
57
58
|
let activeNodes = [];
|
|
58
59
|
let renderingFallback = false;
|
|
@@ -81,7 +82,7 @@ function ErrorBoundary(props) {
|
|
|
81
82
|
let nodes = [];
|
|
82
83
|
try {
|
|
83
84
|
const output = createElement(value);
|
|
84
|
-
nodes = toNodeArray(output);
|
|
85
|
+
nodes = toNodeArray(output, markerOwnerDocument);
|
|
85
86
|
const parentNode = marker.parentNode;
|
|
86
87
|
if (parentNode) {
|
|
87
88
|
insertNodesBefore(parentNode, nodes, marker);
|
|
@@ -159,6 +160,7 @@ function Suspense(props) {
|
|
|
159
160
|
let resolvedOnce = false;
|
|
160
161
|
let epoch = 0;
|
|
161
162
|
const hostRoot = getCurrentRoot();
|
|
163
|
+
const markerOwnerDocument = hostRoot?.ownerDocument ?? document;
|
|
162
164
|
const toFallback = (err) => typeof props.fallback === "function" ? props.fallback(err) : props.fallback;
|
|
163
165
|
const renderView = (view) => {
|
|
164
166
|
if (cleanup) {
|
|
@@ -182,7 +184,7 @@ function Suspense(props) {
|
|
|
182
184
|
boundaryPushed = true;
|
|
183
185
|
}
|
|
184
186
|
const output = createElement(view);
|
|
185
|
-
nodes = toNodeArray(output);
|
|
187
|
+
nodes = toNodeArray(output, markerOwnerDocument);
|
|
186
188
|
const suspendedAttempt = root.suspended || nodes.length > 0 && nodes.every((node) => node instanceof Comment && node.data === "fict:suspend");
|
|
187
189
|
if (suspendedAttempt) {
|
|
188
190
|
popRoot(prev);
|
|
@@ -213,9 +215,9 @@ function Suspense(props) {
|
|
|
213
215
|
};
|
|
214
216
|
activeNodes = nodes;
|
|
215
217
|
};
|
|
216
|
-
const fragment =
|
|
217
|
-
const startMarker =
|
|
218
|
-
const endMarker =
|
|
218
|
+
const fragment = markerOwnerDocument.createDocumentFragment();
|
|
219
|
+
const startMarker = markerOwnerDocument.createComment("fict:suspense-start");
|
|
220
|
+
const endMarker = markerOwnerDocument.createComment("fict:suspense-end");
|
|
219
221
|
fragment.appendChild(startMarker);
|
|
220
222
|
fragment.appendChild(endMarker);
|
|
221
223
|
let cleanup;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ref.ts","../src/error-boundary.ts","../src/suspense.ts"],"sourcesContent":["import type { RefObject } from './types'\n\n/**\n * Create a ref object for DOM element references.\n *\n * @returns A ref object with a `current` property initialized to `null`\n *\n * @example\n * ```tsx\n * import { createRef } from 'fict'\n *\n * function Component() {\n * const inputRef = createRef<HTMLInputElement>()\n *\n * $effect(() => {\n * inputRef.current?.focus()\n * })\n *\n * return <input ref={inputRef} />\n * }\n * ```\n */\nexport function createRef<T extends Element = HTMLElement>(): RefObject<T> {\n return { current: null }\n}\n","import { createElement } from './dom'\nimport { createEffect } from './effect'\nimport {\n createRootContext,\n destroyRoot,\n flushOnMount,\n getCurrentRoot,\n pushRoot,\n popRoot,\n registerErrorHandler,\n} from './lifecycle'\nimport { insertNodesBefore, removeNodes, toNodeArray } from './node-ops'\nimport type { BaseProps, FictNode } from './types'\n\ninterface ErrorBoundaryProps extends BaseProps {\n fallback: FictNode | ((err: unknown, reset?: () => void) => FictNode)\n onError?: (err: unknown) => void\n resetKeys?: unknown | (() => unknown)\n}\n\nexport function ErrorBoundary(props: ErrorBoundaryProps): FictNode {\n const fragment = document.createDocumentFragment()\n const marker = document.createComment('fict:error-boundary')\n fragment.appendChild(marker)\n\n const hostRoot = getCurrentRoot()\n\n let cleanup: (() => void) | undefined\n let activeNodes: Node[] = []\n let renderingFallback = false\n\n let reset = () => {}\n const toView = (err: unknown | null): FictNode | null => {\n if (err != null) {\n return typeof props.fallback === 'function'\n ? (props.fallback as (e: unknown, reset?: () => void) => FictNode)(err, reset)\n : props.fallback\n }\n return props.children ?? null\n }\n\n const renderValue = (value: FictNode | null) => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n if (activeNodes.length) {\n removeNodes(activeNodes)\n activeNodes = []\n }\n\n if (value == null || value === false) {\n return\n }\n\n const root = createRootContext(hostRoot)\n const prev = pushRoot(root)\n let nodes: Node[] = []\n try {\n const output = createElement(value)\n nodes = toNodeArray(output)\n const parentNode = marker.parentNode as (ParentNode & Node) | null\n if (parentNode) {\n insertNodesBefore(parentNode, nodes, marker)\n }\n } catch (err) {\n popRoot(prev)\n destroyRoot(root)\n // Fall back immediately on render errors, avoid infinite recursion\n if (renderingFallback) {\n throw err\n }\n // nested errors. If fallback rendering also throws, we should NOT reset\n // the flag until we're sure no more recursion is happening.\n renderingFallback = true\n try {\n renderValue(toView(err))\n // Only reset if successful - if renderValue threw, we want to keep\n // renderingFallback = true to prevent infinite recursion\n renderingFallback = false\n props.onError?.(err)\n } catch (fallbackErr) {\n // Fallback rendering failed - keep renderingFallback = true\n // to prevent further attempts, then rethrow\n // If fallback fails, report both errors\n props.onError?.(err)\n throw fallbackErr\n }\n return\n }\n popRoot(prev)\n flushOnMount(root)\n\n cleanup = () => {\n destroyRoot(root)\n removeNodes(nodes)\n }\n activeNodes = nodes\n }\n\n reset = () => {\n renderingFallback = false\n renderValue(toView(null))\n }\n\n renderValue(props.children ?? null)\n\n registerErrorHandler(err => {\n renderValue(toView(err))\n props.onError?.(err)\n return true\n })\n\n if (props.resetKeys !== undefined) {\n const isGetter =\n typeof props.resetKeys === 'function' && (props.resetKeys as () => unknown).length === 0\n const getter = isGetter ? (props.resetKeys as () => unknown) : undefined\n let prev = isGetter ? getter!() : props.resetKeys\n createEffect(() => {\n const next = getter ? getter() : props.resetKeys\n if (prev !== next) {\n prev = next\n renderValue(toView(null))\n }\n })\n }\n\n return fragment\n}\n","import { createElement } from './dom'\nimport { createEffect } from './effect'\nimport {\n createRootContext,\n destroyRoot,\n flushOnMount,\n getCurrentRoot,\n handleError,\n pushRoot,\n popRoot,\n registerSuspenseHandler,\n} from './lifecycle'\nimport { insertNodesBefore, removeNodes, toNodeArray } from './node-ops'\nimport { createSignal } from './signal'\nimport { __fictGetSSRStreamHooks, __fictPopSSRBoundary, __fictPushSSRBoundary } from './ssr-stream'\nimport type { BaseProps, FictNode, SuspenseToken } from './types'\n\nexport interface SuspenseProps extends BaseProps {\n fallback: FictNode | ((err?: unknown) => FictNode)\n onResolve?: () => void\n onReject?: (err: unknown) => void\n resetKeys?: unknown | (() => unknown)\n}\n\nexport interface SuspenseHandle {\n token: SuspenseToken\n resolve: () => void\n reject: (err: unknown) => void\n}\n\nexport function createSuspenseToken(): SuspenseHandle {\n let resolve!: () => void\n let reject!: (err: unknown) => void\n const promise = new Promise<void>((res, rej) => {\n resolve = res\n reject = rej\n })\n return {\n token: {\n then: promise.then.bind(promise),\n },\n resolve,\n reject,\n }\n}\n\nconst isThenable = (value: unknown): value is PromiseLike<unknown> =>\n typeof value === 'object' &&\n value !== null &&\n typeof (value as PromiseLike<unknown>).then === 'function'\n\nexport function Suspense(props: SuspenseProps): FictNode {\n const streamHooks = __fictGetSSRStreamHooks()\n const pending = createSignal(0)\n let resolvedOnce = false\n let epoch = 0\n const hostRoot = getCurrentRoot()\n\n const toFallback = (err?: unknown) =>\n typeof props.fallback === 'function'\n ? (props.fallback as (e?: unknown) => FictNode)(err)\n : props.fallback\n\n const renderView = (view: FictNode | null) => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n if (activeNodes.length) {\n removeNodes(activeNodes)\n activeNodes = []\n }\n\n if (view == null || view === false) {\n return\n }\n\n const root = createRootContext(hostRoot)\n const prev = pushRoot(root)\n let nodes: Node[] = []\n let boundaryPushed = false\n try {\n if (streamBoundaryId) {\n __fictPushSSRBoundary(streamBoundaryId)\n boundaryPushed = true\n }\n const output = createElement(view)\n nodes = toNodeArray(output)\n // Suspended view: child threw a suspense token and was handled upstream.\n // Avoid replacing existing fallback content; tear down this attempt.\n const suspendedAttempt =\n root.suspended ||\n (nodes.length > 0 &&\n nodes.every(node => node instanceof Comment && (node as Comment).data === 'fict:suspend'))\n if (suspendedAttempt) {\n popRoot(prev)\n destroyRoot(root)\n return\n }\n const parentNode = endMarker.parentNode as (ParentNode & Node) | null\n if (parentNode) {\n insertNodesBefore(parentNode, nodes, endMarker)\n }\n } catch (err) {\n popRoot(prev)\n destroyRoot(root)\n if (!handleError(err, { source: 'render' }, hostRoot)) {\n throw err\n }\n return\n } finally {\n if (boundaryPushed) {\n __fictPopSSRBoundary(streamBoundaryId ?? undefined)\n }\n }\n popRoot(prev)\n flushOnMount(root)\n\n cleanup = () => {\n destroyRoot(root)\n removeNodes(nodes)\n }\n activeNodes = nodes\n }\n\n const fragment = document.createDocumentFragment()\n const startMarker = document.createComment('fict:suspense-start')\n const endMarker = document.createComment('fict:suspense-end')\n fragment.appendChild(startMarker)\n fragment.appendChild(endMarker)\n let cleanup: (() => void) | undefined\n let activeNodes: Node[] = []\n let streamBoundaryId: string | null = null\n let streamPending = false\n\n if (streamHooks?.registerBoundary) {\n streamBoundaryId = streamHooks.registerBoundary(startMarker, endMarker) ?? null\n if (streamBoundaryId) {\n startMarker.data = `fict:suspense-start:${streamBoundaryId}`\n endMarker.data = `fict:suspense-end:${streamBoundaryId}`\n }\n }\n\n const onResolveMaybe = () => {\n if (!resolvedOnce) {\n resolvedOnce = true\n props.onResolve?.()\n }\n }\n\n registerSuspenseHandler(token => {\n const tokenEpoch = epoch\n if (!streamPending && streamBoundaryId && streamHooks?.boundaryPending) {\n streamPending = true\n streamHooks.boundaryPending(streamBoundaryId)\n }\n pending(pending() + 1)\n // Directly render fallback instead of using switchView to avoid\n // triggering the effect which would cause duplicate renders\n renderView(toFallback())\n\n const thenable = (token as SuspenseToken).then\n ? (token as SuspenseToken)\n : isThenable(token)\n ? token\n : null\n\n if (thenable) {\n thenable.then(\n () => {\n // This prevents stale token resolutions from affecting state after\n // a reset. The order is important: check epoch first, then update state.\n if (epoch !== tokenEpoch) {\n // Token is stale (from before a reset), ignore it completely\n return\n }\n // Use Math.max as a defensive measure - pending should never go below 0,\n // but this protects against edge cases where a token might resolve twice\n // or after the component has been reset.\n const newPending = Math.max(0, pending() - 1)\n pending(newPending)\n if (newPending === 0) {\n // Directly render children instead of using switchView\n renderView(props.children ?? null)\n if (streamPending && streamBoundaryId && streamHooks?.boundaryResolved) {\n streamPending = false\n streamHooks.boundaryResolved(streamBoundaryId)\n }\n onResolveMaybe()\n }\n },\n err => {\n // Same epoch check - ignore stale tokens\n if (epoch !== tokenEpoch) {\n return\n }\n const newPending = Math.max(0, pending() - 1)\n pending(newPending)\n let rejectionError = err\n try {\n props.onReject?.(err)\n } catch (callbackError) {\n rejectionError = callbackError\n }\n\n const handled = handleError(rejectionError, { source: 'render' }, hostRoot)\n if (!handled) {\n if (streamHooks?.onError) {\n streamHooks.onError(rejectionError, streamBoundaryId ?? undefined)\n return\n }\n throw rejectionError\n }\n if (\n newPending === 0 &&\n streamPending &&\n streamBoundaryId &&\n streamHooks?.boundaryResolved\n ) {\n streamPending = false\n streamHooks.boundaryResolved(streamBoundaryId)\n }\n },\n )\n return true\n }\n\n return false\n })\n\n // Initial render - render children directly\n // Note: This will be called synchronously during component creation.\n // If children suspend, the handler above will be called and switch to fallback.\n renderView(props.children ?? null)\n\n if (props.resetKeys !== undefined) {\n const isGetter =\n typeof props.resetKeys === 'function' && (props.resetKeys as () => unknown).length === 0\n const getter = isGetter ? (props.resetKeys as () => unknown) : undefined\n let prev = isGetter ? getter!() : props.resetKeys\n createEffect(() => {\n const next = getter ? getter() : props.resetKeys\n if (prev !== next) {\n prev = next\n epoch++\n pending(0)\n // Directly render children instead of using switchView\n renderView(props.children ?? null)\n if (streamPending && streamBoundaryId && streamHooks?.boundaryResolved) {\n streamPending = false\n streamHooks.boundaryResolved(streamBoundaryId)\n }\n }\n })\n }\n\n return fragment\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/ref.ts","../src/error-boundary.ts","../src/suspense.ts"],"sourcesContent":["import type { RefObject } from './types'\n\n/**\n * Create a ref object for DOM element references.\n *\n * @returns A ref object with a `current` property initialized to `null`\n *\n * @example\n * ```tsx\n * import { createRef } from 'fict'\n *\n * function Component() {\n * const inputRef = createRef<HTMLInputElement>()\n *\n * $effect(() => {\n * inputRef.current?.focus()\n * })\n *\n * return <input ref={inputRef} />\n * }\n * ```\n */\nexport function createRef<T extends Element = HTMLElement>(): RefObject<T> {\n return { current: null }\n}\n","import { createElement } from './dom'\nimport { createEffect } from './effect'\nimport {\n createRootContext,\n destroyRoot,\n flushOnMount,\n getCurrentRoot,\n pushRoot,\n popRoot,\n registerErrorHandler,\n} from './lifecycle'\nimport { insertNodesBefore, removeNodes, toNodeArray } from './node-ops'\nimport type { BaseProps, FictNode } from './types'\n\ninterface ErrorBoundaryProps extends BaseProps {\n fallback: FictNode | ((err: unknown, reset?: () => void) => FictNode)\n onError?: (err: unknown) => void\n resetKeys?: unknown | (() => unknown)\n}\n\nexport function ErrorBoundary(props: ErrorBoundaryProps): FictNode {\n const hostRoot = getCurrentRoot()\n const markerOwnerDocument = hostRoot?.ownerDocument ?? document\n const fragment = markerOwnerDocument.createDocumentFragment()\n const marker = markerOwnerDocument.createComment('fict:error-boundary')\n fragment.appendChild(marker)\n\n let cleanup: (() => void) | undefined\n let activeNodes: Node[] = []\n let renderingFallback = false\n\n let reset = () => {}\n const toView = (err: unknown | null): FictNode | null => {\n if (err != null) {\n return typeof props.fallback === 'function'\n ? (props.fallback as (e: unknown, reset?: () => void) => FictNode)(err, reset)\n : props.fallback\n }\n return props.children ?? null\n }\n\n const renderValue = (value: FictNode | null) => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n if (activeNodes.length) {\n removeNodes(activeNodes)\n activeNodes = []\n }\n\n if (value == null || value === false) {\n return\n }\n\n const root = createRootContext(hostRoot)\n const prev = pushRoot(root)\n let nodes: Node[] = []\n try {\n const output = createElement(value)\n nodes = toNodeArray(output, markerOwnerDocument)\n const parentNode = marker.parentNode as (ParentNode & Node) | null\n if (parentNode) {\n insertNodesBefore(parentNode, nodes, marker)\n }\n } catch (err) {\n popRoot(prev)\n destroyRoot(root)\n // Fall back immediately on render errors, avoid infinite recursion\n if (renderingFallback) {\n throw err\n }\n // nested errors. If fallback rendering also throws, we should NOT reset\n // the flag until we're sure no more recursion is happening.\n renderingFallback = true\n try {\n renderValue(toView(err))\n // Only reset if successful - if renderValue threw, we want to keep\n // renderingFallback = true to prevent infinite recursion\n renderingFallback = false\n props.onError?.(err)\n } catch (fallbackErr) {\n // Fallback rendering failed - keep renderingFallback = true\n // to prevent further attempts, then rethrow\n // If fallback fails, report both errors\n props.onError?.(err)\n throw fallbackErr\n }\n return\n }\n popRoot(prev)\n flushOnMount(root)\n\n cleanup = () => {\n destroyRoot(root)\n removeNodes(nodes)\n }\n activeNodes = nodes\n }\n\n reset = () => {\n renderingFallback = false\n renderValue(toView(null))\n }\n\n renderValue(props.children ?? null)\n\n registerErrorHandler(err => {\n renderValue(toView(err))\n props.onError?.(err)\n return true\n })\n\n if (props.resetKeys !== undefined) {\n const isGetter =\n typeof props.resetKeys === 'function' && (props.resetKeys as () => unknown).length === 0\n const getter = isGetter ? (props.resetKeys as () => unknown) : undefined\n let prev = isGetter ? getter!() : props.resetKeys\n createEffect(() => {\n const next = getter ? getter() : props.resetKeys\n if (prev !== next) {\n prev = next\n renderValue(toView(null))\n }\n })\n }\n\n return fragment\n}\n","import { createElement } from './dom'\nimport { createEffect } from './effect'\nimport {\n createRootContext,\n destroyRoot,\n flushOnMount,\n getCurrentRoot,\n handleError,\n pushRoot,\n popRoot,\n registerSuspenseHandler,\n} from './lifecycle'\nimport { insertNodesBefore, removeNodes, toNodeArray } from './node-ops'\nimport { createSignal } from './signal'\nimport { __fictGetSSRStreamHooks, __fictPopSSRBoundary, __fictPushSSRBoundary } from './ssr-stream'\nimport type { BaseProps, FictNode, SuspenseToken } from './types'\n\nexport interface SuspenseProps extends BaseProps {\n fallback: FictNode | ((err?: unknown) => FictNode)\n onResolve?: () => void\n onReject?: (err: unknown) => void\n resetKeys?: unknown | (() => unknown)\n}\n\nexport interface SuspenseHandle {\n token: SuspenseToken\n resolve: () => void\n reject: (err: unknown) => void\n}\n\nexport function createSuspenseToken(): SuspenseHandle {\n let resolve!: () => void\n let reject!: (err: unknown) => void\n const promise = new Promise<void>((res, rej) => {\n resolve = res\n reject = rej\n })\n return {\n token: {\n then: promise.then.bind(promise),\n },\n resolve,\n reject,\n }\n}\n\nconst isThenable = (value: unknown): value is PromiseLike<unknown> =>\n typeof value === 'object' &&\n value !== null &&\n typeof (value as PromiseLike<unknown>).then === 'function'\n\nexport function Suspense(props: SuspenseProps): FictNode {\n const streamHooks = __fictGetSSRStreamHooks()\n const pending = createSignal(0)\n let resolvedOnce = false\n let epoch = 0\n const hostRoot = getCurrentRoot()\n const markerOwnerDocument = hostRoot?.ownerDocument ?? document\n\n const toFallback = (err?: unknown) =>\n typeof props.fallback === 'function'\n ? (props.fallback as (e?: unknown) => FictNode)(err)\n : props.fallback\n\n const renderView = (view: FictNode | null) => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n if (activeNodes.length) {\n removeNodes(activeNodes)\n activeNodes = []\n }\n\n if (view == null || view === false) {\n return\n }\n\n const root = createRootContext(hostRoot)\n const prev = pushRoot(root)\n let nodes: Node[] = []\n let boundaryPushed = false\n try {\n if (streamBoundaryId) {\n __fictPushSSRBoundary(streamBoundaryId)\n boundaryPushed = true\n }\n const output = createElement(view)\n nodes = toNodeArray(output, markerOwnerDocument)\n // Suspended view: child threw a suspense token and was handled upstream.\n // Avoid replacing existing fallback content; tear down this attempt.\n const suspendedAttempt =\n root.suspended ||\n (nodes.length > 0 &&\n nodes.every(node => node instanceof Comment && (node as Comment).data === 'fict:suspend'))\n if (suspendedAttempt) {\n popRoot(prev)\n destroyRoot(root)\n return\n }\n const parentNode = endMarker.parentNode as (ParentNode & Node) | null\n if (parentNode) {\n insertNodesBefore(parentNode, nodes, endMarker)\n }\n } catch (err) {\n popRoot(prev)\n destroyRoot(root)\n if (!handleError(err, { source: 'render' }, hostRoot)) {\n throw err\n }\n return\n } finally {\n if (boundaryPushed) {\n __fictPopSSRBoundary(streamBoundaryId ?? undefined)\n }\n }\n popRoot(prev)\n flushOnMount(root)\n\n cleanup = () => {\n destroyRoot(root)\n removeNodes(nodes)\n }\n activeNodes = nodes\n }\n\n const fragment = markerOwnerDocument.createDocumentFragment()\n const startMarker = markerOwnerDocument.createComment('fict:suspense-start')\n const endMarker = markerOwnerDocument.createComment('fict:suspense-end')\n fragment.appendChild(startMarker)\n fragment.appendChild(endMarker)\n let cleanup: (() => void) | undefined\n let activeNodes: Node[] = []\n let streamBoundaryId: string | null = null\n let streamPending = false\n\n if (streamHooks?.registerBoundary) {\n streamBoundaryId = streamHooks.registerBoundary(startMarker, endMarker) ?? null\n if (streamBoundaryId) {\n startMarker.data = `fict:suspense-start:${streamBoundaryId}`\n endMarker.data = `fict:suspense-end:${streamBoundaryId}`\n }\n }\n\n const onResolveMaybe = () => {\n if (!resolvedOnce) {\n resolvedOnce = true\n props.onResolve?.()\n }\n }\n\n registerSuspenseHandler(token => {\n const tokenEpoch = epoch\n if (!streamPending && streamBoundaryId && streamHooks?.boundaryPending) {\n streamPending = true\n streamHooks.boundaryPending(streamBoundaryId)\n }\n pending(pending() + 1)\n // Directly render fallback instead of using switchView to avoid\n // triggering the effect which would cause duplicate renders\n renderView(toFallback())\n\n const thenable = (token as SuspenseToken).then\n ? (token as SuspenseToken)\n : isThenable(token)\n ? token\n : null\n\n if (thenable) {\n thenable.then(\n () => {\n // This prevents stale token resolutions from affecting state after\n // a reset. The order is important: check epoch first, then update state.\n if (epoch !== tokenEpoch) {\n // Token is stale (from before a reset), ignore it completely\n return\n }\n // Use Math.max as a defensive measure - pending should never go below 0,\n // but this protects against edge cases where a token might resolve twice\n // or after the component has been reset.\n const newPending = Math.max(0, pending() - 1)\n pending(newPending)\n if (newPending === 0) {\n // Directly render children instead of using switchView\n renderView(props.children ?? null)\n if (streamPending && streamBoundaryId && streamHooks?.boundaryResolved) {\n streamPending = false\n streamHooks.boundaryResolved(streamBoundaryId)\n }\n onResolveMaybe()\n }\n },\n err => {\n // Same epoch check - ignore stale tokens\n if (epoch !== tokenEpoch) {\n return\n }\n const newPending = Math.max(0, pending() - 1)\n pending(newPending)\n let rejectionError = err\n try {\n props.onReject?.(err)\n } catch (callbackError) {\n rejectionError = callbackError\n }\n\n const handled = handleError(rejectionError, { source: 'render' }, hostRoot)\n if (!handled) {\n if (streamHooks?.onError) {\n streamHooks.onError(rejectionError, streamBoundaryId ?? undefined)\n return\n }\n throw rejectionError\n }\n if (\n newPending === 0 &&\n streamPending &&\n streamBoundaryId &&\n streamHooks?.boundaryResolved\n ) {\n streamPending = false\n streamHooks.boundaryResolved(streamBoundaryId)\n }\n },\n )\n return true\n }\n\n return false\n })\n\n // Initial render - render children directly\n // Note: This will be called synchronously during component creation.\n // If children suspend, the handler above will be called and switch to fallback.\n renderView(props.children ?? null)\n\n if (props.resetKeys !== undefined) {\n const isGetter =\n typeof props.resetKeys === 'function' && (props.resetKeys as () => unknown).length === 0\n const getter = isGetter ? (props.resetKeys as () => unknown) : undefined\n let prev = isGetter ? getter!() : props.resetKeys\n createEffect(() => {\n const next = getter ? getter() : props.resetKeys\n if (prev !== next) {\n prev = next\n epoch++\n pending(0)\n // Directly render children instead of using switchView\n renderView(props.children ?? null)\n if (streamPending && streamBoundaryId && streamHooks?.boundaryResolved) {\n streamPending = false\n streamHooks.boundaryResolved(streamBoundaryId)\n }\n }\n })\n }\n\n return fragment\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,SAAS,YAA2D;AACzE,SAAO,EAAE,SAAS,KAAK;AACzB;;;ACJO,SAAS,cAAc,OAAqC;AACjE,QAAM,WAAW,eAAe;AAChC,QAAM,sBAAsB,UAAU,iBAAiB;AACvD,QAAM,WAAW,oBAAoB,uBAAuB;AAC5D,QAAM,SAAS,oBAAoB,cAAc,qBAAqB;AACtE,WAAS,YAAY,MAAM;AAE3B,MAAI;AACJ,MAAI,cAAsB,CAAC;AAC3B,MAAI,oBAAoB;AAExB,MAAI,QAAQ,MAAM;AAAA,EAAC;AACnB,QAAM,SAAS,CAAC,QAAyC;AACvD,QAAI,OAAO,MAAM;AACf,aAAO,OAAO,MAAM,aAAa,aAC5B,MAAM,SAA0D,KAAK,KAAK,IAC3E,MAAM;AAAA,IACZ;AACA,WAAO,MAAM,YAAY;AAAA,EAC3B;AAEA,QAAM,cAAc,CAAC,UAA2B;AAC9C,QAAI,SAAS;AACX,cAAQ;AACR,gBAAU;AAAA,IACZ;AACA,QAAI,YAAY,QAAQ;AACtB,kBAAY,WAAW;AACvB,oBAAc,CAAC;AAAA,IACjB;AAEA,QAAI,SAAS,QAAQ,UAAU,OAAO;AACpC;AAAA,IACF;AAEA,UAAM,OAAO,kBAAkB,QAAQ;AACvC,UAAM,OAAO,SAAS,IAAI;AAC1B,QAAI,QAAgB,CAAC;AACrB,QAAI;AACF,YAAM,SAAS,cAAc,KAAK;AAClC,cAAQ,YAAY,QAAQ,mBAAmB;AAC/C,YAAM,aAAa,OAAO;AAC1B,UAAI,YAAY;AACd,0BAAkB,YAAY,OAAO,MAAM;AAAA,MAC7C;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,IAAI;AACZ,kBAAY,IAAI;AAEhB,UAAI,mBAAmB;AACrB,cAAM;AAAA,MACR;AAGA,0BAAoB;AACpB,UAAI;AACF,oBAAY,OAAO,GAAG,CAAC;AAGvB,4BAAoB;AACpB,cAAM,UAAU,GAAG;AAAA,MACrB,SAAS,aAAa;AAIpB,cAAM,UAAU,GAAG;AACnB,cAAM;AAAA,MACR;AACA;AAAA,IACF;AACA,YAAQ,IAAI;AACZ,iBAAa,IAAI;AAEjB,cAAU,MAAM;AACd,kBAAY,IAAI;AAChB,kBAAY,KAAK;AAAA,IACnB;AACA,kBAAc;AAAA,EAChB;AAEA,UAAQ,MAAM;AACZ,wBAAoB;AACpB,gBAAY,OAAO,IAAI,CAAC;AAAA,EAC1B;AAEA,cAAY,MAAM,YAAY,IAAI;AAElC,uBAAqB,SAAO;AAC1B,gBAAY,OAAO,GAAG,CAAC;AACvB,UAAM,UAAU,GAAG;AACnB,WAAO;AAAA,EACT,CAAC;AAED,MAAI,MAAM,cAAc,QAAW;AACjC,UAAM,WACJ,OAAO,MAAM,cAAc,cAAe,MAAM,UAA4B,WAAW;AACzF,UAAM,SAAS,WAAY,MAAM,YAA8B;AAC/D,QAAI,OAAO,WAAW,OAAQ,IAAI,MAAM;AACxC,iBAAa,MAAM;AACjB,YAAM,OAAO,SAAS,OAAO,IAAI,MAAM;AACvC,UAAI,SAAS,MAAM;AACjB,eAAO;AACP,oBAAY,OAAO,IAAI,CAAC;AAAA,MAC1B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;AClGO,SAAS,sBAAsC;AACpD,MAAI;AACJ,MAAI;AACJ,QAAM,UAAU,IAAI,QAAc,CAAC,KAAK,QAAQ;AAC9C,cAAU;AACV,aAAS;AAAA,EACX,CAAC;AACD,SAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM,QAAQ,KAAK,KAAK,OAAO;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAM,aAAa,CAAC,UAClB,OAAO,UAAU,YACjB,UAAU,QACV,OAAQ,MAA+B,SAAS;AAE3C,SAAS,SAAS,OAAgC;AACvD,QAAM,cAAc,wBAAwB;AAC5C,QAAM,UAAU,OAAa,CAAC;AAC9B,MAAI,eAAe;AACnB,MAAI,QAAQ;AACZ,QAAM,WAAW,eAAe;AAChC,QAAM,sBAAsB,UAAU,iBAAiB;AAEvD,QAAM,aAAa,CAAC,QAClB,OAAO,MAAM,aAAa,aACrB,MAAM,SAAuC,GAAG,IACjD,MAAM;AAEZ,QAAM,aAAa,CAAC,SAA0B;AAC5C,QAAI,SAAS;AACX,cAAQ;AACR,gBAAU;AAAA,IACZ;AACA,QAAI,YAAY,QAAQ;AACtB,kBAAY,WAAW;AACvB,oBAAc,CAAC;AAAA,IACjB;AAEA,QAAI,QAAQ,QAAQ,SAAS,OAAO;AAClC;AAAA,IACF;AAEA,UAAM,OAAO,kBAAkB,QAAQ;AACvC,UAAM,OAAO,SAAS,IAAI;AAC1B,QAAI,QAAgB,CAAC;AACrB,QAAI,iBAAiB;AACrB,QAAI;AACF,UAAI,kBAAkB;AACpB,8BAAsB,gBAAgB;AACtC,yBAAiB;AAAA,MACnB;AACA,YAAM,SAAS,cAAc,IAAI;AACjC,cAAQ,YAAY,QAAQ,mBAAmB;AAG/C,YAAM,mBACJ,KAAK,aACJ,MAAM,SAAS,KACd,MAAM,MAAM,UAAQ,gBAAgB,WAAY,KAAiB,SAAS,cAAc;AAC5F,UAAI,kBAAkB;AACpB,gBAAQ,IAAI;AACZ,oBAAY,IAAI;AAChB;AAAA,MACF;AACA,YAAM,aAAa,UAAU;AAC7B,UAAI,YAAY;AACd,0BAAkB,YAAY,OAAO,SAAS;AAAA,MAChD;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,IAAI;AACZ,kBAAY,IAAI;AAChB,UAAI,CAAC,YAAY,KAAK,EAAE,QAAQ,SAAS,GAAG,QAAQ,GAAG;AACrD,cAAM;AAAA,MACR;AACA;AAAA,IACF,UAAE;AACA,UAAI,gBAAgB;AAClB,6BAAqB,oBAAoB,MAAS;AAAA,MACpD;AAAA,IACF;AACA,YAAQ,IAAI;AACZ,iBAAa,IAAI;AAEjB,cAAU,MAAM;AACd,kBAAY,IAAI;AAChB,kBAAY,KAAK;AAAA,IACnB;AACA,kBAAc;AAAA,EAChB;AAEA,QAAM,WAAW,oBAAoB,uBAAuB;AAC5D,QAAM,cAAc,oBAAoB,cAAc,qBAAqB;AAC3E,QAAM,YAAY,oBAAoB,cAAc,mBAAmB;AACvE,WAAS,YAAY,WAAW;AAChC,WAAS,YAAY,SAAS;AAC9B,MAAI;AACJ,MAAI,cAAsB,CAAC;AAC3B,MAAI,mBAAkC;AACtC,MAAI,gBAAgB;AAEpB,MAAI,aAAa,kBAAkB;AACjC,uBAAmB,YAAY,iBAAiB,aAAa,SAAS,KAAK;AAC3E,QAAI,kBAAkB;AACpB,kBAAY,OAAO,uBAAuB,gBAAgB;AAC1D,gBAAU,OAAO,qBAAqB,gBAAgB;AAAA,IACxD;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM;AAC3B,QAAI,CAAC,cAAc;AACjB,qBAAe;AACf,YAAM,YAAY;AAAA,IACpB;AAAA,EACF;AAEA,0BAAwB,WAAS;AAC/B,UAAM,aAAa;AACnB,QAAI,CAAC,iBAAiB,oBAAoB,aAAa,iBAAiB;AACtE,sBAAgB;AAChB,kBAAY,gBAAgB,gBAAgB;AAAA,IAC9C;AACA,YAAQ,QAAQ,IAAI,CAAC;AAGrB,eAAW,WAAW,CAAC;AAEvB,UAAM,WAAY,MAAwB,OACrC,QACD,WAAW,KAAK,IACd,QACA;AAEN,QAAI,UAAU;AACZ,eAAS;AAAA,QACP,MAAM;AAGJ,cAAI,UAAU,YAAY;AAExB;AAAA,UACF;AAIA,gBAAM,aAAa,KAAK,IAAI,GAAG,QAAQ,IAAI,CAAC;AAC5C,kBAAQ,UAAU;AAClB,cAAI,eAAe,GAAG;AAEpB,uBAAW,MAAM,YAAY,IAAI;AACjC,gBAAI,iBAAiB,oBAAoB,aAAa,kBAAkB;AACtE,8BAAgB;AAChB,0BAAY,iBAAiB,gBAAgB;AAAA,YAC/C;AACA,2BAAe;AAAA,UACjB;AAAA,QACF;AAAA,QACA,SAAO;AAEL,cAAI,UAAU,YAAY;AACxB;AAAA,UACF;AACA,gBAAM,aAAa,KAAK,IAAI,GAAG,QAAQ,IAAI,CAAC;AAC5C,kBAAQ,UAAU;AAClB,cAAI,iBAAiB;AACrB,cAAI;AACF,kBAAM,WAAW,GAAG;AAAA,UACtB,SAAS,eAAe;AACtB,6BAAiB;AAAA,UACnB;AAEA,gBAAM,UAAU,YAAY,gBAAgB,EAAE,QAAQ,SAAS,GAAG,QAAQ;AAC1E,cAAI,CAAC,SAAS;AACZ,gBAAI,aAAa,SAAS;AACxB,0BAAY,QAAQ,gBAAgB,oBAAoB,MAAS;AACjE;AAAA,YACF;AACA,kBAAM;AAAA,UACR;AACA,cACE,eAAe,KACf,iBACA,oBACA,aAAa,kBACb;AACA,4BAAgB;AAChB,wBAAY,iBAAiB,gBAAgB;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,CAAC;AAKD,aAAW,MAAM,YAAY,IAAI;AAEjC,MAAI,MAAM,cAAc,QAAW;AACjC,UAAM,WACJ,OAAO,MAAM,cAAc,cAAe,MAAM,UAA4B,WAAW;AACzF,UAAM,SAAS,WAAY,MAAM,YAA8B;AAC/D,QAAI,OAAO,WAAW,OAAQ,IAAI,MAAM;AACxC,iBAAa,MAAM;AACjB,YAAM,OAAO,SAAS,OAAO,IAAI,MAAM;AACvC,UAAI,SAAS,MAAM;AACjB,eAAO;AACP;AACA,gBAAQ,CAAC;AAET,mBAAW,MAAM,YAAY,IAAI;AACjC,YAAI,iBAAiB,oBAAoB,aAAa,kBAAkB;AACtE,0BAAgB;AAChB,sBAAY,iBAAiB,gBAAgB;AAAA,QAC/C;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;","names":[]}
|
package/dist/internal-list.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunk44EQF3ARcjs = require('./chunk-44EQF3AR.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
7
|
-
require('./chunk-
|
|
6
|
+
var _chunk4QGEN5SJcjs = require('./chunk-4QGEN5SJ.cjs');
|
|
7
|
+
require('./chunk-QNMYVXRL.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
exports.createKeyedList =
|
|
11
|
+
exports.createKeyedList = _chunk44EQF3ARcjs.createKeyedList; exports.toNodeArray = _chunk4QGEN5SJcjs.toNodeArray;
|
|
12
12
|
//# sourceMappingURL=internal-list.cjs.map
|
package/dist/internal-list.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { K as KeyedListBinding, c as createKeyedList, t as toNodeArray } from './list-
|
|
1
|
+
export { K as KeyedListBinding, c as createKeyedList, t as toNodeArray } from './list-Bi8dDF8Q.cjs';
|
|
2
2
|
import './signal-Z4KkDk9h.cjs';
|
package/dist/internal-list.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { K as KeyedListBinding, c as createKeyedList, t as toNodeArray } from './list-
|
|
1
|
+
export { K as KeyedListBinding, c as createKeyedList, t as toNodeArray } from './list-BKM6YOPq.js';
|
|
2
2
|
import './signal-Z4KkDk9h.js';
|
package/dist/internal-list.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createKeyedList
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-S63VBIWN.js";
|
|
4
4
|
import {
|
|
5
5
|
toNodeArray
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-WIHNVN6L.js";
|
|
7
|
+
import "./chunk-DIK33H5U.js";
|
|
8
8
|
export {
|
|
9
9
|
createKeyedList,
|
|
10
10
|
toNodeArray
|
package/dist/internal.cjs
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunk44EQF3ARcjs = require('./chunk-44EQF3AR.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkC5IE4WUGcjs = require('./chunk-C5IE4WUG.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
@@ -51,7 +51,7 @@ var _chunkV7BC64W2cjs = require('./chunk-V7BC64W2.cjs');
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
|
|
54
|
-
var
|
|
54
|
+
var _chunk4QGEN5SJcjs = require('./chunk-4QGEN5SJ.cjs');
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
|
|
@@ -109,7 +109,7 @@ var _chunkI4GKKAAYcjs = require('./chunk-I4GKKAAY.cjs');
|
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
|
|
112
|
-
var
|
|
112
|
+
var _chunkQNMYVXRLcjs = require('./chunk-QNMYVXRL.cjs');
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
|
|
@@ -215,5 +215,5 @@ var _chunkEQ5E4WOVcjs = require('./chunk-EQ5E4WOV.cjs');
|
|
|
215
215
|
|
|
216
216
|
|
|
217
217
|
|
|
218
|
-
exports.Aliases =
|
|
218
|
+
exports.Aliases = _chunkQNMYVXRLcjs.Aliases; exports.BooleanAttributes = _chunkQNMYVXRLcjs.BooleanAttributes; exports.ChildProperties = _chunkQNMYVXRLcjs.ChildProperties; exports.DelegatedEvents = _chunkQNMYVXRLcjs.DelegatedEvents; exports.FICT_SSR_SNAPSHOT_SCHEMA_VERSION = _chunkQNMYVXRLcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION; exports.Fragment = _chunk4QGEN5SJcjs.Fragment; exports.Properties = _chunkQNMYVXRLcjs.Properties; exports.SVGElements = _chunkQNMYVXRLcjs.SVGElements; exports.SVGNamespace = _chunkQNMYVXRLcjs.SVGNamespace; exports.UnitlessStyles = _chunkQNMYVXRLcjs.UnitlessStyles; exports.__fictDisableResumable = _chunkQNMYVXRLcjs.__fictDisableResumable; exports.__fictDisableSSR = _chunkQNMYVXRLcjs.__fictDisableSSR; exports.__fictEnableResumable = _chunkQNMYVXRLcjs.__fictEnableResumable; exports.__fictEnableSSR = _chunkQNMYVXRLcjs.__fictEnableSSR; exports.__fictEnsureScope = _chunkQNMYVXRLcjs.__fictEnsureScope; exports.__fictEnterHydration = _chunkQNMYVXRLcjs.__fictEnterHydration; exports.__fictExitHydration = _chunkQNMYVXRLcjs.__fictExitHydration; exports.__fictGetResume = _chunkQNMYVXRLcjs.__fictGetResume; exports.__fictGetSSRScope = _chunkQNMYVXRLcjs.__fictGetSSRScope; exports.__fictGetSSRStreamHooks = _chunkQNMYVXRLcjs.__fictGetSSRStreamHooks; exports.__fictGetScopeProps = _chunkQNMYVXRLcjs.__fictGetScopeProps; exports.__fictGetScopeRegistry = _chunkQNMYVXRLcjs.__fictGetScopeRegistry; exports.__fictGetScopesForBoundary = _chunkQNMYVXRLcjs.__fictGetScopesForBoundary; exports.__fictIsHydrating = _chunkQNMYVXRLcjs.__fictIsHydrating; exports.__fictIsResumable = _chunkQNMYVXRLcjs.__fictIsResumable; exports.__fictIsSSR = _chunkQNMYVXRLcjs.__fictIsSSR; exports.__fictMergeSSRState = _chunkQNMYVXRLcjs.__fictMergeSSRState; exports.__fictPopContext = _chunkQNMYVXRLcjs.__fictPopContext; exports.__fictPrepareContext = _chunkQNMYVXRLcjs.__fictPrepareContext; exports.__fictProp = _chunk4QGEN5SJcjs.__fictProp; exports.__fictPropsRest = _chunk4QGEN5SJcjs.__fictPropsRest; exports.__fictPushContext = _chunkQNMYVXRLcjs.__fictPushContext; exports.__fictQrl = _chunkQNMYVXRLcjs.__fictQrl; exports.__fictRegisterResume = _chunkQNMYVXRLcjs.__fictRegisterResume; exports.__fictRegisterScope = _chunkQNMYVXRLcjs.__fictRegisterScope; exports.__fictRender = _chunkQNMYVXRLcjs.__fictRender; exports.__fictResetContext = _chunkQNMYVXRLcjs.__fictResetContext; exports.__fictSerializeSSRState = _chunkQNMYVXRLcjs.__fictSerializeSSRState; exports.__fictSerializeSSRStateForScopes = _chunkQNMYVXRLcjs.__fictSerializeSSRStateForScopes; exports.__fictSetSSRState = _chunkQNMYVXRLcjs.__fictSetSSRState; exports.__fictSetSSRStreamHooks = _chunkQNMYVXRLcjs.__fictSetSSRStreamHooks; exports.__fictUseContext = _chunkQNMYVXRLcjs.__fictUseContext; exports.__fictUseEffect = _chunkQNMYVXRLcjs.__fictUseEffect; exports.__fictUseLexicalScope = _chunkQNMYVXRLcjs.__fictUseLexicalScope; exports.__fictUseMemo = _chunkQNMYVXRLcjs.__fictUseMemo; exports.__fictUseSignal = _chunkQNMYVXRLcjs.__fictUseSignal; exports.__resetReactiveState = _chunkQNMYVXRLcjs.__resetReactiveState; exports.addEventListener = _chunk4QGEN5SJcjs.addEventListener; exports.assign = _chunk4QGEN5SJcjs.assign; exports.bindAttribute = _chunk4QGEN5SJcjs.bindAttribute; exports.bindClass = _chunk4QGEN5SJcjs.bindClass; exports.bindEvent = _chunk4QGEN5SJcjs.bindEvent; exports.bindProperty = _chunk4QGEN5SJcjs.bindProperty; exports.bindRef = _chunk4QGEN5SJcjs.bindRef; exports.bindStyle = _chunk4QGEN5SJcjs.bindStyle; exports.bindText = _chunk4QGEN5SJcjs.bindText; exports.callEventHandler = _chunk4QGEN5SJcjs.callEventHandler; exports.classList = _chunk4QGEN5SJcjs.classList; exports.clearDelegatedEvents = _chunk4QGEN5SJcjs.clearDelegatedEvents; exports.createConditional = _chunk4QGEN5SJcjs.createConditional; exports.createEffect = _chunkQNMYVXRLcjs.createEffect; exports.createElement = _chunk4QGEN5SJcjs.createElement; exports.createKeyedList = _chunk44EQF3ARcjs.createKeyedList; exports.createMemo = _chunkQNMYVXRLcjs.createMemo; exports.createPortal = _chunk4QGEN5SJcjs.createPortal; exports.createPropsProxy = _chunk4QGEN5SJcjs.createPropsProxy; exports.createRenderEffect = _chunkQNMYVXRLcjs.createRenderEffect; exports.createSelector = _chunkQNMYVXRLcjs.createSelector; exports.createSignal = _chunkQNMYVXRLcjs.signal; exports.createStore = _chunkQNMYVXRLcjs.createStore; exports.delegateEvents = _chunk4QGEN5SJcjs.delegateEvents; exports.deserializeValue = _chunkQNMYVXRLcjs.deserializeValue; exports.getPropAlias = _chunkQNMYVXRLcjs.getPropAlias; exports.getSlotEnd = _chunk4QGEN5SJcjs.getSlotEnd; exports.hydrateComponent = _chunk4QGEN5SJcjs.hydrateComponent; exports.insert = _chunk4QGEN5SJcjs.insert; exports.insertBetween = _chunk4QGEN5SJcjs.insertBetween; exports.insertNodesBefore = _chunk4QGEN5SJcjs.insertNodesBefore; exports.isNodeBetweenMarkers = _chunk44EQF3ARcjs.isNodeBetweenMarkers; exports.isReactive = _chunk4QGEN5SJcjs.isReactive; exports.isStoreProxy = _chunkQNMYVXRLcjs.isStoreProxy; exports.keyed = _chunk4QGEN5SJcjs.keyed; exports.mergeProps = _chunk4QGEN5SJcjs.mergeProps; exports.moveNodesBefore = _chunk44EQF3ARcjs.moveNodesBefore; exports.nonReactive = _chunk4QGEN5SJcjs.nonReactive; exports.onDestroy = _chunkQNMYVXRLcjs.onDestroy; exports.prop = _chunk4QGEN5SJcjs.prop; exports.reactive = _chunk4QGEN5SJcjs.reactive; exports.reconcileArrays = _chunk44EQF3ARcjs.reconcileArrays; exports.removeNodes = _chunk4QGEN5SJcjs.removeNodes; exports.render = _chunk4QGEN5SJcjs.render; exports.resolvePath = _chunk4QGEN5SJcjs.resolvePath; exports.runInScope = _chunkC5IE4WUGcjs.runInScope; exports.serializeValue = _chunkQNMYVXRLcjs.serializeValue; exports.setAttr = _chunk4QGEN5SJcjs.setAttr; exports.setClass = _chunk4QGEN5SJcjs.setClass; exports.setProp = _chunk4QGEN5SJcjs.setProp; exports.setStyle = _chunk4QGEN5SJcjs.setStyle; exports.setText = _chunk4QGEN5SJcjs.setText; exports.spread = _chunk4QGEN5SJcjs.spread; exports.template = _chunk4QGEN5SJcjs.template; exports.toNodeArray = _chunk4QGEN5SJcjs.toNodeArray; exports.unwrap = _chunk4QGEN5SJcjs.unwrap; exports.unwrapStore = _chunkQNMYVXRLcjs.unwrapStore;
|
|
219
219
|
//# sourceMappingURL=internal.cjs.map
|
package/dist/internal.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { _ as __resetReactiveState, c as createSelector, s as createSignal } from './signal-Z4KkDk9h.cjs';
|
|
2
|
-
export { F as Fragment, _ as __fictProp, a as __fictPropsRest, d as createElement, c as createMemo, b as createPropsProxy, h as hydrateComponent, k as keyed, m as mergeProps, p as prop, r as render, t as template } from './props
|
|
3
|
-
export { Q as AttributeSetter, O as BindingHandle, P as CreateElementFn, M as MaybeReactive, L as addEventListener, H as assign, l as bindAttribute, o as bindClass, w as bindEvent, y as bindProperty, z as bindRef, m as bindStyle, k as bindText, x as callEventHandler, I as classList, K as clearDelegatedEvents, D as createConditional, j as createEffect, E as createPortal, h as createRenderEffect, J as delegateEvents, A as insert, C as insertBetween, i as isReactive, n as nonReactive, N as onDestroy, r as reactive, p as setAttr, v as setClass, q as setProp, t as setStyle, s as setText, G as spread, u as unwrap } from './binding-
|
|
2
|
+
export { F as Fragment, _ as __fictProp, a as __fictPropsRest, d as createElement, c as createMemo, b as createPropsProxy, h as hydrateComponent, k as keyed, m as mergeProps, p as prop, r as render, t as template } from './props-9chMyBGb.cjs';
|
|
3
|
+
export { Q as AttributeSetter, O as BindingHandle, P as CreateElementFn, M as MaybeReactive, L as addEventListener, H as assign, l as bindAttribute, o as bindClass, w as bindEvent, y as bindProperty, z as bindRef, m as bindStyle, k as bindText, x as callEventHandler, I as classList, K as clearDelegatedEvents, D as createConditional, j as createEffect, E as createPortal, h as createRenderEffect, J as delegateEvents, A as insert, C as insertBetween, i as isReactive, n as nonReactive, N as onDestroy, r as reactive, p as setAttr, v as setClass, q as setProp, t as setStyle, s as setText, G as spread, u as unwrap } from './binding-FRyTeLDn.cjs';
|
|
4
4
|
export { F as FICT_SSR_SNAPSHOT_SCHEMA_VERSION, n as __fictDisableResumable, k as __fictDisableSSR, m as __fictEnableResumable, j as __fictEnableSSR, A as __fictEnsureScope, p as __fictEnterHydration, q as __fictExitHydration, E as __fictGetResume, z as __fictGetSSRScope, B as __fictGetScopeProps, t as __fictGetScopeRegistry, u as __fictGetScopesForBoundary, r as __fictIsHydrating, o as __fictIsResumable, l as __fictIsSSR, y as __fictMergeSSRState, c as __fictPopContext, i as __fictPrepareContext, b as __fictPushContext, C as __fictQrl, D as __fictRegisterResume, s as __fictRegisterScope, g as __fictRender, h as __fictResetContext, v as __fictSerializeSSRState, w as __fictSerializeSSRStateForScopes, x as __fictSetSSRState, a as __fictUseContext, f as __fictUseEffect, _ as __fictUseLexicalScope, e as __fictUseMemo, d as __fictUseSignal, H as deserializeValue, G as serializeValue } from './resume-DPZxmA95.cjs';
|
|
5
|
-
export { K as KeyedListBinding, c as createKeyedList, g as getSlotEnd, i as insertNodesBefore, b as isNodeBetweenMarkers, m as moveNodesBefore, a as removeNodes, r as resolvePath, t as toNodeArray } from './list-
|
|
6
|
-
export { r as runInScope } from './scope-
|
|
5
|
+
export { K as KeyedListBinding, c as createKeyedList, g as getSlotEnd, i as insertNodesBefore, b as isNodeBetweenMarkers, m as moveNodesBefore, a as removeNodes, r as resolvePath, t as toNodeArray } from './list-Bi8dDF8Q.cjs';
|
|
6
|
+
export { r as runInScope } from './scope-Bn3sxem5.cjs';
|
|
7
7
|
|
|
8
8
|
type Store<T> = T;
|
|
9
9
|
/**
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { _ as __resetReactiveState, c as createSelector, s as createSignal } from './signal-Z4KkDk9h.js';
|
|
2
|
-
export { F as Fragment, _ as __fictProp, a as __fictPropsRest, d as createElement, c as createMemo, b as createPropsProxy, h as hydrateComponent, k as keyed, m as mergeProps, p as prop, r as render, t as template } from './props-
|
|
3
|
-
export { Q as AttributeSetter, O as BindingHandle, P as CreateElementFn, M as MaybeReactive, L as addEventListener, H as assign, l as bindAttribute, o as bindClass, w as bindEvent, y as bindProperty, z as bindRef, m as bindStyle, k as bindText, x as callEventHandler, I as classList, K as clearDelegatedEvents, D as createConditional, j as createEffect, E as createPortal, h as createRenderEffect, J as delegateEvents, A as insert, C as insertBetween, i as isReactive, n as nonReactive, N as onDestroy, r as reactive, p as setAttr, v as setClass, q as setProp, t as setStyle, s as setText, G as spread, u as unwrap } from './binding-
|
|
2
|
+
export { F as Fragment, _ as __fictProp, a as __fictPropsRest, d as createElement, c as createMemo, b as createPropsProxy, h as hydrateComponent, k as keyed, m as mergeProps, p as prop, r as render, t as template } from './props-D1nj2p_3.js';
|
|
3
|
+
export { Q as AttributeSetter, O as BindingHandle, P as CreateElementFn, M as MaybeReactive, L as addEventListener, H as assign, l as bindAttribute, o as bindClass, w as bindEvent, y as bindProperty, z as bindRef, m as bindStyle, k as bindText, x as callEventHandler, I as classList, K as clearDelegatedEvents, D as createConditional, j as createEffect, E as createPortal, h as createRenderEffect, J as delegateEvents, A as insert, C as insertBetween, i as isReactive, n as nonReactive, N as onDestroy, r as reactive, p as setAttr, v as setClass, q as setProp, t as setStyle, s as setText, G as spread, u as unwrap } from './binding-DcnhUSQK.js';
|
|
4
4
|
export { F as FICT_SSR_SNAPSHOT_SCHEMA_VERSION, n as __fictDisableResumable, k as __fictDisableSSR, m as __fictEnableResumable, j as __fictEnableSSR, A as __fictEnsureScope, p as __fictEnterHydration, q as __fictExitHydration, E as __fictGetResume, z as __fictGetSSRScope, B as __fictGetScopeProps, t as __fictGetScopeRegistry, u as __fictGetScopesForBoundary, r as __fictIsHydrating, o as __fictIsResumable, l as __fictIsSSR, y as __fictMergeSSRState, c as __fictPopContext, i as __fictPrepareContext, b as __fictPushContext, C as __fictQrl, D as __fictRegisterResume, s as __fictRegisterScope, g as __fictRender, h as __fictResetContext, v as __fictSerializeSSRState, w as __fictSerializeSSRStateForScopes, x as __fictSetSSRState, a as __fictUseContext, f as __fictUseEffect, _ as __fictUseLexicalScope, e as __fictUseMemo, d as __fictUseSignal, H as deserializeValue, G as serializeValue } from './resume-C5IKAIdh.js';
|
|
5
|
-
export { K as KeyedListBinding, c as createKeyedList, g as getSlotEnd, i as insertNodesBefore, b as isNodeBetweenMarkers, m as moveNodesBefore, a as removeNodes, r as resolvePath, t as toNodeArray } from './list-
|
|
6
|
-
export { r as runInScope } from './scope-
|
|
5
|
+
export { K as KeyedListBinding, c as createKeyedList, g as getSlotEnd, i as insertNodesBefore, b as isNodeBetweenMarkers, m as moveNodesBefore, a as removeNodes, r as resolvePath, t as toNodeArray } from './list-BKM6YOPq.js';
|
|
6
|
+
export { r as runInScope } from './scope-BSkhJr0a.js';
|
|
7
7
|
|
|
8
8
|
type Store<T> = T;
|
|
9
9
|
/**
|
package/dist/internal.js
CHANGED
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
isNodeBetweenMarkers,
|
|
4
4
|
moveNodesBefore,
|
|
5
5
|
reconcileArrays
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-S63VBIWN.js";
|
|
7
7
|
import {
|
|
8
8
|
runInScope
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-2UR2UWE2.js";
|
|
10
10
|
import {
|
|
11
11
|
Fragment,
|
|
12
12
|
__fictProp,
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
template,
|
|
52
52
|
toNodeArray,
|
|
53
53
|
unwrap
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-WIHNVN6L.js";
|
|
55
55
|
import {
|
|
56
56
|
Aliases,
|
|
57
57
|
BooleanAttributes,
|
|
@@ -109,7 +109,7 @@ import {
|
|
|
109
109
|
serializeValue,
|
|
110
110
|
signal,
|
|
111
111
|
unwrapStore
|
|
112
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-DIK33H5U.js";
|
|
113
113
|
export {
|
|
114
114
|
Aliases,
|
|
115
115
|
BooleanAttributes,
|
|
@@ -8,7 +8,7 @@ import { S as SignalAccessor } from './signal-Z4KkDk9h.js';
|
|
|
8
8
|
* Convert a value to a flat array of DOM nodes.
|
|
9
9
|
* Defensively handles proxies and non-DOM values.
|
|
10
10
|
*/
|
|
11
|
-
declare function toNodeArray(node: Node | Node[] | unknown): Node[];
|
|
11
|
+
declare function toNodeArray(node: Node | Node[] | unknown, ownerDocument?: Document): Node[];
|
|
12
12
|
/**
|
|
13
13
|
* Insert nodes before an anchor node, preserving order.
|
|
14
14
|
* Uses DocumentFragment for batch insertion when inserting multiple nodes.
|
|
@@ -8,7 +8,7 @@ import { S as SignalAccessor } from './signal-Z4KkDk9h.cjs';
|
|
|
8
8
|
* Convert a value to a flat array of DOM nodes.
|
|
9
9
|
* Defensively handles proxies and non-DOM values.
|
|
10
10
|
*/
|
|
11
|
-
declare function toNodeArray(node: Node | Node[] | unknown): Node[];
|
|
11
|
+
declare function toNodeArray(node: Node | Node[] | unknown, ownerDocument?: Document): Node[];
|
|
12
12
|
/**
|
|
13
13
|
* Insert nodes before an anchor node, preserving order.
|
|
14
14
|
* Uses DocumentFragment for batch insertion when inserting multiple nodes.
|
package/dist/loader.cjs
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunkQNMYVXRLcjs = require('./chunk-QNMYVXRL.cjs');
|
|
12
12
|
|
|
13
13
|
// src/loader.ts
|
|
14
14
|
function resolveModuleUrl(url) {
|
|
@@ -54,7 +54,7 @@ function installResumableLoader(options = {}) {
|
|
|
54
54
|
prefetchedUrls.clear();
|
|
55
55
|
processedSnapshots.clear();
|
|
56
56
|
emittedIssueKeys.clear();
|
|
57
|
-
|
|
57
|
+
_chunkQNMYVXRLcjs.__fictSetSSRState.call(void 0, null);
|
|
58
58
|
if (eventListenerCleanup) {
|
|
59
59
|
eventListenerCleanup();
|
|
60
60
|
eventListenerCleanup = null;
|
|
@@ -71,7 +71,7 @@ function installResumableLoader(options = {}) {
|
|
|
71
71
|
if (_optionalChain([snapshotEl, 'optionalAccess', _ => _.textContent])) {
|
|
72
72
|
const state = parseSnapshotText(snapshotEl.textContent, `#${scriptId}`);
|
|
73
73
|
if (state) {
|
|
74
|
-
|
|
74
|
+
_chunkQNMYVXRLcjs.__fictSetSSRState.call(void 0, state);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
const snapshotScripts = doc.querySelectorAll(
|
|
@@ -104,8 +104,8 @@ function installResumableLoader(options = {}) {
|
|
|
104
104
|
});
|
|
105
105
|
snapshotObserver.observe(_nullishCoalesce(doc.documentElement, () => ( doc)), { childList: true, subtree: true });
|
|
106
106
|
}
|
|
107
|
-
|
|
108
|
-
const events = _nullishCoalesce(options.events, () => ( Array.from(
|
|
107
|
+
_chunkQNMYVXRLcjs.__fictEnableResumable.call(void 0, );
|
|
108
|
+
const events = _nullishCoalesce(options.events, () => ( Array.from(_chunkQNMYVXRLcjs.DelegatedEvents)));
|
|
109
109
|
for (const eventName of events) {
|
|
110
110
|
doc.addEventListener(eventName, handleResumableEvent, true);
|
|
111
111
|
}
|
|
@@ -129,7 +129,7 @@ function parseSnapshotScript(script) {
|
|
|
129
129
|
const source = script.id ? `#${script.id}` : "<script[data-fict-snapshot]>";
|
|
130
130
|
const state = parseSnapshotText(text, source);
|
|
131
131
|
if (state) {
|
|
132
|
-
|
|
132
|
+
_chunkQNMYVXRLcjs.__fictMergeSSRState.call(void 0, state);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
function parseSnapshotText(text, source) {
|
|
@@ -141,7 +141,7 @@ function parseSnapshotText(text, source) {
|
|
|
141
141
|
code: "snapshot_parse_error",
|
|
142
142
|
message: "[fict/loader] Failed to parse SSR snapshot JSON.",
|
|
143
143
|
source,
|
|
144
|
-
expectedVersion:
|
|
144
|
+
expectedVersion: _chunkQNMYVXRLcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
|
|
145
145
|
});
|
|
146
146
|
return null;
|
|
147
147
|
}
|
|
@@ -153,18 +153,18 @@ function normalizeSnapshotState(value, source) {
|
|
|
153
153
|
code: "snapshot_invalid_shape",
|
|
154
154
|
message: "[fict/loader] Snapshot payload must be an object.",
|
|
155
155
|
source,
|
|
156
|
-
expectedVersion:
|
|
156
|
+
expectedVersion: _chunkQNMYVXRLcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
|
|
157
157
|
});
|
|
158
158
|
return null;
|
|
159
159
|
}
|
|
160
160
|
const rawVersion = value.v;
|
|
161
|
-
const version = rawVersion === void 0 ?
|
|
162
|
-
if (!Number.isInteger(version) || version !==
|
|
161
|
+
const version = rawVersion === void 0 ? _chunkQNMYVXRLcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION : rawVersion;
|
|
162
|
+
if (!Number.isInteger(version) || version !== _chunkQNMYVXRLcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION) {
|
|
163
163
|
const versionIssue = {
|
|
164
164
|
code: "snapshot_unsupported_version",
|
|
165
165
|
message: `[fict/loader] Snapshot schema version ${String(version)} is not supported by this runtime.`,
|
|
166
166
|
source,
|
|
167
|
-
expectedVersion:
|
|
167
|
+
expectedVersion: _chunkQNMYVXRLcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
|
|
168
168
|
};
|
|
169
169
|
if (typeof version === "number") {
|
|
170
170
|
versionIssue.actualVersion = version;
|
|
@@ -180,11 +180,11 @@ function normalizeSnapshotState(value, source) {
|
|
|
180
180
|
code: "snapshot_invalid_shape",
|
|
181
181
|
message: "[fict/loader] Snapshot payload is missing a valid `scopes` object.",
|
|
182
182
|
source,
|
|
183
|
-
expectedVersion:
|
|
183
|
+
expectedVersion: _chunkQNMYVXRLcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
|
|
184
184
|
});
|
|
185
185
|
return null;
|
|
186
186
|
}
|
|
187
|
-
return { v:
|
|
187
|
+
return { v: _chunkQNMYVXRLcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION, scopes };
|
|
188
188
|
}
|
|
189
189
|
function isRecord(value) {
|
|
190
190
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -275,16 +275,17 @@ function setupHoverPrefetch(doc, delay) {
|
|
|
275
275
|
};
|
|
276
276
|
}
|
|
277
277
|
function prefetchElementQrls(el) {
|
|
278
|
+
const ownerDocument = _nullishCoalesce(el.ownerDocument, () => ( (typeof document !== "undefined" ? document : void 0)));
|
|
278
279
|
const eventAttrs = ["on:click", "on:input", "on:change", "on:submit", "on:keydown", "on:keyup"];
|
|
279
280
|
for (const attr of eventAttrs) {
|
|
280
281
|
const qrl = el.getAttribute(attr);
|
|
281
282
|
if (qrl) {
|
|
282
|
-
prefetchQrl(qrl);
|
|
283
|
+
prefetchQrl(qrl, ownerDocument);
|
|
283
284
|
}
|
|
284
285
|
}
|
|
285
286
|
const resumeQrl = el.getAttribute("data-fict-h");
|
|
286
287
|
if (resumeQrl) {
|
|
287
|
-
prefetchQrl(resumeQrl);
|
|
288
|
+
prefetchQrl(resumeQrl, ownerDocument);
|
|
288
289
|
}
|
|
289
290
|
const children = el.querySelectorAll(
|
|
290
291
|
"[on\\:click], [on\\:input], [on\\:change], [on\\:submit], [data-fict-h]"
|
|
@@ -293,26 +294,27 @@ function prefetchElementQrls(el) {
|
|
|
293
294
|
for (const attr of eventAttrs) {
|
|
294
295
|
const qrl = child.getAttribute(attr);
|
|
295
296
|
if (qrl) {
|
|
296
|
-
prefetchQrl(qrl);
|
|
297
|
+
prefetchQrl(qrl, ownerDocument);
|
|
297
298
|
}
|
|
298
299
|
}
|
|
299
300
|
const childResumeQrl = child.getAttribute("data-fict-h");
|
|
300
301
|
if (childResumeQrl) {
|
|
301
|
-
prefetchQrl(childResumeQrl);
|
|
302
|
+
prefetchQrl(childResumeQrl, ownerDocument);
|
|
302
303
|
}
|
|
303
304
|
});
|
|
304
305
|
}
|
|
305
|
-
function prefetchQrl(qrl) {
|
|
306
|
+
function prefetchQrl(qrl, ownerDocument) {
|
|
306
307
|
const { url } = parseQrl(qrl);
|
|
307
308
|
if (!url || prefetchedUrls.has(url)) return;
|
|
308
309
|
prefetchedUrls.add(url);
|
|
309
310
|
const resolvedUrl = resolveModuleUrl(url);
|
|
310
|
-
|
|
311
|
-
|
|
311
|
+
const doc = _nullishCoalesce(ownerDocument, () => ( (typeof document !== "undefined" ? document : void 0)));
|
|
312
|
+
if (doc) {
|
|
313
|
+
const link = doc.createElement("link");
|
|
312
314
|
link.rel = "modulepreload";
|
|
313
315
|
link.href = resolvedUrl;
|
|
314
316
|
link.crossOrigin = "anonymous";
|
|
315
|
-
|
|
317
|
+
_optionalChain([doc, 'access', _5 => _5.head, 'optionalAccess', _6 => _6.appendChild, 'call', _7 => _7(link)]);
|
|
316
318
|
}
|
|
317
319
|
}
|
|
318
320
|
function handleResumableEvent(event) {
|
|
@@ -336,18 +338,18 @@ async function handleResumableEventAsync(event) {
|
|
|
336
338
|
if (!host) continue;
|
|
337
339
|
const scopeId = host.getAttribute("data-fict-s");
|
|
338
340
|
if (!scopeId) continue;
|
|
339
|
-
const snapshot =
|
|
341
|
+
const snapshot = _chunkQNMYVXRLcjs.__fictGetSSRScope.call(void 0, scopeId);
|
|
340
342
|
if (!snapshot) {
|
|
341
343
|
emitSnapshotIssue({
|
|
342
344
|
code: "scope_snapshot_missing",
|
|
343
345
|
message: `[fict/loader] Missing scope snapshot for ${scopeId}; skipping resumable handler execution.`,
|
|
344
346
|
source: "event",
|
|
345
|
-
expectedVersion:
|
|
347
|
+
expectedVersion: _chunkQNMYVXRLcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION,
|
|
346
348
|
scopeId
|
|
347
349
|
});
|
|
348
350
|
continue;
|
|
349
351
|
}
|
|
350
|
-
|
|
352
|
+
_chunkQNMYVXRLcjs.__fictEnsureScope.call(void 0, scopeId, host, snapshot);
|
|
351
353
|
const { url, exportName } = parseQrl(qrl);
|
|
352
354
|
if (event.cancelable && (event.type === "click" || event.type === "submit")) {
|
|
353
355
|
const tag = node.tagName.toLowerCase();
|
|
@@ -364,7 +366,7 @@ async function handleResumableEventAsync(event) {
|
|
|
364
366
|
/* @vite-ignore */
|
|
365
367
|
resolvedResumeUrl
|
|
366
368
|
)));
|
|
367
|
-
const resumeFn =
|
|
369
|
+
const resumeFn = _chunkQNMYVXRLcjs.__fictGetResume.call(void 0, resumeExport);
|
|
368
370
|
if (typeof resumeFn === "function") {
|
|
369
371
|
await resumeFn(scopeId, host);
|
|
370
372
|
hydratedScopes.add(scopeId);
|
|
@@ -411,5 +413,5 @@ function buildEventPath(event) {
|
|
|
411
413
|
|
|
412
414
|
|
|
413
415
|
|
|
414
|
-
exports.__fictUseLexicalScope =
|
|
416
|
+
exports.__fictUseLexicalScope = _chunkQNMYVXRLcjs.__fictUseLexicalScope; exports.cleanupEventListeners = cleanupEventListeners; exports.installResumableLoader = installResumableLoader; exports.resetHydratedScopes = resetHydratedScopes; exports.resetPrefetchedUrls = resetPrefetchedUrls; exports.waitForPendingHandlers = waitForPendingHandlers;
|
|
415
417
|
//# sourceMappingURL=loader.cjs.map
|