@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
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @file Probe githubstatus.com to detect platform degradation before making
3
+ * GitHub API calls. Useful in scripts, release tooling, and CI pre-flight
4
+ * checks where a cryptic "operation was canceled" error would otherwise mask
5
+ * an upstream GitHub outage. Component IDs are stable GitHub-assigned
6
+ * identifiers from githubstatus.com/api/v2/components.json. The probe adds at
7
+ * most 8 seconds to startup (configurable timeout) and fails open on network
8
+ * error so a down status page never blocks a healthy workflow.
9
+ */
10
+ export type GitHubComponentStatus = 'degraded_performance' | 'major_outage' | 'operational' | 'partial_outage' | 'under_maintenance';
11
+ export type GitHubStatusResult = {
12
+ /**
13
+ * Worst-case status across all monitored components.
14
+ */
15
+ status: GitHubComponentStatus | 'unknown';
16
+ /**
17
+ * Whether any monitored component is not fully operational.
18
+ */
19
+ degraded: boolean;
20
+ /**
21
+ * Human-readable summary, e.g. "Actions: degraded_performance".
22
+ */
23
+ summary: string;
24
+ /**
25
+ * Per-component breakdown for the monitored set.
26
+ */
27
+ components: Array<{
28
+ id: string;
29
+ name: string;
30
+ status: GitHubComponentStatus;
31
+ }>;
32
+ };
33
+ /**
34
+ * Probe githubstatus.com and return the health of GitHub Actions, Git
35
+ * Operations, and API Requests. Fails open (returns `{ status: 'unknown' }`)
36
+ * when the probe itself fails — so a down status page never blocks a healthy
37
+ * workflow.
38
+ *
39
+ * @example
40
+ * ;```typescript
41
+ * import { probeGitHubStatus } from '@socketsecurity/lib/env/github-status'
42
+ *
43
+ * const health = await probeGitHubStatus()
44
+ * if (health.degraded) {
45
+ * console.warn(`GitHub degraded: ${health.summary}`)
46
+ * }
47
+ * ```
48
+ *
49
+ * @param timeoutMs - Maximum milliseconds to wait for the probe. Default 8000.
50
+ */
51
+ export declare function probeGitHubStatus(timeoutMs?: number): Promise<GitHubStatusResult>;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_http_request_node = require('../http-request/node.js');
5
+
6
+ //#region src/env/github-status.ts
7
+ /**
8
+ * @file Probe githubstatus.com to detect platform degradation before making
9
+ * GitHub API calls. Useful in scripts, release tooling, and CI pre-flight
10
+ * checks where a cryptic "operation was canceled" error would otherwise mask
11
+ * an upstream GitHub outage. Component IDs are stable GitHub-assigned
12
+ * identifiers from githubstatus.com/api/v2/components.json. The probe adds at
13
+ * most 8 seconds to startup (configurable timeout) and fails open on network
14
+ * error so a down status page never blocks a healthy workflow.
15
+ */
16
+ const MONITORED_COMPONENT_IDS = new Map([
17
+ ["br0l2tvcx85d", "Actions"],
18
+ ["8l4ygp009s5s", "Git Operations"],
19
+ ["brv1bkgrwx7q", "API Requests"]
20
+ ]);
21
+ const SEVERITY = new Map([
22
+ ["major_outage", 4],
23
+ ["partial_outage", 3],
24
+ ["degraded_performance", 2],
25
+ ["under_maintenance", 1],
26
+ ["operational", 0]
27
+ ]);
28
+ const STATUS_API_URL = "https://www.githubstatus.com/api/v2/components.json";
29
+ /**
30
+ * Probe githubstatus.com and return the health of GitHub Actions, Git
31
+ * Operations, and API Requests. Fails open (returns `{ status: 'unknown' }`)
32
+ * when the probe itself fails — so a down status page never blocks a healthy
33
+ * workflow.
34
+ *
35
+ * @example
36
+ * ;```typescript
37
+ * import { probeGitHubStatus } from '@socketsecurity/lib/env/github-status'
38
+ *
39
+ * const health = await probeGitHubStatus()
40
+ * if (health.degraded) {
41
+ * console.warn(`GitHub degraded: ${health.summary}`)
42
+ * }
43
+ * ```
44
+ *
45
+ * @param timeoutMs - Maximum milliseconds to wait for the probe. Default 8000.
46
+ */
47
+ async function probeGitHubStatus(timeoutMs = 8e3) {
48
+ let body;
49
+ try {
50
+ body = await require_http_request_node.httpJson(STATUS_API_URL, { timeout: timeoutMs });
51
+ } catch {
52
+ return {
53
+ status: "unknown",
54
+ degraded: false,
55
+ summary: "githubstatus.com unreachable — cannot confirm GitHub health",
56
+ components: []
57
+ };
58
+ }
59
+ const allComponents = body.components ?? [];
60
+ const monitored = [];
61
+ let worstSeverity = 0;
62
+ let worstStatus = "operational";
63
+ for (const c of allComponents) {
64
+ const name = MONITORED_COMPONENT_IDS.get(c.id);
65
+ if (!name) continue;
66
+ const status = c.status;
67
+ const sev = SEVERITY.get(status) ?? 0;
68
+ if (sev > worstSeverity) {
69
+ worstSeverity = sev;
70
+ worstStatus = status;
71
+ }
72
+ monitored.push({
73
+ id: c.id,
74
+ name,
75
+ status
76
+ });
77
+ }
78
+ const degradedComponents = monitored.filter((c) => c.status !== "operational");
79
+ const degraded = degradedComponents.length > 0;
80
+ const summary = degraded ? degradedComponents.map((c) => `${c.name}: ${c.status}`).join(", ") : "All monitored GitHub components operational";
81
+ return {
82
+ status: worstStatus,
83
+ degraded,
84
+ summary,
85
+ components: monitored
86
+ };
87
+ }
88
+
89
+ //#endregion
90
+ exports.probeGitHubStatus = probeGitHubStatus;
@@ -22,7 +22,6 @@ const require_env_rewire = require('./rewire.js');
22
22
  *
23
23
  * @returns The GH CLI token, or `undefined` if not set
24
24
  */
25
- /*@__NO_SIDE_EFFECTS__*/
26
25
  function getGhToken() {
27
26
  return require_env_rewire.getEnvValue("GH_TOKEN");
28
27
  }
@@ -40,7 +39,6 @@ function getGhToken() {
40
39
  *
41
40
  * @returns The GitHub API URL, or `undefined` if not set
42
41
  */
43
- /*@__NO_SIDE_EFFECTS__*/
44
42
  function getGithubApiUrl() {
45
43
  return require_env_rewire.getEnvValue("GITHUB_API_URL");
46
44
  }
@@ -57,7 +55,6 @@ function getGithubApiUrl() {
57
55
  *
58
56
  * @returns The pull request base branch name, or `undefined` if not set
59
57
  */
60
- /*@__NO_SIDE_EFFECTS__*/
61
58
  function getGithubBaseRef() {
62
59
  return require_env_rewire.getEnvValue("GITHUB_BASE_REF");
63
60
  }
@@ -74,7 +71,6 @@ function getGithubBaseRef() {
74
71
  *
75
72
  * @returns The branch or tag name, or `undefined` if not set
76
73
  */
77
- /*@__NO_SIDE_EFFECTS__*/
78
74
  function getGithubRefName() {
79
75
  return require_env_rewire.getEnvValue("GITHUB_REF_NAME");
80
76
  }
@@ -91,7 +87,6 @@ function getGithubRefName() {
91
87
  *
92
88
  * @returns The ref type ('branch' or 'tag'), or `undefined` if not set
93
89
  */
94
- /*@__NO_SIDE_EFFECTS__*/
95
90
  function getGithubRefType() {
96
91
  return require_env_rewire.getEnvValue("GITHUB_REF_TYPE");
97
92
  }
@@ -109,7 +104,6 @@ function getGithubRefType() {
109
104
  *
110
105
  * @returns The repository name, or `undefined` if not set
111
106
  */
112
- /*@__NO_SIDE_EFFECTS__*/
113
107
  function getGithubRepository() {
114
108
  return require_env_rewire.getEnvValue("GITHUB_REPOSITORY");
115
109
  }
@@ -127,7 +121,6 @@ function getGithubRepository() {
127
121
  *
128
122
  * @returns The GitHub server URL, or `undefined` if not set
129
123
  */
130
- /*@__NO_SIDE_EFFECTS__*/
131
124
  function getGithubServerUrl() {
132
125
  return require_env_rewire.getEnvValue("GITHUB_SERVER_URL");
133
126
  }
@@ -145,7 +138,6 @@ function getGithubServerUrl() {
145
138
  *
146
139
  * @returns The GitHub token, or `undefined` if not set
147
140
  */
148
- /*@__NO_SIDE_EFFECTS__*/
149
141
  function getGithubToken() {
150
142
  return require_env_rewire.getEnvValue("GITHUB_TOKEN");
151
143
  }
package/dist/env/home.js CHANGED
@@ -32,7 +32,6 @@ const require_env_rewire = require('./rewire.js');
32
32
  *
33
33
  * @returns The user's home directory path, or `undefined` if not resolvable
34
34
  */
35
- /*@__NO_SIDE_EFFECTS__*/
36
35
  function getHome() {
37
36
  return require_env_rewire.getEnvValue("HOME") ?? require_env_rewire.getEnvValue("USERPROFILE");
38
37
  }
@@ -21,7 +21,6 @@ const require_env_rewire = require('./rewire.js');
21
21
  *
22
22
  * @returns The system locale string, or `undefined` if not set
23
23
  */
24
- /*@__NO_SIDE_EFFECTS__*/
25
24
  function getLang() {
26
25
  return require_env_rewire.getEnvValue("LANG");
27
26
  }
@@ -38,7 +37,6 @@ function getLang() {
38
37
  *
39
38
  * @returns The locale override string, or `undefined` if not set
40
39
  */
41
- /*@__NO_SIDE_EFFECTS__*/
42
40
  function getLcAll() {
43
41
  return require_env_rewire.getEnvValue("LC_ALL");
44
42
  }
@@ -55,7 +53,6 @@ function getLcAll() {
55
53
  *
56
54
  * @returns The messages locale string, or `undefined` if not set
57
55
  */
58
- /*@__NO_SIDE_EFFECTS__*/
59
56
  function getLcMessages() {
60
57
  return require_env_rewire.getEnvValue("LC_MESSAGES");
61
58
  }
@@ -22,7 +22,6 @@ const require_env_rewire = require('./rewire.js');
22
22
  *
23
23
  * @returns The Node.js registry auth token, or `undefined` if not set
24
24
  */
25
- /*@__NO_SIDE_EFFECTS__*/
26
25
  function getNodeAuthToken() {
27
26
  return require_env_rewire.getEnvValue("NODE_AUTH_TOKEN");
28
27
  }
@@ -22,7 +22,6 @@ const require_env_rewire = require('./rewire.js');
22
22
  *
23
23
  * @returns The Node.js environment mode, or `undefined` if not set
24
24
  */
25
- /*@__NO_SIDE_EFFECTS__*/
26
25
  function getNodeEnv() {
27
26
  return require_env_rewire.getEnvValue("NODE_ENV");
28
27
  }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @file Detect which Node version manager is active on this machine and emit a
3
+ * targeted upgrade hint. Used when a tool needs Node ≥ X and wants to tell
4
+ * the user the exact command to run instead of a generic "install newer Node"
5
+ * line. Detection is best-effort:
6
+ *
7
+ * 1. **process.execPath** — the running Node binary's path is the most reliable
8
+ * signal. `~/.nvm/versions/node/...`, `~/.volta/tools/...`, `~/.fnm/...`,
9
+ * `~/.asdf/installs/nodejs/...`, `~/n/...` each have well-known directory
10
+ * shapes.
11
+ * 2. **Environment variables** — `NVM_DIR`, `FNM_DIR`, `FNM_MULTISHELL_PATH`,
12
+ * `VOLTA_HOME`, `ASDF_DIR`, `N_PREFIX`. These are set by the shell
13
+ * integration each manager ships.
14
+ * 3. **Corepack** — Node's bundled package-manager shim. Detected via
15
+ * `COREPACK_*` env vars or by the Node binary being under
16
+ * `corepack/shims/`. If none match, the manager is reported as `'system'`
17
+ * (Homebrew, apt, the .pkg installer, etc.) — for those, the upgrade hint
18
+ * is generic. This module does NOT shell out — every probe is in-process
19
+ * (env reads + path string inspection). That keeps it cheap to call and
20
+ * safe for the native-messaging host context, where stdout is reserved for
21
+ * the Chrome protocol.
22
+ */
23
+ export type NodeVersionManager = 'asdf' | 'corepack' | 'fnm' | 'n' | 'nvm' | 'system' | 'volta';
24
+ /**
25
+ * Detect the Node version manager currently providing `process.execPath`.
26
+ * Returns `'system'` when no manager is detected — the user is running a Node
27
+ * installed by the OS package manager, the official .pkg/.msi installer, or a
28
+ * manually placed binary.
29
+ *
30
+ * @example
31
+ * ;```typescript
32
+ * detectActiveNodeManager() // 'nvm' | 'fnm' | 'volta' | 'asdf' | 'n' | 'corepack' | 'system'
33
+ * ```
34
+ */
35
+ export declare function detectActiveNodeManager(): NodeVersionManager;
36
+ /**
37
+ * Produce the exact shell command a user should run to install + activate
38
+ * `targetVersion` under the named manager. The command is single-line and
39
+ * intended to be embedded in an error message verbatim.
40
+ *
41
+ * @example
42
+ * ;```typescript
43
+ * nodeManagerUpgradeHint('nvm', '22.6.0')
44
+ * // 'nvm install 22.6.0 && nvm use 22.6.0'
45
+ *
46
+ * nodeManagerUpgradeHint('system', '22.6.0')
47
+ * // 'Install Node 22.6.0+ from https://nodejs.org/'
48
+ * ```
49
+ *
50
+ * @param manager - The detected Node version manager.
51
+ * @param targetVersion - Semver-shaped version, e.g. `'22.6.0'` or `'22'`.
52
+ */
53
+ export declare function nodeManagerUpgradeHint(manager: NodeVersionManager, targetVersion: string): string;
@@ -0,0 +1,90 @@
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
+ const require_env_rewire = require('./rewire.js');
6
+ let node_process = require("node:process");
7
+ node_process = require_runtime.__toESM(node_process);
8
+
9
+ //#region src/env/node-version-managers.ts
10
+ /**
11
+ * @file Detect which Node version manager is active on this machine and emit a
12
+ * targeted upgrade hint. Used when a tool needs Node ≥ X and wants to tell
13
+ * the user the exact command to run instead of a generic "install newer Node"
14
+ * line. Detection is best-effort:
15
+ *
16
+ * 1. **process.execPath** — the running Node binary's path is the most reliable
17
+ * signal. `~/.nvm/versions/node/...`, `~/.volta/tools/...`, `~/.fnm/...`,
18
+ * `~/.asdf/installs/nodejs/...`, `~/n/...` each have well-known directory
19
+ * shapes.
20
+ * 2. **Environment variables** — `NVM_DIR`, `FNM_DIR`, `FNM_MULTISHELL_PATH`,
21
+ * `VOLTA_HOME`, `ASDF_DIR`, `N_PREFIX`. These are set by the shell
22
+ * integration each manager ships.
23
+ * 3. **Corepack** — Node's bundled package-manager shim. Detected via
24
+ * `COREPACK_*` env vars or by the Node binary being under
25
+ * `corepack/shims/`. If none match, the manager is reported as `'system'`
26
+ * (Homebrew, apt, the .pkg installer, etc.) — for those, the upgrade hint
27
+ * is generic. This module does NOT shell out — every probe is in-process
28
+ * (env reads + path string inspection). That keeps it cheap to call and
29
+ * safe for the native-messaging host context, where stdout is reserved for
30
+ * the Chrome protocol.
31
+ */
32
+ /**
33
+ * Detect the Node version manager currently providing `process.execPath`.
34
+ * Returns `'system'` when no manager is detected — the user is running a Node
35
+ * installed by the OS package manager, the official .pkg/.msi installer, or a
36
+ * manually placed binary.
37
+ *
38
+ * @example
39
+ * ;```typescript
40
+ * detectActiveNodeManager() // 'nvm' | 'fnm' | 'volta' | 'asdf' | 'n' | 'corepack' | 'system'
41
+ * ```
42
+ */
43
+ function detectActiveNodeManager() {
44
+ const exec = node_process.default.execPath;
45
+ if (/[/\\]\.nvm[/\\]versions[/\\]node[/\\]/.test(exec)) return "nvm";
46
+ if (/[/\\]\.fnm[/\\]/.test(exec) || /[/\\]fnm_multishells[/\\]/.test(exec)) return "fnm";
47
+ if (/[/\\]\.volta[/\\]tools[/\\]/.test(exec)) return "volta";
48
+ if (/[/\\]\.asdf[/\\]installs[/\\]nodejs[/\\]/.test(exec)) return "asdf";
49
+ if (/[/\\]n[/\\]versions[/\\]node[/\\]/.test(exec)) return "n";
50
+ if (/[/\\]corepack[/\\]shims[/\\]/.test(exec)) return "corepack";
51
+ if (require_env_rewire.getEnvValue("NVM_DIR")) return "nvm";
52
+ if (require_env_rewire.getEnvValue("FNM_DIR") || require_env_rewire.getEnvValue("FNM_MULTISHELL_PATH")) return "fnm";
53
+ if (require_env_rewire.getEnvValue("VOLTA_HOME")) return "volta";
54
+ if (require_env_rewire.getEnvValue("ASDF_DIR")) return "asdf";
55
+ if (require_env_rewire.getEnvValue("N_PREFIX")) return "n";
56
+ if (require_env_rewire.getEnvValue("COREPACK_HOME")) return "corepack";
57
+ return "system";
58
+ }
59
+ /**
60
+ * Produce the exact shell command a user should run to install + activate
61
+ * `targetVersion` under the named manager. The command is single-line and
62
+ * intended to be embedded in an error message verbatim.
63
+ *
64
+ * @example
65
+ * ;```typescript
66
+ * nodeManagerUpgradeHint('nvm', '22.6.0')
67
+ * // 'nvm install 22.6.0 && nvm use 22.6.0'
68
+ *
69
+ * nodeManagerUpgradeHint('system', '22.6.0')
70
+ * // 'Install Node 22.6.0+ from https://nodejs.org/'
71
+ * ```
72
+ *
73
+ * @param manager - The detected Node version manager.
74
+ * @param targetVersion - Semver-shaped version, e.g. `'22.6.0'` or `'22'`.
75
+ */
76
+ function nodeManagerUpgradeHint(manager, targetVersion) {
77
+ switch (manager) {
78
+ case "asdf": return `asdf install nodejs ${targetVersion} && asdf global nodejs ${targetVersion}`;
79
+ case "corepack": return `Corepack manages package managers, not Node. Install Node ${targetVersion}+ via nvm/fnm/volta or from https://nodejs.org/`;
80
+ case "fnm": return `fnm install ${targetVersion} && fnm use ${targetVersion}`;
81
+ case "n": return `n ${targetVersion}`;
82
+ case "nvm": return `nvm install ${targetVersion} && nvm use ${targetVersion}`;
83
+ case "volta": return `volta install node@${targetVersion}`;
84
+ default: return `Install Node ${targetVersion}+ from https://nodejs.org/`;
85
+ }
86
+ }
87
+
88
+ //#endregion
89
+ exports.detectActiveNodeManager = detectActiveNodeManager;
90
+ exports.nodeManagerUpgradeHint = nodeManagerUpgradeHint;
package/dist/env/npm.js CHANGED
@@ -22,7 +22,6 @@ const require_env_rewire = require('./rewire.js');
22
22
  *
23
23
  * @returns The configured NPM registry URL, or `undefined` if not set
24
24
  */
25
- /*@__NO_SIDE_EFFECTS__*/
26
25
  function getNpmConfigRegistry() {
27
26
  return require_env_rewire.getEnvValue("npm_config_registry");
28
27
  }
@@ -40,7 +39,6 @@ function getNpmConfigRegistry() {
40
39
  *
41
40
  * @returns The package manager user agent string, or `undefined` if not set
42
41
  */
43
- /*@__NO_SIDE_EFFECTS__*/
44
42
  function getNpmConfigUserAgent() {
45
43
  return require_env_rewire.getEnvValue("npm_config_user_agent");
46
44
  }
@@ -58,7 +56,6 @@ function getNpmConfigUserAgent() {
58
56
  *
59
57
  * @returns The current lifecycle event name, or `undefined` if not set
60
58
  */
61
- /*@__NO_SIDE_EFFECTS__*/
62
59
  function getNpmLifecycleEvent() {
63
60
  return require_env_rewire.getEnvValue("npm_lifecycle_event");
64
61
  }
@@ -75,7 +72,6 @@ function getNpmLifecycleEvent() {
75
72
  *
76
73
  * @returns The NPM registry URL override, or `undefined` if not set
77
74
  */
78
- /*@__NO_SIDE_EFFECTS__*/
79
75
  function getNpmRegistry() {
80
76
  return require_env_rewire.getEnvValue("NPM_REGISTRY");
81
77
  }
@@ -92,7 +88,6 @@ function getNpmRegistry() {
92
88
  *
93
89
  * @returns The NPM auth token, or `undefined` if not set
94
90
  */
95
- /*@__NO_SIDE_EFFECTS__*/
96
91
  function getNpmToken() {
97
92
  return require_env_rewire.getEnvValue("NPM_TOKEN");
98
93
  }
@@ -31,7 +31,6 @@ const require_primordials_number = require('../primordials/number.js');
31
31
  *
32
32
  * @returns The parsed number, or the default value if parsing fails
33
33
  */
34
- /*@__NO_SIDE_EFFECTS__*/
35
34
  function envAsNumber(value, defaultValueOrOptions = 0) {
36
35
  const { allowInfinity = false, defaultValue = 0, mode = "int" } = typeof defaultValueOrOptions === "number" ? { defaultValue: defaultValueOrOptions } : defaultValueOrOptions ?? {};
37
36
  if (value === void 0 || value === null) return defaultValue;
@@ -37,11 +37,10 @@ node_process = require_runtime.__toESM(node_process);
37
37
  *
38
38
  * @returns The detected package manager or null if unable to determine
39
39
  */
40
- /*@__NO_SIDE_EFFECTS__*/
41
40
  function detectPackageManager() {
42
- const userAgent = /* @__PURE__ */ getPackageManagerUserAgent();
41
+ const userAgent = getPackageManagerUserAgent();
43
42
  if (userAgent) {
44
- const match = userAgent.match(/^(npm|pnpm|yarn|bun)\//);
43
+ const match = userAgent.match(/^(bun|npm|pnpm|yarn)\//);
45
44
  if (match) return match[1];
46
45
  }
47
46
  /* c8 ignore start - argv0-based PM fallback only fires when
@@ -67,9 +66,8 @@ function detectPackageManager() {
67
66
  *
68
67
  * @returns Object with name and version, or null if not available
69
68
  */
70
- /*@__NO_SIDE_EFFECTS__*/
71
69
  function getPackageManagerInfo() {
72
- const userAgent = /* @__PURE__ */ getPackageManagerUserAgent();
70
+ const userAgent = getPackageManagerUserAgent();
73
71
  if (!userAgent) return;
74
72
  const match = userAgent.match(/^([^/]+)\/([^\s]+)/);
75
73
  if (match?.[1] && match[2]) return {
@@ -91,7 +89,6 @@ function getPackageManagerInfo() {
91
89
  *
92
90
  * @returns The user agent string or undefined
93
91
  */
94
- /*@__NO_SIDE_EFFECTS__*/
95
92
  function getPackageManagerUserAgent() {
96
93
  return require_env_rewire.getEnvValue("npm_config_user_agent");
97
94
  }
package/dist/env/path.js CHANGED
@@ -22,7 +22,6 @@ const require_env_rewire = require('./rewire.js');
22
22
  *
23
23
  * @returns The system executable search paths, or `undefined` if not set
24
24
  */
25
- /*@__NO_SIDE_EFFECTS__*/
26
25
  function getPath() {
27
26
  return require_env_rewire.getEnvValue("PATH");
28
27
  }
@@ -24,9 +24,8 @@ const require_env_rewire = require('./rewire.js');
24
24
  *
25
25
  * @returns `true` if running in a pre-commit hook, `false` otherwise
26
26
  */
27
- /*@__NO_SIDE_EFFECTS__*/
28
27
  function getPreCommit() {
29
- return /* @__PURE__ */ require_env_boolean.envAsBoolean(require_env_rewire.getEnvValue("PRE_COMMIT"));
28
+ return require_env_boolean.envAsBoolean(require_env_rewire.getEnvValue("PRE_COMMIT"));
30
29
  }
31
30
 
32
31
  //#endregion
package/dist/env/proxy.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
- const require_primordials_map_set = require('../primordials/map-set.js');
5
4
  const require_primordials_object = require('../primordials/object.js');
5
+ const require_primordials_map_set = require('../primordials/map-set.js');
6
6
  const require_primordials_globals = require('../primordials/globals.js');
7
7
  const require_env_case_insensitive = require('./case-insensitive.js');
8
8
 
@@ -8,12 +8,8 @@
8
8
  * - Compatible with vi.stubEnv() - reads from process.env as final fallback
9
9
  * - Thread-safe for concurrent test execution
10
10
  */
11
- /**
12
- * Lazily load the async_hooks module to avoid Webpack errors.
13
- *
14
- * @private
15
- */
16
- export declare function getAsyncHooks(): typeof import('node:async_hooks');
11
+ import type * as asyncHooksModule from 'node:async_hooks';
12
+ export type EnvOverrides = Map<string, string | undefined>;
17
13
  /**
18
14
  * Clear a specific environment variable override.
19
15
  *
@@ -28,6 +24,12 @@ export declare function getAsyncHooks(): typeof import('node:async_hooks');
28
24
  * @param key - The environment variable name to clear.
29
25
  */
30
26
  export declare function clearEnv(key: string): void;
27
+ /**
28
+ * Lazily load the async_hooks module to avoid Webpack errors.
29
+ *
30
+ * @private
31
+ */
32
+ export declare function getAsyncHooks(): typeof asyncHooksModule;
31
33
  /**
32
34
  * Get an environment variable value, checking overrides first.
33
35
  *
@@ -2,10 +2,10 @@
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_map_set = require('../primordials/map-set.js');
6
5
  const require_primordials_object = require('../primordials/object.js');
7
6
  const require_objects_predicates = require('../objects/predicates.js');
8
7
  const require_env_boolean = require('./boolean.js');
8
+ const require_primordials_map_set = require('../primordials/map-set.js');
9
9
  let node_process = require("node:process");
10
10
  node_process = require_runtime.__toESM(node_process);
11
11
 
@@ -20,23 +20,13 @@ node_process = require_runtime.__toESM(node_process);
20
20
  * - Compatible with vi.stubEnv() - reads from process.env as final fallback
21
21
  * - Thread-safe for concurrent test execution
22
22
  */
23
- let _async_hooks;
24
- /**
25
- * Lazily load the async_hooks module to avoid Webpack errors.
26
- *
27
- * @private
28
- */
29
- /*@__NO_SIDE_EFFECTS__*/
30
- function getAsyncHooks() {
31
- if (_async_hooks === void 0) _async_hooks = /*@__PURE__*/ require("node:async_hooks");
32
- return _async_hooks;
33
- }
34
- const { AsyncLocalStorage } = /* @__PURE__ */ getAsyncHooks();
23
+ let asyncHooks;
24
+ const { AsyncLocalStorage } = getAsyncHooks();
35
25
  const isolatedOverridesStorage = new AsyncLocalStorage();
36
26
  const sharedOverridesSymbol = Symbol.for("@socketsecurity/lib/env/rewire/test-overrides");
37
- const _globalThis = globalThis;
38
- if (/* @__PURE__ */ require_env_boolean.envAsBoolean(node_process.default.env["VITEST"]) && !_globalThis[sharedOverridesSymbol]) _globalThis[sharedOverridesSymbol] = new require_primordials_map_set.MapCtor();
39
- const sharedOverrides = _globalThis[sharedOverridesSymbol];
27
+ const globalThisRef = globalThis;
28
+ if (require_env_boolean.envAsBoolean(node_process.default.env["VITEST"]) && !globalThisRef[sharedOverridesSymbol]) globalThisRef[sharedOverridesSymbol] = new require_primordials_map_set.MapCtor();
29
+ const sharedOverrides = globalThisRef[sharedOverridesSymbol];
40
30
  /**
41
31
  * Clear a specific environment variable override.
42
32
  *
@@ -54,6 +44,15 @@ function clearEnv(key) {
54
44
  sharedOverrides?.delete(key);
55
45
  }
56
46
  /**
47
+ * Lazily load the async_hooks module to avoid Webpack errors.
48
+ *
49
+ * @private
50
+ */
51
+ function getAsyncHooks() {
52
+ if (asyncHooks === void 0) asyncHooks = /*@__PURE__*/ require("node:async_hooks");
53
+ return asyncHooks;
54
+ }
55
+ /**
57
56
  * Get an environment variable value, checking overrides first.
58
57
  *
59
58
  * Resolution order: 1. Isolated overrides (temporary - set via
@@ -116,7 +115,7 @@ function hasOverride(key) {
116
115
  function isInEnv(key) {
117
116
  if (isolatedOverridesStorage.getStore()?.has(key)) return true;
118
117
  if (sharedOverrides?.has(key)) return true;
119
- return /* @__PURE__ */ require_objects_predicates.hasOwn(node_process.default.env, key);
118
+ return require_objects_predicates.hasOwn(node_process.default.env, key);
120
119
  }
121
120
  /**
122
121
  * Clear all environment variable overrides. Useful in afterEach hooks to ensure
package/dist/env/shell.js CHANGED
@@ -22,7 +22,6 @@ const require_env_rewire = require('./rewire.js');
22
22
  *
23
23
  * @returns The user's default shell path, or `undefined` if not set
24
24
  */
25
- /*@__NO_SIDE_EFFECTS__*/
26
25
  function getShell() {
27
26
  return require_env_rewire.getEnvValue("SHELL");
28
27
  }