@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,328 +1,334 @@
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 keychain_exports = {};
22
- __export(keychain_exports, {
23
- clearCache: () => clearCache,
24
- deleteSecret: () => deleteSecret,
25
- deleteSecretFromSlots: () => deleteSecretFromSlots,
26
- deleteSecretFromSlotsSync: () => deleteSecretFromSlotsSync,
27
- deleteSecretSync: () => deleteSecretSync,
28
- detectPlatform: () => detectPlatform,
29
- getBackendAvailability: () => getBackendAvailability,
30
- readSecret: () => readSecret,
31
- readSecretFromSlots: () => readSecretFromSlots,
32
- readSecretFromSlotsSync: () => readSecretFromSlotsSync,
33
- readSecretSync: () => readSecretSync,
34
- writeSecret: () => writeSecret,
35
- writeSecretSync: () => writeSecretSync,
36
- writeSecretToSlots: () => writeSecretToSlots,
37
- writeSecretToSlotsSync: () => writeSecretToSlotsSync
38
- });
39
- module.exports = __toCommonJS(keychain_exports);
40
- var import_node_os = require("node:os");
41
- var import_internal = require("./_internal");
42
- var import_macos = require("./macos");
43
- var import_linux = require("./linux");
44
- var import_windows = require("./windows");
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_secrets__internal = require('./_internal.js');
5
+ const require_secrets_macos = require('./macos.js');
6
+ const require_secrets_linux = require('./linux.js');
7
+ const require_secrets_windows = require('./windows.js');
8
+ let node_os = require("node:os");
9
+
10
+ //#region src/secrets/keychain.ts
11
+ /**
12
+ * @file Cross-platform secret-storage helper. Reads / writes to the native OS
13
+ * credential store (Keychain on macOS, Secret Service via libsecret on Linux,
14
+ * Credential Manager + DPAPI on Windows). Consumers pick their own `{
15
+ * service, account }` pair. API shape: readSecret({ service, account })
16
+ * Promise<string | undefined> readSecretSync({ service, account }) string |
17
+ * undefined writeSecret({ service, account, value }) → Promise<void>
18
+ * writeSecretSync({ service, account, value }) → void deleteSecret({ service,
19
+ * account }) → Promise<'removed' | 'absent'> deleteSecretSync({ service,
20
+ * account }) 'removed' | 'absent' Multi-slot helpers exist for the common
21
+ * case of writing the same value under multiple account names (e.g.
22
+ * SOCKET_API_TOKEN + SOCKET_API_KEY for backwards compatibility):
23
+ * readSecretFromSlots({ service, accounts }) writeSecretToSlots({ service,
24
+ * accounts, value }) deleteSecretFromSlots({ service, accounts }) IMPORTANT:
25
+ * do NOT invoke these helpers from a shell rc / .zshenv file (or any other
26
+ * always-on-startup hook). On macOS each call triggers a Keychain auth
27
+ * prompt; piling that into per-shell startup floods the user with prompts.
28
+ * Use `write` from `./rc` to write a one-time literal `export` block into the
29
+ * user's shell rc file instead. (Incident memory: socket-cli session
30
+ * 2026-05-15.)
31
+ */
32
+ /**
33
+ * Drop the in-process read cache. Tests use this between cases to force a fresh
34
+ * OS call; production code generally doesn't need it (process exit drops the
35
+ * cache anyway, and `writeSecret` / `deleteSecret` already invalidate per-key
36
+ * entries automatically).
37
+ */
45
38
  function clearCache() {
46
- (0, import_internal.invalidateAll)();
39
+ require_secrets__internal.invalidateAll();
47
40
  }
48
- async function deleteSecret({
49
- service,
50
- account
51
- }) {
52
- let outcome;
53
- switch (detectPlatform()) {
54
- case "darwin":
55
- outcome = await (0, import_macos.deleteMacOS)(service, account);
56
- break;
57
- case "linux":
58
- outcome = await (0, import_linux.deleteLinux)(service, account);
59
- break;
60
- case "win32":
61
- outcome = await (0, import_windows.deleteWindows)(service, account);
62
- break;
63
- default:
64
- outcome = "absent";
65
- }
66
- (0, import_internal.invalidate)(service, account);
67
- return outcome;
41
+ /**
42
+ * Remove a secret from the OS credential store. Idempotent — succeeds whether
43
+ * the entry exists or not. Returns the per-slot outcome so callers can log
44
+ * "actually removed X" vs "X was already absent."
45
+ */
46
+ async function deleteSecret({ service, account }) {
47
+ let outcome;
48
+ switch (detectPlatform()) {
49
+ case "darwin":
50
+ outcome = await require_secrets_macos.deleteMacOS(service, account);
51
+ break;
52
+ case "linux":
53
+ outcome = await require_secrets_linux.deleteLinux(service, account);
54
+ break;
55
+ case "win32":
56
+ outcome = await require_secrets_windows.deleteWindows(service, account);
57
+ break;
58
+ default: outcome = "absent";
59
+ }
60
+ require_secrets__internal.invalidate(service, account);
61
+ return outcome;
68
62
  }
69
- async function deleteSecretFromSlots({
70
- service,
71
- accounts
72
- }) {
73
- const results = [];
74
- for (const account of accounts) {
75
- const outcome = await deleteSecret({ service, account });
76
- results.push({ account, outcome });
77
- }
78
- return results;
63
+ async function deleteSecretFromSlots({ service, accounts }) {
64
+ const results = [];
65
+ for (const account of accounts) {
66
+ const outcome = await deleteSecret({
67
+ service,
68
+ account
69
+ });
70
+ results.push({
71
+ account,
72
+ outcome
73
+ });
74
+ }
75
+ return results;
79
76
  }
80
- function deleteSecretFromSlotsSync({
81
- service,
82
- accounts
83
- }) {
84
- const results = [];
85
- for (const account of accounts) {
86
- const outcome = deleteSecretSync({ service, account });
87
- results.push({ account, outcome });
88
- }
89
- return results;
77
+ function deleteSecretFromSlotsSync({ service, accounts }) {
78
+ const results = [];
79
+ for (const account of accounts) {
80
+ const outcome = deleteSecretSync({
81
+ service,
82
+ account
83
+ });
84
+ results.push({
85
+ account,
86
+ outcome
87
+ });
88
+ }
89
+ return results;
90
90
  }
91
- function deleteSecretSync({
92
- service,
93
- account
94
- }) {
95
- let outcome;
96
- switch (detectPlatform()) {
97
- case "darwin":
98
- outcome = (0, import_macos.deleteMacOSSync)(service, account);
99
- break;
100
- case "linux":
101
- outcome = (0, import_linux.deleteLinuxSync)(service, account);
102
- break;
103
- case "win32":
104
- outcome = (0, import_windows.deleteWindowsSync)(service, account);
105
- break;
106
- default:
107
- outcome = "absent";
108
- }
109
- (0, import_internal.invalidate)(service, account);
110
- return outcome;
91
+ function deleteSecretSync({ service, account }) {
92
+ let outcome;
93
+ switch (detectPlatform()) {
94
+ case "darwin":
95
+ outcome = require_secrets_macos.deleteMacOSSync(service, account);
96
+ break;
97
+ case "linux":
98
+ outcome = require_secrets_linux.deleteLinuxSync(service, account);
99
+ break;
100
+ case "win32":
101
+ outcome = require_secrets_windows.deleteWindowsSync(service, account);
102
+ break;
103
+ default: outcome = "absent";
104
+ }
105
+ require_secrets__internal.invalidate(service, account);
106
+ return outcome;
111
107
  }
108
+ /**
109
+ * Resolve the current OS to one of our four backend categories.
110
+ *
111
+ * Exported only because the fleet's `export-top-level-functions` lint rule
112
+ * requires top-level functions to be exported for testability. Not part of the
113
+ * public `secrets/keychain` API surface — consumers should call `readSecret` /
114
+ * `writeSecret` / `getBackendAvailability` instead, which handle the dispatch
115
+ * internally.
116
+ *
117
+ * @internal
118
+ */
112
119
  function detectPlatform() {
113
- const p = (0, import_node_os.platform)();
114
- if (p === "darwin" || p === "linux" || p === "win32") {
115
- return p;
116
- }
117
- return "other";
120
+ const p = (0, node_os.platform)();
121
+ if (p === "darwin" || p === "linux" || p === "win32") return p;
122
+ return "other";
118
123
  }
124
+ /**
125
+ * Diagnostic: tell the operator whether the OS credential backend is reachable.
126
+ * Used by installers to report up-front (before any prompt fires) when
127
+ * libsecret-tools or the CredentialManager module aren't installed.
128
+ */
119
129
  function getBackendAvailability() {
120
- const platform_ = detectPlatform();
121
- switch (platform_) {
122
- case "darwin": {
123
- return {
124
- available: (0, import_macos.isMacOSBackendAvailable)(),
125
- toolName: "security(1)",
126
- installHint: void 0
127
- };
128
- }
129
- case "linux": {
130
- const available = (0, import_linux.isLinuxBackendAvailable)();
131
- return {
132
- available,
133
- toolName: "secret-tool",
134
- installHint: available ? void 0 : "apt install libsecret-tools (Debian/Ubuntu) | dnf install libsecret (Fedora/RHEL)"
135
- };
136
- }
137
- case "win32": {
138
- return {
139
- available: (0, import_windows.isWindowsBackendAvailable)(),
140
- toolName: "PowerShell (CredentialManager / DPAPI)",
141
- installHint: void 0
142
- };
143
- }
144
- default:
145
- return {
146
- available: false,
147
- toolName: "n/a",
148
- installHint: `Platform ${(0, import_node_os.platform)()} is not supported.`
149
- };
150
- }
130
+ switch (detectPlatform()) {
131
+ case "darwin": return {
132
+ available: require_secrets_macos.isMacOSBackendAvailable(),
133
+ toolName: "security(1)",
134
+ installHint: void 0
135
+ };
136
+ case "linux": {
137
+ const available = require_secrets_linux.isLinuxBackendAvailable();
138
+ return {
139
+ available,
140
+ toolName: "secret-tool",
141
+ installHint: available ? void 0 : "apt install libsecret-tools (Debian/Ubuntu) | dnf install libsecret (Fedora/RHEL)"
142
+ };
143
+ }
144
+ case "win32": return {
145
+ available: require_secrets_windows.isWindowsBackendAvailable(),
146
+ toolName: "PowerShell (CredentialManager / DPAPI)",
147
+ installHint: void 0
148
+ };
149
+ default: return {
150
+ available: false,
151
+ toolName: "n/a",
152
+ installHint: `Platform ${(0, node_os.platform)()} is not supported.`
153
+ };
154
+ }
151
155
  }
152
- async function readSecret({
153
- service,
154
- account
155
- }) {
156
- return (0, import_internal.dedupeRead)(service, account, async () => {
157
- switch (detectPlatform()) {
158
- case "darwin":
159
- return (0, import_macos.readMacOS)(service, account);
160
- case "linux":
161
- return (0, import_linux.readLinux)(service, account);
162
- case "win32":
163
- return (0, import_windows.readWindows)(service, account);
164
- default:
165
- return void 0;
166
- }
167
- });
156
+ /**
157
+ * Read a single secret value from the OS credential store. Returns `undefined`
158
+ * when the entry doesn't exist OR when the backend tool isn't available — read
159
+ * paths never throw, so callers can fall through to env / .env / prompt
160
+ * cleanly.
161
+ */
162
+ async function readSecret({ service, account }) {
163
+ return require_secrets__internal.dedupeRead(service, account, async () => {
164
+ switch (detectPlatform()) {
165
+ case "darwin": return require_secrets_macos.readMacOS(service, account);
166
+ case "linux": return require_secrets_linux.readLinux(service, account);
167
+ case "win32": return require_secrets_windows.readWindows(service, account);
168
+ default: return;
169
+ }
170
+ });
168
171
  }
169
- async function readSecretFromSlots({
170
- service,
171
- accounts
172
- }) {
173
- for (const account of accounts) {
174
- const value = await readSecret({ service, account });
175
- if (value) {
176
- return { value, account };
177
- }
178
- }
179
- return void 0;
172
+ /**
173
+ * Read from the first matching account. Used when multiple env-var names map to
174
+ * the same logical secret (e.g. SOCKET_API_TOKEN canonical + SOCKET_API_KEY
175
+ * legacy). Returns the value AND the account it came from so callers can warn
176
+ * on legacy hits.
177
+ */
178
+ async function readSecretFromSlots({ service, accounts }) {
179
+ for (const account of accounts) {
180
+ const value = await readSecret({
181
+ service,
182
+ account
183
+ });
184
+ if (value) return {
185
+ value,
186
+ account
187
+ };
188
+ }
180
189
  }
181
- function readSecretFromSlotsSync({
182
- service,
183
- accounts
184
- }) {
185
- for (const account of accounts) {
186
- const value = readSecretSync({ service, account });
187
- if (value) {
188
- return { value, account };
189
- }
190
- }
191
- return void 0;
190
+ function readSecretFromSlotsSync({ service, accounts }) {
191
+ for (const account of accounts) {
192
+ const value = readSecretSync({
193
+ service,
194
+ account
195
+ });
196
+ if (value) return {
197
+ value,
198
+ account
199
+ };
200
+ }
192
201
  }
193
- function readSecretSync({
194
- service,
195
- account
196
- }) {
197
- if ((0, import_internal.has)(service, account)) {
198
- return (0, import_internal.getCached)(service, account);
199
- }
200
- let value;
201
- switch (detectPlatform()) {
202
- case "darwin":
203
- value = (0, import_macos.readMacOSSync)(service, account);
204
- break;
205
- case "linux":
206
- value = (0, import_linux.readLinuxSync)(service, account);
207
- break;
208
- case "win32":
209
- value = (0, import_windows.readWindowsSync)(service, account);
210
- break;
211
- default:
212
- value = void 0;
213
- }
214
- (0, import_internal.setCached)(service, account, value);
215
- return value;
202
+ function readSecretSync({ service, account }) {
203
+ if (require_secrets__internal.has(service, account)) return require_secrets__internal.getCached(service, account);
204
+ let value;
205
+ switch (detectPlatform()) {
206
+ case "darwin":
207
+ value = require_secrets_macos.readMacOSSync(service, account);
208
+ break;
209
+ case "linux":
210
+ value = require_secrets_linux.readLinuxSync(service, account);
211
+ break;
212
+ case "win32":
213
+ value = require_secrets_windows.readWindowsSync(service, account);
214
+ break;
215
+ default: value = void 0;
216
+ }
217
+ require_secrets__internal.setCached(service, account, value);
218
+ return value;
216
219
  }
217
- async function writeSecret({
218
- service,
219
- account,
220
- value,
221
- label
222
- }) {
223
- if (!value || typeof value !== "string") {
224
- throw new TypeError("writeSecret: value must be a non-empty string");
225
- }
226
- const platform_ = detectPlatform();
227
- if (platform_ === "other") {
228
- throw new Error(
229
- `Unsupported platform: ${(0, import_node_os.platform)()}. Secret storage requires macOS, Linux, or Windows.`
230
- );
231
- }
232
- const current = await readSecret({ service, account });
233
- if (current === value) {
234
- return "unchanged";
235
- }
236
- const lbl = label ?? `${service} credential`;
237
- switch (platform_) {
238
- case "darwin":
239
- await (0, import_macos.writeMacOS)(service, account, value, lbl);
240
- break;
241
- case "linux":
242
- await (0, import_linux.writeLinux)(service, account, value, lbl);
243
- break;
244
- case "win32":
245
- await (0, import_windows.writeWindows)(service, account, value, lbl);
246
- break;
247
- }
248
- (0, import_internal.setCached)(service, account, value);
249
- return "written";
220
+ /**
221
+ * Persist a single secret to the OS credential store. Throws on write failure —
222
+ * the caller is in a setup flow and should see why persistence failed, not
223
+ * silently continue.
224
+ *
225
+ * Returns the outcome: - `'written'` — value persisted (entry was absent or
226
+ * differed). - `'unchanged'` — current stored value already matches; no OS
227
+ * write performed. Useful for idempotent flows (re-running an installer
228
+ * shouldn't show "rewrote N secrets" when nothing actually changed).
229
+ */
230
+ async function writeSecret({ service, account, value, label }) {
231
+ if (!value || typeof value !== "string") throw new TypeError("writeSecret: value must be a non-empty string");
232
+ const platform_ = detectPlatform();
233
+ if (platform_ === "other") throw new Error(`Unsupported platform: ${(0, node_os.platform)()}. Secret storage requires macOS, Linux, or Windows.`);
234
+ if (await readSecret({
235
+ service,
236
+ account
237
+ }) === value) return "unchanged";
238
+ const lbl = label ?? `${service} credential`;
239
+ switch (platform_) {
240
+ case "darwin":
241
+ await require_secrets_macos.writeMacOS(service, account, value, lbl);
242
+ break;
243
+ case "linux":
244
+ await require_secrets_linux.writeLinux(service, account, value, lbl);
245
+ break;
246
+ case "win32":
247
+ await require_secrets_windows.writeWindows(service, account, value, lbl);
248
+ break;
249
+ }
250
+ require_secrets__internal.setCached(service, account, value);
251
+ return "written";
250
252
  }
251
- function writeSecretSync({
252
- service,
253
- account,
254
- value,
255
- label
256
- }) {
257
- if (!value || typeof value !== "string") {
258
- throw new TypeError("writeSecret: value must be a non-empty string");
259
- }
260
- const platform_ = detectPlatform();
261
- if (platform_ === "other") {
262
- throw new Error(
263
- `Unsupported platform: ${(0, import_node_os.platform)()}. Secret storage requires macOS, Linux, or Windows.`
264
- );
265
- }
266
- const current = readSecretSync({ service, account });
267
- if (current === value) {
268
- return "unchanged";
269
- }
270
- const lbl = label ?? `${service} credential`;
271
- switch (platform_) {
272
- case "darwin":
273
- (0, import_macos.writeMacOSSync)(service, account, value, lbl);
274
- break;
275
- case "linux":
276
- (0, import_linux.writeLinuxSync)(service, account, value, lbl);
277
- break;
278
- case "win32":
279
- (0, import_windows.writeWindowsSync)(service, account, value, lbl);
280
- break;
281
- }
282
- (0, import_internal.setCached)(service, account, value);
283
- return "written";
253
+ function writeSecretSync({ service, account, value, label }) {
254
+ if (!value || typeof value !== "string") throw new TypeError("writeSecret: value must be a non-empty string");
255
+ const platform_ = detectPlatform();
256
+ if (platform_ === "other") throw new Error(`Unsupported platform: ${(0, node_os.platform)()}. Secret storage requires macOS, Linux, or Windows.`);
257
+ if (readSecretSync({
258
+ service,
259
+ account
260
+ }) === value) return "unchanged";
261
+ const lbl = label ?? `${service} credential`;
262
+ switch (platform_) {
263
+ case "darwin":
264
+ require_secrets_macos.writeMacOSSync(service, account, value, lbl);
265
+ break;
266
+ case "linux":
267
+ require_secrets_linux.writeLinuxSync(service, account, value, lbl);
268
+ break;
269
+ case "win32":
270
+ require_secrets_windows.writeWindowsSync(service, account, value, lbl);
271
+ break;
272
+ }
273
+ require_secrets__internal.setCached(service, account, value);
274
+ return "written";
284
275
  }
285
- async function writeSecretToSlots({
286
- service,
287
- accounts,
288
- value,
289
- label
290
- }) {
291
- const results = [];
292
- for (const account of accounts) {
293
- const outcome = await writeSecret({ service, account, value, label });
294
- results.push({ account, outcome });
295
- }
296
- return results;
276
+ /**
277
+ * Persist the same value under each account name in `accounts`. Useful when a
278
+ * value needs to be reachable under several env-var names (legacy aliases,
279
+ * sibling tools). Each slot gets its own keychain entry — they all hold the
280
+ * same string.
281
+ *
282
+ * If any individual write throws, prior writes have already persisted. Failures
283
+ * aren't rolled back (the half-state is at worst a stale legacy alias, which
284
+ * the next successful write cleans up).
285
+ */
286
+ async function writeSecretToSlots({ service, accounts, value, label }) {
287
+ const results = [];
288
+ for (const account of accounts) {
289
+ const outcome = await writeSecret({
290
+ service,
291
+ account,
292
+ value,
293
+ label
294
+ });
295
+ results.push({
296
+ account,
297
+ outcome
298
+ });
299
+ }
300
+ return results;
297
301
  }
298
- function writeSecretToSlotsSync({
299
- service,
300
- accounts,
301
- value,
302
- label
303
- }) {
304
- const results = [];
305
- for (const account of accounts) {
306
- const outcome = writeSecretSync({ service, account, value, label });
307
- results.push({ account, outcome });
308
- }
309
- return results;
302
+ function writeSecretToSlotsSync({ service, accounts, value, label }) {
303
+ const results = [];
304
+ for (const account of accounts) {
305
+ const outcome = writeSecretSync({
306
+ service,
307
+ account,
308
+ value,
309
+ label
310
+ });
311
+ results.push({
312
+ account,
313
+ outcome
314
+ });
315
+ }
316
+ return results;
310
317
  }
311
- // Annotate the CommonJS export names for ESM import in node:
312
- 0 && (module.exports = {
313
- clearCache,
314
- deleteSecret,
315
- deleteSecretFromSlots,
316
- deleteSecretFromSlotsSync,
317
- deleteSecretSync,
318
- detectPlatform,
319
- getBackendAvailability,
320
- readSecret,
321
- readSecretFromSlots,
322
- readSecretFromSlotsSync,
323
- readSecretSync,
324
- writeSecret,
325
- writeSecretSync,
326
- writeSecretToSlots,
327
- writeSecretToSlotsSync
328
- });
318
+
319
+ //#endregion
320
+ exports.clearCache = clearCache;
321
+ exports.deleteSecret = deleteSecret;
322
+ exports.deleteSecretFromSlots = deleteSecretFromSlots;
323
+ exports.deleteSecretFromSlotsSync = deleteSecretFromSlotsSync;
324
+ exports.deleteSecretSync = deleteSecretSync;
325
+ exports.detectPlatform = detectPlatform;
326
+ exports.getBackendAvailability = getBackendAvailability;
327
+ exports.readSecret = readSecret;
328
+ exports.readSecretFromSlots = readSecretFromSlots;
329
+ exports.readSecretFromSlotsSync = readSecretFromSlotsSync;
330
+ exports.readSecretSync = readSecretSync;
331
+ exports.writeSecret = writeSecret;
332
+ exports.writeSecretSync = writeSecretSync;
333
+ exports.writeSecretToSlots = writeSecretToSlots;
334
+ exports.writeSecretToSlotsSync = writeSecretToSlotsSync;