@thyn/core 0.0.308 → 0.0.311

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
@@ -399,161 +399,6 @@ export function list(props, terminal = false) {
399
399
  });
400
400
  return outlet;
401
401
  }
402
- // export function isolatedTerminalList(props) {
403
- // let parent;
404
- // let outlet = document.createDocumentFragment();
405
- // let prevItems;
406
- // const startBookend = document.createComment("") as any;
407
- // const endBookend = document.createComment("") as any;
408
- // startBookend.$frag = outlet;
409
- // startBookend.$end = endBookend;
410
- // const render = props.render;
411
- // staticEffect(() => {
412
- // parent = startBookend.parentNode;
413
- // if (!parent) {
414
- // prevItems = props.items();
415
- // outlet.append(startBookend, ...prevItems.map(render), endBookend);
416
- // return;
417
- // }
418
- // let nextItems = props.items();
419
- // let newLength = nextItems.length;
420
- // let oldLength = prevItems.length;
421
- // if (!oldLength && newLength) {
422
- // endBookend.before(...nextItems.map(render))
423
- // prevItems = nextItems;
424
- // nextItems = null;
425
- // return;
426
- // }
427
- // const childNodeList = parent.childNodes as NodeListOf<ChildNode>;
428
- // if (!newLength) {
429
- // const end = childNodeList.length - 1;
430
- // for (let i = 1; i < end; i++) {
431
- // shallowTeardown(childNodeList[i]);
432
- // }
433
- // parent.textContent = "";
434
- // parent.append(startBookend, endBookend);
435
- // prevItems = nextItems;
436
- // nextItems = null;
437
- // return;
438
- // }
439
- // let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
440
- // if (start === oldLength) {
441
- // endBookend.before(...nextItems.slice(start).map(render));
442
- // prevItems = nextItems;
443
- // nextItems = null;
444
- // return;
445
- // }
446
- // let childNodes = Array.from(childNodeList);
447
- // if (start < 0) {
448
- // for (let i = nextItems.length; i < oldLength; i++) {
449
- // const e = childNodes[1 + --oldLength];
450
- // shallowTeardown(e);
451
- // e.remove();
452
- // }
453
- // prevItems = nextItems;
454
- // nextItems = null;
455
- // childNodes = null;
456
- // return;
457
- // }
458
- // if (start >= newLength) {
459
- // while (start < oldLength) {
460
- // const e = childNodes[1 + --oldLength];
461
- // shallowTeardown(e);
462
- // e.remove();
463
- // }
464
- // prevItems = nextItems;
465
- // nextItems = null;
466
- // childNodes = null;
467
- // return;
468
- // }
469
- // // suffix
470
- // for (
471
- // oldLength--, newLength--;
472
- // newLength > start &&
473
- // oldLength >= start &&
474
- // nextItems[newLength] === prevItems[oldLength];
475
- // oldLength--, newLength--
476
- // );
477
- // const nextKeys = new Set(nextItems);
478
- // const removalQueue = [];
479
- // for (let i = start; i <= oldLength; i++) {
480
- // if (!nextKeys.has(prevItems[i])) {
481
- // const ch = childNodes[i + 1];
482
- // shallowTeardown(ch);
483
- // removalQueue.push(ch);
484
- // childNodes[i + 1] = null;
485
- // }
486
- // }
487
- // if (removalQueue.length === prevItems.length) {
488
- // parent.textContent = "";
489
- // parent.append(startBookend, ...nextItems.map(render), endBookend);
490
- // prevItems = nextItems;
491
- // nextItems = null;
492
- // childNodes = null;
493
- // return;
494
- // }
495
- // for (const e of removalQueue) {
496
- // e.remove();
497
- // }
498
- // if (oldLength - start === removalQueue.length) {
499
- // prevItems = nextItems;
500
- // nextItems = null;
501
- // childNodes = null;
502
- // return;
503
- // }
504
- // let keyMap = new Map();
505
- // for (let i = start; i <= oldLength; i++) {
506
- // if (
507
- // childNodes[i + 1] &&
508
- // (!nextItems[i] ||
509
- // prevItems[i] !== nextItems[i])
510
- // ) {
511
- // keyMap.set(prevItems[i], {
512
- // el: childNodes[i + 1],
513
- // item: prevItems[i],
514
- // });
515
- // }
516
- // }
517
- // while (start <= newLength) {
518
- // const newChd = nextItems[start];
519
- // const oldChd = prevItems[start];
520
- // if (newChd === oldChd) {
521
- // start++;
522
- // continue;
523
- // }
524
- // if (oldChd === undefined) {
525
- // parent.insertBefore(render(newChd), endBookend);
526
- // start++;
527
- // continue;
528
- // }
529
- // const mappedOld = keyMap.get(newChd);
530
- // if (mappedOld) {
531
- // const oldDom = childNodeList[start + 1];
532
- // const { el, item } = mappedOld;
533
- // if (oldDom !== el) {
534
- // const tmp = el.nextSibling;
535
- // parent.insertBefore(el, oldDom);
536
- // parent.insertBefore(oldDom, tmp);
537
- // } else if (item !== newChd) {
538
- // replaceWith(newChd, el, render);
539
- // }
540
- // keyMap.delete(newChd);
541
- // } else if (oldChd !== newChd) {
542
- // parent.insertBefore(render(newChd), childNodeList[start + 1]);
543
- // }
544
- // start++;
545
- // }
546
- // for (const { el } of keyMap.values()) {
547
- // shallowTeardown(el);
548
- // el.remove();
549
- // }
550
- // keyMap = null;
551
- // prevItems = nextItems;
552
- // nextItems = null;
553
- // childNodes = null;
554
- // });
555
- // return outlet;
556
- // }
557
402
  export function isolatedTerminalList(props) {
558
403
  let parent;
559
404
  let outlet = document.createDocumentFragment();
@@ -573,7 +418,6 @@ export function isolatedTerminalList(props) {
573
418
  let nextItems = props.items();
574
419
  let newLength = nextItems.length;
575
420
  let oldLength = prevItems.length;
576
- // Fast path: Empty to something
577
421
  if (!oldLength && newLength) {
578
422
  endBookend.before(...nextItems.map(render));
579
423
  prevItems = nextItems;
@@ -581,7 +425,6 @@ export function isolatedTerminalList(props) {
581
425
  return;
582
426
  }
583
427
  const childNodeList = parent.childNodes;
584
- // Fast path: Something to empty
585
428
  if (!newLength) {
586
429
  let node = startBookend.nextSibling;
587
430
  while (node !== endBookend) {
@@ -594,96 +437,118 @@ export function isolatedTerminalList(props) {
594
437
  nextItems = null;
595
438
  return;
596
439
  }
597
- // 1. Prefix Optimization
598
- let start = 0;
599
- // Compare items until they mismatch or we reach the end
600
- while (start < newLength && start < oldLength && prevItems[start] === nextItems[start]) {
601
- start++;
602
- }
440
+ let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
603
441
  if (start === oldLength) {
604
442
  endBookend.before(...nextItems.slice(start).map(render));
605
443
  prevItems = nextItems;
606
444
  nextItems = null;
607
445
  return;
608
446
  }
609
- // 2. Suffix Optimization
610
- // Scan backwards from the end
611
- while (newLength > start && oldLength > start && nextItems[newLength - 1] === prevItems[oldLength - 1]) {
612
- oldLength--;
613
- newLength--;
614
- }
615
- // Fast path: Simple Deletion (Prefix/Suffix matched, just remove middle)
616
- if (start === newLength) {
617
- // We need to remove from start to oldLength
618
- // We can get the node at 'start' and walk forward
619
- let node = childNodeList[start + 1];
620
- for (let i = start; i < oldLength; i++) {
621
- let next = node.nextSibling;
622
- shallowTeardown(node);
623
- node.remove();
624
- node = next;
447
+ let childNodes = Array.from(childNodeList);
448
+ if (start < 0) {
449
+ for (let i = nextItems.length; i < oldLength; i++) {
450
+ const e = childNodes[1 + --oldLength];
451
+ shallowTeardown(e);
452
+ e.remove();
625
453
  }
626
454
  prevItems = nextItems;
627
455
  nextItems = null;
456
+ childNodes = null;
628
457
  return;
629
458
  }
630
- const keyMap = new Map();
631
- let node = childNodeList[start + 1];
632
- let cursor = node;
633
- for (let i = start; i < oldLength; i++) {
634
- keyMap.set(prevItems[i], node);
635
- node = node.nextSibling;
636
- }
637
- // Replace all fast path
638
- if (start === 0 && !keyMap.has(nextItems[0])) {
639
- for (const oldNode of keyMap.values()) {
640
- shallowTeardown(oldNode);
459
+ if (start >= newLength) {
460
+ while (start < oldLength) {
461
+ const e = childNodes[1 + --oldLength];
462
+ shallowTeardown(e);
463
+ e.remove();
464
+ }
465
+ prevItems = nextItems;
466
+ nextItems = null;
467
+ childNodes = null;
468
+ return;
469
+ }
470
+ // suffix
471
+ for (oldLength--, newLength--; newLength > start &&
472
+ oldLength >= start &&
473
+ nextItems[newLength] === prevItems[oldLength]; oldLength--, newLength--)
474
+ ;
475
+ const nextKeys = new Set(nextItems);
476
+ const removalQueue = [];
477
+ for (let i = start; i <= oldLength; i++) {
478
+ if (!nextKeys.has(prevItems[i])) {
479
+ const ch = childNodes[i + 1];
480
+ shallowTeardown(ch);
481
+ removalQueue.push(ch);
482
+ childNodes[i + 1] = null;
641
483
  }
484
+ }
485
+ if (removalQueue.length === prevItems.length) {
642
486
  parent.textContent = "";
643
487
  parent.append(startBookend, ...nextItems.map(render), endBookend);
644
488
  prevItems = nextItems;
645
489
  nextItems = null;
490
+ childNodes = null;
646
491
  return;
647
492
  }
648
- // Iterate through the NEW list
649
- for (let i = start; i < newLength; i++) {
650
- const newItem = nextItems[i];
651
- const oldNode = keyMap.get(newItem);
652
- if (oldNode) {
653
- // MATCH: We found the item in the old list.
654
- // Remove it from the map so we know it has been "claimed".
655
- keyMap.delete(newItem);
656
- if (oldNode === cursor) {
657
- // It's already in the right spot. Just advance the cursor.
658
- cursor = cursor.nextSibling;
493
+ for (const e of removalQueue) {
494
+ e.remove();
495
+ }
496
+ if (oldLength - start === removalQueue.length) {
497
+ prevItems = nextItems;
498
+ nextItems = null;
499
+ childNodes = null;
500
+ return;
501
+ }
502
+ let keyMap = new Map();
503
+ for (let i = start; i <= oldLength; i++) {
504
+ if (childNodes[i + 1] &&
505
+ (!nextItems[i] ||
506
+ prevItems[i] !== nextItems[i])) {
507
+ keyMap.set(prevItems[i], {
508
+ el: childNodes[i + 1],
509
+ item: prevItems[i],
510
+ });
511
+ }
512
+ }
513
+ while (start <= newLength) {
514
+ const newChd = nextItems[start];
515
+ const oldChd = prevItems[start];
516
+ if (newChd === oldChd) {
517
+ start++;
518
+ continue;
519
+ }
520
+ if (oldChd === undefined) {
521
+ parent.insertBefore(render(newChd), endBookend);
522
+ start++;
523
+ continue;
524
+ }
525
+ const mappedOld = keyMap.get(newChd);
526
+ if (mappedOld) {
527
+ const oldDom = childNodeList[start + 1];
528
+ const { el, item } = mappedOld;
529
+ if (oldDom !== el) {
530
+ const tmp = el.nextSibling;
531
+ parent.insertBefore(el, oldDom);
532
+ parent.insertBefore(oldDom, tmp);
659
533
  }
660
- else {
661
- const swapTarget = oldNode.nextSibling;
662
- // 2. Move old node to current spot (Standard)
663
- parent.insertBefore(oldNode, cursor);
664
- // 3. Move the cursor node to the empty spot (Swap)
665
- parent.insertBefore(cursor, swapTarget);
666
- // 4. Update the loop cursor
667
- // Since we swapped, the node sitting at the NEXT index is likely
668
- // the one that was originally after 'cursor'.
669
- cursor = oldNode.nextSibling;
534
+ else if (item !== newChd) {
535
+ replaceWith(newChd, el, render);
670
536
  }
537
+ keyMap.delete(newChd);
671
538
  }
672
- else {
673
- // MISS: This is a brand new item.
674
- const newNode = render(newItem);
675
- parent.insertBefore(newNode, cursor);
676
- // Similarly, do not advance cursor (it gets pushed to the right).
539
+ else if (oldChd !== newChd) {
540
+ parent.insertBefore(render(newChd), childNodeList[start + 1]);
677
541
  }
542
+ start++;
678
543
  }
679
- // 4. Cleanup
680
- // Any nodes remaining in the map were not present in the new list.
681
- for (const unusedNode of keyMap.values()) {
682
- shallowTeardown(unusedNode);
683
- unusedNode.remove();
544
+ for (const { el } of keyMap.values()) {
545
+ shallowTeardown(el);
546
+ el.remove();
684
547
  }
548
+ keyMap = null;
685
549
  prevItems = nextItems;
686
550
  nextItems = null;
551
+ childNodes = null;
687
552
  });
688
553
  return outlet;
689
554
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thyn/core",
3
- "version": "0.0.308",
3
+ "version": "0.0.311",
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
@@ -424,168 +424,6 @@ export function list(props, terminal = false) {
424
424
  return outlet;
425
425
  }
426
426
 
427
- // export function isolatedTerminalList(props) {
428
- // let parent;
429
- // let outlet = document.createDocumentFragment();
430
- // let prevItems;
431
- // const startBookend = document.createComment("") as any;
432
- // const endBookend = document.createComment("") as any;
433
- // startBookend.$frag = outlet;
434
- // startBookend.$end = endBookend;
435
- // const render = props.render;
436
-
437
- // staticEffect(() => {
438
- // parent = startBookend.parentNode;
439
- // if (!parent) {
440
- // prevItems = props.items();
441
- // outlet.append(startBookend, ...prevItems.map(render), endBookend);
442
- // return;
443
- // }
444
- // let nextItems = props.items();
445
- // let newLength = nextItems.length;
446
- // let oldLength = prevItems.length;
447
- // if (!oldLength && newLength) {
448
- // endBookend.before(...nextItems.map(render))
449
- // prevItems = nextItems;
450
- // nextItems = null;
451
- // return;
452
- // }
453
- // const childNodeList = parent.childNodes as NodeListOf<ChildNode>;
454
- // if (!newLength) {
455
- // const end = childNodeList.length - 1;
456
- // for (let i = 1; i < end; i++) {
457
- // shallowTeardown(childNodeList[i]);
458
- // }
459
- // parent.textContent = "";
460
- // parent.append(startBookend, endBookend);
461
- // prevItems = nextItems;
462
- // nextItems = null;
463
- // return;
464
- // }
465
-
466
- // let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
467
- // if (start === oldLength) {
468
- // endBookend.before(...nextItems.slice(start).map(render));
469
- // prevItems = nextItems;
470
- // nextItems = null;
471
- // return;
472
- // }
473
-
474
- // let childNodes = Array.from(childNodeList);
475
- // if (start < 0) {
476
- // for (let i = nextItems.length; i < oldLength; i++) {
477
- // const e = childNodes[1 + --oldLength];
478
- // shallowTeardown(e);
479
- // e.remove();
480
- // }
481
- // prevItems = nextItems;
482
- // nextItems = null;
483
- // childNodes = null;
484
- // return;
485
- // }
486
-
487
- // if (start >= newLength) {
488
- // while (start < oldLength) {
489
- // const e = childNodes[1 + --oldLength];
490
- // shallowTeardown(e);
491
- // e.remove();
492
- // }
493
- // prevItems = nextItems;
494
- // nextItems = null;
495
- // childNodes = null;
496
- // return;
497
- // }
498
-
499
- // // suffix
500
- // for (
501
- // oldLength--, newLength--;
502
- // newLength > start &&
503
- // oldLength >= start &&
504
- // nextItems[newLength] === prevItems[oldLength];
505
- // oldLength--, newLength--
506
- // );
507
-
508
- // const nextKeys = new Set(nextItems);
509
- // const removalQueue = [];
510
- // for (let i = start; i <= oldLength; i++) {
511
- // if (!nextKeys.has(prevItems[i])) {
512
- // const ch = childNodes[i + 1];
513
- // shallowTeardown(ch);
514
- // removalQueue.push(ch);
515
- // childNodes[i + 1] = null;
516
- // }
517
- // }
518
- // if (removalQueue.length === prevItems.length) {
519
- // parent.textContent = "";
520
- // parent.append(startBookend, ...nextItems.map(render), endBookend);
521
- // prevItems = nextItems;
522
- // nextItems = null;
523
- // childNodes = null;
524
- // return;
525
- // }
526
- // for (const e of removalQueue) {
527
- // e.remove();
528
- // }
529
- // if (oldLength - start === removalQueue.length) {
530
- // prevItems = nextItems;
531
- // nextItems = null;
532
- // childNodes = null;
533
- // return;
534
- // }
535
- // let keyMap = new Map();
536
- // for (let i = start; i <= oldLength; i++) {
537
- // if (
538
- // childNodes[i + 1] &&
539
- // (!nextItems[i] ||
540
- // prevItems[i] !== nextItems[i])
541
- // ) {
542
- // keyMap.set(prevItems[i], {
543
- // el: childNodes[i + 1],
544
- // item: prevItems[i],
545
- // });
546
- // }
547
- // }
548
- // while (start <= newLength) {
549
- // const newChd = nextItems[start];
550
- // const oldChd = prevItems[start];
551
- // if (newChd === oldChd) {
552
- // start++;
553
- // continue;
554
- // }
555
- // if (oldChd === undefined) {
556
- // parent.insertBefore(render(newChd), endBookend);
557
- // start++;
558
- // continue;
559
- // }
560
- // const mappedOld = keyMap.get(newChd);
561
- // if (mappedOld) {
562
- // const oldDom = childNodeList[start + 1];
563
- // const { el, item } = mappedOld;
564
- // if (oldDom !== el) {
565
- // const tmp = el.nextSibling;
566
- // parent.insertBefore(el, oldDom);
567
- // parent.insertBefore(oldDom, tmp);
568
- // } else if (item !== newChd) {
569
- // replaceWith(newChd, el, render);
570
- // }
571
- // keyMap.delete(newChd);
572
- // } else if (oldChd !== newChd) {
573
- // parent.insertBefore(render(newChd), childNodeList[start + 1]);
574
- // }
575
- // start++;
576
- // }
577
- // for (const { el } of keyMap.values()) {
578
- // shallowTeardown(el);
579
- // el.remove();
580
- // }
581
- // keyMap = null;
582
- // prevItems = nextItems;
583
- // nextItems = null;
584
- // childNodes = null;
585
- // });
586
- // return outlet;
587
- // }
588
-
589
427
  export function isolatedTerminalList(props) {
590
428
  let parent;
591
429
  let outlet = document.createDocumentFragment();
@@ -603,24 +441,18 @@ export function isolatedTerminalList(props) {
603
441
  outlet.append(startBookend, ...prevItems.map(render), endBookend);
604
442
  return;
605
443
  }
606
-
607
444
  let nextItems = props.items();
608
445
  let newLength = nextItems.length;
609
446
  let oldLength = prevItems.length;
610
-
611
- // Fast path: Empty to something
612
447
  if (!oldLength && newLength) {
613
- endBookend.before(...nextItems.map(render));
448
+ endBookend.before(...nextItems.map(render))
614
449
  prevItems = nextItems;
615
450
  nextItems = null;
616
451
  return;
617
452
  }
618
-
619
- const childNodeList = parent.childNodes;
620
-
621
- // Fast path: Something to empty
453
+ const childNodeList = parent.childNodes as NodeListOf<ChildNode>;
622
454
  if (!newLength) {
623
- let node = startBookend.nextSibling;
455
+ let node = startBookend.nextSibling
624
456
  while (node !== endBookend) {
625
457
  shallowTeardown(node);
626
458
  node = node.nextSibling;
@@ -632,13 +464,7 @@ export function isolatedTerminalList(props) {
632
464
  return;
633
465
  }
634
466
 
635
- // 1. Prefix Optimization
636
- let start = 0;
637
- // Compare items until they mismatch or we reach the end
638
- while (start < newLength && start < oldLength && prevItems[start] === nextItems[start]) {
639
- start++;
640
- }
641
-
467
+ let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
642
468
  if (start === oldLength) {
643
469
  endBookend.before(...nextItems.slice(start).map(render));
644
470
  prevItems = nextItems;
@@ -646,94 +472,117 @@ export function isolatedTerminalList(props) {
646
472
  return;
647
473
  }
648
474
 
649
- // 2. Suffix Optimization
650
- // Scan backwards from the end
651
- while (newLength > start && oldLength > start && nextItems[newLength - 1] === prevItems[oldLength - 1]) {
652
- oldLength--;
653
- newLength--;
475
+ let childNodes = Array.from(childNodeList);
476
+ if (start < 0) {
477
+ for (let i = nextItems.length; i < oldLength; i++) {
478
+ const e = childNodes[1 + --oldLength];
479
+ shallowTeardown(e);
480
+ e.remove();
481
+ }
482
+ prevItems = nextItems;
483
+ nextItems = null;
484
+ childNodes = null;
485
+ return;
654
486
  }
655
487
 
656
- // Fast path: Simple Deletion (Prefix/Suffix matched, just remove middle)
657
- if (start === newLength) {
658
- // We need to remove from start to oldLength
659
- // We can get the node at 'start' and walk forward
660
- let node = childNodeList[start + 1];
661
- for (let i = start; i < oldLength; i++) {
662
- let next = node.nextSibling;
663
- shallowTeardown(node);
664
- node.remove();
665
- node = next;
488
+ if (start >= newLength) {
489
+ while (start < oldLength) {
490
+ const e = childNodes[1 + --oldLength];
491
+ shallowTeardown(e);
492
+ e.remove();
666
493
  }
667
494
  prevItems = nextItems;
668
495
  nextItems = null;
496
+ childNodes = null;
669
497
  return;
670
498
  }
671
499
 
672
- const keyMap = new Map();
673
- let node = childNodeList[start + 1];
674
- let cursor = node;
675
- for (let i = start; i < oldLength; i++) {
676
- keyMap.set(prevItems[i], node);
677
- node = node.nextSibling;
678
- }
500
+ // suffix
501
+ for (
502
+ oldLength--, newLength--;
503
+ newLength > start &&
504
+ oldLength >= start &&
505
+ nextItems[newLength] === prevItems[oldLength];
506
+ oldLength--, newLength--
507
+ );
679
508
 
680
- // Replace all fast path
681
- if (start === 0 && !keyMap.has(nextItems[0])) {
682
- for (const oldNode of keyMap.values()) {
683
- shallowTeardown(oldNode);
509
+ const nextKeys = new Set(nextItems);
510
+ const removalQueue = [];
511
+ for (let i = start; i <= oldLength; i++) {
512
+ if (!nextKeys.has(prevItems[i])) {
513
+ const ch = childNodes[i + 1];
514
+ shallowTeardown(ch);
515
+ removalQueue.push(ch);
516
+ childNodes[i + 1] = null;
684
517
  }
518
+ }
519
+ if (removalQueue.length === prevItems.length) {
685
520
  parent.textContent = "";
686
521
  parent.append(startBookend, ...nextItems.map(render), endBookend);
687
522
  prevItems = nextItems;
688
523
  nextItems = null;
524
+ childNodes = null;
689
525
  return;
690
526
  }
691
-
692
- // Iterate through the NEW list
693
- for (let i = start; i < newLength; i++) {
694
- const newItem = nextItems[i];
695
- const oldNode = keyMap.get(newItem);
696
-
697
- if (oldNode) {
698
- // MATCH: We found the item in the old list.
699
- // Remove it from the map so we know it has been "claimed".
700
- keyMap.delete(newItem);
701
-
702
- if (oldNode === cursor) {
703
- // It's already in the right spot. Just advance the cursor.
704
- cursor = cursor.nextSibling;
705
- } else {
706
- const swapTarget = oldNode.nextSibling;
707
-
708
- // 2. Move old node to current spot (Standard)
709
- parent.insertBefore(oldNode, cursor);
710
-
711
- // 3. Move the cursor node to the empty spot (Swap)
712
- parent.insertBefore(cursor, swapTarget);
713
-
714
- // 4. Update the loop cursor
715
- // Since we swapped, the node sitting at the NEXT index is likely
716
- // the one that was originally after 'cursor'.
717
- cursor = oldNode.nextSibling;
527
+ for (const e of removalQueue) {
528
+ e.remove();
529
+ }
530
+ if (oldLength - start === removalQueue.length) {
531
+ prevItems = nextItems;
532
+ nextItems = null;
533
+ childNodes = null;
534
+ return;
535
+ }
536
+ let keyMap = new Map();
537
+ for (let i = start; i <= oldLength; i++) {
538
+ if (
539
+ childNodes[i + 1] &&
540
+ (!nextItems[i] ||
541
+ prevItems[i] !== nextItems[i])
542
+ ) {
543
+ keyMap.set(prevItems[i], {
544
+ el: childNodes[i + 1],
545
+ item: prevItems[i],
546
+ });
547
+ }
548
+ }
549
+ while (start <= newLength) {
550
+ const newChd = nextItems[start];
551
+ const oldChd = prevItems[start];
552
+ if (newChd === oldChd) {
553
+ start++;
554
+ continue;
555
+ }
556
+ if (oldChd === undefined) {
557
+ parent.insertBefore(render(newChd), endBookend);
558
+ start++;
559
+ continue;
560
+ }
561
+ const mappedOld = keyMap.get(newChd);
562
+ if (mappedOld) {
563
+ const oldDom = childNodeList[start + 1];
564
+ const { el, item } = mappedOld;
565
+ if (oldDom !== el) {
566
+ const tmp = el.nextSibling;
567
+ parent.insertBefore(el, oldDom);
568
+ parent.insertBefore(oldDom, tmp);
569
+ } else if (item !== newChd) {
570
+ replaceWith(newChd, el, render);
718
571
  }
719
- } else {
720
- // MISS: This is a brand new item.
721
- const newNode = render(newItem);
722
- parent.insertBefore(newNode, cursor);
723
- // Similarly, do not advance cursor (it gets pushed to the right).
572
+ keyMap.delete(newChd);
573
+ } else if (oldChd !== newChd) {
574
+ parent.insertBefore(render(newChd), childNodeList[start + 1]);
724
575
  }
576
+ start++;
725
577
  }
726
-
727
- // 4. Cleanup
728
- // Any nodes remaining in the map were not present in the new list.
729
- for (const unusedNode of keyMap.values()) {
730
- shallowTeardown(unusedNode);
731
- unusedNode.remove();
578
+ for (const { el } of keyMap.values()) {
579
+ shallowTeardown(el);
580
+ el.remove();
732
581
  }
733
-
582
+ keyMap = null;
734
583
  prevItems = nextItems;
735
584
  nextItems = null;
585
+ childNodes = null;
736
586
  });
737
-
738
587
  return outlet;
739
- }
588
+ }
@@ -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":"dc532534392e056678750d71483fbdf98e1f46687d3aa818505e3eb743dbbe15","signature":"c084f39693d652cdebc33667d280f50dece748c2ed4b408e06615834e51a5097"},{"version":"f247391aa07ef6522cfcb4551bfb98f7e5d86af51860b3258fe61c7216579fe4","signature":"f3ddd3670c33381859688f604378a0028cafa5b52cc936da9a225933eb464387"},{"version":"0e3be4d02e120fbbfd12edcc9ad69ff668f5f4303e2b9c80521a8a722428e97d","signature":"12fd8be483df752ac04ae85347f9c397954ac2390e0de50612bf8b9899d7767d"},{"version":"23e3a2d8ef7695586b582f6366a28b1404801ada9a0c82d895f19344f8100ea5","signature":"a32c52a25b47067dac589266e7667623ea1ef2b0c1f9c4fd41adbc7b67a59eee"},{"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":"dc532534392e056678750d71483fbdf98e1f46687d3aa818505e3eb743dbbe15","signature":"c084f39693d652cdebc33667d280f50dece748c2ed4b408e06615834e51a5097"},{"version":"9d501c790355584f293b5f7a0149fec0c4093389d697f98b04ffc1fc4b335680","signature":"f3ddd3670c33381859688f604378a0028cafa5b52cc936da9a225933eb464387"},{"version":"0e3be4d02e120fbbfd12edcc9ad69ff668f5f4303e2b9c80521a8a722428e97d","signature":"12fd8be483df752ac04ae85347f9c397954ac2390e0de50612bf8b9899d7767d"},{"version":"23e3a2d8ef7695586b582f6366a28b1404801ada9a0c82d895f19344f8100ea5","signature":"a32c52a25b47067dac589266e7667623ea1ef2b0c1f9c4fd41adbc7b67a59eee"},{"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"}