@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
@@ -7,8 +7,8 @@ const require_primordials_error = require('../primordials/error.js');
7
7
  const require_primordials_math = require('../primordials/math.js');
8
8
  const require_primordials_number = require('../primordials/number.js');
9
9
  const require_node_fs = require('../node/fs.js');
10
- const require_fs_safe = require('../fs/safe.js');
11
10
  const require_primordials_promise = require('../primordials/promise.js');
11
+ const require_fs_safe = require('../fs/safe.js');
12
12
  const require_http_request_request_attempt = require('./request-attempt.js');
13
13
  const require_http_request_response_types = require('./response-types.js');
14
14
  let node_timers_promises = require("node:timers/promises");
@@ -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;
@@ -9,6 +9,34 @@
9
9
  * payload. No I/O — these can be imported anywhere without dragging the
10
10
  * Node.js `http`/`https` modules into the bundle.
11
11
  */
12
+ /**
13
+ * Build an HTTP Basic `Authorization` header value from a Socket API token.
14
+ *
15
+ * The Socket API uses the token as the username with an empty password, so the
16
+ * credential pair is `<token>:`. Centralized here so every fleet caller emits
17
+ * the identical shape instead of hand-rolling `btoa(\`${token}:`)`.
18
+ *
19
+ * @example
20
+ * ;```ts
21
+ * const headers = { Authorization: basicAuthHeader(apiToken) }
22
+ * // { Authorization: 'Basic c2t0X3h4eHg6' }
23
+ * ```
24
+ *
25
+ * @param token - The Socket API token (used as the Basic-auth username).
26
+ *
27
+ * @returns The `Authorization` header value, e.g. `Basic <base64>`.
28
+ */
29
+ export declare function basicAuthHeader(token: string): string;
30
+ /**
31
+ * Whether a header name looks credential-bearing and should be redacted from
32
+ * logs and telemetry. Case-insensitive substring match on the name only — the
33
+ * value is never inspected.
34
+ *
35
+ * @param name - The header name (e.g. `Authorization`, `x-api-key`).
36
+ *
37
+ * @returns `true` when the value should be replaced with `[REDACTED]`.
38
+ */
39
+ export declare function isSensitiveHeaderName(name: string): boolean;
12
40
  /**
13
41
  * Parse a `Retry-After` HTTP header value into milliseconds.
14
42
  *
@@ -37,9 +65,10 @@ export declare function parseRetryAfterHeader(value: string | string[] | undefin
37
65
  /**
38
66
  * Redact sensitive HTTP headers for safe logging and telemetry.
39
67
  *
40
- * Replaces values of sensitive headers (Authorization, Cookie, etc.) with
41
- * `[REDACTED]`. Non-sensitive headers are passed through unchanged. Array
42
- * values are joined with `', '`.
68
+ * Replaces values of credential-bearing headers with `[REDACTED]`, matching the
69
+ * header name by shape (see `isSensitiveHeaderName`) so custom token headers
70
+ * are covered without an enumerated list. Non-sensitive headers pass through
71
+ * unchanged. Array values are joined with `', '`.
43
72
  *
44
73
  * @example
45
74
  * ;```ts
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_primordials_number = require('../primordials/number.js');
5
5
  const require_primordials_array = require('../primordials/array.js');
6
- const require_primordials_map_set = require('../primordials/map-set.js');
7
6
  const require_primordials_date = require('../primordials/date.js');
8
7
  const require_primordials_object = require('../primordials/object.js');
8
+ const require_primordials_globals = require('../primordials/globals.js');
9
9
 
10
10
  //#region src/http-request/headers.ts
11
11
  /**
@@ -21,6 +21,39 @@ const require_primordials_object = require('../primordials/object.js');
21
21
  */
22
22
  const RETRY_AFTER_INT_RE = /^\d+$/;
23
23
  /**
24
+ * Build an HTTP Basic `Authorization` header value from a Socket API token.
25
+ *
26
+ * The Socket API uses the token as the username with an empty password, so the
27
+ * credential pair is `<token>:`. Centralized here so every fleet caller emits
28
+ * the identical shape instead of hand-rolling `btoa(\`${token}:`)`.
29
+ *
30
+ * @example
31
+ * ;```ts
32
+ * const headers = { Authorization: basicAuthHeader(apiToken) }
33
+ * // { Authorization: 'Basic c2t0X3h4eHg6' }
34
+ * ```
35
+ *
36
+ * @param token - The Socket API token (used as the Basic-auth username).
37
+ *
38
+ * @returns The `Authorization` header value, e.g. `Basic <base64>`.
39
+ */
40
+ function basicAuthHeader(token) {
41
+ return `Basic ${require_primordials_globals.btoa(`${token}:`)}`;
42
+ }
43
+ const SENSITIVE_HEADER_NAME_RE = /auth|cookie|credential|key|password|secret|token/i;
44
+ /**
45
+ * Whether a header name looks credential-bearing and should be redacted from
46
+ * logs and telemetry. Case-insensitive substring match on the name only — the
47
+ * value is never inspected.
48
+ *
49
+ * @param name - The header name (e.g. `Authorization`, `x-api-key`).
50
+ *
51
+ * @returns `true` when the value should be replaced with `[REDACTED]`.
52
+ */
53
+ function isSensitiveHeaderName(name) {
54
+ return SENSITIVE_HEADER_NAME_RE.test(name);
55
+ }
56
+ /**
24
57
  * Parse a `Retry-After` HTTP header value into milliseconds.
25
58
  *
26
59
  * Supports both formats defined in RFC 7231 §7.1.3:
@@ -59,9 +92,10 @@ function parseRetryAfterHeader(value) {
59
92
  /**
60
93
  * Redact sensitive HTTP headers for safe logging and telemetry.
61
94
  *
62
- * Replaces values of sensitive headers (Authorization, Cookie, etc.) with
63
- * `[REDACTED]`. Non-sensitive headers are passed through unchanged. Array
64
- * values are joined with `', '`.
95
+ * Replaces values of credential-bearing headers with `[REDACTED]`, matching the
96
+ * header name by shape (see `isSensitiveHeaderName`) so custom token headers
97
+ * are covered without an enumerated list. Non-sensitive headers pass through
98
+ * unchanged. Array values are joined with `', '`.
65
99
  *
66
100
  * @example
67
101
  * ;```ts
@@ -78,18 +112,10 @@ function parseRetryAfterHeader(value) {
78
112
  */
79
113
  function sanitizeHeaders(headers) {
80
114
  if (!headers) return {};
81
- const sensitiveHeaders = new require_primordials_map_set.SetCtor([
82
- "authorization",
83
- "cookie",
84
- "proxy-authorization",
85
- "proxy-authenticate",
86
- "set-cookie",
87
- "www-authenticate"
88
- ]);
89
115
  const result = { __proto__: null };
90
116
  for (const key of require_primordials_object.ObjectKeys(headers)) {
91
117
  const value = headers[key];
92
- if (sensitiveHeaders.has(key.toLowerCase())) result[key] = "[REDACTED]";
118
+ if (isSensitiveHeaderName(key)) result[key] = "[REDACTED]";
93
119
  else if (require_primordials_array.ArrayIsArray(value)) result[key] = value.join(", ");
94
120
  else if (value !== void 0 && value !== null) result[key] = String(value);
95
121
  }
@@ -97,5 +123,7 @@ function sanitizeHeaders(headers) {
97
123
  }
98
124
 
99
125
  //#endregion
126
+ exports.basicAuthHeader = basicAuthHeader;
127
+ exports.isSensitiveHeaderName = isSensitiveHeaderName;
100
128
  exports.parseRetryAfterHeader = parseRetryAfterHeader;
101
129
  exports.sanitizeHeaders = sanitizeHeaders;
@@ -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
6
  const require_primordials_date = require('../primordials/date.js');
6
- const require_primordials_object = require('../primordials/object.js');
7
7
  const require_primordials_json = require('../primordials/json.js');
8
+ const require_primordials_object = require('../primordials/object.js');
8
9
  const require_primordials_promise = require('../primordials/promise.js');
9
10
  const require_node_http = require('../node/http.js');
10
11
  const require_node_https = require('../node/https.js');
11
12
  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
@@ -39,6 +41,7 @@ async function httpRequestAttempt(url, options) {
39
41
  const startTime = require_primordials_date.DateNow();
40
42
  const streamHeaders = body && typeof body === "object" && "getHeaders" in body && typeof body.getHeaders === "function" ? body.getHeaders() : void 0;
41
43
  const mergedHeaders = {
44
+ ...stream ? void 0 : { "Accept-Encoding": "gzip, br" },
42
45
  "User-Agent": require_http_request_user_agent.getSocketCallerUserAgent(),
43
46
  ...streamHeaders,
44
47
  ...headers
@@ -69,7 +72,7 @@ async function httpRequestAttempt(url, options) {
69
72
  };
70
73
  const parsedUrl = new require_primordials_url.URLCtor(url);
71
74
  const isHttps = parsedUrl.protocol === "https:";
72
- 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();
73
76
  const requestOptions = {
74
77
  headers: mergedHeaders,
75
78
  hostname: parsedUrl.hostname,
@@ -105,15 +108,15 @@ async function httpRequestAttempt(url, options) {
105
108
  reject(new require_primordials_error.ErrorCtor(`Too many redirects (exceeded maximum: ${maxRedirects})`));
106
109
  return;
107
110
  }
108
- const redirectUrl = res.headers.location.startsWith("http") ? res.headers.location : new URL(res.headers.location, url).toString();
109
- 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);
110
113
  if (isHttps && redirectParsed.protocol !== "https:") {
111
114
  settled = true;
112
115
  reject(new require_primordials_error.ErrorCtor(`Redirect from HTTPS to HTTP is not allowed: ${redirectUrl}`));
113
116
  return;
114
117
  }
115
118
  let redirectHeaders = headers;
116
- if (new URL(url).origin !== redirectParsed.origin) {
119
+ if (new require_primordials_url.URLCtor(url).origin !== redirectParsed.origin) {
117
120
  redirectHeaders = { __proto__: null };
118
121
  const stripped = new Set([
119
122
  "authorization",
@@ -147,7 +150,7 @@ async function httpRequestAttempt(url, options) {
147
150
  status,
148
151
  statusText
149
152
  });
150
- const emptyBody = Buffer.alloc(0);
153
+ const emptyBody = require_primordials_buffer.BufferAlloc(0);
151
154
  resolveOnce({
152
155
  arrayBuffer: () => emptyBody.buffer,
153
156
  body: emptyBody,
@@ -177,31 +180,33 @@ async function httpRequestAttempt(url, options) {
177
180
  });
178
181
  res.on("end", () => {
179
182
  if (settled) return;
180
- const responseBody = Buffer.concat(chunks);
181
- const ok = res.statusCode !== void 0 && res.statusCode >= 200 && res.statusCode < 300;
182
- const response = {
183
- arrayBuffer() {
184
- return responseBody.buffer.slice(responseBody.byteOffset, responseBody.byteOffset + responseBody.byteLength);
185
- },
186
- body: responseBody,
187
- headers: res.headers,
188
- json() {
189
- return require_primordials_json.JSONParse(responseBody.toString("utf8"));
190
- },
191
- ok,
192
- rawResponse: res,
193
- status: res.statusCode || 0,
194
- statusText: res.statusMessage || "",
195
- text() {
196
- return responseBody.toString("utf8");
197
- }
198
- };
199
- emitResponse({
200
- headers: res.headers,
201
- status: res.statusCode,
202
- 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);
203
209
  });
204
- resolveOnce(response);
205
210
  });
206
211
  res.on("error", (error) => {
207
212
  rejectOnce(error);
@@ -216,12 +221,12 @@ async function httpRequestAttempt(url, options) {
216
221
  });
217
222
  if (body) {
218
223
  if (typeof body === "object" && typeof body.pipe === "function") {
219
- const stream = body;
220
- stream.on("error", (err) => {
224
+ const bodyStream = body;
225
+ bodyStream.on("error", (err) => {
221
226
  request.destroy();
222
227
  rejectOnce(err);
223
228
  });
224
- stream.pipe(request);
229
+ bodyStream.pipe(request);
225
230
  return;
226
231
  }
227
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;
@@ -138,6 +138,11 @@ export interface HttpRequestOptions {
138
138
  * HTTP headers to send with the request. A `User-Agent` header is
139
139
  * automatically added if not provided.
140
140
  *
141
+ * On retried attempts (when `retries` > 0), three telemetry headers are added
142
+ * automatically for server-side logging and are NOT removable here:
143
+ * `Retry-Attempt` (1-based retry number), `Retry-Max` (the `retries`
144
+ * ceiling), and `Retry-After` (seconds waited before this attempt).
145
+ *
141
146
  * @example
142
147
  * ;```ts
143
148
  * await httpRequest('https://api.example.com/data', {
@@ -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
@@ -71,7 +71,7 @@ async function httpRequest(url, options) {
71
71
  };
72
72
  const isStreamBody = body !== void 0 && typeof body === "object" && typeof body.pipe === "function";
73
73
  if (isStreamBody && retries > 0) throw new require_primordials_error.ErrorCtor("Streaming body (Readable/FormData) cannot be used with retries. Streams are consumed on first attempt and cannot be replayed. Set retries: 0 or buffer the body as a string/Buffer.");
74
- const attemptOpts = {
74
+ const baseAttemptOpts = {
75
75
  body,
76
76
  ca,
77
77
  followRedirects: isStreamBody ? false : followRedirects,
@@ -85,20 +85,37 @@ async function httpRequest(url, options) {
85
85
  timeout
86
86
  };
87
87
  let lastError;
88
- for (let attempt = 0; attempt <= retries; attempt++) try {
89
- const response = await require_http_request_request_attempt.httpRequestAttempt(url, attemptOpts);
90
- if (throwOnError && !response.ok) throw new require_http_request_response_types.HttpResponseError(response);
91
- return response;
92
- } catch (e) {
93
- lastError = e;
94
- if (attempt === retries) break;
95
- if (signal?.aborted) break;
96
- const delayMs = retryDelay * 2 ** attempt;
97
- if (onRetry) {
98
- const retryResult = onRetry(attempt + 1, e, delayMs);
99
- if (retryResult === false) break;
100
- await (0, node_timers_promises.setTimeout)(typeof retryResult === "number" && !require_primordials_number.NumberIsNaN(retryResult) ? require_primordials_math.MathMax(0, retryResult) : delayMs);
101
- } else await (0, node_timers_promises.setTimeout)(delayMs);
88
+ let lastDelaySeconds = 0;
89
+ for (let attempt = 0; attempt <= retries; attempt++) {
90
+ const attemptOpts = attempt > 0 ? {
91
+ ...baseAttemptOpts,
92
+ headers: {
93
+ ...headers,
94
+ "Retry-Attempt": `${attempt}`,
95
+ "Retry-Max": `${retries}`,
96
+ "Retry-After": `${lastDelaySeconds}`
97
+ }
98
+ } : baseAttemptOpts;
99
+ try {
100
+ const response = await require_http_request_request_attempt.httpRequestAttempt(url, attemptOpts);
101
+ if (throwOnError && !response.ok) throw new require_http_request_response_types.HttpResponseError(response);
102
+ return response;
103
+ } catch (e) {
104
+ lastError = e;
105
+ if (attempt === retries) break;
106
+ if (signal?.aborted) break;
107
+ const delayMs = retryDelay * 2 ** attempt;
108
+ if (onRetry) {
109
+ const retryResult = onRetry(attempt + 1, e, delayMs);
110
+ if (retryResult === false) break;
111
+ const actualDelay = typeof retryResult === "number" && !require_primordials_number.NumberIsNaN(retryResult) ? require_primordials_math.MathMax(0, retryResult) : delayMs;
112
+ lastDelaySeconds = require_primordials_math.MathRound(actualDelay / 1e3);
113
+ await (0, node_timers_promises.setTimeout)(actualDelay);
114
+ } else {
115
+ lastDelaySeconds = require_primordials_math.MathRound(delayMs / 1e3);
116
+ await (0, node_timers_promises.setTimeout)(delayMs);
117
+ }
118
+ }
102
119
  }
103
120
  throw lastError || new require_primordials_error.ErrorCtor("Request failed after retries");
104
121
  }
@@ -3,10 +3,21 @@
3
3
  * out of `http-request/request.ts` for size hygiene. Useful when a caller
4
4
  * already has an `IncomingMessage` from code that bypasses `httpRequest()`
5
5
  * (e.g., multipart uploads via `http.request()` directly, or third-party HTTP
6
- * libraries) and wants the same fetch-like body accessors.
6
+ * libraries) and wants the same fetch-like body accessors. The body is
7
+ * transparently decompressed when the response carries a `Content-Encoding`
8
+ * of `gzip` or `br` — the two encodings `httpRequest` advertises via
9
+ * `Accept-Encoding`. Node's http client does not decompress on its own, so
10
+ * without this step a compressed Socket API response would reach callers as
11
+ * raw deflated bytes and fail JSON parsing.
7
12
  */
8
13
  import type { IncomingResponse } from './request-types';
9
14
  import type { HttpResponse } from './response-types';
15
+ /**
16
+ * Decompress a response body per its `Content-Encoding`. Returns the input
17
+ * unchanged for `identity` or any unrecognized/absent encoding — we only
18
+ * decompress what `httpRequest` advertised support for (`gzip`, `br`).
19
+ */
20
+ export declare function decodeBody(body: Buffer, contentEncoding: string | string[] | undefined): Promise<Buffer>;
10
21
  /**
11
22
  * Read and buffer a client-side IncomingResponse into an HttpResponse.
12
23
  *
@@ -3,6 +3,8 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_primordials_buffer = require('../primordials/buffer.js');
5
5
  const require_primordials_json = require('../primordials/json.js');
6
+ const require_compression_brotli = require('../compression/brotli.js');
7
+ const require_compression_gzip = require('../compression/gzip.js');
6
8
 
7
9
  //#region src/http-request/response-reader.ts
8
10
  /**
@@ -10,9 +12,26 @@ const require_primordials_json = require('../primordials/json.js');
10
12
  * out of `http-request/request.ts` for size hygiene. Useful when a caller
11
13
  * already has an `IncomingMessage` from code that bypasses `httpRequest()`
12
14
  * (e.g., multipart uploads via `http.request()` directly, or third-party HTTP
13
- * libraries) and wants the same fetch-like body accessors.
15
+ * libraries) and wants the same fetch-like body accessors. The body is
16
+ * transparently decompressed when the response carries a `Content-Encoding`
17
+ * of `gzip` or `br` — the two encodings `httpRequest` advertises via
18
+ * `Accept-Encoding`. Node's http client does not decompress on its own, so
19
+ * without this step a compressed Socket API response would reach callers as
20
+ * raw deflated bytes and fail JSON parsing.
14
21
  */
15
22
  /**
23
+ * Decompress a response body per its `Content-Encoding`. Returns the input
24
+ * unchanged for `identity` or any unrecognized/absent encoding — we only
25
+ * decompress what `httpRequest` advertised support for (`gzip`, `br`).
26
+ */
27
+ async function decodeBody(body, contentEncoding) {
28
+ if (!contentEncoding || body.length === 0) return body;
29
+ const encoding = (Array.isArray(contentEncoding) ? contentEncoding[0] : contentEncoding).trim().toLowerCase();
30
+ if (encoding === "gzip") return await require_compression_gzip.decompressGzip(body);
31
+ if (encoding === "br") return await require_compression_brotli.decompressBrotli(body);
32
+ return body;
33
+ }
34
+ /**
16
35
  * Read and buffer a client-side IncomingResponse into an HttpResponse.
17
36
  *
18
37
  * Useful when you have a raw response from code that bypasses `httpRequest()`
@@ -30,7 +49,7 @@ const require_primordials_json = require('../primordials/json.js');
30
49
  async function readIncomingResponse(msg) {
31
50
  const chunks = [];
32
51
  for await (const chunk of msg) chunks.push(chunk);
33
- const body = require_primordials_buffer.BufferConcat(chunks);
52
+ const body = await decodeBody(require_primordials_buffer.BufferConcat(chunks), msg.headers["content-encoding"]);
34
53
  const status = msg.statusCode ?? 0;
35
54
  const statusText = msg.statusMessage ?? "";
36
55
  return {
@@ -47,4 +66,5 @@ async function readIncomingResponse(msg) {
47
66
  }
48
67
 
49
68
  //#endregion
69
+ exports.decodeBody = decodeBody;
50
70
  exports.readIncomingResponse = readIncomingResponse;
@@ -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,7 +65,7 @@ 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
  });
@@ -1,21 +1,9 @@
1
- /**
2
- * @file Integrity specification helpers for downloads and file verification.
3
- * Used by `dlx/binary-download` and external-tools resolvers; safe to consume
4
- * from any module that needs to verify bytes against an expected hash. Single
5
- * supported format per flavor:
6
- *
7
- * - integrity: SRI with sha512 only (what npm registry returns)
8
- * - checksum: sha256 hex (what `shasum -a 256` produces; common for binary
9
- * release assets on GitHub) Callers may pass a {@link HashSpec} as a bare
10
- * string (sniffed via format) or as an explicit `{ type, value }` object.
11
- * The normalized form carried around internally is always the object.
12
- */
13
1
  /**
14
2
  * Tagged union representing an expected hash.
15
3
  *
16
4
  * @example
17
5
  * // Bare SRI (sniffed as integrity):
18
- * 'sha512-abc...'
6
+ * 'sha256-NiCg/K+B7NOq7M1ZZZGdkNvJE/TQepbhHnyvwseFBUs='
19
7
  *
20
8
  * @example
21
9
  * // Bare sha256 hex (sniffed as checksum):
@@ -23,7 +11,7 @@
23
11
  *
24
12
  * @example
25
13
  * // Explicit:
26
- * { type: 'integrity', value: 'sha512-abc...' }
14
+ * { type: 'integrity', value: 'sha512-...' }
27
15
  * { type: 'checksum', value: 'a1b2c3...' }
28
16
  */
29
17
  export type HashSpec = string | {
@@ -50,22 +38,89 @@ export interface ComputedHashes {
50
38
  */
51
39
  integrity: string;
52
40
  /**
53
- * SHA-256 hex (64 chars). Matches `shasum -a 256`.
41
+ * Sha256 hex (64 chars). Matches `shasum -a 256`.
54
42
  */
55
43
  checksum: string;
56
44
  }
45
+ /**
46
+ * Parsed components of an integrity string.
47
+ */
48
+ export interface ParsedIntegrity {
49
+ /**
50
+ * SRI algorithm: `'sha256' | 'sha384' | 'sha512'`.
51
+ */
52
+ algorithm: string;
53
+ /**
54
+ * Base64-encoded digest body (everything after the `-`).
55
+ */
56
+ body: string;
57
+ }
58
+ /**
59
+ * Convert a sha256 hex checksum to its SRI integrity form (`sha256-<base64>`).
60
+ * Idempotent on integrity input — call this on user-supplied data without first
61
+ * sniffing the format.
62
+ *
63
+ * The default algorithm is `'sha256'` because that's the fleet's checksum
64
+ * convention; pass an explicit algorithm if you have a hex digest from `sha384`
65
+ * or `sha512` (the function does not verify hex length against the algorithm —
66
+ * caller's responsibility).
67
+ *
68
+ * @example
69
+ * ;```typescript
70
+ * checksumToIntegrity(
71
+ * '3620a0fcaf81ecd3aaeccd5965919d90dbc913f4d07a96e11e7cafc2c785054b',
72
+ * )
73
+ * // 'sha256-NiCg/K+B7NOq7M1ZZZGdkNvJE/TQepbhHnyvwseFBUs='
74
+ *
75
+ * checksumToIntegrity('sha256-NiCg/K+B7NOq7M1ZZZGdkNvJE/TQepbhHnyvwseFBUs=')
76
+ * // 'sha256-NiCg/K+B7NOq7M1ZZZGdkNvJE/TQepbhHnyvwseFBUs=' (idempotent)
77
+ * ```
78
+ *
79
+ * @throws TypeError when the input is neither a recognized SRI nor a hex
80
+ * digest.
81
+ */
82
+ export declare function checksumToIntegrity(input: string, algorithm?: string): string;
57
83
  /**
58
84
  * Compute both integrity (sha512 SRI) and checksum (sha256 hex) for a buffer of
59
85
  * bytes.
60
86
  */
61
87
  export declare function computeHashes(bytes: Buffer): ComputedHashes;
62
- export declare function isChecksumString(s: string): boolean;
63
- export declare function isIntegrityString(s: string): boolean;
88
+ /**
89
+ * Convert a sha256 SRI integrity string to its hex checksum form (64 lowercase
90
+ * chars). Idempotent on checksum input.
91
+ *
92
+ * Throws on `sha384` and `sha512` SRI — checksums are sha256-only by fleet
93
+ * convention. Callers that need a hex digest for those algorithms can call
94
+ * `parseIntegrity(sri)` and decode `.body` manually.
95
+ *
96
+ * @example
97
+ * ;```typescript
98
+ * integrityToChecksum('sha256-NiCg/K+B7NOq7M1ZZZGdkNvJE/TQepbhHnyvwseFBUs=')
99
+ * // '3620a0fcaf81ecd3aaeccd5965919d90dbc913f4d07a96e11e7cafc2c785054b'
100
+ *
101
+ * integrityToChecksum(
102
+ * '3620a0fcaf81ecd3aaeccd5965919d90dbc913f4d07a96e11e7cafc2c785054b',
103
+ * )
104
+ * // '3620a0fcaf81ecd3aaeccd5965919d90dbc913f4d07a96e11e7cafc2c785054b' (idempotent)
105
+ * ```
106
+ *
107
+ * @throws TypeError when the input is neither a recognized SRI nor a hex
108
+ * checksum, or when the input is a non-sha256 SRI.
109
+ */
110
+ export declare function integrityToChecksum(input: string): string;
111
+ /**
112
+ * True when `s` is a sha256 hex checksum (exactly 64 hex chars).
113
+ */
114
+ export declare function isChecksum(s: string): boolean;
115
+ /**
116
+ * True when `s` is a W3C SRI integrity string: `sha(256|384|512)-<base64>`.
117
+ */
118
+ export declare function isIntegrity(s: string): boolean;
64
119
  /**
65
120
  * Normalize a {@link HashSpec} to its canonical `{ type, value }` form.
66
121
  *
67
122
  * - Object form is trusted (its `value` is validated for shape).
68
- * - Bare string matching sha512 SRI → integrity.
123
+ * - Bare string matching SRI → integrity.
69
124
  * - Bare string of 64 hex chars → checksum.
70
125
  * - Anything else throws TypeError.
71
126
  *
@@ -73,6 +128,19 @@ export declare function isIntegrityString(s: string): boolean;
73
128
  * object's value doesn't match its declared type.
74
129
  */
75
130
  export declare function normalizeHash(spec: HashSpec): NormalizedHash;
131
+ /**
132
+ * Split an integrity string into its `{ algorithm, body }` components. `body`
133
+ * is the base64-encoded digest (everything after the algorithm + dash).
134
+ *
135
+ * @example
136
+ * ;```typescript
137
+ * parseIntegrity('sha256-NiCg/K+B7NOq7M1ZZZGdkNvJE/TQepbhHnyvwseFBUs=')
138
+ * // { algorithm: 'sha256', body: 'NiCg/K+B7NOq7M1ZZZGdkNvJE/TQepbhHnyvwseFBUs=' }
139
+ * ```
140
+ *
141
+ * @throws Error when the input is not a valid SRI integrity string.
142
+ */
143
+ export declare function parseIntegrity(sri: string): ParsedIntegrity;
76
144
  /**
77
145
  * Verify computed hashes against an expected {@link NormalizedHash}. Uses
78
146
  * `crypto.timingSafeEqual` for constant-time comparison.