@visulima/vis 1.0.0-alpha.23 → 1.0.0-alpha.24

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 (62) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/LICENSE.md +3 -0
  3. package/dashboard/dist/index.html +29 -29
  4. package/dist/bin.js +1 -1
  5. package/dist/binx.js +1 -1
  6. package/dist/config/index.d.ts +8 -8
  7. package/dist/packem_chunks/bin.js +198 -198
  8. package/dist/packem_chunks/handler10.js +1 -1
  9. package/dist/packem_chunks/handler11.js +1 -1
  10. package/dist/packem_chunks/handler13.js +1 -1
  11. package/dist/packem_chunks/handler14.js +1 -1
  12. package/dist/packem_chunks/handler15.js +1 -1
  13. package/dist/packem_chunks/handler16.js +1 -1
  14. package/dist/packem_chunks/handler17.js +1 -1
  15. package/dist/packem_chunks/handler18.js +1 -1
  16. package/dist/packem_chunks/handler19.js +1 -1
  17. package/dist/packem_chunks/handler20.js +1 -1
  18. package/dist/packem_chunks/handler22.js +1 -1
  19. package/dist/packem_chunks/handler23.js +1 -1
  20. package/dist/packem_chunks/handler27.js +1 -1
  21. package/dist/packem_chunks/handler28.js +1 -1
  22. package/dist/packem_chunks/handler29.js +1 -1
  23. package/dist/packem_chunks/handler31.js +1 -1
  24. package/dist/packem_chunks/handler34.js +26 -24
  25. package/dist/packem_chunks/handler39.js +1 -1
  26. package/dist/packem_chunks/handler4.js +1 -1
  27. package/dist/packem_chunks/handler40.js +1 -1
  28. package/dist/packem_chunks/handler41.js +12 -12
  29. package/dist/packem_chunks/handler42.js +7 -7
  30. package/dist/packem_chunks/handler43.js +1 -1
  31. package/dist/packem_chunks/handler46.js +1 -1
  32. package/dist/packem_chunks/handler47.js +7 -7
  33. package/dist/packem_chunks/handler48.js +57 -52
  34. package/dist/packem_chunks/handler5.js +1 -1
  35. package/dist/packem_chunks/handler8.js +1 -1
  36. package/dist/packem_chunks/handler9.js +1 -1
  37. package/dist/packem_chunks/heal-accept.js +1 -1
  38. package/dist/packem_chunks/help-command.js +1 -1
  39. package/dist/packem_chunks/index.js +1 -1
  40. package/dist/packem_chunks/list.js +1 -1
  41. package/dist/packem_chunks/loader.js +2 -2
  42. package/dist/packem_chunks/sync2.js +1 -1
  43. package/dist/packem_chunks/tripwire.js +1 -1
  44. package/dist/packem_chunks/verify-lockfile.js +1 -1
  45. package/dist/packem_shared/{cyclonedx-B293T7R0.js → cyclonedx-DPEW0nwS.js} +1 -1
  46. package/dist/packem_shared/{docker-BhBBfWfc.js → docker-_pBC9Loj.js} +1 -1
  47. package/dist/packem_shared/{index-CZX_II5N.js → index-B8Ko8mwG.js} +8 -8
  48. package/dist/packem_shared/index-D_tAc2nS.js +1 -0
  49. package/dist/packem_shared/lifecycle-DJDsjoic.js +2 -0
  50. package/dist/packem_shared/peer-warnings-EvSJ18gE.js +1 -0
  51. package/dist/packem_shared/pm-runner-Dnj9J3KF.js +1 -0
  52. package/dist/packem_shared/{provenance-BcldGs02.js → provenance-yESbF7Vs.js} +1 -1
  53. package/dist/packem_shared/{resolve-explicit-2G-2HWtR.js → resolve-explicit-BpxcFRuk.js} +1 -1
  54. package/dist/packem_shared/{s1ngularity-Boxkax0D.js → s1ngularity-B_xjP4lC.js} +1 -1
  55. package/dist/packem_shared/{signatures-SO-fyExV.js → signatures-DBwSnMBB.js} +1 -1
  56. package/dist/packem_shared/{typosquats-CioMnpnb.js → typosquats-Citu7BRY.js} +1 -1
  57. package/index.js +52 -52
  58. package/package.json +11 -11
  59. package/schemas/vis-config.schema.json +13 -13
  60. package/dist/packem_shared/index-C1w1GXdS.js +0 -1
  61. package/dist/packem_shared/lifecycle-wRE7ymVc.js +0 -2
  62. package/dist/packem_shared/pm-runner-CVliR6Ie.js +0 -1
@@ -1,2 +1,2 @@
1
- var g=Object.defineProperty;var d=(t,o)=>g(t,"name",{value:o,configurable:!0});import{M as l}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{C as v,O as h}from"./bin.js";import{s as j,p as x}from"../packem_shared/docker-BhBBfWfc.js";var C=Object.defineProperty,m=d((t,o)=>C(t,"name",{value:o,configurable:!0}),"f");const M=m(async({argument:t,logger:o,options:s,visConfig:w,workspaceRoot:e})=>{const n=t[0];if(!n)throw new Error("Missing subcommand. Usage: vis docker <scaffold|prune>");if(!e)throw new Error("Could not determine workspace root. Run inside a monorepo.");const{packageJsons:k,workspace:c}=v(e,w);if(n==="scaffold"){const a=h(e,c,k),r=s.focus;if(!r)throw new Error("Missing --focus. Pass one or more project names, comma-separated.");const f=r.split(",").map(i=>i.trim()).filter(Boolean);if(f.length===0)throw new Error("--focus resolved to an empty list. Provide at least one project name.");const u=l(e,s.out??".vis/docker"),{projects:p}=j({focus:f,includeSources:!!s.includeSources,log:m(i=>{o.info(i)},"log"),outDir:u,projectGraph:a,pruneLockfile:s.pruneLockfile!==!1,workspace:c,workspaceRoot:e});o.info(`Scaffolded ${p.length} project(s) into ${u}`),o.info(`Focus closure: ${p.toSorted().join(", ")}`);return}if(n==="prune"){const a=l(e,s.context??".vis/docker"),{removed:r}=x({contextRoot:a,workspace:c,workspaceRoot:e});o.info(`Pruned ${r.length} unfocused project(s)`),r.length>0&&o.debug?.(r.join(`
1
+ var g=Object.defineProperty;var d=(t,o)=>g(t,"name",{value:o,configurable:!0});import{M as l}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{C as v,O as h}from"./bin.js";import{s as j,p as x}from"../packem_shared/docker-_pBC9Loj.js";var C=Object.defineProperty,m=d((t,o)=>C(t,"name",{value:o,configurable:!0}),"f");const M=m(async({argument:t,logger:o,options:s,visConfig:w,workspaceRoot:e})=>{const n=t[0];if(!n)throw new Error("Missing subcommand. Usage: vis docker <scaffold|prune>");if(!e)throw new Error("Could not determine workspace root. Run inside a monorepo.");const{packageJsons:k,workspace:c}=v(e,w);if(n==="scaffold"){const a=h(e,c,k),r=s.focus;if(!r)throw new Error("Missing --focus. Pass one or more project names, comma-separated.");const f=r.split(",").map(i=>i.trim()).filter(Boolean);if(f.length===0)throw new Error("--focus resolved to an empty list. Provide at least one project name.");const u=l(e,s.out??".vis/docker"),{projects:p}=j({focus:f,includeSources:!!s.includeSources,log:m(i=>{o.info(i)},"log"),outDir:u,projectGraph:a,pruneLockfile:s.pruneLockfile!==!1,workspace:c,workspaceRoot:e});o.info(`Scaffolded ${p.length} project(s) into ${u}`),o.info(`Focus closure: ${p.toSorted().join(", ")}`);return}if(n==="prune"){const a=l(e,s.context??".vis/docker"),{removed:r}=x({contextRoot:a,workspace:c,workspaceRoot:e});o.info(`Pruned ${r.length} unfocused project(s)`),r.length>0&&o.debug?.(r.join(`
2
2
  `));return}throw new Error(`Unknown subcommand: "${n}". Expected scaffold or prune.`)},"execute");export{M as default};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var n=(o,r)=>d(o,"name",{value:r,configurable:!0});import{I as m,W as g}from"../packem_shared/pm-runner-CVliR6Ie.js";import{o as u}from"../packem_shared/utils-DrNg0XTR.js";var v=Object.defineProperty,k=n((o,r)=>v(o,"name",{value:r,configurable:!0}),"t");const b=k(async({argument:o,logger:r,options:e,visConfig:s,workspaceRoot:t})=>{const a=o;if(!a||a.length===0)throw new Error("No command specified. Usage: vis exec <command> [args...]");const[i,...f]=a,l=t??process.cwd(),p=m(l,{configBackend:s?.install?.backend,configCorepack:s?.install?.corepack}),c=g(p,{args:f,command:i,filter:u(e.filter),parallel:e.parallel||!1,recursive:e.recursive||!1,reverse:e.reverse||!1,shellMode:e.shellMode||!1,workspaceRoot:e.workspaceRoot||!1},l,r);c!==0&&(process.exitCode=c)},"execute");export{b as default};
1
+ var d=Object.defineProperty;var n=(o,r)=>d(o,"name",{value:r,configurable:!0});import{R as m,N as g}from"../packem_shared/pm-runner-Dnj9J3KF.js";import{o as u}from"../packem_shared/utils-DrNg0XTR.js";var v=Object.defineProperty,k=n((o,r)=>v(o,"name",{value:r,configurable:!0}),"t");const x=k(async({argument:o,logger:r,options:e,visConfig:s,workspaceRoot:t})=>{const a=o;if(!a||a.length===0)throw new Error("No command specified. Usage: vis exec <command> [args...]");const[i,...f]=a,l=t??process.cwd(),p=m(l,{configBackend:s?.install?.backend,configCorepack:s?.install?.corepack}),c=g(p,{args:f,command:i,filter:u(e.filter),parallel:e.parallel||!1,recursive:e.recursive||!1,reverse:e.reverse||!1,shellMode:e.shellMode||!1,workspaceRoot:e.workspaceRoot||!1},l,r);c!==0&&(process.exitCode=c)},"execute");export{x as default};
@@ -1 +1 @@
1
- var l=Object.defineProperty;var r=(e,a)=>l(e,"name",{value:a,configurable:!0});import{I as g,a as d}from"../packem_shared/pm-runner-CVliR6Ie.js";var k=Object.defineProperty,u=r((e,a)=>k(e,"name",{value:a,configurable:!0}),"t");const w=u(async({argument:e,logger:a,options:c,visConfig:n,workspaceRoot:i})=>{if(!e||e.length===0)throw new Error("No package specified. Usage: vis info <package> [field...]");const[t,...f]=e,s=i??process.cwd(),p=g(s,{configBackend:n?.install?.backend,configCorepack:n?.install?.corepack}),o=d(p,{fields:f,json:c.json||!1,package:t},s,a);o!==0&&o!==1&&(process.exitCode=o)},"execute");export{w as default};
1
+ var l=Object.defineProperty;var r=(e,a)=>l(e,"name",{value:a,configurable:!0});import{R as g,S as d}from"../packem_shared/pm-runner-Dnj9J3KF.js";var k=Object.defineProperty,u=r((e,a)=>k(e,"name",{value:a,configurable:!0}),"t");const w=u(async({argument:e,logger:a,options:c,visConfig:n,workspaceRoot:i})=>{if(!e||e.length===0)throw new Error("No package specified. Usage: vis info <package> [field...]");const[t,...f]=e,s=i??process.cwd(),p=g(s,{configBackend:n?.install?.backend,configCorepack:n?.install?.corepack}),o=d(p,{fields:f,json:c.json||!1,package:t},s,a);o!==0&&o!==1&&(process.exitCode=o)},"execute");export{w as default};
@@ -1,4 +1,4 @@
1
- var A=Object.defineProperty;var w=(o,s)=>A(o,"name",{value:s,configurable:!0});import{createRequire as B}from"node:module";import{i as h,M as y}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{H as v,B as j,j as P}from"./config.js";import{p as e}from"./bin.js";import{A as F}from"../packem_shared/pm-runner-CVliR6Ie.js";import{O as q}from"../packem_shared/build-scripts-3E2pmscY.js";import{N as C}from"../packem_shared/native-config-sync-BOeuyrBj.js";import{E as D}from"../packem_shared/min-release-age-Cz6HbF-I.js";const M=B(import.meta.url),g=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,R=w(o=>{if(typeof g<"u"&&g.versions&&g.versions.node){const[s,t]=g.versions.node.split(".").map(Number);if(s>22||s===22&&t>=3||s===20&&t>=16)return g.getBuiltinModule(o)}return M(o)},"__cjs_getBuiltinModule"),{execFileSync:T}=R("node:child_process"),{createInterface:I}=R("node:readline");var K=Object.defineProperty,d=w((o,s)=>K(o,"name",{value:s,configurable:!0}),"u");const G=d(o=>{const s=[];return h(y(o,"turbo.json"))&&s.push("turborepo"),h(y(o,"nx.json"))&&s.push("nx"),h(y(o,".moon"))&&s.push("moon"),s},"detectExistingTools"),E=d((o,s)=>new Promise(t=>{o.question(s,i=>{t(i.trim())})}),"ask"),u=d(async(o,s,t=!0)=>{const i=await E(o,`${s} ${t?"[Y/n]":"[y/N]"} `);return i===""?t:i.toLowerCase()==="y"||i.toLowerCase()==="yes"},"confirm"),k=d((o,s)=>{const t=[],i=Object.entries(s.allowBuilds).filter(([,m])=>m).map(([m])=>` "${m}": true,`).join(`
1
+ var A=Object.defineProperty;var w=(o,s)=>A(o,"name",{value:s,configurable:!0});import{createRequire as B}from"node:module";import{i as h,M as y}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{H as v,B as j,j as P}from"./config.js";import{p as e}from"./bin.js";import{A as F}from"../packem_shared/pm-runner-Dnj9J3KF.js";import{O as q}from"../packem_shared/build-scripts-3E2pmscY.js";import{N as C}from"../packem_shared/native-config-sync-BOeuyrBj.js";import{E as D}from"../packem_shared/min-release-age-Cz6HbF-I.js";const M=B(import.meta.url),g=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,R=w(o=>{if(typeof g<"u"&&g.versions&&g.versions.node){const[s,t]=g.versions.node.split(".").map(Number);if(s>22||s===22&&t>=3||s===20&&t>=16)return g.getBuiltinModule(o)}return M(o)},"__cjs_getBuiltinModule"),{execFileSync:T}=R("node:child_process"),{createInterface:I}=R("node:readline");var K=Object.defineProperty,d=w((o,s)=>K(o,"name",{value:s,configurable:!0}),"u");const G=d(o=>{const s=[];return h(y(o,"turbo.json"))&&s.push("turborepo"),h(y(o,"nx.json"))&&s.push("nx"),h(y(o,".moon"))&&s.push("moon"),s},"detectExistingTools"),E=d((o,s)=>new Promise(t=>{o.question(s,i=>{t(i.trim())})}),"ask"),u=d(async(o,s,t=!0)=>{const i=await E(o,`${s} ${t?"[Y/n]":"[y/N]"} `);return i===""?t:i.toLowerCase()==="y"||i.toLowerCase()==="yes"},"confirm"),k=d((o,s)=>{const t=[],i=Object.entries(s.allowBuilds).filter(([,m])=>m).map(([m])=>` "${m}": true,`).join(`
2
2
  `),r=[` installScripts: {
3
3
  allow: ${i?`{
4
4
  ${i}
@@ -1,4 +1,4 @@
1
- var y=Object.defineProperty;var w=(r,e)=>y(r,"name",{value:e,configurable:!0});import{I as N,E as $,T as M,e as R}from"../packem_shared/index.server-B7ETiT4C.js";import{p as g}from"./bin.js";import{r as S,M as x,a as A,b,c as P,d as j,e as C,f as E,g as B,h as D}from"../packem_shared/s1ngularity-Boxkax0D.js";import{g as O,a as V,r as F}from"../packem_shared/provenance-BcldGs02.js";import{r as I}from"../packem_shared/signatures-SO-fyExV.js";var T=Object.defineProperty,p=w((r,e)=>T(r,"name",{value:e,configurable:!0}),"p");const k=new Set(["archivedRepo","author","downloads","expiredDomains","metadata","newBin","provenance","s1ngularity","signatures"]),U=p(r=>{const e=r.trim();if(e==="")return;if(e.startsWith("@")){const o=e.indexOf("@",1);return o===-1?{name:e,spec:void 0}:{name:e.slice(0,o),spec:e.slice(o+1)||void 0}}const i=e.indexOf("@");return i===-1?{name:e,spec:void 0}:{name:e.slice(0,i),spec:e.slice(i+1)||void 0}},"parsePackageArg"),L=p(r=>{if(r===void 0||r.trim()==="")return;const e=new Set;for(const i of r.split(",")){const o=i.trim();if(!k.has(o))throw new Error(`Unknown marshall in --only: ${o}. Known: ${[...k].sort().join(", ")}.`);e.add(o)}return e},"parseOnlyFlag"),l=p((r,e)=>r===void 0||r.has(e),"should"),J=p(r=>r?.has("signatures")??!1,"shouldRunSignatures"),Q=p(async({argument:r,options:e,workspaceRoot:i})=>{if(!r||r.length===0)throw new Error("No package specified. Usage: vis inspect <package>[@<spec>]");const o=U(r[0]);if(o===void 0)throw new Error(`Invalid package argument: "${String(r[0])}". Usage: vis inspect <package>[@<spec>]`);const t=L(e.only),u=await O(o.name,{workspaceRoot:i});if(u===void 0){g.error(`Package ${o.name} not found in the registry.`),process.exitCode=2;return}const h=V(u,o.spec);if(h===void 0){g.error(`Could not resolve ${o.name}@${o.spec??"latest"} to a published version.`),process.exitCode=2;return}const c=[{name:o.name,version:h}],n=new x;if(l(t,"author")){const s=await S(c,{workspaceRoot:i});for(const a of s)n.add({marshall:"author",message:a.message,packageName:a.packageName,severity:a.severity})}if(l(t,"provenance")){const s=await F(c);for(const a of s)n.add({marshall:"provenance",message:`Prior version ${a.priorVersionWithProvenance} had provenance but ${a.version} does not.`,packageName:a.packageName,severity:"error"})}if(l(t,"s1ngularity")){const s=await A(c,{workspaceRoot:i});for(const a of s){const d=a.hookChanges.map(v=>`${v.hook} (${v.kind})`).join(", "),m=a.hookChanges.length===1;n.add({marshall:"s1ngularity",message:`${a.version} ${m?"has an":"has"} install-script ${m?"change":"changes"} [${d}] AND dropped the provenance attestation that ${a.priorVersion} carried — this is the s1ngularity compromised-publish shape.`,packageName:a.packageName,severity:"error"})}}if(l(t,"newBin")){const s=await b(c);for(const a of s){const d=a.newBins.map(m=>m.command).join(", ");n.add({marshall:"newBin",message:`${a.toVersion} adds new bin script${a.newBins.length===1?"":"s"}: ${d} (prior: ${a.fromVersion}).`,packageName:a.packageName,severity:"warning"})}}if(l(t,"metadata")){const s=await P(c,{workspaceRoot:i});for(const a of s)n.add({marshall:"metadata",message:`Missing/invalid metadata: ${a.issues.join(", ")}.`,packageName:a.packageName,severity:"warning"})}if(l(t,"downloads")){const s=await j([o.name]);for(const a of s){const d=a.downloadsLastMonth===void 0?"unknown":String(a.downloadsLastMonth);n.add({marshall:"downloads",message:a.kind==="no-data"?"npm stats API returned no monthly download data.":`Only ${d} downloads in the past month.`,packageName:a.packageName,severity:a.severity})}}if(l(t,"expiredDomains")){const s=await C(c,{workspaceRoot:i});for(const a of s)n.add({marshall:"expiredDomains",message:a.kind==="expired"?`Maintainer email domain ${a.domain} (${a.maintainer}) is unregistered — potential hijack risk.`:`Could not verify maintainer email domain ${a.domain} (${a.maintainer}).`,packageName:a.packageName,severity:a.severity})}if(J(t)){const s=await I(c,{workspaceRoot:i});for(const a of s)n.add({marshall:"signatures",message:a.message,packageName:a.packageName,severity:a.severity})}if(l(t,"archivedRepo")){const s=await E(c,{workspaceRoot:i});for(const a of s)n.add({marshall:"archivedRepo",message:a.kind==="archived"?`Source repo ${a.owner}/${a.repo} is archived${a.archivedAt===void 0?"":` (since ${a.archivedAt})`}.`:`Source repo ${a.owner}/${a.repo} returned 404 from GitHub.`,packageName:a.packageName,severity:"warning"})}const f=n.all();if(e.json===!0)process.stdout.write(`${JSON.stringify(B(f),void 0,2)}
1
+ var y=Object.defineProperty;var w=(r,e)=>y(r,"name",{value:e,configurable:!0});import{I as N,E as $,T as M,e as R}from"../packem_shared/index.server-B7ETiT4C.js";import{p as g}from"./bin.js";import{r as S,M as x,a as A,b,c as P,d as j,e as C,f as E,g as B,h as D}from"../packem_shared/s1ngularity-B_xjP4lC.js";import{g as O,a as V,r as F}from"../packem_shared/provenance-yESbF7Vs.js";import{r as I}from"../packem_shared/signatures-DBwSnMBB.js";var T=Object.defineProperty,p=w((r,e)=>T(r,"name",{value:e,configurable:!0}),"p");const k=new Set(["archivedRepo","author","downloads","expiredDomains","metadata","newBin","provenance","s1ngularity","signatures"]),U=p(r=>{const e=r.trim();if(e==="")return;if(e.startsWith("@")){const o=e.indexOf("@",1);return o===-1?{name:e,spec:void 0}:{name:e.slice(0,o),spec:e.slice(o+1)||void 0}}const i=e.indexOf("@");return i===-1?{name:e,spec:void 0}:{name:e.slice(0,i),spec:e.slice(i+1)||void 0}},"parsePackageArg"),L=p(r=>{if(r===void 0||r.trim()==="")return;const e=new Set;for(const i of r.split(",")){const o=i.trim();if(!k.has(o))throw new Error(`Unknown marshall in --only: ${o}. Known: ${[...k].sort().join(", ")}.`);e.add(o)}return e},"parseOnlyFlag"),l=p((r,e)=>r===void 0||r.has(e),"should"),J=p(r=>r?.has("signatures")??!1,"shouldRunSignatures"),Q=p(async({argument:r,options:e,workspaceRoot:i})=>{if(!r||r.length===0)throw new Error("No package specified. Usage: vis inspect <package>[@<spec>]");const o=U(r[0]);if(o===void 0)throw new Error(`Invalid package argument: "${String(r[0])}". Usage: vis inspect <package>[@<spec>]`);const t=L(e.only),u=await O(o.name,{workspaceRoot:i});if(u===void 0){g.error(`Package ${o.name} not found in the registry.`),process.exitCode=2;return}const h=V(u,o.spec);if(h===void 0){g.error(`Could not resolve ${o.name}@${o.spec??"latest"} to a published version.`),process.exitCode=2;return}const c=[{name:o.name,version:h}],n=new x;if(l(t,"author")){const s=await S(c,{workspaceRoot:i});for(const a of s)n.add({marshall:"author",message:a.message,packageName:a.packageName,severity:a.severity})}if(l(t,"provenance")){const s=await F(c);for(const a of s)n.add({marshall:"provenance",message:`Prior version ${a.priorVersionWithProvenance} had provenance but ${a.version} does not.`,packageName:a.packageName,severity:"error"})}if(l(t,"s1ngularity")){const s=await A(c,{workspaceRoot:i});for(const a of s){const d=a.hookChanges.map(v=>`${v.hook} (${v.kind})`).join(", "),m=a.hookChanges.length===1;n.add({marshall:"s1ngularity",message:`${a.version} ${m?"has an":"has"} install-script ${m?"change":"changes"} [${d}] AND dropped the provenance attestation that ${a.priorVersion} carried — this is the s1ngularity compromised-publish shape.`,packageName:a.packageName,severity:"error"})}}if(l(t,"newBin")){const s=await b(c);for(const a of s){const d=a.newBins.map(m=>m.command).join(", ");n.add({marshall:"newBin",message:`${a.toVersion} adds new bin script${a.newBins.length===1?"":"s"}: ${d} (prior: ${a.fromVersion}).`,packageName:a.packageName,severity:"warning"})}}if(l(t,"metadata")){const s=await P(c,{workspaceRoot:i});for(const a of s)n.add({marshall:"metadata",message:`Missing/invalid metadata: ${a.issues.join(", ")}.`,packageName:a.packageName,severity:"warning"})}if(l(t,"downloads")){const s=await j([o.name]);for(const a of s){const d=a.downloadsLastMonth===void 0?"unknown":String(a.downloadsLastMonth);n.add({marshall:"downloads",message:a.kind==="no-data"?"npm stats API returned no monthly download data.":`Only ${d} downloads in the past month.`,packageName:a.packageName,severity:a.severity})}}if(l(t,"expiredDomains")){const s=await C(c,{workspaceRoot:i});for(const a of s)n.add({marshall:"expiredDomains",message:a.kind==="expired"?`Maintainer email domain ${a.domain} (${a.maintainer}) is unregistered — potential hijack risk.`:`Could not verify maintainer email domain ${a.domain} (${a.maintainer}).`,packageName:a.packageName,severity:a.severity})}if(J(t)){const s=await I(c,{workspaceRoot:i});for(const a of s)n.add({marshall:"signatures",message:a.message,packageName:a.packageName,severity:a.severity})}if(l(t,"archivedRepo")){const s=await E(c,{workspaceRoot:i});for(const a of s)n.add({marshall:"archivedRepo",message:a.kind==="archived"?`Source repo ${a.owner}/${a.repo} is archived${a.archivedAt===void 0?"":` (since ${a.archivedAt})`}.`:`Source repo ${a.owner}/${a.repo} returned 404 from GitHub.`,packageName:a.packageName,severity:"warning"})}const f=n.all();if(e.json===!0)process.stdout.write(`${JSON.stringify(B(f),void 0,2)}
2
2
  `);else{const s=`${o.name}@${h}`;if(f.length===0)g.info(`${N("✓")} ${s} — no findings.`);else{g.info(`${$("Inspecting")} ${s}`);for(const m of D(f))process.stdout.write(`${m}
3
3
  `);const a=n.errors().length,d=n.warnings().length;process.stdout.write(`
4
4
  ${$("Summary:")} ${M(`${String(a)} error${a===1?"":"s"}`)}, ${R(`${String(d)} warning${d===1?"":"s"}`)}.
@@ -1 +1 @@
1
- var E=Object.defineProperty;var u=(s,r)=>E(s,"name",{value:r,configurable:!0});import{createRequire as P}from"node:module";import{i as $,M as h,K as F,O as G}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{p as n}from"./bin.js";import{A as H,I as K,p as N,R as W}from"../packem_shared/pm-runner-CVliR6Ie.js";import{s as J}from"../packem_shared/typosquats-CioMnpnb.js";import{o as Q}from"../packem_shared/utils-DrNg0XTR.js";const T=P(import.meta.url),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,A=u(s=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[r,t]=l.versions.node.split(".").map(Number);if(r>22||r===22&&t>=3||r===20&&t>=16)return l.getBuiltinModule(s)}return T(s)},"__cjs_getBuiltinModule"),{rmSync:D}=A("node:fs");var U=Object.defineProperty,y=u((s,r)=>U(s,"name",{value:r,configurable:!0}),"u");const V=["pnpm-lock.yaml","yarn.lock","package-lock.json","npm-shrinkwrap.json","bun.lock","bun.lockb"],X=y(s=>{let r=s;for(;;){for(const e of V)if($(h(r,e)))return!0;const t=F(r);if(t===r||G(r).root===r)return!1;r=t}},"hasLockfile"),g=new Set(["aube","auto","bun","npm","pnpm","yarn"]),ae=y(async s=>{const{argument:r,logger:t,options:e,visConfig:c,workspaceRoot:b}=s,a=b??process.cwd();if(r&&r.length>0){const o=e,{default:q}=await import("./handler17.js"),R=o.marshallCheck===!1||o["no-marshall-check"]===!0?!1:void 0,j=o.socketCheck===!1||o["no-socket-check"]===!0?!1:void 0,S=o.typosquatCheck===!1||o["no-typosquat-check"]===!0?!1:void 0,z=o.runScripts===!0||o["run-scripts"]===!0,I=o.workspaceRoot===!0||o["workspace-root"]===!0,L=o.saveOptional===!0||o["save-optional"]===!0,M=e.dev===!0,B={autoInstallPeers:!1,exact:o.exact===!0,filter:e.filter,global:!1,marshallCheck:R,runScripts:z,saveDev:M,saveOptional:L,savePeer:!1,socketCheck:j,to:void 0,typosquatCheck:S,workspace:!1,workspaceRoot:I};await q({...s,argument:r,options:B});return}if(e.typosquatCheck!==!1&&!await J(a,c?.security?.typosquatAllowlist)){process.exitCode=1;return}const i=e.installer;if(i&&!g.has(i)){n.error(`Invalid --installer value: "${i}". Expected one of: ${[...g].join(", ")}.`),process.exitCode=1;return}const w=i,C=e.aube===!1;let f;try{f=C?H(a):K(a,{backend:w,configBackend:c?.install?.backend,configCorepack:c?.install?.corepack})}catch(o){n.error(o instanceof Error?o.message:String(o)),process.exitCode=1;return}const d=N(a,f);d&&n.warn(d);const _=Q(e.filter),p=e.ci||!1,k=e.frozenLockfile||p,O=e.frozenLockfile===!1||e.force||e.lockfileOnly,x=X(a),m=k||!O&&x;if(!k&&m&&!e.silent&&n.info("Defaulting to frozen lockfile (pass --no-frozen-lockfile to allow lockfile updates)."),p){n.info("Clean install: removing node_modules...");try{D(h(a,"node_modules"),{force:!0,recursive:!0})}catch(o){n.error(`Failed to remove node_modules: ${o instanceof Error?o.message:String(o)}`),process.exitCode=1;return}}const v=W(f,{dev:e.dev||!1,filter:_,force:e.force||!1,frozenLockfile:m,ignoreScripts:!e.runScripts,lockfileOnly:e.lockfileOnly||!1,noOptional:e.optional===!1,offline:e.offline||!1,prod:e.prod||!1,recursive:e.recursive||!1,silent:e.silent||!1,workspaceRoot:e.workspaceRoot||!1},a,t,{ciMode:p,preferOffline:e.preferOffline||!1});v!==0&&(process.exitCode=v)},"execute");export{ae as default};
1
+ var M=Object.defineProperty;var d=(s,r)=>M(s,"name",{value:r,configurable:!0});import{createRequire as T}from"node:module";import{i as F,M as h,K as N,O as H}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{p as n}from"./bin.js";import{A as J,R as K,I as Q,C as U}from"../packem_shared/pm-runner-Dnj9J3KF.js";import{s as W}from"../packem_shared/typosquats-Citu7BRY.js";import{h as G,P as V}from"../packem_shared/peer-warnings-EvSJ18gE.js";import{o as X}from"../packem_shared/utils-DrNg0XTR.js";const B=T(import.meta.url),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,A=d(s=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[r,t]=l.versions.node.split(".").map(Number);if(r>22||r===22&&t>=3||r===20&&t>=16)return l.getBuiltinModule(s)}return B(s)},"__cjs_getBuiltinModule"),{rmSync:$}=A("node:fs");var Y=Object.defineProperty,y=d((s,r)=>Y(s,"name",{value:r,configurable:!0}),"u");const Z=["pnpm-lock.yaml","yarn.lock","package-lock.json","npm-shrinkwrap.json","bun.lock","bun.lockb"],ee=y(s=>{let r=s;for(;;){for(const e of Z)if(F(h(r,e)))return!0;const t=N(r);if(t===r||H(r).root===r)return!1;r=t}},"hasLockfile"),g=new Set(["aube","auto","bun","npm","pnpm","yarn"]),ce=y(async s=>{const{argument:r,logger:t,options:e,visConfig:c,workspaceRoot:C}=s,a=C??process.cwd();if(r&&r.length>0){const o=e,{default:j}=await import("./handler17.js"),q=o.marshallCheck===!1||o["no-marshall-check"]===!0?!1:void 0,S=o.socketCheck===!1||o["no-socket-check"]===!0?!1:void 0,P=o.typosquatCheck===!1||o["no-typosquat-check"]===!0?!1:void 0,z=o.runScripts===!0||o["run-scripts"]===!0,E=o.workspaceRoot===!0||o["workspace-root"]===!0,I=o.saveOptional===!0||o["save-optional"]===!0,D=e.dev===!0,L={autoInstallPeers:!1,exact:o.exact===!0,filter:e.filter,global:!1,marshallCheck:q,runScripts:z,saveDev:D,saveOptional:I,savePeer:!1,socketCheck:S,to:void 0,typosquatCheck:P,workspace:!1,workspaceRoot:E};await j({...s,argument:r,options:L});return}if(e.typosquatCheck!==!1&&!await W(a,c?.security?.typosquatAllowlist)){process.exitCode=1;return}const i=e.installer;if(i&&!g.has(i)){n.error(`Invalid --installer value: "${i}". Expected one of: ${[...g].join(", ")}.`),process.exitCode=1;return}const w=i,b=e.aube===!1;let f;try{f=b?J(a):K(a,{backend:w,configBackend:c?.install?.backend,configCorepack:c?.install?.corepack})}catch(o){n.error(o instanceof Error?o.message:String(o)),process.exitCode=1;return}const k=Q(a,f);k&&n.warn(k);const _=X(e.filter),p=e.ci||!1,m=e.frozenLockfile||p,O=e.frozenLockfile===!1||e.force||e.lockfileOnly,x=ee(a),v=m||!O&&x;if(!m&&v&&!e.silent&&n.info("Defaulting to frozen lockfile (pass --no-frozen-lockfile to allow lockfile updates)."),p){n.info("Clean install: removing node_modules...");try{$(h(a,"node_modules"),{force:!0,recursive:!0})}catch(o){n.error(`Failed to remove node_modules: ${o instanceof Error?o.message:String(o)}`),process.exitCode=1;return}}const{code:u,output:R}=await U(f,{dev:e.dev||!1,filter:_,force:e.force||!1,frozenLockfile:v,ignoreScripts:!e.runScripts,lockfileOnly:e.lockfileOnly||!1,noOptional:e.optional===!1,offline:e.offline||!1,prod:e.prod||!1,recursive:e.recursive||!1,silent:e.silent||!1,workspaceRoot:e.workspaceRoot||!1},a,t,{ciMode:p,preferOffline:e.preferOffline||!1});u!==0&&(process.exitCode=u),u===0&&!e.silent&&G(R)&&n.info(V)},"execute");export{ce as default};
@@ -1 +1 @@
1
- var L=Object.defineProperty;var $=(s,a)=>L(s,"name",{value:a,configurable:!0});import{createRequire as O}from"node:module";import{E,T as N,e as z,I as M}from"../packem_shared/index.server-B7ETiT4C.js";import{n as B,w as U}from"./config.js";import{K as J,J as C,L as V,p as f,M as R,N as Y,Q as K,f as Q,C as W,U as X,R as G,X as H,i as x,b as Z,Y as ee}from"./bin.js";import{M as oe}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{R as se,I as te,E as ne}from"../packem_shared/pm-runner-CVliR6Ie.js";import{r as D,a as ae,b as re,p as ie}from"../packem_shared/resolve-explicit-2G-2HWtR.js";import{r as ce}from"../packem_shared/typosquats-CioMnpnb.js";import{d as _,o as P}from"../packem_shared/utils-DrNg0XTR.js";const A=O(import.meta.url),v=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,I=$(s=>{if(typeof v<"u"&&v.versions&&v.versions.node){const[a,e]=v.versions.node.split(".").map(Number);if(a>22||a===22&&e>=3||a===20&&e>=16)return v.getBuiltinModule(s)}return A(s)},"__cjs_getBuiltinModule"),{createInterface:F}=I("node:readline");var le=Object.defineProperty,w=$((s,a)=>le(s,"name",{value:a,configurable:!0}),"c");const j=w(s=>s==="default"?"catalog:":`catalog:${s}`,"buildCatalogRef"),b=w(s=>s==="default"?"default catalog":`catalog "${s}"`,"labelForCatalog"),pe=w((s,a)=>{const e=[];for(const[o,n]of a)o.includes(":")||n.has(s)&&e.push(o);if(e.length===0)return;if(e.length===1){const[o]=e;return{source:b(o),spec:j(o)}}const r=e.find(o=>o==="default")??e[0],i=e.filter(o=>o!==r);return{candidates:[...e],conflict:!0,source:`${b(r)} (also in: ${i.map(o=>b(o)).join(", ")})`,spec:j(r)}},"resolveFromCatalogs"),fe=w((s,a)=>{const e=new Map;for(const[c,l]of a){if(!c.includes(":"))continue;const u=l.get(s);u!==void 0&&e.set(u,(e.get(u)??0)+1)}if(e.size===0)return;const r=[...e.entries()],i=r.reduce((c,[,l])=>c+l,0);if(r.length===1){const[[c]]=r;return{source:`siblings (${String(i)} pkg${i===1?"":"s"} on ${c})`,spec:c}}const o=[...r].sort((c,l)=>l[1]-c[1]),[n,t]=o[0],p=o.slice(1).map(([c,l])=>`${c} (×${String(l)})`);return{candidates:o.map(([c])=>c),conflict:!0,source:`siblings (most common: ${n} ×${String(t)}; conflicts: ${p.join(", ")})`,spec:n}},"resolveFromSiblings"),ue=w((s,a)=>pe(s,a)||fe(s,a),"conformToCatalog");var de=Object.defineProperty,g=$((s,a)=>de(s,"name",{value:a,configurable:!0}),"u");const ge=g((s,a,e)=>{const r=[];for(const i of s.values()){const{overall:o}=i.score,n=J(o),t=`${String(Math.round(o*100))}%`,p=i.alerts.length,c=C(i),l=V(c,i.version,e),u=n==="red"?N:n==="yellow"?z:M;if(l?f.info(` ${u(t)} ${R(i)} ${E(`[accepted: ${l.reason}]`)}`):f.info(` ${u(t)} ${R(i)}`),p>0){const d=i.alerts.filter(m=>m.severity==="critical"||m.severity==="high").length;d>0&&f.warn(` ${String(d)} critical/high alert${d===1?"":"s"}`)}o<a&&!l&&r.push(i)}return r},"displaySecurityReports"),me=g(async(s,a)=>{const e=F({input:process.stdin,output:process.stdout}),r=g(t=>new Promise(p=>{e.question(t,c=>{p(c.trim())})}),"ask"),i=String(Math.round(a*100));f.warn(""),f.warn(`${String(s.length)} package${s.length===1?"":"s"} scored below the minimum threshold (${i}%):`);for(const t of s){const p=C(t),c=`${String(Math.round(t.score.overall*100))}%`;f.warn(` • ${p}@${t.version} — score: ${c} (${Y(t.score.overall)})`)}f.warn("");const o=await r("Continue adding these packages? [y/N] ");if(o.toLowerCase()!=="y"&&o.toLowerCase()!=="yes")return e.close(),!1;const n=await r("Remember this decision? (prints config snippet) [y/N] ");if(e.close(),n.toLowerCase()==="y"||n.toLowerCase()==="yes"){f.notice(""),f.notice("Add the following to security.acceptedRisks in vis.config.ts:"),f.notice("");for(const t of s){const p=C(t),c=K(p,t.version,t.score.overall,"Reviewed and accepted");f.notice(c)}f.notice("")}return!0},"confirmLowScorePackages"),ke=g(async(s,a,e,r)=>{const i=await D(s);if(i.length===0)return!0;f.info(""),f.info(`${a.map(t=>t.displayName).join(" + ")} security check:`);const o=await Q(a,i);if(o.size===0)return f.info(" Could not fetch security data. Proceeding."),!0;const n=ge(o,e,r);return n.length===0?(f.info(""),!0):process.stdin.isTTY?me(n,e):(f.warn(`Aborting: ${String(n.length)} package${n.length===1?"":"s"} below minimum score. Use --no-socket-check to skip.`),!1)},"runSocketPreCheck"),he=["dependencies","devDependencies","peerDependencies","optionalDependencies"],ve=g(s=>s.savePeer?"peerDependencies":s.saveOptional?"optionalDependencies":s.saveDev?"devDependencies":"dependencies","pickDepSection"),T=g((s,a)=>s.startsWith("catalog:")||!a?s:s.replace(/^[\^~]/,""),"applyExactPrefix"),we=g(async(s,a)=>{const e=[];for(const o of s){const{name:n,versionSpec:t}=_(o);if(!n)continue;if(t!==void 0){e.push({explicit:t,name:n});continue}const p=ue(n,a);if(p){p.conflict&&f.warn(`${n}: ambiguous constraint — picking ${p.spec} (${p.source}). Pass ${n}@<version> to override.`),e.push({entry:{name:n,source:p.source,spec:p.spec},kind:"resolved",name:n});continue}e.push({kind:"missing",name:n})}const r=e.filter(o=>"kind"in o&&o.kind==="missing").map(o=>o.name),i=r.length>0?await ae(r):new Map;return e.map(o=>{if("explicit"in o)return{name:o.name,source:"explicit",spec:o.explicit};if(o.kind==="resolved")return o.entry;const n=i.get(o.name);if(n===void 0)throw new Error(`--to: cannot resolve a version for "${o.name}" (not in any catalog or sibling, and registry lookup failed). Pass ${o.name}@<version> explicitly.`);const t=`^${n}`;return f.info(`${o.name}: no existing constraint — using registry latest (${t}). Add to a catalog to share this version across workspace packages.`),{name:o.name,source:"registry latest",spec:t}})},"planConformedSpecs"),$e=g((s,a,e,r)=>{for(const{name:i,spec:o}of a){const n=T(o,r);for(const p of he){if(p===e)continue;const c=s[p];c?.[i]!==void 0&&(delete c[i],Object.keys(c).length===0&&delete s[p])}let t=s[e];t===void 0&&(t={},s[e]=t),t[i]=n}},"applyPlannedSpecsToPackageJson"),ye=g(async({ignoreScripts:s,logger:a,options:e,packages:r,pm:i,target:o,visConfig:n,workspaceRoot:t})=>{const{workspace:p}=W(t,n??{}),c=p.projects[o];if(!c){const k=Object.keys(p.projects).sort();throw new Error(`--to: workspace package "${o}" not found. Available: ${k.length>0?k.slice(0,10).join(", "):"(none)"}${k.length>10?`, ... (${String(k.length-10)} more)`:""}.`)}const l=oe(t,c.root,"package.json"),{packageManager:u}=X(t),d=G(t,u),m=ve(e),h=e.exact??!1,y=await we(r,d);if(y.length===0)return 0;const S=B(l);$e(S,y,m,h),U(l,S,{indent:H(l,{useEditorconfig:n?.editorconfig??!0}),overwrite:!0});for(const k of y){const q=T(k.spec,h);f.info(`${M("+")} ${k.name}@${q} → ${o}/${m} (${E(k.source)})`)}return se(i,{dev:!1,filter:[],force:!1,frozenLockfile:!1,ignoreScripts:s,lockfileOnly:!1,noOptional:!1,offline:!1,prod:!1,recursive:!1,silent:!1,workspaceRoot:!1},t,a)},"applyConformedAdd"),_e=g(async({argument:s,logger:a,options:e,visConfig:r,workspaceRoot:i})=>{let o=s;if(!o||o.length===0)throw new Error("No packages specified. Usage: vis add <packages...>");if(e.typosquatCheck!==!1){const l=o.map(d=>_(d)),u=await ce(l.map(d=>d.name),r?.security?.typosquatAllowlist);if(!u.ok){process.exitCode=1;return}o=l.map((d,m)=>{const h=u.packages[m];return h!==d.name?d.versionSpec?`${h}@${d.versionSpec}`:h??"":o[m]??""})}if(e.marshallCheck!==!1){const l=await D(o);if(l.length>0){const u=await re(l,{config:r?.security?.marshalls,workspaceRoot:i});if(!await ie(u)){process.exitCode=1;return}}}if(e.socketCheck!==!1){const l=new Set;x("socket")&&l.add("socket"),x("depsDev")&&l.add("deps-dev");const u=Z(r?.security,{disabled:l,minimumScore:r?.security?.policies?.score?.minimum});if(u.length>0){const d=r?.security?.policies?.score?.minimum??ee;if(!await ke(o,u,d,r?.security?.acceptedRisks)){process.exitCode=1;return}}}const n=process.cwd(),t=te(i??n,{configBackend:r?.install?.backend,configCorepack:r?.install?.corepack}),p=!e.runScripts;if(e.to){if(e.global||e.workspaceRoot)throw new Error("--to is incompatible with --global / --workspace-root.");if(e.filter&&P(e.filter).length>0)throw new Error("--to and --filter are mutually exclusive — --to already targets one package.");if(!i)throw new Error("--to requires a monorepo workspace. Run from inside a pnpm/bun/yarn/npm workspace.");const l=await ye({ignoreScripts:p,logger:a,options:e,packages:o,pm:t,target:e.to,visConfig:r,workspaceRoot:i});l!==0&&(process.exitCode=l);return}const c=ne(t,{exact:e.exact||!1,filter:P(e.filter),global:e.global||!1,optional:e.saveOptional||!1,packages:o,peer:e.savePeer||!1,saveDev:e.saveDev||!1,workspace:e.workspace||!1,workspaceRoot:e.workspaceRoot||!1},n,a,{autoInstallPeers:e.autoInstallPeers||!1,ignoreScripts:p});c!==0&&(process.exitCode=c)},"execute");export{_e as default};
1
+ var L=Object.defineProperty;var $=(s,a)=>L(s,"name",{value:a,configurable:!0});import{createRequire as O}from"node:module";import{E as M,T as I,e as z,I as E}from"../packem_shared/index.server-B7ETiT4C.js";import{n as B,w as U}from"./config.js";import{K as J,J as C,L as V,p as f,M as R,N as Y,Q as K,f as Q,C as W,U as X,R as G,X as H,i as x,b as Z,Y as ee}from"./bin.js";import{M as oe}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{y as se,R as te,P as ne}from"../packem_shared/pm-runner-Dnj9J3KF.js";import{r as D,a as ae,b as re,p as ie}from"../packem_shared/resolve-explicit-BpxcFRuk.js";import{r as ce}from"../packem_shared/typosquats-Citu7BRY.js";import{d as _,o as P}from"../packem_shared/utils-DrNg0XTR.js";const A=O(import.meta.url),v=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,F=$(s=>{if(typeof v<"u"&&v.versions&&v.versions.node){const[a,e]=v.versions.node.split(".").map(Number);if(a>22||a===22&&e>=3||a===20&&e>=16)return v.getBuiltinModule(s)}return A(s)},"__cjs_getBuiltinModule"),{createInterface:N}=F("node:readline");var le=Object.defineProperty,w=$((s,a)=>le(s,"name",{value:a,configurable:!0}),"c");const j=w(s=>s==="default"?"catalog:":`catalog:${s}`,"buildCatalogRef"),b=w(s=>s==="default"?"default catalog":`catalog "${s}"`,"labelForCatalog"),pe=w((s,a)=>{const e=[];for(const[o,n]of a)o.includes(":")||n.has(s)&&e.push(o);if(e.length===0)return;if(e.length===1){const[o]=e;return{source:b(o),spec:j(o)}}const r=e.find(o=>o==="default")??e[0],i=e.filter(o=>o!==r);return{candidates:[...e],conflict:!0,source:`${b(r)} (also in: ${i.map(o=>b(o)).join(", ")})`,spec:j(r)}},"resolveFromCatalogs"),fe=w((s,a)=>{const e=new Map;for(const[c,l]of a){if(!c.includes(":"))continue;const u=l.get(s);u!==void 0&&e.set(u,(e.get(u)??0)+1)}if(e.size===0)return;const r=[...e.entries()],i=r.reduce((c,[,l])=>c+l,0);if(r.length===1){const[[c]]=r;return{source:`siblings (${String(i)} pkg${i===1?"":"s"} on ${c})`,spec:c}}const o=[...r].sort((c,l)=>l[1]-c[1]),[n,t]=o[0],p=o.slice(1).map(([c,l])=>`${c} (×${String(l)})`);return{candidates:o.map(([c])=>c),conflict:!0,source:`siblings (most common: ${n} ×${String(t)}; conflicts: ${p.join(", ")})`,spec:n}},"resolveFromSiblings"),ue=w((s,a)=>pe(s,a)||fe(s,a),"conformToCatalog");var de=Object.defineProperty,g=$((s,a)=>de(s,"name",{value:a,configurable:!0}),"u");const ge=g((s,a,e)=>{const r=[];for(const i of s.values()){const{overall:o}=i.score,n=J(o),t=`${String(Math.round(o*100))}%`,p=i.alerts.length,c=C(i),l=V(c,i.version,e),u=n==="red"?I:n==="yellow"?z:E;if(l?f.info(` ${u(t)} ${R(i)} ${M(`[accepted: ${l.reason}]`)}`):f.info(` ${u(t)} ${R(i)}`),p>0){const d=i.alerts.filter(m=>m.severity==="critical"||m.severity==="high").length;d>0&&f.warn(` ${String(d)} critical/high alert${d===1?"":"s"}`)}o<a&&!l&&r.push(i)}return r},"displaySecurityReports"),me=g(async(s,a)=>{const e=N({input:process.stdin,output:process.stdout}),r=g(t=>new Promise(p=>{e.question(t,c=>{p(c.trim())})}),"ask"),i=String(Math.round(a*100));f.warn(""),f.warn(`${String(s.length)} package${s.length===1?"":"s"} scored below the minimum threshold (${i}%):`);for(const t of s){const p=C(t),c=`${String(Math.round(t.score.overall*100))}%`;f.warn(` • ${p}@${t.version} — score: ${c} (${Y(t.score.overall)})`)}f.warn("");const o=await r("Continue adding these packages? [y/N] ");if(o.toLowerCase()!=="y"&&o.toLowerCase()!=="yes")return e.close(),!1;const n=await r("Remember this decision? (prints config snippet) [y/N] ");if(e.close(),n.toLowerCase()==="y"||n.toLowerCase()==="yes"){f.notice(""),f.notice("Add the following to security.acceptedRisks in vis.config.ts:"),f.notice("");for(const t of s){const p=C(t),c=K(p,t.version,t.score.overall,"Reviewed and accepted");f.notice(c)}f.notice("")}return!0},"confirmLowScorePackages"),ke=g(async(s,a,e,r)=>{const i=await D(s);if(i.length===0)return!0;f.info(""),f.info(`${a.map(t=>t.displayName).join(" + ")} security check:`);const o=await Q(a,i);if(o.size===0)return f.info(" Could not fetch security data. Proceeding."),!0;const n=ge(o,e,r);return n.length===0?(f.info(""),!0):process.stdin.isTTY?me(n,e):(f.warn(`Aborting: ${String(n.length)} package${n.length===1?"":"s"} below minimum score. Use --no-socket-check to skip.`),!1)},"runSocketPreCheck"),he=["dependencies","devDependencies","peerDependencies","optionalDependencies"],ve=g(s=>s.savePeer?"peerDependencies":s.saveOptional?"optionalDependencies":s.saveDev?"devDependencies":"dependencies","pickDepSection"),T=g((s,a)=>s.startsWith("catalog:")||!a?s:s.replace(/^[\^~]/,""),"applyExactPrefix"),we=g(async(s,a)=>{const e=[];for(const o of s){const{name:n,versionSpec:t}=_(o);if(!n)continue;if(t!==void 0){e.push({explicit:t,name:n});continue}const p=ue(n,a);if(p){p.conflict&&f.warn(`${n}: ambiguous constraint — picking ${p.spec} (${p.source}). Pass ${n}@<version> to override.`),e.push({entry:{name:n,source:p.source,spec:p.spec},kind:"resolved",name:n});continue}e.push({kind:"missing",name:n})}const r=e.filter(o=>"kind"in o&&o.kind==="missing").map(o=>o.name),i=r.length>0?await ae(r):new Map;return e.map(o=>{if("explicit"in o)return{name:o.name,source:"explicit",spec:o.explicit};if(o.kind==="resolved")return o.entry;const n=i.get(o.name);if(n===void 0)throw new Error(`--to: cannot resolve a version for "${o.name}" (not in any catalog or sibling, and registry lookup failed). Pass ${o.name}@<version> explicitly.`);const t=`^${n}`;return f.info(`${o.name}: no existing constraint — using registry latest (${t}). Add to a catalog to share this version across workspace packages.`),{name:o.name,source:"registry latest",spec:t}})},"planConformedSpecs"),$e=g((s,a,e,r)=>{for(const{name:i,spec:o}of a){const n=T(o,r);for(const p of he){if(p===e)continue;const c=s[p];c?.[i]!==void 0&&(delete c[i],Object.keys(c).length===0&&delete s[p])}let t=s[e];t===void 0&&(t={},s[e]=t),t[i]=n}},"applyPlannedSpecsToPackageJson"),ye=g(async({ignoreScripts:s,logger:a,options:e,packages:r,pm:i,target:o,visConfig:n,workspaceRoot:t})=>{const{workspace:p}=W(t,n??{}),c=p.projects[o];if(!c){const k=Object.keys(p.projects).sort();throw new Error(`--to: workspace package "${o}" not found. Available: ${k.length>0?k.slice(0,10).join(", "):"(none)"}${k.length>10?`, ... (${String(k.length-10)} more)`:""}.`)}const l=oe(t,c.root,"package.json"),{packageManager:u}=X(t),d=G(t,u),m=ve(e),h=e.exact??!1,y=await we(r,d);if(y.length===0)return 0;const S=B(l);$e(S,y,m,h),U(l,S,{indent:H(l,{useEditorconfig:n?.editorconfig??!0}),overwrite:!0});for(const k of y){const q=T(k.spec,h);f.info(`${E("+")} ${k.name}@${q} → ${o}/${m} (${M(k.source)})`)}return se(i,{dev:!1,filter:[],force:!1,frozenLockfile:!1,ignoreScripts:s,lockfileOnly:!1,noOptional:!1,offline:!1,prod:!1,recursive:!1,silent:!1,workspaceRoot:!1},t,a)},"applyConformedAdd"),_e=g(async({argument:s,logger:a,options:e,visConfig:r,workspaceRoot:i})=>{let o=s;if(!o||o.length===0)throw new Error("No packages specified. Usage: vis add <packages...>");if(e.typosquatCheck!==!1){const l=o.map(d=>_(d)),u=await ce(l.map(d=>d.name),r?.security?.typosquatAllowlist);if(!u.ok){process.exitCode=1;return}o=l.map((d,m)=>{const h=u.packages[m];return h!==d.name?d.versionSpec?`${h}@${d.versionSpec}`:h??"":o[m]??""})}if(e.marshallCheck!==!1){const l=await D(o);if(l.length>0){const u=await re(l,{config:r?.security?.marshalls,workspaceRoot:i});if(!await ie(u)){process.exitCode=1;return}}}if(e.socketCheck!==!1){const l=new Set;x("socket")&&l.add("socket"),x("depsDev")&&l.add("deps-dev");const u=Z(r?.security,{disabled:l,minimumScore:r?.security?.policies?.score?.minimum});if(u.length>0){const d=r?.security?.policies?.score?.minimum??ee;if(!await ke(o,u,d,r?.security?.acceptedRisks)){process.exitCode=1;return}}}const n=process.cwd(),t=te(i??n,{configBackend:r?.install?.backend,configCorepack:r?.install?.corepack}),p=!e.runScripts;if(e.to){if(e.global||e.workspaceRoot)throw new Error("--to is incompatible with --global / --workspace-root.");if(e.filter&&P(e.filter).length>0)throw new Error("--to and --filter are mutually exclusive — --to already targets one package.");if(!i)throw new Error("--to requires a monorepo workspace. Run from inside a pnpm/bun/yarn/npm workspace.");const l=await ye({ignoreScripts:p,logger:a,options:e,packages:o,pm:t,target:e.to,visConfig:r,workspaceRoot:i});l!==0&&(process.exitCode=l);return}const c=ne(t,{exact:e.exact||!1,filter:P(e.filter),global:e.global||!1,optional:e.saveOptional||!1,packages:o,peer:e.savePeer||!1,saveDev:e.saveDev||!1,workspace:e.workspace||!1,workspaceRoot:e.workspaceRoot||!1},n,a,{autoInstallPeers:e.autoInstallPeers||!1,ignoreScripts:p});c!==0&&(process.exitCode=c)},"execute");export{_e as default};
@@ -1 +1 @@
1
- var l=Object.defineProperty;var c=(e,a)=>l(e,"name",{value:a,configurable:!0});import{I as p,P as f}from"../packem_shared/pm-runner-CVliR6Ie.js";var g=Object.defineProperty,u=c((e,a)=>g(e,"name",{value:a,configurable:!0}),"s");const m=u(async({argument:e,logger:a,visConfig:o,workspaceRoot:s})=>{const t=e?.[0]??null,n=s??process.cwd(),i=p(n,{configBackend:o?.install?.backend,configCorepack:o?.install?.corepack}),r=f(i,t,n,a);r!==0&&(process.exitCode=r)},"execute");export{m as default};
1
+ var l=Object.defineProperty;var c=(e,a)=>l(e,"name",{value:a,configurable:!0});import{R as p,$ as f}from"../packem_shared/pm-runner-Dnj9J3KF.js";var g=Object.defineProperty,u=c((e,a)=>g(e,"name",{value:a,configurable:!0}),"s");const m=u(async({argument:e,logger:a,visConfig:o,workspaceRoot:s})=>{const t=e?.[0]??null,n=s??process.cwd(),i=p(n,{configBackend:o?.install?.backend,configCorepack:o?.install?.corepack}),r=f(i,t,n,a);r!==0&&(process.exitCode=r)},"execute");export{m as default};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var i=(e,o)=>d(e,"name",{value:o,configurable:!0});import{I as g,$ as u}from"../packem_shared/pm-runner-CVliR6Ie.js";var f=Object.defineProperty,b=i((e,o)=>f(e,"name",{value:o,configurable:!0}),"t");const w=b(async({argument:e,logger:o,visConfig:c,workspaceRoot:t})=>{const a=e;if(!a||a.length===0)throw new Error("No subcommand specified. Available: cache, publish, audit, list, view, config, whoami, login, logout, pack, owner, dist-tag, search, fund, ping, token, deprecate, rebuild, prune, plugin");const[s,...l]=a,n=t??process.cwd(),p=g(n,{configBackend:c?.install?.backend,configCorepack:c?.install?.corepack}),r=u(p,s,l,n,o);r!==0&&(process.exitCode=r)},"execute");export{w as default};
1
+ var d=Object.defineProperty;var i=(e,o)=>d(e,"name",{value:o,configurable:!0});import{R as g,L as u}from"../packem_shared/pm-runner-Dnj9J3KF.js";var f=Object.defineProperty,b=i((e,o)=>f(e,"name",{value:o,configurable:!0}),"t");const w=b(async({argument:e,logger:o,visConfig:c,workspaceRoot:t})=>{const a=e;if(!a||a.length===0)throw new Error("No subcommand specified. Available: cache, publish, audit, list, view, config, whoami, login, logout, pack, owner, dist-tag, search, fund, ping, token, deprecate, rebuild, prune, plugin");const[s,...l]=a,n=t??process.cwd(),p=g(n,{configBackend:c?.install?.backend,configCorepack:c?.install?.corepack}),r=u(p,s,l,n,o);r!==0&&(process.exitCode=r)},"execute");export{w as default};
@@ -1 +1 @@
1
- var f=Object.defineProperty;var n=(e,o)=>f(e,"name",{value:o,configurable:!0});import{I as p,w as g}from"../packem_shared/pm-runner-CVliR6Ie.js";import{o as v}from"../packem_shared/utils-DrNg0XTR.js";var k=Object.defineProperty,d=n((e,o)=>k(e,"name",{value:o,configurable:!0}),"l");const b=d(async({argument:e,logger:o,options:a,visConfig:s,workspaceRoot:i})=>{const r=e;if(!r||r.length===0)throw new Error("No packages specified. Usage: vis remove <packages...>");const c=process.cwd(),l=p(i??c,{configBackend:s?.install?.backend,configCorepack:s?.install?.corepack}),t=g(l,{filter:v(a.filter),global:a.global||!1,packages:r,recursive:a.recursive||!1,saveDev:a.saveDev||!1,workspaceRoot:a.workspaceRoot||!1},c,o);t!==0&&(process.exitCode=t)},"execute");export{b as default};
1
+ var f=Object.defineProperty;var n=(e,o)=>f(e,"name",{value:o,configurable:!0});import{R as p,E as g}from"../packem_shared/pm-runner-Dnj9J3KF.js";import{o as v}from"../packem_shared/utils-DrNg0XTR.js";var k=Object.defineProperty,d=n((e,o)=>k(e,"name",{value:o,configurable:!0}),"l");const b=d(async({argument:e,logger:o,options:a,visConfig:s,workspaceRoot:i})=>{const r=e;if(!r||r.length===0)throw new Error("No packages specified. Usage: vis remove <packages...>");const c=process.cwd(),l=p(i??c,{configBackend:s?.install?.backend,configCorepack:s?.install?.corepack}),t=g(l,{filter:v(a.filter),global:a.global||!1,packages:r,recursive:a.recursive||!1,saveDev:a.saveDev||!1,workspaceRoot:a.workspaceRoot||!1},c,o);t!==0&&(process.exitCode=t)},"execute");export{b as default};
@@ -1,2 +1,2 @@
1
- var x=Object.defineProperty;var c=(o,e)=>x(o,"name",{value:e,configurable:!0});import{createRequire as y}from"node:module";import{b as $}from"./config.js";import{C as B,K as O}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{C as R,O as S,p as u}from"./bin.js";import{b as T,s as q}from"../packem_shared/cyclonedx-B293T7R0.js";const h=y(import.meta.url),r=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,k=c(o=>{if(typeof r<"u"&&r.versions&&r.versions.node){const[e,s]=r.versions.node.split(".").map(Number);if(e>22||e===22&&s>=3||e===20&&s>=16)return r.getBuiltinModule(o)}return h(o)},"__cjs_getBuiltinModule"),{writeFileSync:C}=k("node:fs");var D=Object.defineProperty,d=c((o,e)=>D(o,"name",{value:e,configurable:!0}),"m");const f=["json","xml"],E=d(o=>f.includes(o),"isSbomFormat"),G=d(async({options:o,visConfig:e,workspaceRoot:s})=>{if(!s)throw new Error("Could not determine workspace root. Run inside a monorepo.");const{packageJsons:w,workspace:a}=R(s,e),b=S(s,a,w),p=o.focus,g=p?p.split(",").map(v=>v.trim()).filter(Boolean):void 0,t=(o.format??"json").toLowerCase();if(!E(t))throw new Error(`Unknown --format: "${t}". Expected one of: ${f.join(", ")}.`);const n=T({focus:g,includeDev:!!o.includeDev,projectGraph:b,workspace:a,workspaceRoot:s}),m=t==="xml"?q(n):`${JSON.stringify(n,void 0,2)}
1
+ var x=Object.defineProperty;var c=(o,e)=>x(o,"name",{value:e,configurable:!0});import{createRequire as y}from"node:module";import{b as $}from"./config.js";import{C as B,K as O}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{C as R,O as S,p as u}from"./bin.js";import{b as T,s as q}from"../packem_shared/cyclonedx-DPEW0nwS.js";const h=y(import.meta.url),r=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,k=c(o=>{if(typeof r<"u"&&r.versions&&r.versions.node){const[e,s]=r.versions.node.split(".").map(Number);if(e>22||e===22&&s>=3||e===20&&s>=16)return r.getBuiltinModule(o)}return h(o)},"__cjs_getBuiltinModule"),{writeFileSync:C}=k("node:fs");var D=Object.defineProperty,d=c((o,e)=>D(o,"name",{value:e,configurable:!0}),"m");const f=["json","xml"],E=d(o=>f.includes(o),"isSbomFormat"),G=d(async({options:o,visConfig:e,workspaceRoot:s})=>{if(!s)throw new Error("Could not determine workspace root. Run inside a monorepo.");const{packageJsons:w,workspace:a}=R(s,e),b=S(s,a,w),p=o.focus,g=p?p.split(",").map(v=>v.trim()).filter(Boolean):void 0,t=(o.format??"json").toLowerCase();if(!E(t))throw new Error(`Unknown --format: "${t}". Expected one of: ${f.join(", ")}.`);const n=T({focus:g,includeDev:!!o.includeDev,projectGraph:b,workspace:a,workspaceRoot:s}),m=t==="xml"?q(n):`${JSON.stringify(n,void 0,2)}
2
2
  `,l=o.output??(t==="xml"?"sbom.cdx.xml":"sbom.cdx.json");if(l==="-"){process.stdout.write(m);return}const i=B(s,l);$(O(i)),C(i,m,"utf8");const _=n.components?.length??0,j=n.dependencies?.length??0;u.success(`SBOM written to ${i}`),u.notice(`${_} components, ${j} dependency edges`)},"execute");export{G as default};
@@ -1,2 +1,2 @@
1
- var T=Object.defineProperty;var k=(o,e)=>T(o,"name",{value:e,configurable:!0});import{createRequire as F}from"node:module";import{p as c,u as A,C as H,v as L,w as P,x as U,B as D}from"./bin.js";import{c as O,r as z,s as C,S as G,a as $,b,d as q,p as B,i as M,e as V}from"../packem_shared/lifecycle-wRE7ymVc.js";const _=F(import.meta.url),m=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,I=k(o=>{if(typeof m<"u"&&m.versions&&m.versions.node){const[e,r]=m.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return m.getBuiltinModule(o)}return _(o)},"__cjs_getBuiltinModule"),{stat:S,open:R,watch:N}=I("node:fs/promises");var W=Object.defineProperty,g=k((o,e)=>W(o,"name",{value:e,configurable:!0}),"f");const h=g(async o=>{const e=o?.plugins;if(!e||e.length===0)return;const r=O();return await z(r,e),{callHook:g(async(d,...s)=>{try{await r.callHook(d,...s)}catch(t){const n=t instanceof Error?t.message:String(t);c.warn(`Plugin error in ${d}: ${n}`)}},"callHook")}},"loadServiceHooks"),J=g(o=>{const e=o.trim(),r=e.lastIndexOf(":");if(!(r<=0||r===e.length-1))return{project:e.slice(0,r),target:e.slice(r+1)}},"splitTargetId"),j=g(async(o,e,r)=>{const d=J(r);if(!d){c.error(`Invalid target id "${r}". Expected "<project>:<target>", e.g. "@my/api:db".`);return}const s=await A(o),{projectOptions:t,workspace:n}=H(o,e,s),i=n.projects[d.project],a=t.get(d.project)?.[d.target];if(!i||!a){c.error(`Target "${r}" not found in this workspace.`);return}const p=a.options?.service;if(!p){c.error(`Target "${r}" is not a service. Add an \`options.service\` block to make it eligible for \`vis service\`.`);return}if(!a.command){c.error(`Target "${r}" has no command — services must be runnable.`);return}const f=L(o,i.root,a.options?.runFromWorkspaceRoot===!0),v=a.options?.envFile?P(f,a.options.envFile):{};return{command:a.command,cwd:f,env:{...v,...p.env},service:p,target:a,targetId:r}},"resolveTarget"),w=g(o=>{if(!o)throw new Error("Could not determine workspace root. Run `vis service` inside a workspace.");return o},"requireWorkspace"),oe=g(async({argument:o,options:e,visConfig:r,workspaceRoot:d})=>{const s=w(d),t=o[0]?.trim();if(!t){c.error("Missing target id. Usage: vis service start <project>:<target>"),process.exitCode=1;return}const n=await j(s,r,t);if(!n){process.exitCode=1;return}try{const{entry:i}=await C({command:n.command,config:n.service,cwd:n.cwd,env:n.env,id:t,readinessTimeoutMs:e.timeout,skipReadiness:e.readiness===!1,workspaceRoot:s});await(await h(r))?.callHook("service:start",i),c.success(`Started ${t} (pid ${String(i.pid)})`),c.info(` log: ${i.logFile}`)}catch(i){const a=i instanceof Error?i.message:String(i);i instanceof G?c.error(`Readiness probe failed for ${t}: ${a}`):c.error(`Failed to start ${t}: ${a}`),process.exitCode=1}},"serviceStartExecute"),y=g(async({graceMs:o,hookSink:e,id:r,workspaceRoot:d})=>{const s=await $(d,r),{stopped:t}=await b({graceMs:o,id:r,workspaceRoot:d});return t?(s&&await e?.callHook("service:stop",s),c.success(`Stopped ${r}`),!0):(c.info(`No running service registered for ${r}`),!1)},"stopOne"),se=g(async({argument:o,options:e,visConfig:r,workspaceRoot:d})=>{const s=w(d),{graceMs:t}=e,n=o[0]?.trim(),i=await h(r);if(e.all===!0){if(n){c.error("Cannot combine --all with a target id. Use one or the other."),process.exitCode=1;return}const a=await q(s);if(a.length===0){c.info("No running services registered for this workspace.");return}for(const p of a)await y({graceMs:t,hookSink:i,id:p.id,workspaceRoot:s});return}if(!n){c.error("Missing target id. Usage: vis service stop <project>:<target> | --all"),process.exitCode=1;return}await y({graceMs:t,hookSink:i,id:n,workspaceRoot:s})||(process.exitCode=1)},"serviceStopExecute"),K=g(o=>{const e=o.config.readiness?.tcp.port??o.config.port;return e===void 0?"—":String(e)},"formatPort"),E=new Set(["json","table"]),ie=g(async({logger:o,options:e,workspaceRoot:r})=>{const d=w(r),s=e.format??"table";if(!E.has(s)){c.error(`Invalid --format "${s}". Expected one of: ${[...E].sort().join(", ")}.`),process.exitCode=1;return}const{surviving:t}=await B(d);if(s==="json"){const l=Date.now();process.stdout.write(`${JSON.stringify(t.map(u=>{const x=Date.parse(u.startedAt);return{ageMs:Number.isFinite(x)?l-x:null,alive:M(u.pid),command:u.command,cwd:u.cwd,env:u.env,id:u.id,logFile:u.logFile,pid:u.pid,port:u.config.readiness?.tcp.port??u.config.port??null,startedAt:u.startedAt,visVersion:u.visVersion}}),void 0,2)}
1
+ var T=Object.defineProperty;var k=(o,e)=>T(o,"name",{value:e,configurable:!0});import{createRequire as F}from"node:module";import{p as c,u as A,C as H,v as L,w as P,x as U,B as D}from"./bin.js";import{c as O,r as z,s as C,S as G,a as $,b,d as q,p as B,i as M,e as V}from"../packem_shared/lifecycle-DJDsjoic.js";const _=F(import.meta.url),m=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,I=k(o=>{if(typeof m<"u"&&m.versions&&m.versions.node){const[e,r]=m.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return m.getBuiltinModule(o)}return _(o)},"__cjs_getBuiltinModule"),{stat:S,open:R,watch:N}=I("node:fs/promises");var W=Object.defineProperty,g=k((o,e)=>W(o,"name",{value:e,configurable:!0}),"f");const h=g(async o=>{const e=o?.plugins;if(!e||e.length===0)return;const r=O();return await z(r,e),{callHook:g(async(d,...s)=>{try{await r.callHook(d,...s)}catch(t){const n=t instanceof Error?t.message:String(t);c.warn(`Plugin error in ${d}: ${n}`)}},"callHook")}},"loadServiceHooks"),J=g(o=>{const e=o.trim(),r=e.lastIndexOf(":");if(!(r<=0||r===e.length-1))return{project:e.slice(0,r),target:e.slice(r+1)}},"splitTargetId"),j=g(async(o,e,r)=>{const d=J(r);if(!d){c.error(`Invalid target id "${r}". Expected "<project>:<target>", e.g. "@my/api:db".`);return}const s=await A(o),{projectOptions:t,workspace:n}=H(o,e,s),i=n.projects[d.project],a=t.get(d.project)?.[d.target];if(!i||!a){c.error(`Target "${r}" not found in this workspace.`);return}const p=a.options?.service;if(!p){c.error(`Target "${r}" is not a service. Add an \`options.service\` block to make it eligible for \`vis service\`.`);return}if(!a.command){c.error(`Target "${r}" has no command — services must be runnable.`);return}const f=L(o,i.root,a.options?.runFromWorkspaceRoot===!0),v=a.options?.envFile?P(f,a.options.envFile):{};return{command:a.command,cwd:f,env:{...v,...p.env},service:p,target:a,targetId:r}},"resolveTarget"),w=g(o=>{if(!o)throw new Error("Could not determine workspace root. Run `vis service` inside a workspace.");return o},"requireWorkspace"),oe=g(async({argument:o,options:e,visConfig:r,workspaceRoot:d})=>{const s=w(d),t=o[0]?.trim();if(!t){c.error("Missing target id. Usage: vis service start <project>:<target>"),process.exitCode=1;return}const n=await j(s,r,t);if(!n){process.exitCode=1;return}try{const{entry:i}=await C({command:n.command,config:n.service,cwd:n.cwd,env:n.env,id:t,readinessTimeoutMs:e.timeout,skipReadiness:e.readiness===!1,workspaceRoot:s});await(await h(r))?.callHook("service:start",i),c.success(`Started ${t} (pid ${String(i.pid)})`),c.info(` log: ${i.logFile}`)}catch(i){const a=i instanceof Error?i.message:String(i);i instanceof G?c.error(`Readiness probe failed for ${t}: ${a}`):c.error(`Failed to start ${t}: ${a}`),process.exitCode=1}},"serviceStartExecute"),y=g(async({graceMs:o,hookSink:e,id:r,workspaceRoot:d})=>{const s=await $(d,r),{stopped:t}=await b({graceMs:o,id:r,workspaceRoot:d});return t?(s&&await e?.callHook("service:stop",s),c.success(`Stopped ${r}`),!0):(c.info(`No running service registered for ${r}`),!1)},"stopOne"),se=g(async({argument:o,options:e,visConfig:r,workspaceRoot:d})=>{const s=w(d),{graceMs:t}=e,n=o[0]?.trim(),i=await h(r);if(e.all===!0){if(n){c.error("Cannot combine --all with a target id. Use one or the other."),process.exitCode=1;return}const a=await q(s);if(a.length===0){c.info("No running services registered for this workspace.");return}for(const p of a)await y({graceMs:t,hookSink:i,id:p.id,workspaceRoot:s});return}if(!n){c.error("Missing target id. Usage: vis service stop <project>:<target> | --all"),process.exitCode=1;return}await y({graceMs:t,hookSink:i,id:n,workspaceRoot:s})||(process.exitCode=1)},"serviceStopExecute"),K=g(o=>{const e=o.config.readiness?.tcp.port??o.config.port;return e===void 0?"—":String(e)},"formatPort"),E=new Set(["json","table"]),ie=g(async({logger:o,options:e,workspaceRoot:r})=>{const d=w(r),s=e.format??"table";if(!E.has(s)){c.error(`Invalid --format "${s}". Expected one of: ${[...E].sort().join(", ")}.`),process.exitCode=1;return}const{surviving:t}=await B(d);if(s==="json"){const l=Date.now();process.stdout.write(`${JSON.stringify(t.map(u=>{const x=Date.parse(u.startedAt);return{ageMs:Number.isFinite(x)?l-x:null,alive:M(u.pid),command:u.command,cwd:u.cwd,env:u.env,id:u.id,logFile:u.logFile,pid:u.pid,port:u.config.readiness?.tcp.port??u.config.port??null,startedAt:u.startedAt,visVersion:u.visVersion}}),void 0,2)}
2
2
  `);return}if(t.length===0){c.info("No running services registered for this workspace.");return}const n=Date.now(),i=t.map(l=>{const u=Date.parse(l.startedAt);return{age:Number.isFinite(u)?U(u,n):"?",id:l.id,log:l.logFile,pid:String(l.pid),port:K(l)}}),a=Math.max(2,...i.map(l=>l.id.length)),p=Math.max(3,...i.map(l=>l.pid.length)),f=Math.max(4,...i.map(l=>l.port.length)),v=Math.max(3,...i.map(l=>l.age.length));o.info(` ${"id".padEnd(a)} ${"pid".padEnd(p)} ${"port".padEnd(f)} ${"age".padEnd(v)} log`),o.info(` ${"-".repeat(a)} ${"-".repeat(p)} ${"-".repeat(f)} ${"-".repeat(v)} ---`);for(const l of i)o.info(` ${l.id.padEnd(a)} ${l.pid.padEnd(p)} ${l.port.padEnd(f)} ${l.age.padEnd(v)} ${l.log}`)},"serviceListExecute"),ae=g(async({argument:o,options:e,workspaceRoot:r})=>{const d=w(r),s=o[0]?.trim();if(!s){c.error("Missing target id. Usage: vis service status <project>:<target>"),process.exitCode=1;return}const t=await $(d,s);if(!t){c.error(`No service registered for ${s}.`),process.exitCode=1;return}if(!M(t.pid)){c.error(`Service ${s} is not running (pid ${String(t.pid)} is dead). Run \`vis service start ${s}\` to recover.`),process.exitCode=1;return}try{await V(t.config,{timeoutMs:e.timeout}),c.success(`${s} healthy (pid ${String(t.pid)})`)}catch(n){const i=n instanceof Error?n.message:String(n);c.error(`${s} probe failed: ${i}`),process.exitCode=1}},"serviceStatusExecute"),ne=g(async({argument:o,options:e,visConfig:r,workspaceRoot:d})=>{const s=w(d),t=o[0]?.trim();if(!t){c.error("Missing target id. Usage: vis service restart <project>:<target>"),process.exitCode=1;return}const n=await h(r),i=await $(s,t);(await b({graceMs:e.graceMs,id:t,workspaceRoot:s})).stopped&&i&&await n?.callHook("service:stop",i);const a=await j(s,r,t);if(!a){process.exitCode=1;return}try{const{entry:p}=await C({command:a.command,config:a.service,cwd:a.cwd,env:a.env,id:t,readinessTimeoutMs:e.timeout,skipReadiness:e.readiness===!1,workspaceRoot:s});await n?.callHook("service:start",p),c.success(`Restarted ${t} (pid ${String(p.pid)})`)}catch(p){const f=p instanceof Error?p.message:String(p);c.error(`Failed to restart ${t}: ${f}`),process.exitCode=1}},"serviceRestartExecute"),Q=200,X=1024*1024,Y=g(async o=>{let e=0;try{e=(await S(o)).size}catch{e=0}const r=new AbortController;let d=!1;const s=g(()=>{d=!0,r.abort()},"onSigint"),t=g(()=>{r.abort()},"onSigterm");process.on("SIGINT",s),process.on("SIGTERM",t);let n=!1;const i=g(async()=>{if(!n){n=!0;try{const a=await S(o).catch(()=>{});if(!a||(a.size<e&&(e=0),a.size===e))return;const p=a.size-e,f=Math.min(p,X),v=await R(o,"r");try{const l=Buffer.alloc(f);await v.read(l,0,f,e),process.stdout.write(l),e+=f}finally{await v.close().catch(()=>{})}}finally{n=!1}}},"tickOnce");try{const a=(async()=>{try{const p=N(o,{signal:r.signal});for(;!(await p.next()).done;)await i()}catch{}})();for(;!r.signal.aborted;)await i(),await new Promise(p=>{const f=setTimeout(p,Q);r.signal.addEventListener("abort",()=>{clearTimeout(f),p()},{once:!0})});await a.catch(()=>{}),await i().catch(()=>{})}finally{process.off("SIGINT",s),process.off("SIGTERM",t)}d&&(process.exitCode=130)},"tailLog"),ce=g(async({argument:o,options:e,workspaceRoot:r})=>{const d=w(r),s=o[0]?.trim();if(!s){c.error("Missing target id. Usage: vis service logs <project>:<target>"),process.exitCode=1;return}const t=await $(d,s);if(!t){c.error(`No service registered for ${s}.`),process.exitCode=1;return}if(!await D(t.logFile)){c.warn(`Log file is missing for ${s}: ${t.logFile}`),process.exitCode=1;return}if(e.follow===!0){await Y(t.logFile);return}const n=await R(t.logFile,"r");try{const i=n.createReadStream();await new Promise((a,p)=>{i.on("end",a),i.on("error",p),i.pipe(process.stdout,{end:!1})})}finally{await n.close().catch(()=>{})}},"serviceLogsExecute");export{ie as serviceListExecute,ce as serviceLogsExecute,ne as serviceRestartExecute,oe as serviceStartExecute,ae as serviceStatusExecute,se as serviceStopExecute};
@@ -1 +1 @@
1
- var p=Object.defineProperty;var s=(e,o)=>p(e,"name",{value:o,configurable:!0});import{I as f,j as g}from"../packem_shared/pm-runner-CVliR6Ie.js";var u=Object.defineProperty,d=s((e,o)=>u(e,"name",{value:o,configurable:!0}),"t");const m=d(async({argument:e,logger:o,options:c,visConfig:a,workspaceRoot:t})=>{const i=e||[],n=t??process.cwd(),l=f(n,{configBackend:a?.install?.backend,configCorepack:a?.install?.corepack}),r=g(l,i,c.recursive||!1,n,o);r!==0&&(process.exitCode=r)},"execute");export{m as default};
1
+ var p=Object.defineProperty;var s=(e,o)=>p(e,"name",{value:o,configurable:!0});import{R as f,W as g}from"../packem_shared/pm-runner-Dnj9J3KF.js";var u=Object.defineProperty,d=s((e,o)=>u(e,"name",{value:o,configurable:!0}),"t");const m=d(async({argument:e,logger:o,options:c,visConfig:a,workspaceRoot:t})=>{const i=e||[],n=t??process.cwd(),l=f(n,{configBackend:a?.install?.backend,configCorepack:a?.install?.corepack}),r=g(l,i,c.recursive||!1,n,o);r!==0&&(process.exitCode=r)},"execute");export{m as default};
@@ -1,3 +1,3 @@
1
- var a=Object.defineProperty;var s=(n,e)=>a(n,"name",{value:e,configurable:!0});import{createRequire as f}from"node:module";import{m as v}from"../packem_shared/index-CZX_II5N.js";const d=f(import.meta.url),t=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,l=s(n=>{if(typeof t<"u"&&t.versions&&t.versions.node){const[e,r]=t.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return t.getBuiltinModule(n)}return d(n)},"__cjs_getBuiltinModule"),{execSync:p,spawnSync:m}=l("node:child_process");var g=Object.defineProperty,y=s((n,e)=>g(n,"name",{value:e,configurable:!0}),"r");const w=y(async({argument:n,logger:e,options:r})=>{const c=n?.[0];e.info("info: checking for updates...");const o=v.version;let i;try{const u=p("npm view @visulima/vis version",{encoding:"utf8"}).trim();i=c??u}catch{throw new Error("Failed to query npm registry. Check your network connection.")}if(o===i&&!r.force){e.info(`
1
+ var a=Object.defineProperty;var s=(n,e)=>a(n,"name",{value:e,configurable:!0});import{createRequire as f}from"node:module";import{m as v}from"../packem_shared/index-B8Ko8mwG.js";const d=f(import.meta.url),t=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,l=s(n=>{if(typeof t<"u"&&t.versions&&t.versions.node){const[e,r]=t.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return t.getBuiltinModule(n)}return d(n)},"__cjs_getBuiltinModule"),{execSync:p,spawnSync:m}=l("node:child_process");var g=Object.defineProperty,y=s((n,e)=>g(n,"name",{value:e,configurable:!0}),"r");const w=y(async({argument:n,logger:e,options:r})=>{const c=n?.[0];e.info("info: checking for updates...");const o=v.version;let i;try{const u=p("npm view @visulima/vis version",{encoding:"utf8"}).trim();i=c??u}catch{throw new Error("Failed to query npm registry. Check your network connection.")}if(o===i&&!r.force){e.info(`
2
2
  ✓ Already up to date (${o})`);return}if(r.check){o===i?e.info(`✓ Already up to date (${o})`):e.info(`info: found @visulima/vis@${i} (current: ${o})`);return}if(e.info(`info: found @visulima/vis@${i} (current: ${o})`),e.info("info: installing..."),m("npm",["install","-g",`@visulima/vis@${i}`],{encoding:"utf8",stdio:"inherit"}).status!==0)throw new Error("Failed to update. Try running with sudo or fix npm permissions.");e.info(`
3
3
  ✓ Updated @visulima/vis from ${o} → ${i}`)},"execute");export{w as default};
@@ -1 +1 @@
1
- var p=Object.defineProperty;var t=(a,o)=>p(a,"name",{value:o,configurable:!0});import{I as f,D as d}from"../packem_shared/pm-runner-CVliR6Ie.js";import{o as g}from"../packem_shared/utils-DrNg0XTR.js";var v=Object.defineProperty,u=t((a,o)=>v(a,"name",{value:o,configurable:!0}),"n");const h=u(async({argument:a,logger:o,options:e,visConfig:l,workspaceRoot:c})=>{const s=a;if(!s||s.length===0)throw new Error("No packages specified. Usage: vis why <package...>");const n=c??process.cwd(),i=f(n,{configBackend:l?.install?.backend,configCorepack:l?.install?.corepack}),r=d(i,{depth:e.depth===void 0?void 0:Number(e.depth),dev:e.dev||!1,filter:g(e.filter),global:e.global||!1,json:e.json||!1,long:e.long||!1,noOptional:e.optional===!1,packages:s,parseable:e.parseable||!1,prod:e.prod||!1,recursive:e.recursive||!1},n,o);r!==0&&r!==1&&(process.exitCode=r)},"execute");export{h as default};
1
+ var p=Object.defineProperty;var t=(a,o)=>p(a,"name",{value:o,configurable:!0});import{R as f,a as d}from"../packem_shared/pm-runner-Dnj9J3KF.js";import{o as g}from"../packem_shared/utils-DrNg0XTR.js";var v=Object.defineProperty,u=t((a,o)=>v(a,"name",{value:o,configurable:!0}),"n");const h=u(async({argument:a,logger:o,options:e,visConfig:l,workspaceRoot:c})=>{const s=a;if(!s||s.length===0)throw new Error("No packages specified. Usage: vis why <package...>");const n=c??process.cwd(),i=f(n,{configBackend:l?.install?.backend,configCorepack:l?.install?.corepack}),r=d(i,{depth:e.depth===void 0?void 0:Number(e.depth),dev:e.dev||!1,filter:g(e.filter),global:e.global||!1,json:e.json||!1,long:e.long||!1,noOptional:e.optional===!1,packages:s,parseable:e.parseable||!1,prod:e.prod||!1,recursive:e.recursive||!1},n,o);r!==0&&r!==1&&(process.exitCode=r)},"execute");export{h as default};
@@ -1,4 +1,4 @@
1
- var R=Object.defineProperty;var k=(n,t)=>R(n,"name",{value:t,configurable:!0});import{createRequire as B}from"node:module";import{i as D,$ as V}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{j as q,B as v}from"./config.js";import{p as e}from"./bin.js";import{A as E}from"../packem_shared/pm-runner-CVliR6Ie.js";import{x as M}from"../packem_shared/build-scripts-3E2pmscY.js";import{N as F}from"../packem_shared/native-config-sync-BOeuyrBj.js";const O=B(import.meta.url),$=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,T=k(n=>{if(typeof $<"u"&&$.versions&&$.versions.node){const[t,s]=$.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return $.getBuiltinModule(n)}return O(n)},"__cjs_getBuiltinModule"),{spawnSync:A}=T("node:child_process");var W=Object.defineProperty,x=k((n,t)=>W(n,"name",{value:t,configurable:!0}),"$$1");const z=/(defineConfig\s*\(\s*\{)/,J=/(export\s+default\s+\{)/,w=x((n,t)=>`${t}${JSON.stringify(n)}: true,`,"renderEntry"),G=x((n,t)=>{if(t.length===0)return{added:[],skipped:[],status:"noop"};const s=q(n);if(!s)return{added:[],skipped:t,status:"no-config"};if(!D(s))return{added:[],skipped:t,status:"no-config"};const i=V(s),h=i.search(/installScripts\s*:\s*\{/);let p=null,c=0;if(h!==-1){const a=i.slice(h),d=/(allow\s*:\s*\{)([^}]*)(\})/.exec(a);d?.index!==void 0&&(p=d,c=h+d.index)}if(p){const a=p[2]??"",d=new Set;for(const g of a.matchAll(/["']([^"']+)["']\s*:/g))d.add(g[1]);for(const g of a.matchAll(/(?:^|,|\{)\s*([a-z_$][\w-]*)\s*:/gi))d.add(g[1]);const f=[],S=[];for(const g of t)d.has(g)?S.push(g):f.push(g);if(f.length===0)return{added:[],configPath:s,skipped:S,status:"noop"};const _=/\n([ \t]+)\S/.exec(a)?.[1]??" ",P=`
1
+ var R=Object.defineProperty;var k=(n,t)=>R(n,"name",{value:t,configurable:!0});import{createRequire as B}from"node:module";import{i as D,$ as V}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{j as q,B as v}from"./config.js";import{p as e}from"./bin.js";import{A as E}from"../packem_shared/pm-runner-Dnj9J3KF.js";import{x as M}from"../packem_shared/build-scripts-3E2pmscY.js";import{N as F}from"../packem_shared/native-config-sync-BOeuyrBj.js";const O=B(import.meta.url),$=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,T=k(n=>{if(typeof $<"u"&&$.versions&&$.versions.node){const[t,s]=$.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return $.getBuiltinModule(n)}return O(n)},"__cjs_getBuiltinModule"),{spawnSync:A}=T("node:child_process");var W=Object.defineProperty,x=k((n,t)=>W(n,"name",{value:t,configurable:!0}),"$$1");const z=/(defineConfig\s*\(\s*\{)/,J=/(export\s+default\s+\{)/,w=x((n,t)=>`${t}${JSON.stringify(n)}: true,`,"renderEntry"),G=x((n,t)=>{if(t.length===0)return{added:[],skipped:[],status:"noop"};const s=q(n);if(!s)return{added:[],skipped:t,status:"no-config"};if(!D(s))return{added:[],skipped:t,status:"no-config"};const i=V(s),h=i.search(/installScripts\s*:\s*\{/);let p=null,c=0;if(h!==-1){const a=i.slice(h),d=/(allow\s*:\s*\{)([^}]*)(\})/.exec(a);d?.index!==void 0&&(p=d,c=h+d.index)}if(p){const a=p[2]??"",d=new Set;for(const g of a.matchAll(/["']([^"']+)["']\s*:/g))d.add(g[1]);for(const g of a.matchAll(/(?:^|,|\{)\s*([a-z_$][\w-]*)\s*:/gi))d.add(g[1]);const f=[],S=[];for(const g of t)d.has(g)?S.push(g):f.push(g);if(f.length===0)return{added:[],configPath:s,skipped:S,status:"noop"};const _=/\n([ \t]+)\S/.exec(a)?.[1]??" ",P=`
2
2
  ${f.map(g=>w(g,_)).join(`
3
3
  `)}`,y=a.replace(/\s+$/,""),b=a.slice(y.length),N=`${y}${y.endsWith(",")||y===""?"":","}${P}${b.length>0?b:`
4
4
  `}`,C=`${i.slice(0,c)}${p[1]}${N}${p[3]}${i.slice(c+p[0].length)}`;return v(s,C),{added:f,configPath:s,skipped:S,status:"updated"}}const o=/(installScripts\s*:\s*\{)/;if(o.test(i)){const a=`
@@ -1,26 +1,28 @@
1
- var Se=Object.defineProperty;var D=(e,t)=>Se(e,"name",{value:t,configurable:!0});import{createRequire as Ae}from"node:module";import{e as G,T as me}from"../packem_shared/index.server-B7ETiT4C.js";import{M as W,i as V,$ as Te}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{o as oe,a8 as Ne,F as N,a9 as Me,W as Ue,G as je,H as fe,aa as Fe,ab as he,i as X,c as _e,R as qe,b as Be,V as Le,ac as Oe,K as Pe,ad as Ie,s as ve,U as De,ae as We,af as Ve,ag as Ge,ah as He}from"./bin.js";import{render as re,renderToString as Q}from"@visulima/tui";import{Text as C}from"@visulima/tui/components/text";import k from"react";import{H as Ye,e as ze,Z as ie}from"../packem_shared/ai-analysis-B8pDCOuT.js";import{k as Ze,I as Je}from"../packem_shared/pm-runner-CVliR6Ie.js";import{r as Ke,b as Xe,p as Qe}from"../packem_shared/resolve-explicit-2G-2HWtR.js";import{r as et,s as tt}from"../packem_shared/typosquats-CioMnpnb.js";import{U as nt,C as at,a as le}from"../packem_shared/vis-update-app-BWA1kA1q.js";import{d as st}from"../packem_shared/utils-DrNg0XTR.js";const xe=Ae(import.meta.url),_=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,pe=D(e=>{if(typeof _<"u"&&_.versions&&_.versions.node){const[t,n]=_.versions.node.split(".").map(Number);if(t>22||t===22&&n>=3||t===20&&n>=16)return _.getBuiltinModule(e)}return xe(e)},"__cjs_getBuiltinModule"),{execFileSync:ge}=pe("node:child_process"),{createInterface:Ee}=pe("node:readline");var ot=Object.defineProperty,x=D((e,t)=>ot(e,"name",{value:t,configurable:!0}),"s");const rt=x(e=>{const t=[];for(const n of e.filters)t.push("--filter",n);return e.workspaceRoot&&t.push("--filter","."),t.push("update"),e.latest&&t.push("--latest"),e.recursive&&t.push("--recursive"),e.interactive&&t.push("--interactive"),e.dev&&t.push("--dev"),e.prod&&t.push("--prod"),e.noOptional&&t.push("--no-optional"),e.noSave&&t.push("--no-save"),t.push(...e.packages),{args:t,bin:"pnpm"}},"resolvePnpm"),it=x(e=>{const t=[];return e.filters.length>0&&t.push("workspace",e.filters[0]),t.push("upgrade"),e.latest&&t.push("--latest"),t.push(...e.packages),{args:t,bin:"yarn"}},"resolveYarnV1"),lt=x(e=>{const t=[];if(e.filters.length>0||e.recursive){t.push("workspaces","foreach","--all");for(const n of e.filters)t.push("--include",n)}return t.push("up"),e.interactive&&t.push("--interactive"),t.push(...e.packages),{args:t,bin:"yarn"}},"resolveYarnBerry"),ct=x((e,t)=>{const n=["update"];e.latest&&t.push("npm does not support --latest flag. Packages will be updated within their semver range."),e.interactive&&t.push("npm does not support --interactive mode.");for(const a of e.filters)n.push("--workspace",a);return e.recursive&&n.push("--workspaces"),e.workspaceRoot&&n.push("--include-workspace-root"),e.dev&&n.push("--dev"),e.prod&&n.push("--production"),e.noOptional&&n.push("--no-optional"),e.noSave&&n.push("--no-save"),n.push(...e.packages),{args:n,bin:"npm"}},"resolveNpm"),ut=x(e=>{const t=["update"];e.latest&&t.push("--latest");for(const n of e.filters)t.push("--filter",n);return t.push(...e.packages),{args:t,bin:"bun"}},"resolveBun"),dt=x((e,t)=>{const n=["outdated","--update"];return e.latest&&n.push("--latest"),e.interactive&&n.push("--interactive"),e.filters.length>0&&t.push("deno outdated has no --filter flag; ignoring."),(e.dev||e.prod)&&t.push("deno outdated has no --dev / --prod flags; dev/prod is governed by deno.json."),e.noOptional&&t.push("deno outdated has no --no-optional flag; ignoring."),e.noSave&&t.push("deno outdated has no --no-save flag; ignoring."),n.push(...e.packages),{args:n,bin:"deno"}},"resolveDeno"),pt=x((e,t,n)=>{const a=[];if(n.global&&e!=="aube"&&e!=="deno")return{command:{args:["update","--global",...n.packages],bin:"npm"},warnings:a};let o;switch(e){case"aube":{const s=Ze(n);o={args:s.args,bin:s.bin},a.push(...s.warnings);break}case"bun":{o=ut(n);break}case"deno":{o=dt(n,a);break}case"npm":{o=ct(n,a);break}case"pnpm":{o=rt(n);break}case"yarn":{o=t.startsWith("1.")?it(n):lt(n);break}default:{const s=e;throw new Error(`Unsupported package manager: ${String(s)}`)}}return{command:o,warnings:a}},"resolveUpdateCommand");var gt=Object.defineProperty,$=D((e,t)=>gt(e,"name",{value:t,configurable:!0}),"y");const $e=$(e=>{const t=e.trim();if(t==="")return;const n=/^(\d+(?:\.\d+)?)\s*([mhdw])?$/i.exec(t);if(!n)return;const a=Number.parseFloat(n[1]);if(!(!Number.isFinite(a)||a<0))switch((n[2]??"m").toLowerCase()){case"d":return a*60*24;case"h":return a*60;case"m":return a;case"w":return a*60*24*7;default:return}},"parseTimeStringToMinutes"),mt=$(e=>{const t=e.trim();return/^\d+(?:\.\d+)?$/.test(t)?Number.parseFloat(t)*1440:$e(t)},"parseNpmReleaseAgeValue"),Ft=$(e=>!Number.isFinite(e)||e<=0?"0m":e%1440===0?`${String(e/1440)}d`:e%60===0?`${String(e/60)}h`:`${String(e)}m`,"formatMinutesAsTimeString"),ft=$((e,t)=>{try{switch(t){case"bun":{const n=W(e,"bunfig.toml");if(V(n)){const a=Ne(n),o=a?.install?.minimumReleaseAge;return{excludes:Array.isArray(a?.install?.minimumReleaseAgeExcludes)?a.install.minimumReleaseAgeExcludes:void 0,minutes:typeof o=="number"?Math.round(o/60):void 0}}break}case"npm":{const n=W(e,".npmrc");if(V(n)){const a=Te(n),o=/^\s*min-release-age\s*=\s*([^\s#;]+)/m.exec(a);return{minutes:o?mt(o[1]):void 0}}break}case"pnpm":{const n=W(e,"pnpm-workspace.yaml");if(V(n)){const a=oe(n);return{excludes:Array.isArray(a?.minimumReleaseAgeExclude)?a.minimumReleaseAgeExclude:void 0,minutes:typeof a?.minimumReleaseAge=="number"?a.minimumReleaseAge:void 0}}break}case"yarn":{const n=W(e,".yarnrc.yml");if(V(n)){const a=oe(n)?.npmMinimalAgeGate;if(typeof a=="string")return{minutes:$e(a)};if(typeof a=="number")return{minutes:a}}break}}}catch{}return{}},"readPmNativeMinimumReleaseAge"),ht=$((e,t,n)=>{const a=e.latest?"latest":e.target??t.target??"latest";if(!["latest","minor","patch"].includes(a))throw new Error(`Invalid target "${a}". Use: latest, minor, or patch.`);const o=e.maxConcurrentRequests,s=typeof o=="number"&&o>0?o:t.maxConcurrentRequests,i=typeof e.releaseChannel=="string"?e.releaseChannel.toLowerCase():void 0;if(i!==void 0&&!["any","same","stable"].includes(i))throw new Error(`Invalid --release-channel "${String(e.releaseChannel)}". Use: any, same, or stable.`);const p=i??t.releaseChannel;return{exclude:[...N(e.exclude),...N(t.exclude)],ignore:N(t.ignore),include:[...N(e.include),...N(t.include),...n],includeLocked:e.includeLocked||t.includeLocked||!1,includePrerelease:e.prerelease||t.prerelease||!1,maxConcurrentRequests:s,minimumReleaseAge:t.minimumReleaseAge,minimumReleaseAgeExclude:t.minimumReleaseAgeExclude,packageMode:t.packageMode,releaseChannel:p,security:e.security===!1?!1:e.ai||(t.security??!0),target:a}},"buildCatalogCheckOptions"),ce=$((e,t)=>{if(e.length!==0){t.info(`
2
- ${G("⚠")} ${String(e.length)} package${e.length===1?"":"s"} skipped by target constraint (use --target latest to include):`);for(const n of e)t.info(` ${n.packageName} ${n.currentRange} → ${n.newRange} (${n.updateType})`)}},"logFilteredByTarget"),ue=$((e,t,n,a,o)=>{n==="json"?process.stdout.write(`${Me({checkedCount:0,failed:t,filteredByTarget:[],ignored:[],outdated:e})}
3
- `):n==="minimal"?process.stdout.write(`${Ue(e)}
4
- `):(je(e,a),a.info(fe(e,o)))},"writeFormattedOutput"),de=$(async(e,t,n,a,o,s,i)=>{const p=Fe(e,n,t,!0,{useEditorconfig:i}),g=t==="pnpm"?"pnpm-workspace.yaml":"package.json";if(o.info(`
5
- Updated ${g}`),p&&o.info(`Backup saved to ${p}`),a.changelog){o.info(`
6
- Fetching changelogs...`);const m=await he(n,void 0,s);for(const l of m){const f=l.releaseUrl??l.repoUrl??l.npmUrl;o.info(` ${l.packageName}: ${f}`)}}if(a.install??!0){const m=t,l=["install"];o.info(`Running ${m} ${l.join(" ")}...
7
- `);try{ge(m,l,{cwd:e,env:process.env,stdio:"inherit"})}catch{o.warn(`${m} ${l.join(" ")} failed. You may need to run it manually.`)}}},"applyCatalogAndInstall"),vt=$(async(e,t,n,a,o,s)=>{const i=n.update??{},p=[["global","--global is not supported in catalog mode"],["recursive","--recursive is not needed in catalog mode (catalogs are workspace-level)"],["filter","--filter is not supported in catalog mode (use --include/--exclude instead)"],["no-save","--no-save is not supported in catalog mode"],["workspace-root","--workspace-root is not needed in catalog mode"],["no-optional","--no-optional is not supported in catalog mode"]];for(const[r,c]of p)a[r]&&s.warn(`${G("⚠")} ${c}, ignoring.`);const g=X("minReleaseAge"),{excludes:m,minutes:l}=g?{excludes:void 0,minutes:void 0}:ft(e,t),f=g?void 0:i.minimumReleaseAge??l,q=g?void 0:i.minimumReleaseAgeExclude??m;if(g&&(i.minimumReleaseAge!==void 0||l!==void 0)&&s.info("minimumReleaseAge gate disabled via MARSHALL_DISABLE_MIN_RELEASE_AGE."),!g&&i.minimumReleaseAge!==void 0&&l!==void 0&&i.minimumReleaseAge!==l){const r=t==="pnpm"?"pnpm-workspace.yaml":"bunfig.toml";s.warn(`${G("⚠")} minimumReleaseAge mismatch: vis config = ${String(i.minimumReleaseAge)} min, ${r} = ${String(l)} min. Consider keeping them in sync.`)}const b=_e(e),ee=a["include-internal"],te=a.peer,M=qe(e,t,{depFields:i.depFields,dev:a.dev,includeInternal:ee,peer:te,prod:a.prod});if(M.size===0){s.info("No catalogs found.");return}const ke={...i,minimumReleaseAge:f,minimumReleaseAgeExclude:q},E=ht(a,ke,o);let H=0;for(const r of M.values())H+=r.size;const B=!!process.stdout.isTTY&&!ve;let T;const we=B?(r,c)=>{T?T.rerender(k.createElement(le,{current:r,total:c})):(process.stdout.write(`
8
- `),T=re(k.createElement(le,{current:r,total:c}),{interactive:!0,patchConsole:!1}))}:(r,c)=>{s.info(`Checking ${String(r)}/${String(c)} dependencies...`)};B||s.info(`Checking ${String(H)} catalog dependencies...
9
- `);const Y=new Set;X("socket")&&Y.add("socket"),X("depsDev")&&Y.add("deps-dev");const L=n.security?.policies?.score?.minimum,ye=Be(n.security,{disabled:Y,minimumScore:L}),{checkedCount:w,failed:y,filteredByTarget:h,ignored:S,outdated:d}=await Le(M,E,b,we,e,ye,n.security?.acceptedRisks);T&&(T.clear(),T.unmount());const O=ee?{ignored:[],outdated:[]}:Oe(e,{depFields:i.depFields,dev:a.dev,exclude:E.exclude,ignore:E.ignore,include:E.include,packageMode:E.packageMode,peer:te,prod:a.prod,target:E.target});if(O.outdated.length>0){const r=new Set(d.map(c=>`${c.catalogName}|${c.packageName}`));for(const c of O.outdated)r.has(`${c.catalogName}|${c.packageName}`)||d.push(c)}if(O.ignored.length>0)for(const r of O.ignored)S.includes(r)||S.push(r);const ne=w-d.length-y.length;if(y.length>0&&s.warn(`Failed to fetch: ${y.join(", ")}`),S.length>0&&s.info(`Skipped ${String(S.length)} ignored package${S.length===1?"":"s"}: ${S.join(", ")}`),!B&&w>d.length){const r=[...M.values()].reduce((F,z)=>F+z.size,0),c=r>w?` (${String(r)} catalog entries, ${String(r-w)} duplicates)`:"";s.info(`Checked ${String(w)} unique packages${c}: ${String(d.length)} outdated, ${String(ne)} up-to-date${y.length>0?`, ${String(y.length)} failed`:""}${h.length>0?`, ${String(h.length)} skipped by target`:""}`)}if(d.length===0){h.length>0?s.info(`All catalog dependencies are up to date within the current target.
1
+ var Ae=Object.defineProperty;var I=(e,t)=>Ae(e,"name",{value:t,configurable:!0});import{createRequire as xe}from"node:module";import{e as H,T as ee}from"../packem_shared/index.server-B7ETiT4C.js";import{M as W,i as Y,$ as Me}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{o as se,a8 as Ue,F as M,a9 as je,W as Fe,G as _e,H as ge,aa as qe,ab as me,i as Q,c as Pe,R as Be,b as Le,V as Oe,ac as De,K as Ie,ad as We,s as fe,U as Ye,ae as He,af as Ge,ag as Ve,ah as ze}from"./bin.js";import{render as ie,renderToString as X}from"@visulima/tui";import{Text as C}from"@visulima/tui/components/text";import k from"react";import{H as Je,e as Ke,Z as le}from"../packem_shared/ai-analysis-B8pDCOuT.js";import{k as Ze,s as he,R as Qe}from"../packem_shared/pm-runner-Dnj9J3KF.js";import{r as Xe,b as et,p as tt}from"../packem_shared/resolve-explicit-BpxcFRuk.js";import{r as nt,s as at}from"../packem_shared/typosquats-Citu7BRY.js";import{U as ot,C as rt,a as ce}from"../packem_shared/vis-update-app-BWA1kA1q.js";import{h as ve,P as $e}from"../packem_shared/peer-warnings-EvSJ18gE.js";import{d as st}from"../packem_shared/utils-DrNg0XTR.js";const Ee=xe(import.meta.url),q=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Te=I(e=>{if(typeof q<"u"&&q.versions&&q.versions.node){const[t,n]=q.versions.node.split(".").map(Number);if(t>22||t===22&&n>=3||t===20&&n>=16)return q.getBuiltinModule(e)}return Ee(e)},"__cjs_getBuiltinModule"),{createInterface:Ne}=Te("node:readline");var it=Object.defineProperty,x=I((e,t)=>it(e,"name",{value:t,configurable:!0}),"s");const lt=x(e=>{const t=[];for(const n of e.filters)t.push("--filter",n);return e.workspaceRoot&&t.push("--filter","."),t.push("update"),e.latest&&t.push("--latest"),e.recursive&&t.push("--recursive"),e.interactive&&t.push("--interactive"),e.dev&&t.push("--dev"),e.prod&&t.push("--prod"),e.noOptional&&t.push("--no-optional"),e.noSave&&t.push("--no-save"),t.push(...e.packages),{args:t,bin:"pnpm"}},"resolvePnpm"),ct=x(e=>{const t=[];return e.filters.length>0&&t.push("workspace",e.filters[0]),t.push("upgrade"),e.latest&&t.push("--latest"),t.push(...e.packages),{args:t,bin:"yarn"}},"resolveYarnV1"),ut=x(e=>{const t=[];if(e.filters.length>0||e.recursive){t.push("workspaces","foreach","--all");for(const n of e.filters)t.push("--include",n)}return t.push("up"),e.interactive&&t.push("--interactive"),t.push(...e.packages),{args:t,bin:"yarn"}},"resolveYarnBerry"),dt=x((e,t)=>{const n=["update"];e.latest&&t.push("npm does not support --latest flag. Packages will be updated within their semver range."),e.interactive&&t.push("npm does not support --interactive mode.");for(const a of e.filters)n.push("--workspace",a);return e.recursive&&n.push("--workspaces"),e.workspaceRoot&&n.push("--include-workspace-root"),e.dev&&n.push("--dev"),e.prod&&n.push("--production"),e.noOptional&&n.push("--no-optional"),e.noSave&&n.push("--no-save"),n.push(...e.packages),{args:n,bin:"npm"}},"resolveNpm"),pt=x(e=>{const t=["update"];e.latest&&t.push("--latest");for(const n of e.filters)t.push("--filter",n);return t.push(...e.packages),{args:t,bin:"bun"}},"resolveBun"),gt=x((e,t)=>{const n=["outdated","--update"];return e.latest&&n.push("--latest"),e.interactive&&n.push("--interactive"),e.filters.length>0&&t.push("deno outdated has no --filter flag; ignoring."),(e.dev||e.prod)&&t.push("deno outdated has no --dev / --prod flags; dev/prod is governed by deno.json."),e.noOptional&&t.push("deno outdated has no --no-optional flag; ignoring."),e.noSave&&t.push("deno outdated has no --no-save flag; ignoring."),n.push(...e.packages),{args:n,bin:"deno"}},"resolveDeno"),mt=x((e,t,n)=>{const a=[];if(n.global&&e!=="aube"&&e!=="deno")return{command:{args:["update","--global",...n.packages],bin:"npm"},warnings:a};let r;switch(e){case"aube":{const o=Ze(n);r={args:o.args,bin:o.bin},a.push(...o.warnings);break}case"bun":{r=pt(n);break}case"deno":{r=gt(n,a);break}case"npm":{r=dt(n,a);break}case"pnpm":{r=lt(n);break}case"yarn":{r=t.startsWith("1.")?ct(n):ut(n);break}default:{const o=e;throw new Error(`Unsupported package manager: ${String(o)}`)}}return{command:r,warnings:a}},"resolveUpdateCommand");var ft=Object.defineProperty,$=I((e,t)=>ft(e,"name",{value:t,configurable:!0}),"y");const ke=$(e=>{const t=e.trim();if(t==="")return;const n=/^(\d+(?:\.\d+)?)\s*([mhdw])?$/i.exec(t);if(!n)return;const a=Number.parseFloat(n[1]);if(!(!Number.isFinite(a)||a<0))switch((n[2]??"m").toLowerCase()){case"d":return a*60*24;case"h":return a*60;case"m":return a;case"w":return a*60*24*7;default:return}},"parseTimeStringToMinutes"),ht=$(e=>{const t=e.trim();return/^\d+(?:\.\d+)?$/.test(t)?Number.parseFloat(t)*1440:ke(t)},"parseNpmReleaseAgeValue"),Pt=$(e=>!Number.isFinite(e)||e<=0?"0m":e%1440===0?`${String(e/1440)}d`:e%60===0?`${String(e/60)}h`:`${String(e)}m`,"formatMinutesAsTimeString"),vt=$((e,t)=>{try{switch(t){case"bun":{const n=W(e,"bunfig.toml");if(Y(n)){const a=Ue(n),r=a?.install?.minimumReleaseAge;return{excludes:Array.isArray(a?.install?.minimumReleaseAgeExcludes)?a.install.minimumReleaseAgeExcludes:void 0,minutes:typeof r=="number"?Math.round(r/60):void 0}}break}case"npm":{const n=W(e,".npmrc");if(Y(n)){const a=Me(n),r=/^\s*min-release-age\s*=\s*([^\s#;]+)/m.exec(a);return{minutes:r?ht(r[1]):void 0}}break}case"pnpm":{const n=W(e,"pnpm-workspace.yaml");if(Y(n)){const a=se(n);return{excludes:Array.isArray(a?.minimumReleaseAgeExclude)?a.minimumReleaseAgeExclude:void 0,minutes:typeof a?.minimumReleaseAge=="number"?a.minimumReleaseAge:void 0}}break}case"yarn":{const n=W(e,".yarnrc.yml");if(Y(n)){const a=se(n)?.npmMinimalAgeGate;if(typeof a=="string")return{minutes:ke(a)};if(typeof a=="number")return{minutes:a}}break}}}catch{}return{}},"readPmNativeMinimumReleaseAge"),$t=$((e,t,n)=>{const a=e.latest?"latest":e.target??t.target??"latest";if(!["latest","minor","patch"].includes(a))throw new Error(`Invalid target "${a}". Use: latest, minor, or patch.`);const r=e.maxConcurrentRequests,o=typeof r=="number"&&r>0?r:t.maxConcurrentRequests,i=typeof e.releaseChannel=="string"?e.releaseChannel.toLowerCase():void 0;if(i!==void 0&&!["any","same","stable"].includes(i))throw new Error(`Invalid --release-channel "${String(e.releaseChannel)}". Use: any, same, or stable.`);const m=i??t.releaseChannel;return{exclude:[...M(e.exclude),...M(t.exclude)],ignore:M(t.ignore),include:[...M(e.include),...M(t.include),...n],includeLocked:e.includeLocked||t.includeLocked||!1,includePrerelease:e.prerelease||t.prerelease||!1,maxConcurrentRequests:o,minimumReleaseAge:t.minimumReleaseAge,minimumReleaseAgeExclude:t.minimumReleaseAgeExclude,packageMode:t.packageMode,releaseChannel:m,security:e.security===!1?!1:e.ai||(t.security??!0),target:a}},"buildCatalogCheckOptions"),ue=$((e,t)=>{if(e.length!==0){t.info(`
2
+ ${H("⚠")} ${String(e.length)} package${e.length===1?"":"s"} skipped by target constraint (use --target latest to include):`);for(const n of e)t.info(` ${n.packageName} ${n.currentRange} → ${n.newRange} (${n.updateType})`)}},"logFilteredByTarget"),de=$((e,t,n,a,r)=>{n==="json"?process.stdout.write(`${je({checkedCount:0,failed:t,filteredByTarget:[],ignored:[],outdated:e})}
3
+ `):n==="minimal"?process.stdout.write(`${Fe(e)}
4
+ `):(_e(e,a),a.info(ge(e,r)))},"writeFormattedOutput"),pe=$(async(e,t,n,a,r,o,i)=>{const m=qe(e,n,t,!0,{useEditorconfig:i}),f=t==="pnpm"?"pnpm-workspace.yaml":"package.json";if(r.info(`
5
+ Updated ${f}`),m&&r.info(`Backup saved to ${m}`),a.changelog){r.info(`
6
+ Fetching changelogs...`);const p=await me(n,void 0,o);for(const l of p){const d=l.releaseUrl??l.repoUrl??l.npmUrl;r.info(` ${l.packageName}: ${d}`)}}if(a.install??!0){const p=t,l=["install"];r.info(`Running ${p} ${l.join(" ")}...
7
+ `);try{const{code:d,output:E}=await he(p,l,{cwd:e,env:process.env});d!==0?r.warn(`${p} ${l.join(" ")} failed. You may need to run it manually.`):a.peer!==!0&&ve(E)&&r.info($e)}catch{r.warn(`${p} ${l.join(" ")} failed. You may need to run it manually.`)}}},"applyCatalogAndInstall"),kt=$(async(e,t,n,a,r,o)=>{const i=n.update??{},m=[["global","--global is not supported in catalog mode"],["recursive","--recursive is not needed in catalog mode (catalogs are workspace-level)"],["filter","--filter is not supported in catalog mode (use --include/--exclude instead)"],["no-save","--no-save is not supported in catalog mode"],["workspace-root","--workspace-root is not needed in catalog mode"],["no-optional","--no-optional is not supported in catalog mode"]];for(const[s,c]of m)a[s]&&o.warn(`${H("⚠")} ${c}, ignoring.`);const f=Q("minReleaseAge"),{excludes:p,minutes:l}=f?{excludes:void 0,minutes:void 0}:vt(e,t),d=f?void 0:i.minimumReleaseAge??l,E=f?void 0:i.minimumReleaseAgeExclude??p;if(f&&(i.minimumReleaseAge!==void 0||l!==void 0)&&o.info("minimumReleaseAge gate disabled via MARSHALL_DISABLE_MIN_RELEASE_AGE."),!f&&i.minimumReleaseAge!==void 0&&l!==void 0&&i.minimumReleaseAge!==l){const s=t==="pnpm"?"pnpm-workspace.yaml":"bunfig.toml";o.warn(`${H("⚠")} minimumReleaseAge mismatch: vis config = ${String(i.minimumReleaseAge)} min, ${s} = ${String(l)} min. Consider keeping them in sync.`)}const b=Pe(e),te=a["include-internal"],ne=a.peer,U=Be(e,t,{depFields:i.depFields,dev:a.dev,includeInternal:te,peer:ne,prod:a.prod});if(U.size===0){o.info("No catalogs found.");return}const we={...i,minimumReleaseAge:d,minimumReleaseAgeExclude:E},T=$t(a,we,r);let G=0;for(const s of U.values())G+=s.size;const P=!!process.stdout.isTTY&&!fe;let N;const ye=P?(s,c)=>{N?N.rerender(k.createElement(ce,{current:s,total:c})):(process.stdout.write(`
8
+ `),N=ie(k.createElement(ce,{current:s,total:c}),{interactive:!0,patchConsole:!1}))}:(s,c)=>{o.info(`Checking ${String(s)}/${String(c)} dependencies...`)};P||o.info(`Checking ${String(G)} catalog dependencies...
9
+ `);const V=new Set;Q("socket")&&V.add("socket"),Q("depsDev")&&V.add("deps-dev");const B=n.security?.policies?.score?.minimum,be=Le(n.security,{disabled:V,minimumScore:B}),{checkedCount:w,failed:y,filteredByTarget:h,ignored:S,outdated:g}=await Oe(U,T,b,ye,e,be,n.security?.acceptedRisks);N&&(N.clear(),N.unmount());const L=te?{ignored:[],outdated:[]}:De(e,{depFields:i.depFields,dev:a.dev,exclude:T.exclude,ignore:T.ignore,include:T.include,packageMode:T.packageMode,peer:ne,prod:a.prod,target:T.target});if(L.outdated.length>0){const s=new Set(g.map(c=>`${c.catalogName}|${c.packageName}`));for(const c of L.outdated)s.has(`${c.catalogName}|${c.packageName}`)||g.push(c)}if(L.ignored.length>0)for(const s of L.ignored)S.includes(s)||S.push(s);const ae=w-g.length-y.length;if(y.length>0&&o.warn(`Failed to fetch: ${y.join(", ")}`),S.length>0&&o.info(`Skipped ${String(S.length)} ignored package${S.length===1?"":"s"}: ${S.join(", ")}`),!P&&w>g.length){const s=[...U.values()].reduce((_,z)=>_+z.size,0),c=s>w?` (${String(s)} catalog entries, ${String(s-w)} duplicates)`:"";o.info(`Checked ${String(w)} unique packages${c}: ${String(g.length)} outdated, ${String(ae)} up-to-date${y.length>0?`, ${String(y.length)} failed`:""}${h.length>0?`, ${String(h.length)} skipped by target`:""}`)}if(g.length===0){h.length>0?o.info(`All catalog dependencies are up to date within the current target.
10
10
  ${String(h.length)} package${h.length===1?" has":"s have"} newer versions available with --target latest:
11
- ${h.map(r=>` ${r.packageName} ${r.currentRange} → ${r.newRange} (${r.updateType})`).join(`
12
- `)}`):s.info("All catalog dependencies are up to date.");return}const U=a.format??i.format??"table";let R;if(a.ai){const r=Ye(a.aiType??"impact");R=await ze(d,s,n.ai,r)}const P=!!a.dryRun;if(!P&&o.length>0&&a.marshallCheck!==!1){const r=await Ke(o);if(r.length>0){const c=await Xe(r,{config:n?.security?.marshalls,workspaceRoot:e});if(!await Qe(c)){process.exitCode=1;return}}}if(B&&U==="table"){const r=new nt(d,R??null);let c;if(a.changelog){s.info("Fetching changelogs...");const u=await he(d,void 0,b);c=new Map;for(const v of u){const A=v.releaseUrl??v.repoUrl??v.npmUrl;A&&c.set(v.packageName,A)}}const F=n.tui?.autoExit??!1,z=F===!0?3:typeof F=="number"?F:0,ae=await re(k.createElement(at,{autoExitSeconds:z,changelogUrls:c,checkedCount:w,filteredOutEntries:h,isDryRun:P,store:r,totalCatalogEntries:H}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit(),Z=process.stdout.columns||80;process.stdout.write(`
13
- `);for(const u of d){const v=u.vulnerabilities?.length||u.socketReport&&u.socketReport.alerts.length>0,A=!!u.acceptedRisk,K=v?A?"✓":"⚠":"✓",Re=A?"gray":u.updateType==="major"?"red":u.updateType==="minor"?"yellow":"green",I=u.socketReport?.score.overall,Ce=I===void 0?"":` [${String(Math.round(I*100))}%]`,se=I===void 0?void 0:Pe(I);process.stdout.write(`${Q(k.createElement(C,null," ",k.createElement(C,{color:Re},K),` ${u.packageName} ${u.currentRange} → ${u.newRange}`,k.createElement(C,{dimColor:!0},` ${u.updateType}`),se?k.createElement(C,{color:se},Ce):null),{columns:Z})}
11
+ ${h.map(s=>` ${s.packageName} ${s.currentRange} → ${s.newRange} (${s.updateType})`).join(`
12
+ `)}`):o.info("All catalog dependencies are up to date.");return}const j=a.format??i.format??"table";let R;if(a.ai){const s=Je(a.aiType??"impact");R=await Ke(g,o,n.ai,s)}const O=!!a.dryRun;if(!O&&r.length>0&&a.marshallCheck!==!1){const s=await Xe(r);if(s.length>0){const c=await et(s,{config:n?.security?.marshalls,workspaceRoot:e});if(!await tt(c)){process.exitCode=1;return}}}if(P&&j==="table"){const s=new ot(g,R??null);let c;if(a.changelog){o.info("Fetching changelogs...");const u=await me(g,void 0,b);c=new Map;for(const v of u){const A=v.releaseUrl??v.repoUrl??v.npmUrl;A&&c.set(v.packageName,A)}}const _=n.tui?.autoExit??!1,z=_===!0?3:typeof _=="number"?_:0,oe=await ie(k.createElement(rt,{autoExitSeconds:z,changelogUrls:c,checkedCount:w,filteredOutEntries:h,isDryRun:O,store:s,totalCatalogEntries:G}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit(),J=process.stdout.columns||80;process.stdout.write(`
13
+ `);for(const u of g){const v=u.vulnerabilities?.length||u.socketReport&&u.socketReport.alerts.length>0,A=!!u.acceptedRisk,Z=v?A?"✓":"⚠":"✓",Ce=A?"gray":u.updateType==="major"?"red":u.updateType==="minor"?"yellow":"green",D=u.socketReport?.score.overall,Se=D===void 0?"":` [${String(Math.round(D*100))}%]`,re=D===void 0?void 0:Ie(D);process.stdout.write(`${X(k.createElement(C,null," ",k.createElement(C,{color:Ce},Z),` ${u.packageName} ${u.currentRange} → ${u.newRange}`,k.createElement(C,{dimColor:!0},` ${u.updateType}`),re?k.createElement(C,{color:re},Se):null),{columns:J})}
14
14
  `)}if(process.stdout.write(`
15
- `),s.info(fe(d,L)),w>d.length){const u=[...M.values()].reduce((A,K)=>A+K.size,0),v=u>w?` (${String(u)} catalog entries, ${String(u-w)} duplicates)`:"";s.log(),s.info(`Checked ${String(w)} unique packages${v}: ${String(ne)} up-to-date${y.length>0?`, ${String(y.length)} failed`:""}`)}if(h.length>0){process.stdout.write(`
16
- `);const u=`${String(h.length)} package${h.length===1?"":"s"} skipped by target constraint (use --target latest to include):`;process.stdout.write(`${Q(k.createElement(C,{color:"yellow"},` ${u}`),{columns:Z})}
17
- `);for(const v of h)process.stdout.write(`${Q(k.createElement(C,null," ",k.createElement(C,{dimColor:!0},v.packageName),` ${v.currentRange} → ${v.newRange}`,k.createElement(C,{dimColor:!0},` ${v.updateType}`)),{columns:Z})}
18
- `)}const J=Array.isArray(ae)?ae:[];if(J.length>0&&!P){s.info(`
19
- Applying ${String(J.length)} updates...
20
- `);const u={...a,install:a.install??i.install};await de(e,t,J,u,s,b,n.editorconfig??!0)}return}if(P){if(U==="json"){const r={failed:y,filteredByTarget:h,ignored:S,outdated:d};R&&(r.aiAnalysis=R),process.stdout.write(`${JSON.stringify(r,void 0,2)}
21
- `)}else s.info(`Would update ${String(d.length)} dependencies:
22
- `),ue(d,y,U,s,L),R&&(s.info(""),s.info(ie(R))),ce(h,s);return}R&&U!=="json"&&(s.info(ie(R)),s.info(""));let j=d;if(a.interactive&&(j=await Ie(d),j.length===0)){s.info("No updates selected.");return}s.info(`Updating ${String(j.length)} catalog dependencies...
23
- `),ue(j,[],U,s,L),ce(h,s);const be={...a,install:a.install??i.install};await de(e,t,j,be,s,b)},"executeCatalogUpdate"),$t=$((e,t,n,a,o,s)=>{const i={dev:a.dev,filters:N(a.filter),global:a.global,interactive:a.interactive,latest:a.latest||a.target==="latest",noOptional:a.optional===!1,noSave:a.save===!1,packages:o,prod:a.prod,recursive:a.recursive,workspaceRoot:a.workspaceRoot},{command:p,warnings:g}=pt(t,n,i);for(const l of g)s.warn(l);const m=`${p.bin} ${p.args.join(" ")}`.trim();if(a.dryRun){s.info(`Would run: ${m}`);return}s.info(`Running: ${m}`);try{ge(p.bin,p.args,{cwd:e,env:process.env,stdio:"inherit"})}catch(l){const f=l.status??1;s.error(`
24
- ${me("✖")} Update failed (exit code ${String(f)})`),s.error(` Command: ${m}`),s.error(` Directory: ${e}
25
- `),process.exitCode=f}},"executePmWrapper"),kt=$(async(e,t,n)=>{const a=e.latest===!0||e.target==="latest";if(t||!a||e.dryRun===!0||e.yes===!0||e.interactive===!0)return!0;if(!(process.stdout.isTTY&&!ve))return n.error(`${me("✖")} Refusing to run blanket --latest update in a non-interactive context.`),n.error(" Re-run with --yes to confirm, --dry-run to preview, or pass explicit package names."),process.exitCode=1,!1;const o=Ee({input:process.stdin,output:process.stdout});try{const s=(await new Promise(i=>{o.question(`${G("⚠")} About to upgrade ALL dependencies to their latest versions. This may include breaking changes.
26
- Continue? [y/N] `,i)})).trim().toLowerCase();return s==="y"||s==="yes"?!0:(n.info("Aborted."),!1)}finally{o.close()}},"requireBlanketUpdateConfirmation"),_t=$(async({argument:e,logger:t,options:n,visConfig:a,workspaceRoot:o})=>{if(!o)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");let s=e;const i=o,{packageManager:p}=De(i);if(n.typosquatCheck!==!1){if(s.length>0){const g=s.map(f=>st(f)),m=a?.security?.typosquatAllowlist,l=await et(g.map(f=>f.name),m);if(!l.ok){process.exitCode=1;return}s=g.map((f,q)=>{const b=l.packages[q];return b!==f.name?f.versionSpec?`${b}@${f.versionSpec}`:b??"":s[q]??""})}else if(!await tt(i,a?.security?.typosquatAllowlist)){process.exitCode=1;return}}if(n.rollback){if(!We(i,p)){t.info("No backup found. Run 'vis update' first to create a backup.");return}if(Ve(i,p))t.info("Restored from backup.");else throw new Error("Failed to restore from backup.");return}if(await kt(n,s.length>0,t))if(n.catalog!==!1&&Ge(i,p))await vt(i,p,a??{},n,s,t);else{const g=Je(i,{configBackend:a?.install?.backend,configCorepack:a?.install?.corepack}),m=g.name==="aube"?"":He(g.name);$t(i,g.name,m,n,s,t)}},"execute");export{_t as default,Ft as formatMinutesAsTimeString,mt as parseNpmReleaseAgeValue,$e as parseTimeStringToMinutes,ft as readPmNativeMinimumReleaseAge,kt as requireBlanketUpdateConfirmation};
15
+ `),o.info(ge(g,B)),w>g.length){const u=[...U.values()].reduce((A,Z)=>A+Z.size,0),v=u>w?` (${String(u)} catalog entries, ${String(u-w)} duplicates)`:"";o.log(),o.info(`Checked ${String(w)} unique packages${v}: ${String(ae)} up-to-date${y.length>0?`, ${String(y.length)} failed`:""}`)}if(h.length>0){process.stdout.write(`
16
+ `);const u=`${String(h.length)} package${h.length===1?"":"s"} skipped by target constraint (use --target latest to include):`;process.stdout.write(`${X(k.createElement(C,{color:"yellow"},` ${u}`),{columns:J})}
17
+ `);for(const v of h)process.stdout.write(`${X(k.createElement(C,null," ",k.createElement(C,{dimColor:!0},v.packageName),` ${v.currentRange} → ${v.newRange}`,k.createElement(C,{dimColor:!0},` ${v.updateType}`)),{columns:J})}
18
+ `)}const K=Array.isArray(oe)?oe:[];if(K.length>0&&!O){o.info(`
19
+ Applying ${String(K.length)} updates...
20
+ `);const u={...a,install:a.install??i.install};await pe(e,t,K,u,o,b,n.editorconfig??!0)}return}if(O){if(j==="json"){const s={failed:y,filteredByTarget:h,ignored:S,outdated:g};R&&(s.aiAnalysis=R),process.stdout.write(`${JSON.stringify(s,void 0,2)}
21
+ `)}else o.info(`Would update ${String(g.length)} dependencies:
22
+ `),de(g,y,j,o,B),R&&(o.info(""),o.info(le(R))),ue(h,o);return}R&&j!=="json"&&(o.info(le(R)),o.info(""));let F=g;if(a.interactive&&(F=await We(g),F.length===0)){o.info("No updates selected.");return}o.info(`Updating ${String(F.length)} catalog dependencies...
23
+ `),de(F,[],j,o,B),ue(h,o);const Re={...a,install:a.install??i.install};await pe(e,t,F,Re,o,b)},"executeCatalogUpdate"),wt=$(async(e,t,n,a,r,o)=>{const i={dev:a.dev,filters:M(a.filter),global:a.global,interactive:a.interactive,latest:a.latest||a.target==="latest",noOptional:a.optional===!1,noSave:a.save===!1,packages:r,prod:a.prod,recursive:a.recursive,workspaceRoot:a.workspaceRoot},{command:m,warnings:f}=mt(t,n,i);for(const l of f)o.warn(l);const p=`${m.bin} ${m.args.join(" ")}`.trim();if(a.dryRun){o.info(`Would run: ${p}`);return}o.info(`Running: ${p}`);try{const{code:l,output:d}=await he(m.bin,m.args,{cwd:e,env:process.env});if(l!==0){o.error(`
24
+ ${ee("✖")} Update failed (exit code ${String(l)})`),o.error(` Command: ${p}`),o.error(` Directory: ${e}
25
+ `),process.exitCode=l;return}a.peer!==!0&&ve(d)&&o.info($e)}catch(l){const d=l.status??1;o.error(`
26
+ ${ee("")} Update failed (exit code ${String(d)})`),o.error(` Command: ${p}`),o.error(` Directory: ${e}
27
+ `),process.exitCode=d}},"executePmWrapper"),yt=$(async(e,t,n)=>{const a=e.latest===!0||e.target==="latest";if(t||!a||e.dryRun===!0||e.yes===!0||e.interactive===!0)return!0;if(!(process.stdout.isTTY&&!fe))return n.error(`${ee("✖")} Refusing to run blanket --latest update in a non-interactive context.`),n.error(" Re-run with --yes to confirm, --dry-run to preview, or pass explicit package names."),process.exitCode=1,!1;const r=Ne({input:process.stdin,output:process.stdout});try{const o=(await new Promise(i=>{r.question(`${H("⚠")} About to upgrade ALL dependencies to their latest versions. This may include breaking changes.
28
+ Continue? [y/N] `,i)})).trim().toLowerCase();return o==="y"||o==="yes"?!0:(n.info("Aborted."),!1)}finally{r.close()}},"requireBlanketUpdateConfirmation"),Bt=$(async({argument:e,logger:t,options:n,visConfig:a,workspaceRoot:r})=>{if(!r)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");let o=e;const i=r,{packageManager:m}=Ye(i);if(n.typosquatCheck!==!1){if(o.length>0){const f=o.map(d=>st(d)),p=a?.security?.typosquatAllowlist,l=await nt(f.map(d=>d.name),p);if(!l.ok){process.exitCode=1;return}o=f.map((d,E)=>{const b=l.packages[E];return b!==d.name?d.versionSpec?`${b}@${d.versionSpec}`:b??"":o[E]??""})}else if(!await at(i,a?.security?.typosquatAllowlist)){process.exitCode=1;return}}if(n.rollback){if(!He(i,m)){t.info("No backup found. Run 'vis update' first to create a backup.");return}if(Ge(i,m))t.info("Restored from backup.");else throw new Error("Failed to restore from backup.");return}if(await yt(n,o.length>0,t))if(n.catalog!==!1&&Ve(i,m))await kt(i,m,a??{},n,o,t);else{const f=Qe(i,{configBackend:a?.install?.backend,configCorepack:a?.install?.corepack}),p=f.name==="aube"?"":ze(f.name);await wt(i,f.name,p,n,o,t)}},"execute");export{Bt as default,Pt as formatMinutesAsTimeString,ht as parseNpmReleaseAgeValue,ke as parseTimeStringToMinutes,vt as readPmNativeMinimumReleaseAge,yt as requireBlanketUpdateConfirmation};