@visulima/vis 1.0.0-alpha.7 → 1.0.0-alpha.9

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 (275) hide show
  1. package/CHANGELOG.md +107 -47
  2. package/LICENSE.md +44 -1
  3. package/README.md +56 -0
  4. package/dist/bin.js +1 -991
  5. package/dist/config.d.ts +1073 -68
  6. package/dist/config.js +1 -1
  7. package/dist/generate/index.d.ts +155 -30
  8. package/dist/packem_chunks/handler.js +1 -0
  9. package/dist/packem_chunks/handler10.js +1 -0
  10. package/dist/packem_chunks/handler11.js +1 -0
  11. package/dist/packem_chunks/handler12.js +153 -0
  12. package/dist/packem_chunks/handler13.js +1 -0
  13. package/dist/packem_chunks/handler14.js +3 -0
  14. package/dist/packem_chunks/handler15.js +1 -0
  15. package/dist/packem_chunks/handler16.js +2 -0
  16. package/dist/packem_chunks/handler17.js +7 -0
  17. package/dist/packem_chunks/handler18.js +1 -0
  18. package/dist/packem_chunks/handler19.js +19 -0
  19. package/dist/packem_chunks/handler2.js +1 -0
  20. package/dist/packem_chunks/handler20.js +428 -0
  21. package/dist/packem_chunks/handler21.js +22 -0
  22. package/dist/packem_chunks/handler22.js +3 -0
  23. package/dist/packem_chunks/handler23.js +5 -0
  24. package/dist/packem_chunks/handler24.js +1 -0
  25. package/dist/packem_chunks/handler25.js +20 -0
  26. package/dist/packem_chunks/handler26.js +1 -0
  27. package/dist/packem_chunks/handler27.js +1 -0
  28. package/dist/packem_chunks/handler28.js +1 -0
  29. package/dist/packem_chunks/handler29.js +2 -0
  30. package/dist/packem_chunks/handler3.js +2 -0
  31. package/dist/packem_chunks/handler30.js +22 -0
  32. package/dist/packem_chunks/handler31.js +1 -0
  33. package/dist/packem_chunks/handler32.js +1 -0
  34. package/dist/packem_chunks/handler33.js +37 -0
  35. package/dist/packem_chunks/handler34.js +3 -0
  36. package/dist/packem_chunks/handler35.js +23 -0
  37. package/dist/packem_chunks/handler36.js +5 -0
  38. package/dist/packem_chunks/handler37.js +27 -0
  39. package/dist/packem_chunks/handler38.js +1 -0
  40. package/dist/packem_chunks/handler39.js +2 -0
  41. package/dist/packem_chunks/handler4.js +5 -0
  42. package/dist/packem_chunks/handler40.js +1 -0
  43. package/dist/packem_chunks/handler41.js +5 -0
  44. package/dist/packem_chunks/handler42.js +1 -0
  45. package/dist/packem_chunks/handler43.js +24 -0
  46. package/dist/packem_chunks/handler44.js +3 -0
  47. package/dist/packem_chunks/handler45.js +1 -0
  48. package/dist/packem_chunks/handler5.js +4 -0
  49. package/dist/packem_chunks/handler6.js +2 -0
  50. package/dist/packem_chunks/handler7.js +24 -0
  51. package/dist/packem_chunks/handler8.js +6 -0
  52. package/dist/packem_chunks/handler9.js +8 -0
  53. package/dist/packem_shared/VisUpdateApp-BBx3idMI.js +1 -0
  54. package/dist/packem_shared/ai-analysis-DDqXRFxY.js +67 -0
  55. package/dist/packem_shared/bin-BaZZ32BK.js +93 -0
  56. package/dist/packem_shared/cache-directory-DL8hfXeG.js +1 -0
  57. package/dist/packem_shared/catalog-CuSpuB_R.js +12 -0
  58. package/dist/packem_shared/dependency-scan-BoLG2Fez.js +1 -0
  59. package/dist/packem_shared/docker-BcfqH4Av.js +2 -0
  60. package/dist/packem_shared/flakiness-DSIHZGBT.js +1 -0
  61. package/dist/packem_shared/otelPlugin-DxyvBcXO.js +1 -0
  62. package/dist/packem_shared/runtime-check-CGHal8SO.js +1 -0
  63. package/dist/packem_shared/selectors-CfH9ZY08.js +3 -0
  64. package/dist/packem_shared/symbols-CIMw60-G.js +1 -0
  65. package/dist/packem_shared/toolchain-C3ZG0o_X.js +5 -0
  66. package/dist/packem_shared/typosquats-Bpq4zcWL.js +1 -0
  67. package/dist/packem_shared/utils-DrNg0XTR.js +1 -0
  68. package/index.js +555 -727
  69. package/package.json +29 -19
  70. package/schemas/project.schema.json +1 -1
  71. package/schemas/vis-config.schema.json +47 -1
  72. package/dist/ai-analysis.d.ts +0 -26
  73. package/dist/ai-cache.d.ts +0 -21
  74. package/dist/ai-types.d.ts +0 -16
  75. package/dist/audit-config.d.ts +0 -24
  76. package/dist/bin.d.ts +0 -1
  77. package/dist/cache-directory.d.ts +0 -73
  78. package/dist/catalog.d.ts +0 -136
  79. package/dist/codeowners.d.ts +0 -30
  80. package/dist/commands/action-graph.d.ts +0 -8
  81. package/dist/commands/add.d.ts +0 -3
  82. package/dist/commands/affected.d.ts +0 -3
  83. package/dist/commands/ai.d.ts +0 -3
  84. package/dist/commands/analyze.d.ts +0 -3
  85. package/dist/commands/approve-builds.d.ts +0 -3
  86. package/dist/commands/audit.d.ts +0 -23
  87. package/dist/commands/cache.d.ts +0 -86
  88. package/dist/commands/check.d.ts +0 -3
  89. package/dist/commands/ci.d.ts +0 -19
  90. package/dist/commands/clean.d.ts +0 -3
  91. package/dist/commands/create/discovery.d.ts +0 -42
  92. package/dist/commands/create/index.d.ts +0 -13
  93. package/dist/commands/create/prompts.d.ts +0 -31
  94. package/dist/commands/create/random-name.d.ts +0 -15
  95. package/dist/commands/create/templates/builtin.d.ts +0 -15
  96. package/dist/commands/create/templates/generator.d.ts +0 -14
  97. package/dist/commands/create/templates/index.d.ts +0 -13
  98. package/dist/commands/create/templates/monorepo.d.ts +0 -16
  99. package/dist/commands/create/templates/remote.d.ts +0 -41
  100. package/dist/commands/create/templates/types.d.ts +0 -46
  101. package/dist/commands/create/utils.d.ts +0 -42
  102. package/dist/commands/dedupe.d.ts +0 -3
  103. package/dist/commands/devcontainer.d.ts +0 -3
  104. package/dist/commands/dlx.d.ts +0 -3
  105. package/dist/commands/docker.d.ts +0 -22
  106. package/dist/commands/doctor.d.ts +0 -15
  107. package/dist/commands/exec.d.ts +0 -3
  108. package/dist/commands/generate.d.ts +0 -10
  109. package/dist/commands/graph.d.ts +0 -3
  110. package/dist/commands/hook/constants.d.ts +0 -8
  111. package/dist/commands/hook/index.d.ts +0 -3
  112. package/dist/commands/hook/install.d.ts +0 -7
  113. package/dist/commands/hook/migrate.d.ts +0 -27
  114. package/dist/commands/hook/uninstall.d.ts +0 -3
  115. package/dist/commands/ignore-helpers.d.ts +0 -157
  116. package/dist/commands/ignore.d.ts +0 -17
  117. package/dist/commands/implode.d.ts +0 -3
  118. package/dist/commands/info.d.ts +0 -3
  119. package/dist/commands/init.d.ts +0 -14
  120. package/dist/commands/install.d.ts +0 -3
  121. package/dist/commands/link.d.ts +0 -3
  122. package/dist/commands/list.d.ts +0 -3
  123. package/dist/commands/migrate/backup.d.ts +0 -8
  124. package/dist/commands/migrate/constants.d.ts +0 -16
  125. package/dist/commands/migrate/deps.d.ts +0 -32
  126. package/dist/commands/migrate/gitleaks.d.ts +0 -29
  127. package/dist/commands/migrate/index.d.ts +0 -3
  128. package/dist/commands/migrate/json.d.ts +0 -22
  129. package/dist/commands/migrate/kingfisher.d.ts +0 -14
  130. package/dist/commands/migrate/lint-staged.d.ts +0 -62
  131. package/dist/commands/migrate/moon.d.ts +0 -5
  132. package/dist/commands/migrate/nano-staged.d.ts +0 -30
  133. package/dist/commands/migrate/nx.d.ts +0 -12
  134. package/dist/commands/migrate/prompt.d.ts +0 -2
  135. package/dist/commands/migrate/secretlint.d.ts +0 -14
  136. package/dist/commands/migrate/shared.d.ts +0 -29
  137. package/dist/commands/migrate/turborepo.d.ts +0 -11
  138. package/dist/commands/migrate/types.d.ts +0 -27
  139. package/dist/commands/migrate/verify.d.ts +0 -12
  140. package/dist/commands/optimize.d.ts +0 -38
  141. package/dist/commands/pm.d.ts +0 -3
  142. package/dist/commands/remove.d.ts +0 -3
  143. package/dist/commands/run.d.ts +0 -16
  144. package/dist/commands/sbom.d.ts +0 -10
  145. package/dist/commands/secrets.d.ts +0 -3
  146. package/dist/commands/sort-package-json.d.ts +0 -3
  147. package/dist/commands/staged.d.ts +0 -10
  148. package/dist/commands/status.d.ts +0 -3
  149. package/dist/commands/sync.d.ts +0 -16
  150. package/dist/commands/task-why.d.ts +0 -3
  151. package/dist/commands/unlink.d.ts +0 -3
  152. package/dist/commands/update.d.ts +0 -3
  153. package/dist/commands/upgrade.d.ts +0 -3
  154. package/dist/commands/why.d.ts +0 -3
  155. package/dist/docker.d.ts +0 -73
  156. package/dist/flakiness.d.ts +0 -40
  157. package/dist/generate/discover.d.ts +0 -29
  158. package/dist/generate/loader.d.ts +0 -15
  159. package/dist/generate/moon-adapter/filename-interp.d.ts +0 -42
  160. package/dist/generate/moon-adapter/filters.d.ts +0 -22
  161. package/dist/generate/moon-adapter/frontmatter.d.ts +0 -39
  162. package/dist/generate/moon-adapter/index.d.ts +0 -19
  163. package/dist/generate/moon-adapter/tera-subset.d.ts +0 -85
  164. package/dist/generate/moon-adapter/util.d.ts +0 -14
  165. package/dist/generate/prompts.d.ts +0 -25
  166. package/dist/generate/remote.d.ts +0 -43
  167. package/dist/generate/runner.d.ts +0 -37
  168. package/dist/generate/types.d.ts +0 -152
  169. package/dist/hooks.d.ts +0 -118
  170. package/dist/native-binding.d.ts +0 -158
  171. package/dist/output.d.ts +0 -40
  172. package/dist/overrides.d.ts +0 -82
  173. package/dist/package-manager.d.ts +0 -23
  174. package/dist/packem_shared/otelPlugin-CJLkguJ8.js +0 -1
  175. package/dist/plugins/config-loader.d.ts +0 -3
  176. package/dist/plugins/otel.d.ts +0 -63
  177. package/dist/plugins/post-command.d.ts +0 -3
  178. package/dist/plugins/security-enforcement.d.ts +0 -3
  179. package/dist/pm-runner.d.ts +0 -44
  180. package/dist/run-report.d.ts +0 -40
  181. package/dist/runtime-check.d.ts +0 -27
  182. package/dist/sbom/cyclonedx.d.ts +0 -39
  183. package/dist/sbom/installed-package.d.ts +0 -49
  184. package/dist/sbom/license.d.ts +0 -31
  185. package/dist/sbom/lockfile.d.ts +0 -34
  186. package/dist/sbom/purl.d.ts +0 -25
  187. package/dist/sbom/resolve-specifier.d.ts +0 -24
  188. package/dist/sbom/types.d.ts +0 -196
  189. package/dist/secrets/baseline.d.ts +0 -20
  190. package/dist/secrets/format.d.ts +0 -14
  191. package/dist/secrets/git.d.ts +0 -6
  192. package/dist/secrets/spinner.d.ts +0 -9
  193. package/dist/security.d.ts +0 -64
  194. package/dist/selectors.d.ts +0 -81
  195. package/dist/shell-history.d.ts +0 -16
  196. package/dist/socket-security.d.ts +0 -129
  197. package/dist/staged/cli-parse.d.ts +0 -18
  198. package/dist/staged/config.d.ts +0 -14
  199. package/dist/staged/errors/apply-empty-commit-error.d.ts +0 -4
  200. package/dist/staged/errors/config-error.d.ts +0 -4
  201. package/dist/staged/errors/get-backup-stash-error.d.ts +0 -4
  202. package/dist/staged/errors/git-error.d.ts +0 -6
  203. package/dist/staged/errors/index.d.ts +0 -12
  204. package/dist/staged/errors/restore-original-state-error.d.ts +0 -4
  205. package/dist/staged/errors/staged-error.d.ts +0 -8
  206. package/dist/staged/errors/task-error.d.ts +0 -6
  207. package/dist/staged/git/diff.d.ts +0 -76
  208. package/dist/staged/git/exec.d.ts +0 -43
  209. package/dist/staged/git/index.d.ts +0 -77
  210. package/dist/staged/git/stash.d.ts +0 -37
  211. package/dist/staged/index.d.ts +0 -13
  212. package/dist/staged/match.d.ts +0 -12
  213. package/dist/staged/renderer/index.d.ts +0 -9
  214. package/dist/staged/renderer/ink/index.d.ts +0 -4
  215. package/dist/staged/renderer/plain.d.ts +0 -12
  216. package/dist/staged/tasks/build.d.ts +0 -13
  217. package/dist/staged/tasks/exec.d.ts +0 -56
  218. package/dist/staged/tasks/run.d.ts +0 -26
  219. package/dist/staged/types.d.ts +0 -173
  220. package/dist/target-discovery.d.ts +0 -59
  221. package/dist/target-options.d.ts +0 -261
  222. package/dist/tips.d.ts +0 -41
  223. package/dist/tui/components/CheckProgressApp.d.ts +0 -6
  224. package/dist/tui/components/CommandSummary.d.ts +0 -17
  225. package/dist/tui/components/Header.d.ts +0 -13
  226. package/dist/tui/components/OutputPanel.d.ts +0 -17
  227. package/dist/tui/components/QuitDialog.d.ts +0 -15
  228. package/dist/tui/components/TaskListPanel.d.ts +0 -19
  229. package/dist/tui/components/TaskRow.d.ts +0 -12
  230. package/dist/tui/components/TaskStore.d.ts +0 -80
  231. package/dist/tui/components/VisTaskRunnerApp.d.ts +0 -17
  232. package/dist/tui/components/devcontainer/DevcontainerStore.d.ts +0 -66
  233. package/dist/tui/components/devcontainer/VisDevcontainerApp.d.ts +0 -9
  234. package/dist/tui/components/devcontainer/catalogs/extensions.d.ts +0 -8
  235. package/dist/tui/components/devcontainer/catalogs/features.d.ts +0 -8
  236. package/dist/tui/components/devcontainer/catalogs/filters.d.ts +0 -4
  237. package/dist/tui/components/devcontainer/catalogs/mount-suggestions.d.ts +0 -19
  238. package/dist/tui/components/devcontainer/catalogs/templates.d.ts +0 -8
  239. package/dist/tui/components/devcontainer/devcontainer-io.d.ts +0 -14
  240. package/dist/tui/components/devcontainer/sections/DockerComposeSection.d.ts +0 -11
  241. package/dist/tui/components/devcontainer/sections/EnvironmentSection.d.ts +0 -16
  242. package/dist/tui/components/devcontainer/sections/ExtensionsSection.d.ts +0 -11
  243. package/dist/tui/components/devcontainer/sections/FeaturesSection.d.ts +0 -11
  244. package/dist/tui/components/devcontainer/sections/GeneralSection.d.ts +0 -12
  245. package/dist/tui/components/devcontainer/sections/LifecycleSection.d.ts +0 -13
  246. package/dist/tui/components/devcontainer/sections/MountsSection.d.ts +0 -16
  247. package/dist/tui/components/devcontainer/sections/PortsSection.d.ts +0 -10
  248. package/dist/tui/components/devcontainer/sections/PreviewPanel.d.ts +0 -11
  249. package/dist/tui/components/devcontainer/types.d.ts +0 -53
  250. package/dist/tui/components/devcontainer/validate.d.ts +0 -16
  251. package/dist/tui/components/graph/GraphStore.d.ts +0 -42
  252. package/dist/tui/components/graph/ProjectDetailPanel.d.ts +0 -10
  253. package/dist/tui/components/graph/ProjectListPanel.d.ts +0 -20
  254. package/dist/tui/components/graph/VisGraphApp.d.ts +0 -8
  255. package/dist/tui/components/optimize/OptimizeDetailPanel.d.ts +0 -9
  256. package/dist/tui/components/optimize/OptimizeListPanel.d.ts +0 -16
  257. package/dist/tui/components/optimize/OptimizeStore.d.ts +0 -50
  258. package/dist/tui/components/optimize/VisOptimizeApp.d.ts +0 -8
  259. package/dist/tui/components/optimize/constants.d.ts +0 -7
  260. package/dist/tui/components/update/PackageDetailPanel.d.ts +0 -12
  261. package/dist/tui/components/update/PackageListPanel.d.ts +0 -21
  262. package/dist/tui/components/update/UpdateStore.d.ts +0 -62
  263. package/dist/tui/components/update/VisUpdateApp.d.ts +0 -18
  264. package/dist/tui/dynamic-life-cycle.d.ts +0 -22
  265. package/dist/tui/formatting-utils.d.ts +0 -17
  266. package/dist/tui/pretty-time.d.ts +0 -8
  267. package/dist/tui/static-life-cycle.d.ts +0 -28
  268. package/dist/tui/status-utils.d.ts +0 -20
  269. package/dist/tui/symbols.d.ts +0 -7
  270. package/dist/tui/types.d.ts +0 -11
  271. package/dist/typosquats.d.ts +0 -70
  272. package/dist/upgrade-check.d.ts +0 -30
  273. package/dist/utils.d.ts +0 -22
  274. package/dist/watch.d.ts +0 -65
  275. package/dist/workspace.d.ts +0 -675
@@ -0,0 +1,12 @@
1
+ var ge=Object.defineProperty;var O=(e,t)=>ge(e,"name",{value:t,configurable:!0});import{createRequire as ue}from"node:module";import{findCacheDirSync as G}from"@visulima/find-cache-dir";import{isAccessibleSync as d,readFileSync as y,readJsonSync as w,ensureDirSync as E,writeJsonSync as D,writeFileSync as C,walkSync as he,removeSync as ke}from"@visulima/fs";import{join as m,dirname as X}from"@visulima/path";import{Text as P,renderToString as K,Box as ye,Table as we}from"@visulima/tui";import R from"react";import{rcompare as $e,parse as ve,coerce as je}from"semver";import{$ as V,x as Ne,V as Se,B as F,D as be}from"./bin-BaZZ32BK.js";const me=ue(import.meta.url),b=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,fe=O(e=>{if(typeof b<"u"&&b.versions&&b.versions.node){const[t,a]=b.versions.node.split(".").map(Number);if(t>22||t===22&&a>=3||t===20&&a>=16)return b.getBuiltinModule(e)}return me(e)},"__cjs_getBuiltinModule"),{createInterface:de}=fe("node:readline");var Re=Object.defineProperty,c=O((e,t)=>Re(e,"name",{value:t,configurable:!0}),"c");const Te=/^([\^~]|>=|<=|[><=])/,Ce=/^(?:'([^']+)'|"([^"]+)"|([^:\s]+)):\s*(?:'([^']+)'|"([^"]+)"|(\S+))/,Me=/^catalog:/m,Ae=/^catalogs:/m,Oe=/^(@[^:]+):registry$/,Pe=/^\/\/(.+)\/:_authToken$/,xe=/\*+/g,Ee=/[.+^${}()|[\]\\]/g,L=/[.*+?^${}()|[\]\\]/g,Z=/^['"]|['"]$/g,De=/^https?:\/\//,Q=/\/$/,We=/\n(\s+)/,ee=["dependencies","devDependencies","optionalDependencies","peerDependencies"],Ue=new Set([...ee,"overrides","pnpm.overrides","resolutions"]),W=c(e=>{const t=G("vis",{create:!0,cwd:e});if(!t)throw new Error("Cannot resolve cache directory. Ensure node_modules exists in your workspace. Run your package manager's install command first.");return m(t,"backup")},"getBackupDir"),v=c(e=>{const t=e.replace(/^[\^~]|^>=|^<=|^[><]/,""),a=ve(t);if(a)return{major:a.major,minor:a.minor,patch:a.patch,prerelease:Array.isArray(a.prerelease)?a.prerelease.join("."):String(a.prerelease??"")};const r=je(e);if(r)return{major:r.major,minor:r.minor,patch:r.patch,prerelease:""}},"parseVersion"),te=c(e=>Te.exec(e)?.[1]??"","extractPrefix"),Ve=c(e=>{const t=`${String(e.major)}.${String(e.minor)}.${String(e.patch)}`;return e.prerelease?`${t}-${e.prerelease}`:t},"versionToString"),Fe=c((e,t)=>e.major!==t.major?"major":e.minor!==t.minor?"minor":e.patch!==t.patch||e.prerelease!==t.prerelease?"patch":"none","getUpdateType"),Le=c((e,t)=>e.major!==t.major?e.major-t.major:e.minor!==t.minor?e.minor-t.minor:e.patch!==t.patch?e.patch-t.patch:!e.prerelease&&t.prerelease?1:e.prerelease&&!t.prerelease?-1:e.prerelease&&t.prerelease?e.prerelease<t.prerelease?-1:e.prerelease>t.prerelease?1:0:0,"compareVersions"),ae=c((e,t)=>Le(t,e)>0,"isNewer"),T=c((e,t)=>{const a=t.replaceAll(xe,"*").replaceAll(Ee,String.raw`\$&`);return new RegExp(`^${a.replaceAll("*",".*").replaceAll("?",".")}$`).test(e)},"matchesPattern"),Be=c((e,t,a)=>a.some(r=>T(e,r))?!1:t.length>0?t.some(r=>T(e,r)):!0,"matchesFilters"),re=c(e=>{const t=Ce.exec(e);if(!t)return;const a=t[1]??t[2]??t[3],r=t[4]??t[5]??t[6];if(!(!a||!r))return[a,r]},"parseYamlEntry"),se=c((e,t,a,r)=>{e.has(t)||e.set(t,new Map);const n=e.get(t);n&&n.set(a,r)},"setCatalogEntry"),_e=c((e,t,a)=>{if(a<2)return;const r=re(t);r&&se(e,"default",r[0],r[1])},"parseCatalogSection"),Ie=c((e,t,a,r)=>{if(a===2&&t.endsWith(":"))return t.slice(0,-1).trim().replaceAll(Z,"");if(a>=4&&r){const n=re(t);n&&se(e,r,n[0],n[1])}return r},"parseCatalogsSection"),ne=c(e=>e==="catalog:"||e.startsWith("catalog:")?"catalog":e==="catalogs:"||e.startsWith("catalogs:")?"catalogs":"none","detectTopLevelSection"),Je=c(e=>{const t=new Map;let a="none",r="";for(const n of e.split(`
2
+ `)){const s=n.trimStart(),o=n.length-s.length;if(o===0&&s.length>0&&!s.startsWith("#")){a=ne(s),a==="catalogs"&&(r="");continue}s.length===0||s.startsWith("#")||(a==="catalog"&&_e(t,s,o),a==="catalogs"&&(r=Ie(t,s,o,r)))}return t},"parseCatalogsFromYaml"),qe=c(e=>{const t=m(e,"pnpm-workspace.yaml");if(!d(t))return!1;const a=y(t);return Me.test(a)||Ae.test(a)},"hasPnpmCatalogs"),He=c(e=>{const t=m(e,"pnpm-workspace.yaml");if(!d(t))return new Map;const a=y(t);return Je(a)},"readPnpmCatalogs"),oe=c(e=>{if(d(e))try{return w(e)}catch{return}},"readPackageJsonSafe"),Ye=c(e=>{const t=oe(m(e,"package.json"));return!!(t?.workspaces?.catalog||t?.workspaces?.catalogs)},"hasBunCatalogs"),ze=c(e=>{const t=new Map;if(e.workspaces?.catalog&&typeof e.workspaces.catalog=="object"&&t.set("default",new Map(Object.entries(e.workspaces.catalog))),e.workspaces?.catalogs&&typeof e.workspaces.catalogs=="object")for(const[a,r]of Object.entries(e.workspaces.catalogs))typeof r=="object"&&r!==void 0&&t.set(a,new Map(Object.entries(r)));return t},"parseBunCatalogs"),Ge=c(e=>{const t=oe(m(e,"package.json"));return t?ze(t):new Map},"readBunCatalogs"),M=c(e=>{const t=e.lastIndexOf(":");if(t===-1)return;const a=e.slice(t+1);if(Ue.has(a))return{depType:a,relativePath:e.slice(0,t)}},"parseCompositeCatalogName"),Xe=c(e=>e?.dev?["devDependencies"]:e?.prod?["dependencies"]:e?.depFields&&e.depFields.length>0?e.depFields:ee,"getDepTypesToInclude"),Ke=c((e,t,a)=>{const r=new Set;t&&r.add(t);for(const n of a){const s=m(e,n,"package.json");if(d(s))try{const o=w(s);o.name&&r.add(o.name)}catch{}}return r},"collectInternalPackageNames"),ce=c((e,t)=>{const a=t.split(".");let r=e;for(const n of a)if(r&&typeof r=="object")r=r[n];else return;return typeof r=="object"&&r!==null?r:void 0},"getNestedField"),Ze=c((e,t,a,r)=>{const n=t.split(".");let s=e;for(const i of n.slice(0,-1))(!s[i]||typeof s[i]!="object")&&(s[i]={}),s=s[i];const o=n.at(-1);(!s[o]||typeof s[o]!="object")&&(s[o]={}),s[o][a]=r},"setNestedField"),Qe=c((e,t)=>{const a=new Map;for(const[r,n]of Object.entries(e))t.has(r)||n.startsWith("workspace:")||n.startsWith("file:")||n.startsWith("link:")||n.startsWith("catalog:")||n.startsWith("$")||a.set(r,n);return a},"filterExternalDeps"),et=c((e,t,a,r,n,s)=>{const o=t==="."?a:m(e,t,"package.json");if(!d(o))return;let i;try{i=w(o)}catch{return}for(const l of r){const p=l.includes(".")?ce(i,l):i[l];if(!p||typeof p!="object")continue;const g=Qe(p,n);g.size>0&&s.set(`${t}:${l}`,g)}},"scanDirectoryDeps"),tt=c((e,t)=>{const a=new Map,r=m(e,"package.json");if(!d(r))return a;const n=w(r);let s=[];const o=n.workspaces;if(o){const g=Array.isArray(o)?o:o.packages;g&&(s=F(e,g))}if(s.length===0){const g=be(e);g&&(s=F(e,g))}const i=Ke(e,n.name,s),l=Xe(t),p=[".",...s];for(const g of p)et(e,g,r,l,i,a);return a},"readPackageJsonDeps"),x=c(e=>{const t=m(e,"package.json");if(!d(t))return!1;try{const a=w(t);return!!(a.dependencies||a.devDependencies||a.peerDependencies||a.optionalDependencies||a.overrides||a.resolutions||ce(a,"pnpm.overrides"))}catch{return!1}},"hasPackageJsonDeps"),B=c((e,t)=>{const a=new Map;for(const r of t){const n=M(r.catalogName);if(!n)continue;const s=n.relativePath==="."?m(e,"package.json"):m(e,n.relativePath,"package.json");a.has(s)||a.set(s,[]);const o=a.get(s);o&&o.push({depType:n.depType,newRange:r.newRange,packageName:r.packageName})}for(const[r,n]of a){const s=w(r);for(const{depType:o,newRange:i,packageName:l}of n)o.includes(".")?Ze(s,o,l,i):s[o]&&(s[o][l]=i);D(r,s,{detectIndent:!0,overwrite:!0})}},"applyPackageJsonUpdates"),Lt=c((e,t)=>t==="bun"?Ye(e)||x(e):t==="npm"||t==="yarn"?x(e):qe(e)||x(e),"hasCatalogs"),Bt=c((e,t,a)=>{let r;t==="bun"?r=Ge(e):t==="npm"||t==="yarn"?r=new Map:r=He(e);const n=tt(e,a);for(const[s,o]of n)r.has(s)||r.set(s,o);return r},"readCatalogs"),_=c(e=>{const t=new Map,a=new Map;let r="https://registry.npmjs.org";for(const n of e.split(`
3
+ `)){const s=n.trim();if(!s||s.startsWith("#")||s.startsWith(";"))continue;const o=s.indexOf("=");if(o===-1)continue;const i=s.slice(0,o).trim(),l=s.slice(o+1).trim(),p=Oe.exec(i);if(p?.[1]){t.set(p[1],l);continue}if(i==="registry"){r=l;continue}const g=Pe.exec(i);g?.[1]&&a.set(g[1],l)}return{authTokens:a,defaultRegistry:r,registries:t}},"parseNpmrc"),at=c((e,t)=>({authTokens:new Map([...e.authTokens,...t.authTokens]),defaultRegistry:t.defaultRegistry==="https://registry.npmjs.org"?e.defaultRegistry:t.defaultRegistry,registries:new Map([...e.registries,...t.registries])}),"mergeNpmrcConfigs"),_t=c(e=>{const t={authTokens:new Map,defaultRegistry:"https://registry.npmjs.org",registries:new Map},a=process.env.HOME??process.env.USERPROFILE??"",r=m(a,".npmrc");let n=a&&d(r)?_(y(r)):t;const s=m(e,".npmrc");return d(s)&&(n=at(n,_(y(s)))),n},"loadNpmrc"),rt=c((e,t)=>{let a=t.defaultRegistry;if(e.startsWith("@")){const n=e.split("/")[0];if(n&&t.registries.has(n)){const s=t.registries.get(n);s&&(a=s)}}const r=a.replace(De,"").replace(Q,"");return{token:t.authTokens.get(r),url:a}},"getRegistryForPackage"),ie=15e3,st=c(async(e,t,a=ie,r=!1)=>{const n=`${(t?.url??"https://registry.npmjs.org").replace(Q,"")}/${e}`,s=r?{Accept:"application/json"}:{Accept:"application/vnd.npm.install-v1+json"};t?.authToken&&(s.Authorization=`Bearer ${t.authToken}`);const o=new AbortController,i=setTimeout(()=>{o.abort()},a);try{const l=await fetch(n,{headers:s,signal:o.signal});if(!l.ok)throw new Error(`Failed to fetch ${e}: ${String(l.status)} ${l.statusText}`);const p=await l.json(),g={latest:p["dist-tags"]?.latest??"",versions:Object.keys(p.versions??{})};return r&&p.time&&(g.publishTimes=new Map(Object.entries(p.time))),g}finally{clearTimeout(i)}},"fetchPackageVersions"),nt=c(e=>{const t=e.database_specific?.severity?.toUpperCase();if(t==="CRITICAL"||t==="HIGH"||t==="MODERATE"||t==="LOW")return t;const a=e.severity?.find(r=>r.type==="CVSS_V3")?.score;if(a){const r=Number.parseFloat(a);return r>=9?"CRITICAL":r>=7?"HIGH":r>=4?"MODERATE":"LOW"}return"UNKNOWN"},"mapOsvSeverity"),ot=c(e=>{const t=e.severity?.find(a=>a.type==="CVSS_V3")?.score;return t?Number.parseFloat(t):void 0},"mapOsvCvss"),ct=c(e=>{const t=[];for(const a of e.affected??[])for(const r of a.ranges??[])for(const n of r.events??[])n.fixed&&t.push(n.fixed);return t},"mapOsvFixedVersions"),it=c(e=>({aliases:e.aliases?.length?e.aliases:void 0,cvssScore:ot(e),fixedVersions:ct(e),id:e.id,severity:nt(e),summary:e.summary??""}),"mapOsvVuln"),lt=c(async(e,t=1e4)=>{if(e.length===0)return new Map;const a=e.map(s=>({package:{ecosystem:"npm",name:s.name},version:s.version})),r=new AbortController,n=setTimeout(()=>{r.abort()},t);try{const s=await fetch("https://api.osv.dev/v1/querybatch",{body:JSON.stringify({queries:a}),headers:{"Content-Type":"application/json"},method:"POST",signal:r.signal});if(!s.ok)return new Map;const o=await s.json(),i=new Map;for(const[l,p]of e.entries()){const g=o.results[l]?.vulns;g&&g.length>0&&i.set(p.name,g.map(u=>it(u)))}return i}catch{return new Map}finally{clearTimeout(n)}},"fetchVulnerabilities"),I=new Map,pt=c((e,t,a)=>{if(!a)return t;const r=a[e];if(r!==void 0)return r;for(const[n,s]of Object.entries(a))if(n!==e){if(n.startsWith("/")&&n.endsWith("/")){let o=I.get(n);if(o||(o=new RegExp(n.slice(1,-1)),I.set(n,o)),o.test(e))return s}else if(T(e,n))return s}return t},"resolvePackageTarget"),le=c((e,t,a)=>{const r=t?.get(e);return r?Date.now()-new Date(r).getTime()<a:!1},"isTooNew"),gt=c(e=>e?.minimumReleaseAge?e.packageName&&e.minimumReleaseAgeExclude?.some(t=>T(e.packageName,t))?0:e.minimumReleaseAge*60*1e3:0,"resolveMinAgeMs"),J=c((e,t,a,r,n,s)=>e.map(o=>({parsed:v(o),raw:o})).filter(o=>!o.parsed||!a&&o.parsed.prerelease!==""||!ae(t,o.parsed)||r&&le(o.raw,n,r)?!1:s?s(o.parsed):!0).toSorted((o,i)=>$e(o.raw,i.raw))[0]?.raw,"filterCandidates"),ut=c((e,t,a,r,n,s)=>{const o=v(a);if(!o)return;const i=gt(s);if(r==="latest"){const p=v(t);return!p||!n&&p.prerelease!==""||!ae(o,p)?void 0:!i||!le(t,s?.publishTimes,i)?t:J(e,o,n,i,s?.publishTimes)}const l=r==="patch"?p=>p.major===o.major&&p.minor===o.minor:p=>p.major===o.major;return J(e,o,n,i,s?.publishTimes,l)},"findTargetVersion"),mt=c((e,t)=>{const a=[],r=new Set;for(const[n,s]of e)for(const[o,i]of s)if(!(i.startsWith("workspace:")||i.startsWith("file:")||i.startsWith("link:")||i==="*")&&!(!t.includeLocked&&!te(i))){if(t.ignore.some(l=>T(o,l))){r.add(o);continue}Be(o,t.include,t.exclude)&&a.push({catalogName:n,packageName:o,range:i})}return{entries:a,ignored:[...r]}},"collectEntries"),ft=c(async(e,t,a,r=!1)=>{const n=new Map,s=[],o=8;let i=0;for(let l=0;l<e.length;l+=o){const p=e.slice(l,l+o),g=await Promise.allSettled(p.map(async u=>{const f=t?rt(u,t):void 0,k=await st(u,f?{authToken:f.token,url:f.url}:void 0,ie,r);return n.set(u,k),u}));for(const[u,f]of g.entries())if(i+=1,f.status==="rejected"){const k=p[u];k&&s.push(k)}a&&a(i,e.length)}return{failed:s,versionCache:n}},"fetchVersionsBatched"),q=c((e,t,a)=>{const r=[];for(const n of e){const s=t.get(n.packageName);if(!s)continue;const o=pt(n.packageName,a.target,a.packageMode),i=ut(s.versions,s.latest,n.range,o,a.includePrerelease,{minimumReleaseAge:a.minimumReleaseAge,minimumReleaseAgeExclude:a.minimumReleaseAgeExclude,packageName:n.packageName,publishTimes:s.publishTimes});if(!i)continue;const l=v(n.range),p=v(i);if(!l||!p)continue;const g=Fe(l,p);if(g==="none")continue;const u=te(n.range);r.push({catalogName:n.catalogName,currentRange:n.range,newRange:`${u}${i}`,packageName:n.packageName,targetVersion:i,updateType:g})}return r},"buildOutdatedEntries"),H=c(e=>e?Ve(e):"","formatVersionString"),dt=c(async(e,t,a,r)=>{const n=[...new Map(t.map(l=>{const p=v(l.range);return[l.packageName,{name:l.packageName,version:H(p)}]})).values()].filter(l=>l.version),s=a?Ne(n,a):void 0,[o,i]=await Promise.all([lt(n),s]);for(const l of e){const p=o.get(l.packageName);p&&p.length>0&&(l.vulnerabilities=p);const g=v(l.currentRange),u=H(g);if(i){const f=i.get(`${l.packageName}@${u}`);f&&(l.socketReport={alerts:f.alerts,license:f.license,score:f.score})}if(r){const f=Se(l.packageName,u,r);f&&(l.acceptedRisk=f)}}},"enrichWithSecurity"),ht=6e4,kt=c((e,t,a,r)=>{const n=[];for(const[i,l]of e)for(const[p,g]of l)n.push(`${i}:${p}=${g}`);if(n.push(`target=${t.target},pre=${String(t.includePrerelease)},sec=${String(t.security??!1)}`),n.push(`in=${t.include.join(",")},ex=${t.exclude.join(",")},ig=${t.ignore.join(",")}`),n.push(`locked=${String(t.includeLocked)}`),n.push(`mra=${String(t.minimumReleaseAge??0)}`),t.packageMode){const i=Object.entries(t.packageMode).map(([l,p])=>`${l}=${p}`).toSorted().join(",");n.push(`pkgMode=${i}`)}n.push(`socket=${String(a??!1)}`),r&&r.length>0&&n.push(`risks=${r.toSorted().join(",")}`);let s=5381;const o=n.join("|");for(let i=0;i<o.length;i++)s=(s<<5)+s+o.charCodeAt(i)|0;return String(s)},"computeCacheHash"),pe=c(e=>{const t=G("vis",{create:!0,cwd:e});return t?m(t,"outdated-cache.json"):void 0},"getOutdatedCachePath"),yt=c((e,t)=>{const a=pe(e);if(!(!a||!d(a)))try{const r=w(a);if(r.hash===t&&Date.now()-r.timestamp<ht)return r.result}catch{}},"readOutdatedCache"),wt=c((e,t,a)=>{const r=pe(e);if(r)try{E(X(r)),D(r,{hash:t,result:a,timestamp:Date.now()})}catch{}},"writeOutdatedCache"),It=c(async(e,t,a,r,n,s,o)=>{const i=kt(e,t,!!s,o?Object.keys(o):void 0);if(n){const h=yt(n,i);if(h)return h}const{entries:l,ignored:p}=mt(e,t),g=[...new Set(l.map(h=>h.packageName))],u=!!(t.minimumReleaseAge&&t.minimumReleaseAge>0),{failed:f,versionCache:k}=await ft(g,a,r,u),j=q(l,k,t);let S=[];if(t.target!=="latest"){const h=new Set(j.map(A=>A.packageName)),$={...t,packageMode:void 0,target:"latest"};S=q(l,k,$).filter(A=>!h.has(A.packageName))}(t.security||s)&&j.length>0&&await dt(j,l,s,o);const N={checkedCount:g.length,failed:f,filteredByTarget:S,ignored:p,outdated:j};return n&&wt(n,i,N),N},"checkOutdated"),U=c((e,t)=>t==="bun"?m(e,"package.json"):m(e,"pnpm-workspace.yaml"),"getCatalogFilePath"),Y=c((e,t)=>{const a=W(e),r=new Set;for(const n of t){const s=M(n.catalogName);s&&r.add(s.relativePath==="."?"package.json":m(s.relativePath,"package.json"))}if(r.size!==0){E(a);for(const n of r){const s=m(e,n);if(d(s)){const o=m(a,n),i=X(o);E(i),C(o,y(s))}}return a}},"createPackageJsonBackup"),$t=c((e,t,a)=>{if((t==="npm"||t==="yarn")&&a)return Y(e,a);let r;const n=U(e,t);if(d(n)&&(r=`${n}.bak`,C(r,y(n))),a){const s=a.filter(o=>M(o.catalogName));s.length>0&&Y(e,s)}return r},"createBackup"),vt=c(e=>{const t=W(e);if(!d(t))return!1;for(const a of he(t,{includeDirs:!1})){const r=a.path.slice(t.length+1),n=m(e,r);C(n,y(a.path))}return ke(t),!0},"restorePackageJsonBackup"),Jt=c((e,t)=>{if(t==="npm"||t==="yarn")return vt(e);const a=U(e,t),r=`${a}.bak`;if(!d(r))return!1;const n=y(r);return C(a,n),!0},"restoreFromBackup"),qt=c((e,t)=>{if(t==="npm"||t==="yarn")try{const r=W(e);return d(r)}catch{return!1}const a=U(e,t);return d(`${a}.bak`)},"hasBackup"),Ht=c(e=>JSON.stringify(e,void 0,2),"formatOutdatedJson"),Yt=c(e=>e.map(t=>`${t.packageName} ${t.currentRange} → ${t.newRange}`).join(`
4
+ `),"formatOutdatedMinimal"),zt=c(e=>e?Array.isArray(e)?e:[e]:[],"toFilterArray"),jt=c(e=>{const t=new Map;for(const a of e){t.has(a.catalogName)||t.set(a.catalogName,[]);const r=t.get(a.catalogName);r&&r.push(a)}return t},"groupByCatalog"),Nt=c(e=>{const t=M(e);return t?`${t.relativePath==="."?"root":t.relativePath} (${t.depType})`:`Catalog: ${e}`},"formatCatalogDisplayName"),Gt=c((e,t)=>{const a=jt(e),r=process.stdout.columns||80,n=e.some(s=>s.socketReport);for(const[s,o]of a){const i=o.flatMap(g=>{const u=g.vulnerabilities&&g.vulnerabilities.length>0,f=g.socketReport&&g.socketReport.alerts.length>0,k=`${u||f?"[SEC] ":""}${g.packageName}`,j=g.socketReport?`${String(Math.round(g.socketReport.score.overall*100))}%`:"",S={current:g.currentRange,package:k,target:g.newRange,type:g.updateType};n&&(S.score=j);const N=[S];if(g.vulnerabilities)for(const h of g.vulnerabilities){const $={current:h.summary,package:` ${h.severity} ${h.id}`,target:"",type:""};n&&($.score=""),N.push($)}if(g.socketReport)for(const h of g.socketReport.alerts){const $={current:h.category,package:` [${h.severity.toUpperCase()}] ${h.type}`,target:"",type:""};n&&($.score=""),N.push($)}return N}),l=Nt(s),p=K(R.createElement(we,{data:i}),{columns:r});t.info(`${l}
5
+ ${p}
6
+ `)}},"formatOutdatedTable"),Xt=c(e=>{let t=0,a=0,r=0,n=0,s=0,o=0;for(const u of e)u.updateType==="major"?t++:u.updateType==="minor"?a++:r++,u.vulnerabilities&&u.vulnerabilities.length>0&&n++,u.socketReport?.alerts.length&&s++,u.socketReport&&u.socketReport.score.overall<V&&o++;const i=[];t&&i.push(`${String(t)} major`),a&&i.push(`${String(a)} minor`),r&&i.push(`${String(r)} patch`),n&&i.push(`${String(n)} with vulnerabilities`),s&&i.push(`${String(s)} with Socket.dev alerts`);const l=`Found ${String(e.length)} outdated (${i.join(", ")})`,p=process.stdout.columns||80,g=[R.createElement(P,{bold:!0},"─ Summary"),R.createElement(P,null,` ${l}`)];return o>0&&g.push(R.createElement(P,{color:"yellow"},` ${String(o)} package${o===1?"":"s"} with low Socket.dev score (<${String(V*100)}%)`)),K(R.createElement(ye,{flexDirection:"column",paddingX:1},...g),{columns:p})},"formatSummary"),St=c((e,t)=>{const a=e.replaceAll(L,String.raw`\$&`),r=t.replaceAll(L,String.raw`\$&`);return new RegExp(String.raw`^(?:'${a}'|"${a}"|${a}):\s*['"]?${r}['"]?`)},"buildLineMatchRegex"),bt=c((e,t,a)=>St(t,a).test(e),"lineMatchesPackage"),Rt=c(e=>{const t=new Map;for(const a of e){t.has(a.catalogName)||t.set(a.catalogName,new Map);const r=t.get(a.catalogName);r&&r.set(a.packageName,{newRange:a.newRange,oldRange:a.currentRange})}return t},"buildUpdateMap"),z=c((e,t,a)=>{if(!a)return e;for(const[r,{newRange:n,oldRange:s}]of a)if(bt(t,r,s))return e.replace(s,n);return e},"applyLineUpdate"),Tt=c((e,t,a,r)=>{const n=e.trimStart(),s=e.length-n.length;return n.length===0||n.startsWith("#")?e:t==="catalog"&&s>=2?z(e,n,r.get("default")):t==="catalogs"&&s>=4&&a?z(e,n,r.get(a)):e},"processYamlLineForUpdate"),Ct=c((e,t)=>{const a=m(e,"pnpm-workspace.yaml"),r=y(a).split(`
7
+ `),n=Rt(t);let s="none",o="";const i=[];for(const l of r){const p=l.trimStart(),g=l.length-p.length;g===0&&p.length>0&&!p.startsWith("#")&&(s=ne(p),s==="catalogs"&&(o="")),s==="catalogs"&&g===2&&p.endsWith(":")&&(o=p.slice(0,-1).trim().replaceAll(Z,"")),i.push(Tt(l,s,o,n))}C(a,i.join(`
8
+ `))},"applyPnpmCatalogUpdates");c(e=>{const t=We.exec(e);if(!t)return 2;const a=t[1];return a?a.includes(" ")?a:a.length:2},"detectJsonIndent");const Mt=c((e,t)=>{const a=m(e,"package.json"),r=w(a);for(const n of t)if(n.catalogName==="default")r.workspaces?.catalog&&(r.workspaces.catalog[n.packageName]=n.newRange);else{const s=r.workspaces?.catalogs?.[n.catalogName];s&&(s[n.packageName]=n.newRange)}D(a,r,{detectIndent:!0,overwrite:!0})},"applyBunCatalogUpdates"),Kt=c((e,t,a,r=!0)=>{let n;r&&(n=$t(e,a,t));const s=[],o=[];for(const i of t)M(i.catalogName)?o.push(i):s.push(i);return s.length>0&&(a==="npm"||a==="yarn"?B(e,s):a==="bun"?Mt(e,s):Ct(e,s)),o.length>0&&B(e,o),n},"applyCatalogUpdates"),Zt=c(async e=>{const t=de({input:process.stdin,output:process.stdout}),a=c(n=>new Promise(s=>{t.question(n,o=>{s(o.trim())})}),"ask");process.stdout.write(`
9
+ Outdated catalog dependencies:
10
+ `);for(const[n,s]of e.entries())s&&process.stdout.write(` ${String(n+1)}. ${s.packageName}: ${s.currentRange} → ${s.newRange} (${s.updateType})
11
+ `);process.stdout.write(`
12
+ `);const r=await a("Apply updates? [a]ll / [n]one / [s]elect: ");if(r.toLowerCase()==="a"||r.toLowerCase()==="all")return t.close(),e;if(r.toLowerCase()==="n"||r.toLowerCase()==="none")return t.close(),[];if(r.toLowerCase()==="s"||r.toLowerCase()==="select"){const n=await a("Enter numbers to apply (comma-separated): ");return t.close(),n.split(",").map(s=>Number.parseInt(s.trim(),10)-1).filter(s=>s>=0&&s<e.length).map(s=>e[s]).filter(s=>s!==void 0)}return t.close(),[]},"promptPackageSelection"),At=/github\.com[/:]([\w.-]+)\/([\w.-]+?)(?:\.git|\/|$)/,Qt=c(async(e,t=1e4)=>{const a=[],r=new AbortController,n=setTimeout(()=>{r.abort()},t);try{const s=e.map(async o=>{const i=`https://www.npmjs.com/package/${o.packageName}`;try{const l=await fetch(`https://registry.npmjs.org/${o.packageName}`,{headers:{Accept:"application/json"},signal:r.signal});if(!l.ok)return{npmUrl:i,packageName:o.packageName};const p=(await l.json()).repository?.url;if(!p)return{npmUrl:i,packageName:o.packageName};const g=At.exec(p);if(!g)return{npmUrl:i,packageName:o.packageName,repoUrl:p};const u=g[1],f=g[2],k=`https://github.com/${u}/${f}/releases/tag/v${o.targetVersion}`;return{npmUrl:i,packageName:o.packageName,releaseUrl:k,repoUrl:`https://github.com/${u}/${f}`}}catch{return{npmUrl:i,packageName:o.packageName}}});a.push(...await Promise.all(s))}finally{clearTimeout(n)}return a},"fetchChangelogInfo");export{Ht as C,qt as E,Qt as L,zt as N,Yt as O,Jt as S,Gt as T,Kt as V,te as _,Bt as a,v as b,Zt as c,st as f,lt as m,Fe as n,_t as o,Lt as s,Xt as v,It as w};
@@ -0,0 +1 @@
1
+ var b=Object.defineProperty;var m=(n,e)=>b(n,"name",{value:e,configurable:!0});import{createRequire as j}from"node:module";import{isAccessibleSync as d,readJsonSync as k,readFileSync as q}from"@visulima/fs";import{parseLockFileContent as I}from"@visulima/package";import{join as i}from"@visulima/path";const D=j(import.meta.url),f=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,S=m(n=>{if(typeof f<"u"&&f.versions&&f.versions.node){const[e,s]=f.versions.node.split(".").map(Number);if(e>22||e===22&&s>=3||e===20&&s>=16)return f.getBuiltinModule(n)}return D(n)},"__cjs_getBuiltinModule"),{readdirSync:w,statSync:P}=S("node:fs");var M=Object.defineProperty,y=m((n,e)=>M(n,"name",{value:e,configurable:!0}),"f");const W=y(n=>{const e=i(n,"node_modules");if(!d(e))return[];const s=[],a=i(n,"package.json");let p=new Set;if(d(a))try{const r=k(a);p=new Set(Object.keys(r.devDependencies??{}))}catch{}const o=y((r,t)=>{let c;try{c=w(r)}catch{return}for(const l of c){if(l.startsWith("."))continue;const u=i(r,l);if(l.startsWith("@")){o(u,`${l}/`);continue}const g=t+l,h=i(u,"package.json");try{if(!P(u).isDirectory()||!d(h))continue;const _=k(h);_.version&&s.push({isDev:p.has(g),name:g,version:_.version});const v=i(u,"node_modules");d(v)&&o(v,"")}catch{}}},"scanDir");return o(e,""),s},"scanInstalledPackages"),T={bun:{file:"bun.lock",type:"bun"},npm:{file:"package-lock.json",type:"npm"},pnpm:{file:"pnpm-lock.yaml",type:"pnpm"},yarn:{file:"yarn.lock",type:"yarn"}},x=y((n,e)=>{const s=T[e];if(!s)return[];let a;try{a=q(i(n,s.file))}catch{return[]}const p=I(a,s.type);if(p.length===0)return[];const o=new Map;for(const t of p)o.has(t.name)||o.set(t.name,new Set),o.get(t.name).add(t.version);const r=[];for(const[t,c]of o)c.size<=1||r.push({name:t,versions:[...c]});return r.sort((t,c)=>t.name.localeCompare(c.name))},"findDuplicateDependencies");export{x as f,W as s};
@@ -0,0 +1,2 @@
1
+ var E=Object.defineProperty;var k=(e,o)=>E(e,"name",{value:o,configurable:!0});import{createRequire as D}from"node:module";import{ensureDirSync as R,writeFileSync as C,isAccessibleSync as O,readJsonSync as A}from"@visulima/fs";import{dirname as _,join as c,relative as M}from"@visulima/path";const N=D(import.meta.url),m=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,T=k(e=>{if(typeof m<"u"&&m.versions&&m.versions.node){const[o,r]=m.versions.node.split(".").map(Number);if(o>22||o===22&&r>=3||o===20&&r>=16)return m.getBuiltinModule(e)}return N(e)},"__cjs_getBuiltinModule"),{cpSync:S,lstatSync:x,readdirSync:F,rmSync:v}=T("node:fs");var P=Object.defineProperty,l=k((e,o)=>P(e,"name",{value:o,configurable:!0}),"f");const $=l((e,o)=>{const r=new Set,t=[e],a=new Set([e]);for(;t.length>0;){const n=t.shift(),f=o.dependencies[n]??[];for(const i of f)a.has(i.target)||(a.add(i.target),r.add(i.target),t.push(i.target))}return r},"collectTransitiveProjectDeps"),g="vis-docker-manifest.json",I=["package.json","project.json"],q=["package.json","pnpm-workspace.yaml","pnpm-lock.yaml","package-lock.json","yarn.lock","bun.lock","bun.lockb",".npmrc","vis.config.ts","vis.config.mts","vis.config.cts","vis.config.js","vis.config.mjs","vis.config.cjs"],L=l((e,o)=>{const r=new Set(e);for(const t of e){const a=$(t,o);for(const n of a)r.add(n)}return r},"resolveFocusProjects"),y=l(e=>{R(e)},"ensureDir"),h=l((e,o)=>{try{return y(_(o)),S(e,o),!0}catch(r){if(r.code==="ENOENT")return!1;throw r}},"copyFileIfExists"),b=l((e,o)=>{let r;try{r=x(e)}catch{return}if(!r.isSymbolicLink()){if(r.isFile()){y(_(o)),S(e,o);return}y(o);for(const t of F(e,{withFileTypes:!0}))t.name==="node_modules"||t.name===".git"||t.isSymbolicLink()||b(c(e,t.name),c(o,t.name))}},"copyTreeExcludingNodeModules"),U=l(e=>{const{focus:o,includeSources:r=!1,outDir:t,projectGraph:a,workspace:n,workspaceRoot:f}=e,i=o.filter(s=>n.projects[s]===void 0);if(i.length>0)throw new Error(`Unknown focus project(s): ${i.join(", ")}. Check project names in your workspace.`);const j=L(o,a),u=c(t,"workspace"),d=c(t,"sources");v(u,{force:!0,recursive:!0}),v(d,{force:!0,recursive:!0}),y(u);for(const s of q)h(c(f,s),c(u,s));for(const s of j){const p=n.projects[s];if(p?.root)for(const w of I)h(c(f,p.root,w),c(u,p.root,w))}if(r){y(d);for(const s of o){const p=n.projects[s];p?.root&&b(c(f,p.root),c(d,p.root))}}return C(c(t,g),`${JSON.stringify({focus:o,projects:[...j].sort()},null,2)}
2
+ `),{projects:[...j]}},"scaffoldDockerContext"),W=l(e=>{const{contextRoot:o,workspace:r,workspaceRoot:t}=e,a=c(o,g);if(!O(a))throw new Error(`No ${g} at ${o}. Run \`vis docker scaffold\` first.`);const n=A(a);if(!Array.isArray(n.projects))throw new TypeError(`Invalid ${g}: "projects" must be an array.`);const f=new Set(n.projects),i=[];for(const[j,u]of Object.entries(r.projects)){if(f.has(j)||!u.root)continue;const d=c(t,u.root),s=M(t,d);s===""||s==="."||s.startsWith("..")||(v(d,{force:!0,recursive:!0}),i.push(s))}return{removed:i}},"pruneDockerContext");export{W as p,L as r,U as s};
@@ -0,0 +1 @@
1
+ var b=Object.defineProperty;var f=(a,s)=>b(a,"name",{value:s,configurable:!0});import{createRequire as R}from"node:module";import{isAccessibleSync as T,readJsonSync as v}from"@visulima/fs";import{join as p}from"@visulima/path";const j=R(import.meta.url),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,y=f(a=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[s,o]=l.versions.node.split(".").map(Number);if(s>22||s===22&&o>=3||s===20&&o>=16)return l.getBuiltinModule(a)}return j(a)},"__cjs_getBuiltinModule"),{readdirSync:S}=y("node:fs");var F=Object.defineProperty,d=f((a,s)=>F(a,"name",{value:s,configurable:!0}),"i");const P=d((a,s)=>{let o=0,n=0,r=0;for(const[,t]of a)switch(t.status){case"failure":{r+=1;break}case"local-cache":case"local-cache-kept-existing":case"remote-cache":{n+=1;break}case"success":{o+=1;break}}const c=[];o>0&&c.push(`${String(o)} succeeded`),n>0&&c.push(`${String(n)} cached`),r>0&&c.push(`${String(r)} failed`);const i=(s/1e3).toFixed(1);return c.push(`${i}s`),c.join(" · ")},"formatTimingSummary"),h=d(a=>{const s=p(a,".task-runner","runs");if(!T(s))return[];const o=S(s).filter(r=>r.endsWith(".json")),n=[];for(const r of o)try{n.push(v(p(s,r)))}catch{}return n},"loadRunSummaries"),E=d((a,s,o)=>{const n=o??h(a);if(n.length<2)return;let r=0,c=0;for(const e of n)typeof e.duration=="number"&&e.duration>0&&(r+=e.duration,c+=1);if(c<2)return;const i=r/c-s,t=Math.abs(i/1e3).toFixed(1);return Math.abs(i)<500?"(about average)":i>0?`(${t}s faster than avg)`:`(${t}s slower than avg)`},"compareDuration");var _=Object.defineProperty,m=f((a,s)=>_(a,"name",{value:s,configurable:!0}),"c");const q=m((a,s={},o)=>{const n=o??h(a);if(n.length===0)return[];const r=new Map;for(const t of n)if(!(s.since&&(t.startTime===void 0||t.startTime<s.since))&&Array.isArray(t.tasks))for(const e of t.tasks){if(e.cacheStatus==="HIT"||e.cacheStatus==="REMOTE_HIT"||e.cacheStatus==="SKIPPED")continue;const u=r.get(e.taskId)??{failures:0,project:e.target.project,successes:0,target:e.target.target,totalRuns:0};u.totalRuns+=1,e.exitCode!==void 0&&e.exitCode!==0?(u.failures+=1,u.lastFailure=e.startTime??t.startTime):u.successes+=1,r.set(e.taskId,u)}const c=s.minRuns??2,i=[];for(const[t,e]of r)e.totalRuns<c||e.failures!==0&&i.push({failures:e.failures,flakinessRate:e.failures/e.totalRuns,lastFailure:e.lastFailure,project:e.project,successes:e.successes,target:e.target,taskId:t,totalRuns:e.totalRuns});return i.sort((t,e)=>e.flakinessRate-t.flakinessRate),i},"analyzeFlakiness"),w=m(a=>{if(a.length===0)return["No flaky tasks detected."];const s=["Task","Runs","Failures","Rate","Last Failure"],o=a.map(t=>[t.taskId,String(t.totalRuns),String(t.failures),`${(t.flakinessRate*100).toFixed(1)}%`,t.lastFailure??"—"]),n=s.map((t,e)=>{const u=o.reduce((g,k)=>Math.max(g,(k[e]??"").length),0);return Math.max(t.length,u)}),r=m((t,e)=>t.padEnd(e),"pad"),c=n.map(t=>"─".repeat(t)).join("──"),i=[];i.push(s.map((t,e)=>r(t,n[e])).join(" ")),i.push(c);for(const t of o)i.push(t.map((e,u)=>r(e,n[u])).join(" "));return i},"formatFlakinessTable");export{q as a,w as b,E as c,P as f,h as l};
@@ -0,0 +1 @@
1
+ var l=Object.defineProperty;var c=(n,i)=>l(n,"name",{value:i,configurable:!0});import{definePlugin as f}from"../config.js";var k=Object.defineProperty,o=c((n,i)=>k(n,"name",{value:i,configurable:!0}),"a");const g=1,u=2,b=o(n=>{const{renameSpan:i,tracer:d}=n;let a;const r=new Map;return f({hooks:{"run:after":o(e=>{if(!a)return;const t=[...e.values()].filter(s=>s.status==="failure").length;a.setAttribute?.("vis.run.tasks_total",e.size),a.setAttribute?.("vis.run.tasks_failed",t),t>0?a.setStatus?.({code:u,message:`${String(t)} task(s) failed`}):a.setStatus?.({code:g}),a.end(),a=void 0;for(const s of r.values())s.end();r.clear()},"run:after"),"run:before":o(e=>{a&&(a.setStatus?.({code:u,message:"run:before fired while previous run was still active"}),a.end());for(const t of r.values())t.end();r.clear(),a=d.startSpan("vis.run",{attributes:{"vis.run.task_count":e.tasks.length,"vis.workspace_root":e.workspaceRoot}})},"run:before"),"task:after":o((e,t)=>{const s=r.get(e.id);s&&(s.setAttribute?.("vis.task.exit_code",t.code??0),s.setAttribute?.("vis.task.cache_status",t.status),s.end(),r.delete(e.id))},"task:after"),"task:before":o(e=>{const t=r.get(e.id);t&&(t.setStatus?.({code:u,message:"retried — superseded by new attempt"}),t.end());const s=d.startSpan(i?i(e):e.id,{attributes:{"vis.task.id":e.id,"vis.task.project":e.target.project,"vis.task.target":e.target.target}});r.set(e.id,s)},"task:before"),"task:failure":o((e,t)=>{const s=r.get(e.id);s&&s.setStatus?.({code:u,message:`Task failed with exit code ${String(t.code??-1)}`})},"task:failure")},name:"otel"})},"otelPlugin");export{b as otelPlugin};
@@ -0,0 +1 @@
1
+ var d=Object.defineProperty;var f=(t,n)=>d(t,"name",{value:n,configurable:!0});import{isAccessibleSync as h,readFileSync as k,readJsonSync as v}from"@visulima/fs";import{join as m}from"@visulima/path";var y=Object.defineProperty,g=f((t,n)=>y(t,"name",{value:n,configurable:!0}),"p");const $=g(t=>{for(const n of[".nvmrc",".node-version"]){const i=m(t,n);if(h(i))try{return k(i).trim().replace(/^v/,"")}catch{}}},"readNodeVersionFile"),l=g((t,n)=>{const i=t.split(/[.\-+]/).map(r=>Number.parseInt(r,10)||0),c=n.split(/[.\-+]/).map(r=>Number.parseInt(r,10)||0),e=Math.max(i.length,c.length);for(let r=0;r<e;r++){const s=i[r]??0,a=c[r]??0;if(s!==a)return s-a}return 0},"compareVersions"),b=g((t,n)=>{const i=n.trim();if(i===""||i==="*")return!0;const c=i.split(/\s+/).filter(Boolean);for(const e of c)if(e.startsWith(">=")){if(l(t,e.slice(2).trim())<0)return!1}else if(e.startsWith("<=")){if(l(t,e.slice(2).trim())>0)return!1}else if(e.startsWith(">")){if(l(t,e.slice(1).trim())<=0)return!1}else if(e.startsWith("<")){if(l(t,e.slice(1).trim())>=0)return!1}else if(/^\d/.test(e)){const r=t.split("."),s=e.split(".");for(const[a,o]of s.entries())if(o!==r[a])return!1}return!0},"satisfiesRange"),N=g(t=>{const n=[],i=m(t,"package.json");let c={};try{c=v(i)}catch{return n}const e=process.versions.node;if(c.engines?.node){const s=c.engines.node;b(e,s)||n.push({actual:e,expected:s,kind:"node",message:`package.json engines.node requires ${s}, but the current Node.js is ${e}.`,severity:"error"})}const r=$(t);if(r){const[s,a]=r.split("."),[o,p]=e.split(".");(s!==o||a!==void 0&&a!==p)&&n.push({actual:e,expected:r,kind:"node",message:`.nvmrc pins Node ${r} but the current Node.js is ${e}. Run \`nvm use\` or switch runtimes.`,severity:"warning"})}if(c.packageManager){const[s,a]=c.packageManager.split("@"),o=(process.env.npm_config_user_agent??"").split(" ")[0]??"",[p,u]=o.split("/");p&&s&&p!==s?n.push({actual:p,expected:s,kind:"packageManager",message:`package.json packageManager pins ${c.packageManager} but the current invocation is ${o}. Install the correct package manager.`,severity:"error"}):u&&a&&u!==a&&n.push({actual:u,expected:a,kind:"packageManager",message:`package.json packageManager pins ${s}@${a} but the current invocation uses ${s}@${u}.`,severity:"warning"})}return n},"checkRuntimeVersions");export{N as c};
@@ -0,0 +1,3 @@
1
+ var v=Object.defineProperty;var m=(e,t)=>v(e,"name",{value:t,configurable:!0});import{createRequire as w}from"node:module";import{relative as b}from"@visulima/path";const k=w(import.meta.url),j=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,_=m(e=>{if(typeof j<"u"&&j.versions&&j.versions.node){const[t,r]=j.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return j.getBuiltinModule(e)}return k(e)},"__cjs_getBuiltinModule"),{createInterface:$}=_("node:readline");var T=Object.defineProperty,f=m((e,t)=>T(e,"name",{value:t,configurable:!0}),"g");const q=/^#([\w\-/]+):(.+)$/,x=/^([@\w\-/]+):(.+)$/,P=f(e=>{if(e==="")return;if(e.startsWith(":"))return{kind:"all",target:e.slice(1)};if(e.startsWith("~:"))return{kind:"closest",target:e.slice(2)};const t=q.exec(e);if(t?.[1]&&t[2])return{kind:"tag",tag:t[1],target:t[2]};const r=x.exec(e);return r?.[1]&&r[2]&&(r[1].startsWith("@")||r[1].includes("/")||r[1].includes("-"))?{kind:"project",projects:[r[1]],target:r[2]}:{kind:"all",target:e}},"parseTargetSelector"),N=f(async(e,t,r,a)=>{const s=P(e);if(!s)throw new Error(`Invalid target selector: "${e}"`);const c=Object.keys(t.projects);if(s.kind==="all")return{projects:c,target:s.target};if(s.kind==="project")return{projects:s.projects??[],target:s.target};if(s.kind==="tag"){const o=s.tag;return{projects:c.filter(i=>t.projects[i]?.tags?.includes(o)??!1),target:s.target}}const n=b(a,r)||".";let p,l=-1;for(const[o,i]of Object.entries(t.projects)){const u=i.root;u&&(n===u||n.startsWith(`${u}/`))&&u.length>l&&(l=u.length,p=o)}if(!p){if(process.stdout.isTTY){const o=$({input:process.stdin,output:process.stderr}),i=Object.keys(t.projects).sort();process.stderr.write(`No project found at ${n}. Pick one:
2
+ `);for(const[d,h]of i.entries())process.stderr.write(` ${String(d+1)}) ${h}
3
+ `);const u=await new Promise(d=>{o.question("> ",d)});o.close();const g=Number.parseInt(u,10)-1;if(g>=0&&g<i.length)return{projects:[i[g]],target:s.target}}throw new Error(`No project found at or above ${n} for selector "${e}".`)}return{projects:[p],target:s.target}},"resolveSelector"),E=/^(\w+)\s*(!?=)\s*(.+)$/,Q=f(e=>{const t=e.trim();if(t==="")return;const r=t.split("&&").map(o=>o.trim()),a=t.split("||").map(o=>o.trim()),s=r.length>1,c=a.length>1;if(s&&c)throw new Error("Query language does not support mixed && / || — split into multiple --query flags or simplify.");const n=c?a:r,p=c?"||":"&&",l=[];for(const o of n){const i=E.exec(o);if(!i)throw new Error(`Invalid query clause: "${o}". Expected <field>=<value> or <field>!=<value>.`);const[,u,g,d]=i;l.push({field:u,op:g==="!="?"!=":"=",value:d.trim().replaceAll(/^["']|["']$/g,"")})}return{clauses:l,op:p}},"parseQuery"),y=f((e,t,r)=>{const{field:a,op:s,value:c}=e,n=f(l=>{const o=l===c;return s==="="?o:!o},"test"),p=f(l=>{const o=(l??[]).includes(c);return s==="="?o:!o},"testList");switch(a){case"id":case"project":return n(t);case"language":return n(r.language);case"layer":return n(r.layer);case"projectType":case"type":return n(r.projectType);case"stack":return n(r.stack);case"tag":case"tags":return p(r.tags);default:return!1}},"matchClause"),O=f((e,t,r)=>{if(!r||r.trim()==="")return e;const a=Q(r);return a?e.filter(s=>{const c=t.projects[s];return c?a.op==="&&"?a.clauses.every(n=>y(n,s,c)):a.clauses.some(n=>y(n,s,c)):!1}):e},"filterProjectsByQuery");export{O as f,N as r};
@@ -0,0 +1 @@
1
+ var c=Object.defineProperty;var r=(s,o)=>c(s,"name",{value:o,configurable:!0});var n=Object.defineProperty,a=r((s,o)=>n(s,"name",{value:o,configurable:!0}),"e");const p=a(()=>process.platform==="win32"?!!process.env.WT_SESSION||process.env.TERM_PROGRAM==="vscode"||process.env.TERM==="xterm-256color":process.env.TERM!=="linux","isUnicodeSupported"),e=p(),S=e?"✓":"√",v=e?"✖":"×",i=e?"…":"...",E=e?"—":"-";export{v as C,E as D,i as E,S as T};
@@ -0,0 +1,5 @@
1
+ var N=Object.defineProperty;var x=(o,e)=>N(o,"name",{value:e,configurable:!0});import{createRequire as I}from"node:module";import{isAccessibleSync as d,readFileSync as k,readJsonSync as O}from"@visulima/fs";import{join as g}from"@visulima/path";const D=I(import.meta.url),M=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,j=x(o=>{if(typeof M<"u"&&M.versions&&M.versions.node){const[e,n]=M.versions.node.split(".").map(Number);if(e>22||e===22&&n>=3||e===20&&n>=16)return M.getBuiltinModule(o)}return D(o)},"__cjs_getBuiltinModule"),{execFileSync:w}=j("node:child_process"),{writeFileSync:U,renameSync:q,unlinkSync:B}=j("node:fs"),{delimiter:J,sep:H}=j("node:path");var R=Object.defineProperty,f=x((o,e)=>R(o,"name",{value:e,configurable:!0}),"f");const z=["proto","mise","fnm","volta","asdf","nvm","corepack"],V={asdf:["bun","deno","go","node","npm","pnpm","python","ruby","rust","yarn"],corepack:["npm","pnpm","yarn"],fnm:["node"],mise:["bun","deno","go","node","npm","pnpm","python","ruby","rust","yarn"],nvm:["node"],proto:["bun","deno","go","node","npm","pnpm","python","ruby","rust","yarn"],volta:["node","npm","pnpm","yarn"]},Z=["proto","mise","fnm","volta","asdf","nvm","corepack"],W={asdf:[".tool-versions"],corepack:[],fnm:[".nvmrc",".node-version"],mise:[".mise.toml",".config/mise.toml","mise.toml"],nvm:[".nvmrc"],proto:[".prototools"],volta:[]},$=new Map,y=f(o=>{const e=$.get(o);if(e!==void 0||$.has(o))return e;const n=process.env.PATH;if(!n){$.set(o,void 0);return}const t=process.platform==="win32"?["",...(process.env.PATHEXT??".COM;.EXE;.BAT;.CMD").split(";")]:[""];for(const r of n.split(J)){const i=r.replace(/^["']|["']$/g,"").trim();if(i!=="")for(const l of t){const s=`${i}${H}${o}${l}`;if(d(s))return $.set(o,s),s}}$.set(o,void 0)},"isOnPath"),_=f((o,e=["--version"])=>{try{const n=w(o,e,{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}),t=/\d+\.\d+(\.\d+)?/.exec(n);return t?t[0]:n.trim()||void 0}catch{return}},"queryManagerVersion"),S=f((o,e)=>{const n=g(o,"package.json");if(!d(n))return[];try{const t=O(n)[e];if(e==="volta"&&typeof t=="object"&&t!==null&&Object.keys(t).length>0)return["package.json"];if(e==="packageManager"&&typeof t=="string"&&t.length>0)return["package.json"]}catch{}return[]},"pkgFieldConfigFiles"),X=f((o,e)=>o==="volta"?S(e,"volta"):o==="corepack"?S(e,"packageManager"):W[o].filter(n=>d(g(e,n))),"configFilesFor"),P=new Map,G=f(()=>{P.clear(),$.clear()},"clearToolchainCache"),A=f((o,e)=>{if(!e?.refresh){const i=P.get(o);if(i)return i}const n=[],t=!!y("pnpm")||!!y("yarn");for(const i of Z){const l=i==="nvm"?void 0:y(i),s=i==="nvm"&&!!process.env.NVM_DIR,c=X(i,o),a=!!l||s;i==="corepack"&&!a&&(!(c.length>0)||t)||!a&&c.length===0||n.push({binPath:l,configFiles:c,installed:a,name:i,version:l?_(l):void 0})}const r=Object.freeze(n);return P.set(o,r),r},"findInstalledManagers"),ye=f((o,e,n)=>{const t=n??A(o);return e?.preferredManager&&e.preferredManager!=="none"?t.find(r=>r.name===e.preferredManager)??{configFiles:[],installed:!1,name:e.preferredManager}:t.find(r=>r.installed&&r.configFiles.length>0)??t.find(r=>r.installed)??t.find(r=>r.configFiles.length>0)??{configFiles:[],installed:!1,name:"none"}},"pickPrimaryManager"),K=f((o,e)=>{for(const n of e){const t=g(o,n);if(d(t))try{const r=k(t).trim();if(r!=="")return{name:n,value:r.replace(/^v/,"")}}catch{}}},"readVersionFile"),L=/^([a-z][\w-]*)\s*=\s*"?([^"\n#]+?)"?\s*(?:#.*)?$/i,Q=f(o=>{const e=g(o,".prototools");if(!d(e))return[];const n=k(e),t=[];let r=!1;for(const i of n.split(/\r?\n/)){const l=i.trim();if(l===""||l.startsWith("#"))continue;if(l.startsWith("[")){r=!0;continue}if(r)continue;const s=L.exec(l);if(!s)continue;const[,c,a]=s,u=h(c);u&&t.push({source:".prototools",tool:u,version:a.trim()})}return t},"parsePrototools"),Y=/^\[tools\]\s*$/i,ee=/^([a-z][\w-]*)\s*=\s*"?([^"\n#]+?)"?\s*(?:#.*)?$/i,oe=f(o=>{for(const e of W.mise){const n=g(o,e);if(!d(n))continue;const t=[],r=k(n);let i=!1;for(const l of r.split(/\r?\n/)){const s=l.trim();if(s===""||s.startsWith("#"))continue;if(s.startsWith("[")){i=Y.test(s);continue}if(!i)continue;const c=ee.exec(s);if(!c)continue;const[,a,u]=c,m=h(a);m&&t.push({source:".mise.toml",tool:m,version:u.trim()})}if(t.length>0)return t}return[]},"parseMiseToml"),ne=f(o=>{const e=g(o,".tool-versions");if(!d(e))return[];const n=k(e),t=[];for(const r of n.split(/\r?\n/)){const i=r.trim();if(i===""||i.startsWith("#"))continue;const l=i.split(/\s+/);if(l.length<2)continue;const[s,...c]=l,a=h(s);a&&c[0]&&t.push({source:".tool-versions",tool:a,version:c[0]})}return t},"parseToolVersions"),h=f(o=>{switch(o.toLowerCase()){case"bun":return"bun";case"deno":return"deno";case"go":case"golang":return"go";case"node":case"nodejs":return"node";case"npm":return"npm";case"pnpm":return"pnpm";case"python":case"python3":return"python";case"ruby":return"ruby";case"rust":case"rustc":return"rust";case"yarn":return"yarn";default:return}},"normalizeToolName"),te=f(o=>{const[e]=o.split("+",1),n=/^(pnpm|yarn|npm|bun)@(.+)$/.exec(e??"");if(!n)return;const t=h(n[1]);if(t)return{source:"packageManager",tool:t,version:n[2]}},"parsePackageManagerField"),re=f((o,e)=>{const n=new Map,t=f(s=>{n.set(s.tool,s)},"add"),r=g(o,"package.json");let i={};try{d(r)&&(i=O(r))}catch{}if(i.engines)for(const[s,c]of Object.entries(i.engines)){const a=h(s);a&&typeof c=="string"&&t({source:"engines",tool:a,version:c})}if(i.packageManager){const s=te(i.packageManager);s&&t(s)}if(i.volta)for(const[s,c]of Object.entries(i.volta)){const a=h(s);a&&typeof c=="string"&&t({source:"volta",tool:a,version:c})}const l=K(o,[".nvmrc",".node-version"]);l&&t({source:l.name===".nvmrc"?".nvmrc":".node-version",tool:"node",version:l.value});for(const s of ne(o))t(s);for(const s of oe(o))t(s);for(const s of Q(o))t(s);if(e?.tools)for(const[s,c]of Object.entries(e.tools)){const a=h(s);a&&typeof c=="string"&&t({source:"vis.config.ts",tool:a,version:c})}return[...n.values()]},"parseExpectedTools"),F={bun:{args:["--version"],binaries:["bun"]},deno:{args:["--version"],binaries:["deno"]},go:{args:["version"],binaries:["go"]},node:{args:["--version"],binaries:["node"]},npm:{args:["--version"],binaries:["npm"]},pnpm:{args:["--version"],binaries:["pnpm"]},python:{args:["--version"],binaries:["python","python3"]},ruby:{args:["--version"],binaries:["ruby"]},rust:{args:["--version"],binaries:["rustc"]},yarn:{args:["--version"],binaries:["yarn"]}},se=f(o=>{const e=F[o];for(const n of e.binaries){const t=y(n);if(t)return _(t,e.args)}if(o==="node")return process.versions.node},"queryToolVersion"),ie=f((o,e)=>{const n=e.trim();if(n===""||n==="*"||n==="latest")return!0;if(/^\d[\d.]*$/.test(n))return o===n||o.startsWith(`${n}.`);const t=f(s=>s.split(/[.\-+]/).map(c=>Number.parseInt(c,10)||0),"parse"),r=f((s,c)=>{const a=t(s),u=t(c),m=Math.max(a.length,u.length);for(let p=0;p<m;p++){const b=a[p]??0,v=u[p]??0;if(b!==v)return b-v}return 0},"compare"),i=f(s=>{for(const c of s)if(c.startsWith(">=")){if(r(o,c.slice(2).trim())<0)return!1}else if(c.startsWith("<=")){if(r(o,c.slice(2).trim())>0)return!1}else if(c.startsWith(">")){if(r(o,c.slice(1).trim())<=0)return!1}else if(c.startsWith("<")){if(r(o,c.slice(1).trim())>=0)return!1}else if(c.startsWith("^")||c.startsWith("~")){const a=c.slice(1).trim(),[u,m]=t(a),[p,b]=t(o);if(p!==u||c.startsWith("~")&&b!==m||r(o,a)<0)return!1}return!0},"matchesAll"),l=n.split("||").map(s=>s.trim().split(/\s+/).filter(Boolean)).filter(s=>s.length>0);return l.length===0?!0:l.some(s=>i(s))},"satisfies"),ae=f((o,e)=>{switch(o){case".mise.toml":return["mise"];case".node-version":case".nvmrc":return["fnm","nvm","volta","proto","mise","asdf"];case".prototools":return["proto"];case".tool-versions":return["asdf","mise"];case"packageManager":return e==="pnpm"||e==="yarn"?["self-activate","volta","proto","mise","corepack"]:e==="npm"?["volta","proto","mise","asdf","corepack"]:e==="bun"?["proto","mise","asdf"]:["volta","proto","mise"];case"volta":return["volta"];default:return["proto","mise","fnm","volta","asdf","nvm","corepack"]}},"preferenceFor"),ce=f((o,e,n)=>{if(n?.preferredManager&&n.preferredManager!=="none"&&T(n.preferredManager,o.tool)){const r=e.find(i=>i.name===n.preferredManager);return r?{installed:r.installed,name:r.name}:{installed:!1,name:n.preferredManager,note:`${n.preferredManager} is the preferred manager but isn't on PATH`}}const t=ae(o.source,o.tool);for(const r of t){if(r==="self-activate"){if((o.tool==="pnpm"||o.tool==="yarn")&&y(o.tool))return{installed:!0,name:"self-activate",note:`${o.tool} will activate ${o.version} from the packageManager field on next invocation`};continue}if(T(r,o.tool)&&e.find(i=>i.name===r)?.installed)return{installed:!0,name:r}}for(const r of t)if(!(r==="self-activate"||!T(r,o.tool)))return{installed:!1,name:r,note:`${r} can install ${o.tool} — run \`vis toolchain install\` after adding it to PATH`};return{installed:!1,name:"none",note:"No manager knows how to install this tool"}},"resolveManagerFor"),T=f((o,e)=>o==="none"?!1:o==="self-activate"?e==="pnpm"||e==="yarn":V[o].includes(e),"canHandle"),le=f((o,e)=>{const n=A(o),t=re(o,e).map(r=>{const i=se(r.tool),l=i!==void 0&&ie(i,r.version),s=ce(r,n,e);return{actual:i,expected:r,manager:s,matches:l}});return{detected:n,tools:t}},"getToolchainStatus"),fe=f((o,e)=>{switch(o){case"asdf":return e?{args:["install",e.tool,e.version],bin:"asdf"}:void 0;case"corepack":return e?{args:["prepare",`${e.tool}@${e.version}`,"--activate"],bin:"corepack"}:{args:["prepare","--activate"],bin:"corepack",hint:"reads the packageManager field in package.json"};case"fnm":return!e||e.tool!=="node"?void 0:{args:["install",e.version],bin:"fnm"};case"mise":return e?{args:["install",`${e.tool}@${e.version}`],bin:"mise"}:void 0;case"none":return;case"nvm":return{args:[],bin:"nvm",hint:"nvm is a shell function — run `nvm install` / `nvm use` from your shell"};case"proto":return e?{args:["install",e.tool,e.version],bin:"proto"}:void 0;case"self-activate":return{args:[],bin:e?.tool??"pnpm",hint:`${e?.tool??"pnpm"} will self-activate on next invocation — no install needed`};case"volta":return e?{args:["install",`${e.tool}@${e.version}`],bin:"volta"}:{args:["install","node@lts"],bin:"volta",hint:"volta pins per-tool; specify <tool>@<version>"};default:{const n=o;throw new Error(`Unknown manager: ${n}`)}}},"buildInstallInvocation"),be=f((o,e)=>{switch(o){case"asdf":return{args:["local",e.tool,e.version],bin:"asdf",configChange:{file:".tool-versions",hint:`Pins ${e.tool} ${e.version}`}};case"corepack":return e.tool!=="npm"&&e.tool!=="pnpm"&&e.tool!=="yarn"?void 0:{args:["use",`${e.tool}@${e.version}`],bin:"corepack",configChange:{file:"package.json",hint:`Writes packageManager: "${e.tool}@${e.version}"`}};case"fnm":return e.tool==="node"?{args:["use",e.version],bin:"fnm"}:void 0;case"mise":return{args:["use","--",`${e.tool}@${e.version}`],bin:"mise",configChange:{file:".mise.toml",hint:`Pins ${e.tool} ${e.version}`}};case"none":return;case"nvm":return e.tool==="node"?{args:[],bin:"nvm",configChange:{file:".nvmrc",hint:"Write version to .nvmrc manually (nvm doesn't persist)."}}:void 0;case"proto":return{args:["pin",e.tool,e.version],bin:"proto",configChange:{file:".prototools",hint:`Pins ${e.tool} ${e.version}`}};case"self-activate":return{args:[],bin:e.tool,configChange:{file:"package.json",hint:`Set packageManager: "${e.tool}@${e.version}" — ${e.tool} will self-activate on next invocation`}};case"volta":return{args:["pin",`${e.tool}@${e.version}`],bin:"volta",configChange:{file:"package.json",hint:`Writes volta.${e.tool}`}};default:{const n=o;throw new Error(`Unknown manager: ${n}`)}}},"buildUseInvocation"),$e=f(o=>{for(const e of F[o].binaries){const n=y(e);if(n)return n}},"findOnPathByAlias"),ke=f((o,e)=>{const n=F[e].binaries;if(o.installed&&o.binPath&&(o.name==="proto"||o.name==="mise"||o.name==="asdf"||o.name==="volta"||o.name==="fnm"))for(const t of n)try{const r=w(o.binPath,["which",t],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}).trim();if(r)return r}catch{}for(const t of n){const r=y(t);if(r)return r}},"resolveToolBinary"),E=f((o,e)=>{const n=`${o}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;U(n,e);try{q(n,o)}catch(t){try{B(n)}catch{}throw t}},"atomicWrite"),pe=f((o,e)=>{if("packageManager"in o)return o.packageManager=e,o;const n={};let t=!1;for(const[r,i]of Object.entries(o))!t&&(r==="dependencies"||r==="devDependencies"||r==="peerDependencies"||r==="optionalDependencies")&&(n.packageManager=e,t=!0),n[r]=i;return t||(n.packageManager=e),n},"insertPackageManagerKey"),Me=f((o,e)=>{if(e.tool!=="pnpm"&&e.tool!=="yarn"&&e.tool!=="npm"&&e.tool!=="bun")return;const n=g(o,"package.json");if(!d(n))throw new Error(`Cannot pin ${e.tool}: ${n} does not exist.`);const t=k(n),r=/\n([ \t]+)/.exec(t)?.[1]??" ";let i;try{i=JSON.parse(t)}catch(a){throw new Error(`${n} is not valid JSON — fix it before running \`vis toolchain use\`. Underlying error: ${a.message}`)}const l=`${e.tool}@${e.version}`,s=pe(i,l),c=t.endsWith(`
2
+ `)?`
3
+ `:"";return E(n,`${JSON.stringify(s,void 0,r)}${c}`),l},"writePackageManagerField"),we=f((o,e)=>{const n=g(o,"package.json");if(!d(n))return;const t=k(n);let r;try{r=JSON.parse(t)}catch(s){throw new Error(`${n} is not valid JSON — fix it before running \`vis toolchain use\`. Underlying error: ${s.message}`)}if(!r.engines||r.engines[e.tool]===void 0||r.engines[e.tool]===e.version)return;r.engines[e.tool]=e.version;const i=/\n([ \t]+)/.exec(t)?.[1]??" ",l=t.endsWith(`
4
+ `)?`
5
+ `:"";return E(n,`${JSON.stringify(r,void 0,i)}${l}`),e.version},"updateEnginesField"),xe=f(o=>{const e=/^([a-z][\w-]*)@(.+)$/i.exec(o.trim());if(!e)return;const n=h(e[1]);if(n)return{source:"vis.config.ts",tool:n,version:e[2]}},"parseUseArgument"),ue=f(async(o,e,n)=>{const t=le(o,e),r=t.tools.filter(a=>!a.matches);if(r.length===0)return{attempted:[],failed:[],upToDate:!0};const i=t.detected.some(a=>a.installed);if(!(e?.autoInstall??i))return{attempted:[],failed:[],upToDate:!1};const l=[],s=[],c=new Map;for(const a of r){const u=c.get(a.manager.name);u?u.push(a):c.set(a.manager.name,[a])}for(const[a,u]of c){if(a==="self-activate"){for(const{expected:p}of u)n.info(`toolchain: ${p.tool} ${p.version} will self-activate on next ${p.tool} invocation`),l.push(p);continue}if(a==="none"){for(const{expected:p}of u)s.push({error:`no manager can install ${p.tool} — install one of ${z.join(", ")}`,spec:p});continue}if(!t.detected.find(p=>p.name===a)?.installed){for(const{expected:p}of u)s.push({error:`${a} is not on PATH`,spec:p});continue}const m=u.map(p=>({invocation:fe(a,p.expected),tool:p})).filter(p=>p.invocation!==void 0);for(const{invocation:p,tool:b}of m){const{expected:v}=b;if(p.bin==="nvm"&&p.args.length===0){n.warn(`toolchain: nvm requires a shell-side activation for ${v.tool} ${v.version}. Run \`nvm install\` / \`nvm use\` manually.`),s.push({error:"nvm requires shell-side activation",spec:v});continue}n.info(`toolchain: $ ${p.bin} ${p.args.join(" ")}`);try{w(p.bin,p.args,{cwd:o,stdio:"inherit"}),l.push(v),a==="fnm"&&de(p.bin,n)}catch(C){s.push({error:C.message,spec:v});break}}}return G(),{attempted:l,failed:s,upToDate:!1}},"ensureToolchain"),Te=f(async(o,e,n,t=!1)=>{if(t)return;const r=await ue(o,e,n);for(const i of r.failed)n.warn(`toolchain: ${i.spec.tool} ${i.spec.version} — ${i.error}`)},"runToolchainPreflight"),de=f((o,e)=>{const n=process.platform==="win32"?"powershell":"bash";try{const t=w(o,["env","--shell",n],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3});for(const r of t.split(/\r?\n/)){const i=r.trim();if(i==="")continue;const l=/^\$env:([A-Z_][\w]*)\s*=\s*(.+)$/i.exec(i);if(l){const[,a,u]=l;process.env[a]=u.replace(/^["']|["']$/g,"");continue}const s=/^set\s+"?([A-Z_][\w]*)=(.*?)"?$/i.exec(i);if(s){const[,a,u]=s;process.env[a]=u;continue}const c=/^(?:export\s+)?([A-Z_][\w]*)=(.+)$/i.exec(i);if(c){const[,a,u]=c;process.env[a]=u.replace(/^["']|["']$/g,"")}}}catch(t){e.warn(`toolchain: could not activate fnm env (${t.message}). Subsequent tasks may use the previous Node version.`)}},"activateFnmEnv");export{z as S,ce as a,fe as b,be as c,ke as d,$e as e,A as f,le as g,ye as h,xe as p,Te as r,we as u,Me as w};
@@ -0,0 +1 @@
1
+ var f=Object.defineProperty;var u=(e,r)=>f(e,"name",{value:r,configurable:!0});import{createRequire as x}from"node:module";import{red as h,yellow as j}from"@visulima/colorize";import{isAccessibleSync as _,readJsonSync as $}from"@visulima/fs";import{join as T}from"@visulima/path";import{y as c}from"./bin-BaZZ32BK.js";const w=x(import.meta.url),m=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,q=u(e=>{if(typeof m<"u"&&m.versions&&m.versions.node){const[r,s]=m.versions.node.split(".").map(Number);if(r>22||r===22&&s>=3||r===20&&s>=16)return m.getBuiltinModule(e)}return w(e)},"__cjs_getBuiltinModule"),{createInterface:z}=q("node:readline");var A=["aj","aju","av","avj","ejv","jav","jv"],D=["angula","angular-node","angularjs"],C=["auto-prefixer"],S=["aaxios","aios","axio","axioos","axios-node","axioss","axis","axiso","axois","axos","axxios"],M=["abel","babbel","babe","babel-js","babel-node","babl","bable","bbael","bebel"],N=["bcrpyt","bcrypt-node","brcypt","crypt","dcrypt"],P=["bcryptjs-node","dcryptjs"],F=["bunan","bunya","bunyan-node","buynan"],O=["cai","cha","chaijs","chal","chi","chia","hai"],R=["cahlk","calk","cchalk","ch4lk","cha1k","chaalk","chaik","chak","chakl","chalk-node","chalkk","challk","chhalk","chlak","chlk","halk","hcalk"],B=["cheero","cherio"],L=["c0lor","ccolor","clor","colo","coloor","color-js","colorjs","colorr","colr","coolor","coolr"],W=["ccolors","colors-node","colorss","colorz","colrs","coolors"],J=["c0mmander","ccommander","cmmander","cmomander","co-mmander","comamnder","comander","comm4nder","commaander","commader","commadner","commamder","command3r","commandder","commande","commandeer","commander-js","commanderr","commandr","commandre","commanedr","commaner","commannder","commender","commmander","commnader","commnder","coommander","ocmmander","ommander"],U=["cor","corss","cos","cosr","cros","crs","ors"],V=["days"],I=["d3bug","dbeug","dbug","ddebug","debbug","debg","debgu","debu","debu9","debug-js","debug-node","debugg","debugjs","debuug","deebug","deubg","deug","ebug","edbug"],Y=["dot-env","dotenv-node","dotenvjs","dotevn"],E=["3lectron","eectron","eelctron","eelectron","el3ctron","elcetron","elctron","elecctron","elecron","elecrton","electon","electorn","electr0n","electrn","electrno","electro","electrom","electron-node","electronn","electroon","electrron","electtron","eleectron","eletcron","eletron","ellectron","lectron","leectron"],G=["asbuild","ebuild","esbuild-node","esbuildjs","ezbuild","sbuild"],H=["aslint","elint","eslint-js","eslint-node","eslit","ezlint","slint"],K=["eexpress","epress","epxress","experss","expess","exppress","expreess","expres","express-node","expressjs","expresss","exprress","exprses","exprss","exress","exrpess","exxpress","xepress","xpress"],Q=["astify"],X=["firebasejs"],Z=["form1dable"],ee=["glb","glo","glob-js","globjs","gob","golb","lob"],oe=["go","goot","gotjs","gott","gt","gto","ogt","ot","qot"],re=["helmetjs","helnet"],se=["homo","hon","hoo","hoon","ohno","ono"],ae=["inquire","inquirer-js","nquirer"],te=["iredis"],ne=["ejst","est","jast","jes","jestjs","jestt","jet","jets","jst"],ce=["imp","jim","jip","jmp"],ie=["ji","jio","jo","joii","jol","oi","oji"],de=["jdom","jsdm","jsdo","jsdom-js","jsdon","jsom","sdom"],me=["jsonwebtoken-js","jsonwebtoken-node"],le=["ka","kao","ko","koaa","koajs","koe","oa","oka"],pe=["1odash","iodash","l0dash","ldash","ldoash","llodash","lo-dash","loadsh","loash","lobash","lod4sh","lodaash","lodah","lodahs","lodas","lodash-node","lodashh","lodassh","loddash","lodesh","lodsah","lodsh","loodash","odash","oldash"],ue=["luca","luci","lucie"],ve=["luon","luxo","luxon-js"],he=["imcromatch","mciromatch","micormatch","micrmoatch","micro-match","microamtch","micromacth","micromathc","micromtach","mircomatch"],je=["minimath"],be=["mcha","mmocha","moca","moch","mocha-js","moha","nocha","ocha"],ke=["m0ment","mment","mmoent","mmoment","moemnt","moent","mom3nt","momeent","momemt","momen","momen7","momennt","moment-js","momentjs","momentt","momet","mometn","momment","momnet","momnt","monent","mooment","oment","omment"],ge=["mognoose","mogoose","mongoos","mongose","monqoose","moongoose"],ye=["moran","organ"],fe=["muler","multer-js","muter"],xe=["mysql"],we=["ext","mext","n3xt","naxt","net","netx","nex","next-js","next-node","nextjs","nxt"],qe=["node-mailer","nodemailer-js"],ze=["nodemo","nodemonjs","nodmeon"],_e=["oar","or","ora-node","ore","ra","roa"],$e=["arcel","parce","parceljs"],Te=["passport-js"],Ae=["phase","phaser-node"],De=["ino","pimo","pin","pino-node","pinojs","pio","pion"],Ce=["playright","playwright-js"],Se=["postcss-js","postcss-node","potscss"],Me=["pettier","pprettier","pretier","prettierjs","prettierr","prtetier"],Ne=["prima","prism","prisma-js","prismajs","prizma"],Pe=["pupeteer"],Fe=["rada","rama","ramd","randa"],Oe=["eact","eract","r3act","raact","ract","raect","re4ct","reaact","reac","reac7","reacct","react-node","reactjs","reactt","reat","reatc","recat","rect","reeact","reect","rreact"],Re=["erdis","radis","rdis","redi","redis-js","redis-node","rediss","rediz","reds","reis","rredis"],Be=["resen","rsend"],Le=["ollup","rollup-js","rollup-node"],We=["ass","asss","sas","sass-node","sess","ssas","sss"],Je=["emver","seemver","semver-node","semvre","senver","sever"],Ue=["sequelize-js","sequelize-node"],Ve=["harp","shap","shar","sharp-js","sharpjs"],Ie=["stipe","strip","stripe-node","tripe"],Ye=["supabase-js"],Ee=["suelte","svelt3","svelte-js","sveltejs","velte"],Ge=["tailwindcss-js"],He=["auri","taui"],Ke=["hree","htree","thee","there","three-js","three-node","tree"],Qe=["stx","sx","ts","tsxx","ttsx","tx","txs","tzx"],Xe=["ttypescript","typecript","typescipt","typescript-node","typescriptjs","typescrit","typescritp"],Ze=["udnerscore","undercore","underscoer","underscore-node","underscroe","undersocre","undesrcore"],eo=["uid","uud","uudi","uui","uuid-js","uuid-node","uuidjs","vuid"],oo=["ite","vie","vit","vita","vite-node","vitee","vlte","vte"],ro=["itest","uitest","vitestjs","vitezt","vittest","vtest"],so=["ue","uue","uve","ve","veu","vu","vu3","vua","vue-node","vuee","vuejs","vuue","vve","vvue"],ao=["web-pack","weback","webpac","webpack-node","webpackjs","webpak","weebpack","wepack","wepback"],to=["winson","winston-js","winstoon"],no=["up","uyp","yp","yu","yupjs","yupp"],co=["od","zd","zdo","zo","zob","zod-js","zodjs"];const io={ajv:A,angular:D,autoprefixer:C,"aws-sdk":["awssdk","ews-sdk"],axios:S,babel:M,bcrypt:N,bcryptjs:P,"body-parser":["body-paresr","body-parse","body-parser-js","body_parser"],bunyan:F,chai:O,chalk:R,cheerio:B,color:L,colors:W,commander:J,"cookie-parser":["cookie-parse","cookieparser"],cors:U,"cross-env":["crossenv"],"date-fns":["data-fns","date-fn"],dayjs:V,debug:I,dotenv:Y,electron:E,esbuild:G,eslint:H,express:K,fastify:Q,firebase:X,formidable:Z,glob:ee,got:oe,helmet:re,hono:se,inquirer:ae,ioredis:te,jest:ne,jimp:ce,joi:ie,jsdom:de,jsonwebtoken:me,koa:le,lodash:pe,lucia:ue,luxon:ve,micromatch:he,minimatch:je,mocha:be,moment:ke,mongoose:ge,morgan:ye,multer:fe,mysql2:xe,next:we,"node-fetch":["node-fecth","node-fethc","node.fetch"],nodemailer:qe,nodemon:ze,ora:_e,parcel:$e,passport:Te,phaser:Ae,pino:De,playwright:Ce,postcss:Se,prettier:Me,prisma:Ne,puppeteer:Pe,ramda:Fe,react:Oe,"react-dom":["eact-dom","eract-dom","r3act-dom","ract-dom","raect-dom","re4ct-dom","reaact-dom","reac-dom","reac7-dom","reacct-dom","react-bom","react-d0m","react-ddom","react-dm","react-dmo","react-do","react-domm","react-don","react-doom","react-odm","react-om","react.dom","reactdom","reactt-dom","reat-dom","reatc-dom","recat-dom","rect-dom","reeact-dom","rreact-dom"],redis:Re,resend:Be,rollup:Le,sass:We,semver:Je,sequelize:Ue,sharp:Ve,"socket.io":["ocket.io","oscket.io","scket.io","scoket.io","soccket.io","socekt.io","socet.io","sock3t.io","socke.io","socke7.io","sockeet.io","socket.1o","socket.i","socket.iio","socket.ioo","socket.lo","socket.o","socket.oi","sockett.io","sockket.io","sockt.io","sockte.io","sokcet.io","soket.io","soocket.io","ssocket.io"],stripe:Ie,supabase:Ye,svelte:Ee,tailwindcss:Ge,tauri:He,three:Ke,"ts-node":["tts-node"],tsx:Qe,typescript:Xe,underscore:Ze,uuid:eo,vite:oo,vitest:ro,vue:so,webpack:ao,winston:to,yup:no,zod:co};var mo=Object.defineProperty,n=u((e,r)=>mo(e,"name",{value:r,configurable:!0}),"i");const lo={a:["4","e"],b:["d"],d:["b"],e:["3","a"],g:["9","q"],i:["1","l"],l:["1","i"],m:["n"],n:["m"],o:["0"],s:["5","z"],t:["7"],u:["v"],v:["u"]},po=n(e=>{const r=new Set;if(e.length<3)return r;for(let o=0;o<e.length;o++){const a=e[o]==="-"||e[o]==="."||e[o]==="_";if(a||r.add(e.slice(0,o)+e.slice(o+1)),a||r.add(e.slice(0,o)+e[o]+e.slice(o)),o<e.length-1&&e[o]!==e[o+1]){const p=e[o+1]==="-"||e[o+1]==="."||e[o+1]==="_";if(!a&&!p){const d=e.split("");[d[o],d[o+1]]=[d[o+1],d[o]],r.add(d.join(""))}}const t=e[o].toLowerCase(),i=lo[t];if(i)for(const p of i)r.add(e.slice(0,o)+p+e.slice(o+1))}const s=/[-._]/g;if(s.test(e))r.add(e.replaceAll(s,"")),r.add(e.replaceAll(s,"-")),r.add(e.replaceAll(s,".")),r.add(e.replaceAll(s,"_"));else if(e.length>5)for(let o=2;o<e.length-2;o++)r.add(`${e.slice(0,o)}-${e.slice(o)}`),r.add(`${e.slice(0,o)}.${e.slice(o)}`),r.add(`${e.slice(0,o)}_${e.slice(o)}`);return e.startsWith("@")||(r.add(`${e}-js`),r.add(`${e}js`),r.add(`${e}-node`)),r.delete(e),r},"generateVariants");let v,l;const b=n(()=>(v||(v=io),v),"loadBlocklist"),uo=n(()=>{if(!l){l=new Map;for(const[e,r]of Object.entries(b()))for(const s of r)l.set(s,e)}return l},"getReverseLookup"),vo=n(e=>e.startsWith("@")?e.split("/")[1]??e:e,"bareName"),ho=n(e=>{const r=vo(e),s=uo().get(r);if(s)return{input:e,legitimate:s,method:"blocklist"};for(const o of Object.keys(b()))if(po(o).has(r))return{input:e,legitimate:o,method:"heuristic"}},"checkTyposquat"),k=n((e,r)=>{const s=r?new Set(r):void 0,o=[];for(const a of e){if(s?.has(a))continue;const t=ho(a);t&&o.push(t)}return o},"checkTyposquats"),g=n((e,r)=>{c(""),c(h(`Possible typosquat${e.length===1?"":"s"} ${r}:`));for(const s of e){const o=s.method==="blocklist"?"known typosquat":"similar name";c(` ${j("⚠")} ${h(s.input)} — did you mean ${j(s.legitimate)}? (${o})`)}c("")},"printTyposquatWarnings"),y=n(async e=>{if(!process.stdin.isTTY){c("Aborting: potential typosquat detected in non-interactive mode. Use --no-typosquat-check to skip.");return}const r=z({input:process.stdin,output:process.stdout}),s=await new Promise(o=>{r.question(e,a=>{o(a.trim().toLowerCase())})});return r.close(),s},"askConfirmation"),zo=n(async(e,r)=>{const s=k(e,r);if(s.length===0)return{ok:!0,packages:e};g(s,"detected");const o=await y(`Use suggested package${s.length===1?"":"s"} instead? [S]uggested / [y]es, keep original / [N]o, abort (default: N) `);if(o===void 0)return{ok:!1,packages:e};if(o==="s"||o==="suggested"){const a=new Map(s.map(t=>[t.input,t.legitimate]));return{ok:!0,packages:e.map(t=>a.get(t)??t)}}return o==="y"||o==="yes"?{ok:!0,packages:e}:{ok:!1,packages:e}},"runTyposquatCheck"),jo=/^(?:npm|pnpm|yarn):(.+?)(?:@.*)?$/,bo=n(e=>jo.exec(e)?.[1],"parseAliasTarget"),ko=n(e=>{if(!_(e))return[];const r=$(e),s={...r.dependencies,...r.devDependencies,...r.optionalDependencies,...r.peerDependencies},o=new Set;for(const[a,t]of Object.entries(s)){o.add(a);const i=bo(t);i&&o.add(i)}return[...o]},"readDepsFromPackageJson"),_o=n(async(e,r)=>{const s=T(e,"package.json"),o=ko(s);if(o.length===0)return!0;const a=k(o,r);if(a.length===0)return!0;g(a,"in package.json dependencies"),c("Fix the package name in package.json before proceeding.");const t=await y("Continue anyway? [y/N] ");return t==="y"||t==="yes"},"scanDepsForTyposquats");export{zo as r,_o as s};
@@ -0,0 +1 @@
1
+ var c=Object.defineProperty;var o=(e,r)=>c(e,"name",{value:r,configurable:!0});var n=Object.defineProperty,t=o((e,r)=>n(e,"name",{value:r,configurable:!0}),"s");const p=t(e=>e?Array.isArray(e)?e:[e]:[],"toStringArray"),g=t(e=>e instanceof Error?e.message:typeof e=="string"?e:String(e),"errorMessage"),v=/^(.+?)(?:@(.+))?$/,m=t(e=>{if(e.startsWith("@")){const i=e.indexOf("/");if(i===-1)return{name:e,versionSpec:void 0};const a=e.slice(i+1),s=a.indexOf("@");return s===-1?{name:e,versionSpec:void 0}:{name:e.slice(0,i+1+s),versionSpec:a.slice(s+1)}}const r=v.exec(e);return r?{name:r[1]??e,versionSpec:r[2]}:{name:e,versionSpec:void 0}},"parsePackageArgument");export{m as d,g as f,p as o};