@visulima/vis 1.0.0-alpha.21 → 1.0.0-alpha.23
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 +103 -0
- package/LICENSE.md +204 -9
- package/README.md +21 -4
- package/dashboard/dist/index.html +152 -0
- package/dist/bin.js +1 -1
- package/dist/binx.js +3 -0
- package/dist/config/index.d.ts +208 -28
- package/dist/config/index.js +1 -1
- package/dist/packem_chunks/bin.js +360 -354
- package/dist/packem_chunks/bloom-status.js +2 -0
- package/dist/packem_chunks/bloom-sync.js +2 -0
- package/dist/packem_chunks/cache-attestation.js +1 -0
- package/dist/packem_chunks/config.js +15 -15
- package/dist/packem_chunks/doctor-probe.js +2 -2
- package/dist/packem_chunks/fix.js +3 -3
- package/dist/packem_chunks/handler.js +1 -1
- package/dist/packem_chunks/handler10.js +2 -1
- package/dist/packem_chunks/handler11.js +1 -5
- package/dist/packem_chunks/handler12.js +5 -1
- package/dist/packem_chunks/handler13.js +1 -27
- package/dist/packem_chunks/handler14.js +28 -5
- package/dist/packem_chunks/handler15.js +5 -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 +4 -2
- package/dist/packem_chunks/handler20.js +1 -5
- package/dist/packem_chunks/handler21.js +5 -2
- package/dist/packem_chunks/handler22.js +2 -2
- package/dist/packem_chunks/handler23.js +2 -18
- package/dist/packem_chunks/handler24.js +1 -1
- package/dist/packem_chunks/handler25.js +1 -1
- package/dist/packem_chunks/handler26.js +5 -5
- 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 +4 -4
- package/dist/packem_chunks/handler30.js +3 -3
- package/dist/packem_chunks/handler31.js +4 -4
- package/dist/packem_chunks/handler32.js +3 -3
- package/dist/packem_chunks/handler33.js +1 -1
- package/dist/packem_chunks/handler34.js +24 -24
- package/dist/packem_chunks/handler35.js +5 -3
- package/dist/packem_chunks/handler36.js +21 -6
- package/dist/packem_chunks/handler37.js +60 -21
- package/dist/packem_chunks/handler38.js +6 -428
- package/dist/packem_chunks/handler39.js +708 -6
- package/dist/packem_chunks/handler4.js +6 -8
- package/dist/packem_chunks/handler40.js +11 -11
- package/dist/packem_chunks/handler41.js +286 -10
- package/dist/packem_chunks/handler42.js +11 -11
- package/dist/packem_chunks/handler43.js +10 -25
- package/dist/packem_chunks/handler44.js +25 -24
- package/dist/packem_chunks/handler45.js +23 -212
- package/dist/packem_chunks/handler46.js +2 -2
- package/dist/packem_chunks/handler47.js +1 -1
- package/dist/packem_chunks/handler48.js +53 -46
- package/dist/packem_chunks/handler49.js +6 -6
- package/dist/packem_chunks/handler5.js +8 -1
- package/dist/packem_chunks/handler6.js +1 -1
- package/dist/packem_chunks/handler7.js +1 -1
- package/dist/packem_chunks/handler8.js +1 -1
- package/dist/packem_chunks/handler9.js +1 -2
- package/dist/packem_chunks/heal-accept.js +4 -4
- package/dist/packem_chunks/heal.js +1 -1
- package/dist/packem_chunks/help-command.js +16 -16
- package/dist/packem_chunks/index.js +2 -2
- package/dist/packem_chunks/keys-refresh.js +1 -1
- package/dist/packem_chunks/list.js +2 -2
- package/dist/packem_chunks/loader.js +4 -1
- package/dist/packem_chunks/loader2.js +1 -0
- package/dist/packem_chunks/prune.js +1 -1
- package/dist/packem_chunks/run.js +1 -1
- package/dist/packem_chunks/status.js +2 -2
- package/dist/packem_chunks/sync.js +2 -2
- package/dist/packem_chunks/sync2.js +2 -2
- package/dist/packem_chunks/tripwire.js +2 -2
- package/dist/packem_chunks/verify-lockfile.js +2 -0
- package/dist/packem_shared/{advisories-DsynpacV.js → advisories-U1QKY_tg.js} +1 -1
- package/dist/packem_shared/{ai-analysis-uYuTIIXi.js → ai-analysis-B8pDCOuT.js} +2 -2
- package/dist/packem_shared/ai-fix-DiGSrGKv.js +43 -0
- package/dist/packem_shared/anolilab-text-CAM_E6uK.js +13 -0
- package/dist/packem_shared/applyDefaults-KxZkvlp3.js +1 -0
- package/dist/packem_shared/build-scripts-3E2pmscY.js +1 -0
- package/dist/packem_shared/cyclonedx-B293T7R0.js +4 -0
- package/dist/packem_shared/dependency-scan-BbtivycX.js +1 -0
- package/dist/packem_shared/docker-BhBBfWfc.js +60 -0
- package/dist/packem_shared/failure-log-B0Uh-65U.js +2 -0
- package/dist/packem_shared/index-C1w1GXdS.js +1 -0
- package/dist/packem_shared/index-CZX_II5N.js +29 -0
- package/dist/packem_shared/index.server-B7ETiT4C.js +2 -0
- package/dist/packem_shared/license-zZU7aavK.js +1 -0
- package/dist/packem_shared/{lifecycle-Dv3nAtoD.js → lifecycle-wRE7ymVc.js} +2 -2
- package/dist/packem_shared/{lockfile-C5DYMHVq.js → lockfile-CQLFNyVa.js} +1 -1
- package/dist/packem_shared/manifests-Z3spBpxv.js +1 -0
- package/dist/packem_shared/{min-release-age-BFozFonQ.js → min-release-age-Cz6HbF-I.js} +2 -2
- package/dist/packem_shared/{native-config-sync-Dvi1g2nQ.js → native-config-sync-BOeuyrBj.js} +5 -5
- package/dist/packem_shared/osv-bloom-CyCDpXBl.js +2 -0
- package/dist/packem_shared/pm-runner-CVliR6Ie.js +1 -0
- package/dist/packem_shared/provenance-BcldGs02.js +1 -0
- package/dist/packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js +1 -0
- package/dist/packem_shared/registry-keys-pemEkRM9.js +1 -0
- package/dist/packem_shared/resolve-explicit-2G-2HWtR.js +5 -0
- package/dist/packem_shared/runtime-check-DgXsKCsv.js +1 -0
- package/dist/packem_shared/s1ngularity-Boxkax0D.js +1 -0
- package/dist/packem_shared/scan-progress-EbvmIh4i.js +2 -0
- package/dist/packem_shared/{selectors-B2ISH581.js → selectors-BE2BCnTR.js} +1 -1
- package/dist/packem_shared/signatures-SO-fyExV.js +2 -0
- package/dist/packem_shared/toolchain-Jx2lkAYy.js +5 -0
- package/dist/packem_shared/typosquats-CioMnpnb.js +1 -0
- package/dist/packem_shared/verify-C8EAHql6.js +1 -0
- package/dist/packem_shared/{vis-update-app-CFrlJ3mW.js → vis-update-app-BWA1kA1q.js} +1 -1
- package/index.d.ts +78 -0
- package/index.js +57 -53
- package/package.json +34 -13
- package/schemas/project.schema.json +37 -7
- package/schemas/vis-config.schema.json +2395 -1996
- package/dist/packem_shared/ai-cache-DuwHYx2O.js +0 -1
- package/dist/packem_shared/ai-fix-DzrA-dVz.js +0 -43
- package/dist/packem_shared/applyDefaults-BOVDw1jD.js +0 -1
- package/dist/packem_shared/build-scripts-DsWMSWDs.js +0 -1
- package/dist/packem_shared/cache-directory-DQak1Vjc.js +0 -1
- package/dist/packem_shared/cyclonedx-CiHXuG8M.js +0 -4
- package/dist/packem_shared/dependency-scan-DC3nAFHS.js +0 -1
- package/dist/packem_shared/docker-B-CIN_nj.js +0 -60
- package/dist/packem_shared/failure-log-C3LEMmkq.js +0 -2
- package/dist/packem_shared/flakiness-Dq6K4ymq.js +0 -1
- package/dist/packem_shared/manifests-B0fMp872.js +0 -1
- package/dist/packem_shared/registry-keys-CewRFW0e.js +0 -1
- package/dist/packem_shared/resolve-explicit-CC4Kifk5.js +0 -5
- package/dist/packem_shared/run-summary-utils-BaBGP3bo.js +0 -1
- package/dist/packem_shared/runtime-check-BusAwPb2.js +0 -1
- package/dist/packem_shared/scan-progress-CMynp3eA.js +0 -2
- package/dist/packem_shared/signatures-5ZdjJ2Pu.js +0 -2
- package/dist/packem_shared/toolchain-Cc3cwyLP.js +0 -5
- package/dist/packem_shared/typosquats-BCeR-sLf.js +0 -1
- package/dist/packem_shared/verify-07kUNTuP.js +0 -1
- package/dist/packem_shared/xxh3-DrAUNq4n.js +0 -1
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
var f=Object.defineProperty;var w=(e,a)=>f(e,"name",{value:a,configurable:!0});import{createRequire as k}from"node:module";import{s as N,p as h,ax as M}from"../packem_chunks/bin.js";import{k as R,m as D,g as S,M as E,D as P,a as A,b as C,c as _,d as x,e as L,f as j,h as F,i as V}from"./signatures-5ZdjJ2Pu.js";import{d as B}from"./utils-DrNg0XTR.js";const b=k(import.meta.url),g=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,$=w(e=>{if(typeof g<"u"&&g.versions&&g.versions.node){const[a,n]=g.versions.node.split(".").map(Number);if(a>22||a===22&&n>=3||a===20&&n>=16)return g.getBuiltinModule(e)}return b(e)},"__cjs_getBuiltinModule"),{createInterface:T}=$("node:readline");var I=Object.defineProperty,p=w((e,a)=>I(e,"name",{value:a,configurable:!0}),"s");const O=15,W=p(e=>{if(e===void 0)return!1;const a=e.trim().toLowerCase();return a!==""&&a!=="0"&&a!=="false"&&a!=="no"},"isTruthyEnv"),U=p(e=>{const a=(e.TERM??"").toLowerCase();return a!=="dumb"&&a!=="unknown"&&a!==""},"shouldAnimateCountdown"),Y=p(async e=>{const a=T({input:process.stdin,output:process.stdout});try{return await new Promise(n=>{a.question(e,r=>{n(r.trim().toLowerCase())})})}finally{a.close()}},"defaultReadline"),v=p(async(e,a)=>{const n=await a(e);return n==="y"||n==="yes"},"promptYesNo"),q=p(async(e,a,n,r)=>new Promise(c=>{if(r?.aborted){c(!1);return}const o=U(n)&&a.isTTY!==!1;let s=e;const i=p(()=>{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
|
-
`)},"render");i();const u=setInterval(()=>{if(s-=1,s<=0){clearInterval(u),r?.removeEventListener("abort",l),o&&a.write(`\rContinuing now.
|
|
3
|
-
`),c(!0);return}i()},1e3),l=p(()=>{clearInterval(u),o&&a.write(`\rAborted.
|
|
4
|
-
`),c(!1)},"onAbort");r?.addEventListener("abort",l,{once:!0})}),"runCountdown"),H=p(async(e,a={})=>{if(e.length===0)return{proceed:!0};const n=a.env??process.env,r=a.isTty??!!process.stdin.isTTY,c=a.isCi??N,o=a.strict??!1,s=a.readline??Y,i=a.output??{isTTY:!!process.stdout.isTTY,write:p(m=>process.stdout.write(m),"write")},u=W(n.VIS_DISABLE_AUTO_CONTINUE),l=Number.parseInt(n.VIS_AUTO_CONTINUE_SECONDS??"",10),t=a.countdownSeconds??(Number.isFinite(l)&&l>0?l:O);return e.some(m=>m.severity==="error")?o?{proceed:!1,reason:"errors-present"}:c?{proceed:!1,reason:"errors-present"}:r?await v("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 v("Proceed despite warnings? [y/N] ",s)?{proceed:!0}:{proceed:!1,reason:"user-aborted"}:await q(t,i,n,a.signal)?{proceed:!0}:{proceed:!1,reason:"user-aborted"}:{proceed:!0}},"presentMarshallDecision"),me=p(async(e,a={})=>{if(e.isEmpty())return!0;const n=e.all(),r=a.output??{isTTY:!!process.stdout.isTTY,write:p(c=>process.stdout.write(c),"write")};for(const c of R(n))r.write(`${c}
|
|
5
|
-
`);return(await H(n,{countdownSeconds:a.countdownSeconds,isCi:a.isCi,isTty:a.isTty,output:r,readline:a.readline,signal:a.signal,strict:a.strict})).proceed},"presentMarshallFindings");var G=Object.defineProperty,d=w((e,a)=>G(e,"name",{value:a,configurable:!0}),"o");const z=d(e=>({marshall:"author",message:e.message,packageName:e.packageName,severity:e.severity}),"formatAuthorFinding"),J=d(e=>({marshall:"provenance",message:`Prior version ${e.priorVersionWithProvenance} had provenance but ${e.version} does not.`,packageName:e.packageName,severity:"error",suggestedAction:`Investigate why ${e.version} dropped sigstore attestations.`}),"formatProvenanceFinding"),K=d(e=>{const a=e.newBins.map(n=>n.command).join(", ");return{marshall:"newBin",message:`${e.toVersion} adds new bin script${e.newBins.length===1?"":"s"}: ${a} (prior: ${e.fromVersion}).`,packageName:e.packageName,severity:"warning"}},"formatNewBinFinding"),Q=d(e=>({marshall:"metadata",message:`Missing/invalid metadata: ${e.issues.join(", ")}.`,packageName:e.packageName,severity:"warning"}),"formatMetadataFinding"),X=d(e=>e.kind==="no-data"?{marshall:"downloads",message:"npm stats API returned no monthly download data.",packageName:e.packageName,severity:e.severity}:{marshall:"downloads",message:`Only ${String(e.downloadsLastMonth??0)} downloads in the past month.`,packageName:e.packageName,severity:e.severity},"formatDownloadsFinding"),Z=d(e=>({marshall:"expiredDomains",message:e.kind==="expired"?`Maintainer email domain ${e.domain} (${e.maintainer}) is unregistered — potential hijack risk.`:`Could not verify maintainer email domain ${e.domain} (${e.maintainer}).`,packageName:e.packageName,severity:e.severity}),"formatExpiredDomainsFinding"),ee=d(e=>({marshall:"signatures",message:e.message,packageName:e.packageName,severity:e.severity}),"formatSignatureFinding"),ae=d(e=>({marshall:"archivedRepo",message:e.kind==="archived"?`Source repo ${e.owner}/${e.repo} is archived${e.archivedAt===void 0?"":` (since ${e.archivedAt})`}.`:`Source repo ${e.owner}/${e.repo} returned 404 from GitHub.`,packageName:e.packageName,severity:"warning"}),"formatArchivedRepoFinding"),re=["author","provenance","newBin","metadata","expiredDomains","signatures","archivedRepo"],se=d(e=>re.some(a=>a==="signatures"?e.signatures?.enabled===!0:e[a]?.enabled!==!1),"anyPackumentReaderEnabled"),ne=d(async(e,a,n,r)=>{const c=[...new Set(e.map(o=>o.name))];await D(c,a,async o=>{try{await S(o,{signal:r,workspaceRoot:n})}catch{}})},"prefetchPackuments"),we=d(async(e,a={})=>{const n=new E;if(e.length===0)return n;const r=a.config??{},c=e.map(t=>t.name),o=a.signal,s=a.concurrency??P;se(r)&&await ne(e,s,a.workspaceRoot,o);const i=[],u=[],l=d(t=>{const m=i.length;i.push([]),u.push((async()=>{i[m]=await t()})())},"schedule");r.author?.enabled!==!1&&l(async()=>(await A(e,{allowlist:r.author?.allowlist,concurrency:s,signal:o,thresholds:{dormantErrorDays:r.author?.dormantErrorDays,dormantWarnDays:r.author?.dormantWarnDays,newPublisherWindowDays:r.author?.newPublisherWindowDays,recentVersionErrorDays:r.author?.recentVersionErrorDays,recentVersionWarnDays:r.author?.recentVersionWarnDays},workspaceRoot:a.workspaceRoot})).map(t=>z(t))),r.provenance?.enabled!==!1&&l(async()=>(await C(e,{allowlist:r.provenance?.allowlist,concurrency:s,workspaceRoot:a.workspaceRoot})).map(t=>J(t))),r.newBin?.enabled!==!1&&l(async()=>(await _(e,{allowlist:r.newBin?.allowlist,concurrency:s,workspaceRoot:a.workspaceRoot})).map(t=>K(t))),r.metadata?.enabled!==!1&&l(async()=>(await x(e,{allowlist:r.metadata?.allowlist,checks:r.metadata?.checks,concurrency:s,workspaceRoot:a.workspaceRoot})).map(t=>Q(t))),r.downloads?.enabled!==!1&&l(async()=>(await L(c,{allowlist:r.downloads?.allowlist,concurrency:s,errorThreshold:r.downloads?.errorThreshold,signal:o,warnThreshold:r.downloads?.warnThreshold})).map(t=>X(t))),r.expiredDomains?.enabled!==!1&&l(async()=>(await j(e,{allowDomains:r.expiredDomains?.allowDomains,allowlist:r.expiredDomains?.allowlist,concurrency:s,dnsServers:r.expiredDomains?.dnsServers,perDomainTimeoutMs:r.expiredDomains?.timeoutMs,signal:o,workspaceRoot:a.workspaceRoot})).map(t=>Z(t))),r.signatures?.enabled===!0&&l(async()=>(await F(e,{allowlist:r.signatures?.allowlist,concurrency:s,keysUrl:r.signatures?.keysUrl,signal:o,treatExpiredAs:r.signatures?.treatExpiredAs,workspaceRoot:a.workspaceRoot})).map(t=>ee(t))),r.archivedRepo?.enabled!==!1&&l(async()=>(await V(e,{allowlist:r.archivedRepo?.allowlist,concurrency:s,githubToken:r.archivedRepo?.githubToken,signal:o,workspaceRoot:a.workspaceRoot})).map(t=>ae(t))),await Promise.all(u);for(const t of i)n.addMany(t);return n},"runMarshallPipeline");var oe=Object.defineProperty,y=w((e,a)=>oe(e,"name",{value:a,configurable:!0}),"l");const te=1e4,ie=y(async(e,a=te)=>{const n=new Map;if(e.length===0)return n;const r=new AbortController,c=setTimeout(()=>{r.abort()},a);try{await Promise.all(e.map(async o=>{try{const s=await fetch(`https://registry.npmjs.org/${o}/latest`,{headers:{Accept:"application/json"},signal:r.signal});if(s.ok){const i=await s.json();i.version?n.set(o,i.version):h.debug(`resolveLatestVersions: ${o} returned 200 but no version field; dropping.`)}else h.debug(`resolveLatestVersions: ${o} returned ${String(s.status)}; dropping.`)}catch(s){h.debug(`resolveLatestVersions: ${o} fetch failed (${s instanceof Error?s.message:String(s)}); dropping.`)}}))}finally{clearTimeout(c)}return n},"resolveLatestVersions"),ge=y(async e=>{const a=e.map(s=>B(s)),n=new Map;for(const s of a)if(s.versionSpec){const i=M.coerce(s.versionSpec);i&&n.set(s.name,i.version)}const r=a.filter(s=>!n.has(s.name)).map(s=>s.name),c=await ie(r),o=[];for(const s of a){const i=n.get(s.name)??c.get(s.name);i?o.push({name:s.name,version:i}):h.debug(`resolveExplicitPackages: dropping ${s.name}${s.versionSpec?`@${s.versionSpec}`:""} — neither semver-coerce nor /latest resolved a version.`)}return o},"resolveExplicitPackages");export{ie as a,we as b,me as p,ge as r};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var j=Object.defineProperty;var u=(e,s)=>j(e,"name",{value:s,configurable:!0});import{createRequire as M}from"node:module";import{M as f}from"../packem_chunks/config.js";import{o as p}from"../packem_chunks/bin.js";const _=M(import.meta.url),m=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,g=u(e=>{if(typeof m<"u"&&m.versions&&m.versions.node){const[s,t]=m.versions.node.split(".").map(Number);if(s>22||s===22&&t>=3||s===20&&t>=16)return m.getBuiltinModule(e)}return _(e)},"__cjs_getBuiltinModule"),{readdir:l,stat:h,readFile:y}=g("node:fs/promises");var v=Object.defineProperty,c=u((e,s)=>v(e,"name",{value:s,configurable:!0}),"m");const w=c((e,s)=>e.tasks.find(t=>t.taskId===s),"findTaskInSummary"),d=c((e,s)=>{const t=e??{},n=s??{},i=[],r=[],o=[];for(const a of Object.keys(t))a in n?t[a]!==n[a]&&o.push(a):i.push(a);for(const a of Object.keys(n))a in t||r.push(a);return i.sort(),r.sort(),o.sort(),{added:i,changed:o,removed:r}},"diffHashBuckets"),B=c((e,s)=>({commandChanged:(e?.command??"")!==(s?.command??""),implicitDeps:d(e?.implicitDeps,s?.implicitDeps),nodes:d(e?.nodes,s?.nodes),runtime:d(e?.runtime,s?.runtime)}),"diffHashDetails"),D=c(async(e,s)=>{const t=f(p(e),`${s}.json`);try{const n=await y(t,"utf8");return JSON.parse(n)}catch{return}},"readRunSummaryById"),I=c(async(e,s)=>{const t=p(e);let n;try{n=await l(t)}catch{return}const i=[];for(const r of n){if(!r.endsWith(".json")||s!==void 0&&r===`${s}.json`)continue;const o=f(t,r);try{const a=await h(o);a.isFile()&&i.push({mtimeMs:a.mtimeMs,path:o})}catch{}}if(i.length!==0){i.sort((r,o)=>o.mtimeMs-r.mtimeMs);try{const r=await y(i[0].path,"utf8");return JSON.parse(r)}catch{return}}},"readPreviousRunSummary"),O=c(async e=>{const s=p(e);let t;try{t=await l(s)}catch{return[]}const n=[];for(const i of t){if(!i.endsWith(".json"))continue;const r=f(s,i);try{const o=await h(r);o.isFile()&&n.push({id:i.slice(0,-5),mtimeMs:o.mtimeMs,path:r})}catch{}}return n.sort((i,r)=>r.mtimeMs-i.mtimeMs),n},"listRunSummaries");export{I as a,B as d,w as f,O as l,D as r};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var d=Object.defineProperty;var f=(t,s)=>d(t,"name",{value:s,configurable:!0});import{M as m,i as h,$ as k,n as v}from"../packem_chunks/config.js";var $=Object.defineProperty,g=f((t,s)=>$(t,"name",{value:s,configurable:!0}),"p");const M=g(t=>{for(const s of[".nvmrc",".node-version"]){const i=m(t,s);if(h(i))try{return k(i).trim().replace(/^v/,"")}catch{}}},"readNodeVersionFile"),l=g((t,s)=>{const i=t.split(/[.\-+]/).map(r=>Number.parseInt(r,10)||0),c=s.split(/[.\-+]/).map(r=>Number.parseInt(r,10)||0),e=Math.max(i.length,c.length);for(let r=0;r<e;r++){const n=i[r]??0,a=c[r]??0;if(n!==a)return n-a}return 0},"compareVersions"),b=g((t,s)=>{const i=s.trim();if(i===""||i==="*")return!0;const c=i.split(/\s+/).filter(Boolean);for(const e of c)if(e.startsWith(">=")){if(l(t,e.slice(2).trim())<0)return!1}else if(e.startsWith("<=")){if(l(t,e.slice(2).trim())>0)return!1}else if(e.startsWith(">")){if(l(t,e.slice(1).trim())<=0)return!1}else if(e.startsWith("<")){if(l(t,e.slice(1).trim())>=0)return!1}else if(/^\d/.test(e)){const r=t.split("."),n=e.split(".");for(const[a,o]of n.entries())if(o!==r[a])return!1}return!0},"satisfiesRange"),x=g(t=>{const s=[],i=m(t,"package.json");let c;try{c=v(i)}catch{return s}const e=process.versions.node;if(c.engines?.node){const n=c.engines.node;b(e,n)||s.push({actual:e,expected:n,kind:"node",message:`package.json engines.node requires ${n}, but the current Node.js is ${e}.`,severity:"error"})}const r=M(t);if(r){const[n,a]=r.split("."),[o,p]=e.split(".");(n!==o||a!==void 0&&a!==p)&&s.push({actual:e,expected:r,kind:"node",message:`.nvmrc pins Node ${r} but the current Node.js is ${e}. Run \`nvm use\` or switch runtimes.`,severity:"warning"})}if(c.packageManager){const[n,a]=c.packageManager.split("@"),o=(process.env.npm_config_user_agent??"").split(" ")[0]??"",[p,u]=o.split("/");p&&n&&p!==n?s.push({actual:p,expected:n,kind:"packageManager",message:`package.json packageManager pins ${c.packageManager} but the current invocation is ${o}. Install the correct package manager.`,severity:"error"}):u&&a&&u!==a&&s.push({actual:u,expected:a,kind:"packageManager",message:`package.json packageManager pins ${n}@${a} but the current invocation uses ${n}@${u}.`,severity:"warning"})}return s},"checkRuntimeVersions");export{x as c};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var x=Object.defineProperty;var g=(t,e)=>x(t,"name",{value:e,configurable:!0});import{e as C,ag as d,E as b,I as $,a as E,s as P}from"../packem_chunks/bin.js";import{render as j}from"@visulima/tui";import S from"react";import{jsx as n,jsxs as y}from"react/jsx-runtime";import{Box as m}from"@visulima/tui/components/box";import{Spinner as O}from"@visulima/tui/components/spinner";import{Text as l}from"@visulima/tui/components/text";import{D as v,W as R,T as A,C as D}from"./symbols-CQmER5MT.js";var I=Object.defineProperty,Y=g((t,e)=>I(t,"name",{value:e,configurable:!0}),"l");const T=Y(({rows:t})=>n(m,{flexDirection:"column",children:t.map(e=>{let s;switch(e.status){case"error":{s=n(l,{color:"red",children:D});break}case"ok":{s=n(l,{color:"green",children:A});break}case"running":{s=n(l,{color:"white",children:n(O,{type:"dots"})});break}case"warn":{s=n(l,{color:"yellow",children:R});break}default:{s=n(l,{dimColor:!0,children:v});break}}return y(m,{children:[n(m,{width:3,children:s}),n(m,{flexGrow:1,children:n(l,{children:e.label})}),e.summary?n(m,{children:y(l,{dimColor:!0,children:[v," ",e.summary]})}):null]},e.id)})}),"ScanProgressApp");var B=Object.defineProperty,i=g((t,e)=>B(t,"name",{value:e,configurable:!0}),"e");const G={error:E(d.failure),ok:$(d.success),pending:b(d.dash),skip:b(d.dash),warn:C(d.warning)},M=i((t,e,s)=>{const p=s?`${t} ${b(`— ${s}`)}`:t;return` ${G[e]} ${p}
|
|
2
|
-
`},"formatStaticRow"),Q=i((t,e={})=>{const s=e.stream??process.stderr,p=typeof s.isTTY=="boolean"&&s.isTTY&&!P,k=e.live??p,o=new Map;for(const r of t)o.set(r.id,{id:r.id,label:r.label,status:"pending"});if(!k||t.length===0)return{finish:i((r,a,f)=>{const c=o.get(r);c&&(o.set(r,{...c,status:a,summary:f}),s.write(M(c.label,a,f)))},"finish"),start:i(r=>{const a=o.get(r);a&&o.set(r,{...a,status:"running"})},"start"),stop:i(()=>{},"stop")};const w=i(()=>t.map(r=>o.get(r.id)),"buildRows");let u=j(S.createElement(T,{rows:w()}),{interactive:!0,patchConsole:!1});const h=i(()=>{u?.rerender(S.createElement(T,{rows:w()}))},"rerender");return{finish:i((r,a,f)=>{const c=o.get(r);c&&(o.set(r,{...c,status:a,summary:f}),h())},"finish"),start:i(r=>{const a=o.get(r);a&&(o.set(r,{...a,status:"running"}),h())},"start"),stop:i(()=>{u&&(h(),u.unmount(),u=void 0)},"stop")}},"startScanProgress");export{Q as s};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var ue=Object.defineProperty;var h=(r,e)=>ue(r,"name",{value:e,configurable:!0});import{createRequire as fe}from"node:module";import{a as re,e as U,n as _,ax as p,i as A}from"../packem_chunks/bin.js";import{M as w,i as P,n as W,b as V}from"../packem_chunks/config.js";import{f as ye}from"./registry-keys-CewRFW0e.js";const ve=fe(import.meta.url),x=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,H=h(r=>{if(typeof x<"u"&&x.versions&&x.versions.node){const[e,t]=x.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return x.getBuiltinModule(r)}return ve(r)},"__cjs_getBuiltinModule"),{rmSync:y,writeFileSync:L,readdirSync:B}=H("node:fs"),{createHash:ge,createPublicKey:he,createVerify:me}=H("node:crypto"),{Resolver:pe}=H("node:dns/promises");var we=Object.defineProperty,z=h((r,e)=>we(r,"name",{value:e,configurable:!0}),"t$2");class Cr{static{h(this,"MarshallFindings")}static{z(this,"MarshallFindings")}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 Ur=z(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(re(`${String(t.length)} error${t.length===1?"":"s"}:`));for(const s of t)e.push(` ${re("✗")} [${s.marshall}] ${s.packageName}: ${s.message}`),s.suggestedAction!==void 0&&e.push(` ${U("→")} ${s.suggestedAction}`)}if(n.length>0){t.length>0&&e.push(""),e.push(U(`${String(n.length)} warning${n.length===1?"":"s"}:`));for(const s of n)e.push(` ${U("⚠")} [${s.marshall}] ${s.packageName}: ${s.message}`),s.suggestedAction!==void 0&&e.push(` ${U("→")} ${s.suggestedAction}`)}return e},"formatMarshallFindingsAsTable"),Fr=z(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")}),"formatMarshallFindingsAsJson");var ke=Object.defineProperty,te=h((r,e)=>ke(r,"name",{value:e,configurable:!0}),"o$3");const N=8,j=te(async(r,e,t)=>{if(r.length===0)return[];const n=Math.max(1,Math.min(e,r.length)),s=Array.from({length:r.length});let o=0;const c=te(async()=>{for(;o<r.length;){const a=o;o+=1;const i=r[a];s[a]=await t(i,a)}},"worker");return await Promise.all(Array.from({length:n},()=>c())),s},"mapWithConcurrency");var $e=Object.defineProperty,$=h((r,e)=>$e(r,"name",{value:e,configurable:!0}),"o$2");const be=1800*1e3,Me=15e3,J=$(()=>w(_(),"packuments"),"getPackumentCacheDir"),ie=$(r=>w(J(),`${encodeURIComponent(r)}.json`),"cacheFilePath"),De=$(r=>{const e=ie(r);if(P(e))try{const t=W(e);if(Date.now()-t.createdAt>t.ttlMs){y(e,{force:!0});return}return t.packument}catch{y(e,{force:!0});return}},"readCached"),Re=$((r,e,t)=>{V(J());const n={createdAt:Date.now(),packument:e,ttlMs:t};L(ie(r),JSON.stringify(n),"utf8")},"writeCached"),Ae=$(r=>{const e={},t=r.versions??{};for(const[s,o]of Object.entries(t)){const c=o.dist,a={version:s};if(o._npmUser!==void 0&&(a._npmUser=o._npmUser),o.maintainers!==void 0&&(a.maintainers=o.maintainers),o.bin!==void 0&&(a.bin=o.bin),c!==void 0){const i={};c.signatures!==void 0&&(i.signatures=c.signatures),c.attestations!==void 0&&(i.attestations=c.attestations),typeof c.integrity=="string"&&(i.integrity=c.integrity),typeof c.tarball=="string"&&(i.tarball=c.tarball),a.dist=i}o.repository!==void 0&&(a.repository=o.repository),o.license!==void 0&&(a.license=o.license),typeof o.readme=="string"&&(a.readme=o.readme),typeof o.readmeFilename=="string"&&(a.readmeFilename=o.readmeFilename),typeof o.private=="boolean"&&(a.private=o.private),typeof o.deprecated=="string"&&(a.deprecated=o.deprecated),e[s]=a}const n={name:typeof r.name=="string"?r.name:"",versions:e};return r["dist-tags"]!==void 0&&(n["dist-tags"]=r["dist-tags"]),r.time!==void 0&&(n.time=r.time),typeof r.readme=="string"&&(n.readme=r.readme),n},"stripPackument"),Pe=$(r=>{const e={Accept:"application/json"};return r!==void 0&&r!==""&&(e.Authorization=`Bearer ${r}`),e},"buildHeaders"),Ne=$(async(r,e)=>{if(e.registryUrl!==void 0)return{authToken:e.authToken,url:e.registryUrl};if(e.workspaceRoot!==void 0){const{getRegistryForPackage:t,loadNpmrc:n}=await import("../packem_chunks/bin.js").then(a=>a.bF),s=n(e.workspaceRoot),{token:o,url:c}=t(r,s);return{authToken:e.authToken??o,url:c}}return{authToken:e.authToken,url:"https://registry.npmjs.org"}},"resolveRegistry"),E=$(async(r,e={})=>{const t=e.cacheTtlMs??be,n=De(r);if(n!==void 0)return n;const s=await Ne(r,e),o=`${s.url.endsWith("/")?s.url.slice(0,-1):s.url}/${r.replace("/","%2f")}`,c=new AbortController,a=setTimeout(()=>{c.abort()},Me),i=$(()=>{c.abort()},"abortListener");e.signal?.addEventListener("abort",i,{once:!0});try{const d=await fetch(o,{headers:Pe(s.authToken),signal:c.signal});if(d.status===404)return;if(!d.ok)throw new Error(`Registry returned ${String(d.status)} for ${r}`);const l=await d.json(),u=Ae(l);return Re(r,u,t),u}finally{clearTimeout(a),e.signal?.removeEventListener("abort",i)}},"getPackument"),_r=$((r,e)=>{const t=Object.keys(r.versions);if(t.length===0)return;if(e===void 0||e===""||e==="latest")return r["dist-tags"]?.latest??t.at(-1);const n=r["dist-tags"]?.[e];return n!==void 0?n:Object.hasOwn(r.versions,e)?e:p.maxSatisfying(t,e)??void 0},"resolveVersionRange");$(()=>{const r=J();if(!P(r))return 0;let e=0;for(const t of B(r))t.endsWith(".json")&&(y(w(r,t),{force:!0}),e+=1);return e},"clearPackumentCache");var je=Object.defineProperty,b=h((r,e)=>je(r,"name",{value:e,configurable:!0}),"o$1");const Ee=1440*60*1e3,Oe=15e3,Te="https://api.github.com/repos",K=b(()=>w(_(),"archived-repo"),"getArchivedRepoCacheDir"),ae=b((r,e)=>w(K(),`${encodeURIComponent(r)}__${encodeURIComponent(e)}.json`),"cacheFilePath"),Se=b((r,e)=>{const t=ae(r,e);if(P(t))try{const n=W(t);if(Date.now()-n.createdAt>n.ttlMs){y(t,{force:!0});return}return n}catch{y(t,{force:!0});return}},"readCachedRepo"),ne=b((r,e,t,n)=>{V(K());const s={createdAt:Date.now(),ttlMs:n,...t};L(ae(r,e),JSON.stringify(s),"utf8")},"writeCachedRepo"),xe=b(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]}},"parseGitHubUrl"),Ce=b(async(r,e,t,n)=>{const s=`${Te}/${encodeURIComponent(r)}/${encodeURIComponent(e)}`,o=new AbortController,c=setTimeout(()=>{o.abort()},Oe),a=b(()=>{o.abort()},"abortListener");n?.addEventListener("abort",a,{once:!0});const i={Accept:"application/vnd.github+json","User-Agent":"visulima-vis-marshall"};t!==void 0&&t!==""&&(i.Authorization=`Bearer ${t}`);try{const d=await fetch(s,{headers:i,signal:o.signal});if(d.status===404)return{kind:"missing"};if(!d.ok)return{kind:"transient-error"};const l=await d.json(),u=l.archived===!0,f=typeof l.archived_at=="string"?l.archived_at:void 0;return{archived:u,archivedAt:f,kind:"ok"}}catch{return{kind:"transient-error"}}finally{clearTimeout(c),n?.removeEventListener("abort",a)}},"fetchGitHubRepo"),Ue=b((r,e)=>e!==void 0&&r.includes(e)?e:r.at(-1),"resolveLatestVersion"),Lr=b(async(r,e={})=>{if(A("archivedRepo"))return[];const t=new Set(e.allowlist),n=e.cacheTtlMs??Ee,s=e.githubToken??process.env.GITHUB_TOKEN,o=e.concurrency??N,c=new Map,a=b(async(i,d)=>{const l=`${i}/${d}`;let u=c.get(l);return u===void 0&&(u=(async()=>{const f=Se(i,d);if(f!==void 0)return f.missing===!0?{archived:!1,kind:"missing"}:{archived:f.archived,archivedAt:f.archivedAt,kind:"ok"};const v=await Ce(i,d,s,e.signal);return v.kind==="missing"?ne(i,d,{archived:!1,missing:!0},n):v.kind==="ok"&&ne(i,d,{archived:v.archived===!0,archivedAt:v.archivedAt},n),v})(),c.set(l,u)),u},"fetchRepoOnce");return(await j(r,o,async({name:i,version:d})=>{if(t.has(i))return;const l=await E(i,{workspaceRoot:e.workspaceRoot});if(l===void 0)return;const u=l.versions[d]??l.versions[Ue(Object.keys(l.versions),l["dist-tags"]?.latest)??""];if(u===void 0)return;const f=xe(u.repository?.url);if(f===void 0)return;const v=await a(f.owner,f.repo);if(v.kind!=="transient-error"){if(v.kind==="missing")return{kind:"missing-repo",owner:f.owner,packageName:i,repo:f.repo};if(v.archived===!0)return{...v.archivedAt===void 0?{}:{archivedAt:v.archivedAt},kind:"archived",owner:f.owner,packageName:i,repo:f.repo}}})).filter(i=>i!==void 0)},"runArchivedRepoMarshall");b(()=>{const r=K();if(!P(r))return 0;let e=0;for(const t of B(r))t.endsWith(".json")&&(y(w(r,t),{force:!0}),e+=1);return e},"clearArchivedRepoCache");var Fe=Object.defineProperty,S=h((r,e)=>Fe(r,"name",{value:e,configurable:!0}),"h$2");const _e={dormantErrorDays:274,dormantWarnDays:183,newPublisherWindowDays:21,recentVersionErrorDays:7,recentVersionWarnDays:30},Le=1440*60*1e3,G=S((r,e)=>(r-e)/Le,"daysBetween"),F=S(r=>{if(r!==void 0)return r.email??r.name},"userIdentity"),Be=S((r,e,t,n,s)=>{const o=r.time?.[t];if(o===void 0)return;const c=new Date(o).getTime();if(!Number.isFinite(c))return;const a=G(n,c);if(a<s.recentVersionErrorDays)return{kind:"recent-version",message:`published ${a.toFixed(1)} days ago (error threshold: ${String(s.recentVersionErrorDays)})`,packageName:e,severity:"error",version:t};if(a<s.recentVersionWarnDays)return{kind:"recent-version",message:`published ${a.toFixed(1)} days ago (warn threshold: ${String(s.recentVersionWarnDays)})`,packageName:e,severity:"warning",version:t}},"checkRecentVersion"),We=S((r,e,t,n,s)=>{const o=r.versions[t],c=F(o?._npmUser);if(c===void 0)return;const a=Object.keys(r.versions).filter(u=>p.valid(u)!==null).filter(u=>p.lt(u,t));if(a.length===0||a.some(u=>F(r.versions[u]?._npmUser)===c))return;const i=r.time?.[a[0]??""];if(i===void 0)return;const d=new Date(i).getTime();if(!Number.isFinite(d))return;const l=G(n,d);if(!(l<=s.newPublisherWindowDays))return{kind:"new-publisher",message:`first publish by ${c} on a ${l.toFixed(0)}-day-old package`,packageName:e,severity:"error",version:t}},"checkNewPublisher"),Ve=S((r,e,t,n,s)=>{const o=r.versions[t],c=F(o?._npmUser);if(c===void 0)return;const a=[];for(const[l,u]of Object.entries(r.versions)){if(l===t||F(u._npmUser)!==c)continue;const f=r.time?.[l];if(f===void 0)continue;const v=new Date(f).getTime();Number.isFinite(v)&&a.push(v)}if(a.length===0)return;const i=Math.max(...a),d=G(n,i);if(d>=s.dormantErrorDays)return{kind:"dormant-maintainer",message:`previous release by ${c} was ${d.toFixed(0)} days ago (error threshold: ${String(s.dormantErrorDays)})`,packageName:e,severity:"error",version:t};if(d>=s.dormantWarnDays)return{kind:"dormant-maintainer",message:`previous release by ${c} was ${d.toFixed(0)} days ago (warn threshold: ${String(s.dormantWarnDays)})`,packageName:e,severity:"warning",version:t}},"checkDormantMaintainer"),Br=S(async(r,e={})=>{if(A("author"))return[];const t=new Set(e.allowlist),n={..._e,...e.thresholds},s=e.now??(()=>Date.now()),o=e.concurrency??N;return(await j(r,o,async({name:c,version:a})=>{if(t.has(c))return[];const i=await E(c,{cacheTtlMs:e.cacheTtlMs,signal:e.signal,workspaceRoot:e.workspaceRoot});if(i===void 0)return[];const d=s(),l=[],u=Be(i,c,a,d,n);u!==void 0&&l.push(u);const f=We(i,c,a,d,n);f!==void 0&&l.push(f);const v=Ve(i,c,a,d,n);return v!==void 0&&l.push(v),l})).flat()},"runAuthorMarshall");var Ie=Object.defineProperty,R=h((r,e)=>Ie(r,"name",{value:e,configurable:!0}),"t$1");const He=1440*60*1e3,ze=15e3,Je=20,Ke=1e4,Ge="https://api.npmjs.org/downloads/point/last-month",q=R(()=>w(_(),"downloads"),"getDownloadsCacheDir"),oe=R(r=>w(q(),`${encodeURIComponent(r)}.json`),"cacheFilePath"),qe=R(r=>{const e=oe(r);if(P(e))try{const t=W(e);if(Date.now()-t.createdAt>t.ttlMs){y(e,{force:!0});return}return t.downloads}catch{y(e,{force:!0});return}},"readCachedDownloads"),Ye=R((r,e,t)=>{V(q());const n={createdAt:Date.now(),downloads:e,observedAt:new Date().toISOString(),ttlMs:t};L(oe(r),JSON.stringify(n),"utf8")},"writeCachedDownloads"),Xe=R(async(r,e)=>{const t=`${Ge}/${encodeURIComponent(r)}`,n=new AbortController,s=setTimeout(()=>{n.abort()},ze),o=R(()=>{n.abort()},"abortListener");e?.addEventListener("abort",o,{once:!0});try{const c=await fetch(t,{signal:n.signal});if(c.status===404)return{kind:"no-data"};if(!c.ok)return{kind:"error"};const a=await c.json();return typeof a.downloads=="number"?{downloads:a.downloads,kind:"ok"}:{kind:"no-data"}}catch{return{kind:"error"}}finally{clearTimeout(s),e?.removeEventListener("abort",o)}},"fetchDownloads"),Wr=R(async(r,e={})=>{if(A("downloads"))return[];const t=new Set(e.allowlist),n=e.errorThreshold??Je,s=e.warnThreshold??Ke,o=e.cacheTtlMs??He,c=e.concurrency??N;return(await j(r,c,async a=>{if(t.has(a))return;let i=qe(a);if(i===void 0){const d=await Xe(a,e.signal);if(d.kind==="no-data"||d.kind==="error")return{downloadsLastMonth:void 0,kind:"no-data",packageName:a,severity:"warning"};i=d.downloads??0,Ye(a,i,o)}if(i<n)return{downloadsLastMonth:i,kind:"below-error",packageName:a,severity:"error"};if(i<s)return{downloadsLastMonth:i,kind:"below-warning",packageName:a,severity:"warning"}})).filter(a=>a!==void 0)},"runDownloadsMarshall");R(()=>{const r=q();if(!P(r))return 0;let e=0;for(const t of B(r))t.endsWith(".json")&&(y(w(r,t),{force:!0}),e+=1);return e},"clearDownloadsCache");var Qe=Object.defineProperty,m=h((r,e)=>Qe(r,"name",{value:e,configurable:!0}),"t");const Ze=1440*60*1e3,er=4e3,rr=["1.1.1.1","8.8.8.8"],Y=m(()=>w(_(),"expired-domains"),"getExpiredDomainsCacheDir"),ce=m(r=>{const e=ge("sha256").update(r).digest("hex").slice(0,12);return w(Y(),`${e}.json`)},"cacheFilePath"),tr=m(r=>{const e=ce(r);if(P(e))try{const t=W(e);if(Date.now()-t.createdAt>t.ttlMs){y(e,{force:!0});return}return t}catch{y(e,{force:!0});return}},"readCachedDomain"),nr=m((r,e,t)=>{V(Y());const n={createdAt:Date.now(),outcome:e,ttlMs:t};L(ce(r),JSON.stringify(n),"utf8")},"writeCachedDomain"),sr=m(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},"extractDomain"),ir=m((r,e)=>{const t=[];e!==void 0&&t.push(e);for(const n of r??[])t.push(n);return t},"collectMaintainers"),ar=m(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)}},"withTimeout"),or=m(r=>{if(r===null||typeof r!="object")return!1;const{code:e}=r;return e==="ENOTFOUND"||e==="ENODATA"||e==="NXDOMAIN"},"isExpiredError"),cr=m(async(r,e,t)=>{try{const n=await ar(r.resolveNs(e),t);return Array.isArray(n)&&n.length>0?{kind:"ok"}:{kind:"expired"}}catch(n){return or(n)?{kind:"expired"}:{kind:"transient-error"}}},"resolveDomain"),dr=m((r,e)=>e!==void 0&&r.includes(e)?e:r.at(-1),"resolveLatestVersion"),Vr=m(async(r,e={})=>{if(A("expiredDomains"))return[];const t=new Set(e.allowlist),n=new Set((e.allowDomains??[]).map(u=>u.toLowerCase())),s=e.cacheTtlMs??Ze,o=e.perDomainTimeoutMs??er,c=e.dnsServers??rr,a=e.concurrency??N,i=e.createResolver===void 0?new pe:e.createResolver();typeof i.setServers=="function"&&i.setServers(c);const d=new Map,l=m(async u=>{let f=d.get(u);return f===void 0&&(f=(async()=>{const v=tr(u);if(v!==void 0)return{kind:v.outcome==="ok"?"ok":"expired"};const g=await cr(i,u,o);return g.kind!=="transient-error"&&nr(u,g.kind,s),g})(),d.set(u,f)),f},"resolveDomainOnce");return(await j(r,a,async({name:u,version:f})=>{if(t.has(u))return[];const v=await E(u,{workspaceRoot:e.workspaceRoot});if(v===void 0)return[];const g=v.versions[f]??v.versions[dr(Object.keys(v.versions),v["dist-tags"]?.latest)??""];if(g===void 0)return[];const M=ir(g.maintainers,g._npmUser),k=new Set,D=[];for(const C of M){const T=sr(C.email);if(T===void 0||n.has(T))continue;const Z=`${T}:${C.email??""}`;if(k.has(Z))continue;k.add(Z);const ee=await l(T);ee.kind==="expired"?D.push({domain:T,kind:"expired",maintainer:C.email??"",packageName:u,severity:"error"}):ee.kind==="transient-error"&&D.push({domain:T,kind:"unresolved",maintainer:C.email??"",packageName:u,severity:"warning"})}return D})).flat()},"runExpiredDomainsMarshall");m(()=>{const r=Y();if(!P(r))return 0;let e=0;for(const t of B(r))t.endsWith(".json")&&(y(w(r,t),{force:!0}),e+=1);return e},"clearExpiredDomainsCache");var lr=Object.defineProperty,O=h((r,e)=>lr(r,"name",{value:e,configurable:!0}),"s");const ur=["readme","license","repo"],fr=["ERROR: No README data found!","# Security holding package"],vr=O(r=>{const e=r.trim();return e===""?!0:fr.some(t=>e.startsWith(t))},"isPlaceholderReadme"),gr=O((r,e)=>{if(typeof e.readme=="string")return e.readme;if(typeof r.readme=="string")return r.readme},"getReadme"),hr=O((r,e)=>{const t=gr(r,e);if(t===void 0)return"missing-readme";if(vr(t))return"placeholder-readme"},"checkReadme"),mr=O(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"},"checkLicense"),pr=O(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"},"checkRepository"),yr=O(r=>{const e=r["dist-tags"]?.latest;return e!==void 0&&Object.hasOwn(r.versions,e)?e:Object.keys(r.versions).at(-1)},"resolveLatestVersion"),Ir=O(async(r,e={})=>{if(A("metadata"))return[];const t=new Set(e.allowlist),n=new Set(e.checks??ur),s=e.concurrency??N;return(await j(r,s,async({name:o,version:c})=>{if(t.has(o))return;const a=await E(o,{workspaceRoot:e.workspaceRoot});if(a===void 0)return;const i=a.versions[c]??a.versions[yr(a)??""];if(i===void 0||i.private===!0)return;const d=[];if(n.has("readme")){const l=hr(a,i);l!==void 0&&d.push(l)}if(n.has("license")){const l=mr(i);l!==void 0&&d.push(l)}if(n.has("repo")){const l=pr(i);l!==void 0&&d.push(l)}if(d.length!==0)return{issues:d,packageName:o,version:c}})).filter(o=>o!==void 0)},"runMetadataMarshall");var wr=Object.defineProperty,X=h((r,e)=>wr(r,"name",{value:e,configurable:!0}),"o");const se=X((r,e)=>r===void 0?{}:typeof r=="string"?{[e.startsWith("@")?e.split("/").at(1)??e:e]:r}:{...r},"normalizeBin"),kr=X((r,e)=>p.valid(e)?Object.keys(r.versions).filter(t=>p.valid(t)!==null&&p.lt(t,e)).sort((t,n)=>p.lt(t,n)?1:-1)[0]:void 0,"findImmediatelyPriorVersion"),Hr=X(async(r,e={})=>{if(A("newBin"))return[];const t=new Set(e.allowlist),n=new Set(e.allowBins),s=e.concurrency??N;return(await j(r,s,async({name:o,version:c})=>{if(t.has(o))return;const a=await E(o,{workspaceRoot:e.workspaceRoot});if(a===void 0)return;const i=a.versions[c];if(i===void 0)return;const d=kr(a,c);if(d===void 0)return;const l=a.versions[d];if(l===void 0)return;const u=se(i.bin,o),f=se(l.bin,o),v=Object.entries(u).filter(([g])=>!(g in f)).filter(([g])=>!n.has(g)).map(([g,M])=>({command:M,name:g}));if(v.length!==0)return{fromVersion:d,newBins:v,packageName:o,toVersion:c}})).filter(o=>o!==void 0)},"runNewBinMarshall");var $r=Object.defineProperty,Q=h((r,e)=>$r(r,"name",{value:e,configurable:!0}),"i");const de=Q((r,e)=>r.versions[e]?.dist?.attestations?.provenance!==void 0,"hasProvenance"),br=Q((r,e)=>p.valid(e)?Object.keys(r.versions).filter(t=>p.valid(t)!==null&&p.lt(t,e)).filter(t=>p.satisfies(t,"*",{includePrerelease:!1})).filter(t=>de(r,t)).sort((t,n)=>p.lt(t,n)?1:-1)[0]:void 0,"findNewestPriorWithAttestations"),zr=Q(async(r,e={})=>{if(A("provenance"))return[];const t=new Set(e.allowlist),n=e.concurrency??N;return(await j(r,n,async({name:s,version:o})=>{if(t.has(s))return;const c=await E(s,{workspaceRoot:e.workspaceRoot});if(c===void 0||de(c,o))return;const a=br(c,o);if(a!==void 0)return{packageName:s,priorVersionWithProvenance:a,version:o}})).filter(s=>s!==void 0)},"runProvenanceMarshall");var Mr=Object.defineProperty,le=h((r,e)=>Mr(r,"name",{value:e,configurable:!0}),"n");const Dr=le(r=>{const e=["-----BEGIN PUBLIC KEY-----"],t=r.replaceAll(/\s+/g,"");for(let n=0;n<t.length;n+=64)e.push(t.slice(n,n+64));return e.push("-----END PUBLIC KEY-----"),e.join(`
|
|
2
|
-
`)},"wrapSpkiPem"),Rr=le(({keyBase64:r,message:e,signatureBase64:t})=>{try{const n=he({format:"pem",key:Dr(r)}),s=me("SHA256");return s.update(e),s.end(),s.verify(n,Buffer.from(t,"base64"))}catch{return!1}},"verifyEcdsaSignature");var Ar=Object.defineProperty,I=h((r,e)=>Ar(r,"name",{value:e,configurable:!0}),"g");const Pr=I((r,e)=>{if(r.expires===void 0||r.expires==="")return!1;const t=Date.parse(r.expires);return Number.isNaN(t)?!1:t<=e},"isKeyExpired"),Nr=I((r,e,t)=>`${r}@${e}:${t}`,"buildSignedMessage"),jr=I((r,e)=>e!==void 0&&r.includes(e)?e:r.at(-1),"resolveLatestVersion"),Jr=I(async(r,e={})=>{if(A("signatures"))return[];const t=new Set(e.allowlist),n=e.treatExpiredAs??"warning",s=e.concurrency??N,o=await ye({keysUrl:e.keysUrl,signal:e.signal,ttlMs:e.keysTtlMs});if(o===void 0)return r.filter(({name:i})=>!t.has(i)).map(({name:i,version:d})=>({code:"fetch-failed",message:"Could not fetch registry signing keys.",packageName:i,severity:"warning",version:d}));const c=new Map;for(const i of o.keys)c.set(i.keyid,i);const a=Date.now();return(await j(r,s,async({name:i,version:d})=>{if(t.has(i))return[];const l=await E(i,{workspaceRoot:e.workspaceRoot});if(l===void 0)return[];const u=l.versions[d]??l.versions[jr(Object.keys(l.versions),l["dist-tags"]?.latest)??""];if(u===void 0)return[];const f=u.dist?.signatures,v=u.dist?.integrity;if(f===void 0||f.length===0)return[{code:"missing-signature",message:`Package ${i}@${d} has no dist.signatures from the registry.`,packageName:i,severity:"warning",version:d}];if(typeof v!="string"||v==="")return[{code:"missing-signature",message:`Package ${i}@${d} has signatures but no dist.integrity to verify against.`,packageName:i,severity:"warning",version:d}];const g=Nr(i,d,v),M=[];for(const k of f){const D=c.get(k.keyid);if(D===void 0){M.push({code:"unknown-keyid",keyid:k.keyid,message:`Package ${i}@${d} was signed with an unrecognized keyid (${k.keyid}).`,packageName:i,severity:"error",version:d});continue}if(Pr(D,a)){M.push({code:"expired-key",keyid:k.keyid,message:`Package ${i}@${d} was signed with an expired key (${k.keyid}, expired ${D.expires??"unknown"}).`,packageName:i,severity:n,version:d});continue}Rr({keyBase64:D.key,message:g,signatureBase64:k.sig})||M.push({code:"invalid-signature",keyid:k.keyid,message:`Package ${i}@${d} signature did not verify against ${k.keyid}.`,packageName:i,severity:"error",version:d})}return M})).flat()},"runSignatureMarshall");export{N as D,Cr as M,Br as a,zr as b,Hr as c,Ir as d,Wr as e,Vr as f,E as g,Jr as h,Lr as i,Fr as j,Ur as k,j as m,_r as r};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
var N=Object.defineProperty;var x=(o,e)=>N(o,"name",{value:e,configurable:!0});import{createRequire as I}from"node:module";import{M as g,i as d,$ as k,n as O,d as J,f as R}from"../packem_chunks/config.js";const B=I(import.meta.url),M=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,j=x(o=>{if(typeof M<"u"&&M.versions&&M.versions.node){const[e,n]=M.versions.node.split(".").map(Number);if(e>22||e===22&&n>=3||e===20&&n>=16)return M.getBuiltinModule(o)}return B(o)},"__cjs_getBuiltinModule"),{execFileSync:w}=j("node:child_process"),{randomBytes:D}=j("node:crypto"),{writeFileSync:U,renameSync:q,unlinkSync:H}=j("node:fs");var z=Object.defineProperty,f=x((o,e)=>z(o,"name",{value:e,configurable:!0}),"f");const V=["proto","mise","fnm","volta","asdf","nvm","corepack"],Z={asdf:["bun","deno","go","node","npm","pnpm","python","ruby","rust","yarn"],corepack:["npm","pnpm","yarn"],fnm:["node"],mise:["bun","deno","go","node","npm","pnpm","python","ruby","rust","yarn"],nvm:["node"],proto:["bun","deno","go","node","npm","pnpm","python","ruby","rust","yarn"],volta:["node","npm","pnpm","yarn"]},X=["proto","mise","fnm","volta","asdf","nvm","corepack"],W={asdf:[".tool-versions"],corepack:[],fnm:[".nvmrc",".node-version"],mise:[".mise.toml",".config/mise.toml","mise.toml"],nvm:[".nvmrc"],proto:[".prototools"],volta:[]},b=new Map,y=f(o=>{const e=b.get(o);if(e!==void 0||b.has(o))return e;const n=process.env.PATH;if(!n){b.set(o,void 0);return}const t=process.platform==="win32"?["",...(process.env.PATHEXT??".COM;.EXE;.BAT;.CMD").split(";")]:[""];for(const r of n.split(J)){const i=r.replaceAll(/^["']|["']$/g,"").trim();if(i!=="")for(const l of t){const s=`${i}${R}${o}${l}`;if(d(s))return b.set(o,s),s}}b.set(o,void 0)},"isOnPath"),_=f((o,e=["--version"])=>{try{const n=w(o,e,{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}),t=/\d+\.\d+(?:\.\d+)?/.exec(n);return t?t[0]:n.trim()||void 0}catch{return}},"queryManagerVersion"),A=f((o,e)=>{const n=g(o,"package.json");if(!d(n))return[];try{const t=O(n)[e];if(e==="volta"&&typeof t=="object"&&t!==null&&Object.keys(t).length>0)return["package.json"];if(e==="packageManager"&&typeof t=="string"&&t.length>0)return["package.json"]}catch{}return[]},"pkgFieldConfigFiles"),G=f((o,e)=>o==="volta"?A(e,"volta"):o==="corepack"?A(e,"packageManager"):W[o].filter(n=>d(g(e,n))),"configFilesFor"),P=new Map,K=f(()=>{P.clear(),b.clear()},"clearToolchainCache"),S=f((o,e)=>{if(!e?.refresh){const i=P.get(o);if(i)return i}const n=[],t=!!y("pnpm")||!!y("yarn");for(const i of X){const l=i==="nvm"?void 0:y(i),s=i==="nvm"&&!!process.env.NVM_DIR,c=G(i,o),a=!!l||s;i==="corepack"&&!a&&(!(c.length>0)||t)||!a&&c.length===0||n.push({binPath:l,configFiles:c,installed:a,name:i,version:l?_(l):void 0})}const r=Object.freeze(n);return P.set(o,r),r},"findInstalledManagers"),ye=f((o,e,n)=>{const t=n??S(o);return e?.preferredManager&&e.preferredManager!=="none"?t.find(r=>r.name===e.preferredManager)??{configFiles:[],installed:!1,name:e.preferredManager}:t.find(r=>r.installed&&r.configFiles.length>0)??t.find(r=>r.installed)??t.find(r=>r.configFiles.length>0)??{configFiles:[],installed:!1,name:"none"}},"pickPrimaryManager"),L=f((o,e)=>{for(const n of e){const t=g(o,n);if(d(t))try{const r=k(t).trim();if(r!=="")return{name:n,value:r.replace(/^v/,"")}}catch{}}},"readVersionFile"),Q=/^([a-z][\w-]*)\s*=\s*"?([^"\n#]+?)"?\s*(?:#.*)?$/i,Y=f(o=>{const e=g(o,".prototools");if(!d(e))return[];const n=k(e),t=[];let r=!1;for(const i of n.split(/\r?\n/)){const l=i.trim();if(l===""||l.startsWith("#"))continue;if(l.startsWith("[")){r=!0;continue}if(r)continue;const s=Q.exec(l);if(!s)continue;const[,c,a]=s,u=h(c);u&&t.push({source:".prototools",tool:u,version:a.trim()})}return t},"parsePrototools"),ee=/^\[tools\]\s*$/i,oe=/^([a-z][\w-]*)\s*=\s*"?([^"\n#]+?)"?\s*(?:#.*)?$/i,ne=f(o=>{for(const e of W.mise){const n=g(o,e);if(!d(n))continue;const t=[],r=k(n);let i=!1;for(const l of r.split(/\r?\n/)){const s=l.trim();if(s===""||s.startsWith("#"))continue;if(s.startsWith("[")){i=ee.test(s);continue}if(!i)continue;const c=oe.exec(s);if(!c)continue;const[,a,u]=c,m=h(a);m&&t.push({source:".mise.toml",tool:m,version:u.trim()})}if(t.length>0)return t}return[]},"parseMiseToml"),te=f(o=>{const e=g(o,".tool-versions");if(!d(e))return[];const n=k(e),t=[];for(const r of n.split(/\r?\n/)){const i=r.trim();if(i===""||i.startsWith("#"))continue;const l=i.split(/\s+/);if(l.length<2)continue;const[s,...c]=l,a=h(s);a&&c[0]&&t.push({source:".tool-versions",tool:a,version:c[0]})}return t},"parseToolVersions"),h=f(o=>{switch(o.toLowerCase()){case"bun":return"bun";case"deno":return"deno";case"go":case"golang":return"go";case"node":case"nodejs":return"node";case"npm":return"npm";case"pnpm":return"pnpm";case"python":case"python3":return"python";case"ruby":return"ruby";case"rust":case"rustc":return"rust";case"yarn":return"yarn";default:return}},"normalizeToolName"),re=f(o=>{const[e]=o.split("+",1),n=/^(pnpm|yarn|npm|bun)@(.+)$/.exec(e??"");if(!n)return;const t=h(n[1]);if(t)return{source:"packageManager",tool:t,version:n[2]}},"parsePackageManagerField"),se=f((o,e)=>{const n=new Map,t=f(s=>{n.set(s.tool,s)},"add"),r=g(o,"package.json");let i={};try{d(r)&&(i=O(r))}catch{}if(i.engines)for(const[s,c]of Object.entries(i.engines)){const a=h(s);a&&typeof c=="string"&&t({source:"engines",tool:a,version:c})}if(i.packageManager){const s=re(i.packageManager);s&&t(s)}if(i.volta)for(const[s,c]of Object.entries(i.volta)){const a=h(s);a&&typeof c=="string"&&t({source:"volta",tool:a,version:c})}const l=L(o,[".nvmrc",".node-version"]);l&&t({source:l.name===".nvmrc"?".nvmrc":".node-version",tool:"node",version:l.value});for(const s of te(o))t(s);for(const s of ne(o))t(s);for(const s of Y(o))t(s);if(e?.tools)for(const[s,c]of Object.entries(e.tools)){const a=h(s);a&&typeof c=="string"&&t({source:"vis.config.ts",tool:a,version:c})}return[...n.values()]},"parseExpectedTools"),F={bun:{args:["--version"],binaries:["bun"]},deno:{args:["--version"],binaries:["deno"]},go:{args:["version"],binaries:["go"]},node:{args:["--version"],binaries:["node"]},npm:{args:["--version"],binaries:["npm"]},pnpm:{args:["--version"],binaries:["pnpm"]},python:{args:["--version"],binaries:["python","python3"]},ruby:{args:["--version"],binaries:["ruby"]},rust:{args:["--version"],binaries:["rustc"]},yarn:{args:["--version"],binaries:["yarn"]}},ie=f(o=>{const e=F[o];for(const n of e.binaries){const t=y(n);if(t)return _(t,e.args)}if(o==="node")return process.versions.node},"queryToolVersion"),ae=f((o,e)=>{const n=e.trim();if(n===""||n==="*"||n==="latest")return!0;if(/^\d[\d.]*$/.test(n))return o===n||o.startsWith(`${n}.`);const t=f(s=>s.split(/[.\-+]/).map(c=>Number.parseInt(c,10)||0),"parse"),r=f((s,c)=>{const a=t(s),u=t(c),m=Math.max(a.length,u.length);for(let p=0;p<m;p++){const $=a[p]??0,v=u[p]??0;if($!==v)return $-v}return 0},"compare"),i=f(s=>{for(const c of s)if(c.startsWith(">=")){if(r(o,c.slice(2).trim())<0)return!1}else if(c.startsWith("<=")){if(r(o,c.slice(2).trim())>0)return!1}else if(c.startsWith(">")){if(r(o,c.slice(1).trim())<=0)return!1}else if(c.startsWith("<")){if(r(o,c.slice(1).trim())>=0)return!1}else if(c.startsWith("^")||c.startsWith("~")){const a=c.slice(1).trim(),[u,m]=t(a),[p,$]=t(o);if(p!==u||c.startsWith("~")&&$!==m||r(o,a)<0)return!1}return!0},"matchesAll"),l=n.split("||").map(s=>s.trim().split(/\s+/).filter(Boolean)).filter(s=>s.length>0);return l.length===0?!0:l.some(s=>i(s))},"satisfies"),ce=f((o,e)=>{switch(o){case".mise.toml":return["mise"];case".node-version":case".nvmrc":return["fnm","nvm","volta","proto","mise","asdf"];case".prototools":return["proto"];case".tool-versions":return["asdf","mise"];case"packageManager":return e==="pnpm"||e==="yarn"?["self-activate","volta","proto","mise","corepack"]:e==="npm"?["volta","proto","mise","asdf","corepack"]:e==="bun"?["proto","mise","asdf"]:["volta","proto","mise"];case"volta":return["volta"];default:return["proto","mise","fnm","volta","asdf","nvm","corepack"]}},"preferenceFor"),le=f((o,e,n)=>{if(n?.preferredManager&&n.preferredManager!=="none"&&T(n.preferredManager,o.tool)){const r=e.find(i=>i.name===n.preferredManager);return r?{installed:r.installed,name:r.name}:{installed:!1,name:n.preferredManager,note:`${n.preferredManager} is the preferred manager but isn't on PATH`}}const t=ce(o.source,o.tool);for(const r of t){if(r==="self-activate"){if((o.tool==="pnpm"||o.tool==="yarn")&&y(o.tool))return{installed:!0,name:"self-activate",note:`${o.tool} will activate ${o.version} from the packageManager field on next invocation`};continue}if(T(r,o.tool)&&e.find(i=>i.name===r)?.installed)return{installed:!0,name:r}}for(const r of t)if(!(r==="self-activate"||!T(r,o.tool)))return{installed:!1,name:r,note:`${r} can install ${o.tool} — run \`vis toolchain install\` after adding it to PATH`};return{installed:!1,name:"none",note:"No manager knows how to install this tool"}},"resolveManagerFor"),T=f((o,e)=>o==="none"?!1:o==="self-activate"?e==="pnpm"||e==="yarn":Z[o].includes(e),"canHandle"),fe=f((o,e)=>{const n=S(o),t=se(o,e).map(r=>{const i=ie(r.tool),l=i!==void 0&&ae(i,r.version),s=le(r,n,e);return{actual:i,expected:r,manager:s,matches:l}});return{detected:n,tools:t}},"getToolchainStatus"),pe=f((o,e)=>{switch(o){case"asdf":return e?{args:["install",e.tool,e.version],bin:"asdf"}:void 0;case"corepack":return e?{args:["prepare",`${e.tool}@${e.version}`,"--activate"],bin:"corepack"}:{args:["prepare","--activate"],bin:"corepack",hint:"reads the packageManager field in package.json"};case"fnm":return e?.tool!=="node"?void 0:{args:["install",e.version],bin:"fnm"};case"mise":return e?{args:["install",`${e.tool}@${e.version}`],bin:"mise"}:void 0;case"none":return;case"nvm":return{args:[],bin:"nvm",hint:"nvm is a shell function — run `nvm install` / `nvm use` from your shell"};case"proto":return e?{args:["install",e.tool,e.version],bin:"proto"}:void 0;case"self-activate":return{args:[],bin:e?.tool??"pnpm",hint:`${e?.tool??"pnpm"} will self-activate on next invocation — no install needed`};case"volta":return e?{args:["install",`${e.tool}@${e.version}`],bin:"volta"}:{args:["install","node@lts"],bin:"volta",hint:"volta pins per-tool; specify <tool>@<version>"};default:{const n=o;throw new Error(`Unknown manager: ${n}`)}}},"buildInstallInvocation"),$e=f((o,e)=>{switch(o){case"asdf":return{args:["local",e.tool,e.version],bin:"asdf",configChange:{file:".tool-versions",hint:`Pins ${e.tool} ${e.version}`}};case"corepack":return e.tool!=="npm"&&e.tool!=="pnpm"&&e.tool!=="yarn"?void 0:{args:["use",`${e.tool}@${e.version}`],bin:"corepack",configChange:{file:"package.json",hint:`Writes packageManager: "${e.tool}@${e.version}"`}};case"fnm":return e.tool==="node"?{args:["use",e.version],bin:"fnm"}:void 0;case"mise":return{args:["use","--",`${e.tool}@${e.version}`],bin:"mise",configChange:{file:".mise.toml",hint:`Pins ${e.tool} ${e.version}`}};case"none":return;case"nvm":return e.tool==="node"?{args:[],bin:"nvm",configChange:{file:".nvmrc",hint:"Write version to .nvmrc manually (nvm doesn't persist)."}}:void 0;case"proto":return{args:["pin",e.tool,e.version],bin:"proto",configChange:{file:".prototools",hint:`Pins ${e.tool} ${e.version}`}};case"self-activate":return{args:[],bin:e.tool,configChange:{file:"package.json",hint:`Set packageManager: "${e.tool}@${e.version}" — ${e.tool} will self-activate on next invocation`}};case"volta":return{args:["pin",`${e.tool}@${e.version}`],bin:"volta",configChange:{file:"package.json",hint:`Writes volta.${e.tool}`}};default:{const n=o;throw new Error(`Unknown manager: ${n}`)}}},"buildUseInvocation"),be=f(o=>{for(const e of F[o].binaries){const n=y(e);if(n)return n}},"findOnPathByAlias"),ke=f((o,e)=>{const n=F[e].binaries;if(o.installed&&o.binPath&&(o.name==="proto"||o.name==="mise"||o.name==="asdf"||o.name==="volta"||o.name==="fnm"))for(const t of n)try{const r=w(o.binPath,["which",t],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}).trim();if(r)return r}catch{}for(const t of n){const r=y(t);if(r)return r}},"resolveToolBinary"),E=f((o,e)=>{const n=`${o}.${process.pid}.${D(6).toString("hex")}.tmp`;U(n,e);try{q(n,o)}catch(t){try{H(n)}catch{}throw t}},"atomicWrite"),ue=f((o,e)=>{if("packageManager"in o)return o.packageManager=e,o;const n={};let t=!1;for(const[r,i]of Object.entries(o))!t&&(r==="dependencies"||r==="devDependencies"||r==="peerDependencies"||r==="optionalDependencies")&&(n.packageManager=e,t=!0),n[r]=i;return t||(n.packageManager=e),n},"insertPackageManagerKey"),Me=f((o,e)=>{if(e.tool!=="pnpm"&&e.tool!=="yarn"&&e.tool!=="npm"&&e.tool!=="bun")return;const n=g(o,"package.json");if(!d(n))throw new Error(`Cannot pin ${e.tool}: ${n} does not exist.`);const t=k(n),r=/\n([ \t]+)/.exec(t)?.[1]??" ";let i;try{i=JSON.parse(t)}catch(a){throw new Error(`${n} is not valid JSON — fix it before running \`vis toolchain use\`. Underlying error: ${a.message}`,{cause:a})}const l=`${e.tool}@${e.version}`,s=ue(i,l),c=t.endsWith(`
|
|
2
|
-
`)?`
|
|
3
|
-
`:"";return E(n,`${JSON.stringify(s,void 0,r)}${c}`),l},"writePackageManagerField"),we=f((o,e)=>{const n=g(o,"package.json");if(!d(n))return;const t=k(n);let r;try{r=JSON.parse(t)}catch(s){throw new Error(`${n} is not valid JSON — fix it before running \`vis toolchain use\`. Underlying error: ${s.message}`,{cause:s})}if(r.engines?.[e.tool]===void 0||r.engines[e.tool]===e.version)return;r.engines[e.tool]=e.version;const i=/\n([ \t]+)/.exec(t)?.[1]??" ",l=t.endsWith(`
|
|
4
|
-
`)?`
|
|
5
|
-
`:"";return E(n,`${JSON.stringify(r,void 0,i)}${l}`),e.version},"updateEnginesField"),xe=f(o=>{const e=/^([a-z][\w-]*)@(.+)$/i.exec(o.trim());if(!e)return;const n=h(e[1]);if(n)return{source:"vis.config.ts",tool:n,version:e[2]}},"parseUseArgument"),de=f(async(o,e,n)=>{const t=fe(o,e),r=t.tools.filter(a=>!a.matches);if(r.length===0)return{attempted:[],failed:[],upToDate:!0};const i=t.detected.some(a=>a.installed);if(!(e?.autoInstall??i))return{attempted:[],failed:[],upToDate:!1};const l=[],s=[],c=new Map;for(const a of r){const u=c.get(a.manager.name);u?u.push(a):c.set(a.manager.name,[a])}for(const[a,u]of c){if(a==="self-activate"){for(const{expected:p}of u)n.info(`toolchain: ${p.tool} ${p.version} will self-activate on next ${p.tool} invocation`),l.push(p);continue}if(a==="none"){for(const{expected:p}of u)s.push({error:`no manager can install ${p.tool} — install one of ${V.join(", ")}`,spec:p});continue}if(!t.detected.find(p=>p.name===a)?.installed){for(const{expected:p}of u)s.push({error:`${a} is not on PATH`,spec:p});continue}const m=u.map(p=>({invocation:pe(a,p.expected),tool:p})).filter(p=>p.invocation!==void 0);for(const{invocation:p,tool:$}of m){const{expected:v}=$;if(p.bin==="nvm"&&p.args.length===0){n.warn(`toolchain: nvm requires a shell-side activation for ${v.tool} ${v.version}. Run \`nvm install\` / \`nvm use\` manually.`),s.push({error:"nvm requires shell-side activation",spec:v});continue}n.info(`toolchain: $ ${p.bin} ${p.args.join(" ")}`);try{w(p.bin,p.args,{cwd:o,stdio:"inherit"}),l.push(v),a==="fnm"&&ge(p.bin,n)}catch(C){s.push({error:C.message,spec:v});break}}}return K(),{attempted:l,failed:s,upToDate:!1}},"ensureToolchain"),Te=f(async(o,e,n,t=!1)=>{if(t)return;const r=await de(o,e,n);for(const i of r.failed)n.warn(`toolchain: ${i.spec.tool} ${i.spec.version} — ${i.error}`)},"runToolchainPreflight"),ge=f((o,e)=>{const n=process.platform==="win32"?"powershell":"bash";try{const t=w(o,["env","--shell",n],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3});for(const r of t.split(/\r?\n/)){const i=r.trim();if(i==="")continue;const l=/^\$env:([A-Z_]\w*)\s*=\s*(.+)$/i.exec(i);if(l){const[,a,u]=l;process.env[a]=u.replaceAll(/^["']|["']$/g,"");continue}const s=/^set\s+"?([A-Z_]\w*)=(.*?)"?$/i.exec(i);if(s){const[,a,u]=s;process.env[a]=u;continue}const c=/^(?:export\s+)?([A-Z_]\w*)=(.+)$/i.exec(i);if(c){const[,a,u]=c;process.env[a]=u.replaceAll(/^["']|["']$/g,"")}}}catch(t){e.warn(`toolchain: could not activate fnm env (${t.message}). Subsequent tasks may use the previous Node version.`)}},"activateFnmEnv");export{V as S,le as a,pe as b,$e as c,ke as d,be as e,S as f,fe as g,ye as h,xe as p,Te as r,we as u,Me as w};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var $=Object.defineProperty;var m=(e,s)=>$(e,"name",{value:s,configurable:!0});import{createRequire as z}from"node:module";import{aQ as C,i as f,p as i,a as b,e as k}from"../packem_chunks/bin.js";import{M as D,i as A,n as O}from"../packem_chunks/config.js";const _=z(import.meta.url),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,T=m(e=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[s,r]=l.versions.node.split(".").map(Number);if(s>22||s===22&&r>=3||s===20&&r>=16)return l.getBuiltinModule(e)}return _(e)},"__cjs_getBuiltinModule"),{createInterface:M}=T("node:readline");var F=["aj","aju","av","avj","ejv","jav","jv"],N=["angula","angular-node","angularjs"],P=["auto-prefixer"],B=["aaxios","aios","axio","axioos","axios-node","axioss","axis","axiso","axois","axos","axxios"],R=["abel","babbel","babe","babel-js","babel-node","babl","bable","bbael","bebel"],S=["bcrpyt","bcrypt-node","brcypt","crypt","dcrypt"],W=["bcryptjs-node","dcryptjs"],L=["bunan","bunya","bunyan-node","buynan"],E=["cai","cha","chaijs","chal","chi","chia","hai"],U=["cahlk","calk","cchalk","ch4lk","cha1k","chaalk","chaik","chak","chakl","chalk-node","chalkk","challk","chhalk","chlak","chlk","halk","hcalk"],V=["cheero","cherio"],I=["c0lor","ccolor","clor","colo","coloor","color-js","colorjs","colorr","colr","coolor","coolr"],J=["ccolors","colors-node","colorss","colorz","colrs","coolors"],Q=["c0mmander","ccommander","cmmander","cmomander","co-mmander","comamnder","comander","comm4nder","commaander","commader","commadner","commamder","command3r","commandder","commande","commandeer","commander-js","commanderr","commandr","commandre","commanedr","commaner","commannder","commender","commmander","commnader","commnder","coommander","ocmmander","ommander"],Y=["cor","corss","cos","cosr","cros","crs","ors"],G=["days"],H=["d3bug","dbeug","dbug","ddebug","debbug","debg","debgu","debu","debu9","debug-js","debug-node","debugg","debugjs","debuug","deebug","deubg","deug","ebug","edbug"],K=["dot-env","dotenv-node","dotenvjs","dotevn"],X=["3lectron","eectron","eelctron","eelectron","el3ctron","elcetron","elctron","elecctron","elecron","elecrton","electon","electorn","electr0n","electrn","electrno","electro","electrom","electron-node","electronn","electroon","electrron","electtron","eleectron","eletcron","eletron","ellectron","lectron","leectron"],Z=["asbuild","ebuild","esbuild-node","esbuildjs","ezbuild","sbuild"],ee=["aslint","elint","eslint-js","eslint-node","eslit","ezlint","slint"],oe=["eexpress","epress","epxress","experss","expess","exppress","expreess","expres","express-node","expressjs","expresss","exprress","exprses","exprss","exress","exrpess","exxpress","xepress","xpress"],se=["astify"],re=["firebasejs"],ae=["form1dable"],te=["glb","glo","glob-js","globjs","gob","golb","lob"],ne=["go","goot","gotjs","gott","gt","gto","ogt","ot","qot"],ce=["helmetjs","helnet"],ie=["homo","hon","hoo","hoon","ohno","ono"],de=["inquire","inquirer-js","nquirer"],le=["iredis"],me=["ejst","est","jast","jes","jestjs","jestt","jet","jets","jst"],pe=["imp","jim","jip","jmp"],ue=["ji","jio","jo","joii","jol","oi","oji"],ve=["jdom","jsdm","jsdo","jsdom-js","jsdon","jsom","sdom"],he=["jsonwebtoken-js","jsonwebtoken-node"],je=["ka","kao","ko","koaa","koajs","koe","oa","oka"],be=["1odash","iodash","l0dash","ldash","ldoash","llodash","lo-dash","loadsh","loash","lobash","lod4sh","lodaash","lodah","lodahs","lodas","lodash-node","lodashh","lodassh","loddash","lodesh","lodsah","lodsh","loodash","odash","oldash"],ke=["luca","luci","lucie"],ge=["luon","luxo","luxon-js"],fe=["imcromatch","mciromatch","micormatch","micrmoatch","micro-match","microamtch","micromacth","micromathc","micromtach","mircomatch"],ye=["minimath"],xe=["mcha","mmocha","moca","moch","mocha-js","moha","nocha","ocha"],we=["m0ment","mment","mmoent","mmoment","moemnt","moent","mom3nt","momeent","momemt","momen","momen7","momennt","moment-js","momentjs","momentt","momet","mometn","momment","momnet","momnt","monent","mooment","oment","omment"],qe=["mognoose","mogoose","mongoos","mongose","monqoose","moongoose"],$e=["moran","organ"],ze=["muler","multer-js","muter"],_e=["mysql"],Te=["ext","mext","n3xt","naxt","net","netx","nex","next-js","next-node","nextjs","nxt"],Me=["node-mailer","nodemailer-js"],Ce=["nodemo","nodemonjs","nodmeon"],De=["oar","or","ora-node","ore","ra","roa"],Ae=["arcel","parce","parceljs"],Oe=["passport-js"],Fe=["phase","phaser-node"],Ne=["ino","pimo","pin","pino-node","pinojs","pio","pion"],Pe=["playright","playwright-js"],Be=["postcss-js","postcss-node","potscss"],Re=["pettier","pprettier","pretier","prettierjs","prettierr","prtetier"],Se=["prima","prism","prisma-js","prismajs","prizma"],We=["pupeteer"],Le=["rada","rama","ramd","randa"],Ee=["eact","eract","r3act","raact","ract","raect","re4ct","reaact","reac","reac7","reacct","react-node","reactjs","reactt","reat","reatc","recat","rect","reeact","reect","rreact"],Ue=["erdis","radis","rdis","redi","redis-js","redis-node","rediss","rediz","reds","reis","rredis"],Ve=["resen","rsend"],Ie=["ollup","rollup-js","rollup-node"],Je=["ass","asss","sas","sass-node","sess","ssas","sss"],Qe=["emver","seemver","semver-node","semvre","senver","sever"],Ye=["sequelize-js","sequelize-node"],Ge=["harp","shap","shar","sharp-js","sharpjs"],He=["stipe","strip","stripe-node","tripe"],Ke=["supabase-js"],Xe=["suelte","svelt3","svelte-js","sveltejs","velte"],Ze=["tailwindcss-js"],eo=["auri","taui"],oo=["hree","htree","thee","there","three-js","three-node","tree"],so=["stx","sx","ts","tsxx","ttsx","tx","txs","tzx"],ro=["ttypescript","typecript","typescipt","typescript-node","typescriptjs","typescrit","typescritp"],ao=["udnerscore","undercore","underscoer","underscore-node","underscroe","undersocre","undesrcore"],to=["uid","uud","uudi","uui","uuid-js","uuid-node","uuidjs","vuid"],no=["ite","vie","vit","vita","vite-node","vitee","vlte","vte"],co=["itest","uitest","vitestjs","vitezt","vittest","vtest"],io=["ue","uue","uve","ve","veu","vu","vu3","vua","vue-node","vuee","vuejs","vuue","vve","vvue"],lo=["web-pack","weback","webpac","webpack-node","webpackjs","webpak","weebpack","wepack","wepback"],mo=["winson","winston-js","winstoon"],po=["up","uyp","yp","yu","yupjs","yupp"],uo=["od","zd","zdo","zo","zob","zod-js","zodjs"];const vo={ajv:F,angular:N,autoprefixer:P,"aws-sdk":["awssdk","ews-sdk"],axios:B,babel:R,bcrypt:S,bcryptjs:W,"body-parser":["body-paresr","body-parse","body-parser-js","body_parser"],bunyan:L,chai:E,chalk:U,cheerio:V,color:I,colors:J,commander:Q,"cookie-parser":["cookie-parse","cookieparser"],cors:Y,"cross-env":["crossenv"],"date-fns":["data-fns","date-fn"],dayjs:G,debug:H,dotenv:K,electron:X,esbuild:Z,eslint:ee,express:oe,fastify:se,firebase:re,formidable:ae,glob:te,got:ne,helmet:ce,hono:ie,inquirer:de,ioredis:le,jest:me,jimp:pe,joi:ue,jsdom:ve,jsonwebtoken:he,koa:je,lodash:be,lucia:ke,luxon:ge,micromatch:fe,minimatch:ye,mocha:xe,moment:we,mongoose:qe,morgan:$e,multer:ze,mysql2:_e,next:Te,"node-fetch":["node-fecth","node-fethc","node.fetch"],nodemailer:Me,nodemon:Ce,ora:De,parcel:Ae,passport:Oe,phaser:Fe,pino:Ne,playwright:Pe,postcss:Be,prettier:Re,prisma:Se,puppeteer:We,ramda:Le,react:Ee,"react-dom":["eact-dom","eract-dom","r3act-dom","ract-dom","raect-dom","re4ct-dom","reaact-dom","reac-dom","reac7-dom","reacct-dom","react-bom","react-d0m","react-ddom","react-dm","react-dmo","react-do","react-domm","react-don","react-doom","react-odm","react-om","react.dom","reactdom","reactt-dom","reat-dom","reatc-dom","recat-dom","rect-dom","reeact-dom","rreact-dom"],redis:Ue,resend:Ve,rollup:Ie,sass:Je,semver:Qe,sequelize:Ye,sharp:Ge,"socket.io":["ocket.io","oscket.io","scket.io","scoket.io","soccket.io","socekt.io","socet.io","sock3t.io","socke.io","socke7.io","sockeet.io","socket.1o","socket.i","socket.iio","socket.ioo","socket.lo","socket.o","socket.oi","sockett.io","sockket.io","sockt.io","sockte.io","sokcet.io","soket.io","soocket.io","ssocket.io"],stripe:He,supabase:Ke,svelte:Xe,tailwindcss:Ze,tauri:eo,three:oo,"ts-node":["tts-node"],tsx:so,typescript:ro,underscore:ao,uuid:to,vite:no,vitest:co,vue:io,webpack:lo,winston:mo,yup:po,zod:uo};var v,g;function ho(){return g||(g=1,v={"@tanstack/start":["start-tanstack-app","tanstack","tanstack-app","tanstack-start"]}),v}m(ho,"requireTyposquatsManual");var jo=ho();const bo=C(jo);var ko=Object.defineProperty,n=m((e,s)=>ko(e,"name",{value:s,configurable:!0}),"c");const go={a:["4","e"],b:["d"],d:["b"],e:["3","a"],g:["9","q"],i:["1","l"],l:["1","i"],m:["n"],n:["m"],o:["0"],s:["5","z"],t:["7"],u:["v"],v:["u"]},fo=["app","cli","core","kit","lib","pkg","sdk"],yo=n(e=>{const s=new Set;if(e.length<3)return s;for(let o=0;o<e.length;o++){const a=e[o],t=a==="-"||a==="."||a==="_";if(t||s.add(e.slice(0,o)+e.slice(o+1)),t||s.add(e.slice(0,o)+a+e.slice(o)),o<e.length-1&&e[o]!==e[o+1]){const u=e[o+1]==="-"||e[o+1]==="."||e[o+1]==="_";if(!t&&!u){const d=[...e];[d[o],d[o+1]]=[d[o+1],d[o]],s.add(d.join(""))}}const c=e[o].toLowerCase(),j=go[c];if(j)for(const u of j)s.add(e.slice(0,o)+u+e.slice(o+1))}const r=/[-._]/g;if(r.test(e))s.add(e.replaceAll(r,"")),s.add(e.replaceAll(r,"-")),s.add(e.replaceAll(r,".")),s.add(e.replaceAll(r,"_"));else if(e.length>5)for(let o=2;o<e.length-2;o++)s.add(`${e.slice(0,o)}-${e.slice(o)}`),s.add(`${e.slice(0,o)}.${e.slice(o)}`),s.add(`${e.slice(0,o)}_${e.slice(o)}`);if(e.startsWith("@")||(s.add(`${e}-js`),s.add(`${e}js`),s.add(`${e}-node`)),e.startsWith("@")){const o=e.indexOf("/");if(o>1&&o<e.length-1){const a=e.slice(1,o),t=e.slice(o+1);a.length>=3&&s.add(a);for(const c of["","-",".","_"])s.add(`${a}${c}${t}`),s.add(`${t}${c}${a}`);for(const c of fo)s.add(`${a}-${c}`),s.add(`${t}-${a}-${c}`),s.add(`${c}-${a}-${t}`)}}return s.delete(e),s},"generateVariants");let h,p;const y=n(()=>{if(!h){const e={};for(const s of[vo,bo])for(const[r,o]of Object.entries(s)){const a=e[r]??(e[r]=[]);for(const t of o)a.includes(t)||a.push(t)}h=e}return h},"loadBlocklist"),xo=n(()=>{if(!p){p=new Map;for(const[e,s]of Object.entries(y()))for(const r of s)p.set(r,e)}return p},"getReverseLookup"),wo=n(e=>e.startsWith("@")?e.split("/")[1]??e:e,"bareName"),qo=n(e=>{const s=wo(e),r=xo().get(s);if(r)return{input:e,legitimate:r,method:"blocklist"};for(const o of Object.keys(y()))if(yo(o).has(s))return{input:e,legitimate:o,method:"heuristic"}},"checkTyposquat"),x=n((e,s)=>{const r=s?new Set(s):void 0,o=[];for(const a of e){if(r?.has(a))continue;const t=qo(a);t&&o.push(t)}return o},"checkTyposquats"),w=n((e,s)=>{i.warn(""),i.warn(b(`Possible typosquat${e.length===1?"":"s"} ${s}:`));for(const r of e){const o=r.method==="blocklist"?"known typosquat":"similar name";i.warn(` ${k("⚠")} ${b(r.input)} — did you mean ${k(r.legitimate)}? (${o})`)}i.warn("")},"printTyposquatWarnings"),q=n(async e=>{if(!process.stdin.isTTY){i.warn("Aborting: potential typosquat detected in non-interactive mode. Use --no-typosquat-check to skip.");return}const s=M({input:process.stdin,output:process.stdout}),r=await new Promise(o=>{s.question(e,a=>{o(a.trim().toLowerCase())})});return s.close(),r},"askConfirmation"),Ao=n(async(e,s)=>{if(f("typosquats"))return{ok:!0,packages:e};const r=x(e,s);if(r.length===0)return{ok:!0,packages:e};w(r,"detected");const o=await q(`Use suggested package${r.length===1?"":"s"} instead? [S]uggested / [y]es, keep original / [N]o, abort (default: N) `);if(o===void 0)return{ok:!1,packages:e};if(o==="s"||o==="suggested"){const a=new Map(r.map(t=>[t.input,t.legitimate]));return{ok:!0,packages:e.map(t=>a.get(t)??t)}}return o==="y"||o==="yes"?{ok:!0,packages:e}:{ok:!1,packages:e}},"runTyposquatCheck"),$o=/^(?:npm|pnpm|yarn):(.+?)(?:@.*)?$/,zo=n(e=>$o.exec(e)?.[1],"parseAliasTarget"),_o=n(e=>{if(!A(e))return[];const s=O(e),r={...s.dependencies,...s.devDependencies,...s.optionalDependencies,...s.peerDependencies},o=new Set;for(const[a,t]of Object.entries(r)){o.add(a);const c=zo(t);c&&o.add(c)}return[...o]},"readDepsFromPackageJson"),Oo=n(async(e,s)=>{if(f("typosquats"))return!0;const r=D(e,"package.json"),o=_o(r);if(o.length===0)return!0;const a=x(o,s);if(a.length===0)return!0;w(a,"in package.json dependencies"),i.warn("Fix the package name in package.json before proceeding.");const t=await q("Continue anyway? [y/N] ");return t==="y"||t==="yes"},"scanDepsForTyposquats");export{Ao as r,Oo as s};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var u=Object.defineProperty;var g=(n,s)=>u(n,"name",{value:s,configurable:!0});import{createRequire as m}from"node:module";import{M as i,i as a,$ as f}from"../packem_chunks/config.js";import{u as $}from"../packem_chunks/bin.js";const j=m(import.meta.url),k=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,b=g(n=>{if(typeof k<"u"&&k.versions&&k.versions.node){const[s,o]=k.versions.node.split(".").map(Number);if(s>22||s===22&&o>=3||s===20&&o>=16)return k.getBuiltinModule(n)}return j(n)},"__cjs_getBuiltinModule"),{readdirSync:v}=b("node:fs");var w=Object.defineProperty,l=g((n,s)=>w(n,"name",{value:s,configurable:!0}),"o");const _=[".husky/pre-commit",".vis-hooks/pre-commit",".git/hooks/pre-commit"],D=[".secretlintrc",".secretlintrc.json",".secretlintrc.js",".secretlintrc.mjs",".secretlintrc.cjs",".secretlintrc.yml",".secretlintrc.yaml"],S=[".syncpackrc",".syncpackrc.json",".syncpackrc.yaml",".syncpackrc.yml",".syncpackrc.cjs",".syncpackrc.js",".syncpackrc.mjs",".syncpackrc.ts","syncpack.config.cjs","syncpack.config.js","syncpack.config.mjs","syncpack.config.ts"],M=l(n=>{const s=i(n,"package.json");if(!a(s))return[];let o;try{o=JSON.parse(f(s))}catch{return[]}const e=[];if(o.scripts)for(const[t,c]of Object.entries(o.scripts))typeof c=="string"&&(/\bgitleaks\b/.test(c)&&e.push({detail:`Script "${t}" still invokes gitleaks: ${c}`,kind:"script",location:"package.json",tool:"gitleaks"}),/\bsecretlint\b/.test(c)&&e.push({detail:`Script "${t}" still invokes secretlint: ${c}`,kind:"script",location:"package.json",tool:"secretlint"}),/\bsyncpack\b/.test(c)&&e.push({detail:`Script "${t}" still invokes syncpack: ${c}`,kind:"script",location:"package.json",tool:"syncpack"}),/\bsherif\b/.test(c)&&e.push({detail:`Script "${t}" still invokes sherif: ${c}`,kind:"script",location:"package.json",tool:"sherif"}));if(o.devDependencies)for(const t of Object.keys(o.devDependencies))(t==="gitleaks"||t==="@gitleaks/cli")&&e.push({detail:`devDependency \`${t}\` is still installed`,kind:"devDep",location:"package.json",tool:"gitleaks"}),(t==="secretlint"||t.startsWith("@secretlint/"))&&e.push({detail:`devDependency \`${t}\` is still installed`,kind:"devDep",location:"package.json",tool:"secretlint"}),t==="syncpack"&&e.push({detail:`devDependency \`${t}\` is still installed`,kind:"devDep",location:"package.json",tool:"syncpack"}),t==="sherif"&&e.push({detail:`devDependency \`${t}\` is still installed`,kind:"devDep",location:"package.json",tool:"sherif"});return o.sherif&&e.push({detail:"`sherif` config block still present in package.json",kind:"config",location:"package.json",tool:"sherif"}),e},"scanPackageJson"),O=l(n=>{const s=[];for(const o of _){const e=i(n,o);if(!a(e))continue;const t=f(e);/\bgitleaks\b/.test(t)&&s.push({detail:"gitleaks invocation still present in hook",kind:"hook",location:o,tool:"gitleaks"}),/\bsecretlint\b/.test(t)&&s.push({detail:"secretlint invocation still present in hook",kind:"hook",location:o,tool:"secretlint"}),/\bsyncpack\b/.test(t)&&s.push({detail:"syncpack invocation still present in hook",kind:"hook",location:o,tool:"syncpack"}),/\bsherif\b/.test(t)&&s.push({detail:"sherif invocation still present in hook",kind:"hook",location:o,tool:"sherif"})}return s},"scanHooks"),C=l(n=>{const s=[];for(const o of D)a(i(n,o))&&s.push({detail:"secretlint config should be removed after migration",kind:"config",location:o,tool:"secretlint"});for(const o of S)a(i(n,o))&&s.push({detail:"syncpack config should be removed after migration",kind:"config",location:o,tool:"syncpack"});return s},"scanConfigs"),N=[".github/workflows",".gitlab-ci.yml",".circleci/config.yml",".woodpecker.yml",".drone.yml"],q=l(n=>{const s=[],o=l(e=>{const t=i(n,e);if(!a(t))return;const c=f(t);/\bsyncpack\b/.test(c)&&s.push({detail:"syncpack invocation still present in CI",kind:"ci",location:e,tool:"syncpack"}),/\bsherif\b/.test(c)&&s.push({detail:"sherif invocation still present in CI",kind:"ci",location:e,tool:"sherif"})},"scanFile");for(const e of N){const t=i(n,e);if(a(t)){if(e===".github/workflows"){try{for(const c of v(t))(c.endsWith(".yml")||c.endsWith(".yaml"))&&o(`.github/workflows/${c}`)}catch{}continue}o(e)}}return s},"scanCi"),I=l(n=>{const s=[],o=i(n,"pnpm-workspace.yaml");if(a(o)){let t;try{t=$(o)}catch{t=void 0}if(t&&typeof t=="object"){const c=t.catalog;c&&typeof c.syncpack=="string"&&s.push({detail:"`syncpack` still listed in pnpm-workspace.yaml#catalog",kind:"catalog",location:"pnpm-workspace.yaml",tool:"syncpack"});const r=t.catalogs;if(r&&typeof r=="object")for(const[d,p]of Object.entries(r))p&&typeof p.syncpack=="string"&&s.push({detail:`\`syncpack\` still listed in pnpm-workspace.yaml#catalogs.${d}`,kind:"catalog",location:"pnpm-workspace.yaml",tool:"syncpack"})}}const e=i(n,"package.json");if(a(e)){let t;try{t=JSON.parse(f(e))}catch{return s}const c=t.workspaces;if(c&&typeof c=="object"&&!Array.isArray(c)){const d=c.catalog;d&&typeof d.syncpack=="string"&&s.push({detail:"`syncpack` still listed in package.json#workspaces.catalog",kind:"catalog",location:"package.json",tool:"syncpack"});const p=c.catalogs;if(p&&typeof p=="object")for(const[h,y]of Object.entries(p))y&&typeof y.syncpack=="string"&&s.push({detail:`\`syncpack\` still listed in package.json#workspaces.catalogs.${h}`,kind:"catalog",location:"package.json",tool:"syncpack"})}const r=t.catalog;r&&typeof r.syncpack=="string"&&s.push({detail:"`syncpack` still listed in package.json#catalog",kind:"catalog",location:"package.json",tool:"syncpack"})}return s},"scanCatalogs"),J=l(n=>[...M(n),...O(n),...C(n),...q(n),...I(n)],"scanMigrationLeftovers"),B=l((n,s)=>{const o=J(n);if(o.length===0)return s.info("✓ No unmigrated gitleaks/secretlint/sherif/syncpack references found."),[];s.warn(`Found ${String(o.length)} unmigrated reference(s):`);for(const e of o)s.warn(` [${e.kind}] ${e.location} — ${e.detail}`);return o},"verifyMigration");export{J as s,B as v};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var X=Object.defineProperty;var F=(n,e)=>X(n,"name",{value:e,configurable:!0});var j=Object.defineProperty,b=F((n,e)=>j(n,"name",{value:e,configurable:!0}),"f");const s=(1n<<128n)-1n,a=(1n<<64n)-1n,x=(1n<<32n)-1n,w=0x9E3779B1n,D=0x85EBCA77n,N=0xC2B2AE3Dn,h=0x9E3779B185EBCA87n,l=0xC2B2AE3D27D4EB4Fn,H=0x165667B19E3779F9n,A=0x85EBCA77C2B2AE63n,P=0x27D4EB2F165667C5n,V=0x165667919E3779F9n,k=0x9FB21C651E98DF25n,I=64,S=I/8,q=8,L=Buffer.from("b8fe6c3923a44bbe7c01812cf721ad1cded46de9839097db7240a4a4b7b3671fcb79e64eccc0e578825ad07dccff7221b8084674f743248ee03590e6813a264c3c2852bb91c300cb88d0658b1b532ea371644897a20df94e3819ef46a9deacd8a8fa763fe39c343ff9dcbbc7c70b4f1d8a51e04bcdb45931c89f7ec9d9787364eac5ac8334d3ebc3c581a0fffa1363eb170ddd51b7f0da49d316552629d4689e2b16be587d47a1fc8ff8b8d17ad031ce45cb3a8f95160428afd7fbcabb4b407e","hex"),d=b((n,e=0)=>Buffer.from(n.buffer,n.byteOffset+e,n.length-e),"getView"),z=b(n=>{const e=Buffer.allocUnsafe(8);return e.writeBigUInt64LE(n),e.readBigUInt64BE()},"bswap64"),G=b(n=>{let e=n;return e=(e&0x0000FFFFn)<<16n|(e&0xFFFF0000n)>>16n,e=(e&0x00FF00FFn)<<8n|(e&0xFF00FF00n)>>8n,e},"bswap32"),J=b((n,e)=>(n&x)*(e&x)&a,"multU32ToU64"),K=b((n,e)=>(n<<e|n>>32n-e)&x,"rotl32"),m=b((n,e)=>n^n>>e,"xorshift64"),p=b(n=>~n+1n&a,"inv64"),M=b((n,e)=>{const t=n*e&s;return t&a^t>>64n},"mul128Fold64"),f=b(n=>{let e=n;return e^=e>>37n,e=e*V&a,e^=e>>32n,e},"avalanche"),y=b(n=>{let e=n;return e^=e>>33n,e=e*l&a,e^=e>>29n,e=e*H&a,e^=e>>32n,e},"avalanche64"),O=b((n,e,t)=>{for(let r=0;r<S;r++){const g=e.readBigUInt64LE(r*8),B=g^t.readBigUInt64LE(r*8);n[r^1]+=g,n[r]+=J(B,B>>32n)}return n},"accumulate512"),C=b((n,e,t,r)=>{for(let g=0;g<r;g++)O(n,d(e,g*I),d(t,g*8));return n},"accumulate"),Q=b((n,e)=>{for(let t=0;t<S;t++){const r=e.readBigUInt64LE(t*8);let g=n[t];g=m(g,47n),g^=r,g*=w,n[t]=g&a}return n},"scrambleAcc"),u=b((n,e)=>M(n[0]^e.readBigUInt64LE(0),n[1]^e.readBigUInt64LE(q)),"mix2Accs"),_=b((n,e,t)=>{let r=t;return r+=u(n.slice(0),d(e,0)),r+=u(n.slice(2),d(e,16)),r+=u(n.slice(4),d(e,32)),r+=u(n.slice(6),d(e,48)),f(r&a)},"mergeAccs"),R=b((n,e,t)=>{const r=Math.floor((t.byteLength-I)/8),g=I*r,B=Math.floor((e.byteLength-1)/g);for(let o=0;o<B;o++)C(n,d(e,o*g),t,r),Q(n,d(t,t.byteLength-I));const c=Math.floor((e.byteLength-1-g*B)/I);return C(n,d(e,B*g),t,c),O(n,d(e,e.byteLength-I),d(t,t.byteLength-I-7)),n},"hashLong"),W=b((n,e)=>{const t=new BigUint64Array([N,h,l,H,A,D,P,w]);R(t,n,e);const r=_(t,d(e,11),BigInt(n.byteLength)*h&a);return _(t,d(e,e.byteLength-I-11),~(BigInt(n.byteLength)*l)&a)<<64n|r},"hashLong128b"),v=b((n,e,t)=>M((n.readBigUInt64LE(0)^e.readBigUInt64LE(0)+t)&a,(n.readBigUInt64LE(8)^e.readBigUInt64LE(8)-t)&a),"mix16B"),U=b((n,e,t,r,g)=>{let B=n&a,c=n>>64n&a;return B+=v(e,r,g),B^=t.readBigUInt64LE(0)+t.readBigUInt64LE(8),B&=a,c+=v(t,d(r,16),g),c^=e.readBigUInt64LE(0)+e.readBigUInt64LE(8),c&=a,c<<64n|B},"mix32B"),Y=b((n,e,t)=>{const r=n.byteLength,g=BigInt(n.readUInt8(r-1))|BigInt(r<<8)|BigInt(n.readUInt8(0)<<16)|BigInt(n.readUInt8(r>>1)<<24),B=(BigInt(e.readUInt32LE(0))^BigInt(e.readUInt32LE(4)))+t,c=(g^B)&a,o=(BigInt(e.readUInt32LE(8))^BigInt(e.readUInt32LE(12)))-t,i=(K(G(g),13n)^o)&a;return(y(i)&a)<<64n|y(c)},"len1to3_128b"),Z=b((n,e,t)=>{const r=n.byteLength,g=n.readUInt32LE(0),B=n.readUInt32LE(r-4),c=BigInt(g)|BigInt(B)<<32n,o=(e.readBigUInt64LE(16)^e.readBigUInt64LE(24))+t&a;let i=(c^o)*(h+(BigInt(r)<<2n))&s;return i+=(i&a)<<65n,i&=s,i^=i>>67n,m(m(i&a,35n)*k&a,28n)|f(i>>64n)<<64n},"len4to8_128b"),$=b((n,e,t)=>{const r=n.byteLength,g=(e.readBigUInt64LE(32)^e.readBigUInt64LE(40))+t&a,B=(e.readBigUInt64LE(48)^e.readBigUInt64LE(56))-t&a,c=n.readBigUInt64LE();let o=n.readBigUInt64LE(r-8),i=(c^o^g)*h;const T=(i&a)+(BigInt(r-1)<<54n);i=i&(s^a)|T,o^=B,i+=o+(o&x)*(D-1n)<<64n,i&=s,i^=z(i>>64n);let E=(i&a)*l;return E+=(i>>64n)*l<<64n,E&=s,f(E&a)|f(E>>64n)<<64n},"len9to16_128b"),ee=b((n,e)=>{const t=n.byteLength;return t>8?$(n,L,e):t>=4?Z(n,L,e):t>0?Y(n,L,e):y(e^L.readBigUInt64LE(64)^L.readBigUInt64LE(72))|y(e^L.readBigUInt64LE(80)^L.readBigUInt64LE(88))<<64n},"len0to16_128b"),ne=b((n,e,t)=>{let r=BigInt(n.byteLength)*h&a,g=BigInt(n.byteLength-1)/32n;for(;g>=0n;){const o=Number(g);r=U(r,d(n,16*o),d(n,n.byteLength-16*(o+1)),d(e,32*o),t),g--}let B=r+(r>>64n)&a;B=f(B);let c=(r&a)*h+(r>>64n)*A+(BigInt(n.byteLength)-t&a)*l;return c&=a,c=p(f(c)),B|c<<64n},"len17to128_128b"),te=b((n,e,t)=>{let r=BigInt(n.byteLength)*h&a;for(let c=32;c<160;c+=32)r=U(r,d(n,c-32),d(n,c-16),d(e,c-32),t);r=f(r&a)|f(r>>64n)<<64n;for(let c=160;c<=n.byteLength;c+=32)r=U(r,d(n,c-32),d(n,c-16),d(e,3+c-160),t);r=U(r,d(n,n.byteLength-16),d(n,n.byteLength-32),d(e,103),p(t));let g=r+(r>>64n)&a;g=f(g);let B=(r&a)*h+(r>>64n)*A+(BigInt(n.byteLength)-t&a)*l;return B&=a,B=p(f(B)),g|B<<64n},"len129to240_128b"),re=b((n,e=0n)=>{const t=n.byteLength;return t<=16?ee(n,e):t<=128?ne(n,L,e):t<=240?te(n,L,e):W(n,L)},"xxh3_128"),ae=b(n=>{const e=n>>64n&a,t=n&a;return e.toString(16).padStart(16,"0")+t.toString(16).padStart(16,"0")},"bigintToHex"),ge=b(n=>ae(re(n)),"xxh3Hash");class be{static{F(this,"gn")}static{b(this,"Xxh3Hasher")}#e=[];update(e){return typeof e=="string"?this.#e.push(Buffer.from(e)):this.#e.push(e),this}digest(){return ge(Buffer.concat(this.#e))}}b(()=>new be,"createXxh3Hasher");export{ge as X};
|