@pnpm/exe 11.0.0-dev.1005 → 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 -11
  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,206 @@
1
+ 'use strict'
2
+
3
+ const events = require('events')
4
+
5
+ const contentPath = require('./path')
6
+ const fs = require('fs/promises')
7
+ const { moveFile } = require('@npmcli/fs')
8
+ const { Minipass } = require('minipass')
9
+ const Pipeline = require('minipass-pipeline')
10
+ const Flush = require('minipass-flush')
11
+ const path = require('path')
12
+ const ssri = require('ssri')
13
+ const { tmpName } = require('../util/tmp')
14
+ const fsm = require('fs-minipass')
15
+
16
+ module.exports = write
17
+
18
+ // Cache of move operations in process so we don't duplicate
19
+ const moveOperations = new Map()
20
+
21
+ async function write (cache, data, opts = {}) {
22
+ const { algorithms, size, integrity } = opts
23
+
24
+ if (typeof size === 'number' && data.length !== size) {
25
+ throw sizeError(size, data.length)
26
+ }
27
+
28
+ const sri = ssri.fromData(data, algorithms ? { algorithms } : {})
29
+ if (integrity && !ssri.checkData(data, integrity, opts)) {
30
+ throw checksumError(integrity, sri)
31
+ }
32
+
33
+ for (const algo in sri) {
34
+ const tmp = await makeTmp(cache, opts)
35
+ const hash = sri[algo].toString()
36
+ try {
37
+ await fs.writeFile(tmp.target, data, { flag: 'wx' })
38
+ await moveToDestination(tmp, cache, hash, opts)
39
+ } finally {
40
+ if (!tmp.moved) {
41
+ await fs.rm(tmp.target, { recursive: true, force: true })
42
+ }
43
+ }
44
+ }
45
+ return { integrity: sri, size: data.length }
46
+ }
47
+
48
+ module.exports.stream = writeStream
49
+
50
+ // writes proxied to the 'inputStream' that is passed to the Promise
51
+ // 'end' is deferred until content is handled.
52
+ class CacacheWriteStream extends Flush {
53
+ constructor (cache, opts) {
54
+ super()
55
+ this.opts = opts
56
+ this.cache = cache
57
+ this.inputStream = new Minipass()
58
+ this.inputStream.on('error', er => this.emit('error', er))
59
+ this.inputStream.on('drain', () => this.emit('drain'))
60
+ this.handleContentP = null
61
+ }
62
+
63
+ write (chunk, encoding, cb) {
64
+ if (!this.handleContentP) {
65
+ this.handleContentP = handleContent(
66
+ this.inputStream,
67
+ this.cache,
68
+ this.opts
69
+ )
70
+ this.handleContentP.catch(error => this.emit('error', error))
71
+ }
72
+ return this.inputStream.write(chunk, encoding, cb)
73
+ }
74
+
75
+ flush (cb) {
76
+ this.inputStream.end(() => {
77
+ if (!this.handleContentP) {
78
+ const e = new Error('Cache input stream was empty')
79
+ e.code = 'ENODATA'
80
+ // empty streams are probably emitting end right away.
81
+ // defer this one tick by rejecting a promise on it.
82
+ return Promise.reject(e).catch(cb)
83
+ }
84
+ // eslint-disable-next-line promise/catch-or-return
85
+ this.handleContentP.then(
86
+ (res) => {
87
+ res.integrity && this.emit('integrity', res.integrity)
88
+ // eslint-disable-next-line promise/always-return
89
+ res.size !== null && this.emit('size', res.size)
90
+ cb()
91
+ },
92
+ (er) => cb(er)
93
+ )
94
+ })
95
+ }
96
+ }
97
+
98
+ function writeStream (cache, opts = {}) {
99
+ return new CacacheWriteStream(cache, opts)
100
+ }
101
+
102
+ async function handleContent (inputStream, cache, opts) {
103
+ const tmp = await makeTmp(cache, opts)
104
+ try {
105
+ const res = await pipeToTmp(inputStream, cache, tmp.target, opts)
106
+ await moveToDestination(
107
+ tmp,
108
+ cache,
109
+ res.integrity,
110
+ opts
111
+ )
112
+ return res
113
+ } finally {
114
+ if (!tmp.moved) {
115
+ await fs.rm(tmp.target, { recursive: true, force: true })
116
+ }
117
+ }
118
+ }
119
+
120
+ async function pipeToTmp (inputStream, cache, tmpTarget, opts) {
121
+ const outStream = new fsm.WriteStream(tmpTarget, {
122
+ flags: 'wx',
123
+ })
124
+
125
+ if (opts.integrityEmitter) {
126
+ // we need to create these all simultaneously since they can fire in any order
127
+ const [integrity, size] = await Promise.all([
128
+ events.once(opts.integrityEmitter, 'integrity').then(res => res[0]),
129
+ events.once(opts.integrityEmitter, 'size').then(res => res[0]),
130
+ new Pipeline(inputStream, outStream).promise(),
131
+ ])
132
+ return { integrity, size }
133
+ }
134
+
135
+ let integrity
136
+ let size
137
+ const hashStream = ssri.integrityStream({
138
+ integrity: opts.integrity,
139
+ algorithms: opts.algorithms,
140
+ size: opts.size,
141
+ })
142
+ hashStream.on('integrity', i => {
143
+ integrity = i
144
+ })
145
+ hashStream.on('size', s => {
146
+ size = s
147
+ })
148
+
149
+ const pipeline = new Pipeline(inputStream, hashStream, outStream)
150
+ await pipeline.promise()
151
+ return { integrity, size }
152
+ }
153
+
154
+ async function makeTmp (cache, opts) {
155
+ const tmpTarget = tmpName(cache, opts.tmpPrefix)
156
+ await fs.mkdir(path.dirname(tmpTarget), { recursive: true })
157
+ return {
158
+ target: tmpTarget,
159
+ moved: false,
160
+ }
161
+ }
162
+
163
+ async function moveToDestination (tmp, cache, sri) {
164
+ const destination = contentPath(cache, sri)
165
+ const destDir = path.dirname(destination)
166
+ if (moveOperations.has(destination)) {
167
+ return moveOperations.get(destination)
168
+ }
169
+ moveOperations.set(
170
+ destination,
171
+ fs.mkdir(destDir, { recursive: true })
172
+ .then(async () => {
173
+ await moveFile(tmp.target, destination, { overwrite: false })
174
+ tmp.moved = true
175
+ return tmp.moved
176
+ })
177
+ .catch(err => {
178
+ if (!err.message.startsWith('The destination file exists')) {
179
+ throw Object.assign(err, { code: 'EEXIST' })
180
+ }
181
+ }).finally(() => {
182
+ moveOperations.delete(destination)
183
+ })
184
+
185
+ )
186
+ return moveOperations.get(destination)
187
+ }
188
+
189
+ function sizeError (expected, found) {
190
+ /* eslint-disable-next-line max-len */
191
+ const err = new Error(`Bad data size: expected inserted data to be ${expected} bytes, but got ${found} instead`)
192
+ err.expected = expected
193
+ err.found = found
194
+ err.code = 'EBADSIZE'
195
+ return err
196
+ }
197
+
198
+ function checksumError (expected, found) {
199
+ const err = new Error(`Integrity check failed:
200
+ Wanted: ${expected}
201
+ Found: ${found}`)
202
+ err.code = 'EINTEGRITY'
203
+ err.expected = expected
204
+ err.found = found
205
+ return err
206
+ }
@@ -0,0 +1,336 @@
1
+ 'use strict'
2
+
3
+ const crypto = require('crypto')
4
+ const {
5
+ appendFile,
6
+ mkdir,
7
+ readFile,
8
+ readdir,
9
+ rm,
10
+ writeFile,
11
+ } = require('fs/promises')
12
+ const { Minipass } = require('minipass')
13
+ const path = require('path')
14
+ const ssri = require('ssri')
15
+ const { tmpName } = require('./util/tmp')
16
+
17
+ const contentPath = require('./content/path')
18
+ const hashToSegments = require('./util/hash-to-segments')
19
+ const indexV = require('../package.json')['cache-version'].index
20
+ const { moveFile } = require('@npmcli/fs')
21
+
22
+ const lsStreamConcurrency = 5
23
+
24
+ module.exports.NotFoundError = class NotFoundError extends Error {
25
+ constructor (cache, key) {
26
+ super(`No cache entry for ${key} found in ${cache}`)
27
+ this.code = 'ENOENT'
28
+ this.cache = cache
29
+ this.key = key
30
+ }
31
+ }
32
+
33
+ module.exports.compact = compact
34
+
35
+ async function compact (cache, key, matchFn, opts = {}) {
36
+ const bucket = bucketPath(cache, key)
37
+ const entries = await bucketEntries(bucket)
38
+ const newEntries = []
39
+ // we loop backwards because the bottom-most result is the newest
40
+ // since we add new entries with appendFile
41
+ for (let i = entries.length - 1; i >= 0; --i) {
42
+ const entry = entries[i]
43
+ // a null integrity could mean either a delete was appended
44
+ // or the user has simply stored an index that does not map
45
+ // to any content. we determine if the user wants to keep the
46
+ // null integrity based on the validateEntry function passed in options.
47
+ // if the integrity is null and no validateEntry is provided, we break
48
+ // as we consider the null integrity to be a deletion of everything
49
+ // that came before it.
50
+ if (entry.integrity === null && !opts.validateEntry) {
51
+ break
52
+ }
53
+
54
+ // if this entry is valid, and it is either the first entry or
55
+ // the newEntries array doesn't already include an entry that
56
+ // matches this one based on the provided matchFn, then we add
57
+ // it to the beginning of our list
58
+ if ((!opts.validateEntry || opts.validateEntry(entry) === true) &&
59
+ (newEntries.length === 0 ||
60
+ !newEntries.find((oldEntry) => matchFn(oldEntry, entry)))) {
61
+ newEntries.unshift(entry)
62
+ }
63
+ }
64
+
65
+ const newIndex = '\n' + newEntries.map((entry) => {
66
+ const stringified = JSON.stringify(entry)
67
+ const hash = hashEntry(stringified)
68
+ return `${hash}\t${stringified}`
69
+ }).join('\n')
70
+
71
+ const setup = async () => {
72
+ const target = tmpName(cache, opts.tmpPrefix)
73
+ await mkdir(path.dirname(target), { recursive: true })
74
+ return {
75
+ target,
76
+ moved: false,
77
+ }
78
+ }
79
+
80
+ const teardown = async (tmp) => {
81
+ if (!tmp.moved) {
82
+ return rm(tmp.target, { recursive: true, force: true })
83
+ }
84
+ }
85
+
86
+ const write = async (tmp) => {
87
+ await writeFile(tmp.target, newIndex, { flag: 'wx' })
88
+ await mkdir(path.dirname(bucket), { recursive: true })
89
+ // we use @npmcli/move-file directly here because we
90
+ // want to overwrite the existing file
91
+ await moveFile(tmp.target, bucket)
92
+ tmp.moved = true
93
+ }
94
+
95
+ // write the file atomically
96
+ const tmp = await setup()
97
+ try {
98
+ await write(tmp)
99
+ } finally {
100
+ await teardown(tmp)
101
+ }
102
+
103
+ // we reverse the list we generated such that the newest
104
+ // entries come first in order to make looping through them easier
105
+ // the true passed to formatEntry tells it to keep null
106
+ // integrity values, if they made it this far it's because
107
+ // validateEntry returned true, and as such we should return it
108
+ return newEntries.reverse().map((entry) => formatEntry(cache, entry, true))
109
+ }
110
+
111
+ module.exports.insert = insert
112
+
113
+ async function insert (cache, key, integrity, opts = {}) {
114
+ const { metadata, size, time } = opts
115
+ const bucket = bucketPath(cache, key)
116
+ const entry = {
117
+ key,
118
+ integrity: integrity && ssri.stringify(integrity),
119
+ time: time || Date.now(),
120
+ size,
121
+ metadata,
122
+ }
123
+ try {
124
+ await mkdir(path.dirname(bucket), { recursive: true })
125
+ const stringified = JSON.stringify(entry)
126
+ // NOTE - Cleverness ahoy!
127
+ //
128
+ // This works because it's tremendously unlikely for an entry to corrupt
129
+ // another while still preserving the string length of the JSON in
130
+ // question. So, we just slap the length in there and verify it on read.
131
+ //
132
+ // Thanks to @isaacs for the whiteboarding session that ended up with
133
+ // this.
134
+ await appendFile(bucket, `\n${hashEntry(stringified)}\t${stringified}`)
135
+ } catch (err) {
136
+ if (err.code === 'ENOENT') {
137
+ return undefined
138
+ }
139
+
140
+ throw err
141
+ }
142
+ return formatEntry(cache, entry)
143
+ }
144
+
145
+ module.exports.find = find
146
+
147
+ async function find (cache, key) {
148
+ const bucket = bucketPath(cache, key)
149
+ try {
150
+ const entries = await bucketEntries(bucket)
151
+ return entries.reduce((latest, next) => {
152
+ if (next && next.key === key) {
153
+ return formatEntry(cache, next)
154
+ } else {
155
+ return latest
156
+ }
157
+ }, null)
158
+ } catch (err) {
159
+ if (err.code === 'ENOENT') {
160
+ return null
161
+ } else {
162
+ throw err
163
+ }
164
+ }
165
+ }
166
+
167
+ module.exports.delete = del
168
+
169
+ function del (cache, key, opts = {}) {
170
+ if (!opts.removeFully) {
171
+ return insert(cache, key, null, opts)
172
+ }
173
+
174
+ const bucket = bucketPath(cache, key)
175
+ return rm(bucket, { recursive: true, force: true })
176
+ }
177
+
178
+ module.exports.lsStream = lsStream
179
+
180
+ function lsStream (cache) {
181
+ const indexDir = bucketDir(cache)
182
+ const stream = new Minipass({ objectMode: true })
183
+
184
+ // Set all this up to run on the stream and then just return the stream
185
+ Promise.resolve().then(async () => {
186
+ const { default: pMap } = await import('p-map')
187
+ const buckets = await readdirOrEmpty(indexDir)
188
+ await pMap(buckets, async (bucket) => {
189
+ const bucketPath = path.join(indexDir, bucket)
190
+ const subbuckets = await readdirOrEmpty(bucketPath)
191
+ await pMap(subbuckets, async (subbucket) => {
192
+ const subbucketPath = path.join(bucketPath, subbucket)
193
+
194
+ // "/cachename/<bucket 0xFF>/<bucket 0xFF>./*"
195
+ const subbucketEntries = await readdirOrEmpty(subbucketPath)
196
+ await pMap(subbucketEntries, async (entry) => {
197
+ const entryPath = path.join(subbucketPath, entry)
198
+ try {
199
+ const entries = await bucketEntries(entryPath)
200
+ // using a Map here prevents duplicate keys from showing up
201
+ // twice, I guess?
202
+ const reduced = entries.reduce((acc, entry) => {
203
+ acc.set(entry.key, entry)
204
+ return acc
205
+ }, new Map())
206
+ // reduced is a map of key => entry
207
+ for (const entry of reduced.values()) {
208
+ const formatted = formatEntry(cache, entry)
209
+ if (formatted) {
210
+ stream.write(formatted)
211
+ }
212
+ }
213
+ } catch (err) {
214
+ if (err.code === 'ENOENT') {
215
+ return undefined
216
+ }
217
+ throw err
218
+ }
219
+ },
220
+ { concurrency: lsStreamConcurrency })
221
+ },
222
+ { concurrency: lsStreamConcurrency })
223
+ },
224
+ { concurrency: lsStreamConcurrency })
225
+ stream.end()
226
+ return stream
227
+ }).catch(err => stream.emit('error', err))
228
+
229
+ return stream
230
+ }
231
+
232
+ module.exports.ls = ls
233
+
234
+ async function ls (cache) {
235
+ const entries = await lsStream(cache).collect()
236
+ return entries.reduce((acc, xs) => {
237
+ acc[xs.key] = xs
238
+ return acc
239
+ }, {})
240
+ }
241
+
242
+ module.exports.bucketEntries = bucketEntries
243
+
244
+ async function bucketEntries (bucket, filter) {
245
+ const data = await readFile(bucket, 'utf8')
246
+ return _bucketEntries(data, filter)
247
+ }
248
+
249
+ function _bucketEntries (data) {
250
+ const entries = []
251
+ data.split('\n').forEach((entry) => {
252
+ if (!entry) {
253
+ return
254
+ }
255
+
256
+ const pieces = entry.split('\t')
257
+ if (!pieces[1] || hashEntry(pieces[1]) !== pieces[0]) {
258
+ // Hash is no good! Corruption or malice? Doesn't matter!
259
+ // EJECT EJECT
260
+ return
261
+ }
262
+ let obj
263
+ try {
264
+ obj = JSON.parse(pieces[1])
265
+ } catch (_) {
266
+ // eslint-ignore-next-line no-empty-block
267
+ }
268
+ // coverage disabled here, no need to test with an entry that parses to something falsey
269
+ // istanbul ignore else
270
+ if (obj) {
271
+ entries.push(obj)
272
+ }
273
+ })
274
+ return entries
275
+ }
276
+
277
+ module.exports.bucketDir = bucketDir
278
+
279
+ function bucketDir (cache) {
280
+ return path.join(cache, `index-v${indexV}`)
281
+ }
282
+
283
+ module.exports.bucketPath = bucketPath
284
+
285
+ function bucketPath (cache, key) {
286
+ const hashed = hashKey(key)
287
+ return path.join.apply(
288
+ path,
289
+ [bucketDir(cache)].concat(hashToSegments(hashed))
290
+ )
291
+ }
292
+
293
+ module.exports.hashKey = hashKey
294
+
295
+ function hashKey (key) {
296
+ return hash(key, 'sha256')
297
+ }
298
+
299
+ module.exports.hashEntry = hashEntry
300
+
301
+ function hashEntry (str) {
302
+ return hash(str, 'sha1')
303
+ }
304
+
305
+ function hash (str, digest) {
306
+ return crypto
307
+ .createHash(digest)
308
+ .update(str)
309
+ .digest('hex')
310
+ }
311
+
312
+ function formatEntry (cache, entry, keepAll) {
313
+ // Treat null digests as deletions. They'll shadow any previous entries.
314
+ if (!entry.integrity && !keepAll) {
315
+ return null
316
+ }
317
+
318
+ return {
319
+ key: entry.key,
320
+ integrity: entry.integrity,
321
+ path: entry.integrity ? contentPath(cache, entry.integrity) : undefined,
322
+ size: entry.size,
323
+ time: entry.time,
324
+ metadata: entry.metadata,
325
+ }
326
+ }
327
+
328
+ function readdirOrEmpty (dir) {
329
+ return readdir(dir).catch((err) => {
330
+ if (err.code === 'ENOENT' || err.code === 'ENOTDIR') {
331
+ return []
332
+ }
333
+
334
+ throw err
335
+ })
336
+ }
@@ -0,0 +1,170 @@
1
+ 'use strict'
2
+
3
+ const Collect = require('minipass-collect')
4
+ const { Minipass } = require('minipass')
5
+ const Pipeline = require('minipass-pipeline')
6
+
7
+ const index = require('./entry-index')
8
+ const memo = require('./memoization')
9
+ const read = require('./content/read')
10
+
11
+ async function getData (cache, key, opts = {}) {
12
+ const { integrity, memoize, size } = opts
13
+ const memoized = memo.get(cache, key, opts)
14
+ if (memoized && memoize !== false) {
15
+ return {
16
+ metadata: memoized.entry.metadata,
17
+ data: memoized.data,
18
+ integrity: memoized.entry.integrity,
19
+ size: memoized.entry.size,
20
+ }
21
+ }
22
+
23
+ const entry = await index.find(cache, key, opts)
24
+ if (!entry) {
25
+ throw new index.NotFoundError(cache, key)
26
+ }
27
+ const data = await read(cache, entry.integrity, { integrity, size })
28
+ if (memoize) {
29
+ memo.put(cache, entry, data, opts)
30
+ }
31
+
32
+ return {
33
+ data,
34
+ metadata: entry.metadata,
35
+ size: entry.size,
36
+ integrity: entry.integrity,
37
+ }
38
+ }
39
+ module.exports = getData
40
+
41
+ async function getDataByDigest (cache, key, opts = {}) {
42
+ const { integrity, memoize, size } = opts
43
+ const memoized = memo.get.byDigest(cache, key, opts)
44
+ if (memoized && memoize !== false) {
45
+ return memoized
46
+ }
47
+
48
+ const res = await read(cache, key, { integrity, size })
49
+ if (memoize) {
50
+ memo.put.byDigest(cache, key, res, opts)
51
+ }
52
+ return res
53
+ }
54
+ module.exports.byDigest = getDataByDigest
55
+
56
+ const getMemoizedStream = (memoized) => {
57
+ const stream = new Minipass()
58
+ stream.on('newListener', function (ev, cb) {
59
+ ev === 'metadata' && cb(memoized.entry.metadata)
60
+ ev === 'integrity' && cb(memoized.entry.integrity)
61
+ ev === 'size' && cb(memoized.entry.size)
62
+ })
63
+ stream.end(memoized.data)
64
+ return stream
65
+ }
66
+
67
+ function getStream (cache, key, opts = {}) {
68
+ const { memoize, size } = opts
69
+ const memoized = memo.get(cache, key, opts)
70
+ if (memoized && memoize !== false) {
71
+ return getMemoizedStream(memoized)
72
+ }
73
+
74
+ const stream = new Pipeline()
75
+ // Set all this up to run on the stream and then just return the stream
76
+ Promise.resolve().then(async () => {
77
+ const entry = await index.find(cache, key)
78
+ if (!entry) {
79
+ throw new index.NotFoundError(cache, key)
80
+ }
81
+
82
+ stream.emit('metadata', entry.metadata)
83
+ stream.emit('integrity', entry.integrity)
84
+ stream.emit('size', entry.size)
85
+ stream.on('newListener', function (ev, cb) {
86
+ ev === 'metadata' && cb(entry.metadata)
87
+ ev === 'integrity' && cb(entry.integrity)
88
+ ev === 'size' && cb(entry.size)
89
+ })
90
+
91
+ const src = read.readStream(
92
+ cache,
93
+ entry.integrity,
94
+ { ...opts, size: typeof size !== 'number' ? entry.size : size }
95
+ )
96
+
97
+ if (memoize) {
98
+ const memoStream = new Collect.PassThrough()
99
+ memoStream.on('collect', data => memo.put(cache, entry, data, opts))
100
+ stream.unshift(memoStream)
101
+ }
102
+ stream.unshift(src)
103
+ return stream
104
+ }).catch((err) => stream.emit('error', err))
105
+
106
+ return stream
107
+ }
108
+
109
+ module.exports.stream = getStream
110
+
111
+ function getStreamDigest (cache, integrity, opts = {}) {
112
+ const { memoize } = opts
113
+ const memoized = memo.get.byDigest(cache, integrity, opts)
114
+ if (memoized && memoize !== false) {
115
+ const stream = new Minipass()
116
+ stream.end(memoized)
117
+ return stream
118
+ } else {
119
+ const stream = read.readStream(cache, integrity, opts)
120
+ if (!memoize) {
121
+ return stream
122
+ }
123
+
124
+ const memoStream = new Collect.PassThrough()
125
+ memoStream.on('collect', data => memo.put.byDigest(
126
+ cache,
127
+ integrity,
128
+ data,
129
+ opts
130
+ ))
131
+ return new Pipeline(stream, memoStream)
132
+ }
133
+ }
134
+
135
+ module.exports.stream.byDigest = getStreamDigest
136
+
137
+ function info (cache, key, opts = {}) {
138
+ const { memoize } = opts
139
+ const memoized = memo.get(cache, key, opts)
140
+ if (memoized && memoize !== false) {
141
+ return Promise.resolve(memoized.entry)
142
+ } else {
143
+ return index.find(cache, key)
144
+ }
145
+ }
146
+ module.exports.info = info
147
+
148
+ async function copy (cache, key, dest, opts = {}) {
149
+ const entry = await index.find(cache, key, opts)
150
+ if (!entry) {
151
+ throw new index.NotFoundError(cache, key)
152
+ }
153
+ await read.copy(cache, entry.integrity, dest, opts)
154
+ return {
155
+ metadata: entry.metadata,
156
+ size: entry.size,
157
+ integrity: entry.integrity,
158
+ }
159
+ }
160
+
161
+ module.exports.copy = copy
162
+
163
+ async function copyByDigest (cache, key, dest, opts = {}) {
164
+ await read.copy(cache, key, dest, opts)
165
+ return key
166
+ }
167
+
168
+ module.exports.copy.byDigest = copyByDigest
169
+
170
+ module.exports.hasContent = read.hasContent