@socketsecurity/lib 6.0.5 → 6.0.7

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 (534) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/ai/discover.d.mts +2 -2
  3. package/dist/ai/discover.js +6 -4
  4. package/dist/ai/spawn.js +10 -6
  5. package/dist/ai/types.d.mts +18 -6
  6. package/dist/ai/worktree.d.mts +6 -6
  7. package/dist/ai/worktree.js +12 -7
  8. package/dist/ansi/strip.d.ts +1 -1
  9. package/dist/ansi/strip.js +0 -2
  10. package/dist/archives/_internal.js +7 -9
  11. package/dist/archives/extract.js +1 -1
  12. package/dist/archives/tar.js +6 -6
  13. package/dist/archives/zip.js +4 -6
  14. package/dist/argv/flag-predicates.d.ts +12 -12
  15. package/dist/argv/flag-predicates.js +17 -17
  16. package/dist/argv/flag-types.d.ts +18 -18
  17. package/dist/argv/flag-types.js +4 -4
  18. package/dist/argv/parse.d.ts +1 -1
  19. package/dist/arrays/_internal.js +11 -12
  20. package/dist/arrays/chunk.js +0 -1
  21. package/dist/arrays/join.d.ts +37 -3
  22. package/dist/arrays/join.js +43 -7
  23. package/dist/arrays/unique.js +0 -1
  24. package/dist/bin/_internal.d.ts +1 -1
  25. package/dist/bin/_internal.js +1 -1
  26. package/dist/bin/acorn-bindgen.cjs +769 -0
  27. package/dist/bin/acorn.wasm +0 -0
  28. package/dist/bin/exec.js +2 -3
  29. package/dist/bin/find.js +13 -13
  30. package/dist/bin/prim.cjs +39244 -0
  31. package/dist/bin/resolve.js +12 -13
  32. package/dist/bin/which.js +8 -8
  33. package/dist/cache/ttl/store.js +5 -5
  34. package/dist/checks/primordials-defaults.d.ts +3 -3
  35. package/dist/checks/primordials-defaults.js +3 -3
  36. package/dist/checks/primordials.js +4 -3
  37. package/dist/{bin → cli}/check-primordials.d.ts +11 -11
  38. package/dist/{bin → cli}/check-primordials.js +56 -52
  39. package/dist/{bin → cli}/check.js +6 -5
  40. package/dist/{bin → cli}/socket-lib.d.ts +1 -1
  41. package/dist/{bin → cli}/socket-lib.js +4 -4
  42. package/dist/colors/socket-palette.js +7 -9
  43. package/dist/compression/_internal.d.ts +12 -12
  44. package/dist/compression/_internal.js +20 -19
  45. package/dist/compression/brotli.d.ts +25 -25
  46. package/dist/compression/brotli.js +37 -44
  47. package/dist/compression/gzip.d.ts +23 -23
  48. package/dist/compression/gzip.js +44 -52
  49. package/dist/constants/agents.d.ts +3 -1
  50. package/dist/constants/agents.js +15 -11
  51. package/dist/constants/licenses.js +3 -3
  52. package/dist/constants/node.d.ts +23 -0
  53. package/dist/constants/node.js +47 -15
  54. package/dist/constants/packages.js +22 -28
  55. package/dist/constants/platform.d.ts +30 -3
  56. package/dist/constants/platform.js +72 -12
  57. package/dist/constants/runtime.d.ts +22 -0
  58. package/dist/constants/runtime.js +32 -0
  59. package/dist/constants/socket.js +1 -1
  60. package/dist/cover/code.js +8 -8
  61. package/dist/cover/formatters.js +5 -5
  62. package/dist/crypto/hash.d.ts +26 -1
  63. package/dist/crypto/hash.js +43 -12
  64. package/dist/debug/_internal.js +4 -6
  65. package/dist/debug/caller-info.js +2 -3
  66. package/dist/debug/namespace.d.ts +7 -0
  67. package/dist/debug/namespace.js +21 -12
  68. package/dist/debug/output.js +21 -24
  69. package/dist/debug/types.d.ts +4 -4
  70. package/dist/dlx/arborist.js +6 -6
  71. package/dist/dlx/binary-cache.js +14 -14
  72. package/dist/dlx/binary-download.d.ts +1 -1
  73. package/dist/dlx/binary-download.js +14 -13
  74. package/dist/dlx/binary-resolution.js +16 -14
  75. package/dist/dlx/binary-types.d.ts +5 -5
  76. package/dist/dlx/binary.js +5 -5
  77. package/dist/dlx/cache.js +1 -1
  78. package/dist/dlx/detect.d.ts +34 -25
  79. package/dist/dlx/detect.js +86 -77
  80. package/dist/dlx/dir.js +2 -2
  81. package/dist/dlx/firewall.d.ts +1 -1
  82. package/dist/dlx/lockfile.d.ts +19 -18
  83. package/dist/dlx/lockfile.js +16 -16
  84. package/dist/dlx/manifest.d.ts +6 -6
  85. package/dist/dlx/manifest.js +5 -5
  86. package/dist/dlx/package.d.ts +10 -10
  87. package/dist/dlx/package.js +16 -16
  88. package/dist/dlx/packages.js +4 -4
  89. package/dist/dlx/paths.js +7 -7
  90. package/dist/dlx/spec.js +1 -1
  91. package/dist/dlx/types.d.ts +28 -27
  92. package/dist/eco/cargo/parse-lockfile.d.ts +1 -1
  93. package/dist/eco/cargo/parse-lockfile.js +2 -2
  94. package/dist/eco/manifest/analyze-lockfile.js +2 -2
  95. package/dist/eco/manifest/detect-format.js +4 -4
  96. package/dist/eco/manifest/find-packages.js +2 -2
  97. package/dist/eco/manifest/get-package-versions.js +2 -2
  98. package/dist/eco/manifest/get-package.js +2 -2
  99. package/dist/eco/manifest/parse-lockfile.js +2 -2
  100. package/dist/eco/manifest/parse-manifest.js +2 -2
  101. package/dist/eco/manifest/parse.js +2 -2
  102. package/dist/eco/npm/npm/exec.js +2 -2
  103. package/dist/eco/npm/npm/flags.js +7 -12
  104. package/dist/eco/npm/npm/parse-lockfile.d.ts +14 -14
  105. package/dist/eco/npm/npm/parse-lockfile.js +3 -3
  106. package/dist/eco/npm/parse-package-json.js +3 -3
  107. package/dist/eco/npm/pnpm/exec.d.ts +1 -1
  108. package/dist/eco/npm/pnpm/exec.js +5 -5
  109. package/dist/eco/npm/pnpm/flags.js +0 -3
  110. package/dist/eco/npm/pnpm/parse-lockfile.d.ts +1 -1
  111. package/dist/eco/npm/pnpm/parse-lockfile.js +4 -4
  112. package/dist/eco/npm/script.js +9 -6
  113. package/dist/eco/npm/yarnpkg/yarn/exec.js +3 -3
  114. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.d.ts +2 -2
  115. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +8 -8
  116. package/dist/effects/pulse-frames.d.ts +3 -1
  117. package/dist/effects/shimmer-keyframes.d.ts +1 -1
  118. package/dist/effects/shimmer-terminal.d.ts +1 -1
  119. package/dist/env/boolean.js +0 -1
  120. package/dist/env/ci.js +0 -1
  121. package/dist/env/debug.js +0 -1
  122. package/dist/env/github-status.d.ts +51 -0
  123. package/dist/env/github-status.js +90 -0
  124. package/dist/env/github.js +0 -8
  125. package/dist/env/home.js +0 -1
  126. package/dist/env/locale.js +0 -3
  127. package/dist/env/node-auth-token.js +0 -1
  128. package/dist/env/node-env.js +0 -1
  129. package/dist/env/node-version-managers.d.ts +53 -0
  130. package/dist/env/node-version-managers.js +90 -0
  131. package/dist/env/npm.js +0 -5
  132. package/dist/env/number.js +0 -1
  133. package/dist/env/package-manager.js +3 -6
  134. package/dist/env/path.js +0 -1
  135. package/dist/env/pre-commit.js +1 -2
  136. package/dist/env/rewire.d.ts +7 -6
  137. package/dist/env/rewire.js +15 -16
  138. package/dist/env/shell.js +0 -1
  139. package/dist/env/socket-cli.js +5 -18
  140. package/dist/env/socket-mcp.d.ts +114 -0
  141. package/dist/env/socket-mcp.js +146 -0
  142. package/dist/env/socket.d.ts +1 -109
  143. package/dist/env/socket.js +12 -166
  144. package/dist/env/string.js +0 -1
  145. package/dist/env/temp-dir.js +0 -3
  146. package/dist/env/term.js +0 -1
  147. package/dist/env/test.js +3 -6
  148. package/dist/env/windows.js +0 -4
  149. package/dist/env/xdg.js +0 -3
  150. package/dist/events/exit/_internal.d.ts +11 -9
  151. package/dist/events/exit/_internal.js +31 -35
  152. package/dist/events/exit/handler.js +3 -4
  153. package/dist/events/exit/intercept.js +4 -6
  154. package/dist/events/exit/lifecycle.js +16 -18
  155. package/dist/events/exit/signals.js +1 -2
  156. package/dist/events/exit/types.d.ts +6 -5
  157. package/dist/external/@npmcli/package-json.js +2 -2
  158. package/dist/external/@sinclair/typebox/value.js +5 -1
  159. package/dist/external/@sinclair/typebox.js +5 -1
  160. package/dist/external/@socketregistry/packageurl-js.js +27 -0
  161. package/dist/external/npm-pack.js +2 -2
  162. package/dist/external-tools/bazel/read-bazel-version-file.js +1 -1
  163. package/dist/external-tools/bazel/resolve.js +2 -1
  164. package/dist/external-tools/bazel/types.d.ts +1 -1
  165. package/dist/external-tools/cdxgen/from-vfs.js +1 -1
  166. package/dist/external-tools/cdxgen/resolve.js +2 -1
  167. package/dist/external-tools/cdxgen/types.d.ts +1 -1
  168. package/dist/external-tools/from-download.d.ts +1 -1
  169. package/dist/external-tools/from-download.js +1 -1
  170. package/dist/external-tools/from-pip-venv.d.ts +73 -0
  171. package/dist/external-tools/from-pip-venv.js +98 -0
  172. package/dist/external-tools/janus/asset-names.js +1 -1
  173. package/dist/external-tools/janus/from-download.js +3 -5
  174. package/dist/external-tools/janus/from-vfs.js +1 -1
  175. package/dist/external-tools/janus/resolve.js +2 -1
  176. package/dist/external-tools/janus/types.d.ts +1 -1
  177. package/dist/external-tools/jre/detect-platform-arch.d.ts +10 -6
  178. package/dist/external-tools/jre/detect-platform-arch.js +29 -14
  179. package/dist/external-tools/jre/from-download.js +2 -1
  180. package/dist/external-tools/jre/from-vfs.js +1 -1
  181. package/dist/external-tools/jre/resolve.js +2 -1
  182. package/dist/external-tools/jre/types.d.ts +1 -1
  183. package/dist/external-tools/manifest.d.ts +7 -7
  184. package/dist/external-tools/manifest.js +18 -16
  185. package/dist/external-tools/opengrep/from-vfs.js +1 -1
  186. package/dist/external-tools/opengrep/resolve.js +2 -1
  187. package/dist/external-tools/opengrep/types.d.ts +1 -1
  188. package/dist/external-tools/python/asset-names.d.ts +76 -0
  189. package/dist/external-tools/python/asset-names.js +104 -0
  190. package/dist/external-tools/python/dlx.d.ts +80 -0
  191. package/dist/external-tools/python/dlx.js +87 -0
  192. package/dist/external-tools/python/from-download.d.ts +53 -0
  193. package/dist/external-tools/python/from-download.js +68 -0
  194. package/dist/external-tools/python/from-path.d.ts +7 -0
  195. package/dist/external-tools/python/from-path.js +23 -0
  196. package/dist/external-tools/python/pin.d.ts +121 -0
  197. package/dist/external-tools/python/pin.js +173 -0
  198. package/dist/external-tools/python/pip-install.d.ts +75 -0
  199. package/dist/external-tools/python/pip-install.js +139 -0
  200. package/dist/external-tools/python/resolve.d.ts +42 -0
  201. package/dist/external-tools/python/resolve.js +58 -0
  202. package/dist/external-tools/python/types.d.ts +49 -0
  203. package/dist/external-tools/sbt/from-vfs.js +1 -1
  204. package/dist/external-tools/sbt/resolve.js +2 -1
  205. package/dist/external-tools/sbt/types.d.ts +1 -1
  206. package/dist/external-tools/skillspector/from-dlx.d.ts +24 -0
  207. package/dist/external-tools/skillspector/from-dlx.js +41 -0
  208. package/dist/external-tools/skillspector/from-path.d.ts +8 -0
  209. package/dist/external-tools/skillspector/from-path.js +30 -0
  210. package/dist/external-tools/skillspector/from-vfs.d.ts +8 -0
  211. package/dist/external-tools/skillspector/from-vfs.js +27 -0
  212. package/dist/external-tools/skillspector/resolve.d.ts +34 -0
  213. package/dist/external-tools/skillspector/resolve.js +53 -0
  214. package/dist/external-tools/skillspector/types.d.ts +24 -0
  215. package/dist/external-tools/skillspector/types.js +2 -0
  216. package/dist/external-tools/synp/from-download.js +2 -2
  217. package/dist/external-tools/synp/from-vfs.js +1 -1
  218. package/dist/external-tools/synp/resolve.js +2 -1
  219. package/dist/external-tools/trivy/from-vfs.js +1 -1
  220. package/dist/external-tools/trivy/resolve.js +2 -1
  221. package/dist/external-tools/trivy/types.d.ts +1 -1
  222. package/dist/external-tools/trufflehog/from-vfs.js +1 -1
  223. package/dist/external-tools/trufflehog/resolve.js +2 -1
  224. package/dist/external-tools/trufflehog/types.d.ts +1 -1
  225. package/dist/fs/_internal.d.ts +1 -1
  226. package/dist/fs/_internal.js +7 -7
  227. package/dist/fs/access.js +5 -9
  228. package/dist/fs/{path-cache.js → allowed-dirs-cache.js} +1 -1
  229. package/dist/fs/encoding.js +5 -7
  230. package/dist/fs/{find-up.js → find.js} +11 -13
  231. package/dist/fs/inspect.js +7 -13
  232. package/dist/fs/read-dir.js +7 -10
  233. package/dist/fs/read-file.js +8 -14
  234. package/dist/fs/read-json-cache.d.ts +6 -4
  235. package/dist/fs/read-json-cache.js +9 -6
  236. package/dist/fs/read-json.js +4 -6
  237. package/dist/fs/resolve-module.js +1 -1
  238. package/dist/fs/safe.d.ts +1 -1
  239. package/dist/fs/safe.js +12 -13
  240. package/dist/fs/unique.js +4 -5
  241. package/dist/fs/validate.js +1 -2
  242. package/dist/fs/write-json.js +4 -5
  243. package/dist/git/_internal.js +12 -11
  244. package/dist/git/changed.js +4 -4
  245. package/dist/git/repo.js +3 -3
  246. package/dist/git/staged.js +4 -4
  247. package/dist/git/unstaged.js +4 -4
  248. package/dist/github/ghsa.js +2 -2
  249. package/dist/github/refs-cache.d.ts +1 -1
  250. package/dist/github/refs-cache.js +5 -5
  251. package/dist/github/refs-rest.js +5 -5
  252. package/dist/github/{fetch.js → request.js} +13 -2
  253. package/dist/github/token.js +1 -1
  254. package/dist/github/types.d.ts +1 -1
  255. package/dist/globs/_internal.js +7 -9
  256. package/dist/globs/match.js +6 -7
  257. package/dist/globs/matcher.d.ts +3 -3
  258. package/dist/globs/matcher.js +12 -14
  259. package/dist/globs/stream.js +1 -2
  260. package/dist/globs/types.d.ts +24 -24
  261. package/dist/http-request/_internal.d.ts +1 -1
  262. package/dist/http-request/browser.js +21 -13
  263. package/dist/http-request/checksum-file.d.ts +55 -0
  264. package/dist/http-request/checksum-file.js +95 -0
  265. package/dist/http-request/download-types.d.ts +15 -23
  266. package/dist/http-request/download.js +4 -4
  267. package/dist/http-request/headers.d.ts +32 -3
  268. package/dist/http-request/headers.js +41 -13
  269. package/dist/http-request/request-attempt.js +38 -33
  270. package/dist/http-request/request-types.d.ts +7 -2
  271. package/dist/http-request/request.js +33 -16
  272. package/dist/http-request/response-reader.d.ts +12 -1
  273. package/dist/http-request/response-reader.js +22 -2
  274. package/dist/http-request/user-agent.js +3 -4
  275. package/dist/integrity.d.ts +86 -18
  276. package/dist/integrity.js +119 -30
  277. package/dist/ipc/directory.js +2 -2
  278. package/dist/ipc/paths.js +1 -1
  279. package/dist/ipc/write.js +1 -1
  280. package/dist/ipc-cli/get.js +12 -12
  281. package/dist/json/edit.js +13 -14
  282. package/dist/json/format.js +2 -2
  283. package/dist/json/parse.d.ts +1 -1
  284. package/dist/json/parse.js +3 -7
  285. package/dist/logger/_internal.d.ts +4 -4
  286. package/dist/logger/_internal.js +3 -3
  287. package/dist/logger/colors.js +4 -3
  288. package/dist/logger/console-methods.d.ts +132 -0
  289. package/dist/logger/console-methods.js +169 -0
  290. package/dist/logger/console.d.ts +12 -0
  291. package/dist/logger/console.js +42 -11
  292. package/dist/logger/indentation-methods.d.ts +81 -0
  293. package/dist/logger/indentation-methods.js +121 -0
  294. package/dist/logger/node.d.ts +16 -338
  295. package/dist/logger/node.js +75 -608
  296. package/dist/logger/options.d.ts +39 -0
  297. package/dist/logger/options.js +47 -0
  298. package/dist/logger/semantic-methods.d.ts +63 -0
  299. package/dist/logger/semantic-methods.js +108 -0
  300. package/dist/logger/stream-methods.d.ts +63 -0
  301. package/dist/logger/stream-methods.js +101 -0
  302. package/dist/logger/stream.d.ts +37 -0
  303. package/dist/logger/stream.js +42 -0
  304. package/dist/logger/symbols-builder.js +9 -9
  305. package/dist/logger/symbols.d.ts +2 -25
  306. package/dist/logger/symbols.js +53 -74
  307. package/dist/logger/types.d.ts +1 -1
  308. package/dist/memo/types.d.ts +6 -6
  309. package/dist/native-messaging/host.d.ts +20 -0
  310. package/dist/native-messaging/host.js +120 -0
  311. package/dist/native-messaging/index.d.ts +5 -0
  312. package/dist/native-messaging/index.js +22 -0
  313. package/dist/native-messaging/install.d.ts +60 -0
  314. package/dist/native-messaging/install.js +141 -0
  315. package/dist/native-messaging/rate-limit.d.ts +62 -0
  316. package/dist/native-messaging/rate-limit.js +115 -0
  317. package/dist/native-messaging/run.d.ts +10 -0
  318. package/dist/native-messaging/run.js +17 -0
  319. package/dist/node/async-hooks.js +4 -3
  320. package/dist/node/child-process.js +4 -3
  321. package/dist/node/crypto.js +4 -3
  322. package/dist/node/events.js +4 -3
  323. package/dist/node/fs-promises.js +4 -3
  324. package/dist/node/fs.js +4 -3
  325. package/dist/node/http.js +4 -3
  326. package/dist/node/https.js +4 -3
  327. package/dist/node/module.js +10 -6
  328. package/dist/node/os.js +4 -3
  329. package/dist/node/path.js +4 -3
  330. package/dist/node/timers-promises.js +4 -3
  331. package/dist/node/url.js +4 -3
  332. package/dist/node/util.js +4 -3
  333. package/dist/objects/getters.js +5 -7
  334. package/dist/objects/inspect.js +1 -4
  335. package/dist/objects/mutate.js +2 -3
  336. package/dist/objects/predicates.js +0 -4
  337. package/dist/objects/sort.js +3 -7
  338. package/dist/packages/edit-class.js +15 -16
  339. package/dist/packages/edit.js +12 -14
  340. package/dist/packages/exports.js +11 -17
  341. package/dist/packages/fetch.d.ts +16 -0
  342. package/dist/packages/fetch.js +81 -0
  343. package/dist/packages/find.d.ts +55 -0
  344. package/dist/packages/find.js +65 -0
  345. package/dist/packages/isolation.js +14 -14
  346. package/dist/packages/licenses.js +16 -16
  347. package/dist/packages/manifest.js +12 -15
  348. package/dist/packages/metadata-extensions.d.ts +14 -0
  349. package/dist/packages/metadata-extensions.js +43 -0
  350. package/dist/packages/normalize.js +5 -9
  351. package/dist/packages/provenance.d.ts +6 -0
  352. package/dist/packages/provenance.js +25 -18
  353. package/dist/packages/read.d.ts +29 -0
  354. package/dist/packages/read.js +66 -0
  355. package/dist/packages/specs.d.ts +48 -1
  356. package/dist/packages/specs.js +74 -11
  357. package/dist/packages/tarball.d.ts +24 -0
  358. package/dist/packages/tarball.js +79 -0
  359. package/dist/packages/types.d.ts +21 -20
  360. package/dist/packages/validation.js +0 -3
  361. package/dist/paths/_internal.d.ts +2 -1
  362. package/dist/paths/_internal.js +7 -19
  363. package/dist/paths/conversion.js +5 -9
  364. package/dist/paths/filenames.d.ts +0 -1
  365. package/dist/paths/filenames.js +0 -2
  366. package/dist/paths/normalize.js +6 -5
  367. package/dist/paths/packages.js +4 -7
  368. package/dist/paths/predicates.js +9 -16
  369. package/dist/paths/resolve.js +11 -14
  370. package/dist/paths/rewire.js +3 -3
  371. package/dist/paths/socket.js +16 -16
  372. package/dist/paths/walk.d.ts +1 -1
  373. package/dist/paths/walk.js +4 -4
  374. package/dist/perf/report.js +2 -2
  375. package/dist/perf/types.d.ts +1 -1
  376. package/dist/pkg-ext/data.js +1 -1
  377. package/dist/primordials/array.js +9 -9
  378. package/dist/primordials/date.js +2 -2
  379. package/dist/primordials/error.js +3 -3
  380. package/dist/primordials/headers.d.ts +10 -0
  381. package/dist/primordials/headers.js +23 -0
  382. package/dist/primordials/intl.d.ts +13 -0
  383. package/dist/primordials/intl.js +26 -0
  384. package/dist/primordials/math.js +33 -33
  385. package/dist/primordials/number.js +9 -9
  386. package/dist/primordials/object.js +5 -5
  387. package/dist/primordials/string.d.ts +2 -2
  388. package/dist/primordials/string.js +6 -6
  389. package/dist/primordials/symbol.js +3 -3
  390. package/dist/primordials/uncurry.js +9 -9
  391. package/dist/process/abort.js +3 -3
  392. package/dist/process/lock-manager.js +8 -8
  393. package/dist/process/spawn/_internal.js +6 -8
  394. package/dist/process/spawn/child.js +14 -14
  395. package/dist/process/spawn/errors.js +2 -4
  396. package/dist/process/spawn/kill-tree.d.ts +53 -0
  397. package/dist/process/spawn/kill-tree.js +85 -0
  398. package/dist/process/spawn/stdio.js +0 -1
  399. package/dist/process/spawn/types.d.ts +5 -5
  400. package/dist/process/transient.js +2 -2
  401. package/dist/promises/_internal.d.ts +2 -1
  402. package/dist/promises/_internal.js +2 -6
  403. package/dist/promises/iterate.js +12 -16
  404. package/dist/promises/options.js +3 -6
  405. package/dist/promises/retry.js +4 -5
  406. package/dist/promises/timers.d.ts +30 -0
  407. package/dist/promises/timers.js +48 -0
  408. package/dist/releases/github-archives.d.ts +6 -6
  409. package/dist/releases/github-archives.js +2 -2
  410. package/dist/releases/github-asset-url.d.ts +1 -1
  411. package/dist/releases/github-asset-url.js +5 -5
  412. package/dist/releases/github-downloads.d.ts +1 -1
  413. package/dist/releases/github-downloads.js +3 -3
  414. package/dist/releases/github-listing.d.ts +11 -2
  415. package/dist/releases/github-listing.js +20 -7
  416. package/dist/releases/github-retry-config.js +1 -1
  417. package/dist/releases/github-types.d.ts +6 -6
  418. package/dist/releases/socket-btm-binary-naming.d.ts +107 -0
  419. package/dist/releases/socket-btm-binary-naming.js +155 -0
  420. package/dist/releases/socket-btm.d.ts +8 -115
  421. package/dist/releases/socket-btm.js +16 -159
  422. package/dist/schema/types.d.ts +1 -1
  423. package/dist/sea/detect.js +6 -6
  424. package/dist/secrets/_internal.d.ts +2 -2
  425. package/dist/secrets/_internal.js +5 -4
  426. package/dist/secrets/compare.d.ts +45 -0
  427. package/dist/secrets/compare.js +61 -0
  428. package/dist/secrets/keychain.js +9 -6
  429. package/dist/secrets/linux.js +25 -23
  430. package/dist/secrets/macos.d.ts +1 -1
  431. package/dist/secrets/macos.js +18 -16
  432. package/dist/secrets/rc.d.ts +2 -2
  433. package/dist/secrets/rc.js +15 -10
  434. package/dist/secrets/socket-api-token.d.ts +4 -4
  435. package/dist/secrets/socket-api-token.js +18 -9
  436. package/dist/secrets/windows.js +21 -17
  437. package/dist/shadow/skip.js +2 -2
  438. package/dist/shell/parse.d.ts +108 -1
  439. package/dist/shell/parse.js +168 -2
  440. package/dist/smol/detect.js +9 -10
  441. package/dist/smol/http.js +6 -7
  442. package/dist/smol/https.js +6 -7
  443. package/dist/smol/manifest.d.ts +1 -1
  444. package/dist/smol/manifest.js +6 -7
  445. package/dist/smol/path.d.ts +1 -1
  446. package/dist/smol/path.js +7 -8
  447. package/dist/smol/primordial.d.ts +4 -0
  448. package/dist/smol/primordial.js +6 -7
  449. package/dist/smol/purl.d.ts +1 -1
  450. package/dist/smol/purl.js +7 -8
  451. package/dist/smol/versions.js +6 -7
  452. package/dist/smol/vfs.js +6 -7
  453. package/dist/sorts/_internal.js +6 -8
  454. package/dist/sorts/natural.js +10 -12
  455. package/dist/sorts/semver.js +1 -2
  456. package/dist/sorts/strings.js +0 -1
  457. package/dist/sorts/types.d.ts +1 -1
  458. package/dist/spinner/create-spinner-class.d.ts +38 -0
  459. package/dist/spinner/create-spinner-class.js +302 -0
  460. package/dist/spinner/default.js +8 -9
  461. package/dist/spinner/spinner-internals.d.ts +36 -0
  462. package/dist/spinner/spinner-internals.js +101 -0
  463. package/dist/spinner/spinner-shimmer-methods.d.ts +54 -0
  464. package/dist/spinner/spinner-shimmer-methods.js +143 -0
  465. package/dist/spinner/spinner-status-methods.d.ts +40 -0
  466. package/dist/spinner/spinner-status-methods.js +133 -0
  467. package/dist/spinner/spinner.d.ts +4 -5
  468. package/dist/spinner/spinner.js +18 -705
  469. package/dist/spinner/types.d.ts +3 -1
  470. package/dist/spinner/with.d.ts +10 -0
  471. package/dist/spinner/with.js +16 -2
  472. package/dist/stdio/divider.js +1 -1
  473. package/dist/stdio/footer.js +3 -3
  474. package/dist/stdio/header.js +4 -4
  475. package/dist/stdio/progress.js +5 -5
  476. package/dist/stdio/prompts.d.ts +5 -3
  477. package/dist/stdio/prompts.js +6 -7
  478. package/dist/stdio/stdout.js +3 -3
  479. package/dist/streams/parallel.js +3 -5
  480. package/dist/streams/transform.js +2 -3
  481. package/dist/strings/format.js +2 -6
  482. package/dist/strings/predicates.js +0 -2
  483. package/dist/strings/search.js +1 -2
  484. package/dist/strings/transform.js +0 -3
  485. package/dist/strings/width.js +9 -10
  486. package/dist/tables/bordered.js +4 -3
  487. package/dist/tables/padding.js +1 -1
  488. package/dist/tables/simple.js +8 -5
  489. package/dist/temporal/instant.js +4 -2
  490. package/dist/temporal/slots.js +7 -6
  491. package/dist/temporal/system.js +9 -9
  492. package/dist/themes/context.d.ts +3 -2
  493. package/dist/themes/context.js +4 -5
  494. package/dist/themes/themes.js +15 -15
  495. package/dist/themes/types.d.ts +3 -3
  496. package/dist/url/parse.js +0 -2
  497. package/dist/url/predicates.js +1 -2
  498. package/dist/url/search-params.js +3 -9
  499. package/dist/url/types.d.ts +5 -5
  500. package/dist/versions/_internal.js +3 -3
  501. package/dist/words/article.js +0 -1
  502. package/dist/words/capitalize.js +0 -1
  503. package/dist/words/pluralize.d.ts +24 -2
  504. package/dist/words/pluralize.js +47 -2
  505. package/dist/words/types.d.ts +25 -2
  506. package/package.json +289 -108
  507. package/dist/external-tools/uv/asset-names.d.ts +0 -36
  508. package/dist/external-tools/uv/asset-names.js +0 -70
  509. package/dist/external-tools/uv/from-download.d.ts +0 -17
  510. package/dist/external-tools/uv/from-download.js +0 -47
  511. package/dist/external-tools/uv/from-path.d.ts +0 -5
  512. package/dist/external-tools/uv/from-path.js +0 -22
  513. package/dist/external-tools/uv/from-vfs.d.ts +0 -7
  514. package/dist/external-tools/uv/from-vfs.js +0 -26
  515. package/dist/external-tools/uv/resolve.d.ts +0 -25
  516. package/dist/external-tools/uv/resolve.js +0 -52
  517. package/dist/external-tools/uv/types.d.ts +0 -24
  518. package/dist/http-request/checksums.d.ts +0 -69
  519. package/dist/http-request/checksums.js +0 -108
  520. package/dist/http-request/http-request.d.ts +0 -12
  521. package/dist/http-request/http-request.js +0 -11
  522. package/dist/packages/operations.d.ts +0 -113
  523. package/dist/packages/operations.js +0 -304
  524. package/dist/ssri/convert.d.ts +0 -48
  525. package/dist/ssri/convert.js +0 -69
  526. package/dist/ssri/parse.d.ts +0 -27
  527. package/dist/ssri/parse.js +0 -41
  528. package/dist/ssri/validate.d.ts +0 -41
  529. package/dist/ssri/validate.js +0 -56
  530. /package/dist/{bin → cli}/check.d.ts +0 -0
  531. /package/dist/external-tools/{uv → python}/types.js +0 -0
  532. /package/dist/fs/{path-cache.d.ts → allowed-dirs-cache.d.ts} +0 -0
  533. /package/dist/fs/{find-up.d.ts → find.d.ts} +0 -0
  534. /package/dist/github/{fetch.d.ts → request.d.ts} +0 -0
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_promise = require('../primordials/promise.js');
4
5
  const require_promises_options = require('./options.js');
5
6
  const require_promises_retry = require('./retry.js');
6
- const require_primordials_promise = require('../primordials/promise.js');
7
7
  const require_arrays_chunk = require('../arrays/chunk.js');
8
8
 
9
9
  //#region src/promises/iterate.ts
@@ -67,13 +67,12 @@ const require_arrays_chunk = require('../arrays/chunk.js');
67
67
  *
68
68
  * @returns Promise that resolves when all items are processed
69
69
  */
70
- /* @__NO_SIDE_EFFECTS__ */
71
70
  async function pEach(array, callbackFn, options) {
72
- const { concurrency, retries, signal } = /* @__PURE__ */ require_promises_options.normalizeIterationOptions(options);
73
- const chunks = /* @__PURE__ */ require_arrays_chunk.arrayChunk(array, concurrency);
71
+ const { concurrency, retries, signal } = require_promises_options.normalizeIterationOptions(options);
72
+ const chunks = require_arrays_chunk.arrayChunk(array, concurrency);
74
73
  for (const chunk of chunks) {
75
74
  if (signal?.aborted) return;
76
- await require_primordials_promise.PromiseAllSettled(chunk.map((item) => /* @__PURE__ */ require_promises_retry.pRetry((...args) => callbackFn(args[0]), {
75
+ await require_primordials_promise.PromiseAllSettled(chunk.map((item) => require_promises_retry.pRetry((...args) => callbackFn(args[0]), {
77
76
  ...retries,
78
77
  args: [item],
79
78
  signal
@@ -133,15 +132,14 @@ async function pEach(array, callbackFn, options) {
133
132
  *
134
133
  * @returns Promise that resolves when all chunks are processed
135
134
  */
136
- /* @__NO_SIDE_EFFECTS__ */
137
135
  async function pEachChunk(array, callbackFn, options) {
138
136
  const { chunkSize = 100, ...retryOpts } = options || {};
139
- const chunks = /* @__PURE__ */ require_arrays_chunk.arrayChunk(array, chunkSize);
140
- const normalizedRetryOpts = /* @__PURE__ */ require_promises_options.normalizeRetryOptions(retryOpts);
137
+ const chunks = require_arrays_chunk.arrayChunk(array, chunkSize);
138
+ const normalizedRetryOpts = require_promises_options.normalizeRetryOptions(retryOpts);
141
139
  const { signal } = normalizedRetryOpts;
142
140
  for (const chunk of chunks) {
143
141
  if (signal?.aborted) return;
144
- await /* @__PURE__ */ require_promises_retry.pRetry((...args) => callbackFn(args[0]), {
142
+ await require_promises_retry.pRetry((...args) => callbackFn(args[0]), {
145
143
  ...normalizedRetryOpts,
146
144
  args: [chunk]
147
145
  });
@@ -194,10 +192,9 @@ async function pEachChunk(array, callbackFn, options) {
194
192
  *
195
193
  * @returns Promise resolving to filtered array
196
194
  */
197
- /* @__NO_SIDE_EFFECTS__ */
198
195
  async function pFilter(array, callbackFn, options) {
199
- const iterOpts = /* @__PURE__ */ require_promises_options.normalizeIterationOptions(options);
200
- return (await /* @__PURE__ */ pFilterChunk(/* @__PURE__ */ require_arrays_chunk.arrayChunk(array, iterOpts.concurrency), callbackFn, iterOpts.retries)).flat();
196
+ const iterOpts = require_promises_options.normalizeIterationOptions(options);
197
+ return (await pFilterChunk(require_arrays_chunk.arrayChunk(array, iterOpts.concurrency), callbackFn, iterOpts.retries)).flat();
201
198
  }
202
199
  /**
203
200
  * Filter chunked arrays with an async predicate.
@@ -222,20 +219,19 @@ async function pFilter(array, callbackFn, options) {
222
219
  *
223
220
  * @returns Promise resolving to array of filtered chunks
224
221
  */
225
- /* @__NO_SIDE_EFFECTS__ */
226
222
  async function pFilterChunk(chunks, callbackFn, options) {
227
- const retryOpts = /* @__PURE__ */ require_promises_options.normalizeRetryOptions(options);
223
+ const retryOpts = require_promises_options.normalizeRetryOptions(options);
228
224
  const { signal } = retryOpts;
229
225
  const { length } = chunks;
230
226
  const filteredChunks = Array(length);
231
227
  for (let i = 0; i < length; i += 1) if (signal?.aborted) filteredChunks[i] = [];
232
228
  else {
233
229
  const chunk = chunks[i];
234
- const predicateResults = (await require_primordials_promise.PromiseAllSettled(chunk.map((value) => /* @__PURE__ */ require_promises_retry.pRetry((...args) => callbackFn(args[0]), {
230
+ const predicateResults = (await require_primordials_promise.PromiseAllSettled(chunk.map((value) => require_promises_retry.pRetry((...args) => callbackFn(args[0]), {
235
231
  ...retryOpts,
236
232
  args: [value]
237
233
  })))).map((r) => r.status === "fulfilled" ? r.value : false);
238
- filteredChunks[i] = chunk.filter((_v, i) => predicateResults[i]);
234
+ filteredChunks[i] = chunk.filter((_value, index) => predicateResults[index]);
239
235
  }
240
236
  return filteredChunks;
241
237
  }
@@ -33,7 +33,6 @@ const require_promises__internal = require('./_internal.js');
33
33
  *
34
34
  * @returns Normalized options with concurrency, retries, and signal
35
35
  */
36
- /* @__NO_SIDE_EFFECTS__ */
37
36
  function normalizeIterationOptions(options) {
38
37
  const { concurrency = 1, retries, signal = require_promises__internal.abortSignal } = {
39
38
  __proto__: null,
@@ -42,9 +41,9 @@ function normalizeIterationOptions(options) {
42
41
  return {
43
42
  __proto__: null,
44
43
  concurrency: require_primordials_math.MathMax(1, concurrency),
45
- retries: /* @__PURE__ */ normalizeRetryOptions({
44
+ retries: normalizeRetryOptions({
46
45
  signal,
47
- .../* @__PURE__ */ resolveRetryOptions(retries)
46
+ ...resolveRetryOptions(retries)
48
47
  }),
49
48
  signal
50
49
  };
@@ -70,9 +69,8 @@ function normalizeIterationOptions(options) {
70
69
  *
71
70
  * @returns Normalized retry options with all properties set
72
71
  */
73
- /* @__NO_SIDE_EFFECTS__ */
74
72
  function normalizeRetryOptions(options) {
75
- const { args = [], backoffFactor = 2, baseDelayMs = 200, jitter = true, maxDelayMs = 1e4, onRetry, onRetryCancelOnFalse = false, onRetryRethrow = false, retries = 0, signal = require_promises__internal.abortSignal } = /* @__PURE__ */ resolveRetryOptions(options);
73
+ const { args = [], backoffFactor = 2, baseDelayMs = 200, jitter = true, maxDelayMs = 1e4, onRetry, onRetryCancelOnFalse = false, onRetryRethrow = false, retries = 0, signal = require_promises__internal.abortSignal } = resolveRetryOptions(options);
76
74
  return {
77
75
  args,
78
76
  backoffFactor,
@@ -105,7 +103,6 @@ function normalizeRetryOptions(options) {
105
103
  *
106
104
  * @returns Resolved retry options with defaults for basic properties
107
105
  */
108
- /* @__NO_SIDE_EFFECTS__ */
109
106
  function resolveRetryOptions(options) {
110
107
  const defaults = {
111
108
  __proto__: null,
@@ -110,12 +110,11 @@ const require_promises_options = require('./options.js');
110
110
  *
111
111
  * @throws {Error} The last error if all retry attempts fail
112
112
  */
113
- /* @__NO_SIDE_EFFECTS__ */
114
113
  async function pRetry(callbackFn, options) {
115
- const { args, backoffFactor, baseDelayMs, jitter, maxDelayMs, onRetry, onRetryCancelOnFalse, onRetryRethrow, retries, signal } = /* @__PURE__ */ require_promises_options.normalizeRetryOptions(options);
114
+ const { args, backoffFactor, baseDelayMs, jitter, maxDelayMs, onRetry, onRetryCancelOnFalse, onRetryRethrow, retries, signal } = require_promises_options.normalizeRetryOptions(options);
116
115
  if (signal?.aborted) return;
117
116
  if (retries === 0) return await callbackFn(...args || [], { signal });
118
- const timers = /* @__PURE__ */ require_promises__internal.getTimers();
117
+ const timers = require_promises__internal.getTimers();
119
118
  let attempts = retries;
120
119
  let delay = baseDelayMs;
121
120
  let error = void 0;
@@ -136,8 +135,8 @@ async function pRetry(callbackFn, options) {
136
135
  const result = onRetry(retries - attempts, e, waitTime);
137
136
  if (result === false && onRetryCancelOnFalse) break;
138
137
  if (typeof result === "number" && result >= 0) waitTime = require_primordials_math.MathMin(result, maxDelayMs);
139
- } catch (e) {
140
- if (onRetryRethrow) throw e;
138
+ } catch (onRetryError) {
139
+ if (onRetryRethrow) throw onRetryError;
141
140
  }
142
141
  /* c8 ignore stop */
143
142
  try {
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @file Browser-compatible promise-based timer helpers. Uses
3
+ * `globalThis.setTimeout` / `globalThis.queueMicrotask` directly so every
4
+ * export works in browsers, Node.js, Deno, Bun, and Web Workers without
5
+ * importing `node:timers/promises`. In Node.js test environments with
6
+ * `vi.useFakeTimers()` / `clock.install()`, vitest/sinon replace
7
+ * `globalThis.setTimeout` before this module loads, so fake timers advance
8
+ * `sleep()` correctly — no special wiring needed. For Node-only
9
+ * abort-signal-aware delays see `promises/_internal.ts`.
10
+ */
11
+ /**
12
+ * Pause for `ms` milliseconds. Resolves with `undefined` when the timer fires.
13
+ * Negative values are clamped to 0.
14
+ *
15
+ * @example
16
+ * await sleep(100)
17
+ */
18
+ export declare function sleep(ms: number): Promise<void>;
19
+ /**
20
+ * Yield to the event loop once. Resolves after the current call stack and any
21
+ * already-queued microtasks have completed — equivalent to `setTimeout(fn, 0)`
22
+ * as described in
23
+ * https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout#late_timeouts.
24
+ * Useful for flushing microtask queues in tests or giving the browser a repaint
25
+ * opportunity between heavy operations.
26
+ *
27
+ * @example
28
+ * await yieldToEventLoop()
29
+ */
30
+ export declare function yieldToEventLoop(): Promise<void>;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_promise = require('../primordials/promise.js');
5
+
6
+ //#region src/promises/timers.ts
7
+ /**
8
+ * @file Browser-compatible promise-based timer helpers. Uses
9
+ * `globalThis.setTimeout` / `globalThis.queueMicrotask` directly so every
10
+ * export works in browsers, Node.js, Deno, Bun, and Web Workers without
11
+ * importing `node:timers/promises`. In Node.js test environments with
12
+ * `vi.useFakeTimers()` / `clock.install()`, vitest/sinon replace
13
+ * `globalThis.setTimeout` before this module loads, so fake timers advance
14
+ * `sleep()` correctly — no special wiring needed. For Node-only
15
+ * abort-signal-aware delays see `promises/_internal.ts`.
16
+ */
17
+ /**
18
+ * Pause for `ms` milliseconds. Resolves with `undefined` when the timer fires.
19
+ * Negative values are clamped to 0.
20
+ *
21
+ * @example
22
+ * await sleep(100)
23
+ */
24
+ function sleep(ms) {
25
+ return new require_primordials_promise.PromiseCtor((resolve) => {
26
+ setTimeout(resolve, ms > 0 ? ms : 0);
27
+ });
28
+ }
29
+ /**
30
+ * Yield to the event loop once. Resolves after the current call stack and any
31
+ * already-queued microtasks have completed — equivalent to `setTimeout(fn, 0)`
32
+ * as described in
33
+ * https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout#late_timeouts.
34
+ * Useful for flushing microtask queues in tests or giving the browser a repaint
35
+ * opportunity between heavy operations.
36
+ *
37
+ * @example
38
+ * await yieldToEventLoop()
39
+ */
40
+ function yieldToEventLoop() {
41
+ return new require_primordials_promise.PromiseCtor((resolve) => {
42
+ setTimeout(resolve, 0);
43
+ });
44
+ }
45
+
46
+ //#endregion
47
+ exports.sleep = sleep;
48
+ exports.yieldToEventLoop = yieldToEventLoop;
@@ -34,10 +34,10 @@ import type { AssetPattern, RepoConfig } from './github-types';
34
34
  * @returns Path to the extraction directory
35
35
  */
36
36
  export declare function downloadAndExtractArchive(tag: string, assetPattern: string | AssetPattern, outputDir: string, repoConfig: RepoConfig, options?: {
37
- cleanup?: boolean;
38
- format?: ArchiveFormat;
39
- quiet?: boolean;
40
- strip?: number;
37
+ cleanup?: boolean | undefined;
38
+ format?: ArchiveFormat | undefined;
39
+ quiet?: boolean | undefined;
40
+ strip?: number | undefined;
41
41
  }): Promise<string>;
42
42
  /**
43
43
  * Download and extract a zip file from a GitHub release. Automatically handles
@@ -66,6 +66,6 @@ export declare function downloadAndExtractArchive(tag: string, assetPattern: str
66
66
  * @returns Path to the extraction directory
67
67
  */
68
68
  export declare function downloadAndExtractZip(tag: string, assetPattern: string | AssetPattern, outputDir: string, repoConfig: RepoConfig, options?: {
69
- cleanup?: boolean;
70
- quiet?: boolean;
69
+ cleanup?: boolean | undefined;
70
+ quiet?: boolean | undefined;
71
71
  }): Promise<string>;
@@ -46,7 +46,7 @@ const logger = require_logger_default.getDefaultLogger();
46
46
  */
47
47
  async function downloadAndExtractArchive(tag, assetPattern, outputDir, repoConfig, options = { __proto__: null }) {
48
48
  const { cleanup = true, format, quiet = false, strip } = options;
49
- const path = /* @__PURE__ */ require_node_path.getNodePath();
49
+ const path = require_node_path.getNodePath();
50
50
  await require_fs_safe.safeMkdir(outputDir);
51
51
  let ext = ".archive";
52
52
  if (format) ext = format === "tar.gz" ? ".tar.gz" : `.${format}`;
@@ -104,7 +104,7 @@ async function downloadAndExtractArchive(tag, assetPattern, outputDir, repoConfi
104
104
  */
105
105
  async function downloadAndExtractZip(tag, assetPattern, outputDir, repoConfig, options = { __proto__: null }) {
106
106
  const { cleanup = true, quiet = false } = options;
107
- const path = /* @__PURE__ */ require_node_path.getNodePath();
107
+ const path = require_node_path.getNodePath();
108
108
  await require_fs_safe.safeMkdir(outputDir);
109
109
  const zipPath = path.join(outputDir, "__temp_download__.zip");
110
110
  if (!quiet) logger.info(`Downloading zip asset from release ${tag}...`);
@@ -68,5 +68,5 @@ export declare function fetchReleaseAssetsViaGraphQL(owner: string, repo: string
68
68
  * false.
69
69
  */
70
70
  export declare function getReleaseAssetUrl(tag: string, assetPattern: string | AssetPattern, repoConfig: RepoConfig, options?: {
71
- nothrow?: boolean;
71
+ nothrow?: boolean | undefined;
72
72
  }): Promise<string | undefined>;
@@ -123,10 +123,10 @@ async function getReleaseAssetUrl(tag, assetPattern, repoConfig, options = {}) {
123
123
  /* c8 ignore start */
124
124
  const isMatch = typeof assetPattern === "string" && !assetPattern.includes("*") && !assetPattern.includes("{") ? (input) => input === assetPattern : require_releases_github_assets.createAssetMatcher(assetPattern);
125
125
  /* c8 ignore stop */
126
- const assets = await /* @__PURE__ */ require_promises_retry.pRetry(async () => {
126
+ const assets = await require_promises_retry.pRetry(async () => {
127
127
  const response = await require_http_request_request.httpRequest(`https://api.github.com/repos/${owner}/${repo}/releases/tags/${tag}`, { headers: require_releases_github_auth.getAuthHeaders() });
128
128
  if (!response.ok) throw new require_primordials_error.ErrorCtor(`Failed to fetch ${owner}/${repo} release ${tag}: ${response.status}`);
129
- let assets;
129
+ let resolvedAssets;
130
130
  if (response.body.byteLength === 0) {
131
131
  let fallbackAssets;
132
132
  try {
@@ -142,7 +142,7 @@ async function getReleaseAssetUrl(tag, assetPattern, repoConfig, options = {}) {
142
142
  if (nothrow) return;
143
143
  throw new require_primordials_error.ErrorCtor(`Release ${tag} not found in ${owner}/${repo}`);
144
144
  }
145
- assets = fallbackAssets;
145
+ resolvedAssets = fallbackAssets;
146
146
  } else {
147
147
  let release;
148
148
  try {
@@ -151,9 +151,9 @@ async function getReleaseAssetUrl(tag, assetPattern, repoConfig, options = {}) {
151
151
  throw new require_primordials_error.ErrorCtor(`Failed to parse ${owner}/${repo} release ${tag} response`, { cause });
152
152
  }
153
153
  if (!require_primordials_array.ArrayIsArray(release.assets)) throw new require_primordials_error.ErrorCtor(`Release ${tag} has no assets in ${owner}/${repo}`);
154
- assets = release.assets;
154
+ resolvedAssets = release.assets;
155
155
  }
156
- return assets;
156
+ return resolvedAssets;
157
157
  }, require_releases_github_retry_config.GITHUB_RETRY_CONFIG);
158
158
  if (!assets) {
159
159
  if (nothrow) return;
@@ -43,5 +43,5 @@ export declare function downloadGitHubRelease(config: DownloadGitHubReleaseConfi
43
43
  * @param options - Additional options.
44
44
  */
45
45
  export declare function downloadReleaseAsset(tag: string, assetPattern: string | AssetPattern, outputPath: string, repoConfig: RepoConfig, options?: {
46
- quiet?: boolean;
46
+ quiet?: boolean | undefined;
47
47
  }): Promise<void>;
@@ -52,11 +52,11 @@ async function downloadGitHubRelease(config) {
52
52
  if (!latestTag) throw new require_primordials_error.ErrorCtor(`No ${toolPrefix} release found in ${owner}/${repo}`);
53
53
  tag = latestTag;
54
54
  } else throw new require_primordials_error.ErrorCtor("Either toolPrefix or tag must be provided");
55
- const path = /* @__PURE__ */ require_node_path.getNodePath();
55
+ const path = require_node_path.getNodePath();
56
56
  const binaryDir = path.isAbsolute(downloadDir) ? downloadDir : path.join(cwd, downloadDir);
57
57
  const binaryPath = path.join(binaryDir, binaryName);
58
58
  const versionPath = path.join(binaryDir, ".version");
59
- const fs = /* @__PURE__ */ require_node_fs.getNodeFs();
59
+ const fs = require_node_fs.getNodeFs();
60
60
  if (fs.existsSync(versionPath) && fs.existsSync(binaryPath)) {
61
61
  if ((await fs.promises.readFile(versionPath, "utf8")).trim() === tag && fs.existsSync(binaryPath)) {
62
62
  if (!quiet) logger.info(`Using cached ${toolName} (${platformArch}): ${binaryPath}`);
@@ -109,7 +109,7 @@ async function downloadReleaseAsset(tag, assetPattern, outputPath, repoConfig, o
109
109
  repo
110
110
  });
111
111
  if (!downloadUrl) throw new require_primordials_error.ErrorCtor(`Asset ${typeof assetPattern === "string" ? assetPattern : "matching pattern"} not found in release ${tag}`);
112
- await require_fs_safe.safeMkdir((/* @__PURE__ */ require_node_path.getNodePath()).dirname(outputPath));
112
+ await require_fs_safe.safeMkdir(require_node_path.getNodePath().dirname(outputPath));
113
113
  await require_http_request_download.httpDownload(downloadUrl, outputPath, {
114
114
  logger: quiet ? void 0 : logger,
115
115
  progressInterval: 10,
@@ -99,7 +99,16 @@ export declare function fetchReleasesViaRest(owner: string, repo: string): Promi
99
99
  * false.
100
100
  */
101
101
  export declare function getLatestRelease(toolPrefix: string, repoConfig: RepoConfig, options?: {
102
- assetPattern?: AssetPattern;
103
- nothrow?: boolean;
102
+ assetPattern?: AssetPattern | undefined;
103
+ nothrow?: boolean | undefined;
104
104
  }): Promise<string | undefined>;
105
+ /**
106
+ * Normalize an `httpRequest` response body to a parsed value. `body` may be a
107
+ * Buffer / string (older paths) OR — depending on the response's content-type
108
+ * handling — an already-parsed object/array. Calling `body.toString('utf8')` +
109
+ * JSON.parse on an already-parsed object yields `"[object Object]"` and throws
110
+ * (the "Failed to parse … releases response" build failure). Pass through
111
+ * non-string/Buffer bodies; parse the rest. Throws on genuine parse failure.
112
+ */
113
+ export declare function parseResponseBody(body: unknown): unknown;
105
114
  export {};
@@ -75,7 +75,7 @@ async function fetchReleasesViaGraphQL(owner, repo) {
75
75
  if (!response.ok) throw new require_primordials_error.ErrorCtor(`Failed to fetch ${owner}/${repo} releases (GraphQL): ${response.status}`);
76
76
  let parsed;
77
77
  try {
78
- parsed = require_primordials_json.JSONParse(response.body.toString("utf8"));
78
+ parsed = parseResponseBody(response.body);
79
79
  } catch (cause) {
80
80
  throw new require_primordials_error.ErrorCtor(`Failed to parse GitHub GraphQL response for ${owner}/${repo} releases`, { cause });
81
81
  }
@@ -115,15 +115,15 @@ async function fetchReleasesViaGraphQL(owner, repo) {
115
115
  async function fetchReleasesViaRest(owner, repo) {
116
116
  const response = await require_http_request_request.httpRequest(`https://api.github.com/repos/${owner}/${repo}/releases?per_page=100`, { headers: require_releases_github_auth.getAuthHeaders() });
117
117
  if (!response.ok) throw new require_primordials_error.ErrorCtor(`Failed to fetch ${owner}/${repo} releases: ${response.status}`);
118
- const text = response.body.toString("utf8");
119
- if (text.length === 0) return [];
118
+ const body = response.body;
119
+ if (Buffer.isBuffer(body) && body.length === 0 || typeof body === "string" && body.length === 0) return [];
120
120
  let parsed;
121
121
  try {
122
- parsed = require_primordials_json.JSONParse(text);
122
+ parsed = parseResponseBody(body);
123
123
  } catch (cause) {
124
124
  throw new require_primordials_error.ErrorCtor(`Failed to parse ${owner}/${repo} releases response`, { cause });
125
125
  }
126
- /* c8 ignore start */
126
+ /* c8 ignore start - non-array fallback only reachable via the GraphQL path's shape, not REST */
127
127
  return require_primordials_array.ArrayIsArray(parsed) ? parsed : [];
128
128
  /* c8 ignore stop */
129
129
  }
@@ -157,7 +157,7 @@ async function getLatestRelease(toolPrefix, repoConfig, options = {}) {
157
157
  const { assetPattern, nothrow = false } = options;
158
158
  const { owner, repo } = repoConfig;
159
159
  const isMatch = assetPattern ? require_releases_github_assets.createAssetMatcher(assetPattern) : void 0;
160
- return await /* @__PURE__ */ require_promises_retry.pRetry(async () => {
160
+ return await require_promises_retry.pRetry(async () => {
161
161
  let releases = await fetchReleasesViaRest(owner, repo);
162
162
  if (releases.length === 0) {
163
163
  let graphqlReleases;
@@ -185,8 +185,21 @@ async function getLatestRelease(toolPrefix, repoConfig, options = {}) {
185
185
  return matchingReleases[0].tag_name;
186
186
  }, require_releases_github_retry_config.GITHUB_RETRY_CONFIG) ?? void 0;
187
187
  }
188
+ /**
189
+ * Normalize an `httpRequest` response body to a parsed value. `body` may be a
190
+ * Buffer / string (older paths) OR — depending on the response's content-type
191
+ * handling — an already-parsed object/array. Calling `body.toString('utf8')` +
192
+ * JSON.parse on an already-parsed object yields `"[object Object]"` and throws
193
+ * (the "Failed to parse … releases response" build failure). Pass through
194
+ * non-string/Buffer bodies; parse the rest. Throws on genuine parse failure.
195
+ */
196
+ function parseResponseBody(body) {
197
+ if (body !== null && typeof body === "object" && !Buffer.isBuffer(body)) return body;
198
+ return require_primordials_json.JSONParse(Buffer.isBuffer(body) ? body.toString("utf8") : typeof body === "string" ? body : String(body));
199
+ }
188
200
 
189
201
  //#endregion
190
202
  exports.fetchReleasesViaGraphQL = fetchReleasesViaGraphQL;
191
203
  exports.fetchReleasesViaRest = fetchReleasesViaRest;
192
- exports.getLatestRelease = getLatestRelease;
204
+ exports.getLatestRelease = getLatestRelease;
205
+ exports.parseResponseBody = parseResponseBody;
@@ -31,7 +31,7 @@ const DEFAULT_BASE_DELAY_MS = 5e3;
31
31
  * @returns The configured base delay in milliseconds.
32
32
  */
33
33
  function resolveBaseDelayMs() {
34
- return /* @__PURE__ */ require_env_number.envAsNumber(require_env_rewire.getEnvValue("SOCKET_GITHUB_RETRY_BASE_DELAY_MS"), DEFAULT_BASE_DELAY_MS);
34
+ return require_env_number.envAsNumber(require_env_rewire.getEnvValue("SOCKET_GITHUB_RETRY_BASE_DELAY_MS"), DEFAULT_BASE_DELAY_MS);
35
35
  }
36
36
  const GITHUB_RETRY_CONFIG = require_primordials_object.ObjectFreeze({
37
37
  __proto__: null,
@@ -39,11 +39,11 @@ export interface DownloadGitHubReleaseConfig {
39
39
  /**
40
40
  * Working directory (defaults to process.cwd()).
41
41
  */
42
- cwd?: string;
42
+ cwd?: string | undefined;
43
43
  /**
44
44
  * Download destination directory. @default 'build/downloaded'
45
45
  */
46
- downloadDir?: string;
46
+ downloadDir?: string | undefined;
47
47
  /**
48
48
  * GitHub repository owner/organization.
49
49
  */
@@ -55,11 +55,11 @@ export interface DownloadGitHubReleaseConfig {
55
55
  /**
56
56
  * Suppress log messages. @default false.
57
57
  */
58
- quiet?: boolean;
58
+ quiet?: boolean | undefined;
59
59
  /**
60
60
  * Remove macOS quarantine attribute after download. @default true.
61
61
  */
62
- removeMacOSQuarantine?: boolean;
62
+ removeMacOSQuarantine?: boolean | undefined;
63
63
  /**
64
64
  * GitHub repository name.
65
65
  */
@@ -67,7 +67,7 @@ export interface DownloadGitHubReleaseConfig {
67
67
  /**
68
68
  * Specific release tag to download.
69
69
  */
70
- tag?: string;
70
+ tag?: string | undefined;
71
71
  /**
72
72
  * Tool name for directory structure.
73
73
  */
@@ -75,7 +75,7 @@ export interface DownloadGitHubReleaseConfig {
75
75
  /**
76
76
  * Tool prefix for finding latest release.
77
77
  */
78
- toolPrefix?: string;
78
+ toolPrefix?: string | undefined;
79
79
  }
80
80
  /**
81
81
  * Configuration for repository access.
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @file Socket-btm binary asset/platform-arch naming helpers.
3
+ */
4
+ import type { Arch, Libc, Platform } from '../constants/platform';
5
+ /**
6
+ * Get asset name for a socket-btm binary.
7
+ *
8
+ * @example
9
+ * ;```typescript
10
+ * getBinaryAssetName('lief', 'linux', 'x64', 'musl')
11
+ * // 'lief-linux-x64-musl'
12
+ * ```
13
+ *
14
+ * @param binaryBaseName - Binary basename (e.g., 'binject', 'node')
15
+ * @param platform - Target platform.
16
+ * @param arch - Target architecture.
17
+ * @param libc - Linux libc variant (optional)
18
+ *
19
+ * @returns Asset name (e.g., 'binject-darwin-arm64', 'node-linux-x64-musl')
20
+ */
21
+ export declare function getBinaryAssetName(binaryBaseName: string, platform: Platform, arch: Arch, libc?: Libc | undefined): string;
22
+ /**
23
+ * Get binary filename for output.
24
+ *
25
+ * @example
26
+ * ;```typescript
27
+ * getBinaryName('node', 'win32') // 'node.exe'
28
+ * getBinaryName('node', 'linux') // 'node'
29
+ * ```
30
+ *
31
+ * @param binaryBaseName - Binary basename (e.g., 'node', 'binject')
32
+ * @param platform - Target platform.
33
+ *
34
+ * @returns Binary filename (e.g., 'node', 'node.exe')
35
+ */
36
+ export declare function getBinaryName(binaryBaseName: string, platform: Platform): string;
37
+ /**
38
+ * Get platform-arch identifier for directory structure and asset names.
39
+ *
40
+ * # Format: `<os>-<arch>[-<libc>]`
41
+ *
42
+ * The OS segment is `process.platform` verbatim: `darwin` / `linux` / `win32`.
43
+ * The arch segment is `process.arch` verbatim: `x64` / `arm64`. The optional
44
+ * libc suffix is `-musl` (Linux only; the glibc default is unsuffixed to match
45
+ * Node.js's own linuxstatic convention).
46
+ *
47
+ * # Why these specific conventions
48
+ *
49
+ * ## Why `win32`, not `win`
50
+ *
51
+ * `win32` is what `process.platform` returns on every Windows host. Every npm
52
+ * package whose install-time platform filter uses the standard `os` / `cpu` /
53
+ * `libc` manifest fields must match `process.platform` strings exactly (npm
54
+ * compares them verbatim — there's no shorthand layer). Using `win` internally
55
+ * here would have forced a translation every time we constructed an install
56
+ * filter or a target triple, and reviewers would have to remember "we
57
+ * abbreviate on disk but not in package filters." Since the two now match,
58
+ * there's no translation step to get wrong.
59
+ *
60
+ * Pnpm's pack-app (v11+) accepts `<os>-<arch>[-<libc>]` target strings and its
61
+ * shards are `@pnpm/exe.<os>-<arch>` (with `win32`, not `win` — see
62
+ * pnpm#11314). Our naming matches so asset names we emit can flow directly into
63
+ * pack-app's `--target` arg, `pnpm.app.targets` config, and
64
+ * sibling-package-name construction without a translation map.
65
+ *
66
+ * ## Why `-musl` is the suffix (and glibc is unsuffixed)
67
+ *
68
+ * Node.js's own linuxstatic tarballs historically used the unqualified `linux`
69
+ * for glibc and a separate download channel for musl. The pnpm ecosystem
70
+ * codified that as `linux-<arch>` (glibc, default) and `linux-<arch>-musl` (the
71
+ * libc outlier), matching the asymmetric reality of Linux distros — glibc is
72
+ * the majority case, musl is Alpine-and-similar. Adding `-glibc` for the
73
+ * default would be redundant noise in the name.
74
+ *
75
+ * ## Why libc is only appended for Linux
76
+ *
77
+ * MacOS and Windows have exactly one system libc each (Apple libSystem,
78
+ * Microsoft UCRT). A hypothetical `darwin-arm64-libsystem` conveys no
79
+ * information. Node.js, npm, and pnpm all treat libc as a Linux-only axis; we
80
+ * follow the same convention so callers don't have to special- case
81
+ * `'darwin-arm64'.startsWith('darwin-arm64')` style matches.
82
+ *
83
+ * ## Why this function exists at all (vs. inlining)
84
+ *
85
+ * Two upstream APIs that socket-btm consumers end up calling — the npm manifest
86
+ * filter (`os`/`cpu`/`libc`) and pnpm's pack-app `--target` — both need the
87
+ * exact same triple format. Centralizing the construction here means a future
88
+ * schema change (e.g. Node introducing `riscv64`) gets one edit, and the error
89
+ * message for an unsupported platform is uniform across downloaders, pack-app
90
+ * invocations, and the `@socketbin/*` resolver logic.
91
+ *
92
+ * @example
93
+ * ;```typescript
94
+ * getPlatformArch('linux', 'x64', 'musl') // 'linux-x64-musl'
95
+ * getPlatformArch('darwin', 'arm64') // 'darwin-arm64'
96
+ * getPlatformArch('win32', 'x64') // 'win32-x64'
97
+ * getPlatformArch('darwin', 'x64', 'musl') // 'darwin-x64' — libc ignored
98
+ * ```
99
+ *
100
+ * @param platform - Target platform.
101
+ * @param arch - Target architecture.
102
+ * @param libc - Linux libc variant (optional; non-linux platforms ignore)
103
+ *
104
+ * @returns Platform-arch identifier (e.g., 'darwin-arm64', 'linux-x64-musl',
105
+ * 'win32-x64')
106
+ */
107
+ export declare function getPlatformArch(platform: Platform, arch: Arch, libc?: Libc | undefined): string;