@visulima/vis 6.0.0 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/LICENSE.md +89 -152
- package/dist/bin.js +1 -1
- package/dist/binx.js +1 -1
- package/dist/packem_chunks/CONFIG_FILES.js +4 -4
- package/dist/packem_chunks/bloom-status.js +1 -1
- package/dist/packem_chunks/bloom-sync.js +1 -1
- package/dist/packem_chunks/catalog.js +52 -61
- package/dist/packem_chunks/cli-exec.js +1 -1
- package/dist/packem_chunks/cli-main.js +150 -152
- package/dist/packem_chunks/dart-plan.js +1 -1
- package/dist/packem_chunks/dart-projects.js +1 -1
- package/dist/packem_chunks/dispatch.js +1 -1
- 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 +4 -4
- package/dist/packem_chunks/handler11.js +1 -1
- package/dist/packem_chunks/handler12.js +4 -4
- package/dist/packem_chunks/handler13.js +1 -1
- package/dist/packem_chunks/handler14.js +1 -1
- package/dist/packem_chunks/handler15.js +1 -1
- 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 +2 -2
- package/dist/packem_chunks/handler21.js +1 -1
- package/dist/packem_chunks/handler22.js +2 -2
- package/dist/packem_chunks/handler23.js +1 -1
- package/dist/packem_chunks/handler24.js +1 -1
- package/dist/packem_chunks/handler26.js +4 -4
- package/dist/packem_chunks/handler27.js +1 -1
- package/dist/packem_chunks/handler28.js +1 -1
- package/dist/packem_chunks/handler29.js +1 -1
- package/dist/packem_chunks/handler3.js +1 -1
- package/dist/packem_chunks/handler30.js +1 -1
- package/dist/packem_chunks/handler5.js +1 -1
- package/dist/packem_chunks/handler50.js +2 -2
- package/dist/packem_chunks/handler51.js +1 -1
- package/dist/packem_chunks/handler53.js +1 -1
- package/dist/packem_chunks/handler54.js +1 -1
- package/dist/packem_chunks/handler55.js +1 -1
- package/dist/packem_chunks/handler58.js +1 -1
- package/dist/packem_chunks/handler59.js +1 -1
- package/dist/packem_chunks/handler6.js +1 -1
- package/dist/packem_chunks/handler60.js +7 -7
- package/dist/packem_chunks/handler61.js +3 -3
- package/dist/packem_chunks/handler62.js +2 -2
- package/dist/packem_chunks/handler63.js +1 -1
- package/dist/packem_chunks/handler64.js +2 -2
- package/dist/packem_chunks/handler65.js +4 -4
- package/dist/packem_chunks/handler66.js +1 -1
- package/dist/packem_chunks/handler67.js +20 -31
- package/dist/packem_chunks/handler68.js +1 -1
- package/dist/packem_chunks/handler69.js +1 -1
- package/dist/packem_chunks/handler7.js +1 -1
- package/dist/packem_chunks/handler70.js +6 -6
- package/dist/packem_chunks/handler71.js +26 -46
- package/dist/packem_chunks/handler72.js +1 -1
- package/dist/packem_chunks/handler73.js +1 -1
- package/dist/packem_chunks/handler74.js +1 -1
- package/dist/packem_chunks/handler75.js +17 -17
- package/dist/packem_chunks/handler76.js +1 -1
- package/dist/packem_chunks/handler77.js +2 -2
- package/dist/packem_chunks/handler78.js +31 -31
- 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 +7 -40
- package/dist/packem_chunks/index2.js +11 -11
- package/dist/packem_chunks/index6.js +1 -1
- package/dist/packem_chunks/keys-refresh.js +1 -1
- package/dist/packem_chunks/lean.js +1 -1
- package/dist/packem_chunks/list.js +1 -1
- package/dist/packem_chunks/loader.js +1 -1
- package/dist/packem_chunks/orchestrator.js +1 -1
- package/dist/packem_chunks/prompts.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 +1 -1
- package/dist/packem_chunks/ts-loader.js +5 -5
- package/dist/packem_chunks/verify-lockfile.js +1 -1
- package/dist/packem_shared/Table-Bo1JKNCN-CGGet8ES.js +34 -0
- package/dist/packem_shared/{affected-selection-DDxwjwM4.js → affected-selection-DGb6Xu5K.js} +1 -1
- package/dist/packem_shared/{affected-shas-BuaWvmsG.js → affected-shas-B_kfSKss.js} +1 -1
- package/dist/packem_shared/{ai-fix-C2BhFFhi.js → ai-fix-D9MxigBQ.js} +5 -5
- package/dist/packem_shared/{augment-CxUPE8KX.js → augment-B9kSZuvW.js} +1 -1
- package/dist/packem_shared/{bin-Be7_QhQK.js → bin-AZQv95jh.js} +1 -1
- package/dist/packem_shared/{build-scripts-DxyVSkgM.js → build-scripts-CEDx_nJp.js} +1 -1
- package/dist/packem_shared/{command-runtime-BXvH5EC0.js → command-runtime-HSsYGCQd.js} +1 -1
- package/dist/packem_shared/{dart-pubspec-DvmyleIr.js → dart-pubspec-BK_cK2EP.js} +2 -2
- package/dist/packem_shared/dependency-scan-CawAKoU_.js +1 -0
- package/dist/packem_shared/detect-CbMRSXkM.js +1 -0
- package/dist/packem_shared/{docker-BTuwdXaC.js → docker-DXqV-07f.js} +1 -1
- package/dist/packem_shared/{ecosystem-gate-BpQNUJzN.js → ecosystem-gate-DiqQj0LJ.js} +1 -1
- package/dist/packem_shared/env-consistency-B4rU4MQb.js +1 -0
- package/dist/packem_shared/{failure-log-kp0n2rbD.js → failure-log-BP-gCUb5.js} +1 -1
- package/dist/packem_shared/{formatBytes-BHAzNIrn-DRcKvqnb.js → formatBytes-_HvjOy8a-B_qQr4Hw.js} +3 -3
- package/dist/packem_shared/{getRandomSpinner-4ZEcbTYv-DCyIuj19.js → getRandomSpinner-DX11qCB2-CoIsn7ZU.js} +1 -1
- package/dist/packem_shared/index-BisalDCf.js +39 -0
- package/dist/packem_shared/{index-BdMIfGVZ.js → index-BzhrR_iC.js} +15 -15
- package/dist/packem_shared/{index-DQfNpt2u.js → index-CDHP1kby.js} +1 -1
- package/dist/packem_shared/{index-DsSWb5XH.js → index-JRb5wabN.js} +1 -1
- package/dist/packem_shared/index.server-Ca_EEVfw.js +2 -0
- package/dist/packem_shared/{isAccessibleSync-DYKTrrvc-BwaMhQs0.js → isAccessibleSync-DYKTrrvc-C-_5cgwu.js} +1 -1
- package/dist/packem_shared/{lifecycle-BAhkhE2L.js → lifecycle-DvmDIRbb.js} +1 -1
- package/dist/packem_shared/{lockfile-DHmlPGk1.js → lockfile-CiUtEbnt.js} +1 -1
- package/dist/packem_shared/{manifests-Dd4Hoztt.js → manifests-Du4yKlf_.js} +1 -1
- package/dist/packem_shared/{min-release-age-BJnOQaoF.js → min-release-age-JViyQuBM.js} +1 -1
- package/dist/packem_shared/{missing-package-json-DfzrGwe1.js → missing-package-json-Cu5YVAot.js} +1 -1
- package/dist/packem_shared/{multi-eco-lockfiles-BIa6xvJc.js → multi-eco-lockfiles-B2X3yhyo.js} +1 -1
- package/dist/packem_shared/{native-config-sync-Dr9XvxOf.js → native-config-sync-TdTWjVgI.js} +1 -1
- package/dist/packem_shared/osv-bloom-BCAX5ARR.js +2 -0
- package/dist/packem_shared/package-version-KLwH0Ivy.js +4 -0
- package/dist/packem_shared/{packument-C9nRiBJf.js → packument-zb18Jnlw.js} +1 -1
- package/dist/packem_shared/{pm-runner-ImwtpnWY.js → pm-runner-RM72mDZg.js} +1 -1
- package/dist/packem_shared/{project-name-filter-C2rkW-Vn.js → project-name-filter-B1ZCsbOW.js} +1 -1
- package/dist/packem_shared/{provenance-DF-ypZj3.js → provenance-L1M2FPy_.js} +1 -1
- package/dist/packem_shared/{readJsonSync-CbryXYxN-Bm5i10UW.js → readJsonSync-CbryXYxN-EWl7_7KX.js} +1 -1
- package/dist/packem_shared/{registry-keys-BLuHOyZu.js → registry-keys-DxdqMzyp.js} +1 -1
- package/dist/packem_shared/{resolve-explicit-BDaQRR6o.js → resolve-explicit-CQa37JSq.js} +1 -1
- package/dist/packem_shared/{resolve-runtime-Cr19Pk6L.js → resolve-runtime-DNukUjIr.js} +1 -1
- package/dist/packem_shared/{run-file-XbRCF6Mp.js → run-file-UBukWaha.js} +1 -1
- package/dist/packem_shared/runtime-check-D3cRDuoi.js +1 -0
- package/dist/packem_shared/{s1ngularity-UCZN7skW.js → s1ngularity-CO5GkkqX.js} +1 -1
- package/dist/packem_shared/scaffold-files-DVyfB0yz.js +28 -0
- package/dist/packem_shared/{scan-progress-DcYI76zE.js → scan-progress-RwCRxJdX.js} +1 -1
- package/dist/packem_shared/{selectors-DCiEU0iv.js → selectors-edwcgNl3.js} +2 -2
- package/dist/packem_shared/{signatures-CicxPHN4.js → signatures-DIqFUOfs.js} +1 -1
- package/dist/packem_shared/spinner-BJjbNl1F.js +1 -0
- package/dist/packem_shared/target-merge-DVJl-7Qz.js +4 -0
- package/dist/packem_shared/{target-options-PgWIuJnb.js → target-options-DsHFmRZH.js} +1 -1
- package/dist/packem_shared/{task-env-Dl08aklA.js → task-env-DzR4RkOj.js} +1 -1
- package/dist/packem_shared/toolchain-CP79HNVy.js +5 -0
- package/dist/packem_shared/{typosquats-DxPzyK7u.js → typosquats-D4DEHhFy.js} +1 -1
- package/dist/packem_shared/{verify-CadR9PUk.js → verify-B_MblU_Q.js} +1 -1
- package/dist/packem_shared/{vis-update-app-DrFWQyPn.js → vis-update-app-9b2kSk9f.js} +1 -1
- package/dist/packem_shared/{vis-user-error-k7CLTpA4.js → vis-user-error-CRmrBaD1.js} +15 -15
- package/dist/packem_shared/{watch-Dr_6yz3o.js → watch-CcTketln.js} +1 -1
- package/dist/packem_shared/watch-loop-D1_e-qIl.js +11 -0
- package/dist/packem_shared/{writeFileSync-DJoHk3Ks-Dhem3Uof.js → writeFileSync-DJoHk3Ks-BPRoepNw.js} +1 -1
- package/dist/runtime/preload.js +1 -1
- package/index.js +26 -26
- package/package.json +12 -12
- package/dist/packem_shared/dependency-scan-DKK3ZEZI.js +0 -1
- package/dist/packem_shared/env-consistency-CUBJHENL.js +0 -1
- package/dist/packem_shared/index-C9ENZqH9.js +0 -39
- package/dist/packem_shared/index.server-D8BLnYZO.js +0 -2
- package/dist/packem_shared/osv-bloom-t40ra5U5.js +0 -2
- package/dist/packem_shared/package-version-CFuNUWDG.js +0 -4
- package/dist/packem_shared/runtime-check-Bh5q9IrT.js +0 -1
- package/dist/packem_shared/spinner-ukDEdGvp.js +0 -1
- package/dist/packem_shared/target-merge-BClIXg2k.js +0 -14
- package/dist/packem_shared/toolchain-DvUxlbDz.js +0 -5
- package/dist/packem_shared/watch-loop-BId9vT7Q.js +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire as U}from"node:module";import{e as y,$ as O,s as D,a as Y}from"./index-BdMIfGVZ.js";import{withEnhancedPath as z,collectNodeModulesBinDirs as G}from"@visulima/task-runner";import{s as $}from"./index-B4AjSxHU.js";import{detectPackageManager as H,resolveAdd as J,resolveRemove as V,whichBin as X,resolveUnlink as K,resolveInstall as Q,execPmCommandInteractive as Z,resolveDlx as ee,resolveExec as ne,resolveDedupe as re,resolveWhy as se,resolveLink as ae,resolvePmCommand as ie}from"#native";import{y as j}from"./isAccessibleSync-DYKTrrvc-BwaMhQs0.js";let W;const x=e=>(W??=U(import.meta.url))(e),k=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,q=e=>{if(typeof k<"u"&&k.versions&&k.versions.node){const[n,r]=k.versions.node.split(".").map(Number);if(n>22||n===22&&r>=3||n===20&&r>=16)return k.getBuiltinModule(e)}return x(e)},{spawn:F,spawnSync:E}=q("node:child_process"),d=(e,n,r,s)=>{for(const a of n)e.push("--filter",a);r&&e.push("--recursive"),s&&e.push("--workspace-root")},te=e=>{const n=[],r=[];return d(n,e.filter,e.recursive,e.workspaceRoot),e.silent&&n.push("--silent"),e.frozenLockfile&&n.push("--frozen-lockfile"),n.push("install"),e.dev&&n.push("--dev"),e.prod&&n.push("--prod"),e.force&&n.push("--force"),e.ignoreScripts&&n.push("--ignore-scripts"),e.lockfileOnly&&n.push("--lockfile-only"),e.noOptional&&n.push("--no-optional"),e.offline&&n.push("--offline"),{args:n,bin:"aube",warnings:r}},oe=e=>{const n=[],r=[];return d(n,e.filter,!1,!1),n.push("add"),e.saveDev&&n.push("--save-dev"),e.exact&&n.push("--save-exact"),e.global&&n.push("--global"),e.optional&&n.push("--save-optional"),e.peer&&n.push("--save-peer"),e.workspace&&r.push("aube has no flag for the `workspace:` protocol; it auto-detects local workspace members during add. Ignoring --workspace."),e.workspaceRoot&&n.push("--workspace"),n.push(...e.packages),{args:n,bin:"aube",warnings:r}},ue=e=>{const n=[];return d(n,e.filter,e.recursive,!1),n.push("remove"),e.saveDev&&n.push("--save-dev"),e.global&&n.push("--global"),e.workspaceRoot&&n.push("--workspace"),n.push(...e.packages),{args:n,bin:"aube",warnings:[]}},ce=e=>{const n=["dedupe"];return e&&n.push("--check"),{args:n,bin:"aube",warnings:[]}},le=e=>{const n=[],r=[];d(n,e.filter,e.recursive,!1),n.push("why"),e.dev&&n.push("--dev"),e.prod&&n.push("--prod"),e.json&&n.push("--json"),e.long&&n.push("--long"),e.parseable&&n.push("--parseable"),e.depth!==void 0&&r.push("aube why does not accept --depth; ignoring."),e.noOptional&&r.push("aube why does not accept --no-optional; ignoring."),e.global&&r.push("aube why does not accept --global; ignoring.");const[s,...a]=e.packages;return s===void 0?r.push("aube why requires a package name; none provided."):(a.length>0&&r.push("aube why takes a single package; using the first."),n.push(s)),{args:n,bin:"aube",warnings:r}},fe=e=>{const n=[];e.silent&&n.push("--silent"),n.push("dlx");for(const r of e.additionalPackages)n.push("--package",r);return e.shellMode&&n.push("--shell-mode"),n.push(e.package),n.push(...e.args),{args:n,bin:"aube",warnings:[]}},pe=e=>{const n=[];return d(n,e.filter,e.recursive,e.workspaceRoot),n.push("exec"),e.parallel&&n.push("--parallel"),e.reverse&&n.push("--reverse"),e.shellMode&&n.push("--shell-mode"),n.push(e.command),n.push(...e.args),{args:n,bin:"aube",warnings:[]}},he=e=>{const n=["link"];return e!==null&&n.push(e),{args:n,bin:"aube",warnings:[]}},de=(e,n)=>{const r=[],s=[];return n&&r.push("--recursive"),r.push("unlink"),e.length>1&&s.push("aube unlink takes a single package; using the first."),e.length>0&&r.push(e[0]),{args:r,bin:"aube",warnings:s}},ge=e=>{const n=["view","--",e.package],r=[],[s,...a]=e.fields;return s!==void 0?(a.length>0&&r.push("aube view only supports a single field; using the first."),e.json&&r.push("aube view does not support --json with a field selector; printing the field without --json."),n.push(s)):e.json&&n.push("--json"),{args:n,bin:"aube",warnings:r}},ze=e=>{const n=[],r=[];return d(n,e.filters,e.recursive,e.workspaceRoot),n.push("update"),e.dev&&n.push("--dev"),e.prod&&n.push("--prod"),e.global&&n.push("--global"),e.interactive&&n.push("--interactive"),e.latest&&n.push("--latest"),e.noOptional&&n.push("--no-optional"),e.noSave&&n.push("--no-save"),n.push(...e.packages),{args:n,bin:"aube",warnings:r}},be=new Set(["fund","ping","search","token"]),ke=(e,n)=>be.has(e)?{args:[e,...n],bin:"npm",warnings:[`'${e}' is not natively supported by aube. Delegating to npm.`]}:{args:[e,...n],bin:"aube",warnings:[]},w=256*1024,we=e=>{const n=e?{...process.env,...e}:{...process.env};return process.stderr.isTTY&&n.FORCE_COLOR===void 0&&n.NO_COLOR===void 0&&(n.FORCE_COLOR="1"),n},P=e=>e!==""&&!/[\s"&()<>^|%!]/u.test(e)?e:`"${e.replaceAll(/(\\*)"/gu,String.raw`$1$1\"`).replace(/(\\+)$/u,"$1$1").replaceAll(/[&()<>^|%!]/gu,String.raw`^$&`)}"`,ve=async(e,n,r)=>new Promise((s,a)=>{const i=process.platform==="win32",t=F(i?P(e):e,i?n.map(o=>P(o)):[...n],{cwd:r.cwd,env:we(r.env),shell:i,stdio:["inherit","pipe","pipe"],windowsHide:!0});let c=[],f=0;const p=o=>{if(c.push(o),f+=o.length,!(f<=w)){for(;c.length>1&&f-c[0].length>w;)f-=c.shift().length;if(c.length===1&&f>w){const h=c[0];c[0]=h.subarray(h.length-w),f=w}}},b=()=>Buffer.concat(c).toString("utf8");t.stdout?.on("data",o=>{process.stdout.write(o),p(o)}),t.stderr?.on("data",o=>{process.stderr.write(o),p(o)}),t.on("error",a),t.on("close",o=>{const h=b();c=[],s({code:o??1,output:h})})}),v=e=>{const n=$.coerce(e);return n?$.gte(n,"11.0.0"):!1},l=e=>e.name==="yarn"&&!e.version.startsWith("1."),R=e=>e.name==="yarn"&&e.version.startsWith("1."),ye=e=>e[0]==="rm"?["remove",...e.slice(1)]:e,me=(e,n,r)=>{switch(n){case"audit":return l(e)?{args:["npm","audit",...r],bin:"yarn",kind:"rewrite"}:{kind:"passthrough"};case"config":{if(l(e)){const[s,...a]=r;return s==="delete"?{args:["config","unset",...a],bin:"yarn",kind:"rewrite",warning:"yarn berry uses `config unset`, not `config delete`."}:{kind:"passthrough"}}return e.name==="bun"?{kind:"skip",warning:"bun has no `config` CLI. Edit bunfig.toml or .npmrc directly."}:{kind:"passthrough"}}case"dist-tag":return R(e)?{args:["tag",...r],bin:"yarn",kind:"rewrite",warning:"yarn 1 has no `dist-tag`; using `yarn tag`."}:l(e)?{args:["npm","tag",...ye(r)],bin:"yarn",kind:"rewrite"}:e.name==="bun"?{kind:"skip",warning:`${e.name} has no \`dist-tag\`. Use \`npm dist-tag\` instead.`}:{kind:"passthrough"};case"login":case"logout":return l(e)?{args:["npm",n,...r],bin:"yarn",kind:"rewrite"}:e.name==="bun"?{args:[n,...r],bin:"npm",kind:"rewrite",warning:`bun has no \`${n}\`; falling back to \`npm ${n}\` (writes ~/.npmrc, which bun reads).`}:{kind:"passthrough"};case"owner":return e.name==="pnpm"&&v(e.version)?{args:["owner",...r],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `owner`; falling back to `npm owner`."}:l(e)?{args:["owner",...r],bin:"npm",kind:"rewrite",warning:"yarn berry has no `owner` (not in `yarn npm`); falling back to `npm owner`."}:e.name==="bun"?{args:["owner",...r],bin:"npm",kind:"rewrite",warning:"bun has no `owner`; falling back to `npm owner`."}:{kind:"passthrough"};case"ping":return e.name==="pnpm"&&v(e.version)?{args:["ping",...r],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `ping`; falling back to `npm ping`."}:{kind:"passthrough"};case"pkg":return e.name==="bun"?{args:["pm","pkg",...r],bin:"bun",kind:"rewrite"}:e.name==="yarn"?{args:["pkg",...r],bin:"npm",kind:"rewrite",warning:`${e.name} has no \`pkg\` command; falling back to \`npm pkg\`.`}:{kind:"passthrough"};case"plugin":return l(e)?{kind:"passthrough"}:{kind:"skip",warning:`${e.name} does not support yarn-style plugins. Skipping (no-op).`};case"prune":return R(e)?{kind:"skip",warning:"yarn 1 has no `prune`. Use `yarn install --production` for a prod-only tree."}:l(e)?{kind:"skip",warning:"yarn berry has no `prune`. Use `yarn workspaces focus --production` instead."}:e.name==="bun"?{kind:"skip",warning:`${e.name} has no \`prune\`. Pruning happens automatically on install.`}:{kind:"passthrough"};case"publish":return l(e)?{args:["npm","publish",...r],bin:"yarn",kind:"rewrite"}:{kind:"passthrough"};case"rebuild":return R(e)?{kind:"skip",warning:"yarn 1 has no `rebuild`. Re-install instead."}:e.name==="bun"?{kind:"skip",warning:"bun has no `rebuild`. Use `bun install --force` instead."}:{kind:"passthrough"};case"search":return e.name==="pnpm"&&v(e.version)?{args:["search",...r],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `search`; falling back to `npm search`."}:{kind:"passthrough"};case"token":return e.name==="pnpm"&&v(e.version)?{args:["token",...r],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `token`; falling back to `npm token`."}:{kind:"passthrough"};case"whoami":return e.name==="pnpm"&&v(e.version)?{args:["whoami",...r],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `whoami`; falling back to `npm whoami`."}:l(e)?{args:["npm","whoami",...r],bin:"yarn",kind:"rewrite"}:e.name==="bun"?{args:["pm","whoami",...r],bin:"bun",kind:"rewrite"}:{kind:"passthrough"};default:return{kind:"passthrough"}}},A=e=>X(e)!==null,$e=e=>{const n=[["pnpm-lock.yaml","pnpm"],["yarn.lock","yarn"],["package-lock.json","npm"],["npm-shrinkwrap.json","npm"],["bun.lock","bun"],["bun.lockb","bun"]];let r=e;for(;;){for(const[a,i]of n)if(j(y(r,a)))return i;const s=O(r);if(s===r||D(r).root===r)return;r=s}},Ge=(e,n)=>{if(n.name!=="aube")return;const r=$e(e);if(r!==void 0)return`Resolved installer is aube but the workspace has a ${r} lockfile. Aube reads and writes ${r}'s lockfile format in place, but its byte output may differ subtly — expect a one-time churn diff on the first install, and ongoing drift if your team mixes tools on the same lockfile. To pin the choice across the team, set \`install.backend\` in vis.config; to bypass aube for this run, pass --no-aube.`},C=e=>{if(j(e))try{return JSON.parse(Y(e,{buffer:!1}))}catch{return}},je=e=>{let n=e;for(;;){const r=y(n,"package.json"),s=C(r);if(s&&typeof s.packageManager=="string"&&s.packageManager.length>0)return s.packageManager;const a=O(n);if(a===n||D(n).root===n)return;n=a}},I=new Set(["npm","pnpm","yarn"]),M=(e,n,r)=>r===!1||!I.has(n)||!A("corepack")?!1:r===!0?!0:je(e)!==void 0,He=(e,n)=>{const r=n.backend,s=process.env.VIS_INSTALLER,a=r??s??n.configBackend,i=n.configCorepack??"auto";if(a&&a!=="auto"){if(a==="aube"&&!A("aube"))throw new Error('install.backend is set to "aube" but the `aube` binary is not on PATH. Install it via `npm i -g @endevco/aube`, `mise use -g aube`, or `brew install endevco/tap/aube`.');return{name:a,useCorepack:M(e,a,i),version:"latest"}}if(A("aube"))return{name:"aube",useCorepack:!1,version:"latest"};const t=Re(e);return{...t,useCorepack:M(e,t.name,i)}},Re=e=>{if(!j(e))throw new Error(`Could not detect package manager in ${e}. Directory does not exist.`);const n=H(e);return{name:n.name,version:n.version||"latest"}},L=(e,n)=>n.useCorepack!==!0||!I.has(n.name)||e.bin==="corepack"||e.bin!==n.name?e:{...e,args:[n.name,...e.args],bin:"corepack"},Ae=(e,n,r)=>{if(r===void 0)return Z(e.bin,e.args,n);const s=E(e.bin,e.args,{cwd:n,env:{...process.env,...r},stdio:"inherit"});if(s.error)throw s.error;return s.status??1},u=(e,n,r,s,a={})=>{const i=L(n,e);for(const t of i.warnings)s.warn(`warning: ${t}`);return a.dry?(s.log(`[dry-run] ${i.bin} ${i.args.join(" ")}`),0):Ae(i,r,a.env)},g=(e,n,r,s,a={})=>u(e,n(),r,s,a),Oe=(e,n)=>n==="aube"?e:{...e,args:[...e.args,"--prefer-offline"]},De=(e,n,r)=>n!=="yarn"||r.startsWith("1.")||!e.args.includes("--immutable")||e.args.includes("--immutable-cache")?e:{...e,args:[...e.args,"--immutable-cache"]},N=(e,n,r)=>{let s=e.name==="aube"?te(n):Q(e.name,e.version,{...n,silent:n.silent||r.silent===!0});return r.preferOffline&&(s=Oe(s,e.name)),r.ciMode&&(s=De(s,e.name,e.version)),s},Je=(e,n,r,s,a={})=>{const i=N(e,n,a);return S(e,i,r,s,{dry:a.dry,env:a.env})},Ve=async(e,n,r,s,a={})=>{const i=L(N(e,n,a),e);for(const t of i.warnings)s.warn(`warning: ${t}`);return a.dry?(s.log(`[dry-run] ${i.bin} ${i.args.join(" ")}`),{code:0,output:""}):ve(i.bin,i.args,{cwd:r,env:a.env?{...process.env,...a.env}:process.env})},B=e=>({...e,args:[...e.args,"--silent"]}),Ce=(e,n)=>n==="yarn"||n==="aube"?null:{...e,args:[...e.args,"--dry-run"]},S=(e,n,r,s,a)=>{if(a.dry!==!0)return u(e,n,r,s,a);const i=Ce(n,e.name);return i===null?u(e,n,r,s,a):u(e,i,r,s,{env:a.env})},Se=e=>({...e,args:[...e.args,"--ignore-scripts"]}),_e=(e,n,r,s,a={})=>{let i=e.name==="aube"?oe(n):J(e.name,e.version,n);a.ignoreScripts&&(i=Se(i)),a.silent&&(i=B(i));const t=S(e,i,r,s,{dry:a.dry,env:a.env});return t===0&&a.autoInstallPeers&&Ie(e,n,r,s,a),t},Pe=e=>{if(e.startsWith("@")){const r=e.indexOf("/");if(r===-1)return e;const s=e.indexOf("@",r);return s===-1?e:e.slice(0,s)}const n=e.indexOf("@");return n===-1?e:e.slice(0,n)},Me=(e,n)=>{let r=e;for(;;){const s=y(r,"node_modules",n,"package.json"),a=C(s);if(a)return a;const i=O(r);if(i===r||D(r).root===r)return;r=i}},Ee=e=>{const n=C(y(e,"package.json")),r=new Set;if(!n)return r;for(const s of["dependencies","devDependencies","peerDependencies","optionalDependencies"]){const a=n[s];if(a)for(const i of Object.keys(a))r.add(i)}return r},Ie=(e,n,r,s,a)=>{const i=Ee(r),t=new Map;for(const p of n.packages){const b=Pe(p),o=Me(r,b);if(!o?.peerDependencies)continue;const h=o.peerDependenciesMeta??{};for(const[m,T]of Object.entries(o.peerDependencies))h[m]?.optional||i.has(m)||t.has(m)||t.set(m,T)}if(t.size===0)return;const c=[...t.entries()].map(([p,b])=>`${p}@${b}`);s.log(`auto-installing peer dependencies: ${c.join(", ")}`);const f={exact:!1,filter:n.filter,global:!1,optional:!1,packages:c,peer:!1,saveDev:n.saveDev,workspace:!1,workspaceRoot:n.workspaceRoot};_e(e,f,r,s,{ignoreScripts:a.ignoreScripts})},Xe=(e,n,r,s,a={})=>{let i=e.name==="aube"?ue(n):V(e.name,e.version,n);return a.silent&&(i=B(i)),S(e,i,r,s,{dry:a.dry,env:a.env})},Ke=(e,n,r,s,a={})=>e.name==="aube"?u(e,ce(n),r,s,a):g(e,()=>re(e.name,e.version,n),r,s,a),Qe=(e,n,r,s,a={})=>e.name==="aube"?u(e,le(n),r,s,a):g(e,()=>se(e.name,e.version,n),r,s,a),Le=(e,n)=>{if(e.name==="aube")return ge(n);const r=[],s=[],a=e.name;switch(e.name){case"bun":{const i=$.coerce(e.version);i&&$.lt(i,"1.3.0")&&s.push(`bun ${e.version} does not support \`bun pm view\` (added in bun 1.3). Upgrade bun, or run \`npm view ${n.package}\` instead.`),r.push("pm","view","--",n.package,...n.fields),n.json&&r.push("--json");break}case"npm":case"pnpm":{r.push("view","--",n.package,...n.fields),n.json&&r.push("--json");break}case"yarn":{if(e.version.startsWith("1.")){r.push("info","--",n.package);const[i,...t]=n.fields;i!==void 0&&(t.length>0&&s.push("yarn v1 only supports querying one field at a time; using the first."),r.push(i)),n.json&&r.push("--json")}else r.push("npm","info","--",n.package),n.fields.length>0&&s.push("yarn berry does not support field arguments to 'npm info'; ignoring."),n.json&&r.push("--json");break}default:{const i=e.name;throw new Error(`Unsupported package manager: ${i}`)}}return{args:r,bin:a,warnings:s}},Ze=(e,n,r,s,a={})=>u(e,Le(e,n),r,s,a),en=(e,n,r,s,a={})=>e.name==="aube"?u(e,he(n),r,s,a):g(e,()=>ae(e.name,e.version,n),r,s,a),nn=(e,n,r,s,a,i={})=>e.name==="aube"?u(e,de(n,r),s,a,i):g(e,()=>K(e.name,e.version,n,r),s,a,i),Ne=(e,n,r)=>{if(e.args.includes("--offline")||e.args.includes("--cached-only"))return e;const s=(a,i)=>{const t=[...e.args];return t.splice(i,0,a),{...e,args:t}};switch(n){case"aube":case"pnpm":return s("--offline",1);case"bun":return{...e,warnings:[...e.warnings,"bun x does not support --offline. Pre-install the package via `vis install` so bun x resolves from the local cache."]};case"npm":return s("--offline",1);case"yarn":return r.startsWith("1.")?s("--offline",0):{...e,warnings:[...e.warnings,"yarn berry has no --offline flag for dlx. Configure `enableNetwork: false` in .yarnrc.yml or set `enableMirror: true` for offline-first behavior."]};default:{const a=n;return{...e,warnings:[...e.warnings,`applyDlxOffline: unsupported pm ${String(a)}`]}}}},rn=(e,n,r,s,a={})=>{let i=e.name==="aube"?fe(n):ee(e.name,e.version,n);return a.offline&&(i=Ne(i,e.name,e.version)),u(e,i,r,s,{dry:a.dry,env:a.env})},_=process.platform==="win32",Be=_?[".exe",".cmd",".bat",".ps1",""]:[""],Te=(e,n)=>{if(!(e.includes("/")||e.includes("\\")))for(const r of G(n))for(const s of Be){const a=y(r,`${e}${s}`);if(j(a))return _?a.replaceAll("/","\\"):a}},sn=(e,n,r)=>{const s=Te(e,r);if(s===void 0||_&&!s.toLowerCase().endsWith(".exe"))return null;const a=E(s,n,{cwd:r,env:z({...process.env},r),stdio:"inherit"});if(a.error)throw a.error;return a.status??1},an=(e,n,r,s,a={})=>e.name==="aube"?u(e,pe(n),r,s,a):g(e,()=>ne(e.name,e.version,n),r,s,a),tn=(e,n,r,s,a,i={})=>{if(e.name==="aube")return u(e,ke(n,r),s,a,i);const t=me(e,n,r);return t.kind==="skip"?(a.warn(`warning: ${t.warning}`),0):t.kind==="rewrite"?u(e,{args:t.args,bin:t.bin,warnings:t.warning?[t.warning]:[]},s,a,i):g(e,()=>ie(e.name,e.version,n,r),s,a,i)};export{He as a,an as b,_e as c,Re as d,Ke as e,Ze as f,Ge as g,Ve as h,en as i,tn as j,Xe as k,nn as l,Qe as m,Je as n,rn as o,ze as p,sn as r,ve as s};
|
|
1
|
+
import{createRequire as U}from"node:module";import{e as y,m as O,b as D,z as Y}from"./index-BzhrR_iC.js";import{withEnhancedPath as z,collectNodeModulesBinDirs as G}from"@visulima/task-runner";import{s as $}from"./index-B4AjSxHU.js";import{detectPackageManager as H,resolveAdd as J,resolveRemove as V,whichBin as X,resolveUnlink as K,resolveInstall as Q,execPmCommandInteractive as Z,resolveDlx as ee,resolveExec as ne,resolveDedupe as re,resolveWhy as se,resolveLink as ie,resolvePmCommand as ae}from"#native";import{y as j}from"./isAccessibleSync-DYKTrrvc-C-_5cgwu.js";let W;const x=e=>(W??=U(import.meta.url))(e),k=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,q=e=>{if(typeof k<"u"&&k.versions&&k.versions.node){const[n,r]=k.versions.node.split(".").map(Number);if(n>22||n===22&&r>=3||n===20&&r>=16)return k.getBuiltinModule(e)}return x(e)},{spawn:F,spawnSync:E}=q("node:child_process"),d=(e,n,r,s)=>{for(const i of n)e.push("--filter",i);r&&e.push("--recursive"),s&&e.push("--workspace-root")},te=e=>{const n=[],r=[];return d(n,e.filter,e.recursive,e.workspaceRoot),e.silent&&n.push("--silent"),e.frozenLockfile&&n.push("--frozen-lockfile"),n.push("install"),e.dev&&n.push("--dev"),e.prod&&n.push("--prod"),e.force&&n.push("--force"),e.ignoreScripts&&n.push("--ignore-scripts"),e.lockfileOnly&&n.push("--lockfile-only"),e.noOptional&&n.push("--no-optional"),e.offline&&n.push("--offline"),{args:n,bin:"aube",warnings:r}},oe=e=>{const n=[],r=[];return d(n,e.filter,!1,!1),n.push("add"),e.saveDev&&n.push("--save-dev"),e.exact&&n.push("--save-exact"),e.global&&n.push("--global"),e.optional&&n.push("--save-optional"),e.peer&&n.push("--save-peer"),e.workspace&&r.push("aube has no flag for the `workspace:` protocol; it auto-detects local workspace members during add. Ignoring --workspace."),e.workspaceRoot&&n.push("--workspace"),n.push(...e.packages),{args:n,bin:"aube",warnings:r}},ue=e=>{const n=[];return d(n,e.filter,e.recursive,!1),n.push("remove"),e.saveDev&&n.push("--save-dev"),e.global&&n.push("--global"),e.workspaceRoot&&n.push("--workspace"),n.push(...e.packages),{args:n,bin:"aube",warnings:[]}},ce=e=>{const n=["dedupe"];return e&&n.push("--check"),{args:n,bin:"aube",warnings:[]}},le=e=>{const n=[],r=[];d(n,e.filter,e.recursive,!1),n.push("why"),e.dev&&n.push("--dev"),e.prod&&n.push("--prod"),e.json&&n.push("--json"),e.long&&n.push("--long"),e.parseable&&n.push("--parseable"),e.depth!==void 0&&r.push("aube why does not accept --depth; ignoring."),e.noOptional&&r.push("aube why does not accept --no-optional; ignoring."),e.global&&r.push("aube why does not accept --global; ignoring.");const[s,...i]=e.packages;return s===void 0?r.push("aube why requires a package name; none provided."):(i.length>0&&r.push("aube why takes a single package; using the first."),n.push(s)),{args:n,bin:"aube",warnings:r}},fe=e=>{const n=[];e.silent&&n.push("--silent"),n.push("dlx");for(const r of e.additionalPackages)n.push("--package",r);return e.shellMode&&n.push("--shell-mode"),n.push(e.package),n.push(...e.args),{args:n,bin:"aube",warnings:[]}},pe=e=>{const n=[];return d(n,e.filter,e.recursive,e.workspaceRoot),n.push("exec"),e.parallel&&n.push("--parallel"),e.reverse&&n.push("--reverse"),e.shellMode&&n.push("--shell-mode"),n.push(e.command),n.push(...e.args),{args:n,bin:"aube",warnings:[]}},he=e=>{const n=["link"];return e!==null&&n.push(e),{args:n,bin:"aube",warnings:[]}},de=(e,n)=>{const r=[],s=[];return n&&r.push("--recursive"),r.push("unlink"),e.length>1&&s.push("aube unlink takes a single package; using the first."),e.length>0&&r.push(e[0]),{args:r,bin:"aube",warnings:s}},ge=e=>{const n=["view","--",e.package],r=[],[s,...i]=e.fields;return s!==void 0?(i.length>0&&r.push("aube view only supports a single field; using the first."),e.json&&r.push("aube view does not support --json with a field selector; printing the field without --json."),n.push(s)):e.json&&n.push("--json"),{args:n,bin:"aube",warnings:r}},ze=e=>{const n=[],r=[];return d(n,e.filters,e.recursive,e.workspaceRoot),n.push("update"),e.dev&&n.push("--dev"),e.prod&&n.push("--prod"),e.global&&n.push("--global"),e.interactive&&n.push("--interactive"),e.latest&&n.push("--latest"),e.noOptional&&n.push("--no-optional"),e.noSave&&n.push("--no-save"),n.push(...e.packages),{args:n,bin:"aube",warnings:r}},be=new Set(["fund","ping","search","token"]),ke=(e,n)=>be.has(e)?{args:[e,...n],bin:"npm",warnings:[`'${e}' is not natively supported by aube. Delegating to npm.`]}:{args:[e,...n],bin:"aube",warnings:[]},w=256*1024,we=e=>{const n=e?{...process.env,...e}:{...process.env};return process.stderr.isTTY&&n.FORCE_COLOR===void 0&&n.NO_COLOR===void 0&&(n.FORCE_COLOR="1"),n},P=e=>e!==""&&!/[\s"&()<>^|%!]/u.test(e)?e:`"${e.replaceAll(/(\\*)"/gu,String.raw`$1$1\"`).replace(/(\\+)$/u,"$1$1").replaceAll(/[&()<>^|%!]/gu,String.raw`^$&`)}"`,ve=async(e,n,r)=>new Promise((s,i)=>{const a=process.platform==="win32",t=F(a?P(e):e,a?n.map(o=>P(o)):[...n],{cwd:r.cwd,env:we(r.env),shell:a,stdio:["inherit","pipe","pipe"],windowsHide:!0});let c=[],f=0;const p=o=>{if(c.push(o),f+=o.length,!(f<=w)){for(;c.length>1&&f-c[0].length>w;)f-=c.shift().length;if(c.length===1&&f>w){const h=c[0];c[0]=h.subarray(h.length-w),f=w}}},b=()=>Buffer.concat(c).toString("utf8");t.stdout?.on("data",o=>{process.stdout.write(o),p(o)}),t.stderr?.on("data",o=>{process.stderr.write(o),p(o)}),t.on("error",i),t.on("close",o=>{const h=b();c=[],s({code:o??1,output:h})})}),v=e=>{const n=$.coerce(e);return n?$.gte(n,"11.0.0"):!1},l=e=>e.name==="yarn"&&!e.version.startsWith("1."),R=e=>e.name==="yarn"&&e.version.startsWith("1."),ye=e=>e[0]==="rm"?["remove",...e.slice(1)]:e,me=(e,n,r)=>{switch(n){case"audit":return l(e)?{args:["npm","audit",...r],bin:"yarn",kind:"rewrite"}:{kind:"passthrough"};case"config":{if(l(e)){const[s,...i]=r;return s==="delete"?{args:["config","unset",...i],bin:"yarn",kind:"rewrite",warning:"yarn berry uses `config unset`, not `config delete`."}:{kind:"passthrough"}}return e.name==="bun"?{kind:"skip",warning:"bun has no `config` CLI. Edit bunfig.toml or .npmrc directly."}:{kind:"passthrough"}}case"dist-tag":return R(e)?{args:["tag",...r],bin:"yarn",kind:"rewrite",warning:"yarn 1 has no `dist-tag`; using `yarn tag`."}:l(e)?{args:["npm","tag",...ye(r)],bin:"yarn",kind:"rewrite"}:e.name==="bun"?{kind:"skip",warning:`${e.name} has no \`dist-tag\`. Use \`npm dist-tag\` instead.`}:{kind:"passthrough"};case"login":case"logout":return l(e)?{args:["npm",n,...r],bin:"yarn",kind:"rewrite"}:e.name==="bun"?{args:[n,...r],bin:"npm",kind:"rewrite",warning:`bun has no \`${n}\`; falling back to \`npm ${n}\` (writes ~/.npmrc, which bun reads).`}:{kind:"passthrough"};case"owner":return e.name==="pnpm"&&v(e.version)?{args:["owner",...r],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `owner`; falling back to `npm owner`."}:l(e)?{args:["owner",...r],bin:"npm",kind:"rewrite",warning:"yarn berry has no `owner` (not in `yarn npm`); falling back to `npm owner`."}:e.name==="bun"?{args:["owner",...r],bin:"npm",kind:"rewrite",warning:"bun has no `owner`; falling back to `npm owner`."}:{kind:"passthrough"};case"ping":return e.name==="pnpm"&&v(e.version)?{args:["ping",...r],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `ping`; falling back to `npm ping`."}:{kind:"passthrough"};case"pkg":return e.name==="bun"?{args:["pm","pkg",...r],bin:"bun",kind:"rewrite"}:e.name==="yarn"?{args:["pkg",...r],bin:"npm",kind:"rewrite",warning:`${e.name} has no \`pkg\` command; falling back to \`npm pkg\`.`}:{kind:"passthrough"};case"plugin":return l(e)?{kind:"passthrough"}:{kind:"skip",warning:`${e.name} does not support yarn-style plugins. Skipping (no-op).`};case"prune":return R(e)?{kind:"skip",warning:"yarn 1 has no `prune`. Use `yarn install --production` for a prod-only tree."}:l(e)?{kind:"skip",warning:"yarn berry has no `prune`. Use `yarn workspaces focus --production` instead."}:e.name==="bun"?{kind:"skip",warning:`${e.name} has no \`prune\`. Pruning happens automatically on install.`}:{kind:"passthrough"};case"publish":return l(e)?{args:["npm","publish",...r],bin:"yarn",kind:"rewrite"}:{kind:"passthrough"};case"rebuild":return R(e)?{kind:"skip",warning:"yarn 1 has no `rebuild`. Re-install instead."}:e.name==="bun"?{kind:"skip",warning:"bun has no `rebuild`. Use `bun install --force` instead."}:{kind:"passthrough"};case"search":return e.name==="pnpm"&&v(e.version)?{args:["search",...r],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `search`; falling back to `npm search`."}:{kind:"passthrough"};case"token":return e.name==="pnpm"&&v(e.version)?{args:["token",...r],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `token`; falling back to `npm token`."}:{kind:"passthrough"};case"whoami":return e.name==="pnpm"&&v(e.version)?{args:["whoami",...r],bin:"npm",kind:"rewrite",warning:"pnpm 11 removed `whoami`; falling back to `npm whoami`."}:l(e)?{args:["npm","whoami",...r],bin:"yarn",kind:"rewrite"}:e.name==="bun"?{args:["pm","whoami",...r],bin:"bun",kind:"rewrite"}:{kind:"passthrough"};default:return{kind:"passthrough"}}},A=e=>X(e)!==null,$e=e=>{const n=[["pnpm-lock.yaml","pnpm"],["yarn.lock","yarn"],["package-lock.json","npm"],["npm-shrinkwrap.json","npm"],["bun.lock","bun"],["bun.lockb","bun"]];let r=e;for(;;){for(const[i,a]of n)if(j(y(r,i)))return a;const s=O(r);if(s===r||D(r).root===r)return;r=s}},Ge=(e,n)=>{if(n.name!=="aube")return;const r=$e(e);if(r!==void 0)return`Resolved installer is aube but the workspace has a ${r} lockfile. Aube reads and writes ${r}'s lockfile format in place, but its byte output may differ subtly — expect a one-time churn diff on the first install, and ongoing drift if your team mixes tools on the same lockfile. To pin the choice across the team, set \`install.backend\` in vis.config; to bypass aube for this run, pass --no-aube.`},C=e=>{if(j(e))try{return JSON.parse(Y(e,{buffer:!1}))}catch{return}},je=e=>{let n=e;for(;;){const r=y(n,"package.json"),s=C(r);if(s&&typeof s.packageManager=="string"&&s.packageManager.length>0)return s.packageManager;const i=O(n);if(i===n||D(n).root===n)return;n=i}},I=new Set(["npm","pnpm","yarn"]),M=(e,n,r)=>r===!1||!I.has(n)||!A("corepack")?!1:r===!0?!0:je(e)!==void 0,He=(e,n)=>{const r=n.backend,s=process.env.VIS_INSTALLER,i=r??s??n.configBackend,a=n.configCorepack??"auto";if(i&&i!=="auto"){if(i==="aube"&&!A("aube"))throw new Error('install.backend is set to "aube" but the `aube` binary is not on PATH. Install it via `npm i -g @endevco/aube`, `mise use -g aube`, or `brew install endevco/tap/aube`.');return{name:i,useCorepack:M(e,i,a),version:"latest"}}if(A("aube"))return{name:"aube",useCorepack:!1,version:"latest"};const t=Re(e);return{...t,useCorepack:M(e,t.name,a)}},Re=e=>{if(!j(e))throw new Error(`Could not detect package manager in ${e}. Directory does not exist.`);const n=H(e);return{name:n.name,version:n.version||"latest"}},L=(e,n)=>n.useCorepack!==!0||!I.has(n.name)||e.bin==="corepack"||e.bin!==n.name?e:{...e,args:[n.name,...e.args],bin:"corepack"},Ae=(e,n,r)=>{if(r===void 0)return Z(e.bin,e.args,n);const s=E(e.bin,e.args,{cwd:n,env:{...process.env,...r},stdio:"inherit"});if(s.error)throw s.error;return s.status??1},u=(e,n,r,s,i={})=>{const a=L(n,e);for(const t of a.warnings)s.warn(`warning: ${t}`);return i.dry?(s.log(`[dry-run] ${a.bin} ${a.args.join(" ")}`),0):Ae(a,r,i.env)},g=(e,n,r,s,i={})=>u(e,n(),r,s,i),Oe=(e,n)=>n==="aube"?e:{...e,args:[...e.args,"--prefer-offline"]},De=(e,n,r)=>n!=="yarn"||r.startsWith("1.")||!e.args.includes("--immutable")||e.args.includes("--immutable-cache")?e:{...e,args:[...e.args,"--immutable-cache"]},N=(e,n,r)=>{let s=e.name==="aube"?te(n):Q(e.name,e.version,{...n,silent:n.silent||r.silent===!0});return r.preferOffline&&(s=Oe(s,e.name)),r.ciMode&&(s=De(s,e.name,e.version)),s},Je=(e,n,r,s,i={})=>{const a=N(e,n,i);return S(e,a,r,s,{dry:i.dry,env:i.env})},Ve=async(e,n,r,s,i={})=>{const a=L(N(e,n,i),e);for(const t of a.warnings)s.warn(`warning: ${t}`);return i.dry?(s.log(`[dry-run] ${a.bin} ${a.args.join(" ")}`),{code:0,output:""}):ve(a.bin,a.args,{cwd:r,env:i.env?{...process.env,...i.env}:process.env})},B=e=>({...e,args:[...e.args,"--silent"]}),Ce=(e,n)=>n==="yarn"||n==="aube"?null:{...e,args:[...e.args,"--dry-run"]},S=(e,n,r,s,i)=>{if(i.dry!==!0)return u(e,n,r,s,i);const a=Ce(n,e.name);return a===null?u(e,n,r,s,i):u(e,a,r,s,{env:i.env})},Se=e=>({...e,args:[...e.args,"--ignore-scripts"]}),_e=(e,n,r,s,i={})=>{let a=e.name==="aube"?oe(n):J(e.name,e.version,n);i.ignoreScripts&&(a=Se(a)),i.silent&&(a=B(a));const t=S(e,a,r,s,{dry:i.dry,env:i.env});return t===0&&i.autoInstallPeers&&Ie(e,n,r,s,i),t},Pe=e=>{if(e.startsWith("@")){const r=e.indexOf("/");if(r===-1)return e;const s=e.indexOf("@",r);return s===-1?e:e.slice(0,s)}const n=e.indexOf("@");return n===-1?e:e.slice(0,n)},Me=(e,n)=>{let r=e;for(;;){const s=y(r,"node_modules",n,"package.json"),i=C(s);if(i)return i;const a=O(r);if(a===r||D(r).root===r)return;r=a}},Ee=e=>{const n=C(y(e,"package.json")),r=new Set;if(!n)return r;for(const s of["dependencies","devDependencies","peerDependencies","optionalDependencies"]){const i=n[s];if(i)for(const a of Object.keys(i))r.add(a)}return r},Ie=(e,n,r,s,i)=>{const a=Ee(r),t=new Map;for(const p of n.packages){const b=Pe(p),o=Me(r,b);if(!o?.peerDependencies)continue;const h=o.peerDependenciesMeta??{};for(const[m,T]of Object.entries(o.peerDependencies))h[m]?.optional||a.has(m)||t.has(m)||t.set(m,T)}if(t.size===0)return;const c=[...t.entries()].map(([p,b])=>`${p}@${b}`);s.log(`auto-installing peer dependencies: ${c.join(", ")}`);const f={exact:!1,filter:n.filter,global:!1,optional:!1,packages:c,peer:!1,saveDev:n.saveDev,workspace:!1,workspaceRoot:n.workspaceRoot};_e(e,f,r,s,{ignoreScripts:i.ignoreScripts})},Xe=(e,n,r,s,i={})=>{let a=e.name==="aube"?ue(n):V(e.name,e.version,n);return i.silent&&(a=B(a)),S(e,a,r,s,{dry:i.dry,env:i.env})},Ke=(e,n,r,s,i={})=>e.name==="aube"?u(e,ce(n),r,s,i):g(e,()=>re(e.name,e.version,n),r,s,i),Qe=(e,n,r,s,i={})=>e.name==="aube"?u(e,le(n),r,s,i):g(e,()=>se(e.name,e.version,n),r,s,i),Le=(e,n)=>{if(e.name==="aube")return ge(n);const r=[],s=[],i=e.name;switch(e.name){case"bun":{const a=$.coerce(e.version);a&&$.lt(a,"1.3.0")&&s.push(`bun ${e.version} does not support \`bun pm view\` (added in bun 1.3). Upgrade bun, or run \`npm view ${n.package}\` instead.`),r.push("pm","view","--",n.package,...n.fields),n.json&&r.push("--json");break}case"npm":case"pnpm":{r.push("view","--",n.package,...n.fields),n.json&&r.push("--json");break}case"yarn":{if(e.version.startsWith("1.")){r.push("info","--",n.package);const[a,...t]=n.fields;a!==void 0&&(t.length>0&&s.push("yarn v1 only supports querying one field at a time; using the first."),r.push(a)),n.json&&r.push("--json")}else r.push("npm","info","--",n.package),n.fields.length>0&&s.push("yarn berry does not support field arguments to 'npm info'; ignoring."),n.json&&r.push("--json");break}default:{const a=e.name;throw new Error(`Unsupported package manager: ${a}`)}}return{args:r,bin:i,warnings:s}},Ze=(e,n,r,s,i={})=>u(e,Le(e,n),r,s,i),en=(e,n,r,s,i={})=>e.name==="aube"?u(e,he(n),r,s,i):g(e,()=>ie(e.name,e.version,n),r,s,i),nn=(e,n,r,s,i,a={})=>e.name==="aube"?u(e,de(n,r),s,i,a):g(e,()=>K(e.name,e.version,n,r),s,i,a),Ne=(e,n,r)=>{if(e.args.includes("--offline")||e.args.includes("--cached-only"))return e;const s=(i,a)=>{const t=[...e.args];return t.splice(a,0,i),{...e,args:t}};switch(n){case"aube":case"pnpm":return s("--offline",1);case"bun":return{...e,warnings:[...e.warnings,"bun x does not support --offline. Pre-install the package via `vis install` so bun x resolves from the local cache."]};case"npm":return s("--offline",1);case"yarn":return r.startsWith("1.")?s("--offline",0):{...e,warnings:[...e.warnings,"yarn berry has no --offline flag for dlx. Configure `enableNetwork: false` in .yarnrc.yml or set `enableMirror: true` for offline-first behavior."]};default:{const i=n;return{...e,warnings:[...e.warnings,`applyDlxOffline: unsupported pm ${String(i)}`]}}}},rn=(e,n,r,s,i={})=>{let a=e.name==="aube"?fe(n):ee(e.name,e.version,n);return i.offline&&(a=Ne(a,e.name,e.version)),u(e,a,r,s,{dry:i.dry,env:i.env})},_=process.platform==="win32",Be=_?[".exe",".cmd",".bat",".ps1",""]:[""],Te=(e,n)=>{if(!(e.includes("/")||e.includes("\\")))for(const r of G(n))for(const s of Be){const i=y(r,`${e}${s}`);if(j(i))return _?i.replaceAll("/","\\"):i}},sn=(e,n,r)=>{const s=Te(e,r);if(s===void 0||_&&!s.toLowerCase().endsWith(".exe"))return null;const i=E(s,n,{cwd:r,env:z({...process.env},r),stdio:"inherit"});if(i.error)throw i.error;return i.status??1},an=(e,n,r,s,i={})=>e.name==="aube"?u(e,pe(n),r,s,i):g(e,()=>ne(e.name,e.version,n),r,s,i),tn=(e,n,r,s,i,a={})=>{if(e.name==="aube")return u(e,ke(n,r),s,i,a);const t=me(e,n,r);return t.kind==="skip"?(i.warn(`warning: ${t.warning}`),0):t.kind==="rewrite"?u(e,{args:t.args,bin:t.bin,warnings:t.warning?[t.warning]:[]},s,i,a):g(e,()=>ae(e.name,e.version,n,r),s,i,a)};export{He as a,an as b,_e as c,Re as d,Ke as e,Ze as f,Ge as g,Ve as h,en as i,tn as j,Xe as k,nn as l,Qe as m,Je as n,rn as o,ze as p,sn as r,ve as s};
|
package/dist/packem_shared/{project-name-filter-C2rkW-Vn.js → project-name-filter-B1ZCsbOW.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{createRequire as p}from"node:module";import{V as l}from"./vis-user-error-
|
|
1
|
+
import{createRequire as p}from"node:module";import{V as l}from"./vis-user-error-CRmrBaD1.js";let g;const m=e=>(g??=p(import.meta.url))(e),c=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,h=e=>{if(typeof c<"u"&&c.versions&&c.versions.node){const[s,n]=c.versions.node.split(".").map(Number);if(s>22||s===22&&n>=3||s===20&&n>=16)return c.getBuiltinModule(e)}return m(e)},{createInterface:j}=h("node:readline"),y=e=>{const s=new Set;for(const n of Object.values(e.projects))for(const t of Object.keys(n.targets??{}))s.add(t);return[...s].sort()},b=e=>{const s=new Map;for(const n of e.values())for(const[t,o]of Object.entries(n))for(const r of o.aliases??[])s.has(r)||s.set(r,t);return s},$=(e,s)=>s.get(e)??e,w=(e,s)=>{if(e.length===0)return s.length;if(s.length===0)return e.length;const n=[];for(let t=0;t<=s.length;t++)n[t]=[t];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let t=1;t<=s.length;t++)for(let o=1;o<=e.length;o++){const r=s[t-1]===e[o-1]?0:1;n[t][o]=Math.min(n[t-1][o]+1,n[t][o-1]+1,n[t-1][o-1]+r)}return n[s.length][e.length]},v=(e,s,n=3)=>f(e,s,1,n)[0],f=(e,s,n=3,t=3)=>{const o=[];for(const r of s){const i=w(e.toLowerCase(),r.toLowerCase());i<=t&&o.push({distance:i,name:r})}return o.sort((r,i)=>r.distance-i.distance||r.name.localeCompare(i.name)),o.slice(0,n).map(r=>r.name)},M=e=>e.length===0?" (no targets found)":e.map(s=>` - ${s}`).join(`
|
|
2
2
|
`),S=async e=>{if(e.length===0||!process.stdin.isTTY||!process.stdout.isTTY)return;const s=j({input:process.stdin,output:process.stdout});try{process.stdout.write(`Available targets:
|
|
3
3
|
`);for(const[r,i]of e.entries())process.stdout.write(` ${String(r+1).padStart(2," ")}. ${i}
|
|
4
4
|
`);process.stdout.write(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as i}from"./index-B4AjSxHU.js";import{g as u}from"./packument-
|
|
1
|
+
import{s as i}from"./index-B4AjSxHU.js";import{g as u}from"./packument-zb18Jnlw.js";import{c as d}from"../packem_chunks/cli-main.js";const v=8,h=async(r,e,o)=>{if(r.length===0)return[];const t=Math.max(1,Math.min(e,r.length)),s=Array.from({length:r.length});let n=0;const c=async()=>{for(;n<r.length;){const a=n;n+=1;const l=r[a];s[a]=await o(l,a)}};return await Promise.all(Array.from({length:t},()=>c())),s},f=(r,e)=>r.versions[e]?.dist?.attestations?.provenance!==void 0,p=(r,e)=>i.valid(e)?Object.keys(r.versions).filter(t=>i.valid(t)!==null&&i.lt(t,e)).filter(t=>i.satisfies(t,"*",{includePrerelease:!1})).filter(t=>f(r,t)).sort((t,s)=>i.lt(t,s)?1:-1)[0]:void 0,m=async(r,e={})=>{if(d("provenance"))return[];const o=new Set(e.allowlist),t=e.concurrency??v;return(await h(r,t,async({name:n,version:c})=>{if(o.has(n))return;const a=await u(n,{workspaceRoot:e.workspaceRoot});if(a===void 0||f(a,c))return;const l=p(a,c);if(l!==void 0)return{packageName:n,priorVersionWithProvenance:l,version:c}})).filter(n=>n!==void 0)};export{v as D,p as f,h as m,m as r};
|
package/dist/packem_shared/{readJsonSync-CbryXYxN-Bm5i10UW.js → readJsonSync-CbryXYxN-EWl7_7KX.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as u,c as a,T as l,
|
|
1
|
+
import{r as u,c as a,T as l,z as f,C as d}from"./index-BzhrR_iC.js";const m=e=>String.raw`\u{${e.codePointAt(0).toString(16)}}`,p=(e,r,c)=>l(e,{start:r},{tabWidth:!1,...c}),g=/in JSON at position (\d+)(?: \(line (\d+) column (\d+)\))?$/,N=(e,r)=>{const c=g.exec(r);if(!c)return;const[,i,t,n]=c;if(t&&n)return{column:Number(n),line:Number(t)};let o=Number(i);return o===e.length&&(o=e.length-1),a(e,o)},b=/(?<=^Unexpected token )(?<quote>')?(.)\k<quote>/,h=e=>e.replace(b,(r,c,i)=>`"${i}"(${m(i)})`);function $(e,r,c,i){let t;try{return JSON.parse(e,r)}catch(s){t=s.message}let n;e?(n=N(e,t),t=h(t)):t+=" while parsing empty string";const o=new u(t);throw o.fileName=c,n&&(o.codeFrame=p(e,n,i)),o}function x(e,r,c){const i=f(e,{buffer:!0,encoding:void 0});let t=new TextDecoder().decode(i);const{beforeParse:n,color:o}={};return typeof n=="function"&&(t=n(t)),$(t,r,d(e),{color:o})}export{$ as N,x as p};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire as _}from"node:module";import{e as l}from"./index-
|
|
1
|
+
import{createRequire as _}from"node:module";import{e as l}from"./index-BzhrR_iC.js";import{g as T}from"./formatBytes-_HvjOy8a-B_qQr4Hw.js";import{y as d}from"./isAccessibleSync-DYKTrrvc-C-_5cgwu.js";import{p as b}from"./readJsonSync-CbryXYxN-EWl7_7KX.js";import{h as j}from"./writeFileSync-DJoHk3Ks-BPRoepNw.js";let p;const g=e=>(p??=_(import.meta.url))(e),o=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,v=e=>{if(typeof o<"u"&&o.versions&&o.versions.node){const[t,r]=o.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return o.getBuiltinModule(e)}return g(e)},{rmSync:f,writeFileSync:k}=v("node:fs"),C=1440*60*1e3,A=15e3,E="https://registry.npmjs.org/-/npm/v1/keys",m=()=>l(T(),"registry-keys"),c=()=>l(m(),"npmjs.json"),L=()=>{const e=c();if(d(e))try{const t=b(e),r=Date.now()-t.createdAt>t.ttlMs;return{entry:t,expired:r}}catch{f(e,{force:!0});return}},M=(e,t)=>{j(m());const r={createdAt:Date.now(),keys:e,ttlMs:t};k(c(),JSON.stringify(r),"utf8")},F=async(e={})=>{const t=e.ttlMs??C,r=e.keysUrl??process.env.VIS_NPM_KEYS_URL??E,s=L();if(s!==void 0&&!s.expired&&e.forceRefresh!==!0)return{fromCache:!0,keys:s.entry.keys};const n=new AbortController,h=setTimeout(()=>{n.abort()},A),i=()=>{n.abort()};e.signal?.addEventListener("abort",i,{once:!0});try{const a=await fetch(r,{headers:{Accept:"application/json"},signal:n.signal});if(!a.ok)return s!==void 0?{fromCache:!0,keys:s.entry.keys,stale:!0}:void 0;const u=await a.json(),y=Array.isArray(u.keys)?u.keys:[];return M(y,t),{fromCache:!1,keys:y}}catch{return s!==void 0?{fromCache:!0,keys:s.entry.keys,stale:!0}:void 0}finally{clearTimeout(h),e.signal?.removeEventListener("abort",i)}},P=()=>{const e=c();return d(e)?(f(e,{force:!0}),!0):!1};export{P as c,F as f};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as R}from"./index-BjdW45xX.js";import{k as A}from"./formatBytes-
|
|
1
|
+
import{i as R}from"./index-BjdW45xX.js";import{k as A}from"./formatBytes-_HvjOy8a-B_qQr4Hw.js";import{d as M,p as k}from"./prompt-DMzaQEVa.js";import{h as S,M as T,r as E,a as P,b as C,c as x,d as O,e as V,f as F}from"./s1ngularity-CO5GkkqX.js";import{D as h,m as g,r as L}from"./provenance-L1M2FPy_.js";import{g as y}from"./packument-zb18Jnlw.js";import{c as N,p as w}from"../packem_chunks/cli-main.js";import{r as _}from"./signatures-DIqFUOfs.js";import{s as I}from"./index-B4AjSxHU.js";import{p as U}from"./utils-DQFHJn72.js";const j=15,B=e=>{const a=(e.TERM??"").toLowerCase();return a!=="dumb"&&a!=="unknown"&&a!==""},W=async(e,a,t,r)=>new Promise(d=>{if(r?.aborted){d(!1);return}const o=B(t)&&a.isTTY!==!1;let s=e;const c=()=>{o?a.write(`\rContinuing in ${String(s)}s... press Ctrl-C to abort. `):s===e&&a.write(`Warnings present; proceeding in ${String(e)}s.
|
|
2
2
|
`)};c();const u=setInterval(()=>{if(s-=1,s<=0){clearInterval(u),r?.removeEventListener("abort",i),o&&a.write(`\rContinuing now.
|
|
3
3
|
`),d(!0);return}c()},1e3),i=()=>{clearInterval(u),o&&a.write(`\rAborted.
|
|
4
4
|
`),d(!1)};r?.addEventListener("abort",i,{once:!0})}),Y=async(e,a={})=>{if(e.length===0)return{proceed:!0};const t=a.env??process.env,r=a.isTty??!!process.stdin.isTTY,d=a.isCi??R,o=a.strict??!1,s=a.readline??M,c=a.output??{isTTY:!!process.stdout.isTTY,write:p=>process.stdout.write(p)},u=A(t.VIS_DISABLE_AUTO_CONTINUE),i=Number.parseInt(t.VIS_AUTO_CONTINUE_SECONDS??"",10),l=a.countdownSeconds??(Number.isFinite(i)&&i>0?i:j);return e.some(p=>p.severity==="error")?o?{proceed:!1,reason:"errors-present"}:d?{proceed:!1,reason:"errors-present"}:r?await k("Proceed despite errors? [y/N] ",s)?{proceed:!0}:{proceed:!1,reason:"user-aborted"}:{proceed:!1,reason:"non-tty"}:o?{proceed:!1,reason:"ci-strict"}:r?u?await k("Proceed despite warnings? [y/N] ",s)?{proceed:!0}:{proceed:!1,reason:"user-aborted"}:await W(l,c,t,a.signal)?{proceed:!0}:{proceed:!1,reason:"user-aborted"}:{proceed:!0}},Ne=async(e,a={})=>{if(e.isEmpty())return!0;const t=e.all(),r=a.output??{isTTY:!!process.stdout.isTTY,write:o=>process.stdout.write(o)};for(const o of S(t))r.write(`${o}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as d
|
|
1
|
+
import{e as d,m as p,b as m}from"./index-BzhrR_iC.js";import{y as k}from"./isAccessibleSync-DYKTrrvc-C-_5cgwu.js";const b={id:"bun",label:"Bun",lockfiles:["bun.lock","bun.lockb"]},E={id:"node",label:"Node.js",lockfiles:["pnpm-lock.yaml","yarn.lock","package-lock.json","npm-shrinkwrap.json"]},f=["bun","node"],g=o=>f.includes(o),l={bun:b,node:E},a=f,I=a.flatMap(o=>l[o].lockfiles.map(n=>[n,o])),c=(o,n)=>{if(g(o))return o;throw new Error(`${n} requested unknown runtime "${o}". Supported: ${a.join(", ")}.`)},R=o=>{let n=o;for(;;){for(const[t,e]of I)if(k(d(n,t)))return e;const r=p(n);if(r===n||m(n).root===n)return;n=r}},M=(o,n={})=>{const r=n.env??process.env,t=(i,u)=>({adapter:l[i],runtime:i,source:u});if(n.flag!==void 0&&n.flag!=="")return t(c(n.flag,"--runtime"),"flag");const e=r.VIS_RUNTIME;if(e!==void 0&&e!=="")return t(c(e,"VIS_RUNTIME"),"env");if(n.config!==void 0)return t(c(n.config,"config runtime:"),"config");const s=R(o);return s!==void 0?t(s,"lockfile"):t("node","default")};export{M as r};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire as O}from"node:module";import{e as i
|
|
1
|
+
import{createRequire as O}from"node:module";import{e as i,m as p}from"./index-BzhrR_iC.js";import{p as E}from"./augment-B9kSZuvW.js";let h;const y=s=>(h??=O(import.meta.url))(s),c=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,d=s=>{if(typeof c<"u"&&c.versions&&c.versions.node){const[e,r]=c.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return c.getBuiltinModule(s)}return y(s)},{spawnSync:u}=d("node:child_process"),{existsSync:l}=d("node:fs"),b=s=>{let e=s;for(;;){const r=i(e,".pnp.cjs");if(l(r)){const o=i(e,".pnp.loader.mjs");return{esmLoader:l(o)?o:void 0,pnpCjs:r}}const t=p(e);if(t===e)return;e=t}},x=s=>{const e=b(s);if(e===void 0)return[];const r=["--require",e.pnpCjs];return e.esmLoader!==void 0&&r.push("--import",e.esmLoader),r},I=[{flag:"--enable-source-maps",key:"sourcemaps",min:[22,0]},{flag:"--experimental-sqlite",key:"sqlite",min:[22,5]},{flag:"--experimental-webstorage",key:"webstorage",min:[22,4]},{flag:"--experimental-eventsource",key:"eventsource",min:[22,3]},{flag:"--experimental-websocket",key:"websocket",max:[21,999],min:[20,10]},{flag:"--experimental-vm-modules",key:"vm-modules",min:[22,0]}],P=[22,4],j=s=>{const[e,r]=s.split(".").map(t=>Number.parseInt(t,10));return[e??0,r??0]},f=(s,e)=>s[0]>e[0]||s[0]===e[0]&&s[1]>=e[1],T=(s,e)=>s[0]<e[0]||s[0]===e[0]&&s[1]<=e[1],L=(s,e)=>f(s,e.min)&&(e.max===void 0||T(s,e.max)),A=s=>{const e=s.trim().toLowerCase();return e===""||e==="all"||e==="1"||e==="true"},m=(s,e)=>A(s)||s.split(",").some(r=>r.trim().toLowerCase()===e),g=(s,e,r)=>{const t=j(e),o=[];for(const n of I)m(s,n.key)&&L(t,n)&&o.push(n.flag);return m(s,"localstorage")&&f(t,P)&&(o.includes("--experimental-webstorage")||o.push("--experimental-webstorage"),o.push(`--localstorage-file=${r}`)),o},v="VIS_X_REEXEC",C=(s,e,r)=>{const t={...process.env},o=i(p(process.argv[1]),"runtime","preload.js");if(t.NODE_OPTIONS){const a=t.NODE_OPTIONS.replace(`--import ${JSON.stringify(o)}`,"").replace(`--import ${o}`,"").replaceAll(/\s+/gu," ").trim();a===""?delete t.NODE_OPTIONS:t.NODE_OPTIONS=a}delete t.VIS_AUGMENT_SUBPROCESS,delete t.VIS_UNFLAG,delete t.VIS_POLYFILL;const n=u(process.execPath,[s,...e],{cwd:r,env:t,stdio:"inherit"});if(n.error)throw n.error;return n.status??(n.signal===null?0:1)},_=s=>{let e=s;for(;;){if(l(i(e,"package.json"))||l(i(e,".pnp.cjs")))return i(e,".vis","localstorage");const r=p(e);if(r===e)return i(s,".vis","localstorage");e=r}},R=s=>{const e=process.env.VIS_UNFLAG;return[...e===void 0?[]:g(e,process.versions.node,_(s)),...x(s)]},U=(s,e,r)=>{const t=u("bun",["run",s,...e],{cwd:r,stdio:"inherit"});if(t.error)throw t.error.code==="ENOENT"?new Error("Runtime is set to bun but the `bun` binary is not on PATH. Install it from https://bun.sh."):t.error;return t.status??(t.signal===null?0:1)},k=(s,e,r,t)=>{const o=u(process.execPath,[...s,process.argv[1],"x",e,...r],{cwd:t,env:{...process.env,[v]:"1"},stdio:"inherit"});return o.status??(o.signal===null?0:1)},w=async(s,e,r)=>{if(process.env[v]===void 0){const n=R(r);if(n.length>0)return k(n,s,e,r)}if(process.env.VIS_AUGMENT_SUBPROCESS!==void 0){const n=i(p(process.argv[1]),"runtime","preload.js"),a=process.env.VIS_UNFLAG,N=a===void 0?[]:g(a,process.versions.node,_(r)),S=[process.env.NODE_OPTIONS??"",...N,`--import ${JSON.stringify(n)}`].filter(Boolean);process.env.NODE_OPTIONS=S.join(" ").trim()}const{importTs:t}=await import("../packem_chunks/ts-loader.js").then(n=>n.t);await E(r);const o=process.argv;process.argv=[process.execPath,s,...e];try{await t(s)}finally{process.argv=o}return typeof process.exitCode=="number"?process.exitCode:0},B=async(s,e,r,t,o={})=>o.node?C(s,e,t):r==="bun"?U(s,e,t):w(s,e,t);export{B as r};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as h,z as M}from"./index-BzhrR_iC.js";import{whichBin as b}from"#native";import{d as P}from"./env-consistency-B4rU4MQb.js";import{p as N}from"./readJsonSync-CbryXYxN-EWl7_7KX.js";import{y as x}from"./isAccessibleSync-DYKTrrvc-C-_5cgwu.js";const y=o=>{for(const n of[".nvmrc",".node-version"]){const i=h(o,n);if(x(i))try{return M(i).trim().replace(/^v/,"")}catch{}}},f=(o,n)=>{const i=o.split(/[.\-+]/).map(s=>Number.parseInt(s,10)||0),t=n.split(/[.\-+]/).map(s=>Number.parseInt(s,10)||0),e=Math.max(i.length,t.length);for(let s=0;s<e;s++){const r=i[s]??0,c=t[s]??0;if(r!==c)return r-c}return 0},k=(o,n)=>{const i=n.trim();if(i===""||i==="*")return!0;const t=i.split(/\s+/).filter(Boolean);for(const e of t)if(e.startsWith(">=")){if(f(o,e.slice(2).trim())<0)return!1}else if(e.startsWith("<=")){if(f(o,e.slice(2).trim())>0)return!1}else if(e.startsWith(">")){if(f(o,e.slice(1).trim())<=0)return!1}else if(e.startsWith("<")){if(f(o,e.slice(1).trim())>=0)return!1}else if(/^\d/.test(e)){const s=o.split("."),r=e.split(".");for(const[c,g]of r.entries())if(g!==s[c])return!1}return!0},v=(o,n,i,t)=>{const s=P(o).filter(u=>u.name===n&&typeof u.version=="string");if(s.some(u=>k(i,u.version)))return;const r=s.at(-1);if(!r?.version)return;const c=r.onFail??"warn";if(c==="ignore")return;const g=c==="download"?" vis does not install runtimes; install it yourself.":"";return{actual:i,expected:r.version,kind:t,message:`devEngines.${t==="node"?"runtime":"packageManager"} requires ${r.name??n}@${r.version}, but the current ${n} is ${i}.${g}`,severity:c==="error"?"error":"warning"}},I=o=>{const n=[],i=h(o,"package.json");let t;try{t=N(i)}catch{return n}const e=process.versions.node,{devEngines:s}=t,[r="",c=""]=(process.env.npm_config_user_agent??"").split(" ")[0]?.split("/")??[];if(t.engines?.node){const a=t.engines.node;k(e,a)||n.push({actual:e,expected:a,kind:"node",message:`package.json engines.node requires ${a}, but the current Node.js is ${e}.`,severity:"error"})}const g=v(s?.runtime,"node",e,"node");g&&n.push(g);const u=y(o);if(u){const[a,p]=u.split("."),[m,l]=e.split(".");(a!==m||p!==void 0&&p!==l)&&n.push({actual:e,expected:u,kind:"node",message:`.nvmrc pins Node ${u} but the current Node.js is ${e}. Run \`nvm use\` or switch runtimes.`,severity:"warning"})}if(t.packageManager){const[a,p]=t.packageManager.split("@"),m=r?`${r}/${c}`:"",l=r,d=c,$=a==="aube"&&b("aube")!==null;l&&a&&l!==a?n.push({actual:l,expected:a,kind:"packageManager",message:`package.json packageManager pins ${t.packageManager} but the current invocation is ${m}. Install the correct package manager.`,severity:$?"warning":"error"}):d&&p&&d!==p&&n.push({actual:d,expected:p,kind:"packageManager",message:`package.json packageManager pins ${a}@${p} but the current invocation uses ${a}@${d}.`,severity:"warning"})}if(!t.packageManager&&r&&c){const a=v(s?.packageManager,r,c,"packageManager");a&&n.push(a)}return n};export{I as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire as X}from"node:module";import{X as j,b as T}from"./index.server-D8BLnYZO.js";import{e as A}from"./index-BdMIfGVZ.js";import{g as L}from"./formatBytes-BHAzNIrn-DRcKvqnb.js";import{D as m,m as y}from"./provenance-DF-ypZj3.js";import{g as E}from"./packument-C9nRiBJf.js";import{c as w}from"../packem_chunks/cli-main.js";import{y as U}from"./isAccessibleSync-DYKTrrvc-BwaMhQs0.js";import{p as O}from"./readJsonSync-CbryXYxN-Bm5i10UW.js";import{h as C}from"./writeFileSync-DJoHk3Ks-Dhem3Uof.js";import{s as p}from"./index-B4AjSxHU.js";let Y;const Q=r=>(Y??=X(import.meta.url))(r),b=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,$=r=>{if(typeof b<"u"&&b.versions&&b.versions.node){const[e,t]=b.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return b.getBuiltinModule(r)}return Q(r)},{rmSync:D,writeFileSync:P}=$("node:fs"),{createHash:Z}=$("node:crypto"),{Resolver:ee}=$("node:dns/promises");class rr{entries=[];add(e){this.entries.push(e)}addMany(e){for(const t of e)this.entries.push(t)}all(){return this.entries}errors(){return this.entries.filter(e=>e.severity==="error")}warnings(){return this.entries.filter(e=>e.severity==="warning")}hasErrors(){return this.entries.some(e=>e.severity==="error")}hasWarnings(){return this.entries.some(e=>e.severity==="warning")}isEmpty(){return this.entries.length===0}size(){return this.entries.length}}const tr=r=>{if(r.length===0)return[];const e=[],t=r.filter(s=>s.severity==="error"),n=r.filter(s=>s.severity==="warning");if(t.length>0){e.push(j(`${String(t.length)} error${t.length===1?"":"s"}:`));for(const s of t)e.push(` ${j("✗")} [${s.marshall}] ${s.packageName}: ${s.message}`),s.suggestedAction!==void 0&&e.push(` ${T("→")} ${s.suggestedAction}`)}if(n.length>0){t.length>0&&e.push(""),e.push(T(`${String(n.length)} warning${n.length===1?"":"s"}:`));for(const s of n)e.push(` ${T("⚠")} [${s.marshall}] ${s.packageName}: ${s.message}`),s.suggestedAction!==void 0&&e.push(` ${T("→")} ${s.suggestedAction}`)}return e},nr=r=>({errors:r.filter(e=>e.severity==="error"),findings:[...r],summary:{errorCount:r.filter(e=>e.severity==="error").length,warningCount:r.filter(e=>e.severity==="warning").length},warnings:r.filter(e=>e.severity==="warning")}),re=1440*60*1e3,te=15e3,ne="https://api.github.com/repos",W=()=>A(L(),"archived-repo"),q=(r,e)=>A(W(),`${encodeURIComponent(r)}__${encodeURIComponent(e)}.json`),se=(r,e)=>{const t=q(r,e);if(U(t))try{const n=O(t);if(Date.now()-n.createdAt>n.ttlMs){D(t,{force:!0});return}return n}catch{D(t,{force:!0});return}},B=(r,e,t,n)=>{C(W());const s={createdAt:Date.now(),ttlMs:n,...t};P(q(r,e),JSON.stringify(s),"utf8")},oe=r=>{if(typeof r!="string"||r.trim()==="")return;const e=r.trim().replace(/^git\+/,""),t=/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?\/?$/i.exec(e);if(t)return{owner:t[1],repo:t[2]};const n=/^ssh:\/\/git@github\.com\/([^/]+)\/(.+?)(?:\.git)?\/?$/i.exec(e);if(n)return{owner:n[1],repo:n[2]};const s=/^https?:\/\/(?:www\.)?github\.com\/([^/]+)\/([^/?#]+?)(?:\.git)?\/?$/i.exec(e);if(s)return{owner:s[1],repo:s[2]}},ie=async(r,e,t,n)=>{const s=`${ne}/${encodeURIComponent(r)}/${encodeURIComponent(e)}`,l=new AbortController,o=setTimeout(()=>{l.abort()},te),i=()=>{l.abort()};n?.addEventListener("abort",i,{once:!0});const a={Accept:"application/vnd.github+json","User-Agent":"visulima-vis-marshall"};t!==void 0&&t!==""&&(a.Authorization=`Bearer ${t}`);try{const c=await fetch(s,{headers:a,signal:l.signal});if(c.status===404)return{kind:"missing"};if(!c.ok)return{kind:"transient-error"};const d=await c.json(),u=d.archived===!0,f=typeof d.archived_at=="string"?d.archived_at:void 0;return{archived:u,archivedAt:f,kind:"ok"}}catch{return{kind:"transient-error"}}finally{clearTimeout(o),n?.removeEventListener("abort",i)}},ae=(r,e)=>e!==void 0&&r.includes(e)?e:r.at(-1),sr=async(r,e={})=>{if(w("archivedRepo"))return[];const t=new Set(e.allowlist),n=e.cacheTtlMs??re,s=e.githubToken??process.env.GITHUB_TOKEN,l=e.concurrency??m,o=new Map,i=async(c,d)=>{const u=`${c}/${d}`;let f=o.get(u);return f===void 0&&(f=(async()=>{const h=se(c,d);if(h!==void 0)return h.missing===!0?{archived:!1,kind:"missing"}:{archived:h.archived,archivedAt:h.archivedAt,kind:"ok"};const v=await ie(c,d,s,e.signal);return v.kind==="missing"?B(c,d,{archived:!1,missing:!0},n):v.kind==="ok"&&B(c,d,{archived:v.archived===!0,archivedAt:v.archivedAt},n),v})(),o.set(u,f)),f};return(await y(r,l,async({name:c,version:d})=>{if(t.has(c))return;const u=await E(c,{workspaceRoot:e.workspaceRoot});if(u===void 0)return;const f=u.versions[d]??u.versions[ae(Object.keys(u.versions),u["dist-tags"]?.latest)??""];if(f===void 0)return;const h=oe(f.repository?.url);if(h===void 0)return;const v=await i(h.owner,h.repo);if(v.kind!=="transient-error"){if(v.kind==="missing")return{kind:"missing-repo",owner:h.owner,packageName:c,repo:h.repo};if(v.archived===!0)return{...v.archivedAt===void 0?{}:{archivedAt:v.archivedAt},kind:"archived",owner:h.owner,packageName:c,repo:h.repo}}})).filter(c=>c!==void 0)},ce={dormantErrorDays:274,dormantWarnDays:183,newPublisherWindowDays:21,recentVersionErrorDays:7,recentVersionWarnDays:30},de=1440*60*1e3,F=(r,e)=>(r-e)/de,_=r=>{if(r!==void 0)return r.email??r.name},ue=(r,e,t,n,s)=>{const l=r.time?.[t];if(l===void 0)return;const o=new Date(l).getTime();if(!Number.isFinite(o))return;const i=F(n,o);if(i<s.recentVersionErrorDays)return{kind:"recent-version",message:`published ${i.toFixed(1)} days ago (error threshold: ${String(s.recentVersionErrorDays)})`,packageName:e,severity:"error",version:t};if(i<s.recentVersionWarnDays)return{kind:"recent-version",message:`published ${i.toFixed(1)} days ago (warn threshold: ${String(s.recentVersionWarnDays)})`,packageName:e,severity:"warning",version:t}},le=(r,e,t,n,s)=>{const l=r.versions[t],o=_(l?._npmUser);if(o===void 0)return;const a=Object.keys(r.versions).filter(h=>p.valid(h)!==null).filter(h=>p.lt(h,t));if(a.length===0||a.some(h=>_(r.versions[h]?._npmUser)===o))return;const d=r.time?.[a[0]??""];if(d===void 0)return;const u=new Date(d).getTime();if(!Number.isFinite(u))return;const f=F(n,u);if(!(f<=s.newPublisherWindowDays))return{kind:"new-publisher",message:`first publish by ${o} on a ${f.toFixed(0)}-day-old package`,packageName:e,severity:"error",version:t}},fe=(r,e,t,n,s)=>{const l=r.versions[t],o=_(l?._npmUser);if(o===void 0)return;const i=[];for(const[d,u]of Object.entries(r.versions)){if(d===t||_(u._npmUser)!==o)continue;const f=r.time?.[d];if(f===void 0)continue;const h=new Date(f).getTime();Number.isFinite(h)&&i.push(h)}if(i.length===0)return;const a=Math.max(...i),c=F(n,a);if(c>=s.dormantErrorDays)return{kind:"dormant-maintainer",message:`previous release by ${o} was ${c.toFixed(0)} days ago (error threshold: ${String(s.dormantErrorDays)})`,packageName:e,severity:"error",version:t};if(c>=s.dormantWarnDays)return{kind:"dormant-maintainer",message:`previous release by ${o} was ${c.toFixed(0)} days ago (warn threshold: ${String(s.dormantWarnDays)})`,packageName:e,severity:"warning",version:t}},or=async(r,e={})=>{if(w("author"))return[];const t=new Set(e.allowlist),n={...ce,...e.thresholds},s=e.now??(()=>Date.now()),l=e.concurrency??m;return(await y(r,l,async({name:i,version:a})=>{if(t.has(i))return[];const c=await E(i,{cacheTtlMs:e.cacheTtlMs,signal:e.signal,workspaceRoot:e.workspaceRoot});if(c===void 0)return[];const d=s(),u=[],f=ue(c,i,a,d,n);f!==void 0&&u.push(f);const h=le(c,i,a,d,n);h!==void 0&&u.push(h);const v=fe(c,i,a,d,n);return v!==void 0&&u.push(v),u})).flat()},he=1440*60*1e3,ve=15e3,ge=20,pe=1e4,me="https://api.npmjs.org/downloads/point/last-month",G=()=>A(L(),"downloads"),J=r=>A(G(),`${encodeURIComponent(r)}.json`),ye=r=>{const e=J(r);if(U(e))try{const t=O(e);if(Date.now()-t.createdAt>t.ttlMs){D(e,{force:!0});return}return t.downloads}catch{D(e,{force:!0});return}},we=(r,e,t)=>{C(G());const n={createdAt:Date.now(),downloads:e,observedAt:new Date().toISOString(),ttlMs:t};P(J(r),JSON.stringify(n),"utf8")},ke=async(r,e)=>{const t=`${me}/${encodeURIComponent(r)}`,n=new AbortController,s=setTimeout(()=>{n.abort()},ve),l=()=>{n.abort()};e?.addEventListener("abort",l,{once:!0});try{const o=await fetch(t,{signal:n.signal});if(o.status===404)return{kind:"no-data"};if(!o.ok)return{kind:"error"};const i=await o.json();return typeof i.downloads=="number"?{downloads:i.downloads,kind:"ok"}:{kind:"no-data"}}catch{return{kind:"error"}}finally{clearTimeout(s),e?.removeEventListener("abort",l)}},ir=async(r,e={})=>{if(w("downloads"))return[];const t=new Set(e.allowlist),n=e.errorThreshold??ge,s=e.warnThreshold??pe,l=e.cacheTtlMs??he,o=e.concurrency??m;return(await y(r,o,async a=>{if(t.has(a))return;let d=ye(a);if(d===void 0){const u=await ke(a,e.signal);if(u.kind==="no-data"||u.kind==="error")return{downloadsLastMonth:void 0,kind:"no-data",packageName:a,severity:"warning"};d=u.downloads??0,we(a,d,l)}if(d<n)return{downloadsLastMonth:d,kind:"below-error",packageName:a,severity:"error"};if(d<s)return{downloadsLastMonth:d,kind:"below-warning",packageName:a,severity:"warning"}})).filter(a=>a!==void 0)},De=1440*60*1e3,Ae=4e3,Ee=["1.1.1.1","8.8.8.8"],K=()=>A(L(),"expired-domains"),z=r=>{const e=Z("sha256").update(r).digest("hex").slice(0,12);return A(K(),`${e}.json`)},be=r=>{const e=z(r);if(U(e))try{const t=O(e);if(Date.now()-t.createdAt>t.ttlMs){D(e,{force:!0});return}return t}catch{D(e,{force:!0});return}},Re=(r,e,t)=>{C(K());const n={createdAt:Date.now(),outcome:e,ttlMs:t};P(z(r),JSON.stringify(n),"utf8")},Te=r=>{if(typeof r!="string")return;const e=r.lastIndexOf("@");if(e===-1||e===r.length-1)return;const t=r.slice(e+1).trim().toLowerCase();return t===""?void 0:t},_e=(r,e)=>{const t=[];e!==void 0&&t.push(e);for(const n of r??[])t.push(n);return t},Me=async(r,e)=>{let t;try{return await Promise.race([r,new Promise((n,s)=>{t=setTimeout(()=>{s(new Error("ETIMEDOUT"))},e)})])}finally{t!==void 0&&clearTimeout(t)}},Se=r=>{if(r===null||typeof r!="object")return!1;const{code:e}=r;return e==="ENOTFOUND"||e==="ENODATA"||e==="NXDOMAIN"},$e=async(r,e,t)=>{try{const n=await Me(r.resolveNs(e),t);return Array.isArray(n)&&n.length>0?{kind:"ok"}:{kind:"expired"}}catch(n){return Se(n)?{kind:"expired"}:{kind:"transient-error"}}},Pe=(r,e)=>e!==void 0&&r.includes(e)?e:r.at(-1),ar=async(r,e={})=>{if(w("expiredDomains"))return[];const t=new Set(e.allowlist),n=new Set((e.allowDomains??[]).map(f=>f.toLowerCase())),s=e.cacheTtlMs??De,l=e.perDomainTimeoutMs??Ae,o=e.dnsServers??Ee,i=e.concurrency??m,a=e.createResolver===void 0?new ee:e.createResolver();typeof a.setServers=="function"&&a.setServers(o);const c=new Map,d=async f=>{let h=c.get(f);return h===void 0&&(h=(async()=>{const v=be(f);if(v!==void 0)return{kind:v.outcome==="ok"?"ok":"expired"};const g=await $e(a,f,l);return g.kind!=="transient-error"&&Re(f,g.kind,s),g})(),c.set(f,h)),h};return(await y(r,i,async({name:f,version:h})=>{if(t.has(f))return[];const v=await E(f,{workspaceRoot:e.workspaceRoot});if(v===void 0)return[];const g=v.versions[h]??v.versions[Pe(Object.keys(v.versions),v["dist-tags"]?.latest)??""];if(g===void 0)return[];const M=_e(g.maintainers,g._npmUser),N=new Set,S=[];for(const R of M){const k=Te(R.email);if(k===void 0||n.has(k))continue;const I=`${k}:${R.email??""}`;if(N.has(I))continue;N.add(I);const x=await d(k);x.kind==="expired"?S.push({domain:k,kind:"expired",maintainer:R.email??"",packageName:f,severity:"error"}):x.kind==="transient-error"&&S.push({domain:k,kind:"unresolved",maintainer:R.email??"",packageName:f,severity:"warning"})}return S})).flat()},Le=["readme","license","repo"],Ue=["ERROR: No README data found!","# Security holding package"],Oe=r=>{const e=r.trim();return e===""?!0:Ue.some(t=>e.startsWith(t))},Ce=(r,e)=>{if(typeof e.readme=="string")return e.readme;if(typeof r.readme=="string")return r.readme},Fe=(r,e)=>{const t=Ce(r,e);if(t===void 0)return"missing-readme";if(Oe(t))return"placeholder-readme"},Ne=r=>{const{license:e}=r;return e===void 0?"missing-license":typeof e=="string"?e.trim()===""?"missing-license":void 0:typeof e.type=="string"&&e.type.trim()!==""?void 0:"missing-license"},Ie=r=>{const{repository:e}=r;if(e===void 0)return"missing-repo";const t=typeof e.url=="string"?e.url.trim():"";if(t==="")return"missing-repo";let n=t.replace(/^git\+/,"");const s=/^git@([^:]+):(.+?)(?:\.git)?$/.exec(n);return s&&(n=`https://${s[1]}/${s[2]}`),URL.canParse(n)?void 0:"invalid-repo-url"},xe=r=>{const e=r["dist-tags"]?.latest;return e!==void 0&&Object.hasOwn(r.versions,e)?e:Object.keys(r.versions).at(-1)},cr=async(r,e={})=>{if(w("metadata"))return[];const t=new Set(e.allowlist),n=new Set(e.checks??Le),s=e.concurrency??m;return(await y(r,s,async({name:o,version:i})=>{if(t.has(o))return;const a=await E(o,{workspaceRoot:e.workspaceRoot});if(a===void 0)return;const c=a.versions[i]??a.versions[xe(a)??""];if(c===void 0||c.private===!0)return;const d=[];if(n.has("readme")){const u=Fe(a,c);u!==void 0&&d.push(u)}if(n.has("license")){const u=Ne(c);u!==void 0&&d.push(u)}if(n.has("repo")){const u=Ie(c);u!==void 0&&d.push(u)}if(d.length!==0)return{issues:d,packageName:o,version:i}})).filter(o=>o!==void 0)},H=(r,e)=>r===void 0?{}:typeof r=="string"?{[e.startsWith("@")?e.split("/").at(1)??e:e]:r}:{...r},je=(r,e)=>p.valid(e)?Object.keys(r.versions).filter(n=>p.valid(n)!==null&&p.lt(n,e)).sort((n,s)=>p.lt(n,s)?1:-1)[0]:void 0,dr=async(r,e={})=>{if(w("newBin"))return[];const t=new Set(e.allowlist),n=new Set(e.allowBins),s=e.concurrency??m;return(await y(r,s,async({name:o,version:i})=>{if(t.has(o))return;const a=await E(o,{workspaceRoot:e.workspaceRoot});if(a===void 0)return;const c=a.versions[i];if(c===void 0)return;const d=je(a,i);if(d===void 0)return;const u=a.versions[d];if(u===void 0)return;const f=H(c.bin,o),h=H(u.bin,o),v=Object.entries(f).filter(([g])=>!(g in h)).filter(([g])=>!n.has(g)).map(([g,M])=>({command:M,name:g}));if(v.length!==0)return{fromVersion:d,newBins:v,packageName:o,toVersion:i}})).filter(o=>o!==void 0)},Be=["preinstall","install","postinstall"],V=(r,e)=>r.versions[e]?.dist?.attestations?.provenance!==void 0,He=(r,e)=>{if(p.valid(e)!==null)return Object.keys(r.versions).filter(t=>p.valid(t)!==null&&p.prerelease(t)===null&&p.lt(t,e)).sort((t,n)=>p.lt(t,n)?1:-1)[0]},Ve=(r,e)=>{const t=r??{},n=e??{},s=[];for(const l of Be){const o=t[l];if(o===void 0||o==="")continue;const i=n[l];i===void 0||i===""?s.push({command:o,hook:l,kind:"introduced"}):i!==o&&s.push({command:o,hook:l,kind:"changed"})}return s},ur=async(r,e={})=>{if(w("s1ngularity"))return[];const t=new Set(e.allowlist),n=e.concurrency??m;return(await y(r,n,async({name:l,version:o})=>{if(t.has(l))return;const i=await E(l,{workspaceRoot:e.workspaceRoot});if(i?.versions[o]===void 0)return;const a=He(i,o);if(a===void 0||!V(i,a)||V(i,o))return;const c=Ve(i.versions[o]?.scripts,i.versions[a]?.scripts);if(c.length!==0)return{hookChanges:c,packageName:l,priorVersion:a,trustSignal:"provenance-dropped",version:o}})).filter(l=>l!==void 0)};export{rr as M,ur as a,dr as b,cr as c,ir as d,ar as e,sr as f,nr as g,tr as h,or as r};
|
|
1
|
+
import{createRequire as X}from"node:module";import{X as j,b as T}from"./index.server-Ca_EEVfw.js";import{e as A}from"./index-BzhrR_iC.js";import{g as L}from"./formatBytes-_HvjOy8a-B_qQr4Hw.js";import{D as m,m as y}from"./provenance-L1M2FPy_.js";import{g as E}from"./packument-zb18Jnlw.js";import{c as w}from"../packem_chunks/cli-main.js";import{y as U}from"./isAccessibleSync-DYKTrrvc-C-_5cgwu.js";import{p as O}from"./readJsonSync-CbryXYxN-EWl7_7KX.js";import{h as C}from"./writeFileSync-DJoHk3Ks-BPRoepNw.js";import{s as p}from"./index-B4AjSxHU.js";let Y;const Q=r=>(Y??=X(import.meta.url))(r),b=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,$=r=>{if(typeof b<"u"&&b.versions&&b.versions.node){const[e,t]=b.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return b.getBuiltinModule(r)}return Q(r)},{rmSync:D,writeFileSync:P}=$("node:fs"),{createHash:Z}=$("node:crypto"),{Resolver:ee}=$("node:dns/promises");class rr{entries=[];add(e){this.entries.push(e)}addMany(e){for(const t of e)this.entries.push(t)}all(){return this.entries}errors(){return this.entries.filter(e=>e.severity==="error")}warnings(){return this.entries.filter(e=>e.severity==="warning")}hasErrors(){return this.entries.some(e=>e.severity==="error")}hasWarnings(){return this.entries.some(e=>e.severity==="warning")}isEmpty(){return this.entries.length===0}size(){return this.entries.length}}const tr=r=>{if(r.length===0)return[];const e=[],t=r.filter(s=>s.severity==="error"),n=r.filter(s=>s.severity==="warning");if(t.length>0){e.push(j(`${String(t.length)} error${t.length===1?"":"s"}:`));for(const s of t)e.push(` ${j("✗")} [${s.marshall}] ${s.packageName}: ${s.message}`),s.suggestedAction!==void 0&&e.push(` ${T("→")} ${s.suggestedAction}`)}if(n.length>0){t.length>0&&e.push(""),e.push(T(`${String(n.length)} warning${n.length===1?"":"s"}:`));for(const s of n)e.push(` ${T("⚠")} [${s.marshall}] ${s.packageName}: ${s.message}`),s.suggestedAction!==void 0&&e.push(` ${T("→")} ${s.suggestedAction}`)}return e},nr=r=>({errors:r.filter(e=>e.severity==="error"),findings:[...r],summary:{errorCount:r.filter(e=>e.severity==="error").length,warningCount:r.filter(e=>e.severity==="warning").length},warnings:r.filter(e=>e.severity==="warning")}),re=1440*60*1e3,te=15e3,ne="https://api.github.com/repos",W=()=>A(L(),"archived-repo"),q=(r,e)=>A(W(),`${encodeURIComponent(r)}__${encodeURIComponent(e)}.json`),se=(r,e)=>{const t=q(r,e);if(U(t))try{const n=O(t);if(Date.now()-n.createdAt>n.ttlMs){D(t,{force:!0});return}return n}catch{D(t,{force:!0});return}},B=(r,e,t,n)=>{C(W());const s={createdAt:Date.now(),ttlMs:n,...t};P(q(r,e),JSON.stringify(s),"utf8")},oe=r=>{if(typeof r!="string"||r.trim()==="")return;const e=r.trim().replace(/^git\+/,""),t=/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?\/?$/i.exec(e);if(t)return{owner:t[1],repo:t[2]};const n=/^ssh:\/\/git@github\.com\/([^/]+)\/(.+?)(?:\.git)?\/?$/i.exec(e);if(n)return{owner:n[1],repo:n[2]};const s=/^https?:\/\/(?:www\.)?github\.com\/([^/]+)\/([^/?#]+?)(?:\.git)?\/?$/i.exec(e);if(s)return{owner:s[1],repo:s[2]}},ie=async(r,e,t,n)=>{const s=`${ne}/${encodeURIComponent(r)}/${encodeURIComponent(e)}`,l=new AbortController,o=setTimeout(()=>{l.abort()},te),i=()=>{l.abort()};n?.addEventListener("abort",i,{once:!0});const a={Accept:"application/vnd.github+json","User-Agent":"visulima-vis-marshall"};t!==void 0&&t!==""&&(a.Authorization=`Bearer ${t}`);try{const c=await fetch(s,{headers:a,signal:l.signal});if(c.status===404)return{kind:"missing"};if(!c.ok)return{kind:"transient-error"};const d=await c.json(),u=d.archived===!0,f=typeof d.archived_at=="string"?d.archived_at:void 0;return{archived:u,archivedAt:f,kind:"ok"}}catch{return{kind:"transient-error"}}finally{clearTimeout(o),n?.removeEventListener("abort",i)}},ae=(r,e)=>e!==void 0&&r.includes(e)?e:r.at(-1),sr=async(r,e={})=>{if(w("archivedRepo"))return[];const t=new Set(e.allowlist),n=e.cacheTtlMs??re,s=e.githubToken??process.env.GITHUB_TOKEN,l=e.concurrency??m,o=new Map,i=async(c,d)=>{const u=`${c}/${d}`;let f=o.get(u);return f===void 0&&(f=(async()=>{const h=se(c,d);if(h!==void 0)return h.missing===!0?{archived:!1,kind:"missing"}:{archived:h.archived,archivedAt:h.archivedAt,kind:"ok"};const v=await ie(c,d,s,e.signal);return v.kind==="missing"?B(c,d,{archived:!1,missing:!0},n):v.kind==="ok"&&B(c,d,{archived:v.archived===!0,archivedAt:v.archivedAt},n),v})(),o.set(u,f)),f};return(await y(r,l,async({name:c,version:d})=>{if(t.has(c))return;const u=await E(c,{workspaceRoot:e.workspaceRoot});if(u===void 0)return;const f=u.versions[d]??u.versions[ae(Object.keys(u.versions),u["dist-tags"]?.latest)??""];if(f===void 0)return;const h=oe(f.repository?.url);if(h===void 0)return;const v=await i(h.owner,h.repo);if(v.kind!=="transient-error"){if(v.kind==="missing")return{kind:"missing-repo",owner:h.owner,packageName:c,repo:h.repo};if(v.archived===!0)return{...v.archivedAt===void 0?{}:{archivedAt:v.archivedAt},kind:"archived",owner:h.owner,packageName:c,repo:h.repo}}})).filter(c=>c!==void 0)},ce={dormantErrorDays:274,dormantWarnDays:183,newPublisherWindowDays:21,recentVersionErrorDays:7,recentVersionWarnDays:30},de=1440*60*1e3,F=(r,e)=>(r-e)/de,_=r=>{if(r!==void 0)return r.email??r.name},ue=(r,e,t,n,s)=>{const l=r.time?.[t];if(l===void 0)return;const o=new Date(l).getTime();if(!Number.isFinite(o))return;const i=F(n,o);if(i<s.recentVersionErrorDays)return{kind:"recent-version",message:`published ${i.toFixed(1)} days ago (error threshold: ${String(s.recentVersionErrorDays)})`,packageName:e,severity:"error",version:t};if(i<s.recentVersionWarnDays)return{kind:"recent-version",message:`published ${i.toFixed(1)} days ago (warn threshold: ${String(s.recentVersionWarnDays)})`,packageName:e,severity:"warning",version:t}},le=(r,e,t,n,s)=>{const l=r.versions[t],o=_(l?._npmUser);if(o===void 0)return;const a=Object.keys(r.versions).filter(h=>p.valid(h)!==null).filter(h=>p.lt(h,t));if(a.length===0||a.some(h=>_(r.versions[h]?._npmUser)===o))return;const d=r.time?.[a[0]??""];if(d===void 0)return;const u=new Date(d).getTime();if(!Number.isFinite(u))return;const f=F(n,u);if(!(f<=s.newPublisherWindowDays))return{kind:"new-publisher",message:`first publish by ${o} on a ${f.toFixed(0)}-day-old package`,packageName:e,severity:"error",version:t}},fe=(r,e,t,n,s)=>{const l=r.versions[t],o=_(l?._npmUser);if(o===void 0)return;const i=[];for(const[d,u]of Object.entries(r.versions)){if(d===t||_(u._npmUser)!==o)continue;const f=r.time?.[d];if(f===void 0)continue;const h=new Date(f).getTime();Number.isFinite(h)&&i.push(h)}if(i.length===0)return;const a=Math.max(...i),c=F(n,a);if(c>=s.dormantErrorDays)return{kind:"dormant-maintainer",message:`previous release by ${o} was ${c.toFixed(0)} days ago (error threshold: ${String(s.dormantErrorDays)})`,packageName:e,severity:"error",version:t};if(c>=s.dormantWarnDays)return{kind:"dormant-maintainer",message:`previous release by ${o} was ${c.toFixed(0)} days ago (warn threshold: ${String(s.dormantWarnDays)})`,packageName:e,severity:"warning",version:t}},or=async(r,e={})=>{if(w("author"))return[];const t=new Set(e.allowlist),n={...ce,...e.thresholds},s=e.now??(()=>Date.now()),l=e.concurrency??m;return(await y(r,l,async({name:i,version:a})=>{if(t.has(i))return[];const c=await E(i,{cacheTtlMs:e.cacheTtlMs,signal:e.signal,workspaceRoot:e.workspaceRoot});if(c===void 0)return[];const d=s(),u=[],f=ue(c,i,a,d,n);f!==void 0&&u.push(f);const h=le(c,i,a,d,n);h!==void 0&&u.push(h);const v=fe(c,i,a,d,n);return v!==void 0&&u.push(v),u})).flat()},he=1440*60*1e3,ve=15e3,ge=20,pe=1e4,me="https://api.npmjs.org/downloads/point/last-month",G=()=>A(L(),"downloads"),J=r=>A(G(),`${encodeURIComponent(r)}.json`),ye=r=>{const e=J(r);if(U(e))try{const t=O(e);if(Date.now()-t.createdAt>t.ttlMs){D(e,{force:!0});return}return t.downloads}catch{D(e,{force:!0});return}},we=(r,e,t)=>{C(G());const n={createdAt:Date.now(),downloads:e,observedAt:new Date().toISOString(),ttlMs:t};P(J(r),JSON.stringify(n),"utf8")},ke=async(r,e)=>{const t=`${me}/${encodeURIComponent(r)}`,n=new AbortController,s=setTimeout(()=>{n.abort()},ve),l=()=>{n.abort()};e?.addEventListener("abort",l,{once:!0});try{const o=await fetch(t,{signal:n.signal});if(o.status===404)return{kind:"no-data"};if(!o.ok)return{kind:"error"};const i=await o.json();return typeof i.downloads=="number"?{downloads:i.downloads,kind:"ok"}:{kind:"no-data"}}catch{return{kind:"error"}}finally{clearTimeout(s),e?.removeEventListener("abort",l)}},ir=async(r,e={})=>{if(w("downloads"))return[];const t=new Set(e.allowlist),n=e.errorThreshold??ge,s=e.warnThreshold??pe,l=e.cacheTtlMs??he,o=e.concurrency??m;return(await y(r,o,async a=>{if(t.has(a))return;let d=ye(a);if(d===void 0){const u=await ke(a,e.signal);if(u.kind==="no-data"||u.kind==="error")return{downloadsLastMonth:void 0,kind:"no-data",packageName:a,severity:"warning"};d=u.downloads??0,we(a,d,l)}if(d<n)return{downloadsLastMonth:d,kind:"below-error",packageName:a,severity:"error"};if(d<s)return{downloadsLastMonth:d,kind:"below-warning",packageName:a,severity:"warning"}})).filter(a=>a!==void 0)},De=1440*60*1e3,Ae=4e3,Ee=["1.1.1.1","8.8.8.8"],K=()=>A(L(),"expired-domains"),z=r=>{const e=Z("sha256").update(r).digest("hex").slice(0,12);return A(K(),`${e}.json`)},be=r=>{const e=z(r);if(U(e))try{const t=O(e);if(Date.now()-t.createdAt>t.ttlMs){D(e,{force:!0});return}return t}catch{D(e,{force:!0});return}},Re=(r,e,t)=>{C(K());const n={createdAt:Date.now(),outcome:e,ttlMs:t};P(z(r),JSON.stringify(n),"utf8")},Te=r=>{if(typeof r!="string")return;const e=r.lastIndexOf("@");if(e===-1||e===r.length-1)return;const t=r.slice(e+1).trim().toLowerCase();return t===""?void 0:t},_e=(r,e)=>{const t=[];e!==void 0&&t.push(e);for(const n of r??[])t.push(n);return t},Me=async(r,e)=>{let t;try{return await Promise.race([r,new Promise((n,s)=>{t=setTimeout(()=>{s(new Error("ETIMEDOUT"))},e)})])}finally{t!==void 0&&clearTimeout(t)}},Se=r=>{if(r===null||typeof r!="object")return!1;const{code:e}=r;return e==="ENOTFOUND"||e==="ENODATA"||e==="NXDOMAIN"},$e=async(r,e,t)=>{try{const n=await Me(r.resolveNs(e),t);return Array.isArray(n)&&n.length>0?{kind:"ok"}:{kind:"expired"}}catch(n){return Se(n)?{kind:"expired"}:{kind:"transient-error"}}},Pe=(r,e)=>e!==void 0&&r.includes(e)?e:r.at(-1),ar=async(r,e={})=>{if(w("expiredDomains"))return[];const t=new Set(e.allowlist),n=new Set((e.allowDomains??[]).map(f=>f.toLowerCase())),s=e.cacheTtlMs??De,l=e.perDomainTimeoutMs??Ae,o=e.dnsServers??Ee,i=e.concurrency??m,a=e.createResolver===void 0?new ee:e.createResolver();typeof a.setServers=="function"&&a.setServers(o);const c=new Map,d=async f=>{let h=c.get(f);return h===void 0&&(h=(async()=>{const v=be(f);if(v!==void 0)return{kind:v.outcome==="ok"?"ok":"expired"};const g=await $e(a,f,l);return g.kind!=="transient-error"&&Re(f,g.kind,s),g})(),c.set(f,h)),h};return(await y(r,i,async({name:f,version:h})=>{if(t.has(f))return[];const v=await E(f,{workspaceRoot:e.workspaceRoot});if(v===void 0)return[];const g=v.versions[h]??v.versions[Pe(Object.keys(v.versions),v["dist-tags"]?.latest)??""];if(g===void 0)return[];const M=_e(g.maintainers,g._npmUser),N=new Set,S=[];for(const R of M){const k=Te(R.email);if(k===void 0||n.has(k))continue;const I=`${k}:${R.email??""}`;if(N.has(I))continue;N.add(I);const x=await d(k);x.kind==="expired"?S.push({domain:k,kind:"expired",maintainer:R.email??"",packageName:f,severity:"error"}):x.kind==="transient-error"&&S.push({domain:k,kind:"unresolved",maintainer:R.email??"",packageName:f,severity:"warning"})}return S})).flat()},Le=["readme","license","repo"],Ue=["ERROR: No README data found!","# Security holding package"],Oe=r=>{const e=r.trim();return e===""?!0:Ue.some(t=>e.startsWith(t))},Ce=(r,e)=>{if(typeof e.readme=="string")return e.readme;if(typeof r.readme=="string")return r.readme},Fe=(r,e)=>{const t=Ce(r,e);if(t===void 0)return"missing-readme";if(Oe(t))return"placeholder-readme"},Ne=r=>{const{license:e}=r;return e===void 0?"missing-license":typeof e=="string"?e.trim()===""?"missing-license":void 0:typeof e.type=="string"&&e.type.trim()!==""?void 0:"missing-license"},Ie=r=>{const{repository:e}=r;if(e===void 0)return"missing-repo";const t=typeof e.url=="string"?e.url.trim():"";if(t==="")return"missing-repo";let n=t.replace(/^git\+/,"");const s=/^git@([^:]+):(.+?)(?:\.git)?$/.exec(n);return s&&(n=`https://${s[1]}/${s[2]}`),URL.canParse(n)?void 0:"invalid-repo-url"},xe=r=>{const e=r["dist-tags"]?.latest;return e!==void 0&&Object.hasOwn(r.versions,e)?e:Object.keys(r.versions).at(-1)},cr=async(r,e={})=>{if(w("metadata"))return[];const t=new Set(e.allowlist),n=new Set(e.checks??Le),s=e.concurrency??m;return(await y(r,s,async({name:o,version:i})=>{if(t.has(o))return;const a=await E(o,{workspaceRoot:e.workspaceRoot});if(a===void 0)return;const c=a.versions[i]??a.versions[xe(a)??""];if(c===void 0||c.private===!0)return;const d=[];if(n.has("readme")){const u=Fe(a,c);u!==void 0&&d.push(u)}if(n.has("license")){const u=Ne(c);u!==void 0&&d.push(u)}if(n.has("repo")){const u=Ie(c);u!==void 0&&d.push(u)}if(d.length!==0)return{issues:d,packageName:o,version:i}})).filter(o=>o!==void 0)},H=(r,e)=>r===void 0?{}:typeof r=="string"?{[e.startsWith("@")?e.split("/").at(1)??e:e]:r}:{...r},je=(r,e)=>p.valid(e)?Object.keys(r.versions).filter(n=>p.valid(n)!==null&&p.lt(n,e)).sort((n,s)=>p.lt(n,s)?1:-1)[0]:void 0,dr=async(r,e={})=>{if(w("newBin"))return[];const t=new Set(e.allowlist),n=new Set(e.allowBins),s=e.concurrency??m;return(await y(r,s,async({name:o,version:i})=>{if(t.has(o))return;const a=await E(o,{workspaceRoot:e.workspaceRoot});if(a===void 0)return;const c=a.versions[i];if(c===void 0)return;const d=je(a,i);if(d===void 0)return;const u=a.versions[d];if(u===void 0)return;const f=H(c.bin,o),h=H(u.bin,o),v=Object.entries(f).filter(([g])=>!(g in h)).filter(([g])=>!n.has(g)).map(([g,M])=>({command:M,name:g}));if(v.length!==0)return{fromVersion:d,newBins:v,packageName:o,toVersion:i}})).filter(o=>o!==void 0)},Be=["preinstall","install","postinstall"],V=(r,e)=>r.versions[e]?.dist?.attestations?.provenance!==void 0,He=(r,e)=>{if(p.valid(e)!==null)return Object.keys(r.versions).filter(t=>p.valid(t)!==null&&p.prerelease(t)===null&&p.lt(t,e)).sort((t,n)=>p.lt(t,n)?1:-1)[0]},Ve=(r,e)=>{const t=r??{},n=e??{},s=[];for(const l of Be){const o=t[l];if(o===void 0||o==="")continue;const i=n[l];i===void 0||i===""?s.push({command:o,hook:l,kind:"introduced"}):i!==o&&s.push({command:o,hook:l,kind:"changed"})}return s},ur=async(r,e={})=>{if(w("s1ngularity"))return[];const t=new Set(e.allowlist),n=e.concurrency??m;return(await y(r,n,async({name:l,version:o})=>{if(t.has(l))return;const i=await E(l,{workspaceRoot:e.workspaceRoot});if(i?.versions[o]===void 0)return;const a=He(i,o);if(a===void 0||!V(i,a)||V(i,o))return;const c=Ve(i.versions[o]?.scripts,i.versions[a]?.scripts);if(c.length!==0)return{hookChanges:c,packageName:l,priorVersion:a,trustSignal:"provenance-dropped",version:o}})).filter(l=>l!==void 0)};export{rr as M,ur as a,dr as b,cr as c,ir as d,ar as e,sr as f,nr as g,tr as h,or as r};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import{e as d}from"./index-BzhrR_iC.js";import{V as f}from"./vis-user-error-CRmrBaD1.js";import{p as n}from"../packem_chunks/cli-main.js";import{r as p}from"./detect-CbMRSXkM.js";import{h as m,U as c}from"./writeFileSync-DJoHk3Ks-BPRoepNw.js";import{y as u}from"./isAccessibleSync-DYKTrrvc-C-_5cgwu.js";import{p as g}from"./readJsonSync-CbryXYxN-EWl7_7KX.js";const C=(s,i=!0)=>{if(!i){n.notice("Skipped .vscode: the project does not use oxfmt, so there is no editor setting to add.");return}const r=d(s,".vscode");m(r);const e=d(r,"settings.json"),o={"editor.defaultFormatter":"oxc.oxc-vscode","editor.formatOnSave":!0};if(u(e))try{const a=g(e);c(e,`${JSON.stringify({...o,...a},null,4)}
|
|
2
|
+
`),n.success("Merged .vscode/settings.json")}catch{n.warn("Could not merge .vscode/settings.json, skipping")}else c(e,`${JSON.stringify(o,null,4)}
|
|
3
|
+
`),n.success("Created .vscode/settings.json");const t=d(r,"extensions.json"),l={recommendations:["oxc.oxc-vscode"]};if(u(t))try{const a=g(t);c(t,`${JSON.stringify({...a,recommendations:[...new Set([...a.recommendations||[],...l.recommendations])]},null,4)}
|
|
4
|
+
`),n.success("Merged .vscode/extensions.json")}catch{n.warn("Could not merge .vscode/extensions.json, skipping")}else c(t,`${JSON.stringify(l,null,4)}
|
|
5
|
+
`),n.success("Created .vscode/extensions.json")},k=s=>{if(s!==void 0&&s!=="vscode")throw new f(`Unknown editor "${s}". Supported editors: vscode.`)},I=(s,i,r={})=>{const e=d(s,".ai");m(e);const o=d(e,"instructions");if(u(o))return;const t=r.existingProject?x(s,i):v(i);c(o,t),n.success("Created .ai/instructions")},v=s=>`# Project Instructions
|
|
6
|
+
|
|
7
|
+
This project was scaffolded with vis create.
|
|
8
|
+
|
|
9
|
+
## Development
|
|
10
|
+
|
|
11
|
+
- Package manager: ${s}
|
|
12
|
+
- Build: \`${s} run build\`
|
|
13
|
+
- Test: \`${s} run test\`
|
|
14
|
+
- Lint: \`${s} run lint\`
|
|
15
|
+
|
|
16
|
+
## Conventions
|
|
17
|
+
|
|
18
|
+
- Use TypeScript strict mode
|
|
19
|
+
- ESM modules (\`"type": "module"\`)
|
|
20
|
+
- Follow Angular-style conventional commits
|
|
21
|
+
`,x=(s,i)=>{const r=p(s).scripts??{},o=["build","test","lint"].filter(t=>typeof r[t]=="string").map(t=>`- ${t.charAt(0).toUpperCase()}${t.slice(1)}: \`${i} run ${t}\``);return`# Project Instructions
|
|
22
|
+
|
|
23
|
+
## Development
|
|
24
|
+
|
|
25
|
+
- Package manager: ${i}${o.length>0?`
|
|
26
|
+
${o.join(`
|
|
27
|
+
`)}`:""}
|
|
28
|
+
`};export{k as a,I as b,C as g};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{F as h,b as T,J as C,X as k}from"./index.server-
|
|
1
|
+
import{F as h,b as T,J as C,X as k}from"./index.server-Ca_EEVfw.js";import{q as R,S as l}from"../packem_chunks/cli-main.js";import{i as $}from"./index-BjdW45xX.js";import{F as s,X as d,o as a,R as g}from"../packem_chunks/catalog.js";import{l as v}from"./spinner-BJjbNl1F.js";import{D as j,W as y,T as A,C as D}from"./symbols-BXDZ_sKt.js";const b=({rows:i})=>s.jsx(d,{flexDirection:"column",children:i.map(r=>{let t;switch(r.status){case"error":{t=s.jsx(a,{color:"red",children:D});break}case"ok":{t=s.jsx(a,{color:"green",children:A});break}case"running":{t=s.jsx(a,{color:"white",children:s.jsx(v,{type:"dots"})});break}case"warn":{t=s.jsx(a,{color:"yellow",children:y});break}default:{t=s.jsx(a,{dimColor:!0,children:j});break}}return s.jsxs(d,{children:[s.jsx(d,{width:3,children:t}),s.jsx(d,{flexGrow:1,children:s.jsx(a,{children:r.label})}),r.summary?s.jsx(d,{children:s.jsxs(a,{dimColor:!0,children:[j," ",r.summary]})}):null]},r.id)})}),I={error:k(l.failure),ok:C(l.success),pending:h(l.dash),skip:h(l.dash),warn:T(l.warning)},Y=(i,r,t)=>{const p=t?`${i} ${h(`— ${t}`)}`:i;return` ${I[r]} ${p}
|
|
2
2
|
`},F=(i,r={})=>{const t=r.stream??process.stderr,w=typeof t.isTTY=="boolean"&&t.isTTY&&!$,S=r.live??w,n=new Map;for(const e of i)n.set(e.id,{id:e.id,label:e.label,status:"pending"});if(!S||i.length===0)return{finish:(e,o,f)=>{const c=n.get(e);c&&(n.set(e,{...c,status:o,summary:f}),t.write(Y(c.label,o,f)))},start:e=>{const o=n.get(e);o&&n.set(e,{...o,status:"running"})},stop:()=>{}};const x=()=>i.map(e=>n.get(e.id));let u=R(g.createElement(b,{rows:x()}),{interactive:!0,patchConsole:!1});const m=()=>{u?.rerender(g.createElement(b,{rows:x()}))};return{finish:(e,o,f)=>{const c=n.get(e);c&&(n.set(e,{...c,status:o,summary:f}),m())},start:e=>{const o=n.get(e);o&&(n.set(e,{...o,status:"running"}),m())},stop:()=>{u&&(m(),u.unmount(),u=void 0)}}};export{F as s};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{createRequire as m}from"node:module";import{
|
|
1
|
+
import{createRequire as m}from"node:module";import{a as E}from"./index-BzhrR_iC.js";let _;const w=t=>(_??=m(import.meta.url))(t),g=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,y=t=>{if(typeof g<"u"&&g.versions&&g.versions.node){const[r,e]=g.versions.node.split(".").map(Number);if(r>22||r===22&&e>=3||r===20&&e>=16)return g.getBuiltinModule(t)}return w(t)},{createInterface:v}=y("node:readline"),T=/^#([\w\-/]+):(.+)$/,$=/^([@\w\-/]+):(.+)$/,b=t=>{if(t==="")return;if(t.startsWith(":"))return{kind:"all",target:t.slice(1)};if(t.startsWith("~:"))return{kind:"closest",target:t.slice(2)};const r=T.exec(t);if(r?.[1]&&r[2])return{kind:"tag",tag:r[1],target:r[2]};const e=$.exec(t);return e?.[1]&&e[2]&&(e[1].startsWith("@")||e[1].includes("/")||e[1].includes("-"))?{kind:"project",projects:[e[1]],target:e[2]}:{kind:"all",target:t}},x=async(t,r,e,a)=>{const s=b(t);if(!s)throw new Error(`Invalid target selector: "${t}"`);const o=Object.keys(r.projects);if(s.kind==="all")return{projects:o,target:s.target};if(s.kind==="project")return{projects:s.projects??[],target:s.target};if(s.kind==="tag"){const c=s.tag;return{projects:o.filter(l=>r.projects[l]?.tags?.includes(c)??!1),target:s.target}}const n=E(a,e)||".";let u,f=-1;for(const[c,i]of Object.entries(r.projects)){const l=i.root;if(!l)continue;(n===l||n.startsWith(`${l}/`))&&l.length>f&&(f=l.length,u=c)}if(!u){if(process.stdout.isTTY){const c=v({input:process.stdin,output:process.stderr}),i=Object.keys(r.projects).sort();process.stderr.write(`No project found at ${n}. Pick one:
|
|
2
2
|
`);for(const[d,h]of i.entries())process.stderr.write(` ${String(d+1)}) ${h}
|
|
3
|
-
`);const l=await new Promise(d=>{c.question("> ",d)});c.close();const p=Number.parseInt(l,10)-1;if(p>=0&&p<i.length)return{projects:[i[p]],target:s.target}}throw new Error(`No project found at or above ${n} for selector "${t}".`)}return{projects:[u],target:s.target}},P=/^(\w+)\s*(!?=)\s*(.+)$/,R=t=>{const r=t.trim();if(r==="")return;const e=r.split("&&").map(c=>c.trim()),a=r.split("||").map(c=>c.trim()),s=e.length>1,o=a.length>1;if(s&&o)throw new Error("Query language does not support mixed && / || — split into multiple --query flags or simplify.");const n=o?a:e,u=o?"||":"&&",f=[];for(const c of n){const i=P.exec(c);if(!i)throw new Error(`Invalid query clause: "${c}". Expected <field>=<value> or <field>!=<value>.`);const[,l,p,d]=i;f.push({field:l,op:p==="!="?"!=":"=",value:d.trim().replaceAll(/^["']|["']$/g,"")})}return{clauses:f,op:u}},j=(t,r,e)=>{const{field:a,op:s,value:o}=t,n=f=>{const c=f===o;return s==="="?c:!c},u=f=>{const i=(f??[]).includes(o);return s==="="?i:!i};switch(a){case"id":case"project":return n(r);case"language":return n(e.language);case"layer":return n(e.layer);case"projectType":case"type":return n(e.projectType);case"stack":return n(e.stack);case"tag":case"tags":return u(e.tags);default:return!1}},A=(t,r,e)=>{const a=(e??[]).flatMap(o=>o.split(",")).map(o=>o.trim()).filter(Boolean);if(a.length===0)return t;const s=new Set(a);return t.filter(o=>{const n=r.projects[o]?.tags;return Array.isArray(n)&&n.some(u=>s.has(u))})},O=(t,r,e)=>{if(!e||e.trim()==="")return t;const a=R(e);return a?t.filter(s=>{const o=r.projects[s];return o?a.op==="&&"?a.clauses.every(n=>j(n,s,o)):a.clauses.some(n=>j(n,s,o)):!1}):t};export{A as a,O as f
|
|
3
|
+
`);const l=await new Promise(d=>{c.question("> ",d)});c.close();const p=Number.parseInt(l,10)-1;if(p>=0&&p<i.length)return{projects:[i[p]],target:s.target}}throw new Error(`No project found at or above ${n} for selector "${t}".`)}return{projects:[u],target:s.target}},P=/^(\w+)\s*(!?=)\s*(.+)$/,R=t=>{const r=t.trim();if(r==="")return;const e=r.split("&&").map(c=>c.trim()),a=r.split("||").map(c=>c.trim()),s=e.length>1,o=a.length>1;if(s&&o)throw new Error("Query language does not support mixed && / || — split into multiple --query flags or simplify.");const n=o?a:e,u=o?"||":"&&",f=[];for(const c of n){const i=P.exec(c);if(!i)throw new Error(`Invalid query clause: "${c}". Expected <field>=<value> or <field>!=<value>.`);const[,l,p,d]=i;f.push({field:l,op:p==="!="?"!=":"=",value:d.trim().replaceAll(/^["']|["']$/g,"")})}return{clauses:f,op:u}},j=(t,r,e)=>{const{field:a,op:s,value:o}=t,n=f=>{const c=f===o;return s==="="?c:!c},u=f=>{const i=(f??[]).includes(o);return s==="="?i:!i};switch(a){case"id":case"project":return n(r);case"language":return n(e.language);case"layer":return n(e.layer);case"projectType":case"type":return n(e.projectType);case"stack":return n(e.stack);case"tag":case"tags":return u(e.tags);default:return!1}},A=(t,r,e)=>{const a=(e??[]).flatMap(o=>o.split(",")).map(o=>o.trim()).filter(Boolean);if(a.length===0)return t;const s=new Set(a);return t.filter(o=>{const n=r.projects[o]?.tags;return Array.isArray(n)&&n.some(u=>s.has(u))})},O=(t,r,e)=>{if(!e||e.trim()==="")return t;const a=R(e);return a?t.filter(s=>{const o=r.projects[s];return o?a.op==="&&"?a.clauses.every(n=>j(n,s,o)):a.clauses.some(n=>j(n,s,o)):!1}):t};export{A as a,O as f,b as p,x as r};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as w}from"node:module";import{D as N,m as x}from"./provenance-
|
|
1
|
+
import{createRequire as w}from"node:module";import{D as N,m as x}from"./provenance-L1M2FPy_.js";import{g as P}from"./packument-zb18Jnlw.js";import{c as b}from"../packem_chunks/cli-main.js";import{f as E}from"./registry-keys-DxdqMzyp.js";let _;const $=s=>(_??=w(import.meta.url))(s),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,v=s=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[e,r]=u.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return u.getBuiltinModule(s)}return $(s)},{createPublicKey:M,createVerify:R}=v("node:crypto"),B=s=>{const e=["-----BEGIN PUBLIC KEY-----"],r=s.replaceAll(/\s+/g,"");for(let n=0;n<r.length;n+=64)e.push(r.slice(n,n+64));return e.push("-----END PUBLIC KEY-----"),e.join(`
|
|
2
2
|
`)},j=({keyBase64:s,message:e,signatureBase64:r})=>{try{const n=M({format:"pem",key:B(s)}),c=R("SHA256");return c.update(e),c.end(),c.verify(n,Buffer.from(r,"base64"))}catch{return!1}},A=(s,e)=>{if(s.expires===void 0||s.expires==="")return!1;const r=Date.parse(s.expires);return Number.isNaN(r)?!1:r<=e},C=(s,e,r)=>`${s}@${e}:${r}`,S=(s,e)=>e!==void 0&&s.includes(e)?e:s.at(-1),Y=async(s,e={})=>{if(b("signatures"))return[];const r=new Set(e.allowlist),n=e.treatExpiredAs??"warning",c=e.concurrency??N,p=await E({keysUrl:e.keysUrl,signal:e.signal,ttlMs:e.keysTtlMs});if(p===void 0)return s.filter(({name:t})=>!r.has(t)).map(({name:t,version:i})=>({code:"fetch-failed",message:"Could not fetch registry signing keys.",packageName:t,severity:"warning",version:i}));const k=new Map;for(const t of p.keys)k.set(t.keyid,t);const m=Date.now();return(await x(s,c,async({name:t,version:i})=>{if(r.has(t))return[];const o=await P(t,{workspaceRoot:e.workspaceRoot});if(o===void 0)return[];const y=o.versions[i]??o.versions[S(Object.keys(o.versions),o["dist-tags"]?.latest)??""];if(y===void 0)return[];const f=y.dist?.signatures,l=y.dist?.integrity;if(f===void 0||f.length===0)return[{code:"missing-signature",message:`Package ${t}@${i} has no dist.signatures from the registry.`,packageName:t,severity:"warning",version:i}];if(typeof l!="string"||l==="")return[{code:"missing-signature",message:`Package ${t}@${i} has signatures but no dist.integrity to verify against.`,packageName:t,severity:"warning",version:i}];const h=C(t,i,l),g=[];for(const a of f){const d=k.get(a.keyid);if(d===void 0){g.push({code:"unknown-keyid",keyid:a.keyid,message:`Package ${t}@${i} was signed with an unrecognized keyid (${a.keyid}).`,packageName:t,severity:"error",version:i});continue}if(A(d,m)){g.push({code:"expired-key",keyid:a.keyid,message:`Package ${t}@${i} was signed with an expired key (${a.keyid}, expired ${d.expires??"unknown"}).`,packageName:t,severity:n,version:i});continue}j({keyBase64:d.key,message:h,signatureBase64:a.sig})||g.push({code:"invalid-signature",keyid:a.keyid,message:`Package ${t}@${i} signature did not verify against ${a.keyid}.`,packageName:t,severity:"error",version:i})}return g})).flat()};export{Y as r};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{x as r,F as C,o as K}from"../packem_chunks/catalog.js";import{A}from"./getRandomSpinner-DX11qCB2-CoIsn7ZU.js";import{k as S}from"../packem_chunks/cli-main.js";const h=100,T=2147483647,m={delta:0,frame:0,time:0};function j(s){const{interval:i=h,isActive:e=!0}=s??{},t=F(i),{renderThrottleMs:c,subscribe:v}=r.useContext(S),[n,M]=r.useState(0),[R,p]=r.useState(m),o=r.useRef(0),f=r.useRef(0),x=r.useRef({isActive:e,resetKey:n,safeInterval:t}),l=x.current,E=e&&(t!==l.safeInterval||!l.isActive||n!==l.resetKey),b=r.useCallback(()=>{M(u=>u+1)},[]);return r.useLayoutEffect(()=>{if(!e)return;p(m);let u=0;const{startTime:d,unsubscribe:I}=v(a=>{if(c>0&&a<o.current)return;const y=a-u,k=a-f.current;f.current=a,o.current=a+c,p({delta:k,frame:Math.floor(y/t),time:y})},t);return u=d,f.current=d,o.current=u+c,I},[t,e,v,c,n]),r.useLayoutEffect(()=>{x.current={isActive:e,resetKey:n,safeInterval:t}},[e,t,n]),E?{...m,reset:b}:{...R,reset:b}}function F(s){return Number.isFinite(s)?Math.min(T,Math.max(1,s)):h}function D({type:s="dots"}){const i=A(s)??A("dots"),e=i?.frames??[" "],{frame:t}=j({interval:i?.interval??80});return C.jsx(K,{children:e[t%e.length]})}export{D as l};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{createRequire as ue}from"node:module";import{_ as he}from"./index-BzhrR_iC.js";import{y as be}from"./isAccessibleSync-DYKTrrvc-C-_5cgwu.js";import{U as ve}from"./writeFileSync-DJoHk3Ks-BPRoepNw.js";let me;const de=e=>(me??=ue(import.meta.url))(e),x=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ge=e=>{if(typeof x<"u"&&x.versions&&x.versions.node){const[t,s]=x.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return x.getBuiltinModule(e)}return de(e)},{createRequire:ne}=ge("node:module"),ye=/^(?:( )+|\t+)/,M="space";function Z(e,t,s){return e&&t===M&&s===1}function G(e,t){const s=new Map;let o=0,r,n;for(const c of e.split(/\n/g)){if(!c)continue;const i=c.match(ye);if(i===null)o=0,r="";else{const u=i[0].length,a=i[1]?M:"tab";if(Z(t,a,u))continue;a!==r&&(o=0),r=a;let l=1,p=0;const f=u-o;if(o=u,f===0)l=0,p=1;else{const g=Math.abs(f);if(Z(t,a,g))continue;n=xe(a,g)}const m=s.get(n);s.set(n,m===void 0?[1,0]:[m[0]+l,m[1]+p])}}return s}function xe(e,t){return(e===M?"s":"t")+String(t)}function we(e){const t=e[0]==="s"?M:"tab",s=Number(e.slice(1));return{type:t,amount:s}}function Te(e){let t,s=0,o=0;for(const[r,[n,c]]of e)(n>s||n===s&&c>o)&&(s=n,o=c,t=r);return t}function ke(e,t){return(e===M?" ":" ").repeat(t)}function ze(e){if(typeof e!="string")throw new TypeError("Expected a string");let t=G(e,!0);t.size===0&&(t=G(e,!1));const s=Te(t);let o,r=0,n="";return s!==void 0&&({type:o,amount:r}=we(s),n=ke(o,r)),{amount:r,type:o,indent:n}}let $e;const Ee=e=>($e??=ne(import.meta.url))(e),w=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ne=e=>{if(typeof w<"u"&&w.versions&&w.versions.node){const[t,s]=w.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return w.getBuiltinModule(e)}return Ee(e)},{readFileSync:Se}=Ne("node:fs"),os=(e,t,s={})=>{const{detectIndent:o,indent:r,replacer:n,stringify:c=JSON.stringify,...i}={indent:" ",...s};let u=r,a=`
|
|
2
|
+
`;if(be(e,he))try{const p=Se(e,"utf8");if(o){const{indent:f}=ze(p);u=f}a=p.endsWith(`
|
|
3
|
+
`)?`
|
|
4
|
+
`:""}catch(p){if(p.code!=="ENOENT")throw p}const l=c(t,n,u);ve(e,`${l}${a}`,i)};let _e;const je=e=>(_e??=ne(import.meta.url))(e),b=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,re=e=>{if(typeof b<"u"&&b.versions&&b.versions.node){const[t,s]=b.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return b.getBuiltinModule(e)}return je(e)},{homedir:Ce,tmpdir:B}=re("node:os"),{env:A,cwd:Ie,platform:V}=b,{createRequire:h}=re("node:module"),Ae=0,ie=2,Oe=Symbol("findUpStop"),Me=/^[A-Z]:\//i,y=(e="")=>e&&e.replaceAll("\\","/").replace(Me,t=>t.toUpperCase()),Re=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Z]:[/\\]/i,ce=/^[A-Z]:$/i,Le=/[^/](\.[^./]+)$/,De=/^[/\\]|^[a-z]:[/\\]/i,Be=/\/$/,Fe=()=>{if(typeof process.cwd=="function")try{const e=process.cwd();if(typeof e=="string")return y(e)}catch{}return"/"},Ue=(e,t)=>{let s="",o=0,r=-1,n=0,c;for(let i=0;i<=e.length;++i){if(i<e.length)c=e[i];else{if(c==="/")break;c="/"}if(c==="/"){if(!(r===i-1||n===1))if(n===2){if(s.length<2||o!==2||!s.endsWith(".")||s.at(-2)!=="."){if(s.length>2){const u=s.lastIndexOf("/");u===-1?(s="",o=0):(s=s.slice(0,u),o=s.length-1-s.lastIndexOf("/")),r=i,n=0;continue}else if(s.length>0){s="",o=0,r=i,n=0;continue}}t&&(s+=s.length>0?"/..":"..",o=2)}else s.length>0?s+=`/${e.slice(r+1,i)}`:s=e.slice(r+1,i),o=i-r-1;r=i,n=0}else c==="."&&n!==-1?++n:n=-1}return s},O=e=>Re.test(e),F=function(...e){e=e.map(o=>y(o));let t="",s=!1;for(let o=e.length-1;o>=-1&&!s;o--){const r=o>=0?e[o]:Fe();!r||r.length===0||(t=`${r}/${t}`,s=O(r))}return t=Ue(t,!s),ce.test(t)?`${t}/`:s&&!O(t)?`/${t}`:t.length>0?t:"."},Pe=function(e){return Le.exec(y(e))?.[1]??""},le=e=>{const t=y(e).replace(Be,""),s=t.lastIndexOf("/");if(s===-1)return O(e)?"/":".";const o=t.slice(0,s);return ce.test(o)?`${o}/`:o||(O(e)?"/":".")},qe=(e,t)=>{const s=y(e);return s.slice(s.lastIndexOf("/")+1)},We=function(e){const t=De.exec(e)?.[0]?.replaceAll("\\","/")??"",s=qe(e),o=Pe(s);return{base:s,dir:le(e),ext:o,name:s.slice(0,s.length-o.length),root:t}};let He;const Ze=e=>(He??=h(import.meta.url))(e),T=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ge=e=>{if(typeof T<"u"&&T.versions&&T.versions.node){const[t,s]=T.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return T.getBuiltinModule(e)}return Ze(e)},{fileURLToPath:Ve}=Ge("node:url");function Xe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var X,Y;function Ye(){return Y||(Y=1,X=["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cr3","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),X}var Je=Ye();const Ke=Xe(Je);new Set(Ke);const L=e=>y(e instanceof URL?Ve(e):e),pe=e=>{if(!e||!(e instanceof URL)&&typeof e!="string")throw new TypeError("Path must be a non-empty string or URL.")},J=e=>{if(e.isFile())return"file";if(e.isDirectory())return"dir";if(e.isSymbolicLink())return"symlink"};let Qe;const et=e=>(Qe??=h(import.meta.url))(e),k=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,tt=e=>{if(typeof k<"u"&&k.versions&&k.versions.node){const[t,s]=k.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return k.getBuiltinModule(e)}return et(e)},{lstat:ns,mkdir:rs}=tt("node:fs/promises");let st;const ot=e=>(st??=h(import.meta.url))(e),z=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,nt=e=>{if(typeof z<"u"&&z.versions&&z.versions.node){const[t,s]=z.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return z.getBuiltinModule(e)}return ot(e)},{lstatSync:K,mkdirSync:rt}=nt("node:fs"),$=e=>{pe(e);try{const t=K(e);if(!t.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${String(J(t))}'`);return}catch(t){if(t.code!=="ENOENT")throw t}try{rt(e,{recursive:!0})}catch(t){if(t.code!=="EEXIST")throw t;const s=K(e);if(!s.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${String(J(s))}'`,{cause:t})}};let it;const ct=e=>(it??=h(import.meta.url))(e),E=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,lt=e=>{if(typeof E<"u"&&E.versions&&E.versions.node){const[t,s]=E.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return E.getBuiltinModule(e)}return ct(e)},{stat:is,lstat:cs}=lt("node:fs/promises");let pt;const at=e=>(pt??=h(import.meta.url))(e),N=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ft=e=>{if(typeof N<"u"&&N.versions&&N.versions.node){const[t,s]=N.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return N.getBuiltinModule(e)}return at(e)},{statSync:ut,lstatSync:mt}=ft("node:fs"),dt=(e,t={})=>{const s=t.cwd?L(t.cwd):process.cwd();let o=F(s);const{root:r}=We(o),n=L(t.stopAt??r),c=F(o,n),i=t.type??"file",u=function(l){return[e]};t.allowSymlinks??=!0;const a=t.allowSymlinks?ut:mt;for(;o;){for(let l of u()){if(l===Oe)return;if(l===void 0)continue;Buffer.isBuffer(l)?l=l.toString():l instanceof URL&&(l=L(l));const p=O(l)?l:F(o,l);try{const f=a(p);if(i==="file"&&f.isFile()||i==="directory"&&f.isDirectory())return p}catch{}}if(o===c||o===r)break;o=le(o)}};let gt;const ht=e=>(gt??=h(import.meta.url))(e),S=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,bt=e=>{if(typeof S<"u"&&S.versions&&S.versions.node){const[t,s]=S.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return S.getBuiltinModule(e)}return ht(e)},{access:ls}=bt("node:fs/promises");let vt;const yt=e=>(vt??=h(import.meta.url))(e),_=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,xt=e=>{if(typeof _<"u"&&_.versions&&_.versions.node){const[t,s]=_.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return _.getBuiltinModule(e)}return yt(e)},{accessSync:wt}=xt("node:fs");function D(e,t=Ae){pe(e),e=L(e);try{return wt(e,t),!0}catch{return!1}}class Tt extends Error{constructor(t){super(`ENOENT: ${t}`)}get code(){return"ENOENT"}set code(t){throw new Error("Cannot overwrite code ENOENT")}get name(){return"NotFoundError"}set name(t){throw new Error("Cannot overwrite name of NotFoundError")}}let kt;const zt=e=>(kt??=h(import.meta.url))(e),j=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,q=e=>{if(typeof j<"u"&&j.versions&&j.versions.node){const[t,s]=j.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return j.getBuiltinModule(e)}return zt(e)},$t=q("fs"),Et=q("os"),Nt=q("path");var U={},Q;function St(){if(Q)return U;Q=1;var e=Object.defineProperty,t=(l,p)=>e(l,"name",{value:p,configurable:!0}),s=$t,o=Et,r=Nt;const n=t(l=>{let p="";for(let f=0;f<l.length;f+=1){const m=l[f],g=m.toUpperCase();p+=m===g?m.toLowerCase():g}return p},"invertCase"),c=new Map,i=t((l,p)=>{const f=r.join(l,`.is-fs-case-sensitive-test-${process.pid}`);try{return p.writeFileSync(f,""),!p.existsSync(n(f))}finally{try{p.unlinkSync(f)}catch{}}},"checkDirectoryCaseWithWrite"),u=t((l,p,f)=>{try{return i(l,f)}catch(m){if(p===void 0)return i(o.tmpdir(),f);throw m}},"checkDirectoryCaseWithFallback"),a=t((l,p=s,f=!0)=>{const m=l??process.cwd();if(f&&c.has(m))return c.get(m);let g;const H=n(m);return H!==m&&p.existsSync(m)?g=!p.existsSync(H):g=u(m,l,p),f&&c.set(m,g),g},"isFsCaseSensitive");return U.isFsCaseSensitive=a,U}var _t=St();_t.isFsCaseSensitive;const jt=/^[A-Z]:\//i,R=(e="")=>e&&e.replaceAll("\\","/").replace(jt,t=>t.toUpperCase()),Ct=/^[/\\]{2}/,It=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Z]:[/\\]/i,W=/^[A-Z]:$/i,At=/\/$/,Ot=()=>{if(typeof process.cwd=="function")try{const e=process.cwd();if(typeof e=="string")return R(e)}catch{}return"/"},P="/",ae=(e,t)=>{let s="",o=0,r=-1,n=0,c;for(let i=0;i<=e.length;++i){if(i<e.length)c=e[i];else{if(c==="/")break;c="/"}if(c==="/"){if(!(r===i-1||n===1))if(n===2){if(s.length<2||o!==2||!s.endsWith(".")||s.at(-2)!=="."){if(s.length>2){const u=s.lastIndexOf("/");u===-1?(s="",o=0):(s=s.slice(0,u),o=s.length-1-s.lastIndexOf("/")),r=i,n=0;continue}else if(s.length>0){s="",o=0,r=i,n=0;continue}}t&&(s+=s.length>0?"/..":"..",o=2)}else s.length>0?s+=`/${e.slice(r+1,i)}`:s=e.slice(r+1,i),o=i-r-1;r=i,n=0}else c==="."&&n!==-1?++n:n=-1}return s},v=e=>It.test(e),Mt=function(e){if(e.length===0)return".";e=R(e);const t=Ct.exec(e),s=v(e),o=e.at(-1)==="/";return e=ae(e,!s),e.length===0?s?"/":o?"./":".":(o&&(e+="/"),W.test(e)&&(e+="/"),t?s?`//${e}`:`//./${e}`:s&&!v(e)?`/${e}`:e)},d=(...e)=>{let t="";for(const s of e)if(s)if(t.length>0){const o=t.at(-1)==="/",r=s[0]==="/";o&&r?t+=s.slice(1):t+=o||r?s:`/${s}`}else t+=s;return Mt(t)},Rt=function(...e){e=e.map(o=>R(o));let t="",s=!1;for(let o=e.length-1;o>=-1&&!s;o--){const r=o>=0?e[o]:Ot();!r||r.length===0||(t=`${r}/${t}`,s=v(r))}return t=ae(t,!s),W.test(t)?`${t}/`:s&&!v(t)?`/${t}`:t.length>0?t:"."},Lt=e=>{const t=R(e).replace(At,""),s=t.lastIndexOf("/");if(s===-1)return v(e)?"/":".";const o=t.slice(0,s);return W.test(o)?`${o}/`:o||(v(e)?"/":".")};let Dt;const Bt=e=>(Dt??=h(import.meta.url))(e),C=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ft=e=>{if(typeof C<"u"&&C.versions&&C.versions.node){const[t,s]=C.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return C.getBuiltinModule(e)}return Bt(e)},{fileURLToPath:Ut}=Ft("node:url");function Pt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ee,te;function qt(){return te||(te=1,ee=["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cr3","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),ee}var Wt=qt();const Ht=Pt(Wt);new Set(Ht);const fe=e=>R(e instanceof URL?Ut(e):e),se=e=>{const t=Ce();if(V==="win32"){const n=A.LOCALAPPDATA,c=t?d(t,"AppData","Local"):B(),i=n&&n.length>0?n:c;return d(i,e,"Cache")}if(V==="darwin"){const n=t?d(t,"Library","Caches"):B();return d(n,e)}const s=A.XDG_CACHE_HOME,o=t?d(t,".cache"):B(),r=s&&s.length>0?s:o;return d(r,e)},Zt=e=>{if(e.length===0)return;const t=e.map(n=>Rt(fe(n)).split(P));let s=Number.POSITIVE_INFINITY;for(const n of t)n.length<s&&(s=n.length);const o=[];for(let n=0;n<s;n+=1){const c=t[0][n];if(t.every(i=>i[n]===c))o.push(c);else break}const r=o.join(P);return r===""?P:r},I=(e,t)=>{if(e!==void 0)return t?(...s)=>d(e,...s):e},Gt=e=>{if(e?.files&&e.files.length>0){const t=Zt(e.files);if(t!==void 0)return t}return e?.cwd??Ie()},Vt=e=>new Tt(`No package.json found searching upwards from '${fe(e)}'.`),Xt=e=>!D(e,ie)&&D(e),Yt=(e,t)=>{if(A.CACHE_DIR&&!["0","1","false","true"].includes(A.CACHE_DIR)){const a=d(A.CACHE_DIR,e);return t?.create&&$(a),I(a,t?.thunk)}const s=Gt(t),o=dt("package.json",{cwd:s,type:"file"});if(!o){if(t?.useGlobalCacheFallback){const a=se(e);return t.create&&$(a),I(a,t.thunk)}if(t?.throwError)throw Vt(s);return}const r=Lt(o),n=d(r,"node_modules"),c=d(n,".cache"),i=d(c,e);if(D(i,ie))return t?.create&&$(i),I(i,t?.thunk);const u=[i,c,n];if(D(n)||u.push(r),u.some(a=>Xt(a))){if(t?.useGlobalCacheFallback){const a=se(e);return t.create&&$(a),I(a,t.thunk)}return}return t?.create&&$(i),I(i,t?.thunk)},ps=Yt,oe="@inherit",Jt=["aliases","dependsOn","inputs","outputs"],Kt=(e,t)=>{if(t===void 0)return e===void 0?void 0:[...e];if(!t.includes(oe))return[...t];const s=[];for(const o of t){if(o===oe){e!==void 0&&s.push(...e);continue}s.push(o)}return s},as=(e,t)=>{const s={...e,...t};for(const o of Jt){const r=e?.[o],n=t?.[o],c=Kt(r,n);c===void 0?delete s[o]:s[o]=c}return s};export{ps as L,os as T,as as m};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire as b}from"node:module";import{
|
|
1
|
+
import{createRequire as b}from"node:module";import{v as m,e as _,z as C}from"./index-BzhrR_iC.js";import{y as T}from"./isAccessibleSync-DYKTrrvc-C-_5cgwu.js";let g;const y=e=>(g??=b(import.meta.url))(e),h=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,I=e=>{if(typeof h<"u"&&h.versions&&h.versions.node){const[s,r]=h.versions.node.split(".").map(Number);if(s>22||s===22&&r>=3||s===20&&r>=16)return h.getBuiltinModule(e)}return y(e)},{platform:S}=I("node:os"),k={server:{cache:!1,interactive:!1,persistent:!0,runInCI:!1},utility:{cache:!1,runInCI:!1}},A=e=>{const s=e.preset??e.options?.preset;if(!s)return e;const r=k[s];if(!r)return e;const{cache:t,...n}=r;return{...e,cache:e.cache??t,options:{...n,...e.options}}},v=()=>{const e=S();return e==="darwin"?"macos":e==="win32"?"windows":"linux"},D=(e,s)=>{if(!s||s.size===0)return!0;const r=e?.runnerTags;return!r||r.length===0?!0:r.some(t=>s.has(t))},E=(e,s,r=!0)=>{const t=e?.runInCI??!0;return t===!0||t==="always"?!0:t===!1?!s:t==="affected"?!s||r:!0},N=(e,s,r)=>r||!s?e:m(s)?s:_(e,s),O=(e,s)=>{if(s===!1)return{};const r=s===!0?P(process.env.NODE_ENV):Array.isArray(s)?s:[s],t={};for(const n of r)Object.assign(t,$(e,n,t));return t},w=(e,s)=>{const r=n=>{const c=s[n];return c!==void 0?c:process.env[n]??""};let t="";for(let n=0;n<e.length;n+=1){const c=e[n];if(c==="\\"&&e[n+1]==="$"){t+="$",n+=1;continue}if(c!=="$"){t+=c;continue}const u=e[n+1];if(u==="{"){let i=1,l=n+2;for(;l<e.length;){const d=e[l];if(d==="}"){if(i-=1,i===0)break}else d==="{"&&e[l-1]==="$"&&(i+=1);l+=1}if(i!==0){t+=e.slice(n);break}const a=l,o=e.slice(n+2,a),f=o.indexOf(":-");if(f===-1)t+=r(o);else{const d=o.slice(0,f),x=o.slice(f+2),p=s[d]??process.env[d];t+=p!==void 0&&p!==""?p:w(x,s)}n=a;continue}if(u!==void 0&&/[A-Z_]/i.test(u)){let i=n+1;for(;i<e.length&&/\w/.test(e[i]);)i+=1;t+=r(e.slice(n+1,i)),n=i-1;continue}t+=c}return t},P=e=>{const s=[".env"];return e&&s.push(`.env.${e}`),e!=="test"&&s.push(".env.local"),e&&e!=="test"&&s.push(`.env.${e}.local`),s},$=(e,s,r={})=>{const t=m(s)?s:_(e,s);if(!T(t))return{};let n;try{n=C(t)}catch{return{}}const c={};for(const u of n.split(/\r?\n/)){const i=u.trim();if(i===""||i.startsWith("#"))continue;const l=i.indexOf("=");if(l===-1)continue;const a=i.slice(0,l).trim();if(a==="")continue;let o=i.slice(l+1).trim();const f=o.length>=2&&o.startsWith("'")&&o.endsWith("'");(o.startsWith('"')&&o.endsWith('"')||f)&&(o=o.slice(1,-1)),f||(o=w(o,{...r,...c})),c[a]=o}return c},z=(e,s=v())=>{if(e)return s==="windows"&&e.windowsShell?e.windowsShell:(s==="linux"||s==="macos")&&e.unixShell?e.unixShell:e.shell},B=e=>{if(e==="run")return!1;if(e==="build"||e==="test")return!0};export{z as a,A as b,B as c,v as d,O as l,D as m,N as r,E as s};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{buildChildEnv as d,resolveChildEnvPolicy as E,childEnvNameFilter as f}from"@visulima/task-runner";import{r as l,l as _}from"./target-options-
|
|
1
|
+
import{buildChildEnv as d,resolveChildEnvPolicy as E,childEnvNameFilter as f}from"@visulima/task-runner";import{r as l,l as _}from"./target-options-DsHFmRZH.js";const S="VIS_AFFECTED_FILES",F="visTaskArgEnv",a=["FNM_*","FORCE_COLOR","NODE_EXTRA_CA_CERTS","NO_COLOR","VIS_MONOREPO_ROOT","VIS_VERSION"],h={INIT_CWD:"the directory `vis run` was invoked from",VIS_AFFECTED_FILES:"affected file paths, when `affectedFiles` is `env` or `both`",VIS_TASK_SLOTS:"the effective parallelism, for nested worker pools"},T=e=>({INIT_CWD:e.initCwd,VIS_TASK_SLOTS:String(e.taskSlots),...e.envFileVars,...e.serviceEnv,...e.execEnv,...e.affectedFilesEnv,...e.taskArgEnv}),u=(e,o)=>{const n=E(e,o);return n.mode==="clean"?{allow:[...n.allow,...a],mode:"clean"}:n},A=(e,o=process.platform)=>f({allow:[...e,...a],mode:"clean"},o),p=(e,o,n=process.platform)=>e.mode==="clean"?{env:d({injected:o,parentEnv:process.env,platform:n,policy:{allow:e.allow,mode:"clean"}}),inheritEnv:!1}:{env:o,inheritEnv:!0},c=e=>{const o=e.overrides.visOptions;if(o&&typeof o=="object")return o},C=(e,o,n)=>{const s=`${o}\0${typeof n=="string"?n:String(n)}`,r=e.get(s);if(r)return r;const t=_(o,n);return e.set(s,t),t},R=e=>({...e,envFileCache:new Map}),w=e=>e.segment===void 0?e.id:e.id.slice(0,e.id.lastIndexOf("#")),I=(e,o,n={})=>{const s=c(o),r=l(e.workspaceRoot,n.cwd??o.projectRoot,s?.runFromWorkspaceRoot===!0),t=s?.envFile?C(e.envFileCache,r,s.envFile):void 0,i={};e.affectedFiles&&e.affectedFiles.length>0&&(s?.affectedFiles==="env"||s?.affectedFiles==="both")&&(i[S]=e.affectedFiles.join(`
|
|
2
2
|
`));const v=T({affectedFilesEnv:i,envFileVars:t,execEnv:n.env,initCwd:e.initCwd,serviceEnv:e.serviceEnvByTaskId?.get(w(o)),taskArgEnv:o.overrides[F],taskSlots:e.taskSlots});return p(e.childEnvPolicy(o),v)},N=(e,o)=>{const n=l(e.workspaceRoot,o.projectRoot,c(o)?.runFromWorkspaceRoot===!0);return{cwd:n,...I(e,o,{cwd:n})}};export{S as A,F as T,a as V,h as a,R as b,A as c,N as d,u as e,c as g,I as r};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{createRequire as z}from"node:module";import{e as p,l as H,z as M}from"./index-BzhrR_iC.js";import{y as v}from"./isAccessibleSync-DYKTrrvc-C-_5cgwu.js";import{p as A}from"./readJsonSync-CbryXYxN-EWl7_7KX.js";let D;const B=e=>(D??=z(import.meta.url))(e),k=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,T=e=>{if(typeof k<"u"&&k.versions&&k.versions.node){const[n,t]=k.versions.node.split(".").map(Number);if(n>22||n===22&&t>=3||n===20&&t>=16)return k.getBuiltinModule(e)}return B(e)},{execFileSync:P}=T("node:child_process"),{randomBytes:L}=T("node:crypto"),{writeFileSync:V,renameSync:q,unlinkSync:R}=T("node:fs"),{delimiter:U}=T("node:path"),J=["proto","mise","fnm","volta","asdf","nvm","corepack"],G={asdf:["bun","go","node","npm","pnpm","python","ruby","rust","yarn"],corepack:["npm","pnpm","yarn"],fnm:["node"],mise:["aube","bun","go","node","npm","pnpm","python","ruby","rust","yarn"],nvm:["node"],proto:["bun","go","node","npm","pnpm","python","ruby","rust","yarn"],volta:["node","npm","pnpm","yarn"]},Z=["proto","mise","fnm","volta","asdf","nvm","corepack"],O={asdf:[".tool-versions"],corepack:[],fnm:[".nvmrc",".node-version"],mise:[".mise.toml",".config/mise.toml","mise.toml"],nvm:[".nvmrc"],proto:[".prototools"],volta:[]},y=new Map,b=e=>{const n=y.get(e);if(n!==void 0||y.has(e))return n;const t=process.env.PATH;if(!t){y.set(e,void 0);return}const r=process.platform==="win32"?["",...(process.env.PATHEXT??".COM;.EXE;.BAT;.CMD").split(";")]:[""];for(const s of t.split(U)){const c=s.replaceAll(/^["']|["']$/g,"").trim();if(c!=="")for(const i of r){const a=`${c}${H}${e}${i}`;if(v(a))return y.set(e,a),a}}y.set(e,void 0)},S=(e,n=["--version"])=>{try{const t=P(e,n,{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}),o=/\d+\.\d+(?:\.\d+)?/.exec(t);return o?o[0]:t.trim()||void 0}catch{return}},j=(e,n)=>{const t=p(e,"package.json");if(!v(t))return[];try{const r=A(t)[n];if(n==="volta"&&typeof r=="object"&&r!==null&&Object.keys(r).length>0)return["package.json"];if(n==="packageManager"&&typeof r=="string"&&r.length>0)return["package.json"]}catch{}return[]},X=(e,n)=>e==="volta"?j(n,"volta"):e==="corepack"?j(n,"packageManager"):O[e].filter(t=>v(p(n,t))),_=new Map,Y=()=>{_.clear(),y.clear()},N=(e,n)=>{{const s=_.get(e);if(s)return s}const t=[],o=!!b("pnpm")||!!b("yarn");for(const s of Z){const c=s==="nvm"?void 0:b(s),i=s==="nvm"&&!!process.env.NVM_DIR,a=X(s,e),l=!!c||i;s==="corepack"&&!l&&(!(a.length>0)||o)||!l&&a.length===0||t.push({binPath:c,configFiles:a,installed:l,name:s,version:c?S(c):void 0})}const r=Object.freeze(t);return _.set(e,r),r},yn=(e,n,t)=>{const o=N(e);return n?.preferredManager&&n.preferredManager!=="none"?o.find(r=>r.name===n.preferredManager)??{configFiles:[],installed:!1,name:n.preferredManager}:o.find(r=>r.installed&&r.configFiles.length>0)??o.find(r=>r.installed)??o.find(r=>r.configFiles.length>0)??{configFiles:[],installed:!1,name:"none"}},K=(e,n)=>{for(const t of n){const o=p(e,t);if(v(o))try{const r=M(o).trim();if(r!=="")return{name:t,value:r.replace(/^v/,"")}}catch{}}},Q=/^([a-z][\w-]*)\s*=\s*"?([^"\n#]+?)"?\s*(?:#.*)?$/i,nn=e=>{const n=p(e,".prototools");if(!v(n))return[];const t=M(n),o=[];let r=!1;for(const s of t.split(/\r?\n/)){const c=s.trim();if(c===""||c.startsWith("#"))continue;if(c.startsWith("[")){r=!0;continue}if(r)continue;const i=Q.exec(c);if(!i)continue;const[,a,l]=i,f=g(a);f&&o.push({source:".prototools",tool:f,version:l.trim()})}return o},en=/^\[tools\]\s*$/i,tn=/^([a-z][\w-]*)\s*=\s*"?([^"\n#]+?)"?\s*(?:#.*)?$/i,on=e=>{for(const n of O.mise){const t=p(e,n);if(!v(t))continue;const o=[],r=M(t);let s=!1;for(const c of r.split(/\r?\n/)){const i=c.trim();if(i===""||i.startsWith("#"))continue;if(i.startsWith("[")){s=en.test(i);continue}if(!s)continue;const a=tn.exec(i);if(!a)continue;const[,l,f]=a,d=g(l);d&&o.push({source:".mise.toml",tool:d,version:f.trim()})}if(o.length>0)return o}return[]},rn=e=>{const n=p(e,".tool-versions");if(!v(n))return[];const t=M(n),o=[];for(const r of t.split(/\r?\n/)){const s=r.trim();if(s===""||s.startsWith("#"))continue;const c=s.split(/\s+/);if(c.length<2)continue;const[i,...a]=c,l=g(i);l&&a[0]&&o.push({source:".tool-versions",tool:l,version:a[0]})}return o},g=e=>{switch(e.toLowerCase()){case"aube":return"aube";case"bun":return"bun";case"go":case"golang":return"go";case"node":case"nodejs":return"node";case"npm":return"npm";case"pnpm":return"pnpm";case"python":case"python3":return"python";case"ruby":return"ruby";case"rust":case"rustc":return"rust";case"yarn":return"yarn";default:return}},sn=e=>{const[n]=e.split("+",1),t=/^(pnpm|yarn|npm|bun)@(.+)$/.exec(n??"");if(!t)return;const o=g(t[1]);if(o)return{source:"packageManager",tool:o,version:t[2]}},an=(e,n)=>{const t=new Map,o=i=>{t.set(i.tool,i)},r=p(e,"package.json");let s={};try{v(r)&&(s=A(r))}catch{}if(s.engines)for(const[i,a]of Object.entries(s.engines)){const l=g(i);l&&typeof a=="string"&&o({source:"engines",tool:l,version:a})}if(s.packageManager){const i=sn(s.packageManager);i&&o(i)}if(s.volta)for(const[i,a]of Object.entries(s.volta)){const l=g(i);l&&typeof a=="string"&&o({source:"volta",tool:l,version:a})}const c=K(e,[".nvmrc",".node-version"]);c&&o({source:c.name===".nvmrc"?".nvmrc":".node-version",tool:"node",version:c.value});for(const i of rn(e))o(i);for(const i of on(e))o(i);for(const i of nn(e))o(i);if(n?.tools)for(const[i,a]of Object.entries(n.tools)){const l=g(i);l&&typeof a=="string"&&o({source:"vis.config.ts",tool:l,version:a})}return[...t.values()]},x={aube:{args:["--version"],binaries:["aube"]},bun:{args:["--version"],binaries:["bun"]},go:{args:["version"],binaries:["go"]},node:{args:["--version"],binaries:["node"]},npm:{args:["--version"],binaries:["npm"]},pnpm:{args:["--version"],binaries:["pnpm"]},python:{args:["--version"],binaries:["python","python3"]},ruby:{args:["--version"],binaries:["ruby"]},rust:{args:["--version"],binaries:["rustc"]},yarn:{args:["--version"],binaries:["yarn"]}},F=e=>{const n=x[e];for(const t of n.binaries){const o=b(t);if(o)return S(o,n.args)}if(e==="node")return process.versions.node},W=(e,n)=>{const t=n.trim();if(t===""||t==="*"||t==="latest")return!0;if(/^\d[\d.]*$/.test(t))return e===t||e.startsWith(`${t}.`);const o=i=>i.split(/[.\-+]/).map(a=>Number.parseInt(a,10)||0),r=(i,a)=>{const l=o(i),f=o(a),d=Math.max(l.length,f.length);for(let h=0;h<d;h++){const $=l[h]??0,u=f[h]??0;if($!==u)return $-u}return 0},s=i=>{for(const a of i)if(a.startsWith(">=")){if(r(e,a.slice(2).trim())<0)return!1}else if(a.startsWith("<=")){if(r(e,a.slice(2).trim())>0)return!1}else if(a.startsWith(">")){if(r(e,a.slice(1).trim())<=0)return!1}else if(a.startsWith("<")){if(r(e,a.slice(1).trim())>=0)return!1}else if(a.startsWith("^")||a.startsWith("~")){const l=a.slice(1).trim(),[f,d]=o(l),[h,$]=o(e);if(h!==f||a.startsWith("~")&&$!==d||r(e,l)<0)return!1}return!0},c=t.split("||").map(i=>i.trim().split(/\s+/).filter(Boolean)).filter(i=>i.length>0);return c.length===0?!0:c.some(i=>s(i))},cn=(e,n)=>{switch(e){case".mise.toml":return["mise"];case".node-version":case".nvmrc":return["fnm","nvm","volta","proto","mise","asdf"];case".prototools":return["proto"];case".tool-versions":return["asdf","mise"];case"packageManager":return n==="pnpm"||n==="yarn"?["self-activate","volta","proto","mise","corepack"]:n==="npm"?["volta","proto","mise","asdf","corepack"]:n==="aube"?["mise"]:n==="bun"?["proto","mise","asdf"]:["volta","proto","mise"];case"volta":return["volta"];default:return["proto","mise","fnm","volta","asdf","nvm","corepack"]}},ln=(e,n,t)=>{if(t?.preferredManager&&t.preferredManager!=="none"&&E(t.preferredManager,e.tool)){const r=n.find(s=>s.name===t.preferredManager);return r?{installed:r.installed,name:r.name}:{installed:!1,name:t.preferredManager,note:`${t.preferredManager} is the preferred manager but isn't on PATH`}}const o=cn(e.source,e.tool);for(const r of o){if(r==="self-activate"){if((e.tool==="pnpm"||e.tool==="yarn")&&b(e.tool))return{installed:!0,name:"self-activate",note:`${e.tool} will activate ${e.version} from the package.json pin on next invocation`};continue}if(!E(r,e.tool))continue;if(n.find(c=>c.name===r)?.installed)return{installed:!0,name:r}}for(const r of o)if(!(r==="self-activate"||!E(r,e.tool)))return{installed:!1,name:r,note:`${r} can install ${e.tool} — run \`vis toolchain install\` after adding it to PATH`};return{installed:!1,name:"none",note:"No manager knows how to install this tool"}},E=(e,n)=>e==="none"?!1:e==="self-activate"?n==="pnpm"||n==="yarn":G[e].includes(n),fn=(e,n)=>{const t=N(e),r=an(e,n).map(s=>{const c=F(s.tool),i=c!==void 0&&W(c,s.version),a=ln(s,t,n);return{actual:c,expected:s,manager:a,matches:i}});return{detected:t,tools:r}},un=(e,n)=>{switch(e){case"asdf":return n?{args:["install",n.tool,n.version],bin:"asdf"}:void 0;case"corepack":return n?{args:["prepare",`${n.tool}@${n.version}`,"--activate"],bin:"corepack"}:{args:["prepare","--activate"],bin:"corepack",hint:"reads the packageManager field in package.json"};case"fnm":return n?.tool!=="node"?void 0:{args:["install",n.version],bin:"fnm"};case"mise":return n?{args:["install",`${n.tool}@${n.version}`],bin:"mise"}:void 0;case"none":return;case"nvm":return{args:[],bin:"nvm",hint:"nvm is a shell function — run `nvm install` / `nvm use` from your shell"};case"proto":return n?{args:["install",n.tool,n.version],bin:"proto"}:void 0;case"self-activate":return{args:[],bin:n?.tool??"pnpm",hint:`${n?.tool??"pnpm"} will self-activate on next invocation — no install needed`};case"volta":return n?{args:["install",`${n.tool}@${n.version}`],bin:"volta"}:{args:["install","node@lts"],bin:"volta",hint:"volta pins per-tool; specify <tool>@<version>"};default:{const t=e;throw new Error(`Unknown manager: ${t}`)}}},Mn=(e,n)=>{switch(e){case"asdf":return{args:["local",n.tool,n.version],bin:"asdf",configChange:{file:".tool-versions",hint:`Pins ${n.tool} ${n.version}`}};case"corepack":return n.tool!=="npm"&&n.tool!=="pnpm"&&n.tool!=="yarn"?void 0:{args:["use",`${n.tool}@${n.version}`],bin:"corepack",configChange:{file:"package.json",hint:`Writes packageManager: "${n.tool}@${n.version}"`}};case"fnm":return n.tool==="node"?{args:["use",n.version],bin:"fnm"}:void 0;case"mise":return{args:["use","--",`${n.tool}@${n.version}`],bin:"mise",configChange:{file:".mise.toml",hint:`Pins ${n.tool} ${n.version}`}};case"none":return;case"nvm":return n.tool==="node"?{args:[],bin:"nvm",configChange:{file:".nvmrc",hint:"Write version to .nvmrc manually (nvm doesn't persist)."}}:void 0;case"proto":return{args:["pin",n.tool,n.version],bin:"proto",configChange:{file:".prototools",hint:`Pins ${n.tool} ${n.version}`}};case"self-activate":return{args:[],bin:n.tool,configChange:{file:"package.json",hint:`Pin ${n.tool}@${n.version} in package.json — ${n.tool} will self-activate on next invocation`}};case"volta":return{args:["pin",`${n.tool}@${n.version}`],bin:"volta",configChange:{file:"package.json",hint:`Writes volta.${n.tool}`}};default:{const t=e;throw new Error(`Unknown manager: ${t}`)}}},wn=e=>{for(const n of x[e].binaries){const t=b(n);if(t)return t}},kn=(e,n)=>{const t=x[n].binaries;if(e.installed&&e.binPath&&(e.name==="proto"||e.name==="mise"||e.name==="asdf"||e.name==="volta"||e.name==="fnm"))for(const o of t)try{const s=P(e.binPath,["which",o],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}).trim();if(s)return s}catch{}for(const o of t){const r=b(o);if(r)return r}},I=(e,n)=>{const t=`${e}.${process.pid}.${L(6).toString("hex")}.tmp`;V(t,n);try{q(t,e)}catch(o){try{R(t)}catch{}throw o}},dn=(e,n)=>{const t=e.devEngines;if(n.tool!=="pnpm"||"packageManager"in e||t?.packageManager===void 0)return!1;const o=t.packageManager,s=(Array.isArray(o)?o:[o]).find(c=>c?.name===n.tool);return s?(s.version=n.version,!0):!1},mn=(e,n)=>{if("packageManager"in e)return e.packageManager=n,e;const t={};let o=!1;for(const[r,s]of Object.entries(e))!o&&(r==="dependencies"||r==="devDependencies"||r==="peerDependencies"||r==="optionalDependencies")&&(t.packageManager=n,o=!0),t[r]=s;return o||(t.packageManager=n),t},Tn=(e,n)=>{if(n.tool!=="pnpm"&&n.tool!=="yarn"&&n.tool!=="npm"&&n.tool!=="bun")return;const t=p(e,"package.json");if(!v(t))throw new Error(`Cannot pin ${n.tool}: ${t} does not exist.`);const o=M(t),s=/\n([ \t]+)/.exec(o)?.[1]??" ";let c;try{c=JSON.parse(o)}catch(f){throw new Error(`${t} is not valid JSON — fix it before running \`vis toolchain use\`. Underlying error: ${f.message}`,{cause:f})}const i=`${n.tool}@${n.version}`,a=dn(c,n)?c:mn(c,i),l=o.endsWith(`
|
|
2
|
+
`)?`
|
|
3
|
+
`:"";return I(t,`${JSON.stringify(a,void 0,s)}${l}`),i},Pn=(e,n)=>{const t=p(e,"package.json");if(!v(t))return;const o=M(t);let r;try{r=JSON.parse(o)}catch(a){throw new Error(`${t} is not valid JSON — fix it before running \`vis toolchain use\`. Underlying error: ${a.message}`,{cause:a})}if(r.engines?.[n.tool]===void 0||r.engines[n.tool]===n.version)return;r.engines[n.tool]=n.version;const c=/\n([ \t]+)/.exec(o)?.[1]??" ",i=o.endsWith(`
|
|
4
|
+
`)?`
|
|
5
|
+
`:"";return I(t,`${JSON.stringify(r,void 0,c)}${i}`),n.version},En=e=>{const n=/^([a-z][\w-]*)@(.+)$/i.exec(e.trim());if(!n)return;const t=g(n[1]);if(t)return{source:"vis.config.ts",tool:t,version:n[2]}},vn=async(e,n,t)=>{const o=fn(e,n),r=o.tools.filter(f=>!f.matches);if(r.length===0)return{attempted:[],failed:[],upToDate:!0};const s=o.detected.some(f=>f.installed);if(!(n?.autoInstall??s))return{attempted:[],failed:[],upToDate:!1};const i=[],a=[],l=new Map;for(const f of r){const d=l.get(f.manager.name);d?d.push(f):l.set(f.manager.name,[f])}for(const[f,d]of l){if(f==="self-activate"){for(const{expected:u}of d)t.info(`toolchain: ${u.tool} ${u.version} will self-activate on next ${u.tool} invocation`),i.push(u);continue}if(f==="none"){for(const{expected:u}of d)a.push({error:`no manager can install ${u.tool} — install one of ${J.join(", ")}`,spec:u});continue}if(!o.detected.find(u=>u.name===f)?.installed){for(const{expected:u}of d)a.push({error:`${f} is not on PATH`,spec:u});continue}const $=d.map(u=>({invocation:un(f,u.expected),tool:u})).filter(u=>u.invocation!==void 0);for(const{invocation:u,tool:C}of $){const{expected:m}=C;if(u.bin==="nvm"&&u.args.length===0){const w=F(m.tool);if(w!==void 0&&W(w,m.version)){t.info(`toolchain: ${m.tool} ${w} already satisfies ${m.version}; skipping nvm shell activation`),i.push(m);continue}t.warn(`toolchain: nvm requires a shell-side activation for ${m.tool} ${m.version}. Run \`nvm install\` / \`nvm use\` manually.`),a.push({error:"nvm requires shell-side activation",spec:m});continue}t.info(`toolchain: $ ${u.bin} ${u.args.join(" ")}`);try{P(u.bin,u.args,{cwd:e,stdio:"inherit"}),i.push(m),f==="fnm"&&pn(u.bin,t)}catch(w){a.push({error:w.message,spec:m});break}}}return Y(),{attempted:i,failed:a,upToDate:!1}},_n=async(e,n,t,o=!1)=>{if(o)return;const r=await vn(e,n,t);for(const s of r.failed)t.warn(`toolchain: ${s.spec.tool} ${s.spec.version} — ${s.error}`)},pn=(e,n)=>{const t=process.platform==="win32"?"powershell":"bash";try{const o=P(e,["env","--shell",t],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3});for(const r of o.split(/\r?\n/)){const s=r.trim();if(s==="")continue;const c=/^\$env:([A-Z_]\w*)\s*=\s*(.+)$/i.exec(s);if(c){const[,l,f]=c;process.env[l]=f.replaceAll(/^["']|["']$/g,"");continue}const i=/^set\s+"?([A-Z_]\w*)=(.*?)"?$/i.exec(s);if(i){const[,l,f]=i;process.env[l]=f;continue}const a=/^(?:export\s+)?([A-Z_]\w*)=(.+)$/i.exec(s);if(a){const[,l,f]=a;process.env[l]=f.replaceAll(/^["']|["']$/g,"")}}}catch(o){n.warn(`toolchain: could not activate fnm env (${o.message}). Subsequent tasks may use the previous Node version.`)}};export{J as S,En as a,un as b,ln as c,Mn as d,kn as e,N as f,fn as g,wn as h,yn as p,_n as r,Pn as u,Tn as w};
|