@socketsecurity/lib 6.0.2 → 6.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/_virtual/_rolldown/runtime.js +45 -0
  3. package/dist/abort/signal.js +53 -59
  4. package/dist/ai/discover.js +110 -110
  5. package/dist/ai/profiles.d.mts +48 -25
  6. package/dist/ai/profiles.js +95 -59
  7. package/dist/ai/spawn.d.mts +2 -2
  8. package/dist/ai/spawn.js +172 -194
  9. package/dist/ai/types.d.mts +3 -3
  10. package/dist/ai/types.js +1 -17
  11. package/dist/ai/worktree.d.mts +2 -2
  12. package/dist/ai/worktree.js +160 -183
  13. package/dist/ansi/constants.js +16 -38
  14. package/dist/ansi/strip.js +44 -41
  15. package/dist/archives/_internal.js +64 -73
  16. package/dist/archives/detect.js +30 -43
  17. package/dist/archives/extract.js +43 -50
  18. package/dist/archives/tar.js +197 -228
  19. package/dist/archives/types.js +1 -17
  20. package/dist/archives/zip.js +85 -121
  21. package/dist/argv/flag-predicates.js +203 -101
  22. package/dist/argv/flag-types.js +96 -113
  23. package/dist/argv/parse-args-string.d.ts +16 -14
  24. package/dist/argv/parse-args-string.js +42 -39
  25. package/dist/argv/parse.js +145 -163
  26. package/dist/arrays/_internal.js +65 -48
  27. package/dist/arrays/chunk.js +51 -40
  28. package/dist/arrays/join.js +87 -35
  29. package/dist/arrays/predicates.js +46 -28
  30. package/dist/arrays/unique.js +45 -31
  31. package/dist/bin/_internal.js +34 -42
  32. package/dist/bin/check-primordials.js +175 -233
  33. package/dist/bin/check.js +51 -72
  34. package/dist/bin/exec.js +70 -74
  35. package/dist/bin/find.js +151 -134
  36. package/dist/bin/resolve.js +180 -246
  37. package/dist/bin/shadow.js +24 -33
  38. package/dist/bin/socket-lib.js +51 -73
  39. package/dist/bin/types.js +1 -17
  40. package/dist/bin/which.js +211 -146
  41. package/dist/cacache/_internal.js +25 -40
  42. package/dist/cacache/clear.js +79 -72
  43. package/dist/cacache/read.js +48 -46
  44. package/dist/cacache/tmp.js +29 -36
  45. package/dist/cacache/types.js +1 -17
  46. package/dist/cacache/write.js +43 -48
  47. package/dist/cache/ttl/store.js +232 -288
  48. package/dist/cache/ttl/types.js +1 -17
  49. package/dist/checks/primordials-defaults.js +83 -89
  50. package/dist/checks/primordials.js +225 -277
  51. package/dist/colors/convert.js +45 -37
  52. package/dist/colors/palette.js +88 -45
  53. package/dist/colors/socket-palette.js +74 -84
  54. package/dist/colors/types.js +1 -17
  55. package/dist/compression/_internal.js +57 -72
  56. package/dist/compression/brotli.js +94 -127
  57. package/dist/compression/gzip.js +95 -121
  58. package/dist/compression/types.js +1 -17
  59. package/dist/constants/agents.js +61 -113
  60. package/dist/constants/encoding.js +19 -42
  61. package/dist/constants/github.js +12 -30
  62. package/dist/constants/licenses.js +48 -63
  63. package/dist/constants/lifecycle-script-names.js +31 -45
  64. package/dist/constants/maintained-node-versions.js +22 -37
  65. package/dist/constants/node.js +226 -167
  66. package/dist/constants/package-default-node-range.js +16 -41
  67. package/dist/constants/package-default-socket-categories.js +12 -30
  68. package/dist/constants/packages.js +77 -126
  69. package/dist/constants/platform.js +27 -49
  70. package/dist/constants/sentinels.js +23 -48
  71. package/dist/constants/socket.js +42 -87
  72. package/dist/constants/testing.js +15 -34
  73. package/dist/constants/time.js +16 -36
  74. package/dist/constants/typescript.js +32 -52
  75. package/dist/cover/code.js +111 -142
  76. package/dist/cover/formatters.js +118 -101
  77. package/dist/cover/type.js +50 -76
  78. package/dist/cover/types.js +1 -17
  79. package/dist/crypto/hash.js +54 -46
  80. package/dist/debug/_internal.js +62 -71
  81. package/dist/debug/caller-info.js +53 -64
  82. package/dist/debug/namespace.js +80 -90
  83. package/dist/debug/output.js +172 -188
  84. package/dist/debug/types.js +1 -17
  85. package/dist/dlx/_internal.js +24 -43
  86. package/dist/dlx/arborist.js +162 -160
  87. package/dist/dlx/binary-cache.js +228 -200
  88. package/dist/dlx/binary-download.js +172 -211
  89. package/dist/dlx/binary-resolution.js +165 -157
  90. package/dist/dlx/binary-types.js +1 -17
  91. package/dist/dlx/binary.js +149 -189
  92. package/dist/dlx/cache.js +45 -30
  93. package/dist/dlx/detect.js +245 -167
  94. package/dist/dlx/dir.js +67 -51
  95. package/dist/dlx/firewall.js +62 -100
  96. package/dist/dlx/lockfile.js +122 -127
  97. package/dist/dlx/manifest.js +264 -274
  98. package/dist/dlx/package.js +241 -244
  99. package/dist/dlx/packages.js +99 -96
  100. package/dist/dlx/paths.js +73 -59
  101. package/dist/dlx/spec.js +52 -60
  102. package/dist/dlx/types.js +1 -17
  103. package/dist/eco/cargo/lockfile-format.js +19 -36
  104. package/dist/eco/cargo/manifest-format.js +17 -35
  105. package/dist/eco/cargo/parse-lockfile.js +210 -237
  106. package/dist/eco/manifest/analyze-lockfile.js +46 -63
  107. package/dist/eco/manifest/detect-format.js +66 -90
  108. package/dist/eco/manifest/find-packages.js +39 -64
  109. package/dist/eco/manifest/get-package-versions.js +27 -48
  110. package/dist/eco/manifest/get-package.js +21 -40
  111. package/dist/eco/manifest/manifest-error.js +14 -35
  112. package/dist/eco/manifest/parse-lockfile.js +40 -86
  113. package/dist/eco/manifest/parse-manifest.js +26 -43
  114. package/dist/eco/manifest/parse.js +26 -47
  115. package/dist/eco/manifest/types.js +1 -17
  116. package/dist/eco/npm/bun/exec.js +23 -32
  117. package/dist/eco/npm/manifest-format.js +21 -35
  118. package/dist/eco/npm/npm/exec.js +51 -61
  119. package/dist/eco/npm/npm/extract-package-name-from-path.js +28 -50
  120. package/dist/eco/npm/npm/flags.js +80 -52
  121. package/dist/eco/npm/npm/lockfile-format.js +21 -40
  122. package/dist/eco/npm/npm/parse-git-url.js +26 -40
  123. package/dist/eco/npm/npm/parse-lockfile.js +184 -210
  124. package/dist/eco/npm/parse-package-json.js +71 -102
  125. package/dist/eco/npm/pnpm/detect-pnpm-version.js +22 -43
  126. package/dist/eco/npm/pnpm/exec.js +51 -62
  127. package/dist/eco/npm/pnpm/flags.js +75 -68
  128. package/dist/eco/npm/pnpm/lockfile-format.js +19 -36
  129. package/dist/eco/npm/pnpm/parse-lockfile.js +235 -259
  130. package/dist/eco/npm/pnpm/parse-pnpm-package-id-v5.js +37 -47
  131. package/dist/eco/npm/pnpm/parse-pnpm-package-id-v6-v9.js +36 -49
  132. package/dist/eco/npm/script.js +82 -90
  133. package/dist/eco/npm/vlt/exec.js +24 -32
  134. package/dist/eco/npm/yarnpkg/yarn/exec.js +60 -59
  135. package/dist/eco/npm/yarnpkg/yarn/lockfile-format.js +20 -36
  136. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +194 -242
  137. package/dist/eco/npm/yarnpkg/yarn/parse-yarn-descriptor.js +37 -61
  138. package/dist/eco/purl.js +50 -60
  139. package/dist/eco/types.js +1 -17
  140. package/dist/effects/pulse-frames.js +64 -65
  141. package/dist/effects/shimmer-keyframes.js +71 -52
  142. package/dist/effects/shimmer-terminal.js +81 -50
  143. package/dist/effects/shimmer.js +290 -153
  144. package/dist/env/boolean.js +42 -43
  145. package/dist/env/case-insensitive.js +54 -39
  146. package/dist/env/ci.js +29 -31
  147. package/dist/env/debug.js +28 -31
  148. package/dist/env/github.js +144 -59
  149. package/dist/env/home.js +38 -31
  150. package/dist/env/locale.js +59 -39
  151. package/dist/env/node-auth-token.js +28 -31
  152. package/dist/env/node-env.js +28 -31
  153. package/dist/env/npm.js +94 -47
  154. package/dist/env/number.js +50 -51
  155. package/dist/env/package-manager.js +95 -83
  156. package/dist/env/path.js +28 -31
  157. package/dist/env/pre-commit.js +30 -32
  158. package/dist/env/proxy.js +121 -122
  159. package/dist/env/rewire.js +204 -96
  160. package/dist/env/shell.js +28 -31
  161. package/dist/env/socket-cli.js +233 -81
  162. package/dist/env/socket.js +521 -156
  163. package/dist/env/string.js +43 -44
  164. package/dist/env/temp-dir.js +59 -39
  165. package/dist/env/term.js +28 -31
  166. package/dist/env/test.js +65 -43
  167. package/dist/env/types.js +1 -17
  168. package/dist/env/windows.js +78 -43
  169. package/dist/env/xdg.js +62 -39
  170. package/dist/errors/message.js +40 -46
  171. package/dist/errors/predicates.js +61 -49
  172. package/dist/errors/stack.js +24 -36
  173. package/dist/events/exit/_internal.js +86 -103
  174. package/dist/events/exit/handler.js +48 -55
  175. package/dist/events/exit/intercept.js +49 -70
  176. package/dist/events/exit/lifecycle.js +92 -101
  177. package/dist/events/exit/signals.js +25 -31
  178. package/dist/events/exit/types.js +1 -17
  179. package/dist/events/warning/handler.js +43 -40
  180. package/dist/events/warning/suppress.js +111 -90
  181. package/dist/external/@npmcli/package-json/lib/read-package.js +132 -153
  182. package/dist/external/@npmcli/package-json/lib/sort.js +73 -105
  183. package/dist/external/@npmcli/package-json.js +12705 -15140
  184. package/dist/external/@npmcli/promise-spawn.js +451 -472
  185. package/dist/external/@sinclair/typebox/value.js +7443 -9002
  186. package/dist/external/@sinclair/typebox.js +7516 -7885
  187. package/dist/external/@socketregistry/is-unicode-supported.js +31 -39
  188. package/dist/external/@socketregistry/packageurl-js.js +6127 -7369
  189. package/dist/external/@socketregistry/yocto-spinner.js +394 -455
  190. package/dist/external/@yarnpkg/extensions.js +435 -1022
  191. package/dist/external/adm-zip.js +2313 -2673
  192. package/dist/external/debug.js +700 -687
  193. package/dist/external/external-pack.js +2658 -3171
  194. package/dist/external/fast-sort.js +124 -138
  195. package/dist/external/get-east-asian-width.js +70 -64
  196. package/dist/external/libnpmexec.js +28 -31
  197. package/dist/external/npm-pack.js +43617 -50137
  198. package/dist/external/p-map.js +198 -222
  199. package/dist/external/pico-pack.js +6735 -7304
  200. package/dist/external/pony-cause.js +143 -139
  201. package/dist/external/shell-quote.js +226 -0
  202. package/dist/external/spdx-pack.js +1283 -1403
  203. package/dist/external/streaming-iterables.js +835 -1052
  204. package/dist/external/tar-fs.js +2769 -3048
  205. package/dist/external/which.js +267 -251
  206. package/dist/external/yargs-parser.js +851 -1074
  207. package/dist/external-tools/bazel/asset-names.js +98 -90
  208. package/dist/external-tools/bazel/from-download.js +52 -46
  209. package/dist/external-tools/bazel/from-path.js +27 -38
  210. package/dist/external-tools/bazel/read-bazel-version-file.js +35 -57
  211. package/dist/external-tools/bazel/resolve-asset-url.js +24 -39
  212. package/dist/external-tools/bazel/resolve-bazel-version.js +34 -56
  213. package/dist/external-tools/bazel/resolve.js +44 -58
  214. package/dist/external-tools/bazel/types.js +1 -17
  215. package/dist/external-tools/cdxgen/asset-names.js +59 -66
  216. package/dist/external-tools/cdxgen/from-download.js +52 -80
  217. package/dist/external-tools/cdxgen/from-path.js +19 -37
  218. package/dist/external-tools/cdxgen/from-vfs.js +22 -43
  219. package/dist/external-tools/cdxgen/resolve.js +48 -63
  220. package/dist/external-tools/cdxgen/types.js +1 -17
  221. package/dist/external-tools/from-download.js +107 -67
  222. package/dist/external-tools/janus/asset-names.js +44 -51
  223. package/dist/external-tools/janus/from-download.js +45 -70
  224. package/dist/external-tools/janus/from-path.js +19 -37
  225. package/dist/external-tools/janus/from-vfs.js +22 -43
  226. package/dist/external-tools/janus/resolve.js +45 -63
  227. package/dist/external-tools/janus/types.js +1 -17
  228. package/dist/external-tools/jre/asset-names.js +109 -82
  229. package/dist/external-tools/jre/detect-platform-arch.js +25 -49
  230. package/dist/external-tools/jre/from-download.js +71 -67
  231. package/dist/external-tools/jre/from-java-home.js +27 -54
  232. package/dist/external-tools/jre/from-path.js +27 -49
  233. package/dist/external-tools/jre/from-vfs.js +39 -60
  234. package/dist/external-tools/jre/resolve.js +55 -68
  235. package/dist/external-tools/jre/types.js +1 -17
  236. package/dist/external-tools/manifest.js +130 -150
  237. package/dist/external-tools/opengrep/asset-names.js +60 -72
  238. package/dist/external-tools/opengrep/from-download.js +58 -80
  239. package/dist/external-tools/opengrep/from-path.js +19 -37
  240. package/dist/external-tools/opengrep/from-vfs.js +23 -43
  241. package/dist/external-tools/opengrep/resolve.js +43 -63
  242. package/dist/external-tools/opengrep/types.js +1 -17
  243. package/dist/external-tools/sbt/asset-names.js +21 -30
  244. package/dist/external-tools/sbt/from-download.js +50 -61
  245. package/dist/external-tools/sbt/from-path.js +23 -38
  246. package/dist/external-tools/sbt/from-vfs.js +30 -44
  247. package/dist/external-tools/sbt/resolve.js +45 -63
  248. package/dist/external-tools/sbt/types.js +1 -17
  249. package/dist/external-tools/synp/asset-names.js +11 -29
  250. package/dist/external-tools/synp/from-download.js +24 -41
  251. package/dist/external-tools/synp/from-path.js +19 -37
  252. package/dist/external-tools/synp/from-vfs.js +22 -43
  253. package/dist/external-tools/synp/resolve.js +43 -62
  254. package/dist/external-tools/synp/types.js +1 -17
  255. package/dist/external-tools/trivy/asset-names.js +51 -62
  256. package/dist/external-tools/trivy/from-download.js +42 -64
  257. package/dist/external-tools/trivy/from-path.js +19 -37
  258. package/dist/external-tools/trivy/from-vfs.js +22 -43
  259. package/dist/external-tools/trivy/resolve.js +43 -63
  260. package/dist/external-tools/trivy/types.js +1 -17
  261. package/dist/external-tools/trufflehog/asset-names.js +54 -66
  262. package/dist/external-tools/trufflehog/from-download.js +44 -62
  263. package/dist/external-tools/trufflehog/from-path.js +21 -37
  264. package/dist/external-tools/trufflehog/from-vfs.js +26 -43
  265. package/dist/external-tools/trufflehog/resolve.js +43 -63
  266. package/dist/external-tools/trufflehog/types.js +1 -17
  267. package/dist/external-tools/uv/asset-names.js +64 -74
  268. package/dist/external-tools/uv/from-download.js +44 -65
  269. package/dist/external-tools/uv/from-path.js +19 -37
  270. package/dist/external-tools/uv/from-vfs.js +22 -43
  271. package/dist/external-tools/uv/resolve.js +42 -63
  272. package/dist/external-tools/uv/types.js +1 -17
  273. package/dist/fs/_internal.js +40 -42
  274. package/dist/fs/access.d.ts +32 -0
  275. package/dist/fs/access.js +66 -0
  276. package/dist/fs/encoding.js +80 -97
  277. package/dist/fs/find-up.js +126 -147
  278. package/dist/fs/inspect.js +168 -99
  279. package/dist/fs/path-cache.js +31 -32
  280. package/dist/fs/read-dir.js +102 -79
  281. package/dist/fs/read-file.js +177 -118
  282. package/dist/fs/read-json-cache.js +150 -134
  283. package/dist/fs/read-json.js +172 -187
  284. package/dist/fs/resolve-module.d.ts +57 -0
  285. package/dist/fs/resolve-module.js +40 -0
  286. package/dist/fs/safe.js +278 -169
  287. package/dist/fs/types.js +1 -17
  288. package/dist/fs/unique.js +52 -48
  289. package/dist/fs/validate.js +56 -43
  290. package/dist/fs/write-json.js +109 -75
  291. package/dist/git/_internal.js +251 -216
  292. package/dist/git/changed.js +191 -74
  293. package/dist/git/repo.js +118 -104
  294. package/dist/git/staged.js +172 -62
  295. package/dist/git/types.js +1 -17
  296. package/dist/git/unstaged.js +175 -62
  297. package/dist/github/constants.js +25 -33
  298. package/dist/github/errors.js +46 -38
  299. package/dist/github/fetch.js +137 -82
  300. package/dist/github/ghsa.js +217 -151
  301. package/dist/github/refs-cache.js +54 -43
  302. package/dist/github/refs-graphql.js +97 -89
  303. package/dist/github/refs-rest.js +70 -101
  304. package/dist/github/refs.js +105 -64
  305. package/dist/github/token.js +96 -48
  306. package/dist/github/types.js +1 -17
  307. package/dist/globs/_internal.js +73 -82
  308. package/dist/globs/defaults.js +40 -59
  309. package/dist/globs/match.js +93 -77
  310. package/dist/globs/matcher.js +104 -92
  311. package/dist/globs/stream.js +43 -55
  312. package/dist/globs/types.js +1 -17
  313. package/dist/http-request/_internal.js +11 -38
  314. package/dist/http-request/browser-fetch.js +19 -29
  315. package/dist/http-request/browser.js +188 -206
  316. package/dist/http-request/checksums.js +101 -65
  317. package/dist/http-request/download-types.js +1 -17
  318. package/dist/http-request/download.js +195 -196
  319. package/dist/http-request/errors.js +39 -47
  320. package/dist/http-request/headers.js +95 -80
  321. package/dist/http-request/http-request.js +10 -35
  322. package/dist/http-request/node.js +71 -97
  323. package/dist/http-request/request-attempt.js +232 -285
  324. package/dist/http-request/request-types.js +1 -17
  325. package/dist/http-request/request.js +106 -108
  326. package/dist/http-request/response-reader.js +47 -51
  327. package/dist/http-request/response-types.js +22 -38
  328. package/dist/http-request/user-agent.js +73 -55
  329. package/dist/integrity.js +105 -106
  330. package/dist/ipc/_internal.js +34 -48
  331. package/dist/ipc/directory.js +55 -63
  332. package/dist/ipc/paths.js +52 -45
  333. package/dist/ipc/types.js +1 -17
  334. package/dist/ipc/write.js +81 -74
  335. package/dist/ipc-cli/get.js +29 -56
  336. package/dist/ipc-cli/types.js +1 -17
  337. package/dist/json/edit.js +182 -242
  338. package/dist/json/format.js +202 -103
  339. package/dist/json/parse.js +206 -109
  340. package/dist/json/types.js +1 -17
  341. package/dist/links/create.js +93 -60
  342. package/dist/links/types.js +1 -17
  343. package/dist/logger/_internal.js +109 -73
  344. package/dist/logger/browser.js +45 -56
  345. package/dist/logger/colors.js +31 -49
  346. package/dist/logger/console.js +89 -112
  347. package/dist/logger/default.js +19 -33
  348. package/dist/logger/logger.js +5 -29
  349. package/dist/logger/node.js +794 -854
  350. package/dist/logger/symbols-builder.js +54 -56
  351. package/dist/logger/symbols.js +135 -118
  352. package/dist/logger/types.js +1 -17
  353. package/dist/memo/_internal.js +39 -49
  354. package/dist/memo/async.js +133 -117
  355. package/dist/memo/clear.js +25 -34
  356. package/dist/memo/decorator.js +43 -37
  357. package/dist/memo/memoize.js +97 -88
  358. package/dist/memo/once.js +42 -41
  359. package/dist/memo/types.js +1 -17
  360. package/dist/memo/weak.js +45 -41
  361. package/dist/node/async-hooks.js +9 -30
  362. package/dist/node/child-process.js +9 -30
  363. package/dist/node/crypto.js +9 -30
  364. package/dist/node/events.js +9 -30
  365. package/dist/node/fs-promises.js +9 -30
  366. package/dist/node/fs.js +9 -30
  367. package/dist/node/http.js +9 -30
  368. package/dist/node/https.js +9 -30
  369. package/dist/node/module.js +20 -34
  370. package/dist/node/os.js +9 -30
  371. package/dist/node/path.js +9 -30
  372. package/dist/node/timers-promises.js +9 -30
  373. package/dist/node/url.js +9 -30
  374. package/dist/node/util.js +9 -30
  375. package/dist/objects/getters.js +185 -126
  376. package/dist/objects/inspect.js +85 -52
  377. package/dist/objects/mutate.js +96 -76
  378. package/dist/objects/predicates.js +112 -59
  379. package/dist/objects/sort.js +120 -76
  380. package/dist/objects/types.js +1 -17
  381. package/dist/packages/edit-class.js +198 -265
  382. package/dist/packages/edit.js +79 -86
  383. package/dist/packages/exports.js +146 -157
  384. package/dist/packages/isolation.js +159 -209
  385. package/dist/packages/licenses.js +207 -189
  386. package/dist/packages/manifest.js +134 -172
  387. package/dist/packages/normalize.js +91 -102
  388. package/dist/packages/operations.d.ts +2 -0
  389. package/dist/packages/operations.js +283 -254
  390. package/dist/packages/provenance.js +195 -245
  391. package/dist/packages/specs.js +94 -84
  392. package/dist/packages/types.js +1 -17
  393. package/dist/packages/validation.js +49 -50
  394. package/dist/paths/_internal.js +82 -86
  395. package/dist/paths/conversion.js +112 -65
  396. package/dist/paths/dirnames.js +17 -42
  397. package/dist/paths/exts.js +23 -54
  398. package/dist/paths/filenames.js +21 -50
  399. package/dist/paths/globs.js +15 -38
  400. package/dist/paths/normalize.js +215 -236
  401. package/dist/paths/packages.js +34 -49
  402. package/dist/paths/predicates.js +184 -106
  403. package/dist/paths/resolve.js +146 -128
  404. package/dist/paths/rewire.js +108 -72
  405. package/dist/paths/socket.js +252 -132
  406. package/dist/paths/walk.d.ts +40 -0
  407. package/dist/paths/walk.js +58 -0
  408. package/dist/perf/_internal.js +10 -28
  409. package/dist/perf/enabled.js +21 -30
  410. package/dist/perf/metrics.js +81 -67
  411. package/dist/perf/report.js +79 -80
  412. package/dist/perf/timer.js +180 -126
  413. package/dist/perf/types.js +1 -17
  414. package/dist/pkg-ext/data.js +29 -82
  415. package/dist/pkg-ext/types.js +1 -17
  416. package/dist/primordials/array.js +120 -198
  417. package/dist/primordials/buffer.js +28 -51
  418. package/dist/primordials/date.js +26 -51
  419. package/dist/primordials/error.js +33 -59
  420. package/dist/primordials/function.js +21 -41
  421. package/dist/primordials/globals.js +25 -48
  422. package/dist/primordials/json.js +14 -30
  423. package/dist/primordials/map-set.js +88 -152
  424. package/dist/primordials/math.js +59 -116
  425. package/dist/primordials/number.js +41 -76
  426. package/dist/primordials/object.js +56 -116
  427. package/dist/primordials/promise.js +28 -52
  428. package/dist/primordials/reflect.js +24 -52
  429. package/dist/primordials/regexp.js +25 -47
  430. package/dist/primordials/string.js +114 -167
  431. package/dist/primordials/symbol.js +40 -72
  432. package/dist/primordials/uncurry.js +38 -55
  433. package/dist/primordials/url.js +27 -66
  434. package/dist/process/_internal.js +7 -32
  435. package/dist/process/abort.js +29 -35
  436. package/dist/process/lock-instance.js +26 -30
  437. package/dist/process/lock-manager.js +279 -307
  438. package/dist/process/lock-types.js +1 -17
  439. package/dist/process/spawn/_internal.js +43 -55
  440. package/dist/process/spawn/child.js +172 -211
  441. package/dist/process/spawn/errors.js +116 -113
  442. package/dist/process/spawn/stdio.js +51 -35
  443. package/dist/process/spawn/types.js +1 -17
  444. package/dist/process/transient.js +49 -66
  445. package/dist/promises/_internal.d.ts +8 -2
  446. package/dist/promises/_internal.js +31 -38
  447. package/dist/promises/iterate.js +238 -102
  448. package/dist/promises/options.js +123 -101
  449. package/dist/promises/queue.js +115 -136
  450. package/dist/promises/resolvers.js +77 -46
  451. package/dist/promises/retry.js +156 -101
  452. package/dist/promises/types.js +1 -17
  453. package/dist/regexps/escape.js +32 -30
  454. package/dist/regexps/hex.js +16 -33
  455. package/dist/regexps/spec.js +53 -81
  456. package/dist/releases/github-archives.js +127 -118
  457. package/dist/releases/github-asset-url.js +162 -155
  458. package/dist/releases/github-assets.js +37 -49
  459. package/dist/releases/github-auth.js +32 -48
  460. package/dist/releases/github-downloads.js +118 -138
  461. package/dist/releases/github-listing.js +175 -154
  462. package/dist/releases/github-retry-config.d.ts +31 -0
  463. package/dist/releases/github-retry-config.js +46 -0
  464. package/dist/releases/github-types.js +1 -17
  465. package/dist/releases/socket-btm.js +273 -192
  466. package/dist/schema/parse.js +35 -36
  467. package/dist/schema/types.js +1 -17
  468. package/dist/schema/validate.js +118 -99
  469. package/dist/sea/detect.js +57 -52
  470. package/dist/secrets/_internal.js +86 -67
  471. package/dist/secrets/find.js +96 -77
  472. package/dist/secrets/keychain.js +315 -309
  473. package/dist/secrets/linux.js +133 -135
  474. package/dist/secrets/macos.js +151 -147
  475. package/dist/secrets/rc.js +182 -181
  476. package/dist/secrets/socket-api-token.js +28 -43
  477. package/dist/secrets/types.js +1 -17
  478. package/dist/secrets/windows.js +184 -242
  479. package/dist/shadow/skip.js +51 -70
  480. package/dist/shadow/types.js +1 -17
  481. package/dist/shell/parse.d.ts +26 -0
  482. package/dist/shell/parse.js +35 -0
  483. package/dist/shell/quote.d.ts +19 -0
  484. package/dist/shell/quote.js +30 -0
  485. package/dist/smol/detect.js +67 -43
  486. package/dist/smol/http.js +33 -37
  487. package/dist/smol/https.js +31 -37
  488. package/dist/smol/manifest.js +33 -37
  489. package/dist/smol/path.d.ts +51 -0
  490. package/dist/smol/path.js +38 -0
  491. package/dist/smol/primordial.js +35 -37
  492. package/dist/smol/purl.js +34 -37
  493. package/dist/smol/versions.js +31 -37
  494. package/dist/smol/vfs.js +46 -38
  495. package/dist/sorts/_internal.js +14 -40
  496. package/dist/sorts/natural.js +57 -64
  497. package/dist/sorts/semver.js +33 -43
  498. package/dist/sorts/strings.js +24 -30
  499. package/dist/sorts/types.js +1 -17
  500. package/dist/spinner/default.js +72 -63
  501. package/dist/spinner/format.js +86 -71
  502. package/dist/spinner/spinner.js +749 -797
  503. package/dist/spinner/types.js +1 -17
  504. package/dist/spinner/with.js +193 -137
  505. package/dist/ssri/convert.js +64 -47
  506. package/dist/ssri/parse.js +38 -37
  507. package/dist/ssri/validate.js +51 -34
  508. package/dist/stdio/_internal.js +50 -46
  509. package/dist/stdio/clear.js +208 -86
  510. package/dist/stdio/divider.js +170 -97
  511. package/dist/stdio/footer.js +116 -110
  512. package/dist/stdio/header.js +117 -90
  513. package/dist/stdio/progress.js +189 -218
  514. package/dist/stdio/prompts.js +244 -168
  515. package/dist/stdio/stderr.js +173 -78
  516. package/dist/stdio/stdout.js +177 -94
  517. package/dist/streams/parallel.js +58 -50
  518. package/dist/streams/transform.js +36 -45
  519. package/dist/strings/format.js +145 -63
  520. package/dist/strings/predicates.js +56 -34
  521. package/dist/strings/search.js +52 -42
  522. package/dist/strings/transform.js +113 -72
  523. package/dist/strings/types.js +1 -17
  524. package/dist/strings/width.js +89 -82
  525. package/dist/tables/bordered.js +81 -81
  526. package/dist/tables/padding.js +36 -46
  527. package/dist/tables/simple.js +62 -70
  528. package/dist/tables/types.js +1 -17
  529. package/dist/temporal/instant.js +72 -81
  530. package/dist/temporal/now.js +40 -31
  531. package/dist/temporal/slots.js +42 -36
  532. package/dist/temporal/system.js +36 -36
  533. package/dist/temporal/temporal.js +11 -41
  534. package/dist/themes/context.js +131 -69
  535. package/dist/themes/resolve.js +207 -132
  536. package/dist/themes/themes.js +225 -194
  537. package/dist/themes/types.js +1 -17
  538. package/dist/url/parse.js +48 -51
  539. package/dist/url/predicates.js +24 -31
  540. package/dist/url/search-params.js +133 -101
  541. package/dist/url/types.js +1 -17
  542. package/dist/versions/_internal.js +31 -33
  543. package/dist/versions/compare.js +80 -58
  544. package/dist/versions/modify.js +41 -39
  545. package/dist/versions/parse.js +88 -64
  546. package/dist/versions/range.js +58 -41
  547. package/dist/versions/types.js +1 -17
  548. package/dist/words/article.js +22 -30
  549. package/dist/words/capitalize.js +25 -34
  550. package/dist/words/pluralize.js +23 -31
  551. package/dist/words/types.js +1 -17
  552. package/package.json +42 -5
@@ -1,35 +1,33 @@
1
1
  "use strict";
2
- /* Socket Lib - Built with esbuild */
3
- "use strict";
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
- var pre_commit_exports = {};
22
- __export(pre_commit_exports, {
23
- getPreCommit: () => getPreCommit
24
- });
25
- module.exports = __toCommonJS(pre_commit_exports);
26
- var import_boolean = require("./boolean");
27
- var import_rewire = require("./rewire");
28
- // @__NO_SIDE_EFFECTS__
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_env_boolean = require('./boolean.js');
5
+ const require_env_rewire = require('./rewire.js');
6
+
7
+ //#region src/env/pre-commit.ts
8
+ /**
9
+ * @file PRE_COMMIT environment variable getter. Exports `getPreCommit()`, a
10
+ * boolean coercion of `PRE_COMMIT` used to detect when code is running inside
11
+ * a pre-commit hook.
12
+ */
13
+ /**
14
+ * Returns whether the PRE_COMMIT environment variable is set to a truthy value.
15
+ *
16
+ * @example
17
+ * ;```typescript
18
+ * import { getPreCommit } from '@socketsecurity/lib/env/pre-commit'
19
+ *
20
+ * if (getPreCommit()) {
21
+ * console.log('Running in pre-commit hook')
22
+ * }
23
+ * ```
24
+ *
25
+ * @returns `true` if running in a pre-commit hook, `false` otherwise
26
+ */
27
+ /* @__NO_SIDE_EFFECTS__ */
29
28
  function getPreCommit() {
30
- return (0, import_boolean.envAsBoolean)((0, import_rewire.getEnvValue)("PRE_COMMIT"));
29
+ return /* @__PURE__ */ require_env_boolean.envAsBoolean(require_env_rewire.getEnvValue("PRE_COMMIT"));
31
30
  }
32
- // Annotate the CommonJS export names for ESM import in node:
33
- 0 && (module.exports = {
34
- getPreCommit
35
- });
31
+
32
+ //#endregion
33
+ exports.getPreCommit = getPreCommit;
package/dist/env/proxy.js CHANGED
@@ -1,126 +1,125 @@
1
1
  "use strict";
2
- /* Socket Lib - Built with esbuild */
3
- "use strict";
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
- var proxy_exports = {};
22
- __export(proxy_exports, {
23
- createEnvProxy: () => createEnvProxy
24
- });
25
- module.exports = __toCommonJS(proxy_exports);
26
- var import_globals = require("../primordials/globals");
27
- var import_map_set = require("../primordials/map-set");
28
- var import_object = require("../primordials/object");
29
- var import_case_insensitive = require("./case-insensitive");
30
- const caseInsensitiveKeys = new import_map_set.SetCtor([
31
- "APPDATA",
32
- "COMSPEC",
33
- "HOME",
34
- "LOCALAPPDATA",
35
- "PATH",
36
- "PATHEXT",
37
- "PROGRAMFILES",
38
- "SYSTEMROOT",
39
- "TEMP",
40
- "TMP",
41
- "USERPROFILE",
42
- "WINDIR"
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_map_set = require('../primordials/map-set.js');
5
+ const require_primordials_object = require('../primordials/object.js');
6
+ const require_primordials_globals = require('../primordials/globals.js');
7
+ const require_env_case_insensitive = require('./case-insensitive.js');
8
+
9
+ //#region src/env/proxy.ts
10
+ /**
11
+ * @file `createEnvProxy` — wrap `process.env` (or any env-like record) in a
12
+ * Proxy that adds case-insensitive lookups for known-Windows-sensitive keys
13
+ * (PATH, APPDATA, etc.) and an `overrides` layer. Intended for cross-platform
14
+ * test harnesses and child-process spawn env normalization.
15
+ */
16
+ const caseInsensitiveKeys = new require_primordials_map_set.SetCtor([
17
+ "APPDATA",
18
+ "COMSPEC",
19
+ "HOME",
20
+ "LOCALAPPDATA",
21
+ "PATH",
22
+ "PATHEXT",
23
+ "PROGRAMFILES",
24
+ "SYSTEMROOT",
25
+ "TEMP",
26
+ "TMP",
27
+ "USERPROFILE",
28
+ "WINDIR"
43
29
  ]);
30
+ /**
31
+ * Create a case-insensitive environment variable Proxy for Windows
32
+ * compatibility. On Windows, environment variables are case-insensitive (PATH
33
+ * vs Path vs path). This Proxy provides consistent access regardless of case,
34
+ * with priority given to exact matches, then case-insensitive matches for known
35
+ * vars.
36
+ *
37
+ * **Use Cases:**
38
+ *
39
+ * - Cross-platform test environments needing consistent env var access
40
+ * - Windows compatibility when passing env to child processes
41
+ * - Merging environment overrides while preserving case-insensitive lookups
42
+ *
43
+ * **Performance Note:** Proxy operations have runtime overhead. Only use when
44
+ * Windows case-insensitive access is required. For most use cases, process.env
45
+ * directly is sufficient.
46
+ *
47
+ * @example
48
+ * // Create a Proxy with overrides
49
+ * const env = createEnvProxy(process.env, { NODE_ENV: 'test' })
50
+ * console.log(env.PATH) // Works with any case: PATH, Path, path
51
+ * console.log(env.NODE_ENV) // 'test'
52
+ *
53
+ * @example
54
+ * // Pass to child process spawn
55
+ * import { createEnvProxy } from '@socketsecurity/lib/env/proxy'
56
+ * import { spawn } from '@socketsecurity/lib/spawn'
57
+ *
58
+ * spawn('node', ['script.js'], {
59
+ * env: createEnvProxy(process.env, { NODE_ENV: 'test' }),
60
+ * })
61
+ *
62
+ * @param base - Base environment object (usually process.env)
63
+ * @param overrides - Optional overrides to merge.
64
+ *
65
+ * @returns Proxy that handles case-insensitive env var access
66
+ */
44
67
  function createEnvProxy(base, overrides) {
45
- function lookupEnvValue(prop) {
46
- if (overrides && prop in overrides) {
47
- return overrides[prop];
48
- }
49
- if (prop in base) {
50
- return base[prop];
51
- }
52
- const upperProp = prop.toUpperCase();
53
- if (caseInsensitiveKeys.has(upperProp)) {
54
- if (overrides) {
55
- const key2 = (0, import_case_insensitive.findCaseInsensitiveEnvKey)(overrides, upperProp);
56
- if (key2 !== void 0) {
57
- return overrides[key2];
58
- }
59
- }
60
- const key = (0, import_case_insensitive.findCaseInsensitiveEnvKey)(base, upperProp);
61
- if (key !== void 0) {
62
- return base[key];
63
- }
64
- }
65
- return void 0;
66
- }
67
- return new import_globals.ProxyCtor({}, {
68
- get(_target, prop) {
69
- if (typeof prop !== "string") {
70
- return void 0;
71
- }
72
- return lookupEnvValue(prop);
73
- },
74
- ownKeys(_target) {
75
- const keys = /* @__PURE__ */ new Set([
76
- ...(0, import_object.ObjectKeys)(base),
77
- ...overrides ? (0, import_object.ObjectKeys)(overrides) : []
78
- ]);
79
- return [...keys];
80
- },
81
- getOwnPropertyDescriptor(_target, prop) {
82
- if (typeof prop !== "string") {
83
- return void 0;
84
- }
85
- const value = lookupEnvValue(prop);
86
- return value !== void 0 ? {
87
- enumerable: true,
88
- configurable: true,
89
- writable: true,
90
- value
91
- } : void 0;
92
- },
93
- has(_target, prop) {
94
- if (typeof prop !== "string") {
95
- return false;
96
- }
97
- if (overrides && prop in overrides) {
98
- return true;
99
- }
100
- if (prop in base) {
101
- return true;
102
- }
103
- const upperProp = prop.toUpperCase();
104
- if (caseInsensitiveKeys.has(upperProp)) {
105
- if (overrides && (0, import_case_insensitive.findCaseInsensitiveEnvKey)(overrides, upperProp) !== void 0) {
106
- return true;
107
- }
108
- if ((0, import_case_insensitive.findCaseInsensitiveEnvKey)(base, upperProp) !== void 0) {
109
- return true;
110
- }
111
- }
112
- return false;
113
- },
114
- set(_target, prop, value) {
115
- if (typeof prop === "string" && overrides) {
116
- overrides[prop] = value;
117
- return true;
118
- }
119
- return false;
120
- }
121
- });
68
+ function lookupEnvValue(prop) {
69
+ if (overrides && prop in overrides) return overrides[prop];
70
+ if (prop in base) return base[prop];
71
+ /* c8 ignore start */
72
+ const upperProp = prop.toUpperCase();
73
+ if (caseInsensitiveKeys.has(upperProp)) {
74
+ if (overrides) {
75
+ const key = require_env_case_insensitive.findCaseInsensitiveEnvKey(overrides, upperProp);
76
+ if (key !== void 0) return overrides[key];
77
+ }
78
+ const key = require_env_case_insensitive.findCaseInsensitiveEnvKey(base, upperProp);
79
+ if (key !== void 0) return base[key];
80
+ }
81
+ }
82
+ /* c8 ignore stop */
83
+ return new require_primordials_globals.ProxyCtor({}, {
84
+ get(_target, prop) {
85
+ if (typeof prop !== "string") return;
86
+ return lookupEnvValue(prop);
87
+ },
88
+ ownKeys(_target) {
89
+ return [...new Set([...require_primordials_object.ObjectKeys(base), ...overrides ? require_primordials_object.ObjectKeys(overrides) : []])];
90
+ },
91
+ getOwnPropertyDescriptor(_target, prop) {
92
+ if (typeof prop !== "string") return;
93
+ const value = lookupEnvValue(prop);
94
+ return value !== void 0 ? {
95
+ enumerable: true,
96
+ configurable: true,
97
+ writable: true,
98
+ value
99
+ } : void 0;
100
+ },
101
+ has(_target, prop) {
102
+ /* c8 ignore start */
103
+ if (typeof prop !== "string") return false;
104
+ if (overrides && prop in overrides) return true;
105
+ if (prop in base) return true;
106
+ const upperProp = prop.toUpperCase();
107
+ if (caseInsensitiveKeys.has(upperProp)) {
108
+ if (overrides && require_env_case_insensitive.findCaseInsensitiveEnvKey(overrides, upperProp) !== void 0) return true;
109
+ if (require_env_case_insensitive.findCaseInsensitiveEnvKey(base, upperProp) !== void 0) return true;
110
+ }
111
+ return false;
112
+ /* c8 ignore stop */
113
+ },
114
+ set(_target, prop, value) {
115
+ if (typeof prop === "string" && overrides) {
116
+ overrides[prop] = value;
117
+ return true;
118
+ }
119
+ return false;
120
+ }
121
+ });
122
122
  }
123
- // Annotate the CommonJS export names for ESM import in node:
124
- 0 && (module.exports = {
125
- createEnvProxy
126
- });
123
+
124
+ //#endregion
125
+ exports.createEnvProxy = createEnvProxy;
@@ -1,120 +1,228 @@
1
1
  "use strict";
2
- /* Socket Lib - Built with esbuild */
3
- "use strict";
4
- var __create = Object.create;
5
- var __defProp = Object.defineProperty;
6
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
- var __getOwnPropNames = Object.getOwnPropertyNames;
8
- var __getProtoOf = Object.getPrototypeOf;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __export = (target, all) => {
11
- for (var name in all)
12
- __defProp(target, name, { get: all[name], enumerable: true });
13
- };
14
- var __copyProps = (to, from, except, desc) => {
15
- if (from && typeof from === "object" || typeof from === "function") {
16
- for (let key of __getOwnPropNames(from))
17
- if (!__hasOwnProp.call(to, key) && key !== except)
18
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
- }
20
- return to;
21
- };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
- // If the importer is in node compatibility mode or this is not an ESM
24
- // file that has been converted to a CommonJS file using a Babel-
25
- // compatible transform (i.e. "__esModule" has not been set), then set
26
- // "default" to the CommonJS "module.exports" for node compatibility.
27
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
- mod
29
- ));
30
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
- var rewire_exports = {};
32
- __export(rewire_exports, {
33
- clearEnv: () => clearEnv,
34
- getAsyncHooks: () => getAsyncHooks,
35
- getEnvValue: () => getEnvValue,
36
- hasOverride: () => hasOverride,
37
- isInEnv: () => isInEnv,
38
- resetEnv: () => resetEnv,
39
- setEnv: () => setEnv,
40
- withEnv: () => withEnv,
41
- withEnvSync: () => withEnvSync
42
- });
43
- module.exports = __toCommonJS(rewire_exports);
44
- var import_node_process = __toESM(require("node:process"));
45
- var import_predicates = require("../objects/predicates");
46
- var import_boolean = require("./boolean");
47
- var import_map_set = require("../primordials/map-set");
48
- var import_object = require("../primordials/object");
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_primordials_map_set = require('../primordials/map-set.js');
6
+ const require_primordials_object = require('../primordials/object.js');
7
+ const require_objects_predicates = require('../objects/predicates.js');
8
+ const require_env_boolean = require('./boolean.js');
9
+ let node_process = require("node:process");
10
+ node_process = require_runtime.__toESM(node_process);
11
+
12
+ //#region src/env/rewire.ts
13
+ /**
14
+ * @file Environment variable rewiring utilities for testing. Uses
15
+ * AsyncLocalStorage for context-isolated overrides that work with concurrent
16
+ * tests. Features:
17
+ *
18
+ * - Context-isolated overrides via withEnv() for advanced use cases
19
+ * - Test-friendly setEnv/clearEnv/resetEnv that work in beforeEach/afterEach
20
+ * - Compatible with vi.stubEnv() - reads from process.env as final fallback
21
+ * - Thread-safe for concurrent test execution
22
+ */
49
23
  let _async_hooks;
50
- // @__NO_SIDE_EFFECTS__
24
+ /**
25
+ * Lazily load the async_hooks module to avoid Webpack errors.
26
+ *
27
+ * @private
28
+ */
29
+ /* @__NO_SIDE_EFFECTS__ */
51
30
  function getAsyncHooks() {
52
- if (_async_hooks === void 0) {
53
- _async_hooks = require("node:async_hooks");
54
- }
55
- return _async_hooks;
31
+ if (_async_hooks === void 0) _async_hooks = /* @__PURE__ */ require("node:async_hooks");
32
+ return _async_hooks;
56
33
  }
57
34
  const { AsyncLocalStorage } = /* @__PURE__ */ getAsyncHooks();
58
35
  const isolatedOverridesStorage = new AsyncLocalStorage();
59
- const sharedOverridesSymbol = Symbol.for(
60
- "@socketsecurity/lib/env/rewire/test-overrides"
61
- );
36
+ const sharedOverridesSymbol = Symbol.for("@socketsecurity/lib/env/rewire/test-overrides");
62
37
  const _globalThis = globalThis;
63
- const isVitestEnv = (0, import_boolean.envAsBoolean)(import_node_process.default.env["VITEST"]);
64
- if (isVitestEnv && !_globalThis[sharedOverridesSymbol]) {
65
- _globalThis[sharedOverridesSymbol] = new import_map_set.MapCtor();
66
- }
38
+ if (/* @__PURE__ */ require_env_boolean.envAsBoolean(node_process.default.env["VITEST"]) && !_globalThis[sharedOverridesSymbol]) _globalThis[sharedOverridesSymbol] = new require_primordials_map_set.MapCtor();
67
39
  const sharedOverrides = _globalThis[sharedOverridesSymbol];
40
+ /**
41
+ * Clear a specific environment variable override.
42
+ *
43
+ * @example
44
+ * ;```typescript
45
+ * import { setEnv, clearEnv } from '@socketsecurity/lib/env/rewire'
46
+ *
47
+ * setEnv('CI', '1')
48
+ * clearEnv('CI')
49
+ * ```
50
+ *
51
+ * @param key - The environment variable name to clear.
52
+ */
68
53
  function clearEnv(key) {
69
- sharedOverrides?.delete(key);
54
+ sharedOverrides?.delete(key);
70
55
  }
56
+ /**
57
+ * Get an environment variable value, checking overrides first.
58
+ *
59
+ * Resolution order: 1. Isolated overrides (temporary - set via
60
+ * withEnv/withEnvSync) 2. Shared overrides (persistent - set via setEnv in
61
+ * beforeEach) 3. process.env (including vi.stubEnv modifications)
62
+ *
63
+ * @example
64
+ * ;```typescript
65
+ * import { getEnvValue } from '@socketsecurity/lib/env/rewire'
66
+ *
67
+ * const value = getEnvValue('NODE_ENV')
68
+ * // e.g. 'production' or undefined
69
+ * ```
70
+ *
71
+ * @internal Used by env getters to support test rewiring
72
+ */
71
73
  function getEnvValue(key) {
72
- const isolatedOverrides = isolatedOverridesStorage.getStore();
73
- if (isolatedOverrides?.has(key)) {
74
- return isolatedOverrides.get(key);
75
- }
76
- if (sharedOverrides?.has(key)) {
77
- return sharedOverrides.get(key);
78
- }
79
- return import_node_process.default.env[key];
74
+ const isolatedOverrides = isolatedOverridesStorage.getStore();
75
+ if (isolatedOverrides?.has(key)) return isolatedOverrides.get(key);
76
+ if (sharedOverrides?.has(key)) return sharedOverrides.get(key);
77
+ return node_process.default.env[key];
80
78
  }
79
+ /**
80
+ * Check if an environment variable has been overridden.
81
+ *
82
+ * @example
83
+ * ;```typescript
84
+ * import { setEnv, hasOverride } from '@socketsecurity/lib/env/rewire'
85
+ *
86
+ * hasOverride('CI') // false
87
+ * setEnv('CI', '1')
88
+ * hasOverride('CI') // true
89
+ * ```
90
+ *
91
+ * @param key - The environment variable name to check.
92
+ *
93
+ * @returns `true` if the variable has been overridden, `false` otherwise
94
+ */
81
95
  function hasOverride(key) {
82
- const isolatedOverrides = isolatedOverridesStorage.getStore();
83
- return !!(isolatedOverrides?.has(key) || sharedOverrides?.has(key));
96
+ return !!(isolatedOverridesStorage.getStore()?.has(key) || sharedOverrides?.has(key));
84
97
  }
98
+ /**
99
+ * Check if an environment variable exists (has a key), checking overrides
100
+ * first.
101
+ *
102
+ * Resolution order: 1. Isolated overrides (temporary - set via
103
+ * withEnv/withEnvSync) 2. Shared overrides (persistent - set via setEnv in
104
+ * beforeEach) 3. process.env (including vi.stubEnv modifications)
105
+ *
106
+ * @example
107
+ * ;```typescript
108
+ * import { isInEnv } from '@socketsecurity/lib/env/rewire'
109
+ *
110
+ * isInEnv('PATH') // true (usually set)
111
+ * isInEnv('MISSING') // false
112
+ * ```
113
+ *
114
+ * @internal Used by env getters to check for key presence (not value truthiness)
115
+ */
85
116
  function isInEnv(key) {
86
- const isolatedOverrides = isolatedOverridesStorage.getStore();
87
- if (isolatedOverrides?.has(key)) {
88
- return true;
89
- }
90
- if (sharedOverrides?.has(key)) {
91
- return true;
92
- }
93
- return (0, import_predicates.hasOwn)(import_node_process.default.env, key);
117
+ if (isolatedOverridesStorage.getStore()?.has(key)) return true;
118
+ if (sharedOverrides?.has(key)) return true;
119
+ return /* @__PURE__ */ require_objects_predicates.hasOwn(node_process.default.env, key);
94
120
  }
121
+ /**
122
+ * Clear all environment variable overrides. Useful in afterEach hooks to ensure
123
+ * clean test state.
124
+ *
125
+ * @example
126
+ * ;```typescript
127
+ * import { resetEnv } from './rewire'
128
+ *
129
+ * afterEach(() => {
130
+ * resetEnv()
131
+ * })
132
+ * ```
133
+ */
95
134
  function resetEnv() {
96
- sharedOverrides?.clear();
135
+ sharedOverrides?.clear();
97
136
  }
137
+ /**
138
+ * Set an environment variable override for testing. This does not modify
139
+ * process.env, only affects env getters.
140
+ *
141
+ * Works in test hooks (beforeEach) without needing AsyncLocalStorage context.
142
+ * Vitest's module isolation ensures each test file has independent overrides.
143
+ *
144
+ * @example
145
+ * ;```typescript
146
+ * import { setEnv, resetEnv } from './rewire'
147
+ * import { getCI } from './ci'
148
+ *
149
+ * beforeEach(() => {
150
+ * setEnv('CI', '1')
151
+ * })
152
+ *
153
+ * afterEach(() => {
154
+ * resetEnv()
155
+ * })
156
+ *
157
+ * it('should detect CI environment', () => {
158
+ * expect(getCI()).toBe(true)
159
+ * })
160
+ * ```
161
+ */
98
162
  function setEnv(key, value) {
99
- sharedOverrides?.set(key, value);
163
+ sharedOverrides?.set(key, value);
100
164
  }
165
+ /**
166
+ * Run code with environment overrides in an isolated AsyncLocalStorage context.
167
+ * Creates true context isolation - overrides don't leak to concurrent code.
168
+ *
169
+ * Useful for tests that need temporary overrides without affecting other tests
170
+ * or for nested override scenarios.
171
+ *
172
+ * @example
173
+ * ;```typescript
174
+ * import { withEnv } from './rewire'
175
+ * import { getCI } from './ci'
176
+ *
177
+ * // Temporary override in isolated context
178
+ * await withEnv({ CI: '1' }, async () => {
179
+ * expect(getCI()).toBe(true)
180
+ * })
181
+ * expect(getCI()).toBe(false) // Override is gone
182
+ * ```
183
+ *
184
+ * @example
185
+ * ;```typescript
186
+ * // Nested overrides work correctly
187
+ * setEnv('CI', '1') // Shared override (persistent)
188
+ *
189
+ * await withEnv({ CI: '0' }, async () => {
190
+ * expect(getCI()).toBe(false) // Isolated override takes precedence
191
+ * })
192
+ *
193
+ * expect(getCI()).toBe(true) // Back to shared override
194
+ * ```
195
+ */
101
196
  async function withEnv(overrides, fn) {
102
- const map = new import_map_set.MapCtor((0, import_object.ObjectEntries)(overrides));
103
- return await isolatedOverridesStorage.run(map, fn);
197
+ const map = new require_primordials_map_set.MapCtor(require_primordials_object.ObjectEntries(overrides));
198
+ return await isolatedOverridesStorage.run(map, fn);
104
199
  }
200
+ /**
201
+ * Synchronous version of withEnv for non-async code.
202
+ *
203
+ * @example
204
+ * ;```typescript
205
+ * import { withEnvSync } from './rewire'
206
+ * import { getCI } from './ci'
207
+ *
208
+ * const result = withEnvSync({ CI: '1' }, () => {
209
+ * return getCI()
210
+ * })
211
+ * expect(result).toBe(true)
212
+ * ```
213
+ */
105
214
  function withEnvSync(overrides, fn) {
106
- const map = new import_map_set.MapCtor((0, import_object.ObjectEntries)(overrides));
107
- return isolatedOverridesStorage.run(map, fn);
215
+ const map = new require_primordials_map_set.MapCtor(require_primordials_object.ObjectEntries(overrides));
216
+ return isolatedOverridesStorage.run(map, fn);
108
217
  }
109
- // Annotate the CommonJS export names for ESM import in node:
110
- 0 && (module.exports = {
111
- clearEnv,
112
- getAsyncHooks,
113
- getEnvValue,
114
- hasOverride,
115
- isInEnv,
116
- resetEnv,
117
- setEnv,
118
- withEnv,
119
- withEnvSync
120
- });
218
+
219
+ //#endregion
220
+ exports.clearEnv = clearEnv;
221
+ exports.getAsyncHooks = getAsyncHooks;
222
+ exports.getEnvValue = getEnvValue;
223
+ exports.hasOverride = hasOverride;
224
+ exports.isInEnv = isInEnv;
225
+ exports.resetEnv = resetEnv;
226
+ exports.setEnv = setEnv;
227
+ exports.withEnv = withEnv;
228
+ exports.withEnvSync = withEnvSync;