@thyn/core 0.0.120 → 0.0.121
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/dist/element.js +5 -5
- package/dist/signals.d.ts +6 -16
- package/dist/signals.js +24 -137
- package/package.json +1 -1
- package/src/element.ts +5 -5
- package/src/signals.ts +38 -177
- package/tsconfig.tsbuildinfo +1 -1
package/dist/element.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $effect, cleanup } from "./signals.js";
|
|
1
|
+
import { $effect, cleanup, EffectFlags } from "./signals.js";
|
|
2
2
|
export function mount(app, parent) {
|
|
3
3
|
parent.appendChild(app());
|
|
4
4
|
}
|
|
@@ -37,10 +37,10 @@ export function component(name, props) {
|
|
|
37
37
|
if (existing) {
|
|
38
38
|
let current = existing;
|
|
39
39
|
while (current) {
|
|
40
|
-
if (current.
|
|
40
|
+
if (current.flags & EffectFlags.Moves) {
|
|
41
41
|
let curr = collectingHead;
|
|
42
42
|
while (curr) {
|
|
43
|
-
curr.
|
|
43
|
+
curr.flags |= EffectFlags.Moves;
|
|
44
44
|
curr = curr.next;
|
|
45
45
|
}
|
|
46
46
|
break;
|
|
@@ -212,8 +212,8 @@ export function show(props) {
|
|
|
212
212
|
const prevFx = prevElem.$fx;
|
|
213
213
|
let sticky = null;
|
|
214
214
|
if (prevFx) {
|
|
215
|
-
sticky = filterEffects(prevFx, f => f.
|
|
216
|
-
prevElem.$fx = filterEffects(prevFx, f => !f.
|
|
215
|
+
sticky = filterEffects(prevFx, f => f.flags & EffectFlags.Moves);
|
|
216
|
+
prevElem.$fx = filterEffects(prevFx, f => !(f.flags & EffectFlags.Moves));
|
|
217
217
|
}
|
|
218
218
|
if (sticky) {
|
|
219
219
|
// Find tail of sticky effects
|
package/dist/signals.d.ts
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
declare
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
constructor(capacity?: number);
|
|
6
|
-
add(effect: any): boolean;
|
|
7
|
-
has(effect: any): boolean;
|
|
8
|
-
delete(effect: any): boolean;
|
|
9
|
-
clear(): void;
|
|
10
|
-
get size(): number;
|
|
11
|
-
[Symbol.iterator](): Iterator<any>;
|
|
12
|
-
forEach(callback: (effect: any) => void): void;
|
|
1
|
+
export declare enum EffectFlags {
|
|
2
|
+
None = 0,
|
|
3
|
+
Dynamic = 1,
|
|
4
|
+
Moves = 2
|
|
13
5
|
}
|
|
14
6
|
export type Signal<T> = {
|
|
15
7
|
(): T;
|
|
@@ -20,11 +12,9 @@ export declare function $signal<T>(value: T): Signal<T>;
|
|
|
20
12
|
export declare function $compare<T>(fn: () => T): (value: T) => boolean;
|
|
21
13
|
interface EffectFn {
|
|
22
14
|
run: () => (() => void) | void;
|
|
23
|
-
deps:
|
|
24
|
-
mv?: boolean;
|
|
25
|
-
dyn?: boolean;
|
|
15
|
+
deps: Set<any>;
|
|
26
16
|
td?: (() => void)[];
|
|
27
|
-
|
|
17
|
+
flags: number;
|
|
28
18
|
}
|
|
29
19
|
export declare function $effect(fn: EffectFn["run"], stat?: boolean, mv?: boolean): EffectFn;
|
|
30
20
|
export declare function cleanup(effectFn: EffectFn): void;
|
package/dist/signals.js
CHANGED
|
@@ -2,131 +2,19 @@ import { collectEffect } from "./element.js";
|
|
|
2
2
|
let currentEffect;
|
|
3
3
|
let isBatching;
|
|
4
4
|
const pendingEffects = [];
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
this.maxCapacity = capacity;
|
|
12
|
-
this.bits = new Uint32Array(Math.ceil(capacity / 32));
|
|
13
|
-
}
|
|
14
|
-
add(id) {
|
|
15
|
-
if (id >= this.maxCapacity)
|
|
16
|
-
return false;
|
|
17
|
-
const wordIndex = Math.floor(id / 32);
|
|
18
|
-
const bitIndex = id % 32;
|
|
19
|
-
const mask = 1 << bitIndex;
|
|
20
|
-
if (!(this.bits[wordIndex] & mask)) {
|
|
21
|
-
this.bits[wordIndex] |= mask;
|
|
22
|
-
this._size++;
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
has(id) {
|
|
28
|
-
if (id >= this.maxCapacity)
|
|
29
|
-
return false;
|
|
30
|
-
const wordIndex = Math.floor(id / 32);
|
|
31
|
-
const bitIndex = id % 32;
|
|
32
|
-
return !!(this.bits[wordIndex] & (1 << bitIndex));
|
|
33
|
-
}
|
|
34
|
-
delete(id) {
|
|
35
|
-
if (id >= this.maxCapacity)
|
|
36
|
-
return false;
|
|
37
|
-
const wordIndex = Math.floor(id / 32);
|
|
38
|
-
const bitIndex = id % 32;
|
|
39
|
-
const mask = 1 << bitIndex;
|
|
40
|
-
if (this.bits[wordIndex] & mask) {
|
|
41
|
-
this.bits[wordIndex] &= ~mask;
|
|
42
|
-
this._size--;
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
clear() {
|
|
48
|
-
this.bits.fill(0);
|
|
49
|
-
this._size = 0;
|
|
50
|
-
}
|
|
51
|
-
get size() {
|
|
52
|
-
return this._size;
|
|
53
|
-
}
|
|
54
|
-
*[Symbol.iterator]() {
|
|
55
|
-
for (let wordIndex = 0; wordIndex < this.bits.length; wordIndex++) {
|
|
56
|
-
const word = this.bits[wordIndex];
|
|
57
|
-
if (word === 0)
|
|
58
|
-
continue;
|
|
59
|
-
for (let bitIndex = 0; bitIndex < 32; bitIndex++) {
|
|
60
|
-
if (word & (1 << bitIndex)) {
|
|
61
|
-
yield wordIndex * 32 + bitIndex;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
forEach(callback) {
|
|
67
|
-
for (const id of this) {
|
|
68
|
-
callback(id);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// Wrapper to make BitSet work with effect objects
|
|
73
|
-
class EffectBitSet {
|
|
74
|
-
constructor(capacity = 1024) {
|
|
75
|
-
this.effects = new Map();
|
|
76
|
-
this.ids = new Map();
|
|
77
|
-
this.bitSet = new BitSet(capacity);
|
|
78
|
-
}
|
|
79
|
-
add(effect) {
|
|
80
|
-
if (this.effects.has(effect))
|
|
81
|
-
return false;
|
|
82
|
-
// Assign ID to effect if it doesn't have one
|
|
83
|
-
if (!effect._id) {
|
|
84
|
-
effect._id = nextEffectId++;
|
|
85
|
-
effectRegistry.set(effect._id, effect);
|
|
86
|
-
}
|
|
87
|
-
this.effects.set(effect, effect._id);
|
|
88
|
-
this.ids.set(effect._id, effect);
|
|
89
|
-
return this.bitSet.add(effect._id);
|
|
90
|
-
}
|
|
91
|
-
has(effect) {
|
|
92
|
-
return this.effects.has(effect);
|
|
93
|
-
}
|
|
94
|
-
delete(effect) {
|
|
95
|
-
if (!this.effects.has(effect))
|
|
96
|
-
return false;
|
|
97
|
-
const id = this.effects.get(effect);
|
|
98
|
-
this.effects.delete(effect);
|
|
99
|
-
this.ids.delete(id);
|
|
100
|
-
return this.bitSet.delete(id);
|
|
101
|
-
}
|
|
102
|
-
clear() {
|
|
103
|
-
this.effects.clear();
|
|
104
|
-
this.ids.clear();
|
|
105
|
-
this.bitSet.clear();
|
|
106
|
-
}
|
|
107
|
-
get size() {
|
|
108
|
-
return this.bitSet.size;
|
|
109
|
-
}
|
|
110
|
-
*[Symbol.iterator]() {
|
|
111
|
-
for (const id of this.bitSet) {
|
|
112
|
-
const effect = this.ids.get(id);
|
|
113
|
-
if (effect)
|
|
114
|
-
yield effect;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
forEach(callback) {
|
|
118
|
-
for (const effect of this) {
|
|
119
|
-
callback(effect);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
5
|
+
export var EffectFlags;
|
|
6
|
+
(function (EffectFlags) {
|
|
7
|
+
EffectFlags[EffectFlags["None"] = 0] = "None";
|
|
8
|
+
EffectFlags[EffectFlags["Dynamic"] = 1] = "Dynamic";
|
|
9
|
+
EffectFlags[EffectFlags["Moves"] = 2] = "Moves";
|
|
10
|
+
})(EffectFlags || (EffectFlags = {}));
|
|
123
11
|
function scheduleEffect(effectFn) {
|
|
124
12
|
pendingEffects.push(effectFn);
|
|
125
13
|
if (!isBatching) {
|
|
126
14
|
isBatching = true;
|
|
127
15
|
queueMicrotask(() => {
|
|
128
16
|
for (const ef of pendingEffects) {
|
|
129
|
-
if (ef.
|
|
17
|
+
if (ef.flags & EffectFlags.Dynamic) {
|
|
130
18
|
cleanup(ef);
|
|
131
19
|
const prev = currentEffect;
|
|
132
20
|
currentEffect = ef;
|
|
@@ -143,7 +31,7 @@ function scheduleEffect(effectFn) {
|
|
|
143
31
|
}
|
|
144
32
|
}
|
|
145
33
|
export function $signal(value) {
|
|
146
|
-
const subscribers = new
|
|
34
|
+
const subscribers = new Set();
|
|
147
35
|
return (...args) => {
|
|
148
36
|
if (!args.length) {
|
|
149
37
|
if (currentEffect) {
|
|
@@ -158,7 +46,9 @@ export function $signal(value) {
|
|
|
158
46
|
: action;
|
|
159
47
|
if (newValue !== value) {
|
|
160
48
|
value = newValue;
|
|
161
|
-
|
|
49
|
+
for (const sub of subscribers) {
|
|
50
|
+
scheduleEffect(sub);
|
|
51
|
+
}
|
|
162
52
|
}
|
|
163
53
|
};
|
|
164
54
|
}
|
|
@@ -172,21 +62,20 @@ export function $compare(fn) {
|
|
|
172
62
|
const prevSubs = map.get(current);
|
|
173
63
|
const nextSubs = map.get(newValue);
|
|
174
64
|
current = newValue;
|
|
175
|
-
// Only notify subscribers for new and old values
|
|
176
65
|
if (prevSubs) {
|
|
177
|
-
|
|
66
|
+
for (const sub of prevSubs)
|
|
67
|
+
scheduleEffect(sub);
|
|
178
68
|
}
|
|
179
69
|
if (nextSubs) {
|
|
180
|
-
|
|
70
|
+
for (const sub of nextSubs)
|
|
71
|
+
scheduleEffect(sub);
|
|
181
72
|
}
|
|
182
73
|
}, true);
|
|
183
74
|
return (value) => {
|
|
184
75
|
if (currentEffect) {
|
|
185
76
|
let subs = map.get(value);
|
|
186
|
-
if (!subs)
|
|
187
|
-
subs = new
|
|
188
|
-
map.set(value, subs);
|
|
189
|
-
}
|
|
77
|
+
if (!subs)
|
|
78
|
+
map.set(value, subs = new Set());
|
|
190
79
|
subs.add(currentEffect);
|
|
191
80
|
currentEffect.deps.add(subs);
|
|
192
81
|
const teardownFn = () => {
|
|
@@ -217,14 +106,13 @@ function runEffectFn(effectFn) {
|
|
|
217
106
|
}
|
|
218
107
|
}
|
|
219
108
|
export function $effect(fn, stat, mv) {
|
|
109
|
+
const flags = (stat ? 0 : EffectFlags.Dynamic) |
|
|
110
|
+
(mv ? EffectFlags.Moves : 0);
|
|
220
111
|
const effectFn = {
|
|
221
112
|
run: fn,
|
|
222
|
-
deps: new
|
|
113
|
+
deps: new Set(),
|
|
114
|
+
flags,
|
|
223
115
|
};
|
|
224
|
-
if (!stat)
|
|
225
|
-
effectFn.dyn = true;
|
|
226
|
-
if (mv)
|
|
227
|
-
effectFn.mv = true;
|
|
228
116
|
const prev = currentEffect;
|
|
229
117
|
currentEffect = effectFn;
|
|
230
118
|
runEffectFn(effectFn);
|
|
@@ -233,12 +121,11 @@ export function $effect(fn, stat, mv) {
|
|
|
233
121
|
return effectFn;
|
|
234
122
|
}
|
|
235
123
|
export function cleanup(effectFn) {
|
|
236
|
-
effectFn.deps
|
|
124
|
+
for (const subs of effectFn.deps) {
|
|
237
125
|
subs.delete(effectFn);
|
|
238
|
-
}
|
|
126
|
+
}
|
|
239
127
|
effectFn.deps.clear();
|
|
240
|
-
if (effectFn.td)
|
|
128
|
+
if (effectFn.td)
|
|
241
129
|
for (const f of effectFn.td)
|
|
242
130
|
f();
|
|
243
|
-
}
|
|
244
131
|
}
|
package/package.json
CHANGED
package/src/element.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $effect, cleanup } from "./signals.js";
|
|
1
|
+
import { $effect, cleanup, EffectFlags } from "./signals.js";
|
|
2
2
|
|
|
3
3
|
export function mount(app, parent) {
|
|
4
4
|
parent.appendChild(app());
|
|
@@ -41,10 +41,10 @@ export function component(name, props?: any) {
|
|
|
41
41
|
if (existing) {
|
|
42
42
|
let current = existing;
|
|
43
43
|
while (current) {
|
|
44
|
-
if (current.
|
|
44
|
+
if (current.flags & EffectFlags.Moves) {
|
|
45
45
|
let curr = collectingHead;
|
|
46
46
|
while (curr) {
|
|
47
|
-
curr.
|
|
47
|
+
curr.flags |= EffectFlags.Moves;
|
|
48
48
|
curr = curr.next;
|
|
49
49
|
}
|
|
50
50
|
break;
|
|
@@ -222,8 +222,8 @@ export function show(props) {
|
|
|
222
222
|
const prevFx = prevElem.$fx;
|
|
223
223
|
let sticky = null;
|
|
224
224
|
if (prevFx) {
|
|
225
|
-
sticky = filterEffects(prevFx, f => f.
|
|
226
|
-
prevElem.$fx = filterEffects(prevFx, f => !f.
|
|
225
|
+
sticky = filterEffects(prevFx, f => f.flags & EffectFlags.Moves);
|
|
226
|
+
prevElem.$fx = filterEffects(prevFx, f => !(f.flags & EffectFlags.Moves));
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
if (sticky) {
|
package/src/signals.ts
CHANGED
|
@@ -1,149 +1,14 @@
|
|
|
1
1
|
import { collectEffect } from "./element.js";
|
|
2
2
|
|
|
3
3
|
let currentEffect: any;
|
|
4
|
-
let isBatching: boolean | undefined;
|
|
5
|
-
const pendingEffects = [];
|
|
6
|
-
|
|
7
|
-
// Global effect ID counter and registry
|
|
8
|
-
let nextEffectId = 0;
|
|
9
|
-
const effectRegistry = new Map<number, any>();
|
|
10
|
-
|
|
11
|
-
class BitSet {
|
|
12
|
-
private bits: Uint32Array;
|
|
13
|
-
private _size: number = 0;
|
|
14
|
-
private maxCapacity: number;
|
|
15
|
-
|
|
16
|
-
constructor(capacity: number = 1024) {
|
|
17
|
-
this.maxCapacity = capacity;
|
|
18
|
-
this.bits = new Uint32Array(Math.ceil(capacity / 32));
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
add(id: number): boolean {
|
|
22
|
-
if (id >= this.maxCapacity) return false;
|
|
23
|
-
|
|
24
|
-
const wordIndex = Math.floor(id / 32);
|
|
25
|
-
const bitIndex = id % 32;
|
|
26
|
-
const mask = 1 << bitIndex;
|
|
27
|
-
|
|
28
|
-
if (!(this.bits[wordIndex] & mask)) {
|
|
29
|
-
this.bits[wordIndex] |= mask;
|
|
30
|
-
this._size++;
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
has(id: number): boolean {
|
|
37
|
-
if (id >= this.maxCapacity) return false;
|
|
38
|
-
|
|
39
|
-
const wordIndex = Math.floor(id / 32);
|
|
40
|
-
const bitIndex = id % 32;
|
|
41
|
-
return !!(this.bits[wordIndex] & (1 << bitIndex));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
delete(id: number): boolean {
|
|
45
|
-
if (id >= this.maxCapacity) return false;
|
|
46
|
-
|
|
47
|
-
const wordIndex = Math.floor(id / 32);
|
|
48
|
-
const bitIndex = id % 32;
|
|
49
|
-
const mask = 1 << bitIndex;
|
|
50
|
-
|
|
51
|
-
if (this.bits[wordIndex] & mask) {
|
|
52
|
-
this.bits[wordIndex] &= ~mask;
|
|
53
|
-
this._size--;
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
clear(): void {
|
|
60
|
-
this.bits.fill(0);
|
|
61
|
-
this._size = 0;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
get size(): number {
|
|
65
|
-
return this._size;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
*[Symbol.iterator](): Iterator<number> {
|
|
69
|
-
for (let wordIndex = 0; wordIndex < this.bits.length; wordIndex++) {
|
|
70
|
-
const word = this.bits[wordIndex];
|
|
71
|
-
if (word === 0) continue;
|
|
72
|
-
|
|
73
|
-
for (let bitIndex = 0; bitIndex < 32; bitIndex++) {
|
|
74
|
-
if (word & (1 << bitIndex)) {
|
|
75
|
-
yield wordIndex * 32 + bitIndex;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
forEach(callback: (id: number) => void): void {
|
|
82
|
-
for (const id of this) {
|
|
83
|
-
callback(id);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// Wrapper to make BitSet work with effect objects
|
|
89
|
-
class EffectBitSet {
|
|
90
|
-
private bitSet: BitSet;
|
|
91
|
-
private effects: Map<any, number> = new Map();
|
|
92
|
-
private ids: Map<number, any> = new Map();
|
|
93
|
-
|
|
94
|
-
constructor(capacity: number = 1024) {
|
|
95
|
-
this.bitSet = new BitSet(capacity);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
add(effect: any): boolean {
|
|
99
|
-
if (this.effects.has(effect)) return false;
|
|
100
|
-
|
|
101
|
-
// Assign ID to effect if it doesn't have one
|
|
102
|
-
if (!effect._id) {
|
|
103
|
-
effect._id = nextEffectId++;
|
|
104
|
-
effectRegistry.set(effect._id, effect);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
this.effects.set(effect, effect._id);
|
|
108
|
-
this.ids.set(effect._id, effect);
|
|
109
|
-
return this.bitSet.add(effect._id);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
has(effect: any): boolean {
|
|
113
|
-
return this.effects.has(effect);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
delete(effect: any): boolean {
|
|
117
|
-
if (!this.effects.has(effect)) return false;
|
|
118
|
-
|
|
119
|
-
const id = this.effects.get(effect);
|
|
120
|
-
this.effects.delete(effect);
|
|
121
|
-
this.ids.delete(id);
|
|
122
|
-
return this.bitSet.delete(id);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
clear(): void {
|
|
126
|
-
this.effects.clear();
|
|
127
|
-
this.ids.clear();
|
|
128
|
-
this.bitSet.clear();
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
get size(): number {
|
|
132
|
-
return this.bitSet.size;
|
|
133
|
-
}
|
|
134
4
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const effect = this.ids.get(id);
|
|
138
|
-
if (effect) yield effect;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
5
|
+
let isBatching: boolean | undefined;
|
|
6
|
+
const pendingEffects: EffectFn[] = [];
|
|
141
7
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
8
|
+
export enum EffectFlags {
|
|
9
|
+
None = 0,
|
|
10
|
+
Dynamic = 1 << 0,
|
|
11
|
+
Moves = 1 << 1,
|
|
147
12
|
}
|
|
148
13
|
|
|
149
14
|
function scheduleEffect(effectFn: EffectFn) {
|
|
@@ -152,7 +17,7 @@ function scheduleEffect(effectFn: EffectFn) {
|
|
|
152
17
|
isBatching = true;
|
|
153
18
|
queueMicrotask(() => {
|
|
154
19
|
for (const ef of pendingEffects) {
|
|
155
|
-
if (ef.
|
|
20
|
+
if (ef.flags & EffectFlags.Dynamic) {
|
|
156
21
|
cleanup(ef);
|
|
157
22
|
const prev = currentEffect;
|
|
158
23
|
currentEffect = ef;
|
|
@@ -175,8 +40,8 @@ export type Signal<T> = {
|
|
|
175
40
|
};
|
|
176
41
|
|
|
177
42
|
export function $signal<T>(value: T): Signal<T> {
|
|
178
|
-
const subscribers = new
|
|
179
|
-
|
|
43
|
+
const subscribers = new Set<any>();
|
|
44
|
+
|
|
180
45
|
return (...args: [T] | [(prev: T) => T] | []) => {
|
|
181
46
|
if (!args.length) {
|
|
182
47
|
if (currentEffect) {
|
|
@@ -185,58 +50,56 @@ export function $signal<T>(value: T): Signal<T> {
|
|
|
185
50
|
}
|
|
186
51
|
return value;
|
|
187
52
|
}
|
|
188
|
-
|
|
53
|
+
|
|
189
54
|
const action = args[0];
|
|
190
55
|
const newValue = typeof action === "function"
|
|
191
56
|
? (action as (prev: T) => T)(value)
|
|
192
57
|
: action;
|
|
193
|
-
|
|
58
|
+
|
|
194
59
|
if (newValue !== value) {
|
|
195
60
|
value = newValue;
|
|
196
|
-
|
|
61
|
+
for (const sub of subscribers) {
|
|
62
|
+
scheduleEffect(sub);
|
|
63
|
+
}
|
|
197
64
|
}
|
|
198
65
|
};
|
|
199
66
|
}
|
|
200
67
|
|
|
201
68
|
export function $compare<T>(fn: () => T): (value: T) => boolean {
|
|
202
|
-
const map = new Map<T,
|
|
69
|
+
const map = new Map<T, Set<any>>();
|
|
203
70
|
let current: T = fn();
|
|
204
|
-
|
|
71
|
+
|
|
205
72
|
$effect(() => {
|
|
206
73
|
const newValue = fn();
|
|
207
74
|
if (newValue === current) return;
|
|
208
|
-
|
|
75
|
+
|
|
209
76
|
const prevSubs = map.get(current);
|
|
210
77
|
const nextSubs = map.get(newValue);
|
|
78
|
+
|
|
211
79
|
current = newValue;
|
|
212
|
-
|
|
213
|
-
// Only notify subscribers for new and old values
|
|
80
|
+
|
|
214
81
|
if (prevSubs) {
|
|
215
|
-
|
|
82
|
+
for (const sub of prevSubs) scheduleEffect(sub);
|
|
216
83
|
}
|
|
217
84
|
if (nextSubs) {
|
|
218
|
-
|
|
85
|
+
for (const sub of nextSubs) scheduleEffect(sub);
|
|
219
86
|
}
|
|
220
87
|
}, true);
|
|
221
|
-
|
|
88
|
+
|
|
222
89
|
return (value: T) => {
|
|
223
90
|
if (currentEffect) {
|
|
224
91
|
let subs = map.get(value);
|
|
225
|
-
if (!subs)
|
|
226
|
-
subs = new EffectBitSet();
|
|
227
|
-
map.set(value, subs);
|
|
228
|
-
}
|
|
229
|
-
|
|
92
|
+
if (!subs) map.set(value, subs = new Set());
|
|
230
93
|
subs.add(currentEffect);
|
|
231
94
|
currentEffect.deps.add(subs);
|
|
232
|
-
|
|
95
|
+
|
|
233
96
|
const teardownFn = () => {
|
|
234
97
|
subs.delete(currentEffect);
|
|
235
98
|
if (subs.size === 0) {
|
|
236
99
|
map.delete(value);
|
|
237
100
|
}
|
|
238
101
|
};
|
|
239
|
-
|
|
102
|
+
|
|
240
103
|
if (currentEffect.td) {
|
|
241
104
|
currentEffect.td.push(teardownFn);
|
|
242
105
|
} else {
|
|
@@ -260,22 +123,22 @@ function runEffectFn(effectFn: EffectFn) {
|
|
|
260
123
|
|
|
261
124
|
interface EffectFn {
|
|
262
125
|
run: () => (() => void) | void;
|
|
263
|
-
deps:
|
|
264
|
-
mv?: boolean;
|
|
265
|
-
dyn?: boolean;
|
|
126
|
+
deps: Set<any>;
|
|
266
127
|
td?: (() => void)[];
|
|
267
|
-
|
|
128
|
+
flags: number;
|
|
268
129
|
}
|
|
269
130
|
|
|
270
131
|
export function $effect(fn: EffectFn["run"], stat?: boolean, mv?: boolean) {
|
|
132
|
+
const flags =
|
|
133
|
+
(stat ? 0 : EffectFlags.Dynamic) |
|
|
134
|
+
(mv ? EffectFlags.Moves : 0);
|
|
135
|
+
|
|
271
136
|
const effectFn: EffectFn = {
|
|
272
137
|
run: fn,
|
|
273
|
-
deps: new
|
|
138
|
+
deps: new Set(),
|
|
139
|
+
flags,
|
|
274
140
|
};
|
|
275
|
-
|
|
276
|
-
if (!stat) effectFn.dyn = true;
|
|
277
|
-
if (mv) effectFn.mv = true;
|
|
278
|
-
|
|
141
|
+
|
|
279
142
|
const prev = currentEffect;
|
|
280
143
|
currentEffect = effectFn;
|
|
281
144
|
runEffectFn(effectFn);
|
|
@@ -285,12 +148,10 @@ export function $effect(fn: EffectFn["run"], stat?: boolean, mv?: boolean) {
|
|
|
285
148
|
}
|
|
286
149
|
|
|
287
150
|
export function cleanup(effectFn: EffectFn) {
|
|
288
|
-
effectFn.deps
|
|
151
|
+
for (const subs of effectFn.deps) {
|
|
289
152
|
subs.delete(effectFn);
|
|
290
|
-
});
|
|
291
|
-
effectFn.deps.clear();
|
|
292
|
-
|
|
293
|
-
if (effectFn.td) {
|
|
294
|
-
for (const f of effectFn.td) f();
|
|
295
153
|
}
|
|
154
|
+
effectFn.deps.clear();
|
|
155
|
+
if (effectFn.td) for (const f of effectFn.td) f();
|
|
296
156
|
}
|
|
157
|
+
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.dom.asynciterable.d.ts","./node_modules/typescript/lib/lib.webworker.importscripts.d.ts","./node_modules/typescript/lib/lib.scripthost.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/typescript/lib/lib.es2020.full.d.ts","./src/signals.ts","./src/element.ts","./src/index.ts","./src/router.ts","./node_modules/@types/deep-eql/index.d.ts","./node_modules/@types/chai/index.d.ts","./node_modules/@types/estree/index.d.ts"],"fileIdsList":[[56],[52],[52,53],[53]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"1305d1e76ca44e30fb8b2b8075fa522b83f60c0bcf5d4326a9d2cf79b53724f8","impliedFormat":1},{"version":"b7cd5d40ac927a3271492b629feba8d8dca0f3d7ead9e70214fd9fa8526ffc74","signature":"4fe26d754ec66034539f62e1606bc14548daa33da25d935836da22e3f474e456"},{"version":"2d74bedd9c9890d22ac6126ef0a9c1fe9e612079831527d12405551b12bedc86","signature":"b7c09f81a2aff4251294010c6aae497cdc6d993b4b93d01689ac00f1ba75fbc0"},{"version":"f078bb1ffe7613336b4ba1e113f2efeb1807af583ac83d705f01a9cd868bfdd0","signature":"b1a9d2029bc09d94260873e1f48c13f05dda2176e23821d0b194812fcc9c3ccc"},{"version":"5af6ec6879f94e91634dd1c33e9665da6a3c248580114b44d16d5ff5dcf4e9f4","signature":"a32c52a25b47067dac589266e7667623ea1ef2b0c1f9c4fd41adbc7b67a59eee"},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"c8905dbea83f3220676a669366cd8c1acef56af4d9d72a8b2241b1d044bb4302","affectsGlobalScope":true,"impliedFormat":99},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1}],"root":[[52,55]],"options":{"allowJs":true,"checkJs":false,"composite":true,"esModuleInterop":true,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"target":7},"referencedMap":[[57,1],[53,2],[54,3],[55,3],[52,4]],"latestChangedDtsFile":"./dist/signals.d.ts","version":"5.8.3"}
|
|
1
|
+
{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.dom.asynciterable.d.ts","./node_modules/typescript/lib/lib.webworker.importscripts.d.ts","./node_modules/typescript/lib/lib.scripthost.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/typescript/lib/lib.es2020.full.d.ts","./src/signals.ts","./src/element.ts","./src/index.ts","./src/router.ts","./node_modules/@types/deep-eql/index.d.ts","./node_modules/@types/chai/index.d.ts","./node_modules/@types/estree/index.d.ts"],"fileIdsList":[[56],[52],[52,53],[53]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"1305d1e76ca44e30fb8b2b8075fa522b83f60c0bcf5d4326a9d2cf79b53724f8","impliedFormat":1},{"version":"fcad1b3b1268d0e9bfa35ba3eeb148b8054d7b3dd0d79ee47f5b1c6fc264b24f","signature":"de7fe23610fa084bdad2d6dc83e2217ec60e440812b2c473f7f0e90fb245a30b"},{"version":"f3f76a0956cd62904b4e23d1db25955fde6acf96a1c175833e76a8ea4ceb76eb","signature":"b7c09f81a2aff4251294010c6aae497cdc6d993b4b93d01689ac00f1ba75fbc0"},{"version":"f078bb1ffe7613336b4ba1e113f2efeb1807af583ac83d705f01a9cd868bfdd0","signature":"b1a9d2029bc09d94260873e1f48c13f05dda2176e23821d0b194812fcc9c3ccc"},{"version":"5af6ec6879f94e91634dd1c33e9665da6a3c248580114b44d16d5ff5dcf4e9f4","signature":"a32c52a25b47067dac589266e7667623ea1ef2b0c1f9c4fd41adbc7b67a59eee"},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"c8905dbea83f3220676a669366cd8c1acef56af4d9d72a8b2241b1d044bb4302","affectsGlobalScope":true,"impliedFormat":99},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1}],"root":[[52,55]],"options":{"allowJs":true,"checkJs":false,"composite":true,"esModuleInterop":true,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"target":7},"referencedMap":[[57,1],[53,2],[54,3],[55,3],[52,4]],"latestChangedDtsFile":"./dist/signals.d.ts","version":"5.8.3"}
|