@visulima/vis 1.0.0-alpha.28 → 1.0.0-alpha.29
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 +35 -0
- package/LICENSE.md +24 -24
- package/dist/bin.js +1 -1
- package/dist/binx.js +1 -1
- package/dist/packem_chunks/bin.js +297 -297
- package/dist/packem_chunks/bloom-status.js +1 -1
- package/dist/packem_chunks/bloom-sync.js +1 -1
- package/dist/packem_chunks/config.js +12 -12
- package/dist/packem_chunks/doctor-probe.js +1 -1
- package/dist/packem_chunks/fix.js +1 -1
- package/dist/packem_chunks/handler.js +1 -1
- package/dist/packem_chunks/handler10.js +1 -2
- package/dist/packem_chunks/handler11.js +5 -1
- package/dist/packem_chunks/handler12.js +1 -5
- package/dist/packem_chunks/handler13.js +27 -1
- package/dist/packem_chunks/handler14.js +5 -27
- package/dist/packem_chunks/handler15.js +1 -5
- package/dist/packem_chunks/handler16.js +1 -1
- package/dist/packem_chunks/handler17.js +1 -1
- package/dist/packem_chunks/handler18.js +1 -1
- package/dist/packem_chunks/handler19.js +1 -1
- package/dist/packem_chunks/handler2.js +1 -1
- package/dist/packem_chunks/handler20.js +5 -1
- package/dist/packem_chunks/handler21.js +2 -5
- package/dist/packem_chunks/handler22.js +2 -2
- package/dist/packem_chunks/handler23.js +1 -2
- package/dist/packem_chunks/handler24.js +1 -1
- package/dist/packem_chunks/handler25.js +5 -1
- package/dist/packem_chunks/handler26.js +1 -5
- package/dist/packem_chunks/handler27.js +3 -1
- package/dist/packem_chunks/handler28.js +1 -3
- package/dist/packem_chunks/handler29.js +7 -1
- package/dist/packem_chunks/handler3.js +4 -4
- package/dist/packem_chunks/handler30.js +32 -6
- package/dist/packem_chunks/handler31.js +3 -33
- package/dist/packem_chunks/handler32.js +8 -3
- package/dist/packem_chunks/handler33.js +1 -1
- package/dist/packem_chunks/handler34.js +2 -2
- package/dist/packem_chunks/handler35.js +11 -3
- package/dist/packem_chunks/handler36.js +3 -22
- package/dist/packem_chunks/handler37.js +21 -60
- package/dist/packem_chunks/handler38.js +61 -3
- package/dist/packem_chunks/handler39.js +3 -6
- package/dist/packem_chunks/handler4.js +1 -1
- package/dist/packem_chunks/handler40.js +6 -24
- package/dist/packem_chunks/handler41.js +24 -153
- package/dist/packem_chunks/handler42.js +153 -25
- package/dist/packem_chunks/handler43.js +25 -10
- package/dist/packem_chunks/handler44.js +10 -708
- package/dist/packem_chunks/handler45.js +708 -24
- package/dist/packem_chunks/handler46.js +24 -322
- package/dist/packem_chunks/handler47.js +322 -48
- package/dist/packem_chunks/handler48.js +48 -3
- package/dist/packem_chunks/handler49.js +3 -27
- package/dist/packem_chunks/handler5.js +7 -7
- package/dist/packem_chunks/handler50.js +21 -189
- package/dist/packem_chunks/handler51.js +194 -33
- package/dist/packem_chunks/handler52.js +34 -0
- package/dist/packem_chunks/handler6.js +1 -1
- package/dist/packem_chunks/handler7.js +1 -1
- package/dist/packem_chunks/handler8.js +1 -1
- package/dist/packem_chunks/handler9.js +1 -1
- package/dist/packem_chunks/heal-accept.js +1 -1
- package/dist/packem_chunks/heal.js +1 -1
- package/dist/packem_chunks/help-command.js +4 -4
- package/dist/packem_chunks/index.js +2 -2
- package/dist/packem_chunks/keys-refresh.js +1 -1
- package/dist/packem_chunks/list.js +1 -1
- package/dist/packem_chunks/loader.js +1 -1
- package/dist/packem_chunks/loader2.js +1 -1
- package/dist/packem_chunks/prune.js +1 -1
- package/dist/packem_chunks/run.js +1 -1
- package/dist/packem_chunks/status.js +1 -1
- package/dist/packem_chunks/sync.js +1 -1
- package/dist/packem_chunks/sync2.js +1 -1
- package/dist/packem_chunks/tripwire.js +2 -2
- package/dist/packem_chunks/verify-lockfile.js +1 -1
- package/dist/packem_shared/Table-3pFgIUZ2-DABgc6rj.js +12 -0
- package/dist/packem_shared/{advisories-BxXiKFbL.js → advisories-DpgSuWDH.js} +1 -1
- package/dist/packem_shared/{affected-shas-Dm7eqcI8.js → affected-shas-BkXXecyi.js} +1 -1
- package/dist/packem_shared/ai-analysis-KP8b5lc0.js +68 -0
- package/dist/packem_shared/{ai-fix-BGbnrWCz.js → ai-fix-CfFWatGY.js} +7 -7
- package/dist/packem_shared/{applyDefaults-KxZkvlp3.js → applyDefaults-DLvOqXGX.js} +1 -1
- package/dist/packem_shared/{build-scripts-3E2pmscY.js → build-scripts-D-ysm_bS.js} +1 -1
- package/dist/packem_shared/{cyclonedx-C2k2HmvI.js → cyclonedx-B04lIvwu.js} +3 -3
- package/dist/packem_shared/{dependency-scan-Bki15Yi-.js → dependency-scan-B9wTcLxf.js} +1 -1
- package/dist/packem_shared/{docker-k-Sl8b-w.js → docker-DxA80dRx.js} +1 -1
- package/dist/packem_shared/{failure-log-C3bG1bCA.js → failure-log-n3j_-w8s.js} +1 -1
- package/dist/packem_shared/index-BDF8gawl.js +29 -0
- package/dist/packem_shared/{index-DBq4TVu5.js → index-BfG9_znI.js} +1 -1
- package/dist/packem_shared/{lifecycle-B91p_ra8.js → lifecycle-NHIKDiCh.js} +1 -1
- package/dist/packem_shared/lockfile-CoeFxWAv.js +1 -0
- package/dist/packem_shared/lockfile-DAuTDwow.js +1 -0
- package/dist/packem_shared/{manifests-Z3spBpxv.js → manifests-B7wUR3Rk.js} +1 -1
- package/dist/packem_shared/{min-release-age-B1Jm1_JY.js → min-release-age-YyNI7gqV.js} +1 -1
- package/dist/packem_shared/{native-config-sync-Cnpj2xcn.js → native-config-sync-CgRIIRZV.js} +7 -7
- package/dist/packem_shared/{osv-bloom-ep8GlDGT.js → osv-bloom-BQSIHt5h.js} +2 -2
- package/dist/packem_shared/{pm-runner-COoPLGKi.js → pm-runner-Ta_yz2uP.js} +1 -1
- package/dist/packem_shared/{provenance-DbkJRDqt.js → provenance-DoEp2uOo.js} +1 -1
- package/dist/packem_shared/{readFileSync-CGmzMUF2-D6rUjGDn.js → readFileSync-4c_c6Qey-6SWMDNdw.js} +1 -1
- package/dist/packem_shared/{registry-keys-SylX07bs.js → registry-keys-CD1xHavV.js} +1 -1
- package/dist/packem_shared/{resolve-explicit-CJ_5wYSu.js → resolve-explicit-DpSc7RN2.js} +1 -1
- package/dist/packem_shared/{runtime-check-DgXsKCsv.js → runtime-check-Cbtb_Utb.js} +1 -1
- package/dist/packem_shared/{s1ngularity-DlS-4a6K.js → s1ngularity-CIX7UcT5.js} +1 -1
- package/dist/packem_shared/scan-progress-CTVVf9WW.js +2 -0
- package/dist/packem_shared/{selectors-BE2BCnTR.js → selectors-BU8aTRQm.js} +1 -1
- package/dist/packem_shared/{signatures-B-1u4t-c.js → signatures-BHM7cnqB.js} +1 -1
- package/dist/packem_shared/{spinner-B9ZPv1iT.js → spinner-C8xs6QZv.js} +1 -1
- package/dist/packem_shared/{tabs-C-qFIoUv.js → tabs-xZkm6Y_J.js} +1 -1
- package/dist/packem_shared/{toolchain-Jx2lkAYy.js → toolchain-juKl-WgV.js} +1 -1
- package/dist/packem_shared/typosquats-DRKU6d2S.js +1 -0
- package/dist/packem_shared/{use-measured-height-kIDCuc76.js → use-measured-height-Lea6TCVD.js} +1 -1
- package/dist/packem_shared/{verify-C8EAHql6.js → verify-DA80ja1b.js} +1 -1
- package/dist/packem_shared/{vis-update-app-COYmjGKv.js → vis-update-app-BCKzlqj8.js} +1 -1
- package/dist/packem_shared/{watch-BSVsZ_1I.js → watch-DdR-pFzX.js} +1 -1
- package/dist/packem_shared/{watch-loop-CP318TfG.js → watch-loop-C8csFvRU.js} +1 -1
- package/index.d.ts +201 -201
- package/index.js +567 -751
- package/package.json +13 -13
- package/dist/packem_shared/Table-CwC2kW07-EjFLNV0q.js +0 -12
- package/dist/packem_shared/ai-analysis-BnmDFqc8.js +0 -68
- package/dist/packem_shared/index-2r730kXY.js +0 -29
- package/dist/packem_shared/lockfile-DmDfgKaT.js +0 -1
- package/dist/packem_shared/scan-progress-CU4ttEHQ.js +0 -2
- package/dist/packem_shared/typosquats-BxCOUvTJ.js +0 -1
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
import { defineConfig } from "@visulima/vis/config";
|
|
4
|
-
|
|
5
|
-
export default defineConfig({
|
|
6
|
-
staged: { "*.ts": "eslint --fix" },
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
Coming from lint-staged or nano-staged? Run \`vis migrate lint-staged\` (or \`vis migrate nano-staged\`) to move the config in and remove the legacy files.`)},"resolveConfig"),fe=V(e=>{if(typeof e!="object"||e===null)throw new T("Staged config must be an object mapping glob patterns to tasks.");const t=Object.entries(e);if(t.length===0)throw new T("Staged config is empty — at least one glob pattern is required.");for(const[s,r]of t){if(!s||s.trim()==="")throw new T("Staged config keys must be non-empty glob patterns.");Ee(s,r)}return e},"validateConfig"),Ee=V((e,t)=>{if(typeof t=="string"){if(t.trim()==="")throw new T(`Task for "${e}" is an empty string.`);return}if(Array.isArray(t)){if(t.length===0)throw new T(`Task array for "${e}" is empty.`);for(const s of t)Ee(e,s);return}if(typeof t!="function"&&!Tt(t))throw new T(`Invalid task for "${e}" — expected string, string[], function, or { title, task } object.`)},"validateTask"),Tt=V(e=>typeof e=="object"&&e!==null&&typeof e.title=="string"&&typeof e.task=="function","isCustomTask");var St=Object.defineProperty,x=f((e,t)=>St(e,"name",{value:t,configurable:!0}),"r$2");const he=2048,g=x(async(e,t)=>{const s=t.input===void 0?void 0:typeof t.input=="string"?t.input:t.input.toString("utf8"),r=await Se("git",[...e],{nodeOptions:{cwd:t.cwd,env:t.env?{...process.env,...t.env}:void 0,stdio:s===void 0?["ignore","pipe","pipe"]:["pipe","pipe","pipe"]},stdin:s}),n=typeof r.exitCode=="number"?r.exitCode:1;if(n!==0&&!t.lenient){const{stderr:i}=r,o=i.length>he?`${i.slice(0,he)}…`:i;throw new _(`git ${e.join(" ")} failed with exit code ${n}: ${o.trim()}`,i)}return{exitCode:n,stderr:r.stderr,stdout:r.stdout}},"git"),P=x(async(e,t)=>{const{stdout:s}=await g(e,t);return s.trim()},"gitOut"),$t=x(async e=>{const t=await g(["rev-parse","--is-inside-work-tree"],{cwd:e,lenient:!0});return t.exitCode===0&&t.stdout.trim()==="true"},"isGitRepo"),xt=x(async e=>P(["rev-parse","--absolute-git-dir"],{cwd:e}),"getGitDirectory"),Me=x(async e=>P(["rev-parse","--show-toplevel"],{cwd:e}),"getWorkTree"),pe=x(async e=>P(["write-tree"],{cwd:e}),"writeIndexTree"),Ct=x(async e=>{const t=await g(["rev-parse","HEAD^{tree}"],{cwd:e,lenient:!0});return t.exitCode===0?t.stdout.trim():""},"headTreeSha"),N={major:2,minor:32},It=x(e=>{const t=/git version (\d+)\.(\d+)/.exec(e);if(!t)return null;const s=Number.parseInt(t[1]??"",10),r=Number.parseInt(t[2]??"",10);return Number.isNaN(s)||Number.isNaN(r)?null:{major:s,minor:r}},"parseGitVersion"),jt=x(async e=>{const t=It(await P(["--version"],{cwd:e}));if(t!==null&&(t.major<N.major||t.major===N.major&&t.minor<N.minor))throw new _(`Git ${N.major}.${N.minor} or newer is required; found ${t.major}.${t.minor}.`)},"assertGitVersion");var Et=Object.defineProperty,I=f((e,t)=>Et(e,"name",{value:t,configurable:!0}),"a$2");const Mt="ACMR",ge=500,Ot=I(async e=>{const{stdout:t}=await g(["diff-files","--raw","-z"],{cwd:e}),s=t.split("\0").filter(n=>n.length>0),r=[];for(let n=0;n<s.length;n+=1){const i=s[n];if(!i?.startsWith(":"))continue;const o=i.slice(1).split(" "),a=o[3],c=o[4],d=s[n+1];n+=1,c==="A"&&a!==void 0&&/^0+$/.test(a)&&d!==void 0&&r.push(d)}return r},"getIntentToAddPaths"),me=I(async e=>{const{stdout:t}=await g(["ls-files","--others","--exclude-standard","-z"],{cwd:e});return t.split("\0").filter(s=>s.length>0)},"getUntrackedFiles"),At=I(async(e,t)=>{if(e.length===0)return;const s=`${e.join("\0")}\0`;await g(["rm","--cached","--quiet","--pathspec-from-file=-","--pathspec-file-nul","--"],{cwd:t.cwd,input:s})},"removeFromIndex"),Pt=I(async e=>{const t=e.diffFilter??Mt,s=e.diff===void 0?["diff","--name-only","-z",`--diff-filter=${t}`,"--staged"]:["diff","--name-only","-z",`--diff-filter=${t}`,...e.diff.split(/\s+/).filter(Boolean)],{stdout:r}=await g(s,{cwd:e.cwd}),n=r.split("\0").filter(o=>o.length>0);if(n.length===0)return[];const i=e.workTree??await Me(e.cwd);return n.map(o=>Be(o)?o:te(i,o))},"getFiles"),Rt=I(async(e,t)=>{if(e.length===0)return null;const s=[];for(let i=0;i<e.length;i+=ge){const o=e.slice(i,i+ge),{stdout:a}=await g(["diff","--binary","--unified=0","--no-color","--no-ext-diff","--src-prefix=a/","--dst-prefix=b/","--patch","--submodule=short","--",...o],{cwd:t.cwd});a.length>0&&s.push(a)}if(s.length===0)return null;const r=s.join(""),n=r.endsWith(`
|
|
10
|
-
`)?r:`${r}
|
|
11
|
-
`;return Buffer.from(n,"utf8")},"capturePatch"),Ft=I(async e=>{const{stdout:t}=await g(["status","--porcelain=v1","-z"],{cwd:e}),s=t.split("\0"),r=[];for(let n=0;n<s.length;n+=1){const i=s[n];if(i===void 0||i.length<4)continue;const o=i.charAt(0),a=i.charAt(1),c=i.slice(3),d=o==="R"||o==="C"||a==="R"||a==="C";o!==" "&&o!=="?"&&a!==" "&&a!=="?"&&r.push(c),d&&(n+=1)}return r},"getPartiallyStagedFiles"),Nt=I(async(e,t)=>{if(e.length===0)return;const s=`${e.join("\0")}\0`;await g(["checkout","--force","--pathspec-from-file=-","--pathspec-file-nul","--"],{cwd:t.cwd,input:s})},"checkoutPaths"),Gt=I(async(e,t)=>{if(await g(["update-index","--again"],{cwd:t.cwd,lenient:!0}),e.length===0)return;const s=`${e.join("\0")}\0`;await g(["add","-u","--pathspec-from-file=-","--pathspec-file-nul","--"],{cwd:t.cwd,input:s})},"updateIndexAgain");var _t=Object.defineProperty,A=f((e,t)=>_t(e,"name",{value:t,configurable:!0}),"r$1");const Dt="vis_staged_automatic_backup",Oe=A(()=>`${Dt}-${process.pid}-${Date.now()}-${He(3).toString("hex")}`,"buildMessage"),Lt=A(async e=>{const t=await P(["stash","create"],{cwd:e});return t.length===0?null:(await g(["stash","store","-m",Oe(),t],{cwd:e}),t)},"createBackupStash"),Bt=A(async e=>{const t=Oe(),{exitCode:s,stdout:r}=await g(["stash","push","--keep-index","--include-untracked","--quiet","-m",t],{cwd:e,lenient:!0});if(s!==0)return null;const n=r.trim();return n.length>0&&/no local changes/i.test(n)?null:P(["rev-parse","stash@{0}"],{cwd:e})},"createHideAllStash"),ne=A(async(e,t)=>{const{exitCode:s,stdout:r}=await g(["reflog","--format=%H %gd","refs/stash"],{cwd:e,lenient:!0});if(s!==0)return null;for(const n of r.split(/\r?\n/)){const[i,o]=n.split(/\s+/,2);if(i===t&&o!==void 0)return o}return null},"findStashRefBySha"),we=A(async(e,t)=>{if(t===null)return;const s=await ne(e,t);s!==null&&await g(["stash","drop","--quiet",s],{cwd:e})},"dropBackupStash"),Ht=A(async(e,t)=>{if(t===null)throw new le("Backup stash was not found — can't revert working tree.");const s=await ne(e,t);if(s===null)throw new le(`Backup stash ${t} is no longer reachable — can't revert working tree.`);await g(["reset","--hard","HEAD"],{cwd:e}),await g(["stash","apply","--index","--quiet",s],{cwd:e})},"applyBackupStash"),qt=A(async(e,t)=>{if(t===null)return;const s=await ne(e,t);s!==null&&await g(["stash","pop","--quiet",s],{cwd:e})},"popHideAllStash");var Ut=Object.defineProperty,zt=f((e,t)=>Ut(e,"name",{value:t,configurable:!0}),"l");class Vt{static{f(this,"GitWorkflow")}static{zt(this,"GitWorkflow")}stagedFiles=[];partiallyStaged=[];workTree="";gitDir="";preTaskIndexTree="";postTaskIndexTree="";headTree="";revertApplied=!1;warnings=[];cwd;options;patch=null;backupStashSha=null;merge=[];shouldStash;shouldHidePartial;shouldHideUnstaged;shouldHideAll;hideAllStashSha=null;intentToAddPaths=[];preTaskUntracked=new Set;constructor(t){this.cwd=t.cwd??process.cwd(),this.options=t,this.shouldStash=t.stash!==!1&&t.diff===void 0,this.shouldHidePartial=t.hidePartiallyStaged!==!1,this.shouldHideUnstaged=t.hideUnstaged===!0,this.shouldHideAll=t.hideAll===!0}async prepare(){if(!await $t(this.cwd))throw new _(`Not a git repository: ${this.cwd}`);await jt(this.cwd),this.workTree=await Me(this.cwd),this.gitDir=await xt(this.cwd),this.stagedFiles=await Pt({cwd:this.workTree,diff:this.options.diff,diffFilter:this.options.diffFilter,workTree:this.workTree}),this.partiallyStaged=this.stagedFiles.length===0?[]:await Ft(this.workTree),this.snapshotMergeState(),this.intentToAddPaths=await Ot(this.workTree),this.intentToAddPaths.length>0&&await At(this.intentToAddPaths,{cwd:this.workTree}),this.shouldStash?this.backupStashSha=await Lt(this.workTree):this.partiallyStaged.length>0&&this.warnings.push("Running with --no-stash on partially-staged files — unstaged deltas will be captured to a patch, but if re-applying the patch fails after tasks run the changes cannot be recovered."),this.shouldHideAll?this.hideAllStashSha=await Bt(this.workTree):await this.hideUnstagedChanges(),this.preTaskIndexTree=this.stagedFiles.length===0?"":await pe(this.workTree),this.postTaskIndexTree=this.preTaskIndexTree,this.headTree=await Ct(this.workTree),this.preTaskUntracked=new Set(await me(this.workTree))}async applyModifications({autoStage:t=!1}={}){if(this.stagedFiles.length===0)return;const s=this.stagedFiles.map(r=>D(this.workTree,r));if(await Gt(s,{cwd:this.workTree}),t){const r=(await me(this.workTree)).filter(n=>!this.preTaskUntracked.has(n));if(r.length>0){const n=`${r.join("\0")}\0`;await g(["add","--pathspec-from-file=-","--pathspec-file-nul","--"],{cwd:this.workTree,input:n})}}if(this.intentToAddPaths.length>0)try{await g(["add","--intent-to-add","--",...this.intentToAddPaths],{cwd:this.workTree})}catch{}this.postTaskIndexTree=await pe(this.workTree)}indexTreeChanged(){return this.preTaskIndexTree.length>0&&this.postTaskIndexTree.length>0&&this.preTaskIndexTree!==this.postTaskIndexTree}postTaskIndexMatchesHead(){return this.postTaskIndexTree.length>0&&this.headTree.length>0&&this.postTaskIndexTree===this.headTree}async restoreUnstagedChanges(){if(this.revertApplied||this.patch===null||this.shouldHideAll)return;const t=["apply","--whitespace=nowarn","--recount","--unidiff-zero"];let s;try{await g(t,{cwd:this.workTree,input:this.patch});return}catch(r){s=r instanceof _?r.stderr:String(r)}try{await g([...t,"--3way"],{cwd:this.workTree,input:this.patch})}catch(r){const n=r instanceof _&&r.stderr?r.stderr:String(r);throw new ue(`Failed to re-apply unstaged changes after running tasks. Original changes remain in the backup stash — recover with \`git stash list\` and \`git stash apply\`.
|
|
12
|
-
First attempt: ${s??"(no stderr)"}
|
|
13
|
-
Second attempt: ${n}`,{cause:r})}}async revert(){if(this.backupStashSha!==null){try{await Ht(this.workTree,this.backupStashSha)}catch(t){throw new ue("Revert failed while restoring the backup stash. Use `git stash list` to recover manually.",{cause:t})}if(await we(this.workTree,this.backupStashSha),this.intentToAddPaths.length>0)try{await g(["add","--intent-to-add","--",...this.intentToAddPaths],{cwd:this.workTree})}catch{}this.revertApplied=!0}}async cleanup(t){if(this.restoreMergeState(),this.hideAllStashSha!==null)try{await qt(this.workTree,this.hideAllStashSha)}catch{}t&&this.backupStashSha!==null&&!this.revertApplied&&await we(this.workTree,this.backupStashSha)}recoveryHint(){return this.backupStashSha===null?null:`Backup stash is preserved (sha ${this.backupStashSha.slice(0,7)}) — restore with: git stash apply --index ${this.backupStashSha}`}async hideUnstagedChanges(){const t=new Set(this.stagedFiles.map(r=>D(this.workTree,r))),s=this.shouldHideUnstaged?[...t]:this.shouldHidePartial?this.partiallyStaged.filter(r=>t.has(r)):[];s.length!==0&&(this.patch=await Rt(s,{cwd:this.workTree}),this.patch!==null&&await Nt(s,{cwd:this.workTree}))}snapshotMergeState(){this.gitDir.length!==0&&(this.merge=["MERGE_HEAD","MERGE_MODE","MERGE_MSG"].map(t=>{const s=te(this.gitDir,t);return ie(s)?{body:_e(s),existed:!0,name:t}:{body:null,existed:!1,name:t}}))}restoreMergeState(){if(!(this.gitDir.length===0||this.merge.length===0))for(const t of this.merge){const s=te(this.gitDir,t.name);try{t.existed&&t.body!==null?De(s,t.body):ie(s)&&Le(s)}catch{}}}}var Wt=Object.defineProperty,W=f((e,t)=>Wt(e,"name",{value:t,configurable:!0}),"r");const Ae=W(e=>e.includes("/"),"isPathStyle"),q=W((e,t)=>t?e.toLowerCase():e,"normalizeForMatch"),Kt=W((e,t,s,r={})=>{const n=Ae(e),i=r.caseInsensitive===!0,o=q(e,i),a=[];for(const c of t){const d=n?D(s,c):Te(c);$e(o,q(d,i))&&a.push(c)}return a},"matchFiles"),Yt=W((e,t,s,r={})=>{if(!t||t.length===0)return[...e];const n=r.caseInsensitive===!0;return e.filter(i=>{for(const o of t){const a=Ae(o)?D(s,i):Te(i),c=q(o,n);if($e(c,q(a,n)))return!1}return!0})},"applyIgnore");var Qt=Object.defineProperty,L=f((e,t)=>Qt(e,"name",{value:t,configurable:!0}),"g");const Jt=L(e=>{switch(e){case"failed":return"red";case"running":return"cyan";case"skipped":return"yellow";case"success":return"green";default:return"gray"}},"colorForStatus"),ve=L(e=>{if(e==="running")return w.jsx(Ue,{type:"dots"});const t=e==="failed"?xe:e==="skipped"?H:e==="success"?Ce:H;return w.jsx($,{color:Jt(e),children:t})},"iconForStatus"),ye=L(({state:e,tick:t,verbose:s})=>w.jsxs(j,{flexDirection:"column",children:[[...e.patterns.values()].map(r=>w.jsxs(j,{flexDirection:"column",children:[w.jsxs(j,{children:[ve(r.status),w.jsxs($,{children:[" ",r.title]})]}),[...r.commands.values()].map(n=>w.jsxs(j,{flexDirection:"column",marginLeft:2,children:[w.jsxs(j,{children:[ve(n.status),w.jsxs($,{children:[" ",n.title," "]}),n.status!=="pending"&&n.status!=="running"?w.jsxs($,{color:"gray",children:["(",n.durationMs,"ms)"]}):null]}),s&&n.output?w.jsx(j,{flexDirection:"column",marginLeft:2,children:n.output.split(/\r?\n/).slice(0,20).map((i,o)=>w.jsx($,{color:"gray",children:i},`${n.id}-line-${o}`))}):null,n.status==="failed"&&n.error?w.jsx(j,{marginLeft:2,children:w.jsx($,{color:"red",children:n.error.message})}):null]},n.id))]},r.id)),e.infoMessages.map((r,n)=>w.jsx($,{color:"gray",children:r},`info-${n}`)),e.warnMessages.map((r,n)=>w.jsx($,{color:"yellow",children:r},`warn-${n}`)),e.errorMessages.map(({message:r},n)=>w.jsx($,{color:"red",children:r},`err-${n}`))]}),"App"),Xt=L((e={})=>{const t=e.verbose===!0,s={errorMessages:[],infoMessages:[],patterns:new Map,started:!1,warnMessages:[]};let r=0;const n=qe(w.jsx(ye,{state:s,tick:r,verbose:t}),{exitOnCtrlC:!1,stdout:process.stderr}),i=L(()=>{r+=1,n.rerender(w.jsx(ye,{state:s,tick:r,verbose:t}))},"refresh");return{commandEnd({commandId:o,durationMs:a,error:c,output:d,patternId:u,status:l}){const p=s.patterns.get(u)?.commands.get(o);p&&(p.status=l,p.durationMs=a,p.output=d,p.error=c,i())},commandStart({commandId:o,patternId:a}){const c=s.patterns.get(a)?.commands.get(o);c&&(c.status="running",i())},error({error:o,message:a}){s.errorMessages.push({error:o,message:a}),i()},info({message:o}){s.infoMessages.push(o),i()},patternEnd({patternId:o,status:a}){const c=s.patterns.get(o);c&&(c.status=a,i())},patternStart({patternId:o}){const a=s.patterns.get(o);a&&(a.status="running",i())},start({patterns:o}){s.started=!0;for(const a of o){const c=new Map;for(const d of a.commands)c.set(d.id,{durationMs:0,id:d.id,status:"pending",title:d.title});s.patterns.set(a.id,{commands:c,id:a.id,status:"pending",title:a.title})}i()},async stop(){n.unmount(),await n.waitUntilExit()},warn({message:o}){s.warnMessages.push(o),i()}}},"createInkRenderer");var Zt=Object.defineProperty,Z=f((e,t)=>Zt(e,"name",{value:t,configurable:!0}),"a$1");const ke=Z((e={})=>{const{quiet:t=!1,verbose:s=!1}=e,r=new Map,n=new Map,i=Z(a=>{t||process.stderr.write(`${a}
|
|
14
|
-
`)},"print"),o=Z(a=>{switch(a){case"failed":return J(xe);case"running":return Q(">");case"skipped":return oe(H);case"success":return ze(Ce);default:return C(H)}},"iconFor");return{commandEnd({commandId:a,durationMs:c,error:d,output:u,status:l}){const p=n.get(a)??a,v=C(`(${c}ms)`);if(i(` ${o(l)} ${p} ${v}`),l==="failed"&&d&&i(C(d.message)),(l==="failed"||s)&&u&&u.trim().length>0)for(const h of u.split(/\r?\n/))i(` ${C(h)}`)},commandStart({commandId:a}){if(!s)return;const c=n.get(a)??a;i(` ${C("…")} ${c}`)},error({error:a,message:c}){t?process.stderr.write(`${J(c)}
|
|
15
|
-
`):i(J(c)),a?.stack&&(s||!t)&&process.stderr.write(`${C(a.stack)}
|
|
16
|
-
`)},info({message:a}){i(C(a))},patternEnd({patternId:a,status:c}){const d=r.get(a)??a;i(`${o(c)} ${d}`)},patternStart({patternId:a}){const c=r.get(a)??a;i(`${Q(">")} ${c}`)},start({patterns:a}){if(a.length===0){i(C("No staged files matched any pattern."));return}const c=new Set(a.flatMap(d=>d.files)).size;i(`${Q(">")} Running staged tasks on ${c} file${c===1?"":"s"} across ${a.length} pattern${a.length===1?"":"s"}`);for(const d of a){r.set(d.id,d.title);for(const u of d.commands)n.set(u.id,u.title)}},stop(){},warn({message:a}){i(oe(a))}}},"createPlainRenderer");var es=Object.defineProperty,ts=f((e,t)=>es(e,"name",{value:t,configurable:!0}),"t");const ss=ts(async e=>{const{env:t}=process;if(e.debug===!0||e.quiet===!0||t.NODE_ENV==="test"||t.TERM==="dumb"||t.CI!==void 0||!process.stderr.isTTY)return ke({quiet:e.quiet,verbose:e.verbose});try{return Xt({verbose:e.verbose})}catch{return ke({quiet:e.quiet,verbose:e.verbose})}},"pickRenderer");var rs=Object.defineProperty,G=f((e,t)=>rs(e,"name",{value:t,configurable:!0}),"a");const ee=G(e=>typeof e=="object"&&e!==null&&typeof e.title=="string"&&typeof e.task=="function","isCustomTask"),ns=G(async e=>{let t=0,s=0;const r=G(()=>(t+=1,`pattern-${t}`),"nextPatternId"),n=G(()=>(s+=1,`cmd-${s}`),"nextCommandId"),i=G(async(a,c,d)=>{if(typeof a=="string"){d.push({command:a,files:c,id:n(),source:"string",title:a});return}if(Array.isArray(a)){for(const u of a)await i(u,c,d);return}if(typeof a=="function"){const u=await a([...c]);if(typeof u=="string"){d.push({command:u,files:c,id:n(),source:"function",title:u});return}if(Array.isArray(u)){for(const l of u)if(typeof l=="string")d.push({command:l,files:c,id:n(),source:"function",title:l});else if(ee(l))d.push({files:c,id:n(),run:l.task,source:"custom",title:l.title});else throw new T("Task function returned an array with an unsupported entry — expected strings or { title, task }.");return}if(ee(u)){d.push({files:c,id:n(),run:u.task,source:"custom",title:u.title});return}throw new T("Task function returned an unsupported value — expected string, string[], or { title, task }.")}if(ee(a)){d.push({files:c,id:n(),run:a.task,source:"custom",title:a.title});return}throw new T("Unsupported task value — expected string, string[], function, or { title, task }.")},"expandTask"),o=[];for(const[a,c]of Object.entries(e.config)){const d=Kt(a,e.files,e.cwd,{caseInsensitive:e.caseInsensitive===!0});if(d.length===0)continue;const u=e.relative?d.map(p=>D(e.cwd,p)):d,l=[];await i(c,u,l),l.length!==0&&o.push({commands:l,files:u,id:r(),pattern:a,title:`${a} — ${d.length} file${d.length===1?"":"s"}`})}return o},"buildTaskGraph");var as=Object.defineProperty,K=f((e,t)=>as(e,"name",{value:t,configurable:!0}),"c");const is=K(e=>{const t=[];let s="",r=!1,n=!1;for(let i=0;i<e.length;i+=1){const o=e[i];if(o===void 0)break;if(o==="\\"&&!r&&i+1<e.length){const a=e[i+1];if(a!==void 0){n&&a!=='"'&&a!=="\\"&&(s+=o),s+=a,i+=1;continue}}if(o==='"'&&!r){n=!n;continue}if(o==="'"&&!n){r=!r;continue}if(!r&&!n&&/\s/.test(o)){s.length>0&&(t.push(s),s="");continue}s+=o}if(r||n)throw new T(`Unterminated ${r?"single":"double"} quote in command: ${e}`);return s.length>0&&t.push(s),t},"parseCommandString"),Pe=process.platform==="win32"?28e3:131072,os=K((e,t,s)=>{const r=[];let n=[],i=t;const o=s<=0?Pe:s;for(const a of e){const c=Buffer.byteLength(a)+1;n.length>0&&i+c>o&&(r.push(n),n=[],i=t),n.push(a),i+=c}return n.length>0&&r.push(n),r},"chunkFiles"),cs=K(async(e,t,s)=>{const r=is(e);if(r.length===0)throw new E(e,"Empty command for staged task.");const[n,...i]=r;if(n===void 0)throw new E(e,"Empty command for staged task.");const o=Buffer.byteLength(n)+i.reduce((u,l)=>u+Buffer.byteLength(l)+1,0),a=os(t,o,s.maxArgLength??Pe),c=Date.now(),d=[];for(const u of a){if(s.signal?.aborted===!0)throw new E(e,"Task aborted by earlier failure.");const l=Se(n,[...i,...u],{nodeOptions:{cwd:s.cwd,env:ds(s.env,s.cwd),killSignal:s.killSignal??"SIGTERM",stdio:["ignore","pipe","pipe"]},...s.signal===void 0?{}:{signal:s.signal}}),p=await l,v=[p.stdout,p.stderr].filter(m=>m.length>0).join(`
|
|
17
|
-
`);v.length>0&&d.push(v);const h=l.process?.signalCode??null;if(l.aborted||h!==null||p.exitCode===void 0){const m=l.aborted?"Task aborted by earlier failure.":h===null?v.trim()||"Task exited without a numeric status code.":`Task killed by signal ${h}.`;throw new E(e,m)}if(p.exitCode!==0)throw new E(e,v.trim()||`Exit code ${p.exitCode} from ${n}`)}return{durationMs:Date.now()-c,output:d.join(`
|
|
18
|
-
`)}},"execCommand"),ds=K((e,t)=>{const s={...process.env};process.stderr.isTTY&&s.FORCE_COLOR===void 0&&s.NO_COLOR===void 0&&(s.FORCE_COLOR="1");const r=e?{...s,...e}:s;return Ve(r,t)},"buildTaskEnv");var ls=Object.defineProperty,M=f((e,t)=>ls(e,"name",{value:t,configurable:!0}),"o");const us=M(async(e,t,s)=>{const r=hs(s.concurrent,e.length),n=[],i=new AbortController;let o=!1,a=0;const c=M(()=>{o||(o=!0,s.continueOnError||i.abort())},"cancel");s.externalSignal&&(s.externalSignal.aborted?c():s.externalSignal.addEventListener("abort",()=>{c()},{once:!0}));const d=M(h=>{for(const m of h.commands)t.commandEnd({commandId:m.id,durationMs:0,patternId:h.id,status:"skipped"})},"emitSkippedCommands"),u=M(async h=>{if(o){d(h),t.patternEnd({patternId:h.id,status:"skipped"});return}t.patternStart({patternId:h.id});let m="success";for(const k of h.commands){if(o){t.commandEnd({commandId:k.id,durationMs:0,patternId:h.id,status:"skipped"}),m=m==="success"?"skipped":m;continue}t.commandStart({commandId:k.id,patternId:h.id});const b=await fs(k,s,i.signal),S=b.status==="failed"&&i.signal.aborted?{...b,status:"skipped"}:b;if(t.commandEnd({commandId:k.id,durationMs:S.durationMs,error:S.error,output:S.output,patternId:h.id,status:S.status}),S.status==="failed"){n.push(k.title),m="failed",c();break}if(S.status==="skipped"){m=m==="success"?"skipped":m;break}}t.patternEnd({patternId:h.id,status:m})},"runOne"),l=M(async()=>{for(;a<e.length;){const h=e[a];a+=1,h&&await u(h)}},"pickNext"),p=[];for(let h=0;h<Math.min(r,e.length);h+=1)p.push(l());await Promise.all(p);const v=s.externalSignal?.aborted===!0;return{failedCommands:n,success:n.length===0&&!v}},"runTasks"),fs=M(async(e,t,s)=>{const r=Date.now();try{if(e.source==="custom"&&e.run)return await e.run([...e.files]),{durationMs:Date.now()-r,status:"success"};if(e.command){const n=await cs(e.command,e.files,{cwd:t.cwd,killSignal:t.killSignal,maxArgLength:t.maxArgLength,signal:s});return{durationMs:n.durationMs,output:t.verbose?n.output:void 0,status:"success"}}return{durationMs:Date.now()-r,error:new E(e.title,"Command has no invocation target."),status:"failed"}}catch(n){const i=n instanceof Error?n:new Error(String(n));return{durationMs:Date.now()-r,error:i,output:i instanceof E?i.message:void 0,status:"failed"}}},"runCommand"),hs=M((e,t)=>{if(e===!1)return 1;if(e===!0){const r=Math.max(1,typeof ce=="function"?ce():4);return Math.min(Math.max(1,t),r)}const s=Math.floor(e);return s>0?s:1},"concurrencyLimit");var ps=Object.defineProperty,se=f((e,t)=>ps(e,"name",{value:t,configurable:!0}),"u");const gs=!0,ms=se(e=>{try{return!nt(e)}catch{return!1}},"detectCaseInsensitive"),ws=se(async(e={})=>{const t=e.cwd??process.cwd(),s=await ss(e),r=await bt(e);typeof r!="function"&&fe(r);const n=new Vt({...e,cwd:t}),i=new AbortController;let o=!1;const a=se(l=>{if(o){process.removeListener("SIGINT",a),process.removeListener("SIGTERM",a),process.kill(process.pid,l);return}o=!0,s.warn({message:`Received ${l} — cancelling staged tasks and restoring state. Press Ctrl+C again to abort.`}),i.abort()},"onInterrupt");process.on("SIGINT",a),process.on("SIGTERM",a);let c={failedCommands:[],ranTasks:!1,success:!0},d=!1,u=!1;try{await n.prepare(),d=!0;for(const b of n.warnings)s.warn({message:b});if(n.stagedFiles.length===0)return e.allowEmpty!==!0&&s.info({message:"No staged files found."}),u=!0,{failedCommands:[],ranTasks:!1,success:!0};const l=ms(t),p=Yt(n.stagedFiles,e.ignore,t,{caseInsensitive:l});if(p.length===0&&n.stagedFiles.length>0)return s.info({message:"Every staged file was excluded by the `ignore` list."}),u=!0,{failedCommands:[],ranTasks:!1,success:!0};const v=typeof r=="function"?fe(await r([...p])):r,h=await ns({caseInsensitive:l,config:v,cwd:t,files:p,relative:e.relative});if(s.start({patterns:h}),h.length===0)return s.info({message:"No staged files matched any pattern."}),u=!0,{failedCommands:[],ranTasks:!1,success:!0};const{failedCommands:m,success:k}=await us(h,s,{concurrent:e.concurrent??gs,continueOnError:e.continueOnError===!0,cwd:t,externalSignal:i.signal,killSignal:e.killSignal,maxArgLength:e.maxArgLength,verbose:e.verbose});if(c={failedCommands:m,ranTasks:!0,success:k},k){if(e.diff===void 0&&(await n.applyModifications({autoStage:e.autoStage===!0}),e.failOnChanges===!0&&n.indexTreeChanged()&&(s.warn({message:"Tasks modified staged content — failing because --fail-on-changes is set."}),c={failedCommands:[...m],ranTasks:!0,success:!1}),e.allowEmpty!==!0&&n.postTaskIndexMatchesHead()))throw new dt("All staged changes were reverted by tasks. Re-stage changes or rerun with --allow-empty.")}else if(e.revert===!0)s.info({message:"Reverting working tree from backup stash."}),await n.revert();else{const b=n.recoveryHint();b&&s.warn({message:b})}return await n.restoreUnstagedChanges(),u=c.success,c}catch(l){const p=l instanceof Error?l.message:String(l),v=l instanceof Error?l:new Error(p);if(s.error({error:v,message:p}),l instanceof O)return{failedCommands:c.failedCommands,ranTasks:c.ranTasks,success:!1};throw l}finally{if(process.removeListener("SIGINT",a),process.removeListener("SIGTERM",a),d)try{await n.cleanup(u)}catch(l){s.error({error:l,message:"Cleanup failed."})}await s.stop()}},"runStaged");var vs=Object.defineProperty,ys=f((e,t)=>vs(e,"name",{value:t,configurable:!0}),"n");const ks="VIS_STAGED_CONCURRENT",be=ys(e=>{const t=e.trim();if(t==="true"||t==="")return!0;if(t==="false")return!1;const s=Number(t);return Number.isNaN(s)?!0:s},"parseConcurrent");var bs=Object.defineProperty,B=f((e,t)=>bs(e,"name",{value:t,configurable:!0}),"d");const Ts=B((e,t)=>{const s={};t!==void 0&&(s.config=t);const r=B(y=>e[y]===void 0?void 0:!!e[y],"readBool"),n=B(y=>{const Y=e[y];return typeof Y=="string"&&Y.length>0?Y:void 0},"readString"),i=r("allow-empty");i!==void 0&&(s.allowEmpty=i);const o=r("auto-stage");o!==void 0&&(s.autoStage=o);const a=r("continue-on-error");a!==void 0&&(s.continueOnError=a);const c=r("debug");c!==void 0&&(s.debug=c);const d=r("fail-on-changes");d!==void 0&&(s.failOnChanges=d);const u=r("hide-partially-staged");u!==void 0&&(s.hidePartiallyStaged=u);const l=r("hide-unstaged");l!==void 0&&(s.hideUnstaged=l);const p=r("quiet");p!==void 0&&(s.quiet=p);const v=r("relative");v!==void 0&&(s.relative=v);const h=r("revert");h!==void 0&&(s.revert=h);const m=r("stash");m!==void 0&&(s.stash=m);const k=r("verbose");k!==void 0&&(s.verbose=k);const b=n("cwd");b!==void 0&&(s.cwd=b);const S=n("diff");S!==void 0&&(s.diff=S);const ae=n("diff-filter");if(ae!==void 0&&(s.diffFilter=ae),r("force-kill")===!0&&(s.killSignal="SIGKILL"),e.concurrent===void 0){const y=process.env[ks];y!==void 0&&(s.concurrent=be(y.trim()))}else{const{concurrent:y}=e;s.concurrent=be(typeof y=="string"?y:typeof y=="number"||typeof y=="boolean"?String(y):"")}return s},"buildRunOptions"),Ps=B(async({options:e,visConfig:t})=>{const s=(t??{}).staged;if(!s)throw new Error(`No "staged" config found in vis.config.ts. Add one:
|
|
19
|
-
|
|
20
|
-
// vis.config.ts
|
|
21
|
-
import { defineConfig } from "@visulima/vis/config";
|
|
22
|
-
|
|
23
|
-
export default defineConfig({
|
|
24
|
-
staged: { '*': 'vis check --fix' },
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
Migrating from lint-staged or nano-staged? Run \`vis migrate lint-staged\` (or \`vis migrate nano-staged\`) to move the config in and remove the legacy files.`);(await ws(Ts(e,s))).success||(process.exitCode=1)},"execute");export{Ts as buildRunOptions,Ps as default};
|
|
1
|
+
var Je=Object.defineProperty;var v=(o,t)=>Je(o,"name",{value:t,configurable:!0});import{createRequire as qe}from"node:module";import{w as p,af as U,a5 as e,a6 as s,n as r,aH as Te,aG as Qe,aI as Ze,aF as et,aJ as tt,aK as rt,k as ot,R as nt,s as it}from"./bin.js";import{A as st}from"../packem_shared/pm-runner-Ta_yz2uP.js";import{b as at}from"./config.js";import{o as lt,M as he,i as dt,$ as ut,K as ht}from"../packem_shared/readFileSync-4c_c6Qey-6SWMDNdw.js";import{g as mt,r as gt}from"../packem_shared/tabs-xZkm6Y_J.js";const Ke=qe(import.meta.url),Q=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ye=v(o=>{if(typeof Q<"u"&&Q.versions&&Q.versions.node){const[t,i]=Q.versions.node.split(".").map(Number);if(t>22||t===22&&i>=3||t===20&&i>=16)return Q.getBuiltinModule(o)}return Ke(o)},"__cjs_getBuiltinModule"),{writeFileSync:ct}=Ye("node:fs");var ft=Object.defineProperty,pt=v((o,t)=>ft(o,"name",{value:t,configurable:!0}),"a$2"),xt=Object.defineProperty,vt=pt((o,t)=>xt(o,"name",{value:t,configurable:!0}),"r"),jt=Object.defineProperty,bt=vt((o,t)=>jt(o,"name",{value:t,configurable:!0}),"n");const yt=bt((o,{whitespace:t=!0}={})=>o.replace(lt,i=>i.startsWith('"')||i[1]==="*"&&!i.endsWith("*/")?i:t?i.replaceAll(/\S/g," "):""),"stripJsonComments"),V=[{config:{customizations:{vscode:{extensions:["dbaeumer.vscode-eslint","esbenp.prettier-vscode"]}},features:{"ghcr.io/devcontainers/features/git:1":{},"ghcr.io/devcontainers/features/github-cli:1":{}},forwardPorts:[3e3],image:"mcr.microsoft.com/devcontainers/javascript-node:22",name:"Node.js",postCreateCommand:"npm install"},description:"Node.js 22 with Git and GitHub CLI",id:"node",name:"Node.js"},{config:{customizations:{vscode:{extensions:["dbaeumer.vscode-eslint","esbenp.prettier-vscode"]}},features:{"ghcr.io/devcontainers/features/git:1":{},"ghcr.io/devcontainers/features/github-cli:1":{}},forwardPorts:[3e3],image:"mcr.microsoft.com/devcontainers/javascript-node:22",mounts:[{source:"${localWorkspaceFolderBasename}-node_modules",target:"${containerWorkspaceFolder}/node_modules",type:"volume"},{source:"${localWorkspaceFolderBasename}-pnpm-store",target:"/home/node/.local/share/pnpm/store",type:"volume"}],name:"Node.js + pnpm Monorepo",postCreateCommand:"corepack enable && pnpm install",remoteUser:"node",workspaceFolder:"/workspaces/${localWorkspaceFolderBasename}"},description:"Node.js 22 with pnpm, corepack, and optimized volume mounts",id:"node-pnpm",name:"Node.js + pnpm"},{config:{customizations:{vscode:{extensions:["dbaeumer.vscode-eslint","esbenp.prettier-vscode","ms-azuretools.vscode-docker"]}},dockerComposeFile:"docker-compose.yml",forwardPorts:[3e3,5432],name:"Node.js + PostgreSQL",postCreateCommand:"npm install",service:"app",workspaceFolder:"/workspaces/${localWorkspaceFolderBasename}"},description:"Node.js with PostgreSQL via Docker Compose",id:"node-postgres",name:"Node.js + PostgreSQL"},{config:{customizations:{vscode:{extensions:["dbaeumer.vscode-eslint","esbenp.prettier-vscode","ms-azuretools.vscode-docker"]}},features:{"ghcr.io/devcontainers/features/docker-in-docker:2":{},"ghcr.io/devcontainers/features/git:1":{},"ghcr.io/devcontainers/features/github-cli:1":{}},forwardPorts:[3e3],image:"mcr.microsoft.com/devcontainers/javascript-node:22",name:"Node.js + Docker",postCreateCommand:"npm install"},description:"Node.js 22 with Docker-in-Docker for container workflows",id:"node-dind",name:"Node.js + Docker-in-Docker"},{config:{customizations:{vscode:{extensions:["dbaeumer.vscode-eslint","esbenp.prettier-vscode","ms-azuretools.vscode-docker"]}},dockerComposeFile:"docker-compose.yml",features:{"ghcr.io/devcontainers/features/docker-in-docker:2":{}},forwardPorts:[3e3,5432,6379],name:"Full Stack",postCreateCommand:"npm install",service:"app",workspaceFolder:"/workspaces/${localWorkspaceFolderBasename}"},description:"Node.js + PostgreSQL + Redis + Docker via Compose",id:"fullstack",name:"Full Stack"},{config:{customizations:{vscode:{extensions:["ms-python.python","ms-python.vscode-pylance"],settings:{"editor.formatOnSave":!0,"python.defaultInterpreterPath":"/usr/local/bin/python"}}},features:{"ghcr.io/devcontainers/features/git:1":{},"ghcr.io/devcontainers/features/github-cli:1":{},"ghcr.io/devcontainers/features/python:1":{version:"3.12"}},forwardPorts:[8e3],image:"mcr.microsoft.com/devcontainers/python:3.12",name:"Python",postCreateCommand:"pip install -r requirements.txt || true"},description:"Python 3.12 with pip and venv",id:"python",name:"Python"},{config:{customizations:{vscode:{extensions:["golang.go"],settings:{"editor.formatOnSave":!0,"go.toolsManagement.autoUpdate":!0}}},features:{"ghcr.io/devcontainers/features/git:1":{},"ghcr.io/devcontainers/features/go:1":{version:"1.22"}},forwardPorts:[8080],image:"mcr.microsoft.com/devcontainers/go:1.22",name:"Go",postCreateCommand:"go mod download || true"},description:"Go 1.22 development environment",id:"go",name:"Go"},{config:{customizations:{vscode:{extensions:["rust-lang.rust-analyzer","tamasfe.even-better-toml"],settings:{"editor.formatOnSave":!0}}},features:{"ghcr.io/devcontainers/features/git:1":{},"ghcr.io/devcontainers/features/rust:1":{}},image:"mcr.microsoft.com/devcontainers/rust:latest",name:"Rust",postCreateCommand:"cargo build || true"},description:"Rust development with cargo and rust-analyzer",id:"rust",name:"Rust"},{config:{customizations:{vscode:{extensions:["vscjava.vscode-java-pack","vscjava.vscode-maven"]}},features:{"ghcr.io/devcontainers/features/git:1":{},"ghcr.io/devcontainers/features/java:1":{version:"17"}},forwardPorts:[8080],image:"mcr.microsoft.com/devcontainers/java:17",name:"Java",postCreateCommand:"./mvnw install || ./gradlew build || true"},description:"Java 17 with Maven/Gradle support",id:"java",name:"Java"},{config:{customizations:{vscode:{extensions:["ms-azuretools.vscode-docker","ms-kubernetes-tools.vscode-kubernetes-tools","hashicorp.terraform"]}},features:{"ghcr.io/devcontainers/features/aws-cli:1":{},"ghcr.io/devcontainers/features/azure-cli:1":{},"ghcr.io/devcontainers/features/docker-in-docker:2":{},"ghcr.io/devcontainers/features/kubectl-helm-minikube:1":{},"ghcr.io/devcontainers/features/terraform:1":{}},image:"mcr.microsoft.com/devcontainers/base:ubuntu",name:"DevOps"},description:"Docker, Kubernetes, Terraform, AWS & Azure CLIs",id:"devops",name:"DevOps"},{config:{features:{"ghcr.io/devcontainers/features/common-utils:2":{}},image:"mcr.microsoft.com/devcontainers/base:ubuntu",name:"Minimal",remoteUser:"vscode"},description:"Bare Ubuntu with common utilities",id:"minimal",name:"Minimal"},{config:{image:"mcr.microsoft.com/devcontainers/base:ubuntu",name:"Custom"},description:"Minimal Ubuntu base - configure from scratch",id:"custom",name:"Custom (Blank)"}];var wt=Object.defineProperty,Pe=v((o,t)=>wt(o,"name",{value:t,configurable:!0}),"s$7");const Ct=Pe(o=>{const t=he(o,".devcontainer","devcontainer.json");if(!dt(t))return null;const i=ut(t),c=yt(i),a=c!==i;let n;try{n=JSON.parse(c)}catch(l){const m=l instanceof Error?l.message:String(l);throw new Error(`Failed to parse ${t}: ${m}`,{cause:l})}return{config:n,hadComments:a}},"readDevcontainerJson"),St=Pe((o,t,i)=>{const c=i?ht(i):he(o,".devcontainer"),a=i??he(c,"devcontainer.json");at(c),ct(a,`${JSON.stringify(t,null,2)}
|
|
2
|
+
`,"utf8")},"writeDevcontainerJson");var kt=Object.defineProperty,Et=v((o,t)=>kt(o,"name",{value:t,configurable:!0}),"s$6");const It={bun:[{source:"${localWorkspaceFolderBasename}-node_modules",target:"${containerWorkspaceFolder}/node_modules",type:"volume"},{source:"${localWorkspaceFolderBasename}-bun-cache",target:"/home/node/.bun/install/cache",type:"volume"}],deno:[{source:"${localWorkspaceFolderBasename}-deno-cache",target:"/home/node/.cache/deno",type:"volume"}],npm:[{source:"${localWorkspaceFolderBasename}-node_modules",target:"${containerWorkspaceFolder}/node_modules",type:"volume"},{source:"${localWorkspaceFolderBasename}-npm-cache",target:"/home/node/.npm",type:"volume"}],pnpm:[{source:"${localWorkspaceFolderBasename}-node_modules",target:"${containerWorkspaceFolder}/node_modules",type:"volume"},{source:"${localWorkspaceFolderBasename}-pnpm-store",target:"/home/node/.local/share/pnpm/store",type:"volume"}],yarn:[{source:"${localWorkspaceFolderBasename}-node_modules",target:"${containerWorkspaceFolder}/node_modules",type:"volume"},{source:"${localWorkspaceFolderBasename}-yarn-cache",target:"/home/node/.yarn/cache",type:"volume"}]},Tt=[{featureMatch:"docker-in-docker",mounts:[]},{featureMatch:"docker-outside-of-docker",mounts:[{source:"/var/run/docker.sock",target:"/var/run/docker.sock",type:"bind"}]},{featureMatch:"/features/git:",mounts:[{source:"${localWorkspaceFolderBasename}-git-config",target:"/home/node/.gitconfig",type:"volume"}]}],je=Et((o,t,i)=>{const c=[],a=new Set(i.map(l=>typeof l=="string"?l:l.target));if(o)for(const l of It[o])a.has(l.target)||c.push(l);const n=Object.keys(t);for(const{featureMatch:l,mounts:m}of Tt)if(n.some(g=>g.includes(l)))for(const g of m)a.has(g.target)||c.push(g);return c},"getSuggestedMounts"),N=["general","features","ports","lifecycle","extensions","environment","mounts","compose"];var Pt=Object.defineProperty,oe=v((o,t)=>Pt(o,"name",{value:t,configurable:!0}),"c$2");const Z=oe(o=>structuredClone(o),"deepClone");class Dt{static{v(this,"DevcontainerStore")}static{oe(this,"DevcontainerStore")}#o=new Set;#e;constructor(t,i,c=null){const a=t===null,n=t??{name:""},l=Z(n);this.#e={config:l,detectedPm:c,extensionSearch:"",featureSearch:"",fieldEditing:!1,fieldIndex:0,hadComments:i,isDirty:!1,mode:a?"create":"edit",originalConfig:a?null:Z(n),section:"general",showTemplateSelector:a,suggestedMounts:je(c,l.features??{},l.mounts??[]),templateIndex:0}}getSnapshot=oe(()=>this.#e,"getSnapshot");subscribe=oe(t=>(this.#o.add(t),()=>{this.#o.delete(t)}),"subscribe");setSection(t){t!==this.#e.section&&this.#t({...this.#e,fieldEditing:!1,fieldIndex:0,section:t})}nextSection(){const t=(N.indexOf(this.#e.section)+1)%N.length;this.setSection(N[t])}previousSection(){const t=(N.indexOf(this.#e.section)-1+N.length)%N.length;this.setSection(N[t])}setFieldIndex(t){t!==this.#e.fieldIndex&&this.#t({...this.#e,fieldIndex:Math.max(0,t)})}setFieldEditing(t){t!==this.#e.fieldEditing&&this.#t({...this.#e,fieldEditing:t})}setTemplateIndex(t){const i=Math.max(0,Math.min(t,V.length-1));i!==this.#e.templateIndex&&this.#t({...this.#e,templateIndex:i})}applyTemplate(t){const i=V.find(c=>c.id===t);i&&this.#t(this.#r({...this.#e,config:Z(i.config),isDirty:!0,showTemplateSelector:!1}))}dismissTemplateSelector(){this.#t({...this.#e,showTemplateSelector:!1})}updateConfig(t){this.#t({...this.#e,config:{...this.#e.config,...t},isDirty:!0})}toggleFeature(t){const i={...this.#e.config.features};i[t]===void 0?i[t]={}:delete i[t],this.#t(this.#r({...this.#e,config:{...this.#e.config,features:i},isDirty:!0}))}setFeatureSearch(t){this.#t({...this.#e,featureSearch:t,fieldIndex:0})}addPort(t){const i=this.#e.config.forwardPorts??[];if(i.includes(t))return;const c=[...i,t];this.#t({...this.#e,config:{...this.#e.config,forwardPorts:c},isDirty:!0})}removePort(t){const i=[...this.#e.config.forwardPorts??[]];i.splice(t,1),this.#t({...this.#e,config:{...this.#e.config,forwardPorts:i.length>0?i:void 0},isDirty:!0})}toggleExtension(t){const i={...this.#e.config.customizations},c={...i.vscode},a=[...c.extensions??[]],n=a.indexOf(t);n===-1?a.push(t):a.splice(n,1),c.extensions=a.length>0?a:void 0,i.vscode=c.extensions||c.settings?c:void 0,this.#t({...this.#e,config:{...this.#e.config,customizations:i.vscode||i.jetbrains?i:void 0},isDirty:!0})}setExtensionSearch(t){this.#t({...this.#e,extensionSearch:t,fieldIndex:0})}addEnvVar(t,i,c){const a=t==="container"?"containerEnv":"remoteEnv",n={...this.#e.config[a],[i]:c};this.#t({...this.#e,config:{...this.#e.config,[a]:n},isDirty:!0})}removeEnvVar(t,i){const c=t==="container"?"containerEnv":"remoteEnv",a={...this.#e.config[c]};delete a[i],this.#t({...this.#e,config:{...this.#e.config,[c]:Object.keys(a).length>0?a:void 0},isDirty:!0})}addMount(t){const i=[...this.#e.config.mounts??[],t];this.#t(this.#r({...this.#e,config:{...this.#e.config,mounts:i},isDirty:!0}))}removeMount(t){const i=[...this.#e.config.mounts??[]];i.splice(t,1),this.#t(this.#r({...this.#e,config:{...this.#e.config,mounts:i.length>0?i:void 0},isDirty:!0}))}applySuggestedMounts(){if(this.#e.suggestedMounts.length===0)return;const t=[...this.#e.config.mounts??[],...this.#e.suggestedMounts];this.#t(this.#r({...this.#e,config:{...this.#e.config,mounts:t},isDirty:!0}))}setLifecycleCommand(t,i){this.#t({...this.#e,config:{...this.#e.config,[t]:i||void 0},isDirty:!0})}markClean(){this.#t({...this.#e,isDirty:!1,originalConfig:Z(this.#e.config)})}getJsonPreview(){return JSON.stringify(this.#n(),null,2)}cleanConfig(){return this.#n()}#n(){const t=Z(this.#e.config);for(const[i,c]of Object.entries(t))(c===""||c===void 0)&&delete t[i];return t.build&&(t.build.dockerfile===""&&delete t.build.dockerfile,t.build.context===""&&delete t.build.context,t.build.args&&Object.keys(t.build.args).length===0&&delete t.build.args,Object.keys(t.build).length===0&&delete t.build),t.forwardPorts?.length===0&&delete t.forwardPorts,t.mounts?.length===0&&delete t.mounts,t.runServices?.length===0&&delete t.runServices,t.capAdd?.length===0&&delete t.capAdd,t.securityOpt?.length===0&&delete t.securityOpt,t.features&&Object.keys(t.features).length===0&&delete t.features,t.customizations?.vscode?.extensions?.length===0&&delete t.customizations.vscode.extensions,t.customizations?.vscode&&Object.keys(t.customizations.vscode).length===0&&delete t.customizations.vscode,t.customizations&&Object.keys(t.customizations).length===0&&delete t.customizations,t.containerEnv&&Object.keys(t.containerEnv).length===0&&delete t.containerEnv,t.remoteEnv&&Object.keys(t.remoteEnv).length===0&&delete t.remoteEnv,t}#r(t){return{...t,suggestedMounts:je(t.detectedPm,t.config.features??{},t.config.mounts??[])}}#t(t){this.#e=t;for(const i of this.#o)try{i()}catch{}}}const be=[{category:"linting",description:"Integrates ESLint into the editor",id:"dbaeumer.vscode-eslint",name:"ESLint"},{category:"linting",description:"Stylelint CSS/SCSS linting",id:"stylelint.vscode-stylelint",name:"Stylelint"},{category:"formatting",description:"Opinionated code formatter",id:"esbenp.prettier-vscode",name:"Prettier"},{category:"formatting",description:"EditorConfig file support",id:"editorconfig.editorconfig",name:"EditorConfig"},{category:"formatting",description:"Fast Rust-based formatter and linter",id:"biomejs.biome",name:"Biome"},{category:"language",description:"Rich TypeScript and JavaScript support",id:"ms-vscode.vscode-typescript-next",name:"TypeScript Nightly"},{category:"language",description:"Tailwind CSS IntelliSense",id:"bradlc.vscode-tailwindcss",name:"Tailwind CSS"},{category:"language",description:"YAML language support with schemas",id:"redhat.vscode-yaml",name:"YAML"},{category:"language",description:"TOML language support",id:"tamasfe.even-better-toml",name:"TOML"},{category:"language",description:"Dockerfile and Docker Compose support",id:"ms-azuretools.vscode-docker",name:"Docker"},{category:"language",description:"Python language support with Pylance",id:"ms-python.python",name:"Python"},{category:"language",description:"Go language support",id:"golang.go",name:"Go"},{category:"language",description:"Rust language support via rust-analyzer",id:"rust-lang.rust-analyzer",name:"rust-analyzer"},{category:"git",description:"Git supercharged: blame, history, stash, etc.",id:"eamodio.gitlens",name:"GitLens"},{category:"git",description:"GitHub Pull Requests and Issues",id:"github.vscode-pull-request-github",name:"GitHub PR"},{category:"testing",description:"Vitest test explorer integration",id:"vitest.explorer",name:"Vitest Explorer"},{category:"testing",description:"Jest test runner and assertions",id:"orta.vscode-jest",name:"Jest"},{category:"debugging",description:"REST client for testing APIs",id:"humao.rest-client",name:"REST Client"},{category:"debugging",description:"Error Lens: inline error highlighting",id:"usernamehw.errorlens",name:"Error Lens"},{category:"other",description:"Intelligent code completion with AI",id:"github.copilot",name:"GitHub Copilot"},{category:"other",description:"Path autocompletion for imports",id:"christian-kohler.path-intellisense",name:"Path Intellisense"},{category:"other",description:"Import cost display in editor",id:"wix.vscode-import-cost",name:"Import Cost"},{category:"other",description:"Todo Tree: highlight and list TODOs",id:"gruntfuggly.todo-tree",name:"Todo Tree"}],ye=[{category:"language",description:"Node.js runtime via nvm with optional pnpm/yarn",id:"ghcr.io/devcontainers/features/node:1",name:"Node.js"},{category:"language",description:"Python runtime with pip and optional tools",id:"ghcr.io/devcontainers/features/python:1",name:"Python"},{category:"language",description:"Go compiler and tools",id:"ghcr.io/devcontainers/features/go:1",name:"Go"},{category:"language",description:"Rust toolchain via rustup",id:"ghcr.io/devcontainers/features/rust:1",name:"Rust"},{category:"language",description:"Java runtime and JDK via SDKMAN",id:"ghcr.io/devcontainers/features/java:1",name:"Java"},{category:"language",description:".NET SDK and runtime",id:"ghcr.io/devcontainers/features/dotnet:2",name:".NET"},{category:"tool",description:"Common utilities: zsh, Oh My Zsh, git, curl, etc.",id:"ghcr.io/devcontainers/features/common-utils:2",name:"Common Utilities"},{category:"tool",description:"Git version control",id:"ghcr.io/devcontainers/features/git:1",name:"Git"},{category:"tool",description:"Git Large File Storage support",id:"ghcr.io/devcontainers/features/git-lfs:1",name:"Git LFS"},{category:"tool",description:"GitHub CLI for repository management",id:"ghcr.io/devcontainers/features/github-cli:1",name:"GitHub CLI"},{category:"tool",description:"Run Docker containers inside the dev container",id:"ghcr.io/devcontainers/features/docker-in-docker:2",name:"Docker-in-Docker"},{category:"tool",description:"Access host Docker daemon from inside the container",id:"ghcr.io/devcontainers/features/docker-outside-of-docker:1",name:"Docker-from-Docker"},{category:"tool",description:"kubectl, Helm, and Minikube for Kubernetes",id:"ghcr.io/devcontainers/features/kubectl-helm-minikube:1",name:"Kubernetes Tools"},{category:"tool",description:"Infrastructure as code with Terraform",id:"ghcr.io/devcontainers/features/terraform:1",name:"Terraform"},{category:"tool",description:"Nix package manager",id:"ghcr.io/devcontainers/features/nix:1",name:"Nix"},{category:"tool",description:"SSH server for remote connections to the container",id:"ghcr.io/devcontainers/features/sshd:1",name:"SSH Server"},{category:"cloud",description:"Amazon Web Services CLI v2",id:"ghcr.io/devcontainers/features/aws-cli:1",name:"AWS CLI"},{category:"cloud",description:"Microsoft Azure CLI",id:"ghcr.io/devcontainers/features/azure-cli:1",name:"Azure CLI"},{category:"cloud",description:"Google Cloud Platform CLI",id:"ghcr.io/devcontainers/features/gcloud:1",name:"Google Cloud CLI"},{category:"database",description:"PostgreSQL client tools",id:"ghcr.io/devcontainers-extra/features/postgres-client:1",name:"PostgreSQL Client"},{category:"database",description:"Redis client tools",id:"ghcr.io/devcontainers-extra/features/redis-client:1",name:"Redis Client"}];var Ot=Object.defineProperty,De=v((o,t)=>Ot(o,"name",{value:t,configurable:!0}),"r$1");const ge=De(o=>{if(!o)return ye;const t=o.toLowerCase();return ye.filter(i=>i.name.toLowerCase().includes(t)||i.id.toLowerCase().includes(t)||i.description.toLowerCase().includes(t))},"filterFeatures"),fe=De(o=>{if(!o)return be;const t=o.toLowerCase();return be.filter(i=>i.name.toLowerCase().includes(t)||i.id.toLowerCase().includes(t)||i.description.toLowerCase().includes(t))},"filterExtensions");var Ft=Object.defineProperty,At=v((o,t)=>Ft(o,"name",{value:t,configurable:!0}),"t"),$t=Object.defineProperty,Mt=At((o,t)=>$t(o,"name",{value:t,configurable:!0}),"r"),Lt=Object.defineProperty,Oe=Mt((o,t)=>Lt(o,"name",{value:t,configurable:!0}),"r");const Bt=/^[a-z]$/i,Nt=Oe(o=>{const t=o.codePointAt(0);return t!==void 0&&(t<32||t===127)},"isControlCharacter"),Rt=Oe((o,t)=>o.length===0||Nt(o)?!1:t.ctrl&&t.meta?!Bt.test(o):!(t.ctrl||t.meta),"isInsertableInput");var zt=Object.defineProperty,Fe=v((o,t)=>zt(o,"name",{value:t,configurable:!0}),"w$3"),Gt=Object.defineProperty,Ae=Fe((o,t)=>Gt(o,"name",{value:t,configurable:!0}),"A"),_t=Object.defineProperty,ie=Ae((o,t)=>_t(o,"name",{value:t,configurable:!0}),"p");const Wt=/\S+\s*$/,de=ie((o,t)=>o.length===0||!t?void 0:t.find(i=>i.startsWith(o))?.slice(o.length)??void 0,"findSuggestion"),$e=-1,Ut=ie((o,t,i,c)=>t.leftArrow?Math.max(0,i-1):t.home||t.ctrl&&o==="a"?0:t.end||t.ctrl&&o==="e"?c:$e,"handleNavigation"),Vt=ie((o,t,i,c)=>{if(t.backspace&&c>0)return[i.slice(0,c-1)+i.slice(c),c-1];if(t.delete&&c<i.length)return[i.slice(0,c)+i.slice(c+1),c];if(t.ctrl&&o==="u")return[i.slice(c),0];if(t.ctrl&&o==="k")return[i.slice(0,c),c];if(t.ctrl&&o==="w"){const a=i.slice(0,c).replace(Wt,"");return[a+i.slice(c),a.length]}},"handleEditing");function X({defaultValue:o="",isDisabled:t=!1,mask:i=!1,onChange:c,onSubmit:a,placeholder:n,suggestions:l}){const[m,g]=p.useState(o),[f,j]=p.useState(o.length),x=p.useRef(m);x.current=m;const b=p.useRef(f);b.current=f;const w=p.useRef(c);w.current=c;const E=p.useRef(a);E.current=a;const D=de(m,l),R=p.useCallback((P,T)=>{const{current:I}=b,S=x.current;if(T.return){const C=de(S,l),k=C?S+C:S;C&&(g(k),j(k.length),w.current?.(k)),E.current?.(k);return}if(T.escape)return;if(T.rightArrow){const C=de(S,l);if(I===S.length&&C){const k=S+C;g(k),j(k.length),w.current?.(k);return}j(Math.min(S.length,I+1));return}const O=Ut(P,T,I,S.length);if(O!==$e){j(O);return}const q=Vt(P,T,S,I);if(q){const[C,k]=q;g(C),j(k),w.current?.(C);return}if(Rt(P,T)){const C=S.slice(0,I)+P+S.slice(I);g(C),j(I+P.length),w.current?.(C)}},[l]);U(R,{isActive:!t});const L=i?"*".repeat(m.length):m,H=L.slice(0,f),J=L[f],ee=L.slice(f+1);return t?e.jsx(s,{children:e.jsx(r,{dimColor:!0,children:L||n||""})}):m.length===0&&n?e.jsxs(s,{children:[e.jsx(r,{dimColor:!0,inverse:!0,children:n[0]}),e.jsx(r,{dimColor:!0,children:n.slice(1)})]}):e.jsxs(s,{children:[e.jsxs(r,{children:[H,e.jsx(r,{inverse:!0,children:J??" "}),ee]}),D?e.jsx(r,{dimColor:!0,children:D}):void 0]})}v(X,"k");Fe(X,"q");Ae(X,"y");ie(X,"TextInput");var Xt=Object.defineProperty,Ht=v((o,t)=>Xt(o,"name",{value:t,configurable:!0}),"l$1");const Me=["dockerComposeFile","service"],Jt={dockerComposeFile:"Compose File",service:"Service"},we={dockerComposeFile:"docker-compose.yml",service:"app"},qt={dockerComposeFile:"Path to Docker Compose file (relative to .devcontainer/)",service:"Which service in the compose file to connect the IDE to"},Kt=Ht(({config:o,fieldEditing:t,fieldIndex:i,onUpdate:c})=>{const a=!!o.dockerComposeFile,n=!!(o.image||o.build);return e.jsxs(s,{flexDirection:"column",paddingX:1,children:[e.jsx(s,{marginBottom:1,children:e.jsx(r,{bold:!0,color:"cyan",children:"Docker Compose Integration"})}),n&&a&&e.jsx(s,{marginBottom:1,children:e.jsx(r,{color:"yellow",children:"Note: When using Docker Compose, the image/build settings in General are ignored."})}),Me.map((l,m)=>{const g=m===i,f=o[l]??"",j=Array.isArray(o[l])?o[l].join(", "):f;return e.jsxs(s,{flexDirection:"column",marginBottom:1,children:[e.jsxs(s,{children:[e.jsx(s,{width:20,children:e.jsxs(r,{bold:g,color:g?"cyan":"white",children:[g?"❯ ":" ",Jt[l],":"]})}),e.jsx(s,{flexGrow:1,children:g&&t?e.jsx(X,{defaultValue:j,onChange:v(x=>{c({[l]:x||void 0})},"onChange"),placeholder:we[l]}):e.jsx(r,{color:j?"white":"gray",children:j||we[l]})})]}),e.jsx(s,{paddingLeft:4,children:e.jsx(r,{dimColor:!0,children:qt[l]})})]},l)}),e.jsx(s,{marginTop:1,children:e.jsxs(r,{dimColor:!0,children:[e.jsx(r,{bold:!0,color:"white",children:"Enter"})," ","edit field"," ",e.jsx(r,{bold:!0,color:"white",children:"↑↓"})," ","navigate"," ",e.jsx(r,{bold:!0,color:"white",children:"Esc"})," ","stop editing"]})})]})},"DockerComposeSection"),Yt=Me.length;var Qt=Object.defineProperty,Le=v((o,t)=>Qt(o,"name",{value:t,configurable:!0}),"h$2");const Zt=Le(({config:o,fieldIndex:t})=>{const i=o.containerEnv??{},c=o.remoteEnv??{},a=Object.keys(i),n=Object.keys(c),l=a.length,m=a.length+1,g=m+n.length,f=t<=l,j=t>l;return e.jsxs(s,{flexDirection:"column",paddingX:1,children:[e.jsxs(s,{borderColor:f?"cyan":"gray",borderStyle:"single",flexDirection:"column",paddingX:1,paddingY:0,children:[e.jsxs(s,{flexShrink:0,marginBottom:a.length>0?1:0,children:[e.jsx(r,{bold:!0,color:f?"cyan":"white",children:"containerEnv"}),e.jsx(r,{dimColor:!0,children:" — baked into the container image"})]}),a.map((x,b)=>{const w=b===t;return e.jsx(s,{flexShrink:0,children:e.jsxs(r,{color:w?"cyan":void 0,inverse:w,wrap:"truncate",children:[w?" ❯ ":" ",e.jsx(r,{bold:!0,children:x}),e.jsx(r,{dimColor:!0,children:" = "}),e.jsx(r,{children:i[x]})]})},x)}),e.jsx(s,{flexShrink:0,marginTop:a.length>0?1:0,children:e.jsxs(r,{color:t===l?"cyan":"gray",inverse:t===l,children:[" ","+ Add variable..."]})})]}),e.jsxs(s,{borderColor:j?"cyan":"gray",borderStyle:"single",flexDirection:"column",marginTop:1,paddingX:1,paddingY:0,children:[e.jsxs(s,{flexShrink:0,marginBottom:n.length>0?1:0,children:[e.jsx(r,{bold:!0,color:j?"cyan":"white",children:"remoteEnv"}),e.jsx(r,{dimColor:!0,children:" — set at runtime by the IDE"})]}),n.map((x,b)=>{const w=m+b===t;return e.jsx(s,{flexShrink:0,children:e.jsxs(r,{color:w?"cyan":void 0,inverse:w,wrap:"truncate",children:[w?" ❯ ":" ",e.jsx(r,{bold:!0,children:x}),e.jsx(r,{dimColor:!0,children:" = "}),e.jsx(r,{children:c[x]})]})},x)}),e.jsx(s,{flexShrink:0,marginTop:n.length>0?1:0,children:e.jsxs(r,{color:t===g?"cyan":"gray",inverse:t===g,children:[" ","+ Add variable..."]})})]}),e.jsx(s,{flexShrink:0,marginTop:1,children:e.jsxs(r,{dimColor:!0,wrap:"truncate",children:[e.jsx(r,{bold:!0,color:"white",children:"a"}),"/",e.jsx(r,{bold:!0,color:"white",children:"Enter"})," ","add on + row"," ",e.jsx(r,{bold:!0,color:"white",children:"d"})," ","remove"," ",e.jsx(r,{bold:!0,color:"white",children:"↑↓"})," ","navigate"]})})]})},"EnvironmentSection"),er=Le(o=>{const t=Object.keys(o.containerEnv??{}).length,i=Object.keys(o.remoteEnv??{}).length;return t+1+i+1},"getEnvFieldCount");var tr=Object.defineProperty,rr=v((o,t)=>tr(o,"name",{value:t,configurable:!0}),"g$2");const or=rr(({config:o,fieldIndex:t,scrollOffset:i,searchText:c,viewportHeight:a})=>{const n=p.useMemo(()=>new Set(o.customizations?.vscode?.extensions),[o.customizations?.vscode?.extensions]),l=p.useMemo(()=>fe(c),[c]),m=l.length,g=m>a&&a>0;return e.jsxs(s,{flexDirection:"column",flexGrow:1,children:[e.jsxs(s,{flexShrink:0,gap:1,paddingX:1,children:[e.jsxs(r,{bold:!0,color:"cyan",children:[n.size," ","selected"]}),c&&e.jsxs(r,{dimColor:!0,children:["— filter:"," ",e.jsx(r,{color:"yellow",children:c})," ","(",l.length," ","results)"]})]}),e.jsxs(s,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[e.jsx(s,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingLeft:1,children:e.jsx(s,{flexDirection:"column",marginTop:-i,children:l.map((f,j)=>{const x=j===t,b=n.has(f.id);return e.jsxs(s,{flexShrink:0,height:1,children:[e.jsx(r,{children:x?">":" "}),e.jsxs(r,{color:b?"white":"gray",children:[" ",b?"☑":"☐"," "]}),e.jsx(s,{flexGrow:1,children:e.jsxs(r,{bold:x,inverse:x,wrap:"truncate",children:[f.name,e.jsxs(r,{dimColor:!0,children:[" ","-",f.id]})]})})]},f.id)})})}),g&&e.jsx(s,{flexShrink:0,marginLeft:1,marginRight:1,children:e.jsx(Te,{contentHeight:m,placement:"inset",scrollOffset:i,style:"block",viewportHeight:a})})]}),l.length===0&&e.jsx(s,{paddingX:1,children:e.jsx(r,{dimColor:!0,children:"No extensions match the search."})})]})},"ExtensionsSection");var nr=Object.defineProperty,ir=v((o,t)=>nr(o,"name",{value:t,configurable:!0}),"g$1");const sr=ir(({config:o,fieldIndex:t,scrollOffset:i,searchText:c,viewportHeight:a})=>{const n=p.useMemo(()=>new Set(Object.keys(o.features??{})),[o.features]),l=p.useMemo(()=>ge(c),[c]),m=l.length,g=m>a&&a>0;return e.jsxs(s,{flexDirection:"column",flexGrow:1,children:[e.jsxs(s,{flexShrink:0,gap:1,paddingX:1,children:[e.jsxs(r,{bold:!0,color:"cyan",children:[n.size," ","selected"]}),c&&e.jsxs(r,{dimColor:!0,children:["— filter:"," ",e.jsx(r,{color:"yellow",children:c})," ","(",l.length," ","results)"]})]}),e.jsxs(s,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[e.jsx(s,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingLeft:1,children:e.jsx(s,{flexDirection:"column",marginTop:-i,children:l.map((f,j)=>{const x=j===t,b=n.has(f.id);return e.jsxs(s,{flexShrink:0,height:1,children:[e.jsx(r,{children:x?">":" "}),e.jsxs(r,{color:b?"white":"gray",children:[" ",b?"☑":"☐"," "]}),e.jsx(s,{flexGrow:1,children:e.jsxs(r,{bold:x,inverse:x,wrap:"truncate",children:[f.name,e.jsxs(r,{dimColor:!0,children:[" ","-",f.description]})]})})]},f.id)})})}),g&&e.jsx(s,{flexShrink:0,marginLeft:1,marginRight:1,children:e.jsx(Te,{contentHeight:m,placement:"inset",scrollOffset:i,style:"block",viewportHeight:a})})]}),l.length===0&&e.jsx(s,{paddingX:1,children:e.jsx(r,{dimColor:!0,children:"No features match the search."})})]})},"FeaturesSection");var cr=Object.defineProperty,ar=v((o,t)=>cr(o,"name",{value:t,configurable:!0}),"u$1");const me=["name","image","workspaceFolder","workspaceMount","remoteUser","containerUser","shutdownAction"],lr={containerUser:"Container User",image:"Image",name:"Name",remoteUser:"Remote User",shutdownAction:"Shutdown Action",workspaceFolder:"Workspace Folder",workspaceMount:"Workspace Mount"},Ce={containerUser:"root",image:"mcr.microsoft.com/devcontainers/javascript-node:22",name:"My Dev Container",remoteUser:"node",shutdownAction:"none | stopContainer",workspaceFolder:"/workspaces/${localWorkspaceFolderBasename}",workspaceMount:"source=${localWorkspaceFolder},target=...,type=bind"},ne=["privileged","overrideCommand"],dr={overrideCommand:"Override Command",privileged:"Privileged"},ur=me.length+ne.length,hr=ar(({config:o,fieldEditing:t,fieldIndex:i,onUpdate:c})=>e.jsxs(s,{flexDirection:"column",paddingX:1,children:[e.jsx(s,{marginBottom:1,children:e.jsx(r,{bold:!0,color:"cyan",children:"General Configuration"})}),me.map((a,n)=>{const l=n===i,m=o[a]??"";return e.jsxs(s,{marginBottom:1,children:[e.jsx(s,{width:20,children:e.jsxs(r,{bold:l,color:l?"cyan":"white",children:[l?"❯ ":" ",lr[a],":"]})}),e.jsx(s,{flexGrow:1,children:l&&t?e.jsx(X,{defaultValue:m,onChange:v(g=>{c({[a]:g})},"onChange"),placeholder:Ce[a]}):e.jsx(r,{color:m?"white":"gray",children:m||Ce[a]})})]},a)}),ne.map((a,n)=>{const l=me.length+n===i,m=o[a]??!1;return e.jsxs(s,{marginBottom:n<ne.length-1?1:0,children:[e.jsx(s,{width:20,children:e.jsxs(r,{bold:l,color:l?"cyan":"white",children:[l?"❯ ":" ",dr[a],":"]})}),e.jsx(s,{flexGrow:1,children:e.jsxs(r,{color:m?"green":"gray",children:[m?"yes":"no",l&&e.jsx(r,{dimColor:!0,children:" (Space to toggle)"})]})})]},a)}),e.jsx(s,{marginTop:1,children:e.jsxs(r,{dimColor:!0,children:[e.jsx(r,{bold:!0,color:"white",children:"Enter"})," ","edit field"," ",e.jsx(r,{bold:!0,color:"white",children:"Space"})," ","toggle"," ",e.jsx(r,{bold:!0,color:"white",children:"↑↓"})," ","navigate"," ",e.jsx(r,{bold:!0,color:"white",children:"Esc"})," ","stop editing"]})})]}),"GeneralSection"),Be=ur,ue=ne;var mr=Object.defineProperty,gr=v((o,t)=>mr(o,"name",{value:t,configurable:!0}),"s$3");const Ne=["postCreateCommand","postStartCommand","postAttachCommand","onCreateCommand"],fr={onCreateCommand:"On Create",postAttachCommand:"Post Attach",postCreateCommand:"Post Create",postStartCommand:"Post Start"},pr={onCreateCommand:"Runs once when the container is first created",postAttachCommand:"Runs each time the IDE attaches",postCreateCommand:"Runs after the container is created and workspace mounted",postStartCommand:"Runs each time the container starts"},xr=gr(({config:o,fieldEditing:t,fieldIndex:i,onSetCommand:c})=>e.jsxs(s,{flexDirection:"column",paddingX:1,children:[e.jsx(s,{marginBottom:1,children:e.jsx(r,{bold:!0,color:"cyan",children:"Lifecycle Commands"})}),Ne.map((a,n)=>{const l=n===i,m=o[a],g=Array.isArray(m)?m.join(" && "):m??"";return e.jsxs(s,{flexDirection:"column",marginBottom:1,children:[e.jsx(s,{children:e.jsxs(r,{bold:l,color:l?"cyan":"white",children:[l?"❯ ":" ",fr[a]]})}),e.jsx(s,{paddingLeft:4,children:e.jsx(r,{dimColor:!0,children:pr[a]})}),e.jsx(s,{paddingLeft:4,children:l&&t?e.jsx(X,{defaultValue:g,onChange:v(f=>{c(a,f)},"onChange"),placeholder:"e.g. npm install"}):e.jsx(r,{color:g?"green":"gray",children:g||"(not set)"})})]},a)}),e.jsx(s,{marginTop:1,children:e.jsxs(r,{dimColor:!0,children:[e.jsx(r,{bold:!0,color:"white",children:"Enter"})," ","edit command"," ",e.jsx(r,{bold:!0,color:"white",children:"↑↓"})," ","navigate"," ",e.jsx(r,{bold:!0,color:"white",children:"Esc"})," ","stop editing"]})})]}),"LifecycleSection"),vr=Ne.length;var jr=Object.defineProperty,Re=v((o,t)=>jr(o,"name",{value:t,configurable:!0}),"s$2");const Se=Re(o=>typeof o=="string"?o:`[${o.type}] ${o.source} → ${o.target}`,"formatMount"),br=Re(({addingMount:o,config:t,detectedPm:i,fieldIndex:c,mountPhase:a,mountSource:n,mountTarget:l,mountType:m,suggestedMounts:g})=>{const f=t.mounts??[];return e.jsxs(s,{flexDirection:"column",paddingX:1,children:[e.jsxs(s,{flexShrink:0,gap:1,paddingX:1,children:[e.jsxs(r,{bold:!0,color:"cyan",children:[f.length," ","mounts"]}),i&&e.jsxs(r,{dimColor:!0,children:["— detected:"," ",e.jsx(r,{color:"white",children:i})]})]}),g.length>0&&!o&&e.jsxs(s,{borderColor:"yellow",borderStyle:"single",flexDirection:"column",marginBottom:1,marginTop:1,paddingX:1,children:[e.jsxs(s,{flexShrink:0,children:[e.jsx(r,{bold:!0,color:"yellow",children:"Suggested mounts"}),e.jsxs(r,{dimColor:!0,children:[" ","— press"," ",e.jsx(r,{bold:!0,color:"white",children:"A"})," ","to add all"]})]}),g.map((j,x)=>e.jsx(s,{flexShrink:0,children:e.jsxs(r,{dimColor:!0,wrap:"truncate",children:[" + ",Se(j)]})},`suggestion-${String(x)}`))]}),f.length>0&&e.jsx(s,{flexDirection:"column",marginBottom:1,children:f.map((j,x)=>{const b=x===c;return e.jsxs(s,{flexShrink:0,height:1,children:[e.jsx(r,{children:b?">":" "}),e.jsx(s,{flexGrow:1,children:e.jsxs(r,{bold:b,inverse:b,wrap:"truncate",children:[" ",Se(j)]})})]},`mount-${String(x)}`)})}),!o&&e.jsx(s,{flexShrink:0,children:e.jsxs(r,{color:c===f.length?"cyan":"gray",inverse:c===f.length,children:[" ","+ Add mount..."]})}),o&&e.jsxs(s,{borderColor:"cyan",borderStyle:"single",flexDirection:"column",marginTop:1,paddingX:1,children:[e.jsx(s,{flexShrink:0,marginBottom:1,children:e.jsx(r,{bold:!0,color:"cyan",children:"New Mount"})}),e.jsxs(s,{flexShrink:0,children:[e.jsx(s,{width:12,children:e.jsxs(r,{bold:a==="source",color:a==="source"?"cyan":"white",children:[a==="source"?"❯ ":" ","Source:"]})}),e.jsx(r,{color:n?"yellow":"gray",children:n||(a==="source"?"_":"(type source, Enter to continue)")})]}),e.jsxs(s,{flexShrink:0,children:[e.jsx(s,{width:12,children:e.jsxs(r,{bold:a==="target",color:a==="target"?"cyan":"white",children:[a==="target"?"❯ ":" ","Target:"]})}),e.jsx(r,{color:l?"yellow":"gray",children:l||(a==="target"?"_":"/container/path")})]}),e.jsxs(s,{flexShrink:0,children:[e.jsx(s,{width:12,children:e.jsxs(r,{bold:a==="type",color:a==="type"?"cyan":"white",children:[a==="type"?"❯ ":" ","Type:"]})}),a==="type"?e.jsxs(r,{children:[e.jsx(r,{bold:m==="volume",color:m==="volume"?"cyan":"gray",children:"[1] volume"})," ",e.jsx(r,{bold:m==="bind",color:m==="bind"?"cyan":"gray",children:"[2] bind"})," ",e.jsx(r,{bold:m==="tmpfs",color:m==="tmpfs"?"cyan":"gray",children:"[3] tmpfs"})]}):e.jsx(r,{color:"gray",children:m})]}),e.jsx(s,{flexShrink:0,marginTop:1,children:e.jsx(r,{dimColor:!0,wrap:"truncate",children:a==="type"?"1/2/3 select type, Enter confirm, Esc cancel":"Type text, Enter next step, Esc cancel"})})]}),f.length===0&&!o&&g.length===0&&e.jsx(s,{marginTop:1,children:e.jsx(r,{dimColor:!0,children:"Tip: Use volume mounts for node_modules and caches to improve performance."})})]})},"MountsSection");var yr=Object.defineProperty,wr=v((o,t)=>yr(o,"name",{value:t,configurable:!0}),"s$1");const Cr=wr(({addingPort:o,addPortValue:t,config:i,fieldIndex:c})=>{const a=i.forwardPorts??[],n=c===a.length;return e.jsxs(s,{flexDirection:"column",paddingX:1,children:[e.jsxs(s,{marginBottom:1,children:[e.jsx(r,{bold:!0,color:"cyan",children:"Forwarded Ports"}),e.jsxs(r,{dimColor:!0,children:[" ","(",a.length," ","ports)"]})]}),a.map((l,m)=>{const g=m===c;return e.jsx(s,{children:e.jsxs(r,{color:g?"cyan":void 0,inverse:g,children:[" ",String(l)]})},`port-${String(l)}`)}),e.jsx(s,{marginTop:a.length>0?1:0,children:e.jsxs(r,{color:n?"cyan":"gray",inverse:n,children:[" ",n&&o?e.jsxs(r,{children:["Enter port:"," ",e.jsx(r,{color:"yellow",children:t||"_"})]}):"+ Add port..."]})}),e.jsx(s,{marginTop:1,children:e.jsxs(r,{dimColor:!0,children:[e.jsx(r,{bold:!0,color:"white",children:"Enter"})," ",n?"type port number, Enter to confirm":"select"," ",e.jsx(r,{bold:!0,color:"white",children:"d"})," ","remove selected"," ",e.jsx(r,{bold:!0,color:"white",children:"↑↓"})," ","navigate"]})})]})},"PortsSection");var Sr=Object.defineProperty,kr=v((o,t)=>Sr(o,"name",{value:t,configurable:!0}),"a");const Er=kr(({focused:o,hadComments:t,jsonPreview:i,mode:c,scrollRef:a})=>e.jsxs(s,{borderColor:o?"cyan":"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,children:[e.jsxs(s,{flexShrink:0,paddingX:1,children:[e.jsx(r,{bold:!0,color:o?"cyan":"white",children:"Preview"}),e.jsxs(r,{dimColor:!0,children:[" ","(",c==="create"?"new":"edit",")"]})]}),t&&c==="edit"&&e.jsx(s,{flexShrink:0,paddingX:1,children:e.jsx(r,{color:"yellow",children:"Comments will not be preserved."})}),e.jsx(Qe,{flexGrow:1,ref:a,scrollbar:!0,scrollbarColor:"gray",children:i.split(`
|
|
3
|
+
`).map((n,l)=>e.jsx(r,{color:"green",children:n},`line-${String(l)}`))})]}),"PreviewPanel");var Ir=Object.defineProperty,Tr=v((o,t)=>Ir(o,"name",{value:t,configurable:!0}),"r");const Pr=Tr(o=>{const t=[],i=[],c=[];if(!o.image&&!o.build&&!o.dockerComposeFile&&t.push({field:"image",message:'One of "image", "build", or "dockerComposeFile" is required'}),o.build&&(o.image&&i.push({field:"image",message:'Both "image" and "build" are set; "build" takes precedence'}),o.build.dockerfile||t.push({field:"build.dockerfile",message:'"build" requires a "dockerfile" path'})),o.dockerComposeFile&&!o.service&&t.push({field:"service",message:'"service" is required when using "dockerComposeFile"'}),o.features!==void 0&&(typeof o.features!="object"||Array.isArray(o.features))&&t.push({field:"features",message:'"features" must be an object mapping feature IDs to options'}),o.forwardPorts)if(Array.isArray(o.forwardPorts))for(const[a,n]of o.forwardPorts.entries())typeof n=="number"&&(n<1||n>65535)&&t.push({field:"forwardPorts",message:`Invalid port ${String(n)} at index ${String(a)}`});else t.push({field:"forwardPorts",message:'"forwardPorts" must be an array'});return o.customizations?.vscode?.extensions&&!Array.isArray(o.customizations.vscode.extensions)&&t.push({field:"customizations.vscode.extensions",message:"Extensions must be an array"}),o.customizations?.vscode?.settings&&typeof o.customizations.vscode.settings!="object"&&t.push({field:"customizations.vscode.settings",message:"Settings must be an object"}),o.name||c.push({field:"name",message:"Consider adding a name for better identification"}),(!o.features||Object.keys(o.features).length===0)&&c.push({field:"features",message:"Consider adding features for common tools"}),(!o.customizations?.vscode?.extensions||o.customizations.vscode.extensions.length===0)&&c.push({field:"extensions",message:"Consider adding VS Code extensions for your stack"}),o.privileged&&i.push({field:"privileged",message:"Running in privileged mode is a security risk"}),{errors:t,suggestions:c,valid:t.length===0,warnings:i}},"validateConfig");var Dr=Object.defineProperty,ze=v((o,t)=>Dr(o,"name",{value:t,configurable:!0}),"$");const ke=80,Ee=15,Or=120,Ge=[{description:"Container name, base image, workspace folder, and user",id:"general",label:"General"},{description:"Installable tools and runtimes (Node, Python, Docker, etc.)",id:"features",label:"Features"},{description:"Ports to forward from the container to your host",id:"ports",label:"Ports"},{description:"Commands to run at different stages of the container lifecycle",id:"lifecycle",label:"Lifecycle"},{description:"VS Code extensions to auto-install in the container",id:"extensions",label:"Extensions"},{description:"Environment variables for the container and IDE",id:"environment",label:"Env"},{description:"Volume and bind mounts for persistent data and caches",id:"mounts",label:"Mounts"},{description:"Docker Compose integration for multi-container setups",id:"compose",label:"Compose"}],Fr=new Map(Ge.map(o=>[o.id,o.description])),Ar=ze((o,t,i,c)=>{switch(o){case"compose":return Yt;case"environment":return er(t);case"extensions":return fe(c).length;case"features":return ge(i).length;case"general":return Be;case"lifecycle":return vr;case"mounts":return(t.mounts?.length??0)+1;case"ports":return(t.forwardPorts?.length??0)+1;default:return 0}},"getFieldCount"),$r=ze(({onSave:o,store:t})=>{const{exit:i}=Ze(),{columns:c,rows:a}=et(),n=p.useSyncExternalStore(t.subscribe,t.getSnapshot),[l,m]=p.useState(!1),[g,f]=p.useState(!1),[j,x]=p.useState(!1),[b,w]=p.useState(null),[E,D]=p.useState("editor"),[R,L]=p.useState(0),[H,J]=p.useState(!1),[ee,P]=p.useState(""),[T,I]=p.useState(null),[S,O]=p.useState(""),[q,C]=p.useState(""),[k,z]=p.useState("key"),[se,te]=p.useState(!1),[ce,G]=p.useState(""),[ae,_]=p.useState(""),[pe,K]=p.useState("volume"),[A,W]=p.useState("source"),le=p.useRef(null),B=p.useRef(null),M=p.useRef(null),re=p.useRef(!0);p.useEffect(()=>(re.current=!0,()=>{re.current=!1,M.current&&clearTimeout(M.current)}),[]);const xe=Ar(n.section,n.config,n.featureSearch,n.extensionSearch),Y=Math.max(1,a-9);p.useEffect(()=>{n.section!=="features"&&n.section!=="extensions"||L(u=>n.fieldIndex>=u+Y?n.fieldIndex-Y+1:n.fieldIndex<u?n.fieldIndex:u)},[n.fieldIndex,n.section,Y]),p.useEffect(()=>{L(0)},[n.section,n.featureSearch,n.extensionSearch]);const _e=p.useCallback(()=>{const u=t.cleanConfig(),h=Pr(u);if(!h.valid){const y=h.errors[0];w(y?`Error: ${y.message}`:"Validation failed"),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>{re.current&&w(null)},3e3);return}o(u),t.markClean();const d=h.warnings.length;w(d>0?`Saved! (${String(d)} warning${d>1?"s":""})`:"Saved!"),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>{re.current&&w(null)},2e3)},[o,t]);U((u,h)=>{if(h.downArrow||u==="j")t.setTemplateIndex(n.templateIndex+1);else if(h.upArrow||u==="k")t.setTemplateIndex(n.templateIndex-1);else if(h.return){const d=V[n.templateIndex];d&&t.applyTemplate(d.id)}else h.escape&&t.dismissTemplateSelector()},{isActive:n.showTemplateSelector}),U((u,h)=>{if(h.escape){J(!1),P("");return}if(h.return){const d=Number.parseInt(ee,10);!Number.isNaN(d)&&d>0&&d<=65535&&t.addPort(d),J(!1),P("");return}if(h.backspace){P(d=>d.slice(0,-1));return}u&&/^\d$/u.test(u)&&P(d=>d+u)},{isActive:H}),U((u,h)=>{if(h.escape){I(null),O(""),C(""),z("key");return}if(h.return){if(k==="key"&&S){z("value");return}if(k==="value"&&S){t.addEnvVar(T,S,q),I(null),O(""),C(""),z("key");return}}if(h.backspace){k==="key"?O(d=>d.slice(0,-1)):C(d=>d.slice(0,-1));return}u&&!h.ctrl&&!h.meta&&(k==="key"?O(d=>d+u):C(d=>d+u))},{isActive:T!==null}),U((u,h)=>{if(h.escape){te(!1),G(""),_(""),W("source");return}if(h.return){if(A==="source"&&ce){W("target");return}if(A==="target"&&ae){W("type");return}if(A==="type"){t.addMount({source:ce,target:ae,type:pe}),te(!1),G(""),_(""),W("source");return}}if(A==="type"){switch(u){case"1":{K("volume");break}case"2":{K("bind");break}case"3":{K("tmpfs");break}}return}if(h.backspace){A==="source"?G(d=>d.slice(0,-1)):A==="target"&&_(d=>d.slice(0,-1));return}u&&!h.ctrl&&!h.meta&&(A==="source"?G(d=>d+u):A==="target"&&_(d=>d+u))},{isActive:se}),U((u,h)=>{if(u==="c"&&h.ctrl){i();return}if(!g){if(l){h.escape||u==="?"?m(!1):h.downArrow||u==="j"?le.current?.scrollBy(1):h.upArrow||u==="k"?le.current?.scrollBy(-1):u==="q"&&(m(!1),f(!0));return}if(j){if(h.escape){x(!1),n.section==="features"?t.setFeatureSearch(""):t.setExtensionSearch("");return}if(h.return){x(!1);return}if(h.backspace){n.section==="features"?t.setFeatureSearch(n.featureSearch.slice(0,-1)):t.setExtensionSearch(n.extensionSearch.slice(0,-1));return}if(u&&!h.ctrl&&!h.meta){n.section==="features"?t.setFeatureSearch(n.featureSearch+u):t.setExtensionSearch(n.extensionSearch+u);return}return}if(n.fieldEditing){if(h.escape){t.setFieldEditing(!1);return}if(h.return){t.setFieldEditing(!1);return}return}if(u==="?"){m(!0);return}if(u==="q"){n.isDirty?f(!0):i();return}if(u==="s"){_e();return}if(h.tab){D(d=>d==="editor"?"preview":"editor");return}if(E==="preview"){if(h.downArrow||u==="j"){B.current?.scrollBy(1);return}if(h.upArrow||u==="k"){B.current?.scrollBy(-1);return}if(h.pageDown){B.current?.scrollBy(10);return}if(h.pageUp){B.current?.scrollBy(-10);return}if(h.home){B.current?.scrollToTop();return}if(h.end){B.current?.scrollToBottom();return}h.escape&&D("editor");return}if(h.downArrow||u==="j"){xe>0&&t.setFieldIndex(Math.min(n.fieldIndex+1,xe-1));return}if(h.upArrow||u==="k"){t.setFieldIndex(Math.max(n.fieldIndex-1,0));return}if(h.return){switch(n.section){case"compose":case"general":case"lifecycle":{t.setFieldEditing(!0);break}case"environment":{const d=Object.keys(n.config.containerEnv??{}).length,y=d,$=d+1+Object.keys(n.config.remoteEnv??{}).length;n.fieldIndex===y?(I("container"),O(""),C(""),z("key")):n.fieldIndex===$&&(I("remote"),O(""),C(""),z("key"));break}case"mounts":{const d=n.config.mounts??[];n.fieldIndex===d.length&&(te(!0),G(""),_(""),K("volume"),W("source"));break}case"ports":{const d=n.config.forwardPorts??[];n.fieldIndex===d.length&&(J(!0),P(""));break}}return}if(u===" "){switch(n.section){case"extensions":{const d=fe(n.extensionSearch)[n.fieldIndex];d&&t.toggleExtension(d.id);break}case"features":{const d=ge(n.featureSearch)[n.fieldIndex];d&&t.toggleFeature(d.id);break}case"general":{const d=Be-ue.length,y=n.fieldIndex-d;if(y>=0&&y<ue.length){const $=ue[y];t.updateConfig({[$]:!n.config[$]})}break}}return}if(u==="/"){(n.section==="features"||n.section==="extensions")&&x(!0);return}if(u==="A"&&n.section==="mounts"){t.applySuggestedMounts();return}if(u==="a"){if(n.section==="environment"){const d=Object.keys(n.config.containerEnv??{}).length,y=n.fieldIndex<=d?"container":"remote";I(y),O(""),C(""),z("key")}else n.section==="mounts"&&(te(!0),G(""),_(""),K("volume"),W("source"));return}if(u==="d")switch(n.section){case"environment":{const d=Object.keys(n.config.containerEnv??{}),y=Object.keys(n.config.remoteEnv??{});if(n.fieldIndex<d.length)t.removeEnvVar("container",d[n.fieldIndex]),d.length===1||n.fieldIndex>=d.length-1&&t.setFieldIndex(d.length-2);else{const $=n.fieldIndex-d.length-1;$>=0&&$<y.length&&(t.removeEnvVar("remote",y[$]),y.length===1||$>=y.length-1&&t.setFieldIndex(n.fieldIndex-1))}break}case"mounts":{const d=n.config.mounts??[];if(n.fieldIndex<d.length){t.removeMount(n.fieldIndex);const y=d.length-1;n.fieldIndex>=y&&y>0&&t.setFieldIndex(y-1)}break}case"ports":{const d=n.config.forwardPorts??[];if(n.fieldIndex<d.length){t.removePort(n.fieldIndex);const y=d.length-1;n.fieldIndex>=y&&y>0&&t.setFieldIndex(y-1)}break}}}},{isActive:!n.showTemplateSelector&&!H&&T===null&&!se});const We=p.useMemo(()=>t.getJsonPreview(),[n.config]);if(c<ke||a<Ee)return e.jsx(s,{alignItems:"center",height:a,justifyContent:"center",width:c,children:e.jsxs(r,{color:"yellow",children:["Terminal too small (",c,"x",a,"), need"," ",ke,"x",Ee]})});if(n.showTemplateSelector)return e.jsx(s,{alignItems:"center",flexDirection:"column",height:a,justifyContent:"center",width:c,children:e.jsxs(s,{borderColor:"cyan",borderStyle:"round",flexDirection:"column",paddingX:2,paddingY:1,width:60,children:[e.jsx(s,{justifyContent:"center",marginBottom:1,children:e.jsx(r,{bold:!0,color:"cyan",children:"Select a Template"})}),V.map((u,h)=>{const d=h===n.templateIndex;return e.jsx(s,{children:e.jsxs(r,{color:d?"cyan":void 0,inverse:d,children:[d?" ❯ ":" ",e.jsx(r,{bold:d,children:u.name}),e.jsxs(r,{dimColor:!0,children:[" ","-",u.description]})]})},u.id)}),e.jsx(s,{justifyContent:"center",marginTop:1,children:e.jsxs(r,{dimColor:!0,children:[e.jsx(r,{bold:!0,color:"white",children:"↑↓"})," ","navigate"," ",e.jsx(r,{bold:!0,color:"white",children:"Enter"})," ","select"," ",e.jsx(r,{bold:!0,color:"white",children:"Esc"})," ","blank"]})})]})});let F;switch(n.section){case"compose":{F=e.jsx(Kt,{config:n.config,fieldEditing:n.fieldEditing,fieldIndex:n.fieldIndex,onUpdate:v(u=>{t.updateConfig(u)},"onUpdate")});break}case"environment":{F=e.jsxs(s,{flexDirection:"column",children:[e.jsx(Zt,{config:n.config,fieldIndex:n.fieldIndex}),T!==null&&e.jsx(s,{marginTop:1,paddingX:1,children:e.jsxs(r,{color:"cyan",children:["Add"," ",T," ","env:"," ",k==="key"?e.jsxs(r,{children:["key=",e.jsx(r,{color:"yellow",children:S||"_"})," ","(Enter to set value)"]}):e.jsxs(r,{children:[S,"=",e.jsx(r,{color:"yellow",children:q||"_"})," ","(Enter to confirm, Esc to cancel)"]})]})})]});break}case"extensions":{F=e.jsx(or,{config:n.config,fieldIndex:n.fieldIndex,scrollOffset:R,searchText:n.extensionSearch,viewportHeight:Y});break}case"features":{F=e.jsx(sr,{config:n.config,fieldIndex:n.fieldIndex,scrollOffset:R,searchText:n.featureSearch,viewportHeight:Y});break}case"general":{F=e.jsx(hr,{config:n.config,fieldEditing:n.fieldEditing,fieldIndex:n.fieldIndex,onUpdate:v(u=>{t.updateConfig(u)},"onUpdate")});break}case"lifecycle":{F=e.jsx(xr,{config:n.config,fieldEditing:n.fieldEditing,fieldIndex:n.fieldIndex,onSetCommand:v((u,h)=>{t.setLifecycleCommand(u,h)},"onSetCommand")});break}case"mounts":{F=e.jsx(br,{addingMount:se,config:n.config,detectedPm:n.detectedPm,fieldIndex:n.fieldIndex,mountPhase:A,mountSource:ce,mountTarget:ae,mountType:pe,suggestedMounts:n.suggestedMounts});break}case"ports":{F=e.jsx(Cr,{addingPort:H,addPortValue:ee,config:n.config,fieldIndex:n.fieldIndex});break}default:F=e.jsx(r,{children:"Unknown section"})}const Ue=e.jsxs(s,{borderBottom:!1,borderColor:"gray",borderLeft:!1,borderRight:!1,borderStyle:"single",flexShrink:0,children:[e.jsxs(s,{flexGrow:1,flexWrap:"wrap",gap:2,paddingX:1,children:[e.jsxs(s,{gap:1,children:[e.jsx(r,{bold:!0,color:"white",children:"q"}),e.jsx(r,{dimColor:!0,children:"QUIT"})]}),e.jsxs(s,{gap:1,children:[e.jsx(r,{bold:!0,color:"white",children:"?"}),e.jsx(r,{dimColor:!0,children:"HELP"})]}),e.jsxs(s,{gap:1,children:[e.jsx(r,{bold:!0,color:"white",children:"↑↓"}),e.jsx(r,{dimColor:!0,children:"NAV"})]}),(n.section==="features"||n.section==="extensions")&&e.jsxs(s,{gap:1,children:[e.jsx(r,{bold:!0,color:"white",children:"Space"}),e.jsx(r,{dimColor:!0,children:"CHECK"})]}),e.jsxs(s,{gap:1,children:[e.jsx(r,{bold:!0,color:"white",children:"←→"}),e.jsx(r,{dimColor:!0,children:"TABS"})]}),e.jsxs(s,{gap:1,children:[e.jsx(r,{bold:!0,color:"white",children:"Tab"}),e.jsx(r,{dimColor:!0,children:"PANEL"})]}),(n.section==="features"||n.section==="extensions")&&e.jsxs(s,{gap:1,children:[e.jsx(r,{bold:!0,color:"white",children:"/"}),e.jsx(r,{dimColor:!0,children:"FILTER"})]}),e.jsxs(s,{gap:1,children:[e.jsx(r,{bold:!0,color:"white",children:"s"}),e.jsx(r,{dimColor:!0,children:"SAVE"})]})]}),e.jsxs(s,{paddingX:1,children:[b&&e.jsxs(r,{color:b.startsWith("Error")?"red":"green",children:[b," "]}),n.isDirty&&e.jsx(r,{color:"yellow",children:"[modified]"}),!n.isDirty&&!b&&e.jsx(r,{dimColor:!0,children:"[saved]"})]})]}),Ve=e.jsxs(tt,{footer:e.jsxs(r,{dimColor:!0,children:[e.jsx(r,{bold:!0,color:"white",children:"↑↓"})," ","scroll"," ",e.jsx(r,{bold:!0,color:"white",children:"?"}),"/",e.jsx(r,{bold:!0,color:"white",children:"Esc"})," ","close"]}),scrollRef:le,title:"KEYBOARD SHORTCUTS",visible:l,width:56,children:[e.jsxs(s,{flexDirection:"column",marginBottom:1,children:[e.jsxs(s,{marginBottom:1,children:[e.jsx(r,{dimColor:!0,children:"── "}),e.jsx(r,{bold:!0,color:"white",children:"NAVIGATION"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"←→"}),e.jsx(r,{dimColor:!0,children:" Switch tabs"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"↑↓"}),"/",e.jsx(r,{bold:!0,color:"white",children:"j/k"}),e.jsx(r,{dimColor:!0,children:" Navigate within section"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"Tab"}),e.jsx(r,{dimColor:!0,children:" Switch editor/preview panel"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"Enter"}),e.jsx(r,{dimColor:!0,children:" Edit selected field"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"Esc"}),e.jsx(r,{dimColor:!0,children:" Stop editing / cancel"})]})]}),e.jsxs(s,{flexDirection:"column",marginBottom:1,children:[e.jsxs(s,{marginBottom:1,children:[e.jsx(r,{dimColor:!0,children:"── "}),e.jsx(r,{bold:!0,color:"white",children:"FEATURES / EXTENSIONS"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"Space"}),e.jsx(r,{dimColor:!0,children:" Toggle selection"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"/"}),e.jsx(r,{dimColor:!0,children:" Search / filter"})]})]}),e.jsxs(s,{flexDirection:"column",marginBottom:1,children:[e.jsxs(s,{marginBottom:1,children:[e.jsx(r,{dimColor:!0,children:"── "}),e.jsx(r,{bold:!0,color:"white",children:"LISTS (Ports, Mounts, Env)"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"a"}),e.jsx(r,{dimColor:!0,children:" Add new entry"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"d"}),e.jsx(r,{dimColor:!0,children:" Delete selected entry"})]})]}),e.jsxs(s,{flexDirection:"column",children:[e.jsxs(s,{marginBottom:1,children:[e.jsx(r,{dimColor:!0,children:"── "}),e.jsx(r,{bold:!0,color:"white",children:"ACTIONS"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"s"}),e.jsx(r,{dimColor:!0,children:" Save configuration"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"q"}),e.jsx(r,{dimColor:!0,children:" Quit"})]}),e.jsxs(r,{children:[" ",e.jsx(r,{bold:!0,color:"white",children:"?"}),e.jsx(r,{dimColor:!0,children:" Toggle help"})]})]})]}),Xe=e.jsx(Er,{focused:E==="preview",hadComments:n.hadComments,jsonPreview:We,mode:n.mode,scrollRef:B}),ve=c>=Or,He=ve?Math.floor(c*.38):0;return e.jsxs(s,{flexDirection:"column",height:a,width:c,children:[e.jsxs(s,{flexShrink:0,gap:1,paddingX:1,children:[e.jsx(r,{bold:!0,inverse:!0,children:" VIS "}),e.jsxs(r,{wrap:"truncate",children:[n.mode==="create"?"Create":"Edit"," ","devcontainer"]})]}),e.jsx(s,{flexShrink:0,paddingX:1,paddingY:1,children:e.jsx(mt,{defaultValue:n.section,keyMap:{useNumbers:!1,useTab:!1},onChange:v(u=>{t.setSection(u),D("editor")},"onChange"),showIndex:!1,children:Ge.map(({id:u,label:h})=>e.jsx(gt,{name:u,children:h},u))})}),e.jsx(s,{flexShrink:0,paddingRight:2,children:e.jsx(r,{dimColor:!0,wrap:"truncate",children:Fr.get(n.section)??""})}),e.jsxs(s,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[e.jsx(s,{borderColor:E==="editor"?"white":"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,overflow:"hidden",children:F}),ve&&e.jsx(s,{flexShrink:0,width:He,children:Xe})]}),Ue,e.jsx(rt,{autoExitSeconds:3,onCancel:v(()=>{f(!1)},"onCancel"),visible:g}),Ve]})},"VisDevcontainerApp");var Mr=Object.defineProperty,Ie=v((o,t)=>Mr(o,"name",{value:t,configurable:!0}),"c");const Wr=Ie(async({logger:o,options:t,workspaceRoot:i})=>{if(!i)throw new Error("Could not determine workspace root. Run this command inside a monorepo or project directory.");const c=i,a=t.template,n=t.output,l=!!process.stdout.isTTY&&!it;let m=null;try{m=st(c).name}catch{}const g=Ct(c);let f=g?.config??null;const j=g?.hadComments??!1;if(a&&!g){const E=V.find(D=>D.id===a);if(!E){const D=V.map(R=>R.id).join(", ");throw new Error(`Unknown template "${a}". Valid templates: ${D}`)}f=E.config}if(!l){f?o.info(JSON.stringify(f,null,2)):(o.error("No existing devcontainer.json found. Use --template to generate one in non-TTY mode."),process.exitCode=1);return}process.stdin.isTTY&&typeof process.stdin.setRawMode=="function"&&(process.stdin.setRawMode(!0),process.stdin.ref(),process.stdin.resume());const x=setInterval(()=>{},1e3),b=new Dt(f,j,m);a&&!g&&b.dismissTemplateSelector();let w=null;if(await ot(nt.createElement($r,{onSave:Ie(E=>{St(c,E,n),w=E},"onSave"),store:b}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit(),clearInterval(x),w){const E=n??".devcontainer/devcontainer.json";o.info(`DevContainer config saved to ${E}`)}},"execute");export{Wr as default};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var
|
|
2
|
-
Settings that would sync to pnpm-workspace.yaml:`);for(const
|
|
3
|
-
`);const C=new Set;
|
|
4
|
-
`);for(const r of
|
|
1
|
+
var X=Object.defineProperty;var j=(c,o)=>X(c,"name",{value:o,configurable:!0});import{e as q,g as H,p as m,T as K,h as V,a as Z,G as f,i as A,c as _,j as Q,k as U,R as i,l as W,d as ee,n as y,X as D,B as te,J as oe,s as se}from"./bin.js";import{H as re,e as ae,Z as ne}from"../packem_shared/ai-analysis-KP8b5lc0.js";import{A as ie}from"../packem_shared/pm-runner-Ta_yz2uP.js";import{U as ce,C as le,a as J}from"../packem_shared/vis-update-app-BCKzlqj8.js";var de=Object.defineProperty,ue=j((c,o)=>de(c,"name",{value:o,configurable:!0}),"A");const ve=ue(async({argument:c,logger:o,options:e,visConfig:n,workspaceRoot:R})=>{if(!R)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");const u=R;if(e.securityConfig){const t=ie(u);if(q(n??{},t.name),e.sync&&t.name==="pnpm"){const s=H(n??{});if(s.length>0){m.info(`
|
|
2
|
+
Settings that would sync to pnpm-workspace.yaml:`);for(const x of s)m.success(` ${x}`)}else m.info("No security settings to sync.")}else e.sync&&t.name!=="pnpm"&&(m.info(`--sync is only available for pnpm projects. Your project uses ${t.name}.`),m.info("vis enforces security settings at the vis layer for non-pnpm projects."));if(!e.security&&!c?.length)return}const{packageManager:M}=K(u),N=V(u),l=n?.update??{},v=Z(u,M,{dev:e.dev,includeInternal:e["include-internal"],peer:e.peer,prod:e.prod});if(v.size===0){o.info("No catalogs found.");return}const h=e.target??l.target??"latest";if(!["latest","minor","patch"].includes(h))throw new Error(`Invalid target "${h}". Use: latest, minor, or patch.`);const z={exclude:[...f(e.exclude),...f(l.exclude)],ignore:f(l.ignore),include:[...f(e.include),...f(l.include),...c],includeLocked:!!e.includeLocked,includePrerelease:e.prerelease||l.prerelease||!1,security:e.security!==!1,target:h};let $=0;for(const t of v.values())$+=t.size;const w=!!process.stdout.isTTY&&!se;let d;const B=w?(t,s)=>{d?d.rerender(i.createElement(J,{current:t,total:s})):d=U(i.createElement(J,{current:t,total:s}),{interactive:!0,patchConsole:!1})}:(t,s)=>{o.info(`Checking ${String(t)}/${String(s)} dependencies...`)};w||o.info(`Checking ${String($)} catalog dependencies against npm registry...
|
|
3
|
+
`);const C=new Set;A("socket")&&C.add("socket"),A("depsDev")&&C.add("deps-dev");const k=n?.security?.policies?.score?.minimum,I=_(n?.security,{disabled:C,minimumScore:k}),{failed:E,outdated:a}=await Q(v,z,N,B,u,I,n?.security?.acceptedRisks);if(d&&(d.clear(),d.unmount()),E.length>0&&o.warn(`Failed to fetch: ${E.join(", ")}`),a.length===0){o.info("All catalog dependencies are up to date.");return}const b=e.format??l.format??"table",L=re(e.aiType??"impact"),p=e.ai?await ae(a,o,n?.ai,L):void 0;if(w&&b==="table"){const t=new ce(a,p??null),s=n?.tui?.autoExit??!1,x=s===!0?3:typeof s=="number"?s:0;await U(i.createElement(le,{autoExitSeconds:x,isDryRun:!0,store:t}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit();const O=process.stdout.columns||80;process.stdout.write(`
|
|
4
|
+
`);for(const r of a){const P=r.vulnerabilities?.length||r.socketReport&&r.socketReport.alerts.length>0,S=!!r.acceptedRisk,Y=P?S?"✓":"⚠":"✓",F=S?"gray":r.updateType==="major"?"red":r.updateType==="minor"?"yellow":"green",g=r.socketReport?.score.overall,G=g===void 0?"":` [${String(Math.round(g*100))}%]`,T=g===void 0?void 0:W(g);process.stdout.write(`${ee(i.createElement(y,null," ",i.createElement(y,{color:F},Y),` ${r.packageName} ${r.currentRange} → ${r.newRange}`,i.createElement(y,{dimColor:!0},` ${r.updateType}`),T?i.createElement(y,{color:T},G):null),{columns:O})}
|
|
5
5
|
`)}process.stdout.write(`
|
|
6
|
-
`),o.info(
|
|
7
|
-
`)}else
|
|
8
|
-
`):(oe(
|
|
6
|
+
`),o.info(D(a,k))}else if(b==="json"){const t={failed:E,outdated:a};p&&(t.aiAnalysis=p),process.stdout.write(`${JSON.stringify(t,void 0,2)}
|
|
7
|
+
`)}else b==="minimal"?process.stdout.write(`${te(a)}
|
|
8
|
+
`):(oe(a,o),o.info(D(a,k)),p&&(o.info(""),o.info(ne(p))));e.exitCode&&a.length>0&&(process.exitCode=1)},"execute");export{ve as default};
|