@thyn/core 0.0.241 → 0.0.243

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/router.d.ts CHANGED
@@ -1,5 +1,12 @@
1
1
  export declare const router: {
2
- path: import("./signals.js").SignalImpl<string>;
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
+ };
3
10
  param: (name: string) => string | undefined;
4
11
  };
5
12
  interface Route {
package/dist/signals.d.ts CHANGED
@@ -1,21 +1,19 @@
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> {
1
+ export type Signal<T> = {
2
+ get(): T;
3
+ set(value: T): void;
4
+ update(updater: (prev: T) => T): void;
5
+ };
6
+ declare class SignalImpl<T> {
10
7
  value: T;
11
8
  subs: any;
12
9
  constructor(value: T);
13
10
  get(): T;
14
- delete(node: EffectNode): void;
11
+ delete(ef: any): void;
15
12
  set(value: T): void;
16
13
  update(action: (prev: T) => T): void;
17
14
  }
18
15
  export declare function $signal<T>(value: T): SignalImpl<T>;
19
- export declare function cleanup(node: EffectNode): void;
20
- export declare function $effect(fn: () => any): EffectNode;
21
- export declare function staticEffect(fn: () => any): EffectNode;
16
+ export declare function $effect(fn: (() => (() => void) | void) & any): any;
17
+ export declare function staticEffect(fn: (() => (() => void) | void) & any): any;
18
+ export declare function cleanup(ef: any): void;
19
+ export {};
package/dist/signals.js CHANGED
@@ -1,103 +1,72 @@
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 ---
14
2
  let currentEffect;
15
- let isBatching = false;
3
+ let isBatching;
16
4
  const pendingEffects = [];
17
- // --- Scheduler ---
18
- function scheduleEffect(node) {
19
- pendingEffects.push(node);
5
+ function scheduleEffect(effectFn) {
6
+ pendingEffects.push(effectFn);
20
7
  if (!isBatching) {
21
8
  isBatching = true;
22
- queueMicrotask(flushEffects);
23
- }
24
- }
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
- }
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
+ });
41
25
  }
42
- pendingEffects.length = 0;
43
- isBatching = false;
44
26
  }
45
- // --- Signal Implementation ---
46
- export class SignalImpl {
27
+ class SignalImpl {
47
28
  constructor(value) {
48
29
  this.value = value;
49
- // subs is polymorphic: undefined | EffectNode | Set<EffectNode>
50
- // We check types carefully to avoid de-opts.
51
30
  this.subs = undefined;
52
31
  }
53
32
  get() {
54
33
  if (currentEffect) {
55
- // 1. Manage Subscriptions (Signal -> Effect)
56
34
  if (!this.subs) {
57
35
  this.subs = currentEffect;
58
36
  }
59
- else if (this.subs instanceof EffectNode) {
37
+ else if (typeof this.subs === "function") {
60
38
  if (this.subs !== currentEffect) {
61
- const old = this.subs;
39
+ const oldEffect = this.subs;
62
40
  this.subs = new Set();
63
- this.subs.add(old);
41
+ this.subs.add(oldEffect);
64
42
  this.subs.add(currentEffect);
65
43
  }
66
44
  }
67
45
  else {
68
46
  this.subs.add(currentEffect);
69
47
  }
70
- // 2. Manage Dependencies (Effect -> Signal)
71
- // This allows the effect to unsubscribe from this signal later.
72
- const td = currentEffect.td;
73
- if (!td) {
48
+ if (!currentEffect.td) {
74
49
  currentEffect.td = this;
75
50
  }
76
- else if (td instanceof SignalImpl || typeof td === 'function') {
77
- // Upgrade from single item to Array
78
- currentEffect.td = [td, this];
51
+ else if (Array.isArray(currentEffect.td)) {
52
+ currentEffect.td.push(this);
79
53
  }
80
54
  else {
81
- // Already an Array
82
- td.push(this);
55
+ currentEffect.td = [currentEffect.td, this];
83
56
  }
84
57
  }
85
58
  return this.value;
86
59
  }
87
- // Optimized delete to restore "Fast Path"
88
- delete(node) {
89
- if (this.subs === node) {
60
+ delete(ef) {
61
+ if (this.subs === ef) {
90
62
  this.subs = undefined;
91
63
  }
92
- else if (this.subs instanceof Set) {
93
- this.subs.delete(node);
94
- const size = this.subs.size;
95
- if (size === 0) {
64
+ else if (typeof this.subs === "object") {
65
+ this.subs.delete(ef);
66
+ if (this.subs.size === 0) {
96
67
  this.subs = undefined;
97
68
  }
98
- else if (size === 1) {
99
- // Downgrade Set -> Single Node
100
- // This restores the fast direct-call path in .set()
69
+ else if (this.subs.size === 1) {
101
70
  this.subs = this.subs.values().next().value;
102
71
  }
103
72
  }
@@ -106,7 +75,7 @@ export class SignalImpl {
106
75
  if (value !== this.value) {
107
76
  this.value = value;
108
77
  if (this.subs) {
109
- if (this.subs instanceof EffectNode) {
78
+ if (typeof this.subs === "function") {
110
79
  scheduleEffect(this.subs);
111
80
  }
112
81
  else {
@@ -124,64 +93,47 @@ export class SignalImpl {
124
93
  export function $signal(value) {
125
94
  return new SignalImpl(value);
126
95
  }
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);
96
+ function runEffectFn(ef) {
97
+ const td = ef();
98
+ if (td) {
99
+ if (ef.td) {
100
+ if (Array.isArray(ef.td)) {
101
+ ef.td.push(td);
154
102
  }
155
- else if (typeof item === 'function') {
156
- item();
103
+ else {
104
+ ef.td = [ef.td, td];
157
105
  }
158
106
  }
159
- }
160
- else {
161
- if (td instanceof SignalImpl) {
162
- td.delete(node);
163
- }
164
107
  else {
165
- td();
108
+ ef.td = td;
166
109
  }
167
110
  }
168
111
  }
169
112
  export function $effect(fn) {
170
- const node = new EffectNode(fn, true);
171
113
  const prev = currentEffect;
172
- currentEffect = node;
173
- runEffectNode(node);
114
+ currentEffect = fn;
115
+ fn.dyn = true;
116
+ runEffectFn(fn);
174
117
  currentEffect = prev;
175
- collectEffect(node);
176
- return node;
118
+ collectEffect(fn);
119
+ return fn;
177
120
  }
178
121
  export function staticEffect(fn) {
179
- const node = new EffectNode(fn, false);
180
122
  const prev = currentEffect;
181
- currentEffect = node;
182
- // Static effects run once to subscribe, but don't handle cleanup returns
183
- node.fn();
123
+ currentEffect = fn;
124
+ fn();
184
125
  currentEffect = prev;
185
- collectEffect(node);
186
- return node;
126
+ collectEffect(fn);
127
+ return fn;
128
+ }
129
+ export function cleanup(ef) {
130
+ if (!ef.td)
131
+ return;
132
+ if (Array.isArray(ef.td)) {
133
+ for (const f of ef.td)
134
+ typeof f === "function" ? f() : f.delete(ef);
135
+ }
136
+ else {
137
+ typeof ef.td === "function" ? ef.td() : ef.td.delete(ef);
138
+ }
187
139
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thyn/core",
3
- "version": "0.0.241",
3
+ "version": "0.0.243",
4
4
  "scripts": {
5
5
  "build": "tsc",
6
6
  "pub": "tsc && npm version patch -f && npm -f publish --access=public",
package/src/element.ts CHANGED
@@ -5,7 +5,6 @@ export function mount(app, parent) {
5
5
  }
6
6
 
7
7
  let collectingHead;
8
-
9
8
  export function collectEffect(effectFn) {
10
9
  effectFn.next = collectingHead;
11
10
  collectingHead = effectFn;
package/src/signals.ts CHANGED
@@ -1,107 +1,76 @@
1
1
  import { collectEffect } from "./element.js";
2
2
 
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
- }
3
+ let currentEffect: any;
18
4
 
19
- // --- Globals ---
20
- let currentEffect: EffectNode | undefined;
21
- let isBatching = false;
22
- const pendingEffects: EffectNode[] = [];
5
+ let isBatching: boolean | undefined;
6
+ const pendingEffects = [];
23
7
 
24
- // --- Scheduler ---
25
- function scheduleEffect(node: EffectNode) {
26
- pendingEffects.push(node);
8
+ function scheduleEffect(effectFn: EffectFn) {
9
+ pendingEffects.push(effectFn);
27
10
  if (!isBatching) {
28
11
  isBatching = true;
29
- queueMicrotask(flushEffects);
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
+ });
30
27
  }
31
28
  }
32
29
 
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
- }
30
+ export type Signal<T> = {
31
+ get(): T;
32
+ set(value: T): void;
33
+ update(updater: (prev: T) => T): void;
34
+ };
52
35
 
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.
36
+ class SignalImpl<T> {
57
37
  subs: any = undefined;
58
38
 
59
39
  constructor(public value: T) { }
60
40
 
61
41
  get(): T {
62
42
  if (currentEffect) {
63
- // 1. Manage Subscriptions (Signal -> Effect)
64
43
  if (!this.subs) {
65
44
  this.subs = currentEffect;
66
- } else if (this.subs instanceof EffectNode) {
45
+ } else if (typeof this.subs === "function") {
67
46
  if (this.subs !== currentEffect) {
68
- const old = this.subs;
47
+ const oldEffect = this.subs;
69
48
  this.subs = new Set();
70
- this.subs.add(old);
49
+ this.subs.add(oldEffect);
71
50
  this.subs.add(currentEffect);
72
51
  }
73
52
  } else {
74
53
  this.subs.add(currentEffect);
75
54
  }
76
-
77
- // 2. Manage Dependencies (Effect -> Signal)
78
- // This allows the effect to unsubscribe from this signal later.
79
- const td = currentEffect.td;
80
- if (!td) {
55
+ if (!currentEffect.td) {
81
56
  currentEffect.td = this;
82
- } else if (td instanceof SignalImpl || typeof td === 'function') {
83
- // Upgrade from single item to Array
84
- currentEffect.td = [td, this];
57
+ } else if (Array.isArray(currentEffect.td)) {
58
+ currentEffect.td.push(this);
85
59
  } else {
86
- // Already an Array
87
- td.push(this);
60
+ currentEffect.td = [currentEffect.td, this];
88
61
  }
89
62
  }
90
63
  return this.value;
91
64
  }
92
65
 
93
- // Optimized delete to restore "Fast Path"
94
- delete(node: EffectNode): void {
95
- if (this.subs === node) {
66
+ delete(ef: any): void {
67
+ if (this.subs === ef) {
96
68
  this.subs = undefined;
97
- } else if (this.subs instanceof Set) {
98
- this.subs.delete(node);
99
- const size = this.subs.size;
100
- if (size === 0) {
69
+ } else if (typeof this.subs === "object") {
70
+ this.subs.delete(ef);
71
+ if (this.subs.size === 0) {
101
72
  this.subs = undefined;
102
- } else if (size === 1) {
103
- // Downgrade Set -> Single Node
104
- // This restores the fast direct-call path in .set()
73
+ } else if (this.subs.size === 1) {
105
74
  this.subs = this.subs.values().next().value;
106
75
  }
107
76
  }
@@ -111,7 +80,7 @@ export class SignalImpl<T> {
111
80
  if (value !== this.value) {
112
81
  this.value = value;
113
82
  if (this.subs) {
114
- if (this.subs instanceof EffectNode) {
83
+ if (typeof this.subs === "function") {
115
84
  scheduleEffect(this.subs);
116
85
  } else {
117
86
  for (const ef of this.subs) {
@@ -131,70 +100,52 @@ export function $signal<T>(value: T): SignalImpl<T> {
131
100
  return new SignalImpl(value);
132
101
  }
133
102
 
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);
145
- } else {
146
- node.td = [td, cleanupFn];
147
- }
148
- }
149
- }
150
-
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();
103
+ function runEffectFn(ef: EffectFn) {
104
+ const td = ef();
105
+ if (td) {
106
+ if (ef.td) {
107
+ if (Array.isArray(ef.td)) {
108
+ ef.td.push(td)
109
+ } else {
110
+ ef.td = [ef.td, td];
164
111
  }
165
- }
166
- } else {
167
- if (td instanceof SignalImpl) {
168
- td.delete(node);
169
112
  } else {
170
- td();
113
+ ef.td = td;
171
114
  }
172
115
  }
173
116
  }
174
117
 
175
- export function $effect(fn: () => any) {
176
- const node = new EffectNode(fn, true);
118
+ type EffectTeardown = (() => void) | { delete: (v: any) => void };
119
+ type EffectFn = (() => (() => void) | void) & {
120
+ mv?: boolean;
121
+ dyn?: boolean;
122
+ td: EffectTeardown | EffectTeardown[];
123
+ }
177
124
 
125
+ export function $effect(fn: (() => (() => void) | void) & any) {
178
126
  const prev = currentEffect;
179
- currentEffect = node;
180
- runEffectNode(node);
127
+ currentEffect = fn;
128
+ fn.dyn = true;
129
+ runEffectFn(fn);
181
130
  currentEffect = prev;
182
-
183
- collectEffect(node);
184
- return node;
131
+ collectEffect(fn);
132
+ return fn;
185
133
  }
186
134
 
187
- export function staticEffect(fn: () => any) {
188
- const node = new EffectNode(fn, false);
189
-
135
+ export function staticEffect(fn: (() => (() => void) | void) & any) {
190
136
  const prev = currentEffect;
191
- currentEffect = node;
192
-
193
- // Static effects run once to subscribe, but don't handle cleanup returns
194
- node.fn();
195
-
137
+ currentEffect = fn;
138
+ fn();
196
139
  currentEffect = prev;
140
+ collectEffect(fn);
141
+ return fn;
142
+ }
197
143
 
198
- collectEffect(node);
199
- return node;
200
- }
144
+ export function cleanup(ef) {
145
+ if (!ef.td) return;
146
+ if (Array.isArray(ef.td)) {
147
+ for (const f of ef.td) typeof f === "function" ? f() : f.delete(ef);
148
+ } else {
149
+ typeof ef.td === "function" ? ef.td() : ef.td.delete(ef);
150
+ }
151
+ }
@@ -1,8 +1,8 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { $signal, list, Signal } from "../src";
2
+ import { $signal, list } from "../src";
3
3
  import { wait } from "./utils";
4
4
 
5
- function makeList(signal: Signal<any>) {
5
+ function makeGenericList(signal: any) {
6
6
  return list({
7
7
  items: () => signal.get(),
8
8
  render: (item: number) => {
@@ -13,7 +13,18 @@ function makeList(signal: Signal<any>) {
13
13
  });
14
14
  }
15
15
 
16
- describe("list", () => {
16
+ function makeIsolatedTerminalList(signal: any) {
17
+ return list({
18
+ items: () => signal.get(),
19
+ render: (item: number) => {
20
+ const span = document.createElement("span");
21
+ span.textContent = `${item}`;
22
+ return span;
23
+ },
24
+ });
25
+ }
26
+
27
+ const run = (makeList: any) => describe("list", () => {
17
28
  it("renders", async () => {
18
29
  const items = $signal([0, 1, 2]);
19
30
  const root = makeList(items);
@@ -166,3 +177,6 @@ describe("list", () => {
166
177
  expect(root.textContent).toBe("01234567");
167
178
  });
168
179
  });
180
+
181
+ run(makeGenericList);
182
+ run(makeIsolatedTerminalList);
@@ -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":"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"}
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":"f3672a7799cd210d882739d8938c9376236ca8fb67e10996cf99381ebffe7a21","signature":"6f62706ec7610ba34467f5a0c3a393d6557bc78b9cc5592492fd0beca1a0315f"},{"version":"6c57cbf7bb209e4c33cd1507ecf37d04d9772ea1ae3ab0db0bb030721b6d3ed4","signature":"4e15936f04a7ab7370e9a897f6d9befa980662283d92660ba0b5cacfab78e5d1"},{"version":"5c43c77be1404645197853d72379199a8fa166fc89934f19097e9c9739352938","signature":"0b67658946996edbc53389306d39f959f726d1e11cc83ebf24941c04afe42ca4"},{"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"}