@pnpm/exe 11.0.0-dev.1003 → 11.0.0-rc.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 (584) hide show
  1. package/dist/node-gyp-bin/node-gyp +6 -0
  2. package/dist/node-gyp-bin/node-gyp.cmd +5 -0
  3. package/dist/node_modules/@gar/promise-retry/LICENSE +20 -0
  4. package/dist/node_modules/@gar/promise-retry/lib/index.js +62 -0
  5. package/dist/node_modules/@gar/promise-retry/lib/retry.js +109 -0
  6. package/dist/node_modules/@gar/promise-retry/package.json +45 -0
  7. package/dist/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
  8. package/dist/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
  9. package/dist/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
  10. package/dist/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
  11. package/dist/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
  12. package/dist/node_modules/@isaacs/fs-minipass/package.json +72 -0
  13. package/dist/node_modules/@npmcli/agent/lib/agents.js +206 -0
  14. package/dist/node_modules/@npmcli/agent/lib/dns.js +53 -0
  15. package/dist/node_modules/@npmcli/agent/lib/errors.js +61 -0
  16. package/dist/node_modules/@npmcli/agent/lib/index.js +56 -0
  17. package/dist/node_modules/@npmcli/agent/lib/options.js +86 -0
  18. package/dist/node_modules/@npmcli/agent/lib/proxy.js +88 -0
  19. package/dist/node_modules/@npmcli/agent/package.json +60 -0
  20. package/dist/node_modules/@npmcli/fs/lib/common/get-options.js +20 -0
  21. package/dist/node_modules/@npmcli/fs/lib/common/node.js +9 -0
  22. package/dist/node_modules/@npmcli/fs/lib/cp/LICENSE +15 -0
  23. package/dist/node_modules/@npmcli/fs/lib/cp/errors.js +129 -0
  24. package/dist/node_modules/@npmcli/fs/lib/cp/index.js +22 -0
  25. package/dist/node_modules/@npmcli/fs/lib/cp/polyfill.js +428 -0
  26. package/dist/node_modules/@npmcli/fs/lib/index.js +13 -0
  27. package/dist/node_modules/@npmcli/fs/lib/move-file.js +78 -0
  28. package/dist/node_modules/@npmcli/fs/lib/readdir-scoped.js +20 -0
  29. package/dist/node_modules/@npmcli/fs/lib/with-temp-dir.js +39 -0
  30. package/dist/node_modules/@npmcli/fs/package.json +54 -0
  31. package/dist/node_modules/@npmcli/redact/LICENSE +21 -0
  32. package/dist/node_modules/@npmcli/redact/lib/deep-map.js +71 -0
  33. package/dist/node_modules/@npmcli/redact/lib/error.js +28 -0
  34. package/dist/node_modules/@npmcli/redact/lib/index.js +44 -0
  35. package/dist/node_modules/@npmcli/redact/lib/matchers.js +88 -0
  36. package/dist/node_modules/@npmcli/redact/lib/server.js +59 -0
  37. package/dist/node_modules/@npmcli/redact/lib/utils.js +202 -0
  38. package/dist/node_modules/@npmcli/redact/package.json +52 -0
  39. package/dist/node_modules/abbrev/LICENSE +46 -0
  40. package/dist/node_modules/abbrev/lib/index.js +53 -0
  41. package/dist/node_modules/abbrev/package.json +41 -0
  42. package/dist/node_modules/agent-base/LICENSE +22 -0
  43. package/dist/node_modules/agent-base/dist/helpers.js +66 -0
  44. package/dist/node_modules/agent-base/dist/index.js +178 -0
  45. package/dist/node_modules/agent-base/package.json +46 -0
  46. package/dist/node_modules/balanced-match/dist/commonjs/index.js +59 -0
  47. package/dist/node_modules/balanced-match/dist/commonjs/package.json +3 -0
  48. package/dist/node_modules/balanced-match/dist/esm/index.js +54 -0
  49. package/dist/node_modules/balanced-match/dist/esm/package.json +3 -0
  50. package/dist/node_modules/balanced-match/package.json +68 -0
  51. package/dist/node_modules/brace-expansion/LICENSE +23 -0
  52. package/dist/node_modules/brace-expansion/dist/commonjs/index.js +201 -0
  53. package/dist/node_modules/brace-expansion/dist/commonjs/package.json +3 -0
  54. package/dist/node_modules/brace-expansion/dist/esm/index.js +197 -0
  55. package/dist/node_modules/brace-expansion/dist/esm/package.json +3 -0
  56. package/dist/node_modules/brace-expansion/package.json +64 -0
  57. package/dist/node_modules/cacache/lib/content/path.js +29 -0
  58. package/dist/node_modules/cacache/lib/content/read.js +165 -0
  59. package/dist/node_modules/cacache/lib/content/rm.js +18 -0
  60. package/dist/node_modules/cacache/lib/content/write.js +206 -0
  61. package/dist/node_modules/cacache/lib/entry-index.js +336 -0
  62. package/dist/node_modules/cacache/lib/get.js +170 -0
  63. package/dist/node_modules/cacache/lib/index.js +42 -0
  64. package/dist/node_modules/cacache/lib/memoization.js +72 -0
  65. package/dist/node_modules/cacache/lib/put.js +80 -0
  66. package/dist/node_modules/cacache/lib/rm.js +31 -0
  67. package/dist/node_modules/cacache/lib/util/glob.js +7 -0
  68. package/dist/node_modules/cacache/lib/util/hash-to-segments.js +7 -0
  69. package/dist/node_modules/cacache/lib/util/tmp.js +32 -0
  70. package/dist/node_modules/cacache/lib/verify.js +258 -0
  71. package/dist/node_modules/cacache/package.json +81 -0
  72. package/dist/node_modules/chownr/dist/commonjs/index.js +93 -0
  73. package/dist/node_modules/chownr/dist/commonjs/package.json +3 -0
  74. package/dist/node_modules/chownr/dist/esm/index.js +85 -0
  75. package/dist/node_modules/chownr/dist/esm/package.json +3 -0
  76. package/dist/node_modules/chownr/package.json +69 -0
  77. package/dist/node_modules/debug/LICENSE +20 -0
  78. package/dist/node_modules/debug/package.json +64 -0
  79. package/dist/node_modules/debug/src/browser.js +272 -0
  80. package/dist/node_modules/debug/src/common.js +292 -0
  81. package/dist/node_modules/debug/src/index.js +10 -0
  82. package/dist/node_modules/debug/src/node.js +263 -0
  83. package/dist/node_modules/env-paths/index.js +74 -0
  84. package/dist/node_modules/env-paths/license +9 -0
  85. package/dist/node_modules/env-paths/package.json +45 -0
  86. package/dist/node_modules/exponential-backoff/LICENSE +202 -0
  87. package/dist/node_modules/exponential-backoff/dist/backoff.js +124 -0
  88. package/dist/node_modules/exponential-backoff/dist/delay/always/always.delay.js +25 -0
  89. package/dist/node_modules/exponential-backoff/dist/delay/delay.base.js +45 -0
  90. package/dist/node_modules/exponential-backoff/dist/delay/delay.factory.js +17 -0
  91. package/dist/node_modules/exponential-backoff/dist/delay/delay.interface.js +3 -0
  92. package/dist/node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js +82 -0
  93. package/dist/node_modules/exponential-backoff/dist/jitter/full/full.jitter.js +8 -0
  94. package/dist/node_modules/exponential-backoff/dist/jitter/jitter.factory.js +15 -0
  95. package/dist/node_modules/exponential-backoff/dist/jitter/no/no.jitter.js +7 -0
  96. package/dist/node_modules/exponential-backoff/dist/options.js +31 -0
  97. package/dist/node_modules/exponential-backoff/package.json +62 -0
  98. package/dist/node_modules/fdir/LICENSE +7 -0
  99. package/dist/node_modules/fdir/dist/index.cjs +588 -0
  100. package/dist/node_modules/fdir/dist/index.d.cts +155 -0
  101. package/dist/node_modules/fdir/dist/index.d.mts +155 -0
  102. package/dist/node_modules/fdir/dist/index.mjs +570 -0
  103. package/dist/node_modules/fdir/package.json +103 -0
  104. package/dist/node_modules/fs-minipass/LICENSE +15 -0
  105. package/dist/node_modules/fs-minipass/lib/index.js +443 -0
  106. package/dist/node_modules/fs-minipass/package.json +54 -0
  107. package/dist/node_modules/glob/dist/commonjs/glob.js +248 -0
  108. package/dist/node_modules/glob/dist/commonjs/has-magic.js +27 -0
  109. package/dist/node_modules/glob/dist/commonjs/ignore.js +119 -0
  110. package/dist/node_modules/glob/dist/commonjs/index.js +68 -0
  111. package/dist/node_modules/glob/dist/commonjs/index.min.js +4 -0
  112. package/dist/node_modules/glob/dist/commonjs/package.json +3 -0
  113. package/dist/node_modules/glob/dist/commonjs/pattern.js +223 -0
  114. package/dist/node_modules/glob/dist/commonjs/processor.js +301 -0
  115. package/dist/node_modules/glob/dist/commonjs/walker.js +387 -0
  116. package/dist/node_modules/glob/dist/esm/glob.js +244 -0
  117. package/dist/node_modules/glob/dist/esm/has-magic.js +23 -0
  118. package/dist/node_modules/glob/dist/esm/ignore.js +115 -0
  119. package/dist/node_modules/glob/dist/esm/index.js +55 -0
  120. package/dist/node_modules/glob/dist/esm/index.min.js +4 -0
  121. package/dist/node_modules/glob/dist/esm/package.json +3 -0
  122. package/dist/node_modules/glob/dist/esm/pattern.js +219 -0
  123. package/dist/node_modules/glob/dist/esm/processor.js +294 -0
  124. package/dist/node_modules/glob/dist/esm/walker.js +381 -0
  125. package/dist/node_modules/glob/package.json +98 -0
  126. package/dist/node_modules/graceful-fs/LICENSE +15 -0
  127. package/dist/node_modules/graceful-fs/clone.js +23 -0
  128. package/dist/node_modules/graceful-fs/graceful-fs.js +448 -0
  129. package/dist/node_modules/graceful-fs/legacy-streams.js +118 -0
  130. package/dist/node_modules/graceful-fs/package.json +53 -0
  131. package/dist/node_modules/graceful-fs/polyfills.js +355 -0
  132. package/dist/node_modules/http-cache-semantics/LICENSE +9 -0
  133. package/dist/node_modules/http-cache-semantics/index.js +928 -0
  134. package/dist/node_modules/http-cache-semantics/package.json +22 -0
  135. package/dist/node_modules/http-proxy-agent/LICENSE +22 -0
  136. package/dist/node_modules/http-proxy-agent/dist/index.js +148 -0
  137. package/dist/node_modules/http-proxy-agent/package.json +47 -0
  138. package/dist/node_modules/https-proxy-agent/LICENSE +22 -0
  139. package/dist/node_modules/https-proxy-agent/dist/index.js +180 -0
  140. package/dist/node_modules/https-proxy-agent/dist/parse-proxy-response.js +101 -0
  141. package/dist/node_modules/https-proxy-agent/package.json +50 -0
  142. package/dist/node_modules/iconv-lite/LICENSE +21 -0
  143. package/dist/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
  144. package/dist/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
  145. package/dist/node_modules/iconv-lite/encodings/index.js +23 -0
  146. package/dist/node_modules/iconv-lite/encodings/internal.js +218 -0
  147. package/dist/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
  148. package/dist/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  149. package/dist/node_modules/iconv-lite/encodings/sbcs-data.js +178 -0
  150. package/dist/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  151. package/dist/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  152. package/dist/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  153. package/dist/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  154. package/dist/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  155. package/dist/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  156. package/dist/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
  157. package/dist/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  158. package/dist/node_modules/iconv-lite/encodings/utf16.js +187 -0
  159. package/dist/node_modules/iconv-lite/encodings/utf32.js +307 -0
  160. package/dist/node_modules/iconv-lite/encodings/utf7.js +283 -0
  161. package/dist/node_modules/iconv-lite/lib/bom-handling.js +48 -0
  162. package/dist/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
  163. package/dist/node_modules/iconv-lite/lib/index.js +182 -0
  164. package/dist/node_modules/iconv-lite/lib/streams.js +105 -0
  165. package/dist/node_modules/iconv-lite/package.json +70 -0
  166. package/dist/node_modules/ip-address/LICENSE +19 -0
  167. package/dist/node_modules/ip-address/dist/address-error.js +12 -0
  168. package/dist/node_modules/ip-address/dist/common.js +46 -0
  169. package/dist/node_modules/ip-address/dist/ip-address.js +35 -0
  170. package/dist/node_modules/ip-address/dist/ipv4.js +360 -0
  171. package/dist/node_modules/ip-address/dist/ipv6.js +1003 -0
  172. package/dist/node_modules/ip-address/dist/v4/constants.js +8 -0
  173. package/dist/node_modules/ip-address/dist/v6/constants.js +76 -0
  174. package/dist/node_modules/ip-address/dist/v6/helpers.js +45 -0
  175. package/dist/node_modules/ip-address/dist/v6/regular-expressions.js +95 -0
  176. package/dist/node_modules/ip-address/package.json +78 -0
  177. package/dist/node_modules/isexe/dist/commonjs/index.js +56 -0
  178. package/dist/node_modules/isexe/dist/commonjs/index.min.js +2 -0
  179. package/dist/node_modules/isexe/dist/commonjs/options.js +3 -0
  180. package/dist/node_modules/isexe/dist/commonjs/package.json +3 -0
  181. package/dist/node_modules/isexe/dist/commonjs/posix.js +67 -0
  182. package/dist/node_modules/isexe/dist/commonjs/win32.js +63 -0
  183. package/dist/node_modules/isexe/dist/esm/index.js +16 -0
  184. package/dist/node_modules/isexe/dist/esm/index.min.js +2 -0
  185. package/dist/node_modules/isexe/dist/esm/options.js +2 -0
  186. package/dist/node_modules/isexe/dist/esm/package.json +3 -0
  187. package/dist/node_modules/isexe/dist/esm/posix.js +62 -0
  188. package/dist/node_modules/isexe/dist/esm/win32.js +58 -0
  189. package/dist/node_modules/isexe/package.json +78 -0
  190. package/dist/node_modules/lru-cache/dist/commonjs/index.js +1595 -0
  191. package/dist/node_modules/lru-cache/dist/commonjs/index.min.js +2 -0
  192. package/dist/node_modules/lru-cache/dist/commonjs/package.json +3 -0
  193. package/dist/node_modules/lru-cache/dist/esm/index.js +1591 -0
  194. package/dist/node_modules/lru-cache/dist/esm/index.min.js +2 -0
  195. package/dist/node_modules/lru-cache/dist/esm/package.json +3 -0
  196. package/dist/node_modules/lru-cache/package.json +93 -0
  197. package/dist/node_modules/make-fetch-happen/LICENSE +16 -0
  198. package/dist/node_modules/make-fetch-happen/lib/cache/entry.js +471 -0
  199. package/dist/node_modules/make-fetch-happen/lib/cache/errors.js +11 -0
  200. package/dist/node_modules/make-fetch-happen/lib/cache/index.js +49 -0
  201. package/dist/node_modules/make-fetch-happen/lib/cache/key.js +17 -0
  202. package/dist/node_modules/make-fetch-happen/lib/cache/policy.js +161 -0
  203. package/dist/node_modules/make-fetch-happen/lib/fetch.js +118 -0
  204. package/dist/node_modules/make-fetch-happen/lib/index.js +41 -0
  205. package/dist/node_modules/make-fetch-happen/lib/options.js +59 -0
  206. package/dist/node_modules/make-fetch-happen/lib/pipeline.js +41 -0
  207. package/dist/node_modules/make-fetch-happen/lib/remote.js +134 -0
  208. package/dist/node_modules/make-fetch-happen/package.json +75 -0
  209. package/dist/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js +14 -0
  210. package/dist/node_modules/minimatch/dist/commonjs/ast.js +846 -0
  211. package/dist/node_modules/minimatch/dist/commonjs/brace-expressions.js +150 -0
  212. package/dist/node_modules/minimatch/dist/commonjs/escape.js +30 -0
  213. package/dist/node_modules/minimatch/dist/commonjs/index.js +1121 -0
  214. package/dist/node_modules/minimatch/dist/commonjs/package.json +3 -0
  215. package/dist/node_modules/minimatch/dist/commonjs/unescape.js +38 -0
  216. package/dist/node_modules/minimatch/dist/esm/assert-valid-pattern.js +10 -0
  217. package/dist/node_modules/minimatch/dist/esm/ast.js +842 -0
  218. package/dist/node_modules/minimatch/dist/esm/brace-expressions.js +146 -0
  219. package/dist/node_modules/minimatch/dist/esm/escape.js +26 -0
  220. package/dist/node_modules/minimatch/dist/esm/index.js +1108 -0
  221. package/dist/node_modules/minimatch/dist/esm/package.json +3 -0
  222. package/dist/node_modules/minimatch/dist/esm/unescape.js +34 -0
  223. package/dist/node_modules/minimatch/package.json +67 -0
  224. package/dist/node_modules/minipass/dist/commonjs/index.js +1038 -0
  225. package/dist/node_modules/minipass/dist/commonjs/package.json +3 -0
  226. package/dist/node_modules/minipass/dist/esm/index.js +1020 -0
  227. package/dist/node_modules/minipass/dist/esm/package.json +3 -0
  228. package/dist/node_modules/minipass/package.json +77 -0
  229. package/dist/node_modules/minipass-collect/LICENSE +15 -0
  230. package/dist/node_modules/minipass-collect/index.js +71 -0
  231. package/dist/node_modules/minipass-collect/package.json +30 -0
  232. package/dist/node_modules/minipass-fetch/LICENSE +28 -0
  233. package/dist/node_modules/minipass-fetch/lib/abort-error.js +17 -0
  234. package/dist/node_modules/minipass-fetch/lib/blob.js +97 -0
  235. package/dist/node_modules/minipass-fetch/lib/body.js +360 -0
  236. package/dist/node_modules/minipass-fetch/lib/fetch-error.js +32 -0
  237. package/dist/node_modules/minipass-fetch/lib/headers.js +267 -0
  238. package/dist/node_modules/minipass-fetch/lib/index.js +376 -0
  239. package/dist/node_modules/minipass-fetch/lib/request.js +282 -0
  240. package/dist/node_modules/minipass-fetch/lib/response.js +90 -0
  241. package/dist/node_modules/minipass-fetch/package.json +70 -0
  242. package/dist/node_modules/minipass-flush/LICENSE +15 -0
  243. package/dist/node_modules/minipass-flush/index.js +39 -0
  244. package/dist/node_modules/minipass-flush/node_modules/minipass/LICENSE +15 -0
  245. package/dist/node_modules/minipass-flush/node_modules/minipass/index.js +649 -0
  246. package/dist/node_modules/minipass-flush/node_modules/minipass/package.json +56 -0
  247. package/dist/node_modules/minipass-flush/package.json +39 -0
  248. package/dist/node_modules/minipass-pipeline/LICENSE +15 -0
  249. package/dist/node_modules/minipass-pipeline/index.js +128 -0
  250. package/dist/node_modules/minipass-pipeline/node_modules/minipass/LICENSE +15 -0
  251. package/dist/node_modules/minipass-pipeline/node_modules/minipass/index.js +649 -0
  252. package/dist/node_modules/minipass-pipeline/node_modules/minipass/package.json +56 -0
  253. package/dist/node_modules/minipass-pipeline/package.json +29 -0
  254. package/dist/node_modules/minipass-sized/LICENSE +15 -0
  255. package/dist/node_modules/minipass-sized/dist/commonjs/index.js +69 -0
  256. package/dist/node_modules/minipass-sized/dist/commonjs/package.json +3 -0
  257. package/dist/node_modules/minipass-sized/dist/esm/index.js +64 -0
  258. package/dist/node_modules/minipass-sized/dist/esm/package.json +3 -0
  259. package/dist/node_modules/minipass-sized/package.json +69 -0
  260. package/dist/node_modules/minizlib/LICENSE +26 -0
  261. package/dist/node_modules/minizlib/dist/commonjs/constants.js +123 -0
  262. package/dist/node_modules/minizlib/dist/commonjs/index.js +416 -0
  263. package/dist/node_modules/minizlib/dist/commonjs/package.json +3 -0
  264. package/dist/node_modules/minizlib/dist/esm/constants.js +117 -0
  265. package/dist/node_modules/minizlib/dist/esm/index.js +363 -0
  266. package/dist/node_modules/minizlib/dist/esm/package.json +3 -0
  267. package/dist/node_modules/minizlib/package.json +80 -0
  268. package/dist/node_modules/ms/index.js +162 -0
  269. package/dist/node_modules/ms/package.json +38 -0
  270. package/dist/node_modules/negotiator/LICENSE +24 -0
  271. package/dist/node_modules/negotiator/index.js +83 -0
  272. package/dist/node_modules/negotiator/lib/charset.js +169 -0
  273. package/dist/node_modules/negotiator/lib/encoding.js +205 -0
  274. package/dist/node_modules/negotiator/lib/language.js +179 -0
  275. package/dist/node_modules/negotiator/lib/mediaType.js +294 -0
  276. package/dist/node_modules/negotiator/package.json +43 -0
  277. package/dist/node_modules/node-gyp/.release-please-manifest.json +3 -0
  278. package/dist/node_modules/node-gyp/LICENSE +24 -0
  279. package/dist/node_modules/node-gyp/addon.gypi +204 -0
  280. package/dist/node_modules/node-gyp/bin/node-gyp.js +145 -0
  281. package/dist/node_modules/node-gyp/eslint.config.js +3 -0
  282. package/dist/node_modules/node-gyp/gyp/.release-please-manifest.json +3 -0
  283. package/dist/node_modules/node-gyp/gyp/LICENSE +28 -0
  284. package/dist/node_modules/node-gyp/gyp/data/ninja/build.ninja +4 -0
  285. package/dist/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +12 -0
  286. package/dist/node_modules/node-gyp/gyp/gyp +8 -0
  287. package/dist/node_modules/node-gyp/gyp/gyp.bat +5 -0
  288. package/dist/node_modules/node-gyp/gyp/gyp_main.py +45 -0
  289. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +365 -0
  290. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +206 -0
  291. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +1283 -0
  292. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +1545 -0
  293. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +59 -0
  294. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +152 -0
  295. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +270 -0
  296. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +599 -0
  297. package/dist/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +707 -0
  298. package/dist/node_modules/node-gyp/gyp/pylib/gyp/common.py +725 -0
  299. package/dist/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +186 -0
  300. package/dist/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +170 -0
  301. package/dist/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +113 -0
  302. package/dist/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +55 -0
  303. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  304. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +805 -0
  305. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +1169 -0
  306. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +1316 -0
  307. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +128 -0
  308. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +104 -0
  309. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +461 -0
  310. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +88 -0
  311. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +55 -0
  312. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +2755 -0
  313. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +3970 -0
  314. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +44 -0
  315. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2956 -0
  316. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +67 -0
  317. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +1389 -0
  318. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +26 -0
  319. package/dist/node_modules/node-gyp/gyp/pylib/gyp/input.py +3097 -0
  320. package/dist/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +99 -0
  321. package/dist/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +765 -0
  322. package/dist/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +1255 -0
  323. package/dist/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +174 -0
  324. package/dist/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +61 -0
  325. package/dist/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +371 -0
  326. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +1936 -0
  327. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +54 -0
  328. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +301 -0
  329. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +3180 -0
  330. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +64 -0
  331. package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +3 -0
  332. package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +177 -0
  333. package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +23 -0
  334. package/dist/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +15 -0
  335. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +107 -0
  336. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +252 -0
  337. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +83 -0
  338. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +359 -0
  339. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +61 -0
  340. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +192 -0
  341. package/dist/node_modules/node-gyp/gyp/pylib/packaging/markers.py +251 -0
  342. package/dist/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +824 -0
  343. package/dist/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  344. package/dist/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +90 -0
  345. package/dist/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +1030 -0
  346. package/dist/node_modules/node-gyp/gyp/pylib/packaging/tags.py +553 -0
  347. package/dist/node_modules/node-gyp/gyp/pylib/packaging/utils.py +172 -0
  348. package/dist/node_modules/node-gyp/gyp/pylib/packaging/version.py +563 -0
  349. package/dist/node_modules/node-gyp/gyp/pyproject.toml +114 -0
  350. package/dist/node_modules/node-gyp/gyp/release-please-config.json +11 -0
  351. package/dist/node_modules/node-gyp/gyp/test_gyp.py +260 -0
  352. package/dist/node_modules/node-gyp/lib/Find-VisualStudio.cs +250 -0
  353. package/dist/node_modules/node-gyp/lib/build.js +230 -0
  354. package/dist/node_modules/node-gyp/lib/clean.js +15 -0
  355. package/dist/node_modules/node-gyp/lib/configure.js +328 -0
  356. package/dist/node_modules/node-gyp/lib/create-config-gypi.js +153 -0
  357. package/dist/node_modules/node-gyp/lib/download.js +39 -0
  358. package/dist/node_modules/node-gyp/lib/find-node-directory.js +63 -0
  359. package/dist/node_modules/node-gyp/lib/find-python.js +304 -0
  360. package/dist/node_modules/node-gyp/lib/find-visualstudio.js +606 -0
  361. package/dist/node_modules/node-gyp/lib/install.js +411 -0
  362. package/dist/node_modules/node-gyp/lib/list.js +26 -0
  363. package/dist/node_modules/node-gyp/lib/log.js +168 -0
  364. package/dist/node_modules/node-gyp/lib/node-gyp.js +199 -0
  365. package/dist/node_modules/node-gyp/lib/process-release.js +146 -0
  366. package/dist/node_modules/node-gyp/lib/rebuild.js +12 -0
  367. package/dist/node_modules/node-gyp/lib/remove.js +43 -0
  368. package/dist/node_modules/node-gyp/lib/util.js +81 -0
  369. package/dist/node_modules/node-gyp/macOS_Catalina_acid_test.sh +21 -0
  370. package/dist/node_modules/node-gyp/package.json +52 -0
  371. package/dist/node_modules/node-gyp/release-please-config.json +40 -0
  372. package/dist/node_modules/node-gyp/src/win_delay_load_hook.cc +41 -0
  373. package/dist/node_modules/nopt/LICENSE +15 -0
  374. package/dist/node_modules/nopt/bin/nopt.js +29 -0
  375. package/dist/node_modules/nopt/lib/debug.js +5 -0
  376. package/dist/node_modules/nopt/lib/nopt-lib.js +514 -0
  377. package/dist/node_modules/nopt/lib/nopt.js +34 -0
  378. package/dist/node_modules/nopt/lib/type-defs.js +91 -0
  379. package/dist/node_modules/nopt/package.json +52 -0
  380. package/dist/node_modules/p-map/index.js +283 -0
  381. package/dist/node_modules/p-map/license +9 -0
  382. package/dist/node_modules/p-map/package.json +57 -0
  383. package/dist/node_modules/path-scurry/dist/commonjs/index.js +2018 -0
  384. package/dist/node_modules/path-scurry/dist/commonjs/package.json +3 -0
  385. package/dist/node_modules/path-scurry/dist/esm/index.js +1983 -0
  386. package/dist/node_modules/path-scurry/dist/esm/package.json +3 -0
  387. package/dist/node_modules/path-scurry/package.json +72 -0
  388. package/dist/node_modules/picomatch/LICENSE +21 -0
  389. package/dist/node_modules/picomatch/index.js +17 -0
  390. package/dist/node_modules/picomatch/lib/constants.js +184 -0
  391. package/dist/node_modules/picomatch/lib/parse.js +1386 -0
  392. package/dist/node_modules/picomatch/lib/picomatch.js +349 -0
  393. package/dist/node_modules/picomatch/lib/scan.js +391 -0
  394. package/dist/node_modules/picomatch/lib/utils.js +72 -0
  395. package/dist/node_modules/picomatch/package.json +82 -0
  396. package/dist/node_modules/picomatch/posix.js +3 -0
  397. package/dist/node_modules/proc-log/LICENSE +15 -0
  398. package/dist/node_modules/proc-log/lib/index.js +158 -0
  399. package/dist/node_modules/proc-log/package.json +46 -0
  400. package/dist/node_modules/safer-buffer/LICENSE +21 -0
  401. package/dist/node_modules/safer-buffer/dangerous.js +58 -0
  402. package/dist/node_modules/safer-buffer/package.json +34 -0
  403. package/dist/node_modules/safer-buffer/safer.js +77 -0
  404. package/dist/node_modules/safer-buffer/tests.js +406 -0
  405. package/dist/node_modules/semver/LICENSE +15 -0
  406. package/dist/node_modules/semver/bin/semver.js +191 -0
  407. package/dist/node_modules/semver/classes/comparator.js +143 -0
  408. package/dist/node_modules/semver/classes/index.js +7 -0
  409. package/dist/node_modules/semver/classes/range.js +557 -0
  410. package/dist/node_modules/semver/classes/semver.js +333 -0
  411. package/dist/node_modules/semver/functions/clean.js +8 -0
  412. package/dist/node_modules/semver/functions/cmp.js +54 -0
  413. package/dist/node_modules/semver/functions/coerce.js +62 -0
  414. package/dist/node_modules/semver/functions/compare-build.js +9 -0
  415. package/dist/node_modules/semver/functions/compare-loose.js +5 -0
  416. package/dist/node_modules/semver/functions/compare.js +7 -0
  417. package/dist/node_modules/semver/functions/diff.js +60 -0
  418. package/dist/node_modules/semver/functions/eq.js +5 -0
  419. package/dist/node_modules/semver/functions/gt.js +5 -0
  420. package/dist/node_modules/semver/functions/gte.js +5 -0
  421. package/dist/node_modules/semver/functions/inc.js +21 -0
  422. package/dist/node_modules/semver/functions/lt.js +5 -0
  423. package/dist/node_modules/semver/functions/lte.js +5 -0
  424. package/dist/node_modules/semver/functions/major.js +5 -0
  425. package/dist/node_modules/semver/functions/minor.js +5 -0
  426. package/dist/node_modules/semver/functions/neq.js +5 -0
  427. package/dist/node_modules/semver/functions/parse.js +18 -0
  428. package/dist/node_modules/semver/functions/patch.js +5 -0
  429. package/dist/node_modules/semver/functions/prerelease.js +8 -0
  430. package/dist/node_modules/semver/functions/rcompare.js +5 -0
  431. package/dist/node_modules/semver/functions/rsort.js +5 -0
  432. package/dist/node_modules/semver/functions/satisfies.js +12 -0
  433. package/dist/node_modules/semver/functions/sort.js +5 -0
  434. package/dist/node_modules/semver/functions/valid.js +8 -0
  435. package/dist/node_modules/semver/index.js +91 -0
  436. package/dist/node_modules/semver/internal/constants.js +37 -0
  437. package/dist/node_modules/semver/internal/debug.js +11 -0
  438. package/dist/node_modules/semver/internal/identifiers.js +29 -0
  439. package/dist/node_modules/semver/internal/lrucache.js +42 -0
  440. package/dist/node_modules/semver/internal/parse-options.js +17 -0
  441. package/dist/node_modules/semver/internal/re.js +223 -0
  442. package/dist/node_modules/semver/package.json +78 -0
  443. package/dist/node_modules/semver/preload.js +4 -0
  444. package/dist/node_modules/semver/range.bnf +16 -0
  445. package/dist/node_modules/semver/ranges/gtr.js +6 -0
  446. package/dist/node_modules/semver/ranges/intersects.js +9 -0
  447. package/dist/node_modules/semver/ranges/ltr.js +6 -0
  448. package/dist/node_modules/semver/ranges/max-satisfying.js +27 -0
  449. package/dist/node_modules/semver/ranges/min-satisfying.js +26 -0
  450. package/dist/node_modules/semver/ranges/min-version.js +63 -0
  451. package/dist/node_modules/semver/ranges/outside.js +82 -0
  452. package/dist/node_modules/semver/ranges/simplify.js +49 -0
  453. package/dist/node_modules/semver/ranges/subset.js +249 -0
  454. package/dist/node_modules/semver/ranges/to-comparators.js +10 -0
  455. package/dist/node_modules/semver/ranges/valid.js +13 -0
  456. package/dist/node_modules/smart-buffer/.prettierrc.yaml +5 -0
  457. package/dist/node_modules/smart-buffer/LICENSE +20 -0
  458. package/dist/node_modules/smart-buffer/build/smartbuffer.js +1233 -0
  459. package/dist/node_modules/smart-buffer/build/utils.js +108 -0
  460. package/dist/node_modules/smart-buffer/package.json +79 -0
  461. package/dist/node_modules/socks/.eslintrc.cjs +11 -0
  462. package/dist/node_modules/socks/.prettierrc.yaml +7 -0
  463. package/dist/node_modules/socks/LICENSE +20 -0
  464. package/dist/node_modules/socks/build/client/socksclient.js +793 -0
  465. package/dist/node_modules/socks/build/common/constants.js +108 -0
  466. package/dist/node_modules/socks/build/common/helpers.js +167 -0
  467. package/dist/node_modules/socks/build/common/receivebuffer.js +43 -0
  468. package/dist/node_modules/socks/build/common/util.js +25 -0
  469. package/dist/node_modules/socks/build/index.js +18 -0
  470. package/dist/node_modules/socks/package.json +58 -0
  471. package/dist/node_modules/socks-proxy-agent/LICENSE +22 -0
  472. package/dist/node_modules/socks-proxy-agent/dist/index.js +195 -0
  473. package/dist/node_modules/socks-proxy-agent/package.json +142 -0
  474. package/dist/node_modules/ssri/lib/index.js +550 -0
  475. package/dist/node_modules/ssri/package.json +66 -0
  476. package/dist/node_modules/tar/dist/commonjs/create.js +82 -0
  477. package/dist/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
  478. package/dist/node_modules/tar/dist/commonjs/extract.js +88 -0
  479. package/dist/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
  480. package/dist/node_modules/tar/dist/commonjs/header.js +312 -0
  481. package/dist/node_modules/tar/dist/commonjs/index.js +64 -0
  482. package/dist/node_modules/tar/dist/commonjs/index.min.js +4 -0
  483. package/dist/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
  484. package/dist/node_modules/tar/dist/commonjs/list.js +145 -0
  485. package/dist/node_modules/tar/dist/commonjs/make-command.js +52 -0
  486. package/dist/node_modules/tar/dist/commonjs/mkdir.js +187 -0
  487. package/dist/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
  488. package/dist/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
  489. package/dist/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
  490. package/dist/node_modules/tar/dist/commonjs/options.js +66 -0
  491. package/dist/node_modules/tar/dist/commonjs/pack.js +511 -0
  492. package/dist/node_modules/tar/dist/commonjs/package.json +3 -0
  493. package/dist/node_modules/tar/dist/commonjs/parse.js +610 -0
  494. package/dist/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
  495. package/dist/node_modules/tar/dist/commonjs/pax.js +158 -0
  496. package/dist/node_modules/tar/dist/commonjs/process-umask.js +7 -0
  497. package/dist/node_modules/tar/dist/commonjs/read-entry.js +136 -0
  498. package/dist/node_modules/tar/dist/commonjs/replace.js +227 -0
  499. package/dist/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
  500. package/dist/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
  501. package/dist/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
  502. package/dist/node_modules/tar/dist/commonjs/types.js +50 -0
  503. package/dist/node_modules/tar/dist/commonjs/unpack.js +932 -0
  504. package/dist/node_modules/tar/dist/commonjs/update.js +33 -0
  505. package/dist/node_modules/tar/dist/commonjs/warn-method.js +31 -0
  506. package/dist/node_modules/tar/dist/commonjs/winchars.js +14 -0
  507. package/dist/node_modules/tar/dist/commonjs/write-entry.js +698 -0
  508. package/dist/node_modules/tar/dist/esm/create.js +76 -0
  509. package/dist/node_modules/tar/dist/esm/cwd-error.js +14 -0
  510. package/dist/node_modules/tar/dist/esm/extract.js +49 -0
  511. package/dist/node_modules/tar/dist/esm/get-write-flag.js +26 -0
  512. package/dist/node_modules/tar/dist/esm/header.js +275 -0
  513. package/dist/node_modules/tar/dist/esm/index.js +20 -0
  514. package/dist/node_modules/tar/dist/esm/index.min.js +4 -0
  515. package/dist/node_modules/tar/dist/esm/large-numbers.js +94 -0
  516. package/dist/node_modules/tar/dist/esm/list.js +105 -0
  517. package/dist/node_modules/tar/dist/esm/make-command.js +48 -0
  518. package/dist/node_modules/tar/dist/esm/mkdir.js +179 -0
  519. package/dist/node_modules/tar/dist/esm/mode-fix.js +25 -0
  520. package/dist/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
  521. package/dist/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
  522. package/dist/node_modules/tar/dist/esm/options.js +54 -0
  523. package/dist/node_modules/tar/dist/esm/pack.js +469 -0
  524. package/dist/node_modules/tar/dist/esm/package.json +3 -0
  525. package/dist/node_modules/tar/dist/esm/parse.js +606 -0
  526. package/dist/node_modules/tar/dist/esm/path-reservations.js +166 -0
  527. package/dist/node_modules/tar/dist/esm/pax.js +154 -0
  528. package/dist/node_modules/tar/dist/esm/process-umask.js +3 -0
  529. package/dist/node_modules/tar/dist/esm/read-entry.js +132 -0
  530. package/dist/node_modules/tar/dist/esm/replace.js +221 -0
  531. package/dist/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
  532. package/dist/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
  533. package/dist/node_modules/tar/dist/esm/symlink-error.js +15 -0
  534. package/dist/node_modules/tar/dist/esm/types.js +45 -0
  535. package/dist/node_modules/tar/dist/esm/unpack.js +891 -0
  536. package/dist/node_modules/tar/dist/esm/update.js +30 -0
  537. package/dist/node_modules/tar/dist/esm/warn-method.js +27 -0
  538. package/dist/node_modules/tar/dist/esm/winchars.js +9 -0
  539. package/dist/node_modules/tar/dist/esm/write-entry.js +656 -0
  540. package/dist/node_modules/tar/node_modules/yallist/dist/commonjs/index.js +384 -0
  541. package/dist/node_modules/tar/node_modules/yallist/dist/commonjs/package.json +3 -0
  542. package/dist/node_modules/tar/node_modules/yallist/dist/esm/index.js +379 -0
  543. package/dist/node_modules/tar/node_modules/yallist/dist/esm/package.json +3 -0
  544. package/dist/node_modules/tar/node_modules/yallist/package.json +68 -0
  545. package/dist/node_modules/tar/package.json +297 -0
  546. package/dist/node_modules/tinyglobby/LICENSE +21 -0
  547. package/dist/node_modules/tinyglobby/dist/index.cjs +350 -0
  548. package/dist/node_modules/tinyglobby/dist/index.d.cts +147 -0
  549. package/dist/node_modules/tinyglobby/dist/index.d.mts +147 -0
  550. package/dist/node_modules/tinyglobby/dist/index.mjs +318 -0
  551. package/dist/node_modules/tinyglobby/package.json +73 -0
  552. package/{LICENSE → dist/node_modules/v8-compile-cache/LICENSE} +1 -2
  553. package/dist/node_modules/v8-compile-cache/package.json +34 -0
  554. package/dist/node_modules/v8-compile-cache/v8-compile-cache.js +373 -0
  555. package/dist/node_modules/which/LICENSE +15 -0
  556. package/dist/node_modules/which/bin/which.js +52 -0
  557. package/dist/node_modules/which/lib/index.js +111 -0
  558. package/dist/node_modules/which/package.json +52 -0
  559. package/dist/node_modules/yallist/LICENSE +15 -0
  560. package/dist/node_modules/yallist/iterator.js +8 -0
  561. package/dist/node_modules/yallist/package.json +29 -0
  562. package/dist/node_modules/yallist/yallist.js +426 -0
  563. package/dist/pnpm.mjs +266382 -0
  564. package/dist/pnpmrc +2 -0
  565. package/dist/templates/completion.bash +31 -0
  566. package/dist/templates/completion.fish +22 -0
  567. package/dist/templates/completion.ps1 +193 -0
  568. package/dist/templates/completion.zsh +27 -0
  569. package/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
  570. package/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
  571. package/dist/worker.js +10958 -0
  572. package/package.json +34 -12
  573. package/pn +2 -0
  574. package/pn.cmd +2 -0
  575. package/pn.ps1 +1 -0
  576. package/pnpx +2 -0
  577. package/pnpx.cmd +2 -0
  578. package/pnpx.ps1 +1 -0
  579. package/pnx +2 -0
  580. package/pnx.cmd +2 -0
  581. package/pnx.ps1 +1 -0
  582. package/prepare.js +26 -3
  583. package/setup.js +22 -11
  584. package/CHANGELOG.md +0 -15
@@ -0,0 +1,49 @@
1
+ const { NotCachedError } = require('./errors.js')
2
+ const CacheEntry = require('./entry.js')
3
+ const remote = require('../remote.js')
4
+
5
+ // do whatever is necessary to get a Response and return it
6
+ const cacheFetch = async (request, options) => {
7
+ // try to find a cached entry that satisfies this request
8
+ const entry = await CacheEntry.find(request, options)
9
+ if (!entry) {
10
+ // no cached result, if the cache mode is 'only-if-cached' that's a failure
11
+ if (options.cache === 'only-if-cached') {
12
+ throw new NotCachedError(request.url)
13
+ }
14
+
15
+ // otherwise, we make a request, store it and return it
16
+ const response = await remote(request, options)
17
+ const newEntry = new CacheEntry({ request, response, options })
18
+ return newEntry.store('miss')
19
+ }
20
+
21
+ // we have a cached response that satisfies this request, however if the cache
22
+ // mode is 'no-cache' then we send the revalidation request no matter what
23
+ if (options.cache === 'no-cache') {
24
+ return entry.revalidate(request, options)
25
+ }
26
+
27
+ // if the cached entry is not stale, or if the cache mode is 'force-cache' or
28
+ // 'only-if-cached' we can respond with the cached entry. set the status
29
+ // based on the result of needsRevalidation and respond
30
+ const _needsRevalidation = entry.policy.needsRevalidation(request)
31
+ if (options.cache === 'force-cache' ||
32
+ options.cache === 'only-if-cached' ||
33
+ !_needsRevalidation) {
34
+ return entry.respond(request.method, options, _needsRevalidation ? 'stale' : 'hit')
35
+ }
36
+
37
+ // if we got here, the cache entry is stale so revalidate it
38
+ return entry.revalidate(request, options)
39
+ }
40
+
41
+ cacheFetch.invalidate = async (request, options) => {
42
+ if (!options.cachePath) {
43
+ return
44
+ }
45
+
46
+ return CacheEntry.invalidate(request, options)
47
+ }
48
+
49
+ module.exports = cacheFetch
@@ -0,0 +1,17 @@
1
+ const { URL, format } = require('url')
2
+
3
+ // options passed to url.format() when generating a key
4
+ const formatOptions = {
5
+ auth: false,
6
+ fragment: false,
7
+ search: true,
8
+ unicode: false,
9
+ }
10
+
11
+ // returns a string to be used as the cache key for the Request
12
+ const cacheKey = (request) => {
13
+ const parsed = new URL(request.url)
14
+ return `make-fetch-happen:request-cache:${format(parsed, formatOptions)}`
15
+ }
16
+
17
+ module.exports = cacheKey
@@ -0,0 +1,161 @@
1
+ const CacheSemantics = require('http-cache-semantics')
2
+ const Negotiator = require('negotiator')
3
+ const ssri = require('ssri')
4
+
5
+ // options passed to http-cache-semantics constructor
6
+ const policyOptions = {
7
+ shared: false,
8
+ ignoreCargoCult: true,
9
+ }
10
+
11
+ // a fake empty response, used when only testing the
12
+ // request for storability
13
+ const emptyResponse = { status: 200, headers: {} }
14
+
15
+ // returns a plain object representation of the Request
16
+ const requestObject = (request) => {
17
+ const _obj = {
18
+ method: request.method,
19
+ url: request.url,
20
+ headers: {},
21
+ compress: request.compress,
22
+ }
23
+
24
+ request.headers.forEach((value, key) => {
25
+ _obj.headers[key] = value
26
+ })
27
+
28
+ return _obj
29
+ }
30
+
31
+ // returns a plain object representation of the Response
32
+ const responseObject = (response) => {
33
+ const _obj = {
34
+ status: response.status,
35
+ headers: {},
36
+ }
37
+
38
+ response.headers.forEach((value, key) => {
39
+ _obj.headers[key] = value
40
+ })
41
+
42
+ return _obj
43
+ }
44
+
45
+ class CachePolicy {
46
+ constructor ({ entry, request, response, options }) {
47
+ this.entry = entry
48
+ this.request = requestObject(request)
49
+ this.response = responseObject(response)
50
+ this.options = options
51
+ this.policy = new CacheSemantics(this.request, this.response, policyOptions)
52
+
53
+ if (this.entry) {
54
+ // if we have an entry, copy the timestamp to the _responseTime
55
+ // this is necessary because the CacheSemantics constructor forces
56
+ // the value to Date.now() which means a policy created from a
57
+ // cache entry is likely to always identify itself as stale
58
+ this.policy._responseTime = this.entry.metadata.time
59
+ }
60
+ }
61
+
62
+ // static method to quickly determine if a request alone is storable
63
+ static storable (request, options) {
64
+ // no cachePath means no caching
65
+ if (!options.cachePath) {
66
+ return false
67
+ }
68
+
69
+ // user explicitly asked not to cache
70
+ if (options.cache === 'no-store') {
71
+ return false
72
+ }
73
+
74
+ // we only cache GET and HEAD requests
75
+ if (!['GET', 'HEAD'].includes(request.method)) {
76
+ return false
77
+ }
78
+
79
+ // otherwise, let http-cache-semantics make the decision
80
+ // based on the request's headers
81
+ const policy = new CacheSemantics(requestObject(request), emptyResponse, policyOptions)
82
+ return policy.storable()
83
+ }
84
+
85
+ // returns true if the policy satisfies the request
86
+ satisfies (request) {
87
+ const _req = requestObject(request)
88
+ if (this.request.headers.host !== _req.headers.host) {
89
+ return false
90
+ }
91
+
92
+ if (this.request.compress !== _req.compress) {
93
+ return false
94
+ }
95
+
96
+ const negotiatorA = new Negotiator(this.request)
97
+ const negotiatorB = new Negotiator(_req)
98
+
99
+ if (JSON.stringify(negotiatorA.mediaTypes()) !== JSON.stringify(negotiatorB.mediaTypes())) {
100
+ return false
101
+ }
102
+
103
+ if (JSON.stringify(negotiatorA.languages()) !== JSON.stringify(negotiatorB.languages())) {
104
+ return false
105
+ }
106
+
107
+ if (JSON.stringify(negotiatorA.encodings()) !== JSON.stringify(negotiatorB.encodings())) {
108
+ return false
109
+ }
110
+
111
+ if (this.options.integrity) {
112
+ return ssri.parse(this.options.integrity).match(this.entry.integrity)
113
+ }
114
+
115
+ return true
116
+ }
117
+
118
+ // returns true if the request and response allow caching
119
+ storable () {
120
+ return this.policy.storable()
121
+ }
122
+
123
+ // NOTE: this is a hack to avoid parsing the cache-control
124
+ // header ourselves, it returns true if the response's
125
+ // cache-control contains must-revalidate
126
+ get mustRevalidate () {
127
+ return !!this.policy._rescc['must-revalidate']
128
+ }
129
+
130
+ // returns true if the cached response requires revalidation
131
+ // for the given request
132
+ needsRevalidation (request) {
133
+ const _req = requestObject(request)
134
+ // force method to GET because we only cache GETs
135
+ // but can serve a HEAD from a cached GET
136
+ _req.method = 'GET'
137
+ return !this.policy.satisfiesWithoutRevalidation(_req)
138
+ }
139
+
140
+ responseHeaders () {
141
+ return this.policy.responseHeaders()
142
+ }
143
+
144
+ // returns a new object containing the appropriate headers
145
+ // to send a revalidation request
146
+ revalidationHeaders (request) {
147
+ const _req = requestObject(request)
148
+ return this.policy.revalidationHeaders(_req)
149
+ }
150
+
151
+ // returns true if the request/response was revalidated
152
+ // successfully. returns false if a new response was received
153
+ revalidated (request, response) {
154
+ const _req = requestObject(request)
155
+ const _res = responseObject(response)
156
+ const policy = this.policy.revalidatedPolicy(_req, _res)
157
+ return !policy.modified
158
+ }
159
+ }
160
+
161
+ module.exports = CachePolicy
@@ -0,0 +1,118 @@
1
+ 'use strict'
2
+
3
+ const { FetchError, Request, isRedirect } = require('minipass-fetch')
4
+ const url = require('url')
5
+
6
+ const CachePolicy = require('./cache/policy.js')
7
+ const cache = require('./cache/index.js')
8
+ const remote = require('./remote.js')
9
+
10
+ // given a Request, a Response and user options
11
+ // return true if the response is a redirect that
12
+ // can be followed. we throw errors that will result
13
+ // in the fetch being rejected if the redirect is
14
+ // possible but invalid for some reason
15
+ const canFollowRedirect = (request, response, options) => {
16
+ if (!isRedirect(response.status)) {
17
+ return false
18
+ }
19
+
20
+ if (options.redirect === 'manual') {
21
+ return false
22
+ }
23
+
24
+ if (options.redirect === 'error') {
25
+ throw new FetchError(`redirect mode is set to error: ${request.url}`,
26
+ 'no-redirect', { code: 'ENOREDIRECT' })
27
+ }
28
+
29
+ if (!response.headers.has('location')) {
30
+ throw new FetchError(`redirect location header missing for: ${request.url}`,
31
+ 'no-location', { code: 'EINVALIDREDIRECT' })
32
+ }
33
+
34
+ if (request.counter >= request.follow) {
35
+ throw new FetchError(`maximum redirect reached at: ${request.url}`,
36
+ 'max-redirect', { code: 'EMAXREDIRECT' })
37
+ }
38
+
39
+ return true
40
+ }
41
+
42
+ // given a Request, a Response, and the user's options return an object
43
+ // with a new Request and a new options object that will be used for
44
+ // following the redirect
45
+ const getRedirect = (request, response, options) => {
46
+ const _opts = { ...options }
47
+ const location = response.headers.get('location')
48
+ const redirectUrl = new url.URL(location, /^https?:/.test(location) ? undefined : request.url)
49
+ // Comment below is used under the following license:
50
+ /**
51
+ * @license
52
+ * Copyright (c) 2010-2012 Mikeal Rogers
53
+ * Licensed under the Apache License, Version 2.0 (the "License");
54
+ * you may not use this file except in compliance with the License.
55
+ * You may obtain a copy of the License at
56
+ * http://www.apache.org/licenses/LICENSE-2.0
57
+ * Unless required by applicable law or agreed to in writing,
58
+ * software distributed under the License is distributed on an "AS
59
+ * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
60
+ * express or implied. See the License for the specific language
61
+ * governing permissions and limitations under the License.
62
+ */
63
+
64
+ // Remove authorization if changing hostnames (but not if just
65
+ // changing ports or protocols). This matches the behavior of request:
66
+ // https://github.com/request/request/blob/b12a6245/lib/redirect.js#L134-L138
67
+ if (new url.URL(request.url).hostname !== redirectUrl.hostname) {
68
+ request.headers.delete('authorization')
69
+ request.headers.delete('cookie')
70
+ }
71
+
72
+ // for POST request with 301/302 response, or any request with 303 response,
73
+ // use GET when following redirect
74
+ if (
75
+ response.status === 303 ||
76
+ (request.method === 'POST' && [301, 302].includes(response.status))
77
+ ) {
78
+ _opts.method = 'GET'
79
+ _opts.body = null
80
+ request.headers.delete('content-length')
81
+ }
82
+
83
+ _opts.headers = {}
84
+ request.headers.forEach((value, key) => {
85
+ _opts.headers[key] = value
86
+ })
87
+
88
+ _opts.counter = ++request.counter
89
+ const redirectReq = new Request(url.format(redirectUrl), _opts)
90
+ return {
91
+ request: redirectReq,
92
+ options: _opts,
93
+ }
94
+ }
95
+
96
+ const fetch = async (request, options) => {
97
+ const response = CachePolicy.storable(request, options)
98
+ ? await cache(request, options)
99
+ : await remote(request, options)
100
+
101
+ // if the request wasn't a GET or HEAD, and the response
102
+ // status is between 200 and 399 inclusive, invalidate the
103
+ // request url
104
+ if (!['GET', 'HEAD'].includes(request.method) &&
105
+ response.status >= 200 &&
106
+ response.status <= 399) {
107
+ await cache.invalidate(request, options)
108
+ }
109
+
110
+ if (!canFollowRedirect(request, response, options)) {
111
+ return response
112
+ }
113
+
114
+ const redirect = getRedirect(request, response, options)
115
+ return fetch(redirect.request, redirect.options)
116
+ }
117
+
118
+ module.exports = fetch
@@ -0,0 +1,41 @@
1
+ const { FetchError, Headers, Request, Response } = require('minipass-fetch')
2
+
3
+ const configureOptions = require('./options.js')
4
+ const fetch = require('./fetch.js')
5
+
6
+ const makeFetchHappen = (url, opts) => {
7
+ const options = configureOptions(opts)
8
+
9
+ const request = new Request(url, options)
10
+ return fetch(request, options)
11
+ }
12
+
13
+ makeFetchHappen.defaults = (defaultUrl, defaultOptions = {}, wrappedFetch = makeFetchHappen) => {
14
+ if (typeof defaultUrl === 'object') {
15
+ defaultOptions = defaultUrl
16
+ defaultUrl = null
17
+ }
18
+
19
+ const defaultedFetch = (url, options = {}) => {
20
+ const finalUrl = url || defaultUrl
21
+ const finalOptions = {
22
+ ...defaultOptions,
23
+ ...options,
24
+ headers: {
25
+ ...defaultOptions.headers,
26
+ ...options.headers,
27
+ },
28
+ }
29
+ return wrappedFetch(finalUrl, finalOptions)
30
+ }
31
+
32
+ defaultedFetch.defaults = (defaultUrl1, defaultOptions1 = {}) =>
33
+ makeFetchHappen.defaults(defaultUrl1, defaultOptions1, defaultedFetch)
34
+ return defaultedFetch
35
+ }
36
+
37
+ module.exports = makeFetchHappen
38
+ module.exports.FetchError = FetchError
39
+ module.exports.Headers = Headers
40
+ module.exports.Request = Request
41
+ module.exports.Response = Response
@@ -0,0 +1,59 @@
1
+ const dns = require('dns')
2
+
3
+ const conditionalHeaders = [
4
+ 'if-modified-since',
5
+ 'if-none-match',
6
+ 'if-unmodified-since',
7
+ 'if-match',
8
+ 'if-range',
9
+ ]
10
+
11
+ const configureOptions = (opts) => {
12
+ const { strictSSL, ...options } = { ...opts }
13
+ options.method = options.method ? options.method.toUpperCase() : 'GET'
14
+
15
+ if (strictSSL === undefined || strictSSL === null) {
16
+ options.rejectUnauthorized = process.env.NODE_TLS_REJECT_UNAUTHORIZED !== '0'
17
+ } else {
18
+ options.rejectUnauthorized = strictSSL !== false
19
+ }
20
+
21
+ if (!options.retry) {
22
+ options.retry = { retries: 0 }
23
+ } else if (typeof options.retry === 'string') {
24
+ const retries = parseInt(options.retry, 10)
25
+ if (isFinite(retries)) {
26
+ options.retry = { retries }
27
+ } else {
28
+ options.retry = { retries: 0 }
29
+ }
30
+ } else if (typeof options.retry === 'number') {
31
+ options.retry = { retries: options.retry }
32
+ } else {
33
+ options.retry = { retries: 0, ...options.retry }
34
+ }
35
+
36
+ options.dns = { ttl: 5 * 60 * 1000, lookup: dns.lookup, ...options.dns }
37
+
38
+ options.cache = options.cache || 'default'
39
+ if (options.cache === 'default') {
40
+ const hasConditionalHeader = Object.keys(options.headers || {}).some((name) => {
41
+ return conditionalHeaders.includes(name.toLowerCase())
42
+ })
43
+ if (hasConditionalHeader) {
44
+ options.cache = 'no-store'
45
+ }
46
+ }
47
+
48
+ options.cacheAdditionalHeaders = options.cacheAdditionalHeaders || []
49
+
50
+ // cacheManager is deprecated, but if it's set and
51
+ // cachePath is not we should copy it to the new field
52
+ if (options.cacheManager && !options.cachePath) {
53
+ options.cachePath = options.cacheManager
54
+ }
55
+
56
+ return options
57
+ }
58
+
59
+ module.exports = configureOptions
@@ -0,0 +1,41 @@
1
+ 'use strict'
2
+
3
+ const MinipassPipeline = require('minipass-pipeline')
4
+
5
+ class CachingMinipassPipeline extends MinipassPipeline {
6
+ #events = []
7
+ #data = new Map()
8
+
9
+ constructor (opts, ...streams) {
10
+ // CRITICAL: do NOT pass the streams to the call to super(), this will start
11
+ // the flow of data and potentially cause the events we need to catch to emit
12
+ // before we've finished our own setup. instead we call super() with no args,
13
+ // finish our setup, and then push the streams into ourselves to start the
14
+ // data flow
15
+ super()
16
+ this.#events = opts.events
17
+
18
+ /* istanbul ignore next - coverage disabled because this is pointless to test here */
19
+ if (streams.length) {
20
+ this.push(...streams)
21
+ }
22
+ }
23
+
24
+ on (event, handler) {
25
+ if (this.#events.includes(event) && this.#data.has(event)) {
26
+ return handler(...this.#data.get(event))
27
+ }
28
+
29
+ return super.on(event, handler)
30
+ }
31
+
32
+ emit (event, ...data) {
33
+ if (this.#events.includes(event)) {
34
+ this.#data.set(event, data)
35
+ }
36
+
37
+ return super.emit(event, ...data)
38
+ }
39
+ }
40
+
41
+ module.exports = CachingMinipassPipeline
@@ -0,0 +1,134 @@
1
+ const { Minipass } = require('minipass')
2
+ const fetch = require('minipass-fetch')
3
+ const { promiseRetry } = require('@gar/promise-retry')
4
+ const ssri = require('ssri')
5
+ const { log } = require('proc-log')
6
+ const { redact: cleanUrl } = require('@npmcli/redact')
7
+
8
+ const CachingMinipassPipeline = require('./pipeline.js')
9
+ const { getAgent } = require('@npmcli/agent')
10
+ const pkg = require('../package.json')
11
+
12
+ const USER_AGENT = `${pkg.name}/${pkg.version} (+https://npm.im/${pkg.name})`
13
+
14
+ const RETRY_ERRORS = [
15
+ 'ECONNRESET', // remote socket closed on us
16
+ 'ECONNREFUSED', // remote host refused to open connection
17
+ 'EADDRINUSE', // failed to bind to a local port (proxy?)
18
+ 'ETIMEDOUT', // someone in the transaction is WAY TOO SLOW
19
+ // from @npmcli/agent
20
+ 'ECONNECTIONTIMEOUT',
21
+ 'EIDLETIMEOUT',
22
+ 'ERESPONSETIMEOUT',
23
+ 'ETRANSFERTIMEOUT',
24
+ // Known codes we do NOT retry on:
25
+ // ENOTFOUND (getaddrinfo failure. Either bad hostname, or offline)
26
+ // EINVALIDPROXY // invalid protocol from @npmcli/agent
27
+ // EINVALIDRESPONSE // invalid status code from @npmcli/agent
28
+ ]
29
+
30
+ const RETRY_TYPES = [
31
+ 'request-timeout',
32
+ ]
33
+
34
+ // make a request directly to the remote source,
35
+ // retrying certain classes of errors as well as
36
+ // following redirects (through the cache if necessary)
37
+ // and verifying response integrity
38
+ const remoteFetch = (request, options) => {
39
+ // options.signal is intended for the fetch itself, not the agent. Attaching it to the agent will re-use that signal across multiple requests, which prevents any connections beyond the first one.
40
+ const agent = getAgent(request.url, { ...options, signal: undefined })
41
+ if (!request.headers.has('connection')) {
42
+ request.headers.set('connection', agent ? 'keep-alive' : 'close')
43
+ }
44
+
45
+ if (!request.headers.has('user-agent')) {
46
+ request.headers.set('user-agent', USER_AGENT)
47
+ }
48
+
49
+ // keep our own options since we're overriding the agent
50
+ // and the redirect mode
51
+ const _opts = {
52
+ ...options,
53
+ agent,
54
+ redirect: 'manual',
55
+ }
56
+
57
+ return promiseRetry(async (retryHandler, attemptNum) => {
58
+ const req = new fetch.Request(request, _opts)
59
+ const url = cleanUrl(req.url)
60
+ try {
61
+ let res = await fetch(req, _opts)
62
+ if (_opts.integrity && res.status === 200) {
63
+ // we got a 200 response and the user has specified an expected
64
+ // integrity value, so wrap the response in an ssri stream to verify it
65
+ const integrityStream = ssri.integrityStream({
66
+ algorithms: _opts.algorithms,
67
+ integrity: _opts.integrity,
68
+ size: _opts.size,
69
+ })
70
+ const pipeline = new CachingMinipassPipeline({
71
+ events: ['integrity', 'size'],
72
+ }, res.body, integrityStream)
73
+ // we also propagate the integrity and size events out to the pipeline so we can use
74
+ // this new response body as an integrityEmitter for cacache
75
+ integrityStream.on('integrity', i => pipeline.emit('integrity', i))
76
+ integrityStream.on('size', s => pipeline.emit('size', s))
77
+ res = new fetch.Response(pipeline, res)
78
+ // set an explicit flag so we know if our response body will emit integrity and size
79
+ res.body.hasIntegrityEmitter = true
80
+ }
81
+
82
+ res.headers.set('x-fetch-attempts', attemptNum)
83
+
84
+ // do not retry POST requests, or requests with a streaming body
85
+ // do retry requests with a 408, 420, 429 or 500+ status in the response
86
+ const isStream = Minipass.isStream(req.body)
87
+ const isRetriable = req.method !== 'POST' &&
88
+ !isStream &&
89
+ ([408, 420, 429].includes(res.status) || res.status >= 500)
90
+
91
+ if (isRetriable) {
92
+ if (typeof options.onRetry === 'function') {
93
+ options.onRetry(res)
94
+ }
95
+
96
+ /* eslint-disable-next-line max-len */
97
+ log.http('fetch', `${req.method} ${url} attempt ${attemptNum} failed with ${res.status}`)
98
+ return retryHandler(res)
99
+ }
100
+
101
+ return res
102
+ } catch (err) {
103
+ const code = (err.code === 'EPROMISERETRY')
104
+ ? err.retried.code
105
+ : err.code
106
+
107
+ // err.retried will be the thing that was thrown from above
108
+ // if it's a response, we just got a bad status code and we
109
+ // can re-throw to allow the retry
110
+ const isRetryError = err.retried instanceof fetch.Response ||
111
+ (RETRY_ERRORS.includes(code) && RETRY_TYPES.includes(err.type))
112
+
113
+ if (req.method === 'POST' || isRetryError) {
114
+ throw err
115
+ }
116
+
117
+ if (typeof options.onRetry === 'function') {
118
+ options.onRetry(err)
119
+ }
120
+
121
+ log.http('fetch', `${req.method} ${url} attempt ${attemptNum} failed with ${err.code}`)
122
+ return retryHandler(err)
123
+ }
124
+ }, options.retry).catch((err) => {
125
+ // don't reject for http errors, just return them
126
+ if (err.status >= 400 && err.type !== 'system') {
127
+ return err
128
+ }
129
+
130
+ throw err
131
+ })
132
+ }
133
+
134
+ module.exports = remoteFetch