@webflow/webflow-cli 2.3.0-next.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,66 +1,66 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var Ty=Object.create;var ha=Object.defineProperty;var Iy=Object.getOwnPropertyDescriptor;var Oy=Object.getOwnPropertyNames;var Ry=Object.getPrototypeOf,$y=Object.prototype.hasOwnProperty;var k=(e,t)=>()=>(e&&(t=e(e=0)),t);var wa=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),pd=(e,t)=>{for(var r in t)ha(e,r,{get:t[r],enumerable:!0})},Py=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Oy(t))!$y.call(e,o)&&o!==r&&ha(e,o,{get:()=>t[o],enumerable:!(n=Iy(t,o))||n.enumerable});return e};var h=(e,t,r)=>(r=e!=null?Ty(Ry(e)):{},Py(t||!e||!e.__esModule?ha(r,"default",{value:e,enumerable:!0}):r,e));var md,fe,ya,Pt,ne,Ze,P,Q,T,ie=k(()=>{"use strict";md=e=>`\x1B[1;48;2;20;110;245;97m ${e} \x1B[0m`,fe=e=>`\x1B[38;2;167;209;255m${e}\x1B[0m`,ya=e=>`\x1B[38;2;196;175;255m${e}\x1B[0m`,Pt=e=>`\x1B[38;2;255;156;156m${e}\x1B[0m`,ne=e=>`\x1B[38;2;255;209;102m${e}\x1B[0m`,Ze=e=>`\x1B[97m${e}\x1B[0m`,P=e=>`\x1B[38;2;121;224;156m${e}\x1B[0m`,Q=e=>`\x1B[1m${e}\x1B[0m`,T=e=>`\x1B[38;2;185;185;185m${e}\x1B[0m`});function My(){let e=new Map;for(let[t,r]of Object.entries(ue)){for(let[n,o]of Object.entries(r))ue[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=ue[n],e.set(o[0],o[1]);Object.defineProperty(ue,t,{value:r,enumerable:!1})}return Object.defineProperty(ue,"codes",{value:e,enumerable:!1}),ue.color.close="\x1B[39m",ue.bgColor.close="\x1B[49m",ue.color.ansi=gd(),ue.color.ansi256=hd(),ue.color.ansi16m=wd(),ue.bgColor.ansi=gd(10),ue.bgColor.ansi256=hd(10),ue.bgColor.ansi16m=wd(10),Object.defineProperties(ue,{rgbToAnsi256:{value(t,r,n){return t===r&&r===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:t=>ue.rgbToAnsi256(...ue.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,n,o;if(t>=232)r=((t-232)*10+8)/255,n=r,o=r;else{t-=16;let a=t%36;r=Math.floor(t/36)/5,n=Math.floor(a/6)/5,o=a%6/5}let i=Math.max(r,n,o)*2;if(i===0)return 30;let s=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(t,r,n)=>ue.ansi256ToAnsi(ue.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>ue.ansi256ToAnsi(ue.hexToAnsi256(t)),enumerable:!1}}),ue}var gd,hd,wd,ue,cx,Ly,By,ux,Wy,gt,yd=k(()=>{"use strict";gd=(e=0)=>t=>`\x1B[${t+e}m`,hd=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,wd=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,ue={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},cx=Object.keys(ue.modifier),Ly=Object.keys(ue.color),By=Object.keys(ue.bgColor),ux=[...Ly,...By];Wy=My(),gt=Wy});function rt(e,t=globalThis.Deno?globalThis.Deno.args:fi.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",n=t.indexOf(r+e),o=t.indexOf("--");return n!==-1&&(o===-1||n<o)}function Uy(){if("FORCE_COLOR"in me)return me.FORCE_COLOR==="true"?1:me.FORCE_COLOR==="false"?0:me.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(me.FORCE_COLOR,10),3)}function Vy(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Hy(e,{streamIsTTY:t,sniffFlags:r=!0}={}){let n=Uy();n!==void 0&&(pi=n);let o=r?pi:n;if(o===0)return 0;if(r){if(rt("color=16m")||rt("color=full")||rt("color=truecolor"))return 3;if(rt("color=256"))return 2}if("TF_BUILD"in me&&"AGENT_NAME"in me)return 1;if(e&&!t&&o===void 0)return 0;let i=o||0;if(me.TERM==="dumb")return i;if(fi.default.platform==="win32"){let s=bd.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in me)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in me)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in me)||me.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in me)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(me.TEAMCITY_VERSION)?1:0;if(me.COLORTERM==="truecolor"||me.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in me){let s=Number.parseInt((me.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(me.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(me.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(me.TERM)||"COLORTERM"in me?1:i}function Dd(e,t={}){let r=Hy(e,{streamIsTTY:e&&e.isTTY,...t});return Vy(r)}var fi,bd,Da,me,pi,Jy,vd,Ed=k(()=>{"use strict";fi=h(require("process"),1),bd=h(require("os"),1),Da=h(require("tty"),1);({env:me}=fi.default);rt("no-color")||rt("no-colors")||rt("color=false")||rt("color=never")?pi=0:(rt("color")||rt("colors")||rt("color=true")||rt("color=always"))&&(pi=1);Jy={stdout:Dd({isTTY:Da.default.isatty(1)}),stderr:Dd({isTTY:Da.default.isatty(2)})},vd=Jy});function Fd(e,t,r){let n=e.indexOf(t);if(n===-1)return e;let o=t.length,i=0,s="";do s+=e.slice(i,n)+t+r,i=n+o,n=e.indexOf(t,i);while(n!==-1);return s+=e.slice(i),s}function xd(e,t,r,n){let o=0,i="";do{let s=e[n-1]==="\r";i+=e.slice(o,s?n-1:n)+t+(s?`\r
2
+ "use strict";var _C=Object.create;var zu=Object.defineProperty;var FC=Object.getOwnPropertyDescriptor;var AC=Object.getOwnPropertyNames;var TC=Object.getPrototypeOf,RC=Object.prototype.hasOwnProperty;var O=(e,t)=>()=>(e&&(t=e(e=0)),t);var Ju=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),uh=(e,t)=>{for(var r in t)zu(e,r,{get:t[r],enumerable:!0})},IC=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of AC(t))!RC.call(e,o)&&o!==r&&zu(e,o,{get:()=>t[o],enumerable:!(n=FC(t,o))||n.enumerable});return e};var D=(e,t,r)=>(r=e!=null?_C(TC(e)):{},IC(t||!e||!e.__esModule?zu(r,"default",{value:e,enumerable:!0}):r,e));var ph,_e,qu,Lt,ne,vt,V,te,R,de=O(()=>{"use strict";ph=e=>`\x1B[1;48;2;20;110;245;97m ${e} \x1B[0m`,_e=e=>`\x1B[38;2;167;209;255m${e}\x1B[0m`,qu=e=>`\x1B[38;2;196;175;255m${e}\x1B[0m`,Lt=e=>`\x1B[38;2;255;156;156m${e}\x1B[0m`,ne=e=>`\x1B[38;2;255;209;102m${e}\x1B[0m`,vt=e=>`\x1B[97m${e}\x1B[0m`,V=e=>`\x1B[38;2;121;224;156m${e}\x1B[0m`,te=e=>`\x1B[1m${e}\x1B[0m`,R=e=>`\x1B[38;2;185;185;185m${e}\x1B[0m`});function NC(){let e=new Map;for(let[t,r]of Object.entries(ve)){for(let[n,o]of Object.entries(r))ve[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=ve[n],e.set(o[0],o[1]);Object.defineProperty(ve,t,{value:r,enumerable:!1})}return Object.defineProperty(ve,"codes",{value:e,enumerable:!1}),ve.color.close="\x1B[39m",ve.bgColor.close="\x1B[49m",ve.color.ansi=fh(),ve.color.ansi256=mh(),ve.color.ansi16m=gh(),ve.bgColor.ansi=fh(10),ve.bgColor.ansi256=mh(10),ve.bgColor.ansi16m=gh(10),Object.defineProperties(ve,{rgbToAnsi256:{value(t,r,n){return t===r&&r===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:t=>ve.rgbToAnsi256(...ve.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,n,o;if(t>=232)r=((t-232)*10+8)/255,n=r,o=r;else{t-=16;let a=t%36;r=Math.floor(t/36)/5,n=Math.floor(a/6)/5,o=a%6/5}let i=Math.max(r,n,o)*2;if(i===0)return 30;let s=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(t,r,n)=>ve.ansi256ToAnsi(ve.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>ve.ansi256ToAnsi(ve.hexToAnsi256(t)),enumerable:!1}}),ve}var fh,mh,gh,ve,WP,$C,LC,HP,jC,Xt,hh=O(()=>{"use strict";fh=(e=0)=>t=>`\x1B[${t+e}m`,mh=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,gh=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,ve={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},WP=Object.keys(ve.modifier),$C=Object.keys(ve.color),LC=Object.keys(ve.bgColor),HP=[...$C,...LC];jC=NC(),Xt=jC});function Nt(e,t=globalThis.Deno?globalThis.Deno.args:Ka.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",n=t.indexOf(r+e),o=t.indexOf("--");return n!==-1&&(o===-1||n<o)}function MC(){if("FORCE_COLOR"in Oe)return Oe.FORCE_COLOR==="true"?1:Oe.FORCE_COLOR==="false"?0:Oe.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(Oe.FORCE_COLOR,10),3)}function BC(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function UC(e,{streamIsTTY:t,sniffFlags:r=!0}={}){let n=MC();n!==void 0&&(Ga=n);let o=r?Ga:n;if(o===0)return 0;if(r){if(Nt("color=16m")||Nt("color=full")||Nt("color=truecolor"))return 3;if(Nt("color=256"))return 2}if("TF_BUILD"in Oe&&"AGENT_NAME"in Oe)return 1;if(e&&!t&&o===void 0)return 0;let i=o||0;if(Oe.TERM==="dumb")return i;if(Ka.default.platform==="win32"){let s=wh.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in Oe)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in Oe)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in Oe)||Oe.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in Oe)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Oe.TEAMCITY_VERSION)?1:0;if(Oe.COLORTERM==="truecolor"||Oe.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in Oe){let s=Number.parseInt((Oe.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Oe.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Oe.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Oe.TERM)||"COLORTERM"in Oe?1:i}function yh(e,t={}){let r=UC(e,{streamIsTTY:e&&e.isTTY,...t});return BC(r)}var Ka,wh,Yu,Oe,Ga,WC,Dh,kh=O(()=>{"use strict";Ka=D(require("process"),1),wh=D(require("os"),1),Yu=D(require("tty"),1);({env:Oe}=Ka.default);Nt("no-color")||Nt("no-colors")||Nt("color=false")||Nt("color=never")?Ga=0:(Nt("color")||Nt("colors")||Nt("color=true")||Nt("color=always"))&&(Ga=1);WC={stdout:yh({isTTY:Yu.default.isatty(1)}),stderr:yh({isTTY:Yu.default.isatty(2)})},Dh=WC});function bh(e,t,r){let n=e.indexOf(t);if(n===-1)return e;let o=t.length,i=0,s="";do s+=e.slice(i,n)+t+r,i=n+o,n=e.indexOf(t,i);while(n!==-1);return s+=e.slice(i),s}function Eh(e,t,r,n){let o=0,i="";do{let s=e[n-1]==="\r";i+=e.slice(o,s?n-1:n)+t+(s?`\r
3
3
  `:`
4
4
  `)+r,o=n+1,n=e.indexOf(`
5
- `,o)}while(n!==-1);return i+=e.slice(o),i}var _d=k(()=>{"use strict"});function eo(e){return zy(e)}var Cd,kd,ba,ln,Qn,Sd,cn,Gy,zy,va,Ky,qy,Ea,mi,Zy,Yy,wx,ht,Fa=k(()=>{"use strict";yd();Ed();_d();({stdout:Cd,stderr:kd}=vd),ba=Symbol("GENERATOR"),ln=Symbol("STYLER"),Qn=Symbol("IS_EMPTY"),Sd=["ansi","ansi","ansi256","ansi16m"],cn=Object.create(null),Gy=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Cd?Cd.level:0;e.level=t.level===void 0?r:t.level},zy=e=>{let t=(...r)=>r.join(" ");return Gy(t,e),Object.setPrototypeOf(t,eo.prototype),t};Object.setPrototypeOf(eo.prototype,Function.prototype);for(let[e,t]of Object.entries(gt))cn[e]={get(){let r=mi(this,Ea(t.open,t.close,this[ln]),this[Qn]);return Object.defineProperty(this,e,{value:r}),r}};cn.visible={get(){let e=mi(this,this[ln],!0);return Object.defineProperty(this,"visible",{value:e}),e}};va=(e,t,r,...n)=>e==="rgb"?t==="ansi16m"?gt[r].ansi16m(...n):t==="ansi256"?gt[r].ansi256(gt.rgbToAnsi256(...n)):gt[r].ansi(gt.rgbToAnsi(...n)):e==="hex"?va("rgb",t,r,...gt.hexToRgb(...n)):gt[r][e](...n),Ky=["rgb","hex","ansi256"];for(let e of Ky){cn[e]={get(){let{level:r}=this;return function(...n){let o=Ea(va(e,Sd[r],"color",...n),gt.color.close,this[ln]);return mi(this,o,this[Qn])}}};let t="bg"+e[0].toUpperCase()+e.slice(1);cn[t]={get(){let{level:r}=this;return function(...n){let o=Ea(va(e,Sd[r],"bgColor",...n),gt.bgColor.close,this[ln]);return mi(this,o,this[Qn])}}}}qy=Object.defineProperties(()=>{},{...cn,level:{enumerable:!0,get(){return this[ba].level},set(e){this[ba].level=e}}}),Ea=(e,t,r)=>{let n,o;return r===void 0?(n=e,o=t):(n=r.openAll+e,o=t+r.closeAll),{open:e,close:t,openAll:n,closeAll:o,parent:r}},mi=(e,t,r)=>{let n=(...o)=>Zy(n,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(n,qy),n[ba]=e,n[ln]=t,n[Qn]=r,n},Zy=(e,t)=>{if(e.level<=0||!t)return e[Qn]?"":t;let r=e[ln];if(r===void 0)return t;let{openAll:n,closeAll:o}=r;if(t.includes("\x1B"))for(;r!==void 0;)t=Fd(t,r.close,r.open),r=r.parent;let i=t.indexOf(`
6
- `);return i!==-1&&(t=xd(t,o,n,i)),n+t+o};Object.defineProperties(eo.prototype,cn);Yy=eo(),wx=eo({level:kd?kd.level:0}),ht=Yy});function xa(e,t,{ignoreNonConfigurable:r=!1}={}){let{name:n}=e;for(let o of Reflect.ownKeys(t))Xy(e,t,o,r);return eD(e,t),oD(e,t,n),e}var Xy,Qy,eD,tD,rD,nD,oD,Ad=k(()=>{"use strict";Xy=(e,t,r,n)=>{if(r==="length"||r==="prototype"||r==="arguments"||r==="caller")return;let o=Object.getOwnPropertyDescriptor(e,r),i=Object.getOwnPropertyDescriptor(t,r);!Qy(o,i)&&n||Object.defineProperty(e,r,i)},Qy=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},eD=(e,t)=>{let r=Object.getPrototypeOf(t);r!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,r)},tD=(e,t)=>`/* Wrapped ${e}*/
7
- ${t}`,rD=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),nD=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),oD=(e,t,r)=>{let n=r===""?"":`with ${r.trim()}() `,o=tD.bind(null,n,t.toString());Object.defineProperty(o,"name",nD);let{writable:i,enumerable:s,configurable:a}=rD;Object.defineProperty(e,"toString",{value:o,writable:i,enumerable:s,configurable:a})}});var gi,Td,Id,Od=k(()=>{"use strict";Ad();gi=new WeakMap,Td=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let r,n=0,o=e.displayName||e.name||"<anonymous>",i=function(...s){if(gi.set(i,++n),n===1)r=e.apply(this,s),e=void 0;else if(t.throw===!0)throw new Error(`Function \`${o}\` can only be called once`);return r};return xa(i,e),gi.set(i,n),i};Td.callCount=e=>{if(!gi.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return gi.get(e)};Id=Td});var Er,Rd=k(()=>{"use strict";Er=[];Er.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&Er.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Er.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT")});var hi,_a,Ca,iD,ka,wi,sD,Sa,Aa,Ta,$d,xx,_x,Pd=k(()=>{"use strict";Rd();hi=e=>!!e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function",_a=Symbol.for("signal-exit emitter"),Ca=globalThis,iD=Object.defineProperty.bind(Object),ka=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(Ca[_a])return Ca[_a];iD(Ca,_a,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(t,r){this.listeners[t].push(r)}removeListener(t,r){let n=this.listeners[t],o=n.indexOf(r);o!==-1&&(o===0&&n.length===1?n.length=0:n.splice(o,1))}emit(t,r,n){if(this.emitted[t])return!1;this.emitted[t]=!0;let o=!1;for(let i of this.listeners[t])o=i(r,n)===!0||o;return t==="exit"&&(o=this.emit("afterExit",r,n)||o),o}},wi=class{},sD=e=>({onExit(t,r){return e.onExit(t,r)},load(){return e.load()},unload(){return e.unload()}}),Sa=class extends wi{onExit(){return()=>{}}load(){}unload(){}},Aa=class extends wi{#s=Ta.platform==="win32"?"SIGINT":"SIGHUP";#r=new ka;#e;#o;#p;#t={};#i=!1;constructor(t){super(),this.#e=t,this.#t={};for(let r of Er)this.#t[r]=()=>{let n=this.#e.listeners(r),{count:o}=this.#r,i=t;if(typeof i.__signal_exit_emitter__=="object"&&typeof i.__signal_exit_emitter__.count=="number"&&(o+=i.__signal_exit_emitter__.count),n.length===o){this.unload();let s=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#s:r;s||t.kill(t.pid,a)}};this.#p=t.reallyExit,this.#o=t.emit}onExit(t,r){if(!hi(this.#e))return()=>{};this.#i===!1&&this.load();let n=r?.alwaysLast?"afterExit":"exit";return this.#r.on(n,t),()=>{this.#r.removeListener(n,t),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#i){this.#i=!0,this.#r.count+=1;for(let t of Er)try{let r=this.#t[t];r&&this.#e.on(t,r)}catch{}this.#e.emit=(t,...r)=>this.#f(t,...r),this.#e.reallyExit=t=>this.#n(t)}}unload(){this.#i&&(this.#i=!1,Er.forEach(t=>{let r=this.#t[t];if(!r)throw new Error("Listener not defined for signal: "+t);try{this.#e.removeListener(t,r)}catch{}}),this.#e.emit=this.#o,this.#e.reallyExit=this.#p,this.#r.count-=1)}#n(t){return hi(this.#e)?(this.#e.exitCode=t||0,this.#r.emit("exit",this.#e.exitCode,null),this.#p.call(this.#e,this.#e.exitCode)):0}#f(t,...r){let n=this.#o;if(t==="exit"&&hi(this.#e)){typeof r[0]=="number"&&(this.#e.exitCode=r[0]);let o=n.call(this.#e,t,...r);return this.#r.emit("exit",this.#e.exitCode,null),o}else return n.call(this.#e,t,...r)}},Ta=globalThis.process,{onExit:$d,load:xx,unload:_x}=sD(hi(Ta)?new Aa(Ta):new Sa)});var to,jd,aD,Nd,Ld=k(()=>{"use strict";to=h(require("process"),1);Od();Pd();jd=to.default.stderr.isTTY?to.default.stderr:to.default.stdout.isTTY?to.default.stdout:void 0,aD=jd?Id(()=>{$d(()=>{jd.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},Nd=aD});var Ia,yi,un,Oa,Bd=k(()=>{"use strict";Ia=h(require("process"),1);Ld();yi=!1,un={};un.show=(e=Ia.default.stderr)=>{e.isTTY&&(yi=!1,e.write("\x1B[?25h"))};un.hide=(e=Ia.default.stderr)=>{e.isTTY&&(Nd(),yi=!0,e.write("\x1B[?25l"))};un.toggle=(e,t)=>{e!==void 0&&(yi=e),yi?un.show(t):un.hide(t)};Oa=un});var Md=wa((Ox,lD)=>{lD.exports={dots:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]},dots2:{interval:80,frames:["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"]},dots3:{interval:80,frames:["\u280B","\u2819","\u281A","\u281E","\u2816","\u2826","\u2834","\u2832","\u2833","\u2813"]},dots4:{interval:80,frames:["\u2804","\u2806","\u2807","\u280B","\u2819","\u2838","\u2830","\u2820","\u2830","\u2838","\u2819","\u280B","\u2807","\u2806"]},dots5:{interval:80,frames:["\u280B","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B"]},dots6:{interval:80,frames:["\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2834","\u2832","\u2812","\u2802","\u2802","\u2812","\u281A","\u2819","\u2809","\u2801"]},dots7:{interval:80,frames:["\u2808","\u2809","\u280B","\u2813","\u2812","\u2810","\u2810","\u2812","\u2816","\u2826","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808"]},dots8:{interval:80,frames:["\u2801","\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808","\u2808"]},dots9:{interval:80,frames:["\u28B9","\u28BA","\u28BC","\u28F8","\u28C7","\u2867","\u2857","\u284F"]},dots10:{interval:80,frames:["\u2884","\u2882","\u2881","\u2841","\u2848","\u2850","\u2860"]},dots11:{interval:100,frames:["\u2801","\u2802","\u2804","\u2840","\u2880","\u2820","\u2810","\u2808"]},dots12:{interval:80,frames:["\u2880\u2800","\u2840\u2800","\u2804\u2800","\u2882\u2800","\u2842\u2800","\u2805\u2800","\u2883\u2800","\u2843\u2800","\u280D\u2800","\u288B\u2800","\u284B\u2800","\u280D\u2801","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2888\u2829","\u2840\u2899","\u2804\u2859","\u2882\u2829","\u2842\u2898","\u2805\u2858","\u2883\u2828","\u2843\u2890","\u280D\u2850","\u288B\u2820","\u284B\u2880","\u280D\u2841","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2808\u2829","\u2800\u2899","\u2800\u2859","\u2800\u2829","\u2800\u2898","\u2800\u2858","\u2800\u2828","\u2800\u2890","\u2800\u2850","\u2800\u2820","\u2800\u2880","\u2800\u2840"]},dots13:{interval:80,frames:["\u28FC","\u28F9","\u28BB","\u283F","\u285F","\u28CF","\u28E7","\u28F6"]},dots8Bit:{interval:80,frames:["\u2800","\u2801","\u2802","\u2803","\u2804","\u2805","\u2806","\u2807","\u2840","\u2841","\u2842","\u2843","\u2844","\u2845","\u2846","\u2847","\u2808","\u2809","\u280A","\u280B","\u280C","\u280D","\u280E","\u280F","\u2848","\u2849","\u284A","\u284B","\u284C","\u284D","\u284E","\u284F","\u2810","\u2811","\u2812","\u2813","\u2814","\u2815","\u2816","\u2817","\u2850","\u2851","\u2852","\u2853","\u2854","\u2855","\u2856","\u2857","\u2818","\u2819","\u281A","\u281B","\u281C","\u281D","\u281E","\u281F","\u2858","\u2859","\u285A","\u285B","\u285C","\u285D","\u285E","\u285F","\u2820","\u2821","\u2822","\u2823","\u2824","\u2825","\u2826","\u2827","\u2860","\u2861","\u2862","\u2863","\u2864","\u2865","\u2866","\u2867","\u2828","\u2829","\u282A","\u282B","\u282C","\u282D","\u282E","\u282F","\u2868","\u2869","\u286A","\u286B","\u286C","\u286D","\u286E","\u286F","\u2830","\u2831","\u2832","\u2833","\u2834","\u2835","\u2836","\u2837","\u2870","\u2871","\u2872","\u2873","\u2874","\u2875","\u2876","\u2877","\u2838","\u2839","\u283A","\u283B","\u283C","\u283D","\u283E","\u283F","\u2878","\u2879","\u287A","\u287B","\u287C","\u287D","\u287E","\u287F","\u2880","\u2881","\u2882","\u2883","\u2884","\u2885","\u2886","\u2887","\u28C0","\u28C1","\u28C2","\u28C3","\u28C4","\u28C5","\u28C6","\u28C7","\u2888","\u2889","\u288A","\u288B","\u288C","\u288D","\u288E","\u288F","\u28C8","\u28C9","\u28CA","\u28CB","\u28CC","\u28CD","\u28CE","\u28CF","\u2890","\u2891","\u2892","\u2893","\u2894","\u2895","\u2896","\u2897","\u28D0","\u28D1","\u28D2","\u28D3","\u28D4","\u28D5","\u28D6","\u28D7","\u2898","\u2899","\u289A","\u289B","\u289C","\u289D","\u289E","\u289F","\u28D8","\u28D9","\u28DA","\u28DB","\u28DC","\u28DD","\u28DE","\u28DF","\u28A0","\u28A1","\u28A2","\u28A3","\u28A4","\u28A5","\u28A6","\u28A7","\u28E0","\u28E1","\u28E2","\u28E3","\u28E4","\u28E5","\u28E6","\u28E7","\u28A8","\u28A9","\u28AA","\u28AB","\u28AC","\u28AD","\u28AE","\u28AF","\u28E8","\u28E9","\u28EA","\u28EB","\u28EC","\u28ED","\u28EE","\u28EF","\u28B0","\u28B1","\u28B2","\u28B3","\u28B4","\u28B5","\u28B6","\u28B7","\u28F0","\u28F1","\u28F2","\u28F3","\u28F4","\u28F5","\u28F6","\u28F7","\u28B8","\u28B9","\u28BA","\u28BB","\u28BC","\u28BD","\u28BE","\u28BF","\u28F8","\u28F9","\u28FA","\u28FB","\u28FC","\u28FD","\u28FE","\u28FF"]},sand:{interval:80,frames:["\u2801","\u2802","\u2804","\u2840","\u2848","\u2850","\u2860","\u28C0","\u28C1","\u28C2","\u28C4","\u28CC","\u28D4","\u28E4","\u28E5","\u28E6","\u28EE","\u28F6","\u28F7","\u28FF","\u287F","\u283F","\u289F","\u281F","\u285B","\u281B","\u282B","\u288B","\u280B","\u280D","\u2849","\u2809","\u2811","\u2821","\u2881"]},line:{interval:130,frames:["-","\\","|","/"]},line2:{interval:100,frames:["\u2802","-","\u2013","\u2014","\u2013","-"]},pipe:{interval:100,frames:["\u2524","\u2518","\u2534","\u2514","\u251C","\u250C","\u252C","\u2510"]},simpleDots:{interval:400,frames:[". ",".. ","..."," "]},simpleDotsScrolling:{interval:200,frames:[". ",".. ","..."," .."," ."," "]},star:{interval:70,frames:["\u2736","\u2738","\u2739","\u273A","\u2739","\u2737"]},star2:{interval:80,frames:["+","x","*"]},flip:{interval:70,frames:["_","_","_","-","`","`","'","\xB4","-","_","_","_"]},hamburger:{interval:100,frames:["\u2631","\u2632","\u2634"]},growVertical:{interval:120,frames:["\u2581","\u2583","\u2584","\u2585","\u2586","\u2587","\u2586","\u2585","\u2584","\u2583"]},growHorizontal:{interval:120,frames:["\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589","\u258A","\u258B","\u258C","\u258D","\u258E"]},balloon:{interval:140,frames:[" ",".","o","O","@","*"," "]},balloon2:{interval:120,frames:[".","o","O","\xB0","O","o","."]},noise:{interval:100,frames:["\u2593","\u2592","\u2591"]},bounce:{interval:120,frames:["\u2801","\u2802","\u2804","\u2802"]},boxBounce:{interval:120,frames:["\u2596","\u2598","\u259D","\u2597"]},boxBounce2:{interval:100,frames:["\u258C","\u2580","\u2590","\u2584"]},triangle:{interval:50,frames:["\u25E2","\u25E3","\u25E4","\u25E5"]},binary:{interval:80,frames:["010010","001100","100101","111010","111101","010111","101011","111000","110011","110101"]},arc:{interval:100,frames:["\u25DC","\u25E0","\u25DD","\u25DE","\u25E1","\u25DF"]},circle:{interval:120,frames:["\u25E1","\u2299","\u25E0"]},squareCorners:{interval:180,frames:["\u25F0","\u25F3","\u25F2","\u25F1"]},circleQuarters:{interval:120,frames:["\u25F4","\u25F7","\u25F6","\u25F5"]},circleHalves:{interval:50,frames:["\u25D0","\u25D3","\u25D1","\u25D2"]},squish:{interval:100,frames:["\u256B","\u256A"]},toggle:{interval:250,frames:["\u22B6","\u22B7"]},toggle2:{interval:80,frames:["\u25AB","\u25AA"]},toggle3:{interval:120,frames:["\u25A1","\u25A0"]},toggle4:{interval:100,frames:["\u25A0","\u25A1","\u25AA","\u25AB"]},toggle5:{interval:100,frames:["\u25AE","\u25AF"]},toggle6:{interval:300,frames:["\u101D","\u1040"]},toggle7:{interval:80,frames:["\u29BE","\u29BF"]},toggle8:{interval:100,frames:["\u25CD","\u25CC"]},toggle9:{interval:100,frames:["\u25C9","\u25CE"]},toggle10:{interval:100,frames:["\u3282","\u3280","\u3281"]},toggle11:{interval:50,frames:["\u29C7","\u29C6"]},toggle12:{interval:120,frames:["\u2617","\u2616"]},toggle13:{interval:80,frames:["=","*","-"]},arrow:{interval:100,frames:["\u2190","\u2196","\u2191","\u2197","\u2192","\u2198","\u2193","\u2199"]},arrow2:{interval:80,frames:["\u2B06\uFE0F ","\u2197\uFE0F ","\u27A1\uFE0F ","\u2198\uFE0F ","\u2B07\uFE0F ","\u2199\uFE0F ","\u2B05\uFE0F ","\u2196\uFE0F "]},arrow3:{interval:120,frames:["\u25B9\u25B9\u25B9\u25B9\u25B9","\u25B8\u25B9\u25B9\u25B9\u25B9","\u25B9\u25B8\u25B9\u25B9\u25B9","\u25B9\u25B9\u25B8\u25B9\u25B9","\u25B9\u25B9\u25B9\u25B8\u25B9","\u25B9\u25B9\u25B9\u25B9\u25B8"]},bouncingBar:{interval:80,frames:["[ ]","[= ]","[== ]","[=== ]","[====]","[ ===]","[ ==]","[ =]","[ ]","[ =]","[ ==]","[ ===]","[====]","[=== ]","[== ]","[= ]"]},bouncingBall:{interval:80,frames:["( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF)","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","(\u25CF )"]},smiley:{interval:200,frames:["\u{1F604} ","\u{1F61D} "]},monkey:{interval:300,frames:["\u{1F648} ","\u{1F648} ","\u{1F649} ","\u{1F64A} "]},hearts:{interval:100,frames:["\u{1F49B} ","\u{1F499} ","\u{1F49C} ","\u{1F49A} ","\u2764\uFE0F "]},clock:{interval:100,frames:["\u{1F55B} ","\u{1F550} ","\u{1F551} ","\u{1F552} ","\u{1F553} ","\u{1F554} ","\u{1F555} ","\u{1F556} ","\u{1F557} ","\u{1F558} ","\u{1F559} ","\u{1F55A} "]},earth:{interval:180,frames:["\u{1F30D} ","\u{1F30E} ","\u{1F30F} "]},material:{interval:17,frames:["\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"]},moon:{interval:80,frames:["\u{1F311} ","\u{1F312} ","\u{1F313} ","\u{1F314} ","\u{1F315} ","\u{1F316} ","\u{1F317} ","\u{1F318} "]},runner:{interval:140,frames:["\u{1F6B6} ","\u{1F3C3} "]},pong:{interval:80,frames:["\u2590\u2802 \u258C","\u2590\u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802\u258C","\u2590 \u2820\u258C","\u2590 \u2840\u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590\u2820 \u258C"]},shark:{interval:120,frames:["\u2590|\\____________\u258C","\u2590_|\\___________\u258C","\u2590__|\\__________\u258C","\u2590___|\\_________\u258C","\u2590____|\\________\u258C","\u2590_____|\\_______\u258C","\u2590______|\\______\u258C","\u2590_______|\\_____\u258C","\u2590________|\\____\u258C","\u2590_________|\\___\u258C","\u2590__________|\\__\u258C","\u2590___________|\\_\u258C","\u2590____________|\\\u258C","\u2590____________/|\u258C","\u2590___________/|_\u258C","\u2590__________/|__\u258C","\u2590_________/|___\u258C","\u2590________/|____\u258C","\u2590_______/|_____\u258C","\u2590______/|______\u258C","\u2590_____/|_______\u258C","\u2590____/|________\u258C","\u2590___/|_________\u258C","\u2590__/|__________\u258C","\u2590_/|___________\u258C","\u2590/|____________\u258C"]},dqpb:{interval:100,frames:["d","q","p","b"]},weather:{interval:100,frames:["\u2600\uFE0F ","\u2600\uFE0F ","\u2600\uFE0F ","\u{1F324} ","\u26C5\uFE0F ","\u{1F325} ","\u2601\uFE0F ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u26C8 ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u2601\uFE0F ","\u{1F325} ","\u26C5\uFE0F ","\u{1F324} ","\u2600\uFE0F ","\u2600\uFE0F "]},christmas:{interval:400,frames:["\u{1F332}","\u{1F384}"]},grenade:{interval:80,frames:["\u060C ","\u2032 "," \xB4 "," \u203E "," \u2E0C"," \u2E0A"," |"," \u204E"," \u2055"," \u0DF4 "," \u2053"," "," "," "]},point:{interval:125,frames:["\u2219\u2219\u2219","\u25CF\u2219\u2219","\u2219\u25CF\u2219","\u2219\u2219\u25CF","\u2219\u2219\u2219"]},layer:{interval:150,frames:["-","=","\u2261"]},betaWave:{interval:80,frames:["\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"]},fingerDance:{interval:160,frames:["\u{1F918} ","\u{1F91F} ","\u{1F596} ","\u270B ","\u{1F91A} ","\u{1F446} "]},fistBump:{interval:80,frames:["\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ","\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ","\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ","\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "]},soccerHeader:{interval:80,frames:[" \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "]},mindblown:{interval:160,frames:["\u{1F610} ","\u{1F610} ","\u{1F62E} ","\u{1F62E} ","\u{1F626} ","\u{1F626} ","\u{1F627} ","\u{1F627} ","\u{1F92F} ","\u{1F4A5} ","\u2728 ","\u3000 ","\u3000 ","\u3000 "]},speaker:{interval:160,frames:["\u{1F508} ","\u{1F509} ","\u{1F50A} ","\u{1F509} "]},orangePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} "]},bluePulse:{interval:100,frames:["\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},orangeBluePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} ","\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},timeTravel:{interval:100,frames:["\u{1F55B} ","\u{1F55A} ","\u{1F559} ","\u{1F558} ","\u{1F557} ","\u{1F556} ","\u{1F555} ","\u{1F554} ","\u{1F553} ","\u{1F552} ","\u{1F551} ","\u{1F550} "]},aesthetic:{interval:80,frames:["\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0","\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"]},dwarfFortress:{interval:80,frames:[" \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A \u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A \xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A \xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\u2593\xA3 "," \u263A\u2593\xA3 "," \u263A\u2592\xA3 "," \u263A\u2592\xA3 "," \u263A\u2591\xA3 "," \u263A\u2591\xA3 "," \u263A \xA3 "," \u263A\xA3 "," \u263A\xA3 "," \u263A\u2593 "," \u263A\u2593 "," \u263A\u2592 "," \u263A\u2592 "," \u263A\u2591 "," \u263A\u2591 "," \u263A "," \u263A &"," \u263A \u263C&"," \u263A \u263C &"," \u263A\u263C &"," \u263A\u263C & "," \u203C & "," \u263A & "," \u203C & "," \u263A & "," \u203C & "," \u263A & ","\u203C & "," & "," & "," & \u2591 "," & \u2592 "," & \u2593 "," & \xA3 "," & \u2591\xA3 "," & \u2592\xA3 "," & \u2593\xA3 "," & \xA3\xA3 "," & \u2591\xA3\xA3 "," & \u2592\xA3\xA3 ","& \u2593\xA3\xA3 ","& \xA3\xA3\xA3 "," \u2591\xA3\xA3\xA3 "," \u2592\xA3\xA3\xA3 "," \u2593\xA3\xA3\xA3 "," \u2588\xA3\xA3\xA3 "," \u2591\u2588\xA3\xA3\xA3 "," \u2592\u2588\xA3\xA3\xA3 "," \u2593\u2588\xA3\xA3\xA3 "," \u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "]}}});var Ra=wa((Rx,Ud)=>{"use strict";var Di=Object.assign({},Md()),Wd=Object.keys(Di);Object.defineProperty(Di,"random",{get(){let e=Math.floor(Math.random()*Wd.length),t=Wd[e];return Di[t]}});Ud.exports=Di});function $a(){return nt.default.platform!=="win32"?nt.default.env.TERM!=="linux":!!nt.default.env.CI||!!nt.default.env.WT_SESSION||!!nt.default.env.TERMINUS_SUBLIME||nt.default.env.ConEmuTask==="{cmd::Cmder}"||nt.default.env.TERM_PROGRAM==="Terminus-Sublime"||nt.default.env.TERM_PROGRAM==="vscode"||nt.default.env.TERM==="xterm-256color"||nt.default.env.TERM==="alacritty"||nt.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var nt,Vd=k(()=>{"use strict";nt=h(require("process"),1)});var cD,uD,dD,ro,Hd=k(()=>{"use strict";Fa();Vd();cD={info:ht.blue("\u2139"),success:ht.green("\u2714"),warning:ht.yellow("\u26A0"),error:ht.red("\u2716")},uD={info:ht.blue("i"),success:ht.green("\u221A"),warning:ht.yellow("\u203C"),error:ht.red("\xD7")},dD=$a()?cD:uD,ro=dD});function Pa({onlyFirst:e=!1}={}){let o="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(o,e?void 0:"g")}var Jd=k(()=>{"use strict"});function ja(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return!e.includes("\x1B")&&!e.includes("\x9B")?e:e.replace(pD,"")}var pD,Gd=k(()=>{"use strict";Jd();pD=Pa()});function Na({onlyFirst:e=!1}={}){let o="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(o,e?void 0:"g")}var zd=k(()=>{"use strict"});function La(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return!e.includes("\x1B")&&!e.includes("\x9B")?e:e.replace(fD,"")}var fD,Kd=k(()=>{"use strict";zd();fD=Na()});var bi,vi,Ba,Ma,no,qd=k(()=>{"use strict";bi=[161,161,164,164,167,168,170,170,173,174,176,180,182,186,188,191,198,198,208,208,215,216,222,225,230,230,232,234,236,237,240,240,242,243,247,250,252,252,254,254,257,257,273,273,275,275,283,283,294,295,299,299,305,307,312,312,319,322,324,324,328,331,333,333,338,339,358,359,363,363,462,462,464,464,466,466,468,468,470,470,472,472,474,474,476,476,593,593,609,609,708,708,711,711,713,715,717,717,720,720,728,731,733,733,735,735,768,879,913,929,931,937,945,961,963,969,1025,1025,1040,1103,1105,1105,8208,8208,8211,8214,8216,8217,8220,8221,8224,8226,8228,8231,8240,8240,8242,8243,8245,8245,8251,8251,8254,8254,8308,8308,8319,8319,8321,8324,8364,8364,8451,8451,8453,8453,8457,8457,8467,8467,8470,8470,8481,8482,8486,8486,8491,8491,8531,8532,8539,8542,8544,8555,8560,8569,8585,8585,8592,8601,8632,8633,8658,8658,8660,8660,8679,8679,8704,8704,8706,8707,8711,8712,8715,8715,8719,8719,8721,8721,8725,8725,8730,8730,8733,8736,8739,8739,8741,8741,8743,8748,8750,8750,8756,8759,8764,8765,8776,8776,8780,8780,8786,8786,8800,8801,8804,8807,8810,8811,8814,8815,8834,8835,8838,8839,8853,8853,8857,8857,8869,8869,8895,8895,8978,8978,9312,9449,9451,9547,9552,9587,9600,9615,9618,9621,9632,9633,9635,9641,9650,9651,9654,9655,9660,9661,9664,9665,9670,9672,9675,9675,9678,9681,9698,9701,9711,9711,9733,9734,9737,9737,9742,9743,9756,9756,9758,9758,9792,9792,9794,9794,9824,9825,9827,9829,9831,9834,9836,9837,9839,9839,9886,9887,9919,9919,9926,9933,9935,9939,9941,9953,9955,9955,9960,9961,9963,9969,9972,9972,9974,9977,9979,9980,9982,9983,10045,10045,10102,10111,11094,11097,12872,12879,57344,63743,65024,65039,65533,65533,127232,127242,127248,127277,127280,127337,127344,127373,127375,127376,127387,127404,917760,917999,983040,1048573,1048576,1114109],vi=[12288,12288,65281,65376,65504,65510],Ba=[8361,8361,65377,65470,65474,65479,65482,65487,65490,65495,65498,65500,65512,65518],Ma=[32,126,162,163,165,166,172,172,175,175,10214,10221,10629,10630],no=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141]});var Ei,Zd=k(()=>{"use strict";Ei=(e,t)=>{let r=0,n=Math.floor(e.length/2)-1;for(;r<=n;){let o=Math.floor((r+n)/2),i=o*2;if(t<e[i])n=o-1;else if(t>e[i+1])r=o+1;else return!0}return!1}});function ED(e){let t=e[0],r=e[1];for(let n=0;n<e.length;n+=2){let o=e[n],i=e[n+1];if(Yd>=o&&Yd<=i)return[o,i];i-o>r-t&&(t=o,r=i)}return[t,r]}var mD,gD,hD,wD,Kx,qx,Zx,Yx,yD,DD,Yd,bD,vD,Xd,Qd,ep,tp=k(()=>{"use strict";qd();Zd();mD=bi[0],gD=bi.at(-1),hD=vi[0],wD=vi.at(-1),Kx=Ba[0],qx=Ba.at(-1),Zx=Ma[0],Yx=Ma.at(-1),yD=no[0],DD=no.at(-1),Yd=19968,[bD,vD]=ED(no);Xd=e=>e<mD||e>gD?!1:Ei(bi,e),Qd=e=>e<hD||e>wD?!1:Ei(vi,e),ep=e=>e>=bD&&e<=vD?!0:e<yD||e>DD?!1:Ei(no,e)});function FD(e){if(!Number.isSafeInteger(e))throw new TypeError(`Expected a code point, got \`${typeof e}\`.`)}function rp(e,{ambiguousAsWide:t=!1}={}){return FD(e),Qd(e)||ep(e)||t&&Xd(e)?2:1}var np=k(()=>{"use strict";tp()});var op,ip=k(()=>{"use strict";op=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g});function Wa(e,t={}){if(typeof e!="string"||e.length===0)return 0;let{ambiguousIsNarrow:r=!0,countAnsiEscapeCodes:n=!1}=t;if(n||(e=La(e)),e.length===0)return 0;let o=0,i={ambiguousAsWide:!r};for(let{segment:s}of xD.segment(e)){let a=s.codePointAt(0);if(!(a<=31||a>=127&&a<=159)&&!(a>=8203&&a<=8207||a===65279)&&!(a>=768&&a<=879||a>=6832&&a<=6911||a>=7616&&a<=7679||a>=8400&&a<=8447||a>=65056&&a<=65071)&&!(a>=55296&&a<=57343)&&!(a>=65024&&a<=65039)&&!_D.test(s)){if(op().test(s)){o+=2;continue}o+=rp(a,i)}}return o}var xD,_D,sp=k(()=>{"use strict";Kd();np();ip();xD=new Intl.Segmenter,_D=new RegExp("^\\p{Default_Ignorable_Code_Point}$","u")});function Ua({stream:e=process.stdout}={}){return!!(e&&e.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}var ap=k(()=>{"use strict"});function Ha(){let{env:e}=Va.default,{TERM:t,TERM_PROGRAM:r}=e;return Va.default.platform!=="win32"?t!=="linux":!!e.WT_SESSION||!!e.TERMINUS_SUBLIME||e.ConEmuTask==="{cmd::Cmder}"||r==="Terminus-Sublime"||r==="vscode"||t==="xterm-256color"||t==="alacritty"||t==="rxvt-unicode"||t==="rxvt-unicode-256color"||e.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Va,lp=k(()=>{"use strict";Va=h(require("process"),1)});var wt,CD,Ja,kD,Ga,cp=k(()=>{"use strict";wt=h(require("process"),1),CD=3,Ja=class{#s=0;start(){this.#s++,this.#s===1&&this.#r()}stop(){if(this.#s<=0)throw new Error("`stop` called more times than `start`");this.#s--,this.#s===0&&this.#e()}#r(){wt.default.platform==="win32"||!wt.default.stdin.isTTY||(wt.default.stdin.setRawMode(!0),wt.default.stdin.on("data",this.#o),wt.default.stdin.resume())}#e(){wt.default.stdin.isTTY&&(wt.default.stdin.off("data",this.#o),wt.default.stdin.pause(),wt.default.stdin.setRawMode(!1))}#o(t){t[0]===CD&&wt.default.emit("SIGINT")}},kD=new Ja,Ga=kD});function Ka(e){return new za(e)}var oo,io,SD,za,up=k(()=>{"use strict";oo=h(require("process"),1);Fa();Bd();io=h(Ra(),1);Hd();Gd();sp();ap();lp();cp();SD=h(Ra(),1),za=class{#s=0;#r=!1;#e=0;#o=-1;#p=0;#t;#i;#n;#f;#g;#c;#u;#d;#h;#a;#l;color;constructor(t){typeof t=="string"&&(t={text:t}),this.#t={color:"cyan",stream:oo.default.stderr,discardStdin:!0,hideCursor:!0,...t},this.color=this.#t.color,this.spinner=this.#t.spinner,this.#g=this.#t.interval,this.#n=this.#t.stream,this.#c=typeof this.#t.isEnabled=="boolean"?this.#t.isEnabled:Ua({stream:this.#n}),this.#u=typeof this.#t.isSilent=="boolean"?this.#t.isSilent:!1,this.text=this.#t.text,this.prefixText=this.#t.prefixText,this.suffixText=this.#t.suffixText,this.indent=this.#t.indent,oo.default.env.NODE_ENV==="test"&&(this._stream=this.#n,this._isEnabled=this.#c,Object.defineProperty(this,"_linesToClear",{get(){return this.#s},set(r){this.#s=r}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#o}}),Object.defineProperty(this,"_lineCount",{get(){return this.#e}}))}get indent(){return this.#d}set indent(t=0){if(!(t>=0&&Number.isInteger(t)))throw new Error("The `indent` option must be an integer from 0 and up");this.#d=t,this.#m()}get interval(){return this.#g??this.#i.interval??100}get spinner(){return this.#i}set spinner(t){if(this.#o=-1,this.#g=void 0,typeof t=="object"){if(t.frames===void 0)throw new Error("The given spinner must have a `frames` property");this.#i=t}else if(!Ha())this.#i=io.default.line;else if(t===void 0)this.#i=io.default.dots;else if(t!=="default"&&io.default[t])this.#i=io.default[t];else throw new Error(`There is no built-in spinner named '${t}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#h}set text(t=""){this.#h=t,this.#m()}get prefixText(){return this.#a}set prefixText(t=""){this.#a=t,this.#m()}get suffixText(){return this.#l}set suffixText(t=""){this.#l=t,this.#m()}get isSpinning(){return this.#f!==void 0}#w(t=this.#a,r=" "){return typeof t=="string"&&t!==""?t+r:typeof t=="function"?t()+r:""}#y(t=this.#l,r=" "){return typeof t=="string"&&t!==""?r+t:typeof t=="function"?r+t():""}#m(){let t=this.#n.columns??80,r=this.#w(this.#a,"-"),n=this.#y(this.#l,"-"),o=" ".repeat(this.#d)+r+"--"+this.#h+"--"+n;this.#e=0;for(let i of ja(o).split(`
8
- `))this.#e+=Math.max(1,Math.ceil(Wa(i,{countAnsiEscapeCodes:!0})/t))}get isEnabled(){return this.#c&&!this.#u}set isEnabled(t){if(typeof t!="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#c=t}get isSilent(){return this.#u}set isSilent(t){if(typeof t!="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#u=t}frame(){let t=Date.now();(this.#o===-1||t-this.#p>=this.interval)&&(this.#o=++this.#o%this.#i.frames.length,this.#p=t);let{frames:r}=this.#i,n=r[this.#o];this.color&&(n=ht[this.color](n));let o=typeof this.#a=="string"&&this.#a!==""?this.#a+" ":"",i=typeof this.text=="string"?" "+this.text:"",s=typeof this.#l=="string"&&this.#l!==""?" "+this.#l:"";return o+n+i+s}clear(){if(!this.#c||!this.#n.isTTY)return this;this.#n.cursorTo(0);for(let t=0;t<this.#s;t++)t>0&&this.#n.moveCursor(0,-1),this.#n.clearLine(1);return(this.#d||this.lastIndent!==this.#d)&&this.#n.cursorTo(this.#d),this.lastIndent=this.#d,this.#s=0,this}render(){return this.#u?this:(this.clear(),this.#n.write(this.frame()),this.#s=this.#e,this)}start(t){return t&&(this.text=t),this.#u?this:this.#c?this.isSpinning?this:(this.#t.hideCursor&&Oa.hide(this.#n),this.#t.discardStdin&&oo.default.stdin.isTTY&&(this.#r=!0,Ga.start()),this.render(),this.#f=setInterval(this.render.bind(this),this.interval),this):(this.text&&this.#n.write(`- ${this.text}
9
- `),this)}stop(){return this.#c?(clearInterval(this.#f),this.#f=void 0,this.#o=0,this.clear(),this.#t.hideCursor&&Oa.show(this.#n),this.#t.discardStdin&&oo.default.stdin.isTTY&&this.#r&&(Ga.stop(),this.#r=!1),this):this}succeed(t){return this.stopAndPersist({symbol:ro.success,text:t})}fail(t){return this.stopAndPersist({symbol:ro.error,text:t})}warn(t){return this.stopAndPersist({symbol:ro.warning,text:t})}info(t){return this.stopAndPersist({symbol:ro.info,text:t})}stopAndPersist(t={}){if(this.#u)return this;let r=t.prefixText??this.#a,n=this.#w(r," "),o=t.symbol??" ",i=t.text??this.text,a=typeof i=="string"?(o?" ":"")+i:"",c=t.suffixText??this.#l,u=this.#y(c," "),p=n+o+a+u+`
10
- `;return this.stop(),this.#n.write(p),this}}});function Ya(e,{suffix:t="nodejs"}={}){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return t&&(e+=`-${t}`),Fi.default.platform==="darwin"?AD(e):Fi.default.platform==="win32"?TD(e):ID(e)}var de,qa,Fi,Zt,Za,dn,AD,TD,ID,dp=k(()=>{"use strict";de=h(require("path"),1),qa=h(require("os"),1),Fi=h(require("process"),1),Zt=qa.default.homedir(),Za=qa.default.tmpdir(),{env:dn}=Fi.default,AD=e=>{let t=de.default.join(Zt,"Library");return{data:de.default.join(t,"Application Support",e),config:de.default.join(t,"Preferences",e),cache:de.default.join(t,"Caches",e),log:de.default.join(t,"Logs",e),temp:de.default.join(Za,e)}},TD=e=>{let t=dn.APPDATA||de.default.join(Zt,"AppData","Roaming"),r=dn.LOCALAPPDATA||de.default.join(Zt,"AppData","Local");return{data:de.default.join(r,e,"Data"),config:de.default.join(t,e,"Config"),cache:de.default.join(r,e,"Cache"),log:de.default.join(r,e,"Log"),temp:de.default.join(Za,e)}},ID=e=>{let t=de.default.basename(Zt);return{data:de.default.join(dn.XDG_DATA_HOME||de.default.join(Zt,".local","share"),e),config:de.default.join(dn.XDG_CONFIG_HOME||de.default.join(Zt,".config"),e),cache:de.default.join(dn.XDG_CACHE_HOME||de.default.join(Zt,".cache"),e),log:de.default.join(dn.XDG_STATE_HOME||de.default.join(Zt,".local","state"),e),temp:de.default.join(Za,t,e)}}});function xi(){return/[<>:"/\\|?*\u0000-\u001F]/g}function pp(){return/^(con|prn|aux|nul|com\d|lpt\d)$/i}var fp=k(()=>{"use strict"});function so(e,t={}){let r=/[\u0000-\u001F\u0080-\u009F]/g,n=/([<>:"/\\|?*\u0000-\u001F]){2,}/g;if(typeof e!="string")throw new TypeError("Expected a string");let o=t.replacement===void 0?"!":t.replacement;if(xi().test(o)&&r.test(o))throw new Error("Replacement string cannot contain reserved filename characters");o.length>0&&(e=e.replace(n,"$1")),e=e.normalize("NFD"),e=e.replace(RD,o),e=e.replace(xi(),o),e=e.replace(r,o),e=e.replace($D,""),o.length>0&&(!(e[0]===".")&&e[0]==="."&&(e=o+e),e[e.length-1]==="."&&(e+=o)),e=pp().test(e)?e+o:e;let i=typeof t.maxLength=="number"?t.maxLength:OD;if(e.length>i){let s=e.lastIndexOf(".");if(s===-1)e=e.slice(0,i);else{let a=e.slice(0,s),c=e.slice(s);e=a.slice(0,Math.max(1,i-c.length))+c}}return e}var OD,RD,$D,Xa=k(()=>{"use strict";fp();OD=100,RD=/^\.+(\\|\/)|^\.+$/,$D=/\.+$/});var PD,mp=k(()=>{"use strict";PD=h(require("path"),1);Xa()});var gp=k(()=>{"use strict";Xa();mp()});var _i,Qa=k(()=>{"use strict";_i="webflow.json"});var Fr,el=k(()=>{"use strict";Fr=class extends Error{constructor(t){super(`Manifest config for key "${t}" not found`),this.name="ManifestConfigKeyNotFoundError"}}});function Dp(e){hp=e}function jD(){return process.env.CI==="true"||!process.stdout.isTTY}function H(){return hp||jD()}function yt(){return!H()}function bp(e){wp=e}function vp(){return wp}function Ep(e){yp=e}function Fp(){return yp}var hp,wp,yp,be=k(()=>{"use strict";hp=!1,wp=!1});function xr(){let e=Fp();if(e){if(e.endsWith(".json"))return{path:e,isUserDefined:!0};try{if((0,xp.statSync)(e)?.isDirectory())return{path:(0,_p.join)(e,_i),isUserDefined:!0}}catch{if(e.endsWith(".json"))return{path:e,isUserDefined:!0}}throw new Error(`Manifest path must be either a directory or a .json file. Got: ${e}`)}return{path:`./${_i}`,isUserDefined:!1}}var xp,_p,tl=k(()=>{"use strict";xp=require("fs"),_p=require("path");Qa();be()});var Cp,ND,LD,rl,kp=k(()=>{"use strict";Cp=h(require("ajv")),ND=new Cp.default,LD={type:"object",properties:{library:{type:"object",properties:{name:{type:"string",minLength:1},id:{type:"string",minLength:1},components:{type:"array",items:{type:"string"},minItems:1},renderer:{anyOf:[{type:"object",properties:{client:{type:"string",minLength:1},server:{type:"string",minLength:1}}},{type:"string",minLength:1}]},globals:{type:"string",minLength:1}},required:[]},devlink:{type:"object",properties:{rootDir:{type:"string",minLength:1},cssModules:{type:"boolean"},allowTelemetry:{type:"boolean"},overwriteModule:{type:"boolean"},skipTagSelectors:{type:"boolean"},envVariables:{type:"object",additionalProperties:{type:"string"}},components:{oneOf:[{type:"string"},{type:"array",items:{type:"string"}}]},fileExtensions:{type:"object",properties:{js:{type:"string"},css:{type:"string"}}},relativeHrefRoot:{oneOf:[{type:"boolean"},{type:"string"}]}},required:["rootDir"]},"devlink-export":{type:"object",properties:{rootDir:{type:"string",minLength:1},components:{type:"string"},componentGroups:{type:"string"},ts:{type:"boolean"},cssScopes:{type:"boolean"},relativeHrefRoot:{oneOf:[{type:"boolean",const:!1},{type:"string"}]},treeShake:{type:"boolean"},camelCaseVariantNames:{type:"boolean"}},required:[]}}},rl=ND.compile(LD)});function Sp(e){return e instanceof Error?e:new Error("Unknown error")}function J(){let{path:e}=xr();if(!(0,Ci.existsSync)(e))return{manifest:{},manifestPath:e};let t;try{t=(0,Ci.readFileSync)(e,"utf8")}catch(o){throw new Error(`Failed to read manifest file: ${Sp(o).message}`)}if(t.trim()==="")return{manifest:{},manifestPath:e};let n;try{n=JSON.parse(t)}catch(o){throw new Error(`Invalid JSON in manifest file: ${Sp(o).message}`)}if(!rl(n)){let o=rl.errors?.map(i=>`${i.instancePath} ${i.message}`).join(", ")||"Unknown error";throw new Error(`Invalid manifest: ${o}.`)}return{manifest:n,manifestPath:e}}var Ci,ao=k(()=>{"use strict";Ci=require("fs");tl();kp()});function lo(e,t){let r=e[t];if(!r)throw new Fr(t);return r}var Ap=k(()=>{"use strict";el()});function pe(e){let t=J(),r=t.manifest,n=t.manifestPath,o={...r};for(let i in e){let s=i,a=e[s];if(a!==void 0)if(typeof a=="string"||typeof a=="number"||typeof a=="boolean"||a===null)o[s]=a;else{let c=o[s];o[s]={...typeof c=="object"&&c!==null?c:{},...a}}}return(0,Tp.writeFileSync)(n,JSON.stringify(o,null,2),"utf-8"),o}var Tp,nl=k(()=>{"use strict";Tp=require("fs");ao()});var ve=k(()=>{"use strict";Qa();el();ao();tl();Ap();nl()});var ki=wa((Z_,BD)=>{BD.exports={name:"@webflow/webflow-cli",version:"2.3.0-next.0",license:"MIT",bin:{webflow:"./dist/index.js"},scripts:{build:"tsup",dev:"tsup",lint:"eslint .",test:"jest --ci","test:unit":"jest --ci --ignoreProjects e2e","test:local":"jest","test:e2e:deploy":"bash regression/run-local.sh","test:regression":"jest --config regression/jest.config.js --testTimeout=420000","test:e2e-cache-clear":"bash scripts/clear-e2e-cache.sh"},files:["CHANGELOG.md","dist/**/*"],publishConfig:{access:"public"},dependencies:{"@babel/preset-env":"^7.26.9","@babel/preset-react":"^7.26.3","@babel/preset-typescript":"^7.27.0","@dotenvx/dotenvx":"^1.44.1","@inquirer/prompts":"^7.9.0","@module-federation/enhanced":"2.5.1","@rspack/core":"^1.7.8","@webflow/cosmic-deploy-contract":"^1.0.2","@webflow/data-types":"*",ajv:"^8.17.1",archiver:"^5.3.1","babel-loader":"^10.0.0",commander:"^10.0.0",cosmiconfig:"^8.2.0","css-loader":"^7.1.2",dotenv:"^16.0.3","env-paths":"^3.0.0","fast-glob":"^3.3.3",filenamify:"^6.0.0","fork-ts-checker-webpack-plugin":"9.1.0","form-data":"4.0.4","fs-extra":"^11.3.0",jsdom:"^26.0.0","jsonc-parser":"^3.2.0",md5:"^2.2.1",memfs:"4.17.0","mime-types":"^2.1.35","mini-css-extract-plugin":"^2.9.2","node-fetch":"^2.6.7",open:"^8.4.2",ora:"^8.2.0",postcss:"^8.5.6","postcss-loader":"^8.1.1","postcss-selector-parser":"^7.1.0",semver:"^7.7.2","serve-handler":"^6.1.5","source-map-support":"^0.5.21",tar:"^7.5.16","ts-checker-rspack-plugin":"^1.0.0","tsconfig-paths":"^4.2.0","tsconfig-paths-webpack-plugin":"^4.2.0",unionfs:"^4.5.4","webflow-api":"3.3.4",webpack:">=5.99.7 <5.106.0","webpack-merge":"^6.0.1","webpack-node-externals":"^3.0.0",zod:"^3.22.4"},devDependencies:{"@module-federation/sdk":"2.5.1","@types/archiver":"^5.3.2","@types/express":"^4.17.13","@types/fs-extra":"^11.0.4","@types/jest":"^29.2.3","@types/md5":"^2.3.2","@types/mime-types":"^2.1.4","@types/nock":"^8.0.33","@types/node":"^22.13.0","@types/node-fetch":"2.6.13","@types/serve-handler":"^6.1.1","@types/source-map":"^0.5.2","@types/webpack-node-externals":"^3.0.4",astro:"^7.0.6","eslint-config-custom":"*",express:"^4.18.1",jest:"^29.3.1",nock:"13.3.1",tar:"^7.5.16","ts-jest":"^29.4.9","ts-node":"^10.9.1",tsconfig:"*",tsup:"^8.4.0",typescript:"^5.9.3"},engines:{node:">=22.13.0"}}});function jt(){try{return ki().version}catch{return"unknown"}}function Ft(e=""){if(!e)return"";let t=e;t=t.replace(/\/.*?\/webflow-cli/gi,"/REDACTED_PII/webflow-cli"),t=t.replace(/\/.*?\/node_modules/gi,"/REDACTED_PII/node_modules");let r=co.default.homedir();if(r){let o=new RegExp(r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gi");t=t.replace(o,"~/REDACTED_PII")}let n=co.default.userInfo().username;if(n){let o=new RegExp(`/Users/${n}`,"gi");t=t.replace(o,"/Users/REDACTED_PII")}return t=t.replace(/\/Users\/[^\/\s]+/gi,"/Users/REDACTED_PII"),t=t.replace(/C:\\Users\\[^\\]+/gi,"C:\\Users\\REDACTED_PII"),t=t.replace(/[a-zA-Z0-9]{32,}/g,"[REDACTED_TOKEN]"),t=t.replace(/Bearer\s+[^\s]+/gi,"Bearer [REDACTED_TOKEN]"),t=t.replace(/token[=:]\s*[^\s]+/gi,"token=[REDACTED_TOKEN]"),t=t.replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,"[REDACTED_EMAIL]"),t=t.replace(/\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b/g,"[REDACTED_IP]"),t}function ol(e){if(e.stack)return Ft(e.stack)}function Yt(e){let t=["password","token","secret","key","auth","bearer","authorization","apikey","api_key","access_token","refresh_token","client_secret","private_key"],r={};for(let[n,o]of Object.entries(e)){let i=n.toLowerCase();t.some(s=>i.includes(s))?r[n]="[REDACTED]":typeof o=="string"?r[n]=Ft(o):typeof o=="object"&&o!==null&&!Array.isArray(o)?r[n]=Yt(o):Array.isArray(o)?r[n]=o.map(s=>typeof s=="object"&&s!==null?Yt(s):typeof s=="string"?Ft(s):s):r[n]=o}return r}function Ip(){return{platform:process.platform,nodeVersion:process.version,arch:process.arch,os:`${co.default.type()} ${co.default.release()}`}}function il(){let e=Date.now().toString(36),t=Math.random().toString(36).substring(2,8);return`${e}-${t}`}var co,uo=k(()=>{"use strict";co=h(require("os"))});var O,D,Oe,pn,sl,Pe,ge,Si,al,_r,$=k(()=>{"use strict";ie();O=P("\u2713"),D=Pt("\u2716"),Oe=fe("\u2139"),pn=P("\u279C"),sl=Pt("\u279C"),Pe="\u279C",ge=ne("\u26A0"),Si=T("\u2732"),al=P("\u2732"),_r=ne("[Deprecated]")});var Xt,ll=k(()=>{"use strict";ve();uo();v();ie();$();Xt=class e{static instance;cache=void 0;static isDoNotTrackEnabled(){let t=process.env.DO_NOT_TRACK;return t==="1"||t?.toLowerCase()==="true"}static getInstance(){return e.instance||(e.instance=new e),e.instance}async getPreference(){if(e.isDoNotTrackEnabled())return!1;if(this.cache!==void 0)return this.cache;try{let{manifest:t}=await J(),r=t?.telemetry?.global?.allowTelemetry;return this.cache=r,r}catch{return}}async setPreference(t){this.cache=t,await this.setGlobalPreference(t)}async promptForConsent(t){return e.isDoNotTrackEnabled()?(l.info(`${Oe} Telemetry is disabled because the DO_NOT_TRACK environment variable is set.`),!1):(l.info(`${al} ${T("Telemetry is enabled. We collect usage data and error reports to improve the Webflow CLI.")}`),l.info(`${al} ${T("To opt out, run")} ${P("webflow auth telemetry --disable")}`),await this.setPreference(!0),!0)}clearCache(){this.cache=void 0}async getGlobalPreference(){return this.getPreference()}async setGlobalPreference(t){let r={telemetry:{global:{allowTelemetry:t,lastPrompted:Date.now(),version:jt()}}};await pe(r),l.info(`${O} Telemetry configuration updated in webflow.json`),this.cache=t}async hasGlobalPreference(){return await this.getPreference()!==void 0}async getTelemetryStatus(){let t=await this.getPreference();return t!==void 0?{enabled:t,source:"global",hasPreference:!0}:{enabled:!1,source:"none",hasPreference:!1}}setCacheValue(t,r){this.cache=r}}});async function j(e,t){let n={"User-Agent":`webflow-cli@${jt()}`};return(0,Op.default)(e,{...t,headers:{...t?.headers,...n}})}var Op,ot=k(()=>{"use strict";Op=h(require("node-fetch"));W()});var Rp,$p=k(()=>{"use strict";Rp=e=>{try{let t=new URL(e);return!(!["http:","https:"].includes(t.protocol)||e.includes("?")||e.includes("#")||t.search||t.hash)}catch{return!1}}});var cl,F,Ai,fn,po,ul,fo,mo,mn,se=k(()=>{"use strict";$p();cl=(e,t)=>(Rp(t)||(console.error(`Error: Invalid ${e} environment variable. Only valid plain HTTP/HTTPS URLs without query parameters and anchors is allowed.`),process.exit(1)),t),F=process.env.WEBFLOW_API_HOST?cl("WEBFLOW_API_HOST",process.env.WEBFLOW_API_HOST):"https://api.webflow.com",Ai=process.env.WEBFLOW_CDN_API_HOST?cl("WEBFLOW_CDN_API_HOST",process.env.WEBFLOW_CDN_API_HOST):"https://api-cdn.webflow.com",fn=process.env.WEBFLOW_HOST?cl("WEBFLOW_HOST",process.env.WEBFLOW_HOST):"https://webflow.com",po="wf-manifest.json",ul="mf-manifest.json",fo="@webflow_renderer",mo="ssr-bundle.tar",mn="index.js"});var b,dl=k(()=>{"use strict";ll();uo();v();ot();se();b=class e{config;consentManager;sessionId;platformInfo;constructor(t){this.config=t,this.consentManager=Xt.getInstance(),this.sessionId=il(),this.platformInfo=Ip()}async sendEvent(t){try{if(!await this.isEnabled())return;let r=this.enrichEvent(t),n=this.sanitizeEvent(r);await this.transmitEvent(n)}catch(r){l.debug(`Failed to send telemetry event: ${r}`)}}async sendError(t,r,n){await this.sendEvent({eventType:"error",success:!1,name:t.name,message:t.message,cause:t.cause,stack:ol(t),context:r,metadata:n?Yt(n):void 0})}async sendUsage(t,r){let{duration:n,...o}=r??{};await this.sendEvent({eventType:"usage",success:!0,feature:t,duration:typeof n=="number"?n:void 0,data:Object.keys(o).length>0?Yt(o):void 0})}async sendPerformance(t,r,n){await this.sendEvent({eventType:"performance",operation:t,duration:r,metrics:n})}async isEnabled(){return await this.consentManager.getPreference()!==!1}async isGloballyEnabled(){return await this.consentManager.getGlobalPreference()!==!1}async updatePreferences(t){await this.consentManager.setPreference(t)}static async promptForConsentIfNeeded(t){let r=Xt.getInstance(),n=await r.getPreference();return n!==void 0?n:await r.promptForConsent(t)}enrichEvent(t){return{...{eventType:t.eventType||"usage",timestamp:Date.now(),sessionId:this.sessionId,platform:this.platformInfo.platform,nodeVersion:this.platformInfo.nodeVersion,cliVersion:jt(),command:this.config.suppressCommand?void 0:process.argv.slice(2).join(" ")||void 0,metadata:{...t.metadata,commandType:this.config.commandType,siteId:this.config.siteId,projectId:this.config.projectId,os:this.platformInfo.os,arch:this.platformInfo.arch}},...t}}sanitizeEvent(t){let r=JSON.parse(JSON.stringify(t));return r.message&&(r.message=Ft(r.message)),r.stack&&(r.stack=Ft(r.stack)),r.context&&(r.context=Ft(r.context)),r.metadata&&(r.metadata=Yt(r.metadata)),r.data&&(r.data=Yt(r.data)),r}async transmitEvent(t){let r=this.getEndpoint(),n=process.env.WEBFLOW_TELEMETRY_DEBUG==="true";if(n){console.log(`\u{1F4CA} [Telemetry] Sending to: ${r}`);let i={...t};i.metadata&&(delete i.metadata.authToken,delete i.metadata.apiToken),console.log("\u{1F4CA} [Telemetry] Payload:",JSON.stringify(i,null,2))}let o=await j(r,{method:"POST",headers:{Authorization:`Bearer ${this.config.authToken}`,"Content-Type":"application/json"},body:JSON.stringify(t),timeout:5e3});if(o.ok)n&&console.log(`\u{1F4CA} [Telemetry] Request successful: ${o.status}`);else throw n&&console.error(`\u{1F4CA} [Telemetry] Request failed: ${o.status} ${o.statusText}`),new Error(`Telemetry request failed: ${o.status} ${o.statusText}`)}getEndpoint(){let{host:t,commandType:r}=this.config;return`${t}/webflow-cli/${r}/telemetry`}static forDevlinkSync(t){return new e({host:t.host||F,authToken:t.authToken,siteId:t.siteId,commandType:"devlink"})}static forExport(t){return new e({host:t.host||F,authToken:t.authToken,siteId:t.siteId,commandType:"export"})}static forCloud(t){return new e({host:t.host||F,authToken:t.authToken,siteId:t.siteId,projectId:t.projectId,commandType:"cloud"})}static forExtension(t){return new e({host:t.host||F,authToken:t.authToken,siteId:t.siteId,commandType:"extension"})}static forCodeLibraries(t){return new e({host:t.host||F,authToken:t.authToken,commandType:"library"})}static forCms(t){return new e({host:t.host||F,authToken:t.authToken,siteId:t.siteId,commandType:"cms"})}static forAssets(t){return new e({host:t.host||F,authToken:t.authToken,siteId:t.siteId,commandType:"assets"})}static forSites(t){return new e({host:t.host||F,authToken:t.authToken,commandType:"sites"})}static forApps(t){return new e({host:t.host||F,authToken:t.authToken,commandType:"apps"})}static forForms(t){return new e({host:t.host||F,authToken:t.authToken,commandType:"forms"})}static forAppsEnvVars(t){return new e({host:t.host||F,authToken:t.authToken,commandType:"apps_env_vars",suppressCommand:!0})}}});var Pp=k(()=>{"use strict"});function jp(e){return async(t,r,n)=>{let o=Date.now(),i=process.memoryUsage().heapUsed;try{let s=await r(),a=Date.now()-o,c=process.memoryUsage().heapUsed;return await e.sendPerformance(t,a,{memoryDelta:c-i,...n}),s}catch(s){let a=Date.now()-o;throw await e.sendPerformance(t,a,{failed:1,...n}),s}}}var W=k(()=>{"use strict";dl();ll();Pp();uo();uo()});var fl,pl,MD,Nt,ml=k(()=>{"use strict";fl=Symbol("webflow-cli-warn"),pl=class{warnings=[];originalConsoleWarn=null;isActive=!1;parseSource(t){let r=t.split(`
11
- `);for(let n=2;n<r.length;n++){let o=r[n],i=o.match(/at .+? \((.+?):\d+:\d+\)/)||o.match(/at (.+?):\d+:\d+/);if(i){let s=i[1];if(s.includes("node_modules")){let a=s.match(/node_modules\/(@?[^/]+(?:\/[^/]+)?)/);return a?`External: ${a[1]}`:"External Dependencies"}else if(s.includes("webflow-cli"))return s.includes("/metadata/")?"Metadata Collection":s.includes("/bundler/")?"Bundling":s.includes("/commands/")?"CLI Commands":"Webflow CLI"}}return"General"}start(){this.isActive||(this.warnings=[],this.originalConsoleWarn=console.warn,this.isActive=!0,console.warn=(...t)=>{if(t.length>1&&t[t.length-1]===fl){let i=t.slice(0,-1);this.originalConsoleWarn&&this.originalConsoleWarn(...i);return}let r=t.map(i=>{if(typeof i=="string")return i;if(i instanceof Error)return i.message;try{return String(i)}catch{return"[Object]"}}).join(" "),n=new Error().stack||"",o=this.parseSource(n);this.warnings.push({message:r,timestamp:Date.now(),source:o,stackTrace:n})})}stop(){this.isActive&&(this.originalConsoleWarn&&(console.warn=this.originalConsoleWarn,this.originalConsoleWarn=null),this.isActive=!1)}displayGrouped(){if(this.warnings.length===0)return;console.log(`
5
+ `,o)}while(n!==-1);return i+=e.slice(o),i}var vh=O(()=>{"use strict"});function Qi(e){return VC(e)}var Sh,xh,Xu,Lo,Zi,Ch,No,HC,VC,Zu,GC,KC,Qu,za,zC,JC,YP,Zt,ed=O(()=>{"use strict";hh();kh();vh();({stdout:Sh,stderr:xh}=Dh),Xu=Symbol("GENERATOR"),Lo=Symbol("STYLER"),Zi=Symbol("IS_EMPTY"),Ch=["ansi","ansi","ansi256","ansi16m"],No=Object.create(null),HC=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Sh?Sh.level:0;e.level=t.level===void 0?r:t.level},VC=e=>{let t=(...r)=>r.join(" ");return HC(t,e),Object.setPrototypeOf(t,Qi.prototype),t};Object.setPrototypeOf(Qi.prototype,Function.prototype);for(let[e,t]of Object.entries(Xt))No[e]={get(){let r=za(this,Qu(t.open,t.close,this[Lo]),this[Zi]);return Object.defineProperty(this,e,{value:r}),r}};No.visible={get(){let e=za(this,this[Lo],!0);return Object.defineProperty(this,"visible",{value:e}),e}};Zu=(e,t,r,...n)=>e==="rgb"?t==="ansi16m"?Xt[r].ansi16m(...n):t==="ansi256"?Xt[r].ansi256(Xt.rgbToAnsi256(...n)):Xt[r].ansi(Xt.rgbToAnsi(...n)):e==="hex"?Zu("rgb",t,r,...Xt.hexToRgb(...n)):Xt[r][e](...n),GC=["rgb","hex","ansi256"];for(let e of GC){No[e]={get(){let{level:r}=this;return function(...n){let o=Qu(Zu(e,Ch[r],"color",...n),Xt.color.close,this[Lo]);return za(this,o,this[Zi])}}};let t="bg"+e[0].toUpperCase()+e.slice(1);No[t]={get(){let{level:r}=this;return function(...n){let o=Qu(Zu(e,Ch[r],"bgColor",...n),Xt.bgColor.close,this[Lo]);return za(this,o,this[Zi])}}}}KC=Object.defineProperties(()=>{},{...No,level:{enumerable:!0,get(){return this[Xu].level},set(e){this[Xu].level=e}}}),Qu=(e,t,r)=>{let n,o;return r===void 0?(n=e,o=t):(n=r.openAll+e,o=t+r.closeAll),{open:e,close:t,openAll:n,closeAll:o,parent:r}},za=(e,t,r)=>{let n=(...o)=>zC(n,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(n,KC),n[Xu]=e,n[Lo]=t,n[Zi]=r,n},zC=(e,t)=>{if(e.level<=0||!t)return e[Zi]?"":t;let r=e[Lo];if(r===void 0)return t;let{openAll:n,closeAll:o}=r;if(t.includes("\x1B"))for(;r!==void 0;)t=bh(t,r.close,r.open),r=r.parent;let i=t.indexOf(`
6
+ `);return i!==-1&&(t=Eh(t,o,n,i)),n+t+o};Object.defineProperties(Qi.prototype,No);JC=Qi(),YP=Qi({level:xh?xh.level:0}),Zt=JC});function td(e,t,{ignoreNonConfigurable:r=!1}={}){let{name:n}=e;for(let o of Reflect.ownKeys(t))qC(e,t,o,r);return XC(e,t),t_(e,t,n),e}var qC,YC,XC,ZC,QC,e_,t_,_h=O(()=>{"use strict";qC=(e,t,r,n)=>{if(r==="length"||r==="prototype"||r==="arguments"||r==="caller")return;let o=Object.getOwnPropertyDescriptor(e,r),i=Object.getOwnPropertyDescriptor(t,r);!YC(o,i)&&n||Object.defineProperty(e,r,i)},YC=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},XC=(e,t)=>{let r=Object.getPrototypeOf(t);r!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,r)},ZC=(e,t)=>`/* Wrapped ${e}*/
7
+ ${t}`,QC=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),e_=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),t_=(e,t,r)=>{let n=r===""?"":`with ${r.trim()}() `,o=ZC.bind(null,n,t.toString());Object.defineProperty(o,"name",e_);let{writable:i,enumerable:s,configurable:a}=QC;Object.defineProperty(e,"toString",{value:o,writable:i,enumerable:s,configurable:a})}});var Ja,Fh,Ah,Th=O(()=>{"use strict";_h();Ja=new WeakMap,Fh=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let r,n=0,o=e.displayName||e.name||"<anonymous>",i=function(...s){if(Ja.set(i,++n),n===1)r=e.apply(this,s),e=void 0;else if(t.throw===!0)throw new Error(`Function \`${o}\` can only be called once`);return r};return td(i,e),Ja.set(i,n),i};Fh.callCount=e=>{if(!Ja.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return Ja.get(e)};Ah=Fh});var Tn,Rh=O(()=>{"use strict";Tn=[];Tn.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&Tn.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Tn.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT")});var qa,rd,nd,r_,od,Ya,n_,id,sd,ad,Ih,n$,o$,Oh=O(()=>{"use strict";Rh();qa=e=>!!e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function",rd=Symbol.for("signal-exit emitter"),nd=globalThis,r_=Object.defineProperty.bind(Object),od=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(nd[rd])return nd[rd];r_(nd,rd,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(t,r){this.listeners[t].push(r)}removeListener(t,r){let n=this.listeners[t],o=n.indexOf(r);o!==-1&&(o===0&&n.length===1?n.length=0:n.splice(o,1))}emit(t,r,n){if(this.emitted[t])return!1;this.emitted[t]=!0;let o=!1;for(let i of this.listeners[t])o=i(r,n)===!0||o;return t==="exit"&&(o=this.emit("afterExit",r,n)||o),o}},Ya=class{},n_=e=>({onExit(t,r){return e.onExit(t,r)},load(){return e.load()},unload(){return e.unload()}}),id=class extends Ya{onExit(){return()=>{}}load(){}unload(){}},sd=class extends Ya{#s=ad.platform==="win32"?"SIGINT":"SIGHUP";#r=new od;#e;#o;#p;#t={};#i=!1;constructor(t){super(),this.#e=t,this.#t={};for(let r of Tn)this.#t[r]=()=>{let n=this.#e.listeners(r),{count:o}=this.#r,i=t;if(typeof i.__signal_exit_emitter__=="object"&&typeof i.__signal_exit_emitter__.count=="number"&&(o+=i.__signal_exit_emitter__.count),n.length===o){this.unload();let s=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#s:r;s||t.kill(t.pid,a)}};this.#p=t.reallyExit,this.#o=t.emit}onExit(t,r){if(!qa(this.#e))return()=>{};this.#i===!1&&this.load();let n=r?.alwaysLast?"afterExit":"exit";return this.#r.on(n,t),()=>{this.#r.removeListener(n,t),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#i){this.#i=!0,this.#r.count+=1;for(let t of Tn)try{let r=this.#t[t];r&&this.#e.on(t,r)}catch{}this.#e.emit=(t,...r)=>this.#f(t,...r),this.#e.reallyExit=t=>this.#n(t)}}unload(){this.#i&&(this.#i=!1,Tn.forEach(t=>{let r=this.#t[t];if(!r)throw new Error("Listener not defined for signal: "+t);try{this.#e.removeListener(t,r)}catch{}}),this.#e.emit=this.#o,this.#e.reallyExit=this.#p,this.#r.count-=1)}#n(t){return qa(this.#e)?(this.#e.exitCode=t||0,this.#r.emit("exit",this.#e.exitCode,null),this.#p.call(this.#e,this.#e.exitCode)):0}#f(t,...r){let n=this.#o;if(t==="exit"&&qa(this.#e)){typeof r[0]=="number"&&(this.#e.exitCode=r[0]);let o=n.call(this.#e,t,...r);return this.#r.emit("exit",this.#e.exitCode,null),o}else return n.call(this.#e,t,...r)}},ad=globalThis.process,{onExit:Ih,load:n$,unload:o$}=n_(qa(ad)?new sd(ad):new id)});var es,Ph,o_,$h,Lh=O(()=>{"use strict";es=D(require("process"),1);Th();Oh();Ph=es.default.stderr.isTTY?es.default.stderr:es.default.stdout.isTTY?es.default.stdout:void 0,o_=Ph?Ah(()=>{Ih(()=>{Ph.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},$h=o_});var ld,Xa,jo,cd,Nh=O(()=>{"use strict";ld=D(require("process"),1);Lh();Xa=!1,jo={};jo.show=(e=ld.default.stderr)=>{e.isTTY&&(Xa=!1,e.write("\x1B[?25h"))};jo.hide=(e=ld.default.stderr)=>{e.isTTY&&($h(),Xa=!0,e.write("\x1B[?25l"))};jo.toggle=(e,t)=>{e!==void 0&&(Xa=e),Xa?jo.show(t):jo.hide(t)};cd=jo});var jh=Ju((d$,i_)=>{i_.exports={dots:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]},dots2:{interval:80,frames:["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"]},dots3:{interval:80,frames:["\u280B","\u2819","\u281A","\u281E","\u2816","\u2826","\u2834","\u2832","\u2833","\u2813"]},dots4:{interval:80,frames:["\u2804","\u2806","\u2807","\u280B","\u2819","\u2838","\u2830","\u2820","\u2830","\u2838","\u2819","\u280B","\u2807","\u2806"]},dots5:{interval:80,frames:["\u280B","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B"]},dots6:{interval:80,frames:["\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2834","\u2832","\u2812","\u2802","\u2802","\u2812","\u281A","\u2819","\u2809","\u2801"]},dots7:{interval:80,frames:["\u2808","\u2809","\u280B","\u2813","\u2812","\u2810","\u2810","\u2812","\u2816","\u2826","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808"]},dots8:{interval:80,frames:["\u2801","\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808","\u2808"]},dots9:{interval:80,frames:["\u28B9","\u28BA","\u28BC","\u28F8","\u28C7","\u2867","\u2857","\u284F"]},dots10:{interval:80,frames:["\u2884","\u2882","\u2881","\u2841","\u2848","\u2850","\u2860"]},dots11:{interval:100,frames:["\u2801","\u2802","\u2804","\u2840","\u2880","\u2820","\u2810","\u2808"]},dots12:{interval:80,frames:["\u2880\u2800","\u2840\u2800","\u2804\u2800","\u2882\u2800","\u2842\u2800","\u2805\u2800","\u2883\u2800","\u2843\u2800","\u280D\u2800","\u288B\u2800","\u284B\u2800","\u280D\u2801","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2888\u2829","\u2840\u2899","\u2804\u2859","\u2882\u2829","\u2842\u2898","\u2805\u2858","\u2883\u2828","\u2843\u2890","\u280D\u2850","\u288B\u2820","\u284B\u2880","\u280D\u2841","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2808\u2829","\u2800\u2899","\u2800\u2859","\u2800\u2829","\u2800\u2898","\u2800\u2858","\u2800\u2828","\u2800\u2890","\u2800\u2850","\u2800\u2820","\u2800\u2880","\u2800\u2840"]},dots13:{interval:80,frames:["\u28FC","\u28F9","\u28BB","\u283F","\u285F","\u28CF","\u28E7","\u28F6"]},dots8Bit:{interval:80,frames:["\u2800","\u2801","\u2802","\u2803","\u2804","\u2805","\u2806","\u2807","\u2840","\u2841","\u2842","\u2843","\u2844","\u2845","\u2846","\u2847","\u2808","\u2809","\u280A","\u280B","\u280C","\u280D","\u280E","\u280F","\u2848","\u2849","\u284A","\u284B","\u284C","\u284D","\u284E","\u284F","\u2810","\u2811","\u2812","\u2813","\u2814","\u2815","\u2816","\u2817","\u2850","\u2851","\u2852","\u2853","\u2854","\u2855","\u2856","\u2857","\u2818","\u2819","\u281A","\u281B","\u281C","\u281D","\u281E","\u281F","\u2858","\u2859","\u285A","\u285B","\u285C","\u285D","\u285E","\u285F","\u2820","\u2821","\u2822","\u2823","\u2824","\u2825","\u2826","\u2827","\u2860","\u2861","\u2862","\u2863","\u2864","\u2865","\u2866","\u2867","\u2828","\u2829","\u282A","\u282B","\u282C","\u282D","\u282E","\u282F","\u2868","\u2869","\u286A","\u286B","\u286C","\u286D","\u286E","\u286F","\u2830","\u2831","\u2832","\u2833","\u2834","\u2835","\u2836","\u2837","\u2870","\u2871","\u2872","\u2873","\u2874","\u2875","\u2876","\u2877","\u2838","\u2839","\u283A","\u283B","\u283C","\u283D","\u283E","\u283F","\u2878","\u2879","\u287A","\u287B","\u287C","\u287D","\u287E","\u287F","\u2880","\u2881","\u2882","\u2883","\u2884","\u2885","\u2886","\u2887","\u28C0","\u28C1","\u28C2","\u28C3","\u28C4","\u28C5","\u28C6","\u28C7","\u2888","\u2889","\u288A","\u288B","\u288C","\u288D","\u288E","\u288F","\u28C8","\u28C9","\u28CA","\u28CB","\u28CC","\u28CD","\u28CE","\u28CF","\u2890","\u2891","\u2892","\u2893","\u2894","\u2895","\u2896","\u2897","\u28D0","\u28D1","\u28D2","\u28D3","\u28D4","\u28D5","\u28D6","\u28D7","\u2898","\u2899","\u289A","\u289B","\u289C","\u289D","\u289E","\u289F","\u28D8","\u28D9","\u28DA","\u28DB","\u28DC","\u28DD","\u28DE","\u28DF","\u28A0","\u28A1","\u28A2","\u28A3","\u28A4","\u28A5","\u28A6","\u28A7","\u28E0","\u28E1","\u28E2","\u28E3","\u28E4","\u28E5","\u28E6","\u28E7","\u28A8","\u28A9","\u28AA","\u28AB","\u28AC","\u28AD","\u28AE","\u28AF","\u28E8","\u28E9","\u28EA","\u28EB","\u28EC","\u28ED","\u28EE","\u28EF","\u28B0","\u28B1","\u28B2","\u28B3","\u28B4","\u28B5","\u28B6","\u28B7","\u28F0","\u28F1","\u28F2","\u28F3","\u28F4","\u28F5","\u28F6","\u28F7","\u28B8","\u28B9","\u28BA","\u28BB","\u28BC","\u28BD","\u28BE","\u28BF","\u28F8","\u28F9","\u28FA","\u28FB","\u28FC","\u28FD","\u28FE","\u28FF"]},sand:{interval:80,frames:["\u2801","\u2802","\u2804","\u2840","\u2848","\u2850","\u2860","\u28C0","\u28C1","\u28C2","\u28C4","\u28CC","\u28D4","\u28E4","\u28E5","\u28E6","\u28EE","\u28F6","\u28F7","\u28FF","\u287F","\u283F","\u289F","\u281F","\u285B","\u281B","\u282B","\u288B","\u280B","\u280D","\u2849","\u2809","\u2811","\u2821","\u2881"]},line:{interval:130,frames:["-","\\","|","/"]},line2:{interval:100,frames:["\u2802","-","\u2013","\u2014","\u2013","-"]},pipe:{interval:100,frames:["\u2524","\u2518","\u2534","\u2514","\u251C","\u250C","\u252C","\u2510"]},simpleDots:{interval:400,frames:[". ",".. ","..."," "]},simpleDotsScrolling:{interval:200,frames:[". ",".. ","..."," .."," ."," "]},star:{interval:70,frames:["\u2736","\u2738","\u2739","\u273A","\u2739","\u2737"]},star2:{interval:80,frames:["+","x","*"]},flip:{interval:70,frames:["_","_","_","-","`","`","'","\xB4","-","_","_","_"]},hamburger:{interval:100,frames:["\u2631","\u2632","\u2634"]},growVertical:{interval:120,frames:["\u2581","\u2583","\u2584","\u2585","\u2586","\u2587","\u2586","\u2585","\u2584","\u2583"]},growHorizontal:{interval:120,frames:["\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589","\u258A","\u258B","\u258C","\u258D","\u258E"]},balloon:{interval:140,frames:[" ",".","o","O","@","*"," "]},balloon2:{interval:120,frames:[".","o","O","\xB0","O","o","."]},noise:{interval:100,frames:["\u2593","\u2592","\u2591"]},bounce:{interval:120,frames:["\u2801","\u2802","\u2804","\u2802"]},boxBounce:{interval:120,frames:["\u2596","\u2598","\u259D","\u2597"]},boxBounce2:{interval:100,frames:["\u258C","\u2580","\u2590","\u2584"]},triangle:{interval:50,frames:["\u25E2","\u25E3","\u25E4","\u25E5"]},binary:{interval:80,frames:["010010","001100","100101","111010","111101","010111","101011","111000","110011","110101"]},arc:{interval:100,frames:["\u25DC","\u25E0","\u25DD","\u25DE","\u25E1","\u25DF"]},circle:{interval:120,frames:["\u25E1","\u2299","\u25E0"]},squareCorners:{interval:180,frames:["\u25F0","\u25F3","\u25F2","\u25F1"]},circleQuarters:{interval:120,frames:["\u25F4","\u25F7","\u25F6","\u25F5"]},circleHalves:{interval:50,frames:["\u25D0","\u25D3","\u25D1","\u25D2"]},squish:{interval:100,frames:["\u256B","\u256A"]},toggle:{interval:250,frames:["\u22B6","\u22B7"]},toggle2:{interval:80,frames:["\u25AB","\u25AA"]},toggle3:{interval:120,frames:["\u25A1","\u25A0"]},toggle4:{interval:100,frames:["\u25A0","\u25A1","\u25AA","\u25AB"]},toggle5:{interval:100,frames:["\u25AE","\u25AF"]},toggle6:{interval:300,frames:["\u101D","\u1040"]},toggle7:{interval:80,frames:["\u29BE","\u29BF"]},toggle8:{interval:100,frames:["\u25CD","\u25CC"]},toggle9:{interval:100,frames:["\u25C9","\u25CE"]},toggle10:{interval:100,frames:["\u3282","\u3280","\u3281"]},toggle11:{interval:50,frames:["\u29C7","\u29C6"]},toggle12:{interval:120,frames:["\u2617","\u2616"]},toggle13:{interval:80,frames:["=","*","-"]},arrow:{interval:100,frames:["\u2190","\u2196","\u2191","\u2197","\u2192","\u2198","\u2193","\u2199"]},arrow2:{interval:80,frames:["\u2B06\uFE0F ","\u2197\uFE0F ","\u27A1\uFE0F ","\u2198\uFE0F ","\u2B07\uFE0F ","\u2199\uFE0F ","\u2B05\uFE0F ","\u2196\uFE0F "]},arrow3:{interval:120,frames:["\u25B9\u25B9\u25B9\u25B9\u25B9","\u25B8\u25B9\u25B9\u25B9\u25B9","\u25B9\u25B8\u25B9\u25B9\u25B9","\u25B9\u25B9\u25B8\u25B9\u25B9","\u25B9\u25B9\u25B9\u25B8\u25B9","\u25B9\u25B9\u25B9\u25B9\u25B8"]},bouncingBar:{interval:80,frames:["[ ]","[= ]","[== ]","[=== ]","[====]","[ ===]","[ ==]","[ =]","[ ]","[ =]","[ ==]","[ ===]","[====]","[=== ]","[== ]","[= ]"]},bouncingBall:{interval:80,frames:["( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF)","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","(\u25CF )"]},smiley:{interval:200,frames:["\u{1F604} ","\u{1F61D} "]},monkey:{interval:300,frames:["\u{1F648} ","\u{1F648} ","\u{1F649} ","\u{1F64A} "]},hearts:{interval:100,frames:["\u{1F49B} ","\u{1F499} ","\u{1F49C} ","\u{1F49A} ","\u2764\uFE0F "]},clock:{interval:100,frames:["\u{1F55B} ","\u{1F550} ","\u{1F551} ","\u{1F552} ","\u{1F553} ","\u{1F554} ","\u{1F555} ","\u{1F556} ","\u{1F557} ","\u{1F558} ","\u{1F559} ","\u{1F55A} "]},earth:{interval:180,frames:["\u{1F30D} ","\u{1F30E} ","\u{1F30F} "]},material:{interval:17,frames:["\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"]},moon:{interval:80,frames:["\u{1F311} ","\u{1F312} ","\u{1F313} ","\u{1F314} ","\u{1F315} ","\u{1F316} ","\u{1F317} ","\u{1F318} "]},runner:{interval:140,frames:["\u{1F6B6} ","\u{1F3C3} "]},pong:{interval:80,frames:["\u2590\u2802 \u258C","\u2590\u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802\u258C","\u2590 \u2820\u258C","\u2590 \u2840\u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590\u2820 \u258C"]},shark:{interval:120,frames:["\u2590|\\____________\u258C","\u2590_|\\___________\u258C","\u2590__|\\__________\u258C","\u2590___|\\_________\u258C","\u2590____|\\________\u258C","\u2590_____|\\_______\u258C","\u2590______|\\______\u258C","\u2590_______|\\_____\u258C","\u2590________|\\____\u258C","\u2590_________|\\___\u258C","\u2590__________|\\__\u258C","\u2590___________|\\_\u258C","\u2590____________|\\\u258C","\u2590____________/|\u258C","\u2590___________/|_\u258C","\u2590__________/|__\u258C","\u2590_________/|___\u258C","\u2590________/|____\u258C","\u2590_______/|_____\u258C","\u2590______/|______\u258C","\u2590_____/|_______\u258C","\u2590____/|________\u258C","\u2590___/|_________\u258C","\u2590__/|__________\u258C","\u2590_/|___________\u258C","\u2590/|____________\u258C"]},dqpb:{interval:100,frames:["d","q","p","b"]},weather:{interval:100,frames:["\u2600\uFE0F ","\u2600\uFE0F ","\u2600\uFE0F ","\u{1F324} ","\u26C5\uFE0F ","\u{1F325} ","\u2601\uFE0F ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u26C8 ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u2601\uFE0F ","\u{1F325} ","\u26C5\uFE0F ","\u{1F324} ","\u2600\uFE0F ","\u2600\uFE0F "]},christmas:{interval:400,frames:["\u{1F332}","\u{1F384}"]},grenade:{interval:80,frames:["\u060C ","\u2032 "," \xB4 "," \u203E "," \u2E0C"," \u2E0A"," |"," \u204E"," \u2055"," \u0DF4 "," \u2053"," "," "," "]},point:{interval:125,frames:["\u2219\u2219\u2219","\u25CF\u2219\u2219","\u2219\u25CF\u2219","\u2219\u2219\u25CF","\u2219\u2219\u2219"]},layer:{interval:150,frames:["-","=","\u2261"]},betaWave:{interval:80,frames:["\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"]},fingerDance:{interval:160,frames:["\u{1F918} ","\u{1F91F} ","\u{1F596} ","\u270B ","\u{1F91A} ","\u{1F446} "]},fistBump:{interval:80,frames:["\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ","\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ","\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ","\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "]},soccerHeader:{interval:80,frames:[" \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "]},mindblown:{interval:160,frames:["\u{1F610} ","\u{1F610} ","\u{1F62E} ","\u{1F62E} ","\u{1F626} ","\u{1F626} ","\u{1F627} ","\u{1F627} ","\u{1F92F} ","\u{1F4A5} ","\u2728 ","\u3000 ","\u3000 ","\u3000 "]},speaker:{interval:160,frames:["\u{1F508} ","\u{1F509} ","\u{1F50A} ","\u{1F509} "]},orangePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} "]},bluePulse:{interval:100,frames:["\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},orangeBluePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} ","\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},timeTravel:{interval:100,frames:["\u{1F55B} ","\u{1F55A} ","\u{1F559} ","\u{1F558} ","\u{1F557} ","\u{1F556} ","\u{1F555} ","\u{1F554} ","\u{1F553} ","\u{1F552} ","\u{1F551} ","\u{1F550} "]},aesthetic:{interval:80,frames:["\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0","\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"]},dwarfFortress:{interval:80,frames:[" \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A \u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A \xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A \xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\u2593\xA3 "," \u263A\u2593\xA3 "," \u263A\u2592\xA3 "," \u263A\u2592\xA3 "," \u263A\u2591\xA3 "," \u263A\u2591\xA3 "," \u263A \xA3 "," \u263A\xA3 "," \u263A\xA3 "," \u263A\u2593 "," \u263A\u2593 "," \u263A\u2592 "," \u263A\u2592 "," \u263A\u2591 "," \u263A\u2591 "," \u263A "," \u263A &"," \u263A \u263C&"," \u263A \u263C &"," \u263A\u263C &"," \u263A\u263C & "," \u203C & "," \u263A & "," \u203C & "," \u263A & "," \u203C & "," \u263A & ","\u203C & "," & "," & "," & \u2591 "," & \u2592 "," & \u2593 "," & \xA3 "," & \u2591\xA3 "," & \u2592\xA3 "," & \u2593\xA3 "," & \xA3\xA3 "," & \u2591\xA3\xA3 "," & \u2592\xA3\xA3 ","& \u2593\xA3\xA3 ","& \xA3\xA3\xA3 "," \u2591\xA3\xA3\xA3 "," \u2592\xA3\xA3\xA3 "," \u2593\xA3\xA3\xA3 "," \u2588\xA3\xA3\xA3 "," \u2591\u2588\xA3\xA3\xA3 "," \u2592\u2588\xA3\xA3\xA3 "," \u2593\u2588\xA3\xA3\xA3 "," \u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "]}}});var ud=Ju((p$,Bh)=>{"use strict";var Za=Object.assign({},jh()),Mh=Object.keys(Za);Object.defineProperty(Za,"random",{get(){let e=Math.floor(Math.random()*Mh.length),t=Mh[e];return Za[t]}});Bh.exports=Za});function dd(){return jt.default.platform!=="win32"?jt.default.env.TERM!=="linux":!!jt.default.env.CI||!!jt.default.env.WT_SESSION||!!jt.default.env.TERMINUS_SUBLIME||jt.default.env.ConEmuTask==="{cmd::Cmder}"||jt.default.env.TERM_PROGRAM==="Terminus-Sublime"||jt.default.env.TERM_PROGRAM==="vscode"||jt.default.env.TERM==="xterm-256color"||jt.default.env.TERM==="alacritty"||jt.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var jt,Uh=O(()=>{"use strict";jt=D(require("process"),1)});var s_,a_,l_,ts,Wh=O(()=>{"use strict";ed();Uh();s_={info:Zt.blue("\u2139"),success:Zt.green("\u2714"),warning:Zt.yellow("\u26A0"),error:Zt.red("\u2716")},a_={info:Zt.blue("i"),success:Zt.green("\u221A"),warning:Zt.yellow("\u203C"),error:Zt.red("\xD7")},l_=dd()?s_:a_,ts=l_});function pd({onlyFirst:e=!1}={}){let o="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(o,e?void 0:"g")}var Hh=O(()=>{"use strict"});function fd(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return!e.includes("\x1B")&&!e.includes("\x9B")?e:e.replace(c_,"")}var c_,Vh=O(()=>{"use strict";Hh();c_=pd()});function md({onlyFirst:e=!1}={}){let o="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(o,e?void 0:"g")}var Gh=O(()=>{"use strict"});function gd(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return!e.includes("\x1B")&&!e.includes("\x9B")?e:e.replace(u_,"")}var u_,Kh=O(()=>{"use strict";Gh();u_=md()});var Qa,el,hd,yd,rs,zh=O(()=>{"use strict";Qa=[161,161,164,164,167,168,170,170,173,174,176,180,182,186,188,191,198,198,208,208,215,216,222,225,230,230,232,234,236,237,240,240,242,243,247,250,252,252,254,254,257,257,273,273,275,275,283,283,294,295,299,299,305,307,312,312,319,322,324,324,328,331,333,333,338,339,358,359,363,363,462,462,464,464,466,466,468,468,470,470,472,472,474,474,476,476,593,593,609,609,708,708,711,711,713,715,717,717,720,720,728,731,733,733,735,735,768,879,913,929,931,937,945,961,963,969,1025,1025,1040,1103,1105,1105,8208,8208,8211,8214,8216,8217,8220,8221,8224,8226,8228,8231,8240,8240,8242,8243,8245,8245,8251,8251,8254,8254,8308,8308,8319,8319,8321,8324,8364,8364,8451,8451,8453,8453,8457,8457,8467,8467,8470,8470,8481,8482,8486,8486,8491,8491,8531,8532,8539,8542,8544,8555,8560,8569,8585,8585,8592,8601,8632,8633,8658,8658,8660,8660,8679,8679,8704,8704,8706,8707,8711,8712,8715,8715,8719,8719,8721,8721,8725,8725,8730,8730,8733,8736,8739,8739,8741,8741,8743,8748,8750,8750,8756,8759,8764,8765,8776,8776,8780,8780,8786,8786,8800,8801,8804,8807,8810,8811,8814,8815,8834,8835,8838,8839,8853,8853,8857,8857,8869,8869,8895,8895,8978,8978,9312,9449,9451,9547,9552,9587,9600,9615,9618,9621,9632,9633,9635,9641,9650,9651,9654,9655,9660,9661,9664,9665,9670,9672,9675,9675,9678,9681,9698,9701,9711,9711,9733,9734,9737,9737,9742,9743,9756,9756,9758,9758,9792,9792,9794,9794,9824,9825,9827,9829,9831,9834,9836,9837,9839,9839,9886,9887,9919,9919,9926,9933,9935,9939,9941,9953,9955,9955,9960,9961,9963,9969,9972,9972,9974,9977,9979,9980,9982,9983,10045,10045,10102,10111,11094,11097,12872,12879,57344,63743,65024,65039,65533,65533,127232,127242,127248,127277,127280,127337,127344,127373,127375,127376,127387,127404,917760,917999,983040,1048573,1048576,1114109],el=[12288,12288,65281,65376,65504,65510],hd=[8361,8361,65377,65470,65474,65479,65482,65487,65490,65495,65498,65500,65512,65518],yd=[32,126,162,163,165,166,172,172,175,175,10214,10221,10629,10630],rs=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141]});var tl,Jh=O(()=>{"use strict";tl=(e,t)=>{let r=0,n=Math.floor(e.length/2)-1;for(;r<=n;){let o=Math.floor((r+n)/2),i=o*2;if(t<e[i])n=o-1;else if(t>e[i+1])r=o+1;else return!0}return!1}});function D_(e){let t=e[0],r=e[1];for(let n=0;n<e.length;n+=2){let o=e[n],i=e[n+1];if(qh>=o&&qh<=i)return[o,i];i-o>r-t&&(t=o,r=i)}return[t,r]}var d_,p_,f_,m_,_$,F$,A$,T$,g_,h_,qh,y_,w_,Yh,Xh,Zh,Qh=O(()=>{"use strict";zh();Jh();d_=Qa[0],p_=Qa.at(-1),f_=el[0],m_=el.at(-1),_$=hd[0],F$=hd.at(-1),A$=yd[0],T$=yd.at(-1),g_=rs[0],h_=rs.at(-1),qh=19968,[y_,w_]=D_(rs);Yh=e=>e<d_||e>p_?!1:tl(Qa,e),Xh=e=>e<f_||e>m_?!1:tl(el,e),Zh=e=>e>=y_&&e<=w_?!0:e<g_||e>h_?!1:tl(rs,e)});function k_(e){if(!Number.isSafeInteger(e))throw new TypeError(`Expected a code point, got \`${typeof e}\`.`)}function ey(e,{ambiguousAsWide:t=!1}={}){return k_(e),Xh(e)||Zh(e)||t&&Yh(e)?2:1}var ty=O(()=>{"use strict";Qh()});var ry,ny=O(()=>{"use strict";ry=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g});function wd(e,t={}){if(typeof e!="string"||e.length===0)return 0;let{ambiguousIsNarrow:r=!0,countAnsiEscapeCodes:n=!1}=t;if(n||(e=gd(e)),e.length===0)return 0;let o=0,i={ambiguousAsWide:!r};for(let{segment:s}of b_.segment(e)){let a=s.codePointAt(0);if(!(a<=31||a>=127&&a<=159)&&!(a>=8203&&a<=8207||a===65279)&&!(a>=768&&a<=879||a>=6832&&a<=6911||a>=7616&&a<=7679||a>=8400&&a<=8447||a>=65056&&a<=65071)&&!(a>=55296&&a<=57343)&&!(a>=65024&&a<=65039)&&!E_.test(s)){if(ry().test(s)){o+=2;continue}o+=ey(a,i)}}return o}var b_,E_,oy=O(()=>{"use strict";Kh();ty();ny();b_=new Intl.Segmenter,E_=new RegExp("^\\p{Default_Ignorable_Code_Point}$","u")});function Dd({stream:e=process.stdout}={}){return!!(e&&e.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}var iy=O(()=>{"use strict"});function bd(){let{env:e}=kd.default,{TERM:t,TERM_PROGRAM:r}=e;return kd.default.platform!=="win32"?t!=="linux":!!e.WT_SESSION||!!e.TERMINUS_SUBLIME||e.ConEmuTask==="{cmd::Cmder}"||r==="Terminus-Sublime"||r==="vscode"||t==="xterm-256color"||t==="alacritty"||t==="rxvt-unicode"||t==="rxvt-unicode-256color"||e.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var kd,sy=O(()=>{"use strict";kd=D(require("process"),1)});var Qt,v_,Ed,S_,vd,ay=O(()=>{"use strict";Qt=D(require("process"),1),v_=3,Ed=class{#s=0;start(){this.#s++,this.#s===1&&this.#r()}stop(){if(this.#s<=0)throw new Error("`stop` called more times than `start`");this.#s--,this.#s===0&&this.#e()}#r(){Qt.default.platform==="win32"||!Qt.default.stdin.isTTY||(Qt.default.stdin.setRawMode(!0),Qt.default.stdin.on("data",this.#o),Qt.default.stdin.resume())}#e(){Qt.default.stdin.isTTY&&(Qt.default.stdin.off("data",this.#o),Qt.default.stdin.pause(),Qt.default.stdin.setRawMode(!1))}#o(t){t[0]===v_&&Qt.default.emit("SIGINT")}},S_=new Ed,vd=S_});function xd(e){return new Sd(e)}var ns,os,x_,Sd,ly=O(()=>{"use strict";ns=D(require("process"),1);ed();Nh();os=D(ud(),1);Wh();Vh();oy();iy();sy();ay();x_=D(ud(),1),Sd=class{#s=0;#r=!1;#e=0;#o=-1;#p=0;#t;#i;#n;#f;#g;#c;#u;#d;#h;#a;#l;color;constructor(t){typeof t=="string"&&(t={text:t}),this.#t={color:"cyan",stream:ns.default.stderr,discardStdin:!0,hideCursor:!0,...t},this.color=this.#t.color,this.spinner=this.#t.spinner,this.#g=this.#t.interval,this.#n=this.#t.stream,this.#c=typeof this.#t.isEnabled=="boolean"?this.#t.isEnabled:Dd({stream:this.#n}),this.#u=typeof this.#t.isSilent=="boolean"?this.#t.isSilent:!1,this.text=this.#t.text,this.prefixText=this.#t.prefixText,this.suffixText=this.#t.suffixText,this.indent=this.#t.indent,ns.default.env.NODE_ENV==="test"&&(this._stream=this.#n,this._isEnabled=this.#c,Object.defineProperty(this,"_linesToClear",{get(){return this.#s},set(r){this.#s=r}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#o}}),Object.defineProperty(this,"_lineCount",{get(){return this.#e}}))}get indent(){return this.#d}set indent(t=0){if(!(t>=0&&Number.isInteger(t)))throw new Error("The `indent` option must be an integer from 0 and up");this.#d=t,this.#m()}get interval(){return this.#g??this.#i.interval??100}get spinner(){return this.#i}set spinner(t){if(this.#o=-1,this.#g=void 0,typeof t=="object"){if(t.frames===void 0)throw new Error("The given spinner must have a `frames` property");this.#i=t}else if(!bd())this.#i=os.default.line;else if(t===void 0)this.#i=os.default.dots;else if(t!=="default"&&os.default[t])this.#i=os.default[t];else throw new Error(`There is no built-in spinner named '${t}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#h}set text(t=""){this.#h=t,this.#m()}get prefixText(){return this.#a}set prefixText(t=""){this.#a=t,this.#m()}get suffixText(){return this.#l}set suffixText(t=""){this.#l=t,this.#m()}get isSpinning(){return this.#f!==void 0}#y(t=this.#a,r=" "){return typeof t=="string"&&t!==""?t+r:typeof t=="function"?t()+r:""}#w(t=this.#l,r=" "){return typeof t=="string"&&t!==""?r+t:typeof t=="function"?r+t():""}#m(){let t=this.#n.columns??80,r=this.#y(this.#a,"-"),n=this.#w(this.#l,"-"),o=" ".repeat(this.#d)+r+"--"+this.#h+"--"+n;this.#e=0;for(let i of fd(o).split(`
8
+ `))this.#e+=Math.max(1,Math.ceil(wd(i,{countAnsiEscapeCodes:!0})/t))}get isEnabled(){return this.#c&&!this.#u}set isEnabled(t){if(typeof t!="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#c=t}get isSilent(){return this.#u}set isSilent(t){if(typeof t!="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#u=t}frame(){let t=Date.now();(this.#o===-1||t-this.#p>=this.interval)&&(this.#o=++this.#o%this.#i.frames.length,this.#p=t);let{frames:r}=this.#i,n=r[this.#o];this.color&&(n=Zt[this.color](n));let o=typeof this.#a=="string"&&this.#a!==""?this.#a+" ":"",i=typeof this.text=="string"?" "+this.text:"",s=typeof this.#l=="string"&&this.#l!==""?" "+this.#l:"";return o+n+i+s}clear(){if(!this.#c||!this.#n.isTTY)return this;this.#n.cursorTo(0);for(let t=0;t<this.#s;t++)t>0&&this.#n.moveCursor(0,-1),this.#n.clearLine(1);return(this.#d||this.lastIndent!==this.#d)&&this.#n.cursorTo(this.#d),this.lastIndent=this.#d,this.#s=0,this}render(){return this.#u?this:(this.clear(),this.#n.write(this.frame()),this.#s=this.#e,this)}start(t){return t&&(this.text=t),this.#u?this:this.#c?this.isSpinning?this:(this.#t.hideCursor&&cd.hide(this.#n),this.#t.discardStdin&&ns.default.stdin.isTTY&&(this.#r=!0,vd.start()),this.render(),this.#f=setInterval(this.render.bind(this),this.interval),this):(this.text&&this.#n.write(`- ${this.text}
9
+ `),this)}stop(){return this.#c?(clearInterval(this.#f),this.#f=void 0,this.#o=0,this.clear(),this.#t.hideCursor&&cd.show(this.#n),this.#t.discardStdin&&ns.default.stdin.isTTY&&this.#r&&(vd.stop(),this.#r=!1),this):this}succeed(t){return this.stopAndPersist({symbol:ts.success,text:t})}fail(t){return this.stopAndPersist({symbol:ts.error,text:t})}warn(t){return this.stopAndPersist({symbol:ts.warning,text:t})}info(t){return this.stopAndPersist({symbol:ts.info,text:t})}stopAndPersist(t={}){if(this.#u)return this;let r=t.prefixText??this.#a,n=this.#y(r," "),o=t.symbol??" ",i=t.text??this.text,a=typeof i=="string"?(o?" ":"")+i:"",l=t.suffixText??this.#l,c=this.#w(l," "),d=n+o+a+c+`
10
+ `;return this.stop(),this.#n.write(d),this}}});function is(e,{suffix:t="nodejs"}={}){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return t&&(e+=`-${t}`),rl.default.platform==="darwin"?C_(e):rl.default.platform==="win32"?__(e):F_(e)}var Se,Cd,rl,qr,_d,Mo,C_,__,F_,Fd=O(()=>{"use strict";Se=D(require("path"),1),Cd=D(require("os"),1),rl=D(require("process"),1),qr=Cd.default.homedir(),_d=Cd.default.tmpdir(),{env:Mo}=rl.default,C_=e=>{let t=Se.default.join(qr,"Library");return{data:Se.default.join(t,"Application Support",e),config:Se.default.join(t,"Preferences",e),cache:Se.default.join(t,"Caches",e),log:Se.default.join(t,"Logs",e),temp:Se.default.join(_d,e)}},__=e=>{let t=Mo.APPDATA||Se.default.join(qr,"AppData","Roaming"),r=Mo.LOCALAPPDATA||Se.default.join(qr,"AppData","Local");return{data:Se.default.join(r,e,"Data"),config:Se.default.join(t,e,"Config"),cache:Se.default.join(r,e,"Cache"),log:Se.default.join(r,e,"Log"),temp:Se.default.join(_d,e)}},F_=e=>{let t=Se.default.basename(qr);return{data:Se.default.join(Mo.XDG_DATA_HOME||Se.default.join(qr,".local","share"),e),config:Se.default.join(Mo.XDG_CONFIG_HOME||Se.default.join(qr,".config"),e),cache:Se.default.join(Mo.XDG_CACHE_HOME||Se.default.join(qr,".cache"),e),log:Se.default.join(Mo.XDG_STATE_HOME||Se.default.join(qr,".local","state"),e),temp:Se.default.join(_d,t,e)}}});function nl(){return/[<>:"/\\|?*\u0000-\u001F]/g}function cy(){return/^(con|prn|aux|nul|com\d|lpt\d)$/i}var uy=O(()=>{"use strict"});function ss(e,t={}){let r=/[\u0000-\u001F\u0080-\u009F]/g,n=/([<>:"/\\|?*\u0000-\u001F]){2,}/g;if(typeof e!="string")throw new TypeError("Expected a string");let o=t.replacement===void 0?"!":t.replacement;if(nl().test(o)&&r.test(o))throw new Error("Replacement string cannot contain reserved filename characters");o.length>0&&(e=e.replace(n,"$1")),e=e.normalize("NFD"),e=e.replace(T_,o),e=e.replace(nl(),o),e=e.replace(r,o),e=e.replace(R_,""),o.length>0&&(!(e[0]===".")&&e[0]==="."&&(e=o+e),e[e.length-1]==="."&&(e+=o)),e=cy().test(e)?e+o:e;let i=typeof t.maxLength=="number"?t.maxLength:A_;if(e.length>i){let s=e.lastIndexOf(".");if(s===-1)e=e.slice(0,i);else{let a=e.slice(0,s),l=e.slice(s);e=a.slice(0,Math.max(1,i-l.length))+l}}return e}var A_,T_,R_,Ad=O(()=>{"use strict";uy();A_=100,T_=/^\.+(\\|\/)|^\.+$/,R_=/\.+$/});var I_,dy=O(()=>{"use strict";I_=D(require("path"),1);Ad()});var py=O(()=>{"use strict";Ad();dy()});var ol,Td=O(()=>{"use strict";ol="webflow.json"});var Rn,Rd=O(()=>{"use strict";Rn=class extends Error{constructor(t){super(`Manifest config for key "${t}" not found`),this.name="ManifestConfigKeyNotFoundError"}}});function yy(e){fy=e}function wy(e){my=e}function O_(){for(let e of Dy){let t=process.env[e.variable];if(!(t===void 0||t==="")&&!(e.value!==void 0&&t!==e.value))return e.agent}return null}function P_(){return process.env.CI==="true"||!process.stdout.isTTY||!process.stdin.isTTY||O_()!==null}function W(){return fy?!0:my?!1:P_()}function er(){return!W()}function ky(e){gy=e}function ze(){return gy}function by(e){hy=e}function Ey(){return hy}var fy,my,gy,hy,Dy,uL,pe=O(()=>{"use strict";fy=!1,my=!1,gy=!1;Dy=[{variable:"CLAUDECODE",agent:"claude-code"},{variable:"CODEX_THREAD_ID",agent:"codex"},{variable:"CODEX_SANDBOX",agent:"codex"},{variable:"GEMINI_CLI",agent:"gemini-cli"},{variable:"OPENCODE_CLIENT",agent:"opencode"},{variable:"AI_AGENT",agent:"generic-agent"},{variable:"COPILOT_MODEL",agent:"copilot"},{variable:"AUGMENT_AGENT",agent:"augment"},{variable:"ANTIGRAVITY_AGENT",agent:"antigravity"},{variable:"CURSOR_AGENT",agent:"cursor"},{variable:"CURSOR_EXTENSION_HOST_ROLE",agent:"cursor",value:"agent-exec"}],uL=Dy.map(e=>e.variable)});function In(){let e=Ey();if(e){if(e.endsWith(".json"))return{path:e,isUserDefined:!0};try{if((0,vy.statSync)(e)?.isDirectory())return{path:(0,Sy.join)(e,ol),isUserDefined:!0}}catch{if(e.endsWith(".json"))return{path:e,isUserDefined:!0}}throw new Error(`Manifest path must be either a directory or a .json file. Got: ${e}`)}return{path:`./${ol}`,isUserDefined:!1}}var vy,Sy,Id=O(()=>{"use strict";vy=require("fs"),Sy=require("path");Td();pe()});var xy,$_,L_,Od,Cy=O(()=>{"use strict";xy=D(require("ajv")),$_=new xy.default,L_={type:"object",properties:{library:{type:"object",properties:{name:{type:"string",minLength:1},id:{type:"string",minLength:1},components:{type:"array",items:{type:"string"},minItems:1},renderer:{anyOf:[{type:"object",properties:{client:{type:"string",minLength:1},server:{type:"string",minLength:1}}},{type:"string",minLength:1}]},globals:{type:"string",minLength:1}},required:[]},devlink:{type:"object",properties:{rootDir:{type:"string",minLength:1},cssModules:{type:"boolean"},allowTelemetry:{type:"boolean"},overwriteModule:{type:"boolean"},skipTagSelectors:{type:"boolean"},envVariables:{type:"object",additionalProperties:{type:"string"}},components:{oneOf:[{type:"string"},{type:"array",items:{type:"string"}}]},fileExtensions:{type:"object",properties:{js:{type:"string"},css:{type:"string"}}},relativeHrefRoot:{oneOf:[{type:"boolean"},{type:"string"}]}},required:["rootDir"]},"devlink-export":{type:"object",properties:{rootDir:{type:"string",minLength:1},components:{type:"string"},componentGroups:{type:"string"},ts:{type:"boolean"},cssScopes:{type:"boolean"},relativeHrefRoot:{oneOf:[{type:"boolean",const:!1},{type:"string"}]},treeShake:{type:"boolean"},camelCaseVariantNames:{type:"boolean"}},required:[]}}},Od=$_.compile(L_)});function _y(e){return e instanceof Error?e:new Error("Unknown error")}function Z(){let{path:e}=In();if(!(0,il.existsSync)(e))return{manifest:{},manifestPath:e};let t;try{t=(0,il.readFileSync)(e,"utf8")}catch(o){throw new Error(`Failed to read manifest file: ${_y(o).message}`)}if(t.trim()==="")return{manifest:{},manifestPath:e};let n;try{n=JSON.parse(t)}catch(o){throw new Error(`Invalid JSON in manifest file: ${_y(o).message}`)}if(!Od(n)){let o=Od.errors?.map(i=>`${i.instancePath} ${i.message}`).join(", ")||"Unknown error";throw new Error(`Invalid manifest: ${o}.`)}return{manifest:n,manifestPath:e}}var il,as=O(()=>{"use strict";il=require("fs");Id();Cy()});function ls(e,t){let r=e[t];if(!r)throw new Rn(t);return r}var Fy=O(()=>{"use strict";Rd()});function xe(e){let t=Z(),r=t.manifest,n=t.manifestPath,o={...r};for(let i in e){let s=i,a=e[s];if(a!==void 0)if(typeof a=="string"||typeof a=="number"||typeof a=="boolean"||a===null)o[s]=a;else{let l=o[s];o[s]={...typeof l=="object"&&l!==null?l:{},...a}}}return(0,Ay.writeFileSync)(n,JSON.stringify(o,null,2),"utf-8"),o}var Ay,Pd=O(()=>{"use strict";Ay=require("fs");as()});var Me=O(()=>{"use strict";Td();Rd();as();Id();Fy();Pd()});var sl=Ju((TL,N_)=>{N_.exports={name:"@webflow/webflow-cli",version:"2.3.0",license:"MIT",bin:{webflow:"./dist/index.js"},scripts:{build:"tsup",dev:"tsup",lint:"eslint .",test:"jest --ci","test:unit":"jest --ci --ignoreProjects e2e","test:local":"jest","test:e2e:deploy":"bash regression/run-local.sh","test:regression":"jest --config regression/jest.config.js --testTimeout=420000","test:e2e-cache-clear":"bash scripts/clear-e2e-cache.sh"},files:["CHANGELOG.md","dist/**/*"],publishConfig:{access:"public"},dependencies:{"@babel/preset-env":"^7.26.9","@babel/preset-react":"^7.26.3","@babel/preset-typescript":"^7.27.0","@dotenvx/dotenvx":"^1.44.1","@inquirer/prompts":"^7.9.0","@module-federation/enhanced":"2.5.1","@rspack/core":"^1.7.8","@webflow/cosmic-deploy-contract":"^1.0.2","@webflow/data-types":"*",ajv:"^8.17.1",archiver:"^5.3.1","babel-loader":"^10.0.0",commander:"^10.0.0",cosmiconfig:"^8.2.0","css-loader":"^7.1.2",dotenv:"^16.0.3","env-paths":"^3.0.0","fast-glob":"^3.3.3",filenamify:"^6.0.0","fork-ts-checker-webpack-plugin":"9.1.0","form-data":"4.0.4","fs-extra":"^11.3.0",jsdom:"^26.0.0","jsonc-parser":"^3.2.0",md5:"^2.2.1",memfs:"4.17.0","mime-types":"^2.1.35","mini-css-extract-plugin":"^2.9.2","node-fetch":"^2.6.7",open:"^8.4.2",ora:"^8.2.0",postcss:"^8.5.6","postcss-loader":"^8.1.1","postcss-selector-parser":"^7.1.0",semver:"^7.7.2","serve-handler":"^6.1.5","source-map-support":"^0.5.21",tar:"^7.5.19","ts-checker-rspack-plugin":"^1.0.0","tsconfig-paths":"^4.2.0","tsconfig-paths-webpack-plugin":"^4.2.0",unionfs:"^4.5.4","webflow-api":"3.3.4",webpack:">=5.99.7 <5.106.0","webpack-merge":"^6.0.1","webpack-node-externals":"^3.0.0",yaml:"^2.8.4",zod:"^3.22.4"},devDependencies:{"@module-federation/sdk":"2.5.1","@types/archiver":"^5.3.2","@types/express":"^4.17.13","@types/fs-extra":"^11.0.4","@types/jest":"^29.2.3","@types/md5":"^2.3.2","@types/mime-types":"^2.1.4","@types/nock":"^8.0.33","@types/node":"^22.13.0","@types/node-fetch":"2.6.13","@types/serve-handler":"^6.1.1","@types/source-map":"^0.5.2","@types/webpack-node-externals":"^3.0.4",astro:"^7.0.6","eslint-config-custom":"*",express:"^4.18.1",jest:"^29.3.1",nock:"13.3.1",tar:"^7.5.19","ts-jest":"^29.4.9","ts-node":"^10.9.1",tsconfig:"*",tsup:"^8.4.0",typescript:"^5.9.3"},engines:{node:">=22.13.0"}}});function Ar(){try{return sl().version}catch{return"unknown"}}function pr(e=""){if(!e)return"";let t=e;t=t.replace(/\/.*?\/webflow-cli/gi,"/REDACTED_PII/webflow-cli"),t=t.replace(/\/.*?\/node_modules/gi,"/REDACTED_PII/node_modules");let r=cs.default.homedir();if(r){let o=new RegExp(r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gi");t=t.replace(o,"~/REDACTED_PII")}let n=cs.default.userInfo().username;if(n){let o=new RegExp(`/Users/${n}`,"gi");t=t.replace(o,"/Users/REDACTED_PII")}return t=t.replace(/\/Users\/[^\/\s]+/gi,"/Users/REDACTED_PII"),t=t.replace(/C:\\Users\\[^\\]+/gi,"C:\\Users\\REDACTED_PII"),t=t.replace(/[a-zA-Z0-9]{32,}/g,"[REDACTED_TOKEN]"),t=t.replace(/Bearer\s+[^\s]+/gi,"Bearer [REDACTED_TOKEN]"),t=t.replace(/token[=:]\s*[^\s]+/gi,"token=[REDACTED_TOKEN]"),t=t.replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,"[REDACTED_EMAIL]"),t=t.replace(/\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b/g,"[REDACTED_IP]"),t}function $d(e){if(e.stack)return pr(e.stack)}function Yr(e){let t=["password","token","secret","key","auth","bearer","authorization","apikey","api_key","access_token","refresh_token","client_secret","private_key"],r={};for(let[n,o]of Object.entries(e)){let i=n.toLowerCase();t.some(s=>i.includes(s))?r[n]="[REDACTED]":typeof o=="string"?r[n]=pr(o):typeof o=="object"&&o!==null&&!Array.isArray(o)?r[n]=Yr(o):Array.isArray(o)?r[n]=o.map(s=>typeof s=="object"&&s!==null?Yr(s):typeof s=="string"?pr(s):s):r[n]=o}return r}function Ty(){return{platform:process.platform,nodeVersion:process.version,arch:process.arch,os:`${cs.default.type()} ${cs.default.release()}`}}function Ld(){let e=Date.now().toString(36),t=Math.random().toString(36).substring(2,8);return`${e}-${t}`}var cs,us=O(()=>{"use strict";cs=D(require("os"))});var L,b,Fe,Bo,Nd,ot,he,al,jd,Tr,N=O(()=>{"use strict";de();L=V("\u2713"),b=Lt("\u2716"),Fe=_e("\u2139"),Bo=V("\u279C"),Nd=Lt("\u279C"),ot="\u279C",he=ne("\u26A0"),al=R("\u2732"),jd=V("\u2732"),Tr=ne("[Deprecated]")});var Xr,Md=O(()=>{"use strict";Me();us();x();de();N();pe();Xr=class e{static instance;cache=void 0;static isDoNotTrackEnabled(){let t=process.env.DO_NOT_TRACK;return t==="1"||t?.toLowerCase()==="true"}static getInstance(){return e.instance||(e.instance=new e),e.instance}async getPreference(){if(e.isDoNotTrackEnabled())return!1;if(this.cache!==void 0)return this.cache;try{let{manifest:t}=await Z(),r=t?.telemetry?.global?.allowTelemetry;return this.cache=r,r}catch{return}}async setPreference(t){this.cache=t,await this.setGlobalPreference(t)}async promptForConsent(t){return e.isDoNotTrackEnabled()?(ze()||u.info(`${Fe} Telemetry is disabled because the DO_NOT_TRACK environment variable is set.`),!1):(ze()||(u.info(`${jd} ${R("Telemetry is enabled. We collect usage data and error reports to improve the Webflow CLI.")}`),u.info(`${jd} ${R("To opt out, run")} ${V("webflow auth telemetry --disable")}`)),await this.setPreference(!0),!0)}clearCache(){this.cache=void 0}async getGlobalPreference(){return this.getPreference()}async setGlobalPreference(t){let r={telemetry:{global:{allowTelemetry:t,lastPrompted:Date.now(),version:Ar()}}};await xe(r),ze()||u.info(`${L} Telemetry configuration updated in webflow.json`),this.cache=t}async hasGlobalPreference(){return await this.getPreference()!==void 0}async getTelemetryStatus(){let t=await this.getPreference();return t!==void 0?{enabled:t,source:"global",hasPreference:!0}:{enabled:!1,source:"none",hasPreference:!1}}setCacheValue(t,r){this.cache=r}}});async function G(e,t){let n={"User-Agent":`webflow-cli@${Ar()}`};return(0,Ry.default)(e,{...t,headers:{...t?.headers,...n}})}var Ry,dt=O(()=>{"use strict";Ry=D(require("node-fetch"));z()});var Iy,Oy=O(()=>{"use strict";Iy=e=>{try{let t=new URL(e);return!(!["http:","https:"].includes(t.protocol)||e.includes("?")||e.includes("#")||t.search||t.hash)}catch{return!1}}});var Bd,I,ll,Uo,ds,Ud,ps,fs,Wo,ye=O(()=>{"use strict";Oy();Bd=(e,t)=>(Iy(t)||(console.error(`Error: Invalid ${e} environment variable. Only valid plain HTTP/HTTPS URLs without query parameters and anchors is allowed.`),process.exit(1)),t),I=process.env.WEBFLOW_API_HOST?Bd("WEBFLOW_API_HOST",process.env.WEBFLOW_API_HOST):"https://api.webflow.com",ll=process.env.WEBFLOW_CDN_API_HOST?Bd("WEBFLOW_CDN_API_HOST",process.env.WEBFLOW_CDN_API_HOST):"https://api-cdn.webflow.com",Uo=process.env.WEBFLOW_HOST?Bd("WEBFLOW_HOST",process.env.WEBFLOW_HOST):"https://webflow.com",ds="wf-manifest.json",Ud="mf-manifest.json",ps="@webflow_renderer",fs="ssr-bundle.tar",Wo="index.js"});function j_(){let e=process.argv.slice(2),t=[];for(let r=0;r<e.length;r+=1){let n=e[r],o=n.indexOf("=");if(o>0&&Py.has(n.slice(0,o))){t.push(`${n.slice(0,o)}=<redacted>`);continue}t.push(n),Py.has(n)&&r+1<e.length&&(t.push("<redacted>"),r+=1)}return t.join(" ")||void 0}var Py,_,Wd=O(()=>{"use strict";Md();us();x();dt();ye();Py=new Set(["--ref"]);_=class e{config;consentManager;sessionId;platformInfo;constructor(t){this.config=t,this.consentManager=Xr.getInstance(),this.sessionId=Ld(),this.platformInfo=Ty()}async sendEvent(t){try{if(!await this.isEnabled())return;let r=this.enrichEvent(t),n=this.sanitizeEvent(r);await this.transmitEvent(n)}catch(r){u.debug(`Failed to send telemetry event: ${r}`)}}async sendError(t,r,n){await this.sendEvent({eventType:"error",success:!1,name:t.name,message:t.message,cause:t.cause,stack:$d(t),context:r,metadata:n?Yr(n):void 0})}async sendUsage(t,r){let{duration:n,...o}=r??{};await this.sendEvent({eventType:"usage",success:!0,feature:t,duration:typeof n=="number"?n:void 0,data:Object.keys(o).length>0?Yr(o):void 0})}async sendPerformance(t,r,n){await this.sendEvent({eventType:"performance",operation:t,duration:r,metrics:n})}async isEnabled(){return await this.consentManager.getPreference()!==!1}async isGloballyEnabled(){return await this.consentManager.getGlobalPreference()!==!1}async updatePreferences(t){await this.consentManager.setPreference(t)}static async promptForConsentIfNeeded(t){let r=Xr.getInstance(),n=await r.getPreference();return n!==void 0?n:await r.promptForConsent(t)}enrichEvent(t){return{...{eventType:t.eventType||"usage",timestamp:Date.now(),sessionId:this.sessionId,platform:this.platformInfo.platform,nodeVersion:this.platformInfo.nodeVersion,cliVersion:Ar(),command:this.config.suppressCommand?void 0:j_(),metadata:{...t.metadata,commandType:this.config.commandType,siteId:this.config.siteId,projectId:this.config.projectId,os:this.platformInfo.os,arch:this.platformInfo.arch}},...t}}sanitizeEvent(t){let r=JSON.parse(JSON.stringify(t));return r.message&&(r.message=pr(r.message)),r.stack&&(r.stack=pr(r.stack)),r.context&&(r.context=pr(r.context)),r.metadata&&(r.metadata=Yr(r.metadata)),r.data&&(r.data=Yr(r.data)),r}async transmitEvent(t){let r=this.getEndpoint(),n=process.env.WEBFLOW_TELEMETRY_DEBUG==="true";if(n){console.log(`\u{1F4CA} [Telemetry] Sending to: ${r}`);let i={...t};i.metadata&&(delete i.metadata.authToken,delete i.metadata.apiToken),console.log("\u{1F4CA} [Telemetry] Payload:",JSON.stringify(i,null,2))}let o=await G(r,{method:"POST",headers:{Authorization:`Bearer ${this.config.authToken}`,"Content-Type":"application/json"},body:JSON.stringify(t),timeout:5e3});if(o.ok)n&&console.log(`\u{1F4CA} [Telemetry] Request successful: ${o.status}`);else throw n&&console.error(`\u{1F4CA} [Telemetry] Request failed: ${o.status} ${o.statusText}`),new Error(`Telemetry request failed: ${o.status} ${o.statusText}`)}getEndpoint(){let{host:t,commandType:r}=this.config;return`${t}/webflow-cli/${r}/telemetry`}static forDevlinkSync(t){return new e({host:t.host||I,authToken:t.authToken,siteId:t.siteId,commandType:"devlink"})}static forExport(t){return new e({host:t.host||I,authToken:t.authToken,siteId:t.siteId,commandType:"export"})}static forCloud(t){return new e({host:t.host||I,authToken:t.authToken,siteId:t.siteId,projectId:t.projectId,commandType:"cloud"})}static forExtension(t){return new e({host:t.host||I,authToken:t.authToken,siteId:t.siteId,commandType:"extension"})}static forCodeLibraries(t){return new e({host:t.host||I,authToken:t.authToken,commandType:"library"})}static forCms(t){return new e({host:t.host||I,authToken:t.authToken,siteId:t.siteId,commandType:"cms"})}static forAssets(t){return new e({host:t.host||I,authToken:t.authToken,siteId:t.siteId,commandType:"assets"})}static forSites(t){return new e({host:t.host||I,authToken:t.authToken,commandType:"sites"})}static forApps(t){return new e({host:t.host||I,authToken:t.authToken,commandType:"apps",suppressCommand:t.suppressCommand})}static forForms(t){return new e({host:t.host||I,authToken:t.authToken,commandType:"forms"})}static forAppsEnvVars(t){return new e({host:t.host||I,authToken:t.authToken,commandType:"apps_env_vars",suppressCommand:!0})}static forSkills(t){return new e({host:t.host||I,authToken:t.authToken,commandType:"skills"})}}});var $y=O(()=>{"use strict"});function Ly(e){return async(t,r,n)=>{let o=Date.now(),i=process.memoryUsage().heapUsed;try{let s=await r(),a=Date.now()-o,l=process.memoryUsage().heapUsed;return await e.sendPerformance(t,a,{memoryDelta:l-i,...n}),s}catch(s){let a=Date.now()-o;throw await e.sendPerformance(t,a,{failed:1,...n}),s}}}var z=O(()=>{"use strict";Wd();Md();$y();us();us()});var Vd,Hd,M_,Rr,Gd=O(()=>{"use strict";Vd=Symbol("webflow-cli-warn"),Hd=class{warnings=[];originalConsoleWarn=null;isActive=!1;parseSource(t){let r=t.split(`
11
+ `);for(let n=2;n<r.length;n++){let o=r[n],i=o.match(/at .+? \((.+?):\d+:\d+\)/)||o.match(/at (.+?):\d+:\d+/);if(i){let s=i[1];if(s.includes("node_modules")){let a=s.match(/node_modules\/(@?[^/]+(?:\/[^/]+)?)/);return a?`External: ${a[1]}`:"External Dependencies"}else if(s.includes("webflow-cli"))return s.includes("/metadata/")?"Metadata Collection":s.includes("/bundler/")?"Bundling":s.includes("/commands/")?"CLI Commands":"Webflow CLI"}}return"General"}start(){this.isActive||(this.warnings=[],this.originalConsoleWarn=console.warn,this.isActive=!0,console.warn=(...t)=>{if(t.length>1&&t[t.length-1]===Vd){let i=t.slice(0,-1);this.originalConsoleWarn&&this.originalConsoleWarn(...i);return}let r=t.map(i=>{if(typeof i=="string")return i;if(i instanceof Error)return i.message;try{return String(i)}catch{return"[Object]"}}).join(" "),n=new Error().stack||"",o=this.parseSource(n);this.warnings.push({message:r,timestamp:Date.now(),source:o,stackTrace:n})})}stop(){this.isActive&&(this.originalConsoleWarn&&(console.warn=this.originalConsoleWarn,this.originalConsoleWarn=null),this.isActive=!1)}displayGrouped(){if(this.warnings.length===0)return;console.log(`
12
12
  \u26A0\uFE0F Warnings:
13
13
  `);let t=this.warnings.reduce((r,n)=>{let o=n.source||"General";return r[o]||(r[o]=[]),r[o].push(n),r},{});Object.entries(t).forEach(([r,n])=>{r!=="General"&&console.log(` ${r}:`),n.forEach((o,i)=>{let s=r!=="General"?" ":" ",a=o.message||"[Empty warning message]";console.log(`${s}${i+1}. ${a}`)}),r!=="General"&&console.log("")}),t.General&&console.log("")}debug(){console.log(`
14
14
  \u{1F41B} Debug: Captured Warnings
15
15
  `),this.warnings.forEach((t,r)=>{console.log(`Warning ${r+1}:`),console.log(` Source: ${t.source}`),console.log(` Message: ${t.message}`),console.log(` Message length: ${t.message.length}`),console.log(` Timestamp: ${new Date(t.timestamp).toISOString()}`),t.stackTrace&&(console.log(" Stack (first 3 lines):"),t.stackTrace.split(`
16
- `).slice(0,3).forEach(n=>{console.log(` ${n}`)})),console.log("")})}},MD=new pl,Nt=MD});function it(e){return e.replace(/\x1b\[[0-9;]*[a-zA-Z]/g,"")}function Bp(e,t){if(!e)return t;let r=parseInt(e,10);return isNaN(r)||r<=0?t:r}function Qt(e){ho.push(Ft(e)),ho.length>VD&&ho.shift()}function Mp(e){hl=e}function Np(e){return Qt(`DEBUG: ${e}`),e}function JD(e){return Qt(`INFO: ${e}`),e}function GD(e){return Qt(`WARN: ${e}`),e}function zD(e,t){let r=e instanceof Error?e.stack||e.message:e,n=t?.prefix?`${t.prefix} `:"";Qt(`ERROR: ${n}${r}`),wl=!0;let o=e instanceof Error?e.message:String(e);return Pt(`${n}${o}`)}function KD(e){return Qt(`SUCCESS: ${e}`),P(e)}function YD(e){let t=Ka({text:`${e}...`,indent:1}).start(),r=!1,n=o=>i=>{if(Qt(`${qD[o]||"INFO"}: ${i||e}`),o==="fail"&&(wl=!0),o==="update"){t.text=i||e;return}r||(r=!0,t.stopAndPersist({symbol:ZD[o],text:T(i||e)}))};return{succeed:n("succeed"),fail:n("fail"),warn:n("warn"),info:n("info"),neutral:n("neutral"),update:n("update"),stop:()=>{r||(r=!0,t.stop())}}}function XD(){let e=gn.default.readdirSync(Ye).filter(t=>t.endsWith(".log")).map(t=>({name:t,time:gn.default.statSync(Ti.default.join(Ye,t)).mtime.getTime()})).sort((t,r)=>r.time-t.time);for(;e.length>=UD;)try{let t=e.pop();if(!t)break;gn.default.removeSync(Ti.default.join(Ye,t.name))}catch{}}function yl(e){try{let t=process.argv.slice(2).join(" ");if(/^(log|library\s+log)(\s|$)/.test(t))return;gn.default.ensureDirSync(Ye),XD(),ho.unshift(`CLI Version: ${jt()}`,`Node Version: ${process.version}`,`Platform: ${process.platform}`,`Architecture: ${process.arch}`,`Command: ${t||"N/A"}`,`Exit Code: ${e??0}`,`Memory Usage: ${Math.round(process.memoryUsage().heapUsed/1024/1024)}MB`,`Timestamp: ${new Date().toISOString()}`,...hl?[`Sync ID: ${hl}`]:[],"");let r=ho.map(it);gn.default.writeFileSync(gl,r.join(`
17
- `)),wl&&(console.info(`
18
- ${D} ${T("An error occurred. See logs for more information:")}`),console.info(` ${sl} Latest log: ${gl}`),console.info(` ${sl} All logs: ${Ye}`)),(process.env.DEBUG||process.argv.includes("--verbose"))&&(console.info(`
19
- ${O} Command completed successfully. Logs written to:`),console.info(` ${pn} Latest log: ${gl}`),console.info(` ${pn} All logs: ${Ye}`))}catch(t){console.error("Failed to write logs:",t)}}var gn,Ti,CC,WD,Ye,UD,VD,HD,gl,ho,wl,hl,qD,ZD,hn,Lp,go,QD,l,v=k(()=>{"use strict";gn=h(require("fs-extra")),Ti=h(require("path")),CC=require("source-map-support/register");up();dp();gp();W();ie();ml();$();WD=Ya("webflow-cli"),Ye=WD.log;UD=Bp(process.env.MAX_PERSISTED_LOGS,50),VD=Bp(process.env.MAX_IN_MEMORY_LOGS,1e3),HD=`${so(new Date().toISOString(),{replacement:"_"}).replace(/\./g,"_")}-debug.log`,gl=Ti.default.join(Ye,HD);ho=[],wl=!1;qD={succeed:"INFO",fail:"ERROR",warn:"WARN",info:"INFO",neutral:"INFO",update:"INFO"},ZD={succeed:O,fail:D,warn:ge,info:Oe,neutral:" ",update:void 0};hn=!1;process.on("uncaughtException",e=>{hn||(hn=!0,Qt(`UNCAUGHT EXCEPTION: ${e?.stack}`),yl(1)),Nt.displayGrouped(),Nt.stop(),process.exit(1)});process.on("unhandledRejection",e=>{hn||(hn=!0,Qt(`UNHANDLED REJECTION: ${e instanceof Error?e.stack:String(e)}`),yl(1)),Nt.displayGrouped(),Nt.stop(),process.exit(1)});process.on("exit",e=>{hn||(hn=!0,yl(e))});Lp=!0,go=e=>{let t=e.split(`
16
+ `).slice(0,3).forEach(n=>{console.log(` ${n}`)})),console.log("")})}},M_=new Hd,Rr=M_});function pt(e){return e.replace(/\x1b\[[0-9;]*[a-zA-Z]/g,"")}function My(e,t){if(!e)return t;let r=parseInt(e,10);return isNaN(r)||r<=0?t:r}function Ir(e){gs.push(pr(e)),gs.length>W_&&gs.shift()}function By(e){zd=e}function Ny(e){return Ir(`DEBUG: ${e}`),e}function V_(e){return Ir(`INFO: ${e}`),e}function G_(e){return Ir(`WARN: ${e}`),e}function K_(e,t){let r=e instanceof Error?e.stack||e.message:e,n=t?.prefix?`${t.prefix} `:"";Ir(`ERROR: ${n}${r}`),Jd=!0;let o=e instanceof Error?e.message:String(e);return Lt(`${n}${o}`)}function z_(e){return Ir(`SUCCESS: ${e}`),V(e)}function Y_(e){let t=xd({text:`${e}...`,indent:1}).start(),r=!1,n=o=>i=>{if(Ir(`${J_[o]||"INFO"}: ${i||e}`),o==="fail"&&(Jd=!0),o==="update"){t.text=i||e;return}r||(r=!0,t.stopAndPersist({symbol:q_[o],text:R(i||e)}))};return{succeed:n("succeed"),fail:n("fail"),warn:n("warn"),info:n("info"),neutral:n("neutral"),update:n("update"),stop:()=>{r||(r=!0,t.stop())}}}function X_(){let e=Ho.default.readdirSync(St).filter(t=>t.endsWith(".log")).map(t=>({name:t,time:Ho.default.statSync(cl.default.join(St,t)).mtime.getTime()})).sort((t,r)=>r.time-t.time);for(;e.length>=U_;)try{let t=e.pop();if(!t)break;Ho.default.removeSync(cl.default.join(St,t.name))}catch{}}function qd(e){try{let t=process.argv.slice(2).join(" ");if(/^(log|library\s+log)(\s|$)/.test(t))return;Ho.default.ensureDirSync(St),X_(),gs.unshift(`CLI Version: ${Ar()}`,`Node Version: ${process.version}`,`Platform: ${process.platform}`,`Architecture: ${process.arch}`,`Command: ${t||"N/A"}`,`Exit Code: ${e??0}`,`Memory Usage: ${Math.round(process.memoryUsage().heapUsed/1024/1024)}MB`,`Timestamp: ${new Date().toISOString()}`,...zd?[`Sync ID: ${zd}`]:[],"");let r=gs.map(pt);Ho.default.writeFileSync(Kd,r.join(`
17
+ `)),Jd&&(console.info(`
18
+ ${b} ${R("An error occurred. See logs for more information:")}`),console.info(` ${Nd} Latest log: ${Kd}`),console.info(` ${Nd} All logs: ${St}`)),(process.env.DEBUG||process.argv.includes("--verbose"))&&(console.info(`
19
+ ${L} Command completed successfully. Logs written to:`),console.info(` ${Bo} Latest log: ${Kd}`),console.info(` ${Bo} All logs: ${St}`))}catch(t){console.error("Failed to write logs:",t)}}function Uy(e,t){let r=e instanceof Error?e.stack||e.message:e,n=t?.prefix?`${t.prefix} `:"";Ir(`ERROR: ${n}${r}`)}var Ho,cl,aN,B_,St,U_,W_,H_,Kd,gs,Jd,zd,J_,q_,Vo,jy,ms,Z_,u,x=O(()=>{"use strict";Ho=D(require("fs-extra")),cl=D(require("path")),aN=require("source-map-support/register");ly();Fd();py();z();de();Gd();N();B_=is("webflow-cli"),St=B_.log;U_=My(process.env.MAX_PERSISTED_LOGS,50),W_=My(process.env.MAX_IN_MEMORY_LOGS,1e3),H_=`${ss(new Date().toISOString(),{replacement:"_"}).replace(/\./g,"_")}-debug.log`,Kd=cl.default.join(St,H_);gs=[],Jd=!1;J_={succeed:"INFO",fail:"ERROR",warn:"WARN",info:"INFO",neutral:"INFO",update:"INFO"},q_={succeed:L,fail:b,warn:he,info:Fe,neutral:" ",update:void 0};Vo=!1;process.on("uncaughtException",e=>{Vo||(Vo=!0,Ir(`UNCAUGHT EXCEPTION: ${e?.stack}`),qd(1)),Rr.displayGrouped(),Rr.stop(),process.exit(1)});process.on("unhandledRejection",e=>{Vo||(Vo=!0,Ir(`UNHANDLED REJECTION: ${e instanceof Error?e.stack:String(e)}`),qd(1)),Rr.displayGrouped(),Rr.stop(),process.exit(1)});process.on("exit",e=>{Vo||(Vo=!0,qd(e))});jy=!0,ms=e=>{let t=e.split(`
20
20
  `).map(r=>r.length?` ${r}`:r).join(`
21
- `);return Lp?(Lp=!1,`
22
- `+t):t},QD={debug:e=>{let t=Np(e);process.env.DEBUG&&console.debug(go(t))},trace:e=>{let t=Np(e);process.env.DEBUG&&console.debug(t)},dir:e=>console.dir(e,{depth:100}),info:e=>console.info(go(JD(e))),warn:e=>console.warn(go(GD(e)),fl),error:(e,t)=>{console.error(go(zD(e,t)))},success:e=>console.log(go(KD(e))),spinner:YD},l=QD});async function wn(e){process.stdout.write(`
23
- `);try{return await e()}catch(t){throw t instanceof Error&&sb.test(t.message)&&(l.debug(t.message),process.stdin.isTTY&&typeof process.stdin.setRawMode=="function"&&process.stdin.setRawMode(!1),process.exit(130)),t}}async function Ne(e){return H()?e.default??!1:wn(()=>je.confirm({...e,theme:tb}))}async function Ce(e){if(H())return"default"in e?e.default:null;let t=e.choices.map(r=>{if(!r||typeof r!="object"||je.Separator.isSeparator(r)||r.type==="separator")return r;let n=r.name??String(r.value??"");return{...r,name:` ${T(n)}`}});return wn(()=>je.select({...e,choices:t,theme:nb}))}async function ke(e){return H()?e.default!==void 0?await e.validate?.(e.default)!==!0?null:e.default:null:wn(()=>je.input({...e,theme:Vp}))}async function Gp(e){return H()?null:wn(()=>je.password({...e,theme:Vp}))}async function Oi(e){if(H()){let r=[];return await e.validate?.(r)!==!0?null:r}let t=e.choices.map(r=>{if(!r||typeof r!="object"||r.type==="separator"||je.Separator.isSeparator(r))return r;let n=r.name??String(r.value??"");return{...r,name:` ${T(n)}`}});return wn(()=>je.checkbox({...e,choices:t,theme:ob}))}async function Ri(e){if(H())return"default"in e?e.default:null;let t=(async(r,n)=>(await e.source(r,n)).map(i=>!i||typeof i!="object"||je.Separator.isSeparator(i)?i:{...i,name:` ${T(i.name??"")}`}));return wn(()=>je.search({...e,source:t,theme:ib}))}var je,tb,Vp,wo,Hp,vl,El,Jp,rb,nb,ob,ib,sb,Se=k(()=>{"use strict";je=h(require("@inquirer/prompts"));be();v();ie();tb={prefix:` ${fe("?")}`,style:{message:(e,t)=>t==="done"?`${Q(e)}
24
- `:`${Q(e)}
25
- `,answer:e=>` ${T(e)}`}},Vp={prefix:` ${fe("?")}`,style:{message:e=>`${Q(e)}
26
- `,answer:e=>T(e)}},wo=2,Hp=1,vl=(e,t)=>t==="done"?`${Q(e)}
27
- `:Q(e),El=e=>` ${T(it(e).trim())}`,Jp=e=>{let t=it(e),r=t.slice(0,wo),n=t.slice(wo+1+Hp);return fe(`${r} ${n}`)},rb=e=>{let t=it(e),r=t.slice(0,wo),n=t[wo+2],o=t.slice(wo+3+Hp);return fe(`${r} ${n} ${o}`)},nb={prefix:` ${fe("?")}`,style:{message:vl,answer:El,highlight:Jp,keysHelpTip:e=>` ${e.map(([t,r])=>`${T(t)} ${T(r)}`).join(" ")}`},icon:{cursor:` ${fe("\u23F5")}`}},ob={prefix:` ${fe("?")}`,style:{message:vl,answer:El,highlight:rb,keysHelpTip:e=>` ${e.map(([t,r])=>`${T(t)} ${T(r)}`).join(" ")}`},icon:{cursor:` ${fe("\u23F5")}`,checked:` ${P("\u25C9")}`,unchecked:` ${T("\u25EF")}`}},ib={prefix:` ${fe("?")}`,style:{message:vl,answer:El,highlight:Jp,searchTerm:e=>fe(e)},icon:{cursor:` ${fe("\u23F5")}`}},sb=/SIGINT/i});function st(){return!0}var Ar=k(()=>{"use strict"});function Lt({apiToken:e,siteId:t,directory:r}){let n=Do.resolve(r?Do.join(r,".env"):Do.join(process.cwd(),".env"));r&&!Tr.existsSync(r)&&Tr.mkdirSync(r,{recursive:!0}),Tr.existsSync(n)||Tr.writeFileSync(n,`# automatically generated at ${new Date().toISOString()}`,{encoding:"utf8"}),$i.default.config({path:n,quiet:!0}),e&&$i.default.set("WEBFLOW_API_TOKEN",e,{path:n,encrypt:!1}),t&&$i.default.set("WEBFLOW_SITE_ID",t,{path:n,encrypt:!1})}var Tr,Do,$i,Xp=k(()=>{"use strict";Tr=h(require("fs")),Do=h(require("path")),$i=h(require("@dotenvx/dotenvx"))});var d,x=k(()=>{"use strict";d=class e extends Error{prefix;skipLogging;isUserError;missingFlag;constructor(t,r){let n=t instanceof Error?t.message:String(t);super(n),this.name="CLIError",this.prefix=r?.prefix,this.skipLogging=r?.skipLogging??!1,this.isUserError=r?.isUserError??(t instanceof e?t.isUserError:!1),this.missingFlag=r?.missingFlag,t instanceof Error?(this.cause=t,this.stack=t.stack):Error.captureStackTrace&&Error.captureStackTrace(this,e)}}});function rr(){let e=ub();return Ir.default.join(e,cb)}function ub(){if(process.platform==="win32"){let r=process.env.APPDATA??Ir.default.join(xl.default.homedir(),"AppData","Roaming");return Ir.default.join(r,"webflow")}let t=process.env.XDG_CONFIG_HOME??Ir.default.join(xl.default.homedir(),".config");return Ir.default.join(t,"webflow")}function bo(){let e=rr();try{if(!tr.default.existsSync(e))return null;let t=tr.default.readFileSync(e,"utf8");return JSON.parse(t)}catch{return null}}function _l(e){let t=rr(),r=Ir.default.dirname(t);tr.default.existsSync(r)||tr.default.mkdirSync(r,{recursive:!0,mode:448}),tr.default.writeFileSync(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384})}function Cl(){let e=rr();try{tr.default.existsSync(e)&&tr.default.unlinkSync(e)}catch{}}var tr,xl,Ir,cb,kl=k(()=>{"use strict";tr=h(require("fs")),xl=h(require("os")),Ir=h(require("path")),cb="auth.json"});var vo,Sl=k(()=>{"use strict";se();vo={serverUrl:fn,timeoutMs:300*1e3}});var Qp,ef,tf,rf,db,nf,pb,of,sf=k(()=>{"use strict";Qp=require("crypto"),ef=h(require("open"));Sl();v();ot();tf=e=>{let t=new Uint8Array(e);return Qp.webcrypto.getRandomValues(t),Array.from(t,r=>r.toString(16).padStart(2,"0")).join("")},rf=({pollId:e,clientId:t,scope:r})=>`${vo.serverUrl}/oauth/webflow/initiate?pollId=${e}&clientId=${t}&scope=${encodeURIComponent(r.join(" "))}`,db=e=>`${vo.serverUrl}/oauth/webflow/poll?pollId=${e}`,nf=async e=>{let t=l.spinner("Browser opened for authentication");try{await new Promise(r=>setTimeout(r,3e3)),await(0,ef.default)(e),t.succeed()}catch{t.fail(),l.warn(`Could not automatically open browser. Please open this URL manually: ${e}`)}},pb=async e=>{let t=db(e),r=await j(t);if(!r.ok){let n=`Failed to poll for authentication status (${r.status})`;try{let o=await r.json();o&&o.error&&(n+=`: ${o.error}`)}catch{}throw new Error(n)}return r.json()},of=(e,t)=>{let r=l.spinner("Waiting");return new Promise((n,o)=>{let i=setTimeout(()=>{clearTimeout(i),clearInterval(s),o(new Error("Authentication timed out. Please try again."))},t),s=setInterval(async()=>{try{let a=await pb(e);a.status==="success"&&a.accessToken?(clearTimeout(i),clearInterval(s),r.succeed("Authentication successful! You can close the browser window."),n(a.accessToken)):a.status==="error"&&(clearTimeout(i),clearInterval(s),r.fail("Authentication failed"),o(new Error(a.error||"Authentication failed")))}catch(a){clearTimeout(i),clearInterval(s),r.fail("Authentication failed"),o(a instanceof Error?a:new Error(String(a)))}},2e3)})}});function lf(){return[...fb,...st()?["cloud_apps:read"]:[]].sort()}function Eo(){if(process.env.WEBFLOW_API_TOKEN)return process.env.WEBFLOW_API_TOKEN;let e=bo();if(e?.accessToken)return e.accessToken;let t=process.env.WEBFLOW_WORKSPACE_API_TOKEN??process.env.WEBFLOW_SITE_API_TOKEN??null;return t&&!af&&(af=!0,l.warn(`${ge} WEBFLOW_SITE_API_TOKEN / WEBFLOW_WORKSPACE_API_TOKEN are deprecated. Please use WEBFLOW_API_TOKEN instead. Run ${P("webflow auth login --force")} to update your .env file.`)),t}async function E(e){if(e?.apiToken&&!e.force)return e.apiToken;if(!e?.force){let o=Eo();if(o)return o}if(H())throw new d(`No API token found. To authenticate in CI/CD environments:
21
+ `);return jy?(jy=!1,`
22
+ `+t):t};Z_={debug:e=>{let t=Ny(e);process.env.DEBUG&&console.debug(ms(t))},trace:e=>{let t=Ny(e);process.env.DEBUG&&console.debug(t)},dir:e=>console.dir(e,{depth:100}),info:e=>console.info(ms(V_(e))),warn:e=>console.warn(ms(G_(e)),Vd),error:(e,t)=>{console.error(ms(K_(e,t)))},success:e=>console.log(ms(z_(e))),spinner:Y_},u=Z_});async function Go(e){process.stdout.write(`
23
+ `);try{return await e()}catch(t){throw t instanceof Error&&iF.test(t.message)&&(u.debug(t.message),process.stdin.isTTY&&typeof process.stdin.setRawMode=="function"&&process.stdin.setRawMode(!1),process.exit(130)),t}}async function Pe(e){return W()?e.default??!1:Go(()=>it.confirm({...e,theme:eF}))}async function Be(e){if(W())return"default"in e?e.default:null;let t=e.choices.map(r=>{if(!r||typeof r!="object"||it.Separator.isSeparator(r)||r.type==="separator")return r;let n=r.name??String(r.value??"");return{...r,name:` ${R(n)}`}});return Go(()=>it.select({...e,choices:t,theme:rF}))}async function Je(e){return W()?e.default!==void 0?await e.validate?.(e.default)!==!0?null:e.default:null:Go(()=>it.input({...e,theme:Vy}))}async function zy(e){return W()?null:Go(()=>it.password({...e,theme:Vy}))}async function fr(e){if(W()){let r=[];return await e.validate?.(r)!==!0?null:r}let t=e.choices.map(r=>{if(!r||typeof r!="object"||r.type==="separator"||it.Separator.isSeparator(r))return r;let n=r.name??String(r.value??"");return{...r,name:` ${R(n)}`}});return Go(()=>it.checkbox({...e,choices:t,theme:nF}))}async function dl(e){if(W())return"default"in e?e.default:null;let t=(async(r,n)=>(await e.source(r,n)).map(i=>!i||typeof i!="object"||it.Separator.isSeparator(i)?i:{...i,name:` ${R(i.name??"")}`}));return Go(()=>it.search({...e,source:t,theme:oF}))}var it,eF,Vy,hs,Gy,Zd,Qd,Ky,tF,rF,nF,oF,iF,Ae=O(()=>{"use strict";it=D(require("@inquirer/prompts"));pe();x();de();eF={prefix:` ${_e("?")}`,style:{message:(e,t)=>t==="done"?`${te(e)}
24
+ `:`${te(e)}
25
+ `,answer:e=>` ${R(e)}`}},Vy={prefix:` ${_e("?")}`,style:{message:e=>`${te(e)}
26
+ `,answer:e=>R(e)}},hs=2,Gy=1,Zd=(e,t)=>t==="done"?`${te(e)}
27
+ `:te(e),Qd=e=>` ${R(pt(e).trim())}`,Ky=e=>{let t=pt(e),r=t.slice(0,hs),n=t.slice(hs+1+Gy);return _e(`${r} ${n}`)},tF=e=>{let t=pt(e),r=t.slice(0,hs),n=t[hs+2],o=t.slice(hs+3+Gy);return _e(`${r} ${n} ${o}`)},rF={prefix:` ${_e("?")}`,style:{message:Zd,answer:Qd,highlight:Ky,keysHelpTip:e=>` ${e.map(([t,r])=>`${R(t)} ${R(r)}`).join(" ")}`},icon:{cursor:` ${_e("\u23F5")}`}},nF={prefix:` ${_e("?")}`,style:{message:Zd,answer:Qd,highlight:tF,keysHelpTip:e=>` ${e.map(([t,r])=>`${R(t)} ${R(r)}`).join(" ")}`},icon:{cursor:` ${_e("\u23F5")}`,checked:` ${V("\u25C9")}`,unchecked:` ${R("\u25EF")}`}},oF={prefix:` ${_e("?")}`,style:{message:Zd,answer:Qd,highlight:Ky,searchTerm:e=>_e(e)},icon:{cursor:` ${_e("\u23F5")}`}},iF=/SIGINT/i});function ct(){return!1}var Qr=O(()=>{"use strict"});function Or({apiToken:e,siteId:t,directory:r}){let n=ws.resolve(r?ws.join(r,".env"):ws.join(process.cwd(),".env"));r&&!Ln.existsSync(r)&&Ln.mkdirSync(r,{recursive:!0}),Ln.existsSync(n)||Ln.writeFileSync(n,`# automatically generated at ${new Date().toISOString()}`,{encoding:"utf8"}),pl.default.config({path:n,quiet:!0}),e&&pl.default.set("WEBFLOW_API_TOKEN",e,{path:n,encrypt:!1}),t&&pl.default.set("WEBFLOW_SITE_ID",t,{path:n,encrypt:!1})}var Ln,ws,pl,Qy=O(()=>{"use strict";Ln=D(require("fs")),ws=D(require("path")),pl=D(require("@dotenvx/dotenvx"))});var f,S=O(()=>{"use strict";f=class e extends Error{prefix;skipLogging;isUserError;missingFlag;constructor(t,r){let n=t instanceof Error?t.message:String(t);super(n),this.name="CLIError",this.prefix=r?.prefix,this.skipLogging=r?.skipLogging??!1,this.isUserError=r?.isUserError??(t instanceof e?t.isUserError:!1),this.missingFlag=r?.missingFlag,t instanceof Error?(this.cause=t,this.stack=t.stack):Error.captureStackTrace&&Error.captureStackTrace(this,e)}}});function fl(){if(process.platform==="win32"){let r=process.env.APPDATA??Ds.default.join(tp.default.homedir(),"AppData","Roaming");return Ds.default.join(r,ew)}let t=process.env.XDG_CONFIG_HOME??Ds.default.join(tp.default.homedir(),".config");return Ds.default.join(t,ew)}function tw(){return is("webflow-cli").cache}var tp,Ds,ew,ml=O(()=>{"use strict";tp=D(require("os")),Ds=D(require("path"));Fd();ew="webflow"});function tn(){let e=fl();return rp.default.join(e,lF)}function ks(){let e=tn();try{if(!en.default.existsSync(e))return null;let t=en.default.readFileSync(e,"utf8");return JSON.parse(t)}catch{return null}}function np(e){let t=tn(),r=rp.default.dirname(t);en.default.existsSync(r)||en.default.mkdirSync(r,{recursive:!0,mode:448}),en.default.writeFileSync(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384})}function op(){let e=tn();try{en.default.existsSync(e)&&en.default.unlinkSync(e)}catch{}}var en,rp,lF,ip=O(()=>{"use strict";en=D(require("fs")),rp=D(require("path"));ml();lF="auth.json"});var bs,sp=O(()=>{"use strict";ye();bs={serverUrl:Uo,timeoutMs:300*1e3}});var rw,nw,ow,iw,cF,sw,uF,aw,lw=O(()=>{"use strict";rw=require("crypto"),nw=D(require("open"));sp();x();dt();ow=e=>{let t=new Uint8Array(e);return rw.webcrypto.getRandomValues(t),Array.from(t,r=>r.toString(16).padStart(2,"0")).join("")},iw=({pollId:e,clientId:t,scope:r})=>`${bs.serverUrl}/oauth/webflow/initiate?pollId=${e}&clientId=${t}&scope=${encodeURIComponent(r.join(" "))}`,cF=e=>`${bs.serverUrl}/oauth/webflow/poll?pollId=${e}`,sw=async e=>{let t=u.spinner("Browser opened for authentication");try{await new Promise(r=>setTimeout(r,3e3)),await(0,nw.default)(e),t.succeed()}catch{t.fail(),u.warn(`Could not automatically open browser. Please open this URL manually: ${e}`)}},uF=async e=>{let t=cF(e),r=await G(t);if(!r.ok){let n=`Failed to poll for authentication status (${r.status})`;try{let o=await r.json();o&&o.error&&(n+=`: ${o.error}`)}catch{}throw new Error(n)}return r.json()},aw=(e,t)=>{let r=u.spinner("Waiting");return new Promise((n,o)=>{let i=setTimeout(()=>{clearTimeout(i),clearInterval(s),o(new Error("Authentication timed out. Please try again."))},t),s=setInterval(async()=>{try{let a=await uF(e);a.status==="success"&&a.accessToken?(clearTimeout(i),clearInterval(s),r.succeed("Authentication successful! You can close the browser window."),n(a.accessToken)):a.status==="error"&&(clearTimeout(i),clearInterval(s),r.fail("Authentication failed"),o(new Error(a.error||"Authentication failed")))}catch(a){clearTimeout(i),clearInterval(s),r.fail("Authentication failed"),o(a instanceof Error?a:new Error(String(a)))}},2e3)})}});function uw(){return[...dF,...ct()?["cloud_apps:read"]:[]].sort()}function xt(){if(process.env.WEBFLOW_API_TOKEN)return process.env.WEBFLOW_API_TOKEN;let e=ks();if(e?.accessToken)return e.accessToken;let t=process.env.WEBFLOW_WORKSPACE_API_TOKEN??process.env.WEBFLOW_SITE_API_TOKEN??null;return t&&!cw&&(cw=!0,u.warn(`${he} WEBFLOW_SITE_API_TOKEN / WEBFLOW_WORKSPACE_API_TOKEN are deprecated. Please use WEBFLOW_API_TOKEN instead. Run ${V("webflow auth login --force")} to update your .env file.`)),t}async function T(e){if(e?.apiToken&&!e.force)return e.apiToken;if(!e?.force){let o=xt();if(o)return o}if(W())throw new f(`No API token found. To authenticate in CI/CD environments:
28
28
  1. Generate a Workspace API token in your Webflow Dashboard > Apps & Integrations > Manage > Workspace API Token
29
- 2. Set it as the WEBFLOW_API_TOKEN environment variable in your CI/CD pipeline`);let t=tf(16),r=mb(),n=lf();try{let o=rf({pollId:t,clientId:r,scope:n});await nf(o);let i=await of(t,vo.timeoutMs);return _l({accessToken:i,scopes:n,createdAt:new Date().toISOString()}),l.info(`${O} Credentials saved: ${rr()}`),i}catch(o){throw new d(o)}}function mb(){return"fbab9abdbeeb35bb2554a1b83b8bd060d719f22eca26ff9119b87608c87c0074"}var fb,af,Al=k(()=>{"use strict";be();v();$();x();kl();Sl();sf();ie();Ar();fb=["assets:read","assets:write","authorized_user:read","cloud_apps:write","cms:read","cms:write","code_components:read","code_components:write","devlink_export:read","forms:read","sites:read","sites:write","workspace:read"];af=!1});function Fo(e){return process.env.WEBFLOW_SITE_ID??e.siteId??null}async function xo(e){try{let r=await new cf.WebflowClient({accessToken:e,environment:{base:`${F}/v2`,dataApi:`${F}/v2`,contentDeliveryApi:`${Ai}/v2`}}).sites.list();if(!r||typeof r!="object"||!r.sites||!Array.isArray(r.sites))throw new d("Invalid response from Webflow API");let n=r.sites.map(o=>({id:o.id,displayName:o.displayName??"",shortName:o.shortName||(o.displayName??"").toLowerCase().replace(/\s+/g,"-"),lastUpdated:o.lastUpdated??null}));return n.sort((o,i)=>o.displayName.localeCompare(i.displayName)),n}catch(t){throw new d(t,{prefix:`Failed to fetch Webflow sites. Please check your authorization.
30
- `})}}async function Tl(e){let t=e.map(n=>({name:`${n.displayName} (${n.shortName})`,value:n})),r=await Ri({message:"Search for a Webflow site:",source:n=>{if(!n)return t;let o=n.toLowerCase();return t.filter(i=>i.value.displayName.toLowerCase().includes(o)||i.value.shortName.toLowerCase().includes(o))},pageSize:15});if(!r){if(e.length===0)throw new d("No sites available for selection");return l.warn(`Auto fallback to first site: ${e[0].displayName}`),e[0]}return r}var cf,Pi=k(()=>{"use strict";cf=require("webflow-api");Se();v();se();se();x()});var Or,nr,Il=k(()=>{"use strict";x();Or=class extends d{constructor(t){super(t),this.name="NoWebflowSitesError"}},nr=class extends d{constructor(t){super(t),this.name="NoWebflowWorkspacesError"}}});async function Ee(e,t){let r=t?.site??Fo(e);if(H()&&!r)throw new d(`No site ID configured for this project.
31
- Run ${P("webflow auth login")} locally to authenticate and associate this project with a Webflow site,
32
- or provide --site and --api-token when running a CLI command`);let n=await E({apiToken:t?.apiToken,force:t?.force});if(!r||t?.force){let o=await xo(n);if(o.length===0)throw new Or("No Webflow sites found in your account. Please make sure you have at least one authorized site in your Webflow account");let i=o.length>1?await Tl(o):o[0];r=i.id;let s=pe({siteId:r});return e.siteId=s.siteId,l.info(`${O} Site ID updated in webflow.json`),{siteId:r,siteName:i.displayName,accessToken:n}}return{siteId:r,accessToken:n}}var uf=k(()=>{"use strict";ve();be();Al();Pi();x();Il();$();ie();v()});async function Ol(e){let t=new df.WebflowClient({accessToken:e,environment:{base:`${F}/v2`,dataApi:`${F}/v2`}});try{return await t.token.authorizedBy()}catch{return null}}var df,pf=k(()=>{"use strict";df=require("webflow-api");se()});var U=k(()=>{"use strict";Xp();Al();uf();Pi();Pi();kl();pf();Il()});function kb(e,t){if(e.includes("..")||Dt.isAbsolute(e))throw new Error(`Invalid file path: "${e}" - path traversal not allowed`);let r=Dt.resolve(t,e),n=Dt.resolve(t);if(!r.startsWith(n+Dt.sep)&&r!==n)throw new Error(`Invalid file path: "${e}" - resolves outside root directory`)}async function zi(e,t,r){let n=Dt.join(process.cwd(),t);r&&(0,ir.existsSync)(n)&&await(0,Gi.rm)(n,{recursive:!0,force:!0}),(0,ir.existsSync)(n)||await(0,Gi.mkdir)(n);for(let o of e){kb(o.path,n);let i=Sb(n,o.path);if(o.path.includes("/")){let s=o.path.substring(0,o.path.lastIndexOf("/"));Ab(n,s)}(0,ir.writeFileSync)(i,o.content,{flag:"w+"})}}function Sb(e,t){return Dt.join(e,...t.split("/"))}function Ab(e,t){let r=t.split("/"),n=e;for(let o of r)n=Dt.join(n,o),(0,ir.existsSync)(n)||(0,ir.mkdirSync)(n)}var ir,Gi,Dt,Vl=k(()=>{"use strict";ir=require("fs"),Gi=require("fs/promises"),Dt=h(require("path"))});function qi(e){for(let t of e??[]){let r=l[t.status]??l.info,n=Rb[t.status]??Oe;r(`
33
- ${n} ${t.content}`)}}var Rb,Gl=k(()=>{"use strict";v();$();Rb={info:Oe,warn:ge,success:O}});function Kl(e){let{manifestPath:t}=J();return(0,qf.writeFileSync)(t,JSON.stringify(e,null,2),"utf-8"),e}var qf,Zf=k(()=>{"use strict";qf=require("fs");ao()});function Zi(e,t){try{let r=ql(),n=Zl(Object.values(e)),o=t?.force;return n&&r&&!o}catch{return!1}}var Yf,Xf,ql,Zl,Yi=k(()=>{"use strict";Yf=require("path"),Xf=require("fs-extra");ql=()=>{try{return(0,Xf.existsSync)((0,Yf.join)(process.cwd(),"tsconfig.json"))}catch{return!1}},Zl=e=>e.some(t=>t.endsWith(".ts")||t.endsWith(".tsx"))});function $b(e){let{export:t,...r}=e;return t?r["devlink-export"]!=null?(Kl(r),r):(l.warn(`${ge} The 'export' key in webflow.json is deprecated. Use 'devlink-export' instead. Your configuration will be migrated automatically.`),r["devlink-export"]={...t},Kl(r),r):r}function tm(e,t){try{new RegExp(e)}catch{throw new d(`Invalid '${t}' regex '${e}' in webflow.json. Fix the value and re-run the export.`,{isUserError:!0})}}async function nm(e){e=$b(e);let t=e["devlink-export"]||{},r=!1,n=t.rootDir;n||(H()?n=Qf:(r=!0,n=await ke({message:"Enter the root directory for exported components:",default:Qf,validate:p=>!p||p.trim()===""?"Root directory is required":!0})));let o=t.ts;o===void 0&&(Nb()?o=!0:H()?o=!1:(r=!0,o=await Ne({message:"Use TypeScript?",default:!0})));let i=t.cssScopes;i===void 0&&(H()?i=em:(r=!0,i=await Ne({message:"Use DevLink style isolation (scoped wrapper + @scope)?",default:em}))),t.components&&tm(t.components,"components"),t.componentGroups&&tm(t.componentGroups,"componentGroups");let s=t.components,a=t.componentGroups;!s&&!a&&(H()?(s=Xi,a=Qi):(r=!0,await Ne({message:"Do you want to export all components?",default:!0})?(s=Xi,a=Qi):(s=await ke({message:"Enter regex pattern to filter components (e.g., 'Button|Card' for specific):",default:Xi,validate:f=>{try{return new RegExp(f),!0}catch{return"Invalid regex pattern. Please enter a valid regular expression."}}}),a=await ke({message:"Enter regex pattern to filter component groups (e.g., 'mygroup'):",default:Qi,validate:f=>{try{return new RegExp(f),!0}catch{return"Invalid regex pattern. Please enter a valid regular expression."}}})))),s=s||Xi,a=a||Qi;let c=t.relativeHrefRoot;c===void 0&&(c=Pb);let u={...t,rootDir:n,components:s,componentGroups:a,ts:o,cssScopes:i,relativeHrefRoot:c};return(!t.rootDir||t.ts===void 0||t.cssScopes===void 0||!t.components||!t.componentGroups||t.relativeHrefRoot===void 0)&&jb(u),{config:u,wasPrompted:r}}function jb(e){pe({"devlink-export":{...e}}),l.info(`${O} Devlink Export configuration updated in webflow.json`)}function Nb(){try{let e=process.cwd();if(ql())return!0;let t=["src","app","pages","components"];for(let r of t){let n=rm.join(e,r);if(es.existsSync(n)&&Zl(es.readdirSync(n)))return!0}}catch{}return!1}var es,rm,Qf,Xi,Qi,em,Pb,om=k(()=>{"use strict";es=h(require("fs")),rm=h(require("path"));Se();be();v();$();x();nl();Zf();Yi();Qf="./webflow",Xi=".*",Qi=".*",em=!0,Pb="/"});function $r(e){let t=e;for(let r=0;r<8&&t instanceof Error;r+=1){if(t.code===Xl)return!0;t=t.cause}return!1}async function am(e){if(e.ok)return;let t=await e.text().catch(()=>"");l.debug(`Server error response (HTTP ${e.status}): ${t||"<empty>"}`);let r,n;try{let o=JSON.parse(t);r=o.message,n=o.code}catch{}throw new ko(r||`Request failed (HTTP ${e.status}).`,{code:n})}async function Ql(e,t,r,n){let o=await Lb(r,n,t,e);if(!o.files||!Array.isArray(o.files))throw new d("Invalid response format from V2 API: expected 'files' array");return{files:o.files,messages:o.messages,metadata:o.metadata}}async function Lb(e,t,r,n){let{taskId:o,polling:i}=await Bb(e,t,r,n);return Mb(e,t,r,o,i)}async function Bb(e,t,r,n){let o=await(0,Yl.default)(`${F}/v2/devlink/${e}/export`,{method:"POST",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json",[sm]:t},body:JSON.stringify(n),timeout:6e4});return o.ok||await am(o),await o.json()}async function Mb(e,t,r,n,o){let{initialDelayMs:i,maxBackoffMs:s,backoffMultiplier:a,timeoutMs:c}=o,u=Date.now()+c,p=i;do{let f=await(0,Yl.default)(`${F}/v2/devlink/${e}/export/${n}`,{headers:{Authorization:`Bearer ${r}`,[sm]:t},timeout:6e4});f.ok||await am(f);let m=await f.json();if(m.status==="finished")return m.result;if(m.status==="failed")throw new ko("The export task failed. Please try again or report a bug.");await(0,im.setTimeout)(p),p=Math.min(p*a,s)}while(Date.now()<u);throw new ko(`Export task timed out after ${c}ms. Please try again.`)}var Yl,im,sm,Xl,ko,ec=k(()=>{"use strict";Yl=h(require("node-fetch")),im=require("timers/promises");v();se();x();sm="X-WF-Sync-Id",Xl="devlink_export_not_entitled",ko=class extends Error{code;constructor(t,r){super(t),this.code=r?.code}}});var lm,cm=k(()=>{"use strict";Se();v();lm=async(e,t)=>{if(!t)return;await Ne({message:`Ready to export components to ${e.rootDir}?`,default:!0})||(l.info("Export cancelled."),process.exit(0))}});function um(e,t,r){let i=new Intl.PluralRules("en-US").select(e)==="one"&&e===1?t:r||`${t}s`;return`${e} ${i}`}var dm=k(()=>{"use strict"});async function ts(e){let t=Date.now(),r;try{let{manifest:n}=J(),{siteId:o,accessToken:i}=await Ee(n,e),s=(0,pm.randomUUID)();Mp(s);let{config:a,wasPrompted:c}=await nm(n);l.info(`${O} Export configuration loaded!`),await lm(a,c);let u=b.forExport({authToken:i,siteId:o});r=l.spinner("Exporting components"),await u.sendUsage("devlink_export_start",{cssScopes:a.cssScopes,ts:a.ts,relativeHrefRoot:a.relativeHrefRoot});try{let{files:p,messages:f,metadata:m}=await Ql(a,i,o,s),g=m.exportCoverage==="full";await zi(p,a.rootDir,g),r.succeed(`${um(m.componentCount,"component")} exported to ${a.rootDir}`),qi(f);let w=Date.now()-t;await u.sendUsage("devlink_export_success",{duration:w,cssScopes:a.cssScopes,ts:a.ts,relativeHrefRoot:a.relativeHrefRoot})}catch(p){let f=p instanceof Error?p.message:String(p);throw e?.silentNotEntitled&&$r(p)?r.stop():r.fail(`Components export failed: ${f}`),await u.sendError(p instanceof Error?p:new Error(String(p)),"devlink_export_failure",{cssScopes:a.cssScopes,ts:a.ts}),p}}catch(n){if(!(e?.silentNotEntitled&&$r(n))){let i="Export failed: "+(n instanceof Error?n.message:n);r?r.fail(i):l.error(i,{prefix:`
34
- `+D})}throw new d(n,{skipLogging:!0})}}var pm,fm=k(()=>{"use strict";pm=require("crypto");om();ec();cm();W();U();ve();dm();v();x();Vl();$();Gl()});var mm={};pd(mm,{DEVLINK_EXPORT_NOT_ENTITLED_CODE:()=>Xl,exportComponents:()=>ts,isDevlinkNotEntitledError:()=>$r});var rs=k(()=>{"use strict";fm();ec()});var fd=Symbol.for("@webflow/webflow-cli/suppress-deprecation");function jy(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.code==="DEP0040"&&typeof t.message=="string"&&t.message.includes("punycode")}function Ny(e=process){if(e[fd])return;e[fd]=!0;let t=e.emit;e.emit=function(n,...o){return n==="warning"&&jy(o[0])?!1:t.call(this,n,...o)}}Ny();var Cy=require("commander");var Fy=require("commander");ie();v();var Wp=require("child_process"),Up=require("fs"),Dl=h(require("semver"));v();var bl="@webflow/webflow-cli",Cr="@webflow/data-types",Ii="@webflow/react",eb=[bl,Cr,Ii],kr=class{getInstalledDependencies(){try{let t=(0,Wp.execSync)(`npm ls ${eb.join(" ")} --depth=0 --json --silent`,{encoding:"utf-8"}),r=JSON.parse(t);return r.dependencies?Object.entries(r.dependencies).reduce((n,[o,{version:i}])=>(n[o]=i,n),{}):{}}catch(t){return l.debug(`Failed to get installed dependencies: ${t}`),{}}}getRequiredDependencies(t){let r=JSON.parse((0,Up.readFileSync)(require.resolve(`${t}/package.json`),"utf8"));return{...r.dependencies,...r.devDependencies}}checkCLIAndDataTypes(t){let r=t[Cr];if(!r)return;let o=this.getRequiredDependencies(bl)[Cr];if(!Dl.default.satisfies(r,o))throw new Error(`Version mismatch: ${bl} requires ${Cr} v${o} but found v${r}`)}checkReactAndDataTypes(t){let r=t[Cr],n=t[Ii];if(!(!r||!n)&&!Dl.default.eq(r,n))throw new Error(`Version mismatch: ${Ii} and ${Cr} must be on the same version. Found ${Ii}@${n} and ${Cr}@${r}`)}run(){let t=this.getInstalledDependencies();this.checkCLIAndDataTypes(t),this.checkReactAndDataTypes(t)}};var Zp=require("fs-extra");Se();var Yp=require("@dotenvx/dotenvx"),Sr=h(require("semver"));v();var zp=require("child_process"),Kp=require("util"),ab=(0,Kp.promisify)(zp.exec);async function er(e,t){try{let{stdout:r,stderr:n}=await ab(e,t);return{stdout:r.toString().trim(),stderr:n.toString().trim(),code:0}}catch(r){let n=r;return{stdout:n.stdout??"",stderr:n.stderr??String(n.message??""),code:n.code??1}}}be();var Fl=h(ki());$();ie();(0,Yp.config)({quiet:!0,ignore:["MISSING_ENV_FILE"]});var qp={npm:{updateCommand:"npm install",update:async e=>await er(`npm install ${e}`),getOutdated:async e=>{let{stdout:t}=await er(`npm outdated --json ${e}`);return JSON.parse(t)},lockFile:"package-lock.json",globalFlag:"--global",supported:!0},pnpm:{updateCommand:"pnpm add",update:async e=>await er(`pnpm add ${e}`),getOutdated:async e=>{let{stdout:t}=await er(`pnpm outdated --json ${e}`);return JSON.parse(t)},lockFile:"pnpm-lock.yaml",globalFlag:"--global",supported:!0},yarn:{lockFile:"yarn.lock",globalFlag:"",updateCommand:"",getOutdated:async()=>({}),update:async()=>({stdout:"",stderr:"",code:0}),supported:!1}},lb=["@webflow/webflow-cli","@webflow/data-types","@webflow/react","@webflow/emotion-utils","@webflow/styled-components-utils"],yo=class{packageManager;constructor(){this.packageManager=this.getPackagerManagerInfo()}getPackagerManagerInfo(){for(let[,t]of Object.entries(qp))if((0,Zp.existsSync)(t.lockFile))return t;return qp.npm}async listOutdatedPackages(t="local",r=lb){let{getOutdated:n,globalFlag:o}=this.packageManager,i=await n(`${t==="global"?o:""} ${r?.join(" ")}`);return Object.fromEntries(Object.entries(i).map(([s,a])=>Array.isArray(a)?[s,{current:a[0].current,latest:a[0].latest,installationType:t}]:[s,{current:a.current,latest:a.latest,installationType:t}]))}async getOutdatedPackages(){let t=await this.listOutdatedPackages();if(t["@webflow/webflow-cli"])return t;let r=await this.listOutdatedPackages("global",["@webflow/webflow-cli"]);return{...t,...r}}async showUpdatePrompt(t){let r={name:"Update all packages",value:"update-all"},n=Object.entries(t).map(([i,{current:s,latest:a}])=>({name:`${i} (${s} ${Pe} ${a})`,value:i})),o=await Oi({message:`New versions of the following ${fe("@webflow")} packages are available. Would you like to update them?`,choices:[r,...n]});return o==null?[]:o.includes("update-all")?Object.keys(t):o}showUpdateSuggestions(t){let{updateCommand:r,globalFlag:n}=this.packageManager;l.info(`${Oe} New versions of the following ${fe("@webflow")} packages are available:`),Object.entries(t).forEach(([s,{current:a,latest:c}])=>{l.info(T(` ${Si} ${s} (${a} ${Pe} ${c})`))});let o=Object.entries(t).filter(([,{installationType:s}])=>s==="local").map(([s])=>`${s}@latest`),i=Object.entries(t).filter(([,{installationType:s}])=>s==="global").map(([s])=>`${s}@latest`);l.info(`
35
- ${Pe} To update, run:`),o.length>0&&l.info(P(` ${r} ${o.join(" ")}`)),i.length>0&&l.info(P(` ${r} ${n} ${i.join(" ")}`)),l.info("")}shouldSkipUpdateChecks(){return!this.packageManager.supported||process.env.WEBFLOW_SKIP_UPDATE_CHECKS==="true"}getDistTag(){let t=Sr.prerelease(Fl.default.version);return t&&t.length>0&&typeof t[0]=="string"?t[0]:"latest"}async promptPrerelease(t){let r;try{r=l.spinner("Checking for updates (to disable, use --skip-update-check)");let{stdout:n,code:o}=await er(`npm view @webflow/webflow-cli@${t} version`);if(o!==0||!n.trim()){r.succeed("Up to date");return}let i=n.trim(),s=Fl.default.version;if(!Sr.valid(i)||!Sr.valid(s)){r.succeed("Up to date");return}if(!Sr.gt(i,s)){r.succeed("All @webflow packages are up to date");return}if(r.succeed(),!process.stdin.isTTY||H()){l.info(`${Oe} A new version of @webflow/webflow-cli@${t} is available.`);let{code:f}=await er("npm ls @webflow/webflow-cli --json"),g=(f===0?"local":"global")==="global"?" --global":"";l.info(`${Pe} To update, run: `+P(`${this.packageManager.updateCommand}${g} @webflow/webflow-cli@${t}`)+`
36
- `);return}let{code:c}=await er("npm ls @webflow/webflow-cli --json"),u=c===0?"local":"global";if(await Ne({message:`A new version of @webflow/webflow-cli@${t} is available.
37
- Would you like to update it?`,default:!1})){r=l.spinner("Updating");let f=u==="global"?` ${this.packageManager.globalFlag}`:"";try{await this.packageManager.update(`${f} @webflow/webflow-cli@${t}`),r.succeed("Updated successfully")}catch{let g=u==="global"?` ${this.packageManager.globalFlag}`:"";r.fail("Update failed. Manually run: "+P(`${this.packageManager.updateCommand}${g} @webflow/webflow-cli@${t}`))}}}catch(n){r?.fail("Failed to check for updates"),l.debug(String(n))}}async prompt(){if(this.shouldSkipUpdateChecks())return;let t=this.getDistTag();if(t!=="latest")return this.promptPrerelease(t);let r;try{r=l.spinner("Checking for updates (to disable, use --skip-update-check)");let n=await this.getOutdatedPackages();if(!(Object.keys(n).length>0)){r.succeed("All @webflow packages are up to date");return}if(r.succeed(),!process.stdin.isTTY||H()){this.showUpdateSuggestions(n);return}let s=await this.showUpdatePrompt(n);if(s.length>0){r=l.spinner("Updating");let{local:a,global:c}=s.reduce((m,g)=>(m[n[g].installationType==="global"?"global":"local"].push(g),m),{local:[],global:[]}),{update:u,globalFlag:p,updateCommand:f}=this.packageManager;try{a.length>0&&await u(`${a.map(m=>`${m}@latest`).join(" ")}`),c.length>0&&await u(`${p} ${c.map(m=>`${m}@latest`).join(" ")}`),r.succeed("Updated successfully")}catch{r.fail("Update failed. Manually run: "+P(`${f} ${s.map(g=>`${g}@latest`).join(" ")}`))}}}catch(n){r?.fail("Failed to check for updates"),l.debug(String(n))}}};be();Ar();ml();dl();Se();W();U();be();ve();v();x();$();ie();var mf=e=>{let t=e.command("auth").description("Authentication and configuration commands");t.command("login").description("Authenticate with Webflow and save credentials to .env file").option("-f, --force","Force reauthentication even if credentials exist").action(async r=>{if(H()){l.info(`${D} No-input mode enabled. Aborting OAuth authentication`);return}let{manifest:n}=J();if(!r.force&&Eo()){let i=Fo(n);l.info(`${O} Webflow credentials already exist:`),i&&l.info(` Site ID: ${i}`),l.info(" API Token: [hidden]"),l.info(`
38
- Use --force flag to reauthenticate anyway`);return}try{let o=await E({force:r.force});Lt({apiToken:o}),l.info(`
39
- You can now use other Webflow CLI commands that require authentication`)}catch(o){throw new d(o,{prefix:`${D} Authentication failed:`})}}),t.command("status").description("Show current authentication status").action(async()=>{let r=bo(),n=r?.accessToken??Eo();if(!n){l.info(`${D} Not logged in. Run ${P("webflow auth login")} to authenticate.`),process.exitCode=1;return}try{let o=await Ol(n);if(!o){l.info(`${D} Token is invalid or expired. Run ${P("webflow auth login --force")} to reauthenticate.`),process.exitCode=1;return}l.info(`${O} Logged in as ${o.firstName} ${o.lastName} (${o.email})`),r?.scopes?.length&&l.info(` Scopes: ${r.scopes.join(", ")}`),l.info(` Session: ${rr()}`)}catch(o){throw new d(o,{prefix:`${D} Failed to fetch auth status:`})}}),t.command("logout").description("Log out and remove stored credentials").action(async()=>{Cl(),l.info(`${O} Logged out. Session file removed.`),l.info(`${Pe} Run ${P("webflow auth login")} to authenticate again.`)}),t.command("telemetry").description("Manage telemetry settings for all Webflow CLI commands").option("--enable","Enable telemetry for all commands").option("--disable","Disable telemetry for all commands").option("--status","Show current telemetry status").action(async r=>{let n=Xt.getInstance();if(r.status){let s=await n.getTelemetryStatus();l.info(ff(s.enabled));return}if(r.enable){await n.setGlobalPreference(!0),l.info(Rl(!0));return}if(r.disable){await n.setGlobalPreference(!1),l.info(Rl(!1));return}let o=await n.getTelemetryStatus();if(l.info(ff(o.enabled)),H()){l.info("\u{1F4A1} When --no-input mode is enabled please provide --enable or --disable option");return}let i=await Ce({message:"What would you like to do?",choices:[{name:"Enable telemetry for all commands",value:"enable"},{name:"Disable telemetry for all commands",value:"disable"},{name:"Cancel",value:"cancel"}]});if(i==="enable"||i==="disable"){let s=i==="enable";await n.setGlobalPreference(s),l.info(Rl(s))}})},Rl=e=>`${O} Telemetry ${e?"enabled":"disabled"} for all Webflow CLI commands`,ff=e=>`${Oe} Telemetry status: ${e?`enabled ${O}`:`disabled ${D}`}`;var $f=h(require("http")),Pf=h(require("node-fetch")),jf=h(require("serve-handler")),Nf=require("fs"),Lf=h(require("path")),Bf=require("commander");var hf=h(require("archiver")),Pl=require("commander"),Li=require("fs");var gf=require("cosmiconfig"),$l=require("commander"),ji=async(e,t)=>{let r=await gb(t),n=r.config.apiVersion;return n&&typeof n!="string"&&$l.program.error('Error: The apiVersion field in webflow.json must be a string (i.e. "apiVersion": "2").'),{filepath:r.filepath,config:{publicDir:e,...r.config}}},gb=async e=>{let r=await(0,gf.cosmiconfig)("webflow",{searchPlaces:[e]}).search();return r||$l.program.error(`No ${e} file was found. Run this command within your extension folder.`),r};var wf=h(require("mime-types")),Ni=h(require("path")),hb=5*1024*1024,wb=new Set(["application/javascript","application/json","application/xml","image/png","image/jpeg","image/gif","image/svg+xml","image/webp","image/vnd.microsoft.icon","image/x-icon","video/webm","font/ttf","font/otf","font/woff","font/woff2","text/plain","text/markdown","text/html","text/css"]),yf=async(e,t,r)=>{let{config:n,filepath:o}=await ji(e,t),i=Ni.join(o,".."),s=!0,a=!1,c=p=>{let f=p.name,m=wf.default.lookup(f);return f==="index.html"&&(a=!0),f&&f.endsWith(".DS_Store")||!m?!1:wb.has(m)?p:(console.log(`Invalid file type: ${m} for file: ${f}`),s=!1,!1)},u=p=>{(0,Li.unlink)(r,f=>{f&&console.error(`Failed to delete file: ${f}`),Pl.program.error(p)})};return console.log(`Packaging the contents of the ${n.publicDir} folder into ${r}...`),new Promise(p=>{let f=(0,hf.default)("zip",{zlib:{level:9}}),m=(0,Li.createWriteStream)(Ni.join(i,r));m.on("close",()=>{p(void 0)}),f.directory(Ni.join(i,n.publicDir),!1,c),f.file(o,{name:t}),f.pipe(m),f.finalize(),f.on("warning",g=>{console.log(g)}),f.on("error",g=>{Pl.program.error(g.message)}),f.on("finish",()=>{if(!a){u("Could not find index.html in your `publicDir`, all Designer Extension code needs to be inside of `publicDir`");return}if(!s){u("Bundling failed due to invalid file types");return}if(!f.pointer()||f.pointer()===0){u("Bundling failed with no output");return}if(f.pointer()>=hb){u("Bundling failed due to the bundle exceeding 5MB");return}console.log(`${f.pointer()} total bytes written`),console.log(`Done! ${r} is ready for you to upload to your Webflow app.`)})})};var _o=h(require("path")),xt=h(require("fs/promises")),Wi=h(require("fs")),bf=require("url"),ak=require("dotenv/config"),vf=["js","cjs","json"],Ll=process.cwd(),Ef=".webflowrc",Mt=_o.extname(Wi.readdirSync(Ll).find(e=>e.includes(Ef))??"").replace(/\./g,""),Bt=_o.join(Ll,`${Ef}${Mt&&`.${Mt}`}`),Ff=Wi.existsSync(Bt),jl=class extends Error{constructor(){super(`Missing extension for .webflowrc file. The supported extensions are: ${vf.join(", ")}`)}},Bi=class extends Error{constructor(){super(`Unsupported extension for .webflowrc: ${Mt}. The supported extensions are: ${vf.join(", ")}`)}},Mi=class extends Error{constructor(t){let r=t.includes(".webflowrc"),n=t.includes("webflow.json"),o;r?o=`It seems like you don't have a .webflowrc file in your project (${t}). Make sure there is a .webflowrc file in your project root.`:n?o=`It seems like you don't have a webflow.json file in your project (${t}). Make sure there is a webflow.json file in your project root.`:o=`It seems like you don't have a config file in your project (${t}). Make sure there is a config file in your project root.`,super(o)}},Nl=class extends Error{constructor(t){super(`The following required fields are missing or undefined in your .webflowrc file: ${t}. If you're using process.env variables, make sure they're set up correctly.`)}};async function yb(e){return(await import(process.platform==="win32"&&e?.match(/[a-zA-Z]:[\\\/]/)?(0,bf.pathToFileURL)(e).href:e)).default}function Df(e,t){let r=t.filter(n=>!e[n]);if(r.length)throw new Nl(r.join(", "))}async function yn(e=[],t=!1){if(!Ff){if(t)return{};throw new Mi(Bt)}if(!Mt)throw new jl;switch(Mt){case"js":case"cjs":{await xt.access(Bt);let r=await yb(Bt);return Df(r,e),r}case"json":{let r=JSON.parse(await xt.readFile(Bt,"utf8"));return Df(r,e),r}default:throw new Bi}}function Db(e,t){if(Mt==="js"||Mt==="cjs"){let n=new RegExp(`${t}: process.env.([\\w]+),`,"gi").exec(e);if(n)return n[1]}}function bb(e,t,r){let n=Db(t,r);if(n){let o=new RegExp(`${r}: ".*?",`,"g");return e.replace(o,`${r}: process.env.${n},`)}return e}async function vb(e){let t=["authToken","host","siteId"],r=await xt.readFile(Bt,"utf-8");for(let n of t)e=bb(e,r,n);return e}async function Eb(){try{let e=_o.join(Ll,"package.json");return await xt.access(e),JSON.parse(await xt.readFile(e,"utf-8"))?.type==="module"}catch{return!1}}async function xf(e){if(!Ff)throw new Mi(Bt);let t=JSON.stringify(e,null,2);switch(Mt){case"js":case"cjs":{let r=await vb(t.replace(/"([^"]+)":/g,"$1:")),n=await Eb()&&Mt==="js"?"export default ":"module.exports = ";return xt.writeFile(Bt,n+r)}case"json":return xt.writeFile(Bt,t);default:throw new Bi}}var or=h(require("fs")),at=h(require("path"));var Co="webflow.json",_f="index.html",Cf="bundle.zip",Bl="public",Ml="extension-scaffolds",Ui="default";var kf="package.json",Sf="wf-placeholder-name",Wl=e=>JSON.stringify(e,null,2),Af=e=>{let t="\u2500".repeat(e.length+2);return"\u256D"+t+`\u256E
29
+ 2. Set it as the WEBFLOW_API_TOKEN environment variable in your CI/CD pipeline`);let t=ow(16),r=pF(),n=uw();try{let o=iw({pollId:t,clientId:r,scope:n});await sw(o);let i=await aw(t,bs.timeoutMs);return np({accessToken:i,scopes:n,createdAt:new Date().toISOString()}),u.info(`${L} Credentials saved: ${tn()}`),i}catch(o){throw new f(o)}}function pF(){return"fbab9abdbeeb35bb2554a1b83b8bd060d719f22eca26ff9119b87608c87c0074"}var dF,cw,ap=O(()=>{"use strict";pe();x();N();S();ip();sp();lw();de();Qr();dF=["assets:read","assets:write","authorized_user:read","cloud_apps:write","cms:read","cms:write","code_components:read","code_components:write","devlink_export:read","forms:read","sites:read","sites:write","workspace:read"];cw=!1});function Es(e){return process.env.WEBFLOW_SITE_ID??e.siteId??null}async function vs(e){try{let r=await new dw.WebflowClient({accessToken:e,environment:{base:`${I}/v2`,dataApi:`${I}/v2`,contentDeliveryApi:`${ll}/v2`}}).sites.list();if(!r||typeof r!="object"||!r.sites||!Array.isArray(r.sites))throw new f("Invalid response from Webflow API");let n=r.sites.map(o=>({id:o.id,displayName:o.displayName??"",shortName:o.shortName||(o.displayName??"").toLowerCase().replace(/\s+/g,"-"),lastUpdated:o.lastUpdated??null}));return n.sort((o,i)=>o.displayName.localeCompare(i.displayName)),n}catch(t){throw new f(t,{prefix:`Failed to fetch Webflow sites. Please check your authorization.
30
+ `})}}async function lp(e){let t=e.map(n=>({name:`${n.displayName} (${n.shortName})`,value:n})),r=await dl({message:"Search for a Webflow site:",source:n=>{if(!n)return t;let o=n.toLowerCase();return t.filter(i=>i.value.displayName.toLowerCase().includes(o)||i.value.shortName.toLowerCase().includes(o))},pageSize:15});if(!r){if(e.length===0)throw new f("No sites available for selection");return u.warn(`Auto fallback to first site: ${e[0].displayName}`),e[0]}return r}var dw,gl=O(()=>{"use strict";dw=require("webflow-api");Ae();x();ye();ye();S()});var Nn,rn,cp=O(()=>{"use strict";S();Nn=class extends f{constructor(t){super(t),this.name="NoWebflowSitesError"}},rn=class extends f{constructor(t){super(t),this.name="NoWebflowWorkspacesError"}}});async function Ue(e,t){let r=t?.site??Es(e);if(W()&&!r)throw new f(`No site ID configured for this project.
31
+ Run ${V("webflow auth login")} locally to authenticate and associate this project with a Webflow site,
32
+ or provide --site and --api-token when running a CLI command`);let n=await T({apiToken:t?.apiToken,force:t?.force});if(!r||t?.force){let o=await vs(n);if(o.length===0)throw new Nn("No Webflow sites found in your account. Please make sure you have at least one authorized site in your Webflow account");let i=o.length>1?await lp(o):o[0];r=i.id;let s=xe({siteId:r});return e.siteId=s.siteId,u.info(`${L} Site ID updated in webflow.json`),{siteId:r,siteName:i.displayName,accessToken:n}}return{siteId:r,accessToken:n}}var pw=O(()=>{"use strict";Me();pe();ap();gl();S();cp();N();de();x()});async function up(e){let t=new fw.WebflowClient({accessToken:e,environment:{base:`${I}/v2`,dataApi:`${I}/v2`}});try{return await t.token.authorizedBy()}catch{return null}}var fw,mw=O(()=>{"use strict";fw=require("webflow-api");ye()});var J=O(()=>{"use strict";Qy();ap();pw();gl();gl();ip();mw();cp()});function xF(e,t){if(e.includes("..")||tr.isAbsolute(e))throw new Error(`Invalid file path: "${e}" - path traversal not allowed`);let r=tr.resolve(t,e),n=tr.resolve(t);if(!r.startsWith(n+tr.sep)&&r!==n)throw new Error(`Invalid file path: "${e}" - resolves outside root directory`)}async function _l(e,t,r){let n=tr.join(process.cwd(),t);r&&(0,on.existsSync)(n)&&await(0,Cl.rm)(n,{recursive:!0,force:!0}),(0,on.existsSync)(n)||await(0,Cl.mkdir)(n);for(let o of e){xF(o.path,n);let i=CF(n,o.path);if(o.path.includes("/")){let s=o.path.substring(0,o.path.lastIndexOf("/"));_F(n,s)}(0,on.writeFileSync)(i,o.content,{flag:"w+"})}}function CF(e,t){return tr.join(e,...t.split("/"))}function _F(e,t){let r=t.split("/"),n=e;for(let o of r)n=tr.join(n,o),(0,on.existsSync)(n)||(0,on.mkdirSync)(n)}var on,Cl,tr,bp=O(()=>{"use strict";on=require("fs"),Cl=require("fs/promises"),tr=D(require("path"))});function Al(e){for(let t of e??[]){let r=u[t.status]??u.info,n=RF[t.status]??Fe;r(`
33
+ ${n} ${t.content}`)}}var RF,Sp=O(()=>{"use strict";x();N();RF={info:Fe,warn:he,success:L}});function Cp(e){let{manifestPath:t}=Z();return(0,Xw.writeFileSync)(t,JSON.stringify(e,null,2),"utf-8"),e}var Xw,Zw=O(()=>{"use strict";Xw=require("fs");as()});function Tl(e,t){try{let r=_p(),n=Fp(Object.values(e)),o=t?.force;return n&&r&&!o}catch{return!1}}var Qw,eD,_p,Fp,Rl=O(()=>{"use strict";Qw=require("path"),eD=require("fs-extra");_p=()=>{try{return(0,eD.existsSync)((0,Qw.join)(process.cwd(),"tsconfig.json"))}catch{return!1}},Fp=e=>e.some(t=>t.endsWith(".ts")||t.endsWith(".tsx"))});function IF(e){let{export:t,...r}=e;return t?r["devlink-export"]!=null?(Cp(r),r):(u.warn(`${he} The 'export' key in webflow.json is deprecated. Use 'devlink-export' instead. Your configuration will be migrated automatically.`),r["devlink-export"]={...t},Cp(r),r):r}function nD(e,t){try{new RegExp(e)}catch{throw new f(`Invalid '${t}' regex '${e}' in webflow.json. Fix the value and re-run the export.`,{isUserError:!0})}}async function iD(e){e=IF(e);let t=e["devlink-export"]||{},r=!1,n=t.rootDir;n||(W()?n=tD:(r=!0,n=await Je({message:"Enter the root directory for exported components:",default:tD,validate:d=>!d||d.trim()===""?"Root directory is required":!0})));let o=t.ts;o===void 0&&($F()?o=!0:W()?o=!1:(r=!0,o=await Pe({message:"Use TypeScript?",default:!0})));let i=t.cssScopes;i===void 0&&(W()?i=rD:(r=!0,i=await Pe({message:"Use DevLink style isolation (scoped wrapper + @scope)?",default:rD}))),t.components&&nD(t.components,"components"),t.componentGroups&&nD(t.componentGroups,"componentGroups");let s=t.components,a=t.componentGroups;!s&&!a&&(W()?(s=Il,a=Ol):(r=!0,await Pe({message:"Do you want to export all components?",default:!0})?(s=Il,a=Ol):(s=await Je({message:"Enter regex pattern to filter components (e.g., 'Button|Card' for specific):",default:Il,validate:p=>{try{return new RegExp(p),!0}catch{return"Invalid regex pattern. Please enter a valid regular expression."}}}),a=await Je({message:"Enter regex pattern to filter component groups (e.g., 'mygroup'):",default:Ol,validate:p=>{try{return new RegExp(p),!0}catch{return"Invalid regex pattern. Please enter a valid regular expression."}}})))),s=s||Il,a=a||Ol;let l=t.relativeHrefRoot;l===void 0&&(l=OF);let c={...t,rootDir:n,components:s,componentGroups:a,ts:o,cssScopes:i,relativeHrefRoot:l};return(!t.rootDir||t.ts===void 0||t.cssScopes===void 0||!t.components||!t.componentGroups||t.relativeHrefRoot===void 0)&&PF(c),{config:c,wasPrompted:r}}function PF(e){xe({"devlink-export":{...e}}),u.info(`${L} Devlink Export configuration updated in webflow.json`)}function $F(){try{let e=process.cwd();if(_p())return!0;let t=["src","app","pages","components"];for(let r of t){let n=oD.join(e,r);if(Pl.existsSync(n)&&Fp(Pl.readdirSync(n)))return!0}}catch{}return!1}var Pl,oD,tD,Il,Ol,rD,OF,sD=O(()=>{"use strict";Pl=D(require("fs")),oD=D(require("path"));Ae();pe();x();N();S();Pd();Zw();Rl();tD="./webflow",Il=".*",Ol=".*",rD=!0,OF="/"});function Mn(e){let t=e;for(let r=0;r<8&&t instanceof Error;r+=1){if(t.code===Tp)return!0;t=t.cause}return!1}async function cD(e){if(e.ok)return;let t=await e.text().catch(()=>"");u.debug(`Server error response (HTTP ${e.status}): ${t||"<empty>"}`);let r,n;try{let o=JSON.parse(t);r=o.message,n=o.code}catch{}throw new Cs(r||`Request failed (HTTP ${e.status}).`,{code:n})}async function Rp(e,t,r,n){let o=await LF(r,n,t,e);if(!o.files||!Array.isArray(o.files))throw new f("Invalid response format from V2 API: expected 'files' array");return{files:o.files,messages:o.messages,metadata:o.metadata}}async function LF(e,t,r,n){let{taskId:o,polling:i}=await NF(e,t,r,n);return jF(e,t,r,o,i)}async function NF(e,t,r,n){let o=await(0,Ap.default)(`${I}/v2/devlink/${e}/export`,{method:"POST",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json",[lD]:t},body:JSON.stringify(n),timeout:6e4});return o.ok||await cD(o),await o.json()}async function jF(e,t,r,n,o){let{initialDelayMs:i,maxBackoffMs:s,backoffMultiplier:a,timeoutMs:l}=o,c=Date.now()+l,d=i;do{let p=await(0,Ap.default)(`${I}/v2/devlink/${e}/export/${n}`,{headers:{Authorization:`Bearer ${r}`,[lD]:t},timeout:6e4});p.ok||await cD(p);let h=await p.json();if(h.status==="finished")return h.result;if(h.status==="failed")throw new Cs("The export task failed. Please try again or report a bug.");await(0,aD.setTimeout)(d),d=Math.min(d*a,s)}while(Date.now()<c);throw new Cs(`Export task timed out after ${l}ms. Please try again.`)}var Ap,aD,lD,Tp,Cs,Ip=O(()=>{"use strict";Ap=D(require("node-fetch")),aD=require("timers/promises");x();ye();S();lD="X-WF-Sync-Id",Tp="devlink_export_not_entitled",Cs=class extends Error{code;constructor(t,r){super(t),this.code=r?.code}}});var uD,dD=O(()=>{"use strict";Ae();x();uD=async(e,t)=>{if(!t)return;await Pe({message:`Ready to export components to ${e.rootDir}?`,default:!0})||(u.info("Export cancelled."),process.exit(0))}});function pD(e,t,r){let i=new Intl.PluralRules("en-US").select(e)==="one"&&e===1?t:r||`${t}s`;return`${e} ${i}`}var fD=O(()=>{"use strict"});async function $l(e){let t=Date.now(),r;try{let{manifest:n}=Z(),{siteId:o,accessToken:i}=await Ue(n,e),s=(0,mD.randomUUID)();By(s);let{config:a,wasPrompted:l}=await iD(n);u.info(`${L} Export configuration loaded!`),await uD(a,l);let c=_.forExport({authToken:i,siteId:o});r=u.spinner("Exporting components"),await c.sendUsage("devlink_export_start",{cssScopes:a.cssScopes,ts:a.ts,relativeHrefRoot:a.relativeHrefRoot});try{let{files:d,messages:p,metadata:h}=await Rp(a,i,o,s),g=h.exportCoverage==="full";await _l(d,a.rootDir,g),r.succeed(`${pD(h.componentCount,"component")} exported to ${a.rootDir}`),Al(p);let m=Date.now()-t;await c.sendUsage("devlink_export_success",{duration:m,cssScopes:a.cssScopes,ts:a.ts,relativeHrefRoot:a.relativeHrefRoot})}catch(d){let p=d instanceof Error?d.message:String(d);throw e?.silentNotEntitled&&Mn(d)?r.stop():r.fail(`Components export failed: ${p}`),await c.sendError(d instanceof Error?d:new Error(String(d)),"devlink_export_failure",{cssScopes:a.cssScopes,ts:a.ts}),d}}catch(n){if(!(e?.silentNotEntitled&&Mn(n))){let i="Export failed: "+(n instanceof Error?n.message:n);r?r.fail(i):u.error(i,{prefix:`
34
+ `+b})}throw new f(n,{skipLogging:!0})}}var mD,gD=O(()=>{"use strict";mD=require("crypto");sD();Ip();dD();z();J();Me();fD();x();S();bp();N();Sp()});var hD={};uh(hD,{DEVLINK_EXPORT_NOT_ENTITLED_CODE:()=>Tp,exportComponents:()=>$l,isDevlinkNotEntitledError:()=>Mn});var Ll=O(()=>{"use strict";gD();Ip()});var dh=Symbol.for("@webflow/webflow-cli/suppress-deprecation");function OC(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.code==="DEP0040"&&typeof t.message=="string"&&t.message.includes("punycode")}function PC(e=process){if(e[dh])return;e[dh]=!0;let t=e.emit;e.emit=function(n,...o){return n==="warning"&&OC(o[0])?!1:t.call(this,n,...o)}}PC();var SC=D(require("fs")),xC=require("commander");var bC=require("commander");de();x();var Wy=require("child_process"),Hy=require("fs"),Yd=D(require("semver"));x();var Xd="@webflow/webflow-cli",On="@webflow/data-types",ul="@webflow/react",Q_=[Xd,On,ul],Pn=class{getInstalledDependencies(){try{let t=(0,Wy.execSync)(`npm ls ${Q_.join(" ")} --depth=0 --json --silent`,{encoding:"utf-8"}),r=JSON.parse(t);return r.dependencies?Object.entries(r.dependencies).reduce((n,[o,{version:i}])=>(n[o]=i,n),{}):{}}catch(t){return u.debug(`Failed to get installed dependencies: ${t}`),{}}}getRequiredDependencies(t){let r=JSON.parse((0,Hy.readFileSync)(require.resolve(`${t}/package.json`),"utf8"));return{...r.dependencies,...r.devDependencies}}checkCLIAndDataTypes(t){let r=t[On];if(!r)return;let o=this.getRequiredDependencies(Xd)[On];if(!Yd.default.satisfies(r,o))throw new Error(`Version mismatch: ${Xd} requires ${On} v${o} but found v${r}`)}checkReactAndDataTypes(t){let r=t[On],n=t[ul];if(!(!r||!n)&&!Yd.default.eq(r,n))throw new Error(`Version mismatch: ${ul} and ${On} must be on the same version. Found ${ul}@${n} and ${On}@${r}`)}run(){let t=this.getInstalledDependencies();this.checkCLIAndDataTypes(t),this.checkReactAndDataTypes(t)}};var Xy=require("fs-extra");Ae();var Zy=require("@dotenvx/dotenvx"),$n=D(require("semver"));x();var Jy=require("child_process"),qy=require("util"),sF=(0,qy.promisify)(Jy.exec);async function Zr(e,t){try{let{stdout:r,stderr:n}=await sF(e,t);return{stdout:r.toString().trim(),stderr:n.toString().trim(),code:0}}catch(r){let n=r;return{stdout:n.stdout??"",stderr:n.stderr??String(n.message??""),code:n.code??1}}}pe();var ep=D(sl());N();de();(0,Zy.config)({quiet:!0,ignore:["MISSING_ENV_FILE"]});var Yy={npm:{updateCommand:"npm install",update:async e=>await Zr(`npm install ${e}`),getOutdated:async e=>{let{stdout:t}=await Zr(`npm outdated --json ${e}`);return JSON.parse(t)},lockFile:"package-lock.json",globalFlag:"--global",supported:!0},pnpm:{updateCommand:"pnpm add",update:async e=>await Zr(`pnpm add ${e}`),getOutdated:async e=>{let{stdout:t}=await Zr(`pnpm outdated --json ${e}`);return JSON.parse(t)},lockFile:"pnpm-lock.yaml",globalFlag:"--global",supported:!0},yarn:{lockFile:"yarn.lock",globalFlag:"",updateCommand:"",getOutdated:async()=>({}),update:async()=>({stdout:"",stderr:"",code:0}),supported:!1}},aF=["@webflow/webflow-cli","@webflow/data-types","@webflow/react","@webflow/emotion-utils","@webflow/styled-components-utils"],ys=class{packageManager;constructor(){this.packageManager=this.getPackagerManagerInfo()}getPackagerManagerInfo(){for(let[,t]of Object.entries(Yy))if((0,Xy.existsSync)(t.lockFile))return t;return Yy.npm}async listOutdatedPackages(t="local",r=aF){let{getOutdated:n,globalFlag:o}=this.packageManager,i=await n(`${t==="global"?o:""} ${r?.join(" ")}`);return Object.fromEntries(Object.entries(i).map(([s,a])=>Array.isArray(a)?[s,{current:a[0].current,latest:a[0].latest,installationType:t}]:[s,{current:a.current,latest:a.latest,installationType:t}]))}async getOutdatedPackages(){let t=await this.listOutdatedPackages();if(t["@webflow/webflow-cli"])return t;let r=await this.listOutdatedPackages("global",["@webflow/webflow-cli"]);return{...t,...r}}async showUpdatePrompt(t){let r={name:"Update all packages",value:"update-all"},n=Object.entries(t).map(([i,{current:s,latest:a}])=>({name:`${i} (${s} ${ot} ${a})`,value:i})),o=await fr({message:`New versions of the following ${_e("@webflow")} packages are available. Would you like to update them?`,choices:[r,...n]});return o==null?[]:o.includes("update-all")?Object.keys(t):o}showUpdateSuggestions(t){let{updateCommand:r,globalFlag:n}=this.packageManager;u.info(`${Fe} New versions of the following ${_e("@webflow")} packages are available:`),Object.entries(t).forEach(([s,{current:a,latest:l}])=>{u.info(R(` ${al} ${s} (${a} ${ot} ${l})`))});let o=Object.entries(t).filter(([,{installationType:s}])=>s==="local").map(([s])=>`${s}@latest`),i=Object.entries(t).filter(([,{installationType:s}])=>s==="global").map(([s])=>`${s}@latest`);u.info(`
35
+ ${ot} To update, run:`),o.length>0&&u.info(V(` ${r} ${o.join(" ")}`)),i.length>0&&u.info(V(` ${r} ${n} ${i.join(" ")}`)),u.info("")}shouldSkipUpdateChecks(){return!this.packageManager.supported||process.env.WEBFLOW_SKIP_UPDATE_CHECKS==="true"}getDistTag(){let t=$n.prerelease(ep.default.version);return t&&t.length>0&&typeof t[0]=="string"?t[0]:"latest"}async promptPrerelease(t){let r;try{r=u.spinner("Checking for updates (to disable, use --skip-update-check)");let{stdout:n,code:o}=await Zr(`npm view @webflow/webflow-cli@${t} version`);if(o!==0||!n.trim()){r.succeed("Up to date");return}let i=n.trim(),s=ep.default.version;if(!$n.valid(i)||!$n.valid(s)){r.succeed("Up to date");return}if(!$n.gt(i,s)){r.succeed("All @webflow packages are up to date");return}if(r.succeed(),!process.stdin.isTTY||W()){u.info(`${Fe} A new version of @webflow/webflow-cli@${t} is available.`);let{code:p}=await Zr("npm ls @webflow/webflow-cli --json"),g=(p===0?"local":"global")==="global"?" --global":"";u.info(`${ot} To update, run: `+V(`${this.packageManager.updateCommand}${g} @webflow/webflow-cli@${t}`)+`
36
+ `);return}let{code:l}=await Zr("npm ls @webflow/webflow-cli --json"),c=l===0?"local":"global";if(await Pe({message:`A new version of @webflow/webflow-cli@${t} is available.
37
+ Would you like to update it?`,default:!1})){r=u.spinner("Updating");let p=c==="global"?` ${this.packageManager.globalFlag}`:"";try{await this.packageManager.update(`${p} @webflow/webflow-cli@${t}`),r.succeed("Updated successfully")}catch{let g=c==="global"?` ${this.packageManager.globalFlag}`:"";r.fail("Update failed. Manually run: "+V(`${this.packageManager.updateCommand}${g} @webflow/webflow-cli@${t}`))}}}catch(n){r?.fail("Failed to check for updates"),u.debug(String(n))}}async prompt(){if(this.shouldSkipUpdateChecks())return;let t=this.getDistTag();if(t!=="latest")return this.promptPrerelease(t);let r;try{r=u.spinner("Checking for updates (to disable, use --skip-update-check)");let n=await this.getOutdatedPackages();if(!(Object.keys(n).length>0)){r.succeed("All @webflow packages are up to date");return}if(r.succeed(),!process.stdin.isTTY||W()){this.showUpdateSuggestions(n);return}let s=await this.showUpdatePrompt(n);if(s.length>0){r=u.spinner("Updating");let{local:a,global:l}=s.reduce((h,g)=>(h[n[g].installationType==="global"?"global":"local"].push(g),h),{local:[],global:[]}),{update:c,globalFlag:d,updateCommand:p}=this.packageManager;try{a.length>0&&await c(`${a.map(h=>`${h}@latest`).join(" ")}`),l.length>0&&await c(`${d} ${l.map(h=>`${h}@latest`).join(" ")}`),r.succeed("Updated successfully")}catch{r.fail("Update failed. Manually run: "+V(`${p} ${s.map(g=>`${g}@latest`).join(" ")}`))}}}catch(n){r?.fail("Failed to check for updates"),u.debug(String(n))}}};pe();Qr();Gd();Wd();Ae();z();J();pe();Me();x();S();N();de();var hw=e=>{let t=e.command("auth").description("Authentication and configuration commands");t.command("login").description("Authenticate with Webflow and save credentials to .env file").option("-f, --force","Force reauthentication even if credentials exist").action(async r=>{if(W()){u.info(`${b} No-input mode enabled. Aborting OAuth authentication`);return}let{manifest:n}=Z();if(!r.force&&xt()){let i=Es(n);u.info(`${L} Webflow credentials already exist:`),i&&u.info(` Site ID: ${i}`),u.info(" API Token: [hidden]"),u.info(`
38
+ Use --force flag to reauthenticate anyway`);return}try{let o=await T({force:r.force});Or({apiToken:o}),u.info(`
39
+ You can now use other Webflow CLI commands that require authentication`)}catch(o){throw new f(o,{prefix:`${b} Authentication failed:`})}}),t.command("status").description("Show current authentication status").action(async()=>{let r=ks(),n=r?.accessToken??xt();if(!n){u.info(`${b} Not logged in. Run ${V("webflow auth login")} to authenticate.`),process.exitCode=1;return}try{let o=await up(n);if(!o){u.info(`${b} Token is invalid or expired. Run ${V("webflow auth login --force")} to reauthenticate.`),process.exitCode=1;return}u.info(`${L} Logged in as ${o.firstName} ${o.lastName} (${o.email})`),r?.scopes?.length&&u.info(` Scopes: ${r.scopes.join(", ")}`),u.info(` Session: ${tn()}`)}catch(o){throw new f(o,{prefix:`${b} Failed to fetch auth status:`})}}),t.command("logout").description("Log out and remove stored credentials").action(async()=>{op(),u.info(`${L} Logged out. Session file removed.`),u.info(`${ot} Run ${V("webflow auth login")} to authenticate again.`)}),t.command("telemetry").description("Manage telemetry settings for all Webflow CLI commands").option("--enable","Enable telemetry for all commands").option("--disable","Disable telemetry for all commands").option("--status","Show current telemetry status").action(async r=>{let n=Xr.getInstance();if(r.status){let s=await n.getTelemetryStatus();u.info(gw(s.enabled));return}if(r.enable){await n.setGlobalPreference(!0),u.info(dp(!0));return}if(r.disable){await n.setGlobalPreference(!1),u.info(dp(!1));return}let o=await n.getTelemetryStatus();if(u.info(gw(o.enabled)),W()){u.info("\u{1F4A1} When --no-input mode is enabled please provide --enable or --disable option");return}let i=await Be({message:"What would you like to do?",choices:[{name:"Enable telemetry for all commands",value:"enable"},{name:"Disable telemetry for all commands",value:"disable"},{name:"Cancel",value:"cancel"}]});if(i==="enable"||i==="disable"){let s=i==="enable";await n.setGlobalPreference(s),u.info(dp(s))}})},dp=e=>`${L} Telemetry ${e?"enabled":"disabled"} for all Webflow CLI commands`,gw=e=>`${Fe} Telemetry status: ${e?`enabled ${L}`:`disabled ${b}`}`;var Lw=D(require("http")),Nw=D(require("node-fetch")),jw=D(require("serve-handler")),Mw=require("fs"),Bw=D(require("path")),Uw=require("commander");var ww=D(require("archiver")),fp=require("commander"),wl=require("fs");var yw=require("cosmiconfig"),pp=require("commander"),hl=async(e,t)=>{let r=await fF(t),n=r.config.apiVersion;return n&&typeof n!="string"&&pp.program.error('Error: The apiVersion field in webflow.json must be a string (i.e. "apiVersion": "2").'),{filepath:r.filepath,config:{publicDir:e,...r.config}}},fF=async e=>{let r=await(0,yw.cosmiconfig)("webflow",{searchPlaces:[e]}).search();return r||pp.program.error(`No ${e} file was found. Run this command within your extension folder.`),r};var Dw=D(require("mime-types")),yl=D(require("path")),mF=5*1024*1024,gF=new Set(["application/javascript","application/json","application/xml","image/png","image/jpeg","image/gif","image/svg+xml","image/webp","image/vnd.microsoft.icon","image/x-icon","video/webm","font/ttf","font/otf","font/woff","font/woff2","text/plain","text/markdown","text/html","text/css"]),kw=async(e,t,r)=>{let{config:n,filepath:o}=await hl(e,t),i=yl.join(o,".."),s=!0,a=!1,l=d=>{let p=d.name,h=Dw.default.lookup(p);return p==="index.html"&&(a=!0),p&&p.endsWith(".DS_Store")||!h?!1:gF.has(h)?d:(console.log(`Invalid file type: ${h} for file: ${p}`),s=!1,!1)},c=d=>{(0,wl.unlink)(r,p=>{p&&console.error(`Failed to delete file: ${p}`),fp.program.error(d)})};return console.log(`Packaging the contents of the ${n.publicDir} folder into ${r}...`),new Promise(d=>{let p=(0,ww.default)("zip",{zlib:{level:9}}),h=(0,wl.createWriteStream)(yl.join(i,r));h.on("close",()=>{d(void 0)}),p.directory(yl.join(i,n.publicDir),!1,l),p.file(o,{name:t}),p.pipe(h),p.finalize(),p.on("warning",g=>{console.log(g)}),p.on("error",g=>{fp.program.error(g.message)}),p.on("finish",()=>{if(!a){c("Could not find index.html in your `publicDir`, all Designer Extension code needs to be inside of `publicDir`");return}if(!s){c("Bundling failed due to invalid file types");return}if(!p.pointer()||p.pointer()===0){c("Bundling failed with no output");return}if(p.pointer()>=mF){c("Bundling failed due to the bundle exceeding 5MB");return}console.log(`${p.pointer()} total bytes written`),console.log(`Done! ${r} is ready for you to upload to your Webflow app.`)})})};var Ss=D(require("path")),mr=D(require("fs/promises")),bl=D(require("fs")),Ew=require("url"),G1=require("dotenv/config"),vw=["js","cjs","json"],hp=process.cwd(),Sw=".webflowrc",$r=Ss.extname(bl.readdirSync(hp).find(e=>e.includes(Sw))??"").replace(/\./g,""),Pr=Ss.join(hp,`${Sw}${$r&&`.${$r}`}`),xw=bl.existsSync(Pr),mp=class extends Error{constructor(){super(`Missing extension for .webflowrc file. The supported extensions are: ${vw.join(", ")}`)}},Dl=class extends Error{constructor(){super(`Unsupported extension for .webflowrc: ${$r}. The supported extensions are: ${vw.join(", ")}`)}},kl=class extends Error{constructor(t){let r=t.includes(".webflowrc"),n=t.includes("webflow.json"),o;r?o=`It seems like you don't have a .webflowrc file in your project (${t}). Make sure there is a .webflowrc file in your project root.`:n?o=`It seems like you don't have a webflow.json file in your project (${t}). Make sure there is a webflow.json file in your project root.`:o=`It seems like you don't have a config file in your project (${t}). Make sure there is a config file in your project root.`,super(o)}},gp=class extends Error{constructor(t){super(`The following required fields are missing or undefined in your .webflowrc file: ${t}. If you're using process.env variables, make sure they're set up correctly.`)}};async function hF(e){return(await import(process.platform==="win32"&&e?.match(/[a-zA-Z]:[\\\/]/)?(0,Ew.pathToFileURL)(e).href:e)).default}function bw(e,t){let r=t.filter(n=>!e[n]);if(r.length)throw new gp(r.join(", "))}async function Ko(e=[],t=!1){if(!xw){if(t)return{};throw new kl(Pr)}if(!$r)throw new mp;switch($r){case"js":case"cjs":{await mr.access(Pr);let r=await hF(Pr);return bw(r,e),r}case"json":{let r=JSON.parse(await mr.readFile(Pr,"utf8"));return bw(r,e),r}default:throw new Dl}}function yF(e,t){if($r==="js"||$r==="cjs"){let n=new RegExp(`${t}: process.env.([\\w]+),`,"gi").exec(e);if(n)return n[1]}}function wF(e,t,r){let n=yF(t,r);if(n){let o=new RegExp(`${r}: ".*?",`,"g");return e.replace(o,`${r}: process.env.${n},`)}return e}async function DF(e){let t=["authToken","host","siteId"],r=await mr.readFile(Pr,"utf-8");for(let n of t)e=wF(e,r,n);return e}async function kF(){try{let e=Ss.join(hp,"package.json");return await mr.access(e),JSON.parse(await mr.readFile(e,"utf-8"))?.type==="module"}catch{return!1}}async function Cw(e){if(!xw)throw new kl(Pr);let t=JSON.stringify(e,null,2);switch($r){case"js":case"cjs":{let r=await DF(t.replace(/"([^"]+)":/g,"$1:")),n=await kF()&&$r==="js"?"export default ":"module.exports = ";return mr.writeFile(Pr,n+r)}case"json":return mr.writeFile(Pr,t);default:throw new Dl}}var nn=D(require("fs")),Mt=D(require("path"));var xs="webflow.json",_w="index.html",Fw="bundle.zip",yp="public",wp="extension-scaffolds",El="default";var Aw="package.json",Tw="wf-placeholder-name",Dp=e=>JSON.stringify(e,null,2),Rw=e=>{let t="\u2500".repeat(e.length+2);return"\u256D"+t+`\u256E
40
40
  \u2502 `+e+` \u2502
41
- \u2570`+t+"\u256F"};var Tf=async(e,t="./",r=Ui,n)=>{let o=n[r];try{for(let i of o){let s=at.join(t,i),a=_b(s,r,e);if(i.includes(kf)||i.includes(Co))await xb(i,a,e);else{let c=await or.promises.readFile(i);await Rf(a,c)}}}catch(i){console.error("Error writing file, ",i)}},If=async()=>{let e={},t=at.resolve(__dirname),r=at.join(t,Ml),n=await or.promises.readdir(r);for(let o of n){let i=at.join(r,o),s=await Of(i);e[o]=s}return e},Of=async e=>{let t=[];try{let r=await or.promises.readdir(e);for(let n of r){let o=at.join(e,n);if((await or.promises.stat(o)).isDirectory()){let s=await Of(o);t.push(...s)}else t.push(o)}}catch(r){console.error(`Error reading ${at}, `,r)}return t},Rf=async(e,t)=>{try{await or.promises.mkdir(at.dirname(e),{recursive:!0}),await or.promises.writeFile(e,t)}catch(r){console.error("Error writing file ",r)}},xb=async(e,t,r)=>or.promises.readFile(e,"utf8").then(async n=>{let o=n.replace(Sf,r);await Rf(t,o)}),_b=(e,t,r)=>{let n=at.join(Ml,t),o=e.indexOf(n);if(o!==-1){let i=e.substring(o+n.length+1);return at.join(r,i)}return""};var Vi=async()=>await If(),Mf=async()=>{let e=await Vi(),t=Object.keys(e).join(", ");console.log(`Your available templates are: ${t}`),console.log('\u{1F4A1} Syntax: "webflow extension init projectName templateName"'),console.log('\u{1F31F} Example: "webflow extension init my-first-extension react"')},Wf=async(e,t=Ui)=>{let r=`./${e}`;console.log(`Scaffolding your new extension named: ${e}...`);let n=await Vi();await Tf(e,r,t,n),console.log(`Done! Check out ${r}/README.md for steps on how to develop your extension.`)},Uf=()=>yf(Bl,Co,Cf),Vf=async e=>{let{config:t,filepath:r}=await ji(Bl,Co),n=Lf.join(r,"..",t.publicDir,_f),i=(await yn([],!0)).extensionTemplateDomain||"webflow-ext.com",s=t.apiVersion==="2"?"template/v2":"template",a=Object.keys(t.featureFlags||{}).map(g=>t.featureFlags?.[g]===!0?`ff_on=${g}`:`ff_off=${g}`).join("&"),c=a?`&${a}`:"",p=await(await(0,Pf.default)(`https://${i}/${s}?name=${t.name}${c}`)).text(),f=new $f.Server((g,w)=>{if(g.url==="/"){Nf.promises.readFile(n,{encoding:"utf-8"}).catch(I=>{Bf.program.error(I.message)}).then(I=>{let C=p.replace("{{ui}}",I);return w.writeHead(200,{"Content-Length":Buffer.byteLength(C),"Content-Type":"text/html"}),w.end(C)});return}if(g.url==="/__webflow")return w.writeHead(200,{"Content-Length":Buffer.byteLength(Wl(t)),"Content-Type":"application/json","Access-Control-Allow-Origin":"*","Access-Control-Allow-Headers":"*"}),w.end(Wl(t));(0,jf.default)(g,w,{public:t.publicDir,cleanUrls:!1,directoryListing:!1})}),m=Cb(e);f.listen(m),console.log(Af(`Serving your extension at http://localhost:${m}`)+`
42
- `)},Cb=e=>{if(e){let t=parseInt(e,10);return isNaN(t)?(console.log("Invalid port number provided. Using the default port "+1337),1337):t}return 1337};Se();x();var Hf=e=>{let t=e.command("extension").description("CLI for developing Designer Extensions.");t.command("list").description("Get list of project templates that can be used for `init`").action(Mf),t.command("init").description("Bootstrap a Designer Extension.").argument("[projectName]","What is your Designer Extension's name?").argument("[scaffoldName]","Which project template do you want to use?").action(async(r,n)=>{let o=await Vi(),i=Object.keys(o),s=await ke({message:"What would you like to name your Designer Extension?",default:r,validate:c=>c.trim()===""?"The Designer Extension name cannot be empty.":!0});if(s===null)throw new d("When --no-input mode is enabled please provide the [projectName] argument.");let a=await Ce({message:"Which project template would you like to use?",choices:i.map(c=>({name:c,value:c})),default:n||"default"});await Wf(s,a)}),t.command("bundle").description("Prepare package that can be uploaded to Webflow.").action(Uf),t.command("serve").description("Serve your extension locally.").argument("[port]","The port to serve your extension on").action(Vf)};var zl=h(require("process"));v();se();ve();var Gf=h(require("fs"));x();async function Ji(e){let{authToken:t,siteId:r}=e||{},{path:n,isUserDefined:o}=xr(),i=Gf.existsSync(n),s=!1;try{let{manifest:a}=J();s=!0,o&&l.info(`Using manifest file: ${n}`);try{let c=lo(a,"devlink");if(!t||!r)throw new Error(`Missing Site ID or API token. Make sure you have WEBFLOW_API_TOKEN and WEBFLOW_SITE_ID set in your environment variables, or pass them as arguments --site and --api-token.
41
+ \u2570`+t+"\u256F"};var Iw=async(e,t="./",r=El,n)=>{let o=n[r];try{for(let i of o){let s=Mt.join(t,i),a=vF(s,r,e);if(i.includes(Aw)||i.includes(xs))await EF(i,a,e);else{let l=await nn.promises.readFile(i);await $w(a,l)}}}catch(i){console.error("Error writing file, ",i)}},Ow=async()=>{let e={},t=Mt.resolve(__dirname),r=Mt.join(t,wp),n=await nn.promises.readdir(r);for(let o of n){let i=Mt.join(r,o),s=await Pw(i);e[o]=s}return e},Pw=async e=>{let t=[];try{let r=await nn.promises.readdir(e);for(let n of r){let o=Mt.join(e,n);if((await nn.promises.stat(o)).isDirectory()){let s=await Pw(o);t.push(...s)}else t.push(o)}}catch(r){console.error(`Error reading ${Mt}, `,r)}return t},$w=async(e,t)=>{try{await nn.promises.mkdir(Mt.dirname(e),{recursive:!0}),await nn.promises.writeFile(e,t)}catch(r){console.error("Error writing file ",r)}},EF=async(e,t,r)=>nn.promises.readFile(e,"utf8").then(async n=>{let o=n.replace(Tw,r);await $w(t,o)}),vF=(e,t,r)=>{let n=Mt.join(wp,t),o=e.indexOf(n);if(o!==-1){let i=e.substring(o+n.length+1);return Mt.join(r,i)}return""};var vl=async()=>await Ow(),Ww=async()=>{let e=await vl(),t=Object.keys(e).join(", ");console.log(`Your available templates are: ${t}`),console.log('\u{1F4A1} Syntax: "webflow extension init projectName templateName"'),console.log('\u{1F31F} Example: "webflow extension init my-first-extension react"')},Hw=async(e,t=El)=>{let r=`./${e}`;console.log(`Scaffolding your new extension named: ${e}...`);let n=await vl();await Iw(e,r,t,n),console.log(`Done! Check out ${r}/README.md for steps on how to develop your extension.`)},Vw=()=>kw(yp,xs,Fw),Gw=async e=>{let{config:t,filepath:r}=await hl(yp,xs),n=Bw.join(r,"..",t.publicDir,_w),i=(await Ko([],!0)).extensionTemplateDomain||"webflow-ext.com",s=t.apiVersion==="2"?"template/v2":"template",a=Object.keys(t.featureFlags||{}).map(g=>t.featureFlags?.[g]===!0?`ff_on=${g}`:`ff_off=${g}`).join("&"),l=a?`&${a}`:"",d=await(await(0,Nw.default)(`https://${i}/${s}?name=${t.name}${l}`)).text(),p=new Lw.Server((g,m)=>{if(g.url==="/"){Mw.promises.readFile(n,{encoding:"utf-8"}).catch(w=>{Uw.program.error(w.message)}).then(w=>{let k=d.replace("{{ui}}",w);return m.writeHead(200,{"Content-Length":Buffer.byteLength(k),"Content-Type":"text/html"}),m.end(k)});return}if(g.url==="/__webflow")return m.writeHead(200,{"Content-Length":Buffer.byteLength(Dp(t)),"Content-Type":"application/json","Access-Control-Allow-Origin":"*","Access-Control-Allow-Headers":"*"}),m.end(Dp(t));(0,jw.default)(g,m,{public:t.publicDir,cleanUrls:!1,directoryListing:!1})}),h=SF(e);p.listen(h),console.log(Rw(`Serving your extension at http://localhost:${h}`)+`
42
+ `)},SF=e=>{if(e){let t=parseInt(e,10);return isNaN(t)?(console.log("Invalid port number provided. Using the default port "+1337),1337):t}return 1337};Ae();S();var Kw=e=>{let t=e.command("extension").description("CLI for developing Designer Extensions.");t.command("list").description("Get list of project templates that can be used for `init`").action(Ww),t.command("init").description("Bootstrap a Designer Extension.").argument("[projectName]","What is your Designer Extension's name?").argument("[scaffoldName]","Which project template do you want to use?").action(async(r,n)=>{let o=await vl(),i=Object.keys(o),s=await Je({message:"What would you like to name your Designer Extension?",default:r,validate:l=>l.trim()===""?"The Designer Extension name cannot be empty.":!0});if(s===null)throw new f("When --no-input mode is enabled please provide the [projectName] argument.");let a=await Be({message:"Which project template would you like to use?",choices:i.map(l=>({name:l,value:l})),default:n||"default"});await Hw(s,a)}),t.command("bundle").description("Prepare package that can be uploaded to Webflow.").action(Vw),t.command("serve").description("Serve your extension locally.").argument("[port]","The port to serve your extension on").action(Gw)};var xp=D(require("process"));x();ye();Me();var Jw=D(require("fs"));S();async function xl(e){let{authToken:t,siteId:r}=e||{},{path:n,isUserDefined:o}=In(),i=Jw.existsSync(n),s=!1;try{let{manifest:a}=Z();s=!0,o&&u.info(`Using manifest file: ${n}`);try{let l=ls(a,"devlink");if(!t||!r)throw new Error(`Missing Site ID or API token. Make sure you have WEBFLOW_API_TOKEN and WEBFLOW_SITE_ID set in your environment variables, or pass them as arguments --site and --api-token.
43
43
 
44
44
  To set up your credentials, run:
45
- webflow auth login`);return Jf(c?.relativeHrefRoot),{...c,host:F,authToken:t,siteId:r,cssModules:!!c?.cssModules,components:Hi(c?.components),fileExtensions:c?.fileExtensions,...e}}catch(c){throw new d(c,{prefix:`Failed to read devlink config from manifest file: ${n}
46
- `})}}catch(a){if(o||i||s){let c=o?`The manifest file specified via --manifest flag was not found or is invalid: ${n}
45
+ webflow auth login`);return zw(l?.relativeHrefRoot),{...l,host:I,authToken:t,siteId:r,cssModules:!!l?.cssModules,components:Sl(l?.components),fileExtensions:l?.fileExtensions,...e}}catch(l){throw new f(l,{prefix:`Failed to read devlink config from manifest file: ${n}
46
+ `})}}catch(a){if(o||i||s){let l=o?`The manifest file specified via --manifest flag was not found or is invalid: ${n}
47
47
  `:`Your manifest file exists but is invalid or missing required properties: ${n}
48
- `;throw new d(a,{prefix:c})}}try{let a=[];t||a.push("authToken"),r||a.push("siteId");let c=await yn(a);return Jf(c?.relativeHrefRoot),{...c,host:c.host||F,cssModules:!!c?.cssModules,components:Hi(c?.components),fileExtensions:c?.fileExtensions,...e}}catch(a){throw a instanceof Error&&a.message.includes(".webflowrc")&&(a.message=`No configuration file found. Please create either:
48
+ `;throw new f(a,{prefix:l})}}try{let a=[];t||a.push("authToken"),r||a.push("siteId");let l=await Ko(a);return zw(l?.relativeHrefRoot),{...l,host:l.host||I,cssModules:!!l?.cssModules,components:Sl(l?.components),fileExtensions:l?.fileExtensions,...e}}catch(a){throw a instanceof Error&&a.message.includes(".webflowrc")&&(a.message=`No configuration file found. Please create either:
49
49
  - webflow.json with a "devlink" section, or
50
50
  - .webflowrc file
51
- in your project root.`),new d(a)}}function Jf(e){if(!(e===void 0||e===!1)){if(typeof e=="string"){if(e==="/"||e.startsWith("http://")||e.startsWith("https://"))return;throw new Error(`Invalid relativeHrefRoot value "${e}". Must be false, "/" or an absolute URL starting with http:// or https://`)}throw new Error(`Invalid relativeHrefRoot type. Must be false, "/" or an absolute URL string, got: ${typeof e}`)}}function Hi(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(t=>`^${t}$`).join("|")}Vl();ot();x();var Dn=class extends Error{};function Tb(e){try{let t=JSON.parse(e);if(t.msg&&typeof t.msg=="string")return t.msg}catch{}return null}async function Ib(e){switch(e.status){case 400:{let t=await e.text(),r=Tb(t);throw new Dn(r||"Bad request: The server rejected the request due to invalid input. Please check your configuration and try again.")}case 401:throw new Dn("Your access token is invalid for the provided siteId. Double check your configs in your .webflowrc configuration file.");case 404:throw new Dn("You're not currently enrolled in the DevLink beta. You can apply for access here: https://webflow.com/devlink");default:throw new Dn(`Something went wrong (HTTP ${e.status}).`)}}async function Ob(e){try{let{siteId:t,host:r,authToken:n,...o}=e,i=await j(`${r}/devlink/${t}`,{method:"POST",headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"},body:JSON.stringify(o),timeout:6e4});return i.ok?await i.json():Ib(i)}catch(t){throw new d(t,{skipLogging:!0})}}async function Hl(e){try{let t=await Ob(e);if(!t.files||!Array.isArray(t.files))throw new d("Invalid response format from V1 API: expected 'files' array");let r=t.metadata?.exportCoverage==="full";return await zi(t.files,e.rootDir,r),{messages:t.messages}}catch(t){throw t instanceof d?t:new d(t,{skipLogging:!0})}}var Rr=h(require("process"));v();ve();ot();var Jl=class{config;error;constructor(t,r){this.config=t,this.error=r}stripPII(t=""){return t.replace(/\/(.*)webflow-cli/gi,"/REDACTED_PII/webflow-cli/").replace(/\/(.*)node_modules/gi,"/REDACTED_PII/node_modules")}sendTelemetry(){let t=this.config,r=this.error;j(`${t.host}/devlink/${t.siteId}/telemetry`,{headers:{Authorization:`Bearer ${t.authToken}`,"Content-Type":"application/json"},method:"post",body:JSON.stringify({cause:r.cause,message:r.message,name:r.name,stack:this.stripPII(r.stack),platform:Rr.default.platform,node:Rr.default.version})})}async storeChoice(t){try{return pe({devlink:{allowTelemetry:t}})}catch{let n=await yn();await xf({...n,allowTelemetry:t})}}async prompt(){let t=this.config;l.error(this.error),t.allowTelemetry===!0?this.sendTelemetry():t.allowTelemetry===void 0&&(await this.storeChoice(!0),this.sendTelemetry())}};function Ki(e){return async function(r){Rr.default.removeListener("uncaughtException",Ki),Rr.default.removeListener("unhandledRejection",Ki);let n=await Ji(e);if(!n)return;await new Jl(n,r).prompt()}}function zf(e){Rr.default.on("uncaughtException",Ki(e)),Rr.default.on("unhandledRejection",Ki(e))}W();v();U();ve();Gl();async function Kf(e,t){let r=Date.now(),{manifest:n}=J(),{accessToken:o,siteId:i}=await Ee(n,{site:t?.site,apiToken:t?.apiToken}),s={...o?{authToken:o}:{},...i?{siteId:i}:{},...e&&e.length>0?{components:Hi(e),overwriteModule:!1}:{overwriteModule:!0}};zf(s);let a=await Ji(s);if(!a)return zl.default.exit();let c;try{c=b.forDevlinkSync(a)}catch(p){l.debug(`Failed to initialize telemetry: ${p}`)}await c?.sendUsage("devlink_sync_start",{specificComponents:e&&e.length>0,componentCount:e?.length||0,cssModules:a.cssModules,overwriteModule:a.overwriteModule,relativeHrefRoot:a.relativeHrefRoot});let u=l.spinner(`Exporting components into ${a.rootDir}`);try{let{messages:p}=await Hl(a);u.succeed(`Successfully exported components into ${a.rootDir} folder`),qi(p);let f=Date.now()-r;await c?.sendUsage("devlink_sync_success",{duration:f,specificComponents:e&&e.length>0,componentCount:e?.length||0,cssModules:a.cssModules,overwriteModule:a.overwriteModule,relativeHrefRoot:a.relativeHrefRoot})}catch(p){let f=p instanceof Error?p.message:String(p);u.fail(`Failed to export components: ${f}`);let m=Date.now()-r;throw await c?.sendError(p instanceof Error?p:new Error(String(p)),"devlink_sync_failure",{duration:m,specificComponents:e&&e.length>0,componentCount:e?.length||0,cssModules:a.cssModules,overwriteModule:a.overwriteModule,relativeHrefRoot:a.relativeHrefRoot,configOverrides:Object.keys(s),argv:zl.default.argv.slice(2)}),p}}rs();var cr=require("commander");var bs=require("path"),kn=require("@webflow/data-types");se();var ns=require("fs"),tc=h(require("md5"));function So(e,t){try{let r=(0,ns.statSync)(e),n=(0,ns.readFileSync)(e);return{value:n,meta:{title:e.replace(/^.*[\\\/]/,""),fileHash:(0,tc.default)(n),size:r.size,...t||{}}}}catch{throw new Error(`File '${e}' not found`)}}function Ao(e,t,r){try{let n=new Blob([e]).size,o=Buffer.from(e,"utf-8");return{value:o,meta:{title:t.replace(/^.*[\\\/]/,""),fileHash:(0,tc.default)(o),size:n,...r}}}catch{throw new Error(`Error parsing '${t}' inline file`)}}var gm=h(require("node-fetch")),hm=h(require("form-data"));async function To(e,t){let r={...t.fields,file:e.value},n=new hm.default;Object.entries(r).forEach(([i,s])=>{n.append(i,s)});let o=await(0,gm.default)("https://"+t.fields.bucket+".s3.amazonaws.com",{method:"POST",body:n});Wb(o)}function Wb(e){switch(e.status){case 200:case 201:return;case 403:throw new Error("Unauthorized. Please check your AWS access key");default:throw new Error(`Something went wrong when uploading the file: ${e.statusText}`)}}v();ve();W();se();ot();ie();function Ub({apiToken:e=process.env.WEBFLOW_API_TOKEN??process.env.WEBFLOW_WORKSPACE_API_TOKEN??process.env.WEBFLOW_SITE_API_TOKEN,siteId:t=process.env.WEBFLOW_SITE_ID,libraryTarget:r=process.env.WEBFLOW_LIBRARY_TARGET}){if(!e)throw new Error("No API token provided");if(r==="site"){if(!t)throw new Error("No site provided");return{baseUrl:`${F}/v2/sites/${t}`,authToken:e}}return{baseUrl:`${F}/v2/workspaces`,authToken:e}}function Vb(e){if(e)return JSON.stringify(Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0)))}async function Hb(e){if(e.ok)return;if(e.status===401||e.status===403)throw new Error(`Your API token is invalid or not authorized to perform this action. Run ${P("webflow auth login --force")} to generate a new token.`);if(e.status===404)throw new Error("Code components are rolling out in phases. Check back soon for access.");let t=await e.json();throw new Error(t.message||e.statusText)}async function sr({endpoint:e,method:t="GET",body:r,options:n}){let{baseUrl:o,authToken:i}=Ub(n),s=`${o.replace(/\/+$/,"")}/${e.replace(/^\/+/,"")}`,a=await j(s,{method:t,headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:Vb(r)});return await Hb(a),a.json()}async function rc({options:e}){return(await sr({endpoint:"/code_libraries",options:e})).payload.workspaces[0]}async function nc({name:e,description:t,slug:r,options:n}){return(await sr({method:"POST",endpoint:"/code_library/init",body:{name:e,description:t,slug:r},options:n})).payload}async function oc({resourceId:e,files:t,options:r}){return(await sr({method:"POST",endpoint:`/code_library/${e}/files`,body:{files:t},options:r})).payload}async function ic({resourceId:e,codeModule:t,components:r,options:n}){return(await sr({method:"POST",endpoint:`/code_library/${e}/share`,body:{codeModule:t,components:r},options:n})).payload}var ag=require("path"),lg=h(require("webpack-merge")),Pr=require("@webflow/data-types");se();v();var Dm=require("memfs/lib/volume"),Io=require("@webflow/data-types");var _t="./tmp_entry",wm="components";function os(e){return e.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/[-_]+|[^\p{L}\p{N}]/gu," ").toLowerCase().replace(new RegExp("(?:^|\\s)(\\p{L})","gu"),(t,r)=>r.toUpperCase()).replace(/\s+/g,"")}function Jb(e){let t=os(e);return/^[a-zA-Z]/.test(t.charAt(0))?t:"_"+t}function ym(e,t){let r=e.map(({name:c,path:u,isDefaultExport:p})=>p?`import ${c} from "${u}";`:`import { ${c} } from "${u}";`).join(`
52
- `),n=e.filter(c=>c.type==="internal").map(({name:c,exportKey:u})=>`${u}: ${c}`).join(", "),o=e.filter(c=>c.type==="component").map(({name:c,exportKey:u})=>`"${u}": ${c}`).join(", "),i=`env: "${t}"`,s=n,a=o?`components: { ${o} }`:void 0;return`${r}
51
+ in your project root.`),new f(a)}}function zw(e){if(!(e===void 0||e===!1)){if(typeof e=="string"){if(e==="/"||e.startsWith("http://")||e.startsWith("https://"))return;throw new Error(`Invalid relativeHrefRoot value "${e}". Must be false, "/" or an absolute URL starting with http:// or https://`)}throw new Error(`Invalid relativeHrefRoot type. Must be false, "/" or an absolute URL string, got: ${typeof e}`)}}function Sl(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(t=>`^${t}$`).join("|")}bp();dt();S();var zo=class extends Error{};function FF(e){try{let t=JSON.parse(e);if(t.msg&&typeof t.msg=="string")return t.msg}catch{}return null}async function AF(e){switch(e.status){case 400:{let t=await e.text(),r=FF(t);throw new zo(r||"Bad request: The server rejected the request due to invalid input. Please check your configuration and try again.")}case 401:throw new zo("Your access token is invalid for the provided siteId. Double check your configs in your .webflowrc configuration file.");case 404:throw new zo("`webflow devlink sync` is no longer available. Run `webflow devlink export` instead \u2014 see the migration guide: https://developers.webflow.com/devlink/docs/reference/migrate-from-sync");default:throw new zo(`Something went wrong (HTTP ${e.status}).`)}}async function TF(e){try{let{siteId:t,host:r,authToken:n,...o}=e,i=await G(`${r}/devlink/${t}`,{method:"POST",headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"},body:JSON.stringify(o),timeout:6e4});return i.ok?await i.json():AF(i)}catch(t){throw new f(t,{skipLogging:!0})}}async function Ep(e){try{let t=await TF(e);if(!t.files||!Array.isArray(t.files))throw new f("Invalid response format from V1 API: expected 'files' array");let r=t.metadata?.exportCoverage==="full";return await _l(t.files,e.rootDir,r),{messages:t.messages}}catch(t){throw t instanceof f?t:new f(t,{skipLogging:!0})}}var jn=D(require("process"));x();Me();dt();var vp=class{config;error;constructor(t,r){this.config=t,this.error=r}stripPII(t=""){return t.replace(/\/(.*)webflow-cli/gi,"/REDACTED_PII/webflow-cli/").replace(/\/(.*)node_modules/gi,"/REDACTED_PII/node_modules")}sendTelemetry(){let t=this.config,r=this.error;G(`${t.host}/devlink/${t.siteId}/telemetry`,{headers:{Authorization:`Bearer ${t.authToken}`,"Content-Type":"application/json"},method:"post",body:JSON.stringify({cause:r.cause,message:r.message,name:r.name,stack:this.stripPII(r.stack),platform:jn.default.platform,node:jn.default.version})})}async storeChoice(t){try{return xe({devlink:{allowTelemetry:t}})}catch{let n=await Ko();await Cw({...n,allowTelemetry:t})}}async prompt(){let t=this.config;u.error(this.error),t.allowTelemetry===!0?this.sendTelemetry():t.allowTelemetry===void 0&&(await this.storeChoice(!0),this.sendTelemetry())}};function Fl(e){return async function(r){jn.default.removeListener("uncaughtException",Fl),jn.default.removeListener("unhandledRejection",Fl);let n=await xl(e);if(!n)return;await new vp(n,r).prompt()}}function qw(e){jn.default.on("uncaughtException",Fl(e)),jn.default.on("unhandledRejection",Fl(e))}z();x();J();Me();Sp();async function Yw(e,t){let r=Date.now(),{manifest:n}=Z(),{accessToken:o,siteId:i}=await Ue(n,{site:t?.site,apiToken:t?.apiToken}),s={...o?{authToken:o}:{},...i?{siteId:i}:{},...e&&e.length>0?{components:Sl(e),overwriteModule:!1}:{overwriteModule:!0}};qw(s);let a=await xl(s);if(!a)return xp.default.exit();let l;try{l=_.forDevlinkSync(a)}catch(d){u.debug(`Failed to initialize telemetry: ${d}`)}await l?.sendUsage("devlink_sync_start",{specificComponents:e&&e.length>0,componentCount:e?.length||0,cssModules:a.cssModules,overwriteModule:a.overwriteModule,relativeHrefRoot:a.relativeHrefRoot});let c=u.spinner(`Exporting components into ${a.rootDir}`);try{let{messages:d}=await Ep(a);c.succeed(`Successfully exported components into ${a.rootDir} folder`),Al(d);let p=Date.now()-r;await l?.sendUsage("devlink_sync_success",{duration:p,specificComponents:e&&e.length>0,componentCount:e?.length||0,cssModules:a.cssModules,overwriteModule:a.overwriteModule,relativeHrefRoot:a.relativeHrefRoot})}catch(d){let p=d instanceof Error?d.message:String(d);c.fail(`Failed to export components: ${p}`);let h=Date.now()-r;throw await l?.sendError(d instanceof Error?d:new Error(String(d)),"devlink_sync_failure",{duration:h,specificComponents:e&&e.length>0,componentCount:e?.length||0,cssModules:a.cssModules,overwriteModule:a.overwriteModule,relativeHrefRoot:a.relativeHrefRoot,configOverrides:Object.keys(s),argv:xp.default.argv.slice(2)}),d}}Ll();var dn=require("commander");var ec=require("path"),ti=require("@webflow/data-types");ye();var Nl=require("fs"),Op=D(require("md5"));function _s(e,t){try{let r=(0,Nl.statSync)(e),n=(0,Nl.readFileSync)(e);return{value:n,meta:{title:e.replace(/^.*[\\\/]/,""),fileHash:(0,Op.default)(n),size:r.size,...t||{}}}}catch{throw new Error(`File '${e}' not found`)}}function Fs(e,t,r){try{let n=new Blob([e]).size,o=Buffer.from(e,"utf-8");return{value:o,meta:{title:t.replace(/^.*[\\\/]/,""),fileHash:(0,Op.default)(o),size:n,...r}}}catch{throw new Error(`Error parsing '${t}' inline file`)}}var yD=D(require("node-fetch")),wD=D(require("form-data"));async function As(e,t){let r={...t.fields,file:e.value},n=new wD.default;Object.entries(r).forEach(([i,s])=>{n.append(i,s)});let o=await(0,yD.default)("https://"+t.fields.bucket+".s3.amazonaws.com",{method:"POST",body:n});MF(o)}function MF(e){switch(e.status){case 200:case 201:return;case 403:throw new Error("Unauthorized. Please check your AWS access key");default:throw new Error(`Something went wrong when uploading the file: ${e.statusText}`)}}x();Me();z();ye();dt();de();function BF({apiToken:e=process.env.WEBFLOW_API_TOKEN??process.env.WEBFLOW_WORKSPACE_API_TOKEN??process.env.WEBFLOW_SITE_API_TOKEN,siteId:t=process.env.WEBFLOW_SITE_ID,libraryTarget:r=process.env.WEBFLOW_LIBRARY_TARGET}){if(!e)throw new Error("No API token provided");if(r==="site"){if(!t)throw new Error("No site provided");return{baseUrl:`${I}/v2/sites/${t}`,authToken:e}}return{baseUrl:`${I}/v2/workspaces`,authToken:e}}function UF(e){if(e)return JSON.stringify(Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0)))}async function WF(e){if(e.ok)return;if(e.status===401||e.status===403)throw new Error(`Your API token is invalid or not authorized to perform this action. Run ${V("webflow auth login --force")} to generate a new token.`);if(e.status===404)throw new Error("Code components are rolling out in phases. Check back soon for access.");let t=await e.json();throw new Error(t.message||e.statusText)}async function sn({endpoint:e,method:t="GET",body:r,options:n}){let{baseUrl:o,authToken:i}=BF(n),s=`${o.replace(/\/+$/,"")}/${e.replace(/^\/+/,"")}`,a=await G(s,{method:t,headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:UF(r)});return await WF(a),a.json()}async function Pp({options:e}){return(await sn({endpoint:"/code_libraries",options:e})).payload.workspaces[0]}async function $p({name:e,description:t,slug:r,options:n}){return(await sn({method:"POST",endpoint:"/code_library/init",body:{name:e,description:t,slug:r},options:n})).payload}async function Lp({resourceId:e,files:t,options:r}){return(await sn({method:"POST",endpoint:`/code_library/${e}/files`,body:{files:t},options:r})).payload}async function Np({resourceId:e,codeModule:t,components:r,options:n}){return(await sn({method:"POST",endpoint:`/code_library/${e}/share`,body:{codeModule:t,components:r},options:n})).payload}var ck=require("path"),uk=D(require("webpack-merge")),Bn=require("@webflow/data-types");ye();x();var bD=require("memfs/lib/volume"),Ts=require("@webflow/data-types");var gr="./tmp_entry",DD="components";function jl(e){return e.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/[-_]+|[^\p{L}\p{N}]/gu," ").toLowerCase().replace(new RegExp("(?:^|\\s)(\\p{L})","gu"),(t,r)=>r.toUpperCase()).replace(/\s+/g,"")}function HF(e){let t=jl(e);return/^[a-zA-Z]/.test(t.charAt(0))?t:"_"+t}function kD(e,t){let r=e.map(({name:l,path:c,isDefaultExport:d})=>d?`import ${l} from "${c}";`:`import { ${l} } from "${c}";`).join(`
52
+ `),n=e.filter(l=>l.type==="internal").map(({name:l,exportKey:c})=>`${c}: ${l}`).join(", "),o=e.filter(l=>l.type==="component").map(({name:l,exportKey:c})=>`"${c}": ${l}`).join(", "),i=`env: "${t}"`,s=n,a=o?`components: { ${o} }`:void 0;return`${r}
53
53
 
54
- export default { ${[i,s,a].filter(Boolean).join(", ")} };`}function bm(e,t,r){let n={},o=`${_t}/Client.js`,i=`${_t}/Server.js`;n[o]=ym([{name:"ClientRenderer",path:e.client,exportKey:"Renderer",type:"internal"}],Io.Environment.Client);let s={},a=u=>{let p=Jb(u);return s[p]?(s[p]+=1,`${p}${s[p]}`):(s[p]=1,p)};n[i]=ym([{name:"ServerRenderer",path:e.server,exportKey:"Renderer",type:"internal"},...Object.entries(t).filter(([u])=>r[u]?.ssr??!0).map(([u,p])=>{let f=a(u),m=p.startsWith(_t)?p.replace(`${_t}/`,"./"):p;return{name:f,path:m,exportKey:u,isDefaultExport:!0,type:"component"}})],Io.Environment.Server);let c={[Io.Environment.Client]:o,[Io.Environment.Server]:i};return{entryPointsVolume:Dm.Volume.fromJSON(n),paths:c}}var cg=require("memfs/lib/volume");var _m=h(require("archiver")),bn=require("path");se();var Oo=require("@webflow/data-types");se();v();var ar=e=>e.endsWith("/")||/%2F$/i.test(e)?e:`${e}/`;var vm=2;function Em(e){let t={type:Oo.ModuleLoader.FEDERATION,version:vm,entry:ul,renderer:fo,components:e};return{title:po,content:JSON.stringify(t)}}function Fm(e){let t={type:Oo.ModuleLoader.SSR,version:vm,entry:mn,components:e};return{title:po,content:JSON.stringify(t)}}function xm(e){let t=`/${Oo.Environment.Client}/${ul}`;try{if(e.existsSync(t)){let r=e.readFileSync(t,"utf8"),n=JSON.parse(r.toString()),o="publicPath"in n.metaData?n.metaData.publicPath:null;if(!o)throw new Error("Public path not found in module federation manifest");return n.exposes.reduce((i,s)=>{let a=s.name;return a===fo||(i[a]={css:[]},s.assets.css.sync.forEach(c=>{i[a].css.push(`${ar(o)}${c}`)})),i},{})}}catch(r){l.error(r,{prefix:"Failed to extract components metadata from MF manifest:"})}return{}}var is=require("@webflow/data-types"),Gb=/\.css$/i;async function Cm(e,t,r){let n=!1;return new Promise(async(o,i)=>{e.length===0&&i(new Error("No assets to bundle"));let s=`/${is.Environment.Server}/${mo}`,a=(0,_m.default)("tar",{gzip:!1}),c=t.createWriteStream(s);a.on("error",f=>(n=!0,i(f))),c.on("close",()=>{if(!n)try{let f={type:"asset",name:mo,info:{},size:a.pointer(),emitted:!0,comparedForEmit:!1,cached:!1};return e.forEach(m=>{let g=(0,bn.resolve)((0,bn.join)(`/${is.Environment.Server}`,m.name));t.existsSync(g)&&t.rmSync(g)}),o([f])}catch(f){return i(f)}finally{n=!0}}),a.pipe(c);let{title:u,content:p}=Fm(r);a.append(p,{name:u}),e.forEach(f=>{if(!Gb.test(f.name))try{let m=(0,bn.resolve)((0,bn.join)(`/${is.Environment.Server}`,f.name)),g=t.readFileSync(m,"utf8");a.append(g,{name:f.name})}catch(m){return n=!0,i(m)}}),await a.finalize()})}var km=require("@webflow/data-types");async function Sm(e,t,r){let{title:n,content:o}=Em(r);await t.promises.writeFile(`/${km.Environment.Client}/${n}`,o);let i={type:"asset",name:n,info:{},size:o.length,emitted:!0,comparedForEmit:!1,cached:!1};return e.filter(s=>s.name!=="mf-stats.json").concat([i])}var eg=require("@rspack/core"),tg=h(require("fork-ts-checker-webpack-plugin")),rg=require("ts-checker-rspack-plugin"),ng=h(require("mini-css-extract-plugin")),og=require("@webflow/data-types");var Tm=require("webpack"),ac=h(require("mini-css-extract-plugin")),Im=h(require("tsconfig-paths-webpack-plugin")),Om=require("tsconfig-paths"),lc=require("@webflow/data-types"),Rm=require("path");se();var Am=h(require("postcss-selector-parser")),sc=()=>({postcssPlugin:"CSSinShadowDOM",Once(e){e.walkRules(t=>{t.selector=(0,Am.default)(r=>{r.walkPseudos(n=>{n.value===":root"&&(n.value=":host")})}).processSync(t.selector)})}});sc.postcss=!0;sc.postcssPlugin="CSSinShadowDOM";var ss=sc;function zb(){return(0,Om.loadConfig)(process.cwd()).resultType==="success"}function $m({entry:e,env:t,mode:r="production",publicPath:n,libraryName:o,outputPath:i}){let s={mode:r,module:{rules:[{test:/\.css$/i,use:[{ident:"mini-css-extract-loader",loader:ac.default.loader},{ident:"css-loader",loader:require.resolve("css-loader"),options:{importLoaders:1}},{ident:"postcss-loader",loader:require.resolve("postcss-loader"),options:{postcssOptions:{plugins:[ss]}}}]},{test:/\.(png|svg|jpg|jpeg|gif|woff|woff2|eot|ttf|otf)$/i,type:"asset/resource",generator:{filename:"[hash]-[name][ext]"}}]},plugins:[new ac.default({filename:"[contenthash].css",chunkFilename:"[contenthash].css",runtime:!1})],resolve:{plugins:[zb()?new Im.default:null].filter(Boolean)},performance:{hints:!1}};if(t===lc.Environment.Client)return{...s,entry:()=>({}),output:{path:i?(0,Rm.join)(process.cwd(),i,t):"/",publicPath:n,clean:!0,uniqueName:o},target:"web"};if(t===lc.Environment.Server)return{...s,plugins:[...s.plugins||[],new Tm.optimize.LimitChunkCountPlugin({maxChunks:1})],entry:e,output:{filename:mn,library:{type:"commonjs2"}},optimization:{splitChunks:!1},target:"async-node"};throw new Error(`Unknown environment ${t}`)}var Pm=require("@module-federation/enhanced"),cc=require("@webflow/data-types");function jm({libraryName:e,env:t,exposes:r}){if(t===cc.Environment.Client)return{plugins:[new Pm.ModuleFederationPlugin({name:e,filename:"remoteEntry.js",exposes:r,dts:!1,experiments:{optimization:{disableSnapshot:!0}}})]};if(t===cc.Environment.Server)return{};throw new Error(`Unknown environment ${t}`)}function Nm(){return{module:{rules:[{test:/\.(js|ts)x?$/,exclude:/node_modules/,use:[{ident:"babel-loader",loader:require.resolve("babel-loader"),options:{presets:[require.resolve("@babel/preset-env"),[require.resolve("@babel/preset-react"),{runtime:"automatic"}],require.resolve("@babel/preset-typescript")]}}]}]},resolve:{extensions:[".tsx",".ts",".jsx",".js",".json"]}}}function as(){return{module:{rules:[{test:/\.(js|ts)x?$/,exclude:/node_modules/,loader:"builtin:swc-loader",options:{jsc:{parser:{syntax:"typescript",tsx:!0},transform:{react:{runtime:"automatic",development:!1,refresh:!1}}}}}]},resolve:{extensions:[".tsx",".ts",".jsx",".js",".json"]}}}var ls=require("@rspack/core"),Lm=require("tsconfig-paths"),uc=require("@webflow/data-types"),Bm=require("path");se();function Kb(){let e=(0,Lm.loadConfig)(process.cwd());if(e.resultType==="success")return e.configFileAbsolutePath}function Mm({entry:e,env:t,mode:r="production",publicPath:n,libraryName:o,outputPath:i}){let s={mode:r,module:{rules:[{test:/\.css$/i,use:[{ident:"mini-css-extract-loader",loader:ls.rspack.CssExtractRspackPlugin.loader},{ident:"css-loader",loader:require.resolve("css-loader"),options:{importLoaders:1}},{ident:"postcss-loader",loader:require.resolve("postcss-loader"),options:{postcssOptions:{plugins:[ss]}}}],type:"javascript/auto"},{test:/\.(png|svg|jpg|jpeg|gif|woff|woff2|eot|ttf|otf)$/i,type:"asset/resource",generator:{filename:"[hash]-[name][ext]"}}]},plugins:[new ls.rspack.CssExtractRspackPlugin({filename:"[contenthash].css",chunkFilename:"[contenthash].css",runtime:!1})],resolve:(()=>{let a=Kb();return a?{tsConfig:{configFile:a}}:{}})(),performance:{hints:!1}};if(t===uc.Environment.Client)return{...s,entry:()=>({}),output:{path:i?(0,Bm.join)(process.cwd(),i,t):"/",publicPath:n,clean:!0,uniqueName:o},target:"web"};if(t===uc.Environment.Server)return{...s,plugins:[...Array.isArray(s.plugins)?s.plugins:[],new ls.rspack.optimize.LimitChunkCountPlugin({maxChunks:1})],entry:e,output:{filename:mn,library:{type:"commonjs2"}},optimization:{splitChunks:!1},target:"async-node"};throw new Error(`Unknown environment ${t}`)}var Wm=require("@module-federation/enhanced/rspack"),dc=require("@webflow/data-types");function Um({libraryName:e,env:t,exposes:r}){if(t===dc.Environment.Client)return{plugins:[new Wm.ModuleFederationPlugin({name:e,filename:"remoteEntry.js",exposes:r,dts:!1,experiments:{optimization:{disableSnapshot:!0}}})]};if(t===dc.Environment.Server)return{};throw new Error(`Unknown environment ${t}`)}var Zb=h(require("fs")),Vm=require("unionfs"),Hm=require("webpack");function qb(e){return{name:e.name,size:e.size,emitted:e.emitted,info:e.info}}function cs(e){let t=e.toJson();return{hasErrors:()=>e.hasErrors(),hasWarnings:()=>e.hasWarnings(),toString:r=>e.toString(r),toJson:()=>({...t,assets:(t.assets??[]).map(qb)})}}async function Jm({config:e,sourceVolumes:t=[],outputVolume:r,outputPath:n,failOnWarnings:o=!0}){let i=t.reduce((s,a)=>(s.use(a),s),new Vm.Union().use(Zb));return new Promise((s,a)=>{let c=(0,Hm.webpack)(e);c.inputFileSystem=i,r&&(c.outputFileSystem=r),n&&(c.outputPath=n),c.run((u,p)=>{c.close(f=>{u||f?a(u||f):p?p.hasErrors()||o&&p.hasWarnings()?a(new Error(p.toString("errors-warnings"))):s(cs(p)):a(new Error("Webpack stats are undefined"))})})})}var Yb=h(require("fs")),pc=h(require("webpack-merge")),Gm=require("memfs"),zm=require("unionfs"),Km=require("@rspack/core");async function us({config:e,sourceVolumes:t=[],outputVolume:r,outputPath:n,failOnWarnings:o=!0}){let i=t.reduce((a,c)=>(a.use(c),a),new zm.Union().use(Yb)),s=e;return t.length>0&&(s=(0,pc.default)(s,{experiments:{...e.experiments,useInputFileSystem:[/./]}})),r&&(s=(0,pc.default)(s,{output:{clean:!1,...n&&{path:n}}})),new Promise((a,c)=>{let u=(0,Km.rspack)(s);u.inputFileSystem=i,r&&(u.outputFileSystem=(0,Gm.createFsFromVolume)(r)),n&&(u.outputPath=n),u.run((p,f)=>{u.close(m=>{p||m?c(p||m):f?f.hasErrors()||o&&f.hasWarnings()?c(new Error(f.toString("errors-warnings"))):a(cs(f)):c(new Error("Rspack stats are undefined"))})})})}var Zm=require("@module-federation/enhanced");var vn=h(require("webpack-merge"));v();function lr(e){return e!==null&&typeof e=="object"&&"constructor"in e?e.constructor.name??"":""}function qm(e,t){let r=Object.entries(e).filter(([n])=>!t.includes(n));return Object.fromEntries(r)}function Xb(e,t){return e instanceof t||lr(e)==="ModuleFederationPlugin"}function ps(e){let{deduplicatePluginNames:t,ModuleFederationPluginClass:r,getPluginOptions:n,filterOverridePlugins:o}=e;return function(s,a,c){let u=["entry","output","target"],p=Qb(s),f=Array.isArray(c)?ds(...c.map(p)):ds(p(c));Object.keys(f).some(X=>u.includes(X))&&l.warn(`Cannot override blocked properties: ${u.join(", ")}`);let g={...qm(f,[...u,"ModuleFederationPlugin","module","plugins"]),module:qm(f.module??{},["rules"])},w=(0,vn.default)(a,g),I=f.plugins??[];o&&(I=I.filter(o));let C=a.plugins??[],Z=(0,vn.mergeWithCustomize)({customizeArray:(0,vn.unique)("plugins",t,X=>lr(X))})({plugins:I},{plugins:C}).plugins,S=f?.ModuleFederationPlugin?.shared,oe=Z?.map(X=>{if(Xb(X,r)){let M=n(X);return new r({...M,...S?{shared:S}:{}})}return X});w.plugins=oe;let ye=f.module?.rules;if(ye&&typeof ye=="function"){let X=a.module?.rules??[];w.module={...w.module??{},rules:ye(X)}}return w}}function ds(...e){if(e.length===0)return{};if(e.length===1)return e[0];let t={};for(let r of e){let{module:n,ModuleFederationPlugin:o,plugins:i,...s}=r;if(t={...t,...s},n){let{rules:a,...c}=n;if(t.module={...t.module,...c},a){let u=t.module?.rules;u?t.module.rules=p=>{let f=u(p);return a(f)}:t.module.rules=a}}o?.shared&&(t.ModuleFederationPlugin={shared:{...t.ModuleFederationPlugin?.shared,...o.shared}}),i&&(t.plugins=[...t.plugins??[],...i])}return t}function Qb(e){return t=>typeof t=="function"?t(e):t}var ev=ps({deduplicatePluginNames:["ModuleFederationPlugin","MiniCssExtractPlugin"],ModuleFederationPluginClass:Zm.ModuleFederationPlugin,getPluginOptions:e=>e._options??{}});function Ym(e,t,r){return ev(e,t,r)}var Xm=require("@module-federation/enhanced/rspack");var tv=ps({deduplicatePluginNames:["ModuleFederationPlugin","CssExtractRspackPlugin"],ModuleFederationPluginClass:Xm.ModuleFederationPlugin,getPluginOptions:e=>e._options??{},filterOverridePlugins:e=>lr(e)!=="MiniCssExtractPlugin"});function Qm(e,t,r){return tv(e,t,r)}var fc={[og.Framework.React]:{generateWebpackBundlerConfig:Nm,generateRspackBundlerConfig:as}},rv={webpack:{generateBaseConfig:$m,getFrameworkConfig:(e,t)=>fc[e].generateWebpackBundlerConfig(t),generateFederationConfig:jm,mergeConfigs:(e,t,r)=>Ym(e,t,r),bundle:e=>Jm({...e,config:e.config}),typeCheckerPlugin:tg.default,hashFunction:"md5",replaceCssPlugin:e=>({...e,plugins:e.plugins?.map(t=>lr(t)==="MiniCssExtractPlugin"?new ng.default({filename:"[name].[contenthash].css"}):t)})},rspack:{generateBaseConfig:Mm,getFrameworkConfig:(e,t)=>fc[e].generateRspackBundlerConfig(t),generateFederationConfig:Um,mergeConfigs:(e,t,r)=>Qm(e,t,r),bundle:e=>us({...e,config:e.config}),typeCheckerPlugin:rg.TsCheckerRspackPlugin,hashFunction:"md4",replaceCssPlugin:e=>({...e,plugins:e.plugins?.map(t=>lr(t)==="CssExtractRspackPlugin"?new eg.CssExtractRspackPlugin({filename:"[name].[contenthash].css"}):t)})}},En=e=>rv[e],ig=e=>!!fc[e];var sg={colors:!0,chunks:!1,modules:!1,chunkModules:!1,reasons:!1,errorDetails:!1,assetsSpace:1/0,warnings:!1,assets:!0,entrypoints:!0,performance:!0};async function fs(e){let t=e.bundler??"webpack";l.debug("Generating entry points...");let{entryPointsVolume:r,paths:n}=bm(e.renderer,e.componentsFiles,e.componentsOptions),o=cg.Volume.fromJSON({"/Server":null,"/Client":null});l.debug("Generating bundling config...");let i=e.overrideConfig??{};Object.keys(i).length&&l.debug("Found bundle config overrides. Merging...");let s=En(t),a=C=>{let q=nv({env:C,mode:e.dev?"development":"production",framework:e.framework,publicPath:e.publicPath,components:e.componentsFiles,entryPaths:n,libraryName:e.libraryIdentifier,bundler:t}),Z=s.mergeConfigs(C,q,i);return e?.debugBundler&&(l.info(`${t} config for env ${C}:`),l.dir(Z)),Z},c={sourceVolumes:[...e.sourceVolumes,r],outputVolume:o,failOnWarnings:e.failOnWarnings},[u,p]=await Promise.all([s.bundle({...c,config:a(Pr.Environment.Server),outputPath:`/${Pr.Environment.Server}`}),s.bundle({...c,config:a(Pr.Environment.Client),outputPath:`/${Pr.Environment.Client}`})]);e?.debugBundler&&(l.debug(o.toTree()),l.debug(`Server Bundler Stats: ${u.toString(sg)}`),l.debug(`Client Bundler Stats: ${p.toString(sg)}`));let f=xm(o);l.debug("Packaging server bundle...");let m=await Cm(u.toJson().assets||[],o,f);l.debug("Packaging client bundle...");let g=await Sm(p.toJson().assets||[],o,f),w=C=>q=>[q,C];return{outputFiles:[...m.map(w(Pr.Environment.Server)),...g.map(w(Pr.Environment.Client))],outputVolume:o}}function nv({env:e,mode:t="production",framework:r,publicPath:n,components:o,entryPaths:i,libraryName:s,outputPath:a,bundler:c="webpack"}){if(!ig(r))throw new Error(`Unknown framework: ${r}`);let u=Object.entries({[fo]:i[e],...o}).reduce((w,[I,C])=>({...w,[`./${I}`]:`./${(0,ag.relative)(process.cwd(),C)}`}),{}),p=En(c),f=p.generateBaseConfig({entry:i[e],env:e,mode:t,libraryName:s,publicPath:n,outputPath:a}),m=p.getFrameworkConfig(r,e),g=p.generateFederationConfig({exposes:u,env:e,libraryName:s});return(0,lg.default)(f,m,g)}var pg=h(require("path")),gc=require("memfs/lib/volume"),hc=h(require("webpack-merge")),fg=h(require("webpack-node-externals")),lt=require("@webflow/data-types");var ov=h(require("fs")),Fn=require("path"),xn=require("webpack");function iv(e,t=ov){let r=(0,Fn.join)(process.cwd(),"node_modules",e);for(;r!==(0,Fn.dirname)(r)&&r!=="node_modules";){let n=(0,Fn.join)(r,"package.json");if(t.existsSync(n))try{let{name:o,version:i}=JSON.parse(t.readFileSync(n,"utf8"));return`${o}@${i}`}catch{return null}r=(0,Fn.dirname)(r)}return null}var ms=class{apply(t){t.hooks.compilation.tap("ProcessSourceMapsPlugin",function(r){r.hooks.processAssets.tap({name:"ProcessSourceMapsPlugin",stage:xn.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_INLINE},function(){try{let n=r.getAssets(),o={};Object.values(n).forEach(({name:i,source:s})=>{if(!i.endsWith(".map"))return;let[a,c,u]=i.split("."),p=o[a]?.sources??{},f=o[a]?.dependencies??new Set;JSON.parse(s.source().toString()).sources.forEach(g=>{if(g.startsWith("external")){let w=g.match(/^external \S+ "(.+)"$/)?.[1];if(!w)throw new Error(`Could not extract package name from ${g}`);let I=iv(w,r.inputFileSystem);if(!I)throw new Error(`Could not find package information for ${w}`);I&&f.add(I)}}),o[a]={sources:{...p,[`./${a}.${u}`]:c},dependencies:f},r.deleteAsset(i)}),Object.entries(o).forEach(([i,{sources:s,dependencies:a}])=>{r.emitAsset(`${i}.js.map`,new xn.sources.RawSource(JSON.stringify({sources:s,dependencies:[...a]})))})}catch(n){r.errors.push(new xn.WebpackError(`[ProcessSourceMapsPlugin] Could not process source maps: ${n instanceof Error?n.stack:String(n)}`))}})})}};var ug=h(require("module")),dg=require("jsdom"),mc="__webflowCliImportModuleWindow__";function sv(e){let r=/^(?:\ufeff?\s*)(?:'use strict'|"use strict");?\s*(?:\r?\n|\r)?/.exec(e),n=!!r,o=`module[${JSON.stringify(mc)}]`,i=[];n||i.push('"use strict";'),i.push(`var __wfW = ${o};`,'if (__wfW == null) { throw new ReferenceError("Webflow CLI internal: missing JSDOM window on module"); }',"var window = __wfW;","var document = __wfW.document;","var navigator = __wfW.navigator;","var HTMLElement = __wfW.HTMLElement;","var localStorage = __wfW.localStorage;","var sessionStorage = __wfW.sessionStorage;","var requestAnimationFrame = __wfW.requestAnimationFrame.bind(__wfW);","var cancelAnimationFrame = __wfW.cancelAnimationFrame.bind(__wfW);","var getComputedStyle = __wfW.getComputedStyle.bind(__wfW);","var performance = __wfW.performance;","");let s=i.join(`
54
+ export default { ${[i,s,a].filter(Boolean).join(", ")} };`}function ED(e,t,r){let n={},o=`${gr}/Client.js`,i=`${gr}/Server.js`;n[o]=kD([{name:"ClientRenderer",path:e.client,exportKey:"Renderer",type:"internal"}],Ts.Environment.Client);let s={},a=c=>{let d=HF(c);return s[d]?(s[d]+=1,`${d}${s[d]}`):(s[d]=1,d)};n[i]=kD([{name:"ServerRenderer",path:e.server,exportKey:"Renderer",type:"internal"},...Object.entries(t).filter(([c])=>r[c]?.ssr??!0).map(([c,d])=>{let p=a(c),h=d.startsWith(gr)?d.replace(`${gr}/`,"./"):d;return{name:p,path:h,exportKey:c,isDefaultExport:!0,type:"component"}})],Ts.Environment.Server);let l={[Ts.Environment.Client]:o,[Ts.Environment.Server]:i};return{entryPointsVolume:bD.Volume.fromJSON(n),paths:l}}var dk=require("memfs/lib/volume");var _D=D(require("archiver")),Jo=require("path");ye();var Rs=require("@webflow/data-types");ye();x();var an=e=>e.endsWith("/")||/%2F$/i.test(e)?e:`${e}/`;var vD=2;function SD(e){let t={type:Rs.ModuleLoader.FEDERATION,version:vD,entry:Ud,renderer:ps,components:e};return{title:ds,content:JSON.stringify(t)}}function xD(e){let t={type:Rs.ModuleLoader.SSR,version:vD,entry:Wo,components:e};return{title:ds,content:JSON.stringify(t)}}function CD(e){let t=`/${Rs.Environment.Client}/${Ud}`;try{if(e.existsSync(t)){let r=e.readFileSync(t,"utf8"),n=JSON.parse(r.toString()),o="publicPath"in n.metaData?n.metaData.publicPath:null;if(!o)throw new Error("Public path not found in module federation manifest");return n.exposes.reduce((i,s)=>{let a=s.name;return a===ps||(i[a]={css:[]},s.assets.css.sync.forEach(l=>{i[a].css.push(`${an(o)}${l}`)})),i},{})}}catch(r){u.error(r,{prefix:"Failed to extract components metadata from MF manifest:"})}return{}}var Ml=require("@webflow/data-types"),VF=/\.css$/i;async function FD(e,t,r){let n=!1;return new Promise(async(o,i)=>{e.length===0&&i(new Error("No assets to bundle"));let s=`/${Ml.Environment.Server}/${fs}`,a=(0,_D.default)("tar",{gzip:!1}),l=t.createWriteStream(s);a.on("error",p=>(n=!0,i(p))),l.on("close",()=>{if(!n)try{let p={type:"asset",name:fs,info:{},size:a.pointer(),emitted:!0,comparedForEmit:!1,cached:!1};return e.forEach(h=>{let g=(0,Jo.resolve)((0,Jo.join)(`/${Ml.Environment.Server}`,h.name));t.existsSync(g)&&t.rmSync(g)}),o([p])}catch(p){return i(p)}finally{n=!0}}),a.pipe(l);let{title:c,content:d}=xD(r);a.append(d,{name:c}),e.forEach(p=>{if(!VF.test(p.name))try{let h=(0,Jo.resolve)((0,Jo.join)(`/${Ml.Environment.Server}`,p.name)),g=t.readFileSync(h,"utf8");a.append(g,{name:p.name})}catch(h){return n=!0,i(h)}}),await a.finalize()})}var AD=require("@webflow/data-types");async function TD(e,t,r){let{title:n,content:o}=SD(r);await t.promises.writeFile(`/${AD.Environment.Client}/${n}`,o);let i={type:"asset",name:n,info:{},size:o.length,emitted:!0,comparedForEmit:!1,cached:!1};return e.filter(s=>s.name!=="mf-stats.json").concat([i])}var rk=require("@rspack/core"),nk=D(require("fork-ts-checker-webpack-plugin")),ok=require("ts-checker-rspack-plugin"),ik=D(require("mini-css-extract-plugin")),sk=require("@webflow/data-types");var ID=require("webpack"),Mp=D(require("mini-css-extract-plugin")),OD=D(require("tsconfig-paths-webpack-plugin")),PD=require("tsconfig-paths"),Bp=require("@webflow/data-types"),$D=require("path");ye();var RD=D(require("postcss-selector-parser")),jp=()=>({postcssPlugin:"CSSinShadowDOM",Once(e){e.walkRules(t=>{t.selector=(0,RD.default)(r=>{r.walkPseudos(n=>{n.value===":root"&&(n.value=":host")})}).processSync(t.selector)})}});jp.postcss=!0;jp.postcssPlugin="CSSinShadowDOM";var Bl=jp;function GF(){return(0,PD.loadConfig)(process.cwd()).resultType==="success"}function LD({entry:e,env:t,mode:r="production",publicPath:n,libraryName:o,outputPath:i}){let s={mode:r,module:{rules:[{test:/\.css$/i,use:[{ident:"mini-css-extract-loader",loader:Mp.default.loader},{ident:"css-loader",loader:require.resolve("css-loader"),options:{importLoaders:1}},{ident:"postcss-loader",loader:require.resolve("postcss-loader"),options:{postcssOptions:{plugins:[Bl]}}}]},{test:/\.(png|svg|jpg|jpeg|gif|woff|woff2|eot|ttf|otf)$/i,type:"asset/resource",generator:{filename:"[hash]-[name][ext]"}}]},plugins:[new Mp.default({filename:"[contenthash].css",chunkFilename:"[contenthash].css",runtime:!1})],resolve:{plugins:[GF()?new OD.default:null].filter(Boolean)},performance:{hints:!1}};if(t===Bp.Environment.Client)return{...s,entry:()=>({}),output:{path:i?(0,$D.join)(process.cwd(),i,t):"/",publicPath:n,clean:!0,uniqueName:o},target:"web"};if(t===Bp.Environment.Server)return{...s,plugins:[...s.plugins||[],new ID.optimize.LimitChunkCountPlugin({maxChunks:1})],entry:e,output:{filename:Wo,library:{type:"commonjs2"}},optimization:{splitChunks:!1},target:"async-node"};throw new Error(`Unknown environment ${t}`)}var ND=require("@module-federation/enhanced"),Up=require("@webflow/data-types");function jD({libraryName:e,env:t,exposes:r}){if(t===Up.Environment.Client)return{plugins:[new ND.ModuleFederationPlugin({name:e,filename:"remoteEntry.js",exposes:r,dts:!1,experiments:{optimization:{disableSnapshot:!0}}})]};if(t===Up.Environment.Server)return{};throw new Error(`Unknown environment ${t}`)}function MD(){return{module:{rules:[{test:/\.(js|ts)x?$/,exclude:/node_modules/,use:[{ident:"babel-loader",loader:require.resolve("babel-loader"),options:{presets:[require.resolve("@babel/preset-env"),[require.resolve("@babel/preset-react"),{runtime:"automatic"}],require.resolve("@babel/preset-typescript")]}}]}]},resolve:{extensions:[".tsx",".ts",".jsx",".js",".json"]}}}function Ul(){return{module:{rules:[{test:/\.(js|ts)x?$/,exclude:/node_modules/,loader:"builtin:swc-loader",options:{jsc:{parser:{syntax:"typescript",tsx:!0},transform:{react:{runtime:"automatic",development:!1,refresh:!1}}}}}]},resolve:{extensions:[".tsx",".ts",".jsx",".js",".json"]}}}var Wl=require("@rspack/core"),BD=require("tsconfig-paths"),Wp=require("@webflow/data-types"),UD=require("path");ye();function KF(){let e=(0,BD.loadConfig)(process.cwd());if(e.resultType==="success")return e.configFileAbsolutePath}function WD({entry:e,env:t,mode:r="production",publicPath:n,libraryName:o,outputPath:i}){let s={mode:r,module:{rules:[{test:/\.css$/i,use:[{ident:"mini-css-extract-loader",loader:Wl.rspack.CssExtractRspackPlugin.loader},{ident:"css-loader",loader:require.resolve("css-loader"),options:{importLoaders:1}},{ident:"postcss-loader",loader:require.resolve("postcss-loader"),options:{postcssOptions:{plugins:[Bl]}}}],type:"javascript/auto"},{test:/\.(png|svg|jpg|jpeg|gif|woff|woff2|eot|ttf|otf)$/i,type:"asset/resource",generator:{filename:"[hash]-[name][ext]"}}]},plugins:[new Wl.rspack.CssExtractRspackPlugin({filename:"[contenthash].css",chunkFilename:"[contenthash].css",runtime:!1})],resolve:(()=>{let a=KF();return a?{tsConfig:{configFile:a}}:{}})(),performance:{hints:!1}};if(t===Wp.Environment.Client)return{...s,entry:()=>({}),output:{path:i?(0,UD.join)(process.cwd(),i,t):"/",publicPath:n,clean:!0,uniqueName:o},target:"web"};if(t===Wp.Environment.Server)return{...s,plugins:[...Array.isArray(s.plugins)?s.plugins:[],new Wl.rspack.optimize.LimitChunkCountPlugin({maxChunks:1})],entry:e,output:{filename:Wo,library:{type:"commonjs2"}},optimization:{splitChunks:!1},target:"async-node"};throw new Error(`Unknown environment ${t}`)}var HD=require("@module-federation/enhanced/rspack"),Hp=require("@webflow/data-types");function VD({libraryName:e,env:t,exposes:r}){if(t===Hp.Environment.Client)return{plugins:[new HD.ModuleFederationPlugin({name:e,filename:"remoteEntry.js",exposes:r,dts:!1,experiments:{optimization:{disableSnapshot:!0}}})]};if(t===Hp.Environment.Server)return{};throw new Error(`Unknown environment ${t}`)}var JF=D(require("fs")),GD=require("unionfs"),KD=require("webpack");function zF(e){return{name:e.name,size:e.size,emitted:e.emitted,info:e.info}}function Hl(e){let t=e.toJson();return{hasErrors:()=>e.hasErrors(),hasWarnings:()=>e.hasWarnings(),toString:r=>e.toString(r),toJson:()=>({...t,assets:(t.assets??[]).map(zF)})}}async function zD({config:e,sourceVolumes:t=[],outputVolume:r,outputPath:n,failOnWarnings:o=!0}){let i=t.reduce((s,a)=>(s.use(a),s),new GD.Union().use(JF));return new Promise((s,a)=>{let l=(0,KD.webpack)(e);l.inputFileSystem=i,r&&(l.outputFileSystem=r),n&&(l.outputPath=n),l.run((c,d)=>{l.close(p=>{c||p?a(c||p):d?d.hasErrors()||o&&d.hasWarnings()?a(new Error(d.toString("errors-warnings"))):s(Hl(d)):a(new Error("Webpack stats are undefined"))})})})}var qF=D(require("fs")),Vp=D(require("webpack-merge")),JD=require("memfs"),qD=require("unionfs"),YD=require("@rspack/core");async function Vl({config:e,sourceVolumes:t=[],outputVolume:r,outputPath:n,failOnWarnings:o=!0}){let i=t.reduce((a,l)=>(a.use(l),a),new qD.Union().use(qF)),s=e;return t.length>0&&(s=(0,Vp.default)(s,{experiments:{...e.experiments,useInputFileSystem:[/./]}})),r&&(s=(0,Vp.default)(s,{output:{clean:!1,...n&&{path:n}}})),new Promise((a,l)=>{let c=(0,YD.rspack)(s);c.inputFileSystem=i,r&&(c.outputFileSystem=(0,JD.createFsFromVolume)(r)),n&&(c.outputPath=n),c.run((d,p)=>{c.close(h=>{d||h?l(d||h):p?p.hasErrors()||o&&p.hasWarnings()?l(new Error(p.toString("errors-warnings"))):a(Hl(p)):l(new Error("Rspack stats are undefined"))})})})}var ZD=require("@module-federation/enhanced");var qo=D(require("webpack-merge"));x();function ln(e){return e!==null&&typeof e=="object"&&"constructor"in e?e.constructor.name??"":""}function XD(e,t){let r=Object.entries(e).filter(([n])=>!t.includes(n));return Object.fromEntries(r)}function YF(e,t){return e instanceof t||ln(e)==="ModuleFederationPlugin"}function Kl(e){let{deduplicatePluginNames:t,ModuleFederationPluginClass:r,getPluginOptions:n,filterOverridePlugins:o}=e;return function(s,a,l){let c=["entry","output","target"],d=XF(s),p=Array.isArray(l)?Gl(...l.map(d)):Gl(d(l));Object.keys(p).some(B=>c.includes(B))&&u.warn(`Cannot override blocked properties: ${c.join(", ")}`);let g={...XD(p,[...c,"ModuleFederationPlugin","module","plugins"]),module:XD(p.module??{},["rules"])},m=(0,qo.default)(a,g),w=p.plugins??[];o&&(w=w.filter(o));let k=a.plugins??[],A=(0,qo.mergeWithCustomize)({customizeArray:(0,qo.unique)("plugins",t,B=>ln(B))})({plugins:w},{plugins:k}).plugins,E=p?.ModuleFederationPlugin?.shared,v=A?.map(B=>{if(YF(B,r)){let U=n(B);return new r({...U,...E?{shared:E}:{}})}return B});m.plugins=v;let M=p.module?.rules;if(M&&typeof M=="function"){let B=a.module?.rules??[];m.module={...m.module??{},rules:M(B)}}return m}}function Gl(...e){if(e.length===0)return{};if(e.length===1)return e[0];let t={};for(let r of e){let{module:n,ModuleFederationPlugin:o,plugins:i,...s}=r;if(t={...t,...s},n){let{rules:a,...l}=n;if(t.module={...t.module,...l},a){let c=t.module?.rules;c?t.module.rules=d=>{let p=c(d);return a(p)}:t.module.rules=a}}o?.shared&&(t.ModuleFederationPlugin={shared:{...t.ModuleFederationPlugin?.shared,...o.shared}}),i&&(t.plugins=[...t.plugins??[],...i])}return t}function XF(e){return t=>typeof t=="function"?t(e):t}var ZF=Kl({deduplicatePluginNames:["ModuleFederationPlugin","MiniCssExtractPlugin"],ModuleFederationPluginClass:ZD.ModuleFederationPlugin,getPluginOptions:e=>e._options??{}});function QD(e,t,r){return ZF(e,t,r)}var ek=require("@module-federation/enhanced/rspack");var QF=Kl({deduplicatePluginNames:["ModuleFederationPlugin","CssExtractRspackPlugin"],ModuleFederationPluginClass:ek.ModuleFederationPlugin,getPluginOptions:e=>e._options??{},filterOverridePlugins:e=>ln(e)!=="MiniCssExtractPlugin"});function tk(e,t,r){return QF(e,t,r)}var Gp={[sk.Framework.React]:{generateWebpackBundlerConfig:MD,generateRspackBundlerConfig:Ul}},eA={webpack:{generateBaseConfig:LD,getFrameworkConfig:(e,t)=>Gp[e].generateWebpackBundlerConfig(t),generateFederationConfig:jD,mergeConfigs:(e,t,r)=>QD(e,t,r),bundle:e=>zD({...e,config:e.config}),typeCheckerPlugin:nk.default,hashFunction:"md5",replaceCssPlugin:e=>({...e,plugins:e.plugins?.map(t=>ln(t)==="MiniCssExtractPlugin"?new ik.default({filename:"[name].[contenthash].css"}):t)})},rspack:{generateBaseConfig:WD,getFrameworkConfig:(e,t)=>Gp[e].generateRspackBundlerConfig(t),generateFederationConfig:VD,mergeConfigs:(e,t,r)=>tk(e,t,r),bundle:e=>Vl({...e,config:e.config}),typeCheckerPlugin:ok.TsCheckerRspackPlugin,hashFunction:"md4",replaceCssPlugin:e=>({...e,plugins:e.plugins?.map(t=>ln(t)==="CssExtractRspackPlugin"?new rk.CssExtractRspackPlugin({filename:"[name].[contenthash].css"}):t)})}},Yo=e=>eA[e],ak=e=>!!Gp[e];var lk={colors:!0,chunks:!1,modules:!1,chunkModules:!1,reasons:!1,errorDetails:!1,assetsSpace:1/0,warnings:!1,assets:!0,entrypoints:!0,performance:!0};async function zl(e){let t=e.bundler??"webpack";u.debug("Generating entry points...");let{entryPointsVolume:r,paths:n}=ED(e.renderer,e.componentsFiles,e.componentsOptions),o=dk.Volume.fromJSON({"/Server":null,"/Client":null});u.debug("Generating bundling config...");let i=e.overrideConfig??{};Object.keys(i).length&&u.debug("Found bundle config overrides. Merging...");let s=Yo(t),a=k=>{let F=tA({env:k,mode:e.dev?"development":"production",framework:e.framework,publicPath:e.publicPath,components:e.componentsFiles,entryPaths:n,libraryName:e.libraryIdentifier,bundler:t}),A=s.mergeConfigs(k,F,i);return e?.debugBundler&&(u.info(`${t} config for env ${k}:`),u.dir(A)),A},l={sourceVolumes:[...e.sourceVolumes,r],outputVolume:o,failOnWarnings:e.failOnWarnings},[c,d]=await Promise.all([s.bundle({...l,config:a(Bn.Environment.Server),outputPath:`/${Bn.Environment.Server}`}),s.bundle({...l,config:a(Bn.Environment.Client),outputPath:`/${Bn.Environment.Client}`})]);e?.debugBundler&&(u.debug(o.toTree()),u.debug(`Server Bundler Stats: ${c.toString(lk)}`),u.debug(`Client Bundler Stats: ${d.toString(lk)}`));let p=CD(o);u.debug("Packaging server bundle...");let h=await FD(c.toJson().assets||[],o,p);u.debug("Packaging client bundle...");let g=await TD(d.toJson().assets||[],o,p),m=k=>F=>[F,k];return{outputFiles:[...h.map(m(Bn.Environment.Server)),...g.map(m(Bn.Environment.Client))],outputVolume:o}}function tA({env:e,mode:t="production",framework:r,publicPath:n,components:o,entryPaths:i,libraryName:s,outputPath:a,bundler:l="webpack"}){if(!ak(r))throw new Error(`Unknown framework: ${r}`);let c=Object.entries({[ps]:i[e],...o}).reduce((m,[w,k])=>({...m,[`./${w}`]:`./${(0,ck.relative)(process.cwd(),k)}`}),{}),d=Yo(l),p=d.generateBaseConfig({entry:i[e],env:e,mode:t,libraryName:s,publicPath:n,outputPath:a}),h=d.getFrameworkConfig(r,e),g=d.generateFederationConfig({exposes:c,env:e,libraryName:s});return(0,uk.default)(p,h,g)}var mk=D(require("path")),zp=require("memfs/lib/volume"),Jp=D(require("webpack-merge")),gk=D(require("webpack-node-externals")),Bt=require("@webflow/data-types");var rA=D(require("fs")),Xo=require("path"),Zo=require("webpack");function nA(e,t=rA){let r=(0,Xo.join)(process.cwd(),"node_modules",e);for(;r!==(0,Xo.dirname)(r)&&r!=="node_modules";){let n=(0,Xo.join)(r,"package.json");if(t.existsSync(n))try{let{name:o,version:i}=JSON.parse(t.readFileSync(n,"utf8"));return`${o}@${i}`}catch{return null}r=(0,Xo.dirname)(r)}return null}var Jl=class{apply(t){t.hooks.compilation.tap("ProcessSourceMapsPlugin",function(r){r.hooks.processAssets.tap({name:"ProcessSourceMapsPlugin",stage:Zo.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_INLINE},function(){try{let n=r.getAssets(),o={};Object.values(n).forEach(({name:i,source:s})=>{if(!i.endsWith(".map"))return;let[a,l,c]=i.split("."),d=o[a]?.sources??{},p=o[a]?.dependencies??new Set;JSON.parse(s.source().toString()).sources.forEach(g=>{if(g.startsWith("external")){let m=g.match(/^external \S+ "(.+)"$/)?.[1];if(!m)throw new Error(`Could not extract package name from ${g}`);let w=nA(m,r.inputFileSystem);if(!w)throw new Error(`Could not find package information for ${m}`);w&&p.add(w)}}),o[a]={sources:{...d,[`./${a}.${c}`]:l},dependencies:p},r.deleteAsset(i)}),Object.entries(o).forEach(([i,{sources:s,dependencies:a}])=>{r.emitAsset(`${i}.js.map`,new Zo.sources.RawSource(JSON.stringify({sources:s,dependencies:[...a]})))})}catch(n){r.errors.push(new Zo.WebpackError(`[ProcessSourceMapsPlugin] Could not process source maps: ${n instanceof Error?n.stack:String(n)}`))}})})}};var pk=D(require("module")),fk=require("jsdom"),Kp="__webflowCliImportModuleWindow__";function oA(e){let r=/^(?:\ufeff?\s*)(?:'use strict'|"use strict");?\s*(?:\r?\n|\r)?/.exec(e),n=!!r,o=`module[${JSON.stringify(Kp)}]`,i=[];n||i.push('"use strict";'),i.push(`var __wfW = ${o};`,'if (__wfW == null) { throw new ReferenceError("Webflow CLI internal: missing JSDOM window on module"); }',"var window = __wfW;","var document = __wfW.document;","var navigator = __wfW.navigator;","var HTMLElement = __wfW.HTMLElement;","var localStorage = __wfW.localStorage;","var sessionStorage = __wfW.sessionStorage;","var requestAnimationFrame = __wfW.requestAnimationFrame.bind(__wfW);","var cancelAnimationFrame = __wfW.cancelAnimationFrame.bind(__wfW);","var getComputedStyle = __wfW.getComputedStyle.bind(__wfW);","var performance = __wfW.performance;","");let s=i.join(`
55
55
  `)+`
56
- `;return r?e.slice(0,r[0].length)+s+e.slice(r[0].length):s+e}function Ro(e,t){let r=e.readFileSync(t,"utf-8"),o=new dg.JSDOM("<!DOCTYPE html><html><body></body></html>",{url:"http://localhost/",pretendToBeVisual:!0}).window,i=sv(r),s=new ug.default(t,module);Object.defineProperty(s,mc,{value:o,enumerable:!1,configurable:!0,writable:!1});try{return s._compile(i,t),s}finally{Reflect.deleteProperty(s,mc),o.close()}}function av(e,t){let r=`/${t}.js`,n=Ro(e,r),o=n.exports.default||n.exports;if(o&&typeof o=="object")try{return(0,lt.parseComponentMetadata)(o)}catch(i){let s=i instanceof Error?i.stack:String(i);throw new Error(`Error parsing component data for '${t}': ${s}`)}throw new Error(`Could not get declaration for '${t}'`)}async function lv({declarations:e,sources:t,overrideConfig:r={},performTypeCheck:n,bundler:o="webpack"}){let i=new gc.Volume,s=En(o),a=(0,hc.default)(s.generateBaseConfig({entry:e,env:lt.Environment.Client,publicPath:"/",libraryName:"metadata"}),s.getFrameworkConfig(lt.Framework.React,lt.Environment.Client),{entry:e,mode:"development",output:{path:"/",library:{type:"commonjs2"}},target:"node",plugins:n?[new s.typeCheckerPlugin]:[]}),c=s.mergeConfigs(lt.Environment.Client,a,r);return await s.bundle({outputPath:"/",config:c,sourceVolumes:t?[t]:[],outputVolume:i,failOnWarnings:!1}),i}async function cv({declarations:e,sources:t,overrideConfig:r={},bundler:n}){let o=new gc.Volume,i=En(n),s=(0,hc.default)(i.generateBaseConfig({entry:e,env:lt.Environment.Client,publicPath:"/",libraryName:"source-maps"}),i.getFrameworkConfig(lt.Framework.React,lt.Environment.Client),{entry:e,mode:"production",optimization:{mangleExports:"deterministic",moduleIds:"deterministic",chunkIds:"deterministic"},output:{filename:"[name].[contenthash].js",path:"/",library:{type:"commonjs2"},devtoolModuleFilenameTemplate:"[resource-path]",hashFunction:i.hashFunction},externalsPresets:{node:!0},devtool:"source-map",plugins:[new ms],externals:[(0,fg.default)()]}),a=i.mergeConfigs(lt.Environment.Client,s,r);return a=i.replaceCssPlugin(a),await i.bundle({outputPath:"/",config:a,sourceVolumes:t?[t]:[],outputVolume:o,failOnWarnings:!1}),o}function uv(e){return Object.entries(e.toJSON()).reduce((t,[r,n])=>{if(r.endsWith(".map")&&n?.length){let o=pg.default.basename(r).split(".")[0];t[o]=n}return t},{})}async function gs({declarations:e,sources:t,overrideConfig:r,performTypeCheck:n=!1,skipSourceMaps:o=!1,bundler:i="webpack"}){let[s,a]=await Promise.all([lv({declarations:e,sources:t,overrideConfig:r,performTypeCheck:n,bundler:i}),o||i==="rspack"?Promise.resolve(null):cv({declarations:e,sources:t,overrideConfig:r,bundler:i})]),{metadata:c,options:u}=Object.keys(e).reduce((f,m)=>{let g=av(s,m);return f.metadata[m]=g,f.options[m]=g.options||{},f},{metadata:{},options:{}});return{sourceMaps:a?uv(a):{},metadata:c,options:u}}function mg(e,{framework:t,sourceMaps:r}){return Object.fromEntries(Object.keys(e).map(n=>[n,{...e[n],id:n,framework:t,exportPath:"default",hash:r[n]}]))}Se();var hg=h(require("md5"));be();ie();$();var wc=" ",wg=`${wc}${Si} `;function dv(e){return e==="added"?` ${P("(Added)")}`:e==="removed"?` ${ne("(Removed)")}`:e==="changed"?` ${fe("(Changed)")}`:""}function gg(e){if(!e)return"";let t=JSON.parse(e);return(0,hg.default)(JSON.stringify([...Object.values(t.sources),...t.dependencies.filter(r=>!r.includes("@webflow/data-types")&&!r.includes("@webflow/react"))].sort()))}function pv({componentsMetadata:e,latestVersion:t,sourceMaps:r}){let n=t.resource.codeLibraryResource.manifest.components.reduce((s,a)=>(s[a.id]=a,s),{}),o={};return Object.entries(n).forEach(([s,a])=>{if(!e[s])o[s]={component:a,status:"removed"};else{let c=e[s],u=gg(r[s]),p=a.displayName&&c.displayName!==a.displayName,f=u&&a.hash&&u!==gg(a.hash),m=p||f;o[s]={component:c,status:m?"changed":"unchanged",previousName:p?a.displayName:void 0}}}),Object.entries(e).forEach(([s,a])=>{n[s]||(o[s]={component:a,status:"added"})}),Object.values(o).map(({component:s,status:a,previousName:c})=>{let u=s.displayName??"Unknown Component",p=c?`${c} ${Pe} ${u}`:u;return`${T(`${wg}${p}`)}${dv(a)}`}).sort().join(`
57
- `)}function fv({componentsMetadata:e}){return Object.values(e).map(r=>`${T(wg+(r.displayName??"Unknown Component"))}`).sort().join(`
58
- `)}async function yg({libraryConfig:e,componentsMetadata:t,existingCodeLibraries:r,sourceMaps:n,workspaceInfo:o}){if(H())return Promise.resolve(!0);let i=e.id?r.find(({profile:p})=>p.slug===e.id):null,s=i&&i.profile.status==="ACTIVE",a=s?pv({componentsMetadata:t,latestVersion:i,sourceMaps:n}):fv({componentsMetadata:t}),c=s?`Ready to update ${fe(e.name)} on ${ya(o.name)}?`:`Ready to share ${fe(e.name)} with ${ya(o.name)}?`;return await Ne({message:`${c}
56
+ `;return r?e.slice(0,r[0].length)+s+e.slice(r[0].length):s+e}function Is(e,t){let r=e.readFileSync(t,"utf-8"),o=new fk.JSDOM("<!DOCTYPE html><html><body></body></html>",{url:"http://localhost/",pretendToBeVisual:!0}).window,i=oA(r),s=new pk.default(t,module);Object.defineProperty(s,Kp,{value:o,enumerable:!1,configurable:!0,writable:!1});try{return s._compile(i,t),s}finally{Reflect.deleteProperty(s,Kp),o.close()}}function iA(e,t){let r=`/${t}.js`,n=Is(e,r),o=n.exports.default||n.exports;if(o&&typeof o=="object")try{return(0,Bt.parseComponentMetadata)(o)}catch(i){let s=i instanceof Error?i.stack:String(i);throw new Error(`Error parsing component data for '${t}': ${s}`)}throw new Error(`Could not get declaration for '${t}'`)}async function sA({declarations:e,sources:t,overrideConfig:r={},performTypeCheck:n,bundler:o="webpack"}){let i=new zp.Volume,s=Yo(o),a=(0,Jp.default)(s.generateBaseConfig({entry:e,env:Bt.Environment.Client,publicPath:"/",libraryName:"metadata"}),s.getFrameworkConfig(Bt.Framework.React,Bt.Environment.Client),{entry:e,mode:"development",output:{path:"/",library:{type:"commonjs2"}},target:"node",plugins:n?[new s.typeCheckerPlugin]:[]}),l=s.mergeConfigs(Bt.Environment.Client,a,r);return await s.bundle({outputPath:"/",config:l,sourceVolumes:t?[t]:[],outputVolume:i,failOnWarnings:!1}),i}async function aA({declarations:e,sources:t,overrideConfig:r={},bundler:n}){let o=new zp.Volume,i=Yo(n),s=(0,Jp.default)(i.generateBaseConfig({entry:e,env:Bt.Environment.Client,publicPath:"/",libraryName:"source-maps"}),i.getFrameworkConfig(Bt.Framework.React,Bt.Environment.Client),{entry:e,mode:"production",optimization:{mangleExports:"deterministic",moduleIds:"deterministic",chunkIds:"deterministic"},output:{filename:"[name].[contenthash].js",path:"/",library:{type:"commonjs2"},devtoolModuleFilenameTemplate:"[resource-path]",hashFunction:i.hashFunction},externalsPresets:{node:!0},devtool:"source-map",plugins:[new Jl],externals:[(0,gk.default)()]}),a=i.mergeConfigs(Bt.Environment.Client,s,r);return a=i.replaceCssPlugin(a),await i.bundle({outputPath:"/",config:a,sourceVolumes:t?[t]:[],outputVolume:o,failOnWarnings:!1}),o}function lA(e){return Object.entries(e.toJSON()).reduce((t,[r,n])=>{if(r.endsWith(".map")&&n?.length){let o=mk.default.basename(r).split(".")[0];t[o]=n}return t},{})}async function ql({declarations:e,sources:t,overrideConfig:r,performTypeCheck:n=!1,skipSourceMaps:o=!1,bundler:i="webpack"}){let[s,a]=await Promise.all([sA({declarations:e,sources:t,overrideConfig:r,performTypeCheck:n,bundler:i}),o||i==="rspack"?Promise.resolve(null):aA({declarations:e,sources:t,overrideConfig:r,bundler:i})]),{metadata:l,options:c}=Object.keys(e).reduce((p,h)=>{let g=iA(s,h);return p.metadata[h]=g,p.options[h]=g.options||{},p},{metadata:{},options:{}});return{sourceMaps:a?lA(a):{},metadata:l,options:c}}function hk(e,{framework:t,sourceMaps:r}){return Object.fromEntries(Object.keys(e).map(n=>[n,{...e[n],id:n,framework:t,exportPath:"default",hash:r[n]}]))}Ae();var wk=D(require("md5"));pe();de();N();var qp=" ",Dk=`${qp}${al} `;function cA(e){return e==="added"?` ${V("(Added)")}`:e==="removed"?` ${ne("(Removed)")}`:e==="changed"?` ${_e("(Changed)")}`:""}function yk(e){if(!e)return"";let t=JSON.parse(e);return(0,wk.default)(JSON.stringify([...Object.values(t.sources),...t.dependencies.filter(r=>!r.includes("@webflow/data-types")&&!r.includes("@webflow/react"))].sort()))}function uA({componentsMetadata:e,latestVersion:t,sourceMaps:r}){let n=t.resource.codeLibraryResource.manifest.components.reduce((s,a)=>(s[a.id]=a,s),{}),o={};return Object.entries(n).forEach(([s,a])=>{if(!e[s])o[s]={component:a,status:"removed"};else{let l=e[s],c=yk(r[s]),d=a.displayName&&l.displayName!==a.displayName,p=c&&a.hash&&c!==yk(a.hash),h=d||p;o[s]={component:l,status:h?"changed":"unchanged",previousName:d?a.displayName:void 0}}}),Object.entries(e).forEach(([s,a])=>{n[s]||(o[s]={component:a,status:"added"})}),Object.values(o).map(({component:s,status:a,previousName:l})=>{let c=s.displayName??"Unknown Component",d=l?`${l} ${ot} ${c}`:c;return`${R(`${Dk}${d}`)}${cA(a)}`}).sort().join(`
57
+ `)}function dA({componentsMetadata:e}){return Object.values(e).map(r=>`${R(Dk+(r.displayName??"Unknown Component"))}`).sort().join(`
58
+ `)}async function kk({libraryConfig:e,componentsMetadata:t,existingCodeLibraries:r,sourceMaps:n,workspaceInfo:o}){if(W())return Promise.resolve(!0);let i=e.id?r.find(({profile:d})=>d.slug===e.id):null,s=i&&i.profile.status==="ACTIVE",a=s?uA({componentsMetadata:t,latestVersion:i,sourceMaps:n}):dA({componentsMetadata:t}),l=s?`Ready to update ${_e(e.name)} on ${qu(o.name)}?`:`Ready to share ${_e(e.name)} with ${qu(o.name)}?`;return await Pe({message:`${l}
59
59
 
60
- ${wc}${T("Code components:")}
60
+ ${qp}${R("Code components:")}
61
61
  ${a}
62
62
 
63
- ${wc}Confirm to proceed`})}var hs=require("path"),vg=require("memfs/lib/volume");var Dg=h(require("fast-glob")),mv=e=>{let t=e.split("/");return t[t.length-1]},gv=e=>mv(e).split(".")[0];async function bg(e,t){return(await Dg.default.glob(e,{absolute:!0,...t||{}})).reduce((n,o)=>{let i=gv(o);if(n[i])throw new Error(`Duplicate component '${i}' found. Already declared at ${n[i]}, but also found at ${o}.`);return{...n,[i]:o}},{})}async function ws(e){let t=await bg(e.components,{cwd:(0,hs.dirname)(e.manifestPath),ignore:["**/dist/**","**/node_modules/**",e.globals,e.bundleConfig].filter(o=>o!=null)});if(!Object.keys(t).length)throw new Error("No declaration files found");let{componentsFiles:r,componentsVolume:n}=hv(t,e.renderer.client,e.globals);return{componentsFiles:r,componentsVolume:n}}function hv(e,t,r){let n={},o={};return Object.entries(e).forEach(([i,s])=>{let a=(0,hs.extname)(s),c=`${_t}/${wm}/${i}${a}`;n[i]=c,o[c]=wv(t,s,r)}),{componentsFiles:n,componentsVolume:vg.Volume.fromJSON(o)}}function wv(e,t,r){return r?`
63
+ ${qp}Confirm to proceed`})}var Yl=require("path"),vk=require("memfs/lib/volume");var bk=D(require("fast-glob")),pA=e=>{let t=e.split("/");return t[t.length-1]},fA=e=>pA(e).split(".")[0];async function Ek(e,t){return(await bk.default.glob(e,{absolute:!0,...t||{}})).reduce((n,o)=>{let i=fA(o);if(n[i])throw new Error(`Duplicate component '${i}' found. Already declared at ${n[i]}, but also found at ${o}.`);return{...n,[i]:o}},{})}async function Xl(e){let t=await Ek(e.components,{cwd:(0,Yl.dirname)(e.manifestPath),ignore:["**/dist/**","**/node_modules/**",e.globals,e.bundleConfig].filter(o=>o!=null)});if(!Object.keys(t).length)throw new Error("No declaration files found");let{componentsFiles:r,componentsVolume:n}=mA(t,e.renderer.client,e.globals);return{componentsFiles:r,componentsVolume:n}}function mA(e,t,r){let n={},o={};return Object.entries(e).forEach(([i,s])=>{let a=(0,Yl.extname)(s),l=`${gr}/${DD}/${i}${a}`;n[i]=l,o[l]=gA(t,s,r)}),{componentsFiles:n,componentsVolume:vk.Volume.fromJSON(o)}}function gA(e,t,r){return r?`
64
64
  import { applyDecorators } from "${e}";
65
65
  import componentDefinition from "${t}";
66
66
  const globals = require("${r}") || {};
@@ -82,51 +82,56 @@ export default decoratedDefinition;
82
82
  `.trim():`
83
83
  import componentDefinition from "${t}";
84
84
  export default {...componentDefinition};
85
- `.trim()}U();Yi();var Eg=require("@webflow/data-types"),ys={renderer:{client:"@webflow/react",server:"@webflow/react/server"},components:["**/*.webflow.@(js|jsx|mjs|ts|tsx)"],framework:Eg.Framework.React};var _n=require("path"),Cn=require("fs");Se();v();ve();function Wt(e){return e.replace(/\\/g,"/")}be();x();ie();$();function Fg(e){let t={...e};if(e.globals){let r=(0,_n.resolve)(process.cwd(),e.globals);if(!(0,Cn.existsSync)(r))throw new Error(`Globals file not found: ${e.globals}
85
+ `.trim()}J();Rl();var Sk=require("@webflow/data-types"),Zl={renderer:{client:"@webflow/react",server:"@webflow/react/server"},components:["**/*.webflow.@(js|jsx|mjs|ts|tsx)"],framework:Sk.Framework.React};var Qo=require("path"),ei=require("fs");Ae();x();Me();function Lr(e){return e.replace(/\\/g,"/")}pe();S();de();N();function xk(e){let t={...e};if(e.globals){let r=(0,Qo.resolve)(process.cwd(),e.globals);if(!(0,ei.existsSync)(r))throw new Error(`Globals file not found: ${e.globals}
86
86
  Resolved path: ${r}
87
- Please ensure the file exists or remove the 'globals' field from your manifest.`);t.globals=Wt(r)}if(e.bundleConfig){let r=(0,_n.resolve)(process.cwd(),e.bundleConfig);if(!(0,Cn.existsSync)(r))throw new Error(`Bundle config file not found: ${e.bundleConfig}
87
+ Please ensure the file exists or remove the 'globals' field from your manifest.`);t.globals=Lr(r)}if(e.bundleConfig){let r=(0,Qo.resolve)(process.cwd(),e.bundleConfig);if(!(0,ei.existsSync)(r))throw new Error(`Bundle config file not found: ${e.bundleConfig}
88
88
  Resolved path: ${r}
89
- Please ensure the file exists or remove the 'bundleConfig' field from your manifest.`);t.bundleConfig=Wt(r)}if(typeof e.renderer=="string"){let r=(0,_n.resolve)(process.cwd(),e.renderer);(0,Cn.existsSync)(r)&&(t.renderer=Wt(r))}else if(typeof e.renderer=="object"&&typeof t.renderer=="object"){if(typeof e.renderer.client=="string"){let r=(0,_n.resolve)(process.cwd(),e.renderer.client);(0,Cn.existsSync)(r)&&(t.renderer={...t.renderer,client:Wt(r)})}if(typeof e.renderer.server=="string"){let r=(0,_n.resolve)(process.cwd(),e.renderer.server);(0,Cn.existsSync)(r)&&(t.renderer={...t.renderer,server:Wt(r)})}}return t}async function yv({initialData:e}){let t=await ke({message:"Enter a name for your code library",validate:o=>o.trim()===""?"The library name cannot be empty.":!0,default:e?.name});if(t==null)throw new d("When --no-input mode is enabled please provide a name in your library manifest");let r=await ke({message:"Enter a description for your code library",default:e?.description??""});if(!await Ne({message:"Is the code (including 3rd party packages) you are uploading to Webflow trusted and secure?"}))throw new Error("Code library is not trusted and secure");return{name:t,description:r}}async function Dv({existingCodeLibraries:e}){let t={name:"[Create new code library]",value:null},n=[...e].sort((i,s)=>{let a=i.resource.codeLibraryResource.manifest.name??"",c=s.resource.codeLibraryResource.manifest.name??"",u=a.localeCompare(c,void 0,{sensitivity:"base"});return u!==0?u:i.profile.slug.localeCompare(s.profile.slug,void 0,{sensitivity:"base"})}).map(({resource:i,profile:s})=>{let a=`${i.codeLibraryResource.manifest.name} (${s.slug})`;s.status==="ARCHIVED"&&(a+=` ${ne("(Unshared)")}`);let c={id:s.slug,name:i.codeLibraryResource.manifest.name,description:i.codeLibraryResource.manifest.description};return{name:a,value:c}});return await Ri({message:"Select an existing code library (or create new):",source:i=>{if(!i)return[t,...n];let s=i.toLowerCase(),a=n.filter(c=>{let u=c.value?.id??"",p=c.value?.name??"",f=c.value?.description??"";return u.toLowerCase().includes(s)||p.toLowerCase().includes(s)||f.toLowerCase().includes(s)});return[t,...a]},pageSize:15})}async function yc({initialData:e,existingCodeLibraries:t}){let r,n={components:ys.components},o=t.length>0?await Dv({existingCodeLibraries:t}):null;if(o)r={...n,...o,...e,id:o.id};else{let a=await yv({initialData:e});r={...n,...e,...a}}let i=Fg(r);pe({library:i}),l.info(`${O} Library configuration updated in webflow.json`);let{path:s}=xr();return{libraryManifest:i,manifestPath:s}}async function xg({existingCodeLibraries:e}){let t=l.spinner("Looking for webflow.json manifest");try{let{manifest:r,manifestPath:n}=J(),o=lo(r,"library");if(!o.id){if(yt())return t.succeed(),yc({initialData:o,existingCodeLibraries:e});throw new Error("Library manifest does not have an id")}let i=o.name??e.find(({profile:a})=>a.slug===o.id)?.resource.codeLibraryResource.manifest.name;if(!i&&yt())return t.succeed(),yc({initialData:o,existingCodeLibraries:e});i||(i=o.id),t.succeed();let s=Fg({...o,name:i});return Promise.resolve({libraryManifest:s,manifestPath:n})}catch(r){if(r instanceof Fr&&yt())return t.info(r.message),yc({existingCodeLibraries:e});throw t.fail(),r}}var Dc=require("memfs/lib/volume"),kg=h(require("webpack-merge"));var Sg="/client-renderer.js",Ag="/server-renderer.js",_g=`${_t}/test-renderers${Sg}`,Cg=`${_t}/test-renderers${Ag}`,bv=new Set(["@webflow/react"]),vv=new Set(["@webflow/react/server","@webflow/emotion-utils/server","@webflow/styled-components-utils/server"]);async function Tg(e){if(!e.client||!e.server)throw new Error("Invalid renderer configuration. Both client and server renderers must be specified.");if(bv.has(e.client)&&vv.has(e.server))return;let t=await xv(e);Ev(e.client,t),Fv(e.server,t)}function Ev(e,t){let r=Ro(t,Sg);if(typeof r.exports.ClientRenderer!="function")throw new Error(`Invalid client renderer: ${e} does not have a valid 'ClientRenderer' export.`);if(typeof r.exports.applyDecorators!="function")throw new Error(`Invalid client renderer: ${e} does not have a valid 'applyDecorators' export.`);let n=()=>null,o=r.exports.ClientRenderer(n),i=["mount","hydrate","render","createSlot"];for(let s of i)if(typeof o[s]!="function")throw new Error(`Invalid client renderer: ${e} ClientRenderer must return an object with a '${s}' function.`)}function Fv(e,t){let r=Ro(t,Ag);if(typeof r.exports.ServerRenderer!="function")throw new Error(`Invalid server renderer: ${e} does not have a valid 'ServerRenderer' export.`);let n=()=>null,o=r.exports.ServerRenderer(n),i=["renderToStream","renderToString","prerenderToString","createSlot"];for(let s of i)if(typeof o[s]!="function")throw new Error(`Invalid server renderer: ${e} ServerRenderer must return an object with a '${s}' function.`)}async function xv(e){let t=new Dc.Volume,r=Wt(e.client),n=Wt(e.server),o={[_g]:`
89
+ Please ensure the file exists or remove the 'bundleConfig' field from your manifest.`);t.bundleConfig=Lr(r)}if(typeof e.renderer=="string"){let r=(0,Qo.resolve)(process.cwd(),e.renderer);(0,ei.existsSync)(r)&&(t.renderer=Lr(r))}else if(typeof e.renderer=="object"&&typeof t.renderer=="object"){if(typeof e.renderer.client=="string"){let r=(0,Qo.resolve)(process.cwd(),e.renderer.client);(0,ei.existsSync)(r)&&(t.renderer={...t.renderer,client:Lr(r)})}if(typeof e.renderer.server=="string"){let r=(0,Qo.resolve)(process.cwd(),e.renderer.server);(0,ei.existsSync)(r)&&(t.renderer={...t.renderer,server:Lr(r)})}}return t}async function hA({initialData:e}){let t=await Je({message:"Enter a name for your code library",validate:o=>o.trim()===""?"The library name cannot be empty.":!0,default:e?.name});if(t==null)throw new f("When --no-input mode is enabled please provide a name in your library manifest");let r=await Je({message:"Enter a description for your code library",default:e?.description??""});if(!await Pe({message:"Is the code (including 3rd party packages) you are uploading to Webflow trusted and secure?"}))throw new Error("Code library is not trusted and secure");return{name:t,description:r}}async function yA({existingCodeLibraries:e}){let t={name:"[Create new code library]",value:null},n=[...e].sort((i,s)=>{let a=i.resource.codeLibraryResource.manifest.name??"",l=s.resource.codeLibraryResource.manifest.name??"",c=a.localeCompare(l,void 0,{sensitivity:"base"});return c!==0?c:i.profile.slug.localeCompare(s.profile.slug,void 0,{sensitivity:"base"})}).map(({resource:i,profile:s})=>{let a=`${i.codeLibraryResource.manifest.name} (${s.slug})`;s.status==="ARCHIVED"&&(a+=` ${ne("(Unshared)")}`);let l={id:s.slug,name:i.codeLibraryResource.manifest.name,description:i.codeLibraryResource.manifest.description};return{name:a,value:l}});return await dl({message:"Select an existing code library (or create new):",source:i=>{if(!i)return[t,...n];let s=i.toLowerCase(),a=n.filter(l=>{let c=l.value?.id??"",d=l.value?.name??"",p=l.value?.description??"";return c.toLowerCase().includes(s)||d.toLowerCase().includes(s)||p.toLowerCase().includes(s)});return[t,...a]},pageSize:15})}async function Yp({initialData:e,existingCodeLibraries:t}){let r,n={components:Zl.components},o=t.length>0?await yA({existingCodeLibraries:t}):null;if(o)r={...n,...o,...e,id:o.id};else{let a=await hA({initialData:e});r={...n,...e,...a}}let i=xk(r);xe({library:i}),u.info(`${L} Library configuration updated in webflow.json`);let{path:s}=In();return{libraryManifest:i,manifestPath:s}}async function Ck({existingCodeLibraries:e}){let t=u.spinner("Looking for webflow.json manifest");try{let{manifest:r,manifestPath:n}=Z(),o=ls(r,"library");if(!o.id){if(er())return t.succeed(),Yp({initialData:o,existingCodeLibraries:e});throw new Error("Library manifest does not have an id")}let i=o.name??e.find(({profile:a})=>a.slug===o.id)?.resource.codeLibraryResource.manifest.name;if(!i&&er())return t.succeed(),Yp({initialData:o,existingCodeLibraries:e});i||(i=o.id),t.succeed();let s=xk({...o,name:i});return Promise.resolve({libraryManifest:s,manifestPath:n})}catch(r){if(r instanceof Rn&&er())return t.info(r.message),Yp({existingCodeLibraries:e});throw t.fail(),r}}var Xp=require("memfs/lib/volume"),Ak=D(require("webpack-merge"));var Tk="/client-renderer.js",Rk="/server-renderer.js",_k=`${gr}/test-renderers${Tk}`,Fk=`${gr}/test-renderers${Rk}`,wA=new Set(["@webflow/react"]),DA=new Set(["@webflow/react/server","@webflow/emotion-utils/server","@webflow/styled-components-utils/server"]);async function Ik(e){if(!e.client||!e.server)throw new Error("Invalid renderer configuration. Both client and server renderers must be specified.");if(wA.has(e.client)&&DA.has(e.server))return;let t=await EA(e);kA(e.client,t),bA(e.server,t)}function kA(e,t){let r=Is(t,Tk);if(typeof r.exports.ClientRenderer!="function")throw new Error(`Invalid client renderer: ${e} does not have a valid 'ClientRenderer' export.`);if(typeof r.exports.applyDecorators!="function")throw new Error(`Invalid client renderer: ${e} does not have a valid 'applyDecorators' export.`);let n=()=>null,o=r.exports.ClientRenderer(n),i=["mount","hydrate","render","createSlot"];for(let s of i)if(typeof o[s]!="function")throw new Error(`Invalid client renderer: ${e} ClientRenderer must return an object with a '${s}' function.`)}function bA(e,t){let r=Is(t,Rk);if(typeof r.exports.ServerRenderer!="function")throw new Error(`Invalid server renderer: ${e} does not have a valid 'ServerRenderer' export.`);let n=()=>null,o=r.exports.ServerRenderer(n),i=["renderToStream","renderToString","prerenderToString","createSlot"];for(let s of i)if(typeof o[s]!="function")throw new Error(`Invalid server renderer: ${e} ServerRenderer must return an object with a '${s}' function.`)}async function EA(e){let t=new Xp.Volume,r=Lr(e.client),n=Lr(e.server),o={[_k]:`
90
90
  export * from "${r}";
91
- `,[Cg]:`
91
+ `,[Fk]:`
92
92
  export * from "${n}";
93
- `},i=(0,kg.default)(as(),{entry:{"client-renderer":_g,"server-renderer":Cg},mode:"development",output:{path:"/",filename:"[name].js",library:{type:"commonjs2"}},target:"node"});return await us({config:i,sourceVolumes:[Dc.Volume.fromJSON(o)],outputVolume:t,failOnWarnings:!1}),t}async function Ds({existingCodeLibraries:e}){let{libraryManifest:t,manifestPath:r}=await xg({existingCodeLibraries:e}),{renderer:n,...o}=ys,i=typeof t.renderer=="string"?{client:t.renderer,server:t.renderer}:{client:t.renderer?.client??n.client,server:t.renderer?.server??n.server};return i.server==="@webflow/react"&&(i.server="@webflow/react/server"),await Tg(i),{...o,...t,renderer:i,manifestPath:r}}x();$();async function _v(e,t){let{trackPerformance:r,libraryConfig:n}=e;return await r("collect_metadata",async()=>{let{componentsFiles:o,componentsVolume:i}=await ws(n);l.debug(`Components: ${JSON.stringify(o,null,2)}`);let{sourceMaps:s,metadata:a,options:c}=await gs({declarations:o,sources:i,overrideConfig:e.overrideConfig,performTypeCheck:Zi(o,t),bundler:t?.bundler});return l.debug(`Metadata: ${JSON.stringify(a,null,2)}`),l.debug(`Source Maps:
93
+ `},i=(0,Ak.default)(Ul(),{entry:{"client-renderer":_k,"server-renderer":Fk},mode:"development",output:{path:"/",filename:"[name].js",library:{type:"commonjs2"}},target:"node"});return await Vl({config:i,sourceVolumes:[Xp.Volume.fromJSON(o)],outputVolume:t,failOnWarnings:!1}),t}async function Ql({existingCodeLibraries:e}){let{libraryManifest:t,manifestPath:r}=await Ck({existingCodeLibraries:e}),{renderer:n,...o}=Zl,i=typeof t.renderer=="string"?{client:t.renderer,server:t.renderer}:{client:t.renderer?.client??n.client,server:t.renderer?.server??n.server};return i.server==="@webflow/react"&&(i.server="@webflow/react/server"),await Ik(i),{...o,...t,renderer:i,manifestPath:r}}S();N();async function vA(e,t){let{trackPerformance:r,libraryConfig:n}=e;return await r("collect_metadata",async()=>{let{componentsFiles:o,componentsVolume:i}=await Xl(n);u.debug(`Components: ${JSON.stringify(o,null,2)}`);let{sourceMaps:s,metadata:a,options:l}=await ql({declarations:o,sources:i,overrideConfig:e.overrideConfig,performTypeCheck:Tl(o,t),bundler:t?.bundler});return u.debug(`Metadata: ${JSON.stringify(a,null,2)}`),u.debug(`Source Maps:
94
94
 
95
- ${Object.entries(s).reduce((u,[p,f])=>(u+=`${p}: ${JSON.stringify(JSON.parse(f),null,2)}
95
+ ${Object.entries(s).reduce((c,[d,p])=>(c+=`${d}: ${JSON.stringify(JSON.parse(p),null,2)}
96
96
 
97
- `,u),"")}`),{componentsFiles:o,componentsVolume:i,componentsMetadata:a,componentsOptions:c,sourceMaps:s}})}async function Cv(e,t,r,n,o,i,s){let{trackPerformance:a,libraryConfig:c}=e;return await a("generate_library_bundle",async()=>await fs({libraryIdentifier:`_${o}`,renderer:c.renderer,framework:c.framework,publicPath:ar(i[kn.Environment.Client]),sourceVolumes:[r],componentsFiles:t,componentsOptions:n,debugBundler:s?.debugBundler,dev:s?.dev,overrideConfig:e.overrideConfig,failOnWarnings:!s?.force,bundler:s?.bundler}))}async function kv(e,t,r,n){let{trackPerformance:o,apiOptions:i}=e;return await o("upload_files",async()=>{let s=t.map(([c,u])=>{let p=(0,bs.resolve)((0,bs.join)(`/${u}`,`${c.name}`));return Ao(r.readFileSync(p,"utf8").toString(),p,{bundleEnvironment:u})}),{signatures:a}=await oc({resourceId:n,files:s.map(({meta:c})=>c),options:i});await Promise.all(a.map(async c=>{let u=s.find(p=>p.meta.fileHash===c.hash);if(!u)throw new Error(`File not found: ${c.hash}`);await To(u,c.value)}))})}async function Sv(e,t,r,n,o){let{trackPerformance:i,libraryConfig:s,apiOptions:a}=e;return await i("share_library",async()=>{let c={clientModule:{bundleUrl:ar(o[kn.Environment.Client])+po,loaderType:kn.ModuleLoader.FEDERATION},serverModule:{bundleUrl:ar(o[kn.Environment.Server])+mo}},u=mg(t,{framework:s.framework,sourceMaps:r}),{taskId:p}=await ic({resourceId:n,codeModule:c,components:Object.values(u),options:a});l.debug(JSON.stringify({taskId:p},null,2))})}async function bc(e){e?.verbose&&(process.env.DEBUG="true");let t,r=Date.now(),n=await E({apiToken:e?.apiToken});l.debug("Initializing telemetry service...");let o=b.forCodeLibraries({authToken:n}),i=jp(o);try{l.debug("Checking dependencies versions..."),new kr().run();let s={apiToken:n};t=l.spinner("Initializing");let a=await i("get_code_libraries",async()=>await rc({options:s})),{workspace:c,libraries:u}=a;t.succeed(),l.debug("Parsing library config...");let p=await Ds({existingCodeLibraries:u}),f=p.bundleConfig?require(p.bundleConfig):{},m={trackPerformance:i,apiOptions:s,libraryConfig:p,overrideConfig:f};t=l.spinner("Collecting metadata");let{componentsFiles:g,componentsVolume:w,componentsMetadata:I,componentsOptions:C,sourceMaps:q}=await _v(m,e);if(t.succeed(),!await yg({libraryConfig:p,componentsMetadata:I,existingCodeLibraries:u,sourceMaps:q,workspaceInfo:c}))return;t=l.spinner("Creating code library");let{resourceId:S,profileSlug:oe,workspace:ye,s3Urls:X,cdnUrls:M}=await i("init_code_library",async()=>await nc({name:p.name,slug:p.id,description:p.description,options:s}));t.succeed(),l.debug(JSON.stringify({resourceId:S,profileSlug:oe,s3Urls:X,cdnUrls:M},null,2)),await o.sendUsage("library_initialized",{libraryName:p.name,framework:p.framework,resourceId:S,profileSlug:oe}),p.id||(pe({library:{id:oe}}),l.info(`${O} Library ID updated in webflow.json`)),t=l.spinner("Compiling code components");let{outputFiles:Xn,outputVolume:fa}=await Cv(m,g,w,C,S,M,e);t.succeed(),await o.sendUsage("bundle_generated",{libraryName:p.name,componentCount:Object.keys(g).length,resourceId:S,profileSlug:oe}),t=l.spinner("Uploading files"),await kv(m,Xn,fa,S),t.succeed(),await o.sendUsage("files_uploaded",{libraryName:p.name,fileCount:Xn.length,resourceId:S,profileSlug:oe}),t=l.spinner("Sharing library"),await Sv(m,I,q,S,M),t.succeed(),l.success(`Code library shared successfully${ye?.slug?`: ${fn}/dashboard/workspace/${ye?.slug}/shared-libraries-and-templates`:"!"}`);let ma=Date.now()-r;await o.sendUsage("share_library",{duration:ma,componentCount:Object.keys(g).length,libraryName:p.name,framework:p.framework,resourceId:S,profileSlug:oe})}catch(s){t?.fail();let a=Date.now()-r;throw await o.sendError(s instanceof Error?s:new Error(String(s)),"share_library",{duration:a}),new d(s)}}var vs=h(require("fs")),Sn=require("path");v();Yi();x();var Av="CodeLibrary",Tv="dist",Iv="http://localhost/";async function vc(e){e.verbose&&(process.env.DEBUG="true");let t;try{l.debug("Checking dependencies versions..."),new kr().run(),l.debug("Looking for manifest...");let r=await Ds({existingCodeLibraries:[]}),n=os(r.name)||Av,o=`_${e.libraryId||n}`;e?.debugBundler&&l.debug(`Library Config: ${JSON.stringify(r,null,2)}`),t=l.spinner("Collecting metadata");let{componentsFiles:i,componentsVolume:s}=await ws(r);e?.debugBundler&&l.debug(`Components: ${JSON.stringify(i,null,2)}`);let a=r.bundleConfig?require(r.bundleConfig):{},{sourceMaps:c,metadata:u,options:p}=await gs({declarations:i,sources:s,overrideConfig:a,performTypeCheck:Zi(i,e),skipSourceMaps:!e?.debugBundler,bundler:e.bundler});e?.debugBundler&&(l.debug(`Metadata: ${JSON.stringify(u,null,2)}`),l.debug(`Source Maps:
97
+ `,c),"")}`),{componentsFiles:o,componentsVolume:i,componentsMetadata:a,componentsOptions:l,sourceMaps:s}})}async function SA(e,t,r,n,o,i,s){let{trackPerformance:a,libraryConfig:l}=e;return await a("generate_library_bundle",async()=>await zl({libraryIdentifier:`_${o}`,renderer:l.renderer,framework:l.framework,publicPath:an(i[ti.Environment.Client]),sourceVolumes:[r],componentsFiles:t,componentsOptions:n,debugBundler:s?.debugBundler,dev:s?.dev,overrideConfig:e.overrideConfig,failOnWarnings:!s?.force,bundler:s?.bundler}))}async function xA(e,t,r,n){let{trackPerformance:o,apiOptions:i}=e;return await o("upload_files",async()=>{let s=t.map(([l,c])=>{let d=(0,ec.resolve)((0,ec.join)(`/${c}`,`${l.name}`));return Fs(r.readFileSync(d,"utf8").toString(),d,{bundleEnvironment:c})}),{signatures:a}=await Lp({resourceId:n,files:s.map(({meta:l})=>l),options:i});await Promise.all(a.map(async l=>{let c=s.find(d=>d.meta.fileHash===l.hash);if(!c)throw new Error(`File not found: ${l.hash}`);await As(c,l.value)}))})}async function CA(e,t,r,n,o){let{trackPerformance:i,libraryConfig:s,apiOptions:a}=e;return await i("share_library",async()=>{let l={clientModule:{bundleUrl:an(o[ti.Environment.Client])+ds,loaderType:ti.ModuleLoader.FEDERATION},serverModule:{bundleUrl:an(o[ti.Environment.Server])+fs}},c=hk(t,{framework:s.framework,sourceMaps:r}),{taskId:d}=await Np({resourceId:n,codeModule:l,components:Object.values(c),options:a});u.debug(JSON.stringify({taskId:d},null,2))})}async function Zp(e){e?.verbose&&(process.env.DEBUG="true");let t,r=Date.now(),n=await T({apiToken:e?.apiToken});u.debug("Initializing telemetry service...");let o=_.forCodeLibraries({authToken:n}),i=Ly(o);try{u.debug("Checking dependencies versions..."),new Pn().run();let s={apiToken:n};t=u.spinner("Initializing");let a=await i("get_code_libraries",async()=>await Pp({options:s})),{workspace:l,libraries:c}=a;t.succeed(),u.debug("Parsing library config...");let d=await Ql({existingCodeLibraries:c}),p=d.bundleConfig?require(d.bundleConfig):{},h={trackPerformance:i,apiOptions:s,libraryConfig:d,overrideConfig:p};t=u.spinner("Collecting metadata");let{componentsFiles:g,componentsVolume:m,componentsMetadata:w,componentsOptions:k,sourceMaps:F}=await vA(h,e);if(t.succeed(),!await kk({libraryConfig:d,componentsMetadata:w,existingCodeLibraries:c,sourceMaps:F,workspaceInfo:l}))return;t=u.spinner("Creating code library");let{resourceId:E,profileSlug:v,workspace:M,s3Urls:B,cdnUrls:U}=await i("init_code_library",async()=>await $p({name:d.name,slug:d.id,description:d.description,options:s}));t.succeed(),u.debug(JSON.stringify({resourceId:E,profileSlug:v,s3Urls:B,cdnUrls:U},null,2)),await o.sendUsage("library_initialized",{libraryName:d.name,framework:d.framework,resourceId:E,profileSlug:v}),d.id||(xe({library:{id:v}}),u.info(`${L} Library ID updated in webflow.json`)),t=u.spinner("Compiling code components");let{outputFiles:Ie,outputVolume:Ze}=await SA(h,g,m,k,E,U,e);t.succeed(),await o.sendUsage("bundle_generated",{libraryName:d.name,componentCount:Object.keys(g).length,resourceId:E,profileSlug:v}),t=u.spinner("Uploading files"),await xA(h,Ie,Ze,E),t.succeed(),await o.sendUsage("files_uploaded",{libraryName:d.name,fileCount:Ie.length,resourceId:E,profileSlug:v}),t=u.spinner("Sharing library"),await CA(h,w,F,E,U),t.succeed(),u.success(`Code library shared successfully${M?.slug?`: ${Uo}/dashboard/workspace/${M?.slug}/shared-libraries-and-templates`:"!"}`);let Ee=Date.now()-r;await o.sendUsage("share_library",{duration:Ee,componentCount:Object.keys(g).length,libraryName:d.name,framework:d.framework,resourceId:E,profileSlug:v})}catch(s){t?.fail();let a=Date.now()-r;throw await o.sendError(s instanceof Error?s:new Error(String(s)),"share_library",{duration:a}),new f(s)}}var tc=D(require("fs")),ri=require("path");x();Rl();S();var _A="CodeLibrary",FA="dist",AA="http://localhost/";async function Qp(e){e.verbose&&(process.env.DEBUG="true");let t;try{u.debug("Checking dependencies versions..."),new Pn().run(),u.debug("Looking for manifest...");let r=await Ql({existingCodeLibraries:[]}),n=jl(r.name)||_A,o=`_${e.libraryId||n}`;e?.debugBundler&&u.debug(`Library Config: ${JSON.stringify(r,null,2)}`),t=u.spinner("Collecting metadata");let{componentsFiles:i,componentsVolume:s}=await Xl(r);e?.debugBundler&&u.debug(`Components: ${JSON.stringify(i,null,2)}`);let a=r.bundleConfig?require(r.bundleConfig):{},{sourceMaps:l,metadata:c,options:d}=await ql({declarations:i,sources:s,overrideConfig:a,performTypeCheck:Tl(i,e),skipSourceMaps:!e?.debugBundler,bundler:e.bundler});e?.debugBundler&&(u.debug(`Metadata: ${JSON.stringify(c,null,2)}`),u.debug(`Source Maps:
98
98
 
99
- ${Object.entries(c).reduce((g,[w,I])=>(g+=`${w}: ${JSON.stringify(JSON.parse(I),null,2)}
99
+ ${Object.entries(l).reduce((g,[m,w])=>(g+=`${m}: ${JSON.stringify(JSON.parse(w),null,2)}
100
100
 
101
- `,g),"")}`)),t.succeed(),t=l.spinner("Generating library bundle");let{outputFiles:f,outputVolume:m}=await fs({libraryIdentifier:o,renderer:r.renderer,framework:r.framework,publicPath:ar(e.publicPath||Iv),sourceVolumes:[s],componentsFiles:i,componentsOptions:p,debugBundler:e?.debugBundler,dev:e?.dev,overrideConfig:a,failOnWarnings:!e.force,bundler:e.bundler});t.succeed(),t=l.spinner("Writing to disk"),f.forEach(([g,w])=>{let I=(0,Sn.join)(`/${w}`,`${g.name}`),C=Ao(m.readFileSync(I,"utf8").toString(),I,{bundleEnvironment:w}),q=(0,Sn.join)(process.cwd(),e.outputPath||Tv);vs.default.existsSync((0,Sn.join)(q,`${w}`))||vs.default.mkdirSync((0,Sn.join)(q,`${w}`),{recursive:!0}),vs.default.writeFileSync((0,Sn.join)(q,w,g.name),C.value.toString())}),t.succeed(),l.success("Code Library bundled successfully!")}catch(r){throw t?.fail(),new d(r)}}v();$();var $o=h(require("fs-extra")),Ec=h(require("path"));v();$();function Ov(){try{if(!$o.default.existsSync(Ye))return null;let e=$o.default.readdirSync(Ye).filter(t=>t.endsWith(".log")).map(t=>({name:t,path:Ec.default.join(Ye,t),time:$o.default.statSync(Ec.default.join(Ye,t)).mtime.getTime()})).sort((t,r)=>r.time-t.time);if(e.length===0)return null;for(let t of e)try{let n=$o.default.readFileSync(t.path,"utf8").match(/Command: (.+)/);if(n){let o=n[1];if(!/^(log|library\s+log)(\s|$)/.test(o))return t.path}}catch{continue}return null}catch{return null}}async function Fc(){let e=Ov();e&&l.info(`${pn} Latest log: ${e}`),l.info(`${pn} All logs: ${Ye}`)}async function Ig(e){e.command("log").description("Display the logs directory and path to the latest log file, if available.").action(Fc)}var he=require("commander"),xc=()=>new he.Option("--no-input","Avoid prompting or doing anything interactive. Use this for CI/CD pipelines. Auto-enabled when CI=true or no TTY is detected."),_c=()=>new he.Option("--manifest <path>","Path to a manifest.json file or directory containing webflow.json. Default: ./webflow.json"),Cc=()=>new he.Option("--skip-update-check","Skip checking for @webflow packages updates"),kc=()=>new he.Option("--verbose","Display more information for debugging purposes."),Po=()=>new he.Option("--api-token <token>","API token. Default: value set in WEBFLOW_API_TOKEN env variable."),Xe=()=>new he.Option("-s, --site <site-id>","Site ID. Default: value set in webflow.json config."),Y=()=>new he.Option("--json","Output as JSON"),jo=()=>new he.Option("--app-id <id>","Cloud app ID. Default: value set in webflow.json (cloud.app_id)."),No=()=>new he.Option("--environment-id <id>","Environment ID. Default: value set in webflow.json (cloud.environment_id)."),Sc=()=>new he.Option("--secret","Mark the variable(s) as secret. Secret values are encrypted and never displayed."),Ae=()=>new he.Option("--dry-run","Preview without executing"),Og=()=>new he.Option("-y, --yes","Skip confirmation prompt"),Es=()=>new he.Option("--order <dir>","Sort direction: asc or desc").default("asc"),xe=e=>new he.Option("--fields <fields>",`Comma-separated fields to display (${e.join(", ")})`),Fs=e=>new he.Option("--sort-by <field>",`Sort by: ${e.join(", ")}`),xs=()=>new he.Option("--limit <n>","Maximum number of items to return (default 100)").default("100").argParser(parseInt),_s=()=>new he.Option("--offset <n>","Number of items to skip (default 0)").default("0").argParser(parseInt),Rv=100,Cs=e=>{let t=Number(e);if(!Number.isInteger(t)||t<=0)throw new he.InvalidArgumentError("must be a positive integer.");return t},Ac=()=>new he.Option("--limit <n>","Max log lines to return (default: 100)").default(Rv).argParser(Cs),$v=20,Rg=()=>new he.Option("--limit <n>","Max deployments to return, most recent first (default: 20)").default($v).argParser(Cs),Lo=e=>async(t,r)=>{let o={...r.parent?.opts()||{},...t};await e(o)};ie();var Pv=`${ne("[Deprecated]")} The 'library' commands will be removed in the next major release.`,jv=()=>{l.warn(`${ge} ${ne("webflow library share")} is deprecated and will be removed in the next major release.
102
- Use ${P("webflow devlink import")} instead.
103
- `)},Nv=()=>{l.warn(`${ge} ${ne("webflow library bundle")} is deprecated and will be removed in the next major release.
104
- Use ${P("webflow devlink bundle")} instead.
105
- `)},Lv=()=>{l.warn(`${ge} ${ne("webflow library log")} is deprecated and will be removed in the next major release.
106
- Use ${P("webflow log")} instead.
107
- `)},Bv="Import a library of Code Components into your Webflow Workspace.",Mv="Bundle a library of Code Components for local development.",$g=()=>new cr.Option("-f, --force","Force the bundler to finish compiling, even if there are warnings or type errors."),Pg=()=>new cr.Option("--debug-bundler","Display final bundler configurations for debugging purposes."),jg=()=>new cr.Option("--dev","Bundle in development mode for debugging purposes."),Ng=()=>new cr.Option("--bundler <engine>","Bundler to use: webpack or rspack (experimental). Default: webpack").choices(["webpack","rspack"]).default("webpack").hideHelp(),Wv=()=>new cr.Option("--library-id <id>","Set the library identifier to use for the bundle.").hideHelp(),Uv=()=>new cr.Option("--public-path <path>","Set the public path for the bundle."),Vv=()=>new cr.Option("--output-path <path>","Override the output path for the bundle. Default is './dist'");function Tc(e,t){return e.command(t).description(Bv).addOption(Po()).addOption($g()).addOption(Pg()).addOption(jg()).addOption(Ng()).action(Lo(bc))}function Ic(e,t){return e.command(t).description(Mv).addOption(Wv()).addOption(Uv()).addOption(Vv()).addOption($g()).addOption(Pg()).addOption(jg()).addOption(Ng()).action(Lo(vc))}var Lg=e=>{let t=e.command("library").description(Pv);Tc(t,"share").description(`${ne("[Deprecated]")} Use 'webflow devlink import' instead.`).hook("preAction",jv),Ic(t,"bundle").description(`${ne("[Deprecated]")} Use 'webflow devlink bundle' instead.`).hook("preAction",Nv),t.command("log").description(`${ne("[Deprecated]")} Use 'webflow log' instead.`).hook("preAction",Lv).action(Fc)};ie();var Bg=e=>{let t=e.command("devlink").description("CLI for managing your Webflow Components.");t.command("sync").description(`${ne("[Deprecated]")} Use 'webflow devlink export' instead. Sync your Webflow components to your filesystem.`).argument("[components...]","A list of components to sync. If none is provided, all components will be synced.").addOption(Po()).addOption(Xe()).action(Kf),Tc(t,"import"),Ic(t,"bundle"),t.command("export").description("Export Webflow Components from your Webflow Site.").addOption(Po()).addOption(Xe()).action(Lo(ts))};var Ht=h(require("fs")),ct=h(require("path"));v();U();var ae={New:"new",Existing:"existing"},Mg="cli",Ut=3,Vt=39,ks="astro",Wg="cloud-scaffolds";var Ug="package.json",jr="webflow.json",Ss="wf-placeholder-name",Vg="CLOUD_MOUNT_PATH",Hg="gitignore";function Oc(e){return!e.siteId}var Bo=async(e,t,r=ks,n,o,i)=>{try{let s,a;if("content"in n){let c=n.content;s=c.files,a=u=>ct.relative(c.extractionRoot,u).replace(/\\/g,"/")}else{let u=n[r];if(!u)throw new Error(`Scaffold "${r}" not found`);s=u;let p=ct.join(Wg,r);a=f=>f.split(p)[1]?.substring(1).replace(/\\/g,"/")??""}for(let c of s)try{let u=ct.join(e,a(c)),p=c.includes("next.config.ts"),f=c.includes("astro.config.mjs"),m=p||f;if(c.includes(jr)&&Ht.existsSync(u))continue;if(c.includes(Ug)||c.includes(jr)){let w=(await Ht.promises.readFile(c,"utf8")).replace(Ss,e);await As(u,w)}else if(m){let g=await Ht.promises.readFile(c,"utf8");await As(u,g.replace(Vg,t))}else if(ct.basename(u).toLowerCase()===Hg){let g=await Ht.promises.readFile(c,"utf8"),w=ct.join(ct.dirname(u),".gitignore");await As(w,g)}else{let g=await Ht.promises.readFile(c);await As(u,g)}}catch(u){l.error(`Error processing file ${c}: ${u}`)}if(o&&i)try{Lt({siteId:o,apiToken:i,directory:e})}catch(c){l.error(`Error creating .env file: ${c}`)}}catch(s){throw l.error(`Error applying scaffold: ${s}`),s}};var As=async(e,t)=>{try{await Ht.promises.mkdir(ct.dirname(e),{recursive:!0}),await Ht.promises.writeFile(e,t)}catch(r){throw l.error(`Error writing file ${e}: ${r}`),r}};var ur=h(require("fs")),Jg=h(require("fs-extra")),dr=h(require("path")),Nc=h(require("os")),Gg=h(require("tar"));var Te=class extends Error{constructor(r,n,o){super(r);this.scaffoldId=n;this.supportedIds=o;this.name="ScaffoldError"}};var Mo={"astro-minimal":{id:"astro-minimal",name:"Astro",source:{type:"github",repo:"Webflow-Examples/hello-world-astro",ref:"v2",betaRef:"astro7"}},"nextjs-minimal":{id:"nextjs-minimal",name:"Next.js",source:{type:"github",repo:"Webflow-Examples/hello-world-nextjs",ref:"v1"}},astro:{id:"astro",name:"Astro (site-attached)",source:{type:"github",repo:"Webflow-Examples/hello-world-astro-devlink",ref:"v2",betaRef:"astro7"}},nextjs:{id:"nextjs",name:"Next.js (site-attached)",source:{type:"github",repo:"Webflow-Examples/hello-world-nextjs-devlink",ref:"v1"}}};function Wo(e){let t=Mo[e];if(!t){let r=Object.keys(Mo);throw new Te(`Unsupported framework: "${e}". Supported: ${r.join(", ")}`,e,r)}return t}function Rc(){return Object.keys(Mo)}function $c(){return[...new Set(Rc().map(e=>e.replace(/-minimal$/,"")))]}function Pc(){return["astro","nextjs"]}function jc(e){let r=`${e.replace(/-minimal$/,"")}-minimal`;if(!Mo[r]){let n=Rc();throw new Te(`No minimal scaffold for "${e}". Supported: ${n.join(", ")}`,r,n)}return r}v();Ar();var Hv="https://github.com";async function Lc(e){let t=e.endsWith("-minimal")?e:jc(e);return Ts(t)}async function Ts(e){return Wo(e).source.type==="github"?Jv(e):zg(e)}async function zg(e){let t=Wo(e);if(t.source.type!=="local")throw new Te(`Scaffold "${e}" does not have a local source`,e);let r=dr.isAbsolute(t.source.path)?t.source.path:dr.join(__dirname,t.source.path);if(!ur.existsSync(r))throw new Te(`Scaffold directory not found: ${r}`,e);let n=await Bc(r);return{scaffoldId:e,files:n,extractionRoot:r}}async function Jv(e){let t=Wo(e);if(t.source.type!=="github")throw new Te(`Scaffold "${e}" does not have a GitHub source`,e);let r=(st()?t.source.betaRef:void 0)??t.source.ref??"main",n=`${Hv}/${t.source.repo}/archive/${r}.tar.gz`,o=await ur.promises.mkdtemp(dr.join(Nc.tmpdir(),`webflow-scaffold-${e}-`)),i=l.spinner(`Downloading scaffold (${t.source.repo}@${r})`);try{let s;try{s=await fetch(n,{redirect:"follow",headers:{"User-Agent":"webflow-cli"}})}catch(g){throw i.fail("Download failed"),new Te(`Failed to fetch scaffold from GitHub: ${g instanceof Error?g.message:String(g)}. Repo: ${t.source.repo}, ref: ${r}`,e)}if(!s.ok)throw i.fail(`GitHub returned ${s.status} ${s.statusText}`),new Te(`Failed to fetch scaffold from GitHub: ${s.status} ${s.statusText}. Repo: ${t.source.repo}, ref: ${r}`,e);let a=Buffer.from(await s.arrayBuffer());i.succeed("Downloaded scaffold");let c=l.spinner("Unpacking scaffold");try{await Gv(a,o),c.succeed("Scaffold ready")}catch(g){throw c.fail("Unpack failed"),g}let u=await ur.promises.readdir(o),p=u[0];if(!p||u.length!==1)throw new Te(`Unexpected tarball structure for ${t.source.repo}`,e);let f=dr.join(o,p),m=await Bc(f);return{scaffoldId:e,files:m,extractionRoot:f}}catch(s){try{Jg.default.removeSync(o)}catch{}throw s instanceof Te?s:new Te(`Failed to fetch scaffold "${e}": ${s instanceof Error?s.message:String(s)}`,e)}}async function Gv(e,t){let r=dr.join(Nc.tmpdir(),`webflow-scaffold-${Date.now()}.tar.gz`);await ur.promises.writeFile(r,new Uint8Array(e.buffer,e.byteOffset,e.byteLength));try{await Gg.extract({file:r,cwd:t})}finally{await ur.promises.unlink(r).catch(()=>{})}}async function Bc(e){let t=[],r=await ur.promises.readdir(e,{withFileTypes:!0});for(let n of r){let o=dr.join(e,n.name);n.isDirectory()?t.push(...await Bc(o)):t.push(o)}return t}var du=h(require("fs-extra"));U();W();var V=h(require("fs")),te=h(require("path")),Yo=require("child_process"),Th=h(require("tar"));var Be=h(require("fs")),Et=h(require("path"));var B={};pd(B,{BRAND:()=>yE,DIRTY:()=>Nr,EMPTY_PATH:()=>Zv,INVALID:()=>N,NEVER:()=>rF,OK:()=>Le,ParseStatus:()=>Re,Schema:()=>K,ZodAny:()=>mr,ZodArray:()=>Kt,ZodBigInt:()=>Br,ZodBoolean:()=>Mr,ZodBranded:()=>Vo,ZodCatch:()=>Yr,ZodDate:()=>Wr,ZodDefault:()=>Zr,ZodDiscriminatedUnion:()=>Rs,ZodEffects:()=>pt,ZodEnum:()=>Kr,ZodError:()=>We,ZodFirstPartyTypeKind:()=>L,ZodFunction:()=>Ps,ZodIntersection:()=>Jr,ZodIssueCode:()=>y,ZodLazy:()=>Gr,ZodLiteral:()=>zr,ZodMap:()=>$n,ZodNaN:()=>jn,ZodNativeEnum:()=>qr,ZodNever:()=>bt,ZodNull:()=>Vr,ZodNullable:()=>St,ZodNumber:()=>Lr,ZodObject:()=>Ue,ZodOptional:()=>ut,ZodParsedType:()=>A,ZodPipeline:()=>Ho,ZodPromise:()=>gr,ZodReadonly:()=>Xr,ZodRecord:()=>$s,ZodSchema:()=>K,ZodSet:()=>Pn,ZodString:()=>fr,ZodSymbol:()=>On,ZodTransformer:()=>pt,ZodTuple:()=>kt,ZodType:()=>K,ZodUndefined:()=>Ur,ZodUnion:()=>Hr,ZodUnknown:()=>zt,ZodVoid:()=>Rn,addIssueToContext:()=>_,any:()=>kE,array:()=>IE,bigint:()=>EE,boolean:()=>oh,coerce:()=>tF,custom:()=>th,date:()=>FE,datetimeRegex:()=>Qg,defaultErrorMap:()=>Jt,discriminatedUnion:()=>PE,effect:()=>zE,enum:()=>HE,function:()=>WE,getErrorMap:()=>An,getParsedType:()=>Ct,instanceof:()=>bE,intersection:()=>jE,isAborted:()=>Is,isAsync:()=>Tn,isDirty:()=>Os,isValid:()=>pr,late:()=>DE,lazy:()=>UE,literal:()=>VE,makeIssue:()=>Uo,map:()=>BE,nan:()=>vE,nativeEnum:()=>JE,never:()=>AE,null:()=>CE,nullable:()=>qE,number:()=>nh,object:()=>OE,objectUtil:()=>Mc,oboolean:()=>eF,onumber:()=>QE,optional:()=>KE,ostring:()=>XE,pipeline:()=>YE,preprocess:()=>ZE,promise:()=>GE,quotelessJson:()=>zv,record:()=>LE,set:()=>ME,setErrorMap:()=>qv,strictObject:()=>RE,string:()=>rh,symbol:()=>xE,transformer:()=>zE,tuple:()=>NE,undefined:()=>_E,union:()=>$E,unknown:()=>SE,util:()=>ee,void:()=>TE});var ee;(function(e){e.assertEqual=o=>{};function t(o){}e.assertIs=t;function r(o){throw new Error}e.assertNever=r,e.arrayToEnum=o=>{let i={};for(let s of o)i[s]=s;return i},e.getValidEnumValues=o=>{let i=e.objectKeys(o).filter(a=>typeof o[o[a]]!="number"),s={};for(let a of i)s[a]=o[a];return e.objectValues(s)},e.objectValues=o=>e.objectKeys(o).map(function(i){return o[i]}),e.objectKeys=typeof Object.keys=="function"?o=>Object.keys(o):o=>{let i=[];for(let s in o)Object.prototype.hasOwnProperty.call(o,s)&&i.push(s);return i},e.find=(o,i)=>{for(let s of o)if(i(s))return s},e.isInteger=typeof Number.isInteger=="function"?o=>Number.isInteger(o):o=>typeof o=="number"&&Number.isFinite(o)&&Math.floor(o)===o;function n(o,i=" | "){return o.map(s=>typeof s=="string"?`'${s}'`:s).join(i)}e.joinValues=n,e.jsonStringifyReplacer=(o,i)=>typeof i=="bigint"?i.toString():i})(ee||(ee={}));var Mc;(function(e){e.mergeShapes=(t,r)=>({...t,...r})})(Mc||(Mc={}));var A=ee.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Ct=e=>{switch(typeof e){case"undefined":return A.undefined;case"string":return A.string;case"number":return Number.isNaN(e)?A.nan:A.number;case"boolean":return A.boolean;case"function":return A.function;case"bigint":return A.bigint;case"symbol":return A.symbol;case"object":return Array.isArray(e)?A.array:e===null?A.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?A.promise:typeof Map<"u"&&e instanceof Map?A.map:typeof Set<"u"&&e instanceof Set?A.set:typeof Date<"u"&&e instanceof Date?A.date:A.object;default:return A.unknown}};var y=ee.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),zv=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),We=class e extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=t}format(t){let r=t||function(i){return i.message},n={_errors:[]},o=i=>{for(let s of i.issues)if(s.code==="invalid_union")s.unionErrors.map(o);else if(s.code==="invalid_return_type")o(s.returnTypeError);else if(s.code==="invalid_arguments")o(s.argumentsError);else if(s.path.length===0)n._errors.push(r(s));else{let a=n,c=0;for(;c<s.path.length;){let u=s.path[c];c===s.path.length-1?(a[u]=a[u]||{_errors:[]},a[u]._errors.push(r(s))):a[u]=a[u]||{_errors:[]},a=a[u],c++}}};return o(this),n}static assert(t){if(!(t instanceof e))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,ee.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=r=>r.message){let r={},n=[];for(let o of this.issues)if(o.path.length>0){let i=o.path[0];r[i]=r[i]||[],r[i].push(t(o))}else n.push(t(o));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};We.create=e=>new We(e);var Kv=(e,t)=>{let r;switch(e.code){case y.invalid_type:e.received===A.undefined?r="Required":r=`Expected ${e.expected}, received ${e.received}`;break;case y.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,ee.jsonStringifyReplacer)}`;break;case y.unrecognized_keys:r=`Unrecognized key(s) in object: ${ee.joinValues(e.keys,", ")}`;break;case y.invalid_union:r="Invalid input";break;case y.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${ee.joinValues(e.options)}`;break;case y.invalid_enum_value:r=`Invalid enum value. Expected ${ee.joinValues(e.options)}, received '${e.received}'`;break;case y.invalid_arguments:r="Invalid function arguments";break;case y.invalid_return_type:r="Invalid function return type";break;case y.invalid_date:r="Invalid date";break;case y.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:ee.assertNever(e.validation):e.validation!=="regex"?r=`Invalid ${e.validation}`:r="Invalid";break;case y.too_small:e.type==="array"?r=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?r=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?r=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?r=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?r=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:r="Invalid input";break;case y.too_big:e.type==="array"?r=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?r=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?r=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?r=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?r=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:r="Invalid input";break;case y.custom:r="Invalid input";break;case y.invalid_intersection_types:r="Intersection results could not be merged";break;case y.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case y.not_finite:r="Number must be finite";break;default:r=t.defaultError,ee.assertNever(e)}return{message:r}},Jt=Kv;var Kg=Jt;function qv(e){Kg=e}function An(){return Kg}var Uo=e=>{let{data:t,path:r,errorMaps:n,issueData:o}=e,i=[...r,...o.path||[]],s={...o,path:i};if(o.message!==void 0)return{...o,path:i,message:o.message};let a="",c=n.filter(u=>!!u).slice().reverse();for(let u of c)a=u(s,{data:t,defaultError:a}).message;return{...o,path:i,message:a}},Zv=[];function _(e,t){let r=An(),n=Uo({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===Jt?void 0:Jt].filter(o=>!!o)});e.common.issues.push(n)}var Re=class e{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,r){let n=[];for(let o of r){if(o.status==="aborted")return N;o.status==="dirty"&&t.dirty(),n.push(o.value)}return{status:t.value,value:n}}static async mergeObjectAsync(t,r){let n=[];for(let o of r){let i=await o.key,s=await o.value;n.push({key:i,value:s})}return e.mergeObjectSync(t,n)}static mergeObjectSync(t,r){let n={};for(let o of r){let{key:i,value:s}=o;if(i.status==="aborted"||s.status==="aborted")return N;i.status==="dirty"&&t.dirty(),s.status==="dirty"&&t.dirty(),i.value!=="__proto__"&&(typeof s.value<"u"||o.alwaysSet)&&(n[i.value]=s.value)}return{status:t.value,value:n}}},N=Object.freeze({status:"aborted"}),Nr=e=>({status:"dirty",value:e}),Le=e=>({status:"valid",value:e}),Is=e=>e.status==="aborted",Os=e=>e.status==="dirty",pr=e=>e.status==="valid",Tn=e=>typeof Promise<"u"&&e instanceof Promise;var R;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t?.message})(R||(R={}));var dt=class{constructor(t,r,n,o){this._cachedPath=[],this.parent=t,this.data=r,this._path=n,this._key=o}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},qg=(e,t)=>{if(pr(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new We(e.common.issues);return this._error=r,this._error}}};function G(e){if(!e)return{};let{errorMap:t,invalid_type_error:r,required_error:n,description:o}=e;if(t&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:o}:{errorMap:(s,a)=>{let{message:c}=e;return s.code==="invalid_enum_value"?{message:c??a.defaultError}:typeof a.data>"u"?{message:c??n??a.defaultError}:s.code!=="invalid_type"?{message:a.defaultError}:{message:c??r??a.defaultError}},description:o}}var K=class{get description(){return this._def.description}_getType(t){return Ct(t.data)}_getOrReturnCtx(t,r){return r||{common:t.parent.common,data:t.data,parsedType:Ct(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Re,ctx:{common:t.parent.common,data:t.data,parsedType:Ct(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let r=this._parse(t);if(Tn(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(t){let r=this._parse(t);return Promise.resolve(r)}parse(t,r){let n=this.safeParse(t,r);if(n.success)return n.data;throw n.error}safeParse(t,r){let n={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ct(t)},o=this._parseSync({data:t,path:n.path,parent:n});return qg(n,o)}"~validate"(t){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ct(t)};if(!this["~standard"].async)try{let n=this._parseSync({data:t,path:[],parent:r});return pr(n)?{value:n.value}:{issues:r.common.issues}}catch(n){n?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:r}).then(n=>pr(n)?{value:n.value}:{issues:r.common.issues})}async parseAsync(t,r){let n=await this.safeParseAsync(t,r);if(n.success)return n.data;throw n.error}async safeParseAsync(t,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ct(t)},o=this._parse({data:t,path:n.path,parent:n}),i=await(Tn(o)?o:Promise.resolve(o));return qg(n,i)}refine(t,r){let n=o=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(o):r;return this._refinement((o,i)=>{let s=t(o),a=()=>i.addIssue({code:y.custom,...n(o)});return typeof Promise<"u"&&s instanceof Promise?s.then(c=>c?!0:(a(),!1)):s?!0:(a(),!1)})}refinement(t,r){return this._refinement((n,o)=>t(n)?!0:(o.addIssue(typeof r=="function"?r(n,o):r),!1))}_refinement(t){return new pt({schema:this,typeName:L.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return ut.create(this,this._def)}nullable(){return St.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Kt.create(this)}promise(){return gr.create(this,this._def)}or(t){return Hr.create([this,t],this._def)}and(t){return Jr.create(this,t,this._def)}transform(t){return new pt({...G(this._def),schema:this,typeName:L.ZodEffects,effect:{type:"transform",transform:t}})}default(t){let r=typeof t=="function"?t:()=>t;return new Zr({...G(this._def),innerType:this,defaultValue:r,typeName:L.ZodDefault})}brand(){return new Vo({typeName:L.ZodBranded,type:this,...G(this._def)})}catch(t){let r=typeof t=="function"?t:()=>t;return new Yr({...G(this._def),innerType:this,catchValue:r,typeName:L.ZodCatch})}describe(t){let r=this.constructor;return new r({...this._def,description:t})}pipe(t){return Ho.create(this,t)}readonly(){return Xr.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Yv=/^c[^\s-]{8,}$/i,Xv=/^[0-9a-z]+$/,Qv=/^[0-9A-HJKMNP-TV-Z]{26}$/i,eE=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,tE=/^[a-z0-9_-]{21}$/i,rE=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,nE=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,oE=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,iE="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Wc,sE=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,aE=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,lE=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,cE=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,uE=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,dE=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Yg="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",pE=new RegExp(`^${Yg}$`);function Xg(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);let r=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`}function fE(e){return new RegExp(`^${Xg(e)}$`)}function Qg(e){let t=`${Yg}T${Xg(e)}`,r=[];return r.push(e.local?"Z?":"Z"),e.offset&&r.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${r.join("|")})`,new RegExp(`^${t}$`)}function mE(e,t){return!!((t==="v4"||!t)&&sE.test(e)||(t==="v6"||!t)&&lE.test(e))}function gE(e,t){if(!rE.test(e))return!1;try{let[r]=e.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),o=JSON.parse(atob(n));return!(typeof o!="object"||o===null||"typ"in o&&o?.typ!=="JWT"||!o.alg||t&&o.alg!==t)}catch{return!1}}function hE(e,t){return!!((t==="v4"||!t)&&aE.test(e)||(t==="v6"||!t)&&cE.test(e))}var fr=class e extends K{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==A.string){let i=this._getOrReturnCtx(t);return _(i,{code:y.invalid_type,expected:A.string,received:i.parsedType}),N}let n=new Re,o;for(let i of this._def.checks)if(i.kind==="min")t.data.length<i.value&&(o=this._getOrReturnCtx(t,o),_(o,{code:y.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),n.dirty());else if(i.kind==="max")t.data.length>i.value&&(o=this._getOrReturnCtx(t,o),_(o,{code:y.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),n.dirty());else if(i.kind==="length"){let s=t.data.length>i.value,a=t.data.length<i.value;(s||a)&&(o=this._getOrReturnCtx(t,o),s?_(o,{code:y.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}):a&&_(o,{code:y.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}),n.dirty())}else if(i.kind==="email")oE.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"email",code:y.invalid_string,message:i.message}),n.dirty());else if(i.kind==="emoji")Wc||(Wc=new RegExp(iE,"u")),Wc.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"emoji",code:y.invalid_string,message:i.message}),n.dirty());else if(i.kind==="uuid")eE.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"uuid",code:y.invalid_string,message:i.message}),n.dirty());else if(i.kind==="nanoid")tE.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"nanoid",code:y.invalid_string,message:i.message}),n.dirty());else if(i.kind==="cuid")Yv.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"cuid",code:y.invalid_string,message:i.message}),n.dirty());else if(i.kind==="cuid2")Xv.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"cuid2",code:y.invalid_string,message:i.message}),n.dirty());else if(i.kind==="ulid")Qv.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"ulid",code:y.invalid_string,message:i.message}),n.dirty());else if(i.kind==="url")try{new URL(t.data)}catch{o=this._getOrReturnCtx(t,o),_(o,{validation:"url",code:y.invalid_string,message:i.message}),n.dirty()}else i.kind==="regex"?(i.regex.lastIndex=0,i.regex.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"regex",code:y.invalid_string,message:i.message}),n.dirty())):i.kind==="trim"?t.data=t.data.trim():i.kind==="includes"?t.data.includes(i.value,i.position)||(o=this._getOrReturnCtx(t,o),_(o,{code:y.invalid_string,validation:{includes:i.value,position:i.position},message:i.message}),n.dirty()):i.kind==="toLowerCase"?t.data=t.data.toLowerCase():i.kind==="toUpperCase"?t.data=t.data.toUpperCase():i.kind==="startsWith"?t.data.startsWith(i.value)||(o=this._getOrReturnCtx(t,o),_(o,{code:y.invalid_string,validation:{startsWith:i.value},message:i.message}),n.dirty()):i.kind==="endsWith"?t.data.endsWith(i.value)||(o=this._getOrReturnCtx(t,o),_(o,{code:y.invalid_string,validation:{endsWith:i.value},message:i.message}),n.dirty()):i.kind==="datetime"?Qg(i).test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{code:y.invalid_string,validation:"datetime",message:i.message}),n.dirty()):i.kind==="date"?pE.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{code:y.invalid_string,validation:"date",message:i.message}),n.dirty()):i.kind==="time"?fE(i).test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{code:y.invalid_string,validation:"time",message:i.message}),n.dirty()):i.kind==="duration"?nE.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"duration",code:y.invalid_string,message:i.message}),n.dirty()):i.kind==="ip"?mE(t.data,i.version)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"ip",code:y.invalid_string,message:i.message}),n.dirty()):i.kind==="jwt"?gE(t.data,i.alg)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"jwt",code:y.invalid_string,message:i.message}),n.dirty()):i.kind==="cidr"?hE(t.data,i.version)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"cidr",code:y.invalid_string,message:i.message}),n.dirty()):i.kind==="base64"?uE.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"base64",code:y.invalid_string,message:i.message}),n.dirty()):i.kind==="base64url"?dE.test(t.data)||(o=this._getOrReturnCtx(t,o),_(o,{validation:"base64url",code:y.invalid_string,message:i.message}),n.dirty()):ee.assertNever(i);return{status:n.value,value:t.data}}_regex(t,r,n){return this.refinement(o=>t.test(o),{validation:r,code:y.invalid_string,...R.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...R.errToObj(t)})}url(t){return this._addCheck({kind:"url",...R.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...R.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...R.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...R.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...R.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...R.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...R.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...R.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...R.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...R.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...R.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...R.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...R.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...R.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...R.errToObj(t)})}regex(t,r){return this._addCheck({kind:"regex",regex:t,...R.errToObj(r)})}includes(t,r){return this._addCheck({kind:"includes",value:t,position:r?.position,...R.errToObj(r?.message)})}startsWith(t,r){return this._addCheck({kind:"startsWith",value:t,...R.errToObj(r)})}endsWith(t,r){return this._addCheck({kind:"endsWith",value:t,...R.errToObj(r)})}min(t,r){return this._addCheck({kind:"min",value:t,...R.errToObj(r)})}max(t,r){return this._addCheck({kind:"max",value:t,...R.errToObj(r)})}length(t,r){return this._addCheck({kind:"length",value:t,...R.errToObj(r)})}nonempty(t){return this.min(1,R.errToObj(t))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxLength(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}};fr.create=e=>new fr({checks:[],typeName:L.ZodString,coerce:e?.coerce??!1,...G(e)});function wE(e,t){let r=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,o=r>n?r:n,i=Number.parseInt(e.toFixed(o).replace(".","")),s=Number.parseInt(t.toFixed(o).replace(".",""));return i%s/10**o}var Lr=class e extends K{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==A.number){let i=this._getOrReturnCtx(t);return _(i,{code:y.invalid_type,expected:A.number,received:i.parsedType}),N}let n,o=new Re;for(let i of this._def.checks)i.kind==="int"?ee.isInteger(t.data)||(n=this._getOrReturnCtx(t,n),_(n,{code:y.invalid_type,expected:"integer",received:"float",message:i.message}),o.dirty()):i.kind==="min"?(i.inclusive?t.data<i.value:t.data<=i.value)&&(n=this._getOrReturnCtx(t,n),_(n,{code:y.too_small,minimum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),o.dirty()):i.kind==="max"?(i.inclusive?t.data>i.value:t.data>=i.value)&&(n=this._getOrReturnCtx(t,n),_(n,{code:y.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),o.dirty()):i.kind==="multipleOf"?wE(t.data,i.value)!==0&&(n=this._getOrReturnCtx(t,n),_(n,{code:y.not_multiple_of,multipleOf:i.value,message:i.message}),o.dirty()):i.kind==="finite"?Number.isFinite(t.data)||(n=this._getOrReturnCtx(t,n),_(n,{code:y.not_finite,message:i.message}),o.dirty()):ee.assertNever(i);return{status:o.value,value:t.data}}gte(t,r){return this.setLimit("min",t,!0,R.toString(r))}gt(t,r){return this.setLimit("min",t,!1,R.toString(r))}lte(t,r){return this.setLimit("max",t,!0,R.toString(r))}lt(t,r){return this.setLimit("max",t,!1,R.toString(r))}setLimit(t,r,n,o){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:n,message:R.toString(o)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:R.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:R.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:R.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:R.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:R.toString(t)})}multipleOf(t,r){return this._addCheck({kind:"multipleOf",value:t,message:R.toString(r)})}finite(t){return this._addCheck({kind:"finite",message:R.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:R.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:R.toString(t)})}get minValue(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxValue(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&ee.isInteger(t.value))}get isFinite(){let t=null,r=null;for(let n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(t===null||n.value<t)&&(t=n.value)}return Number.isFinite(r)&&Number.isFinite(t)}};Lr.create=e=>new Lr({checks:[],typeName:L.ZodNumber,coerce:e?.coerce||!1,...G(e)});var Br=class e extends K{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==A.bigint)return this._getInvalidInput(t);let n,o=new Re;for(let i of this._def.checks)i.kind==="min"?(i.inclusive?t.data<i.value:t.data<=i.value)&&(n=this._getOrReturnCtx(t,n),_(n,{code:y.too_small,type:"bigint",minimum:i.value,inclusive:i.inclusive,message:i.message}),o.dirty()):i.kind==="max"?(i.inclusive?t.data>i.value:t.data>=i.value)&&(n=this._getOrReturnCtx(t,n),_(n,{code:y.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),o.dirty()):i.kind==="multipleOf"?t.data%i.value!==BigInt(0)&&(n=this._getOrReturnCtx(t,n),_(n,{code:y.not_multiple_of,multipleOf:i.value,message:i.message}),o.dirty()):ee.assertNever(i);return{status:o.value,value:t.data}}_getInvalidInput(t){let r=this._getOrReturnCtx(t);return _(r,{code:y.invalid_type,expected:A.bigint,received:r.parsedType}),N}gte(t,r){return this.setLimit("min",t,!0,R.toString(r))}gt(t,r){return this.setLimit("min",t,!1,R.toString(r))}lte(t,r){return this.setLimit("max",t,!0,R.toString(r))}lt(t,r){return this.setLimit("max",t,!1,R.toString(r))}setLimit(t,r,n,o){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:n,message:R.toString(o)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:R.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:R.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:R.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:R.toString(t)})}multipleOf(t,r){return this._addCheck({kind:"multipleOf",value:t,message:R.toString(r)})}get minValue(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxValue(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}};Br.create=e=>new Br({checks:[],typeName:L.ZodBigInt,coerce:e?.coerce??!1,...G(e)});var Mr=class extends K{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==A.boolean){let n=this._getOrReturnCtx(t);return _(n,{code:y.invalid_type,expected:A.boolean,received:n.parsedType}),N}return Le(t.data)}};Mr.create=e=>new Mr({typeName:L.ZodBoolean,coerce:e?.coerce||!1,...G(e)});var Wr=class e extends K{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==A.date){let i=this._getOrReturnCtx(t);return _(i,{code:y.invalid_type,expected:A.date,received:i.parsedType}),N}if(Number.isNaN(t.data.getTime())){let i=this._getOrReturnCtx(t);return _(i,{code:y.invalid_date}),N}let n=new Re,o;for(let i of this._def.checks)i.kind==="min"?t.data.getTime()<i.value&&(o=this._getOrReturnCtx(t,o),_(o,{code:y.too_small,message:i.message,inclusive:!0,exact:!1,minimum:i.value,type:"date"}),n.dirty()):i.kind==="max"?t.data.getTime()>i.value&&(o=this._getOrReturnCtx(t,o),_(o,{code:y.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),n.dirty()):ee.assertNever(i);return{status:n.value,value:new Date(t.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(t,r){return this._addCheck({kind:"min",value:t.getTime(),message:R.toString(r)})}max(t,r){return this._addCheck({kind:"max",value:t.getTime(),message:R.toString(r)})}get minDate(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t!=null?new Date(t):null}};Wr.create=e=>new Wr({checks:[],coerce:e?.coerce||!1,typeName:L.ZodDate,...G(e)});var On=class extends K{_parse(t){if(this._getType(t)!==A.symbol){let n=this._getOrReturnCtx(t);return _(n,{code:y.invalid_type,expected:A.symbol,received:n.parsedType}),N}return Le(t.data)}};On.create=e=>new On({typeName:L.ZodSymbol,...G(e)});var Ur=class extends K{_parse(t){if(this._getType(t)!==A.undefined){let n=this._getOrReturnCtx(t);return _(n,{code:y.invalid_type,expected:A.undefined,received:n.parsedType}),N}return Le(t.data)}};Ur.create=e=>new Ur({typeName:L.ZodUndefined,...G(e)});var Vr=class extends K{_parse(t){if(this._getType(t)!==A.null){let n=this._getOrReturnCtx(t);return _(n,{code:y.invalid_type,expected:A.null,received:n.parsedType}),N}return Le(t.data)}};Vr.create=e=>new Vr({typeName:L.ZodNull,...G(e)});var mr=class extends K{constructor(){super(...arguments),this._any=!0}_parse(t){return Le(t.data)}};mr.create=e=>new mr({typeName:L.ZodAny,...G(e)});var zt=class extends K{constructor(){super(...arguments),this._unknown=!0}_parse(t){return Le(t.data)}};zt.create=e=>new zt({typeName:L.ZodUnknown,...G(e)});var bt=class extends K{_parse(t){let r=this._getOrReturnCtx(t);return _(r,{code:y.invalid_type,expected:A.never,received:r.parsedType}),N}};bt.create=e=>new bt({typeName:L.ZodNever,...G(e)});var Rn=class extends K{_parse(t){if(this._getType(t)!==A.undefined){let n=this._getOrReturnCtx(t);return _(n,{code:y.invalid_type,expected:A.void,received:n.parsedType}),N}return Le(t.data)}};Rn.create=e=>new Rn({typeName:L.ZodVoid,...G(e)});var Kt=class e extends K{_parse(t){let{ctx:r,status:n}=this._processInputParams(t),o=this._def;if(r.parsedType!==A.array)return _(r,{code:y.invalid_type,expected:A.array,received:r.parsedType}),N;if(o.exactLength!==null){let s=r.data.length>o.exactLength.value,a=r.data.length<o.exactLength.value;(s||a)&&(_(r,{code:s?y.too_big:y.too_small,minimum:a?o.exactLength.value:void 0,maximum:s?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),n.dirty())}if(o.minLength!==null&&r.data.length<o.minLength.value&&(_(r,{code:y.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),n.dirty()),o.maxLength!==null&&r.data.length>o.maxLength.value&&(_(r,{code:y.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((s,a)=>o.type._parseAsync(new dt(r,s,r.path,a)))).then(s=>Re.mergeArray(n,s));let i=[...r.data].map((s,a)=>o.type._parseSync(new dt(r,s,r.path,a)));return Re.mergeArray(n,i)}get element(){return this._def.type}min(t,r){return new e({...this._def,minLength:{value:t,message:R.toString(r)}})}max(t,r){return new e({...this._def,maxLength:{value:t,message:R.toString(r)}})}length(t,r){return new e({...this._def,exactLength:{value:t,message:R.toString(r)}})}nonempty(t){return this.min(1,t)}};Kt.create=(e,t)=>new Kt({type:e,minLength:null,maxLength:null,exactLength:null,typeName:L.ZodArray,...G(t)});function In(e){if(e instanceof Ue){let t={};for(let r in e.shape){let n=e.shape[r];t[r]=ut.create(In(n))}return new Ue({...e._def,shape:()=>t})}else return e instanceof Kt?new Kt({...e._def,type:In(e.element)}):e instanceof ut?ut.create(In(e.unwrap())):e instanceof St?St.create(In(e.unwrap())):e instanceof kt?kt.create(e.items.map(t=>In(t))):e}var Ue=class e extends K{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let t=this._def.shape(),r=ee.objectKeys(t);return this._cached={shape:t,keys:r},this._cached}_parse(t){if(this._getType(t)!==A.object){let u=this._getOrReturnCtx(t);return _(u,{code:y.invalid_type,expected:A.object,received:u.parsedType}),N}let{status:n,ctx:o}=this._processInputParams(t),{shape:i,keys:s}=this._getCached(),a=[];if(!(this._def.catchall instanceof bt&&this._def.unknownKeys==="strip"))for(let u in o.data)s.includes(u)||a.push(u);let c=[];for(let u of s){let p=i[u],f=o.data[u];c.push({key:{status:"valid",value:u},value:p._parse(new dt(o,f,o.path,u)),alwaysSet:u in o.data})}if(this._def.catchall instanceof bt){let u=this._def.unknownKeys;if(u==="passthrough")for(let p of a)c.push({key:{status:"valid",value:p},value:{status:"valid",value:o.data[p]}});else if(u==="strict")a.length>0&&(_(o,{code:y.unrecognized_keys,keys:a}),n.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let p of a){let f=o.data[p];c.push({key:{status:"valid",value:p},value:u._parse(new dt(o,f,o.path,p)),alwaysSet:p in o.data})}}return o.common.async?Promise.resolve().then(async()=>{let u=[];for(let p of c){let f=await p.key,m=await p.value;u.push({key:f,value:m,alwaysSet:p.alwaysSet})}return u}).then(u=>Re.mergeObjectSync(n,u)):Re.mergeObjectSync(n,c)}get shape(){return this._def.shape()}strict(t){return R.errToObj,new e({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(r,n)=>{let o=this._def.errorMap?.(r,n).message??n.defaultError;return r.code==="unrecognized_keys"?{message:R.errToObj(t).message??o}:{message:o}}}:{}})}strip(){return new e({...this._def,unknownKeys:"strip"})}passthrough(){return new e({...this._def,unknownKeys:"passthrough"})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:L.ZodObject})}setKey(t,r){return this.augment({[t]:r})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let r={};for(let n of ee.objectKeys(t))t[n]&&this.shape[n]&&(r[n]=this.shape[n]);return new e({...this._def,shape:()=>r})}omit(t){let r={};for(let n of ee.objectKeys(this.shape))t[n]||(r[n]=this.shape[n]);return new e({...this._def,shape:()=>r})}deepPartial(){return In(this)}partial(t){let r={};for(let n of ee.objectKeys(this.shape)){let o=this.shape[n];t&&!t[n]?r[n]=o:r[n]=o.optional()}return new e({...this._def,shape:()=>r})}required(t){let r={};for(let n of ee.objectKeys(this.shape))if(t&&!t[n])r[n]=this.shape[n];else{let i=this.shape[n];for(;i instanceof ut;)i=i._def.innerType;r[n]=i}return new e({...this._def,shape:()=>r})}keyof(){return eh(ee.objectKeys(this.shape))}};Ue.create=(e,t)=>new Ue({shape:()=>e,unknownKeys:"strip",catchall:bt.create(),typeName:L.ZodObject,...G(t)});Ue.strictCreate=(e,t)=>new Ue({shape:()=>e,unknownKeys:"strict",catchall:bt.create(),typeName:L.ZodObject,...G(t)});Ue.lazycreate=(e,t)=>new Ue({shape:e,unknownKeys:"strip",catchall:bt.create(),typeName:L.ZodObject,...G(t)});var Hr=class extends K{_parse(t){let{ctx:r}=this._processInputParams(t),n=this._def.options;function o(i){for(let a of i)if(a.result.status==="valid")return a.result;for(let a of i)if(a.result.status==="dirty")return r.common.issues.push(...a.ctx.common.issues),a.result;let s=i.map(a=>new We(a.ctx.common.issues));return _(r,{code:y.invalid_union,unionErrors:s}),N}if(r.common.async)return Promise.all(n.map(async i=>{let s={...r,common:{...r.common,issues:[]},parent:null};return{result:await i._parseAsync({data:r.data,path:r.path,parent:s}),ctx:s}})).then(o);{let i,s=[];for(let c of n){let u={...r,common:{...r.common,issues:[]},parent:null},p=c._parseSync({data:r.data,path:r.path,parent:u});if(p.status==="valid")return p;p.status==="dirty"&&!i&&(i={result:p,ctx:u}),u.common.issues.length&&s.push(u.common.issues)}if(i)return r.common.issues.push(...i.ctx.common.issues),i.result;let a=s.map(c=>new We(c));return _(r,{code:y.invalid_union,unionErrors:a}),N}}get options(){return this._def.options}};Hr.create=(e,t)=>new Hr({options:e,typeName:L.ZodUnion,...G(t)});var Gt=e=>e instanceof Gr?Gt(e.schema):e instanceof pt?Gt(e.innerType()):e instanceof zr?[e.value]:e instanceof Kr?e.options:e instanceof qr?ee.objectValues(e.enum):e instanceof Zr?Gt(e._def.innerType):e instanceof Ur?[void 0]:e instanceof Vr?[null]:e instanceof ut?[void 0,...Gt(e.unwrap())]:e instanceof St?[null,...Gt(e.unwrap())]:e instanceof Vo||e instanceof Xr?Gt(e.unwrap()):e instanceof Yr?Gt(e._def.innerType):[],Rs=class e extends K{_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==A.object)return _(r,{code:y.invalid_type,expected:A.object,received:r.parsedType}),N;let n=this.discriminator,o=r.data[n],i=this.optionsMap.get(o);return i?r.common.async?i._parseAsync({data:r.data,path:r.path,parent:r}):i._parseSync({data:r.data,path:r.path,parent:r}):(_(r,{code:y.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),N)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,r,n){let o=new Map;for(let i of r){let s=Gt(i.shape[t]);if(!s.length)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let a of s){if(o.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);o.set(a,i)}}return new e({typeName:L.ZodDiscriminatedUnion,discriminator:t,options:r,optionsMap:o,...G(n)})}};function Uc(e,t){let r=Ct(e),n=Ct(t);if(e===t)return{valid:!0,data:e};if(r===A.object&&n===A.object){let o=ee.objectKeys(t),i=ee.objectKeys(e).filter(a=>o.indexOf(a)!==-1),s={...e,...t};for(let a of i){let c=Uc(e[a],t[a]);if(!c.valid)return{valid:!1};s[a]=c.data}return{valid:!0,data:s}}else if(r===A.array&&n===A.array){if(e.length!==t.length)return{valid:!1};let o=[];for(let i=0;i<e.length;i++){let s=e[i],a=t[i],c=Uc(s,a);if(!c.valid)return{valid:!1};o.push(c.data)}return{valid:!0,data:o}}else return r===A.date&&n===A.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}var Jr=class extends K{_parse(t){let{status:r,ctx:n}=this._processInputParams(t),o=(i,s)=>{if(Is(i)||Is(s))return N;let a=Uc(i.value,s.value);return a.valid?((Os(i)||Os(s))&&r.dirty(),{status:r.value,value:a.data}):(_(n,{code:y.invalid_intersection_types}),N)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([i,s])=>o(i,s)):o(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Jr.create=(e,t,r)=>new Jr({left:e,right:t,typeName:L.ZodIntersection,...G(r)});var kt=class e extends K{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==A.array)return _(n,{code:y.invalid_type,expected:A.array,received:n.parsedType}),N;if(n.data.length<this._def.items.length)return _(n,{code:y.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),N;!this._def.rest&&n.data.length>this._def.items.length&&(_(n,{code:y.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let i=[...n.data].map((s,a)=>{let c=this._def.items[a]||this._def.rest;return c?c._parse(new dt(n,s,n.path,a)):null}).filter(s=>!!s);return n.common.async?Promise.all(i).then(s=>Re.mergeArray(r,s)):Re.mergeArray(r,i)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};kt.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new kt({items:e,typeName:L.ZodTuple,rest:null,...G(t)})};var $s=class e extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==A.object)return _(n,{code:y.invalid_type,expected:A.object,received:n.parsedType}),N;let o=[],i=this._def.keyType,s=this._def.valueType;for(let a in n.data)o.push({key:i._parse(new dt(n,a,n.path,a)),value:s._parse(new dt(n,n.data[a],n.path,a)),alwaysSet:a in n.data});return n.common.async?Re.mergeObjectAsync(r,o):Re.mergeObjectSync(r,o)}get element(){return this._def.valueType}static create(t,r,n){return r instanceof K?new e({keyType:t,valueType:r,typeName:L.ZodRecord,...G(n)}):new e({keyType:fr.create(),valueType:t,typeName:L.ZodRecord,...G(r)})}},$n=class extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==A.map)return _(n,{code:y.invalid_type,expected:A.map,received:n.parsedType}),N;let o=this._def.keyType,i=this._def.valueType,s=[...n.data.entries()].map(([a,c],u)=>({key:o._parse(new dt(n,a,n.path,[u,"key"])),value:i._parse(new dt(n,c,n.path,[u,"value"]))}));if(n.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let c of s){let u=await c.key,p=await c.value;if(u.status==="aborted"||p.status==="aborted")return N;(u.status==="dirty"||p.status==="dirty")&&r.dirty(),a.set(u.value,p.value)}return{status:r.value,value:a}})}else{let a=new Map;for(let c of s){let u=c.key,p=c.value;if(u.status==="aborted"||p.status==="aborted")return N;(u.status==="dirty"||p.status==="dirty")&&r.dirty(),a.set(u.value,p.value)}return{status:r.value,value:a}}}};$n.create=(e,t,r)=>new $n({valueType:t,keyType:e,typeName:L.ZodMap,...G(r)});var Pn=class e extends K{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==A.set)return _(n,{code:y.invalid_type,expected:A.set,received:n.parsedType}),N;let o=this._def;o.minSize!==null&&n.data.size<o.minSize.value&&(_(n,{code:y.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,exact:!1,message:o.minSize.message}),r.dirty()),o.maxSize!==null&&n.data.size>o.maxSize.value&&(_(n,{code:y.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),r.dirty());let i=this._def.valueType;function s(c){let u=new Set;for(let p of c){if(p.status==="aborted")return N;p.status==="dirty"&&r.dirty(),u.add(p.value)}return{status:r.value,value:u}}let a=[...n.data.values()].map((c,u)=>i._parse(new dt(n,c,n.path,u)));return n.common.async?Promise.all(a).then(c=>s(c)):s(a)}min(t,r){return new e({...this._def,minSize:{value:t,message:R.toString(r)}})}max(t,r){return new e({...this._def,maxSize:{value:t,message:R.toString(r)}})}size(t,r){return this.min(t,r).max(t,r)}nonempty(t){return this.min(1,t)}};Pn.create=(e,t)=>new Pn({valueType:e,minSize:null,maxSize:null,typeName:L.ZodSet,...G(t)});var Ps=class e extends K{constructor(){super(...arguments),this.validate=this.implement}_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==A.function)return _(r,{code:y.invalid_type,expected:A.function,received:r.parsedType}),N;function n(a,c){return Uo({data:a,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,An(),Jt].filter(u=>!!u),issueData:{code:y.invalid_arguments,argumentsError:c}})}function o(a,c){return Uo({data:a,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,An(),Jt].filter(u=>!!u),issueData:{code:y.invalid_return_type,returnTypeError:c}})}let i={errorMap:r.common.contextualErrorMap},s=r.data;if(this._def.returns instanceof gr){let a=this;return Le(async function(...c){let u=new We([]),p=await a._def.args.parseAsync(c,i).catch(g=>{throw u.addIssue(n(c,g)),u}),f=await Reflect.apply(s,this,p);return await a._def.returns._def.type.parseAsync(f,i).catch(g=>{throw u.addIssue(o(f,g)),u})})}else{let a=this;return Le(function(...c){let u=a._def.args.safeParse(c,i);if(!u.success)throw new We([n(c,u.error)]);let p=Reflect.apply(s,this,u.data),f=a._def.returns.safeParse(p,i);if(!f.success)throw new We([o(p,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:kt.create(t).rest(zt.create())})}returns(t){return new e({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,r,n){return new e({args:t||kt.create([]).rest(zt.create()),returns:r||zt.create(),typeName:L.ZodFunction,...G(n)})}},Gr=class extends K{get schema(){return this._def.getter()}_parse(t){let{ctx:r}=this._processInputParams(t);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Gr.create=(e,t)=>new Gr({getter:e,typeName:L.ZodLazy,...G(t)});var zr=class extends K{_parse(t){if(t.data!==this._def.value){let r=this._getOrReturnCtx(t);return _(r,{received:r.data,code:y.invalid_literal,expected:this._def.value}),N}return{status:"valid",value:t.data}}get value(){return this._def.value}};zr.create=(e,t)=>new zr({value:e,typeName:L.ZodLiteral,...G(t)});function eh(e,t){return new Kr({values:e,typeName:L.ZodEnum,...G(t)})}var Kr=class e extends K{_parse(t){if(typeof t.data!="string"){let r=this._getOrReturnCtx(t),n=this._def.values;return _(r,{expected:ee.joinValues(n),received:r.parsedType,code:y.invalid_type}),N}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){let r=this._getOrReturnCtx(t),n=this._def.values;return _(r,{received:r.data,code:y.invalid_enum_value,options:n}),N}return Le(t.data)}get options(){return this._def.values}get enum(){let t={};for(let r of this._def.values)t[r]=r;return t}get Values(){let t={};for(let r of this._def.values)t[r]=r;return t}get Enum(){let t={};for(let r of this._def.values)t[r]=r;return t}extract(t,r=this._def){return e.create(t,{...this._def,...r})}exclude(t,r=this._def){return e.create(this.options.filter(n=>!t.includes(n)),{...this._def,...r})}};Kr.create=eh;var qr=class extends K{_parse(t){let r=ee.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(t);if(n.parsedType!==A.string&&n.parsedType!==A.number){let o=ee.objectValues(r);return _(n,{expected:ee.joinValues(o),received:n.parsedType,code:y.invalid_type}),N}if(this._cache||(this._cache=new Set(ee.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){let o=ee.objectValues(r);return _(n,{received:n.data,code:y.invalid_enum_value,options:o}),N}return Le(t.data)}get enum(){return this._def.values}};qr.create=(e,t)=>new qr({values:e,typeName:L.ZodNativeEnum,...G(t)});var gr=class extends K{unwrap(){return this._def.type}_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==A.promise&&r.common.async===!1)return _(r,{code:y.invalid_type,expected:A.promise,received:r.parsedType}),N;let n=r.parsedType===A.promise?r.data:Promise.resolve(r.data);return Le(n.then(o=>this._def.type.parseAsync(o,{path:r.path,errorMap:r.common.contextualErrorMap})))}};gr.create=(e,t)=>new gr({type:e,typeName:L.ZodPromise,...G(t)});var pt=class extends K{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===L.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){let{status:r,ctx:n}=this._processInputParams(t),o=this._def.effect||null,i={addIssue:s=>{_(n,s),s.fatal?r.abort():r.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),o.type==="preprocess"){let s=o.transform(n.data,i);if(n.common.async)return Promise.resolve(s).then(async a=>{if(r.value==="aborted")return N;let c=await this._def.schema._parseAsync({data:a,path:n.path,parent:n});return c.status==="aborted"?N:c.status==="dirty"?Nr(c.value):r.value==="dirty"?Nr(c.value):c});{if(r.value==="aborted")return N;let a=this._def.schema._parseSync({data:s,path:n.path,parent:n});return a.status==="aborted"?N:a.status==="dirty"?Nr(a.value):r.value==="dirty"?Nr(a.value):a}}if(o.type==="refinement"){let s=a=>{let c=o.refinement(a,i);if(n.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(n.common.async===!1){let a=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?N:(a.status==="dirty"&&r.dirty(),s(a.value),{status:r.value,value:a.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(a=>a.status==="aborted"?N:(a.status==="dirty"&&r.dirty(),s(a.value).then(()=>({status:r.value,value:a.value}))))}if(o.type==="transform")if(n.common.async===!1){let s=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!pr(s))return N;let a=o.transform(s.value,i);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(s=>pr(s)?Promise.resolve(o.transform(s.value,i)).then(a=>({status:r.value,value:a})):N);ee.assertNever(o)}};pt.create=(e,t,r)=>new pt({schema:e,typeName:L.ZodEffects,effect:t,...G(r)});pt.createWithPreprocess=(e,t,r)=>new pt({schema:t,effect:{type:"preprocess",transform:e},typeName:L.ZodEffects,...G(r)});var ut=class extends K{_parse(t){return this._getType(t)===A.undefined?Le(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};ut.create=(e,t)=>new ut({innerType:e,typeName:L.ZodOptional,...G(t)});var St=class extends K{_parse(t){return this._getType(t)===A.null?Le(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};St.create=(e,t)=>new St({innerType:e,typeName:L.ZodNullable,...G(t)});var Zr=class extends K{_parse(t){let{ctx:r}=this._processInputParams(t),n=r.data;return r.parsedType===A.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};Zr.create=(e,t)=>new Zr({innerType:e,typeName:L.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...G(t)});var Yr=class extends K{_parse(t){let{ctx:r}=this._processInputParams(t),n={...r,common:{...r.common,issues:[]}},o=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return Tn(o)?o.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new We(n.common.issues)},input:n.data})})):{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new We(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Yr.create=(e,t)=>new Yr({innerType:e,typeName:L.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...G(t)});var jn=class extends K{_parse(t){if(this._getType(t)!==A.nan){let n=this._getOrReturnCtx(t);return _(n,{code:y.invalid_type,expected:A.nan,received:n.parsedType}),N}return{status:"valid",value:t.data}}};jn.create=e=>new jn({typeName:L.ZodNaN,...G(e)});var yE=Symbol("zod_brand"),Vo=class extends K{_parse(t){let{ctx:r}=this._processInputParams(t),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},Ho=class e extends K{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.common.async)return(async()=>{let i=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return i.status==="aborted"?N:i.status==="dirty"?(r.dirty(),Nr(i.value)):this._def.out._parseAsync({data:i.value,path:n.path,parent:n})})();{let o=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return o.status==="aborted"?N:o.status==="dirty"?(r.dirty(),{status:"dirty",value:o.value}):this._def.out._parseSync({data:o.value,path:n.path,parent:n})}}static create(t,r){return new e({in:t,out:r,typeName:L.ZodPipeline})}},Xr=class extends K{_parse(t){let r=this._def.innerType._parse(t),n=o=>(pr(o)&&(o.value=Object.freeze(o.value)),o);return Tn(r)?r.then(o=>n(o)):n(r)}unwrap(){return this._def.innerType}};Xr.create=(e,t)=>new Xr({innerType:e,typeName:L.ZodReadonly,...G(t)});function Zg(e,t){let r=typeof e=="function"?e(t):typeof e=="string"?{message:e}:e;return typeof r=="string"?{message:r}:r}function th(e,t={},r){return e?mr.create().superRefine((n,o)=>{let i=e(n);if(i instanceof Promise)return i.then(s=>{if(!s){let a=Zg(t,n),c=a.fatal??r??!0;o.addIssue({code:"custom",...a,fatal:c})}});if(!i){let s=Zg(t,n),a=s.fatal??r??!0;o.addIssue({code:"custom",...s,fatal:a})}}):mr.create()}var DE={object:Ue.lazycreate},L;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(L||(L={}));var bE=(e,t={message:`Input not instance of ${e.name}`})=>th(r=>r instanceof e,t),rh=fr.create,nh=Lr.create,vE=jn.create,EE=Br.create,oh=Mr.create,FE=Wr.create,xE=On.create,_E=Ur.create,CE=Vr.create,kE=mr.create,SE=zt.create,AE=bt.create,TE=Rn.create,IE=Kt.create,OE=Ue.create,RE=Ue.strictCreate,$E=Hr.create,PE=Rs.create,jE=Jr.create,NE=kt.create,LE=$s.create,BE=$n.create,ME=Pn.create,WE=Ps.create,UE=Gr.create,VE=zr.create,HE=Kr.create,JE=qr.create,GE=gr.create,zE=pt.create,KE=ut.create,qE=St.create,ZE=pt.createWithPreprocess,YE=Ho.create,XE=()=>rh().optional(),QE=()=>nh().optional(),eF=()=>oh().optional(),tF={string:(e=>fr.create({...e,coerce:!0})),number:(e=>Lr.create({...e,coerce:!0})),boolean:(e=>Mr.create({...e,coerce:!0})),bigint:(e=>Br.create({...e,coerce:!0})),date:(e=>Wr.create({...e,coerce:!0}))};var rF=N;function js(e,t=!1){let r=e.length,n=0,o="",i=0,s=16,a=0,c=0,u=0,p=0,f=0;function m(S,oe){let ye=0,X=0;for(;ye<S||!oe;){let M=e.charCodeAt(n);if(M>=48&&M<=57)X=X*16+M-48;else if(M>=65&&M<=70)X=X*16+M-65+10;else if(M>=97&&M<=102)X=X*16+M-97+10;else break;n++,ye++}return ye<S&&(X=-1),X}function g(S){n=S,o="",i=0,s=16,f=0}function w(){let S=n;if(e.charCodeAt(n)===48)n++;else for(n++;n<e.length&&Nn(e.charCodeAt(n));)n++;if(n<e.length&&e.charCodeAt(n)===46)if(n++,n<e.length&&Nn(e.charCodeAt(n)))for(n++;n<e.length&&Nn(e.charCodeAt(n));)n++;else return f=3,e.substring(S,n);let oe=n;if(n<e.length&&(e.charCodeAt(n)===69||e.charCodeAt(n)===101))if(n++,(n<e.length&&e.charCodeAt(n)===43||e.charCodeAt(n)===45)&&n++,n<e.length&&Nn(e.charCodeAt(n))){for(n++;n<e.length&&Nn(e.charCodeAt(n));)n++;oe=n}else f=3;return e.substring(S,oe)}function I(){let S="",oe=n;for(;;){if(n>=r){S+=e.substring(oe,n),f=2;break}let ye=e.charCodeAt(n);if(ye===34){S+=e.substring(oe,n),n++;break}if(ye===92){if(S+=e.substring(oe,n),n++,n>=r){f=2;break}switch(e.charCodeAt(n++)){case 34:S+='"';break;case 92:S+="\\";break;case 47:S+="/";break;case 98:S+="\b";break;case 102:S+="\f";break;case 110:S+=`
108
- `;break;case 114:S+="\r";break;case 116:S+=" ";break;case 117:let M=m(4,!0);M>=0?S+=String.fromCharCode(M):f=4;break;default:f=5}oe=n;continue}if(ye>=0&&ye<=31)if(Jo(ye)){S+=e.substring(oe,n),f=2;break}else f=6;n++}return S}function C(){if(o="",f=0,i=n,c=a,p=u,n>=r)return i=r,s=17;let S=e.charCodeAt(n);if(Vc(S)){do n++,o+=String.fromCharCode(S),S=e.charCodeAt(n);while(Vc(S));return s=15}if(Jo(S))return n++,o+=String.fromCharCode(S),S===13&&e.charCodeAt(n)===10&&(n++,o+=`
109
- `),a++,u=n,s=14;switch(S){case 123:return n++,s=1;case 125:return n++,s=2;case 91:return n++,s=3;case 93:return n++,s=4;case 58:return n++,s=6;case 44:return n++,s=5;case 34:return n++,o=I(),s=10;case 47:let oe=n-1;if(e.charCodeAt(n+1)===47){for(n+=2;n<r&&!Jo(e.charCodeAt(n));)n++;return o=e.substring(oe,n),s=12}if(e.charCodeAt(n+1)===42){n+=2;let ye=r-1,X=!1;for(;n<ye;){let M=e.charCodeAt(n);if(M===42&&e.charCodeAt(n+1)===47){n+=2,X=!0;break}n++,Jo(M)&&(M===13&&e.charCodeAt(n)===10&&n++,a++,u=n)}return X||(n++,f=1),o=e.substring(oe,n),s=13}return o+=String.fromCharCode(S),n++,s=16;case 45:if(o+=String.fromCharCode(S),n++,n===r||!Nn(e.charCodeAt(n)))return s=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return o+=w(),s=11;default:for(;n<r&&q(S);)n++,S=e.charCodeAt(n);if(i!==n){switch(o=e.substring(i,n),o){case"true":return s=8;case"false":return s=9;case"null":return s=7}return s=16}return o+=String.fromCharCode(S),n++,s=16}}function q(S){if(Vc(S)||Jo(S))return!1;switch(S){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function Z(){let S;do S=C();while(S>=12&&S<=15);return S}return{setPosition:g,getPosition:()=>n,scan:t?Z:C,getToken:()=>s,getTokenValue:()=>o,getTokenOffset:()=>i,getTokenLength:()=>n-i,getTokenStartLine:()=>c,getTokenStartCharacter:()=>i-p,getTokenError:()=>f}}function Vc(e){return e===32||e===9}function Jo(e){return e===10||e===13}function Nn(e){return e>=48&&e<=57}var ih;(function(e){e[e.lineFeed=10]="lineFeed",e[e.carriageReturn=13]="carriageReturn",e[e.space=32]="space",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.asterisk=42]="asterisk",e[e.backslash=92]="backslash",e[e.closeBrace=125]="closeBrace",e[e.closeBracket=93]="closeBracket",e[e.colon=58]="colon",e[e.comma=44]="comma",e[e.dot=46]="dot",e[e.doubleQuote=34]="doubleQuote",e[e.minus=45]="minus",e[e.openBrace=123]="openBrace",e[e.openBracket=91]="openBracket",e[e.plus=43]="plus",e[e.slash=47]="slash",e[e.formFeed=12]="formFeed",e[e.tab=9]="tab"})(ih||(ih={}));var oF=new Array(20).fill(0).map((e,t)=>" ".repeat(t)),Ln=200,iF={" ":{"\n":new Array(Ln).fill(0).map((e,t)=>`
110
- `+" ".repeat(t)),"\r":new Array(Ln).fill(0).map((e,t)=>"\r"+" ".repeat(t)),"\r\n":new Array(Ln).fill(0).map((e,t)=>`\r
111
- `+" ".repeat(t))}," ":{"\n":new Array(Ln).fill(0).map((e,t)=>`
112
- `+" ".repeat(t)),"\r":new Array(Ln).fill(0).map((e,t)=>"\r"+" ".repeat(t)),"\r\n":new Array(Ln).fill(0).map((e,t)=>`\r
113
- `+" ".repeat(t))}};var Ns;(function(e){e.DEFAULT={allowTrailingComma:!1}})(Ns||(Ns={}));function sh(e,t=[],r=Ns.DEFAULT){let n=null,o=[],i=[];function s(c){Array.isArray(o)?o.push(c):n!==null&&(o[n]=c)}return ah(e,{onObjectBegin:()=>{let c={};s(c),i.push(o),o=c,n=null},onObjectProperty:c=>{n=c},onObjectEnd:()=>{o=i.pop()},onArrayBegin:()=>{let c=[];s(c),i.push(o),o=c,n=null},onArrayEnd:()=>{o=i.pop()},onLiteralValue:s,onError:(c,u,p)=>{t.push({error:c,offset:u,length:p})}},r),o[0]}function ah(e,t,r=Ns.DEFAULT){let n=js(e,!1),o=[],i=0;function s(re){return re?()=>i===0&&re(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function a(re){return re?Fe=>i===0&&re(Fe,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function c(re){return re?Fe=>i===0&&re(Fe,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice()):()=>!0}function u(re){return re?()=>{i>0?i++:re(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice())===!1&&(i=1)}:()=>!0}function p(re){return re?()=>{i>0&&i--,i===0&&re(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter())}:()=>!0}let f=u(t.onObjectBegin),m=c(t.onObjectProperty),g=p(t.onObjectEnd),w=u(t.onArrayBegin),I=p(t.onArrayEnd),C=c(t.onLiteralValue),q=a(t.onSeparator),Z=s(t.onComment),S=a(t.onError),oe=r&&r.disallowComments,ye=r&&r.allowTrailingComma;function X(){for(;;){let re=n.scan();switch(n.getTokenError()){case 4:M(14);break;case 5:M(15);break;case 3:M(13);break;case 1:oe||M(11);break;case 2:M(12);break;case 6:M(16);break}switch(re){case 12:case 13:oe?M(10):Z();break;case 16:M(1);break;case 15:case 14:break;default:return re}}}function M(re,Fe=[],dd=[]){if(S(re),Fe.length+dd.length>0){let di=n.getToken();for(;di!==17;){if(Fe.indexOf(di)!==-1){X();break}else if(dd.indexOf(di)!==-1)break;di=X()}}}function Xn(re){let Fe=n.getTokenValue();return re?C(Fe):(m(Fe),o.push(Fe)),X(),!0}function fa(){switch(n.getToken()){case 11:let re=n.getTokenValue(),Fe=Number(re);isNaN(Fe)&&(M(2),Fe=0),C(Fe);break;case 7:C(null);break;case 8:C(!0);break;case 9:C(!1);break;default:return!1}return X(),!0}function ma(){return n.getToken()!==10?(M(3,[],[2,5]),!1):(Xn(!1),n.getToken()===6?(q(":"),X(),ga()||M(4,[],[2,5])):M(5,[],[2,5]),o.pop(),!0)}function Sy(){f(),X();let re=!1;for(;n.getToken()!==2&&n.getToken()!==17;){if(n.getToken()===5){if(re||M(4,[],[]),q(","),X(),n.getToken()===2&&ye)break}else re&&M(6,[],[]);ma()||M(4,[],[2,5]),re=!0}return g(),n.getToken()!==2?M(7,[2],[]):X(),!0}function Ay(){w(),X();let re=!0,Fe=!1;for(;n.getToken()!==4&&n.getToken()!==17;){if(n.getToken()===5){if(Fe||M(4,[],[]),q(","),X(),n.getToken()===4&&ye)break}else Fe&&M(6,[],[]);re?(o.push(0),re=!1):o[o.length-1]++,ga()||M(4,[],[4,5]),Fe=!0}return I(),re||o.pop(),n.getToken()!==4?M(8,[4],[]):X(),!0}function ga(){switch(n.getToken()){case 3:return Ay();case 1:return Sy();case 10:return Xn(!0);default:return fa()}}return X(),n.getToken()===17?r.allowEmptyContent?!0:(M(4,[],[]),!1):ga()?(n.getToken()!==17&&M(9,[],[]),!0):(M(4,[],[]),!1)}var lh;(function(e){e[e.None=0]="None",e[e.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=2]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",e[e.InvalidUnicode=4]="InvalidUnicode",e[e.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",e[e.InvalidCharacter=6]="InvalidCharacter"})(lh||(lh={}));var ch;(function(e){e[e.OpenBraceToken=1]="OpenBraceToken",e[e.CloseBraceToken=2]="CloseBraceToken",e[e.OpenBracketToken=3]="OpenBracketToken",e[e.CloseBracketToken=4]="CloseBracketToken",e[e.CommaToken=5]="CommaToken",e[e.ColonToken=6]="ColonToken",e[e.NullKeyword=7]="NullKeyword",e[e.TrueKeyword=8]="TrueKeyword",e[e.FalseKeyword=9]="FalseKeyword",e[e.StringLiteral=10]="StringLiteral",e[e.NumericLiteral=11]="NumericLiteral",e[e.LineCommentTrivia=12]="LineCommentTrivia",e[e.BlockCommentTrivia=13]="BlockCommentTrivia",e[e.LineBreakTrivia=14]="LineBreakTrivia",e[e.Trivia=15]="Trivia",e[e.Unknown=16]="Unknown",e[e.EOF=17]="EOF"})(ch||(ch={}));var Qr=sh;var uh;(function(e){e[e.InvalidSymbol=1]="InvalidSymbol",e[e.InvalidNumberFormat=2]="InvalidNumberFormat",e[e.PropertyNameExpected=3]="PropertyNameExpected",e[e.ValueExpected=4]="ValueExpected",e[e.ColonExpected=5]="ColonExpected",e[e.CommaExpected=6]="CommaExpected",e[e.CloseBraceExpected=7]="CloseBraceExpected",e[e.CloseBracketExpected=8]="CloseBracketExpected",e[e.EndOfFileExpected=9]="EndOfFileExpected",e[e.InvalidCommentToken=10]="InvalidCommentToken",e[e.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=12]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",e[e.InvalidUnicode=14]="InvalidUnicode",e[e.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",e[e.InvalidCharacter=16]="InvalidCharacter"})(uh||(uh={}));var Jn=h(require("fs")),Eh=h(require("path")),Fh=require("@webflow/cosmic-deploy-contract");var Bn=class extends Error{remediation;documentationUrl;cause;constructor(t,r){super(t),this.name="FrameworkError",this.cause=r?.cause,this.remediation=r?.remediation,this.documentationUrl=r?.documentationUrl,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toDisplayString(){let t=this.message;return this.remediation&&(t+=`
101
+ `,g),"")}`)),t.succeed(),t=u.spinner("Generating library bundle");let{outputFiles:p,outputVolume:h}=await zl({libraryIdentifier:o,renderer:r.renderer,framework:r.framework,publicPath:an(e.publicPath||AA),sourceVolumes:[s],componentsFiles:i,componentsOptions:d,debugBundler:e?.debugBundler,dev:e?.dev,overrideConfig:a,failOnWarnings:!e.force,bundler:e.bundler});t.succeed(),t=u.spinner("Writing to disk"),p.forEach(([g,m])=>{let w=(0,ri.join)(`/${m}`,`${g.name}`),k=Fs(h.readFileSync(w,"utf8").toString(),w,{bundleEnvironment:m}),F=(0,ri.join)(process.cwd(),e.outputPath||FA);tc.default.existsSync((0,ri.join)(F,`${m}`))||tc.default.mkdirSync((0,ri.join)(F,`${m}`),{recursive:!0}),tc.default.writeFileSync((0,ri.join)(F,m,g.name),k.value.toString())}),t.succeed(),u.success("Code Library bundled successfully!")}catch(r){throw t?.fail(),new f(r)}}x();N();var Os=D(require("fs-extra")),ef=D(require("path"));x();N();function TA(){try{if(!Os.default.existsSync(St))return null;let e=Os.default.readdirSync(St).filter(t=>t.endsWith(".log")).map(t=>({name:t,path:ef.default.join(St,t),time:Os.default.statSync(ef.default.join(St,t)).mtime.getTime()})).sort((t,r)=>r.time-t.time);if(e.length===0)return null;for(let t of e)try{let n=Os.default.readFileSync(t.path,"utf8").match(/Command: (.+)/);if(n){let o=n[1];if(!/^(log|library\s+log)(\s|$)/.test(o))return t.path}}catch{continue}return null}catch{return null}}async function tf(){let e=TA();e&&u.info(`${Bo} Latest log: ${e}`),u.info(`${Bo} All logs: ${St}`)}async function Ok(e){e.command("log").description("Display the logs directory and path to the latest log file, if available.").action(tf)}var ge=require("commander");S();x();function st(e){let t=Object.fromEntries(e.map(r=>[r.toLowerCase(),r]));return r=>{let n=[],o=[];for(let i of r){let s=t[i.toLowerCase()];s?n.push(s):o.push(i)}return{valid:n,invalid:o}}}function De(e,t,r){let n=e.split(",").map(s=>s.trim()),{valid:o,invalid:i}=t(n);if(o.length===0)throw new f(`No valid fields specified. Available: ${r.join(", ")}`,{isUserError:!0});return i.length>0&&u.warn(`Unknown field(s): ${i.join(", ")}. Available: ${r.join(", ")}`),o}de();x();var Pk=(e,t)=>e+" ".repeat(Math.max(0,t-pt(e).length));function We(e,t){let r=e.map((s,a)=>Math.max(pt(s).length,...t.map(l=>pt(String(l[a])).length))),n=r.map(s=>"\u2500".repeat(s+2)).join("\u2500"),o=e.map((s,a)=>Pk(s,r[a]+2)).join(""),i=t.map(s=>s.map((a,l)=>Pk(String(a),r[l]+2)).join("")).join(`
102
+ `);return`${o}
103
+ ${n}
104
+ ${i}`}function ni(e){return e?`
105
+
106
+ More: pass --cursor ${e}`:""}var $k=["id","name","description","siteId","appPath","createdAt","siteName","shortName"],Lk=["id","url","lastPublished","fullSiteCompiledAt"],Nk=["id","branch","mount","deployUrl","latestDeploymentStatus","lastDeploymentSucceededAt","lastVariableModifiedAt","createdAt","updatedAt"],rc="id,name,siteId,createdAt",rf="id,name,description,siteId,appPath,createdAt",nc="id,url,lastPublished",oc="id,branch,deployUrl,latestDeploymentStatus,createdAt",RA=new Set(["createdAt","updatedAt","lastPublished","fullSiteCompiledAt","lastDeploymentSucceededAt","lastVariableModifiedAt","buildStartedAt","buildFinishedAt","deployFinishedAt","buildRunningAt","deployStartedAt","buildFailedAt","deployFailedAt"]);function IA(e,t){return e==null||e===""?R("\u2014"):RA.has(t)?new Date(String(e)).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):String(e).replace(/\s*[\r\n]+\s*/g," ")}function Ps(e,t,r){if(e.length===0)return R(r);let n=t.map(i=>te(i)),o=e.map(i=>t.map(s=>IA(i[s],s)));return We(n,o)}var ic=st($k),jk=st(Lk),Mk=st(Nk);function cn(){return $k}function $s(){return Lk}function Ls(){return Nk}function sc(e,t=rc.split(",")){return Ps(e,t,"No apps found.")}function Bk(e,t=nc.split(",")){return Ps(e,t,"No domains found.")}function Uk(e,t=oc.split(",")){return Ps(e,t,"No environments found.")}function Wk(e){return e.siteName?`Permanently delete app "${e.name}" (attached to site "${e.siteName}", ${e.id}). This cannot be undone.`:`Archive standalone app "${e.name}" (${e.id}).`}var OA=["success","failed","canceled","unstaged"],ac=5,lc=600;function Hk(e){return OA.includes(e)}var Vk=["id","status","sourceType","commitHash","commitMessage","buildStartedAt","buildFinishedAt","deployFinishedAt","framework"],Ns="id,status,sourceType,commitHash,buildStartedAt",cc=st(Vk);function un(){return Vk}function js(e,t=Ns.split(",")){return Ps(e,t,"No deployments found.")}var nf=()=>new ge.Option("--no-input","Avoid prompting or doing anything interactive. Use this for CI/CD pipelines. Auto-enabled when CI=true, when stdout or stdin is not a TTY, or when a coding agent's execution environment is detected."),Gk=()=>new ge.Option("--input","Force interactive mode, overriding the automatic no-input detection."),of=()=>new ge.Option("--manifest <path>","Path to a manifest.json file or directory containing webflow.json. Default: ./webflow.json"),sf=()=>new ge.Option("--skip-update-check","Skip checking for @webflow packages updates"),af=()=>new ge.Option("--verbose","Display more information for debugging purposes."),Ms=()=>new ge.Option("--api-token <token>","API token. Default: value set in WEBFLOW_API_TOKEN env variable."),Ct=()=>new ge.Option("-s, --site <site-id>","Site ID. Default: value set in webflow.json config."),Y=()=>new ge.Option("--json","Output as JSON"),Bs=()=>new ge.Option("--app-id <id>","Cloud app ID. Default: value set in webflow.json (cloud.app_id)."),Us=()=>new ge.Option("--environment-id <id>","Environment ID. Default: value set in webflow.json (cloud.environment_id)."),lf=()=>new ge.Option("--secret","Mark the variable(s) as secret. Secret values are encrypted and never displayed."),Te=()=>new ge.Option("--dry-run","Preview without executing"),oi=()=>new ge.Option("-y, --yes","Skip confirmation prompt"),ii=()=>new ge.Option("--order <dir>","Sort direction: asc or desc").default("asc"),uc=()=>new ge.Option("-a, --agent <ids>",'Target coding agent, repeatable and comma-separated (e.g. --agent claude-code,cursor). Use "all" for every supported agent.').argParser((e,t)=>[...t??[],e]),Ws=()=>new ge.Option("-g, --global","Operate on the per-user (home directory) install"),Hs=()=>new ge.Option("-p, --project","Operate on the current project's install"),Le=e=>new ge.Option("--fields <fields>",`Comma-separated fields to display (${e.join(", ")})`),si=e=>new ge.Option("--sort-by <field>",`Sort by: ${e.join(", ")}`),dc=()=>new ge.Option("--limit <n>","Maximum number of items to return (default 100)").default("100").argParser(parseInt),pc=()=>new ge.Option("--offset <n>","Number of items to skip (default 0)").default("0").argParser(parseInt),PA=100,fc=e=>{let t=Number(e);if(!Number.isInteger(t)||t<=0)throw new ge.InvalidArgumentError("must be a positive integer.");return t},cf=()=>new ge.Option("--limit <n>","Max log lines to return (default: 100)").default(PA).argParser(fc),$A=20,Kk=()=>new ge.Option("--limit <n>","Max deployments to return, most recent first (default: 20)").default($A).argParser(fc),zk=e=>{let t=Number(e);if(!Number.isInteger(t))throw new ge.InvalidArgumentError("must be an integer number of seconds.");return t},Jk=()=>new ge.Option("--interval <seconds>","Seconds between deployment status polls (minimum 5; lower values are raised to 5)").default(ac).argParser(zk),qk=()=>new ge.Option("--timeout <seconds>","Max seconds to keep polling before giving up (maximum 1800; higher values are capped at 1800)").default(lc).argParser(zk),Vs=e=>async(t,r)=>{let o={...r.parent?.opts()||{},...t};await e(o)};de();var LA=`${ne("[Deprecated]")} The 'library' commands will be removed in the next major release.`,NA=()=>{u.warn(`${he} ${ne("webflow library share")} is deprecated and will be removed in the next major release.
107
+ Use ${V("webflow devlink import")} instead.
108
+ `)},jA=()=>{u.warn(`${he} ${ne("webflow library bundle")} is deprecated and will be removed in the next major release.
109
+ Use ${V("webflow devlink bundle")} instead.
110
+ `)},MA=()=>{u.warn(`${he} ${ne("webflow library log")} is deprecated and will be removed in the next major release.
111
+ Use ${V("webflow log")} instead.
112
+ `)},BA="Import a library of Code Components into your Webflow Workspace.",UA="Bundle a library of Code Components for local development.",Yk=()=>new dn.Option("-f, --force","Force the bundler to finish compiling, even if there are warnings or type errors."),Xk=()=>new dn.Option("--debug-bundler","Display final bundler configurations for debugging purposes."),Zk=()=>new dn.Option("--dev","Bundle in development mode for debugging purposes."),Qk=()=>new dn.Option("--bundler <engine>","Bundler to use: webpack or rspack (experimental). Default: webpack").choices(["webpack","rspack"]).default("webpack").hideHelp(),WA=()=>new dn.Option("--library-id <id>","Set the library identifier to use for the bundle.").hideHelp(),HA=()=>new dn.Option("--public-path <path>","Set the public path for the bundle."),VA=()=>new dn.Option("--output-path <path>","Override the output path for the bundle. Default is './dist'");function uf(e,t){return e.command(t).description(BA).addOption(Ms()).addOption(Yk()).addOption(Xk()).addOption(Zk()).addOption(Qk()).action(Vs(Zp))}function df(e,t){return e.command(t).description(UA).addOption(WA()).addOption(HA()).addOption(VA()).addOption(Yk()).addOption(Xk()).addOption(Zk()).addOption(Qk()).action(Vs(Qp))}var eb=e=>{let t=e.command("library").description(LA);uf(t,"share").description(`${ne("[Deprecated]")} Use 'webflow devlink import' instead.`).hook("preAction",NA),df(t,"bundle").description(`${ne("[Deprecated]")} Use 'webflow devlink bundle' instead.`).hook("preAction",jA),t.command("log").description(`${ne("[Deprecated]")} Use 'webflow log' instead.`).hook("preAction",MA).action(tf)};de();var tb=e=>{let t=e.command("devlink").description("CLI for managing your Webflow Components.");t.command("sync").description(`${ne("[Deprecated]")} Use 'webflow devlink export' instead. Sync your Webflow components to your filesystem.`).argument("[components...]","A list of components to sync. If none is provided, all components will be synced.").addOption(Ms()).addOption(Ct()).action(Yw),uf(t,"import"),df(t,"bundle"),t.command("export").description("Export Webflow Components from your Webflow Site.").addOption(Ms()).addOption(Ct()).action(Vs($l))};var Mr=D(require("fs")),Ut=D(require("path"));x();J();var we={New:"new",Existing:"existing"},rb="cli",Nr=3,jr=39,mc="astro",nb="cloud-scaffolds";var ob="package.json",Un="webflow.json",gc="wf-placeholder-name",ib="CLOUD_MOUNT_PATH",sb="gitignore";function pf(e){return!e.siteId}var Gs=async(e,t,r=mc,n,o,i)=>{try{let s,a;if("content"in n){let l=n.content;s=l.files,a=c=>Ut.relative(l.extractionRoot,c).replace(/\\/g,"/")}else{let c=n[r];if(!c)throw new Error(`Scaffold "${r}" not found`);s=c;let d=Ut.join(nb,r);a=p=>p.split(d)[1]?.substring(1).replace(/\\/g,"/")??""}for(let l of s)try{let c=Ut.join(e,a(l)),d=l.includes("next.config.ts"),p=l.includes("astro.config.mjs"),h=d||p;if(l.includes(Un)&&Mr.existsSync(c))continue;if(l.includes(ob)||l.includes(Un)){let m=(await Mr.promises.readFile(l,"utf8")).replace(gc,e);await hc(c,m)}else if(h){let g=await Mr.promises.readFile(l,"utf8");await hc(c,g.replace(ib,t))}else if(Ut.basename(c).toLowerCase()===sb){let g=await Mr.promises.readFile(l,"utf8"),m=Ut.join(Ut.dirname(c),".gitignore");await hc(m,g)}else{let g=await Mr.promises.readFile(l);await hc(c,g)}}catch(c){u.error(`Error processing file ${l}: ${c}`)}if(o&&i)try{Or({siteId:o,apiToken:i,directory:e})}catch(l){u.error(`Error creating .env file: ${l}`)}}catch(s){throw u.error(`Error applying scaffold: ${s}`),s}};var hc=async(e,t)=>{try{await Mr.promises.mkdir(Ut.dirname(e),{recursive:!0}),await Mr.promises.writeFile(e,t)}catch(r){throw u.error(`Error writing file ${e}: ${r}`),r}};var pn=D(require("fs")),ab=D(require("fs-extra")),fn=D(require("path")),yf=D(require("os")),lb=D(require("tar"));var qe=class extends Error{constructor(r,n,o){super(r);this.scaffoldId=n;this.supportedIds=o;this.name="ScaffoldError"}};var Ks={"astro-minimal":{id:"astro-minimal",name:"Astro",source:{type:"github",repo:"Webflow-Examples/hello-world-astro",ref:"v2",betaRef:"astro7"}},"nextjs-minimal":{id:"nextjs-minimal",name:"Next.js",source:{type:"github",repo:"Webflow-Examples/hello-world-nextjs",ref:"v1"}},astro:{id:"astro",name:"Astro (site-attached)",source:{type:"github",repo:"Webflow-Examples/hello-world-astro-devlink",ref:"v2",betaRef:"astro7"}},nextjs:{id:"nextjs",name:"Next.js (site-attached)",source:{type:"github",repo:"Webflow-Examples/hello-world-nextjs-devlink",ref:"v1"}}};function zs(e){let t=Ks[e];if(!t){let r=Object.keys(Ks);throw new qe(`Unsupported framework: "${e}". Supported: ${r.join(", ")}`,e,r)}return t}function ff(){return Object.keys(Ks)}function mf(){return[...new Set(ff().map(e=>e.replace(/-minimal$/,"")))]}function gf(){return["astro","nextjs"]}function hf(e){let r=`${e.replace(/-minimal$/,"")}-minimal`;if(!Ks[r]){let n=ff();throw new qe(`No minimal scaffold for "${e}". Supported: ${n.join(", ")}`,r,n)}return r}x();Qr();var GA="https://github.com";async function wf(e){let t=e.endsWith("-minimal")?e:hf(e);return yc(t)}async function yc(e){return zs(e).source.type==="github"?KA(e):cb(e)}async function cb(e){let t=zs(e);if(t.source.type!=="local")throw new qe(`Scaffold "${e}" does not have a local source`,e);let r=fn.isAbsolute(t.source.path)?t.source.path:fn.join(__dirname,t.source.path);if(!pn.existsSync(r))throw new qe(`Scaffold directory not found: ${r}`,e);let n=await Df(r);return{scaffoldId:e,files:n,extractionRoot:r}}async function KA(e){let t=zs(e);if(t.source.type!=="github")throw new qe(`Scaffold "${e}" does not have a GitHub source`,e);let r=(ct()?t.source.betaRef:void 0)??t.source.ref??"main",n=`${GA}/${t.source.repo}/archive/${r}.tar.gz`,o=await pn.promises.mkdtemp(fn.join(yf.tmpdir(),`webflow-scaffold-${e}-`)),i=u.spinner(`Downloading scaffold (${t.source.repo}@${r})`);try{let s;try{s=await fetch(n,{redirect:"follow",headers:{"User-Agent":"webflow-cli"}})}catch(g){throw i.fail("Download failed"),new qe(`Failed to fetch scaffold from GitHub: ${g instanceof Error?g.message:String(g)}. Repo: ${t.source.repo}, ref: ${r}`,e)}if(!s.ok)throw i.fail(`GitHub returned ${s.status} ${s.statusText}`),new qe(`Failed to fetch scaffold from GitHub: ${s.status} ${s.statusText}. Repo: ${t.source.repo}, ref: ${r}`,e);let a=Buffer.from(await s.arrayBuffer());i.succeed("Downloaded scaffold");let l=u.spinner("Unpacking scaffold");try{await zA(a,o),l.succeed("Scaffold ready")}catch(g){throw l.fail("Unpack failed"),g}let c=await pn.promises.readdir(o),d=c[0];if(!d||c.length!==1)throw new qe(`Unexpected tarball structure for ${t.source.repo}`,e);let p=fn.join(o,d),h=await Df(p);return{scaffoldId:e,files:h,extractionRoot:p}}catch(s){try{ab.default.removeSync(o)}catch{}throw s instanceof qe?s:new qe(`Failed to fetch scaffold "${e}": ${s instanceof Error?s.message:String(s)}`,e)}}async function zA(e,t){let r=fn.join(yf.tmpdir(),`webflow-scaffold-${Date.now()}.tar.gz`);await pn.promises.writeFile(r,new Uint8Array(e.buffer,e.byteOffset,e.byteLength));try{await lb.extract({file:r,cwd:t})}finally{await pn.promises.unlink(r).catch(()=>{})}}async function Df(e){let t=[],r=await pn.promises.readdir(e,{withFileTypes:!0});for(let n of r){let o=fn.join(e,n.name);n.isDirectory()?t.push(...await Df(o)):t.push(o)}return t}var Gf=D(require("fs-extra"));J();z();var X=D(require("fs")),ce=D(require("path")),na=require("child_process"),Kb=D(require("tar"));var lt=D(require("fs")),or=D(require("path"));var $={};uh($,{BRAND:()=>D0,DIRTY:()=>Wn,EMPTY_PATH:()=>XA,INVALID:()=>K,NEVER:()=>nT,OK:()=>at,ParseStatus:()=>Qe,Schema:()=>re,ZodAny:()=>hn,ZodArray:()=>Hr,ZodBigInt:()=>Vn,ZodBoolean:()=>Gn,ZodBranded:()=>qs,ZodCatch:()=>ro,ZodDate:()=>Kn,ZodDefault:()=>to,ZodDiscriminatedUnion:()=>kc,ZodEffects:()=>Vt,ZodEnum:()=>Qn,ZodError:()=>ft,ZodFirstPartyTypeKind:()=>q,ZodFunction:()=>Ec,ZodIntersection:()=>Yn,ZodIssueCode:()=>C,ZodLazy:()=>Xn,ZodLiteral:()=>Zn,ZodMap:()=>pi,ZodNaN:()=>mi,ZodNativeEnum:()=>eo,ZodNever:()=>rr,ZodNull:()=>Jn,ZodNullable:()=>wr,ZodNumber:()=>Hn,ZodObject:()=>mt,ZodOptional:()=>Wt,ZodParsedType:()=>j,ZodPipeline:()=>Ys,ZodPromise:()=>yn,ZodReadonly:()=>no,ZodRecord:()=>bc,ZodSchema:()=>re,ZodSet:()=>fi,ZodString:()=>gn,ZodSymbol:()=>ui,ZodTransformer:()=>Vt,ZodTuple:()=>yr,ZodType:()=>re,ZodUndefined:()=>zn,ZodUnion:()=>qn,ZodUnknown:()=>Wr,ZodVoid:()=>di,addIssueToContext:()=>P,any:()=>F0,array:()=>I0,bigint:()=>v0,boolean:()=>kb,coerce:()=>rT,custom:()=>yb,date:()=>S0,datetimeRegex:()=>gb,defaultErrorMap:()=>Br,discriminatedUnion:()=>L0,effect:()=>J0,enum:()=>G0,function:()=>W0,getErrorMap:()=>ai,getParsedType:()=>hr,instanceof:()=>b0,intersection:()=>N0,isAborted:()=>wc,isAsync:()=>li,isDirty:()=>Dc,isValid:()=>mn,late:()=>k0,lazy:()=>H0,literal:()=>V0,makeIssue:()=>Js,map:()=>B0,nan:()=>E0,nativeEnum:()=>K0,never:()=>T0,null:()=>_0,nullable:()=>Y0,number:()=>Db,object:()=>O0,objectUtil:()=>kf,oboolean:()=>tT,onumber:()=>eT,optional:()=>q0,ostring:()=>Q0,pipeline:()=>Z0,preprocess:()=>X0,promise:()=>z0,quotelessJson:()=>JA,record:()=>M0,set:()=>U0,setErrorMap:()=>YA,strictObject:()=>P0,string:()=>wb,symbol:()=>x0,transformer:()=>J0,tuple:()=>j0,undefined:()=>C0,union:()=>$0,unknown:()=>A0,util:()=>se,void:()=>R0});var se;(function(e){e.assertEqual=o=>{};function t(o){}e.assertIs=t;function r(o){throw new Error}e.assertNever=r,e.arrayToEnum=o=>{let i={};for(let s of o)i[s]=s;return i},e.getValidEnumValues=o=>{let i=e.objectKeys(o).filter(a=>typeof o[o[a]]!="number"),s={};for(let a of i)s[a]=o[a];return e.objectValues(s)},e.objectValues=o=>e.objectKeys(o).map(function(i){return o[i]}),e.objectKeys=typeof Object.keys=="function"?o=>Object.keys(o):o=>{let i=[];for(let s in o)Object.prototype.hasOwnProperty.call(o,s)&&i.push(s);return i},e.find=(o,i)=>{for(let s of o)if(i(s))return s},e.isInteger=typeof Number.isInteger=="function"?o=>Number.isInteger(o):o=>typeof o=="number"&&Number.isFinite(o)&&Math.floor(o)===o;function n(o,i=" | "){return o.map(s=>typeof s=="string"?`'${s}'`:s).join(i)}e.joinValues=n,e.jsonStringifyReplacer=(o,i)=>typeof i=="bigint"?i.toString():i})(se||(se={}));var kf;(function(e){e.mergeShapes=(t,r)=>({...t,...r})})(kf||(kf={}));var j=se.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),hr=e=>{switch(typeof e){case"undefined":return j.undefined;case"string":return j.string;case"number":return Number.isNaN(e)?j.nan:j.number;case"boolean":return j.boolean;case"function":return j.function;case"bigint":return j.bigint;case"symbol":return j.symbol;case"object":return Array.isArray(e)?j.array:e===null?j.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?j.promise:typeof Map<"u"&&e instanceof Map?j.map:typeof Set<"u"&&e instanceof Set?j.set:typeof Date<"u"&&e instanceof Date?j.date:j.object;default:return j.unknown}};var C=se.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),JA=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),ft=class e extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=t}format(t){let r=t||function(i){return i.message},n={_errors:[]},o=i=>{for(let s of i.issues)if(s.code==="invalid_union")s.unionErrors.map(o);else if(s.code==="invalid_return_type")o(s.returnTypeError);else if(s.code==="invalid_arguments")o(s.argumentsError);else if(s.path.length===0)n._errors.push(r(s));else{let a=n,l=0;for(;l<s.path.length;){let c=s.path[l];l===s.path.length-1?(a[c]=a[c]||{_errors:[]},a[c]._errors.push(r(s))):a[c]=a[c]||{_errors:[]},a=a[c],l++}}};return o(this),n}static assert(t){if(!(t instanceof e))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,se.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=r=>r.message){let r={},n=[];for(let o of this.issues)if(o.path.length>0){let i=o.path[0];r[i]=r[i]||[],r[i].push(t(o))}else n.push(t(o));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};ft.create=e=>new ft(e);var qA=(e,t)=>{let r;switch(e.code){case C.invalid_type:e.received===j.undefined?r="Required":r=`Expected ${e.expected}, received ${e.received}`;break;case C.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,se.jsonStringifyReplacer)}`;break;case C.unrecognized_keys:r=`Unrecognized key(s) in object: ${se.joinValues(e.keys,", ")}`;break;case C.invalid_union:r="Invalid input";break;case C.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${se.joinValues(e.options)}`;break;case C.invalid_enum_value:r=`Invalid enum value. Expected ${se.joinValues(e.options)}, received '${e.received}'`;break;case C.invalid_arguments:r="Invalid function arguments";break;case C.invalid_return_type:r="Invalid function return type";break;case C.invalid_date:r="Invalid date";break;case C.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:se.assertNever(e.validation):e.validation!=="regex"?r=`Invalid ${e.validation}`:r="Invalid";break;case C.too_small:e.type==="array"?r=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?r=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?r=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?r=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?r=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:r="Invalid input";break;case C.too_big:e.type==="array"?r=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?r=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?r=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?r=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?r=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:r="Invalid input";break;case C.custom:r="Invalid input";break;case C.invalid_intersection_types:r="Intersection results could not be merged";break;case C.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case C.not_finite:r="Number must be finite";break;default:r=t.defaultError,se.assertNever(e)}return{message:r}},Br=qA;var ub=Br;function YA(e){ub=e}function ai(){return ub}var Js=e=>{let{data:t,path:r,errorMaps:n,issueData:o}=e,i=[...r,...o.path||[]],s={...o,path:i};if(o.message!==void 0)return{...o,path:i,message:o.message};let a="",l=n.filter(c=>!!c).slice().reverse();for(let c of l)a=c(s,{data:t,defaultError:a}).message;return{...o,path:i,message:a}},XA=[];function P(e,t){let r=ai(),n=Js({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===Br?void 0:Br].filter(o=>!!o)});e.common.issues.push(n)}var Qe=class e{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,r){let n=[];for(let o of r){if(o.status==="aborted")return K;o.status==="dirty"&&t.dirty(),n.push(o.value)}return{status:t.value,value:n}}static async mergeObjectAsync(t,r){let n=[];for(let o of r){let i=await o.key,s=await o.value;n.push({key:i,value:s})}return e.mergeObjectSync(t,n)}static mergeObjectSync(t,r){let n={};for(let o of r){let{key:i,value:s}=o;if(i.status==="aborted"||s.status==="aborted")return K;i.status==="dirty"&&t.dirty(),s.status==="dirty"&&t.dirty(),i.value!=="__proto__"&&(typeof s.value<"u"||o.alwaysSet)&&(n[i.value]=s.value)}return{status:t.value,value:n}}},K=Object.freeze({status:"aborted"}),Wn=e=>({status:"dirty",value:e}),at=e=>({status:"valid",value:e}),wc=e=>e.status==="aborted",Dc=e=>e.status==="dirty",mn=e=>e.status==="valid",li=e=>typeof Promise<"u"&&e instanceof Promise;var H;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t?.message})(H||(H={}));var Ht=class{constructor(t,r,n,o){this._cachedPath=[],this.parent=t,this.data=r,this._path=n,this._key=o}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},db=(e,t)=>{if(mn(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new ft(e.common.issues);return this._error=r,this._error}}};function Q(e){if(!e)return{};let{errorMap:t,invalid_type_error:r,required_error:n,description:o}=e;if(t&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:o}:{errorMap:(s,a)=>{let{message:l}=e;return s.code==="invalid_enum_value"?{message:l??a.defaultError}:typeof a.data>"u"?{message:l??n??a.defaultError}:s.code!=="invalid_type"?{message:a.defaultError}:{message:l??r??a.defaultError}},description:o}}var re=class{get description(){return this._def.description}_getType(t){return hr(t.data)}_getOrReturnCtx(t,r){return r||{common:t.parent.common,data:t.data,parsedType:hr(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Qe,ctx:{common:t.parent.common,data:t.data,parsedType:hr(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let r=this._parse(t);if(li(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(t){let r=this._parse(t);return Promise.resolve(r)}parse(t,r){let n=this.safeParse(t,r);if(n.success)return n.data;throw n.error}safeParse(t,r){let n={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:hr(t)},o=this._parseSync({data:t,path:n.path,parent:n});return db(n,o)}"~validate"(t){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:hr(t)};if(!this["~standard"].async)try{let n=this._parseSync({data:t,path:[],parent:r});return mn(n)?{value:n.value}:{issues:r.common.issues}}catch(n){n?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:r}).then(n=>mn(n)?{value:n.value}:{issues:r.common.issues})}async parseAsync(t,r){let n=await this.safeParseAsync(t,r);if(n.success)return n.data;throw n.error}async safeParseAsync(t,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:hr(t)},o=this._parse({data:t,path:n.path,parent:n}),i=await(li(o)?o:Promise.resolve(o));return db(n,i)}refine(t,r){let n=o=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(o):r;return this._refinement((o,i)=>{let s=t(o),a=()=>i.addIssue({code:C.custom,...n(o)});return typeof Promise<"u"&&s instanceof Promise?s.then(l=>l?!0:(a(),!1)):s?!0:(a(),!1)})}refinement(t,r){return this._refinement((n,o)=>t(n)?!0:(o.addIssue(typeof r=="function"?r(n,o):r),!1))}_refinement(t){return new Vt({schema:this,typeName:q.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return Wt.create(this,this._def)}nullable(){return wr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Hr.create(this)}promise(){return yn.create(this,this._def)}or(t){return qn.create([this,t],this._def)}and(t){return Yn.create(this,t,this._def)}transform(t){return new Vt({...Q(this._def),schema:this,typeName:q.ZodEffects,effect:{type:"transform",transform:t}})}default(t){let r=typeof t=="function"?t:()=>t;return new to({...Q(this._def),innerType:this,defaultValue:r,typeName:q.ZodDefault})}brand(){return new qs({typeName:q.ZodBranded,type:this,...Q(this._def)})}catch(t){let r=typeof t=="function"?t:()=>t;return new ro({...Q(this._def),innerType:this,catchValue:r,typeName:q.ZodCatch})}describe(t){let r=this.constructor;return new r({...this._def,description:t})}pipe(t){return Ys.create(this,t)}readonly(){return no.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},ZA=/^c[^\s-]{8,}$/i,QA=/^[0-9a-z]+$/,e0=/^[0-9A-HJKMNP-TV-Z]{26}$/i,t0=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,r0=/^[a-z0-9_-]{21}$/i,n0=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,o0=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,i0=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,s0="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",bf,a0=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,l0=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,c0=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,u0=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,d0=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,p0=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,fb="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",f0=new RegExp(`^${fb}$`);function mb(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);let r=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`}function m0(e){return new RegExp(`^${mb(e)}$`)}function gb(e){let t=`${fb}T${mb(e)}`,r=[];return r.push(e.local?"Z?":"Z"),e.offset&&r.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${r.join("|")})`,new RegExp(`^${t}$`)}function g0(e,t){return!!((t==="v4"||!t)&&a0.test(e)||(t==="v6"||!t)&&c0.test(e))}function h0(e,t){if(!n0.test(e))return!1;try{let[r]=e.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),o=JSON.parse(atob(n));return!(typeof o!="object"||o===null||"typ"in o&&o?.typ!=="JWT"||!o.alg||t&&o.alg!==t)}catch{return!1}}function y0(e,t){return!!((t==="v4"||!t)&&l0.test(e)||(t==="v6"||!t)&&u0.test(e))}var gn=class e extends re{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==j.string){let i=this._getOrReturnCtx(t);return P(i,{code:C.invalid_type,expected:j.string,received:i.parsedType}),K}let n=new Qe,o;for(let i of this._def.checks)if(i.kind==="min")t.data.length<i.value&&(o=this._getOrReturnCtx(t,o),P(o,{code:C.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),n.dirty());else if(i.kind==="max")t.data.length>i.value&&(o=this._getOrReturnCtx(t,o),P(o,{code:C.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),n.dirty());else if(i.kind==="length"){let s=t.data.length>i.value,a=t.data.length<i.value;(s||a)&&(o=this._getOrReturnCtx(t,o),s?P(o,{code:C.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}):a&&P(o,{code:C.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}),n.dirty())}else if(i.kind==="email")i0.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"email",code:C.invalid_string,message:i.message}),n.dirty());else if(i.kind==="emoji")bf||(bf=new RegExp(s0,"u")),bf.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"emoji",code:C.invalid_string,message:i.message}),n.dirty());else if(i.kind==="uuid")t0.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"uuid",code:C.invalid_string,message:i.message}),n.dirty());else if(i.kind==="nanoid")r0.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"nanoid",code:C.invalid_string,message:i.message}),n.dirty());else if(i.kind==="cuid")ZA.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"cuid",code:C.invalid_string,message:i.message}),n.dirty());else if(i.kind==="cuid2")QA.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"cuid2",code:C.invalid_string,message:i.message}),n.dirty());else if(i.kind==="ulid")e0.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"ulid",code:C.invalid_string,message:i.message}),n.dirty());else if(i.kind==="url")try{new URL(t.data)}catch{o=this._getOrReturnCtx(t,o),P(o,{validation:"url",code:C.invalid_string,message:i.message}),n.dirty()}else i.kind==="regex"?(i.regex.lastIndex=0,i.regex.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"regex",code:C.invalid_string,message:i.message}),n.dirty())):i.kind==="trim"?t.data=t.data.trim():i.kind==="includes"?t.data.includes(i.value,i.position)||(o=this._getOrReturnCtx(t,o),P(o,{code:C.invalid_string,validation:{includes:i.value,position:i.position},message:i.message}),n.dirty()):i.kind==="toLowerCase"?t.data=t.data.toLowerCase():i.kind==="toUpperCase"?t.data=t.data.toUpperCase():i.kind==="startsWith"?t.data.startsWith(i.value)||(o=this._getOrReturnCtx(t,o),P(o,{code:C.invalid_string,validation:{startsWith:i.value},message:i.message}),n.dirty()):i.kind==="endsWith"?t.data.endsWith(i.value)||(o=this._getOrReturnCtx(t,o),P(o,{code:C.invalid_string,validation:{endsWith:i.value},message:i.message}),n.dirty()):i.kind==="datetime"?gb(i).test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{code:C.invalid_string,validation:"datetime",message:i.message}),n.dirty()):i.kind==="date"?f0.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{code:C.invalid_string,validation:"date",message:i.message}),n.dirty()):i.kind==="time"?m0(i).test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{code:C.invalid_string,validation:"time",message:i.message}),n.dirty()):i.kind==="duration"?o0.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"duration",code:C.invalid_string,message:i.message}),n.dirty()):i.kind==="ip"?g0(t.data,i.version)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"ip",code:C.invalid_string,message:i.message}),n.dirty()):i.kind==="jwt"?h0(t.data,i.alg)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"jwt",code:C.invalid_string,message:i.message}),n.dirty()):i.kind==="cidr"?y0(t.data,i.version)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"cidr",code:C.invalid_string,message:i.message}),n.dirty()):i.kind==="base64"?d0.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"base64",code:C.invalid_string,message:i.message}),n.dirty()):i.kind==="base64url"?p0.test(t.data)||(o=this._getOrReturnCtx(t,o),P(o,{validation:"base64url",code:C.invalid_string,message:i.message}),n.dirty()):se.assertNever(i);return{status:n.value,value:t.data}}_regex(t,r,n){return this.refinement(o=>t.test(o),{validation:r,code:C.invalid_string,...H.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...H.errToObj(t)})}url(t){return this._addCheck({kind:"url",...H.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...H.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...H.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...H.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...H.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...H.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...H.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...H.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...H.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...H.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...H.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...H.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...H.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...H.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...H.errToObj(t)})}regex(t,r){return this._addCheck({kind:"regex",regex:t,...H.errToObj(r)})}includes(t,r){return this._addCheck({kind:"includes",value:t,position:r?.position,...H.errToObj(r?.message)})}startsWith(t,r){return this._addCheck({kind:"startsWith",value:t,...H.errToObj(r)})}endsWith(t,r){return this._addCheck({kind:"endsWith",value:t,...H.errToObj(r)})}min(t,r){return this._addCheck({kind:"min",value:t,...H.errToObj(r)})}max(t,r){return this._addCheck({kind:"max",value:t,...H.errToObj(r)})}length(t,r){return this._addCheck({kind:"length",value:t,...H.errToObj(r)})}nonempty(t){return this.min(1,H.errToObj(t))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxLength(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}};gn.create=e=>new gn({checks:[],typeName:q.ZodString,coerce:e?.coerce??!1,...Q(e)});function w0(e,t){let r=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,o=r>n?r:n,i=Number.parseInt(e.toFixed(o).replace(".","")),s=Number.parseInt(t.toFixed(o).replace(".",""));return i%s/10**o}var Hn=class e extends re{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==j.number){let i=this._getOrReturnCtx(t);return P(i,{code:C.invalid_type,expected:j.number,received:i.parsedType}),K}let n,o=new Qe;for(let i of this._def.checks)i.kind==="int"?se.isInteger(t.data)||(n=this._getOrReturnCtx(t,n),P(n,{code:C.invalid_type,expected:"integer",received:"float",message:i.message}),o.dirty()):i.kind==="min"?(i.inclusive?t.data<i.value:t.data<=i.value)&&(n=this._getOrReturnCtx(t,n),P(n,{code:C.too_small,minimum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),o.dirty()):i.kind==="max"?(i.inclusive?t.data>i.value:t.data>=i.value)&&(n=this._getOrReturnCtx(t,n),P(n,{code:C.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),o.dirty()):i.kind==="multipleOf"?w0(t.data,i.value)!==0&&(n=this._getOrReturnCtx(t,n),P(n,{code:C.not_multiple_of,multipleOf:i.value,message:i.message}),o.dirty()):i.kind==="finite"?Number.isFinite(t.data)||(n=this._getOrReturnCtx(t,n),P(n,{code:C.not_finite,message:i.message}),o.dirty()):se.assertNever(i);return{status:o.value,value:t.data}}gte(t,r){return this.setLimit("min",t,!0,H.toString(r))}gt(t,r){return this.setLimit("min",t,!1,H.toString(r))}lte(t,r){return this.setLimit("max",t,!0,H.toString(r))}lt(t,r){return this.setLimit("max",t,!1,H.toString(r))}setLimit(t,r,n,o){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:n,message:H.toString(o)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:H.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:H.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:H.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:H.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:H.toString(t)})}multipleOf(t,r){return this._addCheck({kind:"multipleOf",value:t,message:H.toString(r)})}finite(t){return this._addCheck({kind:"finite",message:H.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:H.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:H.toString(t)})}get minValue(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxValue(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&se.isInteger(t.value))}get isFinite(){let t=null,r=null;for(let n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(t===null||n.value<t)&&(t=n.value)}return Number.isFinite(r)&&Number.isFinite(t)}};Hn.create=e=>new Hn({checks:[],typeName:q.ZodNumber,coerce:e?.coerce||!1,...Q(e)});var Vn=class e extends re{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==j.bigint)return this._getInvalidInput(t);let n,o=new Qe;for(let i of this._def.checks)i.kind==="min"?(i.inclusive?t.data<i.value:t.data<=i.value)&&(n=this._getOrReturnCtx(t,n),P(n,{code:C.too_small,type:"bigint",minimum:i.value,inclusive:i.inclusive,message:i.message}),o.dirty()):i.kind==="max"?(i.inclusive?t.data>i.value:t.data>=i.value)&&(n=this._getOrReturnCtx(t,n),P(n,{code:C.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),o.dirty()):i.kind==="multipleOf"?t.data%i.value!==BigInt(0)&&(n=this._getOrReturnCtx(t,n),P(n,{code:C.not_multiple_of,multipleOf:i.value,message:i.message}),o.dirty()):se.assertNever(i);return{status:o.value,value:t.data}}_getInvalidInput(t){let r=this._getOrReturnCtx(t);return P(r,{code:C.invalid_type,expected:j.bigint,received:r.parsedType}),K}gte(t,r){return this.setLimit("min",t,!0,H.toString(r))}gt(t,r){return this.setLimit("min",t,!1,H.toString(r))}lte(t,r){return this.setLimit("max",t,!0,H.toString(r))}lt(t,r){return this.setLimit("max",t,!1,H.toString(r))}setLimit(t,r,n,o){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:n,message:H.toString(o)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:H.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:H.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:H.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:H.toString(t)})}multipleOf(t,r){return this._addCheck({kind:"multipleOf",value:t,message:H.toString(r)})}get minValue(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxValue(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}};Vn.create=e=>new Vn({checks:[],typeName:q.ZodBigInt,coerce:e?.coerce??!1,...Q(e)});var Gn=class extends re{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==j.boolean){let n=this._getOrReturnCtx(t);return P(n,{code:C.invalid_type,expected:j.boolean,received:n.parsedType}),K}return at(t.data)}};Gn.create=e=>new Gn({typeName:q.ZodBoolean,coerce:e?.coerce||!1,...Q(e)});var Kn=class e extends re{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==j.date){let i=this._getOrReturnCtx(t);return P(i,{code:C.invalid_type,expected:j.date,received:i.parsedType}),K}if(Number.isNaN(t.data.getTime())){let i=this._getOrReturnCtx(t);return P(i,{code:C.invalid_date}),K}let n=new Qe,o;for(let i of this._def.checks)i.kind==="min"?t.data.getTime()<i.value&&(o=this._getOrReturnCtx(t,o),P(o,{code:C.too_small,message:i.message,inclusive:!0,exact:!1,minimum:i.value,type:"date"}),n.dirty()):i.kind==="max"?t.data.getTime()>i.value&&(o=this._getOrReturnCtx(t,o),P(o,{code:C.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),n.dirty()):se.assertNever(i);return{status:n.value,value:new Date(t.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(t,r){return this._addCheck({kind:"min",value:t.getTime(),message:H.toString(r)})}max(t,r){return this._addCheck({kind:"max",value:t.getTime(),message:H.toString(r)})}get minDate(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t!=null?new Date(t):null}};Kn.create=e=>new Kn({checks:[],coerce:e?.coerce||!1,typeName:q.ZodDate,...Q(e)});var ui=class extends re{_parse(t){if(this._getType(t)!==j.symbol){let n=this._getOrReturnCtx(t);return P(n,{code:C.invalid_type,expected:j.symbol,received:n.parsedType}),K}return at(t.data)}};ui.create=e=>new ui({typeName:q.ZodSymbol,...Q(e)});var zn=class extends re{_parse(t){if(this._getType(t)!==j.undefined){let n=this._getOrReturnCtx(t);return P(n,{code:C.invalid_type,expected:j.undefined,received:n.parsedType}),K}return at(t.data)}};zn.create=e=>new zn({typeName:q.ZodUndefined,...Q(e)});var Jn=class extends re{_parse(t){if(this._getType(t)!==j.null){let n=this._getOrReturnCtx(t);return P(n,{code:C.invalid_type,expected:j.null,received:n.parsedType}),K}return at(t.data)}};Jn.create=e=>new Jn({typeName:q.ZodNull,...Q(e)});var hn=class extends re{constructor(){super(...arguments),this._any=!0}_parse(t){return at(t.data)}};hn.create=e=>new hn({typeName:q.ZodAny,...Q(e)});var Wr=class extends re{constructor(){super(...arguments),this._unknown=!0}_parse(t){return at(t.data)}};Wr.create=e=>new Wr({typeName:q.ZodUnknown,...Q(e)});var rr=class extends re{_parse(t){let r=this._getOrReturnCtx(t);return P(r,{code:C.invalid_type,expected:j.never,received:r.parsedType}),K}};rr.create=e=>new rr({typeName:q.ZodNever,...Q(e)});var di=class extends re{_parse(t){if(this._getType(t)!==j.undefined){let n=this._getOrReturnCtx(t);return P(n,{code:C.invalid_type,expected:j.void,received:n.parsedType}),K}return at(t.data)}};di.create=e=>new di({typeName:q.ZodVoid,...Q(e)});var Hr=class e extends re{_parse(t){let{ctx:r,status:n}=this._processInputParams(t),o=this._def;if(r.parsedType!==j.array)return P(r,{code:C.invalid_type,expected:j.array,received:r.parsedType}),K;if(o.exactLength!==null){let s=r.data.length>o.exactLength.value,a=r.data.length<o.exactLength.value;(s||a)&&(P(r,{code:s?C.too_big:C.too_small,minimum:a?o.exactLength.value:void 0,maximum:s?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),n.dirty())}if(o.minLength!==null&&r.data.length<o.minLength.value&&(P(r,{code:C.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),n.dirty()),o.maxLength!==null&&r.data.length>o.maxLength.value&&(P(r,{code:C.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((s,a)=>o.type._parseAsync(new Ht(r,s,r.path,a)))).then(s=>Qe.mergeArray(n,s));let i=[...r.data].map((s,a)=>o.type._parseSync(new Ht(r,s,r.path,a)));return Qe.mergeArray(n,i)}get element(){return this._def.type}min(t,r){return new e({...this._def,minLength:{value:t,message:H.toString(r)}})}max(t,r){return new e({...this._def,maxLength:{value:t,message:H.toString(r)}})}length(t,r){return new e({...this._def,exactLength:{value:t,message:H.toString(r)}})}nonempty(t){return this.min(1,t)}};Hr.create=(e,t)=>new Hr({type:e,minLength:null,maxLength:null,exactLength:null,typeName:q.ZodArray,...Q(t)});function ci(e){if(e instanceof mt){let t={};for(let r in e.shape){let n=e.shape[r];t[r]=Wt.create(ci(n))}return new mt({...e._def,shape:()=>t})}else return e instanceof Hr?new Hr({...e._def,type:ci(e.element)}):e instanceof Wt?Wt.create(ci(e.unwrap())):e instanceof wr?wr.create(ci(e.unwrap())):e instanceof yr?yr.create(e.items.map(t=>ci(t))):e}var mt=class e extends re{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let t=this._def.shape(),r=se.objectKeys(t);return this._cached={shape:t,keys:r},this._cached}_parse(t){if(this._getType(t)!==j.object){let c=this._getOrReturnCtx(t);return P(c,{code:C.invalid_type,expected:j.object,received:c.parsedType}),K}let{status:n,ctx:o}=this._processInputParams(t),{shape:i,keys:s}=this._getCached(),a=[];if(!(this._def.catchall instanceof rr&&this._def.unknownKeys==="strip"))for(let c in o.data)s.includes(c)||a.push(c);let l=[];for(let c of s){let d=i[c],p=o.data[c];l.push({key:{status:"valid",value:c},value:d._parse(new Ht(o,p,o.path,c)),alwaysSet:c in o.data})}if(this._def.catchall instanceof rr){let c=this._def.unknownKeys;if(c==="passthrough")for(let d of a)l.push({key:{status:"valid",value:d},value:{status:"valid",value:o.data[d]}});else if(c==="strict")a.length>0&&(P(o,{code:C.unrecognized_keys,keys:a}),n.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let c=this._def.catchall;for(let d of a){let p=o.data[d];l.push({key:{status:"valid",value:d},value:c._parse(new Ht(o,p,o.path,d)),alwaysSet:d in o.data})}}return o.common.async?Promise.resolve().then(async()=>{let c=[];for(let d of l){let p=await d.key,h=await d.value;c.push({key:p,value:h,alwaysSet:d.alwaysSet})}return c}).then(c=>Qe.mergeObjectSync(n,c)):Qe.mergeObjectSync(n,l)}get shape(){return this._def.shape()}strict(t){return H.errToObj,new e({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(r,n)=>{let o=this._def.errorMap?.(r,n).message??n.defaultError;return r.code==="unrecognized_keys"?{message:H.errToObj(t).message??o}:{message:o}}}:{}})}strip(){return new e({...this._def,unknownKeys:"strip"})}passthrough(){return new e({...this._def,unknownKeys:"passthrough"})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:q.ZodObject})}setKey(t,r){return this.augment({[t]:r})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let r={};for(let n of se.objectKeys(t))t[n]&&this.shape[n]&&(r[n]=this.shape[n]);return new e({...this._def,shape:()=>r})}omit(t){let r={};for(let n of se.objectKeys(this.shape))t[n]||(r[n]=this.shape[n]);return new e({...this._def,shape:()=>r})}deepPartial(){return ci(this)}partial(t){let r={};for(let n of se.objectKeys(this.shape)){let o=this.shape[n];t&&!t[n]?r[n]=o:r[n]=o.optional()}return new e({...this._def,shape:()=>r})}required(t){let r={};for(let n of se.objectKeys(this.shape))if(t&&!t[n])r[n]=this.shape[n];else{let i=this.shape[n];for(;i instanceof Wt;)i=i._def.innerType;r[n]=i}return new e({...this._def,shape:()=>r})}keyof(){return hb(se.objectKeys(this.shape))}};mt.create=(e,t)=>new mt({shape:()=>e,unknownKeys:"strip",catchall:rr.create(),typeName:q.ZodObject,...Q(t)});mt.strictCreate=(e,t)=>new mt({shape:()=>e,unknownKeys:"strict",catchall:rr.create(),typeName:q.ZodObject,...Q(t)});mt.lazycreate=(e,t)=>new mt({shape:e,unknownKeys:"strip",catchall:rr.create(),typeName:q.ZodObject,...Q(t)});var qn=class extends re{_parse(t){let{ctx:r}=this._processInputParams(t),n=this._def.options;function o(i){for(let a of i)if(a.result.status==="valid")return a.result;for(let a of i)if(a.result.status==="dirty")return r.common.issues.push(...a.ctx.common.issues),a.result;let s=i.map(a=>new ft(a.ctx.common.issues));return P(r,{code:C.invalid_union,unionErrors:s}),K}if(r.common.async)return Promise.all(n.map(async i=>{let s={...r,common:{...r.common,issues:[]},parent:null};return{result:await i._parseAsync({data:r.data,path:r.path,parent:s}),ctx:s}})).then(o);{let i,s=[];for(let l of n){let c={...r,common:{...r.common,issues:[]},parent:null},d=l._parseSync({data:r.data,path:r.path,parent:c});if(d.status==="valid")return d;d.status==="dirty"&&!i&&(i={result:d,ctx:c}),c.common.issues.length&&s.push(c.common.issues)}if(i)return r.common.issues.push(...i.ctx.common.issues),i.result;let a=s.map(l=>new ft(l));return P(r,{code:C.invalid_union,unionErrors:a}),K}}get options(){return this._def.options}};qn.create=(e,t)=>new qn({options:e,typeName:q.ZodUnion,...Q(t)});var Ur=e=>e instanceof Xn?Ur(e.schema):e instanceof Vt?Ur(e.innerType()):e instanceof Zn?[e.value]:e instanceof Qn?e.options:e instanceof eo?se.objectValues(e.enum):e instanceof to?Ur(e._def.innerType):e instanceof zn?[void 0]:e instanceof Jn?[null]:e instanceof Wt?[void 0,...Ur(e.unwrap())]:e instanceof wr?[null,...Ur(e.unwrap())]:e instanceof qs||e instanceof no?Ur(e.unwrap()):e instanceof ro?Ur(e._def.innerType):[],kc=class e extends re{_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==j.object)return P(r,{code:C.invalid_type,expected:j.object,received:r.parsedType}),K;let n=this.discriminator,o=r.data[n],i=this.optionsMap.get(o);return i?r.common.async?i._parseAsync({data:r.data,path:r.path,parent:r}):i._parseSync({data:r.data,path:r.path,parent:r}):(P(r,{code:C.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),K)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,r,n){let o=new Map;for(let i of r){let s=Ur(i.shape[t]);if(!s.length)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let a of s){if(o.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);o.set(a,i)}}return new e({typeName:q.ZodDiscriminatedUnion,discriminator:t,options:r,optionsMap:o,...Q(n)})}};function Ef(e,t){let r=hr(e),n=hr(t);if(e===t)return{valid:!0,data:e};if(r===j.object&&n===j.object){let o=se.objectKeys(t),i=se.objectKeys(e).filter(a=>o.indexOf(a)!==-1),s={...e,...t};for(let a of i){let l=Ef(e[a],t[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}else if(r===j.array&&n===j.array){if(e.length!==t.length)return{valid:!1};let o=[];for(let i=0;i<e.length;i++){let s=e[i],a=t[i],l=Ef(s,a);if(!l.valid)return{valid:!1};o.push(l.data)}return{valid:!0,data:o}}else return r===j.date&&n===j.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}var Yn=class extends re{_parse(t){let{status:r,ctx:n}=this._processInputParams(t),o=(i,s)=>{if(wc(i)||wc(s))return K;let a=Ef(i.value,s.value);return a.valid?((Dc(i)||Dc(s))&&r.dirty(),{status:r.value,value:a.data}):(P(n,{code:C.invalid_intersection_types}),K)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([i,s])=>o(i,s)):o(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Yn.create=(e,t,r)=>new Yn({left:e,right:t,typeName:q.ZodIntersection,...Q(r)});var yr=class e extends re{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==j.array)return P(n,{code:C.invalid_type,expected:j.array,received:n.parsedType}),K;if(n.data.length<this._def.items.length)return P(n,{code:C.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),K;!this._def.rest&&n.data.length>this._def.items.length&&(P(n,{code:C.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let i=[...n.data].map((s,a)=>{let l=this._def.items[a]||this._def.rest;return l?l._parse(new Ht(n,s,n.path,a)):null}).filter(s=>!!s);return n.common.async?Promise.all(i).then(s=>Qe.mergeArray(r,s)):Qe.mergeArray(r,i)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};yr.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new yr({items:e,typeName:q.ZodTuple,rest:null,...Q(t)})};var bc=class e extends re{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==j.object)return P(n,{code:C.invalid_type,expected:j.object,received:n.parsedType}),K;let o=[],i=this._def.keyType,s=this._def.valueType;for(let a in n.data)o.push({key:i._parse(new Ht(n,a,n.path,a)),value:s._parse(new Ht(n,n.data[a],n.path,a)),alwaysSet:a in n.data});return n.common.async?Qe.mergeObjectAsync(r,o):Qe.mergeObjectSync(r,o)}get element(){return this._def.valueType}static create(t,r,n){return r instanceof re?new e({keyType:t,valueType:r,typeName:q.ZodRecord,...Q(n)}):new e({keyType:gn.create(),valueType:t,typeName:q.ZodRecord,...Q(r)})}},pi=class extends re{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==j.map)return P(n,{code:C.invalid_type,expected:j.map,received:n.parsedType}),K;let o=this._def.keyType,i=this._def.valueType,s=[...n.data.entries()].map(([a,l],c)=>({key:o._parse(new Ht(n,a,n.path,[c,"key"])),value:i._parse(new Ht(n,l,n.path,[c,"value"]))}));if(n.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let l of s){let c=await l.key,d=await l.value;if(c.status==="aborted"||d.status==="aborted")return K;(c.status==="dirty"||d.status==="dirty")&&r.dirty(),a.set(c.value,d.value)}return{status:r.value,value:a}})}else{let a=new Map;for(let l of s){let c=l.key,d=l.value;if(c.status==="aborted"||d.status==="aborted")return K;(c.status==="dirty"||d.status==="dirty")&&r.dirty(),a.set(c.value,d.value)}return{status:r.value,value:a}}}};pi.create=(e,t,r)=>new pi({valueType:t,keyType:e,typeName:q.ZodMap,...Q(r)});var fi=class e extends re{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==j.set)return P(n,{code:C.invalid_type,expected:j.set,received:n.parsedType}),K;let o=this._def;o.minSize!==null&&n.data.size<o.minSize.value&&(P(n,{code:C.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,exact:!1,message:o.minSize.message}),r.dirty()),o.maxSize!==null&&n.data.size>o.maxSize.value&&(P(n,{code:C.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),r.dirty());let i=this._def.valueType;function s(l){let c=new Set;for(let d of l){if(d.status==="aborted")return K;d.status==="dirty"&&r.dirty(),c.add(d.value)}return{status:r.value,value:c}}let a=[...n.data.values()].map((l,c)=>i._parse(new Ht(n,l,n.path,c)));return n.common.async?Promise.all(a).then(l=>s(l)):s(a)}min(t,r){return new e({...this._def,minSize:{value:t,message:H.toString(r)}})}max(t,r){return new e({...this._def,maxSize:{value:t,message:H.toString(r)}})}size(t,r){return this.min(t,r).max(t,r)}nonempty(t){return this.min(1,t)}};fi.create=(e,t)=>new fi({valueType:e,minSize:null,maxSize:null,typeName:q.ZodSet,...Q(t)});var Ec=class e extends re{constructor(){super(...arguments),this.validate=this.implement}_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==j.function)return P(r,{code:C.invalid_type,expected:j.function,received:r.parsedType}),K;function n(a,l){return Js({data:a,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,ai(),Br].filter(c=>!!c),issueData:{code:C.invalid_arguments,argumentsError:l}})}function o(a,l){return Js({data:a,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,ai(),Br].filter(c=>!!c),issueData:{code:C.invalid_return_type,returnTypeError:l}})}let i={errorMap:r.common.contextualErrorMap},s=r.data;if(this._def.returns instanceof yn){let a=this;return at(async function(...l){let c=new ft([]),d=await a._def.args.parseAsync(l,i).catch(g=>{throw c.addIssue(n(l,g)),c}),p=await Reflect.apply(s,this,d);return await a._def.returns._def.type.parseAsync(p,i).catch(g=>{throw c.addIssue(o(p,g)),c})})}else{let a=this;return at(function(...l){let c=a._def.args.safeParse(l,i);if(!c.success)throw new ft([n(l,c.error)]);let d=Reflect.apply(s,this,c.data),p=a._def.returns.safeParse(d,i);if(!p.success)throw new ft([o(d,p.error)]);return p.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:yr.create(t).rest(Wr.create())})}returns(t){return new e({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,r,n){return new e({args:t||yr.create([]).rest(Wr.create()),returns:r||Wr.create(),typeName:q.ZodFunction,...Q(n)})}},Xn=class extends re{get schema(){return this._def.getter()}_parse(t){let{ctx:r}=this._processInputParams(t);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Xn.create=(e,t)=>new Xn({getter:e,typeName:q.ZodLazy,...Q(t)});var Zn=class extends re{_parse(t){if(t.data!==this._def.value){let r=this._getOrReturnCtx(t);return P(r,{received:r.data,code:C.invalid_literal,expected:this._def.value}),K}return{status:"valid",value:t.data}}get value(){return this._def.value}};Zn.create=(e,t)=>new Zn({value:e,typeName:q.ZodLiteral,...Q(t)});function hb(e,t){return new Qn({values:e,typeName:q.ZodEnum,...Q(t)})}var Qn=class e extends re{_parse(t){if(typeof t.data!="string"){let r=this._getOrReturnCtx(t),n=this._def.values;return P(r,{expected:se.joinValues(n),received:r.parsedType,code:C.invalid_type}),K}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){let r=this._getOrReturnCtx(t),n=this._def.values;return P(r,{received:r.data,code:C.invalid_enum_value,options:n}),K}return at(t.data)}get options(){return this._def.values}get enum(){let t={};for(let r of this._def.values)t[r]=r;return t}get Values(){let t={};for(let r of this._def.values)t[r]=r;return t}get Enum(){let t={};for(let r of this._def.values)t[r]=r;return t}extract(t,r=this._def){return e.create(t,{...this._def,...r})}exclude(t,r=this._def){return e.create(this.options.filter(n=>!t.includes(n)),{...this._def,...r})}};Qn.create=hb;var eo=class extends re{_parse(t){let r=se.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(t);if(n.parsedType!==j.string&&n.parsedType!==j.number){let o=se.objectValues(r);return P(n,{expected:se.joinValues(o),received:n.parsedType,code:C.invalid_type}),K}if(this._cache||(this._cache=new Set(se.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){let o=se.objectValues(r);return P(n,{received:n.data,code:C.invalid_enum_value,options:o}),K}return at(t.data)}get enum(){return this._def.values}};eo.create=(e,t)=>new eo({values:e,typeName:q.ZodNativeEnum,...Q(t)});var yn=class extends re{unwrap(){return this._def.type}_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==j.promise&&r.common.async===!1)return P(r,{code:C.invalid_type,expected:j.promise,received:r.parsedType}),K;let n=r.parsedType===j.promise?r.data:Promise.resolve(r.data);return at(n.then(o=>this._def.type.parseAsync(o,{path:r.path,errorMap:r.common.contextualErrorMap})))}};yn.create=(e,t)=>new yn({type:e,typeName:q.ZodPromise,...Q(t)});var Vt=class extends re{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===q.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){let{status:r,ctx:n}=this._processInputParams(t),o=this._def.effect||null,i={addIssue:s=>{P(n,s),s.fatal?r.abort():r.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),o.type==="preprocess"){let s=o.transform(n.data,i);if(n.common.async)return Promise.resolve(s).then(async a=>{if(r.value==="aborted")return K;let l=await this._def.schema._parseAsync({data:a,path:n.path,parent:n});return l.status==="aborted"?K:l.status==="dirty"?Wn(l.value):r.value==="dirty"?Wn(l.value):l});{if(r.value==="aborted")return K;let a=this._def.schema._parseSync({data:s,path:n.path,parent:n});return a.status==="aborted"?K:a.status==="dirty"?Wn(a.value):r.value==="dirty"?Wn(a.value):a}}if(o.type==="refinement"){let s=a=>{let l=o.refinement(a,i);if(n.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(n.common.async===!1){let a=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?K:(a.status==="dirty"&&r.dirty(),s(a.value),{status:r.value,value:a.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(a=>a.status==="aborted"?K:(a.status==="dirty"&&r.dirty(),s(a.value).then(()=>({status:r.value,value:a.value}))))}if(o.type==="transform")if(n.common.async===!1){let s=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!mn(s))return K;let a=o.transform(s.value,i);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(s=>mn(s)?Promise.resolve(o.transform(s.value,i)).then(a=>({status:r.value,value:a})):K);se.assertNever(o)}};Vt.create=(e,t,r)=>new Vt({schema:e,typeName:q.ZodEffects,effect:t,...Q(r)});Vt.createWithPreprocess=(e,t,r)=>new Vt({schema:t,effect:{type:"preprocess",transform:e},typeName:q.ZodEffects,...Q(r)});var Wt=class extends re{_parse(t){return this._getType(t)===j.undefined?at(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};Wt.create=(e,t)=>new Wt({innerType:e,typeName:q.ZodOptional,...Q(t)});var wr=class extends re{_parse(t){return this._getType(t)===j.null?at(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};wr.create=(e,t)=>new wr({innerType:e,typeName:q.ZodNullable,...Q(t)});var to=class extends re{_parse(t){let{ctx:r}=this._processInputParams(t),n=r.data;return r.parsedType===j.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};to.create=(e,t)=>new to({innerType:e,typeName:q.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...Q(t)});var ro=class extends re{_parse(t){let{ctx:r}=this._processInputParams(t),n={...r,common:{...r.common,issues:[]}},o=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return li(o)?o.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new ft(n.common.issues)},input:n.data})})):{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new ft(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};ro.create=(e,t)=>new ro({innerType:e,typeName:q.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...Q(t)});var mi=class extends re{_parse(t){if(this._getType(t)!==j.nan){let n=this._getOrReturnCtx(t);return P(n,{code:C.invalid_type,expected:j.nan,received:n.parsedType}),K}return{status:"valid",value:t.data}}};mi.create=e=>new mi({typeName:q.ZodNaN,...Q(e)});var D0=Symbol("zod_brand"),qs=class extends re{_parse(t){let{ctx:r}=this._processInputParams(t),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},Ys=class e extends re{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.common.async)return(async()=>{let i=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return i.status==="aborted"?K:i.status==="dirty"?(r.dirty(),Wn(i.value)):this._def.out._parseAsync({data:i.value,path:n.path,parent:n})})();{let o=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return o.status==="aborted"?K:o.status==="dirty"?(r.dirty(),{status:"dirty",value:o.value}):this._def.out._parseSync({data:o.value,path:n.path,parent:n})}}static create(t,r){return new e({in:t,out:r,typeName:q.ZodPipeline})}},no=class extends re{_parse(t){let r=this._def.innerType._parse(t),n=o=>(mn(o)&&(o.value=Object.freeze(o.value)),o);return li(r)?r.then(o=>n(o)):n(r)}unwrap(){return this._def.innerType}};no.create=(e,t)=>new no({innerType:e,typeName:q.ZodReadonly,...Q(t)});function pb(e,t){let r=typeof e=="function"?e(t):typeof e=="string"?{message:e}:e;return typeof r=="string"?{message:r}:r}function yb(e,t={},r){return e?hn.create().superRefine((n,o)=>{let i=e(n);if(i instanceof Promise)return i.then(s=>{if(!s){let a=pb(t,n),l=a.fatal??r??!0;o.addIssue({code:"custom",...a,fatal:l})}});if(!i){let s=pb(t,n),a=s.fatal??r??!0;o.addIssue({code:"custom",...s,fatal:a})}}):hn.create()}var k0={object:mt.lazycreate},q;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(q||(q={}));var b0=(e,t={message:`Input not instance of ${e.name}`})=>yb(r=>r instanceof e,t),wb=gn.create,Db=Hn.create,E0=mi.create,v0=Vn.create,kb=Gn.create,S0=Kn.create,x0=ui.create,C0=zn.create,_0=Jn.create,F0=hn.create,A0=Wr.create,T0=rr.create,R0=di.create,I0=Hr.create,O0=mt.create,P0=mt.strictCreate,$0=qn.create,L0=kc.create,N0=Yn.create,j0=yr.create,M0=bc.create,B0=pi.create,U0=fi.create,W0=Ec.create,H0=Xn.create,V0=Zn.create,G0=Qn.create,K0=eo.create,z0=yn.create,J0=Vt.create,q0=Wt.create,Y0=wr.create,X0=Vt.createWithPreprocess,Z0=Ys.create,Q0=()=>wb().optional(),eT=()=>Db().optional(),tT=()=>kb().optional(),rT={string:(e=>gn.create({...e,coerce:!0})),number:(e=>Hn.create({...e,coerce:!0})),boolean:(e=>Gn.create({...e,coerce:!0})),bigint:(e=>Vn.create({...e,coerce:!0})),date:(e=>Kn.create({...e,coerce:!0}))};var nT=K;function vc(e,t=!1){let r=e.length,n=0,o="",i=0,s=16,a=0,l=0,c=0,d=0,p=0;function h(E,v){let M=0,B=0;for(;M<E||!v;){let U=e.charCodeAt(n);if(U>=48&&U<=57)B=B*16+U-48;else if(U>=65&&U<=70)B=B*16+U-65+10;else if(U>=97&&U<=102)B=B*16+U-97+10;else break;n++,M++}return M<E&&(B=-1),B}function g(E){n=E,o="",i=0,s=16,p=0}function m(){let E=n;if(e.charCodeAt(n)===48)n++;else for(n++;n<e.length&&gi(e.charCodeAt(n));)n++;if(n<e.length&&e.charCodeAt(n)===46)if(n++,n<e.length&&gi(e.charCodeAt(n)))for(n++;n<e.length&&gi(e.charCodeAt(n));)n++;else return p=3,e.substring(E,n);let v=n;if(n<e.length&&(e.charCodeAt(n)===69||e.charCodeAt(n)===101))if(n++,(n<e.length&&e.charCodeAt(n)===43||e.charCodeAt(n)===45)&&n++,n<e.length&&gi(e.charCodeAt(n))){for(n++;n<e.length&&gi(e.charCodeAt(n));)n++;v=n}else p=3;return e.substring(E,v)}function w(){let E="",v=n;for(;;){if(n>=r){E+=e.substring(v,n),p=2;break}let M=e.charCodeAt(n);if(M===34){E+=e.substring(v,n),n++;break}if(M===92){if(E+=e.substring(v,n),n++,n>=r){p=2;break}switch(e.charCodeAt(n++)){case 34:E+='"';break;case 92:E+="\\";break;case 47:E+="/";break;case 98:E+="\b";break;case 102:E+="\f";break;case 110:E+=`
113
+ `;break;case 114:E+="\r";break;case 116:E+=" ";break;case 117:let U=h(4,!0);U>=0?E+=String.fromCharCode(U):p=4;break;default:p=5}v=n;continue}if(M>=0&&M<=31)if(Xs(M)){E+=e.substring(v,n),p=2;break}else p=6;n++}return E}function k(){if(o="",p=0,i=n,l=a,d=c,n>=r)return i=r,s=17;let E=e.charCodeAt(n);if(vf(E)){do n++,o+=String.fromCharCode(E),E=e.charCodeAt(n);while(vf(E));return s=15}if(Xs(E))return n++,o+=String.fromCharCode(E),E===13&&e.charCodeAt(n)===10&&(n++,o+=`
114
+ `),a++,c=n,s=14;switch(E){case 123:return n++,s=1;case 125:return n++,s=2;case 91:return n++,s=3;case 93:return n++,s=4;case 58:return n++,s=6;case 44:return n++,s=5;case 34:return n++,o=w(),s=10;case 47:let v=n-1;if(e.charCodeAt(n+1)===47){for(n+=2;n<r&&!Xs(e.charCodeAt(n));)n++;return o=e.substring(v,n),s=12}if(e.charCodeAt(n+1)===42){n+=2;let M=r-1,B=!1;for(;n<M;){let U=e.charCodeAt(n);if(U===42&&e.charCodeAt(n+1)===47){n+=2,B=!0;break}n++,Xs(U)&&(U===13&&e.charCodeAt(n)===10&&n++,a++,c=n)}return B||(n++,p=1),o=e.substring(v,n),s=13}return o+=String.fromCharCode(E),n++,s=16;case 45:if(o+=String.fromCharCode(E),n++,n===r||!gi(e.charCodeAt(n)))return s=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return o+=m(),s=11;default:for(;n<r&&F(E);)n++,E=e.charCodeAt(n);if(i!==n){switch(o=e.substring(i,n),o){case"true":return s=8;case"false":return s=9;case"null":return s=7}return s=16}return o+=String.fromCharCode(E),n++,s=16}}function F(E){if(vf(E)||Xs(E))return!1;switch(E){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function A(){let E;do E=k();while(E>=12&&E<=15);return E}return{setPosition:g,getPosition:()=>n,scan:t?A:k,getToken:()=>s,getTokenValue:()=>o,getTokenOffset:()=>i,getTokenLength:()=>n-i,getTokenStartLine:()=>l,getTokenStartCharacter:()=>i-d,getTokenError:()=>p}}function vf(e){return e===32||e===9}function Xs(e){return e===10||e===13}function gi(e){return e>=48&&e<=57}var bb;(function(e){e[e.lineFeed=10]="lineFeed",e[e.carriageReturn=13]="carriageReturn",e[e.space=32]="space",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.asterisk=42]="asterisk",e[e.backslash=92]="backslash",e[e.closeBrace=125]="closeBrace",e[e.closeBracket=93]="closeBracket",e[e.colon=58]="colon",e[e.comma=44]="comma",e[e.dot=46]="dot",e[e.doubleQuote=34]="doubleQuote",e[e.minus=45]="minus",e[e.openBrace=123]="openBrace",e[e.openBracket=91]="openBracket",e[e.plus=43]="plus",e[e.slash=47]="slash",e[e.formFeed=12]="formFeed",e[e.tab=9]="tab"})(bb||(bb={}));var iT=new Array(20).fill(0).map((e,t)=>" ".repeat(t)),hi=200,sT={" ":{"\n":new Array(hi).fill(0).map((e,t)=>`
115
+ `+" ".repeat(t)),"\r":new Array(hi).fill(0).map((e,t)=>"\r"+" ".repeat(t)),"\r\n":new Array(hi).fill(0).map((e,t)=>`\r
116
+ `+" ".repeat(t))}," ":{"\n":new Array(hi).fill(0).map((e,t)=>`
117
+ `+" ".repeat(t)),"\r":new Array(hi).fill(0).map((e,t)=>"\r"+" ".repeat(t)),"\r\n":new Array(hi).fill(0).map((e,t)=>`\r
118
+ `+" ".repeat(t))}};var Sc;(function(e){e.DEFAULT={allowTrailingComma:!1}})(Sc||(Sc={}));function Eb(e,t=[],r=Sc.DEFAULT){let n=null,o=[],i=[];function s(l){Array.isArray(o)?o.push(l):n!==null&&(o[n]=l)}return vb(e,{onObjectBegin:()=>{let l={};s(l),i.push(o),o=l,n=null},onObjectProperty:l=>{n=l},onObjectEnd:()=>{o=i.pop()},onArrayBegin:()=>{let l=[];s(l),i.push(o),o=l,n=null},onArrayEnd:()=>{o=i.pop()},onLiteralValue:s,onError:(l,c,d)=>{t.push({error:l,offset:c,length:d})}},r),o[0]}function vb(e,t,r=Sc.DEFAULT){let n=vc(e,!1),o=[],i=0;function s(ie){return ie?()=>i===0&&ie(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function a(ie){return ie?Ve=>i===0&&ie(Ve,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function l(ie){return ie?Ve=>i===0&&ie(Ve,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice()):()=>!0}function c(ie){return ie?()=>{i>0?i++:ie(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice())===!1&&(i=1)}:()=>!0}function d(ie){return ie?()=>{i>0&&i--,i===0&&ie(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter())}:()=>!0}let p=c(t.onObjectBegin),h=l(t.onObjectProperty),g=d(t.onObjectEnd),m=c(t.onArrayBegin),w=d(t.onArrayEnd),k=l(t.onLiteralValue),F=a(t.onSeparator),A=s(t.onComment),E=a(t.onError),v=r&&r.disallowComments,M=r&&r.allowTrailingComma;function B(){for(;;){let ie=n.scan();switch(n.getTokenError()){case 4:U(14);break;case 5:U(15);break;case 3:U(13);break;case 1:v||U(11);break;case 2:U(12);break;case 6:U(16);break}switch(ie){case 12:case 13:v?U(10):A();break;case 16:U(1);break;case 15:case 14:break;default:return ie}}}function U(ie,Ve=[],ch=[]){if(E(ie),Ve.length+ch.length>0){let Va=n.getToken();for(;Va!==17;){if(Ve.indexOf(Va)!==-1){B();break}else if(ch.indexOf(Va)!==-1)break;Va=B()}}}function Ie(ie){let Ve=n.getTokenValue();return ie?k(Ve):(h(Ve),o.push(Ve)),B(),!0}function Ze(){switch(n.getToken()){case 11:let ie=n.getTokenValue(),Ve=Number(ie);isNaN(Ve)&&(U(2),Ve=0),k(Ve);break;case 7:k(null);break;case 8:k(!0);break;case 9:k(!1);break;default:return!1}return B(),!0}function Ee(){return n.getToken()!==10?(U(3,[],[2,5]),!1):(Ie(!1),n.getToken()===6?(F(":"),B(),Et()||U(4,[],[2,5])):U(5,[],[2,5]),o.pop(),!0)}function Ke(){p(),B();let ie=!1;for(;n.getToken()!==2&&n.getToken()!==17;){if(n.getToken()===5){if(ie||U(4,[],[]),F(","),B(),n.getToken()===2&&M)break}else ie&&U(6,[],[]);Ee()||U(4,[],[2,5]),ie=!0}return g(),n.getToken()!==2?U(7,[2],[]):B(),!0}function ae(){m(),B();let ie=!0,Ve=!1;for(;n.getToken()!==4&&n.getToken()!==17;){if(n.getToken()===5){if(Ve||U(4,[],[]),F(","),B(),n.getToken()===4&&M)break}else Ve&&U(6,[],[]);ie?(o.push(0),ie=!1):o[o.length-1]++,Et()||U(4,[],[4,5]),Ve=!0}return w(),ie||o.pop(),n.getToken()!==4?U(8,[4],[]):B(),!0}function Et(){switch(n.getToken()){case 3:return ae();case 1:return Ke();case 10:return Ie(!0);default:return Ze()}}return B(),n.getToken()===17?r.allowEmptyContent?!0:(U(4,[],[]),!1):Et()?(n.getToken()!==17&&U(9,[],[]),!0):(U(4,[],[]),!1)}var Sb;(function(e){e[e.None=0]="None",e[e.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=2]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",e[e.InvalidUnicode=4]="InvalidUnicode",e[e.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",e[e.InvalidCharacter=6]="InvalidCharacter"})(Sb||(Sb={}));var xb;(function(e){e[e.OpenBraceToken=1]="OpenBraceToken",e[e.CloseBraceToken=2]="CloseBraceToken",e[e.OpenBracketToken=3]="OpenBracketToken",e[e.CloseBracketToken=4]="CloseBracketToken",e[e.CommaToken=5]="CommaToken",e[e.ColonToken=6]="ColonToken",e[e.NullKeyword=7]="NullKeyword",e[e.TrueKeyword=8]="TrueKeyword",e[e.FalseKeyword=9]="FalseKeyword",e[e.StringLiteral=10]="StringLiteral",e[e.NumericLiteral=11]="NumericLiteral",e[e.LineCommentTrivia=12]="LineCommentTrivia",e[e.BlockCommentTrivia=13]="BlockCommentTrivia",e[e.LineBreakTrivia=14]="LineBreakTrivia",e[e.Trivia=15]="Trivia",e[e.Unknown=16]="Unknown",e[e.EOF=17]="EOF"})(xb||(xb={}));var oo=Eb;var Cb;(function(e){e[e.InvalidSymbol=1]="InvalidSymbol",e[e.InvalidNumberFormat=2]="InvalidNumberFormat",e[e.PropertyNameExpected=3]="PropertyNameExpected",e[e.ValueExpected=4]="ValueExpected",e[e.ColonExpected=5]="ColonExpected",e[e.CommaExpected=6]="CommaExpected",e[e.CloseBraceExpected=7]="CloseBraceExpected",e[e.CloseBracketExpected=8]="CloseBracketExpected",e[e.EndOfFileExpected=9]="EndOfFileExpected",e[e.InvalidCommentToken=10]="InvalidCommentToken",e[e.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=12]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",e[e.InvalidUnicode=14]="InvalidUnicode",e[e.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",e[e.InvalidCharacter=16]="InvalidCharacter"})(Cb||(Cb={}));var vi=D(require("fs")),jb=D(require("path")),Mb=require("@webflow/cosmic-deploy-contract");var yi=class extends Error{remediation;documentationUrl;cause;constructor(t,r){super(t),this.name="FrameworkError",this.cause=r?.cause,this.remediation=r?.remediation,this.documentationUrl=r?.documentationUrl,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toDisplayString(){let t=this.message;return this.remediation&&(t+=`
114
119
 
115
120
  How to fix: ${this.remediation}`),this.documentationUrl&&(t+=`
116
121
 
117
- Documentation: ${this.documentationUrl}`),t}},le=class extends Bn{constructor(t,r){super(t,r),this.name="FrameworkValidationError"}};var en=class extends Bn{configFile;constructor(t,r){super(t,r),this.name="FrameworkConfigError",this.configFile=r?.configFile}toDisplayString(){let t=super.toDisplayString();return this.configFile&&(t+=`
122
+ Documentation: ${this.documentationUrl}`),t}},ke=class extends yi{constructor(t,r){super(t,r),this.name="FrameworkValidationError"}};var io=class extends yi{configFile;constructor(t,r){super(t,r),this.name="FrameworkConfigError",this.configFile=r?.configFile}toDisplayString(){let t=super.toDisplayString();return this.configFile&&(t+=`
118
123
 
119
- Config file: ${this.configFile}`),t}},hr=class extends Bn{constructor(t,r){super(t,r),this.name="FrameworkDetectionError"}};var Je=h(require("path")),zo=h(require("fs"));var dh=h(require("semver")),Ve=class{static frameworkName="";ctx;constructor(t){this.ctx=t}static detect(t,r){return{detected:!1}}static detectFromBuiltOutput(t){return!1}static getOutputDeployMetadata(){throw new Error("getOutputDeployMetadata must be implemented by the framework subclass")}getOutputDeployMetadata(){return this.constructor.getOutputDeployMetadata()}getFrameworkVersion(){}async postBuild(){}getAdditionalConfigFiles(){return[]}getUserConfigPatterns(){return[]}hasDependency(t){let{packageJson:r}=this.ctx;return t in(r.dependencies||{})||t in(r.devDependencies||{})}getDependencyVersion(t){let{packageJson:r}=this.ctx;return r.dependencies?.[t]||r.devDependencies?.[t]}resolveFrameworkVersion(t){let r=this.getDependencyVersion(t);if(r)return dh.default.coerce(r)?.version}get log(){return this.ctx.log}get cwd(){return this.ctx.cwd}};var wh=h(require("semver")),we=h(require("fs")),At=h(require("path"));var tn=h(require("semver"));function pF(){return process.version.slice(1)}function fF(e){let t=tn.coerce(e);return t?t.major:null}function mF(e,t){let r=tn.coerce(e),n=tn.coerce(t);return!r||!n?!1:tn.gte(r,n)}function wr(e,t,r){let n=pF(),o=t.minimum;if(mF(n,o))e.debug(`Node.js version ${n} meets requirement ${o}`);else{let i=fF(o),s=`${r} requires Node.js ${o} or higher. Current version: ${n}`;if(t.severity==="error")throw new le(s,{remediation:`Please upgrade Node.js to ${o} or higher. You can use nvm, fnm, or similar tools to manage Node.js versions.
124
+ Config file: ${this.configFile}`),t}},wn=class extends yi{constructor(t,r){super(t,r),this.name="FrameworkDetectionError"}};var yt=D(require("path")),Qs=D(require("fs"));var _b=D(require("semver")),gt=class{static frameworkName="";ctx;constructor(t){this.ctx=t}static detect(t,r){return{detected:!1}}static detectFromBuiltOutput(t){return!1}static getOutputDeployMetadata(){throw new Error("getOutputDeployMetadata must be implemented by the framework subclass")}getOutputDeployMetadata(){return this.constructor.getOutputDeployMetadata()}getFrameworkVersion(){}async postBuild(){}getAdditionalConfigFiles(){return[]}getUserConfigPatterns(){return[]}hasDependency(t){let{packageJson:r}=this.ctx;return t in(r.dependencies||{})||t in(r.devDependencies||{})}getDependencyVersion(t){let{packageJson:r}=this.ctx;return r.dependencies?.[t]||r.devDependencies?.[t]}resolveFrameworkVersion(t){let r=this.getDependencyVersion(t);if(r)return _b.default.coerce(r)?.version}get log(){return this.ctx.log}get cwd(){return this.ctx.cwd}};var Ob=D(require("semver")),$e=D(require("fs")),Dr=D(require("path"));var so=D(require("semver"));function fT(){return process.version.slice(1)}function mT(e){let t=so.coerce(e);return t?t.major:null}function gT(e,t){let r=so.coerce(e),n=so.coerce(t);return!r||!n?!1:so.gte(r,n)}function Dn(e,t,r){let n=fT(),o=t.minimum;if(gT(n,o))e.debug(`Node.js version ${n} meets requirement ${o}`);else{let i=mT(o),s=`${r} requires Node.js ${o} or higher. Current version: ${n}`;if(t.severity==="error")throw new ke(s,{remediation:`Please upgrade Node.js to ${o} or higher. You can use nvm, fnm, or similar tools to manage Node.js versions.
120
125
 
121
126
  nvm install ${i}
122
- nvm use ${i}`,documentationUrl:"https://nodejs.org/en/download/"});e.warn(`${s}. Build may fail or behave unexpectedly.`)}}var Ls=h(require("fs")),ph=h(require("path"));var fh=B.object({name:B.string().optional(),version:B.string().optional(),dependencies:B.record(B.string()).optional(),devDependencies:B.record(B.string()).optional()});function Go(e){let t=ph.default.join(e,"package.json");if(!Ls.statSync(t,{throwIfNoEntry:!1}))return;let r=Ls.readFileSync(t).toString("utf8"),n;try{n=JSON.parse(r)}catch(o){throw new le("package.json was not valid JSON",{cause:o})}try{return fh.parse(n)}catch(o){throw new le("package.json schema validation failed",{cause:o})}}var Bs=h(require("fs")),mh=h(require("path"));var Ms=B.object({cloud:B.object({contract_version:B.string().optional(),framework:B.string().optional(),framework_version:B.string().optional(),entrypoint_path:B.string().optional(),deployment_type:B.enum(["spa","ssg","ssr","ssr-spa-combo"]).optional(),skip_no_bundle:B.boolean().optional(),assets_path_prefix:B.string().optional(),assets_source_skip_mount_path:B.boolean().optional()}).passthrough().optional()}).passthrough();function Mn(e,t,r="webflow.json"){let n=mh.default.join(t,r);if(!Bs.statSync(n,{throwIfNoEntry:!1}))return r.endsWith(".json")?Mn(e,t,r+"c"):void 0;let o=Bs.readFileSync(n).toString("utf8"),i;try{i=Qr(o)}catch(s){e?.error(`loaded but could not parse as JSONC ${n} ${JSON.stringify(o)}: ${s}`);return}try{let s=Ms.parse(i);return e.debug(`loaded ${n}: ${JSON.stringify(s)}`),s}catch(s){e?.error(`${n} was valid JSON but schema validation failed: ${s}`);return}}var gh=require("child_process"),hh=["--no-update-notifier","--no-progress","--no-audit","--no-fund"];async function Ie(e){let{log:t,cwd:r,args:n}=e,o={...process.env,...e.env||{},WRANGLER_SEND_METRICS:"false",NEXT_TELEMETRY_DISABLED:"1"},i=[...hh,...n];t.debug(`npm ${i.join(" ")} (in ${r})`),(0,gh.execSync)(`npm ${i.map(s=>JSON.stringify(s)).join(" ")}`,{cwd:r,env:o,stdio:"inherit"})}function vt(e){if(!e)return null;let t=wh.coerce(e);return t?t.major:null}function rn(e,t,r,n){let o=n?.exclude?Array.isArray(n.exclude)?n.exclude:[n.exclude]:[],i=At.basename(t);if(o.some(c=>i===c))return e.trace(`Skipping excluded: ${t}`),0;let s=we.statSync(t,{throwIfNoEntry:!1});if(!s)return e.trace(`Source does not exist: ${t}`),0;if(s.isDirectory()){e.trace(`Copying directory: ${t} -> ${r}`);let c=we.readdirSync(t),u=0;for(let p of c)u+=rn(e,At.join(t,p),At.join(r,p),n);return u}let a=At.dirname(r);return we.existsSync(a)||we.mkdirSync(a,{recursive:!0}),e.trace(`Copying file: ${t} -> ${r}`),we.copyFileSync(t,r),1}function He(e){return we.existsSync(e)}function Qe(...e){for(let t of e)if(we.existsSync(t))return t;return e[0]??""}async function Tt(e,t,r,n){if(!we.existsSync(t))throw new en(`Template not found: ${t}`,{configFile:t});let o=we.readFileSync(t,"utf8");e.debug(`envsubst: ${t} -> ${r}`);let i=n||process.env,s=o.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(c,u)=>i[u]??"").replace(/\$([A-Za-z_][A-Za-z0-9_]*)/g,(c,u)=>i[u]??""),a=At.dirname(r);we.existsSync(a)||we.mkdirSync(a,{recursive:!0}),we.writeFileSync(r,s)}function It(e,t,r,n){for(let o of n){let i=At.join(t,`${r}.${o}`);if(we.existsSync(i)){let s=At.join(t,`clouduser.${r}.${o}`);return e.info(`Renaming user config: ${r}.${o} -> clouduser.${r}.${o}`),we.renameSync(i,s),s}}return null}var Jc=Qe(Je.join(__dirname,"templates","astro","v5"),Je.join(__dirname,"templates","v5")),yh=Qe(Je.join(__dirname,"templates","astro"),Je.join(__dirname,"templates")),nn=class extends Ve{static frameworkName="astro";get info(){return{name:"astro",version:"5.x",displayName:"Astro 5"}}static detect(t,r){let n=r?.cloud?.framework;if(n&&n!=="astro")return{detected:!1};let o=t.dependencies?.astro||t.devDependencies?.astro;if(!o)return n==="astro"?{detected:!0,reason:"Specified as astro in webflow.json"}:{detected:!1};let i=vt(o);return i!==null&&i>=6?{detected:!1}:{detected:!0,reason:`Found astro@${o}`}}async validate(){let{log:t,packageJson:r}=this.ctx,n=this.getNodeVersionRequirement();n&&wr(t,n,this.info.displayName);let o=r.dependencies?.astro||r.devDependencies?.astro;if(!o)throw new le("Astro is not installed in this project.",{remediation:"Install Astro by running: npm install astro@^5.0.0",documentationUrl:"https://docs.astro.build/en/install/"});if(o==="latest")throw new le('Astro version "latest" is not supported by Webflow Cloud.',{remediation:"Please specify a version, e.g.: npm install astro@^5.0.0"});let i=vt(o);if(i!==null&&i>=6)throw new le(`Astro ${i}.x detected but was routed to the Astro 5 builder. This is an internal error.`,{remediation:"Ensure your package.json has astro@^6.0.0 - the Astro 6 builder will be used automatically. If this persists, please report the issue."});t.info(`Validated Astro project: astro@${o}`)}getCloudflareAdapter(){return{name:"@astrojs/cloudflare",version:"^12.0.0"}}getRequiredIntegrations(){return[{name:"@astrojs/react",version:"^4.0.0",reason:"Required for Webflow React components"}]}async installDependencies(){let{log:t,cwd:r}=this.ctx,n=this.getCloudflareAdapter();this.hasDependency(n.name)||(t.warn(`Installing ${n.name}@${n.version} (required for Cloudflare deployment)...`),await Ie({log:t,cwd:r,args:["install","--save",`${n.name}@${n.version}`]}));for(let o of this.getRequiredIntegrations())this.hasDependency(o.name)||(t.warn(`Installing ${o.name}@${o.version} (${o.reason})...`),await Ie({log:t,cwd:r,args:["install","--save",`${o.name}@${o.version}`]}))}getWebflowLoader(){return{templatePath:Je.join(Jc,"webflow-loader.ts"),destinationName:"webflow-loader.ts",configPath:"./webflow-loader.ts"}}getUserConfigPatterns(){return["astro.config.mjs","astro.config.cjs","astro.config.js","astro.config.ts"]}getWranglerTemplatePath(){return Je.join(Jc,"wrangler.json")}getAdditionalConfigFiles(){return[this.getWebflowLoader().templatePath,Je.join(yh,"astro.config.webflow.ts")]}async prepareConfig(){let{log:t,cwd:r,userEnv:n}=this.ctx;It(t,r,"astro.config",["mjs","cjs","js","ts"])===null&&(t.info("no user astro.config.{mjs,cjs,js,ts} found \u2014 writing empty clouduser.astro.config.mjs stub"),zo.writeFileSync(Je.join(r,"clouduser.astro.config.mjs"),`export default {};
123
- `));let i=Je.join(yh,"astro.config.webflow.ts");He(i)&&(t.info("Copying astro.config.webflow.ts..."),zo.copyFileSync(i,Je.join(r,"astro.config.webflow.ts")));let s=Je.join(Jc,"astro.config.mjs.template"),a=Je.join(r,"astro.config.mjs");t.info("Generating astro.config.mjs from template..."),await Tt(t,s,a,{...process.env,...n});let c=this.getWebflowLoader();He(c.templatePath)&&(t.info(`Copying ${c.destinationName}...`),zo.copyFileSync(c.templatePath,Je.join(r,c.destinationName)))}getBuildCommand(){return"astro build"}getNodeVersionRequirement(){return{minimum:"18.0.0",severity:"error"}}getFrameworkVersion(){return this.resolveFrameworkVersion("astro")}static getOutputDeployMetadata(){return{staticAssetsPath:"dist",staticAssetsExclude:["_worker.js"],workerEntryPath:"dist/_worker.js/index.js",deploymentType:"ssr",dryRunEntryPath:"./index.js"}}};var Ge=h(require("path")),Ko=h(require("fs"));var Gc=Qe(Ge.join(__dirname,"templates","astro","v6"),Ge.join(__dirname,"templates","v6")),Dh=Qe(Ge.join(__dirname,"templates","astro"),Ge.join(__dirname,"templates")),on=class extends Ve{static frameworkName="astro";get info(){return{name:"astro",version:"6.x",displayName:"Astro 6"}}static detect(t,r){let n=r?.cloud?.framework;if(n&&n!=="astro")return{detected:!1};let o=t.dependencies?.astro||t.devDependencies?.astro;if(!o)return{detected:!1};let i=vt(o);return i!==null&&i>=7?{detected:!1}:i!==null&&i>=6?{detected:!0,reason:`Found astro@${o} (Astro ${i}.x)`}:{detected:!1}}async validate(){let{log:t,packageJson:r}=this.ctx,n=this.getNodeVersionRequirement();n&&wr(t,n,this.info.displayName);let o=r.dependencies?.astro||r.devDependencies?.astro;if(!o)throw new le("Astro is not installed in this project.",{remediation:"Install Astro by running: npm install astro@^6.0.0",documentationUrl:"https://docs.astro.build/en/install/"});if(o==="latest")throw new le('Astro version "latest" is not supported by Webflow Cloud.',{remediation:"Please specify a version, e.g.: npm install astro@^6.0.0"});let i=vt(o);if(i!==null&&i<6)throw new le(`Astro ${i}.x detected but Astro6Builder was selected. This is likely a configuration error.`,{remediation:"Use Astro5Builder for Astro 5.x, or upgrade: npm install astro@^6.0.0"});if(i!==null&&i>=7)throw new le(`Astro ${i}.x detected but Astro6Builder was selected. This is likely a configuration error.`,{remediation:"Use Astro7Builder for Astro 7.x, or downgrade: npm install astro@^6.0.0"});t.info(`Validated Astro 6 project: astro@${o}`)}getCloudflareAdapter(){return{name:"@astrojs/cloudflare",version:"^13.0.0",peerDependencies:["@cloudflare/vite-plugin"]}}getRequiredIntegrations(){return[{name:"@astrojs/react",version:"^5.0.0",reason:"Required for Webflow React components"}]}async installDependencies(){let{log:t,cwd:r}=this.ctx,n=this.getCloudflareAdapter();if(this.hasDependency(n.name)||(t.warn(`Installing ${n.name}@${n.version} (required for Cloudflare deployment)...`),await Ie({log:t,cwd:r,args:["install","--save",`${n.name}@${n.version}`]})),n.peerDependencies)for(let o of n.peerDependencies)this.hasDependency(o)||(t.warn(`Installing ${o} (peer dependency of ${n.name})...`),await Ie({log:t,cwd:r,args:["install","--save",o]}));for(let o of this.getRequiredIntegrations())this.hasDependency(o.name)||(t.warn(`Installing ${o.name}@${o.version} (${o.reason})...`),await Ie({log:t,cwd:r,args:["install","--save",`${o.name}@${o.version}`]}))}getWebflowLoader(){return{templatePath:Ge.join(Gc,"webflow-loader.ts"),destinationName:"webflow-loader.ts",configPath:"./webflow-loader.ts"}}getUserConfigPatterns(){return["astro.config.mjs","astro.config.cjs","astro.config.js","astro.config.ts"]}getWranglerTemplatePath(){return Ge.join(Gc,"wrangler.json")}getAdditionalConfigFiles(){return[this.getWebflowLoader().templatePath,Ge.join(Dh,"astro.config.webflow.ts")]}async prepareConfig(){let{log:t,cwd:r,userEnv:n}=this.ctx;It(t,r,"astro.config",["mjs","cjs","js","ts"])===null&&(t.info("no user astro.config.{mjs,cjs,js,ts} found \u2014 writing empty clouduser.astro.config.mjs stub"),Ko.writeFileSync(Ge.join(r,"clouduser.astro.config.mjs"),`export default {};
124
- `));let i=Ge.join(Dh,"astro.config.webflow.ts");He(i)&&(t.info("Copying astro.config.webflow.ts..."),Ko.copyFileSync(i,Ge.join(r,"astro.config.webflow.ts")));let s=Ge.join(Gc,"astro.config.mjs.template"),a=Ge.join(r,"astro.config.mjs");t.info("Generating astro.config.mjs from template (Astro 6)..."),await Tt(t,s,a,{...process.env,...n});let c=this.getWebflowLoader();He(c.templatePath)&&(t.info(`Copying ${c.destinationName}...`),Ko.copyFileSync(c.templatePath,Ge.join(r,c.destinationName)))}getBuildCommand(){return"astro build"}getNodeVersionRequirement(){return{minimum:"22.12.0",severity:"error"}}getFrameworkVersion(){return this.resolveFrameworkVersion("astro")}static getOutputDeployMetadata(){return{staticAssetsPath:"dist/client",workerEntryPath:"dist/server/entry.mjs",wranglerMainOverride:"@astrojs/cloudflare/entrypoints/server",deploymentType:"ssr",usesAssetsBinding:!0,skipNoBundle:!0,assetsSourceSkipMountPath:!0,dryRunEntryPath:"./entry.mjs"}}};var ze=h(require("path")),qo=h(require("fs"));var zc=Qe(ze.join(__dirname,"templates","astro","v7"),ze.join(__dirname,"templates","v7")),bh=Qe(ze.join(__dirname,"templates","astro"),ze.join(__dirname,"templates")),Wn=class extends Ve{static frameworkName="astro";get info(){return{name:"astro",version:"7.x",displayName:"Astro 7"}}static detect(t,r){let n=r?.cloud?.framework;if(n&&n!=="astro")return{detected:!1};let o=t.dependencies?.astro||t.devDependencies?.astro;if(!o)return{detected:!1};let i=vt(o);return i!==null&&i>=7?{detected:!0,reason:`Found astro@${o} (Astro ${i}.x)`}:{detected:!1}}async validate(){let{log:t,packageJson:r}=this.ctx,n=this.getNodeVersionRequirement();n&&wr(t,n,this.info.displayName);let o=r.dependencies?.astro||r.devDependencies?.astro;if(!o)throw new le("Astro is not installed in this project.",{remediation:"Install Astro by running: npm install astro@^7.0.0",documentationUrl:"https://docs.astro.build/en/install/"});if(o==="latest")throw new le('Astro version "latest" is not supported by Webflow Cloud.',{remediation:"Please specify a version, e.g.: npm install astro@^7.0.0"});let i=vt(o);if(i!==null&&i<7)throw new le(`Astro ${i}.x detected but Astro7Builder was selected. This is likely a configuration error.`,{remediation:"Use Astro6Builder for Astro 6.x, or upgrade: npm install astro@^7.0.0"});t.info(`Validated Astro 7 project: astro@${o}`)}getCloudflareAdapter(){return{name:"@astrojs/cloudflare",version:"^14.1.0",peerDependencies:["@cloudflare/vite-plugin"]}}getRequiredIntegrations(){return[{name:"@astrojs/react",version:"^6.0.0",reason:"Required for Webflow React components"}]}async installDependencies(){let{log:t,cwd:r}=this.ctx,n=this.getCloudflareAdapter();if(this.hasDependency(n.name)||(t.warn(`Installing ${n.name}@${n.version} (required for Cloudflare deployment)...`),await Ie({log:t,cwd:r,args:["install","--save",`${n.name}@${n.version}`]})),n.peerDependencies)for(let o of n.peerDependencies)this.hasDependency(o)||(t.warn(`Installing ${o} (peer dependency of ${n.name})...`),await Ie({log:t,cwd:r,args:["install","--save",o]}));for(let o of this.getRequiredIntegrations())this.hasDependency(o.name)||(t.warn(`Installing ${o.name}@${o.version} (${o.reason})...`),await Ie({log:t,cwd:r,args:["install","--save",`${o.name}@${o.version}`]}))}getWebflowLoader(){return{templatePath:ze.join(zc,"webflow-loader.ts"),destinationName:"webflow-loader.ts",configPath:"./webflow-loader.ts"}}getUserConfigPatterns(){return["astro.config.mjs","astro.config.cjs","astro.config.js","astro.config.ts"]}getWranglerTemplatePath(){return ze.join(zc,"wrangler.json")}getAdditionalConfigFiles(){return[this.getWebflowLoader().templatePath,ze.join(bh,"astro.config.webflow.ts")]}async prepareConfig(){let{log:t,cwd:r,userEnv:n}=this.ctx;It(t,r,"astro.config",["mjs","cjs","js","ts"])===null&&(t.info("no user astro.config.{mjs,cjs,js,ts} found \u2014 writing empty clouduser.astro.config.mjs stub"),qo.writeFileSync(ze.join(r,"clouduser.astro.config.mjs"),`export default {};
125
- `));let i=ze.join(bh,"astro.config.webflow.ts");He(i)&&(t.info("Copying astro.config.webflow.ts..."),qo.copyFileSync(i,ze.join(r,"astro.config.webflow.ts")));let s=ze.join(zc,"astro.config.mjs.template"),a=ze.join(r,"astro.config.mjs");t.info("Generating astro.config.mjs from template (Astro 7)..."),await Tt(t,s,a,{...process.env,...n});let c=this.getWebflowLoader();He(c.templatePath)&&(t.info(`Copying ${c.destinationName}...`),qo.copyFileSync(c.templatePath,ze.join(r,c.destinationName)))}getBuildCommand(){return"astro build"}getNodeVersionRequirement(){return{minimum:"22.12.0",severity:"error"}}getFrameworkVersion(){return this.resolveFrameworkVersion("astro")}static getOutputDeployMetadata(){return{staticAssetsPath:"dist/client",workerEntryPath:"dist/server/entry.mjs",wranglerMainOverride:"@astrojs/cloudflare/entrypoints/server",deploymentType:"ssr",usesAssetsBinding:!0,skipNoBundle:!0,assetsSourceSkipMountPath:!0,dryRunEntryPath:"./entry.mjs"}}};var De=h(require("path")),ft=h(require("fs"));var Un=Qe(De.join(__dirname,"templates","nextjs"),De.join(__dirname,"templates")),Vn=class extends Ve{static frameworkName="nextjs";get info(){return{name:"nextjs",version:"*",displayName:"Next.js"}}static detect(t,r){let n=r?.cloud?.framework;return n==="nextjs"?{detected:!0,reason:"Specified as nextjs in webflow.json"}:n&&n!=="nextjs"?{detected:!1}:t.dependencies?.next!==void 0||t.devDependencies?.next!==void 0?{detected:!0,reason:'Found "next" in package.json'}:{detected:!1}}async validate(){let{log:t,packageJson:r}=this.ctx,n=r.dependencies?.next||r.devDependencies?.next;if(!n)throw new le("Next.js is not installed in this project.",{remediation:"Install Next.js by running: npm install next",documentationUrl:"https://nextjs.org/docs/getting-started/installation"});t.info(`Validated Next.js project: next@${n}`)}getCloudflareAdapter(){return{name:"@opennextjs/cloudflare",version:"*"}}getRequiredIntegrations(){return[]}async installDependencies(){let{log:t,cwd:r}=this.ctx,n=this.getCloudflareAdapter();this.hasDependency(n.name)||(t.warn("nextjs integration requires @opennextjs/cloudflare and this project doesn't have it. installing now..."),await Ie({log:t,cwd:r,args:["install","--save",n.name]}))}getWebflowLoader(){return{templatePath:De.join(Un,"webflow-loader.ts"),destinationName:"webflow-loader.ts",configPath:"./webflow-loader.ts"}}getUserConfigPatterns(){return["next.config.mjs","next.config.cjs","next.config.js","next.config.ts"]}getWranglerTemplatePath(){return De.join(Un,"wrangler.json")}getAdditionalConfigFiles(){return[this.getWebflowLoader().templatePath,De.join(Un,"open-next.config.ts")]}findOpenNextConfig(){let t="open-next.config.ts";if(ft.existsSync(De.join(this.cwd,t)))return t}ensureOpenNextConfig(t){let{log:r,cwd:n}=this.ctx,o=this.findOpenNextConfig();if(o){r.info(`${o} found, skipping creation (opennextjs-cloudflare will validate)`);return}if(r.info("open-next.config not found, creating open-next.config.ts with default Webflow Cloud configuration..."),!ft.existsSync(t))throw new en(`open-next.config.ts template not found at ${t}. This is a Webflow Cloud build system error.`,{configFile:t});let i=De.join(n,"open-next.config.ts");ft.copyFileSync(t,i),r.info("open-next.config.ts created successfully")}async prepareConfig(){let{log:t,cwd:r,userEnv:n}=this.ctx,o=It(t,r,"next.config",["mjs","cjs","js","ts"]);o===null?(t.info("no user next.config.{mjs,cjs,js,ts} found \u2014 writing empty clouduser.next.config.ts stub"),ft.writeFileSync(De.join(r,"clouduser.next.config.ts"),`export default {};
126
- `)):De.extname(o)!==".ts"&&(t.info(`writing clouduser.next.config.d.ts shim for ${De.basename(o)}`),ft.writeFileSync(De.join(r,"clouduser.next.config.d.ts"),`import type { UserNextConfig } from './next.config.webflow';
127
+ nvm use ${i}`,documentationUrl:"https://nodejs.org/en/download/"});e.warn(`${s}. Build may fail or behave unexpectedly.`)}}var xc=D(require("fs")),Fb=D(require("path"));var Ab=$.object({name:$.string().optional(),version:$.string().optional(),dependencies:$.record($.string()).optional(),devDependencies:$.record($.string()).optional()});function Zs(e){let t=Fb.default.join(e,"package.json");if(!xc.statSync(t,{throwIfNoEntry:!1}))return;let r=xc.readFileSync(t).toString("utf8"),n;try{n=JSON.parse(r)}catch(o){throw new ke("package.json was not valid JSON",{cause:o})}try{return Ab.parse(n)}catch(o){throw new ke("package.json schema validation failed",{cause:o})}}var Cc=D(require("fs")),Tb=D(require("path"));var _c=$.object({cloud:$.object({contract_version:$.string().optional(),framework:$.string().optional(),framework_version:$.string().optional(),entrypoint_path:$.string().optional(),deployment_type:$.enum(["spa","ssg","ssr","ssr-spa-combo"]).optional(),skip_no_bundle:$.boolean().optional(),assets_path_prefix:$.string().optional(),assets_source_skip_mount_path:$.boolean().optional()}).passthrough().optional()}).passthrough();function wi(e,t,r="webflow.json"){let n=Tb.default.join(t,r);if(!Cc.statSync(n,{throwIfNoEntry:!1}))return r.endsWith(".json")?wi(e,t,r+"c"):void 0;let o=Cc.readFileSync(n).toString("utf8"),i;try{i=oo(o)}catch(s){e?.error(`loaded but could not parse as JSONC ${n} ${JSON.stringify(o)}: ${s}`);return}try{let s=_c.parse(i);return e.debug(`loaded ${n}: ${JSON.stringify(s)}`),s}catch(s){e?.error(`${n} was valid JSON but schema validation failed: ${s}`);return}}var Rb=require("child_process"),Ib=["--no-update-notifier","--no-progress","--no-audit","--no-fund"];async function Ye(e){let{log:t,cwd:r,args:n}=e,o={...process.env,...e.env||{},WRANGLER_SEND_METRICS:"false",NEXT_TELEMETRY_DISABLED:"1"},i=[...Ib,...n];t.debug(`npm ${i.join(" ")} (in ${r})`),(0,Rb.execSync)(`npm ${i.map(s=>JSON.stringify(s)).join(" ")}`,{cwd:r,env:o,stdio:"inherit"})}function nr(e){if(!e)return null;let t=Ob.coerce(e);return t?t.major:null}function ao(e,t,r,n){let o=n?.exclude?Array.isArray(n.exclude)?n.exclude:[n.exclude]:[],i=Dr.basename(t);if(o.some(l=>i===l))return e.trace(`Skipping excluded: ${t}`),0;let s=$e.statSync(t,{throwIfNoEntry:!1});if(!s)return e.trace(`Source does not exist: ${t}`),0;if(s.isDirectory()){e.trace(`Copying directory: ${t} -> ${r}`);let l=$e.readdirSync(t),c=0;for(let d of l)c+=ao(e,Dr.join(t,d),Dr.join(r,d),n);return c}let a=Dr.dirname(r);return $e.existsSync(a)||$e.mkdirSync(a,{recursive:!0}),e.trace(`Copying file: ${t} -> ${r}`),$e.copyFileSync(t,r),1}function ht(e){return $e.existsSync(e)}function _t(...e){for(let t of e)if($e.existsSync(t))return t;return e[0]??""}async function kr(e,t,r,n){if(!$e.existsSync(t))throw new io(`Template not found: ${t}`,{configFile:t});let o=$e.readFileSync(t,"utf8");e.debug(`envsubst: ${t} -> ${r}`);let i=n||process.env,s=o.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(l,c)=>i[c]??"").replace(/\$([A-Za-z_][A-Za-z0-9_]*)/g,(l,c)=>i[c]??""),a=Dr.dirname(r);$e.existsSync(a)||$e.mkdirSync(a,{recursive:!0}),$e.writeFileSync(r,s)}function br(e,t,r,n){for(let o of n){let i=Dr.join(t,`${r}.${o}`);if($e.existsSync(i)){let s=Dr.join(t,`clouduser.${r}.${o}`);return e.info(`Renaming user config: ${r}.${o} -> clouduser.${r}.${o}`),$e.renameSync(i,s),s}}return null}var xf=_t(yt.join(__dirname,"templates","astro","v5"),yt.join(__dirname,"templates","v5")),Pb=_t(yt.join(__dirname,"templates","astro"),yt.join(__dirname,"templates")),lo=class extends gt{static frameworkName="astro";get info(){return{name:"astro",version:"5.x",displayName:"Astro 5"}}static detect(t,r){let n=r?.cloud?.framework;if(n&&n!=="astro")return{detected:!1};let o=t.dependencies?.astro||t.devDependencies?.astro;if(!o)return n==="astro"?{detected:!0,reason:"Specified as astro in webflow.json"}:{detected:!1};let i=nr(o);return i!==null&&i>=6?{detected:!1}:{detected:!0,reason:`Found astro@${o}`}}async validate(){let{log:t,packageJson:r}=this.ctx,n=this.getNodeVersionRequirement();n&&Dn(t,n,this.info.displayName);let o=r.dependencies?.astro||r.devDependencies?.astro;if(!o)throw new ke("Astro is not installed in this project.",{remediation:"Install Astro by running: npm install astro@^5.0.0",documentationUrl:"https://docs.astro.build/en/install/"});if(o==="latest")throw new ke('Astro version "latest" is not supported by Webflow Cloud.',{remediation:"Please specify a version, e.g.: npm install astro@^5.0.0"});let i=nr(o);if(i!==null&&i>=6)throw new ke(`Astro ${i}.x detected but was routed to the Astro 5 builder. This is an internal error.`,{remediation:"Ensure your package.json has astro@^6.0.0 - the Astro 6 builder will be used automatically. If this persists, please report the issue."});t.info(`Validated Astro project: astro@${o}`)}getCloudflareAdapter(){return{name:"@astrojs/cloudflare",version:"^12.0.0"}}getRequiredIntegrations(){return[{name:"@astrojs/react",version:"^4.0.0",reason:"Required for Webflow React components"}]}async installDependencies(){let{log:t,cwd:r}=this.ctx,n=this.getCloudflareAdapter();this.hasDependency(n.name)||(t.warn(`Installing ${n.name}@${n.version} (required for Cloudflare deployment)...`),await Ye({log:t,cwd:r,args:["install","--save",`${n.name}@${n.version}`]}));for(let o of this.getRequiredIntegrations())this.hasDependency(o.name)||(t.warn(`Installing ${o.name}@${o.version} (${o.reason})...`),await Ye({log:t,cwd:r,args:["install","--save",`${o.name}@${o.version}`]}))}getWebflowLoader(){return{templatePath:yt.join(xf,"webflow-loader.ts"),destinationName:"webflow-loader.ts",configPath:"./webflow-loader.ts"}}getUserConfigPatterns(){return["astro.config.mjs","astro.config.cjs","astro.config.js","astro.config.ts"]}getWranglerTemplatePath(){return yt.join(xf,"wrangler.json")}getAdditionalConfigFiles(){return[this.getWebflowLoader().templatePath,yt.join(Pb,"astro.config.webflow.ts")]}async prepareConfig(){let{log:t,cwd:r,userEnv:n}=this.ctx;br(t,r,"astro.config",["mjs","cjs","js","ts"])===null&&(t.info("no user astro.config.{mjs,cjs,js,ts} found \u2014 writing empty clouduser.astro.config.mjs stub"),Qs.writeFileSync(yt.join(r,"clouduser.astro.config.mjs"),`export default {};
128
+ `));let i=yt.join(Pb,"astro.config.webflow.ts");ht(i)&&(t.info("Copying astro.config.webflow.ts..."),Qs.copyFileSync(i,yt.join(r,"astro.config.webflow.ts")));let s=yt.join(xf,"astro.config.mjs.template"),a=yt.join(r,"astro.config.mjs");t.info("Generating astro.config.mjs from template..."),await kr(t,s,a,{...process.env,...n});let l=this.getWebflowLoader();ht(l.templatePath)&&(t.info(`Copying ${l.destinationName}...`),Qs.copyFileSync(l.templatePath,yt.join(r,l.destinationName)))}getBuildCommand(){return"astro build"}getNodeVersionRequirement(){return{minimum:"18.0.0",severity:"error"}}getFrameworkVersion(){return this.resolveFrameworkVersion("astro")}static getOutputDeployMetadata(){return{staticAssetsPath:"dist",staticAssetsExclude:["_worker.js"],workerEntryPath:"dist/_worker.js/index.js",deploymentType:"ssr",dryRunEntryPath:"./index.js"}}};var wt=D(require("path")),ea=D(require("fs"));var Cf=_t(wt.join(__dirname,"templates","astro","v6"),wt.join(__dirname,"templates","v6")),$b=_t(wt.join(__dirname,"templates","astro"),wt.join(__dirname,"templates")),co=class extends gt{static frameworkName="astro";get info(){return{name:"astro",version:"6.x",displayName:"Astro 6"}}static detect(t,r){let n=r?.cloud?.framework;if(n&&n!=="astro")return{detected:!1};let o=t.dependencies?.astro||t.devDependencies?.astro;if(!o)return{detected:!1};let i=nr(o);return i!==null&&i>=7?{detected:!1}:i!==null&&i>=6?{detected:!0,reason:`Found astro@${o} (Astro ${i}.x)`}:{detected:!1}}async validate(){let{log:t,packageJson:r}=this.ctx,n=this.getNodeVersionRequirement();n&&Dn(t,n,this.info.displayName);let o=r.dependencies?.astro||r.devDependencies?.astro;if(!o)throw new ke("Astro is not installed in this project.",{remediation:"Install Astro by running: npm install astro@^6.0.0",documentationUrl:"https://docs.astro.build/en/install/"});if(o==="latest")throw new ke('Astro version "latest" is not supported by Webflow Cloud.',{remediation:"Please specify a version, e.g.: npm install astro@^6.0.0"});let i=nr(o);if(i!==null&&i<6)throw new ke(`Astro ${i}.x detected but Astro6Builder was selected. This is likely a configuration error.`,{remediation:"Use Astro5Builder for Astro 5.x, or upgrade: npm install astro@^6.0.0"});if(i!==null&&i>=7)throw new ke(`Astro ${i}.x detected but Astro6Builder was selected. This is likely a configuration error.`,{remediation:"Use Astro7Builder for Astro 7.x, or downgrade: npm install astro@^6.0.0"});t.info(`Validated Astro 6 project: astro@${o}`)}getCloudflareAdapter(){return{name:"@astrojs/cloudflare",version:"^13.0.0",peerDependencies:["@cloudflare/vite-plugin"]}}getRequiredIntegrations(){return[{name:"@astrojs/react",version:"^5.0.0",reason:"Required for Webflow React components"}]}async installDependencies(){let{log:t,cwd:r}=this.ctx,n=this.getCloudflareAdapter();if(this.hasDependency(n.name)||(t.warn(`Installing ${n.name}@${n.version} (required for Cloudflare deployment)...`),await Ye({log:t,cwd:r,args:["install","--save",`${n.name}@${n.version}`]})),n.peerDependencies)for(let o of n.peerDependencies)this.hasDependency(o)||(t.warn(`Installing ${o} (peer dependency of ${n.name})...`),await Ye({log:t,cwd:r,args:["install","--save",o]}));for(let o of this.getRequiredIntegrations())this.hasDependency(o.name)||(t.warn(`Installing ${o.name}@${o.version} (${o.reason})...`),await Ye({log:t,cwd:r,args:["install","--save",`${o.name}@${o.version}`]}))}getWebflowLoader(){return{templatePath:wt.join(Cf,"webflow-loader.ts"),destinationName:"webflow-loader.ts",configPath:"./webflow-loader.ts"}}getUserConfigPatterns(){return["astro.config.mjs","astro.config.cjs","astro.config.js","astro.config.ts"]}getWranglerTemplatePath(){return wt.join(Cf,"wrangler.json")}getAdditionalConfigFiles(){return[this.getWebflowLoader().templatePath,wt.join($b,"astro.config.webflow.ts")]}async prepareConfig(){let{log:t,cwd:r,userEnv:n}=this.ctx;br(t,r,"astro.config",["mjs","cjs","js","ts"])===null&&(t.info("no user astro.config.{mjs,cjs,js,ts} found \u2014 writing empty clouduser.astro.config.mjs stub"),ea.writeFileSync(wt.join(r,"clouduser.astro.config.mjs"),`export default {};
129
+ `));let i=wt.join($b,"astro.config.webflow.ts");ht(i)&&(t.info("Copying astro.config.webflow.ts..."),ea.copyFileSync(i,wt.join(r,"astro.config.webflow.ts")));let s=wt.join(Cf,"astro.config.mjs.template"),a=wt.join(r,"astro.config.mjs");t.info("Generating astro.config.mjs from template (Astro 6)..."),await kr(t,s,a,{...process.env,...n});let l=this.getWebflowLoader();ht(l.templatePath)&&(t.info(`Copying ${l.destinationName}...`),ea.copyFileSync(l.templatePath,wt.join(r,l.destinationName)))}getBuildCommand(){return"astro build"}getNodeVersionRequirement(){return{minimum:"22.12.0",severity:"error"}}getFrameworkVersion(){return this.resolveFrameworkVersion("astro")}static getOutputDeployMetadata(){return{staticAssetsPath:"dist/client",workerEntryPath:"dist/server/entry.mjs",wranglerMainOverride:"@astrojs/cloudflare/entrypoints/server",deploymentType:"ssr",usesAssetsBinding:!0,skipNoBundle:!0,assetsSourceSkipMountPath:!0,dryRunEntryPath:"./entry.mjs"}}};var Dt=D(require("path")),ta=D(require("fs"));var _f=_t(Dt.join(__dirname,"templates","astro","v7"),Dt.join(__dirname,"templates","v7")),Lb=_t(Dt.join(__dirname,"templates","astro"),Dt.join(__dirname,"templates")),Di=class extends gt{static frameworkName="astro";get info(){return{name:"astro",version:"7.x",displayName:"Astro 7"}}static detect(t,r){let n=r?.cloud?.framework;if(n&&n!=="astro")return{detected:!1};let o=t.dependencies?.astro||t.devDependencies?.astro;if(!o)return{detected:!1};let i=nr(o);return i!==null&&i>=7?{detected:!0,reason:`Found astro@${o} (Astro ${i}.x)`}:{detected:!1}}async validate(){let{log:t,packageJson:r}=this.ctx,n=this.getNodeVersionRequirement();n&&Dn(t,n,this.info.displayName);let o=r.dependencies?.astro||r.devDependencies?.astro;if(!o)throw new ke("Astro is not installed in this project.",{remediation:"Install Astro by running: npm install astro@^7.0.0",documentationUrl:"https://docs.astro.build/en/install/"});if(o==="latest")throw new ke('Astro version "latest" is not supported by Webflow Cloud.',{remediation:"Please specify a version, e.g.: npm install astro@^7.0.0"});let i=nr(o);if(i!==null&&i<7)throw new ke(`Astro ${i}.x detected but Astro7Builder was selected. This is likely a configuration error.`,{remediation:"Use Astro6Builder for Astro 6.x, or upgrade: npm install astro@^7.0.0"});t.info(`Validated Astro 7 project: astro@${o}`)}getCloudflareAdapter(){return{name:"@astrojs/cloudflare",version:"^14.1.0",peerDependencies:["@cloudflare/vite-plugin"]}}getRequiredIntegrations(){return[{name:"@astrojs/react",version:"^6.0.0",reason:"Required for Webflow React components"}]}async installDependencies(){let{log:t,cwd:r}=this.ctx,n=this.getCloudflareAdapter();if(this.hasDependency(n.name)||(t.warn(`Installing ${n.name}@${n.version} (required for Cloudflare deployment)...`),await Ye({log:t,cwd:r,args:["install","--save",`${n.name}@${n.version}`]})),n.peerDependencies)for(let o of n.peerDependencies)this.hasDependency(o)||(t.warn(`Installing ${o} (peer dependency of ${n.name})...`),await Ye({log:t,cwd:r,args:["install","--save",o]}));for(let o of this.getRequiredIntegrations())this.hasDependency(o.name)||(t.warn(`Installing ${o.name}@${o.version} (${o.reason})...`),await Ye({log:t,cwd:r,args:["install","--save",`${o.name}@${o.version}`]}))}getWebflowLoader(){return{templatePath:Dt.join(_f,"webflow-loader.ts"),destinationName:"webflow-loader.ts",configPath:"./webflow-loader.ts"}}getUserConfigPatterns(){return["astro.config.mjs","astro.config.cjs","astro.config.js","astro.config.ts"]}getWranglerTemplatePath(){return Dt.join(_f,"wrangler.json")}getAdditionalConfigFiles(){return[this.getWebflowLoader().templatePath,Dt.join(Lb,"astro.config.webflow.ts")]}async prepareConfig(){let{log:t,cwd:r,userEnv:n}=this.ctx;br(t,r,"astro.config",["mjs","cjs","js","ts"])===null&&(t.info("no user astro.config.{mjs,cjs,js,ts} found \u2014 writing empty clouduser.astro.config.mjs stub"),ta.writeFileSync(Dt.join(r,"clouduser.astro.config.mjs"),`export default {};
130
+ `));let i=Dt.join(Lb,"astro.config.webflow.ts");ht(i)&&(t.info("Copying astro.config.webflow.ts..."),ta.copyFileSync(i,Dt.join(r,"astro.config.webflow.ts")));let s=Dt.join(_f,"astro.config.mjs.template"),a=Dt.join(r,"astro.config.mjs");t.info("Generating astro.config.mjs from template (Astro 7)..."),await kr(t,s,a,{...process.env,...n});let l=this.getWebflowLoader();ht(l.templatePath)&&(t.info(`Copying ${l.destinationName}...`),ta.copyFileSync(l.templatePath,Dt.join(r,l.destinationName)))}getBuildCommand(){return"astro build"}getNodeVersionRequirement(){return{minimum:"22.12.0",severity:"error"}}getFrameworkVersion(){return this.resolveFrameworkVersion("astro")}static getOutputDeployMetadata(){return{staticAssetsPath:"dist/client",workerEntryPath:"dist/server/entry.mjs",wranglerMainOverride:"@astrojs/cloudflare/entrypoints/server",deploymentType:"ssr",usesAssetsBinding:!0,skipNoBundle:!0,assetsSourceSkipMountPath:!0,dryRunEntryPath:"./entry.mjs"}}};var Ne=D(require("path")),Gt=D(require("fs"));var ki=_t(Ne.join(__dirname,"templates","nextjs"),Ne.join(__dirname,"templates")),bi=class extends gt{static frameworkName="nextjs";get info(){return{name:"nextjs",version:"*",displayName:"Next.js"}}static detect(t,r){let n=r?.cloud?.framework;return n==="nextjs"?{detected:!0,reason:"Specified as nextjs in webflow.json"}:n&&n!=="nextjs"?{detected:!1}:t.dependencies?.next!==void 0||t.devDependencies?.next!==void 0?{detected:!0,reason:'Found "next" in package.json'}:{detected:!1}}async validate(){let{log:t,packageJson:r}=this.ctx,n=r.dependencies?.next||r.devDependencies?.next;if(!n)throw new ke("Next.js is not installed in this project.",{remediation:"Install Next.js by running: npm install next",documentationUrl:"https://nextjs.org/docs/getting-started/installation"});t.info(`Validated Next.js project: next@${n}`)}getCloudflareAdapter(){return{name:"@opennextjs/cloudflare",version:"*"}}getRequiredIntegrations(){return[]}async installDependencies(){let{log:t,cwd:r}=this.ctx,n=this.getCloudflareAdapter();this.hasDependency(n.name)||(t.warn("nextjs integration requires @opennextjs/cloudflare and this project doesn't have it. installing now..."),await Ye({log:t,cwd:r,args:["install","--save",n.name]}))}getWebflowLoader(){return{templatePath:Ne.join(ki,"webflow-loader.ts"),destinationName:"webflow-loader.ts",configPath:"./webflow-loader.ts"}}getUserConfigPatterns(){return["next.config.mjs","next.config.cjs","next.config.js","next.config.ts"]}getWranglerTemplatePath(){return Ne.join(ki,"wrangler.json")}getAdditionalConfigFiles(){return[this.getWebflowLoader().templatePath,Ne.join(ki,"open-next.config.ts")]}findOpenNextConfig(){let t="open-next.config.ts";if(Gt.existsSync(Ne.join(this.cwd,t)))return t}ensureOpenNextConfig(t){let{log:r,cwd:n}=this.ctx,o=this.findOpenNextConfig();if(o){r.info(`${o} found, skipping creation (opennextjs-cloudflare will validate)`);return}if(r.info("open-next.config not found, creating open-next.config.ts with default Webflow Cloud configuration..."),!Gt.existsSync(t))throw new io(`open-next.config.ts template not found at ${t}. This is a Webflow Cloud build system error.`,{configFile:t});let i=Ne.join(n,"open-next.config.ts");Gt.copyFileSync(t,i),r.info("open-next.config.ts created successfully")}async prepareConfig(){let{log:t,cwd:r,userEnv:n}=this.ctx,o=br(t,r,"next.config",["mjs","cjs","js","ts"]);o===null?(t.info("no user next.config.{mjs,cjs,js,ts} found \u2014 writing empty clouduser.next.config.ts stub"),Gt.writeFileSync(Ne.join(r,"clouduser.next.config.ts"),`export default {};
131
+ `)):Ne.extname(o)!==".ts"&&(t.info(`writing clouduser.next.config.d.ts shim for ${Ne.basename(o)}`),Gt.writeFileSync(Ne.join(r,"clouduser.next.config.d.ts"),`import type { UserNextConfig } from './next.config.webflow';
127
132
  declare const config: UserNextConfig;
128
133
  export default config;
129
- `));let i=De.join(Un,"next.config.webflow.ts");He(i)&&(t.info("Copying next.config.webflow.ts..."),ft.copyFileSync(i,De.join(r,"next.config.webflow.ts")));let s=De.join(Un,"next.config.ts.template"),a=De.join(r,"next.config.ts");t.info("Generating next.config.ts from template..."),await Tt(t,s,a,{...process.env,...n});let c=this.getWebflowLoader();He(c.templatePath)&&(t.info(`Copying ${c.destinationName}...`),ft.copyFileSync(c.templatePath,De.join(r,c.destinationName)));let u=De.join(Un,"open-next.config.ts");this.ensureOpenNextConfig(u)}getBuildCommand(){return"opennextjs-cloudflare build"}getNodeVersionRequirement(){return{minimum:"18.0.0",severity:"error"}}getFrameworkVersion(){return this.resolveFrameworkVersion("next")}static getOutputDeployMetadata(){return{staticAssetsPath:".open-next/assets",workerEntryPath:".open-next/worker.js",deploymentType:"ssr",dryRunEntryPath:"./worker.js"}}static detectFromBuiltOutput(t){return ft.statSync(De.join(t,"./worker.js"),{throwIfNoEntry:!1})?.isFile()??!1}};var et=h(require("path")),mt=h(require("fs"));var Ws=Qe(et.join(__dirname,"templates","vite"),et.join(__dirname,"templates")),Hn=class extends Ve{static frameworkName="vite";get info(){return{name:"vite",version:"6.x",displayName:"Vite"}}static detect(t,r){let n=r?.cloud?.framework;return n==="vite"?{detected:!0,reason:"Specified as vite in webflow.json"}:n&&n!=="vite"?{detected:!1}:t.dependencies?.vite!==void 0||t.devDependencies?.vite!==void 0?{detected:!0,reason:'Found "vite" in package.json'}:{detected:!1}}async validate(){let{log:t,packageJson:r}=this.ctx,n=r.dependencies?.vite||r.devDependencies?.vite;if(!n)throw new le("Vite is not installed in this project.",{remediation:"Install Vite by running: npm install vite",documentationUrl:"https://vitejs.dev/guide/"});t.info(`Validated Vite project: vite@${n}`)}getCloudflareAdapter(){return{name:"@cloudflare/vite-plugin",version:"*"}}getRequiredIntegrations(){return[{name:"@cloudflare/workers-types",version:"*",dev:!0}]}async installDependencies(){let{log:t,cwd:r,packageJson:n}=this.ctx,o=n.devDependencies?.vite||n.dependencies?.vite||"",i=vt(o);i!==null&&i<6&&(t.warn("Upgrading vite to ^6.1.0 (required by @cloudflare/vite-plugin)..."),await Ie({log:t,cwd:r,args:["install","--save-dev","vite@^6.1.0"]}));let s=this.getCloudflareAdapter();this.hasDependency(s.name)||(t.warn("Vite integration requires @cloudflare/vite-plugin, installing now..."),await Ie({log:t,cwd:r,args:["install","--save",s.name]}));let a=this.getRequiredIntegrations();for(let c of a)if(!this.hasDependency(c.name)){t.info(`Installing ${c.name}...`);let u=c.dev?["install","--save-dev",c.name]:["install","--save",c.name];await Ie({log:t,cwd:r,args:u})}}getWebflowLoader(){return null}getUserConfigPatterns(){return["vite.config.mjs","vite.config.cjs","vite.config.js","vite.config.ts"]}getWranglerTemplatePath(){return et.join(Ws,"wrangler.json")}getAdditionalConfigFiles(){return[et.join(Ws,"vite.config.webflow.ts")]}hasCustomWorkerEntry(){let{log:t,cwd:r}=this.ctx;for(let n of["wrangler.json","wrangler.jsonc"]){let o=et.join(r,n);if(mt.existsSync(o)){try{let i=mt.readFileSync(o,"utf8"),s=Qr(i);if(s?.main&&s.main!=="./src/worker.ts")return t.info(`user-provided ${n} has custom main entrypoint "${s.main}", will preserve user's worker`),!0}catch(i){t.warn(`failed to parse ${n}: ${i}`)}break}}return!1}ensureWorkerEntry(){let{log:t,cwd:r}=this.ctx,n=et.join(r,"src","worker.ts");if(mt.existsSync(n)){t.info("src/worker.ts already exists, skipping creation");return}t.warn("src/worker.ts does not exist, creating a minimal worker..."),mt.mkdirSync(et.join(r,"src"),{recursive:!0}),mt.writeFileSync(n,`/// <reference types="@cloudflare/workers-types" />
134
+ `));let i=Ne.join(ki,"next.config.webflow.ts");ht(i)&&(t.info("Copying next.config.webflow.ts..."),Gt.copyFileSync(i,Ne.join(r,"next.config.webflow.ts")));let s=Ne.join(ki,"next.config.ts.template"),a=Ne.join(r,"next.config.ts");t.info("Generating next.config.ts from template..."),await kr(t,s,a,{...process.env,...n});let l=this.getWebflowLoader();ht(l.templatePath)&&(t.info(`Copying ${l.destinationName}...`),Gt.copyFileSync(l.templatePath,Ne.join(r,l.destinationName)));let c=Ne.join(ki,"open-next.config.ts");this.ensureOpenNextConfig(c)}getBuildCommand(){return"opennextjs-cloudflare build"}getNodeVersionRequirement(){return{minimum:"18.0.0",severity:"error"}}getFrameworkVersion(){return this.resolveFrameworkVersion("next")}static getOutputDeployMetadata(){return{staticAssetsPath:".open-next/assets",workerEntryPath:".open-next/worker.js",deploymentType:"ssr",dryRunEntryPath:"./worker.js"}}static detectFromBuiltOutput(t){return Gt.statSync(Ne.join(t,"./worker.js"),{throwIfNoEntry:!1})?.isFile()??!1}};var Ft=D(require("path")),Kt=D(require("fs"));var Fc=_t(Ft.join(__dirname,"templates","vite"),Ft.join(__dirname,"templates")),Ei=class extends gt{static frameworkName="vite";get info(){return{name:"vite",version:"6.x",displayName:"Vite"}}static detect(t,r){let n=r?.cloud?.framework;return n==="vite"?{detected:!0,reason:"Specified as vite in webflow.json"}:n&&n!=="vite"?{detected:!1}:t.dependencies?.vite!==void 0||t.devDependencies?.vite!==void 0?{detected:!0,reason:'Found "vite" in package.json'}:{detected:!1}}async validate(){let{log:t,packageJson:r}=this.ctx,n=r.dependencies?.vite||r.devDependencies?.vite;if(!n)throw new ke("Vite is not installed in this project.",{remediation:"Install Vite by running: npm install vite",documentationUrl:"https://vitejs.dev/guide/"});t.info(`Validated Vite project: vite@${n}`)}getCloudflareAdapter(){return{name:"@cloudflare/vite-plugin",version:"*"}}getRequiredIntegrations(){return[{name:"@cloudflare/workers-types",version:"*",dev:!0}]}async installDependencies(){let{log:t,cwd:r,packageJson:n}=this.ctx,o=n.devDependencies?.vite||n.dependencies?.vite||"",i=nr(o);i!==null&&i<6&&(t.warn("Upgrading vite to ^6.1.0 (required by @cloudflare/vite-plugin)..."),await Ye({log:t,cwd:r,args:["install","--save-dev","vite@^6.1.0"]}));let s=this.getCloudflareAdapter();this.hasDependency(s.name)||(t.warn("Vite integration requires @cloudflare/vite-plugin, installing now..."),await Ye({log:t,cwd:r,args:["install","--save",s.name]}));let a=this.getRequiredIntegrations();for(let l of a)if(!this.hasDependency(l.name)){t.info(`Installing ${l.name}...`);let c=l.dev?["install","--save-dev",l.name]:["install","--save",l.name];await Ye({log:t,cwd:r,args:c})}}getWebflowLoader(){return null}getUserConfigPatterns(){return["vite.config.mjs","vite.config.cjs","vite.config.js","vite.config.ts"]}getWranglerTemplatePath(){return Ft.join(Fc,"wrangler.json")}getAdditionalConfigFiles(){return[Ft.join(Fc,"vite.config.webflow.ts")]}hasCustomWorkerEntry(){let{log:t,cwd:r}=this.ctx;for(let n of["wrangler.json","wrangler.jsonc"]){let o=Ft.join(r,n);if(Kt.existsSync(o)){try{let i=Kt.readFileSync(o,"utf8"),s=oo(i);if(s?.main&&s.main!=="./src/worker.ts")return t.info(`user-provided ${n} has custom main entrypoint "${s.main}", will preserve user's worker`),!0}catch(i){t.warn(`failed to parse ${n}: ${i}`)}break}}return!1}ensureWorkerEntry(){let{log:t,cwd:r}=this.ctx,n=Ft.join(r,"src","worker.ts");if(Kt.existsSync(n)){t.info("src/worker.ts already exists, skipping creation");return}t.warn("src/worker.ts does not exist, creating a minimal worker..."),Kt.mkdirSync(Ft.join(r,"src"),{recursive:!0}),Kt.writeFileSync(n,`/// <reference types="@cloudflare/workers-types" />
130
135
 
131
136
  interface Env {
132
137
  ASSETS: Fetcher;
@@ -137,74 +142,143 @@ export default {
137
142
  return env.ASSETS.fetch(request);
138
143
  },
139
144
  } satisfies ExportedHandler<Env>;
140
- `)}async prepareConfig(){let{log:t,cwd:r,userEnv:n}=this.ctx,o=this.hasCustomWorkerEntry();It(t,r,"vite.config",["mjs","cjs","js","ts"])===null&&(t.info("no user vite.config.{mjs,cjs,js,ts} found \u2014 writing empty clouduser.vite.config.ts stub"),mt.writeFileSync(et.join(r,"clouduser.vite.config.ts"),`export default {};
141
- `));let s=et.join(Ws,"vite.config.webflow.ts");He(s)&&(t.info("Copying vite.config.webflow.ts..."),mt.copyFileSync(s,et.join(r,"vite.config.webflow.ts")));let a=et.join(Ws,"vite.config.ts.template"),c=et.join(r,"vite.config.ts");t.info("Generating vite.config.ts from template..."),await Tt(t,a,c,{...process.env,...n}),o||this.ensureWorkerEntry()}getBuildCommand(){return"vite build"}getNodeVersionRequirement(){return{minimum:"18.0.0",severity:"error"}}getFrameworkVersion(){return this.resolveFrameworkVersion("vite")}static getOutputDeployMetadata(){return{staticAssetsPath:"dist/client",workerEntryPath:"./src/worker.ts",deploymentType:"ssr-spa-combo",usesAssetsBinding:!0}}};var vh=[Wn,on,nn,Vn,Hn],Zo=["astro","nextjs","vite"];function Us(e,t){for(let r of vh){let n=r.detect(e,t);if(n.detected)return{Builder:r,result:n}}return null}function Kc(e,t){let r=Us(e.packageJson,t);if(!r)throw new hr("Could not detect framework from package.json or webflow.json",{remediation:`Create a webflow.json file with: { "cloud": { "framework": "astro" } } (or one of: ${Zo.join(", ")})`});return e.log.info(`Detected framework: ${r.result.reason}`),new r.Builder(e)}function qc(e,t,r,n){let o=Eh.join(t,"webflow.json"),i={cloud:{}};if(Jn.existsSync(o))try{let a=Jn.readFileSync(o,"utf8"),c=JSON.parse(a),u=Ms.safeParse(c);if(u.success)i=u.data;else{let p=u.error.issues.map(f=>`${f.path.join(".")}: ${f.message}`).join(", ");e.warn(`webflow.json has schema issues (will be corrected): ${p}`),i=c}i.cloud||(e.warn('webflow.json is missing "cloud" property, adding it'),i.cloud={})}catch(a){e.warn(`Failed to parse existing webflow.json, overwriting: ${a}`)}let s=i.cloud;if(s.framework=r,n){let a=n.getOutputDeployMetadata();s.contract_version="1",s.deployment_type=a.deploymentType,s.entrypoint_path=a.dryRunEntryPath??"./index.js",s.skip_no_bundle=a.skipNoBundle===!0;let c=n.getFrameworkVersion();c&&(s.framework_version=c),a.assetsSourceSkipMountPath&&(s.assets_source_skip_mount_path=!0),(0,Fh.validateForDeploy)(i)}e.info(`Creating webflow.json with framework: ${r}`),Jn.writeFileSync(o,JSON.stringify(i,null,2))}function xh(e,t){let r=Mn(e,t);if(r?.cloud?.framework)return r.cloud.framework;let n=Go(t);if(!n)throw new hr("Cannot detect framework: no package.json found",{remediation:'Run this command from your project root, or add a webflow.json with: { "cloud": { "framework": "<name>" } }'});e.info("webflow.json has no framework \u2014 detecting from package.json...");let o=Us(n,r);if(!o)throw new hr("Could not detect framework from package.json or webflow.json",{remediation:'Add a webflow.json with: { "cloud": { "framework": "<name>" } } (supported: astro, nextjs, vite)'});let i=o.Builder.frameworkName;return e.info(`Detected framework: ${o.result.reason}`),qc(e,t,i),i}v();var _h=B.object({name:B.string(),main:B.string().optional(),compatibility_date:B.string(),compatibility_flags:B.array(B.string()).optional(),placement:B.object({mode:B.string()}).passthrough().optional(),assets:B.object({directory:B.string(),binding:B.string().optional()}).passthrough().optional(),d1_databases:B.array(B.object({database_name:B.string(),database_id:B.string(),binding:B.string(),migrations_dir:B.string().optional()}).passthrough()).default([]),kv_namespaces:B.array(B.object({binding:B.string(),id:B.string()}).passthrough()).default([]),r2_buckets:B.array(B.object({binding:B.string(),bucket_name:B.string()}).passthrough()).default([])}).passthrough();function Ch(e){return e.issues.map(t=>` - ${t.path.length>0?t.path.join("."):"<root>"}: ${t.message}`).join(`
142
- `)}function kh(e,t="wrangler.json"){let r=Et.join(e,t);if(!Be.existsSync(r)){if(t.endsWith(".json"))return l.warn(`/${t} not found, checking for /${t}c`),kh(e,t+"c");l.warn(`/${t} not found`);return}let n=Be.readFileSync(r,"utf8");l.info(`reading /${t}...`);let o;try{o=Qr(n)}catch(s){l.error(`/${t} loaded but could not parse as JSONC: ${s}`);return}let i=_h.safeParse(o);if(!i.success){l.error(`/${t} loaded but schema validation failed:
143
- ${Ch(i.error)}`);return}return l.info(`successfully loaded /${t}`),i.data}async function Sh(e,t){let r=null,n=null,o=Et.join(t,"wrangler.json"),i=Et.join(t,"wrangler.jsonc");Be.existsSync(o)?(r=o,n=".json"):Be.existsSync(i)&&(r=i,n=".jsonc"),r&&n&&(l.info(`saving user-provided wrangler JSON as /clouduser.wrangler${n}...`),Be.copyFileSync(r,Et.join(t,`clouduser.wrangler${n}`)));let s=r?kh(t,Et.basename(r)):null,a=e.getWranglerTemplatePath(),c=Et.join(t,"wrangler.json");if(!Be.existsSync(a))throw new Error(`Wrangler template not found at ${a}. Make sure the template is properly copied during build.`);if(l.info(`copying wrangler template for ${e.info.name} to /wrangler.json`),Be.copyFileSync(a,c),!s)return;let u=JSON.parse(Be.readFileSync(c,"utf8"));if(s.kv_namespaces&&s.kv_namespaces.length>0&&(u.kv_namespaces=s.kv_namespaces,l.info(`merged ${s.kv_namespaces.length} KV namespace(s) into template`)),s.r2_buckets&&s.r2_buckets.length>0&&(u.r2_buckets=s.r2_buckets,l.info(`merged ${s.r2_buckets.length} R2 bucket(s) into template`)),s.d1_databases&&s.d1_databases.length>0&&(u.d1_databases=s.d1_databases,l.info(`merged ${s.d1_databases.length} D1 database(s) into template`)),Be.writeFileSync(c,JSON.stringify(u,null,2)),s.d1_databases.length!==0)for(let p in s.d1_databases){let f=s.d1_databases[p];if(!f.migrations_dir){l.info(`skipping migrations for database ${p} in wrangler.json; migrations dir is not defined`);continue}let m=f.migrations_dir,g=Et.join(t,m);if(!Be.existsSync(g)){l.info(`skipping migrations for database ${p} in wrangler.json; migrations dir (/${m}) does not exist`);continue}let w=Et.join(t,"clouduser","migrations",m),I=rn(l,g,w);I>0?l.info(`copied ${I} migrations to /clouduser/migrations/${m}`):l.info(`skipping migrations for database ${p} in wrangler.json; migrations dir (/${m}) is empty`)}}function gF(e){if(!/^[a-z0-9-]+$/.test(e))throw new Error(`Invalid object storage bucket name ${JSON.stringify(e)}: Only lowercase letters, numbers, and hyphens are allowed.`);if(e.startsWith("-")||e.endsWith("-"))throw new Error(`Invalid object storage bucket name "${e}": Cannot begin or end with a hyphen.`);if(e.length>27)throw new Error(`Invalid object storage bucket name "${e}": Must be 27 characters or fewer (currently ${e.length} characters).`)}function Ah(e){let t=null;for(let s of[".json",".jsonc"]){let a=Et.join(e,`clouduser.wrangler${s}`);if(Be.existsSync(a)){t=a;break}}if(!t)return;let r=Be.readFileSync(t,"utf8"),n;try{n=Qr(r)}catch(s){throw new Error(`Failed to parse wrangler config at ${t} as JSONC: ${s}`)}let o=_h.safeParse(n);if(!o.success)throw new Error(`Invalid wrangler config at ${t}:
144
- ${Ch(o.error)}`);let i=o.data;if(i.r2_buckets&&i.r2_buckets.length>0){l.info(`validating ${i.r2_buckets.length} object storage bucket name(s)...`);for(let s of i.r2_buckets)gF(s.bucket_name)}}v();x();$();ie();var hF="4.82.1",Vs=60;function qt(e,t){let r=Math.min(Vs,process.stdout.columns??Vs),n=`\u2500\u2500\u2500 ${e} ${t} `,o="\u2500".repeat(Math.max(0,r-n.length));l.info(`
145
- ${Q(`${n}${o}`)}`)}function Zc(e,t){let r=Math.min(Vs,process.stdout.columns??Vs),n=`\u2550\u2550\u2550 ${e} ${t} `,o="\u2550".repeat(Math.max(0,r-n.length));l.info(`
146
- ${Q(Ze(`${n}${o}`))}`)}async function Ih(e=process.cwd(),t,r,n){let o=Go(e);if(!o)throw new Error("No package.json file found");let i=Mn(l,e),s={...n?{COSMIC_MOUNT_PATH:n}:{},...t?{COSMIC_DEPLOY_URL:t}:{},...r&&!t?{COSMIC_DEPLOY_URL:yF(r)}:{}};return Kc({cwd:e,log:l,packageJson:o,userEnv:s},i)}async function Oh(e,t={}){let r=t.projectPath||process.cwd(),n=Date.now(),o=te.join(r,".tmp",`webflow-build-${n}`),i=t.outputDir||te.join(o,"output"),s=t.mountPath||"/app",a=Date.now(),c=Yc(r),u=t.telemetry,p=e.getBuildCommand(),f=e.getOutputDeployMetadata();await u?.sendUsage("cloud_build_start",{framework:e.info.name,buildCommand:p,deploymentType:f.deploymentType,mountPath:s,cloudflareBindings:c}),V.mkdirSync(o,{recursive:!0});try{qt("\u{1F527}","Configure framework"),l.info(`Framework: ${e.info.displayName}`),l.info(`Mount path: ${s}`),l.info(`Deployment type: ${f.deploymentType}`);let m=e.getNodeVersionRequirement();m&&wr(l,m,e.info.displayName),l.info("Validating framework requirements..."),await e.validate(),l.info("Installing framework dependencies..."),await e.installDependencies(),qt("\u2699\uFE0F ","Configure wrangler"),await Sh(e,r),l.info("Preparing framework configuration..."),await e.prepareConfig(),qc(l,r,e.info.name,e),qt("\u{1F4E6}","Install dependencies"),await wF(r,e.info.name,t.telemetry),Ah(r),qt("\u{1F3D7}\uFE0F ","Build app"),l.info(`running ${p}...`),await DF(r,p,t.telemetry),await e.postBuild(),qt("\u{1F9EA}","Wrangler dry-run"),await bF(r,i),qt("\u{1F4C1}","Copy assets"),await vF(r,i,e,s),qt("\u{1F381}","Create tarball");let g=await EF(i),w=Date.now()-a;return l.info(`${O} Build completed in ${(w/1e3).toFixed(1)}s`),await u?.sendUsage("cloud_build_success",{duration:w,framework:e.info.name,buildCommand:p,deploymentType:f.deploymentType,mountPath:s,cloudflareBindings:c}),g}catch(m){let g=Date.now()-a;throw await u?.sendError(m instanceof Error?m:new Error(String(m)),"cloud_build_failure",{duration:g,framework:e.info.name,buildCommand:p,deploymentType:f.deploymentType,mountPath:s,cloudflareBindings:c}),m}}function Yc(e){let t=te.join(e,"wrangler.json");if(!V.existsSync(t))return{hasKV:!1,hasD1:!1,hasR2:!1,hasVars:!1,kvCount:0,d1Count:0,r2Count:0,varCount:0};try{let r=JSON.parse(V.readFileSync(t,"utf8")),n=r.kv_namespaces||[],o=r.d1_databases||[],i=r.r2_buckets||[],s=r.vars||{};return{hasKV:n.length>0,hasD1:o.length>0,hasR2:i.length>0,hasVars:Object.keys(s).length>0,kvCount:n.length,d1Count:o.length,r2Count:i.length,varCount:Object.keys(s).length}}catch(r){return console.debug("Failed to parse wrangler.json for bindings detection:",r),{hasKV:!1,hasD1:!1,hasR2:!1,hasVars:!1,kvCount:0,d1Count:0,r2Count:0,varCount:0}}}function Rh(e){try{let t=te.dirname(e);t.includes(".tmp/webflow-build-")&&(qt("\u{1F9F9}","Clean up build artifacts"),V.rmSync(t,{recursive:!0,force:!0}))}catch(t){l.warn(`Warning: Failed to clean up build artifacts: ${t}`)}}function $h(e,t){try{qt("\u{1F9F9}","Revert framework configuration");let r=t.getUserConfigPatterns(),n=new Set;for(let s of r){let a=te.extname(s).slice(1),c=te.basename(s,`.${a}`);if(!n.has(c)){n.add(c);for(let u of["mjs","cjs","js","ts"]){let p=te.join(e,`clouduser.${c}.${u}`),f=te.join(e,`${c}.${u}`);if(V.existsSync(p)){l.info(`restoring /${c}.${u} from /clouduser.${c}.${u}...`),V.existsSync(f)&&V.unlinkSync(f),V.renameSync(p,f);break}}}}for(let s of[".jsonc",".json"]){let a=te.join(e,`clouduser.wrangler${s}`);if(V.existsSync(a)){l.info(`restoring user wrangler${s} from backup...`);let c=te.join(e,"wrangler.json");V.existsSync(c)&&V.unlinkSync(c);let u=te.join(e,`wrangler${s}`);V.renameSync(a,u);break}}let o=te.join(e,"clouduser");V.existsSync(o)&&(l.info("cleaning up clouduser directory..."),V.rmSync(o,{recursive:!0,force:!0}));for(let s of t.getAdditionalConfigFiles()){let a=te.join(e,te.basename(s));V.existsSync(a)&&(l.info(`cleaning up additional config file ${a}...`),V.unlinkSync(a))}let i=t.getWebflowLoader();if(i){let s=te.join(e,i.destinationName);V.existsSync(s)&&(l.info(`cleaning up ${i.destinationName}...`),V.unlinkSync(s))}}catch(r){l.warn(`Warning: Failed to cleanup framework configuration: ${r}`)}}async function wF(e,t,r){let n=Date.now(),o=["--no-update-notifier","--no-progress"],i=te.join(e,"package-lock.json");try{V.existsSync(i)?(l.info("Running npm ci --include=dev..."),(0,Yo.execSync)(`npm ci --include=dev ${o.join(" ")}`,{cwd:e,stdio:"inherit"})):(l.info("Warning: No package-lock.json found, installing dependencies with npm install --include=dev"),(0,Yo.execSync)(`npm install --include=dev ${o.join(" ")}`,{cwd:e,stdio:"inherit"}));let s=Date.now()-n;await r?.sendUsage("cloud_install_dependencies_success",{duration:s,framework:t,hasPackageLock:V.existsSync(i)})}catch(s){let a=Date.now()-n;throw await r?.sendError(s instanceof Error?s:new Error(String(s)),"cloud_install_dependencies_failure",{duration:a,framework:t,hasPackageLock:V.existsSync(i)}),s}}function yF(e){let t="production",r;switch(t){case"development":r="wf-app-dev";break;case"acceptance":r="wf-app-acceptance";break;default:r="wf-app-prod"}return`https://${e}.${r}.cosmic.webflow.services`}async function DF(e,t,r){let n=Date.now();try{(0,Yo.execSync)(`npm exec -- ${t}`,{cwd:e,stdio:"inherit"});let o=Date.now()-n;await r?.sendUsage("cloud_build_command_success",{duration:o,buildCommand:t})}catch(o){let i=Date.now()-n;throw await r?.sendError(o instanceof Error?o:new Error(String(o)),"cloud_build_command_failure",{duration:i,buildCommand:t}),new Error(`Build command failed: ${t}`)}}async function bF(e,t){V.mkdirSync(t,{recursive:!0});let r=te.join(e,"wrangler.json"),n=te.join(e,"wrangler.jsonc");if(!V.existsSync(r)&&!V.existsSync(n))throw new Error("Missing wrangler configuration: wrangler.json or wrangler.jsonc file is required");(0,Yo.execSync)(`npx wrangler@${hF} deploy --dry-run --outdir="${t}"`,{cwd:e,stdio:"inherit"})}async function vF(e,t,r,n){let o=r.getOutputDeployMetadata(),i=o.staticAssetsPath,s=o.staticAssetsExclude?.[0],a=o.assetsSourceSkipMountPath===!0,c=n.replace(/\/+$/,"").replace(/^\/+/,"");if(!a&&c&&(r.info.name==="nextjs"||r.info.name==="astro")){let g=te.join(e,i);if(V.existsSync(g)&&V.statSync(g).isDirectory()){let I=V.readdirSync(g,{withFileTypes:!0}).find(C=>!(!C.isDirectory()||s&&C.name===s||r.info.name==="astro"&&(C.name==="_routes.json"||C.name==="_worker.js")));I&&(i=`${i}/${I.name}`)}}let u=te.join(t,"assets",c||"");V.mkdirSync(u,{recursive:!0});let p=te.join(e,i);if(V.existsSync(p)&&V.statSync(p).isDirectory()){l.info(`copying assets from /${i} to output/assets...`);try{s?(l.info(`excluding ${s}`),rn(l,p,u,{exclude:s})):rn(l,p,u)}catch(g){l.error(g,{prefix:"Failed to copy assets:"})}}else l.info("No assets to copy or assets directory not found");let f=te.join(e,"webflow.json");V.existsSync(f)?(l.info("including webflow.json in output..."),V.copyFileSync(f,te.join(t,"webflow.json"))):l.warn("webflow.json not found at project root; deploy may fail framework detection");let m=null;for(let g of[".json",".jsonc"]){let w=te.join(e,`clouduser.wrangler${g}`);if(V.existsSync(w)){m=w;break}}if(m){l.info("including user wrangler config in output..."),V.copyFileSync(m,te.join(t,"clouduser.wrangler.json"));let g=te.join(e,"clouduser","migrations");if(V.existsSync(g)){l.info("copying migrations from clouduser/migrations to output/migrations...");let w=te.join(t,"migrations");rn(l,g,w)}}}async function EF(e){let t=`${e}.tar.gz`;try{return await Th.create({gzip:!0,file:t,cwd:te.dirname(e)},[te.basename(e)]),l.info(`Tarball created: ${t}`),t}catch(r){throw new d(r,{prefix:"Failed to create tarball:"})}}ve();se();v();var FF="DUPLICATE_ENVIRONMENT_MOUNT",xF="ENVIRONMENT_MOUNT_MISMATCH",_F="DUPLICATE_ENVIRONMENT_BRANCH",CF="INVALID_MOUNT_PATH_FORMAT",kF="INVALID_PROJECT_ID",Ph={[FF]:"An environment with this mount path already exists for this site. Please choose a different mount path.",[xF]:"This environment already exists with a different mount path. Please create a new environment or use the existing environment's mount path.",[_F]:"An environment with this branch already exists for this app.",[CF]:"Mount path format is invalid. It must start with a / and be followed by at least one character (e.g., /app).",[kF]:"Invalid app ID. This app may have been deleted or belongs to a different site. Please remove the 'app_id' field (or the legacy 'project_id' field) from your webflow.json and redeploy to create a new app."};function jh(e){let t={timestamp:new Date().toISOString()};if(e instanceof Error)t.code=e.name,t.msg=e.message,t.stack=e.stack;else if(typeof e=="object"&&e!==null){let i=e;t.code=typeof i.code=="string"?i.code:void 0,t.msg=typeof i.msg=="string"?i.msg:void 0,t.status=typeof i.status=="number"?i.status:void 0}let r=t.msg||"",n=t.status??t.code,o=typeof n=="number"?n:typeof n=="string"&&/^\d+$/.test(n)?Number(n):void 0;if(l.error(`Error Details: ${JSON.stringify({timestamp:t.timestamp,code:t.code,message:t.msg,status:t.status,stack:t.stack},null,2)}`),o===401)return"Your access token is expired or invalid. Run 'webflow auth login' to re-authenticate.";if(o===403)return"Your access token is missing required permissions. Run 'webflow auth login' to re-authenticate with the necessary scopes.";for(let i in Ph)if(r.includes(i))return Ph[i];return`An unknown error occurred. Error code: ${t.code||"N/A"}, Message: ${t.msg||"No message provided"}`}var zn=h(require("fs")),Qc=require("child_process"),Bh=h(require("semver"));v();x();$();x();be();v();x();function Gn(e,t){if(!e||e.trim()==="")throw new d(`Invalid ${t}: value is empty.`,{isUserError:!0})}var SF={siteId:{missingFlag:"siteId",flagHint:"--site",env:"WEBFLOW_SITE_ID",manifest:e=>e.siteId},appId:{missingFlag:"appId",flagHint:"--app-id",env:"WEBFLOW_APP_ID",manifest:e=>e.cloud?.app_id??e.cloud?.project_id},environmentId:{missingFlag:"environmentId",flagHint:"--environment-id",env:"WEBFLOW_APP_ENVIRONMENT_ID",manifest:e=>e.cloud?.environment_id},workspaceId:{missingFlag:"workspaceId",flagHint:"--workspace-id",env:"WEBFLOW_WORKSPACE_ID",manifest:e=>e.cloud?.workspace_id}};function Xc(e){return typeof e=="string"&&e.trim()!==""}async function tt(e,t={}){let r=SF[e],{flagValue:n,manifest:o,flagName:i,prompt:s}=t,a=t.isNoInput??H(),c=t.json??vp();if(Xc(n))return Gn(n,e),n;let u=process.env[r.env];if(Xc(u))return Gn(u,e),u;let p=r.manifest(o??{});if(Xc(p))return c||l.info(`Using ${e} from webflow.json`),Gn(p,e),p;if(!a&&s){let m=await s();return Gn(m,e),m}let f=i??r.flagHint;throw new d(`Missing required ${e}. Pass ${f}, set ${r.env}, or add it to webflow.json.`,{isUserError:!0,missingFlag:r.missingFlag})}x();var AF=/[\x00-\x1f?#%/\\]/;function Xo(e,t){if(!e||e.trim()==="")throw new d(`Invalid ${t}: value is empty.`,{isUserError:!0});if(AF.test(e)||e.includes(".."))throw new d(`Invalid ${t}: "${e}" contains disallowed characters.`,{isUserError:!0})}function _e(e,t){Xo(e,t)}function TF(e){if(!e)return"unknown";let t=Bh.default.coerce(e)?.major;return t!==void 0?String(t):"unknown"}var Nh=104857600;function Lh(e){if(e===0)return"0 B";let t=1024,r=["B","KB","MB","GB"],n=Math.floor(Math.log(e)/Math.log(t));return`${parseFloat((e/Math.pow(t,n)).toFixed(1))} ${r[n]}`}function IF(){try{let e=(0,Qc.execSync)("git rev-parse HEAD",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim();if(!/^[0-9a-f]{40}$/.test(e))throw new Error("Invalid commit hash format");try{return(0,Qc.execSync)("git status --porcelain --untracked-files=no",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim().length>0?`git@${e}+dirty`:`git@${e}`}catch{return`git@${e}`}}catch{return`noversion@${new Date().toISOString()}`}}async function eu(e,t,r){let n=await fetch(`${F}${t}`,{method:r.method,headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:r.body?JSON.stringify(r.body):void 0});if(!n.ok){let o=await n.text(),i;try{i=JSON.parse(o)}catch{i={msg:o}}let s=jh(i);throw new Error(s)}return n.json()}async function Mh(e,t,r,n){let{manifest:o}=J(),i=o.cloud||{},s=i.framework,a;try{a=await tt("appId",{flagValue:n?.appId,manifest:o})}catch(p){if(p instanceof d&&p.missingFlag==="appId")a=void 0;else throw p}if(!s)throw new d("No framework specified in webflow.json. Please ensure your webflow.json has a cloud.framework property");let c=TF(i.framework_version),u=await OF({siteId:e.siteId,apiToken:e.accessToken,framework:s,frameworkVersion:c,mountPath:r,environment:t,projectId:a,projectName:n?.projectName,description:n?.description,directory:n?.directory,version:IF()});return!a&&u.project_id&&(pe({cloud:{...i,app_id:u.project_id}}),l.info(`${O} App ID updated in webflow.json`)),u}async function OF(e){let{siteId:t,framework:r,frameworkVersion:n,mountPath:o,environment:i,version:s,projectId:a,projectName:c,description:u,directory:p}=e,f={framework:r,framework_version:n,mount_path:o,environment:i,version:s};a&&(f.project_id=a),c&&(f.project_name=c),u&&(f.description=u),p&&(f.app_path=p);let m=t?`/cosmic/${t}/cli-deploy-init`:"/cosmic/cli-deploy-init";return eu(e.apiToken,m,{method:"POST",body:f})}async function Wh(e,t){let{siteId:r,accessToken:n}=e,o=r?`/cosmic/${r}/cli-project-environments/${t}`:`/cosmic/cli-project-environments/${t}`;return eu(n,o,{method:"GET"})}async function Uh(e){let{siteId:t,accessToken:r}=e,n=t?`/cosmic/${t}/cli-projects`:"/cosmic/cli-projects";return eu(r,n,{method:"GET"})}async function Vh(e,t){if(!zn.existsSync(e))throw new Error(`Tarball not found at ${e}`);let r=zn.statSync(e);if(r.size>Nh)throw new Error(`Build output is too large (${Lh(r.size)}). Maximum allowed size is ${Lh(Nh)}.`);let n=zn.readFileSync(e),o=JSON.parse(t);if(!o.fields)throw new Error("Upload URL is missing fields property");let i=new FormData;Object.entries(o.fields).forEach(([c,u])=>{i.append(c,u)});let s=new Blob([n],{type:"application/gzip"});i.append("file",s,"output.tar.gz");let a=await fetch(o.url,{method:"POST",body:i});if(!a.ok){let c=await a.text();throw new d(c,{prefix:`${D} Upload failed with response:`})}}async function Hh(e,t){if(!e||e==="undefined")throw new d("Completion URL is undefined or invalid");let r=new URL(e);t&&r.searchParams.set("failed","true");let n=await fetch(r.toString(),{method:"GET"});if(!n.ok)throw new d(`Failed to trigger deployment: ${n.status} ${n.statusText}`)}var Jh=require("webflow-api");se();se();x();function tu(e){return new Jh.WebflowClient({accessToken:e,environment:{base:`${F}/v2`,dataApi:`${F}/v2`,contentDeliveryApi:`${Ai}/v2`}})}async function Qo(e,t){try{let n=await tu(e).sites.get(t);return{id:n.id||t,displayName:n.displayName||"Unknown Site",shortName:n.shortName||"unknown-site",customDomains:n.customDomains?.map(o=>({id:o.id||"",url:o.url||""}))||[]}}catch(r){throw new d(r,{prefix:"Error fetching site details:"})}}async function ru(e,t){try{return{customDomains:(await tu(e).sites.getCustomDomain(t)).customDomains?.map(o=>({id:o.id||"",url:o.url||""}))||[]}}catch(r){throw new d(r,{prefix:"Error fetching custom domains:"})}}async function nu(e){try{let t=await fetch(`https://${e}/manifest.json`);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);return await t.json()}catch(t){throw new d(t,{prefix:`Failed to fetch manifest from ${e}:`})}}function ou(e,t,r){return e.cosmic&&Array.isArray(e.cosmic)?e.cosmic.some(n=>{if(n.mountPath!==t)return!1;if(!r)return!0;if(n.workerUrl)try{return new URL(n.workerUrl).hostname.split(".")[0]===r}catch{return!1}return!1}):!1}async function Gh(e,t,r){try{let n=tu(e),o=await Qo(e,t),i=[];if(r?.domains&&r.domains.length>0)for(let s of r.domains){let a=o.customDomains?.find(c=>c.url===s);a?.id&&i.push(a.id)}await n.sites.publish(t,{customDomains:i,publishToWebflowSubdomain:r?.publishToWebflowSubdomain??!0})}catch(n){throw new d(n,{prefix:"Error publishing site:"})}}Se();v();async function zh(e,t,r){let{siteId:n,accessToken:o}=e;if(!n)throw new Error("Site ID is required for mount path validation. Apps without a connected site skip this step.");let i=l.spinner("Validating mount path configuration");try{let s=await Qo(o,n),a=await ru(o,n),c=[`${s.shortName}.webflow.io`,...a.customDomains?.map(w=>w.url)||[]],u=0;i.update(`Validating ${c.length} domain(s) for mount path: ${t}... (0/${c.length})`);let p=c.map(async w=>{try{let I=await nu(w),C=Array.isArray(I.cosmic)?I.cosmic.map(Z=>Z.mountPath).filter(Z=>typeof Z=="string"):[],q=ou(I,t,r);return{domain:w,mountPaths:C,isValid:q===!0}}catch(I){return{domain:w,mountPaths:[],isValid:!1,error:I instanceof Error?I.message:String(I)}}finally{u++,i.update(`Validating ${c.length} domain(s) for mount path: ${t}... (${u}/${c.length})`)}}),f=await Promise.all(p),m=f.some(w=>!w.isValid),g=f.every(w=>w.isValid);return i.succeed("Mount path validation completed"),{isValid:g,domains:f,needsPublishing:m}}catch(s){throw i.fail("Mount path validation failed"),s}}async function Kh(e,t,r){let{siteId:n,accessToken:o}=e;if(!n)return[];try{let i=await Qo(o,n),s=await ru(o,n),c=[`${i.shortName}.webflow.io`,...s.customDomains?.map(p=>p.url)||[]].map(async p=>{try{let f=await nu(p),m=ou(f,t,r);return{domain:p,isValid:m}}catch(f){return l.debug(`Could not verify mount path for ${p}: ${f}`),{domain:p,isValid:!1}}});return(await Promise.all(c)).filter(p=>p.isValid).map(p=>p.domain)}catch(i){return l.debug(`Error getting valid domains: ${i}`),[]}}function qh(e,t){return e.map(r=>`${r.startsWith("localhost")||r.startsWith("127.0.0.1")?"http":"https"}://${r}${t}`)}async function Zh(e){let t=e.map(n=>({name:n,value:n,checked:!0})),r=await Oi({message:"Select which domains you want to publish to update the mount path configuration:",choices:t,validate:n=>n.length===0?"Please select at least one domain to publish to.":!0});return r??[]}async function Yh(){return await Ne({message:"The mount path doesn't match on some domains. Would you like to publish the site to update the configuration?",default:!0})}async function iu(e,t){let{siteId:r,accessToken:n}=e;if(!r)throw new Error("Site ID is required to publish. Apps without a connected site do not use this.");let o=l.spinner(`Publishing site to ${t.length} domain(s)`);try{let s=`${(await Qo(n,r)).shortName}.webflow.io`,a=t.includes(s),c=t.filter(u=>u!==s);await Gh(n,r,{domains:c,publishToWebflowSubdomain:a}),o.succeed(`Site published successfully to selected domains: ${t.join(", ")}`)}catch{throw o.fail("Failed to publish site"),new Error("Failed to publish site")}}v();ie();var sn=h(require("path"));ve();se();be();var Xh="apps";function su(e){Xh=e}function Kn(){return Xh}var zs=h(require("fs"));x();se();Se();x();v();async function Hs(e){let t=await fetch(`${F}/v2/workspaces`,{method:"GET",headers:{Authorization:`Bearer ${e}`}});if(!t.ok){let n=await t.text(),o={};try{o=JSON.parse(n)}catch{}throw t.status===403&&o.code==="missing_scopes"?new d(`Missing required scopes for workspace access.
145
+ `)}async prepareConfig(){let{log:t,cwd:r,userEnv:n}=this.ctx,o=this.hasCustomWorkerEntry();br(t,r,"vite.config",["mjs","cjs","js","ts"])===null&&(t.info("no user vite.config.{mjs,cjs,js,ts} found \u2014 writing empty clouduser.vite.config.ts stub"),Kt.writeFileSync(Ft.join(r,"clouduser.vite.config.ts"),`export default {};
146
+ `));let s=Ft.join(Fc,"vite.config.webflow.ts");ht(s)&&(t.info("Copying vite.config.webflow.ts..."),Kt.copyFileSync(s,Ft.join(r,"vite.config.webflow.ts")));let a=Ft.join(Fc,"vite.config.ts.template"),l=Ft.join(r,"vite.config.ts");t.info("Generating vite.config.ts from template..."),await kr(t,a,l,{...process.env,...n}),o||this.ensureWorkerEntry()}getBuildCommand(){return"vite build"}getNodeVersionRequirement(){return{minimum:"18.0.0",severity:"error"}}getFrameworkVersion(){return this.resolveFrameworkVersion("vite")}static getOutputDeployMetadata(){return{staticAssetsPath:"dist/client",workerEntryPath:"./src/worker.ts",deploymentType:"ssr-spa-combo",usesAssetsBinding:!0}}};var Nb=[Di,co,lo,bi,Ei],ra=["astro","nextjs","vite"];function Ac(e,t){for(let r of Nb){let n=r.detect(e,t);if(n.detected)return{Builder:r,result:n}}return null}function Ff(e,t){let r=Ac(e.packageJson,t);if(!r)throw new wn("Could not detect framework from package.json or webflow.json",{remediation:`Create a webflow.json file with: { "cloud": { "framework": "astro" } } (or one of: ${ra.join(", ")})`});return e.log.info(`Detected framework: ${r.result.reason}`),new r.Builder(e)}function Af(e,t,r,n){let o=jb.join(t,"webflow.json"),i={cloud:{}};if(vi.existsSync(o))try{let a=vi.readFileSync(o,"utf8"),l=JSON.parse(a),c=_c.safeParse(l);if(c.success)i=c.data;else{let d=c.error.issues.map(p=>`${p.path.join(".")}: ${p.message}`).join(", ");e.warn(`webflow.json has schema issues (will be corrected): ${d}`),i=l}i.cloud||(e.warn('webflow.json is missing "cloud" property, adding it'),i.cloud={})}catch(a){e.warn(`Failed to parse existing webflow.json, overwriting: ${a}`)}let s=i.cloud;if(s.framework=r,n){let a=n.getOutputDeployMetadata();s.contract_version="1",s.deployment_type=a.deploymentType,s.entrypoint_path=a.dryRunEntryPath??"./index.js",s.skip_no_bundle=a.skipNoBundle===!0;let l=n.getFrameworkVersion();l&&(s.framework_version=l),a.assetsSourceSkipMountPath&&(s.assets_source_skip_mount_path=!0),(0,Mb.validateForDeploy)(i)}e.info(`Creating webflow.json with framework: ${r}`),vi.writeFileSync(o,JSON.stringify(i,null,2))}function Bb(e,t){let r=wi(e,t);if(r?.cloud?.framework)return r.cloud.framework;let n=Zs(t);if(!n)throw new wn("Cannot detect framework: no package.json found",{remediation:'Run this command from your project root, or add a webflow.json with: { "cloud": { "framework": "<name>" } }'});e.info("webflow.json has no framework \u2014 detecting from package.json...");let o=Ac(n,r);if(!o)throw new wn("Could not detect framework from package.json or webflow.json",{remediation:'Add a webflow.json with: { "cloud": { "framework": "<name>" } } (supported: astro, nextjs, vite)'});let i=o.Builder.frameworkName;return e.info(`Detected framework: ${o.result.reason}`),Af(e,t,i),i}x();var Ub=$.object({name:$.string(),main:$.string().optional(),compatibility_date:$.string(),compatibility_flags:$.array($.string()).optional(),placement:$.object({mode:$.string()}).passthrough().optional(),assets:$.object({directory:$.string(),binding:$.string().optional()}).passthrough().optional(),d1_databases:$.array($.object({database_name:$.string(),database_id:$.string(),binding:$.string(),migrations_dir:$.string().optional()}).passthrough()).default([]),kv_namespaces:$.array($.object({binding:$.string(),id:$.string()}).passthrough()).default([]),r2_buckets:$.array($.object({binding:$.string(),bucket_name:$.string()}).passthrough()).default([])}).passthrough();function Wb(e){return e.issues.map(t=>` - ${t.path.length>0?t.path.join("."):"<root>"}: ${t.message}`).join(`
147
+ `)}function Hb(e,t="wrangler.json"){let r=or.join(e,t);if(!lt.existsSync(r)){if(t.endsWith(".json"))return u.warn(`/${t} not found, checking for /${t}c`),Hb(e,t+"c");u.warn(`/${t} not found`);return}let n=lt.readFileSync(r,"utf8");u.info(`reading /${t}...`);let o;try{o=oo(n)}catch(s){u.error(`/${t} loaded but could not parse as JSONC: ${s}`);return}let i=Ub.safeParse(o);if(!i.success){u.error(`/${t} loaded but schema validation failed:
148
+ ${Wb(i.error)}`);return}return u.info(`successfully loaded /${t}`),i.data}async function Vb(e,t){let r=null,n=null,o=or.join(t,"wrangler.json"),i=or.join(t,"wrangler.jsonc");lt.existsSync(o)?(r=o,n=".json"):lt.existsSync(i)&&(r=i,n=".jsonc"),r&&n&&(u.info(`saving user-provided wrangler JSON as /clouduser.wrangler${n}...`),lt.copyFileSync(r,or.join(t,`clouduser.wrangler${n}`)));let s=r?Hb(t,or.basename(r)):null,a=e.getWranglerTemplatePath(),l=or.join(t,"wrangler.json");if(!lt.existsSync(a))throw new Error(`Wrangler template not found at ${a}. Make sure the template is properly copied during build.`);if(u.info(`copying wrangler template for ${e.info.name} to /wrangler.json`),lt.copyFileSync(a,l),!s)return;let c=JSON.parse(lt.readFileSync(l,"utf8"));if(s.kv_namespaces&&s.kv_namespaces.length>0&&(c.kv_namespaces=s.kv_namespaces,u.info(`merged ${s.kv_namespaces.length} KV namespace(s) into template`)),s.r2_buckets&&s.r2_buckets.length>0&&(c.r2_buckets=s.r2_buckets,u.info(`merged ${s.r2_buckets.length} R2 bucket(s) into template`)),s.d1_databases&&s.d1_databases.length>0&&(c.d1_databases=s.d1_databases,u.info(`merged ${s.d1_databases.length} D1 database(s) into template`)),lt.writeFileSync(l,JSON.stringify(c,null,2)),s.d1_databases.length!==0)for(let d in s.d1_databases){let p=s.d1_databases[d];if(!p.migrations_dir){u.info(`skipping migrations for database ${d} in wrangler.json; migrations dir is not defined`);continue}let h=p.migrations_dir,g=or.join(t,h);if(!lt.existsSync(g)){u.info(`skipping migrations for database ${d} in wrangler.json; migrations dir (/${h}) does not exist`);continue}let m=or.join(t,"clouduser","migrations",h),w=ao(u,g,m);w>0?u.info(`copied ${w} migrations to /clouduser/migrations/${h}`):u.info(`skipping migrations for database ${d} in wrangler.json; migrations dir (/${h}) is empty`)}}function hT(e){if(!/^[a-z0-9-]+$/.test(e))throw new Error(`Invalid object storage bucket name ${JSON.stringify(e)}: Only lowercase letters, numbers, and hyphens are allowed.`);if(e.startsWith("-")||e.endsWith("-"))throw new Error(`Invalid object storage bucket name "${e}": Cannot begin or end with a hyphen.`);if(e.length>27)throw new Error(`Invalid object storage bucket name "${e}": Must be 27 characters or fewer (currently ${e.length} characters).`)}function Gb(e){let t=null;for(let s of[".json",".jsonc"]){let a=or.join(e,`clouduser.wrangler${s}`);if(lt.existsSync(a)){t=a;break}}if(!t)return;let r=lt.readFileSync(t,"utf8"),n;try{n=oo(r)}catch(s){throw new Error(`Failed to parse wrangler config at ${t} as JSONC: ${s}`)}let o=Ub.safeParse(n);if(!o.success)throw new Error(`Invalid wrangler config at ${t}:
149
+ ${Wb(o.error)}`);let i=o.data;if(i.r2_buckets&&i.r2_buckets.length>0){u.info(`validating ${i.r2_buckets.length} object storage bucket name(s)...`);for(let s of i.r2_buckets)hT(s.bucket_name)}}x();S();N();de();var yT="4.82.1",Tc=60;function Vr(e,t){let r=Math.min(Tc,process.stdout.columns??Tc),n=`\u2500\u2500\u2500 ${e} ${t} `,o="\u2500".repeat(Math.max(0,r-n.length));u.info(`
150
+ ${te(`${n}${o}`)}`)}function Tf(e,t){let r=Math.min(Tc,process.stdout.columns??Tc),n=`\u2550\u2550\u2550 ${e} ${t} `,o="\u2550".repeat(Math.max(0,r-n.length));u.info(`
151
+ ${te(vt(`${n}${o}`))}`)}async function zb(e=process.cwd(),t,r,n){let o=Zs(e);if(!o)throw new Error("No package.json file found");let i=wi(u,e),s={...n?{COSMIC_MOUNT_PATH:n}:{},...t?{COSMIC_DEPLOY_URL:t}:{},...r&&!t?{COSMIC_DEPLOY_URL:DT(r)}:{}};return Ff({cwd:e,log:u,packageJson:o,userEnv:s},i)}async function Jb(e,t={}){let r=t.projectPath||process.cwd(),n=Date.now(),o=ce.join(r,".tmp",`webflow-build-${n}`),i=t.outputDir||ce.join(o,"output"),s=t.mountPath||"/app",a=Date.now(),l=Rf(r),c=t.telemetry,d=e.getBuildCommand(),p=e.getOutputDeployMetadata();await c?.sendUsage("cloud_build_start",{framework:e.info.name,buildCommand:d,deploymentType:p.deploymentType,mountPath:s,cloudflareBindings:l}),X.mkdirSync(o,{recursive:!0});try{Vr("\u{1F527}","Configure framework"),u.info(`Framework: ${e.info.displayName}`),u.info(`Mount path: ${s}`),u.info(`Deployment type: ${p.deploymentType}`);let h=e.getNodeVersionRequirement();h&&Dn(u,h,e.info.displayName),u.info("Validating framework requirements..."),await e.validate(),u.info("Installing framework dependencies..."),await e.installDependencies(),Vr("\u2699\uFE0F ","Configure wrangler"),await Vb(e,r),u.info("Preparing framework configuration..."),await e.prepareConfig(),Af(u,r,e.info.name,e),Vr("\u{1F4E6}","Install dependencies"),await wT(r,e.info.name,t.telemetry),Gb(r),Vr("\u{1F3D7}\uFE0F ","Build app"),u.info(`running ${d}...`),await kT(r,d,t.telemetry),await e.postBuild(),Vr("\u{1F9EA}","Wrangler dry-run"),await bT(r,i),Vr("\u{1F4C1}","Copy assets"),await ET(r,i,e,s),Vr("\u{1F381}","Create tarball");let g=await vT(i),m=Date.now()-a;return u.info(`${L} Build completed in ${(m/1e3).toFixed(1)}s`),await c?.sendUsage("cloud_build_success",{duration:m,framework:e.info.name,buildCommand:d,deploymentType:p.deploymentType,mountPath:s,cloudflareBindings:l}),g}catch(h){let g=Date.now()-a;throw await c?.sendError(h instanceof Error?h:new Error(String(h)),"cloud_build_failure",{duration:g,framework:e.info.name,buildCommand:d,deploymentType:p.deploymentType,mountPath:s,cloudflareBindings:l}),h}}function Rf(e){let t=ce.join(e,"wrangler.json");if(!X.existsSync(t))return{hasKV:!1,hasD1:!1,hasR2:!1,hasVars:!1,kvCount:0,d1Count:0,r2Count:0,varCount:0};try{let r=JSON.parse(X.readFileSync(t,"utf8")),n=r.kv_namespaces||[],o=r.d1_databases||[],i=r.r2_buckets||[],s=r.vars||{};return{hasKV:n.length>0,hasD1:o.length>0,hasR2:i.length>0,hasVars:Object.keys(s).length>0,kvCount:n.length,d1Count:o.length,r2Count:i.length,varCount:Object.keys(s).length}}catch(r){return console.debug("Failed to parse wrangler.json for bindings detection:",r),{hasKV:!1,hasD1:!1,hasR2:!1,hasVars:!1,kvCount:0,d1Count:0,r2Count:0,varCount:0}}}function qb(e){try{let t=ce.dirname(e);t.includes(".tmp/webflow-build-")&&(Vr("\u{1F9F9}","Clean up build artifacts"),X.rmSync(t,{recursive:!0,force:!0}))}catch(t){u.warn(`Warning: Failed to clean up build artifacts: ${t}`)}}function Yb(e,t){try{Vr("\u{1F9F9}","Revert framework configuration");let r=t.getUserConfigPatterns(),n=new Set;for(let s of r){let a=ce.extname(s).slice(1),l=ce.basename(s,`.${a}`);if(!n.has(l)){n.add(l);for(let c of["mjs","cjs","js","ts"]){let d=ce.join(e,`clouduser.${l}.${c}`),p=ce.join(e,`${l}.${c}`);if(X.existsSync(d)){u.info(`restoring /${l}.${c} from /clouduser.${l}.${c}...`),X.existsSync(p)&&X.unlinkSync(p),X.renameSync(d,p);break}}}}for(let s of[".jsonc",".json"]){let a=ce.join(e,`clouduser.wrangler${s}`);if(X.existsSync(a)){u.info(`restoring user wrangler${s} from backup...`);let l=ce.join(e,"wrangler.json");X.existsSync(l)&&X.unlinkSync(l);let c=ce.join(e,`wrangler${s}`);X.renameSync(a,c);break}}let o=ce.join(e,"clouduser");X.existsSync(o)&&(u.info("cleaning up clouduser directory..."),X.rmSync(o,{recursive:!0,force:!0}));for(let s of t.getAdditionalConfigFiles()){let a=ce.join(e,ce.basename(s));X.existsSync(a)&&(u.info(`cleaning up additional config file ${a}...`),X.unlinkSync(a))}let i=t.getWebflowLoader();if(i){let s=ce.join(e,i.destinationName);X.existsSync(s)&&(u.info(`cleaning up ${i.destinationName}...`),X.unlinkSync(s))}}catch(r){u.warn(`Warning: Failed to cleanup framework configuration: ${r}`)}}async function wT(e,t,r){let n=Date.now(),o=["--no-update-notifier","--no-progress"],i=ce.join(e,"package-lock.json");try{X.existsSync(i)?(u.info("Running npm ci --include=dev..."),(0,na.execSync)(`npm ci --include=dev ${o.join(" ")}`,{cwd:e,stdio:"inherit"})):(u.info("Warning: No package-lock.json found, installing dependencies with npm install --include=dev"),(0,na.execSync)(`npm install --include=dev ${o.join(" ")}`,{cwd:e,stdio:"inherit"}));let s=Date.now()-n;await r?.sendUsage("cloud_install_dependencies_success",{duration:s,framework:t,hasPackageLock:X.existsSync(i)})}catch(s){let a=Date.now()-n;throw await r?.sendError(s instanceof Error?s:new Error(String(s)),"cloud_install_dependencies_failure",{duration:a,framework:t,hasPackageLock:X.existsSync(i)}),s}}function DT(e){let t="production",r;switch(t){case"development":r="wf-app-dev";break;case"acceptance":r="wf-app-acceptance";break;default:r="wf-app-prod"}return`https://${e}.${r}.cosmic.webflow.services`}async function kT(e,t,r){let n=Date.now();try{(0,na.execSync)(`npm exec -- ${t}`,{cwd:e,stdio:"inherit"});let o=Date.now()-n;await r?.sendUsage("cloud_build_command_success",{duration:o,buildCommand:t})}catch(o){let i=Date.now()-n;throw await r?.sendError(o instanceof Error?o:new Error(String(o)),"cloud_build_command_failure",{duration:i,buildCommand:t}),new Error(`Build command failed: ${t}`)}}async function bT(e,t){X.mkdirSync(t,{recursive:!0});let r=ce.join(e,"wrangler.json"),n=ce.join(e,"wrangler.jsonc");if(!X.existsSync(r)&&!X.existsSync(n))throw new Error("Missing wrangler configuration: wrangler.json or wrangler.jsonc file is required");(0,na.execSync)(`npx wrangler@${yT} deploy --dry-run --outdir="${t}"`,{cwd:e,stdio:"inherit"})}async function ET(e,t,r,n){let o=r.getOutputDeployMetadata(),i=o.staticAssetsPath,s=o.staticAssetsExclude?.[0],a=o.assetsSourceSkipMountPath===!0,l=n.replace(/\/+$/,"").replace(/^\/+/,"");if(!a&&l&&(r.info.name==="nextjs"||r.info.name==="astro")){let g=ce.join(e,i);if(X.existsSync(g)&&X.statSync(g).isDirectory()){let w=X.readdirSync(g,{withFileTypes:!0}).find(k=>!(!k.isDirectory()||s&&k.name===s||r.info.name==="astro"&&(k.name==="_routes.json"||k.name==="_worker.js")));w&&(i=`${i}/${w.name}`)}}let c=ce.join(t,"assets",l||"");X.mkdirSync(c,{recursive:!0});let d=ce.join(e,i);if(X.existsSync(d)&&X.statSync(d).isDirectory()){u.info(`copying assets from /${i} to output/assets...`);try{s?(u.info(`excluding ${s}`),ao(u,d,c,{exclude:s})):ao(u,d,c)}catch(g){u.error(g,{prefix:"Failed to copy assets:"})}}else u.info("No assets to copy or assets directory not found");let p=ce.join(e,"webflow.json");X.existsSync(p)?(u.info("including webflow.json in output..."),X.copyFileSync(p,ce.join(t,"webflow.json"))):u.warn("webflow.json not found at project root; deploy may fail framework detection");let h=null;for(let g of[".json",".jsonc"]){let m=ce.join(e,`clouduser.wrangler${g}`);if(X.existsSync(m)){h=m;break}}if(h){u.info("including user wrangler config in output..."),X.copyFileSync(h,ce.join(t,"clouduser.wrangler.json"));let g=ce.join(e,"clouduser","migrations");if(X.existsSync(g)){u.info("copying migrations from clouduser/migrations to output/migrations...");let m=ce.join(t,"migrations");ao(u,g,m)}}}async function vT(e){let t=`${e}.tar.gz`;try{return await Kb.create({gzip:!0,file:t,cwd:ce.dirname(e)},[ce.basename(e)]),u.info(`Tarball created: ${t}`),t}catch(r){throw new f(r,{prefix:"Failed to create tarball:"})}}Me();ye();x();var ST="DUPLICATE_ENVIRONMENT_MOUNT",xT="ENVIRONMENT_MOUNT_MISMATCH",CT="DUPLICATE_ENVIRONMENT_BRANCH",_T="INVALID_MOUNT_PATH_FORMAT",FT="INVALID_PROJECT_ID",AT="DUPLICATE_PROJECT_NAME",TT="MAX_PROJECTS_PER_SITE",Xb={[ST]:"An environment with this mount path already exists for this site. Please choose a different mount path.",[xT]:"This environment already exists with a different mount path. Please create a new environment or use the existing environment's mount path.",[CT]:"An environment with this branch already exists for this app.",[_T]:"Mount path format is invalid. It must start with a / and be followed by at least one character (e.g., /app).",[FT]:"Invalid app ID. This app may have been deleted or belongs to a different site. Please remove the 'app_id' field (or the legacy 'project_id' field) from your webflow.json and redeploy to create a new app.",[AT]:"An app with this name already exists on this site, usually because 'app_id' is missing from your webflow.json. To deploy to the existing app, provide --app-id, set WEBFLOW_APP_ID, or set cloud.app_id in webflow.json \u2014 you can find the ID in the Webflow Cloud dashboard.",[TT]:"This site has reached its limit of Cloud apps, so no new app can be created. Deploy to one of its existing apps, or delete an app you no longer need from the Webflow Cloud dashboard."};function Zb(e){let t={timestamp:new Date().toISOString()};if(e instanceof Error)t.code=e.name,t.msg=e.message,t.stack=e.stack;else if(typeof e=="object"&&e!==null){let i=e;t.code=typeof i.code=="string"?i.code:void 0,t.msg=typeof i.msg=="string"?i.msg:void 0,t.status=typeof i.status=="number"?i.status:void 0}let r=t.msg||"",n=t.status??t.code,o=typeof n=="number"?n:typeof n=="string"&&/^\d+$/.test(n)?Number(n):void 0;if(u.error(`Error Details: ${JSON.stringify({timestamp:t.timestamp,code:t.code,message:t.msg,status:t.status,stack:t.stack},null,2)}`),o===401)return"Your access token is expired or invalid. Run 'webflow auth login' to re-authenticate.";if(o===403)return"Your access token is missing required permissions. Run 'webflow auth login' to re-authenticate with the necessary scopes.";for(let i in Xb)if(r.includes(i))return Xb[i];return`An unknown error occurred. Error code: ${t.code||"N/A"}, Message: ${t.msg||"No message provided"}`}var xi=D(require("fs")),Of=require("child_process"),tE=D(require("semver"));x();S();N();S();pe();x();S();function Si(e,t){if(!e||e.trim()==="")throw new f(`Invalid ${t}: value is empty.`,{isUserError:!0})}var RT={siteId:{missingFlag:"siteId",flagHint:"--site",env:"WEBFLOW_SITE_ID",manifest:e=>e.siteId},appId:{missingFlag:"appId",flagHint:"--app-id",env:"WEBFLOW_APP_ID",manifest:e=>e.cloud?.app_id??e.cloud?.project_id},environmentId:{missingFlag:"environmentId",flagHint:"--environment-id",env:"WEBFLOW_APP_ENVIRONMENT_ID",manifest:e=>e.cloud?.environment_id},workspaceId:{missingFlag:"workspaceId",flagHint:"--workspace-id",env:"WEBFLOW_WORKSPACE_ID",manifest:e=>e.cloud?.workspace_id}};function If(e){return typeof e=="string"&&e.trim()!==""}async function uo(e,t={}){let r=RT[e],{flagValue:n,manifest:o,flagName:i,prompt:s}=t,a=t.isNoInput??W(),l=t.json??ze();if(If(n))return Si(n,e),n;let c=process.env[r.env];if(If(c))return Si(c,e),c;let d=r.manifest(o??{});if(If(d))return l||u.info(`Using ${e} from webflow.json`),Si(d,e),d;if(!a&&s){let h=await s();return Si(h,e),h}let p=i??r.flagHint;throw new f(`Missing required ${e}. Pass ${p}, set ${r.env}, or add it to webflow.json.`,{isUserError:!0,missingFlag:r.missingFlag})}async function kn(e,t={}){try{return await uo(e,t)}catch(r){if(r instanceof f&&r.missingFlag===e)return;throw r}}S();var IT=/[\x00-\x1f?#%/\\]/;function bn(e,t){if(!e||e.trim()==="")throw new f(`Invalid ${t}: value is empty.`,{isUserError:!0});if(IT.test(e)||e.includes(".."))throw new f(`Invalid ${t}: "${e}" contains disallowed characters.`,{isUserError:!0})}function Ce(e,t){bn(e,t)}function OT(e){if(!e)return"unknown";let t=tE.default.coerce(e)?.major;return t!==void 0?String(t):"unknown"}var Qb=104857600;function eE(e){if(e===0)return"0 B";let t=1024,r=["B","KB","MB","GB"],n=Math.floor(Math.log(e)/Math.log(t));return`${parseFloat((e/Math.pow(t,n)).toFixed(1))} ${r[n]}`}function PT(){try{let e=(0,Of.execSync)("git rev-parse HEAD",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim();if(!/^[0-9a-f]{40}$/.test(e))throw new Error("Invalid commit hash format");try{return(0,Of.execSync)("git status --porcelain --untracked-files=no",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim().length>0?`git@${e}+dirty`:`git@${e}`}catch{return`git@${e}`}}catch{return`noversion@${new Date().toISOString()}`}}async function Pf(e,t,r){let n=await fetch(`${I}${t}`,{method:r.method,headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:r.body?JSON.stringify(r.body):void 0});if(!n.ok){let o=await n.text(),i;try{i=JSON.parse(o)}catch{i={msg:o}}let s=Zb(i);throw new Error(s)}return n.json()}async function rE(e,t,r,n){let{manifest:o}=Z(),i=o.cloud||{},s=i.framework,a=await kn("appId",{flagValue:n?.appId,manifest:o});if(!s)throw new f("No framework specified in webflow.json. Please ensure your webflow.json has a cloud.framework property");let l=OT(i.framework_version),c=await $T({siteId:e.siteId,apiToken:e.accessToken,framework:s,frameworkVersion:l,mountPath:r,environment:t,projectId:a,projectName:n?.projectName,description:n?.description,directory:n?.directory,version:PT()});return!a&&c.project_id&&(xe({cloud:{...i,app_id:c.project_id}}),u.info(`${L} App ID updated in webflow.json`)),c}async function $T(e){let{siteId:t,framework:r,frameworkVersion:n,mountPath:o,environment:i,version:s,projectId:a,projectName:l,description:c,directory:d}=e,p={framework:r,framework_version:n,mount_path:o,environment:i,version:s};a&&(p.project_id=a),l&&(p.project_name=l),c&&(p.description=c),d&&(p.app_path=d);let h=t?`/cosmic/${t}/cli-deploy-init`:"/cosmic/cli-deploy-init";return Pf(e.apiToken,h,{method:"POST",body:p})}async function nE(e,t){let{siteId:r,accessToken:n}=e,o=r?`/cosmic/${r}/cli-project-environments/${t}`:`/cosmic/cli-project-environments/${t}`;return Pf(n,o,{method:"GET"})}async function oE(e){let{siteId:t,accessToken:r}=e,n=t?`/cosmic/${t}/cli-projects`:"/cosmic/cli-projects";return Pf(r,n,{method:"GET"})}async function iE(e,t){if(!xi.existsSync(e))throw new Error(`Tarball not found at ${e}`);let r=xi.statSync(e);if(r.size>Qb)throw new Error(`Build output is too large (${eE(r.size)}). Maximum allowed size is ${eE(Qb)}.`);let n=xi.readFileSync(e),o=JSON.parse(t);if(!o.fields)throw new Error("Upload URL is missing fields property");let i=new FormData;Object.entries(o.fields).forEach(([l,c])=>{i.append(l,c)});let s=new Blob([n],{type:"application/gzip"});i.append("file",s,"output.tar.gz");let a=await fetch(o.url,{method:"POST",body:i});if(!a.ok){let l=await a.text();throw new f(l,{prefix:`${b} Upload failed with response:`})}}async function sE(e,t){if(!e||e==="undefined")throw new f("Completion URL is undefined or invalid");let r=new URL(e);t&&r.searchParams.set("failed","true");let n=await fetch(r.toString(),{method:"GET"});if(!n.ok)throw new f(`Failed to trigger deployment: ${n.status} ${n.statusText}`)}var aE=require("webflow-api");ye();ye();S();function $f(e){return new aE.WebflowClient({accessToken:e,environment:{base:`${I}/v2`,dataApi:`${I}/v2`,contentDeliveryApi:`${ll}/v2`}})}async function oa(e,t){try{let n=await $f(e).sites.get(t);return{id:n.id||t,displayName:n.displayName||"Unknown Site",shortName:n.shortName||"unknown-site",customDomains:n.customDomains?.map(o=>({id:o.id||"",url:o.url||""}))||[]}}catch(r){throw new f(r,{prefix:"Error fetching site details:"})}}async function Lf(e,t){try{return{customDomains:(await $f(e).sites.getCustomDomain(t)).customDomains?.map(o=>({id:o.id||"",url:o.url||""}))||[]}}catch(r){throw new f(r,{prefix:"Error fetching custom domains:"})}}async function Nf(e){try{let t=await fetch(`https://${e}/manifest.json`);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);return await t.json()}catch(t){throw new f(t,{prefix:`Failed to fetch manifest from ${e}:`})}}function jf(e,t,r){return e.cosmic&&Array.isArray(e.cosmic)?e.cosmic.some(n=>{if(n.mountPath!==t)return!1;if(!r)return!0;if(n.workerUrl)try{return new URL(n.workerUrl).hostname.split(".")[0]===r}catch{return!1}return!1}):!1}async function lE(e,t,r){try{let n=$f(e),o=await oa(e,t),i=[];if(r?.domains&&r.domains.length>0)for(let s of r.domains){let a=o.customDomains?.find(l=>l.url===s);a?.id&&i.push(a.id)}await n.sites.publish(t,{customDomains:i,publishToWebflowSubdomain:r?.publishToWebflowSubdomain??!0})}catch(n){throw new f(n,{prefix:"Error publishing site:"})}}Ae();x();async function cE(e,t,r){let{siteId:n,accessToken:o}=e;if(!n)throw new Error("Site ID is required for mount path validation. Apps without a connected site skip this step.");let i=u.spinner("Validating mount path configuration");try{let s=await oa(o,n),a=await Lf(o,n),l=[`${s.shortName}.webflow.io`,...a.customDomains?.map(m=>m.url)||[]],c=0;i.update(`Validating ${l.length} domain(s) for mount path: ${t}... (0/${l.length})`);let d=l.map(async m=>{try{let w=await Nf(m),k=Array.isArray(w.cosmic)?w.cosmic.map(A=>A.mountPath).filter(A=>typeof A=="string"):[],F=jf(w,t,r);return{domain:m,mountPaths:k,isValid:F===!0}}catch(w){return{domain:m,mountPaths:[],isValid:!1,error:w instanceof Error?w.message:String(w)}}finally{c++,i.update(`Validating ${l.length} domain(s) for mount path: ${t}... (${c}/${l.length})`)}}),p=await Promise.all(d),h=p.some(m=>!m.isValid),g=p.every(m=>m.isValid);return i.succeed("Mount path validation completed"),{isValid:g,domains:p,needsPublishing:h}}catch(s){throw i.fail("Mount path validation failed"),s}}async function uE(e,t,r){let{siteId:n,accessToken:o}=e;if(!n)return[];try{let i=await oa(o,n),s=await Lf(o,n),l=[`${i.shortName}.webflow.io`,...s.customDomains?.map(d=>d.url)||[]].map(async d=>{try{let p=await Nf(d),h=jf(p,t,r);return{domain:d,isValid:h}}catch(p){return u.debug(`Could not verify mount path for ${d}: ${p}`),{domain:d,isValid:!1}}});return(await Promise.all(l)).filter(d=>d.isValid).map(d=>d.domain)}catch(i){return u.debug(`Error getting valid domains: ${i}`),[]}}function dE(e,t){return e.map(r=>`${r.startsWith("localhost")||r.startsWith("127.0.0.1")?"http":"https"}://${r}${t}`)}async function pE(e){let t=e.map(n=>({name:n,value:n,checked:!0})),r=await fr({message:"Select which domains you want to publish to update the mount path configuration:",choices:t,validate:n=>n.length===0?"Please select at least one domain to publish to.":!0});return r??[]}async function fE(){return await Pe({message:"The mount path doesn't match on some domains. Would you like to publish the site to update the configuration?",default:!0})}async function Mf(e,t){let{siteId:r,accessToken:n}=e;if(!r)throw new Error("Site ID is required to publish. Apps without a connected site do not use this.");let o=u.spinner(`Publishing site to ${t.length} domain(s)`);try{let s=`${(await oa(n,r)).shortName}.webflow.io`,a=t.includes(s),l=t.filter(c=>c!==s);await lE(n,r,{domains:l,publishToWebflowSubdomain:a}),o.succeed(`Site published successfully to selected domains: ${t.join(", ")}`)}catch{throw o.fail("Failed to publish site"),new Error("Failed to publish site")}}x();de();var po=D(require("path"));Me();ye();pe();var mE="apps";function Bf(e){mE=e}function Ci(){return mE}var Pc=D(require("fs"));S();ye();Ae();S();x();async function Rc(e){let t=await fetch(`${I}/v2/workspaces`,{method:"GET",headers:{Authorization:`Bearer ${e}`}});if(!t.ok){let n=await t.text(),o={};try{o=JSON.parse(n)}catch{}throw t.status===403&&o.code==="missing_scopes"?new f(`Missing required scopes for workspace access.
147
152
  ${o.message??""}
148
- Re-run 'webflow auth login' to grant the necessary permissions.`):new d(`Failed to fetch workspaces: ${t.status} ${t.statusText}`+(o.message?`
149
- ${o.message}`:""))}return(await t.json()).workspaces}async function Js(e){if(e.length===1)return e[0];let t=await Ce({message:"Select the workspace for this app:",choices:e.map(r=>({name:r.name,value:r}))});return t||(l.warn(`Auto fallback to first workspace: ${e[0].name}`),e[0])}rs();$();v();$();ie();async function au(e,t){l.warn(`${ge} ${ne("webflow cloud create")} is deprecated and will be removed in the next major release.
150
- Use ${P("webflow cloud init")} instead.
151
- `);let{framework:r}=t;if(!(await qn()).find(i=>i===r)){l.error(`Framework ${r} not found`);return}await Gs(e,"/app",r,void 0,ae.Existing,void 0)}v();async function lu(){let e=await qn();l.info("Available app templates:"),e.length>0?e.forEach(t=>l.info(`- ${t}`)):l.info("No templates found.")}U();x();be();Se();v();$();var Qh=h(require("path"));function yr(e){if(!e||e.trim()==="")return"/";let t=Qh.posix.normalize(e);return t.startsWith("/")||(t="/"+t),t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t=t.split("/").map((n,o)=>o===0?n:encodeURIComponent(n)).join("/"),t}function ei(e){return!(!e||e.trim()===""||!e.startsWith("/")||e.includes(".."))}ie();v();$();function ti(e,t){l.warn(`${ge} ${ne(e)} is deprecated; use ${P(t)} instead.`)}async function cu(e){if(e.appName!==void 0&&e.projectName!==void 0)throw new d("--app-name and --project-name are aliases of the same option. Pass exactly one (--app-name is preferred; --project-name is deprecated).");e.projectName!==void 0&&ti("--project-name","--app-name");let t=e.appName??e.projectName;if(e.workspaceId&&e.siteId)throw new d("--workspace-id and --site-id are mutually exclusive. Pass exactly one.");if(e.new&&e.siteId)throw new d("--new and --site-id are mutually exclusive. Use --site-id to connect to an existing site, or --new to create a standalone app.");let r=process.stdin.isTTY,n;r&&yt()&&(n=await E());let o=!1;if(n&&!e.new&&!e.siteId)try{(await xo(n)).length===0&&(l.info(`${Oe} No existing Webflow sites in your workspace \u2014 starting a new app.`),o=!0)}catch(g){l.debug(`Skipped sites lookup in cloud init preflight: ${g}`)}let i=await qn(),s={};if(r&&yt()){if(!e.new&&!o&&(s.initMode=await Ce({message:"Where do you want to deploy this app?",choices:[{name:"New domain",value:ae.New},{name:"Existing site",value:ae.Existing}],default:ae.New})),e?.framework||(s.scaffoldName=await Ce({message:"Which framework would you like to use?",choices:i.map(w=>({name:w,value:w})),default:"astro"})),!t){let w=await ke({message:"What would you like to name your app?",validate:I=>{let C=I.trim();return C===""?"App name cannot be empty":C.length<Ut||C.length>Vt?`App name must be between ${Ut} and ${Vt} characters`:!0}});if(w==null)throw new d("When --no-input mode is enabled please provide the --app-name option.");s.appName=w}let g=e.new||o||s.initMode===ae.New;if(!e.mount&&!g){let w=await ke({message:"What path do you want to use locally? (e.g., /app)",default:"/app"});s.mountPath=yr(w)}}let a=t||s.appName,c=e.framework||s.scaffoldName,u=e.new||o?ae.New:s.initMode??(e.siteId?ae.Existing:H()?ae.New:ae.Existing),p=u===ae.New?e.mount||s.mountPath||"/":e.mount||s.mountPath||"/app",f=e.siteId,m=yr(p);if(!a||typeof a!="string"||a.trim()==="")throw new d("--app-name cannot be empty");if(a.length<Ut||a.length>Vt)throw new d(`--app-name must be between ${Ut} and ${Vt} characters`);if(!c)throw new d("--framework is required");if(!i.includes(c)){let g=i.join(`
152
- - `);throw new d(`--framework "${c}" not found
153
+ Re-run 'webflow auth login' to grant the necessary permissions.`):new f(`Failed to fetch workspaces: ${t.status} ${t.statusText}`+(o.message?`
154
+ ${o.message}`:""))}return(await t.json()).workspaces}async function Ic(e){if(e.length===1)return e[0];let t=await Be({message:"Select the workspace for this app:",choices:e.map(r=>({name:r.name,value:r}))});return t||(u.warn(`Auto fallback to first workspace: ${e[0].name}`),e[0])}Ll();N();x();N();de();async function Uf(e,t){u.warn(`${he} ${ne("webflow cloud create")} is deprecated and will be removed in the next major release.
155
+ Use ${V("webflow cloud init")} instead.
156
+ `);let{framework:r}=t;if(!(await _i()).find(i=>i===r)){u.error(`Framework ${r} not found`);return}await Oc(e,"/app",r,void 0,we.Existing,void 0)}x();de();N();Qr();async function Wf(){let e=ct()?"webflow apps init":"webflow cloud init",t=ct()?`
157
+ To list your Cloud apps, use ${V("webflow apps list")}.`:"";u.warn(`${he} ${ne("webflow cloud list")} is deprecated and will be removed in the next major release.
158
+ It lists scaffold templates, not your apps.
159
+ Use ${V(`${e} --framework`)} / ${V("--help")} for available templates.${t}
160
+ `);let r=await _i();u.info("Available app templates:"),r.length>0?r.forEach(n=>u.info(`- ${n}`)):u.info("No templates found.")}J();S();pe();Ae();x();N();var gE=D(require("path"));function En(e){if(!e||e.trim()==="")return"/";let t=gE.posix.normalize(e);return t.startsWith("/")||(t="/"+t),t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t=t.split("/").map((n,o)=>o===0?n:encodeURIComponent(n)).join("/"),t}function ia(e){return!(!e||e.trim()===""||!e.startsWith("/")||e.includes(".."))}de();x();N();function sa(e,t){u.warn(`${he} ${ne(e)} is deprecated; use ${V(t)} instead.`)}async function Hf(e){if(e.appName!==void 0&&e.projectName!==void 0)throw new f("--app-name and --project-name are aliases of the same option. Pass exactly one (--app-name is preferred; --project-name is deprecated).");e.projectName!==void 0&&sa("--project-name","--app-name");let t=e.appName??e.projectName;if(e.workspaceId&&e.siteId)throw new f("--workspace-id and --site-id are mutually exclusive. Pass exactly one.");if(e.new&&e.siteId)throw new f("--new and --site-id are mutually exclusive. Use --site-id to connect to an existing site, or --new to create a standalone app.");let r=process.stdin.isTTY,n;r&&er()&&(n=await T());let o=!1;if(n&&!e.new&&!e.siteId)try{(await vs(n)).length===0&&(u.info(`${Fe} No existing Webflow sites in your workspace \u2014 starting a new app.`),o=!0)}catch(g){u.debug(`Skipped sites lookup in cloud init preflight: ${g}`)}let i=await _i(),s={};if(r&&er()){if(!e.new&&!o&&(s.initMode=await Be({message:"Where do you want to deploy this app?",choices:[{name:"New domain",value:we.New},{name:"Existing site",value:we.Existing}],default:we.New})),e?.framework||(s.scaffoldName=await Be({message:"Which framework would you like to use?",choices:i.map(m=>({name:m,value:m})),default:"astro"})),!t){let m=await Je({message:"What would you like to name your app?",validate:w=>{let k=w.trim();return k===""?"App name cannot be empty":k.length<Nr||k.length>jr?`App name must be between ${Nr} and ${jr} characters`:!0}});if(m==null)throw new f("When --no-input mode is enabled please provide the --app-name option.");s.appName=m}let g=e.new||o||s.initMode===we.New;if(!e.mount&&!g){let m=await Je({message:"What path do you want to use locally? (e.g., /app)",default:"/app"});s.mountPath=En(m)}}let a=t||s.appName,l=e.framework||s.scaffoldName,c=e.new||o?we.New:s.initMode??(e.siteId?we.Existing:W()?we.New:we.Existing),d=c===we.New?e.mount||s.mountPath||"/":e.mount||s.mountPath||"/app",p=e.siteId,h=En(d);if(!a||typeof a!="string"||a.trim()==="")throw new f("--app-name cannot be empty");if(a.length<Nr||a.length>jr)throw new f(`--app-name must be between ${Nr} and ${jr} characters`);if(!l)throw new f("--framework is required");if(!i.includes(l)){let g=i.join(`
161
+ - `);throw new f(`--framework "${l}" not found
153
162
 
154
163
  Available frameworks:
155
- - ${g}`)}if(typeof m!="string"||!ei(m))throw new d("Invalid mount path: "+m);if(u===ae.Existing&&!f&&(!r||H()))throw new d("--site-id is required when connecting to an existing site in non-interactive mode.");await Gs(a,m,c,f,u,e.workspaceId)}var iw=h(require("path"));U();x();be();Se();v();$();ve();W();var ew=require("crypto");se();x();async function tw(e){let{accessToken:t,workspaceId:r,displayName:n,description:o,appPath:i}=e,a={requestId:(0,ew.randomUUID)(),cloudApp:{displayName:n,description:o,appPath:i,source:{type:"CLI",cli:{sourceUrl:Mg}}}},c=`${F}/cosmic/workspaces/${r}/cloudApps`,u=await fetch(c,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json","Accept-Version":"1.0.0"},body:JSON.stringify(a)});if(!u.ok){let p=await u.text();throw RF(u.status,u.statusText,p)}return u.json()}function RF(e,t,r){let n={};try{n=JSON.parse(r)}catch{}return e===403?n.publicErrorCode==="missing_scopes"?new d(`Missing required scopes to create a Cloud app.
164
+ - ${g}`)}if(typeof h!="string"||!ia(h))throw new f("Invalid mount path: "+h);if(c===we.Existing&&!p&&(!r||W()))throw new f("--site-id is required when connecting to an existing site in non-interactive mode.");await Oc(a,h,l,p,c,e.workspaceId)}var bE=D(require("path"));J();S();pe();Ae();x();N();Me();z();var hE=require("crypto");ye();S();async function yE(e){let{accessToken:t,workspaceId:r,displayName:n,description:o,appPath:i}=e,a={requestId:(0,hE.randomUUID)(),cloudApp:{displayName:n,description:o,appPath:i,source:{type:"CLI",cli:{sourceUrl:rb}}}},l=`${I}/cosmic/workspaces/${r}/cloudApps`,c=await fetch(l,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json","Accept-Version":"1.0.0"},body:JSON.stringify(a)});if(!c.ok){let d=await c.text();throw LT(c.status,c.statusText,d)}return c.json()}function LT(e,t,r){let n={};try{n=JSON.parse(r)}catch{}return e===403?n.publicErrorCode==="missing_scopes"?new f(`Missing required scopes to create a Cloud app.
156
165
  ${n.msg??""}
157
- Re-run 'webflow auth login' to grant the necessary permissions.`):new d(n.msg??"You don't have permission to create apps in this workspace."):e===404?new d("Cloud app creation is not available. The workspace may not exist or the feature is not enabled for your account."):e===409?n.publicErrorCode==="workspace_unhosted_project_limit"?new d($F(n.planName,n.limit)):n.msg?.includes("No new sites can be created")?new d(`Failed to create app: your workspace has reached its app limit.
158
- Upgrade your plan or remove unused apps to create a new one.`):new d(n.msg??"A Cloud app creation request is already being processed. Please wait and try again."):new d(`Failed to create app: ${e} ${t}`+(n.msg?`
159
- ${n.msg}`:""))}function $F(e,t){let r="Upgrade your plan or remove unused apps to create a new one.",n=t===1?"Cloud app":"Cloud apps";return e&&typeof t=="number"&&t>0?`Your "${e}" workspace is limited to ${t} ${n}.
166
+ Re-run 'webflow auth login' to grant the necessary permissions.`):new f(n.msg??"You don't have permission to create apps in this workspace."):e===404?new f("Cloud app creation is not available. The workspace may not exist or the feature is not enabled for your account."):e===409?n.publicErrorCode==="workspace_unhosted_project_limit"?new f(NT(n.planName,n.limit)):n.msg?.includes("No new sites can be created")?new f(`Failed to create app: your workspace has reached its app limit.
167
+ Upgrade your plan or remove unused apps to create a new one.`):new f(n.msg??"A Cloud app creation request is already being processed. Please wait and try again."):new f(`Failed to create app: ${e} ${t}`+(n.msg?`
168
+ ${n.msg}`:""))}function NT(e,t){let r="Upgrade your plan or remove unused apps to create a new one.",n=t===1?"Cloud app":"Cloud apps";return e&&typeof t=="number"&&t>0?`Your "${e}" workspace is limited to ${t} ${n}.
160
169
  ${r}`:typeof t=="number"&&t>0?`Your workspace is limited to ${t} ${n}.
161
170
  ${r}`:e?`Your "${e}" workspace has reached its Cloud app limit.
162
171
  ${r}`:`Failed to create app: your workspace has reached its app limit.
163
- `+r}ve();x();be();Se();U();async function ow(e={}){PF(e);let t=await jF(e,J().manifest);return{credentials:t.credentials,workspaceId:t.workspaceId,manifest:J().manifest}}function PF(e){if(e.siteId&&e.workspaceId)throw new d("--site-id and --workspace-id are mutually exclusive. Pass exactly one.")}async function jF(e,t){if(e.siteId)return rw(t,e.siteId);if(e.workspaceId)return nw(e.workspaceId);try{let r=await tt("siteId",{manifest:t});return rw(t,r)}catch(r){if(!(r instanceof d)||r.missingFlag!=="siteId")throw r}try{let r=await tt("workspaceId",{manifest:t});return nw(r)}catch(r){if(!(r instanceof d)||r.missingFlag!=="workspaceId")throw r}if(H()||!yt())throw new d(`No identity configured for this app.
172
+ `+r}Me();S();pe();Ae();J();async function kE(e={}){jT(e);let t=await MT(e,Z().manifest);return{credentials:t.credentials,workspaceId:t.workspaceId,manifest:Z().manifest}}function jT(e){if(e.siteId&&e.workspaceId)throw new f("--site-id and --workspace-id are mutually exclusive. Pass exactly one.")}async function MT(e,t){if(e.siteId)return wE(t,e.siteId);if(e.workspaceId)return DE(e.workspaceId);let r=await kn("siteId",{manifest:t});if(r)return wE(t,r);let n=await kn("workspaceId",{manifest:t});if(n)return DE(n);if(W()||!er())throw new f(`No identity configured for this app.
164
173
  Pass one of:
165
174
  --site-id <id> (deploy to an existing Webflow site)
166
175
  --workspace-id <id> (create a new Cloud app)
167
- Or run 'webflow cloud init' to scaffold a new app.`);return LF(t)}async function rw(e,t){return{credentials:await Ee(e,{site:t})}}async function nw(e){let t=await E();return{workspaceId:e,credentials:{accessToken:t,siteId:""}}}async function NF(){let e=await E(),t=await Hs(e);if(t.length===0)throw new nr("No workspaces found in your account. Please make sure you have at least one workspace.");let r=await Js(t);return pe({cloud:{workspace_id:r.id}}),{workspaceId:r.id,credentials:{accessToken:e,siteId:""}}}async function LF(e){let t=await Ce({message:"This app isn't initialized for Webflow Cloud. How would you like to deploy?",choices:[{name:"Create a new app",value:"standalone"},{name:"Attach to an existing Webflow site",value:"site-attached"},{name:"Cancel",value:"cancel"}]});if(t==="cancel"||!t)throw new d("Deploy cancelled.",{skipLogging:!0});return t==="standalone"?NF():{credentials:await Ee(e,{})}}async function uu(e){try{if(e.appName!==void 0&&e.projectName!==void 0)throw new d("--app-name and --project-name are aliases of the same option. Pass exactly one (--app-name is preferred; --project-name is deprecated).");if(e.appId!==void 0&&e.projectId!==void 0)throw new d("--app-id and --project-id are aliases of the same option. Pass exactly one (--app-id is preferred; --project-id is deprecated).");e.projectName!==void 0&&ti("--project-name","--app-name"),e.projectId!==void 0&&ti("--project-id","--app-id");let t=e.appName??e.projectName,r=e.appId??e.projectId;if(e.directory)try{process.chdir(e.directory),l.info(`Changed directory to: ${e.directory}`)}catch(w){throw l.error(`Error: Could not change to directory ${e.directory}`),new d(w)}if(e.framework){if(!Zo.includes(e.framework))throw new d(`Framework "${e.framework}" is not supported. Allowed: ${Zo.join(", ")}.`);pe({cloud:{framework:e.framework}})}let n=await ow({siteId:e.siteId,workspaceId:e.workspaceId}),{workspaceId:o}=n,{credentials:i,manifest:s}=n,a=!!o;if(o){let w=iw.default.basename(process.cwd()).trim(),I=w.length>=Ut&&w.length<=Vt,C=t??(I?w:"Cloud App");if(C.length<Ut||C.length>Vt)throw new d(`App name must be between ${Ut} and ${Vt} characters (got ${C.length}).
168
- Use --app-name to provide a valid name.`);let q=l.spinner("Creating Cloud app...");try{let S=await tw({accessToken:i.accessToken,workspaceId:o,displayName:C});q.succeed(`Cloud app created: ${S.cloudApp.displayName}`),pe({siteId:S.cloudApp.siteId,cloud:{...s.cloud,app_id:S.cloudApp.project.id,environment_id:S.cloudApp.environment.id}}),Lt({siteId:S.cloudApp.siteId,directory:"."}),process.env.WEBFLOW_SITE_ID=S.cloudApp.siteId,{manifest:s}=J()}catch(S){throw q.fail("Failed to create app"),new d(S,{prefix:"Could not create app:"})}let Z=s.siteId;if(!Z)throw new d("Expected siteId in manifest after Cloud app creation.");i={accessToken:i.accessToken,siteId:Z}}let c;try{c=b.forCloud({authToken:i.accessToken,siteId:i.siteId})}catch(w){l.debug(`Failed to initialize telemetry: ${w}`)}let u;try{u=await tt("appId",{flagValue:r,manifest:s})}catch(w){if(w instanceof d&&w.missingFlag==="appId")u=void 0;else throw w}let p,f,m=t,g=e.description;if(e.environment&&e.mount){if(p=e.environment,f=yr(e.mount),!ei(f))throw new d("Invalid mount path: "+f)}else{let w=[];if(!u){if(!m&&H())throw new d("When --no-input mode is enabled, provide --app-name to create an app, or provide --app-id, set WEBFLOW_APP_ID, or set cloud.app_id in webflow.json to deploy to an existing app.");try{let C=await Uh(i);if(C.projects.length>0){let q=await Ce({message:"Select an app to deploy to:",choices:[...C.projects.map(Z=>({name:`${Z.name} (${Z.description||"No description"})`,value:Z.id})),{name:"Create new app",value:null}]});q?(u=q,pe({cloud:{app_id:q}}),l.info(`${O} App ID updated in webflow.json`)):l.info("Creating a new app will be handled during deployment.")}else l.info(`
169
- No existing apps found. A new app will be created during deployment.`)}catch(C){l.warn("Could not fetch existing apps. A new app will be created during deployment."),l.warn(C instanceof Error?C.message:String(C))}}if(!u&&!m&&(m=await ke({message:"What would you like to name your new app?",default:"New Webflow Cloud App",validate:C=>C.trim()===""?"App name cannot be empty":!0})),u)try{let q=(await Wh(i,u)).environments.map(Z=>({name:`${Z.branch} (${Z.mount})`,value:{branch:Z.branch,mount:Z.mount}}));w.push(...q)}catch(C){throw new d(C,{prefix:"Error fetching app environments:"})}w.push({name:"Create new environment",value:null});let I=await Ce({message:"Select an environment to deploy to:",choices:w});if(I)p=I.branch,f=yr(I.mount);else if(e.environment?p=e.environment:p=await ke({message:"What environment would you like to deploy to?",default:"main",validate:C=>C.trim()===""?"Environment cannot be empty":!0}),e.mount)f=yr(e.mount);else{let C=await ke({message:"What path should this environment be mounted at? (e.g., /app)",default:"/app"});f=yr(C)}}if(!ei(f))throw new d("Invalid mount path: "+f);await sw(i,p,f,{projectName:m,description:g,directory:e.directory,skipMountPathCheck:a||e.skipMountPathCheck,autoPublish:e.autoPublish,telemetry:c,appId:u})}catch(t){throw new d(t,{prefix:"Error during deployment setup:"})}}var ri=null;process.once("exit",()=>ri?.());var aw=(e,t,r)=>t instanceof Or?"no-sites":t instanceof nr?"no-workspaces":e==="auth"?"auth":e==="workspaces"&&r===ae.New?"no-workspaces":"unknown",qn=async()=>{try{let e=$c(),t=Pc();return[...new Set([...e,...t])]}catch(e){return l.error(e,{prefix:"Failed to get available scaffolds:"}),[]}},BF=async(e,t,r)=>{let n;if("content"in r)n=r.content.files;else{let c=r[t];if(!c)throw new Error(`Scaffold "${t}" not found`);n=c}let o=n.find(c=>c.includes(jr));if(!o)throw new Error(`No ${jr} found in scaffold "${t}"`);await zs.promises.mkdir(e,{recursive:!0});let s=(await zs.promises.readFile(o,"utf8")).replace(Ss,e),a=sn.join(e,jr);await zs.promises.writeFile(a,s,"utf8")},Gs=async(e,t,r=ks,n,o=ae.Existing,i)=>{if(o===ae.New){try{let s=await Lc(r);await MF(e,t,s.scaffoldId,{content:s},r,i)}catch(s){if(s instanceof Te){let a=s.message;throw s.supportedIds?.length&&(a+=`
170
- Available frameworks: ${s.supportedIds.join(", ")}`),new d(a)}throw s}return}try{let s=await Ts(r);await WF(e,t,r,{content:s},n)}catch(s){if(s instanceof Te){let a=s.message;throw s.supportedIds?.length&&(a+=`
171
- Available frameworks: ${s.supportedIds.join(", ")}`),new d(a)}throw s}},MF=async(e,t,r,n,o,i)=>{let s=`./${e}`,a="content"in n&&typeof n.content=="object"&&"extractionRoot"in n.content?n.content:null,c=a?sn.dirname(a.extractionRoot):null,u="auth",p=!1,f=!1,m=null;try{let g=Date.now(),w=await E();u="workspaces";let I;if(i)I={id:i};else{let Z=await Hs(w);if(Z.length===0)throw new nr("No workspaces found in your account. Please make sure you have at least one workspace.");I=await Js(Z)}u="scaffold",await Bo(e,t,r,n,void 0,void 0),f=!0,process.chdir(s);let C=o??r;pe({cloud:{framework:C,workspace_id:I.id}}),Lt({apiToken:w,directory:"."}),process.env.WEBFLOW_API_TOKEN=w;let q=Date.now()-g;try{await b.forCloud({authToken:w}).sendUsage("project_init",{scaffold:C,scaffoldName:C,initMode:ae.New,workspaceId:I.id,totalDuration:q,mountPath:t,namespace:Kn()})}catch{}p=!0}catch(g){if(m=g,g instanceof d||g instanceof Error&&g.message.includes("OAuth")){try{await Bo(e,t,r,n),process.chdir(s),pe({cloud:{framework:o??r}}),Lt({directory:"."}),f=!0}catch{}throw l.error(g),new d(g,{skipLogging:!0})}throw g}finally{if(c)try{du.default.removeSync(c)}catch{}if(p){let g=cw(e,ae.New);ri=()=>l.info(g)}else{let g=aw(u,m,ae.New),w=uw(e,ae.New,g,f);ri=()=>l.info(w)}}},WF=async(e,t,r,n,o)=>{let i=`./${e}`,s=null,a=!1,c="content"in n&&typeof n.content=="object"&&"extractionRoot"in n.content?n.content:null,u=c?sn.dirname(c.extractionRoot):null,p="auth",f=!1,m=!1,g=null;try{let w=Date.now();await BF(e,r,n),process.chdir(i);let{manifest:I}=J(),C=await Ee(I,{site:o}),q=C.accessToken,Z=C.siteId;if(s=b.forCloud({authToken:q,siteId:Z}),p="scaffold",await Bo(".",t,r,n,Z,q),m=!0,p="devlink",Z){l.info(`${Oe} Running devlink export to fetch your Webflow components`);try{await UF({site:Z,apiToken:q}),a=!0}catch(oe){$r(oe)?l.info(`${Oe} Skipped component export \u2014 requires a paid Site or Workspace plan. Upgrade at https://webflow.com/pricing.`):l.error(oe,{prefix:"Failed to run devlink export:"})}}let S=Date.now()-w;await s?.sendUsage("project_init",{scaffold:r,scaffoldName:r,devlinkSyncStatus:a,totalDuration:S,mountPath:t,namespace:Kn()}),f=!0}catch(w){g=w,l.error(w);try{await Bo(".",t,r,n),m=!0}catch{}throw new d(w,{skipLogging:!0})}finally{if(u)try{du.default.removeSync(u)}catch{}if(f){let w=cw(e,ae.Existing);ri=()=>l.info(w)}else{let w=aw(p,g,ae.Existing),I=uw(e,ae.Existing,w,m);ri=()=>l.info(I)}}},UF=async e=>{let{exportComponents:t}=await Promise.resolve().then(()=>(rs(),mm));await t({site:e.site,apiToken:e.apiToken,silentNotEntitled:!0})},VF=e=>{if(e?.skipMountPathCheck!==void 0)return e.skipMountPathCheck;try{let{manifest:t}=J();return Oc(t)?!0:t.cloud?.skipMountPathCheck===!0}catch{return!1}},HF=async(e,t,r,n)=>{l.info(fe("Validating mount path configuration..."));let o=await zh(e,t,r);if(o.isValid)l.info(P("Mount path validation passed"));else if(l.info(T(`
172
- Mount path validation results:`)),o.domains.forEach(i=>{let s=i.isValid?O:ge,a=i.isValid?P(`${i.domain} (mountPath: ${i.mountPaths[0]})`):ne(`${i.domain} (no matching mountPath)`);l.info(`${s} ${a}`),i.error&&l.debug(` Error: ${i.error}`)}),o.needsPublishing)if(n){l.info("\u{1F680} Auto-publishing site to update mount path configuration...");let i=o.domains.filter(s=>!s.isValid).map(s=>s.domain);await iu(e,i)}else if(await Yh()&&yt()){let s=o.domains.filter(c=>!c.isValid).map(c=>c.domain),a=await Zh(s);await iu(e,a)}else l.warn("\u26A0\uFE0F Continuing with deployment without publishing...")},JF=async(e,t,r,n)=>{Zc("\u{1F3D7}\uFE0F ","Building app");let o=await Oh(e,{mountPath:r,telemetry:n?.telemetry,deployUrl:t.deploy_url,environmentId:t.environment_id});Zc("\u{1F4E4}","Uploading build artifacts");let i=Date.now();await Vh(o,t.upload_url);let s=Date.now()-i;return l.info(`${O} Upload completed in ${(s/1e3).toFixed(1)}s`),o},GF=async(e,t,r,n)=>{l.success(`
173
- \u{1F310} Your cloud app will soon be available at:`);try{let o=n?.domainsOverride??await Kh(e,t,r),i=qh(o??[],t);i?.length>0?i.forEach(s=>{l.info(` ${s}`)}):l.warn(" No domains found with the correct mount path configuration yet.")}catch(o){l.warn(` Could not determine deployment links: ${o instanceof Error?o.message:o}`)}},zF=e=>{e.site_slug?l.success(`Visit your deployment:
174
-
175
- ${fn}/dashboard/sites/${e.site_slug}/webflow-cloud/projects/${e.project_id}/environments/${e.environment_id}/deployments/${e.deployment_id}`):l.info(`
176
- Visit the webflow Cloud dashboard to view your deployment: https://webflow.com/dashboard/sites`)},KF=async(e,t,r,n,o)=>{try{if(await Hh(t.completion_url,!!n),n)l.error(`
177
- ${D} Deployment failed due to build error.`);else{l.success(`
178
- ${O} Deployment triggered successfully!`);let i;try{let{manifest:s}=J();Oc(s)&&(i=[`${o?.projectName??sn.basename(process.cwd())}.webflow.io`])}catch(s){l.debug(`Could not read manifest for standalone deploy link hint: ${s instanceof Error?s.message:String(s)}`)}await GF(e,r,t.environment_id,i!==void 0?{domainsOverride:i}:void 0),zF(t)}}catch(i){throw new d(i,{prefix:"Failed to trigger deployment:"})}},qF=(e,t)=>{e&&$h(process.cwd(),e),t&&Rh(t)},sw=async(e,t,r,n)=>{let o=null,i=null,s=Date.now(),a=null,c=null,u=Yc(process.cwd()),p=n?.telemetry;await p?.sendUsage("cloud_deploy_start",{environment:t,mountPath:r,projectName:n?.projectName,hasDescription:!!n?.description,hasDirectory:!!n?.directory,cloudflareBindings:u,namespace:Kn()});try{xh(l,process.cwd()),o=await Mh(e,t,r,n),l.info("\u{1F527} Detecting framework..."),a=await Ih(process.cwd(),o.deploy_url,o.environment_id,r),l.info(`Framework: ${a.info.displayName}`),l.info(`Build command: ${a.getBuildCommand()}`),VF(n)?l.info("\u23ED\uFE0F Skipping mount path validation..."):await HF(e,r,o.environment_id,n?.autoPublish),i=await JF(a,o,r,n),l.info(`Starting deployment process for environment: ${t} at mount path: ${r}`);let f=Date.now()-s;await p?.sendUsage("cloud_deploy_success",{duration:f,environment:t,mountPath:r,projectName:n?.projectName,hasDescription:!!n?.description,hasDirectory:!!n?.directory,framework:a.info.name,buildCommand:a.getBuildCommand(),cloudflareBindings:u,namespace:Kn()})}catch(f){c=f instanceof Error?f:new Error(String(f)),l.error(c,{prefix:"Error during deployment initialization:"});let m=Date.now()-s;await p?.sendError(c,"cloud_deploy_failure",{duration:m,environment:t,mountPath:r,projectName:n?.projectName,cloudflareBindings:u,argv:process.argv.slice(2),namespace:Kn()})}finally{if(qF(a,i),o&&await KF(e,o,r,c,{projectName:n?.projectName}),c)throw new d(c,{skipLogging:!0})}},lw=e=>{let t=Math.max(...e.map(i=>it(i).length)),r=T(`\u250C${"\u2500".repeat(t+2)}\u2510`),n=T(`\u2514${"\u2500".repeat(t+2)}\u2518`),o=e.map(i=>{let s=" ".repeat(t-it(i).length);return`${T("\u2502")} ${i}${s} ${T("\u2502")}`});return[r,...o,n].join(`
179
- `)},cw=(e,t)=>{let r=[Ze(`${Pe} Get started with the following commands:`),P(`cd ${e}`),P("npm install"),P("npm run dev"),P("webflow cloud deploy")];return t!==ae.New&&(r.push(""),r.push(Ze(`${Pe} Run the following command to export Webflow components when they update:`)),r.push(P("webflow devlink export"))),lw(r)},uw=(e,t,r,n=!0)=>{let o=[],i=t===ae.New?"webflow cloud init --new":"webflow cloud init",s=c=>n?`App scaffold created at ${e}/ but ${c}`:c.charAt(0).toUpperCase()+c.slice(1),a=n?[P(`cd ${e}`)]:[];switch(r){case"auth":o.push(Ze(`${Pe} ${s("Webflow authentication did not complete.")}`),"",Ze(n?"To finish setup:":"To retry:"),...a,P("webflow auth login"),P(i));break;case"no-sites":o.push(Ze(`${Pe} ${s("no Webflow sites were found in your account.")}`),"",Ze(n?"Create a site in the Webflow Designer, then:":"Create a site in the Webflow Designer, then rerun:"),...a,P("webflow cloud init"));break;case"no-workspaces":o.push(Ze(`${Pe} ${s("no Webflow workspaces were found in your account.")}`),"",Ze(n?"Create a workspace, then:":"Create a workspace, then rerun:"),...a,P("webflow cloud init --new"));break;default:o.push(Ze(`${Pe} ${s("setup did not complete.")}`),"",Ze(n?"To retry setup:":"To retry:"),...a,P(i));break}return lw(o)};$();Ar();var an=require("commander");ie();v();$();Ar();function dw(e,t,r){st()&&e==="cloud"&&(r.json||l.warn(`${ge} ${ne(`webflow cloud ${t}`)} is deprecated \u2014 use ${ne(`webflow apps ${t}`)} instead.`))}function Ks(e,{namespace:t}){e.command("init").description("Bootstrap a new Webflow Cloud app").addOption(new an.Option("-n, --app-name <name>","App name")).addOption(new an.Option("--project-name <name>",`${_r} Use --app-name instead.`)).option("-f, --framework <framework>","Framework to use (e.g., astro, nextjs)").option("-m, --mount <mount>","Mount path (default: '/' for new domain, '/app' for existing site)").option("-s, --site-id <siteId>","Webflow site ID to connect to").option("--new","Create an app without connecting to an existing site").option("-w, --workspace-id <workspaceId>","Workspace ID where the app should be deployed (skips workspace picker)").action(async(r,n)=>{su(t),dw(t,"init",r),await ZF(r,n)})}function qs(e,{namespace:t}){e.command("deploy").description("Deploy your Webflow Cloud app").option("-e, --environment <environment>","Environment name").option("-m, --mount <mount>","Mount path (e.g., /app)").addOption(new an.Option("-n, --app-name <name>","App name (for new apps)")).addOption(new an.Option("--project-name <name>",`${_r} Use --app-name instead.`)).option("-d, --directory <path>","App directory path (for new apps)").option("--description <description>","App description (for new apps)").option("--skip-mount-path-check","Skip mount path checking").option("--auto-publish","Automatically publish site for mount path updates").option("-s, --site-id <siteId>","Webflow site ID for site-attached deploys (skips site picker)").addOption(new an.Option("-a, --app-id <appId>","App ID (skips app picker)")).addOption(new an.Option("--project-id <appId>",`${_r} Use --app-id instead.`)).option("-f, --framework <framework>","Override framework detection (e.g., nextjs, astro)").option("-w, --workspace-id <workspaceId>","Workspace ID where the app will be deployed (skips workspace picker)").action(async(r,n)=>{su(t),dw(t,"deploy",r),await YF(r,n)})}var ZF=cu,YF=uu;var pw=e=>{let t=st(),r=e.command("cloud").description(t?`${_r} Use 'webflow apps' instead. Create and manage Webflow Cloud apps`:"Create and manage Webflow Cloud apps");r.command("create").description(`${_r} Use 'webflow ${t?"apps":"cloud"} init' instead. Quick non-interactive scaffold for site-attached apps (hardcoded to /app).`).argument("<name>","App name").option("-f, --framework <framework>","Framework to use","nextjs").action(au),r.command("list").description("Get list of app templates that can be used for `init`").action(lu),Ks(r,{namespace:"cloud"}),qs(r,{namespace:"cloud"})};U();x();v();$();W();se();x();ot();var XF="1.0.0";function Ke(e){return{Authorization:`Bearer ${e}`,Accept:"application/json","Accept-Version":XF}}async function Ot(e){let t={};try{t=JSON.parse(await e.text())}catch{}return e.status===403&&t.publicErrorCode==="missing_scopes"?new d(`Missing required scopes for apps.
180
- ${t.msg??""}
181
- Re-run 'webflow auth login' to grant the necessary permissions.`,{isUserError:!0}):new d(`${e.status} ${e.statusText}`+(t.msg?`
182
- ${t.msg}`:""))}async function Zs(e){let t=await j(`${F}/cosmic/apps`,{headers:Ke(e)});if(!t.ok)throw await Ot(t);return(await t.json()).apps??[]}async function Ys(e,t){_e(t,"appId");let r=await j(`${F}/cosmic/apps/${encodeURIComponent(t)}`,{headers:Ke(e)});if(!r.ok)throw await Ot(r);return await r.json()}async function fw(e,t,r){_e(t,"appId");let n=await j(`${F}/cosmic/apps/${encodeURIComponent(t)}`,{method:"PATCH",headers:{...Ke(e),"Content-Type":"application/json"},body:JSON.stringify(r)});if(!n.ok)throw await Ot(n);return await n.json()}async function mw(e,t){_e(t,"appId");let r=await j(`${F}/cosmic/apps/${encodeURIComponent(t)}`,{method:"DELETE",headers:Ke(e)});if(!r.ok)throw await Ot(r);return await r.json()}async function gw(e,t,r={}){_e(t,"appId");let n=[];r.limit!==void 0&&Number.isFinite(r.limit)&&n.push(`limit=${encodeURIComponent(String(r.limit))}`),r.cursor&&n.push(`cursor=${encodeURIComponent(r.cursor)}`);let o=`${F}/cosmic/apps/${encodeURIComponent(t)}/domains${n.length>0?`?${n.join("&")}`:""}`,i=await j(o,{headers:Ke(e)});if(!i.ok)throw await Ot(i);let s=await i.json();return{customDomains:s.customDomains??[],nextCursor:s.nextCursor??null}}async function Xs(e,t){_e(t,"appId");let r=await j(`${F}/cosmic/apps/${encodeURIComponent(t)}/environments`,{headers:Ke(e)});if(!r.ok)throw await Ot(r);return await r.json()}function hw(e={}){let t=[];return e.limit!==void 0&&Number.isFinite(e.limit)&&t.push(`limit=${encodeURIComponent(String(e.limit))}`),e.cursor!==void 0&&t.push(`cursor=${encodeURIComponent(e.cursor)}`),e.since!==void 0&&t.push(`since=${encodeURIComponent(e.since)}`),e.q!==void 0&&t.push(`q=${encodeURIComponent(e.q)}`),t.length>0?`?${t.join("&")}`:""}async function ww(e,t,r,n,o={}){_e(t,"appId"),_e(r,"environmentId"),Xo(n,"deploymentId");let i=await j(`${F}/cosmic/apps/${encodeURIComponent(t)}/environments/${encodeURIComponent(r)}/deployments/${encodeURIComponent(n)}/buildLogs${hw(o)}`,{headers:Ke(e)});if(!i.ok)throw await Ot(i);return await i.json()}async function yw(e,t,r,n={}){_e(t,"appId"),_e(r,"environmentId");let o=await j(`${F}/cosmic/apps/${encodeURIComponent(t)}/environments/${encodeURIComponent(r)}/logs${hw(n)}`,{headers:Ke(e)});if(!o.ok)throw await Ot(o);return await o.json()}async function Qs(e,t,r,n={}){_e(t,"appId"),_e(r,"environmentId");let o=n.limit!==void 0&&Number.isFinite(n.limit)?`?limit=${encodeURIComponent(String(n.limit))}`:"",i=await j(`${F}/cosmic/apps/${encodeURIComponent(t)}/environments/${encodeURIComponent(r)}/deployments${o}`,{headers:Ke(e)});if(!i.ok)throw await Ot(i);let s=await i.json();return Array.isArray(s)?s:s?.deployments??[]}async function Dw(e,t,r,n){_e(t,"appId"),_e(r,"environmentId"),Xo(n,"deploymentId");let o=await j(`${F}/cosmic/apps/${encodeURIComponent(t)}/environments/${encodeURIComponent(r)}/deployments/${encodeURIComponent(n)}`,{headers:Ke(e)});if(!o.ok)throw await Ot(o);return await o.json()}ie();x();v();function qe(e){let t=Object.fromEntries(e.map(r=>[r.toLowerCase(),r]));return r=>{let n=[],o=[];for(let i of r){let s=t[i.toLowerCase()];s?n.push(s):o.push(i)}return{valid:n,invalid:o}}}function ce(e,t,r){let n=e.split(",").map(s=>s.trim()),{valid:o,invalid:i}=t(n);if(o.length===0)throw new d(`No valid fields specified. Available: ${r.join(", ")}`,{isUserError:!0});return i.length>0&&l.warn(`Unknown field(s): ${i.join(", ")}. Available: ${r.join(", ")}`),o}v();var bw=(e,t)=>e+" ".repeat(Math.max(0,t-it(e).length));function $e(e,t){let r=e.map((s,a)=>Math.max(it(s).length,...t.map(c=>it(String(c[a])).length))),n=r.map(s=>"\u2500".repeat(s+2)).join("\u2500"),o=e.map((s,a)=>bw(s,r[a]+2)).join(""),i=t.map(s=>s.map((a,c)=>bw(String(a),r[c]+2)).join("")).join(`
183
- `);return`${o}
184
- ${n}
185
- ${i}`}var vw=["id","name","description","siteId","appPath","createdAt","siteName","shortName"],Ew=["id","url","lastPublished","fullSiteCompiledAt"],Fw=["id","branch","mount","deployUrl","latestDeploymentStatus","lastDeploymentSucceededAt","lastVariableModifiedAt","createdAt","updatedAt"],ea="id,name,siteId,createdAt",pu="id,name,description,siteId,appPath,createdAt",ta="id,url,lastPublished",ra="id,branch,deployUrl,latestDeploymentStatus,createdAt",QF=new Set(["createdAt","updatedAt","lastPublished","fullSiteCompiledAt","lastDeploymentSucceededAt","lastVariableModifiedAt","buildStartedAt","buildFinishedAt","deployFinishedAt","buildRunningAt","deployStartedAt","buildFailedAt","deployFailedAt"]);function ex(e,t){return e==null||e===""?T("\u2014"):QF.has(t)?new Date(String(e)).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):String(e).replace(/\s*[\r\n]+\s*/g," ")}function ni(e,t,r){if(e.length===0)return T(r);let n=t.map(i=>Q(i)),o=e.map(i=>t.map(s=>ex(i[s],s)));return $e(n,o)}var na=qe(vw),xw=qe(Ew),_w=qe(Fw);function Dr(){return vw}function oi(){return Ew}function ii(){return Fw}function oa(e,t=ea.split(",")){return ni(e,t,"No apps found.")}function Cw(e,t=ta.split(",")){return ni(e,t,"No domains found.")}function kw(e,t=ra.split(",")){return ni(e,t,"No environments found.")}function Sw(e){return e.siteName?`Permanently delete app "${e.name}" (attached to site "${e.siteName}", ${e.id}). This cannot be undone.`:`Archive standalone app "${e.name}" (${e.id}).`}async function fu(e){let t=await E(),r=b.forApps({authToken:t}),n=Date.now();try{let o=await Zs(t);if(await r.sendUsage("apps_list",{duration:Date.now()-n,count:o.length}),e.json){l.info(JSON.stringify(o,null,2));return}if(o.length===0){l.info("No apps found.");return}let i=ce(e.fields,na,Dr());l.info(oa(o,i))}catch(o){throw o instanceof d&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"apps_list",{duration:Date.now()-n}),new d(o,{prefix:`${D} Failed to list apps:`}))}}U();x();v();$();W();ve();x();be();Se();async function ia(e,t={}){let r=await Zs(e);if(r.length===0)throw new d("No apps found in this workspace.",{isUserError:!0});if(r.length===1)return r[0].id;if(H()||t.json){let o=r.map(i=>` ${i.id} (${i.name})`).join(`
186
- `);throw new d(`This workspace has multiple apps. Pass the app id to choose one:
187
- ${o}`,{isUserError:!0,missingFlag:"appId"})}let n=await Ce({message:"Select an app:",choices:r.map(o=>({name:`${o.name} (${o.id})`,value:o.id}))});if(!n)throw new d("No app selected.",{isUserError:!0});return n}async function Rt(e,t,r){let{manifest:n}=J();return tt("appId",{flagValue:t,manifest:n,isNoInput:!1,json:r.json,prompt:()=>ia(e,{json:r.json})})}async function mu(e,t){let r=await E(),n=await Rt(r,e,t),o=b.forApps({authToken:r}),i=Date.now();try{let s=await Ys(r,n);if(await o.sendUsage("apps_get",{duration:Date.now()-i}),t.json){l.info(JSON.stringify(s,null,2));return}let a=ce(t.fields,na,Dr());l.info(oa([s],a))}catch(s){throw s instanceof d&&s.isUserError?s:(await o.sendError(s instanceof Error?s:new Error(String(s)),"apps_get",{duration:Date.now()-i}),new d(s,{prefix:`${D} Failed to get app:`}))}}U();x();v();$();W();async function gu(e,t){let r=await E(),n=await Rt(r,e,t),o=b.forApps({authToken:r}),i=Date.now();try{let s=await gw(r,n,{limit:t.limit,cursor:t.cursor});if(await o.sendUsage("apps_domains",{duration:Date.now()-i,count:s.customDomains.length}),t.json){l.info(JSON.stringify(s,null,2));return}if(s.customDomains.length===0){l.info("No domains found.");return}let a=ce(t.fields,xw,oi()),c=Cw(s.customDomains,a);s.nextCursor&&(c+=`
188
-
189
- More: pass --cursor ${s.nextCursor}`),l.info(c)}catch(s){throw s instanceof d&&s.isUserError?s:(await o.sendError(s instanceof Error?s:new Error(String(s)),"apps_domains",{duration:Date.now()-i}),new d(s,{prefix:`${D} Failed to get app domains:`}))}}U();x();v();$();W();async function hu(e,t){let r=await E(),n=await Rt(r,e,t),o=t.json?void 0:ce(t.fields,_w,ii()),i=b.forApps({authToken:r}),s=Date.now();try{let a=await Xs(r,n);if(await i.sendUsage("apps_environments_list",{duration:Date.now()-s,count:a.length}),t.json){l.info(JSON.stringify(a,null,2));return}if(a.length===0){l.info("No environments found.");return}l.info(kw(a,o))}catch(a){throw a instanceof d&&a.isUserError?a:(await i.sendError(a instanceof Error?a:new Error(String(a)),"apps_environments_list",{duration:Date.now()-s}),new d(a,{prefix:`${D} Failed to list app environments:`}))}}U();x();v();$();W();ie();var wu=["timestamp","message","phase"],si="timestamp,message",sa=qe(wu);function br(){return wu}function tx(e,t){return e==null||e===""?T("\u2014"):t==="timestamp"?new Date(String(e)).toLocaleString():String(e)}function rx(e,t=si.split(",")){return e.map(r=>t.map(n=>tx(r[n],n)).join(" ")).join(`
190
- `)}function aa(e,t,r){if(t.json)return JSON.stringify({logs:e.logs,nextCursor:e.nextCursor},null,2);if(e.logs.length===0)return"No logs found.";let n=rx(e.logs,r);return e.nextCursor?`${n}
191
-
192
- More: pass --cursor ${e.nextCursor}`:n}function Aw(e){return e[0]?.id}ve();x();be();Se();async function Tw(e,t,r={}){let n=await Xs(e,t);if(n.length===0)throw new d("No environments found for this app.",{isUserError:!0});if(n.length===1)return n[0].id;if(H()||r.json){let i=n.map(s=>` ${s.id} (${s.branch})`).join(`
193
- `);throw new d(`This app has multiple environments. Pass the environment id to choose one:
194
- ${i}`,{isUserError:!0,missingFlag:"environmentId"})}let o=await Ce({message:"Select an environment:",choices:n.map(i=>({name:`${i.branch} (${i.id})`,value:i.id}))});if(!o)throw new d("No environment selected.",{isUserError:!0});return o}async function Me(e,t){let{manifest:r}=J(),n=await tt("appId",{flagValue:t.appId,manifest:r,isNoInput:!1,json:t.json,prompt:()=>ia(e,{json:t.json})}),o=await tt("environmentId",{flagValue:t.environmentId,manifest:r,isNoInput:!1,json:t.json,prompt:()=>Tw(e,n,{json:t.json})});return{appId:n,envId:o}}async function yu(e,t){let r=await E(),{appId:n,envId:o}=await Me(r,{json:t.json}),i=t.json?void 0:ce(t.fields,sa,br()),s=b.forApps({authToken:r}),a=Date.now();try{let c=e;if(!c){let p=await Qs(r,n,o,{limit:1});if(c=Aw(p),!c)throw new d("No deployments found for this environment.",{isUserError:!0})}let u=await ww(r,n,o,c,{limit:t.limit,cursor:t.cursor,since:t.since,q:t.q});await s.sendUsage("apps_logs_build",{duration:Date.now()-a,count:u.logs.length}),l.info(aa(u,t,i))}catch(c){throw c instanceof d&&c.isUserError?c:(await s.sendError(c instanceof Error?c:new Error(String(c)),"apps_logs_build",{duration:Date.now()-a}),new d(c,{prefix:`${D} Failed to read build logs:`}))}}U();x();v();$();W();async function Du(e,t){let r=await E(),{appId:n,envId:o}=await Me(r,{environmentId:e,json:t.json}),i=t.json?void 0:ce(t.fields,sa,br()),s=b.forApps({authToken:r}),a=Date.now();try{let c=await yw(r,n,o,{limit:t.limit,cursor:t.cursor,since:t.since,q:t.q});await s.sendUsage("apps_logs_runtime",{duration:Date.now()-a,count:c.logs.length}),l.info(aa(c,t,i))}catch(c){throw c instanceof d&&c.isUserError?c:(await s.sendError(c instanceof Error?c:new Error(String(c)),"apps_logs_runtime",{duration:Date.now()-a}),new d(c,{prefix:`${D} Failed to read runtime logs:`}))}}U();x();v();$();W();var Iw=["id","status","sourceType","commitHash","commitMessage","buildStartedAt","buildFinishedAt","deployFinishedAt","framework"],ai="id,status,sourceType,commitHash,buildStartedAt",la=qe(Iw);function vr(){return Iw}function ca(e,t=ai.split(",")){return ni(e,t,"No deployments found.")}async function bu(e){let t=await E(),{appId:r,envId:n}=await Me(t,{json:e.json}),o=e.json?void 0:ce(e.fields,la,vr()),i=b.forApps({authToken:t}),s=Date.now();try{let a=await Qs(t,r,n,{limit:e.limit});if(await i.sendUsage("apps_deployments_list",{duration:Date.now()-s,count:a.length}),e.json){l.info(JSON.stringify(a,null,2));return}if(a.length===0){l.info("No deployments found.");return}l.info(ca(a,o))}catch(a){throw a instanceof d&&a.isUserError?a:(await i.sendError(a instanceof Error?a:new Error(String(a)),"apps_deployments_list",{duration:Date.now()-s}),new d(a,{prefix:`${D} Failed to list deployments:`}))}}U();x();v();$();W();async function vu(e,t){let r=await E(),{appId:n,envId:o}=await Me(r,{json:t.json}),i=t.json?void 0:ce(t.fields,la,vr()),s=b.forApps({authToken:r}),a=Date.now();try{let c=await Dw(r,n,o,e);if(await s.sendUsage("apps_deployments_get",{duration:Date.now()-a}),t.json){l.info(JSON.stringify(c,null,2));return}l.info(ca([c],i))}catch(c){throw c instanceof d&&c.isUserError?c:(await s.sendError(c instanceof Error?c:new Error(String(c)),"apps_deployments_get",{duration:Date.now()-a}),new d(c,{prefix:`${D} Failed to get deployment:`}))}}U();x();v();$();W();async function Eu(e,t){if(t.name===void 0&&t.description===void 0)throw new d("Provide --name or --description",{isUserError:!0});let r=await E(),n=await Rt(r,e,t);if(_e(n,"appId"),t.dryRun){l.info(`Dry run \u2014 would update app: ${n}`),t.name!==void 0&&l.info(` Name: ${t.name}`),t.description!==void 0&&l.info(` Description: ${t.description}`),l.info("Dry run complete \u2014 no changes made.");return}let o=b.forApps({authToken:r}),i=Date.now();try{let s=await fw(r,n,{name:t.name,description:t.description});if(await o.sendUsage("apps_update",{duration:Date.now()-i,dryRun:!1}),t.json){l.info(JSON.stringify(s,null,2));return}l.info(`${O} App updated: ${s.id}`),s.name&&l.info(` Name: ${s.name}`),s.description!=null&&l.info(` Description: ${s.description}`)}catch(s){throw s instanceof d&&s.isUserError?s:(await o.sendError(s instanceof Error?s:new Error(String(s)),"apps_update",{duration:Date.now()-i}),new d(s,{prefix:`${D} Failed to update app:`}))}}U();x();be();Se();v();$();W();async function Fu(e,t){let r=await E(),n=await Rt(r,e,t);if(_e(n,"appId"),!t.dryRun&&!t.yes&&(H()||t.json))throw new d("Refusing to delete without confirmation. Pass --yes.",{isUserError:!0,missingFlag:"yes"});if(t.dryRun||!t.yes){let s=await Ys(r,n),a=Sw(s);if(t.dryRun){l.info(`Dry run \u2014 would delete app ${n}`),l.info(` ${a}`),l.info("Dry run complete \u2014 no changes made.");return}if(!await Ne({message:`${a} Continue?`})){l.info("Aborted.");return}}let o=b.forApps({authToken:r}),i=Date.now();try{let s=await mw(r,n);if(await o.sendUsage("apps_delete",{duration:Date.now()-i,dryRun:!1}),t.json){l.info(JSON.stringify(s,null,2));return}l.info(s.message)}catch(s){throw s instanceof d&&s.isUserError?s:(await o.sendError(s instanceof Error?s:new Error(String(s)),"apps_delete",{duration:Date.now()-i}),new d(s,{prefix:`${D} Failed to delete app:`}))}}U();x();v();$();W();se();x();ot();var Zn=100;function xu(e,t){return`${F}/cosmic/apps/${encodeURIComponent(e)}/environments/${encodeURIComponent(t)}/variables`}async function _u(e,t){let r={};try{r=JSON.parse(await e.text())}catch{}let n=r.msg??r.message;return e.status===403&&r.publicErrorCode==="missing_scopes"?new d(`Missing required scopes for Cloud app environment variables.
195
- ${n??""}
196
- Re-run 'webflow auth login' to grant the necessary permissions.`,{isUserError:!0}):new d(`${t}: ${e.status} ${e.statusText}`+(n?`
197
- ${n}`:""),{isUserError:e.status>=400&&e.status<500})}async function Cu(e,t,r){let n=await j(xu(t,r),{headers:Ke(e)});if(!n.ok)throw await _u(n,"Failed to list environment variables");return(await n.json()).variables??[]}async function ku(e,t,r,n){let o=await j(`${xu(t,r)}/${encodeURIComponent(n)}`,{method:"DELETE",headers:Ke(e)});if(!o.ok)throw await _u(o,"Failed to delete environment variable")}async function li(e,t,r,n,o){let i=Object.keys(n).length;if(i>Zn)throw new d(`Cannot import more than ${Zn} variables at once (received ${i}).`,{isUserError:!0});let s=await j(`${xu(t,r)}/bulk`,{method:"POST",headers:{...Ke(e),"Content-Type":"application/json"},body:JSON.stringify({variables:n,overwriteExisting:o})});if(!s.ok)throw await _u(s,"Failed to import environment variables");return await s.json()}var Ow=require("dotenv");ie();var Rw=["key","isSecret","value","id","environmentId"],ci=["key","isSecret"];function Yn(){return Rw}var Su=qe(Rw);function nx(e,t){switch(t){case"value":return e.isSecret?T("(secret)"):e.value!==""?e.value:T("\u2014");case"isSecret":return e.isSecret?"yes":"no";default:return e[t]!==""?String(e[t]):T("\u2014")}}function Au(e,t=ci){if(e.length===0)return T("No environment variables found.");let r=t.map(o=>Q(o)),n=e.map(o=>t.map(i=>nx(o,i)));return $e(r,n)}function Tu(e){let t=e.split(/\r?\n/).map(r=>r.replace(/^\s*export\s+/,"")).join(`
198
- `);return(0,Ow.parse)(t)}async function Iu(e){let t=await E(),r=b.forAppsEnvVars({authToken:t}),n=Date.now();try{let{appId:o,envId:i}=await Me(t,e),s=await Cu(t,o,i);if(await r.sendUsage("apps_env_vars_list",{duration:Date.now()-n,variableCount:s.length}),e.json){l.info(JSON.stringify(s,null,2));return}if(s.length===0){l.info("No environment variables found.");return}let a=ce(e.fields,Su,Yn());l.info(Au(s,a))}catch(o){throw o instanceof d&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"apps_env_vars_list",{duration:Date.now()-n}),new d(o,{prefix:`${D} Failed to list environment variables:`}))}}U();x();v();$();W();x();be();Se();v();$();async function $w(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(t));return Buffer.concat(e).toString("utf8").replace(/\r?\n$/,"")}function Ou(e){l.warn(`${ge} Passing a secret as a command-line argument exposes it in your shell history and process list. Pipe it via stdin (e.g. \`printf %s "$VALUE" | webflow apps env-vars set ${e} --secret\`) or omit the value to be prompted.`)}async function Pw(e,t){if(e!==void 0)return t.secret&&!t.json&&Ou(t.key),{value:e,source:"arg"};if(!process.stdin.isTTY){let r=await $w();if(r==="")throw new d(`No value for ${t.key} received on stdin.`,{isUserError:!0});return{value:r,source:"stdin"}}if(!H()){let r=t.secret?await Gp({message:`Enter the value for ${t.key}:`}):await ke({message:`Enter the value for ${t.key}:`});if(r===null||r==="")throw new d(`No value provided for ${t.key}.`,{isUserError:!0});return{value:r,source:"prompt"}}throw new d(`No value provided for ${t.key}. Pass it as an argument, pipe it via stdin, or run interactively (without --no-input).`,{isUserError:!0})}async function Ru(e,t,r){let n=r.secret?" (secret)":"",o=await E(),i=b.forAppsEnvVars({authToken:o}),s=Date.now(),{appId:a,envId:c}=await Me(o,r);if(r.dryRun){t!==void 0&&r.secret&&!r.json&&Ou(e),r.json?l.info(JSON.stringify({key:e,...r.secret?{isSecret:!0}:{},appId:a,environmentId:c,dryRun:!0},null,2)):(l.info(`Would set ${e}${n} on app ${a}, environment ${c}.`),l.info("Dry run \u2014 no changes made."));return}try{let{value:u,source:p}=await Pw(t,{key:e,secret:r.secret,json:r.json}),f={[e]:{value:u,...r.secret?{isSecret:!0}:{}}},m=await li(o,a,c,f,!0),g=[...m.created,...m.updated,...m.skipped].find(I=>I.key===e);if(!g){let I=m.errors.find(C=>C.key===e);throw new d(I?`Failed to set ${e}: ${I.error}`:`Set did not apply to ${e}.`,{isUserError:!!I})}let w=g.isSecret;if(await i.sendUsage("apps_env_vars_set",{duration:Date.now()-s,mode:r.secret?"secret":"plain",valueSource:p}),r.json){l.info(JSON.stringify({key:e,isSecret:w,status:"set"},null,2));return}l.info(`${O} Set ${e}${w?" (secret)":""}`)}catch(u){throw u instanceof d&&u.isUserError?u:(await i.sendError(u instanceof Error?u:new Error(String(u)),"apps_env_vars_set",{duration:Date.now()-s}),new d(u,{prefix:`${D} Failed to set environment variable:`}))}}U();x();v();$();W();async function $u(e,t){let r=await E(),n=b.forAppsEnvVars({authToken:r}),o=Date.now(),{appId:i,envId:s}=await Me(r,t);if(t.dryRun){t.json?l.info(JSON.stringify({key:e,appId:i,environmentId:s,dryRun:!0},null,2)):(l.info(`Would delete ${e} from app ${i}, environment ${s}.`),l.info("Dry run \u2014 no changes made."));return}try{if(await ku(r,i,s,e),await n.sendUsage("apps_env_vars_delete",{duration:Date.now()-o}),t.json){l.info(JSON.stringify({key:e,status:"deleted"},null,2));return}l.info(`${O} Deleted ${e}`)}catch(a){throw a instanceof d&&a.isUserError?a:(await n.sendError(a instanceof Error?a:new Error(String(a)),"apps_env_vars_delete",{duration:Date.now()-o}),new d(a,{prefix:`${D} Failed to delete environment variable:`}))}}var jw=require("fs"),Nw=require("path");U();x();v();$();W();function Pu(e){return e.map(({id:t,environmentId:r,key:n,isSecret:o})=>({id:t,environmentId:r,key:n,isSecret:o}))}async function ju(e,t){let r=await E(),n=b.forAppsEnvVars({authToken:r}),o=Date.now(),{appId:i,envId:s}=await Me(r,t),a;try{a=(0,jw.readFileSync)((0,Nw.resolve)(e),"utf8")}catch{throw new d(`Could not read file: ${e}`,{isUserError:!0})}let c=Tu(a),u=Object.keys(c);if(u.length===0)throw new d(`No variables found in ${e}.`,{isUserError:!0});if(u.length>Zn)throw new d(`Cannot import more than ${Zn} variables at once (${e} has ${u.length}).`,{isUserError:!0});let p={};for(let f of u)p[f]={value:c[f],...t.secret?{isSecret:!0}:{}};if(t.dryRun){if(t.json)l.info(JSON.stringify({appId:i,environmentId:s,secret:!!t.secret,variables:u,dryRun:!0},null,2));else{l.info(`Would import ${u.length} variable(s)${t.secret?" as secrets":""} into app ${i}, environment ${s}:`);for(let f of u)l.info(` ${f}=********`);l.info("Dry run \u2014 no changes made.")}return}try{let f=await li(r,i,s,p,!0);if(await n.sendUsage("apps_env_vars_import",{duration:Date.now()-o,variableCount:u.length,createdCount:f.created.length,updatedCount:f.updated.length,skippedCount:f.skipped.length,errorCount:f.errors.length,mode:t.secret?"secret":"plain"}),t.json)l.info(JSON.stringify({created:Pu(f.created),updated:Pu(f.updated),skipped:Pu(f.skipped),errors:f.errors},null,2));else{l.info(`${O} Imported: ${f.created.length} created, ${f.updated.length} updated, ${f.skipped.length} skipped, ${f.errors.length} failed`);for(let m of f.errors)l.warn(` ${m.key}: ${m.error}`)}if(f.errors.length>0)throw new d(`Import completed with ${f.errors.length} error(s).`,{isUserError:!0,skipLogging:!0})}catch(f){throw f instanceof d&&f.isUserError?f:(await n.sendError(f instanceof Error?f:new Error(String(f)),"apps_env_vars_import",{duration:Date.now()-o}),new d(f,{prefix:`${D} Failed to import environment variables:`}))}}Ar();var Lw=e=>{let t=e.command("apps").description("Manage Webflow Cloud apps");Ks(t,{namespace:"apps"}),qs(t,{namespace:"apps"}),t.command("list").description("List all apps in your Webflow workspace").addOption(Y()).addOption(xe([...Dr()]).default(ea)).action(fu),t.command("get").description("Get details for a specific app").argument("[appId]","App ID (defaults to webflow.json or WEBFLOW_APP_ID)").addOption(Y()).addOption(xe([...Dr()]).default(pu)).action(mu),t.command("domains").description("List domains and live URLs for an app").argument("[appId]","App ID (defaults to webflow.json or WEBFLOW_APP_ID)").addOption(xe([...oi()]).default(ta)).addOption(Y()).option("--limit <n>","Max number of domains to return (server caps at 100)",Cs).option("--cursor <cursor>","Pagination cursor from a previous nextCursor").action(gu),st()&&(t.command("update").description("Update an app's name or description. Use --dry-run to preview.").argument("[appId]","App ID (defaults to webflow.json or WEBFLOW_APP_ID)").option("--name <name>","New app name").option("--description <description>","New app description").addOption(Y()).addOption(Ae()).action(Eu),t.command("delete").description("Delete (or archive) an app. Use --dry-run to preview.").argument("[appId]","App ID (defaults to webflow.json or WEBFLOW_APP_ID)").addOption(Og()).addOption(Y()).addOption(Ae()).action(Fu)),t.command("environments").description("Manage the environments of a Webflow Cloud app").command("list").description("List the environments of an app").argument("[appId]","App ID (defaults to webflow.json or WEBFLOW_APP_ID)").addOption(xe([...ii()]).default(ra)).addOption(Y()).action(hu);let n=t.command("deployments").description("Inspect Webflow Cloud deployments");n.command("list").description("List the most recent deployments of an environment (newest first). Resolves the app + environment from WEBFLOW_APP_ID / WEBFLOW_APP_ENVIRONMENT_ID, webflow.json, or an interactive picker.").addOption(Rg()).addOption(Y()).addOption(xe([...vr()]).default(ai)).action(bu),n.command("get").description("Get details for a specific deployment. Resolves the app + environment from WEBFLOW_APP_ID / WEBFLOW_APP_ENVIRONMENT_ID, webflow.json, or an interactive picker.").argument("<depId>","Deployment ID").addOption(Y()).addOption(xe([...vr()]).default(ai)).action(vu);let o=t.command("logs").description("Read Webflow Cloud app logs");o.command("build").description("Read the build logs of a deployment. Resolves the app + environment from WEBFLOW_APP_ID / WEBFLOW_APP_ENVIRONMENT_ID, webflow.json, or an interactive picker.").argument("[depId]","Deployment ID (defaults to the latest deployment)").addOption(Y()).addOption(xe([...br()]).default(si)).option("--since <iso>","Only logs at or after this ISO datetime").option("--q <text>","Substring filter on the log message").addOption(Ac()).option("--cursor <cursor>","Pagination cursor from a previous nextCursor").action(yu),o.command("runtime").description("Read the runtime logs of an environment. Resolves the app from WEBFLOW_APP_ID / webflow.json (or a picker); the environment from the [envId] argument, WEBFLOW_APP_ENVIRONMENT_ID, webflow.json, or a picker.").argument("[envId]","Environment ID (defaults to the only env; required if the app has several)").addOption(Y()).addOption(xe([...br()]).default(si)).option("--since <iso>","Only logs at or after this ISO datetime").option("--q <text>","Substring filter on the log message").addOption(Ac()).option("--cursor <cursor>","Pagination cursor from a previous nextCursor").action(Du);let i=t.command("env-vars").description("Manage Webflow Cloud app environment variables");i.command("list").description("List environment variables for a Cloud app environment").addOption(jo()).addOption(No()).addOption(Y()).addOption(xe([...Yn()]).default(ci.join(","))).action(Iu),i.command("set").description("Create or update an environment variable. Use --secret to encrypt the value. Use --dry-run to preview.").argument("<key>","Variable name").argument("[value]","Variable value. Omit to read from piped stdin or be prompted (recommended for secrets, keeps them out of shell history).").addOption(jo()).addOption(No()).addOption(Sc()).addOption(Ae()).addOption(Y()).action(Ru),i.command("delete").description("Delete an environment variable. Use --dry-run to preview before executing.").argument("<key>","Variable name").addOption(jo()).addOption(No()).addOption(Ae()).addOption(Y()).action($u),i.command("import").description("Bulk import environment variables from a .env file. Use --secret to mark every key secret. Use --dry-run to preview.").argument("<file>","Path to a .env (KEY=value) file").addOption(jo()).addOption(No()).addOption(Sc()).addOption(Ae()).addOption(Y()).action(ju)};se();x();ot();x();function z(e,t){if(!/^[a-f0-9]{24}$/.test(e))throw new d(`Invalid ${t}: "${e}" is not a valid resource ID.`,{isUserError:!0})}async function $t(e){try{let t=await e.json();return t.message??t.error??`${e.status} ${e.statusText}`}catch{return`${e.status} ${e.statusText}`}}async function Bw(e,t){z(t,"siteId");let r=await j(`${F}/v2/sites/${t}/collections`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!r.ok){let o=await $t(r);throw r.status>=400&&r.status<500?new d(o,{isUserError:!0}):new d(`Failed to list collections: ${o}`)}return(await r.json()).collections??[]}async function Mw(e,t){z(t,"collectionId");let r=await j(`${F}/v2/collections/${t}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(r.status===404)throw new d(`Collection "${t}" not found`,{isUserError:!0});if(!r.ok)throw new d(`Failed to get collection: ${await $t(r)}`);let n=await r.json();return{...n,fields:n.fields??[]}}async function Ww(e,t,r){z(t,"siteId");let n={displayName:r.displayName,singularName:r.singularName};r.slug&&(n.slug=r.slug);let o=await j(`${F}/v2/sites/${t}/collections`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(n)});if(!o.ok){let i=await $t(o);throw o.status>=400&&o.status<500?new d(i,{isUserError:!0}):new d(`Failed to create collection: ${i}`)}return await o.json()}async function Uw(e,t,r){z(t,"collectionId");let n=await j(`${F}/v2/collections/${t}/fields`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({displayName:r.displayName,type:r.type,isRequired:r.isRequired??!1})});if(!n.ok){let o=await $t(n);throw n.status===404?new d(`Collection "${t}" not found`,{isUserError:!0}):n.status>=400&&n.status<500?new d(o,{isUserError:!0}):new d(`Failed to create field: ${o}`)}return await n.json()}async function Nu(e,t,r={}){z(t,"collectionId");let n=new URLSearchParams;r.limit!=null&&n.set("limit",String(r.limit)),r.offset!=null&&n.set("offset",String(r.offset)),r.cmsLocaleId&&n.set("cmsLocaleId",r.cmsLocaleId);let o=n.toString()?`?${n.toString()}`:"",i=await j(`${F}/v2/collections/${t}/items${o}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(i.status===404)throw new d(`Collection "${t}" not found`,{isUserError:!0});if(!i.ok)throw new d(`Failed to list items: ${await $t(i)}`);let s=await i.json();return{items:s.items??[],total:s.total??0,count:s.count??s.items?.length??0,limit:s.limit??r.limit??100,offset:s.offset??r.offset??0}}async function Vw(e,t,r,n){z(t,"collectionId"),z(r,"itemId");let o=n?`?cmsLocaleId=${encodeURIComponent(n)}`:"",i=await j(`${F}/v2/collections/${t}/items/${r}${o}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(i.status===404)throw new d(`Item "${r}" not found`,{isUserError:!0});if(!i.ok)throw new d(`Failed to get item: ${await $t(i)}`);return await i.json()}async function Lu(e,t,r,n=!1){z(t,"collectionId");let o=await j(`${F}/v2/collections/${t}/items`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({fieldData:r,isDraft:n})});if(!o.ok){let i=await $t(o);throw o.status>=400&&o.status<500?new d(i,{isUserError:!0}):new d(`Failed to create item: ${i}`)}return await o.json()}async function Bu(e,t,r,n){z(t,"collectionId"),z(r,"itemId");let o=await j(`${F}/v2/collections/${t}/items/${r}`,{method:"PATCH",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({fieldData:n})});if(o.status===404)throw new d(`Item "${r}" not found`,{isUserError:!0});if(!o.ok)throw new d(`Failed to update item: ${await $t(o)}`);return await o.json()}async function Hw(e,t,r){z(t,"collectionId"),z(r,"itemId");let n=await j(`${F}/v2/collections/${t}/items/${r}`,{method:"DELETE",headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(n.status===404)throw new d(`Item "${r}" not found`,{isUserError:!0});if(!n.ok)throw new d(`Failed to delete item: ${await $t(n)}`)}async function Jw(e,t,r){z(t,"collectionId"),r.forEach(o=>z(o,"itemId"));let n=await j(`${F}/v2/collections/${t}/items/publish`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({itemIds:r})});if(!n.ok){let o=await $t(n);throw n.status>=400&&n.status<500?new d(o,{isUserError:!0}):new d(`Failed to publish items: ${o}`)}return await n.json()}ie();U();ve();async function ua(e){if(e.site)return{token:await E(),siteId:e.site};let{manifest:t}=J(),r=await Ee(t);return{token:r.accessToken,siteId:r.siteId}}function Gw(e,t=["id","displayName","slug"]){if(e.length===0)return T("No collections found.");let r=["id","displayName","singularName","slug","lastUpdated"],n=Object.fromEntries(r.map(a=>[a.toLowerCase(),a])),o=t.map(a=>n[a.toLowerCase()]).filter(a=>a!=null);if(o.length===0)return Pt(`Invalid fields. Available: ${r.join(", ")}`);let i=o.map(a=>Q(a)),s=e.map(a=>o.map(c=>{let u=a[c];return u?c==="lastUpdated"?new Date(u).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):u:T("\u2014")}));return $e(i,s)}function zw(e){let t=[`${Q("Collection:")} ${e.displayName}`,`${Q("ID:")} ${e.id}`,`${Q("Slug:")} ${e.slug}`,`${Q("Singular:")} ${e.singularName}`,`${Q("Updated:")} ${new Date(e.lastUpdated).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}`,"",Q("Fields:")];if(e.fields.length===0)return t.push(T(" No fields defined.")),t.join(`
199
- `);let r=["NAME","SLUG","TYPE","REQUIRED"].map(o=>Q(o)),n=e.fields.map(o=>[o.displayName,o.slug,o.type,o.isRequired?"yes":"no"]);return t.push($e(r,n)),t.join(`
200
- `)}function Kw(e,t=["id","isDraft","lastUpdated"]){if(e.length===0)return T("No items found.");let r=t.map(o=>Q(o)),n=e.map(o=>t.map(i=>{if(i==="fieldData")return JSON.stringify(o.fieldData);if(i==="isDraft")return o.isDraft?ne("draft"):P("live");if(i==="isArchived")return o.isArchived?T("archived"):"";if(i==="lastUpdated"||i==="lastPublished"||i==="createdOn"){let a=o[i];return a?new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):T("\u2014")}let s=o[i];return s==null?T("\u2014"):String(s)}));return $e(r,n)}x();v();$();function da(e,t,r="asc"){return[...e].sort((n,o)=>{let i=n[t],s=o[t];if(i==null&&s==null)return 0;if(i==null)return 1;if(s==null)return-1;let a=0;return typeof i=="string"&&typeof s=="string"?a=i.localeCompare(s):typeof i=="number"&&typeof s=="number"?a=i-s:a=String(i).localeCompare(String(s)),r==="desc"?-a:a})}W();async function Mu(e){let{token:t,siteId:r}=await ua(e),n=b.forCms({authToken:t,siteId:r}),o=Date.now();try{let i=await Bw(t,r);if(await n.sendUsage("cms_collections_list",{duration:Date.now()-o,count:i.length}),i.length===0){l.info("No collections found.");return}let s=["displayName","slug","lastUpdated"];if(s.includes(e.sortBy)||(l.warn(`Unknown --sort-by "${e.sortBy}". Valid fields: ${s.join(", ")}. Defaulting to displayName.`),e.sortBy="displayName"),!["asc","desc"].includes(e.order))throw new d(`Invalid --order "${e.order}". Valid values: asc, desc`,{isUserError:!0});let a=da(i,e.sortBy,e.order);if(e.json){l.info(JSON.stringify(a,null,2));return}let c=e.fields.split(",").map(u=>u.trim());l.info(Gw(a,c))}catch(i){if(i instanceof d&&i.isUserError){l.info(`${D} ${i.message}`),process.exitCode=1;return}throw await n.sendError(i instanceof Error?i:new Error(String(i)),"cms_collections_list",{duration:Date.now()-o}),new d(i,{prefix:`${D} Failed to list collections:`})}}U();x();v();$();W();async function Wu(e,t){let r=await E(),n=b.forCms({authToken:r}),o=Date.now();try{let i=await Mw(r,e);if(await n.sendUsage("cms_collections_get",{duration:Date.now()-o}),t.json){l.info(JSON.stringify(i,null,2));return}l.info(zw(i))}catch(i){if(i instanceof d&&i.isUserError){l.info(`${D} ${i.message}`),process.exitCode=1;return}throw await n.sendError(i instanceof Error?i:new Error(String(i)),"cms_collections_get",{duration:Date.now()-o}),new d(i,{prefix:`${D} Failed to get collection:`})}}x();v();$();W();async function Uu(e){let t=e.singularName??e.name,r=e.slug??e.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");if(e.dryRun){l.info("Dry run \u2014 would create collection:"),l.info(JSON.stringify({displayName:e.name,singularName:t,slug:r},null,2)),l.info("Dry run complete \u2014 no changes made.");return}let{token:n,siteId:o}=await ua(e),i=b.forCms({authToken:n,siteId:o}),s=Date.now();try{let a=await Ww(n,o,{displayName:e.name,singularName:t,slug:r});if(await i.sendUsage("cms_collections_create",{duration:Date.now()-s}),e.json){l.info(JSON.stringify(a,null,2));return}l.info(`${O} Collection created: ${a.id}`),l.info(` Name: ${a.displayName}`),l.info(` Slug: ${a.slug}`),l.info(`
201
- Next: add fields with "webflow cms fields create --collection ${a.id} --name <name> --type <type>"`)}catch(a){if(a instanceof d&&a.isUserError){l.info(`${D} ${a.message}`),process.exitCode=1;return}throw await i.sendError(a instanceof Error?a:new Error(String(a)),"cms_collections_create",{duration:Date.now()-s}),new d(a,{prefix:`${D} Failed to create collection:`})}}U();x();v();$();W();async function Vu(e){if(e.dryRun){l.info("Dry run \u2014 would create field:"),l.info(JSON.stringify({collectionId:e.collection,displayName:e.name,type:e.type,isRequired:e.required??!1},null,2)),l.info("Dry run complete \u2014 no changes made.");return}let t=await E(),r=b.forCms({authToken:t}),n=Date.now();try{let o=await Uw(t,e.collection,{displayName:e.name,type:e.type,isRequired:e.required??!1});if(await r.sendUsage("cms_fields_create",{duration:Date.now()-n}),e.json){l.info(JSON.stringify(o,null,2));return}l.info(`${O} Field created: ${o.id}`),l.info(` Name: ${o.displayName}`),l.info(` Type: ${o.type}`),l.info(` Slug: ${o.slug}`)}catch(o){if(o instanceof d&&o.isUserError){l.info(`${D} ${o.message}`),process.exitCode=1;return}throw await r.sendError(o instanceof Error?o:new Error(String(o)),"cms_fields_create",{duration:Date.now()-n}),new d(o,{prefix:`${D} Failed to create field:`})}}U();x();v();$();W();async function Hu(e){let t=await E(),r=b.forCms({authToken:t}),n=Date.now(),o=e.limit??100,i=e.offset??0;try{let s=await Nu(t,e.collection,{limit:o,offset:i,cmsLocaleId:e.locale});if(await r.sendUsage("cms_items_list",{duration:Date.now()-n,count:s.items.length}),s.items.length===0){l.info("No items found.");return}if(e.json){l.info(JSON.stringify(s,null,2));return}let a=e.fields.split(",").map(f=>f.trim());l.info(Kw(s.items,a));let c=i+1,u=i+s.items.length;if(s.items.length>=o||i>0){let f=s.total>0?` of ${s.total}`:"";l.info(`
202
- Showing ${c}\u2013${u}${f} items. Use --offset ${u} to load next page.`)}}catch(s){if(s instanceof d&&s.isUserError){l.info(`${D} ${s.message}`),process.exitCode=1;return}throw await r.sendError(s instanceof Error?s:new Error(String(s)),"cms_items_list",{duration:Date.now()-n}),new d(s,{prefix:`${D} Failed to list items:`})}}U();x();v();$();W();async function Ju(e){let t=await E(),r=b.forCms({authToken:t}),n=Date.now();try{let o=await Vw(t,e.collection,e.item,e.locale);if(await r.sendUsage("cms_items_get",{duration:Date.now()-n}),e.json){l.info(JSON.stringify(o,null,2));return}let i=o.isArchived?"archived":o.isDraft?"draft":"live";l.info(`${o.id} [${i}]`),l.info(` Last updated: ${new Date(o.lastUpdated).toLocaleString()}`),o.lastPublished&&l.info(` Last published: ${new Date(o.lastPublished).toLocaleString()}`),l.info(" Fields:"),l.info(JSON.stringify(o.fieldData,null,4).replace(/^/gm," "))}catch(o){if(o instanceof d&&o.isUserError){l.info(`${D} ${o.message}`),process.exitCode=1;return}throw await r.sendError(o instanceof Error?o:new Error(String(o)),"cms_items_get",{duration:Date.now()-n}),new d(o,{prefix:`${D} Failed to get item:`})}}U();x();v();$();W();async function Gu(e){let t;try{t=JSON.parse(e.data)}catch{throw new d(`Invalid JSON for --data: ${e.data}`)}if(e.dryRun){l.info("Dry run \u2014 would create item:"),l.info(JSON.stringify({fieldData:t,isDraft:e.draft??!1},null,2)),l.info("Dry run complete \u2014 no changes made.");return}let r=await E(),n=b.forCms({authToken:r}),o=Date.now();try{let i=await Lu(r,e.collection,t,e.draft??!1);if(await n.sendUsage("cms_items_create",{duration:Date.now()-o,dryRun:!1}),e.json){l.info(JSON.stringify(i,null,2));return}l.info(`${O} Item created: ${i.id}`)}catch(i){if(i instanceof d&&i.isUserError){l.info(`${D} ${i.message}`),process.exitCode=1;return}throw await n.sendError(i instanceof Error?i:new Error(String(i)),"cms_items_create",{duration:Date.now()-o}),new d(i,{prefix:`${D} Failed to create item:`})}}U();x();v();$();W();async function zu(e){let t;try{t=JSON.parse(e.data)}catch{throw new d(`Invalid JSON for --data: ${e.data}`)}if(e.dryRun){l.info("Dry run \u2014 would update item:"),l.info(JSON.stringify({collectionId:e.collection,itemId:e.item,fieldData:t},null,2)),l.info("Dry run complete \u2014 no changes made.");return}let r=await E(),n=b.forCms({authToken:r}),o=Date.now();try{let i=await Bu(r,e.collection,e.item,t);if(await n.sendUsage("cms_items_update",{duration:Date.now()-o,dryRun:!1}),e.json){l.info(JSON.stringify(i,null,2));return}l.info(`${O} Item updated: ${i.id}`)}catch(i){if(i instanceof d&&i.isUserError){l.info(`${D} ${i.message}`),process.exitCode=1;return}throw await n.sendError(i instanceof Error?i:new Error(String(i)),"cms_items_update",{duration:Date.now()-o}),new d(i,{prefix:`${D} Failed to update item:`})}}U();x();v();$();W();async function Ku(e){if(e.dryRun){l.info(`Dry run \u2014 would delete item ${e.item} from collection ${e.collection}`),l.info("Dry run complete \u2014 no changes made.");return}let t=await E(),r=b.forCms({authToken:t}),n=Date.now();try{await Hw(t,e.collection,e.item),await r.sendUsage("cms_items_delete",{duration:Date.now()-n,dryRun:!1}),l.info(`${O} Item deleted: ${e.item}`)}catch(o){if(o instanceof d&&o.isUserError){l.info(`${D} ${o.message}`),process.exitCode=1;return}throw await r.sendError(o instanceof Error?o:new Error(String(o)),"cms_items_delete",{duration:Date.now()-n}),new d(o,{prefix:`${D} Failed to delete item:`})}}U();x();v();$();W();async function qu(e){let t=e.items.split(",").map(i=>i.trim());if(e.dryRun){l.info(`Dry run \u2014 would publish ${t.length} item(s) in collection ${e.collection}:`),t.forEach(i=>l.info(` ${i}`)),l.info("Dry run complete \u2014 no changes made.");return}let r=await E(),n=b.forCms({authToken:r}),o=Date.now();try{let i=await Jw(r,e.collection,t);if(await n.sendUsage("cms_items_publish",{duration:Date.now()-o,itemCount:t.length,dryRun:!1}),e.json){l.info(JSON.stringify(i,null,2));return}let s=i.publishedItemIds?.length??0;l.info(`${O} Published ${s} item(s)`),i.errors?.length&&i.errors.forEach(a=>l.warn(` ${a.itemId}: ${a.message}`))}catch(i){if(i instanceof d&&i.isUserError){l.info(`${D} ${i.message}`),process.exitCode=1;return}throw await n.sendError(i instanceof Error?i:new Error(String(i)),"cms_items_publish",{duration:Date.now()-o}),new d(i,{prefix:`${D} Failed to publish items:`})}}var qw=e=>{let t=e.command("cms").description("Manage Webflow CMS content"),r=t.command("collections").description("Manage CMS collections");r.command("list").description("List all CMS collections for a site").addOption(Xe()).addOption(Y()).addOption(xe(["id","displayName","singularName","slug","lastUpdated"]).default("id,displayName,slug")).addOption(Fs(["displayName","slug","lastUpdated"]).default("displayName")).addOption(Es()).action(Mu),r.command("get").description("Get details and field schema for a CMS collection").argument("<collectionId>","Collection ID").addOption(Y()).action(Wu),r.command("create").description("Create a new CMS collection on a site. Use --dry-run to preview.").addOption(Xe()).requiredOption("--name <displayName>","Collection display name").option("--singular-name <singularName>","Singular name (defaults to --name)").option("--slug <slug>","URL slug for the collection (auto-derived from --name if omitted)").addOption(Ae()).addOption(Y()).action(Uu),t.command("fields").description("Manage CMS collection fields").command("create").description("Add a field to a CMS collection. Use --dry-run to preview.").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--name <displayName>","Field display name").requiredOption("--type <type>","Field type (e.g. PlainText, RichText, Number, DateTime, Link, Image, Video, Color, Bool, Option, ItemRef, ItemRefSet)").option("--required","Mark field as required").addOption(Ae()).addOption(Y()).action(Vu);let o=t.command("items").description("Manage CMS items");o.command("list").description("List items in a CMS collection").requiredOption("--collection <collectionId>","Collection ID").option("--locale <cmsLocaleId>","CMS locale ID to filter by").addOption(xs()).addOption(_s()).addOption(Y()).addOption(xe(["id","isDraft","isArchived","lastUpdated","fieldData"]).default("id,isDraft,lastUpdated")).action(Hu),o.command("get").description("Get a single CMS item by ID").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--item <itemId>","Item ID").option("--locale <cmsLocaleId>","CMS locale ID to retrieve content for").addOption(Y()).action(Ju),o.command("create").description("Create a new CMS item. Use --dry-run to preview before executing.").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--data <json>","Item field data as a JSON string").option("--draft","Create as draft (not published)").addOption(Ae()).addOption(Y()).action(Gu),o.command("update").description("Update an existing CMS item. Use --dry-run to preview before executing.").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--item <itemId>","Item ID").requiredOption("--data <json>","Updated field data as a JSON string").addOption(Ae()).addOption(Y()).action(zu),o.command("delete").description("Delete a CMS item. Use --dry-run to preview before executing.").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--item <itemId>","Item ID").addOption(Ae()).action(Ku),o.command("publish").description("Publish one or more CMS items. Use --dry-run to preview before executing.").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--items <itemIds>","Comma-separated item IDs to publish").addOption(Ae()).addOption(Y()).action(qu)};U();ie();x();v();$();ve();W();se();ot();x();x();ie();var Zw={png:{category:"image",maxBytes:4*1024*1024},jpeg:{category:"image",maxBytes:4*1024*1024},jpg:{category:"image",maxBytes:4*1024*1024},gif:{category:"image",maxBytes:4*1024*1024},svg:{category:"image",maxBytes:4*1024*1024},webp:{category:"image",maxBytes:4*1024*1024},avif:{category:"image",maxBytes:4*1024*1024},pdf:{category:"document",maxBytes:10*1024*1024},doc:{category:"document",maxBytes:10*1024*1024},docx:{category:"document",maxBytes:10*1024*1024},xls:{category:"document",maxBytes:10*1024*1024},xlsx:{category:"document",maxBytes:10*1024*1024},ppt:{category:"document",maxBytes:10*1024*1024},pptx:{category:"document",maxBytes:10*1024*1024},txt:{category:"document",maxBytes:10*1024*1024},csv:{category:"document",maxBytes:10*1024*1024},odt:{category:"document",maxBytes:10*1024*1024},ods:{category:"document",maxBytes:10*1024*1024},odp:{category:"document",maxBytes:10*1024*1024},json:{category:"lottie",maxBytes:10*1024*1024},lottie:{category:"lottie",maxBytes:10*1024*1024}};function pa(e,t){let r=e.split(".").pop()?.toLowerCase()??"",n=Zw[r];if(!n){let o=Object.keys(Zw).join(", ");throw new d(`Unsupported file type ".${r}". Allowed types: ${o}`,{isUserError:!0})}if(t>n.maxBytes){let o=n.maxBytes/1048576,i=(t/(1024*1024)).toFixed(1);throw new d(`File too large: ${i} MB exceeds the ${o} MB limit for ${n.category} files.`,{isUserError:!0})}}var Zu=["id","displayName","originalFileName","contentType","size","lastUpdated"];function Yw(e,t=["id","displayName","lastUpdated","size"]){if(e.length===0)return T("No assets found.");let r=Object.fromEntries(Zu.map(c=>[c.toLowerCase(),c])),n=t.map(c=>r[c.toLowerCase()]).filter(c=>c!=null);if(n.length===0)return Pt(`Invalid fields. Available: ${Zu.join(", ")}`);let o=t.filter(c=>r[c.toLowerCase()]==null),i=o.length>0?ne(`Warning: unknown field(s) ignored: ${o.join(", ")}. Available: ${Zu.join(", ")}
203
- `):"",s=n.map(c=>Q(c)),a=e.map(c=>n.map(u=>{let p=c[u];if(p==null||u==="size"&&p===0)return T("\u2014");if(u==="size")return ox(Number(p));if(u==="lastUpdated"){let m=new Date(String(p)),g=String(m.getMonth()+1).padStart(2,"0"),w=String(m.getDate()).padStart(2,"0"),I=String(m.getFullYear()).slice(-2),C=String(m.getHours()).padStart(2,"0"),q=String(m.getMinutes()).padStart(2,"0");return`${g}/${w}/${I} ${C}:${q}`}let f=String(p);return u==="displayName"&&f.length>40?T("\u2026")+f.slice(-39):f}));return i+$e(s,a)}function ox(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function Xw(e){if(e.length===0)return T("No folders found.");let t=[...e].sort((o,i)=>o.displayName.localeCompare(i.displayName)),r=["id","displayName","assets","lastUpdated"].map(o=>Q(o)),n=t.map(o=>[o.id,o.displayName,String(o.assets.length),new Date(o.lastUpdated).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1})]);return $e(r,n)}async function Qw(e,t,r={}){if(z(t,"siteId"),r.folderId){z(r.folderId,"folderId");let a=await ix(e,r.folderId),c=new Set(a.assets);if(c.size===0)return{assets:[],pagination:{total:0,limit:0,offset:0}};let u=[],p=0,f=100;for(;;){let C=await j(`${F}/v2/sites/${t}/assets?limit=${f}&offset=${p}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!C.ok)throw new d(`Failed to list assets: ${C.status} ${C.statusText}`);let q=await C.json(),Z=q.assets??[];u.push(...Z);let S=q.pagination?.total??0;if(p+=Z.length,p>=S||Z.length===0)break}let m=u.filter(C=>c.has(C.id)),g=r.offset??0,w=r.limit??m.length,I=m.slice(g,g+w);return{assets:I,pagination:{total:m.length,limit:I.length,offset:g}}}let n=new URLSearchParams;r.limit!=null&&n.set("limit",String(r.limit)),r.offset!=null&&n.set("offset",String(r.offset));let o=n.toString(),i=await j(`${F}/v2/sites/${t}/assets${o?`?${o}`:""}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!i.ok)throw new d(`Failed to list assets: ${i.status} ${i.statusText}`);let s=await i.json();return{assets:s.assets??[],pagination:s.pagination??{total:0,limit:100,offset:0}}}async function ey(e,t,r,n,o){z(t,"siteId"),o&&z(o,"folderId");let i=So(r);pa(i.meta.title,i.meta.size);let s=n??i.meta.title,a={fileName:i.meta.title,fileHash:i.meta.fileHash,displayName:s};o&&(a.parentFolder=o);let c=await j(`${F}/v2/sites/${t}/assets`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(a)});if(!c.ok)throw new d(`Failed to initiate asset upload: ${c.status} ${c.statusText}`);let u=await c.json(),p={fields:u.uploadDetails,_id:u.id,s3Url:u.hostedUrl??"",url:u.uploadUrl??"",contentType:u.contentType??"",origFileName:u.originalFileName??i.meta.title,success_action_redirect:"",createdOn:"",updatedOn:""};try{await To(i,p)}catch(f){throw await j(`${F}/v2/assets/${p._id}`,{method:"DELETE",headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}}).catch(()=>{}),f}return{id:p._id,hostedUrl:p.s3Url,displayName:s,originalFileName:i.meta.title}}async function ty(e,t,r){z(t,"assetId");let n=await j(`${F}/v2/assets/${t}`,{method:"PATCH",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(r)});if(!n.ok)throw new d(`Failed to update asset: ${n.status} ${n.statusText}`);return await n.json()}async function ix(e,t){z(t,"folderId");let r=await j(`${F}/v2/asset_folders/${t}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!r.ok)throw new d(`Failed to get folder: ${r.status} ${r.statusText}`);return await r.json()}async function ry(e,t){z(t,"siteId");let r=await j(`${F}/v2/sites/${t}/asset_folders`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!r.ok)throw new d(`Failed to list folders: ${r.status} ${r.statusText}`);return(await r.json()).assetFolders??[]}async function ny(e,t,r,n){z(t,"siteId"),n&&z(n,"parentFolderId");let o={displayName:r};n&&(o.parentFolder=n);let i=await j(`${F}/v2/sites/${t}/asset_folders`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(o)});if(!i.ok)throw new d(`Failed to create folder: ${i.status} ${i.statusText}`);return await i.json()}async function Yu(e){let t,r;if(e.site)t=await E(),r=e.site;else{let{manifest:i}=J(),s=await Ee(i);t=s.accessToken,r=s.siteId}let n=b.forAssets({authToken:t,siteId:r}),o=Date.now();try{let{assets:i,pagination:s}=await Qw(t,r,{limit:e.limit,offset:e.offset,folderId:e.folder});if(await n.sendUsage("assets_list",{duration:Date.now()-o,count:i.length}),i.length===0){l.info("No assets found.");return}let a=["displayName","originalFileName","contentType","size","lastUpdated"],c=e.sortBy;a.includes(c)||(l.warn(`Unknown --sort-by "${e.sortBy}". Valid fields: ${a.join(", ")}. Defaulting to displayName.`),c="displayName");let u=e.order;["asc","desc"].includes(e.order)||(l.warn(`Unknown --order "${e.order}". Valid values: asc, desc. Defaulting to asc.`),u="asc");let p=da(i,c,u);if(e.json){l.info(JSON.stringify({assets:p,pagination:s},null,2));return}let f=e.fields.split(",").map(g=>g.trim());l.info(Yw(p,f));let m=(e.offset??0)+i.length;m<s.total&&l.info(T(`Showing ${m} of ${s.total} assets. Use --offset ${m} to see more.`))}catch(i){throw await n.sendError(i instanceof Error?i:new Error(String(i)),"assets_list",{duration:Date.now()-o}),new d(i,{prefix:`${D} Failed to list assets:`})}}U();x();v();$();ve();W();async function Xu(e,t){let r=So(e);if(pa(r.meta.title,r.meta.size),t.dryRun){l.info(`Dry run \u2014 would upload: ${e} (validated)`),t.name&&l.info(` Display name: ${t.name}`),t.folder&&l.info(` Folder: ${t.folder}`),l.info("Dry run complete \u2014 no changes made.");return}let n,o;if(t.site)n=await E(),o=t.site;else{let{manifest:a}=J(),c=await Ee(a);n=c.accessToken,o=c.siteId}let i=b.forAssets({authToken:n,siteId:o}),s=Date.now();try{let a=await ey(n,o,e,t.name,t.folder);if(await i.sendUsage("assets_upload",{duration:Date.now()-s,dryRun:!1}),t.json){l.info(JSON.stringify(a,null,2));return}l.info(`${O} Asset uploaded: ${a.id}`),a.hostedUrl&&l.info(` URL: ${a.hostedUrl}`)}catch(a){throw await i.sendError(a instanceof Error?a:new Error(String(a)),"assets_upload",{duration:Date.now()-s}),new d(a,{prefix:`${D} Failed to upload asset:`})}}U();x();v();$();W();async function Qu(e,t){if(!t.altText&&!t.displayName)throw new d("Provide at least one of --alt-text or --display-name.",{isUserError:!0});if(t.dryRun){l.info(`Dry run \u2014 would update asset: ${e}`),t.altText&&l.info(` Alt text: ${t.altText}`),t.displayName&&l.info(` Display name: ${t.displayName}`),l.info("Dry run complete \u2014 no changes made.");return}let r=await E(),n=b.forAssets({authToken:r}),o=Date.now();try{let i=await ty(r,e,{altText:t.altText,displayName:t.displayName});if(await n.sendUsage("assets_update",{duration:Date.now()-o,dryRun:!1}),t.json){l.info(JSON.stringify(i,null,2));return}l.info(`${O} Asset updated: ${i.id}`),i.displayName&&l.info(` Display name: ${i.displayName}`),i.altText&&l.info(` Alt text: ${i.altText}`)}catch(i){throw await n.sendError(i instanceof Error?i:new Error(String(i)),"assets_update",{duration:Date.now()-o}),new d(i,{prefix:`${D} Failed to update asset:`})}}U();x();v();$();ve();W();async function ed(e){let t,r;if(e.site)t=await E(),r=e.site;else{let{manifest:i}=J(),s=await Ee(i);t=s.accessToken,r=s.siteId}let n=b.forAssets({authToken:t,siteId:r}),o=Date.now();try{let i=await ry(t,r);if(await n.sendUsage("assets_folders_list",{duration:Date.now()-o,count:i.length}),e.json){l.info(JSON.stringify(i,null,2));return}l.info(Xw(i))}catch(i){throw await n.sendError(i instanceof Error?i:new Error(String(i)),"assets_folders_list",{duration:Date.now()-o}),new d(i,{prefix:`${D} Failed to list folders:`})}}U();x();v();$();ao();W();async function td(e,t){let r,n;if(t.site)r=await E(),n=t.site;else{let{manifest:s}=J(),a=await Ee(s);r=a.accessToken,n=a.siteId}let o=b.forAssets({authToken:r,siteId:n}),i=Date.now();try{let s=await ny(r,n,e,t.parent);if(await o.sendUsage("assets_folders_create",{duration:Date.now()-i}),t.json){l.info(JSON.stringify(s,null,2));return}l.info(`${O} Folder created: ${s.id}`),l.info(` Name: ${s.displayName}`),s.parentFolder&&l.info(` Parent: ${s.parentFolder}`)}catch(s){throw await o.sendError(s instanceof Error?s:new Error(String(s)),"assets_folders_create",{duration:Date.now()-i}),new d(s,{prefix:`${D} Failed to create folder:`})}}var oy=e=>{let t=e.command("assets").description("Manage Webflow site assets");t.command("list").description("List all assets for a site").addOption(Xe()).option("--folder <folderId>","Filter by folder ID").addOption(Y()).addOption(xe(["id","displayName","originalFileName","contentType","size","lastUpdated"]).default("id,displayName,lastUpdated,size")).addOption(xs()).addOption(_s()).addOption(Fs(["displayName","originalFileName","contentType","size","lastUpdated"]).default("displayName")).addOption(Es()).action(Yu),t.command("upload").description(`Upload a file as an asset. Use --dry-run to preview before uploading.
204
- Supported types: png, jpg, jpeg, gif, svg, webp, avif (\u22644 MB); pdf, doc, docx, xls, xlsx, ppt, pptx, txt, csv, odt, ods, odp, json, lottie (\u226410 MB)`).argument("<file>","Path to the file to upload (see supported types above)").addOption(Xe()).option("--name <displayName>","Display name for the asset (defaults to filename)").option("--folder <folderId>","Upload into a folder").addOption(Ae()).addOption(Y()).action(Xu),t.command("update").description("Update an asset's metadata. Use --dry-run to preview.").argument("<assetId>","Asset ID to update").option("--alt-text <text>","Alt text for the asset").option("--display-name <name>","New display name for the asset").addOption(Ae()).addOption(Y()).action(Qu);let r=t.command("folders").description("Manage asset folders");r.command("list").description("List all asset folders for a site").addOption(Xe()).addOption(Y()).action(ed),r.command("create").description("Create a new asset folder").argument("<name>","Display name for the folder").addOption(Xe()).option("--parent <folderId>","Parent folder ID (creates a nested folder)").addOption(Y()).action(td)};U();x();v();$();W();se();x();ot();ot();x();async function ui(e,t,r,n){let o=[],i=0,s=100;for(;;){let a=new URL(e);a.searchParams.set("limit",String(s)),a.searchParams.set("offset",String(i));let c=await j(a.toString(),{headers:{Authorization:`Bearer ${t}`,Accept:"application/json"}});if(!c.ok)throw new d(`${n}: ${c.status} ${c.statusText}`);let u=await c.json(),p=u[r]??[];o.push(...p);let f=u.pagination?.total??p.length;if(i+=p.length,i>=f||p.length<s)break}return o}async function iy(e,t){z(t,"siteId");let r=await j(`${F}/v2/sites/${t}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!r.ok)throw new d(`Failed to get site: ${r.status} ${r.statusText}`);return await r.json()}async function sy(e){return ui(`${F}/v2/sites`,e,"sites","Failed to list sites")}async function ay(e,t){z(t,"siteId");let r=await j(`${F}/v2/sites/${t}/custom_domains`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!r.ok)throw new d(`Failed to get custom domains: ${r.status} ${r.statusText}`);return(await r.json()).customDomains??[]}async function ly(e,t,r=[],n){z(t,"siteId"),n&&z(n,"pageId");let o=r.length>0?{customDomains:r}:{publishToWebflowSubdomain:!0};n&&(o.pageId=n);let i=await j(`${F}/v2/sites/${t}/publish`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(o)});if(!i.ok)throw new d(`Failed to publish site: ${i.status} ${i.statusText}`);return await i.json()}x();ie();var rd=["id","displayName","shortName","lastPublished","lastUpdated","timeZone"],cy=qe(rd);function uy(){return rd}function dy(e,t=["id","displayName","lastPublished"]){if(e.length===0)return T("No sites found.");if(t.length===0)throw new d(`No valid fields specified. Available: ${rd.join(", ")}`,{isUserError:!0});let r=t.map(o=>Q(o)),n=e.map(o=>t.map(i=>{let s=o[i];return s?i==="lastPublished"||i==="lastUpdated"?new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):s:T("\u2014")}));return $e(r,n)}function py(e){if(e.length===0)return T("No custom domains configured.");let t=[Q("id"),Q("url"),Q("lastPublished")],r=e.map(n=>[n.id,n.url,n.lastPublished?new Date(n.lastPublished).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):T("\u2014")]);return $e(t,r)}async function nd(e){let t=await E(),r=b.forSites({authToken:t}),n=Date.now();try{let o=await sy(t);if(await r.sendUsage("sites_list",{duration:Date.now()-n,count:o.length}),e.json){l.info(JSON.stringify(o,null,2));return}if(o.length===0){l.info("No sites found.");return}let i=ce(e.fields,cy,uy());l.info(dy(o,i))}catch(o){throw o instanceof d&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"sites_list",{duration:Date.now()-n}),new d(o,{prefix:`${D} Failed to list sites:`}))}}U();x();v();$();W();async function od(e,t){let r=await E(),n=b.forSites({authToken:r}),o=Date.now();try{let i=await iy(r,e);if(await n.sendUsage("sites_get",{duration:Date.now()-o}),t.json){l.info(JSON.stringify(i,null,2));return}l.info(`${i.displayName} (${i.id})`),l.info(` Short name: ${i.shortName}`),l.info(` Time zone: ${i.timeZone}`),i.lastPublished&&l.info(` Published: ${new Date(i.lastPublished).toLocaleString()}`),i.previewUrl&&l.info(` Preview: ${i.previewUrl}`)}catch(i){throw i instanceof d&&i.isUserError?i:(await n.sendError(i instanceof Error?i:new Error(String(i)),"sites_get",{duration:Date.now()-o}),new d(i,{prefix:`${D} Failed to get site:`}))}}U();x();v();$();W();async function id(e){let t=await E(),r=b.forSites({authToken:t}),n=Date.now();try{let o=await ay(t,e.site);if(await r.sendUsage("sites_domains",{duration:Date.now()-n,count:o.length}),e.json){l.info(JSON.stringify(o,null,2));return}l.info(py(o))}catch(o){throw o instanceof d&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"sites_domains",{duration:Date.now()-n}),new d(o,{prefix:`${D} Failed to get custom domains:`}))}}U();x();v();$();W();async function sd(e){if(z(e.site,"siteId"),e.dryRun){l.info(`Would publish ${e.page?`page ${e.page} on`:"site"} ${e.site}`),e.domains?l.info(` Custom domains: ${e.domains}`):l.info(" Domains: Webflow subdomain");return}let t=await E(),r=b.forSites({authToken:t}),n=Date.now();try{let o=e.domains?e.domains.split(",").map(c=>c.trim()):[],i=await ly(t,e.site,o,e.page);if(await r.sendUsage("sites_publish",{duration:Date.now()-n,dryRun:!1,publishScope:i.publishScope}),e.json){l.info(JSON.stringify(i,null,2));return}let s=i.publishScope==="page"?"Page":"Site";l.info(`${O} ${s} published successfully`);let a=i.customDomains??[];a.length>0?a.forEach(c=>{let u=c.lastPublished?` (${new Date(c.lastPublished).toLocaleString()})`:"";l.info(` Live at: https://${c.url}${u}`)}):i.publishToWebflowSubdomain&&l.info(" Published to Webflow subdomain")}catch(o){throw o instanceof d&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"sites_publish",{duration:Date.now()-n}),new d(o,{prefix:`${D} Failed to publish site:`}))}}var fy=e=>{let t=e.command("sites").description("Manage Webflow sites");t.command("list").description("List all sites in your Webflow workspace").addOption(Y()).addOption(xe(["id","displayName","shortName","lastPublished","lastUpdated","timeZone"]).default("id,displayName,lastPublished")).action(nd),t.command("get").description("Get details for a specific site").argument("<siteId>","Site ID").addOption(Y()).action(od),t.command("domains").description("List custom domains configured for a site").requiredOption("--site <siteId>","Site ID").addOption(Y()).action(id),t.command("publish").description("Publish a Webflow site (defaults to Webflow subdomain)").requiredOption("--site <siteId>","Site ID to publish").option("--domains <domains>","Comma-separated custom domain IDs to publish to").option("--page <pageId>","Publish a single page instead of the whole site").addOption(Ae()).addOption(Y()).action(sd)};U();x();v();$();W();se();async function my(e,t){return z(t,"siteId"),ui(`${F}/v2/sites/${t}/forms`,e,"forms","Failed to list forms")}async function gy(e,t,r){return z(t,"siteId"),z(r,"formId"),ui(`${F}/v2/sites/${t}/forms/${r}/submissions`,e,"formSubmissions","Failed to list submissions")}x();ie();var ad=["id","displayName","name","slug","createdOn","lastUpdated"],hy=qe(ad);function wy(){return ad}function yy(e,t=["id","displayName","slug"]){if(e.length===0)return T("No forms found.");if(t.length===0)throw new d(`No valid fields specified. Available: ${ad.join(", ")}`,{isUserError:!0});let r=t.map(o=>Q(o)),n=e.map(o=>t.map(i=>{let s=o[i];return s?i==="createdOn"||i==="lastUpdated"?new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):s:T("\u2014")}));return $e(r,n)}function Dy(e){if(e.length===0)return T("No submissions found.");let t=Array.from(new Set(e.flatMap(o=>Object.keys(o.formResponse)))),r=["id","dateSubmitted",...t].map(o=>Q(o)),n=e.map(o=>[o.id,new Date(o.dateSubmitted).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),...t.map(i=>{let s=o.formResponse[i];return s==null?T("\u2014"):typeof s=="object"?JSON.stringify(s):String(s)})]);return $e(r,n)}function by(e){if(e.length===0)return"";let r=["id","formId","displayName","dateSubmitted",...Array.from(new Set(e.flatMap(i=>Object.keys(i.formResponse))))],n=i=>{let s=i==null?"":typeof i=="object"?JSON.stringify(i):String(i);return s.includes(",")||s.includes('"')||s.includes(`
176
+ Or run 'webflow cloud init' to scaffold a new app.`);return UT(t)}async function wE(e,t){return{credentials:await Ue(e,{site:t})}}async function DE(e){let t=await T();return{workspaceId:e,credentials:{accessToken:t,siteId:""}}}async function BT(){let e=await T(),t=await Rc(e);if(t.length===0)throw new rn("No workspaces found in your account. Please make sure you have at least one workspace.");let r=await Ic(t);return xe({cloud:{workspace_id:r.id}}),{workspaceId:r.id,credentials:{accessToken:e,siteId:""}}}async function UT(e){let t=await Be({message:"This app isn't initialized for Webflow Cloud. How would you like to deploy?",choices:[{name:"Create a new app",value:"standalone"},{name:"Attach to an existing Webflow site",value:"site-attached"},{name:"Cancel",value:"cancel"}]});if(t==="cancel"||!t)throw new f("Deploy cancelled.",{skipLogging:!0});return t==="standalone"?BT():{credentials:await Ue(e,{})}}async function Vf(e){try{if(e.appName!==void 0&&e.projectName!==void 0)throw new f("--app-name and --project-name are aliases of the same option. Pass exactly one (--app-name is preferred; --project-name is deprecated).");if(e.appId!==void 0&&e.projectId!==void 0)throw new f("--app-id and --project-id are aliases of the same option. Pass exactly one (--app-id is preferred; --project-id is deprecated).");e.projectName!==void 0&&sa("--project-name","--app-name"),e.projectId!==void 0&&sa("--project-id","--app-id");let t=e.appName??e.projectName,r=e.appId??e.projectId;if(e.directory)try{process.chdir(e.directory),u.info(`Changed directory to: ${e.directory}`)}catch(m){throw u.error(`Error: Could not change to directory ${e.directory}`),new f(m)}if(e.framework){if(!ra.includes(e.framework))throw new f(`Framework "${e.framework}" is not supported. Allowed: ${ra.join(", ")}.`);xe({cloud:{framework:e.framework}})}let n=await kE({siteId:e.siteId,workspaceId:e.workspaceId}),{workspaceId:o}=n,{credentials:i,manifest:s}=n,a=!!o;if(o){let m=bE.default.basename(process.cwd()).trim(),w=m.length>=Nr&&m.length<=jr,k=t??(w?m:"Cloud App");if(k.length<Nr||k.length>jr)throw new f(`App name must be between ${Nr} and ${jr} characters (got ${k.length}).
177
+ Use --app-name to provide a valid name.`);let F=u.spinner("Creating Cloud app...");try{let E=await yE({accessToken:i.accessToken,workspaceId:o,displayName:k});F.succeed(`Cloud app created: ${E.cloudApp.displayName}`),xe({siteId:E.cloudApp.siteId,cloud:{...s.cloud,app_id:E.cloudApp.project.id,environment_id:E.cloudApp.environment.id}}),Or({siteId:E.cloudApp.siteId,directory:"."}),process.env.WEBFLOW_SITE_ID=E.cloudApp.siteId,{manifest:s}=Z()}catch(E){throw F.fail("Failed to create app"),new f(E,{prefix:"Could not create app:"})}let A=s.siteId;if(!A)throw new f("Expected siteId in manifest after Cloud app creation.");i={accessToken:i.accessToken,siteId:A}}let l;try{l=_.forCloud({authToken:i.accessToken,siteId:i.siteId})}catch(m){u.debug(`Failed to initialize telemetry: ${m}`)}let c=await kn("appId",{flagValue:r,manifest:s}),d,p,h=t,g=e.description;if(e.environment&&e.mount){if(d=e.environment,p=En(e.mount),!ia(p))throw new f("Invalid mount path: "+p)}else{let m=[];if(!c){if(!h&&W())throw new f("When --no-input mode is enabled, provide --app-name to create an app, or provide --app-id, set WEBFLOW_APP_ID, or set cloud.app_id in webflow.json to deploy to an existing app.");try{let k=await oE(i);if(k.projects.length>0){let F=await Be({message:"Select an app to deploy to:",choices:[...k.projects.map(A=>({name:`${A.name} (${A.description||"No description"})`,value:A.id})),{name:"Create new app",value:null}]});F?(c=F,xe({cloud:{app_id:F}}),u.info(`${L} App ID updated in webflow.json`)):u.info("Creating a new app will be handled during deployment.")}else u.info(`
178
+ No existing apps found. A new app will be created during deployment.`)}catch(k){u.warn("Could not fetch existing apps. A new app will be created during deployment."),u.warn(k instanceof Error?k.message:String(k))}}if(!c&&!h&&(h=await Je({message:"What would you like to name your new app?",default:"New Webflow Cloud App",validate:k=>k.trim()===""?"App name cannot be empty":!0})),c)try{let F=(await nE(i,c)).environments.map(A=>({name:`${A.branch} (${A.mount})`,value:{branch:A.branch,mount:A.mount}}));m.push(...F)}catch(k){throw new f(k,{prefix:"Error fetching app environments:"})}m.push({name:"Create new environment",value:null});let w=await Be({message:"Select an environment to deploy to:",choices:m});if(w)d=w.branch,p=En(w.mount);else if(e.environment?d=e.environment:d=await Je({message:"What environment would you like to deploy to?",default:"main",validate:k=>k.trim()===""?"Environment cannot be empty":!0}),e.mount)p=En(e.mount);else{let k=await Je({message:"What path should this environment be mounted at? (e.g., /app)",default:"/app"});p=En(k)}}if(!ia(p))throw new f("Invalid mount path: "+p);await EE(i,d,p,{projectName:h,description:g,directory:e.directory,skipMountPathCheck:a||e.skipMountPathCheck,autoPublish:e.autoPublish,telemetry:l,appId:c})}catch(t){throw new f(t,{prefix:"Error during deployment setup:"})}}var aa=null;process.once("exit",()=>aa?.());var vE=(e,t,r)=>t instanceof Nn?"no-sites":t instanceof rn?"no-workspaces":e==="auth"?"auth":e==="workspaces"&&r===we.New?"no-workspaces":"unknown",_i=async()=>{try{let e=mf(),t=gf();return[...new Set([...e,...t])]}catch(e){return u.error(e,{prefix:"Failed to get available scaffolds:"}),[]}},WT=async(e,t,r)=>{let n;if("content"in r)n=r.content.files;else{let l=r[t];if(!l)throw new Error(`Scaffold "${t}" not found`);n=l}let o=n.find(l=>l.includes(Un));if(!o)throw new Error(`No ${Un} found in scaffold "${t}"`);await Pc.promises.mkdir(e,{recursive:!0});let s=(await Pc.promises.readFile(o,"utf8")).replace(gc,e),a=po.join(e,Un);await Pc.promises.writeFile(a,s,"utf8")},Oc=async(e,t,r=mc,n,o=we.Existing,i)=>{if(o===we.New){try{let s=await wf(r);await HT(e,t,s.scaffoldId,{content:s},r,i)}catch(s){if(s instanceof qe){let a=s.message;throw s.supportedIds?.length&&(a+=`
179
+ Available frameworks: ${s.supportedIds.join(", ")}`),new f(a)}throw s}return}try{let s=await yc(r);await VT(e,t,r,{content:s},n)}catch(s){if(s instanceof qe){let a=s.message;throw s.supportedIds?.length&&(a+=`
180
+ Available frameworks: ${s.supportedIds.join(", ")}`),new f(a)}throw s}},HT=async(e,t,r,n,o,i)=>{let s=`./${e}`,a="content"in n&&typeof n.content=="object"&&"extractionRoot"in n.content?n.content:null,l=a?po.dirname(a.extractionRoot):null,c="auth",d=!1,p=!1,h=null;try{let g=Date.now(),m=await T();c="workspaces";let w;if(i)w={id:i};else{let A=await Rc(m);if(A.length===0)throw new rn("No workspaces found in your account. Please make sure you have at least one workspace.");w=await Ic(A)}c="scaffold",await Gs(e,t,r,n,void 0,void 0),p=!0,process.chdir(s);let k=o??r;xe({cloud:{framework:k,workspace_id:w.id}}),Or({apiToken:m,directory:"."}),process.env.WEBFLOW_API_TOKEN=m;let F=Date.now()-g;try{await _.forCloud({authToken:m}).sendUsage("project_init",{scaffold:k,scaffoldName:k,initMode:we.New,workspaceId:w.id,totalDuration:F,mountPath:t,namespace:Ci()})}catch{}d=!0}catch(g){if(h=g,g instanceof f||g instanceof Error&&g.message.includes("OAuth")){try{await Gs(e,t,r,n),process.chdir(s),xe({cloud:{framework:o??r}}),Or({directory:"."}),p=!0}catch{}throw u.error(g),new f(g,{skipLogging:!0})}throw g}finally{if(l)try{Gf.default.removeSync(l)}catch{}if(d){let g=xE(e,we.New);aa=()=>u.info(g)}else{let g=vE(c,h,we.New),m=CE(e,we.New,g,p);aa=()=>u.info(m)}}},VT=async(e,t,r,n,o)=>{let i=`./${e}`,s=null,a=!1,l="content"in n&&typeof n.content=="object"&&"extractionRoot"in n.content?n.content:null,c=l?po.dirname(l.extractionRoot):null,d="auth",p=!1,h=!1,g=null;try{let m=Date.now();await WT(e,r,n),process.chdir(i);let{manifest:w}=Z(),k=await Ue(w,{site:o}),F=k.accessToken,A=k.siteId;if(s=_.forCloud({authToken:F,siteId:A}),d="scaffold",await Gs(".",t,r,n,A,F),h=!0,d="devlink",A){u.info(`${Fe} Running devlink export to fetch your Webflow components`);try{await GT({site:A,apiToken:F}),a=!0}catch(v){Mn(v)?u.info(`${Fe} Skipped component export \u2014 requires a paid Site or Workspace plan. Upgrade at https://webflow.com/pricing.`):u.error(v,{prefix:"Failed to run devlink export:"})}}let E=Date.now()-m;await s?.sendUsage("project_init",{scaffold:r,scaffoldName:r,devlinkSyncStatus:a,totalDuration:E,mountPath:t,namespace:Ci()}),p=!0}catch(m){g=m,u.error(m);try{await Gs(".",t,r,n),h=!0}catch{}throw new f(m,{skipLogging:!0})}finally{if(c)try{Gf.default.removeSync(c)}catch{}if(p){let m=xE(e,we.Existing);aa=()=>u.info(m)}else{let m=vE(d,g,we.Existing),w=CE(e,we.Existing,m,h);aa=()=>u.info(w)}}},GT=async e=>{let{exportComponents:t}=await Promise.resolve().then(()=>(Ll(),hD));await t({site:e.site,apiToken:e.apiToken,silentNotEntitled:!0})},KT=e=>{if(e?.skipMountPathCheck!==void 0)return e.skipMountPathCheck;try{let{manifest:t}=Z();return pf(t)?!0:t.cloud?.skipMountPathCheck===!0}catch{return!1}},zT=async(e,t,r,n)=>{u.info(_e("Validating mount path configuration..."));let o=await cE(e,t,r);if(o.isValid)u.info(V("Mount path validation passed"));else if(u.info(R(`
181
+ Mount path validation results:`)),o.domains.forEach(i=>{let s=i.isValid?L:he,a=i.isValid?V(`${i.domain} (mountPath: ${i.mountPaths[0]})`):ne(`${i.domain} (no matching mountPath)`);u.info(`${s} ${a}`),i.error&&u.debug(` Error: ${i.error}`)}),o.needsPublishing)if(n){u.info("\u{1F680} Auto-publishing site to update mount path configuration...");let i=o.domains.filter(s=>!s.isValid).map(s=>s.domain);await Mf(e,i)}else if(await fE()&&er()){let s=o.domains.filter(l=>!l.isValid).map(l=>l.domain),a=await pE(s);await Mf(e,a)}else u.warn("\u26A0\uFE0F Continuing with deployment without publishing...")},JT=async(e,t,r,n)=>{Tf("\u{1F3D7}\uFE0F ","Building app");let o=await Jb(e,{mountPath:r,telemetry:n?.telemetry,deployUrl:t.deploy_url,environmentId:t.environment_id});Tf("\u{1F4E4}","Uploading build artifacts");let i=Date.now();await iE(o,t.upload_url);let s=Date.now()-i;return u.info(`${L} Upload completed in ${(s/1e3).toFixed(1)}s`),o},qT=async(e,t,r,n)=>{u.success(`
182
+ \u{1F310} Your cloud app will soon be available at:`);try{let o=n?.domainsOverride??await uE(e,t,r),i=dE(o??[],t);i?.length>0?i.forEach(s=>{u.info(` ${s}`)}):u.warn(" No domains found with the correct mount path configuration yet.")}catch(o){u.warn(` Could not determine deployment links: ${o instanceof Error?o.message:o}`)}},YT=e=>{e.site_slug?u.success(`Visit your deployment:
183
+
184
+ ${Uo}/dashboard/sites/${e.site_slug}/webflow-cloud/projects/${e.project_id}/environments/${e.environment_id}/deployments/${e.deployment_id}`):u.info(`
185
+ Visit the webflow Cloud dashboard to view your deployment: https://webflow.com/dashboard/sites`)},XT=async(e,t,r,n,o)=>{try{if(await sE(t.completion_url,!!n),n)u.error(`
186
+ ${b} Deployment failed due to build error.`);else{u.success(`
187
+ ${L} Deployment triggered successfully!`);let i;try{let{manifest:s}=Z();pf(s)&&(i=[`${o?.projectName??po.basename(process.cwd())}.webflow.io`])}catch(s){u.debug(`Could not read manifest for standalone deploy link hint: ${s instanceof Error?s.message:String(s)}`)}await qT(e,r,t.environment_id,i!==void 0?{domainsOverride:i}:void 0),YT(t)}}catch(i){throw new f(i,{prefix:"Failed to trigger deployment:"})}},ZT=(e,t)=>{e&&Yb(process.cwd(),e),t&&qb(t)},EE=async(e,t,r,n)=>{let o=null,i=null,s=Date.now(),a=null,l=null,c=Rf(process.cwd()),d=n?.telemetry;await d?.sendUsage("cloud_deploy_start",{environment:t,mountPath:r,projectName:n?.projectName,hasDescription:!!n?.description,hasDirectory:!!n?.directory,cloudflareBindings:c,namespace:Ci()});try{Bb(u,process.cwd()),o=await rE(e,t,r,n),u.info("\u{1F527} Detecting framework..."),a=await zb(process.cwd(),o.deploy_url,o.environment_id,r),u.info(`Framework: ${a.info.displayName}`),u.info(`Build command: ${a.getBuildCommand()}`),KT(n)?u.info("\u23ED\uFE0F Skipping mount path validation..."):await zT(e,r,o.environment_id,n?.autoPublish),i=await JT(a,o,r,n),u.info(`Starting deployment process for environment: ${t} at mount path: ${r}`);let p=Date.now()-s;await d?.sendUsage("cloud_deploy_success",{duration:p,environment:t,mountPath:r,projectName:n?.projectName,hasDescription:!!n?.description,hasDirectory:!!n?.directory,framework:a.info.name,buildCommand:a.getBuildCommand(),cloudflareBindings:c,namespace:Ci()})}catch(p){l=p instanceof Error?p:new Error(String(p)),u.error(l,{prefix:"Error during deployment initialization:"});let h=Date.now()-s;await d?.sendError(l,"cloud_deploy_failure",{duration:h,environment:t,mountPath:r,projectName:n?.projectName,cloudflareBindings:c,argv:process.argv.slice(2),namespace:Ci()})}finally{if(ZT(a,i),o&&await XT(e,o,r,l,{projectName:n?.projectName}),l)throw new f(l,{skipLogging:!0})}},SE=e=>{let t=Math.max(...e.map(i=>pt(i).length)),r=R(`\u250C${"\u2500".repeat(t+2)}\u2510`),n=R(`\u2514${"\u2500".repeat(t+2)}\u2518`),o=e.map(i=>{let s=" ".repeat(t-pt(i).length);return`${R("\u2502")} ${i}${s} ${R("\u2502")}`});return[r,...o,n].join(`
188
+ `)},xE=(e,t)=>{let r=[vt(`${ot} Get started with the following commands:`),V(`cd ${e}`),V("npm install"),V("npm run dev"),V("webflow cloud deploy")];return t!==we.New&&(r.push(""),r.push(vt(`${ot} Run the following command to export Webflow components when they update:`)),r.push(V("webflow devlink export"))),SE(r)},CE=(e,t,r,n=!0)=>{let o=[],i=t===we.New?"webflow cloud init --new":"webflow cloud init",s=l=>n?`App scaffold created at ${e}/ but ${l}`:l.charAt(0).toUpperCase()+l.slice(1),a=n?[V(`cd ${e}`)]:[];switch(r){case"auth":o.push(vt(`${ot} ${s("Webflow authentication did not complete.")}`),"",vt(n?"To finish setup:":"To retry:"),...a,V("webflow auth login"),V(i));break;case"no-sites":o.push(vt(`${ot} ${s("no Webflow sites were found in your account.")}`),"",vt(n?"Create a site in the Webflow Designer, then:":"Create a site in the Webflow Designer, then rerun:"),...a,V("webflow cloud init"));break;case"no-workspaces":o.push(vt(`${ot} ${s("no Webflow workspaces were found in your account.")}`),"",vt(n?"Create a workspace, then:":"Create a workspace, then rerun:"),...a,V("webflow cloud init --new"));break;default:o.push(vt(`${ot} ${s("setup did not complete.")}`),"",vt(n?"To retry setup:":"To retry:"),...a,V(i));break}return SE(o)};N();Qr();var fo=require("commander");de();x();N();Qr();function _E(e,t,r){ct()&&e==="cloud"&&(r.json||u.warn(`${he} ${ne(`webflow cloud ${t}`)} is deprecated \u2014 use ${ne(`webflow apps ${t}`)} instead.`))}function $c(e,{namespace:t}){e.command("init").description("Bootstrap a new Webflow Cloud app").addOption(new fo.Option("-n, --app-name <name>","App name")).addOption(new fo.Option("--project-name <name>",`${Tr} Use --app-name instead.`)).option("-f, --framework <framework>","Framework to use (e.g., astro, nextjs)").option("-m, --mount <mount>","Mount path (default: '/' for new domain, '/app' for existing site)").option("-s, --site-id <siteId>","Webflow site ID to connect to").option("--new","Create an app without connecting to an existing site").option("-w, --workspace-id <workspaceId>","Workspace ID where the app should be deployed (skips workspace picker)").action(async(r,n)=>{Bf(t),_E(t,"init",r),await QT(r,n)})}function Lc(e,{namespace:t}){e.command("deploy").description("Deploy your Webflow Cloud app").option("-e, --environment <environment>","Environment name").option("-m, --mount <mount>","Mount path (e.g., /app)").addOption(new fo.Option("-n, --app-name <name>","App name (for new apps)")).addOption(new fo.Option("--project-name <name>",`${Tr} Use --app-name instead.`)).option("-d, --directory <path>","App directory path (for new apps)").option("--description <description>","App description (for new apps)").option("--skip-mount-path-check","Skip mount path checking").option("--auto-publish","Automatically publish site for mount path updates").option("-s, --site-id <siteId>","Webflow site ID for site-attached deploys (skips site picker)").addOption(new fo.Option("-a, --app-id <appId>","App ID (skips app picker)")).addOption(new fo.Option("--project-id <appId>",`${Tr} Use --app-id instead.`)).option("-f, --framework <framework>","Override framework detection (e.g., nextjs, astro)").option("-w, --workspace-id <workspaceId>","Workspace ID where the app will be deployed (skips workspace picker)").action(async(r,n)=>{Bf(t),_E(t,"deploy",r),await eR(r,n)})}var QT=Hf,eR=Vf;var FE=e=>{let t=ct(),r=e.command("cloud").description(t?`${Tr} Use 'webflow apps' instead. Create and manage Webflow Cloud apps`:"Create and manage Webflow Cloud apps");r.command("create").description(`${Tr} Use 'webflow ${t?"apps":"cloud"} init' instead. Quick non-interactive scaffold for site-attached apps (hardcoded to /app).`).argument("<name>","App name").option("-f, --framework <framework>","Framework to use","nextjs").action(Uf),r.command("list").description(t?`${Tr} Lists scaffold templates (not your apps). Use 'webflow apps init --framework' / --help; for apps use 'webflow apps list'.`:`${Tr} Lists scaffold templates (not your apps). Use 'webflow cloud init --framework' / --help.`).action(Wf),$c(r,{namespace:"cloud"}),Lc(r,{namespace:"cloud"})};var KE=require("commander");J();S();x();N();z();ye();S();dt();dt();S();async function la(e,t,r,n){let o=[],i=0,s=100;for(;;){let a=new URL(e);a.searchParams.set("limit",String(s)),a.searchParams.set("offset",String(i));let l=await G(a.toString(),{headers:{Authorization:`Bearer ${t}`,Accept:"application/json"}});if(!l.ok)throw new f(`${n}: ${l.status} ${l.statusText}`);let c=await l.json(),d=c[r]??[];o.push(...d);let p=c.pagination?.total??d.length;if(i+=d.length,i>=p||d.length<s)break}return o}function mo(e,t){if(Array.isArray(e))return{items:e,nextCursor:null};if(e&&typeof e=="object"){let r=e;return{items:r[t]??[],nextCursor:r.nextCursor??null}}return{items:[],nextCursor:null}}var tR=100;async function ca(e,t){let r=[],n=t?.maxPages??tR,o=new Set,i,s=0;for(;;){let{items:a,nextCursor:l}=await e(i);if(r.push(...a),s+=1,!l)break;if(o.has(l))throw new f("Pagination aborted: the server returned a repeated cursor, which would loop indefinitely.");if(o.add(l),s>=n)throw new f(`Pagination aborted after ${n} pages (safety cap). The result set is larger than expected.`);i=l}return r}var Nc=100;function Fi(e,t={}){let r=[];return t.limit!==void 0&&Number.isFinite(t.limit)&&r.push(`limit=${encodeURIComponent(String(t.limit))}`),t.cursor&&r.push(`cursor=${encodeURIComponent(t.cursor)}`),r.length>0?`${e}?${r.join("&")}`:e}var rR="1.0.0";function ut(e){return{Authorization:`Bearer ${e}`,Accept:"application/json","Accept-Version":rR}}async function At(e,t={}){let{scopeLabel:r="apps",fallbackPrefix:n,userErrorOn4xx:o=!1}=t,i={};try{i=JSON.parse(await e.text())}catch{}let s=i.msg??i.message;if(e.status===403&&i.publicErrorCode==="missing_scopes")return new f(`Missing required scopes for ${r}.
189
+ ${s??""}
190
+ Re-run 'webflow auth login' to grant the necessary permissions.`,{isUserError:!0});let a=n?`${n}: `:"",l=o&&e.status>=400&&e.status<500;return new f(`${a}${e.status} ${e.statusText}`+(s?`
191
+ ${s}`:""),l?{isUserError:!0}:void 0)}async function nR(e,t){let r=await G(Fi(`${I}/cosmic/apps`,{limit:Nc,cursor:t}),{headers:ut(e)});if(!r.ok)throw await At(r);return mo(await r.json(),"apps")}async function jc(e){return ca(t=>nR(e,t))}async function Mc(e,t){Ce(t,"appId");let r=await G(`${I}/cosmic/apps/${encodeURIComponent(t)}`,{headers:ut(e)});if(!r.ok)throw await At(r);return await r.json()}async function AE(e,t,r){Ce(t,"appId");let n=await G(`${I}/cosmic/apps/${encodeURIComponent(t)}`,{method:"PATCH",headers:{...ut(e),"Content-Type":"application/json"},body:JSON.stringify(r)});if(!n.ok)throw await At(n);return await n.json()}async function TE(e,t){Ce(t,"appId");let r=await G(`${I}/cosmic/apps/${encodeURIComponent(t)}`,{method:"DELETE",headers:ut(e)});if(!r.ok)throw await At(r);return await r.json()}async function RE(e,t,r={}){Ce(t,"appId");let n=Fi(`${I}/cosmic/apps/${encodeURIComponent(t)}/domains`,{limit:r.limit,cursor:r.cursor}),o=await G(n,{headers:ut(e)});if(!o.ok)throw await At(o);let{items:i,nextCursor:s}=mo(await o.json(),"customDomains");return{customDomains:i,nextCursor:s}}async function oR(e,t,r){let n=await G(Fi(`${I}/cosmic/apps/${encodeURIComponent(t)}/environments`,{limit:Nc,cursor:r}),{headers:ut(e)});if(!n.ok)throw await At(n);return mo(await n.json(),"environments")}async function Bc(e,t){return Ce(t,"appId"),ca(r=>oR(e,t,r))}function IE(e={}){let t=[];return e.limit!==void 0&&Number.isFinite(e.limit)&&t.push(`limit=${encodeURIComponent(String(e.limit))}`),e.cursor!==void 0&&t.push(`cursor=${encodeURIComponent(e.cursor)}`),e.since!==void 0&&t.push(`since=${encodeURIComponent(e.since)}`),e.q!==void 0&&t.push(`q=${encodeURIComponent(e.q)}`),t.length>0?`?${t.join("&")}`:""}async function OE(e,t,r,n,o={}){Ce(t,"appId"),Ce(r,"environmentId"),bn(n,"deploymentId");let i=await G(`${I}/cosmic/apps/${encodeURIComponent(t)}/environments/${encodeURIComponent(r)}/deployments/${encodeURIComponent(n)}/buildLogs${IE(o)}`,{headers:ut(e)});if(!i.ok)throw await At(i);return await i.json()}async function PE(e,t,r,n={}){Ce(t,"appId"),Ce(r,"environmentId");let o=await G(`${I}/cosmic/apps/${encodeURIComponent(t)}/environments/${encodeURIComponent(r)}/logs${IE(n)}`,{headers:ut(e)});if(!o.ok)throw await At(o);return await o.json()}async function Uc(e,t,r,n={}){Ce(t,"appId"),Ce(r,"environmentId");let o=await G(Fi(`${I}/cosmic/apps/${encodeURIComponent(t)}/environments/${encodeURIComponent(r)}/deployments`,{limit:n.limit,cursor:n.cursor}),{headers:ut(e)});if(!o.ok)throw await At(o);let{items:i,nextCursor:s}=mo(await o.json(),"deployments");return{deployments:i,nextCursor:s}}async function Wc(e,t,r,n,o={}){Ce(t,"appId"),Ce(r,"environmentId"),bn(n,"deploymentId");let i=await G(`${I}/cosmic/apps/${encodeURIComponent(t)}/environments/${encodeURIComponent(r)}/deployments/${encodeURIComponent(n)}`,{headers:ut(e),signal:o.signal});if(!i.ok)throw await At(i);return await i.json()}async function $E(e,t,r,n,o={}){Ce(t,"appId"),Ce(r,"environmentId"),bn(n,"deploymentId");let i=await G(`${I}/cosmic/apps/${encodeURIComponent(t)}/environments/${encodeURIComponent(r)}/deployments/${encodeURIComponent(n)}/redeploy`,{method:"POST",headers:{...ut(e),"Content-Type":"application/json",...o.idempotencyKey?{"Idempotency-Key":o.idempotencyKey}:{}},body:JSON.stringify({})});if(!i.ok)throw await At(i);return await i.json()}async function Kf(e){let t=await T(),r=_.forApps({authToken:t}),n=Date.now();try{let o=await jc(t);if(await r.sendUsage("apps_list",{duration:Date.now()-n,count:o.length}),e.json){u.info(JSON.stringify(o,null,2));return}if(o.length===0){u.info("No apps found.");return}let i=De(e.fields,ic,cn());u.info(sc(o,i))}catch(o){throw o instanceof f&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"apps_list",{duration:Date.now()-n}),new f(o,{prefix:`${b} Failed to list apps:`}))}}J();S();x();N();z();Me();S();pe();Ae();async function Hc(e,t={}){let r=await jc(e);if(r.length===0)throw new f("No apps found in this workspace.",{isUserError:!0});if(r.length===1)return r[0].id;if(W()||t.json){let o=r.map(i=>` ${i.id} (${i.name})`).join(`
192
+ `);throw new f(`This workspace has multiple apps. Pass the app id to choose one:
193
+ ${o}`,{isUserError:!0,missingFlag:"appId"})}let n=await Be({message:"Select an app:",choices:r.map(o=>({name:`${o.name} (${o.id})`,value:o.id}))});if(!n)throw new f("No app selected.",{isUserError:!0});return n}async function Er(e,t,r){let{manifest:n}=Z();return uo("appId",{flagValue:t,manifest:n,isNoInput:!1,json:r.json,prompt:()=>Hc(e,{json:r.json})})}async function zf(e,t){let r=await T(),n=await Er(r,e,t),o=_.forApps({authToken:r}),i=Date.now();try{let s=await Mc(r,n);if(await o.sendUsage("apps_get",{duration:Date.now()-i}),t.json){u.info(JSON.stringify(s,null,2));return}let a=De(t.fields,ic,cn());u.info(sc([s],a))}catch(s){throw s instanceof f&&s.isUserError?s:(await o.sendError(s instanceof Error?s:new Error(String(s)),"apps_get",{duration:Date.now()-i}),new f(s,{prefix:`${b} Failed to get app:`}))}}J();S();x();N();z();async function Jf(e,t){let r=await T(),n=await Er(r,e,t),o=_.forApps({authToken:r}),i=Date.now();try{let s=await RE(r,n,{limit:t.limit,cursor:t.cursor});if(await o.sendUsage("apps_domains",{duration:Date.now()-i,count:s.customDomains.length}),t.json){u.info(JSON.stringify(s,null,2));return}if(s.customDomains.length===0){u.info("No domains found.");return}let a=De(t.fields,jk,$s());u.info(Bk(s.customDomains,a)+ni(s.nextCursor))}catch(s){throw s instanceof f&&s.isUserError?s:(await o.sendError(s instanceof Error?s:new Error(String(s)),"apps_domains",{duration:Date.now()-i}),new f(s,{prefix:`${b} Failed to get app domains:`}))}}J();S();x();N();z();async function qf(e,t){let r=await T(),n=await Er(r,e,t),o=t.json?void 0:De(t.fields,Mk,Ls()),i=_.forApps({authToken:r}),s=Date.now();try{let a=await Bc(r,n);if(await i.sendUsage("apps_environments_list",{duration:Date.now()-s,count:a.length}),t.json){u.info(JSON.stringify(a,null,2));return}if(a.length===0){u.info("No environments found.");return}u.info(Uk(a,o))}catch(a){throw a instanceof f&&a.isUserError?a:(await i.sendError(a instanceof Error?a:new Error(String(a)),"apps_environments_list",{duration:Date.now()-s}),new f(a,{prefix:`${b} Failed to list app environments:`}))}}J();S();x();N();z();de();var Yf=["timestamp","message","phase"],ua="timestamp,message",Vc=st(Yf);function vn(){return Yf}function iR(e,t){return e==null||e===""?R("\u2014"):t==="timestamp"?new Date(String(e)).toLocaleString():String(e)}function sR(e,t=ua.split(",")){return e.map(r=>t.map(n=>iR(r[n],n)).join(" ")).join(`
194
+ `)}function Gc(e,t,r){return t.json?JSON.stringify({logs:e.logs,nextCursor:e.nextCursor},null,2):e.logs.length===0?"No logs found.":sR(e.logs,r)+ni(e.nextCursor)}function LE(e){return e[0]?.id}Me();S();pe();Ae();async function NE(e,t,r={}){let n=await Bc(e,t);if(n.length===0)throw new f("No environments found for this app.",{isUserError:!0});if(n.length===1)return n[0].id;if(W()||r.json){let i=n.map(s=>` ${s.id} (${s.branch})`).join(`
195
+ `);throw new f(`This app has multiple environments. Pass the environment id to choose one:
196
+ ${i}`,{isUserError:!0,missingFlag:"environmentId"})}let o=await Be({message:"Select an environment:",choices:n.map(i=>({name:`${i.branch} (${i.id})`,value:i.id}))});if(!o)throw new f("No environment selected.",{isUserError:!0});return o}async function Xe(e,t){let{manifest:r}=Z(),n=await uo("appId",{flagValue:t.appId,manifest:r,isNoInput:!1,json:t.json,prompt:()=>Hc(e,{json:t.json})}),o=await uo("environmentId",{flagValue:t.environmentId,manifest:r,isNoInput:!1,json:t.json,prompt:()=>NE(e,n,{json:t.json})});return{appId:n,envId:o}}async function Xf(e,t){let r=await T(),{appId:n,envId:o}=await Xe(r,{json:t.json}),i=t.json?void 0:De(t.fields,Vc,vn()),s=_.forApps({authToken:r}),a=Date.now();try{let l=e;if(!l){let{deployments:d}=await Uc(r,n,o,{limit:1});if(l=LE(d),!l)throw new f("No deployments found for this environment.",{isUserError:!0})}let c=await OE(r,n,o,l,{limit:t.limit,cursor:t.cursor,since:t.since,q:t.q});await s.sendUsage("apps_logs_build",{duration:Date.now()-a,count:c.logs.length}),u.info(Gc(c,t,i))}catch(l){throw l instanceof f&&l.isUserError?l:(await s.sendError(l instanceof Error?l:new Error(String(l)),"apps_logs_build",{duration:Date.now()-a}),new f(l,{prefix:`${b} Failed to read build logs:`}))}}J();S();x();N();z();async function Zf(e,t){let r=await T(),{appId:n,envId:o}=await Xe(r,{environmentId:e,json:t.json}),i=t.json?void 0:De(t.fields,Vc,vn()),s=_.forApps({authToken:r}),a=Date.now();try{let l=await PE(r,n,o,{limit:t.limit,cursor:t.cursor,since:t.since,q:t.q});await s.sendUsage("apps_logs_runtime",{duration:Date.now()-a,count:l.logs.length}),u.info(Gc(l,t,i))}catch(l){throw l instanceof f&&l.isUserError?l:(await s.sendError(l instanceof Error?l:new Error(String(l)),"apps_logs_runtime",{duration:Date.now()-a}),new f(l,{prefix:`${b} Failed to read runtime logs:`}))}}J();S();x();N();z();async function Qf(e){let t=await T(),{appId:r,envId:n}=await Xe(t,{json:e.json}),o=e.json?void 0:De(e.fields,cc,un()),i=_.forApps({authToken:t}),s=Date.now();try{let a=await Uc(t,r,n,{limit:e.limit,cursor:e.cursor});if(await i.sendUsage("apps_deployments_list",{duration:Date.now()-s,count:a.deployments.length}),e.json){u.info(JSON.stringify(a,null,2));return}if(a.deployments.length===0){u.info("No deployments found.");return}u.info(js(a.deployments,o)+ni(a.nextCursor))}catch(a){throw a instanceof f&&a.isUserError?a:(await i.sendError(a instanceof Error?a:new Error(String(a)),"apps_deployments_list",{duration:Date.now()-s}),new f(a,{prefix:`${b} Failed to list deployments:`}))}}J();de();S();pe();x();N();z();var aR=5,jE=1800;function lR(e){return new Promise(t=>setTimeout(t,e))}async function ME(e,t,r,n,o={}){let i=Math.min(jE,Math.max(aR,o.interval??ac)),s=Math.min(jE,Math.max(1,o.timeout??lc)),a=Date.now()+s*1e3,l,c,d=!1;for(;;){let p=new AbortController,h=setTimeout(()=>p.abort(),Math.max(0,a-Date.now())),g;try{g=await Wc(e,t,r,n,{signal:p.signal})}catch(k){if(p.signal.aborted){d=!0;break}throw k}finally{clearTimeout(h)}c=g;let m=g.status;if(Hk(m))break;let w=a-Date.now();if(w<=0){d=!0;break}if(m!==l&&o.onStatusChange?.(l,m),l=m,await lR(Math.min(i*1e3,w)),Date.now()>=a){d=!0;break}}return{deployment:c,timedOut:d,timeoutSeconds:s}}async function em(e,t){let r=await T(),{appId:n,envId:o}=await Xe(r,{json:t.json}),i=t.json?void 0:De(t.fields,cc,un()),s=_.forApps({authToken:r}),a=Date.now(),l=t.wait?"apps_deployments_watch":"apps_deployments_get";try{if(t.wait){let d=!t.json&&!W(),{deployment:p,timedOut:h,timeoutSeconds:g}=await ME(r,n,o,e,{interval:t.interval,timeout:t.timeout,onStatusChange:d?(w,k)=>u.info(R(w===void 0?k:`${w} \u2192 ${k}`)):void 0}),m=h?"timeout":p?.status??"unknown";if(await s.sendUsage("apps_deployments_watch",{duration:Date.now()-a,finalStatus:m}),process.exitCode=!h&&p?.status==="success"?0:1,t.json){u.info(JSON.stringify(p??null,null,2));return}p&&u.info(js([p],i)),h&&u.warn(`Timed out after ${g}s waiting for a terminal status (last status: ${p?.status??"unknown"}).`);return}let c=await Wc(r,n,o,e);if(await s.sendUsage("apps_deployments_get",{duration:Date.now()-a}),t.json){u.info(JSON.stringify(c,null,2));return}u.info(js([c],i))}catch(c){throw c instanceof f&&c.isUserError?c:(await s.sendError(c instanceof Error?c:new Error(String(c)),l,{duration:Date.now()-a}),new f(c,{prefix:`${b} Failed to ${t.wait?"watch":"get"} deployment:`}))}}J();de();S();x();N();z();async function tm(e,t){let r=await T(),{appId:n,envId:o}=await Xe(r,{json:t.json});if(t.dryRun){Ce(n,"appId"),Ce(o,"environmentId"),bn(e,"deploymentId"),t.json?u.info(JSON.stringify({deploymentId:e,appId:n,environmentId:o,dryRun:!0},null,2)):(u.info(`Would redeploy deployment ${e} (same commit) in app ${n}, environment ${o}.`),u.info("Dry run \u2014 no changes made."));return}let i=_.forApps({authToken:r,suppressCommand:!!t.idempotencyKey}),s=Date.now();try{let a=await $E(r,n,o,e,{idempotencyKey:t.idempotencyKey});if(await i.sendUsage("apps_deployments_redeploy",{duration:Date.now()-s}),t.json){u.info(JSON.stringify(a,null,2));return}let l=a.commitSha.slice(0,7);a.status==="queued"?u.info(`${L} Redeploy queued \u2014 commit ${l}`):u.info(`${Fe} Redeploy in progress \u2014 commit ${l} ${R("(processing \u2014 enqueue not confirmed)")}`)}catch(a){throw a instanceof f&&a.isUserError?a:(await i.sendError(a instanceof Error?a:new Error(String(a)),"apps_deployments_redeploy",{duration:Date.now()-s}),new f(a,{prefix:`${b} Failed to redeploy deployment:`}))}}J();S();x();N();z();async function rm(e,t){if(t.name===void 0&&t.description===void 0)throw new f("Provide --name or --description",{isUserError:!0});let r=await T(),n=await Er(r,e,t);if(Ce(n,"appId"),t.dryRun){u.info(`Dry run \u2014 would update app: ${n}`),t.name!==void 0&&u.info(` Name: ${t.name}`),t.description!==void 0&&u.info(` Description: ${t.description}`),u.info("Dry run complete \u2014 no changes made.");return}let o=_.forApps({authToken:r}),i=Date.now();try{let s=await AE(r,n,{name:t.name,description:t.description});if(await o.sendUsage("apps_update",{duration:Date.now()-i,dryRun:!1}),t.json){u.info(JSON.stringify(s,null,2));return}u.info(`${L} App updated: ${s.id}`),s.name&&u.info(` Name: ${s.name}`),s.description!=null&&u.info(` Description: ${s.description}`)}catch(s){throw s instanceof f&&s.isUserError?s:(await o.sendError(s instanceof Error?s:new Error(String(s)),"apps_update",{duration:Date.now()-i}),new f(s,{prefix:`${b} Failed to update app:`}))}}J();S();pe();Ae();x();N();z();async function nm(e,t){let r=await T(),n=await Er(r,e,t);if(Ce(n,"appId"),!t.dryRun&&!t.yes&&(W()||t.json))throw new f("Refusing to delete without confirmation. Pass --yes.",{isUserError:!0,missingFlag:"yes"});if(t.dryRun||!t.yes){let s=await Mc(r,n),a=Wk(s);if(t.dryRun){u.info(`Dry run \u2014 would delete app ${n}`),u.info(` ${a}`),u.info("Dry run complete \u2014 no changes made.");return}if(!await Pe({message:`${a} Continue?`})){u.info("Aborted.");return}}let o=_.forApps({authToken:r}),i=Date.now();try{let s=await TE(r,n);if(await o.sendUsage("apps_delete",{duration:Date.now()-i,dryRun:!1}),t.json){u.info(JSON.stringify(s,null,2));return}u.info(s.message)}catch(s){throw s instanceof f&&s.isUserError?s:(await o.sendError(s instanceof Error?s:new Error(String(s)),"apps_delete",{duration:Date.now()-i}),new f(s,{prefix:`${b} Failed to delete app:`}))}}J();S();x();N();z();ye();S();dt();var Ai=100;function om(e,t){return`${I}/cosmic/apps/${encodeURIComponent(e)}/environments/${encodeURIComponent(t)}/variables`}function im(e,t){return At(e,{scopeLabel:"Cloud app environment variables",fallbackPrefix:t,userErrorOn4xx:!0})}async function cR(e,t,r,n){let o=Fi(om(t,r),{limit:Nc,cursor:n}),i=await G(o,{headers:ut(e)});if(!i.ok)throw await im(i,"Failed to list environment variables");return mo(await i.json(),"variables")}async function sm(e,t,r){return ca(n=>cR(e,t,r,n))}async function am(e,t,r,n){let o=await G(`${om(t,r)}/${encodeURIComponent(n)}`,{method:"DELETE",headers:ut(e)});if(!o.ok)throw await im(o,"Failed to delete environment variable")}async function da(e,t,r,n,o){let i=Object.keys(n).length;if(i>Ai)throw new f(`Cannot import more than ${Ai} variables at once (received ${i}).`,{isUserError:!0});let s=await G(`${om(t,r)}/bulk`,{method:"POST",headers:{...ut(e),"Content-Type":"application/json"},body:JSON.stringify({variables:n,overwriteExisting:o})});if(!s.ok)throw await im(s,"Failed to import environment variables");return await s.json()}var BE=require("dotenv");de();var UE=["key","isSecret","value","id","environmentId"],pa=["key","isSecret"];function Ti(){return UE}var lm=st(UE);function uR(e,t){switch(t){case"value":return e.isSecret?R("(secret)"):e.value!==""?e.value:R("\u2014");case"isSecret":return e.isSecret?"yes":"no";default:return e[t]!==""?String(e[t]):R("\u2014")}}function cm(e,t=pa){if(e.length===0)return R("No environment variables found.");let r=t.map(o=>te(o)),n=e.map(o=>t.map(i=>uR(o,i)));return We(r,n)}function um(e){let t=e.split(/\r?\n/).map(r=>r.replace(/^\s*export\s+/,"")).join(`
197
+ `);return(0,BE.parse)(t)}async function dm(e){let t=await T(),r=_.forAppsEnvVars({authToken:t}),n=Date.now();try{let{appId:o,envId:i}=await Xe(t,e),s=await sm(t,o,i);if(await r.sendUsage("apps_env_vars_list",{duration:Date.now()-n,variableCount:s.length}),e.json){u.info(JSON.stringify(s,null,2));return}if(s.length===0){u.info("No environment variables found.");return}let a=De(e.fields,lm,Ti());u.info(cm(s,a))}catch(o){throw o instanceof f&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"apps_env_vars_list",{duration:Date.now()-n}),new f(o,{prefix:`${b} Failed to list environment variables:`}))}}J();S();x();N();z();S();pe();Ae();x();N();async function WE(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(t));return Buffer.concat(e).toString("utf8").replace(/\r?\n$/,"")}function pm(e){u.warn(`${he} Passing a secret as a command-line argument exposes it in your shell history and process list. Pipe it via stdin (e.g. \`printf %s "$VALUE" | webflow apps env-vars set ${e} --secret\`) or omit the value to be prompted.`)}async function HE(e,t){if(e!==void 0)return t.secret&&!t.json&&pm(t.key),{value:e,source:"arg"};if(!process.stdin.isTTY){let r=await WE();if(r==="")throw new f(`No value for ${t.key} received on stdin.`,{isUserError:!0});return{value:r,source:"stdin"}}if(!W()){let r=t.secret?await zy({message:`Enter the value for ${t.key}:`}):await Je({message:`Enter the value for ${t.key}:`});if(r===null||r==="")throw new f(`No value provided for ${t.key}.`,{isUserError:!0});return{value:r,source:"prompt"}}throw new f(`No value provided for ${t.key}. Pass it as an argument, pipe it via stdin, or run interactively (without --no-input).`,{isUserError:!0})}async function fm(e,t,r){let n=r.secret?" (secret)":"",o=await T(),i=_.forAppsEnvVars({authToken:o}),s=Date.now(),{appId:a,envId:l}=await Xe(o,r);if(r.dryRun){t!==void 0&&r.secret&&!r.json&&pm(e),r.json?u.info(JSON.stringify({key:e,...r.secret?{isSecret:!0}:{},appId:a,environmentId:l,dryRun:!0},null,2)):(u.info(`Would set ${e}${n} on app ${a}, environment ${l}.`),u.info("Dry run \u2014 no changes made."));return}try{let{value:c,source:d}=await HE(t,{key:e,secret:r.secret,json:r.json}),p={[e]:{value:c,...r.secret?{isSecret:!0}:{}}},h=await da(o,a,l,p,!0),g=[...h.created,...h.updated,...h.skipped].find(w=>w.key===e);if(!g){let w=h.errors.find(k=>k.key===e);throw new f(w?`Failed to set ${e}: ${w.error}`:`Set did not apply to ${e}.`,{isUserError:!!w})}let m=g.isSecret;if(await i.sendUsage("apps_env_vars_set",{duration:Date.now()-s,mode:r.secret?"secret":"plain",valueSource:d}),r.json){u.info(JSON.stringify({key:e,isSecret:m,status:"set"},null,2));return}u.info(`${L} Set ${e}${m?" (secret)":""}`)}catch(c){throw c instanceof f&&c.isUserError?c:(await i.sendError(c instanceof Error?c:new Error(String(c)),"apps_env_vars_set",{duration:Date.now()-s}),new f(c,{prefix:`${b} Failed to set environment variable:`}))}}J();S();x();N();z();async function mm(e,t){let r=await T(),n=_.forAppsEnvVars({authToken:r}),o=Date.now(),{appId:i,envId:s}=await Xe(r,t);if(t.dryRun){t.json?u.info(JSON.stringify({key:e,appId:i,environmentId:s,dryRun:!0},null,2)):(u.info(`Would delete ${e} from app ${i}, environment ${s}.`),u.info("Dry run \u2014 no changes made."));return}try{if(await am(r,i,s,e),await n.sendUsage("apps_env_vars_delete",{duration:Date.now()-o}),t.json){u.info(JSON.stringify({key:e,status:"deleted"},null,2));return}u.info(`${L} Deleted ${e}`)}catch(a){throw a instanceof f&&a.isUserError?a:(await n.sendError(a instanceof Error?a:new Error(String(a)),"apps_env_vars_delete",{duration:Date.now()-o}),new f(a,{prefix:`${b} Failed to delete environment variable:`}))}}var VE=require("fs"),GE=require("path");J();S();x();N();z();function gm(e){return e.map(({id:t,environmentId:r,key:n,isSecret:o})=>({id:t,environmentId:r,key:n,isSecret:o}))}async function hm(e,t){let r=await T(),n=_.forAppsEnvVars({authToken:r}),o=Date.now(),{appId:i,envId:s}=await Xe(r,t),a;try{a=(0,VE.readFileSync)((0,GE.resolve)(e),"utf8")}catch{throw new f(`Could not read file: ${e}`,{isUserError:!0})}let l=um(a),c=Object.keys(l);if(c.length===0)throw new f(`No variables found in ${e}.`,{isUserError:!0});if(c.length>Ai)throw new f(`Cannot import more than ${Ai} variables at once (${e} has ${c.length}).`,{isUserError:!0});let d={};for(let p of c)d[p]={value:l[p],...t.secret?{isSecret:!0}:{}};if(t.dryRun){if(t.json)u.info(JSON.stringify({appId:i,environmentId:s,secret:!!t.secret,variables:c,dryRun:!0},null,2));else{u.info(`Would import ${c.length} variable(s)${t.secret?" as secrets":""} into app ${i}, environment ${s}:`);for(let p of c)u.info(` ${p}=********`);u.info("Dry run \u2014 no changes made.")}return}try{let p=await da(r,i,s,d,!0);if(await n.sendUsage("apps_env_vars_import",{duration:Date.now()-o,variableCount:c.length,createdCount:p.created.length,updatedCount:p.updated.length,skippedCount:p.skipped.length,errorCount:p.errors.length,mode:t.secret?"secret":"plain"}),t.json)u.info(JSON.stringify({created:gm(p.created),updated:gm(p.updated),skipped:gm(p.skipped),errors:p.errors},null,2));else{u.info(`${L} Imported: ${p.created.length} created, ${p.updated.length} updated, ${p.skipped.length} skipped, ${p.errors.length} failed`);for(let h of p.errors)u.warn(` ${h.key}: ${h.error}`)}if(p.errors.length>0)throw new f(`Import completed with ${p.errors.length} error(s).`,{isUserError:!0,skipLogging:!0})}catch(p){throw p instanceof f&&p.isUserError?p:(await n.sendError(p instanceof Error?p:new Error(String(p)),"apps_env_vars_import",{duration:Date.now()-o}),new f(p,{prefix:`${b} Failed to import environment variables:`}))}}Qr();var zE=e=>{let t=e.command("apps").description("Manage Webflow Cloud apps");$c(t,{namespace:"apps"}),Lc(t,{namespace:"apps"}),t.command("list").description("List all apps in your Webflow workspace").addOption(Y()).addOption(Le([...cn()]).default(rc)).action(Kf),t.command("get").description("Get details for a specific app").argument("[appId]","App ID (defaults to webflow.json or WEBFLOW_APP_ID)").addOption(Y()).addOption(Le([...cn()]).default(rf)).action(zf),t.command("domains").description("List domains and live URLs for an app").argument("[appId]","App ID (defaults to webflow.json or WEBFLOW_APP_ID)").addOption(Le([...$s()]).default(nc)).addOption(Y()).option("--limit <n>","Max number of domains to return (server caps at 100)",fc).option("--cursor <cursor>","Pagination cursor from a previous nextCursor").action(Jf),ct()&&(t.command("update").description("Update an app's name or description. Use --dry-run to preview.").argument("[appId]","App ID (defaults to webflow.json or WEBFLOW_APP_ID)").option("--name <name>","New app name").option("--description <description>","New app description").addOption(Y()).addOption(Te()).action(rm),t.command("delete").description("Delete (or archive) an app. Use --dry-run to preview.").argument("[appId]","App ID (defaults to webflow.json or WEBFLOW_APP_ID)").addOption(oi()).addOption(Y()).addOption(Te()).action(nm)),t.command("environments").description("Manage the environments of a Webflow Cloud app").command("list").description("List the environments of an app").argument("[appId]","App ID (defaults to webflow.json or WEBFLOW_APP_ID)").addOption(Le([...Ls()]).default(oc)).addOption(Y()).action(qf);let n=t.command("deployments").description("Inspect Webflow Cloud deployments");n.command("list").description("List the most recent deployments of an environment (newest first). Resolves the app + environment from WEBFLOW_APP_ID / WEBFLOW_APP_ENVIRONMENT_ID, webflow.json, or an interactive picker.").addOption(Kk()).option("--cursor <cursor>","Pagination cursor from a previous nextCursor").addOption(Y()).addOption(Le([...un()]).default(Ns)).action(Qf),n.command("get").description("Get details for a specific deployment. Resolves the app + environment from WEBFLOW_APP_ID / WEBFLOW_APP_ENVIRONMENT_ID, webflow.json, or an interactive picker. Pass --wait to poll until the deployment reaches a terminal status (exit 0 on success, 1 otherwise); --interval is floored at 5s and --timeout capped at 30min.").argument("<depId>","Deployment ID").addOption(new KE.Option("--wait","Poll until the deployment reaches a terminal status (success/failed/canceled/unstaged) or the timeout elapses, then exit 0 on success or 1 otherwise")).addOption(Jk()).addOption(qk()).addOption(Y()).addOption(Le([...un()]).default(Ns)).action(em),n.command("redeploy").description("Re-run a deployment at its SAME commit (enqueues a fresh build). Requires a GitHub-connected app \u2014 apps deployed from local files via `apps deploy` are not eligible. To roll back, redeploy an earlier successful deployment's ID. Resolves the app + environment from WEBFLOW_APP_ID / WEBFLOW_APP_ENVIRONMENT_ID, webflow.json, or an interactive picker. Use --dry-run to preview.").argument("<depId>","Deployment ID to re-run").option("--idempotency-key <key>","Optional Idempotency-Key header to dedupe a retried enqueue").addOption(Y()).addOption(Te()).action(tm);let o=t.command("logs").description("Read Webflow Cloud app logs");o.command("build").description("Read the build logs of a deployment. Resolves the app + environment from WEBFLOW_APP_ID / WEBFLOW_APP_ENVIRONMENT_ID, webflow.json, or an interactive picker.").argument("[depId]","Deployment ID (defaults to the latest deployment)").addOption(Y()).addOption(Le([...vn()]).default(ua)).option("--since <iso>","Only logs at or after this ISO datetime").option("--q <text>","Substring filter on the log message").addOption(cf()).option("--cursor <cursor>","Pagination cursor from a previous nextCursor").action(Xf),o.command("runtime").description("Read the runtime logs of an environment. Resolves the app from WEBFLOW_APP_ID / webflow.json (or a picker); the environment from the [envId] argument, WEBFLOW_APP_ENVIRONMENT_ID, webflow.json, or a picker.").argument("[envId]","Environment ID (defaults to the only env; required if the app has several)").addOption(Y()).addOption(Le([...vn()]).default(ua)).option("--since <iso>","Only logs at or after this ISO datetime").option("--q <text>","Substring filter on the log message").addOption(cf()).option("--cursor <cursor>","Pagination cursor from a previous nextCursor").action(Zf);let i=t.command("env-vars").description("Manage Webflow Cloud app environment variables");i.command("list").description("List environment variables for a Cloud app environment").addOption(Bs()).addOption(Us()).addOption(Y()).addOption(Le([...Ti()]).default(pa.join(","))).action(dm),i.command("set").description("Create or update an environment variable. Use --secret to encrypt the value. Use --dry-run to preview.").argument("<key>","Variable name").argument("[value]","Variable value. Omit to read from piped stdin or be prompted (recommended for secrets, keeps them out of shell history).").addOption(Bs()).addOption(Us()).addOption(lf()).addOption(Te()).addOption(Y()).action(fm),i.command("delete").description("Delete an environment variable. Use --dry-run to preview before executing.").argument("<key>","Variable name").addOption(Bs()).addOption(Us()).addOption(Te()).addOption(Y()).action(mm),i.command("import").description("Bulk import environment variables from a .env file. Use --secret to mark every key secret. Use --dry-run to preview.").argument("<file>","Path to a .env (KEY=value) file").addOption(Bs()).addOption(Us()).addOption(lf()).addOption(Te()).addOption(Y()).action(hm)};ye();S();dt();S();function ee(e,t){if(!/^[a-f0-9]{24}$/.test(e))throw new f(`Invalid ${t}: "${e}" is not a valid resource ID.`,{isUserError:!0})}async function vr(e){try{let t=await e.json();return t.message??t.error??`${e.status} ${e.statusText}`}catch{return`${e.status} ${e.statusText}`}}async function JE(e,t){ee(t,"siteId");let r=await G(`${I}/v2/sites/${t}/collections`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!r.ok){let o=await vr(r);throw r.status>=400&&r.status<500?new f(o,{isUserError:!0}):new f(`Failed to list collections: ${o}`)}return(await r.json()).collections??[]}async function qE(e,t){ee(t,"collectionId");let r=await G(`${I}/v2/collections/${t}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(r.status===404)throw new f(`Collection "${t}" not found`,{isUserError:!0});if(!r.ok)throw new f(`Failed to get collection: ${await vr(r)}`);let n=await r.json();return{...n,fields:n.fields??[]}}async function YE(e,t,r){ee(t,"siteId");let n={displayName:r.displayName,singularName:r.singularName};r.slug&&(n.slug=r.slug);let o=await G(`${I}/v2/sites/${t}/collections`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(n)});if(!o.ok){let i=await vr(o);throw o.status>=400&&o.status<500?new f(i,{isUserError:!0}):new f(`Failed to create collection: ${i}`)}return await o.json()}async function XE(e,t,r){ee(t,"collectionId");let n=await G(`${I}/v2/collections/${t}/fields`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({displayName:r.displayName,type:r.type,isRequired:r.isRequired??!1})});if(!n.ok){let o=await vr(n);throw n.status===404?new f(`Collection "${t}" not found`,{isUserError:!0}):n.status>=400&&n.status<500?new f(o,{isUserError:!0}):new f(`Failed to create field: ${o}`)}return await n.json()}async function ym(e,t,r={}){ee(t,"collectionId");let n=new URLSearchParams;r.limit!=null&&n.set("limit",String(r.limit)),r.offset!=null&&n.set("offset",String(r.offset)),r.cmsLocaleId&&n.set("cmsLocaleId",r.cmsLocaleId);let o=n.toString()?`?${n.toString()}`:"",i=await G(`${I}/v2/collections/${t}/items${o}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(i.status===404)throw new f(`Collection "${t}" not found`,{isUserError:!0});if(!i.ok)throw new f(`Failed to list items: ${await vr(i)}`);let s=await i.json();return{items:s.items??[],total:s.total??0,count:s.count??s.items?.length??0,limit:s.limit??r.limit??100,offset:s.offset??r.offset??0}}async function ZE(e,t,r,n){ee(t,"collectionId"),ee(r,"itemId");let o=n?`?cmsLocaleId=${encodeURIComponent(n)}`:"",i=await G(`${I}/v2/collections/${t}/items/${r}${o}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(i.status===404)throw new f(`Item "${r}" not found`,{isUserError:!0});if(!i.ok)throw new f(`Failed to get item: ${await vr(i)}`);return await i.json()}async function wm(e,t,r,n=!1){ee(t,"collectionId");let o=await G(`${I}/v2/collections/${t}/items`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({fieldData:r,isDraft:n})});if(!o.ok){let i=await vr(o);throw o.status>=400&&o.status<500?new f(i,{isUserError:!0}):new f(`Failed to create item: ${i}`)}return await o.json()}async function Dm(e,t,r,n){ee(t,"collectionId"),ee(r,"itemId");let o=await G(`${I}/v2/collections/${t}/items/${r}`,{method:"PATCH",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({fieldData:n})});if(o.status===404)throw new f(`Item "${r}" not found`,{isUserError:!0});if(!o.ok)throw new f(`Failed to update item: ${await vr(o)}`);return await o.json()}async function QE(e,t,r){ee(t,"collectionId"),ee(r,"itemId");let n=await G(`${I}/v2/collections/${t}/items/${r}`,{method:"DELETE",headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(n.status===404)throw new f(`Item "${r}" not found`,{isUserError:!0});if(!n.ok)throw new f(`Failed to delete item: ${await vr(n)}`)}async function ev(e,t,r){ee(t,"collectionId"),r.forEach(o=>ee(o,"itemId"));let n=await G(`${I}/v2/collections/${t}/items/publish`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({itemIds:r})});if(!n.ok){let o=await vr(n);throw n.status>=400&&n.status<500?new f(o,{isUserError:!0}):new f(`Failed to publish items: ${o}`)}return await n.json()}de();J();Me();async function Kc(e){if(e.site)return{token:await T(),siteId:e.site};let{manifest:t}=Z(),r=await Ue(t);return{token:r.accessToken,siteId:r.siteId}}function tv(e,t=["id","displayName","slug"]){if(e.length===0)return R("No collections found.");let r=["id","displayName","singularName","slug","lastUpdated"],n=Object.fromEntries(r.map(a=>[a.toLowerCase(),a])),o=t.map(a=>n[a.toLowerCase()]).filter(a=>a!=null);if(o.length===0)return Lt(`Invalid fields. Available: ${r.join(", ")}`);let i=o.map(a=>te(a)),s=e.map(a=>o.map(l=>{let c=a[l];return c?l==="lastUpdated"?new Date(c).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):c:R("\u2014")}));return We(i,s)}function rv(e){let t=[`${te("Collection:")} ${e.displayName}`,`${te("ID:")} ${e.id}`,`${te("Slug:")} ${e.slug}`,`${te("Singular:")} ${e.singularName}`,`${te("Updated:")} ${new Date(e.lastUpdated).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}`,"",te("Fields:")];if(e.fields.length===0)return t.push(R(" No fields defined.")),t.join(`
198
+ `);let r=["NAME","SLUG","TYPE","REQUIRED"].map(o=>te(o)),n=e.fields.map(o=>[o.displayName,o.slug,o.type,o.isRequired?"yes":"no"]);return t.push(We(r,n)),t.join(`
199
+ `)}function nv(e,t=["id","isDraft","lastUpdated"]){if(e.length===0)return R("No items found.");let r=t.map(o=>te(o)),n=e.map(o=>t.map(i=>{if(i==="fieldData")return JSON.stringify(o.fieldData);if(i==="isDraft")return o.isDraft?ne("draft"):V("live");if(i==="isArchived")return o.isArchived?R("archived"):"";if(i==="lastUpdated"||i==="lastPublished"||i==="createdOn"){let a=o[i];return a?new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):R("\u2014")}let s=o[i];return s==null?R("\u2014"):String(s)}));return We(r,n)}S();x();N();function zc(e,t,r="asc"){return[...e].sort((n,o)=>{let i=n[t],s=o[t];if(i==null&&s==null)return 0;if(i==null)return 1;if(s==null)return-1;let a=0;return typeof i=="string"&&typeof s=="string"?a=i.localeCompare(s):typeof i=="number"&&typeof s=="number"?a=i-s:a=String(i).localeCompare(String(s)),r==="desc"?-a:a})}z();async function km(e){let{token:t,siteId:r}=await Kc(e),n=_.forCms({authToken:t,siteId:r}),o=Date.now();try{let i=await JE(t,r);if(await n.sendUsage("cms_collections_list",{duration:Date.now()-o,count:i.length}),i.length===0){u.info("No collections found.");return}let s=["displayName","slug","lastUpdated"];if(s.includes(e.sortBy)||(u.warn(`Unknown --sort-by "${e.sortBy}". Valid fields: ${s.join(", ")}. Defaulting to displayName.`),e.sortBy="displayName"),!["asc","desc"].includes(e.order))throw new f(`Invalid --order "${e.order}". Valid values: asc, desc`,{isUserError:!0});let a=zc(i,e.sortBy,e.order);if(e.json){u.info(JSON.stringify(a,null,2));return}let l=e.fields.split(",").map(c=>c.trim());u.info(tv(a,l))}catch(i){if(i instanceof f&&i.isUserError){u.info(`${b} ${i.message}`),process.exitCode=1;return}throw await n.sendError(i instanceof Error?i:new Error(String(i)),"cms_collections_list",{duration:Date.now()-o}),new f(i,{prefix:`${b} Failed to list collections:`})}}J();S();x();N();z();async function bm(e,t){let r=await T(),n=_.forCms({authToken:r}),o=Date.now();try{let i=await qE(r,e);if(await n.sendUsage("cms_collections_get",{duration:Date.now()-o}),t.json){u.info(JSON.stringify(i,null,2));return}u.info(rv(i))}catch(i){if(i instanceof f&&i.isUserError){u.info(`${b} ${i.message}`),process.exitCode=1;return}throw await n.sendError(i instanceof Error?i:new Error(String(i)),"cms_collections_get",{duration:Date.now()-o}),new f(i,{prefix:`${b} Failed to get collection:`})}}S();x();N();z();async function Em(e){let t=e.singularName??e.name,r=e.slug??e.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");if(e.dryRun){u.info("Dry run \u2014 would create collection:"),u.info(JSON.stringify({displayName:e.name,singularName:t,slug:r},null,2)),u.info("Dry run complete \u2014 no changes made.");return}let{token:n,siteId:o}=await Kc(e),i=_.forCms({authToken:n,siteId:o}),s=Date.now();try{let a=await YE(n,o,{displayName:e.name,singularName:t,slug:r});if(await i.sendUsage("cms_collections_create",{duration:Date.now()-s}),e.json){u.info(JSON.stringify(a,null,2));return}u.info(`${L} Collection created: ${a.id}`),u.info(` Name: ${a.displayName}`),u.info(` Slug: ${a.slug}`),u.info(`
200
+ Next: add fields with "webflow cms fields create --collection ${a.id} --name <name> --type <type>"`)}catch(a){if(a instanceof f&&a.isUserError){u.info(`${b} ${a.message}`),process.exitCode=1;return}throw await i.sendError(a instanceof Error?a:new Error(String(a)),"cms_collections_create",{duration:Date.now()-s}),new f(a,{prefix:`${b} Failed to create collection:`})}}J();S();x();N();z();async function vm(e){if(e.dryRun){u.info("Dry run \u2014 would create field:"),u.info(JSON.stringify({collectionId:e.collection,displayName:e.name,type:e.type,isRequired:e.required??!1},null,2)),u.info("Dry run complete \u2014 no changes made.");return}let t=await T(),r=_.forCms({authToken:t}),n=Date.now();try{let o=await XE(t,e.collection,{displayName:e.name,type:e.type,isRequired:e.required??!1});if(await r.sendUsage("cms_fields_create",{duration:Date.now()-n}),e.json){u.info(JSON.stringify(o,null,2));return}u.info(`${L} Field created: ${o.id}`),u.info(` Name: ${o.displayName}`),u.info(` Type: ${o.type}`),u.info(` Slug: ${o.slug}`)}catch(o){if(o instanceof f&&o.isUserError){u.info(`${b} ${o.message}`),process.exitCode=1;return}throw await r.sendError(o instanceof Error?o:new Error(String(o)),"cms_fields_create",{duration:Date.now()-n}),new f(o,{prefix:`${b} Failed to create field:`})}}J();S();x();N();z();async function Sm(e){let t=await T(),r=_.forCms({authToken:t}),n=Date.now(),o=e.limit??100,i=e.offset??0;try{let s=await ym(t,e.collection,{limit:o,offset:i,cmsLocaleId:e.locale});if(await r.sendUsage("cms_items_list",{duration:Date.now()-n,count:s.items.length}),s.items.length===0){u.info("No items found.");return}if(e.json){u.info(JSON.stringify(s,null,2));return}let a=e.fields.split(",").map(p=>p.trim());u.info(nv(s.items,a));let l=i+1,c=i+s.items.length;if(s.items.length>=o||i>0){let p=s.total>0?` of ${s.total}`:"";u.info(`
201
+ Showing ${l}\u2013${c}${p} items. Use --offset ${c} to load next page.`)}}catch(s){if(s instanceof f&&s.isUserError){u.info(`${b} ${s.message}`),process.exitCode=1;return}throw await r.sendError(s instanceof Error?s:new Error(String(s)),"cms_items_list",{duration:Date.now()-n}),new f(s,{prefix:`${b} Failed to list items:`})}}J();S();x();N();z();async function xm(e){let t=await T(),r=_.forCms({authToken:t}),n=Date.now();try{let o=await ZE(t,e.collection,e.item,e.locale);if(await r.sendUsage("cms_items_get",{duration:Date.now()-n}),e.json){u.info(JSON.stringify(o,null,2));return}let i=o.isArchived?"archived":o.isDraft?"draft":"live";u.info(`${o.id} [${i}]`),u.info(` Last updated: ${new Date(o.lastUpdated).toLocaleString()}`),o.lastPublished&&u.info(` Last published: ${new Date(o.lastPublished).toLocaleString()}`),u.info(" Fields:"),u.info(JSON.stringify(o.fieldData,null,4).replace(/^/gm," "))}catch(o){if(o instanceof f&&o.isUserError){u.info(`${b} ${o.message}`),process.exitCode=1;return}throw await r.sendError(o instanceof Error?o:new Error(String(o)),"cms_items_get",{duration:Date.now()-n}),new f(o,{prefix:`${b} Failed to get item:`})}}J();S();x();N();z();async function Cm(e){let t;try{t=JSON.parse(e.data)}catch{throw new f(`Invalid JSON for --data: ${e.data}`)}if(e.dryRun){u.info("Dry run \u2014 would create item:"),u.info(JSON.stringify({fieldData:t,isDraft:e.draft??!1},null,2)),u.info("Dry run complete \u2014 no changes made.");return}let r=await T(),n=_.forCms({authToken:r}),o=Date.now();try{let i=await wm(r,e.collection,t,e.draft??!1);if(await n.sendUsage("cms_items_create",{duration:Date.now()-o,dryRun:!1}),e.json){u.info(JSON.stringify(i,null,2));return}u.info(`${L} Item created: ${i.id}`)}catch(i){if(i instanceof f&&i.isUserError){u.info(`${b} ${i.message}`),process.exitCode=1;return}throw await n.sendError(i instanceof Error?i:new Error(String(i)),"cms_items_create",{duration:Date.now()-o}),new f(i,{prefix:`${b} Failed to create item:`})}}J();S();x();N();z();async function _m(e){let t;try{t=JSON.parse(e.data)}catch{throw new f(`Invalid JSON for --data: ${e.data}`)}if(e.dryRun){u.info("Dry run \u2014 would update item:"),u.info(JSON.stringify({collectionId:e.collection,itemId:e.item,fieldData:t},null,2)),u.info("Dry run complete \u2014 no changes made.");return}let r=await T(),n=_.forCms({authToken:r}),o=Date.now();try{let i=await Dm(r,e.collection,e.item,t);if(await n.sendUsage("cms_items_update",{duration:Date.now()-o,dryRun:!1}),e.json){u.info(JSON.stringify(i,null,2));return}u.info(`${L} Item updated: ${i.id}`)}catch(i){if(i instanceof f&&i.isUserError){u.info(`${b} ${i.message}`),process.exitCode=1;return}throw await n.sendError(i instanceof Error?i:new Error(String(i)),"cms_items_update",{duration:Date.now()-o}),new f(i,{prefix:`${b} Failed to update item:`})}}J();S();x();N();z();async function Fm(e){if(e.dryRun){u.info(`Dry run \u2014 would delete item ${e.item} from collection ${e.collection}`),u.info("Dry run complete \u2014 no changes made.");return}let t=await T(),r=_.forCms({authToken:t}),n=Date.now();try{await QE(t,e.collection,e.item),await r.sendUsage("cms_items_delete",{duration:Date.now()-n,dryRun:!1}),u.info(`${L} Item deleted: ${e.item}`)}catch(o){if(o instanceof f&&o.isUserError){u.info(`${b} ${o.message}`),process.exitCode=1;return}throw await r.sendError(o instanceof Error?o:new Error(String(o)),"cms_items_delete",{duration:Date.now()-n}),new f(o,{prefix:`${b} Failed to delete item:`})}}J();S();x();N();z();async function Am(e){let t=e.items.split(",").map(i=>i.trim());if(e.dryRun){u.info(`Dry run \u2014 would publish ${t.length} item(s) in collection ${e.collection}:`),t.forEach(i=>u.info(` ${i}`)),u.info("Dry run complete \u2014 no changes made.");return}let r=await T(),n=_.forCms({authToken:r}),o=Date.now();try{let i=await ev(r,e.collection,t);if(await n.sendUsage("cms_items_publish",{duration:Date.now()-o,itemCount:t.length,dryRun:!1}),e.json){u.info(JSON.stringify(i,null,2));return}let s=i.publishedItemIds?.length??0;u.info(`${L} Published ${s} item(s)`),i.errors?.length&&i.errors.forEach(a=>u.warn(` ${a.itemId}: ${a.message}`))}catch(i){if(i instanceof f&&i.isUserError){u.info(`${b} ${i.message}`),process.exitCode=1;return}throw await n.sendError(i instanceof Error?i:new Error(String(i)),"cms_items_publish",{duration:Date.now()-o}),new f(i,{prefix:`${b} Failed to publish items:`})}}var ov=e=>{let t=e.command("cms").description("Manage Webflow CMS content"),r=t.command("collections").description("Manage CMS collections");r.command("list").description("List all CMS collections for a site").addOption(Ct()).addOption(Y()).addOption(Le(["id","displayName","singularName","slug","lastUpdated"]).default("id,displayName,slug")).addOption(si(["displayName","slug","lastUpdated"]).default("displayName")).addOption(ii()).action(km),r.command("get").description("Get details and field schema for a CMS collection").argument("<collectionId>","Collection ID").addOption(Y()).action(bm),r.command("create").description("Create a new CMS collection on a site. Use --dry-run to preview.").addOption(Ct()).requiredOption("--name <displayName>","Collection display name").option("--singular-name <singularName>","Singular name (defaults to --name)").option("--slug <slug>","URL slug for the collection (auto-derived from --name if omitted)").addOption(Te()).addOption(Y()).action(Em),t.command("fields").description("Manage CMS collection fields").command("create").description("Add a field to a CMS collection. Use --dry-run to preview.").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--name <displayName>","Field display name").requiredOption("--type <type>","Field type (e.g. PlainText, RichText, Number, DateTime, Link, Image, Video, Color, Bool, Option, ItemRef, ItemRefSet)").option("--required","Mark field as required").addOption(Te()).addOption(Y()).action(vm);let o=t.command("items").description("Manage CMS items");o.command("list").description("List items in a CMS collection").requiredOption("--collection <collectionId>","Collection ID").option("--locale <cmsLocaleId>","CMS locale ID to filter by").addOption(dc()).addOption(pc()).addOption(Y()).addOption(Le(["id","isDraft","isArchived","lastUpdated","fieldData"]).default("id,isDraft,lastUpdated")).action(Sm),o.command("get").description("Get a single CMS item by ID").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--item <itemId>","Item ID").option("--locale <cmsLocaleId>","CMS locale ID to retrieve content for").addOption(Y()).action(xm),o.command("create").description("Create a new CMS item. Use --dry-run to preview before executing.").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--data <json>","Item field data as a JSON string").option("--draft","Create as draft (not published)").addOption(Te()).addOption(Y()).action(Cm),o.command("update").description("Update an existing CMS item. Use --dry-run to preview before executing.").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--item <itemId>","Item ID").requiredOption("--data <json>","Updated field data as a JSON string").addOption(Te()).addOption(Y()).action(_m),o.command("delete").description("Delete a CMS item. Use --dry-run to preview before executing.").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--item <itemId>","Item ID").addOption(Te()).action(Fm),o.command("publish").description("Publish one or more CMS items. Use --dry-run to preview before executing.").requiredOption("--collection <collectionId>","Collection ID").requiredOption("--items <itemIds>","Comma-separated item IDs to publish").addOption(Te()).addOption(Y()).action(Am)};J();de();S();x();N();Me();z();ye();dt();S();S();de();var iv={png:{category:"image",maxBytes:4*1024*1024},jpeg:{category:"image",maxBytes:4*1024*1024},jpg:{category:"image",maxBytes:4*1024*1024},gif:{category:"image",maxBytes:4*1024*1024},svg:{category:"image",maxBytes:4*1024*1024},webp:{category:"image",maxBytes:4*1024*1024},avif:{category:"image",maxBytes:4*1024*1024},pdf:{category:"document",maxBytes:10*1024*1024},doc:{category:"document",maxBytes:10*1024*1024},docx:{category:"document",maxBytes:10*1024*1024},xls:{category:"document",maxBytes:10*1024*1024},xlsx:{category:"document",maxBytes:10*1024*1024},ppt:{category:"document",maxBytes:10*1024*1024},pptx:{category:"document",maxBytes:10*1024*1024},txt:{category:"document",maxBytes:10*1024*1024},csv:{category:"document",maxBytes:10*1024*1024},odt:{category:"document",maxBytes:10*1024*1024},ods:{category:"document",maxBytes:10*1024*1024},odp:{category:"document",maxBytes:10*1024*1024},json:{category:"lottie",maxBytes:10*1024*1024},lottie:{category:"lottie",maxBytes:10*1024*1024}};function Jc(e,t){let r=e.split(".").pop()?.toLowerCase()??"",n=iv[r];if(!n){let o=Object.keys(iv).join(", ");throw new f(`Unsupported file type ".${r}". Allowed types: ${o}`,{isUserError:!0})}if(t>n.maxBytes){let o=n.maxBytes/1048576,i=(t/(1024*1024)).toFixed(1);throw new f(`File too large: ${i} MB exceeds the ${o} MB limit for ${n.category} files.`,{isUserError:!0})}}var Tm=["id","displayName","originalFileName","contentType","size","lastUpdated"];function sv(e,t=["id","displayName","lastUpdated","size"]){if(e.length===0)return R("No assets found.");let r=Object.fromEntries(Tm.map(l=>[l.toLowerCase(),l])),n=t.map(l=>r[l.toLowerCase()]).filter(l=>l!=null);if(n.length===0)return Lt(`Invalid fields. Available: ${Tm.join(", ")}`);let o=t.filter(l=>r[l.toLowerCase()]==null),i=o.length>0?ne(`Warning: unknown field(s) ignored: ${o.join(", ")}. Available: ${Tm.join(", ")}
202
+ `):"",s=n.map(l=>te(l)),a=e.map(l=>n.map(c=>{let d=l[c];if(d==null||c==="size"&&d===0)return R("\u2014");if(c==="size")return dR(Number(d));if(c==="lastUpdated"){let h=new Date(String(d)),g=String(h.getMonth()+1).padStart(2,"0"),m=String(h.getDate()).padStart(2,"0"),w=String(h.getFullYear()).slice(-2),k=String(h.getHours()).padStart(2,"0"),F=String(h.getMinutes()).padStart(2,"0");return`${g}/${m}/${w} ${k}:${F}`}let p=String(d);return c==="displayName"&&p.length>40?R("\u2026")+p.slice(-39):p}));return i+We(s,a)}function dR(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function av(e){if(e.length===0)return R("No folders found.");let t=[...e].sort((o,i)=>o.displayName.localeCompare(i.displayName)),r=["id","displayName","assets","lastUpdated"].map(o=>te(o)),n=t.map(o=>[o.id,o.displayName,String(o.assets.length),new Date(o.lastUpdated).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1})]);return We(r,n)}async function lv(e,t,r={}){if(ee(t,"siteId"),r.folderId){ee(r.folderId,"folderId");let a=await pR(e,r.folderId),l=new Set(a.assets);if(l.size===0)return{assets:[],pagination:{total:0,limit:0,offset:0}};let c=[],d=0,p=100;for(;;){let k=await G(`${I}/v2/sites/${t}/assets?limit=${p}&offset=${d}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!k.ok)throw new f(`Failed to list assets: ${k.status} ${k.statusText}`);let F=await k.json(),A=F.assets??[];c.push(...A);let E=F.pagination?.total??0;if(d+=A.length,d>=E||A.length===0)break}let h=c.filter(k=>l.has(k.id)),g=r.offset??0,m=r.limit??h.length,w=h.slice(g,g+m);return{assets:w,pagination:{total:h.length,limit:w.length,offset:g}}}let n=new URLSearchParams;r.limit!=null&&n.set("limit",String(r.limit)),r.offset!=null&&n.set("offset",String(r.offset));let o=n.toString(),i=await G(`${I}/v2/sites/${t}/assets${o?`?${o}`:""}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!i.ok)throw new f(`Failed to list assets: ${i.status} ${i.statusText}`);let s=await i.json();return{assets:s.assets??[],pagination:s.pagination??{total:0,limit:100,offset:0}}}async function cv(e,t,r,n,o){ee(t,"siteId"),o&&ee(o,"folderId");let i=_s(r);Jc(i.meta.title,i.meta.size);let s=n??i.meta.title,a={fileName:i.meta.title,fileHash:i.meta.fileHash,displayName:s};o&&(a.parentFolder=o);let l=await G(`${I}/v2/sites/${t}/assets`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(a)});if(!l.ok)throw new f(`Failed to initiate asset upload: ${l.status} ${l.statusText}`);let c=await l.json(),d={fields:c.uploadDetails,_id:c.id,s3Url:c.hostedUrl??"",url:c.uploadUrl??"",contentType:c.contentType??"",origFileName:c.originalFileName??i.meta.title,success_action_redirect:"",createdOn:"",updatedOn:""};try{await As(i,d)}catch(p){throw await G(`${I}/v2/assets/${d._id}`,{method:"DELETE",headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}}).catch(()=>{}),p}return{id:d._id,hostedUrl:d.s3Url,displayName:s,originalFileName:i.meta.title}}async function uv(e,t,r){ee(t,"assetId");let n=await G(`${I}/v2/assets/${t}`,{method:"PATCH",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(r)});if(!n.ok)throw new f(`Failed to update asset: ${n.status} ${n.statusText}`);return await n.json()}async function pR(e,t){ee(t,"folderId");let r=await G(`${I}/v2/asset_folders/${t}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!r.ok)throw new f(`Failed to get folder: ${r.status} ${r.statusText}`);return await r.json()}async function dv(e,t){ee(t,"siteId");let r=await G(`${I}/v2/sites/${t}/asset_folders`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!r.ok)throw new f(`Failed to list folders: ${r.status} ${r.statusText}`);return(await r.json()).assetFolders??[]}async function pv(e,t,r,n){ee(t,"siteId"),n&&ee(n,"parentFolderId");let o={displayName:r};n&&(o.parentFolder=n);let i=await G(`${I}/v2/sites/${t}/asset_folders`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(o)});if(!i.ok)throw new f(`Failed to create folder: ${i.status} ${i.statusText}`);return await i.json()}async function Rm(e){let t,r;if(e.site)t=await T(),r=e.site;else{let{manifest:i}=Z(),s=await Ue(i);t=s.accessToken,r=s.siteId}let n=_.forAssets({authToken:t,siteId:r}),o=Date.now();try{let{assets:i,pagination:s}=await lv(t,r,{limit:e.limit,offset:e.offset,folderId:e.folder});if(await n.sendUsage("assets_list",{duration:Date.now()-o,count:i.length}),i.length===0){u.info("No assets found.");return}let a=["displayName","originalFileName","contentType","size","lastUpdated"],l=e.sortBy;a.includes(l)||(u.warn(`Unknown --sort-by "${e.sortBy}". Valid fields: ${a.join(", ")}. Defaulting to displayName.`),l="displayName");let c=e.order;["asc","desc"].includes(e.order)||(u.warn(`Unknown --order "${e.order}". Valid values: asc, desc. Defaulting to asc.`),c="asc");let d=zc(i,l,c);if(e.json){u.info(JSON.stringify({assets:d,pagination:s},null,2));return}let p=e.fields.split(",").map(g=>g.trim());u.info(sv(d,p));let h=(e.offset??0)+i.length;h<s.total&&u.info(R(`Showing ${h} of ${s.total} assets. Use --offset ${h} to see more.`))}catch(i){throw await n.sendError(i instanceof Error?i:new Error(String(i)),"assets_list",{duration:Date.now()-o}),new f(i,{prefix:`${b} Failed to list assets:`})}}J();S();x();N();Me();z();async function Im(e,t){let r=_s(e);if(Jc(r.meta.title,r.meta.size),t.dryRun){u.info(`Dry run \u2014 would upload: ${e} (validated)`),t.name&&u.info(` Display name: ${t.name}`),t.folder&&u.info(` Folder: ${t.folder}`),u.info("Dry run complete \u2014 no changes made.");return}let n,o;if(t.site)n=await T(),o=t.site;else{let{manifest:a}=Z(),l=await Ue(a);n=l.accessToken,o=l.siteId}let i=_.forAssets({authToken:n,siteId:o}),s=Date.now();try{let a=await cv(n,o,e,t.name,t.folder);if(await i.sendUsage("assets_upload",{duration:Date.now()-s,dryRun:!1}),t.json){u.info(JSON.stringify(a,null,2));return}u.info(`${L} Asset uploaded: ${a.id}`),a.hostedUrl&&u.info(` URL: ${a.hostedUrl}`)}catch(a){throw await i.sendError(a instanceof Error?a:new Error(String(a)),"assets_upload",{duration:Date.now()-s}),new f(a,{prefix:`${b} Failed to upload asset:`})}}J();S();x();N();z();async function Om(e,t){if(!t.altText&&!t.displayName)throw new f("Provide at least one of --alt-text or --display-name.",{isUserError:!0});if(t.dryRun){u.info(`Dry run \u2014 would update asset: ${e}`),t.altText&&u.info(` Alt text: ${t.altText}`),t.displayName&&u.info(` Display name: ${t.displayName}`),u.info("Dry run complete \u2014 no changes made.");return}let r=await T(),n=_.forAssets({authToken:r}),o=Date.now();try{let i=await uv(r,e,{altText:t.altText,displayName:t.displayName});if(await n.sendUsage("assets_update",{duration:Date.now()-o,dryRun:!1}),t.json){u.info(JSON.stringify(i,null,2));return}u.info(`${L} Asset updated: ${i.id}`),i.displayName&&u.info(` Display name: ${i.displayName}`),i.altText&&u.info(` Alt text: ${i.altText}`)}catch(i){throw await n.sendError(i instanceof Error?i:new Error(String(i)),"assets_update",{duration:Date.now()-o}),new f(i,{prefix:`${b} Failed to update asset:`})}}J();S();x();N();Me();z();async function Pm(e){let t,r;if(e.site)t=await T(),r=e.site;else{let{manifest:i}=Z(),s=await Ue(i);t=s.accessToken,r=s.siteId}let n=_.forAssets({authToken:t,siteId:r}),o=Date.now();try{let i=await dv(t,r);if(await n.sendUsage("assets_folders_list",{duration:Date.now()-o,count:i.length}),e.json){u.info(JSON.stringify(i,null,2));return}u.info(av(i))}catch(i){throw await n.sendError(i instanceof Error?i:new Error(String(i)),"assets_folders_list",{duration:Date.now()-o}),new f(i,{prefix:`${b} Failed to list folders:`})}}J();S();x();N();as();z();async function $m(e,t){let r,n;if(t.site)r=await T(),n=t.site;else{let{manifest:s}=Z(),a=await Ue(s);r=a.accessToken,n=a.siteId}let o=_.forAssets({authToken:r,siteId:n}),i=Date.now();try{let s=await pv(r,n,e,t.parent);if(await o.sendUsage("assets_folders_create",{duration:Date.now()-i}),t.json){u.info(JSON.stringify(s,null,2));return}u.info(`${L} Folder created: ${s.id}`),u.info(` Name: ${s.displayName}`),s.parentFolder&&u.info(` Parent: ${s.parentFolder}`)}catch(s){throw await o.sendError(s instanceof Error?s:new Error(String(s)),"assets_folders_create",{duration:Date.now()-i}),new f(s,{prefix:`${b} Failed to create folder:`})}}var fv=e=>{let t=e.command("assets").description("Manage Webflow site assets");t.command("list").description("List all assets for a site").addOption(Ct()).option("--folder <folderId>","Filter by folder ID").addOption(Y()).addOption(Le(["id","displayName","originalFileName","contentType","size","lastUpdated"]).default("id,displayName,lastUpdated,size")).addOption(dc()).addOption(pc()).addOption(si(["displayName","originalFileName","contentType","size","lastUpdated"]).default("displayName")).addOption(ii()).action(Rm),t.command("upload").description(`Upload a file as an asset. Use --dry-run to preview before uploading.
203
+ Supported types: png, jpg, jpeg, gif, svg, webp, avif (\u22644 MB); pdf, doc, docx, xls, xlsx, ppt, pptx, txt, csv, odt, ods, odp, json, lottie (\u226410 MB)`).argument("<file>","Path to the file to upload (see supported types above)").addOption(Ct()).option("--name <displayName>","Display name for the asset (defaults to filename)").option("--folder <folderId>","Upload into a folder").addOption(Te()).addOption(Y()).action(Im),t.command("update").description("Update an asset's metadata. Use --dry-run to preview.").argument("<assetId>","Asset ID to update").option("--alt-text <text>","Alt text for the asset").option("--display-name <name>","New display name for the asset").addOption(Te()).addOption(Y()).action(Om);let r=t.command("folders").description("Manage asset folders");r.command("list").description("List all asset folders for a site").addOption(Ct()).addOption(Y()).action(Pm),r.command("create").description("Create a new asset folder").argument("<name>","Display name for the folder").addOption(Ct()).option("--parent <folderId>","Parent folder ID (creates a nested folder)").addOption(Y()).action($m)};J();S();x();N();z();ye();S();dt();async function mv(e,t){ee(t,"siteId");let r=await G(`${I}/v2/sites/${t}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!r.ok)throw new f(`Failed to get site: ${r.status} ${r.statusText}`);return await r.json()}async function gv(e){return la(`${I}/v2/sites`,e,"sites","Failed to list sites")}async function hv(e,t){ee(t,"siteId");let r=await G(`${I}/v2/sites/${t}/custom_domains`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!r.ok)throw new f(`Failed to get custom domains: ${r.status} ${r.statusText}`);return(await r.json()).customDomains??[]}async function yv(e,t,r=[],n){ee(t,"siteId"),n&&ee(n,"pageId");let o=r.length>0?{customDomains:r}:{publishToWebflowSubdomain:!0};n&&(o.pageId=n);let i=await G(`${I}/v2/sites/${t}/publish`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(o)});if(!i.ok)throw new f(`Failed to publish site: ${i.status} ${i.statusText}`);return await i.json()}S();de();var Lm=["id","displayName","shortName","lastPublished","lastUpdated","timeZone"],wv=st(Lm);function Dv(){return Lm}function kv(e,t=["id","displayName","lastPublished"]){if(e.length===0)return R("No sites found.");if(t.length===0)throw new f(`No valid fields specified. Available: ${Lm.join(", ")}`,{isUserError:!0});let r=t.map(o=>te(o)),n=e.map(o=>t.map(i=>{let s=o[i];return s?i==="lastPublished"||i==="lastUpdated"?new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):s:R("\u2014")}));return We(r,n)}function bv(e){if(e.length===0)return R("No custom domains configured.");let t=[te("id"),te("url"),te("lastPublished")],r=e.map(n=>[n.id,n.url,n.lastPublished?new Date(n.lastPublished).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):R("\u2014")]);return We(t,r)}async function Nm(e){let t=await T(),r=_.forSites({authToken:t}),n=Date.now();try{let o=await gv(t);if(await r.sendUsage("sites_list",{duration:Date.now()-n,count:o.length}),e.json){u.info(JSON.stringify(o,null,2));return}if(o.length===0){u.info("No sites found.");return}let i=De(e.fields,wv,Dv());u.info(kv(o,i))}catch(o){throw o instanceof f&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"sites_list",{duration:Date.now()-n}),new f(o,{prefix:`${b} Failed to list sites:`}))}}J();S();x();N();z();async function jm(e,t){let r=await T(),n=_.forSites({authToken:r}),o=Date.now();try{let i=await mv(r,e);if(await n.sendUsage("sites_get",{duration:Date.now()-o}),t.json){u.info(JSON.stringify(i,null,2));return}u.info(`${i.displayName} (${i.id})`),u.info(` Short name: ${i.shortName}`),u.info(` Time zone: ${i.timeZone}`),i.lastPublished&&u.info(` Published: ${new Date(i.lastPublished).toLocaleString()}`),i.previewUrl&&u.info(` Preview: ${i.previewUrl}`)}catch(i){throw i instanceof f&&i.isUserError?i:(await n.sendError(i instanceof Error?i:new Error(String(i)),"sites_get",{duration:Date.now()-o}),new f(i,{prefix:`${b} Failed to get site:`}))}}J();S();x();N();z();async function Mm(e){let t=await T(),r=_.forSites({authToken:t}),n=Date.now();try{let o=await hv(t,e.site);if(await r.sendUsage("sites_domains",{duration:Date.now()-n,count:o.length}),e.json){u.info(JSON.stringify(o,null,2));return}u.info(bv(o))}catch(o){throw o instanceof f&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"sites_domains",{duration:Date.now()-n}),new f(o,{prefix:`${b} Failed to get custom domains:`}))}}J();S();x();N();z();async function Bm(e){if(ee(e.site,"siteId"),e.dryRun){u.info(`Would publish ${e.page?`page ${e.page} on`:"site"} ${e.site}`),e.domains?u.info(` Custom domains: ${e.domains}`):u.info(" Domains: Webflow subdomain");return}let t=await T(),r=_.forSites({authToken:t}),n=Date.now();try{let o=e.domains?e.domains.split(",").map(l=>l.trim()):[],i=await yv(t,e.site,o,e.page);if(await r.sendUsage("sites_publish",{duration:Date.now()-n,dryRun:!1,publishScope:i.publishScope}),e.json){u.info(JSON.stringify(i,null,2));return}let s=i.publishScope==="page"?"Page":"Site";u.info(`${L} ${s} published successfully`);let a=i.customDomains??[];a.length>0?a.forEach(l=>{let c=l.lastPublished?` (${new Date(l.lastPublished).toLocaleString()})`:"";u.info(` Live at: https://${l.url}${c}`)}):i.publishToWebflowSubdomain&&u.info(" Published to Webflow subdomain")}catch(o){throw o instanceof f&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"sites_publish",{duration:Date.now()-n}),new f(o,{prefix:`${b} Failed to publish site:`}))}}var Ev=e=>{let t=e.command("sites").description("Manage Webflow sites");t.command("list").description("List all sites in your Webflow workspace").addOption(Y()).addOption(Le(["id","displayName","shortName","lastPublished","lastUpdated","timeZone"]).default("id,displayName,lastPublished")).action(Nm),t.command("get").description("Get details for a specific site").argument("<siteId>","Site ID").addOption(Y()).action(jm),t.command("domains").description("List custom domains configured for a site").requiredOption("--site <siteId>","Site ID").addOption(Y()).action(Mm),t.command("publish").description("Publish a Webflow site (defaults to Webflow subdomain)").requiredOption("--site <siteId>","Site ID to publish").option("--domains <domains>","Comma-separated custom domain IDs to publish to").option("--page <pageId>","Publish a single page instead of the whole site").addOption(Te()).addOption(Y()).action(Bm)};J();S();x();N();z();ye();async function vv(e,t){return ee(t,"siteId"),la(`${I}/v2/sites/${t}/forms`,e,"forms","Failed to list forms")}async function Sv(e,t,r){return ee(t,"siteId"),ee(r,"formId"),la(`${I}/v2/sites/${t}/forms/${r}/submissions`,e,"formSubmissions","Failed to list submissions")}S();de();var Um=["id","displayName","name","slug","createdOn","lastUpdated"],xv=st(Um);function Cv(){return Um}function _v(e,t=["id","displayName","slug"]){if(e.length===0)return R("No forms found.");if(t.length===0)throw new f(`No valid fields specified. Available: ${Um.join(", ")}`,{isUserError:!0});let r=t.map(o=>te(o)),n=e.map(o=>t.map(i=>{let s=o[i];return s?i==="createdOn"||i==="lastUpdated"?new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):s:R("\u2014")}));return We(r,n)}function Fv(e){if(e.length===0)return R("No submissions found.");let t=Array.from(new Set(e.flatMap(o=>Object.keys(o.formResponse)))),r=["id","dateSubmitted",...t].map(o=>te(o)),n=e.map(o=>[o.id,new Date(o.dateSubmitted).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),...t.map(i=>{let s=o.formResponse[i];return s==null?R("\u2014"):typeof s=="object"?JSON.stringify(s):String(s)})]);return We(r,n)}function Av(e){if(e.length===0)return"";let r=["id","formId","displayName","dateSubmitted",...Array.from(new Set(e.flatMap(i=>Object.keys(i.formResponse))))],n=i=>{let s=i==null?"":typeof i=="object"?JSON.stringify(i):String(i);return s.includes(",")||s.includes('"')||s.includes(`
205
204
  `)?`"${s.replace(/"/g,'""')}"`:s};return[r.join(","),...e.map(i=>r.map(s=>n(s==="id"?i.id:s==="formId"?i.formId:s==="displayName"?i.displayName:s==="dateSubmitted"?i.dateSubmitted:i.formResponse[s])).join(","))].join(`
206
- `)}async function ld(e){z(e.site,"siteId");let t=await E(),r=b.forForms({authToken:t}),n=Date.now();try{let o=await my(t,e.site);if(await r.sendUsage("forms_list",{duration:Date.now()-n,count:o.length}),e.json){l.info(JSON.stringify(o,null,2));return}if(o.length===0){l.info("No forms found.");return}let i=ce(e.fields,hy,wy());l.info(yy(o,i))}catch(o){throw o instanceof d&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"forms_list",{duration:Date.now()-n}),new d(o,{prefix:`${D} Failed to list forms:`}))}}var vy=h(require("fs"));U();x();v();$();W();async function cd(e){z(e.site,"siteId"),z(e.form,"formId"),e.output&&e.json&&l.warn("--json is ignored when --output is set.");let t=await E(),r=b.forForms({authToken:t}),n=Date.now();try{let o=await gy(t,e.site,e.form);if(await r.sendUsage("forms_submissions",{duration:Date.now()-n,count:o.length}),o.length===0){l.info("No submissions found.");return}if(e.output){let i=by(o);vy.default.writeFileSync(e.output,i,"utf8"),l.info(`${O} ${o.length} submission${o.length===1?"":"s"} written to ${e.output}`);return}if(e.json){l.info(JSON.stringify(o,null,2));return}l.info(Dy(o))}catch(o){throw await r.sendError(o instanceof Error?o:new Error(String(o)),"forms_submissions",{duration:Date.now()-n}),new d(o,{prefix:`${D} Failed to fetch submissions:`})}}var Ey=e=>{let t=e.command("forms").description("Manage Webflow forms");t.command("list").description("List all forms for a site").addOption(Xe()).addOption(Y()).addOption(xe(["id","displayName","name","slug","createdOn","lastUpdated"]).default("id,displayName,slug")).action(ld),t.command("submissions").description("List or export form submissions").requiredOption("--site <siteId>","Site ID").requiredOption("--form <formId>","Form ID").option("--json","Output as JSON").option("--output <file>","Save submissions as CSV to a file").action(cd)};var xy=h(ki());function ud(e,t){t.forEach(r=>{e.addOption(r())}),e.commands.forEach(r=>ud(r,t))}function _y(e){let t=xy.default.version;e.name("webflow").description("Webflow CLI").version(t,"-v, --version").configureHelp({formatHelp(r,n){return Fy.Help.prototype.formatHelp.call(this,r,n).split(`
207
- `).flatMap(o=>o.startsWith("Usage:")?["",Q(o)]:/^(Options:|Commands:|Arguments:)/.test(o)?[Q(o)]:/^Webflow CLI$/.test(o)?[md(o)]:o.trim()===""?[o]:[T(o)]).map(o=>o.trim()===""?o:` ${o}`).join(`
205
+ `)}async function Wm(e){ee(e.site,"siteId");let t=await T(),r=_.forForms({authToken:t}),n=Date.now();try{let o=await vv(t,e.site);if(await r.sendUsage("forms_list",{duration:Date.now()-n,count:o.length}),e.json){u.info(JSON.stringify(o,null,2));return}if(o.length===0){u.info("No forms found.");return}let i=De(e.fields,xv,Cv());u.info(_v(o,i))}catch(o){throw o instanceof f&&o.isUserError?o:(await r.sendError(o instanceof Error?o:new Error(String(o)),"forms_list",{duration:Date.now()-n}),new f(o,{prefix:`${b} Failed to list forms:`}))}}var Tv=D(require("fs"));J();S();x();N();z();async function Hm(e){ee(e.site,"siteId"),ee(e.form,"formId"),e.output&&e.json&&u.warn("--json is ignored when --output is set.");let t=await T(),r=_.forForms({authToken:t}),n=Date.now();try{let o=await Sv(t,e.site,e.form);if(await r.sendUsage("forms_submissions",{duration:Date.now()-n,count:o.length}),o.length===0){u.info("No submissions found.");return}if(e.output){let i=Av(o);Tv.default.writeFileSync(e.output,i,"utf8"),u.info(`${L} ${o.length} submission${o.length===1?"":"s"} written to ${e.output}`);return}if(e.json){u.info(JSON.stringify(o,null,2));return}u.info(Fv(o))}catch(o){throw await r.sendError(o instanceof Error?o:new Error(String(o)),"forms_submissions",{duration:Date.now()-n}),new f(o,{prefix:`${b} Failed to fetch submissions:`})}}var Rv=e=>{let t=e.command("forms").description("Manage Webflow forms");t.command("list").description("List all forms for a site").addOption(Ct()).addOption(Y()).addOption(Le(["id","displayName","name","slug","createdOn","lastUpdated"]).default("id,displayName,slug")).action(Wm),t.command("submissions").description("List or export form submissions").requiredOption("--site <siteId>","Site ID").requiredOption("--form <formId>","Form ID").option("--json","Output as JSON").option("--output <file>","Save submissions as CSV to a file").action(Hm)};var ag=D(require("fs")),lg=D(require("path"));x();var yo=D(require("fs")),ho=D(require("path")),Xc=D(require("tar"));S();x();var Gm=D(require("fs")),Sn=D(require("path"));S();var fR=[/\x1b\][\s\S]*?(?:\x07|\x1b\\)/g,/\x1b[P^_][\s\S]*?\x1b\\/g,/\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]/g,/\x1b[\x20-\x7e]/g,/[\x80-\x9f]/g,/[\x00-\x08\x0b-\x1f\x7f]/g,/[\u200b-\u200f\u202a-\u202e\u2060-\u2064\u2066-\u2069\ufeff]/g],mR=/[\r\n\u2028\u2029]+/g;function Vm(e){if(e==null)return"";let t=String(e);for(let r of fR)t=t.replace(r,"");return t}function y(e){return Vm(e).replace(mR," ").trim()}var Iv={impl:Sn.default.posix,caseInsensitive:!1},Km={impl:Sn.default.win32,caseInsensitive:!0};function go(){let e=process.platform;return e==="win32"?Km:{impl:Sn.default.posix,caseInsensitive:e==="darwin"}}function qc(e,t){let r=t.impl.resolve(e);return t.caseInsensitive?r.toLowerCase():r}function xn(e){return typeof e!="string"||e.trim()===""||e.includes("\0")}function et(e,t,r=go()){if(xn(e)||xn(t))return!1;let n=qc(e,r),o=qc(t,r);if(n===o)return!0;let i=r.impl.relative(n,o);return i===""?!0:r.impl.isAbsolute(i)?!1:!i.split(/[\\/]/).some(s=>s===".."||s==="")}async function Yc(e,t,r=go()){if(xn(e)||xn(t))return!1;let[n,o]=await Promise.all([ir(e),ir(t)]);return et(n,o,r)}function Re(e,t,r,n=go()){if(!et(e,t,n))throw new f(`Refusing to continue: ${r} resolves outside the directory it must stay inside.
206
+ expected inside: ${y(e)}
207
+ resolved to: ${y(t)}
208
+ Please report this.`)}async function Ri(e,t,r,n=go()){if(!await Yc(e,t,n))throw new f(`Refusing to continue: ${r} resolves outside the directory it must stay inside once symlinks are followed.
209
+ expected inside: ${y(e)}
210
+ resolved to: ${y(t)}
211
+ Please report this.`)}function gR(e,t,r=go()){return et(e,t,r)||et(t,e,r)}async function zm(e,t,r=go()){if(xn(e)||xn(t))return!1;let[n,o]=await Promise.all([ir(e),ir(t)]);return gR(n,o,r)}function He(e,t,r=go()){return typeof e!="string"||typeof t!="string"||xn(e)||xn(t)?!1:qc(e,r)===qc(t,r)}async function ir(e){let t=Sn.default.resolve(e);try{return await Gm.default.promises.realpath(t)}catch{}try{let r=await Gm.default.promises.realpath(Sn.default.dirname(t));return Sn.default.join(r,Sn.default.basename(t))}catch{return t}}var hR=/^(?:CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])(?:\.|$)/i;function Ii(e){if(!e)return"empty entry path";if(e.includes("\0"))return"NUL byte in entry path";if(/[\x01-\x1f\x7f]/.test(e))return"control character in entry path";if(e.startsWith("/")||e.startsWith("\\"))return"absolute entry path";if(/^[A-Za-z]:/.test(e))return"Windows drive-relative entry path";if(e.includes("\\"))return"backslash in entry path";for(let t of e.split("/")){if(t===""||t==="."){if(t===".")return'traversal segment "." in entry path';continue}if(t==="..")return'traversal segment ".." in entry path';if(/[. ]$/.test(t))return"entry path segment ends with a dot or space";if(hR.test(t))return"Windows reserved device name in entry path"}return null}var Ym=new Set(["File","OldFile","ContiguousFile","Directory","GNUDumpDir"]),yR=new Set(["TAR_ENTRY_INVALID","TAR_BAD_ARCHIVE","TAR_ABORT","TAR_ENTRY_ERROR"]),wR=32,DR=512,Jm=10,$v=100,Ov=100;function Lv(){return{retained:[],fatal:[],fatalCount:0,count:0}}function Nv(e,t,r){e.count+=1;let n={code:t,message:Vm(r)};e.retained.length<Ov&&e.retained.push(n),yR.has(t)&&(e.fatalCount+=1,e.fatal.length<Ov&&e.fatal.push(n))}async function jv(e,t,r){let n=await kR(r.containmentRoot),o=await bR(n,t),i=await Pv(e),s=await vR(e,r),a=await xR(e,o,r);if(a.warnings.fatal.length>0)throw Vv(a.warnings.fatal,a.warnings.fatalCount);for(let c of a.warnings.retained)u.debug(`tar warning ${c.code}: ${c.message}`);if(a.refused.length>0)throw FR(a.refused,a.refusedCount);let l=await Pv(e);if(i!==l)throw new f("Refusing to continue: the downloaded archive changed while it was being read, so what was validated is not what was extracted. Nothing about the extracted directory can be trusted. Please retry.");return await CR(n,o),{skipped:s.skipped,fileCount:a.fileCount,unpackedBytes:a.unpackedBytes,warnings:[...s.warnings.retained,...a.warnings.retained],warningCount:s.warnings.count+a.warnings.count}}async function Pv(e){try{let t=await yo.default.promises.stat(e);return[t.dev,t.ino,t.size,t.mtimeMs,t.ctimeMs].join(":")}catch(t){throw new f(`Could not read the downloaded archive: ${t instanceof Error?t.message:String(t)}`)}}async function kR(e){try{return await yo.default.promises.realpath(ho.default.resolve(e))}catch(t){throw new f(`Refusing to extract: the directory the extraction must stay inside ("${y(e)}") could not be resolved: ${t instanceof Error?t.message:String(t)}`)}}async function bR(e,t){let r=ho.default.resolve(t);Re(e,r,"the extraction directory");let o=ho.default.relative(e,r).split(ho.default.sep).filter(s=>s!==""),i=e;for(let s of o){i=ho.default.join(i,s);let a=await ER(i);if(a===null){await yo.default.promises.mkdir(i);continue}if(a.isSymbolicLink())throw new f(`Refusing to extract: "${y(i)}" is a symbolic link, and extracting into it would write the archive somewhere other than where it was checked. Remove or replace it with a real directory and retry.`);if(!a.isDirectory())throw new f(`Refusing to extract: "${y(i)}" exists and is not a directory.`)}return r}async function ER(e){try{return await yo.default.promises.lstat(e)}catch(t){if(t.code==="ENOENT")return null;throw new f(`Could not inspect "${y(e)}": ${t instanceof Error?t.message:String(t)}`)}}async function vR(e,t){let r=Mv(t.limits),n=Wv(t.consumedSubtrees),o=[],i=[],s=Lv(),a=0,l=0,c=0,d=!1,p=!1,h=(g,m)=>{c+=1,o.length<$v&&o.push({entryPath:g,reason:m})};try{await Xc.list({file:e,onReadEntry:g=>{let m=g.path,w=g.type;if(Bv(w)||(a+=1,a>r.maxFiles&&!d&&(d=!0,h(m,`archive has more than ${r.maxFiles} files`))),!Ym.has(w)){let A=`unsupported entry type ${w}`;n(m)?h(m,A):d||i.push({entryPath:m,reason:A});return}let k=Ii(m)??Uv(m,r);if(k){h(m,k);return}let F=g.size;F>r.maxEntryBytes&&h(m,`entry is ${Oi(F)}, over the ${Oi(r.maxEntryBytes)} per-file cap`),l+=F,l>r.maxUnpackedBytes&&!p&&(p=!0,h(m,`unpacked total passes the ${Oi(r.maxUnpackedBytes)} cap`))},onwarn:(g,m)=>{Nv(s,g,m)}})}catch(g){throw g instanceof f?g:new f(`Could not read the downloaded archive: ${g instanceof Error?g.message:String(g)}`)}if(o.length>0)throw _R(o,c);if(s.fatal.length>0)throw Vv(s.fatal,s.fatalCount);for(let g of i)u.debug(`Skipped archive entry "${y(g.entryPath)}": ${g.reason}`);return{skipped:i,warnings:s}}function SR(e,t,r,n){if(!Ym.has(t))return`unsupported entry type ${t}`;let o=Ii(e)??Uv(e,n);return o||(r>n.maxEntryBytes?`entry is ${Oi(r)}, over the ${Oi(n.maxEntryBytes)} per-file cap`:null)}async function xR(e,t,r){let n=Mv(r.limits),o=Wv(r.consumedSubtrees),i=Lv(),s=[],a=0,l=0,c=0,d=(g,m)=>(a+=1,s.length<$v&&s.push({entryPath:g,reason:m}),!1),p=()=>!1,h=(g,m)=>{let w="type"in m?m.type:m.isDirectory()?"Directory":"File",k=m.size;if(!Ym.has(w)&&!o(g))return p();let F=SR(g,w,k,n);if(F)return d(g,F);if(c+k>n.maxUnpackedBytes)return d(g,`unpacked total passes the ${Oi(n.maxUnpackedBytes)} cap`);if(!Bv(w)){if(l+1>n.maxFiles)return d(g,`archive has more than ${n.maxFiles} files`);l+=1}return c+=k,!0};try{await Xc.extract({file:e,cwd:t,strip:r.strip??0,preservePaths:!1,filter:h,onwarn:(g,m)=>{Nv(i,g,m)}})}catch(g){throw g instanceof f?g:new f(`Could not extract the downloaded archive: ${g instanceof Error?g.message:String(g)}`)}return{warnings:i,fileCount:l,unpackedBytes:c,refused:s,refusedCount:a}}async function CR(e,t){Re(e,await yo.default.promises.realpath(t),"the extracted directory");let r=[t];for(;r.length>0;){let n=r.pop(),o=await yo.default.promises.readdir(n,{withFileTypes:!0});for(let i of o){let s=ho.default.join(n,i.name);if(!i.isFile()&&!i.isDirectory())throw new f(`Refusing to continue: extraction produced a non-regular entry at "${y(s)}". Please report this.`);Re(e,s,"an extracted archive entry"),i.isDirectory()&&r.push(s)}}}function Mv(e){return{maxUnpackedBytes:e.maxUnpackedBytes,maxFiles:e.maxFiles,maxEntryBytes:e.maxEntryBytes,maxPathDepth:e.maxPathDepth??wR,maxPathLength:e.maxPathLength??DR}}function Bv(e){return e==="Directory"||e==="GNUDumpDir"}function qm(e){return e.replace(/\/+$/,"")}function Uv(e,t){let r=qm(e);if(r.length>t.maxPathLength)return`entry path is ${r.length} characters, over the ${t.maxPathLength}-character limit`;let n=r.split("/").filter(o=>o!=="").length;return n>t.maxPathDepth?`entry path is ${n} levels deep, over the ${t.maxPathDepth}-level limit`:null}function Wv(e){let t=e.map(qm);return r=>{let n=qm(r).split("/").slice(1).join("/");return t.some(o=>n===o||n.startsWith(`${o}/`))}}function Oi(e){if(e<1024)return`${e} B`;let t=["KiB","MiB","GiB"],r=e/1024,n=t[0];for(let o=1;o<t.length&&r>=1024;o+=1)r/=1024,n=t[o];return`${parseFloat(r.toFixed(1))} ${n}`}function _R(e,t){return new f(`Refusing to extract the downloaded archive: it contains ${t} ${t===1?"entry":"entries"} this CLI will not write.
212
+ ${Hv(e,t).join(`
213
+ `)}
214
+ Nothing was extracted. Please report this.`)}function FR(e,t){return new f(`Refusing to continue: the downloaded archive changed while it was being read. ${t} ${t===1?"entry":"entries"} that passed validation would not have passed it on the second read.
215
+ ${Hv(e,t).join(`
216
+ `)}
217
+ The extracted directory cannot be trusted. Please retry.`)}function Hv(e,t){let r=e.slice(0,Jm),n=r.map(i=>` - "${y(i.entryPath)}": ${i.reason}`),o=t-r.length;return o>0&&n.push(` \u2026 and ${o} more.`),n}function Vv(e,t){let r=e.slice(0,Jm).map(o=>` - ${o.code}: ${o.message}`),n=t-Math.min(e.length,Jm);return n>0&&r.push(` \u2026 and ${n} more.`),new f(`The downloaded archive could not be read safely and was rejected: ${t} ${t===1?"problem":"problems"} found.
218
+ ${r.join(`
219
+ `)}
220
+ This usually means the download was corrupted \u2014 retrying often fixes it. If it persists, please report this.`)}var AR="webflow",Xm="webflow-skills",ue=`${AR}/${Xm}`,je="main",Zc=`plugins/${Xm}`,Gr=`${Zc}/.claude-plugin/plugin.json`,Zm=[`${Zc}/skills`,"skills"],Gv=[`${Zc}/skills`,`${Zc}/.claude-plugin`];function Kv(e){return`${Xm}-${e}`}var zt=/^[0-9a-f]{40}$/,Qc=/^[A-Za-z0-9._/-]{1,255}$/,TR=["webflow-mcp","webflow-cli","webflow-code-component","webflow-university"];function zv(e){let t=e.split(":",1)[0];return TR.includes(t)}var Tt="https://api.github.com",wo="https://codeload.github.com";var Jv="skills",eu="download-",tu="extract-";var zr=D(require("fs")),ou=D(require("path"));ml();S();x();S();function Yv(e){let t=r=>Math.round(r*10)/10;return e>=1024*1024?`${t(e/(1024*1024))} MiB`:e>=1024?`${t(e/1024)} KiB`:`${e} bytes`}function sr(e){try{return new URL(e).hostname}catch{return e}}function RR(e){return new f(`Could not find ref "${y(e)}" in ${ue}.
221
+ \u2022 The default branch is "${je}".
222
+ \u2022 This repo has no tags or releases yet, so "--ref v1.0.7" will not resolve.
223
+ \u2022 Pass a branch name or a full 40-character commit SHA.`,{isUserError:!0,missingFlag:"--ref"})}function IR(e){if(!e)return"a few minutes";let t=Number(e);if(!Number.isFinite(t)||t<=0)return"a few minutes";let r=new Date(t*1e3);if(Number.isNaN(r.getTime()))return"a few minutes";let n=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0");return`${n}:${o} local time`}function OR(e){return new f(`GitHub API rate limit reached (60 requests/hour per IP for unauthenticated calls).
224
+ \u2022 Retry after ${IR(e)}.
225
+ \u2022 Or set GITHUB_TOKEN / GH_TOKEN in your environment to raise the limit to 5,000/hour.
226
+ \u2022 Shared CI runners and corporate NAT hit this quickly.`,{isUserError:!0})}function PR(){return new f(`GitHub refused the request (403). This is a permission error, not a rate limit.
227
+ \u2022 If you are behind a proxy that filters ${sr(Tt)}, set HTTPS_PROXY.
228
+ \u2022 If GITHUB_TOKEN or GH_TOKEN is set, check that it is not expired or revoked.`,{isUserError:!0})}function $R(e,t){return new f(`${sr(e)} returned ${t} twice. This is usually transient \u2014 try again shortly.`)}function LR(e,t,r){return new f(`${sr(e)} returned an unexpected ${t} ${y(r)} response. Please report this if it persists.`)}function Pi(e,t,r){let{status:n}=t;if(n===404)return RR(r??je);let o=t.headers.get("x-ratelimit-remaining");return n===429||n===403&&o==="0"?OR(t.headers.get("x-ratelimit-reset")):n===403?PR():n>=500?$R(e,n):LR(e,n,t.statusText)}function Xv(e){let t=e?sr(e):"an unnamed host";return new f(`Refusing to follow a redirect to ${y(t)} while a GitHub token is attached, because the token would be re-sent to that host. Unset GITHUB_TOKEN / GH_TOKEN to retry unauthenticated, or report this if ${sr(Tt)} is genuinely redirecting.`,{isUserError:!0})}function qv(e,t){return new f(`Could not reach ${sr(e)}${t?` (${t})`:""}.
229
+ \u2022 Check your network connection.
230
+ \u2022 Behind a corporate proxy, set HTTPS_PROXY. Note that the CLI's HTTP client does not read proxy environment variables automatically.
231
+ \u2022 Already-installed skills are unaffected; "webflow skills list" works offline.`,{isUserError:!0})}function ru(e,t){return new f(`Timed out after ${Math.round(t/1e3)}s waiting for ${sr(e)}.
232
+ \u2022 Check your network connection, then retry.
233
+ \u2022 Behind a corporate proxy, set HTTPS_PROXY.
234
+ \u2022 Already-installed skills are unaffected; "webflow skills list" works offline.`,{isUserError:!0})}function nu(){return new f(`The skills catalog download exceeded ${Yv(33554432)}. This is unexpected for a documentation repository \u2014 please report it.`)}function Zv(e){return new f(`Commit ${y(e)} of ${ue} is no longer downloadable. It was resolvable a moment ago, so the branch was probably force-pushed.
235
+ \u2022 Retry without --ref to take the current "${je}".`,{isUserError:!0})}function Qv(){return new f("The skills catalog download returned no response body. Please retry.")}function fa(e){return new f(`Ran out of disk space while ${e}. Free some space and retry.`,{isUserError:!0})}function eS(){return new f(`${sr(Tt)} answered the ref lookup with something that is not a 40-character commit SHA. Refusing to guess at what to install. Please report this if it persists.`)}function tS(){return new f(`${sr(Tt)} answered the ref lookup with more than ${Yv(4096)}, so it is not the bare commit SHA this endpoint returns. Refusing to guess at what to install.
236
+ \u2022 If a proxy is intercepting ${sr(Tt)} and serving its own page, set HTTPS_PROXY to the proxy itself.`,{isUserError:!0})}function $i(e){return new f(`Expected a full 40-character commit SHA but got "${y(e)}".`,{isUserError:!0,missingFlag:"--ref"})}function Kr(e,t){return new f(`Invalid --ref "${y(e)}": ${t}.
237
+ \u2022 Pass a branch name (e.g. "${je}") or a commit SHA.`,{isUserError:!0,missingFlag:"--ref"})}function rS(e,t){let r=t.length===0?"nothing":t.map(n=>`"${y(n)}"`).join(", ");return new f(`The skills catalog archive did not have the expected layout: expected exactly one top-level directory named "${e}", found ${r}. Please report this.`)}var NR=new Set(["ENOTFOUND","EAI_AGAIN","ECONNREFUSED","ECONNRESET","EHOSTUNREACH","ENETUNREACH","EPIPE","EPROTO","ETIMEDOUT","UND_ERR_CONNECT_TIMEOUT","CERT_HAS_EXPIRED"]);function jR(e){if(typeof e!="object"||e===null)return;let t=e;if(typeof t.code=="string")return t.code;if(typeof t.errno=="string")return t.errno}function ga(e,t,r){if(r instanceof f)return r;let n=jR(r);if(n==="ENOSPC"||n==="EDQUOT"||n==="EFBIG")return fa("writing the skills catalog");if(n&&NR.has(n))return qv(e,n);let o=r?.type;if(o==="request-timeout")return ru(e,t);if(o==="max-size")return nu();let i=r instanceof Error?r.message:String(r);return/network timeout|timed? ?out/i.test(i)?ru(e,t):/getaddrinfo|ENOTFOUND|EAI_AGAIN|ECONNREFUSED/i.test(i)?qv(e,""):new f(`Could not fetch the skills catalog from ${sr(e)}: ${y(i)}`)}function Li(){return ou.default.join(tw(),Jv)}function eg(e){if(!zt.test(e))throw $i(e);return ou.default.join(Li(),e)}async function ha(){let e=Li();try{return await zr.default.promises.mkdir(e,{recursive:!0,mode:448}),await zr.default.promises.realpath(e)}catch(t){throw t.code==="ENOSPC"?fa("creating the skills cache directory"):new f(`Could not create the skills cache directory "${y(e)}": ${t instanceof Error?t.message:String(t)}`)}}async function tg(e){let t=eg(e),r;try{r=await zr.default.promises.lstat(t)}catch(n){return n.code==="ENOENT"||u.debug(`Could not inspect skills cache entry: ${n instanceof Error?n.message:String(n)}`),null}if(r.isSymbolicLink())throw new f(`Refusing to use the skills cache: "${y(t)}" is a symbolic link, so reading it would install whatever it points at. Remove it and retry.`);return r.isDirectory()?t:(u.debug(`Skills cache entry for ${e} is not a directory; treating as a miss.`),null)}var BR=new Set(["EEXIST","ENOTEMPTY","EPERM","EACCES"]);async function UR(e){try{return(await zr.default.promises.lstat(e)).isDirectory()}catch{return!1}}async function rg(e,t){let r=eg(e),n=Li();await Ri(n,r,"the skills cache entry"),await Ri(n,t,"the extracted skills catalog being published");try{return await zr.default.promises.rename(t,r),{dir:r,published:!0}}catch(o){let i=o.code;if(i==="ENOSPC")throw fa("publishing the skills catalog to the cache");if(i!==void 0&&BR.has(i)&&await UR(r))return u.debug(`Skills cache entry for ${e} appeared concurrently; reusing it.`),{dir:r,published:!1};throw new f(`Could not publish the extracted skills catalog to the cache: ${o instanceof Error?o.message:String(o)}`)}}async function Do(e){await Ri(Li(),e,"the skills cache path being removed");try{await zr.default.promises.rm(e,{recursive:!0,force:!0})}catch(t){u.debug(`Could not remove skills cache path "${y(e)}": ${t instanceof Error?t.message:String(t)}`)}}function WR(e){return zt.test(e)||e.startsWith(eu)||e.startsWith(tu)}async function iu(e){let t=Li(),r;try{r=await zr.default.promises.readdir(t,{withFileTypes:!0})}catch(o){o.code!=="ENOENT"&&u.debug(`Skills cache sweep skipped: ${o instanceof Error?o.message:String(o)}`);return}let n=Date.now()-6048e5;for(let o of r){if(o.name===e||!WR(o.name))continue;let i=ou.default.join(t,o.name);try{if((await zr.default.promises.lstat(i)).mtimeMs>=n)continue;await Do(i),u.debug(`Swept stale skills cache entry "${o.name}".`)}catch(s){u.debug(`Skills cache sweep could not handle "${o.name}": ${s instanceof Error?s.message:String(s)}`)}}}var ig=D(require("fs")),ng=D(require("path")),iS=require("stream"),sS=require("stream/promises");dt();x();var HR="catalog.tar.gz",ya=class extends Error{constructor(){super("skills catalog download exceeded its time budget"),this.name="DownloadDeadlineExceeded"}},su=class extends Error{constructor(){super("skills catalog download exceeded its byte cap"),this.name="DownloadCapExceeded"}},og=class extends iS.Transform{constructor(r){super();this.cap=r}bytes=0;_transform(r,n,o){let i=Buffer.isBuffer(r)?r:Buffer.from(r);if(this.bytes+=i.length,this.bytes>this.cap){o(new su);return}o(null,i)}};async function sg(e){if(!zt.test(e))throw $i(e);let t=await ha(),r=await ig.default.promises.mkdtemp(ng.default.join(t,eu)),n=ng.default.join(r,HR),o=`${wo}/${ue}/tar.gz/${e}`;try{let i=await VR(o,e),s=await GR(i,n);return u.debug(`Downloaded skills catalog ${e} (${s} bytes).`),{tarPath:n,downloadDir:r,bytes:s}}catch(i){throw await Do(r),ga(wo,6e4,i)}}async function VR(e,t){let r=0;for(let n=0;n<2;n+=1){let o=await G(e,{headers:{Accept:"application/x-gzip"},timeout:6e4});if(o.ok){let i=Number(o.headers.get("content-length"));if(Number.isFinite(i)&&i>33554432)throw nu();return o}if(o.status>=500&&n===0){r=o.status,u.debug(`codeload.github.com returned ${o.status}; retrying once in ${1e3}ms.`),await new Promise(i=>{setTimeout(i,1e3)});continue}throw o.status===404?Zv(t):Pi(wo,o)}throw Pi(wo,{status:r||500,statusText:"Server Error",headers:{get:()=>null}})}async function GR(e,t){let r=e.body;if(!r)throw Qv();let n=new og(33554432),o=setTimeout(()=>{r.destroy?.(new ya),n.destroy(new ya)},6e4);o.unref?.();try{await(0,sS.pipeline)(r,n,ig.default.createWriteStream(t,{mode:384}))}catch(i){throw oS(i,su)?nu():oS(i,ya)?ru(wo,6e4):i}finally{clearTimeout(o)}return n.bytes}function oS(e,t){if(e instanceof t)return!0;if(e instanceof Error){if(e.name===t.name)return!0;let r=e.cause;if(r instanceof t||r instanceof Error&&r.name===t.name)return!0}return!1}dt();x();var KR=["GITHUB_TOKEN","GH_TOKEN"];function zR(){for(let e of KR){let t=(process.env[e]??"").trim();if(t!=="")return t}return null}function JR(e){if(e==="")throw Kr(e,"it is empty");if(!Qc.test(e))throw Kr(e,"refs may only contain letters, digits, '.', '_', '-' and '/', and must be at most 255 characters");if(e.startsWith("-"))throw Kr(e,"it starts with '-'");if(e.includes(".."))throw Kr(e,"it contains '..'");if(e.endsWith(".lock"))throw Kr(e,"it ends with '.lock'");if(e.startsWith("/")||e.endsWith("/"))throw Kr(e,"it starts or ends with '/'");if(e.includes("//"))throw Kr(e,"it contains '//'");for(let t of e.split("/"))if(t.endsWith("."))throw Kr(e,"a path component ends with '.'")}function qR(e){return e.split("/").map(encodeURIComponent).join("/")}function YR(e){return new Promise(t=>{setTimeout(t,e)})}async function ka(e=je){if(zt.test(e))return u.debug(`Skills ref "${e}" is already a full commit SHA.`),{ref:e,commit:e,resolvedOffline:!0};JR(e);let t=zR(),r=`${Tt}/repos/${ue}/commits/${qR(e)}`;u.debug(`Resolving skills ref "${e}" via api.github.com (${t?"authenticated":"unauthenticated"}).`);let n=await XR(r,e,t),o=await QR(n);return u.debug(`Skills ref "${e}" resolved to ${o}.`),{ref:e,commit:o,resolvedOffline:!1}}async function XR(e,t,r){let n=null;for(let o=0;o<2;o+=1){let i;try{i=await G(e,{headers:{Accept:"application/vnd.github.sha",...r?{Authorization:`Bearer ${r}`}:{}},timeout:1e4,...r?{redirect:"manual"}:{}})}catch(s){throw ga(Tt,1e4,s)}if(r&&i.status>=300&&i.status<400)throw Xv(i.headers.get("location"));if(i.ok)return i;if(i.status>=500&&(n=i.status,o===0)){u.debug(`api.github.com returned ${i.status}; retrying once in ${1e3}ms.`),await YR(1e3);continue}throw Pi(Tt,i,t)}throw Pi(Tt,{status:n??500,statusText:"Server Error",headers:{get:()=>null}},t)}var lu=class extends Error{constructor(){super("ref lookup response exceeded its byte cap"),this.name="RefResponseTooLarge"}};async function ZR(e){let t=e.body;if(!t)return"";let r=[],n=0;for await(let o of t){let i=Buffer.isBuffer(o)?o:Buffer.from(o);if(n+=i.length,n>4096)throw new lu;r.push(i)}return Buffer.concat(r).toString("utf8")}async function QR(e){let t;try{t=await ZR(e)}catch(n){throw n instanceof lu?tS():ga(Tt,1e4,n)}let r=t.trim();if(!zt.test(r))throw eS();return r}async function Ni(e={}){let t=await eI(e),{commit:r,ref:n}=t,o=await tg(r);if(o)return u.debug(`Using cached skills catalog for ${r}.`),await iu(r),{ref:n,commit:r,root:o,fromCache:!0,skippedEntries:[],downloadedBytes:0};let i=await tI(r);return await iu(r),{ref:n,commit:r,...i}}async function eI(e){if(e.commit!==void 0){if(!zt.test(e.commit))throw $i(e.commit);return{ref:e.ref??e.commit,commit:e.commit,resolvedOffline:!0}}return ka(e.ref)}async function tI(e){let t=await ha(),r=await sg(e),n=await ag.default.promises.mkdtemp(lg.default.join(t,tu));try{let o=await jv(r.tarPath,n,{strip:0,containmentRoot:t,consumedSubtrees:Gv,limits:{maxUnpackedBytes:26214400,maxFiles:2e3,maxEntryBytes:4194304}}),i=await rI(n,e),{dir:s,published:a}=await rg(e,i);return u.debug(`Extracted skills catalog ${e}: ${o.fileCount} files, ${o.unpackedBytes} bytes, ${o.skipped.length} entries skipped${a?"":" (another process published first)"}.`),{root:s,fromCache:!1,skippedEntries:o.skipped,downloadedBytes:r.bytes}}finally{await Do(n),await Do(r.downloadDir)}}async function rI(e,t){let r=Kv(t),n=await ag.default.promises.readdir(e,{withFileTypes:!0}),o=n.filter(i=>i.isDirectory());if(n.length!==1||o.length!==1||o[0].name!==r)throw rS(r,n.map(i=>i.name));return lg.default.join(e,r)}var ko=`https://github.com/${ue}/issues`,Rt="SKILL.md",ba=new Set([".git","node_modules","__pycache__",".DS_Store"]),bo=new Set([".git","node_modules","__pycache__"]),Eo=new Set([".DS_Store","Thumbs.db"]),vo=8,cu=512,uu=128,uS=1024,dS=32,pS=256,fS=64,mS=64,cg=/^[a-z0-9]+(?:[-.][a-z0-9]+)*(?::[a-z0-9]+(?:[-.][a-z0-9]+)*)?$/,gS=256,hS=4;var ug=D(require("fs")),ji=D(require("path"));S();async function Mi(e){let t=ji.default.join(e,...Gr.split("/"));Re(e,t,"the catalog plugin manifest");let r;try{r=await ug.default.promises.readFile(t,"utf8")}catch(i){if(!iI(i))throw new f(`Failed to read the catalog manifest at ${Gr}: ${i instanceof Error?i.message:String(i)}`)}if(r===void 0)return{...await yS(e),version:"",source:"fallback"};let n=oI(r);if(n.skills===void 0)return{...await yS(e),version:n.version,source:"fallback"};let o=await nI(t,n.skills,e);if(!o)throw new f(`The catalog manifest at ${Gr} declares its skills directory as "${y(n.skills)}", which does not exist in the downloaded catalog. This is a bug in ${ue}. Please report it.`);return{version:n.version,skillsDir:o.skillsDir,source:"manifest",warnings:o.warnings}}async function nI(e,t,r){let n=ji.default.dirname(e),o=[{base:ji.default.dirname(n),relativeTo:"plugin root"},{base:n,relativeTo:"manifest directory"}];for(let[i,s]of o.entries()){let a=ji.default.resolve(s.base,t);if(Re(r,a,"the catalog skills directory"),!!await wS(a))return{skillsDir:a,warnings:i===0?[]:[`The catalog manifest at ${Gr} declares "skills": "${y(t)}", which only resolves relative to the ${s.relativeTo}. This means ${ue} changed its layout; please report it at ${ko}.`]}}}function oI(e){let t;try{t=JSON.parse(e)}catch(o){throw new f(`The catalog manifest at ${Gr} is not valid JSON: ${o instanceof Error?o.message:String(o)}. This is a bug in ${ue}. Please report it.`)}if(t===null||typeof t!="object"||Array.isArray(t))throw new f(`The catalog manifest at ${Gr} is not a JSON object. This is a bug in ${ue}. Please report it.`);let r=t,n=r.skills;if(n!==void 0&&(typeof n!="string"||n.trim()===""))throw new f(`The catalog manifest at ${Gr} declares "skills" as ${sI(n)}, but it must be a non-empty string. This is a bug in ${ue}. Please report it.`);return{version:typeof r.version=="string"?r.version.trim():"",skills:typeof n=="string"?n:void 0}}async function yS(e){for(let t of Zm){let r=ji.default.join(e,...t.split("/"));if(Re(e,r,"the catalog skills directory"),!!await wS(r))return{skillsDir:r,warnings:[`Catalog manifest not found \u2014 falling back to ${t}. This means ${ue} changed its layout; please report it at ${ko}.`]}}throw new f(`The downloaded catalog has no skills directory: ${Gr} is absent and none of ${Zm.join(", ")} exists. This is a bug in ${ue}. Please report it.`)}async function wS(e){try{return(await ug.default.promises.stat(e)).isDirectory()}catch{return!1}}function iI(e){return typeof e=="object"&&e!==null&&e.code==="ENOENT"}function sI(e){return e===null?"null":Array.isArray(e)?"an array":typeof e=="string"?"an empty string":typeof e=="object"?"an object":`a ${typeof e}`}var DS=require("yaml");var It=class extends Error{reason;constructor(t){super(t),this.name="SkillParseError",this.reason=t}},aI=/^---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*\r?\n?([\s\S]*)$/,lI=/^\uFEFF/,cI="frontmatter delimiters found but not parseable (check for a byte-order mark or stray whitespace on the --- lines)",kS="\u2014 wrap the value in double quotes",uI={version:"1.2",logLevel:"silent",prettyErrors:!1,uniqueKeys:!0},dI=100,pI=$.object({name:$.string().trim().min(1).max(uu),description:$.string().trim().min(1).max(uS),"mcp-version":$.string().max(dS).optional(),compatibility:$.string().max(pS).optional(),license:$.string().max(fS).optional(),metadata:$.record($.unknown()).optional()}).passthrough(),dg=["name","description"];function So(e){let t=e.replace(lI,""),r=aI.exec(t);if(!r){if(t.trimStart().startsWith("---"))throw new It(cI);return{frontmatter:pg({}),body:t,raw:e}}let n=r[1]??"",o=r[2]??"",i=fI(n,1);return{frontmatter:pg(i),body:o,raw:e}}function fI(e,t){let r=(0,DS.parseDocument)(e,uI),[n]=r.errors;if(n)throw new It(mI(n,e,t));let o;try{o=r.toJS({maxAliasCount:dI})}catch(i){throw new It(`YAML parse error: ${i instanceof Error?i.message:String(i)}`)}if(o==null)return{};if(typeof o!="object"||Array.isArray(o)||o instanceof Date)throw new It(`frontmatter is not a YAML mapping (parsed as ${fg(o)})`);return o}function mI(e,t,r){let n=e.pos?.[0],o="",i="";if(typeof n=="number"&&n>=0){let a=t.slice(0,n),l=a.split(`
238
+ `).length,c=n-(a.lastIndexOf(`
239
+ `)+1)+1;o=` at line ${l+r}, column ${c}`,i=t.split(/\r?\n/)[l-1]??""}let s=i.includes(": ")?` ${kS}`:"";return`YAML parse error: ${e.message}${o}${s}`}function pg(e){if(e===null||typeof e!="object"||Array.isArray(e)||e instanceof Date)throw new It(`frontmatter is not a YAML mapping (parsed as ${fg(e)})`);let t={...e},r=dg.filter(i=>!(i in t)||t[i]===void 0);if(r.length>0)throw new It(`missing required frontmatter field(s): ${r.join(", ")}`);let n=dg.filter(i=>{let s=t[i];return typeof s!="string"||s.trim()===""});if(n.length>0){let i=dg.map(a=>fg(t[a])).join(" and "),s=n.some(a=>hI(t[a]));throw new It(`frontmatter "name" and "description" must be non-empty strings (got ${i})${s?` ${kS}`:""}`)}t.metadata=gI(t.metadata),t.metadata===void 0&&delete t.metadata;let o=pI.safeParse(t);if(!o.success){let[i]=o.error.issues,s=i?.path.join(".")||"frontmatter";throw new It(`frontmatter "${s}" is invalid: ${i?.message??"unknown error"}`)}return o.data}function gI(e){if(e!=null&&!(typeof e!="object"||Array.isArray(e)||e instanceof Date))return e}function hI(e){return!(e==null||typeof e=="string")}function fg(e){return e===null?"null":e===void 0?"nothing":Array.isArray(e)?"list":e instanceof Date?"date":typeof e=="string"?e.trim()===""?"empty string":"string":typeof e=="object"?"mapping":typeof e}function mg(e){let t=e.metadata;return t?t.internal===!0||t.experimental===!0:!1}function gg(e){let t=e.metadata?.category;if(typeof t!="string")return;let r=t.trim();return r===""?void 0:r}var du=D(require("path"));S();var yI=new Set(["con","prn","aux","nul",...Array.from({length:9},(e,t)=>`com${t+1}`),...Array.from({length:9},(e,t)=>`lpt${t+1}`)]),hg="/webflow-skills-store";function Bi(e){if(typeof e!="string")return;let t=bS(e.toLowerCase().replace(/[^a-z0-9._]+/g,"-")).slice(0,mS),r=bS(t);if(r&&!yI.has(r)&&wI(r))return r}function bS(e){return e.replace(/^[.\-]+|[.\-]+$/g,"")}function wI(e){return[Iv,Km].every(r=>{let n=r.impl.join(hg,e);return!et(hg,n,r)||r.impl.basename(n)!==e?!1:r.impl.dirname(n)===r.impl.normalize(hg)})}function yg(e){return cg.test(e)}var Cn=e=>du.default.posix.basename(du.default.posix.dirname(e.split(du.default.win32.sep).join("/")));function Jr(e,t){let r=typeof e=="string"?e.trim():"",n=()=>({kind:"none",candidates:[...new Set(t.map(s=>s.dir))].sort()});if(r==="")return n();let o=[s=>s.name===r,s=>s.folderName===r,s=>s.dir===r],i=Bi(r);i!==void 0&&o.push(s=>s.dir===i||Bi(s.name)===i||Bi(s.folderName)===i);for(let s of o){let a=t.filter(s);if(a.length===1)return{kind:"match",skill:a[0]};if(a.length>1)return{kind:"ambiguous",matches:a}}return n()}function ES(e){return vS(e,t=>t.dir)}function wg(e){let[t]=ES(e);if(!t)return;let r=t.skills.length,n=t.skills.map(o=>` "${y(o.name)}" (${y(o.skillPath)})`);throw new f(`${r===2?"Two":String(r)} skills resolve to the same install directory "${y(t.value)}":
240
+ ${n.join(`
241
+ `)}
242
+ This is a bug in ${ue}. Please report it.`)}function Dg(e){return vS(e,t=>t.name)}function kg(e){let[t,...r]=e.skills;return`${e.skills.length} skills declare the frontmatter name "${y(e.value)}": ${e.skills.map(n=>y(n.skillPath)).join(", ")}. Using ${y(t?.skillPath??"")} and ignoring ${r.length===1?"the other":"the others"}. This is a bug in ${ue}. Please report it.`}function vS(e,t){let r=new Map;for(let n of e){let o=t(n),i=r.get(o);i?i.push(n):r.set(o,[n])}return[...r.entries()].filter(([,n])=>n.length>1).map(([n,o])=>({value:n,skills:o}))}var Ui=D(require("fs")),Jt=D(require("path"));S();async function Wi(e,t){Re(t,e,"the catalog skills directory");let r=[],n=[],o=[],i=new Set,s=p=>(o.push(...p.warnings),p.kind==="skipped"?(n.push({skillPath:p.skillPath,reason:p.reason}),!1):(r.push(p.skill),!p.skill.internal));for(let p of await Ea(e,"the catalog skills directory")){if(ba.has(p.name))continue;let h=Jt.default.join(e,p.name);if(!await bg(h,p))continue;let g=await xS(h);if(g.kind!=="none"&&i.add(g.path),!(g.kind!=="none"&&s(await SS({skillDir:h,manifest:g,extractRoot:t}))))for(let m of await Ea(h)){if(ba.has(m.name))continue;let w=Jt.default.join(h,m.name);if(!await bg(w,m))continue;let k=await xS(w);k.kind!=="none"&&(i.add(k.path),s(await SS({skillDir:w,manifest:k,extractRoot:t,parentCategory:p.name})))}}let a=await kI(r),l=Dg(a),c=new Set;for(let p of l){o.push(kg(p));for(let h of p.skills.slice(1))c.add(h.skillPath)}let d=a.filter(p=>!c.has(p.skillPath));wg(d),o.push(...await bI(e,t,i));for(let p of n)o.push(`Skipped ${p.skillPath} \u2014 ${p.reason}`);return n.length>0&&o.push(`${n.length} skill${n.length===1?" was":"s were"} skipped. ${n.length===1?"This is a defect":"These are defects"} in ${ue} \u2014 please report ${n.length===1?"it":"them"} at ${ko}.`),{skills:d,skipped:n,warnings:o}}async function SS(e){let{skillDir:t,manifest:r,extractRoot:n,parentCategory:o}=e,i=FS(n,r.path),s=[],a=m=>({kind:"skipped",skillPath:i,reason:y(m),warnings:s});if(r.kind==="symlink")return a(`${Rt} is a symbolic link; skill files must be regular files`);let l;try{l=await Ui.default.promises.readFile(r.path,"utf8")}catch(m){return a(`failed to read file: ${m instanceof Error?m.message:String(m)}`)}let c;try{c=So(l).frontmatter}catch(m){if(m instanceof It)return a(m.reason);throw m}let d=y(c.name),p=y(c.description);if(d==="")return a(`frontmatter name "${y(c.name)}" cannot be used as a directory name`);let h=Bi(d);if(h===void 0)return a(`frontmatter name "${d}" cannot be used as a directory name`);yg(d)||s.push(`${i} declares a non-standard skill name "${d}"; it installs as "${h}". This is a bug in ${ue}.`);let g=await DI(t,r.path);return g.symlink?a(`contains a symbolic link (${g.symlink}); skill files must be regular files`):(g.truncated&&s.push(`${i} sits in a directory with more than ${cu} files; only the first ${cu} are listed.`),{kind:"skill",warnings:s,skill:{name:d,dir:h,folderName:Cn(i),description:p,category:gg(c)??o,internal:mg(c),path:t,skillPath:i,supplementaryFiles:g.files}})}async function xS(e){let t=Jt.default.join(e,Rt),r=await CS(t);if(r)return r;let n=Rt.toLowerCase();for(let o of await Ea(e)){if(o.name===Rt||o.name.toLowerCase()!==n)continue;let i=await CS(Jt.default.join(e,o.name));if(i)return i}return{kind:"none"}}async function CS(e){try{let t=await Ui.default.promises.lstat(e);if(t.isSymbolicLink())return{kind:"symlink",path:e};if(t.isFile())return{kind:"file",path:e}}catch{}}async function bg(e,t){if(t.isDirectory())return!0;if(!t.isSymbolicLink())return!1;try{return(await Ui.default.promises.stat(e)).isDirectory()}catch{return!1}}async function Ea(e,t){try{return(await Ui.default.promises.readdir(e,{withFileTypes:!0})).sort((n,o)=>n.name<o.name?-1:n.name>o.name?1:0)}catch(r){if(!t)return[];throw new f(`Failed to read ${t} (${y(e)}): ${r instanceof Error?r.message:String(r)}`)}}async function DI(e,t){let r=[],n,o=!1,i=async(s,a)=>{if(!(a>vo||n!==void 0))for(let l of await Ea(s)){if(n!==void 0)return;let c=Jt.default.join(s,l.name);if(l.isSymbolicLink()){n=_S(e,c);return}if(l.isDirectory()){if(bo.has(l.name))continue;await i(c,a+1);continue}if(l.isFile()&&!Eo.has(l.name)&&c!==t){if(r.length>=cu){o=!0;return}r.push(_S(e,c))}}};return await i(e,1),{files:r.sort(),symlink:n,truncated:o}}async function kI(e){let t=new Set,r=[];for(let n of e){let o;try{o=await Ui.default.promises.realpath(n.path)}catch{o=Jt.default.resolve(n.path)}t.has(o)||(t.add(o),r.push(n))}return r}async function bI(e,t,r){let n=[],o=gS,i=async(s,a)=>{if(!(a>hS||o<=0)){o-=1;for(let l of await Ea(s)){if(ba.has(l.name))continue;let c=Jt.default.join(s,l.name);if(l.isFile()&&l.name.toLowerCase()===Rt.toLowerCase()){r.has(c)||n.push(FS(t,c));continue}await bg(c,l)&&await i(c,a+1)}}};return await i(e,1),n.length===0?[]:[`${n.length} ${Rt} file(s) in the catalog sit outside the layout this CLI reads (for example ${n[0]}) and were ignored. ${ue} may have changed its layout; please report it at ${ko}.`]}function FS(e,t){return Jt.default.relative(e,t).split(Jt.default.sep).join("/")}function _S(e,t){return Jt.default.relative(e,t).split(Jt.default.sep).join("/")}var ar=D(require("os")),Sr=D(require("path"));function xo(e,t){let r=process.env[e]?.trim();return r||t}function AS(e){let t=process.env[e]?.trim();return t||void 0}var oe={home:()=>ar.default.homedir(),configHome:()=>xo("XDG_CONFIG_HOME",Sr.default.join(ar.default.homedir(),".config")),hardcodedConfigHome:()=>Sr.default.join(ar.default.homedir(),".config"),claudeHome:()=>xo("CLAUDE_CONFIG_DIR",Sr.default.join(ar.default.homedir(),".claude")),codexHome:()=>xo("CODEX_HOME",Sr.default.join(ar.default.homedir(),".codex")),vibeHome:()=>xo("VIBE_HOME",Sr.default.join(ar.default.homedir(),".vibe")),hermesHome:()=>xo("HERMES_HOME",Sr.default.join(ar.default.homedir(),".hermes")),autohandHome:()=>xo("AUTOHAND_HOME",Sr.default.join(ar.default.homedir(),".autohand")),grokHome:()=>xo("GROK_HOME",Sr.default.join(ar.default.homedir(),".grok")),appData:()=>AS("APPDATA"),flatpakConfigHome:()=>AS("FLATPAK_XDG_CONFIG_HOME")};function lr(...e){return Sr.default.join(ar.default.homedir(),...e)}var BS=D(require("fs")),fe=D(require("path"));S();N();var kt=D(require("path"));var Eg=[".openclaw",".clawdbot",".moltbot"];function TS(e,t){let r=Eg.find(n=>t(kt.default.join(e,n)));return kt.default.join(e,r??Eg[0],"skills")}function RS(e,t){return Eg.some(r=>t(kt.default.join(e,r)))}function IS(e,t,r=oe.appData(),n=oe.flatpakConfigHome()){return!!(t(kt.default.join(e,"zed"))||r&&t(kt.default.join(r,"Zed"))||n&&t(kt.default.join(n,"zed")))}var vI="/Applications/ZCode.app";function OS(e,t){return t(kt.default.join(e,".zcode"))||t(vI)}function PS(e,t){return t(kt.default.join(e,"kimchi"))}var SI="/etc/codex";function $S(e,t){return t(e)||t(SI)}function LS(e,t){return t(kt.default.join(e,".replit"))}function NS(e,t){return t(kt.default.join(e,".promptscript"))||t(kt.default.join(e,"promptscript.yaml"))}function jS(e,t,r){return r(kt.default.join(t,"data","skills"))||r(kt.default.join(e,".astrbot"))}function MS(){return!1}function xI(e){try{return BS.default.existsSync(e)}catch{return!1}}function le(e,t,r){return{id:e,displayName:t,skillsDir:`${r}/skills`,globalSkillsDir:()=>lr(r,"skills"),detect:n=>n.pathExists(fe.default.join(n.homeDir,r)),sharedStore:!1}}function tt(e){return{id:e.id,displayName:e.displayName,skillsDir:e.project,globalSkillsDir:()=>lr(...e.global),detect:t=>t.pathExists(fe.default.join(t.homeDir,...e.probe)),sharedStore:e.sharedStore??!1,showInSharedPrompt:e.showInSharedPrompt,showInSharedList:e.showInSharedList}}var Ge=".agents/skills",va=[le("aider-desk","AiderDesk",".aider-desk"),{id:"amp",displayName:"Amp",skillsDir:Ge,globalSkillsDir:()=>fe.default.join(oe.configHome(),"agents","skills"),detect:e=>e.pathExists(fe.default.join(e.configHome,"amp")),sharedStore:!0},tt({id:"antigravity",displayName:"Antigravity",project:Ge,global:[".gemini","antigravity","skills"],probe:[".gemini","antigravity"],sharedStore:!0}),tt({id:"antigravity-cli",displayName:"Antigravity CLI",project:Ge,global:[".gemini","antigravity-cli","skills"],probe:[".gemini","antigravity-cli"],sharedStore:!0}),{id:"astrbot",displayName:"AstrBot",skillsDir:"data/skills",globalSkillsDir:()=>lr(".astrbot","data","skills"),detect:e=>jS(e.homeDir,e.cwd,e.pathExists),sharedStore:!1},{id:"autohand-code",displayName:"Autohand Code CLI",skillsDir:".autohand/skills",globalSkillsDir:()=>fe.default.join(oe.autohandHome(),"skills"),detect:e=>e.pathExists(oe.autohandHome()),sharedStore:!1},le("augment","Augment",".augment"),le("bob","IBM Bob",".bob"),{id:"claude-code",displayName:"Claude Code",skillsDir:".claude/skills",globalSkillsDir:()=>fe.default.join(oe.claudeHome(),"skills"),detect:e=>e.pathExists(oe.claudeHome()),sharedStore:!1},{id:"openclaw",displayName:"OpenClaw",skillsDir:"skills",globalSkillsDir:()=>TS(oe.home(),xI),detect:e=>RS(e.homeDir,e.pathExists),sharedStore:!1},tt({id:"cline",displayName:"Cline",project:Ge,global:[".agents","skills"],probe:[".cline"],sharedStore:!0}),le("codearts-agent","CodeArts Agent",".codeartsdoer"),{id:"codebuddy",displayName:"CodeBuddy",skillsDir:".codebuddy/skills",globalSkillsDir:()=>lr(".codebuddy","skills"),detect:e=>e.pathExists(fe.default.join(e.cwd,".codebuddy"))||e.pathExists(fe.default.join(e.homeDir,".codebuddy")),sharedStore:!1},le("codemaker","Codemaker",".codemaker"),le("codestudio","Code Studio",".codestudio"),{id:"codex",displayName:"Codex",skillsDir:Ge,globalSkillsDir:()=>fe.default.join(oe.codexHome(),"skills"),detect:e=>$S(oe.codexHome(),e.pathExists),sharedStore:!0},le("command-code","Command Code",".commandcode"),{id:"continue",displayName:"Continue",skillsDir:".continue/skills",globalSkillsDir:()=>lr(".continue","skills"),detect:e=>e.pathExists(fe.default.join(e.cwd,".continue"))||e.pathExists(fe.default.join(e.homeDir,".continue")),sharedStore:!1},tt({id:"cortex",displayName:"Cortex Code",project:".cortex/skills",global:[".snowflake","cortex","skills"],probe:[".snowflake","cortex"]}),{id:"crush",displayName:"Crush",skillsDir:".crush/skills",globalSkillsDir:()=>fe.default.join(oe.hardcodedConfigHome(),"crush","skills"),detect:e=>e.pathExists(fe.default.join(oe.hardcodedConfigHome(),"crush")),sharedStore:!1},tt({id:"cursor",displayName:"Cursor",project:Ge,global:[".cursor","skills"],probe:[".cursor"],sharedStore:!0}),tt({id:"deepagents",displayName:"Deep Agents",project:Ge,global:[".deepagents","agent","skills"],probe:[".deepagents"],sharedStore:!0}),{id:"devin",displayName:"Devin for Terminal",skillsDir:".devin/skills",globalSkillsDir:()=>fe.default.join(oe.configHome(),"devin","skills"),detect:e=>e.pathExists(fe.default.join(e.configHome,"devin")),sharedStore:!1},tt({id:"dexto",displayName:"Dexto",project:Ge,global:[".agents","skills"],probe:[".dexto"],sharedStore:!0,showInSharedPrompt:!1}),le("droid","Droid",".factory"),tt({id:"firebender",displayName:"Firebender",project:Ge,global:[".firebender","skills"],probe:[".firebender"],sharedStore:!0,showInSharedPrompt:!1}),le("forgecode","ForgeCode",".forge"),tt({id:"gemini-cli",displayName:"Gemini CLI",project:Ge,global:[".gemini","skills"],probe:[".gemini"],sharedStore:!0}),tt({id:"github-copilot",displayName:"GitHub Copilot",project:Ge,global:[".copilot","skills"],probe:[".copilot"],sharedStore:!0}),{id:"goose",displayName:"Goose",skillsDir:".goose/skills",globalSkillsDir:()=>fe.default.join(oe.configHome(),"goose","skills"),detect:e=>e.pathExists(fe.default.join(e.configHome,"goose")),sharedStore:!1},{id:"grok",displayName:"Grok Build",skillsDir:".grok/skills",globalSkillsDir:()=>fe.default.join(oe.grokHome(),"skills"),detect:e=>e.pathExists(oe.grokHome()),sharedStore:!1},{id:"hermes-agent",displayName:"Hermes Agent",skillsDir:".hermes/skills",globalSkillsDir:()=>fe.default.join(oe.hermesHome(),"skills"),detect:e=>e.pathExists(oe.hermesHome()),sharedStore:!1},le("inference-sh","inference.sh",".inferencesh"),{id:"jazz",displayName:"Jazz",skillsDir:".jazz/skills",globalSkillsDir:()=>lr(".jazz","skills"),detect:e=>e.pathExists(fe.default.join(e.homeDir,".jazz"))||e.pathExists(fe.default.join(e.cwd,".jazz")),sharedStore:!1},le("junie","Junie",".junie"),le("iflow-cli","iFlow CLI",".iflow"),le("kilo","Kilo Code",".kilocode"),{id:"kimchi",displayName:"Kimchi",skillsDir:".kimchi/skills",globalSkillsDir:()=>fe.default.join(oe.hardcodedConfigHome(),"kimchi","harness","skills"),detect:e=>PS(oe.hardcodedConfigHome(),e.pathExists),sharedStore:!1},{id:"kimi-code-cli",displayName:"Kimi Code CLI",skillsDir:Ge,globalSkillsDir:()=>lr(".agents","skills"),detect:e=>e.pathExists(fe.default.join(e.homeDir,".kimi-code"))||e.pathExists(fe.default.join(e.homeDir,".kimi")),sharedStore:!0},le("kiro-cli","Kiro CLI",".kiro"),le("kode","Kode",".kode"),le("lingma","Lingma",".lingma"),tt({id:"loaf",displayName:"Loaf",project:Ge,global:[".agents","skills"],probe:[".loaf"],sharedStore:!0,showInSharedPrompt:!1}),le("mcpjam","MCPJam",".mcpjam"),{id:"mistral-vibe",displayName:"Mistral Vibe",skillsDir:".vibe/skills",globalSkillsDir:()=>fe.default.join(oe.vibeHome(),"skills"),detect:e=>e.pathExists(oe.vibeHome()),sharedStore:!1},le("moxby","Moxby",".moxby"),le("mux","Mux",".mux"),{id:"opencode",displayName:"OpenCode",skillsDir:Ge,globalSkillsDir:()=>fe.default.join(oe.configHome(),"opencode","skills"),detect:e=>e.pathExists(fe.default.join(e.configHome,"opencode")),sharedStore:!0},le("openhands","OpenHands",".openhands"),le("ona","Ona",".ona"),tt({id:"pi",displayName:"Pi",project:".pi/skills",global:[".pi","agent","skills"],probe:[".pi","agent"]}),le("qoder","Qoder",".qoder"),tt({id:"qoder-cn",displayName:"Qoder CN",project:".qoder/skills",global:[".qoder-cn","skills"],probe:[".qoder-cn"]}),le("qwen-code","Qwen Code",".qwen"),{id:"replit",displayName:"Replit",skillsDir:Ge,globalSkillsDir:()=>fe.default.join(oe.configHome(),"agents","skills"),detect:e=>LS(e.cwd,e.pathExists),sharedStore:!0,showInSharedList:!1},le("reasonix","Reasonix",".reasonix"),le("rovodev","Rovo Dev",".rovodev"),le("roo","Roo Code",".roo"),tt({id:"tabnine-cli",displayName:"Tabnine CLI",project:".tabnine/agent/skills",global:[".tabnine","agent","skills"],probe:[".tabnine"]}),le("terramind","Terramind",".terramind"),le("tinycloud","Tinycloud",".tinycloud"),le("trae","Trae",".trae"),tt({id:"trae-cn",displayName:"Trae CN",project:".trae/skills",global:[".trae-cn","skills"],probe:[".trae-cn"]}),tt({id:"warp",displayName:"Warp",project:Ge,global:[".agents","skills"],probe:[".warp"],sharedStore:!0}),tt({id:"windsurf",displayName:"Windsurf",project:".windsurf/skills",global:[".codeium","windsurf","skills"],probe:[".codeium","windsurf"]}),{id:"zed",displayName:"Zed",skillsDir:Ge,globalSkillsDir:()=>lr(".agents","skills"),detect:e=>IS(e.configHome,e.pathExists),sharedStore:!0},{id:"zcode",displayName:"ZCode",skillsDir:".zcode/skills",globalSkillsDir:()=>lr(".zcode","skills"),detect:e=>OS(e.homeDir,e.pathExists),sharedStore:!1},le("zencoder","Zencoder",".zencoder"),le("zenflow","Zenflow",".zencoder"),le("neovate","Neovate",".neovate"),le("pochi","Pochi",".pochi"),{id:"promptscript",displayName:"PromptScript",skillsDir:Ge,globalSkillsDir:()=>{},detect:e=>NS(e.cwd,e.pathExists),sharedStore:!0,showInSharedPrompt:!1},le("adal","AdaL",".adal"),{id:"universal",displayName:"Universal",skillsDir:Ge,globalSkillsDir:()=>fe.default.join(oe.configHome(),"agents","skills"),detect:MS,sharedStore:!0,showInSharedList:!1}],vg=new Map(va.map(e=>[e.id,e])),Co=va.map(e=>e.id);function Sa(e){return vg.has(e)}function xr(e){return vg.get(e)}function pu(e){let t=vg.get(e);if(t)return t;throw new f(`${b} Unknown agent: ${y(e)}
243
+ ${Co.length} agent ids are supported. See \`webflow skills install --help\`.`,{isUserError:!0,missingFlag:"agent"})}function fu(e,t){return t==="project"||e.globalSkillsDir()!==void 0}function Cr(e){return va.filter(t=>fu(t,e))}var Sg=D(require("path"));S();N();var mu=".agents",gu="skills";function rt(e,t){let r=e==="global"?oe.home():t;return Sg.default.join(r,mu,gu)}function Ot(e,t,r){if(t==="global")return e.globalSkillsDir()??null;let n=Sg.default.resolve(r,...e.skillsDir.split("/"));return Re(r,n,`${e.id} project skills directory`),n}function xg(e,t,r){return He(Ot(e,t,r),rt(t,r))}var Cg=D(require("fs")),US=D(require("path"));function CI(e){try{return Cg.default.existsSync(e)}catch{return!1}}function _I(e){try{let t=JSON.parse(Cg.default.readFileSync(US.default.join(e,"package.json"),"utf8"));return t===null||typeof t!="object"||Array.isArray(t)?null:t}catch{return null}}function WS(e){return{homeDir:oe.home(),configHome:oe.configHome(),cwd:e,pathExists:CI,readPackageJson:_I}}async function xa(e,t,r=WS(t)){return HS(Cr(e),r).map(n=>n.id)}function HS(e,t){return e.filter(r=>{try{return r.detect(t)}catch{return!1}})}var VS=D(require("fs")),GS=D(require("path"));S();pe();Ae();x();N();var Ca=[".git","package.json","webflow.json"];function _a(e){for(let t of Ca)try{if(VS.default.existsSync(GS.default.join(e,t)))return t}catch{}return null}function Fa(e){return _a(e)===null?"global":"project"}function KS(e){let t=_a(e);return t?`Installing at project scope \u2014 ${t} found in this directory.`:`Installing at global scope \u2014 none of ${Ca.join(", ")} found in this directory.`}async function hu(e,t){if(e.global&&e.project)throw new f(`${b} Pass either --global or --project, not both.`,{isUserError:!0,missingFlag:"scope"});if(e.global)return"global";if(e.project)return"project";let r=Fa(t);return e.yes||W()?(u.info(KS(t)),r):Be({message:"Where should these skills be installed?",default:r,choices:[{value:"project",name:"This project \u2014 skills live in the repository"},{value:"global",name:"Globally \u2014 skills available in every project"}]})}S();pe();Ae();x();N();var Aa="all",qt="universal",FI=6,AI=20,TI=80;function Hi(e){return(e??[]).flatMap(t=>t.split(",")).map(t=>t.trim()).filter(Boolean)}function RI(e,t){let r=Array.from({length:t.length+1},(n,o)=>o);for(let n=1;n<=e.length;n+=1){let o=[n];for(let i=1;i<=t.length;i+=1)o[i]=Math.min(r[i]+1,o[i-1]+1,r[i-1]+(e[n-1]===t[i-1]?0:1));r=o}return r[t.length]}function qS(e){let t=e.toLowerCase(),r=Math.max(1,Math.floor(t.length/3)),n=null,o=Number.POSITIVE_INFINITY;for(let i of Co){let s=RI(t,i);s<o&&(o=s,n=i)}return o<=r?n:null}function Vi(e){let t=e.filter(r=>!Sa(r));if(t.length>0){let r=Array.from(new Set(t.map(o=>qS(o)).filter(o=>o!==null))),n=r.length>0?` Did you mean: ${r.join(", ")}?
244
+ `:"";throw new f(`${b} Unknown agent(s): ${t.map(o=>y(o)).join(", ")}
245
+ `+n+` ${Co.length} agent ids are supported. See \`webflow skills install --help\`.`,{isUserError:!0,missingFlag:"agent"})}return e.map(r=>xr(r))}function wu(e,t){return Cr(e).filter(r=>xg(r,e,t))}function YS(e,t){return wu(e,t).filter(r=>r.showInSharedList!==!1)}function XS(e,t){let n=e.filter(s=>s.showInSharedPrompt!==!1).slice(0,Math.max(0,t)),o=e.length-n.length,i=n.map(s=>s.displayName).join(", ");return o>0?`${i} +${o} more`:i}function ZS(e,t,r=FI){return XS(YS(e,t),r)}function zS(e,t){let r=process.stdout.columns??TI,n=Math.max(20,r-t);return e.length<=n?e:`${e.slice(0,n-1)}\u2026`}function II(e,t,r){return t==="project"?e.skillsDir:Ot(e,t,r)??""}function yu(e,...t){let r=new Set(t.flat());return Cr(e).filter(n=>r.has(n.id))}async function JS(e,t,r){let n=wu(e,t),o=new Set(n.map(p=>p.id)),i=Cr(e).filter(p=>!o.has(p.id)),s=new Set(r),a=ZS(e,t),l=rt(e,t),c=[];n.length>0&&c.push({value:"",name:zS(`\u2022 ${a}`,6),description:`all read ${l} directly \u2014 no link needed`,disabled:" (always included)"});for(let p of i){let h=II(p,e,t),g=s.has(p.id)?" (detected)":"";c.push({value:p.id,name:zS(`${p.displayName} ${h}${g}`,8),checked:s.has(p.id)})}let d=await fr({message:n.length>0?"Select agents to install for (shared directory is always included)":"Select agents to install for",choices:c,pageSize:Math.min(AI,Math.max(4,c.length)),validate:p=>p.length>0||n.length>0?!0:"Select at least one agent, or press Ctrl-C to cancel."});return yu(e,n.map(p=>p.id),(d??[]).filter(Boolean))}async function Ta(e){let{scope:t,cwd:r,options:n}=e,o=Hi(n.agent),i=n.allAgents===!0||o.includes(Aa),s=o.filter(c=>c!==Aa),a=e.recordedAgents??[];if(a.length>0&&!i&&s.length===0){let c=a.filter(d=>Sa(d));return{agents:yu(t,[...c]),detected:[],source:"restored",unknownRecorded:a.filter(d=>!Sa(d))}}if(s.length>0&&!i){let c=Vi(s),d=c.filter(p=>!fu(p,t));if(d.length>0){let p=d.map(h=>h.displayName).join(", ");throw new f(`${b} ${p} does not support global skill installation \u2014 its skills live inside a project.
246
+ Re-run without --global, or from inside the project.`,{isUserError:!0,missingFlag:"global"})}return{agents:yu(t,c.map(p=>p.id)),detected:[],source:"explicit",unknownRecorded:[]}}if(i)return{agents:[...Cr(t)],detected:[],source:"all",unknownRecorded:[]};let l=e.detected!==void 0?[...e.detected]:await xa(t,r);if(l.length===0){if(W()){u.info(`No coding agents detected \u2014 installing to the shared skills directory only (${rt(t,r)}).`);let c=xr(qt);return{agents:c?[c]:[],detected:l,source:"store-only",unknownRecorded:[]}}return{agents:await JS(t,r,l),detected:l,source:"prompt",unknownRecorded:[]}}return n.yes||W()?{agents:yu(t,wu(t,r).map(c=>c.id),l),detected:l,source:"detected",unknownRecorded:[]}:{agents:await JS(t,r,l),detected:l,source:"prompt",unknownRecorded:[]}}var rx=D(require("os")),_n=D(require("path"));de();N();var Fn=1,OI=24,PI=100,nx=8,$I=5;function _o(e,t={}){if(e==="")return"";let r=_n.default.resolve(e),n=_n.default.resolve(t.cwd??process.cwd()),o=_n.default.resolve(t.home??rx.default.homedir()),i=QS(n,r);if(i!==null)return y(i===""?".":`.${_n.default.sep}${i}`);let s=QS(o,r);return s!==null?y(s===""?"~":`~${_n.default.sep}${s}`):y(r)}function Du(e={}){return t=>_o(t,e)}function QS(e,t){let r=_n.default.relative(e,t);return r===""?"":r.startsWith("..")||_n.default.isAbsolute(r)?null:r}var ex={"locally-modified":"locally-modified",unmanaged:"exists-without-lock-entry"};function Fg(e){let{plan:t,materialized:r,dryRun:n}=e,o=[],i=[];for(let g of t.skills){let m=ex[g.storeOverwrite];m!==void 0&&!t.force&&o.push({name:g.name,dir:g.dir,overwrite:g.storeOverwrite,reason:m,requiredFlag:"--force",...g.detail!==void 0?{detail:g.detail}:{}});for(let w of g.targets){if(!w.blocked)continue;let k=ex[w.overwrite];k!==void 0&&o.push({name:g.name,dir:g.dir,agent:w.agent,overwrite:w.overwrite,reason:k,requiredFlag:"--force",...w.detail!==void 0?{detail:w.detail}:{}})}}let s=new Map;for(let g of t.skills)for(let m of g.targets){if(!m.blocked)continue;let w=s.get(g.name)??new Set;w.add(m.path),s.set(g.name,w)}let a=0,l=0,c=0,d=0,p=0,h=0;for(let g of r){if(g.storeAction==="written"&&(l+=1),g.storeAction==="failed"){i.push({name:g.name,message:g.error??"the canonical store could not be written"});continue}if(g.storeAction!=="blocked"){(g.storeAction==="written"||g.storeAction==="adopted"||g.storeAction==="unchanged")&&(a+=1);for(let m of g.targets){if(m.skipped===!0){h+=1;continue}if(!m.success){if(s.get(g.name)?.has(m.path))continue;i.push({name:g.name,agent:m.agent,...m.errno!==void 0?{errno:m.errno}:{},message:m.error??"the destination could not be written"});continue}m.link==="symlink"&&(c+=1),m.link==="copy"&&m.requestedMode==="copy"&&(d+=1),m.symlinkFailed===!0&&(p+=1)}}}return n&&(h=t.skills.reduce((g,m)=>g+m.targets.filter(w=>w.skipped).length,0)),{blocked:o,failures:i,summary:{requested:t.skills.length,installed:a,skipped:h,blocked:o.length,failed:i.length,storeWrites:l,symlinks:c,copies:d,symlinkFallbacks:p}}}function Ag(e,t){let r=t.display??(o=>o),n=[];n.push(te(t.dryRun?"Installation plan (dry run)":"Installation plan")),n.push(` scope ${e.scope} (${r(e.root)})`),n.push(` source ${LI(e.source)}`),n.push(` store ${r(e.storeBase)}`),n.push(` mode ${e.mode}`);for(let o of e.skills)n.push(""),n.push(` ${y(o.dir)}`),n.push(` store ${r(o.storePath)}`),n.push(...NI(o,r)),o.blocked&&o.detail!==void 0&&n.push(` ${ne("blocked")} ${o.detail}`);if(e.warnings.length>0){n.push("");for(let o of e.warnings)n.push(` ${ne("\u26A0")} ${o}`)}return n.join(`
247
+ `)}function LI(e){let t=e.pluginVersion===""?"":` (v${e.pluginVersion})`;return`${e.repo}@${ox(e.commit)}${t}`}function ox(e){return e.slice(0,nx)}function NI(e,t){let r=[],n=e.targets.filter(s=>s.link==="canonical"),o=e.targets.filter(s=>!s.skipped&&s.link==="symlink"),i=e.targets.filter(s=>!s.skipped&&s.link==="copy");n.length>0&&r.push(` shared ${Ra(n)}`),o.length>0&&r.push(` symlink \u2192 ${tx(o,t)}`),i.length>0&&r.push(` copy \u2192 ${tx(i,t)}`);for(let s of e.targets)s.skipped&&s.link!=="canonical"&&r.push(` ${R("skipped")} ${s.label}${s.detail!==void 0?` \u2014 ${s.detail}`:""}`),s.overwrite!=="fresh"&&!s.skipped&&!s.blocked&&r.push(` overwrites ${s.label} ${R(`\u2190 existing ${s.overwrite} directory will be replaced`)}`);return r}function tx(e,t){if(e.length===1){let r=e[0];return`${r.label} (${t(r.path)})`}return Ra(e)}function Ra(e,t=$I){let r=e.map(n=>y(n.label));return r.length<=t?r.join(", "):`${r.slice(0,t).join(", ")} +${r.length-t} more`}function ix(e,t={}){let r=t.display??(i=>i),n=[],{summary:o}=e;n.push(V(`Installed ${o.installed} ${_g(o.installed,"skill")}`));for(let i of e.materialized){if(i.storeAction==="blocked"||i.storeAction==="failed")continue;n.push(` ${y(r(i.storePath))}`);let s=i.targets.filter(c=>c.success&&c.link==="canonical"),a=i.targets.filter(c=>c.success&&c.skipped!==!0&&c.link==="symlink"),l=i.targets.filter(c=>c.success&&c.skipped!==!0&&c.link==="copy");s.length>0&&n.push(` shared: ${Ra(s)}`),a.length>0&&n.push(` symlinked: ${Ra(a)}`),l.length>0&&n.push(` copied: ${Ra(l)}`),i.detail!==void 0&&n.push(` ${R(i.detail)}`)}if(o.symlinkFallbacks>0){let i=jI(e.materialized);n.push(`${ne("\u26A0")} Symlinks failed for ${o.symlinkFallbacks} ${_g(o.symlinkFallbacks,"destination")}${i.length>0?` (${i.join(", ")})`:""}. Files were copied instead.`),n.push(" On Windows, enable Developer Mode in Settings, or pass --copy to make this the default and silence this warning.")}return n.push(...MI(e.blocked)),n.push(...BI(e.failures)),n.push(...ku(e.plan.warnings)),n.join(`
248
+ `)}function jI(e){let t=new Set;for(let r of e)for(let n of r.targets)n.symlinkFailed===!0&&n.errno!==void 0&&t.add(n.errno);return[...t].sort()}function MI(e){if(e.length===0)return[];let t=["",ne(e.length===1?"1 destination needs --force and was left untouched:":`${e.length} destinations need --force and were left untouched:`)];for(let r of e){let n=r.agent===void 0?"shared store":y(r.agent);t.push(` \u2022 ${y(r.name)} (${n})`),r.detail!==void 0&&t.push(` ${r.detail}`)}return t}function BI(e){if(e.length===0)return[];let t=["",Lt(`${e.length} ${_g(e.length,"failure")}:`)];for(let r of e){let n=r.agent===void 0?"":` (${y(r.agent)})`;t.push(` \u2022 ${y(r.name)}${n}: ${y(r.message)}`)}return t}function ku(e){return e.length===0?[]:["",...e.map(t=>`${ne("\u26A0")} ${t}`)]}function _g(e,t){return e===1?t:`${t}s`}function bu(e){let{plan:t}=e,r=new Map(e.materialized.map(n=>[n.name,n]));return{kind:"skills.install",schemaVersion:Fn,dryRun:e.dryRun,restored:e.restored,scope:t.scope,root:t.root,store:t.storeBase,mode:t.mode,force:t.force,lockfile:e.lockfilePath,source:{...t.source,cacheHit:e.cacheHit},...e.extraSources!==void 0&&e.extraSources.length>0?{sources:[t.source,...e.extraSources]}:{},skills:t.skills.map(n=>UI(n,r.get(n.name))),blocked:e.blocked,failures:e.failures,summary:e.summary,warnings:t.warnings}}function UI(e,t){let r=new Map((t?.targets??[]).map(n=>[n.path,n]));return{name:e.name,dir:e.dir,description:e.description,skillPath:e.skillPath,storePath:e.storePath,storeOverwrite:e.storeOverwrite,storeAction:t?.storeAction??null,contentHash:t?.hashes?.contentHash??null,modeHash:t?.hashes?.modeHash??null,upToDate:e.upToDate,fileCount:e.fileCount,byteCount:e.byteCount,blocked:e.blocked,detail:e.detail??null,targets:e.targets.map(n=>WI(n,r.get(n.path)))}}function WI(e,t){return{agent:e.agent,agents:e.agents,label:e.label,path:e.path,link:t?.link??e.link,overwrite:e.overwrite,blocked:e.blocked,skipped:t?.skipped??e.skipped,skipReason:t?.skipReason??e.skipReason??null,symlinkFailed:t?.symlinkFailed??!1,errno:t?.errno??null,error:t?.error??null}}var Fo=["name","dir","description","status","mode","agents","scope"],Ia="name,status,agents",Gi=["name","dir","status","scope"],HI={"up-to-date":V,modified:ne,missing:Lt,unmanaged:R};function sx(e,t,r={}){let n=r.columns??process.stdout.columns??PI,o=e.map(l=>t.map(c=>VI(l,c))),i=t.indexOf("description");if(i!==-1){let l=t.reduce((d,p,h)=>{if(h===i)return d;let g=Math.max(p.length,...o.map(m=>m[h].length),0);return d+g+2},0),c=Math.max(OI,n-l-2);for(let d of o)d[i]=KI(d[i],c)}let s=t.map(l=>te(l)),a=o.map((l,c)=>l.map((d,p)=>t[p]==="status"?HI[e[c].status](d):d));return We(s,a)}function VI(e,t){switch(t){case"name":return y(e.name);case"dir":return y(e.dir);case"description":return y(e.description);case"status":return e.statusDetail===void 0?e.status:`${e.status} (${e.statusDetail})`;case"mode":return e.mode;case"agents":return GI(e);case"scope":return e.scope}}var ax="shared";function GI(e){let t=[],r=0;for(let n of e.agents){let o=y(n.id);if(!n.present){t.push(`${o} (missing)`);continue}if(n.link==="canonical"){r+=1;continue}t.push(o)}return r>0?[ax,...t].join(", "):t.join(", ")}function lx(e,t={}){let r=t.display??(s=>s),n=new Set;for(let s of e)for(let a of s.agents)a.present&&a.link==="canonical"&&n.add(a.id);if(n.size===0)return"";let o=[...n].sort().join(", "),i=t.store===void 0?"":` = ${r(t.store)}`;return R(`${ax}${i}, read directly by ${n.size} agent${n.size===1?"":"s"}:
249
+ ${o}`)}function KI(e,t){return e.length<=t?e:t<=1?"\u2026":`${e.slice(0,t-1)}\u2026`}function cx(e,t={}){let r=t.display??(l=>l),n=e.scope==="project"?"Project":"Global",o=e.source.commit,i=e.source.pluginVersion,s=o===void 0?"":` (pinned ${ox(o)}${i===void 0?"":`, v${i}`})`,a=e.scope==="global"?e.store:e.root;return te(`${n} skills \u2014 ${r(a)}${s}`)}function Tg(e){let t={total:0,upToDate:0,modified:0,missing:0,unmanaged:0};for(let r of e)for(let n of r.skills)t.total+=1,n.status==="up-to-date"?t.upToDate+=1:n.status==="modified"?t.modified+=1:n.status==="missing"?t.missing+=1:t.unmanaged+=1;return t}function ux(e){return{kind:"skills.list",schemaVersion:Fn,scopes:e.inventories.map(t=>({scope:t.scope,root:t.root,store:t.store,lockfile:t.lockfile,source:t.source,skills:t.skills.map(r=>({name:r.name,dir:r.dir,description:r.description,skillPath:r.skillPath??null,storePath:r.storePath,recordedHash:r.recordedHash,onDiskHash:r.onDiskHash,status:r.status,statusDetail:r.statusDetail??null,mode:r.mode,commit:r.commit??null,ref:r.ref??null,category:r.category??null,agents:r.agents.map(n=>({id:n.id,label:n.label,path:n.path,link:n.link,present:n.present,diverged:n.diverged??!1}))}))})),summary:Tg(e.inventories),warnings:[...e.warnings]}}var Rg="No skills installed. Run `webflow skills install` to get started.";function dx(e,t){let r=t==="desc"?-1:1;return(n,o)=>{let i=String(n[e]??""),s=String(o[e]??"");return i===s?n.name<o.name?-1:n.name>o.name?1:0:(i<s?-1:1)*r}}function px(e){let t=[],{summary:r}=e;if(e.cancelled===!0)return"Update cancelled \u2014 no changes made.";if(e.skills.length===0)return Rg;if(e.source.upToDate)t.push(`${L} ${y(e.source.repo)}@${y(e.source.ref)} is still ${zI(e.source.resolvedCommit)} \u2014 all ${r.checked} skill${r.checked===1?"":"s"} up to date.`);else{let o=e.checkOnly?`${Fe} ${r.outdated+r.conflicts} of ${r.checked} skills would change.`:`${L} Updated ${r.updated} skill${r.updated===1?"":"s"}`+(r.blocked>0?`, skipped ${r.blocked}`:"")+(r.failed>0?`, ${r.failed} failed`:"");t.push(o)}let n=e.skills.filter(o=>!(e.source.upToDate&&o.state==="unchanged")).map(o=>[y(o.dir),o.action,o.detail?y(o.detail):""]);n.length>0&&t.push("",We(["SKILL","ACTION","DETAIL"],n));for(let o of e.skills)for(let i of o.targets)i.action==="relinked"&&t.push(` ${e.checkOnly?"would-relink":"relinked"} ${y(i.label)}`),i.action==="unlinked"&&t.push(` unlinked ${y(i.label)} (config directory no longer present)`);for(let o of e.failures)t.push(`${b} ${y(o.name)}: ${y(o.message)}`);return e.checkOnly&&t.push("","Dry run complete \u2014 no changes made."),t.join(`
250
+ `)}function zI(e){return e===null?"unknown":e.slice(0,nx)}function Ig(e,t,r={}){let n=i=>y((r.display??_o)(i)),o=[];o.push(`${r.dryRun?"Would remove":"Skills to remove"} ${e.length} skill${e.length===1?"":"s"} (${t} scope):`,"");for(let i of e){if(o.push(` ${y(i.name)} \u2192 ${y(i.dir)}`),!i.onDisk&&i.targets.length===0){o.push(" (lockfile entry only \u2014 no directory on disk; the stale entry will be removed)");continue}i.onDisk&&o.push(` ${n(i.storePath)} store (`+(i.storeWillBeDeleted?"delete":`keep \u2014 still referenced by ${i.keptBecause.map(s=>y(s)).join(", ")}`)+")");for(let s of i.targets)o.push(` ${n(s.path)} ${y(s.label)} (unlink)`)}return r.dryRun&&o.push("","Dry run complete \u2014 no changes made."),o.join(`
251
+ `)}function fx(e,t={}){let r=o=>y((t.display??_o)(o));if(e.skills.length===0)return"No skills removed.";let n=[];n.push(`${L} Removed ${e.summary.removed} skill${e.summary.removed===1?"":"s"}`+(e.summary.failed>0?`, ${e.summary.failed} failed`:""));for(let o of e.skills){let i=o.targets.filter(a=>a.action==="unlinked"),s=o.storeAction==="deleted"?"store directory deleted":o.storeAction==="kept"?`store kept \u2014 still used by ${o.keptBecause.map(a=>y(a)).join(", ")}`:o.storeAction==="failed"?"store could not be deleted":"no directory on disk";n.push(` ${y(o.name)} \u2014 unlinked from ${i.length} location${i.length===1?"":"s"}, ${s}`)}e.removedDirectories.length>0&&n.push(` removed empty directories: ${e.removedDirectories.map(o=>r(o)).join(", ")}`);for(let o of e.failures)n.push(`${b} ${y(o.name)}: ${y(o.message)}`);return e.lockfileDeleted?n.push(`${Fe} ${r(e.lockfile)} was empty and has been removed.`):e.lockfileEmpty&&n.push(`${Fe} ${r(e.lockfile)} is now empty \u2014 commit the change, or delete the file if you are done with Webflow skills in this project.`),n.join(`
252
+ `)}J();S();pe();Ae();x();N();z();pe();x();function JI(e){let t=_a(e);return t!==null?`Using project scope \u2014 ${t} found in this directory.`:`Using global scope \u2014 none of ${Ca.join(", ")} found in this directory.`}async function Eu(e,t,r){return!(e.global===!0||e.project===!0)&&(e.yes===!0||W())?(r||u.info(JI(t)),Fa(t)):hu(e,t)}function Ki(e){return e==="locally-modified"||e==="unmanaged"}var To=D(require("fs")),cr=D(require("path"));S();var Pg=require("crypto"),Cu=D(require("fs"));S();var Ao=D(require("fs")),_r=D(require("path"));S();var Og=2e3,gx=8;async function vu(e){let t=_r.default.resolve(e),r=[],n=[],o=async(i,s)=>{if(s>vo)throw new f(`Skill directory ${y(t)} nests deeper than ${vo} levels at ${y(i)}. Refusing to copy or hash a tree this deep.`);let a=await Ao.default.promises.readdir(i,{withFileTypes:!0});a.sort((l,c)=>l.name<c.name?-1:l.name>c.name?1:0);for(let l of a){let c=_r.default.join(i,l.name);if(Re(t,c,"a skill file"),l.isSymbolicLink()){n.push(mx(t,c));continue}if(l.isDirectory()){if(bo.has(l.name))continue;await o(c,s+1);continue}if(!l.isFile()||Eo.has(l.name))continue;let d=await Ao.default.promises.lstat(c);if(r.length>=Og)throw new f(`Skill directory ${y(t)} contains more than ${Og} files. Refusing to copy or hash it.`);let p=mx(t,c);r.push({rel:p,key:p.normalize("NFC"),abs:c,mode:d.mode&511,size:d.size})}};return await o(t,1),r.sort((i,s)=>i.key<s.key?-1:i.key>s.key?1:0),n.sort(),{files:r,symlinks:n}}function Su(e,t){let[r]=t.symlinks;if(r!==void 0)throw new f(`Skill directory ${y(e)} contains a symbolic link ("${y(r)}"); skill files must be regular files. If this came from ${ue}, please report it.`)}async function xu(e,t){let r=_r.default.resolve(e),n=_r.default.resolve(t),o=await vu(r);Su(r,o),await Ao.default.promises.mkdir(n,{recursive:!0});let i=new Set;for(let a of o.files){let l=_r.default.dirname(_r.default.join(n,...a.rel.split("/")));l!==n&&i.add(l)}for(let a of[...i].sort())Re(n,a,"a skill destination directory"),await Ao.default.promises.mkdir(a,{recursive:!0});let s=0;return await qI(o.files,gx,async a=>{let l=_r.default.join(n,...a.rel.split("/"));Re(n,l,"a skill destination file"),await Ao.default.promises.copyFile(a.abs,l),await Ao.default.promises.chmod(l,a.mode),s+=a.size}),{fileCount:o.files.length,byteCount:s}}function mx(e,t){return _r.default.relative(e,t).split(_r.default.sep).join("/")}async function qI(e,t,r){let n=0,o=Array.from({length:Math.max(1,Math.min(t,e.length))},async()=>{for(;n<e.length;){let i=e[n++];if(i===void 0)return;await r(i)}});await Promise.all(o)}var yx=1024*1024,wx=4294967295,$g=Buffer.from([0]);async function _u(e){let t=await vu(e);Su(e,t);let r=(0,Pg.createHash)("sha256"),n=(0,Pg.createHash)("sha256"),o=0;for(let i of t.files)await YI(r,i),XI(n,i),o+=i.size;return{contentHash:`sha256:${r.digest("hex")}`,modeHash:`sha256:${n.digest("hex")}`,fileCount:t.files.length,byteCount:o}}async function Yt(e){try{return await _u(e)}catch(t){if(eO(t))return null;throw t}}function Pt(e,t,r=process.platform){return!e||!t||!e.contentHash||!t.contentHash||e.contentHash!==t.contentHash?!1:r==="win32"||!e.modeHash||!t.modeHash?!0:e.modeHash===t.modeHash}async function YI(e,t){if(t.size<=yx){let o=await Cu.default.promises.readFile(t.abs);return hx(e,t,o.length),e.update(o),o.length}let r=await ZI(t.abs);hx(e,t,r);let n=await QI(e,t.abs,r);if(n!==r)throw new f(`${y(t.abs)} changed while it was being hashed (${r} bytes, then ${n}). Re-run the command.`);return n}function hx(e,t,r){if(r>wx)throw new f(`${y(t.abs)} is ${r} bytes, which is too large to hash. Remove it from the skill folder and re-run.`);e.update(t.key,"utf8"),e.update($g);let n=Buffer.alloc(4);n.writeUInt32BE(r,0),e.update(n)}function XI(e,t){e.update(t.key,"utf8"),e.update($g),e.update((t.mode&73)!==0?"x":"-"),e.update($g)}async function ZI(e){let t=0;for await(let r of Cu.default.createReadStream(e))t+=r.length;return t}async function QI(e,t,r){let n=0;for await(let o of Cu.default.createReadStream(t)){let i=o;if(n+=i.length,n>r)return e.update(i.subarray(0,i.length-(n-r))),n;e.update(i)}return n}function eO(e){return An(e)==="ENOENT"?!0:typeof e!="object"||e===null?!1:An(e.cause)==="ENOENT"}function An(e){if(typeof e!="object"||e===null)return;let t=e.code;return typeof t=="string"?t:void 0}var bx=require("crypto"),be=D(require("fs")),me=D(require("path"));S();x();var tO=/\.[0-9a-f]{6}\.tmp$/,Ex=3600*1e3;async function Ng(e,t=r=>r){let r=me.default.join(e,mu);for(let n of[r,me.default.join(r,gu)]){if(await vx(n)==="other")throw new f(`${y(t(n))} exists but is not a directory. The Webflow CLI needs it as the shared skills store. Remove or rename it, then re-run.`,{isUserError:!0});if(await Fu(e,n))throw new f(`${y(t(n))} resolves outside ${y(t(e))} once symlinks are followed. The Webflow CLI will not use it as the shared skills store. Remove or repoint it, then re-run.`,{isUserError:!0})}}async function Fu(e,t){if(!et(e,t)||await jg(e,t)!==void 0)return!0;try{await be.default.promises.lstat(t)}catch{return!1}return!await Yc(e,t)}async function jg(e,t){let r=me.default.resolve(e),n=me.default.relative(r,me.default.resolve(t));if(n===""||n.startsWith(".."))return;let o=n.split(me.default.sep).filter(s=>s!==""),i=r;for(let s of o.slice(0,-1)){i=me.default.join(i,s);let a;try{a=await be.default.promises.lstat(i)}catch{return}if(a.isSymbolicLink()&&!await Yc(r,i))return i}}async function Au(e,t){let r=me.default.resolve(e),n=me.default.relative(r,me.default.resolve(t));if(n===""||n.startsWith(".."))return;let o=n.split(me.default.sep).filter(s=>s!==""),i=r;for(let s of o.slice(0,-1)){i=me.default.join(i,s);let a=await vx(i);if(a==="absent")return;if(a==="other")return i}}async function Oa(e,t={}){if(t.dryRun)return[];let r=t.maxAgeMs??Ex,n=t.now??Date.now(),o=[],i;try{i=await be.default.promises.readdir(e,{withFileTypes:!0})}catch{return o}for(let s of i){if(!tO.test(s.name))continue;let a=me.default.join(e,s.name);try{Re(e,a,"a stale staging directory");let l=await be.default.promises.lstat(a);if(n-l.mtimeMs<r)continue;await be.default.promises.rm(a,{recursive:!0,force:!0}),o.push(a)}catch(l){u.debug(`Could not sweep staging directory ${a}: ${l instanceof Error?l.message:String(l)}`)}}return o}async function Tu(e){let{storeDir:t,slug:r,root:n,mode:o,agent:i,label:s}=e,a=e.platform??process.platform,l=me.default.resolve(e.linkPath),c={agent:i,label:s,path:l,canonicalPath:t,requestedMode:o},d=w=>({...c,success:!1,link:o,error:w});if(me.default.basename(l)!==r)return d(`Refusing to write ${y(l)}: its final component is not "${y(r)}".`);let p=w=>({...c,success:!1,link:o,skipped:!0,skipReason:"unsafe-destination",error:`Refusing to write ${y(l)} for ${y(s)}: ${w}`});if(!et(n,l))return p(`it resolves outside ${y(n)}.`);let h=await jg(n,l);if(h!==void 0)return p(`${y(h)} is a symbolic link that leaves ${y(n)}.`);let g=await Au(n,l);if(g!==void 0)return d(`${y(g)} exists but is not a directory \u2014 remove or rename it, then re-run.`);if(He(t,l))return{...c,success:!0,link:"canonical"};let m=await oO(l,t);if(m&&o==="symlink")return{...c,success:!0,link:"symlink"};if(!m){let[w,k]=await Promise.all([ir(t),ir(l)]);if(He(w,k))return{...c,success:!0,link:"canonical"};if(He(await kx(t),await kx(l)))return{...c,success:!0,link:"canonical"};if(await zm(t,l))return{...c,success:!0,link:"canonical",skipped:!0,skipReason:"source-is-destination"}}if(o==="copy")try{return await Dx(t,l,r),{...c,success:!0,link:"copy"}}catch(w){return{...c,success:!1,link:"copy",errno:An(w),error:Lg(w)}}try{if(await iO(l,r),await be.default.promises.mkdir(me.default.dirname(l),{recursive:!0}),a==="win32")await be.default.promises.symlink(me.default.resolve(t),l,"junction");else{let w=await ir(me.default.dirname(l));await be.default.promises.symlink(me.default.relative(w,t),l)}return{...c,success:!0,link:"symlink"}}catch(w){let k=An(w);try{return await Dx(t,l,r),{...c,success:!0,link:"copy",symlinkFailed:!0,errno:k}}catch(F){return{...c,success:!1,link:"copy",symlinkFailed:!0,errno:An(F)??k,error:Lg(F)}}}}async function Pa(e,t,r={}){if(Re(e.storeBase,t.storePath,`the canonical store directory for "${t.name}"`),me.default.basename(t.storePath)!==t.dir)throw new f(`Refusing to write ${y(t.storePath)}: its final component is not "${y(t.dir)}". Please report this.`);let n={name:t.name,dir:t.dir,storePath:t.storePath};if(Ki(t.storeOverwrite)&&!e.force)return{...n,storeAction:"blocked",hashes:null,targets:[],success:!1,error:t.detail};let o,i,s;try{t.storeOverwrite==="adoptable"?(i="adopted",o=t.onDisk??t.upstream):t.upToDate?(i="unchanged",o=t.onDisk??t.upstream):await zm(t.sourceDir,t.storePath)?(i="unchanged",o=t.onDisk??t.upstream,s="the extracted source and the canonical store are the same directory; nothing to copy"):(o=await rO(t),i="written")}catch(l){return{...n,storeAction:"failed",hashes:null,targets:[],success:!1,error:Lg(l)}}let a=[];for(let l of t.targets)a.push(await nO(e,t,l,r));return{...n,storeAction:i,hashes:o,targets:a,detail:s,success:a.every(l=>l.success)}}async function rO(e){await be.default.promises.mkdir(me.default.dirname(e.storePath),{recursive:!0});let t=Bg(e.storePath);try{await xu(e.sourceDir,t),await Mg(e.storePath,e.dir),await be.default.promises.rename(t,e.storePath)}finally{await be.default.promises.rm(t,{recursive:!0,force:!0}).catch(()=>{})}return _u(e.storePath)}async function nO(e,t,r,n){let o={agent:r.agent,label:r.label,path:r.path,canonicalPath:t.storePath,requestedMode:e.mode};return r.link==="canonical"?{...o,success:!0,link:"canonical"}:r.skipped?{...o,success:!0,link:r.link,skipped:!0,skipReason:r.skipReason,error:void 0}:r.blocked?{...o,success:!1,link:r.link,error:r.detail}:Tu({storeDir:t.storePath,linkPath:r.path,slug:t.dir,root:e.root,mode:e.mode,agent:r.agent,label:r.label,platform:n.platform})}async function Dx(e,t,r){await be.default.promises.mkdir(me.default.dirname(t),{recursive:!0});let n=Bg(t);try{await xu(e,n),await Mg(t,r),await be.default.promises.rename(n,t)}finally{await be.default.promises.rm(n,{recursive:!0,force:!0}).catch(()=>{})}}async function oO(e,t){let r;try{r=await be.default.promises.lstat(e)}catch{return!1}if(!r.isSymbolicLink())return!1;let n=await be.default.promises.readlink(e).catch(()=>null);if(n===null)return!1;let o=me.default.resolve(me.default.dirname(e),n);if(He(o,t))return!0;let[i,s]=await Promise.all([ir(o),ir(t)]);return He(i,s)}async function iO(e,t){let r;try{r=await be.default.promises.lstat(e)}catch(n){An(n)==="ELOOP"&&await be.default.promises.rm(e,{force:!0}).catch(()=>{});return}if(r.isSymbolicLink()){await be.default.promises.rm(e,{force:!0});return}await Mg(e,t)}async function Mg(e,t){if(me.default.basename(e)!==t)throw new f(`Refusing to delete ${y(e)}: its final component is not "${y(t)}". Please report this.`);let r;try{r=await be.default.promises.lstat(e)}catch{return}if(r.isSymbolicLink()){await be.default.promises.rm(e,{force:!0});return}await be.default.promises.rm(e,{recursive:!0,force:!0})}function Bg(e){return`${e}.${(0,bx.randomBytes)(3).toString("hex")}.tmp`}async function kx(e){let t=me.default.resolve(e),r=await ir(me.default.dirname(t));return me.default.join(r,me.default.basename(t))}async function vx(e){let t;try{t=await be.default.promises.lstat(e)}catch{return"absent"}if(t.isDirectory())return"directory";if(!t.isSymbolicLink())return"other";try{return(await be.default.promises.stat(e)).isDirectory()?"directory":"other"}catch{return"other"}}function Lg(e){let t=e instanceof Error?e.message:String(e);return y(t)}var sO=["CLAUDE_CONFIG_DIR","CODEX_HOME","XDG_CONFIG_HOME","FLATPAK_XDG_CONFIG_HOME","APPDATA","VIBE_HOME","HERMES_HOME","AUTOHAND_HOME","GROK_HOME"],aO=64;async function $a(e){let t=e.platform??process.platform,r=e.display??(c=>c),n=cr.default.resolve(e.root),o=rt(e.scope,n),i=e.recorded??{},s=new Set(e.warnings??[]);await Ng(n,r);let a=await lO({targets:e.targets,scope:e.scope,root:n,storeBase:o,display:r,warn:c=>s.add(c)});for(let c of await pO({groups:a,skills:e.skills,display:r}))s.add(c);let l=[];for(let c of e.skills)l.push(await dO({discovered:c,groups:a,storeBase:o,mode:e.mode,force:e.force,recorded:i[c.name]??null,platform:t,display:r}));return{scope:e.scope,root:n,storeBase:o,mode:e.mode,force:e.force,source:e.source,skills:l,warnings:[...s],blocked:l.filter(c=>c.blocked)}}async function lO(e){let{targets:t,scope:r,root:n,storeBase:o,display:i,warn:s}=e,a=new Map;for(let c of t){let d=Ot(c.agent,r,n);if(d===null){s(`${y(c.agent.displayName)} does not support ${r} installation and was skipped.`);continue}let p=a.get(d);p?(p.agents.push(c.agent),p.explicit=p.explicit||c.explicit):a.set(d,{agents:[c.agent],explicit:c.explicit})}let l=[];for(let[c,d]of a){let p=d.agents.slice().sort((m,w)=>m.id<w.id?-1:m.id>w.id?1:0);if(He(c,o)){l.push({dir:c,agents:p,canonical:!0});continue}if(await Fu(n,c)){let m=Ru(c),w=`${y(i(c))} resolves outside ${y(i(n))}`+(m?` (check $${m})`:"")+"; refusing to install there.";s(w),l.push({dir:c,agents:p,canonical:!1,skipReason:"unsafe-destination",detail:w});continue}let h=await Au(n,c);if(h!==void 0){let m=`${y(i(h))} exists but is not a directory \u2014 remove or rename it, then re-run.`;s(m),l.push({dir:c,agents:p,canonical:!1,skipReason:"path-conflict",detail:m});continue}if(!(d.explicit||await uO(d.agents,r,n,c))){l.push({dir:c,agents:p,canonical:!1,skipReason:"agent-dir-absent",detail:`config directory not present; the skill is still reachable via ${y(i(o))}`});continue}l.push({dir:c,agents:p,canonical:!1})}return l}function cO(e,t,r,n){if(t==="global")return cr.default.dirname(n);let[o]=e.skillsDir.split(/[\\/]/);return cr.default.join(r,o??e.skillsDir)}async function uO(e,t,r,n){for(let o of e)if(await fO(cO(o,t,r,n)))return!0;return!1}async function dO(e){let{discovered:t,groups:r,storeBase:n,mode:o,force:i,platform:s,display:a}=e,l=cr.default.join(n,t.dir),c=await mO(t.path),d=e.recorded?.contentHash?{contentHash:e.recorded.contentHash,modeHash:e.recorded.modeHash??""}:null,p=e.recorded!==null&&d===null,h=await xx({dest:l,storePath:l,recorded:d,recordedUnverifiable:p,upstream:c,platform:s}),g=[];for(let F of r){let A=F.canonical?l:cr.default.join(F.dir,t.dir),E=F.canonical?"canonical":o;if(F.canonical||F.skipReason!==void 0){g.push({agent:Cx(F),agents:F.agents.map(B=>B.id),label:_x(F),path:A,link:E,overwrite:F.canonical?h.overwrite:"fresh",blocked:F.canonical?h.blocked:!1,skipped:!F.canonical,...F.skipReason!==void 0?{skipReason:F.skipReason}:{},...F.detail!==void 0?{detail:F.detail}:{}});continue}let v=await xx({dest:A,storePath:l,recorded:d,recordedUnverifiable:p,upstream:c,platform:s}),M=Ki(v.overwrite)&&!i;g.push({agent:Cx(F),agents:F.agents.map(B=>B.id),label:_x(F),path:A,link:E,overwrite:v.overwrite,blocked:M,skipped:!1,...M?{detail:Sx(v,A,a)}:{}})}let m=Ki(h.overwrite)&&!i,w=g.find(F=>F.blocked),k=m?Sx(h,l,a):w?.detail;return{name:t.name,dir:t.dir,description:t.description,skillPath:t.skillPath,sourceDir:t.path,storePath:l,storeOverwrite:h.overwrite,upToDate:h.upToDate,targets:g,fileCount:c.fileCount,byteCount:c.byteCount,upstream:c,onDisk:h.onDisk,recorded:d,blocked:m||w!==void 0,...k!==void 0?{detail:k}:{}}}function Sx(e,t,r){return e.problem===void 0?Ax(e.overwrite,t,r):`${y(r(t))} could not be verified: ${e.problem} It was not installed by the Webflow CLI, or has been changed since. Re-run with --force to replace it.`}async function xx(e){let{dest:t,storePath:r,recorded:n,upstream:o,platform:i}=e,s=(c,d,p)=>({overwrite:c,upToDate:d,onDisk:p,blocked:!1}),a;try{a=await To.default.promises.lstat(t)}catch{return s("fresh",!1,null)}if(a.isSymbolicLink()){let c=await To.default.promises.readlink(t).catch(()=>null),d=c===null?null:cr.default.resolve(cr.default.dirname(t),c);return d!==null&&He(d,r)?s("managed-update",!1,null):s("unmanaged",!1,null)}if(!a.isDirectory())return s("unmanaged",!1,null);let l;try{l=await Yt(t)}catch(c){return{overwrite:"unmanaged",upToDate:!1,onDisk:null,blocked:!1,problem:y(c instanceof Error?c.message:String(c))}}if(l===null)return s("fresh",!1,null);if(n===null&&e.recordedUnverifiable)return s("managed-update",!1,l);if(n!==null)return Pt(l,n,i)?s("managed-update",Pt(l,o,i),l):s("locally-modified",!1,l);if(Pt(l,o,i)){let c=await Fx(t);return c===void 0?s("adoptable",!0,l):{overwrite:"unmanaged",upToDate:!1,onDisk:l,blocked:!1,problem:`it matches the pinned upstream content but also contains "${y(c)}", which no Webflow CLI install writes.`}}return s("unmanaged",!1,l)}async function Fx(e,t="",r=0){if(r>vo)return;let n;try{n=await To.default.promises.readdir(e,{withFileTypes:!0})}catch{return}n.sort((o,i)=>o.name<i.name?-1:o.name>i.name?1:0);for(let o of n){let i=t===""?o.name:`${t}/${o.name}`;if(o.isDirectory()){if(bo.has(o.name))return i;let s=await Fx(cr.default.join(e,o.name),i,r+1);if(s!==void 0)return s;continue}if(!o.isFile()||Eo.has(o.name))return i}}function Ax(e,t,r=n=>n){let n=y(r(t));return e==="locally-modified"?`${n} was installed by the Webflow CLI and has been edited since. Re-run with --force to discard those edits and replace it.`:`${n} already exists, differs from the pinned upstream content, and was not installed by the Webflow CLI (no lockfile entry). It may be managed by another tool \u2014 the Claude Code plugin marketplace installs the same skills. Re-run with --force to take ownership and replace it.`}async function pO(e){let{groups:t,skills:r,display:n}=e,o=new Map(r.map(s=>[s.name,s.dir]));if(o.size===0)return[];let i=[];for(let s of t){if(s.skipReason!==void 0)continue;let a;try{a=await To.default.promises.readdir(s.dir,{withFileTypes:!0})}catch{continue}a.sort((c,d)=>c.name<d.name?-1:c.name>d.name?1:0);let l=aO;for(let c of a){if(l<=0)break;if(!c.isDirectory()&&!c.isSymbolicLink())continue;l-=1;let d=cr.default.join(s.dir,c.name,Rt),p;try{p=So(await To.default.promises.readFile(d,"utf8")).frontmatter.name}catch{continue}let h=o.get(p);h===void 0||h===c.name||i.push(`${y(n(s.dir))} already contains "${y(c.name)}", whose ${Rt} declares the name "${y(p)}" \u2014 the same skill this install writes to "${y(h)}". Your agent would load it twice; remove one of them.`)}}return i}function Ru(e){let t=cr.default.resolve(e);for(let r of sO){let n=process.env[r]?.trim();if(n&&et(n,t))return r}}function Cx(e){return e.agents[0]?.id??""}function _x(e){let t=e.agents.map(r=>r.displayName);return t.length<=2?t.join(", "):`${t[0]} +${t.length-1} more`}async function fO(e){try{return await To.default.promises.lstat(e),!0}catch{return!1}}async function mO(e){let t=await Yt(e);if(t!==null)return t;throw new f(`The extracted skill directory ${y(e)} is no longer present. Re-run the command.`)}var $t=1,Px=/^sha256:[0-9a-f]{64}$/,Ug=128,Wg=1024,Tx=256,gO=/[\x00-\x1f\x7f]/;function $x(e){return e.trim()===""?"must not be empty":e!==e.trim()?"must not have leading or trailing whitespace":e.length>Ug?`must be at most ${Ug} characters`:e.includes("/")||e.includes("\\")?"must be a single directory name, not a path":Ii(e)}function Iu(e){return e.trim()===""?"must not be empty":e.length>Wg?`must be at most ${Wg} characters`:Ii(e)}function Rx(e){return(t,r)=>{let n=e(t);n!==null&&r.addIssue({code:$.ZodIssueCode.custom,message:n})}}var Lx=$.string().regex(zt,"must be a 40-character lowercase commit SHA"),Nx=$.string().regex(Qc,"is not a usable git ref for this repository"),Ix=$.string().regex(Px,'must look like "sha256:<64 lowercase hex>"'),hO=$.string().min(1,"must not be empty").max(uu).refine(e=>e.trim()!=="","must not be blank").refine(e=>!gO.test(e),"must not contain control characters"),Ox=$.string().datetime({offset:!0}),jx=$.object({commit:Lx,dir:$.string().superRefine(Rx($x)),skillPath:$.string().superRefine(Rx(Iu)).optional(),contentHash:Ix.optional(),modeHash:Ix.optional(),ref:Nx.optional(),agents:$.array($.string().min(1).max(64)).default([]),mode:$.enum(["symlink","copy"]).default("symlink"),category:$.string().min(1).max(64).optional(),installedAt:Ox.optional(),updatedAt:Ox.optional()}).passthrough(),Mx=$.object({repo:$.string().min(1).max(Tx).default(ue),ref:Nx.default(je),commit:Lx.optional(),pluginVersion:$.string().min(1).max(Tx).optional()}).passthrough(),Bx=$.object({lockfileVersion:$.number().int().min(0),source:Mx.default({}),skills:$.record(hO,jx).default({})}).passthrough();function Ux(e){return e.length===0?"the lockfile":e.map((t,r)=>typeof t=="number"?`[${t}]`:r===0?t:/^[A-Za-z_][A-Za-z0-9_]*$/.test(t)?`.${t}`:`[${JSON.stringify(t)}]`).join("")}function Hg(e){let[t]=e.issues;return t?`${Ux([...t.path])} ${t.message}`:"did not match the expected shape"}function Ou(e){return Bx.safeParse(e)}var Pu=D(require("path"));ml();S();var Wx="webflow-skills-lock.json",Hx="skills-lock.json";function Ro(e){if(typeof e!="string"||e.trim()==="")throw new f("Refusing to resolve the skills lockfile: no project directory was provided. Please report this.");return Pu.default.join(Pu.default.resolve(e),Wx)}function Io(){return Pu.default.join(fl(),Hx)}function La(e,t){return e==="global"?Io():Ro(t??"")}var Gx=D(require("fs"));var yO=/^<{7}/m,wO=/^\uFEFF/;async function Fr(e){let t;try{t=await Gx.default.promises.readFile(e,"utf8")}catch(c){return c.code==="ENOENT"?{kind:"absent",path:e}:{kind:"corrupt",path:e,reason:"unreadable",detail:DO(c)}}let r=t.replace(wO,"");if(yO.test(r))return{kind:"corrupt",path:e,reason:"merge-conflict",detail:"unresolved merge-conflict markers"};if(r.trim()==="")return{kind:"corrupt",path:e,reason:"invalid-json",detail:"the file is empty"};let n;try{n=JSON.parse(r)}catch(c){return{kind:"corrupt",path:e,reason:"invalid-json",detail:kO(c,r)}}if(n===null||typeof n!="object"||Array.isArray(n))return{kind:"corrupt",path:e,reason:"schema",detail:`the top level is ${Vx(n)}, not an object`};let o=n,i=o.lockfileVersion;if(i!==void 0&&!Number.isInteger(i))return{kind:"corrupt",path:e,reason:"schema",detail:`lockfileVersion must be an integer (got ${Vx(i)})`};let s=typeof i=="number"?i:0;if(s>$t){let c=Ou(o);return{kind:"too-new",path:e,version:s,lock:c.success?c.data:null}}let a=s<$t?{...o,lockfileVersion:$t}:o,l=Ou(a);return l.success?s<$t?{kind:"ok",lock:l.data,path:e,migratedFrom:s}:{kind:"ok",lock:l.data,path:e}:{kind:"corrupt",path:e,reason:"schema",detail:Hg(l.error)}}function DO(e){let t=e.code,r=e instanceof Error?e.message:String(e);return t?`${{EACCES:"permission denied",EPERM:"operation not permitted",EISDIR:"the path is a directory, not a file",ELOOP:"too many symbolic links",ENOTDIR:"a parent path component is not a directory"}[t]??r} (${t})`:r}function kO(e,t){let r=e instanceof Error?e.message:String(e),n=/position (\d+)/.exec(r);if(!n)return r;let o=Number(n[1]);if(!Number.isFinite(o)||o<0)return r;let i=t.slice(0,o),s=i.split(`
253
+ `).length,a=o-(i.lastIndexOf(`
254
+ `)+1)+1;return`${r.replace(/\s*in JSON at position \d+.*$/,"")} at line ${s}, column ${a}`}function Vx(e){return e===null?"null":Array.isArray(e)?"an array":typeof e=="object"?"an object":typeof e=="string"?"a string":typeof e=="number"?"a number":typeof e=="boolean"?"a boolean":typeof e}function Na(e,t){return e<t?-1:e>t?1:0}function zi(e){return[...new Set(e)].sort(Na)}function Ji(e){return{lockfileVersion:$t,source:{repo:ue,ref:je,...e},skills:{}}}function ur(e){return Object.keys(e.skills).sort(Na)}function $u(e){return Object.keys(e.skills).length===0}function ja(e,t){return Object.prototype.hasOwnProperty.call(e.skills,t)?e.skills[t]:void 0}function Vg(e,t){return{...e,skills:{...e.skills,...t}}}function Gg(e,t){return{...e,source:{...e.source,...t}}}function Kg(e,t){let r=[],n=[],o={...e.skills};for(let i of t)Object.prototype.hasOwnProperty.call(o,i)?(delete o[i],r.push(i)):n.push(i);return{lock:{...e,skills:o},removed:r,missing:n}}function Ma(e,t){return{...e,installedAt:t.existing?.installedAt??t.now,updatedAt:t.now}}function zg(e){let{installedAt:t,updatedAt:r,...n}=e;return n}var zx=require("crypto"),qi=D(require("fs")),Xg=D(require("path"));x();var Kx=D(require("path"));S();function Lu(e){return y(Kx.default.basename(e))}function Jg(e){return y(e)}function Oo(e){let t=Lu(e.path),r=y(e.detail);if(e.reason==="merge-conflict")return new f(`${t} contains unresolved merge-conflict markers. Resolve the conflict, then re-run.`,{isUserError:!0});if(e.reason==="unreadable")return new f(`Could not read ${t}: ${r}.
255
+ ${Jg(e.path)}`,{isUserError:!0});let n=e.reason==="invalid-json"?`${t} is not valid JSON: ${r}`:`${t} is not a valid lockfile: ${r}`;return new f(`${n}.
256
+ ${Jg(e.path)}
257
+ Fix the file and re-run. It is not read as empty on purpose \u2014 that would discard the record of every installed skill on the next write.`,{isUserError:!0})}function Po(e){return new f(`Your ${Lu(e.path)} was written by a newer Webflow CLI (lockfile version ${e.version}, this CLI supports ${$t}). Upgrade with 'npm i -g @webflow/webflow-cli'.`,{isUserError:!0})}function qg(e,t){return new f(`Refusing to write ${Lu(e)}: it is at lockfile version ${t} and this CLI supports ${$t}. Writing it would drop fields a newer CLI recorded. Upgrade with 'npm i -g @webflow/webflow-cli'.`,{isUserError:!0})}function Yg(e,t){let r=y(t instanceof Error?t.message:String(t));return new f(`Could not write ${Lu(e)}: ${r}.
258
+ ${Jg(e)}
259
+ Your skills are on disk but are not recorded, so 'webflow skills update' and 'webflow skills remove' will not see them. Fix the problem and re-run the same install \u2014 it adopts the existing directories and does not need --force.`)}var Jx=420,qx=448,Yx=8;function Nu(e){if(Array.isArray(e))return e.map(Nu);if(e!==null&&typeof e=="object"){let t=e;return Object.fromEntries(Object.keys(t).sort(Na).map(r=>[r,Nu(t[r])]))}return e}function bO(e,t){let r={};for(let[n,o]of Object.entries(e.skills)){let i={...o,agents:zi(o.agents??[])};r[n]=t==="project"?zg(i):i}return{...e,skills:r}}function Xx(e,t){let r=bO(e,t.kind);return`${JSON.stringify(Nu(r),null,2)}
260
+ `}async function Zx(e,t,r){if(t.lockfileVersion>$t)throw qg(e,t.lockfileVersion);let n=Xg.default.resolve(e),o=Xg.default.dirname(n),i=Xx(t,r),s=`${n}.${(0,zx.randomBytes)(6).toString("hex")}.tmp`,a=!1;try{await qi.default.promises.mkdir(o,{recursive:!0,mode:qx});let l=await qi.default.promises.open(s,"wx",Jx);try{await l.writeFile(i,"utf8");try{await l.sync()}catch{}}finally{await l.close()}await qi.default.promises.rename(s,n),a=!0}catch(l){throw Yg(e,l)}finally{a||await qi.default.promises.rm(s,{force:!0}).catch(()=>{})}}async function Zg(e){try{return await qi.default.promises.unlink(e),!0}catch(t){return t.code!=="ENOENT"&&u.debug(`Could not remove the empty skills state file: ${t instanceof Error?t.message:String(t)}`),!1}}function $o(e){let t=e.batchSize??Yx,r=e.lock,n=0,o=0,i=!1,s=async l=>{!i&&!l?.force||(await Zx(e.path,r,{kind:e.kind}),n=0,i=!1,o+=1)},a=async()=>{n+=1,i=!0,n>=t&&await s()};return{get lock(){return r},get pendingCount(){return n},get flushCount(){return o},async record(l,c){r=Vg(r,{[l]:c}),await a()},async forget(l){let c=Kg(r,[l]);return r=c.lock,c.removed.length===0?!1:(await a(),!0)},updateSource(l){r=Gg(r,l),i=!0},flush:s}}var Qx="skills_install";async function Mu(e,t){let r=Date.now(),n=xt(),o=n?_.forSkills({authToken:n}):null;try{let i=await EO(e??[],t);await o?.sendUsage(Qx,{duration:Date.now()-r,...i})}catch(i){throw await o?.sendError(i instanceof Error?i:new Error(String(i)),Qx,{duration:Date.now()-r}),new f(i,{prefix:`${b} Failed to install skills:`,...i instanceof f&&i.missingFlag!==void 0?{missingFlag:i.missingFlag}:{}})}}async function EO(e,t){let r=t.json===!0||ze(),n=t.dryRun===!0,o=process.cwd(),i=await Eu({global:t.global,project:t.project,yes:t.yes},o,r),s=t.global!==!0&&t.project!==!0,a=i==="global"?oe.home():o,l=Du({cwd:o,home:oe.home()}),c=i==="global"?"global":"project",d=La(c,a),p=await Fr(d);if(p.kind==="corrupt")throw Oo(p);if(p.kind==="too-new")throw Po(p);let h=p.kind==="ok"?p.lock:Ji({ref:t.ref??je}),g=ur(h),m=e.length===0&&t.allSkills!==!0&&g.length>0&&(W()||t.yes===!0);await Oa(rt(i,a),{dryRun:n});let w=m?CO(h,g,t.ref):[null],k=[],F=[],A=!1,E=[],v=0,M=0;for(let Ee of w){let Ke=await vO({group:Ee,names:e,options:t,scope:i,root:a,lock:h,display:l,json:r});Ke!==null&&(k.push(Ke.plan),A=A||Ke.cacheHit,E=Ke.agents,v=Math.max(v,Ke.detectedCount),M+=Ke.duplicateNameWarnings)}if(k.length===0||k.every(Ee=>Ee.skills.length===0))return r?u.info(JSON.stringify(bu(OO({plan:k[0]??null,scope:i,root:a,lockPath:d,dryRun:n,restore:m,cacheHit:A,options:t})),null,2)):u.info("No matching skills found in the catalog \u2014 nothing to install."),ju({scope:i,scopeAutoDetected:s,options:t,dryRun:n,restore:m,cacheHit:A,plans:k,materialized:[],agents:E,detectedCount:v,duplicateNameWarnings:M});let B=k[0];if(n){let Ee=rC({plans:k,materialized:[],dryRun:!0,restore:m,cacheHit:A,lockPath:d});if(r)u.info(JSON.stringify(bu(Ee),null,2));else{for(let Ke of k)u.info(Ag(Ke,{dryRun:!0,display:l}));u.info("Dry run complete \u2014 no changes made.")}return ju({scope:i,scopeAutoDetected:s,options:t,dryRun:n,restore:m,cacheHit:A,plans:k,materialized:[],agents:E,detectedCount:v,duplicateNameWarnings:M})}if(t.yes!==!0&&!W()&&r)throw new f(`Installation requires confirmation, and --json cannot prompt.
261
+ Pass --yes to confirm, or --dry-run to preview every path first.`,{isUserError:!0,missingFlag:"--yes"});if(t.yes!==!0&&!W()){for(let Ke of k)u.info(Ag(Ke,{dryRun:!1,display:l}));if(!await Pe({message:"Proceed with installation?",default:!0}))return u.info("Installation cancelled."),ju({scope:i,scopeAutoDetected:s,options:t,dryRun:n,restore:m,cacheHit:A,plans:k,materialized:[],agents:E,detectedCount:v,duplicateNameWarnings:M,cancelled:!0})}let U=$o({path:d,kind:c,lock:h}),Ie=new Date().toISOString();for(let Ee of k)for(let Ke of Ee.skills){let ae=await Pa(Ee,Ke);F.push(ae);let Et=IO({plan:Ee,skill:ae,skillPath:Ke.skillPath,existing:ja(U.lock,ae.name),previousAgents:ja(h,ae.name)?.agents??[],restore:m,kind:c,now:Ie});Et!==null&&await U.record(ae.name,Et)}U.updateSource({repo:B.source.repo,ref:B.source.ref,commit:B.source.commit,pluginVersion:B.source.pluginVersion}),await U.flush({force:!0});let Ze=rC({plans:k,materialized:F,dryRun:!1,restore:m,cacheHit:A,lockPath:d});return r?u.info(JSON.stringify(bu(Ze),null,2)):(u.info(ix(Ze,{display:l})),u.info(`Wrote ${l(d)}`+(c==="project"?" \u2014 commit it so teammates get the same skills.":"."))),(Ze.failures.length>0||Ze.summary.blocked>0&&Ze.summary.installed===0)&&(process.exitCode=1),ju({scope:i,scopeAutoDetected:s,options:t,dryRun:n,restore:m,cacheHit:A,plans:k,materialized:F,agents:E,detectedCount:v,duplicateNameWarnings:M})}async function vO(e){let{group:t,names:r,options:n,scope:o,root:i,lock:s,display:a}=e,l=await Ni(t===null||t.commit===void 0?{ref:t?.ref??n.ref}:{commit:t.commit,ref:t.ref}),c=await Mi(l.root),d=await Wi(c.skillsDir,l.root),p=[...c.warnings,...d.warnings],h=await _O({discovered:d.skills,names:r,allSkills:n.allSkills===!0,restoreNames:t?.names,recordedNames:ur(s),warn:E=>p.push(E)});if(h.length===0)return null;let g=t===null?void 0:zi(t.names.flatMap(E=>ja(s,E)?.agents??[])),m=await SO({scope:o,root:i,options:n,json:e.json,...g!==void 0&&g.length>0?{recordedAgents:g}:{}});for(let E of m.unknownRecorded)p.push(`The lockfile records the agent "${y(E)}", which this CLI does not know. Upgrade with 'npm i -g @webflow/webflow-cli'.`);let w=m.source==="explicit"||m.source==="prompt",k=m.agents.map(E=>({agent:E,explicit:w})),F={repo:ue,ref:t?.ref??l.ref,commit:l.commit,pluginVersion:c.version},A=await $a({scope:o,root:i,mode:t?.mode??(n.copy===!0?"copy":"symlink"),force:n.force===!0,source:F,skills:h,targets:k,recorded:s.skills,warnings:p,display:a});return{plan:A,cacheHit:l.fromCache,agents:m.agents,detectedCount:m.detected.length,duplicateNameWarnings:xO(A.warnings)}}async function SO(e){let{scope:t,root:r,options:n,json:o}=e,i={scope:t,cwd:r,options:{agent:n.agent,allAgents:n.allAgents,yes:n.yes},...e.recordedAgents!==void 0?{recordedAgents:e.recordedAgents}:{}},s=(n.agent?.length??0)>0||n.allAgents===!0||(e.recordedAgents?.length??0)>0;if(o&&!s){let a=await xa(t,r);if(a.length===0){let l=pu(qt);return{agents:l?[l]:[],detected:a,source:"store-only",unknownRecorded:[]}}return Ta({...i,detected:a})}return Ta(i)}function xO(e){return e.filter(t=>t.includes("would load it twice")).length}function CO(e,t,r){let n=new Map;for(let o of t){let i=e.skills[o],s=i.ref??e.source.ref,a=r===void 0?`${i.commit}|${i.mode}`:i.mode,l=n.get(a);if(l){l.names.push(o);continue}n.set(a,{...r===void 0?{commit:i.commit}:{},ref:r??s,mode:i.mode,names:[o]})}return[...n.values()]}async function _O(e){let{discovered:t,names:r,allSkills:n,restoreNames:o,recordedNames:i,warn:s}=e;if(o!==void 0){let c=[];for(let d of o){let p=t.find(h=>h.name===d);if(p===void 0){s(`${y(d)} is recorded in the lockfile but is no longer in the catalog at that commit; skipping it.`);continue}c.push(p)}return c}let a=t.filter(c=>!c.internal);if(n)return a;if(r.length>0)return r.map(c=>FO(c,t));if(a.length===1)return a;let l=a.filter(c=>i.includes(c.name));if(W())throw new f(`No skills were named. Pass skill names, or --all-skills to install every skill in the catalog (${a.length} available).`,{isUserError:!0,missingFlag:"all-skills"});return TO(a,l)}function FO(e,t){let r=Jr(e,[...t]);if(r.kind==="match")return r.skill;throw r.kind==="ambiguous"?new f(`"${y(e)}" matches more than one skill: ${r.matches.map(n=>y(n.dir)).join(", ")}. Use the full name.`,{isUserError:!0}):new f(`No skill matches "${y(e)}".`+(r.candidates.length>0?`
262
+ Available: ${r.candidates.map(n=>y(n)).join(", ")}`:""),{isUserError:!0})}var AO=20,eC=60;async function TO(e,t){let r=new Set(t.map(s=>s.name)),n=[...e].sort((s,a)=>tC(s.category??"",a.category??"")||tC(s.name,a.name)),o=await fr({message:"Select skills to install",pageSize:Math.min(AO,Math.max(4,n.length)),choices:n.map(s=>({value:s.name,name:`${y(s.name)} ${RO(y(s.description))}`,checked:r.has(s.name)})),validate:s=>s.length>0?!0:"Select at least one skill, or press Ctrl-C to cancel."}),i=new Set(o??[]);return n.filter(s=>i.has(s.name))}function tC(e,t){return e<t?-1:e>t?1:0}function RO(e){return e.length<=eC?e:`${e.slice(0,eC-1)}\u2026`}function IO(e){let{plan:t,skill:r,existing:n,restore:o,kind:i,now:s}=e;if(!(r.storeAction==="written"||r.storeAction==="adopted"||r.storeAction==="unchanged")||r.hashes===null)return null;let l=new Map(t.skills.find(p=>p.name===r.name)?.targets.map(p=>[p.path,p.agents])??[]),c=[];for(let p of r.targets)p.skipped===!0||!p.success||c.push(...l.get(p.path)??[p.agent]);o&&c.push(...e.previousAgents);let d={agents:zi(c),commit:t.source.commit,contentHash:r.hashes.contentHash,modeHash:r.hashes.modeHash,dir:r.dir,mode:t.mode,ref:t.source.ref,skillPath:e.skillPath};return i==="global"?Ma(d,{...n?{existing:n}:{},now:s}):d}function rC(e){let{plans:t,materialized:r,dryRun:n,restore:o,cacheHit:i,lockPath:s}=e,l={...t[0],skills:t.flatMap(d=>d.skills),warnings:[...new Set(t.flatMap(d=>d.warnings))],blocked:t.flatMap(d=>d.blocked)},c=Fg({plan:l,materialized:r,dryRun:n});return{plan:l,dryRun:n,restored:o,cacheHit:i,materialized:[...r],lockfilePath:s,...c,...t.length>1?{extraSources:t.slice(1).map(d=>d.source)}:{}}}function OO(e){let t={scope:e.scope,root:e.root,storeBase:"",mode:e.options.copy===!0?"copy":"symlink",force:e.options.force===!0,source:{repo:ue,ref:e.options.ref??je,commit:"",pluginVersion:""},skills:[],warnings:[],blocked:[]};return{plan:e.plan??t,dryRun:e.dryRun,restored:e.restore,cacheHit:e.cacheHit,materialized:[],lockfilePath:e.lockPath,blocked:[],failures:[],summary:{requested:0,installed:0,skipped:0,blocked:0,failed:0,storeWrites:0,symlinks:0,copies:0,symlinkFallbacks:0}}}function ju(e){let t=e.plans[0],r=e.plans.flatMap(i=>i.skills),n={};for(let i of r)n[i.storeOverwrite]=(n[i.storeOverwrite]??0)+1;let o=t?Fg({plan:{...t,skills:r,blocked:[]},materialized:e.materialized,dryRun:e.dryRun}):null;return{count:o?.summary.installed??0,scope:e.scope,scopeAutoDetected:e.scopeAutoDetected,mode:t?.mode??(e.options.copy===!0?"copy":"symlink"),agentCount:e.agents.length,agentIds:e.agents.map(i=>i.id),detectedAgentCount:e.detectedCount,sharedDirTargetCount:r.reduce((i,s)=>i+s.targets.filter(a=>a.link==="canonical").length,0),symlinkFallbackCount:o?.summary.symlinkFallbacks??0,symlinkFallbackErrno:[...new Set(e.materialized.flatMap(i=>i.targets.filter(s=>s.symlinkFailed===!0).map(s=>s.errno??"unknown")))].sort(),skillNames:r.map(i=>i.name),refKind:PO(e.options.ref),commit:t?.source.commit??"",pluginVersion:t?.source.pluginVersion??"",cacheHit:e.cacheHit,dryRun:e.dryRun,forced:e.options.force===!0,overwriteClasses:n,blockedCount:o?.summary.blocked??0,skippedCount:o?.summary.skipped??0,warningCount:[...new Set(e.plans.flatMap(i=>i.warnings))].length,restored:e.restore,duplicateNameWarnings:e.duplicateNameWarnings,...e.cancelled===!0?{cancelled:!0}:{}}}function PO(e){return e===void 0||e===je?"default":/^[0-9a-f]{40}$/.test(e)?"sha":"branch"}J();S();pe();x();N();z();var Bu=D(require("fs")),Yi=D(require("path"));var $O=256;async function nC(e){let{scope:t,lock:r}=e,n=Yi.default.resolve(e.root),o=rt(t,n),i=e.display??(d=>d),s=e.platform??process.platform,a=[],l=[],c=new Set;for(let d of Object.keys(r.skills).sort()){let p=r.skills[d];c.add(p.dir),l.push(await LO({name:d,entry:p,scope:t,root:n,store:o,platform:s,display:i,warn:h=>a.push(h)}))}return l.push(...await BO({scope:t,root:n,store:o,recordedDirs:c})),{scope:t,root:n,store:o,lockfile:e.lockfile,source:r.source,skills:l,warnings:a}}async function LO(e){let{name:t,entry:r,scope:n,root:o,store:i,platform:s,display:a,warn:l}=e,c=Yi.default.join(i,r.dir),d=jO(r),p=await Yt(c),h={name:t,dir:r.dir,description:await UO(c),scope:n,status:"up-to-date",mode:r.mode,storePath:c,recordedHash:r.contentHash??null,onDiskHash:p?.contentHash??null,...r.skillPath!==void 0?{skillPath:r.skillPath}:{},...r.commit!==void 0?{commit:r.commit}:{},...r.ref!==void 0?{ref:r.ref}:{},...r.category!==void 0?{category:r.category}:{},agents:[]},g=[],m;for(let w of r.agents){let k=xr(w);if(k===void 0){g.push({id:w,label:w,path:null,link:"missing",present:!1}),l(`${y(t)} records the agent "${y(w)}", which this CLI does not know. Upgrade with 'npm i -g @webflow/webflow-cli'.`);continue}let F=Ot(k,n,o);if(F===null){g.push({id:w,label:k.displayName,path:null,link:"missing",present:!1});continue}let A=Yi.default.join(F,r.dir);if(He(A,c)){g.push({id:w,label:k.displayName,path:A,link:"canonical",present:p!==null});continue}let E=await MO(A);if(E==="missing"){g.push({id:w,label:k.displayName,path:A,link:"missing",present:!1}),l(`${y(t)} is recorded for ${y(k.displayName)} but ${y(a(A))} is no longer present. Re-run \`webflow skills install\` to restore it.`);continue}let v=!1;if(r.mode==="copy"&&E==="copy"&&d!==null){let M=await Yt(A);v=M===null||!Pt(M,d,s),v&&m===void 0&&(m=k.displayName)}g.push({id:w,label:k.displayName,path:A,link:E,present:!0,...v?{diverged:!0}:{}})}return{...h,agents:g,...NO({onDisk:p,recorded:d,platform:s,divergedLabel:m})}}function NO(e){let{onDisk:t,recorded:r,platform:n,divergedLabel:o}=e;return t===null?{status:"missing"}:r!==null&&!Pt(t,r,n)?{status:"modified"}:o!==void 0?{status:"modified",statusDetail:`${y(o)} copy diverges`}:{status:"up-to-date"}}function jO(e){return e.contentHash===void 0?null:{contentHash:e.contentHash,modeHash:e.modeHash??""}}async function MO(e){try{let t=await Bu.default.promises.lstat(e);return t.isSymbolicLink()?"symlink":t.isDirectory()?"copy":"missing"}catch{return"missing"}}async function BO(e){let{scope:t,store:r,recordedDirs:n}=e,o;try{o=await Bu.default.promises.readdir(r,{withFileTypes:!0})}catch{return[]}let i=[],s=$O;for(let a of[...o].sort((l,c)=>l.name<c.name?-1:l.name>c.name?1:0)){if(s<=0)break;if(!a.isDirectory()&&!a.isSymbolicLink()||n.has(a.name)||/\.[0-9a-f]{6}\.tmp$/.test(a.name))continue;s-=1;let l=Yi.default.join(r,a.name),c=await Yt(l);if(c===null)continue;let d=await oC(l);d!==null&&zv(d.name)&&i.push({name:d.name,dir:a.name,description:d.description,scope:t,status:"unmanaged",mode:"symlink",storePath:l,recordedHash:null,onDiskHash:c.contentHash,agents:[]})}return i}async function UO(e){return(await oC(e))?.description??""}async function oC(e){try{let t=await Bu.default.promises.readFile(Yi.default.join(e,Rt),"utf8"),r=So(t);return{name:r.frontmatter.name,description:r.frontmatter.description}}catch{return null}}var iC="skills_list",WO="name",HO=st(Fo);async function Uu(e){let t=Date.now(),r=xt(),n=r?_.forSkills({authToken:r}):null;try{let o=await VO(e);await n?.sendUsage(iC,{duration:Date.now()-t,...o})}catch(o){throw await n?.sendError(o instanceof Error?o:new Error(String(o)),iC,{duration:Date.now()-t}),new f(o,{prefix:`${b} Failed to list skills:`,...o instanceof f&&o.missingFlag!==void 0?{missingFlag:o.missingFlag}:{}})}}async function VO(e){let t=e.json===!0||ze(),r=process.cwd(),n=Du({cwd:r,home:oe.home()}),o=[],i=KO(e.fields,o),s=zO(e.sortBy),a=JO(e.order),l=qO(e.agent),c=GO(e),d=[],p=0;for(let m of c){let w=m==="global"?oe.home():r,k=La(m==="global"?"global":"project",w),F=await Fr(k),A;if(F.kind==="ok")A=F.lock;else if(F.kind==="too-new")A=F.lock??Ji(),o.push(`${n(k)} was written by a newer Webflow CLI (lockfile version ${F.version}); some fields may be missing here. Upgrade with 'npm i -g @webflow/webflow-cli'.`);else if(F.kind==="corrupt"){o.push(`Skipped ${n(k)} \u2014 ${F.detail}. Fix the file and re-run.`);continue}else A=Ji();let E=await nC({scope:m,root:w,lockfile:k,lock:A,display:n});o.push(...E.warnings),p+=E.skills.length,l!==null&&(E.skills=E.skills.filter(v=>v.agents.some(M=>l.has(M.id)))),E.skills.sort(dx(s,a)),d.push(E)}let h=Tg(d);if(t)return u.info(JSON.stringify(ux({inventories:d,warnings:o}),null,2)),Qg({inventories:d,summary:h,fields:i,json:t,agentFilter:l});if(h.total===0){u.info(l!==null&&p>0?`No skills are linked into ${[...l].sort().join(", ")}. ${p} ${p===1?"skill is":"skills are"} installed \u2014 run \`webflow skills list\` to see ${p===1?"it":"them"}.`:Rg);for(let m of ku(o))u.info(m);return Qg({inventories:d,summary:h,fields:i,json:t,agentFilter:l})}let g=[];for(let m of d){if(m.skills.length===0)continue;let w=lx(m.skills,{store:m.store,display:n});g.push([cx(m,{display:n}),"",sx(m.skills,i),...w===""?[]:["",w]].join(`
263
+ `))}u.info(g.join(`
264
+
265
+ `));for(let m of ku(o))u.info(m);return Qg({inventories:d,summary:h,fields:i,json:t,agentFilter:l})}function GO(e){if(e.global===!0&&e.project===!0)throw new f("Pass either --global or --project, not both.",{isUserError:!0,missingFlag:"scope"});return e.global===!0?["global"]:e.project===!0?["project"]:["project","global"]}function KO(e,t){let r=(e??Ia).split(",").map(i=>i.trim()).filter(Boolean),{valid:n,invalid:o}=HO(r);if(n.length===0)throw new f(`No valid fields specified. Available: ${Fo.join(", ")}`,{isUserError:!0,missingFlag:"fields"});return o.length>0&&t.push(`Unknown field(s): ${o.join(", ")}. Available: ${Fo.join(", ")}`),n}function zO(e){if(e===void 0||e==="")return WO;let t=Gi.find(r=>r===e.trim().toLowerCase());if(t===void 0)throw new f(`Cannot sort by "${e}". Available: ${Gi.join(", ")}`,{isUserError:!0,missingFlag:"sort-by"});return t}function JO(e){let t=(e??"asc").trim().toLowerCase();if(t==="asc"||t==="desc")return t;throw new f(`Invalid --order "${e}". Use asc or desc.`,{isUserError:!0,missingFlag:"order"})}function qO(e){let t=Hi(e);return t.length===0?null:new Set(Vi(t).map(r=>r.id))}function Qg(e){let t=new Set;for(let r of e.inventories)for(let n of r.skills)for(let o of n.agents)t.add(o.id);return{count:e.summary.total,scopes:e.inventories.map(r=>r.scope),statusCounts:{upToDate:e.summary.upToDate,modified:e.summary.modified,missing:e.summary.missing,unmanaged:e.summary.unmanaged},agentIds:[...t].sort(),json:e.json,fieldCount:e.fields.length,agentFiltered:e.agentFilter!==null}}var bt=D(require("fs")),Ba=D(require("os")),nt=D(require("path"));J();S();pe();Ae();x();N();z();async function Gu(e,t){let r=Date.now(),n=fP();try{let o=t.json===!0||ze(),i=await YO(e,t,o);await n?.sendUsage("skills_remove",{duration:Date.now()-r,count:i.summary.requested,removed:i.summary.removed,storeDeleted:i.summary.storeDeleted,storeKept:i.summary.storeKept,failed:i.summary.failed,dryRun:i.dryRun,agentFiltered:i.agents!==null}),lP(i,o),i.failures.length>0&&(process.exitCode=1)}catch(o){throw await n?.sendError(o instanceof Error?o:new Error(String(o)),"skills_remove",{duration:Date.now()-r,dryRun:t.dryRun===!0}),o instanceof f?o:new f(o,{prefix:`${b} Failed to remove skills:`})}}async function YO(e,t,r){let n=process.cwd(),o=[],i=t.dryRun===!0,s=await Eu(t,n,r),a=s==="global"?Ba.default.homedir():n,l=rt(s,a),c=s==="global"?Io():Ro(a),d=await Fr(c);if(d.kind==="corrupt")throw Oo(d);if(d.kind==="too-new")throw Po(d);let p=d.kind==="ok"?d.lock:{lockfileVersion:1,source:{repo:"",ref:"main"},skills:{}},h=Hi(t.agent),m=h.length===0||h.includes(Aa)?null:Vi(h).map(ae=>ae.id),w=Cr(s),k=await XO({agents:w,scope:s,root:a,storeBase:l,warnings:o}),F=uC(k.dirNames,p),A=await QO({names:e,options:t,identities:F,scope:s,cwd:n,json:r,warnings:o});if(A.length===0)return cC({scope:s,root:a,storeBase:l,lockPath:c,dryRun:i,filterIds:m,warnings:o,lock:p});let E=new Set(m??[...Co,qt]);if(m?.includes(qt))for(let ae of A){let Et=(ae.entry?.agents??[]).filter(ie=>ie!==qt&&!E.has(ie));if(Et.length>0)throw new f(`Cannot remove the shared store for "${y(ae.name)}" while ${Et.map(ie=>y(ie)).join(", ")} still link to it.
266
+ Remove those first, or run \`webflow skills remove ${y(ae.dir)}\` with no --agent to remove everything.`,{isUserError:!0,missingFlag:"agent",prefix:`${b} Cannot remove skills:`})}let v=[];for(let ae of A)v.push(await tP({identity:ae,agents:m===null?w:w.filter(Et=>m.includes(Et.id)),allAgents:w,scope:s,root:a,storeBase:l,removalTargets:E}));if(i)return{...eh({scope:s,root:a,storeBase:l,lockPath:c,dryRun:i,filterIds:m,warnings:o,lock:p,plans:v}),skills:v.map(ae=>dP(ae,s)),summary:{requested:v.length,removed:0,storeDeleted:v.filter(ae=>ae.storeWillBeDeleted).length,storeKept:v.filter(ae=>ae.onDisk&&!ae.storeWillBeDeleted).length,staleLockEntriesRemoved:v.filter(ae=>!ae.onDisk).length,failed:0},lockfileEmpty:uP(p,v),lockfileDeleted:!1};if(!await aP(v,s,t,r))return r||u.info("Removal cancelled \u2014 no changes made."),cC({scope:s,root:a,storeBase:l,lockPath:c,dryRun:i,filterIds:m,warnings:o,lock:p});let M=new Set(k.skillDirs),B=$o({path:c,kind:s,lock:p}),U=[],Ie=[],Ze=[];for(let ae of v){let Et=A.find(ie=>ie.dir===ae.dir);Ie.push(await nP({plan:ae,identity:Et,scope:s,root:a,storeBase:l,knownDirs:M,writer:B,failures:U,removedDirectories:Ze}))}await B.flush({force:!0});let Ee=$u(B.lock),Ke=!1;return Ee&&s==="global"&&(Ke=await Zg(c)),{...eh({scope:s,root:a,storeBase:l,lockPath:c,dryRun:i,filterIds:m,warnings:o,lock:p,plans:v}),skills:Ie,removedDirectories:Ze,failures:U,summary:{requested:v.length,removed:Ie.filter(ae=>ae.success).length,storeDeleted:Ie.filter(ae=>ae.storeAction==="deleted").length,storeKept:Ie.filter(ae=>ae.storeAction==="kept").length,staleLockEntriesRemoved:Ie.filter(ae=>ae.storeAction==="absent"&&ae.lockEntry==="removed").length,failed:U.length},lockfileEmpty:Ee,lockfileDeleted:Ke}}async function XO(e){let{agents:t,scope:r,root:n,storeBase:o,warnings:i}=e,s=new Set,a=new Set,l=c=>i.push(c);for(let c of[o,...rh(t,r,n,l)]){if(await pP(c)){i.push(`${Ua(c)} is a symbolic link, not a directory. Skills are not removed through one \u2014 repoint or replace it, then re-run.`);continue}a.add(c);let d;try{d=await bt.default.promises.readdir(c,{withFileTypes:!0})}catch(p){let h=p.code;h!=="ENOENT"&&h!=="ENOTDIR"&&i.push(`Could not read ${Ua(c)}: ${th(p)}`);continue}for(let p of d)(p.isDirectory()||p.isSymbolicLink())&&s.add(p.name)}return{dirNames:s,skillDirs:a}}function rh(e,t,r,n){let o=new Set;for(let i of e){try{let a=Ot(i,t,r);if(a!==null){if(et(r,a))o.add(a);else if(n){let l=Ru(a);n(`${Ua(a)} resolves outside ${Ua(r)}`+(l?` (check $${l})`:"")+"; refusing to remove anything there.")}}}catch{}let s=nt.default.resolve(r,...i.skillsDir.split("/"));s.startsWith(nt.default.resolve(r)+nt.default.sep)&&o.add(s)}return[...o]}function uC(e,t){let r=new Map;for(let n of e)r.set(n,{name:n,dir:n,folderName:n,entry:null});for(let n of ur(t)){let o=t.skills[n];r.set(o.dir,{name:n,dir:o.dir,folderName:o.skillPath?Cn(o.skillPath):o.dir,entry:o})}return[...r.values()]}function Wu(e){return e.entry===null}function ZO(e){return new f(`"${y(e.dir)}" has no entry in the Webflow skills lockfile, so it was not installed by the Webflow CLI.
267
+ It may belong to another tool, or be hand-written. Re-run with --force to delete it anyway.`,{isUserError:!0,missingFlag:"--force",prefix:`${b} Refusing to remove an unmanaged skill directory:`})}async function QO(e){let{names:t,options:r,identities:n,scope:o,cwd:i,json:s,warnings:a}=e,l=r.force===!0,c=n.filter(g=>!Wu(g)),d=n.filter(Wu);if(t.length>0){let g=[];for(let m of t){let w=Jr(m,n);if(w.kind==="match"){if(!l&&Wu(w.skill))throw ZO(w.skill);g.includes(w.skill)||g.push(w.skill);continue}throw w.kind==="ambiguous"?new f(`"${y(m)}" matches ${w.matches.length} installed skills: ${w.matches.map(k=>y(k.dir)).join(", ")}.
268
+ Name one of them exactly.`,{isUserError:!0,prefix:`${b} Cannot remove skills:`}):await eP(m,w.candidates,o,i)}return g}if(r.all)return l?n:(sC(d,a),c);if(W()||s)throw new f("Specify skill names or pass --all.",{isUserError:!0,missingFlag:"all",prefix:`${b} Nothing to remove:`});let p=l?n:c;return l||sC(d,a),p.length===0?[]:await fr({message:`Which skills should be removed (${o} scope)?`,choices:p.map(g=>({value:g,name:`${y(g.dir)}${Wu(g)?" (not in the lockfile)":""}`})),validate:g=>g.length>0?!0:"Select at least one skill."})??[]}function sC(e,t){e.length!==0&&t.push(`${e.length} skill ${e.length===1?"directory":"directories"} have no lockfile entry and were left untouched: ${e.map(r=>y(r.dir)).join(", ")}. Pass --force to remove them too.`)}async function eP(e,t,r,n){let o=r==="project"?"global":"project",i=o==="global"?Ba.default.homedir():n,s=o==="global"?Io():Ro(i),a=await Fr(s);if(a.kind==="ok"||a.kind==="too-new"){let l=(a.kind==="ok",a.lock);if(l!==null){let c=await bt.default.promises.readdir(rt(o,i)).catch(()=>[]);if(Jr(e,uC(c,l)).kind!=="none")return new f(`"${y(e)}" is not installed at ${r} scope (${Ua(r==="global"?Ba.default.homedir():n)}), but it IS installed ${o==="global"?"globally":"in this project"}. Re-run with --${o} to remove it.`,{isUserError:!0,missingFlag:o,prefix:`${b} Cannot remove skills:`})}}return new f(`"${y(e)}" is not installed at ${r} scope.
269
+ `+(t.length===0?" No skills are installed at this scope.":` Installed: ${t.map(l=>y(l)).join(", ")}`),{isUserError:!0,prefix:`${b} Cannot remove skills:`})}async function tP(e){let{identity:t,agents:r,scope:n,root:o,storeBase:i,removalTargets:s}=e,a=nt.default.join(i,t.dir),l=new Map;for(let h of r)for(let g of rh([h],n,o)){let m=nt.default.join(g,t.dir);if(He(m,a))continue;let w=l.get(m);if(w){w.agents.push(h.id);continue}await Vu(m)&&l.set(m,{agent:h.id,agents:[h.id],label:h.displayName,path:m})}let c=[...l.values()].sort((h,g)=>h.path<g.path?-1:h.path>g.path?1:0),{deleted:d,keptBecause:p}=await rP({identity:t,allAgents:e.allAgents,scope:n,root:o,storeBase:i,removalTargets:s});return{name:t.name,dir:t.dir,storePath:a,onDisk:await Vu(a),targets:c,storeWillBeDeleted:d,keptBecause:p}}async function rP(e){let{identity:t,removalTargets:r}=e,n=t.entry?.agents??[];if(n.length>0){let i=n.filter(s=>!r.has(s)).sort((s,a)=>s<a?-1:s>a?1:0);return{deleted:i.length===0,keptBecause:i}}let o=[];for(let i of e.allAgents)if(!r.has(i.id))for(let s of rh([i],e.scope,e.root)){let a=nt.default.join(s,t.dir);if(!He(a,nt.default.join(e.storeBase,t.dir))&&await Vu(a)){o.push(i.id);break}}return{deleted:o.length===0,keptBecause:o.sort()}}async function nP(e){let{plan:t,identity:r,scope:n,knownDirs:o,writer:i,failures:s}=e,a=[],l=!1;for(let p of t.targets){let h=await Vu(p.path);try{await aC({target:p.path,slug:t.dir,knownDirs:o,root:e.root}),await lC(p.path),a.push({...p,action:h?"unlinked":"absent",error:null})}catch(g){l=!0;let m=th(g);s.push({name:r.name,agent:p.agent,...Hu(g)!==void 0?{errno:Hu(g)}:{},message:m}),a.push({...p,action:"failed",error:m})}}let c=t.onDisk?"kept":"absent";if(t.storeWillBeDeleted&&t.onDisk)try{await aC({target:t.storePath,slug:t.dir,knownDirs:o,root:e.root}),await lC(t.storePath),c="deleted"}catch(p){l=!0,c="failed",s.push({name:r.name,...Hu(p)!==void 0?{errno:Hu(p)}:{},message:th(p)})}else t.storeWillBeDeleted&&!t.onDisk&&(c="absent");let d="absent";return!l&&r.entry!==null&&(t.keptBecause.length>0&&c!=="deleted"?(await i.record(r.name,{...r.entry,agents:t.keptBecause}),d="updated"):d=await i.forget(r.name)?"removed":"absent"),l||e.removedDirectories.push(...await iP({targets:t.targets,storeBase:e.storeBase,storeDeleted:c==="deleted"||c==="absent",root:e.root,scope:n})),{name:r.name,dir:t.dir,scope:n,storePath:t.storePath,storeAction:c,keptBecause:t.keptBecause,lockEntry:d,targets:a,success:!l,error:null}}async function aC(e){let{target:t,slug:r,knownDirs:n,root:o}=e;if(nt.default.basename(t)!==r)throw new f(`Refusing to delete ${y(t)}: its final component is not "${y(r)}".`);let i=nt.default.dirname(t),s;try{s=await bt.default.promises.realpath(i)}catch{throw new f(`Refusing to delete ${y(t)}: its parent directory ${y(i)} could not be resolved.`)}if(!await oP(n,s))throw new f(`Refusing to delete ${y(t)}: ${y(i)} is not a known skills directory.`);let l=await bt.default.promises.realpath(o).catch(()=>o);if(He(s,l))throw new f(`Refusing to delete ${y(t)}: ${y(i)} resolves to the scope root itself, not to a skills directory.`);Re(l,nt.default.join(s,nt.default.basename(t)),"a skill directory being removed")}async function oP(e,t){for(let r of e){if(He(r,t))return!0;let n=await bt.default.promises.realpath(r).catch(()=>null);if(n!==null&&He(n,t))return!0}return!1}async function lC(e){let t=null;try{t=await bt.default.promises.lstat(e)}catch{t=null}if(t!==null&&t.isSymbolicLink()){await bt.default.promises.rm(e,{force:!0});return}await bt.default.promises.rm(e,{recursive:!0,force:!0})}async function iP(e){let t=[],r=new Set([e.root,Ba.default.homedir(),nt.default.dirname(e.root)].map(o=>nt.default.resolve(o))),n=[];for(let o of e.targets)n.push(nt.default.dirname(o.path));e.storeDeleted&&n.push(e.storeBase,nt.default.dirname(e.storeBase));for(let o of n){let i=nt.default.resolve(o);if(!r.has(i)&&et(e.root,i))try{let s=await bt.default.promises.realpath(i);if(r.has(s)||!await sP(e.root,s))continue;await bt.default.promises.rmdir(s),t.push(s)}catch{}}return t}async function sP(e,t){let r=await bt.default.promises.realpath(e).catch(()=>e);return et(r,t)&&!He(r,t)}async function aP(e,t,r,n){if(r.yes)return!0;if(W()||n)throw new f(`Removal requires confirmation in non-interactive mode.
270
+ Pass --yes to confirm, or --dry-run to see exactly what would be deleted.`,{isUserError:!0,missingFlag:"--yes",prefix:`${b} Cannot remove skills:`});return u.info(Ig(e,t)),Pe({message:`Remove ${e.length} skill${e.length===1?"":"s"}?`,default:!1})}function lP(e,t){if(t){u.info(JSON.stringify(e,null,2));return}for(let r of e.warnings)u.warn(`${he} ${y(r)}`);if(e.dryRun){u.info(Ig(e.skills.map(r=>({name:r.name,dir:r.dir,storePath:r.storePath,onDisk:r.storeAction!=="absent",targets:r.targets,storeWillBeDeleted:r.storeAction==="deleted",keptBecause:r.keptBecause})),e.scope,{dryRun:!0}));return}u.info(fx(e))}function cP(e,t){let r=new Set;for(let o of e??[]){let i=t.skills[o.name]?.mode;i!==void 0&&r.add(i)}if(r.size!==1)return null;let[n]=[...r];return n==="copy"?"copy":"symlink"}function eh(e){return{kind:"skills.remove",schemaVersion:Fn,dryRun:e.dryRun,scope:e.scope,root:e.root,store:e.storeBase,lockfile:e.lockPath,mode:cP(e.plans,e.lock),source:{...e.lock.source},agents:e.filterIds,skills:[],removedDirectories:[],failures:[],summary:{requested:0,removed:0,storeDeleted:0,storeKept:0,staleLockEntriesRemoved:0,failed:0},lockfileEmpty:!1,lockfileDeleted:!1,warnings:[...new Set(e.warnings)]}}function cC(e){return{...eh(e),lockfileEmpty:$u(e.lock)}}function uP(e,t){let r=new Set(t.filter(n=>n.keptBecause.length===0).map(n=>n.name));return ur(e).every(n=>r.has(n))}function dP(e,t){return{name:e.name,dir:e.dir,scope:t,storePath:e.storePath,storeAction:e.onDisk?e.storeWillBeDeleted?"deleted":"kept":"absent",keptBecause:e.keptBecause,lockEntry:e.keptBecause.length>0?"updated":"removed",targets:e.targets.map(r=>({...r,action:"unlinked",error:null})),success:!0,error:null}}async function pP(e){try{return(await bt.default.promises.lstat(e)).isSymbolicLink()}catch{return!1}}async function Vu(e){try{return await bt.default.promises.lstat(e),!0}catch{return!1}}function Hu(e){let t=e?.code;return typeof t=="string"?t:void 0}function th(e){return y(e instanceof Error?e.message:String(e))}function fP(){let e=xt();return e?_.forSkills({authToken:e}):null}function Ua(e){return _o(e)}var Xi=D(require("fs")),fC=D(require("os")),dr=D(require("path"));J();S();pe();Ae();x();N();z();function mC(e){let{presence:t,upstream:r,local:n,force:o}=e;if(!e.hasSkillPath){if(!e.foundByName)return{guard:"G2",state:"untracked",action:"skipped",willWrite:!1,blocked:!1,reason:"tracking-unrepairable"};let c=n==="differs";return{guard:"G2",state:"untracked",action:"repaired",willWrite:n==="absent"||r==="differs"&&!c||o,blocked:!1,reason:c&&!o?"locally-modified":null}}if(n==="absent"&&t==="missing")return{guard:"G3",state:"stale-entry",action:"stale",willWrite:!1,blocked:!1,reason:"not-on-disk-and-removed-upstream"};if(n==="absent")return{guard:"G4",state:"missing",action:"reinstalled",willWrite:!0,blocked:!1,reason:"store-directory-missing"};if(t==="missing")return{guard:"G5",state:"removed-upstream",action:"orphaned",willWrite:!1,blocked:!1,reason:n==="differs"?"removed-upstream-and-locally-modified":"removed-upstream"};let i=t==="moved",s=i?"renamed-upstream":n==="differs"?r==="differs"?"conflict":"locally-modified":r==="differs"?"upstream-changed":"unchanged";if(n==="same")return i?{guard:"grid",state:s,action:r==="differs"?"moved+updated":"moved",willWrite:!0,blocked:!1,reason:"renamed-upstream"}:r==="differs"?{guard:"grid",state:s,action:"updated",willWrite:!0,blocked:!1,reason:null}:{guard:"grid",state:s,action:"unchanged",willWrite:!1,blocked:!1,reason:null};let a=i?r==="differs"?"moved-upstream-changed-upstream-and-locally-modified":"moved-upstream-and-locally-modified":r==="differs"?"locally-modified-and-upstream-changed":"locally-modified";if(o)return{guard:"grid",state:s,action:i?r==="differs"?"moved+updated":"moved":"updated",willWrite:!0,blocked:!1,reason:a};let l=!i&&r==="same";return{guard:"grid",state:s,action:l?"skipped":"blocked",willWrite:!1,blocked:!l,reason:a}}async function Ku(e,t){let r=Date.now(),n=t.check===!0||t.dryRun===!0,o=t.force===!0;if(t.global&&t.project)throw new f("Pass either --global or --project, not both.",{isUserError:!0,missingFlag:"scope",prefix:`${b} Cannot update skills:`});let i=NP(),s=t.json===!0||ze();try{let a=await mP({names:e,options:t,checkOnly:n,force:o,json:s});await i?.sendUsage("skills_update",{duration:Date.now()-r,count:a.summary.checked,updated:a.summary.updated,blocked:a.summary.blocked,failed:a.summary.failed,relinked:a.summary.relinked,checkOnly:n,force:o,scopeCount:a.scopes.length}),$P(a,s),(a.failures.length>0||!n&&a.summary.conflicts>0&&a.summary.updated===0)&&(process.exitCode=1)}catch(a){throw await i?.sendError(a instanceof Error?a:new Error(String(a)),"skills_update",{duration:Date.now()-r,checkOnly:n,force:o}),a instanceof f?a:new f(a,{prefix:`${b} Failed to update skills:`})}}async function mP(e){let{names:t,options:r,checkOnly:n,force:o,json:i}=e,s=[],a=process.cwd(),l=await gP(r,a,n,s);if(l.length===0)return oh({checkOnly:n,force:o,warnings:s});let c=hP(l,t,r);if(c.length===0)return oh({checkOnly:n,force:o,warnings:s,scopes:l.map(v=>v.scope)});let d=new Map;for(let{state:v,key:M}of c){let B=nh(r,v.lock,M);d.has(B)||d.set(B,(await ka(B)).commit)}let p=new Map;for(let{state:v,key:M}of c){let B=v.lock.skills[M];p.set(`${v.scope}\0${M}`,await kP(v,B))}let h=c.every(({state:v,key:M})=>{let B=v.lock.skills[M];return d.get(nh(r,v.lock,M))===B.commit}),g=c.every(({state:v,key:M})=>p.get(`${v.scope}\0${M}`)!==null);if(h&&g&&r.ref===void 0&&!o)return PP({selected:c,states:l,localDigests:p,refs:d,options:r,checkOnly:n,force:o,warnings:s});let m=new Map;for(let v of new Set(d.values()))m.set(v,await DP(v,s));let w=[],k=[];for(let{state:v,key:M}of c){let B=v.lock.skills[M],U=nh(r,v.lock,M),Ie=d.get(U),Ze=m.get(Ie);try{w.push(await bP({state:v,key:M,entry:B,ref:U,commit:Ie,catalog:Ze,force:o,checkOnly:n,localDigest:p.get(`${v.scope}\0${M}`)??null,warnings:s}))}catch(Ee){k.push({name:M,errno:pC(Ee),message:ih(Ee)})}}let F=w.filter(v=>v.localDrift==="differs"&&v.outcome.willWrite);if(!n&&F.length>0&&!await TP(F,r,i))return oh({checkOnly:n,force:o,warnings:s,scopes:l.map(M=>M.scope),cancelled:!0});let A=new Map,E=[];if(!n)for(let v of l)v.readOnly||await Oa(v.storeBase,{dryRun:!1});for(let v of w)try{E.push(await SP({candidate:v,checkOnly:n,force:o,options:r,writers:A,failures:k,warnings:s}))}catch(M){k.push({name:v.key,errno:pC(M),message:ih(M)}),E.push(RP(v,ih(M)))}if(r.ref!==void 0&&!n)for(let v of l)v.readOnly||gC(v,A);for(let[v,M]of A){let B=l.find(Ee=>Ee.scope===v),U=r.ref??B.lock.source.ref??je,Ie=d.get(U)??w.find(Ee=>Ee.scopeState.scope===v)?.commit,Ze=DC(m);M.updateSource({ref:U,...Ie!==void 0?{commit:Ie}:{},...Ze!==void 0?{pluginVersion:Ze}:{}}),await M.flush({force:!0})}return OP({reports:E,candidates:w,failures:k,states:l,refs:d,catalogs:m,options:r,checkOnly:n,force:o,warnings:s})}async function gP(e,t,r,n){let o=e.global?["global"]:e.project?["project"]:["project","global"],i=[];for(let s of o){let a=s==="global"?fC.default.homedir():t,l=s==="global"?Io():Ro(a),c=await Fr(l);if(c.kind!=="absent"){if(c.kind==="corrupt")throw Oo(c);if(c.kind==="too-new"){if(!r||c.lock===null)throw Po(c);n.push(`${Ha(l)} was written by a newer Webflow CLI (lockfile version ${c.version}); reporting read-only.`),i.push({scope:s,root:a,lockPath:l,lock:c.lock,storeBase:rt(s,a),readOnly:!0});continue}c.migratedFrom!==void 0&&n.push(`${Ha(l)} uses lockfile version ${c.migratedFrom}; the next write upgrades it.`),i.push({scope:s,root:a,lockPath:l,lock:c.lock,storeBase:rt(s,a),readOnly:r})}}return i}function hP(e,t,r){if(t.length===0)return e.flatMap(s=>ur(s.lock).map(a=>({state:s,key:a})));let n=r.global===!0||r.project===!0,o=[],i=new Set;for(let s of t){let a=[];for(let l of e){let c=Jr(s,wP(l.lock));if(c.kind==="ambiguous")throw new f(`"${y(s)}" matches ${c.matches.length} installed skills at ${l.scope} scope: ${c.matches.map(d=>y(d.name)).join(", ")}.
271
+ Name one of them exactly.`,{isUserError:!0,prefix:`${b} Cannot update skills:`});c.kind==="match"&&a.push({state:l,key:c.skill.name})}if(a.length===0)throw yP(s,e);if(a.length>1&&!n)throw new f(`"${y(s)}" is installed at more than one scope:
272
+ `+a.map(l=>` ${l.state.scope}: ${Ha(l.state.lockPath)}`).join(`
273
+ `)+`
274
+ Re-run with --project or --global.`,{isUserError:!0,missingFlag:"scope",prefix:`${b} Cannot update skills:`});for(let l of a){let c=`${l.state.scope}\0${l.key}`;i.has(c)||(i.add(c),o.push(l))}}return o}function yP(e,t){let r=t.flatMap(n=>ur(n.lock).map(o=>n.lock.skills[o]?.dir??o));return new f(`"${y(e)}" is not installed.
275
+ `+(r.length===0?" No skills are recorded in any lockfile.":` Installed: ${[...new Set(r)].sort().map(n=>y(n)).join(", ")}`),{isUserError:!0,prefix:`${b} Cannot update skills:`})}function wP(e){return ur(e).map(t=>{let r=e.skills[t];return{name:t,dir:r.dir,folderName:r.skillPath?Cn(r.skillPath):r.dir}})}function nh(e,t,r){return e.ref??t.skills[r]?.ref??t.source.ref??je}async function DP(e,t){let r=await Ni({commit:e}),n=await Mi(r.root),o=await Wi(n.skillsDir,r.root);return t.push(...n.warnings,...o.warnings),{commit:e,root:r.root,pluginVersion:n.version,skills:o.skills}}async function kP(e,t){let r=dr.default.join(e.storeBase,t.dir),n=await Yt(r);if(n===null)return null;if(t.mode!=="copy")return n;let o=ah(t);if(o===null)return n;for(let i of LP(t)){let s=Ot(i,e.scope,e.root);if(s===null)continue;let a=await Yt(dr.default.join(s,t.dir));if(a!==null&&!Pt(a,o))return a}return n}async function bP(e){let{state:t,key:r,entry:n,ref:o,commit:i,catalog:s,force:a,warnings:l}=e,c=ah(n),d=dr.default.join(t.storeBase,n.dir),p=EP(n,s,l,r),h=s.skills.find(Ie=>Ie.name===r)??null,g=p!==null?"exists":h!==null?"moved":"missing",m=g==="exists"?p:g==="moved"?h.path:null,w=m===null?null:await Yt(m),k=e.localDigest===null?"absent":c===null||Pt(e.localDigest,c)?"same":"differs",F=Pt(w,c)?"same":"differs",A=mC({hasSkillPath:typeof n.skillPath=="string"&&n.skillPath!=="",foundByName:h!==null,presence:g,upstream:F,local:k,force:a}),E=g==="moved"&&h!==null?h.dir:n.dir,v=g==="exists"?n.skillPath:g==="moved"?h.skillPath:n.skillPath??null,{agents:M,dropped:B}=vP(t,n,l),U=m===null||v===null?null:{name:r,dir:E,folderName:Cn(v),description:h?.description??"",...h?.category!==void 0?{category:h.category}:{},internal:h?.internal??!1,path:m,skillPath:v,supplementaryFiles:h?.supplementaryFiles??[]};return{scopeState:t,key:r,entry:n,dir:n.dir,newDir:E,storeDir:d,mode:n.mode,agents:M,droppedAgents:B,presence:g,upstreamDrift:F,localDrift:k,outcome:A,recorded:c,onDisk:e.localDigest,upstream:w,discovered:U,ref:o,commit:i,pluginVersion:s.pluginVersion,detail:IP(A,{key:r,storeDir:d,recordedSkillPath:n.skillPath??null,newSkillPath:v,checkOnly:e.checkOnly})}}function EP(e,t,r,n){let o=e.skillPath;if(typeof o!="string"||o==="")return null;let i=Iu(o);if(i!==null)return r.push(`The recorded path for "${y(n)}" ${i}; locating it by name instead.`),null;let s=dr.default.resolve(t.root,...o.split("/"));return Re(t.root,s,"the recorded skill path"),Xi.default.existsSync(s)?dr.default.dirname(s):null}function vP(e,t,r){let n=[],o=[];for(let i of t.agents??[]){if(i===qt){n.push(i);continue}let s=xr(i);if(s===void 0){n.push(i);continue}if(Ot(s,e.scope,e.root)===null){o.push(i),r.push(`${y(s.displayName)} does not support ${e.scope} scope; dropping it from the recorded placement.`);continue}n.push(i)}return{agents:n,dropped:o}}async function SP(e){let{candidate:t,checkOnly:r,force:n,options:o,writers:i,failures:s}=e,{outcome:a}=t;if(t.discovered===null)return Wa(t,r,[]);let l=await xP(t,n),c=new Set(t.droppedAgents);for(let m of l.targets)if(m.skipReason==="agent-dir-absent")for(let w of m.agents)c.add(w);e.warnings.push(...l.warnings);let d=t.agents.filter(m=>!c.has(m));if(d.length===0&&d.push(qt),r)return Wa(t,!0,l.targets.map(m=>sh(m)),[...c]);let p,h=t.onDisk;if(a.willWrite){let m=await Pa(l.plan,l.skill);if(p=m.targets.map((w,k)=>hC(w,l.targets[k])),h=m.hashes,!m.success||m.storeAction==="failed"){let w=m.error??"the skill could not be written to the store";s.push({name:t.key,errno:void 0,message:w});for(let k of m.targets)!k.success&&k.error&&s.push({name:t.key,agent:k.agent,...k.errno!==void 0?{errno:k.errno}:{},message:k.error});return{...Wa(t,!1,p,[...c]),state:"failed",action:"failed",detail:w}}t.newDir!==t.dir&&await _P(t,l.targets)}else{p=[];for(let m of l.targets)p.push(await CP(t,m))}let g=d.length!==(t.entry.agents??[]).length||d.some((m,w)=>(t.entry.agents??[])[w]!==m);return FP(t,a,g,o)&&!t.scopeState.readOnly&&await gC(t.scopeState,i).record(t.key,AP(t,h,a,o,d)),Wa(t,!1,p,[...c])}async function xP(e,t){let r={repo:e.scopeState.lock.source.repo,ref:e.ref,commit:e.commit,pluginVersion:e.pluginVersion},n=[];for(let s of e.agents){if(s===qt)continue;let a=xr(s);a!==void 0&&n.push({agent:a,explicit:!1})}let o=await $a({scope:e.scopeState.scope,root:e.scopeState.root,mode:e.mode,force:t,source:r,skills:[e.discovered],targets:n,recorded:e.scopeState.lock.skills,platform:process.platform,display:Ha}),i=o.skills[0];return{plan:o,skill:i,targets:i.targets,warnings:o.warnings}}async function CP(e,t){if(t.skipped||t.link==="canonical")return sh(t);if(t.overwrite!=="fresh")return{...sh(t),action:"unchanged"};let r=await Tu({storeDir:e.storeDir,linkPath:t.path,slug:e.dir,root:e.scopeState.root,mode:e.mode,agent:t.agent,label:t.label});return{...hC(r,t),action:r.success?"relinked":"failed"}}async function _P(e,t){let r=e.dir,n=e.scopeState.root,o=[e.scopeState.storeBase,...t.filter(i=>!i.skipped&&i.skipReason===void 0).map(i=>dr.default.dirname(i.path))];for(let i of new Set(o)){let s=dr.default.join(i,r);if(dr.default.basename(s)===r&&s!==dr.default.join(i,e.newDir))try{let a=await Xi.default.promises.realpath(i);if(!et(n,a))continue;await Ri(n,dr.default.join(a,r),"a renamed skill directory"),(await Xi.default.promises.lstat(s)).isSymbolicLink()?await Xi.default.promises.rm(s,{force:!0}):await Xi.default.promises.rm(s,{recursive:!0,force:!0})}catch{}}}function FP(e,t,r,n){return t.willWrite||t.guard==="G2"&&t.action==="repaired"||n.ref!==void 0&&n.ref!==e.entry.ref?!0:r}function AP(e,t,r,n,o){let i=r.willWrite,s={...e.entry,commit:i?e.commit:e.entry.commit,dir:i?e.newDir:e.entry.dir,agents:[...o],mode:e.mode,...e.discovered!==null?{skillPath:e.discovered.skillPath}:{},...n.ref!==void 0?{ref:n.ref}:{}};return i&&t!==null&&(s.contentHash=t.contentHash,s.modeHash=t.modeHash),e.scopeState.scope==="global"?Ma(s,{existing:e.entry,now:new Date().toISOString()}):s}function gC(e,t){let r=t.get(e.scope);if(r)return r;let n=$o({path:e.lockPath,kind:e.scope,lock:e.lock});return t.set(e.scope,n),n}async function TP(e,t,r){if(t.yes)return!0;if(W()||r)throw new f(`--force would discard local changes to ${e.length} skill${e.length===1?"":"s"}:
276
+ `+e.map(n=>` ${y(n.key)}`).join(`
277
+ `)+`
278
+ Pass --yes to confirm in non-interactive mode, or --check to preview.`,{isUserError:!0,missingFlag:"--yes",prefix:`${b} Cannot update skills:`});u.warn(`--force will discard local changes to ${e.length} skill${e.length===1?"":"s"}:`);for(let n of e)u.warn(` ${y(n.key)}`);return Pe({message:"Discard local changes and replace with upstream?",default:!1})}function Wa(e,t,r,n=e.droppedAgents){return{name:e.key,dir:e.newDir,scope:e.scopeState.scope,guard:e.outcome.guard,state:e.outcome.state,action:yC(e.outcome.action,t),recordedHash:e.recorded?.contentHash??null,upstreamHash:e.upstream?.contentHash??null,onDiskHash:e.onDisk?.contentHash??null,agents:e.agents.filter(o=>!n.includes(o)),droppedAgents:n,reason:e.outcome.reason,detail:e.detail,fromCommit:e.entry.commit,toCommit:e.outcome.willWrite?e.commit:null,skillPath:e.discovered?.skillPath??e.entry.skillPath??null,targets:r}}function RP(e,t){return{...Wa(e,!1,[]),state:"failed",action:"failed",detail:t}}function sh(e){return{agent:e.agent,agents:e.agents,label:e.label,path:e.path,link:e.link,action:e.skipped?e.skipReason==="agent-dir-absent"?"unlinked":"skipped":e.overwrite==="fresh"?"relinked":"unchanged",skipped:e.skipped===!0,skipReason:e.skipReason??null,symlinkFailed:!1,errno:null,error:e.detail??null}}function hC(e,t){return{agent:e.agent,agents:t?.agents??[e.agent],label:e.label,path:e.path,link:e.link,action:e.skipped?e.skipReason==="agent-dir-absent"?"unlinked":"skipped":e.success?"linked":"failed",skipped:e.skipped===!0,skipReason:e.skipReason??null,symlinkFailed:e.symlinkFailed===!0,errno:e.errno??null,error:e.error??null}}function yC(e,t){if(!t)return e;switch(e){case"updated":return"would-update";case"moved":return"would-move";case"moved+updated":return"would-move-and-update";case"reinstalled":return"would-reinstall";case"repaired":return"would-repair";default:return e}}function IP(e,t){let r=y(t.key),{checkOnly:n}=t;switch(e.reason){case"tracking-unrepairable":return"update tracking is missing and no upstream skill declares this name; nothing was changed.";case"not-on-disk-and-removed-upstream":return`not on disk and no longer published upstream. Clear the entry with \`webflow skills remove ${r}\`.`;case"store-directory-missing":return n?"the store directory is missing and would be restored.":"the store directory was missing and has been restored.";case"removed-upstream":return`no longer published upstream. Your copy is untouched \u2014 remove it with \`webflow skills remove ${r}\`.`;case"removed-upstream-and-locally-modified":return`no longer published upstream (locally modified). Your copy is untouched \u2014 remove it with \`webflow skills remove ${r}\`.`;case"locally-modified":return e.willWrite?dC(n):"your edits are preserved. Re-run with --force to discard them.";case"locally-modified-and-upstream-changed":return e.willWrite?dC(n):`updating would discard your edits. Review ${Ha(t.storeDir)}, then run \`webflow skills update ${r} --force\`.`;case"renamed-upstream":return t.recordedSkillPath&&t.newSkillPath?`${y(t.recordedSkillPath)} \u2192 ${y(t.newSkillPath)}`:"moved upstream.";case"moved-upstream-and-locally-modified":return e.willWrite?n?"moved upstream; local changes would be discarded.":"moved upstream; local changes were discarded.":"moved upstream AND locally modified. Re-run with --force.";case"moved-upstream-changed-upstream-and-locally-modified":return e.willWrite?n?"moved and changed upstream; local changes would be discarded.":"moved and changed upstream; local changes were discarded.":"moved upstream, changed upstream, AND locally modified. Re-run with --force.";default:return null}}function dC(e){return e?"local changes would be discarded and replaced with upstream.":"local changes were discarded and replaced with upstream."}function OP(e){let{reports:t,candidates:r,failures:n,states:o,refs:i,options:s}=e,a=o[0],l=s.ref??a?.lock.source.ref??je;return{kind:"skills.update",schemaVersion:Fn,checkOnly:e.checkOnly,force:e.force,scopes:o.map(c=>c.scope),source:{repo:a?.lock.source.repo??"",ref:l,recordedCommit:a?.lock.source.commit??null,resolvedCommit:i.get(l)??null,recordedPluginVersion:a?.lock.source.pluginVersion??null,resolvedPluginVersion:DC(e.catalogs)??null,upToDate:!1},skills:t,blocked:r.filter(c=>c.outcome.blocked).map(c=>({name:c.key,dir:c.dir,scope:c.scopeState.scope,state:c.outcome.state,reason:c.outcome.reason,requiredFlag:"--force"})),failures:n,summary:wC(t,n,e.checkOnly),warnings:[...new Set(e.warnings)]}}function wC(e,t,r){let n=(...i)=>e.filter(s=>i.includes(s.state)).length,o=new Set(["updated","moved","moved+updated","reinstalled","repaired"]);return{checked:e.length,outdated:n("upstream-changed","renamed-upstream","missing","untracked"),unchanged:n("unchanged"),locallyModified:n("locally-modified"),conflicts:n("conflict"),removedUpstream:n("removed-upstream","stale-entry"),updated:r?0:e.filter(i=>o.has(i.action)).length,relinked:e.reduce((i,s)=>i+s.targets.filter(a=>a.action==="relinked").length,0),unlinked:e.reduce((i,s)=>i+s.droppedAgents.length,0),blocked:e.filter(i=>i.action==="blocked").length,failed:t.length}}function PP(e){let{selected:t,states:r,localDigests:n,refs:o,options:i}=e,s=r[0],a=i.ref??s?.lock.source.ref??je,l=t.map(({state:c,key:d})=>{let p=c.lock.skills[d],h=ah(p),g=n.get(`${c.scope}\0${d}`)??null,m=h!==null&&!Pt(g,h);return{name:d,dir:p.dir,scope:c.scope,guard:"grid",state:m?"locally-modified":"unchanged",action:m?"skipped":"unchanged",recordedHash:h?.contentHash??null,upstreamHash:h?.contentHash??null,onDiskHash:g?.contentHash??null,agents:p.agents??[],droppedAgents:[],reason:m?"locally-modified":null,detail:m?"your edits are preserved. Re-run with --force to discard them.":null,fromCommit:p.commit,toCommit:null,skillPath:p.skillPath??null,targets:[]}});return{kind:"skills.update",schemaVersion:Fn,checkOnly:e.checkOnly,force:e.force,scopes:r.map(c=>c.scope),source:{repo:s?.lock.source.repo??"",ref:a,recordedCommit:s?.lock.source.commit??null,resolvedCommit:o.get(a)??null,recordedPluginVersion:s?.lock.source.pluginVersion??null,resolvedPluginVersion:s?.lock.source.pluginVersion??null,upToDate:!0},skills:l,blocked:[],failures:[],summary:wC(l,[],e.checkOnly),warnings:[...new Set(e.warnings)]}}function oh(e){return{kind:"skills.update",schemaVersion:Fn,checkOnly:e.checkOnly,force:e.force,...e.cancelled===!0?{cancelled:!0}:{},scopes:e.scopes??[],source:{repo:"",ref:je,recordedCommit:null,resolvedCommit:null,recordedPluginVersion:null,resolvedPluginVersion:null,upToDate:!0},skills:[],blocked:[],failures:[],summary:{checked:0,outdated:0,unchanged:0,locallyModified:0,conflicts:0,removedUpstream:0,updated:0,relinked:0,unlinked:0,blocked:0,failed:0},warnings:[...new Set(e.warnings)]}}function $P(e,t){if(t){u.info(JSON.stringify(e,null,2));return}for(let r of e.warnings)u.warn(`${he} ${y(r)}`);u.info(px(e))}function ah(e){return typeof e.contentHash!="string"||e.contentHash===""?null:{contentHash:e.contentHash,modeHash:typeof e.modeHash=="string"?e.modeHash:""}}function LP(e){let t=[];for(let r of e.agents??[]){let n=xr(r);n!==void 0&&t.push(n)}return t}function DC(e){for(let t of e.values())if(t.pluginVersion!=="")return t.pluginVersion}function pC(e){let t=e?.code;return typeof t=="string"?t:void 0}function ih(e){return y(e instanceof Error?e.message:String(e))}function NP(){let e=xt();return e?_.forSkills({authToken:e}):null}function Ha(e){return _o(e)}var kC=e=>{let t=e.command("skills").description("Install and manage Webflow's first-party agent skills");t.command("install").description(`Install Webflow skills into your coding agents. Writes into your home directory for --global installs; use --dry-run to preview every path first.
279
+ With no names, restores from webflow-skills-lock.json when one exists.`).argument("[names...]","Skill names to install (default: choose interactively)").addOption(uc()).option("--all-agents","Install for every supported agent").option("--all-skills","Install every skill in the catalog").addOption(Ws()).addOption(Hs()).option("--copy","Copy files instead of symlinking from the shared store").option("--ref <branch|sha>","Pin to a branch or 40-character commit SHA (default: main)").option("--force","Replace destinations that were modified locally or installed elsewhere").addOption(oi()).addOption(Te()).addOption(Y()).action(Mu),t.command("update").description("Update installed skills to the latest upstream commit. Overwrites files in your agent directories; use --check to report what would change, or --dry-run to preview.").argument("[names...]","Skill names to update (default: all installed)").option("--check","Report what would change without writing anything").addOption(Ws()).addOption(Hs()).option("--ref <branch|sha>","Re-pin to a different branch or commit SHA").option("--force","Overwrite skills that were modified locally").addOption(oi()).addOption(Te()).addOption(Y()).action(Ku),t.command("list").description("List installed skills and the agents they are linked into").addOption(Ws()).addOption(Hs()).addOption(uc()).addOption(Le([...Fo]).default(Ia)).addOption(si([...Gi]).default("name")).addOption(ii()).addOption(Y()).action(Uu),t.command("remove").description("Remove installed skills. Deletes skill directories and unlinks them from every agent; use --dry-run to preview exactly what is deleted.").argument("[names...]","Skill names to remove (default: choose interactively)").addOption(uc()).option("--all","Remove every installed skill for the scope").addOption(Ws()).addOption(Hs()).option("--force","Also remove skill directories that have no lockfile entry (not installed by this CLI)").addOption(oi()).addOption(Te()).addOption(Y()).action(Gu)};var EC=D(sl());function lh(e,t){t.forEach(r=>{e.addOption(r())}),e.commands.forEach(r=>lh(r,t))}function vC(e){let t=EC.default.version;e.name("webflow").description("Webflow CLI").version(t,"-v, --version").configureHelp({formatHelp(r,n){return bC.Help.prototype.formatHelp.call(this,r,n).split(`
280
+ `).flatMap(o=>o.startsWith("Usage:")?["",te(o)]:/^(Options:|Commands:|Arguments:)/.test(o)?[te(o)]:/^Webflow CLI$/.test(o)?[ph(o)]:o.trim()===""?[o]:[R(o)]).map(o=>o.trim()===""?o:` ${o}`).join(`
208
281
  `)+`
209
- `}}).addOption(xc()).addOption(_c()).addOption(Cc()).addOption(kc()).showHelpAfterError(),e.hook("preAction",async(r,n)=>{let o=r.opts();o.input||Dp(!0),n.opts().json&&bp(!0),Nt.start(),o.manifest&&Ep(o.manifest);try{await b.promptForConsentIfNeeded()}catch(i){l.debug(`Failed to check telemetry preference: ${i}`)}try{o.skipUpdateCheck||await new yo().prompt()}catch(i){l.debug(`Failed to check for package updates: ${i}`)}}),e.hook("postAction",async()=>{Nt.displayGrouped(),Nt.stop()}),mf(e),qw(e),Hf(e),Bg(e),pw(e),st()&&Lw(e),Lg(e),oy(e),fy(e),Ey(e),Ig(e),e.commands.forEach(r=>{ud(r,[xc,_c,Cc,kc])})}v();x();var ky=new Cy.Command;_y(ky);ky.parseAsync().catch(e=>{if(e instanceof d){if(!e.skipLogging)if(e.isUserError){let t=e.prefix?`${e.prefix} `:"";console.error(`${t}${e.message}`)}else l.error(e,{prefix:e.prefix})}else l.error(e);process.exit(1)});
282
+ `}}).addOption(nf()).addOption(Gk()).addOption(of()).addOption(sf()).addOption(af()).showHelpAfterError(),e.hook("preAction",async(r,n)=>{let o=r.opts();o.input?r.getOptionValueSource("input")==="cli"&&wy(!0):yy(!0),n.opts().json&&ky(!0),Rr.start(),o.manifest&&by(o.manifest);try{await _.promptForConsentIfNeeded()}catch(i){u.debug(`Failed to check telemetry preference: ${i}`)}try{!o.skipUpdateCheck&&!ze()&&await new ys().prompt()}catch(i){u.debug(`Failed to check for package updates: ${i}`)}}),e.hook("postAction",async()=>{Rr.displayGrouped(),Rr.stop()}),hw(e),ov(e),Kw(e),tb(e),FE(e),ct()&&zE(e),eb(e),fv(e),Ev(e),Rv(e),kC(e),Ok(e),e.commands.forEach(r=>{lh(r,[nf,of,sf,af])})}x();S();pe();var CC=new xC.Command;vC(CC);function jP(e){let t=e instanceof Error?e.message:String(e),r=e instanceof f?e.missingFlag:void 0,n=e instanceof f?e.prefix:void 0,o=n?pt(n).replace(/^[^\p{L}\p{N}]+/u,"").replace(/:\s*$/,""):void 0;Uy(e,{prefix:n});let i=JSON.stringify({error:{message:t,context:o,missingFlag:r}});SC.default.writeSync(1,`${i}
283
+ `)}CC.parseAsync().catch(e=>{if(!(e instanceof f&&e.skipLogging))if(ze())jP(e);else if(e instanceof f)if(e.isUserError){let t=e.prefix?`${e.prefix} `:"";console.error(`${t}${e.message}`)}else u.error(e,{prefix:e.prefix});else u.error(e);process.exit(1)});
210
284
  //# sourceMappingURL=index.js.map