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,5 +1,6 @@
|
|
|
1
1
|
import { s as scheduleFlush$1, r as runBatch } from "./config-CPQL7hX-.js";
|
|
2
2
|
class WeakRefPolyfill {
|
|
3
|
+
value;
|
|
3
4
|
constructor(value) {
|
|
4
5
|
this.value = value;
|
|
5
6
|
}
|
|
@@ -22,7 +23,8 @@ let TRACER;
|
|
|
22
23
|
const getTracerProxy = () => {
|
|
23
24
|
return TRACER;
|
|
24
25
|
};
|
|
25
|
-
var TracerEventType
|
|
26
|
+
var TracerEventType;
|
|
27
|
+
(function(TracerEventType2) {
|
|
26
28
|
TracerEventType2["StartUpdate"] = "StartUpdate";
|
|
27
29
|
TracerEventType2["EndUpdate"] = "EndUpdate";
|
|
28
30
|
TracerEventType2["StartLoading"] = "StartLoading";
|
|
@@ -30,15 +32,31 @@ var TracerEventType = /* @__PURE__ */ ((TracerEventType2) => {
|
|
|
30
32
|
TracerEventType2["Connected"] = "Connected";
|
|
31
33
|
TracerEventType2["Disconnected"] = "Disconnected";
|
|
32
34
|
TracerEventType2["ConsumeState"] = "ConsumeState";
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
})(TracerEventType || (TracerEventType = {}));
|
|
36
|
+
var SignalType;
|
|
37
|
+
(function(SignalType2) {
|
|
36
38
|
SignalType2["State"] = "state";
|
|
37
39
|
SignalType2["Reactive"] = "reactive";
|
|
38
40
|
SignalType2["Watcher"] = "watcher";
|
|
39
|
-
|
|
40
|
-
})(SignalType || {});
|
|
41
|
+
})(SignalType || (SignalType = {}));
|
|
41
42
|
class VisualizerNode {
|
|
43
|
+
tracer;
|
|
44
|
+
depth;
|
|
45
|
+
type;
|
|
46
|
+
id;
|
|
47
|
+
value;
|
|
48
|
+
name;
|
|
49
|
+
params;
|
|
50
|
+
_setValue;
|
|
51
|
+
subscribers = [];
|
|
52
|
+
nextStateChildren = [];
|
|
53
|
+
stateChildren = [];
|
|
54
|
+
children = [];
|
|
55
|
+
updating = true;
|
|
56
|
+
loading = false;
|
|
57
|
+
version = 0;
|
|
58
|
+
updatingVersion = 0;
|
|
59
|
+
didConnect = false;
|
|
42
60
|
constructor(tracer, depth, type, id, value, name, params, _setValue) {
|
|
43
61
|
this.tracer = tracer;
|
|
44
62
|
this.depth = depth;
|
|
@@ -50,15 +68,6 @@ class VisualizerNode {
|
|
|
50
68
|
this._setValue = _setValue;
|
|
51
69
|
this.tracer.maxDepth = Math.max(this.tracer.maxDepth, this.depth);
|
|
52
70
|
}
|
|
53
|
-
subscribers = [];
|
|
54
|
-
nextStateChildren = [];
|
|
55
|
-
stateChildren = [];
|
|
56
|
-
children = [];
|
|
57
|
-
updating = true;
|
|
58
|
-
loading = false;
|
|
59
|
-
version = 0;
|
|
60
|
-
updatingVersion = 0;
|
|
61
|
-
didConnect = false;
|
|
62
71
|
get showParams() {
|
|
63
72
|
return this.tracer.showParams;
|
|
64
73
|
}
|
|
@@ -69,16 +78,14 @@ class VisualizerNode {
|
|
|
69
78
|
return this.tracer.interactive;
|
|
70
79
|
}
|
|
71
80
|
setValue(value) {
|
|
72
|
-
if (this.type !==
|
|
81
|
+
if (this.type !== SignalType.State) {
|
|
73
82
|
throw new Error("setValue is only allowed on state nodes");
|
|
74
83
|
}
|
|
75
84
|
this._setValue?.(value);
|
|
76
85
|
this.notify();
|
|
77
86
|
}
|
|
78
87
|
connectChild(child) {
|
|
79
|
-
let childLink = this.children.find(
|
|
80
|
-
(link) => link.node.id === child.id || link.node.name === child.name && link.version !== this.updatingVersion
|
|
81
|
-
);
|
|
88
|
+
let childLink = this.children.find((link) => link.node.id === child.id || link.node.name === child.name && link.version !== this.updatingVersion);
|
|
82
89
|
let shouldSkip = false;
|
|
83
90
|
if (childLink) {
|
|
84
91
|
if (!child.didConnect) {
|
|
@@ -141,16 +148,7 @@ class VisualizerNode {
|
|
|
141
148
|
this.nextStateChildren.push(existing);
|
|
142
149
|
existing.notify();
|
|
143
150
|
} else {
|
|
144
|
-
const node = new VisualizerNode(
|
|
145
|
-
this.tracer,
|
|
146
|
-
this.depth + 1,
|
|
147
|
-
"state",
|
|
148
|
-
id,
|
|
149
|
-
value,
|
|
150
|
-
name,
|
|
151
|
-
void 0,
|
|
152
|
-
setValue
|
|
153
|
-
);
|
|
151
|
+
const node = new VisualizerNode(this.tracer, this.depth + 1, SignalType.State, id, value, name, void 0, setValue);
|
|
154
152
|
node.updating = false;
|
|
155
153
|
this.nextStateChildren.push(node);
|
|
156
154
|
}
|
|
@@ -195,39 +193,39 @@ class TraceFlush {
|
|
|
195
193
|
}
|
|
196
194
|
}
|
|
197
195
|
class Tracer {
|
|
196
|
+
showParams;
|
|
197
|
+
showValue;
|
|
198
|
+
interactive;
|
|
199
|
+
nodeMap = /* @__PURE__ */ new Map();
|
|
200
|
+
delay = 200;
|
|
201
|
+
maxDepth = 0;
|
|
202
|
+
initialized = false;
|
|
198
203
|
constructor(id, immediate = false, showParams = true, showValue = true, interactive = true) {
|
|
199
204
|
this.showParams = showParams;
|
|
200
205
|
this.showValue = showValue;
|
|
201
206
|
this.interactive = interactive;
|
|
202
207
|
this.initialized = !immediate;
|
|
203
|
-
const node = new VisualizerNode(this, 0,
|
|
208
|
+
const node = new VisualizerNode(this, 0, SignalType.Watcher, id, "");
|
|
204
209
|
this.rootNode = node;
|
|
205
210
|
this.nodeMap.set(id, node);
|
|
206
211
|
}
|
|
207
|
-
nodeMap = /* @__PURE__ */ new Map();
|
|
208
|
-
delay = 200;
|
|
209
|
-
maxDepth = 0;
|
|
210
|
-
initialized = false;
|
|
211
212
|
rootNode;
|
|
212
213
|
eventQueue = [];
|
|
213
214
|
currentFlush;
|
|
214
215
|
emit(event) {
|
|
215
|
-
if (event.type ===
|
|
216
|
+
if (event.type === TracerEventType.Connected || event.type === TracerEventType.ConsumeState) {
|
|
216
217
|
const node = this.nodeMap.get(event.id);
|
|
217
|
-
if (!node || event.type ===
|
|
218
|
+
if (!node || event.type === TracerEventType.Connected && !event.name) {
|
|
218
219
|
return;
|
|
219
220
|
}
|
|
220
221
|
if (!this.nodeMap.has(event.childId)) {
|
|
221
|
-
const name = event.type ===
|
|
222
|
-
const params = event.type ===
|
|
223
|
-
const nodeType = event.type ===
|
|
224
|
-
this.nodeMap.set(
|
|
225
|
-
event.childId,
|
|
226
|
-
new VisualizerNode(this, node.depth + 1, nodeType, event.childId, "", name, params)
|
|
227
|
-
);
|
|
222
|
+
const name = event.type === TracerEventType.Connected ? event.name : void 0;
|
|
223
|
+
const params = event.type === TracerEventType.Connected ? event.params : void 0;
|
|
224
|
+
const nodeType = event.type === TracerEventType.Connected ? event.nodeType : SignalType.State;
|
|
225
|
+
this.nodeMap.set(event.childId, new VisualizerNode(this, node.depth + 1, nodeType, event.childId, "", name, params));
|
|
228
226
|
}
|
|
229
227
|
}
|
|
230
|
-
if (event.type ===
|
|
228
|
+
if (event.type === TracerEventType.StartLoading || event.type === TracerEventType.EndLoading) {
|
|
231
229
|
scheduleTracer(this);
|
|
232
230
|
}
|
|
233
231
|
if (this.initialized) {
|
|
@@ -241,28 +239,28 @@ class Tracer {
|
|
|
241
239
|
if (!node) {
|
|
242
240
|
return true;
|
|
243
241
|
}
|
|
244
|
-
let skipDelay = nextEvent?.type ===
|
|
245
|
-
if (event.type ===
|
|
242
|
+
let skipDelay = nextEvent?.type === TracerEventType.StartLoading;
|
|
243
|
+
if (event.type === TracerEventType.Connected) {
|
|
246
244
|
let child = this.nodeMap.get(event.childId);
|
|
247
245
|
if (!child) {
|
|
248
246
|
throw new Error(`Child node ${event.childId} not found`);
|
|
249
247
|
}
|
|
250
248
|
skipDelay = node.connectChild(child);
|
|
251
|
-
} else if (event.type ===
|
|
249
|
+
} else if (event.type === TracerEventType.Disconnected) {
|
|
252
250
|
node.disconnectChild(event.childId);
|
|
253
|
-
} else if (event.type ===
|
|
251
|
+
} else if (event.type === TracerEventType.StartUpdate) {
|
|
254
252
|
node.startUpdate();
|
|
255
|
-
if (nextEvent && nextEvent.id === event.id && (nextEvent.type ===
|
|
253
|
+
if (nextEvent && nextEvent.id === event.id && (nextEvent.type === TracerEventType.EndUpdate || nextEvent.type === TracerEventType.StartLoading)) {
|
|
256
254
|
skipDelay = true;
|
|
257
255
|
}
|
|
258
|
-
} else if (event.type ===
|
|
256
|
+
} else if (event.type === TracerEventType.EndUpdate) {
|
|
259
257
|
node.endUpdate(event.value, event.preserveChildren);
|
|
260
|
-
} else if (event.type ===
|
|
258
|
+
} else if (event.type === TracerEventType.StartLoading) {
|
|
261
259
|
node.startLoading();
|
|
262
260
|
skipDelay = true;
|
|
263
|
-
} else if (event.type ===
|
|
261
|
+
} else if (event.type === TracerEventType.EndLoading) {
|
|
264
262
|
node.endLoading(event.value);
|
|
265
|
-
} else if (event.type ===
|
|
263
|
+
} else if (event.type === TracerEventType.ConsumeState) {
|
|
266
264
|
node.consumeState(event.childId, event.name, event.value, event.setValue);
|
|
267
265
|
}
|
|
268
266
|
return skipDelay;
|
|
@@ -328,6 +326,14 @@ const setCurrentConsumer = (consumer) => {
|
|
|
328
326
|
const getCurrentConsumer = () => {
|
|
329
327
|
return CURRENT_CONSUMER;
|
|
330
328
|
};
|
|
329
|
+
const DEFAULT_EQUALS = (a, b) => a === b;
|
|
330
|
+
const FALSE_EQUALS = () => false;
|
|
331
|
+
const equalsFrom = (equals) => {
|
|
332
|
+
if (equals === false) {
|
|
333
|
+
return FALSE_EQUALS;
|
|
334
|
+
}
|
|
335
|
+
return equals ?? DEFAULT_EQUALS;
|
|
336
|
+
};
|
|
331
337
|
let STATE_ID = 0;
|
|
332
338
|
class StateSignal {
|
|
333
339
|
_value;
|
|
@@ -339,8 +345,10 @@ class StateSignal {
|
|
|
339
345
|
constructor(value, equals = (a, b) => a === b, desc = "signal") {
|
|
340
346
|
this._value = value;
|
|
341
347
|
this._equals = equals;
|
|
342
|
-
|
|
343
|
-
|
|
348
|
+
{
|
|
349
|
+
this._id = STATE_ID++;
|
|
350
|
+
this._desc = desc;
|
|
351
|
+
}
|
|
344
352
|
}
|
|
345
353
|
get value() {
|
|
346
354
|
this.consume();
|
|
@@ -384,7 +392,7 @@ class StateSignal {
|
|
|
384
392
|
}
|
|
385
393
|
dirtySignal(sub);
|
|
386
394
|
}
|
|
387
|
-
this._subs
|
|
395
|
+
this._subs.clear();
|
|
388
396
|
scheduleListeners(this);
|
|
389
397
|
}
|
|
390
398
|
addListener(listener) {
|
|
@@ -405,13 +413,12 @@ function runListeners$1(signal2) {
|
|
|
405
413
|
listener();
|
|
406
414
|
}
|
|
407
415
|
}
|
|
408
|
-
const FALSE_EQUALS$1 = () => false;
|
|
409
416
|
function signal(initialValue, opts) {
|
|
410
|
-
const equals = opts?.equals === false ? FALSE_EQUALS
|
|
417
|
+
const equals = opts?.equals === false ? FALSE_EQUALS : opts?.equals ?? ((a, b) => a === b);
|
|
411
418
|
return new StateSignal(initialValue, equals, opts?.desc);
|
|
412
419
|
}
|
|
413
420
|
const notifier = (opts) => {
|
|
414
|
-
return new StateSignal(void 0, FALSE_EQUALS
|
|
421
|
+
return new StateSignal(void 0, FALSE_EQUALS, opts?.desc);
|
|
415
422
|
};
|
|
416
423
|
function watchSignal(signal2, parentIsSuspended) {
|
|
417
424
|
if (parentIsSuspended) {
|
|
@@ -535,7 +542,8 @@ let PENDING_GC = /* @__PURE__ */ new Set();
|
|
|
535
542
|
const microtask = () => Promise.resolve();
|
|
536
543
|
let currentFlush = null;
|
|
537
544
|
const scheduleFlush = (fn) => {
|
|
538
|
-
if (currentFlush)
|
|
545
|
+
if (currentFlush)
|
|
546
|
+
return;
|
|
539
547
|
let resolve;
|
|
540
548
|
const promise = new Promise((r) => resolve = r);
|
|
541
549
|
currentFlush = { promise, resolve };
|
|
@@ -572,7 +580,8 @@ const scheduleTracer = (tracer) => {
|
|
|
572
580
|
};
|
|
573
581
|
const scheduleGcSweep = (scope) => {
|
|
574
582
|
PENDING_GC.add(scope);
|
|
575
|
-
if (PENDING_GC.size > 1)
|
|
583
|
+
if (PENDING_GC.size > 1)
|
|
584
|
+
return;
|
|
576
585
|
scheduleIdleCallback(() => {
|
|
577
586
|
for (const scope2 of PENDING_GC) {
|
|
578
587
|
scope2.sweepGc();
|
|
@@ -582,6 +591,8 @@ const scheduleGcSweep = (scope) => {
|
|
|
582
591
|
};
|
|
583
592
|
const flushWatchers = async () => {
|
|
584
593
|
const flush = currentFlush;
|
|
594
|
+
if (!flush)
|
|
595
|
+
return;
|
|
585
596
|
while (PENDING_ASYNC_PULLS.length > 0 || PENDING_PULLS.size > 0) {
|
|
586
597
|
const asyncPulls = PENDING_ASYNC_PULLS;
|
|
587
598
|
PENDING_ASYNC_PULLS = [];
|
|
@@ -625,19 +636,17 @@ const settled = async () => {
|
|
|
625
636
|
};
|
|
626
637
|
function dirtySignal(signal2) {
|
|
627
638
|
const prevState = signal2._state;
|
|
628
|
-
if (prevState ===
|
|
639
|
+
if (prevState === 2) {
|
|
629
640
|
return;
|
|
630
641
|
}
|
|
631
|
-
signal2._state =
|
|
632
|
-
if (prevState <
|
|
642
|
+
signal2._state = 2;
|
|
643
|
+
if (prevState < 3) {
|
|
633
644
|
propagateDirty(signal2);
|
|
634
645
|
}
|
|
635
646
|
}
|
|
636
647
|
function propagateDirty(signal2) {
|
|
637
648
|
if (getCurrentConsumer() === signal2) {
|
|
638
|
-
throw new Error(
|
|
639
|
-
"A signal was dirtied after it was consumed by the current function. This can cause race conditions and infinite rerenders and is not allowed."
|
|
640
|
-
);
|
|
649
|
+
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.");
|
|
641
650
|
}
|
|
642
651
|
if (isRelay(signal2)) {
|
|
643
652
|
if (signal2.watchCount > 0) {
|
|
@@ -648,31 +657,32 @@ function propagateDirty(signal2) {
|
|
|
648
657
|
schedulePull(signal2);
|
|
649
658
|
}
|
|
650
659
|
dirtySignalConsumers(signal2.subs);
|
|
651
|
-
signal2.subs
|
|
660
|
+
signal2.subs.clear();
|
|
652
661
|
}
|
|
653
662
|
}
|
|
654
663
|
function dirtySignalConsumers(map) {
|
|
655
664
|
for (const [subRef, edge] of map) {
|
|
656
665
|
const sub = subRef.deref();
|
|
657
|
-
if (sub === void 0 || sub.computedCount !== edge.consumedAt)
|
|
666
|
+
if (sub === void 0 || sub.computedCount !== edge.consumedAt)
|
|
667
|
+
continue;
|
|
658
668
|
const dirtyState = sub._state;
|
|
659
669
|
switch (dirtyState) {
|
|
660
|
-
case
|
|
661
|
-
sub._state =
|
|
670
|
+
case 0:
|
|
671
|
+
sub._state = 3;
|
|
662
672
|
sub.dirtyHead = edge;
|
|
663
673
|
edge.nextDirty = void 0;
|
|
664
674
|
propagateDirty(sub);
|
|
665
675
|
break;
|
|
666
|
-
case
|
|
667
|
-
case
|
|
668
|
-
case
|
|
676
|
+
case 1:
|
|
677
|
+
case 3:
|
|
678
|
+
case 4: {
|
|
669
679
|
let subEdge = sub.dirtyHead;
|
|
670
680
|
const ord = edge.ord;
|
|
671
681
|
if (subEdge.ord > ord) {
|
|
672
682
|
sub.dirtyHead = edge;
|
|
673
683
|
edge.nextDirty = subEdge;
|
|
674
|
-
if (dirtyState ===
|
|
675
|
-
sub._state =
|
|
684
|
+
if (dirtyState === 1 || dirtyState === 4) {
|
|
685
|
+
sub._state = 3;
|
|
676
686
|
propagateDirty(sub);
|
|
677
687
|
}
|
|
678
688
|
} else {
|
|
@@ -693,21 +703,25 @@ function dirtySignalConsumers(map) {
|
|
|
693
703
|
}
|
|
694
704
|
}
|
|
695
705
|
let CURRENT_ORD = 0;
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
706
|
+
class EdgeBase {
|
|
707
|
+
type;
|
|
708
|
+
dep;
|
|
709
|
+
ord;
|
|
710
|
+
updatedAt;
|
|
711
|
+
consumedAt;
|
|
712
|
+
nextDirty;
|
|
713
|
+
constructor(type, dep, updatedAt, consumedAt) {
|
|
714
|
+
this.type = type;
|
|
715
|
+
this.dep = dep;
|
|
716
|
+
this.ord = CURRENT_ORD++;
|
|
717
|
+
this.updatedAt = updatedAt;
|
|
718
|
+
this.consumedAt = consumedAt;
|
|
719
|
+
this.nextDirty = void 0;
|
|
720
|
+
}
|
|
721
|
+
}
|
|
701
722
|
function createEdge(prevEdge, type, dep, updatedAt, consumedAt) {
|
|
702
723
|
if (prevEdge === void 0) {
|
|
703
|
-
return
|
|
704
|
-
type,
|
|
705
|
-
dep,
|
|
706
|
-
ord: CURRENT_ORD++,
|
|
707
|
-
updatedAt,
|
|
708
|
-
consumedAt,
|
|
709
|
-
nextDirty: void 0
|
|
710
|
-
};
|
|
724
|
+
return new EdgeBase(type, dep, updatedAt, consumedAt);
|
|
711
725
|
}
|
|
712
726
|
prevEdge.ord = CURRENT_ORD++;
|
|
713
727
|
prevEdge.updatedAt = updatedAt;
|
|
@@ -735,14 +749,6 @@ function findAndRemoveDirty(sub, dep) {
|
|
|
735
749
|
}
|
|
736
750
|
return void 0;
|
|
737
751
|
}
|
|
738
|
-
const DEFAULT_EQUALS = (a, b) => a === b;
|
|
739
|
-
const FALSE_EQUALS = () => false;
|
|
740
|
-
const equalsFrom = (equals) => {
|
|
741
|
-
if (equals === false) {
|
|
742
|
-
return FALSE_EQUALS;
|
|
743
|
-
}
|
|
744
|
-
return equals ?? DEFAULT_EQUALS;
|
|
745
|
-
};
|
|
746
752
|
const GeneratorResultConstructor = (function* () {
|
|
747
753
|
})().constructor;
|
|
748
754
|
function isGeneratorResult(value) {
|
|
@@ -931,12 +937,15 @@ class ReactivePromiseImpl {
|
|
|
931
937
|
let remaining = len;
|
|
932
938
|
let rejected = false;
|
|
933
939
|
const onFulfillAt = (i) => (v) => {
|
|
934
|
-
if (rejected)
|
|
940
|
+
if (rejected)
|
|
941
|
+
return;
|
|
935
942
|
results[i] = v;
|
|
936
|
-
if (--remaining === 0)
|
|
943
|
+
if (--remaining === 0)
|
|
944
|
+
p._setValue(results);
|
|
937
945
|
};
|
|
938
946
|
const onReject = (r) => {
|
|
939
|
-
if (rejected)
|
|
947
|
+
if (rejected)
|
|
948
|
+
return;
|
|
940
949
|
rejected = true;
|
|
941
950
|
p._setError(r);
|
|
942
951
|
};
|
|
@@ -949,15 +958,18 @@ class ReactivePromiseImpl {
|
|
|
949
958
|
const p = new ReactivePromiseImpl();
|
|
950
959
|
const arr = arrayFrom(values);
|
|
951
960
|
const len = arr.length;
|
|
952
|
-
if (len === 0)
|
|
961
|
+
if (len === 0)
|
|
962
|
+
return p;
|
|
953
963
|
let settled2 = false;
|
|
954
964
|
const onFulfill = (v) => {
|
|
955
|
-
if (settled2)
|
|
965
|
+
if (settled2)
|
|
966
|
+
return;
|
|
956
967
|
settled2 = true;
|
|
957
968
|
p._setValue(v);
|
|
958
969
|
};
|
|
959
970
|
const onReject = (r) => {
|
|
960
|
-
if (settled2)
|
|
971
|
+
if (settled2)
|
|
972
|
+
return;
|
|
961
973
|
settled2 = true;
|
|
962
974
|
p._setError(r);
|
|
963
975
|
};
|
|
@@ -978,12 +990,14 @@ class ReactivePromiseImpl {
|
|
|
978
990
|
const errors = new Array(len);
|
|
979
991
|
let fulfilled = false;
|
|
980
992
|
const onFulfill = (value) => {
|
|
981
|
-
if (fulfilled)
|
|
993
|
+
if (fulfilled)
|
|
994
|
+
return;
|
|
982
995
|
fulfilled = true;
|
|
983
996
|
p._setValue(value);
|
|
984
997
|
};
|
|
985
998
|
const onRejectAt = (index) => (reason) => {
|
|
986
|
-
if (fulfilled)
|
|
999
|
+
if (fulfilled)
|
|
1000
|
+
return;
|
|
987
1001
|
errors[index] = reason;
|
|
988
1002
|
if (--pending === 0) {
|
|
989
1003
|
p._setError(new AggregateError(errors, "All promises were rejected in ReactivePromise.any"));
|
|
@@ -1006,11 +1020,13 @@ class ReactivePromiseImpl {
|
|
|
1006
1020
|
let remaining = len;
|
|
1007
1021
|
const onFulfillAt = (index) => (value) => {
|
|
1008
1022
|
results[index] = { status: "fulfilled", value };
|
|
1009
|
-
if (--remaining === 0)
|
|
1023
|
+
if (--remaining === 0)
|
|
1024
|
+
p._setValue(results);
|
|
1010
1025
|
};
|
|
1011
1026
|
const onRejectAt = (index) => (reason) => {
|
|
1012
1027
|
results[index] = { status: "rejected", reason };
|
|
1013
|
-
if (--remaining === 0)
|
|
1028
|
+
if (--remaining === 0)
|
|
1029
|
+
p._setValue(results);
|
|
1014
1030
|
};
|
|
1015
1031
|
for (let i = 0; i < len; i++) {
|
|
1016
1032
|
thenLoop(arr[i], onFulfillAt(i), onRejectAt(i));
|
|
@@ -1018,7 +1034,8 @@ class ReactivePromiseImpl {
|
|
|
1018
1034
|
return p;
|
|
1019
1035
|
}
|
|
1020
1036
|
static resolve(value) {
|
|
1021
|
-
if (value instanceof ReactivePromiseImpl)
|
|
1037
|
+
if (value instanceof ReactivePromiseImpl)
|
|
1038
|
+
return value;
|
|
1022
1039
|
return new ReactivePromiseImpl((resolve) => resolve(value));
|
|
1023
1040
|
}
|
|
1024
1041
|
static reject(reason) {
|
|
@@ -1029,7 +1046,7 @@ class ReactivePromiseImpl {
|
|
|
1029
1046
|
p._equals = DEFAULT_EQUALS;
|
|
1030
1047
|
p._initFlags(
|
|
1031
1048
|
1
|
|
1032
|
-
/* Pending */
|
|
1049
|
+
/* AsyncFlags.Pending */
|
|
1033
1050
|
);
|
|
1034
1051
|
const resolve = (value) => {
|
|
1035
1052
|
if (value && typeof value.then === "function") {
|
|
@@ -1057,7 +1074,8 @@ class ReactivePromiseImpl {
|
|
|
1057
1074
|
}
|
|
1058
1075
|
_consumeFlags(flags) {
|
|
1059
1076
|
const currentConsumer = getCurrentConsumer();
|
|
1060
|
-
if (currentConsumer === void 0)
|
|
1077
|
+
if (currentConsumer === void 0)
|
|
1078
|
+
return;
|
|
1061
1079
|
if ((this._flags & 128) !== 0) {
|
|
1062
1080
|
this._connect();
|
|
1063
1081
|
}
|
|
@@ -1073,7 +1091,7 @@ class ReactivePromiseImpl {
|
|
|
1073
1091
|
const { ref, computedCount, deps } = currentConsumer;
|
|
1074
1092
|
const prevEdge = deps.get(signal2);
|
|
1075
1093
|
if (prevEdge?.consumedAt !== computedCount) {
|
|
1076
|
-
const newEdge = createEdge(prevEdge,
|
|
1094
|
+
const newEdge = createEdge(prevEdge, 0, signal2, signal2.updatedCount, computedCount);
|
|
1077
1095
|
signal2.subs.set(ref, newEdge);
|
|
1078
1096
|
deps.set(signal2, newEdge);
|
|
1079
1097
|
}
|
|
@@ -1130,7 +1148,7 @@ class ReactivePromiseImpl {
|
|
|
1130
1148
|
}
|
|
1131
1149
|
this._setFlags(
|
|
1132
1150
|
1
|
|
1133
|
-
/* Pending */
|
|
1151
|
+
/* AsyncFlags.Pending */
|
|
1134
1152
|
);
|
|
1135
1153
|
dirtySignalConsumers(this._awaitSubs);
|
|
1136
1154
|
return this._awaitSubs = /* @__PURE__ */ new Map();
|
|
@@ -1222,7 +1240,7 @@ class ReactivePromiseImpl {
|
|
|
1222
1240
|
}
|
|
1223
1241
|
}
|
|
1224
1242
|
_scheduleSubs(awaitSubs, dirty) {
|
|
1225
|
-
const newState = dirty ?
|
|
1243
|
+
const newState = dirty ? 2 : 4;
|
|
1226
1244
|
for (const ref of awaitSubs.keys()) {
|
|
1227
1245
|
const signal2 = ref.deref();
|
|
1228
1246
|
if (signal2 === void 0) {
|
|
@@ -1235,49 +1253,49 @@ class ReactivePromiseImpl {
|
|
|
1235
1253
|
get value() {
|
|
1236
1254
|
this._consumeFlags(
|
|
1237
1255
|
16
|
|
1238
|
-
/* Value */
|
|
1256
|
+
/* AsyncFlags.Value */
|
|
1239
1257
|
);
|
|
1240
1258
|
return this._value;
|
|
1241
1259
|
}
|
|
1242
1260
|
get error() {
|
|
1243
1261
|
this._consumeFlags(
|
|
1244
1262
|
32
|
|
1245
|
-
/* Error */
|
|
1263
|
+
/* AsyncFlags.Error */
|
|
1246
1264
|
);
|
|
1247
1265
|
return this._error;
|
|
1248
1266
|
}
|
|
1249
1267
|
get isPending() {
|
|
1250
1268
|
this._consumeFlags(
|
|
1251
1269
|
1
|
|
1252
|
-
/* Pending */
|
|
1270
|
+
/* AsyncFlags.Pending */
|
|
1253
1271
|
);
|
|
1254
1272
|
return (this._flags & 1) !== 0;
|
|
1255
1273
|
}
|
|
1256
1274
|
get isRejected() {
|
|
1257
1275
|
this._consumeFlags(
|
|
1258
1276
|
2
|
|
1259
|
-
/* Rejected */
|
|
1277
|
+
/* AsyncFlags.Rejected */
|
|
1260
1278
|
);
|
|
1261
1279
|
return (this._flags & 2) !== 0;
|
|
1262
1280
|
}
|
|
1263
1281
|
get isResolved() {
|
|
1264
1282
|
this._consumeFlags(
|
|
1265
1283
|
4
|
|
1266
|
-
/* Resolved */
|
|
1284
|
+
/* AsyncFlags.Resolved */
|
|
1267
1285
|
);
|
|
1268
1286
|
return (this._flags & 4) !== 0;
|
|
1269
1287
|
}
|
|
1270
1288
|
get isReady() {
|
|
1271
1289
|
this._consumeFlags(
|
|
1272
1290
|
8
|
|
1273
|
-
/* Ready */
|
|
1291
|
+
/* AsyncFlags.Ready */
|
|
1274
1292
|
);
|
|
1275
1293
|
return (this._flags & 8) !== 0;
|
|
1276
1294
|
}
|
|
1277
1295
|
get isSettled() {
|
|
1278
1296
|
this._consumeFlags(
|
|
1279
1297
|
6
|
|
1280
|
-
/* Settled */
|
|
1298
|
+
/* AsyncFlags.Settled */
|
|
1281
1299
|
);
|
|
1282
1300
|
return (this._flags & 6) !== 0;
|
|
1283
1301
|
}
|
|
@@ -1293,13 +1311,7 @@ class ReactivePromiseImpl {
|
|
|
1293
1311
|
}
|
|
1294
1312
|
ref = currentConsumer.ref;
|
|
1295
1313
|
const prevEdge = this._awaitSubs.get(ref) ?? findAndRemoveDirty(currentConsumer, this);
|
|
1296
|
-
edge = createEdge(
|
|
1297
|
-
prevEdge,
|
|
1298
|
-
EdgeType.Promise,
|
|
1299
|
-
this,
|
|
1300
|
-
this._updatedCount,
|
|
1301
|
-
currentConsumer.computedCount
|
|
1302
|
-
);
|
|
1314
|
+
edge = createEdge(prevEdge, 1, this, this._updatedCount, currentConsumer.computedCount);
|
|
1303
1315
|
}
|
|
1304
1316
|
const wrappedFulfilled = onfulfilled ? (value) => {
|
|
1305
1317
|
try {
|
|
@@ -1335,16 +1347,13 @@ class ReactivePromiseImpl {
|
|
|
1335
1347
|
return this.then(null, onrejected);
|
|
1336
1348
|
}
|
|
1337
1349
|
finally(onfinally) {
|
|
1338
|
-
return this.then(
|
|
1339
|
-
(
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
throw reason;
|
|
1346
|
-
}
|
|
1347
|
-
);
|
|
1350
|
+
return this.then((value) => {
|
|
1351
|
+
onfinally?.();
|
|
1352
|
+
return value;
|
|
1353
|
+
}, (reason) => {
|
|
1354
|
+
onfinally?.();
|
|
1355
|
+
throw reason;
|
|
1356
|
+
});
|
|
1348
1357
|
}
|
|
1349
1358
|
get [Symbol.toStringTag]() {
|
|
1350
1359
|
return `ReactivePromise`;
|
|
@@ -1366,7 +1375,7 @@ function createPromise(promise, signal2) {
|
|
|
1366
1375
|
p["_equals"] = signal2.def.equals;
|
|
1367
1376
|
p["_initFlags"](
|
|
1368
1377
|
1
|
|
1369
|
-
/* Pending */
|
|
1378
|
+
/* AsyncFlags.Pending */
|
|
1370
1379
|
);
|
|
1371
1380
|
p["_setPromise"](promise);
|
|
1372
1381
|
return p;
|
|
@@ -1383,7 +1392,7 @@ function createRelay(activate, scope, opts) {
|
|
|
1383
1392
|
}
|
|
1384
1393
|
const signal2 = p["_signal"];
|
|
1385
1394
|
signal2.subs = /* @__PURE__ */ new Map();
|
|
1386
|
-
signal2._state =
|
|
1395
|
+
signal2._state = 2;
|
|
1387
1396
|
active = false;
|
|
1388
1397
|
currentSub = void 0;
|
|
1389
1398
|
};
|
|
@@ -1428,7 +1437,7 @@ function createRelay(activate, scope, opts) {
|
|
|
1428
1437
|
p["_equals"] = equalsFrom(opts?.equals);
|
|
1429
1438
|
p["_initFlags"](
|
|
1430
1439
|
128 | 1
|
|
1431
|
-
/* Pending */
|
|
1440
|
+
/* AsyncFlags.Pending */
|
|
1432
1441
|
);
|
|
1433
1442
|
return p;
|
|
1434
1443
|
}
|
|
@@ -1438,7 +1447,7 @@ function createTask(task, scope, opts) {
|
|
|
1438
1447
|
p["_equals"] = equalsFrom(opts?.equals);
|
|
1439
1448
|
p["_initFlags"](
|
|
1440
1449
|
64
|
|
1441
|
-
/* isRunnable */
|
|
1450
|
+
/* AsyncFlags.isRunnable */
|
|
1442
1451
|
);
|
|
1443
1452
|
const throwIfRunning = opts?.throwIfRunning === true;
|
|
1444
1453
|
p["run"] = ((...args) => {
|
|
@@ -1474,7 +1483,7 @@ function getSignal(signal2) {
|
|
|
1474
1483
|
}
|
|
1475
1484
|
}
|
|
1476
1485
|
const updatedAt = checkSignal(signal2);
|
|
1477
|
-
const newEdge = createEdge(prevEdge,
|
|
1486
|
+
const newEdge = createEdge(prevEdge, 0, signal2, updatedAt, computedCount);
|
|
1478
1487
|
signal2.subs.set(ref, newEdge);
|
|
1479
1488
|
deps.set(signal2, newEdge);
|
|
1480
1489
|
} else {
|
|
@@ -1490,26 +1499,26 @@ function getSignal(signal2) {
|
|
|
1490
1499
|
}
|
|
1491
1500
|
function checkSignal(signal2) {
|
|
1492
1501
|
const { ref, _state: state } = signal2;
|
|
1493
|
-
if (state <
|
|
1502
|
+
if (state < 2) {
|
|
1494
1503
|
return signal2.updatedCount;
|
|
1495
1504
|
}
|
|
1496
|
-
if (state >=
|
|
1505
|
+
if (state >= 3) {
|
|
1497
1506
|
let edge = signal2.dirtyHead;
|
|
1498
1507
|
while (edge !== void 0) {
|
|
1499
|
-
if (edge.type ===
|
|
1508
|
+
if (edge.type === 1) {
|
|
1500
1509
|
const dep2 = edge.dep;
|
|
1501
1510
|
if (dep2._getPending()) {
|
|
1502
1511
|
const value = signal2._value;
|
|
1503
1512
|
dep2["_awaitSubs"].set(ref, edge);
|
|
1504
1513
|
value._setPending();
|
|
1505
|
-
signal2._state =
|
|
1514
|
+
signal2._state = 1;
|
|
1506
1515
|
signal2.dirtyHead = edge;
|
|
1507
1516
|
return signal2.updatedCount;
|
|
1508
1517
|
} else if (edge.updatedAt === edge.dep._updatedCount) {
|
|
1509
1518
|
dep2["_awaitSubs"].set(ref, edge);
|
|
1510
1519
|
} else {
|
|
1511
1520
|
signal2.dirtyHead = edge.nextDirty;
|
|
1512
|
-
signal2._state =
|
|
1521
|
+
signal2._state = 2;
|
|
1513
1522
|
break;
|
|
1514
1523
|
}
|
|
1515
1524
|
edge = edge.nextDirty;
|
|
@@ -1520,23 +1529,23 @@ function checkSignal(signal2) {
|
|
|
1520
1529
|
dep.subs.set(ref, edge);
|
|
1521
1530
|
if (edge.updatedAt !== updatedAt) {
|
|
1522
1531
|
signal2.dirtyHead = edge.nextDirty;
|
|
1523
|
-
signal2._state =
|
|
1532
|
+
signal2._state = 2;
|
|
1524
1533
|
break;
|
|
1525
1534
|
}
|
|
1526
1535
|
edge = edge.nextDirty;
|
|
1527
1536
|
}
|
|
1528
1537
|
}
|
|
1529
1538
|
const newState = signal2._state;
|
|
1530
|
-
if (newState ===
|
|
1539
|
+
if (newState === 2) {
|
|
1531
1540
|
if (signal2._isLazy) {
|
|
1532
1541
|
signal2.updatedCount++;
|
|
1533
1542
|
} else {
|
|
1534
1543
|
runSignal(signal2);
|
|
1535
1544
|
}
|
|
1536
|
-
} else if (newState ===
|
|
1545
|
+
} else if (newState === 4) {
|
|
1537
1546
|
signal2._value._clearPending();
|
|
1538
1547
|
}
|
|
1539
|
-
signal2._state =
|
|
1548
|
+
signal2._state = 0;
|
|
1540
1549
|
signal2.dirtyHead = void 0;
|
|
1541
1550
|
if (getTracerProxy() !== void 0 && signal2.tracerMeta?.tracer) {
|
|
1542
1551
|
scheduleTracer(signal2.tracerMeta.tracer);
|
|
@@ -1723,56 +1732,56 @@ function hashDate(date, _seen) {
|
|
|
1723
1732
|
return hashNumber(
|
|
1724
1733
|
date.getTime(),
|
|
1725
1734
|
14
|
|
1726
|
-
/* DATE */
|
|
1735
|
+
/* HashType.DATE */
|
|
1727
1736
|
);
|
|
1728
1737
|
}
|
|
1729
1738
|
function hashRegExp(regexp, _seen) {
|
|
1730
1739
|
const h = hashStr(
|
|
1731
1740
|
regexp.source + regexp.flags,
|
|
1732
1741
|
15
|
|
1733
|
-
/* REGEXP */
|
|
1742
|
+
/* HashType.REGEXP */
|
|
1734
1743
|
);
|
|
1735
1744
|
return (h ^ regexp.lastIndex) >>> 0;
|
|
1736
1745
|
}
|
|
1737
1746
|
const UNDEFINED = hashStr(
|
|
1738
1747
|
"undefined",
|
|
1739
1748
|
0
|
|
1740
|
-
/* UNDEFINED */
|
|
1749
|
+
/* HashType.UNDEFINED */
|
|
1741
1750
|
);
|
|
1742
1751
|
const NULL = hashStr(
|
|
1743
1752
|
"null",
|
|
1744
1753
|
1
|
|
1745
|
-
/* NULL */
|
|
1754
|
+
/* HashType.NULL */
|
|
1746
1755
|
);
|
|
1747
1756
|
const TRUE = hashStr(
|
|
1748
1757
|
"true",
|
|
1749
1758
|
2
|
|
1750
|
-
/* TRUE */
|
|
1759
|
+
/* HashType.TRUE */
|
|
1751
1760
|
);
|
|
1752
1761
|
const FALSE = hashStr(
|
|
1753
1762
|
"false",
|
|
1754
1763
|
3
|
|
1755
|
-
/* FALSE */
|
|
1764
|
+
/* HashType.FALSE */
|
|
1756
1765
|
);
|
|
1757
1766
|
const ARRAY = hashStr(
|
|
1758
1767
|
"array",
|
|
1759
1768
|
7
|
|
1760
|
-
/* ARRAY */
|
|
1769
|
+
/* HashType.ARRAY */
|
|
1761
1770
|
);
|
|
1762
1771
|
const OBJECT = hashStr(
|
|
1763
1772
|
"object",
|
|
1764
1773
|
8
|
|
1765
|
-
/* OBJECT */
|
|
1774
|
+
/* HashType.OBJECT */
|
|
1766
1775
|
);
|
|
1767
1776
|
const SET = hashStr(
|
|
1768
1777
|
"set",
|
|
1769
1778
|
13
|
|
1770
|
-
/* SET */
|
|
1779
|
+
/* HashType.SET */
|
|
1771
1780
|
);
|
|
1772
1781
|
const MAP = hashStr(
|
|
1773
1782
|
"map",
|
|
1774
1783
|
12
|
|
1775
|
-
/* MAP */
|
|
1784
|
+
/* HashType.MAP */
|
|
1776
1785
|
);
|
|
1777
1786
|
const getObjectProto = Object.getPrototypeOf;
|
|
1778
1787
|
const PROTO_TO_HASH = /* @__PURE__ */ new Map([
|
|
@@ -1796,19 +1805,19 @@ function hashValue(node, seen = []) {
|
|
|
1796
1805
|
return hashStr(
|
|
1797
1806
|
String(node),
|
|
1798
1807
|
4
|
|
1799
|
-
/* NUMBER */
|
|
1808
|
+
/* HashType.NUMBER */
|
|
1800
1809
|
);
|
|
1801
1810
|
case "string":
|
|
1802
1811
|
return hashStr(
|
|
1803
1812
|
node,
|
|
1804
1813
|
5
|
|
1805
|
-
/* STRING */
|
|
1814
|
+
/* HashType.STRING */
|
|
1806
1815
|
);
|
|
1807
1816
|
case "bigint":
|
|
1808
1817
|
return hashStr(
|
|
1809
1818
|
node.toString(),
|
|
1810
1819
|
6
|
|
1811
|
-
/* BIGINT */
|
|
1820
|
+
/* HashType.BIGINT */
|
|
1812
1821
|
);
|
|
1813
1822
|
case "object": {
|
|
1814
1823
|
if (node === null) {
|
|
@@ -1819,7 +1828,7 @@ function hashValue(node, seen = []) {
|
|
|
1819
1828
|
return hashStr(
|
|
1820
1829
|
String(index),
|
|
1821
1830
|
11
|
|
1822
|
-
/* CYCLE */
|
|
1831
|
+
/* HashType.CYCLE */
|
|
1823
1832
|
);
|
|
1824
1833
|
}
|
|
1825
1834
|
const hashFn = PROTO_TO_HASH.get(getObjectProto(node));
|
|
@@ -1837,7 +1846,7 @@ function hashValue(node, seen = []) {
|
|
|
1837
1846
|
return hashStr(
|
|
1838
1847
|
node.toString(),
|
|
1839
1848
|
10
|
|
1840
|
-
/* SYMBOL */
|
|
1849
|
+
/* HashType.SYMBOL */
|
|
1841
1850
|
);
|
|
1842
1851
|
}
|
|
1843
1852
|
}
|
|
@@ -1849,7 +1858,7 @@ function getObjectHash(obj) {
|
|
|
1849
1858
|
id = hashNumber(
|
|
1850
1859
|
nextHashMapId++,
|
|
1851
1860
|
9
|
|
1852
|
-
/* REFERENCE */
|
|
1861
|
+
/* HashType.REFERENCE */
|
|
1853
1862
|
);
|
|
1854
1863
|
objectToHashMap.set(obj, id);
|
|
1855
1864
|
}
|
|
@@ -1883,8 +1892,10 @@ function isPlainArray(arr) {
|
|
|
1883
1892
|
return Array.isArray(arr);
|
|
1884
1893
|
}
|
|
1885
1894
|
function stringifyValue(value) {
|
|
1886
|
-
if (value === null)
|
|
1887
|
-
|
|
1895
|
+
if (value === null)
|
|
1896
|
+
return "null";
|
|
1897
|
+
if (value === void 0)
|
|
1898
|
+
return "undefined";
|
|
1888
1899
|
switch (typeof value) {
|
|
1889
1900
|
case "number":
|
|
1890
1901
|
case "boolean":
|
|
@@ -1916,25 +1927,21 @@ function stringifyValue(value) {
|
|
|
1916
1927
|
return getObjectId(value);
|
|
1917
1928
|
}
|
|
1918
1929
|
}
|
|
1919
|
-
var ReactiveFnState = /* @__PURE__ */ ((ReactiveFnState2) => {
|
|
1920
|
-
ReactiveFnState2[ReactiveFnState2["Clean"] = 0] = "Clean";
|
|
1921
|
-
ReactiveFnState2[ReactiveFnState2["Pending"] = 1] = "Pending";
|
|
1922
|
-
ReactiveFnState2[ReactiveFnState2["Dirty"] = 2] = "Dirty";
|
|
1923
|
-
ReactiveFnState2[ReactiveFnState2["MaybeDirty"] = 3] = "MaybeDirty";
|
|
1924
|
-
ReactiveFnState2[ReactiveFnState2["PendingDirty"] = 4] = "PendingDirty";
|
|
1925
|
-
return ReactiveFnState2;
|
|
1926
|
-
})(ReactiveFnState || {});
|
|
1927
1930
|
let ID = 0;
|
|
1928
1931
|
function createReactiveDefinition(id, desc, compute, equals, isRelay2, paramKey, tracer) {
|
|
1929
|
-
|
|
1930
|
-
id,
|
|
1931
|
-
desc,
|
|
1932
|
+
const def = {
|
|
1932
1933
|
compute,
|
|
1933
1934
|
equals: equalsFrom(equals),
|
|
1934
1935
|
isRelay: isRelay2,
|
|
1935
1936
|
paramKey,
|
|
1936
|
-
tracer
|
|
1937
|
+
tracer: void 0
|
|
1937
1938
|
};
|
|
1939
|
+
{
|
|
1940
|
+
def.id = id;
|
|
1941
|
+
def.desc = desc;
|
|
1942
|
+
def.tracer = tracer;
|
|
1943
|
+
}
|
|
1944
|
+
return def;
|
|
1938
1945
|
}
|
|
1939
1946
|
class ReactiveSignal {
|
|
1940
1947
|
// Bitmask containing state in the first 2 bits and boolean properties in the remaining bits
|
|
@@ -2106,13 +2113,14 @@ function createReactiveSignal(def, args = [], key, scope) {
|
|
|
2106
2113
|
}
|
|
2107
2114
|
let CONTEXT_ID = 0;
|
|
2108
2115
|
class ContextImpl {
|
|
2116
|
+
defaultValue;
|
|
2117
|
+
_key;
|
|
2118
|
+
_description;
|
|
2109
2119
|
constructor(defaultValue, desc) {
|
|
2110
2120
|
this.defaultValue = defaultValue;
|
|
2111
2121
|
this._description = desc ?? `context:${CONTEXT_ID++}`;
|
|
2112
2122
|
this._key = Symbol(this._description);
|
|
2113
2123
|
}
|
|
2114
|
-
_key;
|
|
2115
|
-
_description;
|
|
2116
2124
|
}
|
|
2117
2125
|
const context = (initialValue, description) => {
|
|
2118
2126
|
return new ContextImpl(initialValue, description);
|
|
@@ -2130,9 +2138,7 @@ function withContexts(contexts, fn) {
|
|
|
2130
2138
|
const getContext = (context2) => {
|
|
2131
2139
|
const scope = CURRENT_SCOPE ?? getCurrentConsumer()?.scope;
|
|
2132
2140
|
if (scope === void 0) {
|
|
2133
|
-
throw new Error(
|
|
2134
|
-
"getContext must be used within a reactive function, a withContext, or within a framework-specific context provider."
|
|
2135
|
-
);
|
|
2141
|
+
throw new Error("getContext must be used within a reactive function, a withContext, or within a framework-specific context provider.");
|
|
2136
2142
|
}
|
|
2137
2143
|
return scope.getContext(context2) ?? context2.defaultValue;
|
|
2138
2144
|
};
|
|
@@ -2272,8 +2278,8 @@ export {
|
|
|
2272
2278
|
getCurrentConsumer as f,
|
|
2273
2279
|
getCurrentScope as g,
|
|
2274
2280
|
getGlobalScope as h,
|
|
2275
|
-
|
|
2276
|
-
|
|
2281
|
+
isReactivePromise as i,
|
|
2282
|
+
hashValue as j,
|
|
2277
2283
|
isRelay$1 as k,
|
|
2278
2284
|
getSignal as l,
|
|
2279
2285
|
isPromise as m,
|
|
@@ -2291,4 +2297,4 @@ export {
|
|
|
2291
2297
|
withContexts as y,
|
|
2292
2298
|
setGlobalContexts as z
|
|
2293
2299
|
};
|
|
2294
|
-
//# sourceMappingURL=debug-
|
|
2300
|
+
//# sourceMappingURL=debug-AoHfqs62.js.map
|