@fluixi/reactive 1.0.0-alpha.104 → 1.0.0-alpha.106

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 (82) hide show
  1. package/dist/cdn/reactive.cjs +74 -34
  2. package/dist/cdn/reactive.global.js +2 -2
  3. package/dist/cdn/reactive.mjs +74 -34
  4. package/dist/cdn/signal.cjs +23 -3
  5. package/dist/cdn/signal.global.js +2 -2
  6. package/dist/cdn/signal.mjs +23 -3
  7. package/dist/index.cjs +74 -34
  8. package/dist/index.mjs +74 -34
  9. package/dist/lib/index.cjs +75 -35
  10. package/dist/lib/index.mjs +75 -35
  11. package/dist/lib/observable/index.cjs +1 -1
  12. package/dist/lib/observable/index.mjs +1 -1
  13. package/dist/lib/signal/api.cjs +40 -14
  14. package/dist/lib/signal/api.mjs +40 -14
  15. package/dist/lib/signal/cached-resource.cjs +36 -13
  16. package/dist/lib/signal/cached-resource.mjs +36 -13
  17. package/dist/lib/signal/graph/children.cjs +25 -6
  18. package/dist/lib/signal/graph/children.mjs +25 -6
  19. package/dist/lib/signal/graph/compat.cjs +41 -15
  20. package/dist/lib/signal/graph/compat.d.ts.map +1 -1
  21. package/dist/lib/signal/graph/compat.js +20 -11
  22. package/dist/lib/signal/graph/compat.mjs +41 -15
  23. package/dist/lib/signal/graph/context-children.cjs +1 -1
  24. package/dist/lib/signal/graph/context-children.mjs +1 -1
  25. package/dist/lib/signal/graph/core.cjs +24 -4
  26. package/dist/lib/signal/graph/core.d.ts +10 -0
  27. package/dist/lib/signal/graph/core.d.ts.map +1 -1
  28. package/dist/lib/signal/graph/core.js +27 -2
  29. package/dist/lib/signal/graph/core.mjs +24 -4
  30. package/dist/lib/signal/graph/debounced.cjs +35 -12
  31. package/dist/lib/signal/graph/debounced.mjs +35 -12
  32. package/dist/lib/signal/graph/derived.cjs +35 -12
  33. package/dist/lib/signal/graph/derived.mjs +35 -12
  34. package/dist/lib/signal/graph/detect.cjs +1 -1
  35. package/dist/lib/signal/graph/detect.mjs +1 -1
  36. package/dist/lib/signal/graph/error-boundary.cjs +10 -8
  37. package/dist/lib/signal/graph/error-boundary.mjs +10 -8
  38. package/dist/lib/signal/graph/index.cjs +24 -4
  39. package/dist/lib/signal/graph/index.mjs +24 -4
  40. package/dist/lib/signal/graph/observe.cjs +1 -1
  41. package/dist/lib/signal/graph/observe.mjs +1 -1
  42. package/dist/lib/signal/graph/resource.cjs +35 -12
  43. package/dist/lib/signal/graph/resource.mjs +35 -12
  44. package/dist/lib/signal/graph/runtime.cjs +29 -5
  45. package/dist/lib/signal/graph/runtime.d.ts.map +1 -1
  46. package/dist/lib/signal/graph/runtime.js +5 -3
  47. package/dist/lib/signal/graph/runtime.mjs +29 -5
  48. package/dist/lib/signal/graph/signal-next.cjs +67 -29
  49. package/dist/lib/signal/graph/signal-next.mjs +67 -29
  50. package/dist/lib/signal/graph/state.cjs +1 -1
  51. package/dist/lib/signal/graph/state.mjs +1 -1
  52. package/dist/lib/signal/graph/suspense.cjs +10 -8
  53. package/dist/lib/signal/graph/suspense.mjs +10 -8
  54. package/dist/lib/signal/index-legacy.cjs +67 -29
  55. package/dist/lib/signal/index-legacy.mjs +67 -29
  56. package/dist/lib/signal/index.cjs +67 -29
  57. package/dist/lib/signal/index.mjs +67 -29
  58. package/dist/lib/signal/list.cjs +58 -25
  59. package/dist/lib/signal/list.d.ts +3 -8
  60. package/dist/lib/signal/list.d.ts.map +1 -1
  61. package/dist/lib/signal/list.js +40 -18
  62. package/dist/lib/signal/list.mjs +58 -25
  63. package/dist/lib/signal/resource-api.cjs +35 -12
  64. package/dist/lib/signal/resource-api.mjs +35 -12
  65. package/dist/lib/signal/signal.cjs +41 -15
  66. package/dist/lib/signal/signal.mjs +41 -15
  67. package/dist/lib/signal/utilities.cjs +41 -15
  68. package/dist/lib/signal/utilities.mjs +41 -15
  69. package/dist/lib/store/api.cjs +9 -7
  70. package/dist/lib/store/api.mjs +9 -7
  71. package/dist/lib/store/index.cjs +10 -8
  72. package/dist/lib/store/index.mjs +10 -8
  73. package/dist/lib/store/store.cjs +9 -7
  74. package/dist/lib/store/store.d.ts.map +1 -1
  75. package/dist/lib/store/store.js +8 -6
  76. package/dist/lib/store/store.mjs +9 -7
  77. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  78. package/dist/version.generated.cjs +2 -2
  79. package/dist/version.generated.d.ts +1 -1
  80. package/dist/version.generated.js +1 -1
  81. package/dist/version.generated.mjs +2 -2
  82. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- /*! @fluixi/reactive v1.0.0-alpha.104 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/reactive v1.0.0-alpha.106 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
  "use strict";
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -84,7 +84,7 @@ __export(signal_next_exports, {
84
84
  module.exports = __toCommonJS(signal_next_exports);
85
85
 
86
86
  // src/version.generated.ts
87
- var VERSION = "1.0.0-alpha.104";
87
+ var VERSION = "1.0.0-alpha.106";
88
88
 
89
89
  // src/lib/signal/graph/state.ts
90
90
  var MAJOR = VERSION.split(".")[0];
@@ -234,6 +234,7 @@ var Computed = class extends Source {
234
234
  super();
235
235
  this._threw = false;
236
236
  this._initialized = false;
237
+ this._disposed = false;
237
238
  this.state = DIRTY;
238
239
  /** Nodes this computation read on its last run. Rebuilt on every run. */
239
240
  this.sources = null;
@@ -249,8 +250,23 @@ var Computed = class extends Source {
249
250
  if (this._threw) throw this._error;
250
251
  return this._value;
251
252
  }
253
+ /**
254
+ * Unlink from every source, for good. Without this, a source outlives the
255
+ * computation and keeps it (and everything its function captured) reachable
256
+ * through its observers set: a disposed list row stayed in memory that way.
257
+ * The last value stays readable; the node simply never updates again.
258
+ */
259
+ dispose() {
260
+ if (this._disposed) return;
261
+ this._disposed = true;
262
+ if (this.sources) {
263
+ for (const s of this.sources) s.observers?.delete(this);
264
+ this.sources = null;
265
+ }
266
+ }
252
267
  /** Settle, if CHECK, verify sources; if DIRTY (or never run), recompute. */
253
268
  updateIfNecessary() {
269
+ if (this._disposed) return;
254
270
  if (this.state === CHECK) {
255
271
  if (this.sources) {
256
272
  for (const s of this.sources) {
@@ -294,7 +310,7 @@ var Computed = class extends Source {
294
310
  reportReactiveRun(this);
295
311
  if (changed) {
296
312
  this.version++;
297
- if (this.observers) for (const o of [...this.observers]) o.markDirty(DIRTY);
313
+ if (this.observers) for (const o of this.observers) o.markDirty(DIRTY);
298
314
  notifyWatchers(this);
299
315
  }
300
316
  }
@@ -308,7 +324,7 @@ var Computed = class extends Source {
308
324
  const wasClean = this.state === CLEAN;
309
325
  this.state = level;
310
326
  if (wasClean) {
311
- if (this.observers) for (const o of [...this.observers]) o.markDirty(CHECK);
327
+ if (this.observers) for (const o of this.observers) o.markDirty(CHECK);
312
328
  notifyWatchers(this);
313
329
  }
314
330
  }
@@ -347,6 +363,10 @@ var Watcher = class {
347
363
  this._pending.clear();
348
364
  return out;
349
365
  }
366
+ /** Drain pending without the array, for callers that only need it empty. */
367
+ clearPending() {
368
+ this._pending.clear();
369
+ }
350
370
  /** @internal, a watched node became non-clean. Edge-triggered: notify once. */
351
371
  _notify(node) {
352
372
  if (!this._watched.has(node) || this._pending.has(node)) return;
@@ -564,14 +584,14 @@ var EffectNode = class {
564
584
  if (typeof r === "function") (this.owner.cleanups ??= []).push(r);
565
585
  });
566
586
  });
567
- reportReactiveNode({ kind: "effect", node: this.computed, handle: this, internal: !report, ...name ? { name } : {} });
587
+ if (isObserved()) reportReactiveNode({ kind: "effect", node: this.computed, handle: this, internal: !report, ...name ? { name } : {} });
568
588
  this.watcher = new Watcher(() => enqueue(this));
569
589
  this.run();
570
590
  this.watcher.watch(this.computed);
571
591
  }
572
592
  run() {
573
593
  if (this.disposed) return;
574
- this.watcher.getPending();
594
+ this.watcher.clearPending();
575
595
  try {
576
596
  this.computed.get();
577
597
  } catch (e) {
@@ -588,6 +608,7 @@ var EffectNode = class {
588
608
  this.disposed = true;
589
609
  reportReactiveDispose(this.computed);
590
610
  this.watcher.unwatch(this.computed);
611
+ this.computed.dispose();
591
612
  disposeOwner(this.owner);
592
613
  }
593
614
  };
@@ -626,13 +647,15 @@ function createSignal(value, options) {
626
647
  },
627
648
  enumerable: false
628
649
  });
629
- reportReactiveNode({
630
- kind: "signal",
631
- node: state,
632
- handle: read,
633
- name: options?.name,
634
- set: write
635
- });
650
+ if (isObserved()) {
651
+ reportReactiveNode({
652
+ kind: "signal",
653
+ node: state,
654
+ handle: read,
655
+ name: options?.name,
656
+ set: write
657
+ });
658
+ }
636
659
  if (isObserved()) onCleanup(() => reportReactiveDispose(state));
637
660
  return [read, write];
638
661
  }
@@ -656,8 +679,11 @@ function createMemo(fn, value, options) {
656
679
  const read = (() => c.get());
657
680
  Object.defineProperty(read, $SIGNAL, { value: true, enumerable: true });
658
681
  Object.defineProperty(read, $MEMO, { value: true, enumerable: true });
659
- reportReactiveNode({ kind: "memo", node: c, handle: read, name: options?.name });
660
- if (isObserved()) onCleanup(() => reportReactiveDispose(c));
682
+ if (isObserved()) reportReactiveNode({ kind: "memo", node: c, handle: read, name: options?.name });
683
+ onCleanup(() => {
684
+ c.dispose();
685
+ if (isObserved()) reportReactiveDispose(c);
686
+ });
661
687
  return read;
662
688
  }
663
689
  function createEffect(fn, value, options) {
@@ -714,6 +740,20 @@ function on(deps, fn, options) {
714
740
  }
715
741
 
716
742
  // src/lib/signal/list.ts
743
+ function lazyIndex(initial) {
744
+ let current = initial;
745
+ let state = null;
746
+ return {
747
+ index: () => {
748
+ if (!state) state = createSignal(current, { name: "row index" });
749
+ return state[0]();
750
+ },
751
+ set: (n) => {
752
+ current = n;
753
+ if (state) state[1](n);
754
+ }
755
+ };
756
+ }
717
757
  function mapArray(list, mapFn, options) {
718
758
  let items = [];
719
759
  onCleanup(() => {
@@ -743,9 +783,9 @@ function mapArray(list, mapFn, options) {
743
783
  let rendered, setIndex, dispose;
744
784
  createRoot((d) => {
745
785
  dispose = d;
746
- const [index, setIdx] = createSignal(i, { name: "row index" });
747
- setIndex = setIdx;
748
- rendered = mapFn(value, index);
786
+ const idx = lazyIndex(i);
787
+ setIndex = idx.set;
788
+ rendered = mapFn(value, idx.index);
749
789
  });
750
790
  const entry = { item: value, rendered, dispose, setIndex };
751
791
  result.push(entry);
@@ -785,21 +825,19 @@ function keyArray(list, keyFn, mapFn, options) {
785
825
  const reuse = prevByKey.get(key);
786
826
  if (reuse && !usedKeys.has(key)) {
787
827
  reuse.setIndex(i);
828
+ reuse.setItem(next[i]);
788
829
  resultEntries.push(reuse);
789
830
  } else {
790
- let rendered, setIndex, dispose;
831
+ let rendered, setIndex, setItem, dispose;
791
832
  createRoot((d) => {
792
833
  dispose = d;
793
- const [index, setIdx] = createSignal(i, { name: "row index" });
794
- setIndex = setIdx;
795
- const item = createMemo((prev) => {
796
- const cur = list() || [];
797
- const v = cur[index()];
798
- return v !== void 0 && v !== null ? v : prev;
799
- }, next[i]);
800
- rendered = mapFn(item, index);
834
+ const idx = lazyIndex(i);
835
+ setIndex = idx.set;
836
+ const [item, writeItem] = createSignal(next[i]);
837
+ setItem = (v) => writeItem(() => v);
838
+ rendered = mapFn(item, idx.index);
801
839
  });
802
- resultEntries.push({ rendered, dispose, setIndex });
840
+ resultEntries.push({ rendered, dispose, setIndex, setItem });
803
841
  }
804
842
  resultKeys.push(key);
805
843
  usedKeys.add(key);
@@ -849,7 +887,7 @@ function indexArray(list, mapFn, options) {
849
887
 
850
888
  // src/lib/signal/graph/detect.ts
851
889
  var __BROWSER_PROD__ = typeof window === "undefined" ? false : window.__FLUIXI_PROD__ === true;
852
- var __DEV__ = typeof process === "undefined" ? __BROWSER_PROD__ : false;
890
+ var __DEV__ = typeof process === "undefined" ? __BROWSER_PROD__ : process.env.NODE_ENV !== "production";
853
891
  var $SIGNAL2 = /* @__PURE__ */ Symbol.for("signal");
854
892
  var $MEMO2 = /* @__PURE__ */ Symbol.for("memo");
855
893
  var $RESOURCE = /* @__PURE__ */ Symbol.for("resource");
@@ -1,7 +1,7 @@
1
- /*! @fluixi/reactive v1.0.0-alpha.104 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/reactive v1.0.0-alpha.106 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
3
  // src/version.generated.ts
4
- var VERSION = "1.0.0-alpha.104";
4
+ var VERSION = "1.0.0-alpha.106";
5
5
 
6
6
  // src/lib/signal/graph/state.ts
7
7
  var MAJOR = VERSION.split(".")[0];
@@ -151,6 +151,7 @@ var Computed = class extends Source {
151
151
  super();
152
152
  this._threw = false;
153
153
  this._initialized = false;
154
+ this._disposed = false;
154
155
  this.state = DIRTY;
155
156
  /** Nodes this computation read on its last run. Rebuilt on every run. */
156
157
  this.sources = null;
@@ -166,8 +167,23 @@ var Computed = class extends Source {
166
167
  if (this._threw) throw this._error;
167
168
  return this._value;
168
169
  }
170
+ /**
171
+ * Unlink from every source, for good. Without this, a source outlives the
172
+ * computation and keeps it (and everything its function captured) reachable
173
+ * through its observers set: a disposed list row stayed in memory that way.
174
+ * The last value stays readable; the node simply never updates again.
175
+ */
176
+ dispose() {
177
+ if (this._disposed) return;
178
+ this._disposed = true;
179
+ if (this.sources) {
180
+ for (const s of this.sources) s.observers?.delete(this);
181
+ this.sources = null;
182
+ }
183
+ }
169
184
  /** Settle, if CHECK, verify sources; if DIRTY (or never run), recompute. */
170
185
  updateIfNecessary() {
186
+ if (this._disposed) return;
171
187
  if (this.state === CHECK) {
172
188
  if (this.sources) {
173
189
  for (const s of this.sources) {
@@ -211,7 +227,7 @@ var Computed = class extends Source {
211
227
  reportReactiveRun(this);
212
228
  if (changed) {
213
229
  this.version++;
214
- if (this.observers) for (const o of [...this.observers]) o.markDirty(DIRTY);
230
+ if (this.observers) for (const o of this.observers) o.markDirty(DIRTY);
215
231
  notifyWatchers(this);
216
232
  }
217
233
  }
@@ -225,7 +241,7 @@ var Computed = class extends Source {
225
241
  const wasClean = this.state === CLEAN;
226
242
  this.state = level;
227
243
  if (wasClean) {
228
- if (this.observers) for (const o of [...this.observers]) o.markDirty(CHECK);
244
+ if (this.observers) for (const o of this.observers) o.markDirty(CHECK);
229
245
  notifyWatchers(this);
230
246
  }
231
247
  }
@@ -264,6 +280,10 @@ var Watcher = class {
264
280
  this._pending.clear();
265
281
  return out;
266
282
  }
283
+ /** Drain pending without the array, for callers that only need it empty. */
284
+ clearPending() {
285
+ this._pending.clear();
286
+ }
267
287
  /** @internal, a watched node became non-clean. Edge-triggered: notify once. */
268
288
  _notify(node) {
269
289
  if (!this._watched.has(node) || this._pending.has(node)) return;
@@ -481,14 +501,14 @@ var EffectNode = class {
481
501
  if (typeof r === "function") (this.owner.cleanups ??= []).push(r);
482
502
  });
483
503
  });
484
- reportReactiveNode({ kind: "effect", node: this.computed, handle: this, internal: !report, ...name ? { name } : {} });
504
+ if (isObserved()) reportReactiveNode({ kind: "effect", node: this.computed, handle: this, internal: !report, ...name ? { name } : {} });
485
505
  this.watcher = new Watcher(() => enqueue(this));
486
506
  this.run();
487
507
  this.watcher.watch(this.computed);
488
508
  }
489
509
  run() {
490
510
  if (this.disposed) return;
491
- this.watcher.getPending();
511
+ this.watcher.clearPending();
492
512
  try {
493
513
  this.computed.get();
494
514
  } catch (e) {
@@ -505,6 +525,7 @@ var EffectNode = class {
505
525
  this.disposed = true;
506
526
  reportReactiveDispose(this.computed);
507
527
  this.watcher.unwatch(this.computed);
528
+ this.computed.dispose();
508
529
  disposeOwner(this.owner);
509
530
  }
510
531
  };
@@ -543,13 +564,15 @@ function createSignal(value, options) {
543
564
  },
544
565
  enumerable: false
545
566
  });
546
- reportReactiveNode({
547
- kind: "signal",
548
- node: state,
549
- handle: read,
550
- name: options?.name,
551
- set: write
552
- });
567
+ if (isObserved()) {
568
+ reportReactiveNode({
569
+ kind: "signal",
570
+ node: state,
571
+ handle: read,
572
+ name: options?.name,
573
+ set: write
574
+ });
575
+ }
553
576
  if (isObserved()) onCleanup(() => reportReactiveDispose(state));
554
577
  return [read, write];
555
578
  }
@@ -573,8 +596,11 @@ function createMemo(fn, value, options) {
573
596
  const read = (() => c.get());
574
597
  Object.defineProperty(read, $SIGNAL, { value: true, enumerable: true });
575
598
  Object.defineProperty(read, $MEMO, { value: true, enumerable: true });
576
- reportReactiveNode({ kind: "memo", node: c, handle: read, name: options?.name });
577
- if (isObserved()) onCleanup(() => reportReactiveDispose(c));
599
+ if (isObserved()) reportReactiveNode({ kind: "memo", node: c, handle: read, name: options?.name });
600
+ onCleanup(() => {
601
+ c.dispose();
602
+ if (isObserved()) reportReactiveDispose(c);
603
+ });
578
604
  return read;
579
605
  }
580
606
  function createEffect(fn, value, options) {
@@ -631,6 +657,20 @@ function on(deps, fn, options) {
631
657
  }
632
658
 
633
659
  // src/lib/signal/list.ts
660
+ function lazyIndex(initial) {
661
+ let current = initial;
662
+ let state = null;
663
+ return {
664
+ index: () => {
665
+ if (!state) state = createSignal(current, { name: "row index" });
666
+ return state[0]();
667
+ },
668
+ set: (n) => {
669
+ current = n;
670
+ if (state) state[1](n);
671
+ }
672
+ };
673
+ }
634
674
  function mapArray(list, mapFn, options) {
635
675
  let items = [];
636
676
  onCleanup(() => {
@@ -660,9 +700,9 @@ function mapArray(list, mapFn, options) {
660
700
  let rendered, setIndex, dispose;
661
701
  createRoot((d) => {
662
702
  dispose = d;
663
- const [index, setIdx] = createSignal(i, { name: "row index" });
664
- setIndex = setIdx;
665
- rendered = mapFn(value, index);
703
+ const idx = lazyIndex(i);
704
+ setIndex = idx.set;
705
+ rendered = mapFn(value, idx.index);
666
706
  });
667
707
  const entry = { item: value, rendered, dispose, setIndex };
668
708
  result.push(entry);
@@ -702,21 +742,19 @@ function keyArray(list, keyFn, mapFn, options) {
702
742
  const reuse = prevByKey.get(key);
703
743
  if (reuse && !usedKeys.has(key)) {
704
744
  reuse.setIndex(i);
745
+ reuse.setItem(next[i]);
705
746
  resultEntries.push(reuse);
706
747
  } else {
707
- let rendered, setIndex, dispose;
748
+ let rendered, setIndex, setItem, dispose;
708
749
  createRoot((d) => {
709
750
  dispose = d;
710
- const [index, setIdx] = createSignal(i, { name: "row index" });
711
- setIndex = setIdx;
712
- const item = createMemo((prev) => {
713
- const cur = list() || [];
714
- const v = cur[index()];
715
- return v !== void 0 && v !== null ? v : prev;
716
- }, next[i]);
717
- rendered = mapFn(item, index);
751
+ const idx = lazyIndex(i);
752
+ setIndex = idx.set;
753
+ const [item, writeItem] = createSignal(next[i]);
754
+ setItem = (v) => writeItem(() => v);
755
+ rendered = mapFn(item, idx.index);
718
756
  });
719
- resultEntries.push({ rendered, dispose, setIndex });
757
+ resultEntries.push({ rendered, dispose, setIndex, setItem });
720
758
  }
721
759
  resultKeys.push(key);
722
760
  usedKeys.add(key);
@@ -766,7 +804,7 @@ function indexArray(list, mapFn, options) {
766
804
 
767
805
  // src/lib/signal/graph/detect.ts
768
806
  var __BROWSER_PROD__ = typeof window === "undefined" ? false : window.__FLUIXI_PROD__ === true;
769
- var __DEV__ = typeof process === "undefined" ? __BROWSER_PROD__ : false;
807
+ var __DEV__ = typeof process === "undefined" ? __BROWSER_PROD__ : process.env.NODE_ENV !== "production";
770
808
  var $SIGNAL2 = /* @__PURE__ */ Symbol.for("signal");
771
809
  var $MEMO2 = /* @__PURE__ */ Symbol.for("memo");
772
810
  var $RESOURCE = /* @__PURE__ */ Symbol.for("resource");
@@ -27,7 +27,7 @@ __export(state_exports, {
27
27
  module.exports = __toCommonJS(state_exports);
28
28
 
29
29
  // src/version.generated.ts
30
- var VERSION = "1.0.0-alpha.104";
30
+ var VERSION = "1.0.0-alpha.106";
31
31
 
32
32
  // src/lib/signal/graph/state.ts
33
33
  var MAJOR = VERSION.split(".")[0];
@@ -1,5 +1,5 @@
1
1
  // src/version.generated.ts
2
- var VERSION = "1.0.0-alpha.104";
2
+ var VERSION = "1.0.0-alpha.106";
3
3
 
4
4
  // src/lib/signal/graph/state.ts
5
5
  var MAJOR = VERSION.split(".")[0];
@@ -27,7 +27,7 @@ __export(suspense_exports, {
27
27
  module.exports = __toCommonJS(suspense_exports);
28
28
 
29
29
  // src/version.generated.ts
30
- var VERSION = "1.0.0-alpha.104";
30
+ var VERSION = "1.0.0-alpha.106";
31
31
 
32
32
  // src/lib/signal/graph/state.ts
33
33
  var MAJOR = VERSION.split(".")[0];
@@ -280,13 +280,15 @@ function createSignal(value, options) {
280
280
  },
281
281
  enumerable: false
282
282
  });
283
- reportReactiveNode({
284
- kind: "signal",
285
- node: state,
286
- handle: read,
287
- name: options?.name,
288
- set: write
289
- });
283
+ if (isObserved()) {
284
+ reportReactiveNode({
285
+ kind: "signal",
286
+ node: state,
287
+ handle: read,
288
+ name: options?.name,
289
+ set: write
290
+ });
291
+ }
290
292
  if (isObserved()) onCleanup(() => reportReactiveDispose(state));
291
293
  return [read, write];
292
294
  }
@@ -1,5 +1,5 @@
1
1
  // src/version.generated.ts
2
- var VERSION = "1.0.0-alpha.104";
2
+ var VERSION = "1.0.0-alpha.106";
3
3
 
4
4
  // src/lib/signal/graph/state.ts
5
5
  var MAJOR = VERSION.split(".")[0];
@@ -252,13 +252,15 @@ function createSignal(value, options) {
252
252
  },
253
253
  enumerable: false
254
254
  });
255
- reportReactiveNode({
256
- kind: "signal",
257
- node: state,
258
- handle: read,
259
- name: options?.name,
260
- set: write
261
- });
255
+ if (isObserved()) {
256
+ reportReactiveNode({
257
+ kind: "signal",
258
+ node: state,
259
+ handle: read,
260
+ name: options?.name,
261
+ set: write
262
+ });
263
+ }
262
264
  if (isObserved()) onCleanup(() => reportReactiveDispose(state));
263
265
  return [read, write];
264
266
  }