@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
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_error = require('../primordials/error.js');
5
+
6
+ //#region src/releases/socket-btm-binary-naming.ts
7
+ /**
8
+ * Map Node.js platform to socket-btm asset platform naming. Identity mapping:
9
+ * asset names use `process.platform` verbatim (`darwin`, `linux`, `win32`) to
10
+ * align with pnpm's pack-app, the `--os` / `supportedArchitectures.os` config
11
+ * keys, and the `@pnpm/exe.<os>-<arch>` package convention.
12
+ */
13
+ const PLATFORM_MAP = {
14
+ __proto__: null,
15
+ darwin: "darwin",
16
+ linux: "linux",
17
+ win32: "win32"
18
+ };
19
+ /**
20
+ * Map Node.js arch to socket-btm asset arch naming.
21
+ */
22
+ const ARCH_MAP = {
23
+ __proto__: null,
24
+ arm64: "arm64",
25
+ x64: "x64"
26
+ };
27
+ /**
28
+ * Get asset name for a socket-btm binary.
29
+ *
30
+ * @example
31
+ * ;```typescript
32
+ * getBinaryAssetName('lief', 'linux', 'x64', 'musl')
33
+ * // 'lief-linux-x64-musl'
34
+ * ```
35
+ *
36
+ * @param binaryBaseName - Binary basename (e.g., 'binject', 'node')
37
+ * @param platform - Target platform.
38
+ * @param arch - Target architecture.
39
+ * @param libc - Linux libc variant (optional)
40
+ *
41
+ * @returns Asset name (e.g., 'binject-darwin-arm64', 'node-linux-x64-musl')
42
+ */
43
+ function getBinaryAssetName(binaryBaseName, platform, arch, libc) {
44
+ const mappedArch = ARCH_MAP[arch];
45
+ if (!mappedArch) throw new require_primordials_error.ErrorCtor(`Unsupported architecture: ${arch}`);
46
+ const muslSuffix = platform === "linux" && libc === "musl" ? "-musl" : "";
47
+ const ext = platform === "win32" ? ".exe" : "";
48
+ if (platform === "darwin") return `${binaryBaseName}-darwin-${mappedArch}${ext}`;
49
+ if (platform === "linux") return `${binaryBaseName}-linux-${mappedArch}${muslSuffix}${ext}`;
50
+ if (platform === "win32") return `${binaryBaseName}-win32-${mappedArch}${ext}`;
51
+ throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${platform}`);
52
+ }
53
+ /**
54
+ * Get binary filename for output.
55
+ *
56
+ * @example
57
+ * ;```typescript
58
+ * getBinaryName('node', 'win32') // 'node.exe'
59
+ * getBinaryName('node', 'linux') // 'node'
60
+ * ```
61
+ *
62
+ * @param binaryBaseName - Binary basename (e.g., 'node', 'binject')
63
+ * @param platform - Target platform.
64
+ *
65
+ * @returns Binary filename (e.g., 'node', 'node.exe')
66
+ */
67
+ function getBinaryName(binaryBaseName, platform) {
68
+ return platform === "win32" ? `${binaryBaseName}.exe` : binaryBaseName;
69
+ }
70
+ /**
71
+ * Get platform-arch identifier for directory structure and asset names.
72
+ *
73
+ * # Format: `<os>-<arch>[-<libc>]`
74
+ *
75
+ * The OS segment is `process.platform` verbatim: `darwin` / `linux` / `win32`.
76
+ * The arch segment is `process.arch` verbatim: `x64` / `arm64`. The optional
77
+ * libc suffix is `-musl` (Linux only; the glibc default is unsuffixed to match
78
+ * Node.js's own linuxstatic convention).
79
+ *
80
+ * # Why these specific conventions
81
+ *
82
+ * ## Why `win32`, not `win`
83
+ *
84
+ * `win32` is what `process.platform` returns on every Windows host. Every npm
85
+ * package whose install-time platform filter uses the standard `os` / `cpu` /
86
+ * `libc` manifest fields must match `process.platform` strings exactly (npm
87
+ * compares them verbatim — there's no shorthand layer). Using `win` internally
88
+ * here would have forced a translation every time we constructed an install
89
+ * filter or a target triple, and reviewers would have to remember "we
90
+ * abbreviate on disk but not in package filters." Since the two now match,
91
+ * there's no translation step to get wrong.
92
+ *
93
+ * Pnpm's pack-app (v11+) accepts `<os>-<arch>[-<libc>]` target strings and its
94
+ * shards are `@pnpm/exe.<os>-<arch>` (with `win32`, not `win` — see
95
+ * pnpm#11314). Our naming matches so asset names we emit can flow directly into
96
+ * pack-app's `--target` arg, `pnpm.app.targets` config, and
97
+ * sibling-package-name construction without a translation map.
98
+ *
99
+ * ## Why `-musl` is the suffix (and glibc is unsuffixed)
100
+ *
101
+ * Node.js's own linuxstatic tarballs historically used the unqualified `linux`
102
+ * for glibc and a separate download channel for musl. The pnpm ecosystem
103
+ * codified that as `linux-<arch>` (glibc, default) and `linux-<arch>-musl` (the
104
+ * libc outlier), matching the asymmetric reality of Linux distros — glibc is
105
+ * the majority case, musl is Alpine-and-similar. Adding `-glibc` for the
106
+ * default would be redundant noise in the name.
107
+ *
108
+ * ## Why libc is only appended for Linux
109
+ *
110
+ * MacOS and Windows have exactly one system libc each (Apple libSystem,
111
+ * Microsoft UCRT). A hypothetical `darwin-arm64-libsystem` conveys no
112
+ * information. Node.js, npm, and pnpm all treat libc as a Linux-only axis; we
113
+ * follow the same convention so callers don't have to special- case
114
+ * `'darwin-arm64'.startsWith('darwin-arm64')` style matches.
115
+ *
116
+ * ## Why this function exists at all (vs. inlining)
117
+ *
118
+ * Two upstream APIs that socket-btm consumers end up calling — the npm manifest
119
+ * filter (`os`/`cpu`/`libc`) and pnpm's pack-app `--target` — both need the
120
+ * exact same triple format. Centralizing the construction here means a future
121
+ * schema change (e.g. Node introducing `riscv64`) gets one edit, and the error
122
+ * message for an unsupported platform is uniform across downloaders, pack-app
123
+ * invocations, and the `@socketbin/*` resolver logic.
124
+ *
125
+ * @example
126
+ * ;```typescript
127
+ * getPlatformArch('linux', 'x64', 'musl') // 'linux-x64-musl'
128
+ * getPlatformArch('darwin', 'arm64') // 'darwin-arm64'
129
+ * getPlatformArch('win32', 'x64') // 'win32-x64'
130
+ * getPlatformArch('darwin', 'x64', 'musl') // 'darwin-x64' — libc ignored
131
+ * ```
132
+ *
133
+ * @param platform - Target platform.
134
+ * @param arch - Target architecture.
135
+ * @param libc - Linux libc variant (optional; non-linux platforms ignore)
136
+ *
137
+ * @returns Platform-arch identifier (e.g., 'darwin-arm64', 'linux-x64-musl',
138
+ * 'win32-x64')
139
+ */
140
+ function getPlatformArch(platform, arch, libc) {
141
+ /* c8 ignore start - Unsupported-platform/arch arms fire only on inputs
142
+ outside the PLATFORM_MAP / ARCH_MAP keysets; the musl-suffix arm fires
143
+ only on linux+musl combos. */
144
+ const mappedPlatform = PLATFORM_MAP[platform];
145
+ if (!mappedPlatform) throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${platform}`);
146
+ const mappedArch = ARCH_MAP[arch];
147
+ if (!mappedArch) throw new require_primordials_error.ErrorCtor(`Unsupported architecture: ${arch}`);
148
+ return `${mappedPlatform}-${mappedArch}${platform === "linux" && libc === "musl" ? "-musl" : ""}`;
149
+ /* c8 ignore stop */
150
+ }
151
+
152
+ //#endregion
153
+ exports.getBinaryAssetName = getBinaryAssetName;
154
+ exports.getBinaryName = getBinaryName;
155
+ exports.getPlatformArch = getPlatformArch;
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * @file Socket-btm release download utilities.
3
3
  */
4
- import { type Arch, type Libc, type Platform } from '../constants/platform';
4
+ import type { Arch, Libc, Platform } from '../constants/platform';
5
+ import { getBinaryAssetName, getBinaryName, getPlatformArch } from './socket-btm-binary-naming';
5
6
  import type { AssetPattern } from './github-types';
6
7
  export type { Arch, Libc, Platform };
8
+ export { getBinaryAssetName, getBinaryName, getPlatformArch };
7
9
  /**
8
10
  * Socket-btm GitHub repository configuration.
9
11
  */
@@ -22,7 +24,7 @@ export interface SocketBtmAssetConfig {
22
24
  /**
23
25
  * @internal Discriminator fields
24
26
  */
25
- bin?: never;
27
+ bin?: never | undefined;
26
28
  /**
27
29
  * Working directory (defaults to process.cwd()).
28
30
  */
@@ -34,7 +36,7 @@ export interface SocketBtmAssetConfig {
34
36
  /**
35
37
  * @internal Discriminator fields
36
38
  */
37
- libc?: never;
39
+ libc?: never | undefined;
38
40
  /**
39
41
  * Output filename. @default resolved asset name.
40
42
  */
@@ -54,11 +56,11 @@ export interface SocketBtmAssetConfig {
54
56
  /**
55
57
  * @internal Discriminator fields
56
58
  */
57
- targetArch?: never;
59
+ targetArch?: never | undefined;
58
60
  /**
59
61
  * @internal Discriminator fields
60
62
  */
61
- targetPlatform?: never;
63
+ targetPlatform?: never | undefined;
62
64
  }
63
65
  /**
64
66
  * Configuration for downloading socket-btm binary releases.
@@ -67,7 +69,7 @@ export interface SocketBtmBinaryConfig {
67
69
  /**
68
70
  * @internal Discriminator field
69
71
  */
70
- asset?: never;
72
+ asset?: never | undefined;
71
73
  /**
72
74
  * Binary/executable name (without extension). @default tool.
73
75
  */
@@ -138,112 +140,3 @@ export declare function detectLibc(): Libc | undefined;
138
140
  * @returns Path to the downloaded file
139
141
  */
140
142
  export declare function downloadSocketBtmRelease(tool: string, options: SocketBtmReleaseConfig | undefined): Promise<string>;
141
- /**
142
- * Get asset name for a socket-btm binary.
143
- *
144
- * @example
145
- * ;```typescript
146
- * getBinaryAssetName('lief', 'linux', 'x64', 'musl')
147
- * // 'lief-linux-x64-musl'
148
- * ```
149
- *
150
- * @param binaryBaseName - Binary basename (e.g., 'binject', 'node')
151
- * @param platform - Target platform.
152
- * @param arch - Target architecture.
153
- * @param libc - Linux libc variant (optional)
154
- *
155
- * @returns Asset name (e.g., 'binject-darwin-arm64', 'node-linux-x64-musl')
156
- */
157
- export declare function getBinaryAssetName(binaryBaseName: string, platform: Platform, arch: Arch, libc?: Libc | undefined): string;
158
- /**
159
- * Get binary filename for output.
160
- *
161
- * @example
162
- * ;```typescript
163
- * getBinaryName('node', 'win32') // 'node.exe'
164
- * getBinaryName('node', 'linux') // 'node'
165
- * ```
166
- *
167
- * @param binaryBaseName - Binary basename (e.g., 'node', 'binject')
168
- * @param platform - Target platform.
169
- *
170
- * @returns Binary filename (e.g., 'node', 'node.exe')
171
- */
172
- export declare function getBinaryName(binaryBaseName: string, platform: Platform): string;
173
- /**
174
- * Lazily load the fs module to avoid Webpack errors. Uses non-'node:' prefixed
175
- * require to prevent Webpack bundling issues.
176
- *
177
- * @private
178
- */
179
- /**
180
- * Get platform-arch identifier for directory structure and asset names.
181
- *
182
- * # Format: `<os>-<arch>[-<libc>]`
183
- *
184
- * The OS segment is `process.platform` verbatim: `darwin` / `linux` / `win32`.
185
- * The arch segment is `process.arch` verbatim: `x64` / `arm64`. The optional
186
- * libc suffix is `-musl` (Linux only; the glibc default is unsuffixed to match
187
- * Node.js's own linuxstatic convention).
188
- *
189
- * # Why these specific conventions
190
- *
191
- * ## Why `win32`, not `win`
192
- *
193
- * `win32` is what `process.platform` returns on every Windows host. Every npm
194
- * package whose install-time platform filter uses the standard `os` / `cpu` /
195
- * `libc` manifest fields must match `process.platform` strings exactly (npm
196
- * compares them verbatim — there's no shorthand layer). Using `win` internally
197
- * here would have forced a translation every time we constructed an install
198
- * filter or a target triple, and reviewers would have to remember "we
199
- * abbreviate on disk but not in package filters." Since the two now match,
200
- * there's no translation step to get wrong.
201
- *
202
- * Pnpm's pack-app (v11+) accepts `<os>-<arch>[-<libc>]` target strings and its
203
- * shards are `@pnpm/exe.<os>-<arch>` (with `win32`, not `win` — see
204
- * pnpm#11314). Our naming matches so asset names we emit can flow directly into
205
- * pack-app's `--target` arg, `pnpm.app.targets` config, and
206
- * sibling-package-name construction without a translation map.
207
- *
208
- * ## Why `-musl` is the suffix (and glibc is unsuffixed)
209
- *
210
- * Node.js's own linuxstatic tarballs historically used the unqualified `linux`
211
- * for glibc and a separate download channel for musl. The pnpm ecosystem
212
- * codified that as `linux-<arch>` (glibc, default) and `linux-<arch>-musl` (the
213
- * libc outlier), matching the asymmetric reality of Linux distros — glibc is
214
- * the majority case, musl is Alpine-and-similar. Adding `-glibc` for the
215
- * default would be redundant noise in the name.
216
- *
217
- * ## Why libc is only appended for Linux
218
- *
219
- * MacOS and Windows have exactly one system libc each (Apple libSystem,
220
- * Microsoft UCRT). A hypothetical `darwin-arm64-libsystem` conveys no
221
- * information. Node.js, npm, and pnpm all treat libc as a Linux-only axis; we
222
- * follow the same convention so callers don't have to special- case
223
- * `'darwin-arm64'.startsWith('darwin-arm64')` style matches.
224
- *
225
- * ## Why this function exists at all (vs. inlining)
226
- *
227
- * Two upstream APIs that socket-btm consumers end up calling — the npm manifest
228
- * filter (`os`/`cpu`/`libc`) and pnpm's pack-app `--target` — both need the
229
- * exact same triple format. Centralizing the construction here means a future
230
- * schema change (e.g. Node introducing `riscv64`) gets one edit, and the error
231
- * message for an unsupported platform is uniform across downloaders, pack-app
232
- * invocations, and the `@socketbin/*` resolver logic.
233
- *
234
- * @example
235
- * ;```typescript
236
- * getPlatformArch('linux', 'x64', 'musl') // 'linux-x64-musl'
237
- * getPlatformArch('darwin', 'arm64') // 'darwin-arm64'
238
- * getPlatformArch('win32', 'x64') // 'win32-x64'
239
- * getPlatformArch('darwin', 'x64', 'musl') // 'darwin-x64' — libc ignored
240
- * ```
241
- *
242
- * @param platform - Target platform.
243
- * @param arch - Target architecture.
244
- * @param libc - Linux libc variant (optional; non-linux platforms ignore)
245
- *
246
- * @returns Platform-arch identifier (e.g., 'darwin-arm64', 'linux-x64-musl',
247
- * 'win32-x64')
248
- */
249
- export declare function getPlatformArch(platform: Platform, arch: Arch, libc?: Libc | undefined): string;
@@ -7,6 +7,7 @@ const require_node_fs = require('../node/fs.js');
7
7
  const require_releases_github_asset_url = require('./github-asset-url.js');
8
8
  const require_releases_github_listing = require('./github-listing.js');
9
9
  const require_releases_github_downloads = require('./github-downloads.js');
10
+ const require_releases_socket_btm_binary_naming = require('./socket-btm-binary-naming.js');
10
11
 
11
12
  //#region src/releases/socket-btm.ts
12
13
  /**
@@ -20,26 +21,6 @@ const SOCKET_BTM_REPO = {
20
21
  repo: "socket-btm"
21
22
  };
22
23
  /**
23
- * Map Node.js platform to socket-btm asset platform naming. Identity mapping:
24
- * asset names use `process.platform` verbatim (`darwin`, `linux`, `win32`) to
25
- * align with pnpm's pack-app, the `--os` / `supportedArchitectures.os` config
26
- * keys, and the `@pnpm/exe.<os>-<arch>` package convention.
27
- */
28
- const PLATFORM_MAP = {
29
- __proto__: null,
30
- darwin: "darwin",
31
- linux: "linux",
32
- win32: "win32"
33
- };
34
- /**
35
- * Map Node.js arch to socket-btm asset arch naming.
36
- */
37
- const ARCH_MAP = {
38
- __proto__: null,
39
- arm64: "arm64",
40
- x64: "x64"
41
- };
42
- /**
43
24
  * Detect the libc variant (musl or glibc) on Linux systems. Returns undefined
44
25
  * for non-Linux platforms.
45
26
  *
@@ -53,17 +34,21 @@ const ARCH_MAP = {
53
34
  */
54
35
  function detectLibc() {
55
36
  /* c8 ignore next 3 */
56
- if (require_constants_platform.getPlatform() !== "linux") return;
37
+ if (require_constants_platform.getOs() !== "linux") return;
57
38
  /* c8 ignore start - Linux-only musl/glibc detection; tested on
58
39
  Linux runners. macOS/Windows runners take the early-return above. */
59
40
  try {
60
- const fs = /* @__PURE__ */ require_node_fs.getNodeFs();
61
- for (const path of [
41
+ const fs = require_node_fs.getNodeFs();
42
+ const muslPaths = [
62
43
  "/lib/ld-musl-x86_64.so.1",
63
44
  "/lib/ld-musl-aarch64.so.1",
64
45
  "/usr/lib/ld-musl-x86_64.so.1",
65
46
  "/usr/lib/ld-musl-aarch64.so.1"
66
- ]) if (fs.existsSync(path)) return "musl";
47
+ ];
48
+ for (let i = 0, { length } = muslPaths; i < length; i += 1) {
49
+ const path = muslPaths[i];
50
+ if (fs.existsSync(path)) return "musl";
51
+ }
67
52
  return "glibc";
68
53
  } catch {
69
54
  return "glibc";
@@ -127,14 +112,14 @@ async function downloadSocketBtmRelease(tool, options) {
127
112
  removeMacOSQuarantine
128
113
  };
129
114
  } else {
130
- const { bin, libc = detectLibc(), removeMacOSQuarantine = true, targetArch = require_constants_platform.getArch(), targetPlatform = require_constants_platform.getPlatform() } = {
115
+ const { bin, libc = detectLibc(), removeMacOSQuarantine = true, targetArch = require_constants_platform.getArch(), targetPlatform = require_constants_platform.getOs() } = {
131
116
  __proto__: null,
132
117
  ...options
133
118
  };
134
119
  const baseName = bin || tool;
135
- const assetName = getBinaryAssetName(baseName, targetPlatform, targetArch, libc);
136
- const platformArch = getPlatformArch(targetPlatform, targetArch, libc);
137
- const binaryName = getBinaryName(baseName, targetPlatform);
120
+ const assetName = require_releases_socket_btm_binary_naming.getBinaryAssetName(baseName, targetPlatform, targetArch, libc);
121
+ const platformArch = require_releases_socket_btm_binary_naming.getPlatformArch(targetPlatform, targetArch, libc);
122
+ const binaryName = require_releases_socket_btm_binary_naming.getBinaryName(baseName, targetPlatform);
138
123
  downloadConfig = {
139
124
  owner: SOCKET_BTM_REPO.owner,
140
125
  repo: SOCKET_BTM_REPO.repo,
@@ -152,139 +137,11 @@ async function downloadSocketBtmRelease(tool, options) {
152
137
  }
153
138
  return await require_releases_github_downloads.downloadGitHubRelease(downloadConfig);
154
139
  }
155
- /**
156
- * Get asset name for a socket-btm binary.
157
- *
158
- * @example
159
- * ;```typescript
160
- * getBinaryAssetName('lief', 'linux', 'x64', 'musl')
161
- * // 'lief-linux-x64-musl'
162
- * ```
163
- *
164
- * @param binaryBaseName - Binary basename (e.g., 'binject', 'node')
165
- * @param platform - Target platform.
166
- * @param arch - Target architecture.
167
- * @param libc - Linux libc variant (optional)
168
- *
169
- * @returns Asset name (e.g., 'binject-darwin-arm64', 'node-linux-x64-musl')
170
- */
171
- function getBinaryAssetName(binaryBaseName, platform, arch, libc) {
172
- const mappedArch = ARCH_MAP[arch];
173
- if (!mappedArch) throw new require_primordials_error.ErrorCtor(`Unsupported architecture: ${arch}`);
174
- const muslSuffix = platform === "linux" && libc === "musl" ? "-musl" : "";
175
- const ext = platform === "win32" ? ".exe" : "";
176
- if (platform === "darwin") return `${binaryBaseName}-darwin-${mappedArch}${ext}`;
177
- if (platform === "linux") return `${binaryBaseName}-linux-${mappedArch}${muslSuffix}${ext}`;
178
- if (platform === "win32") return `${binaryBaseName}-win32-${mappedArch}${ext}`;
179
- throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${platform}`);
180
- }
181
- /**
182
- * Get binary filename for output.
183
- *
184
- * @example
185
- * ;```typescript
186
- * getBinaryName('node', 'win32') // 'node.exe'
187
- * getBinaryName('node', 'linux') // 'node'
188
- * ```
189
- *
190
- * @param binaryBaseName - Binary basename (e.g., 'node', 'binject')
191
- * @param platform - Target platform.
192
- *
193
- * @returns Binary filename (e.g., 'node', 'node.exe')
194
- */
195
- function getBinaryName(binaryBaseName, platform) {
196
- return platform === "win32" ? `${binaryBaseName}.exe` : binaryBaseName;
197
- }
198
- /**
199
- * Lazily load the fs module to avoid Webpack errors. Uses non-'node:' prefixed
200
- * require to prevent Webpack bundling issues.
201
- *
202
- * @private
203
- */
204
- /**
205
- * Get platform-arch identifier for directory structure and asset names.
206
- *
207
- * # Format: `<os>-<arch>[-<libc>]`
208
- *
209
- * The OS segment is `process.platform` verbatim: `darwin` / `linux` / `win32`.
210
- * The arch segment is `process.arch` verbatim: `x64` / `arm64`. The optional
211
- * libc suffix is `-musl` (Linux only; the glibc default is unsuffixed to match
212
- * Node.js's own linuxstatic convention).
213
- *
214
- * # Why these specific conventions
215
- *
216
- * ## Why `win32`, not `win`
217
- *
218
- * `win32` is what `process.platform` returns on every Windows host. Every npm
219
- * package whose install-time platform filter uses the standard `os` / `cpu` /
220
- * `libc` manifest fields must match `process.platform` strings exactly (npm
221
- * compares them verbatim — there's no shorthand layer). Using `win` internally
222
- * here would have forced a translation every time we constructed an install
223
- * filter or a target triple, and reviewers would have to remember "we
224
- * abbreviate on disk but not in package filters." Since the two now match,
225
- * there's no translation step to get wrong.
226
- *
227
- * Pnpm's pack-app (v11+) accepts `<os>-<arch>[-<libc>]` target strings and its
228
- * shards are `@pnpm/exe.<os>-<arch>` (with `win32`, not `win` — see
229
- * pnpm#11314). Our naming matches so asset names we emit can flow directly into
230
- * pack-app's `--target` arg, `pnpm.app.targets` config, and
231
- * sibling-package-name construction without a translation map.
232
- *
233
- * ## Why `-musl` is the suffix (and glibc is unsuffixed)
234
- *
235
- * Node.js's own linuxstatic tarballs historically used the unqualified `linux`
236
- * for glibc and a separate download channel for musl. The pnpm ecosystem
237
- * codified that as `linux-<arch>` (glibc, default) and `linux-<arch>-musl` (the
238
- * libc outlier), matching the asymmetric reality of Linux distros — glibc is
239
- * the majority case, musl is Alpine-and-similar. Adding `-glibc` for the
240
- * default would be redundant noise in the name.
241
- *
242
- * ## Why libc is only appended for Linux
243
- *
244
- * MacOS and Windows have exactly one system libc each (Apple libSystem,
245
- * Microsoft UCRT). A hypothetical `darwin-arm64-libsystem` conveys no
246
- * information. Node.js, npm, and pnpm all treat libc as a Linux-only axis; we
247
- * follow the same convention so callers don't have to special- case
248
- * `'darwin-arm64'.startsWith('darwin-arm64')` style matches.
249
- *
250
- * ## Why this function exists at all (vs. inlining)
251
- *
252
- * Two upstream APIs that socket-btm consumers end up calling — the npm manifest
253
- * filter (`os`/`cpu`/`libc`) and pnpm's pack-app `--target` — both need the
254
- * exact same triple format. Centralizing the construction here means a future
255
- * schema change (e.g. Node introducing `riscv64`) gets one edit, and the error
256
- * message for an unsupported platform is uniform across downloaders, pack-app
257
- * invocations, and the `@socketbin/*` resolver logic.
258
- *
259
- * @example
260
- * ;```typescript
261
- * getPlatformArch('linux', 'x64', 'musl') // 'linux-x64-musl'
262
- * getPlatformArch('darwin', 'arm64') // 'darwin-arm64'
263
- * getPlatformArch('win32', 'x64') // 'win32-x64'
264
- * getPlatformArch('darwin', 'x64', 'musl') // 'darwin-x64' — libc ignored
265
- * ```
266
- *
267
- * @param platform - Target platform.
268
- * @param arch - Target architecture.
269
- * @param libc - Linux libc variant (optional; non-linux platforms ignore)
270
- *
271
- * @returns Platform-arch identifier (e.g., 'darwin-arm64', 'linux-x64-musl',
272
- * 'win32-x64')
273
- */
274
- function getPlatformArch(platform, arch, libc) {
275
- /* c8 ignore start */
276
- const mappedPlatform = PLATFORM_MAP[platform];
277
- if (!mappedPlatform) throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${platform}`);
278
- const mappedArch = ARCH_MAP[arch];
279
- if (!mappedArch) throw new require_primordials_error.ErrorCtor(`Unsupported architecture: ${arch}`);
280
- return `${mappedPlatform}-${mappedArch}${platform === "linux" && libc === "musl" ? "-musl" : ""}`;
281
- /* c8 ignore stop */
282
- }
283
140
 
284
141
  //#endregion
285
142
  exports.SOCKET_BTM_REPO = SOCKET_BTM_REPO;
286
143
  exports.detectLibc = detectLibc;
287
144
  exports.downloadSocketBtmRelease = downloadSocketBtmRelease;
288
- exports.getBinaryAssetName = getBinaryAssetName;
289
- exports.getBinaryName = getBinaryName;
290
- exports.getPlatformArch = getPlatformArch;
145
+ exports.getBinaryAssetName = require_releases_socket_btm_binary_naming.getBinaryAssetName;
146
+ exports.getBinaryName = require_releases_socket_btm_binary_naming.getBinaryName;
147
+ exports.getPlatformArch = require_releases_socket_btm_binary_naming.getPlatformArch;
@@ -24,7 +24,7 @@ export interface ParseResult<T> {
24
24
  /**
25
25
  * Error information (only present when `success` is `false`)
26
26
  */
27
- error?: unknown;
27
+ error?: unknown | undefined;
28
28
  }
29
29
  /**
30
30
  * Zod-shaped duck-type for any validator exposing `safeParse` / `parse`.
@@ -23,7 +23,7 @@ node_process = require_runtime.__toESM(node_process);
23
23
  /**
24
24
  * Cached SEA detection result.
25
25
  */
26
- let _isSea;
26
+ let isSeaCache;
27
27
  /**
28
28
  * Get the current SEA binary path. Only valid when running as a SEA binary.
29
29
  *
@@ -36,7 +36,7 @@ let _isSea;
36
36
  * ```
37
37
  */
38
38
  function getSeaBinaryPath() {
39
- return isSeaBinary() && node_process.default.argv[0] ? /* @__PURE__ */ require_paths_normalize.normalizePath(node_process.default.argv[0]) : void 0;
39
+ return isSeaBinary() && node_process.default.argv[0] ? require_paths_normalize.normalizePath(node_process.default.argv[0]) : void 0;
40
40
  }
41
41
  /**
42
42
  * Detect if the current process is running as a SEA binary. Uses Node.js 24+
@@ -50,12 +50,12 @@ function getSeaBinaryPath() {
50
50
  * ```
51
51
  */
52
52
  function isSeaBinary() {
53
- if (_isSea === void 0) try {
54
- _isSea = require("node:sea").isSea();
53
+ if (isSeaCache === void 0) try {
54
+ isSeaCache = require("node:sea").isSea();
55
55
  } catch {
56
- _isSea = false;
56
+ isSeaCache = false;
57
57
  }
58
- return _isSea ?? false;
58
+ return isSeaCache ?? false;
59
59
  }
60
60
 
61
61
  //#endregion
@@ -2,8 +2,8 @@
2
2
  * @file Private internals for `secrets/` — process-scoped read cache for the
3
3
  * keychain backend. Underscore-prefixed and skipped by the export generator
4
4
  * (`dist/**\/_*` ignore pattern in
5
- * `scripts/fix/generate-package-exports.mts`) so this module is NOT part of
6
- * the public API surface. Imported by `./keychain.ts`. Every `readSecret`
5
+ * `scripts/post-build/make-package-exports.mts`) so this module is NOT part
6
+ * of the public API surface. Imported by `./keychain.ts`. Every `readSecret`
7
7
  * call shells out to the OS credential CLI (`security`, `secret-tool`,
8
8
  * PowerShell). On macOS, the first read of a given entry by a new binary path
9
9
  * triggers a Keychain auth prompt unless the entry was written with `-A -T
@@ -1,14 +1,15 @@
1
1
  "use strict";
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_map_set = require('../primordials/map-set.js');
4
5
 
5
6
  //#region src/secrets/_internal.ts
6
7
  /**
7
8
  * @file Private internals for `secrets/` — process-scoped read cache for the
8
9
  * keychain backend. Underscore-prefixed and skipped by the export generator
9
10
  * (`dist/**\/_*` ignore pattern in
10
- * `scripts/fix/generate-package-exports.mts`) so this module is NOT part of
11
- * the public API surface. Imported by `./keychain.ts`. Every `readSecret`
11
+ * `scripts/post-build/make-package-exports.mts`) so this module is NOT part
12
+ * of the public API surface. Imported by `./keychain.ts`. Every `readSecret`
12
13
  * call shells out to the OS credential CLI (`security`, `secret-tool`,
13
14
  * PowerShell). On macOS, the first read of a given entry by a new binary path
14
15
  * triggers a Keychain auth prompt unless the entry was written with `-A -T
@@ -29,8 +30,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
29
30
  * undefined (entry missing), `undefined` is cached too — callers that want a
30
31
  * re-check after creating the entry must call `invalidate`.
31
32
  */
32
- const valueCache = /* @__PURE__ */ new Map();
33
- const inflight = /* @__PURE__ */ new Map();
33
+ const valueCache = new require_primordials_map_set.MapCtor();
34
+ const inflight = new require_primordials_map_set.MapCtor();
34
35
  function cacheKey(service, account) {
35
36
  return `${service} ${account}`;
36
37
  }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @file Constant-time secret comparison. Wraps Node's `crypto.timingSafeEqual`
3
+ * so every secret comparison in the codebase runs through one helper that
4
+ * refuses to short-circuit on the first mismatched byte. Why this matters:
5
+ *
6
+ * - `===` / `!==` on JS strings short-circuits at the first byte mismatch. An
7
+ * attacker who can measure server response time can binary-search the
8
+ * secret one byte at a time: `'a000...'`, `'b000...'`, … until the response
9
+ * slows down at the right first byte, then on to byte 2. Same trap for
10
+ * `Buffer.compare` and `==`.
11
+ * - `crypto.timingSafeEqual` runs in O(n) regardless of where the first
12
+ * mismatch is. Each iteration is the same cost so the timing channel
13
+ * carries no information about which byte mismatched. Use whenever
14
+ * comparing two values that include a secret (session token, API key, MAC,
15
+ * expected-hash). Don't use for path strings or other non-secret
16
+ * comparisons — `===` is fine there and faster. Patterned after pilcrow's
17
+ * `crypto.go::constantTimeCompare`, the canonical shape in
18
+ * passwordless-example.auth.pilcrowonpaper.com — wrap once, use everywhere,
19
+ * never byte-compare a secret directly.
20
+ */
21
+ /**
22
+ * Compare two secrets in constant time. Returns `true` when the inputs are
23
+ * byte-equal. Returns `false` when they differ **or** when the byte-lengths
24
+ * differ. Never throws.
25
+ *
26
+ * Length mismatch handling: `timingSafeEqual` itself throws on length mismatch
27
+ * (it can't preserve the timing-safety contract across differently- sized
28
+ * buffers). We catch that and return `false` so callers don't need a length
29
+ * pre-check.
30
+ *
31
+ * @example
32
+ * ;```typescript
33
+ * import { compareSecrets } from '@socketsecurity/lib/secrets/compare'
34
+ *
35
+ * if (!compareSecrets(presentedToken, storedToken)) {
36
+ * throw new Error('invalid token')
37
+ * }
38
+ * ```
39
+ *
40
+ * @param a - First secret (string or Buffer).
41
+ * @param b - Second secret (string or Buffer).
42
+ *
43
+ * @returns `true` when `a` and `b` are byte-equal; `false` otherwise.
44
+ */
45
+ export declare function compareSecrets(a: Buffer | string, b: Buffer | string): boolean;