@webflow/webflow-cli 1.22.0-next.3 → 1.22.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/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @webflow/webflow-cli
2
2
 
3
+ ## 1.22.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 75edc28: - `cloud deploy` no longer auto-routes to a site picker when the project is not initialized for Webflow Cloud. A new preflight phase resolves identity (site or workspace) before any backend call, preventing orphan Cloud apps when later steps fail.
8
+ - New scripting-friendly flags on `cloud deploy`: `-s, --site-id`, `-p, --project-id`, `-f, --framework`.
9
+ - Fix: `framework-detection` no longer overwrites unrelated `webflow.json` fields when auto-detecting a framework, and no longer throws on partial manifests that have a `cloud` block without a `framework` key — it falls back to `package.json` detection.
10
+
11
+ ### Patch Changes
12
+
13
+ - b290822: `cloud deploy` now auto-detects the framework from `package.json` when `webflow.json` is missing or has no `cloud.framework`, instead of hard-failing. Detection uses the same builder registry that runs later in the build, and the resulting framework is written into a minimal `webflow.json` so subsequent deploys are stable. If no framework can be detected, the error now lists the supported options (astro / nextjs / vite). Also widens the cloud manifest schema with `.passthrough()` so CLI-managed fields like `project_id` survive the round-trip.
14
+ - d97b310: - Fix `cloud deploy` writing complete framework metadata (`deployment_type` and `entrypoint_path`) into the bundle's `webflow.json`. Without this, Next.js / Remix deploys silently failed in the dashboard while the CLI reported success, because the deployer fell back to a generic `./index.js` entrypoint.
15
+ - `cloud init` now fetches site-attached scaffolds from GitHub (`Webflow-Examples/hello-world-*`) instead of bundling them in the CLI binary. No behavior change for end users beyond requiring network access during init.
16
+ - 6dbf426: Fix the noisy `[DEP0040]` deprecation warning that appeared before every command's output when running on Node 22+. Other warnings continue to be shown as usual.
17
+ - d56915a: Upgrade webflow-api to 3.3.4 to resolve elliptic audit finding.
18
+ - ab60245: Exclude `dist` and `node_modules` when discovering Code Component declaration files.
19
+ - e9dee8c: Fix `webflow library bundle` when the library `name` in `webflow.json` contains punctuation or other non-alphanumeric characters (except `-` and `_`). The bundler now derives a safe Module Federation identifier the same way component import names are normalized; symbol-only names fall back to `CodeLibrary`.
20
+ - c9a430a: - Port the cosmic-builder `FrameworkBuilder` hierarchy into the CLI (`apps/webflow-cli/src/cloud/builder/`). The CLI's local build now shares the same framework support and behavior as the GitHub-import (cosmic) build path, so both producers ship equivalent tarballs to the cosmic deployer. Aligns with cosmic-builder v1.2.0's `webflow.json` contract (`entrypoint_path`, `deployment_type`). Fixes builds for frameworks whose dry-run entry isn't `./index.js` (Next.js → `./worker.js`, Astro 6 → `./entry.mjs`, Vite → `./src/worker.ts`) — includes the Next.js deploy fix for CLD-1619.
21
+ - `handleWranglerJson` is now the single owner of `wrangler.json` during the build; framework `prepareConfig()` implementations no longer redundantly copy the template after user bindings have been merged, so KV / R2 / D1 bindings now reliably appear in the local dry-run output.
22
+ - `webflow.json` is now copied into the deploy tarball, so the cosmic deployer can identify the framework for Astro / Vite tarballs (previously bailed with "could not find webflow.json in extracted output").
23
+ - Internal: introduces `logStageBanner(emoji, label)` for consistent build-stage output. Removes the experimental Remix framework builder (was never wired up to scaffolds in production).
24
+ - 5853814: docs: add Forms commands section to README for v1.21.0
25
+
3
26
  ## 1.21.0
4
27
 
5
28
  ### Minor Changes
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@
7
7
  ${t}`,cv=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),uv=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),dv=(e,t,n)=>{let r=n===""?"":`with ${n.trim()}() `,o=lv.bind(null,r,t.toString());Object.defineProperty(o,"name",uv);let{writable:i,enumerable:s,configurable:a}=cv;Object.defineProperty(e,"toString",{value:o,writable:i,enumerable:s,configurable:a})}});var pi,hd,yd,wd=O(()=>{"use strict";gd();pi=new WeakMap,hd=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let n,r=0,o=e.displayName||e.name||"<anonymous>",i=function(...s){if(pi.set(i,++r),r===1)n=e.apply(this,s),e=void 0;else if(t.throw===!0)throw new Error(`Function \`${o}\` can only be called once`);return n};return ha(i,e),pi.set(i,r),i};hd.callCount=e=>{if(!pi.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return pi.get(e)};yd=hd});var Dn,bd=O(()=>{"use strict";Dn=[];Dn.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&Dn.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Dn.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT")});var fi,ya,wa,pv,ba,mi,fv,Da,va,ka,Dd,UA,zA,vd=O(()=>{"use strict";bd();fi=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",ya=Symbol.for("signal-exit emitter"),wa=globalThis,pv=Object.defineProperty.bind(Object),ba=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(wa[ya])return wa[ya];pv(wa,ya,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(t,n){this.listeners[t].push(n)}removeListener(t,n){let r=this.listeners[t],o=r.indexOf(n);o!==-1&&(o===0&&r.length===1?r.length=0:r.splice(o,1))}emit(t,n,r){if(this.emitted[t])return!1;this.emitted[t]=!0;let o=!1;for(let i of this.listeners[t])o=i(n,r)===!0||o;return t==="exit"&&(o=this.emit("afterExit",n,r)||o),o}},mi=class{},fv=e=>({onExit(t,n){return e.onExit(t,n)},load(){return e.load()},unload(){return e.unload()}}),Da=class extends mi{onExit(){return()=>{}}load(){}unload(){}},va=class extends mi{#s=ka.platform==="win32"?"SIGINT":"SIGHUP";#n=new ba;#e;#o;#p;#t={};#i=!1;constructor(t){super(),this.#e=t,this.#t={};for(let n of Dn)this.#t[n]=()=>{let r=this.#e.listeners(n),{count:o}=this.#n,i=t;if(typeof i.__signal_exit_emitter__=="object"&&typeof i.__signal_exit_emitter__.count=="number"&&(o+=i.__signal_exit_emitter__.count),r.length===o){this.unload();let s=this.#n.emit("exit",null,n),a=n==="SIGHUP"?this.#s:n;s||t.kill(t.pid,a)}};this.#p=t.reallyExit,this.#o=t.emit}onExit(t,n){if(!fi(this.#e))return()=>{};this.#i===!1&&this.load();let r=n?.alwaysLast?"afterExit":"exit";return this.#n.on(r,t),()=>{this.#n.removeListener(r,t),this.#n.listeners.exit.length===0&&this.#n.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#i){this.#i=!0,this.#n.count+=1;for(let t of Dn)try{let n=this.#t[t];n&&this.#e.on(t,n)}catch{}this.#e.emit=(t,...n)=>this.#f(t,...n),this.#e.reallyExit=t=>this.#r(t)}}unload(){this.#i&&(this.#i=!1,Dn.forEach(t=>{let n=this.#t[t];if(!n)throw new Error("Listener not defined for signal: "+t);try{this.#e.removeListener(t,n)}catch{}}),this.#e.emit=this.#o,this.#e.reallyExit=this.#p,this.#n.count-=1)}#r(t){return fi(this.#e)?(this.#e.exitCode=t||0,this.#n.emit("exit",this.#e.exitCode,null),this.#p.call(this.#e,this.#e.exitCode)):0}#f(t,...n){let r=this.#o;if(t==="exit"&&fi(this.#e)){typeof n[0]=="number"&&(this.#e.exitCode=n[0]);let o=r.call(this.#e,t,...n);return this.#n.emit("exit",this.#e.exitCode,null),o}else return r.call(this.#e,t,...n)}},ka=globalThis.process,{onExit:Dd,load:UA,unload:zA}=fv(fi(ka)?new va(ka):new Da)});var so,kd,mv,xd,Cd=O(()=>{"use strict";so=w(require("process"),1);wd();vd();kd=so.default.stderr.isTTY?so.default.stderr:so.default.stdout.isTTY?so.default.stdout:void 0,mv=kd?yd(()=>{Dd(()=>{kd.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},xd=mv});var xa,gi,lr,Ca,Ed=O(()=>{"use strict";xa=w(require("process"),1);Cd();gi=!1,lr={};lr.show=(e=xa.default.stderr)=>{e.isTTY&&(gi=!1,e.write("\x1B[?25h"))};lr.hide=(e=xa.default.stderr)=>{e.isTTY&&(xd(),gi=!0,e.write("\x1B[?25l"))};lr.toggle=(e,t)=>{e!==void 0&&(gi=e),gi?lr.show(t):lr.hide(t)};Ca=lr});var Fd=da((KA,gv)=>{gv.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 Ea=da((YA,_d)=>{"use strict";var hi=Object.assign({},Fd()),Sd=Object.keys(hi);Object.defineProperty(hi,"random",{get(){let e=Math.floor(Math.random()*Sd.length),t=Sd[e];return hi[t]}});_d.exports=hi});function Fa(){return qe.default.platform!=="win32"?qe.default.env.TERM!=="linux":!!qe.default.env.CI||!!qe.default.env.WT_SESSION||!!qe.default.env.TERMINUS_SUBLIME||qe.default.env.ConEmuTask==="{cmd::Cmder}"||qe.default.env.TERM_PROGRAM==="Terminus-Sublime"||qe.default.env.TERM_PROGRAM==="vscode"||qe.default.env.TERM==="xterm-256color"||qe.default.env.TERM==="alacritty"||qe.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var qe,Ad=O(()=>{"use strict";qe=w(require("process"),1)});var hv,yv,wv,ao,Td=O(()=>{"use strict";_e();Ad();hv={info:E.blue("\u2139"),success:E.green("\u2714"),warning:E.yellow("\u26A0"),error:E.red("\u2716")},yv={info:E.blue("i"),success:E.green("\u221A"),warning:E.yellow("\u203C"),error:E.red("\xD7")},wv=Fa()?hv:yv,ao=wv});function Sa({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 Od=O(()=>{"use strict"});function lo(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return!e.includes("\x1B")&&!e.includes("\x9B")?e:e.replace(bv,"")}var bv,_a=O(()=>{"use strict";Od();bv=Sa()});function Pd(e){return e===161||e===164||e===167||e===168||e===170||e===173||e===174||e>=176&&e<=180||e>=182&&e<=186||e>=188&&e<=191||e===198||e===208||e===215||e===216||e>=222&&e<=225||e===230||e>=232&&e<=234||e===236||e===237||e===240||e===242||e===243||e>=247&&e<=250||e===252||e===254||e===257||e===273||e===275||e===283||e===294||e===295||e===299||e>=305&&e<=307||e===312||e>=319&&e<=322||e===324||e>=328&&e<=331||e===333||e===338||e===339||e===358||e===359||e===363||e===462||e===464||e===466||e===468||e===470||e===472||e===474||e===476||e===593||e===609||e===708||e===711||e>=713&&e<=715||e===717||e===720||e>=728&&e<=731||e===733||e===735||e>=768&&e<=879||e>=913&&e<=929||e>=931&&e<=937||e>=945&&e<=961||e>=963&&e<=969||e===1025||e>=1040&&e<=1103||e===1105||e===8208||e>=8211&&e<=8214||e===8216||e===8217||e===8220||e===8221||e>=8224&&e<=8226||e>=8228&&e<=8231||e===8240||e===8242||e===8243||e===8245||e===8251||e===8254||e===8308||e===8319||e>=8321&&e<=8324||e===8364||e===8451||e===8453||e===8457||e===8467||e===8470||e===8481||e===8482||e===8486||e===8491||e===8531||e===8532||e>=8539&&e<=8542||e>=8544&&e<=8555||e>=8560&&e<=8569||e===8585||e>=8592&&e<=8601||e===8632||e===8633||e===8658||e===8660||e===8679||e===8704||e===8706||e===8707||e===8711||e===8712||e===8715||e===8719||e===8721||e===8725||e===8730||e>=8733&&e<=8736||e===8739||e===8741||e>=8743&&e<=8748||e===8750||e>=8756&&e<=8759||e===8764||e===8765||e===8776||e===8780||e===8786||e===8800||e===8801||e>=8804&&e<=8807||e===8810||e===8811||e===8814||e===8815||e===8834||e===8835||e===8838||e===8839||e===8853||e===8857||e===8869||e===8895||e===8978||e>=9312&&e<=9449||e>=9451&&e<=9547||e>=9552&&e<=9587||e>=9600&&e<=9615||e>=9618&&e<=9621||e===9632||e===9633||e>=9635&&e<=9641||e===9650||e===9651||e===9654||e===9655||e===9660||e===9661||e===9664||e===9665||e>=9670&&e<=9672||e===9675||e>=9678&&e<=9681||e>=9698&&e<=9701||e===9711||e===9733||e===9734||e===9737||e===9742||e===9743||e===9756||e===9758||e===9792||e===9794||e===9824||e===9825||e>=9827&&e<=9829||e>=9831&&e<=9834||e===9836||e===9837||e===9839||e===9886||e===9887||e===9919||e>=9926&&e<=9933||e>=9935&&e<=9939||e>=9941&&e<=9953||e===9955||e===9960||e===9961||e>=9963&&e<=9969||e===9972||e>=9974&&e<=9977||e===9979||e===9980||e===9982||e===9983||e===10045||e>=10102&&e<=10111||e>=11094&&e<=11097||e>=12872&&e<=12879||e>=57344&&e<=63743||e>=65024&&e<=65039||e===65533||e>=127232&&e<=127242||e>=127248&&e<=127277||e>=127280&&e<=127337||e>=127344&&e<=127373||e===127375||e===127376||e>=127387&&e<=127404||e>=917760&&e<=917999||e>=983040&&e<=1048573||e>=1048576&&e<=1114109}function Id(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function jd(e){return e>=4352&&e<=4447||e===8986||e===8987||e===9001||e===9002||e>=9193&&e<=9196||e===9200||e===9203||e===9725||e===9726||e===9748||e===9749||e>=9776&&e<=9783||e>=9800&&e<=9811||e===9855||e>=9866&&e<=9871||e===9875||e===9889||e===9898||e===9899||e===9917||e===9918||e===9924||e===9925||e===9934||e===9940||e===9962||e===9970||e===9971||e===9973||e===9978||e===9981||e===9989||e===9994||e===9995||e===10024||e===10060||e===10062||e>=10067&&e<=10069||e===10071||e>=10133&&e<=10135||e===10160||e===10175||e===11035||e===11036||e===11088||e===11093||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12773||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=94176&&e<=94180||e===94192||e===94193||e>=94208&&e<=100343||e>=100352&&e<=101589||e>=101631&&e<=101640||e>=110576&&e<=110579||e>=110581&&e<=110587||e===110589||e===110590||e>=110592&&e<=110882||e===110898||e>=110928&&e<=110930||e===110933||e>=110948&&e<=110951||e>=110960&&e<=111355||e>=119552&&e<=119638||e>=119648&&e<=119670||e===126980||e===127183||e===127374||e>=127377&&e<=127386||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e===127568||e===127569||e>=127584&&e<=127589||e>=127744&&e<=127776||e>=127789&&e<=127797||e>=127799&&e<=127868||e>=127870&&e<=127891||e>=127904&&e<=127946||e>=127951&&e<=127955||e>=127968&&e<=127984||e===127988||e>=127992&&e<=128062||e===128064||e>=128066&&e<=128252||e>=128255&&e<=128317||e>=128331&&e<=128334||e>=128336&&e<=128359||e===128378||e===128405||e===128406||e===128420||e>=128507&&e<=128591||e>=128640&&e<=128709||e===128716||e>=128720&&e<=128722||e>=128725&&e<=128727||e>=128732&&e<=128735||e===128747||e===128748||e>=128756&&e<=128764||e>=128992&&e<=129003||e===129008||e>=129292&&e<=129338||e>=129340&&e<=129349||e>=129351&&e<=129535||e>=129648&&e<=129660||e>=129664&&e<=129673||e>=129679&&e<=129734||e>=129742&&e<=129756||e>=129759&&e<=129769||e>=129776&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}var Rd=O(()=>{"use strict"});function Dv(e){if(!Number.isSafeInteger(e))throw new TypeError(`Expected a code point, got \`${typeof e}\`.`)}function $d(e,{ambiguousAsWide:t=!1}={}){return Dv(e),Id(e)||jd(e)||t&&Pd(e)?2:1}var Bd=O(()=>{"use strict";Rd()});var Nd,Ld=O(()=>{"use strict";Nd=()=>/[#*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\uDC70\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-\uDED7\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\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\uDD3D\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-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\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]|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\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 Aa(e,t={}){if(typeof e!="string"||e.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:r=!1}=t;if(r||(e=lo(e)),e.length===0)return 0;let o=0,i={ambiguousAsWide:!n};for(let{segment:s}of vv.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)&&!kv.test(s)){if(Nd().test(s)){o+=2;continue}o+=$d(a,i)}}return o}var vv,kv,Md=O(()=>{"use strict";_a();Bd();Ld();vv=new Intl.Segmenter,kv=new RegExp("^\\p{Default_Ignorable_Code_Point}$","u")});function Ta({stream:e=process.stdout}={}){return!!(e&&e.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}var Wd=O(()=>{"use strict"});function Pa(){let{env:e}=Oa.default,{TERM:t,TERM_PROGRAM:n}=e;return Oa.default.platform!=="win32"?t!=="linux":!!e.WT_SESSION||!!e.TERMINUS_SUBLIME||e.ConEmuTask==="{cmd::Cmder}"||n==="Terminus-Sublime"||n==="vscode"||t==="xterm-256color"||t==="alacritty"||t==="rxvt-unicode"||t==="rxvt-unicode-256color"||e.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Oa,Ud=O(()=>{"use strict";Oa=w(require("process"),1)});var st,xv,Ia,Cv,ja,zd=O(()=>{"use strict";st=w(require("process"),1),xv=3,Ia=class{#s=0;start(){this.#s++,this.#s===1&&this.#n()}stop(){if(this.#s<=0)throw new Error("`stop` called more times than `start`");this.#s--,this.#s===0&&this.#e()}#n(){st.default.platform==="win32"||!st.default.stdin.isTTY||(st.default.stdin.setRawMode(!0),st.default.stdin.on("data",this.#o),st.default.stdin.resume())}#e(){st.default.stdin.isTTY&&(st.default.stdin.off("data",this.#o),st.default.stdin.pause(),st.default.stdin.setRawMode(!1))}#o(t){t[0]===xv&&st.default.emit("SIGINT")}},Cv=new Ia,ja=Cv});function cr(e){return new Ra(e)}var co,uo,Ev,Ra,$a=O(()=>{"use strict";co=w(require("process"),1);_e();Ed();uo=w(Ea(),1);Td();_a();Md();Wd();Ud();zd();Ev=w(Ea(),1),Ra=class{#s=0;#n=!1;#e=0;#o=-1;#p=0;#t;#i;#r;#f;#g;#c;#u;#d;#h;#a;#l;color;constructor(t){typeof t=="string"&&(t={text:t}),this.#t={color:"cyan",stream:co.default.stderr,discardStdin:!0,hideCursor:!0,...t},this.color=this.#t.color,this.spinner=this.#t.spinner,this.#g=this.#t.interval,this.#r=this.#t.stream,this.#c=typeof this.#t.isEnabled=="boolean"?this.#t.isEnabled:Ta({stream:this.#r}),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,co.default.env.NODE_ENV==="test"&&(this._stream=this.#r,this._isEnabled=this.#c,Object.defineProperty(this,"_linesToClear",{get(){return this.#s},set(n){this.#s=n}}),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(!Pa())this.#i=uo.default.line;else if(t===void 0)this.#i=uo.default.dots;else if(t!=="default"&&uo.default[t])this.#i=uo.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,n=" "){return typeof t=="string"&&t!==""?t+n:typeof t=="function"?t()+n:""}#w(t=this.#l,n=" "){return typeof t=="string"&&t!==""?n+t:typeof t=="function"?n+t():""}#m(){let t=this.#r.columns??80,n=this.#y(this.#a,"-"),r=this.#w(this.#l,"-"),o=" ".repeat(this.#d)+n+"--"+this.#h+"--"+r;this.#e=0;for(let i of lo(o).split(`
8
8
  `))this.#e+=Math.max(1,Math.ceil(Aa(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:n}=this.#i,r=n[this.#o];this.color&&(r=E[this.color](r));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+r+i+s}clear(){if(!this.#c||!this.#r.isTTY)return this;this.#r.cursorTo(0);for(let t=0;t<this.#s;t++)t>0&&this.#r.moveCursor(0,-1),this.#r.clearLine(1);return(this.#d||this.lastIndent!==this.#d)&&this.#r.cursorTo(this.#d),this.lastIndent=this.#d,this.#s=0,this}render(){return this.#u?this:(this.clear(),this.#r.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&&Ca.hide(this.#r),this.#t.discardStdin&&co.default.stdin.isTTY&&(this.#n=!0,ja.start()),this.render(),this.#f=setInterval(this.render.bind(this),this.interval),this):(this.text&&this.#r.write(`- ${this.text}
9
9
  `),this)}stop(){return this.#c?(clearInterval(this.#f),this.#f=void 0,this.#o=0,this.clear(),this.#t.hideCursor&&Ca.show(this.#r),this.#t.discardStdin&&co.default.stdin.isTTY&&this.#n&&(ja.stop(),this.#n=!1),this):this}succeed(t){return this.stopAndPersist({symbol:ao.success,text:t})}fail(t){return this.stopAndPersist({symbol:ao.error,text:t})}warn(t){return this.stopAndPersist({symbol:ao.warning,text:t})}info(t){return this.stopAndPersist({symbol:ao.info,text:t})}stopAndPersist(t={}){if(this.#u)return this;let n=t.prefixText??this.#a,r=this.#y(n," "),o=t.symbol??" ",i=t.text??this.text,a=typeof i=="string"?(o?" ":"")+i:"",l=t.suffixText??this.#l,c=this.#w(l," "),u=r+o+a+c+`
10
- `;return this.stop(),this.#r.write(u),this}}});function La(e,{suffix:t="nodejs"}={}){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return t&&(e+=`-${t}`),yi.default.platform==="darwin"?Fv(e):yi.default.platform==="win32"?Sv(e):_v(e)}var de,Ba,yi,Vt,Na,ur,Fv,Sv,_v,Vd=O(()=>{"use strict";de=w(require("path"),1),Ba=w(require("os"),1),yi=w(require("process"),1),Vt=Ba.default.homedir(),Na=Ba.default.tmpdir(),{env:ur}=yi.default,Fv=e=>{let t=de.default.join(Vt,"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(Na,e)}},Sv=e=>{let t=ur.APPDATA||de.default.join(Vt,"AppData","Roaming"),n=ur.LOCALAPPDATA||de.default.join(Vt,"AppData","Local");return{data:de.default.join(n,e,"Data"),config:de.default.join(t,e,"Config"),cache:de.default.join(n,e,"Cache"),log:de.default.join(n,e,"Log"),temp:de.default.join(Na,e)}},_v=e=>{let t=de.default.basename(Vt);return{data:de.default.join(ur.XDG_DATA_HOME||de.default.join(Vt,".local","share"),e),config:de.default.join(ur.XDG_CONFIG_HOME||de.default.join(Vt,".config"),e),cache:de.default.join(ur.XDG_CACHE_HOME||de.default.join(Vt,".cache"),e),log:de.default.join(ur.XDG_STATE_HOME||de.default.join(Vt,".local","state"),e),temp:de.default.join(Na,t,e)}}});function wi(){return/[<>:"/\\|?*\u0000-\u001F]/g}function Jd(){return/^(con|prn|aux|nul|com\d|lpt\d)$/i}var qd=O(()=>{"use strict"});function po(e,t={}){let n=/[\u0000-\u001F\u0080-\u009F]/g,r=/([<>:"/\\|?*\u0000-\u001F]){2,}/g;if(typeof e!="string")throw new TypeError("Expected a string");let o=t.replacement===void 0?"!":t.replacement;if(wi().test(o)&&n.test(o))throw new Error("Replacement string cannot contain reserved filename characters");o.length>0&&(e=e.replace(r,"$1")),e=e.normalize("NFD"),e=e.replace(Tv,o),e=e.replace(wi(),o),e=e.replace(n,o),e=e.replace(Ov,""),o.length>0&&(!(e[0]===".")&&e[0]==="."&&(e=o+e),e[e.length-1]==="."&&(e+=o)),e=Jd().test(e)?e+o:e;let i=typeof t.maxLength=="number"?t.maxLength:Av;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 Av,Tv,Ov,Ma=O(()=>{"use strict";qd();Av=100,Tv=/^\.+(\\|\/)|^\.+$/,Ov=/\.+$/});var Pv,Gd=O(()=>{"use strict";Pv=w(require("path"),1);Ma()});var Hd=O(()=>{"use strict";Ma();Gd()});var bi,Wa=O(()=>{"use strict";bi="webflow.json"});var vn,Ua=O(()=>{"use strict";vn=class extends Error{constructor(t){super(`Manifest config for key "${t}" not found`),this.name="ManifestConfigKeyNotFoundError"}}});function Kd(e){za=e}function oe(){return za}function mt(){return!za}function Yd(e){Zd=e}function Xd(){return Zd}var za,Zd,Oe=O(()=>{"use strict";za=!1});function kn(){let e=Xd();if(e){if(e.endsWith(".json"))return{path:e,isUserDefined:!0};try{if((0,Qd.statSync)(e)?.isDirectory())return{path:(0,ep.join)(e,bi),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:`./${bi}`,isUserDefined:!1}}var Qd,ep,Va=O(()=>{"use strict";Qd=require("fs"),ep=require("path");Wa();Oe()});var tp,Iv,jv,Ja,np=O(()=>{"use strict";tp=w(require("ajv")),Iv=new tp.default,jv={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"}},required:[]}}},Ja=Iv.compile(jv)});function rp(e){return e instanceof Error?e:new Error("Unknown error")}function Q(){let{path:e}=kn();if(!(0,Di.existsSync)(e))return{manifest:{},manifestPath:e};let t;try{t=(0,Di.readFileSync)(e,"utf8")}catch(o){throw new Error(`Failed to read manifest file: ${rp(o).message}`)}if(t.trim()==="")return{manifest:{},manifestPath:e};let r;try{r=JSON.parse(t)}catch(o){throw new Error(`Invalid JSON in manifest file: ${rp(o).message}`)}if(!Ja(r)){let o=Ja.errors?.map(i=>`${i.instancePath} ${i.message}`).join(", ")||"Unknown error";throw new Error(`Invalid manifest: ${o}.`)}return{manifest:r,manifestPath:e}}var Di,vi=O(()=>{"use strict";Di=require("fs");Va();np()});function fo(e,t){let n=e[t];if(!n)throw new vn(t);return n}var op=O(()=>{"use strict";Ua()});function se(e){let t=Q(),n=t.manifest,r=t.manifestPath,o={...n};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,ip.writeFileSync)(r,JSON.stringify(o,null,2),"utf-8"),o}var ip,qa=O(()=>{"use strict";ip=require("fs");vi()});var ke=O(()=>{"use strict";Wa();Ua();vi();Va();op();qa()});var ki=da((rO,Rv)=>{Rv.exports={name:"@webflow/webflow-cli",version:"1.22.0-next.3",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-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":"0.20.0","@rspack/core":"^1.7.8","@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","css-tree":"^2.3.1",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",prettier:"^2.7.1",semver:"^7.7.2","serve-handler":"^6.1.5","source-map-support":"^0.5.21",tar:"^7.4.3","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:{"@types/archiver":"^5.3.2","@types/css-tree":"^2.3.1","@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":"^18.16.0","@types/node-fetch":"2.6.13","@types/prettier":"^2.7.1","@types/serve-handler":"^6.1.1","@types/source-map":"^0.5.2","@types/webpack-node-externals":"^3.0.4",astro:"^5.17.2","eslint-config-custom":"*",express:"^4.18.1",jest:"^29.3.1",nock:"13.3.1",tar:"^7.4.3","ts-jest":"^29.0.3","ts-node":"^10.9.1",tsconfig:"*",tsup:"^8.4.0",typescript:"^4.9.3"},engines:{node:">=18.16.0"}}});function _t(){try{return ki().version}catch{return"unknown"}}function gt(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 n=mo.default.homedir();if(n){let o=new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gi");t=t.replace(o,"~/REDACTED_PII")}let r=mo.default.userInfo().username;if(r){let o=new RegExp(`/Users/${r}`,"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 Ga(e){if(e.stack)return gt(e.stack)}function Jt(e){let t=["password","token","secret","key","auth","bearer","authorization","apikey","api_key","access_token","refresh_token","client_secret","private_key"],n={};for(let[r,o]of Object.entries(e)){let i=r.toLowerCase();t.some(s=>i.includes(s))?n[r]="[REDACTED]":typeof o=="string"?n[r]=gt(o):typeof o=="object"&&o!==null&&!Array.isArray(o)?n[r]=Jt(o):Array.isArray(o)?n[r]=o.map(s=>typeof s=="object"&&s!==null?Jt(s):typeof s=="string"?gt(s):s):n[r]=o}return n}function sp(){return{platform:process.platform,nodeVersion:process.version,arch:process.arch,os:`${mo.default.type()} ${mo.default.release()}`}}function Ha(){let e=Date.now().toString(36),t=Math.random().toString(36).substring(2,8);return`${e}-${t}`}var mo,go=O(()=>{"use strict";mo=w(require("os"))});var ee,N,At,dr,Za,pr,Ce=O(()=>{"use strict";_e();ee=E.green("\u2714"),N=E.red("\u2716"),At=E.cyan("\u2139"),dr=E.green("\u279C"),Za=E.red("\u279C"),pr=E.yellow("\u26A0")});var qt,Ka=O(()=>{"use strict";_e();ke();go();J();Ce();qt=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 Q(),n=t?.telemetry?.global?.allowTelemetry;return this.cache=n,n}catch{return}}async setPreference(t){this.cache=t,await this.setGlobalPreference(t)}async promptForConsent(t){return e.isDoNotTrackEnabled()?(d.info(`${At} Telemetry is disabled because the DO_NOT_TRACK environment variable is set.`),!1):(d.info(`${At} Telemetry is enabled. Usage data and error reports help us improve Webflow CLI.`),d.info(`${At} To opt out, run: ${E.blue("webflow auth telemetry --disable")}`),await this.setPreference(!0),!0)}clearCache(){this.cache=void 0}async getGlobalPreference(){return this.getPreference()}async setGlobalPreference(t){let n={telemetry:{global:{allowTelemetry:t,lastPrompted:Date.now(),version:_t()}}};await se(n),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,n){this.cache=n}}});async function K(e,t){let r={"User-Agent":`webflow-cli@${_t()}`};return(0,ap.default)(e,{...t,headers:{...t?.headers,...r}})}var ap,ht=O(()=>{"use strict";ap=w(require("node-fetch"));Be()});var lp,cp=O(()=>{"use strict";lp=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 Ya,I,xi,fr,ho,Xa,yo,wo,mr,le=O(()=>{"use strict";cp();Ya=(e,t)=>(lp(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?Ya("WEBFLOW_API_HOST",process.env.WEBFLOW_API_HOST):"https://api.webflow.com",xi=process.env.WEBFLOW_CDN_API_HOST?Ya("WEBFLOW_CDN_API_HOST",process.env.WEBFLOW_CDN_API_HOST):"https://api-cdn.webflow.com",fr=process.env.WEBFLOW_HOST?Ya("WEBFLOW_HOST",process.env.WEBFLOW_HOST):"https://webflow.com",ho="wf-manifest.json",Xa="mf-manifest.json",yo="@webflow_renderer",wo="ssr-bundle.tar",mr="index.js"});var G,Qa=O(()=>{"use strict";Ka();go();J();ht();le();G=class e{config;consentManager;sessionId;platformInfo;constructor(t){this.config=t,this.consentManager=qt.getInstance(),this.sessionId=Ha(),this.platformInfo=sp()}async sendEvent(t){try{if(!await this.isEnabled())return;let n=this.enrichEvent(t),r=this.sanitizeEvent(n);await this.transmitEvent(r)}catch(n){d.debug(`Failed to send telemetry event: ${n}`)}}async sendError(t,n,r){await this.sendEvent({eventType:"error",success:!1,name:t.name,message:t.message,cause:t.cause,stack:Ga(t),context:n,metadata:r?Jt(r):void 0})}async sendUsage(t,n){let{duration:r,...o}=n??{};await this.sendEvent({eventType:"usage",success:!0,feature:t,duration:typeof r=="number"?r:void 0,data:Object.keys(o).length>0?Jt(o):void 0})}async sendPerformance(t,n,r){await this.sendEvent({eventType:"performance",operation:t,duration:n,metrics:r})}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 n=qt.getInstance(),r=await n.getPreference();return r!==void 0?r:await n.promptForConsent(t)}enrichEvent(t){return{...{eventType:t.eventType||"usage",timestamp:Date.now(),sessionId:this.sessionId,platform:this.platformInfo.platform,nodeVersion:this.platformInfo.nodeVersion,cliVersion:_t(),command: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 n=JSON.parse(JSON.stringify(t));return n.message&&(n.message=gt(n.message)),n.stack&&(n.stack=gt(n.stack)),n.context&&(n.context=gt(n.context)),n.metadata&&(n.metadata=Jt(n.metadata)),n.data&&(n.data=Jt(n.data)),n}async transmitEvent(t){let n=this.getEndpoint(),r=process.env.WEBFLOW_TELEMETRY_DEBUG==="true";if(r){console.log(`\u{1F4CA} [Telemetry] Sending to: ${n}`);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 K(n,{method:"POST",headers:{Authorization:`Bearer ${this.config.authToken}`,"Content-Type":"application/json"},body:JSON.stringify(t),timeout:5e3});if(o.ok)r&&console.log(`\u{1F4CA} [Telemetry] Request successful: ${o.status}`);else throw r&&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:n}=this.config;return`${t}/webflow-cli/${n}/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 forForms(t){return new e({host:t.host||I,authToken:t.authToken,commandType:"forms"})}}});var up=O(()=>{"use strict"});function dp(e){return async(t,n,r)=>{let o=Date.now(),i=process.memoryUsage().heapUsed;try{let s=await n(),a=Date.now()-o,l=process.memoryUsage().heapUsed;return await e.sendPerformance(t,a,{memoryDelta:l-i,...r}),s}catch(s){let a=Date.now()-o;throw await e.sendPerformance(t,a,{failed:1,...r}),s}}}var Be=O(()=>{"use strict";Qa();Ka();up();go();go()});var tl,el,$v,Tt,nl=O(()=>{"use strict";tl=Symbol("webflow-cli-warn"),el=class{warnings=[];originalConsoleWarn=null;isActive=!1;parseSource(t){let n=t.split(`
10
+ `;return this.stop(),this.#r.write(u),this}}});function La(e,{suffix:t="nodejs"}={}){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return t&&(e+=`-${t}`),yi.default.platform==="darwin"?Fv(e):yi.default.platform==="win32"?Sv(e):_v(e)}var de,Ba,yi,Vt,Na,ur,Fv,Sv,_v,Vd=O(()=>{"use strict";de=w(require("path"),1),Ba=w(require("os"),1),yi=w(require("process"),1),Vt=Ba.default.homedir(),Na=Ba.default.tmpdir(),{env:ur}=yi.default,Fv=e=>{let t=de.default.join(Vt,"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(Na,e)}},Sv=e=>{let t=ur.APPDATA||de.default.join(Vt,"AppData","Roaming"),n=ur.LOCALAPPDATA||de.default.join(Vt,"AppData","Local");return{data:de.default.join(n,e,"Data"),config:de.default.join(t,e,"Config"),cache:de.default.join(n,e,"Cache"),log:de.default.join(n,e,"Log"),temp:de.default.join(Na,e)}},_v=e=>{let t=de.default.basename(Vt);return{data:de.default.join(ur.XDG_DATA_HOME||de.default.join(Vt,".local","share"),e),config:de.default.join(ur.XDG_CONFIG_HOME||de.default.join(Vt,".config"),e),cache:de.default.join(ur.XDG_CACHE_HOME||de.default.join(Vt,".cache"),e),log:de.default.join(ur.XDG_STATE_HOME||de.default.join(Vt,".local","state"),e),temp:de.default.join(Na,t,e)}}});function wi(){return/[<>:"/\\|?*\u0000-\u001F]/g}function Jd(){return/^(con|prn|aux|nul|com\d|lpt\d)$/i}var qd=O(()=>{"use strict"});function po(e,t={}){let n=/[\u0000-\u001F\u0080-\u009F]/g,r=/([<>:"/\\|?*\u0000-\u001F]){2,}/g;if(typeof e!="string")throw new TypeError("Expected a string");let o=t.replacement===void 0?"!":t.replacement;if(wi().test(o)&&n.test(o))throw new Error("Replacement string cannot contain reserved filename characters");o.length>0&&(e=e.replace(r,"$1")),e=e.normalize("NFD"),e=e.replace(Tv,o),e=e.replace(wi(),o),e=e.replace(n,o),e=e.replace(Ov,""),o.length>0&&(!(e[0]===".")&&e[0]==="."&&(e=o+e),e[e.length-1]==="."&&(e+=o)),e=Jd().test(e)?e+o:e;let i=typeof t.maxLength=="number"?t.maxLength:Av;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 Av,Tv,Ov,Ma=O(()=>{"use strict";qd();Av=100,Tv=/^\.+(\\|\/)|^\.+$/,Ov=/\.+$/});var Pv,Gd=O(()=>{"use strict";Pv=w(require("path"),1);Ma()});var Hd=O(()=>{"use strict";Ma();Gd()});var bi,Wa=O(()=>{"use strict";bi="webflow.json"});var vn,Ua=O(()=>{"use strict";vn=class extends Error{constructor(t){super(`Manifest config for key "${t}" not found`),this.name="ManifestConfigKeyNotFoundError"}}});function Kd(e){za=e}function oe(){return za}function mt(){return!za}function Yd(e){Zd=e}function Xd(){return Zd}var za,Zd,Oe=O(()=>{"use strict";za=!1});function kn(){let e=Xd();if(e){if(e.endsWith(".json"))return{path:e,isUserDefined:!0};try{if((0,Qd.statSync)(e)?.isDirectory())return{path:(0,ep.join)(e,bi),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:`./${bi}`,isUserDefined:!1}}var Qd,ep,Va=O(()=>{"use strict";Qd=require("fs"),ep=require("path");Wa();Oe()});var tp,Iv,jv,Ja,np=O(()=>{"use strict";tp=w(require("ajv")),Iv=new tp.default,jv={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"}},required:[]}}},Ja=Iv.compile(jv)});function rp(e){return e instanceof Error?e:new Error("Unknown error")}function Q(){let{path:e}=kn();if(!(0,Di.existsSync)(e))return{manifest:{},manifestPath:e};let t;try{t=(0,Di.readFileSync)(e,"utf8")}catch(o){throw new Error(`Failed to read manifest file: ${rp(o).message}`)}if(t.trim()==="")return{manifest:{},manifestPath:e};let r;try{r=JSON.parse(t)}catch(o){throw new Error(`Invalid JSON in manifest file: ${rp(o).message}`)}if(!Ja(r)){let o=Ja.errors?.map(i=>`${i.instancePath} ${i.message}`).join(", ")||"Unknown error";throw new Error(`Invalid manifest: ${o}.`)}return{manifest:r,manifestPath:e}}var Di,vi=O(()=>{"use strict";Di=require("fs");Va();np()});function fo(e,t){let n=e[t];if(!n)throw new vn(t);return n}var op=O(()=>{"use strict";Ua()});function se(e){let t=Q(),n=t.manifest,r=t.manifestPath,o={...n};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,ip.writeFileSync)(r,JSON.stringify(o,null,2),"utf-8"),o}var ip,qa=O(()=>{"use strict";ip=require("fs");vi()});var ke=O(()=>{"use strict";Wa();Ua();vi();Va();op();qa()});var ki=da((rO,Rv)=>{Rv.exports={name:"@webflow/webflow-cli",version:"1.22.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-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":"0.20.0","@rspack/core":"^1.7.8","@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","css-tree":"^2.3.1",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",prettier:"^2.7.1",semver:"^7.7.2","serve-handler":"^6.1.5","source-map-support":"^0.5.21",tar:"^7.4.3","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:{"@types/archiver":"^5.3.2","@types/css-tree":"^2.3.1","@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":"^18.16.0","@types/node-fetch":"2.6.13","@types/prettier":"^2.7.1","@types/serve-handler":"^6.1.1","@types/source-map":"^0.5.2","@types/webpack-node-externals":"^3.0.4",astro:"^5.17.2","eslint-config-custom":"*",express:"^4.18.1",jest:"^29.3.1",nock:"13.3.1",tar:"^7.4.3","ts-jest":"^29.0.3","ts-node":"^10.9.1",tsconfig:"*",tsup:"^8.4.0",typescript:"^4.9.3"},engines:{node:">=18.16.0"}}});function _t(){try{return ki().version}catch{return"unknown"}}function gt(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 n=mo.default.homedir();if(n){let o=new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gi");t=t.replace(o,"~/REDACTED_PII")}let r=mo.default.userInfo().username;if(r){let o=new RegExp(`/Users/${r}`,"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 Ga(e){if(e.stack)return gt(e.stack)}function Jt(e){let t=["password","token","secret","key","auth","bearer","authorization","apikey","api_key","access_token","refresh_token","client_secret","private_key"],n={};for(let[r,o]of Object.entries(e)){let i=r.toLowerCase();t.some(s=>i.includes(s))?n[r]="[REDACTED]":typeof o=="string"?n[r]=gt(o):typeof o=="object"&&o!==null&&!Array.isArray(o)?n[r]=Jt(o):Array.isArray(o)?n[r]=o.map(s=>typeof s=="object"&&s!==null?Jt(s):typeof s=="string"?gt(s):s):n[r]=o}return n}function sp(){return{platform:process.platform,nodeVersion:process.version,arch:process.arch,os:`${mo.default.type()} ${mo.default.release()}`}}function Ha(){let e=Date.now().toString(36),t=Math.random().toString(36).substring(2,8);return`${e}-${t}`}var mo,go=O(()=>{"use strict";mo=w(require("os"))});var ee,N,At,dr,Za,pr,Ce=O(()=>{"use strict";_e();ee=E.green("\u2714"),N=E.red("\u2716"),At=E.cyan("\u2139"),dr=E.green("\u279C"),Za=E.red("\u279C"),pr=E.yellow("\u26A0")});var qt,Ka=O(()=>{"use strict";_e();ke();go();J();Ce();qt=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 Q(),n=t?.telemetry?.global?.allowTelemetry;return this.cache=n,n}catch{return}}async setPreference(t){this.cache=t,await this.setGlobalPreference(t)}async promptForConsent(t){return e.isDoNotTrackEnabled()?(d.info(`${At} Telemetry is disabled because the DO_NOT_TRACK environment variable is set.`),!1):(d.info(`${At} Telemetry is enabled. Usage data and error reports help us improve Webflow CLI.`),d.info(`${At} To opt out, run: ${E.blue("webflow auth telemetry --disable")}`),await this.setPreference(!0),!0)}clearCache(){this.cache=void 0}async getGlobalPreference(){return this.getPreference()}async setGlobalPreference(t){let n={telemetry:{global:{allowTelemetry:t,lastPrompted:Date.now(),version:_t()}}};await se(n),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,n){this.cache=n}}});async function K(e,t){let r={"User-Agent":`webflow-cli@${_t()}`};return(0,ap.default)(e,{...t,headers:{...t?.headers,...r}})}var ap,ht=O(()=>{"use strict";ap=w(require("node-fetch"));Be()});var lp,cp=O(()=>{"use strict";lp=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 Ya,I,xi,fr,ho,Xa,yo,wo,mr,le=O(()=>{"use strict";cp();Ya=(e,t)=>(lp(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?Ya("WEBFLOW_API_HOST",process.env.WEBFLOW_API_HOST):"https://api.webflow.com",xi=process.env.WEBFLOW_CDN_API_HOST?Ya("WEBFLOW_CDN_API_HOST",process.env.WEBFLOW_CDN_API_HOST):"https://api-cdn.webflow.com",fr=process.env.WEBFLOW_HOST?Ya("WEBFLOW_HOST",process.env.WEBFLOW_HOST):"https://webflow.com",ho="wf-manifest.json",Xa="mf-manifest.json",yo="@webflow_renderer",wo="ssr-bundle.tar",mr="index.js"});var G,Qa=O(()=>{"use strict";Ka();go();J();ht();le();G=class e{config;consentManager;sessionId;platformInfo;constructor(t){this.config=t,this.consentManager=qt.getInstance(),this.sessionId=Ha(),this.platformInfo=sp()}async sendEvent(t){try{if(!await this.isEnabled())return;let n=this.enrichEvent(t),r=this.sanitizeEvent(n);await this.transmitEvent(r)}catch(n){d.debug(`Failed to send telemetry event: ${n}`)}}async sendError(t,n,r){await this.sendEvent({eventType:"error",success:!1,name:t.name,message:t.message,cause:t.cause,stack:Ga(t),context:n,metadata:r?Jt(r):void 0})}async sendUsage(t,n){let{duration:r,...o}=n??{};await this.sendEvent({eventType:"usage",success:!0,feature:t,duration:typeof r=="number"?r:void 0,data:Object.keys(o).length>0?Jt(o):void 0})}async sendPerformance(t,n,r){await this.sendEvent({eventType:"performance",operation:t,duration:n,metrics:r})}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 n=qt.getInstance(),r=await n.getPreference();return r!==void 0?r:await n.promptForConsent(t)}enrichEvent(t){return{...{eventType:t.eventType||"usage",timestamp:Date.now(),sessionId:this.sessionId,platform:this.platformInfo.platform,nodeVersion:this.platformInfo.nodeVersion,cliVersion:_t(),command: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 n=JSON.parse(JSON.stringify(t));return n.message&&(n.message=gt(n.message)),n.stack&&(n.stack=gt(n.stack)),n.context&&(n.context=gt(n.context)),n.metadata&&(n.metadata=Jt(n.metadata)),n.data&&(n.data=Jt(n.data)),n}async transmitEvent(t){let n=this.getEndpoint(),r=process.env.WEBFLOW_TELEMETRY_DEBUG==="true";if(r){console.log(`\u{1F4CA} [Telemetry] Sending to: ${n}`);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 K(n,{method:"POST",headers:{Authorization:`Bearer ${this.config.authToken}`,"Content-Type":"application/json"},body:JSON.stringify(t),timeout:5e3});if(o.ok)r&&console.log(`\u{1F4CA} [Telemetry] Request successful: ${o.status}`);else throw r&&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:n}=this.config;return`${t}/webflow-cli/${n}/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 forForms(t){return new e({host:t.host||I,authToken:t.authToken,commandType:"forms"})}}});var up=O(()=>{"use strict"});function dp(e){return async(t,n,r)=>{let o=Date.now(),i=process.memoryUsage().heapUsed;try{let s=await n(),a=Date.now()-o,l=process.memoryUsage().heapUsed;return await e.sendPerformance(t,a,{memoryDelta:l-i,...r}),s}catch(s){let a=Date.now()-o;throw await e.sendPerformance(t,a,{failed:1,...r}),s}}}var Be=O(()=>{"use strict";Qa();Ka();up();go();go()});var tl,el,$v,Tt,nl=O(()=>{"use strict";tl=Symbol("webflow-cli-warn"),el=class{warnings=[];originalConsoleWarn=null;isActive=!1;parseSource(t){let n=t.split(`
11
11
  `);for(let r=2;r<n.length;r++){let o=n[r],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]===tl){let i=t.slice(0,-1);this.originalConsoleWarn&&this.originalConsoleWarn(...i);return}let n=t.map(i=>{if(typeof i=="string")return i;if(i instanceof Error)return i.message;try{return String(i)}catch{return"[Object]"}}).join(" "),r=new Error().stack||"",o=this.parseSource(r);this.warnings.push({message:n,timestamp:Date.now(),source:o,stackTrace:r})})}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((n,r)=>{let o=r.source||"General";return n[o]||(n[o]=[]),n[o].push(r),n},{});Object.entries(t).forEach(([n,r])=>{n!=="General"&&console.log(` ${n}:`),r.forEach((o,i)=>{let s=n!=="General"?" ":" ",a=o.message||"[Empty warning message]";console.log(`${s}${i+1}. ${a}`)}),n!=="General"&&console.log("")}),t.General&&console.log("")}debug(){console.log(`
@@ -18,7 +18,7 @@ ${t}`,cv=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),uv=Objec
18
18
  ${N} An error occurred. See logs for more information:`),console.info(`${Za} Latest log: ${rl}`),console.info(`${Za} All logs: ${Ne}`)),(process.env.DEBUG||process.argv.includes("--verbose"))&&(console.info(`
19
19
  ${ee} Command completed successfully. Logs written to:`),console.info(`${dr} Latest log: ${rl}`),console.info(`${dr} All logs: ${Ne}`))}catch(t){console.error("Failed to write logs:",t)}}var gr,Ci,jO,Nv,Ne,Lv,Mv,Wv,rl,bo,il,ol,hr,Hv,d,J=O(()=>{"use strict";gr=w(require("fs-extra")),Ci=w(require("path"));_e();jO=require("source-map-support/register");$a();Vd();Hd();Be();nl();Ce();Nv=La("webflow-cli"),Ne=Nv.log;Lv=fp(process.env.MAX_PERSISTED_LOGS,50),Mv=fp(process.env.MAX_IN_MEMORY_LOGS,1e3),Wv=`${po(new Date().toISOString(),{replacement:"_"}).replace(/\./g,"_")}-debug.log`,rl=Ci.default.join(Ne,Wv);bo=[],il=!1;hr=!1;process.on("uncaughtException",e=>{hr||(hr=!0,Gt(`UNCAUGHT EXCEPTION: ${e?.stack}`),sl(1)),Tt.displayGrouped(),Tt.stop(),process.exit(1)});process.on("unhandledRejection",e=>{hr||(hr=!0,Gt(`UNHANDLED REJECTION: ${e instanceof Error?e.stack:String(e)}`),sl(1)),Tt.displayGrouped(),Tt.stop(),process.exit(1)});process.on("exit",e=>{hr||(hr=!0,sl(e))});Hv={debug:e=>{let t=pp(e);process.env.DEBUG&&console.debug(t)},trace:e=>{let t=pp(e);process.env.DEBUG&&console.debug(t)},dir:e=>console.dir(e,{depth:100}),info:e=>console.info(Uv(e)),warn:e=>console.warn(zv(e),tl),error:(e,t)=>{console.error(Vv(e,t))},success:e=>console.log(Jv(e)),spinner:qv},d=Hv});async function Do(e){try{return await e()}catch(t){throw t instanceof Error&&Kv.test(t.message)&&(d.debug(t.message),process.stdin.isTTY&&typeof process.stdin.setRawMode=="function"&&process.stdin.setRawMode(!1),process.exit(130)),t}}async function Ae(e){return oe()?e.default??!1:Do(()=>yt.confirm(e))}async function Le(e){return oe()?"default"in e?e.default:null:Do(()=>yt.select(e))}async function Te(e){return oe()?e.default!==void 0?await e.validate?.(e.default)!==!0?null:e.default:null:Do(()=>yt.input(e))}async function Fi(e){if(oe()){let t=[];return await e.validate?.(t)!==!0?null:t}return Do(()=>yt.checkbox(e))}async function Si(e){return oe()?"default"in e?e.default:null:Do(()=>yt.search(e))}var yt,Kv,Me=O(()=>{"use strict";yt=w(require("@inquirer/prompts"));Oe();J();Kv=/SIGINT/i});function Ot({apiToken:e,siteId:t,directory:n}){let r=ko.resolve(n?ko.join(n,".env"):ko.join(process.cwd(),".env"));n&&!Fn.existsSync(n)&&Fn.mkdirSync(n,{recursive:!0}),Fn.existsSync(r)||Fn.writeFileSync(r,`# automatically generated at ${new Date().toISOString()}`,{encoding:"utf8"}),_i.default.config({path:r,quiet:!0}),e&&_i.default.set("WEBFLOW_API_TOKEN",e,{path:r,encrypt:!1}),t&&_i.default.set("WEBFLOW_SITE_ID",t,{path:r,encrypt:!1})}var Fn,ko,_i,kp=O(()=>{"use strict";Fn=w(require("fs")),ko=w(require("path")),_i=w(require("@dotenvx/dotenvx"))});var g,te=O(()=>{"use strict";g=class e extends Error{prefix;skipLogging;isUserError;constructor(t,n){let r=t instanceof Error?t.message:String(t);super(r),this.name="CLIError",this.prefix=n?.prefix,this.skipLogging=n?.skipLogging??!1,this.isUserError=n?.isUserError??(t instanceof e?t.isUserError:!1),t instanceof Error?(this.cause=t,this.stack=t.stack):Error.captureStackTrace&&Error.captureStackTrace(this,e)}}});function Kt(){let e=ek();return Sn.default.join(e,Qv)}function ek(){if(process.platform==="win32"){let n=process.env.APPDATA??Sn.default.join(ul.default.homedir(),"AppData","Roaming");return Sn.default.join(n,"webflow")}let t=process.env.XDG_CONFIG_HOME??Sn.default.join(ul.default.homedir(),".config");return Sn.default.join(t,"webflow")}function xo(){let e=Kt();try{if(!Zt.default.existsSync(e))return null;let t=Zt.default.readFileSync(e,"utf8");return JSON.parse(t)}catch{return null}}function dl(e){let t=Kt(),n=Sn.default.dirname(t);Zt.default.existsSync(n)||Zt.default.mkdirSync(n,{recursive:!0,mode:448}),Zt.default.writeFileSync(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384})}function pl(){let e=Kt();try{Zt.default.existsSync(e)&&Zt.default.unlinkSync(e)}catch{}}var Zt,ul,Sn,Qv,fl=O(()=>{"use strict";Zt=w(require("fs")),ul=w(require("os")),Sn=w(require("path")),Qv="auth.json"});var Co,ml=O(()=>{"use strict";le();Co={serverUrl:fr,timeoutMs:5*60*1e3}});var xp,Cp,Ep,Fp,tk,Sp,nk,_p,Ap=O(()=>{"use strict";xp=require("crypto"),Cp=w(require("open"));ml();J();ht();Ep=e=>{let t=new Uint8Array(e);return xp.webcrypto.getRandomValues(t),Array.from(t,n=>n.toString(16).padStart(2,"0")).join("")},Fp=({pollId:e,clientId:t,scope:n})=>`${Co.serverUrl}/oauth/webflow/initiate?pollId=${e}&clientId=${t}&scope=${encodeURIComponent(n.join(" "))}`,tk=e=>`${Co.serverUrl}/oauth/webflow/poll?pollId=${e}`,Sp=async e=>{let t=d.spinner("Opening browser for authentication. Please follow the instructions in your browser");try{await new Promise(n=>setTimeout(n,3e3)),await(0,Cp.default)(e),t.succeed()}catch{t.fail(),d.warn(`Could not automatically open browser. Please open this URL manually: ${e}`)}},nk=async e=>{let t=tk(e),n=await K(t);if(!n.ok){let r=`Failed to poll for authentication status (${n.status})`;try{let o=await n.json();o&&o.error&&(r+=`: ${o.error}`)}catch{}throw new Error(r)}return n.json()},_p=(e,t)=>{let n=d.spinner("Waiting for authentication");return new Promise((r,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 nk(e);a.status==="success"&&a.accessToken?(clearTimeout(i),clearInterval(s),n.succeed("Authentication successful! You can close the browser window."),r(a.accessToken)):a.status==="error"&&(clearTimeout(i),clearInterval(s),n.fail("Authentication failed"),o(new Error(a.error||"Authentication failed")))}catch(a){clearTimeout(i),clearInterval(s),n.fail("Authentication failed"),o(a instanceof Error?a:new Error(String(a)))}},2e3)})}});function Eo(){if(process.env.WEBFLOW_API_TOKEN)return process.env.WEBFLOW_API_TOKEN;let e=xo();if(e?.accessToken)return e.accessToken;let t=process.env.WEBFLOW_WORKSPACE_API_TOKEN??process.env.WEBFLOW_SITE_API_TOKEN??null;return t&&!Tp&&(Tp=!0,d.warn(`${pr} WEBFLOW_SITE_API_TOKEN / WEBFLOW_WORKSPACE_API_TOKEN are deprecated. Please use WEBFLOW_API_TOKEN instead. Run 'webflow auth login --force' to update your .env file.`)),t}async function Y(e){if(e?.apiToken&&!e.force)return e.apiToken;if(!e?.force){let r=Eo();if(r)return r}if(oe())throw new g(`No API token found. To authenticate in CI/CD environments:
20
20
  1. Generate a Workspace API token in your Webflow Dashboard > Apps & Integrations > Manage > Workspace API Token
21
- 2. Set it as the WEBFLOW_API_TOKEN environment variable in your CI/CD pipeline`);let t=Ep(16),n=rk();try{let r=Fp({pollId:t,clientId:n,scope:gl});await Sp(r);let o=await _p(t,Co.timeoutMs);return dl({accessToken:o,scopes:gl,createdAt:new Date().toISOString()}),d.info(`${ee} Credentials saved: ${Kt()}`),o}catch(r){throw new g(r)}}function rk(){return"fbab9abdbeeb35bb2554a1b83b8bd060d719f22eca26ff9119b87608c87c0074"}var gl,Tp,hl=O(()=>{"use strict";Oe();J();Ce();te();fl();ml();Ap();gl=["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"],Tp=!1});function ok(){return!0}function Fo(e){if(e.siteId)return e.siteId;let t=process.env.WEBFLOW_SITE_ID;return t?(ok()||(se({siteId:t}),e.siteId=t),t):null}async function yl(e){try{let n=await new Op.WebflowClient({accessToken:e,environment:{base:`${I}/v2`,dataApi:`${I}/v2`,contentDeliveryApi:`${xi}/v2`}}).sites.list();if(!n||typeof n!="object"||!n.sites||!Array.isArray(n.sites))throw new g("Invalid response from Webflow API");let r=n.sites.map(o=>({id:o.id,displayName:o.displayName??"",shortName:o.shortName||(o.displayName??"").toLowerCase().replace(/\s+/g,"-"),lastUpdated:o.lastUpdated??null}));return r.sort((o,i)=>o.displayName.localeCompare(i.displayName)),r}catch(t){throw new g(t,{prefix:`Failed to fetch Webflow sites. Please check your authorization.
21
+ 2. Set it as the WEBFLOW_API_TOKEN environment variable in your CI/CD pipeline`);let t=Ep(16),n=rk();try{let r=Fp({pollId:t,clientId:n,scope:gl});await Sp(r);let o=await _p(t,Co.timeoutMs);return dl({accessToken:o,scopes:gl,createdAt:new Date().toISOString()}),d.info(`${ee} Credentials saved: ${Kt()}`),o}catch(r){throw new g(r)}}function rk(){return"fbab9abdbeeb35bb2554a1b83b8bd060d719f22eca26ff9119b87608c87c0074"}var gl,Tp,hl=O(()=>{"use strict";Oe();J();Ce();te();fl();ml();Ap();gl=["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"],Tp=!1});function ok(){return!1}function Fo(e){if(e.siteId)return e.siteId;let t=process.env.WEBFLOW_SITE_ID;return t?(ok()||(se({siteId:t}),e.siteId=t),t):null}async function yl(e){try{let n=await new Op.WebflowClient({accessToken:e,environment:{base:`${I}/v2`,dataApi:`${I}/v2`,contentDeliveryApi:`${xi}/v2`}}).sites.list();if(!n||typeof n!="object"||!n.sites||!Array.isArray(n.sites))throw new g("Invalid response from Webflow API");let r=n.sites.map(o=>({id:o.id,displayName:o.displayName??"",shortName:o.shortName||(o.displayName??"").toLowerCase().replace(/\s+/g,"-"),lastUpdated:o.lastUpdated??null}));return r.sort((o,i)=>o.displayName.localeCompare(i.displayName)),r}catch(t){throw new g(t,{prefix:`Failed to fetch Webflow sites. Please check your authorization.
22
22
  `})}}async function wl(e){let t=e.map(r=>({name:`${r.displayName} (${r.shortName})`,value:r})),n=await Si({message:"Search for a Webflow site:",source:r=>{if(!r)return t;let o=r.toLowerCase();return t.filter(i=>i.value.displayName.toLowerCase().includes(o)||i.value.shortName.toLowerCase().includes(o))},pageSize:15});if(!n){if(e.length===0)throw new g("No sites available for selection");return d.warn(`Auto fallback to first site: ${e[0].displayName}`),e[0]}return n}var Op,Ai=O(()=>{"use strict";Op=require("webflow-api");Me();J();ke();le();le();te()});async function be(e,t){let n=t?.site??Fo(e);if(oe()&&!n)throw new g(`No site ID configured for this project.
23
23
  Run 'webflow auth login' locally to authenticate and associate this project with a Webflow site,
24
24
  or provide --site and --api-token when running a CLI command`);let r=await Y({apiToken:t?.apiToken,force:t?.force});if(!n||t?.force){let o=await yl(r);if(o.length===0)throw new g("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 wl(o):o[0];n=i.id;let s=se({siteId:n});return e.siteId=s.siteId,{siteId:n,siteName:i.displayName,accessToken:r}}return{siteId:n,accessToken:r}}var Pp=O(()=>{"use strict";ke();Oe();hl();Ai();te()});async function bl(e){let t=new Ip.WebflowClient({accessToken:e,environment:{base:`${I}/v2`,dataApi:`${I}/v2`}});try{return await t.token.authorizedBy()}catch{return null}}var Ip,jp=O(()=>{"use strict";Ip=require("webflow-api");le()});var We=O(()=>{"use strict";kp();hl();Pp();Ai();Ai();fl();jp()});function hk(e,t){if(e.includes("..")||at.isAbsolute(e))throw new Error(`Invalid file path: "${e}" - path traversal not allowed`);let n=at.resolve(t,e),r=at.resolve(t);if(!n.startsWith(r+at.sep)&&n!==r)throw new Error(`Invalid file path: "${e}" - resolves outside root directory`)}async function Wi(e,t,n){let r=at.join(process.cwd(),t);n&&(0,Xt.existsSync)(r)&&await(0,Mi.rm)(r,{recursive:!0,force:!0}),(0,Xt.existsSync)(r)||await(0,Mi.mkdir)(r);for(let o of e){hk(o.path,r);let i=yk(r,o.path);if(o.path.includes("/")){let s=o.path.substring(0,o.path.lastIndexOf("/"));wk(r,s)}(0,Xt.writeFileSync)(i,o.content,{flag:"w+"})}}function yk(e,t){return at.join(e,...t.split("/"))}function wk(e,t){let n=t.split("/"),r=e;for(let o of n)r=at.join(r,o),(0,Xt.existsSync)(r)||(0,Xt.mkdirSync)(r)}var Xt,Mi,at,Tl=O(()=>{"use strict";Xt=require("fs"),Mi=require("fs/promises"),at=w(require("path"))});function gs(e){for(let t of e??[]){let n=d[t.status]??d.info,r=gS[t.status]??At;n(`
@@ -160,7 +160,7 @@ ${pb(o.error)}`);let i=o.data;if(i.d1_databases&&i.d1_databases.length>0&&i.d1_d
160
160
  ${E.bold.cyan(`${r}${o}`)}`)}async function wb(e=process.cwd(),t,n,r){let o=ni(e);if(!o)throw new Error("No package.json file found");let i=Yr(d,e),s={...r?{COSMIC_MOUNT_PATH:r}:{},...t?{COSMIC_DEPLOY_URL:t}:{},...n&&!t?{COSMIC_DEPLOY_URL:G2(n)}:{}};return Iu({cwd:e,log:d,packageJson:o,userEnv:s},i)}async function bb(e,t={}){let n=t.projectPath||process.cwd(),r=Date.now(),o=ne.join(n,".tmp",`webflow-build-${r}`),i=t.outputDir||ne.join(o,"output"),s=t.mountPath||"/app",a=Date.now(),l=Ru(n),c=t.telemetry,u=e.getBuildCommand(),p=e.getOutputDeployMetadata();await c?.sendUsage("cloud_build_start",{framework:e.info.name,buildCommand:u,deploymentType:p.deploymentType,mountPath:s,cloudflareBindings:l}),V.mkdirSync(o,{recursive:!0});try{Wt("\u{1F527}","Configure framework"),d.info(`Framework: ${e.info.displayName}`),d.info(`Mount path: ${s}`),d.info(`Deployment type: ${p.deploymentType}`);let f=e.getNodeVersionRequirement();f&&Kr(d,f,e.info.displayName),d.info("Validating framework requirements..."),await e.validate(),d.info("Installing framework dependencies..."),await e.installDependencies(),Wt("\u2699\uFE0F ","Configure wrangler"),await mb(e,n),d.info("Preparing framework configuration..."),await e.prepareConfig(),ju(d,n,e.info.name,e),Wt("\u{1F4E6}","Install dependencies"),await q2(n,e.info.name,t.telemetry),gb(n),Wt("\u{1F3D7}\uFE0F ","Build app"),d.info(`running ${u}...`),await H2(n,u,t.telemetry),await e.postBuild(),Wt("\u{1F9EA}","Wrangler dry-run"),await Z2(n,i),Wt("\u{1F4C1}","Copy assets"),await K2(n,i,e,s),Wt("\u{1F381}","Create tarball");let m=await Y2(i),h=Date.now()-a;return d.info(`${ee} Build completed in ${(h/1e3).toFixed(1)}s`),await c?.sendUsage("cloud_build_success",{duration:h,framework:e.info.name,buildCommand:u,deploymentType:p.deploymentType,mountPath:s,cloudflareBindings:l}),m}catch(f){let m=Date.now()-a;throw await c?.sendError(f instanceof Error?f:new Error(String(f)),"cloud_build_failure",{duration:m,framework:e.info.name,buildCommand:u,deploymentType:p.deploymentType,mountPath:s,cloudflareBindings:l}),f}}function Ru(e){let t=ne.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 n=JSON.parse(V.readFileSync(t,"utf8")),r=n.kv_namespaces||[],o=n.d1_databases||[],i=n.r2_buckets||[],s=n.vars||{};return{hasKV:r.length>0,hasD1:o.length>0,hasR2:i.length>0,hasVars:Object.keys(s).length>0,kvCount:r.length,d1Count:o.length,r2Count:i.length,varCount:Object.keys(s).length}}catch(n){return console.debug("Failed to parse wrangler.json for bindings detection:",n),{hasKV:!1,hasD1:!1,hasR2:!1,hasVars:!1,kvCount:0,d1Count:0,r2Count:0,varCount:0}}}function Db(e){try{let t=ne.dirname(e);t.includes(".tmp/webflow-build-")&&(Wt("\u{1F9F9}","Clean up build artifacts"),V.rmSync(t,{recursive:!0,force:!0}))}catch(t){d.warn(`Warning: Failed to clean up build artifacts: ${t}`)}}function vb(e,t){try{Wt("\u{1F9F9}","Revert framework configuration");let n=t.getUserConfigPatterns(),r=new Set;for(let s of n){let a=ne.extname(s).slice(1),l=ne.basename(s,`.${a}`);if(!r.has(l)){r.add(l);for(let c of["mjs","cjs","js","ts"]){let u=ne.join(e,`clouduser.${l}.${c}`),p=ne.join(e,`${l}.${c}`);if(V.existsSync(u)){d.info(`restoring /${l}.${c} from /clouduser.${l}.${c}...`),V.existsSync(p)&&V.unlinkSync(p),V.renameSync(u,p);break}}}}for(let s of[".jsonc",".json"]){let a=ne.join(e,`clouduser.wrangler${s}`);if(V.existsSync(a)){d.info(`restoring user wrangler${s} from backup...`);let l=ne.join(e,"wrangler.json");V.existsSync(l)&&V.unlinkSync(l);let c=ne.join(e,`wrangler${s}`);V.renameSync(a,c);break}}let o=ne.join(e,"clouduser");V.existsSync(o)&&(d.info("cleaning up clouduser directory..."),V.rmSync(o,{recursive:!0,force:!0}));for(let s of t.getAdditionalConfigFiles()){let a=ne.join(e,ne.basename(s));V.existsSync(a)&&(d.info(`cleaning up additional config file ${a}...`),V.unlinkSync(a))}let i=t.getWebflowLoader();if(i){let s=ne.join(e,i.destinationName);V.existsSync(s)&&(d.info(`cleaning up ${i.destinationName}...`),V.unlinkSync(s))}}catch(n){d.warn(`Warning: Failed to cleanup framework configuration: ${n}`)}}async function q2(e,t,n){let r=Date.now(),o=["--no-update-notifier","--no-progress"],i=ne.join(e,"package-lock.json");try{V.existsSync(i)?(d.info("Running npm ci --include=dev..."),(0,si.execSync)(`npm ci --include=dev ${o.join(" ")}`,{cwd:e,stdio:"inherit"})):(d.info("Warning: No package-lock.json found, installing dependencies with npm install --include=dev"),(0,si.execSync)(`npm install --include=dev ${o.join(" ")}`,{cwd:e,stdio:"inherit"}));let s=Date.now()-r;await n?.sendUsage("cloud_install_dependencies_success",{duration:s,framework:t,hasPackageLock:V.existsSync(i)})}catch(s){let a=Date.now()-r;throw await n?.sendError(s instanceof Error?s:new Error(String(s)),"cloud_install_dependencies_failure",{duration:a,framework:t,hasPackageLock:V.existsSync(i)}),s}}function G2(e){let t="production",n;switch(t){case"development":n="wf-app-dev";break;case"acceptance":n="wf-app-acceptance";break;default:n="wf-app-prod"}return`https://${e}.${n}.cosmic.webflow.services`}async function H2(e,t,n){let r=Date.now();try{(0,si.execSync)(`npm exec -- ${t}`,{cwd:e,stdio:"inherit"});let o=Date.now()-r;await n?.sendUsage("cloud_build_command_success",{duration:o,buildCommand:t})}catch(o){let i=Date.now()-r;throw await n?.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 Z2(e,t){V.mkdirSync(t,{recursive:!0});let n=ne.join(e,"wrangler.json"),r=ne.join(e,"wrangler.jsonc");if(!V.existsSync(n)&&!V.existsSync(r))throw new Error("Missing wrangler configuration: wrangler.json or wrangler.jsonc file is required");(0,si.execSync)(`npx wrangler@${J2} deploy --dry-run --outdir="${t}"`,{cwd:e,stdio:"inherit"})}async function K2(e,t,n,r){let o=n.getOutputDeployMetadata(),i=o.staticAssetsPath,s=o.staticAssetsExclude?.[0],a=o.assetsSourceSkipMountPath===!0,l=r.replace(/\/+$/,"").replace(/^\/+/,"");if(!a&&l&&(n.info.name==="nextjs"||n.info.name==="astro")){let m=ne.join(e,i);if(V.existsSync(m)&&V.statSync(m).isDirectory()){let v=V.readdirSync(m,{withFileTypes:!0}).find(k=>!(!k.isDirectory()||s&&k.name===s||n.info.name==="astro"&&(k.name==="_routes.json"||k.name==="_worker.js")));v&&(i=`${i}/${v.name}`)}}let c=ne.join(t,"assets",l||"");V.mkdirSync(c,{recursive:!0});let u=ne.join(e,i);if(V.existsSync(u)&&V.statSync(u).isDirectory()){d.info(`copying assets from /${i} to output/assets...`);try{s?(d.info(`excluding ${s}`),tr(d,u,c,{exclude:s})):tr(d,u,c)}catch(m){d.error(m,{prefix:"Failed to copy assets:"})}}else d.info("No assets to copy or assets directory not found");let p=ne.join(e,"webflow.json");V.existsSync(p)?(d.info("including webflow.json in output..."),V.copyFileSync(p,ne.join(t,"webflow.json"))):d.warn("webflow.json not found at project root; deploy may fail framework detection");let f=null;for(let m of[".json",".jsonc"]){let h=ne.join(e,`clouduser.wrangler${m}`);if(V.existsSync(h)){f=h;break}}if(f){d.info("including user wrangler config in output..."),V.copyFileSync(f,ne.join(t,"clouduser.wrangler.json"));let m=ne.join(e,"clouduser","migrations");if(V.existsSync(m)){d.info("copying migrations from clouduser/migrations to output/migrations...");let h=ne.join(t,"migrations");tr(d,m,h)}}}async function Y2(e){let t=`${e}.tar.gz`;try{return await yb.create({gzip:!0,file:t,cwd:ne.dirname(e)},[ne.basename(e)]),d.info(`Tarball created: ${t}`),t}catch(n){throw new g(n,{prefix:"Failed to create tarball:"})}}ke();le();J();var X2="DUPLICATE_ENVIRONMENT_MOUNT",Q2="ENVIRONMENT_MOUNT_MISMATCH",eA="DUPLICATE_ENVIRONMENT_BRANCH",tA="INVALID_MOUNT_PATH_FORMAT",nA="INVALID_PROJECT_ID",kb={[X2]:"An environment with this mount path already exists for this site. Please choose a different mount path.",[Q2]:"This environment already exists with a different mount path. Please create a new environment or use the existing environment's mount path.",[eA]:"An environment with this branch already exists for this project.",[tA]:"Mount path format is invalid. It must start with a / and be followed by at least one character (e.g., /app).",[nA]:"Invalid project ID. This project may have been deleted or belongs to a different site. Please remove the 'project_id' from your webflow.json file and redeploy to create a new project."};function xb(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 n=t.msg||"",r=t.status??t.code,o=typeof r=="number"?r:typeof r=="string"&&/^\d+$/.test(r)?Number(r):void 0;if(d.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 kb)if(n.includes(i))return kb[i];return`An unknown error occurred. Error code: ${t.code||"N/A"}, Message: ${t.msg||"No message provided"}`}var no=w(require("fs")),$u=require("child_process");J();te();Ce();var Cb=104857600;function Eb(e){if(e===0)return"0 B";let t=1024,n=["B","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(t));return`${parseFloat((e/Math.pow(t,r)).toFixed(1))} ${n[r]}`}function rA(){try{let e=(0,$u.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,$u.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 Bu(e,t,n){let r=await fetch(`${I}${t}`,{method:n.method,headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:n.body?JSON.stringify(n.body):void 0});if(!r.ok){let o=await r.text(),i;try{i=JSON.parse(o)}catch{i={msg:o}}let s=xb(i);throw new Error(s)}return r.json()}async function Fb(e,t,n,r){let{manifest:o}=Q(),i=o.cloud||{},s=i.project_id,a=i.framework;if(!a)throw new g("No framework specified in webflow.json. Please ensure your webflow.json has a cloud.framework property");let l=await oA({siteId:e.siteId,apiToken:e.accessToken,framework:a,mountPath:n,environment:t,projectId:s,projectName:r?.projectName,description:r?.description,directory:r?.directory,version:rA()});return!s&&l.project_id&&(d.info("\u{1F4DD} Updating webflow.json with project ID..."),se({cloud:{...i,project_id:l.project_id}})),l}async function oA(e){let{siteId:t,framework:n,mountPath:r,environment:o,version:i,projectId:s,projectName:a,description:l,directory:c}=e,u={framework:n,mount_path:r,environment:o,version:i};s&&(u.project_id=s),a&&(u.project_name=a),l&&(u.description=l),c&&(u.app_path=c);let p=t?`/cosmic/${t}/cli-deploy-init`:"/cosmic/cli-deploy-init";return Bu(e.apiToken,p,{method:"POST",body:u})}async function Sb(e,t){let{siteId:n,accessToken:r}=e,o=n?`/cosmic/${n}/cli-project-environments/${t}`:`/cosmic/cli-project-environments/${t}`;return Bu(r,o,{method:"GET"})}async function _b(e){let{siteId:t,accessToken:n}=e,r=t?`/cosmic/${t}/cli-projects`:"/cosmic/cli-projects";return Bu(n,r,{method:"GET"})}async function Ab(e,t){if(!no.existsSync(e))throw new Error(`Tarball not found at ${e}`);let n=no.statSync(e);if(n.size>Cb)throw new Error(`Build output is too large (${Eb(n.size)}). Maximum allowed size is ${Eb(Cb)}.`);let r=no.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([r],{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 g(l,{prefix:`${N} Upload failed with response:`})}}async function Tb(e,t){if(!e||e==="undefined")throw new g("Completion URL is undefined or invalid");let n=new URL(e);t&&n.searchParams.set("failed","true");let r=await fetch(n.toString(),{method:"GET"});if(!r.ok)throw new g(`Failed to trigger deployment: ${r.status} ${r.statusText}`)}var Ob=require("webflow-api");le();le();te();function Nu(e){return new Ob.WebflowClient({accessToken:e,environment:{base:`${I}/v2`,dataApi:`${I}/v2`,contentDeliveryApi:`${xi}/v2`}})}async function ai(e,t){try{let r=await Nu(e).sites.get(t);return{id:r.id||t,displayName:r.displayName||"Unknown Site",shortName:r.shortName||"unknown-site",customDomains:r.customDomains?.map(o=>({id:o.id||"",url:o.url||""}))||[]}}catch(n){throw new g(n,{prefix:"Error fetching site details:"})}}async function Lu(e,t){try{return{customDomains:(await Nu(e).sites.getCustomDomain(t)).customDomains?.map(o=>({id:o.id||"",url:o.url||""}))||[]}}catch(n){throw new g(n,{prefix:"Error fetching custom domains:"})}}async function Mu(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 g(t,{prefix:`Failed to fetch manifest from ${e}:`})}}function Wu(e,t,n){return e.cosmic&&Array.isArray(e.cosmic)?e.cosmic.some(r=>{if(r.mountPath!==t)return!1;if(!n)return!0;if(r.workerUrl)try{return new URL(r.workerUrl).hostname.split(".")[0]===n}catch{return!1}return!1}):!1}async function Pb(e,t,n){try{let r=Nu(e),o=await ai(e,t),i=[];if(n?.domains&&n.domains.length>0)for(let s of n.domains){let a=o.customDomains?.find(l=>l.url===s);a?.id&&i.push(a.id)}await r.sites.publish(t,{customDomains:i,publishToWebflowSubdomain:n?.publishToWebflowSubdomain??!0})}catch(r){throw new g(r,{prefix:"Error publishing site:"})}}Me();$a();J();async function Ib(e,t,n){let{siteId:r,accessToken:o}=e;if(!r)throw new Error("Site ID is required for mount path validation. Standalone apps skip this step.");let i=cr("Validating mount path configuration...").start();try{let s=await ai(o,r),a=await Lu(o,r),l=[`${s.shortName}.webflow.io`,...a.customDomains?.map(h=>h.url)||[]],c=0;i.text=`Validating ${l.length} domain(s) for mount path: ${t}... (0/${l.length})`;let u=l.map(async h=>{try{let v=await Mu(h),k=Array.isArray(v.cosmic)?v.cosmic.map(P=>P.mountPath).filter(P=>typeof P=="string"):[],T=Wu(v,t,n);return{domain:h,mountPaths:k,isValid:T===!0}}catch(v){return{domain:h,mountPaths:[],isValid:!1,error:v instanceof Error?v.message:String(v)}}finally{c++,i.text=`Validating ${l.length} domain(s) for mount path: ${t}... (${c}/${l.length})`}}),p=await Promise.all(u),f=p.some(h=>!h.isValid),m=p.every(h=>h.isValid);return i.succeed("Mount path validation completed"),{isValid:m,domains:p,needsPublishing:f}}catch(s){throw i.fail("Mount path validation failed"),s}}async function jb(e,t,n){let{siteId:r,accessToken:o}=e;if(!r)return[];try{let i=await ai(o,r),s=await Lu(o,r),l=[`${i.shortName}.webflow.io`,...s.customDomains?.map(u=>u.url)||[]].map(async u=>{try{let p=await Mu(u),f=Wu(p,t,n);return{domain:u,isValid:f}}catch(p){return d.debug(`Could not verify mount path for ${u}: ${p}`),{domain:u,isValid:!1}}});return(await Promise.all(l)).filter(u=>u.isValid).map(u=>u.domain)}catch(i){return d.debug(`Error getting valid domains: ${i}`),[]}}function Rb(e,t){return e.map(n=>`${n.startsWith("localhost")||n.startsWith("127.0.0.1")?"http":"https"}://${n}${t}`)}async function $b(e){let t=e.map(r=>({name:r,value:r,checked:!0})),n=await Fi({message:"Select which domains you want to publish to update the mount path configuration:",choices:t,validate:r=>r.length===0?"Please select at least one domain to publish to.":!0});return n??[]}async function Bb(){return await Ae({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 Uu(e,t){let{siteId:n,accessToken:r}=e;if(!n)throw new Error("Site ID is required to publish. Standalone apps do not use this.");let o=cr(`Publishing site to ${t.length} domain(s)...`).start();try{let s=`${(await ai(r,n)).shortName}.webflow.io`,a=t.includes(s),l=t.filter(c=>c!==s);await Pb(r,n,{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")}}var or=w(require("path"));ke();J();_e();le();Oe();var ia=w(require("fs"));te();Ce();le();Me();te();J();async function ra(e){let t=await fetch(`${I}/v2/workspaces`,{method:"GET",headers:{Authorization:`Bearer ${e}`}});if(!t.ok){let r=await t.text(),o={};try{o=JSON.parse(r)}catch{}throw t.status===403&&o.code==="missing_scopes"?new g(`Missing required scopes for workspace access.
161
161
  ${o.message??""}
162
162
  Re-run 'webflow auth login' to grant the necessary permissions.`):new g(`Failed to fetch workspaces: ${t.status} ${t.statusText}`+(o.message?`
163
- ${o.message}`:""))}return(await t.json()).workspaces}async function oa(e){if(e.length===1)return e[0];let t=await Le({message:"Select the workspace for this project:",choices:e.map(n=>({name:n.name,value:n}))});return t||(d.warn(`Auto fallback to first workspace: ${e[0].name}`),e[0])}var aa=async()=>{try{let e=Du(),t=vu();return[...new Set([...e,...t])]}catch(e){return d.error(e,{prefix:"Failed to get available scaffolds:"}),[]}},iA=async(e,t,n)=>{let r;if("content"in n)r=n.content.files;else{let l=n[t];if(!l)throw new Error(`Scaffold "${t}" not found`);r=l}let o=r.find(l=>l.includes(Rn));if(!o)throw new Error(`No ${Rn} found in scaffold "${t}"`);await ia.promises.mkdir(e,{recursive:!0});let s=(await ia.promises.readFile(o,"utf8")).replace(Us,e),a=or.join(e,Rn);await ia.promises.writeFile(a,s,"utf8")},Vu=async(e,t,n=Ws,r,o=fe.Existing,i)=>{if(fe.New,o===fe.New){try{let a=await Cu(n);await sA(e,t,a.scaffoldId,{content:a},n,i)}catch(a){if(a instanceof ve){let l=a.message;throw a.supportedIds?.length&&(l+=`
163
+ ${o.message}`:""))}return(await t.json()).workspaces}async function oa(e){if(e.length===1)return e[0];let t=await Le({message:"Select the workspace for this project:",choices:e.map(n=>({name:n.name,value:n}))});return t||(d.warn(`Auto fallback to first workspace: ${e[0].name}`),e[0])}var aa=async()=>{try{let e=Du(),t=vu();return[...new Set([...e,...t])]}catch(e){return d.error(e,{prefix:"Failed to get available scaffolds:"}),[]}},iA=async(e,t,n)=>{let r;if("content"in n)r=n.content.files;else{let l=n[t];if(!l)throw new Error(`Scaffold "${t}" not found`);r=l}let o=r.find(l=>l.includes(Rn));if(!o)throw new Error(`No ${Rn} found in scaffold "${t}"`);await ia.promises.mkdir(e,{recursive:!0});let s=(await ia.promises.readFile(o,"utf8")).replace(Us,e),a=or.join(e,Rn);await ia.promises.writeFile(a,s,"utf8")},Vu=async(e,t,n=Ws,r,o=fe.Existing,i)=>{if(o===fe.New)throw new g("Standalone projects are only available in @next builds. Install with: npm i -g @webflow/webflow-cli@next");if(o===fe.New){try{let a=await Cu(n);await sA(e,t,a.scaffoldId,{content:a},n,i)}catch(a){if(a instanceof ve){let l=a.message;throw a.supportedIds?.length&&(l+=`
164
164
  Available frameworks: ${a.supportedIds.join(", ")}`),new g(l)}throw a}return}try{let a=await Vs(n);await aA(e,t,n,{content:a},r)}catch(a){if(a instanceof ve){let l=a.message;throw a.supportedIds?.length&&(l+=`
165
165
  Available frameworks: ${a.supportedIds.join(", ")}`),new g(l)}throw a}},sA=async(e,t,n,r,o,i)=>{let s=`./${e}`,a="content"in r&&typeof r.content=="object"&&"extractionRoot"in r.content?r.content:null,l=a?or.dirname(a.extractionRoot):null;try{let c=Date.now(),u=await Y(),p;if(i)p={id:i};else{let h=await ra(u);if(h.length===0)throw new g("No workspaces found in your account. Please make sure you have at least one workspace.");p=await oa(h)}await Zo(e,t,n,r,void 0,void 0),process.chdir(s);let f=o??n;se({cloud:{framework:f,workspace_id:p.id}}),Ot({apiToken:u,directory:"."}),process.env.WEBFLOW_API_TOKEN=u;let m=Date.now()-c;try{await G.forCloud({authToken:u}).sendUsage("project_init",{scaffold:f,scaffoldName:f,initMode:fe.New,workspaceId:p.id,totalDuration:m,mountPath:t})}catch{}}catch(c){if(c instanceof g||c instanceof Error&&c.message.includes("OAuth")){try{await Zo(e,t,n,r),process.chdir(s),se({cloud:{framework:o??n}}),Ot({directory:"."})}catch{}throw d.error("Project scaffold was created, but authentication failed."),d.error("To set up Webflow credentials later, run:"),d.error(" webflow auth login"),sa(e,fe.New),new g(c,{skipLogging:!0})}throw c}finally{if(l)try{zu.default.removeSync(l)}catch{}}sa(e,fe.New)},aA=async(e,t,n,r,o)=>{let i=`./${e}`,s=null,a=!1,l="content"in r&&typeof r.content=="object"&&"extractionRoot"in r.content?r.content:null,c=l?or.dirname(l.extractionRoot):null;try{let u=Date.now();await iA(e,n,r),process.chdir(i);let{manifest:p}=Q(),f=await be(p,{site:o}),m=f.accessToken,h=f.siteId;if(s=G.forCloud({authToken:m,siteId:h}),await Zo(".",t,n,r,h,m),h){d.info("Running devlink export to fetch your Webflow components...");try{await lA({site:h,apiToken:m}),a=!0}catch(k){d.error(k,{prefix:"Failed to run devlink export:"}),d.info("You can manually run 'npx webflow devlink export' later to export your components.")}}let v=Date.now()-u;await s?.sendUsage("project_init",{scaffold:n,scaffoldName:n,devlinkSyncStatus:a,totalDuration:v,mountPath:t}),sa(e,fe.Existing)}catch(u){throw d.error(u,{prefix:"Error during Webflow authentication:"}),await Zo(".",t,n,r),d.error("Project scaffold was created, but authentication failed."),d.error("To set up Webflow credentials later, run:"),d.error(" webflow auth login"),sa(e,fe.Existing),new g(u,{skipLogging:!0})}finally{if(c)try{zu.default.removeSync(c)}catch{}}},lA=async e=>{let{exportComponents:t}=await Promise.resolve().then(()=>(Uc(),iy));await t({site:e.site,apiToken:e.apiToken})},cA=e=>{if(e?.skipMountPathCheck!==void 0)return e.skipMountPathCheck;try{let{manifest:t}=Q();return wu(t)?!0:t.cloud?.skipMountPathCheck===!0}catch{return!1}},uA=async(e,t,n,r)=>{d.info("\u{1F50D} Validating mount path configuration...");let o=await Ib(e,t,n);if(o.isValid)d.info(`${ee} Mount path validation passed`);else if(d.info(`
166
166
  \u{1F4CB} Mount path validation results:`),o.domains.forEach(i=>{let s=i.isValid?ee:N,a=i.isValid?`(mountPath: ${i.mountPaths[0]})`:"(no matching mountPath)";d.info(`${s} ${i.domain} ${a}`),i.error&&d.debug(` Error: ${i.error}`)}),o.needsPublishing)if(r){d.info("\u{1F680} Auto-publishing site to update mount path configuration...");let i=o.domains.filter(s=>!s.isValid).map(s=>s.domain);await Uu(e,i)}else if(await Bb()&&mt()){let s=o.domains.filter(l=>!l.isValid).map(l=>l.domain),a=await $b(s);await Uu(e,a)}else d.warn("\u26A0\uFE0F Continuing with deployment without publishing...")},dA=async(e,t,n,r)=>{d.info(`
@@ -178,12 +178,12 @@ ${ee} Deployment triggered successfully!`);let i;try{let{manifest:s}=Q();wu(s)&&
178
178
  ${r.msg??""}
179
179
  Re-run 'webflow auth login' to grant the necessary permissions.`):new g(r.msg??"You don't have permission to create apps in this workspace."):e===404?new g("Cloud app creation is not available. The workspace may not exist or the feature is not enabled for your account."):e===409?r.msg?.includes("No new sites can be created")?new g(`Failed to create app: your workspace has reached its app limit.
180
180
  Upgrade your plan or remove unused apps to create a new one.`):new g(r.msg??"A Cloud app creation request is already being processed. Please wait and try again."):new g(`Failed to create app: ${e} ${t}`+(r.msg?`
181
- ${r.msg}`:""))}We();ke();te();Oe();Me();J();We();function yA(){return!0}async function Vb(e={}){wA(e);let t=await bA(e,Q().manifest);return{credentials:t.credentials,workspaceId:t.workspaceId,manifest:Q().manifest}}function wA(e){if(e.siteId&&e.workspaceId)throw new g("--site-id and --workspace-id are mutually exclusive. Pass exactly one.")}async function bA(e,t){let n=yA();if(e.siteId)return Ub(t,e.siteId);if(e.workspaceId&&n)return zb(e.workspaceId);if(t.siteId)return Ub(t,t.siteId);if(t.cloud?.workspace_id&&n)return zb(t.cloud.workspace_id);if(process.env.WEBFLOW_SITE_ID)return n&&d.info("Using site from WEBFLOW_SITE_ID env var. Pass --site-id explicitly or unset to see the deploy mode picker."),Ju(t);if(oe()||!mt())throw new g(n?`No identity configured for this project.
181
+ ${r.msg}`:""))}We();ke();te();Oe();Me();J();We();function yA(){return!1}async function Vb(e={}){wA(e);let t=await bA(e,Q().manifest);return{credentials:t.credentials,workspaceId:t.workspaceId,manifest:Q().manifest}}function wA(e){if(e.siteId&&e.workspaceId)throw new g("--site-id and --workspace-id are mutually exclusive. Pass exactly one.")}async function bA(e,t){let n=yA();if(e.siteId)return Ub(t,e.siteId);if(e.workspaceId&&n)return zb(e.workspaceId);if(t.siteId)return Ub(t,t.siteId);if(t.cloud?.workspace_id&&n)return zb(t.cloud.workspace_id);if(process.env.WEBFLOW_SITE_ID)return n&&d.info("Using site from WEBFLOW_SITE_ID env var. Pass --site-id explicitly or unset to see the deploy mode picker."),Ju(t);if(oe()||!mt())throw new g(n?`No identity configured for this project.
182
182
  Pass one of:
183
183
  --site-id <id> (deploy to an existing Webflow site)
184
184
  --workspace-id <id> (create a new standalone Cloud app)
185
185
  Or run 'webflow cloud init' to scaffold a new project.`:`No identity configured for this project.
186
- Pass --site-id <id> or run 'webflow cloud init' to scaffold a new project.`);return n?vA(t):Ju(t)}async function Ub(e,t){return{credentials:await be(e,{site:t})}}async function Ju(e){return{credentials:await be(e,{})}}async function zb(e){let t=await Y();return{workspaceId:e,credentials:{accessToken:t,siteId:""}}}async function DA(){let e=await Y(),t=await ra(e);if(t.length===0)throw new g("No workspaces found in your account. Please make sure you have at least one workspace.");let n=await oa(t);return se({cloud:{workspace_id:n.id}}),{workspaceId:n.id,credentials:{accessToken:e,siteId:""}}}async function vA(e){let t=await Le({message:"This project 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 g("Deploy cancelled.",{skipLogging:!0});return t==="standalone"?DA():Ju(e)}var qb=e=>{let t=e.command("cloud").description("Create and manage Webflow Cloud projects"),n=!0;t.command("create").description(n?"[Deprecated] Use 'webflow cloud init' instead. Quick non-interactive scaffold for site-attached projects (hardcoded to /app).":"Quick non-interactive scaffold for site-attached projects (hardcoded to /app).").argument("<name>","Project name").option("-f, --framework <framework>","Framework to use","nextjs").action(async(i,s)=>{n&&d.warn("\u26A0\uFE0F 'webflow cloud create' is deprecated and will be removed in a future major release. Use 'webflow cloud init' instead.");let{framework:a}=s;if(!(await aa()).find(u=>u===a)){d.error(`Framework ${a} not found`);return}await Vu(i,"/app",a,void 0,fe.Existing,void 0)}),t.command("list").description("Get list of project templates that can be used for `init`").action(async()=>{let i=await aa();d.info("Available project templates:"),i.length>0?i.forEach(s=>d.info(`- ${s}`)):d.info("No templates found.")});let r=t.command("init").description("Bootstrap a new Webflow Cloud project").option("-n, --project-name <name>","Project name").option("-f, --framework <framework>","Framework to use (e.g., astro, nextjs)").option("-m, --mount <mount>",n?"Mount path (default: '/' for standalone, '/app' for site-attached)":"Mount path (e.g., /app)").option("-s, --site-id <siteId>","Webflow site ID to connect to");n&&(r.option("--new","Create a standalone project without connecting to a site"),r.option("-w, --workspace-id <workspaceId>","Workspace ID for standalone projects (skips workspace picker)")),r.action(async i=>{if(i.workspaceId&&i.siteId)throw new g("--workspace-id and --site-id are mutually exclusive. Pass exactly one.");let s=process.stdin.isTTY,a=await aa(),l={};if(s&&mt()){if(n&&i?.new!==!0&&(l.initMode=await Le({message:"Where do you want to deploy this app?",choices:[{name:"New domain",value:fe.New},{name:"Existing site",value:fe.Existing}],default:fe.New})),i?.framework||(l.scaffoldName=await Le({message:"Which framework would you like to use?",choices:a.map(k=>({name:k,value:k})),default:"astro"})),!i.projectName){let k=await Te({message:"What would you like to name your app?",validate:T=>{let P=T.trim();return P===""?"App name cannot be empty":P.length<ln||P.length>cn?`App name must be between ${ln} and ${cn} characters`:!0}});if(k==null)throw new g("When --no-input mode is enabled please provide the --project-name option or the cloud.project_id manifest field.");l.projectName=k}let v=n&&(i.new===!0||l.initMode===fe.New);if(!i.mount&&!v){let k=await Te({message:"What path do you want to use locally? (e.g., /app)",default:"/app"});l.mountPath=ir(k)}}let c=i.projectName||l.projectName,u=i.framework||l.scaffoldName,p=n?i.new?fe.New:l.initMode??(oe()?fe.New:fe.Existing):fe.Existing,f=p===fe.New?i.mount||l.mountPath||"/":i.mount||l.mountPath||"/app",m=i.siteId,h=ir(f);if(!c||typeof c!="string"||c.trim()==="")throw new g("--project-name cannot be empty");if(c.length<ln||c.length>cn)throw new g(`--project-name must be between ${ln} and ${cn} characters`);if(!u)throw new g("--framework is required");if(!a.includes(u)){let v=a.join(`
186
+ Pass --site-id <id> or run 'webflow cloud init' to scaffold a new project.`);return n?vA(t):Ju(t)}async function Ub(e,t){return{credentials:await be(e,{site:t})}}async function Ju(e){return{credentials:await be(e,{})}}async function zb(e){let t=await Y();return{workspaceId:e,credentials:{accessToken:t,siteId:""}}}async function DA(){let e=await Y(),t=await ra(e);if(t.length===0)throw new g("No workspaces found in your account. Please make sure you have at least one workspace.");let n=await oa(t);return se({cloud:{workspace_id:n.id}}),{workspaceId:n.id,credentials:{accessToken:e,siteId:""}}}async function vA(e){let t=await Le({message:"This project 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 g("Deploy cancelled.",{skipLogging:!0});return t==="standalone"?DA():Ju(e)}var qb=e=>{let t=e.command("cloud").description("Create and manage Webflow Cloud projects"),n=!1;t.command("create").description(n?"[Deprecated] Use 'webflow cloud init' instead. Quick non-interactive scaffold for site-attached projects (hardcoded to /app).":"Quick non-interactive scaffold for site-attached projects (hardcoded to /app).").argument("<name>","Project name").option("-f, --framework <framework>","Framework to use","nextjs").action(async(i,s)=>{n&&d.warn("\u26A0\uFE0F 'webflow cloud create' is deprecated and will be removed in a future major release. Use 'webflow cloud init' instead.");let{framework:a}=s;if(!(await aa()).find(u=>u===a)){d.error(`Framework ${a} not found`);return}await Vu(i,"/app",a,void 0,fe.Existing,void 0)}),t.command("list").description("Get list of project templates that can be used for `init`").action(async()=>{let i=await aa();d.info("Available project templates:"),i.length>0?i.forEach(s=>d.info(`- ${s}`)):d.info("No templates found.")});let r=t.command("init").description("Bootstrap a new Webflow Cloud project").option("-n, --project-name <name>","Project name").option("-f, --framework <framework>","Framework to use (e.g., astro, nextjs)").option("-m, --mount <mount>",n?"Mount path (default: '/' for standalone, '/app' for site-attached)":"Mount path (e.g., /app)").option("-s, --site-id <siteId>","Webflow site ID to connect to");n&&(r.option("--new","Create a standalone project without connecting to a site"),r.option("-w, --workspace-id <workspaceId>","Workspace ID for standalone projects (skips workspace picker)")),r.action(async i=>{if(i.workspaceId&&i.siteId)throw new g("--workspace-id and --site-id are mutually exclusive. Pass exactly one.");let s=process.stdin.isTTY,a=await aa(),l={};if(s&&mt()){if(n&&i?.new!==!0&&(l.initMode=await Le({message:"Where do you want to deploy this app?",choices:[{name:"New domain",value:fe.New},{name:"Existing site",value:fe.Existing}],default:fe.New})),i?.framework||(l.scaffoldName=await Le({message:"Which framework would you like to use?",choices:a.map(k=>({name:k,value:k})),default:"astro"})),!i.projectName){let k=await Te({message:"What would you like to name your app?",validate:T=>{let P=T.trim();return P===""?"App name cannot be empty":P.length<ln||P.length>cn?`App name must be between ${ln} and ${cn} characters`:!0}});if(k==null)throw new g("When --no-input mode is enabled please provide the --project-name option or the cloud.project_id manifest field.");l.projectName=k}let v=n&&(i.new===!0||l.initMode===fe.New);if(!i.mount&&!v){let k=await Te({message:"What path do you want to use locally? (e.g., /app)",default:"/app"});l.mountPath=ir(k)}}let c=i.projectName||l.projectName,u=i.framework||l.scaffoldName,p=n?i.new?fe.New:l.initMode??(oe()?fe.New:fe.Existing):fe.Existing,f=p===fe.New?i.mount||l.mountPath||"/":i.mount||l.mountPath||"/app",m=i.siteId,h=ir(f);if(!c||typeof c!="string"||c.trim()==="")throw new g("--project-name cannot be empty");if(c.length<ln||c.length>cn)throw new g(`--project-name must be between ${ln} and ${cn} characters`);if(!u)throw new g("--framework is required");if(!a.includes(u)){let v=a.join(`
187
187
  - `);throw new g(`--framework "${u}" not found
188
188
 
189
189
  Available frameworks: