@thyn/core 0.0.239 → 0.0.241
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 +6 -4
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/router.d.ts +1 -8
- package/dist/signals.d.ts +13 -11
- package/dist/signals.js +117 -61
- package/package.json +1 -1
- package/src/element.ts +6 -4
- package/src/index.ts +4 -5
- package/src/signals.ts +130 -73
- package/tsconfig.tsbuildinfo +1 -1
package/dist/element.js
CHANGED
|
@@ -4,9 +4,7 @@ export function mount(app, parent) {
|
|
|
4
4
|
}
|
|
5
5
|
let collectingHead;
|
|
6
6
|
export function collectEffect(effectFn) {
|
|
7
|
-
|
|
8
|
-
effectFn.next = collectingHead;
|
|
9
|
-
}
|
|
7
|
+
effectFn.next = collectingHead;
|
|
10
8
|
collectingHead = effectFn;
|
|
11
9
|
}
|
|
12
10
|
export function createReactiveTextNode(v) {
|
|
@@ -396,7 +394,11 @@ export function isolatedTerminalList(props) {
|
|
|
396
394
|
parent = startBookend.parentNode;
|
|
397
395
|
if (!parent) {
|
|
398
396
|
prevItems = props.items();
|
|
399
|
-
outlet.
|
|
397
|
+
outlet.appendChild(startBookend);
|
|
398
|
+
for (let i = 0, len = prevItems.length; i < len; i++) {
|
|
399
|
+
outlet.appendChild(render(prevItems[i]));
|
|
400
|
+
}
|
|
401
|
+
outlet.appendChild(endBookend);
|
|
400
402
|
return;
|
|
401
403
|
}
|
|
402
404
|
let nextItems = props.items();
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { addChildren, addEffect, component, createReactiveTextNode, list, markAsReactive, mount, setAttribute, setProperty, setReactiveAttribute, setReactiveProperty, show, terminalList
|
|
2
|
-
export {
|
|
1
|
+
export { addChildren, addEffect, component, createReactiveTextNode, isolatedTerminalList, list, markAsReactive, mount, setAttribute, setProperty, setReactiveAttribute, setReactiveProperty, show, terminalList } from "./element.js";
|
|
2
|
+
export { $effect, $signal, staticEffect } from "./signals.js";
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { addChildren, addEffect, component, createReactiveTextNode, list, markAsReactive, mount, setAttribute, setProperty, setReactiveAttribute, setReactiveProperty, show, terminalList
|
|
2
|
-
export {
|
|
1
|
+
export { addChildren, addEffect, component, createReactiveTextNode, isolatedTerminalList, list, markAsReactive, mount, setAttribute, setProperty, setReactiveAttribute, setReactiveProperty, show, terminalList } from "./element.js";
|
|
2
|
+
export { $effect, $signal, staticEffect } from "./signals.js";
|
package/dist/router.d.ts
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
export declare const router: {
|
|
2
|
-
path:
|
|
3
|
-
subs: any;
|
|
4
|
-
value: string;
|
|
5
|
-
get(): string;
|
|
6
|
-
delete(ef: any): void;
|
|
7
|
-
set(value: string): void;
|
|
8
|
-
update(action: (prev: string) => string): void;
|
|
9
|
-
};
|
|
2
|
+
path: import("./signals.js").SignalImpl<string>;
|
|
10
3
|
param: (name: string) => string | undefined;
|
|
11
4
|
};
|
|
12
5
|
interface Route {
|
package/dist/signals.d.ts
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
export declare class EffectNode {
|
|
2
|
+
next: EffectNode | undefined;
|
|
3
|
+
fn: () => any;
|
|
4
|
+
td: any;
|
|
5
|
+
dyn: boolean;
|
|
6
|
+
mv: boolean;
|
|
7
|
+
constructor(fn: () => any, dyn: boolean);
|
|
8
|
+
}
|
|
9
|
+
export declare class SignalImpl<T> {
|
|
7
10
|
value: T;
|
|
8
11
|
subs: any;
|
|
9
12
|
constructor(value: T);
|
|
10
13
|
get(): T;
|
|
11
|
-
delete(
|
|
14
|
+
delete(node: EffectNode): void;
|
|
12
15
|
set(value: T): void;
|
|
13
16
|
update(action: (prev: T) => T): void;
|
|
14
17
|
}
|
|
15
18
|
export declare function $signal<T>(value: T): SignalImpl<T>;
|
|
16
|
-
export declare function
|
|
17
|
-
export declare function
|
|
18
|
-
export declare function
|
|
19
|
-
export {};
|
|
19
|
+
export declare function cleanup(node: EffectNode): void;
|
|
20
|
+
export declare function $effect(fn: () => any): EffectNode;
|
|
21
|
+
export declare function staticEffect(fn: () => any): EffectNode;
|
package/dist/signals.js
CHANGED
|
@@ -1,79 +1,118 @@
|
|
|
1
1
|
import { collectEffect } from "./element.js";
|
|
2
|
+
// --- V8 Optimization: Stable Shape ---
|
|
3
|
+
// By using a class, we guarantee that all effects share the same "Hidden Class".
|
|
4
|
+
// This prevents V8 from constantly de-optimizing code when properties like '.next' or '.td' are added dynamically.
|
|
5
|
+
export class EffectNode {
|
|
6
|
+
constructor(fn, dyn) {
|
|
7
|
+
this.next = undefined; // For the collection stack
|
|
8
|
+
this.td = undefined; // Teardowns: SignalImpl | Function | Array
|
|
9
|
+
this.fn = fn;
|
|
10
|
+
this.dyn = dyn;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
// --- Globals ---
|
|
2
14
|
let currentEffect;
|
|
3
|
-
let isBatching;
|
|
15
|
+
let isBatching = false;
|
|
4
16
|
const pendingEffects = [];
|
|
5
|
-
|
|
6
|
-
|
|
17
|
+
// --- Scheduler ---
|
|
18
|
+
function scheduleEffect(node) {
|
|
19
|
+
pendingEffects.push(node);
|
|
7
20
|
if (!isBatching) {
|
|
8
21
|
isBatching = true;
|
|
9
|
-
queueMicrotask(
|
|
10
|
-
for (const ef of pendingEffects) {
|
|
11
|
-
if (ef.dyn) {
|
|
12
|
-
cleanup(ef);
|
|
13
|
-
const prev = currentEffect;
|
|
14
|
-
currentEffect = ef;
|
|
15
|
-
runEffectFn(ef);
|
|
16
|
-
currentEffect = prev;
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
ef();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
pendingEffects.length = 0;
|
|
23
|
-
isBatching = false;
|
|
24
|
-
});
|
|
22
|
+
queueMicrotask(flushEffects);
|
|
25
23
|
}
|
|
26
24
|
}
|
|
27
|
-
|
|
25
|
+
function flushEffects() {
|
|
26
|
+
for (let i = 0; i < pendingEffects.length; i++) {
|
|
27
|
+
const node = pendingEffects[i];
|
|
28
|
+
// Fast property access (Monomorphic)
|
|
29
|
+
if (node.dyn) {
|
|
30
|
+
cleanup(node);
|
|
31
|
+
const prev = currentEffect;
|
|
32
|
+
currentEffect = node;
|
|
33
|
+
runEffectNode(node);
|
|
34
|
+
currentEffect = prev;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// Static effects re-run without 'currentEffect' set,
|
|
38
|
+
// ensuring they don't re-subscribe or leak dependencies.
|
|
39
|
+
node.fn();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
pendingEffects.length = 0;
|
|
43
|
+
isBatching = false;
|
|
44
|
+
}
|
|
45
|
+
// --- Signal Implementation ---
|
|
46
|
+
export class SignalImpl {
|
|
28
47
|
constructor(value) {
|
|
29
48
|
this.value = value;
|
|
49
|
+
// subs is polymorphic: undefined | EffectNode | Set<EffectNode>
|
|
50
|
+
// We check types carefully to avoid de-opts.
|
|
30
51
|
this.subs = undefined;
|
|
31
52
|
}
|
|
32
53
|
get() {
|
|
33
54
|
if (currentEffect) {
|
|
55
|
+
// 1. Manage Subscriptions (Signal -> Effect)
|
|
34
56
|
if (!this.subs) {
|
|
35
57
|
this.subs = currentEffect;
|
|
36
58
|
}
|
|
37
|
-
else if (
|
|
59
|
+
else if (this.subs instanceof EffectNode) {
|
|
38
60
|
if (this.subs !== currentEffect) {
|
|
39
|
-
|
|
61
|
+
const old = this.subs;
|
|
62
|
+
this.subs = new Set();
|
|
63
|
+
this.subs.add(old);
|
|
64
|
+
this.subs.add(currentEffect);
|
|
40
65
|
}
|
|
41
66
|
}
|
|
42
67
|
else {
|
|
43
68
|
this.subs.add(currentEffect);
|
|
44
69
|
}
|
|
70
|
+
// 2. Manage Dependencies (Effect -> Signal)
|
|
71
|
+
// This allows the effect to unsubscribe from this signal later.
|
|
45
72
|
const td = currentEffect.td;
|
|
46
73
|
if (!td) {
|
|
47
74
|
currentEffect.td = this;
|
|
48
75
|
}
|
|
49
|
-
else if (
|
|
50
|
-
|
|
76
|
+
else if (td instanceof SignalImpl || typeof td === 'function') {
|
|
77
|
+
// Upgrade from single item to Array
|
|
78
|
+
currentEffect.td = [td, this];
|
|
51
79
|
}
|
|
52
80
|
else {
|
|
53
|
-
|
|
81
|
+
// Already an Array
|
|
82
|
+
td.push(this);
|
|
54
83
|
}
|
|
55
84
|
}
|
|
56
85
|
return this.value;
|
|
57
86
|
}
|
|
58
|
-
delete
|
|
59
|
-
|
|
87
|
+
// Optimized delete to restore "Fast Path"
|
|
88
|
+
delete(node) {
|
|
89
|
+
if (this.subs === node) {
|
|
60
90
|
this.subs = undefined;
|
|
61
91
|
}
|
|
62
|
-
else if (
|
|
63
|
-
this.subs.delete(
|
|
64
|
-
|
|
92
|
+
else if (this.subs instanceof Set) {
|
|
93
|
+
this.subs.delete(node);
|
|
94
|
+
const size = this.subs.size;
|
|
95
|
+
if (size === 0) {
|
|
65
96
|
this.subs = undefined;
|
|
97
|
+
}
|
|
98
|
+
else if (size === 1) {
|
|
99
|
+
// Downgrade Set -> Single Node
|
|
100
|
+
// This restores the fast direct-call path in .set()
|
|
101
|
+
this.subs = this.subs.values().next().value;
|
|
102
|
+
}
|
|
66
103
|
}
|
|
67
104
|
}
|
|
68
105
|
set(value) {
|
|
69
106
|
if (value !== this.value) {
|
|
70
107
|
this.value = value;
|
|
71
108
|
if (this.subs) {
|
|
72
|
-
if (
|
|
109
|
+
if (this.subs instanceof EffectNode) {
|
|
73
110
|
scheduleEffect(this.subs);
|
|
74
111
|
}
|
|
75
112
|
else {
|
|
76
|
-
this.subs
|
|
113
|
+
for (const ef of this.subs) {
|
|
114
|
+
scheduleEffect(ef);
|
|
115
|
+
}
|
|
77
116
|
}
|
|
78
117
|
}
|
|
79
118
|
}
|
|
@@ -85,47 +124,64 @@ class SignalImpl {
|
|
|
85
124
|
export function $signal(value) {
|
|
86
125
|
return new SignalImpl(value);
|
|
87
126
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
127
|
+
// --- Effect Helpers ---
|
|
128
|
+
function runEffectNode(node) {
|
|
129
|
+
const cleanupFn = node.fn();
|
|
130
|
+
if (typeof cleanupFn === 'function') {
|
|
131
|
+
// If the effect returns a cleanup function, track it in 'td'
|
|
132
|
+
const td = node.td;
|
|
133
|
+
if (!td) {
|
|
134
|
+
node.td = cleanupFn;
|
|
135
|
+
}
|
|
136
|
+
else if (Array.isArray(td)) {
|
|
137
|
+
td.push(cleanupFn);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
node.td = [td, cleanupFn];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export function cleanup(node) {
|
|
145
|
+
const td = node.td;
|
|
146
|
+
if (!td)
|
|
147
|
+
return;
|
|
148
|
+
// Reset dependencies for the next run
|
|
149
|
+
node.td = undefined;
|
|
150
|
+
if (Array.isArray(td)) {
|
|
151
|
+
for (const item of td) {
|
|
152
|
+
if (item instanceof SignalImpl) {
|
|
153
|
+
item.delete(node);
|
|
94
154
|
}
|
|
95
|
-
else {
|
|
96
|
-
|
|
155
|
+
else if (typeof item === 'function') {
|
|
156
|
+
item();
|
|
97
157
|
}
|
|
98
158
|
}
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
if (td instanceof SignalImpl) {
|
|
162
|
+
td.delete(node);
|
|
163
|
+
}
|
|
99
164
|
else {
|
|
100
|
-
|
|
165
|
+
td();
|
|
101
166
|
}
|
|
102
167
|
}
|
|
103
168
|
}
|
|
104
169
|
export function $effect(fn) {
|
|
170
|
+
const node = new EffectNode(fn, true);
|
|
105
171
|
const prev = currentEffect;
|
|
106
|
-
currentEffect =
|
|
107
|
-
|
|
108
|
-
runEffectFn(fn);
|
|
172
|
+
currentEffect = node;
|
|
173
|
+
runEffectNode(node);
|
|
109
174
|
currentEffect = prev;
|
|
110
|
-
collectEffect(
|
|
111
|
-
return
|
|
175
|
+
collectEffect(node);
|
|
176
|
+
return node;
|
|
112
177
|
}
|
|
113
178
|
export function staticEffect(fn) {
|
|
179
|
+
const node = new EffectNode(fn, false);
|
|
114
180
|
const prev = currentEffect;
|
|
115
|
-
currentEffect =
|
|
116
|
-
|
|
181
|
+
currentEffect = node;
|
|
182
|
+
// Static effects run once to subscribe, but don't handle cleanup returns
|
|
183
|
+
node.fn();
|
|
117
184
|
currentEffect = prev;
|
|
118
|
-
collectEffect(
|
|
119
|
-
return
|
|
120
|
-
}
|
|
121
|
-
export function cleanup(ef) {
|
|
122
|
-
if (!ef.td)
|
|
123
|
-
return;
|
|
124
|
-
if (Array.isArray(ef.td)) {
|
|
125
|
-
for (const f of ef.td)
|
|
126
|
-
typeof f === "function" ? f() : f.delete(ef);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
typeof ef.td === "function" ? ef.td() : ef.td.delete(ef);
|
|
130
|
-
}
|
|
185
|
+
collectEffect(node);
|
|
186
|
+
return node;
|
|
131
187
|
}
|
package/package.json
CHANGED
package/src/element.ts
CHANGED
|
@@ -7,9 +7,7 @@ export function mount(app, parent) {
|
|
|
7
7
|
let collectingHead;
|
|
8
8
|
|
|
9
9
|
export function collectEffect(effectFn) {
|
|
10
|
-
|
|
11
|
-
effectFn.next = collectingHead;
|
|
12
|
-
}
|
|
10
|
+
effectFn.next = collectingHead;
|
|
13
11
|
collectingHead = effectFn;
|
|
14
12
|
}
|
|
15
13
|
|
|
@@ -425,7 +423,11 @@ export function isolatedTerminalList(props) {
|
|
|
425
423
|
parent = startBookend.parentNode;
|
|
426
424
|
if (!parent) {
|
|
427
425
|
prevItems = props.items();
|
|
428
|
-
outlet.
|
|
426
|
+
outlet.appendChild(startBookend);
|
|
427
|
+
for (let i = 0, len = prevItems.length; i < len; i++) {
|
|
428
|
+
outlet.appendChild(render(prevItems[i]));
|
|
429
|
+
}
|
|
430
|
+
outlet.appendChild(endBookend);
|
|
429
431
|
return;
|
|
430
432
|
}
|
|
431
433
|
let nextItems = props.items();
|
package/src/index.ts
CHANGED
|
@@ -2,8 +2,7 @@ export {
|
|
|
2
2
|
addChildren,
|
|
3
3
|
addEffect,
|
|
4
4
|
component,
|
|
5
|
-
createReactiveTextNode,
|
|
6
|
-
list,
|
|
5
|
+
createReactiveTextNode, isolatedTerminalList, list,
|
|
7
6
|
markAsReactive,
|
|
8
7
|
mount,
|
|
9
8
|
setAttribute,
|
|
@@ -11,7 +10,7 @@ export {
|
|
|
11
10
|
setReactiveAttribute,
|
|
12
11
|
setReactiveProperty,
|
|
13
12
|
show,
|
|
14
|
-
terminalList
|
|
15
|
-
isolatedTerminalList,
|
|
13
|
+
terminalList
|
|
16
14
|
} from "./element.js";
|
|
17
|
-
export {
|
|
15
|
+
export { $effect, $signal, staticEffect } from "./signals.js";
|
|
16
|
+
|
package/src/signals.ts
CHANGED
|
@@ -1,72 +1,109 @@
|
|
|
1
1
|
import { collectEffect } from "./element.js";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// --- V8 Optimization: Stable Shape ---
|
|
4
|
+
// By using a class, we guarantee that all effects share the same "Hidden Class".
|
|
5
|
+
// This prevents V8 from constantly de-optimizing code when properties like '.next' or '.td' are added dynamically.
|
|
6
|
+
export class EffectNode {
|
|
7
|
+
next: EffectNode | undefined = undefined; // For the collection stack
|
|
8
|
+
fn: () => any; // The user's function
|
|
9
|
+
td: any = undefined; // Teardowns: SignalImpl | Function | Array
|
|
10
|
+
dyn: boolean; // Is this a dynamic effect?
|
|
11
|
+
mv: boolean;
|
|
12
|
+
|
|
13
|
+
constructor(fn: () => any, dyn: boolean) {
|
|
14
|
+
this.fn = fn;
|
|
15
|
+
this.dyn = dyn;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
4
18
|
|
|
5
|
-
|
|
6
|
-
|
|
19
|
+
// --- Globals ---
|
|
20
|
+
let currentEffect: EffectNode | undefined;
|
|
21
|
+
let isBatching = false;
|
|
22
|
+
const pendingEffects: EffectNode[] = [];
|
|
7
23
|
|
|
8
|
-
|
|
9
|
-
|
|
24
|
+
// --- Scheduler ---
|
|
25
|
+
function scheduleEffect(node: EffectNode) {
|
|
26
|
+
pendingEffects.push(node);
|
|
10
27
|
if (!isBatching) {
|
|
11
28
|
isBatching = true;
|
|
12
|
-
queueMicrotask(
|
|
13
|
-
for (const ef of pendingEffects) {
|
|
14
|
-
if (ef.dyn) {
|
|
15
|
-
cleanup(ef);
|
|
16
|
-
const prev = currentEffect;
|
|
17
|
-
currentEffect = ef;
|
|
18
|
-
runEffectFn(ef);
|
|
19
|
-
currentEffect = prev;
|
|
20
|
-
} else {
|
|
21
|
-
ef();
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
pendingEffects.length = 0;
|
|
25
|
-
isBatching = false;
|
|
26
|
-
});
|
|
29
|
+
queueMicrotask(flushEffects);
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
32
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
function flushEffects() {
|
|
34
|
+
for (let i = 0; i < pendingEffects.length; i++) {
|
|
35
|
+
const node = pendingEffects[i];
|
|
36
|
+
// Fast property access (Monomorphic)
|
|
37
|
+
if (node.dyn) {
|
|
38
|
+
cleanup(node);
|
|
39
|
+
const prev = currentEffect;
|
|
40
|
+
currentEffect = node;
|
|
41
|
+
runEffectNode(node);
|
|
42
|
+
currentEffect = prev;
|
|
43
|
+
} else {
|
|
44
|
+
// Static effects re-run without 'currentEffect' set,
|
|
45
|
+
// ensuring they don't re-subscribe or leak dependencies.
|
|
46
|
+
node.fn();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
pendingEffects.length = 0;
|
|
50
|
+
isBatching = false;
|
|
51
|
+
}
|
|
35
52
|
|
|
36
|
-
|
|
53
|
+
// --- Signal Implementation ---
|
|
54
|
+
export class SignalImpl<T> {
|
|
55
|
+
// subs is polymorphic: undefined | EffectNode | Set<EffectNode>
|
|
56
|
+
// We check types carefully to avoid de-opts.
|
|
37
57
|
subs: any = undefined;
|
|
38
58
|
|
|
39
59
|
constructor(public value: T) { }
|
|
40
60
|
|
|
41
61
|
get(): T {
|
|
42
62
|
if (currentEffect) {
|
|
63
|
+
// 1. Manage Subscriptions (Signal -> Effect)
|
|
43
64
|
if (!this.subs) {
|
|
44
65
|
this.subs = currentEffect;
|
|
45
|
-
} else if (
|
|
66
|
+
} else if (this.subs instanceof EffectNode) {
|
|
46
67
|
if (this.subs !== currentEffect) {
|
|
47
|
-
|
|
68
|
+
const old = this.subs;
|
|
69
|
+
this.subs = new Set();
|
|
70
|
+
this.subs.add(old);
|
|
71
|
+
this.subs.add(currentEffect);
|
|
48
72
|
}
|
|
49
73
|
} else {
|
|
50
74
|
this.subs.add(currentEffect);
|
|
51
75
|
}
|
|
76
|
+
|
|
77
|
+
// 2. Manage Dependencies (Effect -> Signal)
|
|
78
|
+
// This allows the effect to unsubscribe from this signal later.
|
|
52
79
|
const td = currentEffect.td;
|
|
53
80
|
if (!td) {
|
|
54
81
|
currentEffect.td = this;
|
|
55
|
-
} else if (
|
|
56
|
-
|
|
57
|
-
} else {
|
|
82
|
+
} else if (td instanceof SignalImpl || typeof td === 'function') {
|
|
83
|
+
// Upgrade from single item to Array
|
|
58
84
|
currentEffect.td = [td, this];
|
|
85
|
+
} else {
|
|
86
|
+
// Already an Array
|
|
87
|
+
td.push(this);
|
|
59
88
|
}
|
|
60
89
|
}
|
|
61
90
|
return this.value;
|
|
62
91
|
}
|
|
63
92
|
|
|
64
|
-
delete
|
|
65
|
-
|
|
93
|
+
// Optimized delete to restore "Fast Path"
|
|
94
|
+
delete(node: EffectNode): void {
|
|
95
|
+
if (this.subs === node) {
|
|
66
96
|
this.subs = undefined;
|
|
67
|
-
} else if (
|
|
68
|
-
this.subs.delete(
|
|
69
|
-
|
|
97
|
+
} else if (this.subs instanceof Set) {
|
|
98
|
+
this.subs.delete(node);
|
|
99
|
+
const size = this.subs.size;
|
|
100
|
+
if (size === 0) {
|
|
101
|
+
this.subs = undefined;
|
|
102
|
+
} else if (size === 1) {
|
|
103
|
+
// Downgrade Set -> Single Node
|
|
104
|
+
// This restores the fast direct-call path in .set()
|
|
105
|
+
this.subs = this.subs.values().next().value;
|
|
106
|
+
}
|
|
70
107
|
}
|
|
71
108
|
}
|
|
72
109
|
|
|
@@ -74,10 +111,12 @@ class SignalImpl<T> {
|
|
|
74
111
|
if (value !== this.value) {
|
|
75
112
|
this.value = value;
|
|
76
113
|
if (this.subs) {
|
|
77
|
-
if (
|
|
114
|
+
if (this.subs instanceof EffectNode) {
|
|
78
115
|
scheduleEffect(this.subs);
|
|
79
116
|
} else {
|
|
80
|
-
this.subs
|
|
117
|
+
for (const ef of this.subs) {
|
|
118
|
+
scheduleEffect(ef);
|
|
119
|
+
}
|
|
81
120
|
}
|
|
82
121
|
}
|
|
83
122
|
}
|
|
@@ -92,52 +131,70 @@ export function $signal<T>(value: T): SignalImpl<T> {
|
|
|
92
131
|
return new SignalImpl(value);
|
|
93
132
|
}
|
|
94
133
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
134
|
+
// --- Effect Helpers ---
|
|
135
|
+
|
|
136
|
+
function runEffectNode(node: EffectNode) {
|
|
137
|
+
const cleanupFn = node.fn();
|
|
138
|
+
if (typeof cleanupFn === 'function') {
|
|
139
|
+
// If the effect returns a cleanup function, track it in 'td'
|
|
140
|
+
const td = node.td;
|
|
141
|
+
if (!td) {
|
|
142
|
+
node.td = cleanupFn;
|
|
143
|
+
} else if (Array.isArray(td)) {
|
|
144
|
+
td.push(cleanupFn);
|
|
104
145
|
} else {
|
|
105
|
-
|
|
146
|
+
node.td = [td, cleanupFn];
|
|
106
147
|
}
|
|
107
148
|
}
|
|
108
149
|
}
|
|
109
150
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
151
|
+
export function cleanup(node: EffectNode) {
|
|
152
|
+
const td = node.td;
|
|
153
|
+
if (!td) return;
|
|
154
|
+
|
|
155
|
+
// Reset dependencies for the next run
|
|
156
|
+
node.td = undefined;
|
|
157
|
+
|
|
158
|
+
if (Array.isArray(td)) {
|
|
159
|
+
for (const item of td) {
|
|
160
|
+
if (item instanceof SignalImpl) {
|
|
161
|
+
item.delete(node);
|
|
162
|
+
} else if (typeof item === 'function') {
|
|
163
|
+
item();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
} else {
|
|
167
|
+
if (td instanceof SignalImpl) {
|
|
168
|
+
td.delete(node);
|
|
169
|
+
} else {
|
|
170
|
+
td();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
115
173
|
}
|
|
116
174
|
|
|
117
|
-
export function $effect(fn: (
|
|
175
|
+
export function $effect(fn: () => any) {
|
|
176
|
+
const node = new EffectNode(fn, true);
|
|
177
|
+
|
|
118
178
|
const prev = currentEffect;
|
|
119
|
-
currentEffect =
|
|
120
|
-
|
|
121
|
-
runEffectFn(fn);
|
|
179
|
+
currentEffect = node;
|
|
180
|
+
runEffectNode(node);
|
|
122
181
|
currentEffect = prev;
|
|
123
|
-
|
|
124
|
-
|
|
182
|
+
|
|
183
|
+
collectEffect(node);
|
|
184
|
+
return node;
|
|
125
185
|
}
|
|
126
186
|
|
|
127
|
-
export function staticEffect(fn: (
|
|
187
|
+
export function staticEffect(fn: () => any) {
|
|
188
|
+
const node = new EffectNode(fn, false);
|
|
189
|
+
|
|
128
190
|
const prev = currentEffect;
|
|
129
|
-
currentEffect =
|
|
130
|
-
|
|
191
|
+
currentEffect = node;
|
|
192
|
+
|
|
193
|
+
// Static effects run once to subscribe, but don't handle cleanup returns
|
|
194
|
+
node.fn();
|
|
195
|
+
|
|
131
196
|
currentEffect = prev;
|
|
132
|
-
collectEffect(fn);
|
|
133
|
-
return fn;
|
|
134
|
-
}
|
|
135
197
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
for (const f of ef.td) typeof f === "function" ? f() : f.delete(ef);
|
|
140
|
-
} else {
|
|
141
|
-
typeof ef.td === "function" ? ef.td() : ef.td.delete(ef);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
198
|
+
collectEffect(node);
|
|
199
|
+
return node;
|
|
200
|
+
}
|
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/assertion-error/index.d.ts","./node_modules/@types/chai/index.d.ts","./node_modules/@types/estree/index.d.ts"],"fileIdsList":[[56,57],[52],[52,53],[53]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","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":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","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":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","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":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","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":"d659c4a62e19ee4297ece6c84246f9f1abab2073a52d472565df0c8965080bd7","signature":"6f62706ec7610ba34467f5a0c3a393d6557bc78b9cc5592492fd0beca1a0315f"},{"version":"477293149108b87a80e8ed95dcc0581a07cd6fcac325f2daf4f3803310e06821","signature":"4e15936f04a7ab7370e9a897f6d9befa980662283d92660ba0b5cacfab78e5d1"},{"version":"ac16f8022e1d86594d058f84a530164af4b03dcc8bb45ac4a00736fe8aab62e7","signature":"1e325d171d22aa3144736ace94df4b5bf779c6083bc0f9ce684855844f8abcbc"},{"version":"a155e9ebe821846c43103394346639a6a19a7f844be4892bbe4352aa20ee6707","signature":"58b2b60f8aae88fb4b926c3f9700b21a56e0b0f4016e56ab9fa879550cbdb294"},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","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":[[58,1],[53,2],[54,3],[55,3],[52,4]],"latestChangedDtsFile":"./dist/router.d.ts","version":"5.9.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/assertion-error/index.d.ts","./node_modules/@types/chai/index.d.ts","./node_modules/@types/estree/index.d.ts"],"fileIdsList":[[56,57],[52],[52,53],[53]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","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":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","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":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","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":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","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":"ddddb2a7d94d833eae518ea31b704c076f268ed015ae65367a8b83c47a520246","signature":"343765e4d17ccb5613bcaa8279cc7d0706a9dd3b2a3c84289c1a28bf59036821"},{"version":"8f21babe665aa16bf796a0d640d759fb8a7985c97c0710249991eb54b58d84da","signature":"4e15936f04a7ab7370e9a897f6d9befa980662283d92660ba0b5cacfab78e5d1"},{"version":"5c43c77be1404645197853d72379199a8fa166fc89934f19097e9c9739352938","signature":"0b67658946996edbc53389306d39f959f726d1e11cc83ebf24941c04afe42ca4"},{"version":"a155e9ebe821846c43103394346639a6a19a7f844be4892bbe4352aa20ee6707","signature":"e0ab53c40fe9f98fa856101cbf2acb51c4e53b4286d699383624c0cd69688f4c"},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","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":[[58,1],[53,2],[54,3],[55,3],[52,4]],"latestChangedDtsFile":"./dist/index.d.ts","version":"5.9.3"}
|