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