pnpm 8.6.2 → 8.6.4

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 (418) hide show
  1. package/dist/node_modules/.modules.yaml +81 -24
  2. package/dist/node_modules/.pnpm/lock.yaml +235 -91
  3. package/dist/node_modules/@isaacs/cliui/LICENSE.txt +14 -0
  4. package/dist/node_modules/@isaacs/cliui/build/index.cjs +317 -0
  5. package/dist/node_modules/@isaacs/cliui/build/index.d.cts +43 -0
  6. package/dist/node_modules/@isaacs/cliui/build/lib/index.js +302 -0
  7. package/dist/node_modules/@isaacs/cliui/index.mjs +14 -0
  8. package/dist/node_modules/@isaacs/cliui/node_modules/string-width/index.js +54 -0
  9. package/dist/node_modules/@isaacs/cliui/node_modules/string-width/license +9 -0
  10. package/dist/node_modules/@isaacs/cliui/node_modules/string-width/package.json +59 -0
  11. package/dist/node_modules/@isaacs/cliui/package.json +86 -0
  12. package/dist/node_modules/@npmcli/fs/lib/cp/index.js +1 -1
  13. package/dist/node_modules/@npmcli/fs/lib/cp/polyfill.js +2 -2
  14. package/dist/node_modules/@npmcli/fs/lib/index.js +11 -10
  15. package/dist/node_modules/@npmcli/fs/lib/move-file.js +78 -0
  16. package/dist/node_modules/@npmcli/fs/lib/readdir-scoped.js +20 -0
  17. package/dist/node_modules/@npmcli/fs/lib/with-temp-dir.js +4 -6
  18. package/dist/node_modules/@npmcli/fs/package.json +11 -9
  19. package/dist/node_modules/@pkgjs/parseargs/LICENSE +201 -0
  20. package/dist/node_modules/@pkgjs/parseargs/index.js +396 -0
  21. package/dist/node_modules/@pkgjs/parseargs/internal/errors.js +47 -0
  22. package/dist/node_modules/@pkgjs/parseargs/internal/primordials.js +393 -0
  23. package/dist/node_modules/@pkgjs/parseargs/internal/util.js +14 -0
  24. package/dist/node_modules/@pkgjs/parseargs/internal/validators.js +89 -0
  25. package/dist/node_modules/@pkgjs/parseargs/package.json +36 -0
  26. package/dist/node_modules/@pkgjs/parseargs/utils.js +198 -0
  27. package/dist/node_modules/ansi-regex/index.js +3 -5
  28. package/dist/node_modules/ansi-regex/license +1 -1
  29. package/dist/node_modules/ansi-regex/package.json +9 -6
  30. package/dist/node_modules/ansi-styles/index.js +223 -0
  31. package/dist/node_modules/ansi-styles/license +9 -0
  32. package/dist/node_modules/ansi-styles/package.json +54 -0
  33. package/dist/node_modules/cacache/lib/content/read.js +1 -76
  34. package/dist/node_modules/cacache/lib/content/rm.js +2 -4
  35. package/dist/node_modules/cacache/lib/content/write.js +40 -24
  36. package/dist/node_modules/cacache/lib/entry-index.js +25 -99
  37. package/dist/node_modules/cacache/lib/get.js +1 -56
  38. package/dist/node_modules/cacache/lib/index.js +0 -3
  39. package/dist/node_modules/cacache/lib/rm.js +5 -5
  40. package/dist/node_modules/cacache/lib/util/glob.js +7 -0
  41. package/dist/node_modules/cacache/lib/util/tmp.js +3 -10
  42. package/dist/node_modules/cacache/lib/verify.js +28 -28
  43. package/dist/node_modules/cacache/node_modules/glob/LICENSE +1 -1
  44. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/package.json +4 -0
  45. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/bin.d.ts.map +1 -0
  46. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/bin.js +270 -0
  47. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/bin.js.map +1 -0
  48. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/glob.d.ts.map +1 -0
  49. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/glob.js +234 -0
  50. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/glob.js.map +1 -0
  51. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/has-magic.d.ts.map +1 -0
  52. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/has-magic.js +27 -0
  53. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/has-magic.js.map +1 -0
  54. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/ignore.d.ts.map +1 -0
  55. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/ignore.js +103 -0
  56. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/ignore.js.map +1 -0
  57. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/index.d.ts.map +1 -0
  58. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/index.js +68 -0
  59. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/index.js.map +1 -0
  60. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/pattern.d.ts.map +1 -0
  61. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/pattern.js +219 -0
  62. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/pattern.js.map +1 -0
  63. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/processor.d.ts.map +1 -0
  64. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/processor.js +309 -0
  65. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/processor.js.map +1 -0
  66. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/walker.d.ts.map +1 -0
  67. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/walker.js +358 -0
  68. package/dist/node_modules/cacache/node_modules/glob/dist/cjs/src/walker.js.map +1 -0
  69. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/glob.d.ts.map +1 -0
  70. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/glob.js +230 -0
  71. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/glob.js.map +1 -0
  72. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/has-magic.d.ts.map +1 -0
  73. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/has-magic.js +23 -0
  74. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/has-magic.js.map +1 -0
  75. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/ignore.d.ts.map +1 -0
  76. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/ignore.js +99 -0
  77. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/ignore.js.map +1 -0
  78. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/index.d.ts.map +1 -0
  79. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/index.js +56 -0
  80. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/index.js.map +1 -0
  81. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/package.json +4 -0
  82. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/pattern.d.ts.map +1 -0
  83. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/pattern.js +215 -0
  84. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/pattern.js.map +1 -0
  85. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/processor.d.ts.map +1 -0
  86. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/processor.js +302 -0
  87. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/processor.js.map +1 -0
  88. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/walker.d.ts.map +1 -0
  89. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/walker.js +352 -0
  90. package/dist/node_modules/cacache/node_modules/glob/dist/mjs/walker.js.map +1 -0
  91. package/dist/node_modules/cacache/node_modules/glob/package.json +78 -35
  92. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts.map +1 -0
  93. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/assert-valid-pattern.js +14 -0
  94. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/assert-valid-pattern.js.map +1 -0
  95. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/ast.d.ts.map +1 -0
  96. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/ast.js +589 -0
  97. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/ast.js.map +1 -0
  98. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/brace-expressions.d.ts.map +1 -0
  99. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/brace-expressions.js +152 -0
  100. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/brace-expressions.js.map +1 -0
  101. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/escape.d.ts.map +1 -0
  102. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/escape.js +22 -0
  103. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/escape.js.map +1 -0
  104. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/index.d.ts.map +1 -0
  105. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/index.js +1011 -0
  106. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/index.js.map +1 -0
  107. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/package.json +3 -0
  108. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/unescape.d.ts.map +1 -0
  109. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/unescape.js +24 -0
  110. package/dist/node_modules/cacache/node_modules/minimatch/dist/cjs/unescape.js.map +1 -0
  111. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts.map +1 -0
  112. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/assert-valid-pattern.js +10 -0
  113. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/assert-valid-pattern.js.map +1 -0
  114. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/ast.d.ts.map +1 -0
  115. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/ast.js +585 -0
  116. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/ast.js.map +1 -0
  117. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/brace-expressions.d.ts.map +1 -0
  118. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/brace-expressions.js +148 -0
  119. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/brace-expressions.js.map +1 -0
  120. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/escape.d.ts.map +1 -0
  121. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/escape.js +18 -0
  122. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/escape.js.map +1 -0
  123. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/index.d.ts.map +1 -0
  124. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/index.js +995 -0
  125. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/index.js.map +1 -0
  126. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/package.json +3 -0
  127. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/unescape.d.ts.map +1 -0
  128. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/unescape.js +20 -0
  129. package/dist/node_modules/cacache/node_modules/minimatch/dist/mjs/unescape.js.map +1 -0
  130. package/dist/node_modules/cacache/node_modules/minimatch/package.json +66 -15
  131. package/dist/node_modules/cacache/package.json +19 -21
  132. package/dist/node_modules/color-convert/LICENSE +21 -0
  133. package/dist/node_modules/color-convert/conversions.js +839 -0
  134. package/dist/node_modules/color-convert/index.js +81 -0
  135. package/dist/node_modules/color-convert/package.json +48 -0
  136. package/dist/node_modules/color-convert/route.js +97 -0
  137. package/dist/node_modules/color-name/LICENSE +8 -0
  138. package/dist/node_modules/color-name/index.js +152 -0
  139. package/dist/node_modules/color-name/package.json +28 -0
  140. package/dist/node_modules/cross-spawn/LICENSE +21 -0
  141. package/dist/node_modules/cross-spawn/index.js +39 -0
  142. package/dist/node_modules/cross-spawn/lib/enoent.js +59 -0
  143. package/dist/node_modules/cross-spawn/lib/parse.js +91 -0
  144. package/dist/node_modules/cross-spawn/lib/util/escape.js +45 -0
  145. package/dist/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  146. package/dist/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  147. package/dist/node_modules/cross-spawn/package.json +73 -0
  148. package/dist/node_modules/eastasianwidth/eastasianwidth.js +311 -0
  149. package/dist/node_modules/eastasianwidth/package.json +18 -0
  150. package/dist/node_modules/emoji-regex/RGI_Emoji.js +6 -0
  151. package/dist/node_modules/emoji-regex/es2015/RGI_Emoji.js +6 -0
  152. package/dist/node_modules/emoji-regex/es2015/index.js +1 -1
  153. package/dist/node_modules/emoji-regex/es2015/text.js +1 -1
  154. package/dist/node_modules/emoji-regex/index.js +1 -1
  155. package/dist/node_modules/emoji-regex/package.json +13 -11
  156. package/dist/node_modules/emoji-regex/text.js +1 -1
  157. package/dist/node_modules/exponential-backoff/LICENSE +202 -0
  158. package/dist/node_modules/exponential-backoff/dist/backoff.js +118 -0
  159. package/dist/node_modules/exponential-backoff/dist/backoff.js.map +1 -0
  160. package/dist/node_modules/exponential-backoff/dist/delay/always/always.delay.js +25 -0
  161. package/dist/node_modules/exponential-backoff/dist/delay/always/always.delay.js.map +1 -0
  162. package/dist/node_modules/exponential-backoff/dist/delay/delay.base.js +45 -0
  163. package/dist/node_modules/exponential-backoff/dist/delay/delay.base.js.map +1 -0
  164. package/dist/node_modules/exponential-backoff/dist/delay/delay.factory.js +17 -0
  165. package/dist/node_modules/exponential-backoff/dist/delay/delay.factory.js.map +1 -0
  166. package/dist/node_modules/exponential-backoff/dist/delay/delay.interface.js +3 -0
  167. package/dist/node_modules/exponential-backoff/dist/delay/delay.interface.js.map +1 -0
  168. package/dist/node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js +82 -0
  169. package/dist/node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js.map +1 -0
  170. package/dist/node_modules/exponential-backoff/dist/jitter/full/full.jitter.js +8 -0
  171. package/dist/node_modules/exponential-backoff/dist/jitter/full/full.jitter.js.map +1 -0
  172. package/dist/node_modules/exponential-backoff/dist/jitter/jitter.factory.js +15 -0
  173. package/dist/node_modules/exponential-backoff/dist/jitter/jitter.factory.js.map +1 -0
  174. package/dist/node_modules/exponential-backoff/dist/jitter/no/no.jitter.js +7 -0
  175. package/dist/node_modules/exponential-backoff/dist/jitter/no/no.jitter.js.map +1 -0
  176. package/dist/node_modules/exponential-backoff/dist/options.js +31 -0
  177. package/dist/node_modules/exponential-backoff/dist/options.js.map +1 -0
  178. package/dist/node_modules/exponential-backoff/package.json +61 -0
  179. package/dist/node_modules/{promise-inflight → foreground-child}/LICENSE +5 -4
  180. package/dist/node_modules/foreground-child/dist/cjs/all-signals.d.ts.map +1 -0
  181. package/dist/node_modules/foreground-child/dist/cjs/all-signals.js +58 -0
  182. package/dist/node_modules/foreground-child/dist/cjs/all-signals.js.map +1 -0
  183. package/dist/node_modules/foreground-child/dist/cjs/index.d.ts.map +1 -0
  184. package/dist/node_modules/foreground-child/dist/cjs/index.js +154 -0
  185. package/dist/node_modules/foreground-child/dist/cjs/index.js.map +1 -0
  186. package/dist/node_modules/foreground-child/dist/cjs/package.json +3 -0
  187. package/dist/node_modules/foreground-child/dist/cjs/watchdog.d.ts.map +1 -0
  188. package/dist/node_modules/foreground-child/dist/cjs/watchdog.js +43 -0
  189. package/dist/node_modules/foreground-child/dist/cjs/watchdog.js.map +1 -0
  190. package/dist/node_modules/foreground-child/dist/mjs/all-signals.d.ts.map +1 -0
  191. package/dist/node_modules/foreground-child/dist/mjs/all-signals.js +52 -0
  192. package/dist/node_modules/foreground-child/dist/mjs/all-signals.js.map +1 -0
  193. package/dist/node_modules/foreground-child/dist/mjs/index.d.ts.map +1 -0
  194. package/dist/node_modules/foreground-child/dist/mjs/index.js +146 -0
  195. package/dist/node_modules/foreground-child/dist/mjs/index.js.map +1 -0
  196. package/dist/node_modules/foreground-child/dist/mjs/package.json +3 -0
  197. package/dist/node_modules/foreground-child/dist/mjs/watchdog.d.ts.map +1 -0
  198. package/dist/node_modules/foreground-child/dist/mjs/watchdog.js +39 -0
  199. package/dist/node_modules/foreground-child/dist/mjs/watchdog.js.map +1 -0
  200. package/dist/node_modules/foreground-child/package.json +83 -0
  201. package/dist/node_modules/fs-minipass/lib/index.js +443 -0
  202. package/dist/node_modules/fs-minipass/package.json +28 -13
  203. package/dist/node_modules/gauge/node_modules/ansi-regex/index.js +10 -0
  204. package/dist/node_modules/gauge/node_modules/ansi-regex/license +9 -0
  205. package/dist/node_modules/gauge/node_modules/ansi-regex/package.json +55 -0
  206. package/dist/node_modules/gauge/node_modules/signal-exit/LICENSE.txt +16 -0
  207. package/dist/node_modules/gauge/node_modules/signal-exit/package.json +38 -0
  208. package/dist/node_modules/gauge/node_modules/strip-ansi/index.js +4 -0
  209. package/dist/node_modules/gauge/node_modules/strip-ansi/license +9 -0
  210. package/dist/node_modules/gauge/node_modules/strip-ansi/package.json +54 -0
  211. package/dist/node_modules/jackspeak/dist/cjs/index.d.ts.map +1 -0
  212. package/dist/node_modules/jackspeak/dist/cjs/index.js +723 -0
  213. package/dist/node_modules/jackspeak/dist/cjs/index.js.map +1 -0
  214. package/dist/node_modules/jackspeak/dist/cjs/package.json +3 -0
  215. package/dist/node_modules/jackspeak/dist/cjs/parse-args-cjs.d.ts.map +1 -0
  216. package/dist/node_modules/jackspeak/dist/cjs/parse-args-cjs.js.map +1 -0
  217. package/dist/node_modules/jackspeak/dist/cjs/parse-args.js +42 -0
  218. package/dist/node_modules/jackspeak/dist/mjs/index.d.ts.map +1 -0
  219. package/dist/node_modules/jackspeak/dist/mjs/index.js +713 -0
  220. package/dist/node_modules/jackspeak/dist/mjs/index.js.map +1 -0
  221. package/dist/node_modules/jackspeak/dist/mjs/package.json +3 -0
  222. package/dist/node_modules/jackspeak/dist/mjs/parse-args-esm.d.ts.map +1 -0
  223. package/dist/node_modules/jackspeak/dist/mjs/parse-args-esm.js.map +1 -0
  224. package/dist/node_modules/jackspeak/dist/mjs/parse-args.js +19 -0
  225. package/dist/node_modules/jackspeak/package.json +98 -0
  226. package/dist/node_modules/make-fetch-happen/lib/cache/entry.js +26 -1
  227. package/dist/node_modules/make-fetch-happen/lib/options.js +2 -0
  228. package/dist/node_modules/make-fetch-happen/lib/remote.js +1 -1
  229. package/dist/node_modules/make-fetch-happen/package.json +16 -17
  230. package/dist/node_modules/minipass/LICENSE +1 -1
  231. package/dist/node_modules/minipass/index.js +299 -246
  232. package/dist/node_modules/minipass/package.json +27 -7
  233. package/dist/node_modules/{tar → minipass-collect}/node_modules/minipass/LICENSE +1 -1
  234. package/dist/node_modules/minipass-collect/node_modules/minipass/index.js +649 -0
  235. package/dist/node_modules/{tar → minipass-collect}/node_modules/minipass/package.json +7 -27
  236. package/dist/node_modules/minipass-fetch/lib/blob.js +1 -1
  237. package/dist/node_modules/minipass-fetch/lib/body.js +1 -1
  238. package/dist/node_modules/minipass-fetch/lib/index.js +15 -3
  239. package/dist/node_modules/minipass-fetch/lib/request.js +2 -1
  240. package/dist/node_modules/minipass-fetch/package.json +13 -11
  241. package/dist/node_modules/minipass-flush/node_modules/minipass/LICENSE +15 -0
  242. package/dist/node_modules/minipass-flush/node_modules/minipass/index.js +649 -0
  243. package/dist/node_modules/minipass-flush/node_modules/minipass/package.json +56 -0
  244. package/dist/node_modules/minipass-pipeline/node_modules/minipass/LICENSE +15 -0
  245. package/dist/node_modules/minipass-pipeline/node_modules/minipass/index.js +649 -0
  246. package/dist/node_modules/minipass-pipeline/node_modules/minipass/package.json +56 -0
  247. package/dist/node_modules/minipass-sized/node_modules/minipass/LICENSE +15 -0
  248. package/dist/node_modules/minipass-sized/node_modules/minipass/index.js +649 -0
  249. package/dist/node_modules/minipass-sized/node_modules/minipass/package.json +56 -0
  250. package/dist/node_modules/minizlib/node_modules/minipass/LICENSE +15 -0
  251. package/dist/node_modules/minizlib/node_modules/minipass/index.js +649 -0
  252. package/dist/node_modules/minizlib/node_modules/minipass/package.json +56 -0
  253. package/dist/node_modules/node-gyp/.github/workflows/tests.yml +9 -6
  254. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +1 -1
  255. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +1 -1
  256. package/dist/node_modules/node-gyp/lib/find-visualstudio.js +13 -2
  257. package/dist/node_modules/node-gyp/lib/install.js +174 -92
  258. package/dist/node_modules/node-gyp/package.json +7 -6
  259. package/dist/node_modules/node-gyp/update-gyp.py +1 -1
  260. package/dist/node_modules/path-key/index.js +16 -0
  261. package/dist/node_modules/path-key/license +9 -0
  262. package/dist/node_modules/path-key/package.json +39 -0
  263. package/dist/node_modules/path-scurry/dist/cjs/index.d.ts.map +1 -0
  264. package/dist/node_modules/path-scurry/dist/cjs/index.js +1995 -0
  265. package/dist/node_modules/path-scurry/dist/cjs/index.js.map +1 -0
  266. package/dist/node_modules/path-scurry/dist/cjs/package.json +3 -0
  267. package/dist/node_modules/path-scurry/dist/mjs/index.d.ts.map +1 -0
  268. package/dist/node_modules/path-scurry/dist/mjs/index.js +1960 -0
  269. package/dist/node_modules/path-scurry/dist/mjs/index.js.map +1 -0
  270. package/dist/node_modules/path-scurry/dist/mjs/package.json +3 -0
  271. package/dist/node_modules/path-scurry/node_modules/lru-cache/LICENSE +15 -0
  272. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/cjs/index.d.ts.map +1 -0
  273. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/cjs/index.js +1395 -0
  274. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/cjs/index.js.map +1 -0
  275. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/cjs/index.min.js +2 -0
  276. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/cjs/index.min.js.map +7 -0
  277. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/cjs/package.json +3 -0
  278. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/mjs/index.d.ts.map +1 -0
  279. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/mjs/index.js +1391 -0
  280. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/mjs/index.js.map +1 -0
  281. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/mjs/index.min.js +2 -0
  282. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/mjs/index.min.js.map +7 -0
  283. package/dist/node_modules/path-scurry/node_modules/lru-cache/dist/mjs/package.json +3 -0
  284. package/dist/node_modules/path-scurry/node_modules/lru-cache/package.json +108 -0
  285. package/dist/node_modules/path-scurry/package.json +87 -0
  286. package/dist/node_modules/semver/classes/comparator.js +2 -1
  287. package/dist/node_modules/semver/classes/range.js +40 -27
  288. package/dist/node_modules/semver/classes/semver.js +5 -3
  289. package/dist/node_modules/semver/functions/coerce.js +1 -1
  290. package/dist/node_modules/semver/functions/diff.js +31 -20
  291. package/dist/node_modules/semver/internal/constants.js +5 -0
  292. package/dist/node_modules/semver/internal/re.js +30 -4
  293. package/dist/node_modules/semver/package.json +4 -4
  294. package/dist/node_modules/shebang-command/index.js +19 -0
  295. package/dist/node_modules/shebang-command/license +9 -0
  296. package/dist/node_modules/shebang-command/package.json +34 -0
  297. package/dist/node_modules/shebang-regex/index.js +2 -0
  298. package/dist/node_modules/shebang-regex/license +9 -0
  299. package/dist/node_modules/shebang-regex/package.json +35 -0
  300. package/dist/node_modules/signal-exit/LICENSE.txt +1 -1
  301. package/dist/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
  302. package/dist/node_modules/signal-exit/dist/cjs/browser.js +10 -0
  303. package/dist/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
  304. package/dist/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
  305. package/dist/node_modules/signal-exit/dist/cjs/index.js +272 -0
  306. package/dist/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
  307. package/dist/node_modules/signal-exit/dist/cjs/package.json +3 -0
  308. package/dist/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
  309. package/dist/node_modules/signal-exit/dist/cjs/signals.js +42 -0
  310. package/dist/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
  311. package/dist/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
  312. package/dist/node_modules/signal-exit/dist/mjs/browser.js +4 -0
  313. package/dist/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
  314. package/dist/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
  315. package/dist/node_modules/signal-exit/dist/mjs/index.js +268 -0
  316. package/dist/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
  317. package/dist/node_modules/signal-exit/dist/mjs/package.json +3 -0
  318. package/dist/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
  319. package/dist/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  320. package/dist/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
  321. package/dist/node_modules/signal-exit/package.json +87 -19
  322. package/dist/node_modules/ssri/lib/index.js +157 -101
  323. package/dist/node_modules/ssri/package.json +12 -10
  324. package/dist/node_modules/string-width/node_modules/ansi-regex/index.js +10 -0
  325. package/dist/node_modules/string-width/node_modules/ansi-regex/license +9 -0
  326. package/dist/node_modules/string-width/node_modules/ansi-regex/package.json +55 -0
  327. package/dist/node_modules/string-width/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
  328. package/dist/node_modules/string-width/node_modules/emoji-regex/es2015/index.js +6 -0
  329. package/dist/node_modules/string-width/node_modules/emoji-regex/es2015/text.js +6 -0
  330. package/dist/node_modules/string-width/node_modules/emoji-regex/index.js +6 -0
  331. package/dist/node_modules/string-width/node_modules/emoji-regex/package.json +50 -0
  332. package/dist/node_modules/string-width/node_modules/emoji-regex/text.js +6 -0
  333. package/dist/node_modules/string-width/node_modules/strip-ansi/index.js +4 -0
  334. package/dist/node_modules/string-width/node_modules/strip-ansi/license +9 -0
  335. package/dist/node_modules/string-width/node_modules/strip-ansi/package.json +54 -0
  336. package/dist/node_modules/string-width-cjs/index.js +47 -0
  337. package/dist/node_modules/string-width-cjs/license +9 -0
  338. package/dist/node_modules/string-width-cjs/node_modules/ansi-regex/index.js +10 -0
  339. package/dist/node_modules/string-width-cjs/node_modules/ansi-regex/license +9 -0
  340. package/dist/node_modules/string-width-cjs/node_modules/ansi-regex/package.json +55 -0
  341. package/dist/node_modules/string-width-cjs/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
  342. package/dist/node_modules/string-width-cjs/node_modules/emoji-regex/es2015/index.js +6 -0
  343. package/dist/node_modules/string-width-cjs/node_modules/emoji-regex/es2015/text.js +6 -0
  344. package/dist/node_modules/string-width-cjs/node_modules/emoji-regex/index.js +6 -0
  345. package/dist/node_modules/string-width-cjs/node_modules/emoji-regex/package.json +50 -0
  346. package/dist/node_modules/string-width-cjs/node_modules/emoji-regex/text.js +6 -0
  347. package/dist/node_modules/string-width-cjs/node_modules/strip-ansi/index.js +4 -0
  348. package/dist/node_modules/string-width-cjs/node_modules/strip-ansi/license +9 -0
  349. package/dist/node_modules/string-width-cjs/node_modules/strip-ansi/package.json +54 -0
  350. package/dist/node_modules/string-width-cjs/package.json +56 -0
  351. package/dist/node_modules/strip-ansi/index.js +13 -3
  352. package/dist/node_modules/strip-ansi/license +1 -1
  353. package/dist/node_modules/strip-ansi/package.json +10 -7
  354. package/dist/node_modules/strip-ansi-cjs/index.js +4 -0
  355. package/dist/node_modules/strip-ansi-cjs/license +9 -0
  356. package/dist/node_modules/strip-ansi-cjs/node_modules/ansi-regex/index.js +10 -0
  357. package/dist/node_modules/strip-ansi-cjs/node_modules/ansi-regex/license +9 -0
  358. package/dist/node_modules/strip-ansi-cjs/node_modules/ansi-regex/package.json +55 -0
  359. package/dist/node_modules/strip-ansi-cjs/package.json +54 -0
  360. package/dist/node_modules/{infer-owner → tar/node_modules/fs-minipass}/LICENSE +1 -1
  361. package/dist/node_modules/tar/node_modules/fs-minipass/node_modules/minipass/LICENSE +15 -0
  362. package/dist/node_modules/tar/node_modules/fs-minipass/node_modules/minipass/index.js +649 -0
  363. package/dist/node_modules/tar/node_modules/fs-minipass/node_modules/minipass/package.json +56 -0
  364. package/dist/node_modules/tar/node_modules/fs-minipass/package.json +39 -0
  365. package/dist/node_modules/unique-filename/package.json +12 -9
  366. package/dist/node_modules/unique-slug/package.json +10 -7
  367. package/dist/node_modules/wrap-ansi/index.js +214 -0
  368. package/dist/node_modules/wrap-ansi/license +9 -0
  369. package/dist/node_modules/wrap-ansi/node_modules/string-width/index.js +54 -0
  370. package/dist/node_modules/wrap-ansi/node_modules/string-width/license +9 -0
  371. package/dist/node_modules/wrap-ansi/node_modules/string-width/package.json +59 -0
  372. package/dist/node_modules/wrap-ansi/package.json +69 -0
  373. package/dist/node_modules/wrap-ansi-cjs/index.js +216 -0
  374. package/dist/node_modules/wrap-ansi-cjs/license +9 -0
  375. package/dist/node_modules/wrap-ansi-cjs/node_modules/ansi-regex/index.js +10 -0
  376. package/dist/node_modules/wrap-ansi-cjs/node_modules/ansi-regex/license +9 -0
  377. package/dist/node_modules/wrap-ansi-cjs/node_modules/ansi-regex/package.json +55 -0
  378. package/dist/node_modules/wrap-ansi-cjs/node_modules/ansi-styles/index.js +163 -0
  379. package/dist/node_modules/wrap-ansi-cjs/node_modules/ansi-styles/license +9 -0
  380. package/dist/node_modules/wrap-ansi-cjs/node_modules/ansi-styles/package.json +56 -0
  381. package/dist/node_modules/wrap-ansi-cjs/node_modules/strip-ansi/index.js +4 -0
  382. package/dist/node_modules/wrap-ansi-cjs/node_modules/strip-ansi/license +9 -0
  383. package/dist/node_modules/wrap-ansi-cjs/node_modules/strip-ansi/package.json +54 -0
  384. package/dist/node_modules/wrap-ansi-cjs/package.json +62 -0
  385. package/dist/pnpm.cjs +30877 -17543
  386. package/package.json +3 -3
  387. package/dist/node_modules/@gar/promisify/index.js +0 -36
  388. package/dist/node_modules/@gar/promisify/package.json +0 -32
  389. package/dist/node_modules/@npmcli/fs/lib/common/owner-sync.js +0 -96
  390. package/dist/node_modules/@npmcli/fs/lib/common/owner.js +0 -96
  391. package/dist/node_modules/@npmcli/fs/lib/copy-file.js +0 -16
  392. package/dist/node_modules/@npmcli/fs/lib/fs.js +0 -14
  393. package/dist/node_modules/@npmcli/fs/lib/mkdir.js +0 -19
  394. package/dist/node_modules/@npmcli/fs/lib/mkdtemp.js +0 -23
  395. package/dist/node_modules/@npmcli/fs/lib/rm/index.js +0 -22
  396. package/dist/node_modules/@npmcli/fs/lib/rm/polyfill.js +0 -239
  397. package/dist/node_modules/@npmcli/fs/lib/with-owner-sync.js +0 -21
  398. package/dist/node_modules/@npmcli/fs/lib/with-owner.js +0 -21
  399. package/dist/node_modules/@npmcli/fs/lib/write-file.js +0 -14
  400. package/dist/node_modules/@npmcli/move-file/lib/index.js +0 -185
  401. package/dist/node_modules/@npmcli/move-file/package.json +0 -47
  402. package/dist/node_modules/cacache/lib/util/fix-owner.js +0 -145
  403. package/dist/node_modules/cacache/lib/util/move-file.js +0 -56
  404. package/dist/node_modules/cacache/node_modules/glob/common.js +0 -244
  405. package/dist/node_modules/cacache/node_modules/glob/glob.js +0 -790
  406. package/dist/node_modules/cacache/node_modules/glob/sync.js +0 -486
  407. package/dist/node_modules/cacache/node_modules/minimatch/lib/path.js +0 -4
  408. package/dist/node_modules/cacache/node_modules/minimatch/minimatch.js +0 -944
  409. package/dist/node_modules/infer-owner/index.js +0 -71
  410. package/dist/node_modules/infer-owner/package.json +0 -26
  411. package/dist/node_modules/promise-inflight/inflight.js +0 -36
  412. package/dist/node_modules/promise-inflight/package.json +0 -24
  413. package/dist/node_modules/tar/node_modules/minipass/index.js +0 -702
  414. /package/dist/node_modules/@npmcli/fs/lib/{errors.js → cp/errors.js} +0 -0
  415. /package/dist/node_modules/{signal-exit → gauge/node_modules/signal-exit}/index.js +0 -0
  416. /package/dist/node_modules/{signal-exit → gauge/node_modules/signal-exit}/signals.js +0 -0
  417. /package/dist/node_modules/{tar/node_modules/minipass → minipass}/index.mjs +0 -0
  418. /package/dist/node_modules/{fs-minipass → tar/node_modules/fs-minipass}/index.js +0 -0
@@ -0,0 +1,713 @@
1
+ import { inspect } from 'node:util';
2
+ import { parseArgs } from './parse-args.js';
3
+ // it's a tiny API, just cast it inline, it's fine
4
+ //@ts-ignore
5
+ import cliui from '@isaacs/cliui';
6
+ import { basename } from 'node:path';
7
+ const width = Math.min((process && process.stdout && process.stdout.columns) || 80, 80);
8
+ // indentation spaces from heading level
9
+ const indent = (n) => (n - 1) * 2;
10
+ const toEnvKey = (pref, key) => {
11
+ return [pref, key.replace(/[^a-zA-Z0-9]+/g, ' ')]
12
+ .join(' ')
13
+ .trim()
14
+ .toUpperCase()
15
+ .replace(/ /g, '_');
16
+ };
17
+ const toEnvVal = (value, delim = '\n') => {
18
+ const str = typeof value === 'string'
19
+ ? value
20
+ : typeof value === 'boolean'
21
+ ? value
22
+ ? '1'
23
+ : '0'
24
+ : typeof value === 'number'
25
+ ? String(value)
26
+ : Array.isArray(value)
27
+ ? value
28
+ .map((v) => toEnvVal(v))
29
+ .join(delim)
30
+ : /* c8 ignore start */
31
+ undefined;
32
+ if (typeof str !== 'string') {
33
+ throw new Error(`could not serialize value to environment: ${JSON.stringify(value)}`);
34
+ }
35
+ /* c8 ignore stop */
36
+ return str;
37
+ };
38
+ const fromEnvVal = (env, type, multiple, delim = '\n') => (multiple
39
+ ? env.split(delim).map(v => fromEnvVal(v, type, false))
40
+ : type === 'string'
41
+ ? env
42
+ : type === 'boolean'
43
+ ? env === '1'
44
+ : +env.trim());
45
+ export const isConfigType = (t) => typeof t === 'string' &&
46
+ (t === 'string' || t === 'number' || t === 'boolean');
47
+ const undefOrType = (v, t) => v === undefined || typeof v === t;
48
+ // print the value type, for error message reporting
49
+ const valueType = (v) => typeof v === 'string'
50
+ ? 'string'
51
+ : typeof v === 'boolean'
52
+ ? 'boolean'
53
+ : typeof v === 'number'
54
+ ? 'number'
55
+ : Array.isArray(v)
56
+ ? joinTypes([...new Set(v.map(v => valueType(v)))]) + '[]'
57
+ : `${v.type}${v.multiple ? '[]' : ''}`;
58
+ const joinTypes = (types) => types.length === 1 ? types[0] : `(${types.join('|')})`;
59
+ const isValidValue = (v, type, multi) => {
60
+ if (multi) {
61
+ if (!Array.isArray(v))
62
+ return false;
63
+ return !v.some((v) => !isValidValue(v, type, false));
64
+ }
65
+ if (Array.isArray(v))
66
+ return false;
67
+ return typeof v === type;
68
+ };
69
+ export const isConfigOption = (o, type, multi) => !!o &&
70
+ typeof o === 'object' &&
71
+ isConfigType(o.type) &&
72
+ o.type === type &&
73
+ undefOrType(o.short, 'string') &&
74
+ undefOrType(o.description, 'string') &&
75
+ undefOrType(o.hint, 'string') &&
76
+ undefOrType(o.validate, 'function') &&
77
+ (o.default === undefined || isValidValue(o.default, type, multi)) &&
78
+ !!o.multiple === multi;
79
+ function num(o = {}) {
80
+ const { default: def, validate: val, ...rest } = o;
81
+ if (def !== undefined && !isValidValue(def, 'number', false)) {
82
+ throw new TypeError('invalid default value');
83
+ }
84
+ const validate = val
85
+ ? val
86
+ : undefined;
87
+ return {
88
+ ...rest,
89
+ default: def,
90
+ validate,
91
+ type: 'number',
92
+ multiple: false,
93
+ };
94
+ }
95
+ function numList(o = {}) {
96
+ const { default: def, validate: val, ...rest } = o;
97
+ if (def !== undefined && !isValidValue(def, 'number', true)) {
98
+ throw new TypeError('invalid default value');
99
+ }
100
+ const validate = val
101
+ ? val
102
+ : undefined;
103
+ return {
104
+ ...rest,
105
+ default: def,
106
+ validate,
107
+ type: 'number',
108
+ multiple: true,
109
+ };
110
+ }
111
+ function opt(o = {}) {
112
+ const { default: def, validate: val, ...rest } = o;
113
+ if (def !== undefined && !isValidValue(def, 'string', false)) {
114
+ throw new TypeError('invalid default value');
115
+ }
116
+ const validate = val
117
+ ? val
118
+ : undefined;
119
+ return {
120
+ ...rest,
121
+ default: def,
122
+ validate,
123
+ type: 'string',
124
+ multiple: false,
125
+ };
126
+ }
127
+ function optList(o = {}) {
128
+ const { default: def, validate: val, ...rest } = o;
129
+ if (def !== undefined && !isValidValue(def, 'string', true)) {
130
+ throw new TypeError('invalid default value');
131
+ }
132
+ const validate = val
133
+ ? val
134
+ : undefined;
135
+ return {
136
+ ...rest,
137
+ default: def,
138
+ validate,
139
+ type: 'string',
140
+ multiple: true,
141
+ };
142
+ }
143
+ function flag(o = {}) {
144
+ const { hint, default: def, validate: val, ...rest } = o;
145
+ if (def !== undefined && !isValidValue(def, 'boolean', false)) {
146
+ throw new TypeError('invalid default value');
147
+ }
148
+ const validate = val
149
+ ? val
150
+ : undefined;
151
+ if (hint !== undefined) {
152
+ throw new TypeError('cannot provide hint for flag');
153
+ }
154
+ return {
155
+ ...rest,
156
+ default: def,
157
+ validate,
158
+ type: 'boolean',
159
+ multiple: false,
160
+ };
161
+ }
162
+ function flagList(o = {}) {
163
+ const { hint, default: def, validate: val, ...rest } = o;
164
+ if (def !== undefined && !isValidValue(def, 'boolean', true)) {
165
+ throw new TypeError('invalid default value');
166
+ }
167
+ const validate = val
168
+ ? val
169
+ : undefined;
170
+ if (hint !== undefined) {
171
+ throw new TypeError('cannot provide hint for flag list');
172
+ }
173
+ return {
174
+ ...rest,
175
+ default: def,
176
+ validate,
177
+ type: 'boolean',
178
+ multiple: true,
179
+ };
180
+ }
181
+ const toParseArgsOptionsConfig = (options) => {
182
+ const c = {};
183
+ for (const longOption in options) {
184
+ const config = options[longOption];
185
+ if (isConfigOption(config, 'number', true)) {
186
+ c[longOption] = {
187
+ type: 'string',
188
+ multiple: true,
189
+ default: config.default?.map(c => String(c)),
190
+ };
191
+ }
192
+ else if (isConfigOption(config, 'number', false)) {
193
+ c[longOption] = {
194
+ type: 'string',
195
+ multiple: false,
196
+ default: config.default === undefined
197
+ ? undefined
198
+ : String(config.default),
199
+ };
200
+ }
201
+ else {
202
+ const conf = config;
203
+ c[longOption] = {
204
+ type: conf.type,
205
+ multiple: conf.multiple,
206
+ default: conf.default,
207
+ };
208
+ }
209
+ if (typeof config.short === 'string') {
210
+ c[longOption].short = config.short;
211
+ }
212
+ if (config.type === 'boolean' &&
213
+ !longOption.startsWith('no-') &&
214
+ !options[`no-${longOption}`]) {
215
+ c[`no-${longOption}`] = {
216
+ type: 'boolean',
217
+ multiple: config.multiple,
218
+ };
219
+ }
220
+ }
221
+ return c;
222
+ };
223
+ const isHeading = (r) => r.type === 'heading';
224
+ const isDescription = (r) => r.type === 'description';
225
+ /**
226
+ * Class returned by the {@link jack} function and all configuration
227
+ * definition methods. This is what gets chained together.
228
+ */
229
+ export class Jack {
230
+ #configSet;
231
+ #shorts;
232
+ #options;
233
+ #fields = [];
234
+ #env;
235
+ #envPrefix;
236
+ #allowPositionals;
237
+ #usage;
238
+ constructor(options = {}) {
239
+ this.#options = options;
240
+ this.#allowPositionals = options.allowPositionals !== false;
241
+ this.#env =
242
+ this.#options.env === undefined ? process.env : this.#options.env;
243
+ this.#envPrefix = options.envPrefix;
244
+ // We need to fib a little, because it's always the same object, but it
245
+ // starts out as having an empty config set. Then each method that adds
246
+ // fields returns `this as Jack<C & { ...newConfigs }>`
247
+ this.#configSet = Object.create(null);
248
+ this.#shorts = Object.create(null);
249
+ }
250
+ /**
251
+ * Set the default value (which will still be overridden by env or cli)
252
+ * as if from a parsed config file. The optional `source` param, if
253
+ * provided, will be included in error messages if a value is invalid or
254
+ * unknown.
255
+ */
256
+ setConfigValues(values, source = '') {
257
+ try {
258
+ this.validate(values);
259
+ }
260
+ catch (er) {
261
+ throw Object.assign(er, source ? { source } : {});
262
+ }
263
+ for (const [field, value] of Object.entries(values)) {
264
+ const my = this.#configSet[field];
265
+ my.default = value;
266
+ }
267
+ return this;
268
+ }
269
+ /**
270
+ * Parse a string of arguments, and return the resulting
271
+ * `{ values, positionals }` object.
272
+ *
273
+ * If an {@link JackOptions#envPrefix} is set, then it will read default
274
+ * values from the environment, and write the resulting values back
275
+ * to the environment as well.
276
+ *
277
+ * Environment values always take precedence over any other value, except
278
+ * an explicit CLI setting.
279
+ */
280
+ parse(args = process.argv) {
281
+ if (args === process.argv) {
282
+ args = args.slice(process._eval !== undefined ? 1 : 2);
283
+ }
284
+ if (this.#envPrefix) {
285
+ for (const [field, my] of Object.entries(this.#configSet)) {
286
+ const ek = toEnvKey(this.#envPrefix, field);
287
+ const env = this.#env[ek];
288
+ if (env !== undefined) {
289
+ my.default = fromEnvVal(env, my.type, !!my.multiple, my.delim);
290
+ }
291
+ }
292
+ }
293
+ const options = toParseArgsOptionsConfig(this.#configSet);
294
+ const result = parseArgs({
295
+ args,
296
+ options,
297
+ // always strict, but using our own logic
298
+ strict: false,
299
+ allowPositionals: this.#allowPositionals,
300
+ tokens: true,
301
+ });
302
+ const p = {
303
+ values: {},
304
+ positionals: [],
305
+ };
306
+ for (const token of result.tokens) {
307
+ if (token.kind === 'positional') {
308
+ p.positionals.push(token.value);
309
+ if (this.#options.stopAtPositional) {
310
+ p.positionals.push(...args.slice(token.index + 1));
311
+ return p;
312
+ }
313
+ }
314
+ else if (token.kind === 'option') {
315
+ let value = undefined;
316
+ if (token.name.startsWith('no-')) {
317
+ const my = this.#configSet[token.name];
318
+ const pname = token.name.substring('no-'.length);
319
+ const pos = this.#configSet[pname];
320
+ if (pos &&
321
+ pos.type === 'boolean' &&
322
+ (!my ||
323
+ (my.type === 'boolean' && !!my.multiple === !!pos.multiple))) {
324
+ value = false;
325
+ token.name = pname;
326
+ }
327
+ }
328
+ const my = this.#configSet[token.name];
329
+ if (!my) {
330
+ throw new Error(`Unknown option '${token.rawName}'. ` +
331
+ `To specify a positional argument starting with a '-', ` +
332
+ `place it at the end of the command after '--', as in ` +
333
+ `'-- ${token.rawName}'`);
334
+ }
335
+ if (value === undefined) {
336
+ if (token.value === undefined) {
337
+ if (my.type !== 'boolean') {
338
+ throw new Error(`No value provided for ${token.rawName}, expected ${my.type}`);
339
+ }
340
+ value = true;
341
+ }
342
+ else {
343
+ if (my.type === 'boolean') {
344
+ throw new Error(`Flag ${token.rawName} does not take a value, received '${token.value}'`);
345
+ }
346
+ if (my.type === 'string') {
347
+ value = token.value;
348
+ }
349
+ else {
350
+ value = +token.value;
351
+ if (value !== value) {
352
+ throw new Error(`Invalid value '${token.value}' provided for ` +
353
+ `'${token.rawName}' option, expected number`);
354
+ }
355
+ }
356
+ }
357
+ }
358
+ if (my.multiple) {
359
+ const pv = p.values;
360
+ pv[token.name] = pv[token.name] ?? [];
361
+ pv[token.name].push(value);
362
+ }
363
+ else {
364
+ const pv = p.values;
365
+ pv[token.name] = value;
366
+ }
367
+ }
368
+ }
369
+ for (const [field, c] of Object.entries(this.#configSet)) {
370
+ if (c.default !== undefined && !(field in p.values)) {
371
+ //@ts-ignore
372
+ p.values[field] = c.default;
373
+ }
374
+ }
375
+ for (const [field, value] of Object.entries(p.values)) {
376
+ const valid = this.#configSet[field].validate;
377
+ if (valid && !valid(value)) {
378
+ throw new Error(`Invalid value provided for --${field}: ${JSON.stringify(value)}`);
379
+ }
380
+ }
381
+ this.#writeEnv(p);
382
+ return p;
383
+ }
384
+ /**
385
+ * Validate that any arbitrary object is a valid configuration `values`
386
+ * object. Useful when loading config files or other sources.
387
+ */
388
+ validate(o) {
389
+ if (!o || typeof o !== 'object') {
390
+ throw new Error('Invalid config: not an object');
391
+ }
392
+ for (const field in o) {
393
+ const config = this.#configSet[field];
394
+ if (!config) {
395
+ throw new Error(`Unknown config option: ${field}`);
396
+ }
397
+ if (!isValidValue(o[field], config.type, !!config.multiple)) {
398
+ throw Object.assign(new Error(`Invalid value ${valueType(o[field])} for ${field}, expected ${valueType(config)}`), {
399
+ field,
400
+ value: o[field],
401
+ });
402
+ }
403
+ if (config.validate && !config.validate(o[field])) {
404
+ throw new Error(`Invalid config value for ${field}: ${o[field]}`);
405
+ }
406
+ }
407
+ }
408
+ #writeEnv(p) {
409
+ if (!this.#env || !this.#envPrefix)
410
+ return;
411
+ for (const [field, value] of Object.entries(p.values)) {
412
+ const my = this.#configSet[field];
413
+ this.#env[toEnvKey(this.#envPrefix, field)] = toEnvVal(value, my.delim);
414
+ }
415
+ }
416
+ /**
417
+ * Add a heading to the usage output banner
418
+ */
419
+ heading(text, level) {
420
+ if (level === undefined) {
421
+ level = this.#fields.some(r => isHeading(r)) ? 2 : 1;
422
+ }
423
+ this.#fields.push({ type: 'heading', text, level });
424
+ return this;
425
+ }
426
+ /**
427
+ * Add a long-form description to the usage output at this position.
428
+ */
429
+ description(text, { pre } = {}) {
430
+ this.#fields.push({ type: 'description', text, pre });
431
+ return this;
432
+ }
433
+ /**
434
+ * Add one or more number fields.
435
+ */
436
+ num(fields) {
437
+ return this.#addFields(fields, num);
438
+ }
439
+ /**
440
+ * Add one or more multiple number fields.
441
+ */
442
+ numList(fields) {
443
+ return this.#addFields(fields, numList);
444
+ }
445
+ /**
446
+ * Add one or more string option fields.
447
+ */
448
+ opt(fields) {
449
+ return this.#addFields(fields, opt);
450
+ }
451
+ /**
452
+ * Add one or more multiple string option fields.
453
+ */
454
+ optList(fields) {
455
+ return this.#addFields(fields, optList);
456
+ }
457
+ /**
458
+ * Add one or more flag fields.
459
+ */
460
+ flag(fields) {
461
+ return this.#addFields(fields, flag);
462
+ }
463
+ /**
464
+ * Add one or more multiple flag fields.
465
+ */
466
+ flagList(fields) {
467
+ return this.#addFields(fields, flagList);
468
+ }
469
+ /**
470
+ * Generic field definition method. Similar to flag/flagList/number/etc,
471
+ * but you must specify the `type` (and optionally `multiple` and `delim`)
472
+ * fields on each one, or Jack won't know how to define them.
473
+ */
474
+ addFields(fields) {
475
+ const next = this;
476
+ for (const [name, field] of Object.entries(fields)) {
477
+ this.#validateName(name, field);
478
+ next.#fields.push({
479
+ type: 'config',
480
+ name,
481
+ value: field,
482
+ });
483
+ }
484
+ Object.assign(next.#configSet, fields);
485
+ return next;
486
+ }
487
+ #addFields(fields, fn) {
488
+ const next = this;
489
+ Object.assign(next.#configSet, Object.fromEntries(Object.entries(fields).map(([name, field]) => {
490
+ this.#validateName(name, field);
491
+ const option = fn(field);
492
+ next.#fields.push({
493
+ type: 'config',
494
+ name,
495
+ value: option,
496
+ });
497
+ return [name, option];
498
+ })));
499
+ return next;
500
+ }
501
+ #validateName(name, field) {
502
+ if (!/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(name)) {
503
+ throw new TypeError(`Invalid option name: ${name}, ` +
504
+ `must be '-' delimited ASCII alphanumeric`);
505
+ }
506
+ if (this.#configSet[name]) {
507
+ throw new TypeError(`Cannot redefine option ${field}`);
508
+ }
509
+ if (this.#shorts[name]) {
510
+ throw new TypeError(`Cannot redefine option ${name}, already ` +
511
+ `in use for ${this.#shorts[name]}`);
512
+ }
513
+ if (field.short) {
514
+ if (!/^[a-zA-Z0-9]$/.test(field.short)) {
515
+ throw new TypeError(`Invalid ${name} short option: ${field.short}, ` +
516
+ 'must be 1 ASCII alphanumeric character');
517
+ }
518
+ if (this.#shorts[field.short]) {
519
+ throw new TypeError(`Invalid ${name} short option: ${field.short}, ` +
520
+ `already in use for ${this.#shorts[field.short]}`);
521
+ }
522
+ this.#shorts[field.short] = name;
523
+ this.#shorts[name] = name;
524
+ }
525
+ }
526
+ /**
527
+ * Return the usage banner for the given configuration
528
+ */
529
+ usage() {
530
+ if (this.#usage)
531
+ return this.#usage;
532
+ let headingLevel = 1;
533
+ const ui = cliui({ width });
534
+ const first = this.#fields[0];
535
+ let start = first?.type === 'heading' ? 1 : 0;
536
+ if (first?.type === 'heading') {
537
+ ui.div({
538
+ padding: [0, 0, 0, 0],
539
+ text: normalize(first.text),
540
+ });
541
+ }
542
+ ui.div({ padding: [0, 0, 0, 0], text: 'Usage:' });
543
+ if (this.#options.usage) {
544
+ ui.div({
545
+ text: this.#options.usage,
546
+ padding: [0, 0, 0, 2],
547
+ });
548
+ }
549
+ else {
550
+ const cmd = basename(process.argv[1]);
551
+ const shortFlags = [];
552
+ const shorts = [];
553
+ const flags = [];
554
+ const opts = [];
555
+ for (const [field, config] of Object.entries(this.#configSet)) {
556
+ if (config.short) {
557
+ if (config.type === 'boolean')
558
+ shortFlags.push(config.short);
559
+ else
560
+ shorts.push([config.short, config.hint || field]);
561
+ }
562
+ else {
563
+ if (config.type === 'boolean')
564
+ flags.push(field);
565
+ else
566
+ opts.push([field, config.hint || field]);
567
+ }
568
+ }
569
+ const sf = shortFlags.length ? ' -' + shortFlags.join('') : '';
570
+ const so = shorts.map(([k, v]) => ` --${k}=<${v}>`).join('');
571
+ const lf = flags.map(k => ` --${k}`).join('');
572
+ const lo = opts.map(([k, v]) => ` --${k}=<${v}>`).join('');
573
+ const usage = `${cmd}${sf}${so}${lf}${lo}`.trim();
574
+ ui.div({
575
+ text: usage,
576
+ padding: [0, 0, 0, 2],
577
+ });
578
+ }
579
+ ui.div({ padding: [0, 0, 0, 0], text: '' });
580
+ const maybeDesc = this.#fields[start];
581
+ if (isDescription(maybeDesc)) {
582
+ const print = normalize(maybeDesc.text, maybeDesc.pre);
583
+ start++;
584
+ ui.div({ padding: [0, 0, 0, 0], text: print });
585
+ ui.div({ padding: [0, 0, 0, 0], text: '' });
586
+ }
587
+ // turn each config type into a row, and figure out the width of the
588
+ // left hand indentation for the option descriptions.
589
+ let maxMax = Math.max(12, Math.min(26, Math.floor(width / 3)));
590
+ let maxWidth = 8;
591
+ let prev = undefined;
592
+ const rows = [];
593
+ for (const field of this.#fields.slice(start)) {
594
+ if (field.type !== 'config') {
595
+ if (prev?.type === 'config')
596
+ prev.skipLine = true;
597
+ prev = undefined;
598
+ field.text = normalize(field.text, !!field.pre);
599
+ rows.push(field);
600
+ continue;
601
+ }
602
+ const { value } = field;
603
+ const desc = value.description || '';
604
+ const mult = value.multiple ? 'Can be set multiple times' : '';
605
+ const dmDelim = mult && (desc.includes('\n') ? '\n\n' : '\n');
606
+ const text = normalize(desc + dmDelim + mult);
607
+ const hint = value.hint ||
608
+ (value.type === 'number'
609
+ ? 'n'
610
+ : value.type === 'string'
611
+ ? field.name
612
+ : undefined);
613
+ const short = !value.short
614
+ ? ''
615
+ : value.type === 'boolean'
616
+ ? `-${value.short} `
617
+ : `-${value.short}<${hint}> `;
618
+ const left = value.type === 'boolean'
619
+ ? `${short}--${field.name}`
620
+ : `${short}--${field.name}=<${hint}>`;
621
+ const row = { text, left, type: 'config' };
622
+ if (text.length > width - maxMax) {
623
+ row.skipLine = true;
624
+ }
625
+ if (prev && left.length > maxMax)
626
+ prev.skipLine = true;
627
+ prev = row;
628
+ const len = left.length + 4;
629
+ if (len > maxWidth && len < maxMax) {
630
+ maxWidth = len;
631
+ }
632
+ rows.push(row);
633
+ }
634
+ // every heading/description after the first gets indented by 2
635
+ // extra spaces.
636
+ for (const row of rows) {
637
+ if (row.left) {
638
+ // If the row is too long, don't wrap it
639
+ // Bump the right-hand side down a line to make room
640
+ const configIndent = indent(Math.max(headingLevel, 2));
641
+ if (row.left.length > maxWidth - 2) {
642
+ ui.div({ text: row.left, padding: [0, 0, 0, configIndent] });
643
+ ui.div({ text: row.text, padding: [0, 0, 0, maxWidth] });
644
+ }
645
+ else {
646
+ ui.div({
647
+ text: row.left,
648
+ padding: [0, 1, 0, configIndent],
649
+ width: maxWidth,
650
+ }, { padding: [0, 0, 0, 0], text: row.text });
651
+ }
652
+ if (row.skipLine) {
653
+ ui.div({ padding: [0, 0, 0, 0], text: '' });
654
+ }
655
+ }
656
+ else {
657
+ if (isHeading(row)) {
658
+ const { level } = row;
659
+ headingLevel = level;
660
+ // only h1 and h2 have bottom padding
661
+ // h3-h6 do not
662
+ const b = level <= 2 ? 1 : 0;
663
+ ui.div({ ...row, padding: [0, 0, b, indent(level)] });
664
+ }
665
+ else {
666
+ ui.div({ ...row, padding: [0, 0, 1, indent(headingLevel + 1)] });
667
+ }
668
+ }
669
+ }
670
+ return (this.#usage = ui.toString());
671
+ }
672
+ /**
673
+ * Return the configuration options as a plain object
674
+ */
675
+ toJSON() {
676
+ return Object.fromEntries(Object.entries(this.#configSet).map(([field, def]) => [
677
+ field,
678
+ {
679
+ type: def.type,
680
+ ...(def.multiple ? { multiple: true } : {}),
681
+ ...(def.delim ? { delim: def.delim } : {}),
682
+ ...(def.short ? { short: def.short } : {}),
683
+ ...(def.description ? { description: def.description } : {}),
684
+ ...(def.validate ? { validate: def.validate } : {}),
685
+ ...(def.default !== undefined ? { default: def.default } : {}),
686
+ },
687
+ ]));
688
+ }
689
+ /**
690
+ * Custom printer for `util.inspect`
691
+ */
692
+ [inspect.custom](_, options) {
693
+ return `Jack ${inspect(this.toJSON(), options)}`;
694
+ }
695
+ }
696
+ // Unwrap and un-indent, so we can wrap description
697
+ // strings however makes them look nice in the code.
698
+ const normalize = (s, pre = false) => pre
699
+ // prepend a ZWSP to each line so cliui doesn't strip it.
700
+ ? s.split('\n').map(l => `\u200b${l}`).join('\n')
701
+ : s
702
+ // remove single line breaks, except for lists
703
+ .replace(/([^\n])\n[ \t]*([^\n])/g, (_, $1, $2) => !/^[-*]/.test($2) ? `${$1} ${$2}` : `${$1}\n${$2}`)
704
+ // normalize mid-line whitespace
705
+ .replace(/([^\n])[ \t]+([^\n])/g, '$1 $2')
706
+ // two line breaks are enough
707
+ .replace(/\n{3,}/g, '\n\n')
708
+ .trim();
709
+ /**
710
+ * Main entry point. Create and return a {@link Jack} object.
711
+ */
712
+ export const jack = (options = {}) => new Jack(options);
713
+ //# sourceMappingURL=index.js.map