@socketsecurity/lib 6.0.3 → 6.0.5

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 (542) hide show
  1. package/CHANGELOG.md +22 -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.js +94 -65
  6. package/dist/ai/spawn.js +172 -194
  7. package/dist/ai/types.js +1 -17
  8. package/dist/ai/worktree.js +160 -183
  9. package/dist/ansi/constants.js +16 -38
  10. package/dist/ansi/strip.js +44 -41
  11. package/dist/archives/_internal.js +64 -73
  12. package/dist/archives/detect.js +30 -43
  13. package/dist/archives/extract.js +43 -50
  14. package/dist/archives/tar.js +197 -228
  15. package/dist/archives/types.js +1 -17
  16. package/dist/archives/zip.js +85 -121
  17. package/dist/argv/flag-predicates.js +203 -101
  18. package/dist/argv/flag-types.js +96 -113
  19. package/dist/argv/parse-args-string.d.ts +16 -14
  20. package/dist/argv/parse-args-string.js +42 -39
  21. package/dist/argv/parse.js +145 -163
  22. package/dist/arrays/_internal.js +65 -48
  23. package/dist/arrays/chunk.js +51 -40
  24. package/dist/arrays/join.js +87 -35
  25. package/dist/arrays/predicates.js +46 -28
  26. package/dist/arrays/unique.js +45 -31
  27. package/dist/bin/_internal.js +34 -42
  28. package/dist/bin/check-primordials.js +175 -233
  29. package/dist/bin/check.js +51 -72
  30. package/dist/bin/exec.js +70 -74
  31. package/dist/bin/find.js +151 -134
  32. package/dist/bin/resolve.js +180 -246
  33. package/dist/bin/shadow.js +24 -33
  34. package/dist/bin/socket-lib.js +51 -73
  35. package/dist/bin/types.js +1 -17
  36. package/dist/bin/which.js +211 -146
  37. package/dist/cacache/_internal.js +25 -40
  38. package/dist/cacache/clear.js +79 -72
  39. package/dist/cacache/read.js +48 -46
  40. package/dist/cacache/tmp.js +29 -36
  41. package/dist/cacache/types.js +1 -17
  42. package/dist/cacache/write.js +43 -48
  43. package/dist/cache/ttl/store.js +232 -288
  44. package/dist/cache/ttl/types.js +1 -17
  45. package/dist/checks/primordials-defaults.js +83 -89
  46. package/dist/checks/primordials.js +225 -277
  47. package/dist/colors/convert.js +45 -37
  48. package/dist/colors/palette.js +88 -45
  49. package/dist/colors/socket-palette.js +74 -84
  50. package/dist/colors/types.js +1 -17
  51. package/dist/compression/_internal.js +57 -72
  52. package/dist/compression/brotli.js +94 -127
  53. package/dist/compression/gzip.js +95 -121
  54. package/dist/compression/types.js +1 -17
  55. package/dist/constants/agents.js +61 -113
  56. package/dist/constants/encoding.js +19 -42
  57. package/dist/constants/github.js +12 -30
  58. package/dist/constants/licenses.js +48 -63
  59. package/dist/constants/lifecycle-script-names.js +31 -45
  60. package/dist/constants/maintained-node-versions.js +22 -37
  61. package/dist/constants/node.js +226 -167
  62. package/dist/constants/package-default-node-range.js +16 -41
  63. package/dist/constants/package-default-socket-categories.js +12 -30
  64. package/dist/constants/packages.js +77 -126
  65. package/dist/constants/platform.js +27 -49
  66. package/dist/constants/sentinels.js +23 -48
  67. package/dist/constants/socket.js +42 -87
  68. package/dist/constants/testing.js +15 -34
  69. package/dist/constants/time.js +16 -36
  70. package/dist/constants/typescript.js +32 -52
  71. package/dist/cover/code.js +111 -142
  72. package/dist/cover/formatters.js +118 -101
  73. package/dist/cover/type.js +50 -76
  74. package/dist/cover/types.js +1 -17
  75. package/dist/crypto/hash.js +54 -46
  76. package/dist/debug/_internal.js +62 -71
  77. package/dist/debug/caller-info.js +53 -64
  78. package/dist/debug/namespace.js +80 -90
  79. package/dist/debug/output.js +172 -188
  80. package/dist/debug/types.js +1 -17
  81. package/dist/dlx/_internal.js +24 -43
  82. package/dist/dlx/arborist.js +162 -160
  83. package/dist/dlx/binary-cache.js +228 -200
  84. package/dist/dlx/binary-download.js +172 -211
  85. package/dist/dlx/binary-resolution.js +165 -157
  86. package/dist/dlx/binary-types.js +1 -17
  87. package/dist/dlx/binary.js +149 -189
  88. package/dist/dlx/cache.js +45 -30
  89. package/dist/dlx/detect.js +245 -159
  90. package/dist/dlx/dir.js +67 -51
  91. package/dist/dlx/firewall.js +62 -100
  92. package/dist/dlx/lockfile.js +122 -127
  93. package/dist/dlx/manifest.js +264 -274
  94. package/dist/dlx/package.js +241 -244
  95. package/dist/dlx/packages.js +99 -96
  96. package/dist/dlx/paths.js +73 -59
  97. package/dist/dlx/spec.js +52 -60
  98. package/dist/dlx/types.js +1 -17
  99. package/dist/eco/cargo/lockfile-format.js +19 -36
  100. package/dist/eco/cargo/manifest-format.js +17 -35
  101. package/dist/eco/cargo/parse-lockfile.js +210 -237
  102. package/dist/eco/manifest/analyze-lockfile.js +46 -63
  103. package/dist/eco/manifest/detect-format.js +66 -90
  104. package/dist/eco/manifest/find-packages.js +39 -64
  105. package/dist/eco/manifest/get-package-versions.js +27 -48
  106. package/dist/eco/manifest/get-package.js +21 -40
  107. package/dist/eco/manifest/manifest-error.js +14 -35
  108. package/dist/eco/manifest/parse-lockfile.js +40 -86
  109. package/dist/eco/manifest/parse-manifest.js +26 -43
  110. package/dist/eco/manifest/parse.js +26 -47
  111. package/dist/eco/manifest/types.js +1 -17
  112. package/dist/eco/npm/bun/exec.js +23 -32
  113. package/dist/eco/npm/manifest-format.js +21 -35
  114. package/dist/eco/npm/npm/exec.js +51 -61
  115. package/dist/eco/npm/npm/extract-package-name-from-path.js +28 -50
  116. package/dist/eco/npm/npm/flags.js +80 -52
  117. package/dist/eco/npm/npm/lockfile-format.js +21 -40
  118. package/dist/eco/npm/npm/parse-git-url.js +26 -40
  119. package/dist/eco/npm/npm/parse-lockfile.js +184 -210
  120. package/dist/eco/npm/parse-package-json.js +71 -102
  121. package/dist/eco/npm/pnpm/detect-pnpm-version.js +22 -43
  122. package/dist/eco/npm/pnpm/exec.js +51 -62
  123. package/dist/eco/npm/pnpm/flags.js +75 -68
  124. package/dist/eco/npm/pnpm/lockfile-format.js +19 -36
  125. package/dist/eco/npm/pnpm/parse-lockfile.js +235 -259
  126. package/dist/eco/npm/pnpm/parse-pnpm-package-id-v5.js +37 -47
  127. package/dist/eco/npm/pnpm/parse-pnpm-package-id-v6-v9.js +36 -49
  128. package/dist/eco/npm/script.js +82 -90
  129. package/dist/eco/npm/vlt/exec.js +24 -32
  130. package/dist/eco/npm/yarnpkg/yarn/exec.js +60 -59
  131. package/dist/eco/npm/yarnpkg/yarn/lockfile-format.js +20 -36
  132. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +194 -242
  133. package/dist/eco/npm/yarnpkg/yarn/parse-yarn-descriptor.js +37 -61
  134. package/dist/eco/purl.js +50 -60
  135. package/dist/eco/types.js +1 -17
  136. package/dist/effects/pulse-frames.js +64 -65
  137. package/dist/effects/shimmer-keyframes.js +71 -52
  138. package/dist/effects/shimmer-terminal.js +81 -50
  139. package/dist/effects/shimmer.js +290 -153
  140. package/dist/env/boolean.js +42 -43
  141. package/dist/env/case-insensitive.js +54 -39
  142. package/dist/env/ci.js +29 -31
  143. package/dist/env/debug.js +28 -31
  144. package/dist/env/github.js +144 -59
  145. package/dist/env/home.js +38 -31
  146. package/dist/env/locale.js +59 -39
  147. package/dist/env/node-auth-token.js +28 -31
  148. package/dist/env/node-env.js +28 -31
  149. package/dist/env/npm.js +94 -47
  150. package/dist/env/number.js +50 -51
  151. package/dist/env/package-manager.js +95 -83
  152. package/dist/env/path.js +28 -31
  153. package/dist/env/pre-commit.js +30 -32
  154. package/dist/env/proxy.js +121 -122
  155. package/dist/env/rewire.js +204 -96
  156. package/dist/env/shell.js +28 -31
  157. package/dist/env/socket-cli.js +233 -81
  158. package/dist/env/socket.js +521 -156
  159. package/dist/env/string.js +43 -44
  160. package/dist/env/temp-dir.js +59 -39
  161. package/dist/env/term.js +28 -31
  162. package/dist/env/test.js +65 -43
  163. package/dist/env/types.js +1 -17
  164. package/dist/env/windows.js +78 -43
  165. package/dist/env/xdg.js +62 -39
  166. package/dist/errors/message.js +40 -46
  167. package/dist/errors/predicates.js +61 -49
  168. package/dist/errors/stack.js +24 -36
  169. package/dist/events/exit/_internal.js +86 -103
  170. package/dist/events/exit/handler.js +48 -55
  171. package/dist/events/exit/intercept.js +49 -70
  172. package/dist/events/exit/lifecycle.js +92 -101
  173. package/dist/events/exit/signals.js +25 -31
  174. package/dist/events/exit/types.js +1 -17
  175. package/dist/events/warning/handler.js +43 -40
  176. package/dist/events/warning/suppress.js +111 -90
  177. package/dist/external/@npmcli/package-json/lib/read-package.js +132 -153
  178. package/dist/external/@npmcli/package-json/lib/sort.js +73 -105
  179. package/dist/external/@npmcli/package-json.js +12705 -15140
  180. package/dist/external/@npmcli/promise-spawn.js +451 -472
  181. package/dist/external/@sinclair/typebox/value.js +7443 -9002
  182. package/dist/external/@sinclair/typebox.js +7516 -7885
  183. package/dist/external/@socketregistry/is-unicode-supported.js +31 -39
  184. package/dist/external/@socketregistry/packageurl-js.js +6127 -7369
  185. package/dist/external/@socketregistry/yocto-spinner.js +394 -455
  186. package/dist/external/@yarnpkg/extensions.js +435 -1022
  187. package/dist/external/adm-zip.js +2313 -2673
  188. package/dist/external/debug.js +700 -687
  189. package/dist/external/external-pack.js +2658 -3171
  190. package/dist/external/fast-sort.js +124 -138
  191. package/dist/external/get-east-asian-width.js +70 -64
  192. package/dist/external/libnpmexec.js +28 -31
  193. package/dist/external/npm-pack.js +43617 -50137
  194. package/dist/external/p-map.js +198 -222
  195. package/dist/external/pico-pack.js +6735 -7304
  196. package/dist/external/pony-cause.js +143 -139
  197. package/dist/external/shell-quote.js +226 -0
  198. package/dist/external/spdx-pack.js +1283 -1403
  199. package/dist/external/streaming-iterables.js +835 -1052
  200. package/dist/external/tar-fs.js +2769 -3048
  201. package/dist/external/which.js +267 -251
  202. package/dist/external/yargs-parser.js +851 -1074
  203. package/dist/external-tools/bazel/asset-names.js +98 -90
  204. package/dist/external-tools/bazel/from-download.js +52 -46
  205. package/dist/external-tools/bazel/from-path.js +27 -38
  206. package/dist/external-tools/bazel/read-bazel-version-file.js +35 -57
  207. package/dist/external-tools/bazel/resolve-asset-url.js +24 -39
  208. package/dist/external-tools/bazel/resolve-bazel-version.js +34 -56
  209. package/dist/external-tools/bazel/resolve.js +44 -58
  210. package/dist/external-tools/bazel/types.js +1 -17
  211. package/dist/external-tools/cdxgen/asset-names.js +59 -66
  212. package/dist/external-tools/cdxgen/from-download.js +52 -80
  213. package/dist/external-tools/cdxgen/from-path.js +19 -37
  214. package/dist/external-tools/cdxgen/from-vfs.js +22 -43
  215. package/dist/external-tools/cdxgen/resolve.js +48 -63
  216. package/dist/external-tools/cdxgen/types.js +1 -17
  217. package/dist/external-tools/from-download.js +107 -67
  218. package/dist/external-tools/janus/asset-names.js +44 -51
  219. package/dist/external-tools/janus/from-download.js +45 -70
  220. package/dist/external-tools/janus/from-path.js +19 -37
  221. package/dist/external-tools/janus/from-vfs.js +22 -43
  222. package/dist/external-tools/janus/resolve.js +45 -63
  223. package/dist/external-tools/janus/types.js +1 -17
  224. package/dist/external-tools/jre/asset-names.js +109 -82
  225. package/dist/external-tools/jre/detect-platform-arch.js +25 -49
  226. package/dist/external-tools/jre/from-download.js +71 -67
  227. package/dist/external-tools/jre/from-java-home.js +27 -54
  228. package/dist/external-tools/jre/from-path.js +27 -49
  229. package/dist/external-tools/jre/from-vfs.js +39 -60
  230. package/dist/external-tools/jre/resolve.js +55 -68
  231. package/dist/external-tools/jre/types.js +1 -17
  232. package/dist/external-tools/manifest.js +130 -150
  233. package/dist/external-tools/opengrep/asset-names.js +60 -72
  234. package/dist/external-tools/opengrep/from-download.js +58 -80
  235. package/dist/external-tools/opengrep/from-path.js +19 -37
  236. package/dist/external-tools/opengrep/from-vfs.js +23 -43
  237. package/dist/external-tools/opengrep/resolve.js +43 -63
  238. package/dist/external-tools/opengrep/types.js +1 -17
  239. package/dist/external-tools/sbt/asset-names.js +21 -30
  240. package/dist/external-tools/sbt/from-download.js +50 -61
  241. package/dist/external-tools/sbt/from-path.js +23 -38
  242. package/dist/external-tools/sbt/from-vfs.js +30 -44
  243. package/dist/external-tools/sbt/resolve.js +45 -63
  244. package/dist/external-tools/sbt/types.js +1 -17
  245. package/dist/external-tools/synp/asset-names.js +11 -29
  246. package/dist/external-tools/synp/from-download.js +24 -41
  247. package/dist/external-tools/synp/from-path.js +19 -37
  248. package/dist/external-tools/synp/from-vfs.js +22 -43
  249. package/dist/external-tools/synp/resolve.js +43 -62
  250. package/dist/external-tools/synp/types.js +1 -17
  251. package/dist/external-tools/trivy/asset-names.js +51 -62
  252. package/dist/external-tools/trivy/from-download.js +42 -64
  253. package/dist/external-tools/trivy/from-path.js +19 -37
  254. package/dist/external-tools/trivy/from-vfs.js +22 -43
  255. package/dist/external-tools/trivy/resolve.js +43 -63
  256. package/dist/external-tools/trivy/types.js +1 -17
  257. package/dist/external-tools/trufflehog/asset-names.js +54 -66
  258. package/dist/external-tools/trufflehog/from-download.js +44 -62
  259. package/dist/external-tools/trufflehog/from-path.js +21 -37
  260. package/dist/external-tools/trufflehog/from-vfs.js +26 -43
  261. package/dist/external-tools/trufflehog/resolve.js +43 -63
  262. package/dist/external-tools/trufflehog/types.js +1 -17
  263. package/dist/external-tools/uv/asset-names.js +64 -74
  264. package/dist/external-tools/uv/from-download.js +44 -65
  265. package/dist/external-tools/uv/from-path.js +19 -37
  266. package/dist/external-tools/uv/from-vfs.js +22 -43
  267. package/dist/external-tools/uv/resolve.js +42 -63
  268. package/dist/external-tools/uv/types.js +1 -17
  269. package/dist/fs/_internal.js +40 -42
  270. package/dist/fs/access.js +57 -54
  271. package/dist/fs/encoding.js +80 -97
  272. package/dist/fs/find-up.js +126 -125
  273. package/dist/fs/inspect.js +168 -99
  274. package/dist/fs/path-cache.js +31 -32
  275. package/dist/fs/read-dir.js +102 -79
  276. package/dist/fs/read-file.js +177 -118
  277. package/dist/fs/read-json-cache.js +150 -134
  278. package/dist/fs/read-json.js +172 -187
  279. package/dist/fs/resolve-module.js +35 -58
  280. package/dist/fs/safe.js +278 -169
  281. package/dist/fs/types.js +1 -17
  282. package/dist/fs/unique.js +52 -48
  283. package/dist/fs/validate.js +56 -40
  284. package/dist/fs/write-json.js +109 -75
  285. package/dist/git/_internal.js +251 -216
  286. package/dist/git/changed.js +191 -74
  287. package/dist/git/repo.js +118 -104
  288. package/dist/git/staged.js +172 -62
  289. package/dist/git/types.js +1 -17
  290. package/dist/git/unstaged.js +175 -62
  291. package/dist/github/constants.js +25 -33
  292. package/dist/github/errors.js +46 -38
  293. package/dist/github/fetch.js +137 -82
  294. package/dist/github/ghsa.js +217 -151
  295. package/dist/github/refs-cache.js +54 -43
  296. package/dist/github/refs-graphql.js +97 -89
  297. package/dist/github/refs-rest.js +70 -101
  298. package/dist/github/refs.js +105 -64
  299. package/dist/github/token.js +96 -48
  300. package/dist/github/types.js +1 -17
  301. package/dist/globs/_internal.js +73 -82
  302. package/dist/globs/defaults.js +40 -59
  303. package/dist/globs/match.js +93 -77
  304. package/dist/globs/matcher.js +104 -92
  305. package/dist/globs/stream.js +43 -55
  306. package/dist/globs/types.js +1 -17
  307. package/dist/http-request/_internal.js +11 -38
  308. package/dist/http-request/browser-fetch.js +19 -29
  309. package/dist/http-request/browser.js +188 -206
  310. package/dist/http-request/checksums.js +101 -65
  311. package/dist/http-request/download-types.js +1 -17
  312. package/dist/http-request/download.js +195 -196
  313. package/dist/http-request/errors.js +39 -47
  314. package/dist/http-request/headers.js +95 -80
  315. package/dist/http-request/http-request.js +10 -35
  316. package/dist/http-request/node.js +71 -97
  317. package/dist/http-request/request-attempt.js +232 -285
  318. package/dist/http-request/request-types.js +1 -17
  319. package/dist/http-request/request.js +106 -108
  320. package/dist/http-request/response-reader.js +47 -51
  321. package/dist/http-request/response-types.js +22 -38
  322. package/dist/http-request/user-agent.js +73 -55
  323. package/dist/integrity.js +105 -106
  324. package/dist/ipc/_internal.js +34 -48
  325. package/dist/ipc/directory.js +55 -63
  326. package/dist/ipc/paths.js +52 -45
  327. package/dist/ipc/types.js +1 -17
  328. package/dist/ipc/write.js +81 -74
  329. package/dist/ipc-cli/get.js +29 -56
  330. package/dist/ipc-cli/types.js +1 -17
  331. package/dist/json/edit.js +182 -242
  332. package/dist/json/format.js +202 -103
  333. package/dist/json/parse.js +206 -109
  334. package/dist/json/types.js +1 -17
  335. package/dist/links/create.js +93 -60
  336. package/dist/links/types.js +1 -17
  337. package/dist/logger/_internal.js +109 -73
  338. package/dist/logger/browser.js +45 -56
  339. package/dist/logger/colors.js +31 -49
  340. package/dist/logger/console.js +89 -112
  341. package/dist/logger/default.js +19 -33
  342. package/dist/logger/logger.js +5 -29
  343. package/dist/logger/node.js +793 -854
  344. package/dist/logger/symbols-builder.js +54 -56
  345. package/dist/logger/symbols.js +135 -118
  346. package/dist/logger/types.js +1 -17
  347. package/dist/memo/_internal.js +39 -49
  348. package/dist/memo/async.js +133 -117
  349. package/dist/memo/clear.js +25 -34
  350. package/dist/memo/decorator.js +43 -37
  351. package/dist/memo/memoize.js +97 -88
  352. package/dist/memo/once.js +42 -41
  353. package/dist/memo/types.js +1 -17
  354. package/dist/memo/weak.js +45 -41
  355. package/dist/node/async-hooks.js +9 -30
  356. package/dist/node/child-process.js +9 -30
  357. package/dist/node/crypto.js +9 -30
  358. package/dist/node/events.js +9 -30
  359. package/dist/node/fs-promises.js +9 -30
  360. package/dist/node/fs.js +9 -30
  361. package/dist/node/http.js +9 -30
  362. package/dist/node/https.js +9 -30
  363. package/dist/node/module.js +20 -34
  364. package/dist/node/os.js +9 -30
  365. package/dist/node/path.js +9 -30
  366. package/dist/node/timers-promises.js +9 -30
  367. package/dist/node/url.js +9 -30
  368. package/dist/node/util.js +9 -30
  369. package/dist/objects/getters.js +185 -126
  370. package/dist/objects/inspect.js +85 -52
  371. package/dist/objects/mutate.js +96 -76
  372. package/dist/objects/predicates.js +112 -59
  373. package/dist/objects/sort.js +120 -76
  374. package/dist/objects/types.js +1 -17
  375. package/dist/packages/edit-class.js +198 -265
  376. package/dist/packages/edit.js +79 -86
  377. package/dist/packages/exports.js +146 -157
  378. package/dist/packages/isolation.js +159 -209
  379. package/dist/packages/licenses.js +207 -189
  380. package/dist/packages/manifest.js +134 -172
  381. package/dist/packages/normalize.js +91 -102
  382. package/dist/packages/operations.d.ts +2 -0
  383. package/dist/packages/operations.js +283 -254
  384. package/dist/packages/provenance.js +195 -245
  385. package/dist/packages/specs.js +94 -84
  386. package/dist/packages/types.js +1 -17
  387. package/dist/packages/validation.js +49 -50
  388. package/dist/paths/_internal.js +82 -86
  389. package/dist/paths/conversion.js +112 -65
  390. package/dist/paths/dirnames.js +17 -42
  391. package/dist/paths/exts.js +23 -54
  392. package/dist/paths/filenames.js +21 -50
  393. package/dist/paths/globs.js +15 -38
  394. package/dist/paths/normalize.js +215 -236
  395. package/dist/paths/packages.js +34 -49
  396. package/dist/paths/predicates.js +184 -106
  397. package/dist/paths/resolve.js +146 -128
  398. package/dist/paths/rewire.js +108 -72
  399. package/dist/paths/socket.js +252 -132
  400. package/dist/paths/walk.js +55 -60
  401. package/dist/perf/_internal.js +10 -28
  402. package/dist/perf/enabled.js +21 -30
  403. package/dist/perf/metrics.js +81 -67
  404. package/dist/perf/report.js +79 -80
  405. package/dist/perf/timer.js +180 -126
  406. package/dist/perf/types.js +1 -17
  407. package/dist/pkg-ext/data.js +29 -82
  408. package/dist/pkg-ext/types.js +1 -17
  409. package/dist/primordials/array.js +120 -198
  410. package/dist/primordials/buffer.js +28 -51
  411. package/dist/primordials/date.js +26 -51
  412. package/dist/primordials/error.js +33 -59
  413. package/dist/primordials/function.js +21 -41
  414. package/dist/primordials/globals.js +25 -48
  415. package/dist/primordials/json.js +14 -30
  416. package/dist/primordials/map-set.js +88 -152
  417. package/dist/primordials/math.js +59 -116
  418. package/dist/primordials/number.js +41 -76
  419. package/dist/primordials/object.js +56 -116
  420. package/dist/primordials/promise.js +28 -52
  421. package/dist/primordials/reflect.js +24 -52
  422. package/dist/primordials/regexp.js +25 -47
  423. package/dist/primordials/string.js +114 -167
  424. package/dist/primordials/symbol.js +40 -72
  425. package/dist/primordials/uncurry.js +38 -55
  426. package/dist/primordials/url.js +27 -66
  427. package/dist/process/_internal.js +7 -32
  428. package/dist/process/abort.js +29 -35
  429. package/dist/process/lock-instance.js +26 -30
  430. package/dist/process/lock-manager.js +279 -307
  431. package/dist/process/lock-types.js +1 -17
  432. package/dist/process/spawn/_internal.js +43 -55
  433. package/dist/process/spawn/child.js +172 -211
  434. package/dist/process/spawn/errors.js +116 -113
  435. package/dist/process/spawn/stdio.js +51 -35
  436. package/dist/process/spawn/types.js +1 -17
  437. package/dist/process/transient.js +49 -66
  438. package/dist/promises/_internal.js +31 -34
  439. package/dist/promises/iterate.js +238 -102
  440. package/dist/promises/options.js +123 -101
  441. package/dist/promises/queue.js +115 -136
  442. package/dist/promises/resolvers.js +77 -46
  443. package/dist/promises/retry.js +156 -101
  444. package/dist/promises/types.js +1 -17
  445. package/dist/regexps/escape.js +32 -30
  446. package/dist/regexps/hex.js +16 -33
  447. package/dist/regexps/spec.js +53 -81
  448. package/dist/releases/github-archives.js +127 -118
  449. package/dist/releases/github-asset-url.js +162 -146
  450. package/dist/releases/github-assets.js +37 -49
  451. package/dist/releases/github-auth.js +32 -48
  452. package/dist/releases/github-downloads.js +118 -138
  453. package/dist/releases/github-listing.js +175 -145
  454. package/dist/releases/github-retry-config.js +41 -47
  455. package/dist/releases/github-types.js +1 -17
  456. package/dist/releases/socket-btm.js +273 -192
  457. package/dist/schema/parse.js +35 -36
  458. package/dist/schema/types.js +1 -17
  459. package/dist/schema/validate.js +118 -99
  460. package/dist/sea/detect.js +57 -52
  461. package/dist/secrets/_internal.js +86 -67
  462. package/dist/secrets/find.js +96 -77
  463. package/dist/secrets/keychain.js +315 -309
  464. package/dist/secrets/linux.js +133 -135
  465. package/dist/secrets/macos.js +151 -147
  466. package/dist/secrets/rc.js +182 -181
  467. package/dist/secrets/socket-api-token.js +28 -43
  468. package/dist/secrets/types.js +1 -17
  469. package/dist/secrets/windows.js +184 -242
  470. package/dist/shadow/skip.js +51 -70
  471. package/dist/shadow/types.js +1 -17
  472. package/dist/shell/parse.d.ts +26 -0
  473. package/dist/shell/parse.js +35 -0
  474. package/dist/shell/quote.d.ts +19 -0
  475. package/dist/shell/quote.js +30 -0
  476. package/dist/smol/detect.js +67 -43
  477. package/dist/smol/http.js +33 -37
  478. package/dist/smol/https.js +31 -37
  479. package/dist/smol/manifest.js +33 -37
  480. package/dist/smol/path.js +33 -37
  481. package/dist/smol/primordial.js +35 -37
  482. package/dist/smol/purl.js +34 -37
  483. package/dist/smol/versions.js +31 -37
  484. package/dist/smol/vfs.js +46 -38
  485. package/dist/sorts/_internal.js +14 -40
  486. package/dist/sorts/natural.js +57 -64
  487. package/dist/sorts/semver.js +33 -43
  488. package/dist/sorts/strings.js +24 -30
  489. package/dist/sorts/types.js +1 -17
  490. package/dist/spinner/default.js +72 -63
  491. package/dist/spinner/format.js +86 -71
  492. package/dist/spinner/spinner.js +749 -797
  493. package/dist/spinner/types.js +1 -17
  494. package/dist/spinner/with.js +193 -137
  495. package/dist/ssri/convert.js +64 -47
  496. package/dist/ssri/parse.js +38 -37
  497. package/dist/ssri/validate.js +51 -34
  498. package/dist/stdio/_internal.js +50 -46
  499. package/dist/stdio/clear.js +208 -86
  500. package/dist/stdio/divider.js +170 -97
  501. package/dist/stdio/footer.js +116 -110
  502. package/dist/stdio/header.js +117 -90
  503. package/dist/stdio/progress.js +189 -218
  504. package/dist/stdio/prompts.js +244 -168
  505. package/dist/stdio/stderr.js +173 -78
  506. package/dist/stdio/stdout.js +177 -94
  507. package/dist/streams/parallel.js +58 -50
  508. package/dist/streams/transform.js +36 -45
  509. package/dist/strings/format.js +145 -63
  510. package/dist/strings/predicates.js +56 -34
  511. package/dist/strings/search.js +52 -42
  512. package/dist/strings/transform.js +113 -72
  513. package/dist/strings/types.js +1 -17
  514. package/dist/strings/width.js +89 -82
  515. package/dist/tables/bordered.js +81 -81
  516. package/dist/tables/padding.js +36 -46
  517. package/dist/tables/simple.js +62 -70
  518. package/dist/tables/types.js +1 -17
  519. package/dist/temporal/instant.js +72 -81
  520. package/dist/temporal/now.js +40 -31
  521. package/dist/temporal/slots.js +42 -36
  522. package/dist/temporal/system.js +36 -36
  523. package/dist/temporal/temporal.js +11 -41
  524. package/dist/themes/context.js +131 -69
  525. package/dist/themes/resolve.js +207 -132
  526. package/dist/themes/themes.js +225 -194
  527. package/dist/themes/types.js +1 -17
  528. package/dist/url/parse.js +48 -51
  529. package/dist/url/predicates.js +24 -31
  530. package/dist/url/search-params.js +133 -101
  531. package/dist/url/types.js +1 -17
  532. package/dist/versions/_internal.js +31 -33
  533. package/dist/versions/compare.js +80 -58
  534. package/dist/versions/modify.js +41 -39
  535. package/dist/versions/parse.js +88 -64
  536. package/dist/versions/range.js +58 -41
  537. package/dist/versions/types.js +1 -17
  538. package/dist/words/article.js +22 -30
  539. package/dist/words/capitalize.js +25 -34
  540. package/dist/words/pluralize.js +23 -31
  541. package/dist/words/types.js +1 -17
  542. package/package.json +17 -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;