@socketsecurity/lib 6.0.6 → 6.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (619) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/README.md +1 -1
  3. package/dist/ai/agent-context.d.mts +103 -0
  4. package/dist/ai/agent-context.js +157 -0
  5. package/dist/ai/backends.d.mts +83 -0
  6. package/dist/ai/backends.js +173 -0
  7. package/dist/ai/credentials.d.mts +49 -0
  8. package/dist/ai/credentials.js +82 -0
  9. package/dist/ai/discover.d.mts +6 -2
  10. package/dist/ai/discover.js +4 -3
  11. package/dist/ai/exec.d.mts +52 -0
  12. package/dist/ai/exec.js +92 -0
  13. package/dist/ai/http.d.mts +132 -0
  14. package/dist/ai/http.js +130 -0
  15. package/dist/ai/profiles.d.mts +41 -6
  16. package/dist/ai/profiles.js +52 -10
  17. package/dist/ai/route.d.mts +69 -0
  18. package/dist/ai/route.js +156 -0
  19. package/dist/ai/spawn.d.mts +10 -2
  20. package/dist/ai/spawn.js +56 -31
  21. package/dist/ai/subagent-status.d.mts +48 -0
  22. package/dist/ai/subagent-status.js +57 -0
  23. package/dist/ai/tier.d.mts +60 -0
  24. package/dist/ai/tier.js +53 -0
  25. package/dist/ai/types.d.mts +31 -6
  26. package/dist/ai/worktree.d.mts +6 -6
  27. package/dist/ai/worktree.js +5 -1
  28. package/dist/ansi/strip.d.ts +1 -1
  29. package/dist/ansi/strip.js +0 -2
  30. package/dist/archives/_internal.js +7 -9
  31. package/dist/archives/extract.js +1 -1
  32. package/dist/archives/tar.js +7 -7
  33. package/dist/archives/zip.js +5 -7
  34. package/dist/argv/flag-predicates.d.ts +12 -12
  35. package/dist/argv/flag-predicates.js +17 -17
  36. package/dist/argv/flag-types.d.ts +18 -18
  37. package/dist/argv/flag-types.js +4 -4
  38. package/dist/argv/parse.d.ts +20 -3
  39. package/dist/argv/parse.js +1 -1
  40. package/dist/arrays/_internal.js +11 -12
  41. package/dist/arrays/chunk.js +0 -1
  42. package/dist/arrays/join.d.ts +37 -3
  43. package/dist/arrays/join.js +47 -7
  44. package/dist/arrays/unique.js +0 -1
  45. package/dist/bin/_internal.d.ts +1 -1
  46. package/dist/bin/_internal.js +1 -1
  47. package/dist/bin/exec.js +2 -3
  48. package/dist/bin/find.js +17 -17
  49. package/dist/bin/prim.cjs +36175 -35861
  50. package/dist/bin/resolve.js +13 -14
  51. package/dist/bin/which.js +8 -8
  52. package/dist/cache/ttl/store.js +6 -6
  53. package/dist/checks/primordials-defaults.d.ts +3 -3
  54. package/dist/checks/primordials-defaults.js +3 -3
  55. package/dist/checks/primordials.js +4 -3
  56. package/dist/{bin → cli}/check-primordials.d.ts +18 -13
  57. package/dist/{bin → cli}/check-primordials.js +58 -55
  58. package/dist/{bin → cli}/check.js +3 -3
  59. package/dist/{bin → cli}/socket-lib.d.ts +1 -1
  60. package/dist/{bin → cli}/socket-lib.js +4 -4
  61. package/dist/colors/socket-palette.js +7 -9
  62. package/dist/compression/_internal.d.ts +12 -12
  63. package/dist/compression/_internal.js +18 -18
  64. package/dist/compression/brotli.d.ts +26 -27
  65. package/dist/compression/brotli.js +39 -35
  66. package/dist/compression/gzip.d.ts +23 -23
  67. package/dist/compression/gzip.js +46 -42
  68. package/dist/constants/agents.d.ts +3 -1
  69. package/dist/constants/agents.js +15 -11
  70. package/dist/constants/licenses.js +3 -3
  71. package/dist/constants/node.d.ts +23 -0
  72. package/dist/constants/node.js +47 -15
  73. package/dist/constants/packages.d.ts +3 -0
  74. package/dist/constants/packages.js +24 -29
  75. package/dist/constants/platform.d.ts +30 -3
  76. package/dist/constants/platform.js +72 -12
  77. package/dist/constants/runtime.d.ts +22 -0
  78. package/dist/constants/runtime.js +32 -0
  79. package/dist/constants/socket.d.ts +2 -6
  80. package/dist/constants/socket.js +12 -14
  81. package/dist/cover/code.js +10 -10
  82. package/dist/cover/formatters.js +5 -5
  83. package/dist/crypto/hash.d.ts +30 -2
  84. package/dist/crypto/hash.js +47 -13
  85. package/dist/debug/_internal.js +4 -6
  86. package/dist/debug/caller-info.js +3 -4
  87. package/dist/debug/namespace.d.ts +7 -0
  88. package/dist/debug/namespace.js +21 -12
  89. package/dist/debug/output.js +21 -24
  90. package/dist/debug/types.d.ts +4 -4
  91. package/dist/dlx/arborist.js +18 -8
  92. package/dist/dlx/binary-cache.js +15 -15
  93. package/dist/dlx/binary-download.d.ts +1 -1
  94. package/dist/dlx/binary-download.js +11 -11
  95. package/dist/dlx/binary-resolution.js +17 -15
  96. package/dist/dlx/binary-types.d.ts +5 -5
  97. package/dist/dlx/binary.js +5 -5
  98. package/dist/dlx/cache.js +1 -1
  99. package/dist/dlx/detect.d.ts +42 -25
  100. package/dist/dlx/detect.js +86 -77
  101. package/dist/dlx/dir.js +2 -2
  102. package/dist/dlx/firewall.d.ts +9 -1
  103. package/dist/dlx/firewall.js +1 -1
  104. package/dist/dlx/lockfile.d.ts +19 -18
  105. package/dist/dlx/lockfile.js +19 -16
  106. package/dist/dlx/manifest.d.ts +6 -6
  107. package/dist/dlx/manifest.js +5 -5
  108. package/dist/dlx/package.d.ts +10 -10
  109. package/dist/dlx/package.js +20 -16
  110. package/dist/dlx/packages.js +4 -4
  111. package/dist/dlx/paths.js +7 -7
  112. package/dist/dlx/spec.js +1 -1
  113. package/dist/dlx/types.d.ts +28 -27
  114. package/dist/eco/cargo/parse-lockfile.d.ts +2 -3
  115. package/dist/eco/cargo/parse-lockfile.js +5 -5
  116. package/dist/eco/manifest/analyze-lockfile.js +2 -2
  117. package/dist/eco/manifest/detect-format.js +5 -5
  118. package/dist/eco/manifest/find-packages.js +2 -2
  119. package/dist/eco/manifest/get-package-versions.js +2 -2
  120. package/dist/eco/manifest/get-package.js +2 -2
  121. package/dist/eco/manifest/parse-lockfile.js +2 -2
  122. package/dist/eco/manifest/parse-manifest.js +2 -2
  123. package/dist/eco/manifest/parse.js +2 -2
  124. package/dist/eco/npm/npm/exec.js +2 -2
  125. package/dist/eco/npm/npm/flags.js +7 -12
  126. package/dist/eco/npm/npm/parse-lockfile.d.ts +17 -18
  127. package/dist/eco/npm/npm/parse-lockfile.js +4 -4
  128. package/dist/eco/npm/parse-package-json.d.ts +11 -0
  129. package/dist/eco/npm/parse-package-json.js +3 -3
  130. package/dist/eco/npm/pnpm/exec.d.ts +1 -1
  131. package/dist/eco/npm/pnpm/exec.js +5 -5
  132. package/dist/eco/npm/pnpm/flags.js +0 -3
  133. package/dist/eco/npm/pnpm/parse-lockfile.d.ts +6 -4
  134. package/dist/eco/npm/pnpm/parse-lockfile.js +7 -7
  135. package/dist/eco/npm/script.js +9 -6
  136. package/dist/eco/npm/yarnpkg/yarn/exec.js +4 -4
  137. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.d.ts +3 -4
  138. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +9 -9
  139. package/dist/effects/pulse-frames.d.ts +3 -1
  140. package/dist/effects/shimmer-keyframes.d.ts +1 -1
  141. package/dist/effects/shimmer-terminal.d.ts +1 -1
  142. package/dist/env/boolean.js +0 -1
  143. package/dist/env/ci.js +0 -1
  144. package/dist/env/debug.js +0 -1
  145. package/dist/env/github-status.d.ts +51 -0
  146. package/dist/env/github-status.js +90 -0
  147. package/dist/env/github.js +0 -8
  148. package/dist/env/home.js +0 -1
  149. package/dist/env/locale.js +0 -3
  150. package/dist/env/node-auth-token.js +0 -1
  151. package/dist/env/node-env.js +0 -1
  152. package/dist/env/node-version-managers.d.ts +53 -0
  153. package/dist/env/node-version-managers.js +90 -0
  154. package/dist/env/npm.js +0 -5
  155. package/dist/env/number.js +0 -1
  156. package/dist/env/package-manager.js +3 -6
  157. package/dist/env/path.js +0 -1
  158. package/dist/env/pre-commit.js +1 -2
  159. package/dist/env/proxy.js +1 -1
  160. package/dist/env/rewire.d.ts +8 -6
  161. package/dist/env/rewire.js +16 -17
  162. package/dist/env/shell.js +0 -1
  163. package/dist/env/socket-cli.js +5 -18
  164. package/dist/env/socket-mcp.d.ts +114 -0
  165. package/dist/env/socket-mcp.js +146 -0
  166. package/dist/env/socket.d.ts +8 -109
  167. package/dist/env/socket.js +22 -167
  168. package/dist/env/string.js +0 -1
  169. package/dist/env/temp-dir.js +0 -3
  170. package/dist/env/term.js +0 -1
  171. package/dist/env/test.js +3 -6
  172. package/dist/env/windows.js +0 -4
  173. package/dist/env/xdg.js +0 -3
  174. package/dist/errors/predicates.js +1 -1
  175. package/dist/events/exit/_internal.d.ts +11 -9
  176. package/dist/events/exit/_internal.js +31 -35
  177. package/dist/events/exit/handler.js +3 -4
  178. package/dist/events/exit/intercept.js +4 -6
  179. package/dist/events/exit/lifecycle.js +16 -18
  180. package/dist/events/exit/signals.js +1 -2
  181. package/dist/events/exit/types.d.ts +6 -5
  182. package/dist/external/@npmcli/package-json.js +2 -2
  183. package/dist/external/@npmcli/promise-spawn.js +3 -1
  184. package/dist/external/npm-pack.js +2 -2
  185. package/dist/external/pico-pack.js +4 -2
  186. package/dist/external/which.js +3 -1
  187. package/dist/external-tools/bazel/asset-names.d.ts +1 -1
  188. package/dist/external-tools/bazel/asset-names.js +5 -2
  189. package/dist/external-tools/bazel/from-download.d.ts +1 -1
  190. package/dist/external-tools/bazel/from-download.js +5 -2
  191. package/dist/external-tools/bazel/read-bazel-version-file.js +1 -1
  192. package/dist/external-tools/bazel/resolve-bazel-version.js +4 -0
  193. package/dist/external-tools/bazel/resolve.d.ts +3 -3
  194. package/dist/external-tools/bazel/resolve.js +16 -8
  195. package/dist/external-tools/bazel/types.d.ts +1 -1
  196. package/dist/external-tools/cdxgen/asset-names.d.ts +1 -1
  197. package/dist/external-tools/cdxgen/asset-names.js +5 -2
  198. package/dist/external-tools/cdxgen/from-download.d.ts +1 -1
  199. package/dist/external-tools/cdxgen/from-download.js +7 -4
  200. package/dist/external-tools/cdxgen/from-vfs.js +1 -1
  201. package/dist/external-tools/cdxgen/resolve.d.ts +3 -3
  202. package/dist/external-tools/cdxgen/resolve.js +16 -8
  203. package/dist/external-tools/cdxgen/types.d.ts +1 -1
  204. package/dist/external-tools/from-download.d.ts +3 -3
  205. package/dist/external-tools/from-download.js +12 -6
  206. package/dist/external-tools/from-pip-venv.d.ts +1 -1
  207. package/dist/external-tools/from-pip-venv.js +12 -5
  208. package/dist/external-tools/janus/asset-names.d.ts +1 -1
  209. package/dist/external-tools/janus/asset-names.js +5 -2
  210. package/dist/external-tools/janus/from-download.d.ts +1 -1
  211. package/dist/external-tools/janus/from-download.js +5 -2
  212. package/dist/external-tools/janus/from-vfs.js +1 -1
  213. package/dist/external-tools/janus/resolve.d.ts +3 -3
  214. package/dist/external-tools/janus/resolve.js +16 -8
  215. package/dist/external-tools/janus/types.d.ts +1 -1
  216. package/dist/external-tools/jre/asset-names.d.ts +1 -1
  217. package/dist/external-tools/jre/asset-names.js +5 -2
  218. package/dist/external-tools/jre/detect-platform-arch.d.ts +10 -6
  219. package/dist/external-tools/jre/detect-platform-arch.js +29 -14
  220. package/dist/external-tools/jre/from-download.d.ts +1 -1
  221. package/dist/external-tools/jre/from-download.js +7 -4
  222. package/dist/external-tools/jre/from-java-home.js +2 -2
  223. package/dist/external-tools/jre/from-vfs.js +3 -3
  224. package/dist/external-tools/jre/resolve.d.ts +3 -3
  225. package/dist/external-tools/jre/resolve.js +16 -8
  226. package/dist/external-tools/jre/types.d.ts +1 -1
  227. package/dist/external-tools/manifest.d.ts +25 -7
  228. package/dist/external-tools/manifest.js +13 -13
  229. package/dist/external-tools/opengrep/asset-names.d.ts +1 -1
  230. package/dist/external-tools/opengrep/asset-names.js +5 -2
  231. package/dist/external-tools/opengrep/from-download.d.ts +1 -1
  232. package/dist/external-tools/opengrep/from-download.js +5 -2
  233. package/dist/external-tools/opengrep/from-vfs.js +1 -1
  234. package/dist/external-tools/opengrep/resolve.d.ts +3 -3
  235. package/dist/external-tools/opengrep/resolve.js +16 -8
  236. package/dist/external-tools/opengrep/types.d.ts +1 -1
  237. package/dist/external-tools/python/asset-names.d.ts +76 -0
  238. package/dist/external-tools/python/asset-names.js +111 -0
  239. package/dist/external-tools/python/dlx.d.ts +80 -0
  240. package/dist/external-tools/python/dlx.js +98 -0
  241. package/dist/external-tools/python/from-download.d.ts +53 -0
  242. package/dist/external-tools/python/from-download.js +75 -0
  243. package/dist/external-tools/python/from-path.d.ts +7 -0
  244. package/dist/external-tools/python/from-path.js +23 -0
  245. package/dist/external-tools/python/pin.d.ts +121 -0
  246. package/dist/external-tools/python/pin.js +176 -0
  247. package/dist/external-tools/python/pip-install.d.ts +75 -0
  248. package/dist/external-tools/python/pip-install.js +142 -0
  249. package/dist/external-tools/python/resolve.d.ts +42 -0
  250. package/dist/external-tools/python/resolve.js +66 -0
  251. package/dist/external-tools/python/types.d.ts +49 -0
  252. package/dist/external-tools/sbt/asset-names.d.ts +1 -1
  253. package/dist/external-tools/sbt/asset-names.js +5 -2
  254. package/dist/external-tools/sbt/from-download.d.ts +1 -1
  255. package/dist/external-tools/sbt/from-download.js +5 -2
  256. package/dist/external-tools/sbt/from-vfs.js +1 -1
  257. package/dist/external-tools/sbt/resolve.d.ts +3 -3
  258. package/dist/external-tools/sbt/resolve.js +16 -8
  259. package/dist/external-tools/sbt/types.d.ts +1 -1
  260. package/dist/external-tools/skillspector/from-dlx.d.ts +1 -1
  261. package/dist/external-tools/skillspector/from-dlx.js +10 -3
  262. package/dist/external-tools/skillspector/from-path.js +3 -5
  263. package/dist/external-tools/skillspector/from-vfs.js +1 -1
  264. package/dist/external-tools/skillspector/resolve.d.ts +2 -2
  265. package/dist/external-tools/skillspector/resolve.js +14 -6
  266. package/dist/external-tools/synp/asset-names.d.ts +1 -1
  267. package/dist/external-tools/synp/asset-names.js +6 -2
  268. package/dist/external-tools/synp/from-download.d.ts +1 -1
  269. package/dist/external-tools/synp/from-download.js +7 -4
  270. package/dist/external-tools/synp/from-vfs.js +1 -1
  271. package/dist/external-tools/synp/resolve.d.ts +3 -3
  272. package/dist/external-tools/synp/resolve.js +16 -8
  273. package/dist/external-tools/trivy/asset-names.d.ts +1 -1
  274. package/dist/external-tools/trivy/asset-names.js +5 -2
  275. package/dist/external-tools/trivy/from-download.d.ts +1 -1
  276. package/dist/external-tools/trivy/from-download.js +7 -4
  277. package/dist/external-tools/trivy/from-vfs.js +1 -1
  278. package/dist/external-tools/trivy/resolve.d.ts +3 -3
  279. package/dist/external-tools/trivy/resolve.js +16 -8
  280. package/dist/external-tools/trivy/types.d.ts +1 -1
  281. package/dist/external-tools/trufflehog/asset-names.d.ts +1 -1
  282. package/dist/external-tools/trufflehog/asset-names.js +5 -2
  283. package/dist/external-tools/trufflehog/from-download.d.ts +1 -1
  284. package/dist/external-tools/trufflehog/from-download.js +7 -4
  285. package/dist/external-tools/trufflehog/from-vfs.js +1 -1
  286. package/dist/external-tools/trufflehog/resolve.d.ts +3 -3
  287. package/dist/external-tools/trufflehog/resolve.js +16 -8
  288. package/dist/external-tools/trufflehog/types.d.ts +1 -1
  289. package/dist/fs/_internal.d.ts +1 -1
  290. package/dist/fs/_internal.js +7 -7
  291. package/dist/fs/access.js +5 -9
  292. package/dist/fs/allowed-dirs-cache.d.ts +47 -0
  293. package/dist/fs/allowed-dirs-cache.js +69 -0
  294. package/dist/fs/encoding.js +5 -7
  295. package/dist/fs/{find-up.js → find.js} +12 -14
  296. package/dist/fs/inspect.js +7 -13
  297. package/dist/fs/read-dir.js +7 -10
  298. package/dist/fs/read-file.js +8 -14
  299. package/dist/fs/read-json-cache.d.ts +13 -4
  300. package/dist/fs/read-json-cache.js +9 -6
  301. package/dist/fs/read-json.js +4 -6
  302. package/dist/fs/resolve-module.js +7 -3
  303. package/dist/fs/safe.d.ts +1 -1
  304. package/dist/fs/safe.js +13 -14
  305. package/dist/fs/unique.js +4 -5
  306. package/dist/fs/validate.js +1 -2
  307. package/dist/fs/write-json.js +4 -5
  308. package/dist/git/_internal.js +11 -11
  309. package/dist/git/changed.js +4 -4
  310. package/dist/git/repo.js +5 -7
  311. package/dist/git/staged.js +12 -4
  312. package/dist/git/tracked.d.ts +84 -0
  313. package/dist/git/tracked.js +163 -0
  314. package/dist/git/unstaged.js +12 -4
  315. package/dist/github/ghsa.js +2 -2
  316. package/dist/github/refs-cache.d.ts +1 -1
  317. package/dist/github/refs-cache.js +5 -5
  318. package/dist/github/refs-graphql.js +4 -0
  319. package/dist/github/refs-rest.js +9 -5
  320. package/dist/github/refs.js +15 -10
  321. package/dist/github/{fetch.js → request.js} +13 -2
  322. package/dist/github/token.js +1 -1
  323. package/dist/github/types.d.ts +1 -1
  324. package/dist/globs/_internal.js +8 -10
  325. package/dist/globs/match.js +13 -7
  326. package/dist/globs/matcher.d.ts +3 -3
  327. package/dist/globs/matcher.js +16 -14
  328. package/dist/globs/stream.js +1 -2
  329. package/dist/globs/types.d.ts +24 -24
  330. package/dist/http-request/_internal.d.ts +1 -1
  331. package/dist/http-request/browser.js +10 -4
  332. package/dist/http-request/checksum-file.d.ts +55 -0
  333. package/dist/http-request/checksum-file.js +95 -0
  334. package/dist/http-request/download-types.d.ts +15 -23
  335. package/dist/http-request/download.js +3 -3
  336. package/dist/http-request/{browser-fetch.d.ts → fetch/browser.d.ts} +2 -2
  337. package/dist/http-request/{browser-fetch.js → fetch/browser.js} +4 -4
  338. package/dist/http-request/headers.js +1 -2
  339. package/dist/http-request/request-attempt.js +38 -34
  340. package/dist/http-request/request-types.d.ts +2 -2
  341. package/dist/http-request/request.js +1 -1
  342. package/dist/http-request/user-agent.js +4 -5
  343. package/dist/integrity.d.ts +92 -18
  344. package/dist/integrity.js +125 -30
  345. package/dist/ipc/directory.js +2 -2
  346. package/dist/ipc/paths.js +1 -1
  347. package/dist/ipc/write.js +1 -1
  348. package/dist/ipc-cli/get.js +12 -12
  349. package/dist/json/edit.js +51 -44
  350. package/dist/json/format.js +1 -1
  351. package/dist/json/parse.d.ts +1 -1
  352. package/dist/json/parse.js +3 -7
  353. package/dist/logger/_internal.d.ts +4 -4
  354. package/dist/logger/_internal.js +3 -3
  355. package/dist/logger/colors.js +4 -3
  356. package/dist/logger/console-methods.d.ts +132 -0
  357. package/dist/logger/console-methods.js +169 -0
  358. package/dist/logger/console.d.ts +12 -0
  359. package/dist/logger/console.js +42 -11
  360. package/dist/logger/indentation-methods.d.ts +81 -0
  361. package/dist/logger/indentation-methods.js +121 -0
  362. package/dist/logger/node.d.ts +16 -338
  363. package/dist/logger/node.js +75 -608
  364. package/dist/logger/options.d.ts +39 -0
  365. package/dist/logger/options.js +47 -0
  366. package/dist/logger/semantic-methods.d.ts +63 -0
  367. package/dist/logger/semantic-methods.js +108 -0
  368. package/dist/logger/stream-methods.d.ts +63 -0
  369. package/dist/logger/stream-methods.js +101 -0
  370. package/dist/logger/stream.d.ts +37 -0
  371. package/dist/logger/stream.js +42 -0
  372. package/dist/logger/symbols-builder.js +9 -9
  373. package/dist/logger/symbols.d.ts +2 -25
  374. package/dist/logger/symbols.js +53 -74
  375. package/dist/logger/types.d.ts +1 -1
  376. package/dist/memo/types.d.ts +6 -6
  377. package/dist/native-messaging/host.d.ts +20 -0
  378. package/dist/native-messaging/host.js +120 -0
  379. package/dist/native-messaging/index.d.ts +5 -0
  380. package/dist/native-messaging/index.js +22 -0
  381. package/dist/native-messaging/install.d.ts +60 -0
  382. package/dist/native-messaging/install.js +144 -0
  383. package/dist/native-messaging/rate-limit.d.ts +69 -0
  384. package/dist/native-messaging/rate-limit.js +119 -0
  385. package/dist/native-messaging/run.d.ts +10 -0
  386. package/dist/native-messaging/run.js +17 -0
  387. package/dist/node/async-hooks.js +4 -3
  388. package/dist/node/child-process.js +4 -3
  389. package/dist/node/crypto.js +4 -3
  390. package/dist/node/events.js +4 -3
  391. package/dist/node/fs-promises.js +4 -3
  392. package/dist/node/fs.d.ts +22 -6
  393. package/dist/node/fs.js +17 -3
  394. package/dist/node/http.js +4 -3
  395. package/dist/node/https.js +4 -3
  396. package/dist/node/module.js +10 -6
  397. package/dist/node/os.d.ts +10 -2
  398. package/dist/node/os.js +12 -4
  399. package/dist/node/path.d.ts +11 -2
  400. package/dist/node/path.js +18 -4
  401. package/dist/node/timers-promises.js +4 -3
  402. package/dist/node/url.js +4 -3
  403. package/dist/node/util.js +4 -3
  404. package/dist/objects/getters.js +6 -8
  405. package/dist/objects/inspect.js +1 -4
  406. package/dist/objects/mutate.js +4 -5
  407. package/dist/objects/predicates.js +1 -5
  408. package/dist/objects/sort.js +3 -7
  409. package/dist/packages/edit-class.d.ts +2 -3
  410. package/dist/packages/edit-class.js +53 -48
  411. package/dist/packages/edit.js +12 -14
  412. package/dist/packages/exports.js +15 -21
  413. package/dist/packages/fetch.d.ts +16 -0
  414. package/dist/packages/fetch.js +81 -0
  415. package/dist/packages/find.d.ts +55 -0
  416. package/dist/packages/find.js +65 -0
  417. package/dist/packages/isolation.js +14 -14
  418. package/dist/packages/licenses.js +18 -18
  419. package/dist/packages/manifest.js +16 -19
  420. package/dist/packages/metadata-extensions.d.ts +14 -0
  421. package/dist/packages/metadata-extensions.js +43 -0
  422. package/dist/packages/normalize.js +6 -10
  423. package/dist/packages/provenance.js +17 -19
  424. package/dist/packages/read.d.ts +29 -0
  425. package/dist/packages/read.js +66 -0
  426. package/dist/packages/specs.d.ts +48 -1
  427. package/dist/packages/specs.js +75 -12
  428. package/dist/packages/tarball.d.ts +24 -0
  429. package/dist/packages/tarball.js +81 -0
  430. package/dist/packages/types.d.ts +22 -22
  431. package/dist/packages/validation.js +0 -3
  432. package/dist/paths/_internal.d.ts +2 -1
  433. package/dist/paths/_internal.js +7 -19
  434. package/dist/paths/conversion.js +5 -9
  435. package/dist/paths/dirnames.d.ts +1 -0
  436. package/dist/paths/dirnames.js +2 -0
  437. package/dist/paths/filenames.d.ts +0 -1
  438. package/dist/paths/filenames.js +0 -2
  439. package/dist/paths/normalize.js +4 -5
  440. package/dist/paths/packages.js +4 -7
  441. package/dist/paths/predicates.js +9 -16
  442. package/dist/paths/resolve.js +17 -25
  443. package/dist/paths/rewire.d.ts +5 -0
  444. package/dist/paths/rewire.js +3 -3
  445. package/dist/paths/socket.d.ts +74 -111
  446. package/dist/paths/socket.js +106 -139
  447. package/dist/paths/walk.d.ts +1 -1
  448. package/dist/paths/walk.js +4 -4
  449. package/dist/perf/report.js +2 -2
  450. package/dist/perf/types.d.ts +1 -1
  451. package/dist/pkg-ext/data.js +1 -1
  452. package/dist/primordials/array.js +9 -9
  453. package/dist/primordials/date.js +2 -2
  454. package/dist/primordials/error.js +3 -3
  455. package/dist/primordials/headers.d.ts +10 -0
  456. package/dist/primordials/headers.js +23 -0
  457. package/dist/primordials/intl.d.ts +13 -0
  458. package/dist/primordials/intl.js +26 -0
  459. package/dist/primordials/math.js +33 -33
  460. package/dist/primordials/number.js +9 -9
  461. package/dist/primordials/object.js +5 -5
  462. package/dist/primordials/process.d.ts +88 -0
  463. package/dist/primordials/process.js +132 -0
  464. package/dist/primordials/string.d.ts +2 -2
  465. package/dist/primordials/string.js +6 -6
  466. package/dist/primordials/symbol.js +3 -3
  467. package/dist/primordials/uncurry.d.ts +1 -2
  468. package/dist/primordials/uncurry.js +9 -9
  469. package/dist/process/abort.js +3 -3
  470. package/dist/process/lock-manager.js +8 -8
  471. package/dist/process/spawn/_internal.js +6 -8
  472. package/dist/process/spawn/child.js +20 -14
  473. package/dist/process/spawn/errors.js +3 -5
  474. package/dist/process/spawn/kill-tree.d.ts +53 -0
  475. package/dist/process/spawn/kill-tree.js +85 -0
  476. package/dist/process/spawn/stdio.js +0 -1
  477. package/dist/process/spawn/types.d.ts +5 -5
  478. package/dist/process/transient.js +2 -2
  479. package/dist/promises/_internal.d.ts +2 -1
  480. package/dist/promises/_internal.js +2 -6
  481. package/dist/promises/iterate.js +11 -15
  482. package/dist/promises/options.js +3 -6
  483. package/dist/promises/retry.js +4 -5
  484. package/dist/promises/timers.d.ts +30 -0
  485. package/dist/promises/timers.js +48 -0
  486. package/dist/regexps/spec.js +1 -1
  487. package/dist/releases/github-archives.d.ts +6 -6
  488. package/dist/releases/github-archives.js +3 -3
  489. package/dist/releases/github-asset-url.d.ts +1 -1
  490. package/dist/releases/github-asset-url.js +5 -5
  491. package/dist/releases/github-downloads.d.ts +1 -1
  492. package/dist/releases/github-downloads.js +3 -3
  493. package/dist/releases/github-listing.d.ts +12 -4
  494. package/dist/releases/github-listing.js +20 -7
  495. package/dist/releases/github-retry-config.js +1 -1
  496. package/dist/releases/github-types.d.ts +6 -6
  497. package/dist/releases/socket-btm-binary-naming.d.ts +107 -0
  498. package/dist/releases/socket-btm-binary-naming.js +155 -0
  499. package/dist/releases/socket-btm.d.ts +8 -115
  500. package/dist/releases/socket-btm.js +16 -159
  501. package/dist/schema/types.d.ts +4 -5
  502. package/dist/schema/validate.js +1 -1
  503. package/dist/sea/detect.js +6 -6
  504. package/dist/secrets/_internal.d.ts +2 -2
  505. package/dist/secrets/_internal.js +2 -2
  506. package/dist/secrets/compare.d.ts +45 -0
  507. package/dist/secrets/compare.js +61 -0
  508. package/dist/secrets/find.d.ts +2 -2
  509. package/dist/secrets/find.js +10 -4
  510. package/dist/secrets/keychain.d.ts +1 -1
  511. package/dist/secrets/keychain.js +6 -4
  512. package/dist/secrets/linux.js +40 -52
  513. package/dist/secrets/macos.d.ts +2 -3
  514. package/dist/secrets/macos.js +24 -33
  515. package/dist/secrets/rc.d.ts +4 -4
  516. package/dist/secrets/rc.js +27 -17
  517. package/dist/secrets/socket-api-token.d.ts +4 -4
  518. package/dist/secrets/socket-api-token.js +26 -9
  519. package/dist/secrets/windows.js +32 -37
  520. package/dist/shadow/skip.js +2 -2
  521. package/dist/shell/parse.d.ts +32 -0
  522. package/dist/shell/parse.js +60 -0
  523. package/dist/smol/detect.js +9 -10
  524. package/dist/smol/http.js +6 -7
  525. package/dist/smol/https.js +6 -7
  526. package/dist/smol/manifest.d.ts +1 -1
  527. package/dist/smol/manifest.js +6 -7
  528. package/dist/smol/path.d.ts +1 -1
  529. package/dist/smol/path.js +7 -8
  530. package/dist/smol/primordial.d.ts +4 -0
  531. package/dist/smol/primordial.js +6 -7
  532. package/dist/smol/purl.d.ts +1 -1
  533. package/dist/smol/purl.js +7 -8
  534. package/dist/smol/versions.js +6 -7
  535. package/dist/smol/vfs.js +6 -7
  536. package/dist/sorts/_internal.js +6 -8
  537. package/dist/sorts/natural.js +10 -12
  538. package/dist/sorts/semver.js +1 -2
  539. package/dist/sorts/strings.js +0 -1
  540. package/dist/sorts/types.d.ts +1 -1
  541. package/dist/spinner/create-spinner-class.d.ts +38 -0
  542. package/dist/spinner/create-spinner-class.js +302 -0
  543. package/dist/spinner/default.js +8 -9
  544. package/dist/spinner/spinner-internals.d.ts +36 -0
  545. package/dist/spinner/spinner-internals.js +105 -0
  546. package/dist/spinner/spinner-shimmer-methods.d.ts +54 -0
  547. package/dist/spinner/spinner-shimmer-methods.js +143 -0
  548. package/dist/spinner/spinner-status-methods.d.ts +40 -0
  549. package/dist/spinner/spinner-status-methods.js +133 -0
  550. package/dist/spinner/spinner.d.ts +8 -5
  551. package/dist/spinner/spinner.js +19 -706
  552. package/dist/spinner/types.d.ts +3 -1
  553. package/dist/spinner/with.d.ts +10 -0
  554. package/dist/spinner/with.js +16 -2
  555. package/dist/stdio/divider.js +1 -1
  556. package/dist/stdio/footer.js +3 -3
  557. package/dist/stdio/header.js +4 -4
  558. package/dist/stdio/progress.js +10 -6
  559. package/dist/stdio/prompts.d.ts +7 -5
  560. package/dist/stdio/prompts.js +7 -8
  561. package/dist/stdio/stdout.js +3 -3
  562. package/dist/streams/parallel.js +3 -5
  563. package/dist/streams/transform.js +2 -3
  564. package/dist/strings/format.js +2 -6
  565. package/dist/strings/predicates.js +0 -2
  566. package/dist/strings/search.js +1 -2
  567. package/dist/strings/transform.js +0 -3
  568. package/dist/strings/width.js +9 -10
  569. package/dist/tables/bordered.js +4 -3
  570. package/dist/tables/padding.js +1 -1
  571. package/dist/tables/simple.js +8 -5
  572. package/dist/temporal/instant.js +1 -1
  573. package/dist/temporal/slots.js +6 -6
  574. package/dist/temporal/system.js +9 -9
  575. package/dist/themes/context.d.ts +3 -2
  576. package/dist/themes/context.js +4 -5
  577. package/dist/themes/themes.js +15 -15
  578. package/dist/themes/types.d.ts +3 -3
  579. package/dist/url/assert-safe.d.ts +29 -0
  580. package/dist/url/assert-safe.js +54 -0
  581. package/dist/url/parse.js +0 -2
  582. package/dist/url/predicates.d.ts +31 -1
  583. package/dist/url/predicates.js +43 -3
  584. package/dist/url/search-params.js +3 -9
  585. package/dist/url/types.d.ts +9 -5
  586. package/dist/versions/_internal.js +3 -3
  587. package/dist/words/article.js +0 -1
  588. package/dist/words/capitalize.js +0 -1
  589. package/dist/words/pluralize.js +15 -5
  590. package/package.json +419 -216
  591. package/dist/external-tools/uv/asset-names.d.ts +0 -36
  592. package/dist/external-tools/uv/asset-names.js +0 -70
  593. package/dist/external-tools/uv/from-download.d.ts +0 -17
  594. package/dist/external-tools/uv/from-download.js +0 -47
  595. package/dist/external-tools/uv/from-path.d.ts +0 -5
  596. package/dist/external-tools/uv/from-path.js +0 -22
  597. package/dist/external-tools/uv/from-vfs.d.ts +0 -7
  598. package/dist/external-tools/uv/from-vfs.js +0 -26
  599. package/dist/external-tools/uv/resolve.d.ts +0 -25
  600. package/dist/external-tools/uv/resolve.js +0 -53
  601. package/dist/external-tools/uv/types.d.ts +0 -24
  602. package/dist/fs/path-cache.d.ts +0 -21
  603. package/dist/fs/path-cache.js +0 -34
  604. package/dist/http-request/checksums.d.ts +0 -69
  605. package/dist/http-request/checksums.js +0 -108
  606. package/dist/http-request/http-request.d.ts +0 -12
  607. package/dist/http-request/http-request.js +0 -11
  608. package/dist/packages/operations.d.ts +0 -113
  609. package/dist/packages/operations.js +0 -304
  610. package/dist/ssri/convert.d.ts +0 -48
  611. package/dist/ssri/convert.js +0 -69
  612. package/dist/ssri/parse.d.ts +0 -27
  613. package/dist/ssri/parse.js +0 -41
  614. package/dist/ssri/validate.d.ts +0 -41
  615. package/dist/ssri/validate.js +0 -56
  616. /package/dist/{bin → cli}/check.d.ts +0 -0
  617. /package/dist/external-tools/{uv → python}/types.js +0 -0
  618. /package/dist/fs/{find-up.d.ts → find.d.ts} +0 -0
  619. /package/dist/github/{fetch.d.ts → request.d.ts} +0 -0
@@ -14,10 +14,10 @@ node_process = require_runtime.__toESM(node_process);
14
14
  * and feature-detection flags for APIs that vary across Node releases.
15
15
  */
16
16
  const NODE_VERSION = node_process.default.version;
17
- let _nodeDisableSigusr1Flags;
18
- let _nodeHardenFlags;
19
- let _nodeNoWarningsFlags;
20
- let _nodePermissionFlags;
17
+ let nodeDisableSigusr1Flags;
18
+ let nodeHardenFlags;
19
+ let nodeNoWarningsFlags;
20
+ let nodePermissionFlags;
21
21
  /**
22
22
  * Get the absolute path to the currently running Node.js binary.
23
23
  *
@@ -42,11 +42,11 @@ function getMaintainedNodeVersions() {
42
42
  * @returns A non-empty array of CLI flags suitable for passing to `node`.
43
43
  */
44
44
  function getNodeDisableSigusr1Flags() {
45
- if (_nodeDisableSigusr1Flags === void 0)
45
+ if (nodeDisableSigusr1Flags === void 0)
46
46
  /* c8 ignore start - --no-inspect fallback fires only on Node
47
47
  runtimes pre-v22.14 / v23.7 / v24.8; tests run on Node 24+. */
48
- _nodeDisableSigusr1Flags = supportsNodeDisableSigusr1Flag() ? ["--disable-sigusr1"] : ["--no-inspect"];
49
- return _nodeDisableSigusr1Flags;
48
+ nodeDisableSigusr1Flags = supportsNodeDisableSigusr1Flag() ? ["--disable-sigusr1"] : ["--no-inspect"];
49
+ return nodeDisableSigusr1Flags;
50
50
  }
51
51
  /**
52
52
  * Get the hardening flags Socket applies when spawning Node.js subprocesses.
@@ -58,7 +58,7 @@ function getNodeDisableSigusr1Flags() {
58
58
  * @returns A non-empty array of CLI flags suitable for passing to `node`.
59
59
  */
60
60
  function getNodeHardenFlags() {
61
- if (_nodeHardenFlags === void 0) {
61
+ if (nodeHardenFlags === void 0) {
62
62
  const major = getNodeMajorVersion();
63
63
  const flags = ["--disable-proto=delete"];
64
64
  if (major >= 24) {
@@ -69,9 +69,9 @@ function getNodeHardenFlags() {
69
69
  /* c8 ignore start */
70
70
  if (major >= 22) flags.push("--force-node-api-uncaught-exceptions-policy");
71
71
  /* c8 ignore stop */
72
- _nodeHardenFlags = flags;
72
+ nodeHardenFlags = flags;
73
73
  }
74
- return _nodeHardenFlags;
74
+ return nodeHardenFlags;
75
75
  }
76
76
  /**
77
77
  * Get the major component of the current Node.js version.
@@ -99,8 +99,8 @@ function getNodeMinorVersion() {
99
99
  * @returns A non-empty array of CLI flags suitable for passing to `node`.
100
100
  */
101
101
  function getNodeNoWarningsFlags() {
102
- if (_nodeNoWarningsFlags === void 0) _nodeNoWarningsFlags = ["--no-warnings", "--no-deprecation"];
103
- return _nodeNoWarningsFlags;
102
+ if (nodeNoWarningsFlags === void 0) nodeNoWarningsFlags = ["--no-warnings", "--no-deprecation"];
103
+ return nodeNoWarningsFlags;
104
104
  }
105
105
  /**
106
106
  * Get the patch component of the current Node.js version.
@@ -121,13 +121,13 @@ function getNodePatchVersion() {
121
121
  * @returns The permission flag list (possibly empty) for the current runtime.
122
122
  */
123
123
  function getNodePermissionFlags() {
124
- if (_nodePermissionFlags === void 0) if (getNodeMajorVersion() >= 24) _nodePermissionFlags = [
124
+ if (nodePermissionFlags === void 0) if (getNodeMajorVersion() >= 24) nodePermissionFlags = [
125
125
  "--allow-fs-read=*",
126
126
  "--allow-fs-write=*",
127
127
  "--allow-child-process"
128
128
  ];
129
- else _nodePermissionFlags = [];
130
- return _nodePermissionFlags;
129
+ else nodePermissionFlags = [];
130
+ return nodePermissionFlags;
131
131
  }
132
132
  /**
133
133
  * Get the full Node.js version string from `process.version`.
@@ -219,6 +219,36 @@ function supportsNodeRun() {
219
219
  /* c8 ignore stop */
220
220
  }
221
221
  /**
222
+ * Check whether the current runtime can execute TypeScript source directly
223
+ * (`.ts` files via `node foo.ts`), with or without a flag. Type-stripping went
224
+ * stable in Node.js 22.6 (under `--strip-types`, also accepted as the
225
+ * deprecated alias `--experimental-strip-types`) and default-on in Node 24.
226
+ *
227
+ * Pair with {@link supportsNodeStripTypesDefault} to decide whether a flag needs
228
+ * to be passed.
229
+ *
230
+ * @returns `true` when the runtime can run TypeScript (Node 22.6+).
231
+ */
232
+ function supportsNodeStripTypes() {
233
+ const major = getNodeMajorVersion();
234
+ /* c8 ignore start - 22-specific arm; tests run on a single Node major. */
235
+ return major >= 23 || major === 22 && getNodeMinorVersion() >= 6;
236
+ /* c8 ignore stop */
237
+ }
238
+ /**
239
+ * Check whether the current runtime strips TypeScript types **by default** (no
240
+ * flag needed). Became default-on in Node.js 24.
241
+ *
242
+ * Use case: deciding whether a wrapper script needs to pass `--strip-types`
243
+ * when invoking `node foo.ts`. On Node 24+ the flag is redundant; on 22.6 –
244
+ * 23.x it's required.
245
+ *
246
+ * @returns `true` when no `--strip-types` flag is needed (Node 24+).
247
+ */
248
+ function supportsNodeStripTypesDefault() {
249
+ return getNodeMajorVersion() >= 24;
250
+ }
251
+ /**
222
252
  * Check whether this process was spawned with an IPC channel. When `true`,
223
253
  * `process.send()` is callable to message the parent process.
224
254
  *
@@ -250,4 +280,6 @@ exports.supportsNodeDisableWarningFlag = supportsNodeDisableWarningFlag;
250
280
  exports.supportsNodePermissionFlag = supportsNodePermissionFlag;
251
281
  exports.supportsNodeRequireModule = supportsNodeRequireModule;
252
282
  exports.supportsNodeRun = supportsNodeRun;
283
+ exports.supportsNodeStripTypes = supportsNodeStripTypes;
284
+ exports.supportsNodeStripTypesDefault = supportsNodeStripTypesDefault;
253
285
  exports.supportsProcessSend = supportsProcessSend;
@@ -17,5 +17,8 @@ export declare function getLifecycleScriptNames(): string[];
17
17
  export declare function getPackageDefaultNodeRange(): string | undefined;
18
18
  export declare function getPackageDefaultSocketCategories(): readonly string[];
19
19
  export declare function getPackageExtensions(): Iterable<[string, unknown]>;
20
+ export declare class BoundedPackumentCache extends Map<string, unknown> {
21
+ set(key: string, value: unknown): this;
22
+ }
20
23
  export declare function getPackumentCache(): Map<string, unknown>;
21
24
  export declare function getPacoteCachePath(): string;
@@ -2,9 +2,9 @@
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_runtime = require('../_virtual/_rolldown/runtime.js');
5
+ const require_primordials_object = require('../primordials/object.js');
5
6
  const require_paths_normalize = require('../paths/normalize.js');
6
7
  const require_primordials_array = require('../primordials/array.js');
7
- const require_primordials_object = require('../primordials/object.js');
8
8
  const require_primordials_reflect = require('../primordials/reflect.js');
9
9
  const require_constants_lifecycle_script_names = require('./lifecycle-script-names.js');
10
10
  const require_constants_package_default_node_range = require('./package-default-node-range.js');
@@ -20,12 +20,12 @@ src_external_pacote = require_runtime.__toESM(src_external_pacote);
20
20
  * categories), the pacote cache path, lifecycle script names, and known
21
21
  * package extensions used during manifest processing.
22
22
  */
23
- let _lifecycleScriptNames;
24
- let _packageDefaultNodeRange;
25
- let _packageDefaultSocketCategories;
26
- let _packageExtensions;
27
- let _pacoteCachePath;
28
- let _packumentCache;
23
+ let cachedLifecycleScriptNames;
24
+ let cachedPackageDefaultNodeRange;
25
+ let cachedPackageDefaultSocketCategories;
26
+ let cachedPackageExtensions;
27
+ let cachedPacoteCachePath;
28
+ let cachedPackumentCache;
29
29
  const PACKAGE = "package";
30
30
  const AT_LATEST = "@latest";
31
31
  const LATEST = "latest";
@@ -35,28 +35,24 @@ const PACKAGE_DEFAULT_VERSION = "1.0.0";
35
35
  * force a re-fetch of registry metadata.
36
36
  */
37
37
  function clearPackumentCache() {
38
- /* c8 ignore next 3 */
39
- if (_packumentCache !== void 0) _packumentCache.clear();
38
+ /* c8 ignore next 3 - uninitialized-cache branch unreachable in tests */
39
+ if (cachedPackumentCache !== void 0) cachedPackumentCache.clear();
40
40
  }
41
- /*@__NO_SIDE_EFFECTS__*/
42
41
  function getLifecycleScriptNames() {
43
- if (_lifecycleScriptNames === void 0) _lifecycleScriptNames = require_primordials_array.ArrayFrom(require_constants_lifecycle_script_names.lifecycleScriptNames);
44
- return _lifecycleScriptNames;
42
+ if (cachedLifecycleScriptNames === void 0) cachedLifecycleScriptNames = require_primordials_array.ArrayFrom(require_constants_lifecycle_script_names.lifecycleScriptNames);
43
+ return cachedLifecycleScriptNames;
45
44
  }
46
- /*@__NO_SIDE_EFFECTS__*/
47
45
  function getPackageDefaultNodeRange() {
48
- if (_packageDefaultNodeRange === void 0) _packageDefaultNodeRange = require_constants_package_default_node_range.packageDefaultNodeRange;
49
- return _packageDefaultNodeRange;
46
+ if (cachedPackageDefaultNodeRange === void 0) cachedPackageDefaultNodeRange = require_constants_package_default_node_range.packageDefaultNodeRange;
47
+ return cachedPackageDefaultNodeRange;
50
48
  }
51
- /*@__NO_SIDE_EFFECTS__*/
52
49
  function getPackageDefaultSocketCategories() {
53
- if (_packageDefaultSocketCategories === void 0) _packageDefaultSocketCategories = require_constants_package_default_socket_categories.packageDefaultSocketCategories;
54
- return _packageDefaultSocketCategories;
50
+ if (cachedPackageDefaultSocketCategories === void 0) cachedPackageDefaultSocketCategories = require_constants_package_default_socket_categories.packageDefaultSocketCategories;
51
+ return cachedPackageDefaultSocketCategories;
55
52
  }
56
- /*@__NO_SIDE_EFFECTS__*/
57
53
  function getPackageExtensions() {
58
- if (_packageExtensions === void 0) _packageExtensions = require_primordials_object.ObjectEntries(require_pkg_ext_data.packageExtensions);
59
- return _packageExtensions;
54
+ if (cachedPackageExtensions === void 0) cachedPackageExtensions = require_primordials_object.ObjectEntries(require_pkg_ext_data.packageExtensions);
55
+ return cachedPackageExtensions;
60
56
  }
61
57
  const PACKUMENT_CACHE_MAX = 500;
62
58
  var BoundedPackumentCache = class extends Map {
@@ -71,26 +67,25 @@ var BoundedPackumentCache = class extends Map {
71
67
  return super.set(key, value);
72
68
  }
73
69
  };
74
- /*@__NO_SIDE_EFFECTS__*/
75
70
  function getPackumentCache() {
76
- if (_packumentCache === void 0) _packumentCache = new BoundedPackumentCache();
77
- return _packumentCache;
71
+ if (cachedPackumentCache === void 0) cachedPackumentCache = new BoundedPackumentCache();
72
+ return cachedPackumentCache;
78
73
  }
79
- /*@__NO_SIDE_EFFECTS__*/
80
74
  function getPacoteCachePath() {
81
- if (_pacoteCachePath === void 0) try {
75
+ if (cachedPacoteCachePath === void 0) try {
82
76
  const PacoteFetcherBase = require_primordials_reflect.ReflectGetPrototypeOf(src_external_pacote.default.RegistryFetcher.prototype)?.constructor;
83
77
  /* c8 ignore start */
84
78
  const cachePath = PacoteFetcherBase ? new PacoteFetcherBase("x", {}).cache : "";
85
- _pacoteCachePath = cachePath ? /* @__PURE__ */ require_paths_normalize.normalizePath(cachePath) : "";
79
+ cachedPacoteCachePath = cachePath ? require_paths_normalize.normalizePath(cachePath) : "";
86
80
  } catch {
87
- _pacoteCachePath = "";
81
+ cachedPacoteCachePath = "";
88
82
  }
89
- return _pacoteCachePath;
83
+ return cachedPacoteCachePath;
90
84
  }
91
85
 
92
86
  //#endregion
93
87
  exports.AT_LATEST = AT_LATEST;
88
+ exports.BoundedPackumentCache = BoundedPackumentCache;
94
89
  exports.LATEST = LATEST;
95
90
  exports.PACKAGE = PACKAGE;
96
91
  exports.PACKAGE_DEFAULT_VERSION = PACKAGE_DEFAULT_VERSION;
@@ -14,15 +14,42 @@ export type Libc = 'glibc' | 'musl';
14
14
  */
15
15
  export type Platform = NodeJS.Platform;
16
16
  /**
17
- * Get the current CPU architecture (memoized).
17
+ * Get the current CPU architecture (memoized), e.g. `x64`, `arm64`.
18
18
  */
19
19
  export declare function getArch(): Arch;
20
20
  /**
21
- * Get the current platform (memoized).
21
+ * Get the host libc variant (memoized): `'musl'` on Alpine-and-similar,
22
+ * `'glibc'` on other Linux, `undefined` off-Linux. Detected by probing for the
23
+ * musl dynamic linker. The single source of truth for libc detection —
24
+ * tool-specific resolvers (`getPythonArch`, `getJreArch`) call this rather than
25
+ * re-probing.
22
26
  */
23
- export declare function getPlatform(): Platform;
27
+ export declare function getLibc(): Libc | undefined;
28
+ /**
29
+ * Get the current OS (memoized), e.g. `darwin`, `linux`, `win32` — the raw
30
+ * `process.platform` value.
31
+ */
32
+ export declare function getOs(): Platform;
33
+ /**
34
+ * Get the current host **target** in the pnpm `pack-app` vocabulary (memoized):
35
+ * `<os>-<arch>[-<libc>]`, e.g. `darwin-arm64`, `linux-x64`, `win32-x64`,
36
+ * `linux-x64-musl`. Raw Node `process.platform`/`process.arch` joined with `-`,
37
+ * plus a `-musl` suffix on Alpine. This is the fleet-general naming for
38
+ * non-python / non-JRE tools (matches pnpm's release assets,
39
+ * `pnpm-<os>-<arch>[-<libc>].{tar.gz,zip}`). Tool-specific resolvers that need
40
+ * a different vocabulary own their own helper — see `getPythonArch`
41
+ * (python-build- standalone) / `getJreArch` (Adoptium).
42
+ */
43
+ export declare function getTarget(): string;
24
44
  export declare const DARWIN: boolean;
25
45
  export declare const WIN32: boolean;
46
+ /**
47
+ * True when this process was launched as a Chrome (or Chromium) native
48
+ * messaging host. Chrome passes the extension origin URL
49
+ * (`chrome-extension://<id>/`) as `process.argv[2]`; no other invocation shape
50
+ * produces that prefix.
51
+ */
52
+ export declare const NATIVE_MESSAGING_HOST: boolean;
26
53
  export declare const S_IXUSR = 64;
27
54
  export declare const S_IXGRP = 8;
28
55
  export declare const S_IXOTH = 1;
@@ -2,38 +2,98 @@
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_node_os = require('../node/os.js');
5
+ let node_fs = require("node:fs");
5
6
 
6
7
  //#region src/constants/platform.ts
7
8
  /**
8
9
  * @file Platform detection and OS-specific constants.
9
10
  */
10
- let _arch;
11
+ let memoizedArch;
11
12
  /**
12
- * Get the current CPU architecture (memoized).
13
+ * Get the current CPU architecture (memoized), e.g. `x64`, `arm64`.
13
14
  */
14
15
  function getArch() {
15
- if (_arch === void 0) _arch = (/* @__PURE__ */ require_node_os.getNodeOs()).arch();
16
- return _arch;
16
+ if (memoizedArch === void 0) memoizedArch = require_node_os.getNodeOs().arch();
17
+ return memoizedArch;
17
18
  }
18
- let _platform;
19
+ const MUSL_LINKERS = [
20
+ "/lib/ld-musl-x86_64.so.1",
21
+ "/lib/ld-musl-aarch64.so.1",
22
+ "/usr/lib/ld-musl-x86_64.so.1",
23
+ "/usr/lib/ld-musl-aarch64.so.1"
24
+ ];
25
+ let memoizedLibc;
26
+ let memoizedLibcProbed = false;
19
27
  /**
20
- * Get the current platform (memoized).
28
+ * Get the host libc variant (memoized): `'musl'` on Alpine-and-similar,
29
+ * `'glibc'` on other Linux, `undefined` off-Linux. Detected by probing for the
30
+ * musl dynamic linker. The single source of truth for libc detection —
31
+ * tool-specific resolvers (`getPythonArch`, `getJreArch`) call this rather than
32
+ * re-probing.
21
33
  */
22
- function getPlatform() {
23
- if (_platform === void 0) _platform = (/* @__PURE__ */ require_node_os.getNodeOs()).platform();
24
- return _platform;
34
+ function getLibc() {
35
+ if (!memoizedLibcProbed) {
36
+ memoizedLibcProbed = true;
37
+ /* c8 ignore start - Linux-only filesystem probe. */
38
+ if (getOs() !== "linux") memoizedLibc = void 0;
39
+ else {
40
+ memoizedLibc = "glibc";
41
+ for (let i = 0, { length } = MUSL_LINKERS; i < length; i += 1) if ((0, node_fs.existsSync)(MUSL_LINKERS[i])) {
42
+ memoizedLibc = "musl";
43
+ break;
44
+ }
45
+ }
46
+ }
47
+ return memoizedLibc;
25
48
  }
26
- const DARWIN = getPlatform() === "darwin";
27
- const WIN32 = getPlatform() === "win32";
49
+ let memoizedOs;
50
+ /**
51
+ * Get the current OS (memoized), e.g. `darwin`, `linux`, `win32` — the raw
52
+ * `process.platform` value.
53
+ */
54
+ function getOs() {
55
+ if (memoizedOs === void 0) memoizedOs = require_node_os.getNodeOs().platform();
56
+ return memoizedOs;
57
+ }
58
+ let memoizedTarget;
59
+ /**
60
+ * Get the current host **target** in the pnpm `pack-app` vocabulary (memoized):
61
+ * `<os>-<arch>[-<libc>]`, e.g. `darwin-arm64`, `linux-x64`, `win32-x64`,
62
+ * `linux-x64-musl`. Raw Node `process.platform`/`process.arch` joined with `-`,
63
+ * plus a `-musl` suffix on Alpine. This is the fleet-general naming for
64
+ * non-python / non-JRE tools (matches pnpm's release assets,
65
+ * `pnpm-<os>-<arch>[-<libc>].{tar.gz,zip}`). Tool-specific resolvers that need
66
+ * a different vocabulary own their own helper — see `getPythonArch`
67
+ * (python-build- standalone) / `getJreArch` (Adoptium).
68
+ */
69
+ function getTarget() {
70
+ if (memoizedTarget === void 0) {
71
+ const libcSuffix = getLibc() === "musl" ? "-musl" : "";
72
+ memoizedTarget = `${getOs()}-${getArch()}${libcSuffix}`;
73
+ }
74
+ return memoizedTarget;
75
+ }
76
+ const DARWIN = getOs() === "darwin";
77
+ const WIN32 = getOs() === "win32";
78
+ /**
79
+ * True when this process was launched as a Chrome (or Chromium) native
80
+ * messaging host. Chrome passes the extension origin URL
81
+ * (`chrome-extension://<id>/`) as `process.argv[2]`; no other invocation shape
82
+ * produces that prefix.
83
+ */
84
+ const NATIVE_MESSAGING_HOST = typeof process !== "undefined" && typeof process.argv[2] === "string" && process.argv[2].startsWith("chrome-extension://");
28
85
  const S_IXUSR = 64;
29
86
  const S_IXGRP = 8;
30
87
  const S_IXOTH = 1;
31
88
 
32
89
  //#endregion
33
90
  exports.DARWIN = DARWIN;
91
+ exports.NATIVE_MESSAGING_HOST = NATIVE_MESSAGING_HOST;
34
92
  exports.S_IXGRP = S_IXGRP;
35
93
  exports.S_IXOTH = S_IXOTH;
36
94
  exports.S_IXUSR = S_IXUSR;
37
95
  exports.WIN32 = WIN32;
38
96
  exports.getArch = getArch;
39
- exports.getPlatform = getPlatform;
97
+ exports.getLibc = getLibc;
98
+ exports.getOs = getOs;
99
+ exports.getTarget = getTarget;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @file Runtime environment detection constants. All checks use only
3
+ * `typeof`-safe global probes so this module is safe to import in browser,
4
+ * Node.js, Deno, Bun, and bundled contexts alike.
5
+ */
6
+ /**
7
+ * True when running inside a Node.js process. Detected via
8
+ * `process.versions.node` — present in Node, absent in browsers and Deno/Bun
9
+ * which expose a different `process.versions` shape (or no `process` at all).
10
+ */
11
+ export declare const IS_NODE: boolean;
12
+ /**
13
+ * True when running in a browser context (window + document both defined).
14
+ * Note: Chrome extensions have `window` in popup contexts but not in service
15
+ * workers — check `IS_SERVICE_WORKER` for that case.
16
+ */
17
+ export declare const IS_BROWSER: boolean;
18
+ /**
19
+ * True when running inside a Web Worker / Chrome MV3 service worker. `self` is
20
+ * defined without `window` in worker contexts.
21
+ */
22
+ export declare const IS_WORKER: boolean;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ //#region src/constants/runtime.ts
6
+ /**
7
+ * @file Runtime environment detection constants. All checks use only
8
+ * `typeof`-safe global probes so this module is safe to import in browser,
9
+ * Node.js, Deno, Bun, and bundled contexts alike.
10
+ */
11
+ /**
12
+ * True when running inside a Node.js process. Detected via
13
+ * `process.versions.node` — present in Node, absent in browsers and Deno/Bun
14
+ * which expose a different `process.versions` shape (or no `process` at all).
15
+ */
16
+ const IS_NODE = typeof process !== "undefined" && typeof process.versions !== "undefined" && typeof process.versions.node === "string";
17
+ /**
18
+ * True when running in a browser context (window + document both defined).
19
+ * Note: Chrome extensions have `window` in popup contexts but not in service
20
+ * workers — check `IS_SERVICE_WORKER` for that case.
21
+ */
22
+ const IS_BROWSER = typeof window !== "undefined" && typeof document !== "undefined";
23
+ /**
24
+ * True when running inside a Web Worker / Chrome MV3 service worker. `self` is
25
+ * defined without `window` in worker contexts.
26
+ */
27
+ const IS_WORKER = typeof self !== "undefined" && typeof window === "undefined" && typeof document === "undefined";
28
+
29
+ //#endregion
30
+ exports.IS_BROWSER = IS_BROWSER;
31
+ exports.IS_NODE = IS_NODE;
32
+ exports.IS_WORKER = IS_WORKER;
@@ -21,12 +21,8 @@ export declare const SOCKET_GITHUB_ORG = "SocketDev";
21
21
  export declare const SOCKET_REGISTRY_REPO_NAME = "socket-registry";
22
22
  export declare const SOCKET_REGISTRY_PACKAGE_NAME = "@socketsecurity/registry";
23
23
  export declare const SOCKET_REGISTRY_NPM_ORG = "socketregistry";
24
- export declare const SOCKET_CLI_APP_NAME = "socket";
25
- export declare const SOCKET_DLX_APP_NAME = "dlx";
26
- export declare const SOCKET_FIREWALL_APP_NAME = "sfw";
27
- export declare const SOCKET_REGISTRY_APP_NAME = "registry";
28
- export declare const SOCKET_WHEELHOUSE_APP_NAME = "wheelhouse";
29
- export declare const SOCKET_APP_PREFIX = "_";
24
+ export declare const SOCKET_DIR_PREFIX = "_";
25
+ export declare const SOCKET_DIR: Readonly<Record<'cacache' | 'dlx' | 'state' | 'wheelhouse', string>>;
30
26
  export declare const SOCKET_LIB_NAME = "@socketsecurity/lib";
31
27
  export declare const SOCKET_LIB_VERSION: string;
32
28
  export declare const SOCKET_IPC_HANDSHAKE = "SOCKET_IPC_HANDSHAKE";
@@ -26,14 +26,16 @@ const SOCKET_GITHUB_ORG = "SocketDev";
26
26
  const SOCKET_REGISTRY_REPO_NAME = "socket-registry";
27
27
  const SOCKET_REGISTRY_PACKAGE_NAME = "@socketsecurity/registry";
28
28
  const SOCKET_REGISTRY_NPM_ORG = "socketregistry";
29
- const SOCKET_CLI_APP_NAME = "socket";
30
- const SOCKET_DLX_APP_NAME = "dlx";
31
- const SOCKET_FIREWALL_APP_NAME = "sfw";
32
- const SOCKET_REGISTRY_APP_NAME = "registry";
33
- const SOCKET_WHEELHOUSE_APP_NAME = "wheelhouse";
34
- const SOCKET_APP_PREFIX = "_";
29
+ const SOCKET_DIR_PREFIX = "_";
30
+ const SOCKET_DIR = {
31
+ __proto__: null,
32
+ cacache: `${"_"}cacache`,
33
+ dlx: `${"_"}dlx`,
34
+ state: `${"_"}state`,
35
+ wheelhouse: `${"_"}wheelhouse`
36
+ };
35
37
  const SOCKET_LIB_NAME = "@socketsecurity/lib";
36
- const SOCKET_LIB_VERSION = "6.0.6";
38
+ const SOCKET_LIB_VERSION = "6.0.8";
37
39
  const SOCKET_IPC_HANDSHAKE = "SOCKET_IPC_HANDSHAKE";
38
40
  const CACHE_SOCKET_API_DIR = "socket-api";
39
41
  const REGISTRY = "registry";
@@ -45,14 +47,12 @@ exports.REGISTRY = REGISTRY;
45
47
  exports.REGISTRY_SCOPE_DELIMITER = REGISTRY_SCOPE_DELIMITER;
46
48
  exports.SOCKET_API_BASE_URL = SOCKET_API_BASE_URL;
47
49
  exports.SOCKET_API_TOKENS_URL = SOCKET_API_TOKENS_URL;
48
- exports.SOCKET_APP_PREFIX = SOCKET_APP_PREFIX;
49
- exports.SOCKET_CLI_APP_NAME = SOCKET_CLI_APP_NAME;
50
50
  exports.SOCKET_CONTACT_URL = SOCKET_CONTACT_URL;
51
51
  exports.SOCKET_DASHBOARD_URL = SOCKET_DASHBOARD_URL;
52
- exports.SOCKET_DLX_APP_NAME = SOCKET_DLX_APP_NAME;
52
+ exports.SOCKET_DIR = SOCKET_DIR;
53
+ exports.SOCKET_DIR_PREFIX = SOCKET_DIR_PREFIX;
53
54
  exports.SOCKET_DOCS_CONTACT_URL = SOCKET_DOCS_CONTACT_URL;
54
55
  exports.SOCKET_DOCS_URL = SOCKET_DOCS_URL;
55
- exports.SOCKET_FIREWALL_APP_NAME = SOCKET_FIREWALL_APP_NAME;
56
56
  exports.SOCKET_GITHUB_ORG = SOCKET_GITHUB_ORG;
57
57
  exports.SOCKET_IPC_HANDSHAKE = SOCKET_IPC_HANDSHAKE;
58
58
  exports.SOCKET_LIB_NAME = SOCKET_LIB_NAME;
@@ -61,12 +61,10 @@ exports.SOCKET_OVERRIDE_SCOPE = SOCKET_OVERRIDE_SCOPE;
61
61
  exports.SOCKET_PRICING_URL = SOCKET_PRICING_URL;
62
62
  exports.SOCKET_PUBLIC_API_KEY = SOCKET_PUBLIC_API_KEY;
63
63
  exports.SOCKET_PUBLIC_API_TOKEN = SOCKET_PUBLIC_API_TOKEN;
64
- exports.SOCKET_REGISTRY_APP_NAME = SOCKET_REGISTRY_APP_NAME;
65
64
  exports.SOCKET_REGISTRY_NPM_ORG = SOCKET_REGISTRY_NPM_ORG;
66
65
  exports.SOCKET_REGISTRY_PACKAGE_NAME = SOCKET_REGISTRY_PACKAGE_NAME;
67
66
  exports.SOCKET_REGISTRY_REPO_NAME = SOCKET_REGISTRY_REPO_NAME;
68
67
  exports.SOCKET_REGISTRY_SCOPE = SOCKET_REGISTRY_SCOPE;
69
68
  exports.SOCKET_SECURITY_SCOPE = SOCKET_SECURITY_SCOPE;
70
69
  exports.SOCKET_STATUS_URL = SOCKET_STATUS_URL;
71
- exports.SOCKET_WEBSITE_URL = SOCKET_WEBSITE_URL;
72
- exports.SOCKET_WHEELHOUSE_APP_NAME = SOCKET_WHEELHOUSE_APP_NAME;
70
+ exports.SOCKET_WEBSITE_URL = SOCKET_WEBSITE_URL;
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_runtime = require('../_virtual/_rolldown/runtime.js');
5
5
  const require_primordials_error = require('../primordials/error.js');
6
+ const require_primordials_object = require('../primordials/object.js');
7
+ const require_objects_predicates = require('../objects/predicates.js');
6
8
  const require_primordials_array = require('../primordials/array.js');
7
9
  const require_node_fs = require('../node/fs.js');
8
10
  const require_node_path = require('../node/path.js');
9
- const require_primordials_object = require('../primordials/object.js');
10
11
  const require_fs_read_json = require('../fs/read-json.js');
11
- const require_objects_predicates = require('../objects/predicates.js');
12
12
  const require_process_spawn_child = require('../process/spawn/child.js');
13
13
  let node_process = require("node:process");
14
14
  node_process = require_runtime.__toESM(node_process);
@@ -38,18 +38,18 @@ function calculateMetric(data) {
38
38
  async function getCodeCoverage(options) {
39
39
  const { coveragePath, generateIfMissing } = {
40
40
  __proto__: null,
41
- coveragePath: (/* @__PURE__ */ require_node_path.getNodePath()).join(node_process.default.cwd(), "coverage/coverage-final.json"),
41
+ coveragePath: require_node_path.getNodePath().join(node_process.default.cwd(), "coverage/coverage-final.json"),
42
42
  generateIfMissing: false,
43
43
  ...options
44
44
  };
45
45
  if (!coveragePath) throw new require_primordials_error.ErrorCtor("Coverage path is required");
46
- if (!(/* @__PURE__ */ require_node_fs.getNodeFs()).existsSync(coveragePath)) if (generateIfMissing) await require_process_spawn_child.spawn("vitest", ["run", "--coverage"], {
46
+ if (!require_node_fs.getNodeFs().existsSync(coveragePath)) if (generateIfMissing) await require_process_spawn_child.spawn("vitest", ["run", "--coverage"], {
47
47
  cwd: node_process.default.cwd(),
48
48
  stdio: "inherit"
49
49
  });
50
50
  else throw new require_primordials_error.ErrorCtor(`Coverage file not found at "${coveragePath}". Run tests with coverage first.`);
51
- const coverageData = await /* @__PURE__ */ require_fs_read_json.readJson(coveragePath);
52
- if (!/* @__PURE__ */ require_objects_predicates.isPlainObject(coverageData)) throw new require_primordials_error.ErrorCtor(`Invalid coverage data format in "${coveragePath}"`);
51
+ const coverageData = await require_fs_read_json.readJson(coveragePath);
52
+ if (!require_objects_predicates.isPlainObject(coverageData)) throw new require_primordials_error.ErrorCtor(`Invalid coverage data format in "${coveragePath}"`);
53
53
  const totals = {
54
54
  __proto__: null,
55
55
  branches: {
@@ -75,16 +75,16 @@ async function getCodeCoverage(options) {
75
75
  };
76
76
  const v8Data = coverageData;
77
77
  for (const fileCoverage of require_primordials_object.ObjectValues(v8Data)) {
78
- if (!/* @__PURE__ */ require_objects_predicates.isPlainObject(fileCoverage)) continue;
78
+ if (!require_objects_predicates.isPlainObject(fileCoverage)) continue;
79
79
  const fc = fileCoverage;
80
- if (fc.s && /* @__PURE__ */ require_objects_predicates.isPlainObject(fc.s)) {
80
+ if (fc.s && require_objects_predicates.isPlainObject(fc.s)) {
81
81
  const statementCounts = require_primordials_object.ObjectValues(fc.s);
82
82
  for (const count of statementCounts) if (typeof count === "number") {
83
83
  totals.statements.total += 1;
84
84
  if (count > 0) totals.statements.covered += 1;
85
85
  }
86
86
  }
87
- if (fc.b && /* @__PURE__ */ require_objects_predicates.isPlainObject(fc.b)) {
87
+ if (fc.b && require_objects_predicates.isPlainObject(fc.b)) {
88
88
  const branchCounts = require_primordials_object.ObjectValues(fc.b);
89
89
  for (const branches of branchCounts) if (require_primordials_array.ArrayIsArray(branches)) {
90
90
  for (const count of branches) if (typeof count === "number") {
@@ -93,7 +93,7 @@ async function getCodeCoverage(options) {
93
93
  }
94
94
  }
95
95
  }
96
- if (fc.f && /* @__PURE__ */ require_objects_predicates.isPlainObject(fc.f)) {
96
+ if (fc.f && require_objects_predicates.isPlainObject(fc.f)) {
97
97
  const functionCounts = require_primordials_object.ObjectValues(fc.f);
98
98
  for (const count of functionCounts) if (typeof count === "number") {
99
99
  totals.functions.total += 1;
@@ -95,13 +95,13 @@ function formatCoverage(options) {
95
95
  if (format === "simple") return overall;
96
96
  let output = "";
97
97
  output += "Code Coverage:\n";
98
- output += /* @__PURE__ */ require_strings_format.indentString(`Statements: ${code.statements.percent}%\n`, { count: 2 });
99
- output += /* @__PURE__ */ require_strings_format.indentString(`Branches: ${code.branches.percent}%\n`, { count: 2 });
100
- output += /* @__PURE__ */ require_strings_format.indentString(`Functions: ${code.functions.percent}%\n`, { count: 2 });
101
- output += /* @__PURE__ */ require_strings_format.indentString(`Lines: ${code.lines.percent}%\n`, { count: 2 });
98
+ output += require_strings_format.indentString(`Statements: ${code.statements.percent}%\n`, { count: 2 });
99
+ output += require_strings_format.indentString(`Branches: ${code.branches.percent}%\n`, { count: 2 });
100
+ output += require_strings_format.indentString(`Functions: ${code.functions.percent}%\n`, { count: 2 });
101
+ output += require_strings_format.indentString(`Lines: ${code.lines.percent}%\n`, { count: 2 });
102
102
  if (type) {
103
103
  output += "\nType Coverage:\n";
104
- output += /* @__PURE__ */ require_strings_format.indentString(`${type.percent}% (${type.covered}/${type.total})\n`, { count: 2 });
104
+ output += require_strings_format.indentString(`${type.percent}% (${type.covered}/${type.total})\n`, { count: 2 });
105
105
  }
106
106
  const overallValue = require_primordials_number.NumberParseFloat(overall);
107
107
  const emoji = getCoverageEmoji(require_primordials_number.NumberIsNaN(overallValue) ? 0 : overallValue);
@@ -1,8 +1,27 @@
1
1
  /**
2
2
  * @file Crypto hash helpers that prefer Node builtins where available. Probes
3
3
  * `node:crypto.hash()` (added v21.7.0 / v20.12.0) and falls back to the
4
- * streaming `createHash().update().digest()` chain on older runtimes.
4
+ * streaming `createHash().update().digest()` chain on older runtimes. Which
5
+ * digest goes where (integrity = sha512 trust boundary; checksum = sha256
6
+ * interop shape; cache keys = truncated, never trust): see
7
+ * `docs/hash-algorithms.md`.
5
8
  */
9
+ import type { hash as NodeHash } from 'node:crypto';
10
+ /**
11
+ * Compute the Socket content-address of `bytes`: `Q` +
12
+ * base64url(sha256(bytes)).
13
+ *
14
+ * Matches the blob store's hash scheme so a fetched blob can be verified
15
+ * against the hash it was requested by.
16
+ *
17
+ * @example
18
+ * ;```typescript
19
+ * import { blobHashOf } from '@socketsecurity/lib/crypto/hash'
20
+ *
21
+ * blobHashOf(new TextEncoder().encode('hello'))
22
+ * ```
23
+ */
24
+ export declare function blobHashOf(bytes: NodeJS.ArrayBufferView): string;
6
25
  /**
7
26
  * Compute a one-shot cryptographic hash.
8
27
  *
@@ -33,4 +52,13 @@ export declare function hash(algorithm: string, data: string | NodeJS.ArrayBuffe
33
52
  *
34
53
  * @internal
35
54
  */
36
- export declare function nativeHash(): typeof import('node:crypto').hash | undefined;
55
+ export declare function nativeHash(): typeof NodeHash | undefined;
56
+ /**
57
+ * Throw if `bytes` does not content-address to `blobHash`. Both `Q`-prefixed
58
+ * (single blob) and `S`-prefixed (file-stream) hashes share the sha256 digest
59
+ * body, so both verify against the same digest; the leading discriminator char
60
+ * is dropped before comparison.
61
+ *
62
+ * @throws {Error} When the recomputed digest does not match `blobHash`.
63
+ */
64
+ export declare function verifyBlobHash(blobHash: string, bytes: NodeJS.ArrayBufferView): void;