@thyn/core 0.0.274 → 0.0.282

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 CHANGED
@@ -4,16 +4,20 @@ export function mount(app, parent) {
4
4
  }
5
5
  let collectingHead;
6
6
  export function collectEffect(effectFn) {
7
- effectFn.next = collectingHead;
7
+ if (collectingHead) {
8
+ effectFn.next = collectingHead;
9
+ }
8
10
  collectingHead = effectFn;
9
11
  }
10
12
  export function createReactiveTextNode(v) {
11
13
  let n;
12
14
  staticEffect(() => {
13
- if (n)
14
- n.data = v();
15
- else
15
+ if (n) {
16
+ n.nodeValue = v();
17
+ }
18
+ else {
16
19
  n = document.createTextNode(v());
20
+ }
17
21
  });
18
22
  return n;
19
23
  }
@@ -21,7 +25,7 @@ export function component(name, props) {
21
25
  const prevHead = collectingHead;
22
26
  collectingHead = null;
23
27
  const e = name(props);
24
- let existing = e.$fx;
28
+ const existing = e.$fx;
25
29
  if (existing) {
26
30
  let current = existing;
27
31
  while (current) {
@@ -36,11 +40,11 @@ export function component(name, props) {
36
40
  current = current.next;
37
41
  }
38
42
  if (collectingHead) {
39
- let next;
40
- while ((next = existing.next)) {
41
- existing = next;
43
+ let tail = existing;
44
+ while (tail.next) {
45
+ tail = tail.next;
42
46
  }
43
- existing.next = collectingHead;
47
+ tail.next = collectingHead;
44
48
  }
45
49
  }
46
50
  else {
@@ -68,7 +72,7 @@ export function setProperty(el, key, val) {
68
72
  return el;
69
73
  }
70
74
  export function setReactiveAttribute(el, key, val) {
71
- let ran = false;
75
+ let ran;
72
76
  return addEffect(el, staticEffect(() => {
73
77
  const v = val();
74
78
  if (ran) {
@@ -84,7 +88,7 @@ export function setReactiveAttribute(el, key, val) {
84
88
  }));
85
89
  }
86
90
  export function setReactiveProperty(el, key, val) {
87
- let ran = false;
91
+ let ran = true;
88
92
  return addEffect(el, staticEffect(() => {
89
93
  const v = val();
90
94
  if (ran) {
@@ -260,20 +264,14 @@ export function list(props, terminal = false) {
260
264
  parent = startBookend.parentNode;
261
265
  if (!parent) {
262
266
  prevItems = props.items();
263
- outlet.appendChild(startBookend);
264
- for (let i = 0, len = prevItems.length; i < len; i++) {
265
- outlet.appendChild(render(prevItems[i]));
266
- }
267
- outlet.appendChild(endBookend);
267
+ outlet.append(startBookend, ...prevItems.map(render), endBookend);
268
268
  return;
269
269
  }
270
270
  let nextItems = props.items();
271
271
  let newLength = nextItems.length;
272
272
  let oldLength = prevItems.length;
273
273
  if (!oldLength && newLength) {
274
- for (let i = 0; i < nextItems.length; i++) {
275
- parent.insertBefore(render(nextItems[i]), endBookend);
276
- }
274
+ endBookend.before(...nextItems.map(render));
277
275
  prevItems = nextItems;
278
276
  nextItems = null;
279
277
  return;
@@ -298,9 +296,7 @@ export function list(props, terminal = false) {
298
296
  }
299
297
  let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
300
298
  if (start === oldLength) {
301
- for (let i = start; i < nextItems.length; i++) {
302
- parent.insertBefore(render(nextItems[i]), endBookend);
303
- }
299
+ endBookend.before(...nextItems.slice(start).map(render));
304
300
  prevItems = nextItems;
305
301
  nextItems = null;
306
302
  return;
@@ -414,7 +410,8 @@ export function isolatedTerminalList(props) {
414
410
  if (!parent) {
415
411
  prevItems = props.items();
416
412
  outlet.appendChild(startBookend);
417
- for (let i = 0, len = prevItems.length; i < len; i++) {
413
+ const len = prevItems.length;
414
+ for (let i = 0; i < len; i++) {
418
415
  outlet.appendChild(render(prevItems[i]));
419
416
  }
420
417
  outlet.appendChild(endBookend);
@@ -424,18 +421,20 @@ export function isolatedTerminalList(props) {
424
421
  let newLength = nextItems.length;
425
422
  let oldLength = prevItems.length;
426
423
  if (!oldLength && newLength) {
427
- for (let i = 0; i < nextItems.length; i++) {
428
- parent.insertBefore(render(nextItems[i]), endBookend);
424
+ const len = nextItems.length;
425
+ for (let i = 0; i < len; i++) {
426
+ outlet.appendChild(render(nextItems[i]));
429
427
  }
428
+ outlet.appendChild(endBookend);
430
429
  prevItems = nextItems;
431
430
  nextItems = null;
432
431
  return;
433
432
  }
434
433
  const childNodeList = parent.childNodes;
435
434
  if (!newLength) {
436
- let node = startBookend;
437
- while (node = node.nextSibling) {
438
- shallowTeardown(node);
435
+ const end = childNodeList.length - 1;
436
+ for (let i = 1; i < end; i++) {
437
+ shallowTeardown(childNodeList[i]);
439
438
  }
440
439
  parent.textContent = "";
441
440
  parent.appendChild(startBookend);
@@ -446,37 +445,35 @@ export function isolatedTerminalList(props) {
446
445
  }
447
446
  let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
448
447
  if (start === oldLength) {
449
- for (let i = start; i < nextItems.length; i++) {
450
- parent.insertBefore(render(nextItems[i]), endBookend);
448
+ const len = nextItems.length;
449
+ for (let i = start; i < len; i++) {
450
+ outlet.appendChild(render(nextItems[i]));
451
451
  }
452
452
  prevItems = nextItems;
453
453
  nextItems = null;
454
454
  return;
455
455
  }
456
+ let childNodes = Array.from(childNodeList);
456
457
  if (start < 0) {
457
- let removeCount = oldLength - nextItems.length;
458
- while (removeCount > 0) {
459
- const e = endBookend.previousSibling;
458
+ for (let i = nextItems.length; i < oldLength; i++) {
459
+ const e = childNodes[1 + --oldLength];
460
460
  shallowTeardown(e);
461
461
  e.remove();
462
- removeCount--;
463
462
  }
464
463
  prevItems = nextItems;
465
464
  nextItems = null;
465
+ childNodes = null;
466
466
  return;
467
467
  }
468
468
  if (start >= newLength) {
469
- let removeCount = oldLength - start;
470
- let node = childNodeList[start + 1];
471
- while (removeCount > 0) {
472
- const next = node.nextSibling;
473
- shallowTeardown(node);
474
- node.remove();
475
- node = next;
476
- removeCount--;
469
+ while (start < oldLength) {
470
+ const e = childNodes[1 + --oldLength];
471
+ shallowTeardown(e);
472
+ e.remove();
477
473
  }
478
474
  prevItems = nextItems;
479
475
  nextItems = null;
476
+ childNodes = null;
480
477
  return;
481
478
  }
482
479
  // suffix
@@ -485,48 +482,46 @@ export function isolatedTerminalList(props) {
485
482
  nextItems[newLength] === prevItems[oldLength]; oldLength--, newLength--)
486
483
  ;
487
484
  const nextKeys = new Set(nextItems);
488
- if (start === 0 && oldLength === prevItems.length - 1) {
489
- let allRemove = true;
490
- for (let i = 0; i <= oldLength; i++) {
491
- if (nextKeys.has(prevItems[i])) {
492
- allRemove = false;
493
- break;
494
- }
485
+ const removalQueue = [];
486
+ for (let i = start; i <= oldLength; i++) {
487
+ if (!nextKeys.has(prevItems[i])) {
488
+ const ch = childNodes[i + 1];
489
+ shallowTeardown(ch);
490
+ removalQueue.push(ch);
491
+ childNodes[i + 1] = null;
495
492
  }
496
- if (allRemove) {
497
- let node = startBookend;
498
- while (node = node.nextSibling) {
499
- shallowTeardown(node);
500
- }
501
- parent.textContent = "";
502
- parent.appendChild(startBookend);
503
- for (let i = 0; i < nextItems.length; i++) {
504
- parent.appendChild(render(nextItems[i]));
505
- }
506
- parent.appendChild(endBookend);
507
- prevItems = nextItems;
508
- nextItems = null;
509
- return;
493
+ }
494
+ if (removalQueue.length === prevItems.length) {
495
+ parent.textContent = "";
496
+ outlet.appendChild(startBookend);
497
+ const len = nextItems.length;
498
+ for (let i = 0; i < len; i++) {
499
+ outlet.appendChild(render(nextItems[i]));
510
500
  }
501
+ outlet.appendChild(endBookend);
502
+ prevItems = nextItems;
503
+ nextItems = null;
504
+ childNodes = null;
505
+ return;
506
+ }
507
+ for (const e of removalQueue) {
508
+ e.remove();
509
+ }
510
+ if (oldLength - start === removalQueue.length) {
511
+ prevItems = nextItems;
512
+ nextItems = null;
513
+ childNodes = null;
514
+ return;
511
515
  }
512
516
  let keyMap = new Map();
513
- let currentNode = childNodeList[start + 1];
514
517
  for (let i = start; i <= oldLength; i++) {
515
- const item = prevItems[i];
516
- if (!nextKeys.has(item)) {
517
- const next = currentNode.nextSibling;
518
- shallowTeardown(currentNode);
519
- currentNode.remove();
520
- currentNode = next;
521
- }
522
- else {
523
- if (currentNode && (!nextItems[i] || item !== nextItems[i])) {
524
- keyMap.set(item, {
525
- el: currentNode,
526
- item: item,
527
- });
528
- }
529
- currentNode = currentNode.nextSibling;
518
+ if (childNodes[i + 1] &&
519
+ (!nextItems[i] ||
520
+ prevItems[i] !== nextItems[i])) {
521
+ keyMap.set(prevItems[i], {
522
+ el: childNodes[i + 1],
523
+ item: prevItems[i],
524
+ });
530
525
  }
531
526
  }
532
527
  while (start <= newLength) {
@@ -567,6 +562,7 @@ export function isolatedTerminalList(props) {
567
562
  keyMap = null;
568
563
  prevItems = nextItems;
569
564
  nextItems = null;
565
+ childNodes = null;
570
566
  });
571
567
  return outlet;
572
568
  }
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export { addChildren, addEffect, component, createReactiveTextNode, fixedComponent, isolatedTerminalList, list, markAsReactive, mount, setAttribute, setProperty, setReactiveAttribute, setReactiveProperty, show, terminalList } from "./element.js";
2
- export { $effect, $signal, staticEffect, staticTextNodeEffect } from "./signals.js";
2
+ export { $effect, $signal, staticEffect, type Signal } from "./signals.js";
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export { addChildren, addEffect, component, createReactiveTextNode, fixedComponent, isolatedTerminalList, list, markAsReactive, mount, setAttribute, setProperty, setReactiveAttribute, setReactiveProperty, show, terminalList } from "./element.js";
2
- export { $effect, $signal, staticEffect, staticTextNodeEffect } from "./signals.js";
2
+ export { $effect, $signal, staticEffect } from "./signals.js";
package/dist/router.d.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  export declare const router: {
2
2
  path: {
3
- subs: any;
3
+ subs: Set<any>;
4
4
  value: string;
5
5
  get(): string;
6
- delete(ef: any): void;
7
6
  set(value: string): void;
8
7
  update(action: (prev: string) => string): void;
9
8
  };
package/dist/signals.d.ts CHANGED
@@ -5,10 +5,9 @@ export type Signal<T> = {
5
5
  };
6
6
  declare class SignalImpl<T> {
7
7
  value: T;
8
- subs: any;
8
+ subs: Set<any>;
9
9
  constructor(value: T);
10
10
  get(): T;
11
- delete(ef: any): void;
12
11
  set(value: T): void;
13
12
  update(action: (prev: T) => T): void;
14
13
  }
@@ -16,13 +15,4 @@ export declare function $signal<T>(value: T): SignalImpl<T>;
16
15
  export declare function $effect(fn: (() => (() => void) | void) & any): any;
17
16
  export declare function staticEffect(fn: (() => (() => void) | void) & any): any;
18
17
  export declare function cleanup(ef: any): void;
19
- declare class TextNodeEffect {
20
- node: Text;
21
- signal: Signal<any>;
22
- next: any;
23
- td: any;
24
- constructor(node: Text, signal: Signal<any>);
25
- run(): void;
26
- }
27
- export declare function staticTextNodeEffect(node: Text, signal: Signal<any>): TextNodeEffect;
28
18
  export {};
package/dist/signals.js CHANGED
@@ -16,7 +16,7 @@ function scheduleEffect(effectFn) {
16
16
  currentEffect = prev;
17
17
  }
18
18
  else {
19
- typeof ef === "function" ? ef() : ef.run();
19
+ ef();
20
20
  }
21
21
  }
22
22
  pendingEffects.length = 0;
@@ -27,63 +27,28 @@ function scheduleEffect(effectFn) {
27
27
  class SignalImpl {
28
28
  constructor(value) {
29
29
  this.value = value;
30
- this.subs = undefined;
30
+ this.subs = new Set();
31
31
  }
32
32
  get() {
33
33
  if (currentEffect) {
34
- if (!this.subs) {
35
- this.subs = currentEffect;
34
+ this.subs.add(currentEffect);
35
+ const td = currentEffect.td;
36
+ if (!td) {
37
+ currentEffect.td = this.subs;
36
38
  }
37
- else if (typeof this.subs === "function" || !this.subs.add) {
38
- if (this.subs !== currentEffect) {
39
- const oldEffect = this.subs;
40
- this.subs = new Set();
41
- this.subs.add(oldEffect);
42
- this.subs.add(currentEffect);
43
- }
44
- }
45
- else {
46
- this.subs.add(currentEffect);
47
- }
48
- if (!currentEffect.td) {
49
- currentEffect.td = this;
50
- }
51
- else if (Array.isArray(currentEffect.td)) {
52
- currentEffect.td.push(this);
39
+ else if (Array.isArray(td)) {
40
+ td.push(this.subs);
53
41
  }
54
42
  else {
55
- currentEffect.td = [currentEffect.td, this];
43
+ currentEffect.td = [td, this.subs];
56
44
  }
57
45
  }
58
46
  return this.value;
59
47
  }
60
- delete(ef) {
61
- if (this.subs === ef) {
62
- this.subs = undefined;
63
- }
64
- else if (typeof this.subs === "object" && this.subs.delete) {
65
- this.subs.delete(ef);
66
- if (this.subs.size === 0) {
67
- this.subs = undefined;
68
- }
69
- else if (this.subs.size === 1) {
70
- this.subs = this.subs.values().next().value;
71
- }
72
- }
73
- }
74
48
  set(value) {
75
49
  if (value !== this.value) {
76
50
  this.value = value;
77
- if (this.subs) {
78
- if (typeof this.subs === "function" || !this.subs.add) {
79
- scheduleEffect(this.subs);
80
- }
81
- else {
82
- for (const ef of this.subs) {
83
- scheduleEffect(ef);
84
- }
85
- }
86
- }
51
+ this.subs.forEach(scheduleEffect);
87
52
  }
88
53
  }
89
54
  update(action) {
@@ -94,7 +59,7 @@ export function $signal(value) {
94
59
  return new SignalImpl(value);
95
60
  }
96
61
  function runEffectFn(ef) {
97
- const td = typeof ef === "function" ? ef() : ef.run();
62
+ const td = ef();
98
63
  if (td) {
99
64
  if (ef.td) {
100
65
  if (Array.isArray(ef.td)) {
@@ -119,6 +84,7 @@ export function $effect(fn) {
119
84
  return fn;
120
85
  }
121
86
  export function staticEffect(fn) {
87
+ fn.td = null;
122
88
  const prev = currentEffect;
123
89
  currentEffect = fn;
124
90
  fn();
@@ -127,34 +93,11 @@ export function staticEffect(fn) {
127
93
  return fn;
128
94
  }
129
95
  export function cleanup(ef) {
130
- if (typeof ef.td === "function") {
131
- ef.td();
132
- }
133
- else if (ef.td.delete) {
134
- ef.td.delete(ef);
135
- }
136
- else {
96
+ if (Array.isArray(ef.td)) {
137
97
  for (const f of ef.td)
138
98
  typeof f === "function" ? f() : f.delete(ef);
139
99
  }
140
- }
141
- class TextNodeEffect {
142
- constructor(node, signal) {
143
- this.node = node;
144
- this.signal = signal;
145
- this.next = undefined;
146
- this.td = undefined;
147
- }
148
- run() {
149
- this.node.data = this.signal.get();
100
+ else {
101
+ typeof ef.td === "function" ? ef.td() : ef.td.delete(ef);
150
102
  }
151
103
  }
152
- export function staticTextNodeEffect(node, signal) {
153
- const ef = new TextNodeEffect(node, signal);
154
- const prev = currentEffect;
155
- currentEffect = ef;
156
- ef.run();
157
- currentEffect = prev;
158
- collectEffect(ef);
159
- return ef;
160
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thyn/core",
3
- "version": "0.0.274",
3
+ "version": "0.0.282",
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,16 +5,22 @@ export function mount(app, parent) {
5
5
  }
6
6
 
7
7
  let collectingHead;
8
+
8
9
  export function collectEffect(effectFn) {
9
- effectFn.next = collectingHead;
10
+ if (collectingHead) {
11
+ effectFn.next = collectingHead;
12
+ }
10
13
  collectingHead = effectFn;
11
14
  }
12
15
 
13
16
  export function createReactiveTextNode(v) {
14
17
  let n;
15
18
  staticEffect(() => {
16
- if (n) n.data = v();
17
- else n = document.createTextNode(v());
19
+ if (n) {
20
+ n.nodeValue = v();
21
+ } else {
22
+ n = document.createTextNode(v());
23
+ }
18
24
  });
19
25
  return n;
20
26
  }
@@ -23,7 +29,7 @@ export function component(name, props?: any) {
23
29
  const prevHead = collectingHead;
24
30
  collectingHead = null;
25
31
  const e = name(props);
26
- let existing = e.$fx;
32
+ const existing = e.$fx;
27
33
 
28
34
  if (existing) {
29
35
  let current = existing;
@@ -39,11 +45,11 @@ export function component(name, props?: any) {
39
45
  current = current.next;
40
46
  }
41
47
  if (collectingHead) {
42
- let next;
43
- while ((next = existing.next)) {
44
- existing = next;
48
+ let tail = existing;
49
+ while (tail.next) {
50
+ tail = tail.next;
45
51
  }
46
- existing.next = collectingHead;
52
+ tail.next = collectingHead;
47
53
  }
48
54
  } else {
49
55
  e.$fx = collectingHead;
@@ -66,12 +72,14 @@ export function setAttribute(el, key, val) {
66
72
  if (val) el.setAttribute(key, val);
67
73
  return el;
68
74
  }
75
+
69
76
  export function setProperty(el, key, val) {
70
77
  if (val) el[key] = val;
71
78
  return el;
72
79
  }
80
+
73
81
  export function setReactiveAttribute(el, key, val) {
74
- let ran = false;
82
+ let ran;
75
83
  return addEffect(
76
84
  el,
77
85
  staticEffect(() => {
@@ -87,7 +95,7 @@ export function setReactiveAttribute(el, key, val) {
87
95
  );
88
96
  }
89
97
  export function setReactiveProperty(el, key, val) {
90
- let ran = false;
98
+ let ran = true;
91
99
  return addEffect(
92
100
  el,
93
101
  staticEffect(() => {
@@ -276,20 +284,14 @@ export function list(props, terminal = false) {
276
284
  parent = startBookend.parentNode;
277
285
  if (!parent) {
278
286
  prevItems = props.items();
279
- outlet.appendChild(startBookend);
280
- for (let i = 0, len = prevItems.length; i < len; i++) {
281
- outlet.appendChild(render(prevItems[i]));
282
- }
283
- outlet.appendChild(endBookend);
287
+ outlet.append(startBookend, ...prevItems.map(render), endBookend);
284
288
  return;
285
289
  }
286
290
  let nextItems = props.items();
287
291
  let newLength = nextItems.length;
288
292
  let oldLength = prevItems.length;
289
293
  if (!oldLength && newLength) {
290
- for (let i = 0; i < nextItems.length; i++) {
291
- parent.insertBefore(render(nextItems[i]), endBookend);
292
- }
294
+ endBookend.before(...nextItems.map(render))
293
295
  prevItems = nextItems;
294
296
  nextItems = null;
295
297
  return;
@@ -315,9 +317,7 @@ export function list(props, terminal = false) {
315
317
 
316
318
  let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
317
319
  if (start === oldLength) {
318
- for (let i = start; i < nextItems.length; i++) {
319
- parent.insertBefore(render(nextItems[i]), endBookend);
320
- }
320
+ endBookend.before(...nextItems.slice(start).map(render));
321
321
  prevItems = nextItems;
322
322
  nextItems = null;
323
323
  return;
@@ -385,7 +385,6 @@ export function list(props, terminal = false) {
385
385
  });
386
386
  }
387
387
  }
388
-
389
388
  while (start <= newLength) {
390
389
  const newChd = nextItems[start];
391
390
  const oldChd = prevItems[start];
@@ -441,7 +440,8 @@ export function isolatedTerminalList(props) {
441
440
  if (!parent) {
442
441
  prevItems = props.items();
443
442
  outlet.appendChild(startBookend);
444
- for (let i = 0, len = prevItems.length; i < len; i++) {
443
+ const len = prevItems.length;
444
+ for (let i = 0; i < len; i++) {
445
445
  outlet.appendChild(render(prevItems[i]));
446
446
  }
447
447
  outlet.appendChild(endBookend);
@@ -451,21 +451,23 @@ export function isolatedTerminalList(props) {
451
451
  let newLength = nextItems.length;
452
452
  let oldLength = prevItems.length;
453
453
  if (!oldLength && newLength) {
454
- for (let i = 0; i < nextItems.length; i++) {
455
- parent.insertBefore(render(nextItems[i]), endBookend);
454
+ const len = nextItems.length;
455
+ for (let i = 0; i < len; i++) {
456
+ outlet.appendChild(render(nextItems[i]));
456
457
  }
458
+ outlet.appendChild(endBookend);
457
459
  prevItems = nextItems;
458
460
  nextItems = null;
459
461
  return;
460
462
  }
461
463
  const childNodeList = parent.childNodes as NodeListOf<ChildNode>;
462
464
  if (!newLength) {
463
- let node = startBookend;
464
- while (node = node.nextSibling) {
465
- shallowTeardown(node);
465
+ const end = childNodeList.length - 1;
466
+ for (let i = 1; i < end; i++) {
467
+ shallowTeardown(childNodeList[i]);
466
468
  }
467
469
  parent.textContent = "";
468
- parent.appendChild(startBookend);
470
+ parent.appendChild(startBookend)
469
471
  parent.appendChild(endBookend);
470
472
  prevItems = nextItems;
471
473
  nextItems = null;
@@ -474,39 +476,37 @@ export function isolatedTerminalList(props) {
474
476
 
475
477
  let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
476
478
  if (start === oldLength) {
477
- for (let i = start; i < nextItems.length; i++) {
478
- parent.insertBefore(render(nextItems[i]), endBookend);
479
+ const len = nextItems.length;
480
+ for (let i = start; i < len; i++) {
481
+ outlet.appendChild(render(nextItems[i]));
479
482
  }
480
483
  prevItems = nextItems;
481
484
  nextItems = null;
482
485
  return;
483
486
  }
484
487
 
488
+ let childNodes = Array.from(childNodeList);
485
489
  if (start < 0) {
486
- let removeCount = oldLength - nextItems.length;
487
- while (removeCount > 0) {
488
- const e = endBookend.previousSibling;
490
+ for (let i = nextItems.length; i < oldLength; i++) {
491
+ const e = childNodes[1 + --oldLength];
489
492
  shallowTeardown(e);
490
493
  e.remove();
491
- removeCount--;
492
494
  }
493
495
  prevItems = nextItems;
494
496
  nextItems = null;
497
+ childNodes = null;
495
498
  return;
496
499
  }
497
500
 
498
501
  if (start >= newLength) {
499
- let removeCount = oldLength - start;
500
- let node = childNodeList[start + 1];
501
- while (removeCount > 0) {
502
- const next = node.nextSibling;
503
- shallowTeardown(node);
504
- node.remove();
505
- node = next;
506
- removeCount--;
502
+ while (start < oldLength) {
503
+ const e = childNodes[1 + --oldLength];
504
+ shallowTeardown(e);
505
+ e.remove();
507
506
  }
508
507
  prevItems = nextItems;
509
508
  nextItems = null;
509
+ childNodes = null;
510
510
  return;
511
511
  }
512
512
 
@@ -520,49 +520,48 @@ export function isolatedTerminalList(props) {
520
520
  );
521
521
 
522
522
  const nextKeys = new Set(nextItems);
523
-
524
- if (start === 0 && oldLength === prevItems.length - 1) {
525
- let allRemove = true;
526
- for (let i = 0; i <= oldLength; i++) {
527
- if (nextKeys.has(prevItems[i])) {
528
- allRemove = false;
529
- break;
530
- }
523
+ const removalQueue = [];
524
+ for (let i = start; i <= oldLength; i++) {
525
+ if (!nextKeys.has(prevItems[i])) {
526
+ const ch = childNodes[i + 1];
527
+ shallowTeardown(ch);
528
+ removalQueue.push(ch);
529
+ childNodes[i + 1] = null;
531
530
  }
532
- if (allRemove) {
533
- let node = startBookend;
534
- while (node = node.nextSibling) {
535
- shallowTeardown(node);
536
- }
537
- parent.textContent = "";
538
- parent.appendChild(startBookend);
539
- for (let i = 0; i < nextItems.length; i++) {
540
- parent.appendChild(render(nextItems[i]));
541
- }
542
- parent.appendChild(endBookend);
543
- prevItems = nextItems;
544
- nextItems = null;
545
- return;
531
+ }
532
+ if (removalQueue.length === prevItems.length) {
533
+ parent.textContent = "";
534
+ outlet.appendChild(startBookend);
535
+ const len = nextItems.length;
536
+ for (let i = 0; i < len; i++) {
537
+ outlet.appendChild(render(nextItems[i]));
546
538
  }
539
+ outlet.appendChild(endBookend);
540
+ prevItems = nextItems;
541
+ nextItems = null;
542
+ childNodes = null;
543
+ return;
544
+ }
545
+ for (const e of removalQueue) {
546
+ e.remove();
547
+ }
548
+ if (oldLength - start === removalQueue.length) {
549
+ prevItems = nextItems;
550
+ nextItems = null;
551
+ childNodes = null;
552
+ return;
547
553
  }
548
-
549
554
  let keyMap = new Map();
550
- let currentNode = childNodeList[start + 1];
551
555
  for (let i = start; i <= oldLength; i++) {
552
- const item = prevItems[i];
553
- if (!nextKeys.has(item)) {
554
- const next = currentNode.nextSibling;
555
- shallowTeardown(currentNode);
556
- currentNode.remove();
557
- currentNode = next;
558
- } else {
559
- if (currentNode && (!nextItems[i] || item !== nextItems[i])) {
560
- keyMap.set(item, {
561
- el: currentNode,
562
- item: item,
563
- });
564
- }
565
- currentNode = currentNode.nextSibling;
556
+ if (
557
+ childNodes[i + 1] &&
558
+ (!nextItems[i] ||
559
+ prevItems[i] !== nextItems[i])
560
+ ) {
561
+ keyMap.set(prevItems[i], {
562
+ el: childNodes[i + 1],
563
+ item: prevItems[i],
564
+ });
566
565
  }
567
566
  }
568
567
 
@@ -602,6 +601,7 @@ export function isolatedTerminalList(props) {
602
601
  keyMap = null;
603
602
  prevItems = nextItems;
604
603
  nextItems = null;
604
+ childNodes = null;
605
605
  });
606
606
  return outlet;
607
607
  }
package/src/index.ts CHANGED
@@ -1,11 +1,7 @@
1
1
  export {
2
2
  addChildren,
3
3
  addEffect,
4
- component,
5
- createReactiveTextNode,
6
- fixedComponent,
7
- isolatedTerminalList,
8
- list,
4
+ component, createReactiveTextNode, fixedComponent, isolatedTerminalList, list,
9
5
  markAsReactive,
10
6
  mount,
11
7
  setAttribute,
@@ -15,5 +11,5 @@ export {
15
11
  show,
16
12
  terminalList
17
13
  } from "./element.js";
18
- export { $effect, $signal, staticEffect, staticTextNodeEffect } from "./signals.js";
14
+ export { $effect, $signal, staticEffect, type Signal } from "./signals.js";
19
15
 
package/src/signals.ts CHANGED
@@ -18,7 +18,7 @@ function scheduleEffect(effectFn: EffectFn) {
18
18
  runEffectFn(ef);
19
19
  currentEffect = prev;
20
20
  } else {
21
- typeof ef === "function" ? ef() : ef.run();
21
+ ef();
22
22
  }
23
23
  }
24
24
  pendingEffects.length = 0;
@@ -34,60 +34,29 @@ export type Signal<T> = {
34
34
  };
35
35
 
36
36
  class SignalImpl<T> {
37
- subs: any = undefined;
37
+ subs = new Set<any>();
38
38
 
39
39
  constructor(public value: T) { }
40
40
 
41
41
  get(): T {
42
42
  if (currentEffect) {
43
- if (!this.subs) {
44
- this.subs = currentEffect;
45
- } else if (typeof this.subs === "function" || !this.subs.add) {
46
- if (this.subs !== currentEffect) {
47
- const oldEffect = this.subs;
48
- this.subs = new Set();
49
- this.subs.add(oldEffect);
50
- this.subs.add(currentEffect);
51
- }
52
- } else {
53
- this.subs.add(currentEffect);
54
- }
55
- if (!currentEffect.td) {
56
- currentEffect.td = this;
57
- } else if (Array.isArray(currentEffect.td)) {
58
- currentEffect.td.push(this);
43
+ this.subs.add(currentEffect);
44
+ const td = currentEffect.td;
45
+ if (!td) {
46
+ currentEffect.td = this.subs;
47
+ } else if (Array.isArray(td)) {
48
+ td.push(this.subs);
59
49
  } else {
60
- currentEffect.td = [currentEffect.td, this];
50
+ currentEffect.td = [td, this.subs];
61
51
  }
62
52
  }
63
53
  return this.value;
64
54
  }
65
55
 
66
- delete(ef: any): void {
67
- if (this.subs === ef) {
68
- this.subs = undefined;
69
- } else if (typeof this.subs === "object" && this.subs.delete) {
70
- this.subs.delete(ef);
71
- if (this.subs.size === 0) {
72
- this.subs = undefined;
73
- } else if (this.subs.size === 1) {
74
- this.subs = this.subs.values().next().value;
75
- }
76
- }
77
- }
78
-
79
56
  set(value: T): void {
80
57
  if (value !== this.value) {
81
58
  this.value = value;
82
- if (this.subs) {
83
- if (typeof this.subs === "function" || !this.subs.add) {
84
- scheduleEffect(this.subs);
85
- } else {
86
- for (const ef of this.subs) {
87
- scheduleEffect(ef);
88
- }
89
- }
90
- }
59
+ this.subs.forEach(scheduleEffect);
91
60
  }
92
61
  }
93
62
 
@@ -101,7 +70,7 @@ export function $signal<T>(value: T): SignalImpl<T> {
101
70
  }
102
71
 
103
72
  function runEffectFn(ef: EffectFn) {
104
- const td = typeof ef === "function" ? ef() : ef.run();
73
+ const td = ef();
105
74
  if (td) {
106
75
  if (ef.td) {
107
76
  if (Array.isArray(ef.td)) {
@@ -116,11 +85,11 @@ function runEffectFn(ef: EffectFn) {
116
85
  }
117
86
 
118
87
  type EffectTeardown = (() => void) | { delete: (v: any) => void };
119
- type EffectFn = ((() => (() => void) | void) & {
88
+ type EffectFn = (() => (() => void) | void) & {
120
89
  mv?: boolean;
121
90
  dyn?: boolean;
122
91
  td: EffectTeardown | EffectTeardown[];
123
- }) | any;
92
+ }
124
93
 
125
94
  export function $effect(fn: (() => (() => void) | void) & any) {
126
95
  const prev = currentEffect;
@@ -133,6 +102,7 @@ export function $effect(fn: (() => (() => void) | void) & any) {
133
102
  }
134
103
 
135
104
  export function staticEffect(fn: (() => (() => void) | void) & any) {
105
+ fn.td = null;
136
106
  const prev = currentEffect;
137
107
  currentEffect = fn;
138
108
  fn();
@@ -142,30 +112,9 @@ export function staticEffect(fn: (() => (() => void) | void) & any) {
142
112
  }
143
113
 
144
114
  export function cleanup(ef) {
145
- if (typeof ef.td === "function") {
146
- ef.td();
147
- } else if (ef.td.delete) {
148
- ef.td.delete(ef);
149
- } else {
115
+ if (Array.isArray(ef.td)) {
150
116
  for (const f of ef.td) typeof f === "function" ? f() : f.delete(ef);
117
+ } else {
118
+ typeof ef.td === "function" ? ef.td() : ef.td.delete(ef);
151
119
  }
152
120
  }
153
-
154
- class TextNodeEffect {
155
- next: any = undefined;
156
- td: any = undefined;
157
- constructor(public node: Text, public signal: Signal<any>) { }
158
- run() {
159
- this.node.data = this.signal.get();
160
- }
161
- }
162
-
163
- export function staticTextNodeEffect(node: Text, signal: Signal<any>) {
164
- const ef = new TextNodeEffect(node, signal);
165
- const prev = currentEffect;
166
- currentEffect = ef;
167
- ef.run();
168
- currentEffect = prev;
169
- collectEffect(ef);
170
- return ef;
171
- }
@@ -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":"da6bbb589a24c878053b7beefd8a4bc8d495f4ef74c997352ed1fcecff10bc6f","signature":"8ac4d9babe8281389bf23517f2318bb7a0a65ffcfa7b58c9394198e0288f4a94"},{"version":"d7da8f79ad96a031b21785ec0fb8545c9364067c7825f2d95cbfae19bb7f45da","signature":"f3ddd3670c33381859688f604378a0028cafa5b52cc936da9a225933eb464387"},{"version":"3b08b0d35aa0cf2bdddf8cc47bdbd483ef9ceea3efedfd2e43abd1adc978ff3b","signature":"d95a6bb2d3c7794648e8733fdec0b0c027bd1f12615c5c7ac9d2140e2b090651"},{"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":"ccf3c55b2212f44b6e65960a692c486b4c8eaabb2fa8fb14751a8d29138a9897","signature":"a53dff95094f1f7fee261ff1879f5909cd440f02aa68ff6893d017b2343181d1"},{"version":"398711f7db30e112af3d090df8067496f392cdcc3bbdd7d443e7c8470d34df98","signature":"f3ddd3670c33381859688f604378a0028cafa5b52cc936da9a225933eb464387"},{"version":"5b043e65efd2643d5a0411d776a1a5c63fc51ac893c4f5409a89b314d600b98a","signature":"bbc6084bc812a40382d7197dde1bd55fbc08bd63dee323addb1e9a4d1283d98d"},{"version":"a155e9ebe821846c43103394346639a6a19a7f844be4892bbe4352aa20ee6707","signature":"166554555b2dc6392155b045bb33ce964f7d5f092f50fada34eb4d5828d7740e"},{"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"}