@socketsecurity/lib 6.0.6 → 6.0.8

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 (619) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/README.md +1 -1
  3. package/dist/ai/agent-context.d.mts +103 -0
  4. package/dist/ai/agent-context.js +157 -0
  5. package/dist/ai/backends.d.mts +83 -0
  6. package/dist/ai/backends.js +173 -0
  7. package/dist/ai/credentials.d.mts +49 -0
  8. package/dist/ai/credentials.js +82 -0
  9. package/dist/ai/discover.d.mts +6 -2
  10. package/dist/ai/discover.js +4 -3
  11. package/dist/ai/exec.d.mts +52 -0
  12. package/dist/ai/exec.js +92 -0
  13. package/dist/ai/http.d.mts +132 -0
  14. package/dist/ai/http.js +130 -0
  15. package/dist/ai/profiles.d.mts +41 -6
  16. package/dist/ai/profiles.js +52 -10
  17. package/dist/ai/route.d.mts +69 -0
  18. package/dist/ai/route.js +156 -0
  19. package/dist/ai/spawn.d.mts +10 -2
  20. package/dist/ai/spawn.js +56 -31
  21. package/dist/ai/subagent-status.d.mts +48 -0
  22. package/dist/ai/subagent-status.js +57 -0
  23. package/dist/ai/tier.d.mts +60 -0
  24. package/dist/ai/tier.js +53 -0
  25. package/dist/ai/types.d.mts +31 -6
  26. package/dist/ai/worktree.d.mts +6 -6
  27. package/dist/ai/worktree.js +5 -1
  28. package/dist/ansi/strip.d.ts +1 -1
  29. package/dist/ansi/strip.js +0 -2
  30. package/dist/archives/_internal.js +7 -9
  31. package/dist/archives/extract.js +1 -1
  32. package/dist/archives/tar.js +7 -7
  33. package/dist/archives/zip.js +5 -7
  34. package/dist/argv/flag-predicates.d.ts +12 -12
  35. package/dist/argv/flag-predicates.js +17 -17
  36. package/dist/argv/flag-types.d.ts +18 -18
  37. package/dist/argv/flag-types.js +4 -4
  38. package/dist/argv/parse.d.ts +20 -3
  39. package/dist/argv/parse.js +1 -1
  40. package/dist/arrays/_internal.js +11 -12
  41. package/dist/arrays/chunk.js +0 -1
  42. package/dist/arrays/join.d.ts +37 -3
  43. package/dist/arrays/join.js +47 -7
  44. package/dist/arrays/unique.js +0 -1
  45. package/dist/bin/_internal.d.ts +1 -1
  46. package/dist/bin/_internal.js +1 -1
  47. package/dist/bin/exec.js +2 -3
  48. package/dist/bin/find.js +17 -17
  49. package/dist/bin/prim.cjs +36175 -35861
  50. package/dist/bin/resolve.js +13 -14
  51. package/dist/bin/which.js +8 -8
  52. package/dist/cache/ttl/store.js +6 -6
  53. package/dist/checks/primordials-defaults.d.ts +3 -3
  54. package/dist/checks/primordials-defaults.js +3 -3
  55. package/dist/checks/primordials.js +4 -3
  56. package/dist/{bin → cli}/check-primordials.d.ts +18 -13
  57. package/dist/{bin → cli}/check-primordials.js +58 -55
  58. package/dist/{bin → cli}/check.js +3 -3
  59. package/dist/{bin → cli}/socket-lib.d.ts +1 -1
  60. package/dist/{bin → cli}/socket-lib.js +4 -4
  61. package/dist/colors/socket-palette.js +7 -9
  62. package/dist/compression/_internal.d.ts +12 -12
  63. package/dist/compression/_internal.js +18 -18
  64. package/dist/compression/brotli.d.ts +26 -27
  65. package/dist/compression/brotli.js +39 -35
  66. package/dist/compression/gzip.d.ts +23 -23
  67. package/dist/compression/gzip.js +46 -42
  68. package/dist/constants/agents.d.ts +3 -1
  69. package/dist/constants/agents.js +15 -11
  70. package/dist/constants/licenses.js +3 -3
  71. package/dist/constants/node.d.ts +23 -0
  72. package/dist/constants/node.js +47 -15
  73. package/dist/constants/packages.d.ts +3 -0
  74. package/dist/constants/packages.js +24 -29
  75. package/dist/constants/platform.d.ts +30 -3
  76. package/dist/constants/platform.js +72 -12
  77. package/dist/constants/runtime.d.ts +22 -0
  78. package/dist/constants/runtime.js +32 -0
  79. package/dist/constants/socket.d.ts +2 -6
  80. package/dist/constants/socket.js +12 -14
  81. package/dist/cover/code.js +10 -10
  82. package/dist/cover/formatters.js +5 -5
  83. package/dist/crypto/hash.d.ts +30 -2
  84. package/dist/crypto/hash.js +47 -13
  85. package/dist/debug/_internal.js +4 -6
  86. package/dist/debug/caller-info.js +3 -4
  87. package/dist/debug/namespace.d.ts +7 -0
  88. package/dist/debug/namespace.js +21 -12
  89. package/dist/debug/output.js +21 -24
  90. package/dist/debug/types.d.ts +4 -4
  91. package/dist/dlx/arborist.js +18 -8
  92. package/dist/dlx/binary-cache.js +15 -15
  93. package/dist/dlx/binary-download.d.ts +1 -1
  94. package/dist/dlx/binary-download.js +11 -11
  95. package/dist/dlx/binary-resolution.js +17 -15
  96. package/dist/dlx/binary-types.d.ts +5 -5
  97. package/dist/dlx/binary.js +5 -5
  98. package/dist/dlx/cache.js +1 -1
  99. package/dist/dlx/detect.d.ts +42 -25
  100. package/dist/dlx/detect.js +86 -77
  101. package/dist/dlx/dir.js +2 -2
  102. package/dist/dlx/firewall.d.ts +9 -1
  103. package/dist/dlx/firewall.js +1 -1
  104. package/dist/dlx/lockfile.d.ts +19 -18
  105. package/dist/dlx/lockfile.js +19 -16
  106. package/dist/dlx/manifest.d.ts +6 -6
  107. package/dist/dlx/manifest.js +5 -5
  108. package/dist/dlx/package.d.ts +10 -10
  109. package/dist/dlx/package.js +20 -16
  110. package/dist/dlx/packages.js +4 -4
  111. package/dist/dlx/paths.js +7 -7
  112. package/dist/dlx/spec.js +1 -1
  113. package/dist/dlx/types.d.ts +28 -27
  114. package/dist/eco/cargo/parse-lockfile.d.ts +2 -3
  115. package/dist/eco/cargo/parse-lockfile.js +5 -5
  116. package/dist/eco/manifest/analyze-lockfile.js +2 -2
  117. package/dist/eco/manifest/detect-format.js +5 -5
  118. package/dist/eco/manifest/find-packages.js +2 -2
  119. package/dist/eco/manifest/get-package-versions.js +2 -2
  120. package/dist/eco/manifest/get-package.js +2 -2
  121. package/dist/eco/manifest/parse-lockfile.js +2 -2
  122. package/dist/eco/manifest/parse-manifest.js +2 -2
  123. package/dist/eco/manifest/parse.js +2 -2
  124. package/dist/eco/npm/npm/exec.js +2 -2
  125. package/dist/eco/npm/npm/flags.js +7 -12
  126. package/dist/eco/npm/npm/parse-lockfile.d.ts +17 -18
  127. package/dist/eco/npm/npm/parse-lockfile.js +4 -4
  128. package/dist/eco/npm/parse-package-json.d.ts +11 -0
  129. package/dist/eco/npm/parse-package-json.js +3 -3
  130. package/dist/eco/npm/pnpm/exec.d.ts +1 -1
  131. package/dist/eco/npm/pnpm/exec.js +5 -5
  132. package/dist/eco/npm/pnpm/flags.js +0 -3
  133. package/dist/eco/npm/pnpm/parse-lockfile.d.ts +6 -4
  134. package/dist/eco/npm/pnpm/parse-lockfile.js +7 -7
  135. package/dist/eco/npm/script.js +9 -6
  136. package/dist/eco/npm/yarnpkg/yarn/exec.js +4 -4
  137. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.d.ts +3 -4
  138. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +9 -9
  139. package/dist/effects/pulse-frames.d.ts +3 -1
  140. package/dist/effects/shimmer-keyframes.d.ts +1 -1
  141. package/dist/effects/shimmer-terminal.d.ts +1 -1
  142. package/dist/env/boolean.js +0 -1
  143. package/dist/env/ci.js +0 -1
  144. package/dist/env/debug.js +0 -1
  145. package/dist/env/github-status.d.ts +51 -0
  146. package/dist/env/github-status.js +90 -0
  147. package/dist/env/github.js +0 -8
  148. package/dist/env/home.js +0 -1
  149. package/dist/env/locale.js +0 -3
  150. package/dist/env/node-auth-token.js +0 -1
  151. package/dist/env/node-env.js +0 -1
  152. package/dist/env/node-version-managers.d.ts +53 -0
  153. package/dist/env/node-version-managers.js +90 -0
  154. package/dist/env/npm.js +0 -5
  155. package/dist/env/number.js +0 -1
  156. package/dist/env/package-manager.js +3 -6
  157. package/dist/env/path.js +0 -1
  158. package/dist/env/pre-commit.js +1 -2
  159. package/dist/env/proxy.js +1 -1
  160. package/dist/env/rewire.d.ts +8 -6
  161. package/dist/env/rewire.js +16 -17
  162. package/dist/env/shell.js +0 -1
  163. package/dist/env/socket-cli.js +5 -18
  164. package/dist/env/socket-mcp.d.ts +114 -0
  165. package/dist/env/socket-mcp.js +146 -0
  166. package/dist/env/socket.d.ts +8 -109
  167. package/dist/env/socket.js +22 -167
  168. package/dist/env/string.js +0 -1
  169. package/dist/env/temp-dir.js +0 -3
  170. package/dist/env/term.js +0 -1
  171. package/dist/env/test.js +3 -6
  172. package/dist/env/windows.js +0 -4
  173. package/dist/env/xdg.js +0 -3
  174. package/dist/errors/predicates.js +1 -1
  175. package/dist/events/exit/_internal.d.ts +11 -9
  176. package/dist/events/exit/_internal.js +31 -35
  177. package/dist/events/exit/handler.js +3 -4
  178. package/dist/events/exit/intercept.js +4 -6
  179. package/dist/events/exit/lifecycle.js +16 -18
  180. package/dist/events/exit/signals.js +1 -2
  181. package/dist/events/exit/types.d.ts +6 -5
  182. package/dist/external/@npmcli/package-json.js +2 -2
  183. package/dist/external/@npmcli/promise-spawn.js +3 -1
  184. package/dist/external/npm-pack.js +2 -2
  185. package/dist/external/pico-pack.js +4 -2
  186. package/dist/external/which.js +3 -1
  187. package/dist/external-tools/bazel/asset-names.d.ts +1 -1
  188. package/dist/external-tools/bazel/asset-names.js +5 -2
  189. package/dist/external-tools/bazel/from-download.d.ts +1 -1
  190. package/dist/external-tools/bazel/from-download.js +5 -2
  191. package/dist/external-tools/bazel/read-bazel-version-file.js +1 -1
  192. package/dist/external-tools/bazel/resolve-bazel-version.js +4 -0
  193. package/dist/external-tools/bazel/resolve.d.ts +3 -3
  194. package/dist/external-tools/bazel/resolve.js +16 -8
  195. package/dist/external-tools/bazel/types.d.ts +1 -1
  196. package/dist/external-tools/cdxgen/asset-names.d.ts +1 -1
  197. package/dist/external-tools/cdxgen/asset-names.js +5 -2
  198. package/dist/external-tools/cdxgen/from-download.d.ts +1 -1
  199. package/dist/external-tools/cdxgen/from-download.js +7 -4
  200. package/dist/external-tools/cdxgen/from-vfs.js +1 -1
  201. package/dist/external-tools/cdxgen/resolve.d.ts +3 -3
  202. package/dist/external-tools/cdxgen/resolve.js +16 -8
  203. package/dist/external-tools/cdxgen/types.d.ts +1 -1
  204. package/dist/external-tools/from-download.d.ts +3 -3
  205. package/dist/external-tools/from-download.js +12 -6
  206. package/dist/external-tools/from-pip-venv.d.ts +1 -1
  207. package/dist/external-tools/from-pip-venv.js +12 -5
  208. package/dist/external-tools/janus/asset-names.d.ts +1 -1
  209. package/dist/external-tools/janus/asset-names.js +5 -2
  210. package/dist/external-tools/janus/from-download.d.ts +1 -1
  211. package/dist/external-tools/janus/from-download.js +5 -2
  212. package/dist/external-tools/janus/from-vfs.js +1 -1
  213. package/dist/external-tools/janus/resolve.d.ts +3 -3
  214. package/dist/external-tools/janus/resolve.js +16 -8
  215. package/dist/external-tools/janus/types.d.ts +1 -1
  216. package/dist/external-tools/jre/asset-names.d.ts +1 -1
  217. package/dist/external-tools/jre/asset-names.js +5 -2
  218. package/dist/external-tools/jre/detect-platform-arch.d.ts +10 -6
  219. package/dist/external-tools/jre/detect-platform-arch.js +29 -14
  220. package/dist/external-tools/jre/from-download.d.ts +1 -1
  221. package/dist/external-tools/jre/from-download.js +7 -4
  222. package/dist/external-tools/jre/from-java-home.js +2 -2
  223. package/dist/external-tools/jre/from-vfs.js +3 -3
  224. package/dist/external-tools/jre/resolve.d.ts +3 -3
  225. package/dist/external-tools/jre/resolve.js +16 -8
  226. package/dist/external-tools/jre/types.d.ts +1 -1
  227. package/dist/external-tools/manifest.d.ts +25 -7
  228. package/dist/external-tools/manifest.js +13 -13
  229. package/dist/external-tools/opengrep/asset-names.d.ts +1 -1
  230. package/dist/external-tools/opengrep/asset-names.js +5 -2
  231. package/dist/external-tools/opengrep/from-download.d.ts +1 -1
  232. package/dist/external-tools/opengrep/from-download.js +5 -2
  233. package/dist/external-tools/opengrep/from-vfs.js +1 -1
  234. package/dist/external-tools/opengrep/resolve.d.ts +3 -3
  235. package/dist/external-tools/opengrep/resolve.js +16 -8
  236. package/dist/external-tools/opengrep/types.d.ts +1 -1
  237. package/dist/external-tools/python/asset-names.d.ts +76 -0
  238. package/dist/external-tools/python/asset-names.js +111 -0
  239. package/dist/external-tools/python/dlx.d.ts +80 -0
  240. package/dist/external-tools/python/dlx.js +98 -0
  241. package/dist/external-tools/python/from-download.d.ts +53 -0
  242. package/dist/external-tools/python/from-download.js +75 -0
  243. package/dist/external-tools/python/from-path.d.ts +7 -0
  244. package/dist/external-tools/python/from-path.js +23 -0
  245. package/dist/external-tools/python/pin.d.ts +121 -0
  246. package/dist/external-tools/python/pin.js +176 -0
  247. package/dist/external-tools/python/pip-install.d.ts +75 -0
  248. package/dist/external-tools/python/pip-install.js +142 -0
  249. package/dist/external-tools/python/resolve.d.ts +42 -0
  250. package/dist/external-tools/python/resolve.js +66 -0
  251. package/dist/external-tools/python/types.d.ts +49 -0
  252. package/dist/external-tools/sbt/asset-names.d.ts +1 -1
  253. package/dist/external-tools/sbt/asset-names.js +5 -2
  254. package/dist/external-tools/sbt/from-download.d.ts +1 -1
  255. package/dist/external-tools/sbt/from-download.js +5 -2
  256. package/dist/external-tools/sbt/from-vfs.js +1 -1
  257. package/dist/external-tools/sbt/resolve.d.ts +3 -3
  258. package/dist/external-tools/sbt/resolve.js +16 -8
  259. package/dist/external-tools/sbt/types.d.ts +1 -1
  260. package/dist/external-tools/skillspector/from-dlx.d.ts +1 -1
  261. package/dist/external-tools/skillspector/from-dlx.js +10 -3
  262. package/dist/external-tools/skillspector/from-path.js +3 -5
  263. package/dist/external-tools/skillspector/from-vfs.js +1 -1
  264. package/dist/external-tools/skillspector/resolve.d.ts +2 -2
  265. package/dist/external-tools/skillspector/resolve.js +14 -6
  266. package/dist/external-tools/synp/asset-names.d.ts +1 -1
  267. package/dist/external-tools/synp/asset-names.js +6 -2
  268. package/dist/external-tools/synp/from-download.d.ts +1 -1
  269. package/dist/external-tools/synp/from-download.js +7 -4
  270. package/dist/external-tools/synp/from-vfs.js +1 -1
  271. package/dist/external-tools/synp/resolve.d.ts +3 -3
  272. package/dist/external-tools/synp/resolve.js +16 -8
  273. package/dist/external-tools/trivy/asset-names.d.ts +1 -1
  274. package/dist/external-tools/trivy/asset-names.js +5 -2
  275. package/dist/external-tools/trivy/from-download.d.ts +1 -1
  276. package/dist/external-tools/trivy/from-download.js +7 -4
  277. package/dist/external-tools/trivy/from-vfs.js +1 -1
  278. package/dist/external-tools/trivy/resolve.d.ts +3 -3
  279. package/dist/external-tools/trivy/resolve.js +16 -8
  280. package/dist/external-tools/trivy/types.d.ts +1 -1
  281. package/dist/external-tools/trufflehog/asset-names.d.ts +1 -1
  282. package/dist/external-tools/trufflehog/asset-names.js +5 -2
  283. package/dist/external-tools/trufflehog/from-download.d.ts +1 -1
  284. package/dist/external-tools/trufflehog/from-download.js +7 -4
  285. package/dist/external-tools/trufflehog/from-vfs.js +1 -1
  286. package/dist/external-tools/trufflehog/resolve.d.ts +3 -3
  287. package/dist/external-tools/trufflehog/resolve.js +16 -8
  288. package/dist/external-tools/trufflehog/types.d.ts +1 -1
  289. package/dist/fs/_internal.d.ts +1 -1
  290. package/dist/fs/_internal.js +7 -7
  291. package/dist/fs/access.js +5 -9
  292. package/dist/fs/allowed-dirs-cache.d.ts +47 -0
  293. package/dist/fs/allowed-dirs-cache.js +69 -0
  294. package/dist/fs/encoding.js +5 -7
  295. package/dist/fs/{find-up.js → find.js} +12 -14
  296. package/dist/fs/inspect.js +7 -13
  297. package/dist/fs/read-dir.js +7 -10
  298. package/dist/fs/read-file.js +8 -14
  299. package/dist/fs/read-json-cache.d.ts +13 -4
  300. package/dist/fs/read-json-cache.js +9 -6
  301. package/dist/fs/read-json.js +4 -6
  302. package/dist/fs/resolve-module.js +7 -3
  303. package/dist/fs/safe.d.ts +1 -1
  304. package/dist/fs/safe.js +13 -14
  305. package/dist/fs/unique.js +4 -5
  306. package/dist/fs/validate.js +1 -2
  307. package/dist/fs/write-json.js +4 -5
  308. package/dist/git/_internal.js +11 -11
  309. package/dist/git/changed.js +4 -4
  310. package/dist/git/repo.js +5 -7
  311. package/dist/git/staged.js +12 -4
  312. package/dist/git/tracked.d.ts +84 -0
  313. package/dist/git/tracked.js +163 -0
  314. package/dist/git/unstaged.js +12 -4
  315. package/dist/github/ghsa.js +2 -2
  316. package/dist/github/refs-cache.d.ts +1 -1
  317. package/dist/github/refs-cache.js +5 -5
  318. package/dist/github/refs-graphql.js +4 -0
  319. package/dist/github/refs-rest.js +9 -5
  320. package/dist/github/refs.js +15 -10
  321. package/dist/github/{fetch.js → request.js} +13 -2
  322. package/dist/github/token.js +1 -1
  323. package/dist/github/types.d.ts +1 -1
  324. package/dist/globs/_internal.js +8 -10
  325. package/dist/globs/match.js +13 -7
  326. package/dist/globs/matcher.d.ts +3 -3
  327. package/dist/globs/matcher.js +16 -14
  328. package/dist/globs/stream.js +1 -2
  329. package/dist/globs/types.d.ts +24 -24
  330. package/dist/http-request/_internal.d.ts +1 -1
  331. package/dist/http-request/browser.js +10 -4
  332. package/dist/http-request/checksum-file.d.ts +55 -0
  333. package/dist/http-request/checksum-file.js +95 -0
  334. package/dist/http-request/download-types.d.ts +15 -23
  335. package/dist/http-request/download.js +3 -3
  336. package/dist/http-request/{browser-fetch.d.ts → fetch/browser.d.ts} +2 -2
  337. package/dist/http-request/{browser-fetch.js → fetch/browser.js} +4 -4
  338. package/dist/http-request/headers.js +1 -2
  339. package/dist/http-request/request-attempt.js +38 -34
  340. package/dist/http-request/request-types.d.ts +2 -2
  341. package/dist/http-request/request.js +1 -1
  342. package/dist/http-request/user-agent.js +4 -5
  343. package/dist/integrity.d.ts +92 -18
  344. package/dist/integrity.js +125 -30
  345. package/dist/ipc/directory.js +2 -2
  346. package/dist/ipc/paths.js +1 -1
  347. package/dist/ipc/write.js +1 -1
  348. package/dist/ipc-cli/get.js +12 -12
  349. package/dist/json/edit.js +51 -44
  350. package/dist/json/format.js +1 -1
  351. package/dist/json/parse.d.ts +1 -1
  352. package/dist/json/parse.js +3 -7
  353. package/dist/logger/_internal.d.ts +4 -4
  354. package/dist/logger/_internal.js +3 -3
  355. package/dist/logger/colors.js +4 -3
  356. package/dist/logger/console-methods.d.ts +132 -0
  357. package/dist/logger/console-methods.js +169 -0
  358. package/dist/logger/console.d.ts +12 -0
  359. package/dist/logger/console.js +42 -11
  360. package/dist/logger/indentation-methods.d.ts +81 -0
  361. package/dist/logger/indentation-methods.js +121 -0
  362. package/dist/logger/node.d.ts +16 -338
  363. package/dist/logger/node.js +75 -608
  364. package/dist/logger/options.d.ts +39 -0
  365. package/dist/logger/options.js +47 -0
  366. package/dist/logger/semantic-methods.d.ts +63 -0
  367. package/dist/logger/semantic-methods.js +108 -0
  368. package/dist/logger/stream-methods.d.ts +63 -0
  369. package/dist/logger/stream-methods.js +101 -0
  370. package/dist/logger/stream.d.ts +37 -0
  371. package/dist/logger/stream.js +42 -0
  372. package/dist/logger/symbols-builder.js +9 -9
  373. package/dist/logger/symbols.d.ts +2 -25
  374. package/dist/logger/symbols.js +53 -74
  375. package/dist/logger/types.d.ts +1 -1
  376. package/dist/memo/types.d.ts +6 -6
  377. package/dist/native-messaging/host.d.ts +20 -0
  378. package/dist/native-messaging/host.js +120 -0
  379. package/dist/native-messaging/index.d.ts +5 -0
  380. package/dist/native-messaging/index.js +22 -0
  381. package/dist/native-messaging/install.d.ts +60 -0
  382. package/dist/native-messaging/install.js +144 -0
  383. package/dist/native-messaging/rate-limit.d.ts +69 -0
  384. package/dist/native-messaging/rate-limit.js +119 -0
  385. package/dist/native-messaging/run.d.ts +10 -0
  386. package/dist/native-messaging/run.js +17 -0
  387. package/dist/node/async-hooks.js +4 -3
  388. package/dist/node/child-process.js +4 -3
  389. package/dist/node/crypto.js +4 -3
  390. package/dist/node/events.js +4 -3
  391. package/dist/node/fs-promises.js +4 -3
  392. package/dist/node/fs.d.ts +22 -6
  393. package/dist/node/fs.js +17 -3
  394. package/dist/node/http.js +4 -3
  395. package/dist/node/https.js +4 -3
  396. package/dist/node/module.js +10 -6
  397. package/dist/node/os.d.ts +10 -2
  398. package/dist/node/os.js +12 -4
  399. package/dist/node/path.d.ts +11 -2
  400. package/dist/node/path.js +18 -4
  401. package/dist/node/timers-promises.js +4 -3
  402. package/dist/node/url.js +4 -3
  403. package/dist/node/util.js +4 -3
  404. package/dist/objects/getters.js +6 -8
  405. package/dist/objects/inspect.js +1 -4
  406. package/dist/objects/mutate.js +4 -5
  407. package/dist/objects/predicates.js +1 -5
  408. package/dist/objects/sort.js +3 -7
  409. package/dist/packages/edit-class.d.ts +2 -3
  410. package/dist/packages/edit-class.js +53 -48
  411. package/dist/packages/edit.js +12 -14
  412. package/dist/packages/exports.js +15 -21
  413. package/dist/packages/fetch.d.ts +16 -0
  414. package/dist/packages/fetch.js +81 -0
  415. package/dist/packages/find.d.ts +55 -0
  416. package/dist/packages/find.js +65 -0
  417. package/dist/packages/isolation.js +14 -14
  418. package/dist/packages/licenses.js +18 -18
  419. package/dist/packages/manifest.js +16 -19
  420. package/dist/packages/metadata-extensions.d.ts +14 -0
  421. package/dist/packages/metadata-extensions.js +43 -0
  422. package/dist/packages/normalize.js +6 -10
  423. package/dist/packages/provenance.js +17 -19
  424. package/dist/packages/read.d.ts +29 -0
  425. package/dist/packages/read.js +66 -0
  426. package/dist/packages/specs.d.ts +48 -1
  427. package/dist/packages/specs.js +75 -12
  428. package/dist/packages/tarball.d.ts +24 -0
  429. package/dist/packages/tarball.js +81 -0
  430. package/dist/packages/types.d.ts +22 -22
  431. package/dist/packages/validation.js +0 -3
  432. package/dist/paths/_internal.d.ts +2 -1
  433. package/dist/paths/_internal.js +7 -19
  434. package/dist/paths/conversion.js +5 -9
  435. package/dist/paths/dirnames.d.ts +1 -0
  436. package/dist/paths/dirnames.js +2 -0
  437. package/dist/paths/filenames.d.ts +0 -1
  438. package/dist/paths/filenames.js +0 -2
  439. package/dist/paths/normalize.js +4 -5
  440. package/dist/paths/packages.js +4 -7
  441. package/dist/paths/predicates.js +9 -16
  442. package/dist/paths/resolve.js +17 -25
  443. package/dist/paths/rewire.d.ts +5 -0
  444. package/dist/paths/rewire.js +3 -3
  445. package/dist/paths/socket.d.ts +74 -111
  446. package/dist/paths/socket.js +106 -139
  447. package/dist/paths/walk.d.ts +1 -1
  448. package/dist/paths/walk.js +4 -4
  449. package/dist/perf/report.js +2 -2
  450. package/dist/perf/types.d.ts +1 -1
  451. package/dist/pkg-ext/data.js +1 -1
  452. package/dist/primordials/array.js +9 -9
  453. package/dist/primordials/date.js +2 -2
  454. package/dist/primordials/error.js +3 -3
  455. package/dist/primordials/headers.d.ts +10 -0
  456. package/dist/primordials/headers.js +23 -0
  457. package/dist/primordials/intl.d.ts +13 -0
  458. package/dist/primordials/intl.js +26 -0
  459. package/dist/primordials/math.js +33 -33
  460. package/dist/primordials/number.js +9 -9
  461. package/dist/primordials/object.js +5 -5
  462. package/dist/primordials/process.d.ts +88 -0
  463. package/dist/primordials/process.js +132 -0
  464. package/dist/primordials/string.d.ts +2 -2
  465. package/dist/primordials/string.js +6 -6
  466. package/dist/primordials/symbol.js +3 -3
  467. package/dist/primordials/uncurry.d.ts +1 -2
  468. package/dist/primordials/uncurry.js +9 -9
  469. package/dist/process/abort.js +3 -3
  470. package/dist/process/lock-manager.js +8 -8
  471. package/dist/process/spawn/_internal.js +6 -8
  472. package/dist/process/spawn/child.js +20 -14
  473. package/dist/process/spawn/errors.js +3 -5
  474. package/dist/process/spawn/kill-tree.d.ts +53 -0
  475. package/dist/process/spawn/kill-tree.js +85 -0
  476. package/dist/process/spawn/stdio.js +0 -1
  477. package/dist/process/spawn/types.d.ts +5 -5
  478. package/dist/process/transient.js +2 -2
  479. package/dist/promises/_internal.d.ts +2 -1
  480. package/dist/promises/_internal.js +2 -6
  481. package/dist/promises/iterate.js +11 -15
  482. package/dist/promises/options.js +3 -6
  483. package/dist/promises/retry.js +4 -5
  484. package/dist/promises/timers.d.ts +30 -0
  485. package/dist/promises/timers.js +48 -0
  486. package/dist/regexps/spec.js +1 -1
  487. package/dist/releases/github-archives.d.ts +6 -6
  488. package/dist/releases/github-archives.js +3 -3
  489. package/dist/releases/github-asset-url.d.ts +1 -1
  490. package/dist/releases/github-asset-url.js +5 -5
  491. package/dist/releases/github-downloads.d.ts +1 -1
  492. package/dist/releases/github-downloads.js +3 -3
  493. package/dist/releases/github-listing.d.ts +12 -4
  494. package/dist/releases/github-listing.js +20 -7
  495. package/dist/releases/github-retry-config.js +1 -1
  496. package/dist/releases/github-types.d.ts +6 -6
  497. package/dist/releases/socket-btm-binary-naming.d.ts +107 -0
  498. package/dist/releases/socket-btm-binary-naming.js +155 -0
  499. package/dist/releases/socket-btm.d.ts +8 -115
  500. package/dist/releases/socket-btm.js +16 -159
  501. package/dist/schema/types.d.ts +4 -5
  502. package/dist/schema/validate.js +1 -1
  503. package/dist/sea/detect.js +6 -6
  504. package/dist/secrets/_internal.d.ts +2 -2
  505. package/dist/secrets/_internal.js +2 -2
  506. package/dist/secrets/compare.d.ts +45 -0
  507. package/dist/secrets/compare.js +61 -0
  508. package/dist/secrets/find.d.ts +2 -2
  509. package/dist/secrets/find.js +10 -4
  510. package/dist/secrets/keychain.d.ts +1 -1
  511. package/dist/secrets/keychain.js +6 -4
  512. package/dist/secrets/linux.js +40 -52
  513. package/dist/secrets/macos.d.ts +2 -3
  514. package/dist/secrets/macos.js +24 -33
  515. package/dist/secrets/rc.d.ts +4 -4
  516. package/dist/secrets/rc.js +27 -17
  517. package/dist/secrets/socket-api-token.d.ts +4 -4
  518. package/dist/secrets/socket-api-token.js +26 -9
  519. package/dist/secrets/windows.js +32 -37
  520. package/dist/shadow/skip.js +2 -2
  521. package/dist/shell/parse.d.ts +32 -0
  522. package/dist/shell/parse.js +60 -0
  523. package/dist/smol/detect.js +9 -10
  524. package/dist/smol/http.js +6 -7
  525. package/dist/smol/https.js +6 -7
  526. package/dist/smol/manifest.d.ts +1 -1
  527. package/dist/smol/manifest.js +6 -7
  528. package/dist/smol/path.d.ts +1 -1
  529. package/dist/smol/path.js +7 -8
  530. package/dist/smol/primordial.d.ts +4 -0
  531. package/dist/smol/primordial.js +6 -7
  532. package/dist/smol/purl.d.ts +1 -1
  533. package/dist/smol/purl.js +7 -8
  534. package/dist/smol/versions.js +6 -7
  535. package/dist/smol/vfs.js +6 -7
  536. package/dist/sorts/_internal.js +6 -8
  537. package/dist/sorts/natural.js +10 -12
  538. package/dist/sorts/semver.js +1 -2
  539. package/dist/sorts/strings.js +0 -1
  540. package/dist/sorts/types.d.ts +1 -1
  541. package/dist/spinner/create-spinner-class.d.ts +38 -0
  542. package/dist/spinner/create-spinner-class.js +302 -0
  543. package/dist/spinner/default.js +8 -9
  544. package/dist/spinner/spinner-internals.d.ts +36 -0
  545. package/dist/spinner/spinner-internals.js +105 -0
  546. package/dist/spinner/spinner-shimmer-methods.d.ts +54 -0
  547. package/dist/spinner/spinner-shimmer-methods.js +143 -0
  548. package/dist/spinner/spinner-status-methods.d.ts +40 -0
  549. package/dist/spinner/spinner-status-methods.js +133 -0
  550. package/dist/spinner/spinner.d.ts +8 -5
  551. package/dist/spinner/spinner.js +19 -706
  552. package/dist/spinner/types.d.ts +3 -1
  553. package/dist/spinner/with.d.ts +10 -0
  554. package/dist/spinner/with.js +16 -2
  555. package/dist/stdio/divider.js +1 -1
  556. package/dist/stdio/footer.js +3 -3
  557. package/dist/stdio/header.js +4 -4
  558. package/dist/stdio/progress.js +10 -6
  559. package/dist/stdio/prompts.d.ts +7 -5
  560. package/dist/stdio/prompts.js +7 -8
  561. package/dist/stdio/stdout.js +3 -3
  562. package/dist/streams/parallel.js +3 -5
  563. package/dist/streams/transform.js +2 -3
  564. package/dist/strings/format.js +2 -6
  565. package/dist/strings/predicates.js +0 -2
  566. package/dist/strings/search.js +1 -2
  567. package/dist/strings/transform.js +0 -3
  568. package/dist/strings/width.js +9 -10
  569. package/dist/tables/bordered.js +4 -3
  570. package/dist/tables/padding.js +1 -1
  571. package/dist/tables/simple.js +8 -5
  572. package/dist/temporal/instant.js +1 -1
  573. package/dist/temporal/slots.js +6 -6
  574. package/dist/temporal/system.js +9 -9
  575. package/dist/themes/context.d.ts +3 -2
  576. package/dist/themes/context.js +4 -5
  577. package/dist/themes/themes.js +15 -15
  578. package/dist/themes/types.d.ts +3 -3
  579. package/dist/url/assert-safe.d.ts +29 -0
  580. package/dist/url/assert-safe.js +54 -0
  581. package/dist/url/parse.js +0 -2
  582. package/dist/url/predicates.d.ts +31 -1
  583. package/dist/url/predicates.js +43 -3
  584. package/dist/url/search-params.js +3 -9
  585. package/dist/url/types.d.ts +9 -5
  586. package/dist/versions/_internal.js +3 -3
  587. package/dist/words/article.js +0 -1
  588. package/dist/words/capitalize.js +0 -1
  589. package/dist/words/pluralize.js +15 -5
  590. package/package.json +419 -216
  591. package/dist/external-tools/uv/asset-names.d.ts +0 -36
  592. package/dist/external-tools/uv/asset-names.js +0 -70
  593. package/dist/external-tools/uv/from-download.d.ts +0 -17
  594. package/dist/external-tools/uv/from-download.js +0 -47
  595. package/dist/external-tools/uv/from-path.d.ts +0 -5
  596. package/dist/external-tools/uv/from-path.js +0 -22
  597. package/dist/external-tools/uv/from-vfs.d.ts +0 -7
  598. package/dist/external-tools/uv/from-vfs.js +0 -26
  599. package/dist/external-tools/uv/resolve.d.ts +0 -25
  600. package/dist/external-tools/uv/resolve.js +0 -53
  601. package/dist/external-tools/uv/types.d.ts +0 -24
  602. package/dist/fs/path-cache.d.ts +0 -21
  603. package/dist/fs/path-cache.js +0 -34
  604. package/dist/http-request/checksums.d.ts +0 -69
  605. package/dist/http-request/checksums.js +0 -108
  606. package/dist/http-request/http-request.d.ts +0 -12
  607. package/dist/http-request/http-request.js +0 -11
  608. package/dist/packages/operations.d.ts +0 -113
  609. package/dist/packages/operations.js +0 -304
  610. package/dist/ssri/convert.d.ts +0 -48
  611. package/dist/ssri/convert.js +0 -69
  612. package/dist/ssri/parse.d.ts +0 -27
  613. package/dist/ssri/parse.js +0 -41
  614. package/dist/ssri/validate.d.ts +0 -41
  615. package/dist/ssri/validate.js +0 -56
  616. /package/dist/{bin → cli}/check.d.ts +0 -0
  617. /package/dist/external-tools/{uv → python}/types.js +0 -0
  618. /package/dist/fs/{find-up.d.ts → find.d.ts} +0 -0
  619. /package/dist/github/{fetch.d.ts → request.d.ts} +0 -0
@@ -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:
@@ -3,11 +3,13 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_primordials_error = require('../primordials/error.js');
5
5
  const require_primordials_math = require('../primordials/math.js');
6
+ const require_primordials_string = require('../primordials/string.js');
6
7
  const require_primordials_array = require('../primordials/array.js');
7
8
  const require_primordials_date = require('../primordials/date.js');
8
9
  const require_primordials_json = require('../primordials/json.js');
9
10
  const require_primordials_promise = require('../primordials/promise.js');
10
- const require_http_request_browser_fetch = require('./browser-fetch.js');
11
+ const require_http_request_fetch_browser = require('./fetch/browser.js');
12
+ const require_primordials_headers = require('../primordials/headers.js');
11
13
 
12
14
  //#region src/http-request/browser.ts
13
15
  /**
@@ -74,6 +76,10 @@ function combineSignals(external, timeoutMs) {
74
76
  };
75
77
  }
76
78
  async function attempt(url, options) {
79
+ options = {
80
+ __proto__: null,
81
+ ...options
82
+ };
77
83
  const method = options.method ?? "GET";
78
84
  const init = { method };
79
85
  if (options.headers) init.headers = options.headers;
@@ -89,7 +95,7 @@ async function attempt(url, options) {
89
95
  timeout: options.timeout
90
96
  });
91
97
  try {
92
- const response = await require_http_request_browser_fetch.doFetch(url, init);
98
+ const response = await require_http_request_fetch_browser.fetchResponse(url, init);
93
99
  const buffer = await response.arrayBuffer();
94
100
  if (options.maxResponseSize !== void 0 && buffer.byteLength > options.maxResponseSize) throw new require_primordials_error.ErrorCtor(`Response body (${buffer.byteLength} bytes) exceeds maxResponseSize (${options.maxResponseSize})`);
95
101
  const body = new require_primordials_array.Uint8ArrayCtor(buffer);
@@ -136,8 +142,8 @@ function decodeText(bytes) {
136
142
  }
137
143
  function headersToRecord(headers) {
138
144
  const out = {};
139
- headers.forEach((value, key) => {
140
- out[key.toLowerCase()] = value;
145
+ require_primordials_headers.HeadersPrototypeForEach(headers, (value, key) => {
146
+ out[require_primordials_string.StringPrototypeToLowerCase(key)] = value;
141
147
  });
142
148
  return out;
143
149
  }
@@ -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.
@@ -98,8 +98,8 @@ async function httpDownload(url, destPath, options) {
98
98
  };
99
99
  }
100
100
  /* c8 ignore stop */
101
- const crypto = /* @__PURE__ */ require_node_crypto.getNodeCrypto();
102
- const fs = /* @__PURE__ */ require_node_fs.getNodeFs();
101
+ const crypto = require_node_crypto.getNodeCrypto();
102
+ const fs = require_node_fs.getNodeFs();
103
103
  const tempPath = `${destPath}.${crypto.randomBytes(6).toString("hex")}.download`;
104
104
  if (fs.existsSync(tempPath)) await require_fs_safe.safeDelete(tempPath);
105
105
  let lastError;
@@ -155,7 +155,7 @@ async function httpDownloadAttempt(url, destPath, options) {
155
155
  const res = response.rawResponse;
156
156
  /* c8 ignore next 3 */
157
157
  if (!res) throw new require_primordials_error.ErrorCtor("Stream response missing rawResponse");
158
- const { createWriteStream } = /* @__PURE__ */ require_node_fs.getNodeFs();
158
+ const { createWriteStream } = require_node_fs.getNodeFs();
159
159
  const totalSize = require_primordials_number.NumberParseInt(response.headers["content-length"] || "0", 10);
160
160
  return await new require_primordials_promise.PromiseCtor((resolve, reject) => {
161
161
  let downloadedSize = 0;
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * @file Thin wrapper over the global `fetch()` so tests can mock the network
3
- * layer via `vi.mock('@socketsecurity/lib/http-request/browser-fetch')`
3
+ * layer via `vi.mock('@socketsecurity/lib/http-request/fetch/browser')`
4
4
  * without monkey-patching `globalThis.fetch` (which conflicts with the
5
5
  * project's nock-based test setup). The wrapper itself is `c8 ignore`-marked
6
6
  * because the body is a single uncoverable fetch call; coverage credit is
7
7
  * preserved by the wider test suite that mocks this module and asserts the
8
8
  * call shape.
9
9
  */
10
- export declare function doFetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
10
+ export declare function fetchResponse(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
@@ -2,10 +2,10 @@
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- //#region src/http-request/browser-fetch.ts
5
+ //#region src/http-request/fetch/browser.ts
6
6
  /**
7
7
  * @file Thin wrapper over the global `fetch()` so tests can mock the network
8
- * layer via `vi.mock('@socketsecurity/lib/http-request/browser-fetch')`
8
+ * layer via `vi.mock('@socketsecurity/lib/http-request/fetch/browser')`
9
9
  * without monkey-patching `globalThis.fetch` (which conflicts with the
10
10
  * project's nock-based test setup). The wrapper itself is `c8 ignore`-marked
11
11
  * because the body is a single uncoverable fetch call; coverage credit is
@@ -13,10 +13,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
13
13
  * call shape.
14
14
  */
15
15
  /* c8 ignore start - native fetch call; tests mock this module wholesale */
16
- function doFetch(input, init) {
16
+ function fetchResponse(input, init) {
17
17
  return fetch(input, init);
18
18
  }
19
19
  /* c8 ignore stop */
20
20
 
21
21
  //#endregion
22
- exports.doFetch = doFetch;
22
+ exports.fetchResponse = fetchResponse;
@@ -2,9 +2,9 @@
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_primordials_number = require('../primordials/number.js');
5
+ const require_primordials_object = require('../primordials/object.js');
5
6
  const require_primordials_array = require('../primordials/array.js');
6
7
  const require_primordials_date = require('../primordials/date.js');
7
- const require_primordials_object = require('../primordials/object.js');
8
8
  const require_primordials_globals = require('../primordials/globals.js');
9
9
 
10
10
  //#region src/http-request/headers.ts
@@ -37,7 +37,6 @@ const RETRY_AFTER_INT_RE = /^\d+$/;
37
37
  *
38
38
  * @returns The `Authorization` header value, e.g. `Basic <base64>`.
39
39
  */
40
- /*@__NO_SIDE_EFFECTS__*/
41
40
  function basicAuthHeader(token) {
42
41
  return `Basic ${require_primordials_globals.btoa(`${token}:`)}`;
43
42
  }
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_buffer = require('../primordials/buffer.js');
4
5
  const require_primordials_error = require('../primordials/error.js');
5
- const require_primordials_date = require('../primordials/date.js');
6
6
  const require_primordials_object = require('../primordials/object.js');
7
+ const require_primordials_date = require('../primordials/date.js');
7
8
  const require_primordials_json = require('../primordials/json.js');
8
9
  const require_primordials_promise = require('../primordials/promise.js');
10
+ const require_primordials_url = require('../primordials/url.js');
9
11
  const require_node_http = require('../node/http.js');
10
12
  const require_node_https = require('../node/https.js');
11
- const require_primordials_url = require('../primordials/url.js');
12
13
  const require_http_request_errors = require('./errors.js');
14
+ const require_http_request_response_reader = require('./response-reader.js');
13
15
  const require_http_request_user_agent = require('./user-agent.js');
14
16
 
15
17
  //#region src/http-request/request-attempt.ts
@@ -70,7 +72,7 @@ async function httpRequestAttempt(url, options) {
70
72
  };
71
73
  const parsedUrl = new require_primordials_url.URLCtor(url);
72
74
  const isHttps = parsedUrl.protocol === "https:";
73
- const httpModule = isHttps ? /* @__PURE__ */ require_node_https.getNodeHttps() : /* @__PURE__ */ require_node_http.getNodeHttp();
75
+ const httpModule = isHttps ? require_node_https.getNodeHttps() : require_node_http.getNodeHttp();
74
76
  const requestOptions = {
75
77
  headers: mergedHeaders,
76
78
  hostname: parsedUrl.hostname,
@@ -106,15 +108,15 @@ async function httpRequestAttempt(url, options) {
106
108
  reject(new require_primordials_error.ErrorCtor(`Too many redirects (exceeded maximum: ${maxRedirects})`));
107
109
  return;
108
110
  }
109
- const redirectUrl = res.headers.location.startsWith("http") ? res.headers.location : new URL(res.headers.location, url).toString();
110
- const redirectParsed = new URL(redirectUrl);
111
+ const redirectUrl = res.headers.location.startsWith("http") ? res.headers.location : new require_primordials_url.URLCtor(res.headers.location, url).toString();
112
+ const redirectParsed = new require_primordials_url.URLCtor(redirectUrl);
111
113
  if (isHttps && redirectParsed.protocol !== "https:") {
112
114
  settled = true;
113
115
  reject(new require_primordials_error.ErrorCtor(`Redirect from HTTPS to HTTP is not allowed: ${redirectUrl}`));
114
116
  return;
115
117
  }
116
118
  let redirectHeaders = headers;
117
- if (new URL(url).origin !== redirectParsed.origin) {
119
+ if (new require_primordials_url.URLCtor(url).origin !== redirectParsed.origin) {
118
120
  redirectHeaders = { __proto__: null };
119
121
  const stripped = new Set([
120
122
  "authorization",
@@ -148,7 +150,7 @@ async function httpRequestAttempt(url, options) {
148
150
  status,
149
151
  statusText
150
152
  });
151
- const emptyBody = Buffer.alloc(0);
153
+ const emptyBody = require_primordials_buffer.BufferAlloc(0);
152
154
  resolveOnce({
153
155
  arrayBuffer: () => emptyBody.buffer,
154
156
  body: emptyBody,
@@ -178,31 +180,33 @@ async function httpRequestAttempt(url, options) {
178
180
  });
179
181
  res.on("end", () => {
180
182
  if (settled) return;
181
- const responseBody = Buffer.concat(chunks);
182
- const ok = res.statusCode !== void 0 && res.statusCode >= 200 && res.statusCode < 300;
183
- const response = {
184
- arrayBuffer() {
185
- return responseBody.buffer.slice(responseBody.byteOffset, responseBody.byteOffset + responseBody.byteLength);
186
- },
187
- body: responseBody,
188
- headers: res.headers,
189
- json() {
190
- return require_primordials_json.JSONParse(responseBody.toString("utf8"));
191
- },
192
- ok,
193
- rawResponse: res,
194
- status: res.statusCode || 0,
195
- statusText: res.statusMessage || "",
196
- text() {
197
- return responseBody.toString("utf8");
198
- }
199
- };
200
- emitResponse({
201
- headers: res.headers,
202
- status: res.statusCode,
203
- statusText: res.statusMessage
183
+ const rawBody = require_primordials_buffer.BufferConcat(chunks);
184
+ require_http_request_response_reader.decodeBody(rawBody, res.headers["content-encoding"]).catch(() => rawBody).then((responseBody) => {
185
+ const ok = res.statusCode !== void 0 && res.statusCode >= 200 && res.statusCode < 300;
186
+ const response = {
187
+ arrayBuffer() {
188
+ return responseBody.buffer.slice(responseBody.byteOffset, responseBody.byteOffset + responseBody.byteLength);
189
+ },
190
+ body: responseBody,
191
+ headers: res.headers,
192
+ json() {
193
+ return require_primordials_json.JSONParse(responseBody.toString("utf8"));
194
+ },
195
+ ok,
196
+ rawResponse: res,
197
+ status: res.statusCode || 0,
198
+ statusText: res.statusMessage || "",
199
+ text() {
200
+ return responseBody.toString("utf8");
201
+ }
202
+ };
203
+ emitResponse({
204
+ headers: res.headers,
205
+ status: res.statusCode,
206
+ statusText: res.statusMessage
207
+ });
208
+ resolveOnce(response);
204
209
  });
205
- resolveOnce(response);
206
210
  });
207
211
  res.on("error", (error) => {
208
212
  rejectOnce(error);
@@ -217,12 +221,12 @@ async function httpRequestAttempt(url, options) {
217
221
  });
218
222
  if (body) {
219
223
  if (typeof body === "object" && typeof body.pipe === "function") {
220
- const stream = body;
221
- stream.on("error", (err) => {
224
+ const bodyStream = body;
225
+ bodyStream.on("error", (err) => {
222
226
  request.destroy();
223
227
  rejectOnce(err);
224
228
  });
225
- stream.pipe(request);
229
+ bodyStream.pipe(request);
226
230
  return;
227
231
  }
228
232
  request.write(body);
@@ -8,7 +8,7 @@
8
8
  * observability
9
9
  * - `HttpRequestOptions` — the main request configuration interface
10
10
  */
11
- import type { IncomingMessage } from 'node:http';
11
+ import type { IncomingHttpHeaders, IncomingMessage } from 'node:http';
12
12
  import type { Readable } from 'node:stream';
13
13
  /**
14
14
  * IncomingMessage received as a response to a client request (http.request
@@ -35,7 +35,7 @@ export interface HttpHookRequestInfo {
35
35
  export interface HttpHookResponseInfo {
36
36
  duration: number;
37
37
  error?: Error | undefined;
38
- headers?: import('node:http').IncomingHttpHeaders | undefined;
38
+ headers?: IncomingHttpHeaders | undefined;
39
39
  method: string;
40
40
  status?: number | undefined;
41
41
  statusText?: string | undefined;
@@ -4,9 +4,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_primordials_error = require('../primordials/error.js');
5
5
  const require_primordials_math = require('../primordials/math.js');
6
6
  const require_primordials_number = require('../primordials/number.js');
7
+ const require_http_request_response_reader = require('./response-reader.js');
7
8
  const require_http_request_request_attempt = require('./request-attempt.js');
8
9
  const require_http_request_response_types = require('./response-types.js');
9
- const require_http_request_response_reader = require('./response-reader.js');
10
10
  let node_timers_promises = require("node:timers/promises");
11
11
 
12
12
  //#region src/http-request/request.ts
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_runtime = require('../_virtual/_rolldown/runtime.js');
5
5
  const require_env_rewire = require('../env/rewire.js');
6
6
  const require_constants_socket = require('../constants/socket.js');
7
- const require_packages_operations = require('../packages/operations.js');
7
+ const require_packages_specs = require('../packages/specs.js');
8
8
  let node_process = require("node:process");
9
9
  node_process = require_runtime.__toESM(node_process);
10
10
 
@@ -38,9 +38,8 @@ node_process = require_runtime.__toESM(node_process);
38
38
  * // 'sdxgen/0.5.0 node/v22.10.0 darwin/arm64 embedded-by-foo/1'
39
39
  * ```
40
40
  */
41
- /*@__NO_SIDE_EFFECTS__*/
42
41
  function buildUserAgent(pkg, caller) {
43
- const base = `${/* @__PURE__ */ require_packages_operations.pkgNameToSlug(pkg.name)}/${pkg.version} node/${node_process.default.version} ${node_process.default.platform}/${node_process.default.arch}`;
42
+ const base = `${require_packages_specs.pkgNameToSlug(pkg.name)}/${pkg.version} node/${node_process.default.version} ${node_process.default.platform}/${node_process.default.arch}`;
44
43
  return caller ? `${base} ${caller}` : base;
45
44
  }
46
45
  let cachedBaseUserAgent;
@@ -66,12 +65,12 @@ let cachedBaseUserAgent;
66
65
  * ```
67
66
  */
68
67
  function getSocketCallerUserAgent() {
69
- if (cachedBaseUserAgent === void 0) cachedBaseUserAgent = /* @__PURE__ */ buildUserAgent({
68
+ if (cachedBaseUserAgent === void 0) cachedBaseUserAgent = buildUserAgent({
70
69
  name: require_constants_socket.SOCKET_LIB_NAME,
71
70
  version: require_constants_socket.SOCKET_LIB_VERSION
72
71
  });
73
72
  const caller = require_env_rewire.getEnvValue("SOCKET_CALLER_USER_AGENT");
74
- return caller && caller.trim() ? `${cachedBaseUserAgent} ${caller}` : cachedBaseUserAgent;
73
+ return caller?.trim() ? `${cachedBaseUserAgent} ${caller}` : cachedBaseUserAgent;
75
74
  }
76
75
 
77
76
  //#endregion