@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
@@ -7,6 +7,7 @@ const require_node_fs = require('../node/fs.js');
7
7
  const require_releases_github_asset_url = require('./github-asset-url.js');
8
8
  const require_releases_github_listing = require('./github-listing.js');
9
9
  const require_releases_github_downloads = require('./github-downloads.js');
10
+ const require_releases_socket_btm_binary_naming = require('./socket-btm-binary-naming.js');
10
11
 
11
12
  //#region src/releases/socket-btm.ts
12
13
  /**
@@ -20,26 +21,6 @@ const SOCKET_BTM_REPO = {
20
21
  repo: "socket-btm"
21
22
  };
22
23
  /**
23
- * Map Node.js platform to socket-btm asset platform naming. Identity mapping:
24
- * asset names use `process.platform` verbatim (`darwin`, `linux`, `win32`) to
25
- * align with pnpm's pack-app, the `--os` / `supportedArchitectures.os` config
26
- * keys, and the `@pnpm/exe.<os>-<arch>` package convention.
27
- */
28
- const PLATFORM_MAP = {
29
- __proto__: null,
30
- darwin: "darwin",
31
- linux: "linux",
32
- win32: "win32"
33
- };
34
- /**
35
- * Map Node.js arch to socket-btm asset arch naming.
36
- */
37
- const ARCH_MAP = {
38
- __proto__: null,
39
- arm64: "arm64",
40
- x64: "x64"
41
- };
42
- /**
43
24
  * Detect the libc variant (musl or glibc) on Linux systems. Returns undefined
44
25
  * for non-Linux platforms.
45
26
  *
@@ -53,17 +34,21 @@ const ARCH_MAP = {
53
34
  */
54
35
  function detectLibc() {
55
36
  /* c8 ignore next 3 */
56
- if (require_constants_platform.getPlatform() !== "linux") return;
37
+ if (require_constants_platform.getOs() !== "linux") return;
57
38
  /* c8 ignore start - Linux-only musl/glibc detection; tested on
58
39
  Linux runners. macOS/Windows runners take the early-return above. */
59
40
  try {
60
- const fs = /* @__PURE__ */ require_node_fs.getNodeFs();
61
- for (const path of [
41
+ const fs = require_node_fs.getNodeFs();
42
+ const muslPaths = [
62
43
  "/lib/ld-musl-x86_64.so.1",
63
44
  "/lib/ld-musl-aarch64.so.1",
64
45
  "/usr/lib/ld-musl-x86_64.so.1",
65
46
  "/usr/lib/ld-musl-aarch64.so.1"
66
- ]) if (fs.existsSync(path)) return "musl";
47
+ ];
48
+ for (let i = 0, { length } = muslPaths; i < length; i += 1) {
49
+ const path = muslPaths[i];
50
+ if (fs.existsSync(path)) return "musl";
51
+ }
67
52
  return "glibc";
68
53
  } catch {
69
54
  return "glibc";
@@ -127,14 +112,14 @@ async function downloadSocketBtmRelease(tool, options) {
127
112
  removeMacOSQuarantine
128
113
  };
129
114
  } else {
130
- const { bin, libc = detectLibc(), removeMacOSQuarantine = true, targetArch = require_constants_platform.getArch(), targetPlatform = require_constants_platform.getPlatform() } = {
115
+ const { bin, libc = detectLibc(), removeMacOSQuarantine = true, targetArch = require_constants_platform.getArch(), targetPlatform = require_constants_platform.getOs() } = {
131
116
  __proto__: null,
132
117
  ...options
133
118
  };
134
119
  const baseName = bin || tool;
135
- const assetName = getBinaryAssetName(baseName, targetPlatform, targetArch, libc);
136
- const platformArch = getPlatformArch(targetPlatform, targetArch, libc);
137
- const binaryName = getBinaryName(baseName, targetPlatform);
120
+ const assetName = require_releases_socket_btm_binary_naming.getBinaryAssetName(baseName, targetPlatform, targetArch, libc);
121
+ const platformArch = require_releases_socket_btm_binary_naming.getPlatformArch(targetPlatform, targetArch, libc);
122
+ const binaryName = require_releases_socket_btm_binary_naming.getBinaryName(baseName, targetPlatform);
138
123
  downloadConfig = {
139
124
  owner: SOCKET_BTM_REPO.owner,
140
125
  repo: SOCKET_BTM_REPO.repo,
@@ -152,139 +137,11 @@ async function downloadSocketBtmRelease(tool, options) {
152
137
  }
153
138
  return await require_releases_github_downloads.downloadGitHubRelease(downloadConfig);
154
139
  }
155
- /**
156
- * Get asset name for a socket-btm binary.
157
- *
158
- * @example
159
- * ;```typescript
160
- * getBinaryAssetName('lief', 'linux', 'x64', 'musl')
161
- * // 'lief-linux-x64-musl'
162
- * ```
163
- *
164
- * @param binaryBaseName - Binary basename (e.g., 'binject', 'node')
165
- * @param platform - Target platform.
166
- * @param arch - Target architecture.
167
- * @param libc - Linux libc variant (optional)
168
- *
169
- * @returns Asset name (e.g., 'binject-darwin-arm64', 'node-linux-x64-musl')
170
- */
171
- function getBinaryAssetName(binaryBaseName, platform, arch, libc) {
172
- const mappedArch = ARCH_MAP[arch];
173
- if (!mappedArch) throw new require_primordials_error.ErrorCtor(`Unsupported architecture: ${arch}`);
174
- const muslSuffix = platform === "linux" && libc === "musl" ? "-musl" : "";
175
- const ext = platform === "win32" ? ".exe" : "";
176
- if (platform === "darwin") return `${binaryBaseName}-darwin-${mappedArch}${ext}`;
177
- if (platform === "linux") return `${binaryBaseName}-linux-${mappedArch}${muslSuffix}${ext}`;
178
- if (platform === "win32") return `${binaryBaseName}-win32-${mappedArch}${ext}`;
179
- throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${platform}`);
180
- }
181
- /**
182
- * Get binary filename for output.
183
- *
184
- * @example
185
- * ;```typescript
186
- * getBinaryName('node', 'win32') // 'node.exe'
187
- * getBinaryName('node', 'linux') // 'node'
188
- * ```
189
- *
190
- * @param binaryBaseName - Binary basename (e.g., 'node', 'binject')
191
- * @param platform - Target platform.
192
- *
193
- * @returns Binary filename (e.g., 'node', 'node.exe')
194
- */
195
- function getBinaryName(binaryBaseName, platform) {
196
- return platform === "win32" ? `${binaryBaseName}.exe` : binaryBaseName;
197
- }
198
- /**
199
- * Lazily load the fs module to avoid Webpack errors. Uses non-'node:' prefixed
200
- * require to prevent Webpack bundling issues.
201
- *
202
- * @private
203
- */
204
- /**
205
- * Get platform-arch identifier for directory structure and asset names.
206
- *
207
- * # Format: `<os>-<arch>[-<libc>]`
208
- *
209
- * The OS segment is `process.platform` verbatim: `darwin` / `linux` / `win32`.
210
- * The arch segment is `process.arch` verbatim: `x64` / `arm64`. The optional
211
- * libc suffix is `-musl` (Linux only; the glibc default is unsuffixed to match
212
- * Node.js's own linuxstatic convention).
213
- *
214
- * # Why these specific conventions
215
- *
216
- * ## Why `win32`, not `win`
217
- *
218
- * `win32` is what `process.platform` returns on every Windows host. Every npm
219
- * package whose install-time platform filter uses the standard `os` / `cpu` /
220
- * `libc` manifest fields must match `process.platform` strings exactly (npm
221
- * compares them verbatim — there's no shorthand layer). Using `win` internally
222
- * here would have forced a translation every time we constructed an install
223
- * filter or a target triple, and reviewers would have to remember "we
224
- * abbreviate on disk but not in package filters." Since the two now match,
225
- * there's no translation step to get wrong.
226
- *
227
- * Pnpm's pack-app (v11+) accepts `<os>-<arch>[-<libc>]` target strings and its
228
- * shards are `@pnpm/exe.<os>-<arch>` (with `win32`, not `win` — see
229
- * pnpm#11314). Our naming matches so asset names we emit can flow directly into
230
- * pack-app's `--target` arg, `pnpm.app.targets` config, and
231
- * sibling-package-name construction without a translation map.
232
- *
233
- * ## Why `-musl` is the suffix (and glibc is unsuffixed)
234
- *
235
- * Node.js's own linuxstatic tarballs historically used the unqualified `linux`
236
- * for glibc and a separate download channel for musl. The pnpm ecosystem
237
- * codified that as `linux-<arch>` (glibc, default) and `linux-<arch>-musl` (the
238
- * libc outlier), matching the asymmetric reality of Linux distros — glibc is
239
- * the majority case, musl is Alpine-and-similar. Adding `-glibc` for the
240
- * default would be redundant noise in the name.
241
- *
242
- * ## Why libc is only appended for Linux
243
- *
244
- * MacOS and Windows have exactly one system libc each (Apple libSystem,
245
- * Microsoft UCRT). A hypothetical `darwin-arm64-libsystem` conveys no
246
- * information. Node.js, npm, and pnpm all treat libc as a Linux-only axis; we
247
- * follow the same convention so callers don't have to special- case
248
- * `'darwin-arm64'.startsWith('darwin-arm64')` style matches.
249
- *
250
- * ## Why this function exists at all (vs. inlining)
251
- *
252
- * Two upstream APIs that socket-btm consumers end up calling — the npm manifest
253
- * filter (`os`/`cpu`/`libc`) and pnpm's pack-app `--target` — both need the
254
- * exact same triple format. Centralizing the construction here means a future
255
- * schema change (e.g. Node introducing `riscv64`) gets one edit, and the error
256
- * message for an unsupported platform is uniform across downloaders, pack-app
257
- * invocations, and the `@socketbin/*` resolver logic.
258
- *
259
- * @example
260
- * ;```typescript
261
- * getPlatformArch('linux', 'x64', 'musl') // 'linux-x64-musl'
262
- * getPlatformArch('darwin', 'arm64') // 'darwin-arm64'
263
- * getPlatformArch('win32', 'x64') // 'win32-x64'
264
- * getPlatformArch('darwin', 'x64', 'musl') // 'darwin-x64' — libc ignored
265
- * ```
266
- *
267
- * @param platform - Target platform.
268
- * @param arch - Target architecture.
269
- * @param libc - Linux libc variant (optional; non-linux platforms ignore)
270
- *
271
- * @returns Platform-arch identifier (e.g., 'darwin-arm64', 'linux-x64-musl',
272
- * 'win32-x64')
273
- */
274
- function getPlatformArch(platform, arch, libc) {
275
- /* c8 ignore start */
276
- const mappedPlatform = PLATFORM_MAP[platform];
277
- if (!mappedPlatform) throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${platform}`);
278
- const mappedArch = ARCH_MAP[arch];
279
- if (!mappedArch) throw new require_primordials_error.ErrorCtor(`Unsupported architecture: ${arch}`);
280
- return `${mappedPlatform}-${mappedArch}${platform === "linux" && libc === "musl" ? "-musl" : ""}`;
281
- /* c8 ignore stop */
282
- }
283
140
 
284
141
  //#endregion
285
142
  exports.SOCKET_BTM_REPO = SOCKET_BTM_REPO;
286
143
  exports.detectLibc = detectLibc;
287
144
  exports.downloadSocketBtmRelease = downloadSocketBtmRelease;
288
- exports.getBinaryAssetName = getBinaryAssetName;
289
- exports.getBinaryName = getBinaryName;
290
- exports.getPlatformArch = getPlatformArch;
145
+ exports.getBinaryAssetName = require_releases_socket_btm_binary_naming.getBinaryAssetName;
146
+ exports.getBinaryName = require_releases_socket_btm_binary_naming.getBinaryName;
147
+ exports.getPlatformArch = require_releases_socket_btm_binary_naming.getPlatformArch;
@@ -24,7 +24,7 @@ export interface ParseResult<T> {
24
24
  /**
25
25
  * Error information (only present when `success` is `false`)
26
26
  */
27
- error?: unknown;
27
+ error?: unknown | undefined;
28
28
  }
29
29
  /**
30
30
  * Zod-shaped duck-type for any validator exposing `safeParse` / `parse`.
@@ -62,7 +62,7 @@ export interface Schema<T = unknown> {
62
62
  *
63
63
  * @internal
64
64
  */
65
- interface ZodV4LikeSchema<O = unknown> {
65
+ export interface ZodV4LikeSchema<O = unknown> {
66
66
  _zod: {
67
67
  output: O;
68
68
  };
@@ -74,7 +74,7 @@ interface ZodV4LikeSchema<O = unknown> {
74
74
  *
75
75
  * @internal
76
76
  */
77
- interface ZodV3LikeSchema<O = unknown> {
77
+ export interface ZodV3LikeSchema<O = unknown> {
78
78
  _output: O;
79
79
  safeParse(data: unknown): unknown;
80
80
  }
@@ -85,7 +85,7 @@ interface ZodV3LikeSchema<O = unknown> {
85
85
  *
86
86
  * @internal
87
87
  */
88
- interface TypeBoxLikeSchema {
88
+ export interface TypeBoxLikeSchema {
89
89
  static: unknown;
90
90
  }
91
91
  /**
@@ -130,4 +130,3 @@ export type ValidateResult<T> = {
130
130
  ok: false;
131
131
  errors: ValidationIssue[];
132
132
  };
133
- export {};
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_primordials_error = require('../primordials/error.js');
5
5
  const require_primordials_number = require('../primordials/number.js');
6
- const require_primordials_array = require('../primordials/array.js');
7
6
  const require_primordials_object = require('../primordials/object.js');
7
+ const require_primordials_array = require('../primordials/array.js');
8
8
 
9
9
  //#region src/schema/validate.ts
10
10
  /**
@@ -23,7 +23,7 @@ node_process = require_runtime.__toESM(node_process);
23
23
  /**
24
24
  * Cached SEA detection result.
25
25
  */
26
- let _isSea;
26
+ let isSeaCache;
27
27
  /**
28
28
  * Get the current SEA binary path. Only valid when running as a SEA binary.
29
29
  *
@@ -36,7 +36,7 @@ let _isSea;
36
36
  * ```
37
37
  */
38
38
  function getSeaBinaryPath() {
39
- return isSeaBinary() && node_process.default.argv[0] ? /* @__PURE__ */ require_paths_normalize.normalizePath(node_process.default.argv[0]) : void 0;
39
+ return isSeaBinary() && node_process.default.argv[0] ? require_paths_normalize.normalizePath(node_process.default.argv[0]) : void 0;
40
40
  }
41
41
  /**
42
42
  * Detect if the current process is running as a SEA binary. Uses Node.js 24+
@@ -50,12 +50,12 @@ function getSeaBinaryPath() {
50
50
  * ```
51
51
  */
52
52
  function isSeaBinary() {
53
- if (_isSea === void 0) try {
54
- _isSea = require("node:sea").isSea();
53
+ if (isSeaCache === void 0) try {
54
+ isSeaCache = require("node:sea").isSea();
55
55
  } catch {
56
- _isSea = false;
56
+ isSeaCache = false;
57
57
  }
58
- return _isSea ?? false;
58
+ return isSeaCache ?? false;
59
59
  }
60
60
 
61
61
  //#endregion
@@ -2,8 +2,8 @@
2
2
  * @file Private internals for `secrets/` — process-scoped read cache for the
3
3
  * keychain backend. Underscore-prefixed and skipped by the export generator
4
4
  * (`dist/**\/_*` ignore pattern in
5
- * `scripts/fix/generate-package-exports.mts`) so this module is NOT part of
6
- * the public API surface. Imported by `./keychain.ts`. Every `readSecret`
5
+ * `scripts/post-build/make-package-exports.mts`) so this module is NOT part
6
+ * of the public API surface. Imported by `./keychain.ts`. Every `readSecret`
7
7
  * call shells out to the OS credential CLI (`security`, `secret-tool`,
8
8
  * PowerShell). On macOS, the first read of a given entry by a new binary path
9
9
  * triggers a Keychain auth prompt unless the entry was written with `-A -T
@@ -8,8 +8,8 @@ const require_primordials_map_set = require('../primordials/map-set.js');
8
8
  * @file Private internals for `secrets/` — process-scoped read cache for the
9
9
  * keychain backend. Underscore-prefixed and skipped by the export generator
10
10
  * (`dist/**\/_*` ignore pattern in
11
- * `scripts/fix/generate-package-exports.mts`) so this module is NOT part of
12
- * the public API surface. Imported by `./keychain.ts`. Every `readSecret`
11
+ * `scripts/post-build/make-package-exports.mts`) so this module is NOT part
12
+ * of the public API surface. Imported by `./keychain.ts`. Every `readSecret`
13
13
  * call shells out to the OS credential CLI (`security`, `secret-tool`,
14
14
  * PowerShell). On macOS, the first read of a given entry by a new binary path
15
15
  * triggers a Keychain auth prompt unless the entry was written with `-A -T
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @file Constant-time secret comparison. Wraps Node's `crypto.timingSafeEqual`
3
+ * so every secret comparison in the codebase runs through one helper that
4
+ * refuses to short-circuit on the first mismatched byte. Why this matters:
5
+ *
6
+ * - `===` / `!==` on JS strings short-circuits at the first byte mismatch. An
7
+ * attacker who can measure server response time can binary-search the
8
+ * secret one byte at a time: `'a000...'`, `'b000...'`, … until the response
9
+ * slows down at the right first byte, then on to byte 2. Same trap for
10
+ * `Buffer.compare` and `==`.
11
+ * - `crypto.timingSafeEqual` runs in O(n) regardless of where the first
12
+ * mismatch is. Each iteration is the same cost so the timing channel
13
+ * carries no information about which byte mismatched. Use whenever
14
+ * comparing two values that include a secret (session token, API key, MAC,
15
+ * expected-hash). Don't use for path strings or other non-secret
16
+ * comparisons — `===` is fine there and faster. Patterned after pilcrow's
17
+ * `crypto.go::constantTimeCompare`, the canonical shape in
18
+ * passwordless-example.auth.pilcrowonpaper.com — wrap once, use everywhere,
19
+ * never byte-compare a secret directly.
20
+ */
21
+ /**
22
+ * Compare two secrets in constant time. Returns `true` when the inputs are
23
+ * byte-equal. Returns `false` when they differ **or** when the byte-lengths
24
+ * differ. Never throws.
25
+ *
26
+ * Length mismatch handling: `timingSafeEqual` itself throws on length mismatch
27
+ * (it can't preserve the timing-safety contract across differently- sized
28
+ * buffers). We catch that and return `false` so callers don't need a length
29
+ * pre-check.
30
+ *
31
+ * @example
32
+ * ;```typescript
33
+ * import { compareSecrets } from '@socketsecurity/lib/secrets/compare'
34
+ *
35
+ * if (!compareSecrets(presentedToken, storedToken)) {
36
+ * throw new Error('invalid token')
37
+ * }
38
+ * ```
39
+ *
40
+ * @param a - First secret (string or Buffer).
41
+ * @param b - Second secret (string or Buffer).
42
+ *
43
+ * @returns `true` when `a` and `b` are byte-equal; `false` otherwise.
44
+ */
45
+ export declare function compareSecrets(a: Buffer | string, b: Buffer | string): boolean;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_runtime = require('../_virtual/_rolldown/runtime.js');
5
+ let node_crypto = require("node:crypto");
6
+ node_crypto = require_runtime.__toESM(node_crypto);
7
+
8
+ //#region src/secrets/compare.ts
9
+ /**
10
+ * @file Constant-time secret comparison. Wraps Node's `crypto.timingSafeEqual`
11
+ * so every secret comparison in the codebase runs through one helper that
12
+ * refuses to short-circuit on the first mismatched byte. Why this matters:
13
+ *
14
+ * - `===` / `!==` on JS strings short-circuits at the first byte mismatch. An
15
+ * attacker who can measure server response time can binary-search the
16
+ * secret one byte at a time: `'a000...'`, `'b000...'`, … until the response
17
+ * slows down at the right first byte, then on to byte 2. Same trap for
18
+ * `Buffer.compare` and `==`.
19
+ * - `crypto.timingSafeEqual` runs in O(n) regardless of where the first
20
+ * mismatch is. Each iteration is the same cost so the timing channel
21
+ * carries no information about which byte mismatched. Use whenever
22
+ * comparing two values that include a secret (session token, API key, MAC,
23
+ * expected-hash). Don't use for path strings or other non-secret
24
+ * comparisons — `===` is fine there and faster. Patterned after pilcrow's
25
+ * `crypto.go::constantTimeCompare`, the canonical shape in
26
+ * passwordless-example.auth.pilcrowonpaper.com — wrap once, use everywhere,
27
+ * never byte-compare a secret directly.
28
+ */
29
+ /**
30
+ * Compare two secrets in constant time. Returns `true` when the inputs are
31
+ * byte-equal. Returns `false` when they differ **or** when the byte-lengths
32
+ * differ. Never throws.
33
+ *
34
+ * Length mismatch handling: `timingSafeEqual` itself throws on length mismatch
35
+ * (it can't preserve the timing-safety contract across differently- sized
36
+ * buffers). We catch that and return `false` so callers don't need a length
37
+ * pre-check.
38
+ *
39
+ * @example
40
+ * ;```typescript
41
+ * import { compareSecrets } from '@socketsecurity/lib/secrets/compare'
42
+ *
43
+ * if (!compareSecrets(presentedToken, storedToken)) {
44
+ * throw new Error('invalid token')
45
+ * }
46
+ * ```
47
+ *
48
+ * @param a - First secret (string or Buffer).
49
+ * @param b - Second secret (string or Buffer).
50
+ *
51
+ * @returns `true` when `a` and `b` are byte-equal; `false` otherwise.
52
+ */
53
+ function compareSecrets(a, b) {
54
+ const ab = typeof a === "string" ? Buffer.from(a, "utf8") : a;
55
+ const bb = typeof b === "string" ? Buffer.from(b, "utf8") : b;
56
+ if (ab.length !== bb.length) return false;
57
+ return node_crypto.default.timingSafeEqual(ab, bb);
58
+ }
59
+
60
+ //#endregion
61
+ exports.compareSecrets = compareSecrets;
@@ -71,9 +71,9 @@ export declare function readEnv(name: string): string | undefined;
71
71
  * `undefined` when neither source has the value — the caller's signal to prompt
72
72
  * the user or surface a setup hint.
73
73
  */
74
- export declare function resolve(opts: ResolveOptions): Promise<ResolveResult | undefined>;
74
+ export declare function resolve(options: ResolveOptions): Promise<ResolveResult | undefined>;
75
75
  /**
76
76
  * Sync variant for non-async callers (hook initializers, schema validators that
77
77
  * run before any `await` machinery exists).
78
78
  */
79
- export declare function resolveSync(opts: ResolveOptions): ResolveResult | undefined;
79
+ export declare function resolveSync(options: ResolveOptions): ResolveResult | undefined;
@@ -42,8 +42,11 @@ function readEnv(name) {
42
42
  * `undefined` when neither source has the value — the caller's signal to prompt
43
43
  * the user or surface a setup hint.
44
44
  */
45
- async function resolve(opts) {
46
- const { accounts, allowEnvOnly, service } = opts;
45
+ async function resolve(options) {
46
+ const { accounts, allowEnvOnly, service } = {
47
+ __proto__: null,
48
+ ...options
49
+ };
47
50
  for (let i = 0, { length } = accounts; i < length; i += 1) {
48
51
  const account = accounts[i];
49
52
  const fromEnv = readEnv(account);
@@ -71,8 +74,11 @@ async function resolve(opts) {
71
74
  * Sync variant for non-async callers (hook initializers, schema validators that
72
75
  * run before any `await` machinery exists).
73
76
  */
74
- function resolveSync(opts) {
75
- const { accounts, allowEnvOnly, service } = opts;
77
+ function resolveSync(options) {
78
+ const { accounts, allowEnvOnly, service } = {
79
+ __proto__: null,
80
+ ...options
81
+ };
76
82
  for (let i = 0, { length } = accounts; i < length; i += 1) {
77
83
  const account = accounts[i];
78
84
  const fromEnv = readEnv(account);
@@ -46,7 +46,7 @@ export declare function deleteSecretFromSlotsSync({ service, accounts, }: Delete
46
46
  export declare function deleteSecretSync({ service, account, }: DeleteOptions): 'removed' | 'absent';
47
47
  export type { BackendAvailability, SecretDeleteResult, SecretWriteResult, } from './types';
48
48
  export type { SecretSlot } from './types';
49
- type Platform = 'darwin' | 'linux' | 'win32' | 'other';
49
+ export type Platform = 'darwin' | 'linux' | 'win32' | 'other';
50
50
  /**
51
51
  * Resolve the current OS to one of our four backend categories.
52
52
  *
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_runtime = require('../_virtual/_rolldown/runtime.js');
4
5
  const require_primordials_error = require('../primordials/error.js');
5
6
  const require_secrets__internal = require('./_internal.js');
6
7
  const require_secrets_macos = require('./macos.js');
7
8
  const require_secrets_linux = require('./linux.js');
8
9
  const require_secrets_windows = require('./windows.js');
9
10
  let node_os = require("node:os");
11
+ node_os = require_runtime.__toESM(node_os);
10
12
 
11
13
  //#region src/secrets/keychain.ts
12
14
  /**
@@ -118,7 +120,7 @@ function deleteSecretSync({ service, account }) {
118
120
  * @internal
119
121
  */
120
122
  function detectPlatform() {
121
- const p = (0, node_os.platform)();
123
+ const p = node_os.default.platform();
122
124
  if (p === "darwin" || p === "linux" || p === "win32") return p;
123
125
  return "other";
124
126
  }
@@ -150,7 +152,7 @@ function getBackendAvailability() {
150
152
  default: return {
151
153
  available: false,
152
154
  toolName: "n/a",
153
- installHint: `Platform ${(0, node_os.platform)()} is not supported.`
155
+ installHint: `Platform ${node_os.default.platform()} is not supported.`
154
156
  };
155
157
  }
156
158
  }
@@ -231,7 +233,7 @@ function readSecretSync({ service, account }) {
231
233
  async function writeSecret({ service, account, value, label }) {
232
234
  if (!value || typeof value !== "string") throw new require_primordials_error.TypeErrorCtor("writeSecret: value must be a non-empty string");
233
235
  const platform_ = detectPlatform();
234
- if (platform_ === "other") throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${(0, node_os.platform)()}. Secret storage requires macOS, Linux, or Windows.`);
236
+ if (platform_ === "other") throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${node_os.default.platform()}. Secret storage requires macOS, Linux, or Windows.`);
235
237
  if (await readSecret({
236
238
  service,
237
239
  account
@@ -254,7 +256,7 @@ async function writeSecret({ service, account, value, label }) {
254
256
  function writeSecretSync({ service, account, value, label }) {
255
257
  if (!value || typeof value !== "string") throw new require_primordials_error.TypeErrorCtor("writeSecret: value must be a non-empty string");
256
258
  const platform_ = detectPlatform();
257
- if (platform_ === "other") throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${(0, node_os.platform)()}. Secret storage requires macOS, Linux, or Windows.`);
259
+ if (platform_ === "other") throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${node_os.default.platform()}. Secret storage requires macOS, Linux, or Windows.`);
258
260
  if (readSecretSync({
259
261
  service,
260
262
  account