@thyn/core 0.0.308 → 0.0.310

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,12 +425,10 @@ 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
- let node = startBookend.nextSibling;
587
- while (node !== endBookend) {
588
- shallowTeardown(node);
589
- node = node.nextSibling;
429
+ const end = childNodeList.length - 1;
430
+ for (let i = 1; i < end; i++) {
431
+ shallowTeardown(childNodeList[i]);
590
432
  }
591
433
  parent.textContent = "";
592
434
  parent.append(startBookend, endBookend);
@@ -594,96 +436,118 @@ export function isolatedTerminalList(props) {
594
436
  nextItems = null;
595
437
  return;
596
438
  }
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
- }
439
+ let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
603
440
  if (start === oldLength) {
604
441
  endBookend.before(...nextItems.slice(start).map(render));
605
442
  prevItems = nextItems;
606
443
  nextItems = null;
607
444
  return;
608
445
  }
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;
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();
625
452
  }
626
453
  prevItems = nextItems;
627
454
  nextItems = null;
455
+ childNodes = null;
628
456
  return;
629
457
  }
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);
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 (oldLength--, newLength--; newLength > start &&
471
+ oldLength >= start &&
472
+ nextItems[newLength] === prevItems[oldLength]; oldLength--, newLength--)
473
+ ;
474
+ const nextKeys = new Set(nextItems);
475
+ const removalQueue = [];
476
+ for (let i = start; i <= oldLength; i++) {
477
+ if (!nextKeys.has(prevItems[i])) {
478
+ const ch = childNodes[i + 1];
479
+ shallowTeardown(ch);
480
+ removalQueue.push(ch);
481
+ childNodes[i + 1] = null;
641
482
  }
483
+ }
484
+ if (removalQueue.length === prevItems.length) {
642
485
  parent.textContent = "";
643
486
  parent.append(startBookend, ...nextItems.map(render), endBookend);
644
487
  prevItems = nextItems;
645
488
  nextItems = null;
489
+ childNodes = null;
646
490
  return;
647
491
  }
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;
492
+ for (const e of removalQueue) {
493
+ e.remove();
494
+ }
495
+ if (oldLength - start === removalQueue.length) {
496
+ prevItems = nextItems;
497
+ nextItems = null;
498
+ childNodes = null;
499
+ return;
500
+ }
501
+ let keyMap = new Map();
502
+ for (let i = start; i <= oldLength; i++) {
503
+ if (childNodes[i + 1] &&
504
+ (!nextItems[i] ||
505
+ prevItems[i] !== nextItems[i])) {
506
+ keyMap.set(prevItems[i], {
507
+ el: childNodes[i + 1],
508
+ item: prevItems[i],
509
+ });
510
+ }
511
+ }
512
+ while (start <= newLength) {
513
+ const newChd = nextItems[start];
514
+ const oldChd = prevItems[start];
515
+ if (newChd === oldChd) {
516
+ start++;
517
+ continue;
518
+ }
519
+ if (oldChd === undefined) {
520
+ parent.insertBefore(render(newChd), endBookend);
521
+ start++;
522
+ continue;
523
+ }
524
+ const mappedOld = keyMap.get(newChd);
525
+ if (mappedOld) {
526
+ const oldDom = childNodeList[start + 1];
527
+ const { el, item } = mappedOld;
528
+ if (oldDom !== el) {
529
+ const tmp = el.nextSibling;
530
+ parent.insertBefore(el, oldDom);
531
+ parent.insertBefore(oldDom, tmp);
659
532
  }
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;
533
+ else if (item !== newChd) {
534
+ replaceWith(newChd, el, render);
670
535
  }
536
+ keyMap.delete(newChd);
671
537
  }
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).
538
+ else if (oldChd !== newChd) {
539
+ parent.insertBefore(render(newChd), childNodeList[start + 1]);
677
540
  }
541
+ start++;
678
542
  }
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();
543
+ for (const { el } of keyMap.values()) {
544
+ shallowTeardown(el);
545
+ el.remove();
684
546
  }
547
+ keyMap = null;
685
548
  prevItems = nextItems;
686
549
  nextItems = null;
550
+ childNodes = null;
687
551
  });
688
552
  return outlet;
689
553
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thyn/core",
3
- "version": "0.0.308",
3
+ "version": "0.0.310",
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,27 +441,20 @@ 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;
624
- while (node !== endBookend) {
625
- shallowTeardown(node);
626
- node = node.nextSibling;
455
+ const end = childNodeList.length - 1;
456
+ for (let i = 1; i < end; i++) {
457
+ shallowTeardown(childNodeList[i]);
627
458
  }
628
459
  parent.textContent = "";
629
460
  parent.append(startBookend, endBookend);
@@ -632,13 +463,7 @@ export function isolatedTerminalList(props) {
632
463
  return;
633
464
  }
634
465
 
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
-
466
+ let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
642
467
  if (start === oldLength) {
643
468
  endBookend.before(...nextItems.slice(start).map(render));
644
469
  prevItems = nextItems;
@@ -646,94 +471,117 @@ export function isolatedTerminalList(props) {
646
471
  return;
647
472
  }
648
473
 
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--;
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;
654
485
  }
655
486
 
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;
487
+ if (start >= newLength) {
488
+ while (start < oldLength) {
489
+ const e = childNodes[1 + --oldLength];
490
+ shallowTeardown(e);
491
+ e.remove();
666
492
  }
667
493
  prevItems = nextItems;
668
494
  nextItems = null;
495
+ childNodes = null;
669
496
  return;
670
497
  }
671
498
 
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
- }
499
+ // suffix
500
+ for (
501
+ oldLength--, newLength--;
502
+ newLength > start &&
503
+ oldLength >= start &&
504
+ nextItems[newLength] === prevItems[oldLength];
505
+ oldLength--, newLength--
506
+ );
679
507
 
680
- // Replace all fast path
681
- if (start === 0 && !keyMap.has(nextItems[0])) {
682
- for (const oldNode of keyMap.values()) {
683
- shallowTeardown(oldNode);
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;
684
516
  }
517
+ }
518
+ if (removalQueue.length === prevItems.length) {
685
519
  parent.textContent = "";
686
520
  parent.append(startBookend, ...nextItems.map(render), endBookend);
687
521
  prevItems = nextItems;
688
522
  nextItems = null;
523
+ childNodes = null;
689
524
  return;
690
525
  }
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;
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);
718
570
  }
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).
571
+ keyMap.delete(newChd);
572
+ } else if (oldChd !== newChd) {
573
+ parent.insertBefore(render(newChd), childNodeList[start + 1]);
724
574
  }
575
+ start++;
725
576
  }
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();
577
+ for (const { el } of keyMap.values()) {
578
+ shallowTeardown(el);
579
+ el.remove();
732
580
  }
733
-
581
+ keyMap = null;
734
582
  prevItems = nextItems;
735
583
  nextItems = null;
584
+ childNodes = null;
736
585
  });
737
-
738
586
  return outlet;
739
- }
587
+ }
@@ -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":"82555cf0639af5849abd34cbd61c2076c00c137a8125e44234f6fe4f23f0f466","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"}