@visulima/vis 0.0.1 → 1.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/CHANGELOG.md +360 -0
  2. package/LICENSE.md +91 -0
  3. package/README.md +364 -29
  4. package/dist/bin.js +2 -0
  5. package/dist/errors/index.d.ts +26 -0
  6. package/dist/errors/index.js +1 -0
  7. package/dist/generate/index.d.ts +157 -0
  8. package/dist/generate/index.js +1 -0
  9. package/dist/packem_chunks/bin.js +87 -0
  10. package/dist/packem_chunks/config.js +2 -0
  11. package/dist/packem_chunks/fix.js +53 -0
  12. package/dist/packem_chunks/handler.js +1 -0
  13. package/dist/packem_chunks/handler10.js +1 -0
  14. package/dist/packem_chunks/handler11.js +1 -0
  15. package/dist/packem_chunks/handler12.js +2 -0
  16. package/dist/packem_chunks/handler13.js +1 -0
  17. package/dist/packem_chunks/handler14.js +5 -0
  18. package/dist/packem_chunks/handler15.js +1 -0
  19. package/dist/packem_chunks/handler16.js +20 -0
  20. package/dist/packem_chunks/handler17.js +1 -0
  21. package/dist/packem_chunks/handler18.js +1 -0
  22. package/dist/packem_chunks/handler19.js +1 -0
  23. package/dist/packem_chunks/handler2.js +1 -0
  24. package/dist/packem_chunks/handler20.js +1 -0
  25. package/dist/packem_chunks/handler21.js +1 -0
  26. package/dist/packem_chunks/handler22.js +5 -0
  27. package/dist/packem_chunks/handler23.js +1 -0
  28. package/dist/packem_chunks/handler24.js +1 -0
  29. package/dist/packem_chunks/handler25.js +5 -0
  30. package/dist/packem_chunks/handler26.js +1 -0
  31. package/dist/packem_chunks/handler27.js +3 -0
  32. package/dist/packem_chunks/handler28.js +1 -0
  33. package/dist/packem_chunks/handler29.js +7 -0
  34. package/dist/packem_chunks/handler3.js +2 -0
  35. package/dist/packem_chunks/handler30.js +23 -0
  36. package/dist/packem_chunks/handler31.js +3 -0
  37. package/dist/packem_chunks/handler32.js +2 -0
  38. package/dist/packem_chunks/handler33.js +24 -0
  39. package/dist/packem_chunks/handler34.js +2 -0
  40. package/dist/packem_chunks/handler35.js +19 -0
  41. package/dist/packem_chunks/handler36.js +428 -0
  42. package/dist/packem_chunks/handler37.js +22 -0
  43. package/dist/packem_chunks/handler38.js +22 -0
  44. package/dist/packem_chunks/handler39.js +22 -0
  45. package/dist/packem_chunks/handler4.js +4 -0
  46. package/dist/packem_chunks/handler40.js +3 -0
  47. package/dist/packem_chunks/handler41.js +10 -0
  48. package/dist/packem_chunks/handler42.js +153 -0
  49. package/dist/packem_chunks/handler43.js +42 -0
  50. package/dist/packem_chunks/handler44.js +3 -0
  51. package/dist/packem_chunks/handler45.js +27 -0
  52. package/dist/packem_chunks/handler5.js +2 -0
  53. package/dist/packem_chunks/handler6.js +13 -0
  54. package/dist/packem_chunks/handler7.js +8 -0
  55. package/dist/packem_chunks/handler8.js +1 -0
  56. package/dist/packem_chunks/handler9.js +1 -0
  57. package/dist/packem_chunks/index.js +7 -0
  58. package/dist/packem_chunks/loader.js +1 -0
  59. package/dist/packem_shared/VisConfigCycleError-CAYNC7d-.js +1 -0
  60. package/dist/packem_shared/VisConfigError-B5LP1zRf.js +1 -0
  61. package/dist/packem_shared/VisConfigLoadError-CeqBSd2Z.js +2 -0
  62. package/dist/packem_shared/VisConfigNotFoundError-DZ9KC527.js +5 -0
  63. package/dist/packem_shared/VisUpdateApp-D-L4_-Iu.js +1 -0
  64. package/dist/packem_shared/_commonjsHelpers-D6W6KoPK.js +1 -0
  65. package/dist/packem_shared/ai-analysis-CGuy7dfE.js +67 -0
  66. package/dist/packem_shared/ai-cache-Bynt6Y9x.js +1 -0
  67. package/dist/packem_shared/cache-directory-D72ZEag2.js +1 -0
  68. package/dist/packem_shared/catalog-BVPerCwG.js +12 -0
  69. package/dist/packem_shared/dependency-scan-Du0tBu64.js +2 -0
  70. package/dist/packem_shared/docker-BcfqH4Av.js +2 -0
  71. package/dist/packem_shared/failure-log-DqYen0LC.js +2 -0
  72. package/dist/packem_shared/flakiness-DSIHZGBT.js +1 -0
  73. package/dist/packem_shared/run-summary-utils-C24Aaf9E.js +1 -0
  74. package/dist/packem_shared/runtime-check-CGHal8SO.js +1 -0
  75. package/dist/packem_shared/selectors-CfH9ZY08.js +3 -0
  76. package/dist/packem_shared/symbols-CQmER5MT.js +1 -0
  77. package/dist/packem_shared/target-merge-DNa-6eWu.js +1 -0
  78. package/dist/packem_shared/toolchain-DQfTQY8E.js +5 -0
  79. package/dist/packem_shared/typosquats-DOR8izpX.js +1 -0
  80. package/dist/packem_shared/use-measured-height-DjYgUOKk.js +1 -0
  81. package/dist/packem_shared/utils-DrNg0XTR.js +1 -0
  82. package/dist/packem_shared/xxh3-DrAUNq4n.js +1 -0
  83. package/index.js +601 -0
  84. package/package.json +124 -7
  85. package/schemas/project.schema.json +422 -0
  86. package/schemas/vis-config.schema.json +377 -0
@@ -0,0 +1,67 @@
1
+ var R=Object.defineProperty;var y=(e,r)=>R(e,"name",{value:r,configurable:!0});import{runProvider as E,PROVIDER_NAMES as j,detectProvider as T,detectAvailableProviders as N}from"@visulima/find-ai-runner";import{renderToString as C,Box as I,Text as g,Table as L}from"@visulima/tui";import d from"react";import{D as x,R as M,j as P,k as O}from"./ai-cache-Bynt6Y9x.js";var q=Object.defineProperty,w=y((e,r)=>q(e,"name",{value:r,configurable:!0}),"i");const B=12e4,J=2,z=1e3,D=w(e=>new Promise(r=>{setTimeout(r,e)}),"sleep"),b=w(async(e,r,i=J)=>{let a;for(let t=0;t<=i;t+=1)try{return(await E(e,r,{timeoutMs:B})).stdout}catch(n){if(a=n instanceof Error?n:new Error(String(n)),a.message.includes("timed out"))throw a;if(t<i){const s=z*2**t;await D(s)}}throw a??new Error("AI request failed after retries")},"runWithRetry");var F=Object.defineProperty,l=y((e,r)=>F(e,"name",{value:r,configurable:!0}),"c");const V={amp:30,claude:80,codex:60,copilot:50,crush:35,cursor:40,droid:20,gemini:100,kimi:25,opencode:35,qwen:30},_=l(e=>{if(e?.provider){if(!j.includes(e.provider))return;const a=T(e.provider);return a.available?a:void 0}const r=N();if(r.length===0)return;const i={...V,...e?.priority};return r.toSorted((a,t)=>(i[t.name]??0)-(i[a.name]??0))[0]},"resolveProvider"),U=new Set(["defer","review","skip","update"]),W=new Set(["critical","high","low","medium"]),Y=new Set(["high","low","medium"]),K=50,f=30,G=l(e=>e.map(r=>{const i=r.vulnerabilities&&r.vulnerabilities.length>0?` [VULNERABILITIES: ${r.vulnerabilities.map(t=>`${t.severity} ${t.id}`).join(", ")}]`:"";let a="";if(r.socketReport){const t=Math.round(r.socketReport.score.overall*100),n=[`score:${String(t)}%`];if(r.socketReport.alerts.length>0){const s=r.socketReport.alerts.reduce((o,c)=>(o[c.severity]=(o[c.severity]??0)+1,o),{}),u=Object.entries(s).map(([o,c])=>`${String(c)} ${o}`).join(", ");n.push(`alerts: ${u}`)}n.push(`supply-chain:${String(Math.round(r.socketReport.score.supplyChain*100))}%`),n.push(`quality:${String(Math.round(r.socketReport.score.quality*100))}%`),a=` [SOCKET.DEV: ${n.join(", ")}]`}return`- ${r.packageName}: ${r.currentRange} → ${r.newRange} (${r.updateType})${i}${a}`}).join(`
2
+ `),"buildPackageList"),h=`Respond ONLY with valid JSON in this exact structure:
3
+ {
4
+ "summary": "Brief overall summary",
5
+ "recommendations": [
6
+ {
7
+ "package": "package-name",
8
+ "action": "update|skip|review|defer",
9
+ "reason": "explanation",
10
+ "riskLevel": "low|medium|high|critical",
11
+ "breakingChanges": ["change1"],
12
+ "effort": "low|medium|high"
13
+ }
14
+ ],
15
+ "warnings": ["warning1"]
16
+ }`,X={compatibility:l(e=>`Analyze the compatibility of these package updates:
17
+
18
+ ${e}
19
+
20
+ For each package:
21
+ 1. Check peer dependency compatibility
22
+ 2. Identify potential conflicts with other packages in the list
23
+ 3. Assess API compatibility between current and target versions
24
+ 4. Check for deprecated features being removed
25
+ 5. Evaluate Node.js version requirements
26
+
27
+ ${h}`,"compatibility"),impact:l(e=>`Analyze the impact of updating these npm packages:
28
+
29
+ ${e}
30
+
31
+ For each package, provide:
32
+ 1. Risk level (low/medium/high/critical)
33
+ 2. Recommended action (update/skip/review/defer)
34
+ 3. Reason for recommendation
35
+ 4. Known breaking changes (if any)
36
+ 5. Estimated migration effort (low/medium/high)
37
+
38
+ ${h}`,"impact"),recommend:l(e=>`Provide smart recommendations for updating these packages:
39
+
40
+ ${e}
41
+
42
+ Consider:
43
+ 1. Update priority based on security, features, and stability
44
+ 2. Grouping related packages for atomic updates
45
+ 3. Best practices for the specific package ecosystem
46
+ 4. Risk vs. benefit analysis
47
+ 5. Suggested update order
48
+ 6. If Socket.dev scores are provided, prioritize packages with low supply chain or quality scores
49
+
50
+ ${h}`,"recommend"),security:l(e=>`Analyze the security implications of these package updates:
51
+
52
+ ${e}
53
+
54
+ For each package:
55
+ 1. Check if the update fixes known vulnerabilities (use the vulnerability data above)
56
+ 2. Assess if the new version introduces security risks
57
+ 3. Evaluate if this is a security-sensitive package (auth, crypto, session, etc.)
58
+ 4. Recommend urgency of the update based on vulnerability severity
59
+ 5. Flag any packages where skipping the update poses security risk
60
+ 6. If Socket.dev scores are provided, factor in supply chain and quality scores — low scores indicate higher risk
61
+
62
+ ${h}`,"security")},H=new Set(["compatibility","impact","recommend","security"]),ue=l(e=>H.has(e)?e:"impact","validateAnalysisType"),S=l((e,r="impact")=>{const i=G(e);return X[r](i)},"buildAnalysisPrompt"),Z=/```(?:json)?\s*([\s\S]*?)```/,Q=/\{[\s\S]*\}/,ee=l(e=>{try{return JSON.parse(e)}catch{}const r=Z.exec(e);if(r?.[1])try{return JSON.parse(r[1])}catch{}const i=Q.exec(e);if(i?.[0])try{return JSON.parse(i[0])}catch{}},"extractJson"),re=l(e=>({action:U.has(e.action)?e.action:"review",breakingChanges:Array.isArray(e.breakingChanges)?e.breakingChanges:[],effort:Y.has(e.effort)?e.effort:"medium",package:typeof e.package=="string"?e.package:"",reason:typeof e.reason=="string"?e.reason:"",riskLevel:W.has(e.riskLevel)?e.riskLevel:"medium"}),"normalizeRecommendation"),$=l((e,r,i)=>{const a=ee(e);if(!a||typeof a!="object")return{analysisType:i,provider:r,recommendations:[],summary:"Failed to parse AI response.",warnings:["AI response was not valid JSON."]};const t=a,n=Array.isArray(t.recommendations)?t.recommendations:[];return{analysisType:i,provider:r,recommendations:n.map(s=>re(s)),summary:typeof t.summary=="string"?t.summary:"",warnings:Array.isArray(t.warnings)?t.warnings:[]}},"parseAiResponse"),ae={eslint:["ESLint 9.0: Flat config required","ESLint 8.0+: New rule formats"],next:["Next.js 13+: App router changes","Next.js 14+: Server components default"],react:["React 17 to 18: Concurrent features","React 18+: Strict mode changes"],typescript:["TypeScript 5.0: New decorators","TypeScript 4.7+: ESM changes"],vite:["Vite 5: Node.js 18+ required"],vue:["Vue 3: Composition API","Vue 3: Breaking template changes"],webpack:["Webpack 5: Node.js polyfills removed"]},te=new Set(["bcrypt","cors","crypto-js","express-session","helmet","jose","jsonwebtoken","node-forge","oauth","passport"]),v=l((e,r)=>{const i=e.map(a=>{const t=a.vulnerabilities&&a.vulnerabilities.length>0,n=te.has(a.packageName),s=ae[a.packageName]??[];let u="low",o="update",c="low",m="Patch/minor update, safe to apply.";return a.updateType==="major"?(u="high",o=s.length>0?"review":"update",c="medium",m=s.length>0?`Major update with known breaking changes: ${s[0]}`:"Major version update, review changelog before applying."):a.updateType==="minor"&&(u="medium",m="Minor update, generally safe."),t&&(u="high",o="update",m="Security update — current version has known vulnerabilities."),n&&a.updateType==="major"&&(o="review",m="Security-sensitive package with major update, careful review needed.",c="high"),{action:o,breakingChanges:s,effort:c,package:a.packageName,reason:m,riskLevel:u}});return{analysisType:r,provider:"rule-engine",recommendations:i,summary:`Rule-based ${r} analysis for ${String(e.length)} packages.`,warnings:["No AI provider available — using built-in rule engine."]}},"ruleBasedAnalysis"),ie=l(async(e,r,i)=>{const a=S(r,i),t=await b(e,a);return $(t,e.name,i)},"analyzeChunk"),ne=l((e,r,i)=>{const a=[],t=[],n=[];for(const s of e)a.push(...s.recommendations),t.push(...s.warnings),s.summary&&n.push(s.summary);return{analysisType:i,provider:r,recommendations:a,summary:n.length===1?n[0]??"":`Analyzed ${String(a.length)} packages in ${String(e.length)} batches.`,warnings:[...new Set(t)]}},"mergeResults"),A={compatibility:"Compatibility",impact:"Impact",recommend:"Recommendations",security:"Security"},me=l(e=>{const r=`${A[e.analysisType]??e.analysisType} Analysis (${e.provider})`,i=e.recommendations.flatMap(t=>{const n=[{action:t.action,effort:t.effort,package:t.package,reason:t.reason,risk:t.riskLevel}];return t.breakingChanges.length>0&&n.push({action:"",effort:"",package:"",reason:`Breaking: ${t.breakingChanges.join("; ")}`,risk:""}),n}),a=process.stdout.columns||80;return C(d.createElement(I,{borderStyle:"round",flexDirection:"column",paddingLeft:1,paddingRight:1},d.createElement(g,{bold:!0},r),d.createElement(g,null,""),d.createElement(g,null,e.summary),d.createElement(g,null,""),d.createElement(L,{borderStyle:"none",data:i}),...e.warnings.length>0?[d.createElement(g,null,""),...e.warnings.map((t,n)=>d.createElement(g,{dimColor:!0,key:String(n)},` ${t}`))]:[]),{columns:a})},"formatAiAnalysis");l(e=>JSON.stringify(e,void 0,2),"formatAiAnalysisJson");const de=l(async(e,r,i,a="impact")=>{const t=_(i);if(!t)return r.info(`No AI CLI tool found, using rule-based analysis.
63
+ `),v(e,a);const n=x(t.name,a,e),s=M(n);if(s)return r.info(`Using cached ${a} analysis from ${s.provider}.
64
+ `),s;const u=A[a]??a;r.info(`Running ${u.toLowerCase()} analysis with ${t.name}...
65
+ `);try{let o;if(e.length>K){r.info(`Splitting ${String(e.length)} packages into batches of ${String(f)}...
66
+ `);const c=[];for(let p=0;p<e.length;p+=f)c.push(e.slice(p,p+f));const m=[];for(let p=0;p<c.length;p+=1){r.info(` Batch ${String(p+1)}/${String(c.length)}...`);const k=c[p];k&&m.push(await ie(t,k,a))}o=ne(m,t.name,a)}else{const c=await b(t,S(e,a));o=$(c,t.name,a)}return P(n,o,O(a,i?.cacheTtl)),o}catch(o){const c=o instanceof Error?o.message:String(o);return r.warn(`AI analysis failed (${c}), falling back to rule engine.
67
+ `),v(e,a)}},"runAiAnalysis");export{V as R,me as Z,_ as b,de as e,b as r,ee as w,ue as z};
@@ -0,0 +1 @@
1
+ var _=Object.defineProperty;var m=(t,e)=>_(t,"name",{value:e,configurable:!0});import{createRequire as b}from"node:module";import{X as v}from"./xxh3-DrAUNq4n.js";import{ensureDirSync as J,isAccessibleSync as d,readJsonSync as j}from"@visulima/fs";import{join as c}from"@visulima/path";const w=b(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,h=m(t=>{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(t)}return w(t)},"__cjs_getBuiltinModule"),{rmSync:f,writeFileSync:p,readdirSync:S,statSync:A}=h("node:fs"),{homedir:D}=h("node:os");var M=Object.defineProperty,n=m((t,e)=>M(t,"name",{value:e,configurable:!0}),"r");const a=n(()=>c(D(),".vis","cache","ai"),"getCacheDirectory"),B=3600*1e3,N=1800*1e3,C=n(()=>{J(a())},"ensureCacheDirectory"),k=n((t,e,r)=>{const s=r.map(i=>({currentRange:i.currentRange,name:i.packageName,targetVersion:i.targetVersion})).toSorted((i,y)=>i.name.localeCompare(y.name)),o=JSON.stringify({analysisType:e,packages:s,provider:t});return v(Buffer.from(o))},"buildCacheKey"),q=n(t=>{const e=c(a(),`${t}.json`);if(d(e))try{const r=j(e);if(Date.now()-r.createdAt>r.ttlMs){f(e,{force:!0});return}return r.result}catch{f(e,{force:!0});return}},"getCachedAnalysis"),z=n((t,e,r)=>{C();const s=a(),o={createdAt:Date.now(),result:e,ttlMs:r};p(c(s,`${t}.json`),JSON.stringify(o,void 0,2),"utf8")},"setCachedAnalysis"),F=n((t,e)=>e!==void 0&&e>0?e:t==="security"?N:B,"getTtlForAnalysisType"),K=n(()=>{const t=a();if(!d(t))return{entries:0,newestEntry:void 0,oldestEntry:void 0,totalSizeBytes:0};const e=S(t).filter(i=>i.endsWith(".json"));let r=0,s,o;for(const i of e){const y=c(t,i),g=A(y);r+=g.size;const{mtimeMs:l}=g;(s===void 0||l<s)&&(s=l),(o===void 0||l>o)&&(o=l)}return{entries:e.length,newestEntry:o,oldestEntry:s,totalSizeBytes:r}},"getCacheStats"),P=n(t=>v(Buffer.from(JSON.stringify(t))),"buildHashCacheKey"),V=n(t=>{const e=c(a(),`${t}.json`);if(d(e))try{const r=j(e);if(Date.now()-r.createdAt>r.ttlMs){f(e,{force:!0});return}return r.result}catch{f(e,{force:!0});return}},"getCachedJson"),W=n((t,e,r)=>{C();const s=a(),o={createdAt:Date.now(),result:e,ttlMs:r};p(c(s,`${t}.json`),JSON.stringify(o,void 0,2),"utf8")},"setCachedJson"),x=n(()=>{const t=a();if(!d(t))return 0;const e=S(t).filter(r=>r.endsWith(".json"));for(const r of e)f(c(t,r),{force:!0});return e.length},"clearCache");export{x as B,k as D,K as J,P as M,V as N,W as O,q as R,z as j,F as k};
@@ -0,0 +1 @@
1
+ var W=Object.defineProperty;var u=(e,t)=>W(e,"name",{value:t,configurable:!0});import{createRequire as C}from"node:module";import{resolve as a,isAbsolute as g,dirname as b,relative as S}from"@visulima/path";import{loadNativeBindings as E,DEFAULT_CACHE_DIRECTORY_NAME as y}from"@visulima/task-runner";const R=C(import.meta.url),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,v=u(e=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[t,r]=l.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return l.getBuiltinModule(e)}return R(e)},"__cjs_getBuiltinModule"),{execFileSync:m}=v("node:child_process"),{realpathSync:M,statSync:A}=v("node:fs");var B=Object.defineProperty,c=u((e,t)=>B(e,"name",{value:t,configurable:!0}),"r");let f,h=!1;const p=c(()=>{if(h)return f;h=!0;const e=E();return e&&typeof e.getMainWorktreeRoot=="function"&&typeof e.isLinkedWorktree=="function"&&(f={getMainWorktreeRoot:e.getMainWorktreeRoot,isLinkedWorktree:e.isLinkedWorktree,resetWorktreeCache:typeof e.resetWorktreeCache=="function"?e.resetWorktreeCache:()=>{}}),f},"getNativeBindings"),d=new Map,k=c(e=>{try{return M(e)}catch{return e}},"canonicalize"),_=c(e=>{try{return A(a(e,".git")).isFile()}catch{return!1}},"fallbackIsLinkedWorktree"),D=c(e=>{const t=k(e);if(d.has(t))return d.get(t);let r;try{if(_(t)){const o=m("git",["rev-parse","--git-common-dir"],{cwd:t,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();if(o.length>0){const n=g(o)?o:a(t,o),i=k(b(n));r=i===t?void 0:i}}else r=void 0}catch{r=void 0}return d.set(t,r),r},"fallbackGetMainWorktreeRoot"),j=c(e=>{const t=p();if(t){const r=t.getMainWorktreeRoot(e);return typeof r=="string"&&r.length>0?r:void 0}return D(e)},"getMainWorktreeRoot");c(e=>{const t=p();return t?t.isLinkedWorktree(e):_(e)},"isLinkedWorktree");c(()=>{d.clear();const e=p();e&&e.resetWorktreeCache()},"resetWorktreeCache");var I=Object.defineProperty,s=u((e,t)=>I(e,"name",{value:t,configurable:!0}),"i");const L=s((e,t,r)=>{const o=s(i=>g(i)?i:a(e,i),"normalize");if(t&&t.length>0)return o(t);if(r&&r.length>0)return o(r);const n=process.env.VIS_CACHE_DIRECTORY;return n&&n.length>0?o(n):a(e,y)},"resolveCacheDirectory"),T=s((e,t)=>t===!1?e:j(e)??e,"resolveSharedCacheRoot"),P=s((e,t,r,o)=>{const n=t??r??process.env.VIS_CACHE_DIRECTORY;if(n&&n.length>0)return L(e,t,r);const i=T(e,o);return a(i,y)},"resolveSharedCacheDirectory"),H=/[^\w.-]+/g,O=/^-+|-+$/g,w=s(e=>e.trim().replaceAll(H,"-").replaceAll(O,"").slice(0,64),"sanitizeBranchSegment"),z=s(e=>{try{const t=m("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();return!t||t==="HEAD"?void 0:t}catch{return}},"detectGitBranch"),Y=s((e,t,r)=>{if(r!==!0)return e;const o=z(t);if(!o)return e;const n=w(o);return n.length===0?e:a(e,"branches",n)},"applyBranchScope"),x=s((e,t)=>{const r=S(t,e);return r.length===0?!1:!(r===".."||r.startsWith("../"))&&!g(r)},"isCacheDirectoryInsideWorkspace");export{P as E,x as _,Y as a};
@@ -0,0 +1,12 @@
1
+ var ge=Object.defineProperty;var O=(e,t)=>ge(e,"name",{value:t,configurable:!0});import{createRequire as ue}from"node:module";import{findCacheDirSync as G}from"@visulima/find-cache-dir";import{isAccessibleSync as d,readFileSync as y,readJsonSync as w,ensureDirSync as E,writeJsonSync as D,writeFileSync as C,walkSync as he,removeSync as ke}from"@visulima/fs";import{join as m,dirname as X}from"@visulima/path";import{Text as P,renderToString as K,Box as ye,Table as we}from"@visulima/tui";import R from"react";import{rcompare as $e,parse as ve,coerce as je}from"semver";import{b as F,U as Ne,q as be,f as L,D as Se}from"../packem_chunks/bin.js";const me=ue(import.meta.url),S=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,fe=O(e=>{if(typeof S<"u"&&S.versions&&S.versions.node){const[t,a]=S.versions.node.split(".").map(Number);if(t>22||t===22&&a>=3||t===20&&a>=16)return S.getBuiltinModule(e)}return me(e)},"__cjs_getBuiltinModule"),{createInterface:de}=fe("node:readline");var Re=Object.defineProperty,c=O((e,t)=>Re(e,"name",{value:t,configurable:!0}),"c");const Te=/^([\^~]|>=|<=|[><=])/,Ce=/^(?:'([^']+)'|"([^"]+)"|([^:\s]+)):\s*(?:'([^']+)'|"([^"]+)"|(\S+))/,Me=/^catalog:/m,Ae=/^catalogs:/m,Oe=/^(@[^:]+):registry$/,Pe=/^\/\/(.+)\/:_authToken$/,xe=/\*+/g,Ee=/[.+^${}()|[\]\\]/g,V=/[.*+?^${}()|[\]\\]/g,Z=/^['"]|['"]$/g,De=/^https?:\/\//,Q=/\/$/,We=/\n(\s+)/,ee=["dependencies","devDependencies","optionalDependencies","peerDependencies"],Ue=new Set([...ee,"overrides","pnpm.overrides","resolutions"]),W=c(e=>{const t=G("vis",{create:!0,cwd:e});if(!t)throw new Error("Cannot resolve cache directory. Ensure node_modules exists in your workspace. Run your package manager's install command first.");return m(t,"backup")},"getBackupDir"),v=c(e=>{const t=e.replace(/^[\^~]|^>=|^<=|^[><]/,""),a=ve(t);if(a)return{major:a.major,minor:a.minor,patch:a.patch,prerelease:Array.isArray(a.prerelease)?a.prerelease.join("."):String(a.prerelease??"")};const r=je(e);if(r)return{major:r.major,minor:r.minor,patch:r.patch,prerelease:""}},"parseVersion"),te=c(e=>Te.exec(e)?.[1]??"","extractPrefix"),Fe=c(e=>{const t=`${String(e.major)}.${String(e.minor)}.${String(e.patch)}`;return e.prerelease?`${t}-${e.prerelease}`:t},"versionToString"),Le=c((e,t)=>e.major!==t.major?"major":e.minor!==t.minor?"minor":e.patch!==t.patch||e.prerelease!==t.prerelease?"patch":"none","getUpdateType"),Ve=c((e,t)=>e.major!==t.major?e.major-t.major:e.minor!==t.minor?e.minor-t.minor:e.patch!==t.patch?e.patch-t.patch:!e.prerelease&&t.prerelease?1:e.prerelease&&!t.prerelease?-1:e.prerelease&&t.prerelease?e.prerelease<t.prerelease?-1:e.prerelease>t.prerelease?1:0:0,"compareVersions"),ae=c((e,t)=>Ve(t,e)>0,"isNewer"),T=c((e,t)=>{const a=t.replaceAll(xe,"*").replaceAll(Ee,String.raw`\$&`);return new RegExp(`^${a.replaceAll("*",".*").replaceAll("?",".")}$`).test(e)},"matchesPattern"),_e=c((e,t,a)=>a.some(r=>T(e,r))?!1:t.length>0?t.some(r=>T(e,r)):!0,"matchesFilters"),re=c(e=>{const t=Ce.exec(e);if(!t)return;const a=t[1]??t[2]??t[3],r=t[4]??t[5]??t[6];if(!(!a||!r))return[a,r]},"parseYamlEntry"),se=c((e,t,a,r)=>{e.has(t)||e.set(t,new Map);const n=e.get(t);n&&n.set(a,r)},"setCatalogEntry"),Be=c((e,t,a)=>{if(a<2)return;const r=re(t);r&&se(e,"default",r[0],r[1])},"parseCatalogSection"),Ie=c((e,t,a,r)=>{if(a===2&&t.endsWith(":"))return t.slice(0,-1).trim().replaceAll(Z,"");if(a>=4&&r){const n=re(t);n&&se(e,r,n[0],n[1])}return r},"parseCatalogsSection"),ne=c(e=>e==="catalog:"||e.startsWith("catalog:")?"catalog":e==="catalogs:"||e.startsWith("catalogs:")?"catalogs":"none","detectTopLevelSection"),Je=c(e=>{const t=new Map;let a="none",r="";for(const n of e.split(`
2
+ `)){const s=n.trimStart(),o=n.length-s.length;if(o===0&&s.length>0&&!s.startsWith("#")){a=ne(s),a==="catalogs"&&(r="");continue}s.length===0||s.startsWith("#")||(a==="catalog"&&Be(t,s,o),a==="catalogs"&&(r=Ie(t,s,o,r)))}return t},"parseCatalogsFromYaml"),qe=c(e=>{const t=m(e,"pnpm-workspace.yaml");if(!d(t))return!1;const a=y(t);return Me.test(a)||Ae.test(a)},"hasPnpmCatalogs"),He=c(e=>{const t=m(e,"pnpm-workspace.yaml");if(!d(t))return new Map;const a=y(t);return Je(a)},"readPnpmCatalogs"),oe=c(e=>{if(d(e))try{return w(e)}catch{return}},"readPackageJsonSafe"),Ye=c(e=>{const t=oe(m(e,"package.json"));return!!(t?.workspaces?.catalog||t?.workspaces?.catalogs)},"hasBunCatalogs"),ze=c(e=>{const t=new Map;if(e.workspaces?.catalog&&typeof e.workspaces.catalog=="object"&&t.set("default",new Map(Object.entries(e.workspaces.catalog))),e.workspaces?.catalogs&&typeof e.workspaces.catalogs=="object")for(const[a,r]of Object.entries(e.workspaces.catalogs))typeof r=="object"&&r!==void 0&&t.set(a,new Map(Object.entries(r)));return t},"parseBunCatalogs"),Ge=c(e=>{const t=oe(m(e,"package.json"));return t?ze(t):new Map},"readBunCatalogs"),M=c(e=>{const t=e.lastIndexOf(":");if(t===-1)return;const a=e.slice(t+1);if(Ue.has(a))return{depType:a,relativePath:e.slice(0,t)}},"parseCompositeCatalogName"),Xe=c(e=>e?.dev?["devDependencies"]:e?.prod?["dependencies"]:e?.depFields&&e.depFields.length>0?e.depFields:ee,"getDepTypesToInclude"),Ke=c((e,t,a)=>{const r=new Set;t&&r.add(t);for(const n of a){const s=m(e,n,"package.json");if(d(s))try{const o=w(s);o.name&&r.add(o.name)}catch{}}return r},"collectInternalPackageNames"),ce=c((e,t)=>{const a=t.split(".");let r=e;for(const n of a)if(r&&typeof r=="object")r=r[n];else return;return typeof r=="object"&&r!==null?r:void 0},"getNestedField"),Ze=c((e,t,a,r)=>{const n=t.split(".");let s=e;for(const i of n.slice(0,-1))(!s[i]||typeof s[i]!="object")&&(s[i]={}),s=s[i];const o=n.at(-1);(!s[o]||typeof s[o]!="object")&&(s[o]={}),s[o][a]=r},"setNestedField"),Qe=c((e,t)=>{const a=new Map;for(const[r,n]of Object.entries(e))t.has(r)||n.startsWith("workspace:")||n.startsWith("file:")||n.startsWith("link:")||n.startsWith("catalog:")||n.startsWith("$")||a.set(r,n);return a},"filterExternalDeps"),et=c((e,t,a,r,n,s)=>{const o=t==="."?a:m(e,t,"package.json");if(!d(o))return;let i;try{i=w(o)}catch{return}for(const l of r){const p=l.includes(".")?ce(i,l):i[l];if(!p||typeof p!="object")continue;const g=Qe(p,n);g.size>0&&s.set(`${t}:${l}`,g)}},"scanDirectoryDeps"),tt=c((e,t)=>{const a=new Map,r=m(e,"package.json");if(!d(r))return a;const n=w(r);let s=[];const o=n.workspaces;if(o){const g=Array.isArray(o)?o:o.packages;g&&(s=L(e,g))}if(s.length===0){const g=Se(e);g&&(s=L(e,g))}const i=Ke(e,n.name,s),l=Xe(t),p=[".",...s];for(const g of p)et(e,g,r,l,i,a);return a},"readPackageJsonDeps"),x=c(e=>{const t=m(e,"package.json");if(!d(t))return!1;try{const a=w(t);return!!(a.dependencies||a.devDependencies||a.peerDependencies||a.optionalDependencies||a.overrides||a.resolutions||ce(a,"pnpm.overrides"))}catch{return!1}},"hasPackageJsonDeps"),_=c((e,t)=>{const a=new Map;for(const r of t){const n=M(r.catalogName);if(!n)continue;const s=n.relativePath==="."?m(e,"package.json"):m(e,n.relativePath,"package.json");a.has(s)||a.set(s,[]);const o=a.get(s);o&&o.push({depType:n.depType,newRange:r.newRange,packageName:r.packageName})}for(const[r,n]of a){const s=w(r);for(const{depType:o,newRange:i,packageName:l}of n)o.includes(".")?Ze(s,o,l,i):s[o]&&(s[o][l]=i);D(r,s,{detectIndent:!0,overwrite:!0})}},"applyPackageJsonUpdates"),Vt=c((e,t)=>t==="bun"?Ye(e)||x(e):t==="npm"||t==="yarn"?x(e):qe(e)||x(e),"hasCatalogs"),_t=c((e,t,a)=>{let r;t==="bun"?r=Ge(e):t==="npm"||t==="yarn"?r=new Map:r=He(e);const n=tt(e,a);for(const[s,o]of n)r.has(s)||r.set(s,o);return r},"readCatalogs"),B=c(e=>{const t=new Map,a=new Map;let r="https://registry.npmjs.org";for(const n of e.split(`
3
+ `)){const s=n.trim();if(!s||s.startsWith("#")||s.startsWith(";"))continue;const o=s.indexOf("=");if(o===-1)continue;const i=s.slice(0,o).trim(),l=s.slice(o+1).trim(),p=Oe.exec(i);if(p?.[1]){t.set(p[1],l);continue}if(i==="registry"){r=l;continue}const g=Pe.exec(i);g?.[1]&&a.set(g[1],l)}return{authTokens:a,defaultRegistry:r,registries:t}},"parseNpmrc"),at=c((e,t)=>({authTokens:new Map([...e.authTokens,...t.authTokens]),defaultRegistry:t.defaultRegistry==="https://registry.npmjs.org"?e.defaultRegistry:t.defaultRegistry,registries:new Map([...e.registries,...t.registries])}),"mergeNpmrcConfigs"),Bt=c(e=>{const t={authTokens:new Map,defaultRegistry:"https://registry.npmjs.org",registries:new Map},a=process.env.HOME??process.env.USERPROFILE??"",r=m(a,".npmrc");let n=a&&d(r)?B(y(r)):t;const s=m(e,".npmrc");return d(s)&&(n=at(n,B(y(s)))),n},"loadNpmrc"),rt=c((e,t)=>{let a=t.defaultRegistry;if(e.startsWith("@")){const n=e.split("/")[0];if(n&&t.registries.has(n)){const s=t.registries.get(n);s&&(a=s)}}const r=a.replace(De,"").replace(Q,"");return{token:t.authTokens.get(r),url:a}},"getRegistryForPackage"),ie=15e3,st=c(async(e,t,a=ie,r=!1)=>{const n=`${(t?.url??"https://registry.npmjs.org").replace(Q,"")}/${e}`,s=r?{Accept:"application/json"}:{Accept:"application/vnd.npm.install-v1+json"};t?.authToken&&(s.Authorization=`Bearer ${t.authToken}`);const o=new AbortController,i=setTimeout(()=>{o.abort()},a);try{const l=await fetch(n,{headers:s,signal:o.signal});if(!l.ok)throw new Error(`Failed to fetch ${e}: ${String(l.status)} ${l.statusText}`);const p=await l.json(),g={latest:p["dist-tags"]?.latest??"",versions:Object.keys(p.versions??{})};return r&&p.time&&(g.publishTimes=new Map(Object.entries(p.time))),g}finally{clearTimeout(i)}},"fetchPackageVersions"),nt=c(e=>{const t=e.database_specific?.severity?.toUpperCase();if(t==="CRITICAL"||t==="HIGH"||t==="MODERATE"||t==="LOW")return t;const a=e.severity?.find(r=>r.type==="CVSS_V3")?.score;if(a){const r=Number.parseFloat(a);return r>=9?"CRITICAL":r>=7?"HIGH":r>=4?"MODERATE":"LOW"}return"UNKNOWN"},"mapOsvSeverity"),ot=c(e=>{const t=e.severity?.find(a=>a.type==="CVSS_V3")?.score;return t?Number.parseFloat(t):void 0},"mapOsvCvss"),ct=c(e=>{const t=[];for(const a of e.affected??[])for(const r of a.ranges??[])for(const n of r.events??[])n.fixed&&t.push(n.fixed);return t},"mapOsvFixedVersions"),it=c(e=>({aliases:e.aliases?.length?e.aliases:void 0,cvssScore:ot(e),fixedVersions:ct(e),id:e.id,severity:nt(e),summary:e.summary??""}),"mapOsvVuln"),lt=c(async(e,t=1e4)=>{if(e.length===0)return new Map;const a=e.map(s=>({package:{ecosystem:"npm",name:s.name},version:s.version})),r=new AbortController,n=setTimeout(()=>{r.abort()},t);try{const s=await fetch("https://api.osv.dev/v1/querybatch",{body:JSON.stringify({queries:a}),headers:{"Content-Type":"application/json"},method:"POST",signal:r.signal});if(!s.ok)return new Map;const o=await s.json(),i=new Map;for(const[l,p]of e.entries()){const g=o.results[l]?.vulns;g&&g.length>0&&i.set(p.name,g.map(u=>it(u)))}return i}catch{return new Map}finally{clearTimeout(n)}},"fetchVulnerabilities"),I=new Map,pt=c((e,t,a)=>{if(!a)return t;const r=a[e];if(r!==void 0)return r;for(const[n,s]of Object.entries(a))if(n!==e){if(n.startsWith("/")&&n.endsWith("/")){let o=I.get(n);if(o||(o=new RegExp(n.slice(1,-1)),I.set(n,o)),o.test(e))return s}else if(T(e,n))return s}return t},"resolvePackageTarget"),le=c((e,t,a)=>{const r=t?.get(e);return r?Date.now()-new Date(r).getTime()<a:!1},"isTooNew"),gt=c(e=>e?.minimumReleaseAge?e.packageName&&e.minimumReleaseAgeExclude?.some(t=>T(e.packageName,t))?0:e.minimumReleaseAge*60*1e3:0,"resolveMinAgeMs"),J=c((e,t,a,r,n,s)=>e.map(o=>({parsed:v(o),raw:o})).filter(o=>!o.parsed||!a&&o.parsed.prerelease!==""||!ae(t,o.parsed)||r&&le(o.raw,n,r)?!1:s?s(o.parsed):!0).toSorted((o,i)=>$e(o.raw,i.raw))[0]?.raw,"filterCandidates"),ut=c((e,t,a,r,n,s)=>{const o=v(a);if(!o)return;const i=gt(s);if(r==="latest"){const p=v(t);return!p||!n&&p.prerelease!==""||!ae(o,p)?void 0:!i||!le(t,s?.publishTimes,i)?t:J(e,o,n,i,s?.publishTimes)}const l=r==="patch"?p=>p.major===o.major&&p.minor===o.minor:p=>p.major===o.major;return J(e,o,n,i,s?.publishTimes,l)},"findTargetVersion"),mt=c((e,t)=>{const a=[],r=new Set;for(const[n,s]of e)for(const[o,i]of s)if(!(i.startsWith("workspace:")||i.startsWith("file:")||i.startsWith("link:")||i==="*")&&!(!t.includeLocked&&!te(i))){if(t.ignore.some(l=>T(o,l))){r.add(o);continue}_e(o,t.include,t.exclude)&&a.push({catalogName:n,packageName:o,range:i})}return{entries:a,ignored:[...r]}},"collectEntries"),ft=c(async(e,t,a,r=!1)=>{const n=new Map,s=[],o=8;let i=0;for(let l=0;l<e.length;l+=o){const p=e.slice(l,l+o),g=await Promise.allSettled(p.map(async u=>{const f=t?rt(u,t):void 0,k=await st(u,f?{authToken:f.token,url:f.url}:void 0,ie,r);return n.set(u,k),u}));for(const[u,f]of g.entries())if(i+=1,f.status==="rejected"){const k=p[u];k&&s.push(k)}a&&a(i,e.length)}return{failed:s,versionCache:n}},"fetchVersionsBatched"),q=c((e,t,a)=>{const r=[];for(const n of e){const s=t.get(n.packageName);if(!s)continue;const o=pt(n.packageName,a.target,a.packageMode),i=ut(s.versions,s.latest,n.range,o,a.includePrerelease,{minimumReleaseAge:a.minimumReleaseAge,minimumReleaseAgeExclude:a.minimumReleaseAgeExclude,packageName:n.packageName,publishTimes:s.publishTimes});if(!i)continue;const l=v(n.range),p=v(i);if(!l||!p)continue;const g=Le(l,p);if(g==="none")continue;const u=te(n.range);r.push({catalogName:n.catalogName,currentRange:n.range,newRange:`${u}${i}`,packageName:n.packageName,targetVersion:i,updateType:g})}return r},"buildOutdatedEntries"),H=c(e=>e?Fe(e):"","formatVersionString"),dt=c(async(e,t,a,r)=>{const n=[...new Map(t.map(l=>{const p=v(l.range);return[l.packageName,{name:l.packageName,version:H(p)}]})).values()].filter(l=>l.version),s=a?Ne(n,a):void 0,[o,i]=await Promise.all([lt(n),s]);for(const l of e){const p=o.get(l.packageName);p&&p.length>0&&(l.vulnerabilities=p);const g=v(l.currentRange),u=H(g);if(i){const f=i.get(`${l.packageName}@${u}`);f&&(l.socketReport={alerts:f.alerts,license:f.license,score:f.score})}if(r){const f=be(l.packageName,u,r);f&&(l.acceptedRisk=f)}}},"enrichWithSecurity"),ht=6e4,kt=c((e,t,a,r)=>{const n=[];for(const[i,l]of e)for(const[p,g]of l)n.push(`${i}:${p}=${g}`);if(n.push(`target=${t.target},pre=${String(t.includePrerelease)},sec=${String(t.security??!1)}`),n.push(`in=${t.include.join(",")},ex=${t.exclude.join(",")},ig=${t.ignore.join(",")}`),n.push(`locked=${String(t.includeLocked)}`),n.push(`mra=${String(t.minimumReleaseAge??0)}`),t.packageMode){const i=Object.entries(t.packageMode).map(([l,p])=>`${l}=${p}`).toSorted().join(",");n.push(`pkgMode=${i}`)}n.push(`socket=${String(a??!1)}`),r&&r.length>0&&n.push(`risks=${r.toSorted().join(",")}`);let s=5381;const o=n.join("|");for(let i=0;i<o.length;i++)s=(s<<5)+s+o.charCodeAt(i)|0;return String(s)},"computeCacheHash"),pe=c(e=>{const t=G("vis",{create:!0,cwd:e});return t?m(t,"outdated-cache.json"):void 0},"getOutdatedCachePath"),yt=c((e,t)=>{const a=pe(e);if(!(!a||!d(a)))try{const r=w(a);if(r.hash===t&&Date.now()-r.timestamp<ht)return r.result}catch{}},"readOutdatedCache"),wt=c((e,t,a)=>{const r=pe(e);if(r)try{E(X(r)),D(r,{hash:t,result:a,timestamp:Date.now()})}catch{}},"writeOutdatedCache"),It=c(async(e,t,a,r,n,s,o)=>{const i=kt(e,t,!!s,o?Object.keys(o):void 0);if(n){const h=yt(n,i);if(h)return h}const{entries:l,ignored:p}=mt(e,t),g=[...new Set(l.map(h=>h.packageName))],u=!!(t.minimumReleaseAge&&t.minimumReleaseAge>0),{failed:f,versionCache:k}=await ft(g,a,r,u),j=q(l,k,t);let b=[];if(t.target!=="latest"){const h=new Set(j.map(A=>A.packageName)),$={...t,packageMode:void 0,target:"latest"};b=q(l,k,$).filter(A=>!h.has(A.packageName))}(t.security||s)&&j.length>0&&await dt(j,l,s,o);const N={checkedCount:g.length,failed:f,filteredByTarget:b,ignored:p,outdated:j};return n&&wt(n,i,N),N},"checkOutdated"),U=c((e,t)=>t==="bun"?m(e,"package.json"):m(e,"pnpm-workspace.yaml"),"getCatalogFilePath"),Y=c((e,t)=>{const a=W(e),r=new Set;for(const n of t){const s=M(n.catalogName);s&&r.add(s.relativePath==="."?"package.json":m(s.relativePath,"package.json"))}if(r.size!==0){E(a);for(const n of r){const s=m(e,n);if(d(s)){const o=m(a,n),i=X(o);E(i),C(o,y(s))}}return a}},"createPackageJsonBackup"),$t=c((e,t,a)=>{if((t==="npm"||t==="yarn")&&a)return Y(e,a);let r;const n=U(e,t);if(d(n)&&(r=`${n}.bak`,C(r,y(n))),a){const s=a.filter(o=>M(o.catalogName));s.length>0&&Y(e,s)}return r},"createBackup"),vt=c(e=>{const t=W(e);if(!d(t))return!1;for(const a of he(t,{includeDirs:!1})){const r=a.path.slice(t.length+1),n=m(e,r);C(n,y(a.path))}return ke(t),!0},"restorePackageJsonBackup"),Jt=c((e,t)=>{if(t==="npm"||t==="yarn")return vt(e);const a=U(e,t),r=`${a}.bak`;if(!d(r))return!1;const n=y(r);return C(a,n),!0},"restoreFromBackup"),qt=c((e,t)=>{if(t==="npm"||t==="yarn")try{const r=W(e);return d(r)}catch{return!1}const a=U(e,t);return d(`${a}.bak`)},"hasBackup"),Ht=c(e=>JSON.stringify(e,void 0,2),"formatOutdatedJson"),Yt=c(e=>e.map(t=>`${t.packageName} ${t.currentRange} → ${t.newRange}`).join(`
4
+ `),"formatOutdatedMinimal"),zt=c(e=>e?Array.isArray(e)?e:[e]:[],"toFilterArray"),jt=c(e=>{const t=new Map;for(const a of e){t.has(a.catalogName)||t.set(a.catalogName,[]);const r=t.get(a.catalogName);r&&r.push(a)}return t},"groupByCatalog"),Nt=c(e=>{const t=M(e);return t?`${t.relativePath==="."?"root":t.relativePath} (${t.depType})`:`Catalog: ${e}`},"formatCatalogDisplayName"),Gt=c((e,t)=>{const a=jt(e),r=process.stdout.columns||80,n=e.some(s=>s.socketReport);for(const[s,o]of a){const i=o.flatMap(g=>{const u=g.vulnerabilities&&g.vulnerabilities.length>0,f=g.socketReport&&g.socketReport.alerts.length>0,k=`${u||f?"[SEC] ":""}${g.packageName}`,j=g.socketReport?`${String(Math.round(g.socketReport.score.overall*100))}%`:"",b={current:g.currentRange,package:k,target:g.newRange,type:g.updateType};n&&(b.score=j);const N=[b];if(g.vulnerabilities)for(const h of g.vulnerabilities){const $={current:h.summary,package:` ${h.severity} ${h.id}`,target:"",type:""};n&&($.score=""),N.push($)}if(g.socketReport)for(const h of g.socketReport.alerts){const $={current:h.category,package:` [${h.severity.toUpperCase()}] ${h.type}`,target:"",type:""};n&&($.score=""),N.push($)}return N}),l=Nt(s),p=K(R.createElement(we,{data:i}),{columns:r});t.info(`${l}
5
+ ${p}
6
+ `)}},"formatOutdatedTable"),Xt=c(e=>{let t=0,a=0,r=0,n=0,s=0,o=0;for(const u of e)u.updateType==="major"?t++:u.updateType==="minor"?a++:r++,u.vulnerabilities&&u.vulnerabilities.length>0&&n++,u.socketReport?.alerts.length&&s++,u.socketReport&&u.socketReport.score.overall<F&&o++;const i=[];t&&i.push(`${String(t)} major`),a&&i.push(`${String(a)} minor`),r&&i.push(`${String(r)} patch`),n&&i.push(`${String(n)} with vulnerabilities`),s&&i.push(`${String(s)} with Socket.dev alerts`);const l=`Found ${String(e.length)} outdated (${i.join(", ")})`,p=process.stdout.columns||80,g=[R.createElement(P,{bold:!0},"─ Summary"),R.createElement(P,null,` ${l}`)];return o>0&&g.push(R.createElement(P,{color:"yellow"},` ${String(o)} package${o===1?"":"s"} with low Socket.dev score (<${String(F*100)}%)`)),K(R.createElement(ye,{flexDirection:"column",paddingX:1},...g),{columns:p})},"formatSummary"),bt=c((e,t)=>{const a=e.replaceAll(V,String.raw`\$&`),r=t.replaceAll(V,String.raw`\$&`);return new RegExp(String.raw`^(?:'${a}'|"${a}"|${a}):\s*['"]?${r}['"]?`)},"buildLineMatchRegex"),St=c((e,t,a)=>bt(t,a).test(e),"lineMatchesPackage"),Rt=c(e=>{const t=new Map;for(const a of e){t.has(a.catalogName)||t.set(a.catalogName,new Map);const r=t.get(a.catalogName);r&&r.set(a.packageName,{newRange:a.newRange,oldRange:a.currentRange})}return t},"buildUpdateMap"),z=c((e,t,a)=>{if(!a)return e;for(const[r,{newRange:n,oldRange:s}]of a)if(St(t,r,s))return e.replace(s,n);return e},"applyLineUpdate"),Tt=c((e,t,a,r)=>{const n=e.trimStart(),s=e.length-n.length;return n.length===0||n.startsWith("#")?e:t==="catalog"&&s>=2?z(e,n,r.get("default")):t==="catalogs"&&s>=4&&a?z(e,n,r.get(a)):e},"processYamlLineForUpdate"),Ct=c((e,t)=>{const a=m(e,"pnpm-workspace.yaml"),r=y(a).split(`
7
+ `),n=Rt(t);let s="none",o="";const i=[];for(const l of r){const p=l.trimStart(),g=l.length-p.length;g===0&&p.length>0&&!p.startsWith("#")&&(s=ne(p),s==="catalogs"&&(o="")),s==="catalogs"&&g===2&&p.endsWith(":")&&(o=p.slice(0,-1).trim().replaceAll(Z,"")),i.push(Tt(l,s,o,n))}C(a,i.join(`
8
+ `))},"applyPnpmCatalogUpdates");c(e=>{const t=We.exec(e);if(!t)return 2;const a=t[1];return a?a.includes(" ")?a:a.length:2},"detectJsonIndent");const Mt=c((e,t)=>{const a=m(e,"package.json"),r=w(a);for(const n of t)if(n.catalogName==="default")r.workspaces?.catalog&&(r.workspaces.catalog[n.packageName]=n.newRange);else{const s=r.workspaces?.catalogs?.[n.catalogName];s&&(s[n.packageName]=n.newRange)}D(a,r,{detectIndent:!0,overwrite:!0})},"applyBunCatalogUpdates"),Kt=c((e,t,a,r=!0)=>{let n;r&&(n=$t(e,a,t));const s=[],o=[];for(const i of t)M(i.catalogName)?o.push(i):s.push(i);return s.length>0&&(a==="npm"||a==="yarn"?_(e,s):a==="bun"?Mt(e,s):Ct(e,s)),o.length>0&&_(e,o),n},"applyCatalogUpdates"),Zt=c(async e=>{const t=de({input:process.stdin,output:process.stdout}),a=c(n=>new Promise(s=>{t.question(n,o=>{s(o.trim())})}),"ask");process.stdout.write(`
9
+ Outdated catalog dependencies:
10
+ `);for(const[n,s]of e.entries())s&&process.stdout.write(` ${String(n+1)}. ${s.packageName}: ${s.currentRange} → ${s.newRange} (${s.updateType})
11
+ `);process.stdout.write(`
12
+ `);const r=await a("Apply updates? [a]ll / [n]one / [s]elect: ");if(r.toLowerCase()==="a"||r.toLowerCase()==="all")return t.close(),e;if(r.toLowerCase()==="n"||r.toLowerCase()==="none")return t.close(),[];if(r.toLowerCase()==="s"||r.toLowerCase()==="select"){const n=await a("Enter numbers to apply (comma-separated): ");return t.close(),n.split(",").map(s=>Number.parseInt(s.trim(),10)-1).filter(s=>s>=0&&s<e.length).map(s=>e[s]).filter(s=>s!==void 0)}return t.close(),[]},"promptPackageSelection"),At=/github\.com[/:]([\w.-]+)\/([\w.-]+?)(?:\.git|\/|$)/,Qt=c(async(e,t=1e4)=>{const a=[],r=new AbortController,n=setTimeout(()=>{r.abort()},t);try{const s=e.map(async o=>{const i=`https://www.npmjs.com/package/${o.packageName}`;try{const l=await fetch(`https://registry.npmjs.org/${o.packageName}`,{headers:{Accept:"application/json"},signal:r.signal});if(!l.ok)return{npmUrl:i,packageName:o.packageName};const p=(await l.json()).repository?.url;if(!p)return{npmUrl:i,packageName:o.packageName};const g=At.exec(p);if(!g)return{npmUrl:i,packageName:o.packageName,repoUrl:p};const u=g[1],f=g[2],k=`https://github.com/${u}/${f}/releases/tag/v${o.targetVersion}`;return{npmUrl:i,packageName:o.packageName,releaseUrl:k,repoUrl:`https://github.com/${u}/${f}`}}catch{return{npmUrl:i,packageName:o.packageName}}});a.push(...await Promise.all(s))}finally{clearTimeout(n)}return a},"fetchChangelogInfo");export{Ht as C,qt as E,Qt as L,zt as N,Yt as O,Jt as S,Gt as T,Kt as V,te as _,_t as a,v as b,Zt as c,st as f,lt as m,Le as n,Bt as o,Vt as s,Xt as v,It as w};
@@ -0,0 +1,2 @@
1
+ var $=Object.defineProperty;var b=(t,e)=>$(t,"name",{value:e,configurable:!0});import{yellow as O,dim as w,green as R,red as A}from"@visulima/colorize";import{Box as h,Text as d,Spinner as E,render as M}from"@visulima/tui";import{j as g,d as Y}from"../packem_chunks/bin.js";import k from"react";import{jsx as i,jsxs as v}from"react/jsx-runtime";import{D as S,W as B,T as F,C as G}from"./symbols-CQmER5MT.js";import{readFileSync as C}from"@visulima/fs";import{parseLockFileContent as D}from"@visulima/package";import{join as P}from"@visulima/path";var I=Object.defineProperty,L=b((t,e)=>I(t,"name",{value:e,configurable:!0}),"l$1");const j=L(({rows:t})=>i(h,{flexDirection:"column",children:t.map(e=>{let r;switch(e.status){case"error":{r=i(d,{color:"red",children:G});break}case"ok":{r=i(d,{color:"green",children:F});break}case"running":{r=i(d,{color:"white",children:i(E,{type:"dots"})});break}case"warn":{r=i(d,{color:"yellow",children:B});break}default:{r=i(d,{dimColor:!0,children:S});break}}return v(h,{children:[i(h,{width:3,children:r}),i(h,{flexGrow:1,children:i(d,{children:e.label})}),e.summary?i(h,{children:v(d,{dimColor:!0,children:[S," ",e.summary]})}):null]},e.id)})}),"ScanProgressApp");var N=Object.defineProperty,l=b((t,e)=>N(t,"name",{value:e,configurable:!0}),"e");const W={error:A(g.failure),ok:R(g.success),pending:w(g.dash),skip:w(g.dash),warn:O(g.warning)},z=l((t,e,r)=>{const m=r?`${t} ${w(`— ${r}`)}`:t;return` ${W[e]} ${m}
2
+ `},"formatStaticRow"),re=l((t,e={})=>{const r=e.stream??process.stderr,m=typeof r.isTTY=="boolean"&&r.isTTY&&!Y,u=e.live??m,n=new Map;for(const o of t)n.set(o.id,{id:o.id,label:o.label,status:"pending"});if(!u||t.length===0)return{finish:l((o,c,y)=>{const f=n.get(o);f&&(n.set(o,{...f,status:c,summary:y}),r.write(z(f.label,c,y)))},"finish"),start:l(o=>{const c=n.get(o);c&&n.set(o,{...c,status:"running"})},"start"),stop:l(()=>{},"stop")};const p=l(()=>t.map(o=>n.get(o.id)),"buildRows");let s=M(k.createElement(j,{rows:p()}),{interactive:!0,patchConsole:!1});const a=l(()=>{s?.rerender(k.createElement(j,{rows:p()}))},"rerender");return{finish:l((o,c,y)=>{const f=n.get(o);f&&(n.set(o,{...f,status:c,summary:y}),a())},"finish"),start:l(o=>{const c=n.get(o);c&&(n.set(o,{...c,status:"running"}),a())},"start"),stop:l(()=>{s&&(a(),s.unmount(),s=void 0)},"stop")}},"startScanProgress");var H=Object.defineProperty,T=b((t,e)=>H(t,"name",{value:e,configurable:!0}),"l");const x={bun:{file:"bun.lock",type:"bun"},npm:{file:"package-lock.json",type:"npm"},pnpm:{file:"pnpm-lock.yaml",type:"pnpm"},yarn:{file:"yarn.lock",type:"yarn"}},te=T((t,e)=>{const r=x[e];if(!r)return[];let m;try{m=C(P(t,r.file))}catch{return[]}const u=D(m,r.type);if(u.length===0)return[];const n=new Set,p=[];for(const s of u){const a=`${s.name}@${s.version}`;n.has(a)||(n.add(a),p.push({isDev:!1,name:s.name,version:s.version}))}return p},"lockedPackages"),ne=T((t,e)=>{const r=x[e];if(!r)return[];let m;try{m=C(P(t,r.file))}catch{return[]}const u=D(m,r.type);if(u.length===0)return[];const n=new Map;for(const s of u)n.has(s.name)||n.set(s.name,new Set),n.get(s.name).add(s.version);const p=[];for(const[s,a]of n)a.size<=1||p.push({name:s,versions:[...a]});return p.sort((s,a)=>s.name.localeCompare(a.name))},"findDuplicateDependencies");export{ne as f,te as l,re as s};
@@ -0,0 +1,2 @@
1
+ var E=Object.defineProperty;var k=(e,o)=>E(e,"name",{value:o,configurable:!0});import{createRequire as D}from"node:module";import{ensureDirSync as R,writeFileSync as C,isAccessibleSync as O,readJsonSync as A}from"@visulima/fs";import{dirname as _,join as c,relative as M}from"@visulima/path";const N=D(import.meta.url),m=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,T=k(e=>{if(typeof m<"u"&&m.versions&&m.versions.node){const[o,r]=m.versions.node.split(".").map(Number);if(o>22||o===22&&r>=3||o===20&&r>=16)return m.getBuiltinModule(e)}return N(e)},"__cjs_getBuiltinModule"),{cpSync:S,lstatSync:x,readdirSync:F,rmSync:v}=T("node:fs");var P=Object.defineProperty,l=k((e,o)=>P(e,"name",{value:o,configurable:!0}),"f");const $=l((e,o)=>{const r=new Set,t=[e],a=new Set([e]);for(;t.length>0;){const n=t.shift(),f=o.dependencies[n]??[];for(const i of f)a.has(i.target)||(a.add(i.target),r.add(i.target),t.push(i.target))}return r},"collectTransitiveProjectDeps"),g="vis-docker-manifest.json",I=["package.json","project.json"],q=["package.json","pnpm-workspace.yaml","pnpm-lock.yaml","package-lock.json","yarn.lock","bun.lock","bun.lockb",".npmrc","vis.config.ts","vis.config.mts","vis.config.cts","vis.config.js","vis.config.mjs","vis.config.cjs"],L=l((e,o)=>{const r=new Set(e);for(const t of e){const a=$(t,o);for(const n of a)r.add(n)}return r},"resolveFocusProjects"),y=l(e=>{R(e)},"ensureDir"),h=l((e,o)=>{try{return y(_(o)),S(e,o),!0}catch(r){if(r.code==="ENOENT")return!1;throw r}},"copyFileIfExists"),b=l((e,o)=>{let r;try{r=x(e)}catch{return}if(!r.isSymbolicLink()){if(r.isFile()){y(_(o)),S(e,o);return}y(o);for(const t of F(e,{withFileTypes:!0}))t.name==="node_modules"||t.name===".git"||t.isSymbolicLink()||b(c(e,t.name),c(o,t.name))}},"copyTreeExcludingNodeModules"),U=l(e=>{const{focus:o,includeSources:r=!1,outDir:t,projectGraph:a,workspace:n,workspaceRoot:f}=e,i=o.filter(s=>n.projects[s]===void 0);if(i.length>0)throw new Error(`Unknown focus project(s): ${i.join(", ")}. Check project names in your workspace.`);const j=L(o,a),u=c(t,"workspace"),d=c(t,"sources");v(u,{force:!0,recursive:!0}),v(d,{force:!0,recursive:!0}),y(u);for(const s of q)h(c(f,s),c(u,s));for(const s of j){const p=n.projects[s];if(p?.root)for(const w of I)h(c(f,p.root,w),c(u,p.root,w))}if(r){y(d);for(const s of o){const p=n.projects[s];p?.root&&b(c(f,p.root),c(d,p.root))}}return C(c(t,g),`${JSON.stringify({focus:o,projects:[...j].sort()},null,2)}
2
+ `),{projects:[...j]}},"scaffoldDockerContext"),W=l(e=>{const{contextRoot:o,workspace:r,workspaceRoot:t}=e,a=c(o,g);if(!O(a))throw new Error(`No ${g} at ${o}. Run \`vis docker scaffold\` first.`);const n=A(a);if(!Array.isArray(n.projects))throw new TypeError(`Invalid ${g}: "projects" must be an array.`);const f=new Set(n.projects),i=[];for(const[j,u]of Object.entries(r.projects)){if(f.has(j)||!u.root)continue;const d=c(t,u.root),s=M(t,d);s===""||s==="."||s.startsWith("..")||(v(d,{force:!0,recursive:!0}),i.push(s))}return{removed:i}},"pruneDockerContext");export{W as p,L as r,U as s};
@@ -0,0 +1,2 @@
1
+ var h=Object.defineProperty;var a=(t,e)=>h(t,"name",{value:e,configurable:!0});import{createRequire as m}from"node:module";import{join as l}from"@visulima/path";const y=m(import.meta.url),s=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,u=a(t=>{if(typeof s<"u"&&s.versions&&s.versions.node){const[e,r]=s.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return s.getBuiltinModule(t)}return y(t)},"__cjs_getBuiltinModule"),{mkdirSync:F,writeFileSync:L,readdirSync:_}=u("node:fs"),{readFile:j}=u("node:fs/promises");var v=Object.defineProperty,i=a((t,e)=>v(t,"name",{value:e,configurable:!0}),"i");const S="last-failures",c=i(t=>l(t,".task-runner",S),"getFailureLogDirectory"),d=i((t,e)=>l(c(t),`${encodeURIComponent(e)}.json`),"getFailureLogPath");class I{static{a(this,"FailureLogLifeCycle")}static{i(this,"FailureLogLifeCycle")}#e;#t;constructor(e,r){this.#e=e,this.#t=r}printTaskTerminalOutput(e,r,o){if(r!=="failure")return;const n=c(this.#e);try{F(n,{recursive:!0})}catch{return}const f=e.overrides.command,g=e.projectRoot,p={command:f,cwd:g,exitCode:void 0,hash:e.hash,runId:this.#t,status:r,taskId:e.id,terminalOutput:o,timestamp:new Date().toISOString()};try{L(d(this.#e,e.id),`${JSON.stringify(p,void 0,2)}
2
+ `,"utf8")}catch{}}}const R=i(async(t,e)=>{const r=d(t,e);try{const o=await j(r,"utf8");return JSON.parse(o)}catch{return}},"loadFailureLog"),T=i(t=>{const e=c(t);let r;try{r=_(e)}catch{return[]}const o=[];for(const n of r)if(n.endsWith(".json"))try{o.push(decodeURIComponent(n.slice(0,-5)))}catch{}return o},"listFailureLogs");export{I as F,T as a,R as l};
@@ -0,0 +1 @@
1
+ var b=Object.defineProperty;var f=(a,s)=>b(a,"name",{value:s,configurable:!0});import{createRequire as R}from"node:module";import{isAccessibleSync as T,readJsonSync as v}from"@visulima/fs";import{join as p}from"@visulima/path";const j=R(import.meta.url),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,y=f(a=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[s,o]=l.versions.node.split(".").map(Number);if(s>22||s===22&&o>=3||s===20&&o>=16)return l.getBuiltinModule(a)}return j(a)},"__cjs_getBuiltinModule"),{readdirSync:S}=y("node:fs");var F=Object.defineProperty,d=f((a,s)=>F(a,"name",{value:s,configurable:!0}),"i");const P=d((a,s)=>{let o=0,n=0,r=0;for(const[,t]of a)switch(t.status){case"failure":{r+=1;break}case"local-cache":case"local-cache-kept-existing":case"remote-cache":{n+=1;break}case"success":{o+=1;break}}const c=[];o>0&&c.push(`${String(o)} succeeded`),n>0&&c.push(`${String(n)} cached`),r>0&&c.push(`${String(r)} failed`);const i=(s/1e3).toFixed(1);return c.push(`${i}s`),c.join(" · ")},"formatTimingSummary"),h=d(a=>{const s=p(a,".task-runner","runs");if(!T(s))return[];const o=S(s).filter(r=>r.endsWith(".json")),n=[];for(const r of o)try{n.push(v(p(s,r)))}catch{}return n},"loadRunSummaries"),E=d((a,s,o)=>{const n=o??h(a);if(n.length<2)return;let r=0,c=0;for(const e of n)typeof e.duration=="number"&&e.duration>0&&(r+=e.duration,c+=1);if(c<2)return;const i=r/c-s,t=Math.abs(i/1e3).toFixed(1);return Math.abs(i)<500?"(about average)":i>0?`(${t}s faster than avg)`:`(${t}s slower than avg)`},"compareDuration");var _=Object.defineProperty,m=f((a,s)=>_(a,"name",{value:s,configurable:!0}),"c");const q=m((a,s={},o)=>{const n=o??h(a);if(n.length===0)return[];const r=new Map;for(const t of n)if(!(s.since&&(t.startTime===void 0||t.startTime<s.since))&&Array.isArray(t.tasks))for(const e of t.tasks){if(e.cacheStatus==="HIT"||e.cacheStatus==="REMOTE_HIT"||e.cacheStatus==="SKIPPED")continue;const u=r.get(e.taskId)??{failures:0,project:e.target.project,successes:0,target:e.target.target,totalRuns:0};u.totalRuns+=1,e.exitCode!==void 0&&e.exitCode!==0?(u.failures+=1,u.lastFailure=e.startTime??t.startTime):u.successes+=1,r.set(e.taskId,u)}const c=s.minRuns??2,i=[];for(const[t,e]of r)e.totalRuns<c||e.failures!==0&&i.push({failures:e.failures,flakinessRate:e.failures/e.totalRuns,lastFailure:e.lastFailure,project:e.project,successes:e.successes,target:e.target,taskId:t,totalRuns:e.totalRuns});return i.sort((t,e)=>e.flakinessRate-t.flakinessRate),i},"analyzeFlakiness"),w=m(a=>{if(a.length===0)return["No flaky tasks detected."];const s=["Task","Runs","Failures","Rate","Last Failure"],o=a.map(t=>[t.taskId,String(t.totalRuns),String(t.failures),`${(t.flakinessRate*100).toFixed(1)}%`,t.lastFailure??"—"]),n=s.map((t,e)=>{const u=o.reduce((g,k)=>Math.max(g,(k[e]??"").length),0);return Math.max(t.length,u)}),r=m((t,e)=>t.padEnd(e),"pad"),c=n.map(t=>"─".repeat(t)).join("──"),i=[];i.push(s.map((t,e)=>r(t,n[e])).join(" ")),i.push(c);for(const t of o)i.push(t.map((e,u)=>r(e,n[u])).join(" "));return i},"formatFlakinessTable");export{q as a,w as b,E as c,P as f,h as l};
@@ -0,0 +1 @@
1
+ var l=Object.defineProperty;var m=(s,e)=>l(s,"name",{value:e,configurable:!0});import{createRequire as h}from"node:module";import{join as f}from"@visulima/path";const y=h(import.meta.url),c=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,j=m(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)},"__cjs_getBuiltinModule"),{readFile:p,readdir:_,stat:g}=j("node:fs/promises");var k=Object.defineProperty,u=m((s,e)=>k(s,"name",{value:e,configurable:!0}),"u");const B=u((s,e)=>s.tasks.find(r=>r.taskId===e),"findTaskInSummary"),d=u((s,e)=>{const r=s??{},i=e??{},o=[],t=[],a=[];for(const n of Object.keys(r))n in i?r[n]!==i[n]&&a.push(n):o.push(n);for(const n of Object.keys(i))n in r||t.push(n);return o.sort(),t.sort(),a.sort(),{added:o,changed:a,removed:t}},"diffHashBuckets"),M=u((s,e)=>({commandChanged:(s?.command??"")!==(e?.command??""),implicitDeps:d(s?.implicitDeps,e?.implicitDeps),nodes:d(s?.nodes,e?.nodes),runtime:d(s?.runtime,e?.runtime)}),"diffHashDetails"),R=u(async(s,e)=>{const r=f(s,".task-runner","runs",`${e}.json`);try{const i=await p(r,"utf8");return JSON.parse(i)}catch{return}},"readRunSummaryById"),D=u(async(s,e)=>{const r=f(s,".task-runner","runs");let i;try{i=await _(r)}catch{return}const o=[];for(const t of i){if(!t.endsWith(".json")||e!==void 0&&t===`${e}.json`)continue;const a=f(r,t);try{const n=await g(a);n.isFile()&&o.push({mtimeMs:n.mtimeMs,path:a})}catch{}}if(o.length!==0){o.sort((t,a)=>a.mtimeMs-t.mtimeMs);try{const t=await p(o[0].path,"utf8");return JSON.parse(t)}catch{return}}},"readPreviousRunSummary");export{D as a,M as d,B as f,R as r};
@@ -0,0 +1 @@
1
+ var d=Object.defineProperty;var f=(t,n)=>d(t,"name",{value:n,configurable:!0});import{isAccessibleSync as h,readFileSync as k,readJsonSync as v}from"@visulima/fs";import{join as m}from"@visulima/path";var y=Object.defineProperty,g=f((t,n)=>y(t,"name",{value:n,configurable:!0}),"p");const $=g(t=>{for(const n of[".nvmrc",".node-version"]){const i=m(t,n);if(h(i))try{return k(i).trim().replace(/^v/,"")}catch{}}},"readNodeVersionFile"),l=g((t,n)=>{const i=t.split(/[.\-+]/).map(r=>Number.parseInt(r,10)||0),c=n.split(/[.\-+]/).map(r=>Number.parseInt(r,10)||0),e=Math.max(i.length,c.length);for(let r=0;r<e;r++){const s=i[r]??0,a=c[r]??0;if(s!==a)return s-a}return 0},"compareVersions"),b=g((t,n)=>{const i=n.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("."),s=e.split(".");for(const[a,o]of s.entries())if(o!==r[a])return!1}return!0},"satisfiesRange"),N=g(t=>{const n=[],i=m(t,"package.json");let c={};try{c=v(i)}catch{return n}const e=process.versions.node;if(c.engines?.node){const s=c.engines.node;b(e,s)||n.push({actual:e,expected:s,kind:"node",message:`package.json engines.node requires ${s}, but the current Node.js is ${e}.`,severity:"error"})}const r=$(t);if(r){const[s,a]=r.split("."),[o,p]=e.split(".");(s!==o||a!==void 0&&a!==p)&&n.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[s,a]=c.packageManager.split("@"),o=(process.env.npm_config_user_agent??"").split(" ")[0]??"",[p,u]=o.split("/");p&&s&&p!==s?n.push({actual:p,expected:s,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&&n.push({actual:u,expected:a,kind:"packageManager",message:`package.json packageManager pins ${s}@${a} but the current invocation uses ${s}@${u}.`,severity:"warning"})}return n},"checkRuntimeVersions");export{N as c};
@@ -0,0 +1,3 @@
1
+ var v=Object.defineProperty;var m=(e,t)=>v(e,"name",{value:t,configurable:!0});import{createRequire as w}from"node:module";import{relative as b}from"@visulima/path";const k=w(import.meta.url),j=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,_=m(e=>{if(typeof j<"u"&&j.versions&&j.versions.node){const[t,r]=j.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return j.getBuiltinModule(e)}return k(e)},"__cjs_getBuiltinModule"),{createInterface:$}=_("node:readline");var T=Object.defineProperty,f=m((e,t)=>T(e,"name",{value:t,configurable:!0}),"g");const q=/^#([\w\-/]+):(.+)$/,x=/^([@\w\-/]+):(.+)$/,P=f(e=>{if(e==="")return;if(e.startsWith(":"))return{kind:"all",target:e.slice(1)};if(e.startsWith("~:"))return{kind:"closest",target:e.slice(2)};const t=q.exec(e);if(t?.[1]&&t[2])return{kind:"tag",tag:t[1],target:t[2]};const r=x.exec(e);return r?.[1]&&r[2]&&(r[1].startsWith("@")||r[1].includes("/")||r[1].includes("-"))?{kind:"project",projects:[r[1]],target:r[2]}:{kind:"all",target:e}},"parseTargetSelector"),N=f(async(e,t,r,a)=>{const s=P(e);if(!s)throw new Error(`Invalid target selector: "${e}"`);const c=Object.keys(t.projects);if(s.kind==="all")return{projects:c,target:s.target};if(s.kind==="project")return{projects:s.projects??[],target:s.target};if(s.kind==="tag"){const o=s.tag;return{projects:c.filter(i=>t.projects[i]?.tags?.includes(o)??!1),target:s.target}}const n=b(a,r)||".";let p,l=-1;for(const[o,i]of Object.entries(t.projects)){const u=i.root;u&&(n===u||n.startsWith(`${u}/`))&&u.length>l&&(l=u.length,p=o)}if(!p){if(process.stdout.isTTY){const o=$({input:process.stdin,output:process.stderr}),i=Object.keys(t.projects).sort();process.stderr.write(`No project found at ${n}. Pick one:
2
+ `);for(const[d,h]of i.entries())process.stderr.write(` ${String(d+1)}) ${h}
3
+ `);const u=await new Promise(d=>{o.question("> ",d)});o.close();const g=Number.parseInt(u,10)-1;if(g>=0&&g<i.length)return{projects:[i[g]],target:s.target}}throw new Error(`No project found at or above ${n} for selector "${e}".`)}return{projects:[p],target:s.target}},"resolveSelector"),E=/^(\w+)\s*(!?=)\s*(.+)$/,Q=f(e=>{const t=e.trim();if(t==="")return;const r=t.split("&&").map(o=>o.trim()),a=t.split("||").map(o=>o.trim()),s=r.length>1,c=a.length>1;if(s&&c)throw new Error("Query language does not support mixed && / || — split into multiple --query flags or simplify.");const n=c?a:r,p=c?"||":"&&",l=[];for(const o of n){const i=E.exec(o);if(!i)throw new Error(`Invalid query clause: "${o}". Expected <field>=<value> or <field>!=<value>.`);const[,u,g,d]=i;l.push({field:u,op:g==="!="?"!=":"=",value:d.trim().replaceAll(/^["']|["']$/g,"")})}return{clauses:l,op:p}},"parseQuery"),y=f((e,t,r)=>{const{field:a,op:s,value:c}=e,n=f(l=>{const o=l===c;return s==="="?o:!o},"test"),p=f(l=>{const o=(l??[]).includes(c);return s==="="?o:!o},"testList");switch(a){case"id":case"project":return n(t);case"language":return n(r.language);case"layer":return n(r.layer);case"projectType":case"type":return n(r.projectType);case"stack":return n(r.stack);case"tag":case"tags":return p(r.tags);default:return!1}},"matchClause"),O=f((e,t,r)=>{if(!r||r.trim()==="")return e;const a=Q(r);return a?e.filter(s=>{const c=t.projects[s];return c?a.op==="&&"?a.clauses.every(n=>y(n,s,c)):a.clauses.some(n=>y(n,s,c)):!1}):e},"filterProjectsByQuery");export{O as f,N as r};
@@ -0,0 +1 @@
1
+ var n=Object.defineProperty;var r=(s,o)=>n(s,"name",{value:o,configurable:!0});var c=Object.defineProperty,a=r((s,o)=>c(s,"name",{value:o,configurable:!0}),"n");const p=a(()=>process.platform==="win32"?!!process.env.WT_SESSION||process.env.TERM_PROGRAM==="vscode"||process.env.TERM==="xterm-256color":process.env.TERM!=="linux","isUnicodeSupported"),e=p(),S=e?"✓":"√",v=e?"✖":"×",R=e?"…":"...",i=e?"—":"-",E=e?"⚠":"!";export{v as C,i as D,R as E,S as T,E as W};
@@ -0,0 +1 @@
1
+ var d=Object.defineProperty;var n=(r,t)=>d(r,"name",{value:t,configurable:!0});var h=Object.defineProperty,u=n((r,t)=>h(r,"name",{value:t,configurable:!0}),"i");const s="@inherit",f=["aliases","dependsOn","inputs","outputs"],v=u((r,t)=>{if(t===void 0)return r===void 0?void 0:[...r];if(!t.includes(s))return[...t];const e=[];for(const i of t){if(i===s){r!==void 0&&e.push(...r);continue}e.push(i)}return e},"mergeArrayWithInherit"),p=u((r,t)=>{const e={...r,...t};for(const i of f){const a=r?.[i],c=t?.[i],o=v(a,c);o===void 0?delete e[i]:e[i]=o}return e},"mergeTargetWithInherit");export{p as m};
@@ -0,0 +1,5 @@
1
+ var N=Object.defineProperty;var x=(o,e)=>N(o,"name",{value:e,configurable:!0});import{createRequire as I}from"node:module";import{isAccessibleSync as g,readFileSync as k,readJsonSync as S}from"@visulima/fs";import{join as m}from"@visulima/path";const D=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 D(o)},"__cjs_getBuiltinModule"),{execFileSync:w}=j("node:child_process"),{writeFileSync:U,renameSync:q,unlinkSync:B}=j("node:fs"),{delimiter:J,sep:H}=j("node:path");var R=Object.defineProperty,f=x((o,e)=>R(o,"name",{value:e,configurable:!0}),"d");const z=["proto","mise","fnm","volta","asdf","nvm","corepack"],V={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"]},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:[]},$=new Map,y=f(o=>{const e=$.get(o);if(e!==void 0||$.has(o))return e;const n=process.env.PATH;if(!n){$.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}${H}${o}${l}`;if(g(s))return $.set(o,s),s}}$.set(o,void 0)},"isOnPath"),W=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=m(o,"package.json");if(!g(n))return[];try{const t=S(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"),X=f((o,e)=>o==="volta"?A(e,"volta"):o==="corepack"?A(e,"packageManager"):O[o].filter(n=>g(m(e,n))),"configFilesFor"),P=new Map,G=f(()=>{P.clear(),$.clear()},"clearToolchainCache"),_=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 Z){const l=i==="nvm"?void 0:y(i),s=i==="nvm"&&!!process.env.NVM_DIR,c=X(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?W(l):void 0})}const r=Object.freeze(n);return P.set(o,r),r},"findInstalledManagers"),ye=f((o,e,n)=>{const t=n??_(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"),K=f((o,e)=>{for(const n of e){const t=m(o,n);if(g(t))try{const r=k(t).trim();if(r!=="")return{name:n,value:r.replace(/^v/,"")}}catch{}}},"readVersionFile"),L=/^([a-z][\w-]*)\s*=\s*"?([^"\n#]+?)"?\s*(?:#.*)?$/i,Q=f(o=>{const e=m(o,".prototools");if(!g(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=L.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"),Y=/^\[tools\]\s*$/i,ee=/^([a-z][\w-]*)\s*=\s*"?([^"\n#]+?)"?\s*(?:#.*)?$/i,oe=f(o=>{for(const e of O.mise){const n=m(o,e);if(!g(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=Y.test(s);continue}if(!i)continue;const c=ee.exec(s);if(!c)continue;const[,a,u]=c,d=h(a);d&&t.push({source:".mise.toml",tool:d,version:u.trim()})}if(t.length>0)return t}return[]},"parseMiseToml"),ne=f(o=>{const e=m(o,".tool-versions");if(!g(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"),te=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"),re=f((o,e)=>{const n=new Map,t=f(s=>{n.set(s.tool,s)},"add"),r=m(o,"package.json");let i={};try{g(r)&&(i=S(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=te(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=K(o,[".nvmrc",".node-version"]);l&&t({source:l.name===".nvmrc"?".nvmrc":".node-version",tool:"node",version:l.value});for(const s of ne(o))t(s);for(const s of oe(o))t(s);for(const s of Q(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"]}},se=f(o=>{const e=F[o];for(const n of e.binaries){const t=y(n);if(t)return W(t,e.args)}if(o==="node")return process.versions.node},"queryToolVersion"),ie=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),d=Math.max(a.length,u.length);for(let p=0;p<d;p++){const b=a[p]??0,v=u[p]??0;if(b!==v)return b-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,d]=t(a),[p,b]=t(o);if(p!==u||c.startsWith("~")&&b!==d||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"),ae=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"),ce=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=ae(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":V[o].includes(e),"canHandle"),le=f((o,e)=>{const n=_(o),t=re(o,e).map(r=>{const i=se(r.tool),l=i!==void 0&&ie(i,r.version),s=ce(r,n,e);return{actual:i,expected:r,manager:s,matches:l}});return{detected:n,tools:t}},"getToolchainStatus"),fe=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"),be=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"),$e=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}.${Math.random().toString(36).slice(2)}.tmp`;U(n,e);try{q(n,o)}catch(t){try{B(n)}catch{}throw t}},"atomicWrite"),pe=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=m(o,"package.json");if(!g(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}`)}const l=`${e.tool}@${e.version}`,s=pe(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=m(o,"package.json");if(!g(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}`)}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"),ue=f(async(o,e,n)=>{const t=le(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 ${z.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 d=u.map(p=>({invocation:fe(a,p.expected),tool:p})).filter(p=>p.invocation!==void 0);for(const{invocation:p,tool:b}of d){const{expected:v}=b;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 G(),{attempted:l,failed:s,upToDate:!1}},"ensureToolchain"),Te=f(async(o,e,n,t=!1)=>{if(t)return;const r=await ue(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{z as S,ce as a,fe as b,be as c,ke as d,$e as e,_ as f,le as g,ye as h,xe as p,Te as r,we as u,Me as w};
@@ -0,0 +1 @@
1
+ var w=Object.defineProperty;var l=(e,s)=>w(e,"name",{value:s,configurable:!0});import{createRequire as q}from"node:module";import{red as j,yellow as b}from"@visulima/colorize";import{isAccessibleSync as T,readJsonSync as M}from"@visulima/fs";import{join as A}from"@visulima/path";import{g as D}from"./_commonjsHelpers-D6W6KoPK.js";import{p as i}from"../packem_chunks/bin.js";const $=q(import.meta.url),m=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,z=l(e=>{if(typeof m<"u"&&m.versions&&m.versions.node){const[s,r]=m.versions.node.split(".").map(Number);if(s>22||s===22&&r>=3||s===20&&r>=16)return m.getBuiltinModule(e)}return $(e)},"__cjs_getBuiltinModule"),{createInterface:_}=z("node:readline");var C=["aj","aju","av","avj","ejv","jav","jv"],O=["angula","angular-node","angularjs"],S=["auto-prefixer"],F=["aaxios","aios","axio","axioos","axios-node","axioss","axis","axiso","axois","axos","axxios"],N=["abel","babbel","babe","babel-js","babel-node","babl","bable","bbael","bebel"],P=["bcrpyt","bcrypt-node","brcypt","crypt","dcrypt"],R=["bcryptjs-node","dcryptjs"],B=["bunan","bunya","bunyan-node","buynan"],W=["cai","cha","chaijs","chal","chi","chia","hai"],L=["cahlk","calk","cchalk","ch4lk","cha1k","chaalk","chaik","chak","chakl","chalk-node","chalkk","challk","chhalk","chlak","chlk","halk","hcalk"],E=["cheero","cherio"],J=["c0lor","ccolor","clor","colo","coloor","color-js","colorjs","colorr","colr","coolor","coolr"],U=["ccolors","colors-node","colorss","colorz","colrs","coolors"],V=["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"],I=["cor","corss","cos","cosr","cros","crs","ors"],Y=["days"],G=["d3bug","dbeug","dbug","ddebug","debbug","debg","debgu","debu","debu9","debug-js","debug-node","debugg","debugjs","debuug","deebug","deubg","deug","ebug","edbug"],H=["dot-env","dotenv-node","dotenvjs","dotevn"],K=["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"],Q=["asbuild","ebuild","esbuild-node","esbuildjs","ezbuild","sbuild"],X=["aslint","elint","eslint-js","eslint-node","eslit","ezlint","slint"],Z=["eexpress","epress","epxress","experss","expess","exppress","expreess","expres","express-node","expressjs","expresss","exprress","exprses","exprss","exress","exrpess","exxpress","xepress","xpress"],ee=["astify"],oe=["firebasejs"],se=["form1dable"],re=["glb","glo","glob-js","globjs","gob","golb","lob"],ae=["go","goot","gotjs","gott","gt","gto","ogt","ot","qot"],te=["helmetjs","helnet"],ne=["homo","hon","hoo","hoon","ohno","ono"],ce=["inquire","inquirer-js","nquirer"],ie=["iredis"],de=["ejst","est","jast","jes","jestjs","jestt","jet","jets","jst"],me=["imp","jim","jip","jmp"],le=["ji","jio","jo","joii","jol","oi","oji"],pe=["jdom","jsdm","jsdo","jsdom-js","jsdon","jsom","sdom"],ue=["jsonwebtoken-js","jsonwebtoken-node"],ve=["ka","kao","ko","koaa","koajs","koe","oa","oka"],he=["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"],je=["luca","luci","lucie"],be=["luon","luxo","luxon-js"],ke=["imcromatch","mciromatch","micormatch","micrmoatch","micro-match","microamtch","micromacth","micromathc","micromtach","mircomatch"],ge=["minimath"],fe=["mcha","mmocha","moca","moch","mocha-js","moha","nocha","ocha"],ye=["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"],xe=["mognoose","mogoose","mongoos","mongose","monqoose","moongoose"],we=["moran","organ"],qe=["muler","multer-js","muter"],$e=["mysql"],ze=["ext","mext","n3xt","naxt","net","netx","nex","next-js","next-node","nextjs","nxt"],_e=["node-mailer","nodemailer-js"],Te=["nodemo","nodemonjs","nodmeon"],Me=["oar","or","ora-node","ore","ra","roa"],Ae=["arcel","parce","parceljs"],De=["passport-js"],Ce=["phase","phaser-node"],Oe=["ino","pimo","pin","pino-node","pinojs","pio","pion"],Se=["playright","playwright-js"],Fe=["postcss-js","postcss-node","potscss"],Ne=["pettier","pprettier","pretier","prettierjs","prettierr","prtetier"],Pe=["prima","prism","prisma-js","prismajs","prizma"],Re=["pupeteer"],Be=["rada","rama","ramd","randa"],We=["eact","eract","r3act","raact","ract","raect","re4ct","reaact","reac","reac7","reacct","react-node","reactjs","reactt","reat","reatc","recat","rect","reeact","reect","rreact"],Le=["erdis","radis","rdis","redi","redis-js","redis-node","rediss","rediz","reds","reis","rredis"],Ee=["resen","rsend"],Je=["ollup","rollup-js","rollup-node"],Ue=["ass","asss","sas","sass-node","sess","ssas","sss"],Ve=["emver","seemver","semver-node","semvre","senver","sever"],Ie=["sequelize-js","sequelize-node"],Ye=["harp","shap","shar","sharp-js","sharpjs"],Ge=["stipe","strip","stripe-node","tripe"],He=["supabase-js"],Ke=["suelte","svelt3","svelte-js","sveltejs","velte"],Qe=["tailwindcss-js"],Xe=["auri","taui"],Ze=["hree","htree","thee","there","three-js","three-node","tree"],eo=["stx","sx","ts","tsxx","ttsx","tx","txs","tzx"],oo=["ttypescript","typecript","typescipt","typescript-node","typescriptjs","typescrit","typescritp"],so=["udnerscore","undercore","underscoer","underscore-node","underscroe","undersocre","undesrcore"],ro=["uid","uud","uudi","uui","uuid-js","uuid-node","uuidjs","vuid"],ao=["ite","vie","vit","vita","vite-node","vitee","vlte","vte"],to=["itest","uitest","vitestjs","vitezt","vittest","vtest"],no=["ue","uue","uve","ve","veu","vu","vu3","vua","vue-node","vuee","vuejs","vuue","vve","vvue"],co=["web-pack","weback","webpac","webpack-node","webpackjs","webpak","weebpack","wepack","wepback"],io=["winson","winston-js","winstoon"],mo=["up","uyp","yp","yu","yupjs","yupp"],lo=["od","zd","zdo","zo","zob","zod-js","zodjs"];const po={ajv:C,angular:O,autoprefixer:S,"aws-sdk":["awssdk","ews-sdk"],axios:F,babel:N,bcrypt:P,bcryptjs:R,"body-parser":["body-paresr","body-parse","body-parser-js","body_parser"],bunyan:B,chai:W,chalk:L,cheerio:E,color:J,colors:U,commander:V,"cookie-parser":["cookie-parse","cookieparser"],cors:I,"cross-env":["crossenv"],"date-fns":["data-fns","date-fn"],dayjs:Y,debug:G,dotenv:H,electron:K,esbuild:Q,eslint:X,express:Z,fastify:ee,firebase:oe,formidable:se,glob:re,got:ae,helmet:te,hono:ne,inquirer:ce,ioredis:ie,jest:de,jimp:me,joi:le,jsdom:pe,jsonwebtoken:ue,koa:ve,lodash:he,lucia:je,luxon:be,micromatch:ke,minimatch:ge,mocha:fe,moment:ye,mongoose:xe,morgan:we,multer:qe,mysql2:$e,next:ze,"node-fetch":["node-fecth","node-fethc","node.fetch"],nodemailer:_e,nodemon:Te,ora:Me,parcel:Ae,passport:De,phaser:Ce,pino:Oe,playwright:Se,postcss:Fe,prettier:Ne,prisma:Pe,puppeteer:Re,ramda:Be,react:We,"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:Le,resend:Ee,rollup:Je,sass:Ue,semver:Ve,sequelize:Ie,sharp:Ye,"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:Ge,supabase:He,svelte:Ke,tailwindcss:Qe,tauri:Xe,three:Ze,"ts-node":["tts-node"],tsx:eo,typescript:oo,underscore:so,uuid:ro,vite:ao,vitest:to,vue:no,webpack:co,winston:io,yup:mo,zod:lo};var v,k;function uo(){return k||(k=1,v={"@tanstack/start":["start-tanstack-app","tanstack","tanstack-app","tanstack-start"]}),v}l(uo,"requireTyposquatsManual");var vo=uo();const ho=D(vo);var jo=Object.defineProperty,c=l((e,s)=>jo(e,"name",{value:s,configurable:!0}),"c");const bo={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"]},ko=["app","cli","core","kit","lib","pkg","sdk"],go=c(e=>{const s=new Set;if(e.length<3)return s;for(let o=0;o<e.length;o++){const a=e[o]==="-"||e[o]==="."||e[o]==="_";if(a||s.add(e.slice(0,o)+e.slice(o+1)),a||s.add(e.slice(0,o)+e[o]+e.slice(o)),o<e.length-1&&e[o]!==e[o+1]){const u=e[o+1]==="-"||e[o+1]==="."||e[o+1]==="_";if(!a&&!u){const d=e.split("");[d[o],d[o+1]]=[d[o+1],d[o]],s.add(d.join(""))}}const t=e[o].toLowerCase(),n=bo[t];if(n)for(const u of n)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 n of["","-",".","_"])s.add(`${a}${n}${t}`),s.add(`${t}${n}${a}`);for(const n of ko)s.add(`${a}-${n}`),s.add(`${t}-${a}-${n}`),s.add(`${n}-${a}-${t}`)}}return s.delete(e),s},"generateVariants");let h,p;const g=c(()=>{if(!h){const e={};for(const s of[po,ho])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"),fo=c(()=>{if(!p){p=new Map;for(const[e,s]of Object.entries(g()))for(const r of s)p.set(r,e)}return p},"getReverseLookup"),yo=c(e=>e.startsWith("@")?e.split("/")[1]??e:e,"bareName"),xo=c(e=>{const s=yo(e),r=fo().get(s);if(r)return{input:e,legitimate:r,method:"blocklist"};for(const o of Object.keys(g()))if(go(o).has(s))return{input:e,legitimate:o,method:"heuristic"}},"checkTyposquat"),f=c((e,s)=>{const r=s?new Set(s):void 0,o=[];for(const a of e){if(r?.has(a))continue;const t=xo(a);t&&o.push(t)}return o},"checkTyposquats"),y=c((e,s)=>{i.warn(""),i.warn(j(`Possible typosquat${e.length===1?"":"s"} ${s}:`));for(const r of e){const o=r.method==="blocklist"?"known typosquat":"similar name";i.warn(` ${b("⚠")} ${j(r.input)} — did you mean ${b(r.legitimate)}? (${o})`)}i.warn("")},"printTyposquatWarnings"),x=c(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=_({input:process.stdin,output:process.stdout}),r=await new Promise(o=>{s.question(e,a=>{o(a.trim().toLowerCase())})});return s.close(),r},"askConfirmation"),Oo=c(async(e,s)=>{const r=f(e,s);if(r.length===0)return{ok:!0,packages:e};y(r,"detected");const o=await x(`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"),wo=/^(?:npm|pnpm|yarn):(.+?)(?:@.*)?$/,qo=c(e=>wo.exec(e)?.[1],"parseAliasTarget"),$o=c(e=>{if(!T(e))return[];const s=M(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 n=qo(t);n&&o.add(n)}return[...o]},"readDepsFromPackageJson"),So=c(async(e,s)=>{const r=A(e,"package.json"),o=$o(r);if(o.length===0)return!0;const a=f(o,s);if(a.length===0)return!0;y(a,"in package.json dependencies"),i.warn("Fix the package name in package.json before proceeding.");const t=await x("Continue anyway? [y/N] ");return t==="y"||t==="yes"},"scanDepsForTyposquats");export{Oo as r,So as s};
@@ -0,0 +1 @@
1
+ var o=Object.defineProperty;var n=(e,r)=>o(e,"name",{value:r,configurable:!0});import{measureElement as i}from"@visulima/tui";import{useRef as f,useState as m,useLayoutEffect as c}from"react";var g=Object.defineProperty,h=n((e,r)=>g(e,"name",{value:r,configurable:!0}),"i");const v=h((e,r)=>{const u=f(null),[s,a]=m(e);return c(()=>{if(!u.current)return;const{height:t}=i(u.current);t>0&&t!==s&&(a(t),r?.(t))}),{measuredHeight:s,ref:u}},"useMeasuredHeight");export{v as u};
@@ -0,0 +1 @@
1
+ var c=Object.defineProperty;var o=(e,r)=>c(e,"name",{value:r,configurable:!0});var n=Object.defineProperty,t=o((e,r)=>n(e,"name",{value:r,configurable:!0}),"s");const p=t(e=>e?Array.isArray(e)?e:[e]:[],"toStringArray"),g=t(e=>e instanceof Error?e.message:typeof e=="string"?e:String(e),"errorMessage"),v=/^(.+?)(?:@(.+))?$/,m=t(e=>{if(e.startsWith("@")){const i=e.indexOf("/");if(i===-1)return{name:e,versionSpec:void 0};const a=e.slice(i+1),s=a.indexOf("@");return s===-1?{name:e,versionSpec:void 0}:{name:e.slice(0,i+1+s),versionSpec:a.slice(s+1)}}const r=v.exec(e);return r?{name:r[1]??e,versionSpec:r[2]}:{name:e,versionSpec:void 0}},"parsePackageArgument");export{m as d,g as f,p as o};
@@ -0,0 +1 @@
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};