@visulima/vis 1.0.0-alpha.32 → 1.0.0-alpha.34
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.
- package/CHANGELOG.md +29 -0
- package/dist/bin.js +1 -1
- package/dist/binx.js +1 -1
- package/dist/config/index.d.ts +31 -6
- package/dist/packem_chunks/bin.js +274 -274
- package/dist/packem_chunks/bloom-sync.js +1 -1
- package/dist/packem_chunks/fix.js +1 -1
- package/dist/packem_chunks/handler11.js +1 -1
- package/dist/packem_chunks/handler13.js +1 -1
- package/dist/packem_chunks/handler14.js +1 -1
- package/dist/packem_chunks/handler16.js +1 -1
- package/dist/packem_chunks/handler20.js +1 -1
- package/dist/packem_chunks/handler21.js +1 -1
- package/dist/packem_chunks/handler22.js +2 -2
- package/dist/packem_chunks/handler23.js +1 -1
- package/dist/packem_chunks/handler27.js +1 -1
- package/dist/packem_chunks/handler29.js +1 -1
- package/dist/packem_chunks/handler3.js +1 -1
- package/dist/packem_chunks/handler30.js +1 -1
- package/dist/packem_chunks/handler33.js +1 -1
- package/dist/packem_chunks/handler34.js +4 -4
- package/dist/packem_chunks/handler35.js +1 -1
- package/dist/packem_chunks/handler36.js +3 -3
- package/dist/packem_chunks/handler37.js +1 -1
- package/dist/packem_chunks/handler38.js +4 -4
- package/dist/packem_chunks/handler39.js +2 -2
- package/dist/packem_chunks/handler4.js +1 -1
- package/dist/packem_chunks/handler40.js +1 -1
- package/dist/packem_chunks/handler41.js +7 -7
- package/dist/packem_chunks/handler42.js +25 -153
- package/dist/packem_chunks/handler43.js +153 -25
- package/dist/packem_chunks/handler44.js +5 -5
- package/dist/packem_chunks/handler45.js +1 -1
- package/dist/packem_chunks/handler47.js +1 -1
- package/dist/packem_chunks/handler48.js +1 -1
- package/dist/packem_chunks/handler49.js +1 -1
- package/dist/packem_chunks/handler5.js +1 -1
- package/dist/packem_chunks/handler50.js +10 -10
- package/dist/packem_chunks/handler51.js +53 -53
- package/dist/packem_chunks/handler7.js +1 -1
- package/dist/packem_chunks/heal.js +1 -1
- package/dist/packem_chunks/help-command.js +1 -1
- package/dist/packem_chunks/index.js +1 -1
- package/dist/packem_chunks/keys-refresh.js +1 -1
- package/dist/packem_chunks/list.js +1 -1
- package/dist/packem_chunks/run.js +1 -1
- package/dist/packem_chunks/sync.js +1 -1
- package/dist/packem_chunks/sync2.js +1 -1
- package/dist/packem_chunks/verify-lockfile.js +1 -1
- package/dist/packem_shared/{ai-analysis-KP8b5lc0.js → ai-analysis-3QD_RS6F.js} +1 -1
- package/dist/packem_shared/{ai-fix-BkPUHA0z.js → ai-fix-TsjDQz_0.js} +3 -3
- package/dist/packem_shared/{cyclonedx-BilSFCNY.js → cyclonedx-zf9R2jCs.js} +1 -1
- package/dist/packem_shared/{dependency-scan-BUbOcMwX.js → dependency-scan-B70azq4x.js} +1 -1
- package/dist/packem_shared/{failure-log-34Wl3npC.js → failure-log-Dxafk3t4.js} +2 -2
- package/dist/packem_shared/index-BpbjpCNL.js +1 -0
- package/dist/packem_shared/{index-K8aQuMvx.js → index-di3jpyZS.js} +1 -1
- package/dist/packem_shared/{lifecycle-Buigdp7P.js → lifecycle-DvVTL8nx.js} +2 -2
- package/dist/packem_shared/{lockfile-CrT86D6d.js → lockfile-CedmXr44.js} +1 -1
- package/dist/packem_shared/{min-release-age-BPVXwPUg.js → min-release-age-DKMW2N_v.js} +1 -1
- package/dist/packem_shared/missing-package-json-DKAwoiWK.js +1 -0
- package/dist/packem_shared/{native-config-sync-BRZZetn3.js → native-config-sync-DBkJ-hsF.js} +1 -1
- package/dist/packem_shared/{provenance-D8vU1u2L.js → provenance-Cu6VR1Hy.js} +1 -1
- package/dist/packem_shared/{registry-keys-E3cZn4FI.js → registry-keys-CuBAVdsk.js} +1 -1
- package/dist/packem_shared/{resolve-explicit-cPzwdiEE.js → resolve-explicit-Xue0oq8V.js} +1 -1
- package/dist/packem_shared/{s1ngularity-DBcjspCC.js → s1ngularity-adnHbyTd.js} +1 -1
- package/dist/packem_shared/{scan-progress-CTVVf9WW.js → scan-progress-lZdk5KJ-.js} +1 -1
- package/dist/packem_shared/{signatures-ChTfrQvT.js → signatures-FGbYV5QE.js} +1 -1
- package/dist/packem_shared/{spinner-C8xs6QZv.js → spinner-0acw5pd_.js} +1 -1
- package/dist/packem_shared/{tabs-xZkm6Y_J.js → tabs-zUSdR1HI.js} +1 -1
- package/dist/packem_shared/{use-measured-height-Lea6TCVD.js → use-measured-height-DyCBfLtu.js} +1 -1
- package/dist/packem_shared/{verify-cLcZwKqe.js → verify-BYzxSKWD.js} +1 -1
- package/dist/packem_shared/{vis-update-app-BCKzlqj8.js → vis-update-app-D0QyGneK.js} +1 -1
- package/dist/packem_shared/{watch-loop-BpA_pxU9.js → watch-loop-jmQQl2Qe.js} +2 -2
- package/index.js +52 -52
- package/package.json +10 -10
- package/schemas/vis-config.schema.json +34 -7
- package/dist/packem_shared/index-BnANMQ7k.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var D=Object.defineProperty;var f=(o,t)=>D(o,"name",{value:t,configurable:!0});import{E as d}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{p as n}from"./bin.js";import{s as b}from"../packem_shared/scan-progress-
|
|
1
|
+
var D=Object.defineProperty;var f=(o,t)=>D(o,"name",{value:t,configurable:!0});import{E as d}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{p as n}from"./bin.js";import{s as b}from"../packem_shared/scan-progress-lZdk5KJ-.js";import{s as y,D as h}from"../packem_shared/osv-bloom-0Vu8YRhg.js";var v=Object.defineProperty,a=f((o,t)=>v(o,"name",{value:t,configurable:!0}),"s");const w=a(o=>o?.security?.audit?.advisories?.bloom??{},"readBloomConfig"),p=a(o=>o>=1e3?`${(o/1e3).toFixed(1)}s`:`${Math.round(o)}ms`,"formatDuration"),$=a(o=>o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/(1024*1024)).toFixed(1)} MB`,"formatBytes"),B=a(async({options:o,visConfig:t,workspaceRoot:c})=>{if(!c)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const l=o.format==="json",m=w(t),u=o.source??m.source??h,s=b([{id:"bloom",label:"Sync osv-bloom prefilter"}],{live:!l});let e,r;try{s.start("bloom");const i=Date.now();e=await y({allowedHosts:m.allowedHosts,cacheDir:o.cacheDir,force:!!o.force,source:u,workspaceRoot:c}),e.upToDate?s.finish("bloom","ok",`up to date · ${p(Date.now()-i)}`):s.finish("bloom","ok",`${e.manifest.entryCount.toLocaleString()} entries · ${$(e.bytesOnDisk)} · ${p(e.durationMs)}`)}catch(i){r=i instanceof Error?i.message:String(i),s.finish("bloom","error",r)}finally{s.stop()}l?process.stdout.write(`${JSON.stringify({bytesOnDisk:e?.bytesOnDisk??0,cacheDir:e?.cacheDir??null,durationMs:e?.durationMs??0,error:r??null,manifest:e?.manifest??null,source:u,upToDate:e?.upToDate??!1},void 0,2)}
|
|
2
2
|
`):e&&(n.info(d(`Cache: ${e.cacheDir}`)),n.info(d(`Built: ${e.manifest.builtAtRfc3339}`)),r||n.success(e.upToDate?"osv-bloom prefilter up to date.":"osv-bloom prefilter synced.")),r&&(process.exitCode=1)},"execute"),x=B;export{x as advisoriesBloomSyncExecute};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var O=Object.defineProperty;var v=(e,t)=>O(e,"name",{value:t,configurable:!0});import{createRequire as q}from"node:module";import{j as $,E as P,e as R,q as D,T as j,I}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{z as _}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{r as W,a as B,b as L,c as w}from"../packem_shared/ai-fix-
|
|
1
|
+
var O=Object.defineProperty;var v=(e,t)=>O(e,"name",{value:t,configurable:!0});import{createRequire as q}from"node:module";import{j as $,E as P,e as R,q as D,T as j,I}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{z as _}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{r as W,a as B,b as L,c as w}from"../packem_shared/ai-fix-TsjDQz_0.js";import{p}from"./bin.js";import{l as N}from"../packem_shared/failure-log-Dxafk3t4.js";const A=q(import.meta.url),m=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,J=v(e=>{if(typeof m<"u"&&m.versions&&m.versions.node){const[t,r]=m.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return m.getBuiltinModule(e)}return A(e)},"__cjs_getBuiltinModule"),{createInterface:z}=J("node:readline");var M=Object.defineProperty,l=v((e,t)=>M(e,"name",{value:t,configurable:!0}),"c");const U={"ambiguous-match":"ambiguous match",applied:"applied",error:"error","missing-file":"missing file","no-match":"no match","outside-workspace":"outside workspace"},S=l((e,t,r)=>{const o=W(e,t,r),s=_(e,o);return s===""||s.startsWith("..")?o:s},"formatDisplayPath"),E=l((e,t,r)=>{const o=[$(`Fix proposal (${e.provider}, confidence: ${e.confidence})`),"",e.explanation||P("<no explanation>")];if(e.cannotFix)return o.push(""),o.push(R(`Cannot fix automatically: ${e.cannotFix}`)),o.join(`
|
|
2
2
|
`);if(e.patches.length===0)return o.push(""),o.push(R("No patches were proposed.")),o.join(`
|
|
3
3
|
`);o.push(""),o.push($(`Patches (${String(e.patches.length)}):`));for(const[s,i]of e.patches.entries()){const a=S(t,r,i.file);o.push(""),o.push(D(`[${String(s+1)}] ${a}`)),i.reason&&o.push(P(` reason: ${i.reason}`));for(const c of i.oldString.split(`
|
|
4
4
|
`))o.push(j(` - ${c}`));for(const c of i.newString.split(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var g=Object.defineProperty;var a=(e,i)=>g(e,"name",{value:i,configurable:!0});import{createRequire as _}from"node:module";import{M as n,l as u,B as p}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{E as $}from"./config.js";import{
|
|
1
|
+
var g=Object.defineProperty;var a=(e,i)=>g(e,"name",{value:i,configurable:!0});import{createRequire as _}from"node:module";import{M as n,l as u,B as p}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{E as $}from"./config.js";import{z as j}from"./bin.js";const b=_(import.meta.url),c=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,d=a(e=>{if(typeof c<"u"&&c.versions&&c.versions.node){const[i,s]=c.versions.node.split(".").map(Number);if(i>22||i===22&&s>=3||i===20&&s>=16)return c.getBuiltinModule(e)}return b(e)},"__cjs_getBuiltinModule"),{rmSync:y}=d("node:fs"),{homedir:r}=d("node:os"),{createInterface:w}=d("node:readline");var T=Object.defineProperty,m=a((e,i)=>T(e,"name",{value:i,configurable:!0}),"l");const f=j(),h=[n(r(),".zshrc"),n(r(),".zshenv"),n(r(),".bashrc"),n(r(),".bash_profile"),n(r(),".profile"),n(r(),".config","fish","config.fish")],E=m(e=>{const i=[];for(const s of h)if(u(s))try{const l=p(s).split(`
|
|
2
2
|
`),o=l.filter(t=>!t.includes(".vis/bin")&&!t.includes("VIS_HOME")&&!t.includes("# vis "));o.length!==l.length&&($(s,o.join(`
|
|
3
3
|
`)),i.push(s))}catch{e.warn(`warning: could not clean ${s}`)}return i},"cleanShellProfiles"),B=m(async({logger:e,options:i})=>{if(!u(f)){e.info("vis is not installed (no ~/.vis directory found).");return}e.info("This will remove:"),e.info(` ${f}/`);const s=h.filter(o=>u(o)&&p(o).includes(".vis"));for(const o of s)e.info(` Lines in ${o}`);if(!i.yes){if(!process.stdin.isTTY)throw new Error("Non-interactive terminal. Use --yes to confirm.");const o=w({input:process.stdin,output:process.stdout}),t=await new Promise(v=>{o.question(`
|
|
4
4
|
Type "uninstall" to confirm: `,v)});if(o.close(),t.trim()!=="uninstall"){e.info("Aborted.");return}}const l=E(e);for(const o of l)e.info(`Cleaned ${o}`);try{y(f,{force:!0,recursive:!0}),e.info(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var M=Object.defineProperty;var j=(o,s)=>M(o,"name",{value:s,configurable:!0});import{createRequire as N}from"node:module";import{l as b,M as d,z as P}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{H as v,E as w,j as K}from"./config.js";import{p as e}from"./bin.js";import{A as q}from"../packem_shared/pm-runner-DmKT2FqF.js";import{O as G}from"../packem_shared/build-scripts-DE6U8jVq.js";import{N as E}from"../packem_shared/native-config-sync-
|
|
1
|
+
var M=Object.defineProperty;var j=(o,s)=>M(o,"name",{value:s,configurable:!0});import{createRequire as N}from"node:module";import{l as b,M as d,z as P}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{H as v,E as w,j as K}from"./config.js";import{p as e}from"./bin.js";import{A as q}from"../packem_shared/pm-runner-DmKT2FqF.js";import{O as G}from"../packem_shared/build-scripts-DE6U8jVq.js";import{N as E}from"../packem_shared/native-config-sync-DBkJ-hsF.js";import{E as A}from"../packem_shared/min-release-age-DKMW2N_v.js";const B=N(import.meta.url),h=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,C=j(o=>{if(typeof h<"u"&&h.versions&&h.versions.node){const[s,t]=h.versions.node.split(".").map(Number);if(s>22||s===22&&t>=3||s===20&&t>=16)return h.getBuiltinModule(o)}return B(o)},"__cjs_getBuiltinModule"),{execFileSync:I}=C("node:child_process"),{createInterface:F}=C("node:readline");var L=Object.defineProperty,u=j((o,s)=>L(o,"name",{value:s,configurable:!0}),"f");const Y=u(o=>{const s=[];return b(d(o,"turbo.json"))&&s.push("turborepo"),b(d(o,"nx.json"))&&s.push("nx"),b(d(o,".moon"))&&s.push("moon"),s},"detectExistingTools"),T=u((o,s)=>new Promise(t=>{o.question(s,i=>{t(i.trim())})}),"ask"),m=u(async(o,s,t=!0)=>{const i=await T(o,`${s} ${t?"[Y/n]":"[y/N]"} `);return i===""?t:i.toLowerCase()==="y"||i.toLowerCase()==="yes"},"confirm"),k=u((o,s)=>{const t=[],i=Object.entries(s.allowBuilds).filter(([,l])=>l).map(([l])=>` "${l}": true,`).join(`
|
|
2
2
|
`),a=[` 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/Table-3pFgIUZ2-DABgc6rj.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-
|
|
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/Table-3pFgIUZ2-DABgc6rj.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-adnHbyTd.js";import{g as O,a as V,r as F}from"../packem_shared/provenance-Cu6VR1Hy.js";import{r as I}from"../packem_shared/signatures-FGbYV5QE.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 O=Object.defineProperty;var $=(s,a)=>O(s,"name",{value:a,configurable:!0});import{createRequire as A}from"node:module";import{E,T as N,e as z,I as M}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{s as B,d as U}from"./config.js";import{l as V,
|
|
1
|
+
var O=Object.defineProperty;var $=(s,a)=>O(s,"name",{value:a,configurable:!0});import{createRequire as A}from"node:module";import{E,T as N,e as z,I as M}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{s as B,d as U}from"./config.js";import{l as V,a0 as C,a1 as J,p as f,a2 as x,a3 as K,a4 as Q,f as W,C as Y,T as G,a as H,a5 as X,i as P,c as Z,a6 as ee}from"./bin.js";import{M as oe}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{y as se,R as te,P as ne}from"../packem_shared/pm-runner-DmKT2FqF.js";import{r as D,a as ae,b as re,p as ie}from"../packem_shared/resolve-explicit-Xue0oq8V.js";import{r as ce}from"../packem_shared/typosquats-acxQ7blw.js";import{d as T,o as R}from"../packem_shared/utils-DrNg0XTR.js";const L=A(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 L(s)},"__cjs_getBuiltinModule"),{createInterface:I}=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=V(o),t=`${String(Math.round(o*100))}%`,p=i.alerts.length,c=C(i),l=J(c,i.version,e),u=n==="red"?N:n==="yellow"?z:M;if(l?f.info(` ${u(t)} ${x(i)} ${E(`[accepted: ${l.reason}]`)}`):f.info(` ${u(t)} ${x(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=I({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} (${K(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=Q(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 W(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"),_=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}=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=_(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}=Y(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}=G(t),d=H(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:X(l,{useEditorconfig:n?.editorconfig??!0}),overwrite:!0});for(const k of y){const q=_(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"),Te=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=>T(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;P("socket")&&l.add("socket"),P("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&&R(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:R(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{Te as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var S=Object.defineProperty;var p=(t,a)=>S(t,"name",{value:a,configurable:!0});import{readLastRunSummary as v,getLastRunSummaryPath as x}from"@visulima/task-runner";import{p as c,
|
|
1
|
+
var S=Object.defineProperty;var p=(t,a)=>S(t,"name",{value:a,configurable:!0});import{readLastRunSummary as v,getLastRunSummaryPath as x}from"@visulima/task-runner";import{p as c,E as $,F as l,H as I,I as y}from"./bin.js";var w=Object.defineProperty,n=p((t,a)=>w(t,"name",{value:a,configurable:!0}),"s");const T=new Set(["json","table"]),C=n((t,a)=>t??a,"resolveWorkspaceRoot"),h=n(t=>t===void 0?"-":t<1e3?`${String(t)}ms`:`${(t/1e3).toFixed(2)}s`,"formatDuration"),k=n(t=>t.exitCode===void 0?t.cacheStatus:t.exitCode===0?t.cacheStatus==="MISS"?"OK":t.cacheStatus:`FAIL(${String(t.exitCode)})`,"formatStatus"),o=n((t,a)=>t.length>=a?t:t+" ".repeat(a-t.length),"padCell"),R=n(t=>t.exitCode!==void 0&&t.exitCode!==0,"isFailedTask"),g=n((t,a)=>{a.info(`Run ${t.id}`),a.info(` start: ${t.startTime}`),a.info(` end: ${t.endTime}`),a.info(` duration: ${h(t.duration)}`),a.info(` totals: ${String(t.stats.total)} total · ${String(t.stats.succeeded)} ok · ${String(t.stats.cached)} cached · ${String(t.stats.skipped)} skipped · ${String(t.stats.failed)} failed`),a.info(` env: node ${t.environment.nodeVersion} · ${t.environment.platform}/${t.environment.arch}`),a.info("")},"renderRunHeader"),D=n((t,a)=>{if(t.length===0){a.info("(no tasks match the current filter)");return}const s=t.map(e=>({duration:h(e.duration),hash:e.hash?e.hash.slice(0,12):"-",status:k(e),taskId:e.taskId})),r={duration:Math.max(8,...s.map(e=>e.duration.length)),hash:Math.max(4,...s.map(e=>e.hash.length)),status:Math.max(6,...s.map(e=>e.status.length)),taskId:Math.max(4,...s.map(e=>e.taskId.length))};a.info(` ${o("task",r.taskId)} ${o("status",r.status)} ${o("duration",r.duration)} ${o("hash",r.hash)}`),a.info(` ${"-".repeat(r.taskId)} ${"-".repeat(r.status)} ${"-".repeat(r.duration)} ${"-".repeat(r.hash)}`);for(const e of s)a.info(` ${o(e.taskId,r.taskId)} ${o(e.status,r.status)} ${o(e.duration,r.duration)} ${o(e.hash,r.hash)}`)},"renderTaskTable"),j=n((t,a,s)=>{g(t,s),s.info(`Task ${a.taskId}`),s.info(` status: ${k(a)}`),s.info(` cache: ${a.cacheStatus}`),s.info(` duration: ${h(a.duration)}`),s.info(` exit: ${a.exitCode===void 0?"-":String(a.exitCode)}`),s.info(` hash: ${a.hash??"(none)"}`),s.info(` start: ${a.startTime??"-"}`),s.info(` end: ${a.endTime??"-"}`),a.dependencies.length>0&&s.info(` deps: ${a.dependencies.join(", ")}`),s.info(""),c.info(`Drill into hash inputs with: vis cache why ${a.taskId} --run ${t.id}`)},"renderTaskDetail"),M=n(t=>{process.stdout.write(`${JSON.stringify(t.map(a=>({id:a.id,mtime:new Date(a.mtimeMs).toISOString(),path:a.path})),void 0,2)}
|
|
2
2
|
`)},"renderListJson"),O=n((t,a,s)=>{if(t.length===0){c.info(`No recorded runs found in ${$(a)}/. Run with --summarize to record a run.`);return}const r={id:Math.max(2,...t.map(e=>e.id.length)),mtime:24};s.info(` ${o("id",r.id)} ${o("mtime",r.mtime)}`),s.info(` ${"-".repeat(r.id)} ${"-".repeat(r.mtime)}`);for(const e of t)s.info(` ${o(e.id,r.id)} ${new Date(e.mtimeMs).toISOString()}`)},"renderListTable"),b=n((t,a)=>{let{tasks:s}=t;return a.task!==void 0&&(s=s.filter(r=>r.taskId===a.task)),a.failed&&(s=s.filter(r=>R(r))),s},"filterTasks"),N=n(async(t,a)=>{const{failed:s,format:r,runId:e,task:d,workspaceRoot:u}=t,i=e===void 0?await v(u,{dataDirectory:l(u)}):await I(u,e);if(!i){if(r==="json"){process.stdout.write(`${JSON.stringify({error:"no-summary",runId:e??null},void 0,2)}
|
|
3
3
|
`),process.exitCode=1;return}e===void 0?c.error(`No previous run summary found. Run a task first to populate \`${x(u,{dataDirectory:l(u)})}\`.`):c.error(`Run summary "${e}" not found in ${$(u)}/.`),process.exitCode=1;return}const f=b(i,{failed:s,task:d});if(d!==void 0&&f.length===0){if(r==="json"){process.stdout.write(`${JSON.stringify({error:"task-not-in-summary",runId:i.id,taskId:d},void 0,2)}
|
|
4
4
|
`),process.exitCode=1;return}c.error(`Task "${d}" was not part of run ${i.id}.`),process.exitCode=1;return}if(i.stats.failed>0&&(process.exitCode=1),r==="json"){process.stdout.write(`${JSON.stringify({duration:i.duration,endTime:i.endTime,environment:i.environment,runId:i.id,startTime:i.startTime,stats:i.stats,tasks:f.map(m=>({cacheStatus:m.cacheStatus,dependencies:m.dependencies,duration:m.duration,endTime:m.endTime,exitCode:m.exitCode,hash:m.hash??null,startTime:m.startTime,taskId:m.taskId}))},void 0,2)}
|
|
@@ -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 C}from"./config.js";import{C as B,K as S}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{C as R,S as O,p as u}from"./bin.js";import{b as T,s as q}from"../packem_shared/cyclonedx-
|
|
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 C}from"./config.js";import{C as B,K as S}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{C as R,S as O,p as u}from"./bin.js";import{b as T,s as q}from"../packem_shared/cyclonedx-zf9R2jCs.js";const h=y(import.meta.url),r=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,$=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: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=O(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);C(S(i)),k(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,
|
|
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)?
|
|
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,O as A,C as H,Q as U,U as L,W as O,Y as P}from"./bin.js";import{c as D,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-DvVTL8nx.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:y,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=D();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=U(o,i.root,a.options?.runFromWorkspaceRoot===!0),v=a.options?.envFile?L(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"),S=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 S({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 S({graceMs:t,hookSink:i,id:n,workspaceRoot:s})||(process.exitCode=1)},"serviceStopExecute"),Q=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
|
+
`);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)?O(u,n):"?",id:l.id,log:l.logFile,pid:String(l.pid),port:Q(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"),Y=200,K=1024*1024,X=g(async o=>{let e=0;try{e=(await y(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 y(o).catch(()=>{});if(!a||(a.size<e&&(e=0),a.size===e))return;const p=a.size-e,f=Math.min(p,K),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,Y);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 P(t.logFile)){c.warn(`Log file is missing for ${s}: ${t.logFile}`),process.exitCode=1;return}if(e.follow===!0){await X(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 R=Object.defineProperty;var $=(e,t)=>R(e,"name",{value:t,configurable:!0});import{createRequire as T}from"node:module";import{I as f,T as b,E as x,e as _}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{l as V,M as
|
|
1
|
+
var R=Object.defineProperty;var $=(e,t)=>R(e,"name",{value:t,configurable:!0});import{createRequire as T}from"node:module";import{I as f,T as b,E as x,e as _}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{l as V,M as E}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{s as F}from"./config.js";import{enforceProjectConstraints as I}from"@visulima/task-runner";import{C as P,S as z,$ as B,E as J}from"./bin.js";import{c as K}from"../packem_shared/runtime-check-CilFOqUU.js";const w=T(import.meta.url),n=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,M=$(e=>{if(typeof n<"u"&&n.versions&&n.versions.node){const[t,i]=n.versions.node.split(".").map(Number);if(t>22||t===22&&i>=3||t===20&&i>=16)return n.getBuiltinModule(e)}return w(e)},"__cjs_getBuiltinModule"),{readdirSync:q}=M("node:fs");var N=Object.defineProperty,v=$((e,t)=>N(e,"name",{value:t,configurable:!0}),"h");const r=v(e=>e?f("✓"):b("✗"),"icon"),X=v(async({logger:e,options:t,visConfig:i,workspaceRoot:s})=>{if(!s)throw new Error("Could not determine workspace root.");const{config:j,packageJsons:C,workspace:u}=P(s,i),O=z(s,u,C),y=Object.keys(u.projects).length,S=new Set(Object.values(u.projects).flatMap(p=>Object.keys(p.targets??{}))).size,a=K(s);let o=0;j.constraints&&(o=I(O,j.constraints).length);const c=B(s,{minRuns:2});let l;const g=J(s);if(V(g)){const p=q(g).filter(h=>h.endsWith(".json")).sort();let m=0,k=0;for(const h of p.slice(-20))try{const d=F(E(g,h));d.stats&&(m+=d.stats.total??0,k+=d.stats.cached??0)}catch{continue}m>0&&(l=`${(k/m*100).toFixed(0)}%`)}if(t.json){e.info(JSON.stringify({cacheHitRate:l??null,constraintViolations:o,flakyTasks:c.length,projects:y,runtimeIssues:a.length,targets:S},null,2));return}e.info(""),e.info(` ${x("VIS STATUS")}`),e.info(""),e.info(` ${r(!0)} ${String(y)} projects · ${String(S)} unique targets`),e.info(` ${r(a.length===0)} Runtime: ${a.length===0?f("OK"):_(`${String(a.length)} issue(s)`)}`),e.info(` ${r(o===0)} Constraints: ${o===0?f("OK"):b(`${String(o)} violation(s)`)}`),e.info(` ${r(c.length===0)} Flaky tasks: ${c.length===0?f("none"):_(String(c.length))}`),l&&e.info(` ${r(!0)} Cache hit rate: ${l} (last 20 runs)`),e.info("")},"execute");export{X 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-
|
|
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-di3jpyZS.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,4 +1,4 @@
|
|
|
1
|
-
var x=Object.defineProperty;var l=(e,o)=>x(e,"name",{value:o,configurable:!0});import{b as h,h as E,_ as S,R as v}from"../packem_shared/ai-analysis-
|
|
1
|
+
var x=Object.defineProperty;var l=(e,o)=>x(e,"name",{value:o,configurable:!0});import{b as h,h as E,_ as S,R as v}from"../packem_shared/ai-analysis-3QD_RS6F.js";import{d as w,R as D,y as P}from"./bin.js";import{j as I,E as d,q as R,I as j,e as N}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";var C=Object.defineProperty,u=l((e,o)=>C(e,"name",{value:o,configurable:!0}),"s");const f={command:"ai",description:"AI-assisted commands: provider detection, cache management, and failure-fix proposals."},O=u(e=>{if(typeof e!="function")return String(e);const{name:o}=e;return o==="Boolean"?"boolean":o==="Number"?"number":o==="String"?"string":o??"unknown"},"typeName"),A=u(e=>{const o=[...e.commandPath??[],e.name].join(" "),i=(e.examples??[]).map(([a,s])=>({command:a??"",description:s??""})),t=(e.options??[]).map(a=>({defaultValue:a.defaultValue,description:a.description,name:a.name,type:O(a.type)}));return{argument:e.argument?{description:e.argument.description,name:e.argument.name}:void 0,description:e.description??"",examples:i,name:e.name,options:t,path:o}},"buildSubcommand"),g=u((e,o=f)=>({command:o.command,description:o.description,subcommands:e.map(i=>A(i))}),"buildDiscoveryPayload"),J=u((e,o=f)=>`${JSON.stringify(g(e,o),void 0,2)}
|
|
2
2
|
`,"renderDiscoveryJson"),T=u((e,o=f)=>{const i=g(e,o),t=[I(`vis ${i.command} — ${i.description}`),"",d("Subcommands:")];for(const a of i.subcommands){const s=a.argument?` ${R(`<${a.argument.name}>`)}`:"";if(t.push(""),t.push(` ${j(`vis ${a.path}`)}${s}`),a.description&&t.push(` ${a.description}`),a.options.length>0){const n=a.options.map(c=>`--${c.name}${c.type==="boolean"?"":`=<${c.type}>`}`).join(", ");t.push(d(` options: ${n}`))}if(a.examples.length>0){t.push(d(" examples:"));for(const n of a.examples){const c=n.description?d(` — ${n.description}`):"";t.push(` ${N(n.command)}${c}`)}}}return t.push(""),t.push(d(`Run \`vis ${i.command} discover-help\` for the machine-readable JSON catalogue (designed for AI agents).`)),t.push(d(`Run \`vis ${i.command} <subcommand> --help\` for full usage of a specific subcommand.`)),`${t.join(`
|
|
3
3
|
`)}
|
|
4
4
|
`},"renderDiscoveryText");var F=Object.defineProperty,p=l((e,o)=>F(e,"name",{value:o,configurable:!0}),"r");const y=p(async()=>{const{default:e}=await import("./bin.js").then(o=>o.c6);return e.filter(o=>o.name!=="ai")},"loadDiscoverableSubcommands"),q=p(async()=>{const e=await y();process.stderr.write(T(e))},"aiRootExecute"),B=p(async()=>{const e=await y();process.stdout.write(J(e))},"aiDiscoverHelpExecute"),K=p(async({logger:e,visConfig:o})=>{const i=o?.ai,t=h(i);if(!t){e.error("No AI provider available to test."),process.exitCode=1;return}e.info(`Testing ${t.name}...`);try{const a=await E(t,"Reply with exactly: OK",{timeoutMs:3e4});e.info(`Provider ${t.name} responded: ${a.stdout.trim().slice(0,200)}`)}catch(a){const s=a instanceof Error?a.message:String(a);e.error(`Provider ${t.name} failed: ${s}`),process.exitCode=1}},"aiTestExecute"),L=p(({logger:e,options:o,visConfig:i})=>{const t=o.format??"table",a=i?.ai,s=S(),n=h(a);if(t==="json"){const r=s.map(m=>({available:m.available,method:m.detectionMethod,name:m.name,path:m.path,priority:v[m.name]??0,selected:m.name===n?.name,version:m.version}));process.stdout.write(`${JSON.stringify(r,void 0,2)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var R=Object.defineProperty;var $=(n,t)=>R(n,"name",{value:t,configurable:!0});import{T as P,a as T,N as x,b,K as j,_ as S,v as z,c as A,f as M}from"./bin.js";import{H as O,e as U,Z as q}from"../packem_shared/ai-analysis-
|
|
1
|
+
var R=Object.defineProperty;var $=(n,t)=>R(n,"name",{value:t,configurable:!0});import{T as P,a as T,N as x,b,K as j,_ as S,v as z,c as A,f as M}from"./bin.js";import{H as O,e as U,Z as q}from"../packem_shared/ai-analysis-3QD_RS6F.js";var F=Object.defineProperty,H=$((n,t)=>F(n,"name",{value:t,configurable:!0}),"x");const J=/^[\^~>=<]+/,Z=H(async({argument:n,logger:t,options:l,visConfig:u,workspaceRoot:f})=>{if(!f)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");const m=n,e=m[0];if(!e)throw new Error("Package name is required. Usage: vis analyze <package> [version]");const p=m[1],{packageManager:E}=P(f);let r,d="default";const C=T(f,E);for(const[o,i]of C){const s=i.get(e);if(s){r=s,d=o;break}}if(!r)throw new Error(`Package "${e}" not found in any catalog or package.json. Make sure it exists in your workspace dependencies.`);let a;if(p)a=p;else{t.info(`Fetching latest version for ${e}...
|
|
2
2
|
`);const o=await x(e);if(!o.latest)throw new Error(`Could not determine latest version for "${e}".`);a=o.latest}const w=b(r),v=b(a);if(!w||!v)throw new Error(`Could not parse versions: current="${r}", target="${a}".`);const k=j(w,v);if(k==="none"){t.info(`${e} is already at ${a}. Nothing to analyze.`);return}const N=S(r),g={catalogName:d,currentRange:r,newRange:`${N}${a}`,packageName:e,targetVersion:a,updateType:k},y=O(l.aiType??"impact");if(y==="security"||l.security){t.info(`Checking for known vulnerabilities...
|
|
3
3
|
`);const o=r.replace(J,""),i=(await z([{name:e,version:o}])).get(e);i&&i.length>0&&(g.vulnerabilities=i);const s=A(u?.security,{minimumScore:u?.security?.policies?.score?.minimum});if(s.length>0){const c=(await M(s,[{name:e,version:o}])).get(`${e}@${o}`);c&&(g.socketReport={alerts:c.alerts,license:c.license,score:c.score})}}const h=await U([g],t,u?.ai,y);(l.format??"table")==="json"?process.stdout.write(`${JSON.stringify(h,void 0,2)}
|
|
4
4
|
`):t.info(q(h))},"execute");export{Z 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{l as D,B as V}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{j as E,E as v}from"./config.js";import{p as e}from"./bin.js";import{A as q}from"../packem_shared/pm-runner-DmKT2FqF.js";import{x as M}from"../packem_shared/build-scripts-DE6U8jVq.js";import{N as F}from"../packem_shared/native-config-sync-
|
|
1
|
+
var R=Object.defineProperty;var k=(n,t)=>R(n,"name",{value:t,configurable:!0});import{createRequire as B}from"node:module";import{l as D,B as V}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{j as E,E as v}from"./config.js";import{p as e}from"./bin.js";import{A as q}from"../packem_shared/pm-runner-DmKT2FqF.js";import{x as M}from"../packem_shared/build-scripts-DE6U8jVq.js";import{N as F}from"../packem_shared/native-config-sync-DBkJ-hsF.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=E(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 +1 @@
|
|
|
1
|
-
var J=Object.defineProperty;var T=(e,t)=>J(e,"name",{value:t,configurable:!0});import{z as S}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{
|
|
1
|
+
var J=Object.defineProperty;var T=(e,t)=>J(e,"name",{value:t,configurable:!0});import{z as S}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{ai as q,C as b}from"./bin.js";import{f as $}from"../packem_shared/selectors-DkgYFzdq.js";import{o as L}from"../packem_shared/index-DH-5hsrC.js";var M=Object.defineProperty,I=T((e,t)=>M(e,"name",{value:t,configurable:!0}),"p");const D=I((e,t)=>{for(const f of t)if(L(f,e))return!0;return!1},"matchesAny"),z=I((e,t={})=>{const{depTypes:f,excludePatterns:l,externalOnly:y,includePatterns:d,internalOnly:j}=t;if(j&&y)return[];const u=f&&f.length>0?new Set(f):void 0,N=d&&d.length>0?d:void 0,O=l&&l.length>0?l:void 0,w=[];for(const m of e)j&&!m.isInternal||y&&m.isInternal||u&&!u.has(m.depType)||N&&(!m.packageName||!D(m.packageName,N))||O&&m.packageName&&D(m.packageName,O)||w.push(m);return w},"filterDepInstances");var B=Object.defineProperty,v=T((e,t)=>B(e,"name",{value:t,configurable:!0}),"y");const F=new Set(["json","ndjson","table"]),R=v(e=>{if(e===void 0)return"table";const t=e.toLowerCase();if(!F.has(t))throw new Error(`--format must be one of: table, json, ndjson (got "${e}")`);return t},"resolveFormat"),x=v((e,t)=>({depName:e.depName,depType:e.depType,isInternal:e.isInternal,packageDir:e.packageDir,packageJsonPath:S(t,e.packageJsonPath),packageName:e.packageName,specifier:e.specifier}),"toDepRecord"),P=new Set(["dependencies","devDependencies","optionalDependencies","overrides","peerDependencies","pnpm.overrides","resolutions"]),V=v(e=>{if(!e||e.length===0)return;const t=[],f=[];for(const l of e)for(const y of l.split(",")){const d=y.trim();d&&(P.has(d)?t.push(d):f.push(d))}if(f.length>0)throw new Error(`Unknown --dep-type value(s): ${f.join(", ")}. Valid: ${[...P].join(", ")}`);return t.length>0?t:void 0},"parseDepTypes"),H=v(async({logger:e,options:t,visConfig:f,workspaceRoot:l})=>{if(!l)throw new Error("Could not determine workspace root.");const y=R(t.format);if(t.deps===!0){if(t.internalOnly&&t.externalOnly)throw new Error("--internal-only and --external-only are mutually exclusive");const c=V(t.depType),i=q(l);let n=z(i,{depTypes:c,excludePatterns:t.exclude,externalOnly:t.externalOnly,includePatterns:t.include,internalOnly:t.internalOnly});if(t.query){const{workspace:r}=b(l,f),p=new Set($(Object.keys(r.projects),r,t.query));n=n.filter(k=>k.packageName!==void 0&&p.has(k.packageName))}const g=[...n].sort((r,p)=>{const k=`${r.packageName??r.packageDir} ${r.depType} ${r.depName}`,E=`${p.packageName??p.packageDir} ${p.depType} ${p.depName}`;return k.localeCompare(E)});if(y==="ndjson"){for(const r of g)e.info(JSON.stringify(x(r,l)));return}if(y==="json"){const r=g.map(p=>x(p,l));e.info(JSON.stringify(r,null,t.pretty===!0?2:void 0));return}if(g.length===0){e.info("No matching dep-instances.");return}const a=["Package","Block","Dep","Specifier","Internal","Path"],o=g.map(r=>[r.packageName??r.packageDir,r.depType,r.depName,r.specifier,r.isInternal?"yes":"no",S(l,r.packageJsonPath)]),s=a.map((r,p)=>Math.max(r.length,...o.map(k=>(k[p]??"").length))),h=v((r,p)=>r.padEnd(p),"pad");e.info(a.map((r,p)=>h(r,s[p])).join(" ")),e.info(s.map(r=>"─".repeat(r)).join("──"));for(const r of o)e.info(r.map((p,k)=>h(p,s[k])).join(" "));e.info(""),e.info(`${String(g.length)} dep-instance(s)`);return}if(y==="ndjson")throw new Error("--format=ndjson is only supported with --deps");const{projectOptions:d,workspace:j}=b(l,f);let u=Object.keys(j.projects).sort();if(t.query&&(u=$(u,j,t.query)),u.length===0){e.info("No projects found.");return}const N=t.inferred===!0,O=t.targets===!0||N;if(y==="json"){const c=u.map(i=>{const n=j.projects[i],g=d.get(i)??{},a=Object.entries(n.targets??{}).map(([o])=>{const s=g[o],h=s?.inferred===!0;return{aliases:s?.aliases??[],command:s?.command,description:s?.description,...h?{inferred:!0}:{},name:o,type:s?.type}}).filter(o=>!N||o.inferred===!0);return{language:n.language,layer:n.layer,name:i,root:n.root,stack:n.stack,tags:n.tags??[],targets:a,type:n.projectType??"library"}});e.info(JSON.stringify(c,null,2));return}const w=v((c,i)=>{const n=c.map((a,o)=>{let s=0;for(const h of i)s=Math.max(s,(h[o]??"").length);return Math.max(a.length,s)}),g=v((a,o)=>a.padEnd(o),"pad");e.info(c.map((a,o)=>g(a,n[o])).join(" ")),e.info(n.map(a=>"─".repeat(a)).join("──"));for(const a of i)e.info(a.map((o,s)=>g(o,n[s])).join(" "))},"renderTable");if(O){const c=[];for(const i of u){const n=j.projects[i],g=d.get(i)??{};for(const a of Object.keys(n.targets??{}).sort()){const o=g[a],s=o?.inferred===!0;if(N&&!s)continue;const h=n.targets?.[a],r=h?.cache===!1?"no":h?.cache===!0?"yes":"default";c.push([i,a,o?.type??"—",r,s?"yes":"no",o?.description??"—"])}}if(c.length===0){e.info(N?"No inferred targets found.":"No targets found.");return}w(["Project","Target","Type","Cache","Inferred","Description"],c),e.info(""),e.info(`${String(c.length)} target(s) across ${String(u.length)} project(s)`);return}const m=["Project","Type","Layer","Tags","Targets"],C=u.map(c=>{const i=j.projects[c],n=Object.keys(i.targets??{});return[c,i.projectType??"library",i.layer??"—",(i.tags??[]).join(", ")||"—",n.length>4?`${n.slice(0,4).join(", ")}… (${String(n.length)})`:n.join(", ")||"—"]});w(m,C),e.info(""),e.info(`${String(u.length)} project(s)`)},"execute");export{H as default};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var
|
|
1
|
+
var W=Object.defineProperty;var R=(e,t)=>W(e,"name",{value:t,configurable:!0});import{createRequire as J}from"node:module";import{t as L,m as Q,ap as I,aq as B,ar as K,as as Y,at as g,au as H,av as U,aw as X,ax as Z,ay as ee,az as te,aA as oe,aB as ne,aC as se,aD as ie,aE as re,aF as ae}from"./bin.js";import{l as $,B as T,M as d,Q as pe}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{e as fe,E as A}from"./config.js";import{v as le}from"../packem_shared/verify-BYzxSKWD.js";const G=J(import.meta.url),E=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,z=R(e=>{if(typeof E<"u"&&E.versions&&E.versions.node){const[t,n]=E.versions.node.split(".").map(Number);if(t>22||t===22&&n>=3||t===20&&n>=16)return E.getBuiltinModule(e)}return G(e)},"__cjs_getBuiltinModule"),{readdirSync:ce,statSync:ue}=z("node:fs"),{stdin:_,stdout:ge}=E,{createInterface:de}=z("node:readline/promises");var me=Object.defineProperty,p=R((e,t)=>me(e,"name",{value:t,configurable:!0}),"u");const x="__global__",b=p(e=>[...new Set(e)].sort((t,n)=>t.localeCompare(n)),"sortStrings"),ve=p(e=>`{${Object.keys(e).sort().map(t=>`${t}=${JSON.stringify(e[t])}`).join(",")}}`,"canonicalizeObjectToken"),h=p(e=>{if(!Array.isArray(e))return[];const t=[];for(const n of e)typeof n=="string"?t.push(n):n&&typeof n=="object"&&t.push(ve(n));return b(t)},"normalizeTokenList"),w=p(e=>({cache:void 0,dependsOn:[],env:[],id:e,inputs:[],outputs:[]}),"emptyNode"),k=p((e,t,n)=>n?`^${t}`:e&&e!=="self"&&e!=="~"?`${e}#${t}`:t,"canonicalEdge"),ye=p((e,t)=>{const n=e.trim();if(t==="moon"){if(n.startsWith("^:"))return k(void 0,n.slice(2),!0);if(n.startsWith("~:"))return k(void 0,n.slice(2),!1);if(n.includes(":")){const[s,o]=n.split(":");return k(s,o??"",!1)}return n}if(n.startsWith("^"))return k(void 0,n.slice(1),!0);if(n.includes("#")){const[s,o]=n.split("#");return k(s,o??"",!1)}return n},"normalizeStringEdge"),M=p((e,t)=>{if(!Array.isArray(e))return[];const n=[];for(const s of e){if(typeof s=="string"){n.push(ye(s,t));continue}if(!s||typeof s!="object")continue;const o=s,{target:i}=o;if(!i)continue;if(o.dependencies===!0){n.push(k(void 0,i,!0));continue}if(o.projects===void 0){n.push(k(void 0,i,!1));continue}const r=Array.isArray(o.projects)?o.projects:[o.projects];for(const c of r)n.push(c==="^"?k(void 0,i,!0):k(c,i,!1))}return b(n)},"normalizeDependsOn"),O=p(e=>{if($(e))try{return JSON.parse(T(e))}catch{return}},"readJson"),he=p(e=>{const t=new Map,n=O(d(e,"turbo.json"));if(!n)return t;const s=n.tasks??n.pipeline??{};for(const[i,r]of Object.entries(s)){const c=i.includes("#")?i:`*#${i}`,a=w(c);a.dependsOn=M(r.dependsOn,"turbo"),a.inputs=h(r.inputs),a.outputs=h(r.outputs),a.env=b([...r.env??[],...r.passThroughEnv??[]]),a.cache=r.cache===!1?!1:void 0,t.set(c,a)}const o=w(x);return o.inputs=h(n.globalDependencies),o.env=b([...n.globalEnv??[],...n.globalPassThroughEnv??[]]),(o.inputs.length>0||o.env.length>0)&&t.set(x,o),t},"parseTurboModel"),ke=new Set([".git",".nx",".turbo",".vis","build","coverage","dist","node_modules"]),N=p((e,t,n=8)=>{const s=[],o=p((i,r)=>{if(r>n)return;let c;try{c=ce(i)}catch{return}for(const a of c.toSorted()){if(a===t){s.push(d(i,a));continue}if(a.startsWith(".")&&a!==".moon"||ke.has(a))continue;const u=d(i,a);try{ue(u).isDirectory()&&o(u,r+1)}catch{}}},"walk");return o(e,0),s},"findFiles"),D=p((e,t)=>{e.dependsOn=M(t.dependsOn,"nx"),e.inputs=h(t.inputs),e.outputs=h(t.outputs),e.cache=typeof t.cache=="boolean"?t.cache:void 0},"applyNxTarget"),we=p(e=>{const t=new Map,n=O(d(e,"nx.json"));for(const[s,o]of Object.entries(n?.targetDefaults??{})){const i=`*#${s}`,r=w(i);D(r,o),t.set(i,r)}for(const s of N(e,"project.json")){const o=O(s);if(!(!o?.name||!o.targets))for(const[i,r]of Object.entries(o.targets)){const c=`${o.name}#${i}`,a=w(c);D(a,r),t.set(c,a)}}return t},"parseNxModel"),V=p((e,t)=>{e.dependsOn=M(t.deps,"moon"),e.inputs=h(t.inputs),e.outputs=h(t.outputs),e.cache=typeof t.options?.cache=="boolean"?t.options.cache:void 0},"applyMoonTask"),q=p(e=>{if($(e))try{return L(e)}catch{return}},"readMoonYaml"),$e=p(e=>{const t=new Map,n=d(e,".moon"),s=[d(n,"tasks.yml"),d(n,"tasks.yaml")];for(const o of s){const i=q(o);if(i){for(const[r,c]of Object.entries(i.tasks??{})){const a=`*#${r}`,u=w(a);V(u,c),t.set(a,u)}if(i.implicitInputs&&i.implicitInputs.length>0){const r=w(x);r.inputs=h(i.implicitInputs),t.set(x,r)}}}for(const o of[...N(e,"moon.yml"),...N(e,"moon.yaml")]){const i=q(o);if(!i?.tasks)continue;const r=o.split(/[/\\]/).at(-2)??"*";for(const[c,a]of Object.entries(i.tasks)){const u=`${r}#${c}`,y=w(u);V(y,a),t.set(u,y)}}return t},"parseMoonModel"),xe=p((e,t)=>{e.dependsOn=M(t.dependsOn,"vis"),e.inputs=h(t.inputs),e.outputs=h(t.outputs),e.env=b([...t.env??[],...t.passThroughEnv??[],...t.options?.passThroughEnv??[]]),e.cache=t.cache===!1?!1:typeof t.cache=="boolean"?t.cache:void 0},"applyVisTask"),be=p(async e=>{const t=new Map,n=await fe(e);for(const[i,r]of Object.entries(n.tasks??{})){const c=`*#${i}`,a=w(c);xe(a,r??{}),t.set(c,a)}const s=n.taskRunner??{},o=w(x);return o.inputs=h(s.globalInputs),o.env=b([...s.globalEnv??[],...s.globalPassThroughEnv??[]]),(o.inputs.length>0||o.env.length>0)&&t.set(x,o),t},"buildVisModel"),Re=p((e,t)=>{switch(t){case"moon":return $e(e);case"nx":return we(e);default:return he(e)}},"buildSourceModel"),Ee=p(e=>{const t=[];return $(d(e,"turbo.json"))&&t.push("turbo"),$(d(e,"nx.json"))&&t.push("nx"),($(d(e,".moon","tasks.yml"))||$(d(e,".moon","tasks.yaml")))&&t.push("moon"),t.length===1?t[0]:void 0},"detectSourceTool"),j=p((e,t,n,s,o)=>{const i=s.filter(a=>!o.includes(a)),r=o.filter(a=>!s.includes(a));if(i.length===0&&r.length===0)return;const c=[];i.length>0&&c.push(`dropped [${i.join(", ")}]`),r.length>0&&c.push(`added [${r.join(", ")}]`),e.push({axis:n,detail:`${n} diverged: ${c.join("; ")}`,node:t,severity:i.length>0?"error":"warning"})},"diffArrayAxis"),Ce=p((e,t,n)=>{const s=[],o=b([...e.keys(),...t.keys()]);for(const i of o){const r=e.get(i),c=t.get(i);if(r&&!c){const a=n==="turbo"&&i.includes("#")&&!i.startsWith("*#")&&i!==x;s.push({axis:"target-set",detail:a?`source target \`${i}\` was skipped by design (turbo project#task is migrated into per-project project.json — move it there and re-verify)`:`source target \`${i}\` has no equivalent in the migrated vis config`,node:i,severity:a?"warning":"error"});continue}if(!r&&c){s.push({axis:"target-set",detail:`migrated vis config defines \`${i}\` with no source equivalent (extra target — not a regression, but review)`,node:i,severity:"warning"});continue}!r||!c||(j(s,i,"dependsOn",r.dependsOn,c.dependsOn),j(s,i,"inputs",r.inputs,c.inputs),j(s,i,"outputs",r.outputs,c.outputs),j(s,i,"env",r.env,c.env),r.cache!==void 0&&c.cache!==void 0&&r.cache!==c.cache&&s.push({axis:"cache",detail:`cache flag diverged: source=${String(r.cache)} vis=${String(c.cache)} (changes what invalidates the cache)`,node:i,severity:"error"}))}return s.sort((i,r)=>i.node.localeCompare(r.node)||i.axis.localeCompare(r.axis)),{findings:s,source:n,sourceNodeCount:e.size,visNodeCount:t.size}},"diffModels"),Se=new Set(["json","ndjson","table"]),je=p(e=>({equivalent:e.findings.every(t=>t.severity!=="error"),findings:e.findings,source:e.source,sourceNodeCount:e.sourceNodeCount,visNodeCount:e.visNodeCount}),"toJsonPayload"),Me=p((e,t,n)=>{if(t==="json"){process.stdout.write(`${JSON.stringify(je(e),void 0,2)}
|
|
2
2
|
`);return}if(t==="ndjson"){for(const s of e.findings)process.stdout.write(`${JSON.stringify(s)}
|
|
3
|
-
`);return}if(n.info(`Migration equivalence: ${e.source} → vis`),n.info(` source nodes: ${String(e.sourceNodeCount)} vis nodes: ${String(e.visNodeCount)}`),e.findings.length===0){n.info(" ✓ task graph + cache-key surface preserved (no divergence).");return}for(const s of e.findings){const o=` [${s.severity}] ${s.node} (${s.axis}) — ${s.detail}`;s.severity==="error"?n.warn(o):n.info(o)}},"formatEquivalenceReport"),Te=p((e,t)=>e.findings.some(n=>t==="warning"?!0:n.severity==="error")?1:0,"equivalenceExitCode");var Oe=Object.defineProperty,Ne=R((e,t)=>Oe(e,"name",{value:t,configurable:!0}),"n");const
|
|
4
|
-
`)},"announceDryRun"),Je=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("deps",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating dependencies and scripts ──"),Y(o.root,o.packageManager,o.config,{dryRun:o.dryRun},e,o.report),e.info(""),g(o.report,e)},"migrateDepsExecuteImpl"),Ge=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("lint-staged",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating lint-staged ──"),H(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateLintStagedExecuteImpl"),Le=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("nano-staged",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating nano-staged ──"),U(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateNanoStagedExecuteImpl"),Qe=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("turborepo",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating turborepo ──"),X(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateTurborepoExecuteImpl"),Ke=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("nx",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating nx ──");const
|
|
5
|
-
`);const a=B(),u=[];for(const y of
|
|
3
|
+
`);return}if(n.info(`Migration equivalence: ${e.source} → vis`),n.info(` source nodes: ${String(e.sourceNodeCount)} vis nodes: ${String(e.visNodeCount)}`),e.findings.length===0){n.info(" ✓ task graph + cache-key surface preserved (no divergence).");return}for(const s of e.findings){const o=` [${s.severity}] ${s.node} (${s.axis}) — ${s.detail}`;s.severity==="error"?n.warn(o):n.info(o)}},"formatEquivalenceReport"),Te=p((e,t)=>e.findings.some(n=>t==="warning"?!0:n.severity==="error")?1:0,"equivalenceExitCode");var Oe=Object.defineProperty,Ne=R((e,t)=>Oe(e,"name",{value:t,configurable:!0}),"n");const F=Ne(async e=>{if(!_.isTTY)return!0;const t=de({input:_,output:ge});try{const n=(await t.question(`${e} [Y/n] `)).trim().toLowerCase();return n===""||n==="y"||n==="yes"}finally{t.close()}},"confirm");var Ie=Object.defineProperty,C=R((e,t)=>Ie(e,"name",{value:t,configurable:!0}),"p");const Ae=[{description:"VisConfig.targetDefaults → VisConfig.tasks",next:"tasks",previous:"targetDefaults"},{description:"VisConfig.taskDefaults → VisConfig.scopedTasks",next:"scopedTasks",previous:"taskDefaults"},{description:"VisConfig.taskRunnerOptions → VisConfig.taskRunner",next:"taskRunner",previous:"taskRunnerOptions"},{description:"ScopedTasksBlock.scope → ScopedTasksBlock.match",next:"match",previous:"scope"},{description:"ScopedTasksBlock.targets → ScopedTasksBlock.tasks",next:"tasks",previous:"targets"}],_e=[{description:"VisTaskConfig.targets → VisTaskConfig.tasks",next:"tasks",previous:"targets"}],De=C(e=>new RegExp(String.raw`(^|[\s,{(\[])(["']?)${e}\2(\s*:)`,"gmu"),"buildKeyRegex"),Ve=C((e,t)=>{let n=e;const s=[];for(const o of t){const i=De(o.previous);i.test(n)&&(i.lastIndex=0,n=n.replace(i,(r,c,a,u)=>`${c}${a}${o.next}${a}${u}`),s.push(o))}return{applied:s,output:n}},"applyRenames"),P=C((e,t)=>Ve(e,t),"rewriteSource"),qe=["vis.config.ts","vis.config.mts","vis.config.cts","vis.config.js","vis.config.mjs","vis.config.cjs"],Pe=new Set(["vis.task.cjs","vis.task.cts","vis.task.js","vis.task.mjs","vis.task.mts","vis.task.ts"]),ze=C(e=>{for(const t of qe){const n=d(e,t);if($(n))return n}},"findConfigFile"),Be=C(e=>{const t=[];try{for(const n of Q(e,{includeDirs:!1,includeFiles:!0,includeSymlinks:!1,skip:[/node_modules/,/\.git/,/\.vis\b/,/dist\b/,/\.next\b/,/\.nuxt\b/]}))Pe.has(pe(n.path))&&t.push(n.path)}catch{}return t},"findTaskConfigFiles"),Fe=C((e,t,n,s)=>{const o=ze(e);if(o){const r=T(o),{applied:c,output:a}=P(r,Ae);if(c.length===0)n.info(`${o} already uses the current schema — no rewrite needed.`);else if(t.dryRun)n.info(`── ${o} (preview) ──`),n.info(a),n.info("── end preview ──"),n.info(`Would apply ${String(c.length)} rename(s): ${c.map(u=>u.description).join(", ")}`);else{I(o,s),A(o,a),n.info(`Rewrote ${o} (backup at ${o}.bak). Applied ${String(c.length)} rename(s).`);for(const u of c)s.manualSteps.push(`Renamed ${u.description} in ${o}`)}}else n.warn("No vis.config.ts found at workspace root — nothing to migrate."),s.warnings.push("No vis.config.{ts,mts,cts,js,mjs,cjs} at workspace root.");const i=t.taskConfigPaths??Be(e);for(const r of i){if(!$(r))continue;const c=T(r),a=P(c,_e);if(a.applied.length!==0)if(t.dryRun)n.info(`── ${r} (preview) ──`),n.info(a.output),n.info("── end preview ──"),n.info(`Would apply ${String(a.applied.length)} rename(s): ${a.applied.map(u=>u.description).join(", ")}`);else{I(r,s),A(r,a.output),n.info(`Rewrote ${r} (backup at ${r}.bak). Applied ${String(a.applied.length)} rename(s).`);for(const u of a.applied)s.manualSteps.push(`Renamed ${u.description} in ${r}`)}}},"migrateSelf");var We=Object.defineProperty,f=R((e,t)=>We(e,"name",{value:t,configurable:!0}),"r");const l=f(e=>{const t=e.workspaceRoot??process.cwd(),n=e.visConfig??{};return{config:n,dryRun:!!e.options.dryRun,logger:e.logger,packageManager:K(t),report:B(),root:t,useEditorconfig:typeof n.editorconfig=="boolean"?n.editorconfig:!0}},"buildContext"),m=f(async(e,t,n)=>{if(t.yes||t.dryRun)return!0;const s=await F(`This will edit files, scripts, and hooks for "${e}". Backups (.bak) will be created. Continue?`);return s||n.info("Aborted."),s},"maybeConfirm"),v=f(e=>{e.dryRun&&e.logger.info(`Running in dry-run mode — no changes will be made.
|
|
4
|
+
`)},"announceDryRun"),Je=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("deps",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating dependencies and scripts ──"),Y(o.root,o.packageManager,o.config,{dryRun:o.dryRun},e,o.report),e.info(""),g(o.report,e)},"migrateDepsExecuteImpl"),Ge=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("lint-staged",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating lint-staged ──"),H(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateLintStagedExecuteImpl"),Le=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("nano-staged",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating nano-staged ──"),U(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateNanoStagedExecuteImpl"),Qe=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("turborepo",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating turborepo ──"),X(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateTurborepoExecuteImpl"),Ke=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("nx",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating nx ──");const i=!!t.aggressive;Z(o.root,{aggressive:i,dryRun:o.dryRun,force:i||!!t.force,rewriteSyncGenerators:i||!!t.rewriteSyncGenerators,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateNxExecuteImpl"),Ye=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("moon",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating moon ──"),ee(o.root,{copyTemplates:!!t.copyTemplates,dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateMoonExecuteImpl"),He=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("gitleaks",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating gitleaks ──"),te(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateGitleaksExecuteImpl"),Ue=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("kingfisher",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating Kingfisher ──"),oe(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateKingfisherExecuteImpl"),Xe=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("secretlint",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating secretlint ──"),ne(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateSecretlintExecuteImpl"),Ze=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("syncpack",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating syncpack ──"),se(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateSyncpackExecuteImpl"),et=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("sherif",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating sherif ──"),ie(o.root,{dryRun:o.dryRun,useEditorconfig:o.useEditorconfig},e,o.report),e.info(""),g(o.report,e)},"migrateSherifExecuteImpl"),tt=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{if(!await m("self",t,e))return;const o=l({logger:e,options:t,visConfig:n,workspaceRoot:s});v(o),e.info("── Migrating vis.config.ts to current schema ──"),Fe(o.root,{dryRun:o.dryRun},e,o.report),e.info(""),g(o.report,e)},"migrateSelfExecuteImpl"),ot=f(({logger:e,workspaceRoot:t})=>{const n=t??process.cwd();le(n,e).length>0&&(process.exitCode=1)},"migrateVerifyExecuteImpl"),nt=f(async({logger:e,options:t,workspaceRoot:n})=>{const s=n??process.cwd(),o=t.format??"table";if(!Se.has(o)){e.warn(`Invalid --format: ${String(t.format)}. Expected table | json | ndjson.`),process.exitCode=1;return}const i=t.failOn==="warning"?"warning":"error";let r;if(t.from){if(t.from!=="turbo"&&t.from!=="nx"&&t.from!=="moon"){e.warn(`Invalid --from: ${t.from}. Expected turbo | nx | moon.`),process.exitCode=1;return}r=t.from}else if(r=Ee(s),!r){e.warn("Could not auto-detect the source tool (need exactly one of turbo.json / nx.json / .moon/tasks.yml). Pass --from <turbo|nx|moon>."),process.exitCode=1;return}const c=Re(s,r);if(c.size===0){e.warn(`No ${r} task graph found at ${s} — nothing to verify.`),process.exitCode=1;return}const a=await be(s);if(a.size===0){e.warn("No migrated vis task graph found (vis.config.ts has no tasks). Run the migrator first."),process.exitCode=1;return}const u=Ce(c,a,r);Me(u,o,e),process.exitCode=Te(u,i)},"migrateVerifyGraphExecuteImpl"),st=f(async({logger:e,options:t,visConfig:n,workspaceRoot:s})=>{const o=s??process.cwd(),i=re(o,n??{}),r=ae(i);if(r.length===0){e.info("No applicable migrations detected in this workspace.");return}const c=!!t.dryRun;e.info(`Detected ${String(r.length)} migration(s):`);for(const y of r)e.info(` • ${y.title} — ${y.description}`);if(e.info(""),!t.yes&&!c&&!await F("Apply all detected migrations? Backups (.bak) will be created.")){e.info("Aborted.");return}c&&e.info(`Running in dry-run mode — no changes will be made.
|
|
5
|
+
`);const a=B(),u=[];for(const y of r)try{if(e.info(`── Applying ${y.title} ──`),c)for(const S of y.probe(i))e.info(S);else y.apply(i,a,e);e.info("")}catch(S){u.push({error:S,id:y.id}),e.warn(`Failed to apply ${y.title}: ${S.message}`)}g(a,e),u.length>0&&(e.warn(""),e.warn(`${String(u.length)} migration(s) failed — see messages above.`),process.exitCode=1)},"migrateAllExecuteImpl"),ft=Je,gt=Ge,dt=Le,lt=Qe,mt=Ke,vt=Ye,yt=He,ht=Ue,kt=Xe,wt=Ze,$t=et,xt=tt,bt=ot,Rt=nt,Et=st;export{Et as migrateAllExecute,ft as migrateDepsExecute,yt as migrateGitleaksExecute,ht as migrateKingfisherExecute,gt as migrateLintStagedExecute,vt as migrateMoonExecute,dt as migrateNanoStagedExecute,mt as migrateNxExecute,kt as migrateSecretlintExecute,xt as migrateSelfExecute,$t as migrateSherifExecute,wt as migrateSyncpackExecute,lt as migrateTurborepoExecute,bt as migrateVerifyExecute,Rt as migrateVerifyGraphExecute};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var X=Object.defineProperty;var w=(e,o)=>X(e,"name",{value:o,configurable:!0});import{createRequire as Q}from"node:module";import{q as S,E as m,j as R,e as F,T as H,I as E}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{M as b,a as M,l as ee}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{
|
|
1
|
+
var X=Object.defineProperty;var w=(e,o)=>X(e,"name",{value:o,configurable:!0});import{createRequire as Q}from"node:module";import{q as S,E as m,j as R,e as F,T as H,I as E}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{M as b,a as M,l as ee}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{o as B,s as oe,C as q,S as te}from"./bin.js";import{d as ne}from"../packem_shared/lockfile-Cu2BH6bl.js";import{s as re,p as se}from"../packem_shared/docker-EJiTY0Sz.js";import{b as ue}from"./config.js";const Z=Q(import.meta.url),x=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,N=w(e=>{if(typeof x<"u"&&x.versions&&x.versions.node){const[o,t]=x.versions.node.split(".").map(Number);if(o>22||o===22&&t>=3||o===20&&t>=16)return x.getBuiltinModule(e)}return Z(e)},"__cjs_getBuiltinModule"),{createInterface:L}=N("node:readline"),{spawn:ie}=N("node:child_process"),{createHash:ae}=N("node:crypto"),{existsSync:V,writeFileSync:le,chmodSync:ce}=N("node:fs");var de=Object.defineProperty,$=w((e,o)=>de(e,"name",{value:o,configurable:!0}),"n$1");const C={aube:{base:["RUN corepack enable"],build:$(e=>e?`RUN aube run --filter ${e} build`:"RUN aube run build","build"),install:"RUN aube install --frozen-lockfile"},bun:{base:["RUN npm install -g bun"],build:$(e=>e?`RUN bun run --filter ${e} build`:"RUN bun run build","build"),install:"RUN --mount=type=cache,target=/root/.bun/install/cache bun install --frozen-lockfile"},npm:{base:[],build:$(e=>e?`RUN npm run build --workspace ${e}`:"RUN npm run build","build"),install:"RUN --mount=type=cache,target=/root/.npm npm ci"},pnpm:{base:["ENV PNPM_HOME=/pnpm","ENV PATH=$PNPM_HOME:$PATH","RUN corepack enable"],build:$(e=>e?`RUN pnpm --filter ${e} build`:"RUN pnpm build","build"),install:"RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile"},yarn:{base:["RUN corepack enable"],build:$(e=>e?`RUN yarn workspace ${e} build`:"RUN yarn build","build"),install:"RUN --mount=type=cache,target=/usr/local/share/.cache/yarn yarn install --immutable"}},fe=$(e=>{const{focus:o,manager:t,nodeVersion:r}=e,n=C[t]??C.npm;return["# syntax=docker/dockerfile:1","","# Generated by 'vis docker init'. Before building, scaffold the context:",`# vis docker scaffold${o?` --focus=${o}`:""} --include-sources`,"# then build with BuildKit enabled (DOCKER_BUILDKIT=1).","",`FROM node:${r}-slim AS base`,"WORKDIR /app",...n.base,"","# --- install dependencies from the scaffolded manifests only ---","FROM base AS deps","COPY .vis/docker/workspace/ ./",n.install,"","# --- build the focus project, then drop unfocused workspace projects ---","FROM deps AS build","COPY .vis/docker/sources/ ./",n.build(o),"RUN npx vis docker prune --context=.vis/docker","","# --- minimal runtime image ---",`FROM node:${r}-slim AS runtime`,"WORKDIR /app","ENV NODE_ENV=production","COPY --from=build /app ./","USER node","# TODO: point this at your app's entrypoint",'CMD ["node", "index.js"]',""].join(`
|
|
2
2
|
`)},"generateDockerfile");var pe=Object.defineProperty,g=w((e,o)=>pe(e,"name",{value:o,configurable:!0}),"i$1");const D="v2.14.0",U=`https://github.com/hadolint/hadolint/releases/download/${D}`,me=g((e=process.platform,o=process.arch)=>{const t=e==="darwin"?"macos":e==="linux"?"linux":e==="win32"?"windows":void 0;if(t===void 0)return;const r=o==="arm64"?"arm64":o==="x64"?"x86_64":void 0;if(t==="windows")return"hadolint-windows-x86_64.exe";if(r!==void 0)return`hadolint-${t}-${r}`},"resolveHadolintAsset"),K=g(e=>b(B(),"hadolint",D,e.endsWith(".exe")?"hadolint.exe":"hadolint"),"cachedBinaryPath"),ge=g(()=>{const e=process.platform==="win32"?"hadolint.exe":"hadolint",o=(process.env.PATH??"").split(process.platform==="win32"?";":":");for(const t of o)if(t!==""&&V(b(t,e)))return e},"findOnPath"),he=g(e=>e.trim().split(/\s+/u)[0]??"","parseSha256Sidecar"),A=g(async e=>{const o=await fetch(e,{redirect:"follow"});if(!o.ok)throw new Error(`download failed (${String(o.status)} ${o.statusText}) for ${e}`);return Buffer.from(await o.arrayBuffer())},"fetchBuffer"),we=g(async e=>{const o=K(e),[t,r]=await Promise.all([A(`${U}/${e}`),A(`${U}/${e}.sha256`)]),n=he(r.toString("utf8")).toLowerCase(),s=ae("sha256").update(t).digest("hex");if(n==="")throw new Error("hadolint checksum sidecar was empty or unparseable. Refusing to use the download.");if(n!==s)throw new Error(`hadolint checksum mismatch (expected ${n}, got ${s}). Refusing to use the download.`);return ue(b(B(),"hadolint",D)),le(o,t),process.platform!=="win32"&&ce(o,493),o},"downloadHadolint"),be=g(async()=>{const e=L({input:process.stdin,output:process.stderr}),o=await new Promise(t=>{e.question(` Download hadolint ${S(D)} now? ${m("[y/N]")} `,r=>{t(r.trim().toLowerCase())})});return e.close(),o==="y"||o==="yes"},"confirmInstall"),$e=g(async e=>{const{autoInstall:o=!1,log:t}=e,r=ge();if(r!==void 0)return r;const n=me();if(n===void 0){t(`hadolint has no prebuilt binary for ${process.platform}/${process.arch}. Install it manually: https://github.com/hadolint/hadolint`);return}const s=K(n);if(V(s))return s;if(!o){if(!(process.stdin.isTTY&&!oe)){t(`hadolint is not installed. Re-run with ${R("--install")} (or install hadolint on PATH) to enable Dockerfile linting.`);return}if(t(`${R("hadolint")} is required to lint Dockerfiles but was not found on your PATH.`),!await be()){t(`Skipped. Install it yourself or re-run with ${R("--install")}.`);return}}t(`Downloading hadolint ${D} (${n})…`);try{const i=await we(n);return t(`Installed hadolint to ${m(i)}`),i}catch(i){t(`Failed to download hadolint: ${i.message}`);return}},"ensureHadolint"),_=g(async(e,o,t)=>{if(o.length===0)return[];const r=["--format","json","--no-fail",...t!==void 0&&t!==""?["--config",t]:[],...o],n=await new Promise((i,c)=>{const a=ie(e,r,{shell:process.platform==="win32",stdio:["ignore","pipe","pipe"],windowsHide:!0});let u="",d="";a.stdout?.on("data",l=>{u+=l.toString("utf8")}),a.stderr?.on("data",l=>{d+=l.toString("utf8")}),a.on("error",c),a.on("close",()=>{if(u.trim()===""&&d.trim()!==""){c(new Error(d.trim()));return}i(u)})});if(n.trim()==="")return[];let s;try{s=JSON.parse(n)}catch{throw new Error("Could not parse hadolint JSON output.")}return Array.isArray(s)?s:[]},"runHadolint");var ye=Object.defineProperty,y=w((e,o)=>ye(e,"name",{value:o,configurable:!0}),"n");const T=y((e,o,t)=>{if(!(!/\bapt-get\b/u.test(e)||!/\binstall\b/u.test(e)||t.test(e)))return e.replace(/\binstall\b/u,`install ${o}`)},"addAptGetInstallFlag"),j={DL3014:y(e=>T(e,"-y",/(?:^|\s)(?:-y|--yes|--assume-yes|-qq?)\b/u),"DL3014"),DL3015:y(e=>T(e,"--no-install-recommends",/--no-install-recommends\b/u),"DL3015"),DL3020:y(e=>/^\s*ADD\b/u.test(e)?e.replace(/^(\s*)ADD\b/u,"$1COPY"):void 0,"DL3020"),DL3027:y(e=>/(?:^|\s)apt\s/u.test(e)&&!/\bapt-get\b/u.test(e)?e.replace(/(^|\s)apt(\s)/u,"$1apt-get$2"):void 0,"DL3027")},Y=new Set(Object.keys(j)),ke=y((e,o)=>{const t=e.includes(`\r
|
|
3
3
|
`)?`\r
|
|
4
4
|
`:`
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Q=Object.defineProperty;var p=(t,e)=>Q(t,"name",{value:e,configurable:!0});import{createRequire as X}from"node:module";import{I as _,q as ee,j as
|
|
2
|
-
`);break}case"junit":{k.write(me({runs:C.map(n=>({adapter:n.adapter.id,durationMs:n.durationMs,findings:n.findings})),workspaceRoot:i}));break}case"minimal":{Oe(u.findings,i,k);break}case"sarif":{k.write(ge({runs:C.map(n=>({adapter:n.adapter.id,findings:n.findings,presence:v.find(o=>o.adapter.id===n.adapter.id)?.presence})),workspaceRoot:i}));break}default:Pe(u.findings,i,A,t)}}finally{k?.close()}const K=A==="fix"?u.hadProcessFailure?1:0:xe({...u,maxSeverity:u.findings.length>0?"error":void 0});K!==0&&(process.exitCode=K)},"runCycle");if(e.watch){const l=[...new Set(w.flatMap(({adapter:a})=>a.extensions))];await be({extensions:l,initialFiles:c,label:"fmt",log:x(a=>{t.info(a)},"log"),runCycle:E,workspaceRoot:i});return}await E(c)},"execute"),Me=x(t=>{const e=t;return[...e._??e.args??[]]},"collectPositional"),Pe=x((t,e,r,s)=>{if(t.length===0){s.info(_(r==="fix"?"✓ fmt: nothing to change":"✓ fmt: all files already formatted"));return}const i=ve(t),b=r==="fix"?ee(
|
|
3
|
-
`)},"printMinimal");export{
|
|
1
|
+
var Q=Object.defineProperty;var p=(t,e)=>Q(t,"name",{value:e,configurable:!0});import{createRequire as X}from"node:module";import{I as _,q as ee,j as B,E as T}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{z as I}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{aM as y,aN as te}from"./bin.js";import{d as M,f as P,r as re,b as se,a as ie,c as ne,e as ae,g as oe,s as ce,h as de,i as fe,j as le,k as ue,l as pe,m as ge,n as me,o as he,p as xe,q as be,t as ve}from"../packem_shared/watch-loop-jmQQl2Qe.js";const Y=X(import.meta.url),j=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Z=p(t=>{if(typeof j<"u"&&j.versions&&j.versions.node){const[e,r]=j.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return j.getBuiltinModule(t)}return Y(t)},"__cjs_getBuiltinModule"),{createHash:O}=Z("node:crypto");var ke=Object.defineProperty,J=p((t,e)=>ke(t,"name",{value:e,configurable:!0}),"o");const ye=J(t=>t.startsWith("/")||/^[a-z]:[\\/]/i.test(t),"isAbsolutePath"),R=J((t,e)=>ye(e)?e:`${t}/${e}`,"resolveFile");var we=Object.defineProperty,g=p((t,e)=>we(t,"name",{value:e,configurable:!0}),"n$1");const je={argsCheck:g((t,e)=>z(t,e,"check"),"argsCheck"),argsFix:g((t,e)=>z(t,e,"fix"),"argsFix"),bin:g(()=>["pnpm","exec","dprint"],"bin"),cacheKey:g((t,e)=>{const r=["dprint",t.declaredVersion??"unknown",t.configFile??"no-config",e.quiet?"q":"",...e.extraArgs??[]];return O("sha256").update(r.join("|")).digest("hex").slice(0,16)},"cacheKey"),detect:g((t,e)=>{const r=M(e,y.dprint.packageNames[0]),s=P(t,y.dprint.configFiles);if(!(!r&&!s))return{adapter:"dprint",configFile:s,declared:!!r,declaredVersion:r,root:t}},"detect"),extensions:["cjs","css","cts","dockerfile","html","js","json","jsonc","jsx","md","mdx","mjs","mts","toml","ts","tsx","yaml","yml"],id:"dprint",kind:"fmt",parse:g((t,e)=>{if(t.exitCode===0)return[];const r=[];for(const s of t.stdout.split(/\r?\n/)){const i=s.trim();!i||i.startsWith("[")||i.startsWith("Checked ")||i.startsWith("Error:")||r.push({adapter:"dprint",file:R(e.root,i),fixable:!0,message:"Code style issues would be auto-fixed",severity:"info"})}return r},"parse")},z=g((t,e,r)=>{const s=r==="fix"?["fmt"]:["check","--list-different"];return e.extraArgs?.length&&s.push(...e.extraArgs),s.push(...t),s},"buildArgs");var Fe=Object.defineProperty,m=p((t,e)=>Fe(t,"name",{value:e,configurable:!0}),"n");const Ae={argsCheck:m((t,e)=>H(t,e,"check"),"argsCheck"),argsFix:m((t,e)=>H(t,e,"fix"),"argsFix"),bin:m(()=>["pnpm","exec","oxfmt"],"bin"),cacheKey:m((t,e)=>{const r=["oxfmt",t.declaredVersion??"unknown",t.configFile??"no-config",e.quiet?"q":"",...e.extraArgs??[]];return O("sha256").update(r.join("|")).digest("hex").slice(0,16)},"cacheKey"),detect:m((t,e)=>{const r=M(e,y.oxfmt.packageNames[0]),s=P(t,y.oxfmt.configFiles);if(!(!r&&!s))return{adapter:"oxfmt",configFile:s,declared:!!r,declaredVersion:r,root:t}},"detect"),extensions:["cjs","cts","js","json","jsonc","jsx","mjs","mts","ts","tsx"],id:"oxfmt",kind:"fmt",parse:m((t,e)=>{if(t.exitCode===0)return[];const r=[];for(const s of t.stdout.split(/\r?\n/)){const i=s.trim();!i||i.startsWith("[")||r.push({adapter:"oxfmt",file:R(e.root,i),fixable:!0,message:"Code style issues would be auto-fixed",severity:"info"})}return r},"parse")},H=m((t,e,r)=>{const s=r==="fix"?["--write"]:["--list-different"];return e.extraArgs?.length&&s.push(...e.extraArgs),s.push(...t),s},"buildArgs");var Ce=Object.defineProperty,h=p((t,e)=>Ce(t,"name",{value:e,configurable:!0}),"s");const $e={argsCheck:h((t,e)=>G(t,e,"check"),"argsCheck"),argsFix:h((t,e)=>G(t,e,"fix"),"argsFix"),bin:h(()=>["pnpm","exec","prettier"],"bin"),cacheKey:h((t,e)=>{const r=["prettier",t.declaredVersion??"unknown",t.configFile??"no-config",e.quiet?"q":"",...e.extraArgs??[]];return O("sha256").update(r.join("|")).digest("hex").slice(0,16)},"cacheKey"),detect:h((t,e)=>{const r=M(e,y.prettier.packageNames[0]),s=P(t,y.prettier.configFiles);if(!(!r&&!s))return{adapter:"prettier",configFile:s,declared:!!r,declaredVersion:r,root:t}},"detect"),extensions:["cjs","css","cts","html","js","json","jsx","less","md","mdx","mjs","mts","scss","ts","tsx","vue","yaml","yml"],id:"prettier",kind:"fmt",parse:h((t,e)=>{if(t.exitCode===0)return[];const r=[];for(const s of t.stdout.split(/\r?\n/)){const i=s.trim();i&&(i.startsWith("[")||r.push({adapter:"prettier",file:R(e.root,i),fixable:!0,message:"Code style issues would be auto-fixed",severity:"info"}))}return r},"parse")},G=h((t,e,r)=>{const s=r==="fix"?["--write"]:["--list-different"];return e.quiet&&s.push("--log-level","warn"),e.extraArgs?.length&&s.push(...e.extraArgs),s.push(...t),s},"buildArgs");var qe=Object.defineProperty,x=p((t,e)=>qe(t,"name",{value:e,configurable:!0}),"c");const _e=[Ae,se,je,$e,ie,ne],Ve=x(async({logger:t,options:e,visConfig:r,workspaceRoot:s})=>{const i=s??process.cwd(),b=r?.fmt,F=re(_e,b?.order),L=ae(i,F),w=oe(L,F,"fmt").filter(({adapter:l})=>b?.adapters?.[l.id]?.enabled!==!1);if(w.length===0){t.warn("vis fmt: no formatter detected in this workspace (looked for: oxfmt, biome, dprint, prettier, ruff, deno-fmt).");return}const S=x(l=>{const a=b?.adapters?.[l]?.extraArgs;return a&&a.length>0?[...a]:void 0},"baseExtraArgs"),$={quiet:e.quiet??!1},W=Me(e),A=e.check?"check":"fix";let c;if(e.staged){if(c=ce(i),c===void 0)t.warn("vis fmt: could not resolve --staged (not a git repo or git unavailable). Falling back to a workspace-wide run.");else if(c.length===0){t.info(_("✓ fmt: no staged files"));return}}else if(typeof e.since=="string"&&e.since.length>0){if(c=de(i,e.since),c===void 0)t.warn(`vis fmt: could not resolve --since ${e.since} (not a git repo or unknown ref). Falling back to a workspace-wide run.`);else if(c.length===0){t.info(_(`✓ fmt: no files changed since ${e.since}`));return}}const U=te(i,void 0,void 0,!0),q=e.format??"human";q==="human"&&e.output!==void 0&&t.warn("vis fmt: --output is ignored for the human format; pass --format json|minimal|sarif|junit|github to redirect findings to a file.");const E=x(async l=>{const a=W.length>0?W:l,v=[];if(a){const n=fe(a,w,b?.extensionOverrides);for(const{adapter:o,presence:d}of w){const f=n.get(o.id);if(!f||f.length===0)continue;const N=S(o.id),V={adapter:o,files:f,presence:d};N&&(V.options={...$,extraArgs:N}),v.push(V)}}else for(const{adapter:n,presence:o}of w){const d=S(n.id),f={adapter:n,files:["."],presence:o};d&&(f.options={...$,extraArgs:d}),v.push(f)}if(v.length===0)return;const D=await le(v,$,A,{cacheRoot:U}),C=v.map((n,o)=>{const d=D[o],f=n.adapter.parse(d,n.presence);return{adapter:n.adapter,durationMs:d.durationMs,exitCode:d.exitCode,findings:f}}),u=ue(C.map(n=>({adapter:n.adapter.id,durationMs:n.durationMs,exitCode:n.exitCode,findingCount:n.findings.length,findings:n.findings}))),k=q==="human"?void 0:pe({cwd:i,target:e.output});try{switch(q){case"github":{k.write(he({runs:C.map(n=>({findings:n.findings})),workspaceRoot:i}));break}case"json":{k.write(`${JSON.stringify({findings:u.findings,mode:A,runs:u.runs},null,2)}
|
|
2
|
+
`);break}case"junit":{k.write(me({runs:C.map(n=>({adapter:n.adapter.id,durationMs:n.durationMs,findings:n.findings})),workspaceRoot:i}));break}case"minimal":{Oe(u.findings,i,k);break}case"sarif":{k.write(ge({runs:C.map(n=>({adapter:n.adapter.id,findings:n.findings,presence:v.find(o=>o.adapter.id===n.adapter.id)?.presence})),workspaceRoot:i}));break}default:Pe(u.findings,i,A,t)}}finally{k?.close()}const K=A==="fix"?u.hadProcessFailure?1:0:xe({...u,maxSeverity:u.findings.length>0?"error":void 0});K!==0&&(process.exitCode=K)},"runCycle");if(e.watch){const l=[...new Set(w.flatMap(({adapter:a})=>a.extensions))];await be({extensions:l,initialFiles:c,label:"fmt",log:x(a=>{t.info(a)},"log"),runCycle:E,workspaceRoot:i});return}await E(c)},"execute"),Me=x(t=>{const e=t;return[...e._??e.args??[]]},"collectPositional"),Pe=x((t,e,r,s)=>{if(t.length===0){s.info(_(r==="fix"?"✓ fmt: nothing to change":"✓ fmt: all files already formatted"));return}const i=ve(t),b=r==="fix"?ee(B("Formatted:")):B("Would change:");s.info(b);for(const F of i.keys())s.info(` ${T("·")} ${I(e,F)}`);r==="check"&&(s.info(""),s.info(T(`Run \`vis fmt\` to apply changes (${String(i.size)} file${i.size===1?"":"s"}).`)))},"printHuman"),Oe=x((t,e,r)=>{for(const s of t)r.write(`${s.adapter} ${I(e,s.file)}
|
|
3
|
+
`)},"printMinimal");export{Ve as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var ae=Object.defineProperty;var j=(t,e)=>ae(t,"name",{value:e,configurable:!0});import{createRequire as ce}from"node:module";import{E as p,j as b,q as T}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{l as _,M as E,K as Y,a as L,z as Q,y as pe,C as fe}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{
|
|
1
|
+
var ae=Object.defineProperty;var j=(t,e)=>ae(t,"name",{value:e,configurable:!0});import{createRequire as ce}from"node:module";import{E as p,j as b,q as T}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{l as _,M as E,K as Y,a as L,z as Q,y as pe,C as fe}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{m as X,p as l}from"./bin.js";import{f as $e}from"../packem_shared/giget-CcEy_Elm.js";import{b as Z,E as ye}from"./config.js";const le=ce(import.meta.url),x=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,P=j(t=>{if(typeof x<"u"&&x.versions&&x.versions.node){const[e,r]=x.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return x.getBuiltinModule(t)}return le(t)},"__cjs_getBuiltinModule"),{fileURLToPath:ue}=P("node:url"),{createInterface:de}=P("node:readline"),{mkdtempSync:me,rmSync:he}=P("node:fs"),{tmpdir:ge}=P("node:os"),{spawnSync:we}=P("node:child_process");var ve=Object.defineProperty,y=j((t,e)=>ve(t,"name",{value:e,configurable:!0}),"i");const ee=[".ts",".mts",".cts",".js",".mjs",".cjs"],be="template.yml",Te=[".d",".test",".spec",".config",".bench",".stories"],Se=[".d.ts",".d.mts",".d.cts",".js.map",".mjs.map",".cjs.map",".ts.map"],te=y(t=>{for(const e of ee)if(t.endsWith(e))return t.slice(0,-e.length);return t},"stripExtension"),Oe=y(t=>{if(Se.some(r=>t.endsWith(r))||!ee.some(r=>t.endsWith(r)))return!1;const e=te(t);return!Te.some(r=>e.endsWith(r))},"isNativeFile"),J=y((t,e)=>{const r=[];if(!_(t))return r;for(const s of X(t,{includeDirs:!1,includeSymlinks:!1,maxDepth:1})){if(!Oe(s.name))continue;const n=te(s.name);r.push({load:y(()=>Ee(s.path),"load"),name:n,path:s.path,source:e})}return r},"scanNativeDirectory"),B=y((t,e)=>{const r=[];if(!_(t))return r;for(const s of X(t,{includeFiles:!1,includeSymlinks:!1,maxDepth:1})){if(s.path===t)continue;const n=E(s.path,be);_(n)&&r.push({load:y(()=>Ne(s.path,s.name),"load"),name:s.name,path:s.path,source:e})}return r},"scanMoonDirectory"),je=y(()=>{try{const t=ue(import.meta.url),e=E(Y(t),"..","..","templates");return _(e)?e:void 0}catch{return}},"resolveBuiltinTemplatesDirectory"),I=y(t=>{const{extraDirectories:e=[],onWarning:r,workspaceRoot:s}=t,n=[...J(E(s,".vis","templates"),"native"),...B(E(s,".vis","templates"),"moon"),...B(E(s,".moon","templates"),"moon")];for(const o of e)n.push(...B(o,"config")),n.push(...J(o,"config"));const i=je();i&&n.push(...B(i,"builtin"));const a=new Map;for(const o of n){const c=a.get(o.name);if(!c){a.set(o.name,o);continue}r&&r(`Template "${o.name}" exists in multiple sources — using ${c.source} (${c.path}), ignoring ${o.source} (${o.path}).`)}return[...a.values()].sort((o,c)=>o.name.localeCompare(c.name))},"discoverTemplates"),Ee=y(async t=>{const{loadNativeTemplate:e}=await import("./loader2.js");return e(t)},"loadNativeFromPath"),Ne=y(async(t,e)=>{const{loadMoonTemplate:r}=await import("./index.js");return r(t,e)},"loadMoonFromPath");var Re=Object.defineProperty,v=j((t,e)=>Re(t,"name",{value:e,configurable:!0}),"c");const M=v((t,e)=>new Promise(r=>{t.question(e,s=>{r(s.trim())})}),"ask"),ke=v(async(t,e,r)=>{const s=await M(t,` ${e} ${p(r?"[Y/n]":"[y/N]")} `);return s===""?r:s.toLowerCase()==="y"||s.toLowerCase()==="yes"},"confirm"),xe=v(async(t,e,r,s)=>{process.stderr.write(` ${e}
|
|
2
2
|
`);for(const[n,i]of r.entries()){const a=b(T(` ${String(n+1)}.`)),o=i===s?p(" (default)"):"";process.stderr.write(`${a} ${i}${o}
|
|
3
3
|
`)}for(;;){const n=await M(t,`
|
|
4
4
|
${p(`Enter choice (1-${String(r.length)}):`)} `);if(n===""&&s!==void 0)return s;const i=Number.parseInt(n,10);if(Number.isInteger(i)&&i>=1&&i<=r.length)return r[i-1];const a=r.find(o=>o===n);if(a)return a;process.stderr.write(` ${p("Invalid choice. Try again.")}
|