@fictjs/runtime 0.17.0 → 0.17.1
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-CQUGLLBI.d.ts → binding-BfzY9rae.d.ts} +2 -2
- package/dist/{binding-BlABuUiG.d.cts → binding-CDR2ERoq.d.cts} +2 -2
- package/dist/{chunk-5FVWBK4M.cjs → chunk-2J4INHDT.cjs} +40 -40
- package/dist/{chunk-5FVWBK4M.cjs.map → chunk-2J4INHDT.cjs.map} +1 -1
- package/dist/{chunk-6DNYVH5U.cjs → chunk-CKKZDUHM.cjs} +21 -18
- package/dist/chunk-CKKZDUHM.cjs.map +1 -0
- package/dist/{chunk-UQTWIV3S.js → chunk-DHRRJJ6W.js} +8 -5
- package/dist/chunk-DHRRJJ6W.js.map +1 -0
- package/dist/{chunk-IIWHTV23.js → chunk-LFLFSJFU.js} +3 -3
- package/dist/{chunk-ECKYFH5Q.cjs → chunk-NBDEMBBX.cjs} +43 -81
- package/dist/chunk-NBDEMBBX.cjs.map +1 -0
- package/dist/{chunk-CFAWL76V.js → chunk-OKPQWORE.js} +43 -81
- package/dist/chunk-OKPQWORE.js.map +1 -0
- package/dist/{chunk-M42N54LG.js → chunk-OLHZBAIF.js} +3 -3
- package/dist/{chunk-F5SDRX4J.js → chunk-R2HYEOP7.js} +470 -172
- package/dist/chunk-R2HYEOP7.js.map +1 -0
- package/dist/{chunk-INYTG4NG.cjs → chunk-UG2IFQOY.cjs} +650 -352
- package/dist/chunk-UG2IFQOY.cjs.map +1 -0
- package/dist/{chunk-WY4LI5PB.cjs → chunk-VP2WC7X3.cjs} +8 -8
- package/dist/{chunk-WY4LI5PB.cjs.map → chunk-VP2WC7X3.cjs.map} +1 -1
- package/dist/{devtools-DWIZRe7L.d.cts → devtools-BwkkQ6DN.d.cts} +1 -1
- package/dist/{devtools-DNnnDGu1.d.ts → devtools-CK3SVU_w.d.ts} +1 -1
- package/dist/index.cjs +55 -42
- 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 +260 -156
- package/dist/index.dev.js.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/internal-list.cjs +4 -4
- package/dist/internal-list.js +3 -3
- package/dist/internal.cjs +5 -5
- package/dist/internal.d.cts +3 -3
- package/dist/internal.d.ts +3 -3
- package/dist/internal.js +4 -4
- package/dist/loader.cjs +18 -18
- package/dist/loader.js +1 -1
- package/dist/{props-C04ScJgm.d.ts → props-CFoQ471Y.d.ts} +1 -1
- package/dist/{props-CdmuXCiu.d.cts → props-D4tK8Gn0.d.cts} +1 -1
- package/dist/{scope-gpOMWTlf.d.ts → scope-BFzD_7hx.d.ts} +1 -1
- package/dist/{scope-GwC4DJ50.d.cts → scope-Ck3mTQVS.d.cts} +1 -1
- package/package.json +1 -1
- package/src/binding.ts +561 -166
- package/src/context.ts +8 -1
- package/src/dom.ts +26 -44
- package/src/effect.ts +9 -12
- package/src/error-boundary.ts +8 -0
- package/src/hydration.ts +25 -6
- package/src/lifecycle.ts +31 -79
- package/src/signal.ts +4 -1
- package/src/suspense.ts +8 -0
- package/dist/chunk-6DNYVH5U.cjs.map +0 -1
- package/dist/chunk-CFAWL76V.js.map +0 -1
- package/dist/chunk-ECKYFH5Q.cjs.map +0 -1
- package/dist/chunk-F5SDRX4J.js.map +0 -1
- package/dist/chunk-INYTG4NG.cjs.map +0 -1
- package/dist/chunk-UQTWIV3S.js.map +0 -1
- /package/dist/{chunk-IIWHTV23.js.map → chunk-LFLFSJFU.js.map} +0 -0
- /package/dist/{chunk-M42N54LG.js.map → chunk-OLHZBAIF.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-DHRRJJ6W.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-R2HYEOP7.js";
|
|
23
23
|
import {
|
|
24
24
|
__fictGetSSRStreamHooks,
|
|
25
25
|
__fictPopSSRBoundary,
|
|
@@ -38,9 +38,10 @@ import {
|
|
|
38
38
|
popRoot,
|
|
39
39
|
pushRoot,
|
|
40
40
|
registerErrorHandler,
|
|
41
|
+
registerRootCleanup,
|
|
41
42
|
registerSuspenseHandler,
|
|
42
43
|
signal
|
|
43
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-OKPQWORE.js";
|
|
44
45
|
|
|
45
46
|
// src/ref.ts
|
|
46
47
|
function createRef() {
|
|
@@ -117,6 +118,12 @@ function ErrorBoundary(props) {
|
|
|
117
118
|
renderValue(toView(null));
|
|
118
119
|
};
|
|
119
120
|
renderValue(props.children ?? null);
|
|
121
|
+
registerRootCleanup(() => {
|
|
122
|
+
if (cleanup) {
|
|
123
|
+
cleanup();
|
|
124
|
+
cleanup = void 0;
|
|
125
|
+
}
|
|
126
|
+
});
|
|
120
127
|
registerErrorHandler((err) => {
|
|
121
128
|
renderValue(toView(err));
|
|
122
129
|
props.onError?.(err);
|
|
@@ -294,6 +301,12 @@ function Suspense(props) {
|
|
|
294
301
|
return false;
|
|
295
302
|
});
|
|
296
303
|
renderView(props.children ?? null);
|
|
304
|
+
registerRootCleanup(() => {
|
|
305
|
+
if (cleanup) {
|
|
306
|
+
cleanup();
|
|
307
|
+
cleanup = void 0;
|
|
308
|
+
}
|
|
309
|
+
});
|
|
297
310
|
if (props.resetKeys !== void 0) {
|
|
298
311
|
const isGetter = typeof props.resetKeys === "function" && props.resetKeys.length === 0;
|
|
299
312
|
const getter = isGetter ? props.resetKeys : void 0;
|
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 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":"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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 registerRootCleanup,\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 registerRootCleanup(() => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n })\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 registerRootCleanup,\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 registerRootCleanup(() => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\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 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":[]}
|
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 _chunk2J4INHDTcjs = require('./chunk-2J4INHDT.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
7
|
-
require('./chunk-
|
|
6
|
+
var _chunkUG2IFQOYcjs = require('./chunk-UG2IFQOY.cjs');
|
|
7
|
+
require('./chunk-NBDEMBBX.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
exports.createKeyedList =
|
|
11
|
+
exports.createKeyedList = _chunk2J4INHDTcjs.createKeyedList; exports.toNodeArray = _chunkUG2IFQOYcjs.toNodeArray;
|
|
12
12
|
//# sourceMappingURL=internal-list.cjs.map
|
package/dist/internal-list.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createKeyedList
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OLHZBAIF.js";
|
|
4
4
|
import {
|
|
5
5
|
toNodeArray
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-R2HYEOP7.js";
|
|
7
|
+
import "./chunk-OKPQWORE.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 _chunk2J4INHDTcjs = require('./chunk-2J4INHDT.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkVP2WC7X3cjs = require('./chunk-VP2WC7X3.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
@@ -51,7 +51,7 @@ var _chunkWY4LI5PBcjs = require('./chunk-WY4LI5PB.cjs');
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
|
|
54
|
-
var
|
|
54
|
+
var _chunkUG2IFQOYcjs = require('./chunk-UG2IFQOY.cjs');
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
|
|
@@ -109,7 +109,7 @@ var _chunkINYTG4NGcjs = require('./chunk-INYTG4NG.cjs');
|
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
|
|
112
|
-
var
|
|
112
|
+
var _chunkNBDEMBBXcjs = require('./chunk-NBDEMBBX.cjs');
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
|
|
@@ -215,5 +215,5 @@ var _chunkECKYFH5Qcjs = require('./chunk-ECKYFH5Q.cjs');
|
|
|
215
215
|
|
|
216
216
|
|
|
217
217
|
|
|
218
|
-
exports.Aliases =
|
|
218
|
+
exports.Aliases = _chunkNBDEMBBXcjs.Aliases; exports.BooleanAttributes = _chunkNBDEMBBXcjs.BooleanAttributes; exports.ChildProperties = _chunkNBDEMBBXcjs.ChildProperties; exports.DelegatedEvents = _chunkNBDEMBBXcjs.DelegatedEvents; exports.FICT_SSR_SNAPSHOT_SCHEMA_VERSION = _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION; exports.Fragment = _chunkUG2IFQOYcjs.Fragment; exports.Properties = _chunkNBDEMBBXcjs.Properties; exports.SVGElements = _chunkNBDEMBBXcjs.SVGElements; exports.SVGNamespace = _chunkNBDEMBBXcjs.SVGNamespace; exports.UnitlessStyles = _chunkNBDEMBBXcjs.UnitlessStyles; exports.__fictDisableResumable = _chunkNBDEMBBXcjs.__fictDisableResumable; exports.__fictDisableSSR = _chunkNBDEMBBXcjs.__fictDisableSSR; exports.__fictEnableResumable = _chunkNBDEMBBXcjs.__fictEnableResumable; exports.__fictEnableSSR = _chunkNBDEMBBXcjs.__fictEnableSSR; exports.__fictEnsureScope = _chunkNBDEMBBXcjs.__fictEnsureScope; exports.__fictEnterHydration = _chunkNBDEMBBXcjs.__fictEnterHydration; exports.__fictExitHydration = _chunkNBDEMBBXcjs.__fictExitHydration; exports.__fictGetResume = _chunkNBDEMBBXcjs.__fictGetResume; exports.__fictGetSSRScope = _chunkNBDEMBBXcjs.__fictGetSSRScope; exports.__fictGetSSRStreamHooks = _chunkNBDEMBBXcjs.__fictGetSSRStreamHooks; exports.__fictGetScopeProps = _chunkNBDEMBBXcjs.__fictGetScopeProps; exports.__fictGetScopeRegistry = _chunkNBDEMBBXcjs.__fictGetScopeRegistry; exports.__fictGetScopesForBoundary = _chunkNBDEMBBXcjs.__fictGetScopesForBoundary; exports.__fictIsHydrating = _chunkNBDEMBBXcjs.__fictIsHydrating; exports.__fictIsResumable = _chunkNBDEMBBXcjs.__fictIsResumable; exports.__fictIsSSR = _chunkNBDEMBBXcjs.__fictIsSSR; exports.__fictMergeSSRState = _chunkNBDEMBBXcjs.__fictMergeSSRState; exports.__fictPopContext = _chunkNBDEMBBXcjs.__fictPopContext; exports.__fictPrepareContext = _chunkNBDEMBBXcjs.__fictPrepareContext; exports.__fictProp = _chunkUG2IFQOYcjs.__fictProp; exports.__fictPropsRest = _chunkUG2IFQOYcjs.__fictPropsRest; exports.__fictPushContext = _chunkNBDEMBBXcjs.__fictPushContext; exports.__fictQrl = _chunkNBDEMBBXcjs.__fictQrl; exports.__fictRegisterResume = _chunkNBDEMBBXcjs.__fictRegisterResume; exports.__fictRegisterScope = _chunkNBDEMBBXcjs.__fictRegisterScope; exports.__fictRender = _chunkNBDEMBBXcjs.__fictRender; exports.__fictResetContext = _chunkNBDEMBBXcjs.__fictResetContext; exports.__fictSerializeSSRState = _chunkNBDEMBBXcjs.__fictSerializeSSRState; exports.__fictSerializeSSRStateForScopes = _chunkNBDEMBBXcjs.__fictSerializeSSRStateForScopes; exports.__fictSetSSRState = _chunkNBDEMBBXcjs.__fictSetSSRState; exports.__fictSetSSRStreamHooks = _chunkNBDEMBBXcjs.__fictSetSSRStreamHooks; exports.__fictUseContext = _chunkNBDEMBBXcjs.__fictUseContext; exports.__fictUseEffect = _chunkNBDEMBBXcjs.__fictUseEffect; exports.__fictUseLexicalScope = _chunkNBDEMBBXcjs.__fictUseLexicalScope; exports.__fictUseMemo = _chunkNBDEMBBXcjs.__fictUseMemo; exports.__fictUseSignal = _chunkNBDEMBBXcjs.__fictUseSignal; exports.__resetReactiveState = _chunkNBDEMBBXcjs.__resetReactiveState; exports.addEventListener = _chunkUG2IFQOYcjs.addEventListener; exports.assign = _chunkUG2IFQOYcjs.assign; exports.bindAttribute = _chunkUG2IFQOYcjs.bindAttribute; exports.bindClass = _chunkUG2IFQOYcjs.bindClass; exports.bindEvent = _chunkUG2IFQOYcjs.bindEvent; exports.bindProperty = _chunkUG2IFQOYcjs.bindProperty; exports.bindRef = _chunkUG2IFQOYcjs.bindRef; exports.bindStyle = _chunkUG2IFQOYcjs.bindStyle; exports.bindText = _chunkUG2IFQOYcjs.bindText; exports.callEventHandler = _chunkUG2IFQOYcjs.callEventHandler; exports.classList = _chunkUG2IFQOYcjs.classList; exports.clearDelegatedEvents = _chunkUG2IFQOYcjs.clearDelegatedEvents; exports.createConditional = _chunkUG2IFQOYcjs.createConditional; exports.createEffect = _chunkNBDEMBBXcjs.createEffect; exports.createElement = _chunkUG2IFQOYcjs.createElement; exports.createKeyedList = _chunk2J4INHDTcjs.createKeyedList; exports.createMemo = _chunkNBDEMBBXcjs.createMemo; exports.createPortal = _chunkUG2IFQOYcjs.createPortal; exports.createPropsProxy = _chunkUG2IFQOYcjs.createPropsProxy; exports.createRenderEffect = _chunkNBDEMBBXcjs.createRenderEffect; exports.createSelector = _chunkNBDEMBBXcjs.createSelector; exports.createSignal = _chunkNBDEMBBXcjs.signal; exports.createStore = _chunkNBDEMBBXcjs.createStore; exports.delegateEvents = _chunkUG2IFQOYcjs.delegateEvents; exports.deserializeValue = _chunkNBDEMBBXcjs.deserializeValue; exports.getPropAlias = _chunkNBDEMBBXcjs.getPropAlias; exports.getSlotEnd = _chunkUG2IFQOYcjs.getSlotEnd; exports.hydrateComponent = _chunkUG2IFQOYcjs.hydrateComponent; exports.insert = _chunkUG2IFQOYcjs.insert; exports.insertBetween = _chunkUG2IFQOYcjs.insertBetween; exports.insertNodesBefore = _chunkUG2IFQOYcjs.insertNodesBefore; exports.isNodeBetweenMarkers = _chunk2J4INHDTcjs.isNodeBetweenMarkers; exports.isReactive = _chunkUG2IFQOYcjs.isReactive; exports.isStoreProxy = _chunkNBDEMBBXcjs.isStoreProxy; exports.keyed = _chunkUG2IFQOYcjs.keyed; exports.mergeProps = _chunkUG2IFQOYcjs.mergeProps; exports.moveNodesBefore = _chunk2J4INHDTcjs.moveNodesBefore; exports.nonReactive = _chunkUG2IFQOYcjs.nonReactive; exports.onDestroy = _chunkNBDEMBBXcjs.onDestroy; exports.prop = _chunkUG2IFQOYcjs.prop; exports.reactive = _chunkUG2IFQOYcjs.reactive; exports.reconcileArrays = _chunk2J4INHDTcjs.reconcileArrays; exports.removeNodes = _chunkUG2IFQOYcjs.removeNodes; exports.render = _chunkUG2IFQOYcjs.render; exports.resolvePath = _chunkUG2IFQOYcjs.resolvePath; exports.runInScope = _chunkVP2WC7X3cjs.runInScope; exports.serializeValue = _chunkNBDEMBBXcjs.serializeValue; exports.setAttr = _chunkUG2IFQOYcjs.setAttr; exports.setClass = _chunkUG2IFQOYcjs.setClass; exports.setProp = _chunkUG2IFQOYcjs.setProp; exports.setStyle = _chunkUG2IFQOYcjs.setStyle; exports.setText = _chunkUG2IFQOYcjs.setText; exports.spread = _chunkUG2IFQOYcjs.spread; exports.template = _chunkUG2IFQOYcjs.template; exports.toNodeArray = _chunkUG2IFQOYcjs.toNodeArray; exports.unwrap = _chunkUG2IFQOYcjs.unwrap; exports.unwrapStore = _chunkNBDEMBBXcjs.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-D4tK8Gn0.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-CDR2ERoq.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-C20cRVj9.cjs';
|
|
5
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-
|
|
6
|
+
export { r as runInScope } from './scope-Ck3mTQVS.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-CFoQ471Y.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-BfzY9rae.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-C166aAVg.js';
|
|
5
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-
|
|
6
|
+
export { r as runInScope } from './scope-BFzD_7hx.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-OLHZBAIF.js";
|
|
7
7
|
import {
|
|
8
8
|
runInScope
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-LFLFSJFU.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-R2HYEOP7.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-OKPQWORE.js";
|
|
113
113
|
export {
|
|
114
114
|
Aliases,
|
|
115
115
|
BooleanAttributes,
|
package/dist/loader.cjs
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunkNBDEMBBXcjs = require('./chunk-NBDEMBBX.cjs');
|
|
12
12
|
|
|
13
13
|
// src/loader.ts
|
|
14
14
|
function resolveModuleUrl(url) {
|
|
@@ -137,7 +137,7 @@ function installResumableLoader(options = {}) {
|
|
|
137
137
|
prefetchedUrls.clear();
|
|
138
138
|
processedSnapshots.clear();
|
|
139
139
|
emittedIssueKeys.clear();
|
|
140
|
-
|
|
140
|
+
_chunkNBDEMBBXcjs.__fictSetSSRState.call(void 0, null);
|
|
141
141
|
if (eventListenerCleanup) {
|
|
142
142
|
eventListenerCleanup();
|
|
143
143
|
eventListenerCleanup = null;
|
|
@@ -154,7 +154,7 @@ function installResumableLoader(options = {}) {
|
|
|
154
154
|
if (_optionalChain([snapshotEl, 'optionalAccess', _2 => _2.textContent])) {
|
|
155
155
|
const state = parseSnapshotText(snapshotEl.textContent, `#${scriptId}`);
|
|
156
156
|
if (state) {
|
|
157
|
-
|
|
157
|
+
_chunkNBDEMBBXcjs.__fictSetSSRState.call(void 0, state);
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
const snapshotScripts = doc.querySelectorAll(
|
|
@@ -187,8 +187,8 @@ function installResumableLoader(options = {}) {
|
|
|
187
187
|
});
|
|
188
188
|
snapshotObserver.observe(_nullishCoalesce(doc.documentElement, () => ( doc)), { childList: true, subtree: true });
|
|
189
189
|
}
|
|
190
|
-
|
|
191
|
-
const events = _nullishCoalesce(options.events, () => ( Array.from(
|
|
190
|
+
_chunkNBDEMBBXcjs.__fictEnableResumable.call(void 0, );
|
|
191
|
+
const events = _nullishCoalesce(options.events, () => ( Array.from(_chunkNBDEMBBXcjs.DelegatedEvents)));
|
|
192
192
|
for (const eventName of events) {
|
|
193
193
|
doc.addEventListener(eventName, handleResumableEvent, true);
|
|
194
194
|
}
|
|
@@ -212,7 +212,7 @@ function parseSnapshotScript(script) {
|
|
|
212
212
|
const source = script.id ? `#${script.id}` : "<script[data-fict-snapshot]>";
|
|
213
213
|
const state = parseSnapshotText(text, source);
|
|
214
214
|
if (state) {
|
|
215
|
-
|
|
215
|
+
_chunkNBDEMBBXcjs.__fictMergeSSRState.call(void 0, state);
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
function parseSnapshotText(text, source) {
|
|
@@ -224,7 +224,7 @@ function parseSnapshotText(text, source) {
|
|
|
224
224
|
code: "snapshot_parse_error",
|
|
225
225
|
message: "[fict/loader] Failed to parse SSR snapshot JSON.",
|
|
226
226
|
source,
|
|
227
|
-
expectedVersion:
|
|
227
|
+
expectedVersion: _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
|
|
228
228
|
});
|
|
229
229
|
return null;
|
|
230
230
|
}
|
|
@@ -236,18 +236,18 @@ function normalizeSnapshotState(value, source) {
|
|
|
236
236
|
code: "snapshot_invalid_shape",
|
|
237
237
|
message: "[fict/loader] Snapshot payload must be an object.",
|
|
238
238
|
source,
|
|
239
|
-
expectedVersion:
|
|
239
|
+
expectedVersion: _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
|
|
240
240
|
});
|
|
241
241
|
return null;
|
|
242
242
|
}
|
|
243
243
|
const rawVersion = value.v;
|
|
244
|
-
const version = rawVersion === void 0 ?
|
|
245
|
-
if (!Number.isInteger(version) || version !==
|
|
244
|
+
const version = rawVersion === void 0 ? _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION : rawVersion;
|
|
245
|
+
if (!Number.isInteger(version) || version !== _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION) {
|
|
246
246
|
const versionIssue = {
|
|
247
247
|
code: "snapshot_unsupported_version",
|
|
248
248
|
message: `[fict/loader] Snapshot schema version ${String(version)} is not supported by this runtime.`,
|
|
249
249
|
source,
|
|
250
|
-
expectedVersion:
|
|
250
|
+
expectedVersion: _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
|
|
251
251
|
};
|
|
252
252
|
if (typeof version === "number") {
|
|
253
253
|
versionIssue.actualVersion = version;
|
|
@@ -263,11 +263,11 @@ function normalizeSnapshotState(value, source) {
|
|
|
263
263
|
code: "snapshot_invalid_shape",
|
|
264
264
|
message: "[fict/loader] Snapshot payload is missing a valid `scopes` object.",
|
|
265
265
|
source,
|
|
266
|
-
expectedVersion:
|
|
266
|
+
expectedVersion: _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
|
|
267
267
|
});
|
|
268
268
|
return null;
|
|
269
269
|
}
|
|
270
|
-
return { v:
|
|
270
|
+
return { v: _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION, scopes };
|
|
271
271
|
}
|
|
272
272
|
function isRecord(value) {
|
|
273
273
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -421,18 +421,18 @@ async function handleResumableEventAsync(event) {
|
|
|
421
421
|
if (!host) continue;
|
|
422
422
|
const scopeId = host.getAttribute("data-fict-s");
|
|
423
423
|
if (!scopeId) continue;
|
|
424
|
-
const snapshot =
|
|
424
|
+
const snapshot = _chunkNBDEMBBXcjs.__fictGetSSRScope.call(void 0, scopeId);
|
|
425
425
|
if (!snapshot) {
|
|
426
426
|
emitSnapshotIssue({
|
|
427
427
|
code: "scope_snapshot_missing",
|
|
428
428
|
message: `[fict/loader] Missing scope snapshot for ${scopeId}; skipping resumable handler execution.`,
|
|
429
429
|
source: "event",
|
|
430
|
-
expectedVersion:
|
|
430
|
+
expectedVersion: _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION,
|
|
431
431
|
scopeId
|
|
432
432
|
});
|
|
433
433
|
continue;
|
|
434
434
|
}
|
|
435
|
-
|
|
435
|
+
_chunkNBDEMBBXcjs.__fictEnsureScope.call(void 0, scopeId, host, snapshot);
|
|
436
436
|
const { url, exportName } = parseQrl(qrl);
|
|
437
437
|
if (event.cancelable && (event.type === "click" || event.type === "submit")) {
|
|
438
438
|
const tag = node.tagName.toLowerCase();
|
|
@@ -458,7 +458,7 @@ async function handleResumableEventAsync(event) {
|
|
|
458
458
|
/* @vite-ignore */
|
|
459
459
|
normalizedResumeImportUrl
|
|
460
460
|
)));
|
|
461
|
-
const resumeFn = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(
|
|
461
|
+
const resumeFn = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_chunkNBDEMBBXcjs.__fictGetResume.call(void 0, resumeQrl), () => ( _chunkNBDEMBBXcjs.__fictGetResume.call(void 0, resolvedResumeQrl))), () => ( _chunkNBDEMBBXcjs.__fictGetResume.call(void 0, resolvedAbsoluteResumeQrl))), () => ( _chunkNBDEMBBXcjs.__fictGetResume.call(void 0, resumeExport)));
|
|
462
462
|
if (typeof resumeFn === "function") {
|
|
463
463
|
await resumeFn(scopeId, host);
|
|
464
464
|
hydratedScopes.add(scopeId);
|
|
@@ -530,5 +530,5 @@ function buildEventPath(event) {
|
|
|
530
530
|
|
|
531
531
|
|
|
532
532
|
|
|
533
|
-
exports.__fictUseLexicalScope =
|
|
533
|
+
exports.__fictUseLexicalScope = _chunkNBDEMBBXcjs.__fictUseLexicalScope; exports.cleanupEventListeners = cleanupEventListeners; exports.installResumableLoader = installResumableLoader; exports.resetHydratedScopes = resetHydratedScopes; exports.resetPrefetchedUrls = resetPrefetchedUrls; exports.waitForPendingHandlers = waitForPendingHandlers;
|
|
534
534
|
//# sourceMappingURL=loader.cjs.map
|
package/dist/loader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { M as MemoOptions } from './signal-Z4KkDk9h.js';
|
|
2
|
-
import { F as FictNode, R as DOMElement } from './binding-
|
|
2
|
+
import { F as FictNode, R as DOMElement } from './binding-BfzY9rae.js';
|
|
3
3
|
|
|
4
4
|
type Memo<T> = () => T;
|
|
5
5
|
declare function createMemo<T>(fn: () => T, options?: MemoOptions<T>): Memo<T>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { M as MemoOptions } from './signal-Z4KkDk9h.cjs';
|
|
2
|
-
import { F as FictNode, R as DOMElement } from './binding-
|
|
2
|
+
import { F as FictNode, R as DOMElement } from './binding-CDR2ERoq.cjs';
|
|
3
3
|
|
|
4
4
|
type Memo<T> = () => T;
|
|
5
5
|
declare function createMemo<T>(fn: () => T, options?: MemoOptions<T>): Memo<T>;
|