@visulima/vis 1.0.0-alpha.26 → 1.0.0-alpha.27

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 (84) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/LICENSE.md +17 -17
  3. package/README.md +24 -22
  4. package/dist/bin.js +1 -1
  5. package/dist/binx.js +1 -1
  6. package/dist/config/index.d.ts +176 -16
  7. package/dist/packem_chunks/bin.js +263 -263
  8. package/dist/packem_chunks/bloom-status.js +1 -1
  9. package/dist/packem_chunks/bloom-sync.js +1 -1
  10. package/dist/packem_chunks/config.js +12 -12
  11. package/dist/packem_chunks/handler10.js +1 -1
  12. package/dist/packem_chunks/handler11.js +1 -1
  13. package/dist/packem_chunks/handler12.js +1 -1
  14. package/dist/packem_chunks/handler13.js +1 -1
  15. package/dist/packem_chunks/handler14.js +8 -9
  16. package/dist/packem_chunks/handler15.js +1 -1
  17. package/dist/packem_chunks/handler16.js +1 -1
  18. package/dist/packem_chunks/handler17.js +1 -1
  19. package/dist/packem_chunks/handler18.js +1 -1
  20. package/dist/packem_chunks/handler19.js +1 -1
  21. package/dist/packem_chunks/handler2.js +1 -1
  22. package/dist/packem_chunks/handler20.js +1 -1
  23. package/dist/packem_chunks/handler22.js +1 -1
  24. package/dist/packem_chunks/handler23.js +1 -1
  25. package/dist/packem_chunks/handler27.js +1 -1
  26. package/dist/packem_chunks/handler28.js +1 -1
  27. package/dist/packem_chunks/handler29.js +1 -1
  28. package/dist/packem_chunks/handler30.js +3 -3
  29. package/dist/packem_chunks/handler31.js +2 -2
  30. package/dist/packem_chunks/handler34.js +1 -1
  31. package/dist/packem_chunks/handler35.js +3 -22
  32. package/dist/packem_chunks/handler36.js +21 -60
  33. package/dist/packem_chunks/handler37.js +61 -6
  34. package/dist/packem_chunks/handler38.js +3 -24
  35. package/dist/packem_chunks/handler39.js +6 -153
  36. package/dist/packem_chunks/handler4.js +1 -1
  37. package/dist/packem_chunks/handler40.js +24 -10
  38. package/dist/packem_chunks/handler41.js +153 -25
  39. package/dist/packem_chunks/handler42.js +10 -708
  40. package/dist/packem_chunks/handler43.js +25 -24
  41. package/dist/packem_chunks/handler44.js +659 -273
  42. package/dist/packem_chunks/handler45.js +24 -46
  43. package/dist/packem_chunks/handler46.js +322 -3
  44. package/dist/packem_chunks/handler47.js +48 -27
  45. package/dist/packem_chunks/handler48.js +3 -187
  46. package/dist/packem_chunks/handler49.js +23 -30
  47. package/dist/packem_chunks/handler5.js +6 -6
  48. package/dist/packem_chunks/handler50.js +196 -0
  49. package/dist/packem_chunks/handler51.js +34 -0
  50. package/dist/packem_chunks/handler8.js +1 -1
  51. package/dist/packem_chunks/handler9.js +1 -1
  52. package/dist/packem_chunks/heal-accept.js +1 -1
  53. package/dist/packem_chunks/help-command.js +16 -16
  54. package/dist/packem_chunks/index.js +1 -1
  55. package/dist/packem_chunks/list.js +1 -1
  56. package/dist/packem_chunks/loader.js +1 -1
  57. package/dist/packem_chunks/prune.js +1 -1
  58. package/dist/packem_chunks/status.js +1 -1
  59. package/dist/packem_chunks/sync.js +1 -1
  60. package/dist/packem_chunks/sync2.js +1 -1
  61. package/dist/packem_chunks/tripwire.js +1 -1
  62. package/dist/packem_chunks/verify-lockfile.js +1 -1
  63. package/dist/packem_shared/{advisories-DS8JEB_g.js → advisories-xIOdLbAI.js} +1 -1
  64. package/dist/packem_shared/{cyclonedx-ja1cbU69.js → cyclonedx-B3ILsY74.js} +1 -1
  65. package/dist/packem_shared/{docker-Bw9gKo69.js → docker-BynKrOLe.js} +1 -1
  66. package/dist/packem_shared/{index-88UK-tt_.js → index-B_KtN1MB.js} +1 -1
  67. package/dist/packem_shared/{index-CS6a2wFB.js → index-efSniSRN.js} +1 -1
  68. package/dist/packem_shared/{lifecycle-ChCFTm5Q.js → lifecycle-CJRNbN3x.js} +2 -2
  69. package/dist/packem_shared/{min-release-age-heJgeP7o.js → min-release-age-aEn0x8Vy.js} +1 -1
  70. package/dist/packem_shared/{native-config-sync-BOeuyrBj.js → native-config-sync-DdhTLlKL.js} +1 -1
  71. package/dist/packem_shared/{osv-bloom-QSAn2Dcw.js → osv-bloom-BJhlc_I2.js} +2 -2
  72. package/dist/packem_shared/{pm-runner-BzGZmzYs.js → pm-runner-BwX5AL3W.js} +1 -1
  73. package/dist/packem_shared/{provenance-BsBn1f5S.js → provenance-BuiEsWbI.js} +1 -1
  74. package/dist/packem_shared/{resolve-explicit-CBPr617N.js → resolve-explicit-RgRrUDZv.js} +1 -1
  75. package/dist/packem_shared/{s1ngularity-j_ArCZAs.js → s1ngularity-Bs9fUf3q.js} +1 -1
  76. package/dist/packem_shared/{scan-progress-EbvmIh4i.js → scan-progress-DjPT66jy.js} +2 -2
  77. package/dist/packem_shared/{signatures-CaXzNuEn.js → signatures-LYMy8OR5.js} +1 -1
  78. package/dist/packem_shared/{typosquats-C1e6RNjF.js → typosquats-znskIR5j.js} +1 -1
  79. package/dist/packem_shared/watch-BSVsZ_1I.js +1 -0
  80. package/dist/packem_shared/watch-loop-DLlMLg_J.js +11 -0
  81. package/index.js +751 -567
  82. package/package.json +11 -11
  83. package/schemas/project.schema.json +86 -1
  84. package/schemas/vis-config.schema.json +255 -7
@@ -1,6 +1,61 @@
1
- var re=Object.defineProperty;var E=(e,r)=>re(e,"name",{value:r,configurable:!0});import{createRequire as te}from"node:module";import{C as se,i as J,M,$ as K,z as Q,Q as le}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{render as ce}from"@visulima/tui";import{h as ae,J as G,ax as de,ay as ue,az as fe,aA as he,p as k,s as pe}from"./bin.js";import ge,{useSyncExternalStore as me,useRef as F,useCallback as _}from"react";import{o as we}from"../packem_shared/index-DH-5hsrC.js";import{sortPackageJsonStringWithOptions as Y}from"#native";import{jsxs as f,jsx as s,Fragment as ye}from"react/jsx-runtime";import{Box as a}from"@visulima/tui/components/box";import{Text as c}from"@visulima/tui/components/text";import{useApp as xe}from"@visulima/tui/hooks/use-app";import{useInput as be}from"@visulima/tui/hooks/use-input";import{useWindowSize as Se}from"@visulima/tui/hooks/use-window-size";import{ScrollView as ke}from"@visulima/tui/components/scroll-view";import{ScrollBar as ve}from"@visulima/tui/components/scroll-bar";import{f as N}from"../packem_shared/utils-DrNg0XTR.js";const oe=te(import.meta.url),T=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ne=E(e=>{if(typeof T<"u"&&T.versions&&T.versions.node){const[r,t]=T.versions.node.split(".").map(Number);if(r>22||r===22&&t>=3||r===20&&t>=16)return T.getBuiltinModule(e)}return oe(e)},"__cjs_getBuiltinModule"),{writeFileSync:ie}=ne("node:fs");var $e=Object.defineProperty,I=E((e,r)=>$e(e,"name",{value:r,configurable:!0}),"i$1");const q={error:0,rewritten:1,"would-rewrite":1,unchanged:2},Pe=I(e=>[...e].sort((r,t)=>q[r.status]-q[t.status]),"sortByStatusRank"),Ee=I((e,r)=>r==="all"?e:r==="errors"?e.filter(t=>t.status==="error"):r==="rewritten"?e.filter(t=>t.status==="rewritten"||t.status==="would-rewrite"):e.filter(t=>t.status==="unchanged"),"filterEntries");class Oe{static{E(this,"a")}static{I(this,"SortPackageJsonStore")}#e;#r=new Set;constructor(r){this.#e={entries:Pe(r),filterType:"all",focusedPanel:"list",selectedIndex:0}}getSnapshot=I(()=>this.#e,"getSnapshot");subscribe=I(r=>(this.#r.add(r),()=>{this.#r.delete(r)}),"subscribe");getFilteredEntries=I(()=>Ee(this.#e.entries,this.#e.filterType),"getFilteredEntries");#t(){this.#e={...this.#e};for(const r of this.#r)r()}select(r){const t=this.getFilteredEntries();this.#e.selectedIndex=t.length===0?-1:Math.max(0,Math.min(r,t.length-1)),this.#t()}selectStep(r){this.select(this.#e.selectedIndex+r)}setFilter(r){this.#e.filterType=r,this.#e.selectedIndex=0,this.#t()}setFocusedPanel(r){this.#e.focusedPanel=r,this.#t()}}var je=Object.defineProperty,Ce=E((e,r)=>je(e,"name",{value:r,configurable:!0}),"c$2");const Re=Ce(({checkMode:e,entry:r,focused:t,scrollRef:l})=>r?f(a,{borderColor:t?"white":"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,children:[s(a,{flexShrink:0,paddingTop:1,paddingX:2,children:s(c,{bold:!0,color:"white",children:r.relativePath})}),f(ke,{flexGrow:1,flexShrink:1,paddingX:2,ref:l,scrollbar:!0,scrollbarColor:"gray",children:[s(c,{}),f(a,{children:[s(a,{width:10,children:s(c,{dimColor:!0,children:"Status:"})}),r.status==="error"?s(c,{bold:!0,color:"red",children:"error"}):r.status==="unchanged"?s(c,{bold:!0,color:"green",children:"already sorted"}):r.status==="rewritten"?s(c,{bold:!0,color:"yellow",children:"rewritten"}):s(c,{bold:!0,color:"yellow",children:"would rewrite (--check)"})]}),f(a,{children:[s(a,{width:10,children:s(c,{dimColor:!0,children:"Path:"})}),s(c,{children:r.filePath})]}),r.error?f(ye,{children:[f(a,{flexDirection:"column",marginTop:1,children:[s(c,{dimColor:!0,children:"── "}),s(c,{bold:!0,color:"red",children:"ERROR"}),f(a,{flexDirection:"column",marginTop:1,paddingLeft:2,children:[f(a,{children:[s(a,{width:10,children:s(c,{dimColor:!0,children:"Step:"})}),s(c,{color:"yellow",children:r.error.step})]}),r.error.context&&f(a,{children:[s(a,{width:10,children:s(c,{dimColor:!0,children:"Position:"})}),s(c,{children:`line ${String(r.error.context.line)}, column ${String(r.error.context.column)}`})]}),s(a,{marginTop:1,children:s(c,{color:"red",children:r.error.message})})]})]}),r.error.context&&r.error.context.snippet.length>0&&f(a,{flexDirection:"column",marginTop:1,children:[s(c,{dimColor:!0,children:"── "}),s(c,{bold:!0,color:"white",children:"SNIPPET"}),f(a,{flexDirection:"column",marginTop:1,paddingLeft:2,children:[r.error.context.snippet.map(n=>{const i=`${n.isErrorLine?"❯":" "} ${String(n.lineNumber).padStart(4)} `;return f(a,{children:[s(c,{color:n.isErrorLine?"red":"gray",children:i}),s(c,{color:n.isErrorLine?"white":"gray",wrap:"truncate-end",children:n.content||" "})]},n.lineNumber)}),r.error.context.column>0&&s(a,{children:s(c,{color:"red",children:`${" ".repeat(7+r.error.context.column-1)}↑`})})]})]})]}):f(a,{flexDirection:"column",marginTop:1,children:[s(c,{dimColor:!0,children:"── "}),s(c,{bold:!0,color:"white",children:"KEY DIFF"}),s(a,{flexDirection:"column",marginTop:1,paddingLeft:2,children:r.diff.length===0?s(c,{dimColor:!0,children:"No top-level keys moved (sub-key reorder only)."}):r.diff.map(n=>{const i=n.toIndex-n.fromIndex,d=i<0?`↑ ${String(Math.abs(i))}`:`↓ ${String(i)}`,p=i<0?"green":"yellow";return f(a,{children:[s(a,{width:28,children:s(c,{wrap:"truncate",children:n.key})}),s(a,{width:10,children:f(c,{dimColor:!0,children:[String(n.fromIndex)," → ",String(n.toIndex)]})}),s(c,{color:p,children:d})]},n.key)})}),e&&r.status==="would-rewrite"&&s(a,{marginTop:1,paddingLeft:2,children:s(c,{dimColor:!0,children:"--check mode: no write performed."})})]})]})]}):s(a,{alignItems:"center",borderColor:"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,justifyContent:"center",children:s(c,{dimColor:!0,children:"No entry selected"})}),"SortDetailPanel");var Ie=Object.defineProperty,O=E((e,r)=>Ie(e,"name",{value:r,configurable:!0}),"i");const Te={error:"red",rewritten:"yellow",unchanged:"green","would-rewrite":"yellow"},Me={error:"ERROR",rewritten:"REWROTE",unchanged:"SORTED","would-rewrite":"REWRITE"},U={error:"errors",rewritten:"rewrites",unchanged:"sorted","would-rewrite":"rewrites"},Fe={errors:"Errors",rewrites:"Rewrites",sorted:"Sorted"},Ne=[{count:O(e=>e.errors+e.rewrites+e.sorted,"count"),key:"all",label:"All",shortcut:"1"},{count:O(e=>e.rewrites,"count"),key:"rewritten",label:"Rewrites",shortcut:"2"},{count:O(e=>e.errors,"count"),key:"errors",label:"Errors",shortcut:"3"},{count:O(e=>e.sorted,"count"),key:"unchanged",label:"Sorted",shortcut:"4"}],Z=O(e=>{const r={errors:0,rewrites:0,sorted:0};for(const t of e)r[U[t.status]]++;return r},"computeGroupCounts"),Ae=O(({entry:e,isSelected:r})=>{const t=Te[e.status],l=Me[e.status];return f(a,{flexShrink:0,height:1,children:[s(c,{children:r?">":" "}),s(c,{children:" "}),s(c,{bold:!0,color:t,children:`[${l}]`.padEnd(10)}),s(c,{children:" "}),s(a,{flexGrow:1,children:s(c,{bold:r,inverse:r,wrap:"truncate",children:e.relativePath})}),e.status!=="error"&&e.diff.length>0&&s(c,{dimColor:!0,children:` ${String(e.diff.length)} key${e.diff.length===1?"":"s"}`})]})},"EntryRow"),De=O(({color:e,count:r,label:t})=>s(a,{flexShrink:0,height:1,children:s(c,{bold:!0,color:e,children:`${t} (${String(r)})`})}),"SectionHeader"),Le=O(({counts:e,entries:r,filterType:t,focused:l,selectedIndex:o,totalEntries:n,viewportHeight:i})=>{const d=l?"white":"gray",p=Z(r),b=(p.errors>0?1:0)+(p.rewrites>0?1:0)+(p.sorted>0?1:0),w=t==="all"&&b>1,g=[];let m;for(const[u,y]of r.entries()){const S=U[y.status];w&&S!==m&&(m!==void 0&&g.push({kind:"spacer"}),g.push({color:S==="errors"?"red":S==="rewrites"?"yellow":"green",count:p[S],kind:"header",label:Fe[S]}),m=S),g.push({entry:y,entryIndex:u,kind:"entry"})}const v=g.findIndex(u=>u.kind==="entry"&&u.entryIndex===o),$=v!==-1,P=g.length,h=Math.max(0,P-i);let C=0;$&&i>0&&(C=Math.min(h,Math.max(0,v-i+1)));const R=P>i&&i>0;return f(a,{borderColor:d,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[f(a,{flexShrink:0,gap:1,paddingX:1,children:[s(c,{bold:!0,inverse:!0,children:" VIS SORT "}),f(c,{wrap:"truncate",children:[n," ","file",n===1?"":"s"]})]}),s(a,{flexShrink:0,gap:1,paddingX:1,paddingY:1,children:Ne.map(u=>{const y=t===u.key,S=u.count(e);return f(a,{children:[s(c,{dimColor:!y,children:"["}),s(c,{bold:y,color:y?"cyan":"gray",children:u.shortcut}),s(c,{dimColor:!y,children:"]"}),f(c,{color:y?"white":"gray",children:[" ",u.label]}),f(c,{dimColor:!0,children:[" ","(",S,")"]})]},u.key)})}),f(a,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[s(a,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingLeft:1,children:s(a,{flexDirection:"column",marginTop:-C,children:g.map((u,y)=>u.kind==="spacer"?s(a,{flexShrink:0,height:1},`s-${String(y)}`):u.kind==="header"?s(De,{color:u.color,count:u.count,label:u.label},`h-${u.label}`):s(Ae,{entry:u.entry,isSelected:u.entryIndex===o},u.entry.filePath))})}),R&&s(a,{flexShrink:0,marginLeft:1,marginRight:1,children:s(ve,{contentHeight:P,placement:"inset",scrollOffset:C,style:"block",viewportHeight:i})})]})]})},"SortListPanel");var Be=Object.defineProperty,Je=E((e,r)=>Be(e,"name",{value:r,configurable:!0}),"T");const Ge=100,z=10,_e=6,qe=1,H={1:"all",2:"rewritten",3:"errors",4:"unchanged"},ze=Je(({checkMode:e,store:r})=>{const{exit:t}=xe(),{columns:l,rows:o}=Se(),n=me(r.subscribe,r.getSnapshot),i=F(null),d=r.getFilteredEntries(),p=d[n.selectedIndex]??null,b=Z(n.entries),w=l>=Ge,g=Math.max(0,o-qe),m=w?g:Math.floor(g/2),v=Math.max(0,m-_e),$=_(()=>{t()},[t]),P=F(0),h=F(void 0),C=F(!1),R=_((u,y)=>{P.current+=y,h.current=u,!C.current&&(C.current=!0,queueMicrotask(()=>{C.current=!1;const S=P.current,B=h.current;P.current=0,h.current=void 0,!(S===0||B===void 0)&&(B==="list"?r.selectStep(Math.sign(S)):i.current?.scrollBy(Math.sign(S)))}))},[r]);return be((u,y)=>{if(u==="q"||y.escape){$();return}if(H[u]){r.setFilter(H[u]);return}if(y.tab){r.setFocusedPanel(n.focusedPanel==="list"?"detail":"list");return}n.focusedPanel==="list"?y.upArrow||u==="k"?R("list",-1):(y.downArrow||u==="j")&&R("list",1):n.focusedPanel==="detail"&&(y.upArrow||u==="k"?R("detail",-1):(y.downArrow||u==="j")&&R("detail",1))}),o<z?s(a,{alignItems:"center",justifyContent:"center",children:f(c,{color:"yellow",children:["Terminal too small. Resize to at least",z," ","rows."]})}):f(a,{flexDirection:"column",height:o,width:l,children:[f(a,{flexDirection:w?"row":"column",flexGrow:1,children:[s(a,{flexBasis:"50%",flexGrow:1,flexShrink:1,children:s(Le,{counts:b,entries:d,filterType:n.filterType,focused:n.focusedPanel==="list",selectedIndex:n.selectedIndex,totalEntries:n.entries.length,viewportHeight:v})}),s(a,{flexBasis:"50%",flexGrow:1,flexShrink:1,children:s(Re,{checkMode:e,entry:p,focused:n.focusedPanel==="detail",scrollRef:i})})]}),s(a,{flexShrink:0,paddingX:1,children:s(c,{dimColor:!0,children:"↑/↓ or j/k:navigate | tab:switch panel | 1-4:filter | q:quit"})})]})},"VisSortPackageJsonApp");var He=Object.defineProperty,j=E((e,r)=>He(e,"name",{value:r,configurable:!0}),"c$1");const W=["types","node-addons","node","import","require","default"],We=/^git\+https:\/\/github\.com\/([^/]+)\/([^/.]+(?:\.git)?)$/,Xe=/^git\+ssh:\/\/git@github\.com\/([^/]+)\/([^/.]+(?:\.git)?)$/,A=j(e=>typeof e=="object"&&e!==null&&!Array.isArray(e),"isPlainObject"),L=j(e=>{if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(t=>L(t));const r={};for(const[t,l]of Object.entries(e))r[t]=L(l);return r},"cloneDeep"),Ve=j(e=>{if(!A(e))return{changed:!1,value:e};const r=Object.keys(e);return r.length===1&&r[0]==="url"&&typeof e.url=="string"?{changed:!0,value:e.url}:{changed:!1,value:e}},"tryFormatBugs"),Ke=j(e=>e.endsWith(".git")?e.slice(0,-4):e,"stripGitSuffix"),Qe=j(e=>{if(!A(e))return{changed:!1,value:e};if(typeof e.directory=="string"&&e.directory.length>0)return{changed:!1,value:e};const{type:r}=e;if(r!==void 0&&r!=="git")return{changed:!1,value:e};const{url:t}=e;if(typeof t!="string")return{changed:!1,value:e};const l=We.exec(t)??Xe.exec(t);if(!l)return{changed:!1,value:e};const o=l[1],n=Ke(l[2]??"");if(!o||!n)return{changed:!1,value:e};const i=new Set(["type","url"]);for(const d of Object.keys(e))if(!i.has(d))return{changed:!1,value:e};return{changed:!0,value:`${o}/${n}`}},"tryFormatRepository"),Ye=j(e=>{const r=Object.keys(e),t=[],l=[];for(const i of W)Object.hasOwn(e,i)&&t.push(i);for(const i of r)W.includes(i)||l.push(i);const o=[...t,...l];if(o.length===r.length&&o.every((i,d)=>i===r[d]))return{changed:!1,value:e};const n={};for(const i of o)n[i]=e[i];return{changed:!0,value:n}},"orderConditions"),ee=j(e=>{if(!A(e))return{changed:!1,value:e};let r=!1;const t={};for(const[o,n]of Object.entries(e)){const i=ee(n);t[o]=i.value,i.changed&&(r=!0)}const l=Ye(t);return{changed:r||l.changed,value:l.value}},"sortExportsRecursive"),Ue=j((e,r)=>{const t=L(e);let l=!1;if(r.formatBugs!==!1&&Object.hasOwn(t,"bugs")){const o=Ve(t.bugs);o.changed&&(t.bugs=o.value,l=!0)}if(r.formatRepository!==!1&&Object.hasOwn(t,"repository")){const o=Qe(t.repository);o.changed&&(t.repository=o.value,l=!0)}if(r.sortExports!==!1&&Object.hasOwn(t,"exports")&&A(t.exports)){const o=ee(t.exports);o.changed&&(t.exports=o.value,l=!0)}return{changed:l,pkg:t}},"formatPackageJsonFields");var Ze=Object.defineProperty,x=E((e,r)=>Ze(e,"name",{value:r,configurable:!0}),"c");const er=/at position (\d+)/,rr=/\(?line (\d+) column (\d+)\)?/,tr=x(e=>{const r=new Set,t=[],l=x(n=>{const i=se(n);!r.has(i)&&J(i)&&(r.add(i),t.push(i))},"addFile");l(M(e,"package.json"));const o=ae(e);if(o){const n=G(e,o);for(const i of n)l(M(e,i,"package.json"))}else{const n=M(e,"package.json");if(J(n)){const i=JSON.parse(K(n)),d=Array.isArray(i.workspaces)?i.workspaces:i.workspaces?.packages;if(d){const p=G(e,d);for(const b of p)l(M(e,b,"package.json"))}}}return t},"findPackageJsonFiles"),or=x(e=>/\n([ \t]+)/.exec(e)?.[1]??" ","detectIndent"),nr=x(e=>{if(!(e===void 0||e===""))return e==="tab"||e===String.raw`\t`?" ":/^\d+$/.test(e)?" ".repeat(Number.parseInt(e,10)):e},"resolveIndentOverride"),D=x(e=>e===void 0?[]:(Array.isArray(e)?e:[e]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(r=>r.length>0),"splitList"),ir=x(e=>e.includes(`\r
2
- `)?"crlf":"lf","detectLineEnding"),sr=new Set(["auto","crlf","lf"]),lr=x(e=>{if(e===void 0||e==="")return"auto";if(sr.has(e))return e;throw new Error(`--line-ending must be one of: auto, lf, crlf (got "${e}")`)},"validateLineEnding"),cr=x((e,r,t)=>r.length===0?e:e.filter(l=>{const o=Q(t,l),n=le(l);return!r.some(i=>{const d=i.includes("/")?o:n;return we(i,d)})}),"filterByIgnore"),ar=x((e,r)=>{if(r.length===0)return e;const t={},l=new Set;for(const o of r)Object.hasOwn(e,o)&&(t[o]=e[o],l.add(o));for(const o of Object.keys(e))l.has(o)||(t[o]=e[o]);return t},"applySortOrder"),dr=x((e,r,t)=>{if(t.length===0)return e;const l={...e};for(const o of t)Object.hasOwn(r,o)&&(l[o]=r[o]);return l},"restoreUnsortedSections"),ur=x((e,r)=>{let t=1,l=1;const o=Math.min(r,e.length);for(let n=0;n<o;n++)e.codePointAt(n)===10?(t++,l=1):l++;return{column:l,line:t}},"computeLineColumn"),X=x((e,r,t=2)=>{const l=e.split(`
3
- `);if(r<1||r>l.length)return[];const o=Math.max(0,r-1-t),n=Math.min(l.length,r+t),i=[];for(let d=o;d<n;d++)i.push({content:l[d]??"",isErrorLine:d+1===r,lineNumber:d+1});return i},"buildSnippet"),V=x((e,r)=>{if(!(e instanceof Error))return;const t=er.exec(e.message);if(t){const{column:o,line:n}=ur(r,Number.parseInt(t[1]??"0",10));return{column:o,line:n,snippet:X(r,n)}}const l=rr.exec(e.message);if(l){const o=Number.parseInt(l[1]??"1",10);return{column:Number.parseInt(l[2]??"1",10),line:o,snippet:X(r,o)}}},"extractParseErrorContext"),fr=x((e,r)=>{const t=Object.keys(JSON.parse(e)),l=Object.keys(JSON.parse(r)),o=new Map(t.map((i,d)=>[i,d])),n=[];for(const[i,d]of l.entries()){const p=o.get(d);p!==void 0&&p!==i&&n.push({fromIndex:p,key:d,toIndex:i})}return n},"computeKeyDiff"),hr=x((e,r,t)=>{const l=r.indent??t.indent??or(e),o=r.lineEnding==="auto"?t.lineEnding??ir(e):r.lineEnding,n=Y(e,{pretty:!1,sortScripts:r.sortScripts});let i=JSON.parse(n);if(r.unsorted.length>0){const w=JSON.parse(e);i=dr(i,w,r.unsorted)}i=ar(i,r.sortOrder);const d={formatBugs:r.formatBugs,formatRepository:r.formatRepository,sortExports:r.sortExports},p=Ue(i,d);let b=JSON.stringify(p.pkg,null,l);return r.finalNewline&&(b+=`
4
- `),o==="crlf"&&(b=b.replaceAll(`
5
- `,`\r
6
- `)),b},"sortContents"),pr=x((e,r)=>{const t=tr(e),l=de(e),o=ue({cwd:e,extraPatterns:fe(l)}),n=t.filter(d=>!o.ignores(d)),i=cr(n,r,e);return{afterGitignore:n,allFiles:t,files:i}},"discoverPackageJsonFiles"),gr=x((e,{checkMode:r,cwd:t,normalized:l})=>{const o=Q(t,e)||e;let n;try{n=K(e)}catch(w){return{diff:[],error:{message:N(w),step:"read"},filePath:e,relativePath:o,status:"error"}}let i;try{i=Y(n,{pretty:!1,sortScripts:l.sortScripts})}catch(w){const g={message:N(w),step:"native-sort"},m=V(w,n);return m&&(g.context=m),{diff:[],error:g,filePath:e,relativePath:o,status:"error"}}const d=l.editorconfig?he(e):{};let p;try{p=hr(n,l,d)}catch(w){const g={message:N(w),step:"json-parse"},m=V(w,n);return m&&(g.context=m),{diff:[],error:g,filePath:e,relativePath:o,status:"error"}}if(n===p)return{diff:[],filePath:e,relativePath:o,status:"unchanged"};let b;try{b=fr(n,i)}catch{b=[]}if(r)return{diff:b,filePath:e,relativePath:o,status:"would-rewrite"};try{ie(e,p,"utf8")}catch(w){return{diff:b,error:{message:N(w),step:"write"},filePath:e,relativePath:o,status:"error"}}return{diff:b,filePath:e,relativePath:o,status:"rewritten"}},"processFile"),mr=x(e=>{if(e.error&&(k.error(`${e.filePath}: ${e.error.message}`),k.info(` step: ${e.error.step}`),e.error.context)){k.info(` at line ${String(e.error.context.line)}, column ${String(e.error.context.column)}`);for(const r of e.error.context.snippet){const t=r.isErrorLine?">":" ";k.info(` ${t} ${String(r.lineNumber).padStart(4)} | ${r.content}`)}}},"printStaticError"),Fr=x(async({options:e,visConfig:r,workspaceRoot:t})=>{const l=t??process.cwd(),o=r?.sortPackageJson,n=e.check||!1,i={editorconfig:e.editorconfig===!1?!1:o?.editorconfig??!0,finalNewline:e.finalNewline??o?.finalNewline??!0,formatBugs:e.formatBugs===!1?!1:o?.formatBugs??!0,formatRepository:e.formatRepository===!1?!1:o?.formatRepository??!0,ignore:[...D(e.ignore),...o?.ignore??[]],indent:nr(e.indent??o?.indent),lineEnding:lr(e.lineEnding??o?.lineEnding),sortExports:e.sortExports===!1?!1:o?.sortExports??!0,sortOrder:[...D(e.sortOrder),...o?.sortOrder??[]],sortScripts:e.sortScripts||o?.sortScripts||!1,unsorted:[...D(e.unsorted),...o?.unsorted??[]]},d=pr(l,i.ignore),{afterGitignore:p,allFiles:b,files:w}=d;if(w.length===0){b.length===0?k.info("No package.json files found."):p.length===0?k.info("All package.json files were excluded by .gitignore or workspace exclusions."):k.info("All package.json files were excluded by --ignore.");return}const g=[];for(const h of w)g.push(gr(h,{checkMode:n,cwd:l,normalized:i}));let m=0,v=0,$=0;for(const h of g)h.status==="error"?$++:h.status==="rewritten"||h.status==="would-rewrite"?m++:v++;const P=m>0||$>0;if(process.stdout.isTTY&&!pe&&P){const h=new Oe(g);await ce(ge.createElement(ze,{checkMode:n,store:h}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit()}else for(const h of g)switch(h.status){case"error":{mr(h);break}case"rewritten":{k.success(`Sorted ${h.filePath}`);break}case"would-rewrite":{k.warn(`${h.filePath} is not sorted`);break}}if(n)m>0?(k.info(`${String(m)} file${m===1?"":"s"} not sorted, ${String(v)} already sorted`),process.exitCode=1):$===0&&k.info(`All ${String(v)} package.json file${v===1?" is":"s are"} sorted`);else{const h=[];m>0&&h.push(`sorted ${String(m)} file${m===1?"":"s"}`),v>0&&h.push(`${String(v)} already sorted`),$>0&&h.push(`${String($)} error${$===1?"":"s"}`),h.length>0&&k.info(h.join(", "))}$>0&&(process.exitCode=1)},"execute");export{X as buildSnippet,fr as computeKeyDiff,ur as computeLineColumn,Fr as default,pr as discoverPackageJsonFiles,V as extractParseErrorContext,gr as processFile};
1
+ var H=Object.defineProperty;var j=(e,t)=>H(e,"name",{value:t,configurable:!0});import{createRequire as K}from"node:module";import{b as V,d as A,w as X}from"./config.js";import{$ as Y,K as D,z as T,M as C}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{o as Z}from"../packem_shared/index-DH-5hsrC.js";import{ax as P,C as ee,ay as te,X as oe}from"./bin.js";import{i as re}from"../packem_shared/glob-MHJQjR39-CQ2GC0b_.js";import{n as ne}from"../packem_shared/manifests-Z3spBpxv.js";const z=K(import.meta.url),O=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Q=j(e=>{if(typeof O<"u"&&O.versions&&O.versions.node){const[t,o]=O.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return O.getBuiltinModule(e)}return z(e)},"__cjs_getBuiltinModule"),{readFileSync:F}=Q("node:fs");var se=Object.defineProperty,y=j((e,t)=>se(e,"name",{value:t,configurable:!0}),"c");const ie=y((e,t)=>{const o=t.replace(/^\.?\//,"");return o===""||o==="."?`/${e}/`:e===""||e==="."?`/${o}`:`/${e}/${o}`},"toWorkspacePath"),_=y((e,t,o=[])=>{const s=[],r=new Set;for(const[i,n]of Object.entries(t?.globalPaths??{}))s.push({owners:n,path:i,source:"project-json"}),r.add(i);for(const[i,n]of Object.entries(e.projects)){const a=n.owners??[];for(const c of a){const l=ie(n.root??i,c.path);s.push({channel:c.channel,owners:c.owners,path:l,projectId:i,source:"project-json"}),r.add(l)}}for(const i of o)r.has(i.path)||(s.push(i),r.add(i.path));return(t?.orderBy??"file-source")==="project-id"?s.sort((i,n)=>(i.projectId??"").localeCompare(n.projectId??"")||i.path.localeCompare(n.path)):s.sort((i,n)=>i.path.localeCompare(n.path)),s},"buildCodeownersLines"),ae="Update each project's project.json `owners` field and re-run the command.",ce=y(e=>["# CODEOWNERS — generated by `vis sync codeowners`. Do not edit by hand.",e?`# Re-run with: ${e}`:`# ${ae}`,""],"buildHeader"),M=y(e=>{const t=[];for(const o of e){const s=o.owners.join(" "),r=o.channel?` # notify: ${o.channel}`:"";t.push(`${o.path} ${s}${r}`)}return t},"renderEntries"),de=y((e,t={})=>[...ce(t.regenerationCommand),...M(e),""].join(`
2
+ `),"renderCodeowners"),S={begin:"# BEGIN vis-codeowners",end:"# END vis-codeowners"},le=y((e,t=S,o={})=>{const s=o.regenerationCommand?`# Generated by vis sync codeowners re-run with: ${o.regenerationCommand}`:"# Generated by `vis sync codeowners` do not edit by hand.";return[t.begin,s,...M(e),t.end].join(`
3
+ `)},"renderCodeownersBlock"),ue=y((e,t,o=S)=>{const s=e.indexOf(o.begin),r=e.indexOf(o.end);if(s!==-1&&r!==-1&&r>s){const n=e.slice(0,s),a=r+o.end.length,c=e.slice(a);return`${n}${t}${c}`}const i=e.replace(/\s+$/u,"");return`${i.length===0?"":`${i}
4
+
5
+ `}${t}
6
+ `},"mergeIntoExisting");var fe=Object.defineProperty,N=j((e,t)=>fe(e,"name",{value:t,configurable:!0}),"f$1");const pe=["**/CODEOWNERS"],he=["**/node_modules/**","**/dist/**","**/build/**","**/coverage/**","**/.git/**","**/.next/**","**/.nuxt/**"],ge=N(e=>{const t=[];for(const o of e.split(/\r?\n/u)){const s=o.indexOf("#"),r=(s===-1?o:o.slice(0,s)).trim();if(r.length===0)continue;const i=r.split(/\s+/u);if(i.length<2)continue;const[n,...a]=i,c=a.filter(l=>l.length>0);!n||c.length===0||t.push({owners:c,path:n})}return t},"parseCodeownersFile"),me=N((e,t)=>{const o=t.replace(/^\.\/?/,"").replace(/\/$/,"");return e.startsWith("/")?o===""?e:`/${o}${e}`:o===""?`/${e}`:`/${o}/${e}`},"rewriteNestedPath"),we=N(async(e,t,o)=>{const s=t&&t.length>0?[...t]:[...pe],r=[...he];if(o){const a=o.replace(/^\.\/?/,"").replace(/^\/+/,"");a.length>0&&r.push(a)}const i=await re(s,{absolute:!0,cwd:e,ignore:r}),n=[];for(const a of i){let c;try{c=Y(a)}catch{continue}const l=D(a),p=T(e,l);for(const m of ge(c))n.push({owners:m.owners,path:me(m.path,p)})}return n},"collectNestedCodeownersLines"),be=/^(?:https?:\/\/)?(?:www\.)?github\.com\/([^/?#]+)/iu,$e=N(e=>{if(!e)return;const t=e.match(be);if(!t?.[1])return;const o=t[1].trim();if(!(o===""||o.includes(" ")))return`@${o.replace(/^@/,"")}`},"extractGitHubHandle"),je=N((e,t)=>{const o=[];for(const[s,r]of Object.entries(e.projects)){if(r.owners&&r.owners.length>0)continue;const i=r.root??s,n=C(t,i,"package.json"),a=P(n);if(!a)continue;const c=ne(a.maintainers);if(!c||c.length===0)continue;const l=[],p=new Set;for(const m of c){const w=$e(m.url);w&&!p.has(w)&&(p.add(w),l.push(w))}l.length!==0&&o.push({owners:l,path:i===""||i==="."?"/":`/${i}/`,projectId:s})}return o},"collectMaintainerLines");var ye=Object.defineProperty,v=j((e,t)=>ye(e,"name",{value:t,configurable:!0}),"s");const ke=["author","bugs","homepage","license","repository","engines"],x=v(e=>typeof e=="object"&&e!==null&&!Array.isArray(e),"isPlainObject"),R=v((e,t)=>{if(e===t)return!0;if(typeof e!=typeof t||e===null||t===null)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(const[o,s]of e.entries())if(!R(s,t[o]))return!1;return!0}if(typeof e=="object"&&typeof t=="object"){const o=Object.keys(e),s=Object.keys(t);if(o.length!==s.length)return!1;for(const r of o)if(!R(e[r],t[r]))return!1;return!0}return!1},"deepEqual"),I=v(e=>e===void 0?e:structuredClone(e),"cloneJson"),Ce=v((e,t,o)=>{if(e==="repository"&&x(t)&&x(o)){const s={};for(const[r,i]of Object.entries(t))r!=="directory"&&(s[r]=I(i));return typeof o.directory=="string"&&(s.directory=o.directory),s}return I(t)},"buildTargetValue"),ve=v((e,t,o)=>{const s=[];for(const r of o.fields){if(!Object.hasOwn(e,r))continue;const i=e[r],n=t[r],a=Ce(r,i,n);R(a,n)||s.push({after:a,before:n,field:r,packageJsonPath:""})}return s},"computeFieldChanges"),Ee=v((e,t)=>{for(const o of t)e[o.field]=o.after},"applyFieldChanges");var Oe=Object.defineProperty,G=j((e,t)=>Oe(e,"name",{value:t,configurable:!0}),"n");const U="Generated by `vis sync codeowners --write-guard`. Do not edit by hand.",Ne=G(e=>{const t=e.replace(/^\.?\/+/u,"").replace(/\/+$/u,"");return t===""||t==="."?"**":`${t}/**`},"toPathGlob"),q=G(e=>{const t=new Set,o=[];for(const s of[...e].sort((r,i)=>r.name.localeCompare(i.name))){const r=Ne(s.root);t.has(r)||(t.add(r),o.push(r))}return o},"resolveGlobs"),Ge=G(e=>{const t=q(e),o=t.map(r=>` - "${r}"`).join(`
7
+ `),s=t.map(r=>` ${r}`).join(`
8
+ `);return`# ${U}
9
+ name: Write Guard
10
+
11
+ on:
12
+ pull_request:
13
+ paths:
14
+ ${o}
15
+
16
+ permissions:
17
+ contents: read
18
+ pull-requests: read
19
+
20
+ jobs:
21
+ write-guard:
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+ with:
26
+ fetch-depth: 0
27
+ - uses: geritol/write-guard@v1
28
+ with:
29
+ codeowners: CODEOWNERS
30
+ paths: |
31
+ ${s}
32
+ `},"renderGithubWriteGuard"),Pe=G(e=>{const t=q(e).map(o=>` - "${o}/*"`).join(`
33
+ `);return`# ${U}
34
+ #
35
+ # SOFT GUARD ONLY — this job does NOT block a merge by itself.
36
+ # It verifies the generated CODEOWNERS is in sync and flags that a
37
+ # restricted path changed. GitLab CI cannot portably gate a merge on
38
+ # code-owner *approval* from a job, so REAL ENFORCEMENT REQUIRES the
39
+ # native GitLab setting:
40
+ # Settings -> Repository -> Protected branches ->
41
+ # "Require approval from Code Owners" (GitLab Premium / Ultimate)
42
+ # https://docs.gitlab.com/ee/user/project/codeowners/
43
+ # Without that setting enabled, this job is advisory only.
44
+ write-guard:
45
+ stage: test
46
+ image: node:22-alpine
47
+ rules:
48
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
49
+ changes:
50
+ ${t}
51
+ script:
52
+ - corepack enable
53
+ - pnpm install --frozen-lockfile
54
+ - pnpm vis sync codeowners --check
55
+ - >-
56
+ echo "SOFT GUARD: a restricted path changed. This job does NOT enforce
57
+ code-owner approval. Enable 'Require approval from Code Owners' on the
58
+ protected branch (GitLab Premium/Ultimate) for a real merge gate:
59
+ https://docs.gitlab.com/ee/user/project/codeowners/"
60
+ `},"renderGitlabWriteGuard"),Re=G(e=>e.length===0?[]:[{content:Ge(e),path:".github/workflows/write-guard.yml"},{content:Pe(e),path:".gitlab/write-guard.gitlab-ci.yml"}],"buildWriteGuardArtifacts");var Se=Object.defineProperty,k=j((e,t)=>Se(e,"name",{value:t,configurable:!0}),"m");const B=new Set(["nested-codeowners","package-json-maintainers","project-json"]),J=k((e,t,o)=>{const s=new Set,r=[];for(const i of e??[])for(const n of i.split(",")){const a=n.trim();if(a.length===0)continue;if(o&&!o(a))throw new Error(`Unknown codeowners source: "${a}". Known: ${[...B].join(", ")}.`);const c=a;s.has(c)||(s.add(c),r.push(c))}return r.length>0?r:[...t]},"parseCsvOption"),We=k(e=>B.has(e),"isCodeownersSource"),L=["codeowners","package-json-fields"],_e=k((e,t)=>t.some(o=>Z(o,e)),"matchesAnyGlob"),xe=k((e,t,o,s)=>{const r=Object.entries(o.projects).filter(([,n])=>n.restricted===!0).map(([n,a])=>({name:n,root:a.root??n})),i=Re(r);if(i.length===0){e.info("No projects flagged `restricted: true` in project.json. Skipping Write Guard.");return}if(s){let n=!1;for(const a of i){const c=C(t,a.path);let l="";try{l=F(c,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}l.trim()!==a.content.trim()&&(e.error(`${a.path} is out of date. Run \`vis sync codeowners --write-guard\` to update it.`),n=!0)}n?process.exitCode=1:e.info(`Write Guard CI is up to date (${i.length} files, ${r.length} restricted projects).`);return}for(const n of i){const a=C(t,n.path);V(D(a)),A(a,n.content),e.info(`Wrote ${n.path}`)}e.info(`Write Guard CI scoped to ${r.length} restricted project${r.length===1?"":"s"}.`)},"handleWriteGuard"),Ie=k(async({logger:e,options:t,visConfig:o,workspaceRoot:s})=>{const r=s,{workspace:i}=ee(r,o),n=o?.codeowners;t.writeGuard===!0&&xe(e,r,i,t.check===!0);const a=J(t.from,n?.sources??["project-json"],We),c=t.regenerationCommand??n?.regenerationCommand,l=t.preserveBlock===!0||n?.preserveBlock===!0,p=n?.blockMarker??S,m=t.nestedIncludes??n?.nestedIncludes,w=t.out??"CODEOWNERS",f=[];if(a.includes("nested-codeowners")){const g=await we(r,m,w);for(const $ of g)f.push({...$,source:"nested"})}if(a.includes("package-json-maintainers")){const g=je(i,r);for(const $ of g)f.push({...$,source:"maintainers"})}const b=a.includes("project-json")?_(i,n,f):_({projects:{}},n,f);if(b.length===0){e.info("No `owners` entries found in any source. Nothing to sync.");return}const u=C(r,w);let E="";try{E=F(u,"utf8")}catch(g){if(g.code!=="ENOENT")throw g}const d={regenerationCommand:c},h=l?ue(E,le(b,p,d),p):de(b,d);if(t.check){if(E.trim()!==h.trim()){e.error(`${u} is out of date. Run \`vis sync codeowners\` to update it.`),process.exitCode=1;return}e.info(`${u} is up to date.`);return}A(u,h),e.info(`Wrote ${b.length} entries to ${u}`)},"runCodeowners"),Le=k(({logger:e,options:t,visConfig:o,workspaceRoot:s})=>{const r=s,i=o?.editorconfig??!0,n=P(C(r,"package.json"));if(!n){e.error("Could not read root package.json. Nothing to sync."),process.exitCode=1;return}const a=J(t.fields,ke),c=t.ignorePackageName??[],l=t.check===!0,p=(t.format??"human").toLowerCase(),m=t.quiet===!0,w=te(r).filter(d=>d!=="."),f=[];let b=0;for(const d of w){const h=C(r,d,"package.json"),g=P(h);if(!g)continue;const $=typeof g.name=="string"?g.name:void 0;if($!==void 0&&c.length>0&&_e($,c))continue;b+=1;const W=ve(n,g,{fields:a});W.length!==0&&f.push({filePath:h,packageJsonPath:T(r,h),packageName:$,pkg:g,pkgChanges:W})}if(!l)for(const d of f)Ee(d.pkg,d.pkgChanges),X(d.filePath,d.pkg,{indent:oe(d.filePath,{useEditorconfig:i}),overwrite:!0});const u=f.flatMap(d=>d.pkgChanges.map(h=>({after:h.after,before:h.before,field:h.field,packageJsonPath:d.packageJsonPath,packageName:d.packageName}))),E={changes:u,fields:a,kind:"package-json-fields",mode:l?"check":"write",totalChanges:u.length,totalPackages:b};if(p==="json")process.stdout.write(`${JSON.stringify(E,null,4)}
61
+ `);else if(u.length===0)e.info(`All ${b} package${b===1?"":"s"} in sync (fields: ${a.join(", ")}).`);else if(l){if(!m)for(const d of u)e.error(`${d.packageJsonPath}: ${d.field} drifts from root`);e.error(`Found ${u.length} field drift${u.length===1?"":"s"} across ${f.length} package${f.length===1?"":"s"}. Run \`vis sync package-json-fields\` to fix.`)}else{if(!m)for(const d of f)e.info(`${d.packageJsonPath}: synced ${d.pkgChanges.map(h=>h.field).join(", ")}`);e.info(`Synced ${u.length} field${u.length===1?"":"s"} across ${f.length} package${f.length===1?"":"s"}.`)}l&&u.length>0&&(process.exitCode=1)},"runPackageJsonFields"),Je=k(async e=>{const t=e.argument[0];if(!t)throw new Error(`Missing sync kind. Usage: vis sync <kind> (known kinds: ${L.join(", ")})`);if(!e.workspaceRoot)throw new Error("Could not determine workspace root. Run inside a monorepo.");if(t==="codeowners"){await Ie(e);return}if(t==="package-json-fields"){Le(e);return}throw new Error(`Unknown sync kind: "${t}". Known kinds: ${L.join(", ")}.`)},"execute");export{Je as default};
@@ -1,24 +1,3 @@
1
- var me=Object.defineProperty;var S=(r,e)=>me(r,"name",{value:e,configurable:!0});import{createRequire as he}from"node:module";import"../packem_shared/index-CS6a2wFB.js";import{i as ke}from"../packem_shared/glob-MHJQjR39-CQ2GC0b_.js";import{M as j,i as X,$ as G,C as we}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{B as M,n as ne}from"./config.js";import{render as be}from"@visulima/tui";import{o as xe,aD as $e,au as Ce,h as Oe,J as K,p as b,s as Se}from"./bin.js";import Pe from"module-replacements/manifests/micro-utilities.json"with{type:"json"};import Ne from"module-replacements/manifests/native.json"with{type:"json"};import Ee from"module-replacements/manifests/preferred.json"with{type:"json"};import _e,{useSyncExternalStore as je,useRef as Te,useState as Y,useCallback as De}from"react";import{s as ie,A as Ae,y as Re}from"../packem_shared/pm-runner-BzGZmzYs.js";import{jsx as n,jsxs as m,Fragment as U}from"react/jsx-runtime";import{Box as h}from"@visulima/tui/components/box";import{Text as s}from"@visulima/tui/components/text";import{useApp as Ie}from"@visulima/tui/hooks/use-app";import{useInput as Me}from"@visulima/tui/hooks/use-input";import{useWindowSize as Fe}from"@visulima/tui/hooks/use-window-size";import{ScrollView as Ge}from"@visulima/tui/components/scroll-view";import{ScrollBar as Le}from"@visulima/tui/components/scroll-bar";import __cjs_mod__ from "node:module"; // -- packem CommonJS require shim --
2
- const require = __cjs_mod__.createRequire(import.meta.url);
3
- const ge=he(import.meta.url),I=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ye=S(r=>{if(typeof I<"u"&&I.versions&&I.versions.node){const[e,t]=I.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return I.getBuiltinModule(r)}return ge(r)},"__cjs_getBuiltinModule"),{writeFileSync:ve}=ye("node:fs");var qe=Object.defineProperty,_=S((r,e)=>qe(r,"name",{value:e,configurable:!0}),"d$1");const ze=["dependencies","devDependencies","peerDependencies","peerDependenciesMeta","optionalDependencies","bundleDependencies"],Ue=["overrides","pnpm","resolutions"],Be=["engines","files"],Je=_(r=>{const e=ie.coerce(r)?.major;return e!==void 0&&e>=10},"isPnpmV10Plus"),Ve=_(r=>{const e=j(r,"pnpm-workspace.yaml");if(!X(e))return{overrides:{},source:"pnpm-workspace.yaml"};try{return{overrides:xe(e)?.overrides??{},source:"pnpm-workspace.yaml"}}catch{return{overrides:{},source:"pnpm-workspace.yaml"}}},"readPnpmWorkspaceOverrides"),He=_((r,e)=>{let t={};return e==="deno"?{overrides:{},source:"package.json"}:(e==="pnpm"?t=r.pnpm?.overrides??{}:e==="yarn"||e==="bun"?t=r.resolutions??{}:t=r.overrides??{},{overrides:t,source:"package.json"})},"readPkgJsonOverrides"),We=_((r,e,t)=>t.name==="pnpm"&&Je(t.version)?Ve(r):He(e,t.name),"readOverrides"),Q=_((r,e)=>{const t=e;for(const a of Ue){const i=r.indexOf(a);if(i!==-1&&a!==t)return t==="overrides"?i:i+1}let o=-1;for(const a of ze){const i=r.indexOf(a);i>o&&(o=i)}if(o!==-1)return o+1;for(const a of Be){const i=r.indexOf(a);if(i!==-1)return i}return r.length},"findInsertIndex"),Xe=_((r,e)=>{const t=j(r,"pnpm-workspace.yaml");if(!X(t))throw new Error(`pnpm-workspace.yaml not found at ${t}. Cannot write overrides for pnpm v10+.`);let o=G(t);const a=`overrides:
4
- ${Object.entries(e).map(([i,l])=>` '${i}': '${l}'`).join(`
5
- `)}
6
- `;o=/^overrides:\s*$/m.test(o)||/^overrides:\s*\n/m.test(o)?o.replace(/^overrides:\s*\n(?:(?:[ \t].*)?\n)*/m,a):`${o.trimEnd()}
7
-
8
- ${a}`,M(t,o)},"writePnpmWorkspaceOverrides"),Ke=_((r,e,t,o,a)=>{const i=G(r),l=$e(r,i,{useEditorconfig:a});if(o==="pnpm"){const v=e.pnpm??{};if(v.overrides=t,e.pnpm)e.pnpm=v,M(r,`${JSON.stringify(e,null,l)}
9
- `);else{const x=Object.keys(e),w=Q(x,"pnpm"),k=Object.entries(e);k.splice(w,0,["pnpm",v]),M(r,`${JSON.stringify(Object.fromEntries(k),null,l)}
10
- `)}}else{const v=o==="yarn"||o==="bun"?"resolutions":"overrides";if(e[v])e[v]=t,M(r,`${JSON.stringify(e,null,l)}
11
- `);else{const x=Object.keys(e),w=Q(x,v),k=Object.entries(e);k.splice(w,0,[v,t]),M(r,`${JSON.stringify(Object.fromEntries(k),null,l)}
12
- `)}}},"writePkgJsonOverrides"),Ye=_((r,e,t,o,a)=>{if(o.name==="deno")return{added:[],updated:[]};const i=G(e),l=JSON.parse(i),{overrides:v,source:x}=We(r,l,o),w=[],k=[],c=new Set;if(o.name==="npm")for(const p of["dependencies","devDependencies"]){const g=l[p];if(g)for(const y of Object.keys(g))c.add(y)}for(const p of t){const g=v[p.original];if(typeof g=="object")continue;let y=p.spec;o.name==="npm"&&c.has(p.original)&&(y=`$${p.original}`),g!==y&&(g?k.push(p.original):w.push(p.original),v[p.original]=y)}if(w.length===0&&k.length===0)return{added:w,updated:k};const f=Object.fromEntries(Object.entries(v).sort(([p],[g])=>p.localeCompare(g)));return x==="pnpm-workspace.yaml"?Xe(r,f):Ke(e,l,f,o.name,a),{added:w,updated:k}},"applyOverrides"),Qe=_((r,e)=>{const t={bun:["bun.lock"],deno:["deno.lock"],npm:["npm-shrinkwrap.json","package-lock.json"],pnpm:["pnpm-lock.yaml"],yarn:["yarn.lock"]};for(const o of t[e]??[]){const a=j(r,o);try{return G(a)}catch{continue}}return""},"readLockfileText"),Ze=_((r,e,t)=>{if(!r)return!1;const o=e.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`);switch(t){case"bun":return r.includes(`"${e}":`)||new RegExp(String.raw`(^|\s|[",])${o}@`,"m").test(r);case"deno":return r.includes(`"${e}"`)||r.includes(`"npm:${e}@`)||r.includes(`"jsr:${e}@`);case"npm":return r.includes(`"${e}":`)||r.includes(`"node_modules/${e}":`);case"pnpm":return new RegExp(String.raw`(^|\s|['"/])${o}(@|['"]?:)`,"m").test(r);case"yarn":return new RegExp(String.raw`(^|\s|[",])${o}@`,"m").test(r);default:return!1}},"lockfileContainsPackage");var V={exports:{}},H,Z;function ee(){if(Z)return H;Z=1;var r=Object.defineProperty,e=S((c,f)=>r(c,"name",{value:f,configurable:!0}),"t"),t=Object.defineProperty,o=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,l=e((c,f)=>{for(var p in f)t(c,p,{get:f[p],enumerable:!0})},"__export"),v=e((c,f,p,g)=>{if(f&&typeof f=="object"||typeof f=="function")for(let y of a(f))!i.call(c,y)&&y!==p&&t(c,y,{get:e(()=>f[y],"get"),enumerable:!(g=o(f,y))||g.enumerable});return c},"__copyProps"),x=e(c=>v(t({},"__esModule",{value:!0}),c),"__toCommonJS"),w={};l(w,{PURL_Type:e(()=>k,"PURL_Type")}),H=x(w);var k=(c=>(c.APK="apk",c.BITBUCKET="bitbucket",c.COCOAPODS="cocoapods",c.CARGO="cargo",c.CHROME="chrome",c.COMPOSER="composer",c.CONAN="conan",c.CONDA="conda",c.CRAN="cran",c.DEB="deb",c.DOCKER="docker",c.GEM="gem",c.GENERIC="generic",c.GITHUB="github",c.GOLANG="golang",c.HACKAGE="hackage",c.HEX="hex",c.HUGGINGFACE="huggingface",c.MAVEN="maven",c.MLFLOW="mlflow",c.NPM="npm",c.NUGET="nuget",c.OCI="oci",c.PUB="pub",c.PYPI="pypi",c.QPKG="qpkg",c.RPM="rpm",c.SWID="swid",c.SWIFT="swift",c.VCS="vcs",c))(k||{});return H}S(ee,"requireTypes");var re;function er(){return re||(re=1,(function(r){var e=Object.defineProperty,t=S((f,p)=>e(f,"name",{value:p,configurable:!0}),"a"),o=Object.defineProperty,a=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,l=Object.prototype.hasOwnProperty,v=t((f,p)=>{for(var g in p)o(f,g,{get:p[g],enumerable:!0})},"__export"),x=t((f,p,g,y)=>{if(p&&typeof p=="object"||typeof p=="function")for(let u of i(p))!l.call(f,u)&&u!==g&&o(f,u,{get:t(()=>p[u],"get"),enumerable:!(y=a(p,u))||y.enumerable});return f},"__copyProps"),w=t((f,p,g)=>(x(f,p,"default"),g&&x(g,p,"default")),"__reExport"),k={};v(k,{getManifestData:t(()=>c,"getManifestData")}),w(k,ee(),r.exports);function c(f,p){try{const g=require("../manifest.json");if(!f)return g;const y=g[f];if(!y)return;if(!p)return y;const u=y.find(([C,O])=>O.package===p);return u?u[1]:void 0}catch{return}}S(c,"getManifestData"),t(c,"getManifestData"),r.exports={getManifestData:c,...ee()}})(V)),V.exports}S(er,"requireDist");var rr=er(),tr=Object.defineProperty,F=S((r,e)=>tr(r,"name",{value:e,configurable:!0}),"s");const or=F((r,e,t)=>{let o=r;if(e!=="all"&&(o=o.filter(a=>a.category===e)),t){const a=t.toLowerCase();o=o.filter(i=>i.packageName.toLowerCase().includes(a))}return o},"filterEntries");class nr{static{S(this,"h")}static{F(this,"OptimizeStore")}#e;#t=new Set;constructor(e){this.#e={applyProgress:null,checkedEntries:new Set,entries:e,error:null,filterActive:!1,filterText:"",filterType:"all",focusedPanel:"list",phase:"browsing",selectedIndex:0}}getSnapshot=F(()=>this.#e,"getSnapshot");subscribe=F(e=>(this.#t.add(e),()=>{this.#t.delete(e)}),"subscribe");getFilteredEntries=F(()=>or(this.#e.entries,this.#e.filterType,this.#e.filterText),"getFilteredEntries");#r(){this.#e={...this.#e};for(const e of this.#t)e()}select(e){const t=this.getFilteredEntries();this.#e.selectedIndex=t.length===0?-1:Math.max(0,Math.min(e,t.length-1)),this.#r()}toggleCheck(e){const t=new Set(this.#e.checkedEntries);t.has(e)?t.delete(e):t.add(e),this.#e.checkedEntries=t,this.#r()}toggleAll(){const e=this.getFilteredEntries(),t=new Set(this.#e.checkedEntries);if(e.every(o=>t.has(o.packageName)))for(const o of e)t.delete(o.packageName);else for(const o of e)t.add(o.packageName);this.#e.checkedEntries=t,this.#r()}setFilter(e){this.#e.filterType=e,this.#e.selectedIndex=0,this.#r()}setFilterText(e){this.#e.filterText=e,this.#e.selectedIndex=0,this.#r()}setFilterActive(e){this.#e.filterActive=e,this.#r()}setFocusedPanel(e){this.#e.focusedPanel=e,this.#r()}setPhase(e){this.#e.phase=e,this.#r()}setProgress(e,t){this.#e.applyProgress={current:e,total:t},this.#r()}setError(e){this.#e.error=e,this.#e.phase="error",this.#r()}getCheckedEntries(){return this.#e.entries.filter(e=>this.#e.checkedEntries.has(e.packageName))}}const ce={"micro-utility":"gray",native:"green",preferred:"yellow",socket:"cyan"},ir={"micro-utility":"MICRO",native:"NATIVE",preferred:"PREF",socket:"SOCKET"},cr={"micro-utility":"Trivial utility package that can be replaced with inline code.",native:"Polyfill for a native JS/Node.js API. Use the built-in instead.",preferred:"A lighter or faster alternative package exists.",socket:"Security-hardened replacement from Socket.dev's @socketregistry."};var ar=Object.defineProperty,sr=S((r,e)=>ar(r,"name",{value:e,configurable:!0}),"d");const lr=sr(({entry:r,focused:e,scrollRef:t})=>{const o=e?"white":"gray";if(!r)return n(h,{alignItems:"center",borderColor:"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,justifyContent:"center",children:n(s,{dimColor:!0,children:"No entry selected"})});const a=ce[r.category]??"gray";return m(h,{borderColor:o,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[n(h,{flexShrink:0,paddingTop:1,paddingX:2,children:n(s,{bold:!0,color:"white",children:r.packageName})}),m(Ge,{flexGrow:1,flexShrink:1,paddingX:2,ref:t,scrollbar:!0,scrollbarColor:"gray",children:[n(s,{}),m(h,{children:[n(h,{width:14,children:n(s,{dimColor:!0,children:"Category:"})}),n(s,{bold:!0,color:a,children:r.category})]}),m(h,{children:[n(h,{width:14,children:n(s,{dimColor:!0,children:"Replace with:"})}),n(s,{children:r.replacement})]}),r.overrideSpec&&m(h,{children:[n(h,{width:14,children:n(s,{dimColor:!0,children:"Override:"})}),n(s,{color:"cyan",children:r.overrideSpec})]}),m(h,{children:[n(h,{width:14,children:n(s,{dimColor:!0,children:"Codemod:"})}),n(s,{color:r.hasCodemod?"green":"gray",children:r.hasCodemod?"available ⚙":"not available"})]}),m(h,{flexDirection:"column",marginTop:1,children:[n(s,{dimColor:!0,children:"── "}),n(s,{bold:!0,color:"white",children:"DESCRIPTION"}),n(h,{marginTop:1,paddingLeft:2,children:n(s,{children:cr[r.category]??""})})]}),r.category==="native"&&m(h,{flexDirection:"column",marginTop:1,children:[n(s,{dimColor:!0,children:"── "}),n(s,{bold:!0,color:"green",children:"ACTION"}),n(h,{flexDirection:"column",marginTop:1,paddingLeft:2,children:r.hasCodemod?m(U,{children:[m(s,{color:"green",children:["✓"," ","Codemod will rewrite imports to use native API."]}),n(s,{dimColor:!0,children:" The package can then be removed from dependencies."})]}):m(U,{children:[m(s,{color:"yellow",children:["ℹ"," ","No automated codemod available."]}),n(s,{dimColor:!0,children:" Manual migration required — replace usage with native equivalent."})]})})]}),r.category==="socket"&&m(h,{flexDirection:"column",marginTop:1,children:[n(s,{dimColor:!0,children:"── "}),n(s,{bold:!0,color:"cyan",children:"ACTION"}),m(h,{flexDirection:"column",marginTop:1,paddingLeft:2,children:[m(s,{color:"cyan",children:["✓"," ","Override will redirect resolution to the hardened package."]}),n(s,{dimColor:!0,children:" No source code changes needed — drop-in replacement."})]})]}),(r.category==="preferred"||r.category==="micro-utility")&&m(h,{flexDirection:"column",marginTop:1,children:[n(s,{dimColor:!0,children:"── "}),n(s,{bold:!0,color:"yellow",children:"ACTION"}),n(h,{flexDirection:"column",marginTop:1,paddingLeft:2,children:r.hasCodemod?m(U,{children:[m(s,{color:"green",children:["✓"," ","Codemod will rewrite imports to the recommended alternative."]}),n(s,{dimColor:!0,children:" The original package can then be removed from dependencies."})]}):m(U,{children:[m(s,{color:"yellow",children:["ℹ"," ","Manual migration required."]}),r.docUrl?n(s,{dimColor:!0,children:" Open the migration guide below for the recommended alternative and steps."}):n(s,{dimColor:!0,children:" Consult the package's docs or the e18e module-replacements guide for an alternative."})]})})]}),m(h,{flexDirection:"column",marginTop:1,children:[n(s,{dimColor:!0,children:"── "}),n(s,{bold:!0,color:"white",children:"LINKS"}),m(h,{flexDirection:"column",marginTop:1,paddingLeft:2,children:[m(s,{color:"cyan",underline:!0,children:["https://npmx.dev/",r.packageName]}),r.docUrl&&n(s,{color:"cyan",underline:!0,children:r.docUrl})]})]})]})]})},"OptimizeDetailPanel");var dr=Object.defineProperty,ae=S((r,e)=>dr(r,"name",{value:e,configurable:!0}),"b$1");const pr=[{key:"all",label:"All",shortcut:"1"},{key:"native",label:"Native",shortcut:"2"},{key:"preferred",label:"Preferred",shortcut:"3"},{key:"micro-utility",label:"Micro",shortcut:"4"},{key:"socket",label:"Socket",shortcut:"5"}],fr=ae(({checked:r,entry:e,isSelected:t})=>{const o=ce[e.category]??"white",a=ir[e.category]??e.category,i=r?"☑":"☐",l=e.hasCodemod?"⚙":" ";return m(h,{flexShrink:0,height:1,children:[n(s,{children:t?">":" "}),m(s,{color:r?"white":"gray",children:[" ",i," "]}),n(s,{bold:!0,color:o,children:`[${a}]`.padEnd(9)}),m(s,{children:[" ",l," "]}),n(h,{flexGrow:1,children:n(s,{bold:t,inverse:t,wrap:"truncate",children:e.packageName})}),n(s,{dimColor:!0,children:" → "}),n(s,{wrap:"truncate",children:e.replacement})]})},"EntryRow"),ur=ae(({checkedEntries:r,entries:e,filterActive:t,filterText:o,filterType:a,focused:i,isDryRun:l,scrollOffset:v,selectedIndex:x,totalEntries:w,viewportHeight:k})=>{const c=i?"white":"gray";let f=0,p=0,g=0,y=0;for(const d of e)switch(d.category){case"micro-utility":{g++;break}case"native":{f++;break}case"preferred":{p++;break}case"socket":{y++;break}}const u=[];f>0&&u.push(`${f} native`),p>0&&u.push(`${p} preferred`),g>0&&u.push(`${g} micro`),y>0&&u.push(`${y} socket`);const C=u.length>0?` (${u.join(", ")})`:"",O=r.size,T=[];for(const[d,P]of e.entries())T.push(n(fr,{checked:r.has(P.packageName),entry:P,isSelected:d===x},P.packageName));const D=e.length,R=D>k&&k>0;return m(h,{borderColor:c,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[m(h,{flexShrink:0,gap:1,paddingX:1,children:[n(s,{bold:!0,inverse:!0,children:" VIS OPTIMIZE "}),m(s,{wrap:"truncate",children:[w," ","optimizations",C]}),!l&&O>0&&m(s,{dimColor:!0,children:[" ","—",O," ","selected"]})]}),n(h,{flexShrink:0,gap:1,paddingX:1,paddingY:1,children:pr.map(d=>{const P=a===d.key;return m(h,{children:[n(s,{dimColor:!P,children:"["}),n(s,{bold:P,color:P?"cyan":"gray",children:d.shortcut}),n(s,{dimColor:!P,children:"]"}),m(s,{color:P?"white":"gray",children:[" ",d.label]})]},d.key)})}),t&&m(h,{flexShrink:0,paddingX:1,children:[n(s,{bold:!0,color:"white",children:"/ "}),n(s,{children:o}),n(s,{inverse:!0,children:" "})]}),m(h,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[n(h,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingLeft:1,children:n(h,{flexDirection:"column",marginTop:-v,children:T})}),R&&n(h,{flexShrink:0,marginLeft:1,marginRight:1,children:n(Le,{contentHeight:D,placement:"inset",scrollOffset:v,style:"block",viewportHeight:k})})]})]})},"OptimizeListPanel");var mr=Object.defineProperty,hr=S((r,e)=>mr(r,"name",{value:e,configurable:!0}),"I$1");const gr=100,te=10,oe={1:"all",2:"native",3:"preferred",4:"micro-utility",5:"socket"},yr=hr(({isDryRun:r,store:e})=>{const{exit:t}=Ie(),{columns:o,rows:a}=Fe(),i=je(e.subscribe,e.getSnapshot),l=Te(null),[v,x]=Y(0),[w,k]=Y(!1),c=e.getFilteredEntries(),f=c[i.selectedIndex]??null,p=o>=gr,g=Math.max(0,a-5),y=De(u=>{t(u)},[t]);return Me((u,C)=>{if(w){u==="y"||u==="Y"?y():k(!1);return}if(i.filterActive){C.escape?(e.setFilterActive(!1),e.setFilterText("")):C.return?e.setFilterActive(!1):C.backspace||C.delete?e.setFilterText(i.filterText.slice(0,-1)):u&&!C.ctrl&&!C.meta&&e.setFilterText(i.filterText+u);return}if(u==="q"){!r&&i.checkedEntries.size>0?k(!0):y();return}if(u==="/"){e.setFilterActive(!0);return}if(oe[u]){e.setFilter(oe[u]);return}if(C.tab){e.setFocusedPanel(i.focusedPanel==="list"?"detail":"list");return}if(i.focusedPanel==="list")if(C.upArrow||u==="k"){const O=Math.max(0,i.selectedIndex-1);e.select(O),O<v&&x(O)}else if(C.downArrow||u==="j"){const O=Math.min(c.length-1,i.selectedIndex+1);e.select(O),O>=v+g&&x(O-g+1)}else u===" "?f&&e.toggleCheck(f.packageName):u==="a"?e.toggleAll():C.return&&!r&&i.checkedEntries.size>0&&y(e.getCheckedEntries());else i.focusedPanel==="detail"&&(C.upArrow||u==="k"?l.current?.scrollBy(-1):(C.downArrow||u==="j")&&l.current?.scrollBy(1))},{isActive:i.phase==="browsing"}),a<te?n(h,{alignItems:"center",justifyContent:"center",children:m(s,{color:"yellow",children:["Terminal too small. Resize to at least",te," ","rows."]})}):m(h,{flexDirection:"column",height:a,width:o,children:[m(h,{flexDirection:p?"row":"column",flexGrow:1,children:[n(h,{flexBasis:p?"50%":void 0,flexGrow:1,children:n(ur,{checkedEntries:i.checkedEntries,entries:c,filterActive:i.filterActive,filterText:i.filterText,filterType:i.filterType,focused:i.focusedPanel==="list",isDryRun:r,scrollOffset:v,selectedIndex:i.selectedIndex,totalEntries:i.entries.length,viewportHeight:g})}),n(h,{flexBasis:p?"50%":void 0,flexGrow:1,children:n(lr,{entry:f,focused:i.focusedPanel==="detail",scrollRef:l})})]}),n(h,{flexShrink:0,paddingX:1,children:m(s,{dimColor:!0,children:[r?"Preview mode":"space:toggle a:all enter:apply"," ","| tab:switch panel /: filter q:quit |","⚙","=codemod available"]})}),n(Ce,{autoExitSeconds:3,onCancel:S(()=>{k(!1)},"onCancel"),visible:w})]})},"VisOptimizeApp");var vr=Object.defineProperty,N=S((r,e)=>vr(r,"name",{value:e,configurable:!0}),"p");const W=N((r,e)=>{const t=new Set;try{const o=ne(r),a=e?[o.dependencies,o.optionalDependencies]:[o.dependencies,o.devDependencies,o.peerDependencies,o.optionalDependencies];for(const i of a)if(i)for(const l of Object.keys(i))t.add(l)}catch{}return t},"collectDepsFromPkgJson"),se=N(r=>{const e=Oe(r);if(e)return K(r,e);const t=j(r,"package.json");if(!X(t))return[];try{const o=ne(t),a=Array.isArray(o.workspaces)?o.workspaces:o.workspaces?.packages;return a?K(r,a):[]}catch{return[]}},"discoverWorkspacePackages"),kr="https://github.com/es-tooling/module-replacements/blob/main/docs/modules",wr=N(r=>`${kr}/${r}.md`,"buildE18eDocUrl"),br=N(r=>{if(r.type==="simple"&&r.replacement)return r.replacement;if(r.type==="native"){const e=r.nodeVersion?` (Node ${r.nodeVersion}+)`:"";return r.replacement?`${r.replacement}${e}`:`Native API${e}`}return r.type==="documented"&&r.docPath?"see migration guide":""},"e18eReplacementHint"),le=N(r=>{const e=[],t=N((o,a)=>{const i=o.moduleReplacements;if(Array.isArray(i))for(const l of i)r.has(l.moduleName)&&e.push({category:a,docUrl:l.type==="documented"&&l.docPath?wr(l.docPath):void 0,hasCodemod:!1,overrideSpec:void 0,packageName:l.moduleName,replacement:br(l)})},"scanManifest");return t(Ne,"native"),t(Ee,"preferred"),t(Pe,"micro-utility"),e},"buildE18eEntries"),de=N((r,e,t,o)=>{const a=rr.getManifestData("npm")??[],i=[];for(const[,l]of a){if(l.deprecated)continue;const v=r.has(l.package),x=e?Ze(e,l.package,t.name):!1;if(!v&&!x)continue;const w=ie.coerce(l.version)?.major;if(w===void 0)continue;const k=o?`npm:${l.name}@${l.version}`:`npm:${l.name}@^${String(w)}`;i.push({category:"socket",hasCodemod:!1,overrideSpec:k,packageName:l.package,replacement:l.name})}return i},"buildSocketEntries");let B;const pe=N(async()=>{if(B)return B;try{return B=(await import("module-replacements-codemods")).codemods,B}catch{return{}}},"loadCodemods"),fe=N(async r=>{try{const e=await pe();for(const t of r)t.category!=="socket"&&e[t.packageName]&&(t.hasCodemod=!0)}catch{}},"markCodemodAvailability"),ue=N(async(r,e)=>{let t=0;try{const o=(await pe())[e];if(!o)return{filesChanged:0,packageName:e};const a=o({}),i=await xr(r);for(const l of i){const v=G(l);if(v.includes(e))try{const x=await a.transform({file:{filename:l,source:v}});x!==v&&(ve(l,x,"utf8"),t++)}catch(x){process.stderr.write(`warn: codemod transform failed for ${l}: ${x instanceof Error?x.message:String(x)}
13
- `)}}}catch{}return{filesChanged:t,packageName:e}},"runCodemod"),xr=N(async r=>ke("**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}",{absolute:!0,cwd:r,ignore:["**/.*/**","**/.*","**/node_modules/**","**/dist/**","**/coverage/**","**/.git/**","**/.next/**","**/.nuxt/**"]}),"collectSourceFiles"),$r=N(async({logger:r,options:e,visConfig:t,workspaceRoot:o})=>{if(!o)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");const a=Ae(o),i=!!e.dryRun,l=!!e.prod,v=!!e.pin;b.info(`Detected ${a.name} v${a.version}.`);const x=W(j(o,"package.json"),l),w=se(o),k=new Set(x);for(const d of w){const P=W(j(we(o,d),"package.json"),l);for(const A of P)k.add(A)}w.length>0&&b.info(`Scanned ${String(w.length)} workspace package${w.length===1?"":"s"}.`),b.info(`Scanning dependencies...
14
- `);const c=Qe(o,a.name),f=le(k),p=de(k,c,a,v),g=new Set(f.map(d=>d.packageName)),y=p.filter(d=>!g.has(d.packageName)),u=[...f,...y];if(await fe(u),u.length===0){b.info("No optimizations found for your dependencies.");return}const C=!!process.stdout.isTTY&&!Se,O=e.format==="json"||!!e.json;if(C&&!i&&!O){const d=new nr(u),P=await be(_e.createElement(yr,{isDryRun:!1,store:d}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit(),A=Array.isArray(P)?P:[];if(A.length===0){b.info("No optimizations selected.");return}const L=A.filter($=>$.category!=="socket"&&$.hasCodemod),q=A.filter($=>$.category!=="socket"&&!$.hasCodemod),J=A.filter($=>$.category==="socket");if(L.length>0){b.info(`
15
- Running ${String(L.length)} codemod${L.length===1?"":"s"}...
16
- `);for(const $ of L){const E=await ue(o,$.packageName);E.filesChanged>0?b.success(` ${$.packageName}: ${String(E.filesChanged)} file${E.filesChanged===1?"":"s"} updated`):b.info(` ${$.packageName}: no files changed`)}}if(q.length>0){b.warn(`
17
- ${String(q.length)} selected replacement${q.length===1?"":"s"} require manual migration (no codemod available):`);for(const $ of q)b.info(` ${$.packageName} → ${$.replacement}`);b.notice(" Replace usage in your source code, then remove from dependencies.")}if(J.length>0){const $=J.filter(z=>z.overrideSpec).map(z=>({original:z.packageName,spec:z.overrideSpec})),E=Ye(o,j(o,"package.json"),$,a,t?.editorconfig??!0);E.added.length>0&&b.success(`
18
- Added ${String(E.added.length)} override${E.added.length===1?"":"s"}.`),E.updated.length>0&&b.success(`Updated ${String(E.updated.length)} override${E.updated.length===1?"":"s"}.`)}if(J.length>0&&e.install!==!1){b.info(`
19
- Running ${a.name} install to update lockfile...`);const $=Re(a,{dev:!1,filter:[],force:!1,frozenLockfile:!1,ignoreScripts:!1,lockfileOnly:!1,noOptional:!1,offline:!1,prod:!1,recursive:!1,silent:!1,workspaceRoot:!1},o,r);$!==0&&b.warn(`${a.name} install exited with code ${String($)}. Run it manually.`)}b.info(""),b.success("Optimization complete.");return}if(O){process.stdout.write(`${JSON.stringify({e18e:f.map(d=>({category:d.category,hasCodemod:d.hasCodemod,packageName:d.packageName,replacement:d.replacement})),packageManager:a.name,socket:y.map(d=>({overrideSpec:d.overrideSpec,packageName:d.packageName,replacement:d.replacement})),total:u.length,workspaces:w.length},void 0,2)}
20
- `);return}const T=f.filter(d=>d.category==="native"),D=f.filter(d=>d.category==="preferred"),R=f.filter(d=>d.category==="micro-utility");if(T.length>0){b.info(`Native replacements (${String(T.length)}):`);for(const d of T)b.info(` ${d.hasCodemod?"⚙":" "} ${d.packageName} → ${d.replacement}`)}if(D.length>0){b.info(`
21
- Preferred alternatives (${String(D.length)}):`);for(const d of D)b.info(` ${d.hasCodemod?"⚙":" "} ${d.packageName} → ${d.replacement}`)}if(R.length>0){b.info(`
22
- Micro-utilities (${String(R.length)}):`);for(const d of R)b.info(` ${d.hasCodemod?"⚙":" "} ${d.packageName} → ${d.replacement}`)}if(y.length>0){b.info(`
23
- Socket.dev overrides (${String(y.length)}):`);for(const d of y)b.info(` ${d.packageName} → ${d.overrideSpec}`)}b.info(`
24
- Total: ${String(u.length)} optimizations available (⚙ = codemod available).`),i&&b.notice("Run without --dry-run for interactive selection.")},"execute"),Jr=Object.defineProperty({__proto__:null,buildE18eEntries:le,buildSocketEntries:de,collectDepsFromPkgJson:W,default:$r,discoverWorkspacePackages:se,markCodemodAvailability:fe,runCodemod:ue},Symbol.toStringTag,{value:"Module"});export{se as A,le as F,ue as I,Qe as L,de as T,fe as U,Ye as a,Jr as h,W as x};
1
+ var Z=Object.defineProperty;var x=(e,r)=>Z(e,"name",{value:r,configurable:!0});import{createRequire as ee}from"node:module";import{I as L,j as ne,E as R,T as G,e as U,q as ie}from"../packem_shared/index.server-B7ETiT4C.js";import{z as D}from"../packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js";import{av as c,aw as se}from"./bin.js";import{d as j,f as C,r as ae,b as oe,u as le,v as ce,e as de,g as ue,s as ge,h as fe,w as pe,j as me,k as he,l as xe,m as ve,n as we,o as ye,p as ke,q as be,t as $e}from"../packem_shared/watch-loop-DLlMLg_J.js";const re=ee(import.meta.url),F=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,te=x(e=>{if(typeof F<"u"&&F.versions&&F.versions.node){const[r,t]=F.versions.node.split(".").map(Number);if(r>22||r===22&&t>=3||r===20&&t>=16)return F.getBuiltinModule(e)}return re(e)},"__cjs_getBuiltinModule"),{createHash:S}=te("node:crypto");var Ae=Object.defineProperty,v=x((e,r)=>Ae(e,"name",{value:r,configurable:!0}),"s$1");const Fe={1:"warning",2:"error"},je={argsCheck:v((e,r)=>T(e,r,!1),"argsCheck"),argsFix:v((e,r)=>T(e,r,!0),"argsFix"),bin:v(()=>["pnpm","exec","eslint"],"bin"),cacheKey:v((e,r)=>{const t=["eslint",e.declaredVersion??"unknown",e.configFile??"no-config",r.maxWarnings===void 0?"":`mw=${r.maxWarnings}`,r.quiet?"q":"",...r.extraArgs??[]];return S("sha256").update(t.join("|")).digest("hex").slice(0,16)},"cacheKey"),detect:v((e,r)=>{const t=j(r,c.eslint.packageNames[0]),n=C(e,c.eslint.configFiles);if(!(!t&&!n))return{adapter:"eslint",configFile:n,declared:!!t,declaredVersion:t,root:e}},"detect"),extensions:["cjs","cts","js","jsx","mjs","mts","ts","tsx","vue"],id:"eslint",kind:"lint",parse:v((e,r)=>{if(!e.stdout.trim())return[];let t;try{t=JSON.parse(e.stdout)}catch{return[{adapter:"eslint",file:r.root,fixable:!1,message:`eslint output was not valid JSON (exit ${e.exitCode})`,severity:"error"}]}const n=[];for(const i of t)for(const s of i.messages)n.push({adapter:"eslint",column:s.column,endColumn:s.endColumn,endLine:s.endLine,file:i.filePath,fixable:!!s.fix,line:s.line,message:s.message,ruleId:s.ruleId??void 0,severity:s.fatal?"error":Fe[s.severity]??"warning"});return n},"parse")},T=v((e,r,t)=>{const n=["--format","json","--no-error-on-unmatched-pattern"];return t&&n.push("--fix"),r.quiet&&n.push("--quiet"),typeof r.maxWarnings=="number"&&n.push("--max-warnings",String(r.maxWarnings)),r.extraArgs?.length&&n.push(...r.extraArgs),n.push(...e),n},"buildArgs");var Ce=Object.defineProperty,g=x((e,r)=>Ce(e,"name",{value:r,configurable:!0}),"s");const Se=/^([^:]+):(\d+)(?::(\d+))?\s+([\w/-]+)\s+(.+)$/,qe=g(e=>{const r=Se.exec(e);if(!r)return;const[,t,n,i,s,o]=r;return{column:i===void 0?void 0:Number(i),file:t,line:Number(n),message:o,ruleId:s}},"tryParseFindingLine"),We=g(e=>e.startsWith("/")||/^[a-z]:[\\/]/i.test(e),"isAbsolutePath"),Oe={argsCheck:g((e,r)=>E(e,r,!1),"argsCheck"),argsFix:g((e,r)=>E(e,r,!0),"argsFix"),bin:g(()=>["pnpm","exec","markdownlint-cli2"],"bin"),cacheKey:g((e,r)=>{const t=["markdownlint",e.declaredVersion??"unknown",e.configFile??"no-config",r.maxWarnings===void 0?"":`mw=${r.maxWarnings}`,r.quiet?"q":"",...r.extraArgs??[]];return S("sha256").update(t.join("|")).digest("hex").slice(0,16)},"cacheKey"),detect:g((e,r)=>{const t=c.markdownlint.packageNames.map(i=>j(r,i)).find(i=>i!==void 0),n=C(e,c.markdownlint.configFiles);if(!(!t&&!n))return{adapter:"markdownlint",configFile:n,declared:!!t,declaredVersion:t,root:e}},"detect"),extensions:["markdown","md"],id:"markdownlint",kind:"lint",parse:g((e,r)=>{const t=(e.stderr||e.stdout||"").trim();if(!t)return[];const n=[];for(const i of t.split(/\r?\n/)){const s=qe(i.trim());s&&n.push({adapter:"markdownlint",column:s.column,file:We(s.file)?s.file:`${r.root}/${s.file}`,fixable:!0,line:s.line,message:s.message,ruleId:s.ruleId,severity:"warning"})}return n},"parse")},E=g((e,r,t)=>{const n=[];return t&&n.push("--fix"),r.extraArgs?.length&&n.push(...r.extraArgs),e.length===0?n.push("**/*.md"):n.push(...e),n},"buildArgs");var Ne=Object.defineProperty,w=x((e,r)=>Ne(e,"name",{value:r,configurable:!0}),"t");const Pe={advice:"info",error:"error",warning:"warning"},_e={argsCheck:w((e,r)=>B(e,r,!1),"argsCheck"),argsFix:w((e,r)=>B(e,r,!0),"argsFix"),bin:w(()=>["pnpm","exec","oxlint"],"bin"),cacheKey:w((e,r)=>{const t=["oxlint",e.declaredVersion??"unknown",e.configFile??"no-config",r.maxWarnings===void 0?"":`mw=${r.maxWarnings}`,r.quiet?"q":"",...r.extraArgs??[]];return S("sha256").update(t.join("|")).digest("hex").slice(0,16)},"cacheKey"),detect:w((e,r)=>{const t=j(r,c.oxlint.packageNames[0]),n=C(e,c.oxlint.configFiles);if(!(!t&&!n))return{adapter:"oxlint",configFile:n,declared:!!t,declaredVersion:t,root:e}},"detect"),extensions:["astro","cjs","cts","js","jsx","mjs","mts","svelte","ts","tsx","vue"],id:"oxlint",kind:"lint",parse:w((e,r)=>{if(!e.stdout.trim())return[];let t;try{t=JSON.parse(e.stdout)}catch{return[{adapter:"oxlint",file:r.root,fixable:!1,message:`oxlint output was not valid JSON (exit ${e.exitCode})`,severity:"error"}]}const n=[];for(const i of t.diagnostics??[]){const s=i.labels?.[0]?.span;n.push({adapter:"oxlint",column:s?.column,file:i.filename??r.root,fixable:!1,line:s?.line,message:i.message??"",ruleId:i.code,severity:Pe[i.severity??""]??"warning"})}return n},"parse")},B=w((e,r,t)=>{const n=["--format","json"];return t&&n.push("--fix"),r.quiet&&n.push("--quiet"),typeof r.maxWarnings=="number"&&n.push(`--max-warnings=${String(r.maxWarnings)}`),r.extraArgs?.length&&n.push(...r.extraArgs),n.push(...e),n},"buildArgs");var Ie=Object.defineProperty,f=x((e,r)=>Ie(e,"name",{value:r,configurable:!0}),"i$1");const Le={error:"error",info:"info",style:"info",warning:"warning"},Ke=f(e=>e.startsWith("/")||/^[a-z]:[\\/]/i.test(e),"isAbsolutePath"),Ve=f((e,r)=>e?Ke(e)?e:`${r}/${e}`:r,"resolveFilename"),Je={argsCheck:f((e,r)=>z(e,r),"argsCheck"),argsFix:f((e,r)=>z(e,r),"argsFix"),bin:f(()=>["shellcheck"],"bin"),cacheKey:f((e,r)=>{const t=["shellcheck",e.declaredVersion??"unknown",e.configFile??"no-config",r.quiet?"q":"",...r.extraArgs??[]];return S("sha256").update(t.join("|")).digest("hex").slice(0,16)},"cacheKey"),detect:f((e,r)=>{const t=j(r,c.shellcheck.packageNames[0]),n=C(e,c.shellcheck.configFiles);if(!(!t&&!n))return{adapter:"shellcheck",configFile:n,declared:!!t,declaredVersion:t,root:e}},"detect"),extensions:["bash","ksh","sh"],id:"shellcheck",kind:"lint",parse:f((e,r)=>{if(!e.stdout.trim())return[];let t;try{t=JSON.parse(e.stdout)}catch{return[{adapter:"shellcheck",file:r.root,fixable:!1,message:`shellcheck output was not valid JSON (exit ${e.exitCode})`,severity:"error"}]}const n=[];for(const i of t.comments??[])n.push({adapter:"shellcheck",column:i.column,endColumn:i.endColumn,endLine:i.endLine,file:Ve(i.file,r.root),fixable:!!i.fix,line:i.line,message:i.message??"",ruleId:i.code===void 0?void 0:`SC${String(i.code)}`,severity:Le[i.level??""]??"warning"});return n},"parse")},z=f((e,r)=>{const t=["--format=json1"];return r.extraArgs?.length&&t.push(...r.extraArgs),t.push(...e),t},"buildArgs");var Me=Object.defineProperty,y=x((e,r)=>Me(e,"name",{value:r,configurable:!0}),"i");const Re={error:"error",warning:"warning"},Te={argsCheck:y((e,r)=>H(e,r,!1),"argsCheck"),argsFix:y((e,r)=>H(e,r,!0),"argsFix"),bin:y(()=>["pnpm","exec","stylelint"],"bin"),cacheKey:y((e,r)=>{const t=["stylelint",e.declaredVersion??"unknown",e.configFile??"no-config",r.maxWarnings===void 0?"":`mw=${r.maxWarnings}`,r.quiet?"q":"",...r.extraArgs??[]];return S("sha256").update(t.join("|")).digest("hex").slice(0,16)},"cacheKey"),detect:y((e,r)=>{const t=j(r,c.stylelint.packageNames[0]),n=C(e,c.stylelint.configFiles);if(!(!t&&!n))return{adapter:"stylelint",configFile:n,declared:!!t,declaredVersion:t,root:e}},"detect"),extensions:["astro","css","less","sass","scss","svelte","vue"],id:"stylelint",kind:"lint",parse:y((e,r)=>{if(!e.stdout.trim())return[];let t;try{t=JSON.parse(e.stdout)}catch{return[{adapter:"stylelint",file:r.root,fixable:!1,message:`stylelint output was not valid JSON (exit ${e.exitCode})`,severity:"error"}]}const n=[];for(const i of t)for(const s of i.warnings??[])n.push({adapter:"stylelint",column:s.column,endColumn:s.endColumn,endLine:s.endLine,file:i.source,fixable:!1,line:s.line,message:s.text??"",ruleId:s.rule,severity:Re[s.severity??""]??"warning"});return n},"parse")},H=y((e,r,t)=>{const n=["--formatter","json"];return t&&n.push("--fix"),r.quiet&&n.push("--quiet"),typeof r.maxWarnings=="number"&&n.push("--max-warnings",String(r.maxWarnings)),r.extraArgs?.length&&n.push(...r.extraArgs),n.push(...e),n},"buildArgs");var Ee=Object.defineProperty,p=x((e,r)=>Ee(e,"name",{value:r,configurable:!0}),"a");const Be=[_e,oe,je,Te,le,Oe,Je,ce],tr=p(async({logger:e,options:r,visConfig:t,workspaceRoot:n})=>{const i=n??process.cwd(),s=t?.lint,o=ae(Be,s?.order),P=de(i,o),d=ue(P,o,"lint").filter(({adapter:l})=>s?.adapters?.[l.id]?.enabled!==!1);if(d.length===0){e.warn("vis lint: no linter detected in this workspace (looked for: oxlint, biome, eslint, stylelint, ruff, markdownlint, shellcheck, deno).");return}const _=p(l=>{const u=s?.adapters?.[l]?.extraArgs;return u&&u.length>0?[...u]:void 0},"baseExtraArgs"),q={extraArgs:void 0,maxWarnings:typeof r.maxWarnings=="number"?r.maxWarnings:void 0,quiet:r.quiet??!1},W=ze(r),Q=r.fix?"fix":"check";let m;if(r.staged){if(m=ge(i),m===void 0)e.warn("vis lint: could not resolve --staged (not a git repo or git unavailable). Falling back to a workspace-wide run.");else if(m.length===0){e.info(L("✓ lint: no staged files"));return}}else if(typeof r.since=="string"&&r.since.length>0){if(m=fe(i,r.since),m===void 0)e.warn(`vis lint: could not resolve --since ${r.since} (not a git repo or unknown ref). Falling back to a workspace-wide run.`);else if(m.length===0){e.info(L(`✓ lint: no files changed since ${r.since}`));return}}const K=W.length>0?W:void 0,X=se(i,void 0,void 0,!0),I=r.format??"human";I==="human"&&r.output!==void 0&&e.warn("vis lint: --output is ignored for the human format; pass --format json|minimal|sarif|junit|github to redirect findings to a file.");const V=p(async l=>{const u=l!==void 0&&l.length>0&&K===void 0,b=[];for(const{adapter:a,presence:A}of d){let h;if(u){if(h=pe(l,a.extensions),h.length===0)continue}else h=K??l??["."];const N=_(a.id),M={adapter:a,files:h,presence:A};N&&(M.options={...q,extraArgs:N}),b.push(M)}if(b.length===0)return;const Y=await me(b,q,Q,{cacheRoot:X}),O=b.map((a,A)=>{const h=Y[A],N=a.adapter.parse(h,a.presence);return{adapter:a.adapter,durationMs:h.durationMs,exitCode:h.exitCode,findings:N}}),$=he(O.map(a=>({adapter:a.adapter.id,durationMs:a.durationMs,exitCode:a.exitCode,findingCount:a.findings.length,findings:a.findings}))),k=I==="human"?void 0:xe({cwd:i,target:r.output});try{switch(I){case"github":{k.write(ye({runs:O.map(a=>({findings:a.findings})),workspaceRoot:i}));break}case"json":{k.write(`${JSON.stringify({findings:$.findings,runs:$.runs},null,2)}
2
+ `);break}case"junit":{k.write(we({runs:O.map(a=>({adapter:a.adapter.id,durationMs:a.durationMs,findings:a.findings})),workspaceRoot:i}));break}case"minimal":{Ge($.findings,i,k);break}case"sarif":{k.write(ve({runs:O.map(a=>({adapter:a.adapter.id,findings:a.findings,presence:b.find(A=>A.adapter.id===a.adapter.id)?.presence})),workspaceRoot:i}));break}default:He($.findings,i,e)}}finally{k?.close()}const J=ke($);J!==0&&(process.exitCode=J)},"runCycle");if(r.watch){const l=[...new Set(d.flatMap(({adapter:u})=>u.extensions))];await be({extensions:l,initialFiles:m,label:"lint",log:p(u=>{e.info(u)},"log"),runCycle:V,workspaceRoot:i});return}await V(m)},"execute"),ze=p(e=>{const r=e;return[...r._??r.args??[]]},"collectPositional"),He=p((e,r,t)=>{if(e.length===0){t.info(L("✓ lint: no findings"));return}const n=$e(e);for(const[o,P]of n){t.info(ne(D(r,o)));for(const d of P){const _=Ue(d),q=De(d.severity),W=d.ruleId?R(` ${d.ruleId}`):"";t.info(` ${R(_)} ${q} ${d.message}${W}`)}}const i=e.filter(o=>o.severity==="error").length,s=e.filter(o=>o.severity==="warning").length;t.info(""),t.info(`${G(`${String(i)} error${i===1?"":"s"}`)}, ${U(`${String(s)} warning${s===1?"":"s"}`)}`)},"printHuman"),Ge=p((e,r,t)=>{for(const n of e){const i=D(r,n.file),s=n.line??"",o=n.column??"";t.write(`${n.adapter} ${i} ${String(s)} ${String(o)} ${n.severity} ${n.ruleId??""} ${n.message}
3
+ `)}},"printMinimal"),Ue=p(e=>e.line===void 0?"":e.column===void 0?String(e.line):`${String(e.line)}:${String(e.column)}`,"formatLocation"),De=p(e=>e==="error"?G("error"):e==="warning"?U("warn "):ie("info "),"severityChipFor");export{tr as default};