@rushstack/rush-http-build-cache-plugin 5.92.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.
- package/.heft/build-cache/heft-jest-data.json +7 -0
- package/.heft/build-cache/jest-cache/haste-map-bae913f9b9aa720eb4deeae0a60a4b27-22ae7f4ce9de4306889d8c05e5cc39b9-f6b1af01a3130057bdfe3d86807211f9 +0 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/00/CommandLineParser_0096ef3e73a0458d2c4e987ce6950ec8 +217 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/00/jsonfile_001c9f2c4a38c3ac08d195a597f3f40c +13 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/01/action_container_0168facd9c19526b921c2a176ff5e3dd +483 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/02/getPackageDeps_02bf27e4c49bd0d60a0d2a807f58ad64 +256 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/03/CommandLineChoiceListParameter_039f877c10997d8689457a3cc6126b9f +85 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/04/Hook_044e3585bd11395575af5f860b3449ca +176 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/05/StdioWritable_0514ac0d19d8447acf4fc997d4eb75c2 +34 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/06/ConfigurationFile_06d7f35feb0bd944d9b9a2a4d9e112c8 +532 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/07/FileError_07e325c2d038b4cc56e1dfe3830d6c3e +114 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/07/ltr_0715ee1731dbedafe7e26cfb1315c8db +5 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/08/homedir_086be402c636b5ef75b92acd986cbbcf +25 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/08/outputjsonsync_08a1ad9a9786d59f137a5ea6e1547f10 +19 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/09/Path_0996303466a12a84e221f1ca7e815489 +215 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/0b/constant_0bebc93b25bd88f8e9694b48db821b00 +48 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/0b/index_0b2321eff214a8a8c920ed4d283d606f +26 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/0c/gracefulfs_0c1a237496d918be613bce417baa89f2 +449 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/0d/indexumd_0dd8b4985260e5d98d86cd77c5feca27 +1073 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/0e/index_0e154b4f09da1ddc6c89567be99e1184 +12 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/0f/StringBuilder_0f79d7bd9ef44b22de47594852bebf54 +42 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/0f/index_0f086ad263aa8ec1c88455f1c863d9c3 +13 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/10/CommandLineChoiceParameter_10f873b895c0c8bbfff1b3ca3be44551 +96 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/11/PackageName_11306194785ccb2ba264a8e77c4109de +214 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/12/runTest_12014d70f30cb7039d4e026bacc47665 +463 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/14/index_14189dd0bf5b37d264e85be625b19df0 +118 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/15/lt_15449967a28afb6ec5dbb008da254f3e +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/19/copysync_196045f8ccef3c2f2f82113b3d6322ea +194 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/19/intersects_1920dd31d7a2b696c913c6105b7aea5a +8 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/1a/index_1a09c4b40e031dcc3464bf0de8642956 +190 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/1a/tocomparators_1a8990095d92cfa18e5a3c7547951f9b +9 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/1b/index_1b7c45ee5c2dbabcedc41ab6b1e02377 +220 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/1c/CollatedWriter_1c603fd6e169333da45c34e3c6aba4f3 +52 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/1d/ScopedCommandLineAction_1d44a994459da880ecd53a33e4e612aa +179 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/1d/index_1d071d1d9c16561dc536eb16f991e9d1 +83 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/1d/index_1dcfbe32546c5f673f2b614530fce0ef +78 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/1f/safe_1fecf14f4050ef9c0f88c3c1e2dd85a8 +11 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/20/CollatedTerminal_204a6de6c99e4c915d6221e230a0fa4e +27 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/21/index_210551fcae12c5b3d27a6b0775228781 +215 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/22/coerce_224b5791f8f7b7cee6fac3237e26755b +53 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/22/core_2267298cab4959e0bc6a302739275617 +53 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/22/index_226f648122f5302b23da56fe470c16ac +34 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/22/supportscolors_2218a76b76fd61532d614e1b0bb928fd +152 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/22/urlstatemachine_2208634a5a2ffd9728d9dafaf9451e2d +1298 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/23/AlreadyReportedError_23dbb838b51752afa3d8495f3062de58 +55 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/23/minsatisfying_231e7868208d4f1c9e82cecdce4c81ef +25 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/24/error_245d118d6aaef020e6c9b74d975e24d7 +51 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/26/Enum_26f7c648b8042f36def6f28b90b3995f +137 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/26/index_269839caa72382caf6110fdff62b8b0f +89 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/26/symlinkpaths_269231f2a465387e8122e02bc23a585b +100 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/27/AsyncParallelBailHook_277e441e1512e36622369a45ebd3f58b +86 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/27/index_272b3290b49eb1250dd5383c4066d1d6 +44 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/27/index_27f9c09249b0c27a2bfad978196e060d +194 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/28/subparsers_2863fbc004ea15cbe9570a59d7688f82 +150 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/2a/maxsatisfying_2a5f074207b66570ea099648b0cc07a2 +26 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/2a/win32_2aa3d38608b9c19fb22bc6e49e6c17d8 +26 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/2c/AsyncSeriesHook_2cb49a136f5dc18080ce2e75c6c685e7 +38 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/2c/core_2cedf8a7e3f663d3d09ca6789bdf0c46 +156 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/2d/normalizeoptions_2ddefac3c548a6a9d8c0eb3182ae2480 +11 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/2e/ConsoleTerminalProvider_2e66ae3538bbf6aaa5dcd74944fc205c +72 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/2f/DynamicCommandLineParser_2f63330ac83fd134e7e7164fb7730fee +14 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/2f/comparebuild_2fa43366ea840981f043518d2912193b +8 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/2f/yallist_2f0386bace7319ff5589bde4ad419b70 +427 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/31/TypeUuid_31520f7b55e4db7a1c37ae8a15fa9da8 +88 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/31/help_314cbae995ff508d97fba2240a5c2289 +48 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/33/URL_33382dd2bd04cfe3a63ad984d9d1495c +197 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/34/SyncHook_3450bad6af5c4ae6f675e42c4f3c8961 +47 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/35/CommandLineHelper_35432de5b9e0472d8b4b0363144700a3 +23 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/35/index_351599b17438e340506c874eb4c4d916 +70 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/36/index_36c8f6d5633e9389ceab255fbf71ae18 +6 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/37/RemoveColorsTextRewriter_3774df1d77755492e62324174f09d9e9 +96 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/37/Sort_37dfd29dc09c27aacc04846107b87488 +213 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/37/index_37474d53f1aec6000961e1f22d1c83ad +24 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/37/semver_37eefd4df46c11fd6ff7bbfa601cb07a +288 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/38/index_3845abe725b203bc5c4e6a1238cb36c9 +20 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/39/MultiHook_39ae7d5e7f9fb6b6c2daef78c7830798 +55 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/39/index_39a7e36288e762fe97d6899aff7bb080 +7 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/39/index_39f2106e77a53f183393c1eb12dc0abd +6 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/3c/iscore_3cd337d75d2dc1446345a2444372d63e +6 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/3d/index_3df2d3d9ea8e302f11de5ec1fc1aeec9 +15 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/3e/JsonSchema_3e5211cb39cc2174977ac14cd08caab3 +219 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/3e/StringBufferTerminalProvider_3eb3f66416fcf71c742d0d05f1c8be24 +109 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/3e/re_3e3693784461f0e33578b04c0eab88d4 +183 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/3f/CommandLineParameterProvider_3fb6e4bc8707b78de508dcdc2aad0dab +490 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/40/LockFile_400fe1e4cf3ae073f4cddf66c85b768c +425 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/42/Import_42731f0220476b7d949a2d8f3a6f3333 +248 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/43/CommandLineFlagParameter_4381def97a72b0f60c84f30b1acf59e9 +73 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/45/index_457f942d32e2a1d8bf2bd93782c18416 +95 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/49/ITerminalChunk_49865ff4a7b2620ddc8eb70b153d46db +6 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/49/minor_499fd4858add324322b2d7aac97495be +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/49/valid_490a9a03ccbefe3df7830c88aa76fa9e +7 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/4a/caller_4a52763deee17c1eabd62004bb6722b3 +9 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/4b/HookMap_4ba23f7fef2983971a4eb0ef8e3e933a +62 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/4c/valid_4c0a764095911643682868db2648d277 +12 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/50/core_50b22e73455ca8518c847bae97611bda +154 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/51/publicapi_5191d008e2683b44e2ec1184bbe13750 +12 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/52/cmp_5283aa608b609dad4611e3faace2a4cf +53 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/52/index_52fb4a8a0bc7c5a7f9414063c7efee91 +41 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/53/AsyncSeriesLoopHook_53405b02ad03aabaa1d426caeffbcf46 +38 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/53/TextRewriter_53f9b6ac0214eb849c77a20f19ebf99f +40 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/53/utils_53dfb762f99e59335c970a62a9e510a2 +58 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/56/identifiers_5666c8fdebf8bea43ee0cb13c2c4fb99 +24 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/57/Terminal_578f895bcff5950330288b7fbb82e347 +298 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/57/mkdirssync_57a474552ec95c9b8e2261bbaaf33e4c +55 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/58/index_58c57a8f2a96bf6fdf5db35a2e44baa7 +84 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/58/link_588215e47725c14ad798d475bb0fea94 +62 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/5c/npa_5c7f076d9565dfd59727d5116cf9ccd7 +302 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/5d/CommandLineIntegerParameter_5d2f433e98ce71e716006ab8ac983248 +87 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/5d/InternalError_5dd9d2af36ccc351a963a526c009c8a5 +56 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/5d/Text_5da85b5db9a2f06bbe29cdcd91e6fbca +187 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/5d/mkdirs_5d126b371fc3eb56a986e5354ede8f8f +64 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/5d/rsort_5d475d23748e66c70f21cab766127fe8 +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/5e/index_5e83cfb096cb71c3c3b5071c51c76352 +29 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/5f/major_5f17be93c674dbdf30dc56dca1ceeb61 +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/60/iterator_605cedebcb174a610571f444f3e35cb9 +9 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/61/index_61b111e1602c823e36866ed58bfa5c02 +225 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/62/package_62ad16cf4b73e547a38b9be0e0826b2e +37 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/63/HookCodeFactory_635a639b45eb6a18260466654465472e +469 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/66/index_66cb1263a037358a57670e4b63da0f5f +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/68/subset_6895b03eef5d710fb02eb441db91f05f +245 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/6c/legacystreams_6cc4e01cffc5492fbda70264b3e436f4 +119 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/6f/index_6f9d4619de3942194b764b51b436253a +1698 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/71/CommandLineStringParameter_7110656822e0c0e75681161f079c932f +86 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/73/DynamicCommandLineAction_731ac0ca1ec60f3665f5fb69da39d5c1 +18 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/73/unicode_7398d3d7f883f4ab7cf11c5db8d4d728 +71 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/76/CommandLineStringListParameter_7673af10944fc3c86e1d8b67dfbfb9a3 +74 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/76/index_7612803919a5c9008d58ae6ccfd3ff5a +33 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/76/jestglobalsetup_7682e971203cc7639e25d90ff1117ed6 +14 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/77/satisfies_77c1039e1bfe840713edc2ae742f25c2 +11 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/78/CommandLineRemainder_78035c057f5ba7a67eebb8bf5eff0948 +49 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/78/StdioSummarizer_78cb92918c2050d0ed4a91e761363d03 +99 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/79/SyncLoopHook_7926719c84b5956272d204a1a14f5a05 +47 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/79/index_791cd131fb0e2b5672d97cfe1f3b7900 +49 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/79/index_7996c009dbfc6e03f020903b4e0ea736 +105 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/79/random_790a273dde9b34fd1f868a19c1a26f9e +13 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/7b/zalgo_7b856872eb76fb730e32acbf1500bc70 +111 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/7c/rcompare_7c2ed9bf4fade2c7f3d1f5d241964080 +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/7d/AsyncSeriesBailHook_7dcd8ad992fcc7c9e285a4be8c1f4638 +43 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/7d/FileSystem_7dfdf678d0cba7fd01a405bfc86432f7 +1100 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/80/compareloose_80136cfdc57ee904f7908e1485f4edb0 +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/80/index_8021860f6bdaf0355b9b55768096ad1f +17 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/81/index_81958cb0f4d5af47c9f4ff027730a354 +335 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/86/RigConfig_8614551e6fbc38bf3f0d0dd1d1150e2e +316 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/86/mappingTable_86f2dfc435ef89190b3f1803ce21e9c8 +2 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/87/clone_8741d656a737c57873a2cb137fc3c2a2 +24 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/87/version_870188990057b0e5b35d6d9bd63f0eb6 +48 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/89/true_89b39ea93e164e1bb913772edd7a31cb +27 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/8a/ProtectableMap_8a9fe29cb67257b4a7d9e2a2bdff47de +91 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/8a/SyncWaterfallHook_8a739b54c97de3d2f978d3f281705b85 +58 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/8c/FileWriter_8c34d45ee75dae06e4593e27ec9e6c99 +64 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/8c/colors_8c84db0002e69a4cfd1c0798f7f1c18a +200 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/8c/index_8ceede9e1085ff23f8671d696ecd7bdb +46 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/8e/append_8e1ed839104f64988fca6d92799f11c8 +54 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/91/EnvironmentMap_9164c9ef57fe102a2485664129f6d55c +107 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/93/trap_93535875cbcf5257946ec047bb05b68b +47 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/93/types_938cea5406dd0f56f3b17b463d571060 +29 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/94/clean_94837a6a564c76b60fbb8c8ab6c19dc1 +7 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/94/comparator_94f63ab47adc67ef3b7426d6b8c12210 +137 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/94/group_94a0b10687068ed655e30792779c33ed +76 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/95/utils_955a20e43e3ae489688d1c74a75d5a2b +21 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/96/AsyncSeriesWaterfallHook_9637cc190622117769cc984f4be38d67 +48 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/96/CallbackWritable_9611294010bb59334d77e19aca8ffe90 +32 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/96/copy_96b340b66c576bda43a9adc5ddd9d5e8 +247 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/97/rainbow_976c14df0174a4c5f52ee98e5c558120 +15 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/99/ITerminalProvider_9968ff70dd6950d66e51c15e5bd0e22b +33 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/99/LegacyAdapters_994d50a9d99bca598923c5d0a78658a9 +75 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/99/argument_parser_99c82f41bebafcf12dc985c074661de3 +1162 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/99/constants_993db3d18bc6186d69bd3869e6686734 +18 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/9a/index_9afc29e15688c6855cbfd3494af0f8e6 +45 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/9b/const_9b7421e189c528d99006e6fe10ec68d0 +22 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/9c/argparse_9c97ed9dfc279c7cfbd90530b5e22ca0 +15 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/9e/Colors_9ecc4a155788090d261edabf2719d1f8 +185 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/9e/MapExtensions_9e5b8afe723b86b4ee5b79a35287a9e0 +41 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/9e/symlinktype_9e28e4f4457ee603d982b6fb686f0ed3 +32 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/9f/EnvironmentVariableParser_9f0570850bed25007c419377e7c7340e +52 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a1/exclusive_a143a742fec2463ca3a09bb335d9db42 +55 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a1/implementation_a1723a009de8984b2f21159b10fc6520 +53 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a1/outside_a1760cf8e60702091d1e4d477923e3a6 +81 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a2/Executable_a27667ef327d1d227f03d7a0954c45a8 +429 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a4/file_a48a764ff3863fe34bfc4daa1ddaa746 +50 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a4/sync_a4bf19b74e558d2357595e14f82e75a0 +209 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a5/SyncBailHook_a52e9aaf0f808558574466e14a2f4c20 +52 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a6/hasflag_a64b2cc5845c94a8a4ff212a6480c528 +36 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a7/MockWritable_a745bd72731e0b51f6097d118713aa9d +33 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a7/TerminalTransform_a791046363f27a01a21b28a5fc18e159 +58 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a7/gtr_a7c6cf87054408dfaa332053e93e500f +5 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a7/simplify_a7134847013b1ea2f9417ee16c03824b +48 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a8/CommandLineAction_a8253bed5d1978bb6a92066326e38357 +77 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ac/NormalizeNewlinesTextRewriter_ac3af2a268ce9d6922f1294a58da6c4a +71 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/b2/extendStringPrototype_b2f9a6c1379034ad868c5f667877fadc +107 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/b4/namespace_b4914dcf7fc2fb8f7f972c13b48f6645 +77 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/b5/constant_b5b769be9acb440042a7957665debf5a +44 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/b6/JsonFile_b6b4a5937dbb9325053b19bc4e2b0450 +426 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/b6/index_b6ba4dd47ab8e3f3e79ca88ec7825b15 +341 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/b6/sprintf_b684d33114f728a6c356eb3bbb9156d5 +209 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/b7/URLimpl_b7e473a6d12ed1315b560494844887bd +201 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/b8/patch_b81e5f0e2e6da3056822bf2f4ed9e7e7 +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/b9/ProtectableMapView_b9b1fd8ad3e74d9d06a42d6e7db85a90 +57 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/bc/AnsiEscape_bc9207c145be8aaf6afacb84732c22e3 +134 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/bc/runner_bc68aa9a21b7738e0d6c25423b185c0f +11 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/bc/symlink_bc0175250b3ab636a40c845a9eddb39d +64 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/bd/CommandLineParserExitError_bd2152fe7b2d6044694614b16bd42828 +58 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/be/index_be50ea9cf8c03c5389c9952e3199b3f0 +14 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/be/zebra_bee85ff6bfd6c73305c83bae9403032a +6 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/bf/index_bff0217ff50de0880fe9c3dd5a042b61 +26 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/c2/Async_c2ea5cc2edc0a460dcf394ef8277e88e +142 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/c2/inc_c29ab8939670a598aaecd384c9d5ac0b +19 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/c3/PrintUtilities_c35051579d48861512e413c8a14412a7 +85 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/c4/index_c41f3b8b1d980e4a50a1f567ef3dfa55 +7 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/c8/index_c849c0732b3c043d26dd7f83e42b0e82 +19 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/c8/range_c82cd0a8e5f3ab26a390fc043d2fd6c1 +523 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/cb/index_cb910c0c44d500b1de395d308269b53c +77 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ce/PosixModeBits_ce06fd83b104c77fb11b25bbcb96cda0 +84 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ce/index_ce3464019fb882539ee9a6f3e36e615a +88 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ce/index_ce3464019fb882539ee9a6f3e36e615a.map +1 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ce/parseoptions_ce35dd2d295c4a7222a6222851e75566 +12 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ce/store_ce7210aaefb043cec971342bfc0cfdd0 +51 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d0/polyfills_d0ad94e2eb550e44630192458362dcb6 +356 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d1/AsyncParallelHook_d18cda50e690d0dbbc99a98a59de44bc +38 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d1/TabCompletionAction_d14027e38fb75b6d8c775fdfb5eeba25 +210 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d1/getRepoState_d169674c56b8de074a7b0bbf4e00fd38 +399 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d2/StdioLineTransform_d2f22c5a6ce4b53f293a12c214c78e9b +115 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d2/buffer_d24e8fbd314b1514e892b0037226d476 +13 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d2/neq_d231567796306add9d6c56edc5883cf8 +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d3/StreamCollator_d38868f25e405ca18337dd6c6c43bb7b +149 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d3/ZSchemabrowsermin_d390d636d452d49462407943a5567f28 +3 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d3/gt_d3738f1d28722401000112f671c9314f +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d3/jestAdapter_d364e6fc05fddde0141d1adf30928ab8 +118 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d4/count_d4f18f1fd57b57bd934e1aec406fd42b +41 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d4/index_d4ec4e13526fb09fdb434929a9393040 +6 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d6/SplitterTransform_d62b2e66ec6880c4fa2e0799bbe80845 +49 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d7/index_d745e3edab39ecf8b68f842aeda1f436 +10 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d7/index_d79ccb4a675bce07283a087905f1f2c1 +17 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d7/nodemodulespaths_d744d0bfa889ed50d6db4f1079fe6320 +43 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d8/index_d823010cbbbbee48e7338f71e799e46b +28 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/d9/async_d9bc7cae91f957ecf449fffa5417f46b +330 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/dc/america_dc8321ced343699017efa55ce495cae9 +13 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/dc/outputjson_dc9bcfd272ece271d5ba1d88882aabd3 +28 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/dd/added_formatters_dddaa6b90e00843ac1493a1754ad8d35 +88 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/de/rimraf_de5bb2bceea542b599f79b32f00261b6 +315 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/df/debug_dfea87a09ee5f184765dd5d9c5f2907d +10 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e0/index_e0fb84b2cae789df813ab2fd47dab672 +2 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e1/action_e1aaa76264f13ca51849266a55660ed3 +147 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e2/commons_e2ab730ac4f4b46b65b2b8f85c8616c5 +23382 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e3/DiscardStdoutTransform_e3ca398d1799ec51a0da3262837e8907 +94 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e3/PackageJsonLookup_e391de8a3bc029ef14212787d6efef5a +328 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e4/lte_e41aef5564169e2c9a26d71b55ac32cc +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e4/minversion_e4899cb3e82f3792e99b5d72895f46d7 +62 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e4/styles_e45b23904077bb02545672de0f04ca03 +78 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e5/Constants_e5916bdbd55b7c5751c61c22c2d8ac34 +35 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e5/HttpBuildCacheProvider_e53bd002cf44ae62693f20b8c4682941 +4367 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e5/HttpBuildCacheProvider_e53bd002cf44ae62693f20b8c4682941.map +1 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e5/formatter_e5470f40e67b2ff71fa7e81816df9709 +796 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e6/RushHttpBuildCachePlugin_e69b4b7cd4f95aa49455690c88f00247 +362 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e6/RushHttpBuildCachePlugin_e69b4b7cd4f95aa49455690c88f00247.map +1 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e6/parse_e600979fefd4a38a2ee298d2c0620ade +761 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e7/parse_e7d763c8be3f06ca68dae801f67f74f0 +34 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e9/prerelease_e9273d37a4257d1ec90c3290bff01e38 +7 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ea/index_eac4fe91a50305745e819cc74aa7ecef +135 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/eb/SubprocessTerminator_ebf12d3f7deaa7ae1d03a93896142f71 +183 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ed/Constants_edd5c8fac126611f0aac2c21306624ce +8 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ee/CommandLineIntegerListParameter_ee2f3b50b51fed153ef44b020f23a401 +83 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ee/TextRewriterTransform_eea93c8f7ebdbdc06d142929eabdbf1a +94 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f0/sort_f08e51bfef63ae58474299f9e7546731 +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f1/false_f1144cdddaa535b00035b0fbe77ead5f +28 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f2/utimes_f2a55040651c41f48b71717467a0818a +80 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f5/index_f581df3f55b3b9bf7204b9154e41c668 +595 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f7/HttpBuildCacheProvidertest_f710af633835df558cad54cb165c14fa +73 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f7/HttpBuildCacheProvidertest_f710af633835df558cad54cb165c14fa.map +1 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f8/BaseClasses_f86545813589e9e0e828bd06fd6f483b +170 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f8/Helpers_f82226d33bc83e35ab5d60a911a8baa0 +72 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f8/eq_f83b8f41e78fb9dcd93f57ba31fd2fb7 +4 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f9/TerminalWritable_f95360cc0a4458d3f87824bca7c56ec7 +124 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f9/compare_f98f6def50e53b4e306f892abb74cc0e +6 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/fa/rushlib_fa830331d24a41292b5cb91040384188 +745 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/fc/diff_fc9e8ec97b9414c6564bfb456a67b499 +24 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/fc/gte_fce941d3a7388750c169856aaaa6ab09 +4 -0
- package/.heft/build-cache/jest-cache/perf-cache-bae913f9b9aa720eb4deeae0a60a4b27-da39a3ee5e6b4b0d3255bfef95601890 +1 -0
- package/.rush/temp/operation/_phase_build/state.json +3 -0
- package/.rush/temp/operation/_phase_test/all.log +29 -0
- package/.rush/temp/operation/_phase_test/state.json +3 -0
- package/.rush/temp/package-deps__phase_build.json +17 -0
- package/.rush/temp/package-deps__phase_test.json +17 -0
- package/.rush/temp/rushstack+rush-http-build-cache-plugin-_phase_build-b4c5586f0288094c9a07eba9c3a86a35d8839a48.log +10 -0
- package/.rush/temp/shrinkwrap-deps.json +70 -0
- package/README.md +116 -0
- package/config/jest.config.json +14 -0
- package/config/rig.json +18 -0
- package/lib/HttpBuildCacheProvider.d.ts +47 -0
- package/lib/HttpBuildCacheProvider.d.ts.map +1 -0
- package/lib/HttpBuildCacheProvider.js +274 -0
- package/lib/HttpBuildCacheProvider.js.map +1 -0
- package/lib/HttpBuildCacheProvider.test.d.ts +2 -0
- package/lib/HttpBuildCacheProvider.test.d.ts.map +1 -0
- package/lib/HttpBuildCacheProvider.test.js +72 -0
- package/lib/HttpBuildCacheProvider.test.js.map +1 -0
- package/lib/RushHttpBuildCachePlugin.d.ts +42 -0
- package/lib/RushHttpBuildCachePlugin.d.ts.map +1 -0
- package/lib/RushHttpBuildCachePlugin.js +35 -0
- package/lib/RushHttpBuildCachePlugin.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +5 -0
- package/lib/index.js.map +1 -0
- package/lib/schemas/plugin-config.schema.json +52 -0
- package/package.json +36 -0
- package/rush-logs/rush-http-build-cache-plugin._phase_build.log +5 -0
- package/rush-logs/rush-http-build-cache-plugin._phase_test.log +29 -0
- package/rush-plugin-manifest.json +11 -0
- package/src/HttpBuildCacheProvider.test.ts +58 -0
- package/src/HttpBuildCacheProvider.ts +395 -0
- package/src/RushHttpBuildCachePlugin.ts +86 -0
- package/src/index.ts +4 -0
- package/src/schemas/plugin-config.schema.json +52 -0
- package/temp/coverage/clover.xml +146 -0
- package/temp/coverage/coverage-final.json +4 -0
- package/temp/coverage/lcov-report/HttpBuildCacheProvider.ts.html +1270 -0
- package/temp/coverage/lcov-report/RushHttpBuildCachePlugin.ts.html +343 -0
- package/temp/coverage/lcov-report/base.css +224 -0
- package/temp/coverage/lcov-report/block-navigation.js +87 -0
- package/temp/coverage/lcov-report/favicon.png +0 -0
- package/temp/coverage/lcov-report/index.html +146 -0
- package/temp/coverage/lcov-report/index.ts.html +97 -0
- package/temp/coverage/lcov-report/prettify.css +1 -0
- package/temp/coverage/lcov-report/prettify.js +2 -0
- package/temp/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/temp/coverage/lcov-report/sorter.js +196 -0
- package/temp/coverage/lcov.info +284 -0
- package/tsconfig.json +6 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
This project does not define the caching behavior of the "_phase:test" command, so caching has been disabled.
|
|
2
|
+
Invoking: heft test --no-build --production
|
|
3
|
+
Using local Heft from /home/vsts/work/1/s/rush-plugins/rush-http-build-cache-plugin/node_modules/@rushstack/heft
|
|
4
|
+
|
|
5
|
+
Project build folder is "/home/vsts/work/1/s/rush-plugins/rush-http-build-cache-plugin"
|
|
6
|
+
Using rig configuration from ./node_modules/@rushstack/heft-node-rig/profiles/default
|
|
7
|
+
Starting test
|
|
8
|
+
[jest] Using Jest version 29.5.0
|
|
9
|
+
|
|
10
|
+
Run start. 1 test suite
|
|
11
|
+
START src/HttpBuildCacheProvider.test.ts
|
|
12
|
+
PASS src/HttpBuildCacheProvider.test.ts (duration: 0.728s, 1 passed, 0 failed)
|
|
13
|
+
|
|
14
|
+
Tests finished:
|
|
15
|
+
Successes: 1
|
|
16
|
+
Failures: 0
|
|
17
|
+
Total: 1
|
|
18
|
+
-----------------------------|---------|----------|---------|---------|---------------------------------------------------
|
|
19
|
+
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
|
|
20
|
+
-----------------------------|---------|----------|---------|---------|---------------------------------------------------
|
|
21
|
+
All files | 42.74 | 39.02 | 40.9 | 42.74 |
|
|
22
|
+
HttpBuildCacheProvider.ts | 47.45 | 39.02 | 50 | 47.45 | 58,89,101-174,184,209,213-214,237-249,258,297-380
|
|
23
|
+
RushHttpBuildCachePlugin.ts | 0 | 100 | 0 | 0 | 1-81
|
|
24
|
+
index.ts | 0 | 100 | 100 | 0 | 1-3
|
|
25
|
+
-----------------------------|---------|----------|---------|---------|---------------------------------------------------
|
|
26
|
+
-------------------- Finished (1.894s) --------------------
|
|
27
|
+
Project: @rushstack/rush-http-build-cache-plugin@5.92.0
|
|
28
|
+
Heft version: 0.50.0
|
|
29
|
+
Node version: v14.21.3
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush-plugin-manifest.schema.json",
|
|
3
|
+
"plugins": [
|
|
4
|
+
{
|
|
5
|
+
"pluginName": "rush-http-build-cache-plugin",
|
|
6
|
+
"description": "Rush plugin for generic HTTP build cache",
|
|
7
|
+
"entryPoint": "lib/index.js",
|
|
8
|
+
"optionsSchema": "lib/schemas/plugin-config.schema.json"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
jest.mock('node-fetch', function () {
|
|
2
|
+
return Object.assign(jest.fn(), jest.requireActual('node-fetch'));
|
|
3
|
+
});
|
|
4
|
+
|
|
5
|
+
import fetch, { Response } from 'node-fetch';
|
|
6
|
+
import { HttpBuildCacheProvider } from './HttpBuildCacheProvider';
|
|
7
|
+
import { RushSession, EnvironmentConfiguration } from '@rushstack/rush-sdk';
|
|
8
|
+
import { StringBufferTerminalProvider, Terminal } from '@rushstack/node-core-library';
|
|
9
|
+
|
|
10
|
+
const EXAMPLE_OPTIONS = {
|
|
11
|
+
url: 'https://buildcache.example.acme.com',
|
|
12
|
+
tokenHandler: {
|
|
13
|
+
exec: 'node',
|
|
14
|
+
args: ['tokenHandler.js']
|
|
15
|
+
},
|
|
16
|
+
uploadMethod: 'POST',
|
|
17
|
+
isCacheWriteAllowed: false,
|
|
18
|
+
pluginName: 'example-plugin',
|
|
19
|
+
rushProjectRoot: '/repo'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
describe('HttpBuildCacheProvider', () => {
|
|
23
|
+
let terminalBuffer: StringBufferTerminalProvider;
|
|
24
|
+
let terminal!: Terminal;
|
|
25
|
+
|
|
26
|
+
beforeEach(() => {
|
|
27
|
+
terminalBuffer = new StringBufferTerminalProvider();
|
|
28
|
+
terminal = new Terminal(terminalBuffer);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe('tryGetCacheEntryBufferByIdAsync', () => {
|
|
32
|
+
it('prints warning if read credentials are not available', async () => {
|
|
33
|
+
jest.spyOn(EnvironmentConfiguration, 'buildCacheCredential', 'get').mockReturnValue(undefined);
|
|
34
|
+
|
|
35
|
+
const session: RushSession = {} as RushSession;
|
|
36
|
+
const provider = new HttpBuildCacheProvider(EXAMPLE_OPTIONS, session);
|
|
37
|
+
|
|
38
|
+
mocked(fetch).mockResolvedValue(
|
|
39
|
+
new Response('Unauthorized', {
|
|
40
|
+
status: 401,
|
|
41
|
+
statusText: 'Unauthorized'
|
|
42
|
+
})
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const result = await provider.tryGetCacheEntryBufferByIdAsync(terminal, 'some-key');
|
|
46
|
+
expect(result).toBe(undefined);
|
|
47
|
+
expect(fetch).toHaveBeenCalledWith('https://buildcache.example.acme.com/some-key', {
|
|
48
|
+
body: undefined,
|
|
49
|
+
headers: {},
|
|
50
|
+
method: 'GET',
|
|
51
|
+
redirect: 'follow'
|
|
52
|
+
});
|
|
53
|
+
expect(terminalBuffer.getWarningOutput()).toMatchInlineSnapshot(
|
|
54
|
+
`"Error getting cache entry: Error: Credentials for https://buildcache.example.acme.com/ have not been provided.[n]In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.[n][n]For local developers, run:[n][n] rush update-cloud-credentials --interactive[n][n]"`
|
|
55
|
+
);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
import { ITerminal, Executable } from '@rushstack/node-core-library';
|
|
2
|
+
import {
|
|
3
|
+
ICloudBuildCacheProvider,
|
|
4
|
+
ICredentialCacheEntry,
|
|
5
|
+
CredentialCache,
|
|
6
|
+
RushSession,
|
|
7
|
+
EnvironmentConfiguration
|
|
8
|
+
} from '@rushstack/rush-sdk';
|
|
9
|
+
import fetch, { BodyInit, Response } from 'node-fetch';
|
|
10
|
+
|
|
11
|
+
enum CredentialsOptions {
|
|
12
|
+
Optional,
|
|
13
|
+
Required,
|
|
14
|
+
Omit
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
enum FailureType {
|
|
18
|
+
None,
|
|
19
|
+
Informational,
|
|
20
|
+
Warning,
|
|
21
|
+
Error,
|
|
22
|
+
Authentication
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface IHttpBuildCacheTokenHandler {
|
|
26
|
+
exec: string;
|
|
27
|
+
args?: string[];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
33
|
+
export interface IHttpBuildCacheProviderOptions {
|
|
34
|
+
url: string;
|
|
35
|
+
tokenHandler?: IHttpBuildCacheTokenHandler;
|
|
36
|
+
uploadMethod?: string;
|
|
37
|
+
headers?: Record<string, string>;
|
|
38
|
+
cacheKeyPrefix?: string;
|
|
39
|
+
isCacheWriteAllowed: boolean;
|
|
40
|
+
pluginName: string;
|
|
41
|
+
rushProjectRoot: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export class HttpBuildCacheProvider implements ICloudBuildCacheProvider {
|
|
45
|
+
private readonly _pluginName: string;
|
|
46
|
+
private readonly _rushSession: RushSession;
|
|
47
|
+
private readonly _rushProjectRoot: string;
|
|
48
|
+
private readonly _environmentCredential: string | undefined;
|
|
49
|
+
private readonly _isCacheWriteAllowedByConfiguration: boolean;
|
|
50
|
+
private readonly _url: URL;
|
|
51
|
+
private readonly _uploadMethod: string;
|
|
52
|
+
private readonly _headers: Record<string, string>;
|
|
53
|
+
private readonly _cacheKeyPrefix: string;
|
|
54
|
+
private readonly _tokenHandler: IHttpBuildCacheTokenHandler | undefined;
|
|
55
|
+
private __credentialCacheId: string | undefined;
|
|
56
|
+
|
|
57
|
+
public get isCacheWriteAllowed(): boolean {
|
|
58
|
+
return EnvironmentConfiguration.buildCacheWriteAllowed ?? this._isCacheWriteAllowedByConfiguration;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public constructor(options: IHttpBuildCacheProviderOptions, rushSession: RushSession) {
|
|
62
|
+
this._pluginName = options.pluginName;
|
|
63
|
+
this._rushSession = rushSession;
|
|
64
|
+
this._rushProjectRoot = options.rushProjectRoot;
|
|
65
|
+
|
|
66
|
+
this._environmentCredential = EnvironmentConfiguration.buildCacheCredential;
|
|
67
|
+
this._isCacheWriteAllowedByConfiguration = options.isCacheWriteAllowed;
|
|
68
|
+
this._url = new URL(options.url.endsWith('/') ? options.url : options.url + '/');
|
|
69
|
+
this._uploadMethod = options.uploadMethod ?? 'PUT';
|
|
70
|
+
this._headers = options.headers ?? {};
|
|
71
|
+
this._tokenHandler = options.tokenHandler;
|
|
72
|
+
this._cacheKeyPrefix = options.cacheKeyPrefix ?? '';
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public async tryGetCacheEntryBufferByIdAsync(
|
|
76
|
+
terminal: ITerminal,
|
|
77
|
+
cacheId: string
|
|
78
|
+
): Promise<Buffer | undefined> {
|
|
79
|
+
try {
|
|
80
|
+
const result = await this._http({
|
|
81
|
+
terminal: terminal,
|
|
82
|
+
relUrl: `${this._cacheKeyPrefix}${cacheId}`,
|
|
83
|
+
method: 'GET',
|
|
84
|
+
body: undefined,
|
|
85
|
+
warningText: 'Could not get cache entry',
|
|
86
|
+
readBody: true
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
return Buffer.isBuffer(result) ? result : undefined;
|
|
90
|
+
} catch (e) {
|
|
91
|
+
terminal.writeWarningLine(`Error getting cache entry: ${e}`);
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
public async trySetCacheEntryBufferAsync(
|
|
97
|
+
terminal: ITerminal,
|
|
98
|
+
cacheId: string,
|
|
99
|
+
objectBuffer: Buffer
|
|
100
|
+
): Promise<boolean> {
|
|
101
|
+
if (!this.isCacheWriteAllowed) {
|
|
102
|
+
terminal.writeErrorLine('Writing to cache is not allowed in the current configuration.');
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
terminal.writeDebugLine('Uploading object with cacheId: ', cacheId);
|
|
107
|
+
|
|
108
|
+
try {
|
|
109
|
+
const result = await this._http({
|
|
110
|
+
terminal: terminal,
|
|
111
|
+
relUrl: `${this._cacheKeyPrefix}${cacheId}`,
|
|
112
|
+
method: this._uploadMethod,
|
|
113
|
+
body: objectBuffer,
|
|
114
|
+
warningText: 'Could not write cache entry',
|
|
115
|
+
readBody: false
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
return result !== false;
|
|
119
|
+
} catch (e) {
|
|
120
|
+
terminal.writeWarningLine(`Error uploading cache entry: ${e}`);
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
public async updateCachedCredentialAsync(terminal: ITerminal, credential: string): Promise<void> {
|
|
126
|
+
await CredentialCache.usingAsync(
|
|
127
|
+
{
|
|
128
|
+
supportEditing: true
|
|
129
|
+
},
|
|
130
|
+
async (credentialsCache: CredentialCache) => {
|
|
131
|
+
credentialsCache.setCacheEntry(this._credentialCacheId, {
|
|
132
|
+
credential: credential
|
|
133
|
+
});
|
|
134
|
+
await credentialsCache.saveIfModifiedAsync();
|
|
135
|
+
}
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
public async updateCachedCredentialInteractiveAsync(terminal: ITerminal): Promise<void> {
|
|
140
|
+
if (!this._tokenHandler) {
|
|
141
|
+
throw new Error(
|
|
142
|
+
`The interactive cloud credentials flow is not configured.\n` +
|
|
143
|
+
`Set the 'tokenHandler' setting in 'common/config/rush-plugins/${this._pluginName}.json' to a command that writes your credentials to standard output and exits with code 0 ` +
|
|
144
|
+
`or provide your credentials to rush using the --credential flag instead. Credentials must be the ` +
|
|
145
|
+
`'Authorization' header expected by ${this._url.href}`
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const cmd: string = `${this._tokenHandler.exec} ${(this._tokenHandler.args || []).join(' ')}`;
|
|
150
|
+
terminal.writeVerboseLine(`Running '${cmd}' to get credentials`);
|
|
151
|
+
const result = Executable.spawnSync(this._tokenHandler.exec, this._tokenHandler.args || []);
|
|
152
|
+
|
|
153
|
+
terminal.writeErrorLine(result.stderr);
|
|
154
|
+
|
|
155
|
+
if (result.error) {
|
|
156
|
+
throw new Error(`Could not obtain credentials. The command '${cmd}' failed.`);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const credential = result.stdout.trim();
|
|
160
|
+
terminal.writeVerboseLine('Got credentials');
|
|
161
|
+
|
|
162
|
+
await this.updateCachedCredentialAsync(terminal, credential);
|
|
163
|
+
|
|
164
|
+
terminal.writeLine('Updated credentials cache');
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
public async deleteCachedCredentialsAsync(terminal: ITerminal): Promise<void> {
|
|
168
|
+
await CredentialCache.usingAsync(
|
|
169
|
+
{
|
|
170
|
+
supportEditing: true
|
|
171
|
+
},
|
|
172
|
+
async (credentialsCache: CredentialCache) => {
|
|
173
|
+
credentialsCache.deleteCacheEntry(this._credentialCacheId);
|
|
174
|
+
await credentialsCache.saveIfModifiedAsync();
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
private get _credentialCacheId(): string {
|
|
180
|
+
if (!this.__credentialCacheId) {
|
|
181
|
+
const cacheIdParts: string[] = [this._url.href];
|
|
182
|
+
|
|
183
|
+
if (this._isCacheWriteAllowedByConfiguration) {
|
|
184
|
+
cacheIdParts.push('cacheWriteAllowed');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
this.__credentialCacheId = cacheIdParts.join('|');
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return this.__credentialCacheId;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
private async _http(options: {
|
|
194
|
+
terminal: ITerminal;
|
|
195
|
+
relUrl: string;
|
|
196
|
+
method: string;
|
|
197
|
+
body: BodyInit | undefined;
|
|
198
|
+
warningText: string;
|
|
199
|
+
readBody: boolean;
|
|
200
|
+
credentialOptions?: CredentialsOptions;
|
|
201
|
+
}): Promise<Buffer | boolean> {
|
|
202
|
+
const { terminal, relUrl, method, body, warningText, readBody, credentialOptions } = options;
|
|
203
|
+
const safeCredentialOptions = credentialOptions ?? CredentialsOptions.Optional;
|
|
204
|
+
const credentials = await this._tryGetCredentials(safeCredentialOptions);
|
|
205
|
+
const url = new URL(relUrl, this._url).href;
|
|
206
|
+
|
|
207
|
+
const headers: Record<string, string> = {};
|
|
208
|
+
if (typeof credentials === 'string') {
|
|
209
|
+
headers.Authorization = credentials;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
for (const [key, value] of Object.entries(this._headers)) {
|
|
213
|
+
if (typeof value === 'string') {
|
|
214
|
+
headers[key] = value;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
const bodyLength = (body as { length: number })?.length || 'unknown';
|
|
219
|
+
|
|
220
|
+
terminal.writeDebugLine(`[http-build-cache] request: ${method} ${url} ${bodyLength} bytes`);
|
|
221
|
+
|
|
222
|
+
const response = await fetch(url, {
|
|
223
|
+
method: method,
|
|
224
|
+
headers: headers,
|
|
225
|
+
body: body,
|
|
226
|
+
redirect: 'follow'
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
if (!response.ok) {
|
|
230
|
+
if (typeof credentials !== 'string' && safeCredentialOptions === CredentialsOptions.Optional) {
|
|
231
|
+
// We tried fetching the resource without credentials and that did not work out
|
|
232
|
+
// Try again but require credentials this time
|
|
233
|
+
// This will trigger the provider to request credentials
|
|
234
|
+
return await this._http({ ...options, credentialOptions: CredentialsOptions.Required });
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
this._reportFailure(terminal, method, response, false, warningText);
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
const result: Buffer | boolean = readBody ? Buffer.from(await response.arrayBuffer()) : true;
|
|
242
|
+
|
|
243
|
+
terminal.writeDebugLine(
|
|
244
|
+
`[http-build-cache] actual response: ${response.status} ${url} ${
|
|
245
|
+
result === true ? 'true' : result.length
|
|
246
|
+
} bytes`
|
|
247
|
+
);
|
|
248
|
+
|
|
249
|
+
return result;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
private async _tryGetCredentials(options: CredentialsOptions.Required): Promise<string>;
|
|
253
|
+
private async _tryGetCredentials(options: CredentialsOptions.Optional): Promise<string | undefined>;
|
|
254
|
+
private async _tryGetCredentials(options: CredentialsOptions.Omit): Promise<undefined>;
|
|
255
|
+
private async _tryGetCredentials(options: CredentialsOptions): Promise<string | undefined>;
|
|
256
|
+
private async _tryGetCredentials(options: CredentialsOptions): Promise<string | undefined> {
|
|
257
|
+
if (options === CredentialsOptions.Omit) {
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
let credentials: string | undefined = this._environmentCredential;
|
|
262
|
+
|
|
263
|
+
if (credentials === undefined) {
|
|
264
|
+
credentials = await this._tryGetCredentialsFromCache();
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (typeof credentials !== 'string' && options === CredentialsOptions.Required) {
|
|
268
|
+
throw new Error(
|
|
269
|
+
[
|
|
270
|
+
`Credentials for ${this._url.href} have not been provided.`,
|
|
271
|
+
`In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.`,
|
|
272
|
+
``,
|
|
273
|
+
`For local developers, run:`,
|
|
274
|
+
``,
|
|
275
|
+
` rush update-cloud-credentials --interactive`,
|
|
276
|
+
``
|
|
277
|
+
].join('\n')
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
return credentials;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
private async _tryGetCredentialsFromCache(): Promise<string | undefined> {
|
|
285
|
+
let cacheEntry: ICredentialCacheEntry | undefined;
|
|
286
|
+
|
|
287
|
+
await CredentialCache.usingAsync(
|
|
288
|
+
{
|
|
289
|
+
supportEditing: false
|
|
290
|
+
},
|
|
291
|
+
(credentialsCache: CredentialCache) => {
|
|
292
|
+
cacheEntry = credentialsCache.tryGetCacheEntry(this._credentialCacheId);
|
|
293
|
+
}
|
|
294
|
+
);
|
|
295
|
+
|
|
296
|
+
if (cacheEntry) {
|
|
297
|
+
const expirationTime: number | undefined = cacheEntry.expires?.getTime();
|
|
298
|
+
if (!expirationTime || expirationTime >= Date.now()) {
|
|
299
|
+
return cacheEntry.credential;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
private _getFailureType(requestMethod: string, response: Response, isRedirect: boolean): FailureType {
|
|
305
|
+
if (response.ok) {
|
|
306
|
+
return FailureType.None;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
switch (response.status) {
|
|
310
|
+
case 503: {
|
|
311
|
+
// We select 503 specifically because this represents "service unavailable" and
|
|
312
|
+
// "rate limit throttle" errors, which are transient issues.
|
|
313
|
+
//
|
|
314
|
+
// There are other 5xx errors, such as 501, that can occur if the request is
|
|
315
|
+
// malformed, so as a general rule we want to let through other 5xx errors
|
|
316
|
+
// so the user can troubleshoot.
|
|
317
|
+
|
|
318
|
+
// Don't fail production builds with warnings for transient issues
|
|
319
|
+
return FailureType.Informational;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
case 401:
|
|
323
|
+
case 403:
|
|
324
|
+
case 407: {
|
|
325
|
+
if (requestMethod === 'GET' && (isRedirect || response.redirected)) {
|
|
326
|
+
// Cache misses for GET requests are not errors
|
|
327
|
+
// This is a workaround behavior where a server can issue a redirect and we fail to authenticate at the new location.
|
|
328
|
+
// We do not want to signal this as an authentication failure because the authorization header is not passed on to redirects.
|
|
329
|
+
// i.e The authentication header was accepted for the first request and therefore subsequent failures
|
|
330
|
+
// where it was not present should not be attributed to the header.
|
|
331
|
+
// This scenario usually comes up with services that redirect to pre-signed URLS that don't actually exist.
|
|
332
|
+
// Those services then usually treat the 404 as a 403 to prevent leaking information.
|
|
333
|
+
return FailureType.None;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
return FailureType.Authentication;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
case 404: {
|
|
340
|
+
if (requestMethod === 'GET') {
|
|
341
|
+
// Cache misses for GET requests are not errors
|
|
342
|
+
return FailureType.None;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Let dev builds succeed, let Prod builds fail
|
|
348
|
+
return FailureType.Warning;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
private _reportFailure(
|
|
352
|
+
terminal: ITerminal,
|
|
353
|
+
requestMethod: string,
|
|
354
|
+
response: Response,
|
|
355
|
+
isRedirect: boolean,
|
|
356
|
+
message: string
|
|
357
|
+
): void {
|
|
358
|
+
switch (this._getFailureType(requestMethod, response, isRedirect)) {
|
|
359
|
+
default: {
|
|
360
|
+
terminal.writeErrorLine(`${message}: HTTP ${response.status}: ${response.statusText}`);
|
|
361
|
+
break;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
case FailureType.Warning: {
|
|
365
|
+
terminal.writeWarningLine(`${message}: HTTP ${response.status}: ${response.statusText}`);
|
|
366
|
+
break;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
case FailureType.Informational: {
|
|
370
|
+
terminal.writeLine(`${message}: HTTP ${response.status}: ${response.statusText}`);
|
|
371
|
+
break;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
case FailureType.None: {
|
|
375
|
+
terminal.writeDebugLine(`${message}: HTTP ${response.status}: ${response.statusText}`);
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
case FailureType.Authentication: {
|
|
380
|
+
throw new Error(
|
|
381
|
+
[
|
|
382
|
+
`${this._url.href} responded with ${response.status}: ${response.statusText}.`,
|
|
383
|
+
`Credentials may be misconfigured or have expired.`,
|
|
384
|
+
`In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.`,
|
|
385
|
+
``,
|
|
386
|
+
`For local developers, run:`,
|
|
387
|
+
``,
|
|
388
|
+
` rush update-cloud-credentials --interactive`,
|
|
389
|
+
``
|
|
390
|
+
].join('\n')
|
|
391
|
+
);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Import } from '@rushstack/node-core-library';
|
|
2
|
+
import type { IRushPlugin, RushSession, RushConfiguration } from '@rushstack/rush-sdk';
|
|
3
|
+
import type { HttpBuildCacheProvider, IHttpBuildCacheProviderOptions } from './HttpBuildCacheProvider';
|
|
4
|
+
|
|
5
|
+
const HttpBuildCacheProviderModule: typeof import('./HttpBuildCacheProvider') = Import.lazy(
|
|
6
|
+
'./HttpBuildCacheProvider',
|
|
7
|
+
require
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
const PLUGIN_NAME: string = 'HttpBuildCachePlugin';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export interface IRushHttpBuildCachePluginConfig {
|
|
16
|
+
/**
|
|
17
|
+
* The URL of the server that stores the caches (e.g. "https://build-caches.example.com").
|
|
18
|
+
*/
|
|
19
|
+
url: string;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The HTTP method to use when writing to the cache (defaults to PUT).
|
|
23
|
+
*/
|
|
24
|
+
uploadMethod?: string;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* An optional set of HTTP headers to pass to the cache server.
|
|
28
|
+
*/
|
|
29
|
+
headers?: Record<string, string>;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* An optional command that prints the endpoint's credentials to stdout. Provide the
|
|
33
|
+
* command or script to execute and, optionally, any arguments to pass to the script.
|
|
34
|
+
*/
|
|
35
|
+
tokenHandler?: {
|
|
36
|
+
exec: string;
|
|
37
|
+
args?: string[];
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Prefix for cache keys.
|
|
42
|
+
*/
|
|
43
|
+
cacheKeyPrefix?: string;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* If set to true, allow writing to the cache. Defaults to false.
|
|
47
|
+
*/
|
|
48
|
+
isCacheWriteAllowed?: boolean;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @public
|
|
53
|
+
*/
|
|
54
|
+
export class RushHttpBuildCachePlugin implements IRushPlugin {
|
|
55
|
+
public readonly pluginName: string = PLUGIN_NAME;
|
|
56
|
+
|
|
57
|
+
public apply(rushSession: RushSession, rushConfig: RushConfiguration): void {
|
|
58
|
+
rushSession.hooks.initialize.tap(this.pluginName, () => {
|
|
59
|
+
rushSession.registerCloudBuildCacheProviderFactory(
|
|
60
|
+
'http',
|
|
61
|
+
(buildCacheConfig): HttpBuildCacheProvider => {
|
|
62
|
+
const config: IRushHttpBuildCachePluginConfig = (
|
|
63
|
+
buildCacheConfig as typeof buildCacheConfig & {
|
|
64
|
+
httpConfiguration: IRushHttpBuildCachePluginConfig;
|
|
65
|
+
}
|
|
66
|
+
).httpConfiguration;
|
|
67
|
+
|
|
68
|
+
const { url, uploadMethod, headers, tokenHandler, cacheKeyPrefix, isCacheWriteAllowed } = config;
|
|
69
|
+
|
|
70
|
+
const options: IHttpBuildCacheProviderOptions = {
|
|
71
|
+
pluginName: this.pluginName,
|
|
72
|
+
rushProjectRoot: rushConfig.rushJsonFolder,
|
|
73
|
+
url: url,
|
|
74
|
+
uploadMethod: uploadMethod,
|
|
75
|
+
headers: headers,
|
|
76
|
+
tokenHandler: tokenHandler,
|
|
77
|
+
cacheKeyPrefix: cacheKeyPrefix,
|
|
78
|
+
isCacheWriteAllowed: !!isCacheWriteAllowed
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
return new HttpBuildCacheProviderModule.HttpBuildCacheProvider(options, rushSession);
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
+
"title": "Configuration for build cache with HTTPS server",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["url"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"url": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "(Required) The URL of the server that stores the caches (e.g. \"https://build-caches.example.com\").",
|
|
10
|
+
"format": "uri"
|
|
11
|
+
},
|
|
12
|
+
"uploadMethod": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "(Optional) The HTTP method to use when writing to the cache (defaults to PUT).",
|
|
15
|
+
"enum": ["PUT", "POST", "PATCH"],
|
|
16
|
+
"default": "PUT"
|
|
17
|
+
},
|
|
18
|
+
"headers": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"description": "(Optional) HTTP headers to pass to the cache server",
|
|
21
|
+
"properties": {},
|
|
22
|
+
"additionalProperties": {
|
|
23
|
+
"type": "string"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"tokenHandler": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"description": "(Optional) Shell command that prints the authorization token needed to communicate with the HTTPS server and exits with code 0. This command will be executed from the root of the monorepo.",
|
|
29
|
+
"properties": {
|
|
30
|
+
"exec": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "(Required) The command or script to execute."
|
|
33
|
+
},
|
|
34
|
+
"args": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"description": "(Optional) Arguments to pass to the command or script.",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "string"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"cacheKeyPrefix": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"description": "(Optional) prefix for cache keys."
|
|
46
|
+
},
|
|
47
|
+
"isCacheWriteAllowed": {
|
|
48
|
+
"type": "boolean",
|
|
49
|
+
"description": "(Optional) If set to true, allow writing to the cache. Defaults to false."
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|