@visulima/vis 1.0.0-alpha.20 → 1.0.0-alpha.22

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 (112) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/LICENSE.md +206 -141
  3. package/README.md +21 -4
  4. package/dist/config/index.d.ts +199 -6
  5. package/dist/packem_chunks/bin.js +318 -318
  6. package/dist/packem_chunks/bloom-status.js +2 -0
  7. package/dist/packem_chunks/bloom-sync.js +2 -0
  8. package/dist/packem_chunks/cache-attestation.js +1 -0
  9. package/dist/packem_chunks/config.js +15 -15
  10. package/dist/packem_chunks/fix.js +1 -1
  11. package/dist/packem_chunks/handler.js +1 -1
  12. package/dist/packem_chunks/handler10.js +2 -1
  13. package/dist/packem_chunks/handler11.js +1 -5
  14. package/dist/packem_chunks/handler12.js +5 -1
  15. package/dist/packem_chunks/handler13.js +1 -27
  16. package/dist/packem_chunks/handler14.js +28 -5
  17. package/dist/packem_chunks/handler15.js +5 -1
  18. package/dist/packem_chunks/handler16.js +1 -1
  19. package/dist/packem_chunks/handler17.js +1 -1
  20. package/dist/packem_chunks/handler18.js +1 -1
  21. package/dist/packem_chunks/handler19.js +1 -1
  22. package/dist/packem_chunks/handler2.js +4 -2
  23. package/dist/packem_chunks/handler20.js +1 -5
  24. package/dist/packem_chunks/handler21.js +5 -2
  25. package/dist/packem_chunks/handler22.js +2 -2
  26. package/dist/packem_chunks/handler23.js +2 -18
  27. package/dist/packem_chunks/handler24.js +18 -1
  28. package/dist/packem_chunks/handler25.js +1 -1
  29. package/dist/packem_chunks/handler26.js +1 -5
  30. package/dist/packem_chunks/handler27.js +5 -1
  31. package/dist/packem_chunks/handler28.js +1 -3
  32. package/dist/packem_chunks/handler29.js +3 -1
  33. package/dist/packem_chunks/handler3.js +4 -4
  34. package/dist/packem_chunks/handler30.js +1 -7
  35. package/dist/packem_chunks/handler31.js +6 -32
  36. package/dist/packem_chunks/handler32.js +33 -3
  37. package/dist/packem_chunks/handler33.js +3 -1
  38. package/dist/packem_chunks/handler34.js +1 -26
  39. package/dist/packem_chunks/handler35.js +26 -3
  40. package/dist/packem_chunks/handler36.js +5 -7
  41. package/dist/packem_chunks/handler37.js +6 -6
  42. package/dist/packem_chunks/handler38.js +1 -1
  43. package/dist/packem_chunks/handler39.js +61 -6
  44. package/dist/packem_chunks/handler4.js +6 -8
  45. package/dist/packem_chunks/handler40.js +6 -24
  46. package/dist/packem_chunks/handler41.js +215 -10
  47. package/dist/packem_chunks/handler42.js +24 -153
  48. package/dist/packem_chunks/handler43.js +153 -25
  49. package/dist/packem_chunks/handler44.js +10 -24
  50. package/dist/packem_chunks/handler45.js +25 -213
  51. package/dist/packem_chunks/handler46.js +24 -3
  52. package/dist/packem_chunks/handler47.js +3 -27
  53. package/dist/packem_chunks/handler48.js +21 -161
  54. package/dist/packem_chunks/handler49.js +173 -33
  55. package/dist/packem_chunks/handler5.js +8 -1
  56. package/dist/packem_chunks/handler50.js +34 -0
  57. package/dist/packem_chunks/handler6.js +1 -1
  58. package/dist/packem_chunks/handler7.js +1 -1
  59. package/dist/packem_chunks/handler8.js +1 -1
  60. package/dist/packem_chunks/handler9.js +1 -2
  61. package/dist/packem_chunks/heal-accept.js +1 -1
  62. package/dist/packem_chunks/heal.js +1 -1
  63. package/dist/packem_chunks/help-command.js +16 -16
  64. package/dist/packem_chunks/index.js +2 -2
  65. package/dist/packem_chunks/keys-refresh.js +1 -1
  66. package/dist/packem_chunks/list.js +1 -1
  67. package/dist/packem_chunks/loader.js +4 -1
  68. package/dist/packem_chunks/loader2.js +1 -0
  69. package/dist/packem_chunks/prune.js +1 -1
  70. package/dist/packem_chunks/run.js +1 -1
  71. package/dist/packem_chunks/status.js +1 -1
  72. package/dist/packem_chunks/sync.js +1 -1
  73. package/dist/packem_chunks/sync2.js +1 -1
  74. package/dist/packem_chunks/verify-lockfile.js +2 -0
  75. package/dist/packem_shared/{advisories-DsynpacV.js → advisories-DS8JEB_g.js} +1 -1
  76. package/dist/packem_shared/{ai-analysis-uYuTIIXi.js → ai-analysis-DGBZYlxF.js} +1 -1
  77. package/dist/packem_shared/{ai-cache-DuwHYx2O.js → ai-cache-BjlXWJtl.js} +1 -1
  78. package/dist/packem_shared/{ai-fix-DzrA-dVz.js → ai-fix-BhcTrkuW.js} +6 -6
  79. package/dist/packem_shared/cyclonedx-CO7-Y1B1.js +4 -0
  80. package/dist/packem_shared/dependency-scan-DPHTzA5r.js +1 -0
  81. package/dist/packem_shared/docker-lk0-5Z-i.js +60 -0
  82. package/dist/packem_shared/{failure-log-C3LEMmkq.js → failure-log-DF7nrFIs.js} +1 -1
  83. package/dist/packem_shared/{flakiness-Dq6K4ymq.js → flakiness-DKCOYwN7.js} +1 -1
  84. package/dist/packem_shared/index-B4gpNmrG.js +1 -0
  85. package/dist/packem_shared/license-zZU7aavK.js +1 -0
  86. package/dist/packem_shared/{lifecycle-Dv3nAtoD.js → lifecycle-boYwVQSE.js} +2 -2
  87. package/dist/packem_shared/{min-release-age-BFozFonQ.js → min-release-age-D462DvYM.js} +1 -1
  88. package/dist/packem_shared/{native-config-sync-Dvi1g2nQ.js → native-config-sync-B0_ef78M.js} +9 -9
  89. package/dist/packem_shared/osv-bloom-QSAn2Dcw.js +2 -0
  90. package/dist/packem_shared/provenance-smHa8efI.js +1 -0
  91. package/dist/packem_shared/{registry-keys-CewRFW0e.js → registry-keys-3qaVog76.js} +1 -1
  92. package/dist/packem_shared/resolve-explicit-BgFQHUEP.js +5 -0
  93. package/dist/packem_shared/{run-summary-utils-BaBGP3bo.js → run-summary-utils-DIJV_dUD.js} +1 -1
  94. package/dist/packem_shared/runtime-check-DrMx4Q9L.js +1 -0
  95. package/dist/packem_shared/s1ngularity-CwSBPB3I.js +1 -0
  96. package/dist/packem_shared/signatures-b-jJYoZd.js +2 -0
  97. package/dist/packem_shared/toolchain-OH1PXwbZ.js +5 -0
  98. package/dist/packem_shared/{typosquats-BCeR-sLf.js → typosquats-CJ4o1l7U.js} +1 -1
  99. package/dist/packem_shared/{verify-07kUNTuP.js → verify-CQbzknur.js} +1 -1
  100. package/dist/packem_shared/{vis-update-app-CFrlJ3mW.js → vis-update-app-Bnu1EIgE.js} +1 -1
  101. package/index.d.ts +78 -0
  102. package/index.js +57 -53
  103. package/package.json +22 -12
  104. package/schemas/project.schema.json +37 -7
  105. package/schemas/vis-config.schema.json +2376 -2026
  106. package/dist/packem_shared/cyclonedx-CiHXuG8M.js +0 -4
  107. package/dist/packem_shared/dependency-scan-DC3nAFHS.js +0 -1
  108. package/dist/packem_shared/docker-B-CIN_nj.js +0 -60
  109. package/dist/packem_shared/resolve-explicit-CC4Kifk5.js +0 -5
  110. package/dist/packem_shared/runtime-check-BusAwPb2.js +0 -1
  111. package/dist/packem_shared/signatures-5ZdjJ2Pu.js +0 -2
  112. package/dist/packem_shared/toolchain-Cc3cwyLP.js +0 -5
@@ -1,7 +1,7 @@
1
- var ie=Object.defineProperty;var h=(e,t)=>ie(e,"name",{value:t,configurable:!0});import{b0 as S,b1 as E,b2 as _,b3 as U,b4 as z,b5 as W,b6 as q,b7 as ae,u as oe,ay as se,p as le,b8 as ce}from"./bin.js";import{z as Q,M as G,$ as A}from"./config.js";var fe=Object.defineProperty,ue=h((e,t)=>fe(e,"name",{value:t,configurable:!0}),"l$3"),pe=Object.defineProperty,me=ue((e,t)=>pe(e,"name",{value:t,configurable:!0}),"l"),de=Object.defineProperty,he=me((e,t)=>de(e,"name",{value:t,configurable:!0}),"o");const ye=new E(1e3),T=he((e,t)=>{if(typeof e!="string")return"";const n=t?.cache??!1,r=t?.cacheStore??ye;let i;if(n&&(i=S(e,t)),n&&i&&r.has(i))return r.get(i);const a=_(e,{handleAnsi:t?.handleAnsi,handleEmoji:t?.handleEmoji,knownAcronyms:t?.knownAcronyms,locale:t?.locale,normalize:t?.normalize,separators:void 0,stripAnsi:t?.stripAnsi,stripEmoji:t?.stripEmoji}).map(s=>{if(t?.handleAnsi&&U.test(s))return s;if(t?.toUpperCase)return t.locale?s.toLocaleUpperCase(t.locale):s.toUpperCase();const l=t?.locale?.startsWith("de")?z(s):s;return t?.locale?l.toLocaleLowerCase(t.locale):l.toLowerCase()}),o=W(a,t?.joiner??"-");return n&&i&&r.set(i,o),o},"kebabCase");var be=Object.defineProperty,ge=h((e,t)=>be(e,"name",{value:t,configurable:!0}),"r$2"),ve=Object.defineProperty,$e=ge((e,t)=>ve(e,"name",{value:t,configurable:!0}),"a"),we=Object.defineProperty,je=$e((e,t)=>we(e,"name",{value:t,configurable:!0}),"s");const Oe=new E(1e3),Ee=je((e,t)=>T(e,{cacheStore:Oe,...t,joiner:"_",toUpperCase:!0}),"constantCase");var xe=Object.defineProperty,Ae=h((e,t)=>xe(e,"name",{value:t,configurable:!0}),"l$2"),ke=Object.defineProperty,Pe=Ae((e,t)=>ke(e,"name",{value:t,configurable:!0}),"l"),Ce=Object.defineProperty,Se=Pe((e,t)=>Ce(e,"name",{value:t,configurable:!0}),"i");const _e=new E(1e3),We=Se((e,t)=>{if(typeof e!="string"||!e)return"";const n=t?.cache??!1,r=t?.cacheStore??_e;let i;if(n&&(i=S(e,t)),n&&i&&r.has(i))return r.get(i);const a=W(_(e,{handleAnsi:t?.handleAnsi,handleEmoji:t?.handleEmoji,knownAcronyms:t?.knownAcronyms,locale:t?.locale,normalize:t?.normalize,separators:void 0,stripAnsi:t?.stripAnsi,stripEmoji:t?.stripEmoji}).map(o=>{if(t?.handleAnsi&&U.test(o))return o;const s=t?.locale?.startsWith("de")?z(o):o;return q(t?.locale?s.toLocaleLowerCase(t.locale):s.toLowerCase(),{locale:t?.locale})}),"");return n&&i&&r.set(i,a),a},"pascalCase");var Te=Object.defineProperty,Le=h((e,t)=>Te(e,"name",{value:t,configurable:!0}),"r$1"),Me=Object.defineProperty,Fe=Le((e,t)=>Me(e,"name",{value:t,configurable:!0}),"a"),Ne=Object.defineProperty,Re=Fe((e,t)=>Ne(e,"name",{value:t,configurable:!0}),"s");const Ie=new E(1e3),Ue=Re((e,t)=>T(e,{cacheStore:Ie,...t,joiner:"_"}),"snakeCase");var ze=Object.defineProperty,qe=h((e,t)=>ze(e,"name",{value:t,configurable:!0}),"r"),Qe=Object.defineProperty,Ge=qe((e,t)=>Qe(e,"name",{value:t,configurable:!0}),"e"),Ve=Object.defineProperty,Be=Ge((e,t)=>Ve(e,"name",{value:t,configurable:!0}),"i");const De=new E(1e3),Je=Be((e,t)=>{if(typeof e!="string")return"";const n=t?.cache??!1,r=t?.cacheStore??De;let i;if(n&&(i=S(e,t)),n&&i&&r.has(i))return r.get(i);const a=W(_(e,{handleAnsi:t?.handleAnsi,handleEmoji:t?.handleEmoji,knownAcronyms:t?.knownAcronyms,locale:t?.locale,normalize:t?.normalize,separators:void 0,stripAnsi:t?.stripAnsi,stripEmoji:t?.stripEmoji}).map(o=>q(o,{locale:t?.locale})),"-");return n&&i&&r.set(i,a),a},"trainCase");var Ke=Object.defineProperty,d=h((e,t)=>Ke(e,"name",{value:t,configurable:!0}),"e");const y=d(e=>e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):JSON.stringify(e),"stringify"),P={camel_case:d(e=>ae(y(e)),"camel_case"),kebab_case:d(e=>T(y(e)),"kebab_case"),lower_case:d(e=>y(e).toLowerCase(),"lower_case"),pascal_case:d(e=>We(y(e)),"pascal_case"),path_join:d((e,...t)=>{const n=[y(e),...t.map(r=>y(r))];return G(...n)},"path_join"),path_relative:d((e,t)=>Q(y(t),y(e)),"path_relative"),snake_case:d(e=>Ue(y(e)),"snake_case"),upper_case:d(e=>y(e).toUpperCase(),"upper_case"),upper_kebab_case:d(e=>Je(y(e)),"upper_kebab_case"),upper_snake_case:d(e=>Ee(y(e)),"upper_snake_case")};d(e=>Object.hasOwn(P,e),"isKnownFilter");const V=d((e,t,n=[])=>{const r=P[e];if(!r)throw new Error(`Unknown filter "${e}". Known filters: ${Object.keys(P).sort().join(", ")}.`);return r(t,...n)},"applyFilter");var Ye=Object.defineProperty,B=h((e,t)=>Ye(e,"name",{value:t,configurable:!0}),"d$1");const D=B(e=>{const t=[];let n=0,r=0,i,a=-1;for(const o of e){if(a+=1,i){o===i&&(i=void 0);continue}if(o==='"'||o==="'"){i=o;continue}o==="("?n+=1:o===")"?n-=1:o===","&&n===0&&(t.push(e.slice(r,a)),r=a+1)}return t.push(e.slice(r)),t},"splitCommaOutsideQuotes"),He=B(e=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1)},"stripQuotes");var Xe=Object.defineProperty,w=h((e,t)=>Xe(e,"name",{value:t,configurable:!0}),"s$1");const Ze=/\[([^\]]+)\]/g,et=w(e=>{const t=e.trim(),n=t.indexOf("(");if(n===-1)return{args:[],name:t};if(!t.endsWith(")"))throw new Error(`Filter call "${e}" missing closing ")"`);const r=t.slice(0,n).trim(),i=t.slice(n+1,-1).trim();return i===""?{args:[],name:r}:{args:D(i).map(a=>{const o=a.trim();return He(o)??o}),name:r}},"parseFilterCall"),tt=w(e=>{const t=e.split("|").map(r=>r.trim()),n=t[0]??"";if(!n)throw new Error(`Empty variable name in expression "${e}"`);return{filters:t.slice(1).map(r=>et(r)),name:n}},"parsePipe"),rt=w(e=>e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):JSON.stringify(e),"stringify"),nt=w((e,t)=>{const n=e.replaceAll(Ze,(r,i)=>{const{filters:a,name:o}=tt(i);if(!Object.hasOwn(t,o))throw new Error(`Variable "${o}" used in filename "${e}" but not defined`);let s=t[o];for(const l of a)s=V(l.name,s,l.args);return rt(s)});return J(n)},"interpolateFilename"),J=w(e=>e.split("/").map(t=>t.endsWith(".tera")||t.endsWith(".twig")?t.slice(0,-5):t).join("/"),"stripTeraSuffix"),it=w(e=>e.endsWith(".raw")?e.slice(0,-4):e,"stripRawSuffix"),at=w(e=>{const t=e.split("/");return(t.at(-1)??"").startsWith("_")?!0:t.slice(0,-1).includes("partials")},"isPartialPath");var ot=Object.defineProperty,st=h((e,t)=>ot(e,"name",{value:t,configurable:!0}),"i");const lt=st((e,t)=>{if(!e.startsWith(`---
1
+ var ie=Object.defineProperty;var h=(e,t)=>ie(e,"name",{value:t,configurable:!0});import{b5 as S,b6 as E,b7 as _,b8 as U,b9 as z,ba as W,bb as q,bc as ae,o as oe,aD as se,p as le,bd as ce}from"./bin.js";import{z as Q,M as D,$ as A}from"./config.js";var fe=Object.defineProperty,ue=h((e,t)=>fe(e,"name",{value:t,configurable:!0}),"l$3"),pe=Object.defineProperty,me=ue((e,t)=>pe(e,"name",{value:t,configurable:!0}),"l"),de=Object.defineProperty,he=me((e,t)=>de(e,"name",{value:t,configurable:!0}),"o");const ye=new E(1e3),T=he((e,t)=>{if(typeof e!="string")return"";const n=t?.cache??!1,r=t?.cacheStore??ye;let i;if(n&&(i=S(e,t)),n&&i&&r.has(i))return r.get(i);const a=_(e,{handleAnsi:t?.handleAnsi,handleEmoji:t?.handleEmoji,knownAcronyms:t?.knownAcronyms,locale:t?.locale,normalize:t?.normalize,separators:void 0,stripAnsi:t?.stripAnsi,stripEmoji:t?.stripEmoji}).map(s=>{if(t?.handleAnsi&&U.test(s))return s;if(t?.toUpperCase)return t.locale?s.toLocaleUpperCase(t.locale):s.toUpperCase();const l=t?.locale?.startsWith("de")?z(s):s;return t?.locale?l.toLocaleLowerCase(t.locale):l.toLowerCase()}),o=W(a,t?.joiner??"-");return n&&i&&r.set(i,o),o},"kebabCase");var be=Object.defineProperty,ge=h((e,t)=>be(e,"name",{value:t,configurable:!0}),"r$2"),ve=Object.defineProperty,$e=ge((e,t)=>ve(e,"name",{value:t,configurable:!0}),"a"),we=Object.defineProperty,je=$e((e,t)=>we(e,"name",{value:t,configurable:!0}),"s");const Oe=new E(1e3),Ee=je((e,t)=>T(e,{cacheStore:Oe,...t,joiner:"_",toUpperCase:!0}),"constantCase");var xe=Object.defineProperty,Ae=h((e,t)=>xe(e,"name",{value:t,configurable:!0}),"l$2"),ke=Object.defineProperty,Pe=Ae((e,t)=>ke(e,"name",{value:t,configurable:!0}),"l"),Ce=Object.defineProperty,Se=Pe((e,t)=>Ce(e,"name",{value:t,configurable:!0}),"i");const _e=new E(1e3),We=Se((e,t)=>{if(typeof e!="string"||!e)return"";const n=t?.cache??!1,r=t?.cacheStore??_e;let i;if(n&&(i=S(e,t)),n&&i&&r.has(i))return r.get(i);const a=W(_(e,{handleAnsi:t?.handleAnsi,handleEmoji:t?.handleEmoji,knownAcronyms:t?.knownAcronyms,locale:t?.locale,normalize:t?.normalize,separators:void 0,stripAnsi:t?.stripAnsi,stripEmoji:t?.stripEmoji}).map(o=>{if(t?.handleAnsi&&U.test(o))return o;const s=t?.locale?.startsWith("de")?z(o):o;return q(t?.locale?s.toLocaleLowerCase(t.locale):s.toLowerCase(),{locale:t?.locale})}),"");return n&&i&&r.set(i,a),a},"pascalCase");var Te=Object.defineProperty,Le=h((e,t)=>Te(e,"name",{value:t,configurable:!0}),"r$1"),Me=Object.defineProperty,Fe=Le((e,t)=>Me(e,"name",{value:t,configurable:!0}),"a"),Ne=Object.defineProperty,Re=Fe((e,t)=>Ne(e,"name",{value:t,configurable:!0}),"s");const Ie=new E(1e3),Ue=Re((e,t)=>T(e,{cacheStore:Ie,...t,joiner:"_"}),"snakeCase");var ze=Object.defineProperty,qe=h((e,t)=>ze(e,"name",{value:t,configurable:!0}),"r"),Qe=Object.defineProperty,De=qe((e,t)=>Qe(e,"name",{value:t,configurable:!0}),"e"),Ge=Object.defineProperty,Ve=De((e,t)=>Ge(e,"name",{value:t,configurable:!0}),"i");const Be=new E(1e3),Je=Ve((e,t)=>{if(typeof e!="string")return"";const n=t?.cache??!1,r=t?.cacheStore??Be;let i;if(n&&(i=S(e,t)),n&&i&&r.has(i))return r.get(i);const a=W(_(e,{handleAnsi:t?.handleAnsi,handleEmoji:t?.handleEmoji,knownAcronyms:t?.knownAcronyms,locale:t?.locale,normalize:t?.normalize,separators:void 0,stripAnsi:t?.stripAnsi,stripEmoji:t?.stripEmoji}).map(o=>q(o,{locale:t?.locale})),"-");return n&&i&&r.set(i,a),a},"trainCase");var Ke=Object.defineProperty,d=h((e,t)=>Ke(e,"name",{value:t,configurable:!0}),"e");const y=d(e=>e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):JSON.stringify(e),"stringify"),P={camel_case:d(e=>ae(y(e)),"camel_case"),kebab_case:d(e=>T(y(e)),"kebab_case"),lower_case:d(e=>y(e).toLowerCase(),"lower_case"),pascal_case:d(e=>We(y(e)),"pascal_case"),path_join:d((e,...t)=>{const n=[y(e),...t.map(r=>y(r))];return D(...n)},"path_join"),path_relative:d((e,t)=>Q(y(t),y(e)),"path_relative"),snake_case:d(e=>Ue(y(e)),"snake_case"),upper_case:d(e=>y(e).toUpperCase(),"upper_case"),upper_kebab_case:d(e=>Je(y(e)),"upper_kebab_case"),upper_snake_case:d(e=>Ee(y(e)),"upper_snake_case")};d(e=>Object.hasOwn(P,e),"isKnownFilter");const G=d((e,t,n=[])=>{const r=P[e];if(!r)throw new Error(`Unknown filter "${e}". Known filters: ${Object.keys(P).sort().join(", ")}.`);return r(t,...n)},"applyFilter");var Ye=Object.defineProperty,V=h((e,t)=>Ye(e,"name",{value:t,configurable:!0}),"d$1");const B=V(e=>{const t=[];let n=0,r=0,i,a=-1;for(const o of e){if(a+=1,i){o===i&&(i=void 0);continue}if(o==='"'||o==="'"){i=o;continue}o==="("?n+=1:o===")"?n-=1:o===","&&n===0&&(t.push(e.slice(r,a)),r=a+1)}return t.push(e.slice(r)),t},"splitCommaOutsideQuotes"),He=V(e=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1)},"stripQuotes");var Xe=Object.defineProperty,w=h((e,t)=>Xe(e,"name",{value:t,configurable:!0}),"s$1");const Ze=/\[([^\]]+)\]/g,et=w(e=>{const t=e.trim(),n=t.indexOf("(");if(n===-1)return{args:[],name:t};if(!t.endsWith(")"))throw new Error(`Filter call "${e}" missing closing ")"`);const r=t.slice(0,n).trim(),i=t.slice(n+1,-1).trim();return i===""?{args:[],name:r}:{args:B(i).map(a=>{const o=a.trim();return He(o)??o}),name:r}},"parseFilterCall"),tt=w(e=>{const t=e.split("|").map(r=>r.trim()),n=t[0]??"";if(!n)throw new Error(`Empty variable name in expression "${e}"`);return{filters:t.slice(1).map(r=>et(r)),name:n}},"parsePipe"),rt=w(e=>e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):JSON.stringify(e),"stringify"),nt=w((e,t)=>{const n=e.replaceAll(Ze,(r,i)=>{const{filters:a,name:o}=tt(i);if(!Object.hasOwn(t,o))throw new Error(`Variable "${o}" used in filename "${e}" but not defined`);let s=t[o];for(const l of a)s=G(l.name,s,l.args);return rt(s)});return J(n)},"interpolateFilename"),J=w(e=>e.split("/").map(t=>t.endsWith(".tera")||t.endsWith(".twig")?t.slice(0,-5):t).join("/"),"stripTeraSuffix"),it=w(e=>e.endsWith(".raw")?e.slice(0,-4):e,"stripRawSuffix"),at=w(e=>{const t=e.split("/");return(t.at(-1)??"").startsWith("_")?!0:t.slice(0,-1).includes("partials")},"isPartialPath");var ot=Object.defineProperty,st=h((e,t)=>ot(e,"name",{value:t,configurable:!0}),"i");const lt=st((e,t)=>{if(!e.startsWith(`---
2
2
  `)&&!e.startsWith(`---\r
3
3
  `))return{body:e};const n=e.indexOf(`
4
4
  ---`,3);if(n===-1)return{body:e};let r=n+1+3;e[r]==="\r"&&(r+=1),e[r]===`
5
5
  `&&(r+=1);const i=e.startsWith(`---\r
6
6
  `)?5:4,a=e.slice(i,n).replaceAll("\r","");let o;try{o=t(a)}catch(s){const l=s instanceof Error?s.message:String(s);throw new Error(`Failed to parse frontmatter YAML: ${l}`,{cause:s})}if(o==null)return{body:e.slice(r)};if(typeof o!="object"||Array.isArray(o))throw new TypeError(`Frontmatter must be a YAML mapping, got ${Array.isArray(o)?"array":typeof o}`);return{body:e.slice(r),frontmatter:o}},"splitFrontmatter");var ct=Object.defineProperty,f=h((e,t)=>ct(e,"name",{value:t,configurable:!0}),"c");const ft=/\{\{-?(.+?)-?\}\}|\{%-?(.+?)-?%\}/gs,K=f(e=>{const t=[];let n=0,r=1;const i=f(a=>{for(const o of a)o===`
7
- `&&(r+=1)},"advanceLine");for(const a of e.matchAll(ft)){const o=a.index??0;if(o>n){const c=e.slice(n,o);t.push({line:r,type:"text",value:c}),i(c)}const s=r,l=a[0];l.startsWith("{{")?t.push({line:s,type:"expr",value:(a[1]??"").trim()}):t.push({line:s,type:"stmt",value:(a[2]??"").trim()}),i(l),n=o+l.length}if(n<e.length){const a=e.slice(n);t.push({line:r,type:"text",value:a})}return t},"tokenize"),ut=new Set(["block","endblock","endfilter","endmacro","extends","filter","import","macro","set"]),Y=f((e,t)=>{let n=0;const r=f((a,o)=>{throw new Error(`${t}:${a}: ${o}`)},"error"),i=f(a=>{const o=[];for(;n<e.length;){const s=e[n];if(s.type==="text"){o.push({type:"text",value:s.value}),n+=1;continue}if(s.type==="expr"){o.push({expression:s.value,line:s.line,type:"expr"}),n+=1;continue}const l=s.value.split(/\s+/)[0]??"";if(a.includes(l))return o;if(ut.has(l)&&r(s.line,`Tera feature "{% ${l} %}" is not supported. Supported: if/else/endif, for/endfor, include. Rewrite the template to avoid macros, set, extends, block, and import.`),l==="if"){n+=1;const c=s.value.slice(2).trim(),m=i(["else","endif"]);let u;n<e.length&&e[n].type==="stmt"&&e[n].value.split(/\s+/)[0]==="else"&&(n+=1,u=i(["endif"])),(n>=e.length||e[n].type!=="stmt"||e[n].value.split(/\s+/)[0]!=="endif")&&r(s.line,"Unterminated {% if %} — missing {% endif %}"),n+=1,o.push({alternate:u,condition:c,consequent:m,line:s.line,type:"if"});continue}if(l==="for"){n+=1;const c=s.value.slice(3).trim(),m=c.indexOf(" in ");m===-1&&r(s.line,"Malformed {% for %} — expected `for <name> in <collection>`");const u=c.slice(0,m).trim(),g=c.slice(m+4).trim();(!u||!g)&&r(s.line,"Malformed {% for %} — missing binding or collection");const p=i(["endfor"]);(n>=e.length||e[n].type!=="stmt"||e[n].value.split(/\s+/)[0]!=="endfor")&&r(s.line,"Unterminated {% for %} — missing {% endfor %}"),n+=1,o.push({binding:u,body:p,collection:g,line:s.line,type:"for"});continue}if(l==="include"){n+=1;const c=s.value.slice(7).trim(),m=H(c);m===void 0&&r(s.line,"Malformed {% include %} — expected a quoted partial name"),o.push({line:s.line,name:m,type:"include"});continue}r(s.line,`Unknown tag "{% ${l} %}". Supported: if, for, include.`)}return o},"parseBlock");return i([])},"parse"),H=f(e=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1)},"stripQuotes"),pt=f(e=>e==null?"":typeof e=="boolean"||typeof e=="number"?String(e):typeof e=="string"?e:JSON.stringify(e),"stringify"),mt=f(e=>e==null||e===!1||e===0||e===""?!1:Array.isArray(e)?e.length>0:!0,"isTruthy"),X=f((e,t,n,r,i=!0)=>{const a=e.split(".");if(i&&a.length>0&&!Object.hasOwn(t,a[0]))throw new Error(`${r}:${n}: Variable "${e}" is not defined`);let o=t;for(const s of a){if(o==null)return;if(typeof o!="object")throw new TypeError(`${r}:${n}: Cannot read "${s}" on non-object value`);o=o[s]}return o},"lookupVariable"),dt=f(e=>{const t=[];let n=0,r=0,i;for(let a=0;a<e.length;a+=1){const o=e[a];if(i){o===i&&(i=void 0);continue}if(o==='"'||o==="'"){i=o;continue}o==="("?n+=1:o===")"?n-=1:o==="|"&&n===0&&(t.push(e.slice(r,a)),r=a+1)}return t.push(e.slice(r)),t},"splitFilterPipe"),ht=f(e=>{const t=e.trim(),n=t.indexOf("(");if(n===-1)return{args:[],name:t};if(!t.endsWith(")"))throw new Error(`Filter call "${e}" missing closing ")"`);const r=t.slice(0,n).trim(),i=t.slice(n+1,-1).trim();return i?{args:D(i).map(a=>a.trim()),name:r}:{args:[],name:r}},"parseFilterCall"),k=f((e,t,n,r,i=!0)=>{const a=e.trim();if(a==="true")return!0;if(a==="false")return!1;if(a==="null"||a==="none")return null;const o=H(a);return o!==void 0?o:/^-?\d+(?:\.\d+)?$/.test(a)?Number(a):X(a,t,n,r,i)},"evaluatePrimary"),Z=f((e,t,n,r,i=!0)=>{const a=dt(e),o=a[0].trim();let s=k(o,t,n,r,i);for(let l=1;l<a.length;l+=1){const c=a[l].trim(),{args:m,name:u}=ht(c),g=m.map(p=>k(p,t,n,r,i));try{s=V(u,s,g)}catch(p){const $=p instanceof Error?p.message:String(p);throw new Error(`${r}:${n}: ${$}`,{cause:p})}}return s},"evaluateExpression"),ee=f((e,t)=>{let n,r=0;for(let i=0;i<=e.length-t.length;i+=1){const a=e[i];if(n){a===n&&(n=void 0);continue}if(a==='"'||a==="'"){n=a;continue}if(a==="("){r+=1;continue}if(a===")"){r-=1;continue}if(r===0&&e.slice(i,i+t.length)===t)return i}return-1},"findOperatorOutsideQuotes"),N=f((e,t)=>{const n=[];let r=0,i=0;for(;i<=e.length-t.length;){const a=ee(e.slice(i),t);if(a===-1)break;n.push(e.slice(r,i+a)),i+=a+t.length,r=i}return n.push(e.slice(r)),n},"splitLogical"),j=f((e,t,n,r)=>{const i=e.trim();if(i==="")return!1;if(i.startsWith("(")&&i.endsWith(")")&&yt(i)===i.length-1)return j(i.slice(1,-1),t,n,r);const a=N(i," or ");if(a.length>1)return a.some(s=>j(s,t,n,r));const o=N(i," and ");if(o.length>1)return o.every(s=>j(s,t,n,r));if(i.startsWith("not "))return!j(i.slice(4),t,n,r);for(const s of["==","!="]){const l=ee(i,s);if(l!==-1){const c=k(i.slice(0,l),t,r,n,!1),m=k(i.slice(l+s.length),t,r,n,!1),u=c===m;return s==="=="?u:!u}}return mt(Z(i,t,r,n,!1))},"evaluateConditionExpression"),yt=f(e=>{if(e[0]!=="(")return-1;let t=0,n,r=-1;for(const i of e){if(r+=1,n){i===n&&(n=void 0);continue}if(i==='"'||i==="'"){n=i;continue}if(i==="(")t+=1;else if(i===")"&&(t-=1,t===0))return r}return-1},"matchingParen"),O=f((e,t)=>{let n="";for(const r of e){if(r.type==="text"){n+=r.value;continue}if(r.type==="expr"){n+=pt(Z(r.expression,t.scope,r.line,t.filename));continue}if(r.type==="if"){const i=j(r.condition,t.scope,t.filename,r.line)?r.consequent:r.alternate??[];n+=O(i,t);continue}if(r.type==="for"){const i=X(r.collection,t.scope,r.line,t.filename,!1);if(i==null)continue;if(!Array.isArray(i))throw new TypeError(`${t.filename}:${r.line}: {% for %} expected an array, got ${typeof i}`);for(const a of i){const o={...t.scope,[r.binding]:a};n+=O(r.body,{...t,scope:o})}continue}if(r.type==="include"){const i=t.partials?.get(r.name);if(!i)throw new Error(`${t.filename}:${r.line}: Partial "${r.name}" not found. Available: ${[...t.partials?.keys()??[]].join(", ")||"(none)"}`);const a=t.includeStack??new Set;if(a.has(r.name)){const o=[...a,r.name].join(" → ");throw new Error(`${t.filename}:${r.line}: Circular partial include detected: ${o}`)}a.add(r.name);try{n+=O(i,{...t,filename:`<partial:${r.name}>`,includeStack:a})}finally{a.delete(r.name)}}}return n},"renderNodes"),bt=f((e,t)=>Y(K(e),t),"parseTemplate");f((e,t)=>O(e,t),"renderAst");const C=f((e,t)=>O(Y(K(e),t.filename),t),"renderTemplate");var gt=Object.defineProperty,b=h((e,t)=>gt(e,"name",{value:t,configurable:!0}),"s");const R="template.yml",vt=".raw",$t=new Set([".cjs",".css",".env",".gitattributes",".gitignore",".graphql",".html",".ini",".js",".json",".json5",".jsonc",".jsx",".lock",".md",".mdx",".mjs",".prettierrc",".raw",".rs",".scss",".sh",".sql",".svg",".tera",".toml",".ts",".tsx",".twig",".txt",".vue",".xml",".yaml",".yml"]),wt=new Set(["Brewfile","CHANGELOG","CODEOWNERS","CONTRIBUTING","COPYING","Dockerfile","Gemfile","LICENCE","LICENSE","Makefile","NOTICE","Procfile","Rakefile","README","VERSION"]),jt=b(e=>{const t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\")),n=t===-1?e:e.slice(t+1),r=n.lastIndexOf(".");return r===-1||r===0?"":n.slice(r).toLowerCase()},"lastDot"),te=b(e=>{const t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t===-1?e:e.slice(t+1)},"basename"),Ot=b(e=>{const t=jt(e);if(t!=="")return $t.has(t);const n=te(e);return wt.has(n)},"isLikelyText"),Et=b(e=>{const t={default:e.default,internal:e.internal,order:e.order,prompt:e.prompt,required:e.required};switch(e.type){case"array":return{...t,type:"array"};case"boolean":return{...t,default:typeof t.default=="boolean"?t.default:void 0,type:"boolean"};case"enum":return{...t,multiple:e.multiple,type:"enum",values:e.values??[]};case"number":return{...t,type:"number"};case"string":return{...t,type:"string"};default:throw new Error(`Unsupported variable type "${String(e.type)}"`)}},"yamlVariableToVariable"),xt=b(e=>e.replaceAll("\\","/").replace(/^\.\//,"").replaceAll(/\/+/g,"/"),"normalizeDestinationPath"),At=b((e,t,n)=>{const r=t.split("/").filter(Boolean);if(r.length===0)throw new Error("Empty destination path for value");let i=e;for(let a=0;a<r.length-1;a+=1){const o=r[a],s=i[o];if(s===void 0){const l={};i[o]=l,i=l}else if(typeof s=="object"&&!Buffer.isBuffer(s))i=s;else throw new TypeError(`Path conflict: "${r.slice(0,a+1).join("/")}" is both a file and a directory`)}i[r.at(-1)]=n},"flattenFiles"),I=b((e,t,n)=>{if(typeof e!="string")return kt(e);const r=e.includes("{{")||e.includes("{%")?C(e,{filename:`${n}#frontmatter`,scope:t}):e;return j(r,t,`${n}#frontmatter`,1)},"evaluateGate"),kt=b(e=>e==null||e===!1||e===0||e===""?!1:Array.isArray(e)?e.length>0:typeof e=="string"?e!=="false"&&e!=="0":!0,"truthyValue"),Wt=b((e,t)=>{const n=G(e,R),r=oe(n);if(!r||typeof r!="object")throw new Error(`${n}: must contain a YAML mapping`);const i={};if(r.variables)for(const[l,c]of Object.entries(r.variables))i[l]=Et(c);const a=new Map,o=[];for(const l of se(e,{includeDirs:!1,includeSymlinks:!1})){if(l.path===n)continue;const c=Q(e,l.path).replaceAll("\\","/");if(c===R)continue;if(at(c)){const u=A(l.path),g=bt(u,c);for(const p of Pt(c))a.has(p)&&a.get(p)!==g&&le.warn(`partial name "${p}" is declared by multiple files — last one wins. Use distinct names or fully-qualified includes.`),a.set(p,g);continue}if(c.endsWith(vt)){const u=A(l.path);o.push({binary:null,isRaw:!0,rawText:u,relativePath:c});continue}if(Ot(c)){const u=A(l.path);o.push({binary:null,isRaw:!1,rawText:u,relativePath:c});continue}const m=A(l.path,{buffer:!0});o.push({binary:m,isRaw:!1,rawText:null,relativePath:c})}const s=b(l=>{const c={...l.builtins,...l.options},m={},u={};for(const p of o){const $=p.relativePath;let x,L,M=!1;if(p.binary)x=p.binary;else if(p.isRaw)x=p.rawText??"";else{const re=p.rawText??"",v=lt(re,ne=>ce(ne));if(v.frontmatter){if(v.frontmatter.skip!==void 0&&I(v.frontmatter.skip,c,$)||v.frontmatter.if!==void 0&&!I(v.frontmatter.if,c,$))continue;typeof v.frontmatter.to=="string"&&(L=C(v.frontmatter.to,{filename:`${$}#frontmatter.to`,partials:a,scope:c})),v.frontmatter.force===!0&&(M=!0)}x=C(v.body,{filename:$,partials:a,scope:c})}const F=xt(L??nt(it($),c));At(m,F,x),M&&(u[F]={force:!0})}const g={files:m};return Object.keys(u).length>0&&(g.filesMeta=u),g},"produce");return{about:{description:r.description??`Moon-format template at ${e}`,name:r.title??t},destination:r.destination,options:i,produce:s}},"loadMoonTemplate"),Pt=b(e=>{const t=J(e),n=te(t),r=new Set([n,t]);if(n.startsWith("_")){r.add(n.replace(/^_+/,""));const i=t.slice(0,t.length-n.length);r.add(`${i}${n.replace(/^_+/,"")}`)}return[...r]},"partialKeys");export{Wt as loadMoonTemplate};
7
+ `&&(r+=1)},"advanceLine");for(const a of e.matchAll(ft)){const o=a.index??0;if(o>n){const c=e.slice(n,o);t.push({line:r,type:"text",value:c}),i(c)}const s=r,l=a[0];l.startsWith("{{")?t.push({line:s,type:"expr",value:(a[1]??"").trim()}):t.push({line:s,type:"stmt",value:(a[2]??"").trim()}),i(l),n=o+l.length}if(n<e.length){const a=e.slice(n);t.push({line:r,type:"text",value:a})}return t},"tokenize"),ut=new Set(["block","endblock","endfilter","endmacro","extends","filter","import","macro","set"]),Y=f((e,t)=>{let n=0;const r=f((a,o)=>{throw new Error(`${t}:${a}: ${o}`)},"error"),i=f(a=>{const o=[];for(;n<e.length;){const s=e[n];if(s.type==="text"){o.push({type:"text",value:s.value}),n+=1;continue}if(s.type==="expr"){o.push({expression:s.value,line:s.line,type:"expr"}),n+=1;continue}const l=s.value.split(/\s+/)[0]??"";if(a.includes(l))return o;if(ut.has(l)&&r(s.line,`Tera feature "{% ${l} %}" is not supported. Supported: if/else/endif, for/endfor, include. Rewrite the template to avoid macros, set, extends, block, and import.`),l==="if"){n+=1;const c=s.value.slice(2).trim(),m=i(["else","endif"]);let u;n<e.length&&e[n].type==="stmt"&&e[n].value.split(/\s+/)[0]==="else"&&(n+=1,u=i(["endif"])),(n>=e.length||e[n].type!=="stmt"||e[n].value.split(/\s+/)[0]!=="endif")&&r(s.line,"Unterminated {% if %} — missing {% endif %}"),n+=1,o.push({alternate:u,condition:c,consequent:m,line:s.line,type:"if"});continue}if(l==="for"){n+=1;const c=s.value.slice(3).trim(),m=c.indexOf(" in ");m===-1&&r(s.line,"Malformed {% for %} — expected `for <name> in <collection>`");const u=c.slice(0,m).trim(),g=c.slice(m+4).trim();(!u||!g)&&r(s.line,"Malformed {% for %} — missing binding or collection");const p=i(["endfor"]);(n>=e.length||e[n].type!=="stmt"||e[n].value.split(/\s+/)[0]!=="endfor")&&r(s.line,"Unterminated {% for %} — missing {% endfor %}"),n+=1,o.push({binding:u,body:p,collection:g,line:s.line,type:"for"});continue}if(l==="include"){n+=1;const c=s.value.slice(7).trim(),m=H(c);m===void 0&&r(s.line,"Malformed {% include %} — expected a quoted partial name"),o.push({line:s.line,name:m,type:"include"});continue}r(s.line,`Unknown tag "{% ${l} %}". Supported: if, for, include.`)}return o},"parseBlock");return i([])},"parse"),H=f(e=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1)},"stripQuotes"),pt=f(e=>e==null?"":typeof e=="boolean"||typeof e=="number"?String(e):typeof e=="string"?e:JSON.stringify(e),"stringify"),mt=f(e=>e==null||e===!1||e===0||e===""?!1:Array.isArray(e)?e.length>0:!0,"isTruthy"),X=f((e,t,n,r,i=!0)=>{const a=e.split(".");if(i&&a.length>0&&!Object.hasOwn(t,a[0]))throw new Error(`${r}:${n}: Variable "${e}" is not defined`);let o=t;for(const s of a){if(o==null)return;if(typeof o!="object")throw new TypeError(`${r}:${n}: Cannot read "${s}" on non-object value`);o=o[s]}return o},"lookupVariable"),dt=f(e=>{const t=[];let n=0,r=0,i;for(let a=0;a<e.length;a+=1){const o=e[a];if(i){o===i&&(i=void 0);continue}if(o==='"'||o==="'"){i=o;continue}o==="("?n+=1:o===")"?n-=1:o==="|"&&n===0&&(t.push(e.slice(r,a)),r=a+1)}return t.push(e.slice(r)),t},"splitFilterPipe"),ht=f(e=>{const t=e.trim(),n=t.indexOf("(");if(n===-1)return{args:[],name:t};if(!t.endsWith(")"))throw new Error(`Filter call "${e}" missing closing ")"`);const r=t.slice(0,n).trim(),i=t.slice(n+1,-1).trim();return i?{args:B(i).map(a=>a.trim()),name:r}:{args:[],name:r}},"parseFilterCall"),k=f((e,t,n,r,i=!0)=>{const a=e.trim();if(a==="true")return!0;if(a==="false")return!1;if(a==="null"||a==="none")return null;const o=H(a);return o!==void 0?o:/^-?\d+(?:\.\d+)?$/.test(a)?Number(a):X(a,t,n,r,i)},"evaluatePrimary"),Z=f((e,t,n,r,i=!0)=>{const a=dt(e),o=a[0].trim();let s=k(o,t,n,r,i);for(let l=1;l<a.length;l+=1){const c=a[l].trim(),{args:m,name:u}=ht(c),g=m.map(p=>k(p,t,n,r,i));try{s=G(u,s,g)}catch(p){const $=p instanceof Error?p.message:String(p);throw new Error(`${r}:${n}: ${$}`,{cause:p})}}return s},"evaluateExpression"),ee=f((e,t)=>{let n,r=0;for(let i=0;i<=e.length-t.length;i+=1){const a=e[i];if(n){a===n&&(n=void 0);continue}if(a==='"'||a==="'"){n=a;continue}if(a==="("){r+=1;continue}if(a===")"){r-=1;continue}if(r===0&&e.slice(i,i+t.length)===t)return i}return-1},"findOperatorOutsideQuotes"),N=f((e,t)=>{const n=[];let r=0,i=0;for(;i<=e.length-t.length;){const a=ee(e.slice(i),t);if(a===-1)break;n.push(e.slice(r,i+a)),i+=a+t.length,r=i}return n.push(e.slice(r)),n},"splitLogical"),j=f((e,t,n,r)=>{const i=e.trim();if(i==="")return!1;if(i.startsWith("(")&&i.endsWith(")")&&yt(i)===i.length-1)return j(i.slice(1,-1),t,n,r);const a=N(i," or ");if(a.length>1)return a.some(s=>j(s,t,n,r));const o=N(i," and ");if(o.length>1)return o.every(s=>j(s,t,n,r));if(i.startsWith("not "))return!j(i.slice(4),t,n,r);for(const s of["==","!="]){const l=ee(i,s);if(l!==-1){const c=k(i.slice(0,l),t,r,n,!1),m=k(i.slice(l+s.length),t,r,n,!1),u=c===m;return s==="=="?u:!u}}return mt(Z(i,t,r,n,!1))},"evaluateConditionExpression"),yt=f(e=>{if(e[0]!=="(")return-1;let t=0,n,r=-1;for(const i of e){if(r+=1,n){i===n&&(n=void 0);continue}if(i==='"'||i==="'"){n=i;continue}if(i==="(")t+=1;else if(i===")"&&(t-=1,t===0))return r}return-1},"matchingParen"),O=f((e,t)=>{let n="";for(const r of e){if(r.type==="text"){n+=r.value;continue}if(r.type==="expr"){n+=pt(Z(r.expression,t.scope,r.line,t.filename));continue}if(r.type==="if"){const i=j(r.condition,t.scope,t.filename,r.line)?r.consequent:r.alternate??[];n+=O(i,t);continue}if(r.type==="for"){const i=X(r.collection,t.scope,r.line,t.filename,!1);if(i==null)continue;if(!Array.isArray(i))throw new TypeError(`${t.filename}:${r.line}: {% for %} expected an array, got ${typeof i}`);for(const a of i){const o={...t.scope,[r.binding]:a};n+=O(r.body,{...t,scope:o})}continue}if(r.type==="include"){const i=t.partials?.get(r.name);if(!i)throw new Error(`${t.filename}:${r.line}: Partial "${r.name}" not found. Available: ${[...t.partials?.keys()??[]].join(", ")||"(none)"}`);const a=t.includeStack??new Set;if(a.has(r.name)){const o=[...a,r.name].join(" → ");throw new Error(`${t.filename}:${r.line}: Circular partial include detected: ${o}`)}a.add(r.name);try{n+=O(i,{...t,filename:`<partial:${r.name}>`,includeStack:a})}finally{a.delete(r.name)}}}return n},"renderNodes"),bt=f((e,t)=>Y(K(e),t),"parseTemplate");f((e,t)=>O(e,t),"renderAst");const C=f((e,t)=>O(Y(K(e),t.filename),t),"renderTemplate");var gt=Object.defineProperty,b=h((e,t)=>gt(e,"name",{value:t,configurable:!0}),"s");const R="template.yml",vt=".raw",$t=new Set([".cjs",".css",".env",".gitattributes",".gitignore",".graphql",".html",".ini",".js",".json",".json5",".jsonc",".jsx",".lock",".md",".mdx",".mjs",".prettierrc",".raw",".rs",".scss",".sh",".sql",".svg",".tera",".toml",".ts",".tsx",".twig",".txt",".vue",".xml",".yaml",".yml"]),wt=new Set(["Brewfile","CHANGELOG","CODEOWNERS","CONTRIBUTING","COPYING","Dockerfile","Gemfile","LICENCE","LICENSE","Makefile","NOTICE","Procfile","Rakefile","README","VERSION"]),jt=b(e=>{const t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\")),n=t===-1?e:e.slice(t+1),r=n.lastIndexOf(".");return r===-1||r===0?"":n.slice(r).toLowerCase()},"lastDot"),te=b(e=>{const t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t===-1?e:e.slice(t+1)},"basename"),Ot=b(e=>{const t=jt(e);if(t!=="")return $t.has(t);const n=te(e);return wt.has(n)},"isLikelyText"),Et=b(e=>{const t={default:e.default,internal:e.internal,order:e.order,prompt:e.prompt,required:e.required};switch(e.type){case"array":return{...t,type:"array"};case"boolean":return{...t,default:typeof t.default=="boolean"?t.default:void 0,type:"boolean"};case"enum":return{...t,multiple:e.multiple,type:"enum",values:e.values??[]};case"number":return{...t,type:"number"};case"string":return{...t,type:"string"};default:throw new Error(`Unsupported variable type "${String(e.type)}"`)}},"yamlVariableToVariable"),xt=b(e=>e.replaceAll("\\","/").replace(/^\.\//,"").replaceAll(/\/+/g,"/"),"normalizeDestinationPath"),At=b((e,t,n)=>{const r=t.split("/").filter(Boolean);if(r.length===0)throw new Error("Empty destination path for value");let i=e;for(let a=0;a<r.length-1;a+=1){const o=r[a],s=i[o];if(s===void 0){const l={};i[o]=l,i=l}else if(typeof s=="object"&&!Buffer.isBuffer(s))i=s;else throw new TypeError(`Path conflict: "${r.slice(0,a+1).join("/")}" is both a file and a directory`)}i[r.at(-1)]=n},"flattenFiles"),I=b((e,t,n)=>{if(typeof e!="string")return kt(e);const r=e.includes("{{")||e.includes("{%")?C(e,{filename:`${n}#frontmatter`,scope:t}):e;return j(r,t,`${n}#frontmatter`,1)},"evaluateGate"),kt=b(e=>e==null||e===!1||e===0||e===""?!1:Array.isArray(e)?e.length>0:typeof e=="string"?e!=="false"&&e!=="0":!0,"truthyValue"),Wt=b((e,t)=>{const n=D(e,R),r=oe(n);if(!r||typeof r!="object")throw new Error(`${n}: must contain a YAML mapping`);const i={};if(r.variables)for(const[l,c]of Object.entries(r.variables))i[l]=Et(c);const a=new Map,o=[];for(const l of se(e,{includeDirs:!1,includeSymlinks:!1})){if(l.path===n)continue;const c=Q(e,l.path).replaceAll("\\","/");if(c===R)continue;if(at(c)){const u=A(l.path),g=bt(u,c);for(const p of Pt(c))a.has(p)&&a.get(p)!==g&&le.warn(`partial name "${p}" is declared by multiple files — last one wins. Use distinct names or fully-qualified includes.`),a.set(p,g);continue}if(c.endsWith(vt)){const u=A(l.path);o.push({binary:null,isRaw:!0,rawText:u,relativePath:c});continue}if(Ot(c)){const u=A(l.path);o.push({binary:null,isRaw:!1,rawText:u,relativePath:c});continue}const m=A(l.path,{buffer:!0});o.push({binary:m,isRaw:!1,rawText:null,relativePath:c})}const s=b(l=>{const c={...l.builtins,...l.options},m={},u={};for(const p of o){const $=p.relativePath;let x,L,M=!1;if(p.binary)x=p.binary;else if(p.isRaw)x=p.rawText??"";else{const re=p.rawText??"",v=lt(re,ne=>ce(ne));if(v.frontmatter){if(v.frontmatter.skip!==void 0&&I(v.frontmatter.skip,c,$)||v.frontmatter.if!==void 0&&!I(v.frontmatter.if,c,$))continue;typeof v.frontmatter.to=="string"&&(L=C(v.frontmatter.to,{filename:`${$}#frontmatter.to`,partials:a,scope:c})),v.frontmatter.force===!0&&(M=!0)}x=C(v.body,{filename:$,partials:a,scope:c})}const F=xt(L??nt(it($),c));At(m,F,x),M&&(u[F]={force:!0})}const g={files:m};return Object.keys(u).length>0&&(g.filesMeta=u),g},"produce");return{about:{description:r.description??`Moon-format template at ${e}`,name:r.title??t},destination:r.destination,options:i,produce:s}},"loadMoonTemplate"),Pt=b(e=>{const t=J(e),n=te(t),r=new Set([n,t]);if(n.startsWith("_")){r.add(n.replace(/^_+/,""));const i=t.slice(0,t.length-n.length);r.add(`${i}${n.replace(/^_+/,"")}`)}return[...r]},"partialKeys");export{Wt as loadMoonTemplate};
@@ -1,4 +1,4 @@
1
- var i=Object.defineProperty;var a=(r,e)=>i(r,"name",{value:e,configurable:!0});import{p as s}from"./bin.js";import{c as o,f as c}from"../packem_shared/registry-keys-CewRFW0e.js";var n=Object.defineProperty,f=a((r,e)=>n(r,"name",{value:e,configurable:!0}),"n");const g=f(async({options:r})=>{if(r.clear){const t=o();if(r.json){process.stdout.write(`${JSON.stringify({cleared:t,refetched:!1},void 0,2)}
1
+ var i=Object.defineProperty;var a=(r,e)=>i(r,"name",{value:e,configurable:!0});import{p as s}from"./bin.js";import{c as o,f as c}from"../packem_shared/registry-keys-3qaVog76.js";var n=Object.defineProperty,f=a((r,e)=>n(r,"name",{value:e,configurable:!0}),"n");const g=f(async({options:r})=>{if(r.clear){const t=o();if(r.json){process.stdout.write(`${JSON.stringify({cleared:t,refetched:!1},void 0,2)}
2
2
  `);return}s.success(t?"Cleared cached npm signing keys.":"No cached npm signing keys to clear.");return}const e=await c({forceRefresh:!0});if(e===void 0){if(r.json){process.stdout.write(`${JSON.stringify({cleared:!1,error:"fetch-failed",refetched:!1},void 0,2)}
3
3
  `),process.exitCode=1;return}s.error("Failed to fetch npm signing keys (network error and no cached keys available)."),process.exitCode=1;return}if(r.json){process.stdout.write(`${JSON.stringify({cleared:!1,fromCache:e.fromCache,keyCount:e.keys.length,refetched:!e.fromCache,stale:e.stale??!1},void 0,2)}
4
4
  `);return}if(e.fromCache&&e.stale===!0){s.warn(`Network fetch failed — falling back to expired cache (${String(e.keys.length)} keys).`);return}s.success(`Refreshed npm signing keys (${String(e.keys.length)} keys).`)},"execute");export{g as default};
@@ -1,3 +1,3 @@
1
- var x=Object.defineProperty;var k=(t,s)=>x(t,"name",{value:s,configurable:!0});import{createRequire as B}from"node:module";import{A as P,ak as R,p as o,al as V}from"./bin.js";import{x as C}from"../packem_shared/build-scripts-DsWMSWDs.js";import{M as y,i as w,n as q}from"./config.js";const D=B(import.meta.url),v=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,M=k(t=>{if(typeof v<"u"&&v.versions&&v.versions.node){const[s,f]=v.versions.node.split(".").map(Number);if(s>22||s===22&&f>=3||s===20&&f>=16)return v.getBuiltinModule(t)}return D(t)},"__cjs_getBuiltinModule"),{readdirSync:j,statSync:O}=M("node:fs");var A=Object.defineProperty,_=k((t,s)=>A(t,"name",{value:s,configurable:!0}),"p$1");const N=_((t,s={})=>{const f=y(t,"node_modules");if(!w(f))return[];const l=new Map,p=new Set,b=_((n,i,a)=>{const e=`${i}@${a}`;if(p.has(e))return;p.add(e);const r=a.startsWith(t)?a.slice(t.length+1):a;let u=l.get(n);u||(u=[],l.set(n,u)),u.some($=>$.name===i)||u.push({name:i,relativePath:r})},"recordBin"),m=_((n,i="")=>{let a;try{a=j(n)}catch{return}for(const e of a){const r=y(n,e);if(e.startsWith("@")){m(r,`${e}/`);continue}if(e===".pnpm"&&i===""){let c;try{c=j(r)}catch{continue}for(const d of c){const h=y(r,d,"node_modules");w(h)&&m(h)}continue}if(e.startsWith("."))continue;const u=i+e,$=y(r,"package.json");try{if(!O(r).isDirectory()||!w($))continue;const c=q($),d=typeof c.name=="string"?c.name:u;if(typeof c.bin=="string"){const S=d.includes("/")?d.split("/").pop():d;b(S,d,r)}else if(c.bin&&typeof c.bin=="object")for(const S of Object.keys(c.bin))b(S,d,r);const h=y(r,"node_modules");w(h)&&m(h)}catch{}}},"scanDir");m(f);const g=[];for(const[n,i]of l)i.length<2||s[n]===!0||i.every(a=>s[`${a.name}#${n}`]===!0)||g.push({bin:n,packages:i});return g.sort((n,i)=>n.bin.localeCompare(i.bin))},"collectBinShadows");var T=Object.defineProperty,W=k((t,s)=>T(t,"name",{value:s,configurable:!0}),"p");const U=new Set(["bun","npm","pnpm","yarn"]),H=W(({options:t,visConfig:s,workspaceRoot:f})=>{const l=f??process.cwd(),p=P(l),b=s?.security?.policies?.installScripts?.allow??{},m=s?.security?.allowBins??{},g=s?.security?.pinVersions===!0,n=C(l,b,{pinVersions:g}),i=N(l,m),a=s&&U.has(p.name)?R(s,p.name,l):void 0;if(t.json){process.stdout.write(`${JSON.stringify({binConflicts:i,drift:a,excess:n.excess,installed:n.installed.map(e=>({hooks:e.hooks,name:e.name,version:e.version})),packageManager:p.name,pinVersions:g,unapproved:n.unapproved.map(e=>({hooks:e.hooks,name:e.name,version:e.version})),versionDrift:n.versionDrift},void 0,2)}
1
+ var x=Object.defineProperty;var w=(t,s)=>x(t,"name",{value:s,configurable:!0});import{createRequire as B}from"node:module";import{A as P,ao as R,p as o,ap as V}from"./bin.js";import{x as C}from"../packem_shared/build-scripts-DsWMSWDs.js";import{M as y,i as k,n as q}from"./config.js";const D=B(import.meta.url),v=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,M=w(t=>{if(typeof v<"u"&&v.versions&&v.versions.node){const[s,f]=v.versions.node.split(".").map(Number);if(s>22||s===22&&f>=3||s===20&&f>=16)return v.getBuiltinModule(t)}return D(t)},"__cjs_getBuiltinModule"),{readdirSync:j,statSync:O}=M("node:fs");var A=Object.defineProperty,_=w((t,s)=>A(t,"name",{value:s,configurable:!0}),"p$1");const N=_((t,s={})=>{const f=y(t,"node_modules");if(!k(f))return[];const l=new Map,p=new Set,b=_((n,i,a)=>{const e=`${i}@${a}`;if(p.has(e))return;p.add(e);const r=a.startsWith(t)?a.slice(t.length+1):a;let u=l.get(n);u||(u=[],l.set(n,u)),u.some($=>$.name===i)||u.push({name:i,relativePath:r})},"recordBin"),m=_((n,i="")=>{let a;try{a=j(n)}catch{return}for(const e of a){const r=y(n,e);if(e.startsWith("@")){m(r,`${e}/`);continue}if(e===".pnpm"&&i===""){let c;try{c=j(r)}catch{continue}for(const d of c){const h=y(r,d,"node_modules");k(h)&&m(h)}continue}if(e.startsWith("."))continue;const u=i+e,$=y(r,"package.json");try{if(!O(r).isDirectory()||!k($))continue;const c=q($),d=typeof c.name=="string"?c.name:u;if(typeof c.bin=="string"){const S=d.includes("/")?d.split("/").pop():d;b(S,d,r)}else if(c.bin&&typeof c.bin=="object")for(const S of Object.keys(c.bin))b(S,d,r);const h=y(r,"node_modules");k(h)&&m(h)}catch{}}},"scanDir");m(f);const g=[];for(const[n,i]of l)i.length<2||s[n]===!0||i.every(a=>s[`${a.name}#${n}`]===!0)||g.push({bin:n,packages:i});return g.sort((n,i)=>n.bin.localeCompare(i.bin))},"collectBinShadows");var T=Object.defineProperty,W=w((t,s)=>T(t,"name",{value:s,configurable:!0}),"p");const U=new Set(["bun","npm","pnpm","yarn"]),H=W(({options:t,visConfig:s,workspaceRoot:f})=>{const l=f??process.cwd(),p=P(l),b=s?.security?.policies?.installScripts?.allow??{},m=s?.security?.allowBins??{},g=s?.security?.pinVersions===!0,n=C(l,b,{pinVersions:g}),i=N(l,m),a=s&&U.has(p.name)?R(s,p.name,l):void 0;if(t.json){process.stdout.write(`${JSON.stringify({binConflicts:i,drift:a,excess:n.excess,installed:n.installed.map(e=>({hooks:e.hooks,name:e.name,version:e.version})),packageManager:p.name,pinVersions:g,unapproved:n.unapproved.map(e=>({hooks:e.hooks,name:e.name,version:e.version})),versionDrift:n.versionDrift},void 0,2)}
2
2
  `);return}if(o.info(`Build-script status (${p.name}):
3
3
  `),n.installed.length===0&&n.unapproved.length===0&&o.success(" No installed packages declare lifecycle scripts."),n.installed.length>0){o.success(` Approved (${String(n.installed.length)}):`);for(const e of n.installed)o.info(` ✓ ${e.name} — ${e.hooks.join(", ")}`)}if(n.unapproved.length>0){o.info(""),o.warn(` Unapproved (${String(n.unapproved.length)}):`);for(const e of n.unapproved)o.info(` ✗ ${e.name} — ${e.hooks.join(", ")}`);o.notice(" Run 'vis approve-builds' to review.")}if(n.excess.length>0){o.info(""),o.warn(` Stale allowlist entries (${String(n.excess.length)}):`);for(const e of n.excess)o.info(` ! ${e}`);o.notice(" Remove these from vis.config.ts security.policies.installScripts.allow.")}if(n.versionDrift.length>0){o.info(""),o.warn(` Version drift (pinVersions: true) — ${String(n.versionDrift.length)} entr${n.versionDrift.length===1?"y":"ies"} point at outdated versions:`);for(const{from:e,to:r}of n.versionDrift)o.info(` ${e} → ${r}`);o.notice(" Update vis.config.ts security.policies.installScripts.allow keys to migrate.")}if(i.length>0){o.info(""),o.warn(` Bin conflicts (${String(i.length)}) — multiple packages expose the same bin name:`);for(const e of i)o.info(` ${e.bin} ← ${e.packages.map(r=>r.name).join(", ")}`);o.notice(" Add the bin (or 'pkg#bin') to vis.config.ts security.allowBins to silence this.")}if(a?.hasDrift){o.info("");for(const e of V(a))o.warn(e)}},"execute");export{H as default};
@@ -1 +1,4 @@
1
- var u=Object.defineProperty;var o=(t,e)=>u(t,"name",{value:e,configurable:!0});import{g as n}from"./config.js";import{createJiti as l}from"jiti";var p=Object.defineProperty,a=o((t,e)=>p(t,"name",{value:e,configurable:!0}),"r");const i=a((t,e)=>{if(!e||typeof e!="object")throw new TypeError(`${t}: default export must be an object (got ${e===null?"null":typeof e}). Use createTemplate({ ... }).`);const r=e;if(typeof r.about!="object"||r.about===null)throw new TypeError(`${t}: default export missing required "about" object`);if(typeof r.produce!="function")throw new TypeError(`${t}: default export missing required "produce" function`);return e},"validateTemplateExport"),m=a(async t=>{const e=await l(n(t),{fsCache:!1,moduleCache:!1}).import(t,{default:!0,try:!0})??null;return i(t,e)},"loadNativeTemplate");export{m as loadNativeTemplate};
1
+ var w=Object.defineProperty;var c=(e,t)=>w(e,"name",{value:t,configurable:!0});import{createRequire as y}from"node:module";import{A as m,u as $}from"./bin.js";const _=y(import.meta.url),a=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,v=c(e=>{if(typeof a<"u"&&a.versions&&a.versions.node){const[t,s]=a.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return a.getBuiltinModule(e)}return _(e)},"__cjs_getBuiltinModule"),{createInterface:I}=v("node:readline");var h=Object.defineProperty,o=c((e,t)=>h(e,"name",{value:t,configurable:!0}),"n");const r="sigstore",b=o(()=>!!process.stdout.isTTY&&process.env.CI!=="true","isInteractive"),O=o(e=>new Promise(t=>{const s=I({input:process.stdin,output:process.stderr});s.question(`${e} (Y/n) `,i=>{s.close();const n=i.trim().toLowerCase();t(n===""||n==="y"||n==="yes")})}),"defaultPrompt"),D=o(e=>{const t=m(e),s=$(t,{exact:!1,filter:[],global:!1,optional:!1,packages:[r],peer:!1,saveDev:!0,workspace:!1,workspaceRoot:!1},e,console);return Promise.resolve({exitCode:s})},"defaultRunInstall"),k=o(()=>{try{return import.meta.resolve(r),!0}catch{return!1}},"isSigstoreInstalled"),R=o(e=>{let t="pnpm";try{t=m(e).name}catch{}switch(t){case"bun":return`bun add -d ${r}`;case"npm":return`npm install -D ${r}`;case"yarn":return`yarn add -D ${r}`;default:return`pnpm add -D ${r}`}},"installCommandFor"),C=o(()=>import("sigstore"),"defaultImport"),x=o(async(e={})=>{const t=e.interactive??b(),s=e.prompt??O,i=e.runInstall??D,n=e.importImpl??C,u=e.workspaceRoot??process.cwd(),l=R(u);try{return await n()}catch(p){const{code:f,message:g}=p;if(!(f==="ERR_MODULE_NOT_FOUND"||f==="MODULE_NOT_FOUND")||!g.includes(r))throw p}if(!t)throw new Error(`${r} is not installed. \`vis attest\` needs it for keyless signing/verification. Install it in your repo first:
2
+ ${l}`);if(!await s(`${r} isn't installed. Install it now?`))throw new Error(`${r} install declined. Re-run \`vis attest\` after installing manually:
3
+ ${l}`);const d=await i(u);if(d.exitCode!==0)throw new Error(`Install of ${r} failed (exit ${String(d.exitCode)}). Install manually and retry:
4
+ ${l}`);return await n()},"loadOptionalSigstore");export{R as installCommandFor,k as isSigstoreInstalled,x as loadOptionalSigstore};
@@ -0,0 +1 @@
1
+ var u=Object.defineProperty;var o=(t,e)=>u(t,"name",{value:e,configurable:!0});import{K as n}from"./config.js";import{createJiti as l}from"jiti";var p=Object.defineProperty,a=o((t,e)=>p(t,"name",{value:e,configurable:!0}),"r");const i=a((t,e)=>{if(!e||typeof e!="object")throw new TypeError(`${t}: default export must be an object (got ${e===null?"null":typeof e}). Use createTemplate({ ... }).`);const r=e;if(typeof r.about!="object"||r.about===null)throw new TypeError(`${t}: default export missing required "about" object`);if(typeof r.produce!="function")throw new TypeError(`${t}: default export missing required "produce" function`);return e},"validateTemplateExport"),s=a(async t=>{const e=await l(n(t),{fsCache:!1,moduleCache:!1}).import(t,{default:!0,try:!0})??null;return i(t,e)},"loadNativeTemplate");export{s as loadNativeTemplate};
@@ -1,3 +1,3 @@
1
- var f=Object.defineProperty;var i=(o,e)=>f(o,"name",{value:e,configurable:!0});import{createRequire as p}from"node:module";import{p as n}from"./bin.js";import{r as h}from"../packem_shared/advisories-DsynpacV.js";const l=p(import.meta.url),t=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,m=i(o=>{if(typeof t<"u"&&t.versions&&t.versions.node){const[e,s]=t.versions.node.split(".").map(Number);if(e>22||e===22&&s>=3||e===20&&s>=16)return t.getBuiltinModule(o)}return l(o)},"__cjs_getBuiltinModule"),{rm:v}=m("node:fs/promises");var _=Object.defineProperty,g=i((o,e)=>_(o,"name",{value:e,configurable:!0}),"c");const w=g(async({logger:o,options:e,workspaceRoot:s})=>{if(!s)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const r=e.db??h(s),c=e.format==="json";if(!e.force){n.warn(`Prune is destructive. Will remove: ${r}`),n.info("Re-run with --force to proceed."),c&&process.stdout.write(`${JSON.stringify({dbPath:r,reason:"needs --force",removed:!1})}
1
+ var f=Object.defineProperty;var i=(o,e)=>f(o,"name",{value:e,configurable:!0});import{createRequire as p}from"node:module";import{p as n}from"./bin.js";import{r as h}from"../packem_shared/advisories-DS8JEB_g.js";const l=p(import.meta.url),t=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,m=i(o=>{if(typeof t<"u"&&t.versions&&t.versions.node){const[e,s]=t.versions.node.split(".").map(Number);if(e>22||e===22&&s>=3||e===20&&s>=16)return t.getBuiltinModule(o)}return l(o)},"__cjs_getBuiltinModule"),{rm:v}=m("node:fs/promises");var _=Object.defineProperty,g=i((o,e)=>_(o,"name",{value:e,configurable:!0}),"c");const w=g(async({logger:o,options:e,workspaceRoot:s})=>{if(!s)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const r=e.db??h(s),c=e.format==="json";if(!e.force){n.warn(`Prune is destructive. Will remove: ${r}`),n.info("Re-run with --force to proceed."),c&&process.stdout.write(`${JSON.stringify({dbPath:r,reason:"needs --force",removed:!1})}
2
2
  `);return}const d=[r,`${r}-wal`,`${r}-shm`,`${r}-journal`],a=[];for(const u of d)try{await v(u,{force:!0}),a.push(u)}catch{}if(c){process.stdout.write(`${JSON.stringify({dbPath:r,files:a,removed:!0})}
3
3
  `);return}n.success(`Removed ${r}.`)},"execute"),$=w;export{$ as advisoriesPruneExecute};
@@ -1 +1 @@
1
- var l=Object.defineProperty;var a=(t,o)=>l(t,"name",{value:o,configurable:!0});import{p as c,Z as p,a0 as u}from"./bin.js";var w=Object.defineProperty,f=a((t,o)=>w(t,"name",{value:o,configurable:!0}),"c");const m=f(({options:t,visConfig:o,workspaceRoot:s})=>{const i=s??process.cwd(),n=o?.security?.policies?.installScripts?.allow??{},r=Object.entries(n).filter(([,e])=>e).map(([e])=>e);r.length===0&&!t.rootOnly&&(c.warn("No approved packages in security.policies.installScripts.allow — nothing to run."),!t.withRoot)||(t.rootOnly||p(i,r),(t.withRoot||t.rootOnly)&&u(i))},"execute");export{m as default};
1
+ var l=Object.defineProperty;var a=(t,o)=>l(t,"name",{value:o,configurable:!0});import{p as c,a0 as p,a1 as u}from"./bin.js";var w=Object.defineProperty,f=a((t,o)=>w(t,"name",{value:o,configurable:!0}),"c");const m=f(({options:t,visConfig:o,workspaceRoot:s})=>{const i=s??process.cwd(),n=o?.security?.policies?.installScripts?.allow??{},r=Object.entries(n).filter(([,e])=>e).map(([e])=>e);r.length===0&&!t.rootOnly&&(c.warn("No approved packages in security.policies.installScripts.allow — nothing to run."),!t.withRoot)||(t.rootOnly||p(i,r),(t.withRoot||t.rootOnly)&&u(i))},"execute");export{m as default};
@@ -1,2 +1,2 @@
1
- var l=Object.defineProperty;var c=(s,e)=>l(s,"name",{value:e,configurable:!0});import{p as r,e as v,E as f,I as g}from"./bin.js";import{r as p,g as h}from"../packem_shared/advisories-DsynpacV.js";var $=Object.defineProperty,i=c((s,e)=>$(s,"name",{value:e,configurable:!0}),"a");const B=i(s=>{if(s===0)return"0 B";const e=["B","KB","MB","GB"],a=Math.min(Math.floor(Math.log(s)/Math.log(1024)),e.length-1),o=s/1024**a;return`${o.toFixed(o<10&&a>0?1:0)} ${e[a]}`},"formatBytes"),w=i(s=>{if(!s)return"never";const e=Date.parse(s);if(Number.isNaN(e))return s;const a=Date.now()-e;if(a<0)return s;const o=Math.floor(a/6e4);if(o<1)return"just now";if(o<60)return`${o}m ago`;const t=Math.floor(o/60);return t<24?`${t}h ago`:`${Math.floor(t/24)}d ago`},"formatRelative"),S=i(async({logger:s,options:e,workspaceRoot:a})=>{if(!a)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const o=e.db??p(a),t=await h(a,o);if(e.format==="json"){process.stdout.write(`${JSON.stringify({dbPath:o,ecosystems:t.ecosystems.map(n=>({advisoryCount:n.advisoryCount,lastSyncIso:n.lastSyncIso,manifestEtag:n.manifestEtag??null,name:n.name})),exists:t.exists,schemaVersion:t.schemaVersion,sizeBytes:t.sizeBytes},void 0,2)}
1
+ var l=Object.defineProperty;var c=(s,e)=>l(s,"name",{value:e,configurable:!0});import{p as r,e as v,E as f,I as g}from"./bin.js";import{r as p,g as h}from"../packem_shared/advisories-DS8JEB_g.js";var $=Object.defineProperty,i=c((s,e)=>$(s,"name",{value:e,configurable:!0}),"a");const B=i(s=>{if(s===0)return"0 B";const e=["B","KB","MB","GB"],a=Math.min(Math.floor(Math.log(s)/Math.log(1024)),e.length-1),o=s/1024**a;return`${o.toFixed(o<10&&a>0?1:0)} ${e[a]}`},"formatBytes"),w=i(s=>{if(!s)return"never";const e=Date.parse(s);if(Number.isNaN(e))return s;const a=Date.now()-e;if(a<0)return s;const o=Math.floor(a/6e4);if(o<1)return"just now";if(o<60)return`${o}m ago`;const t=Math.floor(o/60);return t<24?`${t}h ago`:`${Math.floor(t/24)}d ago`},"formatRelative"),S=i(async({logger:s,options:e,workspaceRoot:a})=>{if(!a)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const o=e.db??p(a),t=await h(a,o);if(e.format==="json"){process.stdout.write(`${JSON.stringify({dbPath:o,ecosystems:t.ecosystems.map(n=>({advisoryCount:n.advisoryCount,lastSyncIso:n.lastSyncIso,manifestEtag:n.manifestEtag??null,name:n.name})),exists:t.exists,schemaVersion:t.schemaVersion,sizeBytes:t.sizeBytes},void 0,2)}
2
2
  `);return}if(r.info(`DB: ${o}`),!t.exists){r.warn(`No advisory DB yet. Run ${v("vis advisories sync")} to populate.`);return}if(r.info(`Schema: v${t.schemaVersion} Size: ${B(t.sizeBytes)}`),t.ecosystems.length===0){r.warn("DB exists but contains no ecosystems. Run `vis advisories sync`.");return}r.info(""),r.info("Ecosystem Advisories Last sync ETag"),r.info(f("────────── ────────── ───────────────── ──────"));for(const n of t.ecosystems){const m=n.name.padEnd(10),u=n.advisoryCount.toLocaleString().padStart(10),d=`${n.lastSyncIso||"never"} (${w(n.lastSyncIso)})`.padEnd(19),y=n.manifestEtag??f("—");r.info(`${g(m)} ${u} ${d} ${y}`)}},"execute"),b=S;export{b as advisoriesStatusExecute};
@@ -1,2 +1,2 @@
1
- var w=Object.defineProperty;var y=(e,o)=>w(e,"name",{value:o,configurable:!0});import{p as l,E as $}from"./bin.js";import{s as D}from"../packem_shared/scan-progress-CMynp3eA.js";import{s as b,D as S}from"../packem_shared/advisories-DsynpacV.js";var E=Object.defineProperty,c=y((e,o)=>E(e,"name",{value:o,configurable:!0}),"c");const P=c(e=>e?.security?.audit?.advisories??{},"readAdvisoriesConfig"),k=c(e=>e?e.split(",").map(o=>o.trim()).filter(o=>o.length>0):["npm"],"parseEcosystems"),x=c(async({logger:e,options:o,visConfig:g,workspaceRoot:d})=>{if(!d)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const u=o.format==="json",m=P(g),f=o.source??m.source??S,p=k(o.ecosystem),v=p.map(s=>({id:s,label:`Sync ${s} advisories`})),n=D(v,{live:!u}),i=[];try{for(const s of p){n.start(s);const r=Date.now();try{const t=await b({allowedHosts:m.allowedHosts,dbPath:o.db,ecosystem:s,force:!!o.force,source:f,workspaceRoot:d});i.push({ecosystem:s,result:t}),t.upToDate?n.finish(s,"ok",`up to date · ${h(Date.now()-r)}`):n.finish(s,"ok",`${t.advisoriesIngested.toLocaleString()} advisories · ${h(t.durationMs)}`)}catch(t){const a=t instanceof Error?t.message:String(t);i.push({ecosystem:s,error:a}),n.finish(s,"error",a)}}}finally{n.stop()}if(u){const s={ecosystems:i.map(r=>({advisoriesIngested:r.result?.advisoriesIngested??0,dbPath:r.result?.dbPath??null,durationMs:r.result?.durationMs??0,ecosystem:r.ecosystem,error:r.error??null,upToDate:r.result?.upToDate??!1})),source:f};process.stdout.write(`${JSON.stringify(s,void 0,2)}
1
+ var w=Object.defineProperty;var y=(e,o)=>w(e,"name",{value:o,configurable:!0});import{p as l,E as $}from"./bin.js";import{s as D}from"../packem_shared/scan-progress-CMynp3eA.js";import{s as b,D as S}from"../packem_shared/advisories-DS8JEB_g.js";var E=Object.defineProperty,c=y((e,o)=>E(e,"name",{value:o,configurable:!0}),"c");const P=c(e=>e?.security?.audit?.advisories??{},"readAdvisoriesConfig"),k=c(e=>e?e.split(",").map(o=>o.trim()).filter(o=>o.length>0):["npm"],"parseEcosystems"),x=c(async({logger:e,options:o,visConfig:g,workspaceRoot:d})=>{if(!d)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const u=o.format==="json",m=P(g),f=o.source??m.source??S,p=k(o.ecosystem),v=p.map(s=>({id:s,label:`Sync ${s} advisories`})),n=D(v,{live:!u}),i=[];try{for(const s of p){n.start(s);const r=Date.now();try{const t=await b({allowedHosts:m.allowedHosts,dbPath:o.db,ecosystem:s,force:!!o.force,source:f,workspaceRoot:d});i.push({ecosystem:s,result:t}),t.upToDate?n.finish(s,"ok",`up to date · ${h(Date.now()-r)}`):n.finish(s,"ok",`${t.advisoriesIngested.toLocaleString()} advisories · ${h(t.durationMs)}`)}catch(t){const a=t instanceof Error?t.message:String(t);i.push({ecosystem:s,error:a}),n.finish(s,"error",a)}}}finally{n.stop()}if(u){const s={ecosystems:i.map(r=>({advisoriesIngested:r.result?.advisoriesIngested??0,dbPath:r.result?.dbPath??null,durationMs:r.result?.durationMs??0,ecosystem:r.ecosystem,error:r.error??null,upToDate:r.result?.upToDate??!1})),source:f};process.stdout.write(`${JSON.stringify(s,void 0,2)}
2
2
  `)}else{const s=i.filter(a=>a.error),r=i.filter(a=>a.result),t=r[0];t?.result?.dbPath&&l.info($(`DB: ${t.result.dbPath}`)),s.length===0?l.success(`Synced ${r.length} ecosystem${r.length===1?"":"s"}.`):l.error(`${s.length} ecosystem${s.length===1?"":"s"} failed to sync.`)}i.some(s=>s.error)&&(process.exitCode=1)},"execute"),h=c(e=>e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`,"formatDuration"),M=x;export{M as advisoriesSyncExecute};
@@ -1,2 +1,2 @@
1
- var g=Object.defineProperty;var f=(e,n)=>g(e,"name",{value:n,configurable:!0});import{A as m,p as t}from"./bin.js";import{N as y}from"../packem_shared/native-config-sync-Dvi1g2nQ.js";import{E as v}from"../packem_shared/min-release-age-BFozFonQ.js";var h=Object.defineProperty,w=f((e,n)=>h(e,"name",{value:n,configurable:!0}),"l");const b=new Set(["bun","npm","pnpm","yarn"]),O=w(({options:e,visConfig:n,workspaceRoot:u})=>{const o=u??process.cwd(),s=m(o);if(!b.has(s.name)){t.warn(`Package manager '${s.name}' has no native security config to sync.`);return}if(!n?.security){t.warn("vis.config has no `security` block — nothing to sync.");return}const r=n.security.policies??{},a=Object.fromEntries(Object.entries(r.installScripts?.allow??{}).filter(([,c])=>c)),l=r.firstSeen?.minutes,p=r.firstSeen?.exclude??[],i=[];if(Object.keys(a).length>0&&!e.skipAllowBuilds&&i.push(...y(s.name,o,a)),e.skipMinReleaseAge||i.push(...v(s.name,o,l,p)),i.length===0){t.success("Nothing to sync — vis.config and native PM config are aligned.");return}t.info(`Syncing vis.config security settings to ${s.name} native config…
1
+ var g=Object.defineProperty;var f=(e,n)=>g(e,"name",{value:n,configurable:!0});import{A as m,p as t}from"./bin.js";import{N as y}from"../packem_shared/native-config-sync-B0_ef78M.js";import{E as v}from"../packem_shared/min-release-age-D462DvYM.js";var h=Object.defineProperty,w=f((e,n)=>h(e,"name",{value:n,configurable:!0}),"l");const b=new Set(["bun","npm","pnpm","yarn"]),O=w(({options:e,visConfig:n,workspaceRoot:u})=>{const o=u??process.cwd(),s=m(o);if(!b.has(s.name)){t.warn(`Package manager '${s.name}' has no native security config to sync.`);return}if(!n?.security){t.warn("vis.config has no `security` block — nothing to sync.");return}const r=n.security.policies??{},a=Object.fromEntries(Object.entries(r.installScripts?.allow??{}).filter(([,c])=>c)),l=r.firstSeen?.minutes,p=r.firstSeen?.exclude??[],i=[];if(Object.keys(a).length>0&&!e.skipAllowBuilds&&i.push(...y(s.name,o,a)),e.skipMinReleaseAge||i.push(...v(s.name,o,l,p)),i.length===0){t.success("Nothing to sync — vis.config and native PM config are aligned.");return}t.info(`Syncing vis.config security settings to ${s.name} native config…
2
2
  `);for(const c of i)t.success(` ${c}`)},"execute");export{O as default};
@@ -0,0 +1,2 @@
1
+ var $=Object.defineProperty;var k=(e,o)=>$(e,"name",{value:o,configurable:!0});import{A as x,p}from"./bin.js";import{r as v,l as C,L as S}from"../packem_shared/dependency-scan-DPHTzA5r.js";import{$ as M,M as h,i as L}from"./config.js";import{F as E}from"../packem_shared/lockfile-C5DYMHVq.js";import{e as P}from"../packem_shared/index-B4gpNmrG.js";var D=Object.defineProperty,m=k((e,o)=>D(e,"name",{value:o,configurable:!0}),"r");const V=m(e=>{const o=e.trim();return o===""?!1:/^(?:git\+|git:\/\/|git@|ssh:\/\/)/i.test(o)||/^(?:github|gitlab|bitbucket|gist):/i.test(o)||/^[\w.-]+\/[\w.-]+(?:#.+)?$/.test(o)&&!o.includes("@")?!0:/^https?:\/\//i.test(o)},"isExoticSpecifier"),N=m((e,o)=>{for(const s of o)if(s===e||s.endsWith("*")&&e.startsWith(s.slice(0,-1)))return!0;return!1},"matchesAllow"),O=m((e,o,s={})=>{const t=v(e,o);if(!t)return[];let i;try{i=M(h(e,t.file))}catch{return[]}const n=E(i,t.type);if(n.length===0)return[];const c=s.allow??[],l=[],f=new Set;for(const r of n){const a=`${r.name}@${r.version}`;for(const g of[r.dependencies,r.optionalDependencies])if(g){for(const[u,w]of Object.entries(g))if(!N(u,c))for(const y of w){if(!V(y))continue;const b=`${a}->${u}@${y}`;f.has(b)||(f.add(b),l.push({declaredBy:a,packageName:u,source:y}))}}}return l.sort((r,a)=>r.packageName.localeCompare(a.packageName)||r.declaredBy.localeCompare(a.declaredBy))},"scanExoticSubdeps");var R=Object.defineProperty,d=k((e,o)=>R(e,"name",{value:o,configurable:!0}),"n");const j=new Set(["firstSeen","publisherChange"]),A=d(e=>e.severity==="block"&&e.acceptedRisk===void 0,"isGatingDecision"),B=d(e=>{const o=e.security?.policies?.firstSeen?.minutes,s=typeof o=="number"&&o>0,t=e.security?.policies?.publisherChange?.mode==="no-downgrade",i=e.security?.blockExoticSubdeps===!0;return s||t||i},"anyPolicyConfigured"),F=d(async e=>{const{offline:o=!1,packageManager:s,visConfig:t,workspaceRoot:i}=e,n=Date.now();if(!B(t))return{decisions:[],durationMs:Date.now()-n,entryCount:0,exoticViolations:[],lockfileMissing:!1,status:"skipped"};const c=v(i,s);if(!c||!L(h(i,c.file)))return{decisions:[],durationMs:Date.now()-n,entryCount:0,exoticViolations:[],lockfileMissing:!0,status:"fail"};const l=C(i,s,{includeDev:!0}),f=l.length,r=await P({offline:o,packageManager:s,packages:l,workspaceRoot:i},"install",{enabledPolicies:new Set(j),visConfig:t}),a=t.security?.blockExoticSubdeps===!0?O(i,s,{allow:t.security.exoticSubdepsAllow}):[],g=r.some(u=>A(u))||a.length>0;return{decisions:r,durationMs:Date.now()-n,entryCount:f,exoticViolations:a,lockfileMissing:!1,status:g?"fail":"pass"}},"verifyLockfile"),W=d(e=>e<1e3?`${String(e)}ms`:`${(e/1e3).toFixed(1)}s`,"formatElapsed"),G=d(e=>{if(e.status==="skipped")return["– Lockfile supply-chain verification skipped (no firstSeen / publisherChange / blockExoticSubdeps policy configured)"];if(e.lockfileMissing)return["✗ Lockfile supply-chain verification failed — no lockfile found, the resolved closure cannot be attested"];const o=`(${String(e.entryCount)} ${e.entryCount===1?"entry":"entries"}, ${W(e.durationMs)})`;if(e.status==="pass")return[`✓ Lockfile passes supply-chain policies ${o}`];const s=[`✗ Lockfile failed supply-chain policy check ${o}`];for(const t of e.decisions)t.severity==="block"&&t.acceptedRisk===void 0&&s.push(` [${t.policy}] ${t.reason}`);for(const t of e.exoticViolations)s.push(` [blockExoticSubdeps] ${t.packageName} pulled from exotic source by ${t.declaredBy}: ${t.source}`);return s},"formatLockfileVerification");var I=Object.defineProperty,J=k((e,o)=>I(e,"name",{value:o,configurable:!0}),"a");const T=J(async({options:e,visConfig:o,workspaceRoot:s})=>{const t=s??process.cwd(),i=x(t);if(!S[i.name]){p.warn(`Package manager '${i.name}' has no lockfile vis can verify.`);return}const n=await F({offline:!!e.offline,packageManager:i.name,visConfig:o??{},workspaceRoot:t});if(e.json){process.stdout.write(`${JSON.stringify(n,void 0,2)}
2
+ `),n.status==="fail"&&(process.exitCode=1);return}const[c,...l]=G(n);if(n.status==="skipped"){p.info(c);return}if(n.status==="pass"){p.success(c);return}p.error(c);for(const f of l)p.error(f);process.exitCode=1},"execute");export{T as default};
@@ -1 +1 @@
1
- var I=Object.defineProperty;var d=(s,e)=>I(s,"name",{value:e,configurable:!0});import{createRequire as $}from"node:module";import{K as j}from"../packem_chunks/config.js";import{advisoriesStatus as E,NATIVE_BINDING_VERSION as A,advisoriesIngest as q,advisoriesQuery as B}from"#native";const T=$(import.meta.url),v=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,l=d(s=>{if(typeof v<"u"&&v.versions&&v.versions.node){const[e,t]=v.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return v.getBuiltinModule(s)}return T(s)},"__cjs_getBuiltinModule"),{randomUUID:O}=l("node:crypto"),{createWriteStream:P,existsSync:k}=l("node:fs"),{mkdir:U,unlink:x,stat:C}=l("node:fs/promises"),{join:w,dirname:L}=l("node:path"),{Readable:M}=l("node:stream"),{pipeline:W}=l("node:stream/promises");var F=Object.defineProperty,r=d((s,e)=>F(s,"name",{value:e,configurable:!0}),"s");const b=4;if(A!==b)throw new Error(`vis native binding ABI mismatch in advisories: expected ${b}, got ${A}. Rebuild via \`pnpm --filter @visulima/vis run build:native\` or reinstall the platform binding package.`);const es="https://osv-vulnerabilities.storage.googleapis.com",V=new Set(["osv-vulnerabilities.storage.googleapis.com"]);class H extends Error{static{d(this,"AdvisoryDbNotFoundError")}static{r(this,"AdvisoryDbNotFoundError")}cause="DB_NOT_FOUND";constructor(e){super(`No local advisory DB at ${e}. Run 'vis advisories sync' first.`),this.name="AdvisoryDbNotFoundError"}}class p extends Error{static{d(this,"AdvisorySourceNotAllowedError")}static{r(this,"AdvisorySourceNotAllowedError")}cause="SOURCE_NOT_ALLOWED";constructor(e){super(`Advisory source host '${e}' is not in the built-in allowlist. Add it to \`security.audit.advisories.allowedHosts\` if intentional.`),this.name="AdvisorySourceNotAllowedError"}}class N extends Error{static{d(this,"AdvisorySyncNetworkError")}static{r(this,"AdvisorySyncNetworkError")}cause="SYNC_NETWORK";constructor(e,t){super(`Advisory sync failed for ${e}: ${t}. Check connectivity, proxy env vars, or --source.`),this.name="AdvisorySyncNetworkError"}}const g=r(s=>{const e=j("vis",{create:!0,cwd:s})??w(s,"node_modules",".cache","vis");return w(e,"advisories","db.sqlite")},"resolveAdvisoryDbPath"),z=r((s,e)=>{let t;try{t=new URL(s)}catch{throw new p(s)}if(t.protocol!=="https:")throw new p(`${t.protocol}//${t.host}`);if(!new Set([...V,...e??[]]).has(t.host))throw new p(t.host);return t},"validateAdvisorySource"),ts=r(async s=>{const e=s.dbPath??g(s.workspaceRoot);await U(L(e),{recursive:!0});const t=z(s.source,s.allowedHosts),u=new URL(`${s.ecosystem}/all.zip`,Q(t.toString())),y=await K(e,s.ecosystem);let i=null;if(!s.force){const n=await S(u,{method:"HEAD"});if(n.ok&&(i=n.headers.get("etag"),i&&y&&i===y))return{advisoriesIngested:0,dbPath:e,durationMs:0,upToDate:!0}}const a=`${e}.${s.ecosystem}.${process.pid}.${O()}.zip.tmp`,o=await S(u,{method:"GET"});if(!o.ok||!o.body)throw new N(u.toString(),o.status);i||(i=o.headers.get("etag"));const m=o.headers.get("content-length"),c=m?Number.parseInt(m,10):null;let h=0;const _=P(a),f=M.fromWeb(o.body);s.onProgress&&c&&f.on("data",n=>{h+=n.byteLength,s.onProgress?.(h,c,"download")}),await W(f,_);try{const n=await q({dbPath:e,ecosystem:s.ecosystem,manifestEtag:i??void 0,zipPath:a},(D,R)=>s.onProgress?.(D,R,"ingest"));return{advisoriesIngested:n.advisoriesIngested,dbPath:e,durationMs:n.durationMs,upToDate:!1}}finally{await x(a).catch(()=>{})}},"syncAdvisories"),rs=r((s,e)=>{if(s.length===0)return new Map;const t=e.dbPath??g(e.workspaceRoot),u=e.ecosystem??"npm";if(!k(t))throw new H(t);const y=s.map(o=>({ecosystem:u,name:o.name,version:o.version})),i=B(t,y),a=new Map;for(const[o,m]of s.entries()){const c=i[o];!c||c.vulnerabilities.length===0||a.set(m.name,c.vulnerabilities.map(h=>G(h)))}return a},"queryAdvisories"),os=r(async(s,e)=>{const t=e??g(s);return E(t)},"getAdvisoryStatus"),K=r(async(s,e)=>{try{await C(s)}catch{return null}return E(s).ecosystems.find(t=>t.name===e)?.manifestEtag??null},"readStoredEtag"),G=r(s=>({aliases:s.aliases.length>0?s.aliases:void 0,cvssScore:s.cvssScore??void 0,fixedVersions:s.fixedVersions,id:s.id,severity:Y(s.severity),summary:s.summary}),"toSecurityVulnerability"),Y=r(s=>{const e=s.toUpperCase();return e==="CRITICAL"||e==="HIGH"||e==="MODERATE"||e==="LOW"?e:"UNKNOWN"},"normalizeSeverity"),Q=r(s=>s.endsWith("/")?s:`${s}/`,"ensureTrailingSlash"),S=r(async(s,e)=>{try{return await fetch(s,e)}catch(t){throw new N(s.toString(),t instanceof Error?t.message:String(t))}},"safeFetch");export{H as A,es as D,os as g,rs as q,g as r,ts as s};
1
+ var I=Object.defineProperty;var d=(s,e)=>I(s,"name",{value:e,configurable:!0});import{createRequire as $}from"node:module";import{D as j}from"../packem_chunks/config.js";import{advisoriesStatus as E,NATIVE_BINDING_VERSION as A,advisoriesIngest as q,advisoriesQuery as B}from"#native";const T=$(import.meta.url),v=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,l=d(s=>{if(typeof v<"u"&&v.versions&&v.versions.node){const[e,t]=v.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return v.getBuiltinModule(s)}return T(s)},"__cjs_getBuiltinModule"),{randomUUID:O}=l("node:crypto"),{createWriteStream:P,existsSync:k}=l("node:fs"),{mkdir:U,unlink:x,stat:C}=l("node:fs/promises"),{join:w,dirname:L}=l("node:path"),{Readable:M}=l("node:stream"),{pipeline:W}=l("node:stream/promises");var F=Object.defineProperty,r=d((s,e)=>F(s,"name",{value:e,configurable:!0}),"s");const b=5;if(A!==b)throw new Error(`vis native binding ABI mismatch in advisories: expected ${b}, got ${A}. Rebuild via \`pnpm --filter @visulima/vis run build:native\` or reinstall the platform binding package.`);const es="https://osv-vulnerabilities.storage.googleapis.com",V=new Set(["osv-vulnerabilities.storage.googleapis.com"]);class H extends Error{static{d(this,"AdvisoryDbNotFoundError")}static{r(this,"AdvisoryDbNotFoundError")}cause="DB_NOT_FOUND";constructor(e){super(`No local advisory DB at ${e}. Run 'vis advisories sync' first.`),this.name="AdvisoryDbNotFoundError"}}class p extends Error{static{d(this,"AdvisorySourceNotAllowedError")}static{r(this,"AdvisorySourceNotAllowedError")}cause="SOURCE_NOT_ALLOWED";constructor(e){super(`Advisory source host '${e}' is not in the built-in allowlist. Add it to \`security.audit.advisories.allowedHosts\` if intentional.`),this.name="AdvisorySourceNotAllowedError"}}class N extends Error{static{d(this,"AdvisorySyncNetworkError")}static{r(this,"AdvisorySyncNetworkError")}cause="SYNC_NETWORK";constructor(e,t){super(`Advisory sync failed for ${e}: ${t}. Check connectivity, proxy env vars, or --source.`),this.name="AdvisorySyncNetworkError"}}const g=r(s=>{const e=j("vis",{create:!0,cwd:s})??w(s,"node_modules",".cache","vis");return w(e,"advisories","db.sqlite")},"resolveAdvisoryDbPath"),z=r((s,e)=>{let t;try{t=new URL(s)}catch{throw new p(s)}if(t.protocol!=="https:")throw new p(`${t.protocol}//${t.host}`);if(!new Set([...V,...e??[]]).has(t.host))throw new p(t.host);return t},"validateAdvisorySource"),ts=r(async s=>{const e=s.dbPath??g(s.workspaceRoot);await U(L(e),{recursive:!0});const t=z(s.source,s.allowedHosts),u=new URL(`${s.ecosystem}/all.zip`,Q(t.toString())),y=await G(e,s.ecosystem);let i=null;if(!s.force){const n=await S(u,{method:"HEAD"});if(n.ok&&(i=n.headers.get("etag"),i&&y&&i===y))return{advisoriesIngested:0,dbPath:e,durationMs:0,upToDate:!0}}const a=`${e}.${s.ecosystem}.${process.pid}.${O()}.zip.tmp`,o=await S(u,{method:"GET"});if(!o.ok||!o.body)throw new N(u.toString(),o.status);i||(i=o.headers.get("etag"));const m=o.headers.get("content-length"),c=m?Number.parseInt(m,10):null;let h=0;const _=P(a),f=M.fromWeb(o.body);s.onProgress&&c&&f.on("data",n=>{h+=n.byteLength,s.onProgress?.(h,c,"download")}),await W(f,_);try{const n=await q({dbPath:e,ecosystem:s.ecosystem,manifestEtag:i??void 0,zipPath:a},(D,R)=>s.onProgress?.(D,R,"ingest"));return{advisoriesIngested:n.advisoriesIngested,dbPath:e,durationMs:n.durationMs,upToDate:!1}}finally{await x(a).catch(()=>{})}},"syncAdvisories"),rs=r((s,e)=>{if(s.length===0)return new Map;const t=e.dbPath??g(e.workspaceRoot),u=e.ecosystem??"npm";if(!k(t))throw new H(t);const y=s.map(o=>({ecosystem:u,name:o.name,version:o.version})),i=B(t,y),a=new Map;for(const[o,m]of s.entries()){const c=i[o];!c||c.vulnerabilities.length===0||a.set(m.name,c.vulnerabilities.map(h=>K(h)))}return a},"queryAdvisories"),os=r(async(s,e)=>{const t=e??g(s);return E(t)},"getAdvisoryStatus"),G=r(async(s,e)=>{try{await C(s)}catch{return null}return E(s).ecosystems.find(t=>t.name===e)?.manifestEtag??null},"readStoredEtag"),K=r(s=>({aliases:s.aliases.length>0?s.aliases:void 0,cvssScore:s.cvssScore??void 0,fixedVersions:s.fixedVersions,id:s.id,severity:Y(s.severity),summary:s.summary}),"toSecurityVulnerability"),Y=r(s=>{const e=s.toUpperCase();return e==="CRITICAL"||e==="HIGH"||e==="MODERATE"||e==="LOW"?e:"UNKNOWN"},"normalizeSeverity"),Q=r(s=>s.endsWith("/")?s:`${s}/`,"ensureTrailingSlash"),S=r(async(s,e)=>{try{return await fetch(s,e)}catch(t){throw new N(s.toString(),t instanceof Error?t.message:String(t))}},"safeFetch");export{H as A,es as D,os as g,rs as q,g as r,ts as s};
@@ -1,4 +1,4 @@
1
- var H=Object.defineProperty;var k=(e,r)=>H(e,"name",{value:r,configurable:!0});import{createRequire as B}from"node:module";import{renderToString as z}from"@visulima/tui";import{Box as U}from"@visulima/tui/components/box";import{Table as W}from"@visulima/tui/components/table";import{Text as y}from"@visulima/tui/components/text";import v from"react";import{k as K,T as G,R as Y,j as X}from"./ai-cache-DuwHYx2O.js";const F=B(import.meta.url),w=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,$=k(e=>{if(typeof w<"u"&&w.versions&&w.versions.node){const[r,a]=w.versions.node.split(".").map(Number);if(r>22||r===22&&a>=3||r===20&&a>=16)return w.getBuiltinModule(e)}return F(e)},"__cjs_getBuiltinModule"),{spawn:D,execFileSync:O}=$("node:child_process"),{existsSync:T}=$("node:fs"),{platform:J,homedir:R}=$("node:os"),{join:g}=$("node:path"),Q=/v?(\d+\.\d+\.\d+(?:-[\w.]+)?)/,Z=5e3,ee=1e4,re=3e5,te=4096,E=J()==="win32",M=["amp","claude","codex","copilot","crush","cursor","droid","gemini","kimi","opencode","qwen"];var ae=Object.defineProperty,ne=k((e,r)=>ae(e,"name",{value:r,configurable:!0}),"A$1"),ie=Object.defineProperty,m=ne((e,r)=>ie(e,"name",{value:r,configurable:!0}),"o"),oe=Object.defineProperty,se=m((e,r)=>oe(e,"name",{value:r,configurable:!0}),"a$6");const ce={alternateCommands:[],buildArgs:se((e,r,a)=>["-x",e,"--dangerously-allow-all"],"buildArgs"),command:"amp",defaultModel:"",envVariable:"AMP_PATH"};var le=Object.defineProperty,ue=m((e,r)=>le(e,"name",{value:r,configurable:!0}),"t$8");const de={alternateCommands:[],buildArgs:ue((e,r,a)=>["--dangerously-skip-permissions","--model",r,"--output-format","text","-p",e],"buildArgs"),command:"claude",defaultModel:"claude-sonnet-4-20250514",envVariable:"CLAUDE_PATH"};var me=Object.defineProperty,pe=m((e,r)=>me(e,"name",{value:r,configurable:!0}),"a$4");const ge={alternateCommands:["openai-codex"],buildArgs:pe((e,r,a)=>[e,"--approval-mode","full-auto","--quiet","--model",r,"--max-tokens",String(a)],"buildArgs"),command:"codex",defaultModel:"o3",envVariable:"CODEX_PATH"};var fe=Object.defineProperty,he=m((e,r)=>fe(e,"name",{value:r,configurable:!0}),"l");const ve={alternateCommands:[],buildArgs:he((e,r,a)=>{const t=["-p",e,"--allow-all-tools"];return r&&t.push("--model",r),t},"buildArgs"),command:"copilot",defaultModel:"",envVariable:"COPILOT_PATH"};var ye=Object.defineProperty,be=m((e,r)=>ye(e,"name",{value:r,configurable:!0}),"n$2");const ke={alternateCommands:[],buildArgs:be((e,r,a)=>{const t=["run","--yolo"];return r&&t.push("-m",r),t.push(e),t},"buildArgs"),command:"crush",defaultModel:"",envVariable:"CRUSH_PATH"};var we=Object.defineProperty,Ae=m((e,r)=>we(e,"name",{value:r,configurable:!0}),"t$5");const $e={alternateCommands:["cursor"],buildArgs:Ae((e,r,a)=>{const t=["-p","--force","--output-format","text"];return r&&t.push("--model",r),t.push(e),t},"buildArgs"),command:"agent",defaultModel:"",envVariable:"CURSOR_PATH"};var Se=Object.defineProperty,Pe=m((e,r)=>Se(e,"name",{value:r,configurable:!0}),"i");const Te={alternateCommands:[],buildArgs:Pe((e,r,a)=>{const t=[e,"--skip-permissions-unsafe","-o","text"];return r&&t.push("-m",r),t},"buildArgs"),command:"droid",defaultModel:"",envVariable:"DROID_PATH"};var Ce=Object.defineProperty,je=m((e,r)=>Ce(e,"name",{value:r,configurable:!0}),"o$1");const Oe={alternateCommands:["gemini-cli"],buildArgs:je((e,r,a)=>["--sandbox","--model",r,"--max-output-tokens",String(a),"-p",e],"buildArgs"),command:"gemini",defaultModel:"gemini-2.5-pro",envVariable:"GEMINI_PATH"};var Re=Object.defineProperty,Ee=m((e,r)=>Re(e,"name",{value:r,configurable:!0}),"o");const Me={alternateCommands:[],buildArgs:Ee((e,r,a)=>{const t=["--quiet","-p",e];return r&&t.push("-m",r),t},"buildArgs"),command:"kimi",defaultModel:"",envVariable:"KIMI_PATH"};var xe=Object.defineProperty,_e=m((e,r)=>xe(e,"name",{value:r,configurable:!0}),"r");const Ie={alternateCommands:[],buildArgs:_e((e,r,a)=>{const t=["run",e];return r&&t.push("-m",r),t},"buildArgs"),command:"opencode",defaultModel:"anthropic/claude-sonnet-4",envVariable:"OPENCODE_PATH"};var Ne=Object.defineProperty,Le=m((e,r)=>Ne(e,"name",{value:r,configurable:!0}),"n");const qe={alternateCommands:["qwen-code"],buildArgs:Le((e,r,a)=>["-p",e,"--yolo","-o","text"],"buildArgs"),command:"qwen",defaultModel:"",envVariable:"QWEN_PATH"};var Ve=Object.defineProperty,f=m((e,r)=>Ve(e,"name",{value:r,configurable:!0}),"s");const x={amp:ce,claude:de,codex:ge,copilot:ve,crush:ke,cursor:$e,droid:Te,gemini:Oe,kimi:Me,opencode:Ie,qwen:qe},C=f(e=>e.startsWith("~")?g(R(),e.slice(1)):e,"resolveHome"),He=f(e=>{try{const r=O(E?"where":"which",[e],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:Z}).trim().split(`
1
+ var H=Object.defineProperty;var k=(e,r)=>H(e,"name",{value:r,configurable:!0});import{createRequire as B}from"node:module";import{renderToString as z}from"@visulima/tui";import{Box as U}from"@visulima/tui/components/box";import{Table as W}from"@visulima/tui/components/table";import{Text as y}from"@visulima/tui/components/text";import v from"react";import{k as K,T as G,R as Y,j as X}from"./ai-cache-BjlXWJtl.js";const F=B(import.meta.url),w=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,$=k(e=>{if(typeof w<"u"&&w.versions&&w.versions.node){const[r,a]=w.versions.node.split(".").map(Number);if(r>22||r===22&&a>=3||r===20&&a>=16)return w.getBuiltinModule(e)}return F(e)},"__cjs_getBuiltinModule"),{spawn:D,execFileSync:O}=$("node:child_process"),{existsSync:T}=$("node:fs"),{platform:J,homedir:R}=$("node:os"),{join:g}=$("node:path"),Q=/v?(\d+\.\d+\.\d+(?:-[\w.]+)?)/,Z=5e3,ee=1e4,re=3e5,te=4096,E=J()==="win32",M=["amp","claude","codex","copilot","crush","cursor","droid","gemini","kimi","opencode","qwen"];var ae=Object.defineProperty,ne=k((e,r)=>ae(e,"name",{value:r,configurable:!0}),"A$1"),ie=Object.defineProperty,m=ne((e,r)=>ie(e,"name",{value:r,configurable:!0}),"o"),oe=Object.defineProperty,se=m((e,r)=>oe(e,"name",{value:r,configurable:!0}),"a$6");const ce={alternateCommands:[],buildArgs:se((e,r,a)=>["-x",e,"--dangerously-allow-all"],"buildArgs"),command:"amp",defaultModel:"",envVariable:"AMP_PATH"};var le=Object.defineProperty,ue=m((e,r)=>le(e,"name",{value:r,configurable:!0}),"t$8");const de={alternateCommands:[],buildArgs:ue((e,r,a)=>["--dangerously-skip-permissions","--model",r,"--output-format","text","-p",e],"buildArgs"),command:"claude",defaultModel:"claude-sonnet-4-20250514",envVariable:"CLAUDE_PATH"};var me=Object.defineProperty,pe=m((e,r)=>me(e,"name",{value:r,configurable:!0}),"a$4");const ge={alternateCommands:["openai-codex"],buildArgs:pe((e,r,a)=>[e,"--approval-mode","full-auto","--quiet","--model",r,"--max-tokens",String(a)],"buildArgs"),command:"codex",defaultModel:"o3",envVariable:"CODEX_PATH"};var fe=Object.defineProperty,he=m((e,r)=>fe(e,"name",{value:r,configurable:!0}),"l");const ve={alternateCommands:[],buildArgs:he((e,r,a)=>{const t=["-p",e,"--allow-all-tools"];return r&&t.push("--model",r),t},"buildArgs"),command:"copilot",defaultModel:"",envVariable:"COPILOT_PATH"};var ye=Object.defineProperty,be=m((e,r)=>ye(e,"name",{value:r,configurable:!0}),"n$2");const ke={alternateCommands:[],buildArgs:be((e,r,a)=>{const t=["run","--yolo"];return r&&t.push("-m",r),t.push(e),t},"buildArgs"),command:"crush",defaultModel:"",envVariable:"CRUSH_PATH"};var we=Object.defineProperty,Ae=m((e,r)=>we(e,"name",{value:r,configurable:!0}),"t$5");const $e={alternateCommands:["cursor"],buildArgs:Ae((e,r,a)=>{const t=["-p","--force","--output-format","text"];return r&&t.push("--model",r),t.push(e),t},"buildArgs"),command:"agent",defaultModel:"",envVariable:"CURSOR_PATH"};var Se=Object.defineProperty,Pe=m((e,r)=>Se(e,"name",{value:r,configurable:!0}),"i");const Te={alternateCommands:[],buildArgs:Pe((e,r,a)=>{const t=[e,"--skip-permissions-unsafe","-o","text"];return r&&t.push("-m",r),t},"buildArgs"),command:"droid",defaultModel:"",envVariable:"DROID_PATH"};var Ce=Object.defineProperty,je=m((e,r)=>Ce(e,"name",{value:r,configurable:!0}),"o$1");const Oe={alternateCommands:["gemini-cli"],buildArgs:je((e,r,a)=>["--sandbox","--model",r,"--max-output-tokens",String(a),"-p",e],"buildArgs"),command:"gemini",defaultModel:"gemini-2.5-pro",envVariable:"GEMINI_PATH"};var Re=Object.defineProperty,Ee=m((e,r)=>Re(e,"name",{value:r,configurable:!0}),"o");const Me={alternateCommands:[],buildArgs:Ee((e,r,a)=>{const t=["--quiet","-p",e];return r&&t.push("-m",r),t},"buildArgs"),command:"kimi",defaultModel:"",envVariable:"KIMI_PATH"};var xe=Object.defineProperty,_e=m((e,r)=>xe(e,"name",{value:r,configurable:!0}),"r");const Ie={alternateCommands:[],buildArgs:_e((e,r,a)=>{const t=["run",e];return r&&t.push("-m",r),t},"buildArgs"),command:"opencode",defaultModel:"anthropic/claude-sonnet-4",envVariable:"OPENCODE_PATH"};var Ne=Object.defineProperty,Le=m((e,r)=>Ne(e,"name",{value:r,configurable:!0}),"n");const qe={alternateCommands:["qwen-code"],buildArgs:Le((e,r,a)=>["-p",e,"--yolo","-o","text"],"buildArgs"),command:"qwen",defaultModel:"",envVariable:"QWEN_PATH"};var Ve=Object.defineProperty,f=m((e,r)=>Ve(e,"name",{value:r,configurable:!0}),"s");const x={amp:ce,claude:de,codex:ge,copilot:ve,crush:ke,cursor:$e,droid:Te,gemini:Oe,kimi:Me,opencode:Ie,qwen:qe},C=f(e=>e.startsWith("~")?g(R(),e.slice(1)):e,"resolveHome"),He=f(e=>{try{const r=O(E?"where":"which",[e],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:Z}).trim().split(`
2
2
  `)[0]?.trim();return r&&r.length>0?r:void 0}catch{return}},"whichCommand"),Be=f(e=>{const r=R();if(E){const a=process.env.APPDATA??"",t=process.env.LOCALAPPDATA??"",n=process.env.ProgramFiles??"";return[g(a,"npm",`${e}.cmd`),g(a,"npm",e),g(t,"Programs",e,`${e}.exe`),g(n,e,`${e}.exe`),g(r,".npm-global","bin",`${e}.cmd`)]}return[`/opt/homebrew/bin/${e}`,`/usr/local/bin/${e}`,g(r,".npm-global","bin",e),g(r,".local","bin",e),g(r,".cargo","bin",e)]},"getKnownPaths"),S=f(e=>{try{const r=O(e,["--version"],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:ee}),a=Q.exec(r);return a?a[1]:void 0}catch{return}},"detectVersion"),_=f(e=>{const r=x[e],a={available:!1,name:e},t=process.env[r.envVariable];if(t&&T(C(t))){const i=C(t);return{...a,available:!0,detectionMethod:"envvar",path:i,version:S(i)}}const n=[r.command,...r.alternateCommands];for(const i of n){const o=He(i);if(o)return{...a,available:!0,detectionMethod:"which",path:o,version:S(o)}}for(const i of n)for(const o of Be(i))if(T(o))return{...a,available:!0,detectionMethod:"known-path",path:o,version:S(o)};return a},"detectProvider"),Fe=f(()=>M.map(e=>_(e)),"detectAllProviders"),De=f(()=>Fe().filter(e=>e.available),"detectAvailableProviders"),Je=f((e,r,a={})=>{const t=x[e],n=a.model??t.defaultModel,i=a.maxTokens??te;return t.buildArgs(r,n,i)},"buildCliArgs"),ze=f(async(e,r,a={})=>{if(!e.available||!e.path)throw new Error(`AI provider "${e.name}" is not available.`);const t=Je(e.name,r,a),n=a.timeoutMs??re;return new Promise((i,o)=>{const p={env:{...process.env,FORCE_COLOR:"0",NO_COLOR:"1"},stdio:["pipe","pipe","pipe"]},s=D(e.path,t,p);s.stdin.end();let c="",d="",u=!1;const b=setTimeout(()=>{u=!0,s.kill("SIGTERM"),o(new Error(`${e.name} CLI timed out after ${String(n)}ms`))},n);s.stdout.on("data",h=>{c+=h.toString("utf8")}),s.stderr.on("data",h=>{d+=h.toString("utf8")}),s.on("close",h=>{clearTimeout(b),!u&&(h===0?i({provider:e.name,stderr:d,stdout:c}):o(new Error(`${e.name} CLI exited with code ${String(h)}: ${d||c}`)))}),s.on("error",h=>{clearTimeout(b),u||o(new Error(`Failed to spawn ${e.name} CLI: ${h.message}`))})})},"runProvider");var Ue=Object.defineProperty,I=k((e,r)=>Ue(e,"name",{value:r,configurable:!0}),"i");const We=12e4,Ke=2,Ge=1e3,Ye=I(e=>new Promise(r=>{setTimeout(r,e)}),"sleep"),N=I(async(e,r,a=Ke)=>{let t;for(let n=0;n<=a;n+=1)try{return(await ze(e,r,{timeoutMs:We})).stdout}catch(i){if(t=i instanceof Error?i:new Error(String(i)),t.message.includes("timed out"))throw t;if(n<a){const o=Ge*2**n;await Ye(o)}}throw t??new Error("AI request failed after retries")},"runWithRetry");var Xe=Object.defineProperty,l=k((e,r)=>Xe(e,"name",{value:r,configurable:!0}),"c");const Qe={amp:30,claude:80,codex:60,copilot:50,crush:35,cursor:40,droid:20,gemini:100,kimi:25,opencode:35,qwen:30},Ze=l(e=>{if(e?.provider){if(!M.includes(e.provider))return;const t=_(e.provider);return t.available?t:void 0}const r=De();if(r.length===0)return;const a={...Qe,...e?.priority};return r.toSorted((t,n)=>(a[n.name]??0)-(a[t.name]??0))[0]},"resolveProvider"),er=new Set(["defer","review","skip","update"]),rr=new Set(["critical","high","low","medium"]),tr=new Set(["high","low","medium"]),ar=50,P=30,nr=l(e=>e.map(r=>{const a=r.vulnerabilities&&r.vulnerabilities.length>0?` [VULNERABILITIES: ${r.vulnerabilities.map(n=>`${n.severity} ${n.id}`).join(", ")}]`:"";let t="";if(r.socketReport){const n=Math.round(r.socketReport.score.overall*100),i=[`score:${String(n)}%`];if(r.socketReport.alerts.length>0){const o={};for(const s of r.socketReport.alerts)o[s.severity]=(o[s.severity]??0)+1;const p=Object.entries(o).map(([s,c])=>`${String(c)} ${s}`).join(", ");i.push(`alerts: ${p}`)}i.push(`supply-chain:${String(Math.round(r.socketReport.score.supplyChain*100))}%`),i.push(`quality:${String(Math.round(r.socketReport.score.quality*100))}%`),t=` [SOCKET.DEV: ${i.join(", ")}]`}return`- ${r.packageName}: ${r.currentRange} → ${r.newRange} (${r.updateType})${a}${t}`}).join(`
3
3
  `),"buildPackageList"),A=`Respond ONLY with valid JSON in this exact structure:
4
4
  {
@@ -1 +1 @@
1
- var S=Object.defineProperty;var g=(t,e)=>S(t,"name",{value:e,configurable:!0});import{createRequire as _}from"node:module";import{X as v}from"./xxh3-DrAUNq4n.js";import{M as c,b as w,i as d,n as j}from"../packem_chunks/config.js";import{n as A}from"../packem_chunks/bin.js";const M=_(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,b=g(t=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[e,r]=u.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return u.getBuiltinModule(t)}return M(t)},"__cjs_getBuiltinModule"),{rmSync:f,writeFileSync:h,readdirSync:p,statSync:D}=b("node:fs");var B=Object.defineProperty,n=g((t,e)=>B(t,"name",{value:e,configurable:!0}),"r");const a=n(()=>c(A(),"ai"),"getCacheDirectory"),J=3600*1e3,N=1800*1e3,C=n(()=>{w(a())},"ensureCacheDirectory"),k=n((t,e,r)=>{const s=r.map(i=>({currentRange:i.currentRange,name:i.packageName,targetVersion:i.targetVersion})).toSorted((i,y)=>i.name.localeCompare(y.name)),o=JSON.stringify({analysisType:e,packages:s,provider:t});return v(Buffer.from(o))},"buildCacheKey"),q=n(t=>{const e=c(a(),`${t}.json`);if(d(e))try{const r=j(e);if(Date.now()-r.createdAt>r.ttlMs){f(e,{force:!0});return}return r.result}catch{f(e,{force:!0});return}},"getCachedAnalysis"),z=n((t,e,r)=>{C();const s=a(),o={createdAt:Date.now(),result:e,ttlMs:r};h(c(s,`${t}.json`),JSON.stringify(o,void 0,2),"utf8")},"setCachedAnalysis"),V=n((t,e)=>e!==void 0&&e>0?e:t==="security"?N:J,"getTtlForAnalysisType"),F=n(()=>{const t=a();if(!d(t))return{entries:0,newestEntry:void 0,oldestEntry:void 0,totalSizeBytes:0};const e=p(t).filter(i=>i.endsWith(".json"));let r=0,s,o;for(const i of e){const y=c(t,i),m=D(y);r+=m.size;const{mtimeMs:l}=m;(s===void 0||l<s)&&(s=l),(o===void 0||l>o)&&(o=l)}return{entries:e.length,newestEntry:o,oldestEntry:s,totalSizeBytes:r}},"getCacheStats"),K=n(t=>v(Buffer.from(JSON.stringify(t))),"buildHashCacheKey"),P=n(t=>{const e=c(a(),`${t}.json`);if(d(e))try{const r=j(e);if(Date.now()-r.createdAt>r.ttlMs){f(e,{force:!0});return}return r.result}catch{f(e,{force:!0});return}},"getCachedJson"),W=n((t,e,r)=>{C();const s=a(),o={createdAt:Date.now(),result:e,ttlMs:r};h(c(s,`${t}.json`),JSON.stringify(o,void 0,2),"utf8")},"setCachedJson"),x=n(()=>{const t=a();if(!d(t))return 0;const e=p(t).filter(r=>r.endsWith(".json"));for(const r of e)f(c(t,r),{force:!0});return e.length},"clearCache");export{x as B,F as J,K as M,P as N,W as O,z as R,q as T,V as j,k};
1
+ var S=Object.defineProperty;var g=(t,e)=>S(t,"name",{value:e,configurable:!0});import{createRequire as _}from"node:module";import{X as v}from"./xxh3-DrAUNq4n.js";import{M as c,b as w,i as d,n as j}from"../packem_chunks/config.js";import{k as A}from"../packem_chunks/bin.js";const M=_(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,b=g(t=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[e,r]=u.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return u.getBuiltinModule(t)}return M(t)},"__cjs_getBuiltinModule"),{rmSync:f,writeFileSync:h,readdirSync:p,statSync:D}=b("node:fs");var B=Object.defineProperty,n=g((t,e)=>B(t,"name",{value:e,configurable:!0}),"r");const a=n(()=>c(A(),"ai"),"getCacheDirectory"),J=3600*1e3,N=1800*1e3,C=n(()=>{w(a())},"ensureCacheDirectory"),k=n((t,e,r)=>{const s=r.map(i=>({currentRange:i.currentRange,name:i.packageName,targetVersion:i.targetVersion})).toSorted((i,y)=>i.name.localeCompare(y.name)),o=JSON.stringify({analysisType:e,packages:s,provider:t});return v(Buffer.from(o))},"buildCacheKey"),q=n(t=>{const e=c(a(),`${t}.json`);if(d(e))try{const r=j(e);if(Date.now()-r.createdAt>r.ttlMs){f(e,{force:!0});return}return r.result}catch{f(e,{force:!0});return}},"getCachedAnalysis"),z=n((t,e,r)=>{C();const s=a(),o={createdAt:Date.now(),result:e,ttlMs:r};h(c(s,`${t}.json`),JSON.stringify(o,void 0,2),"utf8")},"setCachedAnalysis"),V=n((t,e)=>e!==void 0&&e>0?e:t==="security"?N:J,"getTtlForAnalysisType"),F=n(()=>{const t=a();if(!d(t))return{entries:0,newestEntry:void 0,oldestEntry:void 0,totalSizeBytes:0};const e=p(t).filter(i=>i.endsWith(".json"));let r=0,s,o;for(const i of e){const y=c(t,i),m=D(y);r+=m.size;const{mtimeMs:l}=m;(s===void 0||l<s)&&(s=l),(o===void 0||l>o)&&(o=l)}return{entries:e.length,newestEntry:o,oldestEntry:s,totalSizeBytes:r}},"getCacheStats"),K=n(t=>v(Buffer.from(JSON.stringify(t))),"buildHashCacheKey"),P=n(t=>{const e=c(a(),`${t}.json`);if(d(e))try{const r=j(e);if(Date.now()-r.createdAt>r.ttlMs){f(e,{force:!0});return}return r.result}catch{f(e,{force:!0});return}},"getCachedJson"),W=n((t,e,r)=>{C();const s=a(),o={createdAt:Date.now(),result:e,ttlMs:r};h(c(s,`${t}.json`),JSON.stringify(o,void 0,2),"utf8")},"setCachedJson"),x=n(()=>{const t=a();if(!d(t))return 0;const e=p(t).filter(r=>r.endsWith(".json"));for(const r of e)f(c(t,r),{force:!0});return e.length},"clearCache");export{x as B,F as J,K as M,P as N,W as O,z as R,q as T,V as j,k};
@@ -1,5 +1,5 @@
1
- var O=Object.defineProperty;var f=(t,e)=>O(t,"name",{value:e,configurable:!0});import{createRequire as F}from"node:module";import{readLastRunSummary as T}from"@visulima/task-runner";import{a as k}from"./failure-log-C3LEMmkq.js";import{r as j,f as y,a as D,d as _}from"./run-summary-utils-BaBGP3bo.js";import{Y as N}from"../packem_chunks/bin.js";import{O as $,C as b,M as A,z as E}from"../packem_chunks/config.js";import{w as B,b as H,r as W}from"./ai-analysis-uYuTIIXi.js";import{M as q,N as Y,O as L}from"./ai-cache-DuwHYx2O.js";const C=F(import.meta.url),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,I=f(t=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[e,a]=l.versions.node.split(".").map(Number);if(e>22||e===22&&a>=3||e===20&&a>=16)return l.getBuiltinModule(t)}return C(t)},"__cjs_getBuiltinModule"),{readFile:M,writeFile:R}=I("node:fs/promises");var z=Object.defineProperty,m=f((t,e)=>z(t,"name",{value:e,configurable:!0}),"u");const J=32*1024,K=m((t,e)=>{if(t.length<=e)return t;const a=t.slice(-e),o=t.length-a.length;return`[…${String(o)} bytes truncated from head…]
2
- ${a}`},"truncateHead"),U=m(async(t,e)=>e===void 0?T(t,{dataDirectory:N(t)}):j(t,e),"loadSummary"),xt=m(async(t,e,a={})=>{const o=a.terminalOutputLimit??J,[n,r]=await Promise.all([k(t,e),U(t,a.runId)]),i=r?y(r,e):void 0;if(!n&&!i)return;let s,c;if(r&&i){const d=await D(t,r.id),g=d?y(d,e):void 0;s=_(i.hashDetails,g?.hashDetails),c=d?.id}const h=n?.terminalOutput??"";return{command:n?.command??void 0,cwd:n?.cwd??void 0,dependencies:i?.dependencies??[],duration:i?.duration,exitCode:n?.exitCode??i?.exitCode,hash:i?.hash??n?.hash,hashDetails:i?.hashDetails,hashDiff:s,previousRunId:c,project:i?.target.project,runId:r?.id??n?.runId,status:n?.status??(i?G(i):void 0),target:i?.target.target,taskId:e,terminalOutput:K(h,o),terminalOutputCaptured:!!n,timestamp:n?.timestamp??i?.endTime??i?.startTime}},"aggregateFailureContext"),G=m(t=>{if(t.exitCode!==void 0&&t.exitCode!==0)return"failure";switch(t.cacheStatus){case"HIT":return"local-cache";case"REMOTE_HIT":return"remote-cache";case"SKIPPED":return"skipped";default:return t.exitCode===0?"success":void 0}},"mapCacheStatusToTaskStatus");var V=Object.defineProperty,u=f((t,e)=>V(t,"name",{value:e,configurable:!0}),"a");const Q=3600*1e3,S=80,X=new Set(["high","low","medium"]),Z=u(()=>`You are an expert software engineer helping fix a failing build/test/lint task.
1
+ var O=Object.defineProperty;var f=(t,e)=>O(t,"name",{value:e,configurable:!0});import{createRequire as F}from"node:module";import{readLastRunSummary as T}from"@visulima/task-runner";import{a as k}from"./failure-log-DF7nrFIs.js";import{r as j,f as y,a as D,d as _}from"./run-summary-utils-DIJV_dUD.js";import{Z as N}from"../packem_chunks/bin.js";import{O as $,C as b,M as A,z as E}from"../packem_chunks/config.js";import{w as B,b as H,r as W}from"./ai-analysis-DGBZYlxF.js";import{M as q,N as L,O as Y}from"./ai-cache-BjlXWJtl.js";const C=F(import.meta.url),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,I=f(t=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[e,a]=l.versions.node.split(".").map(Number);if(e>22||e===22&&a>=3||e===20&&a>=16)return l.getBuiltinModule(t)}return C(t)},"__cjs_getBuiltinModule"),{readFile:M,writeFile:R}=I("node:fs/promises");var z=Object.defineProperty,m=f((t,e)=>z(t,"name",{value:e,configurable:!0}),"u");const J=32*1024,K=m((t,e)=>{if(t.length<=e)return t;const a=t.slice(-e),o=t.length-a.length;return`[…${String(o)} bytes truncated from head…]
2
+ ${a}`},"truncateHead"),U=m(async(t,e)=>e===void 0?T(t,{dataDirectory:N(t)}):j(t,e),"loadSummary"),xt=m(async(t,e,a={})=>{const o=a.terminalOutputLimit??J,[n,r]=await Promise.all([k(t,e),U(t,a.runId)]),i=r?y(r,e):void 0;if(!n&&!i)return;let s,c;if(r&&i){const d=await D(t,r.id),g=d?y(d,e):void 0;s=_(i.hashDetails,g?.hashDetails),c=d?.id}const h=n?.terminalOutput??"";return{command:n?.command??void 0,cwd:n?.cwd??void 0,dependencies:i?.dependencies??[],duration:i?.duration,exitCode:n?.exitCode??i?.exitCode,hash:i?.hash??n?.hash,hashDetails:i?.hashDetails,hashDiff:s,previousRunId:c,project:i?.target.project,runId:r?.id??n?.runId,status:n?.status??(i?G(i):void 0),target:i?.target.target,taskId:e,terminalOutput:K(h,o),terminalOutputCaptured:!!n,timestamp:n?.timestamp??i?.endTime??i?.startTime}},"aggregateFailureContext"),G=m(t=>{if(t.exitCode!==void 0&&t.exitCode!==0)return"failure";switch(t.cacheStatus){case"HIT":return"local-cache";case"REMOTE_HIT":return"remote-cache";case"SKIPPED":return"skipped";default:return t.exitCode===0?"success":void 0}},"mapCacheStatusToTaskStatus");var V=Object.defineProperty,u=f((t,e)=>V(t,"name",{value:e,configurable:!0}),"a");const Z=3600*1e3,S=80,Q=new Set(["high","low","medium"]),X=u(()=>`You are an expert software engineer helping fix a failing build/test/lint task.
3
3
 
4
4
  You will be given:
5
5
  - The terminal output (stdout/stderr) from the failed task.
@@ -34,10 +34,10 @@ Respond ONLY with valid JSON in this exact structure:
34
34
  ${a.join(`
35
35
  `)}`},"formatBucket"),tt=u(t=>{if(!t.hashDiff)return"No hash-diff available — there is no previous run to compare against.";const e=[];t.hashDiff.commandChanged&&e.push("- command line changed since previous run");const a=v("file inputs",t.hashDiff.nodes),o=v("implicit deps",t.hashDiff.implicitDeps),n=v("runtime/env",t.hashDiff.runtime);return a&&e.push(a),o&&e.push(o),n&&e.push(n),e.length===0?"No detectable changes between this run and the previous run.":e.join(`
36
36
  `)},"buildHashDiffSummary"),et=u(t=>{const e=[`Task: ${t.taskId}`];return t.project&&e.push(`Project: ${t.project}`),t.target&&e.push(`Target: ${t.target}`),t.command&&e.push(`Command: ${t.command}`),t.cwd&&e.push(`CWD: ${t.cwd}`),t.exitCode!==void 0&&e.push(`Exit code: ${String(t.exitCode)}`),t.hash&&e.push(`Task hash: ${t.hash}`),e.push("","Hash-diff since previous run:",tt(t),""),t.terminalOutputCaptured?e.push("Terminal output:","```",t.terminalOutput,"```"):e.push("Terminal output: <no failure log was captured for this task>",'Set "cannotFix" and tell the user to re-run with `vis run` so logs can be captured.'),e.join(`
37
- `)},"buildUserPrompt"),at=u(t=>`${Z()}
37
+ `)},"buildUserPrompt"),at=u(t=>`${X()}
38
38
 
39
- ${et(t)}`,"buildFixPrompt"),it=u((t,e)=>{const a=Array.isArray(t.patches)?t.patches:[],o=[];for(const r of a)typeof r.file!="string"||r.file.length===0||typeof r.oldString!="string"||r.oldString.length===0||typeof r.newString=="string"&&o.push({file:r.file,newString:r.newString,oldString:r.oldString,reason:typeof r.reason=="string"&&r.reason.length>0?r.reason:void 0});const n=typeof t.cannotFix=="string"&&t.cannotFix.length>0?t.cannotFix:void 0;return{cannotFix:n,confidence:X.has(t.confidence)?t.confidence:"low",explanation:typeof t.explanation=="string"?t.explanation:"",patches:n?[]:o,provider:e}},"normalizeFixProposal"),rt=u((t,e)=>{const a=B(t);return!a||typeof a!="object"?{cannotFix:"AI response was not valid JSON.",confidence:"low",explanation:"Failed to parse AI response.",patches:[],provider:e}:it(a,e)},"parseFixResponse"),nt=u((t,e)=>q({cwd:e.cwd??null,flow:"ai-fix",hash:e.hash??null,provider:t,taskId:e.taskId,terminalOutput:e.terminalOutput,terminalOutputCaptured:e.terminalOutputCaptured}),"buildFixCacheKey"),wt=u(async(t,e,a={})=>{const o=H(a.config);if(!o){e.warn(`No AI provider available — install one of: claude, gemini, copilot, codex.
40
- `);return}const n=a.cache!==!1,r=nt(o.name,t);if(n){const i=Y(r);if(i)return e.info(`Using cached fix proposal from ${i.provider}.
39
+ ${et(t)}`,"buildFixPrompt"),it=u((t,e)=>{const a=Array.isArray(t.patches)?t.patches:[],o=[];for(const r of a)typeof r.file!="string"||r.file.length===0||typeof r.oldString!="string"||r.oldString.length===0||typeof r.newString=="string"&&o.push({file:r.file,newString:r.newString,oldString:r.oldString,reason:typeof r.reason=="string"&&r.reason.length>0?r.reason:void 0});const n=typeof t.cannotFix=="string"&&t.cannotFix.length>0?t.cannotFix:void 0;return{cannotFix:n,confidence:Q.has(t.confidence)?t.confidence:"low",explanation:typeof t.explanation=="string"?t.explanation:"",patches:n?[]:o,provider:e}},"normalizeFixProposal"),rt=u((t,e)=>{const a=B(t);return!a||typeof a!="object"?{cannotFix:"AI response was not valid JSON.",confidence:"low",explanation:"Failed to parse AI response.",patches:[],provider:e}:it(a,e)},"parseFixResponse"),nt=u((t,e)=>q({cwd:e.cwd??null,flow:"ai-fix",hash:e.hash??null,provider:t,taskId:e.taskId,terminalOutput:e.terminalOutput,terminalOutputCaptured:e.terminalOutputCaptured}),"buildFixCacheKey"),wt=u(async(t,e,a={})=>{const o=H(a.config);if(!o){e.warn(`No AI provider available — install one of: claude, gemini, copilot, codex.
40
+ `);return}const n=a.cache!==!1,r=nt(o.name,t);if(n){const i=L(r);if(i)return e.info(`Using cached fix proposal from ${i.provider}.
41
41
  `),i}e.info(`Generating fix proposal with ${o.name}...
42
- `);try{const i=await W(o,at(t)),s=rt(i,o.name);return n&&s.patches.length>0&&!s.cannotFix&&L(r,s,Q),s}catch(i){const s=i instanceof Error?i.message:String(i);e.warn(`AI fix proposal failed (${s}).
42
+ `);try{const i=await W(o,at(t)),s=rt(i,o.name);return n&&s.patches.length>0&&!s.cannotFix&&Y(r,s,Z),s}catch(i){const s=i instanceof Error?i.message:String(i);e.warn(`AI fix proposal failed (${s}).
43
43
  `);return}},"runFixAnalysis"),st=u((t,e,a)=>$(a)?b(a):b(A(e??t,a)),"resolvePatchPath"),ot=u((t,e)=>{const a=E(t,e);return a===""?!0:!a.startsWith("..")&&!$(a)},"isInsideWorkspace"),ct=u((t,e,a)=>{const o=t.indexOf(e),n=Math.max(0,o-S),r=Math.min(t.length,o+e.length+S),i=t.slice(n,r);return{previewAfter:`${t.slice(n,o)}${a}${t.slice(o+e.length,r)}`,previewBefore:i}},"buildPreview"),yt=u(async(t,e,a,o={})=>{const n=o.dryRun===!0,r=new Map,i=[];for(const s of a.patches){const c=st(t,e,s.file);if(!ot(t,c)){i.push({absolutePath:c,patch:s,status:"outside-workspace"});continue}let h=r.get(c);if(h===void 0){try{h=await M(c,"utf8")}catch(p){const w=p.code;i.push({absolutePath:c,error:w==="ENOENT"?void 0:p.message,patch:s,status:w==="ENOENT"?"missing-file":"error"});continue}r.set(c,h)}const d=h.indexOf(s.oldString);if(d===-1){i.push({absolutePath:c,patch:s,status:"no-match"});continue}if(h.indexOf(s.oldString,d+s.oldString.length)!==-1){i.push({absolutePath:c,patch:s,status:"ambiguous-match"});continue}const{previewAfter:g,previewBefore:P}=ct(h,s.oldString,s.newString),x=`${h.slice(0,d)}${s.newString}${h.slice(d+s.oldString.length)}`;if(!n)try{await R(c,x,"utf8")}catch(p){r.delete(c),i.push({absolutePath:c,error:p.message,patch:s,status:"error"});continue}r.set(c,x),i.push({absolutePath:c,patch:s,previewAfter:g,previewBefore:P,status:"applied"})}return i},"applyFixProposal");export{xt as a,wt as b,yt as c,st as r};
@@ -0,0 +1,4 @@
1
+ var de=Object.defineProperty;var w=(e,n)=>de(e,"name",{value:n,configurable:!0});import{createRequire as he}from"node:module";import{n as ie,M as B,$ as _e}from"../packem_chunks/config.js";import{r as be}from"./docker-lk0-5Z-i.js";import{e as $e}from"./license-zZU7aavK.js";import{F as Oe}from"./lockfile-C5DYMHVq.js";import{aY as ke}from"../packem_chunks/bin.js";const ge=he(import.meta.url),W=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ae=w(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 ge(e)},"__cjs_getBuiltinModule"),{randomUUID:ye}=ae("node:crypto"),{readdirSync:ve}=ae("node:fs");var je=Object.defineProperty,pe=w((e,n)=>je(e,"name",{value:n,configurable:!0}),"r$1");const z=pe(e=>e.replaceAll(/[^\w.~-]/g,n=>`%${(n.codePointAt(0)??0).toString(16).toUpperCase().padStart(2,"0")}`),"encodeSegment"),M=pe((e,n)=>{const t=e.toLowerCase();if(t.startsWith("@")){const o=t.indexOf("/");if(o>0){const r=t.slice(0,o),p=t.slice(o+1);return`pkg:npm/${z(r)}/${z(p)}@${z(n)}`}}return`pkg:npm/${z(t)}@${z(n)}`},"toNpmPurl");var Se=Object.defineProperty,j=w((e,n)=>Se(e,"name",{value:n,configurable:!0}),"a");const m={ARRAY:"array",BOOLEAN:"boolean",DATE:"date",FUNCTION:"function",JSTOXML_OBJECT:"jstoxml-object",NULL:"null",NUMBER:"number",OBJECT:"object",STRING:"string"},Te=[m.STRING,m.NUMBER,m.BOOLEAN],Ae='<?xml version="1.0" encoding="UTF-8"?>',se=["_selfCloseTag","_attrs"],xe=j((e="",n=0)=>e.repeat(n),"getIndentStr"),Q=j(e=>Array.isArray(e)&&m.ARRAY||typeof e===m.OBJECT&&e!==null&&e._name&&m.JSTOXML_OBJECT||e instanceof Date&&m.DATE||e===null&&m.NULL||typeof e,"getType"),le=j(e=>e.startsWith("<![CDATA["),"isCDATA"),ue=j((e="",n={},t)=>{let o=e;if(typeof e===m.STRING){if(le(e))return e;const r=new RegExp(`(${Object.keys(n).join("|")})(?!(\\w|#)*;)`,"g");o=String(e).replace(r,(p,g)=>n[g]||"")}return typeof t=="function"?t(o):o},"mapStr"),Ce=j((e={},n,t,o)=>(Array.isArray(e)?e:Object.entries(e).map(([r,p])=>({[r]:p}))).reduce((r,p)=>{const g=Object.keys(p)[0],y=p[g];if(typeof t===m.FUNCTION&&t(g,y))return r;const b=n?ue(y,n):y,$=!o&&b===!0?"":`="${b}"`;return r.push(`${g}${$}`),r},[]),"getAttributeKeyVals"),Ne=j((e={},n,t,o)=>{const r=Ce(e,n,t,o);return r.length===0?"":` ${r.join(" ")}`},"formatAttributes"),Re=j((e={})=>Object.keys(e).map(n=>({_name:n,_content:e[n]})),"objToArray"),we=j(e=>Te.includes(Q(e)),"isPrimitive"),Pe=j(e=>!e.match("<"),"isSimpleXML"),De=j(({header:e,isOutputStart:n})=>e&&n?typeof e===m.BOOLEAN?Ae:e:"","getHeaderString"),re={"<":"&lt;",">":"&gt;","&":"&amp;",'"':"&quot;"},J=j((e={},n={})=>{const{depth:t=0,indent:o,_isFirstItem:r,_isOutputStart:p=!0,header:g,attributeReplacements:y={},attributeFilter:b,attributeExplicitTrue:$=!1,contentReplacements:q={},contentMap:L,selfCloseTags:I=!0}=n,H=typeof y=="boolean"&&!y?{}:{...re,...y},Y=typeof q=="boolean"&&!q?{}:{...re,...q},P=typeof o=="string",T=xe(o,t),G=Q(e),U=De({header:g,indent:o,depth:t,isOutputStart:p}),D=p&&!U&&r&&t===0,E=P&&!D?`
2
+ `:"";let v="";switch(G){case m.JSTOXML_OBJECT:{const{_name:f,_content:l}=e;if(l===null&&typeof L!="function"){v=`${E}${T}${f}`;break}if(Array.isArray(l)&&l.every(we))return l.map(S=>J({_name:f,_content:S},{...n,depth:t,_isOutputStart:!1})).join("");if(se.includes(f))break;const _=J(l,{...n,depth:t+1,_isOutputStart:D}),N=Q(_),O=Pe(_),k=le(_),R=`${E}${T}`;if(f==="_comment"){v+=`${R}<!-- ${l} -->`;break}const K=N==="undefined"||_==="",c=I,s=e._selfCloseTag,i=typeof s===m.BOOLEAN?K&&s:K&&c,a=i?"/":"",u=Ne(e._attrs,H,b,$),d=`<${f}${u}${a}>`,A=P&&!O&&!k?`
3
+ ${T}`:"",x=i?"":`${_}${A}</${f}>`;v+=`${R}${d}${x}`;break}case m.OBJECT:{const f=Object.keys(e);v=f.map((l,_)=>{const N={...n,_isFirstItem:_===0,_isLastItem:_+1===f.length,_isOutputStart:D},O={_name:l};if(Q(e[l])===m.OBJECT&&(se.forEach(k=>{const R=e[l][k];typeof R<"u"&&(O[k]=R,delete e[l][k])}),typeof e[l]._content<"u"&&Object.keys(e[l]).length>1)){const k=Object.assign({},e[l]);delete k._content,O._content=[...Re(k),e[l]._content]}return typeof O._content>"u"&&(O._content=e[l]),J(O,N)},n).join("");break}case m.FUNCTION:{const f=e(n);v=J(f,n);break}case m.ARRAY:{v=e.map((f,l)=>{const _={...n,_isFirstItem:l===0,_isLastItem:l+1===e.length,_isOutputStart:D};return J(f,_)}).join("");break}default:{v=ue(e,Y,L);break}}return`${U}${v}`},"toXML");var Ee=Object.defineProperty,X=w((e,n)=>Ee(e,"name",{value:n,configurable:!0}),"r");const te=X(e=>{try{return ie(e)}catch{return}},"readJsonSafe"),Me=X(e=>{if(e.length===0||e.includes("..")||e.startsWith(".")||e.includes("\0")||e.includes("\\"))return!1;if(e.startsWith("@")){const n=e.indexOf("/");return n>1&&!e.includes("/",n+1)}return!e.includes("/")},"isSafePackageName"),Be=X(e=>e.length>0&&!e.includes("/")&&!e.includes("\\")&&!e.includes("..")&&!e.includes("\0"),"isSafeVersion"),Le=X((e,n,t)=>{const o=`${n.replaceAll("/","+")}@${t}`,r=B(e,"node_modules",".pnpm"),p=te(B(r,o,"node_modules",n,"package.json"));if(p)return p;let g;try{g=ve(r)}catch{return}const y=`${o}_`;for(const b of g){if(!b.startsWith(y))continue;const $=te(B(r,b,"node_modules",n,"package.json"));if($)return $}},"readPnpmVirtualStore"),Ie=X((e,n,t)=>{const o=te(B(e,"node_modules",n,"package.json"));return o?.version===t?o:void 0},"readHoistedCopy"),Ue=X((e,n,t)=>{if(!(!Me(n)||!Be(t)))return Le(e,n,t)??Ie(e,n,t)},"readInstalledPackageMetadata");var Fe=Object.defineProperty,me=w((e,n)=>Fe(e,"name",{value:n,configurable:!0}),"t");const Je={sha256:"SHA-256",sha384:"SHA-384",sha512:"SHA-512"},Xe={sha256:64,sha384:96,sha512:128},qe=me(e=>{const n={name:e.name,version:e.version},{integrity:t}=e;return t&&t.hex.length===Xe[t.algorithm]&&(n.hash={alg:Je[t.algorithm],content:t.hex}),e.dependencies&&(n.dependencies=e.dependencies),e.peerDependencies&&(n.peerDependencies=e.peerDependencies),e.optionalDependencies&&(n.optionalDependencies=e.optionalDependencies),n},"toResolvedPackage"),He=[{file:"pnpm-lock.yaml",type:"pnpm"},{file:"npm-shrinkwrap.json",type:"npm"},{file:"package-lock.json",type:"npm"},{file:"yarn.lock",type:"yarn"},{file:"bun.lock",type:"bun"}],Ve=me(e=>{for(const{file:n,type:t}of He){let o;try{o=_e(B(e,n))}catch{continue}const r=new Map;for(const p of Oe(o,t))r.set(`${p.name}@${p.version}`,qe(p));return{packages:r,type:t}}},"readLockfilePackages");var We=Object.defineProperty,fe=w((e,n)=>We(e,"name",{value:n,configurable:!0}),"s");const ze=fe(e=>{const n=e.indexOf(":");return n<=0?e:e.slice(0,n)==="npm"?e.slice(n+1):e},"stripProtocolPrefix"),ee=fe((e,n,t)=>{const o=t.get(e);if(!o||o.size===0)return;if(o.has(n))return n;const r=ze(n);if(r!==n&&o.has(r))return r;const p=[...o];return ke.maxSatisfying(p,r,{includePrerelease:!0})||p[0]},"resolveSpecifier");var Ye=Object.defineProperty,h=w((e,n)=>Ye(e,"name",{value:n,configurable:!0}),"p");const Ge="1.7",Ke="CycloneDX",Qe="http://cyclonedx.org/schema/bom-1.7.schema.json",Ze="@visulima/vis",ce=h(e=>{try{return ie(e)}catch{return}},"readPackageJson"),en=h(e=>{if(e){if(typeof e=="string")return e;if(typeof e=="object"&&e.name)return e.email?`${e.name} <${e.email}>`:e.name}},"toAuthorString"),nn=h(e=>{if(e)return typeof e=="string"?e:e.url},"toRepositoryUrl"),tn=h(e=>{if(e)return typeof e=="string"?e:e.url},"toBugsUrl"),on=h(e=>{const n=[];e.homepage&&n.push({type:"website",url:e.homepage});const t=nn(e.repository);t&&n.push({type:"vcs",url:t});const o=tn(e.bugs);return o&&n.push({type:"issue-tracker",url:o}),n.length>0?n:void 0},"buildExternalReferences"),sn=h(e=>e==="application"||e==="service"||e==="tool"?"application":"library","toCycloneDxComponentType"),ne=h((e,n)=>{if(!n)return;n.description&&(e.description=n.description);const t=en(n.author);t&&(e.author=t);const o=$e(n);o&&(e.licenses=o);const r=on(n);r&&(e.externalReferences=r)},"decoratePackageComponent"),gn=h(e=>{const{focus:n,generatorVersion:t,includeDev:o=!1,now:r=new Date,projectGraph:p,serialNumber:g,workspace:y,workspaceRoot:b}=e,$=n&&n.length>0?[...be(n,p)].sort():Object.keys(y.projects).sort(),q=new Set($),L=new Map;for(const c of $){const s=y.projects[c];s&&L.set(c,ce(B(b,s.root,"package.json")))}const I=[],H=new Map;for(const c of $){const s=y.projects[c];if(!s)continue;const i=L.get(c),a=i?.version??"0.0.0",u=M(c,a);H.set(c,u);const d={"bom-ref":u,name:c,purl:u,type:sn(s.projectType),version:a};ne(d,i),I.push(d)}const Y=Ve(b),P=new Map,T=new Map;if(Y)for(const c of Y.packages.values()){P.set(`${c.name}@${c.version}`,c);let s=T.get(c.name);s||(s=new Set,T.set(c.name,s)),s.add(c.version)}const G=[],U=[],D=new Map;for(const c of $){const s=L.get(c);if(!s)continue;const i=[s.dependencies,s.peerDependencies];o&&i.push(s.devDependencies);const a=new Set,u=h((d,A)=>{if(A)for(const[x,S]of Object.entries(A)){if(q.has(x)){const F=H.get(x);F&&a.add(F);continue}const C=ee(x,S,T);C&&(a.add(M(x,C)),d.push(`${x}@${C}`))}},"seedRef");for(const d of i)u(G,d);u(U,s.optionalDependencies),D.set(c,a)}const E=new Map,v=new Map,f=h((c,s)=>{const i=[...c];for(;i.length>0;){const a=i.pop(),u=E.get(a);if(u==="required"||u==="optional"&&s==="optional")continue;E.set(a,s);const d=P.get(a);if(!d)continue;const A=v.get(a)??new Set,x=[d.dependencies,d.peerDependencies];for(const S of x)if(S)for(const[C,F]of Object.entries(S))for(const V of F){const Z=ee(C,V,T);Z&&(A.add(M(C,Z)),i.push(`${C}@${Z}`))}if(d.optionalDependencies)for(const[S,C]of Object.entries(d.optionalDependencies))for(const F of C){const V=ee(S,F,T);V&&(A.add(M(S,V)),U.push(`${S}@${V}`))}A.size>0&&v.set(a,A)}},"walk");f(G,"required"),f(U,"optional");const l=[],_=[...E.keys()].sort();for(const c of _){const s=P.get(c);if(!s)continue;const i=M(s.name,s.version),a={"bom-ref":i,name:s.name,purl:i,scope:E.get(c)??"required",type:"library",version:s.version};s.hash&&(a.hashes=[s.hash]),ne(a,Ue(b,s.name,s.version)),l.push(a)}const N=[];for(const[c,s]of D){const i=H.get(c);if(!i)continue;const a=[...s].sort();N.push(a.length>0?{dependsOn:a,ref:i}:{ref:i})}for(const c of _){const s=P.get(c);if(!s)continue;const i=M(s.name,s.version),a=v.get(c),u=a?[...a].sort():[];N.push(u.length>0?{dependsOn:u,ref:i}:{ref:i})}N.sort((c,s)=>c.ref.localeCompare(s.ref));const O=ce(B(b,"package.json")),k=(()=>{if(n?.length===1){const u=I.find(d=>d.name===n[0]);if(u)return{"bom-ref":u["bom-ref"],name:u.name,purl:u.purl,type:u.type,version:u.version}}const c=O?.name??"workspace",s=O?.version??"0.0.0",i=M(c,s),a={"bom-ref":i,name:c,purl:i,type:"application",version:s};return ne(a,O),a})(),R=k["bom-ref"],K=R?I.filter(c=>c["bom-ref"]!==R):I;return{$schema:Qe,bomFormat:Ke,components:[...K,...l],dependencies:N,metadata:{component:k,lifecycles:[{phase:"build"}],timestamp:r.toISOString(),tools:{components:[{name:Ze,type:"application",...t?{version:t}:{}}]}},serialNumber:g??`urn:uuid:${ye()}`,specVersion:Ge,version:1}},"buildCycloneDxBom"),yn=h(e=>{const n={version:e.version??1,xmlns:"http://cyclonedx.org/schema/bom/1.7"};e.serialNumber&&(n.serialNumber=e.serialNumber);const t=[];return e.metadata&&t.push(rn(e.metadata)),e.components&&e.components.length>0&&t.push({_content:e.components.map(o=>oe(o)),_name:"components"}),e.dependencies&&e.dependencies.length>0&&t.push({_content:e.dependencies.map(o=>an(o)),_name:"dependencies"}),`${J({_attrs:n,_content:t,_name:"bom"},{header:!0,indent:" ",selfCloseTags:!0})}
4
+ `},"serializeBomToXml"),rn=h(e=>{const n=[];return e.timestamp&&n.push({timestamp:e.timestamp}),e.lifecycles&&e.lifecycles.length>0&&n.push({_content:e.lifecycles.map(t=>{const o=[];return t.phase&&o.push({phase:t.phase}),t.name&&o.push({name:t.name}),t.description&&o.push({description:t.description}),{_content:o,_name:"lifecycle"}}),_name:"lifecycles"}),e.tools?.components&&n.push({_content:[{_content:e.tools.components.map(t=>oe(t)),_name:"components"}],_name:"tools"}),e.component&&n.push(oe(e.component)),{_content:n,_name:"metadata"}},"metadataToXmlElement"),oe=h(e=>{const n={type:e.type};e["bom-ref"]&&(n["bom-ref"]=e["bom-ref"]);const t=[];e.group&&t.push({group:e.group}),t.push({name:e.name}),e.version&&t.push({version:e.version}),e.description&&t.push({description:e.description}),e.author&&t.push({author:e.author}),e.hashes&&e.hashes.length>0&&t.push({_content:e.hashes.map(r=>({_attrs:{alg:r.alg},_content:r.content,_name:"hash"})),_name:"hashes"});const o=cn(e.licenses);return o&&t.push(o),e.purl&&t.push({purl:e.purl}),e.scope&&t.push({scope:e.scope}),e.externalReferences&&e.externalReferences.length>0&&t.push({_content:e.externalReferences.map(r=>({_attrs:{type:r.type},_content:[{url:r.url}],_name:"reference"})),_name:"externalReferences"}),{_attrs:n,_content:t,_name:"component"}},"componentToXmlElement"),cn=h(e=>{if(!e||e.length===0)return;const n=[];for(const t of e){if("expression"in t){n.push({expression:t.expression});continue}const o=[];"id"in t.license&&t.license.id?o.push({id:t.license.id}):"name"in t.license&&t.license.name&&o.push({name:t.license.name}),n.push({_content:o,_name:"license"})}return{_content:n,_name:"licenses"}},"licensesToXmlElement"),an=h(e=>e.dependsOn&&e.dependsOn.length>0?{_attrs:{ref:e.ref},_content:e.dependsOn.map(n=>({_attrs:{ref:n},_name:"dependency"})),_name:"dependency"}:{_attrs:{ref:e.ref},_name:"dependency"},"dependencyToXmlElement");export{gn as b,yn as s,M as t};
@@ -0,0 +1 @@
1
+ var g=Object.defineProperty;var m=(s,o)=>g(s,"name",{value:o,configurable:!0});import{i as v,M as u,$ as d}from"../packem_chunks/config.js";import{F as h}from"./lockfile-C5DYMHVq.js";import{r as w,t as D}from"../packem_chunks/bin.js";var b=Object.defineProperty,f=m((s,o)=>b(s,"name",{value:o,configurable:!0}),"l");const j={bun:{file:"bun.lock",type:"bun"},npm:{aliases:["npm-shrinkwrap.json"],file:"package-lock.json",type:"npm"},pnpm:{file:"pnpm-lock.yaml",type:"pnpm"},yarn:{file:"yarn.lock",type:"yarn"}},S=f(s=>{const o=j[s];return o?[...o.aliases??[],o.file].map(e=>({file:e,type:o.type})):[]},"lockfileCandidates"),y=f((s,o)=>{const e=S(o);if(e.length!==0)return e.find(r=>v(u(s,r.file)))??e[e.length-1]},"resolveLockfile"),k=f(s=>{try{return JSON.parse(d(s))}catch{return}},"readPackageJsonShape"),L=f(s=>{const o=[],e=k(u(s,"package.json"));e&&o.push(e);const r=w(s);let a;if(r?a=r:e?.workspaces&&(Array.isArray(e.workspaces)?a=e.workspaces:e.workspaces.packages&&(a=e.workspaces.packages)),!a)return o;const c=D(s,a);for(const t of c){const n=k(u(s,t,"package.json"));n&&o.push(n)}return o},"collectWorkspacePackageJsons"),P=f((s,o)=>{const e=new Set,r=[],a=new Map;for(const t of o){const n=a.get(t.name);n?n.push(t):a.set(t.name,[t])}const c=f(t=>{if(t)for(const n of Object.keys(t))e.has(n)||(e.add(n),r.push(n))},"enqueueRoots");for(const t of L(s))c(t.dependencies),c(t.peerDependencies),c(t.optionalDependencies);for(;r.length>0;){const t=r.shift(),n=a.get(t);if(n){for(const p of n)for(const i of[p.dependencies,p.peerDependencies,p.optionalDependencies])if(i)for(const l of Object.keys(i))e.has(l)||(e.add(l),r.push(l))}}return e},"computeProdReachable"),E=f((s,o,e={})=>{const r=y(s,o);if(!r)return[];let a;try{a=d(u(s,r.file))}catch{return[]}const c=h(a,r.type);if(c.length===0)return[];const t=e.includeDev??!0?void 0:P(s,c),n=new Set,p=[];for(const i of c){if(t&&!t.has(i.name))continue;const l=`${i.name}@${i.version}`;n.has(l)||(n.add(l),p.push({isDev:!1,name:i.name,version:i.version}))}return p},"lockedPackages"),J=f((s,o)=>{const e=y(s,o);if(!e)return[];let r;try{r=d(u(s,e.file))}catch{return[]}const a=h(r,e.type);if(a.length===0)return[];const c=new Map;for(const n of a)c.has(n.name)||c.set(n.name,new Set),c.get(n.name).add(n.version);const t=[];for(const[n,p]of c)p.size<=1||t.push({name:n,versions:[...p]});return t.sort((n,p)=>n.name.localeCompare(p.name))},"findDuplicateDependencies");export{j as L,J as f,E as l,y as r};