@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,83 +1,200 @@
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 changed_exports = {};
22
- __export(changed_exports, {
23
- getChangedFiles: () => getChangedFiles,
24
- getChangedFilesSync: () => getChangedFilesSync,
25
- isChanged: () => isChanged,
26
- isChangedSync: () => isChangedSync
27
- });
28
- module.exports = __toCommonJS(changed_exports);
29
- var import_normalize = require("../paths/normalize");
30
- var import_array = require("../primordials/array");
31
- var import_internal = require("./_internal");
32
- var import_repo = require("./repo");
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_primordials_array = require('../primordials/array.js');
6
+ const require_node_path = require('../node/path.js');
7
+ const require_git_repo = require('./repo.js');
8
+ const require_git__internal = require('./_internal.js');
9
+
10
+ //#region src/git/changed.ts
11
+ /**
12
+ * @file "Anything different from HEAD" helpers the broad-strokes `git status
13
+ * --porcelain` view that lumps staged, unstaged, and untracked paths
14
+ * together. Use these when you want a single answer to "did anything
15
+ * change?"; reach for `staged.ts` / `unstaged.ts` when the distinction
16
+ * matters.
17
+ */
18
+ /**
19
+ * Get all changed files including staged, unstaged, and untracked files.
20
+ *
21
+ * Uses `git status --porcelain` which returns the full working tree status with
22
+ * status codes: - `M` - Modified - `A` - Added - `D` - Deleted - `??` -
23
+ * Untracked - `R` - Renamed - `C` - Copied.
24
+ *
25
+ * This is the most comprehensive check - captures everything that differs from
26
+ * the last commit, including: - Files modified and staged with `git add` -
27
+ * Files modified but not staged - New files not yet tracked by git.
28
+ *
29
+ * Status codes are automatically stripped from the output.
30
+ *
31
+ * @example
32
+ * ;```typescript
33
+ * // Get all changed files as relative paths
34
+ * const files = await getChangedFiles()
35
+ * // => ['src/foo.ts', 'src/bar.ts', 'newfile.ts']
36
+ *
37
+ * // Get absolute paths
38
+ * const files = await getChangedFiles({ absolute: true })
39
+ * // => ['/path/to/repo/src/foo.ts', ...]
40
+ *
41
+ * // Get changed files in specific directory
42
+ * const files = await getChangedFiles({ cwd: '/path/to/repo/src' })
43
+ * // => ['foo.ts', 'bar.ts']
44
+ * ```
45
+ *
46
+ * @param options - Options controlling path format and filtering.
47
+ *
48
+ * @returns Promise resolving to array of changed file paths.
49
+ */
33
50
  async function getChangedFiles(options) {
34
- const args = (0, import_internal.getGitDiffSpawnArgs)(options?.cwd).all;
35
- return await (0, import_internal.innerDiff)(args, {
36
- __proto__: null,
37
- ...options,
38
- porcelain: true
39
- });
51
+ const args = require_git__internal.getGitDiffSpawnArgs(options?.cwd).all;
52
+ return await require_git__internal.innerDiff(args, {
53
+ __proto__: null,
54
+ ...options,
55
+ porcelain: true
56
+ });
40
57
  }
58
+ /**
59
+ * Get all changed files including staged, unstaged, and untracked files.
60
+ *
61
+ * Synchronous version of `getChangedFiles()`. Uses `git status --porcelain`
62
+ * which returns the full working tree status with status codes: - `M` -
63
+ * Modified - `A` - Added - `D` - Deleted - `??` - Untracked - `R` - Renamed -
64
+ * `C` - Copied.
65
+ *
66
+ * This is the most comprehensive check - captures everything that differs from
67
+ * the last commit, including: - Files modified and staged with `git add` -
68
+ * Files modified but not staged - New files not yet tracked by git.
69
+ *
70
+ * Status codes are automatically stripped from the output.
71
+ *
72
+ * @example
73
+ * ;```typescript
74
+ * // Get all changed files as relative paths
75
+ * const files = getChangedFilesSync()
76
+ * // => ['src/foo.ts', 'src/bar.ts', 'newfile.ts']
77
+ *
78
+ * // Get absolute paths
79
+ * const files = getChangedFilesSync({ absolute: true })
80
+ * // => ['/path/to/repo/src/foo.ts', ...]
81
+ *
82
+ * // Get changed files in specific directory
83
+ * const files = getChangedFilesSync({ cwd: '/path/to/repo/src' })
84
+ * // => ['foo.ts', 'bar.ts']
85
+ * ```
86
+ *
87
+ * @param options - Options controlling path format and filtering.
88
+ *
89
+ * @returns Array of changed file paths.
90
+ */
41
91
  function getChangedFilesSync(options) {
42
- const args = (0, import_internal.getGitDiffSpawnArgs)(options?.cwd).all;
43
- return (0, import_internal.innerDiffSync)(args, {
44
- __proto__: null,
45
- ...options,
46
- porcelain: true
47
- });
92
+ const args = require_git__internal.getGitDiffSpawnArgs(options?.cwd).all;
93
+ return require_git__internal.innerDiffSync(args, {
94
+ __proto__: null,
95
+ ...options,
96
+ porcelain: true
97
+ });
48
98
  }
99
+ /**
100
+ * Check if a file or directory has any git changes.
101
+ *
102
+ * Checks if the given pathname has any changes including: - Staged
103
+ * modifications (added with `git add`) - Unstaged modifications (not yet
104
+ * staged) - Untracked status (new file/directory not in git)
105
+ *
106
+ * For directories, returns `true` if ANY file within the directory has changes.
107
+ *
108
+ * Symlinks in the pathname and cwd are automatically resolved using
109
+ * `fs.realpathSync()` before comparison.
110
+ *
111
+ * @example
112
+ * ;```typescript
113
+ * // Check if file is changed
114
+ * const changed = await isChanged('src/foo.ts')
115
+ * // => true
116
+ *
117
+ * // Check if directory has any changes
118
+ * const changed = await isChanged('src/')
119
+ * // => true (if any file in src/ is changed)
120
+ *
121
+ * // Check from different cwd
122
+ * const changed = await isChanged('/path/to/repo/src/foo.ts', {
123
+ * cwd: '/path/to/repo',
124
+ * })
125
+ * ```
126
+ *
127
+ * @param pathname - File or directory path to check.
128
+ * @param options - Options for the git status check.
129
+ *
130
+ * @returns Promise resolving to `true` if path has any changes, `false`
131
+ * otherwise.
132
+ */
49
133
  async function isChanged(pathname, options) {
50
- const files = await getChangedFiles({
51
- __proto__: null,
52
- ...options,
53
- absolute: false
54
- });
55
- const path = (0, import_repo.getPath)();
56
- const resolvedPathname = (0, import_repo.getCachedRealpath)(pathname);
57
- const baseCwd = options?.cwd ? (0, import_repo.getCachedRealpath)(options["cwd"]) : (0, import_repo.getCwd)();
58
- const relativePath = (0, import_normalize.normalizePath)(path.relative(baseCwd, resolvedPathname));
59
- return (0, import_array.ArrayPrototypeIncludes)(files, relativePath);
134
+ const files = await getChangedFiles({
135
+ __proto__: null,
136
+ ...options,
137
+ absolute: false
138
+ });
139
+ const path = /* @__PURE__ */ require_node_path.getNodePath();
140
+ const resolvedPathname = require_git_repo.getCachedRealpath(pathname);
141
+ /* c8 ignore start */
142
+ const baseCwd = options?.cwd ? require_git_repo.getCachedRealpath(options["cwd"]) : require_git_repo.getCwd();
143
+ return require_primordials_array.ArrayPrototypeIncludes(files, /* @__PURE__ */ require_paths_normalize.normalizePath(path.relative(baseCwd, resolvedPathname)));
60
144
  }
145
+ /**
146
+ * Check if a file or directory has any git changes.
147
+ *
148
+ * Synchronous version of `isChanged()`. Checks if the given pathname has any
149
+ * changes including: - Staged modifications (added with `git add`) - Unstaged
150
+ * modifications (not yet staged) - Untracked status (new file/directory not in
151
+ * git)
152
+ *
153
+ * For directories, returns `true` if ANY file within the directory has changes.
154
+ *
155
+ * Symlinks in the pathname and cwd are automatically resolved using
156
+ * `fs.realpathSync()` before comparison.
157
+ *
158
+ * @example
159
+ * ;```typescript
160
+ * // Check if file is changed
161
+ * const changed = isChangedSync('src/foo.ts')
162
+ * // => true
163
+ *
164
+ * // Check if directory has any changes
165
+ * const changed = isChangedSync('src/')
166
+ * // => true (if any file in src/ is changed)
167
+ *
168
+ * // Check from different cwd
169
+ * const changed = isChangedSync('/path/to/repo/src/foo.ts', {
170
+ * cwd: '/path/to/repo',
171
+ * })
172
+ * ```
173
+ *
174
+ * @param pathname - File or directory path to check.
175
+ * @param options - Options for the git status check.
176
+ *
177
+ * @returns `true` if path has any changes, `false` otherwise.
178
+ */
61
179
  function isChangedSync(pathname, options) {
62
- const files = getChangedFilesSync({
63
- __proto__: null,
64
- ...options,
65
- absolute: false
66
- });
67
- const path = (0, import_repo.getPath)();
68
- try {
69
- const resolvedPathname = (0, import_repo.getCachedRealpath)(pathname);
70
- const baseCwd = options?.cwd ? (0, import_repo.getCachedRealpath)(options["cwd"]) : (0, import_repo.getCwd)();
71
- const relativePath = (0, import_normalize.normalizePath)(path.relative(baseCwd, resolvedPathname));
72
- return (0, import_array.ArrayPrototypeIncludes)(files, relativePath);
73
- } catch {
74
- return false;
75
- }
180
+ const files = getChangedFilesSync({
181
+ __proto__: null,
182
+ ...options,
183
+ absolute: false
184
+ });
185
+ const path = /* @__PURE__ */ require_node_path.getNodePath();
186
+ try {
187
+ const resolvedPathname = require_git_repo.getCachedRealpath(pathname);
188
+ /* c8 ignore start */
189
+ const baseCwd = options?.cwd ? require_git_repo.getCachedRealpath(options["cwd"]) : require_git_repo.getCwd();
190
+ return require_primordials_array.ArrayPrototypeIncludes(files, /* @__PURE__ */ require_paths_normalize.normalizePath(path.relative(baseCwd, resolvedPathname)));
191
+ } catch {
192
+ return false;
193
+ }
76
194
  }
77
- // Annotate the CommonJS export names for ESM import in node:
78
- 0 && (module.exports = {
79
- getChangedFiles,
80
- getChangedFilesSync,
81
- isChanged,
82
- isChangedSync
83
- });
195
+
196
+ //#endregion
197
+ exports.getChangedFiles = getChangedFiles;
198
+ exports.getChangedFilesSync = getChangedFilesSync;
199
+ exports.isChanged = isChanged;
200
+ exports.isChangedSync = isChangedSync;
package/dist/git/repo.js CHANGED
@@ -1,111 +1,125 @@
1
1
  "use strict";
2
- /* Socket Lib - Built with esbuild */
3
- "use strict";
4
- var __create = Object.create;
5
- var __defProp = Object.defineProperty;
6
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
- var __getOwnPropNames = Object.getOwnPropertyNames;
8
- var __getProtoOf = Object.getPrototypeOf;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __export = (target, all) => {
11
- for (var name in all)
12
- __defProp(target, name, { get: all[name], enumerable: true });
13
- };
14
- var __copyProps = (to, from, except, desc) => {
15
- if (from && typeof from === "object" || typeof from === "function") {
16
- for (let key of __getOwnPropNames(from))
17
- if (!__hasOwnProp.call(to, key) && key !== except)
18
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
- }
20
- return to;
21
- };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
- // If the importer is in node compatibility mode or this is not an ESM
24
- // file that has been converted to a CommonJS file using a Babel-
25
- // compatible transform (i.e. "__esModule" has not been set), then set
26
- // "default" to the CommonJS "module.exports" for node compatibility.
27
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
- mod
29
- ));
30
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
- var repo_exports = {};
32
- __export(repo_exports, {
33
- findGitRoot: () => findGitRoot,
34
- getCachedRealpath: () => getCachedRealpath,
35
- getCwd: () => getCwd,
36
- getFs: () => import_fs2.getNodeFs,
37
- getPath: () => import_path2.getNodePath,
38
- gitRootCache: () => gitRootCache,
39
- realpathCache: () => realpathCache
40
- });
41
- module.exports = __toCommonJS(repo_exports);
42
- var import_node_process = __toESM(require("node:process"));
43
- var import_map_set = require("../primordials/map-set");
44
- var import_fs = require("../node/fs");
45
- var import_path = require("../node/path");
46
- var import_fs2 = require("../node/fs");
47
- var import_path2 = require("../node/path");
48
- const realpathCache = new import_map_set.MapCtor();
49
- const gitRootCache = new import_map_set.MapCtor();
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_runtime = require('../_virtual/_rolldown/runtime.js');
5
+ const require_primordials_map_set = require('../primordials/map-set.js');
6
+ const require_node_fs = require('../node/fs.js');
7
+ const require_node_path = require('../node/path.js');
8
+ let node_process = require("node:process");
9
+ node_process = require_runtime.__toESM(node_process);
10
+
11
+ //#region src/git/repo.ts
12
+ /**
13
+ * @file Git repository discovery + foundational lazy fs/path/cwd helpers shared
14
+ * across `git/*` leaves. Owns `findGitRoot`, the realpath cache, the cwd
15
+ * resolver, and the lazy `node:fs` / `node:path` loaders pulling these
16
+ * together keeps the dependency direction one-way: `_internal.ts` and the
17
+ * public-surface leaves all import from here.
18
+ */
19
+ const realpathCache = new require_primordials_map_set.MapCtor();
20
+ const gitRootCache = new require_primordials_map_set.MapCtor();
21
+ /**
22
+ * Find git repository root by walking up from the given directory.
23
+ *
24
+ * Searches for a `.git` directory or file by traversing parent directories
25
+ * upward until found or filesystem root is reached. Returns the original path
26
+ * if no git repository is found.
27
+ *
28
+ * This function is exported primarily for testing purposes.
29
+ *
30
+ * @example
31
+ * ;```typescript
32
+ * const root = findGitRoot('/path/to/repo/src/subdir')
33
+ * // => '/path/to/repo'
34
+ *
35
+ * const notFound = findGitRoot('/not/a/repo')
36
+ * // => '/not/a/repo'
37
+ * ```
38
+ *
39
+ * @param startPath - Directory path to start searching from.
40
+ *
41
+ * @returns Git repository root path, or `startPath` if not found.
42
+ */
50
43
  function findGitRoot(startPath) {
51
- const fs = (0, import_fs.getNodeFs)();
52
- const path = (0, import_path.getNodePath)();
53
- const cached = gitRootCache.get(startPath);
54
- if (cached) {
55
- if (fs.existsSync(path.join(cached, ".git"))) {
56
- return cached;
57
- }
58
- gitRootCache.delete(startPath);
59
- }
60
- let currentPath = startPath;
61
- while (true) {
62
- try {
63
- const gitPath = path.join(currentPath, ".git");
64
- if (fs.existsSync(gitPath)) {
65
- gitRootCache.set(startPath, currentPath);
66
- return currentPath;
67
- }
68
- } catch {
69
- }
70
- const parentPath = path.dirname(currentPath);
71
- if (parentPath === currentPath) {
72
- return startPath;
73
- }
74
- currentPath = parentPath;
75
- }
44
+ const fs = /* @__PURE__ */ require_node_fs.getNodeFs();
45
+ const path = /* @__PURE__ */ require_node_path.getNodePath();
46
+ /* c8 ignore start */
47
+ const cached = gitRootCache.get(startPath);
48
+ if (cached) {
49
+ if (fs.existsSync(path.join(cached, ".git"))) return cached;
50
+ gitRootCache.delete(startPath);
51
+ }
52
+ /* c8 ignore stop */
53
+ let currentPath = startPath;
54
+ while (true) {
55
+ try {
56
+ const gitPath = path.join(currentPath, ".git");
57
+ if (fs.existsSync(gitPath)) {
58
+ gitRootCache.set(startPath, currentPath);
59
+ return currentPath;
60
+ }
61
+ } catch {}
62
+ const parentPath = path.dirname(currentPath);
63
+ if (parentPath === currentPath) return startPath;
64
+ currentPath = parentPath;
65
+ }
76
66
  }
67
+ /**
68
+ * Get the real path with caching to avoid repeated filesystem calls. Validates
69
+ * cache with existsSync() which is cheaper than realpathSync().
70
+ *
71
+ * ENOENT/ENOTDIR are re-thrown because the caller explicitly passed a path they
72
+ * expect to exist — swallowing these would turn "file not found" into a silent
73
+ * no-op. Other errors (EACCES, EPERM, EIO) fall back to the input path since
74
+ * they can happen on container/overlay filesystems where the path exists but
75
+ * realpath resolution is restricted.
76
+ */
77
77
  function getCachedRealpath(pathname) {
78
- const fs = (0, import_fs.getNodeFs)();
79
- const cached = realpathCache.get(pathname);
80
- if (cached) {
81
- if (fs.existsSync(cached)) {
82
- return cached;
83
- }
84
- realpathCache.delete(pathname);
85
- }
86
- let resolved;
87
- try {
88
- resolved = fs.realpathSync(pathname);
89
- } catch (e) {
90
- const code = e.code;
91
- if (code === "ENOENT" || code === "ENOTDIR") {
92
- throw e;
93
- }
94
- resolved = pathname;
95
- }
96
- realpathCache.set(pathname, resolved);
97
- return resolved;
78
+ const fs = /* @__PURE__ */ require_node_fs.getNodeFs();
79
+ const cached = realpathCache.get(pathname);
80
+ /* c8 ignore start */
81
+ if (cached) {
82
+ if (fs.existsSync(cached)) return cached;
83
+ realpathCache.delete(pathname);
84
+ }
85
+ /* c8 ignore stop */
86
+ let resolved;
87
+ try {
88
+ resolved = fs.realpathSync(pathname);
89
+ } catch (e) {
90
+ const code = e.code;
91
+ if (code === "ENOENT" || code === "ENOTDIR") throw e;
92
+ resolved = pathname;
93
+ }
94
+ /* c8 ignore stop */
95
+ realpathCache.set(pathname, resolved);
96
+ return resolved;
98
97
  }
98
+ /**
99
+ * Get the current working directory for git operations.
100
+ *
101
+ * Returns the real path to handle symlinks correctly. This is important because
102
+ * symlinked directories like `/tmp -> /private/tmp` can cause path mismatches
103
+ * when comparing git output.
104
+ *
105
+ * @example
106
+ * ;```typescript
107
+ * const cwd = getCwd()
108
+ * // In /tmp (symlink to /private/tmp):
109
+ * // => '/private/tmp'
110
+ * ```
111
+ *
112
+ * @returns The resolved real path of `process.cwd()`.
113
+ */
99
114
  function getCwd() {
100
- return getCachedRealpath(import_node_process.default.cwd());
115
+ return getCachedRealpath(node_process.default.cwd());
101
116
  }
102
- // Annotate the CommonJS export names for ESM import in node:
103
- 0 && (module.exports = {
104
- findGitRoot,
105
- getCachedRealpath,
106
- getCwd,
107
- getFs,
108
- getPath,
109
- gitRootCache,
110
- realpathCache
111
- });
117
+
118
+ //#endregion
119
+ exports.findGitRoot = findGitRoot;
120
+ exports.getCachedRealpath = getCachedRealpath;
121
+ exports.getCwd = getCwd;
122
+ exports.getFs = require_node_fs.getNodeFs;
123
+ exports.getPath = require_node_path.getNodePath;
124
+ exports.gitRootCache = gitRootCache;
125
+ exports.realpathCache = realpathCache;