signalium 2.2.3 → 2.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 (87) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/cjs/development/config-B0MtLBgx.js.map +1 -1
  3. package/dist/cjs/development/{debug-3nd-6Gnf.js → debug-gCDAvnLM.js} +211 -207
  4. package/dist/cjs/development/debug-gCDAvnLM.js.map +1 -0
  5. package/dist/cjs/development/debug.js +9 -3
  6. package/dist/cjs/development/debug.js.map +1 -1
  7. package/dist/cjs/development/index.js +8 -8
  8. package/dist/cjs/development/react/index.js +43 -38
  9. package/dist/cjs/development/react/index.js.map +1 -1
  10. package/dist/cjs/development/snapshot-Di0yziPX.js +147 -0
  11. package/dist/cjs/development/snapshot-Di0yziPX.js.map +1 -0
  12. package/dist/cjs/development/transform/index.js +137 -118
  13. package/dist/cjs/development/transform/index.js.map +1 -1
  14. package/dist/cjs/development/utils.js +5 -3
  15. package/dist/cjs/development/utils.js.map +1 -1
  16. package/dist/cjs/production/config-B0MtLBgx.js.map +1 -1
  17. package/dist/cjs/production/{contexts-DoZWv_3I.js → contexts-Wgq2NOVX.js} +130 -133
  18. package/dist/cjs/production/contexts-Wgq2NOVX.js.map +1 -0
  19. package/dist/cjs/production/debug.js +61 -66
  20. package/dist/cjs/production/debug.js.map +1 -1
  21. package/dist/cjs/production/index.js +8 -8
  22. package/dist/cjs/production/react/index.js +43 -38
  23. package/dist/cjs/production/react/index.js.map +1 -1
  24. package/dist/cjs/production/snapshot-YJJyLbxS.js +147 -0
  25. package/dist/cjs/production/snapshot-YJJyLbxS.js.map +1 -0
  26. package/dist/cjs/production/transform/index.js +137 -118
  27. package/dist/cjs/production/transform/index.js.map +1 -1
  28. package/dist/cjs/production/utils.js +5 -3
  29. package/dist/cjs/production/utils.js.map +1 -1
  30. package/dist/esm/development/config-CPQL7hX-.js.map +1 -1
  31. package/dist/esm/development/{debug-BfudYKc4.js → debug-AoHfqs62.js} +195 -189
  32. package/dist/esm/development/debug-AoHfqs62.js.map +1 -0
  33. package/dist/esm/development/debug.js +1 -1
  34. package/dist/esm/development/index.js +6 -6
  35. package/dist/esm/development/react/index.js +43 -38
  36. package/dist/esm/development/react/index.js.map +1 -1
  37. package/dist/esm/development/snapshot-Bq0Um_hQ.js +148 -0
  38. package/dist/esm/development/snapshot-Bq0Um_hQ.js.map +1 -0
  39. package/dist/esm/development/transform/index.js +137 -118
  40. package/dist/esm/development/transform/index.js.map +1 -1
  41. package/dist/esm/development/utils.js +7 -4
  42. package/dist/esm/development/utils.js.map +1 -1
  43. package/dist/esm/internals/core-api.d.ts +2 -2
  44. package/dist/esm/internals/core-api.d.ts.map +1 -1
  45. package/dist/esm/internals/edge.d.ts +4 -4
  46. package/dist/esm/internals/edge.d.ts.map +1 -1
  47. package/dist/esm/internals/reactive.d.ts.map +1 -1
  48. package/dist/esm/internals/scheduling.d.ts.map +1 -1
  49. package/dist/esm/internals/signal.d.ts.map +1 -1
  50. package/dist/esm/internals/utils/snapshot.d.ts +29 -0
  51. package/dist/esm/internals/utils/snapshot.d.ts.map +1 -0
  52. package/dist/esm/production/config-CPQL7hX-.js.map +1 -1
  53. package/dist/esm/production/{contexts-CilfS6eG.js → contexts-X0gSj6rQ.js} +133 -136
  54. package/dist/esm/production/contexts-X0gSj6rQ.js.map +1 -0
  55. package/dist/esm/production/debug.js +51 -54
  56. package/dist/esm/production/debug.js.map +1 -1
  57. package/dist/esm/production/index.js +7 -7
  58. package/dist/esm/production/react/index.js +43 -38
  59. package/dist/esm/production/react/index.js.map +1 -1
  60. package/dist/esm/production/snapshot-CDS1d8mq.js +148 -0
  61. package/dist/esm/production/snapshot-CDS1d8mq.js.map +1 -0
  62. package/dist/esm/production/transform/index.js +137 -118
  63. package/dist/esm/production/transform/index.js.map +1 -1
  64. package/dist/esm/production/utils.js +7 -4
  65. package/dist/esm/production/utils.js.map +1 -1
  66. package/dist/esm/react/index.d.ts +1 -1
  67. package/dist/esm/react/index.d.ts.map +1 -1
  68. package/dist/esm/react/provider.d.ts.map +1 -1
  69. package/dist/esm/react/use-reactive.d.ts +1 -0
  70. package/dist/esm/react/use-reactive.d.ts.map +1 -1
  71. package/dist/esm/transform/callback.d.ts.map +1 -1
  72. package/dist/esm/transform/promise.d.ts.map +1 -1
  73. package/dist/esm/utils.d.ts +1 -0
  74. package/dist/esm/utils.d.ts.map +1 -1
  75. package/package.json +7 -5
  76. package/dist/cjs/development/core-api-C6HCIyL3.js +0 -55
  77. package/dist/cjs/development/core-api-C6HCIyL3.js.map +0 -1
  78. package/dist/cjs/development/debug-3nd-6Gnf.js.map +0 -1
  79. package/dist/cjs/production/contexts-DoZWv_3I.js.map +0 -1
  80. package/dist/cjs/production/core-api-CUviCxtM.js +0 -55
  81. package/dist/cjs/production/core-api-CUviCxtM.js.map +0 -1
  82. package/dist/esm/development/core-api-CjsScNn1.js +0 -56
  83. package/dist/esm/development/core-api-CjsScNn1.js.map +0 -1
  84. package/dist/esm/development/debug-BfudYKc4.js.map +0 -1
  85. package/dist/esm/production/contexts-CilfS6eG.js.map +0 -1
  86. package/dist/esm/production/core-api-tTQttL8R.js +0 -56
  87. package/dist/esm/production/core-api-tTQttL8R.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  const config = require("./config-B0MtLBgx.js");
3
3
  class WeakRefPolyfill {
4
+ value;
4
5
  constructor(value) {
5
6
  this.value = value;
6
7
  }
@@ -16,7 +17,14 @@ const setCurrentConsumer = (consumer) => {
16
17
  const getCurrentConsumer = () => {
17
18
  return CURRENT_CONSUMER;
18
19
  };
19
- let STATE_ID = 0;
20
+ const DEFAULT_EQUALS = (a, b) => a === b;
21
+ const FALSE_EQUALS = () => false;
22
+ const equalsFrom = (equals) => {
23
+ if (equals === false) {
24
+ return FALSE_EQUALS;
25
+ }
26
+ return equals ?? DEFAULT_EQUALS;
27
+ };
20
28
  class StateSignal {
21
29
  _value;
22
30
  _equals;
@@ -27,8 +35,6 @@ class StateSignal {
27
35
  constructor(value, equals = (a, b) => a === b, desc = "signal") {
28
36
  this._value = value;
29
37
  this._equals = equals;
30
- this._id = STATE_ID++;
31
- this._desc = desc;
32
38
  }
33
39
  get value() {
34
40
  this.consume();
@@ -59,7 +65,7 @@ class StateSignal {
59
65
  }
60
66
  dirtySignal(sub);
61
67
  }
62
- this._subs = /* @__PURE__ */ new Map();
68
+ this._subs.clear();
63
69
  scheduleListeners(this);
64
70
  }
65
71
  addListener(listener) {
@@ -80,13 +86,12 @@ function runListeners$1(signal2) {
80
86
  listener();
81
87
  }
82
88
  }
83
- const FALSE_EQUALS$1 = () => false;
84
89
  function signal(initialValue, opts) {
85
- const equals = opts?.equals === false ? FALSE_EQUALS$1 : opts?.equals ?? ((a, b) => a === b);
90
+ const equals = opts?.equals === false ? FALSE_EQUALS : opts?.equals ?? ((a, b) => a === b);
86
91
  return new StateSignal(initialValue, equals, opts?.desc);
87
92
  }
88
93
  const notifier = (opts) => {
89
- return new StateSignal(void 0, FALSE_EQUALS$1, opts?.desc);
94
+ return new StateSignal(void 0, FALSE_EQUALS, opts?.desc);
90
95
  };
91
96
  function watchSignal(signal2, parentIsSuspended) {
92
97
  if (parentIsSuspended) {
@@ -209,7 +214,8 @@ let PENDING_GC = /* @__PURE__ */ new Set();
209
214
  const microtask = () => Promise.resolve();
210
215
  let currentFlush = null;
211
216
  const scheduleFlush = (fn) => {
212
- if (currentFlush) return;
217
+ if (currentFlush)
218
+ return;
213
219
  let resolve;
214
220
  const promise = new Promise((r) => resolve = r);
215
221
  currentFlush = { promise, resolve };
@@ -242,7 +248,8 @@ const scheduleTracer = (tracer) => {
242
248
  };
243
249
  const scheduleGcSweep = (scope) => {
244
250
  PENDING_GC.add(scope);
245
- if (PENDING_GC.size > 1) return;
251
+ if (PENDING_GC.size > 1)
252
+ return;
246
253
  scheduleIdleCallback(() => {
247
254
  for (const scope2 of PENDING_GC) {
248
255
  scope2.sweepGc();
@@ -252,6 +259,8 @@ const scheduleGcSweep = (scope) => {
252
259
  };
253
260
  const flushWatchers = async () => {
254
261
  const flush = currentFlush;
262
+ if (!flush)
263
+ return;
255
264
  while (PENDING_ASYNC_PULLS.length > 0 || PENDING_PULLS.size > 0) {
256
265
  const asyncPulls = PENDING_ASYNC_PULLS;
257
266
  PENDING_ASYNC_PULLS = [];
@@ -289,19 +298,17 @@ const settled = async () => {
289
298
  };
290
299
  function dirtySignal(signal2) {
291
300
  const prevState = signal2._state;
292
- if (prevState === ReactiveFnState.Dirty) {
301
+ if (prevState === 2) {
293
302
  return;
294
303
  }
295
- signal2._state = ReactiveFnState.Dirty;
296
- if (prevState < ReactiveFnState.MaybeDirty) {
304
+ signal2._state = 2;
305
+ if (prevState < 3) {
297
306
  propagateDirty(signal2);
298
307
  }
299
308
  }
300
309
  function propagateDirty(signal2) {
301
310
  if (getCurrentConsumer() === signal2) {
302
- throw new Error(
303
- "A signal was dirtied after it was consumed by the current function. This can cause race conditions and infinite rerenders and is not allowed."
304
- );
311
+ throw new Error("A signal was dirtied after it was consumed by the current function. This can cause race conditions and infinite rerenders and is not allowed.");
305
312
  }
306
313
  if (isRelay(signal2)) {
307
314
  if (signal2.watchCount > 0) {
@@ -312,31 +319,32 @@ function propagateDirty(signal2) {
312
319
  schedulePull(signal2);
313
320
  }
314
321
  dirtySignalConsumers(signal2.subs);
315
- signal2.subs = /* @__PURE__ */ new Map();
322
+ signal2.subs.clear();
316
323
  }
317
324
  }
318
325
  function dirtySignalConsumers(map) {
319
326
  for (const [subRef, edge] of map) {
320
327
  const sub = subRef.deref();
321
- if (sub === void 0 || sub.computedCount !== edge.consumedAt) continue;
328
+ if (sub === void 0 || sub.computedCount !== edge.consumedAt)
329
+ continue;
322
330
  const dirtyState = sub._state;
323
331
  switch (dirtyState) {
324
- case ReactiveFnState.Clean:
325
- sub._state = ReactiveFnState.MaybeDirty;
332
+ case 0:
333
+ sub._state = 3;
326
334
  sub.dirtyHead = edge;
327
335
  edge.nextDirty = void 0;
328
336
  propagateDirty(sub);
329
337
  break;
330
- case ReactiveFnState.Pending:
331
- case ReactiveFnState.MaybeDirty:
332
- case ReactiveFnState.PendingDirty: {
338
+ case 1:
339
+ case 3:
340
+ case 4: {
333
341
  let subEdge = sub.dirtyHead;
334
342
  const ord = edge.ord;
335
343
  if (subEdge.ord > ord) {
336
344
  sub.dirtyHead = edge;
337
345
  edge.nextDirty = subEdge;
338
- if (dirtyState === ReactiveFnState.Pending || dirtyState === ReactiveFnState.PendingDirty) {
339
- sub._state = ReactiveFnState.MaybeDirty;
346
+ if (dirtyState === 1 || dirtyState === 4) {
347
+ sub._state = 3;
340
348
  propagateDirty(sub);
341
349
  }
342
350
  } else {
@@ -354,21 +362,25 @@ function dirtySignalConsumers(map) {
354
362
  }
355
363
  }
356
364
  let CURRENT_ORD = 0;
357
- var EdgeType = /* @__PURE__ */ ((EdgeType2) => {
358
- EdgeType2[EdgeType2["Signal"] = 0] = "Signal";
359
- EdgeType2[EdgeType2["Promise"] = 1] = "Promise";
360
- return EdgeType2;
361
- })(EdgeType || {});
365
+ class EdgeBase {
366
+ type;
367
+ dep;
368
+ ord;
369
+ updatedAt;
370
+ consumedAt;
371
+ nextDirty;
372
+ constructor(type, dep, updatedAt, consumedAt) {
373
+ this.type = type;
374
+ this.dep = dep;
375
+ this.ord = CURRENT_ORD++;
376
+ this.updatedAt = updatedAt;
377
+ this.consumedAt = consumedAt;
378
+ this.nextDirty = void 0;
379
+ }
380
+ }
362
381
  function createEdge(prevEdge, type, dep, updatedAt, consumedAt) {
363
382
  if (prevEdge === void 0) {
364
- return {
365
- type,
366
- dep,
367
- ord: CURRENT_ORD++,
368
- updatedAt,
369
- consumedAt,
370
- nextDirty: void 0
371
- };
383
+ return new EdgeBase(type, dep, updatedAt, consumedAt);
372
384
  }
373
385
  prevEdge.ord = CURRENT_ORD++;
374
386
  prevEdge.updatedAt = updatedAt;
@@ -396,14 +408,6 @@ function findAndRemoveDirty(sub, dep) {
396
408
  }
397
409
  return void 0;
398
410
  }
399
- const DEFAULT_EQUALS = (a, b) => a === b;
400
- const FALSE_EQUALS = () => false;
401
- const equalsFrom = (equals) => {
402
- if (equals === false) {
403
- return FALSE_EQUALS;
404
- }
405
- return equals ?? DEFAULT_EQUALS;
406
- };
407
411
  const GeneratorResultConstructor = (function* () {
408
412
  })().constructor;
409
413
  function isGeneratorResult(value) {
@@ -592,12 +596,15 @@ class ReactivePromiseImpl {
592
596
  let remaining = len;
593
597
  let rejected = false;
594
598
  const onFulfillAt = (i) => (v) => {
595
- if (rejected) return;
599
+ if (rejected)
600
+ return;
596
601
  results[i] = v;
597
- if (--remaining === 0) p._setValue(results);
602
+ if (--remaining === 0)
603
+ p._setValue(results);
598
604
  };
599
605
  const onReject = (r) => {
600
- if (rejected) return;
606
+ if (rejected)
607
+ return;
601
608
  rejected = true;
602
609
  p._setError(r);
603
610
  };
@@ -610,15 +617,18 @@ class ReactivePromiseImpl {
610
617
  const p = new ReactivePromiseImpl();
611
618
  const arr = arrayFrom(values);
612
619
  const len = arr.length;
613
- if (len === 0) return p;
620
+ if (len === 0)
621
+ return p;
614
622
  let settled2 = false;
615
623
  const onFulfill = (v) => {
616
- if (settled2) return;
624
+ if (settled2)
625
+ return;
617
626
  settled2 = true;
618
627
  p._setValue(v);
619
628
  };
620
629
  const onReject = (r) => {
621
- if (settled2) return;
630
+ if (settled2)
631
+ return;
622
632
  settled2 = true;
623
633
  p._setError(r);
624
634
  };
@@ -639,12 +649,14 @@ class ReactivePromiseImpl {
639
649
  const errors = new Array(len);
640
650
  let fulfilled = false;
641
651
  const onFulfill = (value) => {
642
- if (fulfilled) return;
652
+ if (fulfilled)
653
+ return;
643
654
  fulfilled = true;
644
655
  p._setValue(value);
645
656
  };
646
657
  const onRejectAt = (index) => (reason) => {
647
- if (fulfilled) return;
658
+ if (fulfilled)
659
+ return;
648
660
  errors[index] = reason;
649
661
  if (--pending === 0) {
650
662
  p._setError(new AggregateError(errors, "All promises were rejected in ReactivePromise.any"));
@@ -667,11 +679,13 @@ class ReactivePromiseImpl {
667
679
  let remaining = len;
668
680
  const onFulfillAt = (index) => (value) => {
669
681
  results[index] = { status: "fulfilled", value };
670
- if (--remaining === 0) p._setValue(results);
682
+ if (--remaining === 0)
683
+ p._setValue(results);
671
684
  };
672
685
  const onRejectAt = (index) => (reason) => {
673
686
  results[index] = { status: "rejected", reason };
674
- if (--remaining === 0) p._setValue(results);
687
+ if (--remaining === 0)
688
+ p._setValue(results);
675
689
  };
676
690
  for (let i = 0; i < len; i++) {
677
691
  thenLoop(arr[i], onFulfillAt(i), onRejectAt(i));
@@ -679,7 +693,8 @@ class ReactivePromiseImpl {
679
693
  return p;
680
694
  }
681
695
  static resolve(value) {
682
- if (value instanceof ReactivePromiseImpl) return value;
696
+ if (value instanceof ReactivePromiseImpl)
697
+ return value;
683
698
  return new ReactivePromiseImpl((resolve) => resolve(value));
684
699
  }
685
700
  static reject(reason) {
@@ -690,7 +705,7 @@ class ReactivePromiseImpl {
690
705
  p._equals = DEFAULT_EQUALS;
691
706
  p._initFlags(
692
707
  1
693
- /* Pending */
708
+ /* AsyncFlags.Pending */
694
709
  );
695
710
  const resolve = (value) => {
696
711
  if (value && typeof value.then === "function") {
@@ -709,7 +724,8 @@ class ReactivePromiseImpl {
709
724
  }
710
725
  _consumeFlags(flags) {
711
726
  const currentConsumer = getCurrentConsumer();
712
- if (currentConsumer === void 0) return;
727
+ if (currentConsumer === void 0)
728
+ return;
713
729
  if ((this._flags & 128) !== 0) {
714
730
  this._connect();
715
731
  }
@@ -725,7 +741,7 @@ class ReactivePromiseImpl {
725
741
  const { ref, computedCount, deps } = currentConsumer;
726
742
  const prevEdge = deps.get(signal2);
727
743
  if (prevEdge?.consumedAt !== computedCount) {
728
- const newEdge = createEdge(prevEdge, EdgeType.Signal, signal2, signal2.updatedCount, computedCount);
744
+ const newEdge = createEdge(prevEdge, 0, signal2, signal2.updatedCount, computedCount);
729
745
  signal2.subs.set(ref, newEdge);
730
746
  deps.set(signal2, newEdge);
731
747
  }
@@ -765,7 +781,7 @@ class ReactivePromiseImpl {
765
781
  }
766
782
  this._setFlags(
767
783
  1
768
- /* Pending */
784
+ /* AsyncFlags.Pending */
769
785
  );
770
786
  dirtySignalConsumers(this._awaitSubs);
771
787
  return this._awaitSubs = /* @__PURE__ */ new Map();
@@ -857,7 +873,7 @@ class ReactivePromiseImpl {
857
873
  }
858
874
  }
859
875
  _scheduleSubs(awaitSubs, dirty) {
860
- const newState = dirty ? ReactiveFnState.Dirty : ReactiveFnState.PendingDirty;
876
+ const newState = dirty ? 2 : 4;
861
877
  for (const ref of awaitSubs.keys()) {
862
878
  const signal2 = ref.deref();
863
879
  if (signal2 === void 0) {
@@ -870,49 +886,49 @@ class ReactivePromiseImpl {
870
886
  get value() {
871
887
  this._consumeFlags(
872
888
  16
873
- /* Value */
889
+ /* AsyncFlags.Value */
874
890
  );
875
891
  return this._value;
876
892
  }
877
893
  get error() {
878
894
  this._consumeFlags(
879
895
  32
880
- /* Error */
896
+ /* AsyncFlags.Error */
881
897
  );
882
898
  return this._error;
883
899
  }
884
900
  get isPending() {
885
901
  this._consumeFlags(
886
902
  1
887
- /* Pending */
903
+ /* AsyncFlags.Pending */
888
904
  );
889
905
  return (this._flags & 1) !== 0;
890
906
  }
891
907
  get isRejected() {
892
908
  this._consumeFlags(
893
909
  2
894
- /* Rejected */
910
+ /* AsyncFlags.Rejected */
895
911
  );
896
912
  return (this._flags & 2) !== 0;
897
913
  }
898
914
  get isResolved() {
899
915
  this._consumeFlags(
900
916
  4
901
- /* Resolved */
917
+ /* AsyncFlags.Resolved */
902
918
  );
903
919
  return (this._flags & 4) !== 0;
904
920
  }
905
921
  get isReady() {
906
922
  this._consumeFlags(
907
923
  8
908
- /* Ready */
924
+ /* AsyncFlags.Ready */
909
925
  );
910
926
  return (this._flags & 8) !== 0;
911
927
  }
912
928
  get isSettled() {
913
929
  this._consumeFlags(
914
930
  6
915
- /* Settled */
931
+ /* AsyncFlags.Settled */
916
932
  );
917
933
  return (this._flags & 6) !== 0;
918
934
  }
@@ -928,13 +944,7 @@ class ReactivePromiseImpl {
928
944
  }
929
945
  ref = currentConsumer.ref;
930
946
  const prevEdge = this._awaitSubs.get(ref) ?? findAndRemoveDirty(currentConsumer, this);
931
- edge = createEdge(
932
- prevEdge,
933
- EdgeType.Promise,
934
- this,
935
- this._updatedCount,
936
- currentConsumer.computedCount
937
- );
947
+ edge = createEdge(prevEdge, 1, this, this._updatedCount, currentConsumer.computedCount);
938
948
  }
939
949
  const wrappedFulfilled = onfulfilled ? (value) => {
940
950
  try {
@@ -970,16 +980,13 @@ class ReactivePromiseImpl {
970
980
  return this.then(null, onrejected);
971
981
  }
972
982
  finally(onfinally) {
973
- return this.then(
974
- (value) => {
975
- onfinally?.();
976
- return value;
977
- },
978
- (reason) => {
979
- onfinally?.();
980
- throw reason;
981
- }
982
- );
983
+ return this.then((value) => {
984
+ onfinally?.();
985
+ return value;
986
+ }, (reason) => {
987
+ onfinally?.();
988
+ throw reason;
989
+ });
983
990
  }
984
991
  get [Symbol.toStringTag]() {
985
992
  return `ReactivePromise`;
@@ -1001,7 +1008,7 @@ function createPromise(promise, signal2) {
1001
1008
  p["_equals"] = signal2.def.equals;
1002
1009
  p["_initFlags"](
1003
1010
  1
1004
- /* Pending */
1011
+ /* AsyncFlags.Pending */
1005
1012
  );
1006
1013
  p["_setPromise"](promise);
1007
1014
  return p;
@@ -1018,7 +1025,7 @@ function createRelay(activate, scope, opts) {
1018
1025
  }
1019
1026
  const signal2 = p["_signal"];
1020
1027
  signal2.subs = /* @__PURE__ */ new Map();
1021
- signal2._state = ReactiveFnState.Dirty;
1028
+ signal2._state = 2;
1022
1029
  active = false;
1023
1030
  currentSub = void 0;
1024
1031
  };
@@ -1063,7 +1070,7 @@ function createRelay(activate, scope, opts) {
1063
1070
  p["_equals"] = equalsFrom(opts?.equals);
1064
1071
  p["_initFlags"](
1065
1072
  128 | 1
1066
- /* Pending */
1073
+ /* AsyncFlags.Pending */
1067
1074
  );
1068
1075
  return p;
1069
1076
  }
@@ -1073,7 +1080,7 @@ function createTask(task, scope, opts) {
1073
1080
  p["_equals"] = equalsFrom(opts?.equals);
1074
1081
  p["_initFlags"](
1075
1082
  64
1076
- /* isRunnable */
1083
+ /* AsyncFlags.isRunnable */
1077
1084
  );
1078
1085
  const throwIfRunning = opts?.throwIfRunning === true;
1079
1086
  p["run"] = ((...args) => {
@@ -1099,7 +1106,7 @@ function getSignal(signal2) {
1099
1106
  }
1100
1107
  }
1101
1108
  const updatedAt = checkSignal(signal2);
1102
- const newEdge = createEdge(prevEdge, EdgeType.Signal, signal2, updatedAt, computedCount);
1109
+ const newEdge = createEdge(prevEdge, 0, signal2, updatedAt, computedCount);
1103
1110
  signal2.subs.set(ref, newEdge);
1104
1111
  deps.set(signal2, newEdge);
1105
1112
  } else {
@@ -1115,26 +1122,26 @@ function getSignal(signal2) {
1115
1122
  }
1116
1123
  function checkSignal(signal2) {
1117
1124
  const { ref, _state: state } = signal2;
1118
- if (state < ReactiveFnState.Dirty) {
1125
+ if (state < 2) {
1119
1126
  return signal2.updatedCount;
1120
1127
  }
1121
- if (state >= ReactiveFnState.MaybeDirty) {
1128
+ if (state >= 3) {
1122
1129
  let edge = signal2.dirtyHead;
1123
1130
  while (edge !== void 0) {
1124
- if (edge.type === EdgeType.Promise) {
1131
+ if (edge.type === 1) {
1125
1132
  const dep2 = edge.dep;
1126
1133
  if (dep2._getPending()) {
1127
1134
  const value = signal2._value;
1128
1135
  dep2["_awaitSubs"].set(ref, edge);
1129
1136
  value._setPending();
1130
- signal2._state = ReactiveFnState.Pending;
1137
+ signal2._state = 1;
1131
1138
  signal2.dirtyHead = edge;
1132
1139
  return signal2.updatedCount;
1133
1140
  } else if (edge.updatedAt === edge.dep._updatedCount) {
1134
1141
  dep2["_awaitSubs"].set(ref, edge);
1135
1142
  } else {
1136
1143
  signal2.dirtyHead = edge.nextDirty;
1137
- signal2._state = ReactiveFnState.Dirty;
1144
+ signal2._state = 2;
1138
1145
  break;
1139
1146
  }
1140
1147
  edge = edge.nextDirty;
@@ -1145,23 +1152,23 @@ function checkSignal(signal2) {
1145
1152
  dep.subs.set(ref, edge);
1146
1153
  if (edge.updatedAt !== updatedAt) {
1147
1154
  signal2.dirtyHead = edge.nextDirty;
1148
- signal2._state = ReactiveFnState.Dirty;
1155
+ signal2._state = 2;
1149
1156
  break;
1150
1157
  }
1151
1158
  edge = edge.nextDirty;
1152
1159
  }
1153
1160
  }
1154
1161
  const newState = signal2._state;
1155
- if (newState === ReactiveFnState.Dirty) {
1162
+ if (newState === 2) {
1156
1163
  if (signal2._isLazy) {
1157
1164
  signal2.updatedCount++;
1158
1165
  } else {
1159
1166
  runSignal(signal2);
1160
1167
  }
1161
- } else if (newState === ReactiveFnState.PendingDirty) {
1168
+ } else if (newState === 4) {
1162
1169
  signal2._value._clearPending();
1163
1170
  }
1164
- signal2._state = ReactiveFnState.Clean;
1171
+ signal2._state = 0;
1165
1172
  signal2.dirtyHead = void 0;
1166
1173
  return signal2.updatedCount;
1167
1174
  }
@@ -1330,56 +1337,56 @@ function hashDate(date, _seen) {
1330
1337
  return hashNumber(
1331
1338
  date.getTime(),
1332
1339
  14
1333
- /* DATE */
1340
+ /* HashType.DATE */
1334
1341
  );
1335
1342
  }
1336
1343
  function hashRegExp(regexp, _seen) {
1337
1344
  const h = hashStr(
1338
1345
  regexp.source + regexp.flags,
1339
1346
  15
1340
- /* REGEXP */
1347
+ /* HashType.REGEXP */
1341
1348
  );
1342
1349
  return (h ^ regexp.lastIndex) >>> 0;
1343
1350
  }
1344
1351
  const UNDEFINED = hashStr(
1345
1352
  "undefined",
1346
1353
  0
1347
- /* UNDEFINED */
1354
+ /* HashType.UNDEFINED */
1348
1355
  );
1349
1356
  const NULL = hashStr(
1350
1357
  "null",
1351
1358
  1
1352
- /* NULL */
1359
+ /* HashType.NULL */
1353
1360
  );
1354
1361
  const TRUE = hashStr(
1355
1362
  "true",
1356
1363
  2
1357
- /* TRUE */
1364
+ /* HashType.TRUE */
1358
1365
  );
1359
1366
  const FALSE = hashStr(
1360
1367
  "false",
1361
1368
  3
1362
- /* FALSE */
1369
+ /* HashType.FALSE */
1363
1370
  );
1364
1371
  const ARRAY = hashStr(
1365
1372
  "array",
1366
1373
  7
1367
- /* ARRAY */
1374
+ /* HashType.ARRAY */
1368
1375
  );
1369
1376
  const OBJECT = hashStr(
1370
1377
  "object",
1371
1378
  8
1372
- /* OBJECT */
1379
+ /* HashType.OBJECT */
1373
1380
  );
1374
1381
  const SET = hashStr(
1375
1382
  "set",
1376
1383
  13
1377
- /* SET */
1384
+ /* HashType.SET */
1378
1385
  );
1379
1386
  const MAP = hashStr(
1380
1387
  "map",
1381
1388
  12
1382
- /* MAP */
1389
+ /* HashType.MAP */
1383
1390
  );
1384
1391
  const getObjectProto = Object.getPrototypeOf;
1385
1392
  const PROTO_TO_HASH = /* @__PURE__ */ new Map([
@@ -1403,19 +1410,19 @@ function hashValue(node, seen = []) {
1403
1410
  return hashStr(
1404
1411
  String(node),
1405
1412
  4
1406
- /* NUMBER */
1413
+ /* HashType.NUMBER */
1407
1414
  );
1408
1415
  case "string":
1409
1416
  return hashStr(
1410
1417
  node,
1411
1418
  5
1412
- /* STRING */
1419
+ /* HashType.STRING */
1413
1420
  );
1414
1421
  case "bigint":
1415
1422
  return hashStr(
1416
1423
  node.toString(),
1417
1424
  6
1418
- /* BIGINT */
1425
+ /* HashType.BIGINT */
1419
1426
  );
1420
1427
  case "object": {
1421
1428
  if (node === null) {
@@ -1426,7 +1433,7 @@ function hashValue(node, seen = []) {
1426
1433
  return hashStr(
1427
1434
  String(index),
1428
1435
  11
1429
- /* CYCLE */
1436
+ /* HashType.CYCLE */
1430
1437
  );
1431
1438
  }
1432
1439
  const hashFn = PROTO_TO_HASH.get(getObjectProto(node));
@@ -1444,7 +1451,7 @@ function hashValue(node, seen = []) {
1444
1451
  return hashStr(
1445
1452
  node.toString(),
1446
1453
  10
1447
- /* SYMBOL */
1454
+ /* HashType.SYMBOL */
1448
1455
  );
1449
1456
  }
1450
1457
  }
@@ -1456,7 +1463,7 @@ function getObjectHash(obj) {
1456
1463
  id = hashNumber(
1457
1464
  nextHashMapId++,
1458
1465
  9
1459
- /* REFERENCE */
1466
+ /* HashType.REFERENCE */
1460
1467
  );
1461
1468
  objectToHashMap.set(obj, id);
1462
1469
  }
@@ -1473,25 +1480,16 @@ function hashReactiveFn(fn, args) {
1473
1480
  h = h << 13 | h >>> 19;
1474
1481
  return imul(h, 5) + 3864292196 >>> 0;
1475
1482
  }
1476
- var ReactiveFnState = /* @__PURE__ */ ((ReactiveFnState2) => {
1477
- ReactiveFnState2[ReactiveFnState2["Clean"] = 0] = "Clean";
1478
- ReactiveFnState2[ReactiveFnState2["Pending"] = 1] = "Pending";
1479
- ReactiveFnState2[ReactiveFnState2["Dirty"] = 2] = "Dirty";
1480
- ReactiveFnState2[ReactiveFnState2["MaybeDirty"] = 3] = "MaybeDirty";
1481
- ReactiveFnState2[ReactiveFnState2["PendingDirty"] = 4] = "PendingDirty";
1482
- return ReactiveFnState2;
1483
- })(ReactiveFnState || {});
1484
1483
  let ID = 0;
1485
1484
  function createReactiveDefinition(id, desc, compute, equals, isRelay2, paramKey, tracer) {
1486
- return {
1487
- id,
1488
- desc,
1485
+ const def = {
1489
1486
  compute,
1490
1487
  equals: equalsFrom(equals),
1491
1488
  isRelay: isRelay2,
1492
1489
  paramKey,
1493
- tracer
1490
+ tracer: void 0
1494
1491
  };
1492
+ return def;
1495
1493
  }
1496
1494
  class ReactiveSignal {
1497
1495
  // Bitmask containing state in the first 2 bits and boolean properties in the remaining bits
@@ -1655,13 +1653,14 @@ function createReactiveSignal(def, args = [], key, scope) {
1655
1653
  }
1656
1654
  let CONTEXT_ID = 0;
1657
1655
  class ContextImpl {
1656
+ defaultValue;
1657
+ _key;
1658
+ _description;
1658
1659
  constructor(defaultValue, desc) {
1659
1660
  this.defaultValue = defaultValue;
1660
1661
  this._description = desc ?? `context:${CONTEXT_ID++}`;
1661
1662
  this._key = Symbol(this._description);
1662
1663
  }
1663
- _key;
1664
- _description;
1665
1664
  }
1666
1665
  const context = (initialValue, description) => {
1667
1666
  return new ContextImpl(initialValue, description);
@@ -1679,9 +1678,7 @@ function withContexts(contexts, fn) {
1679
1678
  const getContext = (context2) => {
1680
1679
  const scope = CURRENT_SCOPE ?? getCurrentConsumer()?.scope;
1681
1680
  if (scope === void 0) {
1682
- throw new Error(
1683
- "getContext must be used within a reactive function, a withContext, or within a framework-specific context provider."
1684
- );
1681
+ throw new Error("getContext must be used within a reactive function, a withContext, or within a framework-specific context provider.");
1685
1682
  }
1686
1683
  return scope.getContext(context2) ?? context2.defaultValue;
1687
1684
  };
@@ -1829,4 +1826,4 @@ exports.signal = signal;
1829
1826
  exports.unwatchSignal = unwatchSignal;
1830
1827
  exports.watchSignal = watchSignal;
1831
1828
  exports.withContexts = withContexts;
1832
- //# sourceMappingURL=contexts-DoZWv_3I.js.map
1829
+ //# sourceMappingURL=contexts-Wgq2NOVX.js.map