@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.
Files changed (64) hide show
  1. package/dist/advanced.cjs +9 -9
  2. package/dist/advanced.d.cts +3 -3
  3. package/dist/advanced.d.ts +3 -3
  4. package/dist/advanced.js +4 -4
  5. package/dist/{binding-CQUGLLBI.d.ts → binding-BfzY9rae.d.ts} +2 -2
  6. package/dist/{binding-BlABuUiG.d.cts → binding-CDR2ERoq.d.cts} +2 -2
  7. package/dist/{chunk-5FVWBK4M.cjs → chunk-2J4INHDT.cjs} +40 -40
  8. package/dist/{chunk-5FVWBK4M.cjs.map → chunk-2J4INHDT.cjs.map} +1 -1
  9. package/dist/{chunk-6DNYVH5U.cjs → chunk-CKKZDUHM.cjs} +21 -18
  10. package/dist/chunk-CKKZDUHM.cjs.map +1 -0
  11. package/dist/{chunk-UQTWIV3S.js → chunk-DHRRJJ6W.js} +8 -5
  12. package/dist/chunk-DHRRJJ6W.js.map +1 -0
  13. package/dist/{chunk-IIWHTV23.js → chunk-LFLFSJFU.js} +3 -3
  14. package/dist/{chunk-ECKYFH5Q.cjs → chunk-NBDEMBBX.cjs} +43 -81
  15. package/dist/chunk-NBDEMBBX.cjs.map +1 -0
  16. package/dist/{chunk-CFAWL76V.js → chunk-OKPQWORE.js} +43 -81
  17. package/dist/chunk-OKPQWORE.js.map +1 -0
  18. package/dist/{chunk-M42N54LG.js → chunk-OLHZBAIF.js} +3 -3
  19. package/dist/{chunk-F5SDRX4J.js → chunk-R2HYEOP7.js} +470 -172
  20. package/dist/chunk-R2HYEOP7.js.map +1 -0
  21. package/dist/{chunk-INYTG4NG.cjs → chunk-UG2IFQOY.cjs} +650 -352
  22. package/dist/chunk-UG2IFQOY.cjs.map +1 -0
  23. package/dist/{chunk-WY4LI5PB.cjs → chunk-VP2WC7X3.cjs} +8 -8
  24. package/dist/{chunk-WY4LI5PB.cjs.map → chunk-VP2WC7X3.cjs.map} +1 -1
  25. package/dist/{devtools-DWIZRe7L.d.cts → devtools-BwkkQ6DN.d.cts} +1 -1
  26. package/dist/{devtools-DNnnDGu1.d.ts → devtools-CK3SVU_w.d.ts} +1 -1
  27. package/dist/index.cjs +55 -42
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +4 -4
  30. package/dist/index.d.ts +4 -4
  31. package/dist/index.dev.js +260 -156
  32. package/dist/index.dev.js.map +1 -1
  33. package/dist/index.js +16 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/internal-list.cjs +4 -4
  36. package/dist/internal-list.js +3 -3
  37. package/dist/internal.cjs +5 -5
  38. package/dist/internal.d.cts +3 -3
  39. package/dist/internal.d.ts +3 -3
  40. package/dist/internal.js +4 -4
  41. package/dist/loader.cjs +18 -18
  42. package/dist/loader.js +1 -1
  43. package/dist/{props-C04ScJgm.d.ts → props-CFoQ471Y.d.ts} +1 -1
  44. package/dist/{props-CdmuXCiu.d.cts → props-D4tK8Gn0.d.cts} +1 -1
  45. package/dist/{scope-gpOMWTlf.d.ts → scope-BFzD_7hx.d.ts} +1 -1
  46. package/dist/{scope-GwC4DJ50.d.cts → scope-Ck3mTQVS.d.cts} +1 -1
  47. package/package.json +1 -1
  48. package/src/binding.ts +561 -166
  49. package/src/context.ts +8 -1
  50. package/src/dom.ts +26 -44
  51. package/src/effect.ts +9 -12
  52. package/src/error-boundary.ts +8 -0
  53. package/src/hydration.ts +25 -6
  54. package/src/lifecycle.ts +31 -79
  55. package/src/signal.ts +4 -1
  56. package/src/suspense.ts +8 -0
  57. package/dist/chunk-6DNYVH5U.cjs.map +0 -1
  58. package/dist/chunk-CFAWL76V.js.map +0 -1
  59. package/dist/chunk-ECKYFH5Q.cjs.map +0 -1
  60. package/dist/chunk-F5SDRX4J.js.map +0 -1
  61. package/dist/chunk-INYTG4NG.cjs.map +0 -1
  62. package/dist/chunk-UQTWIV3S.js.map +0 -1
  63. /package/dist/{chunk-IIWHTV23.js.map → chunk-LFLFSJFU.js.map} +0 -0
  64. /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-UQTWIV3S.js";
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-F5SDRX4J.js";
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-CFAWL76V.js";
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":[]}
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunk5FVWBK4Mcjs = require('./chunk-5FVWBK4M.cjs');
3
+ var _chunk2J4INHDTcjs = require('./chunk-2J4INHDT.cjs');
4
4
 
5
5
 
6
- var _chunkINYTG4NGcjs = require('./chunk-INYTG4NG.cjs');
7
- require('./chunk-ECKYFH5Q.cjs');
6
+ var _chunkUG2IFQOYcjs = require('./chunk-UG2IFQOY.cjs');
7
+ require('./chunk-NBDEMBBX.cjs');
8
8
 
9
9
 
10
10
 
11
- exports.createKeyedList = _chunk5FVWBK4Mcjs.createKeyedList; exports.toNodeArray = _chunkINYTG4NGcjs.toNodeArray;
11
+ exports.createKeyedList = _chunk2J4INHDTcjs.createKeyedList; exports.toNodeArray = _chunkUG2IFQOYcjs.toNodeArray;
12
12
  //# sourceMappingURL=internal-list.cjs.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createKeyedList
3
- } from "./chunk-M42N54LG.js";
3
+ } from "./chunk-OLHZBAIF.js";
4
4
  import {
5
5
  toNodeArray
6
- } from "./chunk-F5SDRX4J.js";
7
- import "./chunk-CFAWL76V.js";
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 _chunk5FVWBK4Mcjs = require('./chunk-5FVWBK4M.cjs');
6
+ var _chunk2J4INHDTcjs = require('./chunk-2J4INHDT.cjs');
7
7
 
8
8
 
9
- var _chunkWY4LI5PBcjs = require('./chunk-WY4LI5PB.cjs');
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 _chunkINYTG4NGcjs = require('./chunk-INYTG4NG.cjs');
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 _chunkECKYFH5Qcjs = require('./chunk-ECKYFH5Q.cjs');
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 = _chunkECKYFH5Qcjs.Aliases; exports.BooleanAttributes = _chunkECKYFH5Qcjs.BooleanAttributes; exports.ChildProperties = _chunkECKYFH5Qcjs.ChildProperties; exports.DelegatedEvents = _chunkECKYFH5Qcjs.DelegatedEvents; exports.FICT_SSR_SNAPSHOT_SCHEMA_VERSION = _chunkECKYFH5Qcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION; exports.Fragment = _chunkINYTG4NGcjs.Fragment; exports.Properties = _chunkECKYFH5Qcjs.Properties; exports.SVGElements = _chunkECKYFH5Qcjs.SVGElements; exports.SVGNamespace = _chunkECKYFH5Qcjs.SVGNamespace; exports.UnitlessStyles = _chunkECKYFH5Qcjs.UnitlessStyles; exports.__fictDisableResumable = _chunkECKYFH5Qcjs.__fictDisableResumable; exports.__fictDisableSSR = _chunkECKYFH5Qcjs.__fictDisableSSR; exports.__fictEnableResumable = _chunkECKYFH5Qcjs.__fictEnableResumable; exports.__fictEnableSSR = _chunkECKYFH5Qcjs.__fictEnableSSR; exports.__fictEnsureScope = _chunkECKYFH5Qcjs.__fictEnsureScope; exports.__fictEnterHydration = _chunkECKYFH5Qcjs.__fictEnterHydration; exports.__fictExitHydration = _chunkECKYFH5Qcjs.__fictExitHydration; exports.__fictGetResume = _chunkECKYFH5Qcjs.__fictGetResume; exports.__fictGetSSRScope = _chunkECKYFH5Qcjs.__fictGetSSRScope; exports.__fictGetSSRStreamHooks = _chunkECKYFH5Qcjs.__fictGetSSRStreamHooks; exports.__fictGetScopeProps = _chunkECKYFH5Qcjs.__fictGetScopeProps; exports.__fictGetScopeRegistry = _chunkECKYFH5Qcjs.__fictGetScopeRegistry; exports.__fictGetScopesForBoundary = _chunkECKYFH5Qcjs.__fictGetScopesForBoundary; exports.__fictIsHydrating = _chunkECKYFH5Qcjs.__fictIsHydrating; exports.__fictIsResumable = _chunkECKYFH5Qcjs.__fictIsResumable; exports.__fictIsSSR = _chunkECKYFH5Qcjs.__fictIsSSR; exports.__fictMergeSSRState = _chunkECKYFH5Qcjs.__fictMergeSSRState; exports.__fictPopContext = _chunkECKYFH5Qcjs.__fictPopContext; exports.__fictPrepareContext = _chunkECKYFH5Qcjs.__fictPrepareContext; exports.__fictProp = _chunkINYTG4NGcjs.__fictProp; exports.__fictPropsRest = _chunkINYTG4NGcjs.__fictPropsRest; exports.__fictPushContext = _chunkECKYFH5Qcjs.__fictPushContext; exports.__fictQrl = _chunkECKYFH5Qcjs.__fictQrl; exports.__fictRegisterResume = _chunkECKYFH5Qcjs.__fictRegisterResume; exports.__fictRegisterScope = _chunkECKYFH5Qcjs.__fictRegisterScope; exports.__fictRender = _chunkECKYFH5Qcjs.__fictRender; exports.__fictResetContext = _chunkECKYFH5Qcjs.__fictResetContext; exports.__fictSerializeSSRState = _chunkECKYFH5Qcjs.__fictSerializeSSRState; exports.__fictSerializeSSRStateForScopes = _chunkECKYFH5Qcjs.__fictSerializeSSRStateForScopes; exports.__fictSetSSRState = _chunkECKYFH5Qcjs.__fictSetSSRState; exports.__fictSetSSRStreamHooks = _chunkECKYFH5Qcjs.__fictSetSSRStreamHooks; exports.__fictUseContext = _chunkECKYFH5Qcjs.__fictUseContext; exports.__fictUseEffect = _chunkECKYFH5Qcjs.__fictUseEffect; exports.__fictUseLexicalScope = _chunkECKYFH5Qcjs.__fictUseLexicalScope; exports.__fictUseMemo = _chunkECKYFH5Qcjs.__fictUseMemo; exports.__fictUseSignal = _chunkECKYFH5Qcjs.__fictUseSignal; exports.__resetReactiveState = _chunkECKYFH5Qcjs.__resetReactiveState; exports.addEventListener = _chunkINYTG4NGcjs.addEventListener; exports.assign = _chunkINYTG4NGcjs.assign; exports.bindAttribute = _chunkINYTG4NGcjs.bindAttribute; exports.bindClass = _chunkINYTG4NGcjs.bindClass; exports.bindEvent = _chunkINYTG4NGcjs.bindEvent; exports.bindProperty = _chunkINYTG4NGcjs.bindProperty; exports.bindRef = _chunkINYTG4NGcjs.bindRef; exports.bindStyle = _chunkINYTG4NGcjs.bindStyle; exports.bindText = _chunkINYTG4NGcjs.bindText; exports.callEventHandler = _chunkINYTG4NGcjs.callEventHandler; exports.classList = _chunkINYTG4NGcjs.classList; exports.clearDelegatedEvents = _chunkINYTG4NGcjs.clearDelegatedEvents; exports.createConditional = _chunkINYTG4NGcjs.createConditional; exports.createEffect = _chunkECKYFH5Qcjs.createEffect; exports.createElement = _chunkINYTG4NGcjs.createElement; exports.createKeyedList = _chunk5FVWBK4Mcjs.createKeyedList; exports.createMemo = _chunkECKYFH5Qcjs.createMemo; exports.createPortal = _chunkINYTG4NGcjs.createPortal; exports.createPropsProxy = _chunkINYTG4NGcjs.createPropsProxy; exports.createRenderEffect = _chunkECKYFH5Qcjs.createRenderEffect; exports.createSelector = _chunkECKYFH5Qcjs.createSelector; exports.createSignal = _chunkECKYFH5Qcjs.signal; exports.createStore = _chunkECKYFH5Qcjs.createStore; exports.delegateEvents = _chunkINYTG4NGcjs.delegateEvents; exports.deserializeValue = _chunkECKYFH5Qcjs.deserializeValue; exports.getPropAlias = _chunkECKYFH5Qcjs.getPropAlias; exports.getSlotEnd = _chunkINYTG4NGcjs.getSlotEnd; exports.hydrateComponent = _chunkINYTG4NGcjs.hydrateComponent; exports.insert = _chunkINYTG4NGcjs.insert; exports.insertBetween = _chunkINYTG4NGcjs.insertBetween; exports.insertNodesBefore = _chunkINYTG4NGcjs.insertNodesBefore; exports.isNodeBetweenMarkers = _chunk5FVWBK4Mcjs.isNodeBetweenMarkers; exports.isReactive = _chunkINYTG4NGcjs.isReactive; exports.isStoreProxy = _chunkECKYFH5Qcjs.isStoreProxy; exports.keyed = _chunkINYTG4NGcjs.keyed; exports.mergeProps = _chunkINYTG4NGcjs.mergeProps; exports.moveNodesBefore = _chunk5FVWBK4Mcjs.moveNodesBefore; exports.nonReactive = _chunkINYTG4NGcjs.nonReactive; exports.onDestroy = _chunkECKYFH5Qcjs.onDestroy; exports.prop = _chunkINYTG4NGcjs.prop; exports.reactive = _chunkINYTG4NGcjs.reactive; exports.reconcileArrays = _chunk5FVWBK4Mcjs.reconcileArrays; exports.removeNodes = _chunkINYTG4NGcjs.removeNodes; exports.render = _chunkINYTG4NGcjs.render; exports.resolvePath = _chunkINYTG4NGcjs.resolvePath; exports.runInScope = _chunkWY4LI5PBcjs.runInScope; exports.serializeValue = _chunkECKYFH5Qcjs.serializeValue; exports.setAttr = _chunkINYTG4NGcjs.setAttr; exports.setClass = _chunkINYTG4NGcjs.setClass; exports.setProp = _chunkINYTG4NGcjs.setProp; exports.setStyle = _chunkINYTG4NGcjs.setStyle; exports.setText = _chunkINYTG4NGcjs.setText; exports.spread = _chunkINYTG4NGcjs.spread; exports.template = _chunkINYTG4NGcjs.template; exports.toNodeArray = _chunkINYTG4NGcjs.toNodeArray; exports.unwrap = _chunkINYTG4NGcjs.unwrap; exports.unwrapStore = _chunkECKYFH5Qcjs.unwrapStore;
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
@@ -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-CdmuXCiu.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-BlABuUiG.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-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-GwC4DJ50.cjs';
6
+ export { r as runInScope } from './scope-Ck3mTQVS.cjs';
7
7
 
8
8
  type Store<T> = T;
9
9
  /**
@@ -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-C04ScJgm.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-CQUGLLBI.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-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-gpOMWTlf.js';
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-M42N54LG.js";
6
+ } from "./chunk-OLHZBAIF.js";
7
7
  import {
8
8
  runInScope
9
- } from "./chunk-IIWHTV23.js";
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-F5SDRX4J.js";
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-CFAWL76V.js";
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 _chunkECKYFH5Qcjs = require('./chunk-ECKYFH5Q.cjs');
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
- _chunkECKYFH5Qcjs.__fictSetSSRState.call(void 0, null);
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
- _chunkECKYFH5Qcjs.__fictSetSSRState.call(void 0, state);
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
- _chunkECKYFH5Qcjs.__fictEnableResumable.call(void 0, );
191
- const events = _nullishCoalesce(options.events, () => ( Array.from(_chunkECKYFH5Qcjs.DelegatedEvents)));
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
- _chunkECKYFH5Qcjs.__fictMergeSSRState.call(void 0, state);
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: _chunkECKYFH5Qcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
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: _chunkECKYFH5Qcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
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 ? _chunkECKYFH5Qcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION : rawVersion;
245
- if (!Number.isInteger(version) || version !== _chunkECKYFH5Qcjs.FICT_SSR_SNAPSHOT_SCHEMA_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: _chunkECKYFH5Qcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
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: _chunkECKYFH5Qcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
266
+ expectedVersion: _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION
267
267
  });
268
268
  return null;
269
269
  }
270
- return { v: _chunkECKYFH5Qcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION, scopes };
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 = _chunkECKYFH5Qcjs.__fictGetSSRScope.call(void 0, scopeId);
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: _chunkECKYFH5Qcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION,
430
+ expectedVersion: _chunkNBDEMBBXcjs.FICT_SSR_SNAPSHOT_SCHEMA_VERSION,
431
431
  scopeId
432
432
  });
433
433
  continue;
434
434
  }
435
- _chunkECKYFH5Qcjs.__fictEnsureScope.call(void 0, scopeId, host, snapshot);
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(_chunkECKYFH5Qcjs.__fictGetResume.call(void 0, resumeQrl), () => ( _chunkECKYFH5Qcjs.__fictGetResume.call(void 0, resolvedResumeQrl))), () => ( _chunkECKYFH5Qcjs.__fictGetResume.call(void 0, resolvedAbsoluteResumeQrl))), () => ( _chunkECKYFH5Qcjs.__fictGetResume.call(void 0, resumeExport)));
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 = _chunkECKYFH5Qcjs.__fictUseLexicalScope; exports.cleanupEventListeners = cleanupEventListeners; exports.installResumableLoader = installResumableLoader; exports.resetHydratedScopes = resetHydratedScopes; exports.resetPrefetchedUrls = resetPrefetchedUrls; exports.waitForPendingHandlers = waitForPendingHandlers;
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
@@ -8,7 +8,7 @@ import {
8
8
  __fictMergeSSRState,
9
9
  __fictSetSSRState,
10
10
  __fictUseLexicalScope
11
- } from "./chunk-CFAWL76V.js";
11
+ } from "./chunk-OKPQWORE.js";
12
12
 
13
13
  // src/loader.ts
14
14
  function resolveModuleUrl(url) {
@@ -1,5 +1,5 @@
1
1
  import { M as MemoOptions } from './signal-Z4KkDk9h.js';
2
- import { F as FictNode, R as DOMElement } from './binding-CQUGLLBI.js';
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-BlABuUiG.cjs';
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>;
@@ -1,4 +1,4 @@
1
- import { M as MaybeReactive } from './binding-CQUGLLBI.js';
1
+ import { M as MaybeReactive } from './binding-BfzY9rae.js';
2
2
 
3
3
  interface ReactiveScope {
4
4
  run<T>(fn: () => T): T;
@@ -1,4 +1,4 @@
1
- import { M as MaybeReactive } from './binding-BlABuUiG.cjs';
1
+ import { M as MaybeReactive } from './binding-CDR2ERoq.cjs';
2
2
 
3
3
  interface ReactiveScope {
4
4
  run<T>(fn: () => T): T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fictjs/runtime",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "Fict reactive runtime",
5
5
  "publishConfig": {
6
6
  "access": "public",