@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
@@ -18,10 +18,10 @@ const require_primordials_globals = require('../primordials/globals.js');
18
18
  * polyfill makes for browser hosts. Spec:
19
19
  * https://tc39.es/proposal-temporal/#sec-temporal-systemutcepochnanoseconds.
20
20
  */
21
- const _hrtimeBigint = globalThis.process?.hrtime?.bigint;
22
- const _anchorWallMs = require_primordials_globals.BigIntCtor(require_primordials_date.DateNow());
23
- const _anchorHrns = _hrtimeBigint ? _hrtimeBigint() : 0n;
24
- const _NS_PER_MS = 1000000n;
21
+ const hrtimeBigint = globalThis.process?.hrtime?.bigint;
22
+ const anchorWallMs = require_primordials_globals.BigIntCtor(require_primordials_date.DateNow());
23
+ const anchorHrns = hrtimeBigint ? hrtimeBigint() : 0n;
24
+ const NS_PER_MS = 1000000n;
25
25
  /**
26
26
  * Returns the current UTC time as nanoseconds since 1970-01-01T00:00:00Z.
27
27
  *
@@ -29,13 +29,13 @@ const _NS_PER_MS = 1000000n;
29
29
  * module load), millisecond elsewhere.
30
30
  */
31
31
  function systemUTCEpochNanoseconds() {
32
- if (_hrtimeBigint) {
33
- const elapsedNs = _hrtimeBigint() - _anchorHrns;
34
- return _anchorWallMs * _NS_PER_MS + elapsedNs;
32
+ if (hrtimeBigint) {
33
+ const elapsedNs = hrtimeBigint() - anchorHrns;
34
+ return anchorWallMs * NS_PER_MS + elapsedNs;
35
35
  }
36
36
  /* c8 ignore next - Non-Node runtime fallback; tests always run under Node
37
- where _hrtimeBigint is bound from process.hrtime.bigint. */
38
- return require_primordials_globals.BigIntCtor(require_primordials_date.DateNow()) * _NS_PER_MS;
37
+ where hrtimeBigint is bound from process.hrtime.bigint. */
38
+ return require_primordials_globals.BigIntCtor(require_primordials_date.DateNow()) * NS_PER_MS;
39
39
  }
40
40
 
41
41
  //#endregion
@@ -3,7 +3,8 @@
3
3
  * context isolation via AsyncLocalStorage.
4
4
  */
5
5
  import type { Theme } from './types';
6
- import { type ThemeName } from './themes';
6
+ import type { ThemeName } from './themes';
7
+ import type * as AsyncHooks from 'node:async_hooks';
7
8
  /**
8
9
  * Theme change event listener signature.
9
10
  */
@@ -19,7 +20,7 @@ export declare function emitThemeChange(theme: Theme): void;
19
20
  *
20
21
  * @private
21
22
  */
22
- export declare function getAsyncHooks(): typeof import('node:async_hooks');
23
+ export declare function getAsyncHooks(): typeof AsyncHooks;
23
24
  /**
24
25
  * Get the active theme from context.
25
26
  *
@@ -5,7 +5,7 @@ const require_primordials_map_set = require('../primordials/map-set.js');
5
5
  const require_themes_themes = require('./themes.js');
6
6
 
7
7
  //#region src/themes/context.ts
8
- let _async_hooks;
8
+ let asyncHooks;
9
9
  /**
10
10
  * Emit theme change event to listeners.
11
11
  *
@@ -19,15 +19,14 @@ function emitThemeChange(theme) {
19
19
  *
20
20
  * @private
21
21
  */
22
- /*@__NO_SIDE_EFFECTS__*/
23
22
  function getAsyncHooks() {
24
- if (_async_hooks === void 0) _async_hooks = /*@__PURE__*/ require("node:async_hooks");
25
- return _async_hooks;
23
+ if (asyncHooks === void 0) asyncHooks = /*@__PURE__*/ require("node:async_hooks");
24
+ return asyncHooks;
26
25
  }
27
26
  /**
28
27
  * AsyncLocalStorage for theme context isolation.
29
28
  */
30
- const { AsyncLocalStorage } = /* @__PURE__ */ getAsyncHooks();
29
+ const { AsyncLocalStorage } = getAsyncHooks();
31
30
  const themeStorage = new AsyncLocalStorage();
32
31
  /**
33
32
  * Fallback theme for global context.
@@ -8,8 +8,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
8
8
  * designed for focus and elegance.
9
9
  */
10
10
  const SOCKET_THEME = {
11
- name: "socket",
12
- displayName: "Socket Security",
13
11
  colors: {
14
12
  primary: [
15
13
  140,
@@ -26,6 +24,7 @@ const SOCKET_THEME = {
26
24
  link: "cyanBright",
27
25
  prompt: "primary"
28
26
  },
27
+ displayName: "Socket Security",
29
28
  effects: {
30
29
  spinner: {
31
30
  color: "primary",
@@ -41,15 +40,14 @@ const SOCKET_THEME = {
41
40
  meta: {
42
41
  description: "Signature theme with refined violet and subtle shimmer",
43
42
  version: "1.0.0"
44
- }
43
+ },
44
+ name: "socket"
45
45
  };
46
46
  /**
47
47
  * Sunset — Vibrant twilight gradient. Warm sunset palette with orange and
48
48
  * purple/pink tones.
49
49
  */
50
50
  const SUNSET_THEME = {
51
- name: "sunset",
52
- displayName: "Sunset",
53
51
  colors: {
54
52
  primary: [
55
53
  255,
@@ -71,6 +69,7 @@ const SUNSET_THEME = {
71
69
  link: "primary",
72
70
  prompt: "primary"
73
71
  },
72
+ displayName: "Sunset",
74
73
  effects: {
75
74
  spinner: {
76
75
  color: "primary",
@@ -94,15 +93,14 @@ const SUNSET_THEME = {
94
93
  meta: {
95
94
  description: "Warm sunset theme with purple-to-orange gradient",
96
95
  version: "2.0.0"
97
- }
96
+ },
97
+ name: "sunset"
98
98
  };
99
99
  /**
100
100
  * Terracotta — Solid warmth. Rich terracotta and ember tones for grounded
101
101
  * confidence.
102
102
  */
103
103
  const TERRACOTTA_THEME = {
104
- name: "terracotta",
105
- displayName: "Terracotta",
106
104
  colors: {
107
105
  primary: [
108
106
  255,
@@ -124,6 +122,7 @@ const TERRACOTTA_THEME = {
124
122
  link: "secondary",
125
123
  prompt: "primary"
126
124
  },
125
+ displayName: "Terracotta",
127
126
  effects: {
128
127
  spinner: {
129
128
  color: "primary",
@@ -139,14 +138,13 @@ const TERRACOTTA_THEME = {
139
138
  meta: {
140
139
  description: "Solid theme with rich terracotta and ember warmth",
141
140
  version: "1.0.0"
142
- }
141
+ },
142
+ name: "terracotta"
143
143
  };
144
144
  /**
145
145
  * Lush — Steel elegance. Python-inspired steel blue with golden accents.
146
146
  */
147
147
  const LUSH_THEME = {
148
- name: "lush",
149
- displayName: "Lush",
150
148
  colors: {
151
149
  primary: [
152
150
  70,
@@ -168,6 +166,7 @@ const LUSH_THEME = {
168
166
  link: "cyanBright",
169
167
  prompt: "primary"
170
168
  },
169
+ displayName: "Lush",
171
170
  effects: { spinner: {
172
171
  color: "primary",
173
172
  style: "dots"
@@ -175,15 +174,14 @@ const LUSH_THEME = {
175
174
  meta: {
176
175
  description: "Elegant theme with steel blue and golden harmony",
177
176
  version: "1.0.0"
178
- }
177
+ },
178
+ name: "lush"
179
179
  };
180
180
  /**
181
181
  * Ultra — Premium intensity. Prismatic shimmer for deep analysis, where
182
182
  * complexity meets elegance.
183
183
  */
184
184
  const ULTRA_THEME = {
185
- name: "ultra",
186
- displayName: "Ultra",
187
185
  colors: {
188
186
  primary: [
189
187
  140,
@@ -200,6 +198,7 @@ const ULTRA_THEME = {
200
198
  link: "cyanBright",
201
199
  prompt: "primary"
202
200
  },
201
+ displayName: "Ultra",
203
202
  effects: {
204
203
  spinner: {
205
204
  color: "inherit",
@@ -215,7 +214,8 @@ const ULTRA_THEME = {
215
214
  meta: {
216
215
  description: "Premium theme with prismatic shimmer for deep analysis",
217
216
  version: "1.0.0"
218
- }
217
+ },
218
+ name: "ultra"
219
219
  };
220
220
  /**
221
221
  * Theme registry — Curated palette collection.
@@ -75,7 +75,7 @@ export type ThemeEffects = {
75
75
  * Animation style.
76
76
  */
77
77
  style?: SpinnerStyle | string | undefined;
78
- };
78
+ } | undefined;
79
79
  /**
80
80
  * Shimmer configuration.
81
81
  */
@@ -96,7 +96,7 @@ export type ThemeEffects = {
96
96
  * Speed (steps per frame)
97
97
  */
98
98
  speed?: number | undefined;
99
- };
99
+ } | undefined;
100
100
  /**
101
101
  * Pulse configuration.
102
102
  */
@@ -105,7 +105,7 @@ export type ThemeEffects = {
105
105
  * Speed (milliseconds)
106
106
  */
107
107
  speed?: number | undefined;
108
- };
108
+ } | undefined;
109
109
  };
110
110
  /**
111
111
  * Theme metadata — descriptive information.
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @file SSRF guard for operator- or issuer-supplied URLs — `assertSafeHttpUrl`
3
+ * parses a raw URL, rejects non-HTTP(S) schemes, and refuses hosts that
4
+ * resolve to loopback / private / link-local ranges (cloud metadata, redis,
5
+ * internal services). A server that fetches a URL it did not author (an OAuth
6
+ * issuer, an introspection endpoint advertised in its metadata, a webhook
7
+ * target) runs the candidate through this before the request leaves the box.
8
+ */
9
+ import type { AssertSafeHttpUrlOptions } from './types';
10
+ /**
11
+ * Parse `rawUrl` and assert it is safe to fetch server-side, returning the
12
+ * parsed `URL`. Throws when the value does not parse, uses a scheme other than
13
+ * `http:` / `https:`, or resolves to a loopback / private / link-local host.
14
+ * Set `allowLocalhost` to permit `localhost` / `127.0.0.1` / `::1` for
15
+ * local-stack development. `label` names the subject in the thrown message.
16
+ *
17
+ * @example
18
+ * ;```typescript
19
+ * assertSafeHttpUrl('https://api.example.com', { label: 'OAuth issuer' })
20
+ * // → URL { href: 'https://api.example.com/' }
21
+ *
22
+ * assertSafeHttpUrl('http://169.254.169.254/latest/meta-data')
23
+ * // → throws: resolves to a private/loopback host
24
+ *
25
+ * assertSafeHttpUrl('ftp://example.com')
26
+ * // → throws: must use http(s)
27
+ * ```
28
+ */
29
+ export declare function assertSafeHttpUrl(rawUrl: string, options?: AssertSafeHttpUrlOptions | undefined): URL;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_url_predicates = require('./predicates.js');
5
+
6
+ //#region src/url/assert-safe.ts
7
+ /**
8
+ * @file SSRF guard for operator- or issuer-supplied URLs — `assertSafeHttpUrl`
9
+ * parses a raw URL, rejects non-HTTP(S) schemes, and refuses hosts that
10
+ * resolve to loopback / private / link-local ranges (cloud metadata, redis,
11
+ * internal services). A server that fetches a URL it did not author (an OAuth
12
+ * issuer, an introspection endpoint advertised in its metadata, a webhook
13
+ * target) runs the candidate through this before the request leaves the box.
14
+ */
15
+ const UrlCtor = URL;
16
+ /**
17
+ * Parse `rawUrl` and assert it is safe to fetch server-side, returning the
18
+ * parsed `URL`. Throws when the value does not parse, uses a scheme other than
19
+ * `http:` / `https:`, or resolves to a loopback / private / link-local host.
20
+ * Set `allowLocalhost` to permit `localhost` / `127.0.0.1` / `::1` for
21
+ * local-stack development. `label` names the subject in the thrown message.
22
+ *
23
+ * @example
24
+ * ;```typescript
25
+ * assertSafeHttpUrl('https://api.example.com', { label: 'OAuth issuer' })
26
+ * // → URL { href: 'https://api.example.com/' }
27
+ *
28
+ * assertSafeHttpUrl('http://169.254.169.254/latest/meta-data')
29
+ * // → throws: resolves to a private/loopback host
30
+ *
31
+ * assertSafeHttpUrl('ftp://example.com')
32
+ * // → throws: must use http(s)
33
+ * ```
34
+ */
35
+ function assertSafeHttpUrl(rawUrl, options) {
36
+ const { allowLocalhost = false, label = "URL" } = {
37
+ __proto__: null,
38
+ ...options
39
+ };
40
+ let url;
41
+ try {
42
+ url = new UrlCtor(rawUrl);
43
+ } catch {
44
+ throw new Error(`${label} is not a valid URL: ${rawUrl}. Provide an absolute http(s) URL.`);
45
+ }
46
+ if (url.protocol !== "http:" && url.protocol !== "https:") throw new Error(`${label} must use http(s): ${rawUrl}. Got scheme "${url.protocol}"; use http: or https:.`);
47
+ const { hostname } = url;
48
+ if (allowLocalhost && require_url_predicates.isLoopbackHost(hostname)) return url;
49
+ if (require_url_predicates.isPrivateHost(hostname)) throw new Error(`${label} resolves to a private/loopback host and is refused: ${rawUrl}. Point it at a public host.`);
50
+ return url;
51
+ }
52
+
53
+ //#endregion
54
+ exports.assertSafeHttpUrl = assertSafeHttpUrl;
package/dist/url/parse.js CHANGED
@@ -19,7 +19,6 @@ const UrlCtor = URL;
19
19
  * createRelativeUrl('/api/test', { base: 'https://example.com' }) // 'https://example.com/api/test'
20
20
  * ```
21
21
  */
22
- /*@__NO_SIDE_EFFECTS__*/
23
22
  function createRelativeUrl(path, options) {
24
23
  const { base = "" } = {
25
24
  __proto__: null,
@@ -42,7 +41,6 @@ function createRelativeUrl(path, options) {
42
41
  * parseUrl('invalid') // undefined
43
42
  * ```
44
43
  */
45
- /*@__NO_SIDE_EFFECTS__*/
46
44
  function parseUrl(value) {
47
45
  try {
48
46
  return new UrlCtor(value);
@@ -1,7 +1,37 @@
1
1
  /**
2
2
  * @file URL type-guard predicates — `isUrl` answers whether a value parses as a
3
- * valid URL via `parseUrl`.
3
+ * valid URL via `parseUrl`. `isLoopbackHost` / `isPrivateHost` classify a
4
+ * hostname for SSRF guards: a server that fetches an operator- or
5
+ * issuer-supplied URL uses these to refuse hosts that resolve to the local
6
+ * machine or an internal network (cloud metadata, redis, link-local).
4
7
  */
8
+ /**
9
+ * Check whether a hostname is a loopback address — `localhost`, `127.0.0.1`, or
10
+ * IPv6 `::1`. Compares case-insensitively; pass a bare hostname, not a URL.
11
+ *
12
+ * @example
13
+ * ;```typescript
14
+ * isLoopbackHost('localhost') // true
15
+ * isLoopbackHost('127.0.0.1') // true
16
+ * isLoopbackHost('example.com') // false
17
+ * ```
18
+ */
19
+ export declare function isLoopbackHost(hostname: string): boolean;
20
+ /**
21
+ * Check whether a hostname resolves to a private / loopback / link-local
22
+ * address an SSRF probe would target (the local machine, RFC 1918 ranges, IPv6
23
+ * loopback / ULA / link-local). Loopback hosts count as private. Compares
24
+ * case-insensitively; pass a bare hostname, not a URL.
25
+ *
26
+ * @example
27
+ * ;```typescript
28
+ * isPrivateHost('127.0.0.1') // true
29
+ * isPrivateHost('10.0.0.5') // true
30
+ * isPrivateHost('169.254.169.254') // true
31
+ * isPrivateHost('example.com') // false
32
+ * ```
33
+ */
34
+ export declare function isPrivateHost(hostname: string): boolean;
5
35
  /**
6
36
  * Check if a value is a valid URL.
7
37
  *
@@ -1,13 +1,52 @@
1
1
  "use strict";
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_string = require('../primordials/string.js');
5
+ const require_primordials_regexp = require('../primordials/regexp.js');
4
6
  const require_url_parse = require('./parse.js');
5
7
 
6
8
  //#region src/url/predicates.ts
7
9
  /**
8
10
  * @file URL type-guard predicates — `isUrl` answers whether a value parses as a
9
- * valid URL via `parseUrl`.
11
+ * valid URL via `parseUrl`. `isLoopbackHost` / `isPrivateHost` classify a
12
+ * hostname for SSRF guards: a server that fetches an operator- or
13
+ * issuer-supplied URL uses these to refuse hosts that resolve to the local
14
+ * machine or an internal network (cloud metadata, redis, link-local).
10
15
  */
16
+ const PRIVATE_HOST_REGEXP = /^(?:0\.0\.0\.0$|10\.|127\.|169\.254\.|172\.(?:1[6-9]|2\d|3[01])\.|192\.168\.|\[?::1\]?$|\[?fc00:|\[?fd|\[?fe80:)/u;
17
+ /**
18
+ * Check whether a hostname is a loopback address — `localhost`, `127.0.0.1`, or
19
+ * IPv6 `::1`. Compares case-insensitively; pass a bare hostname, not a URL.
20
+ *
21
+ * @example
22
+ * ;```typescript
23
+ * isLoopbackHost('localhost') // true
24
+ * isLoopbackHost('127.0.0.1') // true
25
+ * isLoopbackHost('example.com') // false
26
+ * ```
27
+ */
28
+ function isLoopbackHost(hostname) {
29
+ const host = require_primordials_string.StringPrototypeToLowerCase(hostname);
30
+ return host === "::1" || host === "127.0.0.1" || host === "localhost";
31
+ }
32
+ /**
33
+ * Check whether a hostname resolves to a private / loopback / link-local
34
+ * address an SSRF probe would target (the local machine, RFC 1918 ranges, IPv6
35
+ * loopback / ULA / link-local). Loopback hosts count as private. Compares
36
+ * case-insensitively; pass a bare hostname, not a URL.
37
+ *
38
+ * @example
39
+ * ;```typescript
40
+ * isPrivateHost('127.0.0.1') // true
41
+ * isPrivateHost('10.0.0.5') // true
42
+ * isPrivateHost('169.254.169.254') // true
43
+ * isPrivateHost('example.com') // false
44
+ * ```
45
+ */
46
+ function isPrivateHost(hostname) {
47
+ const host = require_primordials_string.StringPrototypeToLowerCase(hostname);
48
+ return isLoopbackHost(host) || require_primordials_regexp.RegExpPrototypeTest(PRIVATE_HOST_REGEXP, host);
49
+ }
11
50
  /**
12
51
  * Check if a value is a valid URL.
13
52
  *
@@ -18,10 +57,11 @@ const require_url_parse = require('./parse.js');
18
57
  * isUrl(null) // false
19
58
  * ```
20
59
  */
21
- /*@__NO_SIDE_EFFECTS__*/
22
60
  function isUrl(value) {
23
- return (typeof value === "string" && value !== "" || value !== null && typeof value === "object") && !!/* @__PURE__ */ require_url_parse.parseUrl(value);
61
+ return (typeof value === "string" && value !== "" || value !== null && typeof value === "object") && !!require_url_parse.parseUrl(value);
24
62
  }
25
63
 
26
64
  //#endregion
65
+ exports.isLoopbackHost = isLoopbackHost;
66
+ exports.isPrivateHost = isPrivateHost;
27
67
  exports.isUrl = isUrl;
@@ -20,7 +20,6 @@ const BooleanCtor = Boolean;
20
20
  * urlSearchParamsAsArray(null) // []
21
21
  * ```
22
22
  */
23
- /*@__NO_SIDE_EFFECTS__*/
24
23
  function urlSearchParamsAsArray(value) {
25
24
  return typeof value === "string" ? value.trim().split(/, */).map((v) => v.trim()).filter(BooleanCtor) : [];
26
25
  }
@@ -34,7 +33,6 @@ function urlSearchParamsAsArray(value) {
34
33
  * urlSearchParamsAsBoolean(null) // false
35
34
  * ```
36
35
  */
37
- /*@__NO_SIDE_EFFECTS__*/
38
36
  function urlSearchParamsAsBoolean(value, options) {
39
37
  const { defaultValue = false } = {
40
38
  __proto__: null,
@@ -44,7 +42,7 @@ function urlSearchParamsAsBoolean(value, options) {
44
42
  const trimmed = value.trim();
45
43
  if (trimmed === "") return !!defaultValue;
46
44
  const lowered = trimmed.toLowerCase();
47
- return lowered === "1" || lowered === "true" || lowered === "yes" || lowered === "on";
45
+ return lowered === "1" || lowered === "on" || lowered === "true" || lowered === "yes";
48
46
  }
49
47
  if (value === null || value === void 0) return !!defaultValue;
50
48
  return !!value;
@@ -59,7 +57,6 @@ function urlSearchParamsAsBoolean(value, options) {
59
57
  * urlSearchParamsAsNumber(params, 'other') // 0
60
58
  * ```
61
59
  */
62
- /*@__NO_SIDE_EFFECTS__*/
63
60
  function urlSearchParamsAsNumber(params, key, options) {
64
61
  const { defaultValue = 0 } = {
65
62
  __proto__: null,
@@ -84,7 +81,6 @@ function urlSearchParamsAsNumber(params, key, options) {
84
81
  * urlSearchParamsAsString(params, 'other') // ''
85
82
  * ```
86
83
  */
87
- /*@__NO_SIDE_EFFECTS__*/
88
84
  function urlSearchParamsAsString(params, key, options) {
89
85
  const { defaultValue = "" } = {
90
86
  __proto__: null,
@@ -105,12 +101,11 @@ function urlSearchParamsAsString(params, key, options) {
105
101
  * urlSearchParamsGetArray(params, 'tags') // ['a', 'b', 'c']
106
102
  * ```
107
103
  */
108
- /*@__NO_SIDE_EFFECTS__*/
109
104
  function urlSearchParamsGetArray(params, key) {
110
105
  if (params && typeof params.getAll === "function") {
111
106
  const values = params.getAll(key);
112
107
  const firstValue = values[0];
113
- if (values.length === 1 && firstValue && firstValue.includes(",")) return /* @__PURE__ */ urlSearchParamsAsArray(firstValue);
108
+ if (values.length === 1 && firstValue && firstValue.includes(",")) return urlSearchParamsAsArray(firstValue);
114
109
  return values;
115
110
  }
116
111
  return [];
@@ -125,7 +120,6 @@ function urlSearchParamsGetArray(params, key) {
125
120
  * urlSearchParamsGetBoolean(params, 'other') // false
126
121
  * ```
127
122
  */
128
- /*@__NO_SIDE_EFFECTS__*/
129
123
  function urlSearchParamsGetBoolean(params, key, options) {
130
124
  const { defaultValue = false } = {
131
125
  __proto__: null,
@@ -133,7 +127,7 @@ function urlSearchParamsGetBoolean(params, key, options) {
133
127
  };
134
128
  if (params && typeof params.get === "function") {
135
129
  const value = params.get(key);
136
- return value !== null ? /* @__PURE__ */ urlSearchParamsAsBoolean(value, { defaultValue }) : defaultValue;
130
+ return value !== null ? urlSearchParamsAsBoolean(value, { defaultValue }) : defaultValue;
137
131
  }
138
132
  return defaultValue;
139
133
  }
@@ -3,18 +3,22 @@
3
3
  * `createRelativeUrl`, `urlSearchParamsAs*`, and `urlSearchParamsGet*`. Pure
4
4
  * types, no runtime side effects.
5
5
  */
6
+ export interface AssertSafeHttpUrlOptions {
7
+ label?: string | undefined;
8
+ allowLocalhost?: boolean | undefined;
9
+ }
6
10
  export interface CreateRelativeUrlOptions {
7
- base?: string;
11
+ base?: string | undefined;
8
12
  }
9
13
  export interface UrlSearchParamsAsBooleanOptions {
10
- defaultValue?: boolean;
14
+ defaultValue?: boolean | undefined;
11
15
  }
12
16
  export interface UrlSearchParamsAsNumberOptions {
13
- defaultValue?: number;
17
+ defaultValue?: number | undefined;
14
18
  }
15
19
  export interface UrlSearchParamsAsStringOptions {
16
- defaultValue?: string;
20
+ defaultValue?: string | undefined;
17
21
  }
18
22
  export interface UrlSearchParamsGetBooleanOptions {
19
- defaultValue?: boolean;
23
+ defaultValue?: boolean | undefined;
20
24
  }
@@ -15,20 +15,20 @@ const require_smol_versions = require('../smol/versions.js');
15
15
  * shape (`{major, minor, patch}`) which only `semver.parse` exposes — those
16
16
  * leaves use `getSemver()` directly instead of going through `impl`.
17
17
  */
18
- const _semver = require("../external/semver");
18
+ const semver = require("../external/semver");
19
19
  /**
20
20
  * The vendored `semver` JS implementation. Always available — used directly by
21
21
  * the leaves that need the parsed `{major, minor, patch}` shape (which
22
22
  * smol-versions doesn't expose).
23
23
  */
24
24
  function getSemver() {
25
- return _semver;
25
+ return semver;
26
26
  }
27
27
  /**
28
28
  * Resolved version implementation: smol-versions on the smol Node binary,
29
29
  * otherwise the vendored `semver`. Bound once at module load.
30
30
  */
31
- const impl = /* @__PURE__ */ require_smol_versions.getSmolVersions() ?? _semver;
31
+ const impl = require_smol_versions.getSmolVersions() ?? semver;
32
32
 
33
33
  //#endregion
34
34
  exports.getSemver = getSemver;
@@ -16,7 +16,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16
16
  * determineArticle('banana') // 'a'
17
17
  * ```
18
18
  */
19
- /*@__NO_SIDE_EFFECTS__*/
20
19
  function determineArticle(word) {
21
20
  return /^[aeiou]/i.test(word) ? "an" : "a";
22
21
  }
@@ -17,7 +17,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
17
17
  * capitalize('') // ''
18
18
  * ```
19
19
  */
20
- /*@__NO_SIDE_EFFECTS__*/
21
20
  function capitalize(word) {
22
21
  if (word.length === 0) return word;
23
22
  const [first, ...rest] = [...word];
@@ -1,22 +1,33 @@
1
1
  "use strict";
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_intl = require('../primordials/intl.js');
4
5
 
5
6
  //#region src/words/pluralize.ts
7
+ /**
8
+ * @file Count-based pluralization. Two modes:
9
+ *
10
+ * - Default: appends a trailing `'s'` when the count is anything other than 1.
11
+ * Zero-cost; no Intl dependency on the hot path.
12
+ * - Dictionary: when `options.forms` is given, selects from a caller-supplied
13
+ * dictionary of forms keyed by plural category. Honors locale + cardinal /
14
+ * ordinal via `Intl.PluralRules`. Required `plural` acts as the fallback
15
+ * for any category not explicitly listed.
16
+ */
6
17
  const CLDR_TO_FIELD = {
18
+ few: "few",
19
+ many: "many",
7
20
  one: "singular",
8
21
  other: "plural",
9
- zero: "zero",
10
22
  two: "two",
11
- few: "few",
12
- many: "many"
23
+ zero: "zero"
13
24
  };
14
25
  const RULES_CACHE = /* @__PURE__ */ new Map();
15
26
  function getRules(locale, type) {
16
27
  const key = `${locale}:${type}`;
17
28
  let r = RULES_CACHE.get(key);
18
29
  if (!r) {
19
- r = new Intl.PluralRules(locale, { type });
30
+ r = new require_primordials_intl.IntlPluralRules(locale, { type });
20
31
  RULES_CACHE.set(key, r);
21
32
  }
22
33
  return r;
@@ -46,7 +57,6 @@ function getRules(locale, type) {
46
57
  * }) // 'nd'
47
58
  * ```
48
59
  */
49
- /*@__NO_SIDE_EFFECTS__*/
50
60
  function pluralize(word, options) {
51
61
  const { count = 1, forms, locale = "en-US", type = "cardinal" } = {
52
62
  __proto__: null,