@rushstack/rush-http-build-cache-plugin 5.97.1 → 5.98.0

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/.heft/build-cache/jest-cache/haste-map-bae913f9b9aa720eb4deeae0a60a4b27-22ae7f4ce9de4306889d8c05e5cc39b9-f6b1af01a3130057bdfe3d86807211f9 +0 -0
  2. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{9d/commons_9d513d1d600f9112f73547da918dcbb7 → 2e/commons_2e52897dfe4222d991674613f5b35882} +356 -314
  3. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/34/PrefixProxyTerminalProvider_34b4603b9c4455de1c3cc05820149fdd +65 -0
  4. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{53/index_53d9d5a344c3984994c801733764f503 → 46/index_46761981528d09d1a0e438f06cd2c548} +6 -2
  5. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{06/ConfigurationFile_06d7f35feb0bd944d9b9a2a4d9e112c8 → 57/ConfigurationFile_57c950e8ef4673e11bff94304a50823c} +10 -4
  6. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{68/rushlib_68c59fa059ba441c9c6883bcfed4a8d2 → 69/rushlib_695f6e29167e91482e2906a8d09b3a5a} +17 -6
  7. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/8a/HttpBuildCacheProvidertest_8a1598e1f1b42d6933964acfb7612893 +116 -0
  8. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/8a/HttpBuildCacheProvidertest_8a1598e1f1b42d6933964acfb7612893.map +1 -0
  9. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a3/RushHttpBuildCachePlugin_a3e8a9bb172ff361907e770dcf3268be +1551 -0
  10. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a3/RushHttpBuildCachePlugin_a3e8a9bb172ff361907e770dcf3268be.map +1 -0
  11. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ba/TerminalWritable_ba71b4b7bfe6a26c85f4fd0245057a0a +54 -0
  12. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{5d/Text_5da85b5db9a2f06bbe29cdcd91e6fbca → df/Text_df57ddd200e4237e617fc183dcb5fe67} +7 -1
  13. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ec/HttpBuildCacheProvider_ecceab34e8340fa24dde11b618ffa8a4 +4668 -0
  14. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ec/HttpBuildCacheProvider_ecceab34e8340fa24dde11b618ffa8a4.map +1 -0
  15. package/.heft/build-cache/jest-cache/perf-cache-bae913f9b9aa720eb4deeae0a60a4b27-da39a3ee5e6b4b0d3255bfef95601890 +1 -1
  16. package/.rush/temp/operation/_phase_build/state.json +1 -1
  17. package/.rush/temp/operation/_phase_test/all.log +14 -14
  18. package/.rush/temp/operation/_phase_test/state.json +1 -1
  19. package/.rush/temp/package-deps__phase_build.json +3 -3
  20. package/.rush/temp/package-deps__phase_test.json +3 -3
  21. package/.rush/temp/{rushstack+rush-http-build-cache-plugin-_phase_build-646439b80a2010050f5b4b8a916e50afae04c3ab.log → rushstack+rush-http-build-cache-plugin-_phase_build-08118e08afc6d454e5623f20498fd64b5e3e9051.log} +2 -2
  22. package/lib/HttpBuildCacheProvider.d.ts +2 -0
  23. package/lib/HttpBuildCacheProvider.d.ts.map +1 -1
  24. package/lib/HttpBuildCacheProvider.js +26 -7
  25. package/lib/HttpBuildCacheProvider.js.map +1 -1
  26. package/lib/RushHttpBuildCachePlugin.d.ts.map +1 -1
  27. package/lib/RushHttpBuildCachePlugin.js +28 -4
  28. package/lib/RushHttpBuildCachePlugin.js.map +1 -1
  29. package/lib/test/HttpBuildCacheProvider.test.d.ts.map +1 -0
  30. package/lib/{HttpBuildCacheProvider.test.js → test/HttpBuildCacheProvider.test.js} +46 -3
  31. package/lib/test/HttpBuildCacheProvider.test.js.map +1 -0
  32. package/package.json +6 -6
  33. package/rush-logs/rush-http-build-cache-plugin._phase_test.log +14 -14
  34. package/src/HttpBuildCacheProvider.ts +36 -7
  35. package/src/RushHttpBuildCachePlugin.ts +23 -28
  36. package/src/test/HttpBuildCacheProvider.test.ts +115 -0
  37. package/temp/coverage/clover.xml +117 -109
  38. package/temp/coverage/coverage-final.json +2 -2
  39. package/temp/coverage/lcov-report/HttpBuildCacheProvider.ts.html +166 -79
  40. package/temp/coverage/lcov-report/RushHttpBuildCachePlugin.ts.html +29 -44
  41. package/temp/coverage/lcov-report/index.html +24 -24
  42. package/temp/coverage/lcov-report/index.ts.html +1 -1
  43. package/temp/coverage/lcov.info +236 -218
  44. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e5/HttpBuildCacheProvider_e53bd002cf44ae62693f20b8c4682941 +0 -4367
  45. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e5/HttpBuildCacheProvider_e53bd002cf44ae62693f20b8c4682941.map +0 -1
  46. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e6/RushHttpBuildCachePlugin_e69b4b7cd4f95aa49455690c88f00247 +0 -362
  47. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e6/RushHttpBuildCachePlugin_e69b4b7cd4f95aa49455690c88f00247.map +0 -1
  48. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f7/HttpBuildCacheProvidertest_f710af633835df558cad54cb165c14fa +0 -73
  49. package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f7/HttpBuildCacheProvidertest_f710af633835df558cad54cb165c14fa.map +0 -1
  50. package/lib/HttpBuildCacheProvider.test.d.ts.map +0 -1
  51. package/lib/HttpBuildCacheProvider.test.js.map +0 -1
  52. package/src/HttpBuildCacheProvider.test.ts +0 -58
  53. /package/lib/{HttpBuildCacheProvider.test.d.ts → test/HttpBuildCacheProvider.test.d.ts} +0 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">47.45% </span>
26
+ <span class="strong">58.26% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>56/118</span>
28
+ <span class='fraction'>74/127</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">39.02% </span>
33
+ <span class="strong">45.55% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>32/82</span>
35
+ <span class='fraction'>41/90</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">50% </span>
40
+ <span class="strong">61.11% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>9/18</span>
42
+ <span class='fraction'>11/18</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">47.45% </span>
47
+ <span class="strong">58.26% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>56/118</span>
49
+ <span class='fraction'>74/127</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -458,7 +458,36 @@
458
458
  <a name='L393'></a><a href='#L393'>393</a>
459
459
  <a name='L394'></a><a href='#L394'>394</a>
460
460
  <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
462
491
  <span class="cline-any cline-yes">1x</span>
463
492
  <span class="cline-any cline-neutral">&nbsp;</span>
464
493
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -501,6 +530,10 @@
501
530
  <span class="cline-any cline-neutral">&nbsp;</span>
502
531
  <span class="cline-any cline-neutral">&nbsp;</span>
503
532
  <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-yes">1x</span>
535
+ <span class="cline-any cline-yes">1x</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
537
  <span class="cline-any cline-yes">1x</span>
505
538
  <span class="cline-any cline-neutral">&nbsp;</span>
506
539
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -515,29 +548,31 @@
515
548
  <span class="cline-any cline-neutral">&nbsp;</span>
516
549
  <span class="cline-any cline-neutral">&nbsp;</span>
517
550
  <span class="cline-any cline-neutral">&nbsp;</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
552
  <span class="cline-any cline-no">&nbsp;</span>
519
553
  <span class="cline-any cline-neutral">&nbsp;</span>
520
554
  <span class="cline-any cline-neutral">&nbsp;</span>
521
555
  <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-yes">1x</span>
523
- <span class="cline-any cline-yes">1x</span>
524
- <span class="cline-any cline-yes">1x</span>
556
+ <span class="cline-any cline-yes">2x</span>
557
+ <span class="cline-any cline-yes">2x</span>
558
+ <span class="cline-any cline-yes">2x</span>
525
559
  <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-yes">1x</span>
527
- <span class="cline-any cline-yes">1x</span>
528
- <span class="cline-any cline-yes">1x</span>
529
- <span class="cline-any cline-yes">1x</span>
530
- <span class="cline-any cline-yes">1x</span>
531
- <span class="cline-any cline-yes">1x</span>
532
- <span class="cline-any cline-yes">1x</span>
560
+ <span class="cline-any cline-yes">2x</span>
561
+ <span class="cline-any cline-yes">2x</span>
562
+ <span class="cline-any cline-yes">2x</span>
563
+ <span class="cline-any cline-yes">2x</span>
564
+ <span class="cline-any cline-yes">2x</span>
565
+ <span class="cline-any cline-yes">2x</span>
566
+ <span class="cline-any cline-yes">2x</span>
567
+ <span class="cline-any cline-yes">2x</span>
533
568
  <span class="cline-any cline-neutral">&nbsp;</span>
534
569
  <span class="cline-any cline-neutral">&nbsp;</span>
535
570
  <span class="cline-any cline-neutral">&nbsp;</span>
536
571
  <span class="cline-any cline-neutral">&nbsp;</span>
537
572
  <span class="cline-any cline-neutral">&nbsp;</span>
538
573
  <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-yes">1x</span>
540
- <span class="cline-any cline-yes">1x</span>
574
+ <span class="cline-any cline-yes">2x</span>
575
+ <span class="cline-any cline-yes">2x</span>
541
576
  <span class="cline-any cline-neutral">&nbsp;</span>
542
577
  <span class="cline-any cline-neutral">&nbsp;</span>
543
578
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -546,7 +581,8 @@
546
581
  <span class="cline-any cline-neutral">&nbsp;</span>
547
582
  <span class="cline-any cline-neutral">&nbsp;</span>
548
583
  <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-no">&nbsp;</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</span>
585
+ <span class="cline-any cline-yes">1x</span>
550
586
  <span class="cline-any cline-neutral">&nbsp;</span>
551
587
  <span class="cline-any cline-yes">1x</span>
552
588
  <span class="cline-any cline-yes">1x</span>
@@ -575,6 +611,7 @@
575
611
  <span class="cline-any cline-neutral">&nbsp;</span>
576
612
  <span class="cline-any cline-neutral">&nbsp;</span>
577
613
  <span class="cline-any cline-neutral">&nbsp;</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</span>
578
615
  <span class="cline-any cline-no">&nbsp;</span>
579
616
  <span class="cline-any cline-neutral">&nbsp;</span>
580
617
  <span class="cline-any cline-no">&nbsp;</span>
@@ -637,17 +674,17 @@
637
674
  <span class="cline-any cline-neutral">&nbsp;</span>
638
675
  <span class="cline-any cline-neutral">&nbsp;</span>
639
676
  <span class="cline-any cline-neutral">&nbsp;</span>
677
+ <span class="cline-any cline-yes">5x</span>
640
678
  <span class="cline-any cline-yes">2x</span>
641
- <span class="cline-any cline-yes">1x</span>
642
679
  <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-yes">1x</span>
680
+ <span class="cline-any cline-yes">2x</span>
644
681
  <span class="cline-any cline-no">&nbsp;</span>
645
682
  <span class="cline-any cline-neutral">&nbsp;</span>
646
683
  <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-yes">1x</span>
684
+ <span class="cline-any cline-yes">2x</span>
648
685
  <span class="cline-any cline-neutral">&nbsp;</span>
649
686
  <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-yes">2x</span>
687
+ <span class="cline-any cline-yes">5x</span>
651
688
  <span class="cline-any cline-neutral">&nbsp;</span>
652
689
  <span class="cline-any cline-neutral">&nbsp;</span>
653
690
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -659,43 +696,64 @@
659
696
  <span class="cline-any cline-neutral">&nbsp;</span>
660
697
  <span class="cline-any cline-neutral">&nbsp;</span>
661
698
  <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-yes">2x</span>
663
- <span class="cline-any cline-yes">2x</span>
664
- <span class="cline-any cline-yes">2x</span>
665
- <span class="cline-any cline-yes">1x</span>
666
699
  <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-yes">1x</span>
668
- <span class="cline-any cline-yes">1x</span>
700
+ <span class="cline-any cline-yes">5x</span>
701
+ <span class="cline-any cline-yes">5x</span>
702
+ <span class="cline-any cline-yes">5x</span>
703
+ <span class="cline-any cline-yes">4x</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-yes">4x</span>
706
+ <span class="cline-any cline-yes">4x</span>
669
707
  <span class="cline-any cline-no">&nbsp;</span>
670
708
  <span class="cline-any cline-neutral">&nbsp;</span>
671
709
  <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-yes">1x</span>
710
+ <span class="cline-any cline-yes">4x</span>
673
711
  <span class="cline-any cline-no">&nbsp;</span>
674
712
  <span class="cline-any cline-no">&nbsp;</span>
675
713
  <span class="cline-any cline-neutral">&nbsp;</span>
676
714
  <span class="cline-any cline-neutral">&nbsp;</span>
677
715
  <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-yes">1x</span>
716
+ <span class="cline-any cline-yes">4x</span>
679
717
  <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-yes">1x</span>
718
+ <span class="cline-any cline-yes">4x</span>
681
719
  <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-yes">1x</span>
720
+ <span class="cline-any cline-yes">4x</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-yes">4x</span>
728
+ <span class="cline-any cline-yes">4x</span>
729
+ <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-yes">4x</span>
683
731
  <span class="cline-any cline-neutral">&nbsp;</span>
684
732
  <span class="cline-any cline-neutral">&nbsp;</span>
685
733
  <span class="cline-any cline-neutral">&nbsp;</span>
686
734
  <span class="cline-any cline-neutral">&nbsp;</span>
687
735
  <span class="cline-any cline-neutral">&nbsp;</span>
688
736
  <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-yes">1x</span>
690
- <span class="cline-any cline-yes">1x</span>
691
737
  <span class="cline-any cline-neutral">&nbsp;</span>
692
738
  <span class="cline-any cline-neutral">&nbsp;</span>
693
739
  <span class="cline-any cline-neutral">&nbsp;</span>
694
740
  <span class="cline-any cline-yes">1x</span>
695
741
  <span class="cline-any cline-neutral">&nbsp;</span>
696
742
  <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-no">&nbsp;</span>
698
- <span class="cline-any cline-no">&nbsp;</span>
743
+ <span class="cline-any cline-yes">3x</span>
744
+ <span class="cline-any cline-neutral">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-yes">2x</span>
748
+ <span class="cline-any cline-yes">2x</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-yes">2x</span>
751
+ <span class="cline-any cline-neutral">&nbsp;</span>
752
+ <span class="cline-any cline-yes">2x</span>
753
+ <span class="cline-any cline-neutral">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-yes">1x</span>
756
+ <span class="cline-any cline-yes">1x</span>
699
757
  <span class="cline-any cline-neutral">&nbsp;</span>
700
758
  <span class="cline-any cline-neutral">&nbsp;</span>
701
759
  <span class="cline-any cline-no">&nbsp;</span>
@@ -714,17 +772,17 @@
714
772
  <span class="cline-any cline-neutral">&nbsp;</span>
715
773
  <span class="cline-any cline-neutral">&nbsp;</span>
716
774
  <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-yes">2x</span>
775
+ <span class="cline-any cline-yes">5x</span>
718
776
  <span class="cline-any cline-no">&nbsp;</span>
719
777
  <span class="cline-any cline-neutral">&nbsp;</span>
720
778
  <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-yes">2x</span>
779
+ <span class="cline-any cline-yes">5x</span>
722
780
  <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-yes">2x</span>
724
- <span class="cline-any cline-yes">2x</span>
781
+ <span class="cline-any cline-yes">5x</span>
782
+ <span class="cline-any cline-yes">5x</span>
725
783
  <span class="cline-any cline-neutral">&nbsp;</span>
726
784
  <span class="cline-any cline-neutral">&nbsp;</span>
727
- <span class="cline-any cline-yes">2x</span>
785
+ <span class="cline-any cline-yes">5x</span>
728
786
  <span class="cline-any cline-yes">1x</span>
729
787
  <span class="cline-any cline-neutral">&nbsp;</span>
730
788
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -738,22 +796,22 @@
738
796
  <span class="cline-any cline-neutral">&nbsp;</span>
739
797
  <span class="cline-any cline-neutral">&nbsp;</span>
740
798
  <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-yes">1x</span>
799
+ <span class="cline-any cline-yes">4x</span>
742
800
  <span class="cline-any cline-neutral">&nbsp;</span>
743
801
  <span class="cline-any cline-neutral">&nbsp;</span>
744
802
  <span class="cline-any cline-neutral">&nbsp;</span>
745
803
  <span class="cline-any cline-neutral">&nbsp;</span>
746
804
  <span class="cline-any cline-neutral">&nbsp;</span>
747
- <span class="cline-any cline-yes">2x</span>
805
+ <span class="cline-any cline-yes">5x</span>
748
806
  <span class="cline-any cline-neutral">&nbsp;</span>
749
807
  <span class="cline-any cline-neutral">&nbsp;</span>
750
808
  <span class="cline-any cline-neutral">&nbsp;</span>
751
809
  <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-yes">2x</span>
810
+ <span class="cline-any cline-yes">5x</span>
753
811
  <span class="cline-any cline-neutral">&nbsp;</span>
754
812
  <span class="cline-any cline-neutral">&nbsp;</span>
755
813
  <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-yes">2x</span>
814
+ <span class="cline-any cline-yes">5x</span>
757
815
  <span class="cline-any cline-no">&nbsp;</span>
758
816
  <span class="cline-any cline-no">&nbsp;</span>
759
817
  <span class="cline-any cline-no">&nbsp;</span>
@@ -762,11 +820,11 @@
762
820
  <span class="cline-any cline-neutral">&nbsp;</span>
763
821
  <span class="cline-any cline-neutral">&nbsp;</span>
764
822
  <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-no">&nbsp;</span>
823
+ <span class="cline-any cline-yes">1x</span>
766
824
  <span class="cline-any cline-no">&nbsp;</span>
767
825
  <span class="cline-any cline-neutral">&nbsp;</span>
768
826
  <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-no">&nbsp;</span>
827
+ <span class="cline-any cline-yes">1x</span>
770
828
  <span class="cline-any cline-neutral">&nbsp;</span>
771
829
  <span class="cline-any cline-neutral">&nbsp;</span>
772
830
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -805,7 +863,7 @@
805
863
  <span class="cline-any cline-neutral">&nbsp;</span>
806
864
  <span class="cline-any cline-neutral">&nbsp;</span>
807
865
  <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-no">&nbsp;</span>
866
+ <span class="cline-any cline-yes">1x</span>
809
867
  <span class="cline-any cline-neutral">&nbsp;</span>
810
868
  <span class="cline-any cline-neutral">&nbsp;</span>
811
869
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -815,15 +873,15 @@
815
873
  <span class="cline-any cline-neutral">&nbsp;</span>
816
874
  <span class="cline-any cline-neutral">&nbsp;</span>
817
875
  <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-no">&nbsp;</span>
876
+ <span class="cline-any cline-yes">1x</span>
819
877
  <span class="cline-any cline-neutral">&nbsp;</span>
820
878
  <span class="cline-any cline-no">&nbsp;</span>
821
879
  <span class="cline-any cline-no">&nbsp;</span>
822
880
  <span class="cline-any cline-neutral">&nbsp;</span>
823
881
  <span class="cline-any cline-neutral">&nbsp;</span>
824
882
  <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-no">&nbsp;</span>
826
- <span class="cline-any cline-no">&nbsp;</span>
883
+ <span class="cline-any cline-yes">1x</span>
884
+ <span class="cline-any cline-yes">1x</span>
827
885
  <span class="cline-any cline-neutral">&nbsp;</span>
828
886
  <span class="cline-any cline-neutral">&nbsp;</span>
829
887
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -853,7 +911,7 @@
853
911
  <span class="cline-any cline-neutral">&nbsp;</span>
854
912
  <span class="cline-any cline-neutral">&nbsp;</span>
855
913
  <span class="cline-any cline-neutral">&nbsp;</span>
856
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { ITerminal, Executable } from '@rushstack/node-core-library';
914
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { ITerminal, Executable, Async } from '@rushstack/node-core-library';
857
915
  import {
858
916
  ICloudBuildCacheProvider,
859
917
  ICredentialCacheEntry,
@@ -889,6 +947,7 @@ export interface IHttpBuildCacheProviderOptions {
889
947
  url: string;
890
948
  tokenHandler?: IHttpBuildCacheTokenHandler;
891
949
  uploadMethod?: string;
950
+ minHttpRetryDelayMs?: number;
892
951
  headers?: Record&lt;string, string&gt;;
893
952
  cacheKeyPrefix?: string;
894
953
  isCacheWriteAllowed: boolean;
@@ -896,6 +955,9 @@ export interface IHttpBuildCacheProviderOptions {
896
955
  rushProjectRoot: string;
897
956
  }
898
957
  &nbsp;
958
+ const MAX_HTTP_CACHE_ATTEMPTS: number = 3;
959
+ const DEFAULT_MIN_HTTP_RETRY_DELAY_MS = 2500;
960
+ &nbsp;
899
961
  export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
900
962
  private readonly _pluginName: string;
901
963
  private readonly _rushSession: RushSession;
@@ -907,6 +969,7 @@ export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
907
969
  private readonly _headers: Record&lt;string, string&gt;;
908
970
  private readonly _cacheKeyPrefix: string;
909
971
  private readonly _tokenHandler: IHttpBuildCacheTokenHandler | undefined;
972
+ private readonly _minHttpRetryDelayMs: number;
910
973
  private __credentialCacheId: string | undefined;
911
974
  &nbsp;
912
975
  <span class="fstat-no" title="function not covered" > public get i</span>sCacheWriteAllowed(): boolean {
@@ -925,6 +988,7 @@ export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
925
988
  this._headers = options.headers<span class="branch-0 cbranch-no" title="branch not covered" > ?? {</span>};
926
989
  this._tokenHandler = options.tokenHandler;
927
990
  this._cacheKeyPrefix = options.cacheKeyPrefix<span class="branch-0 cbranch-no" title="branch not covered" > ?? '</span>';
991
+ this._minHttpRetryDelayMs = options.minHttpRetryDelayMs ?? <span class="branch-1 cbranch-no" title="branch not covered" >DEFAULT_MIN_HTTP_RETRY_DELAY_MS;</span>
928
992
  }
929
993
  &nbsp;
930
994
  public async tryGetCacheEntryBufferByIdAsync(
@@ -938,10 +1002,11 @@ export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
938
1002
  method: 'GET',
939
1003
  body: undefined,
940
1004
  warningText: 'Could not get cache entry',
941
- readBody: true
1005
+ readBody: true,
1006
+ maxAttempts: MAX_HTTP_CACHE_ATTEMPTS
942
1007
  });
943
1008
  &nbsp;
944
- <span class="cstat-no" title="statement not covered" > return Buffer.isBuffer(result) ? result : undefined;</span>
1009
+ return Buffer.isBuffer(result) ? <span class="branch-0 cbranch-no" title="branch not covered" >result </span>: undefined;
945
1010
  } catch (e) {
946
1011
  terminal.writeWarningLine(`Error getting cache entry: ${e}`);
947
1012
  return undefined;
@@ -967,7 +1032,8 @@ export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
967
1032
  method: this._uploadMethod,
968
1033
  body: objectBuffer,
969
1034
  warningText: 'Could not write cache entry',
970
- readBody: false
1035
+ readBody: false,
1036
+ maxAttempts: MAX_HTTP_CACHE_ATTEMPTS
971
1037
  });
972
1038
  &nbsp;
973
1039
  <span class="cstat-no" title="statement not covered" > return result !== false;</span>
@@ -1052,6 +1118,7 @@ export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
1052
1118
  body: BodyInit | undefined;
1053
1119
  warningText: string;
1054
1120
  readBody: boolean;
1121
+ maxAttempts: number;
1055
1122
  credentialOptions?: CredentialsOptions;
1056
1123
  }): Promise&lt;Buffer | boolean&gt; {
1057
1124
  const { terminal, relUrl, method, body, warningText, readBody, credentialOptions } = options;
@@ -1082,15 +1149,35 @@ export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
1082
1149
  });
1083
1150
  &nbsp;
1084
1151
  if (!response.ok) {
1085
- if (typeof credentials !== 'string' &amp;&amp; safeCredentialOptions === CredentialsOptions.Optional) {
1086
- // We tried fetching the resource without credentials and that did not work out
1087
- // Try again but require credentials this time
1088
- // This will trigger the provider to request credentials
1152
+ const isNonCredentialResponse = response.status &gt;= 500 &amp;&amp; response.status &lt; 600;
1153
+ &nbsp;
1154
+ if (
1155
+ !isNonCredentialResponse &amp;&amp;
1156
+ typeof credentials !== 'string' &amp;&amp;
1157
+ safeCredentialOptions === CredentialsOptions.Optional
1158
+ ) {
1159
+ // If we don't already have credentials yet, and we got a response from the server
1160
+ // that is a "normal" failure (4xx), then we assume that credentials are probably
1161
+ // required. Re-attempt the request, requiring credentials this time.
1162
+ //
1163
+ // This counts as part of the "first attempt", so it is not included in the max attempts
1089
1164
  return await this._http({ ...options, credentialOptions: CredentialsOptions.Required });
1090
1165
  }
1091
1166
  &nbsp;
1092
- <span class="cstat-no" title="statement not covered" > this._reportFailure(terminal, method, response, false, warningText);</span>
1093
- <span class="cstat-no" title="statement not covered" > return false;</span>
1167
+ if (options.maxAttempts &gt; 1) {
1168
+ // Pause a bit before retrying in case the server is busy
1169
+ // Add some random jitter to the retry so we can spread out load on the remote service
1170
+ // A proper solution might add exponential back off in case the retry count is high (10 or more)
1171
+ const factor = 1.0 + Math.random(); // A random number between 1.0 and 2.0
1172
+ const retryDelay = Math.floor(factor * this._minHttpRetryDelayMs);
1173
+ &nbsp;
1174
+ await Async.sleep(retryDelay);
1175
+ &nbsp;
1176
+ return await this._http({ ...options, maxAttempts: options.maxAttempts - 1 });
1177
+ }
1178
+ &nbsp;
1179
+ this._reportFailure(terminal, method, response, false, warningText);
1180
+ return false;
1094
1181
  }
1095
1182
  &nbsp;
1096
1183
  const result: Buffer | boolean = <span class="cstat-no" title="statement not covered" >readBody ? Buffer.from(await response.arrayBuffer()) : true;</span>
@@ -1156,12 +1243,12 @@ export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
1156
1243
  }
1157
1244
  }
1158
1245
  &nbsp;
1159
- private <span class="fstat-no" title="function not covered" >_getFailureType(</span>requestMethod: string, response: Response, isRedirect: boolean): FailureType {
1160
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (response.ok) {</span>
1246
+ private _getFailureType(requestMethod: string, response: Response, isRedirect: boolean): FailureType {
1247
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (response.ok) {
1161
1248
  <span class="cstat-no" title="statement not covered" > return FailureType.None;</span>
1162
1249
  }
1163
1250
  &nbsp;
1164
- <span class="cstat-no" title="statement not covered" > switch (response.status) {</span>
1251
+ switch (response.status) {
1165
1252
  case 503: {
1166
1253
  // We select 503 specifically because this represents "service unavailable" and
1167
1254
  // "rate limit throttle" errors, which are transient issues.
@@ -1200,38 +1287,38 @@ export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
1200
1287
  }
1201
1288
  &nbsp;
1202
1289
  // Let dev builds succeed, let Prod builds fail
1203
- <span class="cstat-no" title="statement not covered" > return FailureType.Warning;</span>
1290
+ return FailureType.Warning;
1204
1291
  }
1205
1292
  &nbsp;
1206
- private <span class="fstat-no" title="function not covered" >_reportFailure(</span>
1293
+ private _reportFailure(
1207
1294
  terminal: ITerminal,
1208
1295
  requestMethod: string,
1209
1296
  response: Response,
1210
1297
  isRedirect: boolean,
1211
1298
  message: string
1212
1299
  ): void {
1213
- <span class="cstat-no" title="statement not covered" > switch (this._getFailureType(requestMethod, response, isRedirect)) {</span>
1214
- default: {
1300
+ switch (this._getFailureType(requestMethod, response, isRedirect)) {
1301
+ <span class="branch-0 cbranch-no" title="branch not covered" > default: {</span>
1215
1302
  <span class="cstat-no" title="statement not covered" > terminal.writeErrorLine(`${message}: HTTP ${response.status}: ${response.statusText}`);</span>
1216
1303
  <span class="cstat-no" title="statement not covered" > break;</span>
1217
1304
  }
1218
1305
  &nbsp;
1219
1306
  case FailureType.Warning: {
1220
- <span class="cstat-no" title="statement not covered" > terminal.writeWarningLine(`${message}: HTTP ${response.status}: ${response.statusText}`);</span>
1221
- <span class="cstat-no" title="statement not covered" > break;</span>
1307
+ terminal.writeWarningLine(`${message}: HTTP ${response.status}: ${response.statusText}`);
1308
+ break;
1222
1309
  }
1223
1310
  &nbsp;
1224
- case FailureType.Informational: {
1311
+ <span class="branch-2 cbranch-no" title="branch not covered" > case FailureType.Informational: {</span>
1225
1312
  <span class="cstat-no" title="statement not covered" > terminal.writeLine(`${message}: HTTP ${response.status}: ${response.statusText}`);</span>
1226
1313
  <span class="cstat-no" title="statement not covered" > break;</span>
1227
1314
  }
1228
1315
  &nbsp;
1229
- case FailureType.None: {
1316
+ <span class="branch-3 cbranch-no" title="branch not covered" > case FailureType.None: {</span>
1230
1317
  <span class="cstat-no" title="statement not covered" > terminal.writeDebugLine(`${message}: HTTP ${response.status}: ${response.statusText}`);</span>
1231
1318
  <span class="cstat-no" title="statement not covered" > break;</span>
1232
1319
  }
1233
1320
  &nbsp;
1234
- case FailureType.Authentication: {
1321
+ <span class="branch-4 cbranch-no" title="branch not covered" > case FailureType.Authentication: {</span>
1235
1322
  <span class="cstat-no" title="statement not covered" > throw new Error(</span>
1236
1323
  [
1237
1324
  `${this._url.href} responded with ${response.status}: ${response.statusText}.`,
@@ -1255,7 +1342,7 @@ export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
1255
1342
  <div class='footer quiet pad2 space-top1 center small'>
1256
1343
  Code coverage generated by
1257
1344
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1258
- at 2023-04-27T17:14:25.422Z
1345
+ at 2023-05-21T00:14:25.509Z
1259
1346
  </div>
1260
1347
  <script src="prettify.js"></script>
1261
1348
  <script>