@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
@@ -6,10 +6,11 @@ const require_primordials_date = require('../primordials/date.js');
6
6
  const require_primordials_json = require('../primordials/json.js');
7
7
  const require_errors_message = require('../errors/message.js');
8
8
  const require_http_request_request = require('../http-request/request.js');
9
+ const require_env_github_status = require('../env/github-status.js');
9
10
  const require_github_errors = require('./errors.js');
10
11
  const require_github_token = require('./token.js');
11
12
 
12
- //#region src/github/fetch.ts
13
+ //#region src/github/request.ts
13
14
  /**
14
15
  * @file Authenticated GitHub REST fetch. `fetchGitHub` is the single entry
15
16
  * point that the rest of the github/ modules go through for REST calls. It
@@ -87,7 +88,7 @@ async function fetchGitHub(url, options) {
87
88
  __proto__: null,
88
89
  ...options
89
90
  };
90
- const token = opts.token || require_github_token.getGitHubToken();
91
+ const token = opts.token ?? require_github_token.getGitHubToken();
91
92
  const headers = {
92
93
  Accept: "application/vnd.github.v3+json",
93
94
  "User-Agent": "socket-registry-github-client",
@@ -110,6 +111,16 @@ async function fetchGitHub(url, options) {
110
111
  throw error;
111
112
  }
112
113
  }
114
+ if (response.status >= 500) {
115
+ /* c8 ignore start - External status probe, non-deterministic */
116
+ const ghStatus = await require_env_github_status.probeGitHubStatus(4e3).catch(() => void 0);
117
+ /* c8 ignore stop */
118
+ let statusNote = "";
119
+ if (ghStatus) if (ghStatus.status === "unknown") statusNote = " (githubstatus.com unreachable — could not confirm platform health)";
120
+ else if (ghStatus.degraded) statusNote = `\nGitHub platform status at time of failure:\n${ghStatus.components.map((c) => ` ${c.name}: ${c.status}`).join("\n")}`;
121
+ else statusNote = "\nGitHub platform status: all monitored components operational — this may be a transient issue or a request-specific error.";
122
+ throw new require_primordials_error.ErrorCtor(`GitHub API error ${response.status}: ${response.statusText}.${statusNote}`);
123
+ }
113
124
  throw new require_primordials_error.ErrorCtor(`GitHub API error ${response.status}: ${response.statusText}`);
114
125
  }
115
126
  if (response.body.byteLength === 0) throw new require_github_errors.GitHubEmptyBodyError(url);
@@ -34,7 +34,7 @@ const require_env_socket_cli = require('../env/socket-cli.js');
34
34
  * @returns The first available GitHub token, or `undefined` if none found
35
35
  */
36
36
  function getGitHubToken() {
37
- return /* @__PURE__ */ require_env_github.getGithubToken() || /* @__PURE__ */ require_env_github.getGhToken() || /* @__PURE__ */ require_env_socket_cli.getSocketCliGithubToken() || void 0;
37
+ return require_env_github.getGithubToken() || require_env_github.getGhToken() || require_env_socket_cli.getSocketCliGithubToken() || void 0;
38
38
  }
39
39
  /**
40
40
  * Get GitHub authentication token from git config. Reads the `github.token`
@@ -114,7 +114,7 @@ export interface GitHubTag {
114
114
  * Tagger's name.
115
115
  */
116
116
  name: string;
117
- };
117
+ } | undefined;
118
118
  /**
119
119
  * API URL for this tag object.
120
120
  */
@@ -18,17 +18,15 @@ const require_node_fs_promises = require('../node/fs-promises.js');
18
18
  */
19
19
  const MATCHER_CACHE_MAX_SIZE = 100;
20
20
  const matcherCache = new require_primordials_map_set.MapCtor();
21
- let _fastGlob;
22
- let _picomatch;
23
- /* @__NO_SIDE_EFFECTS__ */
21
+ let cachedFastGlob;
22
+ let cachedPicomatch;
24
23
  function getFastGlob() {
25
- if (_fastGlob === void 0) _fastGlob = /* @__PURE__ */ require("../external/fast-glob.js");
26
- return _fastGlob;
24
+ if (cachedFastGlob === void 0) cachedFastGlob = /*@__PURE__*/ require("../external/fast-glob.js");
25
+ return cachedFastGlob;
27
26
  }
28
- /* @__NO_SIDE_EFFECTS__ */
29
27
  function getPicomatch() {
30
- if (_picomatch === void 0) _picomatch = /* @__PURE__ */ require("../external/picomatch.js");
31
- return _picomatch;
28
+ if (cachedPicomatch === void 0) cachedPicomatch = /*@__PURE__*/ require("../external/picomatch.js");
29
+ return cachedPicomatch;
32
30
  }
33
31
  /**
34
32
  * Glob results are normalized to forward slashes regardless of the backend
@@ -38,7 +36,7 @@ function getPicomatch() {
38
36
  * this stays consistent with every other path-shaped string in the lib.
39
37
  */
40
38
  function normalizeGlobResults(out) {
41
- for (let i = 0; i < out.length; i += 1) out[i] = /* @__PURE__ */ require_paths_normalize.normalizePath(out[i]);
39
+ for (let i = 0; i < out.length; i += 1) out[i] = require_paths_normalize.normalizePath(out[i]);
42
40
  return out;
43
41
  }
44
42
  /**
@@ -2,6 +2,7 @@
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_node_fs = require('../node/fs.js');
5
+ const require_primordials_object = require('../primordials/object.js');
5
6
  const require_node_fs_promises = require('../node/fs-promises.js');
6
7
  const require_globs__internal = require('./_internal.js');
7
8
  const require_promises_resolvers = require('../promises/resolvers.js');
@@ -45,7 +46,7 @@ const require_promises_resolvers = require('../promises/resolvers.js');
45
46
  */
46
47
  function canUseNodeFsGlob(options) {
47
48
  if (!options) return true;
48
- for (const key of Object.keys(options)) if (key !== "cwd" && key !== "ignore") return false;
49
+ for (const key of require_primordials_object.ObjectKeys(options)) if (key !== "cwd" && key !== "ignore") return false;
49
50
  return true;
50
51
  }
51
52
  /**
@@ -57,15 +58,14 @@ function canUseNodeFsGlob(options) {
57
58
  * console.log(files) // ['src/index.ts', 'src/utils.ts']
58
59
  * ```
59
60
  */
60
- /* @__NO_SIDE_EFFECTS__ */
61
61
  async function glob(patterns, options) {
62
62
  const normalizedIgnore = require_globs__internal.normalizeIgnorePatterns(options?.ignore);
63
63
  /* c8 ignore start */
64
- if (canUseNodeFsGlob(options)) return require_globs__internal.normalizeGlobResults(await require_promises_resolvers.fromAsync((/* @__PURE__ */ require_node_fs_promises.getNodeFsPromises()).glob(patterns, {
64
+ if (canUseNodeFsGlob(options)) return require_globs__internal.normalizeGlobResults(await require_promises_resolvers.fromAsync(require_node_fs_promises.getNodeFsPromises().glob(patterns, {
65
65
  ...options?.cwd ? { cwd: options.cwd } : {},
66
66
  ...normalizedIgnore ? { exclude: normalizedIgnore } : {}
67
67
  })));
68
- return require_globs__internal.normalizeGlobResults(await (/* @__PURE__ */ require_globs__internal.getFastGlob()).glob(patterns, {
68
+ return require_globs__internal.normalizeGlobResults(await require_globs__internal.getFastGlob().glob(patterns, {
69
69
  ...options,
70
70
  ...normalizedIgnore ? { ignore: normalizedIgnore } : {}
71
71
  }));
@@ -80,15 +80,14 @@ async function glob(patterns, options) {
80
80
  * console.log(files) // ['package.json', 'tsconfig.json']
81
81
  * ```
82
82
  */
83
- /* @__NO_SIDE_EFFECTS__ */
84
83
  function globSync(patterns, options) {
85
84
  const normalizedIgnore = require_globs__internal.normalizeIgnorePatterns(options?.ignore);
86
85
  /* c8 ignore start */
87
- if (canUseNodeFsGlob(options)) return require_globs__internal.normalizeGlobResults([...(/* @__PURE__ */ require_node_fs.getNodeFs()).globSync(patterns, {
86
+ if (canUseNodeFsGlob(options)) return require_globs__internal.normalizeGlobResults([...require_node_fs.getNodeFs().globSync(patterns, {
88
87
  ...options?.cwd ? { cwd: options.cwd } : {},
89
88
  ...normalizedIgnore ? { exclude: normalizedIgnore } : {}
90
89
  })]);
91
- return require_globs__internal.normalizeGlobResults((/* @__PURE__ */ require_globs__internal.getFastGlob()).globSync(patterns, {
90
+ return require_globs__internal.normalizeGlobResults(require_globs__internal.getFastGlob().globSync(patterns, {
92
91
  ...options,
93
92
  ...normalizedIgnore ? { ignore: normalizedIgnore } : {}
94
93
  }));
@@ -30,9 +30,9 @@ import type { Pattern } from './types';
30
30
  * ```
31
31
  */
32
32
  export declare function getGlobMatcher(glob: Pattern | Pattern[], options?: {
33
- dot?: boolean;
34
- nocase?: boolean;
35
- ignore?: string[];
33
+ dot?: boolean | undefined;
34
+ nocase?: boolean | undefined;
35
+ ignore?: string[] | undefined;
36
36
  }): (path: string) => boolean;
37
37
  /**
38
38
  * Resolve `path.matchesGlob` (or `undefined` if the runtime predates it).
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_primordials_string = require('../primordials/string.js');
5
5
  const require_primordials_array = require('../primordials/array.js');
6
- const require_primordials_object = require('../primordials/object.js');
7
6
  const require_primordials_json = require('../primordials/json.js');
7
+ const require_primordials_object = require('../primordials/object.js');
8
8
  const require_globs__internal = require('./_internal.js');
9
9
 
10
10
  //#region src/globs/matcher.ts
@@ -14,8 +14,8 @@ const require_globs__internal = require('./_internal.js');
14
14
  * `path.matchesGlob` for the rare case where the caller wants strict
15
15
  * (`nocase: false`, `dot: false`) matching.
16
16
  */
17
- let _matchesGlob;
18
- let _matchesGlobProbed = false;
17
+ let matchesGlobCache;
18
+ let matchesGlobProbed = false;
19
19
  /**
20
20
  * Return a glob-matcher function, memoized by pattern + options.
21
21
  *
@@ -40,13 +40,12 @@ let _matchesGlobProbed = false;
40
40
  * const isSource = getGlobMatcher(['src/**', '!**\/*.test.ts'])
41
41
  * ```
42
42
  */
43
- /* @__NO_SIDE_EFFECTS__ */
44
43
  function getGlobMatcher(glob, options) {
45
44
  const patterns = require_primordials_array.ArrayIsArray(glob) ? glob : [glob];
46
- const sortedPatterns = [...patterns].sort();
47
- const sortedOptions = options ? require_primordials_object.ObjectKeys(options).sort().map((k) => {
45
+ const sortedPatterns = [...patterns].toSorted();
46
+ const sortedOptions = options ? require_primordials_object.ObjectKeys(options).toSorted().map((k) => {
48
47
  const value = options[k];
49
- return `${k}:${require_primordials_json.JSONStringify(require_primordials_array.ArrayIsArray(value) ? [...value].sort() : value)}`;
48
+ return `${k}:${require_primordials_json.JSONStringify(require_primordials_array.ArrayIsArray(value) ? [...value].toSorted() : value)}`;
50
49
  }).join(",") : "";
51
50
  const key = `${sortedPatterns.join("|")}:${sortedOptions}`;
52
51
  const existing = require_globs__internal.matcherCache.get(key);
@@ -64,7 +63,7 @@ function getGlobMatcher(glob, options) {
64
63
  let matcher;
65
64
  /* c8 ignore start */
66
65
  if (patterns.length === 1 && !require_primordials_string.StringPrototypeStartsWith(patterns[0], "!") && options !== void 0 && options.nocase === false && options.dot === false && (options.ignore === void 0 || options.ignore.length === 0)) {
67
- const matchesGlob = /* @__PURE__ */ getMatchesGlob();
66
+ const matchesGlob = getMatchesGlob();
68
67
  if (matchesGlob !== void 0) {
69
68
  const pattern = patterns[0];
70
69
  matcher = (p) => matchesGlob(p, pattern);
@@ -80,7 +79,7 @@ function getGlobMatcher(glob, options) {
80
79
  ...options,
81
80
  ...negativePatterns.length > 0 ? { ignore: negativePatterns } : {}
82
81
  };
83
- matcher = (/* @__PURE__ */ require_globs__internal.getPicomatch())(positivePatterns.length > 0 ? positivePatterns : patterns, matchOptions);
82
+ matcher = require_globs__internal.getPicomatch()(positivePatterns.length > 0 ? positivePatterns : patterns, matchOptions);
84
83
  }
85
84
  require_globs__internal.matcherCache.set(key, matcher);
86
85
  return matcher;
@@ -94,16 +93,15 @@ function getGlobMatcher(glob, options) {
94
93
  *
95
94
  * @internal
96
95
  */
97
- /* @__NO_SIDE_EFFECTS__ */
98
96
  function getMatchesGlob() {
99
- if (!_matchesGlobProbed) {
97
+ if (!matchesGlobProbed) {
100
98
  const fn = (/* @__PURE__ */ require("node:path")).matchesGlob;
101
99
  /* c8 ignore start */
102
- if (typeof fn === "function") _matchesGlob = fn;
100
+ if (typeof fn === "function") matchesGlobCache = fn;
103
101
  /* c8 ignore stop */
104
- _matchesGlobProbed = true;
102
+ matchesGlobProbed = true;
105
103
  }
106
- return _matchesGlob;
104
+ return matchesGlobCache;
107
105
  }
108
106
 
109
107
  //#endregion
@@ -23,7 +23,6 @@ const require_paths_globs = require('../paths/globs.js');
23
23
  * }
24
24
  * ```
25
25
  */
26
- /* @__NO_SIDE_EFFECTS__ */
27
26
  function globStreamLicenses(dirname, options) {
28
27
  const { ignore: ignoreOpt, ignoreOriginals, recursive, ...globOptions } = {
29
28
  __proto__: null,
@@ -31,7 +30,7 @@ function globStreamLicenses(dirname, options) {
31
30
  };
32
31
  const ignore = [...require_primordials_array.ArrayIsArray(ignoreOpt) ? require_globs__internal.normalizeIgnorePatterns(ignoreOpt) : require_globs_defaults.defaultIgnore, "**/*.{cjs,cts,js,json,mjs,mts,ts}"];
33
32
  if (ignoreOriginals) ignore.push(require_paths_globs.LICENSE_ORIGINAL_GLOB_RECURSIVE);
34
- return (/* @__PURE__ */ require_globs__internal.getFastGlob()).globStream([recursive ? require_paths_globs.LICENSE_GLOB_RECURSIVE : require_paths_globs.LICENSE_GLOB], {
33
+ return require_globs__internal.getFastGlob().globStream([recursive ? require_paths_globs.LICENSE_GLOB_RECURSIVE : require_paths_globs.LICENSE_GLOB], {
35
34
  __proto__: null,
36
35
  absolute: true,
37
36
  caseSensitiveMatch: false,
@@ -6,30 +6,30 @@
6
6
  */
7
7
  export type Pattern = string;
8
8
  export interface FastGlobOptions {
9
- absolute?: boolean;
10
- baseNameMatch?: boolean;
11
- braceExpansion?: boolean;
12
- caseSensitiveMatch?: boolean;
13
- concurrency?: number;
14
- cwd?: string;
15
- deep?: number;
16
- dot?: boolean;
17
- extglob?: boolean;
18
- followSymbolicLinks?: boolean;
19
- fs?: unknown;
20
- globstar?: boolean;
21
- ignore?: string[];
22
- ignoreFiles?: string[];
23
- markDirectories?: boolean;
24
- objectMode?: boolean;
25
- onlyDirectories?: boolean;
26
- onlyFiles?: boolean;
27
- stats?: boolean;
28
- suppressErrors?: boolean;
29
- throwErrorOnBrokenSymbolicLink?: boolean;
30
- unique?: boolean;
9
+ absolute?: boolean | undefined;
10
+ baseNameMatch?: boolean | undefined;
11
+ braceExpansion?: boolean | undefined;
12
+ caseSensitiveMatch?: boolean | undefined;
13
+ concurrency?: number | undefined;
14
+ cwd?: string | undefined;
15
+ deep?: number | undefined;
16
+ dot?: boolean | undefined;
17
+ extglob?: boolean | undefined;
18
+ followSymbolicLinks?: boolean | undefined;
19
+ fs?: unknown | undefined;
20
+ globstar?: boolean | undefined;
21
+ ignore?: string[] | undefined;
22
+ ignoreFiles?: string[] | undefined;
23
+ markDirectories?: boolean | undefined;
24
+ objectMode?: boolean | undefined;
25
+ onlyDirectories?: boolean | undefined;
26
+ onlyFiles?: boolean | undefined;
27
+ stats?: boolean | undefined;
28
+ suppressErrors?: boolean | undefined;
29
+ throwErrorOnBrokenSymbolicLink?: boolean | undefined;
30
+ unique?: boolean | undefined;
31
31
  }
32
32
  export interface GlobOptions extends FastGlobOptions {
33
- ignoreOriginals?: boolean;
34
- recursive?: boolean;
33
+ ignoreOriginals?: boolean | undefined;
34
+ recursive?: boolean | undefined;
35
35
  }
@@ -2,7 +2,7 @@
2
2
  * @file Private lazy loaders for the Node.js modules used by the
3
3
  * `http-request/*` leaves. The `_` prefix keeps this module out of the
4
4
  * generated package.json `exports` map (the `dist/**\/_*` ignore pattern in
5
- * `scripts/fix/generate-package-exports.mts` filters it out), so it is not
5
+ * `scripts/post-build/make-package-exports.mts` filters it out), so it is not
6
6
  * part of the public surface — it exists only as a re-export shim so existing
7
7
  * siblings keep working unchanged. New code should import the canonical
8
8
  * helpers directly:
@@ -1,7 +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_error = require('../primordials/error.js');
5
+ const require_primordials_math = require('../primordials/math.js');
6
+ const require_primordials_string = require('../primordials/string.js');
7
+ const require_primordials_array = require('../primordials/array.js');
8
+ const require_primordials_date = require('../primordials/date.js');
9
+ const require_primordials_json = require('../primordials/json.js');
10
+ const require_primordials_promise = require('../primordials/promise.js');
4
11
  const require_http_request_browser_fetch = require('./browser-fetch.js');
12
+ const require_primordials_headers = require('../primordials/headers.js');
5
13
 
6
14
  //#region src/http-request/browser.ts
7
15
  /**
@@ -75,7 +83,7 @@ async function attempt(url, options) {
75
83
  if (options.followRedirects === false) init.redirect = "manual";
76
84
  const { signal, cleanup } = combineSignals(options.signal, options.timeout);
77
85
  if (signal) init.signal = signal;
78
- const startedAt = Date.now();
86
+ const startedAt = require_primordials_date.DateNow();
79
87
  if (options.hooks?.onRequest) options.hooks.onRequest({
80
88
  method,
81
89
  url,
@@ -85,13 +93,13 @@ async function attempt(url, options) {
85
93
  try {
86
94
  const response = await require_http_request_browser_fetch.doFetch(url, init);
87
95
  const buffer = await response.arrayBuffer();
88
- if (options.maxResponseSize !== void 0 && buffer.byteLength > options.maxResponseSize) throw new Error(`Response body (${buffer.byteLength} bytes) exceeds maxResponseSize (${options.maxResponseSize})`);
89
- const body = new Uint8Array(buffer);
96
+ if (options.maxResponseSize !== void 0 && buffer.byteLength > options.maxResponseSize) throw new require_primordials_error.ErrorCtor(`Response body (${buffer.byteLength} bytes) exceeds maxResponseSize (${options.maxResponseSize})`);
97
+ const body = new require_primordials_array.Uint8ArrayCtor(buffer);
90
98
  const headers = headersToRecord(response.headers);
91
99
  if (options.hooks?.onResponse) options.hooks.onResponse({
92
100
  method,
93
101
  url,
94
- duration: Date.now() - startedAt,
102
+ duration: require_primordials_date.DateNow() - startedAt,
95
103
  status: response.status,
96
104
  statusText: response.statusText,
97
105
  headers
@@ -110,15 +118,15 @@ async function attempt(url, options) {
110
118
  return decodeText(body);
111
119
  },
112
120
  json() {
113
- return JSON.parse(decodeText(body));
121
+ return require_primordials_json.JSONParse(decodeText(body));
114
122
  }
115
123
  };
116
124
  } catch (err) {
117
125
  if (options.hooks?.onResponse) options.hooks.onResponse({
118
126
  method,
119
127
  url,
120
- duration: Date.now() - startedAt,
121
- error: err instanceof Error ? err : new Error(String(err))
128
+ duration: require_primordials_date.DateNow() - startedAt,
129
+ error: err instanceof Error ? err : new require_primordials_error.ErrorCtor(String(err))
122
130
  });
123
131
  throw err;
124
132
  } finally {
@@ -130,8 +138,8 @@ function decodeText(bytes) {
130
138
  }
131
139
  function headersToRecord(headers) {
132
140
  const out = {};
133
- headers.forEach((value, key) => {
134
- out[key.toLowerCase()] = value;
141
+ require_primordials_headers.HeadersPrototypeForEach(headers, (value, key) => {
142
+ out[require_primordials_string.StringPrototypeToLowerCase(key)] = value;
135
143
  });
136
144
  return out;
137
145
  }
@@ -166,7 +174,7 @@ async function httpRequest(url, options) {
166
174
  for (let i = 0; i < maxAttempts; i++) try {
167
175
  const response = await attempt(url, opts);
168
176
  if (response.status >= 500 && i + 1 < maxAttempts) {
169
- await sleep(baseDelay * Math.pow(2, i));
177
+ await sleep(baseDelay * require_primordials_math.MathPow(2, i));
170
178
  continue;
171
179
  }
172
180
  if (opts.throwOnError && !response.ok) throw new HttpResponseError(response);
@@ -175,11 +183,11 @@ async function httpRequest(url, options) {
175
183
  lastError = err;
176
184
  if (err instanceof HttpResponseError) throw err;
177
185
  if (i + 1 < maxAttempts) {
178
- await sleep(baseDelay * Math.pow(2, i));
186
+ await sleep(baseDelay * require_primordials_math.MathPow(2, i));
179
187
  continue;
180
188
  }
181
189
  }
182
- throw lastError instanceof Error ? lastError : /* @__PURE__ */ new Error(`HTTP request to ${url} failed`);
190
+ throw lastError instanceof Error ? lastError : new require_primordials_error.ErrorCtor(`HTTP request to ${url} failed`);
183
191
  }
184
192
  /**
185
193
  * GET / POST a text endpoint. Throws `HttpResponseError` on non-2xx.
@@ -191,7 +199,7 @@ async function httpText(url, options) {
191
199
  })).text();
192
200
  }
193
201
  function sleep(ms) {
194
- return new Promise((resolve) => setTimeout(resolve, ms));
202
+ return new require_primordials_promise.PromiseCtor((resolve) => setTimeout(resolve, ms));
195
203
  }
196
204
 
197
205
  //#endregion
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @file Checksum file fetching + parsing for download verification.
3
+ * `parseChecksumFile` understands the three common text-file shapes:
4
+ *
5
+ * - BSD style: `SHA256 (filename) = hash`
6
+ * - GNU style: `hash filename` (two spaces)
7
+ * - Simple: `hash filename` (single space) Comment lines (`#…`) and blank lines
8
+ * are skipped. Each hex digest is converted to an SRI integrity string
9
+ * (`sha256-<base64>=`) so callers always work in the same format as
10
+ * `external-tools.json` and other integrity-string consumers.
11
+ * `fetchChecksumFile` is the URL helper — fetches via `httpRequest` and
12
+ * runs the body through `parseChecksumFile`.
13
+ */
14
+ import type { ChecksumFile, FetchChecksumFileOptions } from './download-types';
15
+ /**
16
+ * Fetch and parse a checksums file from a URL.
17
+ *
18
+ * Returns a map of filenames to SRI integrity strings (`sha256-<base64>=`).
19
+ * Feed `httpDownload({ sha256 })` by converting back to hex via
20
+ * `integrityToChecksum()`; pass the SRI string through verbatim to consumers
21
+ * that accept SRI directly.
22
+ *
23
+ * @example
24
+ * ;```ts
25
+ * import { integrityToChecksum } from '@socketsecurity/lib/integrity'
26
+ *
27
+ * const sums = await fetchChecksumFile(
28
+ * 'https://github.com/org/repo/releases/download/v1.0.0/checksums.txt',
29
+ * )
30
+ * await httpDownload(url, '/tmp/tool.tar.gz', {
31
+ * sha256: integrityToChecksum(sums['tool_linux.tar.gz']!),
32
+ * })
33
+ * ```
34
+ */
35
+ export declare function fetchChecksumFile(url: string, options?: FetchChecksumFileOptions | undefined): Promise<ChecksumFile>;
36
+ /**
37
+ * Parse a checksums file text into a filename-to-integrity map.
38
+ *
39
+ * Supports standard checksums file formats: - BSD style: `SHA256 (filename) =
40
+ * hash` - GNU style: `hash filename` (two spaces) - Simple style: `hash
41
+ * filename` (single space)
42
+ *
43
+ * Lines starting with `#` are treated as comments and ignored. Empty lines are
44
+ * ignored. Each 64-char hex digest is converted to an SRI integrity string so
45
+ * the result is uniform regardless of source format.
46
+ *
47
+ * @example
48
+ * ;```ts
49
+ * const sums = parseChecksumFile(
50
+ * 'e3b0c44... file.zip\nSHA256 (other.tar.gz) = abc123...\n',
51
+ * )
52
+ * // sums['file.zip'] === 'sha256-47DEQpj8HBSa+/...'
53
+ * ```
54
+ */
55
+ export declare function parseChecksumFile(text: string): ChecksumFile;
@@ -0,0 +1,95 @@
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
+ const require_integrity = require('../integrity.js');
6
+ const require_primordials_string = require('../primordials/string.js');
7
+ const require_http_request_request = require('./request.js');
8
+
9
+ //#region src/http-request/checksum-file.ts
10
+ /**
11
+ * @file Checksum file fetching + parsing for download verification.
12
+ * `parseChecksumFile` understands the three common text-file shapes:
13
+ *
14
+ * - BSD style: `SHA256 (filename) = hash`
15
+ * - GNU style: `hash filename` (two spaces)
16
+ * - Simple: `hash filename` (single space) Comment lines (`#…`) and blank lines
17
+ * are skipped. Each hex digest is converted to an SRI integrity string
18
+ * (`sha256-<base64>=`) so callers always work in the same format as
19
+ * `external-tools.json` and other integrity-string consumers.
20
+ * `fetchChecksumFile` is the URL helper — fetches via `httpRequest` and
21
+ * runs the body through `parseChecksumFile`.
22
+ */
23
+ const CHECKSUM_BSD_RE = /^SHA256\s+\((.+)\)\s+=\s+([a-fA-F0-9]{64})$/;
24
+ const CHECKSUM_GNU_RE = /^([a-fA-F0-9]{64})\s+(.+)$/;
25
+ /**
26
+ * Fetch and parse a checksums file from a URL.
27
+ *
28
+ * Returns a map of filenames to SRI integrity strings (`sha256-<base64>=`).
29
+ * Feed `httpDownload({ sha256 })` by converting back to hex via
30
+ * `integrityToChecksum()`; pass the SRI string through verbatim to consumers
31
+ * that accept SRI directly.
32
+ *
33
+ * @example
34
+ * ;```ts
35
+ * import { integrityToChecksum } from '@socketsecurity/lib/integrity'
36
+ *
37
+ * const sums = await fetchChecksumFile(
38
+ * 'https://github.com/org/repo/releases/download/v1.0.0/checksums.txt',
39
+ * )
40
+ * await httpDownload(url, '/tmp/tool.tar.gz', {
41
+ * sha256: integrityToChecksum(sums['tool_linux.tar.gz']!),
42
+ * })
43
+ * ```
44
+ */
45
+ async function fetchChecksumFile(url, options) {
46
+ const { ca, headers = {}, timeout = 3e4 } = {
47
+ __proto__: null,
48
+ ...options
49
+ };
50
+ const response = await require_http_request_request.httpRequest(url, {
51
+ ca,
52
+ headers,
53
+ timeout
54
+ });
55
+ if (!response.ok) throw new require_primordials_error.ErrorCtor(`Failed to fetch checksums from ${url}: ${response.status} ${response.statusText}`);
56
+ return parseChecksumFile(response.body.toString("utf8"));
57
+ }
58
+ /**
59
+ * Parse a checksums file text into a filename-to-integrity map.
60
+ *
61
+ * Supports standard checksums file formats: - BSD style: `SHA256 (filename) =
62
+ * hash` - GNU style: `hash filename` (two spaces) - Simple style: `hash
63
+ * filename` (single space)
64
+ *
65
+ * Lines starting with `#` are treated as comments and ignored. Empty lines are
66
+ * ignored. Each 64-char hex digest is converted to an SRI integrity string so
67
+ * the result is uniform regardless of source format.
68
+ *
69
+ * @example
70
+ * ;```ts
71
+ * const sums = parseChecksumFile(
72
+ * 'e3b0c44... file.zip\nSHA256 (other.tar.gz) = abc123...\n',
73
+ * )
74
+ * // sums['file.zip'] === 'sha256-47DEQpj8HBSa+/...'
75
+ * ```
76
+ */
77
+ function parseChecksumFile(text) {
78
+ const result = { __proto__: null };
79
+ for (const line of require_primordials_string.StringPrototypeSplit(text, "\n")) {
80
+ const trimmed = line.trim();
81
+ if (!trimmed || require_primordials_string.StringPrototypeStartsWith(trimmed, "#")) continue;
82
+ const bsdMatch = CHECKSUM_BSD_RE.exec(trimmed);
83
+ if (bsdMatch) {
84
+ result[bsdMatch[1]] = require_integrity.checksumToIntegrity(bsdMatch[2].toLowerCase());
85
+ continue;
86
+ }
87
+ const gnuMatch = CHECKSUM_GNU_RE.exec(trimmed);
88
+ if (gnuMatch) result[gnuMatch[2]] = require_integrity.checksumToIntegrity(gnuMatch[1].toLowerCase());
89
+ }
90
+ return result;
91
+ }
92
+
93
+ //#endregion
94
+ exports.fetchChecksumFile = fetchChecksumFile;
95
+ exports.parseChecksumFile = parseChecksumFile;
@@ -3,7 +3,7 @@
3
3
  * `http-request/types.ts` for size hygiene.
4
4
  *
5
5
  * - `HttpDownloadOptions` / `HttpDownloadResult` — file-download surface
6
- * - `Checksums` / `FetchChecksumsOptions` — checksum-file helpers
6
+ * - `ChecksumFile` / `FetchChecksumFileOptions` — checksum-file helpers
7
7
  */
8
8
  import type { IncomingHttpHeaders } from 'node:http';
9
9
  import type { Logger } from '../logger/node';
@@ -136,23 +136,14 @@ export interface HttpDownloadOptions {
136
136
  * fail if the computed hash doesn't match. The hash should be a lowercase hex
137
137
  * string (64 characters).
138
138
  *
139
- * Use `fetchChecksums()` to fetch hashes from a checksums URL, then pass the
140
- * specific hash here.
139
+ * Pair with `fetchChecksumFile()` + `integrityToChecksum()` when working from
140
+ * a checksums URL, since `fetchChecksumFile()` returns SRI strings.
141
141
  *
142
142
  * @example
143
143
  * ;```ts
144
- * // Verify download integrity with direct hash
144
+ * // Verify download with a sha256 hex digest
145
145
  * await httpDownload('https://example.com/file.zip', '/tmp/file.zip', {
146
- * sha256:
147
- * 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
148
- * })
149
- *
150
- * // Verify using checksums from a URL
151
- * const checksums = await fetchChecksums(
152
- * 'https://example.com/checksums.txt',
153
- * )
154
- * await httpDownload('https://example.com/file.zip', '/tmp/file.zip', {
155
- * sha256: checksums['file.zip'],
146
+ * sha256: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
156
147
  * })
157
148
  * ```
158
149
  */
@@ -189,23 +180,24 @@ export interface HttpDownloadResult {
189
180
  statusText: string;
190
181
  }
191
182
  /**
192
- * Map of filenames to their SHA256 hashes. Keys are filenames (not paths),
193
- * values are lowercase hex-encoded SHA256 hashes.
183
+ * Map of filenames to SRI integrity strings (`sha256-<base64>=`). Returned by
184
+ * `parseChecksumFile` / `fetchChecksumFile`. Pass through
185
+ * `integrityToChecksum()` to feed `httpDownload({ sha256 })`, or pass the SRI
186
+ * string directly to consumers that accept SRI.
194
187
  *
195
188
  * @example
196
189
  * ;```ts
197
- * const checksums: Checksums = {
198
- * 'file.zip':
199
- * 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
200
- * 'other.tar.gz': 'abc123...',
190
+ * const sums: ChecksumFile = {
191
+ * 'file.zip': 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=',
192
+ * 'other.tar.gz': 'sha256-...',
201
193
  * }
202
194
  * ```
203
195
  */
204
- export type Checksums = Record<string, string>;
196
+ export type ChecksumFile = Record<string, string>;
205
197
  /**
206
- * Options for fetching checksums from a URL.
198
+ * Options for fetching a checksum file from a URL.
207
199
  */
208
- export interface FetchChecksumsOptions {
200
+ export interface FetchChecksumFileOptions {
209
201
  /**
210
202
  * Custom CA certificates for TLS connections. See `HttpRequestOptions.ca` for
211
203
  * details.