@fictjs/runtime 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/advanced.cjs +10 -8
  2. package/dist/advanced.cjs.map +1 -1
  3. package/dist/advanced.d.cts +4 -3
  4. package/dist/advanced.d.ts +4 -3
  5. package/dist/advanced.js +10 -8
  6. package/dist/advanced.js.map +1 -1
  7. package/dist/{chunk-TWELIZRY.js → chunk-5AA7HP4S.js} +5 -3
  8. package/dist/{chunk-TWELIZRY.js.map → chunk-5AA7HP4S.js.map} +1 -1
  9. package/dist/chunk-6SOPF5LZ.cjs +2363 -0
  10. package/dist/chunk-6SOPF5LZ.cjs.map +1 -0
  11. package/dist/{chunk-SO6X7G5S.js → chunk-BQG7VEBY.js} +501 -1880
  12. package/dist/chunk-BQG7VEBY.js.map +1 -0
  13. package/dist/chunk-FKDMDAUR.js +2363 -0
  14. package/dist/chunk-FKDMDAUR.js.map +1 -0
  15. package/dist/{chunk-L4DIV3RC.cjs → chunk-GHUV2FLD.cjs} +9 -7
  16. package/dist/chunk-GHUV2FLD.cjs.map +1 -0
  17. package/dist/{chunk-XLIZJMMJ.js → chunk-KKKYW54Z.js} +8 -6
  18. package/dist/{chunk-XLIZJMMJ.js.map → chunk-KKKYW54Z.js.map} +1 -1
  19. package/dist/{chunk-M2TSXZ4C.cjs → chunk-KYLNC4CD.cjs} +18 -16
  20. package/dist/chunk-KYLNC4CD.cjs.map +1 -0
  21. package/dist/chunk-TKWN42TA.cjs +2259 -0
  22. package/dist/chunk-TKWN42TA.cjs.map +1 -0
  23. package/dist/{context-B25xyQrJ.d.cts → context-CTBE00S_.d.cts} +1 -1
  24. package/dist/{context-CGdP7_Jb.d.ts → context-lkLhbkFJ.d.ts} +1 -1
  25. package/dist/{effect-D6kaLM2-.d.cts → effect-BpSNEJJz.d.cts} +7 -67
  26. package/dist/{effect-D6kaLM2-.d.ts → effect-BpSNEJJz.d.ts} +7 -67
  27. package/dist/index.cjs +40 -38
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +5 -4
  30. package/dist/index.d.ts +5 -4
  31. package/dist/index.dev.js +92 -4
  32. package/dist/index.dev.js.map +1 -1
  33. package/dist/index.js +19 -17
  34. package/dist/index.js.map +1 -1
  35. package/dist/internal.cjs +189 -202
  36. package/dist/internal.cjs.map +1 -1
  37. package/dist/internal.d.cts +13 -23
  38. package/dist/internal.d.ts +13 -23
  39. package/dist/internal.js +195 -208
  40. package/dist/internal.js.map +1 -1
  41. package/dist/loader.cjs +280 -0
  42. package/dist/loader.cjs.map +1 -0
  43. package/dist/loader.d.cts +57 -0
  44. package/dist/loader.d.ts +57 -0
  45. package/dist/loader.js +280 -0
  46. package/dist/loader.js.map +1 -0
  47. package/dist/{props-BIfromL0.d.cts → props-XTHYD19o.d.cts} +13 -2
  48. package/dist/{props-BEgIVMRx.d.ts → props-x-HbI-jX.d.ts} +13 -2
  49. package/dist/resume-BrAkmSTY.d.cts +79 -0
  50. package/dist/resume-Dx8_l72o.d.ts +79 -0
  51. package/dist/{scope-CzNkn587.d.ts → scope-CdbGmsFf.d.ts} +1 -1
  52. package/dist/{scope-Cx_3CjIZ.d.cts → scope-DfcP9I-A.d.cts} +1 -1
  53. package/dist/signal-C4ISF17w.d.cts +66 -0
  54. package/dist/signal-C4ISF17w.d.ts +66 -0
  55. package/package.json +8 -3
  56. package/src/binding.ts +254 -5
  57. package/src/dom.ts +103 -5
  58. package/src/hooks.ts +15 -2
  59. package/src/hydration.ts +75 -0
  60. package/src/internal.ts +34 -2
  61. package/src/list-helpers.ts +113 -12
  62. package/src/loader.ts +437 -0
  63. package/src/node-ops.ts +65 -0
  64. package/src/resume.ts +517 -0
  65. package/src/store.ts +8 -0
  66. package/dist/chunk-ID3WBWNO.cjs +0 -3638
  67. package/dist/chunk-ID3WBWNO.cjs.map +0 -1
  68. package/dist/chunk-L4DIV3RC.cjs.map +0 -1
  69. package/dist/chunk-M2TSXZ4C.cjs.map +0 -1
  70. package/dist/chunk-SO6X7G5S.js.map +0 -1
package/dist/internal.js CHANGED
@@ -1,31 +1,13 @@
1
1
  import {
2
2
  runInScope
3
- } from "./chunk-TWELIZRY.js";
3
+ } from "./chunk-5AA7HP4S.js";
4
4
  import {
5
- Aliases,
6
- BooleanAttributes,
7
- ChildProperties,
8
- DelegatedEvents,
9
5
  Fragment,
10
- Properties,
11
- SVGElements,
12
- SVGNamespace,
13
- UnitlessStyles,
14
- __fictPopContext,
15
6
  __fictProp,
16
7
  __fictPropsRest,
17
- __fictPushContext,
18
- __fictRender,
19
- __fictResetContext,
20
- __fictUseContext,
21
- __fictUseEffect,
22
- __fictUseMemo,
23
- __fictUseSignal,
24
- __resetReactiveState,
25
8
  addEventListener,
26
9
  assign,
27
10
  batch,
28
- batch2,
29
11
  bindAttribute,
30
12
  bindClass,
31
13
  bindEvent,
@@ -37,194 +19,90 @@ import {
37
19
  classList,
38
20
  clearDelegatedEvents,
39
21
  createConditional,
40
- createEffect,
41
22
  createElement,
42
- createMemo,
43
23
  createPortal,
44
24
  createPropsProxy,
25
+ delegateEvents,
26
+ getSlotEnd,
27
+ hydrateComponent,
28
+ insert,
29
+ insertBetween,
30
+ insertNodesBefore,
31
+ isHydratingActive,
32
+ isReactive,
33
+ keyed,
34
+ mergeProps,
35
+ prop,
36
+ removeNodes,
37
+ render,
38
+ resolvePath,
39
+ spread,
40
+ template,
41
+ toNodeArray,
42
+ unwrap,
43
+ withHydrationRange
44
+ } from "./chunk-BQG7VEBY.js";
45
+ import {
46
+ Aliases,
47
+ BooleanAttributes,
48
+ ChildProperties,
49
+ DelegatedEvents,
50
+ Properties,
51
+ SVGElements,
52
+ SVGNamespace,
53
+ UnitlessStyles,
54
+ __fictDisableResumable,
55
+ __fictDisableSSR,
56
+ __fictEnableResumable,
57
+ __fictEnableSSR,
58
+ __fictEnsureScope,
59
+ __fictEnterHydration,
60
+ __fictExitHydration,
61
+ __fictGetResume,
62
+ __fictGetSSRScope,
63
+ __fictGetScopeProps,
64
+ __fictGetScopeRegistry,
65
+ __fictIsHydrating,
66
+ __fictIsResumable,
67
+ __fictIsSSR,
68
+ __fictPopContext,
69
+ __fictPrepareContext,
70
+ __fictPushContext,
71
+ __fictQrl,
72
+ __fictRegisterResume,
73
+ __fictRegisterScope,
74
+ __fictRender,
75
+ __fictResetContext,
76
+ __fictSerializeSSRState,
77
+ __fictSetSSRState,
78
+ __fictUseContext,
79
+ __fictUseEffect,
80
+ __fictUseLexicalScope,
81
+ __fictUseMemo,
82
+ __fictUseSignal,
83
+ __resetReactiveState,
84
+ createEffect,
85
+ createMemo,
45
86
  createRenderEffect,
46
87
  createRootContext,
47
88
  createSelector,
48
- delegateEvents,
89
+ createStore,
90
+ deserializeValue,
49
91
  destroyRoot,
50
92
  effectScope,
51
93
  flush,
52
94
  flushOnMount,
53
95
  getCurrentRoot,
54
96
  getPropAlias,
55
- insert,
56
- insertNodesBefore,
57
- isReactive,
58
- keyed,
59
- mergeProps,
97
+ isStoreProxy,
60
98
  onDestroy,
61
99
  popRoot,
62
- prop,
63
100
  pushRoot,
64
- removeNodes,
101
+ serializeValue,
65
102
  setActiveSub,
66
103
  signal,
67
- spread,
68
- template,
69
- toNodeArray,
70
- unwrap
71
- } from "./chunk-SO6X7G5S.js";
72
-
73
- // src/store.ts
74
- var PROXY = Symbol("fict:store-proxy");
75
- var TARGET = Symbol("fict:store-target");
76
- var ITERATE_KEY = Symbol("fict:iterate");
77
- function createStore(initialValue) {
78
- const unwrapped = unwrap2(initialValue);
79
- const wrapped = wrap(unwrapped);
80
- function setStore(fn) {
81
- batch(() => {
82
- const result = fn(wrapped);
83
- if (result !== void 0) {
84
- reconcile(wrapped, result);
85
- }
86
- });
87
- }
88
- return [wrapped, setStore];
89
- }
90
- var proxyCache = /* @__PURE__ */ new WeakMap();
91
- var signalCache = /* @__PURE__ */ new WeakMap();
92
- function wrap(value) {
93
- if (value === null || typeof value !== "object") return value;
94
- if (Reflect.get(value, PROXY)) return value;
95
- if (proxyCache.has(value)) return proxyCache.get(value);
96
- const handler = {
97
- get(target, prop2, receiver) {
98
- if (prop2 === PROXY) return true;
99
- if (prop2 === TARGET) return target;
100
- const value2 = Reflect.get(target, prop2, receiver);
101
- track(target, prop2);
102
- return wrap(value2);
103
- },
104
- has(target, prop2) {
105
- const result = Reflect.has(target, prop2);
106
- track(target, prop2);
107
- return result;
108
- },
109
- ownKeys(target) {
110
- track(target, ITERATE_KEY);
111
- return Reflect.ownKeys(target);
112
- },
113
- getOwnPropertyDescriptor(target, prop2) {
114
- track(target, prop2);
115
- return Reflect.getOwnPropertyDescriptor(target, prop2);
116
- },
117
- set(target, prop2, value2, receiver) {
118
- if (prop2 === PROXY || prop2 === TARGET) return false;
119
- const isArrayLength = Array.isArray(target) && prop2 === "length";
120
- const oldLength = isArrayLength ? target.length : void 0;
121
- const hadKey = Object.prototype.hasOwnProperty.call(target, prop2);
122
- const oldValue = Reflect.get(target, prop2, receiver);
123
- if (oldValue === value2) return true;
124
- const result = Reflect.set(target, prop2, value2, receiver);
125
- if (result) {
126
- trigger(target, prop2);
127
- if (!hadKey) {
128
- trigger(target, ITERATE_KEY);
129
- }
130
- if (isArrayLength) {
131
- const nextLength = target.length;
132
- if (typeof oldLength === "number" && nextLength < oldLength) {
133
- const signals = signalCache.get(target);
134
- if (signals) {
135
- for (const key of signals.keys()) {
136
- if (typeof key !== "string") continue;
137
- const index = Number(key);
138
- if (!Number.isInteger(index) || String(index) !== key) continue;
139
- if (index >= nextLength && index < oldLength) {
140
- trigger(target, key);
141
- }
142
- }
143
- }
144
- }
145
- trigger(target, ITERATE_KEY);
146
- }
147
- }
148
- return result;
149
- },
150
- deleteProperty(target, prop2) {
151
- const hadKey = Object.prototype.hasOwnProperty.call(target, prop2);
152
- const result = Reflect.deleteProperty(target, prop2);
153
- if (result) {
154
- trigger(target, prop2);
155
- if (hadKey) {
156
- trigger(target, ITERATE_KEY);
157
- }
158
- }
159
- return result;
160
- }
161
- };
162
- const proxy = new Proxy(value, handler);
163
- proxyCache.set(value, proxy);
164
- return proxy;
165
- }
166
- function unwrap2(value) {
167
- if (value && typeof value === "object" && Reflect.get(value, PROXY)) {
168
- return Reflect.get(value, TARGET);
169
- }
170
- return value;
171
- }
172
- function track(target, prop2) {
173
- let signals = signalCache.get(target);
174
- if (!signals) {
175
- signals = /* @__PURE__ */ new Map();
176
- signalCache.set(target, signals);
177
- }
178
- let s = signals.get(prop2);
179
- if (!s) {
180
- const initial = prop2 === ITERATE_KEY ? Reflect.ownKeys(target).length : getLastValue(target, prop2);
181
- s = signal(initial);
182
- signals.set(prop2, s);
183
- }
184
- s();
185
- }
186
- function trigger(target, prop2) {
187
- const signals = signalCache.get(target);
188
- if (signals) {
189
- const s = signals.get(prop2);
190
- if (s) {
191
- if (prop2 === ITERATE_KEY) {
192
- s(Reflect.ownKeys(target).length);
193
- } else {
194
- s(getLastValue(target, prop2));
195
- }
196
- }
197
- }
198
- }
199
- function getLastValue(target, prop2) {
200
- return Reflect.get(target, prop2);
201
- }
202
- function reconcile(target, value) {
203
- if (target === value) return;
204
- if (value === null || typeof value !== "object") {
205
- throw new Error(
206
- `[Fict] Cannot replace store with primitive value: ${String(
207
- value
208
- )}. setStore should return an object/array to merge.`
209
- );
210
- }
211
- const realTarget = unwrap2(target);
212
- const realValue = unwrap2(value);
213
- const keys = /* @__PURE__ */ new Set([...Object.keys(realTarget), ...Object.keys(realValue)]);
214
- for (const key of keys) {
215
- const rTarget = realTarget;
216
- const rValue = realValue;
217
- if (rValue[key] === void 0 && rTarget[key] !== void 0) {
218
- delete target[key];
219
- } else if (rTarget[key] !== rValue[key]) {
220
- ;
221
- target[key] = rValue[key];
222
- }
223
- }
224
- if (Array.isArray(target) && Array.isArray(realValue) && target.length !== realValue.length) {
225
- target.length = realValue.length;
226
- }
227
- }
104
+ unwrapStore
105
+ } from "./chunk-FKDMDAUR.js";
228
106
 
229
107
  // src/reconcile.ts
230
108
  function reconcileArrays(parentNode, a, b) {
@@ -353,21 +231,21 @@ var MAX_SAFE_VERSION = 9007199254740991;
353
231
  function createVersionedSignalAccessor(initialValue) {
354
232
  let current = initialValue;
355
233
  let version = 0;
356
- const track2 = signal(version);
234
+ const track = signal(version);
357
235
  function accessor(value) {
358
236
  if (arguments.length === 0) {
359
- track2();
237
+ track();
360
238
  return current;
361
239
  }
362
240
  current = value;
363
241
  version = version >= MAX_SAFE_VERSION ? 1 : version + 1;
364
- track2(version);
242
+ track(version);
365
243
  }
366
244
  return accessor;
367
245
  }
368
- function createKeyedListContainer() {
369
- const startMarker = document.createComment("fict:list:start");
370
- const endMarker = document.createComment("fict:list:end");
246
+ function createKeyedListContainer(startOverride, endOverride) {
247
+ const startMarker = startOverride ?? document.createComment("fict:list:start");
248
+ const endMarker = endOverride ?? document.createComment("fict:list:end");
371
249
  const dispose = () => {
372
250
  for (const block of container.blocks.values()) {
373
251
  destroyRoot(block.root);
@@ -407,7 +285,7 @@ function createKeyedListContainer() {
407
285
  };
408
286
  return container;
409
287
  }
410
- function createKeyedBlock(key, item, index, render, needsIndex = true, hostRoot) {
288
+ function createKeyedBlock(key, item, index, render2, needsIndex = true, hostRoot) {
411
289
  const itemSig = createVersionedSignalAccessor(item);
412
290
  const indexSig = needsIndex ? signal(index) : ((next) => {
413
291
  if (arguments.length === 0) return index;
@@ -421,7 +299,7 @@ function createKeyedBlock(key, item, index, render, needsIndex = true, hostRoot)
421
299
  const prevSub = setActiveSub(void 0);
422
300
  try {
423
301
  scopeDispose = effectScope(() => {
424
- const rendered = render(itemSig, indexSig, key);
302
+ const rendered = render2(itemSig, indexSig, key);
425
303
  if (rendered instanceof Node || Array.isArray(rendered) && rendered.every((n) => n instanceof Node)) {
426
304
  nodes = toNodeArray(rendered);
427
305
  } else {
@@ -534,20 +412,41 @@ function reorderByLIS(parent, endMarker, prev, next) {
534
412
  }
535
413
  return moved;
536
414
  }
537
- function createKeyedList(getItems, keyFn, renderItem, needsIndex) {
415
+ function createKeyedList(getItems, keyFn, renderItem, needsIndex, startMarker, endMarker) {
538
416
  const resolvedNeedsIndex = arguments.length >= 4 ? !!needsIndex : renderItem.length > 1;
539
- return createFineGrainedKeyedList(getItems, keyFn, renderItem, resolvedNeedsIndex);
417
+ return createFineGrainedKeyedList(
418
+ getItems,
419
+ keyFn,
420
+ renderItem,
421
+ resolvedNeedsIndex,
422
+ startMarker,
423
+ endMarker
424
+ );
540
425
  }
541
- function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
542
- const container = createKeyedListContainer();
426
+ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex, startOverride, endOverride) {
427
+ const container = createKeyedListContainer(startOverride, endOverride);
543
428
  const hostRoot = getCurrentRoot();
544
- const fragment = document.createDocumentFragment();
545
- fragment.append(container.startMarker, container.endMarker);
429
+ const useProvided = !!(startOverride && endOverride);
430
+ const fragment = useProvided ? container.startMarker : document.createDocumentFragment();
431
+ if (!useProvided) {
432
+ ;
433
+ fragment.append(container.startMarker, container.endMarker);
434
+ }
546
435
  let disposed = false;
547
436
  let effectDispose;
548
437
  let connectObserver = null;
549
438
  let effectStarted = false;
550
439
  let startScheduled = false;
440
+ let initialHydrating = __fictIsHydrating();
441
+ const collectBetween = () => {
442
+ const nodes = [];
443
+ let cursor = container.startMarker.nextSibling;
444
+ while (cursor && cursor !== container.endMarker) {
445
+ nodes.push(cursor);
446
+ cursor = cursor.nextSibling;
447
+ }
448
+ return nodes;
449
+ };
551
450
  const getConnectedParent = () => {
552
451
  const endParent = container.endMarker.parentNode;
553
452
  const startParent = container.startMarker.parentNode;
@@ -560,15 +459,72 @@ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
560
459
  };
561
460
  const performDiff = () => {
562
461
  if (disposed) return;
563
- const parent = getConnectedParent();
462
+ const isSSR = __fictIsSSR();
463
+ const parent = isSSR ? container.startMarker.parentNode : getConnectedParent();
564
464
  if (!parent) return;
565
- batch2(() => {
465
+ batch(() => {
566
466
  const oldBlocks = container.blocks;
567
467
  const newBlocks = container.nextBlocks;
568
468
  const prevOrderedBlocks = container.orderedBlocks;
569
469
  const nextOrderedBlocks = container.nextOrderedBlocks;
570
470
  const orderedIndexByKey = container.orderedIndexByKey;
571
471
  const newItems = getItems();
472
+ if (initialHydrating && isHydratingActive()) {
473
+ initialHydrating = false;
474
+ newBlocks.clear();
475
+ nextOrderedBlocks.length = 0;
476
+ orderedIndexByKey.clear();
477
+ if (newItems.length === 0) {
478
+ oldBlocks.clear();
479
+ prevOrderedBlocks.length = 0;
480
+ container.currentNodes = [container.startMarker, container.endMarker];
481
+ container.nextNodes.length = 0;
482
+ return;
483
+ }
484
+ const createdBlocks2 = [];
485
+ withHydrationRange(
486
+ container.startMarker.nextSibling,
487
+ container.endMarker,
488
+ parent.ownerDocument ?? document,
489
+ () => {
490
+ for (let index = 0; index < newItems.length; index++) {
491
+ const item = newItems[index];
492
+ const key = keyFn(item, index);
493
+ if (newBlocks.has(key)) {
494
+ if (isDev) {
495
+ console.warn(
496
+ `[fict] Duplicate key "${String(key)}" detected in list hydration. Each item should have a unique key.`
497
+ );
498
+ }
499
+ const existing = newBlocks.get(key);
500
+ if (existing) {
501
+ destroyRoot(existing.root);
502
+ removeNodes(existing.nodes);
503
+ }
504
+ }
505
+ const block = createKeyedBlock(key, item, index, renderItem, needsIndex, hostRoot);
506
+ createdBlocks2.push(block);
507
+ newBlocks.set(key, block);
508
+ orderedIndexByKey.set(key, nextOrderedBlocks.length);
509
+ nextOrderedBlocks.push(block);
510
+ }
511
+ }
512
+ );
513
+ container.blocks = newBlocks;
514
+ container.nextBlocks = oldBlocks;
515
+ container.orderedBlocks = nextOrderedBlocks;
516
+ container.nextOrderedBlocks = prevOrderedBlocks;
517
+ oldBlocks.clear();
518
+ prevOrderedBlocks.length = 0;
519
+ container.currentNodes = [container.startMarker, ...collectBetween(), container.endMarker];
520
+ container.nextNodes.length = 0;
521
+ for (const block of createdBlocks2) {
522
+ if (newBlocks.get(block.key) === block) {
523
+ flushOnMount(block.root);
524
+ }
525
+ }
526
+ return;
527
+ }
572
528
  if (newItems.length === 0) {
573
529
  if (oldBlocks.size > 0) {
574
530
  for (const block of oldBlocks.values()) {
@@ -798,7 +754,8 @@ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
798
754
  };
799
755
  const ensureEffectStarted = () => {
800
756
  if (disposed || effectStarted) return effectStarted;
801
- const parent = getConnectedParent();
757
+ const isSSR = __fictIsSSR();
758
+ const parent = isSSR ? container.startMarker.parentNode : getConnectedParent();
802
759
  if (!parent) return false;
803
760
  const start = () => {
804
761
  effectDispose = createRenderEffect(performDiff);
@@ -880,14 +837,35 @@ export {
880
837
  SVGElements,
881
838
  SVGNamespace,
882
839
  UnitlessStyles,
840
+ __fictDisableResumable,
841
+ __fictDisableSSR,
842
+ __fictEnableResumable,
843
+ __fictEnableSSR,
844
+ __fictEnsureScope,
845
+ __fictEnterHydration,
846
+ __fictExitHydration,
847
+ __fictGetResume,
848
+ __fictGetSSRScope,
849
+ __fictGetScopeProps,
850
+ __fictGetScopeRegistry,
851
+ __fictIsHydrating,
852
+ __fictIsResumable,
853
+ __fictIsSSR,
883
854
  __fictPopContext,
855
+ __fictPrepareContext,
884
856
  __fictProp,
885
857
  __fictPropsRest,
886
858
  __fictPushContext,
859
+ __fictQrl,
860
+ __fictRegisterResume,
861
+ __fictRegisterScope,
887
862
  __fictRender,
888
863
  __fictResetContext,
864
+ __fictSerializeSSRState,
865
+ __fictSetSSRState,
889
866
  __fictUseContext,
890
867
  __fictUseEffect,
868
+ __fictUseLexicalScope,
891
869
  __fictUseMemo,
892
870
  __fictUseSignal,
893
871
  __resetReactiveState,
@@ -915,11 +893,16 @@ export {
915
893
  signal as createSignal,
916
894
  createStore,
917
895
  delegateEvents,
896
+ deserializeValue,
918
897
  getPropAlias,
898
+ getSlotEnd,
899
+ hydrateComponent,
919
900
  insert,
901
+ insertBetween,
920
902
  insertNodesBefore,
921
903
  isNodeBetweenMarkers,
922
904
  isReactive,
905
+ isStoreProxy,
923
906
  keyed,
924
907
  mergeProps,
925
908
  moveNodesBefore,
@@ -927,10 +910,14 @@ export {
927
910
  prop,
928
911
  reconcileArrays,
929
912
  removeNodes,
913
+ render,
914
+ resolvePath,
930
915
  runInScope,
916
+ serializeValue,
931
917
  spread,
932
918
  template,
933
919
  toNodeArray,
934
- unwrap
920
+ unwrap,
921
+ unwrapStore
935
922
  };
936
923
  //# sourceMappingURL=internal.js.map