@socketsecurity/lib 6.0.2 → 6.0.4

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 (552) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/_virtual/_rolldown/runtime.js +45 -0
  3. package/dist/abort/signal.js +53 -59
  4. package/dist/ai/discover.js +110 -110
  5. package/dist/ai/profiles.d.mts +48 -25
  6. package/dist/ai/profiles.js +95 -59
  7. package/dist/ai/spawn.d.mts +2 -2
  8. package/dist/ai/spawn.js +172 -194
  9. package/dist/ai/types.d.mts +3 -3
  10. package/dist/ai/types.js +1 -17
  11. package/dist/ai/worktree.d.mts +2 -2
  12. package/dist/ai/worktree.js +160 -183
  13. package/dist/ansi/constants.js +16 -38
  14. package/dist/ansi/strip.js +44 -41
  15. package/dist/archives/_internal.js +64 -73
  16. package/dist/archives/detect.js +30 -43
  17. package/dist/archives/extract.js +43 -50
  18. package/dist/archives/tar.js +197 -228
  19. package/dist/archives/types.js +1 -17
  20. package/dist/archives/zip.js +85 -121
  21. package/dist/argv/flag-predicates.js +203 -101
  22. package/dist/argv/flag-types.js +96 -113
  23. package/dist/argv/parse-args-string.d.ts +16 -14
  24. package/dist/argv/parse-args-string.js +42 -39
  25. package/dist/argv/parse.js +145 -163
  26. package/dist/arrays/_internal.js +65 -48
  27. package/dist/arrays/chunk.js +51 -40
  28. package/dist/arrays/join.js +87 -35
  29. package/dist/arrays/predicates.js +46 -28
  30. package/dist/arrays/unique.js +45 -31
  31. package/dist/bin/_internal.js +34 -42
  32. package/dist/bin/check-primordials.js +175 -233
  33. package/dist/bin/check.js +51 -72
  34. package/dist/bin/exec.js +70 -74
  35. package/dist/bin/find.js +151 -134
  36. package/dist/bin/resolve.js +180 -246
  37. package/dist/bin/shadow.js +24 -33
  38. package/dist/bin/socket-lib.js +51 -73
  39. package/dist/bin/types.js +1 -17
  40. package/dist/bin/which.js +211 -146
  41. package/dist/cacache/_internal.js +25 -40
  42. package/dist/cacache/clear.js +79 -72
  43. package/dist/cacache/read.js +48 -46
  44. package/dist/cacache/tmp.js +29 -36
  45. package/dist/cacache/types.js +1 -17
  46. package/dist/cacache/write.js +43 -48
  47. package/dist/cache/ttl/store.js +232 -288
  48. package/dist/cache/ttl/types.js +1 -17
  49. package/dist/checks/primordials-defaults.js +83 -89
  50. package/dist/checks/primordials.js +225 -277
  51. package/dist/colors/convert.js +45 -37
  52. package/dist/colors/palette.js +88 -45
  53. package/dist/colors/socket-palette.js +74 -84
  54. package/dist/colors/types.js +1 -17
  55. package/dist/compression/_internal.js +57 -72
  56. package/dist/compression/brotli.js +94 -127
  57. package/dist/compression/gzip.js +95 -121
  58. package/dist/compression/types.js +1 -17
  59. package/dist/constants/agents.js +61 -113
  60. package/dist/constants/encoding.js +19 -42
  61. package/dist/constants/github.js +12 -30
  62. package/dist/constants/licenses.js +48 -63
  63. package/dist/constants/lifecycle-script-names.js +31 -45
  64. package/dist/constants/maintained-node-versions.js +22 -37
  65. package/dist/constants/node.js +226 -167
  66. package/dist/constants/package-default-node-range.js +16 -41
  67. package/dist/constants/package-default-socket-categories.js +12 -30
  68. package/dist/constants/packages.js +77 -126
  69. package/dist/constants/platform.js +27 -49
  70. package/dist/constants/sentinels.js +23 -48
  71. package/dist/constants/socket.js +42 -87
  72. package/dist/constants/testing.js +15 -34
  73. package/dist/constants/time.js +16 -36
  74. package/dist/constants/typescript.js +32 -52
  75. package/dist/cover/code.js +111 -142
  76. package/dist/cover/formatters.js +118 -101
  77. package/dist/cover/type.js +50 -76
  78. package/dist/cover/types.js +1 -17
  79. package/dist/crypto/hash.js +54 -46
  80. package/dist/debug/_internal.js +62 -71
  81. package/dist/debug/caller-info.js +53 -64
  82. package/dist/debug/namespace.js +80 -90
  83. package/dist/debug/output.js +172 -188
  84. package/dist/debug/types.js +1 -17
  85. package/dist/dlx/_internal.js +24 -43
  86. package/dist/dlx/arborist.js +162 -160
  87. package/dist/dlx/binary-cache.js +228 -200
  88. package/dist/dlx/binary-download.js +172 -211
  89. package/dist/dlx/binary-resolution.js +165 -157
  90. package/dist/dlx/binary-types.js +1 -17
  91. package/dist/dlx/binary.js +149 -189
  92. package/dist/dlx/cache.js +45 -30
  93. package/dist/dlx/detect.js +245 -167
  94. package/dist/dlx/dir.js +67 -51
  95. package/dist/dlx/firewall.js +62 -100
  96. package/dist/dlx/lockfile.js +122 -127
  97. package/dist/dlx/manifest.js +264 -274
  98. package/dist/dlx/package.js +241 -244
  99. package/dist/dlx/packages.js +99 -96
  100. package/dist/dlx/paths.js +73 -59
  101. package/dist/dlx/spec.js +52 -60
  102. package/dist/dlx/types.js +1 -17
  103. package/dist/eco/cargo/lockfile-format.js +19 -36
  104. package/dist/eco/cargo/manifest-format.js +17 -35
  105. package/dist/eco/cargo/parse-lockfile.js +210 -237
  106. package/dist/eco/manifest/analyze-lockfile.js +46 -63
  107. package/dist/eco/manifest/detect-format.js +66 -90
  108. package/dist/eco/manifest/find-packages.js +39 -64
  109. package/dist/eco/manifest/get-package-versions.js +27 -48
  110. package/dist/eco/manifest/get-package.js +21 -40
  111. package/dist/eco/manifest/manifest-error.js +14 -35
  112. package/dist/eco/manifest/parse-lockfile.js +40 -86
  113. package/dist/eco/manifest/parse-manifest.js +26 -43
  114. package/dist/eco/manifest/parse.js +26 -47
  115. package/dist/eco/manifest/types.js +1 -17
  116. package/dist/eco/npm/bun/exec.js +23 -32
  117. package/dist/eco/npm/manifest-format.js +21 -35
  118. package/dist/eco/npm/npm/exec.js +51 -61
  119. package/dist/eco/npm/npm/extract-package-name-from-path.js +28 -50
  120. package/dist/eco/npm/npm/flags.js +80 -52
  121. package/dist/eco/npm/npm/lockfile-format.js +21 -40
  122. package/dist/eco/npm/npm/parse-git-url.js +26 -40
  123. package/dist/eco/npm/npm/parse-lockfile.js +184 -210
  124. package/dist/eco/npm/parse-package-json.js +71 -102
  125. package/dist/eco/npm/pnpm/detect-pnpm-version.js +22 -43
  126. package/dist/eco/npm/pnpm/exec.js +51 -62
  127. package/dist/eco/npm/pnpm/flags.js +75 -68
  128. package/dist/eco/npm/pnpm/lockfile-format.js +19 -36
  129. package/dist/eco/npm/pnpm/parse-lockfile.js +235 -259
  130. package/dist/eco/npm/pnpm/parse-pnpm-package-id-v5.js +37 -47
  131. package/dist/eco/npm/pnpm/parse-pnpm-package-id-v6-v9.js +36 -49
  132. package/dist/eco/npm/script.js +82 -90
  133. package/dist/eco/npm/vlt/exec.js +24 -32
  134. package/dist/eco/npm/yarnpkg/yarn/exec.js +60 -59
  135. package/dist/eco/npm/yarnpkg/yarn/lockfile-format.js +20 -36
  136. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +194 -242
  137. package/dist/eco/npm/yarnpkg/yarn/parse-yarn-descriptor.js +37 -61
  138. package/dist/eco/purl.js +50 -60
  139. package/dist/eco/types.js +1 -17
  140. package/dist/effects/pulse-frames.js +64 -65
  141. package/dist/effects/shimmer-keyframes.js +71 -52
  142. package/dist/effects/shimmer-terminal.js +81 -50
  143. package/dist/effects/shimmer.js +290 -153
  144. package/dist/env/boolean.js +42 -43
  145. package/dist/env/case-insensitive.js +54 -39
  146. package/dist/env/ci.js +29 -31
  147. package/dist/env/debug.js +28 -31
  148. package/dist/env/github.js +144 -59
  149. package/dist/env/home.js +38 -31
  150. package/dist/env/locale.js +59 -39
  151. package/dist/env/node-auth-token.js +28 -31
  152. package/dist/env/node-env.js +28 -31
  153. package/dist/env/npm.js +94 -47
  154. package/dist/env/number.js +50 -51
  155. package/dist/env/package-manager.js +95 -83
  156. package/dist/env/path.js +28 -31
  157. package/dist/env/pre-commit.js +30 -32
  158. package/dist/env/proxy.js +121 -122
  159. package/dist/env/rewire.js +204 -96
  160. package/dist/env/shell.js +28 -31
  161. package/dist/env/socket-cli.js +233 -81
  162. package/dist/env/socket.js +521 -156
  163. package/dist/env/string.js +43 -44
  164. package/dist/env/temp-dir.js +59 -39
  165. package/dist/env/term.js +28 -31
  166. package/dist/env/test.js +65 -43
  167. package/dist/env/types.js +1 -17
  168. package/dist/env/windows.js +78 -43
  169. package/dist/env/xdg.js +62 -39
  170. package/dist/errors/message.js +40 -46
  171. package/dist/errors/predicates.js +61 -49
  172. package/dist/errors/stack.js +24 -36
  173. package/dist/events/exit/_internal.js +86 -103
  174. package/dist/events/exit/handler.js +48 -55
  175. package/dist/events/exit/intercept.js +49 -70
  176. package/dist/events/exit/lifecycle.js +92 -101
  177. package/dist/events/exit/signals.js +25 -31
  178. package/dist/events/exit/types.js +1 -17
  179. package/dist/events/warning/handler.js +43 -40
  180. package/dist/events/warning/suppress.js +111 -90
  181. package/dist/external/@npmcli/package-json/lib/read-package.js +132 -153
  182. package/dist/external/@npmcli/package-json/lib/sort.js +73 -105
  183. package/dist/external/@npmcli/package-json.js +12705 -15140
  184. package/dist/external/@npmcli/promise-spawn.js +451 -472
  185. package/dist/external/@sinclair/typebox/value.js +7443 -9002
  186. package/dist/external/@sinclair/typebox.js +7516 -7885
  187. package/dist/external/@socketregistry/is-unicode-supported.js +31 -39
  188. package/dist/external/@socketregistry/packageurl-js.js +6127 -7369
  189. package/dist/external/@socketregistry/yocto-spinner.js +394 -455
  190. package/dist/external/@yarnpkg/extensions.js +435 -1022
  191. package/dist/external/adm-zip.js +2313 -2673
  192. package/dist/external/debug.js +700 -687
  193. package/dist/external/external-pack.js +2658 -3171
  194. package/dist/external/fast-sort.js +124 -138
  195. package/dist/external/get-east-asian-width.js +70 -64
  196. package/dist/external/libnpmexec.js +28 -31
  197. package/dist/external/npm-pack.js +43617 -50137
  198. package/dist/external/p-map.js +198 -222
  199. package/dist/external/pico-pack.js +6735 -7304
  200. package/dist/external/pony-cause.js +143 -139
  201. package/dist/external/shell-quote.js +226 -0
  202. package/dist/external/spdx-pack.js +1283 -1403
  203. package/dist/external/streaming-iterables.js +835 -1052
  204. package/dist/external/tar-fs.js +2769 -3048
  205. package/dist/external/which.js +267 -251
  206. package/dist/external/yargs-parser.js +851 -1074
  207. package/dist/external-tools/bazel/asset-names.js +98 -90
  208. package/dist/external-tools/bazel/from-download.js +52 -46
  209. package/dist/external-tools/bazel/from-path.js +27 -38
  210. package/dist/external-tools/bazel/read-bazel-version-file.js +35 -57
  211. package/dist/external-tools/bazel/resolve-asset-url.js +24 -39
  212. package/dist/external-tools/bazel/resolve-bazel-version.js +34 -56
  213. package/dist/external-tools/bazel/resolve.js +44 -58
  214. package/dist/external-tools/bazel/types.js +1 -17
  215. package/dist/external-tools/cdxgen/asset-names.js +59 -66
  216. package/dist/external-tools/cdxgen/from-download.js +52 -80
  217. package/dist/external-tools/cdxgen/from-path.js +19 -37
  218. package/dist/external-tools/cdxgen/from-vfs.js +22 -43
  219. package/dist/external-tools/cdxgen/resolve.js +48 -63
  220. package/dist/external-tools/cdxgen/types.js +1 -17
  221. package/dist/external-tools/from-download.js +107 -67
  222. package/dist/external-tools/janus/asset-names.js +44 -51
  223. package/dist/external-tools/janus/from-download.js +45 -70
  224. package/dist/external-tools/janus/from-path.js +19 -37
  225. package/dist/external-tools/janus/from-vfs.js +22 -43
  226. package/dist/external-tools/janus/resolve.js +45 -63
  227. package/dist/external-tools/janus/types.js +1 -17
  228. package/dist/external-tools/jre/asset-names.js +109 -82
  229. package/dist/external-tools/jre/detect-platform-arch.js +25 -49
  230. package/dist/external-tools/jre/from-download.js +71 -67
  231. package/dist/external-tools/jre/from-java-home.js +27 -54
  232. package/dist/external-tools/jre/from-path.js +27 -49
  233. package/dist/external-tools/jre/from-vfs.js +39 -60
  234. package/dist/external-tools/jre/resolve.js +55 -68
  235. package/dist/external-tools/jre/types.js +1 -17
  236. package/dist/external-tools/manifest.js +130 -150
  237. package/dist/external-tools/opengrep/asset-names.js +60 -72
  238. package/dist/external-tools/opengrep/from-download.js +58 -80
  239. package/dist/external-tools/opengrep/from-path.js +19 -37
  240. package/dist/external-tools/opengrep/from-vfs.js +23 -43
  241. package/dist/external-tools/opengrep/resolve.js +43 -63
  242. package/dist/external-tools/opengrep/types.js +1 -17
  243. package/dist/external-tools/sbt/asset-names.js +21 -30
  244. package/dist/external-tools/sbt/from-download.js +50 -61
  245. package/dist/external-tools/sbt/from-path.js +23 -38
  246. package/dist/external-tools/sbt/from-vfs.js +30 -44
  247. package/dist/external-tools/sbt/resolve.js +45 -63
  248. package/dist/external-tools/sbt/types.js +1 -17
  249. package/dist/external-tools/synp/asset-names.js +11 -29
  250. package/dist/external-tools/synp/from-download.js +24 -41
  251. package/dist/external-tools/synp/from-path.js +19 -37
  252. package/dist/external-tools/synp/from-vfs.js +22 -43
  253. package/dist/external-tools/synp/resolve.js +43 -62
  254. package/dist/external-tools/synp/types.js +1 -17
  255. package/dist/external-tools/trivy/asset-names.js +51 -62
  256. package/dist/external-tools/trivy/from-download.js +42 -64
  257. package/dist/external-tools/trivy/from-path.js +19 -37
  258. package/dist/external-tools/trivy/from-vfs.js +22 -43
  259. package/dist/external-tools/trivy/resolve.js +43 -63
  260. package/dist/external-tools/trivy/types.js +1 -17
  261. package/dist/external-tools/trufflehog/asset-names.js +54 -66
  262. package/dist/external-tools/trufflehog/from-download.js +44 -62
  263. package/dist/external-tools/trufflehog/from-path.js +21 -37
  264. package/dist/external-tools/trufflehog/from-vfs.js +26 -43
  265. package/dist/external-tools/trufflehog/resolve.js +43 -63
  266. package/dist/external-tools/trufflehog/types.js +1 -17
  267. package/dist/external-tools/uv/asset-names.js +64 -74
  268. package/dist/external-tools/uv/from-download.js +44 -65
  269. package/dist/external-tools/uv/from-path.js +19 -37
  270. package/dist/external-tools/uv/from-vfs.js +22 -43
  271. package/dist/external-tools/uv/resolve.js +42 -63
  272. package/dist/external-tools/uv/types.js +1 -17
  273. package/dist/fs/_internal.js +40 -42
  274. package/dist/fs/access.d.ts +32 -0
  275. package/dist/fs/access.js +66 -0
  276. package/dist/fs/encoding.js +80 -97
  277. package/dist/fs/find-up.js +126 -147
  278. package/dist/fs/inspect.js +168 -99
  279. package/dist/fs/path-cache.js +31 -32
  280. package/dist/fs/read-dir.js +102 -79
  281. package/dist/fs/read-file.js +177 -118
  282. package/dist/fs/read-json-cache.js +150 -134
  283. package/dist/fs/read-json.js +172 -187
  284. package/dist/fs/resolve-module.d.ts +57 -0
  285. package/dist/fs/resolve-module.js +40 -0
  286. package/dist/fs/safe.js +278 -169
  287. package/dist/fs/types.js +1 -17
  288. package/dist/fs/unique.js +52 -48
  289. package/dist/fs/validate.js +56 -43
  290. package/dist/fs/write-json.js +109 -75
  291. package/dist/git/_internal.js +251 -216
  292. package/dist/git/changed.js +191 -74
  293. package/dist/git/repo.js +118 -104
  294. package/dist/git/staged.js +172 -62
  295. package/dist/git/types.js +1 -17
  296. package/dist/git/unstaged.js +175 -62
  297. package/dist/github/constants.js +25 -33
  298. package/dist/github/errors.js +46 -38
  299. package/dist/github/fetch.js +137 -82
  300. package/dist/github/ghsa.js +217 -151
  301. package/dist/github/refs-cache.js +54 -43
  302. package/dist/github/refs-graphql.js +97 -89
  303. package/dist/github/refs-rest.js +70 -101
  304. package/dist/github/refs.js +105 -64
  305. package/dist/github/token.js +96 -48
  306. package/dist/github/types.js +1 -17
  307. package/dist/globs/_internal.js +73 -82
  308. package/dist/globs/defaults.js +40 -59
  309. package/dist/globs/match.js +93 -77
  310. package/dist/globs/matcher.js +104 -92
  311. package/dist/globs/stream.js +43 -55
  312. package/dist/globs/types.js +1 -17
  313. package/dist/http-request/_internal.js +11 -38
  314. package/dist/http-request/browser-fetch.js +19 -29
  315. package/dist/http-request/browser.js +188 -206
  316. package/dist/http-request/checksums.js +101 -65
  317. package/dist/http-request/download-types.js +1 -17
  318. package/dist/http-request/download.js +195 -196
  319. package/dist/http-request/errors.js +39 -47
  320. package/dist/http-request/headers.js +95 -80
  321. package/dist/http-request/http-request.js +10 -35
  322. package/dist/http-request/node.js +71 -97
  323. package/dist/http-request/request-attempt.js +232 -285
  324. package/dist/http-request/request-types.js +1 -17
  325. package/dist/http-request/request.js +106 -108
  326. package/dist/http-request/response-reader.js +47 -51
  327. package/dist/http-request/response-types.js +22 -38
  328. package/dist/http-request/user-agent.js +73 -55
  329. package/dist/integrity.js +105 -106
  330. package/dist/ipc/_internal.js +34 -48
  331. package/dist/ipc/directory.js +55 -63
  332. package/dist/ipc/paths.js +52 -45
  333. package/dist/ipc/types.js +1 -17
  334. package/dist/ipc/write.js +81 -74
  335. package/dist/ipc-cli/get.js +29 -56
  336. package/dist/ipc-cli/types.js +1 -17
  337. package/dist/json/edit.js +182 -242
  338. package/dist/json/format.js +202 -103
  339. package/dist/json/parse.js +206 -109
  340. package/dist/json/types.js +1 -17
  341. package/dist/links/create.js +93 -60
  342. package/dist/links/types.js +1 -17
  343. package/dist/logger/_internal.js +109 -73
  344. package/dist/logger/browser.js +45 -56
  345. package/dist/logger/colors.js +31 -49
  346. package/dist/logger/console.js +89 -112
  347. package/dist/logger/default.js +19 -33
  348. package/dist/logger/logger.js +5 -29
  349. package/dist/logger/node.js +794 -854
  350. package/dist/logger/symbols-builder.js +54 -56
  351. package/dist/logger/symbols.js +135 -118
  352. package/dist/logger/types.js +1 -17
  353. package/dist/memo/_internal.js +39 -49
  354. package/dist/memo/async.js +133 -117
  355. package/dist/memo/clear.js +25 -34
  356. package/dist/memo/decorator.js +43 -37
  357. package/dist/memo/memoize.js +97 -88
  358. package/dist/memo/once.js +42 -41
  359. package/dist/memo/types.js +1 -17
  360. package/dist/memo/weak.js +45 -41
  361. package/dist/node/async-hooks.js +9 -30
  362. package/dist/node/child-process.js +9 -30
  363. package/dist/node/crypto.js +9 -30
  364. package/dist/node/events.js +9 -30
  365. package/dist/node/fs-promises.js +9 -30
  366. package/dist/node/fs.js +9 -30
  367. package/dist/node/http.js +9 -30
  368. package/dist/node/https.js +9 -30
  369. package/dist/node/module.js +20 -34
  370. package/dist/node/os.js +9 -30
  371. package/dist/node/path.js +9 -30
  372. package/dist/node/timers-promises.js +9 -30
  373. package/dist/node/url.js +9 -30
  374. package/dist/node/util.js +9 -30
  375. package/dist/objects/getters.js +185 -126
  376. package/dist/objects/inspect.js +85 -52
  377. package/dist/objects/mutate.js +96 -76
  378. package/dist/objects/predicates.js +112 -59
  379. package/dist/objects/sort.js +120 -76
  380. package/dist/objects/types.js +1 -17
  381. package/dist/packages/edit-class.js +198 -265
  382. package/dist/packages/edit.js +79 -86
  383. package/dist/packages/exports.js +146 -157
  384. package/dist/packages/isolation.js +159 -209
  385. package/dist/packages/licenses.js +207 -189
  386. package/dist/packages/manifest.js +134 -172
  387. package/dist/packages/normalize.js +91 -102
  388. package/dist/packages/operations.d.ts +2 -0
  389. package/dist/packages/operations.js +283 -254
  390. package/dist/packages/provenance.js +195 -245
  391. package/dist/packages/specs.js +94 -84
  392. package/dist/packages/types.js +1 -17
  393. package/dist/packages/validation.js +49 -50
  394. package/dist/paths/_internal.js +82 -86
  395. package/dist/paths/conversion.js +112 -65
  396. package/dist/paths/dirnames.js +17 -42
  397. package/dist/paths/exts.js +23 -54
  398. package/dist/paths/filenames.js +21 -50
  399. package/dist/paths/globs.js +15 -38
  400. package/dist/paths/normalize.js +215 -236
  401. package/dist/paths/packages.js +34 -49
  402. package/dist/paths/predicates.js +184 -106
  403. package/dist/paths/resolve.js +146 -128
  404. package/dist/paths/rewire.js +108 -72
  405. package/dist/paths/socket.js +252 -132
  406. package/dist/paths/walk.d.ts +40 -0
  407. package/dist/paths/walk.js +58 -0
  408. package/dist/perf/_internal.js +10 -28
  409. package/dist/perf/enabled.js +21 -30
  410. package/dist/perf/metrics.js +81 -67
  411. package/dist/perf/report.js +79 -80
  412. package/dist/perf/timer.js +180 -126
  413. package/dist/perf/types.js +1 -17
  414. package/dist/pkg-ext/data.js +29 -82
  415. package/dist/pkg-ext/types.js +1 -17
  416. package/dist/primordials/array.js +120 -198
  417. package/dist/primordials/buffer.js +28 -51
  418. package/dist/primordials/date.js +26 -51
  419. package/dist/primordials/error.js +33 -59
  420. package/dist/primordials/function.js +21 -41
  421. package/dist/primordials/globals.js +25 -48
  422. package/dist/primordials/json.js +14 -30
  423. package/dist/primordials/map-set.js +88 -152
  424. package/dist/primordials/math.js +59 -116
  425. package/dist/primordials/number.js +41 -76
  426. package/dist/primordials/object.js +56 -116
  427. package/dist/primordials/promise.js +28 -52
  428. package/dist/primordials/reflect.js +24 -52
  429. package/dist/primordials/regexp.js +25 -47
  430. package/dist/primordials/string.js +114 -167
  431. package/dist/primordials/symbol.js +40 -72
  432. package/dist/primordials/uncurry.js +38 -55
  433. package/dist/primordials/url.js +27 -66
  434. package/dist/process/_internal.js +7 -32
  435. package/dist/process/abort.js +29 -35
  436. package/dist/process/lock-instance.js +26 -30
  437. package/dist/process/lock-manager.js +279 -307
  438. package/dist/process/lock-types.js +1 -17
  439. package/dist/process/spawn/_internal.js +43 -55
  440. package/dist/process/spawn/child.js +172 -211
  441. package/dist/process/spawn/errors.js +116 -113
  442. package/dist/process/spawn/stdio.js +51 -35
  443. package/dist/process/spawn/types.js +1 -17
  444. package/dist/process/transient.js +49 -66
  445. package/dist/promises/_internal.d.ts +8 -2
  446. package/dist/promises/_internal.js +31 -38
  447. package/dist/promises/iterate.js +238 -102
  448. package/dist/promises/options.js +123 -101
  449. package/dist/promises/queue.js +115 -136
  450. package/dist/promises/resolvers.js +77 -46
  451. package/dist/promises/retry.js +156 -101
  452. package/dist/promises/types.js +1 -17
  453. package/dist/regexps/escape.js +32 -30
  454. package/dist/regexps/hex.js +16 -33
  455. package/dist/regexps/spec.js +53 -81
  456. package/dist/releases/github-archives.js +127 -118
  457. package/dist/releases/github-asset-url.js +162 -155
  458. package/dist/releases/github-assets.js +37 -49
  459. package/dist/releases/github-auth.js +32 -48
  460. package/dist/releases/github-downloads.js +118 -138
  461. package/dist/releases/github-listing.js +175 -154
  462. package/dist/releases/github-retry-config.d.ts +31 -0
  463. package/dist/releases/github-retry-config.js +46 -0
  464. package/dist/releases/github-types.js +1 -17
  465. package/dist/releases/socket-btm.js +273 -192
  466. package/dist/schema/parse.js +35 -36
  467. package/dist/schema/types.js +1 -17
  468. package/dist/schema/validate.js +118 -99
  469. package/dist/sea/detect.js +57 -52
  470. package/dist/secrets/_internal.js +86 -67
  471. package/dist/secrets/find.js +96 -77
  472. package/dist/secrets/keychain.js +315 -309
  473. package/dist/secrets/linux.js +133 -135
  474. package/dist/secrets/macos.js +151 -147
  475. package/dist/secrets/rc.js +182 -181
  476. package/dist/secrets/socket-api-token.js +28 -43
  477. package/dist/secrets/types.js +1 -17
  478. package/dist/secrets/windows.js +184 -242
  479. package/dist/shadow/skip.js +51 -70
  480. package/dist/shadow/types.js +1 -17
  481. package/dist/shell/parse.d.ts +26 -0
  482. package/dist/shell/parse.js +35 -0
  483. package/dist/shell/quote.d.ts +19 -0
  484. package/dist/shell/quote.js +30 -0
  485. package/dist/smol/detect.js +67 -43
  486. package/dist/smol/http.js +33 -37
  487. package/dist/smol/https.js +31 -37
  488. package/dist/smol/manifest.js +33 -37
  489. package/dist/smol/path.d.ts +51 -0
  490. package/dist/smol/path.js +38 -0
  491. package/dist/smol/primordial.js +35 -37
  492. package/dist/smol/purl.js +34 -37
  493. package/dist/smol/versions.js +31 -37
  494. package/dist/smol/vfs.js +46 -38
  495. package/dist/sorts/_internal.js +14 -40
  496. package/dist/sorts/natural.js +57 -64
  497. package/dist/sorts/semver.js +33 -43
  498. package/dist/sorts/strings.js +24 -30
  499. package/dist/sorts/types.js +1 -17
  500. package/dist/spinner/default.js +72 -63
  501. package/dist/spinner/format.js +86 -71
  502. package/dist/spinner/spinner.js +749 -797
  503. package/dist/spinner/types.js +1 -17
  504. package/dist/spinner/with.js +193 -137
  505. package/dist/ssri/convert.js +64 -47
  506. package/dist/ssri/parse.js +38 -37
  507. package/dist/ssri/validate.js +51 -34
  508. package/dist/stdio/_internal.js +50 -46
  509. package/dist/stdio/clear.js +208 -86
  510. package/dist/stdio/divider.js +170 -97
  511. package/dist/stdio/footer.js +116 -110
  512. package/dist/stdio/header.js +117 -90
  513. package/dist/stdio/progress.js +189 -218
  514. package/dist/stdio/prompts.js +244 -168
  515. package/dist/stdio/stderr.js +173 -78
  516. package/dist/stdio/stdout.js +177 -94
  517. package/dist/streams/parallel.js +58 -50
  518. package/dist/streams/transform.js +36 -45
  519. package/dist/strings/format.js +145 -63
  520. package/dist/strings/predicates.js +56 -34
  521. package/dist/strings/search.js +52 -42
  522. package/dist/strings/transform.js +113 -72
  523. package/dist/strings/types.js +1 -17
  524. package/dist/strings/width.js +89 -82
  525. package/dist/tables/bordered.js +81 -81
  526. package/dist/tables/padding.js +36 -46
  527. package/dist/tables/simple.js +62 -70
  528. package/dist/tables/types.js +1 -17
  529. package/dist/temporal/instant.js +72 -81
  530. package/dist/temporal/now.js +40 -31
  531. package/dist/temporal/slots.js +42 -36
  532. package/dist/temporal/system.js +36 -36
  533. package/dist/temporal/temporal.js +11 -41
  534. package/dist/themes/context.js +131 -69
  535. package/dist/themes/resolve.js +207 -132
  536. package/dist/themes/themes.js +225 -194
  537. package/dist/themes/types.js +1 -17
  538. package/dist/url/parse.js +48 -51
  539. package/dist/url/predicates.js +24 -31
  540. package/dist/url/search-params.js +133 -101
  541. package/dist/url/types.js +1 -17
  542. package/dist/versions/_internal.js +31 -33
  543. package/dist/versions/compare.js +80 -58
  544. package/dist/versions/modify.js +41 -39
  545. package/dist/versions/parse.js +88 -64
  546. package/dist/versions/range.js +58 -41
  547. package/dist/versions/types.js +1 -17
  548. package/dist/words/article.js +22 -30
  549. package/dist/words/capitalize.js +25 -34
  550. package/dist/words/pluralize.js +23 -31
  551. package/dist/words/types.js +1 -17
  552. package/package.json +42 -5
@@ -1,224 +1,206 @@
1
1
  "use strict";
2
- /* Socket Lib - Built with esbuild */
3
- "use strict";
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_http_request_browser_fetch = require('./browser-fetch.js');
5
+
6
+ //#region src/http-request/browser.ts
7
+ /**
8
+ * @file Browser-safe HTTP request layer — mirrors the public surface of
9
+ * `@socketsecurity/lib/http-request` (`httpJson`, `httpText`, `httpRequest`,
10
+ * `HttpResponseError`) but uses the browser's `fetch` API instead of Node's
11
+ * `node:https`. Designed for Chrome MV3 service workers, content scripts,
12
+ * popups, and any other browser context that doesn't have `node:http` /
13
+ * `node:https` / `node:stream`. Consumers import from
14
+ * `@socketsecurity/lib/http-request/browser` directly, OR from
15
+ * `@socketsecurity/lib/http-request` inside a bundler that resolves the
16
+ * `browser` package.json conditional (rolldown, vite, esbuild) the bundler
17
+ * picks this entry automatically. API parity with the Node side is the goal —
18
+ * same function names, same option shapes (where browsers can support them),
19
+ * same error shape. Caveats:
20
+ *
21
+ * - `HttpResponse.body` is `Uint8Array` here, vs Node's `Buffer`. Most callers
22
+ * use `arrayBuffer()` / `text()` / `json()` and don't care.
23
+ * - `HttpResponse.headers` is `Record<string, string>` here, vs Node's
24
+ * `IncomingHttpHeaders` (which has array-valued headers like `set-cookie`).
25
+ * Browser `fetch()` flattens repeated headers per spec.
26
+ * - Hooks (`onRequest` / `onResponse`) are not yet supported in the browser
27
+ * path. Add when needed.
28
+ */
29
+ /**
30
+ * Browser-side HTTP error. Mirrors the Node-side `HttpResponseError` shape
31
+ * (same `.name`, same `.response.status/statusText` access pattern, same
32
+ * `instanceof` semantics) but constructs from a `BrowserHttpResponse` instead
33
+ * of a Node `HttpResponse`.
34
+ */
35
+ var HttpResponseError = class extends Error {
36
+ response;
37
+ constructor(response, message) {
38
+ const statusCode = response.status ?? "unknown";
39
+ const statusMessage = response.statusText || "No status message";
40
+ super(message ?? `HTTP ${statusCode}: ${statusMessage}`);
41
+ this.name = "HttpResponseError";
42
+ this.response = response;
43
+ }
19
44
  };
20
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
- var browser_exports = {};
22
- __export(browser_exports, {
23
- HttpResponseError: () => HttpResponseError,
24
- attempt: () => attempt,
25
- combineSignals: () => combineSignals,
26
- decodeText: () => decodeText,
27
- headersToRecord: () => headersToRecord,
28
- httpJson: () => httpJson,
29
- httpRequest: () => httpRequest,
30
- httpText: () => httpText,
31
- sleep: () => sleep
32
- });
33
- module.exports = __toCommonJS(browser_exports);
34
- var import_browser_fetch = require("./browser-fetch");
35
- class HttpResponseError extends Error {
36
- response;
37
- constructor(response, message) {
38
- const statusCode = response.status ?? "unknown";
39
- const statusMessage = response.statusText || "No status message";
40
- super(message ?? `HTTP ${statusCode}: ${statusMessage}`);
41
- this.name = "HttpResponseError";
42
- this.response = response;
43
- }
44
- }
45
+ /**
46
+ * Combine an external `signal` with an internal `timeout`-driven
47
+ * AbortController so either can cancel the in-flight fetch.
48
+ */
45
49
  function combineSignals(external, timeoutMs) {
46
- if (!timeoutMs) {
47
- return { signal: external, cleanup: () => {
48
- } };
49
- }
50
- const controller = new AbortController();
51
- const timer = setTimeout(() => controller.abort(), timeoutMs);
52
- let externalListener;
53
- if (external) {
54
- if (external.aborted) {
55
- controller.abort();
56
- } else {
57
- externalListener = () => controller.abort();
58
- external.addEventListener("abort", externalListener);
59
- }
60
- }
61
- return {
62
- signal: controller.signal,
63
- cleanup: () => {
64
- clearTimeout(timer);
65
- if (external && externalListener) {
66
- external.removeEventListener("abort", externalListener);
67
- }
68
- }
69
- };
50
+ if (!timeoutMs) return {
51
+ signal: external,
52
+ cleanup: () => {}
53
+ };
54
+ const controller = new AbortController();
55
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
56
+ let externalListener;
57
+ if (external) if (external.aborted) controller.abort();
58
+ else {
59
+ externalListener = () => controller.abort();
60
+ external.addEventListener("abort", externalListener);
61
+ }
62
+ return {
63
+ signal: controller.signal,
64
+ cleanup: () => {
65
+ clearTimeout(timer);
66
+ if (external && externalListener) external.removeEventListener("abort", externalListener);
67
+ }
68
+ };
70
69
  }
71
70
  async function attempt(url, options) {
72
- const method = options.method ?? "GET";
73
- const init = { method };
74
- if (options.headers) {
75
- init.headers = options.headers;
76
- }
77
- if (options.body !== void 0) {
78
- ;
79
- init.body = options.body;
80
- }
81
- if (options.followRedirects === false) {
82
- init.redirect = "manual";
83
- }
84
- const { signal, cleanup } = combineSignals(options.signal, options.timeout);
85
- if (signal) {
86
- init.signal = signal;
87
- }
88
- const startedAt = Date.now();
89
- if (options.hooks?.onRequest) {
90
- options.hooks.onRequest({
91
- method,
92
- url,
93
- headers: options.headers,
94
- timeout: options.timeout
95
- });
96
- }
97
- try {
98
- const response = await (0, import_browser_fetch.doFetch)(url, init);
99
- const buffer = await response.arrayBuffer();
100
- if (options.maxResponseSize !== void 0 && buffer.byteLength > options.maxResponseSize) {
101
- throw new Error(
102
- `Response body (${buffer.byteLength} bytes) exceeds maxResponseSize (${options.maxResponseSize})`
103
- );
104
- }
105
- const body = new Uint8Array(buffer);
106
- const headers = headersToRecord(response.headers);
107
- if (options.hooks?.onResponse) {
108
- options.hooks.onResponse({
109
- method,
110
- url,
111
- duration: Date.now() - startedAt,
112
- status: response.status,
113
- statusText: response.statusText,
114
- headers
115
- });
116
- }
117
- return {
118
- body,
119
- headers,
120
- status: response.status,
121
- statusText: response.statusText,
122
- ok: response.ok,
123
- url: response.url,
124
- arrayBuffer() {
125
- return buffer;
126
- },
127
- text() {
128
- return decodeText(body);
129
- },
130
- json() {
131
- return JSON.parse(decodeText(body));
132
- }
133
- };
134
- } catch (err) {
135
- if (options.hooks?.onResponse) {
136
- options.hooks.onResponse({
137
- method,
138
- url,
139
- duration: Date.now() - startedAt,
140
- error: err instanceof Error ? err : new Error(String(err))
141
- });
142
- }
143
- throw err;
144
- } finally {
145
- cleanup();
146
- }
71
+ const method = options.method ?? "GET";
72
+ const init = { method };
73
+ if (options.headers) init.headers = options.headers;
74
+ if (options.body !== void 0) init.body = options.body;
75
+ if (options.followRedirects === false) init.redirect = "manual";
76
+ const { signal, cleanup } = combineSignals(options.signal, options.timeout);
77
+ if (signal) init.signal = signal;
78
+ const startedAt = Date.now();
79
+ if (options.hooks?.onRequest) options.hooks.onRequest({
80
+ method,
81
+ url,
82
+ headers: options.headers,
83
+ timeout: options.timeout
84
+ });
85
+ try {
86
+ const response = await require_http_request_browser_fetch.doFetch(url, init);
87
+ const buffer = await response.arrayBuffer();
88
+ if (options.maxResponseSize !== void 0 && buffer.byteLength > options.maxResponseSize) throw new Error(`Response body (${buffer.byteLength} bytes) exceeds maxResponseSize (${options.maxResponseSize})`);
89
+ const body = new Uint8Array(buffer);
90
+ const headers = headersToRecord(response.headers);
91
+ if (options.hooks?.onResponse) options.hooks.onResponse({
92
+ method,
93
+ url,
94
+ duration: Date.now() - startedAt,
95
+ status: response.status,
96
+ statusText: response.statusText,
97
+ headers
98
+ });
99
+ return {
100
+ body,
101
+ headers,
102
+ status: response.status,
103
+ statusText: response.statusText,
104
+ ok: response.ok,
105
+ url: response.url,
106
+ arrayBuffer() {
107
+ return buffer;
108
+ },
109
+ text() {
110
+ return decodeText(body);
111
+ },
112
+ json() {
113
+ return JSON.parse(decodeText(body));
114
+ }
115
+ };
116
+ } catch (err) {
117
+ if (options.hooks?.onResponse) options.hooks.onResponse({
118
+ method,
119
+ url,
120
+ duration: Date.now() - startedAt,
121
+ error: err instanceof Error ? err : new Error(String(err))
122
+ });
123
+ throw err;
124
+ } finally {
125
+ cleanup();
126
+ }
147
127
  }
148
128
  function decodeText(bytes) {
149
- return new TextDecoder("utf-8").decode(bytes);
129
+ return new TextDecoder("utf-8").decode(bytes);
150
130
  }
151
131
  function headersToRecord(headers) {
152
- const out = {};
153
- headers.forEach((value, key) => {
154
- out[key.toLowerCase()] = value;
155
- });
156
- return out;
132
+ const out = {};
133
+ headers.forEach((value, key) => {
134
+ out[key.toLowerCase()] = value;
135
+ });
136
+ return out;
157
137
  }
138
+ /**
139
+ * GET / POST a JSON endpoint. Automatically sets `Accept: application/json` and
140
+ * `Content-Type: application/json` (when a body is present). Throws
141
+ * `HttpResponseError` on non-2xx.
142
+ */
158
143
  async function httpJson(url, options) {
159
- const opts = options ?? {};
160
- const headers = {
161
- Accept: "application/json",
162
- ...opts.headers ?? {}
163
- };
164
- if (opts.body !== void 0 && !("Content-Type" in headers)) {
165
- headers["Content-Type"] = "application/json";
166
- }
167
- const response = await httpRequest(url, {
168
- ...opts,
169
- headers,
170
- throwOnError: true
171
- });
172
- return response.json();
144
+ const opts = options ?? {};
145
+ const headers = {
146
+ Accept: "application/json",
147
+ ...opts.headers ?? {}
148
+ };
149
+ if (opts.body !== void 0 && !("Content-Type" in headers)) headers["Content-Type"] = "application/json";
150
+ return (await httpRequest(url, {
151
+ ...opts,
152
+ headers,
153
+ throwOnError: true
154
+ })).json();
173
155
  }
156
+ /**
157
+ * Lower-level HTTP request. Use `httpJson` / `httpText` for the common cases.
158
+ * Returns the response unconditionally — callers inspect `.ok` or pass
159
+ * `throwOnError: true` to get a thrown `HttpResponseError` on non-2xx.
160
+ */
174
161
  async function httpRequest(url, options) {
175
- const opts = options ?? {};
176
- const maxAttempts = (opts.retries ?? 0) + 1;
177
- const baseDelay = opts.retryDelay ?? 250;
178
- let lastError;
179
- for (let i = 0; i < maxAttempts; i++) {
180
- try {
181
- const response = await attempt(url, opts);
182
- if (response.status >= 500 && i + 1 < maxAttempts) {
183
- await sleep(baseDelay * Math.pow(2, i));
184
- continue;
185
- }
186
- if (opts.throwOnError && !response.ok) {
187
- throw new HttpResponseError(response);
188
- }
189
- return response;
190
- } catch (err) {
191
- lastError = err;
192
- if (err instanceof HttpResponseError) {
193
- throw err;
194
- }
195
- if (i + 1 < maxAttempts) {
196
- await sleep(baseDelay * Math.pow(2, i));
197
- continue;
198
- }
199
- }
200
- }
201
- throw lastError instanceof Error ? lastError : new Error(`HTTP request to ${url} failed`);
162
+ const opts = options ?? {};
163
+ const maxAttempts = (opts.retries ?? 0) + 1;
164
+ const baseDelay = opts.retryDelay ?? 250;
165
+ let lastError;
166
+ for (let i = 0; i < maxAttempts; i++) try {
167
+ const response = await attempt(url, opts);
168
+ if (response.status >= 500 && i + 1 < maxAttempts) {
169
+ await sleep(baseDelay * Math.pow(2, i));
170
+ continue;
171
+ }
172
+ if (opts.throwOnError && !response.ok) throw new HttpResponseError(response);
173
+ return response;
174
+ } catch (err) {
175
+ lastError = err;
176
+ if (err instanceof HttpResponseError) throw err;
177
+ if (i + 1 < maxAttempts) {
178
+ await sleep(baseDelay * Math.pow(2, i));
179
+ continue;
180
+ }
181
+ }
182
+ throw lastError instanceof Error ? lastError : /* @__PURE__ */ new Error(`HTTP request to ${url} failed`);
202
183
  }
184
+ /**
185
+ * GET / POST a text endpoint. Throws `HttpResponseError` on non-2xx.
186
+ */
203
187
  async function httpText(url, options) {
204
- const response = await httpRequest(url, {
205
- ...options ?? {},
206
- throwOnError: true
207
- });
208
- return response.text();
188
+ return (await httpRequest(url, {
189
+ ...options ?? {},
190
+ throwOnError: true
191
+ })).text();
209
192
  }
210
193
  function sleep(ms) {
211
- return new Promise((resolve) => setTimeout(resolve, ms));
194
+ return new Promise((resolve) => setTimeout(resolve, ms));
212
195
  }
213
- // Annotate the CommonJS export names for ESM import in node:
214
- 0 && (module.exports = {
215
- HttpResponseError,
216
- attempt,
217
- combineSignals,
218
- decodeText,
219
- headersToRecord,
220
- httpJson,
221
- httpRequest,
222
- httpText,
223
- sleep
224
- });
196
+
197
+ //#endregion
198
+ exports.HttpResponseError = HttpResponseError;
199
+ exports.attempt = attempt;
200
+ exports.combineSignals = combineSignals;
201
+ exports.decodeText = decodeText;
202
+ exports.headersToRecord = headersToRecord;
203
+ exports.httpJson = httpJson;
204
+ exports.httpRequest = httpRequest;
205
+ exports.httpText = httpText;
206
+ exports.sleep = sleep;
@@ -1,72 +1,108 @@
1
1
  "use strict";
2
- /* Socket Lib - Built with esbuild */
3
- "use strict";
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
- var checksums_exports = {};
22
- __export(checksums_exports, {
23
- fetchChecksums: () => fetchChecksums,
24
- parseChecksums: () => parseChecksums
25
- });
26
- module.exports = __toCommonJS(checksums_exports);
27
- var import_error = require("../primordials/error");
28
- var import_string = require("../primordials/string");
29
- var import_request = require("./request");
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_primordials_string = require('../primordials/string.js');
6
+ const require_http_request_request = require('./request.js');
7
+
8
+ //#region src/http-request/checksums.ts
9
+ /**
10
+ * @file Checksum file fetching + parsing for download verification.
11
+ * `parseChecksums` understands the three common file shapes:
12
+ *
13
+ * - BSD style: `SHA256 (filename) = hash`
14
+ * - GNU style: `hash filename` (two spaces)
15
+ * - Simple: `hash filename` (single space) Comment lines (`#…`) and blank lines
16
+ * are skipped. Hashes are lowercased. `fetchChecksums` is the URL helper
17
+ * it fetches a checksums file via `httpRequest` and runs the body through
18
+ * `parseChecksums`. The pair lets `httpDownload({ sha256:
19
+ * checksums['file.zip'] })` keep the verification logic close to the
20
+ * manifest source.
21
+ */
30
22
  const CHECKSUM_BSD_RE = /^SHA256\s+\((.+)\)\s+=\s+([a-fA-F0-9]{64})$/;
31
23
  const CHECKSUM_GNU_RE = /^([a-fA-F0-9]{64})\s+(.+)$/;
24
+ /**
25
+ * Fetch and parse a checksums file from a URL.
26
+ *
27
+ * This is useful for verifying downloads from GitHub releases which typically
28
+ * publish a checksums.txt file alongside release assets.
29
+ *
30
+ * @example
31
+ * ;```ts
32
+ * // Fetch checksums from GitHub release
33
+ * const checksums = await fetchChecksums(
34
+ * 'https://github.com/org/repo/releases/download/v1.0.0/checksums.txt',
35
+ * )
36
+ *
37
+ * // Use with httpDownload
38
+ * await httpDownload(
39
+ * 'https://github.com/org/repo/releases/download/v1.0.0/tool_linux.tar.gz',
40
+ * '/tmp/tool.tar.gz',
41
+ * { sha256: checksums['tool_linux.tar.gz'] },
42
+ * )
43
+ * ```
44
+ *
45
+ * @param url - URL to the checksums file.
46
+ * @param options - Request options.
47
+ *
48
+ * @returns Map of filenames to lowercase SHA256 hashes
49
+ *
50
+ * @throws {Error} When the checksums file cannot be fetched
51
+ */
32
52
  async function fetchChecksums(url, options) {
33
- const {
34
- ca,
35
- headers = {},
36
- timeout = 3e4
37
- } = {
38
- __proto__: null,
39
- ...options
40
- };
41
- const response = await (0, import_request.httpRequest)(url, { ca, headers, timeout });
42
- if (!response.ok) {
43
- throw new import_error.ErrorCtor(
44
- `Failed to fetch checksums from ${url}: ${response.status} ${response.statusText}`
45
- );
46
- }
47
- return parseChecksums(response.body.toString("utf8"));
53
+ const { ca, headers = {}, timeout = 3e4 } = {
54
+ __proto__: null,
55
+ ...options
56
+ };
57
+ const response = await require_http_request_request.httpRequest(url, {
58
+ ca,
59
+ headers,
60
+ timeout
61
+ });
62
+ if (!response.ok) throw new require_primordials_error.ErrorCtor(`Failed to fetch checksums from ${url}: ${response.status} ${response.statusText}`);
63
+ return parseChecksums(response.body.toString("utf8"));
48
64
  }
65
+ /**
66
+ * Parse a checksums file text into a filename-to-hash map.
67
+ *
68
+ * Supports standard checksums file formats: - BSD style: "SHA256 (filename) =
69
+ * hash" - GNU style: "hash filename" (two spaces) - Simple style: "hash
70
+ * filename" (single space)
71
+ *
72
+ * Lines starting with '#' are treated as comments and ignored. Empty lines are
73
+ * ignored.
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * const text = `
78
+ * # SHA256 checksums
79
+ * e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 file.zip
80
+ * abc123def456... other.tar.gz
81
+ * `
82
+ * const checksums = parseChecksums(text)
83
+ * console.log(checksums['file.zip']) // 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
84
+ * ```
85
+ *
86
+ * @param text - Raw text content of a checksums file.
87
+ *
88
+ * @returns Map of filenames to lowercase SHA256 hashes
89
+ */
49
90
  function parseChecksums(text) {
50
- const checksums = { __proto__: null };
51
- for (const line of (0, import_string.StringPrototypeSplit)(text, "\n")) {
52
- const trimmed = line.trim();
53
- if (!trimmed || (0, import_string.StringPrototypeStartsWith)(trimmed, "#")) {
54
- continue;
55
- }
56
- const bsdMatch = CHECKSUM_BSD_RE.exec(trimmed);
57
- if (bsdMatch) {
58
- checksums[bsdMatch[1]] = bsdMatch[2].toLowerCase();
59
- continue;
60
- }
61
- const gnuMatch = CHECKSUM_GNU_RE.exec(trimmed);
62
- if (gnuMatch) {
63
- checksums[gnuMatch[2]] = gnuMatch[1].toLowerCase();
64
- }
65
- }
66
- return checksums;
91
+ const checksums = { __proto__: null };
92
+ for (const line of require_primordials_string.StringPrototypeSplit(text, "\n")) {
93
+ const trimmed = line.trim();
94
+ if (!trimmed || require_primordials_string.StringPrototypeStartsWith(trimmed, "#")) continue;
95
+ const bsdMatch = CHECKSUM_BSD_RE.exec(trimmed);
96
+ if (bsdMatch) {
97
+ checksums[bsdMatch[1]] = bsdMatch[2].toLowerCase();
98
+ continue;
99
+ }
100
+ const gnuMatch = CHECKSUM_GNU_RE.exec(trimmed);
101
+ if (gnuMatch) checksums[gnuMatch[2]] = gnuMatch[1].toLowerCase();
102
+ }
103
+ return checksums;
67
104
  }
68
- // Annotate the CommonJS export names for ESM import in node:
69
- 0 && (module.exports = {
70
- fetchChecksums,
71
- parseChecksums
72
- });
105
+
106
+ //#endregion
107
+ exports.fetchChecksums = fetchChecksums;
108
+ exports.parseChecksums = parseChecksums;
@@ -1,18 +1,2 @@
1
1
  "use strict";
2
- /* Socket Lib - Built with esbuild */
3
- "use strict";
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (let key of __getOwnPropNames(from))
11
- if (!__hasOwnProp.call(to, key) && key !== except)
12
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
- }
14
- return to;
15
- };
16
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
17
- var download_types_exports = {};
18
- module.exports = __toCommonJS(download_types_exports);
2
+ /* Socket Lib - Built with rolldown */