@vobs/runtime 1.2.1 → 1.3.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 (74) hide show
  1. package/dist/async-boundary.cjs +73 -374
  2. package/dist/async-boundary.cjs.map +1 -1
  3. package/dist/async-boundary.js +44 -367
  4. package/dist/async-boundary.js.map +1 -1
  5. package/dist/bind.cjs +101 -234
  6. package/dist/bind.cjs.map +1 -1
  7. package/dist/bind.js +72 -227
  8. package/dist/bind.js.map +1 -1
  9. package/dist/boundary.cjs +67 -369
  10. package/dist/boundary.cjs.map +1 -1
  11. package/dist/boundary.js +42 -366
  12. package/dist/boundary.js.map +1 -1
  13. package/dist/debug.cjs +41 -12
  14. package/dist/debug.cjs.map +1 -1
  15. package/dist/debug.js +10 -3
  16. package/dist/debug.js.map +1 -1
  17. package/dist/dynamic.cjs +76 -378
  18. package/dist/dynamic.cjs.map +1 -1
  19. package/dist/dynamic.js +43 -367
  20. package/dist/dynamic.js.map +1 -1
  21. package/dist/error-boundary.cjs +77 -372
  22. package/dist/error-boundary.cjs.map +1 -1
  23. package/dist/error-boundary.d.cts +7 -3
  24. package/dist/error-boundary.d.ts +7 -3
  25. package/dist/error-boundary.js +48 -367
  26. package/dist/error-boundary.js.map +1 -1
  27. package/dist/error.cjs +35 -9
  28. package/dist/error.cjs.map +1 -1
  29. package/dist/error.js +7 -3
  30. package/dist/error.js.map +1 -1
  31. package/dist/fragment.cjs +44 -133
  32. package/dist/fragment.cjs.map +1 -1
  33. package/dist/fragment.js +19 -130
  34. package/dist/fragment.js.map +1 -1
  35. package/dist/hmr.cjs +61 -22
  36. package/dist/hmr.cjs.map +1 -1
  37. package/dist/hmr.d.cts +7 -1
  38. package/dist/hmr.d.ts +7 -1
  39. package/dist/hmr.js +19 -3
  40. package/dist/hmr.js.map +1 -1
  41. package/dist/index.cjs +230 -465
  42. package/dist/index.cjs.map +1 -1
  43. package/dist/index.d.cts +1 -1
  44. package/dist/index.d.ts +1 -1
  45. package/dist/index.js +128 -388
  46. package/dist/index.js.map +1 -1
  47. package/dist/ops.cjs +147 -244
  48. package/dist/ops.cjs.map +1 -1
  49. package/dist/ops.js +97 -216
  50. package/dist/ops.js.map +1 -1
  51. package/dist/profiler.cjs +69 -320
  52. package/dist/profiler.cjs.map +1 -1
  53. package/dist/profiler.js +40 -315
  54. package/dist/profiler.js.map +1 -1
  55. package/dist/ref.cjs +33 -131
  56. package/dist/ref.cjs.map +1 -1
  57. package/dist/ref.js +10 -130
  58. package/dist/ref.js.map +1 -1
  59. package/dist/renderer.cjs +18 -2
  60. package/dist/renderer.cjs.map +1 -1
  61. package/dist/renderer.js +0 -2
  62. package/dist/renderer.js.map +1 -1
  63. package/dist/template.cjs +29 -6
  64. package/dist/template.cjs.map +1 -1
  65. package/dist/template.js +4 -3
  66. package/dist/template.js.map +1 -1
  67. package/package.json +2 -2
  68. package/src/dynamic.test.ts +65 -1
  69. package/src/error-boundary.ts +13 -3
  70. package/src/hmr.test.ts +17 -0
  71. package/src/hmr.ts +14 -0
  72. package/src/index.ts +1 -0
  73. package/src/ops.ts +38 -3
  74. package/src/props.test.ts +32 -1
package/dist/index.js CHANGED
@@ -80,365 +80,11 @@ function describeDebugNode(node) {
80
80
  }
81
81
  __name(describeDebugNode, "describeDebugNode");
82
82
 
83
- // packages/reactivity/src/debug.ts
84
- var activeDebugHooks = null;
85
- var signalNames = /* @__PURE__ */ new WeakMap();
86
- function hasDebugHooks() {
87
- return activeDebugHooks !== null;
88
- }
89
- __name(hasDebugHooks, "hasDebugHooks");
90
- function setSignalDebugName(signal, name) {
91
- signalNames.set(signal, name);
92
- invokeDebug("signalNamed", signal, name);
93
- }
94
- __name(setSignalDebugName, "setSignalDebugName");
95
- function invokeDebug(name, ...args) {
96
- return;
97
- }
98
- __name(invokeDebug, "invokeDebug");
99
-
100
- // packages/reactivity/src/owner.ts
101
- var currentOwner = null;
102
- var nextOwnerId = 1;
103
- var ownerNames = /* @__PURE__ */ new WeakMap();
104
- function createOwner() {
105
- const parent = currentOwner;
106
- let disposed = parent?.disposed ?? false;
107
- const children = [];
108
- const cleanups = [];
109
- const errorHandlers = /* @__PURE__ */ new Set();
110
- const owner = {
111
- id: `owner-${nextOwnerId++}`,
112
- parent,
113
- children,
114
- depth: (parent?.depth ?? -1) + 1,
115
- get disposed() {
116
- return disposed;
117
- },
118
- run(fn) {
119
- if (disposed) throw new Error("Vobs: \u5DF2\u9500\u6BC1\u7684 Owner \u4E0D\u80FD\u7EE7\u7EED\u8FD0\u884C");
120
- const previous = currentOwner;
121
- currentOwner = owner;
122
- try {
123
- return fn();
124
- } finally {
125
- currentOwner = previous;
126
- }
127
- },
128
- addCleanup(cleanup) {
129
- if (disposed) {
130
- cleanup();
131
- return;
132
- }
133
- cleanups.push(cleanup);
134
- },
135
- onDispose(cleanup) {
136
- owner.addCleanup(cleanup);
137
- },
138
- onError(handler) {
139
- errorHandlers.add(handler);
140
- const remove = /* @__PURE__ */ __name(() => errorHandlers.delete(handler), "remove");
141
- owner.addCleanup(remove);
142
- return remove;
143
- },
144
- handleError(error) {
145
- for (const handler of [...errorHandlers].reverse()) {
146
- try {
147
- handler(error);
148
- return true;
149
- } catch (handlerError) {
150
- return parent?.handleError(handlerError) ?? false;
151
- }
152
- }
153
- return parent?.handleError(error) ?? false;
154
- },
155
- dispose() {
156
- if (disposed) return;
157
- disposed = true;
158
- for (const child of [...children]) child.dispose();
159
- children.length = 0;
160
- let firstError;
161
- for (let index = cleanups.length - 1; index >= 0; index--) {
162
- try {
163
- cleanups[index]();
164
- } catch (error) {
165
- firstError ?? (firstError = error);
166
- }
167
- }
168
- cleanups.length = 0;
169
- if (parent) {
170
- const index = parent.children.indexOf(owner);
171
- if (index >= 0) parent.children.splice(index, 1);
172
- }
173
- if (firstError) throw firstError;
174
- }
175
- };
176
- if (parent && !parent.disposed) parent.children.push(owner);
177
- return owner;
178
- }
179
- __name(createOwner, "createOwner");
180
- function setOwnerDebugName(owner, name) {
181
- ownerNames.set(owner, name);
182
- }
183
- __name(setOwnerDebugName, "setOwnerDebugName");
184
- function getCurrentOwner() {
185
- return currentOwner;
186
- }
187
- __name(getCurrentOwner, "getCurrentOwner");
188
-
189
- // packages/reactivity/src/signal.ts
190
- var currentSubscriber = null;
191
- function getCurrentSubscriber() {
192
- return currentSubscriber;
193
- }
194
- __name(getCurrentSubscriber, "getCurrentSubscriber");
195
- function setCurrentSubscriber(subscriber) {
196
- currentSubscriber = subscriber;
197
- }
198
- __name(setCurrentSubscriber, "setCurrentSubscriber");
199
- function trackDependency(dependency) {
200
- if (!currentSubscriber || currentSubscriber.disposed) return;
201
- !currentSubscriber.dependencies.has(dependency);
202
- currentSubscriber.dependencies.add(dependency);
203
- }
204
- __name(trackDependency, "trackDependency");
205
- function state(initialValue, debugName) {
206
- let value = initialValue;
207
- let disposed = false;
208
- const subscribers = /* @__PURE__ */ new Set();
209
- const signalInstance = {
210
- get value() {
211
- const subscriber = getCurrentSubscriber();
212
- if (subscriber && !subscriber.disposed) {
213
- subscribers.add(subscriber);
214
- trackDependency(signalInstance);
215
- }
216
- return value;
217
- },
218
- set value(nextValue) {
219
- if (disposed || Object.is(value, nextValue)) return;
220
- value = nextValue;
221
- for (const subscriber of [...subscribers]) subscriber.notify();
222
- },
223
- unsubscribe(subscriber) {
224
- subscribers.delete(subscriber);
225
- },
226
- // 与 `.value =` 赋值同一条路径:判等短路、debug hook、notify 全部一致。
227
- // 以闭包实现,可安全地作为回调直接传递(无 this 绑定问题)。
228
- set(next) {
229
- signalInstance.value = next;
230
- },
231
- dispose() {
232
- if (disposed) return;
233
- disposed = true;
234
- subscribers.clear();
235
- }
236
- };
237
- const owner = getCurrentOwner();
238
- owner?.addCleanup(signalInstance.dispose);
239
- if (debugName?.trim()) setSignalDebugName(signalInstance, debugName.trim());
240
- return signalInstance;
241
- }
242
- __name(state, "state");
243
-
244
- // packages/reactivity/src/scheduler.ts
245
- var _Scheduler = class _Scheduler {
246
- constructor() {
247
- this.dirtyEffects = /* @__PURE__ */ new Set();
248
- this.lowPriorityEffects = /* @__PURE__ */ new Set();
249
- // flush 不可重入(flushing 标志保证),缓冲数组可在轮次间安全复用,避免每轮分配。
250
- this.normalBuffer = [];
251
- this.lowBuffer = [];
252
- this.flushing = false;
253
- this.scheduled = false;
254
- this.batchDepth = 0;
255
- }
256
- schedule(effect2) {
257
- if (effect2.disposed) return;
258
- this.dirtyEffects.add(effect2);
259
- this.lowPriorityEffects.delete(effect2);
260
- this.ensureScheduled();
261
- }
262
- /** Queue an effect behind normal updates while preserving deterministic order. */
263
- scheduleLow(effect2) {
264
- if (effect2.disposed) return;
265
- if (!this.dirtyEffects.has(effect2)) this.lowPriorityEffects.add(effect2);
266
- this.ensureScheduled();
267
- }
268
- ensureScheduled() {
269
- if (this.batchDepth === 0 && !this.flushing && !this.scheduled) {
270
- this.scheduled = true;
271
- queueMicrotask(() => {
272
- this.scheduled = false;
273
- this.flush();
274
- });
275
- }
276
- }
277
- remove(effect2) {
278
- this.dirtyEffects.delete(effect2);
279
- this.lowPriorityEffects.delete(effect2);
280
- }
281
- batch(fn) {
282
- this.batchDepth++;
283
- try {
284
- return fn();
285
- } finally {
286
- this.batchDepth--;
287
- if (this.batchDepth === 0) this.flush();
288
- }
289
- }
290
- flush() {
291
- if (this.flushing || this.batchDepth > 0) return;
292
- this.flushing = true;
293
- let rounds = 0;
294
- let firstError;
295
- let hasError = false;
296
- try {
297
- while (this.dirtyEffects.size > 0 || this.lowPriorityEffects.size > 0) {
298
- if (++rounds > 100) {
299
- this.dirtyEffects.clear();
300
- this.lowPriorityEffects.clear();
301
- throw new Error("Vobs: \u54CD\u5E94\u5F0F\u66F4\u65B0\u8D85\u8FC7 100 \u8F6E\uFF0C\u53EF\u80FD\u5B58\u5728\u5FAA\u73AF\u4F9D\u8D56");
302
- }
303
- this.collectRunnable(this.dirtyEffects, this.normalBuffer);
304
- this.collectRunnable(this.lowPriorityEffects, this.lowBuffer);
305
- sortEffects(this.normalBuffer);
306
- sortEffects(this.lowBuffer);
307
- for (const effect2 of this.normalBuffer) {
308
- try {
309
- effect2.run();
310
- } catch (error) {
311
- if (!hasError) {
312
- firstError = error;
313
- hasError = true;
314
- }
315
- }
316
- }
317
- for (const effect2 of this.lowBuffer) {
318
- try {
319
- effect2.run();
320
- } catch (error) {
321
- if (!hasError) {
322
- firstError = error;
323
- hasError = true;
324
- }
325
- }
326
- }
327
- this.normalBuffer.length = 0;
328
- this.lowBuffer.length = 0;
329
- }
330
- } finally {
331
- this.normalBuffer.length = 0;
332
- this.lowBuffer.length = 0;
333
- this.flushing = false;
334
- }
335
- if (hasError) throw firstError;
336
- }
337
- /** 收集未 disposed 的 effect 并清空源集合;run() 期间新调度的 effect 留给下一轮。 */
338
- collectRunnable(source, target) {
339
- for (const effect2 of source) {
340
- if (!effect2.disposed) target.push(effect2);
341
- }
342
- source.clear();
343
- }
344
- };
345
- __name(_Scheduler, "Scheduler");
346
- var Scheduler = _Scheduler;
347
- function sortEffects(effects) {
348
- if (effects.length > 1) {
349
- effects.sort((a, b) => b.depth - a.depth || a.order - b.order);
350
- }
351
- }
352
- __name(sortEffects, "sortEffects");
353
- var scheduler = new Scheduler();
83
+ // packages/runtime/src/fragment.ts
84
+ import { getCurrentOwner as getCurrentOwner3 } from "@vobs/reactivity";
354
85
 
355
- // packages/reactivity/src/effect.ts
356
- var nextEffectOrder = 1;
357
- function cleanupDependencies(subscriber) {
358
- for (const dependency of subscriber.dependencies) {
359
- dependency.unsubscribe(subscriber);
360
- }
361
- subscriber.dependencies.clear();
362
- }
363
- __name(cleanupDependencies, "cleanupDependencies");
364
- function effect(callback) {
365
- const owner = getCurrentOwner();
366
- let cleanup;
367
- let dirty = true;
368
- let disposed = false;
369
- const eff = {
370
- order: nextEffectOrder++,
371
- depth: owner?.depth ?? 0,
372
- dependencies: /* @__PURE__ */ new Set(),
373
- get disposed() {
374
- return disposed;
375
- },
376
- notify() {
377
- if (disposed || dirty) return;
378
- dirty = true;
379
- scheduler.schedule(eff);
380
- },
381
- run() {
382
- if (disposed || !dirty) return;
383
- dirty = false;
384
- const previousCleanup = cleanup;
385
- cleanup = void 0;
386
- let cleanupError;
387
- if (previousCleanup) {
388
- try {
389
- previousCleanup();
390
- } catch (error) {
391
- const handled2 = owner?.handleError(error) ?? false;
392
- if (!handled2) cleanupError = error;
393
- }
394
- }
395
- cleanupDependencies(eff);
396
- const previous = getCurrentSubscriber();
397
- setCurrentSubscriber(eff);
398
- let thrown;
399
- let handled = false;
400
- try {
401
- const result = owner ? owner.run(callback) : callback();
402
- cleanup = typeof result === "function" ? result : void 0;
403
- } catch (error) {
404
- thrown = error;
405
- handled = owner?.handleError(error) ?? false;
406
- if (!handled) throw error;
407
- } finally {
408
- setCurrentSubscriber(previous);
409
- }
410
- if (cleanupError && !thrown) throw cleanupError;
411
- },
412
- scheduleLow() {
413
- if (disposed || dirty) return;
414
- dirty = true;
415
- scheduler.scheduleLow(eff);
416
- },
417
- dispose() {
418
- if (disposed) return;
419
- disposed = true;
420
- dirty = false;
421
- scheduler.remove(eff);
422
- const previousCleanup = cleanup;
423
- cleanup = void 0;
424
- let cleanupError;
425
- if (previousCleanup) {
426
- try {
427
- previousCleanup();
428
- } catch (error) {
429
- const handled = owner?.handleError(error) ?? false;
430
- if (!handled) cleanupError = error;
431
- }
432
- }
433
- cleanupDependencies(eff);
434
- if (cleanupError) throw cleanupError;
435
- }
436
- };
437
- owner?.addCleanup(eff.dispose);
438
- eff.run();
439
- return eff;
440
- }
441
- __name(effect, "effect");
86
+ // packages/runtime/src/ops.ts
87
+ import { createOwner, getCurrentOwner as getCurrentOwner2, setOwnerDebugName, untrack } from "@vobs/reactivity";
442
88
 
443
89
  // packages/runtime/src/hmr.ts
444
90
  var globalTarget = globalThis;
@@ -487,25 +133,34 @@ function disposeHmrModule(_moduleId) {
487
133
  }
488
134
  __name(disposeHmrModule, "disposeHmrModule");
489
135
  function createHmrStateStore(moduleId) {
490
- const state2 = getModule(moduleId).state;
136
+ const state4 = getModule(moduleId).state;
491
137
  return {
492
138
  get(key, initial) {
493
- if (!state2.has(key)) state2.set(key, typeof initial === "function" ? initial() : initial);
494
- return state2.get(key);
139
+ if (!state4.has(key)) state4.set(key, typeof initial === "function" ? initial() : initial);
140
+ return state4.get(key);
495
141
  },
496
142
  set(key, value) {
497
- state2.set(key, value);
143
+ state4.set(key, value);
498
144
  },
499
- has: /* @__PURE__ */ __name((key) => state2.has(key), "has"),
145
+ has: /* @__PURE__ */ __name((key) => state4.has(key), "has"),
500
146
  delete: /* @__PURE__ */ __name((key) => {
501
- state2.delete(key);
147
+ state4.delete(key);
502
148
  }, "delete"),
503
149
  clear: /* @__PURE__ */ __name(() => {
504
- state2.clear();
150
+ state4.clear();
505
151
  }, "clear")
506
152
  };
507
153
  }
508
154
  __name(createHmrStateStore, "createHmrStateStore");
155
+ function hmrStateRef(moduleId, key, create) {
156
+ const state4 = getModule(moduleId).state;
157
+ const registryKey = `#state:${key}`;
158
+ if (state4.has(registryKey)) return state4.get(registryKey);
159
+ const value = create();
160
+ state4.set(registryKey, value);
161
+ return value;
162
+ }
163
+ __name(hmrStateRef, "hmrStateRef");
509
164
  function registerHmrInstance(moduleId, instance) {
510
165
  const instances = getModule(moduleId).instances;
511
166
  instances.add(instance);
@@ -533,6 +188,7 @@ function associateHmrInstance(node, instance) {
533
188
  __name(associateHmrInstance, "associateHmrInstance");
534
189
 
535
190
  // packages/runtime/src/ref.ts
191
+ import { getCurrentOwner } from "@vobs/reactivity";
536
192
  function ref(initialValue = null) {
537
193
  return { current: initialValue };
538
194
  }
@@ -645,6 +301,9 @@ __name(setTextContent, "setTextContent");
645
301
  function setProperty(node, key, value) {
646
302
  const previousValue = getRuntimeDebugHooks() ? readDebugValue(() => Reflect.get(node, key)) : void 0;
647
303
  getRenderer().setProperty(node, key, value);
304
+ if (key === "value" && node.tagName === "SELECT") {
305
+ scheduleSelectValueSync(node, value);
306
+ }
648
307
  if (getRuntimeDebugHooks()) {
649
308
  invokeRuntimeDebug("domMutation", {
650
309
  operation: "property",
@@ -656,6 +315,21 @@ function setProperty(node, key, value) {
656
315
  }
657
316
  }
658
317
  __name(setProperty, "setProperty");
318
+ var pendingSelectValues = /* @__PURE__ */ new WeakMap();
319
+ var selectSyncScheduled = /* @__PURE__ */ new WeakSet();
320
+ function scheduleSelectValueSync(node, value) {
321
+ pendingSelectValues.set(node, value);
322
+ if (selectSyncScheduled.has(node)) return;
323
+ selectSyncScheduled.add(node);
324
+ queueMicrotask(() => {
325
+ selectSyncScheduled.delete(node);
326
+ if (!pendingSelectValues.has(node)) return;
327
+ const pending = pendingSelectValues.get(node);
328
+ pendingSelectValues.delete(node);
329
+ getRenderer().setProperty(node, "value", pending);
330
+ });
331
+ }
332
+ __name(scheduleSelectValueSync, "scheduleSelectValueSync");
659
333
  function setAttribute(node, key, value) {
660
334
  const previousValue = getRuntimeDebugHooks() ? readDebugValue(() => typeof node.getAttribute === "function" ? node.getAttribute(key) : void 0) : void 0;
661
335
  getRenderer().setAttribute(node, key, value);
@@ -708,7 +382,7 @@ function formatStyle(value) {
708
382
  __name(formatStyle, "formatStyle");
709
383
  function addEventListener(node, event, handler) {
710
384
  const renderer = getRenderer();
711
- const owner = getCurrentOwner();
385
+ const owner = getCurrentOwner2();
712
386
  let bindings = eventBindings.get(node);
713
387
  if (!bindings) {
714
388
  bindings = /* @__PURE__ */ new Map();
@@ -718,6 +392,7 @@ function addEventListener(node, event, handler) {
718
392
  if (previous && previous.original === handler && previous.owner === owner) return;
719
393
  if (previous) renderer.removeEventListener(node, event, previous.handler);
720
394
  const listener = owner ? (reason) => {
395
+ if (owner.disposed) return;
721
396
  try {
722
397
  owner.run(() => handler(reason));
723
398
  } catch (error) {
@@ -764,7 +439,7 @@ function createComponent(component, props, source) {
764
439
  });
765
440
  let node;
766
441
  try {
767
- node = owner.run(() => component(props));
442
+ node = owner.run(() => untrack(() => component(props)));
768
443
  } catch (error) {
769
444
  owner.dispose();
770
445
  attachSourceLocation(error, source);
@@ -779,7 +454,7 @@ function createComponent(component, props, source) {
779
454
  parent: null,
780
455
  refresh() {
781
456
  const previous = instance.node;
782
- const next = owner.run(() => component(props));
457
+ const next = owner.run(() => untrack(() => component(props)));
783
458
  if (instance.parent && !isVobsFragment(previous) && !isVobsFragment(next)) {
784
459
  getRenderer().insertBefore(instance.parent, next, previous);
785
460
  getRenderer().removeChild(instance.parent, previous);
@@ -860,7 +535,7 @@ function createFragment(factory) {
860
535
  const end = createComment("vobs:fragment:end");
861
536
  let parent = null;
862
537
  let initialized = false;
863
- const owner = getCurrentOwner();
538
+ const owner = getCurrentOwner3();
864
539
  const fragment = {
865
540
  kind: "vobs-fragment",
866
541
  start,
@@ -922,6 +597,7 @@ function moveRange(parent, start, end, anchor) {
922
597
  __name(moveRange, "moveRange");
923
598
 
924
599
  // packages/runtime/src/bind.ts
600
+ import { effect } from "@vobs/reactivity";
925
601
  function readSource(source) {
926
602
  return typeof source === "function" ? source() : source.value;
927
603
  }
@@ -948,11 +624,12 @@ function bindProperty(node, key, source) {
948
624
  __name(bindProperty, "bindProperty");
949
625
 
950
626
  // packages/runtime/src/dynamic.ts
627
+ import { createOwner as createOwner2, effect as effect2, state } from "@vobs/reactivity";
951
628
  function insertDynamic(parent, anchor, factory) {
952
629
  const marker = createComment("vobs:dynamic");
953
630
  insertBefore(parent, marker, anchor);
954
631
  let current = null;
955
- effect(() => {
632
+ effect2(() => {
956
633
  const next = createBlock(factory);
957
634
  if (next === current) return;
958
635
  if (current) removeChild(parent, current);
@@ -966,8 +643,8 @@ function insertDynamicValue(parent, anchor, factory) {
966
643
  insertBefore(parent, marker, anchor);
967
644
  let current = null;
968
645
  let scope = null;
969
- effect(() => {
970
- const nextScope = createOwner();
646
+ effect2(() => {
647
+ const nextScope = createOwner2();
971
648
  const next = nextScope.run(() => normalizeDynamicChild(factory()));
972
649
  if (next === current) {
973
650
  nextScope.dispose();
@@ -1007,7 +684,7 @@ function insertList(parent, anchor, source, renderItem, keyOf) {
1007
684
  insertBefore(parent, marker, anchor);
1008
685
  let entries = [];
1009
686
  const tracksIndex = renderItem.length >= 2;
1010
- effect(() => {
687
+ effect2(() => {
1011
688
  const items = source();
1012
689
  let keys = null;
1013
690
  if (keyOf) {
@@ -1163,13 +840,13 @@ function isPrimitiveItem(item) {
1163
840
  }
1164
841
  __name(isPrimitiveItem, "isPrimitiveItem");
1165
842
  function createListEntry(item, index, key, renderItem) {
1166
- const owner = createOwner();
843
+ const owner = createOwner2();
1167
844
  let itemSignal;
1168
845
  let viewOwner;
1169
846
  let node;
1170
847
  owner.run(() => {
1171
848
  itemSignal = state(item);
1172
- viewOwner = createOwner();
849
+ viewOwner = createOwner2();
1173
850
  node = viewOwner.run(() => renderItem(toReactiveItem(itemSignal, item), index));
1174
851
  });
1175
852
  associateNodeOwner(node, viewOwner);
@@ -1181,7 +858,7 @@ function refreshListEntry(parent, entry, index, renderItem) {
1181
858
  entry.index = index;
1182
859
  const previousView = entry.viewOwner;
1183
860
  entry.owner.run(() => {
1184
- entry.viewOwner = createOwner();
861
+ entry.viewOwner = createOwner2();
1185
862
  entry.node = entry.viewOwner.run(() => renderItem(
1186
863
  toReactiveItem(entry.item, entry.value),
1187
864
  index
@@ -1342,10 +1019,11 @@ function capitalize(value) {
1342
1019
  __name(capitalize, "capitalize");
1343
1020
 
1344
1021
  // packages/runtime/src/boundary.ts
1022
+ import { createOwner as createOwner3, state as state2 } from "@vobs/reactivity";
1345
1023
  function insertBoundary(parent, anchor, options) {
1346
- const boundary = createOwner();
1024
+ const boundary = createOwner3();
1347
1025
  boundary.run(() => {
1348
- const error = state(null);
1026
+ const error = state2(null);
1349
1027
  let fallbackActive = false;
1350
1028
  let lastError = null;
1351
1029
  let initialized = false;
@@ -1410,8 +1088,12 @@ function insertBoundary(parent, anchor, options) {
1410
1088
  __name(insertBoundary, "insertBoundary");
1411
1089
 
1412
1090
  // packages/runtime/src/error-boundary.ts
1091
+ function resolveBoundaryChildren(children) {
1092
+ return typeof children === "function" ? children : () => children;
1093
+ }
1094
+ __name(resolveBoundaryChildren, "resolveBoundaryChildren");
1413
1095
  function insertErrorBoundary(parent, anchor, options) {
1414
- insertBoundary(parent, anchor, options);
1096
+ insertBoundary(parent, anchor, { ...options, children: resolveBoundaryChildren(options.children) });
1415
1097
  }
1416
1098
  __name(insertErrorBoundary, "insertErrorBoundary");
1417
1099
  function ErrorBoundary(props) {
@@ -1420,13 +1102,14 @@ function ErrorBoundary(props) {
1420
1102
  __name(ErrorBoundary, "ErrorBoundary");
1421
1103
 
1422
1104
  // packages/runtime/src/async-boundary.ts
1105
+ import { createOwner as createOwner4, state as state3 } from "@vobs/reactivity";
1423
1106
  function insertAsyncBoundary(parent, anchor, options) {
1424
- const boundary = createOwner();
1107
+ const boundary = createOwner4();
1425
1108
  boundary.run(() => {
1426
- const loading = state(true);
1427
- const data = state(void 0);
1428
- const resolved = state(false);
1429
- const error = state(null);
1109
+ const loading = state3(true);
1110
+ const data = state3(void 0);
1111
+ const resolved = state3(false);
1112
+ const error = state3(null);
1430
1113
  let token = 0;
1431
1114
  let previousKey;
1432
1115
  let initialized = false;
@@ -1503,8 +1186,9 @@ function normalizeError(reason) {
1503
1186
  __name(normalizeError, "normalizeError");
1504
1187
 
1505
1188
  // packages/runtime/src/profiler.ts
1189
+ import { createOwner as createOwner5 } from "@vobs/reactivity";
1506
1190
  function insertProfiler(parent, anchor, options) {
1507
- const profiler = createOwner();
1191
+ const profiler = createOwner5();
1508
1192
  let mounted = false;
1509
1193
  profiler.run(() => {
1510
1194
  insertDynamic(parent, anchor, () => {
@@ -1534,7 +1218,63 @@ function now() {
1534
1218
  return typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
1535
1219
  }
1536
1220
  __name(now, "now");
1537
-
1538
- export { AsyncBoundary, ErrorBoundary, Profiler, VobsError, addEventListener, bindAttribute, bindProperty, bindText, clear, cloneTemplate, createBlock, createComment, createComponent, createElement, createFragment, createHmrStateStore, createTemplate, createText, createVobsError, describeDebugNode, disposeHmrModule, disposeNodeOwner, formatVobsError, getRenderer, getRuntimeDebugContext, getRuntimeDebugHooks, insertAsyncBoundary, insertBefore, insertBoundary, insertDynamic, insertDynamicValue, insertErrorBoundary, insertList, insertProfiler, invokeRuntimeDebug, isVobsError, isVobsFragment, markHmrInstanceMounted, normalizeDynamicChild, normalizeVobsError, pushRuntimeDebugContext, ref, registerHmrInstance, removeChild, removeEventListener, resolveComponent, runWithRuntimeDebugContext, setAttribute, setProperty, setRef, setRenderer, setRuntimeDebugHooks, setStaticProps, setTextContent, spreadProps, updateHmrModule };
1539
- //# sourceMappingURL=index.js.map
1221
+ export {
1222
+ AsyncBoundary,
1223
+ ErrorBoundary,
1224
+ Profiler,
1225
+ VobsError,
1226
+ addEventListener,
1227
+ bindAttribute,
1228
+ bindProperty,
1229
+ bindText,
1230
+ clear,
1231
+ cloneTemplate,
1232
+ createBlock,
1233
+ createComment,
1234
+ createComponent,
1235
+ createElement,
1236
+ createFragment,
1237
+ createHmrStateStore,
1238
+ createTemplate,
1239
+ createText,
1240
+ createVobsError,
1241
+ describeDebugNode,
1242
+ disposeHmrModule,
1243
+ disposeNodeOwner,
1244
+ formatVobsError,
1245
+ getRenderer,
1246
+ getRuntimeDebugContext,
1247
+ getRuntimeDebugHooks,
1248
+ hmrStateRef,
1249
+ insertAsyncBoundary,
1250
+ insertBefore,
1251
+ insertBoundary,
1252
+ insertDynamic,
1253
+ insertDynamicValue,
1254
+ insertErrorBoundary,
1255
+ insertList,
1256
+ insertProfiler,
1257
+ invokeRuntimeDebug,
1258
+ isVobsError,
1259
+ isVobsFragment,
1260
+ markHmrInstanceMounted,
1261
+ normalizeDynamicChild,
1262
+ normalizeVobsError,
1263
+ pushRuntimeDebugContext,
1264
+ ref,
1265
+ registerHmrInstance,
1266
+ removeChild,
1267
+ removeEventListener,
1268
+ resolveComponent,
1269
+ runWithRuntimeDebugContext,
1270
+ setAttribute,
1271
+ setProperty,
1272
+ setRef,
1273
+ setRenderer,
1274
+ setRuntimeDebugHooks,
1275
+ setStaticProps,
1276
+ setTextContent,
1277
+ spreadProps,
1278
+ updateHmrModule
1279
+ };
1540
1280
  //# sourceMappingURL=index.js.map