@visulima/vis 1.0.0-alpha.35 → 1.0.0-alpha.37

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 (193) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/LICENSE.md +3244 -1611
  3. package/README.md +44 -0
  4. package/dashboard/dist/index.html +11 -11
  5. package/dist/bin.js +1 -1
  6. package/dist/binx.js +1 -1
  7. package/dist/config/index.d.ts +74 -2
  8. package/dist/config/index.js +1 -1
  9. package/dist/generate/index.js +1 -1
  10. package/dist/packem_chunks/bin.js +584 -588
  11. package/dist/packem_chunks/bloom-status.js +2 -2
  12. package/dist/packem_chunks/bloom-sync.js +2 -2
  13. package/dist/packem_chunks/cache-attestation.js +1 -1
  14. package/dist/packem_chunks/config.js +18 -16
  15. package/dist/packem_chunks/devtools.js +56 -57
  16. package/dist/packem_chunks/doctor-probe.js +2 -2
  17. package/dist/packem_chunks/fix.js +11 -11
  18. package/dist/packem_chunks/handler.js +1 -1
  19. package/dist/packem_chunks/handler10.js +1 -1
  20. package/dist/packem_chunks/handler11.js +5 -5
  21. package/dist/packem_chunks/handler12.js +1 -1
  22. package/dist/packem_chunks/handler13.js +7 -7
  23. package/dist/packem_chunks/handler14.js +4 -4
  24. package/dist/packem_chunks/handler15.js +1 -1
  25. package/dist/packem_chunks/handler16.js +1 -1
  26. package/dist/packem_chunks/handler17.js +1 -1
  27. package/dist/packem_chunks/handler18.js +1 -1
  28. package/dist/packem_chunks/handler19.js +1 -1
  29. package/dist/packem_chunks/handler2.js +3 -3
  30. package/dist/packem_chunks/handler20.js +5 -5
  31. package/dist/packem_chunks/handler21.js +2 -2
  32. package/dist/packem_chunks/handler22.js +2 -2
  33. package/dist/packem_chunks/handler23.js +1 -1
  34. package/dist/packem_chunks/handler24.js +1 -1
  35. package/dist/packem_chunks/handler25.js +1 -5
  36. package/dist/packem_chunks/handler26.js +5 -1
  37. package/dist/packem_chunks/handler27.js +1 -3
  38. package/dist/packem_chunks/handler28.js +3 -1
  39. package/dist/packem_chunks/handler29.js +1 -7
  40. package/dist/packem_chunks/handler3.js +4 -4
  41. package/dist/packem_chunks/handler30.js +6 -32
  42. package/dist/packem_chunks/handler31.js +33 -3
  43. package/dist/packem_chunks/handler32.js +3 -8
  44. package/dist/packem_chunks/handler33.js +8 -1
  45. package/dist/packem_chunks/handler34.js +4 -5
  46. package/dist/packem_chunks/handler35.js +1 -11
  47. package/dist/packem_chunks/handler36.js +5 -3
  48. package/dist/packem_chunks/handler37.js +11 -22
  49. package/dist/packem_chunks/handler38.js +3 -61
  50. package/dist/packem_chunks/handler39.js +22 -3
  51. package/dist/packem_chunks/handler4.js +6 -6
  52. package/dist/packem_chunks/handler40.js +61 -6
  53. package/dist/packem_chunks/handler41.js +3 -24
  54. package/dist/packem_chunks/handler42.js +6 -25
  55. package/dist/packem_chunks/handler43.js +24 -153
  56. package/dist/packem_chunks/handler44.js +25 -10
  57. package/dist/packem_chunks/handler45.js +152 -707
  58. package/dist/packem_chunks/handler46.js +10 -24
  59. package/dist/packem_chunks/handler47.js +24 -322
  60. package/dist/packem_chunks/handler48.js +322 -48
  61. package/dist/packem_chunks/handler49.js +708 -3
  62. package/dist/packem_chunks/handler5.js +7 -7
  63. package/dist/packem_chunks/handler50.js +48 -27
  64. package/dist/packem_chunks/handler51.js +21 -189
  65. package/dist/packem_chunks/handler52.js +3 -34
  66. package/dist/packem_chunks/handler53.js +200 -0
  67. package/dist/packem_chunks/handler54.js +38 -0
  68. package/dist/packem_chunks/handler6.js +1 -1
  69. package/dist/packem_chunks/handler7.js +1 -1
  70. package/dist/packem_chunks/handler8.js +1 -1
  71. package/dist/packem_chunks/handler9.js +1 -1
  72. package/dist/packem_chunks/heal-accept.js +7 -7
  73. package/dist/packem_chunks/heal.js +11 -11
  74. package/dist/packem_chunks/help-command.js +30 -7
  75. package/dist/packem_chunks/index.js +6 -6
  76. package/dist/packem_chunks/keys-refresh.js +4 -4
  77. package/dist/packem_chunks/list.js +2 -2
  78. package/dist/packem_chunks/loader.js +4 -4
  79. package/dist/packem_chunks/loader2.js +1 -1
  80. package/dist/packem_chunks/prune.js +3 -3
  81. package/dist/packem_chunks/run.js +1 -1
  82. package/dist/packem_chunks/status.js +2 -2
  83. package/dist/packem_chunks/sync.js +2 -2
  84. package/dist/packem_chunks/sync2.js +2 -2
  85. package/dist/packem_chunks/tar.js +3 -3
  86. package/dist/packem_chunks/tripwire.js +2 -2
  87. package/dist/packem_chunks/verify-lockfile.js +2 -2
  88. package/dist/packem_shared/CONFIG_FILES-BfaR0jKT.js +1 -0
  89. package/dist/packem_shared/MultiSpinner-B9U0-aE3-B-gIXhFk.js +3 -0
  90. package/dist/packem_shared/Table-CcVkyULl-B_ef6zfS.js +35 -0
  91. package/dist/packem_shared/_commonjsHelpers-B5Y90VFO.js +1 -0
  92. package/dist/packem_shared/advisories-DLeO5KMN.js +1 -0
  93. package/dist/packem_shared/affected-shas-cVnX8-zs.js +1 -0
  94. package/dist/packem_shared/ai-analysis-DT3bU-_M.js +68 -0
  95. package/dist/packem_shared/ai-fix-BkNqd5nP.js +43 -0
  96. package/dist/packem_shared/build-scripts-CCCi8U66.js +1 -0
  97. package/dist/packem_shared/cyclonedx-86-DbHtf.js +4 -0
  98. package/dist/packem_shared/definePlugin-DoUcoYSy.js +1 -0
  99. package/dist/packem_shared/dependency-scan-BDTH898x.js +1 -0
  100. package/dist/packem_shared/docker-tNrDU3oK.js +59 -0
  101. package/dist/packem_shared/failure-log-Dwqt6_Ga.js +2 -0
  102. package/dist/packem_shared/giget-DHY1sQZC.js +2 -0
  103. package/dist/packem_shared/glob-fqg4KepW-B7EjLRvw.js +1 -0
  104. package/dist/packem_shared/index-BDmTbWX1.js +19 -0
  105. package/dist/packem_shared/index-CB4p298r.js +1 -0
  106. package/dist/packem_shared/index-DMefdF51.js +1 -0
  107. package/dist/packem_shared/index-dQ37x8_P.js +30 -0
  108. package/dist/packem_shared/license-t5KnNX6v.js +1 -0
  109. package/dist/packem_shared/lifecycle-4z9hHE5b.js +2 -0
  110. package/dist/packem_shared/lockfile-C8Q1_4KK.js +1 -0
  111. package/dist/packem_shared/manifests-Dj3pRKBT.js +1 -0
  112. package/dist/packem_shared/min-release-age-D1alDE3K.js +34 -0
  113. package/dist/packem_shared/missing-package-json-41VUWFBY.js +1 -0
  114. package/dist/packem_shared/native-config-sync-BKAZ0NIs.js +21 -0
  115. package/dist/packem_shared/osv-bloom-B03tUWf3.js +2 -0
  116. package/dist/packem_shared/otelPlugin-DmKDBaPo.js +1 -0
  117. package/dist/packem_shared/peer-warnings-BXAzXqY3.js +1 -0
  118. package/dist/packem_shared/pm-runner-pVihAfxV.js +1 -0
  119. package/dist/packem_shared/provenance-DMuEftgc.js +1 -0
  120. package/dist/packem_shared/registry-keys-Bf2zzlcZ.js +1 -0
  121. package/dist/packem_shared/resolve-explicit-jH0RKyMJ.js +5 -0
  122. package/dist/packem_shared/runtime-check-Stc9AI78.js +1 -0
  123. package/dist/packem_shared/s1ngularity-BkfgC6NO.js +1 -0
  124. package/dist/packem_shared/scan-progress-JBbd9QeT.js +2 -0
  125. package/dist/packem_shared/selectors-GCJIe342.js +3 -0
  126. package/dist/packem_shared/signatures-D1H6h6GH.js +2 -0
  127. package/dist/packem_shared/spinner-BXSl864p.js +1 -0
  128. package/dist/packem_shared/subtree-C7bZuiSQ.js +2 -0
  129. package/dist/packem_shared/symbols-DPTlrJ3B.js +1 -0
  130. package/dist/packem_shared/tabs-BqUepRaD.js +1 -0
  131. package/dist/packem_shared/toolchain-pR7AJ-tB.js +5 -0
  132. package/dist/packem_shared/typosquats-C8qg1neE.js +1 -0
  133. package/dist/packem_shared/use-measured-height-BBJ9intr.js +1 -0
  134. package/dist/packem_shared/utils-Cxree603.js +1 -0
  135. package/dist/packem_shared/verify-Du7xZ2BJ.js +1 -0
  136. package/dist/packem_shared/vis-update-app-CTwRkNgj.js +1 -0
  137. package/dist/packem_shared/watch-BvIwLG4N.js +1 -0
  138. package/dist/packem_shared/watch-loop-DWkvv2tK.js +11 -0
  139. package/index.d.ts +201 -201
  140. package/index.js +751 -567
  141. package/package.json +16 -16
  142. package/schemas/vis-config.schema.json +4 -0
  143. package/dist/packem_shared/Table-3pFgIUZ2-DABgc6rj.js +0 -12
  144. package/dist/packem_shared/_commonjsHelpers-CLblCigl.js +0 -1
  145. package/dist/packem_shared/advisories-CGKZo9Rx.js +0 -1
  146. package/dist/packem_shared/affected-shas-BdnlfiV1.js +0 -1
  147. package/dist/packem_shared/ai-analysis-3QD_RS6F.js +0 -68
  148. package/dist/packem_shared/ai-fix-TsjDQz_0.js +0 -43
  149. package/dist/packem_shared/applyDefaults-BogleaFi.js +0 -1
  150. package/dist/packem_shared/build-scripts-DE6U8jVq.js +0 -1
  151. package/dist/packem_shared/cyclonedx-zf9R2jCs.js +0 -4
  152. package/dist/packem_shared/definePlugin-CWm4Dv_t.js +0 -1
  153. package/dist/packem_shared/dependency-scan-B70azq4x.js +0 -1
  154. package/dist/packem_shared/docker-EJiTY0Sz.js +0 -60
  155. package/dist/packem_shared/failure-log-Dxafk3t4.js +0 -2
  156. package/dist/packem_shared/giget-CcEy_Elm.js +0 -2
  157. package/dist/packem_shared/glob-D_7bct6p-D8itOHsr.js +0 -1
  158. package/dist/packem_shared/index-BpbjpCNL.js +0 -1
  159. package/dist/packem_shared/index-DH-5hsrC.js +0 -1
  160. package/dist/packem_shared/index-Dc3ht2bL.js +0 -30
  161. package/dist/packem_shared/license-zZU7aavK.js +0 -1
  162. package/dist/packem_shared/lifecycle-DvVTL8nx.js +0 -2
  163. package/dist/packem_shared/lockfile-CedmXr44.js +0 -1
  164. package/dist/packem_shared/lockfile-Cu2BH6bl.js +0 -1
  165. package/dist/packem_shared/manifests-BzWpKW8F.js +0 -1
  166. package/dist/packem_shared/min-release-age-DKMW2N_v.js +0 -34
  167. package/dist/packem_shared/missing-package-json-DKAwoiWK.js +0 -1
  168. package/dist/packem_shared/native-config-sync-DBkJ-hsF.js +0 -21
  169. package/dist/packem_shared/osv-bloom-0Vu8YRhg.js +0 -2
  170. package/dist/packem_shared/otelPlugin-CJR2T_lk.js +0 -1
  171. package/dist/packem_shared/peer-warnings-EvSJ18gE.js +0 -1
  172. package/dist/packem_shared/pm-runner-DmKT2FqF.js +0 -1
  173. package/dist/packem_shared/provenance-Cu6VR1Hy.js +0 -1
  174. package/dist/packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js +0 -1
  175. package/dist/packem_shared/registry-keys-CuBAVdsk.js +0 -1
  176. package/dist/packem_shared/resolve-explicit-Xue0oq8V.js +0 -5
  177. package/dist/packem_shared/runtime-check-CilFOqUU.js +0 -1
  178. package/dist/packem_shared/s1ngularity-adnHbyTd.js +0 -1
  179. package/dist/packem_shared/scan-progress-lZdk5KJ-.js +0 -2
  180. package/dist/packem_shared/selectors-DkgYFzdq.js +0 -3
  181. package/dist/packem_shared/signatures-FGbYV5QE.js +0 -2
  182. package/dist/packem_shared/spinner-0acw5pd_.js +0 -1
  183. package/dist/packem_shared/spinners-f91Rbo99-Bjf3NcO0.js +0 -1
  184. package/dist/packem_shared/symbols-CQmER5MT.js +0 -1
  185. package/dist/packem_shared/tabs-zUSdR1HI.js +0 -1
  186. package/dist/packem_shared/toolchain-DoG6b_G_.js +0 -5
  187. package/dist/packem_shared/typosquats-acxQ7blw.js +0 -1
  188. package/dist/packem_shared/use-measured-height-DyCBfLtu.js +0 -1
  189. package/dist/packem_shared/utils-DrNg0XTR.js +0 -1
  190. package/dist/packem_shared/verify-BYzxSKWD.js +0 -1
  191. package/dist/packem_shared/vis-update-app-D0QyGneK.js +0 -1
  192. package/dist/packem_shared/watch-DEL0yol9.js +0 -1
  193. package/dist/packem_shared/watch-loop-jmQQl2Qe.js +0 -11
@@ -1,6 +1,61 @@
1
- var Z=Object.defineProperty;var $=(e,r)=>Z(e,"name",{value:r,configurable:!0});import{createRequire as ee}from"node:module";import{C as oe,l as B,M as T,B as Q,z as W,Q as ne}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{a7 as t,a8 as a,n as c,aH as ie,aI as le,aJ as ce,aG as ae,x as C,ah as de,V as ue,u as G,P as fe,aQ as he,aR as ge,aS as pe,p as b,s as xe,k as me,R as je}from"./bin.js";import{o as we}from"../packem_shared/index-DH-5hsrC.js";import{sortPackageJsonStringWithOptions as K}from"#native";import{f as F}from"../packem_shared/utils-DrNg0XTR.js";const re=ee(import.meta.url),M=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,te=$(e=>{if(typeof M<"u"&&M.versions&&M.versions.node){const[r,s]=M.versions.node.split(".").map(Number);if(r>22||r===22&&s>=3||r===20&&s>=16)return M.getBuiltinModule(e)}return re(e)},"__cjs_getBuiltinModule"),{writeFileSync:se}=te("node:fs");var ye=Object.defineProperty,I=$((e,r)=>ye(e,"name",{value:r,configurable:!0}),"i$1");const J={error:0,rewritten:1,"would-rewrite":1,unchanged:2},be=I(e=>[...e].sort((r,s)=>J[r.status]-J[s.status]),"sortByStatusRank"),Se=I((e,r)=>r==="all"?e:r==="errors"?e.filter(s=>s.status==="error"):r==="rewritten"?e.filter(s=>s.status==="rewritten"||s.status==="would-rewrite"):e.filter(s=>s.status==="unchanged"),"filterEntries");class ke{static{$(this,"a")}static{I(this,"SortPackageJsonStore")}#e;#r=new Set;constructor(r){this.#e={entries:be(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(()=>Se(this.#e.entries,this.#e.filterType),"getFilteredEntries");#t(){this.#e={...this.#e};for(const r of this.#r)r()}select(r){const s=this.getFilteredEntries();this.#e.selectedIndex=s.length===0?-1:Math.max(0,Math.min(r,s.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 ve=Object.defineProperty,$e=$((e,r)=>ve(e,"name",{value:r,configurable:!0}),"c$2");const Pe=$e(({checkMode:e,entry:r,focused:s,scrollRef:l})=>{const o=s?"white":"gray";return r?t.jsxs(a,{borderColor:o,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[t.jsx(a,{flexShrink:0,paddingTop:1,paddingX:2,children:t.jsx(c,{bold:!0,color:"white",children:r.relativePath})}),t.jsxs(ie,{flexGrow:1,flexShrink:1,paddingX:2,ref:l,scrollbar:!0,scrollbarColor:"gray",children:[t.jsx(c,{}),t.jsxs(a,{children:[t.jsx(a,{width:10,children:t.jsx(c,{dimColor:!0,children:"Status:"})}),r.status==="error"?t.jsx(c,{bold:!0,color:"red",children:"error"}):r.status==="unchanged"?t.jsx(c,{bold:!0,color:"green",children:"already sorted"}):r.status==="rewritten"?t.jsx(c,{bold:!0,color:"yellow",children:"rewritten"}):t.jsx(c,{bold:!0,color:"yellow",children:"would rewrite (--check)"})]}),t.jsxs(a,{children:[t.jsx(a,{width:10,children:t.jsx(c,{dimColor:!0,children:"Path:"})}),t.jsx(c,{children:r.filePath})]}),r.error?t.jsxs(t.Fragment,{children:[t.jsxs(a,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"red",children:"ERROR"}),t.jsxs(a,{flexDirection:"column",marginTop:1,paddingLeft:2,children:[t.jsxs(a,{children:[t.jsx(a,{width:10,children:t.jsx(c,{dimColor:!0,children:"Step:"})}),t.jsx(c,{color:"yellow",children:r.error.step})]}),r.error.context&&t.jsxs(a,{children:[t.jsx(a,{width:10,children:t.jsx(c,{dimColor:!0,children:"Position:"})}),t.jsx(c,{children:`line ${String(r.error.context.line)}, column ${String(r.error.context.column)}`})]}),t.jsx(a,{marginTop:1,children:t.jsx(c,{color:"red",children:r.error.message})})]})]}),r.error.context&&r.error.context.snippet.length>0&&t.jsxs(a,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"white",children:"SNIPPET"}),t.jsxs(a,{flexDirection:"column",marginTop:1,paddingLeft:2,children:[r.error.context.snippet.map(n=>{const i=`${n.isErrorLine?"❯":" "} ${String(n.lineNumber).padStart(4)} `;return t.jsxs(a,{children:[t.jsx(c,{color:n.isErrorLine?"red":"gray",children:i}),t.jsx(c,{color:n.isErrorLine?"white":"gray",wrap:"truncate-end",children:n.content||" "})]},n.lineNumber)}),r.error.context.column>0&&t.jsx(a,{children:t.jsx(c,{color:"red",children:`${" ".repeat(7+r.error.context.column-1)}↑`})})]})]})]}):t.jsxs(a,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"white",children:"KEY DIFF"}),t.jsx(a,{flexDirection:"column",marginTop:1,paddingLeft:2,children:r.diff.length===0?t.jsx(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)}`,h=i<0?"green":"yellow";return t.jsxs(a,{children:[t.jsx(a,{width:28,children:t.jsx(c,{wrap:"truncate",children:n.key})}),t.jsx(a,{width:10,children:t.jsxs(c,{dimColor:!0,children:[String(n.fromIndex)," → ",String(n.toIndex)]})}),t.jsx(c,{color:h,children:d})]},n.key)})}),e&&r.status==="would-rewrite"&&t.jsx(a,{marginTop:1,paddingLeft:2,children:t.jsx(c,{dimColor:!0,children:"--check mode: no write performed."})})]})]})]}):t.jsx(a,{alignItems:"center",borderColor:"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,justifyContent:"center",children:t.jsx(c,{dimColor:!0,children:"No entry selected"})})},"SortDetailPanel");var Ee=Object.defineProperty,P=$((e,r)=>Ee(e,"name",{value:r,configurable:!0}),"i");const Oe={error:"red",rewritten:"yellow",unchanged:"green","would-rewrite":"yellow"},Ce={error:"ERROR",rewritten:"REWROTE",unchanged:"SORTED","would-rewrite":"REWRITE"},V={error:"errors",rewritten:"rewrites",unchanged:"sorted","would-rewrite":"rewrites"},Re={errors:"Errors",rewrites:"Rewrites",sorted:"Sorted"},Ie=[{count:P(e=>e.errors+e.rewrites+e.sorted,"count"),key:"all",label:"All",shortcut:"1"},{count:P(e=>e.rewrites,"count"),key:"rewritten",label:"Rewrites",shortcut:"2"},{count:P(e=>e.errors,"count"),key:"errors",label:"Errors",shortcut:"3"},{count:P(e=>e.sorted,"count"),key:"unchanged",label:"Sorted",shortcut:"4"}],Y=P(e=>{const r={errors:0,rewrites:0,sorted:0};for(const s of e)r[V[s.status]]++;return r},"computeGroupCounts"),Me=P(({entry:e,isSelected:r})=>{const s=Oe[e.status],l=Ce[e.status];return t.jsxs(a,{flexShrink:0,height:1,children:[t.jsx(c,{children:r?">":" "}),t.jsx(c,{children:" "}),t.jsx(c,{bold:!0,color:s,children:`[${l}]`.padEnd(10)}),t.jsx(c,{children:" "}),t.jsx(a,{flexGrow:1,children:t.jsx(c,{bold:r,inverse:r,wrap:"truncate",children:e.relativePath})}),e.status!=="error"&&e.diff.length>0&&t.jsx(c,{dimColor:!0,children:` ${String(e.diff.length)} key${e.diff.length===1?"":"s"}`})]})},"EntryRow"),Te=P(({color:e,count:r,label:s})=>t.jsx(a,{flexShrink:0,height:1,children:t.jsx(c,{bold:!0,color:e,children:`${s} (${String(r)})`})}),"SectionHeader"),Fe=P(({counts:e,entries:r,filterType:s,focused:l,selectedIndex:o,totalEntries:n,viewportHeight:i})=>{const d=l?"white":"gray",h=Y(r),w=(h.errors>0?1:0)+(h.rewrites>0?1:0)+(h.sorted>0?1:0),x=s==="all"&&w>1,g=[];let p;for(const[u,m]of r.entries()){const y=V[m.status];x&&y!==p&&(p!==void 0&&g.push({kind:"spacer"}),g.push({color:y==="errors"?"red":y==="rewrites"?"yellow":"green",count:h[y],kind:"header",label:Re[y]}),p=y),g.push({entry:m,entryIndex:u,kind:"entry"})}const S=g.findIndex(u=>u.kind==="entry"&&u.entryIndex===o),k=S!==-1,v=g.length,f=Math.max(0,v-i);let O=0;k&&i>0&&(O=Math.min(f,Math.max(0,S-i+1)));const R=v>i&&i>0;return t.jsxs(a,{borderColor:d,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[t.jsxs(a,{flexShrink:0,gap:1,paddingX:1,children:[t.jsx(c,{bold:!0,inverse:!0,children:" VIS SORT "}),t.jsxs(c,{wrap:"truncate",children:[n," ","file",n===1?"":"s"]})]}),t.jsx(a,{flexShrink:0,gap:1,paddingX:1,paddingY:1,children:Ie.map(u=>{const m=s===u.key,y=u.count(e);return t.jsxs(a,{children:[t.jsx(c,{dimColor:!m,children:"["}),t.jsx(c,{bold:m,color:m?"cyan":"gray",children:u.shortcut}),t.jsx(c,{dimColor:!m,children:"]"}),t.jsxs(c,{color:m?"white":"gray",children:[" ",u.label]}),t.jsxs(c,{dimColor:!0,children:[" ","(",y,")"]})]},u.key)})}),t.jsxs(a,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[t.jsx(a,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingLeft:1,children:t.jsx(a,{flexDirection:"column",marginTop:-O,children:g.map((u,m)=>u.kind==="spacer"?t.jsx(a,{flexShrink:0,height:1},`s-${String(m)}`):u.kind==="header"?t.jsx(Te,{color:u.color,count:u.count,label:u.label},`h-${u.label}`):t.jsx(Me,{entry:u.entry,isSelected:u.entryIndex===o},u.entry.filePath))})}),R&&t.jsx(a,{flexShrink:0,marginLeft:1,marginRight:1,children:t.jsx(le,{contentHeight:v,placement:"inset",scrollOffset:O,style:"block",viewportHeight:i})})]})]})},"SortListPanel");var Ne=Object.defineProperty,De=$((e,r)=>Ne(e,"name",{value:r,configurable:!0}),"T");const Ae=100,_=10,Le=6,Be=1,q={1:"all",2:"rewritten",3:"errors",4:"unchanged"},Ge=De(({checkMode:e,store:r})=>{const{exit:s}=ce(),{columns:l,rows:o}=ae(),n=C.useSyncExternalStore(r.subscribe,r.getSnapshot),i=C.useRef(null),d=r.getFilteredEntries(),h=d[n.selectedIndex]??null,w=Y(n.entries),x=l>=Ae,g=Math.max(0,o-Be),p=x?g:Math.floor(g/2),S=Math.max(0,p-Le),k=C.useCallback(()=>{s()},[s]),v=C.useRef(0),f=C.useRef(void 0),O=C.useRef(!1),R=C.useCallback((u,m)=>{v.current+=m,f.current=u,!O.current&&(O.current=!0,queueMicrotask(()=>{O.current=!1;const y=v.current,L=f.current;v.current=0,f.current=void 0,!(y===0||L===void 0)&&(L==="list"?r.selectStep(Math.sign(y)):i.current?.scrollBy(Math.sign(y)))}))},[r]);return de((u,m)=>{if(u==="q"||m.escape){k();return}if(q[u]){r.setFilter(q[u]);return}if(m.tab){r.setFocusedPanel(n.focusedPanel==="list"?"detail":"list");return}n.focusedPanel==="list"?m.upArrow||u==="k"?R("list",-1):(m.downArrow||u==="j")&&R("list",1):n.focusedPanel==="detail"&&(m.upArrow||u==="k"?R("detail",-1):(m.downArrow||u==="j")&&R("detail",1))}),o<_?t.jsx(a,{alignItems:"center",justifyContent:"center",children:t.jsxs(c,{color:"yellow",children:["Terminal too small. Resize to at least",_," ","rows."]})}):t.jsxs(a,{flexDirection:"column",height:o,width:l,children:[t.jsxs(a,{flexDirection:x?"row":"column",flexGrow:1,children:[t.jsx(a,{flexBasis:"50%",flexGrow:1,flexShrink:1,children:t.jsx(Fe,{counts:w,entries:d,filterType:n.filterType,focused:n.focusedPanel==="list",selectedIndex:n.selectedIndex,totalEntries:n.entries.length,viewportHeight:S})}),t.jsx(a,{flexBasis:"50%",flexGrow:1,flexShrink:1,children:t.jsx(Pe,{checkMode:e,entry:h,focused:n.focusedPanel==="detail",scrollRef:i})})]}),t.jsx(a,{flexShrink:0,paddingX:1,children:t.jsx(c,{dimColor:!0,children:"↑/↓ or j/k:navigate | tab:switch panel | 1-4:filter | q:quit"})})]})},"VisSortPackageJsonApp");var Je=Object.defineProperty,E=$((e,r)=>Je(e,"name",{value:r,configurable:!0}),"c$1");const H=["types","node-addons","node","import","require","default"],_e=/^git\+https:\/\/github\.com\/([^/]+)\/([^/.]+(?:\.git)?)$/,qe=/^git\+ssh:\/\/git@github\.com\/([^/]+)\/([^/.]+(?:\.git)?)$/,N=E(e=>typeof e=="object"&&e!==null&&!Array.isArray(e),"isPlainObject"),A=E(e=>{if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(s=>A(s));const r={};for(const[s,l]of Object.entries(e))r[s]=A(l);return r},"cloneDeep"),He=E(e=>{if(!N(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"),ze=E(e=>e.endsWith(".git")?e.slice(0,-4):e,"stripGitSuffix"),Xe=E(e=>{if(!N(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:s}=e;if(typeof s!="string")return{changed:!1,value:e};const l=_e.exec(s)??qe.exec(s);if(!l)return{changed:!1,value:e};const o=l[1],n=ze(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"),Qe=E(e=>{const r=Object.keys(e),s=[],l=[];for(const i of H)Object.hasOwn(e,i)&&s.push(i);for(const i of r)H.includes(i)||l.push(i);const o=[...s,...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"),U=E(e=>{if(!N(e))return{changed:!1,value:e};let r=!1;const s={};for(const[o,n]of Object.entries(e)){const i=U(n);s[o]=i.value,i.changed&&(r=!0)}const l=Qe(s);return{changed:r||l.changed,value:l.value}},"sortExportsRecursive"),We=E((e,r)=>{const s=A(e);let l=!1;if(r.formatBugs!==!1&&Object.hasOwn(s,"bugs")){const o=He(s.bugs);o.changed&&(s.bugs=o.value,l=!0)}if(r.formatRepository!==!1&&Object.hasOwn(s,"repository")){const o=Xe(s.repository);o.changed&&(s.repository=o.value,l=!0)}if(r.sortExports!==!1&&Object.hasOwn(s,"exports")&&N(s.exports)){const o=U(s.exports);o.changed&&(s.exports=o.value,l=!0)}return{changed:l,pkg:s}},"formatPackageJsonFields");var Ke=Object.defineProperty,j=$((e,r)=>Ke(e,"name",{value:r,configurable:!0}),"c");const Ve=/at position (\d+)/,Ye=/\(?line (\d+) column (\d+)\)?/,Ue=j(e=>{const r=new Set,s=[],l=j(n=>{const i=oe(n);!r.has(i)&&B(i)&&(r.add(i),s.push(i))},"addFile");l(T(e,"package.json"));const o=ue(e);if(o){const n=G(e,o);for(const i of n)l(T(e,i,"package.json"))}else{const n=T(e,"package.json");if(B(n)){const i=JSON.parse(Q(n)),d=Array.isArray(i.workspaces)?i.workspaces:i.workspaces?.packages;if(d){const h=G(e,d);for(const w of h)l(T(e,w,"package.json"))}}}return s},"findPackageJsonFiles"),Ze=j(e=>/\n([ \t]+)/.exec(e)?.[1]??" ","detectIndent"),er=j(e=>{if(!(e===void 0||e===""))return e==="tab"||e===String.raw`\t`?" ":/^\d+$/.test(e)?" ".repeat(Number.parseInt(e,10)):e},"resolveIndentOverride"),D=j(e=>e===void 0?[]:(Array.isArray(e)?e:[e]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(r=>r.length>0),"splitList"),rr=j(e=>e.includes(`\r
2
- `)?"crlf":"lf","detectLineEnding"),tr=new Set(["auto","crlf","lf"]),sr=j(e=>{if(e===void 0||e==="")return"auto";if(tr.has(e))return e;throw new Error(`--line-ending must be one of: auto, lf, crlf (got "${e}")`)},"validateLineEnding"),or=j((e,r,s)=>r.length===0?e:e.filter(l=>{const o=W(s,l),n=ne(l);return!r.some(i=>{const d=i.includes("/")?o:n;return we(i,d)})}),"filterByIgnore"),nr=j((e,r)=>{if(r.length===0)return e;const s={},l=new Set;for(const o of r)Object.hasOwn(e,o)&&(s[o]=e[o],l.add(o));for(const o of Object.keys(e))l.has(o)||(s[o]=e[o]);return s},"applySortOrder"),ir=j((e,r,s)=>{if(s.length===0)return e;const l={...e};for(const o of s)Object.hasOwn(r,o)&&(l[o]=r[o]);return l},"restoreUnsortedSections"),lr=j((e,r)=>{let s=1,l=1;const o=Math.min(r,e.length);for(let n=0;n<o;n++)e.codePointAt(n)===10?(s++,l=1):l++;return{column:l,line:s}},"computeLineColumn"),z=j((e,r,s=2)=>{const l=e.split(`
3
- `);if(r<1||r>l.length)return[];const o=Math.max(0,r-1-s),n=Math.min(l.length,r+s),i=[];for(let d=o;d<n;d++)i.push({content:l[d]??"",isErrorLine:d+1===r,lineNumber:d+1});return i},"buildSnippet"),X=j((e,r)=>{if(!(e instanceof Error))return;const s=Ve.exec(e.message);if(s){const{column:o,line:n}=lr(r,Number.parseInt(s[1]??"0",10));return{column:o,line:n,snippet:z(r,n)}}const l=Ye.exec(e.message);if(l){const o=Number.parseInt(l[1]??"1",10);return{column:Number.parseInt(l[2]??"1",10),line:o,snippet:z(r,o)}}},"extractParseErrorContext"),cr=j((e,r)=>{const s=Object.keys(JSON.parse(e)),l=Object.keys(JSON.parse(r)),o=new Map(s.map((i,d)=>[i,d])),n=[];for(const[i,d]of l.entries()){const h=o.get(d);h!==void 0&&h!==i&&n.push({fromIndex:h,key:d,toIndex:i})}return n},"computeKeyDiff"),ar=j((e,r,s)=>{const l=r.indent??s.indent??Ze(e),o=r.lineEnding==="auto"?s.lineEnding??rr(e):r.lineEnding,n=K(e,{pretty:!1,sortScripts:r.sortScripts});let i=JSON.parse(n);if(r.unsorted.length>0){const x=JSON.parse(e);i=ir(i,x,r.unsorted)}i=nr(i,r.sortOrder);const d={formatBugs:r.formatBugs,formatRepository:r.formatRepository,sortExports:r.sortExports},h=We(i,d);let w=JSON.stringify(h.pkg,null,l);return r.finalNewline&&(w+=`
4
- `),o==="crlf"&&(w=w.replaceAll(`
5
- `,`\r
6
- `)),w},"sortContents"),dr=j((e,r)=>{const s=Ue(e),l=fe(e),o=he({cwd:e,extraPatterns:ge(l)}),n=s.filter(d=>!o.ignores(d)),i=or(n,r,e);return{afterGitignore:n,allFiles:s,files:i}},"discoverPackageJsonFiles"),ur=j((e,{checkMode:r,cwd:s,normalized:l})=>{const o=W(s,e)||e;let n;try{n=Q(e)}catch(x){return{diff:[],error:{message:F(x),step:"read"},filePath:e,relativePath:o,status:"error"}}let i;try{i=K(n,{pretty:!1,sortScripts:l.sortScripts})}catch(x){const g={message:F(x),step:"native-sort"},p=X(x,n);return p&&(g.context=p),{diff:[],error:g,filePath:e,relativePath:o,status:"error"}}const d=l.editorconfig?pe(e):{};let h;try{h=ar(n,l,d)}catch(x){const g={message:F(x),step:"json-parse"},p=X(x,n);return p&&(g.context=p),{diff:[],error:g,filePath:e,relativePath:o,status:"error"}}if(n===h)return{diff:[],filePath:e,relativePath:o,status:"unchanged"};let w;try{w=cr(n,i)}catch{w=[]}if(r)return{diff:w,filePath:e,relativePath:o,status:"would-rewrite"};try{se(e,h,"utf8")}catch(x){return{diff:w,error:{message:F(x),step:"write"},filePath:e,relativePath:o,status:"error"}}return{diff:w,filePath:e,relativePath:o,status:"rewritten"}},"processFile"),fr=j(e=>{if(e.error&&(b.error(`${e.filePath}: ${e.error.message}`),b.info(` step: ${e.error.step}`),e.error.context)){b.info(` at line ${String(e.error.context.line)}, column ${String(e.error.context.column)}`);for(const r of e.error.context.snippet){const s=r.isErrorLine?">":" ";b.info(` ${s} ${String(r.lineNumber).padStart(4)} | ${r.content}`)}}},"printStaticError"),yr=j(async({options:e,visConfig:r,workspaceRoot:s})=>{const l=s??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:er(e.indent??o?.indent),lineEnding:sr(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=dr(l,i.ignore),{afterGitignore:h,allFiles:w,files:x}=d;if(x.length===0){w.length===0?b.info("No package.json files found."):h.length===0?b.info("All package.json files were excluded by .gitignore or workspace exclusions."):b.info("All package.json files were excluded by --ignore.");return}const g=[];for(const f of x)g.push(ur(f,{checkMode:n,cwd:l,normalized:i}));let p=0,S=0,k=0;for(const f of g)f.status==="error"?k++:f.status==="rewritten"||f.status==="would-rewrite"?p++:S++;const v=p>0||k>0;if(process.stdout.isTTY&&!xe&&v){const f=new ke(g);await me(je.createElement(Ge,{checkMode:n,store:f}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit()}else for(const f of g)switch(f.status){case"error":{fr(f);break}case"rewritten":{b.success(`Sorted ${f.filePath}`);break}case"would-rewrite":{b.warn(`${f.filePath} is not sorted`);break}}if(n)p>0?(b.info(`${String(p)} file${p===1?"":"s"} not sorted, ${String(S)} already sorted`),process.exitCode=1):k===0&&b.info(`All ${String(S)} package.json file${S===1?" is":"s are"} sorted`);else{const f=[];p>0&&f.push(`sorted ${String(p)} file${p===1?"":"s"}`),S>0&&f.push(`${String(S)} already sorted`),k>0&&f.push(`${String(k)} error${k===1?"":"s"}`),f.length>0&&b.info(f.join(", "))}k>0&&(process.exitCode=1)},"execute");export{z as buildSnippet,cr as computeKeyDiff,lr as computeLineColumn,yr as default,dr as discoverPackageJsonFiles,X as extractParseErrorContext,ur as processFile};
1
+ import{v as F,H as P,y as S,m as b,T as I,O as U,a as T}from"../packem_shared/index-BDmTbWX1.js";import{o as _}from"../packem_shared/index-CB4p298r.js";import{aL as C,b as M,aM as J,Y as q}from"./bin.js";import{n as B}from"../packem_shared/manifests-Dj3pRKBT.js";import{s as H}from"../packem_shared/glob-fqg4KepW-B7EjLRvw.js";const K=(e,t)=>{const o=t.replace(/^\.?\//,"");return o===""||o==="."?`/${e}/`:e===""||e==="."?`/${o}`:`/${e}/${o}`},v=(e,t,o=[])=>{const s=[],n=new Set;for(const[r,i]of Object.entries(t?.globalPaths??{}))s.push({owners:i,path:r,source:"project-json"}),n.add(r);for(const[r,i]of Object.entries(e.projects)){const a=i.owners??[];for(const c of a){const f=K(i.root??r,c.path);s.push({channel:c.channel,owners:c.owners,path:f,projectId:r,source:"project-json"}),n.add(f)}}for(const r of o)n.has(r.path)||(s.push(r),n.add(r.path));return(t?.orderBy??"file-source")==="project-id"?s.sort((r,i)=>(r.projectId??"").localeCompare(i.projectId??"")||r.path.localeCompare(i.path)):s.sort((r,i)=>r.path.localeCompare(i.path)),s},Y="Update each project's project.json `owners` field and re-run the command.",z=e=>["# CODEOWNERS — generated by `vis sync codeowners`. Do not edit by hand.",e?`# Re-run with: ${e}`:`# ${Y}`,""],W=e=>{const t=[];for(const o of e){const s=o.owners.join(" "),n=o.channel?` # notify: ${o.channel}`:"";t.push(`${o.path} ${s}${n}`)}return t},Q=(e,t={})=>[...z(t.regenerationCommand),...W(e),""].join(`
2
+ `),O={begin:"# BEGIN vis-codeowners",end:"# END vis-codeowners"},V=(e,t=O,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,...W(e),t.end].join(`
3
+ `)},X=(e,t,o=O)=>{const s=e.indexOf(o.begin),n=e.indexOf(o.end);if(s!==-1&&n!==-1&&n>s){const i=e.slice(0,s),a=n+o.end.length,c=e.slice(a);return`${i}${t}${c}`}const r=e.replace(/\s+$/u,"");return`${r.length===0?"":`${r}
4
+
5
+ `}${t}
6
+ `},Z=["**/CODEOWNERS"],ee=["**/node_modules/**","**/dist/**","**/build/**","**/coverage/**","**/.git/**","**/.next/**","**/.nuxt/**"],te=e=>{const t=[];for(const o of e.split(/\r?\n/u)){const s=o.indexOf("#"),n=(s===-1?o:o.slice(0,s)).trim();if(n.length===0)continue;const r=n.split(/\s+/u);if(r.length<2)continue;const[i,...a]=r,c=a.filter(f=>f.length>0);!i||c.length===0||t.push({owners:c,path:i})}return t},oe=(e,t)=>{const o=t.replace(/^\.\/?/,"").replace(/\/$/,"");return e.startsWith("/")?o===""?e:`/${o}${e}`:o===""?`/${e}`:`/${o}/${e}`},ne=async(e,t,o)=>{const s=t&&t.length>0?[...t]:[...Z],n=[...ee];if(o){const a=o.replace(/^\.\/?/,"").replace(/^\/+/,"");a.length>0&&n.push(a)}const r=await H(s,{absolute:!0,cwd:e,ignore:n}),i=[];for(const a of r){let c;try{c=F(a)}catch{continue}const f=P(a),h=S(e,f);for(const p of te(c))i.push({owners:p.owners,path:oe(p.path,h)})}return i},re=/^(?:https?:\/\/)?(?:www\.)?github\.com\/([^/?#]+)/iu,se=e=>{if(!e)return;const t=e.match(re);if(!t?.[1])return;const o=t[1].trim();if(!(o===""||o.includes(" ")))return`@${o.replace(/^@/,"")}`},ae=(e,t)=>{const o=[];for(const[s,n]of Object.entries(e.projects)){if(n.owners&&n.owners.length>0)continue;const r=n.root??s,i=b(t,r,"package.json"),a=C(i);if(!a)continue;const c=B(a.maintainers);if(!c||c.length===0)continue;const f=[],h=new Set;for(const p of c){const $=se(p.url);$&&!h.has($)&&(h.add($),f.push($))}f.length!==0&&o.push({owners:f,path:r===""||r==="."?"/":`/${r}/`,projectId:s})}return o},ie=["author","bugs","homepage","license","repository","engines"],N=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),E=(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(!E(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 n of o)if(!E(e[n],t[n]))return!1;return!0}return!1},R=e=>e===void 0?e:structuredClone(e),ce=(e,t,o)=>{if(e==="repository"&&N(t)&&N(o)){const s={};for(const[n,r]of Object.entries(t))n!=="directory"&&(s[n]=R(r));return typeof o.directory=="string"&&(s.directory=o.directory),s}return R(t)},de=(e,t,o)=>{const s=[];for(const n of o.fields){if(!Object.hasOwn(e,n))continue;const r=e[n],i=t[n],a=ce(n,r,i);E(a,i)||s.push({after:a,before:i,field:n,packageJsonPath:""})}return s},fe=(e,t)=>{for(const o of t)e[o.field]=o.after},x="Generated by `vis sync codeowners --write-guard`. Do not edit by hand.",le=e=>{const t=e.replace(/^\.?\/+/u,"").replace(/\/+$/u,"");return t===""||t==="."?"**":`${t}/**`},L=e=>{const t=new Set,o=[];for(const s of[...e].sort((n,r)=>n.name.localeCompare(r.name))){const n=le(s.root);t.has(n)||(t.add(n),o.push(n))}return o},pe=e=>{const t=L(e),o=t.map(n=>` - "${n}"`).join(`
7
+ `),s=t.map(n=>` ${n}`).join(`
8
+ `);return`# ${x}
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
+ `},ue=e=>{const t=L(e).map(o=>` - "${o}/*"`).join(`
33
+ `);return`# ${x}
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
+ `},he=e=>e.length===0?[]:[{content:pe(e),path:".github/workflows/write-guard.yml"},{content:ue(e),path:".gitlab/write-guard.gitlab-ci.yml"}],D=new Set(["nested-codeowners","package-json-maintainers","project-json"]),A=(e,t,o)=>{const s=new Set,n=[];for(const r of e??[])for(const i of r.split(",")){const a=i.trim();if(a.length===0)continue;if(o&&!o(a))throw new Error(`Unknown codeowners source: "${a}". Known: ${[...D].join(", ")}.`);const c=a;s.has(c)||(s.add(c),n.push(c))}return n.length>0?n:[...t]},ge=e=>D.has(e),G=["codeowners","package-json-fields"],me=(e,t)=>t.some(o=>_(o,e)),we=async(e,t,o,s,n)=>{const r=Object.entries(s.projects).filter(([,a])=>a.restricted===!0).map(([a,c])=>({name:a,root:c.root??a})),i=he(r);if(i.length===0){t.info("No projects flagged `restricted: true` in project.json. Skipping Write Guard.");return}if(n){let a=!1;for(const c of i){const f=b(o,c.path);let h="";try{h=await e.readFile(f,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}h.trim()!==c.content.trim()&&(t.error(`${c.path} is out of date. Run \`vis sync codeowners --write-guard\` to update it.`),a=!0)}a?process.exitCode=1:t.info(`Write Guard CI is up to date (${i.length} files, ${r.length} restricted projects).`);return}for(const a of i){const c=b(o,a.path);T(P(c)),I(c,a.content),t.info(`Wrote ${a.path}`)}t.info(`Write Guard CI scoped to ${r.length} restricted project${r.length===1?"":"s"}.`)},$e=async({fs:e,logger:t,options:o,visConfig:s,workspaceRoot:n})=>{const r=n,{workspace:i}=M(r,s),a=s?.codeowners;o.writeGuard===!0&&await we(e,t,r,i,o.check===!0);const c=A(o.from,a?.sources??["project-json"],ge),f=o.regenerationCommand??a?.regenerationCommand,h=o.preserveBlock===!0||a?.preserveBlock===!0,p=a?.blockMarker??O,$=o.nestedIncludes??a?.nestedIncludes,g=o.out??"CODEOWNERS",w=[];if(c.includes("nested-codeowners")){const m=await ne(r,$,g);for(const j of m)w.push({...j,source:"nested"})}if(c.includes("package-json-maintainers")){const m=ae(i,r);for(const j of m)w.push({...j,source:"maintainers"})}const l=c.includes("project-json")?v(i,a,w):v({projects:{}},a,w);if(l.length===0){t.info("No `owners` entries found in any source. Nothing to sync.");return}const y=b(r,g);let d="";try{d=await e.readFile(y,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}const u={regenerationCommand:f},k=h?X(d,V(l,p,u),p):Q(l,u);if(o.check){if(d.trim()!==k.trim()){t.error(`${y} is out of date. Run \`vis sync codeowners\` to update it.`),process.exitCode=1;return}t.info(`${y} is up to date.`);return}I(y,k),t.info(`Wrote ${l.length} entries to ${y}`)},ke=({logger:e,options:t,visConfig:o,workspaceRoot:s})=>{const n=s,r=o?.editorconfig??!0,i=C(b(n,"package.json"));if(!i){e.error("Could not read root package.json. Nothing to sync."),process.exitCode=1;return}const a=A(t.fields,ie),c=t.ignorePackageName??[],f=t.check===!0,h=(t.format??"human").toLowerCase(),p=t.quiet===!0,$=J(n).filter(d=>d!=="."),g=[];let w=0;for(const d of $){const u=b(n,d,"package.json"),k=C(u);if(!k)continue;const m=typeof k.name=="string"?k.name:void 0;if(m!==void 0&&c.length>0&&me(m,c))continue;w+=1;const j=de(i,k,{fields:a});j.length!==0&&g.push({filePath:u,packageJsonPath:S(n,u),packageName:m,pkg:k,pkgChanges:j})}if(!f)for(const d of g)fe(d.pkg,d.pkgChanges),U(d.filePath,d.pkg,{indent:q(d.filePath,{useEditorconfig:r}),overwrite:!0});const l=g.flatMap(d=>d.pkgChanges.map(u=>({after:u.after,before:u.before,field:u.field,packageJsonPath:d.packageJsonPath,packageName:d.packageName}))),y={changes:l,fields:a,kind:"package-json-fields",mode:f?"check":"write",totalChanges:l.length,totalPackages:w};if(h==="json")process.stdout.write(`${JSON.stringify(y,null,4)}
61
+ `);else if(l.length===0)e.info(`All ${w} package${w===1?"":"s"} in sync (fields: ${a.join(", ")}).`);else if(f){if(!p)for(const d of l)e.error(`${d.packageJsonPath}: ${d.field} drifts from root`);e.error(`Found ${l.length} field drift${l.length===1?"":"s"} across ${g.length} package${g.length===1?"":"s"}. Run \`vis sync package-json-fields\` to fix.`)}else{if(!p)for(const d of g)e.info(`${d.packageJsonPath}: synced ${d.pkgChanges.map(u=>u.field).join(", ")}`);e.info(`Synced ${l.length} field${l.length===1?"":"s"} across ${g.length} package${g.length===1?"":"s"}.`)}f&&l.length>0&&(process.exitCode=1)},Oe=async e=>{const t=e.argument[0];if(!t)throw new Error(`Missing sync kind. Usage: vis sync <kind> (known kinds: ${G.join(", ")})`);if(!e.workspaceRoot)throw new Error("Could not determine workspace root. Run inside a monorepo.");if(t==="codeowners"){await $e(e);return}if(t==="package-json-fields"){ke(e);return}throw new Error(`Unknown sync kind: "${t}". Known kinds: ${G.join(", ")}.`)};export{Oe as default};
@@ -1,24 +1,3 @@
1
- var fe=Object.defineProperty;var C=(r,e)=>fe(r,"name",{value:e,configurable:!0});import{createRequire as ue}from"node:module";import"../packem_shared/_commonjsHelpers-CLblCigl.js";import{r as xe}from"../packem_shared/glob-D_7bct6p-D8itOHsr.js";import{M as N,l as W,B as G,C as ye}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{E as M,s as te}from"./config.js";import{t as ve,aV as je,a7 as t,a8 as m,n as c,aH as ke,aI as we,aJ as be,aG as $e,x as I,ah as Ce,aL as Oe,V as Se,u as X,p as j,k as Pe,R as Ee,s as Ne}from"./bin.js";import _e from"module-replacements/manifests/micro-utilities.json"with{type:"json"};import Te from"module-replacements/manifests/native.json"with{type:"json"};import De from"module-replacements/manifests/preferred.json"with{type:"json"};import{s as ne,A as Ae,y as Re}from"../packem_shared/pm-runner-DmKT2FqF.js";import __cjs_mod__ from "node:module"; // -- packem CommonJS require shim --
2
- const require = __cjs_mod__.createRequire(import.meta.url);
3
- const me=ue(import.meta.url),R=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,he=C(r=>{if(typeof R<"u"&&R.versions&&R.versions.node){const[e,n]=R.versions.node.split(".").map(Number);if(e>22||e===22&&n>=3||e===20&&n>=16)return R.getBuiltinModule(r)}return me(r)},"__cjs_getBuiltinModule"),{writeFileSync:ge}=he("node:fs");var Ie=Object.defineProperty,E=C((r,e)=>Ie(r,"name",{value:e,configurable:!0}),"d$1");const Me=["dependencies","devDependencies","peerDependencies","peerDependenciesMeta","optionalDependencies","bundleDependencies"],Fe=["overrides","pnpm","resolutions"],Ge=["engines","files"],Le=E(r=>{const e=ne.coerce(r)?.major;return e!==void 0&&e>=10},"isPnpmV10Plus"),qe=E(r=>{const e=N(r,"pnpm-workspace.yaml");if(!W(e))return{overrides:{},source:"pnpm-workspace.yaml"};try{return{overrides:ve(e)?.overrides??{},source:"pnpm-workspace.yaml"}}catch{return{overrides:{},source:"pnpm-workspace.yaml"}}},"readPnpmWorkspaceOverrides"),Ue=E((r,e)=>{let n={};return e==="deno"?{overrides:{},source:"package.json"}:(e==="pnpm"?n=r.pnpm?.overrides??{}:e==="yarn"||e==="bun"?n=r.resolutions??{}:n=r.overrides??{},{overrides:n,source:"package.json"})},"readPkgJsonOverrides"),ze=E((r,e,n)=>n.name==="pnpm"&&Le(n.version)?qe(r):Ue(e,n.name),"readOverrides"),K=E((r,e)=>{const n=e;for(const a of Fe){const i=r.indexOf(a);if(i!==-1&&a!==n)return n==="overrides"?i:i+1}let o=-1;for(const a of Me){const i=r.indexOf(a);i>o&&(o=i)}if(o!==-1)return o+1;for(const a of Ge){const i=r.indexOf(a);if(i!==-1)return i}return r.length},"findInsertIndex"),Je=E((r,e)=>{const n=N(r,"pnpm-workspace.yaml");if(!W(n))throw new Error(`pnpm-workspace.yaml not found at ${n}. Cannot write overrides for pnpm v10+.`);let o=G(n);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(n,o)},"writePnpmWorkspaceOverrides"),Be=E((r,e,n,o,a)=>{const i=G(r),l=je(r,i,{useEditorconfig:a});if(o==="pnpm"){const x=e.pnpm??{};if(x.overrides=n,e.pnpm)e.pnpm=x,M(r,`${JSON.stringify(e,null,l)}
9
- `);else{const k=Object.keys(e),v=K(k,"pnpm"),y=Object.entries(e);y.splice(v,0,["pnpm",x]),M(r,`${JSON.stringify(Object.fromEntries(y),null,l)}
10
- `)}}else{const x=o==="yarn"||o==="bun"?"resolutions":"overrides";if(e[x])e[x]=n,M(r,`${JSON.stringify(e,null,l)}
11
- `);else{const k=Object.keys(e),v=K(k,x),y=Object.entries(e);y.splice(v,0,[x,n]),M(r,`${JSON.stringify(Object.fromEntries(y),null,l)}
12
- `)}}},"writePkgJsonOverrides"),He=E((r,e,n,o,a)=>{if(o.name==="deno")return{added:[],updated:[]};const i=G(e),l=JSON.parse(i),{overrides:x,source:k}=ze(r,l,o),v=[],y=[],s=new Set;if(o.name==="npm")for(const p of["dependencies","devDependencies"]){const h=l[p];if(h)for(const g of Object.keys(h))s.add(g)}for(const p of n){const h=x[p.original];if(typeof h=="object")continue;let g=p.spec;o.name==="npm"&&s.has(p.original)&&(g=`$${p.original}`),h!==g&&(h?y.push(p.original):v.push(p.original),x[p.original]=g)}if(v.length===0&&y.length===0)return{added:v,updated:y};const f=Object.fromEntries(Object.entries(x).sort(([p],[h])=>p.localeCompare(h)));return k==="pnpm-workspace.yaml"?Je(r,f):Be(e,l,f,o.name,a),{added:v,updated:y}},"applyOverrides"),Ve=E((r,e)=>{const n={bun:["bun.lock"],deno:["deno.lock"],npm:["npm-shrinkwrap.json","package-lock.json"],pnpm:["pnpm-lock.yaml"],yarn:["yarn.lock"]};for(const o of n[e]??[]){const a=N(r,o);try{return G(a)}catch{continue}}return""},"readLockfileText"),We=E((r,e,n)=>{if(!r)return!1;const o=e.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`);switch(n){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 B={exports:{}},H,Y;function Q(){if(Y)return H;Y=1;var r=Object.defineProperty,e=C((s,f)=>r(s,"name",{value:f,configurable:!0}),"t"),n=Object.defineProperty,o=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,l=e((s,f)=>{for(var p in f)n(s,p,{get:f[p],enumerable:!0})},"__export"),x=e((s,f,p,h)=>{if(f&&typeof f=="object"||typeof f=="function")for(let g of a(f))!i.call(s,g)&&g!==p&&n(s,g,{get:e(()=>f[g],"get"),enumerable:!(h=o(f,g))||h.enumerable});return s},"__copyProps"),k=e(s=>x(n({},"__esModule",{value:!0}),s),"__toCommonJS"),v={};l(v,{PURL_Type:e(()=>y,"PURL_Type")}),H=k(v);var y=(s=>(s.APK="apk",s.BITBUCKET="bitbucket",s.COCOAPODS="cocoapods",s.CARGO="cargo",s.CHROME="chrome",s.COMPOSER="composer",s.CONAN="conan",s.CONDA="conda",s.CRAN="cran",s.DEB="deb",s.DOCKER="docker",s.GEM="gem",s.GENERIC="generic",s.GITHUB="github",s.GOLANG="golang",s.HACKAGE="hackage",s.HEX="hex",s.HUGGINGFACE="huggingface",s.MAVEN="maven",s.MLFLOW="mlflow",s.NPM="npm",s.NUGET="nuget",s.OCI="oci",s.PUB="pub",s.PYPI="pypi",s.QPKG="qpkg",s.RPM="rpm",s.SWID="swid",s.SWIFT="swift",s.VCS="vcs",s))(y||{});return H}C(Q,"requireTypes");var Z;function Xe(){return Z||(Z=1,(function(r){var e=Object.defineProperty,n=C((f,p)=>e(f,"name",{value:p,configurable:!0}),"a"),o=Object.defineProperty,a=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,l=Object.prototype.hasOwnProperty,x=n((f,p)=>{for(var h in p)o(f,h,{get:p[h],enumerable:!0})},"__export"),k=n((f,p,h,g)=>{if(p&&typeof p=="object"||typeof p=="function")for(let u of i(p))!l.call(f,u)&&u!==h&&o(f,u,{get:n(()=>p[u],"get"),enumerable:!(g=a(p,u))||g.enumerable});return f},"__copyProps"),v=n((f,p,h)=>(k(f,p,"default"),h&&k(h,p,"default")),"__reExport"),y={};x(y,{getManifestData:n(()=>s,"getManifestData")}),v(y,Q(),r.exports);function s(f,p){try{const h=require("../manifest.json");if(!f)return h;const g=h[f];if(!g)return;if(!p)return g;const u=g.find(([b,$])=>$.package===p);return u?u[1]:void 0}catch{return}}C(s,"getManifestData"),n(s,"getManifestData"),r.exports={getManifestData:s,...Q()}})(B)),B.exports}C(Xe,"requireDist");var Ke=Xe(),Ye=Object.defineProperty,F=C((r,e)=>Ye(r,"name",{value:e,configurable:!0}),"s");const Qe=F((r,e,n)=>{let o=r;if(e!=="all"&&(o=o.filter(a=>a.category===e)),n){const a=n.toLowerCase();o=o.filter(i=>i.packageName.toLowerCase().includes(a))}return o},"filterEntries");class Ze{static{C(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(()=>Qe(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 n=this.getFilteredEntries();this.#e.selectedIndex=n.length===0?-1:Math.max(0,Math.min(e,n.length-1)),this.#r()}toggleCheck(e){const n=new Set(this.#e.checkedEntries);n.has(e)?n.delete(e):n.add(e),this.#e.checkedEntries=n,this.#r()}toggleAll(){const e=this.getFilteredEntries(),n=new Set(this.#e.checkedEntries);if(e.every(o=>n.has(o.packageName)))for(const o of e)n.delete(o.packageName);else for(const o of e)n.add(o.packageName);this.#e.checkedEntries=n,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,n){this.#e.applyProgress={current:e,total:n},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 oe={"micro-utility":"gray",native:"green",preferred:"yellow",socket:"cyan"},er={"micro-utility":"MICRO",native:"NATIVE",preferred:"PREF",socket:"SOCKET"},rr={"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 tr=Object.defineProperty,nr=C((r,e)=>tr(r,"name",{value:e,configurable:!0}),"d");const or=nr(({entry:r,focused:e,scrollRef:n})=>{const o=e?"white":"gray";if(!r)return t.jsx(m,{alignItems:"center",borderColor:"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,justifyContent:"center",children:t.jsx(c,{dimColor:!0,children:"No entry selected"})});const a=oe[r.category]??"gray";return t.jsxs(m,{borderColor:o,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[t.jsx(m,{flexShrink:0,paddingTop:1,paddingX:2,children:t.jsx(c,{bold:!0,color:"white",children:r.packageName})}),t.jsxs(ke,{flexGrow:1,flexShrink:1,paddingX:2,ref:n,scrollbar:!0,scrollbarColor:"gray",children:[t.jsx(c,{}),t.jsxs(m,{children:[t.jsx(m,{width:14,children:t.jsx(c,{dimColor:!0,children:"Category:"})}),t.jsx(c,{bold:!0,color:a,children:r.category})]}),t.jsxs(m,{children:[t.jsx(m,{width:14,children:t.jsx(c,{dimColor:!0,children:"Replace with:"})}),t.jsx(c,{children:r.replacement})]}),r.overrideSpec&&t.jsxs(m,{children:[t.jsx(m,{width:14,children:t.jsx(c,{dimColor:!0,children:"Override:"})}),t.jsx(c,{color:"cyan",children:r.overrideSpec})]}),t.jsxs(m,{children:[t.jsx(m,{width:14,children:t.jsx(c,{dimColor:!0,children:"Codemod:"})}),t.jsx(c,{color:r.hasCodemod?"green":"gray",children:r.hasCodemod?"available ⚙":"not available"})]}),t.jsxs(m,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"white",children:"DESCRIPTION"}),t.jsx(m,{marginTop:1,paddingLeft:2,children:t.jsx(c,{children:rr[r.category]??""})})]}),r.category==="native"&&t.jsxs(m,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"green",children:"ACTION"}),t.jsx(m,{flexDirection:"column",marginTop:1,paddingLeft:2,children:r.hasCodemod?t.jsxs(t.Fragment,{children:[t.jsxs(c,{color:"green",children:["✓"," ","Codemod will rewrite imports to use native API."]}),t.jsx(c,{dimColor:!0,children:" The package can then be removed from dependencies."})]}):t.jsxs(t.Fragment,{children:[t.jsxs(c,{color:"yellow",children:["ℹ"," ","No automated codemod available."]}),t.jsx(c,{dimColor:!0,children:" Manual migration required — replace usage with native equivalent."})]})})]}),r.category==="socket"&&t.jsxs(m,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"cyan",children:"ACTION"}),t.jsxs(m,{flexDirection:"column",marginTop:1,paddingLeft:2,children:[t.jsxs(c,{color:"cyan",children:["✓"," ","Override will redirect resolution to the hardened package."]}),t.jsx(c,{dimColor:!0,children:" No source code changes needed — drop-in replacement."})]})]}),(r.category==="preferred"||r.category==="micro-utility")&&t.jsxs(m,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"yellow",children:"ACTION"}),t.jsx(m,{flexDirection:"column",marginTop:1,paddingLeft:2,children:r.hasCodemod?t.jsxs(t.Fragment,{children:[t.jsxs(c,{color:"green",children:["✓"," ","Codemod will rewrite imports to the recommended alternative."]}),t.jsx(c,{dimColor:!0,children:" The original package can then be removed from dependencies."})]}):t.jsxs(t.Fragment,{children:[t.jsxs(c,{color:"yellow",children:["ℹ"," ","Manual migration required."]}),r.docUrl?t.jsx(c,{dimColor:!0,children:" Open the migration guide below for the recommended alternative and steps."}):t.jsx(c,{dimColor:!0,children:" Consult the package's docs or the e18e module-replacements guide for an alternative."})]})})]}),t.jsxs(m,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"white",children:"LINKS"}),t.jsxs(m,{flexDirection:"column",marginTop:1,paddingLeft:2,children:[t.jsxs(c,{color:"cyan",underline:!0,children:["https://npmx.dev/",r.packageName]}),r.docUrl&&t.jsx(c,{color:"cyan",underline:!0,children:r.docUrl})]})]})]})]})},"OptimizeDetailPanel");var ir=Object.defineProperty,ie=C((r,e)=>ir(r,"name",{value:e,configurable:!0}),"b$1");const sr=[{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"}],ar=ie(({checked:r,entry:e,isSelected:n})=>{const o=oe[e.category]??"white",a=er[e.category]??e.category,i=r?"☑":"☐",l=e.hasCodemod?"⚙":" ";return t.jsxs(m,{flexShrink:0,height:1,children:[t.jsx(c,{children:n?">":" "}),t.jsxs(c,{color:r?"white":"gray",children:[" ",i," "]}),t.jsx(c,{bold:!0,color:o,children:`[${a}]`.padEnd(9)}),t.jsxs(c,{children:[" ",l," "]}),t.jsx(m,{flexGrow:1,children:t.jsx(c,{bold:n,inverse:n,wrap:"truncate",children:e.packageName})}),t.jsx(c,{dimColor:!0,children:" → "}),t.jsx(c,{wrap:"truncate",children:e.replacement})]})},"EntryRow"),cr=ie(({checkedEntries:r,entries:e,filterActive:n,filterText:o,filterType:a,focused:i,isDryRun:l,scrollOffset:x,selectedIndex:k,totalEntries:v,viewportHeight:y})=>{const s=i?"white":"gray";let f=0,p=0,h=0,g=0;for(const d of e)switch(d.category){case"micro-utility":{h++;break}case"native":{f++;break}case"preferred":{p++;break}case"socket":{g++;break}}const u=[];f>0&&u.push(`${f} native`),p>0&&u.push(`${p} preferred`),h>0&&u.push(`${h} micro`),g>0&&u.push(`${g} socket`);const b=u.length>0?` (${u.join(", ")})`:"",$=r.size,_=[];for(const[d,O]of e.entries())_.push(t.jsx(ar,{checked:r.has(O.packageName),entry:O,isSelected:d===k},O.packageName));const T=e.length,A=T>y&&y>0;return t.jsxs(m,{borderColor:s,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[t.jsxs(m,{flexShrink:0,gap:1,paddingX:1,children:[t.jsx(c,{bold:!0,inverse:!0,children:" VIS OPTIMIZE "}),t.jsxs(c,{wrap:"truncate",children:[v," ","optimizations",b]}),!l&&$>0&&t.jsxs(c,{dimColor:!0,children:[" ","—",$," ","selected"]})]}),t.jsx(m,{flexShrink:0,gap:1,paddingX:1,paddingY:1,children:sr.map(d=>{const O=a===d.key;return t.jsxs(m,{children:[t.jsx(c,{dimColor:!O,children:"["}),t.jsx(c,{bold:O,color:O?"cyan":"gray",children:d.shortcut}),t.jsx(c,{dimColor:!O,children:"]"}),t.jsxs(c,{color:O?"white":"gray",children:[" ",d.label]})]},d.key)})}),n&&t.jsxs(m,{flexShrink:0,paddingX:1,children:[t.jsx(c,{bold:!0,color:"white",children:"/ "}),t.jsx(c,{children:o}),t.jsx(c,{inverse:!0,children:" "})]}),t.jsxs(m,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[t.jsx(m,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingLeft:1,children:t.jsx(m,{flexDirection:"column",marginTop:-x,children:_})}),A&&t.jsx(m,{flexShrink:0,marginLeft:1,marginRight:1,children:t.jsx(we,{contentHeight:T,placement:"inset",scrollOffset:x,style:"block",viewportHeight:y})})]})]})},"OptimizeListPanel");var lr=Object.defineProperty,dr=C((r,e)=>lr(r,"name",{value:e,configurable:!0}),"I$1");const pr=100,ee=10,re={1:"all",2:"native",3:"preferred",4:"micro-utility",5:"socket"},fr=dr(({isDryRun:r,store:e})=>{const{exit:n}=be(),{columns:o,rows:a}=$e(),i=I.useSyncExternalStore(e.subscribe,e.getSnapshot),l=I.useRef(null),[x,k]=I.useState(0),[v,y]=I.useState(!1),s=e.getFilteredEntries(),f=s[i.selectedIndex]??null,p=o>=pr,h=Math.max(0,a-5),g=I.useCallback(u=>{n(u)},[n]);return Ce((u,b)=>{if(v){u==="y"||u==="Y"?g():y(!1);return}if(i.filterActive){b.escape?(e.setFilterActive(!1),e.setFilterText("")):b.return?e.setFilterActive(!1):b.backspace||b.delete?e.setFilterText(i.filterText.slice(0,-1)):u&&!b.ctrl&&!b.meta&&e.setFilterText(i.filterText+u);return}if(u==="q"){!r&&i.checkedEntries.size>0?y(!0):g();return}if(u==="/"){e.setFilterActive(!0);return}if(re[u]){e.setFilter(re[u]);return}if(b.tab){e.setFocusedPanel(i.focusedPanel==="list"?"detail":"list");return}if(i.focusedPanel==="list")if(b.upArrow||u==="k"){const $=Math.max(0,i.selectedIndex-1);e.select($),$<x&&k($)}else if(b.downArrow||u==="j"){const $=Math.min(s.length-1,i.selectedIndex+1);e.select($),$>=x+h&&k($-h+1)}else u===" "?f&&e.toggleCheck(f.packageName):u==="a"?e.toggleAll():b.return&&!r&&i.checkedEntries.size>0&&g(e.getCheckedEntries());else i.focusedPanel==="detail"&&(b.upArrow||u==="k"?l.current?.scrollBy(-1):(b.downArrow||u==="j")&&l.current?.scrollBy(1))},{isActive:i.phase==="browsing"}),a<ee?t.jsx(m,{alignItems:"center",justifyContent:"center",children:t.jsxs(c,{color:"yellow",children:["Terminal too small. Resize to at least",ee," ","rows."]})}):t.jsxs(m,{flexDirection:"column",height:a,width:o,children:[t.jsxs(m,{flexDirection:p?"row":"column",flexGrow:1,children:[t.jsx(m,{flexBasis:p?"50%":void 0,flexGrow:1,children:t.jsx(cr,{checkedEntries:i.checkedEntries,entries:s,filterActive:i.filterActive,filterText:i.filterText,filterType:i.filterType,focused:i.focusedPanel==="list",isDryRun:r,scrollOffset:x,selectedIndex:i.selectedIndex,totalEntries:i.entries.length,viewportHeight:h})}),t.jsx(m,{flexBasis:p?"50%":void 0,flexGrow:1,children:t.jsx(or,{entry:f,focused:i.focusedPanel==="detail",scrollRef:l})})]}),t.jsx(m,{flexShrink:0,paddingX:1,children:t.jsxs(c,{dimColor:!0,children:[r?"Preview mode":"space:toggle a:all enter:apply"," ","| tab:switch panel /: filter q:quit |","⚙","=codemod available"]})}),t.jsx(Oe,{autoExitSeconds:3,onCancel:C(()=>{y(!1)},"onCancel"),visible:v})]})},"VisOptimizeApp");var ur=Object.defineProperty,S=C((r,e)=>ur(r,"name",{value:e,configurable:!0}),"p");const V=S((r,e)=>{const n=new Set;try{const o=te(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))n.add(l)}catch{}return n},"collectDepsFromPkgJson"),se=S(r=>{const e=Se(r);if(e)return X(r,e);const n=N(r,"package.json");if(!W(n))return[];try{const o=te(n),a=Array.isArray(o.workspaces)?o.workspaces:o.workspaces?.packages;return a?X(r,a):[]}catch{return[]}},"discoverWorkspacePackages"),mr="https://github.com/es-tooling/module-replacements/blob/main/docs/modules",hr=S(r=>`${mr}/${r}.md`,"buildE18eDocUrl"),gr=S(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"),ae=S(r=>{const e=[],n=S((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?hr(l.docPath):void 0,hasCodemod:!1,overrideSpec:void 0,packageName:l.moduleName,replacement:gr(l)})},"scanManifest");return n(Te,"native"),n(De,"preferred"),n(_e,"micro-utility"),e},"buildE18eEntries"),ce=S((r,e,n,o)=>{const a=Ke.getManifestData("npm")??[],i=[];for(const[,l]of a){if(l.deprecated)continue;const x=r.has(l.package),k=e?We(e,l.package,n.name):!1;if(!x&&!k)continue;const v=ne.coerce(l.version)?.major;if(v===void 0)continue;const y=o?`npm:${l.name}@${l.version}`:`npm:${l.name}@^${String(v)}`;i.push({category:"socket",hasCodemod:!1,overrideSpec:y,packageName:l.package,replacement:l.name})}return i},"buildSocketEntries");let z;const le=S(async()=>{if(z)return z;try{return z=(await import("module-replacements-codemods")).codemods,z}catch{return{}}},"loadCodemods"),de=S(async r=>{try{const e=await le();for(const n of r)n.category!=="socket"&&e[n.packageName]&&(n.hasCodemod=!0)}catch{}},"markCodemodAvailability"),pe=S(async(r,e)=>{let n=0;try{const o=(await le())[e];if(!o)return{filesChanged:0,packageName:e};const a=o({}),i=await xr(r);for(const l of i){const x=G(l);if(x.includes(e))try{const k=await a.transform({file:{filename:l,source:x}});k!==x&&(ge(l,k,"utf8"),n++)}catch(k){process.stderr.write(`warn: codemod transform failed for ${l}: ${k instanceof Error?k.message:String(k)}
13
- `)}}}catch{}return{filesChanged:n,packageName:e}},"runCodemod"),xr=S(async r=>xe("**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}",{absolute:!0,cwd:r,ignore:["**/.*/**","**/.*","**/node_modules/**","**/dist/**","**/coverage/**","**/.git/**","**/.next/**","**/.nuxt/**"]}),"collectSourceFiles"),yr=S(async({logger:r,options:e,visConfig:n,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,x=!!e.pin;j.info(`Detected ${a.name} v${a.version}.`);const k=V(N(o,"package.json"),l),v=se(o),y=new Set(k);for(const d of v){const O=V(N(ye(o,d),"package.json"),l);for(const D of O)y.add(D)}v.length>0&&j.info(`Scanned ${String(v.length)} workspace package${v.length===1?"":"s"}.`),j.info(`Scanning dependencies...
14
- `);const s=Ve(o,a.name),f=ae(y),p=ce(y,s,a,x),h=new Set(f.map(d=>d.packageName)),g=p.filter(d=>!h.has(d.packageName)),u=[...f,...g];if(await de(u),u.length===0){j.info("No optimizations found for your dependencies.");return}const b=!!process.stdout.isTTY&&!Ne,$=e.format==="json"||!!e.json;if(b&&!i&&!$){const d=new Ze(u),O=await Pe(Ee.createElement(fr,{isDryRun:!1,store:d}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit(),D=Array.isArray(O)?O:[];if(D.length===0){j.info("No optimizations selected.");return}const L=D.filter(w=>w.category!=="socket"&&w.hasCodemod),q=D.filter(w=>w.category!=="socket"&&!w.hasCodemod),J=D.filter(w=>w.category==="socket");if(L.length>0){j.info(`
15
- Running ${String(L.length)} codemod${L.length===1?"":"s"}...
16
- `);for(const w of L){const P=await pe(o,w.packageName);P.filesChanged>0?j.success(` ${w.packageName}: ${String(P.filesChanged)} file${P.filesChanged===1?"":"s"} updated`):j.info(` ${w.packageName}: no files changed`)}}if(q.length>0){j.warn(`
17
- ${String(q.length)} selected replacement${q.length===1?"":"s"} require manual migration (no codemod available):`);for(const w of q)j.info(` ${w.packageName} → ${w.replacement}`);j.notice(" Replace usage in your source code, then remove from dependencies.")}if(J.length>0){const w=J.filter(U=>U.overrideSpec).map(U=>({original:U.packageName,spec:U.overrideSpec})),P=He(o,N(o,"package.json"),w,a,n?.editorconfig??!0);P.added.length>0&&j.success(`
18
- Added ${String(P.added.length)} override${P.added.length===1?"":"s"}.`),P.updated.length>0&&j.success(`Updated ${String(P.updated.length)} override${P.updated.length===1?"":"s"}.`)}if(J.length>0&&e.install!==!1){j.info(`
19
- Running ${a.name} install to update lockfile...`);const w=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);w!==0&&j.warn(`${a.name} install exited with code ${String(w)}. Run it manually.`)}j.info(""),j.success("Optimization complete.");return}if($){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:g.map(d=>({overrideSpec:d.overrideSpec,packageName:d.packageName,replacement:d.replacement})),total:u.length,workspaces:v.length},void 0,2)}
20
- `);return}const _=f.filter(d=>d.category==="native"),T=f.filter(d=>d.category==="preferred"),A=f.filter(d=>d.category==="micro-utility");if(_.length>0){j.info(`Native replacements (${String(_.length)}):`);for(const d of _)j.info(` ${d.hasCodemod?"⚙":" "} ${d.packageName} → ${d.replacement}`)}if(T.length>0){j.info(`
21
- Preferred alternatives (${String(T.length)}):`);for(const d of T)j.info(` ${d.hasCodemod?"⚙":" "} ${d.packageName} → ${d.replacement}`)}if(A.length>0){j.info(`
22
- Micro-utilities (${String(A.length)}):`);for(const d of A)j.info(` ${d.hasCodemod?"⚙":" "} ${d.packageName} → ${d.replacement}`)}if(g.length>0){j.info(`
23
- Socket.dev overrides (${String(g.length)}):`);for(const d of g)j.info(` ${d.packageName} → ${d.overrideSpec}`)}j.info(`
24
- Total: ${String(u.length)} optimizations available (⚙ = codemod available).`),i&&j.notice("Run without --dry-run for interactive selection.")},"execute"),Nr=Object.defineProperty({__proto__:null,buildE18eEntries:ae,buildSocketEntries:ce,collectDepsFromPkgJson:V,default:yr,discoverWorkspacePackages:se,markCodemodAvailability:de,runCodemod:pe},Symbol.toStringTag,{value:"Module"});export{se as A,ae as F,pe as I,Ve as L,ce as T,de as U,He as a,Nr as h,V as x};
1
+ import{createRequire as G}from"node:module";import{I as q,j as D,E as O,V as K,s as T,q as Q}from"../packem_shared/Table-CcVkyULl-B_ef6zfS.js";import{y as B}from"../packem_shared/index-BDmTbWX1.js";import{aJ as c,aK as X}from"./bin.js";import{d as k,f as v,r as Y,a as Z,b as ee,s as ne,c as te,e as ie,u as re,h as se,i as oe,j as ae,k as le,l as ce,m as de,n as ue,v as fe,w as ge,q as pe,t as me}from"../packem_shared/watch-loop-DWkvv2tK.js";const H=G(import.meta.url),w=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,U=e=>{if(typeof w<"u"&&w.versions&&w.versions.node){const[n,t]=w.versions.node.split(".").map(Number);if(n>22||n===22&&t>=3||n===20&&t>=16)return w.getBuiltinModule(e)}return H(e)},{createHash:y}=U("node:crypto"),he={1:"warning",2:"error"},xe={argsCheck:(e,n)=>J(e,n,!1),argsFix:(e,n)=>J(e,n,!0),bin:()=>["pnpm","exec","eslint"],cacheKey:(e,n)=>{const t=["eslint",e.declaredVersion??"unknown",e.configFile??"no-config",n.maxWarnings===void 0?"":`mw=${n.maxWarnings}`,n.quiet?"q":"",...n.extraArgs??[]];return y("sha256").update(t.join("|")).digest("hex").slice(0,16)},detect:(e,n)=>{const t=k(n,c.eslint.packageNames[0]),i=v(e,c.eslint.configFiles);if(!(!t&&!i))return{adapter:"eslint",configFile:i,declared:!!t,declaredVersion:t,root:e}},extensions:["cjs","cts","js","jsx","mjs","mts","ts","tsx","vue"],id:"eslint",kind:"lint",parse:(e,n)=>{if(!e.stdout.trim())return[];let t;try{t=JSON.parse(e.stdout)}catch{return[{adapter:"eslint",file:n.root,fixable:!1,message:`eslint output was not valid JSON (exit ${e.exitCode})`,severity:"error"}]}const i=[];for(const r of t)for(const s of r.messages)i.push({adapter:"eslint",column:s.column,endColumn:s.endColumn,endLine:s.endLine,file:r.filePath,fixable:!!s.fix,line:s.line,message:s.message,ruleId:s.ruleId??void 0,severity:s.fatal?"error":he[s.severity]??"warning"});return i}},J=(e,n,t)=>{const i=["--format","json","--no-error-on-unmatched-pattern"];return t&&i.push("--fix"),n.quiet&&i.push("--quiet"),typeof n.maxWarnings=="number"&&i.push("--max-warnings",String(n.maxWarnings)),n.extraArgs?.length&&i.push(...n.extraArgs),i.push(...e),i},we=/^([^:]+):(\d+)(?::(\d+))?\s+([\w/-]+)\s+(.+)$/,ke=e=>{const n=we.exec(e);if(!n)return;const[,t,i,r,s,a]=n;return{column:r===void 0?void 0:Number(r),file:t,line:Number(i),message:a,ruleId:s}},ve=e=>e.startsWith("/")||/^[a-z]:[\\/]/i.test(e),ye={argsCheck:(e,n)=>V(e,n,!1),argsFix:(e,n)=>V(e,n,!0),bin:()=>["pnpm","exec","markdownlint-cli2"],cacheKey:(e,n)=>{const t=["markdownlint",e.declaredVersion??"unknown",e.configFile??"no-config",n.maxWarnings===void 0?"":`mw=${n.maxWarnings}`,n.quiet?"q":"",...n.extraArgs??[]];return y("sha256").update(t.join("|")).digest("hex").slice(0,16)},detect:(e,n)=>{const t=c.markdownlint.packageNames.map(r=>k(n,r)).find(r=>r!==void 0),i=v(e,c.markdownlint.configFiles);if(!(!t&&!i))return{adapter:"markdownlint",configFile:i,declared:!!t,declaredVersion:t,root:e}},extensions:["markdown","md"],id:"markdownlint",kind:"lint",parse:(e,n)=>{const t=(e.stderr||e.stdout||"").trim();if(!t)return[];const i=[];for(const r of t.split(/\r?\n/)){const s=ke(r.trim());s&&i.push({adapter:"markdownlint",column:s.column,file:ve(s.file)?s.file:`${n.root}/${s.file}`,fixable:!0,line:s.line,message:s.message,ruleId:s.ruleId,severity:"warning"})}return i}},V=(e,n,t)=>{const i=[];return t&&i.push("--fix"),n.extraArgs?.length&&i.push(...n.extraArgs),e.length===0?i.push("**/*.md"):i.push(...e),i},$e={advice:"info",error:"error",warning:"warning"},be={argsCheck:(e,n)=>R(e,n,!1),argsFix:(e,n)=>R(e,n,!0),bin:()=>["pnpm","exec","oxlint"],cacheKey:(e,n)=>{const t=["oxlint",e.declaredVersion??"unknown",e.configFile??"no-config",n.maxWarnings===void 0?"":`mw=${n.maxWarnings}`,n.quiet?"q":"",...n.extraArgs??[]];return y("sha256").update(t.join("|")).digest("hex").slice(0,16)},detect:(e,n)=>{const t=k(n,c.oxlint.packageNames[0]),i=v(e,c.oxlint.configFiles);if(!(!t&&!i))return{adapter:"oxlint",configFile:i,declared:!!t,declaredVersion:t,root:e}},extensions:["astro","cjs","cts","js","jsx","mjs","mts","svelte","ts","tsx","vue"],id:"oxlint",kind:"lint",parse:(e,n)=>{if(!e.stdout.trim())return[];let t;try{t=JSON.parse(e.stdout)}catch{return[{adapter:"oxlint",file:n.root,fixable:!1,message:`oxlint output was not valid JSON (exit ${e.exitCode})`,severity:"error"}]}const i=[];for(const r of t.diagnostics??[]){const s=r.labels?.[0]?.span;i.push({adapter:"oxlint",column:s?.column,file:r.filename??n.root,fixable:!1,line:s?.line,message:r.message??"",ruleId:r.code,severity:$e[r.severity??""]??"warning"})}return i}},R=(e,n,t)=>{const i=["--format","json"];return t&&i.push("--fix"),n.quiet&&i.push("--quiet"),typeof n.maxWarnings=="number"&&i.push(`--max-warnings=${String(n.maxWarnings)}`),n.extraArgs?.length&&i.push(...n.extraArgs),i.push(...e),i},Ae={error:"error",info:"info",style:"info",warning:"warning"},Fe=e=>e.startsWith("/")||/^[a-z]:[\\/]/i.test(e),je=(e,n)=>e?Fe(e)?e:`${n}/${e}`:n,Ce={argsCheck:(e,n)=>L(e,n),argsFix:(e,n)=>L(e,n),bin:()=>["shellcheck"],cacheKey:(e,n)=>{const t=["shellcheck",e.declaredVersion??"unknown",e.configFile??"no-config",n.quiet?"q":"",...n.extraArgs??[]];return y("sha256").update(t.join("|")).digest("hex").slice(0,16)},detect:(e,n)=>{const t=k(n,c.shellcheck.packageNames[0]),i=v(e,c.shellcheck.configFiles);if(!(!t&&!i))return{adapter:"shellcheck",configFile:i,declared:!!t,declaredVersion:t,root:e}},extensions:["bash","ksh","sh"],id:"shellcheck",kind:"lint",parse:(e,n)=>{if(!e.stdout.trim())return[];let t;try{t=JSON.parse(e.stdout)}catch{return[{adapter:"shellcheck",file:n.root,fixable:!1,message:`shellcheck output was not valid JSON (exit ${e.exitCode})`,severity:"error"}]}const i=[];for(const r of t.comments??[])i.push({adapter:"shellcheck",column:r.column,endColumn:r.endColumn,endLine:r.endLine,file:je(r.file,n.root),fixable:!!r.fix,line:r.line,message:r.message??"",ruleId:r.code===void 0?void 0:`SC${String(r.code)}`,severity:Ae[r.level??""]??"warning"});return i}},L=(e,n)=>{const t=["--format=json1"];return n.extraArgs?.length&&t.push(...n.extraArgs),t.push(...e),t},Se={error:"error",warning:"warning"},qe={argsCheck:(e,n)=>M(e,n,!1),argsFix:(e,n)=>M(e,n,!0),bin:()=>["pnpm","exec","stylelint"],cacheKey:(e,n)=>{const t=["stylelint",e.declaredVersion??"unknown",e.configFile??"no-config",n.maxWarnings===void 0?"":`mw=${n.maxWarnings}`,n.quiet?"q":"",...n.extraArgs??[]];return y("sha256").update(t.join("|")).digest("hex").slice(0,16)},detect:(e,n)=>{const t=k(n,c.stylelint.packageNames[0]),i=v(e,c.stylelint.configFiles);if(!(!t&&!i))return{adapter:"stylelint",configFile:i,declared:!!t,declaredVersion:t,root:e}},extensions:["astro","css","less","sass","scss","svelte","vue"],id:"stylelint",kind:"lint",parse:(e,n)=>{if(!e.stdout.trim())return[];let t;try{t=JSON.parse(e.stdout)}catch{return[{adapter:"stylelint",file:n.root,fixable:!1,message:`stylelint output was not valid JSON (exit ${e.exitCode})`,severity:"error"}]}const i=[];for(const r of t)for(const s of r.warnings??[])i.push({adapter:"stylelint",column:s.column,endColumn:s.endColumn,endLine:s.endLine,file:r.source,fixable:!1,line:s.line,message:s.text??"",ruleId:s.rule,severity:Se[s.severity??""]??"warning"});return i}},M=(e,n,t)=>{const i=["--formatter","json"];return t&&i.push("--fix"),n.quiet&&i.push("--quiet"),typeof n.maxWarnings=="number"&&i.push("--max-warnings",String(n.maxWarnings)),n.extraArgs?.length&&i.push(...n.extraArgs),i.push(...e),i},We=[be,ue,xe,qe,fe,ye,Ce,ge],Te=async({logger:e,options:n,visConfig:t,workspaceRoot:i})=>{const r=i??process.cwd(),s=t?.lint,a=Y(We,s?.order),j=Z(r,a),d=ee(j,a,"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 C=l=>{const u=s?.adapters?.[l]?.extraArgs;return u&&u.length>0?[...u]:void 0},$={extraArgs:void 0,maxWarnings:typeof n.maxWarnings=="number"?n.maxWarnings:void 0,quiet:n.quiet??!1},b=Ne(n),P=n.fix?"fix":"check";let f;if(n.staged){if(f=ne(r),f===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(f.length===0){e.info(q("✓ lint: no staged files"));return}}else if(typeof n.since=="string"&&n.since.length>0){if(f=te(r,n.since),f===void 0)e.warn(`vis lint: could not resolve --since ${n.since} (not a git repo or unknown ref). Falling back to a workspace-wide run.`);else if(f.length===0){e.info(q(`✓ lint: no files changed since ${n.since}`));return}}const W=b.length>0?b:void 0,E=X(r,void 0,void 0,!0),S=n.format??"human";S==="human"&&n.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 N=async l=>{const u=l!==void 0&&l.length>0&&W===void 0,m=[];for(const{adapter:o,presence:x}of d){let g;if(u){if(g=re(l,o.extensions),g.length===0)continue}else g=W??l??["."];const F=C(o.id),I={adapter:o,files:g,presence:x};F&&(I.options={...$,extraArgs:F}),m.push(I)}if(m.length===0)return;const z=await se(m,$,P,{cacheRoot:E}),A=m.map((o,x)=>{const g=z[x],F=o.adapter.parse(g,o.presence);return{adapter:o.adapter,durationMs:g.durationMs,exitCode:g.exitCode,findings:F}}),h=oe(A.map(o=>({adapter:o.adapter.id,durationMs:o.durationMs,exitCode:o.exitCode,findingCount:o.findings.length,findings:o.findings}))),p=S==="human"?void 0:ae({cwd:r,target:n.output});try{switch(S){case"github":{p.write(de({runs:A.map(o=>({findings:o.findings})),workspaceRoot:r}));break}case"json":{p.write(`${JSON.stringify({findings:h.findings,runs:h.runs},null,2)}
2
+ `);break}case"junit":{p.write(ce({runs:A.map(o=>({adapter:o.adapter.id,durationMs:o.durationMs,findings:o.findings})),workspaceRoot:r}));break}case"minimal":{Ie(h.findings,r,p);break}case"sarif":{p.write(le({runs:A.map(o=>({adapter:o.adapter.id,findings:o.findings,presence:m.find(x=>x.adapter.id===o.adapter.id)?.presence})),workspaceRoot:r}));break}default:_e(h.findings,r,e)}}finally{p?.close()}const _=me(h);_!==0&&(process.exitCode=_)};if(n.watch){const l=[...new Set(d.flatMap(({adapter:u})=>u.extensions))];await ie({extensions:l,initialFiles:f,label:"lint",log:u=>{e.info(u)},runCycle:N,workspaceRoot:r});return}await N(f)},Ne=e=>{const n=e;return[...n._??n.args??[]]},_e=(e,n,t)=>{if(e.length===0){t.info(q("✓ lint: no findings"));return}const i=pe(e);for(const[a,j]of i){t.info(D(B(n,a)));for(const d of j){const C=Oe(d),$=Je(d.severity),b=d.ruleId?O(` ${d.ruleId}`):"";t.info(` ${O(C)} ${$} ${d.message}${b}`)}}const r=e.filter(a=>a.severity==="error").length,s=e.filter(a=>a.severity==="warning").length;t.info(""),t.info(`${K(`${String(r)} error${r===1?"":"s"}`)}, ${T(`${String(s)} warning${s===1?"":"s"}`)}`)},Ie=(e,n,t)=>{for(const i of e){const r=B(n,i.file),s=i.line??"",a=i.column??"";t.write(`${i.adapter} ${r} ${String(s)} ${String(a)} ${i.severity} ${i.ruleId??""} ${i.message}
3
+ `)}},Oe=e=>e.line===void 0?"":e.column===void 0?String(e.line):`${String(e.line)}:${String(e.column)}`,Je=e=>e==="error"?K("error"):e==="warning"?T("warn "):Q("info ");export{Te as default};
@@ -1,25 +1,6 @@
1
- var fe=Object.defineProperty;var b=(e,s)=>fe(e,"name",{value:s,configurable:!0});import{createRequire as le}from"node:module";import{I as w,j as v,E as u,q as R,e as x,T as D}from"../packem_shared/Table-3pFgIUZ2-DABgc6rj.js";import{M as W,l as _,B as ue,z as P}from"../packem_shared/readFileSync-DseCu8sg-DEq4Fn3a.js";import{s as j,E as me,d as I}from"./config.js";import{o as oe}from"../packem_shared/index-DH-5hsrC.js";import{V as ke,u as Y,a5 as F,aP as he,aO as L,b as Z,aW as Q,ai as ye,a as $e,aX as Pe,aY as ve,aZ as we,a_ as De}from"./bin.js";import{l as be}from"../packem_shared/missing-package-json-DKAwoiWK.js";const ge=le(import.meta.url),z=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,de=b(e=>{if(typeof z<"u"&&z.versions&&z.versions.node){const[s,o]=z.versions.node.split(".").map(Number);if(s>22||s===22&&o>=3||s===20&&o>=16)return z.getBuiltinModule(e)}return ge(e)},"__cjs_getBuiltinModule"),{readFileSync:se,writeFileSync:X}=de("node:fs");var xe=Object.defineProperty,A=b((e,s)=>xe(e,"name",{value:s,configurable:!0}),"r$3");const Ne=A(e=>/[*?[\]{}!]/.test(e),"isGlob"),Je=A(e=>typeof e=="string"?e:e.reason,"ruleReason"),Te=A(e=>typeof e=="string"?void 0:e.replacement,"ruleReplacement"),ee=A((e,s)=>e.some(o=>oe(o,s)),"matchesAnyGlob"),te=A((e,s)=>{if(typeof e=="string")return!0;const o=Array.isArray(e.packages)&&e.packages.length>0,t=Array.isArray(e.paths)&&e.paths.length>0;return!!(!o&&!t||o&&s.packageName!==void 0&&ee(e.packages,s.packageName)||t&&ee(e.paths,s.packageDir))},"ruleAppliesToInstance"),Se=A((e,s)=>{const o=s[e.depName];if(o!==void 0&&te(o,e))return{pattern:e.depName,rule:o};for(const[t,r]of Object.entries(s))if(Ne(t)&&oe(t,e.depName)&&te(r,e))return{pattern:t,rule:r}},"findMatchingRule"),Re=A((e,s)=>{if(Object.keys(s).length===0)return[];const o=[];for(const t of e){if(t.isInternal)continue;const r=Se(t,s);r&&o.push({depName:t.depName,depType:t.depType,matchedPattern:r.pattern,packageDir:t.packageDir,packageJsonPath:t.packageJsonPath,packageName:t.packageName,reason:Je(r.rule),replacement:Te(r.rule),specifier:t.specifier})}return o},"lintBannedDeps");var je=Object.defineProperty,H=b((e,s)=>je(e,"name",{value:s,configurable:!0}),"m");const Me=new Set(["dependencies","devDependencies","peerDependencies"]),We=H(e=>e.startsWith("catalog:"),"isCatalogReference"),Ee=H(e=>e.startsWith("workspace:"),"isWorkspaceReference"),Ie=H((e,s)=>{if(!e)return!1;for(const o of e.values())if(o.has(s))return!0;return!1},"isPinnedInAnyCatalog"),Fe=H((e,s={})=>{const o=s.min??3,t=new Set(s.ignoreDeps),r=e.filter(i=>i.isInternal||!Me.has(i.depType)||Ee(i.specifier)||s.dep!==void 0&&i.depName!==s.dep?!1:!t.has(i.depName)),n=new Map;for(const i of r){const p=n.get(i.depName);p?p.push(i):n.set(i.depName,[i])}const a=[];for(const[i,p]of n){if(Ie(s.catalogs,i)||p.some(m=>We(m.specifier)))continue;const c=new Map;for(const m of p){let d=c.get(m.specifier);d||(d=new Set,c.set(m.specifier,d)),d.add(m.packageJsonPath)}const f=[...c.entries()].sort((m,d)=>m[1].size!==d[1].size?d[1].size-m[1].size:m[0].localeCompare(d[0]))[0];!f||f[1].size<o||a.push({catalogName:"default",depName:i,instanceCount:f[1].size,specifier:f[0]})}return a.sort((i,p)=>i.depName.localeCompare(p.depName))},"proposeCatalogAdditions"),Ce=H((e,s)=>{if(s.length===0)return;const o=W(e,"pnpm-workspace.yaml"),t=_(o)?se(o,"utf8"):"",r=t.includes(`\r
2
- `)?`\r
3
- `:`
4
- `,n=s.filter(d=>d.catalogName==="default").sort((d,g)=>d.depName.localeCompare(g.depName));if(n.length===0)return;const a=t.length>0?t.split(r):[],i=a.findIndex(d=>/^catalog\s*:\s*$/.test(d));if(i===-1){const d=["catalog:"];for(const $ of n)d.push(` ${$.depName}: "${$.specifier}"`);let g=0;for(;g<a.length&&(a[g]??"").trim().length===0;)g+=1;const k=[...a.slice(0,g),...d,"",...a.slice(g)].join(r);return X(o,k.endsWith(r)?k:`${k}${r}`),o}let p=a.length;const c=new Set;for(let d=i+1;d<a.length;d+=1){const g=a[d]??"",k=g.trimStart();if(g.length===0)continue;if(g.length-k.length===0&&k.length>0&&!k.startsWith("#")){p=d;break}const $=/^([\w./@-]+)\s*:/.exec(k);$?.[1]&&c.add($[1])}const f=[];for(const d of n)c.has(d.depName)||f.push(` ${d.depName}: "${d.specifier}"`);if(f.length===0)return;const m=[...a.slice(0,p),...f,...a.slice(p)].join(r);return X(o,m.endsWith(r)?m:`${m}${r}`),o},"applyCatalogProposals"),Ve=H((e,s)=>{if(s.length===0)return"";const o=W(e,"pnpm-workspace.yaml"),t=_(o)?se(o,"utf8"):"",r=[...s].sort((i,p)=>i.depName.localeCompare(p.depName)),n=["--- pnpm-workspace.yaml","+++ pnpm-workspace.yaml"],a=t.includes(`\r
5
- `)?`\r
6
- `:`
7
- `;if((t.length>0?t.split(a):[]).findIndex(i=>/^catalog\s*:\s*$/.test(i))===-1){n.push("@@ +1 @@","+catalog:");for(const i of r)n.push(`+ ${i.depName}: "${i.specifier}"`)}else{n.push("@@ catalog: @@");for(const i of r)n.push(`+ ${i.depName}: "${i.specifier}"`)}return n.join(a)},"renderCatalogProposalsDiff");var Ae=Object.defineProperty,ae=b((e,s)=>Ae(e,"name",{value:s,configurable:!0}),"l");const Oe=ae(e=>{const s=[],o=ke(e);if(o){const r=W(e,"pnpm-workspace.yaml");for(const n of o)n.startsWith("!")||Y(e,[n]).length===0&&s.push({pattern:n,source:"pnpm-workspace.yaml",sourcePath:r})}const t=W(e,"package.json");if(_(t)){const r=j(t).workspaces,n=Array.isArray(r)?r:r?.packages;if(n)for(const a of n)typeof a!="string"||a.startsWith("!")||Y(e,[a]).length===0&&s.push({pattern:a,source:"package.json",sourcePath:t})}return s},"lintDeadWorkspacePatterns"),He=ae((e,s={})=>{const{useEditorconfig:o}=s,t=new Map;for(const n of e){const a=t.get(n.sourcePath);a?a.push(n):t.set(n.sourcePath,[n])}const r=[];for(const[n,a]of t){const i=new Set(a.map(f=>f.pattern));if(n.endsWith(".yaml")||n.endsWith(".yml")){const f=ue(n).split(`
8
- `).filter(m=>{const d=m.trim();if(!d.startsWith("- "))return!0;const g=d.slice(2).replaceAll(/^['"]|['"]$/g,"");return!i.has(g)}).join(`
9
- `);me(n,f,{overwrite:!0}),r.push(n);continue}const p=j(n),c=p.workspaces;Array.isArray(c)?p.workspaces=c.filter(f=>typeof f!="string"||!i.has(f)):c&&Array.isArray(c.packages)&&(c.packages=c.packages.filter(f=>typeof f!="string"||!i.has(f))),I(n,p,{indent:F(n,{useEditorconfig:o}),overwrite:!0}),r.push(n)}return r},"applyDeadWorkspacePatternFixes");var ze=Object.defineProperty,ne=b((e,s)=>ze(e,"name",{value:s,configurable:!0}),"f$2");const _e=["dependencies","devDependencies","peerDependencies","optionalDependencies"],Be=ne((e,s={})=>{const o=new Set(s.ignoreBlocks),t=he(e),r=[];for(const n of t){const a=W(e,n,"package.json"),i=L(a);if(!i)continue;const p=typeof i.name=="string"?i.name:void 0;for(const c of _e){if(o.has(c))continue;const f=i[c];typeof f=="object"&&f!==null&&!Array.isArray(f)&&Object.keys(f).length===0&&r.push({depType:c,packageDir:n,packageJsonPath:a,packageName:p})}}return r},"lintEmptyDeps"),Le=ne((e,s={})=>{const{useEditorconfig:o}=s,t=new Map;for(const n of e){const a=t.get(n.packageJsonPath);a?a.push(n):t.set(n.packageJsonPath,[n])}const r=[];for(const[n,a]of t){const i=j(n);for(const p of a){const c=i[p.depType];typeof c=="object"&&c!==null&&!Array.isArray(c)&&Object.keys(c).length===0&&Reflect.deleteProperty(i,p.depType)}I(n,i,{indent:F(n,{useEditorconfig:o}),overwrite:!0}),r.push(n)}return r},"applyEmptyDepsFixes");var qe=Object.defineProperty,Ue=b((e,s)=>qe(e,"name",{value:s,configurable:!0}),"r$2");const Ge=["dependencies","devDependencies","optionalDependencies","peerDependencies"],Ke=Ue((e,s={})=>{const o=new Set(s.depTypes??Ge),t=new Set(s.ignoreDeps),r=new Map;for(const a of e)a.packageDir!=="."||!o.has(a.depType)||r.set(a.depName,{depType:a.depType,specifier:a.specifier});if(r.size===0)return[];const n=[];for(const a of e){if(a.packageDir==="."||!o.has(a.depType)||t.has(a.depName))continue;const i=r.get(a.depName);i&&n.push({childSpecifier:a.specifier,depName:a.depName,depType:a.depType,packageDir:a.packageDir,packageJsonPath:a.packageJsonPath,packageName:a.packageName,rootDepType:i.depType,rootSpecifier:i.specifier})}return n},"lintRedefineRoot");var Xe=Object.defineProperty,re=b((e,s)=>Xe(e,"name",{value:s,configurable:!0}),"a$1");const Ye=re((e,s)=>{if(!s)return[];const o=W(e,"package.json"),t=L(o);if(!t)return[];if(t.private!==!0)return[];const r=t.dependencies;if(typeof r!="object"||r===null||Array.isArray(r))return[];const n=Object.keys(r);return n.length===0?[]:[{depNames:n,packageJsonPath:o}]},"lintRootDeps"),Ze=re((e,s={})=>{const{useEditorconfig:o}=s,t=[];for(const r of e){const n=j(r.packageJsonPath),a=n.dependencies;if(typeof a!="object"||a===null)continue;const i=a;n.devDependencies??={};const p=n.devDependencies;for(const c of r.depNames){const f=i[c];typeof f=="string"&&(c in p||(p[c]=f),Reflect.deleteProperty(i,c))}Object.keys(i).length===0&&Reflect.deleteProperty(n,"dependencies"),I(r.packageJsonPath,n,{indent:F(r.packageJsonPath,{useEditorconfig:o}),overwrite:!0}),t.push(r.packageJsonPath)}return t},"applyRootDepsFixes");var Qe=Object.defineProperty,ie=b((e,s)=>Qe(e,"name",{value:s,configurable:!0}),"r$1");const et=/^[a-z][\w-]*@\S+$/i,tt=ie((e,s,o={})=>{if(!s)return[];const t=W(e,"package.json"),r=L(t);if(!r)return[];const n=r.packageManager;return typeof n=="string"&&et.test(n)?[]:[{packageJsonPath:t,suggested:o.suggested}]},"lintRootPackageManager"),ot=ie((e,s={})=>{const{useEditorconfig:o}=s,t=[];for(const r of e){if(!r.suggested)continue;const n=j(r.packageJsonPath);n.packageManager=r.suggested,I(r.packageJsonPath,n,{indent:F(r.packageJsonPath,{useEditorconfig:o}),overwrite:!0}),t.push(r.packageJsonPath)}return t},"applyRootPackageManagerFixes");var st=Object.defineProperty,pe=b((e,s)=>st(e,"name",{value:s,configurable:!0}),"a");const at=pe((e,s)=>{if(!s)return[];const o=W(e,"package.json"),t=L(o);return t?t.private===!0?[]:[{packageJsonPath:o,rawValue:t.private}]:[]},"lintRootPrivate"),nt=pe((e,s={})=>{const{useEditorconfig:o}=s,t=[];for(const r of e){const n=j(r.packageJsonPath);let a=n;if("private"in n)n.private=!0;else{const{name:i,version:p,...c}=n,f={};i!==void 0&&(f.name=i),p!==void 0&&(f.version=p),f.private=!0;for(const[m,d]of Object.entries(c))f[m]=d;a=f}I(r.packageJsonPath,a,{indent:F(r.packageJsonPath,{useEditorconfig:o}),overwrite:!0}),t.push(r.packageJsonPath)}return t},"applyRootPrivateFixes");var rt=Object.defineProperty,K=b((e,s)=>rt(e,"name",{value:s,configurable:!0}),"p$1");const it=[{id:"react",label:"React",members:["react","react-dom","react-test-renderer"]},{id:"next",label:"Next.js",members:["next","@next/font","@next/bundle-analyzer","@next/mdx","@next/third-parties","@next/eslint-plugin-next","eslint-config-next"]},{id:"babel",label:"Babel",prefixes:["@babel/"]},{id:"storybook",label:"Storybook",members:["storybook","sb"],prefixes:["@storybook/"]},{id:"vitest",label:"Vitest",members:["vitest"],prefixes:["@vitest/"]},{id:"playwright",label:"Playwright",members:["playwright","@playwright/test"]},{id:"trpc",label:"tRPC",prefixes:["@trpc/"]},{id:"prisma",label:"Prisma",members:["prisma"],prefixes:["@prisma/"]},{id:"turborepo",label:"Turborepo",members:["turbo","turbo-ignore","@turbo/gen","eslint-config-turbo","eslint-plugin-turbo"]},{id:"typescript-eslint",label:"typescript-eslint",members:["typescript-eslint"],prefixes:["@typescript-eslint/"]},{id:"eslint-stylistic",label:"ESLint Stylistic",prefixes:["@stylistic/"]},{id:"lexical",label:"Lexical",members:["lexical"],prefixes:["@lexical/"]},{id:"nx",label:"Nx",prefixes:["@nx/","@nrwl/"]}],pt=new Set(["dependencies","devDependencies","peerDependencies"]),ct=K((e,s)=>{for(const o of e)if(o.members?.includes(s)||o.prefixes?.some(t=>s.startsWith(t)))return o},"familyForDep"),ft=K(e=>e.startsWith("workspace:")||e.startsWith("catalog:"),"isWorkspaceOrCatalogReference"),lt=K((e,s={})=>{const o=new Set(s.ignoreFamilies),t=new Map;for(const i of it)t.set(i.id,i);for(const i of s.extraFamilies??[])t.set(i.id,i);const r=[...t.values()],n=new Map;for(const i of e){if(i.isInternal||!pt.has(i.depType)||ft(i.specifier))continue;const p=ct(r,i.depName);if(!p||o.has(p.id))continue;const c=n.get(p.id),f={depName:i.depName,depType:i.depType,packageDir:i.packageDir,packageJsonPath:i.packageJsonPath,packageName:i.packageName,specifier:i.specifier};c?c.push(f):n.set(p.id,[f])}const a=[];for(const[i,p]of n){const c=[...new Set(p.map(m=>m.specifier))];if(c.length<2)continue;const f=t.get(i);f&&a.push({family:i,familyLabel:f.label??i,members:p,specifiers:c})}return a},"lintSimilarDeps");var gt=Object.defineProperty,B=b((e,s)=>gt(e,"name",{value:s,configurable:!0}),"r");const dt=B(e=>e.startsWith("@types/"),"isTypesPackage"),ut=B((e,s={})=>{const o=new Set(s.ignoreDeps),t=new Map,r=B(a=>{const i=t.get(a);if(i!==void 0)return i;try{const p=j(a).private===!0;return t.set(a,p),p}catch{return t.set(a,!1),!1}},"isPrivate"),n=[];for(const a of e)a.depType==="dependencies"&&dt(a.depName)&&(o.has(a.depName)||r(a.packageJsonPath)&&n.push({childSpecifier:a.specifier,depName:a.depName,packageDir:a.packageDir,packageJsonPath:a.packageJsonPath,packageName:a.packageName}));return n},"lintTypesInDeps"),mt=B((e,s={})=>{const{useEditorconfig:o}=s,t=new Map;for(const n of e){const a=t.get(n.packageJsonPath);a?a.push(n):t.set(n.packageJsonPath,[n])}const r=[];for(const[n,a]of t){const i=j(n),p=i.dependencies;if(typeof p!="object"||p===null)continue;const c=p;i.devDependencies??={};const f=i.devDependencies;for(const m of a){const d=c[m.depName];typeof d=="string"&&(m.depName in f||(f[m.depName]=d),Reflect.deleteProperty(c,m.depName))}Object.keys(c).length===0&&Reflect.deleteProperty(i,"dependencies"),I(n,i,{indent:F(n,{useEditorconfig:o}),overwrite:!0}),r.push(n)}return r},"applyTypesInDepsFixes");var kt=Object.defineProperty,q=b((e,s)=>kt(e,"name",{value:s,configurable:!0}),"f");const ht=q(e=>e.startsWith("workspace:"),"isWorkspaceSpecifier"),yt=q((e,s={})=>{const o=s.fixSpecifier??"workspace:*",t=[];for(const r of e)r.isInternal&&(ht(r.specifier)||t.push({depName:r.depName,depType:r.depType,fix:o,packageDir:r.packageDir,packageJsonPath:r.packageJsonPath,packageName:r.packageName,specifier:r.specifier}));return t},"lintWorkspaceProtocol"),$t=q((e,s,o,t)=>{const r=s.split(".");let n=e;for(let p=0;p<r.length-1;p+=1){const c=r[p],f=n[c];(typeof f!="object"||f===null)&&(n[c]={}),n=n[c]}const a=r.at(-1);let i=n[a];(typeof i!="object"||i===null)&&(i={},n[a]=i),i[o]=t},"setNestedField"),Pt=q((e,s={})=>{const{useEditorconfig:o}=s,t=new Map;for(const n of e){const a=t.get(n.packageJsonPath);a?a.push(n):t.set(n.packageJsonPath,[n])}const r=[];for(const[n,a]of t){const i=j(n);for(const p of a)if(p.depType.includes("."))$t(i,p.depType,p.depName,p.fix);else{const c=i[p.depType];typeof c=="object"&&c!==null&&(c[p.depName]=p.fix)}I(n,i,{indent:F(n,{useEditorconfig:o}),overwrite:!0}),r.push(n)}return r},"applyWorkspaceProtocolFixes");var vt=Object.defineProperty,C=b((e,s)=>vt(e,"name",{value:s,configurable:!0}),"p");const wt=new Set(["dependencies","devDependencies","peerDependencies"]),Dt=C(e=>e.startsWith("catalog:"),"isCatalogReference"),bt=C(e=>e.startsWith("workspace:"),"isWorkspaceReference"),xt=C(e=>{if(!e.startsWith("catalog:"))return;const s=e.slice(8);return s===""?"default":s},"catalogNameOf"),Nt=C((e,s)=>{if(e.get("default")?.has(s))return"default";const o=[...e.keys()].filter(t=>t!=="default").sort();for(const t of o)if(e.get(t)?.has(s))return t},"findCatalogPinning"),Jt=C(e=>e==="default"?"catalog:":`catalog:${e}`,"buildCatalogSpecifier"),Tt=C((e,s)=>{const o=[...e].sort((r,n)=>(r.packageName??r.packageDir).localeCompare(n.packageName??n.packageDir));let t;for(const r of o){const n=Z(r.specifier);if(!n)continue;if(!t){t=r;continue}const a=Z(t.specifier);if(!a){t=r;continue}const i=Q(a,n),p=Q(n,a);(s==="highest"&&i||s==="lowest"&&p)&&(t=r)}if(t)return{canonical:t,canonicalSource:t.packageName??t.packageDir}},"pickCanonicalBySemver"),St=C((e,s={})=>{const o=s.resolve??"highest",t=new Set(s.ignoreDeps),r=[],n=e.filter(i=>i.isInternal||!wt.has(i.depType)||bt(i.specifier)||s.dep!==void 0&&i.depName!==s.dep?!1:!t.has(i.depName)),a=new Map;for(const i of n){const p=a.get(i.depName);p?p.push(i):a.set(i.depName,[i])}for(const[i,p]of a){const c=s.pinned?.get(i);if(c!==void 0){for(const g of p)g.specifier!==c&&r.push({canonicalSource:"cli:--pin",depName:i,depType:g.depType,fix:c,packageDir:g.packageDir,packageJsonPath:g.packageJsonPath,packageName:g.packageName,specifier:g.specifier});continue}if(o==="catalog"){const{catalogs:g}=s;if(!g)continue;const k=Nt(g,i);if(!k)continue;const $=Jt(k);for(const T of p)xt(T.specifier)!==k&&r.push({canonicalSource:`catalog:${k}`,depName:i,depType:T.depType,fix:$,packageDir:T.packageDir,packageJsonPath:T.packageJsonPath,packageName:T.packageName,specifier:T.specifier});continue}const f=p.filter(g=>!Dt(g.specifier));if(f.length<2||new Set(f.map(g=>g.specifier)).size<=1)continue;const m=Tt(f,o);if(!m)continue;const d=m.canonical.specifier;for(const g of f)g.specifier!==d&&r.push({canonicalSource:m.canonicalSource,depName:i,depType:g.depType,fix:d,packageDir:g.packageDir,packageJsonPath:g.packageJsonPath,packageName:g.packageName,specifier:g.specifier})}return r},"lintWorkspaceVersions"),Rt=C((e,s={})=>{const{useEditorconfig:o}=s,t=new Map;for(const n of e){const a=t.get(n.packageJsonPath);a?a.push(n):t.set(n.packageJsonPath,[n])}const r=[];for(const[n,a]of t){const i=j(n);for(const p of a){const c=i[p.depType];typeof c=="object"&&c!==null&&(c[p.depName]=p.fix)}I(n,i,{indent:F(n,{useEditorconfig:o}),overwrite:!0}),r.push(n)}return r},"applyWorkspaceVersionsFixes");var jt=Object.defineProperty,y=b((e,s)=>jt(e,"name",{value:s,configurable:!0}),"d");const Mt=y(e=>{if(_(W(e,"pnpm-workspace.yaml")))return!0;const s=W(e,"package.json");if(!_(s))return!1;try{return j(s).workspaces!==void 0}catch{return!1}},"detectWorkspaceConfig"),V=y((e,s)=>{const o=new Map;for(const t of e){const r=s(t),n=o.get(r);n?n.push(t):o.set(r,[t])}return o},"groupBy"),Wt=y((e,s,o,t)=>{if(e.length===0){t.info(w("✓ workspace-protocol: no violations"));return}const r=o?"Fixed":"Found",n=o?R:x;t.info(n(v(`${r} ${String(e.length)} workspace-protocol violation${e.length===1?"":"s"}`)));for(const[a,i]of V(e,p=>p.packageName??p.packageJsonPath)){const p=P(s,i[0].packageJsonPath);t.info(` ${v(a)} ${u(`(${p})`)}`);for(const c of i){const f=o?R("→"):x("→");t.info(` ${u(c.depType)} ${c.depName}: ${D(c.specifier)} ${f} ${w(c.fix)}`)}}o||t.info(u(" Run with --fix to rewrite specifiers in place."))},"printWorkspaceProtocolHuman"),Et=y((e,s,o)=>{if(e.length===0){o.info(w("✓ redefine-root: no violations"));return}o.info(x(v(`Found ${String(e.length)} dep${e.length===1?"":"s"} re-declared from root`)));for(const[t,r]of V(e,n=>n.packageName??n.packageJsonPath)){const n=P(s,r[0].packageJsonPath);o.info(` ${v(t)} ${u(`(${n})`)}`);for(const a of r)o.info(` ${u(a.depType)} ${a.depName}: ${D(a.childSpecifier)} ${u(`(root ${a.rootDepType}: ${a.rootSpecifier})`)}`)}o.info(u(" Remove these from child package.json files — root pin will resolve."))},"printRedefineRootHuman"),It=y((e,s,o,t)=>{if(e.length===0){t.info(w("✓ workspace-versions: no drift"));return}const r=o?"Fixed":"Found",n=o?R:x;t.info(n(v(`${r} ${String(e.length)} workspace-version drift${e.length===1?"":"s"}`)));for(const[a,i]of V(e,p=>p.depName)){const p=i[0].fix,c=i[0].canonicalSource;t.info(` ${v(a)} ${u(`canonical: ${p} (from ${c})`)}`);for(const f of i){const m=P(s,f.packageJsonPath),d=f.packageName??m,g=o?R("→"):x("→");t.info(` ${d} ${u(`(${m})`)} ${u(f.depType)}: ${D(f.specifier)} ${g} ${w(f.fix)}`)}}o||t.info(u(" Run with --fix to align drifting specifiers."))},"printWorkspaceVersionsHuman"),Ft=y((e,s,o)=>{if(e.length===0){o.info(w("✓ banned-deps: no violations"));return}o.info(D(v(`Found ${String(e.length)} banned dep${e.length===1?"":"s"}`)));for(const[t,r]of V(e,n=>n.packageName??n.packageJsonPath)){const n=P(s,r[0].packageJsonPath);o.info(` ${v(t)} ${u(`(${n})`)}`);for(const a of r){const i=a.replacement?` ${u("→")} ${w(a.replacement)}`:"";o.info(` ${u(a.depType)} ${D(a.depName)}${i}`),o.info(` ${u(a.reason)}`)}}},"printBannedDepsHuman"),Ct=y((e,s,o,t)=>{if(e.length===0){t.info(w("✓ catalog-proposals: nothing worth promoting"));return}const r=o?"Added":"Would add",n=o?R:x;t.info(n(v(`${r} ${String(e.length)} catalog entr${e.length===1?"y":"ies"}`)));for(const a of e)t.info(` ${v(a.depName)}: ${w(a.specifier)} ${u(`(${String(a.instanceCount)} packages agree)`)}`);if(!o){const a=Ve(s,e);if(a){t.info(""),t.info(u("Proposed pnpm-workspace.yaml changes:"));for(const i of a.split(`
10
- `))i.startsWith("+")?t.info(w(i)):i.startsWith("-")?t.info(D(i)):t.info(u(i))}t.info(u(" Run with --fix to write these entries to pnpm-workspace.yaml."))}},"printCatalogProposalsHuman"),Vt=y((e,s,o,t)=>{if(e.length===0){t.info(w("✓ custom-types: no engines / packageManager / volta drift"));return}const r=o?"Fixed":"Found",n=o?R:x;t.info(n(v(`${r} ${String(e.length)} custom-type drift${e.length===1?"":"s"}`)));for(const[a,i]of V(e,p=>`${p.customType} ${p.depName}`)){const p=i[0].fix,c=i[0].canonicalSource;t.info(` ${v(a)} ${u(`canonical: ${p} (from ${c})`)}`);for(const f of i){const m=P(s,f.packageJsonPath),d=f.packageName??m,g=o?R("→"):x("→");t.info(` ${d} ${u(`(${m})`)}: ${D(f.specifier)} ${g} ${w(f.fix)}`)}}o||t.info(u(" Run with --fix to align engines/packageManager/volta versions."))},"printCustomTypesHuman"),At=y((e,s,o,t)=>{if(e.length===0){t.info(w("✓ empty-deps: no empty dependency blocks"));return}const r=o?"Removed":"Found",n=o?R:x;t.info(n(v(`${r} ${String(e.length)} empty dependency block${e.length===1?"":"s"}`)));for(const[a,i]of V(e,p=>p.packageName??p.packageJsonPath)){const p=P(s,i[0].packageJsonPath);t.info(` ${v(a)} ${u(`(${p})`)}`);for(const c of i)t.info(` ${u(c.depType)}: ${D("{}")}`)}o||t.info(u(" Run with --fix to drop empty blocks."))},"printEmptyDepsHuman"),Ot=y((e,s,o,t)=>{if(e.length===0){t.info(w('✓ root-private: root package.json is "private": true'));return}const r=o?"Set":"Missing",n=o?R:D;for(const a of e){const i=P(s,a.packageJsonPath);if(t.info(n(v(`${r} "private": true on root ${u(`(${i})`)}`))),!o){const p=a.rawValue===void 0?"absent":JSON.stringify(a.rawValue);t.info(` ${u("current:")} ${D(p)}`)}}o||t.info(u(' Run with --fix to set "private": true.'))},"printRootPrivateHuman"),Ht=y((e,s,o,t)=>{if(e.length===0){t.info(w("✓ root-package-manager: packageManager field present"));return}const r=o?"Set":"Missing",n=o?R:D;for(const a of e){const i=P(s,a.packageJsonPath);t.info(n(v(`${r} packageManager on root ${u(`(${i})`)}`))),!o&&!a.suggested&&t.info(u(" no canonical specifier configured (set policy.rootPackageManager.suggested to enable --fix)"))}o||t.info(u(' e.g. "packageManager": "pnpm@10.32.1"'))},"printRootPackageManagerHuman"),zt=y((e,s,o,t)=>{if(e.length===0){t.info(w("✓ root-deps: no runtime dependencies on private root"));return}const r=o?"Moved":"Found",n=o?R:x;for(const a of e){const i=P(s,a.packageJsonPath);t.info(n(v(`${r} ${String(a.depNames.length)} runtime dep${a.depNames.length===1?"":"s"} on private root ${u(`(${i})`)}`)));for(const p of a.depNames)t.info(` ${D(p)}`)}o||t.info(u(" Run with --fix to move them to devDependencies."))},"printRootDepsHuman"),_t=y((e,s)=>{if(e.length===0){s.info(w("✓ missing-package-json: every workspace dir has a package.json"));return}s.info(x(v(`Found ${String(e.length)} workspace dir${e.length===1?"":"s"} without a package.json`)));for(const o of e)s.info(` ${D(o.packageDir)}`);s.info(u(" Either delete the directory or scaffold a package.json (vis create)."))},"printMissingPackageJsonHuman"),Bt=y((e,s,o)=>{if(e.length===0){o.info(w("✓ dead-workspace-pattern: every workspace pattern matches at least one package"));return}const t=s?"Removed":"Found",r=s?R:x;o.info(r(v(`${t} ${String(e.length)} unmatched workspace pattern${e.length===1?"":"s"}`)));for(const[n,a]of V(e,i=>i.source)){o.info(` ${v(n)}`);for(const i of a)o.info(` ${D(i.pattern)}`)}s||o.info(u(" Run with --fix to drop dead patterns."))},"printDeadWorkspacePatternsHuman"),Lt=y((e,s,o,t)=>{if(e.length===0){t.info(w("✓ types-in-deps: no @types/* in dependencies of private packages"));return}const r=o?"Moved":"Found",n=o?R:x;t.info(n(v(`${r} ${String(e.length)} @types/* dep${e.length===1?"":"s"} in dependencies`)));for(const[a,i]of V(e,p=>p.packageName??p.packageJsonPath)){const p=P(s,i[0].packageJsonPath);t.info(` ${v(a)} ${u(`(${p})`)}`);for(const c of i)t.info(` ${D(c.depName)} ${u(c.childSpecifier)}`)}o||t.info(u(" Run with --fix to move them to devDependencies."))},"printTypesInDepsHuman"),qt=y((e,s,o)=>{if(e.length===0){o.info(w("✓ similar-deps: every related dep family is in sync"));return}o.info(x(v(`Found ${String(e.length)} family${e.length===1?"":" families"} with version drift`)));for(const t of e){o.info(` ${v(t.familyLabel)} ${u(`(${t.specifiers.join(", ")})`)}`);for(const r of t.members){const n=P(s,r.packageJsonPath),a=r.packageName??n;o.info(` ${a} ${u(`(${n})`)} ${u(r.depType)}: ${D(r.depName)}@${x(r.specifier)}`)}}o.info(u(" Pick a single specifier per family and align by hand — auto-fix is unsafe across name boundaries."))},"printSimilarDepsHuman"),Ut=y((e,s,o,t,r)=>{let n=!0;const a=y(i=>{n||r.info(""),n=!1,i()},"section");t.workspaceProtocol&&a(()=>{Wt(e.workspaceProtocol??[],s,o.workspaceProtocol,r)}),t.redefineRoot&&a(()=>{Et(e.redefineRoot??[],s,r)}),t.workspaceVersions&&a(()=>{It(e.workspaceVersions??[],s,o.workspaceVersions,r)}),t.customTypes&&a(()=>{Vt(e.customTypes??[],s,o.customTypes,r)}),e.catalogProposals!==void 0&&a(()=>{Ct(e.catalogProposals??[],s,o.catalogProposals,r)}),t.bannedDeps&&a(()=>{Ft(e.bannedDeps??[],s,r)}),t.emptyDeps&&a(()=>{At(e.emptyDeps??[],s,o.emptyDeps,r)}),t.rootPrivate&&a(()=>{Ot(e.rootPrivate??[],s,o.rootPrivate,r)}),t.rootPackageManager&&a(()=>{Ht(e.rootPackageManager??[],s,o.rootPackageManager,r)}),t.rootDeps&&a(()=>{zt(e.rootDeps??[],s,o.rootDeps,r)}),t.missingPackageJson&&a(()=>{_t(e.missingPackageJson??[],r)}),t.deadWorkspacePatterns&&a(()=>{Bt(e.deadWorkspacePatterns??[],o.deadWorkspacePatterns,r)}),t.typesInDeps&&a(()=>{Lt(e.typesInDeps??[],s,o.typesInDeps,r)}),t.similarDeps&&a(()=>{qt(e.similarDeps??[],s,r)})},"printHuman"),Gt=y((e,s)=>{for(const o of e.workspaceProtocol??[]){const t=P(s,o.packageJsonPath);process.stdout.write(`workspace-protocol ${t} ${o.depType} ${o.depName} ${o.specifier} → ${o.fix}
11
- `)}for(const o of e.redefineRoot??[]){const t=P(s,o.packageJsonPath);process.stdout.write(`redefine-root ${t} ${o.depType} ${o.depName} ${o.childSpecifier}
12
- `)}for(const o of e.workspaceVersions??[]){const t=P(s,o.packageJsonPath);process.stdout.write(`workspace-versions ${t} ${o.depType} ${o.depName} ${o.specifier} → ${o.fix}
13
- `)}for(const o of e.customTypes??[]){const t=P(s,o.packageJsonPath);process.stdout.write(`custom-types ${t} ${o.customType} ${o.depName} ${o.specifier} → ${o.fix}
14
- `)}for(const o of e.bannedDeps??[]){const t=P(s,o.packageJsonPath);process.stdout.write(`banned-deps ${t} ${o.depType} ${o.depName} ${o.reason}
15
- `)}for(const o of e.catalogProposals??[])process.stdout.write(`catalog-proposal ${o.catalogName} ${o.depName} ${o.specifier} ${String(o.instanceCount)}
16
- `);for(const o of e.emptyDeps??[]){const t=P(s,o.packageJsonPath);process.stdout.write(`empty-deps ${t} ${o.depType}
17
- `)}for(const o of e.rootPrivate??[]){const t=P(s,o.packageJsonPath);process.stdout.write(`root-private ${t}
18
- `)}for(const o of e.rootPackageManager??[]){const t=P(s,o.packageJsonPath);process.stdout.write(`root-package-manager ${t} ${o.suggested??""}
19
- `)}for(const o of e.rootDeps??[]){const t=P(s,o.packageJsonPath);for(const r of o.depNames)process.stdout.write(`root-deps ${t} ${r}
20
- `)}for(const o of e.missingPackageJson??[])process.stdout.write(`missing-package-json ${o.packageDir}
21
- `);for(const o of e.deadWorkspacePatterns??[])process.stdout.write(`dead-workspace-pattern ${o.source} ${o.pattern}
22
- `);for(const o of e.typesInDeps??[]){const t=P(s,o.packageJsonPath);process.stdout.write(`types-in-deps ${t} ${o.depName} ${o.childSpecifier}
23
- `)}for(const o of e.similarDeps??[])for(const t of o.members){const r=P(s,t.packageJsonPath);process.stdout.write(`similar-deps ${o.family} ${r} ${t.depType} ${t.depName} ${t.specifier}
24
- `)}},"printMinimal"),Kt=y((e,s,o,t)=>{const r=y(a=>({...a,packageJsonPath:P(s,a.packageJsonPath)}),"relativize"),n={fixed:o};if(t.workspaceProtocol){const a=(e.workspaceProtocol??[]).map(i=>r(i));n.workspaceProtocol={issues:a,total:a.length}}if(t.redefineRoot){const a=(e.redefineRoot??[]).map(i=>r(i));n.redefineRoot={issues:a,total:a.length}}if(t.workspaceVersions){const a=(e.workspaceVersions??[]).map(i=>r(i));n.workspaceVersions={issues:a,total:a.length}}if(t.customTypes){const a=(e.customTypes??[]).map(i=>r(i));n.customTypes={issues:a,total:a.length}}if(t.bannedDeps){const a=(e.bannedDeps??[]).map(i=>r(i));n.bannedDeps={issues:a,total:a.length}}if(e.catalogProposals!==void 0){const a=e.catalogProposals;n.catalogProposals={proposals:a,total:a.length}}if(t.emptyDeps){const a=(e.emptyDeps??[]).map(i=>r(i));n.emptyDeps={issues:a,total:a.length}}if(t.rootPrivate){const a=(e.rootPrivate??[]).map(i=>r(i));n.rootPrivate={issues:a,total:a.length}}if(t.rootPackageManager){const a=(e.rootPackageManager??[]).map(i=>r(i));n.rootPackageManager={issues:a,total:a.length}}if(t.rootDeps){const a=(e.rootDeps??[]).map(i=>r(i));n.rootDeps={issues:a,total:a.length}}if(t.missingPackageJson){const a=e.missingPackageJson??[];n.missingPackageJson={issues:a,total:a.length}}if(t.deadWorkspacePatterns){const a=e.deadWorkspacePatterns??[];n.deadWorkspacePatterns={issues:a,total:a.length}}if(t.typesInDeps){const a=(e.typesInDeps??[]).map(i=>r(i));n.typesInDeps={issues:a,total:a.length}}if(t.similarDeps){const a=(e.similarDeps??[]).map(i=>({...i,members:i.members.map(p=>({...p,packageJsonPath:P(s,p.packageJsonPath)}))}));n.similarDeps={issues:a,total:a.length}}process.stdout.write(`${JSON.stringify(n,void 0,2)}
25
- `)},"printJson"),S=y((e,s,o)=>{const t=e[s];return typeof t=="boolean"?t:e[o]===!0},"flag"),Xt=y(e=>{const s=e,o=(e.ban?.length??0)>0,t=(e.pin?.length??0)>0,r=S(s,"workspaceProtocol","workspace-protocol"),n=S(s,"redefineRoot","redefine-root"),a=S(s,"bannedDeps","banned-deps"),i=S(s,"workspaceVersions","workspace-versions"),p=S(s,"customTypes","custom-types"),c=S(s,"emptyDeps","empty-deps"),f=S(s,"rootPrivate","root-private"),m=S(s,"rootPackageManager","root-package-manager"),d=S(s,"rootDeps","root-deps"),g=S(s,"missingPackageJson","missing-package-json"),k=S(s,"deadWorkspacePatterns","dead-workspace-patterns"),$=S(s,"typesInDeps","types-in-deps"),T=S(s,"similarDeps","similar-deps");return r||n||a||i||p||c||f||m||d||g||k||$||T||o||t?{bannedDeps:a||o,customTypes:p,deadWorkspacePatterns:k,emptyDeps:c,missingPackageJson:g,redefineRoot:n,rootDeps:d,rootPackageManager:m,rootPrivate:f,similarDeps:T,typesInDeps:$,workspaceProtocol:r,workspaceVersions:i||t}:{bannedDeps:!0,customTypes:!0,deadWorkspacePatterns:!0,emptyDeps:!0,missingPackageJson:!0,redefineRoot:!0,rootDeps:!0,rootPackageManager:!0,rootPrivate:!0,similarDeps:!0,typesInDeps:!0,workspaceProtocol:!0,workspaceVersions:!0}},"resolveSelection"),Yt=y(e=>{const s=new Map;for(const o of e??[]){const t=o.lastIndexOf("@");if(t<=0||t===o.length-1)throw new Error(`Invalid --pin "${o}". Use: name@<specifier> (e.g. react@^18.2.0).`);const r=o.slice(0,t),n=o.slice(t+1);s.set(r,n)}return s},"parsePinFlags"),Zt=new Set(["catalog","highest","lowest"]),Qt=y(e=>{if(e===void 0)return"highest";if(!Zt.has(e))throw new Error(`Invalid --resolve "${e}". Use: highest, lowest, or catalog.`);return e},"parseResolveStrategy"),E=y((e,s)=>e?s===void 0||s===!0:!1,"isAutofixAllowed"),eo={"custom-types":"policy.customTypes.autofix","workspace-protocol":"policy.workspaceProtocol.autofix","workspace-versions":"policy.workspaceVersions.autofix"},G=y((e,s,o,t)=>{const r=eo[s],n=o==="prompt"?`${r} = "prompt" (interactive mode not yet implemented; report-only)`:`${r} = false`,a=`Set "${r}": true (or remove it) to enable rewrites.`;e.warn(`${s}: ${String(t)} issue${t===1?"":"s"} not rewritten — ${n}. ${a}`)},"warnAutofixDenied"),co=y(async({logger:e,options:s,visConfig:o,workspaceRoot:t})=>{if(!t)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");const r=t,n=s.fix??!1,a=s.format??"human",i=s.quiet??!1;if(!["human","json","minimal"].includes(a))throw new Error(`Invalid --format "${a}". Use: human, json, or minimal.`);const p=Xt(s),c=o?.policy??{},f=o?.editorconfig??!0,m=Yt(s.pin),d=s.ban??[];(s.dep!==void 0||s.resolve!==void 0)&&!p.workspaceVersions&&!i&&e.warn("--dep / --resolve only apply to --workspace-versions; ignored.");const g=ye(r),k={},$={catalogProposals:!1,customTypes:!1,deadWorkspacePatterns:!1,emptyDeps:!1,rootDeps:!1,rootPackageManager:!1,rootPrivate:!1,typesInDeps:!1,workspaceProtocol:!1,workspaceVersions:!1},T=Mt(r);let N=0;if(p.workspaceProtocol){const l=yt(g,{fixSpecifier:s.fixSpecifier}),h=E(n,c.workspaceProtocol?.autofix);h&&l.length>0&&(Pt(l,{useEditorconfig:f}),$.workspaceProtocol=!0),k.workspaceProtocol=l,h||(N+=l.length),n&&!h&&l.length>0&&!i&&G(e,"workspace-protocol",c.workspaceProtocol?.autofix,l.length)}if(p.redefineRoot){const l=Ke(g,{ignoreDeps:c.redefineRoot?.ignore});k.redefineRoot=l,N+=l.length}if(p.workspaceVersions){const l=Qt(s.resolve??c.workspaceVersions?.resolve),h=l==="catalog"?$e(r):void 0;l==="catalog"&&(!h||h.size===0)&&!i&&e.warn("--resolve catalog: no catalog found in pnpm-workspace.yaml or root package.json — nothing to align.");const J=St(g,{catalogs:h,dep:s.dep,ignoreDeps:c.workspaceVersions?.ignore,pinned:m.size>0?m:void 0,resolve:l}),O=E(n,c.workspaceVersions?.autofix);if(O&&J.length>0&&(Rt(J,{useEditorconfig:f}),$.workspaceVersions=!0),k.workspaceVersions=J,O||(N+=J.length),n&&!O&&J.length>0&&!i&&G(e,"workspace-versions",c.workspaceVersions?.autofix,J.length),s.proposeMin!==void 0){if(l!=="catalog"&&!i)e.warn("--propose-min only runs under --resolve catalog; ignored.");else if(l==="catalog"){const M=Fe(g,{catalogs:h,ignoreDeps:c.workspaceVersions?.ignore,min:s.proposeMin});O&&M.length>0&&(Ce(r,M),$.catalogProposals=!0),k.catalogProposals=M}}}if(p.customTypes){const l=c.customTypes?.extraTypes,h=Pe(l);if(h.length>0){for(const ce of h)e.error(`policy.customTypes.${ce}`);process.exitCode=1;return}const J=ve(r,l),O=(s.resolve??c.customTypes?.resolve)==="lowest"?"lowest":"highest",M=we(J,{dep:s.dep,ignoreDeps:c.customTypes?.ignore,resolve:O}),U=E(n,c.customTypes?.autofix);U&&M.length>0&&(De(M,{useEditorconfig:f}),$.customTypes=!0),k.customTypes=M,U||(N+=M.length),n&&!U&&M.length>0&&!i&&G(e,"custom-types",c.customTypes?.autofix,M.length)}if(p.bannedDeps){const l={...c.bannedDeps};for(const J of d)l[J]={reason:"banned via --ban CLI flag"};Object.keys(l).length===0&&s.bannedDeps&&!i&&e.warn("--banned-deps: no policy.bannedDeps in vis config, nothing to check.");const h=Re(g,l);k.bannedDeps=h,N+=h.length}if(p.emptyDeps){const l=Be(r,{ignoreBlocks:c.emptyDeps?.ignoreBlocks}),h=E(n,c.emptyDeps?.autofix);h&&l.length>0&&(Le(l,{useEditorconfig:f}),$.emptyDeps=!0),k.emptyDeps=l,h||(N+=l.length)}if(p.rootPrivate){const l=at(r,T),h=E(n,c.rootPrivate?.autofix);h&&l.length>0&&(nt(l,{useEditorconfig:f}),$.rootPrivate=!0),k.rootPrivate=l,h||(N+=l.length)}if(p.rootPackageManager){const l=tt(r,T,{suggested:c.rootPackageManager?.suggested}),h=E(n,c.rootPackageManager?.autofix);h&&l.some(J=>J.suggested!==void 0)&&(ot(l,{useEditorconfig:f}),$.rootPackageManager=!0),k.rootPackageManager=l,(!h||!$.rootPackageManager)&&(N+=l.filter(J=>J.suggested===void 0||!$.rootPackageManager).length)}if(p.rootDeps){const l=Ye(r,T),h=E(n,c.rootDeps?.autofix);h&&l.length>0&&(Ze(l,{useEditorconfig:f}),$.rootDeps=!0),k.rootDeps=l,h||(N+=l.length)}if(p.missingPackageJson){const l=be(r);k.missingPackageJson=l,N+=l.length}if(p.deadWorkspacePatterns){const l=Oe(r),h=E(n,c.deadWorkspacePatterns?.autofix);h&&l.length>0&&(He(l,{useEditorconfig:f}),$.deadWorkspacePatterns=!0),k.deadWorkspacePatterns=l,h||(N+=l.length)}if(p.typesInDeps){const l=ut(g,{ignoreDeps:c.typesInDeps?.ignore}),h=E(n,c.typesInDeps?.autofix);h&&l.length>0&&(mt(l,{useEditorconfig:f}),$.typesInDeps=!0),k.typesInDeps=l,h||(N+=l.length)}if(p.similarDeps){const l=lt(g,{extraFamilies:c.similarDeps?.extraFamilies,ignoreFamilies:c.similarDeps?.ignoreFamilies});k.similarDeps=l,N+=l.length}i||(a==="json"?Kt(k,r,$,p):a==="minimal"?Gt(k,r):Ut(k,r,$,p,e)),N>0&&(process.exitCode=1)},"execute");export{co as default};
1
+ import{createRequire as z}from"node:module";import{y as L,v as _,m as P,f as M,J as V,B as Y}from"../packem_shared/index-BDmTbWX1.js";import{a4 as t,a5 as a,g as c,aE as K,aF as Q,aG as U,aD as Z,t as v,ae as ee,p as k,j as re,$ as te,k as se,m as ne,aN as oe,aO as ie,aP as le,l as ce,s as N}from"./bin.js";import{o as ae}from"../packem_shared/index-CB4p298r.js";import{sortPackageJsonStringWithOptions as q}from"#native";import{c as O}from"../packem_shared/utils-Cxree603.js";const Ke=z(import.meta.url),Qe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;const D={error:0,rewritten:1,"would-rewrite":1,unchanged:2},de=e=>[...e].sort((r,s)=>D[r.status]-D[s.status]),ue=(e,r)=>r==="all"?e:r==="errors"?e.filter(s=>s.status==="error"):r==="rewritten"?e.filter(s=>s.status==="rewritten"||s.status==="would-rewrite"):e.filter(s=>s.status==="unchanged");class fe{#e;#r=new Set;constructor(r){this.#e={entries:de(r),filterType:"all",focusedPanel:"list",selectedIndex:0}}getSnapshot=()=>this.#e;subscribe=r=>(this.#r.add(r),()=>{this.#r.delete(r)});getFilteredEntries=()=>ue(this.#e.entries,this.#e.filterType);#t(){this.#e={...this.#e};for(const r of this.#r)r()}select(r){const s=this.getFilteredEntries();this.#e.selectedIndex=s.length===0?-1:Math.max(0,Math.min(r,s.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()}}const he=({checkMode:e,entry:r,focused:s,scrollRef:l})=>{const i=s?"white":"gray";return r?t.jsxs(a,{borderColor:i,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[t.jsx(a,{flexShrink:0,paddingTop:1,paddingX:2,children:t.jsx(c,{bold:!0,color:"white",children:r.relativePath})}),t.jsxs(K,{flexGrow:1,flexShrink:1,paddingX:2,ref:l,scrollbar:!0,scrollbarColor:"gray",children:[t.jsx(c,{}),t.jsxs(a,{children:[t.jsx(a,{width:10,children:t.jsx(c,{dimColor:!0,children:"Status:"})}),r.status==="error"?t.jsx(c,{bold:!0,color:"red",children:"error"}):r.status==="unchanged"?t.jsx(c,{bold:!0,color:"green",children:"already sorted"}):r.status==="rewritten"?t.jsx(c,{bold:!0,color:"yellow",children:"rewritten"}):t.jsx(c,{bold:!0,color:"yellow",children:"would rewrite (--check)"})]}),t.jsxs(a,{children:[t.jsx(a,{width:10,children:t.jsx(c,{dimColor:!0,children:"Path:"})}),t.jsx(c,{children:r.filePath})]}),r.error?t.jsxs(t.Fragment,{children:[t.jsxs(a,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"red",children:"ERROR"}),t.jsxs(a,{flexDirection:"column",marginTop:1,paddingLeft:2,children:[t.jsxs(a,{children:[t.jsx(a,{width:10,children:t.jsx(c,{dimColor:!0,children:"Step:"})}),t.jsx(c,{color:"yellow",children:r.error.step})]}),r.error.context&&t.jsxs(a,{children:[t.jsx(a,{width:10,children:t.jsx(c,{dimColor:!0,children:"Position:"})}),t.jsx(c,{children:`line ${String(r.error.context.line)}, column ${String(r.error.context.column)}`})]}),t.jsx(a,{marginTop:1,children:t.jsx(c,{color:"red",children:r.error.message})})]})]}),r.error.context&&r.error.context.snippet.length>0&&t.jsxs(a,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"white",children:"SNIPPET"}),t.jsxs(a,{flexDirection:"column",marginTop:1,paddingLeft:2,children:[r.error.context.snippet.map(n=>{const o=`${n.isErrorLine?"❯":" "} ${String(n.lineNumber).padStart(4)} `;return t.jsxs(a,{children:[t.jsx(c,{color:n.isErrorLine?"red":"gray",children:o}),t.jsx(c,{color:n.isErrorLine?"white":"gray",wrap:"truncate-end",children:n.content||" "})]},n.lineNumber)}),r.error.context.column>0&&t.jsx(a,{children:t.jsx(c,{color:"red",children:`${" ".repeat(7+r.error.context.column-1)}↑`})})]})]})]}):t.jsxs(a,{flexDirection:"column",marginTop:1,children:[t.jsx(c,{dimColor:!0,children:"── "}),t.jsx(c,{bold:!0,color:"white",children:"KEY DIFF"}),t.jsx(a,{flexDirection:"column",marginTop:1,paddingLeft:2,children:r.diff.length===0?t.jsx(c,{dimColor:!0,children:"No top-level keys moved (sub-key reorder only)."}):r.diff.map(n=>{const o=n.toIndex-n.fromIndex,d=o<0?`↑ ${String(Math.abs(o))}`:`↓ ${String(o)}`,g=o<0?"green":"yellow";return t.jsxs(a,{children:[t.jsx(a,{width:28,children:t.jsx(c,{wrap:"truncate",children:n.key})}),t.jsx(a,{width:10,children:t.jsxs(c,{dimColor:!0,children:[String(n.fromIndex)," → ",String(n.toIndex)]})}),t.jsx(c,{color:g,children:d})]},n.key)})}),e&&r.status==="would-rewrite"&&t.jsx(a,{marginTop:1,paddingLeft:2,children:t.jsx(c,{dimColor:!0,children:"--check mode: no write performed."})})]})]})]}):t.jsx(a,{alignItems:"center",borderColor:"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,justifyContent:"center",children:t.jsx(c,{dimColor:!0,children:"No entry selected"})})},ge={error:"red",rewritten:"yellow",unchanged:"green","would-rewrite":"yellow"},xe={error:"ERROR",rewritten:"REWROTE",unchanged:"SORTED","would-rewrite":"REWRITE"},H={error:"errors",rewritten:"rewrites",unchanged:"sorted","would-rewrite":"rewrites"},pe={errors:"Errors",rewrites:"Rewrites",sorted:"Sorted"},me=[{count:e=>e.errors+e.rewrites+e.sorted,key:"all",label:"All",shortcut:"1"},{count:e=>e.rewrites,key:"rewritten",label:"Rewrites",shortcut:"2"},{count:e=>e.errors,key:"errors",label:"Errors",shortcut:"3"},{count:e=>e.sorted,key:"unchanged",label:"Sorted",shortcut:"4"}],X=e=>{const r={errors:0,rewrites:0,sorted:0};for(const s of e)r[H[s.status]]++;return r},we=({entry:e,isSelected:r})=>{const s=ge[e.status],l=xe[e.status];return t.jsxs(a,{flexShrink:0,height:1,children:[t.jsx(c,{children:r?">":" "}),t.jsx(c,{children:" "}),t.jsx(c,{bold:!0,color:s,children:`[${l}]`.padEnd(10)}),t.jsx(c,{children:" "}),t.jsx(a,{flexGrow:1,children:t.jsx(c,{bold:r,inverse:r,wrap:"truncate",children:e.relativePath})}),e.status!=="error"&&e.diff.length>0&&t.jsx(c,{dimColor:!0,children:` ${String(e.diff.length)} key${e.diff.length===1?"":"s"}`})]})},je=({color:e,count:r,label:s})=>t.jsx(a,{flexShrink:0,height:1,children:t.jsx(c,{bold:!0,color:e,children:`${s} (${String(r)})`})}),ye=({counts:e,entries:r,filterType:s,focused:l,selectedIndex:i,totalEntries:n,viewportHeight:o})=>{const d=l?"white":"gray",g=X(r),m=(g.errors>0?1:0)+(g.rewrites>0?1:0)+(g.sorted>0?1:0),y=s==="all"&&m>1,h=[];let w;for(const[u,p]of r.entries()){const b=H[p.status];y&&b!==w&&(w!==void 0&&h.push({kind:"spacer"}),h.push({color:b==="errors"?"red":b==="rewrites"?"yellow":"green",count:g[b],kind:"header",label:pe[b]}),w=b),h.push({entry:p,entryIndex:u,kind:"entry"})}const x=h.findIndex(u=>u.kind==="entry"&&u.entryIndex===i),S=x!==-1,j=h.length,$=Math.max(0,j-o);let f=0;S&&o>0&&(f=Math.min($,Math.max(0,x-o+1)));const E=j>o&&o>0;return t.jsxs(a,{borderColor:d,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[t.jsxs(a,{flexShrink:0,gap:1,paddingX:1,children:[t.jsx(c,{bold:!0,inverse:!0,children:" VIS SORT "}),t.jsxs(c,{wrap:"truncate",children:[n," ","file",n===1?"":"s"]})]}),t.jsx(a,{flexShrink:0,gap:1,paddingX:1,paddingY:1,children:me.map(u=>{const p=s===u.key,b=u.count(e);return t.jsxs(a,{children:[t.jsx(c,{dimColor:!p,children:"["}),t.jsx(c,{bold:p,color:p?"cyan":"gray",children:u.shortcut}),t.jsx(c,{dimColor:!p,children:"]"}),t.jsxs(c,{color:p?"white":"gray",children:[" ",u.label]}),t.jsxs(c,{dimColor:!0,children:[" ","(",b,")"]})]},u.key)})}),t.jsxs(a,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[t.jsx(a,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingLeft:1,children:t.jsx(a,{flexDirection:"column",marginTop:-f,children:h.map((u,p)=>u.kind==="spacer"?t.jsx(a,{flexShrink:0,height:1},`s-${String(p)}`):u.kind==="header"?t.jsx(je,{color:u.color,count:u.count,label:u.label},`h-${u.label}`):t.jsx(we,{entry:u.entry,isSelected:u.entryIndex===i},u.entry.filePath))})}),E&&t.jsx(a,{flexShrink:0,marginLeft:1,marginRight:1,children:t.jsx(Q,{contentHeight:j,placement:"inset",scrollOffset:f,style:"block",viewportHeight:o})})]})]})},be=100,A=10,ke=6,Se=1,F={1:"all",2:"rewritten",3:"errors",4:"unchanged"},$e=({checkMode:e,store:r})=>{const{exit:s}=U(),{columns:l,rows:i}=Z(),n=v.useSyncExternalStore(r.subscribe,r.getSnapshot),o=v.useRef(null),d=r.getFilteredEntries(),g=d[n.selectedIndex]??null,m=X(n.entries),y=l>=be,h=Math.max(0,i-Se),w=y?h:Math.floor(h/2),x=Math.max(0,w-ke),S=v.useCallback(()=>{s()},[s]),j=v.useRef(0),$=v.useRef(void 0),f=v.useRef(!1),E=v.useCallback((u,p)=>{j.current+=p,$.current=u,!f.current&&(f.current=!0,queueMicrotask(()=>{f.current=!1;const b=j.current,T=$.current;j.current=0,$.current=void 0,!(b===0||T===void 0)&&(T==="list"?r.selectStep(Math.sign(b)):o.current?.scrollBy(Math.sign(b)))}))},[r]);return ee((u,p)=>{if(u==="q"||p.escape){S();return}if(F[u]){r.setFilter(F[u]);return}if(p.tab){r.setFocusedPanel(n.focusedPanel==="list"?"detail":"list");return}n.focusedPanel==="list"?p.upArrow||u==="k"?E("list",-1):(p.downArrow||u==="j")&&E("list",1):n.focusedPanel==="detail"&&(p.upArrow||u==="k"?E("detail",-1):(p.downArrow||u==="j")&&E("detail",1))}),i<A?t.jsx(a,{alignItems:"center",justifyContent:"center",children:t.jsxs(c,{color:"yellow",children:["Terminal too small. Resize to at least",A," ","rows."]})}):t.jsxs(a,{flexDirection:"column",height:i,width:l,children:[t.jsxs(a,{flexDirection:y?"row":"column",flexGrow:1,children:[t.jsx(a,{flexBasis:"50%",flexGrow:1,flexShrink:1,children:t.jsx(ye,{counts:m,entries:d,filterType:n.filterType,focused:n.focusedPanel==="list",selectedIndex:n.selectedIndex,totalEntries:n.entries.length,viewportHeight:x})}),t.jsx(a,{flexBasis:"50%",flexGrow:1,flexShrink:1,children:t.jsx(he,{checkMode:e,entry:g,focused:n.focusedPanel==="detail",scrollRef:o})})]}),t.jsx(a,{flexShrink:0,paddingX:1,children:t.jsx(c,{dimColor:!0,children:"↑/↓ or j/k:navigate | tab:switch panel | 1-4:filter | q:quit"})})]})},B=["types","node-addons","node","import","require","default"],ve=/^git\+https:\/\/github\.com\/([^/]+)\/([^/.]+(?:\.git)?)$/,Ee=/^git\+ssh:\/\/git@github\.com\/([^/]+)\/([^/.]+(?:\.git)?)$/,C=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),I=e=>{if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(s=>I(s));const r={};for(const[s,l]of Object.entries(e))r[s]=I(l);return r},Pe=e=>{if(!C(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}},Oe=e=>e.endsWith(".git")?e.slice(0,-4):e,Ce=e=>{if(!C(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:s}=e;if(typeof s!="string")return{changed:!1,value:e};const l=ve.exec(s)??Ee.exec(s);if(!l)return{changed:!1,value:e};const i=l[1],n=Oe(l[2]??"");if(!i||!n)return{changed:!1,value:e};const o=new Set(["type","url"]);for(const d of Object.keys(e))if(!o.has(d))return{changed:!1,value:e};return{changed:!0,value:`${i}/${n}`}},Re=e=>{const r=Object.keys(e),s=[],l=[];for(const o of B)Object.hasOwn(e,o)&&s.push(o);for(const o of r)B.includes(o)||l.push(o);const i=[...s,...l];if(i.length===r.length&&i.every((o,d)=>o===r[d]))return{changed:!1,value:e};const n={};for(const o of i)n[o]=e[o];return{changed:!0,value:n}},W=e=>{if(!C(e))return{changed:!1,value:e};let r=!1;const s={};for(const[i,n]of Object.entries(e)){const o=W(n);s[i]=o.value,o.changed&&(r=!0)}const l=Re(s);return{changed:r||l.changed,value:l.value}},Ie=(e,r)=>{const s=I(e);let l=!1;if(r.formatBugs!==!1&&Object.hasOwn(s,"bugs")){const i=Pe(s.bugs);i.changed&&(s.bugs=i.value,l=!0)}if(r.formatRepository!==!1&&Object.hasOwn(s,"repository")){const i=Ce(s.repository);i.changed&&(s.repository=i.value,l=!0)}if(r.sortExports!==!1&&Object.hasOwn(s,"exports")&&C(s.exports)){const i=W(s.exports);i.changed&&(s.exports=i.value,l=!0)}return{changed:l,pkg:s}},Te=/at position (\d+)/,Me=/\(?line (\d+) column (\d+)\)?/,Ne=e=>{const r=new Set,s=[],l=n=>{const o=Y(n);!r.has(o)&&M(o)&&(r.add(o),s.push(o))};l(P(e,"package.json"));const i=ce(e);if(i){const n=N(e,i);for(const o of n)l(P(e,o,"package.json"))}else{const n=P(e,"package.json");if(M(n)){const o=JSON.parse(_(n)),d=Array.isArray(o.workspaces)?o.workspaces:o.workspaces?.packages;if(d){const g=N(e,d);for(const m of g)l(P(e,m,"package.json"))}}}return s},De=e=>/\n([ \t]+)/.exec(e)?.[1]??" ",Ae=e=>{if(!(e===void 0||e===""))return e==="tab"||e===String.raw`\t`?" ":/^\d+$/.test(e)?" ".repeat(Number.parseInt(e,10)):e},R=e=>e===void 0?[]:(Array.isArray(e)?e:[e]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(r=>r.length>0),Fe=e=>e.includes(`\r
2
+ `)?"crlf":"lf",Be=new Set(["auto","crlf","lf"]),Ge=e=>{if(e===void 0||e==="")return"auto";if(Be.has(e))return e;throw new Error(`--line-ending must be one of: auto, lf, crlf (got "${e}")`)},Je=(e,r,s)=>r.length===0?e:e.filter(l=>{const i=L(s,l),n=V(l);return!r.some(o=>{const d=o.includes("/")?i:n;return ae(o,d)})}),Le=(e,r)=>{if(r.length===0)return e;const s={},l=new Set;for(const i of r)Object.hasOwn(e,i)&&(s[i]=e[i],l.add(i));for(const i of Object.keys(e))l.has(i)||(s[i]=e[i]);return s},_e=(e,r,s)=>{if(s.length===0)return e;const l={...e};for(const i of s)Object.hasOwn(r,i)&&(l[i]=r[i]);return l},qe=(e,r)=>{let s=1,l=1;const i=Math.min(r,e.length);for(let n=0;n<i;n++)e.codePointAt(n)===10?(s++,l=1):l++;return{column:l,line:s}},G=(e,r,s=2)=>{const l=e.split(`
3
+ `);if(r<1||r>l.length)return[];const i=Math.max(0,r-1-s),n=Math.min(l.length,r+s),o=[];for(let d=i;d<n;d++)o.push({content:l[d]??"",isErrorLine:d+1===r,lineNumber:d+1});return o},J=(e,r)=>{if(!(e instanceof Error))return;const s=Te.exec(e.message);if(s){const{column:i,line:n}=qe(r,Number.parseInt(s[1]??"0",10));return{column:i,line:n,snippet:G(r,n)}}const l=Me.exec(e.message);if(l){const i=Number.parseInt(l[1]??"1",10);return{column:Number.parseInt(l[2]??"1",10),line:i,snippet:G(r,i)}}},He=(e,r)=>{const s=Object.keys(JSON.parse(e)),l=Object.keys(JSON.parse(r)),i=new Map(s.map((o,d)=>[o,d])),n=[];for(const[o,d]of l.entries()){const g=i.get(d);g!==void 0&&g!==o&&n.push({fromIndex:g,key:d,toIndex:o})}return n},Xe=(e,r,s)=>{const l=r.indent??s.indent??De(e),i=r.lineEnding==="auto"?s.lineEnding??Fe(e):r.lineEnding,n=q(e,{pretty:!1,sortScripts:r.sortScripts});let o=JSON.parse(n);if(r.unsorted.length>0){const y=JSON.parse(e);o=_e(o,y,r.unsorted)}o=Le(o,r.sortOrder);const d={formatBugs:r.formatBugs,formatRepository:r.formatRepository,sortExports:r.sortExports},g=Ie(o,d);let m=JSON.stringify(g.pkg,null,l);return r.finalNewline&&(m+=`
4
+ `),i==="crlf"&&(m=m.replaceAll(`
5
+ `,`\r
6
+ `)),m},We=(e,r)=>{const s=Ne(e),l=ne(e),i=oe({cwd:e,extraPatterns:ie(l)}),n=s.filter(d=>!i.ignores(d)),o=Je(n,r,e);return{afterGitignore:n,allFiles:s,files:o}},ze=async(e,{checkMode:r,cwd:s,fs:l,normalized:i})=>{const n=L(s,e)||e;let o;try{o=_(e)}catch(h){return{diff:[],error:{message:O(h),step:"read"},filePath:e,relativePath:n,status:"error"}}let d;try{d=q(o,{pretty:!1,sortScripts:i.sortScripts})}catch(h){const w={message:O(h),step:"native-sort"},x=J(h,o);return x&&(w.context=x),{diff:[],error:w,filePath:e,relativePath:n,status:"error"}}const g=i.editorconfig?le(e):{};let m;try{m=Xe(o,i,g)}catch(h){const w={message:O(h),step:"json-parse"},x=J(h,o);return x&&(w.context=x),{diff:[],error:w,filePath:e,relativePath:n,status:"error"}}if(o===m)return{diff:[],filePath:e,relativePath:n,status:"unchanged"};let y;try{y=He(o,d)}catch{y=[]}if(r)return{diff:y,filePath:e,relativePath:n,status:"would-rewrite"};try{await l.writeFile(e,m,"utf8")}catch(h){return{diff:y,error:{message:O(h),step:"write"},filePath:e,relativePath:n,status:"error"}}return{diff:y,filePath:e,relativePath:n,status:"rewritten"}},Ve=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 s=r.isErrorLine?">":" ";k.info(` ${s} ${String(r.lineNumber).padStart(4)} | ${r.content}`)}}},sr=async({fs:e,options:r,visConfig:s,workspaceRoot:l})=>{const i=l??process.cwd(),n=s?.sortPackageJson,o=r.check||!1,d={editorconfig:r.editorconfig===!1?!1:n?.editorconfig??!0,finalNewline:r.finalNewline??n?.finalNewline??!0,formatBugs:r.formatBugs===!1?!1:n?.formatBugs??!0,formatRepository:r.formatRepository===!1?!1:n?.formatRepository??!0,ignore:[...R(r.ignore),...n?.ignore??[]],indent:Ae(r.indent??n?.indent),lineEnding:Ge(r.lineEnding??n?.lineEnding),sortExports:r.sortExports===!1?!1:n?.sortExports??!0,sortOrder:[...R(r.sortOrder),...n?.sortOrder??[]],sortScripts:r.sortScripts||n?.sortScripts||!1,unsorted:[...R(r.unsorted),...n?.unsorted??[]]},g=We(i,d.ignore),{afterGitignore:m,allFiles:y,files:h}=g;if(h.length===0){y.length===0?k.info("No package.json files found."):m.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 w=[];for(const f of h)w.push(await ze(f,{checkMode:o,cwd:i,fs:e,normalized:d}));let x=0,S=0,j=0;for(const f of w)f.status==="error"?j++:f.status==="rewritten"||f.status==="would-rewrite"?x++:S++;const $=x>0||j>0;if(process.stdout.isTTY&&!re&&$){const f=new fe(w);await te(se.createElement($e,{checkMode:o,store:f}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit()}else for(const f of w)switch(f.status){case"error":{Ve(f);break}case"rewritten":{k.success(`Sorted ${f.filePath}`);break}case"would-rewrite":{k.warn(`${f.filePath} is not sorted`);break}}if(o)x>0?(k.info(`${String(x)} file${x===1?"":"s"} not sorted, ${String(S)} already sorted`),process.exitCode=1):j===0&&k.info(`All ${String(S)} package.json file${S===1?" is":"s are"} sorted`);else{const f=[];x>0&&f.push(`sorted ${String(x)} file${x===1?"":"s"}`),S>0&&f.push(`${String(S)} already sorted`),j>0&&f.push(`${String(j)} error${j===1?"":"s"}`),f.length>0&&k.info(f.join(", "))}j>0&&(process.exitCode=1)};export{G as buildSnippet,He as computeKeyDiff,qe as computeLineColumn,sr as default,We as discoverPackageJsonFiles,J as extractParseErrorContext,ze as processFile};