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.
- package/CHANGELOG.md +10 -0
- package/dist/cjs/development/config-B0MtLBgx.js.map +1 -1
- package/dist/cjs/development/{debug-3nd-6Gnf.js → debug-gCDAvnLM.js} +211 -207
- package/dist/cjs/development/debug-gCDAvnLM.js.map +1 -0
- package/dist/cjs/development/debug.js +9 -3
- package/dist/cjs/development/debug.js.map +1 -1
- package/dist/cjs/development/index.js +8 -8
- package/dist/cjs/development/react/index.js +43 -38
- package/dist/cjs/development/react/index.js.map +1 -1
- package/dist/cjs/development/snapshot-Di0yziPX.js +147 -0
- package/dist/cjs/development/snapshot-Di0yziPX.js.map +1 -0
- package/dist/cjs/development/transform/index.js +137 -118
- package/dist/cjs/development/transform/index.js.map +1 -1
- package/dist/cjs/development/utils.js +5 -3
- package/dist/cjs/development/utils.js.map +1 -1
- package/dist/cjs/production/config-B0MtLBgx.js.map +1 -1
- package/dist/cjs/production/{contexts-DoZWv_3I.js → contexts-Wgq2NOVX.js} +130 -133
- package/dist/cjs/production/contexts-Wgq2NOVX.js.map +1 -0
- package/dist/cjs/production/debug.js +61 -66
- package/dist/cjs/production/debug.js.map +1 -1
- package/dist/cjs/production/index.js +8 -8
- package/dist/cjs/production/react/index.js +43 -38
- package/dist/cjs/production/react/index.js.map +1 -1
- package/dist/cjs/production/snapshot-YJJyLbxS.js +147 -0
- package/dist/cjs/production/snapshot-YJJyLbxS.js.map +1 -0
- package/dist/cjs/production/transform/index.js +137 -118
- package/dist/cjs/production/transform/index.js.map +1 -1
- package/dist/cjs/production/utils.js +5 -3
- package/dist/cjs/production/utils.js.map +1 -1
- package/dist/esm/development/config-CPQL7hX-.js.map +1 -1
- package/dist/esm/development/{debug-BfudYKc4.js → debug-AoHfqs62.js} +195 -189
- package/dist/esm/development/debug-AoHfqs62.js.map +1 -0
- package/dist/esm/development/debug.js +1 -1
- package/dist/esm/development/index.js +6 -6
- package/dist/esm/development/react/index.js +43 -38
- package/dist/esm/development/react/index.js.map +1 -1
- package/dist/esm/development/snapshot-Bq0Um_hQ.js +148 -0
- package/dist/esm/development/snapshot-Bq0Um_hQ.js.map +1 -0
- package/dist/esm/development/transform/index.js +137 -118
- package/dist/esm/development/transform/index.js.map +1 -1
- package/dist/esm/development/utils.js +7 -4
- package/dist/esm/development/utils.js.map +1 -1
- package/dist/esm/internals/core-api.d.ts +2 -2
- package/dist/esm/internals/core-api.d.ts.map +1 -1
- package/dist/esm/internals/edge.d.ts +4 -4
- package/dist/esm/internals/edge.d.ts.map +1 -1
- package/dist/esm/internals/reactive.d.ts.map +1 -1
- package/dist/esm/internals/scheduling.d.ts.map +1 -1
- package/dist/esm/internals/signal.d.ts.map +1 -1
- package/dist/esm/internals/utils/snapshot.d.ts +29 -0
- package/dist/esm/internals/utils/snapshot.d.ts.map +1 -0
- package/dist/esm/production/config-CPQL7hX-.js.map +1 -1
- package/dist/esm/production/{contexts-CilfS6eG.js → contexts-X0gSj6rQ.js} +133 -136
- package/dist/esm/production/contexts-X0gSj6rQ.js.map +1 -0
- package/dist/esm/production/debug.js +51 -54
- package/dist/esm/production/debug.js.map +1 -1
- package/dist/esm/production/index.js +7 -7
- package/dist/esm/production/react/index.js +43 -38
- package/dist/esm/production/react/index.js.map +1 -1
- package/dist/esm/production/snapshot-CDS1d8mq.js +148 -0
- package/dist/esm/production/snapshot-CDS1d8mq.js.map +1 -0
- package/dist/esm/production/transform/index.js +137 -118
- package/dist/esm/production/transform/index.js.map +1 -1
- package/dist/esm/production/utils.js +7 -4
- package/dist/esm/production/utils.js.map +1 -1
- package/dist/esm/react/index.d.ts +1 -1
- package/dist/esm/react/index.d.ts.map +1 -1
- package/dist/esm/react/provider.d.ts.map +1 -1
- package/dist/esm/react/use-reactive.d.ts +1 -0
- package/dist/esm/react/use-reactive.d.ts.map +1 -1
- package/dist/esm/transform/callback.d.ts.map +1 -1
- package/dist/esm/transform/promise.d.ts.map +1 -1
- package/dist/esm/utils.d.ts +1 -0
- package/dist/esm/utils.d.ts.map +1 -1
- package/package.json +7 -5
- package/dist/cjs/development/core-api-C6HCIyL3.js +0 -55
- package/dist/cjs/development/core-api-C6HCIyL3.js.map +0 -1
- package/dist/cjs/development/debug-3nd-6Gnf.js.map +0 -1
- package/dist/cjs/production/contexts-DoZWv_3I.js.map +0 -1
- package/dist/cjs/production/core-api-CUviCxtM.js +0 -55
- package/dist/cjs/production/core-api-CUviCxtM.js.map +0 -1
- package/dist/esm/development/core-api-CjsScNn1.js +0 -56
- package/dist/esm/development/core-api-CjsScNn1.js.map +0 -1
- package/dist/esm/development/debug-BfudYKc4.js.map +0 -1
- package/dist/esm/production/contexts-CilfS6eG.js.map +0 -1
- package/dist/esm/production/core-api-tTQttL8R.js +0 -56
- 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
|
-
|
|
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
|
|
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
|
|
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
|
|
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)
|
|
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)
|
|
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 ===
|
|
301
|
+
if (prevState === 2) {
|
|
293
302
|
return;
|
|
294
303
|
}
|
|
295
|
-
signal2._state =
|
|
296
|
-
if (prevState <
|
|
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
|
|
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)
|
|
328
|
+
if (sub === void 0 || sub.computedCount !== edge.consumedAt)
|
|
329
|
+
continue;
|
|
322
330
|
const dirtyState = sub._state;
|
|
323
331
|
switch (dirtyState) {
|
|
324
|
-
case
|
|
325
|
-
sub._state =
|
|
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
|
|
331
|
-
case
|
|
332
|
-
case
|
|
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 ===
|
|
339
|
-
sub._state =
|
|
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
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
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)
|
|
599
|
+
if (rejected)
|
|
600
|
+
return;
|
|
596
601
|
results[i] = v;
|
|
597
|
-
if (--remaining === 0)
|
|
602
|
+
if (--remaining === 0)
|
|
603
|
+
p._setValue(results);
|
|
598
604
|
};
|
|
599
605
|
const onReject = (r) => {
|
|
600
|
-
if (rejected)
|
|
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)
|
|
620
|
+
if (len === 0)
|
|
621
|
+
return p;
|
|
614
622
|
let settled2 = false;
|
|
615
623
|
const onFulfill = (v) => {
|
|
616
|
-
if (settled2)
|
|
624
|
+
if (settled2)
|
|
625
|
+
return;
|
|
617
626
|
settled2 = true;
|
|
618
627
|
p._setValue(v);
|
|
619
628
|
};
|
|
620
629
|
const onReject = (r) => {
|
|
621
|
-
if (settled2)
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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,
|
|
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 ?
|
|
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
|
-
(
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
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 =
|
|
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,
|
|
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 <
|
|
1125
|
+
if (state < 2) {
|
|
1119
1126
|
return signal2.updatedCount;
|
|
1120
1127
|
}
|
|
1121
|
-
if (state >=
|
|
1128
|
+
if (state >= 3) {
|
|
1122
1129
|
let edge = signal2.dirtyHead;
|
|
1123
1130
|
while (edge !== void 0) {
|
|
1124
|
-
if (edge.type ===
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 ===
|
|
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 ===
|
|
1168
|
+
} else if (newState === 4) {
|
|
1162
1169
|
signal2._value._clearPending();
|
|
1163
1170
|
}
|
|
1164
|
-
signal2._state =
|
|
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
|
-
|
|
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-
|
|
1829
|
+
//# sourceMappingURL=contexts-Wgq2NOVX.js.map
|