@fgv/ts-web-extras 5.1.0-4 → 5.1.0-5

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.
Files changed (53) hide show
  1. package/.rush/temp/{44b0369e8112f3c6f4248af466a3f35ad626d9d7.tar.log → 54f89319dd14b2acc47614d70128001f4227d01e.tar.log} +2 -2
  2. package/.rush/temp/chunked-rush-logs/ts-web-extras.build.chunks.jsonl +17 -17
  3. package/.rush/temp/operation/build/all.log +17 -17
  4. package/.rush/temp/operation/build/log-chunks.jsonl +17 -17
  5. package/.rush/temp/operation/build/state.json +1 -1
  6. package/dist/packlets/file-tree/httpTreeAccessors.js +72 -42
  7. package/dist/packlets/file-tree/httpTreeAccessors.js.map +1 -1
  8. package/dist/test/unit/httpTreeAccessors.test.js +135 -0
  9. package/dist/test/unit/httpTreeAccessors.test.js.map +1 -1
  10. package/dist/ts-web-extras.d.ts +6 -0
  11. package/lib/packlets/file-tree/httpTreeAccessors.d.ts +6 -0
  12. package/lib/packlets/file-tree/httpTreeAccessors.d.ts.map +1 -1
  13. package/lib/packlets/file-tree/httpTreeAccessors.js +72 -42
  14. package/lib/packlets/file-tree/httpTreeAccessors.js.map +1 -1
  15. package/lib/test/unit/httpTreeAccessors.test.js +135 -0
  16. package/lib/test/unit/httpTreeAccessors.test.js.map +1 -1
  17. package/package.json +10 -10
  18. package/rush-logs/ts-web-extras.build.cache.log +1 -1
  19. package/rush-logs/ts-web-extras.build.log +17 -17
  20. package/src/packlets/file-tree/httpTreeAccessors.ts +76 -46
  21. package/src/test/unit/httpTreeAccessors.test.ts +179 -0
  22. package/temp/build/typescript/ts_8nwakTlr.json +1 -1
  23. package/temp/coverage/crypto-utils/browserCryptoProvider.ts.html +1 -1
  24. package/temp/coverage/crypto-utils/browserHashProvider.ts.html +1 -1
  25. package/temp/coverage/crypto-utils/index.html +1 -1
  26. package/temp/coverage/file-tree/directoryHandleStore.ts.html +1 -1
  27. package/temp/coverage/file-tree/fileApiTreeAccessors.ts.html +1 -1
  28. package/temp/coverage/file-tree/fileSystemAccessTreeAccessors.ts.html +1 -1
  29. package/temp/coverage/file-tree/httpTreeAccessors.ts.html +333 -243
  30. package/temp/coverage/file-tree/index.html +11 -11
  31. package/temp/coverage/file-tree/localStorageTreeAccessors.ts.html +1 -1
  32. package/temp/coverage/helpers/fileTreeHelpers.ts.html +1 -1
  33. package/temp/coverage/helpers/index.html +1 -1
  34. package/temp/coverage/index.html +10 -10
  35. package/temp/coverage/lcov-report/crypto-utils/browserCryptoProvider.ts.html +1 -1
  36. package/temp/coverage/lcov-report/crypto-utils/browserHashProvider.ts.html +1 -1
  37. package/temp/coverage/lcov-report/crypto-utils/index.html +1 -1
  38. package/temp/coverage/lcov-report/file-tree/directoryHandleStore.ts.html +1 -1
  39. package/temp/coverage/lcov-report/file-tree/fileApiTreeAccessors.ts.html +1 -1
  40. package/temp/coverage/lcov-report/file-tree/fileSystemAccessTreeAccessors.ts.html +1 -1
  41. package/temp/coverage/lcov-report/file-tree/httpTreeAccessors.ts.html +333 -243
  42. package/temp/coverage/lcov-report/file-tree/index.html +11 -11
  43. package/temp/coverage/lcov-report/file-tree/localStorageTreeAccessors.ts.html +1 -1
  44. package/temp/coverage/lcov-report/helpers/fileTreeHelpers.ts.html +1 -1
  45. package/temp/coverage/lcov-report/helpers/index.html +1 -1
  46. package/temp/coverage/lcov-report/index.html +10 -10
  47. package/temp/coverage/lcov-report/url-utils/index.html +1 -1
  48. package/temp/coverage/lcov-report/url-utils/urlParams.ts.html +1 -1
  49. package/temp/coverage/lcov.info +470 -437
  50. package/temp/coverage/url-utils/index.html +1 -1
  51. package/temp/coverage/url-utils/urlParams.ts.html +1 -1
  52. package/temp/test/jest/haste-map-7492f1b44480e0cdd1f220078fb3afd8-c8dd6c3430605adeb2f1cadf4f75e791-8c9336785555d572065b28c111982ba4 +0 -0
  53. package/temp/test/jest/perf-cache-7492f1b44480e0cdd1f220078fb3afd8-da39a3ee5e6b4b0d3255bfef95601890 +1 -1
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>448/448</span>
28
+ <span class='fraction'>478/478</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">98.41% </span>
33
+ <span class="strong">98.42% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>124/126</span>
35
+ <span class='fraction'>125/127</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>15/15</span>
42
+ <span class='fraction'>16/16</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>448/448</span>
49
+ <span class='fraction'>478/478</span>
50
50
  </div>
51
51
 
52
52
 
@@ -511,7 +511,37 @@
511
511
  <a name='L446'></a><a href='#L446'>446</a>
512
512
  <a name='L447'></a><a href='#L447'>447</a>
513
513
  <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
515
545
  <span class="cline-any cline-yes">1x</span>
516
546
  <span class="cline-any cline-yes">1x</span>
517
547
  <span class="cline-any cline-yes">1x</span>
@@ -557,10 +587,10 @@
557
587
  <span class="cline-any cline-yes">1x</span>
558
588
  <span class="cline-any cline-yes">1x</span>
559
589
  <span class="cline-any cline-yes">1x</span>
560
- <span class="cline-any cline-yes">156x</span>
561
- <span class="cline-any cline-yes">156x</span>
562
- <span class="cline-any cline-yes">156x</span>
563
- <span class="cline-any cline-yes">156x</span>
590
+ <span class="cline-any cline-yes">168x</span>
591
+ <span class="cline-any cline-yes">168x</span>
592
+ <span class="cline-any cline-yes">168x</span>
593
+ <span class="cline-any cline-yes">168x</span>
564
594
  <span class="cline-any cline-yes">1x</span>
565
595
  <span class="cline-any cline-yes">1x</span>
566
596
  <span class="cline-any cline-yes">1x</span>
@@ -596,14 +626,14 @@
596
626
  <span class="cline-any cline-yes">1x</span>
597
627
  <span class="cline-any cline-yes">1x</span>
598
628
  <span class="cline-any cline-yes">1x</span>
599
- <span class="cline-any cline-yes">49x</span>
600
- <span class="cline-any cline-yes">49x</span>
601
- <span class="cline-any cline-yes">49x</span>
602
- <span class="cline-any cline-yes">49x</span>
603
- <span class="cline-any cline-yes">49x</span>
604
- <span class="cline-any cline-yes">49x</span>
605
- <span class="cline-any cline-yes">49x</span>
606
- <span class="cline-any cline-yes">49x</span>
629
+ <span class="cline-any cline-yes">53x</span>
630
+ <span class="cline-any cline-yes">53x</span>
631
+ <span class="cline-any cline-yes">53x</span>
632
+ <span class="cline-any cline-yes">53x</span>
633
+ <span class="cline-any cline-yes">53x</span>
634
+ <span class="cline-any cline-yes">53x</span>
635
+ <span class="cline-any cline-yes">53x</span>
636
+ <span class="cline-any cline-yes">53x</span>
607
637
  <span class="cline-any cline-yes">1x</span>
608
638
  <span class="cline-any cline-yes">1x</span>
609
639
  <span class="cline-any cline-yes">4x</span>
@@ -622,14 +652,14 @@
622
652
  <span class="cline-any cline-yes">1x</span>
623
653
  <span class="cline-any cline-yes">1x</span>
624
654
  <span class="cline-any cline-yes">1x</span>
625
- <span class="cline-any cline-yes">59x</span>
626
- <span class="cline-any cline-yes">59x</span>
627
- <span class="cline-any cline-yes">59x</span>
628
- <span class="cline-any cline-yes">59x</span>
655
+ <span class="cline-any cline-yes">63x</span>
656
+ <span class="cline-any cline-yes">63x</span>
657
+ <span class="cline-any cline-yes">63x</span>
658
+ <span class="cline-any cline-yes">63x</span>
629
659
  <span class="cline-any cline-yes">10x</span>
630
660
  <span class="cline-any cline-yes">10x</span>
631
- <span class="cline-any cline-yes">49x</span>
632
- <span class="cline-any cline-yes">49x</span>
661
+ <span class="cline-any cline-yes">53x</span>
662
+ <span class="cline-any cline-yes">53x</span>
633
663
  <span class="cline-any cline-yes">1x</span>
634
664
  <span class="cline-any cline-yes">1x</span>
635
665
  <span class="cline-any cline-yes">1x</span>
@@ -642,90 +672,124 @@
642
672
  <span class="cline-any cline-yes">1x</span>
643
673
  <span class="cline-any cline-yes">1x</span>
644
674
  <span class="cline-any cline-yes">1x</span>
645
- <span class="cline-any cline-yes">27x</span>
675
+ <span class="cline-any cline-yes">31x</span>
646
676
  <span class="cline-any cline-yes">1x</span>
647
677
  <span class="cline-any cline-yes">1x</span>
648
- <span class="cline-any cline-yes">26x</span>
649
- <span class="cline-any cline-yes">26x</span>
650
- <span class="cline-any cline-yes">26x</span>
651
- <span class="cline-any cline-yes">26x</span>
652
- <span class="cline-any cline-yes">26x</span>
653
- <span class="cline-any cline-yes">26x</span>
654
678
  <span class="cline-any cline-yes">1x</span>
655
679
  <span class="cline-any cline-yes">1x</span>
680
+ <span class="cline-any cline-yes">30x</span>
681
+ <span class="cline-any cline-yes">30x</span>
682
+ <span class="cline-any cline-yes">30x</span>
683
+ <span class="cline-any cline-yes">30x</span>
684
+ <span class="cline-any cline-yes">30x</span>
685
+ <span class="cline-any cline-yes">30x</span>
686
+ <span class="cline-any cline-yes">1x</span>
687
+ <span class="cline-any cline-yes">1x</span>
688
+ <span class="cline-any cline-yes">30x</span>
689
+ <span class="cline-any cline-yes">30x</span>
690
+ <span class="cline-any cline-yes">30x</span>
691
+ <span class="cline-any cline-yes">30x</span>
692
+ <span class="cline-any cline-yes">30x</span>
693
+ <span class="cline-any cline-yes">30x</span>
694
+ <span class="cline-any cline-yes">30x</span>
695
+ <span class="cline-any cline-yes">30x</span>
696
+ <span class="cline-any cline-yes">30x</span>
697
+ <span class="cline-any cline-yes">30x</span>
698
+ <span class="cline-any cline-yes">30x</span>
699
+ <span class="cline-any cline-yes">30x</span>
700
+ <span class="cline-any cline-yes">30x</span>
701
+ <span class="cline-any cline-yes">30x</span>
702
+ <span class="cline-any cline-yes">30x</span>
703
+ <span class="cline-any cline-yes">30x</span>
704
+ <span class="cline-any cline-yes">30x</span>
705
+ <span class="cline-any cline-yes">5x</span>
706
+ <span class="cline-any cline-yes">5x</span>
707
+ <span class="cline-any cline-yes">5x</span>
708
+ <span class="cline-any cline-yes">1x</span>
709
+ <span class="cline-any cline-yes">1x</span>
710
+ <span class="cline-any cline-yes">5x</span>
711
+ <span class="cline-any cline-yes">5x</span>
712
+ <span class="cline-any cline-yes">5x</span>
713
+ <span class="cline-any cline-yes">5x</span>
714
+ <span class="cline-any cline-yes">5x</span>
715
+ <span class="cline-any cline-yes">2x</span>
716
+ <span class="cline-any cline-yes">2x</span>
717
+ <span class="cline-any cline-yes">2x</span>
718
+ <span class="cline-any cline-yes">5x</span>
719
+ <span class="cline-any cline-yes">28x</span>
720
+ <span class="cline-any cline-yes">30x</span>
721
+ <span class="cline-any cline-yes">26x</span>
656
722
  <span class="cline-any cline-yes">26x</span>
657
723
  <span class="cline-any cline-yes">1x</span>
658
724
  <span class="cline-any cline-yes">1x</span>
725
+ <span class="cline-any cline-yes">1x</span>
726
+ <span class="cline-any cline-yes">25x</span>
659
727
  <span class="cline-any cline-yes">25x</span>
660
728
  <span class="cline-any cline-yes">25x</span>
661
729
  <span class="cline-any cline-yes">25x</span>
662
730
  <span class="cline-any cline-yes">25x</span>
731
+ <span class="cline-any cline-yes">26x</span>
732
+ <span class="cline-any cline-yes">1x</span>
733
+ <span class="cline-any cline-yes">1x</span>
734
+ <span class="cline-any cline-yes">25x</span>
663
735
  <span class="cline-any cline-yes">25x</span>
664
736
  <span class="cline-any cline-yes">25x</span>
665
737
  <span class="cline-any cline-yes">25x</span>
666
738
  <span class="cline-any cline-yes">25x</span>
667
739
  <span class="cline-any cline-yes">26x</span>
668
- <span class="cline-any cline-yes">4x</span>
669
- <span class="cline-any cline-yes">4x</span>
670
- <span class="cline-any cline-yes">4x</span>
740
+ <span class="cline-any cline-yes">9x</span>
741
+ <span class="cline-any cline-yes">9x</span>
742
+ <span class="cline-any cline-yes">9x</span>
743
+ <span class="cline-any cline-yes">26x</span>
744
+ <span class="cline-any cline-yes">18x</span>
745
+ <span class="cline-any cline-yes">18x</span>
746
+ <span class="cline-any cline-yes">30x</span>
747
+ <span class="cline-any cline-yes">17x</span>
748
+ <span class="cline-any cline-yes">17x</span>
749
+ <span class="cline-any cline-yes">2x</span>
750
+ <span class="cline-any cline-yes">2x</span>
751
+ <span class="cline-any cline-yes">17x</span>
752
+ <span class="cline-any cline-yes">17x</span>
753
+ <span class="cline-any cline-yes">17x</span>
754
+ <span class="cline-any cline-yes">17x</span>
755
+ <span class="cline-any cline-yes">17x</span>
756
+ <span class="cline-any cline-yes">17x</span>
757
+ <span class="cline-any cline-yes">17x</span>
758
+ <span class="cline-any cline-yes">3x</span>
759
+ <span class="cline-any cline-yes">3x</span>
760
+ <span class="cline-any cline-yes">17x</span>
761
+ <span class="cline-any cline-yes">15x</span>
762
+ <span class="cline-any cline-yes">15x</span>
671
763
  <span class="cline-any cline-yes">1x</span>
672
764
  <span class="cline-any cline-yes">1x</span>
673
- <span class="cline-any cline-yes">4x</span>
674
- <span class="cline-any cline-yes">4x</span>
675
- <span class="cline-any cline-yes">4x</span>
676
- <span class="cline-any cline-yes">4x</span>
677
- <span class="cline-any cline-yes">4x</span>
678
765
  <span class="cline-any cline-yes">1x</span>
679
766
  <span class="cline-any cline-yes">1x</span>
680
- <span class="cline-any cline-yes">4x</span>
681
- <span class="cline-any cline-yes">24x</span>
682
- <span class="cline-any cline-yes">26x</span>
683
- <span class="cline-any cline-yes">22x</span>
684
- <span class="cline-any cline-yes">22x</span>
685
767
  <span class="cline-any cline-yes">1x</span>
686
768
  <span class="cline-any cline-yes">1x</span>
687
- <span class="cline-any cline-yes">21x</span>
688
- <span class="cline-any cline-yes">21x</span>
689
- <span class="cline-any cline-yes">21x</span>
690
- <span class="cline-any cline-yes">21x</span>
691
- <span class="cline-any cline-yes">21x</span>
692
- <span class="cline-any cline-yes">22x</span>
693
769
  <span class="cline-any cline-yes">1x</span>
694
- <span class="cline-any cline-yes">1x</span>
695
- <span class="cline-any cline-yes">21x</span>
696
- <span class="cline-any cline-yes">21x</span>
697
- <span class="cline-any cline-yes">21x</span>
698
- <span class="cline-any cline-yes">21x</span>
699
- <span class="cline-any cline-yes">21x</span>
700
- <span class="cline-any cline-yes">22x</span>
701
- <span class="cline-any cline-yes">8x</span>
702
- <span class="cline-any cline-yes">8x</span>
703
- <span class="cline-any cline-yes">22x</span>
704
- <span class="cline-any cline-yes">15x</span>
705
- <span class="cline-any cline-yes">15x</span>
706
- <span class="cline-any cline-yes">26x</span>
770
+ <span class="cline-any cline-yes">12x</span>
707
771
  <span class="cline-any cline-yes">2x</span>
708
772
  <span class="cline-any cline-yes">2x</span>
709
- <span class="cline-any cline-yes">15x</span>
710
- <span class="cline-any cline-yes">15x</span>
711
- <span class="cline-any cline-yes">15x</span>
712
- <span class="cline-any cline-yes">15x</span>
713
- <span class="cline-any cline-yes">15x</span>
714
- <span class="cline-any cline-yes">15x</span>
715
- <span class="cline-any cline-yes">26x</span>
716
- <span class="cline-any cline-yes">26x</span>
773
+ <span class="cline-any cline-yes">12x</span>
774
+ <span class="cline-any cline-yes">10x</span>
775
+ <span class="cline-any cline-yes">10x</span>
776
+ <span class="cline-any cline-yes">12x</span>
717
777
  <span class="cline-any cline-yes">1x</span>
718
778
  <span class="cline-any cline-yes">1x</span>
719
779
  <span class="cline-any cline-yes">1x</span>
720
780
  <span class="cline-any cline-yes">1x</span>
721
781
  <span class="cline-any cline-yes">1x</span>
722
782
  <span class="cline-any cline-yes">1x</span>
723
- <span class="cline-any cline-yes">8x</span>
724
- <span class="cline-any cline-yes">8x</span>
783
+ <span class="cline-any cline-yes">14x</span>
784
+ <span class="cline-any cline-yes">14x</span>
785
+ <span class="cline-any cline-yes">1x</span>
786
+ <span class="cline-any cline-yes">1x</span>
725
787
  <span class="cline-any cline-yes">1x</span>
726
788
  <span class="cline-any cline-yes">1x</span>
727
789
  <span class="cline-any cline-yes">1x</span>
728
790
  <span class="cline-any cline-yes">1x</span>
791
+ <span class="cline-any cline-yes">9x</span>
792
+ <span class="cline-any cline-yes">9x</span>
729
793
  <span class="cline-any cline-yes">1x</span>
730
794
  <span class="cline-any cline-yes">1x</span>
731
795
  <span class="cline-any cline-yes">7x</span>
@@ -734,15 +798,11 @@
734
798
  <span class="cline-any cline-yes">1x</span>
735
799
  <span class="cline-any cline-yes">6x</span>
736
800
  <span class="cline-any cline-yes">6x</span>
737
- <span class="cline-any cline-yes">1x</span>
738
- <span class="cline-any cline-yes">1x</span>
739
- <span class="cline-any cline-yes">5x</span>
740
- <span class="cline-any cline-yes">5x</span>
801
+ <span class="cline-any cline-yes">6x</span>
802
+ <span class="cline-any cline-yes">6x</span>
803
+ <span class="cline-any cline-yes">7x</span>
741
804
  <span class="cline-any cline-yes">5x</span>
742
805
  <span class="cline-any cline-yes">5x</span>
743
- <span class="cline-any cline-yes">6x</span>
744
- <span class="cline-any cline-yes">4x</span>
745
- <span class="cline-any cline-yes">4x</span>
746
806
  <span class="cline-any cline-yes">1x</span>
747
807
  <span class="cline-any cline-yes">1x</span>
748
808
  <span class="cline-any cline-yes">1x</span>
@@ -755,15 +815,15 @@
755
815
  <span class="cline-any cline-yes">1x</span>
756
816
  <span class="cline-any cline-yes">1x</span>
757
817
  <span class="cline-any cline-yes">1x</span>
758
- <span class="cline-any cline-yes">29x</span>
759
- <span class="cline-any cline-yes">29x</span>
818
+ <span class="cline-any cline-yes">33x</span>
819
+ <span class="cline-any cline-yes">33x</span>
760
820
  <span class="cline-any cline-yes">1x</span>
761
821
  <span class="cline-any cline-yes">1x</span>
762
- <span class="cline-any cline-yes">28x</span>
763
- <span class="cline-any cline-yes">28x</span>
822
+ <span class="cline-any cline-yes">32x</span>
823
+ <span class="cline-any cline-yes">32x</span>
824
+ <span class="cline-any cline-yes">33x</span>
825
+ <span class="cline-any cline-yes">29x</span>
764
826
  <span class="cline-any cline-yes">29x</span>
765
- <span class="cline-any cline-yes">25x</span>
766
- <span class="cline-any cline-yes">25x</span>
767
827
  <span class="cline-any cline-yes">3x</span>
768
828
  <span class="cline-any cline-yes">3x</span>
769
829
  <span class="cline-any cline-yes">3x</span>
@@ -776,10 +836,10 @@
776
836
  <span class="cline-any cline-yes">1x</span>
777
837
  <span class="cline-any cline-yes">1x</span>
778
838
  <span class="cline-any cline-yes">1x</span>
779
- <span class="cline-any cline-yes">32x</span>
780
- <span class="cline-any cline-yes">32x</span>
781
- <span class="cline-any cline-yes">30x</span>
782
- <span class="cline-any cline-yes">30x</span>
839
+ <span class="cline-any cline-yes">36x</span>
840
+ <span class="cline-any cline-yes">36x</span>
841
+ <span class="cline-any cline-yes">34x</span>
842
+ <span class="cline-any cline-yes">34x</span>
783
843
  <span class="cline-any cline-yes">2x</span>
784
844
  <span class="cline-any cline-yes">2x</span>
785
845
  <span class="cline-any cline-yes">1x</span>
@@ -790,83 +850,52 @@
790
850
  <span class="cline-any cline-yes">1x</span>
791
851
  <span class="cline-any cline-yes">1x</span>
792
852
  <span class="cline-any cline-yes">1x</span>
793
- <span class="cline-any cline-yes">52x</span>
794
- <span class="cline-any cline-yes">52x</span>
795
- <span class="cline-any cline-yes">52x</span>
796
- <span class="cline-any cline-yes">52x</span>
853
+ <span class="cline-any cline-yes">61x</span>
854
+ <span class="cline-any cline-yes">61x</span>
855
+ <span class="cline-any cline-yes">61x</span>
856
+ <span class="cline-any cline-yes">61x</span>
797
857
  <span class="cline-any cline-yes">1x</span>
798
858
  <span class="cline-any cline-yes">1x</span>
799
- <span class="cline-any cline-yes">52x</span>
800
- <span class="cline-any cline-yes">52x</span>
801
- <span class="cline-any cline-yes">52x</span>
802
- <span class="cline-any cline-yes">52x</span>
803
- <span class="cline-any cline-yes">52x</span>
859
+ <span class="cline-any cline-yes">61x</span>
860
+ <span class="cline-any cline-yes">61x</span>
861
+ <span class="cline-any cline-yes">61x</span>
862
+ <span class="cline-any cline-yes">61x</span>
863
+ <span class="cline-any cline-yes">61x</span>
804
864
  <span class="cline-any cline-yes">8x</span>
805
865
  <span class="cline-any cline-yes">8x</span>
806
866
  <span class="cline-any cline-yes">8x</span>
807
- <span class="cline-any cline-yes">44x</span>
808
- <span class="cline-any cline-yes">52x</span>
809
- <span class="cline-any cline-yes">14x</span>
810
- <span class="cline-any cline-yes">14x</span>
811
- <span class="cline-any cline-yes">14x</span>
812
- <span class="cline-any cline-yes">14x</span>
813
- <span class="cline-any cline-yes">14x</span>
814
- <span class="cline-any cline-yes">14x</span>
815
- <span class="cline-any cline-yes">30x</span>
816
- <span class="cline-any cline-yes">30x</span>
817
- <span class="cline-any cline-yes">52x</span>
818
- <span class="cline-any cline-yes">1x</span>
819
- <span class="cline-any cline-yes">1x</span>
820
- <span class="cline-any cline-yes">29x</span>
821
- <span class="cline-any cline-yes">29x</span>
822
- <span class="cline-any cline-yes">1x</span>
823
- <span class="cline-any cline-yes">1x</span>
824
- <span class="cline-any cline-yes">1x</span>
825
- <span class="cline-any cline-yes">1x</span>
826
- <span class="cline-any cline-yes">1x</span>
827
- <span class="cline-any cline-yes">1x</span>
828
- <span class="cline-any cline-yes">40x</span>
829
- <span class="cline-any cline-yes">40x</span>
830
- <span class="cline-any cline-yes">52x</span>
831
- <span class="cline-any cline-yes">52x</span>
867
+ <span class="cline-any cline-yes">53x</span>
868
+ <span class="cline-any cline-yes">61x</span>
869
+ <span class="cline-any cline-yes">19x</span>
870
+ <span class="cline-any cline-yes">19x</span>
871
+ <span class="cline-any cline-yes">19x</span>
872
+ <span class="cline-any cline-yes">19x</span>
873
+ <span class="cline-any cline-yes">19x</span>
874
+ <span class="cline-any cline-yes">19x</span>
832
875
  <span class="cline-any cline-yes">34x</span>
833
876
  <span class="cline-any cline-yes">34x</span>
834
- <span class="cline-any cline-yes">18x</span>
835
- <span class="cline-any cline-yes">18x</span>
836
- <span class="cline-any cline-yes">18x</span>
837
- <span class="cline-any cline-yes">18x</span>
838
- <span class="cline-any cline-yes">18x</span>
839
- <span class="cline-any cline-yes">52x</span>
840
- <span class="cline-any cline-yes">52x</span>
841
- <span class="cline-any cline-yes">52x</span>
842
- <span class="cline-any cline-yes">52x</span>
843
- <span class="cline-any cline-yes">52x</span>
844
- <span class="cline-any cline-yes">52x</span>
845
- <span class="cline-any cline-yes">52x</span>
846
- <span class="cline-any cline-yes">6x</span>
847
- <span class="cline-any cline-yes">6x</span>
848
- <span class="cline-any cline-yes">12x</span>
849
- <span class="cline-any cline-yes">12x</span>
850
- <span class="cline-any cline-yes">12x</span>
851
- <span class="cline-any cline-yes">12x</span>
852
- <span class="cline-any cline-yes">52x</span>
853
- <span class="cline-any cline-yes">52x</span>
854
- <span class="cline-any cline-yes">52x</span>
855
- <span class="cline-any cline-yes">52x</span>
856
- <span class="cline-any cline-yes">12x</span>
857
- <span class="cline-any cline-yes">1x</span>
858
- <span class="cline-any cline-yes">1x</span>
859
- <span class="cline-any cline-yes">12x</span>
877
+ <span class="cline-any cline-yes">61x</span>
860
878
  <span class="cline-any cline-yes">1x</span>
861
879
  <span class="cline-any cline-yes">1x</span>
880
+ <span class="cline-any cline-yes">33x</span>
881
+ <span class="cline-any cline-yes">33x</span>
862
882
  <span class="cline-any cline-yes">1x</span>
863
883
  <span class="cline-any cline-yes">1x</span>
864
884
  <span class="cline-any cline-yes">1x</span>
865
885
  <span class="cline-any cline-yes">1x</span>
866
886
  <span class="cline-any cline-yes">1x</span>
867
887
  <span class="cline-any cline-yes">1x</span>
888
+ <span class="cline-any cline-yes">47x</span>
889
+ <span class="cline-any cline-yes">47x</span>
868
890
  <span class="cline-any cline-yes">61x</span>
869
891
  <span class="cline-any cline-yes">61x</span>
892
+ <span class="cline-any cline-yes">39x</span>
893
+ <span class="cline-any cline-yes">39x</span>
894
+ <span class="cline-any cline-yes">22x</span>
895
+ <span class="cline-any cline-yes">22x</span>
896
+ <span class="cline-any cline-yes">22x</span>
897
+ <span class="cline-any cline-yes">22x</span>
898
+ <span class="cline-any cline-yes">22x</span>
870
899
  <span class="cline-any cline-yes">61x</span>
871
900
  <span class="cline-any cline-yes">61x</span>
872
901
  <span class="cline-any cline-yes">61x</span>
@@ -874,41 +903,72 @@
874
903
  <span class="cline-any cline-yes">61x</span>
875
904
  <span class="cline-any cline-yes">61x</span>
876
905
  <span class="cline-any cline-yes">61x</span>
906
+ <span class="cline-any cline-yes">8x</span>
907
+ <span class="cline-any cline-yes">8x</span>
908
+ <span class="cline-any cline-yes">14x</span>
909
+ <span class="cline-any cline-yes">14x</span>
910
+ <span class="cline-any cline-yes">14x</span>
911
+ <span class="cline-any cline-yes">14x</span>
912
+ <span class="cline-any cline-yes">61x</span>
877
913
  <span class="cline-any cline-yes">61x</span>
878
914
  <span class="cline-any cline-yes">61x</span>
879
915
  <span class="cline-any cline-yes">61x</span>
916
+ <span class="cline-any cline-yes">14x</span>
917
+ <span class="cline-any cline-yes">1x</span>
918
+ <span class="cline-any cline-yes">1x</span>
919
+ <span class="cline-any cline-yes">14x</span>
920
+ <span class="cline-any cline-yes">1x</span>
921
+ <span class="cline-any cline-yes">1x</span>
922
+ <span class="cline-any cline-yes">1x</span>
923
+ <span class="cline-any cline-yes">1x</span>
924
+ <span class="cline-any cline-yes">1x</span>
925
+ <span class="cline-any cline-yes">1x</span>
926
+ <span class="cline-any cline-yes">1x</span>
927
+ <span class="cline-any cline-yes">1x</span>
928
+ <span class="cline-any cline-yes">65x</span>
929
+ <span class="cline-any cline-yes">65x</span>
930
+ <span class="cline-any cline-yes">65x</span>
931
+ <span class="cline-any cline-yes">65x</span>
932
+ <span class="cline-any cline-yes">65x</span>
933
+ <span class="cline-any cline-yes">65x</span>
934
+ <span class="cline-any cline-yes">65x</span>
935
+ <span class="cline-any cline-yes">65x</span>
936
+ <span class="cline-any cline-yes">65x</span>
937
+ <span class="cline-any cline-yes">65x</span>
938
+ <span class="cline-any cline-yes">65x</span>
939
+ <span class="cline-any cline-yes">65x</span>
880
940
  <span class="cline-any cline-yes">7x</span>
881
941
  <span class="cline-any cline-yes">7x</span>
882
- <span class="cline-any cline-yes">54x</span>
883
- <span class="cline-any cline-yes">54x</span>
884
- <span class="cline-any cline-yes">54x</span>
885
- <span class="cline-any cline-yes">60x</span>
886
- <span class="cline-any cline-yes">48x</span>
942
+ <span class="cline-any cline-yes">58x</span>
943
+ <span class="cline-any cline-yes">58x</span>
944
+ <span class="cline-any cline-yes">58x</span>
945
+ <span class="cline-any cline-yes">64x</span>
946
+ <span class="cline-any cline-yes">52x</span>
887
947
  <span class="cline-any cline-yes">2x</span>
888
948
  <span class="cline-any cline-yes">2x</span>
889
949
  <span class="cline-any cline-yes">1x</span>
890
950
  <span class="cline-any cline-yes">1x</span>
891
951
  <span class="cline-any cline-yes">1x</span>
892
- <span class="cline-any cline-yes">48x</span>
893
- <span class="cline-any cline-yes">46x</span>
894
- <span class="cline-any cline-yes">46x</span>
895
- <span class="cline-any cline-yes">46x</span>
896
- <span class="cline-any cline-yes">46x</span>
897
- <span class="cline-any cline-yes">46x</span>
952
+ <span class="cline-any cline-yes">52x</span>
953
+ <span class="cline-any cline-yes">50x</span>
954
+ <span class="cline-any cline-yes">50x</span>
955
+ <span class="cline-any cline-yes">50x</span>
956
+ <span class="cline-any cline-yes">50x</span>
957
+ <span class="cline-any cline-yes">50x</span>
898
958
  <span class="cline-any cline-yes">3x</span>
899
959
  <span class="cline-any cline-yes">3x</span>
900
- <span class="cline-any cline-yes">43x</span>
901
- <span class="cline-any cline-yes">46x</span>
902
- <span class="cline-any cline-yes">46x</span>
903
- <span class="cline-any cline-yes">46x</span>
904
- <span class="cline-any cline-yes">46x</span>
905
- <span class="cline-any cline-yes">46x</span>
906
- <span class="cline-any cline-yes">46x</span>
907
- <span class="cline-any cline-yes">46x</span>
908
- <span class="cline-any cline-yes">48x</span>
960
+ <span class="cline-any cline-yes">47x</span>
961
+ <span class="cline-any cline-yes">50x</span>
962
+ <span class="cline-any cline-yes">50x</span>
909
963
  <span class="cline-any cline-yes">50x</span>
910
964
  <span class="cline-any cline-yes">50x</span>
911
965
  <span class="cline-any cline-yes">50x</span>
966
+ <span class="cline-any cline-yes">50x</span>
967
+ <span class="cline-any cline-yes">50x</span>
968
+ <span class="cline-any cline-yes">52x</span>
969
+ <span class="cline-any cline-yes">54x</span>
970
+ <span class="cline-any cline-yes">54x</span>
971
+ <span class="cline-any cline-yes">54x</span>
912
972
  <span class="cline-any cline-yes">1x</span>
913
973
  <span class="cline-any cline-yes">1x</span>
914
974
  <span class="cline-any cline-yes">1x</span>
@@ -918,46 +978,46 @@
918
978
  <span class="cline-any cline-yes">1x</span>
919
979
  <span class="cline-any cline-yes">1x</span>
920
980
  <span class="cline-any cline-yes">1x</span>
921
- <span class="cline-any cline-yes">107x</span>
922
- <span class="cline-any cline-yes">107x</span>
923
- <span class="cline-any cline-yes">107x</span>
924
- <span class="cline-any cline-yes">107x</span>
925
- <span class="cline-any cline-yes">107x</span>
926
- <span class="cline-any cline-yes">107x</span>
927
- <span class="cline-any cline-yes">214x</span>
928
- <span class="cline-any cline-yes">112x</span>
929
- <span class="cline-any cline-yes">112x</span>
930
- <span class="cline-any cline-yes">214x</span>
931
- <span class="cline-any cline-yes">107x</span>
932
- <span class="cline-any cline-yes">107x</span>
981
+ <span class="cline-any cline-yes">115x</span>
982
+ <span class="cline-any cline-yes">115x</span>
983
+ <span class="cline-any cline-yes">115x</span>
984
+ <span class="cline-any cline-yes">115x</span>
985
+ <span class="cline-any cline-yes">115x</span>
986
+ <span class="cline-any cline-yes">115x</span>
987
+ <span class="cline-any cline-yes">230x</span>
988
+ <span class="cline-any cline-yes">120x</span>
989
+ <span class="cline-any cline-yes">120x</span>
990
+ <span class="cline-any cline-yes">230x</span>
991
+ <span class="cline-any cline-yes">115x</span>
992
+ <span class="cline-any cline-yes">115x</span>
933
993
  <span class="cline-any cline-yes">1x</span>
934
- <span class="cline-any cline-yes">107x</span>
935
- <span class="cline-any cline-yes">107x</span>
936
- <span class="cline-any cline-yes">107x</span>
937
- <span class="cline-any cline-yes">107x</span>
938
- <span class="cline-any cline-yes">107x</span>
939
- <span class="cline-any cline-yes">107x</span>
940
- <span class="cline-any cline-yes">107x</span>
941
- <span class="cline-any cline-yes">107x</span>
994
+ <span class="cline-any cline-yes">115x</span>
995
+ <span class="cline-any cline-yes">115x</span>
996
+ <span class="cline-any cline-yes">115x</span>
997
+ <span class="cline-any cline-yes">115x</span>
998
+ <span class="cline-any cline-yes">115x</span>
999
+ <span class="cline-any cline-yes">115x</span>
1000
+ <span class="cline-any cline-yes">115x</span>
1001
+ <span class="cline-any cline-yes">115x</span>
942
1002
  <span class="cline-any cline-yes">3x</span>
943
1003
  <span class="cline-any cline-yes">3x</span>
944
1004
  <span class="cline-any cline-yes">3x</span>
945
- <span class="cline-any cline-yes">104x</span>
946
- <span class="cline-any cline-yes">107x</span>
1005
+ <span class="cline-any cline-yes">112x</span>
1006
+ <span class="cline-any cline-yes">115x</span>
947
1007
  <span class="cline-any cline-yes">5x</span>
948
1008
  <span class="cline-any cline-yes">5x</span>
949
1009
  <span class="cline-any cline-yes">5x</span>
950
1010
  <span class="cline-any cline-yes">5x</span>
951
1011
  <span class="cline-any cline-yes">5x</span>
952
1012
  <span class="cline-any cline-yes">5x</span>
953
- <span class="cline-any cline-yes">99x</span>
954
- <span class="cline-any cline-yes">99x</span>
955
1013
  <span class="cline-any cline-yes">107x</span>
1014
+ <span class="cline-any cline-yes">107x</span>
1015
+ <span class="cline-any cline-yes">115x</span>
956
1016
  <span class="cline-any cline-yes">2x</span>
957
1017
  <span class="cline-any cline-yes">2x</span>
958
- <span class="cline-any cline-yes">97x</span>
959
- <span class="cline-any cline-yes">97x</span>
960
- <span class="cline-any cline-yes">97x</span>
1018
+ <span class="cline-any cline-yes">105x</span>
1019
+ <span class="cline-any cline-yes">105x</span>
1020
+ <span class="cline-any cline-yes">105x</span>
961
1021
  <span class="cline-any cline-yes">1x</span>
962
1022
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*
963
1023
  * Copyright (c) 2026 Erik Fortune
@@ -1091,6 +1151,8 @@ export class HttpTreeAccessors&lt;TCT extends string = string&gt;
1091
1151
  */
1092
1152
  public async syncToDisk(): Promise&lt;Result&lt;void&gt;&gt; {
1093
1153
  if (this._syncPromise) {
1154
+ // Wait for the in-flight sync — it drains the queue in a loop,
1155
+ // so any items added before it finishes will be included.
1094
1156
  return this._syncPromise;
1095
1157
  }
1096
1158
  &nbsp;
@@ -1101,66 +1163,94 @@ export class HttpTreeAccessors&lt;TCT extends string = string&gt;
1101
1163
  }
1102
1164
  &nbsp;
1103
1165
  private async _doSync(): Promise&lt;Result&lt;void&gt;&gt; {
1104
- if (this._dirtyFiles.size === 0 &amp;&amp; this._pendingDeletions.size === 0) {
1105
- return succeed(undefined);
1106
- }
1166
+ // Drain loop: keep processing as long as new items arrive.
1167
+ // This is critical for bulk operations (e.g. reset) where many
1168
+ // deleteFile/saveFileContents calls happen synchronously — only
1169
+ // the first may be in the set when we snapshot, but the rest
1170
+ // arrive during the async gaps and must be picked up before
1171
+ // we return.
1172
+ let didWork = false;
1173
+ while (this._dirtyFiles.size &gt; 0 || this._pendingDeletions.size &gt; 0) {
1174
+ didWork = true;
1175
+ // Snapshot and clear so that changes arriving during the async
1176
+ // requests land in the live sets for the next iteration.
1177
+ const deletions = new Set(this._pendingDeletions);
1178
+ const dirty = new Set(this._dirtyFiles);
1179
+ this._pendingDeletions.clear();
1180
+ this._dirtyFiles.clear();
1107
1181
  &nbsp;
1108
- // Snapshot and clear dirty sets so that changes arriving during
1109
- // the async sync are not dropped when we finish.
1110
- const deletions = new Set(this._pendingDeletions);
1111
- const dirty = new Set(this._dirtyFiles);
1112
- this._pendingDeletions.clear();
1113
- this._dirtyFiles.clear();
1182
+ for (const path of deletions) {
1183
+ const query = new URLSearchParams();
1184
+ query.set('path', path);
1185
+ if (this._namespace) {
1186
+ query.set('namespace', this._namespace);
1187
+ }
1114
1188
  &nbsp;
1115
- for (const path of deletions) {
1116
- const query = new URLSearchParams();
1117
- query.set('path', path);
1118
- if (this._namespace) {
1119
- query.set('namespace', this._namespace);
1189
+ const deleteResult = await this._requestWithRetry&lt;{ deleted: boolean }&gt;(`/file?${query.toString()}`, {
1190
+ method: 'DELETE'
1191
+ });
1192
+ if (deleteResult.isFailure()) {
1193
+ this._restoreUnsynced(deletions, dirty);
1194
+ return fail(`delete ${path}: ${deleteResult.message}`);
1195
+ }
1120
1196
  }
1121
1197
  &nbsp;
1122
- const deleteResult = await this._requestWithRetry&lt;{ deleted: boolean }&gt;(`/file?${query.toString()}`, {
1123
- method: 'DELETE'
1124
- });
1125
- if (deleteResult.isFailure()) {
1126
- return fail(`delete ${path}: ${deleteResult.message}`);
1127
- }
1128
- }
1198
+ for (const path of dirty) {
1199
+ const contentsResult = this.getFileContents(path);
1200
+ if (contentsResult.isFailure()) {
1201
+ this._restoreUnsynced(deletions, dirty);
1202
+ return fail(`${path}: ${contentsResult.message}`);
1203
+ }
1129
1204
  &nbsp;
1130
- for (const path of dirty) {
1131
- const contentsResult = this.getFileContents(path);
1132
- if (contentsResult.isFailure()) {
1133
- return fail(`${path}: ${contentsResult.message}`);
1205
+ const body: Record&lt;string, unknown&gt; = {
1206
+ path,
1207
+ contents: contentsResult.value
1208
+ };
1209
+ if (this._namespace) {
1210
+ body.namespace = this._namespace;
1211
+ }
1212
+ &nbsp;
1213
+ const saveResult = await this._requestWithRetry&lt;IHttpStorageFileResponse&gt;('/file', {
1214
+ method: 'PUT',
1215
+ body: JSON.stringify(body)
1216
+ });
1217
+ if (saveResult.isFailure()) {
1218
+ this._restoreUnsynced(deletions, dirty);
1219
+ return fail(`sync ${path}: ${saveResult.message}`);
1220
+ }
1134
1221
  }
1222
+ }
1135
1223
  &nbsp;
1136
- const body: Record&lt;string, unknown&gt; = {
1137
- path,
1138
- contents: contentsResult.value
1139
- };
1224
+ if (didWork) {
1225
+ const syncBody: Record&lt;string, unknown&gt; = {};
1140
1226
  if (this._namespace) {
1141
- body.namespace = this._namespace;
1227
+ syncBody.namespace = this._namespace;
1142
1228
  }
1143
1229
  &nbsp;
1144
- const saveResult = await this._requestWithRetry&lt;IHttpStorageFileResponse&gt;('/file', {
1145
- method: 'PUT',
1146
- body: JSON.stringify(body)
1230
+ const syncResult = await this._requestWithRetry&lt;IHttpStorageSyncResponse&gt;('/sync', {
1231
+ method: 'POST',
1232
+ body: JSON.stringify(syncBody)
1147
1233
  });
1148
- if (saveResult.isFailure()) {
1149
- return fail(`sync ${path}: ${saveResult.message}`);
1234
+ &nbsp;
1235
+ if (syncResult.isFailure()) {
1236
+ return fail(syncResult.message);
1150
1237
  }
1151
1238
  }
1239
+ return succeed(undefined);
1240
+ }
1152
1241
  &nbsp;
1153
- const syncBody: Record&lt;string, unknown&gt; = {};
1154
- if (this._namespace) {
1155
- syncBody.namespace = this._namespace;
1242
+ /**
1243
+ * Restores snapshotted items back into the live dirty sets so they
1244
+ * are retried on the next sync attempt. Items that were added to
1245
+ * the live sets while the sync was in flight are preserved.
1246
+ */
1247
+ private _restoreUnsynced(deletions: Set&lt;string&gt;, dirty: Set&lt;string&gt;): void {
1248
+ for (const path of deletions) {
1249
+ this._pendingDeletions.add(path);
1250
+ }
1251
+ for (const path of dirty) {
1252
+ this._dirtyFiles.add(path);
1156
1253
  }
1157
- &nbsp;
1158
- const syncResult = await this._requestWithRetry&lt;IHttpStorageSyncResponse&gt;('/sync', {
1159
- method: 'POST',
1160
- body: JSON.stringify(syncBody)
1161
- });
1162
- &nbsp;
1163
- return syncResult.isFailure() ? fail(syncResult.message) : succeed(undefined);
1164
1254
  }
1165
1255
  &nbsp;
1166
1256
  /**
@@ -1414,7 +1504,7 @@ export class HttpTreeAccessors&lt;TCT extends string = string&gt;
1414
1504
  <div class='footer quiet pad2 space-top1 center small'>
1415
1505
  Code coverage generated by
1416
1506
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1417
- at 2026-03-26T21:27:39.543Z
1507
+ at 2026-03-26T23:17:06.723Z
1418
1508
  </div>
1419
1509
  <script src="../prettify.js"></script>
1420
1510
  <script>