@socketsecurity/lib 1.3.5 → 2.1.0

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 (291) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/dist/agent.js +1 -1
  3. package/dist/agent.js.map +2 -2
  4. package/dist/bin.js +1 -1
  5. package/dist/bin.js.map +3 -3
  6. package/dist/cacache.d.ts +4 -0
  7. package/dist/cacache.js +1 -1
  8. package/dist/cacache.js.map +3 -3
  9. package/dist/constants/packages.js +1 -1
  10. package/dist/constants/packages.js.map +3 -3
  11. package/dist/debug.d.ts +0 -7
  12. package/dist/debug.js +2 -2
  13. package/dist/debug.js.map +3 -3
  14. package/dist/dlx-binary.js +1 -1
  15. package/dist/dlx-binary.js.map +3 -3
  16. package/dist/dlx-package.d.ts +51 -0
  17. package/dist/dlx-package.js +1 -1
  18. package/dist/dlx-package.js.map +3 -3
  19. package/dist/dlx.d.ts +15 -0
  20. package/dist/dlx.js +1 -1
  21. package/dist/dlx.js.map +3 -3
  22. package/dist/effects/text-shimmer.js +1 -1
  23. package/dist/effects/text-shimmer.js.map +2 -2
  24. package/dist/env/ci.d.ts +1 -1
  25. package/dist/env/ci.js +1 -1
  26. package/dist/env/ci.js.map +3 -3
  27. package/dist/env/debug.d.ts +1 -1
  28. package/dist/env/debug.js +1 -1
  29. package/dist/env/debug.js.map +3 -3
  30. package/dist/env/github.d.ts +40 -0
  31. package/dist/env/github.js +3 -0
  32. package/dist/env/github.js.map +7 -0
  33. package/dist/env/home.d.ts +1 -1
  34. package/dist/env/home.js +1 -1
  35. package/dist/env/home.js.map +3 -3
  36. package/dist/env/locale.d.ts +15 -0
  37. package/dist/env/locale.js +3 -0
  38. package/dist/env/locale.js.map +7 -0
  39. package/dist/env/node-auth-token.d.ts +1 -1
  40. package/dist/env/node-auth-token.js +1 -1
  41. package/dist/env/node-auth-token.js.map +3 -3
  42. package/dist/env/node-env.d.ts +1 -1
  43. package/dist/env/node-env.js +1 -1
  44. package/dist/env/node-env.js.map +3 -3
  45. package/dist/env/npm.d.ts +25 -0
  46. package/dist/env/npm.js +3 -0
  47. package/dist/env/npm.js.map +7 -0
  48. package/dist/env/package-manager.d.ts +58 -0
  49. package/dist/env/package-manager.js +3 -0
  50. package/dist/env/package-manager.js.map +7 -0
  51. package/dist/env/path.d.ts +1 -1
  52. package/dist/env/path.js +1 -1
  53. package/dist/env/path.js.map +3 -3
  54. package/dist/env/pre-commit.d.ts +1 -1
  55. package/dist/env/pre-commit.js +1 -1
  56. package/dist/env/pre-commit.js.map +3 -3
  57. package/dist/env/rewire.d.ts +106 -0
  58. package/dist/env/rewire.js +3 -0
  59. package/dist/env/rewire.js.map +7 -0
  60. package/dist/env/shell.d.ts +1 -1
  61. package/dist/env/shell.js +1 -1
  62. package/dist/env/shell.js.map +3 -3
  63. package/dist/env/socket-cli-shadow.d.ts +30 -0
  64. package/dist/env/socket-cli-shadow.js +3 -0
  65. package/dist/env/socket-cli-shadow.js.map +7 -0
  66. package/dist/env/socket-cli.d.ts +72 -0
  67. package/dist/env/socket-cli.js +3 -0
  68. package/dist/env/socket-cli.js.map +7 -0
  69. package/dist/env/socket.d.ts +75 -0
  70. package/dist/env/socket.js +3 -0
  71. package/dist/env/socket.js.map +7 -0
  72. package/dist/env/temp-dir.d.ts +15 -0
  73. package/dist/env/temp-dir.js +3 -0
  74. package/dist/env/temp-dir.js.map +7 -0
  75. package/dist/env/term.d.ts +1 -1
  76. package/dist/env/term.js +1 -1
  77. package/dist/env/term.js.map +3 -3
  78. package/dist/env/test.d.ts +15 -0
  79. package/dist/env/test.js +3 -0
  80. package/dist/env/test.js.map +7 -0
  81. package/dist/env/windows.d.ts +20 -0
  82. package/dist/env/windows.js +3 -0
  83. package/dist/env/windows.js.map +7 -0
  84. package/dist/env/xdg.d.ts +15 -0
  85. package/dist/env/xdg.js +3 -0
  86. package/dist/env/xdg.js.map +7 -0
  87. package/dist/fs.d.ts +7 -0
  88. package/dist/fs.js +3 -3
  89. package/dist/fs.js.map +3 -3
  90. package/dist/github.js +1 -1
  91. package/dist/github.js.map +3 -3
  92. package/dist/globs.js +1 -1
  93. package/dist/globs.js.map +2 -2
  94. package/dist/ipc.d.ts +1 -1
  95. package/dist/ipc.js +1 -1
  96. package/dist/ipc.js.map +3 -3
  97. package/dist/logger.d.ts +2 -1
  98. package/dist/logger.js +1 -1
  99. package/dist/logger.js.map +3 -3
  100. package/dist/packages/isolation.js +1 -1
  101. package/dist/packages/isolation.js.map +3 -3
  102. package/dist/packages/normalize.js +1 -1
  103. package/dist/packages/normalize.js.map +3 -3
  104. package/dist/packages/operations.js +1 -1
  105. package/dist/packages/operations.js.map +3 -3
  106. package/dist/path.d.ts +2 -2
  107. package/dist/path.js +1 -1
  108. package/dist/path.js.map +3 -3
  109. package/dist/paths/rewire.d.ts +71 -0
  110. package/dist/paths/rewire.js +3 -0
  111. package/dist/paths/rewire.js.map +7 -0
  112. package/dist/paths.d.ts +26 -0
  113. package/dist/paths.js +1 -1
  114. package/dist/paths.js.map +3 -3
  115. package/dist/spinner.js +1 -1
  116. package/dist/spinner.js.map +2 -2
  117. package/package.json +42 -225
  118. package/dist/env/appdata.d.ts +0 -1
  119. package/dist/env/appdata.js +0 -3
  120. package/dist/env/appdata.js.map +0 -7
  121. package/dist/env/comspec.d.ts +0 -1
  122. package/dist/env/comspec.js +0 -3
  123. package/dist/env/comspec.js.map +0 -7
  124. package/dist/env/getters.d.ts +0 -40
  125. package/dist/env/getters.js +0 -3
  126. package/dist/env/getters.js.map +0 -7
  127. package/dist/env/github-api-url.d.ts +0 -1
  128. package/dist/env/github-api-url.js +0 -3
  129. package/dist/env/github-api-url.js.map +0 -7
  130. package/dist/env/github-base-ref.d.ts +0 -1
  131. package/dist/env/github-base-ref.js +0 -3
  132. package/dist/env/github-base-ref.js.map +0 -7
  133. package/dist/env/github-ref-name.d.ts +0 -1
  134. package/dist/env/github-ref-name.js +0 -3
  135. package/dist/env/github-ref-name.js.map +0 -7
  136. package/dist/env/github-ref-type.d.ts +0 -1
  137. package/dist/env/github-ref-type.js +0 -3
  138. package/dist/env/github-ref-type.js.map +0 -7
  139. package/dist/env/github-repository.d.ts +0 -1
  140. package/dist/env/github-repository.js +0 -3
  141. package/dist/env/github-repository.js.map +0 -7
  142. package/dist/env/github-server-url.d.ts +0 -1
  143. package/dist/env/github-server-url.js +0 -3
  144. package/dist/env/github-server-url.js.map +0 -7
  145. package/dist/env/github-token.d.ts +0 -1
  146. package/dist/env/github-token.js +0 -3
  147. package/dist/env/github-token.js.map +0 -7
  148. package/dist/env/jest-worker-id.d.ts +0 -1
  149. package/dist/env/jest-worker-id.js +0 -3
  150. package/dist/env/jest-worker-id.js.map +0 -7
  151. package/dist/env/lang.d.ts +0 -1
  152. package/dist/env/lang.js +0 -3
  153. package/dist/env/lang.js.map +0 -7
  154. package/dist/env/lc-all.d.ts +0 -1
  155. package/dist/env/lc-all.js +0 -3
  156. package/dist/env/lc-all.js.map +0 -7
  157. package/dist/env/lc-messages.d.ts +0 -1
  158. package/dist/env/lc-messages.js +0 -3
  159. package/dist/env/lc-messages.js.map +0 -7
  160. package/dist/env/localappdata.d.ts +0 -1
  161. package/dist/env/localappdata.js +0 -3
  162. package/dist/env/localappdata.js.map +0 -7
  163. package/dist/env/npm-config-registry.d.ts +0 -1
  164. package/dist/env/npm-config-registry.js +0 -3
  165. package/dist/env/npm-config-registry.js.map +0 -7
  166. package/dist/env/npm-config-user-agent.d.ts +0 -1
  167. package/dist/env/npm-config-user-agent.js +0 -3
  168. package/dist/env/npm-config-user-agent.js.map +0 -7
  169. package/dist/env/npm-lifecycle-event.d.ts +0 -1
  170. package/dist/env/npm-lifecycle-event.js +0 -3
  171. package/dist/env/npm-lifecycle-event.js.map +0 -7
  172. package/dist/env/npm-registry.d.ts +0 -1
  173. package/dist/env/npm-registry.js +0 -3
  174. package/dist/env/npm-registry.js.map +0 -7
  175. package/dist/env/npm-token.d.ts +0 -1
  176. package/dist/env/npm-token.js +0 -3
  177. package/dist/env/npm-token.js.map +0 -7
  178. package/dist/env/socket-accept-risks.d.ts +0 -1
  179. package/dist/env/socket-accept-risks.js +0 -3
  180. package/dist/env/socket-accept-risks.js.map +0 -7
  181. package/dist/env/socket-api-base-url.d.ts +0 -1
  182. package/dist/env/socket-api-base-url.js +0 -3
  183. package/dist/env/socket-api-base-url.js.map +0 -7
  184. package/dist/env/socket-api-proxy.d.ts +0 -1
  185. package/dist/env/socket-api-proxy.js +0 -3
  186. package/dist/env/socket-api-proxy.js.map +0 -7
  187. package/dist/env/socket-api-timeout.d.ts +0 -1
  188. package/dist/env/socket-api-timeout.js +0 -3
  189. package/dist/env/socket-api-timeout.js.map +0 -7
  190. package/dist/env/socket-api-token.d.ts +0 -1
  191. package/dist/env/socket-api-token.js +0 -3
  192. package/dist/env/socket-api-token.js.map +0 -7
  193. package/dist/env/socket-cacache-dir.d.ts +0 -1
  194. package/dist/env/socket-cacache-dir.js +0 -3
  195. package/dist/env/socket-cacache-dir.js.map +0 -7
  196. package/dist/env/socket-cli-accept-risks.d.ts +0 -1
  197. package/dist/env/socket-cli-accept-risks.js +0 -3
  198. package/dist/env/socket-cli-accept-risks.js.map +0 -7
  199. package/dist/env/socket-cli-api-base-url.d.ts +0 -1
  200. package/dist/env/socket-cli-api-base-url.js +0 -3
  201. package/dist/env/socket-cli-api-base-url.js.map +0 -7
  202. package/dist/env/socket-cli-api-proxy.d.ts +0 -1
  203. package/dist/env/socket-cli-api-proxy.js +0 -3
  204. package/dist/env/socket-cli-api-proxy.js.map +0 -7
  205. package/dist/env/socket-cli-api-timeout.d.ts +0 -1
  206. package/dist/env/socket-cli-api-timeout.js +0 -3
  207. package/dist/env/socket-cli-api-timeout.js.map +0 -7
  208. package/dist/env/socket-cli-api-token.d.ts +0 -1
  209. package/dist/env/socket-cli-api-token.js +0 -3
  210. package/dist/env/socket-cli-api-token.js.map +0 -7
  211. package/dist/env/socket-cli-config.d.ts +0 -1
  212. package/dist/env/socket-cli-config.js +0 -3
  213. package/dist/env/socket-cli-config.js.map +0 -7
  214. package/dist/env/socket-cli-fix.d.ts +0 -1
  215. package/dist/env/socket-cli-fix.js +0 -3
  216. package/dist/env/socket-cli-fix.js.map +0 -7
  217. package/dist/env/socket-cli-no-api-token.d.ts +0 -1
  218. package/dist/env/socket-cli-no-api-token.js +0 -3
  219. package/dist/env/socket-cli-no-api-token.js.map +0 -7
  220. package/dist/env/socket-cli-optimize.d.ts +0 -1
  221. package/dist/env/socket-cli-optimize.js +0 -3
  222. package/dist/env/socket-cli-optimize.js.map +0 -7
  223. package/dist/env/socket-cli-org-slug.d.ts +0 -1
  224. package/dist/env/socket-cli-org-slug.js +0 -3
  225. package/dist/env/socket-cli-org-slug.js.map +0 -7
  226. package/dist/env/socket-cli-shadow-accept-risks.d.ts +0 -1
  227. package/dist/env/socket-cli-shadow-accept-risks.js +0 -3
  228. package/dist/env/socket-cli-shadow-accept-risks.js.map +0 -7
  229. package/dist/env/socket-cli-shadow-api-token.d.ts +0 -1
  230. package/dist/env/socket-cli-shadow-api-token.js +0 -3
  231. package/dist/env/socket-cli-shadow-api-token.js.map +0 -7
  232. package/dist/env/socket-cli-shadow-bin.d.ts +0 -1
  233. package/dist/env/socket-cli-shadow-bin.js +0 -3
  234. package/dist/env/socket-cli-shadow-bin.js.map +0 -7
  235. package/dist/env/socket-cli-shadow-progress.d.ts +0 -1
  236. package/dist/env/socket-cli-shadow-progress.js +0 -3
  237. package/dist/env/socket-cli-shadow-progress.js.map +0 -7
  238. package/dist/env/socket-cli-shadow-silent.d.ts +0 -1
  239. package/dist/env/socket-cli-shadow-silent.js +0 -3
  240. package/dist/env/socket-cli-shadow-silent.js.map +0 -7
  241. package/dist/env/socket-cli-view-all-risks.d.ts +0 -1
  242. package/dist/env/socket-cli-view-all-risks.js +0 -3
  243. package/dist/env/socket-cli-view-all-risks.js.map +0 -7
  244. package/dist/env/socket-config.d.ts +0 -1
  245. package/dist/env/socket-config.js +0 -3
  246. package/dist/env/socket-config.js.map +0 -7
  247. package/dist/env/socket-debug.d.ts +0 -1
  248. package/dist/env/socket-debug.js +0 -3
  249. package/dist/env/socket-debug.js.map +0 -7
  250. package/dist/env/socket-home.d.ts +0 -1
  251. package/dist/env/socket-home.js +0 -3
  252. package/dist/env/socket-home.js.map +0 -7
  253. package/dist/env/socket-no-api-token.d.ts +0 -1
  254. package/dist/env/socket-no-api-token.js +0 -3
  255. package/dist/env/socket-no-api-token.js.map +0 -7
  256. package/dist/env/socket-npm-registry.d.ts +0 -1
  257. package/dist/env/socket-npm-registry.js +0 -3
  258. package/dist/env/socket-npm-registry.js.map +0 -7
  259. package/dist/env/socket-org-slug.d.ts +0 -1
  260. package/dist/env/socket-org-slug.js +0 -3
  261. package/dist/env/socket-org-slug.js.map +0 -7
  262. package/dist/env/socket-registry-url.d.ts +0 -1
  263. package/dist/env/socket-registry-url.js +0 -3
  264. package/dist/env/socket-registry-url.js.map +0 -7
  265. package/dist/env/socket-view-all-risks.d.ts +0 -1
  266. package/dist/env/socket-view-all-risks.js +0 -3
  267. package/dist/env/socket-view-all-risks.js.map +0 -7
  268. package/dist/env/temp.d.ts +0 -1
  269. package/dist/env/temp.js +0 -3
  270. package/dist/env/temp.js.map +0 -7
  271. package/dist/env/tmp.d.ts +0 -1
  272. package/dist/env/tmp.js +0 -3
  273. package/dist/env/tmp.js.map +0 -7
  274. package/dist/env/tmpdir.d.ts +0 -1
  275. package/dist/env/tmpdir.js +0 -3
  276. package/dist/env/tmpdir.js.map +0 -7
  277. package/dist/env/userprofile.d.ts +0 -1
  278. package/dist/env/userprofile.js +0 -3
  279. package/dist/env/userprofile.js.map +0 -7
  280. package/dist/env/vitest.d.ts +0 -1
  281. package/dist/env/vitest.js +0 -3
  282. package/dist/env/vitest.js.map +0 -7
  283. package/dist/env/xdg-cache-home.d.ts +0 -1
  284. package/dist/env/xdg-cache-home.js +0 -3
  285. package/dist/env/xdg-cache-home.js.map +0 -7
  286. package/dist/env/xdg-config-home.d.ts +0 -1
  287. package/dist/env/xdg-config-home.js +0 -3
  288. package/dist/env/xdg-config-home.js.map +0 -7
  289. package/dist/env/xdg-data-home.d.ts +0 -1
  290. package/dist/env/xdg-data-home.js +0 -3
  291. package/dist/env/xdg-data-home.js.map +0 -7
package/CHANGELOG.md CHANGED
@@ -5,6 +5,90 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.1.0](https://github.com/SocketDev/socket-lib/releases/tag/v2.1.0) - 2025-10-28
9
+
10
+ ### Added
11
+
12
+ - Package manager detection utilities (`detectPackageManager()`, `getPackageManagerInfo()`, `getPackageManagerUserAgent()`)
13
+ - `isInSocketDlx()` utility to check if file path is within `~/.socket/_dlx/`
14
+ - `downloadPackage()` and `executePackage()` functions for separate download and execution of packages
15
+
16
+ ## [2.0.0](https://github.com/SocketDev/socket-lib/releases/tag/v2.0.0) - 2025-10-27
17
+
18
+ ### Breaking Changes
19
+
20
+ **Environment Variable System Refactor**
21
+
22
+ This release completely refactors the environment variable system, consolidating 60+ individual env constant files into grouped getter modules with AsyncLocalStorage-based test rewiring.
23
+
24
+ **Consolidated env files** - Individual files replaced with grouped modules:
25
+ - `env/github.ts` - All GitHub-related env vars (GITHUB_TOKEN, GH_TOKEN, GITHUB_API_URL, etc.)
26
+ - `env/socket.ts` - Socket-specific env vars (SOCKET_API_TOKEN, SOCKET_CACACHE_DIR, etc.)
27
+ - `env/socket-cli.ts` - Socket CLI env vars (SOCKET_CLI_API_TOKEN, SOCKET_CLI_CONFIG, etc.)
28
+ - `env/npm.ts` - NPM-related env vars
29
+ - `env/locale.ts` - Locale env vars (LANG, LC_ALL, LC_MESSAGES)
30
+ - `env/windows.ts` - Windows-specific env vars (USERPROFILE, LOCALAPPDATA, APPDATA, COMSPEC)
31
+ - `env/xdg.ts` - XDG base directory env vars
32
+ - `env/temp-dir.ts` - Temp directory env vars (TEMP, TMP, TMPDIR)
33
+ - `env/test.ts` - Test framework env vars (VITEST, JEST_WORKER_ID)
34
+
35
+ **Constants → Getter functions** - All env constants converted to functions:
36
+ ```typescript
37
+ // Before (v1.x):
38
+ import { GITHUB_TOKEN } from '#env/github-token'
39
+
40
+ // After (v2.x):
41
+ import { getGithubToken } from '#env/github'
42
+ ```
43
+
44
+ **Deleted files** - Removed 60+ individual env constant files:
45
+ - `env/github-token.ts`, `env/socket-api-token.ts`, etc. → Consolidated into grouped files
46
+ - `env/getters.ts` → Functions moved to their respective grouped files
47
+
48
+ ### Added
49
+
50
+ **AsyncLocalStorage-Based Test Rewiring**
51
+
52
+ New `env/rewire.ts` and `path/rewire.ts` modules provides context-isolated environment variable overrides for testing:
53
+
54
+ ```typescript
55
+ import { withEnv, setEnv, resetEnv, getEnvValue } from '#env/rewire'
56
+
57
+ // Option 1: Isolated context with AsyncLocalStorage
58
+ await withEnv({ CI: '1', NODE_ENV: 'test' }, async () => {
59
+ // CI env var is '1' only within this block
60
+ // Concurrent tests don't interfere
61
+ })
62
+
63
+ // Option 2: Traditional beforeEach/afterEach pattern
64
+ beforeEach(() => {
65
+ setEnv('CI', '1')
66
+ })
67
+
68
+ afterEach(() => {
69
+ resetEnv()
70
+ })
71
+ ```
72
+
73
+ **Features:**
74
+ - Allows toggling between snapshot and live behavior
75
+ - Compatible with `vi.stubEnv()` as fallback
76
+
77
+ ### Changed
78
+
79
+ - Updated all dynamic `require()` statements to use path aliases (`#constants/*`, `#packages/*`)
80
+ - Improved logger blank line tracking per stream (separate stderr/stdout tracking)
81
+ - Exported `getCacache()` function for external use
82
+
83
+ ## [1.3.6](https://github.com/SocketDev/socket-lib/releases/tag/v1.3.6) - 2025-10-26
84
+
85
+ ### Fixed
86
+
87
+ - Fixed `debug` module functions being incorrectly tree-shaken as no-ops in bundled output
88
+ - Removed incorrect `/*@__NO_SIDE_EFFECTS__*/` annotations from `debug()`, `debugDir()`, `debugLog()`, and their `*Ns` variants
89
+ - These functions have side effects (logging output, spinner manipulation) and should not be removed by bundlers
90
+ - Fixes issue where `debugLog()` and `debugDir()` were compiled to empty no-op functions
91
+
8
92
  ## [1.3.5](https://github.com/SocketDev/socket-lib/releases/tag/v1.3.5) - 2025-10-26
9
93
 
10
94
  ### Added
package/dist/agent.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /* Socket Lib - Built with esbuild */
2
- var S=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var D=(n,t)=>{for(var i in t)S(n,i,{get:t[i],enumerable:!0})},R=(n,t,i,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of $(t))!z.call(n,e)&&e!==i&&S(n,e,{get:()=>t[e],enumerable:!(o=C(t,e))||o.enumerable});return n};var U=n=>R(S({},"__esModule",{value:!0}),n);var j={};D(j,{execNpm:()=>k,execPnpm:()=>h,execScript:()=>W,execYarn:()=>b,isNpmAuditFlag:()=>F,isNpmFundFlag:()=>N,isNpmLoglevelFlag:()=>m,isNpmNodeOptionsFlag:()=>H,isNpmProgressFlag:()=>x,isPnpmFrozenLockfileFlag:()=>v,isPnpmIgnoreScriptsFlag:()=>P,isPnpmInstallCommand:()=>I,isPnpmLoglevelFlag:()=>E});module.exports=U(j);var w=require("#env/ci"),A=require("#constants/platform"),O=require("./bin"),d=require("./debug"),g=require("./fs"),L=require("./objects"),f=require("./spawn");const B=new Set(["--ignore-scripts","--no-ignore-scripts"]),K=new Set(["--frozen-lockfile","--no-frozen-lockfile"]),M=new Set(["install","i"]),T=new Set(["install","i","add","update","up","remove","rm","link","ln","unlink","import","rebuild","rb"]),Y=new Set(["install","add","upgrade","remove","link","unlink","import"]);function k(n,t){const i=(0,d.isDebug)(),o=n.indexOf("--"),e=(o===-1?n:n.slice(0,o)).filter(s=>!F(s)&&!N(s)&&!x(s)),p=o===-1?[]:n.slice(o),r=i||e.some(m)?[]:["--loglevel","warn"],l=require("./constants/agents").NPM_BIN_PATH;return(0,f.spawn)(l,["--no-audit","--no-fund","--no-progress",...r,...e,...p],{__proto__:null,shell:A.WIN32,...t})}function h(n,t){const{allowLockfileUpdate:i,...o}={__proto__:null,...t},e=(0,d.isDebug)(),p=n.indexOf("--"),r=(p===-1?n:n.slice(0,p)).filter(q=>!x(q)),l=p===-1?[]:n.slice(p),s=r[0],c=s?T.has(s):!1,u=e||r.some(E)?[]:["--loglevel","warn"],a=r.some(P),y=!c||a?[]:["--ignore-scripts"],_=[];return w.CI&&i&&s&&I(s)&&!r.some(v)&&_.push("--no-frozen-lockfile"),(0,O.execBin)("pnpm",[...u,...y,..._,...r,...l],o)}function b(n,t){const i=(0,d.isDebug)(),o=n.indexOf("--"),e=(o===-1?n:n.slice(0,o)).filter(a=>!x(a)),p=o===-1?[]:n.slice(o),r=e[0],l=r?Y.has(r):!1,s=i||e.some(m)?[]:["--silent"],c=e.some(P),u=!l||c?[]:["--ignore-scripts"];return(0,O.execBin)("yarn",[...s,...u,...e,...p],{__proto__:null,...t})}function F(n){return/^--(no-)?audit(=.*)?$/.test(n)}function N(n){return/^--(no-)?fund(=.*)?$/.test(n)}function m(n){return/^--loglevel(=.*)?$/.test(n)||/^--(silent|verbose|info|warn|error|quiet)$/.test(n)?!0:/^-(s|q|d|dd|ddd|v)$/.test(n)}function H(n){return/^--node-options(=.*)?$/.test(n)}function x(n){return/^--(no-)?progress(=.*)?$/.test(n)}function P(n){return B.has(n)}function v(n){return K.has(n)}function I(n){return M.has(n)}const E=m;function W(n,t,i){let o,e;!Array.isArray(t)&&t!==null&&typeof t=="object"?(o=t,e=[]):(o=i,e=t||[]);const{prepost:p,...r}={__proto__:null,...o};if(r.shell===!0)return(0,f.spawn)(n,e,r);const l=!p&&require("./constants/node").SUPPORTS_NODE_RUN,s=(0,L.getOwn)(r,"cwd")??process.cwd();return(0,g.findUpSync)(require("./constants/agents").PNPM_LOCK_YAML,{cwd:s})?h(["run",n,...e],r):(0,g.findUpSync)(require("./constants/agents").PACKAGE_LOCK_JSON,{cwd:s})?k(["run",n,...e],r):(0,g.findUpSync)(require("./constants/agents").YARN_LOCK,{cwd:s})?b(["run",n,...e],r):(0,f.spawn)(require("./constants/node").getExecPath(),[...require("./constants/node").getNodeNoWarningsFlags(),...l?["--run"]:[require("./constants/agents").NPM_REAL_EXEC_PATH,"run"],n,...e],{...r})}0&&(module.exports={execNpm,execPnpm,execScript,execYarn,isNpmAuditFlag,isNpmFundFlag,isNpmLoglevelFlag,isNpmNodeOptionsFlag,isNpmProgressFlag,isPnpmFrozenLockfileFlag,isPnpmIgnoreScriptsFlag,isPnpmInstallCommand,isPnpmLoglevelFlag});
2
+ var S=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var B=(n,t)=>{for(var i in t)S(n,i,{get:t[i],enumerable:!0})},D=(n,t,i,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of $(t))!z.call(n,e)&&e!==i&&S(n,e,{get:()=>t[e],enumerable:!(o=C(t,e))||o.enumerable});return n};var K=n=>D(S({},"__esModule",{value:!0}),n);var j={};B(j,{execNpm:()=>k,execPnpm:()=>h,execScript:()=>W,execYarn:()=>b,isNpmAuditFlag:()=>F,isNpmFundFlag:()=>v,isNpmLoglevelFlag:()=>m,isNpmNodeOptionsFlag:()=>T,isNpmProgressFlag:()=>x,isPnpmFrozenLockfileFlag:()=>N,isPnpmIgnoreScriptsFlag:()=>P,isPnpmInstallCommand:()=>I,isPnpmLoglevelFlag:()=>y});module.exports=K(j);var w=require("#env/ci"),A=require("#constants/platform"),O=require("./bin"),d=require("./debug"),g=require("./fs"),L=require("./objects"),f=require("./spawn");const M=new Set(["--ignore-scripts","--no-ignore-scripts"]),R=new Set(["--frozen-lockfile","--no-frozen-lockfile"]),U=new Set(["install","i"]),Y=new Set(["install","i","add","update","up","remove","rm","link","ln","unlink","import","rebuild","rb"]),H=new Set(["install","add","upgrade","remove","link","unlink","import"]);function k(n,t){const i=(0,d.isDebug)(),o=n.indexOf("--"),e=(o===-1?n:n.slice(0,o)).filter(s=>!F(s)&&!v(s)&&!x(s)),p=o===-1?[]:n.slice(o),r=i||e.some(m)?[]:["--loglevel","warn"],l=require("#constants/agents").NPM_BIN_PATH;return(0,f.spawn)(l,["--no-audit","--no-fund","--no-progress",...r,...e,...p],{__proto__:null,shell:A.WIN32,...t})}function h(n,t){const{allowLockfileUpdate:i,...o}={__proto__:null,...t},e=(0,d.isDebug)(),p=n.indexOf("--"),r=(p===-1?n:n.slice(0,p)).filter(q=>!x(q)),l=p===-1?[]:n.slice(p),s=r[0],c=s?Y.has(s):!1,u=e||r.some(y)?[]:["--loglevel","warn"],a=r.some(P),E=!c||a?[]:["--ignore-scripts"],_=[];return(0,w.getCI)()&&i&&s&&I(s)&&!r.some(N)&&_.push("--no-frozen-lockfile"),(0,O.execBin)("pnpm",[...u,...E,..._,...r,...l],o)}function b(n,t){const i=(0,d.isDebug)(),o=n.indexOf("--"),e=(o===-1?n:n.slice(0,o)).filter(a=>!x(a)),p=o===-1?[]:n.slice(o),r=e[0],l=r?H.has(r):!1,s=i||e.some(m)?[]:["--silent"],c=e.some(P),u=!l||c?[]:["--ignore-scripts"];return(0,O.execBin)("yarn",[...s,...u,...e,...p],{__proto__:null,...t})}function F(n){return/^--(no-)?audit(=.*)?$/.test(n)}function v(n){return/^--(no-)?fund(=.*)?$/.test(n)}function m(n){return/^--loglevel(=.*)?$/.test(n)||/^--(silent|verbose|info|warn|error|quiet)$/.test(n)?!0:/^-(s|q|d|dd|ddd|v)$/.test(n)}function T(n){return/^--node-options(=.*)?$/.test(n)}function x(n){return/^--(no-)?progress(=.*)?$/.test(n)}function P(n){return M.has(n)}function N(n){return R.has(n)}function I(n){return U.has(n)}const y=m;function W(n,t,i){let o,e;!Array.isArray(t)&&t!==null&&typeof t=="object"?(o=t,e=[]):(o=i,e=t||[]);const{prepost:p,...r}={__proto__:null,...o};if(r.shell===!0)return(0,f.spawn)(n,e,r);const l=!p&&require("#constants/node").supportsNodeRun(),s=(0,L.getOwn)(r,"cwd")??process.cwd();return(0,g.findUpSync)(require("#constants/agents").PNPM_LOCK_YAML,{cwd:s})?h(["run",n,...e],r):(0,g.findUpSync)(require("#constants/agents").PACKAGE_LOCK_JSON,{cwd:s})?k(["run",n,...e],r):(0,g.findUpSync)(require("#constants/agents").YARN_LOCK,{cwd:s})?b(["run",n,...e],r):(0,f.spawn)(require("#constants/node").getExecPath(),[...require("#constants/node").getNodeNoWarningsFlags(),...l?["--run"]:[require("#constants/agents").NPM_REAL_EXEC_PATH,"run"],n,...e],{...r})}0&&(module.exports={execNpm,execPnpm,execScript,execYarn,isNpmAuditFlag,isNpmFundFlag,isNpmLoglevelFlag,isNpmNodeOptionsFlag,isNpmProgressFlag,isPnpmFrozenLockfileFlag,isPnpmIgnoreScriptsFlag,isPnpmInstallCommand,isPnpmLoglevelFlag});
3
3
  //# sourceMappingURL=agent.js.map
package/dist/agent.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/agent.ts"],
4
- "sourcesContent": ["/**\n * @fileoverview Package manager agent for executing npm, pnpm, and yarn commands.\n * Provides cross-platform utilities with optimized flags and security defaults.\n *\n * SECURITY: Array-Based Arguments Prevent Command Injection\n *\n * All functions in this module (execNpm, execPnpm, execYarn) use array-based\n * arguments when calling spawn(). This is the PRIMARY DEFENSE against command\n * injection attacks.\n *\n * When arguments are passed as an array:\n * spawn(cmd, ['install', packageName, '--flag'], options)\n *\n * Node.js handles escaping automatically. Each argument is passed directly to\n * the OS without shell interpretation. Shell metacharacters like ; | & $ ( )\n * are treated as LITERAL STRINGS, not as commands.\n *\n * Example: If packageName = \"lodash; rm -rf /\", the package manager will try to\n * install a package literally named \"lodash; rm -rf /\" (which doesn't exist),\n * rather than executing the malicious command.\n *\n * This approach is secure even when shell: true is used on Windows for .cmd\n * file resolution, because Node.js properly escapes each array element.\n */\n\nimport { CI } from '#env/ci'\n\nimport { WIN32 } from '#constants/platform'\nimport { execBin } from './bin'\nimport { isDebug } from './debug'\nimport { findUpSync } from './fs'\nimport { getOwn } from './objects'\nimport type { SpawnOptions } from './spawn'\nimport { spawn } from './spawn'\n\n// Note: npm flag checking is done with regex patterns in the is*Flag functions below.\n\nconst pnpmIgnoreScriptsFlags = new Set([\n '--ignore-scripts',\n '--no-ignore-scripts',\n])\n\nconst pnpmFrozenLockfileFlags = new Set([\n '--frozen-lockfile',\n '--no-frozen-lockfile',\n])\n\nconst pnpmInstallCommands = new Set(['install', 'i'])\n\n// Commands that support --ignore-scripts flag in pnpm:\n// Installation-related: install, add, update, remove, link, unlink, import, rebuild.\nconst pnpmInstallLikeCommands = new Set([\n 'install',\n 'i',\n 'add',\n 'update',\n 'up',\n 'remove',\n 'rm',\n 'link',\n 'ln',\n 'unlink',\n 'import',\n 'rebuild',\n 'rb',\n])\n\n// Commands that support --ignore-scripts flag in yarn:\n// Similar to npm/pnpm: installation-related commands.\nconst yarnInstallLikeCommands = new Set([\n 'install',\n 'add',\n 'upgrade',\n 'remove',\n 'link',\n 'unlink',\n 'import',\n])\n\n/**\n * Execute npm commands with optimized flags and settings.\n *\n * SECURITY: Uses array-based arguments to prevent command injection. All elements\n * in the args array are properly escaped by Node.js when passed to spawn().\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function execNpm(args: string[], options?: SpawnOptions | undefined) {\n const useDebug = isDebug()\n const terminatorPos = args.indexOf('--')\n const npmArgs = (\n terminatorPos === -1 ? args : args.slice(0, terminatorPos)\n ).filter(\n (a: string) =>\n !isNpmAuditFlag(a) && !isNpmFundFlag(a) && !isNpmProgressFlag(a),\n )\n const otherArgs = terminatorPos === -1 ? [] : args.slice(terminatorPos)\n const logLevelArgs =\n // The default value of loglevel is \"notice\". We default to \"warn\" which is\n // one level quieter.\n useDebug || npmArgs.some(isNpmLoglevelFlag) ? [] : ['--loglevel', 'warn']\n // SECURITY: Array-based arguments prevent command injection. Each element is\n // passed directly to the OS without shell interpretation.\n //\n // NOTE: We don't apply hardening flags to npm because:\n // 1. npm is a trusted system tool installed with Node.js\n // 2. npm requires full system access (filesystem, network, child processes)\n // 3. Hardening flags would prevent npm from functioning (even with --allow-* grants)\n // 4. The permission model is intended for untrusted user code, not package managers\n //\n // We also use the npm binary wrapper instead of calling cli.js directly because\n // cli.js exports a function that needs to be invoked with process as an argument.\n const npmBin = /*@__PURE__*/ require('../constants/agents').NPM_BIN_PATH\n return spawn(\n npmBin,\n [\n // Even though '--loglevel=error' is passed npm will still run through\n // code paths for 'audit' and 'fund' unless '--no-audit' and '--no-fund'\n // flags are passed.\n '--no-audit',\n '--no-fund',\n // Add `--no-progress` and `--silent` flags to fix input being swallowed\n // by the spinner when running the command with recent versions of npm.\n '--no-progress',\n // Add '--loglevel=error' if a loglevel flag is not provided and the\n // SOCKET_DEBUG environment variable is not truthy.\n ...logLevelArgs,\n ...npmArgs,\n ...otherArgs,\n ],\n {\n __proto__: null,\n // On Windows, npm is a .cmd file that requires shell to execute.\n shell: WIN32,\n ...options,\n } as SpawnOptions,\n )\n}\n\nexport interface PnpmOptions extends SpawnOptions {\n allowLockfileUpdate?: boolean\n}\n\n/**\n * Execute pnpm commands with optimized flags and settings.\n *\n * SECURITY: Uses array-based arguments to prevent command injection. All elements\n * in the args array are properly escaped by Node.js when passed to execBin().\n */\n/*@__NO_SIDE_EFFECTS__*/\n\nexport function execPnpm(args: string[], options?: PnpmOptions | undefined) {\n const { allowLockfileUpdate, ...extBinOpts } = {\n __proto__: null,\n ...options,\n } as PnpmOptions\n const useDebug = isDebug()\n const terminatorPos = args.indexOf('--')\n const pnpmArgs = (\n terminatorPos === -1 ? args : args.slice(0, terminatorPos)\n ).filter((a: string) => !isNpmProgressFlag(a))\n const otherArgs = terminatorPos === -1 ? [] : args.slice(terminatorPos)\n\n const firstArg = pnpmArgs[0]\n const supportsIgnoreScripts = firstArg\n ? pnpmInstallLikeCommands.has(firstArg)\n : false\n\n // pnpm uses --loglevel for all commands.\n const logLevelArgs =\n useDebug || pnpmArgs.some(isPnpmLoglevelFlag) ? [] : ['--loglevel', 'warn']\n\n // Only add --ignore-scripts for commands that support it.\n const hasIgnoreScriptsFlag = pnpmArgs.some(isPnpmIgnoreScriptsFlag)\n const ignoreScriptsArgs =\n !supportsIgnoreScripts || hasIgnoreScriptsFlag ? [] : ['--ignore-scripts']\n\n // In CI environments, pnpm uses --frozen-lockfile by default which prevents lockfile updates.\n // For commands that need to update the lockfile (like install with new packages/overrides),\n // we need to explicitly add --no-frozen-lockfile in CI mode if not already present.\n const frozenLockfileArgs = []\n if (\n CI &&\n allowLockfileUpdate &&\n firstArg &&\n isPnpmInstallCommand(firstArg) &&\n !pnpmArgs.some(isPnpmFrozenLockfileFlag)\n ) {\n frozenLockfileArgs.push('--no-frozen-lockfile')\n }\n\n // Note: pnpm doesn't have a --no-progress flag. It uses --reporter instead.\n // We removed --no-progress as it causes \"Unknown option\" errors with pnpm.\n\n // SECURITY: Array-based arguments prevent command injection. Each element is\n // passed directly to the OS without shell interpretation.\n return execBin(\n 'pnpm',\n [\n // Add '--loglevel=warn' if a loglevel flag is not provided and debug is off.\n ...logLevelArgs,\n // Add '--ignore-scripts' by default for security (only for installation commands).\n ...ignoreScriptsArgs,\n // Add '--no-frozen-lockfile' in CI when lockfile updates are needed.\n ...frozenLockfileArgs,\n ...pnpmArgs,\n ...otherArgs,\n ],\n extBinOpts,\n )\n}\n\n/**\n * Execute yarn commands with optimized flags and settings.\n *\n * SECURITY: Uses array-based arguments to prevent command injection. All elements\n * in the args array are properly escaped by Node.js when passed to execBin().\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function execYarn(\n args: string[],\n options?: import('./spawn').SpawnOptions,\n) {\n const useDebug = isDebug()\n const terminatorPos = args.indexOf('--')\n const yarnArgs = (\n terminatorPos === -1 ? args : args.slice(0, terminatorPos)\n ).filter((a: string) => !isNpmProgressFlag(a))\n const otherArgs = terminatorPos === -1 ? [] : args.slice(terminatorPos)\n\n const firstArg = yarnArgs[0]\n const supportsIgnoreScripts = firstArg\n ? yarnInstallLikeCommands.has(firstArg)\n : false\n\n // Yarn uses --silent flag for quieter output.\n const logLevelArgs =\n useDebug || yarnArgs.some(isNpmLoglevelFlag) ? [] : ['--silent']\n\n // Only add --ignore-scripts for commands that support it.\n const hasIgnoreScriptsFlag = yarnArgs.some(isPnpmIgnoreScriptsFlag)\n const ignoreScriptsArgs =\n !supportsIgnoreScripts || hasIgnoreScriptsFlag ? [] : ['--ignore-scripts']\n\n // SECURITY: Array-based arguments prevent command injection. Each element is\n // passed directly to the OS without shell interpretation.\n return execBin(\n 'yarn',\n [\n // Add '--silent' if a loglevel flag is not provided and debug is off.\n ...logLevelArgs,\n // Add '--ignore-scripts' by default for security (only for installation commands).\n ...ignoreScriptsArgs,\n ...yarnArgs,\n ...otherArgs,\n ],\n {\n __proto__: null,\n ...options,\n } as SpawnOptions,\n )\n}\n\n/**\n * Check if a command argument is an npm audit flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmAuditFlag(cmdArg: string): boolean {\n return /^--(no-)?audit(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm fund flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmFundFlag(cmdArg: string): boolean {\n return /^--(no-)?fund(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm loglevel flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmLoglevelFlag(cmdArg: string): boolean {\n // https://docs.npmjs.com/cli/v11/using-npm/logging#setting-log-levels\n if (/^--loglevel(=.*)?$/.test(cmdArg)) {\n return true\n }\n // Check for long form flags\n if (/^--(silent|verbose|info|warn|error|quiet)$/.test(cmdArg)) {\n return true\n }\n // Check for shorthand flags\n return /^-(s|q|d|dd|ddd|v)$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm node-options flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmNodeOptionsFlag(cmdArg: string): boolean {\n // https://docs.npmjs.com/cli/v9/using-npm/config#node-options\n return /^--node-options(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm progress flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmProgressFlag(cmdArg: string): boolean {\n return /^--(no-)?progress(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is a pnpm ignore-scripts flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isPnpmIgnoreScriptsFlag(cmdArg: string): boolean {\n return pnpmIgnoreScriptsFlags.has(cmdArg)\n}\n\n/**\n * Check if a command argument is a pnpm frozen-lockfile flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isPnpmFrozenLockfileFlag(cmdArg: string): boolean {\n return pnpmFrozenLockfileFlags.has(cmdArg)\n}\n\n/**\n * Check if a command argument is a pnpm install command.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isPnpmInstallCommand(cmdArg: string): boolean {\n return pnpmInstallCommands.has(cmdArg)\n}\n\n/**\n * Alias for isNpmLoglevelFlag for pnpm usage.\n */\nexport const isPnpmLoglevelFlag = isNpmLoglevelFlag\n\n/**\n * Execute a package.json script using the appropriate package manager.\n * Automatically detects pnpm, yarn, or npm based on lockfiles.\n */\nexport interface ExecScriptOptions extends SpawnOptions {\n prepost?: boolean | undefined\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function execScript(\n scriptName: string,\n args?: string[] | readonly string[] | ExecScriptOptions | undefined,\n options?: ExecScriptOptions | undefined,\n) {\n // Handle overloaded signatures: execScript(name, options) or execScript(name, args, options).\n let resolvedOptions: ExecScriptOptions | undefined\n let resolvedArgs: string[]\n if (!Array.isArray(args) && args !== null && typeof args === 'object') {\n resolvedOptions = args as ExecScriptOptions\n resolvedArgs = []\n } else {\n resolvedOptions = options\n resolvedArgs = (args || []) as string[]\n }\n const { prepost, ...spawnOptions } = {\n __proto__: null,\n ...resolvedOptions,\n } as ExecScriptOptions\n\n // If shell: true is passed, run the command directly as a shell command.\n if (spawnOptions.shell === true) {\n return spawn(scriptName, resolvedArgs, spawnOptions)\n }\n\n const useNodeRun =\n !prepost && /*@__PURE__*/ require('../constants/node').SUPPORTS_NODE_RUN\n\n // Detect package manager based on lockfile by traversing up from current directory.\n const cwd =\n (getOwn(spawnOptions, 'cwd') as string | undefined) ?? process.cwd()\n\n // Check for pnpm-lock.yaml.\n const pnpmLockPath = findUpSync(\n /*@__INLINE__*/ require('../constants/agents').PNPM_LOCK_YAML,\n { cwd },\n ) as string | undefined\n if (pnpmLockPath) {\n return execPnpm(['run', scriptName, ...resolvedArgs], spawnOptions)\n }\n\n // Check for package-lock.json.\n // When in an npm workspace, use npm run to ensure workspace binaries are available.\n const packageLockPath = findUpSync(\n /*@__INLINE__*/ require('../constants/agents').PACKAGE_LOCK_JSON,\n { cwd },\n ) as string | undefined\n if (packageLockPath) {\n return execNpm(['run', scriptName, ...resolvedArgs], spawnOptions)\n }\n\n // Check for yarn.lock.\n const yarnLockPath = findUpSync(\n /*@__INLINE__*/ require('../constants/agents').YARN_LOCK,\n { cwd },\n ) as string | undefined\n if (yarnLockPath) {\n return execYarn(['run', scriptName, ...resolvedArgs], spawnOptions)\n }\n\n return spawn(\n /*@__PURE__*/ require('../constants/node').getExecPath(),\n [\n .../*@__PURE__*/ require('../constants/node').getNodeNoWarningsFlags(),\n ...(useNodeRun\n ? ['--run']\n : [\n /*@__PURE__*/ require('../constants/agents').NPM_REAL_EXEC_PATH,\n 'run',\n ]),\n scriptName,\n ...resolvedArgs,\n ],\n {\n ...spawnOptions,\n },\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * @fileoverview Package manager agent for executing npm, pnpm, and yarn commands.\n * Provides cross-platform utilities with optimized flags and security defaults.\n *\n * SECURITY: Array-Based Arguments Prevent Command Injection\n *\n * All functions in this module (execNpm, execPnpm, execYarn) use array-based\n * arguments when calling spawn(). This is the PRIMARY DEFENSE against command\n * injection attacks.\n *\n * When arguments are passed as an array:\n * spawn(cmd, ['install', packageName, '--flag'], options)\n *\n * Node.js handles escaping automatically. Each argument is passed directly to\n * the OS without shell interpretation. Shell metacharacters like ; | & $ ( )\n * are treated as LITERAL STRINGS, not as commands.\n *\n * Example: If packageName = \"lodash; rm -rf /\", the package manager will try to\n * install a package literally named \"lodash; rm -rf /\" (which doesn't exist),\n * rather than executing the malicious command.\n *\n * This approach is secure even when shell: true is used on Windows for .cmd\n * file resolution, because Node.js properly escapes each array element.\n */\n\nimport { getCI } from '#env/ci'\n\nimport { WIN32 } from '#constants/platform'\nimport { execBin } from './bin'\nimport { isDebug } from './debug'\nimport { findUpSync } from './fs'\nimport { getOwn } from './objects'\nimport type { SpawnOptions } from './spawn'\nimport { spawn } from './spawn'\n\n// Note: npm flag checking is done with regex patterns in the is*Flag functions below.\n\nconst pnpmIgnoreScriptsFlags = new Set([\n '--ignore-scripts',\n '--no-ignore-scripts',\n])\n\nconst pnpmFrozenLockfileFlags = new Set([\n '--frozen-lockfile',\n '--no-frozen-lockfile',\n])\n\nconst pnpmInstallCommands = new Set(['install', 'i'])\n\n// Commands that support --ignore-scripts flag in pnpm:\n// Installation-related: install, add, update, remove, link, unlink, import, rebuild.\nconst pnpmInstallLikeCommands = new Set([\n 'install',\n 'i',\n 'add',\n 'update',\n 'up',\n 'remove',\n 'rm',\n 'link',\n 'ln',\n 'unlink',\n 'import',\n 'rebuild',\n 'rb',\n])\n\n// Commands that support --ignore-scripts flag in yarn:\n// Similar to npm/pnpm: installation-related commands.\nconst yarnInstallLikeCommands = new Set([\n 'install',\n 'add',\n 'upgrade',\n 'remove',\n 'link',\n 'unlink',\n 'import',\n])\n\n/**\n * Execute npm commands with optimized flags and settings.\n *\n * SECURITY: Uses array-based arguments to prevent command injection. All elements\n * in the args array are properly escaped by Node.js when passed to spawn().\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function execNpm(args: string[], options?: SpawnOptions | undefined) {\n const useDebug = isDebug()\n const terminatorPos = args.indexOf('--')\n const npmArgs = (\n terminatorPos === -1 ? args : args.slice(0, terminatorPos)\n ).filter(\n (a: string) =>\n !isNpmAuditFlag(a) && !isNpmFundFlag(a) && !isNpmProgressFlag(a),\n )\n const otherArgs = terminatorPos === -1 ? [] : args.slice(terminatorPos)\n const logLevelArgs =\n // The default value of loglevel is \"notice\". We default to \"warn\" which is\n // one level quieter.\n useDebug || npmArgs.some(isNpmLoglevelFlag) ? [] : ['--loglevel', 'warn']\n // SECURITY: Array-based arguments prevent command injection. Each element is\n // passed directly to the OS without shell interpretation.\n //\n // NOTE: We don't apply hardening flags to npm because:\n // 1. npm is a trusted system tool installed with Node.js\n // 2. npm requires full system access (filesystem, network, child processes)\n // 3. Hardening flags would prevent npm from functioning (even with --allow-* grants)\n // 4. The permission model is intended for untrusted user code, not package managers\n //\n // We also use the npm binary wrapper instead of calling cli.js directly because\n // cli.js exports a function that needs to be invoked with process as an argument.\n const npmBin = /*@__PURE__*/ require('#constants/agents').NPM_BIN_PATH\n return spawn(\n npmBin,\n [\n // Even though '--loglevel=error' is passed npm will still run through\n // code paths for 'audit' and 'fund' unless '--no-audit' and '--no-fund'\n // flags are passed.\n '--no-audit',\n '--no-fund',\n // Add `--no-progress` and `--silent` flags to fix input being swallowed\n // by the spinner when running the command with recent versions of npm.\n '--no-progress',\n // Add '--loglevel=error' if a loglevel flag is not provided and the\n // SOCKET_DEBUG environment variable is not truthy.\n ...logLevelArgs,\n ...npmArgs,\n ...otherArgs,\n ],\n {\n __proto__: null,\n // On Windows, npm is a .cmd file that requires shell to execute.\n shell: WIN32,\n ...options,\n } as SpawnOptions,\n )\n}\n\nexport interface PnpmOptions extends SpawnOptions {\n allowLockfileUpdate?: boolean\n}\n\n/**\n * Execute pnpm commands with optimized flags and settings.\n *\n * SECURITY: Uses array-based arguments to prevent command injection. All elements\n * in the args array are properly escaped by Node.js when passed to execBin().\n */\n/*@__NO_SIDE_EFFECTS__*/\n\nexport function execPnpm(args: string[], options?: PnpmOptions | undefined) {\n const { allowLockfileUpdate, ...extBinOpts } = {\n __proto__: null,\n ...options,\n } as PnpmOptions\n const useDebug = isDebug()\n const terminatorPos = args.indexOf('--')\n const pnpmArgs = (\n terminatorPos === -1 ? args : args.slice(0, terminatorPos)\n ).filter((a: string) => !isNpmProgressFlag(a))\n const otherArgs = terminatorPos === -1 ? [] : args.slice(terminatorPos)\n\n const firstArg = pnpmArgs[0]\n const supportsIgnoreScripts = firstArg\n ? pnpmInstallLikeCommands.has(firstArg)\n : false\n\n // pnpm uses --loglevel for all commands.\n const logLevelArgs =\n useDebug || pnpmArgs.some(isPnpmLoglevelFlag) ? [] : ['--loglevel', 'warn']\n\n // Only add --ignore-scripts for commands that support it.\n const hasIgnoreScriptsFlag = pnpmArgs.some(isPnpmIgnoreScriptsFlag)\n const ignoreScriptsArgs =\n !supportsIgnoreScripts || hasIgnoreScriptsFlag ? [] : ['--ignore-scripts']\n\n // In CI environments, pnpm uses --frozen-lockfile by default which prevents lockfile updates.\n // For commands that need to update the lockfile (like install with new packages/overrides),\n // we need to explicitly add --no-frozen-lockfile in CI mode if not already present.\n const frozenLockfileArgs = []\n if (\n getCI() &&\n allowLockfileUpdate &&\n firstArg &&\n isPnpmInstallCommand(firstArg) &&\n !pnpmArgs.some(isPnpmFrozenLockfileFlag)\n ) {\n frozenLockfileArgs.push('--no-frozen-lockfile')\n }\n\n // Note: pnpm doesn't have a --no-progress flag. It uses --reporter instead.\n // We removed --no-progress as it causes \"Unknown option\" errors with pnpm.\n\n // SECURITY: Array-based arguments prevent command injection. Each element is\n // passed directly to the OS without shell interpretation.\n return execBin(\n 'pnpm',\n [\n // Add '--loglevel=warn' if a loglevel flag is not provided and debug is off.\n ...logLevelArgs,\n // Add '--ignore-scripts' by default for security (only for installation commands).\n ...ignoreScriptsArgs,\n // Add '--no-frozen-lockfile' in CI when lockfile updates are needed.\n ...frozenLockfileArgs,\n ...pnpmArgs,\n ...otherArgs,\n ],\n extBinOpts,\n )\n}\n\n/**\n * Execute yarn commands with optimized flags and settings.\n *\n * SECURITY: Uses array-based arguments to prevent command injection. All elements\n * in the args array are properly escaped by Node.js when passed to execBin().\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function execYarn(\n args: string[],\n options?: import('./spawn').SpawnOptions,\n) {\n const useDebug = isDebug()\n const terminatorPos = args.indexOf('--')\n const yarnArgs = (\n terminatorPos === -1 ? args : args.slice(0, terminatorPos)\n ).filter((a: string) => !isNpmProgressFlag(a))\n const otherArgs = terminatorPos === -1 ? [] : args.slice(terminatorPos)\n\n const firstArg = yarnArgs[0]\n const supportsIgnoreScripts = firstArg\n ? yarnInstallLikeCommands.has(firstArg)\n : false\n\n // Yarn uses --silent flag for quieter output.\n const logLevelArgs =\n useDebug || yarnArgs.some(isNpmLoglevelFlag) ? [] : ['--silent']\n\n // Only add --ignore-scripts for commands that support it.\n const hasIgnoreScriptsFlag = yarnArgs.some(isPnpmIgnoreScriptsFlag)\n const ignoreScriptsArgs =\n !supportsIgnoreScripts || hasIgnoreScriptsFlag ? [] : ['--ignore-scripts']\n\n // SECURITY: Array-based arguments prevent command injection. Each element is\n // passed directly to the OS without shell interpretation.\n return execBin(\n 'yarn',\n [\n // Add '--silent' if a loglevel flag is not provided and debug is off.\n ...logLevelArgs,\n // Add '--ignore-scripts' by default for security (only for installation commands).\n ...ignoreScriptsArgs,\n ...yarnArgs,\n ...otherArgs,\n ],\n {\n __proto__: null,\n ...options,\n } as SpawnOptions,\n )\n}\n\n/**\n * Check if a command argument is an npm audit flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmAuditFlag(cmdArg: string): boolean {\n return /^--(no-)?audit(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm fund flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmFundFlag(cmdArg: string): boolean {\n return /^--(no-)?fund(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm loglevel flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmLoglevelFlag(cmdArg: string): boolean {\n // https://docs.npmjs.com/cli/v11/using-npm/logging#setting-log-levels\n if (/^--loglevel(=.*)?$/.test(cmdArg)) {\n return true\n }\n // Check for long form flags\n if (/^--(silent|verbose|info|warn|error|quiet)$/.test(cmdArg)) {\n return true\n }\n // Check for shorthand flags\n return /^-(s|q|d|dd|ddd|v)$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm node-options flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmNodeOptionsFlag(cmdArg: string): boolean {\n // https://docs.npmjs.com/cli/v9/using-npm/config#node-options\n return /^--node-options(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is an npm progress flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isNpmProgressFlag(cmdArg: string): boolean {\n return /^--(no-)?progress(=.*)?$/.test(cmdArg)\n}\n\n/**\n * Check if a command argument is a pnpm ignore-scripts flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isPnpmIgnoreScriptsFlag(cmdArg: string): boolean {\n return pnpmIgnoreScriptsFlags.has(cmdArg)\n}\n\n/**\n * Check if a command argument is a pnpm frozen-lockfile flag.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isPnpmFrozenLockfileFlag(cmdArg: string): boolean {\n return pnpmFrozenLockfileFlags.has(cmdArg)\n}\n\n/**\n * Check if a command argument is a pnpm install command.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isPnpmInstallCommand(cmdArg: string): boolean {\n return pnpmInstallCommands.has(cmdArg)\n}\n\n/**\n * Alias for isNpmLoglevelFlag for pnpm usage.\n */\nexport const isPnpmLoglevelFlag = isNpmLoglevelFlag\n\n/**\n * Execute a package.json script using the appropriate package manager.\n * Automatically detects pnpm, yarn, or npm based on lockfiles.\n */\nexport interface ExecScriptOptions extends SpawnOptions {\n prepost?: boolean | undefined\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function execScript(\n scriptName: string,\n args?: string[] | readonly string[] | ExecScriptOptions | undefined,\n options?: ExecScriptOptions | undefined,\n) {\n // Handle overloaded signatures: execScript(name, options) or execScript(name, args, options).\n let resolvedOptions: ExecScriptOptions | undefined\n let resolvedArgs: string[]\n if (!Array.isArray(args) && args !== null && typeof args === 'object') {\n resolvedOptions = args as ExecScriptOptions\n resolvedArgs = []\n } else {\n resolvedOptions = options\n resolvedArgs = (args || []) as string[]\n }\n const { prepost, ...spawnOptions } = {\n __proto__: null,\n ...resolvedOptions,\n } as ExecScriptOptions\n\n // If shell: true is passed, run the command directly as a shell command.\n if (spawnOptions.shell === true) {\n return spawn(scriptName, resolvedArgs, spawnOptions)\n }\n\n const useNodeRun =\n !prepost && /*@__PURE__*/ require('#constants/node').supportsNodeRun()\n\n // Detect package manager based on lockfile by traversing up from current directory.\n const cwd =\n (getOwn(spawnOptions, 'cwd') as string | undefined) ?? process.cwd()\n\n // Check for pnpm-lock.yaml.\n const pnpmLockPath = findUpSync(\n /*@__INLINE__*/ require('#constants/agents').PNPM_LOCK_YAML,\n { cwd },\n ) as string | undefined\n if (pnpmLockPath) {\n return execPnpm(['run', scriptName, ...resolvedArgs], spawnOptions)\n }\n\n // Check for package-lock.json.\n // When in an npm workspace, use npm run to ensure workspace binaries are available.\n const packageLockPath = findUpSync(\n /*@__INLINE__*/ require('#constants/agents').PACKAGE_LOCK_JSON,\n { cwd },\n ) as string | undefined\n if (packageLockPath) {\n return execNpm(['run', scriptName, ...resolvedArgs], spawnOptions)\n }\n\n // Check for yarn.lock.\n const yarnLockPath = findUpSync(\n /*@__INLINE__*/ require('#constants/agents').YARN_LOCK,\n { cwd },\n ) as string | undefined\n if (yarnLockPath) {\n return execYarn(['run', scriptName, ...resolvedArgs], spawnOptions)\n }\n\n return spawn(\n /*@__PURE__*/ require('#constants/node').getExecPath(),\n [\n .../*@__PURE__*/ require('#constants/node').getNodeNoWarningsFlags(),\n ...(useNodeRun\n ? ['--run']\n : [\n /*@__PURE__*/ require('#constants/agents').NPM_REAL_EXEC_PATH,\n 'run',\n ]),\n scriptName,\n ...resolvedArgs,\n ],\n {\n ...spawnOptions,\n },\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["agent_exports", "__export", "execNpm", "execPnpm", "execScript", "execYarn", "isNpmAuditFlag", "isNpmFundFlag", "isNpmLoglevelFlag", "isNpmNodeOptionsFlag", "isNpmProgressFlag", "isPnpmFrozenLockfileFlag", "isPnpmIgnoreScriptsFlag", "isPnpmInstallCommand", "isPnpmLoglevelFlag", "__toCommonJS", "import_ci", "import_platform", "import_bin", "import_debug", "import_fs", "import_objects", "import_spawn", "pnpmIgnoreScriptsFlags", "pnpmFrozenLockfileFlags", "pnpmInstallCommands", "pnpmInstallLikeCommands", "yarnInstallLikeCommands", "args", "options", "useDebug", "terminatorPos", "npmArgs", "a", "otherArgs", "logLevelArgs", "npmBin", "allowLockfileUpdate", "extBinOpts", "pnpmArgs", "firstArg", "supportsIgnoreScripts", "hasIgnoreScriptsFlag", "ignoreScriptsArgs", "frozenLockfileArgs", "yarnArgs", "cmdArg", "scriptName", "resolvedOptions", "resolvedArgs", "prepost", "spawnOptions", "useNodeRun", "cwd"]
7
7
  }
package/dist/bin.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /* Socket Lib - Built with esbuild */
2
- var _=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var X=(n,e)=>{for(var o in e)_(n,o,{get:e[o],enumerable:!0})},k=(n,e,o,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of M(e))!T.call(n,s)&&s!==o&&_(n,s,{get:()=>e[s],enumerable:!(c=F(e,s))||c.enumerable});return n};var q=n=>k(_({},"__esModule",{value:!0}),n);var U={};X(U,{execBin:()=>z,findRealBin:()=>S,findRealNpm:()=>W,findRealPnpm:()=>Y,findRealYarn:()=>H,isShadowBinPath:()=>N,resolveBinPathSync:()=>x,whichBin:()=>J,whichBinSync:()=>L});module.exports=q(U);var I=require("#env/appdata"),y=require("#env/home"),P=require("#env/localappdata"),E=require("#env/xdg-data-home"),$=require("#constants/platform"),v=require("./fs"),b=require("./objects"),d=require("./path"),R=require("./spawn");let w;function C(){return w===void 0&&(w=require("node:fs")),w}let j;function h(){return j===void 0&&(j=require("node:path")),j}let A;function B(){return A===void 0&&(A=require("./external/which")),A}async function z(n,e,o){const c=(0,d.isPath)(n)?x(n):await J(n);if(!c){const r=new Error(`Binary not found: ${n}`);throw r.code="ENOENT",r}const s=Array.isArray(c)?c[0]:c;return await(0,R.spawn)(s,e??[],{shell:$.WIN32,...o})}async function J(n,e){const o=B(),c={nothrow:!0,...e},s=await o?.(n,c);if(e?.all){const r=Array.isArray(s)?s:typeof s=="string"?[s]:void 0;return r?.length?r.map(p=>x(p)):r}if(s)return x(s)}function L(n,e){const o={nothrow:!0,...e},c=B()?.sync(n,o);if((0,b.getOwn)(e,"all")){const s=Array.isArray(c)?c:typeof c=="string"?[c]:void 0;return s?.length?s.map(r=>x(r)):s}if(c)return x(c)}function N(n){return n?n.replace(/\\/g,"/").includes("node_modules/.bin"):!1}function S(n,e=[]){const o=C(),c=h(),s=B();for(const p of e)if(o?.existsSync(p))return p;const r=s?.sync(n,{nothrow:!0});if(r){const p=c?.dirname(r);if(N(p)){const a=s?.sync(n,{all:!0,nothrow:!0})||[],m=Array.isArray(a)?a:typeof a=="string"?[a]:[];for(const l of m){const i=c?.dirname(l);if(!N(i))return l}}return r}}function W(){const n=C(),e=h(),o=e?.dirname(process.execPath),c=e?.join(o,"npm");if(n?.existsSync(c))return c;const r=S("npm",["/usr/local/bin/npm","/usr/bin/npm"]);if(r&&n?.existsSync(r))return r;const p=L("npm",{nothrow:!0});return p&&typeof p=="string"&&n?.existsSync(p)?p:"npm"}function Y(){const n=h(),e=$.WIN32?[n?.join(I.APPDATA,"npm","pnpm.cmd"),n?.join(I.APPDATA,"npm","pnpm"),n?.join(P.LOCALAPPDATA,"pnpm","pnpm.cmd"),n?.join(P.LOCALAPPDATA,"pnpm","pnpm"),"C:\\Program Files\\nodejs\\pnpm.cmd","C:\\Program Files\\nodejs\\pnpm"].filter(Boolean):["/usr/local/bin/pnpm","/usr/bin/pnpm",n?.join(E.XDG_DATA_HOME||`${y.HOME}/.local/share`,"pnpm/pnpm"),n?.join(y.HOME,".pnpm/pnpm")].filter(Boolean);return S("pnpm",e)??""}function H(){const n=h(),e=["/usr/local/bin/yarn","/usr/bin/yarn",n?.join(y.HOME,".yarn/bin/yarn"),n?.join(y.HOME,".config/yarn/global/node_modules/.bin/yarn")].filter(Boolean);return S("yarn",e)??""}function x(n){const e=C(),o=h();if(!o?.isAbsolute(n))try{const a=L(n);a&&(n=a)}catch{}if(n=(0,d.normalizePath)(n),n===".")return n;const c=o?.extname(n),s=c.toLowerCase(),r=o?.basename(n,c),p=r==="node"?-1:/(?<=\/)\.volta\//i.exec(n)?.index??-1;if(p!==-1){const a=n.slice(0,p),m=o?.join(a,"tools"),l=o?.join(m,"image"),i=o?.join(m,"user"),t=(0,v.readJsonSync)(o?.join(i,"platform.json"),{throws:!1}),u=t?.node?.runtime,O=t?.node?.npm;let f="";if(r==="npm"||r==="npx"){if(O){const g=`bin/${r}-cli.js`;f=o?.join(l,`npm/${O}/${g}`),u&&!e?.existsSync(f)&&(f=o?.join(l,`node/${u}/lib/node_modules/npm/${g}`),e?.existsSync(f)||(f=""))}}else{const g=o?.join(i,"bin"),D=(0,v.readJsonSync)(o?.join(g,`${r}.json`),{throws:!1})?.package;D&&(f=o?.join(l,`packages/${D}/bin/${r}`),e?.existsSync(f)||(f=`${f}.cmd`,e?.existsSync(f)||(f="")))}if(f){try{return(0,d.normalizePath)(e?.realpathSync.native(f))}catch{}return f}}if($.WIN32){const a=s===""||s===".cmd"||s===".exe"||s===".ps1",m=r==="npm"||r==="npx",l=r==="pnpm"||r==="yarn";if(a&&m){const t=o?.join(o?.dirname(n),`node_modules/npm/bin/${r}-cli.js`);if(e?.existsSync(t)){try{return e?.realpathSync.native(t)}catch{}return t}}let i="";if(a&&s!==".exe"&&e?.existsSync(n)){const t=e?.readFileSync(n,"utf8");m?s===".cmd"?i=r==="npm"?/(?<="NPM_CLI_JS=%~dp0\\).*(?=")/.exec(t)?.[0]||"":/(?<="NPX_CLI_JS=%~dp0\\).*(?=")/.exec(t)?.[0]||"":s===""?i=r==="npm"?/(?<=NPM_CLI_JS="\$CLI_BASEDIR\/).*(?=")/.exec(t)?.[0]||"":/(?<=NPX_CLI_JS="\$CLI_BASEDIR\/).*(?=")/.exec(t)?.[0]||"":s===".ps1"&&(i=r==="npm"?/(?<=\$NPM_CLI_JS="\$PSScriptRoot\/).*(?=")/.exec(t)?.[0]||"":/(?<=\$NPX_CLI_JS="\$PSScriptRoot\/).*(?=")/.exec(t)?.[0]||""):l?s===".cmd"?(i=/(?<=node\s+")%~dp0\\([^"]+)(?="\s+%\*)/.exec(t)?.[1]||"",i||(i=/(?<="%~dp0\\[^"]*node[^"]*"\s+")%~dp0\\([^"]+)(?="\s+%\*)/.exec(t)?.[1]||""),i||(i=/(?<="%dp0%\\).*(?=" %\*\r\n)/.exec(t)?.[0]||"")):s===""?(i=/(?<="\$basedir\/)\.tools\/pnpm\/[^"]+(?="\s+"\$@")/.exec(t)?.[0]||"",i||(i=/(?<=exec\s+node\s+"\$basedir\/)\.tools\/pnpm\/[^"]+(?="\s+"\$@")/.exec(t)?.[0]||""),i||(i=/(?<="\$basedir\/).*(?=" "\$@"\n)/.exec(t)?.[0]||"")):s===".ps1"&&(i=/(?<="\$basedir\/).*(?=" $args\n)/.exec(t)?.[0]||""):s===".cmd"?i=/(?<="%dp0%\\).*(?=" %\*\r\n)/.exec(t)?.[0]||"":s===""?i=/(?<="$basedir\/).*(?=" "\$@"\n)/.exec(t)?.[0]||"":s===".ps1"&&(i=/(?<="\$basedir\/).*(?=" $args\n)/.exec(t)?.[0]||""),i&&(n=(0,d.normalizePath)(o?.resolve(o?.dirname(n),i)))}}else{let a=s==="";const m=r==="pnpm"||r==="yarn",l=r==="npm"||r==="npx";if(m&&n.includes("/.bin/pnpm/bin/")){const i=n.indexOf("/.bin/pnpm");if(i!==-1){const t=n.slice(0,i+10);try{(e?.statSync(t)).isFile()&&(n=(0,d.normalizePath)(t),a=!o?.extname(n))}catch{}}}if(a&&(m||l)&&e?.existsSync(n)){const i=e?.readFileSync(n,"utf8");let t="";if(m){if(t=/(?<="\$basedir\/)\.tools\/[^"]+(?="\s+"\$@")/.exec(i)?.[0]||"",t||(t=/(?<="\$basedir\/)[^"]+(?="\s+"\$@")/.exec(i)?.[0]||""),!t){const u=/exec\s+node\s+"?\$basedir\/([^"]+)"?\s+"\$@"/.exec(i);u&&(t=u[1]||"")}t&&r==="pnpm"&&t.startsWith("pnpm/")&&(t=`../${t}`)}else l&&(t=r==="npm"?/(?<=NPM_CLI_JS="\$CLI_BASEDIR\/).*(?=")/.exec(i)?.[0]||"":/(?<=NPX_CLI_JS="\$CLI_BASEDIR\/).*(?=")/.exec(i)?.[0]||"");t&&(n=(0,d.normalizePath)(o?.resolve(o?.dirname(n),t)))}}try{const a=e?.realpathSync.native(n);return(0,d.normalizePath)(a)}catch{}return(0,d.normalizePath)(n)}0&&(module.exports={execBin,findRealBin,findRealNpm,findRealPnpm,findRealYarn,isShadowBinPath,resolveBinPathSync,whichBin,whichBinSync});
2
+ var _=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var X=Object.prototype.hasOwnProperty;var k=(n,e)=>{for(var o in e)_(n,o,{get:e[o],enumerable:!0})},q=(n,e,o,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of F(e))!X.call(n,s)&&s!==o&&_(n,s,{get:()=>e[s],enumerable:!(c=J(e,s))||c.enumerable});return n};var M=n=>q(_({},"__esModule",{value:!0}),n);var T={};k(T,{execBin:()=>z,findRealBin:()=>w,findRealNpm:()=>W,findRealPnpm:()=>Y,findRealYarn:()=>H,isShadowBinPath:()=>B,resolveBinPathSync:()=>y,whichBin:()=>D,whichBinSync:()=>A});module.exports=M(T);var g=require("#env/home"),x=require("#env/windows"),E=require("#env/xdg"),S=require("#constants/platform"),N=require("./fs"),O=require("./objects"),d=require("./path"),R=require("./spawn");let j;function C(){return j===void 0&&(j=require("node:fs")),j}let I;function h(){return I===void 0&&(I=require("node:path")),I}let v;function P(){return v===void 0&&(v=require("./external/which")),v}async function z(n,e,o){const c=(0,d.isPath)(n)?y(n):await D(n);if(!c){const r=new Error(`Binary not found: ${n}`);throw r.code="ENOENT",r}const s=Array.isArray(c)?c[0]:c;return await(0,R.spawn)(s,e??[],{shell:S.WIN32,...o})}async function D(n,e){const o=P(),c={nothrow:!0,...e},s=await o?.(n,c);if(e?.all){const r=Array.isArray(s)?s:typeof s=="string"?[s]:void 0;return r?.length?r.map(p=>y(p)):r}if(s)return y(s)}function A(n,e){const o={nothrow:!0,...e},c=P()?.sync(n,o);if((0,O.getOwn)(e,"all")){const s=Array.isArray(c)?c:typeof c=="string"?[c]:void 0;return s?.length?s.map(r=>y(r)):s}if(c)return y(c)}function B(n){return n?n.replace(/\\/g,"/").includes("node_modules/.bin"):!1}function w(n,e=[]){const o=C(),c=h(),s=P();for(const p of e)if(o?.existsSync(p))return p;const r=s?.sync(n,{nothrow:!0});if(r){const p=c?.dirname(r);if(B(p)){const a=s?.sync(n,{all:!0,nothrow:!0})||[],m=Array.isArray(a)?a:typeof a=="string"?[a]:[];for(const l of m){const i=c?.dirname(l);if(!B(i))return l}}return r}}function W(){const n=C(),e=h(),o=e?.dirname(process.execPath),c=e?.join(o,"npm");if(n?.existsSync(c))return c;const r=w("npm",["/usr/local/bin/npm","/usr/bin/npm"]);if(r&&n?.existsSync(r))return r;const p=A("npm",{nothrow:!0});return p&&typeof p=="string"&&n?.existsSync(p)?p:"npm"}function Y(){const n=h(),e=S.WIN32?[n?.join((0,x.getAppdata)(),"npm","pnpm.cmd"),n?.join((0,x.getAppdata)(),"npm","pnpm"),n?.join((0,x.getLocalappdata)(),"pnpm","pnpm.cmd"),n?.join((0,x.getLocalappdata)(),"pnpm","pnpm"),"C:\\Program Files\\nodejs\\pnpm.cmd","C:\\Program Files\\nodejs\\pnpm"].filter(Boolean):["/usr/local/bin/pnpm","/usr/bin/pnpm",n?.join((0,E.getXdgDataHome)()||`${(0,g.getHome)()}/.local/share`,"pnpm/pnpm"),n?.join((0,g.getHome)(),".pnpm/pnpm")].filter(Boolean);return w("pnpm",e)??""}function H(){const n=h(),e=["/usr/local/bin/yarn","/usr/bin/yarn",n?.join((0,g.getHome)(),".yarn/bin/yarn"),n?.join((0,g.getHome)(),".config/yarn/global/node_modules/.bin/yarn")].filter(Boolean);return w("yarn",e)??""}function y(n){const e=C(),o=h();if(!o?.isAbsolute(n))try{const a=A(n);a&&(n=a)}catch{}if(n=(0,d.normalizePath)(n),n===".")return n;const c=o?.extname(n),s=c.toLowerCase(),r=o?.basename(n,c),p=r==="node"?-1:/(?<=\/)\.volta\//i.exec(n)?.index??-1;if(p!==-1){const a=n.slice(0,p),m=o?.join(a,"tools"),l=o?.join(m,"image"),i=o?.join(m,"user"),t=(0,N.readJsonSync)(o?.join(i,"platform.json"),{throws:!1}),u=t?.node?.runtime,L=t?.node?.npm;let f="";if(r==="npm"||r==="npx"){if(L){const $=`bin/${r}-cli.js`;f=o?.join(l,`npm/${L}/${$}`),u&&!e?.existsSync(f)&&(f=o?.join(l,`node/${u}/lib/node_modules/npm/${$}`),e?.existsSync(f)||(f=""))}}else{const $=o?.join(i,"bin"),b=(0,N.readJsonSync)(o?.join($,`${r}.json`),{throws:!1})?.package;b&&(f=o?.join(l,`packages/${b}/bin/${r}`),e?.existsSync(f)||(f=`${f}.cmd`,e?.existsSync(f)||(f="")))}if(f){try{return(0,d.normalizePath)(e?.realpathSync.native(f))}catch{}return f}}if(S.WIN32){const a=s===""||s===".cmd"||s===".exe"||s===".ps1",m=r==="npm"||r==="npx",l=r==="pnpm"||r==="yarn";if(a&&m){const t=o?.join(o?.dirname(n),`node_modules/npm/bin/${r}-cli.js`);if(e?.existsSync(t)){try{return e?.realpathSync.native(t)}catch{}return t}}let i="";if(a&&s!==".exe"&&e?.existsSync(n)){const t=e?.readFileSync(n,"utf8");m?s===".cmd"?i=r==="npm"?/(?<="NPM_CLI_JS=%~dp0\\).*(?=")/.exec(t)?.[0]||"":/(?<="NPX_CLI_JS=%~dp0\\).*(?=")/.exec(t)?.[0]||"":s===""?i=r==="npm"?/(?<=NPM_CLI_JS="\$CLI_BASEDIR\/).*(?=")/.exec(t)?.[0]||"":/(?<=NPX_CLI_JS="\$CLI_BASEDIR\/).*(?=")/.exec(t)?.[0]||"":s===".ps1"&&(i=r==="npm"?/(?<=\$NPM_CLI_JS="\$PSScriptRoot\/).*(?=")/.exec(t)?.[0]||"":/(?<=\$NPX_CLI_JS="\$PSScriptRoot\/).*(?=")/.exec(t)?.[0]||""):l?s===".cmd"?(i=/(?<=node\s+")%~dp0\\([^"]+)(?="\s+%\*)/.exec(t)?.[1]||"",i||(i=/(?<="%~dp0\\[^"]*node[^"]*"\s+")%~dp0\\([^"]+)(?="\s+%\*)/.exec(t)?.[1]||""),i||(i=/(?<="%dp0%\\).*(?=" %\*\r\n)/.exec(t)?.[0]||"")):s===""?(i=/(?<="\$basedir\/)\.tools\/pnpm\/[^"]+(?="\s+"\$@")/.exec(t)?.[0]||"",i||(i=/(?<=exec\s+node\s+"\$basedir\/)\.tools\/pnpm\/[^"]+(?="\s+"\$@")/.exec(t)?.[0]||""),i||(i=/(?<="\$basedir\/).*(?=" "\$@"\n)/.exec(t)?.[0]||"")):s===".ps1"&&(i=/(?<="\$basedir\/).*(?=" $args\n)/.exec(t)?.[0]||""):s===".cmd"?i=/(?<="%dp0%\\).*(?=" %\*\r\n)/.exec(t)?.[0]||"":s===""?i=/(?<="$basedir\/).*(?=" "\$@"\n)/.exec(t)?.[0]||"":s===".ps1"&&(i=/(?<="\$basedir\/).*(?=" $args\n)/.exec(t)?.[0]||""),i&&(n=(0,d.normalizePath)(o?.resolve(o?.dirname(n),i)))}}else{let a=s==="";const m=r==="pnpm"||r==="yarn",l=r==="npm"||r==="npx";if(m&&n.includes("/.bin/pnpm/bin/")){const i=n.indexOf("/.bin/pnpm");if(i!==-1){const t=n.slice(0,i+10);try{(e?.statSync(t)).isFile()&&(n=(0,d.normalizePath)(t),a=!o?.extname(n))}catch{}}}if(a&&(m||l)&&e?.existsSync(n)){const i=e?.readFileSync(n,"utf8");let t="";if(m){if(t=/(?<="\$basedir\/)\.tools\/[^"]+(?="\s+"\$@")/.exec(i)?.[0]||"",t||(t=/(?<="\$basedir\/)[^"]+(?="\s+"\$@")/.exec(i)?.[0]||""),!t){const u=/exec\s+node\s+"?\$basedir\/([^"]+)"?\s+"\$@"/.exec(i);u&&(t=u[1]||"")}t&&r==="pnpm"&&t.startsWith("pnpm/")&&(t=`../${t}`)}else l&&(t=r==="npm"?/(?<=NPM_CLI_JS="\$CLI_BASEDIR\/).*(?=")/.exec(i)?.[0]||"":/(?<=NPX_CLI_JS="\$CLI_BASEDIR\/).*(?=")/.exec(i)?.[0]||"");t&&(n=(0,d.normalizePath)(o?.resolve(o?.dirname(n),t)))}}try{const a=e?.realpathSync.native(n);return(0,d.normalizePath)(a)}catch{}return(0,d.normalizePath)(n)}0&&(module.exports={execBin,findRealBin,findRealNpm,findRealPnpm,findRealYarn,isShadowBinPath,resolveBinPathSync,whichBin,whichBinSync});
3
3
  //# sourceMappingURL=bin.js.map
package/dist/bin.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/bin.ts"],
4
- "sourcesContent": ["/**\n * @fileoverview Binary path resolution and execution utilities for package managers.\n * Provides cross-platform bin path lookup, command execution, and path normalization.\n */\n\nimport { APPDATA } from '#env/appdata'\nimport { HOME } from '#env/home'\nimport { LOCALAPPDATA } from '#env/localappdata'\nimport { XDG_DATA_HOME } from '#env/xdg-data-home'\n\nimport { WIN32 } from '#constants/platform'\nimport { readJsonSync } from './fs'\nimport { getOwn } from './objects'\nimport { isPath, normalizePath } from './path'\nimport { spawn } from './spawn'\n\nlet _fs: typeof import('node:fs') | undefined\n/**\n * Lazily load the fs module to avoid Webpack errors.\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getFs() {\n if (_fs === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _fs = /*@__PURE__*/ require('node:fs')\n }\n return _fs!\n}\n\nlet _path: typeof import('node:path') | undefined\n/**\n * Lazily load the path module to avoid Webpack errors.\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getPath() {\n if (_path === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _path = /*@__PURE__*/ require('node:path')\n }\n return _path!\n}\n\nlet _which: typeof import('which') | undefined\n/**\n * Lazily load the which module for finding executables.\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getWhich() {\n if (_which === undefined) {\n _which = /*@__PURE__*/ require('./external/which')\n }\n return _which!\n}\n\n/**\n * Execute a binary with the given arguments.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function execBin(\n binPath: string,\n args?: string[],\n options?: import('./spawn').SpawnOptions,\n) {\n // Resolve the binary path.\n const resolvedPath = isPath(binPath)\n ? resolveBinPathSync(binPath)\n : await whichBin(binPath)\n\n if (!resolvedPath) {\n const error = new Error(`Binary not found: ${binPath}`) as Error & {\n code: string\n }\n error.code = 'ENOENT'\n throw error\n }\n\n // Execute the binary directly.\n const binCommand = Array.isArray(resolvedPath)\n ? resolvedPath[0]!\n : resolvedPath\n // On Windows, binaries are often .cmd files that require shell to execute.\n return await spawn(binCommand, args ?? [], {\n shell: WIN32,\n ...options,\n })\n}\n\n/**\n * Find and resolve a binary in the system PATH asynchronously.\n * @template {import('which').Options} T\n * @throws {Error} If the binary is not found and nothrow is false.\n */\nexport async function whichBin(\n binName: string,\n options?: import('which').Options,\n): Promise<string | string[] | undefined> {\n const which = getWhich()\n // Default to nothrow: true if not specified to return undefined instead of throwing\n const opts = { nothrow: true, ...options }\n // Depending on options `which` may throw if `binName` is not found.\n // With nothrow: true, it returns null when `binName` is not found.\n const result = await which?.(binName, opts)\n\n // When 'all: true' is specified, ensure we always return an array.\n if (options?.all) {\n const paths = Array.isArray(result)\n ? result\n : typeof result === 'string'\n ? [result]\n : undefined\n // If all is true and we have paths, resolve each one.\n return paths?.length ? paths.map(p => resolveBinPathSync(p)) : paths\n }\n\n // If result is undefined (binary not found), return undefined\n if (!result) {\n return undefined\n }\n\n return resolveBinPathSync(result)\n}\n\n/**\n * Find and resolve a binary in the system PATH synchronously.\n * @template {import('which').Options} T\n * @throws {Error} If the binary is not found and nothrow is false.\n */\nexport function whichBinSync(\n binName: string,\n options?: import('which').Options,\n): string | string[] | undefined {\n // Default to nothrow: true if not specified to return undefined instead of throwing\n const opts = { nothrow: true, ...options }\n // Depending on options `which` may throw if `binName` is not found.\n // With nothrow: true, it returns null when `binName` is not found.\n const result = getWhich()?.sync(binName, opts)\n\n // When 'all: true' is specified, ensure we always return an array.\n if (getOwn(options, 'all')) {\n const paths = Array.isArray(result)\n ? result\n : typeof result === 'string'\n ? [result]\n : undefined\n // If all is true and we have paths, resolve each one.\n return paths?.length ? paths.map(p => resolveBinPathSync(p)) : paths\n }\n\n // If result is undefined (binary not found), return undefined\n if (!result) {\n return undefined\n }\n\n return resolveBinPathSync(result)\n}\n\n/**\n * Check if a directory path contains any shadow bin patterns.\n */\nexport function isShadowBinPath(dirPath: string | undefined): boolean {\n if (!dirPath) {\n return false\n }\n // Check for node_modules/.bin pattern (Unix and Windows)\n const normalized = dirPath.replace(/\\\\/g, '/')\n return normalized.includes('node_modules/.bin')\n}\n\n/**\n * Find the real executable for a binary, bypassing shadow bins.\n */\nexport function findRealBin(\n binName: string,\n commonPaths: string[] = [],\n): string | undefined {\n const fs = getFs()\n const path = getPath()\n const which = getWhich()\n\n // Try common locations first.\n for (const binPath of commonPaths) {\n if (fs?.existsSync(binPath)) {\n return binPath\n }\n }\n\n // Fall back to which.sync if no direct path found.\n const binPath = which?.sync(binName, { nothrow: true })\n if (binPath) {\n const binDir = path?.dirname(binPath)\n\n if (isShadowBinPath(binDir)) {\n // This is likely a shadowed binary, try to find the real one.\n const allPaths = which?.sync(binName, { all: true, nothrow: true }) || []\n // Ensure allPaths is an array.\n const pathsArray = Array.isArray(allPaths)\n ? allPaths\n : typeof allPaths === 'string'\n ? [allPaths]\n : []\n\n for (const altPath of pathsArray) {\n const altDir = path?.dirname(altPath)\n if (!isShadowBinPath(altDir)) {\n return altPath\n }\n }\n }\n return binPath\n }\n // If all else fails, return undefined to indicate binary not found.\n return undefined\n}\n\n/**\n * Find the real npm executable, bypassing any aliases and shadow bins.\n */\nexport function findRealNpm(): string {\n const fs = getFs()\n const path = getPath()\n\n // Try to find npm in the same directory as the node executable.\n const nodeDir = path?.dirname(process.execPath)\n const npmInNodeDir = path?.join(nodeDir, 'npm')\n\n if (fs?.existsSync(npmInNodeDir)) {\n return npmInNodeDir\n }\n\n // Try common npm locations.\n const commonPaths = ['/usr/local/bin/npm', '/usr/bin/npm']\n const result = findRealBin('npm', commonPaths)\n\n // If we found a valid path, return it.\n if (result && fs?.existsSync(result)) {\n return result\n }\n\n // As a last resort, try to use whichBinSync to find npm.\n // This handles cases where npm is installed in non-standard locations.\n const npmPath = whichBinSync('npm', { nothrow: true })\n if (npmPath && typeof npmPath === 'string' && fs?.existsSync(npmPath)) {\n return npmPath\n }\n\n // Return the basic 'npm' and let the system resolve it.\n return 'npm'\n}\n\n/**\n * Find the real pnpm executable, bypassing any aliases and shadow bins.\n */\nexport function findRealPnpm(): string {\n const path = getPath()\n\n // Try common pnpm locations.\n const commonPaths = WIN32\n ? [\n // Windows common paths.\n path?.join(APPDATA as string, 'npm', 'pnpm.cmd'),\n path?.join(APPDATA as string, 'npm', 'pnpm'),\n path?.join(LOCALAPPDATA as string, 'pnpm', 'pnpm.cmd'),\n path?.join(LOCALAPPDATA as string, 'pnpm', 'pnpm'),\n 'C:\\\\Program Files\\\\nodejs\\\\pnpm.cmd',\n 'C:\\\\Program Files\\\\nodejs\\\\pnpm',\n ].filter(Boolean)\n : [\n // Unix common paths.\n '/usr/local/bin/pnpm',\n '/usr/bin/pnpm',\n path?.join(\n (XDG_DATA_HOME as string) || `${HOME as string}/.local/share`,\n 'pnpm/pnpm',\n ),\n path?.join(HOME as string, '.pnpm/pnpm'),\n ].filter(Boolean)\n\n return findRealBin('pnpm', commonPaths) ?? ''\n}\n\n/**\n * Find the real yarn executable, bypassing any aliases and shadow bins.\n */\nexport function findRealYarn(): string {\n const path = getPath()\n\n // Try common yarn locations.\n const commonPaths = [\n '/usr/local/bin/yarn',\n '/usr/bin/yarn',\n path?.join(HOME as string, '.yarn/bin/yarn'),\n path?.join(HOME as string, '.config/yarn/global/node_modules/.bin/yarn'),\n ].filter(Boolean)\n\n return findRealBin('yarn', commonPaths) ?? ''\n}\n\n/*@__NO_SIDE_EFFECTS__*/\n/**\n * Resolve a binary path to its actual executable file.\n * Handles Windows .cmd wrappers and Unix shell scripts.\n */\nexport function resolveBinPathSync(binPath: string): string {\n const fs = getFs()\n const path = getPath()\n\n // If it's not an absolute path, try to find it in PATH first\n if (!path?.isAbsolute(binPath)) {\n try {\n const resolved = whichBinSync(binPath)\n if (resolved) {\n binPath = resolved as string\n }\n } catch {}\n }\n\n // Normalize the path once for consistent pattern matching.\n binPath = normalizePath(binPath)\n\n // Handle empty string that normalized to '.' (current directory)\n if (binPath === '.') {\n return binPath\n }\n\n const ext = path?.extname(binPath)\n const extLowered = ext.toLowerCase()\n const basename = path?.basename(binPath, ext)\n const voltaIndex =\n basename === 'node' ? -1 : (/(?<=\\/)\\.volta\\//i.exec(binPath)?.index ?? -1)\n if (voltaIndex !== -1) {\n const voltaPath = binPath.slice(0, voltaIndex)\n const voltaToolsPath = path?.join(voltaPath, 'tools')\n const voltaImagePath = path?.join(voltaToolsPath, 'image')\n const voltaUserPath = path?.join(voltaToolsPath, 'user')\n const voltaPlatform = readJsonSync(\n path?.join(voltaUserPath, 'platform.json'),\n { throws: false },\n ) as any\n const voltaNodeVersion = voltaPlatform?.node?.runtime\n const voltaNpmVersion = voltaPlatform?.node?.npm\n let voltaBinPath = ''\n if (basename === 'npm' || basename === 'npx') {\n if (voltaNpmVersion) {\n const relCliPath = `bin/${basename}-cli.js`\n voltaBinPath = path?.join(\n voltaImagePath,\n `npm/${voltaNpmVersion}/${relCliPath}`,\n )\n if (voltaNodeVersion && !fs?.existsSync(voltaBinPath)) {\n voltaBinPath = path?.join(\n voltaImagePath,\n `node/${voltaNodeVersion}/lib/node_modules/npm/${relCliPath}`,\n )\n if (!fs?.existsSync(voltaBinPath)) {\n voltaBinPath = ''\n }\n }\n }\n } else {\n const voltaUserBinPath = path?.join(voltaUserPath, 'bin')\n const binInfo = readJsonSync(\n path?.join(voltaUserBinPath, `${basename}.json`),\n { throws: false },\n ) as any\n const binPackage = binInfo?.package\n if (binPackage) {\n voltaBinPath = path?.join(\n voltaImagePath,\n `packages/${binPackage}/bin/${basename}`,\n )\n if (!fs?.existsSync(voltaBinPath)) {\n voltaBinPath = `${voltaBinPath}.cmd`\n if (!fs?.existsSync(voltaBinPath)) {\n voltaBinPath = ''\n }\n }\n }\n }\n if (voltaBinPath) {\n try {\n return normalizePath(fs?.realpathSync.native(voltaBinPath))\n } catch {}\n return voltaBinPath\n }\n }\n if (WIN32) {\n const hasKnownExt =\n extLowered === '' ||\n extLowered === '.cmd' ||\n extLowered === '.exe' ||\n extLowered === '.ps1'\n const isNpmOrNpx = basename === 'npm' || basename === 'npx'\n const isPnpmOrYarn = basename === 'pnpm' || basename === 'yarn'\n if (hasKnownExt && isNpmOrNpx) {\n // The quick route assumes a bin path like: C:\\Program Files\\nodejs\\npm.cmd\n const quickPath = path?.join(\n path?.dirname(binPath),\n `node_modules/npm/bin/${basename}-cli.js`,\n )\n if (fs?.existsSync(quickPath)) {\n try {\n return fs?.realpathSync.native(quickPath)\n } catch {}\n return quickPath\n }\n }\n let relPath = ''\n if (\n hasKnownExt &&\n // Only parse shell scripts and batch files, not actual executables.\n // .exe files are already executables and don't need path resolution from wrapper scripts.\n extLowered !== '.exe' &&\n // Check if file exists before attempting to read it to avoid ENOENT errors.\n fs?.existsSync(binPath)\n ) {\n const source = fs?.readFileSync(binPath, 'utf8')\n if (isNpmOrNpx) {\n if (extLowered === '.cmd') {\n // \"npm.cmd\" and \"npx.cmd\" defined by\n // https://github.com/npm/cli/blob/v11.4.2/bin/npm.cmd\n // https://github.com/npm/cli/blob/v11.4.2/bin/npx.cmd\n relPath =\n basename === 'npm'\n ? /(?<=\"NPM_CLI_JS=%~dp0\\\\).*(?=\")/.exec(source)?.[0] || ''\n : /(?<=\"NPX_CLI_JS=%~dp0\\\\).*(?=\")/.exec(source)?.[0] || ''\n } else if (extLowered === '') {\n // Extensionless \"npm\" and \"npx\" defined by\n // https://github.com/npm/cli/blob/v11.4.2/bin/npm\n // https://github.com/npm/cli/blob/v11.4.2/bin/npx\n relPath =\n basename === 'npm'\n ? /(?<=NPM_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] ||\n ''\n : /(?<=NPX_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] ||\n ''\n } else if (extLowered === '.ps1') {\n // \"npm.ps1\" and \"npx.ps1\" defined by\n // https://github.com/npm/cli/blob/v11.4.2/bin/npm.ps1\n // https://github.com/npm/cli/blob/v11.4.2/bin/npx.ps1\n relPath =\n basename === 'npm'\n ? /(?<=\\$NPM_CLI_JS=\"\\$PSScriptRoot\\/).*(?=\")/.exec(\n source,\n )?.[0] || ''\n : /(?<=\\$NPX_CLI_JS=\"\\$PSScriptRoot\\/).*(?=\")/.exec(\n source,\n )?.[0] || ''\n }\n } else if (isPnpmOrYarn) {\n if (extLowered === '.cmd') {\n // pnpm.cmd and yarn.cmd can have different formats depending on installation method\n // Common formats include:\n // 1. Setup-pnpm action format: node \"%~dp0\\..\\pnpm\\bin\\pnpm.cjs\" %*\n // 2. npm install -g pnpm format: similar to cmd-shim\n // 3. Standalone installer format: various patterns\n\n // Try setup-pnpm/setup-yarn action format first\n relPath =\n /(?<=node\\s+\")%~dp0\\\\([^\"]+)(?=\"\\s+%\\*)/.exec(source)?.[1] || ''\n\n // Try alternative format: \"%~dp0\\node.exe\" \"%~dp0\\..\\package\\bin\\binary.js\" %*\n if (!relPath) {\n relPath =\n /(?<=\"%~dp0\\\\[^\"]*node[^\"]*\"\\s+\")%~dp0\\\\([^\"]+)(?=\"\\s+%\\*)/.exec(\n source,\n )?.[1] || ''\n }\n\n // Try cmd-shim format as fallback\n if (!relPath) {\n relPath = /(?<=\"%dp0%\\\\).*(?=\" %\\*\\r\\n)/.exec(source)?.[0] || ''\n }\n } else if (extLowered === '') {\n // Extensionless pnpm/yarn - try common shebang formats\n // Handle pnpm installed via standalone installer or global install\n // Format: exec \"$basedir/node\" \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n // Note: may have multiple spaces between arguments\n relPath =\n /(?<=\"\\$basedir\\/)\\.tools\\/pnpm\\/[^\"]+(?=\"\\s+\"\\$@\")/.exec(\n source,\n )?.[0] || ''\n if (!relPath) {\n // Also try: exec node \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n relPath =\n /(?<=exec\\s+node\\s+\"\\$basedir\\/)\\.tools\\/pnpm\\/[^\"]+(?=\"\\s+\"\\$@\")/.exec(\n source,\n )?.[0] || ''\n }\n if (!relPath) {\n // Try standard cmd-shim format: exec node \"$basedir/../package/bin/binary.js\" \"$@\"\n relPath = /(?<=\"\\$basedir\\/).*(?=\" \"\\$@\"\\n)/.exec(source)?.[0] || ''\n }\n } else if (extLowered === '.ps1') {\n // PowerShell format\n relPath = /(?<=\"\\$basedir\\/).*(?=\" $args\\n)/.exec(source)?.[0] || ''\n }\n } else if (extLowered === '.cmd') {\n // \"bin.CMD\" generated by\n // https://github.com/npm/cmd-shim/blob/v7.0.0/lib/index.js#L98:\n //\n // @ECHO off\n // GOTO start\n // :find_dp0\n // SET dp0=%~dp0\n // EXIT /b\n // :start\n // SETLOCAL\n // CALL :find_dp0\n //\n // IF EXIST \"%dp0%\\node.exe\" (\n // SET \"_prog=%dp0%\\node.exe\"\n // ) ELSE (\n // SET \"_prog=node\"\n // SET PATHEXT=%PATHEXT:;.JS;=;%\n // )\n //\n // endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & \"%_prog%\" \"%dp0%\\..\\<PACKAGE_NAME>\\path\\to\\bin.js\" %*\n relPath = /(?<=\"%dp0%\\\\).*(?=\" %\\*\\r\\n)/.exec(source)?.[0] || ''\n } else if (extLowered === '') {\n // Extensionless \"bin\" generated by\n // https://github.com/npm/cmd-shim/blob/v7.0.0/lib/index.js#L138:\n //\n // #!/bin/sh\n // basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\,/,g')\")\n //\n // case `uname` in\n // *CYGWIN*|*MINGW*|*MSYS*)\n // if command -v cygpath > /dev/null 2>&1; then\n // basedir=`cygpath -w \"$basedir\"`\n // fi\n // ;;\n // esac\n //\n // if [ -x \"$basedir/node\" ]; then\n // exec \"$basedir/node\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" \"$@\"\n // else\n // exec node \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" \"$@\"\n // fi\n relPath = /(?<=\"$basedir\\/).*(?=\" \"\\$@\"\\n)/.exec(source)?.[0] || ''\n } else if (extLowered === '.ps1') {\n // \"bin.PS1\" generated by\n // https://github.com/npm/cmd-shim/blob/v7.0.0/lib/index.js#L192:\n //\n // #!/usr/bin/env pwsh\n // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n //\n // $exe=\"\"\n // if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n // # Fix case when both the Windows and Linux builds of Node\n // # are installed in the same directory\n // $exe=\".exe\"\n // }\n // $ret=0\n // if (Test-Path \"$basedir/node$exe\") {\n // # Support pipeline input\n // if ($MyInvocation.ExpectingInput) {\n // $input | & \"$basedir/node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // } else {\n // & \"$basedir/node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // }\n // $ret=$LASTEXITCODE\n // } else {\n // # Support pipeline input\n // if ($MyInvocation.ExpectingInput) {\n // $input | & \"node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // } else {\n // & \"node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // }\n // $ret=$LASTEXITCODE\n // }\n // exit $ret\n relPath = /(?<=\"\\$basedir\\/).*(?=\" $args\\n)/.exec(source)?.[0] || ''\n }\n if (relPath) {\n binPath = normalizePath(path?.resolve(path?.dirname(binPath), relPath))\n }\n }\n } else {\n // Handle Unix shell scripts (non-Windows platforms)\n let hasNoExt = extLowered === ''\n const isPnpmOrYarn = basename === 'pnpm' || basename === 'yarn'\n const isNpmOrNpx = basename === 'npm' || basename === 'npx'\n\n // Handle special case where pnpm path in CI has extra segments.\n // In setup-pnpm GitHub Action, the path might be malformed like:\n // /home/runner/setup-pnpm/node_modules/.bin/pnpm/bin/pnpm.cjs\n // This happens when the shell script contains a relative path that\n // when resolved, creates an invalid nested structure.\n if (isPnpmOrYarn && binPath.includes('/.bin/pnpm/bin/')) {\n // Extract the correct pnpm bin path.\n const binIndex = binPath.indexOf('/.bin/pnpm')\n if (binIndex !== -1) {\n // Get the base path up to /.bin/pnpm.\n const baseBinPath = binPath.slice(0, binIndex + '/.bin/pnpm'.length)\n // Check if the original shell script exists.\n try {\n const stats = fs?.statSync(baseBinPath)\n // Only use this path if it's a file (the shell script).\n if (stats.isFile()) {\n binPath = normalizePath(baseBinPath)\n // Recompute hasNoExt since we changed the path.\n hasNoExt = !path?.extname(binPath)\n }\n } catch {\n // If stat fails, continue with the original path.\n }\n }\n }\n\n if (\n hasNoExt &&\n (isPnpmOrYarn || isNpmOrNpx) &&\n // For extensionless files (Unix shell scripts), verify existence before reading.\n // This prevents ENOENT errors when the bin path doesn't exist.\n fs?.existsSync(binPath)\n ) {\n const source = fs?.readFileSync(binPath, 'utf8')\n let relPath = ''\n\n if (isPnpmOrYarn) {\n // Handle pnpm/yarn Unix shell scripts.\n // Format: exec \"$basedir/node\" \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n // or: exec node \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n relPath =\n /(?<=\"\\$basedir\\/)\\.tools\\/[^\"]+(?=\"\\s+\"\\$@\")/.exec(source)?.[0] || ''\n if (!relPath) {\n // Try standard cmd-shim format: exec node \"$basedir/../package/bin/binary.js\" \"$@\"\n // Example: exec node \"$basedir/../pnpm/bin/pnpm.cjs\" \"$@\"\n // ^^^^^^^^^^^^^^^^^^^^^ captures this part\n // This regex needs to be more careful to not match \"$@\" at the end.\n relPath =\n /(?<=\"\\$basedir\\/)[^\"]+(?=\"\\s+\"\\$@\")/.exec(source)?.[0] || ''\n }\n // Special case for setup-pnpm GitHub Action which may use a different format.\n // The setup-pnpm action creates a shell script that references ../pnpm/bin/pnpm.cjs\n if (!relPath) {\n // Try to match: exec node \"$basedir/../pnpm/bin/pnpm.cjs\" \"$@\"\n const match = /exec\\s+node\\s+\"?\\$basedir\\/([^\"]+)\"?\\s+\"\\$@\"/.exec(\n source,\n )\n if (match) {\n relPath = match[1] || ''\n }\n }\n // Check if the extracted path looks wrong (e.g., pnpm/bin/pnpm.cjs without ../).\n // This happens with setup-pnpm action when it creates a malformed shell script.\n if (relPath && basename === 'pnpm' && relPath.startsWith('pnpm/')) {\n // The path should be ../pnpm/... not pnpm/...\n // Prepend ../ to fix the relative path.\n relPath = `../${relPath}`\n }\n } else if (isNpmOrNpx) {\n // Handle npm/npx Unix shell scripts\n relPath =\n basename === 'npm'\n ? /(?<=NPM_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] || ''\n : /(?<=NPX_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] || ''\n }\n\n if (relPath) {\n // Resolve the relative path to handle .. segments properly.\n binPath = normalizePath(path?.resolve(path?.dirname(binPath), relPath))\n }\n }\n }\n try {\n const realPath = fs?.realpathSync.native(binPath)\n return normalizePath(realPath)\n } catch {}\n // Return normalized path even if realpath fails.\n return normalizePath(binPath)\n}\n"],
5
- "mappings": "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",
6
- "names": ["bin_exports", "__export", "execBin", "findRealBin", "findRealNpm", "findRealPnpm", "findRealYarn", "isShadowBinPath", "resolveBinPathSync", "whichBin", "whichBinSync", "__toCommonJS", "import_appdata", "import_home", "import_localappdata", "import_xdg_data_home", "import_platform", "import_fs", "import_objects", "import_path", "import_spawn", "_fs", "getFs", "_path", "getPath", "_which", "getWhich", "binPath", "args", "options", "resolvedPath", "error", "binCommand", "binName", "which", "opts", "result", "paths", "p", "dirPath", "commonPaths", "fs", "path", "binDir", "allPaths", "pathsArray", "altPath", "altDir", "nodeDir", "npmInNodeDir", "npmPath", "resolved", "ext", "extLowered", "basename", "voltaIndex", "voltaPath", "voltaToolsPath", "voltaImagePath", "voltaUserPath", "voltaPlatform", "voltaNodeVersion", "voltaNpmVersion", "voltaBinPath", "relCliPath", "voltaUserBinPath", "binPackage", "hasKnownExt", "isNpmOrNpx", "isPnpmOrYarn", "quickPath", "relPath", "source", "hasNoExt", "binIndex", "baseBinPath", "match", "realPath"]
4
+ "sourcesContent": ["/**\n * @fileoverview Binary path resolution and execution utilities for package managers.\n * Provides cross-platform bin path lookup, command execution, and path normalization.\n */\n\nimport { getHome } from '#env/home'\nimport { getAppdata, getLocalappdata } from '#env/windows'\nimport { getXdgDataHome } from '#env/xdg'\n\nimport { WIN32 } from '#constants/platform'\nimport { readJsonSync } from './fs'\nimport { getOwn } from './objects'\nimport { isPath, normalizePath } from './path'\nimport { spawn } from './spawn'\n\nlet _fs: typeof import('node:fs') | undefined\n/**\n * Lazily load the fs module to avoid Webpack errors.\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getFs() {\n if (_fs === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _fs = /*@__PURE__*/ require('node:fs')\n }\n return _fs!\n}\n\nlet _path: typeof import('node:path') | undefined\n/**\n * Lazily load the path module to avoid Webpack errors.\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getPath() {\n if (_path === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _path = /*@__PURE__*/ require('node:path')\n }\n return _path!\n}\n\nlet _which: typeof import('which') | undefined\n/**\n * Lazily load the which module for finding executables.\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getWhich() {\n if (_which === undefined) {\n _which = /*@__PURE__*/ require('./external/which')\n }\n return _which!\n}\n\n/**\n * Execute a binary with the given arguments.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function execBin(\n binPath: string,\n args?: string[],\n options?: import('./spawn').SpawnOptions,\n) {\n // Resolve the binary path.\n const resolvedPath = isPath(binPath)\n ? resolveBinPathSync(binPath)\n : await whichBin(binPath)\n\n if (!resolvedPath) {\n const error = new Error(`Binary not found: ${binPath}`) as Error & {\n code: string\n }\n error.code = 'ENOENT'\n throw error\n }\n\n // Execute the binary directly.\n const binCommand = Array.isArray(resolvedPath)\n ? resolvedPath[0]!\n : resolvedPath\n // On Windows, binaries are often .cmd files that require shell to execute.\n return await spawn(binCommand, args ?? [], {\n shell: WIN32,\n ...options,\n })\n}\n\n/**\n * Find and resolve a binary in the system PATH asynchronously.\n * @template {import('which').Options} T\n * @throws {Error} If the binary is not found and nothrow is false.\n */\nexport async function whichBin(\n binName: string,\n options?: import('which').Options,\n): Promise<string | string[] | undefined> {\n const which = getWhich()\n // Default to nothrow: true if not specified to return undefined instead of throwing\n const opts = { nothrow: true, ...options }\n // Depending on options `which` may throw if `binName` is not found.\n // With nothrow: true, it returns null when `binName` is not found.\n const result = await which?.(binName, opts)\n\n // When 'all: true' is specified, ensure we always return an array.\n if (options?.all) {\n const paths = Array.isArray(result)\n ? result\n : typeof result === 'string'\n ? [result]\n : undefined\n // If all is true and we have paths, resolve each one.\n return paths?.length ? paths.map(p => resolveBinPathSync(p)) : paths\n }\n\n // If result is undefined (binary not found), return undefined\n if (!result) {\n return undefined\n }\n\n return resolveBinPathSync(result)\n}\n\n/**\n * Find and resolve a binary in the system PATH synchronously.\n * @template {import('which').Options} T\n * @throws {Error} If the binary is not found and nothrow is false.\n */\nexport function whichBinSync(\n binName: string,\n options?: import('which').Options,\n): string | string[] | undefined {\n // Default to nothrow: true if not specified to return undefined instead of throwing\n const opts = { nothrow: true, ...options }\n // Depending on options `which` may throw if `binName` is not found.\n // With nothrow: true, it returns null when `binName` is not found.\n const result = getWhich()?.sync(binName, opts)\n\n // When 'all: true' is specified, ensure we always return an array.\n if (getOwn(options, 'all')) {\n const paths = Array.isArray(result)\n ? result\n : typeof result === 'string'\n ? [result]\n : undefined\n // If all is true and we have paths, resolve each one.\n return paths?.length ? paths.map(p => resolveBinPathSync(p)) : paths\n }\n\n // If result is undefined (binary not found), return undefined\n if (!result) {\n return undefined\n }\n\n return resolveBinPathSync(result)\n}\n\n/**\n * Check if a directory path contains any shadow bin patterns.\n */\nexport function isShadowBinPath(dirPath: string | undefined): boolean {\n if (!dirPath) {\n return false\n }\n // Check for node_modules/.bin pattern (Unix and Windows)\n const normalized = dirPath.replace(/\\\\/g, '/')\n return normalized.includes('node_modules/.bin')\n}\n\n/**\n * Find the real executable for a binary, bypassing shadow bins.\n */\nexport function findRealBin(\n binName: string,\n commonPaths: string[] = [],\n): string | undefined {\n const fs = getFs()\n const path = getPath()\n const which = getWhich()\n\n // Try common locations first.\n for (const binPath of commonPaths) {\n if (fs?.existsSync(binPath)) {\n return binPath\n }\n }\n\n // Fall back to which.sync if no direct path found.\n const binPath = which?.sync(binName, { nothrow: true })\n if (binPath) {\n const binDir = path?.dirname(binPath)\n\n if (isShadowBinPath(binDir)) {\n // This is likely a shadowed binary, try to find the real one.\n const allPaths = which?.sync(binName, { all: true, nothrow: true }) || []\n // Ensure allPaths is an array.\n const pathsArray = Array.isArray(allPaths)\n ? allPaths\n : typeof allPaths === 'string'\n ? [allPaths]\n : []\n\n for (const altPath of pathsArray) {\n const altDir = path?.dirname(altPath)\n if (!isShadowBinPath(altDir)) {\n return altPath\n }\n }\n }\n return binPath\n }\n // If all else fails, return undefined to indicate binary not found.\n return undefined\n}\n\n/**\n * Find the real npm executable, bypassing any aliases and shadow bins.\n */\nexport function findRealNpm(): string {\n const fs = getFs()\n const path = getPath()\n\n // Try to find npm in the same directory as the node executable.\n const nodeDir = path?.dirname(process.execPath)\n const npmInNodeDir = path?.join(nodeDir, 'npm')\n\n if (fs?.existsSync(npmInNodeDir)) {\n return npmInNodeDir\n }\n\n // Try common npm locations.\n const commonPaths = ['/usr/local/bin/npm', '/usr/bin/npm']\n const result = findRealBin('npm', commonPaths)\n\n // If we found a valid path, return it.\n if (result && fs?.existsSync(result)) {\n return result\n }\n\n // As a last resort, try to use whichBinSync to find npm.\n // This handles cases where npm is installed in non-standard locations.\n const npmPath = whichBinSync('npm', { nothrow: true })\n if (npmPath && typeof npmPath === 'string' && fs?.existsSync(npmPath)) {\n return npmPath\n }\n\n // Return the basic 'npm' and let the system resolve it.\n return 'npm'\n}\n\n/**\n * Find the real pnpm executable, bypassing any aliases and shadow bins.\n */\nexport function findRealPnpm(): string {\n const path = getPath()\n\n // Try common pnpm locations.\n const commonPaths = WIN32\n ? [\n // Windows common paths.\n path?.join(getAppdata() as string, 'npm', 'pnpm.cmd'),\n path?.join(getAppdata() as string, 'npm', 'pnpm'),\n path?.join(getLocalappdata() as string, 'pnpm', 'pnpm.cmd'),\n path?.join(getLocalappdata() as string, 'pnpm', 'pnpm'),\n 'C:\\\\Program Files\\\\nodejs\\\\pnpm.cmd',\n 'C:\\\\Program Files\\\\nodejs\\\\pnpm',\n ].filter(Boolean)\n : [\n // Unix common paths.\n '/usr/local/bin/pnpm',\n '/usr/bin/pnpm',\n path?.join(\n (getXdgDataHome() as string) || `${getHome() as string}/.local/share`,\n 'pnpm/pnpm',\n ),\n path?.join(getHome() as string, '.pnpm/pnpm'),\n ].filter(Boolean)\n\n return findRealBin('pnpm', commonPaths) ?? ''\n}\n\n/**\n * Find the real yarn executable, bypassing any aliases and shadow bins.\n */\nexport function findRealYarn(): string {\n const path = getPath()\n\n // Try common yarn locations.\n const commonPaths = [\n '/usr/local/bin/yarn',\n '/usr/bin/yarn',\n path?.join(getHome() as string, '.yarn/bin/yarn'),\n path?.join(\n getHome() as string,\n '.config/yarn/global/node_modules/.bin/yarn',\n ),\n ].filter(Boolean)\n\n return findRealBin('yarn', commonPaths) ?? ''\n}\n\n/*@__NO_SIDE_EFFECTS__*/\n/**\n * Resolve a binary path to its actual executable file.\n * Handles Windows .cmd wrappers and Unix shell scripts.\n */\nexport function resolveBinPathSync(binPath: string): string {\n const fs = getFs()\n const path = getPath()\n\n // If it's not an absolute path, try to find it in PATH first\n if (!path?.isAbsolute(binPath)) {\n try {\n const resolved = whichBinSync(binPath)\n if (resolved) {\n binPath = resolved as string\n }\n } catch {}\n }\n\n // Normalize the path once for consistent pattern matching.\n binPath = normalizePath(binPath)\n\n // Handle empty string that normalized to '.' (current directory)\n if (binPath === '.') {\n return binPath\n }\n\n const ext = path?.extname(binPath)\n const extLowered = ext.toLowerCase()\n const basename = path?.basename(binPath, ext)\n const voltaIndex =\n basename === 'node' ? -1 : (/(?<=\\/)\\.volta\\//i.exec(binPath)?.index ?? -1)\n if (voltaIndex !== -1) {\n const voltaPath = binPath.slice(0, voltaIndex)\n const voltaToolsPath = path?.join(voltaPath, 'tools')\n const voltaImagePath = path?.join(voltaToolsPath, 'image')\n const voltaUserPath = path?.join(voltaToolsPath, 'user')\n const voltaPlatform = readJsonSync(\n path?.join(voltaUserPath, 'platform.json'),\n { throws: false },\n ) as any\n const voltaNodeVersion = voltaPlatform?.node?.runtime\n const voltaNpmVersion = voltaPlatform?.node?.npm\n let voltaBinPath = ''\n if (basename === 'npm' || basename === 'npx') {\n if (voltaNpmVersion) {\n const relCliPath = `bin/${basename}-cli.js`\n voltaBinPath = path?.join(\n voltaImagePath,\n `npm/${voltaNpmVersion}/${relCliPath}`,\n )\n if (voltaNodeVersion && !fs?.existsSync(voltaBinPath)) {\n voltaBinPath = path?.join(\n voltaImagePath,\n `node/${voltaNodeVersion}/lib/node_modules/npm/${relCliPath}`,\n )\n if (!fs?.existsSync(voltaBinPath)) {\n voltaBinPath = ''\n }\n }\n }\n } else {\n const voltaUserBinPath = path?.join(voltaUserPath, 'bin')\n const binInfo = readJsonSync(\n path?.join(voltaUserBinPath, `${basename}.json`),\n { throws: false },\n ) as any\n const binPackage = binInfo?.package\n if (binPackage) {\n voltaBinPath = path?.join(\n voltaImagePath,\n `packages/${binPackage}/bin/${basename}`,\n )\n if (!fs?.existsSync(voltaBinPath)) {\n voltaBinPath = `${voltaBinPath}.cmd`\n if (!fs?.existsSync(voltaBinPath)) {\n voltaBinPath = ''\n }\n }\n }\n }\n if (voltaBinPath) {\n try {\n return normalizePath(fs?.realpathSync.native(voltaBinPath))\n } catch {}\n return voltaBinPath\n }\n }\n if (WIN32) {\n const hasKnownExt =\n extLowered === '' ||\n extLowered === '.cmd' ||\n extLowered === '.exe' ||\n extLowered === '.ps1'\n const isNpmOrNpx = basename === 'npm' || basename === 'npx'\n const isPnpmOrYarn = basename === 'pnpm' || basename === 'yarn'\n if (hasKnownExt && isNpmOrNpx) {\n // The quick route assumes a bin path like: C:\\Program Files\\nodejs\\npm.cmd\n const quickPath = path?.join(\n path?.dirname(binPath),\n `node_modules/npm/bin/${basename}-cli.js`,\n )\n if (fs?.existsSync(quickPath)) {\n try {\n return fs?.realpathSync.native(quickPath)\n } catch {}\n return quickPath\n }\n }\n let relPath = ''\n if (\n hasKnownExt &&\n // Only parse shell scripts and batch files, not actual executables.\n // .exe files are already executables and don't need path resolution from wrapper scripts.\n extLowered !== '.exe' &&\n // Check if file exists before attempting to read it to avoid ENOENT errors.\n fs?.existsSync(binPath)\n ) {\n const source = fs?.readFileSync(binPath, 'utf8')\n if (isNpmOrNpx) {\n if (extLowered === '.cmd') {\n // \"npm.cmd\" and \"npx.cmd\" defined by\n // https://github.com/npm/cli/blob/v11.4.2/bin/npm.cmd\n // https://github.com/npm/cli/blob/v11.4.2/bin/npx.cmd\n relPath =\n basename === 'npm'\n ? /(?<=\"NPM_CLI_JS=%~dp0\\\\).*(?=\")/.exec(source)?.[0] || ''\n : /(?<=\"NPX_CLI_JS=%~dp0\\\\).*(?=\")/.exec(source)?.[0] || ''\n } else if (extLowered === '') {\n // Extensionless \"npm\" and \"npx\" defined by\n // https://github.com/npm/cli/blob/v11.4.2/bin/npm\n // https://github.com/npm/cli/blob/v11.4.2/bin/npx\n relPath =\n basename === 'npm'\n ? /(?<=NPM_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] ||\n ''\n : /(?<=NPX_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] ||\n ''\n } else if (extLowered === '.ps1') {\n // \"npm.ps1\" and \"npx.ps1\" defined by\n // https://github.com/npm/cli/blob/v11.4.2/bin/npm.ps1\n // https://github.com/npm/cli/blob/v11.4.2/bin/npx.ps1\n relPath =\n basename === 'npm'\n ? /(?<=\\$NPM_CLI_JS=\"\\$PSScriptRoot\\/).*(?=\")/.exec(\n source,\n )?.[0] || ''\n : /(?<=\\$NPX_CLI_JS=\"\\$PSScriptRoot\\/).*(?=\")/.exec(\n source,\n )?.[0] || ''\n }\n } else if (isPnpmOrYarn) {\n if (extLowered === '.cmd') {\n // pnpm.cmd and yarn.cmd can have different formats depending on installation method\n // Common formats include:\n // 1. Setup-pnpm action format: node \"%~dp0\\..\\pnpm\\bin\\pnpm.cjs\" %*\n // 2. npm install -g pnpm format: similar to cmd-shim\n // 3. Standalone installer format: various patterns\n\n // Try setup-pnpm/setup-yarn action format first\n relPath =\n /(?<=node\\s+\")%~dp0\\\\([^\"]+)(?=\"\\s+%\\*)/.exec(source)?.[1] || ''\n\n // Try alternative format: \"%~dp0\\node.exe\" \"%~dp0\\..\\package\\bin\\binary.js\" %*\n if (!relPath) {\n relPath =\n /(?<=\"%~dp0\\\\[^\"]*node[^\"]*\"\\s+\")%~dp0\\\\([^\"]+)(?=\"\\s+%\\*)/.exec(\n source,\n )?.[1] || ''\n }\n\n // Try cmd-shim format as fallback\n if (!relPath) {\n relPath = /(?<=\"%dp0%\\\\).*(?=\" %\\*\\r\\n)/.exec(source)?.[0] || ''\n }\n } else if (extLowered === '') {\n // Extensionless pnpm/yarn - try common shebang formats\n // Handle pnpm installed via standalone installer or global install\n // Format: exec \"$basedir/node\" \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n // Note: may have multiple spaces between arguments\n relPath =\n /(?<=\"\\$basedir\\/)\\.tools\\/pnpm\\/[^\"]+(?=\"\\s+\"\\$@\")/.exec(\n source,\n )?.[0] || ''\n if (!relPath) {\n // Also try: exec node \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n relPath =\n /(?<=exec\\s+node\\s+\"\\$basedir\\/)\\.tools\\/pnpm\\/[^\"]+(?=\"\\s+\"\\$@\")/.exec(\n source,\n )?.[0] || ''\n }\n if (!relPath) {\n // Try standard cmd-shim format: exec node \"$basedir/../package/bin/binary.js\" \"$@\"\n relPath = /(?<=\"\\$basedir\\/).*(?=\" \"\\$@\"\\n)/.exec(source)?.[0] || ''\n }\n } else if (extLowered === '.ps1') {\n // PowerShell format\n relPath = /(?<=\"\\$basedir\\/).*(?=\" $args\\n)/.exec(source)?.[0] || ''\n }\n } else if (extLowered === '.cmd') {\n // \"bin.CMD\" generated by\n // https://github.com/npm/cmd-shim/blob/v7.0.0/lib/index.js#L98:\n //\n // @ECHO off\n // GOTO start\n // :find_dp0\n // SET dp0=%~dp0\n // EXIT /b\n // :start\n // SETLOCAL\n // CALL :find_dp0\n //\n // IF EXIST \"%dp0%\\node.exe\" (\n // SET \"_prog=%dp0%\\node.exe\"\n // ) ELSE (\n // SET \"_prog=node\"\n // SET PATHEXT=%PATHEXT:;.JS;=;%\n // )\n //\n // endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & \"%_prog%\" \"%dp0%\\..\\<PACKAGE_NAME>\\path\\to\\bin.js\" %*\n relPath = /(?<=\"%dp0%\\\\).*(?=\" %\\*\\r\\n)/.exec(source)?.[0] || ''\n } else if (extLowered === '') {\n // Extensionless \"bin\" generated by\n // https://github.com/npm/cmd-shim/blob/v7.0.0/lib/index.js#L138:\n //\n // #!/bin/sh\n // basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\,/,g')\")\n //\n // case `uname` in\n // *CYGWIN*|*MINGW*|*MSYS*)\n // if command -v cygpath > /dev/null 2>&1; then\n // basedir=`cygpath -w \"$basedir\"`\n // fi\n // ;;\n // esac\n //\n // if [ -x \"$basedir/node\" ]; then\n // exec \"$basedir/node\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" \"$@\"\n // else\n // exec node \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" \"$@\"\n // fi\n relPath = /(?<=\"$basedir\\/).*(?=\" \"\\$@\"\\n)/.exec(source)?.[0] || ''\n } else if (extLowered === '.ps1') {\n // \"bin.PS1\" generated by\n // https://github.com/npm/cmd-shim/blob/v7.0.0/lib/index.js#L192:\n //\n // #!/usr/bin/env pwsh\n // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n //\n // $exe=\"\"\n // if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n // # Fix case when both the Windows and Linux builds of Node\n // # are installed in the same directory\n // $exe=\".exe\"\n // }\n // $ret=0\n // if (Test-Path \"$basedir/node$exe\") {\n // # Support pipeline input\n // if ($MyInvocation.ExpectingInput) {\n // $input | & \"$basedir/node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // } else {\n // & \"$basedir/node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // }\n // $ret=$LASTEXITCODE\n // } else {\n // # Support pipeline input\n // if ($MyInvocation.ExpectingInput) {\n // $input | & \"node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // } else {\n // & \"node$exe\" \"$basedir/../<PACKAGE_NAME>/path/to/bin.js\" $args\n // }\n // $ret=$LASTEXITCODE\n // }\n // exit $ret\n relPath = /(?<=\"\\$basedir\\/).*(?=\" $args\\n)/.exec(source)?.[0] || ''\n }\n if (relPath) {\n binPath = normalizePath(path?.resolve(path?.dirname(binPath), relPath))\n }\n }\n } else {\n // Handle Unix shell scripts (non-Windows platforms)\n let hasNoExt = extLowered === ''\n const isPnpmOrYarn = basename === 'pnpm' || basename === 'yarn'\n const isNpmOrNpx = basename === 'npm' || basename === 'npx'\n\n // Handle special case where pnpm path in CI has extra segments.\n // In setup-pnpm GitHub Action, the path might be malformed like:\n // /home/user/setup-pnpm/node_modules/.bin/pnpm/bin/pnpm.cjs\n // This happens when the shell script contains a relative path that\n // when resolved, creates an invalid nested structure.\n if (isPnpmOrYarn && binPath.includes('/.bin/pnpm/bin/')) {\n // Extract the correct pnpm bin path.\n const binIndex = binPath.indexOf('/.bin/pnpm')\n if (binIndex !== -1) {\n // Get the base path up to /.bin/pnpm.\n const baseBinPath = binPath.slice(0, binIndex + '/.bin/pnpm'.length)\n // Check if the original shell script exists.\n try {\n const stats = fs?.statSync(baseBinPath)\n // Only use this path if it's a file (the shell script).\n if (stats.isFile()) {\n binPath = normalizePath(baseBinPath)\n // Recompute hasNoExt since we changed the path.\n hasNoExt = !path?.extname(binPath)\n }\n } catch {\n // If stat fails, continue with the original path.\n }\n }\n }\n\n if (\n hasNoExt &&\n (isPnpmOrYarn || isNpmOrNpx) &&\n // For extensionless files (Unix shell scripts), verify existence before reading.\n // This prevents ENOENT errors when the bin path doesn't exist.\n fs?.existsSync(binPath)\n ) {\n const source = fs?.readFileSync(binPath, 'utf8')\n let relPath = ''\n\n if (isPnpmOrYarn) {\n // Handle pnpm/yarn Unix shell scripts.\n // Format: exec \"$basedir/node\" \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n // or: exec node \"$basedir/.tools/pnpm/VERSION/...\" \"$@\"\n relPath =\n /(?<=\"\\$basedir\\/)\\.tools\\/[^\"]+(?=\"\\s+\"\\$@\")/.exec(source)?.[0] || ''\n if (!relPath) {\n // Try standard cmd-shim format: exec node \"$basedir/../package/bin/binary.js\" \"$@\"\n // Example: exec node \"$basedir/../pnpm/bin/pnpm.cjs\" \"$@\"\n // ^^^^^^^^^^^^^^^^^^^^^ captures this part\n // This regex needs to be more careful to not match \"$@\" at the end.\n relPath =\n /(?<=\"\\$basedir\\/)[^\"]+(?=\"\\s+\"\\$@\")/.exec(source)?.[0] || ''\n }\n // Special case for setup-pnpm GitHub Action which may use a different format.\n // The setup-pnpm action creates a shell script that references ../pnpm/bin/pnpm.cjs\n if (!relPath) {\n // Try to match: exec node \"$basedir/../pnpm/bin/pnpm.cjs\" \"$@\"\n const match = /exec\\s+node\\s+\"?\\$basedir\\/([^\"]+)\"?\\s+\"\\$@\"/.exec(\n source,\n )\n if (match) {\n relPath = match[1] || ''\n }\n }\n // Check if the extracted path looks wrong (e.g., pnpm/bin/pnpm.cjs without ../).\n // This happens with setup-pnpm action when it creates a malformed shell script.\n if (relPath && basename === 'pnpm' && relPath.startsWith('pnpm/')) {\n // The path should be ../pnpm/... not pnpm/...\n // Prepend ../ to fix the relative path.\n relPath = `../${relPath}`\n }\n } else if (isNpmOrNpx) {\n // Handle npm/npx Unix shell scripts\n relPath =\n basename === 'npm'\n ? /(?<=NPM_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] || ''\n : /(?<=NPX_CLI_JS=\"\\$CLI_BASEDIR\\/).*(?=\")/.exec(source)?.[0] || ''\n }\n\n if (relPath) {\n // Resolve the relative path to handle .. segments properly.\n binPath = normalizePath(path?.resolve(path?.dirname(binPath), relPath))\n }\n }\n }\n try {\n const realPath = fs?.realpathSync.native(binPath)\n return normalizePath(realPath)\n } catch {}\n // Return normalized path even if realpath fails.\n return normalizePath(binPath)\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["bin_exports", "__export", "execBin", "findRealBin", "findRealNpm", "findRealPnpm", "findRealYarn", "isShadowBinPath", "resolveBinPathSync", "whichBin", "whichBinSync", "__toCommonJS", "import_home", "import_windows", "import_xdg", "import_platform", "import_fs", "import_objects", "import_path", "import_spawn", "_fs", "getFs", "_path", "getPath", "_which", "getWhich", "binPath", "args", "options", "resolvedPath", "error", "binCommand", "binName", "which", "opts", "result", "paths", "p", "dirPath", "commonPaths", "fs", "path", "binDir", "allPaths", "pathsArray", "altPath", "altDir", "nodeDir", "npmInNodeDir", "npmPath", "resolved", "ext", "extLowered", "basename", "voltaIndex", "voltaPath", "voltaToolsPath", "voltaImagePath", "voltaUserPath", "voltaPlatform", "voltaNodeVersion", "voltaNpmVersion", "voltaBinPath", "relCliPath", "voltaUserBinPath", "binPackage", "hasKnownExt", "isNpmOrNpx", "isPnpmOrYarn", "quickPath", "relPath", "source", "hasNoExt", "binIndex", "baseBinPath", "match", "realPath"]
7
7
  }
package/dist/cacache.d.ts CHANGED
@@ -30,6 +30,10 @@ export interface RemoveOptions {
30
30
  */
31
31
  prefix?: string | undefined;
32
32
  }
33
+ /**
34
+ * Get the cacache module for cache operations.
35
+ */
36
+ export declare function getCacache(): any;
33
37
  /**
34
38
  * Clear entries from the Socket shared cache.
35
39
  *
package/dist/cacache.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /* Socket Lib - Built with esbuild */
2
- var s=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},x=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of h(t))!y.call(e,a)&&a!==n&&s(e,a,{get:()=>t[a],enumerable:!(r=l(t,a))||r.enumerable});return e};var w=e=>x(s({},"__esModule",{value:!0}),e);var k={};g(k,{clear:()=>T,get:()=>f,put:()=>O,remove:()=>b,safeGet:()=>C,withTmp:()=>v});module.exports=w(k);var c=require("./paths");function o(){return require("./external/cacache")}function E(e){const n=e.replaceAll(/[.+?^${}()|[\]\\]/g,"\\$&").replaceAll("*",".*");return new RegExp(`^${n}`)}function P(e,t){return t.includes("*")?E(t).test(e):e.startsWith(t)}async function T(e){const t={__proto__:null,...e},n=o(),r=(0,c.getSocketCacacheDir)();if(!t.prefix)try{await n.rm.all(r);return}catch(i){if(i?.code!=="ENOTEMPTY")throw i;return}if(!t.prefix.includes("*")){let i=0;const m=n.ls.stream(r);for await(const u of m)if(u.key.startsWith(t.prefix))try{await n.rm.entry(r,u.key),i++}catch{}return i}let d=0;const p=n.ls.stream(r);for await(const i of p)if(P(i.key,t.prefix))try{await n.rm.entry(r,i.key),d++}catch{}return d}async function f(e,t){if(e.includes("*"))throw new TypeError('Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: "pattern*" }).');return await o().get((0,c.getSocketCacacheDir)(),e,t)}async function O(e,t,n){if(e.includes("*"))throw new TypeError('Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: "pattern*" }).');return await o().put((0,c.getSocketCacacheDir)(),e,t,n)}async function b(e){if(e.includes("*"))throw new TypeError('Cache key cannot contain wildcards (*). Use clear({ prefix: "pattern*" }) to remove multiple entries.');return await o().rm.entry((0,c.getSocketCacacheDir)(),e)}async function C(e,t){try{return await f(e,t)}catch{return}}async function v(e){return await o().tmp.withTmp((0,c.getSocketCacacheDir)(),{},e)}0&&(module.exports={clear,get,put,remove,safeGet,withTmp});
2
+ var s=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},x=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of h(t))!y.call(e,a)&&a!==n&&s(e,a,{get:()=>t[a],enumerable:!(r=l(t,a))||r.enumerable});return e};var w=e=>x(s({},"__esModule",{value:!0}),e);var k={};g(k,{clear:()=>T,get:()=>f,getCacache:()=>o,put:()=>O,remove:()=>b,safeGet:()=>C,withTmp:()=>v});module.exports=w(k);var c=require("./paths");function o(){return require("./external/cacache")}function E(e){const n=e.replaceAll(/[.+?^${}()|[\]\\]/g,"\\$&").replaceAll("*",".*");return new RegExp(`^${n}`)}function P(e,t){return t.includes("*")?E(t).test(e):e.startsWith(t)}async function T(e){const t={__proto__:null,...e},n=o(),r=(0,c.getSocketCacacheDir)();if(!t.prefix)try{await n.rm.all(r);return}catch(i){if(i?.code!=="ENOTEMPTY")throw i;return}if(!t.prefix.includes("*")){let i=0;const m=n.ls.stream(r);for await(const u of m)if(u.key.startsWith(t.prefix))try{await n.rm.entry(r,u.key),i++}catch{}return i}let d=0;const p=n.ls.stream(r);for await(const i of p)if(P(i.key,t.prefix))try{await n.rm.entry(r,i.key),d++}catch{}return d}async function f(e,t){if(e.includes("*"))throw new TypeError('Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: "pattern*" }).');return await o().get((0,c.getSocketCacacheDir)(),e,t)}async function O(e,t,n){if(e.includes("*"))throw new TypeError('Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: "pattern*" }).');return await o().put((0,c.getSocketCacacheDir)(),e,t,n)}async function b(e){if(e.includes("*"))throw new TypeError('Cache key cannot contain wildcards (*). Use clear({ prefix: "pattern*" }) to remove multiple entries.');return await o().rm.entry((0,c.getSocketCacacheDir)(),e)}async function C(e,t){try{return await f(e,t)}catch{return}}async function v(e){return await o().tmp.withTmp((0,c.getSocketCacacheDir)(),{},e)}0&&(module.exports={clear,get,getCacache,put,remove,safeGet,withTmp});
3
3
  //# sourceMappingURL=cacache.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/cacache.ts"],
4
- "sourcesContent": ["/** @fileoverview Cacache utilities for Socket ecosystem shared content-addressable cache. */\n\nimport { getSocketCacacheDir } from './paths'\n\nexport interface GetOptions {\n integrity?: string | undefined\n size?: number | undefined\n memoize?: boolean | undefined\n}\n\nexport interface PutOptions {\n integrity?: string | undefined\n size?: number | undefined\n metadata?: any | undefined\n memoize?: boolean | undefined\n}\n\nexport interface CacheEntry {\n data: Buffer\n integrity: string\n key: string\n metadata?: any | undefined\n path: string\n size: number\n time: number\n}\n\nexport interface RemoveOptions {\n /**\n * Optional key prefix to filter removals.\n * If provided, only keys starting with this prefix will be removed.\n * Can include wildcards (*) for pattern matching.\n *\n * @example\n * { prefix: 'socket-sdk' } // Simple prefix\n * { prefix: 'socket-sdk:scans:abc*' } // With wildcard\n */\n prefix?: string | undefined\n}\n\n/**\n * Get the cacache module for cache operations.\n */\nfunction getCacache() {\n return /*@__PURE__*/ require('./external/cacache')\n}\n\n/**\n * Convert wildcard pattern to regex for matching.\n * Supports * as wildcard (matches any characters).\n */\nfunction patternToRegex(pattern: string): RegExp {\n // Escape regex special characters except *\n const escaped = pattern.replaceAll(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&')\n // Convert * to .* (match any characters)\n const regexPattern = escaped.replaceAll('*', '.*')\n return new RegExp(`^${regexPattern}`)\n}\n\n/**\n * Check if a key matches a pattern (with wildcard support).\n */\nfunction matchesPattern(key: string, pattern: string): boolean {\n // If no wildcards, use simple prefix matching (faster)\n if (!pattern.includes('*')) {\n return key.startsWith(pattern)\n }\n // Use regex for wildcard patterns\n const regex = patternToRegex(pattern)\n return regex.test(key)\n}\n\n/**\n * Clear entries from the Socket shared cache.\n *\n * Supports wildcard patterns (*) in prefix for flexible matching.\n * For simple prefixes without wildcards, uses efficient streaming.\n * For wildcard patterns, iterates and matches each entry.\n *\n * @param options - Optional configuration for selective clearing\n * @param options.prefix - Prefix or pattern to match (supports * wildcards)\n * @returns Number of entries removed (only when prefix is specified)\n *\n * @example\n * // Clear all entries\n * await clear()\n *\n * @example\n * // Clear entries with simple prefix\n * const removed = await clear({ prefix: 'socket-sdk:scans' })\n * console.log(`Removed ${removed} scan cache entries`)\n *\n * @example\n * // Clear entries with wildcard pattern\n * await clear({ prefix: 'socket-sdk:scans:abc*' })\n * await clear({ prefix: 'socket-sdk:npm/lodash/*' })\n */\nexport async function clear(\n options?: RemoveOptions | undefined,\n): Promise<number | undefined> {\n const opts = { __proto__: null, ...options } as RemoveOptions\n const cacache = getCacache()\n const cacheDir = getSocketCacacheDir()\n\n // If no prefix specified, clear everything.\n if (!opts.prefix) {\n try {\n await cacache.rm.all(cacheDir)\n return\n } catch (e) {\n // Ignore ENOTEMPTY errors - can occur when multiple processes\n // are cleaning up concurrently (e.g., in CI test environments).\n if ((e as NodeJS.ErrnoException)?.code !== 'ENOTEMPTY') {\n throw e\n }\n return\n }\n }\n\n const hasWildcard = opts.prefix.includes('*')\n\n // For simple prefix (no wildcards), use faster iteration.\n if (!hasWildcard) {\n let removed = 0\n const stream = cacache.ls.stream(cacheDir)\n\n for await (const entry of stream) {\n if (entry.key.startsWith(opts.prefix)) {\n try {\n await cacache.rm.entry(cacheDir, entry.key)\n removed++\n } catch {\n // Ignore individual removal errors (e.g., already removed by another process).\n }\n }\n }\n\n return removed\n }\n\n // For wildcard patterns, need to match each entry.\n let removed = 0\n const stream = cacache.ls.stream(cacheDir)\n\n for await (const entry of stream) {\n if (matchesPattern(entry.key, opts.prefix)) {\n try {\n await cacache.rm.entry(cacheDir, entry.key)\n removed++\n } catch {\n // Ignore individual removal errors.\n }\n }\n }\n\n return removed\n}\n\n/**\n * Get data from the Socket shared cache by key.\n * @throws {Error} When cache entry is not found.\n * @throws {TypeError} If key contains wildcards (*)\n */\nexport async function get(\n key: string,\n options?: GetOptions | undefined,\n): Promise<CacheEntry> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: \"pattern*\" }).',\n )\n }\n const cacache = getCacache() as any\n return await cacache.get(getSocketCacacheDir(), key, options)\n}\n\n/**\n * Put data into the Socket shared cache with a key.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\nexport async function put(\n key: string,\n data: string | Buffer,\n options?: PutOptions | undefined,\n) {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: \"pattern*\" }).',\n )\n }\n const cacache = getCacache()\n return await cacache.put(getSocketCacacheDir(), key, data, options)\n}\n\n/**\n * Remove an entry from the Socket shared cache by key.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\nexport async function remove(key: string): Promise<unknown> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Use clear({ prefix: \"pattern*\" }) to remove multiple entries.',\n )\n }\n const cacache = getCacache() as any\n return await cacache.rm.entry(getSocketCacacheDir(), key)\n}\n\n/**\n * Get data from the Socket shared cache by key without throwing.\n */\nexport async function safeGet(\n key: string,\n options?: GetOptions | undefined,\n): Promise<CacheEntry | undefined> {\n try {\n return await get(key, options)\n } catch {\n return undefined\n }\n}\n\n/**\n * Execute a callback with a temporary directory for cache operations.\n */\nexport async function withTmp<T>(\n callback: (tmpDirPath: string) => Promise<T>,\n): Promise<T> {\n const cacache = getCacache()\n // The DefinitelyTyped types for cacache.tmp.withTmp are incorrect.\n // It actually returns the callback's return value, not void.\n return (await cacache.tmp.withTmp(\n getSocketCacacheDir(),\n {},\n callback as any,\n )) as T\n}\n"],
5
- "mappings": ";4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,QAAAC,EAAA,QAAAC,EAAA,WAAAC,EAAA,YAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAR,GAEA,IAAAS,EAAoC,mBAyCpC,SAASC,GAAa,CACpB,MAAqB,SAAQ,oBAAoB,CACnD,CAMA,SAASC,EAAeC,EAAyB,CAI/C,MAAMC,EAFUD,EAAQ,WAAW,qBAAsB,MAAM,EAElC,WAAW,IAAK,IAAI,EACjD,OAAO,IAAI,OAAO,IAAIC,CAAY,EAAE,CACtC,CAKA,SAASC,EAAeC,EAAaH,EAA0B,CAE7D,OAAKA,EAAQ,SAAS,GAAG,EAIXD,EAAeC,CAAO,EACvB,KAAKG,CAAG,EAJZA,EAAI,WAAWH,CAAO,CAKjC,CA2BA,eAAsBV,EACpBc,EAC6B,CAC7B,MAAMC,EAAO,CAAE,UAAW,KAAM,GAAGD,CAAQ,EACrCE,EAAUR,EAAW,EACrBS,KAAW,uBAAoB,EAGrC,GAAI,CAACF,EAAK,OACR,GAAI,CACF,MAAMC,EAAQ,GAAG,IAAIC,CAAQ,EAC7B,MACF,OAASC,EAAG,CAGV,GAAKA,GAA6B,OAAS,YACzC,MAAMA,EAER,MACF,CAMF,GAAI,CAHgBH,EAAK,OAAO,SAAS,GAAG,EAG1B,CAChB,IAAII,EAAU,EACd,MAAMC,EAASJ,EAAQ,GAAG,OAAOC,CAAQ,EAEzC,gBAAiBI,KAASD,EACxB,GAAIC,EAAM,IAAI,WAAWN,EAAK,MAAM,EAClC,GAAI,CACF,MAAMC,EAAQ,GAAG,MAAMC,EAAUI,EAAM,GAAG,EAC1CF,GACF,MAAQ,CAER,CAIJ,OAAOA,CACT,CAGA,IAAIA,EAAU,EACd,MAAMC,EAASJ,EAAQ,GAAG,OAAOC,CAAQ,EAEzC,gBAAiBI,KAASD,EACxB,GAAIR,EAAeS,EAAM,IAAKN,EAAK,MAAM,EACvC,GAAI,CACF,MAAMC,EAAQ,GAAG,MAAMC,EAAUI,EAAM,GAAG,EAC1CF,GACF,MAAQ,CAER,CAIJ,OAAOA,CACT,CAOA,eAAsBlB,EACpBY,EACAC,EACqB,CACrB,GAAID,EAAI,SAAS,GAAG,EAClB,MAAM,IAAI,UACR,wGACF,EAGF,OAAO,MADSL,EAAW,EACN,OAAI,uBAAoB,EAAGK,EAAKC,CAAO,CAC9D,CAOA,eAAsBZ,EACpBW,EACAS,EACAR,EACA,CACA,GAAID,EAAI,SAAS,GAAG,EAClB,MAAM,IAAI,UACR,wGACF,EAGF,OAAO,MADSL,EAAW,EACN,OAAI,uBAAoB,EAAGK,EAAKS,EAAMR,CAAO,CACpE,CAOA,eAAsBX,EAAOU,EAA+B,CAC1D,GAAIA,EAAI,SAAS,GAAG,EAClB,MAAM,IAAI,UACR,uGACF,EAGF,OAAO,MADSL,EAAW,EACN,GAAG,SAAM,uBAAoB,EAAGK,CAAG,CAC1D,CAKA,eAAsBT,EACpBS,EACAC,EACiC,CACjC,GAAI,CACF,OAAO,MAAMb,EAAIY,EAAKC,CAAO,CAC/B,MAAQ,CACN,MACF,CACF,CAKA,eAAsBT,EACpBkB,EACY,CAIZ,OAAQ,MAHQf,EAAW,EAGL,IAAI,WACxB,uBAAoB,EACpB,CAAC,EACDe,CACF,CACF",
6
- "names": ["cacache_exports", "__export", "clear", "get", "put", "remove", "safeGet", "withTmp", "__toCommonJS", "import_paths", "getCacache", "patternToRegex", "pattern", "regexPattern", "matchesPattern", "key", "options", "opts", "cacache", "cacheDir", "e", "removed", "stream", "entry", "data", "callback"]
4
+ "sourcesContent": ["/** @fileoverview Cacache utilities for Socket ecosystem shared content-addressable cache. */\n\nimport { getSocketCacacheDir } from './paths'\n\nexport interface GetOptions {\n integrity?: string | undefined\n size?: number | undefined\n memoize?: boolean | undefined\n}\n\nexport interface PutOptions {\n integrity?: string | undefined\n size?: number | undefined\n metadata?: any | undefined\n memoize?: boolean | undefined\n}\n\nexport interface CacheEntry {\n data: Buffer\n integrity: string\n key: string\n metadata?: any | undefined\n path: string\n size: number\n time: number\n}\n\nexport interface RemoveOptions {\n /**\n * Optional key prefix to filter removals.\n * If provided, only keys starting with this prefix will be removed.\n * Can include wildcards (*) for pattern matching.\n *\n * @example\n * { prefix: 'socket-sdk' } // Simple prefix\n * { prefix: 'socket-sdk:scans:abc*' } // With wildcard\n */\n prefix?: string | undefined\n}\n\n/**\n * Get the cacache module for cache operations.\n */\nexport function getCacache() {\n return /*@__PURE__*/ require('./external/cacache')\n}\n\n/**\n * Convert wildcard pattern to regex for matching.\n * Supports * as wildcard (matches any characters).\n */\nfunction patternToRegex(pattern: string): RegExp {\n // Escape regex special characters except *\n const escaped = pattern.replaceAll(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&')\n // Convert * to .* (match any characters)\n const regexPattern = escaped.replaceAll('*', '.*')\n return new RegExp(`^${regexPattern}`)\n}\n\n/**\n * Check if a key matches a pattern (with wildcard support).\n */\nfunction matchesPattern(key: string, pattern: string): boolean {\n // If no wildcards, use simple prefix matching (faster)\n if (!pattern.includes('*')) {\n return key.startsWith(pattern)\n }\n // Use regex for wildcard patterns\n const regex = patternToRegex(pattern)\n return regex.test(key)\n}\n\n/**\n * Clear entries from the Socket shared cache.\n *\n * Supports wildcard patterns (*) in prefix for flexible matching.\n * For simple prefixes without wildcards, uses efficient streaming.\n * For wildcard patterns, iterates and matches each entry.\n *\n * @param options - Optional configuration for selective clearing\n * @param options.prefix - Prefix or pattern to match (supports * wildcards)\n * @returns Number of entries removed (only when prefix is specified)\n *\n * @example\n * // Clear all entries\n * await clear()\n *\n * @example\n * // Clear entries with simple prefix\n * const removed = await clear({ prefix: 'socket-sdk:scans' })\n * console.log(`Removed ${removed} scan cache entries`)\n *\n * @example\n * // Clear entries with wildcard pattern\n * await clear({ prefix: 'socket-sdk:scans:abc*' })\n * await clear({ prefix: 'socket-sdk:npm/lodash/*' })\n */\nexport async function clear(\n options?: RemoveOptions | undefined,\n): Promise<number | undefined> {\n const opts = { __proto__: null, ...options } as RemoveOptions\n const cacache = getCacache()\n const cacheDir = getSocketCacacheDir()\n\n // If no prefix specified, clear everything.\n if (!opts.prefix) {\n try {\n await cacache.rm.all(cacheDir)\n return\n } catch (e) {\n // Ignore ENOTEMPTY errors - can occur when multiple processes\n // are cleaning up concurrently (e.g., in CI test environments).\n if ((e as NodeJS.ErrnoException)?.code !== 'ENOTEMPTY') {\n throw e\n }\n return\n }\n }\n\n const hasWildcard = opts.prefix.includes('*')\n\n // For simple prefix (no wildcards), use faster iteration.\n if (!hasWildcard) {\n let removed = 0\n const stream = cacache.ls.stream(cacheDir)\n\n for await (const entry of stream) {\n if (entry.key.startsWith(opts.prefix)) {\n try {\n await cacache.rm.entry(cacheDir, entry.key)\n removed++\n } catch {\n // Ignore individual removal errors (e.g., already removed by another process).\n }\n }\n }\n\n return removed\n }\n\n // For wildcard patterns, need to match each entry.\n let removed = 0\n const stream = cacache.ls.stream(cacheDir)\n\n for await (const entry of stream) {\n if (matchesPattern(entry.key, opts.prefix)) {\n try {\n await cacache.rm.entry(cacheDir, entry.key)\n removed++\n } catch {\n // Ignore individual removal errors.\n }\n }\n }\n\n return removed\n}\n\n/**\n * Get data from the Socket shared cache by key.\n * @throws {Error} When cache entry is not found.\n * @throws {TypeError} If key contains wildcards (*)\n */\nexport async function get(\n key: string,\n options?: GetOptions | undefined,\n): Promise<CacheEntry> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: \"pattern*\" }).',\n )\n }\n const cacache = getCacache() as any\n return await cacache.get(getSocketCacacheDir(), key, options)\n}\n\n/**\n * Put data into the Socket shared cache with a key.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\nexport async function put(\n key: string,\n data: string | Buffer,\n options?: PutOptions | undefined,\n) {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: \"pattern*\" }).',\n )\n }\n const cacache = getCacache()\n return await cacache.put(getSocketCacacheDir(), key, data, options)\n}\n\n/**\n * Remove an entry from the Socket shared cache by key.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\nexport async function remove(key: string): Promise<unknown> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Use clear({ prefix: \"pattern*\" }) to remove multiple entries.',\n )\n }\n const cacache = getCacache() as any\n return await cacache.rm.entry(getSocketCacacheDir(), key)\n}\n\n/**\n * Get data from the Socket shared cache by key without throwing.\n */\nexport async function safeGet(\n key: string,\n options?: GetOptions | undefined,\n): Promise<CacheEntry | undefined> {\n try {\n return await get(key, options)\n } catch {\n return undefined\n }\n}\n\n/**\n * Execute a callback with a temporary directory for cache operations.\n */\nexport async function withTmp<T>(\n callback: (tmpDirPath: string) => Promise<T>,\n): Promise<T> {\n const cacache = getCacache()\n // The DefinitelyTyped types for cacache.tmp.withTmp are incorrect.\n // It actually returns the callback's return value, not void.\n return (await cacache.tmp.withTmp(\n getSocketCacacheDir(),\n {},\n callback as any,\n )) as T\n}\n"],
5
+ "mappings": ";4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,QAAAC,EAAA,eAAAC,EAAA,QAAAC,EAAA,WAAAC,EAAA,YAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAT,GAEA,IAAAU,EAAoC,mBAyC7B,SAASN,GAAa,CAC3B,MAAqB,SAAQ,oBAAoB,CACnD,CAMA,SAASO,EAAeC,EAAyB,CAI/C,MAAMC,EAFUD,EAAQ,WAAW,qBAAsB,MAAM,EAElC,WAAW,IAAK,IAAI,EACjD,OAAO,IAAI,OAAO,IAAIC,CAAY,EAAE,CACtC,CAKA,SAASC,EAAeC,EAAaH,EAA0B,CAE7D,OAAKA,EAAQ,SAAS,GAAG,EAIXD,EAAeC,CAAO,EACvB,KAAKG,CAAG,EAJZA,EAAI,WAAWH,CAAO,CAKjC,CA2BA,eAAsBV,EACpBc,EAC6B,CAC7B,MAAMC,EAAO,CAAE,UAAW,KAAM,GAAGD,CAAQ,EACrCE,EAAUd,EAAW,EACrBe,KAAW,uBAAoB,EAGrC,GAAI,CAACF,EAAK,OACR,GAAI,CACF,MAAMC,EAAQ,GAAG,IAAIC,CAAQ,EAC7B,MACF,OAASC,EAAG,CAGV,GAAKA,GAA6B,OAAS,YACzC,MAAMA,EAER,MACF,CAMF,GAAI,CAHgBH,EAAK,OAAO,SAAS,GAAG,EAG1B,CAChB,IAAII,EAAU,EACd,MAAMC,EAASJ,EAAQ,GAAG,OAAOC,CAAQ,EAEzC,gBAAiBI,KAASD,EACxB,GAAIC,EAAM,IAAI,WAAWN,EAAK,MAAM,EAClC,GAAI,CACF,MAAMC,EAAQ,GAAG,MAAMC,EAAUI,EAAM,GAAG,EAC1CF,GACF,MAAQ,CAER,CAIJ,OAAOA,CACT,CAGA,IAAIA,EAAU,EACd,MAAMC,EAASJ,EAAQ,GAAG,OAAOC,CAAQ,EAEzC,gBAAiBI,KAASD,EACxB,GAAIR,EAAeS,EAAM,IAAKN,EAAK,MAAM,EACvC,GAAI,CACF,MAAMC,EAAQ,GAAG,MAAMC,EAAUI,EAAM,GAAG,EAC1CF,GACF,MAAQ,CAER,CAIJ,OAAOA,CACT,CAOA,eAAsBlB,EACpBY,EACAC,EACqB,CACrB,GAAID,EAAI,SAAS,GAAG,EAClB,MAAM,IAAI,UACR,wGACF,EAGF,OAAO,MADSX,EAAW,EACN,OAAI,uBAAoB,EAAGW,EAAKC,CAAO,CAC9D,CAOA,eAAsBX,EACpBU,EACAS,EACAR,EACA,CACA,GAAID,EAAI,SAAS,GAAG,EAClB,MAAM,IAAI,UACR,wGACF,EAGF,OAAO,MADSX,EAAW,EACN,OAAI,uBAAoB,EAAGW,EAAKS,EAAMR,CAAO,CACpE,CAOA,eAAsBV,EAAOS,EAA+B,CAC1D,GAAIA,EAAI,SAAS,GAAG,EAClB,MAAM,IAAI,UACR,uGACF,EAGF,OAAO,MADSX,EAAW,EACN,GAAG,SAAM,uBAAoB,EAAGW,CAAG,CAC1D,CAKA,eAAsBR,EACpBQ,EACAC,EACiC,CACjC,GAAI,CACF,OAAO,MAAMb,EAAIY,EAAKC,CAAO,CAC/B,MAAQ,CACN,MACF,CACF,CAKA,eAAsBR,EACpBiB,EACY,CAIZ,OAAQ,MAHQrB,EAAW,EAGL,IAAI,WACxB,uBAAoB,EACpB,CAAC,EACDqB,CACF,CACF",
6
+ "names": ["cacache_exports", "__export", "clear", "get", "getCacache", "put", "remove", "safeGet", "withTmp", "__toCommonJS", "import_paths", "patternToRegex", "pattern", "regexPattern", "matchesPattern", "key", "options", "opts", "cacache", "cacheDir", "e", "removed", "stream", "entry", "data", "callback"]
7
7
  }
@@ -1,3 +1,3 @@
1
1
  /* Socket Lib - Built with esbuild */
2
- var g=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var k=(e,t)=>{for(var r in t)g(e,r,{get:t[r],enumerable:!0})},x=(e,t,r,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of d(t))!h.call(e,n)&&n!==r&&g(e,n,{get:()=>t[n],enumerable:!(c=l(t,n))||c.enumerable});return e};var y=e=>x(g({},"__esModule",{value:!0}),e);var T={};k(T,{AT_LATEST:()=>_,LATEST:()=>m,PACKAGE:()=>P,PACKAGE_DEFAULT_VERSION:()=>E,getLifecycleScriptNames:()=>q,getNpmLifecycleEvent:()=>S,getPackageDefaultNodeRange:()=>w,getPackageDefaultSocketCategories:()=>A,getPackageExtensions:()=>C,getPackumentCache:()=>N,getPacoteCachePath:()=>R});module.exports=y(T);var p=require("#env/npm-lifecycle-event");let o,a,i,s,u,f;const P="package",_="@latest",m="latest",E="1.0.0";function w(){if(a===void 0)try{a=require("../lib/package-default-node-range")}catch{a=">=18"}return a}function A(){if(i===void 0)try{i=require("../lib/package-default-socket-categories")}catch{i=[]}return i}function C(){if(s===void 0)try{const e=require("../lib/package-extensions");s=Object.entries(e)}catch{s=[]}return s}function S(){return p.npm_lifecycle_event}function q(){if(o===void 0)try{o=require("../lib/lifecycle-script-names")}catch{o=[]}return o}function N(){return f===void 0&&(f=new Map),f}function R(){if(u===void 0)try{const e=require("../external/pacote"),{normalizePath:t}=require("../lib/path"),c=Reflect.getPrototypeOf(e.RegistryFetcher.prototype)?.constructor,n=c?new c("x",{}).cache:"";u=t(n)}catch{u=""}return u}0&&(module.exports={AT_LATEST,LATEST,PACKAGE,PACKAGE_DEFAULT_VERSION,getLifecycleScriptNames,getNpmLifecycleEvent,getPackageDefaultNodeRange,getPackageDefaultSocketCategories,getPackageExtensions,getPackumentCache,getPacoteCachePath});
2
+ var g=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var k=(e,t)=>{for(var r in t)g(e,r,{get:t[r],enumerable:!0})},y=(e,t,r,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of d(t))!h.call(e,n)&&n!==r&&g(e,n,{get:()=>t[n],enumerable:!(c=l(t,n))||c.enumerable});return e};var x=e=>y(g({},"__esModule",{value:!0}),e);var R={};k(R,{AT_LATEST:()=>E,LATEST:()=>m,PACKAGE:()=>P,PACKAGE_DEFAULT_VERSION:()=>_,getLifecycleScriptNames:()=>L,getNpmLifecycleEvent:()=>N,getPackageDefaultNodeRange:()=>w,getPackageDefaultSocketCategories:()=>A,getPackageExtensions:()=>C,getPackumentCache:()=>S,getPacoteCachePath:()=>q});module.exports=x(R);var p=require("#env/npm");let o,a,i,s,u,f;const P="package",E="@latest",m="latest",_="1.0.0";function w(){if(a===void 0)try{a=require("../lib/package-default-node-range")}catch{a=">=18"}return a}function A(){if(i===void 0)try{i=require("../lib/package-default-socket-categories")}catch{i=[]}return i}function C(){if(s===void 0)try{const e=require("../lib/package-extensions");s=Object.entries(e)}catch{s=[]}return s}function N(){return(0,p.getNpmLifecycleEvent)()}function L(){if(o===void 0)try{o=require("../lib/lifecycle-script-names")}catch{o=[]}return o}function S(){return f===void 0&&(f=new Map),f}function q(){if(u===void 0)try{const e=require("../external/pacote"),{normalizePath:t}=require("../lib/path"),c=Reflect.getPrototypeOf(e.RegistryFetcher.prototype)?.constructor,n=c?new c("x",{}).cache:"";u=t(n)}catch{u=""}return u}0&&(module.exports={AT_LATEST,LATEST,PACKAGE,PACKAGE_DEFAULT_VERSION,getLifecycleScriptNames,getNpmLifecycleEvent,getPackageDefaultNodeRange,getPackageDefaultSocketCategories,getPackageExtensions,getPackumentCache,getPacoteCachePath});
3
3
  //# sourceMappingURL=packages.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/constants/packages.ts"],
4
- "sourcesContent": ["/**\n * Package metadata, defaults, extensions, and lifecycle scripts.\n */\n\nimport { npm_lifecycle_event } from '#env/npm-lifecycle-event'\n\nlet _lifecycleScriptNames: string[]\nlet _packageDefaultNodeRange: string | undefined\nlet _packageDefaultSocketCategories: readonly string[]\nlet _packageExtensions: Iterable<[string, unknown]>\nlet _pacoteCachePath: string\nlet _packumentCache: Map<string, unknown>\n\n// Package constants.\nexport const PACKAGE = 'package'\nexport const AT_LATEST = '@latest'\nexport const LATEST = 'latest'\nexport const PACKAGE_DEFAULT_VERSION = '1.0.0'\n\n// Package default Node range.\nexport function getPackageDefaultNodeRange(): string | undefined {\n if (_packageDefaultNodeRange === undefined) {\n try {\n _packageDefaultNodeRange = require('../lib/package-default-node-range')\n } catch {\n _packageDefaultNodeRange = '>=18'\n }\n }\n return _packageDefaultNodeRange\n}\n\n// Package default Socket categories.\nexport function getPackageDefaultSocketCategories() {\n if (_packageDefaultSocketCategories === undefined) {\n try {\n _packageDefaultSocketCategories = require('../lib/package-default-socket-categories')\n } catch {\n _packageDefaultSocketCategories = []\n }\n }\n return _packageDefaultSocketCategories\n}\n\n// Package extensions.\nexport function getPackageExtensions(): Iterable<[string, unknown]> {\n if (_packageExtensions === undefined) {\n try {\n const exts = require('../lib/package-extensions')\n _packageExtensions = Object.entries(exts)\n } catch {\n _packageExtensions = []\n }\n }\n return _packageExtensions\n}\n\n// NPM lifecycle event.\nexport function getNpmLifecycleEvent(): string | undefined {\n return npm_lifecycle_event\n}\n\n// Lifecycle script names.\nexport function getLifecycleScriptNames(): string[] {\n if (_lifecycleScriptNames === undefined) {\n try {\n _lifecycleScriptNames = require('../lib/lifecycle-script-names')\n } catch {\n _lifecycleScriptNames = []\n }\n }\n return _lifecycleScriptNames\n}\n\n// Packument cache.\nexport function getPackumentCache(): Map<string, unknown> {\n if (_packumentCache === undefined) {\n _packumentCache = new Map()\n }\n return _packumentCache\n}\n\n// Pacote cache path.\nexport function getPacoteCachePath(): string {\n if (_pacoteCachePath === undefined) {\n try {\n const pacote = require('../external/pacote')\n const { normalizePath } = require('../lib/path')\n const proto = Reflect.getPrototypeOf(\n (pacote as { RegistryFetcher: { prototype: object } }).RegistryFetcher\n .prototype,\n ) as { constructor?: new (...args: unknown[]) => { cache: string } }\n const PacoteFetcherBase = proto?.constructor\n const cachePath = PacoteFetcherBase\n ? new PacoteFetcherBase(/*dummy package spec*/ 'x', {}).cache\n : ''\n _pacoteCachePath = normalizePath(cachePath)\n } catch {\n _pacoteCachePath = ''\n }\n }\n return _pacoteCachePath\n}\n"],
5
- "mappings": ";4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,EAAA,WAAAC,EAAA,YAAAC,EAAA,4BAAAC,EAAA,4BAAAC,EAAA,yBAAAC,EAAA,+BAAAC,EAAA,sCAAAC,EAAA,yBAAAC,EAAA,sBAAAC,EAAA,uBAAAC,IAAA,eAAAC,EAAAb,GAIA,IAAAc,EAAoC,oCAEpC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGG,MAAMhB,EAAU,UACVF,EAAY,UACZC,EAAS,SACTE,EAA0B,QAGhC,SAASG,GAAiD,CAC/D,GAAIQ,IAA6B,OAC/B,GAAI,CACFA,EAA2B,QAAQ,mCAAmC,CACxE,MAAQ,CACNA,EAA2B,MAC7B,CAEF,OAAOA,CACT,CAGO,SAASP,GAAoC,CAClD,GAAIQ,IAAoC,OACtC,GAAI,CACFA,EAAkC,QAAQ,0CAA0C,CACtF,MAAQ,CACNA,EAAkC,CAAC,CACrC,CAEF,OAAOA,CACT,CAGO,SAASP,GAAoD,CAClE,GAAIQ,IAAuB,OACzB,GAAI,CACF,MAAMG,EAAO,QAAQ,2BAA2B,EAChDH,EAAqB,OAAO,QAAQG,CAAI,CAC1C,MAAQ,CACNH,EAAqB,CAAC,CACxB,CAEF,OAAOA,CACT,CAGO,SAASX,GAA2C,CACzD,OAAO,qBACT,CAGO,SAASD,GAAoC,CAClD,GAAIS,IAA0B,OAC5B,GAAI,CACFA,EAAwB,QAAQ,+BAA+B,CACjE,MAAQ,CACNA,EAAwB,CAAC,CAC3B,CAEF,OAAOA,CACT,CAGO,SAASJ,GAA0C,CACxD,OAAIS,IAAoB,SACtBA,EAAkB,IAAI,KAEjBA,CACT,CAGO,SAASR,GAA6B,CAC3C,GAAIO,IAAqB,OACvB,GAAI,CACF,MAAMG,EAAS,QAAQ,oBAAoB,EACrC,CAAE,cAAAC,CAAc,EAAI,QAAQ,aAAa,EAKzCC,EAJQ,QAAQ,eACnBF,EAAsD,gBACpD,SACL,GACiC,YAC3BG,EAAYD,EACd,IAAIA,EAAyC,IAAK,CAAC,CAAC,EAAE,MACtD,GACJL,EAAmBI,EAAcE,CAAS,CAC5C,MAAQ,CACNN,EAAmB,EACrB,CAEF,OAAOA,CACT",
6
- "names": ["packages_exports", "__export", "AT_LATEST", "LATEST", "PACKAGE", "PACKAGE_DEFAULT_VERSION", "getLifecycleScriptNames", "getNpmLifecycleEvent", "getPackageDefaultNodeRange", "getPackageDefaultSocketCategories", "getPackageExtensions", "getPackumentCache", "getPacoteCachePath", "__toCommonJS", "import_npm_lifecycle_event", "_lifecycleScriptNames", "_packageDefaultNodeRange", "_packageDefaultSocketCategories", "_packageExtensions", "_pacoteCachePath", "_packumentCache", "exts", "pacote", "normalizePath", "PacoteFetcherBase", "cachePath"]
4
+ "sourcesContent": ["/**\n * Package metadata, defaults, extensions, and lifecycle scripts.\n */\n\nimport { getNpmLifecycleEvent as getNpmLifecycleEventEnv } from '#env/npm'\n\nlet _lifecycleScriptNames: string[]\nlet _packageDefaultNodeRange: string | undefined\nlet _packageDefaultSocketCategories: readonly string[]\nlet _packageExtensions: Iterable<[string, unknown]>\nlet _pacoteCachePath: string\nlet _packumentCache: Map<string, unknown>\n\n// Package constants.\nexport const PACKAGE = 'package'\nexport const AT_LATEST = '@latest'\nexport const LATEST = 'latest'\nexport const PACKAGE_DEFAULT_VERSION = '1.0.0'\n\n// Package default Node range.\nexport function getPackageDefaultNodeRange(): string | undefined {\n if (_packageDefaultNodeRange === undefined) {\n try {\n _packageDefaultNodeRange = require('../lib/package-default-node-range')\n } catch {\n _packageDefaultNodeRange = '>=18'\n }\n }\n return _packageDefaultNodeRange\n}\n\n// Package default Socket categories.\nexport function getPackageDefaultSocketCategories() {\n if (_packageDefaultSocketCategories === undefined) {\n try {\n _packageDefaultSocketCategories = require('../lib/package-default-socket-categories')\n } catch {\n _packageDefaultSocketCategories = []\n }\n }\n return _packageDefaultSocketCategories\n}\n\n// Package extensions.\nexport function getPackageExtensions(): Iterable<[string, unknown]> {\n if (_packageExtensions === undefined) {\n try {\n const exts = require('../lib/package-extensions')\n _packageExtensions = Object.entries(exts)\n } catch {\n _packageExtensions = []\n }\n }\n return _packageExtensions\n}\n\n// NPM lifecycle event.\nexport function getNpmLifecycleEvent(): string | undefined {\n return getNpmLifecycleEventEnv()\n}\n\n// Lifecycle script names.\nexport function getLifecycleScriptNames(): string[] {\n if (_lifecycleScriptNames === undefined) {\n try {\n _lifecycleScriptNames = require('../lib/lifecycle-script-names')\n } catch {\n _lifecycleScriptNames = []\n }\n }\n return _lifecycleScriptNames\n}\n\n// Packument cache.\nexport function getPackumentCache(): Map<string, unknown> {\n if (_packumentCache === undefined) {\n _packumentCache = new Map()\n }\n return _packumentCache\n}\n\n// Pacote cache path.\nexport function getPacoteCachePath(): string {\n if (_pacoteCachePath === undefined) {\n try {\n const pacote = require('../external/pacote')\n const { normalizePath } = require('../lib/path')\n const proto = Reflect.getPrototypeOf(\n (pacote as { RegistryFetcher: { prototype: object } }).RegistryFetcher\n .prototype,\n ) as { constructor?: new (...args: unknown[]) => { cache: string } }\n const PacoteFetcherBase = proto?.constructor\n const cachePath = PacoteFetcherBase\n ? new PacoteFetcherBase(/*dummy package spec*/ 'x', {}).cache\n : ''\n _pacoteCachePath = normalizePath(cachePath)\n } catch {\n _pacoteCachePath = ''\n }\n }\n return _pacoteCachePath\n}\n"],
5
+ "mappings": ";4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,EAAA,WAAAC,EAAA,YAAAC,EAAA,4BAAAC,EAAA,4BAAAC,EAAA,yBAAAC,EAAA,+BAAAC,EAAA,sCAAAC,EAAA,yBAAAC,EAAA,sBAAAC,EAAA,uBAAAC,IAAA,eAAAC,EAAAb,GAIA,IAAAc,EAAgE,oBAEhE,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGG,MAAMhB,EAAU,UACVF,EAAY,UACZC,EAAS,SACTE,EAA0B,QAGhC,SAASG,GAAiD,CAC/D,GAAIQ,IAA6B,OAC/B,GAAI,CACFA,EAA2B,QAAQ,mCAAmC,CACxE,MAAQ,CACNA,EAA2B,MAC7B,CAEF,OAAOA,CACT,CAGO,SAASP,GAAoC,CAClD,GAAIQ,IAAoC,OACtC,GAAI,CACFA,EAAkC,QAAQ,0CAA0C,CACtF,MAAQ,CACNA,EAAkC,CAAC,CACrC,CAEF,OAAOA,CACT,CAGO,SAASP,GAAoD,CAClE,GAAIQ,IAAuB,OACzB,GAAI,CACF,MAAMG,EAAO,QAAQ,2BAA2B,EAChDH,EAAqB,OAAO,QAAQG,CAAI,CAC1C,MAAQ,CACNH,EAAqB,CAAC,CACxB,CAEF,OAAOA,CACT,CAGO,SAASX,GAA2C,CACzD,SAAO,EAAAe,sBAAwB,CACjC,CAGO,SAAShB,GAAoC,CAClD,GAAIS,IAA0B,OAC5B,GAAI,CACFA,EAAwB,QAAQ,+BAA+B,CACjE,MAAQ,CACNA,EAAwB,CAAC,CAC3B,CAEF,OAAOA,CACT,CAGO,SAASJ,GAA0C,CACxD,OAAIS,IAAoB,SACtBA,EAAkB,IAAI,KAEjBA,CACT,CAGO,SAASR,GAA6B,CAC3C,GAAIO,IAAqB,OACvB,GAAI,CACF,MAAMI,EAAS,QAAQ,oBAAoB,EACrC,CAAE,cAAAC,CAAc,EAAI,QAAQ,aAAa,EAKzCC,EAJQ,QAAQ,eACnBF,EAAsD,gBACpD,SACL,GACiC,YAC3BG,EAAYD,EACd,IAAIA,EAAyC,IAAK,CAAC,CAAC,EAAE,MACtD,GACJN,EAAmBK,EAAcE,CAAS,CAC5C,MAAQ,CACNP,EAAmB,EACrB,CAEF,OAAOA,CACT",
6
+ "names": ["packages_exports", "__export", "AT_LATEST", "LATEST", "PACKAGE", "PACKAGE_DEFAULT_VERSION", "getLifecycleScriptNames", "getNpmLifecycleEvent", "getPackageDefaultNodeRange", "getPackageDefaultSocketCategories", "getPackageExtensions", "getPackumentCache", "getPacoteCachePath", "__toCommonJS", "import_npm", "_lifecycleScriptNames", "_packageDefaultNodeRange", "_packageDefaultSocketCategories", "_packageExtensions", "_pacoteCachePath", "_packumentCache", "exts", "getNpmLifecycleEventEnv", "pacote", "normalizePath", "PacoteFetcherBase", "cachePath"]
7
7
  }