@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
package/dist/fs/safe.js CHANGED
@@ -1,182 +1,291 @@
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 safe_exports = {};
22
- __export(safe_exports, {
23
- getDel: () => getDel,
24
- safeDelete: () => safeDelete,
25
- safeDeleteSync: () => safeDeleteSync,
26
- safeMkdir: () => safeMkdir,
27
- safeMkdirSync: () => safeMkdirSync
28
- });
29
- module.exports = __toCommonJS(safe_exports);
30
- var import_predicates = require("../arrays/predicates");
31
- var import_predicates2 = require("../errors/predicates");
32
- var import_fs = require("../node/fs");
33
- var import_path = require("../node/path");
34
- var import_mutate = require("../objects/mutate");
35
- var import_normalize = require("../paths/normalize");
36
- var import_array = require("../primordials/array");
37
- var import_globals = require("../primordials/globals");
38
- var import_string = require("../primordials/string");
39
- var import_retry = require("../promises/retry");
40
- var import_internal = require("./_internal");
41
- var import_path_cache = require("./path-cache");
42
- const defaultRemoveOptions = (0, import_mutate.objectFreeze)({
43
- __proto__: null,
44
- force: true,
45
- maxRetries: 3,
46
- recursive: true,
47
- retryDelay: 200
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_string = require('../primordials/string.js');
5
+ const require_paths__internal = require('../paths/_internal.js');
6
+ const require_primordials_array = require('../primordials/array.js');
7
+ const require_node_fs = require('../node/fs.js');
8
+ const require_node_path = require('../node/path.js');
9
+ const require_errors_predicates = require('../errors/predicates.js');
10
+ const require_primordials_globals = require('../primordials/globals.js');
11
+ const require_arrays_predicates = require('../arrays/predicates.js');
12
+ const require_objects_mutate = require('../objects/mutate.js');
13
+ const require_promises_retry = require('../promises/retry.js');
14
+ const require_fs__internal = require('./_internal.js');
15
+
16
+ //#region src/fs/safe.ts
17
+ /**
18
+ * @file Safe deletion + idempotent directory creation. The delete helpers gate
19
+ * destructive operations behind an "allowed directories" allow-list (temp
20
+ * dir, cacache dir, ~/.socket); paths outside those need an explicit `force:
21
+ * true`. The mkdir helpers default to `recursive: true` and swallow `EEXIST`
22
+ * so concurrent callers don't race-condition each other.
23
+ */
24
+ const defaultRemoveOptions = require_objects_mutate.objectFreeze({
25
+ __proto__: null,
26
+ force: true,
27
+ maxRetries: 3,
28
+ recursive: true,
29
+ retryDelay: 200
48
30
  });
49
31
  let _del;
50
- // @__NO_SIDE_EFFECTS__
32
+ /* @__NO_SIDE_EFFECTS__ */
51
33
  function getDel() {
52
- if (_del === void 0) {
53
- _del = require("../external/del");
54
- }
55
- return _del;
34
+ if (_del === void 0) _del = /* @__PURE__ */ require("../external/del");
35
+ return _del;
56
36
  }
37
+ /**
38
+ * Safely delete a file or directory asynchronously with built-in protections.
39
+ *
40
+ * Uses [`del`](https://socket.dev/npm/package/del/overview/8.0.1) for safer
41
+ * deletion with these safety features:
42
+ *
43
+ * - By default, prevents deleting the current working directory (cwd) and above
44
+ * - Allows deleting within cwd (descendant paths) without force option
45
+ * - Automatically uses force: true for temp directory, cacache, and ~/.socket
46
+ * subdirectories
47
+ * - Protects against accidental deletion of parent directories via `../` paths
48
+ *
49
+ * @example
50
+ * ;```ts
51
+ * // Delete files within cwd (safe by default)
52
+ * await safeDelete('./build')
53
+ * await safeDelete('./dist')
54
+ *
55
+ * // Delete with glob patterns
56
+ * await safeDelete(['./temp/**', '!./temp/keep.txt'])
57
+ *
58
+ * // Delete with custom retry settings
59
+ * await safeDelete('./flaky-dir', { maxRetries: 5, retryDelay: 500 })
60
+ *
61
+ * // Force delete cwd or above (requires explicit force: true)
62
+ * await safeDelete('../parent-dir', { force: true })
63
+ * ```
64
+ *
65
+ * @param filepath - Path or array of paths to delete (supports glob patterns)
66
+ * @param options - Deletion options including force, retries, and recursion.
67
+ * @param options.force - Set to true to allow deleting cwd and above (use with
68
+ * caution)
69
+ *
70
+ * @throws {Error} When attempting to delete protected paths without force
71
+ * option.
72
+ */
57
73
  async function safeDelete(filepath, options) {
58
- const opts = { __proto__: null, ...options };
59
- const patterns = (0, import_predicates.isArray)(filepath) ? filepath.map(import_normalize.pathLikeToString) : [(0, import_normalize.pathLikeToString)(filepath)];
60
- let shouldForce = opts.force !== false;
61
- if (!shouldForce && patterns.length > 0) {
62
- const path = (0, import_path.getNodePath)();
63
- const allowedDirs = (0, import_internal.getAllowedDirectories)();
64
- const allInAllowedDirs = patterns.every((pattern) => {
65
- const resolvedPath = path.resolve(pattern);
66
- for (const allowedDir of allowedDirs) {
67
- const isInAllowedDir = (0, import_string.StringPrototypeStartsWith)(resolvedPath, allowedDir + path.sep) || resolvedPath === allowedDir;
68
- const relativePath = path.relative(allowedDir, resolvedPath);
69
- const isGoingBackward = (0, import_string.StringPrototypeStartsWith)(relativePath, "..");
70
- if (isInAllowedDir && !isGoingBackward) {
71
- return true;
72
- }
73
- }
74
- return false;
75
- });
76
- if (allInAllowedDirs) {
77
- shouldForce = true;
78
- }
79
- }
80
- const maxRetries = opts.maxRetries ?? defaultRemoveOptions.maxRetries;
81
- const retryDelay = opts.retryDelay ?? defaultRemoveOptions.retryDelay;
82
- const del = /* @__PURE__ */ getDel();
83
- await (0, import_retry.pRetry)(
84
- async () => {
85
- await del.deleteAsync(patterns, {
86
- dryRun: false,
87
- force: shouldForce,
88
- onlyFiles: false
89
- });
90
- },
91
- {
92
- retries: maxRetries,
93
- baseDelayMs: retryDelay,
94
- backoffFactor: 2,
95
- signal: opts.signal
96
- }
97
- );
74
+ const opts = {
75
+ __proto__: null,
76
+ ...options
77
+ };
78
+ const patterns = require_arrays_predicates.isArray(filepath) ? filepath.map(require_paths__internal.pathLikeToString) : [/* @__PURE__ */ require_paths__internal.pathLikeToString(filepath)];
79
+ /* c8 ignore start */
80
+ let shouldForce = opts.force !== false;
81
+ if (!shouldForce && patterns.length > 0) {
82
+ const path = /* @__PURE__ */ require_node_path.getNodePath();
83
+ const allowedDirs = require_fs__internal.getAllowedDirectories();
84
+ if (patterns.every((pattern) => {
85
+ const resolvedPath = path.resolve(pattern);
86
+ for (const allowedDir of allowedDirs) {
87
+ const isInAllowedDir = require_primordials_string.StringPrototypeStartsWith(resolvedPath, allowedDir + path.sep) || resolvedPath === allowedDir;
88
+ const isGoingBackward = require_primordials_string.StringPrototypeStartsWith(path.relative(allowedDir, resolvedPath), "..");
89
+ if (isInAllowedDir && !isGoingBackward) return true;
90
+ }
91
+ return false;
92
+ })) shouldForce = true;
93
+ }
94
+ /* c8 ignore stop */
95
+ const maxRetries = opts.maxRetries ?? defaultRemoveOptions.maxRetries;
96
+ const retryDelay = opts.retryDelay ?? defaultRemoveOptions.retryDelay;
97
+ /* c8 ignore start - External del call */
98
+ const del = /* @__PURE__ */ getDel();
99
+ await /* @__PURE__ */ require_promises_retry.pRetry(async () => {
100
+ await del.deleteAsync(patterns, {
101
+ dryRun: false,
102
+ force: shouldForce,
103
+ onlyFiles: false
104
+ });
105
+ }, {
106
+ retries: maxRetries,
107
+ baseDelayMs: retryDelay,
108
+ backoffFactor: 2,
109
+ signal: opts.signal
110
+ });
111
+ /* c8 ignore stop */
98
112
  }
113
+ /**
114
+ * Safely delete a file or directory synchronously with built-in protections.
115
+ *
116
+ * Uses [`del`](https://socket.dev/npm/package/del/overview/8.0.1) for safer
117
+ * deletion with these safety features:
118
+ *
119
+ * - By default, prevents deleting the current working directory (cwd) and above
120
+ * - Allows deleting within cwd (descendant paths) without force option
121
+ * - Automatically uses force: true for temp directory, cacache, and ~/.socket
122
+ * subdirectories
123
+ * - Protects against accidental deletion of parent directories via `../` paths
124
+ *
125
+ * @example
126
+ * ;```ts
127
+ * // Delete files within cwd (safe by default)
128
+ * safeDeleteSync('./build')
129
+ * safeDeleteSync('./dist')
130
+ *
131
+ * // Delete with glob patterns
132
+ * safeDeleteSync(['./temp/**', '!./temp/keep.txt'])
133
+ *
134
+ * // Delete multiple paths
135
+ * safeDeleteSync(['./coverage', './reports'])
136
+ *
137
+ * // Force delete cwd or above (requires explicit force: true)
138
+ * safeDeleteSync('../parent-dir', { force: true })
139
+ * ```
140
+ *
141
+ * @param filepath - Path or array of paths to delete (supports glob patterns)
142
+ * @param options - Deletion options including force, retries, and recursion.
143
+ * @param options.force - Set to true to allow deleting cwd and above (use with
144
+ * caution)
145
+ *
146
+ * @throws {Error} When attempting to delete protected paths without force
147
+ * option.
148
+ */
99
149
  function safeDeleteSync(filepath, options) {
100
- const opts = { __proto__: null, ...options };
101
- const patterns = (0, import_predicates.isArray)(filepath) ? filepath.map(import_normalize.pathLikeToString) : [(0, import_normalize.pathLikeToString)(filepath)];
102
- let shouldForce = opts.force !== false;
103
- if (!shouldForce && patterns.length > 0) {
104
- const path = (0, import_path.getNodePath)();
105
- const allowedDirs = (0, import_internal.getAllowedDirectories)();
106
- const allInAllowedDirs = patterns.every((pattern) => {
107
- const resolvedPath = path.resolve(pattern);
108
- for (const allowedDir of allowedDirs) {
109
- const isInAllowedDir = (0, import_string.StringPrototypeStartsWith)(resolvedPath, allowedDir + path.sep) || resolvedPath === allowedDir;
110
- const relativePath = path.relative(allowedDir, resolvedPath);
111
- const isGoingBackward = (0, import_string.StringPrototypeStartsWith)(relativePath, "..");
112
- if (isInAllowedDir && !isGoingBackward) {
113
- return true;
114
- }
115
- }
116
- return false;
117
- });
118
- if (allInAllowedDirs) {
119
- shouldForce = true;
120
- }
121
- }
122
- const maxRetries = opts.maxRetries ?? defaultRemoveOptions.maxRetries;
123
- const retryDelay = opts.retryDelay ?? defaultRemoveOptions.retryDelay;
124
- const del = /* @__PURE__ */ getDel();
125
- let lastError;
126
- let delay = retryDelay;
127
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
128
- try {
129
- del.deleteSync(patterns, {
130
- dryRun: false,
131
- force: shouldForce,
132
- onlyFiles: false
133
- });
134
- return;
135
- } catch (e) {
136
- lastError = e;
137
- if (attempt < maxRetries) {
138
- const waitMs = delay;
139
- (0, import_array.AtomicsWait)(
140
- new import_array.Int32ArrayCtor(new import_globals.SharedArrayBufferCtor(4)),
141
- 0,
142
- 0,
143
- waitMs
144
- );
145
- delay *= 2;
146
- }
147
- }
148
- }
149
- if (lastError) {
150
- throw lastError;
151
- }
150
+ const opts = {
151
+ __proto__: null,
152
+ ...options
153
+ };
154
+ const patterns = require_arrays_predicates.isArray(filepath) ? filepath.map(require_paths__internal.pathLikeToString) : [/* @__PURE__ */ require_paths__internal.pathLikeToString(filepath)];
155
+ /* c8 ignore start */
156
+ let shouldForce = opts.force !== false;
157
+ if (!shouldForce && patterns.length > 0) {
158
+ const path = /* @__PURE__ */ require_node_path.getNodePath();
159
+ const allowedDirs = require_fs__internal.getAllowedDirectories();
160
+ if (patterns.every((pattern) => {
161
+ const resolvedPath = path.resolve(pattern);
162
+ for (const allowedDir of allowedDirs) {
163
+ const isInAllowedDir = require_primordials_string.StringPrototypeStartsWith(resolvedPath, allowedDir + path.sep) || resolvedPath === allowedDir;
164
+ const isGoingBackward = require_primordials_string.StringPrototypeStartsWith(path.relative(allowedDir, resolvedPath), "..");
165
+ if (isInAllowedDir && !isGoingBackward) return true;
166
+ }
167
+ return false;
168
+ })) shouldForce = true;
169
+ }
170
+ /* c8 ignore stop */
171
+ const maxRetries = opts.maxRetries ?? defaultRemoveOptions.maxRetries;
172
+ const retryDelay = opts.retryDelay ?? defaultRemoveOptions.retryDelay;
173
+ /* c8 ignore start - External del call */
174
+ const del = /* @__PURE__ */ getDel();
175
+ let lastError;
176
+ let delay = retryDelay;
177
+ for (let attempt = 0; attempt <= maxRetries; attempt++) try {
178
+ del.deleteSync(patterns, {
179
+ dryRun: false,
180
+ force: shouldForce,
181
+ onlyFiles: false
182
+ });
183
+ return;
184
+ } catch (e) {
185
+ lastError = e;
186
+ if (attempt < maxRetries) {
187
+ const waitMs = delay;
188
+ require_primordials_array.AtomicsWait(new require_primordials_array.Int32ArrayCtor(new require_primordials_globals.SharedArrayBufferCtor(4)), 0, 0, waitMs);
189
+ delay *= 2;
190
+ }
191
+ }
192
+ if (lastError) throw lastError;
193
+ /* c8 ignore stop */
152
194
  }
195
+ /**
196
+ * Safely create a directory asynchronously, ignoring EEXIST errors. This
197
+ * function wraps fs.promises.mkdir and handles the race condition where the
198
+ * directory might already exist, which is common in concurrent code.
199
+ *
200
+ * Unlike fs.promises.mkdir with recursive:true, this function: - Silently
201
+ * ignores EEXIST errors (directory already exists) - Re-throws all other errors
202
+ * (permissions, invalid path, etc.) - Works reliably in
203
+ * multi-process/concurrent scenarios - Defaults to recursive: true for
204
+ * convenient nested directory creation.
205
+ *
206
+ * @example
207
+ * ;```ts
208
+ * // Create a directory recursively by default, no error if it exists
209
+ * await safeMkdir('./config')
210
+ *
211
+ * // Create nested directories (recursive: true is the default)
212
+ * await safeMkdir('./data/cache/temp')
213
+ *
214
+ * // Create with specific permissions
215
+ * await safeMkdir('./secure', { mode: 0o700 })
216
+ *
217
+ * // Explicitly disable recursive behavior
218
+ * await safeMkdir('./single-level', { recursive: false })
219
+ * ```
220
+ *
221
+ * @param path - Directory path to create.
222
+ * @param options - Options including recursive (default: true) and mode
223
+ * settings.
224
+ *
225
+ * @returns Promise that resolves when directory is created or already exists
226
+ */
153
227
  async function safeMkdir(path, options) {
154
- const fs = (0, import_fs.getNodeFs)();
155
- const opts = { __proto__: null, recursive: true, ...options };
156
- try {
157
- await fs.promises.mkdir(path, opts);
158
- } catch (e) {
159
- if (!(0, import_predicates2.isErrnoException)(e) || e.code !== "EEXIST") {
160
- throw e;
161
- }
162
- }
228
+ const fs = /* @__PURE__ */ require_node_fs.getNodeFs();
229
+ const opts = {
230
+ __proto__: null,
231
+ recursive: true,
232
+ ...options
233
+ };
234
+ try {
235
+ await fs.promises.mkdir(path, opts);
236
+ } catch (e) {
237
+ if (!require_errors_predicates.isErrnoException(e) || e.code !== "EEXIST") throw e;
238
+ }
239
+ /* c8 ignore stop */
163
240
  }
241
+ /**
242
+ * Safely create a directory synchronously, ignoring EEXIST errors. This
243
+ * function wraps fs.mkdirSync and handles the race condition where the
244
+ * directory might already exist, which is common in concurrent code.
245
+ *
246
+ * Unlike fs.mkdirSync with recursive:true, this function: - Silently ignores
247
+ * EEXIST errors (directory already exists) - Re-throws all other errors
248
+ * (permissions, invalid path, etc.) - Works reliably in
249
+ * multi-process/concurrent scenarios - Defaults to recursive: true for
250
+ * convenient nested directory creation.
251
+ *
252
+ * @example
253
+ * ;```ts
254
+ * // Create a directory recursively by default, no error if it exists
255
+ * safeMkdirSync('./config')
256
+ *
257
+ * // Create nested directories (recursive: true is the default)
258
+ * safeMkdirSync('./data/cache/temp')
259
+ *
260
+ * // Create with specific permissions
261
+ * safeMkdirSync('./secure', { mode: 0o700 })
262
+ *
263
+ * // Explicitly disable recursive behavior
264
+ * safeMkdirSync('./single-level', { recursive: false })
265
+ * ```
266
+ *
267
+ * @param path - Directory path to create.
268
+ * @param options - Options including recursive (default: true) and mode
269
+ * settings.
270
+ */
164
271
  function safeMkdirSync(path, options) {
165
- const fs = (0, import_fs.getNodeFs)();
166
- const opts = { __proto__: null, recursive: true, ...options };
167
- try {
168
- fs.mkdirSync(path, opts);
169
- } catch (e) {
170
- if (!(0, import_predicates2.isErrnoException)(e) || e.code !== "EEXIST") {
171
- throw e;
172
- }
173
- }
272
+ const fs = /* @__PURE__ */ require_node_fs.getNodeFs();
273
+ const opts = {
274
+ __proto__: null,
275
+ recursive: true,
276
+ ...options
277
+ };
278
+ try {
279
+ fs.mkdirSync(path, opts);
280
+ } catch (e) {
281
+ if (!require_errors_predicates.isErrnoException(e) || e.code !== "EEXIST") throw e;
282
+ }
283
+ /* c8 ignore stop */
174
284
  }
175
- // Annotate the CommonJS export names for ESM import in node:
176
- 0 && (module.exports = {
177
- getDel,
178
- safeDelete,
179
- safeDeleteSync,
180
- safeMkdir,
181
- safeMkdirSync
182
- });
285
+
286
+ //#endregion
287
+ exports.getDel = getDel;
288
+ exports.safeDelete = safeDelete;
289
+ exports.safeDeleteSync = safeDeleteSync;
290
+ exports.safeMkdir = safeMkdir;
291
+ exports.safeMkdirSync = safeMkdirSync;
package/dist/fs/types.js CHANGED
@@ -1,18 +1,2 @@
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 __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (let key of __getOwnPropNames(from))
11
- if (!__hasOwnProp.call(to, key) && key !== except)
12
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
- }
14
- return to;
15
- };
16
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
17
- var types_exports = {};
18
- module.exports = __toCommonJS(types_exports);
2
+ /* Socket Lib - Built with rolldown */
package/dist/fs/unique.js CHANGED
@@ -1,51 +1,55 @@
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 unique_exports = {};
22
- __export(unique_exports, {
23
- uniqueSync: () => uniqueSync
24
- });
25
- module.exports = __toCommonJS(unique_exports);
26
- var import_fs = require("../node/fs");
27
- var import_path = require("../node/path");
28
- var import_normalize = require("../paths/normalize");
29
- // @__NO_SIDE_EFFECTS__
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_paths_normalize = require('../paths/normalize.js');
5
+ const require_node_fs = require('../node/fs.js');
6
+ const require_node_path = require('../node/path.js');
7
+
8
+ //#region src/fs/unique.ts
9
+ /**
10
+ * @file Generate a unique filepath by appending `-1`, `-2`, … before the
11
+ * extension until the path is free. Useful for "save next to existing" flows
12
+ * where overwriting silently would be wrong (PDF reports, exports, etc.).
13
+ */
14
+ /**
15
+ * Generate a unique filepath by adding number suffix if the path exists.
16
+ * Appends `-1`, `-2`, etc. before the file extension until a non-existent path
17
+ * is found. Useful for creating files without overwriting existing ones.
18
+ *
19
+ * @example
20
+ * ;```ts
21
+ * // If 'report.pdf' exists, returns 'report-1.pdf'
22
+ * const uniquePath = uniqueSync('./report.pdf')
23
+ *
24
+ * // If 'data.json' and 'data-1.json' exist, returns 'data-2.json'
25
+ * const path = uniqueSync('./data.json')
26
+ *
27
+ * // If 'backup' doesn't exist, returns 'backup' unchanged
28
+ * const backupPath = uniqueSync('./backup')
29
+ * ```
30
+ *
31
+ * @param filepath - Desired file path.
32
+ *
33
+ * @returns Normalized unique filepath (original if it doesn't exist, or with
34
+ * number suffix)
35
+ */
36
+ /* @__NO_SIDE_EFFECTS__ */
30
37
  function uniqueSync(filepath) {
31
- const fs = (0, import_fs.getNodeFs)();
32
- const path = (0, import_path.getNodePath)();
33
- const filepathStr = String(filepath);
34
- if (!fs.existsSync(filepathStr)) {
35
- return (0, import_normalize.normalizePath)(filepathStr);
36
- }
37
- const dirname = path.dirname(filepathStr);
38
- const ext = path.extname(filepathStr);
39
- const basename = path.basename(filepathStr, ext);
40
- let counter = 1;
41
- let uniquePath;
42
- do {
43
- uniquePath = path.join(dirname, `${basename}-${counter}${ext}`);
44
- counter++;
45
- } while (fs.existsSync(uniquePath));
46
- return (0, import_normalize.normalizePath)(uniquePath);
38
+ const fs = /* @__PURE__ */ require_node_fs.getNodeFs();
39
+ const path = /* @__PURE__ */ require_node_path.getNodePath();
40
+ const filepathStr = String(filepath);
41
+ if (!fs.existsSync(filepathStr)) return /* @__PURE__ */ require_paths_normalize.normalizePath(filepathStr);
42
+ const dirname = path.dirname(filepathStr);
43
+ const ext = path.extname(filepathStr);
44
+ const basename = path.basename(filepathStr, ext);
45
+ let counter = 1;
46
+ let uniquePath;
47
+ do {
48
+ uniquePath = path.join(dirname, `${basename}-${counter}${ext}`);
49
+ counter++;
50
+ } while (fs.existsSync(uniquePath));
51
+ return /* @__PURE__ */ require_paths_normalize.normalizePath(uniquePath);
47
52
  }
48
- // Annotate the CommonJS export names for ESM import in node:
49
- 0 && (module.exports = {
50
- uniqueSync
51
- });
53
+
54
+ //#endregion
55
+ exports.uniqueSync = uniqueSync;