@socketsecurity/lib 3.2.2 → 3.2.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 (307) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/abort.js +1 -1
  3. package/dist/agent.js +1 -1
  4. package/dist/ansi.js +1 -1
  5. package/dist/argv/flags.js +1 -1
  6. package/dist/argv/parse.js +1 -1
  7. package/dist/arrays.js +1 -1
  8. package/dist/bin.js +1 -1
  9. package/dist/cacache.js +1 -1
  10. package/dist/cache-with-ttl.js +1 -1
  11. package/dist/constants/agents.js +1 -1
  12. package/dist/constants/core.js +1 -1
  13. package/dist/constants/encoding.js +1 -1
  14. package/dist/constants/github.js +1 -1
  15. package/dist/constants/licenses.js +1 -1
  16. package/dist/constants/node.js +1 -1
  17. package/dist/constants/packages.js +1 -1
  18. package/dist/constants/paths.js +1 -1
  19. package/dist/constants/platform.js +1 -1
  20. package/dist/constants/process.js +1 -1
  21. package/dist/constants/socket.js +1 -1
  22. package/dist/constants/testing.js +1 -1
  23. package/dist/constants/time.js +1 -1
  24. package/dist/constants/typescript.js +1 -1
  25. package/dist/cover/code.js +1 -1
  26. package/dist/cover/formatters.js +1 -1
  27. package/dist/cover/type.js +1 -1
  28. package/dist/cover/types.js +1 -1
  29. package/dist/debug.js +1 -1
  30. package/dist/dlx-binary.js +1 -1
  31. package/dist/dlx-manifest.js +1 -1
  32. package/dist/dlx-package.js +1 -1
  33. package/dist/dlx.js +1 -1
  34. package/dist/effects/pulse-frames.js +4 -4
  35. package/dist/effects/text-shimmer.js +1 -1
  36. package/dist/effects/types.js +1 -1
  37. package/dist/effects/ultra.js +1 -1
  38. package/dist/env/ci.js +1 -1
  39. package/dist/env/debug.js +1 -1
  40. package/dist/env/github.js +1 -1
  41. package/dist/env/helpers.js +1 -1
  42. package/dist/env/home.js +1 -1
  43. package/dist/env/locale.js +1 -1
  44. package/dist/env/node-auth-token.js +1 -1
  45. package/dist/env/node-env.js +1 -1
  46. package/dist/env/npm.js +1 -1
  47. package/dist/env/package-manager.js +1 -1
  48. package/dist/env/path.js +1 -1
  49. package/dist/env/pre-commit.js +1 -1
  50. package/dist/env/rewire.js +1 -1
  51. package/dist/env/shell.js +1 -1
  52. package/dist/env/socket-cli-shadow.js +1 -1
  53. package/dist/env/socket-cli.js +1 -1
  54. package/dist/env/socket.js +1 -1
  55. package/dist/env/temp-dir.js +1 -1
  56. package/dist/env/term.js +1 -1
  57. package/dist/env/test.js +1 -1
  58. package/dist/env/windows.js +1 -1
  59. package/dist/env/xdg.js +1 -1
  60. package/dist/env.js +1 -1
  61. package/dist/external/@inquirer/confirm.js +16 -15
  62. package/dist/external/@inquirer/input.js +16 -15
  63. package/dist/external/@inquirer/password.js +17 -16
  64. package/dist/external/@inquirer/search.js +18 -17
  65. package/dist/external/@inquirer/select.js +19 -18
  66. package/dist/external/@npmcli/package-json/lib/read-package.js +7 -1
  67. package/dist/external/@npmcli/package-json/lib/sort.js +6 -1
  68. package/dist/external/@npmcli/package-json.js +18 -0
  69. package/dist/external/@npmcli/promise-spawn.js +2 -1
  70. package/dist/external/@socketregistry/is-unicode-supported.js +2 -1
  71. package/dist/external/@socketregistry/packageurl-js.js +3 -2
  72. package/dist/external/@socketregistry/yocto-spinner.js +5 -4
  73. package/dist/external/@yarnpkg/extensions.js +2 -1
  74. package/dist/external/cacache.js +10 -9
  75. package/dist/external/debug.js +2 -5
  76. package/dist/external/del.js +3 -2
  77. package/dist/external/fast-glob.js +3 -2
  78. package/dist/external/fast-sort.js +2 -1
  79. package/dist/external/get-east-asian-width.js +2 -1
  80. package/dist/external/libnpmexec.js +6 -0
  81. package/dist/external/libnpmpack.js +68 -71
  82. package/dist/external/make-fetch-happen.js +17 -20
  83. package/dist/external/normalize-package-data.js +3 -2
  84. package/dist/external/npm-package-arg.js +3 -2
  85. package/dist/external/pacote.js +38 -41
  86. package/dist/external/picomatch.js +2 -1
  87. package/dist/external/semver.js +2 -1
  88. package/dist/external/spdx-correct.js +2 -1
  89. package/dist/external/spdx-expression-parse.js +2 -1
  90. package/dist/external/streaming-iterables.js +2 -1
  91. package/dist/external/validate-npm-package-name.js +2 -1
  92. package/dist/external/which.js +2 -1
  93. package/dist/external/yargs-parser.js +2 -1
  94. package/dist/external/yoctocolors-cjs.js +2 -1
  95. package/dist/external/zod.js +10 -9
  96. package/dist/fs.js +1 -1
  97. package/dist/functions.js +1 -1
  98. package/dist/git.js +1 -1
  99. package/dist/github.js +1 -1
  100. package/dist/globs.js +1 -1
  101. package/dist/http-request.js +1 -1
  102. package/dist/ipc.js +1 -1
  103. package/dist/json.js +1 -1
  104. package/dist/links/index.js +1 -1
  105. package/dist/logger.d.ts +29 -4
  106. package/dist/logger.js +34 -5
  107. package/dist/maintained-node-versions.js +1 -1
  108. package/dist/memoization.js +1 -1
  109. package/dist/objects.js +1 -1
  110. package/dist/packages/editable.js +1 -1
  111. package/dist/packages/exports.js +1 -1
  112. package/dist/packages/isolation.js +1 -1
  113. package/dist/packages/licenses.js +1 -1
  114. package/dist/packages/manifest.js +1 -1
  115. package/dist/packages/normalize.js +1 -1
  116. package/dist/packages/operations.js +1 -1
  117. package/dist/packages/paths.js +1 -1
  118. package/dist/packages/provenance.js +1 -1
  119. package/dist/packages/specs.js +1 -1
  120. package/dist/packages/validation.js +1 -1
  121. package/dist/packages.js +1 -1
  122. package/dist/path.js +1 -1
  123. package/dist/paths/rewire.js +1 -1
  124. package/dist/paths.js +1 -1
  125. package/dist/performance.js +1 -1
  126. package/dist/process-lock.js +1 -1
  127. package/dist/promise-queue.js +1 -1
  128. package/dist/promises.js +1 -1
  129. package/dist/regexps.js +1 -1
  130. package/dist/sea.js +1 -1
  131. package/dist/shadow.js +1 -1
  132. package/dist/signal-exit.js +1 -1
  133. package/dist/sorts.js +1 -1
  134. package/dist/spawn.js +1 -1
  135. package/dist/spinner.js +1 -1
  136. package/dist/ssri.js +1 -1
  137. package/dist/stdio/clear.js +1 -1
  138. package/dist/stdio/divider.js +1 -1
  139. package/dist/stdio/footer.js +1 -1
  140. package/dist/stdio/header.js +1 -1
  141. package/dist/stdio/mask.js +1 -1
  142. package/dist/stdio/progress.js +1 -1
  143. package/dist/stdio/prompts.js +1 -1
  144. package/dist/stdio/stderr.js +1 -1
  145. package/dist/stdio/stdout.js +1 -1
  146. package/dist/streams.js +1 -1
  147. package/dist/strings.js +1 -1
  148. package/dist/suppress-warnings.js +1 -1
  149. package/dist/tables.js +1 -1
  150. package/dist/temporary-executor.js +1 -1
  151. package/dist/themes/context.js +1 -1
  152. package/dist/themes/index.js +1 -1
  153. package/dist/themes/themes.js +1 -1
  154. package/dist/themes/types.js +1 -1
  155. package/dist/themes/utils.js +1 -1
  156. package/dist/types.js +1 -1
  157. package/dist/url.js +1 -1
  158. package/dist/utils/get-ipc.js +1 -1
  159. package/dist/validation/json-parser.js +1 -1
  160. package/dist/validation/types.js +1 -1
  161. package/dist/versions.js +1 -1
  162. package/dist/words.js +1 -1
  163. package/dist/zod.js +1 -1
  164. package/package.json +1 -1
  165. package/dist/abort.js.map +0 -7
  166. package/dist/agent.js.map +0 -7
  167. package/dist/ansi.js.map +0 -7
  168. package/dist/argv/flags.js.map +0 -7
  169. package/dist/argv/parse.js.map +0 -7
  170. package/dist/arrays.js.map +0 -7
  171. package/dist/bin.js.map +0 -7
  172. package/dist/cacache.js.map +0 -7
  173. package/dist/cache-with-ttl.js.map +0 -7
  174. package/dist/constants/agents.js.map +0 -7
  175. package/dist/constants/core.js.map +0 -7
  176. package/dist/constants/encoding.js.map +0 -7
  177. package/dist/constants/github.js.map +0 -7
  178. package/dist/constants/licenses.js.map +0 -7
  179. package/dist/constants/node.js.map +0 -7
  180. package/dist/constants/packages.js.map +0 -7
  181. package/dist/constants/paths.js.map +0 -7
  182. package/dist/constants/platform.js.map +0 -7
  183. package/dist/constants/process.js.map +0 -7
  184. package/dist/constants/socket.js.map +0 -7
  185. package/dist/constants/testing.js.map +0 -7
  186. package/dist/constants/time.js.map +0 -7
  187. package/dist/constants/typescript.js.map +0 -7
  188. package/dist/cover/code.js.map +0 -7
  189. package/dist/cover/formatters.js.map +0 -7
  190. package/dist/cover/type.js.map +0 -7
  191. package/dist/cover/types.js.map +0 -7
  192. package/dist/debug.js.map +0 -7
  193. package/dist/dlx-binary.js.map +0 -7
  194. package/dist/dlx-manifest.js.map +0 -7
  195. package/dist/dlx-package.js.map +0 -7
  196. package/dist/dlx.js.map +0 -7
  197. package/dist/effects/pulse-frames.js.map +0 -7
  198. package/dist/effects/text-shimmer.js.map +0 -7
  199. package/dist/effects/types.js.map +0 -7
  200. package/dist/effects/ultra.js.map +0 -7
  201. package/dist/env/ci.js.map +0 -7
  202. package/dist/env/debug.js.map +0 -7
  203. package/dist/env/github.js.map +0 -7
  204. package/dist/env/helpers.js.map +0 -7
  205. package/dist/env/home.js.map +0 -7
  206. package/dist/env/locale.js.map +0 -7
  207. package/dist/env/node-auth-token.js.map +0 -7
  208. package/dist/env/node-env.js.map +0 -7
  209. package/dist/env/npm.js.map +0 -7
  210. package/dist/env/package-manager.js.map +0 -7
  211. package/dist/env/path.js.map +0 -7
  212. package/dist/env/pre-commit.js.map +0 -7
  213. package/dist/env/rewire.js.map +0 -7
  214. package/dist/env/shell.js.map +0 -7
  215. package/dist/env/socket-cli-shadow.js.map +0 -7
  216. package/dist/env/socket-cli.js.map +0 -7
  217. package/dist/env/socket.js.map +0 -7
  218. package/dist/env/temp-dir.js.map +0 -7
  219. package/dist/env/term.js.map +0 -7
  220. package/dist/env/test.js.map +0 -7
  221. package/dist/env/windows.js.map +0 -7
  222. package/dist/env/xdg.js.map +0 -7
  223. package/dist/env.js.map +0 -7
  224. package/dist/external/@npmcli/package-json/index.js +0 -1
  225. package/dist/external/@socketregistry/is-unicode-supported.d.ts +0 -2
  226. package/dist/external/@socketregistry/yocto-spinner.d.ts +0 -12
  227. package/dist/external/@yarnpkg/extensions.d.ts +0 -4
  228. package/dist/external/cacache.d.ts +0 -86
  229. package/dist/external/debug.d.ts +0 -22
  230. package/dist/external/del.d.ts +0 -1
  231. package/dist/external/fast-sort.d.ts +0 -3
  232. package/dist/external/get-east-asian-width.d.ts +0 -5
  233. package/dist/external/libnpmexec.d.ts +0 -33
  234. package/dist/external/libnpmpack.d.ts +0 -2
  235. package/dist/external/make-fetch-happen.d.ts +0 -15
  236. package/dist/external/pacote.d.ts +0 -14
  237. package/dist/external/semver.d.ts +0 -2
  238. package/dist/external/yargs-parser.d.ts +0 -2
  239. package/dist/external/yoctocolors-cjs.d.ts +0 -52
  240. package/dist/external/zod.d.ts +0 -1
  241. package/dist/fs.js.map +0 -7
  242. package/dist/functions.js.map +0 -7
  243. package/dist/git.js.map +0 -7
  244. package/dist/github.js.map +0 -7
  245. package/dist/globs.js.map +0 -7
  246. package/dist/http-request.js.map +0 -7
  247. package/dist/ipc.js.map +0 -7
  248. package/dist/json.js.map +0 -7
  249. package/dist/links/index.js.map +0 -7
  250. package/dist/logger.js.map +0 -7
  251. package/dist/maintained-node-versions.js.map +0 -7
  252. package/dist/memoization.js.map +0 -7
  253. package/dist/objects.js.map +0 -7
  254. package/dist/packages/editable.js.map +0 -7
  255. package/dist/packages/exports.js.map +0 -7
  256. package/dist/packages/isolation.js.map +0 -7
  257. package/dist/packages/licenses.js.map +0 -7
  258. package/dist/packages/manifest.js.map +0 -7
  259. package/dist/packages/normalize.js.map +0 -7
  260. package/dist/packages/operations.js.map +0 -7
  261. package/dist/packages/paths.js.map +0 -7
  262. package/dist/packages/provenance.js.map +0 -7
  263. package/dist/packages/specs.js.map +0 -7
  264. package/dist/packages/validation.js.map +0 -7
  265. package/dist/packages.js.map +0 -7
  266. package/dist/path.js.map +0 -7
  267. package/dist/paths/rewire.js.map +0 -7
  268. package/dist/paths.js.map +0 -7
  269. package/dist/performance.js.map +0 -7
  270. package/dist/process-lock.js.map +0 -7
  271. package/dist/promise-queue.js.map +0 -7
  272. package/dist/promises.js.map +0 -7
  273. package/dist/regexps.js.map +0 -7
  274. package/dist/sea.js.map +0 -7
  275. package/dist/shadow.js.map +0 -7
  276. package/dist/signal-exit.js.map +0 -7
  277. package/dist/sorts.js.map +0 -7
  278. package/dist/spawn.js.map +0 -7
  279. package/dist/spinner.js.map +0 -7
  280. package/dist/ssri.js.map +0 -7
  281. package/dist/stdio/clear.js.map +0 -7
  282. package/dist/stdio/divider.js.map +0 -7
  283. package/dist/stdio/footer.js.map +0 -7
  284. package/dist/stdio/header.js.map +0 -7
  285. package/dist/stdio/mask.js.map +0 -7
  286. package/dist/stdio/progress.js.map +0 -7
  287. package/dist/stdio/prompts.js.map +0 -7
  288. package/dist/stdio/stderr.js.map +0 -7
  289. package/dist/stdio/stdout.js.map +0 -7
  290. package/dist/streams.js.map +0 -7
  291. package/dist/strings.js.map +0 -7
  292. package/dist/suppress-warnings.js.map +0 -7
  293. package/dist/tables.js.map +0 -7
  294. package/dist/temporary-executor.js.map +0 -7
  295. package/dist/themes/context.js.map +0 -7
  296. package/dist/themes/index.js.map +0 -7
  297. package/dist/themes/themes.js.map +0 -7
  298. package/dist/themes/types.js.map +0 -7
  299. package/dist/themes/utils.js.map +0 -7
  300. package/dist/types.js.map +0 -7
  301. package/dist/url.js.map +0 -7
  302. package/dist/utils/get-ipc.js.map +0 -7
  303. package/dist/validation/json-parser.js.map +0 -7
  304. package/dist/validation/types.js.map +0 -7
  305. package/dist/versions.js.map +0 -7
  306. package/dist/words.js.map +0 -7
  307. package/dist/zod.js.map +0 -7
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -97,4 +98,3 @@ async function withSuppressedWarnings(warningType, callback) {
97
98
  suppressWarningType,
98
99
  withSuppressedWarnings
99
100
  });
100
- //# sourceMappingURL=suppress-warnings.js.map
package/dist/tables.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __create = Object.create;
3
4
  var __defProp = Object.defineProperty;
@@ -127,4 +128,3 @@ function formatSimpleTable(data, columns) {
127
128
  formatSimpleTable,
128
129
  formatTable
129
130
  });
130
- //# sourceMappingURL=tables.js.map
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -52,4 +53,3 @@ function isRunningInTemporaryExecutor(cwd = process.cwd()) {
52
53
  0 && (module.exports = {
53
54
  isRunningInTemporaryExecutor
54
55
  });
55
- //# sourceMappingURL=temporary-executor.js.map
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -70,4 +71,3 @@ function emitThemeChange(theme) {
70
71
  withTheme,
71
72
  withThemeSync
72
73
  });
73
- //# sourceMappingURL=context.js.map
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -56,4 +57,3 @@ var import_utils = require("./utils");
56
57
  withTheme,
57
58
  withThemeSync
58
59
  });
59
- //# sourceMappingURL=index.js.map
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -203,4 +204,3 @@ const THEMES = {
203
204
  THEMES,
204
205
  ULTRA_THEME
205
206
  });
206
- //# sourceMappingURL=themes.js.map
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -14,4 +15,3 @@ var __copyProps = (to, from, except, desc) => {
14
15
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
16
  var types_exports = {};
16
17
  module.exports = __toCommonJS(types_exports);
17
- //# sourceMappingURL=types.js.map
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -115,4 +116,3 @@ function createTheme(config) {
115
116
  resolveColor,
116
117
  resolveShimmerColor
117
118
  });
118
- //# sourceMappingURL=utils.js.map
package/dist/types.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -58,4 +59,3 @@ var PURL_Type = /* @__PURE__ */ ((PURL_Type2) => {
58
59
  0 && (module.exports = {
59
60
  PURL_Type
60
61
  });
61
- //# sourceMappingURL=types.js.map
package/dist/url.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -141,4 +142,3 @@ function urlSearchParamAsNumber(params, key, options) {
141
142
  urlSearchParamsGetArray,
142
143
  urlSearchParamsGetBoolean
143
144
  });
144
- //# sourceMappingURL=url.js.map
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -57,4 +58,3 @@ var get_ipc_default = getIpc;
57
58
  0 && (module.exports = {
58
59
  getIpc
59
60
  });
60
- //# sourceMappingURL=get-ipc.js.map
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -126,4 +127,3 @@ function* streamNdjson(ndjson, schema, options) {
126
127
  streamNdjson,
127
128
  tryJsonParse
128
129
  });
129
- //# sourceMappingURL=json-parser.js.map
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -14,4 +15,3 @@ var __copyProps = (to, from, except, desc) => {
14
15
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
16
  var types_exports = {};
16
17
  module.exports = __toCommonJS(types_exports);
17
- //# sourceMappingURL=types.js.map
package/dist/versions.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -153,4 +154,3 @@ function versionDiff(version1, version2) {
153
154
  sortVersionsDesc,
154
155
  versionDiff
155
156
  });
156
- //# sourceMappingURL=versions.js.map
package/dist/words.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -49,4 +50,3 @@ function pluralize(word, options) {
49
50
  determineArticle,
50
51
  pluralize
51
52
  });
52
- //# sourceMappingURL=words.js.map
package/dist/zod.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* Socket Lib - Built with esbuild */
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -26,4 +27,3 @@ var import_zod = require("./external/zod");
26
27
  0 && (module.exports = {
27
28
  z
28
29
  });
29
- //# sourceMappingURL=zod.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@socketsecurity/lib",
3
- "version": "3.2.2",
3
+ "version": "3.2.4",
4
4
  "license": "MIT",
5
5
  "description": "Core utilities and infrastructure for Socket.dev security tools",
6
6
  "keywords": [
package/dist/abort.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/abort.ts"],
4
- "sourcesContent": ["/**\n * @fileoverview Abort signal utilities.\n */\n\n/**\n * Create a composite AbortSignal from multiple signals.\n */\nexport function createCompositeAbortSignal(\n ...signals: Array<AbortSignal | null | undefined>\n): AbortSignal {\n const validSignals = signals.filter(s => s != null) as AbortSignal[]\n\n if (validSignals.length === 0) {\n return new AbortController().signal\n }\n\n if (validSignals.length === 1) {\n return validSignals[0]!\n }\n\n const controller = new AbortController()\n\n for (const signal of validSignals) {\n if (signal.aborted) {\n controller.abort()\n return controller.signal\n }\n signal.addEventListener('abort', () => controller.abort(), { once: true })\n }\n\n return controller.signal\n}\n\n/**\n * Create an AbortSignal that triggers after a timeout.\n */\nexport function createTimeoutSignal(ms: number): AbortSignal {\n if (typeof ms !== 'number' || Number.isNaN(ms)) {\n throw new TypeError('timeout must be a number')\n }\n if (!Number.isFinite(ms)) {\n throw new TypeError('timeout must be a finite number')\n }\n if (ms <= 0) {\n throw new TypeError('timeout must be a positive number')\n }\n const controller = new AbortController()\n setTimeout(() => controller.abort(), ms)\n return controller.signal\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOO,SAAS,8BACX,SACU;AACb,QAAM,eAAe,QAAQ,OAAO,OAAK,KAAK,IAAI;AAElD,MAAI,aAAa,WAAW,GAAG;AAC7B,WAAO,IAAI,gBAAgB,EAAE;AAAA,EAC/B;AAEA,MAAI,aAAa,WAAW,GAAG;AAC7B,WAAO,aAAa,CAAC;AAAA,EACvB;AAEA,QAAM,aAAa,IAAI,gBAAgB;AAEvC,aAAW,UAAU,cAAc;AACjC,QAAI,OAAO,SAAS;AAClB,iBAAW,MAAM;AACjB,aAAO,WAAW;AAAA,IACpB;AACA,WAAO,iBAAiB,SAAS,MAAM,WAAW,MAAM,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,EAC3E;AAEA,SAAO,WAAW;AACpB;AAKO,SAAS,oBAAoB,IAAyB;AAC3D,MAAI,OAAO,OAAO,YAAY,OAAO,MAAM,EAAE,GAAG;AAC9C,UAAM,IAAI,UAAU,0BAA0B;AAAA,EAChD;AACA,MAAI,CAAC,OAAO,SAAS,EAAE,GAAG;AACxB,UAAM,IAAI,UAAU,iCAAiC;AAAA,EACvD;AACA,MAAI,MAAM,GAAG;AACX,UAAM,IAAI,UAAU,mCAAmC;AAAA,EACzD;AACA,QAAM,aAAa,IAAI,gBAAgB;AACvC,aAAW,MAAM,WAAW,MAAM,GAAG,EAAE;AACvC,SAAO,WAAW;AACpB;",
6
- "names": []
7
- }
package/dist/agent.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/agent.ts"],
4
- "sourcesContent": ["/**\n * @fileoverview Package manager agent for executing npm, pnpm, and yarn commands.\n * Provides cross-platform utilities with optimized flags and security defaults.\n *\n * SECURITY: Array-Based Arguments Prevent Command Injection\n *\n * All functions in this module (execNpm, execPnpm, execYarn) use array-based\n * arguments when calling spawn(). This is the PRIMARY DEFENSE against command\n * injection attacks.\n *\n * When arguments are passed as an array:\n * spawn(cmd, ['install', packageName, '--flag'], options)\n *\n * Node.js handles escaping automatically. Each argument is passed directly to\n * the OS without shell interpretation. Shell metacharacters like ; | & $ ( )\n * are treated as LITERAL STRINGS, not as commands.\n *\n * Example: If packageName = \"lodash; rm -rf /\", the package manager will try to\n * install a package literally named \"lodash; rm -rf /\" (which doesn't exist),\n * rather than executing the malicious command.\n *\n * This approach is secure even when shell: true is used on Windows for .cmd\n * file resolution, because Node.js properly escapes each array element.\n */\n\nimport { getCI } from '#env/ci'\n\nimport { WIN32 } from '#constants/platform'\nimport { execBin } from './bin'\nimport { isDebug } from './debug'\nimport { findUpSync } from './fs'\nimport { getOwn } from './objects'\nimport type { SpawnOptions } from './spawn'\nimport { spawn } from './spawn'\n\n// Note: npm flag checking is done with regex patterns in the is*Flag functions below.\n\nconst pnpmIgnoreScriptsFlags = new Set([\n '--ignore-scripts',\n '--no-ignore-scripts',\n])\n\nconst pnpmFrozenLockfileFlags = new Set([\n '--frozen-lockfile',\n '--no-frozen-lockfile',\n])\n\nconst pnpmInstallCommands = new Set(['install', 'i'])\n\n// Commands that support --ignore-scripts flag in pnpm:\n// Installation-related: install, add, update, remove, link, unlink, import, rebuild.\nconst pnpmInstallLikeCommands = new Set([\n 'install',\n 'i',\n 'add',\n 'update',\n 'up',\n 'remove',\n 'rm',\n 'link',\n 'ln',\n 'unlink',\n 'import',\n 'rebuild',\n 'rb',\n])\n\n// Commands that support --ignore-scripts flag in yarn:\n// Similar to npm/pnpm: installation-related commands.\nconst yarnInstallLikeCommands = new Set([\n 'install',\n 'add',\n 'upgrade',\n 'remove',\n 'link',\n 'unlink',\n 'import',\n])\n\n/**\n * Execute npm commands with optimized flags and settings.\n *\n * SECURITY: Uses array-based arguments to prevent command injection. All elements\n * in the args array are properly escaped by Node.js when passed to spawn().\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function execNpm(args: string[], options?: SpawnOptions | undefined) {\n const useDebug = isDebug()\n const terminatorPos = args.indexOf('--')\n const npmArgs = (\n terminatorPos === -1 ? args : args.slice(0, terminatorPos)\n ).filter(\n (a: string) =>\n !isNpmAuditFlag(a) && !isNpmFundFlag(a) && !isNpmProgressFlag(a),\n )\n const otherArgs = terminatorPos === -1 ? [] : args.slice(terminatorPos)\n const logLevelArgs =\n // The default value of loglevel is \"notice\". We default to \"warn\" which is\n // one level quieter.\n useDebug || npmArgs.some(isNpmLoglevelFlag) ? [] : ['--loglevel', 'warn']\n // SECURITY: Array-based arguments prevent command injection. Each element is\n // passed directly to the OS without shell interpretation.\n //\n // NOTE: We don't apply hardening flags to npm because:\n // 1. npm is a trusted system tool installed with Node.js\n // 2. npm requires full system access (filesystem, network, child processes)\n // 3. Hardening flags would prevent npm from functioning (even with --allow-* grants)\n // 4. The permission model is intended for untrusted user code, not package managers\n //\n // We also use the npm binary wrapper instead of calling cli.js directly because\n // cli.js exports a function that needs to be invoked with process as an argument.\n const npmBin = /*@__PURE__*/ require('#constants/agents').NPM_BIN_PATH\n return spawn(\n npmBin,\n [\n // Even though '--loglevel=error' is passed npm will still run through\n // code paths for 'audit' and 'fund' unless '--no-audit' and '--no-fund'\n // flags are passed.\n '--no-audit',\n '--no-fund',\n // Add `--no-progress` and `--silent` flags to fix input being swallowed\n // by the spinner when running the command with recent versions of npm.\n '--no-progress',\n // Add '--loglevel=error' if a loglevel flag is not provided and the\n // SOCKET_DEBUG environment variable is not truthy.\n ...logLevelArgs,\n ...npmArgs,\n ...otherArgs,\n ],\n {\n __proto__: null,\n // On Windows, npm is a .cmd file that requires shell to execute.\n shell: WIN32,\n ...options,\n } as SpawnOptions,\n )\n}\n\nexport interface PnpmOptions extends SpawnOptions {\n allowLockfileUpdate?: boolean\n}\n\n/**\n * Execute pnpm commands with optimized flags and settings.\n *\n * SECURITY: Uses array-based arguments to prevent command injection. All elements\n * in the args array are properly escaped by Node.js when passed to execBin().\n */\n/*@__NO_SIDE_EFFECTS__*/\n\nexport function execPnpm(args: string[], options?: PnpmOptions | undefined) {\n const { allowLockfileUpdate, ...extBinOpts } = {\n __proto__: null,\n ...options,\n } as PnpmOptions\n const useDebug = isDebug()\n const terminatorPos = args.indexOf('--')\n const pnpmArgs = (\n terminatorPos === -1 ? args : args.slice(0, terminatorPos)\n ).filter((a: string) => !isNpmProgressFlag(a))\n const otherArgs = terminatorPos === -1 ? [] : args.slice(terminatorPos)\n\n const firstArg = pnpmArgs[0]\n const supportsIgnoreScripts = firstArg\n ? pnpmInstallLikeCommands.has(firstArg)\n : false\n\n // pnpm uses --loglevel for all commands.\n const logLevelArgs =\n useDebug || pnpmArgs.some(isPnpmLoglevelFlag) ? [] : ['--loglevel', 'warn']\n\n // Only add --ignore-scripts for commands that support it.\n const hasIgnoreScriptsFlag = pnpmArgs.some(isPnpmIgnoreScriptsFlag)\n const ignoreScriptsArgs =\n !supportsIgnoreScripts || hasIgnoreScriptsFlag ? [] : ['--ignore-scripts']\n\n // In CI environments, pnpm uses --frozen-lockfile by default which prevents lockfile updates.\n // For commands that need to update the lockfile (like install with new packages/overrides),\n // we need to explicitly add --no-frozen-lockfile in CI mode if not already present.\n const frozenLockfileArgs = []\n if (\n getCI() &&\n allowLockfileUpdate &&\n firstArg &&\n isPnpmInstallCommand(firstArg) &&\n !pnpmArgs.some(isPnpmFrozenLockfileFlag)\n ) {\n frozenLockfileArgs.push('--no-frozen-lockfile')\n }\n\n // Note: pnpm doesn't have a --no-progress flag. It uses --reporter instead.\n // We removed --no-progress as it causes \"Unknown option\" errors with pnpm.\n\n // SECURITY: Array-based arguments prevent command injection. Each element is\n // passed directly to the OS without shell interpretation.\n return execBin(\n 'pnpm',\n [\n // Add '--loglevel=warn' if a loglevel flag is not provided and debug is off.\n ...logLevelArgs,\n // Add '--ignore-scripts' by default for security (only for installation commands).\n ...ignoreScriptsArgs,\n // Add '--no-frozen-lockfile' in CI when lockfile updates are needed.\n ...frozenLockfileArgs,\n ...pnpmArgs,\n ...otherArgs,\n ],\n extBinOpts,\n )\n}\n\n/**\n * Execute yarn commands with optimized flags and settings.\n *\n * SECURITY: Uses array-based arguments to prevent command injection. All elements\n * in the args array are properly escaped by Node.js when passed to execBin().\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function execYarn(\n args: string[],\n options?: import('./spawn').SpawnOptions,\n) {\n const useDebug = isDebug()\n const terminatorPos = args.indexOf('--')\n const yarnArgs = (\n terminatorPos === -1 ? args : args.slice(0, terminatorPos)\n ).filter((a: string) => !isNpmProgressFlag(a))\n const otherArgs = terminatorPos === -1 ? [] : args.slice(terminatorPos)\n\n const firstArg = yarnArgs[0]\n const supportsIgnoreScripts = firstArg\n ? yarnInstallLikeCommands.has(firstArg)\n : false\n\n // Yarn uses --silent flag for quieter output.\n const logLevelArgs =\n useDebug || yarnArgs.some(isNpmLoglevelFlag) ? [] : ['--silent']\n\n // Only add --ignore-scripts for commands that support it.\n const hasIgnoreScriptsFlag = yarnArgs.some(isPnpmIgnoreScriptsFlag)\n const ignoreScriptsArgs =\n !supportsIgnoreScripts || hasIgnoreScriptsFlag ? [] : ['--ignore-scripts']\n\n // SECURITY: Array-based arguments prevent command injection. Each element is\n // passed directly to the OS without shell interpretation.\n return execBin(\n 'yarn',\n [\n // Add '--silent' if a loglevel flag is not provided and debug is off.\n ...logLevelArgs,\n // Add '--ignore-scripts' by default for security (only for installation commands).\n ...ignoreScriptsArgs,\n ...yarnArgs,\n ...otherArgs,\n ],\n {\n __proto__: null,\n ...options,\n } as SpawnOptions,\n )\n}\n\n/**\n * Check if a command argument is an npm audit flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmAuditFlag(cmdArg: string): boolean {\n return /^--(no-)?audit(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm fund flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmFundFlag(cmdArg: string): boolean {\n return /^--(no-)?fund(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm loglevel flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmLoglevelFlag(cmdArg: string): boolean {\n // https://docs.npmjs.com/cli/v11/using-npm/logging#setting-log-levels\n if (/^--loglevel(=.*)?$/.test(cmdArg)) {\n return true\n }\n // Check for long form flags\n if (/^--(silent|verbose|info|warn|error|quiet)$/.test(cmdArg)) {\n return true\n }\n // Check for shorthand flags\n return /^-(s|q|d|dd|ddd|v)$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm node-options flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmNodeOptionsFlag(cmdArg: string): boolean {\n // https://docs.npmjs.com/cli/v9/using-npm/config#node-options\n return /^--node-options(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm progress flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmProgressFlag(cmdArg: string): boolean {\n return /^--(no-)?progress(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is a pnpm ignore-scripts flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isPnpmIgnoreScriptsFlag(cmdArg: string): boolean {\n return pnpmIgnoreScriptsFlags.has(cmdArg)\n}\n\n/**\n * Check if a command argument is a pnpm frozen-lockfile flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isPnpmFrozenLockfileFlag(cmdArg: string): boolean {\n return pnpmFrozenLockfileFlags.has(cmdArg)\n}\n\n/**\n * Check if a command argument is a pnpm install command.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isPnpmInstallCommand(cmdArg: string): boolean {\n return pnpmInstallCommands.has(cmdArg)\n}\n\n/**\n * Alias for isNpmLoglevelFlag for pnpm usage.\n */\nexport const isPnpmLoglevelFlag = isNpmLoglevelFlag\n\n/**\n * Execute a package.json script using the appropriate package manager.\n * Automatically detects pnpm, yarn, or npm based on lockfiles.\n */\nexport interface ExecScriptOptions extends SpawnOptions {\n prepost?: boolean | undefined\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function execScript(\n scriptName: string,\n args?: string[] | readonly string[] | ExecScriptOptions | undefined,\n options?: ExecScriptOptions | undefined,\n) {\n // Handle overloaded signatures: execScript(name, options) or execScript(name, args, options).\n let resolvedOptions: ExecScriptOptions | undefined\n let resolvedArgs: string[]\n if (!Array.isArray(args) && args !== null && typeof args === 'object') {\n resolvedOptions = args as ExecScriptOptions\n resolvedArgs = []\n } else {\n resolvedOptions = options\n resolvedArgs = (args || []) as string[]\n }\n const { prepost, ...spawnOptions } = {\n __proto__: null,\n ...resolvedOptions,\n } as ExecScriptOptions\n\n // If shell: true is passed, run the command directly as a shell command.\n if (spawnOptions.shell === true) {\n return spawn(scriptName, resolvedArgs, spawnOptions)\n }\n\n const useNodeRun =\n !prepost && /*@__PURE__*/ require('#constants/node').supportsNodeRun()\n\n // Detect package manager based on lockfile by traversing up from current directory.\n const cwd =\n (getOwn(spawnOptions, 'cwd') as string | undefined) ?? process.cwd()\n\n // Check for pnpm-lock.yaml.\n const pnpmLockPath = findUpSync(\n /*@__INLINE__*/ require('#constants/agents').PNPM_LOCK_YAML,\n { cwd },\n ) as string | undefined\n if (pnpmLockPath) {\n return execPnpm(['run', scriptName, ...resolvedArgs], spawnOptions)\n }\n\n // Check for package-lock.json.\n // When in an npm workspace, use npm run to ensure workspace binaries are available.\n const packageLockPath = findUpSync(\n /*@__INLINE__*/ require('#constants/agents').PACKAGE_LOCK_JSON,\n { cwd },\n ) as string | undefined\n if (packageLockPath) {\n return execNpm(['run', scriptName, ...resolvedArgs], spawnOptions)\n }\n\n // Check for yarn.lock.\n const yarnLockPath = findUpSync(\n /*@__INLINE__*/ require('#constants/agents').YARN_LOCK,\n { cwd },\n ) as string | undefined\n if (yarnLockPath) {\n return execYarn(['run', scriptName, ...resolvedArgs], spawnOptions)\n }\n\n return spawn(\n /*@__PURE__*/ require('#constants/node').getExecPath(),\n [\n .../*@__PURE__*/ require('#constants/node').getNodeNoWarningsFlags(),\n ...(useNodeRun\n ? ['--run']\n : [\n /*@__PURE__*/ require('#constants/agents').NPM_REAL_EXEC_PATH,\n 'run',\n ]),\n scriptName,\n ...resolvedArgs,\n ],\n {\n ...spawnOptions,\n },\n )\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
package/dist/ansi.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/ansi.ts"],
4
- "sourcesContent": ["/**\n * @fileoverview ANSI escape code utilities.\n * Provides constants and helpers for terminal formatting.\n */\n\n// ANSI escape codes - commonly used sequences.\nexport const ANSI_RESET = '\\x1b[0m'\nexport const ANSI_BOLD = '\\x1b[1m'\nexport const ANSI_DIM = '\\x1b[2m'\nexport const ANSI_ITALIC = '\\x1b[3m'\nexport const ANSI_UNDERLINE = '\\x1b[4m'\nexport const ANSI_STRIKETHROUGH = '\\x1b[9m'\n\n// ANSI escape code regex to strip colors/formatting.\n// biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequences use control characters.\nconst ANSI_REGEX = /\\x1b\\[[0-9;]*m/g\n\n/**\n * Create a regular expression for matching ANSI escape codes.\n *\n * Inlined ansi-regex:\n * https://socket.dev/npm/package/ansi-regexp/overview/6.2.2\n * MIT License\n * Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function ansiRegex(options?: { onlyFirst?: boolean }): RegExp {\n const { onlyFirst } = options ?? {}\n // Valid string terminator sequences are BEL, ESC\\, and 0x9c.\n const ST = '(?:\\\\u0007\\\\u001B\\\\u005C|\\\\u009C)'\n // OSC sequences only: ESC ] ... ST (non-greedy until the first ST).\n const osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`\n // CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte.\n const csi =\n '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]'\n const pattern = `${osc}|${csi}`\n return new RegExp(pattern, onlyFirst ? undefined : 'g')\n}\n\n/**\n * Strip ANSI escape codes from text.\n * Uses the inlined ansi-regex for matching.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function stripAnsi(text: string): string {\n return text.replace(ANSI_REGEX, '')\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,aAAa;AACnB,MAAM,YAAY;AAClB,MAAM,WAAW;AACjB,MAAM,cAAc;AACpB,MAAM,iBAAiB;AACvB,MAAM,qBAAqB;AAIlC,MAAM,aAAa;AAAA;AAWZ,SAAS,UAAU,SAA2C;AACnE,QAAM,EAAE,UAAU,IAAI,WAAW,CAAC;AAElC,QAAM,KAAK;AAEX,QAAM,MAAM,0BAA0B,EAAE;AAExC,QAAM,MACJ;AACF,QAAM,UAAU,GAAG,GAAG,IAAI,GAAG;AAC7B,SAAO,IAAI,OAAO,SAAS,YAAY,SAAY,GAAG;AACxD;AAAA;AAOO,SAAS,UAAU,MAAsB;AAC9C,SAAO,KAAK,QAAQ,YAAY,EAAE;AACpC;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/argv/flags.ts"],
4
- "sourcesContent": ["/**\n * Common flag utilities for Socket CLI applications.\n * Provides consistent flag checking across all Socket projects.\n */\n\n/**\n * Flag values object from parsed arguments.\n */\nexport interface FlagValues {\n [key: string]: unknown\n quiet?: boolean\n silent?: boolean\n verbose?: boolean\n help?: boolean\n all?: boolean\n fix?: boolean\n force?: boolean\n 'dry-run'?: boolean\n json?: boolean\n debug?: boolean\n watch?: boolean\n coverage?: boolean\n cover?: boolean\n update?: boolean\n staged?: boolean\n changed?: boolean\n}\n\nconst processArg = [...process.argv]\n\n/**\n * Accepted input types for flag checking functions.\n * Can be parsed flag values, process.argv array, or undefined (uses process.argv).\n */\nexport type FlagInput = FlagValues | string[] | readonly string[] | undefined\n\n/**\n * Get the appropriate log level based on flags.\n * Returns 'silent', 'error', 'warn', 'info', 'verbose', or 'debug'.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function getLogLevel(input?: FlagInput): string {\n if (isQuiet(input)) {\n return 'silent'\n }\n if (isDebug(input)) {\n return 'debug'\n }\n if (isVerbose(input)) {\n return 'verbose'\n }\n return 'info'\n}\n\n/**\n * Check if all flag is set.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isAll(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--all')\n }\n if (Array.isArray(input)) {\n return input.includes('--all')\n }\n return !!(input as FlagValues).all\n}\n\n/**\n * Check if changed files mode is enabled.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isChanged(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--changed')\n }\n if (Array.isArray(input)) {\n return input.includes('--changed')\n }\n return !!(input as FlagValues).changed\n}\n\n/**\n * Check if coverage mode is enabled.\n * Checks both 'coverage' and 'cover' flags.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isCoverage(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--coverage') || processArg.includes('--cover')\n }\n if (Array.isArray(input)) {\n return input.includes('--coverage') || input.includes('--cover')\n }\n return !!((input as FlagValues).coverage || (input as FlagValues).cover)\n}\n\n/**\n * Check if debug mode is enabled.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isDebug(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--debug')\n }\n if (Array.isArray(input)) {\n return input.includes('--debug')\n }\n return !!(input as FlagValues).debug\n}\n\n/**\n * Check if dry-run mode is enabled.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isDryRun(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--dry-run')\n }\n if (Array.isArray(input)) {\n return input.includes('--dry-run')\n }\n return !!(input as FlagValues)['dry-run']\n}\n\n/**\n * Check if fix/autofix mode is enabled.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isFix(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--fix')\n }\n if (Array.isArray(input)) {\n return input.includes('--fix')\n }\n return !!(input as FlagValues).fix\n}\n\n/**\n * Check if force mode is enabled.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isForce(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--force')\n }\n if (Array.isArray(input)) {\n return input.includes('--force')\n }\n return !!(input as FlagValues).force\n}\n\n/**\n * Check if help flag is set.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isHelp(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--help') || processArg.includes('-h')\n }\n if (Array.isArray(input)) {\n return input.includes('--help') || input.includes('-h')\n }\n return !!(input as FlagValues).help\n}\n\n/**\n * Check if JSON output is requested.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isJson(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--json')\n }\n if (Array.isArray(input)) {\n return input.includes('--json')\n }\n return !!(input as FlagValues).json\n}\n\n/**\n * Check if quiet/silent mode is enabled.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isQuiet(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--quiet') || processArg.includes('--silent')\n }\n if (Array.isArray(input)) {\n return input.includes('--quiet') || input.includes('--silent')\n }\n return !!((input as FlagValues).quiet || (input as FlagValues).silent)\n}\n\n/**\n * Check if staged files mode is enabled.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isStaged(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--staged')\n }\n if (Array.isArray(input)) {\n return input.includes('--staged')\n }\n return !!(input as FlagValues).staged\n}\n\n/**\n * Check if update mode is enabled (for snapshots, dependencies, etc).\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isUpdate(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--update') || processArg.includes('-u')\n }\n if (Array.isArray(input)) {\n return input.includes('--update') || input.includes('-u')\n }\n return !!(input as FlagValues).update\n}\n\n/**\n * Check if verbose mode is enabled.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isVerbose(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--verbose')\n }\n if (Array.isArray(input)) {\n return input.includes('--verbose')\n }\n return !!(input as FlagValues).verbose\n}\n\n/**\n * Check if watch mode is enabled.\n * Accepts FlagValues object, process.argv array, or undefined (uses process.argv).\n */\nexport function isWatch(input?: FlagInput): boolean {\n if (!input) {\n return processArg.includes('--watch') || processArg.includes('-w')\n }\n if (Array.isArray(input)) {\n return input.includes('--watch') || input.includes('-w')\n }\n return !!(input as FlagValues).watch\n}\n\n/**\n * Common flag definitions for parseArgs configuration.\n * Can be spread into parseArgs options for consistency.\n */\nexport const COMMON_FLAGS = {\n all: {\n type: 'boolean' as const,\n default: false,\n description: 'Target all files',\n },\n changed: {\n type: 'boolean' as const,\n default: false,\n description: 'Target changed files',\n },\n coverage: {\n type: 'boolean' as const,\n default: false,\n description: 'Run with coverage',\n },\n cover: {\n type: 'boolean' as const,\n default: false,\n description: 'Run with coverage (alias)',\n },\n debug: {\n type: 'boolean' as const,\n default: false,\n description: 'Enable debug output',\n },\n 'dry-run': {\n type: 'boolean' as const,\n default: false,\n description: 'Perform a dry run',\n },\n fix: {\n type: 'boolean' as const,\n default: false,\n description: 'Automatically fix issues',\n },\n force: {\n type: 'boolean' as const,\n default: false,\n description: 'Force the operation',\n },\n help: {\n type: 'boolean' as const,\n default: false,\n short: 'h',\n description: 'Show help',\n },\n json: {\n type: 'boolean' as const,\n default: false,\n description: 'Output as JSON',\n },\n quiet: {\n type: 'boolean' as const,\n default: false,\n short: 'q',\n description: 'Suppress output',\n },\n silent: {\n type: 'boolean' as const,\n default: false,\n description: 'Suppress all output',\n },\n staged: {\n type: 'boolean' as const,\n default: false,\n description: 'Target staged files',\n },\n update: {\n type: 'boolean' as const,\n default: false,\n short: 'u',\n description: 'Update snapshots/deps',\n },\n verbose: {\n type: 'boolean' as const,\n default: false,\n short: 'v',\n description: 'Verbose output',\n },\n watch: {\n type: 'boolean' as const,\n default: false,\n short: 'w',\n description: 'Watch mode',\n },\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/argv/parse.ts"],
4
- "sourcesContent": ["/**\n * Argument parsing utilities for CLI applications.\n * Uses yargs-parser internally for robust argument parsing with Node.js parseArgs-compatible API.\n */\n\nimport yargsParser from '../external/yargs-parser'\n\n/**\n * Yargs parser options interface.\n */\ninterface YargsOptions {\n // Array of option names that should be treated as booleans.\n boolean?: string[] | undefined\n // Array of option names that should be treated as strings.\n string?: string[] | undefined\n // Array of option names that should accept multiple values.\n array?: string[] | undefined\n // Map of short aliases to full option names.\n alias?: Record<string, string | string[]> | undefined\n // Default values for options.\n default?: Record<string, unknown> | undefined\n // Transform functions to coerce parsed values.\n coerce?: Record<string, (value: unknown) => unknown> | undefined\n // Whether to treat unknown options as positional arguments.\n 'unknown-options-as-args'?: boolean | undefined\n // Whether to parse numeric strings as numbers.\n 'parse-numbers'?: boolean | undefined\n // Whether to parse positional arguments as numbers.\n 'parse-positional-numbers'?: boolean | undefined\n // Whether to support --no-<option> negation for booleans.\n 'boolean-negation'?: boolean | undefined\n // Whether to stop parsing options after the first positional.\n 'halt-at-non-option'?: boolean | undefined\n // Advanced yargs-parser configuration options.\n configuration?: Record<string, boolean | string> | undefined\n // Whether to throw on unknown options.\n strict?: boolean | undefined\n}\n\n/**\n * Yargs parser result interface.\n */\ninterface YargsArguments extends Record<string, unknown> {\n _: string[]\n $0?: string\n}\n\n/**\n * Options for configuring argument parsing, similar to Node.js util.parseArgs.\n */\nexport interface ParseArgsOptionsConfig {\n // Whether the option accepts multiple values (array).\n multiple?: boolean | undefined\n // Short alias for the option (single character).\n short?: string | undefined\n // Type of the option value.\n type?: 'boolean' | 'string' | undefined\n // Default value for the option.\n default?: unknown | undefined\n // Transform function to coerce parsed values.\n coerce?: (value: unknown) => unknown | undefined\n}\n\n/**\n * Configuration object for parseArgs function, similar to Node.js util.parseArgs.\n */\nexport interface ParseArgsConfig {\n // Command-line arguments to parse (defaults to process.argv.slice(2)).\n args?: readonly string[] | undefined\n // Options configuration object.\n options?: Record<string, ParseArgsOptionsConfig> | undefined\n // Whether to throw on unknown options (default: true).\n strict?: boolean | undefined\n // Whether to populate tokens array (not implemented, for API compatibility).\n tokens?: boolean | undefined\n // Whether to allow positional arguments after options.\n allowPositionals?: boolean | undefined\n // Whether to allow negative numbers as option values.\n allowNegative?: boolean | undefined\n // Advanced yargs-parser configuration passthrough.\n configuration?: Record<string, boolean | string> | undefined\n}\n\n/**\n * Result of parsing command-line arguments.\n */\nexport interface ParsedArgs<T = Record<string, unknown>> {\n // Parsed option values.\n values: T\n // Positional arguments (non-option arguments).\n positionals: string[]\n // Raw parsed arguments object from yargs-parser.\n raw: YargsArguments\n}\n\n/**\n * Parse command-line arguments with a Node.js parseArgs-compatible API.\n * Uses yargs-parser internally for robust argument parsing.\n */\nexport function parseArgs<T = Record<string, unknown>>(\n config: ParseArgsConfig = {},\n): ParsedArgs<T> {\n const {\n allowNegative = false,\n allowPositionals = true,\n args = process.argv.slice(2),\n configuration,\n options = {},\n strict = true,\n } = config\n\n // Convert parseArgs options to yargs-parser options.\n const yargsOptions: YargsOptions = {\n // Arrays of option names to treat as specific types.\n boolean: [],\n string: [],\n array: [],\n // Maps for aliases, defaults, and transformations.\n alias: {},\n default: {},\n coerce: {},\n 'unknown-options-as-args': !strict,\n 'parse-numbers': false,\n 'parse-positional-numbers': false,\n 'boolean-negation': !allowNegative,\n 'halt-at-non-option': !allowPositionals,\n configuration: {\n // Enable kebab-case to camelCase conversion (e.g., --temp-dir \u2192 tempDir).\n 'camel-case-expansion': true,\n // Disable dot notation to avoid confusing nested property parsing.\n 'dot-notation': false,\n // Convert duplicate arguments into arrays automatically.\n 'duplicate-arguments-array': true,\n // Flatten nested arrays from duplicate arguments for cleaner output.\n 'flatten-duplicate-arrays': true,\n // Populate the '--' key with arguments after the -- separator.\n 'populate--': true,\n // Allow short option grouping like -abc for -a -b -c.\n 'short-option-groups': true,\n // Keep aliased keys in the result for flexibility.\n 'strip-aliased': false,\n // Keep both kebab-case and camelCase keys for flexibility.\n 'strip-dashed': false,\n ...configuration,\n },\n }\n\n // Process each option configuration.\n for (const { 0: key, 1: optionConfig } of Object.entries(options)) {\n const {\n coerce,\n default: defaultValue,\n multiple,\n short,\n type,\n } = optionConfig\n\n // Set the option type.\n if (type === 'boolean') {\n yargsOptions.boolean?.push(key)\n } else if (type === 'string') {\n yargsOptions.string?.push(key)\n }\n\n // Handle multiple values (arrays).\n if (multiple) {\n yargsOptions.array?.push(key)\n }\n\n // Set short alias.\n if (short) {\n ;(yargsOptions.alias as Record<string, string>)[short] = key\n }\n\n // Set default value.\n if (defaultValue !== undefined) {\n ;(yargsOptions.default as Record<string, unknown>)[key] = defaultValue\n }\n\n // Set coerce function.\n if (coerce) {\n ;(yargsOptions.coerce as Record<string, unknown>)[key] = coerce\n }\n }\n\n // Parse the arguments.\n const parsed = yargsParser(args as string[], yargsOptions)\n\n // Extract positional arguments.\n const positionals = parsed._ || []\n\n // Remove the positionals array from values to match Node.js parseArgs behavior.\n const { _, ...values } = parsed\n\n // Ensure positionals are strings.\n const stringPositionals = positionals.map(String)\n\n return {\n values: values as T,\n positionals: stringPositionals,\n raw: parsed as YargsArguments,\n }\n}\n\n/**\n * Parse command-line arguments with Socket defaults.\n * Provides sensible defaults for Socket CLI applications.\n */\nexport function parseArgsWithDefaults<T = Record<string, unknown>>(\n config: ParseArgsConfig = {},\n): ParsedArgs<T> {\n return parseArgs<T>({\n strict: false,\n allowPositionals: true,\n ...config,\n })\n}\n\n/**\n * Common parseArgs configuration for Socket registry scripts.\n */\nexport const commonParseArgsConfig: ParseArgsConfig = {\n options: {\n force: {\n type: 'boolean',\n short: 'f',\n default: false,\n },\n quiet: {\n type: 'boolean',\n short: 'q',\n default: false,\n },\n },\n strict: false,\n}\n\n/**\n * Extract positional arguments from process.argv.\n * Useful for commands that accept file paths or other positional parameters.\n */\nexport function getPositionalArgs(startIndex = 2): string[] {\n const args = process.argv.slice(startIndex)\n const positionals: string[] = []\n let i = 0\n\n while (i < args.length) {\n const arg = args[i]!\n // Stop at first flag\n if (arg.startsWith('-')) {\n break\n }\n positionals.push(arg)\n i++\n }\n\n return positionals\n}\n\n/**\n * Check if a specific flag is present in argv.\n */\nexport function hasFlag(flag: string, argv = process.argv): boolean {\n const flagVariants = [\n `--${flag}`,\n // Short flag.\n `-${flag.charAt(0)}`,\n ]\n return flagVariants.some(variant => argv.includes(variant))\n}\n"],
5
- "mappings": "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",
6
- "names": ["yargsParser"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/arrays.ts"],
4
- "sourcesContent": ["/**\n * @fileoverview Array utility functions for formatting lists and collections.\n * Provides conjunction and disjunction formatters using Intl.ListFormat.\n */\n\nlet _conjunctionFormatter: Intl.ListFormat | undefined\n/**\n * Get a cached Intl.ListFormat instance for conjunction (and) formatting.\n *\n * Creates a singleton formatter for English \"and\" lists using the long style.\n * The formatter is lazily initialized on first use and reused for performance.\n *\n * @returns Cached Intl.ListFormat instance configured for conjunction formatting\n *\n * @example\n * ```ts\n * const formatter = getConjunctionFormatter()\n * formatter.format(['apple', 'banana', 'cherry'])\n * // Returns: \"apple, banana, and cherry\"\n * ```\n *\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getConjunctionFormatter() {\n if (_conjunctionFormatter === undefined) {\n _conjunctionFormatter = new Intl.ListFormat('en', {\n style: 'long',\n // \"and\" lists.\n type: 'conjunction',\n })\n }\n return _conjunctionFormatter\n}\n\nlet _disjunctionFormatter: Intl.ListFormat | undefined\n/**\n * Get a cached Intl.ListFormat instance for disjunction (or) formatting.\n *\n * Creates a singleton formatter for English \"or\" lists using the long style.\n * The formatter is lazily initialized on first use and reused for performance.\n *\n * @returns Cached Intl.ListFormat instance configured for disjunction formatting\n *\n * @example\n * ```ts\n * const formatter = getDisjunctionFormatter()\n * formatter.format(['red', 'blue', 'green'])\n * // Returns: \"red, blue, or green\"\n * ```\n *\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getDisjunctionFormatter() {\n if (_disjunctionFormatter === undefined) {\n _disjunctionFormatter = new Intl.ListFormat('en', {\n style: 'long',\n // \"or\" lists.\n type: 'disjunction',\n })\n }\n return _disjunctionFormatter\n}\n\n/**\n * Split an array into chunks of a specified size.\n *\n * Divides an array into smaller arrays of the specified chunk size.\n * The last chunk may contain fewer elements if the array length is not\n * evenly divisible by the chunk size.\n *\n * @param arr - The array to split into chunks (can be readonly)\n * @param size - Size of each chunk. Must be greater than 0.\n * @default 2\n * @returns Array of chunks, where each chunk is an array of elements\n * @throws {Error} If chunk size is less than or equal to 0\n *\n * @example\n * ```ts\n * // Split into pairs (default)\n * arrayChunk([1, 2, 3, 4, 5])\n * // Returns: [[1, 2], [3, 4], [5]]\n *\n * // Split into groups of 3\n * arrayChunk(['a', 'b', 'c', 'd', 'e', 'f', 'g'], 3)\n * // Returns: [['a', 'b', 'c'], ['d', 'e', 'f'], ['g']]\n *\n * // Works with readonly arrays\n * const readonlyArr = [1, 2, 3] as const\n * arrayChunk(readonlyArr)\n * // Returns: [[1, 2], [3]]\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function arrayChunk<T>(\n arr: T[] | readonly T[],\n size?: number | undefined,\n): T[][] {\n const chunkSize = size ?? 2\n if (chunkSize <= 0) {\n throw new Error('Chunk size must be greater than 0')\n }\n const { length } = arr\n const actualChunkSize = Math.min(length, chunkSize)\n const chunks = []\n for (let i = 0; i < length; i += actualChunkSize) {\n chunks.push(arr.slice(i, i + actualChunkSize) as T[])\n }\n return chunks\n}\n\n/**\n * Get unique values from an array.\n *\n * Returns a new array containing only the unique values from the input array.\n * Uses `Set` internally for efficient deduplication. Order of first occurrence\n * is preserved.\n *\n * @param arr - The array to deduplicate (can be readonly)\n * @returns New array with duplicate values removed\n *\n * @example\n * ```ts\n * // Remove duplicate numbers\n * arrayUnique([1, 2, 2, 3, 1, 4])\n * // Returns: [1, 2, 3, 4]\n *\n * // Remove duplicate strings\n * arrayUnique(['apple', 'banana', 'apple', 'cherry'])\n * // Returns: ['apple', 'banana', 'cherry']\n *\n * // Works with readonly arrays\n * const readonlyArr = [1, 1, 2] as const\n * arrayUnique(readonlyArr)\n * // Returns: [1, 2]\n *\n * // Empty arrays return empty\n * arrayUnique([])\n * // Returns: []\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function arrayUnique<T>(arr: T[] | readonly T[]): T[] {\n return [...new Set(arr)]\n}\n\n// IMPORTANT: Do not use destructuring here - use direct assignment instead.\n// tsgo has a bug that incorrectly transpiles destructured exports, resulting in\n// `exports.SomeName = void 0;` which causes runtime errors.\n// See: https://github.com/SocketDev/socket-packageurl-js/issues/3\n\n/**\n * Alias for native Array.isArray.\n * Determines whether the passed value is an array.\n *\n * This is a direct reference to the native `Array.isArray` method,\n * providing a type guard that narrows the type to an array type.\n * Exported for consistency with other array utilities in this module.\n *\n * @param value - The value to check\n * @returns `true` if the value is an array, `false` otherwise\n *\n * @example\n * ```ts\n * // Check if value is an array\n * isArray([1, 2, 3])\n * // Returns: true\n *\n * isArray('not an array')\n * // Returns: false\n *\n * isArray(null)\n * // Returns: false\n *\n * // Type guard usage\n * function processValue(value: unknown) {\n * if (isArray(value)) {\n * // TypeScript knows value is an array here\n * console.log(value.length)\n * }\n * }\n * ```\n */\nexport const isArray = Array.isArray\n\n/**\n * Join array elements with proper \"and\" conjunction formatting.\n *\n * Formats an array of strings into a grammatically correct list using\n * \"and\" as the conjunction. Uses `Intl.ListFormat` for proper English\n * formatting with Oxford comma support.\n *\n * @param arr - Array of strings to join (can be readonly)\n * @returns Formatted string with proper \"and\" conjunction\n *\n * @example\n * ```ts\n * // Two items\n * joinAnd(['apples', 'oranges'])\n * // Returns: \"apples and oranges\"\n *\n * // Three or more items (Oxford comma)\n * joinAnd(['apples', 'oranges', 'bananas'])\n * // Returns: \"apples, oranges, and bananas\"\n *\n * // Single item\n * joinAnd(['apples'])\n * // Returns: \"apples\"\n *\n * // Empty array\n * joinAnd([])\n * // Returns: \"\"\n *\n * // Usage in messages\n * const items = ['React', 'Vue', 'Angular']\n * console.log(`You can choose ${joinAnd(items)}`)\n * // Outputs: \"You can choose React, Vue, and Angular\"\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function joinAnd(arr: string[] | readonly string[]): string {\n return getConjunctionFormatter().format(arr)\n}\n\n/**\n * Join array elements with proper \"or\" disjunction formatting.\n *\n * Formats an array of strings into a grammatically correct list using\n * \"or\" as the disjunction. Uses `Intl.ListFormat` for proper English\n * formatting with Oxford comma support.\n *\n * @param arr - Array of strings to join (can be readonly)\n * @returns Formatted string with proper \"or\" disjunction\n *\n * @example\n * ```ts\n * // Two items\n * joinOr(['yes', 'no'])\n * // Returns: \"yes or no\"\n *\n * // Three or more items (Oxford comma)\n * joinOr(['red', 'green', 'blue'])\n * // Returns: \"red, green, or blue\"\n *\n * // Single item\n * joinOr(['maybe'])\n * // Returns: \"maybe\"\n *\n * // Empty array\n * joinOr([])\n * // Returns: \"\"\n *\n * // Usage in prompts\n * const options = ['npm', 'yarn', 'pnpm']\n * console.log(`Choose a package manager: ${joinOr(options)}`)\n * // Outputs: \"Choose a package manager: npm, yarn, or pnpm\"\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function joinOr(arr: string[] | readonly string[]): string {\n return getDisjunctionFormatter().format(arr)\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,IAAI;AAAA;AAmBJ,SAAS,0BAA0B;AACjC,MAAI,0BAA0B,QAAW;AACvC,4BAAwB,IAAI,KAAK,WAAW,MAAM;AAAA,MAChD,OAAO;AAAA;AAAA,MAEP,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,IAAI;AAAA;AAmBJ,SAAS,0BAA0B;AACjC,MAAI,0BAA0B,QAAW;AACvC,4BAAwB,IAAI,KAAK,WAAW,MAAM;AAAA,MAChD,OAAO;AAAA;AAAA,MAEP,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAAA;AAgCO,SAAS,WACd,KACA,MACO;AACP,QAAM,YAAY,QAAQ;AAC1B,MAAI,aAAa,GAAG;AAClB,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACrD;AACA,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,kBAAkB,KAAK,IAAI,QAAQ,SAAS;AAClD,QAAM,SAAS,CAAC;AAChB,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK,iBAAiB;AAChD,WAAO,KAAK,IAAI,MAAM,GAAG,IAAI,eAAe,CAAQ;AAAA,EACtD;AACA,SAAO;AACT;AAAA;AAiCO,SAAS,YAAe,KAA8B;AAC3D,SAAO,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC;AACzB;AAuCO,MAAM,UAAU,MAAM;AAAA;AAqCtB,SAAS,QAAQ,KAA2C;AACjE,UAAO,wCAAwB,GAAE,OAAO,GAAG;AAC7C;AAAA;AAqCO,SAAS,OAAO,KAA2C;AAChE,UAAO,wCAAwB,GAAE,OAAO,GAAG;AAC7C;",
6
- "names": []
7
- }
package/dist/bin.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/bin.ts"],
4
- "sourcesContent": ["/**\n * @fileoverview Binary path resolution and execution utilities for package managers.\n * Provides cross-platform bin path lookup, command execution, and path normalization.\n */\n\nimport { getHome } from '#env/home'\nimport { getAppdata, getLocalappdata } from '#env/windows'\nimport { getXdgDataHome } from '#env/xdg'\n\nimport { WIN32 } from '#constants/platform'\nimport { readJsonSync } from './fs'\nimport { isPath, normalizePath } from './path'\nimport { spawn } from './spawn'\n\nlet _fs: typeof import('node:fs') | undefined\n/**\n * Lazily load the fs module to avoid Webpack errors.\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getFs() {\n if (_fs === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _fs = /*@__PURE__*/ require('node:fs')\n }\n return _fs!\n}\n\nlet _path: typeof import('node:path') | undefined\n/**\n * Lazily load the path module to avoid Webpack errors.\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getPath() {\n if (_path === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _path = /*@__PURE__*/ require('node:path')\n }\n return _path!\n}\n\nlet _which: typeof import('which') | undefined\n/**\n * Lazily load the which module for finding executables.\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getWhich() {\n if (_which === undefined) {\n _which = /*@__PURE__*/ require('./external/which')\n }\n return _which!\n}\n\n/**\n * Execute a binary with the given arguments.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function execBin(\n binPath: string,\n args?: string[],\n options?: import('./spawn').SpawnOptions,\n) {\n // Resolve the binary path.\n const resolvedPath = isPath(binPath)\n ? resolveBinPathSync(binPath)\n : await whichBin(binPath)\n\n if (!resolvedPath) {\n const error = new Error(\n `Binary not found: ${binPath}\\n` +\n 'Possible causes:\\n' +\n ` - Binary \"${binPath}\" is not installed or not in PATH\\n` +\n ' - Binary name is incorrect or misspelled\\n' +\n ' - Installation directory is not in system PATH\\n' +\n 'To resolve:\\n' +\n ` 1. Verify \"${binPath}\" is installed: which ${binPath} (Unix) or where ${binPath} (Windows)\\n` +\n ` 2. Install the binary if missing, ex: npm install -g ${binPath}\\n` +\n ' 3. Check PATH environment variable includes the binary location',\n ) as Error & {\n code: string\n }\n error.code = 'ENOENT'\n throw error\n }\n\n // Execute the binary directly.\n const binCommand = Array.isArray(resolvedPath)\n ? resolvedPath[0]!\n : resolvedPath\n // On Windows, binaries are often .cmd files that require shell to execute.\n return await spawn(binCommand, args ?? [], {\n shell: WIN32,\n ...options,\n })\n}\n\n/**\n * Options for the which function.\n */\nexport interface WhichOptions {\n /** If true, return all matches instead of just the first one. */\n all?: boolean | undefined\n /** If true, return null instead of throwing when no match is found. */\n nothrow?: boolean | undefined\n /** Path to search in. */\n path?: string | undefined\n /** Path separator character. */\n pathExt?: string | undefined\n /** Environment variables to use. */\n env?: Record<string, string | undefined> | undefined\n}\n\n/**\n * Find an executable in the system PATH asynchronously.\n * Wrapper around the which package for lazy loading.\n */\n/* c8 ignore start */\nexport async function which(\n binName: string,\n options?: WhichOptions,\n): Promise<string | string[] | undefined> {\n return await getWhich()(binName, options)\n}\n/* c8 ignore stop */\n\n/**\n * Find an executable in the system PATH synchronously.\n * Wrapper around the which package for lazy loading.\n */\n/* c8 ignore start */\nexport function whichSync(\n binName: string,\n options?: WhichOptions,\n): string | string[] | undefined {\n return getWhich().sync(binName, options)\n}\n/* c8 ignore stop */\n\n/**\n * Find and resolve a binary in the system PATH asynchronously.\n * @throws {Error} If the binary is not found and nothrow is false.\n */\nexport async function whichBin(\n binName: string,\n options?: WhichOptions,\n): Promise<string | string[] | undefined> {\n const which = getWhich()\n // Default to nothrow: true if not specified to return undefined instead of throwing\n const opts = { nothrow: true, ...options }\n // Depending on options `which` may throw if `binName` is not found.\n // With nothrow: true, it returns null when `binName` is not found.\n const result = await which(binName, opts)\n\n // When 'all: true' is specified, ensure we always return an array.\n if (opts?.all) {\n const paths = Array.isArray(result)\n ? result\n : typeof result === 'string'\n ? [result]\n : undefined\n // If all is true and we have paths, resolve each one.\n return paths?.length ? paths.map(p => resolveBinPathSync(p)) : paths\n }\n\n // If result is undefined (binary not found), return undefined\n if (!result) {\n return undefined\n }\n\n return resolveBinPathSync(result)\n}\n\n/**\n * Find and resolve a binary in the system PATH synchronously.\n * @throws {Error} If the binary is not found and nothrow is false.\n */\nexport function whichBinSync(\n binName: string,\n options?: WhichOptions,\n): string | string[] | undefined {\n // Default to nothrow: true if not specified to return undefined instead of throwing\n const opts = { nothrow: true, ...options }\n // Depending on options `which` may throw if `binName` is not found.\n // With nothrow: true, it returns null when `binName` is not found.\n const result = whichSync(binName, opts)\n\n // When 'all: true' is specified, ensure we always return an array.\n if (opts.all) {\n const paths = Array.isArray(result)\n ? result\n : typeof result === 'string'\n ? [result]\n : undefined\n // If all is true and we have paths, resolve each one.\n return paths?.length ? paths.map(p => resolveBinPathSync(p)) : paths\n }\n\n // If result is undefined (binary not found), return undefined\n if (!result) {\n return undefined\n }\n\n return resolveBinPathSync(result as string)\n}\n\n/**\n * Check if a directory path contains any shadow bin patterns.\n */\nexport function isShadowBinPath(dirPath: string | undefined): boolean {\n if (!dirPath) {\n return false\n }\n // Check for node_modules/.bin pattern (Unix and Windows)\n const normalized = dirPath.replace(/\\\\/g, '/')\n return normalized.includes('node_modules/.bin')\n}\n\n/**\n * Find the real executable for a binary, bypassing shadow bins.\n */\nexport function findRealBin(\n binName: string,\n commonPaths: string[] = [],\n): string | undefined {\n const fs = getFs()\n const path = getPath()\n const which = getWhich()\n\n // Try common locations first.\n for (const binPath of commonPaths) {\n if (fs?.existsSync(binPath)) {\n return binPath\n }\n }\n\n // Fall back to which.sync if no direct path found.\n const binPath = which?.sync(binName, { nothrow: true })\n if (binPath) {\n const binDir = path?.dirname(binPath)\n\n if (isShadowBinPath(binDir)) {\n // This is likely a shadowed binary, try to find the real one.\n const allPaths = which?.sync(binName, { all: true, nothrow: true }) || []\n // Ensure allPaths is an array.\n const pathsArray = Array.isArray(allPaths)\n ? allPaths\n : typeof allPaths === 'string'\n ? [allPaths]\n : []\n\n for (const altPath of pathsArray) {\n const altDir = path?.dirname(altPath)\n if (!isShadowBinPath(altDir)) {\n return altPath\n }\n }\n }\n return binPath\n }\n // If all else fails, return undefined to indicate binary not found.\n return undefined\n}\n\n/**\n * Find the real npm executable, bypassing any aliases and shadow bins.\n */\nexport function findRealNpm(): string {\n const fs = getFs()\n const path = getPath()\n\n // Try to find npm in the same directory as the node executable.\n const nodeDir = path?.dirname(process.execPath)\n const npmInNodeDir = path?.join(nodeDir, 'npm')\n\n if (fs?.existsSync(npmInNodeDir)) {\n return npmInNodeDir\n }\n\n // Try common npm locations.\n const commonPaths = ['/usr/local/bin/npm', '/usr/bin/npm']\n const result = findRealBin('npm', commonPaths)\n\n // If we found a valid path, return it.\n if (result && fs?.existsSync(result)) {\n return result\n }\n\n // As a last resort, try to use whichBinSync to find npm.\n // This handles cases where npm is installed in non-standard locations.\n const npmPath = whichBinSync('npm', { nothrow: true })\n if (npmPath && typeof npmPath === 'string' && fs?.existsSync(npmPath)) {\n return npmPath\n }\n\n // Return the basic 'npm' and let the system resolve it.\n return 'npm'\n}\n\n/**\n * Find the real pnpm executable, bypassing any aliases and shadow bins.\n */\nexport function findRealPnpm(): string {\n const path = getPath()\n\n // Try common pnpm locations.\n const commonPaths = WIN32\n ? [\n // Windows common paths.\n path?.join(getAppdata() as string, 'npm', 'pnpm.cmd'),\n path?.join(getAppdata() as string, 'npm', 'pnpm'),\n path?.join(getLocalappdata() as string, 'pnpm', 'pnpm.cmd'),\n path?.join(getLocalappdata() as string, 'pnpm', 'pnpm'),\n 'C:\\\\Program Files\\\\nodejs\\\\pnpm.cmd',\n 'C:\\\\Program Files\\\\nodejs\\\\pnpm',\n ].filter(Boolean)\n : [\n // Unix common paths.\n '/usr/local/bin/pnpm',\n '/usr/bin/pnpm',\n path?.join(\n (getXdgDataHome() as string) || `${getHome() as string}/.local/share`,\n 'pnpm/pnpm',\n ),\n path?.join(getHome() as string, '.pnpm/pnpm'),\n ].filter(Boolean)\n\n return findRealBin('pnpm', commonPaths) ?? ''\n}\n\n/**\n * Find the real yarn executable, bypassing any aliases and shadow bins.\n */\nexport function findRealYarn(): string {\n const path = getPath()\n\n // Try common yarn locations.\n const commonPaths = [\n '/usr/local/bin/yarn',\n '/usr/bin/yarn',\n path?.join(getHome() as string, '.yarn/bin/yarn'),\n path?.join(\n getHome() as string,\n '.config/yarn/global/node_modules/.bin/yarn',\n ),\n ].filter(Boolean)\n\n return findRealBin('yarn', commonPaths) ?? ''\n}\n\n/*@__NO_SIDE_EFFECTS__*/\n/**\n * Resolve a binary path to its actual executable file.\n * Handles Windows .cmd wrappers and Unix shell scripts.\n */\nexport function resolveBinPathSync(binPath: string): string {\n const fs = getFs()\n const path = getPath()\n\n // If it's not an absolute path, try to find it in PATH first\n if (!path?.isAbsolute(binPath)) {\n try {\n const resolved = whichBinSync(binPath)\n if (resolved) {\n binPath = resolved as string\n }\n } catch {}\n }\n\n // Normalize the path once for consistent pattern matching.\n binPath = normalizePath(binPath)\n\n // Handle empty string that normalized to '.' (current directory)\n if (binPath === '.') {\n return binPath\n }\n\n const ext = path?.extname(binPath)\n const extLowered = ext.toLowerCase()\n const basename = path?.basename(binPath, ext)\n const voltaIndex =\n basename === 'node' ? -1 : (/(?<=\\/)\\.volta\\//i.exec(binPath)?.index ?? -1)\n if (voltaIndex !== -1) {\n const voltaPath = binPath.slice(0, voltaIndex)\n const voltaToolsPath = path?.join(voltaPath, 'tools')\n const voltaImagePath = path?.join(voltaToolsPath, 'image')\n const voltaUserPath = path?.join(voltaToolsPath, 'user')\n const voltaPlatform = readJsonSync(\n path?.join(voltaUserPath, 'platform.json'),\n { throws: false },\n ) as any\n const voltaNodeVersion = voltaPlatform?.node?.runtime\n const voltaNpmVersion = voltaPlatform?.node?.npm\n let voltaBinPath = ''\n if (basename === 'npm' || basename === 'npx') {\n if (voltaNpmVersion) {\n const relCliPath = `bin/${basename}-cli.js`\n voltaBinPath = path?.join(\n voltaImagePath,\n `npm/${voltaNpmVersion}/${relCliPath}`,\n )\n if (voltaNodeVersion && !fs?.existsSync(voltaBinPath)) {\n voltaBinPath = path?.join(\n voltaImagePath,\n `node/${voltaNodeVersion}/lib/node_modules/npm/${relCliPath}`,\n )\n if (!fs?.existsSync(voltaBinPath)) {\n voltaBinPath = ''\n }\n }\n }\n } else {\n const voltaUserBinPath = path?.join(voltaUserPath, 'bin')\n const binInfo = readJsonSync(\n path?.join(voltaUserBinPath, `${basename}.json`),\n { throws: false },\n ) as any\n const binPackage = binInfo?.package\n if (binPackage) {\n voltaBinPath = path?.join(\n voltaImagePath,\n `packages/${binPackage}/bin/${basename}`,\n )\n if (!fs?.existsSync(voltaBinPath)) {\n voltaBinPath = `${voltaBinPath}.cmd`\n if (!fs?.existsSync(voltaBinPath)) {\n voltaBinPath = ''\n }\n }\n }\n }\n if (voltaBinPath) {\n try {\n return normalizePath(fs?.realpathSync.native(voltaBinPath))\n } catch {}\n return voltaBinPath\n }\n }\n if (WIN32) {\n const hasKnownExt =\n extLowered === '' ||\n extLowered === '.cmd' ||\n extLowered === '.exe' ||\n extLowered === '.ps1'\n const isNpmOrNpx = basename === 'npm' || basename === 'npx'\n const isPnpmOrYarn = basename === 'pnpm' || basename === 'yarn'\n if (hasKnownExt && isNpmOrNpx) {\n // The quick route assumes a bin path like: C:\\Program Files\\nodejs\\npm.cmd\n const quickPath = path?.join(\n path?.dirname(binPath),\n `node_modules/npm/bin/${basename}-cli.js`,\n )\n if (fs?.existsSync(quickPath)) {\n try {\n return fs?.realpathSync.native(quickPath)\n } catch {}\n return quickPath\n }\n }\n let relPath = ''\n if (\n hasKnownExt &&\n // Only parse shell scripts and batch files, not actual executables.\n // .exe files are already executables and don't need path resolution from wrapper scripts.\n extLowered !== '.exe' &&\n // Check if file exists before attempting to read it to avoid ENOENT errors.\n fs?.existsSync(binPath)\n ) {\n const source = fs?.readFileSync(binPath, 'utf8')\n if (isNpmOrNpx) {\n if (extLowered === '.cmd') {\n // \"npm.cmd\" and \"npx.cmd\" defined by\n // https://github.com/npm/cli/blob/v11.4.2/bin/npm.cmd\n // https://github.com/npm/cli/blob/v11.4.2/bin/npx.cmd\n relPath =\n basename === 'npm'\n ? /(?<=\"NPM_CLI_JS=%~dp0\\\\).*(?=\")/.exec(source)?.[0] || ''\n : /(?<=\"NPX_CLI_JS=%~dp0\\\\).*(?=\")/.exec(source)?.[0] || ''\n } else if (extLowered === '') {\n // Extensionless \"npm\" and \"npx\" defined by\n // https://github.com/npm/cli/blob/v11.4.2/bin/npm\n // https://github.com/npm/cli/blob/v11.4.2/bin/npx\n relPath =\n basename === 'npm'\n ? /(?<=NPM_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] ||\n ''\n : /(?<=NPX_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] ||\n ''\n } else if (extLowered === '.ps1') {\n // \"npm.ps1\" and \"npx.ps1\" defined by\n // https://github.com/npm/cli/blob/v11.4.2/bin/npm.ps1\n // https://github.com/npm/cli/blob/v11.4.2/bin/npx.ps1\n relPath =\n basename === 'npm'\n ? /(?<=\\$NPM_CLI_JS=\"\\$PSScriptRoot\\/).*(?=\")/.exec(\n source,\n )?.[0] || ''\n : /(?<=\\$NPX_CLI_JS=\"\\$PSScriptRoot\\/).*(?=\")/.exec(\n source,\n )?.[0] || ''\n }\n } else if (isPnpmOrYarn) {\n if (extLowered === '.cmd') {\n // pnpm.cmd and yarn.cmd can have different formats depending on installation method\n // Common formats include:\n // 1. Setup-pnpm action format: node \"%~dp0\\..\\pnpm\\bin\\pnpm.cjs\" %*\n // 2. npm install -g pnpm format: similar to cmd-shim\n // 3. Standalone installer format: various patterns\n\n // Try setup-pnpm/setup-yarn action format first\n relPath =\n /(?<=node\\s+\")%~dp0\\\\([^\"]+)(?=\"\\s+%\\*)/.exec(source)?.[1] || ''\n\n // Try alternative format: \"%~dp0\\node.exe\" \"%~dp0\\..\\package\\bin\\binary.js\" %*\n if (!relPath) {\n relPath =\n /(?<=\"%~dp0\\\\[^\"]*node[^\"]*\"\\s+\")%~dp0\\\\([^\"]+)(?=\"\\s+%\\*)/.exec(\n source,\n )?.[1] || ''\n }\n\n // Try cmd-shim format as fallback\n if (!relPath) {\n relPath = /(?<=\"%dp0%\\\\).*(?=\" %\\*\\r\\n)/.exec(source)?.[0] || ''\n }\n } else if (extLowered === '') {\n // Extensionless pnpm/yarn - try common shebang formats\n // Handle pnpm installed via standalone installer or global install\n // Format: exec \"$basedir/node\" \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n // Note: may have multiple spaces between arguments\n relPath =\n /(?<=\"\\$basedir\\/)\\.tools\\/pnpm\\/[^\"]+(?=\"\\s+\"\\$@\")/.exec(\n source,\n )?.[0] || ''\n if (!relPath) {\n // Also try: exec node \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n relPath =\n /(?<=exec\\s+node\\s+\"\\$basedir\\/)\\.tools\\/pnpm\\/[^\"]+(?=\"\\s+\"\\$@\")/.exec(\n source,\n )?.[0] || ''\n }\n if (!relPath) {\n // Try standard cmd-shim format: exec node \"$basedir/../package/bin/binary.js\" \"$@\"\n relPath = /(?<=\"\\$basedir\\/).*(?=\" \"\\$@\"\\n)/.exec(source)?.[0] || ''\n }\n } else if (extLowered === '.ps1') {\n // PowerShell format\n relPath = /(?<=\"\\$basedir\\/).*(?=\" $args\\n)/.exec(source)?.[0] || ''\n }\n } else if (extLowered === '.cmd') {\n // \"bin.CMD\" generated by\n // https://github.com/npm/cmd-shim/blob/v7.0.0/lib/index.js#L98:\n //\n // @ECHO off\n // GOTO start\n // :find_dp0\n // SET dp0=%~dp0\n // EXIT /b\n // :start\n // SETLOCAL\n // CALL :find_dp0\n //\n // IF EXIST \"%dp0%\\node.exe\" (\n // SET \"_prog=%dp0%\\node.exe\"\n // ) ELSE (\n // SET \"_prog=node\"\n // SET PATHEXT=%PATHEXT:;.JS;=;%\n // )\n //\n // endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & \"%_prog%\" \"%dp0%\\..\\<PACKAGE_NAME>\\path\\to\\bin.js\" %*\n relPath = /(?<=\"%dp0%\\\\).*(?=\" %\\*\\r\\n)/.exec(source)?.[0] || ''\n } else if (extLowered === '') {\n // Extensionless \"bin\" generated by\n // https://github.com/npm/cmd-shim/blob/v7.0.0/lib/index.js#L138:\n //\n // #!/bin/sh\n // basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\,/,g')\")\n //\n // case `uname` in\n // *CYGWIN*|*MINGW*|*MSYS*)\n // if command -v cygpath > /dev/null 2>&1; then\n // basedir=`cygpath -w \"$basedir\"`\n // fi\n // ;;\n // esac\n //\n // if [ -x \"$basedir/node\" ]; then\n // exec \"$basedir/node\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" \"$@\"\n // else\n // exec node \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" \"$@\"\n // fi\n relPath = /(?<=\"$basedir\\/).*(?=\" \"\\$@\"\\n)/.exec(source)?.[0] || ''\n } else if (extLowered === '.ps1') {\n // \"bin.PS1\" generated by\n // https://github.com/npm/cmd-shim/blob/v7.0.0/lib/index.js#L192:\n //\n // #!/usr/bin/env pwsh\n // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n //\n // $exe=\"\"\n // if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n // # Fix case when both the Windows and Linux builds of Node\n // # are installed in the same directory\n // $exe=\".exe\"\n // }\n // $ret=0\n // if (Test-Path \"$basedir/node$exe\") {\n // # Support pipeline input\n // if ($MyInvocation.ExpectingInput) {\n // $input | & \"$basedir/node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // } else {\n // & \"$basedir/node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // }\n // $ret=$LASTEXITCODE\n // } else {\n // # Support pipeline input\n // if ($MyInvocation.ExpectingInput) {\n // $input | & \"node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // } else {\n // & \"node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // }\n // $ret=$LASTEXITCODE\n // }\n // exit $ret\n relPath = /(?<=\"\\$basedir\\/).*(?=\" $args\\n)/.exec(source)?.[0] || ''\n }\n if (relPath) {\n binPath = normalizePath(path?.resolve(path?.dirname(binPath), relPath))\n }\n }\n } else {\n // Handle Unix shell scripts (non-Windows platforms)\n let hasNoExt = extLowered === ''\n const isPnpmOrYarn = basename === 'pnpm' || basename === 'yarn'\n const isNpmOrNpx = basename === 'npm' || basename === 'npx'\n\n // Handle special case where pnpm path in CI has extra segments.\n // In setup-pnpm GitHub Action, the path might be malformed like:\n // /home/user/setup-pnpm/node_modules/.bin/pnpm/bin/pnpm.cjs\n // This happens when the shell script contains a relative path that\n // when resolved, creates an invalid nested structure.\n if (isPnpmOrYarn && binPath.includes('/.bin/pnpm/bin/')) {\n // Extract the correct pnpm bin path.\n const binIndex = binPath.indexOf('/.bin/pnpm')\n if (binIndex !== -1) {\n // Get the base path up to /.bin/pnpm.\n const baseBinPath = binPath.slice(0, binIndex + '/.bin/pnpm'.length)\n // Check if the original shell script exists.\n try {\n const stats = fs?.statSync(baseBinPath)\n // Only use this path if it's a file (the shell script).\n if (stats.isFile()) {\n binPath = normalizePath(baseBinPath)\n // Recompute hasNoExt since we changed the path.\n hasNoExt = !path?.extname(binPath)\n }\n } catch {\n // If stat fails, continue with the original path.\n }\n }\n }\n\n if (\n hasNoExt &&\n (isPnpmOrYarn || isNpmOrNpx) &&\n // For extensionless files (Unix shell scripts), verify existence before reading.\n // This prevents ENOENT errors when the bin path doesn't exist.\n fs?.existsSync(binPath)\n ) {\n const source = fs?.readFileSync(binPath, 'utf8')\n let relPath = ''\n\n if (isPnpmOrYarn) {\n // Handle pnpm/yarn Unix shell scripts.\n // Format: exec \"$basedir/node\" \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n // or: exec node \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n relPath =\n /(?<=\"\\$basedir\\/)\\.tools\\/[^\"]+(?=\"\\s+\"\\$@\")/.exec(source)?.[0] || ''\n if (!relPath) {\n // Try standard cmd-shim format: exec node \"$basedir/../package/bin/binary.js\" \"$@\"\n // Example: exec node \"$basedir/../pnpm/bin/pnpm.cjs\" \"$@\"\n // ^^^^^^^^^^^^^^^^^^^^^ captures this part\n // This regex needs to be more careful to not match \"$@\" at the end.\n relPath =\n /(?<=\"\\$basedir\\/)[^\"]+(?=\"\\s+\"\\$@\")/.exec(source)?.[0] || ''\n }\n // Special case for setup-pnpm GitHub Action which may use a different format.\n // The setup-pnpm action creates a shell script that references ../pnpm/bin/pnpm.cjs\n if (!relPath) {\n // Try to match: exec node \"$basedir/../pnpm/bin/pnpm.cjs\" \"$@\"\n const match = /exec\\s+node\\s+\"?\\$basedir\\/([^\"]+)\"?\\s+\"\\$@\"/.exec(\n source,\n )\n if (match) {\n relPath = match[1] || ''\n }\n }\n // Check if the extracted path looks wrong (e.g., pnpm/bin/pnpm.cjs without ../).\n // This happens with setup-pnpm action when it creates a malformed shell script.\n if (relPath && basename === 'pnpm' && relPath.startsWith('pnpm/')) {\n // The path should be ../pnpm/... not pnpm/...\n // Prepend ../ to fix the relative path.\n relPath = `../${relPath}`\n }\n } else if (isNpmOrNpx) {\n // Handle npm/npx Unix shell scripts\n relPath =\n basename === 'npm'\n ? /(?<=NPM_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] || ''\n : /(?<=NPX_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] || ''\n }\n\n if (relPath) {\n // Resolve the relative path to handle .. segments properly.\n binPath = normalizePath(path?.resolve(path?.dirname(binPath), relPath))\n }\n }\n }\n try {\n const realPath = fs?.realpathSync.native(binPath)\n return normalizePath(realPath)\n } catch {}\n // Return normalized path even if realpath fails.\n return normalizePath(binPath)\n}\n"],
5
- "mappings": "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",
6
- "names": ["which", "binPath"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/cacache.ts"],
4
- "sourcesContent": ["/** @fileoverview Cacache utilities for Socket ecosystem shared content-addressable cache. */\n\nimport { getSocketCacacheDir } from './paths'\n\nexport interface GetOptions {\n integrity?: string | undefined\n size?: number | undefined\n memoize?: boolean | undefined\n}\n\nexport interface PutOptions {\n integrity?: string | undefined\n size?: number | undefined\n metadata?: any | undefined\n memoize?: boolean | undefined\n}\n\nexport interface CacheEntry {\n data: Buffer\n integrity: string\n key: string\n metadata?: any | undefined\n path: string\n size: number\n time: number\n}\n\nexport interface RemoveOptions {\n /**\n * Optional key prefix to filter removals.\n * If provided, only keys starting with this prefix will be removed.\n * Can include wildcards (*) for pattern matching.\n *\n * @example\n * { prefix: 'socket-sdk' } // Simple prefix\n * { prefix: 'socket-sdk:scans:abc*' } // With wildcard\n */\n prefix?: string | undefined\n}\n\n/**\n * Get the cacache module for cache operations.\n */\nexport function getCacache() {\n return /*@__PURE__*/ require('./external/cacache')\n}\n\n/**\n * Convert wildcard pattern to regex for matching.\n * Supports * as wildcard (matches any characters).\n */\nfunction patternToRegex(pattern: string): RegExp {\n // Escape regex special characters except *\n const escaped = pattern.replaceAll(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&')\n // Convert * to .* (match any characters)\n const regexPattern = escaped.replaceAll('*', '.*')\n return new RegExp(`^${regexPattern}`)\n}\n\n/**\n * Check if a key matches a pattern (with wildcard support).\n */\nfunction matchesPattern(key: string, pattern: string): boolean {\n // If no wildcards, use simple prefix matching (faster)\n if (!pattern.includes('*')) {\n return key.startsWith(pattern)\n }\n // Use regex for wildcard patterns\n const regex = patternToRegex(pattern)\n return regex.test(key)\n}\n\n/**\n * Clear entries from the Socket shared cache.\n *\n * Supports wildcard patterns (*) in prefix for flexible matching.\n * For simple prefixes without wildcards, uses efficient streaming.\n * For wildcard patterns, iterates and matches each entry.\n *\n * @param options - Optional configuration for selective clearing\n * @param options.prefix - Prefix or pattern to match (supports * wildcards)\n * @returns Number of entries removed (only when prefix is specified)\n *\n * @example\n * // Clear all entries\n * await clear()\n *\n * @example\n * // Clear entries with simple prefix\n * const removed = await clear({ prefix: 'socket-sdk:scans' })\n * console.log(`Removed ${removed} scan cache entries`)\n *\n * @example\n * // Clear entries with wildcard pattern\n * await clear({ prefix: 'socket-sdk:scans:abc*' })\n * await clear({ prefix: 'socket-sdk:npm/lodash/*' })\n */\nexport async function clear(\n options?: RemoveOptions | undefined,\n): Promise<number | undefined> {\n const opts = { __proto__: null, ...options } as RemoveOptions\n const cacache = getCacache()\n const cacheDir = getSocketCacacheDir()\n\n // If no prefix specified, clear everything.\n if (!opts.prefix) {\n try {\n await cacache.rm.all(cacheDir)\n return\n } catch (e) {\n // Ignore ENOTEMPTY errors - can occur when multiple processes\n // are cleaning up concurrently (e.g., in CI test environments).\n if ((e as NodeJS.ErrnoException)?.code !== 'ENOTEMPTY') {\n throw e\n }\n return\n }\n }\n\n const hasWildcard = opts.prefix.includes('*')\n\n // For simple prefix (no wildcards), use faster iteration.\n if (!hasWildcard) {\n let removed = 0\n const stream = cacache.ls.stream(cacheDir)\n\n for await (const entry of stream) {\n if (entry.key.startsWith(opts.prefix)) {\n try {\n await cacache.rm.entry(cacheDir, entry.key)\n removed++\n } catch {\n // Ignore individual removal errors (e.g., already removed by another process).\n }\n }\n }\n\n return removed\n }\n\n // For wildcard patterns, need to match each entry.\n let removed = 0\n const stream = cacache.ls.stream(cacheDir)\n\n for await (const entry of stream) {\n if (matchesPattern(entry.key, opts.prefix)) {\n try {\n await cacache.rm.entry(cacheDir, entry.key)\n removed++\n } catch {\n // Ignore individual removal errors.\n }\n }\n }\n\n return removed\n}\n\n/**\n * Get data from the Socket shared cache by key.\n * @throws {Error} When cache entry is not found.\n * @throws {TypeError} If key contains wildcards (*)\n */\nexport async function get(\n key: string,\n options?: GetOptions | undefined,\n): Promise<CacheEntry> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: \"pattern*\" }).',\n )\n }\n const cacache = getCacache() as any\n return await cacache.get(getSocketCacacheDir(), key, options)\n}\n\n/**\n * Put data into the Socket shared cache with a key.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\nexport async function put(\n key: string,\n data: string | Buffer,\n options?: PutOptions | undefined,\n) {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: \"pattern*\" }).',\n )\n }\n const cacache = getCacache()\n return await cacache.put(getSocketCacacheDir(), key, data, options)\n}\n\n/**\n * Remove an entry from the Socket shared cache by key.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\nexport async function remove(key: string): Promise<unknown> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Use clear({ prefix: \"pattern*\" }) to remove multiple entries.',\n )\n }\n const cacache = getCacache() as any\n return await cacache.rm.entry(getSocketCacacheDir(), key)\n}\n\n/**\n * Get data from the Socket shared cache by key without throwing.\n */\nexport async function safeGet(\n key: string,\n options?: GetOptions | undefined,\n): Promise<CacheEntry | undefined> {\n try {\n return await get(key, options)\n } catch {\n return undefined\n }\n}\n\n/**\n * Execute a callback with a temporary directory for cache operations.\n */\nexport async function withTmp<T>(\n callback: (tmpDirPath: string) => Promise<T>,\n): Promise<T> {\n const cacache = getCacache()\n // The DefinitelyTyped types for cacache.tmp.withTmp are incorrect.\n // It actually returns the callback's return value, not void.\n return (await cacache.tmp.withTmp(\n getSocketCacacheDir(),\n {},\n callback as any,\n )) as T\n}\n"],
5
- "mappings": "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",
6
- "names": ["removed", "stream"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/cache-with-ttl.ts"],
4
- "sourcesContent": ["/**\n * @fileoverview Generic TTL-based caching utility using cacache.\n *\n * Provides a simple interface for caching data with time-to-live (TTL) expiration.\n * Uses cacache for persistent storage with metadata for TTL tracking.\n *\n * Features:\n * - Automatic expiration based on TTL\n * - In-memory memoization for hot data\n * - Persistent storage across process restarts\n * - Type-safe with generics\n *\n * Usage:\n * ```ts\n * const cache = createTtlCache({ ttl: 5 * 60 * 1000 }) // 5 minutes\n * const data = await cache.getOrFetch('key', async () => fetchData())\n * ```\n */\n\nimport * as cacache from './cacache'\n\nexport interface TtlCacheOptions {\n /**\n * Time-to-live in milliseconds.\n * @default 5 * 60 * 1000 (5 minutes)\n */\n ttl?: number | undefined\n /**\n * Enable in-memory memoization for hot data.\n * @default true\n */\n memoize?: boolean | undefined\n /**\n * Custom cache key prefix.\n * Must not contain wildcards (*).\n * Use clear({ prefix: \"pattern*\" }) for wildcard matching instead.\n *\n * @default 'ttl-cache'\n * @throws {TypeError} If prefix contains wildcards\n *\n * @example\n * // Valid\n * createTtlCache({ prefix: 'socket-sdk' })\n * createTtlCache({ prefix: 'my-app:cache' })\n *\n * @example\n * // Invalid - throws TypeError\n * createTtlCache({ prefix: 'socket-*' })\n */\n prefix?: string | undefined\n}\n\nexport interface TtlCacheEntry<T> {\n data: T\n expiresAt: number\n}\n\nexport interface ClearOptions {\n /**\n * Only clear in-memory memoization cache, not persistent cache.\n * Useful for forcing a refresh of cached data without removing it from disk.\n *\n * @default false\n */\n memoOnly?: boolean | undefined\n}\n\nexport interface TtlCache {\n /**\n * Get cached data without fetching.\n * Returns undefined if not found or expired.\n *\n * @param key - Cache key (must not contain wildcards)\n * @throws {TypeError} If key contains wildcards (*)\n */\n get<T>(key: string): Promise<T | undefined>\n /**\n * Get all cached entries matching a pattern.\n * Supports wildcards (*) for flexible matching.\n *\n * @param pattern - Key pattern (supports * wildcards, or use '*' for all entries)\n * @returns Map of matching entries (key -> value)\n *\n * @example\n * // Get all organization entries\n * const orgs = await cache.getAll<OrgData>('organizations:*')\n * for (const [key, org] of orgs) {\n * console.log(`${key}: ${org.name}`)\n * }\n *\n * @example\n * // Get all entries with this cache's prefix\n * const all = await cache.getAll<any>('*')\n */\n getAll<T>(pattern: string): Promise<Map<string, T>>\n /**\n * Get cached data or fetch and cache if missing/expired.\n *\n * @param key - Cache key (must not contain wildcards)\n */\n getOrFetch<T>(key: string, fetcher: () => Promise<T>): Promise<T>\n /**\n * Set cached data with TTL.\n *\n * @param key - Cache key (must not contain wildcards)\n * @throws {TypeError} If key contains wildcards (*)\n */\n set<T>(key: string, data: T): Promise<void>\n /**\n * Delete a specific cache entry.\n *\n * @param key - Cache key (must not contain wildcards)\n * @throws {TypeError} If key contains wildcards (*)\n */\n delete(key: string): Promise<void>\n /**\n * Delete all cache entries matching a pattern.\n * Supports wildcards (*) for flexible matching.\n *\n * @param pattern - Key pattern (supports * wildcards, or omit to delete all)\n * @returns Number of entries deleted\n *\n * @example\n * // Delete all entries with this cache's prefix\n * await cache.deleteAll()\n *\n * @example\n * // Delete entries matching prefix\n * await cache.deleteAll('organizations')\n *\n * @example\n * // Delete entries with wildcard pattern\n * await cache.deleteAll('scans:abc*')\n * await cache.deleteAll('npm/lodash/*')\n */\n deleteAll(pattern?: string | undefined): Promise<number>\n /**\n * Clear all cache entries (like Map.clear()).\n * Optionally clear only in-memory cache.\n *\n * @param options - Optional configuration\n * @param options.memoOnly - If true, only clears in-memory cache\n *\n * @example\n * // Clear everything (memory + disk)\n * await cache.clear()\n *\n * @example\n * // Clear only in-memory cache (force refresh)\n * await cache.clear({ memoOnly: true })\n */\n clear(options?: ClearOptions | undefined): Promise<void>\n}\n\n// 5 minutes\nconst DEFAULT_TTL_MS = 5 * 60 * 1000\nconst DEFAULT_PREFIX = 'ttl-cache'\n\n/**\n * Create a TTL-based cache instance.\n */\nexport function createTtlCache(options?: TtlCacheOptions): TtlCache {\n const opts = {\n __proto__: null,\n memoize: true,\n prefix: DEFAULT_PREFIX,\n ttl: DEFAULT_TTL_MS,\n ...options,\n } as Required<TtlCacheOptions>\n\n // Validate prefix does not contain wildcards.\n if (opts.prefix?.includes('*')) {\n throw new TypeError(\n 'Cache prefix cannot contain wildcards (*). Use clear({ prefix: \"pattern*\" }) for wildcard matching.',\n )\n }\n\n // In-memory cache for hot data\n const memoCache = new Map<string, TtlCacheEntry<any>>()\n\n // Ensure ttl is defined\n const ttl = opts.ttl ?? DEFAULT_TTL_MS\n\n /**\n * Build full cache key with prefix.\n */\n function buildKey(key: string): string {\n return `${opts.prefix}:${key}`\n }\n\n /**\n * Check if entry is expired.\n */\n function isExpired(entry: TtlCacheEntry<any>): boolean {\n return Date.now() > entry.expiresAt\n }\n\n /**\n * Create a matcher function for a pattern (with wildcard support).\n * Returns a function that tests if a key matches the pattern.\n */\n function createMatcher(pattern: string): (key: string) => boolean {\n const fullPattern = buildKey(pattern)\n const hasWildcard = pattern.includes('*')\n\n if (!hasWildcard) {\n // Simple prefix matching (fast path).\n return (key: string) => key.startsWith(fullPattern)\n }\n\n // Wildcard matching with regex.\n const escaped = fullPattern.replaceAll(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&')\n const regexPattern = escaped.replaceAll('*', '.*')\n const regex = new RegExp(`^${regexPattern}`)\n return (key: string) => regex.test(key)\n }\n\n /**\n * Get cached data without fetching.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\n async function get<T>(key: string): Promise<T | undefined> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Use getAll(pattern) to retrieve multiple entries.',\n )\n }\n\n const fullKey = buildKey(key)\n\n // Check in-memory cache first.\n if (opts.memoize) {\n const memoEntry = memoCache.get(fullKey)\n if (memoEntry && !isExpired(memoEntry)) {\n return memoEntry.data as T\n }\n // Remove expired memo entry.\n if (memoEntry) {\n memoCache.delete(fullKey)\n }\n }\n\n // Check persistent cache.\n const cacheEntry = await cacache.safeGet(fullKey)\n if (cacheEntry) {\n const entry = JSON.parse(\n cacheEntry.data.toString('utf8'),\n ) as TtlCacheEntry<T>\n if (!isExpired(entry)) {\n // Update in-memory cache.\n if (opts.memoize) {\n memoCache.set(fullKey, entry)\n }\n return entry.data\n }\n // Remove expired entry.\n await cacache.remove(fullKey)\n }\n\n return undefined\n }\n\n /**\n * Get all cached entries matching a pattern.\n * Supports wildcards (*) for flexible matching.\n */\n async function getAll<T>(pattern: string): Promise<Map<string, T>> {\n const results = new Map<string, T>()\n const matches = createMatcher(pattern)\n\n // Check in-memory cache first.\n if (opts.memoize) {\n for (const [key, entry] of memoCache.entries()) {\n if (!matches(key)) {\n continue\n }\n\n // Skip if expired.\n if (isExpired(entry)) {\n memoCache.delete(key)\n continue\n }\n\n // Add to results (strip cache prefix from key).\n const originalKey = key.slice((opts.prefix?.length ?? 0) + 1)\n results.set(originalKey, entry.data as T)\n }\n }\n\n // Check persistent cache for entries not in memory.\n const cacheDir = (await import('./paths')).getSocketCacacheDir()\n const cacacheModule = (await import('./cacache')) as any\n const stream = cacacheModule.getCacache().ls.stream(cacheDir)\n\n for await (const cacheEntry of stream) {\n // Skip if doesn't match our cache prefix.\n if (!cacheEntry.key.startsWith(`${opts.prefix}:`)) {\n continue\n }\n\n // Skip if doesn't match pattern.\n if (!matches(cacheEntry.key)) {\n continue\n }\n\n // Skip if already in results (from memory).\n const originalKey = cacheEntry.key.slice((opts.prefix?.length ?? 0) + 1)\n if (results.has(originalKey)) {\n continue\n }\n\n // Get entry from cache.\n try {\n const entry = await cacache.safeGet(cacheEntry.key)\n if (!entry) {\n continue\n }\n\n const parsed = JSON.parse(\n entry.data.toString('utf8'),\n ) as TtlCacheEntry<T>\n\n // Skip if expired.\n if (isExpired(parsed)) {\n await cacache.remove(cacheEntry.key)\n continue\n }\n\n // Add to results.\n results.set(originalKey, parsed.data)\n\n // Update in-memory cache.\n if (opts.memoize) {\n memoCache.set(cacheEntry.key, parsed)\n }\n } catch {\n // Ignore parse errors or other issues.\n }\n }\n\n return results\n }\n\n /**\n * Set cached data with TTL.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\n async function set<T>(key: string, data: T): Promise<void> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: \"pattern*\" }).',\n )\n }\n\n const fullKey = buildKey(key)\n const entry: TtlCacheEntry<T> = {\n data,\n expiresAt: Date.now() + ttl,\n }\n\n // Update in-memory cache first (synchronous and fast).\n if (opts.memoize) {\n memoCache.set(fullKey, entry)\n }\n\n // Update persistent cache (don't fail if this errors).\n // In-memory cache is already updated, so immediate reads will succeed.\n try {\n await cacache.put(fullKey, JSON.stringify(entry), {\n metadata: { expiresAt: entry.expiresAt },\n })\n } catch {\n // Ignore persistent cache errors - in-memory cache is the source of truth.\n // This can happen during test setup or if the cache directory is not accessible.\n }\n }\n\n /**\n * Get cached data or fetch and cache if missing/expired.\n */\n async function getOrFetch<T>(\n key: string,\n fetcher: () => Promise<T>,\n ): Promise<T> {\n const cached = await get<T>(key)\n if (cached !== undefined) {\n return cached\n }\n\n const data = await fetcher()\n await set(key, data)\n return data\n }\n\n /**\n * Delete a specific cache entry.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\n async function deleteEntry(key: string): Promise<void> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Use deleteAll(pattern) to remove multiple entries.',\n )\n }\n\n const fullKey = buildKey(key)\n memoCache.delete(fullKey)\n await cacache.remove(fullKey)\n }\n\n /**\n * Delete all cache entries matching a pattern.\n * Supports wildcards (*) in patterns.\n * Delegates to cacache.clear() which handles pattern matching efficiently.\n */\n async function deleteAll(pattern?: string | undefined): Promise<number> {\n // Build full prefix/pattern by combining cache prefix with optional pattern.\n const fullPrefix = pattern ? `${opts.prefix}:${pattern}` : opts.prefix\n\n // Delete matching in-memory entries.\n if (!pattern) {\n // Delete all in-memory entries for this cache.\n memoCache.clear()\n } else {\n // Delete matching in-memory entries using shared matcher logic.\n const matches = createMatcher(pattern)\n for (const key of memoCache.keys()) {\n if (matches(key)) {\n memoCache.delete(key)\n }\n }\n }\n\n // Delete matching persistent cache entries.\n // Delegate to cacache.clear() which handles wildcards efficiently.\n const removed = await cacache.clear({ prefix: fullPrefix })\n return (removed ?? 0) as number\n }\n\n /**\n * Clear all cache entries (like Map.clear()).\n * Optionally clear only in-memory cache.\n */\n async function clear(options?: ClearOptions | undefined): Promise<void> {\n const opts = { __proto__: null, ...options } as ClearOptions\n\n // Clear in-memory cache.\n memoCache.clear()\n\n // If memoOnly, stop here.\n if (opts.memoOnly) {\n return\n }\n\n // Clear persistent cache.\n await deleteAll()\n }\n\n return {\n clear,\n delete: deleteEntry,\n deleteAll,\n get,\n getAll,\n getOrFetch,\n set,\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["options", "opts"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/constants/agents.ts"],
4
- "sourcesContent": ["/**\n * Package manager agent constants.\n * Agent names, lockfile names, registry URLs, and configuration field names.\n */\n\n// Agent names.\nexport const NPM = 'npm'\nexport const PNPM = 'pnpm'\nexport const YARN = 'yarn'\nexport const BUN = 'bun'\nexport const VLT = 'vlt'\nexport const NPX = 'npx'\n\n// NPM binary path - resolved at runtime using which.\nexport const NPM_BIN_PATH = /*@__PURE__*/ (() => {\n try {\n const which = /*@__PURE__*/ require('../external/which')\n return which.sync('npm', { nothrow: true }) || 'npm'\n } catch {\n return 'npm'\n }\n})()\n\n// NPM CLI entry point - resolved at runtime from npm bin location.\n// NOTE: This is kept for backward compatibility but NPM_BIN_PATH should be used instead\n// because cli.js exports a function that must be invoked, not executed directly.\nexport const NPM_REAL_EXEC_PATH = /*@__PURE__*/ (() => {\n try {\n const { existsSync } = /*@__PURE__*/ require('node:fs')\n const path = /*@__PURE__*/ require('node:path')\n const which = /*@__PURE__*/ require('../external/which')\n // Find npm binary using which.\n const npmBin = which.sync('npm', { nothrow: true })\n if (!npmBin) {\n return undefined\n }\n // npm bin is typically at: /path/to/node/bin/npm\n // cli.js is at: /path/to/node/lib/node_modules/npm/lib/cli.js\n // /path/to/node/bin\n const npmDir = path.dirname(npmBin)\n const nodeModulesPath = path.join(\n npmDir,\n '..',\n 'lib',\n 'node_modules',\n 'npm',\n 'lib',\n 'cli.js',\n )\n if (existsSync(nodeModulesPath)) {\n return nodeModulesPath\n }\n return undefined\n } catch {\n return undefined\n }\n})()\n\n// NPM registry URL.\nexport const NPM_REGISTRY_URL = 'https://registry.npmjs.org'\n\n// Agent variants.\nexport const YARN_BERRY = 'yarn/berry'\nexport const YARN_CLASSIC = 'yarn/classic'\n\n// Lock files.\nexport const PACKAGE_LOCK = 'package-lock'\nexport const PACKAGE_LOCK_JSON = 'package-lock.json'\nexport const NPM_SHRINKWRAP_JSON = 'npm-shrinkwrap.json'\nexport const PNPM_LOCK = 'pnpm-lock'\nexport const PNPM_LOCK_YAML = 'pnpm-lock.yaml'\nexport const YARN_LOCK = 'yarn.lock'\nexport const BUN_LOCK = 'bun.lock'\nexport const BUN_LOCKB = 'bun.lockb'\nexport const VLT_LOCK_JSON = 'vlt-lock.json'\n\n// Workspace configuration.\nexport const PNPM_WORKSPACE_YAML = 'pnpm-workspace.yaml'\n\n// Package.json fields for dependency overrides.\nexport const OVERRIDES = 'overrides'\nexport const RESOLUTIONS = 'resolutions'\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,MAAM;AACZ,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,MAAM;AACZ,MAAM,MAAM;AACZ,MAAM,MAAM;AAGZ,MAAM,eAA8B,uBAAM;AAC/C,MAAI;AACF,UAAM,QAAsB,QAAQ,mBAAmB;AACvD,WAAO,MAAM,KAAK,OAAO,EAAE,SAAS,KAAK,CAAC,KAAK;AAAA,EACjD,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAAG;AAKI,MAAM,qBAAoC,uBAAM;AACrD,MAAI;AACF,UAAM,EAAE,WAAW,IAAkB,QAAQ,SAAS;AACtD,UAAM,OAAqB,QAAQ,WAAW;AAC9C,UAAM,QAAsB,QAAQ,mBAAmB;AAEvD,UAAM,SAAS,MAAM,KAAK,OAAO,EAAE,SAAS,KAAK,CAAC;AAClD,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AAIA,UAAM,SAAS,KAAK,QAAQ,MAAM;AAClC,UAAM,kBAAkB,KAAK;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,QAAI,WAAW,eAAe,GAAG;AAC/B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAAG;AAGI,MAAM,mBAAmB;AAGzB,MAAM,aAAa;AACnB,MAAM,eAAe;AAGrB,MAAM,eAAe;AACrB,MAAM,oBAAoB;AAC1B,MAAM,sBAAsB;AAC5B,MAAM,YAAY;AAClB,MAAM,iBAAiB;AACvB,MAAM,YAAY;AAClB,MAAM,WAAW;AACjB,MAAM,YAAY;AAClB,MAAM,gBAAgB;AAGtB,MAAM,sBAAsB;AAG5B,MAAM,YAAY;AAClB,MAAM,cAAc;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/constants/core.ts"],
4
- "sourcesContent": ["/**\n * Core primitives and fundamental constants.\n * Goal: Minimize this module by finding proper semantic homes for all constants.\n */\n\n// Internal implementation symbol.\nexport const kInternalsSymbol = Symbol('@socketregistry.constants.internals')\n\n// Sentinel values.\nexport const LOOP_SENTINEL = 1_000_000\n\n// Error and unknown values.\nexport const UNKNOWN_ERROR = 'Unknown error'\nexport const UNKNOWN_VALUE = '<unknown>'\n\n// Empty values.\nexport const EMPTY_FILE = '/* empty */\\n'\nexport const EMPTY_VALUE = '<value>'\n\n// Undefined token.\nexport const UNDEFINED_TOKEN: undefined = undefined\n\n// Miscellaneous.\nexport const V = 'v'\nexport const COLUMN_LIMIT = 80\n\n// Environment variable name constants.\nexport const NODE_AUTH_TOKEN = 'NODE_AUTH_TOKEN'\nexport const NODE_ENV = 'NODE_ENV'\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,mBAAmB,OAAO,qCAAqC;AAGrE,MAAM,gBAAgB;AAGtB,MAAM,gBAAgB;AACtB,MAAM,gBAAgB;AAGtB,MAAM,aAAa;AACnB,MAAM,cAAc;AAGpB,MAAM,kBAA6B;AAGnC,MAAM,IAAI;AACV,MAAM,eAAe;AAGrB,MAAM,kBAAkB;AACxB,MAAM,WAAW;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/constants/encoding.ts"],
4
- "sourcesContent": ["/**\n * Character encodings and character codes.\n */\n\n// Encoding.\nexport const UTF8 = 'utf8'\n\n// Character codes.\nexport const CHAR_BACKWARD_SLASH = 92\nexport const CHAR_COLON = 58\nexport const CHAR_FORWARD_SLASH = 47\nexport const CHAR_LOWERCASE_A = 97\nexport const CHAR_LOWERCASE_Z = 122\nexport const CHAR_UPPERCASE_A = 65\nexport const CHAR_UPPERCASE_Z = 90\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,MAAM,OAAO;AAGb,MAAM,sBAAsB;AAC5B,MAAM,aAAa;AACnB,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AACzB,MAAM,mBAAmB;AACzB,MAAM,mBAAmB;AACzB,MAAM,mBAAmB;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/constants/github.ts"],
4
- "sourcesContent": ["/**\n * GitHub APIs and cache configuration.\n */\n\n// GitHub API.\nexport const GITHUB_API_BASE_URL = 'https://api.github.com'\n\n// GitHub cache.\nexport const CACHE_GITHUB_DIR = 'github'\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,MAAM,sBAAsB;AAG5B,MAAM,mBAAmB;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/constants/licenses.ts"],
4
- "sourcesContent": ["/**\n * License identifiers and copy-left license sets.\n */\n\n// License identifiers.\nexport const MIT = 'MIT'\nexport const UNLICENCED = 'UNLICENCED'\nexport const UNLICENSED = 'UNLICENSED'\n\n// Copy-left licenses.\nlet _copyLeftLicenses: Set<string>\nexport function getCopyLeftLicenses(): Set<string> {\n if (_copyLeftLicenses === undefined) {\n _copyLeftLicenses = new Set([\n 'AGPL-1.0',\n 'AGPL-1.0-only',\n 'AGPL-1.0-or-later',\n 'AGPL-3.0',\n 'AGPL-3.0-only',\n 'AGPL-3.0-or-later',\n 'CC-BY-SA-1.0',\n 'CC-BY-SA-2.0',\n 'CC-BY-SA-3.0',\n 'CC-BY-SA-4.0',\n 'EPL-1.0',\n 'EPL-2.0',\n 'EUPL-1.1',\n 'EUPL-1.2',\n 'GPL-1.0',\n 'GPL-1.0-only',\n 'GPL-1.0-or-later',\n 'GPL-2.0',\n 'GPL-2.0-only',\n 'GPL-2.0-or-later',\n 'GPL-3.0',\n 'GPL-3.0-only',\n 'GPL-3.0-or-later',\n ])\n }\n return _copyLeftLicenses\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,MAAM,MAAM;AACZ,MAAM,aAAa;AACnB,MAAM,aAAa;AAG1B,IAAI;AACG,SAAS,sBAAmC;AACjD,MAAI,sBAAsB,QAAW;AACnC,wBAAoB,oBAAI,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AACT;",
6
- "names": []
7
- }