@capgo/cli 7.58.0 → 7.58.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -109,7 +109,7 @@ const config: CapacitorConfig = ${(0,gM.formatJSObject)(t)};
109
109
  export default config;
110
110
  `}});function IM(){try{return gg.default.statSync("/.dockerenv"),!0}catch{return!1}}function TM(){try{return gg.default.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function yg(){return mg===void 0&&(mg=IM()||TM()),mg}var gg,mg,Gx=Qe(()=>{gg=pe(require("node:fs"),1)});function ea(){return Dg===void 0&&(Dg=RM()||yg()),Dg}var Wx,Dg,RM,bg=Qe(()=>{Wx=pe(require("node:fs"),1);Gx();RM=()=>{try{return Wx.default.statSync("/run/.containerenv"),!0}catch{return!1}}});var wg,Jx,Xx,Yx,pn,vg=Qe(()=>{wg=pe(require("node:process"),1),Jx=pe(require("node:os"),1),Xx=pe(require("node:fs"),1);bg();Yx=()=>{if(wg.default.platform!=="linux")return!1;if(Jx.default.release().toLowerCase().includes("microsoft"))return!ea();try{return Xx.default.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!ea():!1}catch{return!1}},pn=wg.default.env.__IS_WSL_TEST__?Yx:Yx()});var Cg,Zx,Qx,eA,BM,Eg,rr,_g=Qe(()=>{Cg=pe(require("node:process"),1),Zx=require("node:buffer"),Qx=require("node:util"),eA=pe(require("node:child_process"),1),BM=(0,Qx.promisify)(eA.default.execFile),Eg=()=>`${Cg.default.env.SYSTEMROOT||Cg.default.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,rr=async(t,e={})=>{let{powerShellPath:r,...n}=e,o=rr.encodeCommand(t);return BM(r??Eg(),[...rr.argumentsPrefix,o],{encoding:"utf8",...n})};rr.argumentsPrefix=["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"];rr.encodeCommand=t=>Zx.Buffer.from(t,"utf16le").toString("base64");rr.escapeArgument=t=>`'${String(t).replaceAll("'","''")}'`});var rA,nA,To,NM,LM,jM,Ul,tA,oA,iA,aA,sA=Qe(()=>{rA=require("node:util"),nA=pe(require("node:child_process"),1),To=pe(require("node:fs/promises"),1);vg();_g();vg();NM=(0,rA.promisify)(nA.default.execFile),LM=(()=>{let t="/mnt/",e;return async function(){if(e)return e;let r="/etc/wsl.conf",n=!1;try{await To.default.access(r,To.constants.F_OK),n=!0}catch{}if(!n)return t;let o=await To.default.readFile(r,{encoding:"utf8"}),i=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(o);return i?(e=i.groups.mountPoint.trim(),e=e.endsWith("/")?e:`${e}/`,e):t}})(),jM=async()=>`${await LM()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,Ul=pn?jM:Eg,oA=async()=>(tA??=(async()=>{try{let t=await Ul();return await To.default.access(t,To.constants.X_OK),!0}catch{return!1}})(),tA),iA=async()=>{let t=await Ul(),e=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:r}=await rr(e,{powerShellPath:t});return r.trim()},aA=async t=>{if(/^[a-z]+:\/\//i.test(t))return t;try{let{stdout:e}=await NM("wslpath",["-aw",t],{encoding:"utf8"});return e.trim()}catch{return t}}});function Ro(t,e,r){let n=o=>Object.defineProperty(t,e,{value:o,enumerable:!0,writable:!0});return Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get(){let o=r();return n(o),o},set(o){n(o)}}),t}var uA=Qe(()=>{});async function Sg(){if(lA.default.platform!=="darwin")throw new Error("macOS only");let{stdout:t}=await UM("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),r=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(t)?.groups.id??"com.apple.Safari";return r==="com.apple.safari"?"com.apple.Safari":r}var cA,lA,fA,UM,dA=Qe(()=>{cA=require("node:util"),lA=pe(require("node:process"),1),fA=require("node:child_process"),UM=(0,cA.promisify)(fA.execFile)});async function mA(t,{humanReadableOutput:e=!0,signal:r}={}){if(pA.default.platform!=="darwin")throw new Error("macOS only");let n=e?[]:["-ss"],o={};r&&(o.signal=r);let{stdout:i}=await MM("osascript",["-e",t,n],o);return i.trim()}var pA,hA,xg,MM,gA=Qe(()=>{pA=pe(require("node:process"),1),hA=require("node:util"),xg=require("node:child_process"),MM=(0,hA.promisify)(xg.execFile)});async function Ag(t){return mA(`tell application "Finder" to set app_path to application file id "${t}" as string
111
111
  tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var yA=Qe(()=>{gA()});async function Fg(t=qM){let{stdout:e}=await t("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),r=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(e);if(!r)throw new Ml(`Cannot find Windows browser in stdout: ${JSON.stringify(e)}`);let{id:n}=r.groups,o=wA[n];if(!o)throw new Ml(`Unknown browser ID: ${n}`);return o}var DA,bA,qM,wA,Og,Ml,Pg=Qe(()=>{DA=require("node:util"),bA=require("node:child_process"),qM=(0,DA.promisify)(bA.execFile),wA={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},Og=new Map(Object.entries(wA)),Ml=class extends Error{}});async function kg(){if(ql.default.platform==="darwin"){let t=await Sg();return{name:await Ag(t),id:t}}if(ql.default.platform==="linux"){let{stdout:t}=await HM("xdg-mime",["query","default","x-scheme-handler/http"]),e=t.trim();return{name:VM(e.replace(/.desktop$/,"").replace("-"," ")),id:e}}if(ql.default.platform==="win32")return Fg();throw new Error("Only macOS, Linux, and Windows are supported")}var vA,ql,CA,HM,VM,EA=Qe(()=>{vA=require("node:util"),ql=pe(require("node:process"),1),CA=require("node:child_process");dA();yA();Pg();Pg();HM=(0,vA.promisify)(CA.execFile),VM=t=>t.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase())});var Hl,zM,_A,SA=Qe(()=>{Hl=pe(require("node:process"),1),zM=!!(Hl.default.env.SSH_CONNECTION||Hl.default.env.SSH_CLIENT||Hl.default.env.SSH_TTY),_A=zM});var Rg={};Qr(Rg,{apps:()=>Bo,default:()=>WM,openApp:()=>GM});function FA(t){if(typeof t=="string"||Array.isArray(t))return t;let{[AA]:e}=t;if(!e)throw new Error(`${AA} is not supported`);return e}function ks({[ta]:t},{wsl:e}={}){if(e&&pn)return FA(e);if(!t)throw new Error(`${ta} is not supported`);return FA(t)}var Ig,Tg,kA,$A,zl,PA,Vl,$g,xA,ta,AA,OA,Ps,KM,GM,Bo,WM,Bg=Qe(()=>{Ig=pe(require("node:process"),1),Tg=pe(require("node:path"),1),kA=require("node:url"),$A=pe(require("node:child_process"),1),zl=pe(require("node:fs/promises"),1);sA();_g();uA();EA();bg();SA();PA={},Vl=Symbol("fallbackAttempt"),$g=PA.url?Tg.default.dirname((0,kA.fileURLToPath)(PA.url)):"",xA=Tg.default.join($g,"xdg-open"),{platform:ta,arch:AA}=Ig.default,OA=async(t,e)=>{if(t.length===0)return;let r=[];for(let n of t)try{return await e(n)}catch(o){r.push(o)}throw new AggregateError(r,"Failed to open in all supported apps")},Ps=async t=>{t={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...t};let e=t[Vl]===!0;if(delete t[Vl],Array.isArray(t.app))return OA(t.app,c=>Ps({...t,app:c,[Vl]:!0}));let{name:r,arguments:n=[]}=t.app??{};if(n=[...n],Array.isArray(r))return OA(r,c=>Ps({...t,app:{name:c,arguments:n},[Vl]:!0}));if(r==="browser"||r==="browserPrivate"){let c={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge","com.apple.safari":"safari"},f={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},d;if(pn){let p=await iA();d=Og.get(p)??{}}else d=await kg();if(d.id in c){let p=c[d.id.toLowerCase()];if(r==="browserPrivate"){if(p==="safari")throw new Error("Safari doesn't support opening in private mode via command line");n.push(f[p])}return Ps({...t,app:{name:Bo[p],arguments:n}})}throw new Error(`${d.name} is not supported as a default browser`)}let o,i=[],a={},s=!1;if(pn&&!ea()&&!_A&&!r&&(s=await oA()),ta==="darwin")o="open",t.wait&&i.push("--wait-apps"),t.background&&i.push("--background"),t.newInstance&&i.push("--new"),r&&i.push("-a",r);else if(ta==="win32"||s){o=await Ul(),i.push(...rr.argumentsPrefix),pn||(a.windowsVerbatimArguments=!0),pn&&t.target&&(t.target=await aA(t.target));let c=["$ProgressPreference = 'SilentlyContinue';","Start"];t.wait&&c.push("-Wait"),r?(c.push(rr.escapeArgument(r)),t.target&&n.push(t.target)):t.target&&c.push(rr.escapeArgument(t.target)),n.length>0&&(n=n.map(f=>rr.escapeArgument(f)),c.push("-ArgumentList",n.join(","))),t.target=rr.encodeCommand(c.join(" ")),t.wait||(a.stdio="ignore")}else{if(r)o=r;else{let c=!$g||$g==="/",f=!1;try{await zl.default.access(xA,zl.constants.X_OK),f=!0}catch{}o=Ig.default.versions.electron??(ta==="android"||c||!f)?"xdg-open":xA}n.length>0&&i.push(...n),t.wait||(a.stdio="ignore",a.detached=!0)}ta==="darwin"&&n.length>0&&i.push("--args",...n),t.target&&i.push(t.target);let u=$A.default.spawn(o,i,a);return t.wait?new Promise((c,f)=>{u.once("error",f),u.once("close",d=>{if(!t.allowNonzeroExitCode&&d!==0){f(new Error(`Exited with code ${d}`));return}c(u)})}):e?new Promise((c,f)=>{u.once("error",f),u.once("spawn",()=>{u.once("close",d=>{if(u.off("error",f),d!==0){f(new Error(`Exited with code ${d}`));return}u.unref(),c(u)})})}):(u.unref(),new Promise((c,f)=>{u.once("error",f),u.once("spawn",()=>{u.off("error",f),c(u)})}))},KM=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a `target`");return Ps({...e,target:t})},GM=(t,e)=>{if(typeof t!="string"&&!Array.isArray(t))throw new TypeError("Expected a valid `name`");let{arguments:r=[]}=e??{};if(r!=null&&!Array.isArray(r))throw new TypeError("Expected `appArguments` as Array type");return Ps({...e,app:{name:t,arguments:r}})};Bo={browser:"browser",browserPrivate:"browserPrivate"};Ro(Bo,"chrome",()=>ks({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium","chromium-browser"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));Ro(Bo,"brave",()=>ks({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));Ro(Bo,"firefox",()=>ks({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));Ro(Bo,"edge",()=>ks({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));Ro(Bo,"safari",()=>ks({darwin:"Safari"}));WM=KM});var wf=x(xr=>{"use strict";xr.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;xr.find=(t,e)=>t.nodes.find(r=>r.type===e);xr.exceedsLimit=(t,e,r=1,n)=>n===!1||!xr.isInteger(t)||!xr.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=n;xr.escapeNode=(t,e=0,r)=>{let n=t.nodes[e];n&&(r&&n.type===r||n.type==="open"||n.type==="close")&&n.escaped!==!0&&(n.value="\\"+n.value,n.escaped=!0)};xr.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;xr.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;xr.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;xr.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);xr.flatten=(...t)=>{let e=[],r=n=>{for(let o=0;o<n.length;o++){let i=n[o];if(Array.isArray(i)){r(i);continue}i!==void 0&&e.push(i)}return e};return r(t),e}});var vf=x((DX,d1)=>{"use strict";var f1=wf();d1.exports=(t,e={})=>{let r=(n,o={})=>{let i=e.escapeInvalid&&f1.isInvalidBrace(o),a=n.invalid===!0&&e.escapeInvalid===!0,s="";if(n.value)return(i||a)&&f1.isOpenOrClose(n)?"\\"+n.value:n.value;if(n.value)return n.value;if(n.nodes)for(let u of n.nodes)s+=r(u);return s};return r(t)}});var h1=x((bX,p1)=>{"use strict";p1.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var E1=x((wX,C1)=>{"use strict";var m1=h1(),Vo=(t,e,r)=>{if(m1(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(m1(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let n={relaxZeros:!0,...r};typeof n.strictZeros=="boolean"&&(n.relaxZeros=n.strictZeros===!1);let o=String(n.relaxZeros),i=String(n.shorthand),a=String(n.capture),s=String(n.wrap),u=t+":"+e+"="+o+i+a+s;if(Vo.cache.hasOwnProperty(u))return Vo.cache[u].result;let c=Math.min(t,e),f=Math.max(t,e);if(Math.abs(c-f)===1){let y=t+"|"+e;return n.capture?`(${y})`:n.wrap===!1?y:`(?:${y})`}let d=v1(t)||v1(e),p={min:t,max:e,a:c,b:f},h=[],m=[];if(d&&(p.isPadded=d,p.maxLen=String(p.max).length),c<0){let y=f<0?Math.abs(f):1;m=g1(y,Math.abs(c),p,n),c=p.a=0}return f>=0&&(h=g1(c,f,p,n)),p.negatives=m,p.positives=h,p.result=q5(m,h,n),n.capture===!0?p.result=`(${p.result})`:n.wrap!==!1&&h.length+m.length>1&&(p.result=`(?:${p.result})`),Vo.cache[u]=p,p.result};function q5(t,e,r){let n=sy(t,e,"-",!1,r)||[],o=sy(e,t,"",!1,r)||[],i=sy(t,e,"-?",!0,r)||[];return n.concat(i).concat(o).join("|")}function H5(t,e){let r=1,n=1,o=D1(t,r),i=new Set([e]);for(;t<=o&&o<=e;)i.add(o),r+=1,o=D1(t,r);for(o=b1(e+1,n)-1;t<o&&o<=e;)i.add(o),n+=1,o=b1(e+1,n)-1;return i=[...i],i.sort(K5),i}function V5(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let n=z5(t,e),o=n.length,i="",a=0;for(let s=0;s<o;s++){let[u,c]=n[s];u===c?i+=u:u!=="0"||c!=="9"?i+=G5(u,c,r):a++}return a&&(i+=r.shorthand===!0?"\\d":"[0-9]"),{pattern:i,count:[a],digits:o}}function g1(t,e,r,n){let o=H5(t,e),i=[],a=t,s;for(let u=0;u<o.length;u++){let c=o[u],f=V5(String(a),String(c),n),d="";if(!r.isPadded&&s&&s.pattern===f.pattern){s.count.length>1&&s.count.pop(),s.count.push(f.count[0]),s.string=s.pattern+w1(s.count),a=c+1;continue}r.isPadded&&(d=W5(c,r,n)),f.string=d+f.pattern+w1(f.count),i.push(f),a=c+1,s=f}return i}function sy(t,e,r,n,o){let i=[];for(let a of t){let{string:s}=a;!n&&!y1(e,"string",s)&&i.push(r+s),n&&y1(e,"string",s)&&i.push(r+s)}return i}function z5(t,e){let r=[];for(let n=0;n<t.length;n++)r.push([t[n],e[n]]);return r}function K5(t,e){return t>e?1:e>t?-1:0}function y1(t,e,r){return t.some(n=>n[e]===r)}function D1(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function b1(t,e){return t-t%Math.pow(10,e)}function w1(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function G5(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function v1(t){return/^-?(0+)\d/.test(t)}function W5(t,e,r){if(!e.isPadded)return t;let n=Math.abs(e.maxLen-String(t).length),o=r.relaxZeros!==!1;switch(n){case 0:return"";case 1:return o?"0?":"0";case 2:return o?"0{0,2}":"00";default:return o?`0{0,${n}}`:`0{${n}}`}}Vo.cache={};Vo.clearCache=()=>Vo.cache={};C1.exports=Vo});var ly=x((vX,P1)=>{"use strict";var Y5=require("util"),S1=E1(),_1=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),J5=t=>e=>t===!0?Number(e):String(e),uy=t=>typeof t=="number"||typeof t=="string"&&t!=="",Ws=t=>Number.isInteger(+t),cy=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},X5=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,Z5=(t,e,r)=>{if(e>0){let n=t[0]==="-"?"-":"";n&&(t=t.slice(1)),t=n+t.padStart(n?e-1:e,"0")}return r===!1?String(t):t},Ef=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length<e;)t="0"+t;return r?"-"+t:t},Q5=(t,e,r)=>{t.negatives.sort((s,u)=>s<u?-1:s>u?1:0),t.positives.sort((s,u)=>s<u?-1:s>u?1:0);let n=e.capture?"":"?:",o="",i="",a;return t.positives.length&&(o=t.positives.map(s=>Ef(String(s),r)).join("|")),t.negatives.length&&(i=`-(${n}${t.negatives.map(s=>Ef(String(s),r)).join("|")})`),o&&i?a=`${o}|${i}`:a=o||i,e.wrap?`(${n}${a})`:a},x1=(t,e,r,n)=>{if(r)return S1(t,e,{wrap:!1,...n});let o=String.fromCharCode(t);if(t===e)return o;let i=String.fromCharCode(e);return`[${o}-${i}]`},A1=(t,e,r)=>{if(Array.isArray(t)){let n=r.wrap===!0,o=r.capture?"":"?:";return n?`(${o}${t.join("|")})`:t.join("|")}return S1(t,e,r)},O1=(...t)=>new RangeError("Invalid range arguments: "+Y5.inspect(...t)),F1=(t,e,r)=>{if(r.strictRanges===!0)throw O1([t,e]);return[]},e9=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},t9=(t,e,r=1,n={})=>{let o=Number(t),i=Number(e);if(!Number.isInteger(o)||!Number.isInteger(i)){if(n.strictRanges===!0)throw O1([t,e]);return[]}o===0&&(o=0),i===0&&(i=0);let a=o>i,s=String(t),u=String(e),c=String(r);r=Math.max(Math.abs(r),1);let f=cy(s)||cy(u)||cy(c),d=f?Math.max(s.length,u.length,c.length):0,p=f===!1&&X5(t,e,n)===!1,h=n.transform||J5(p);if(n.toRegex&&r===1)return x1(Ef(t,d),Ef(e,d),!0,n);let m={negatives:[],positives:[]},y=E=>m[E<0?"negatives":"positives"].push(Math.abs(E)),b=[],v=0;for(;a?o>=i:o<=i;)n.toRegex===!0&&r>1?y(o):b.push(Z5(h(o,v),d,p)),o=a?o-r:o+r,v++;return n.toRegex===!0?r>1?Q5(m,n,d):A1(b,null,{wrap:!1,...n}):b},r9=(t,e,r=1,n={})=>{if(!Ws(t)&&t.length>1||!Ws(e)&&e.length>1)return F1(t,e,n);let o=n.transform||(p=>String.fromCharCode(p)),i=`${t}`.charCodeAt(0),a=`${e}`.charCodeAt(0),s=i>a,u=Math.min(i,a),c=Math.max(i,a);if(n.toRegex&&r===1)return x1(u,c,!1,n);let f=[],d=0;for(;s?i>=a:i<=a;)f.push(o(i,d)),i=s?i-r:i+r,d++;return n.toRegex===!0?A1(f,null,{wrap:!1,options:n}):f},Cf=(t,e,r,n={})=>{if(e==null&&uy(t))return[t];if(!uy(t)||!uy(e))return F1(t,e,n);if(typeof r=="function")return Cf(t,e,1,{transform:r});if(_1(r))return Cf(t,e,0,r);let o={...n};return o.capture===!0&&(o.wrap=!0),r=r||o.step||1,Ws(r)?Ws(t)&&Ws(e)?t9(t,e,r,o):r9(t,e,Math.max(Math.abs(r),1),o):r!=null&&!_1(r)?e9(r,o):Cf(t,e,1,r)};P1.exports=Cf});var I1=x((CX,$1)=>{"use strict";var n9=ly(),k1=wf(),o9=(t,e={})=>{let r=(n,o={})=>{let i=k1.isInvalidBrace(o),a=n.invalid===!0&&e.escapeInvalid===!0,s=i===!0||a===!0,u=e.escapeInvalid===!0?"\\":"",c="";if(n.isOpen===!0)return u+n.value;if(n.isClose===!0)return console.log("node.isClose",u,n.value),u+n.value;if(n.type==="open")return s?u+n.value:"(";if(n.type==="close")return s?u+n.value:")";if(n.type==="comma")return n.prev.type==="comma"?"":s?n.value:"|";if(n.value)return n.value;if(n.nodes&&n.ranges>0){let f=k1.reduce(n.nodes),d=n9(...f,{...e,wrap:!1,toRegex:!0,strictZeros:!0});if(d.length!==0)return f.length>1&&d.length>1?`(${d})`:d}if(n.nodes)for(let f of n.nodes)c+=r(f,n);return c};return r(t)};$1.exports=o9});var B1=x((EX,R1)=>{"use strict";var i9=ly(),T1=vf(),ya=wf(),zo=(t="",e="",r=!1)=>{let n=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ya.flatten(e).map(o=>`{${o}}`):e;for(let o of t)if(Array.isArray(o))for(let i of o)n.push(zo(i,e,r));else for(let i of e)r===!0&&typeof i=="string"&&(i=`{${i}}`),n.push(Array.isArray(i)?zo(o,i,r):o+i);return ya.flatten(n)},a9=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,n=(o,i={})=>{o.queue=[];let a=i,s=i.queue;for(;a.type!=="brace"&&a.type!=="root"&&a.parent;)a=a.parent,s=a.queue;if(o.invalid||o.dollar){s.push(zo(s.pop(),T1(o,e)));return}if(o.type==="brace"&&o.invalid!==!0&&o.nodes.length===2){s.push(zo(s.pop(),["{}"]));return}if(o.nodes&&o.ranges>0){let d=ya.reduce(o.nodes);if(ya.exceedsLimit(...d,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let p=i9(...d,e);p.length===0&&(p=T1(o,e)),s.push(zo(s.pop(),p)),o.nodes=[];return}let u=ya.encloseBrace(o),c=o.queue,f=o;for(;f.type!=="brace"&&f.type!=="root"&&f.parent;)f=f.parent,c=f.queue;for(let d=0;d<o.nodes.length;d++){let p=o.nodes[d];if(p.type==="comma"&&o.type==="brace"){d===1&&c.push(""),c.push("");continue}if(p.type==="close"){s.push(zo(s.pop(),c,u));continue}if(p.value&&p.type!=="open"){c.push(zo(c.pop(),p.value));continue}p.nodes&&n(p,o)}return c};return ya.flatten(n(t))};R1.exports=a9});var L1=x((_X,N1)=>{"use strict";N1.exports={MAX_LENGTH:1e4,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:`
112
- `,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var H1=x((SX,q1)=>{"use strict";var s9=vf(),{MAX_LENGTH:j1,CHAR_BACKSLASH:fy,CHAR_BACKTICK:u9,CHAR_COMMA:c9,CHAR_DOT:l9,CHAR_LEFT_PARENTHESES:f9,CHAR_RIGHT_PARENTHESES:d9,CHAR_LEFT_CURLY_BRACE:p9,CHAR_RIGHT_CURLY_BRACE:h9,CHAR_LEFT_SQUARE_BRACKET:U1,CHAR_RIGHT_SQUARE_BRACKET:M1,CHAR_DOUBLE_QUOTE:m9,CHAR_SINGLE_QUOTE:g9,CHAR_NO_BREAK_SPACE:y9,CHAR_ZERO_WIDTH_NOBREAK_SPACE:D9}=L1(),b9=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(j1,r.maxLength):j1;if(t.length>n)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${n})`);let o={type:"root",input:t,nodes:[]},i=[o],a=o,s=o,u=0,c=t.length,f=0,d=0,p,h=()=>t[f++],m=y=>{if(y.type==="text"&&s.type==="dot"&&(s.type="text"),s&&s.type==="text"&&y.type==="text"){s.value+=y.value;return}return a.nodes.push(y),y.parent=a,y.prev=s,s=y,y};for(m({type:"bos"});f<c;)if(a=i[i.length-1],p=h(),!(p===D9||p===y9)){if(p===fy){m({type:"text",value:(e.keepEscaping?p:"")+h()});continue}if(p===M1){m({type:"text",value:"\\"+p});continue}if(p===U1){u++;let y;for(;f<c&&(y=h());){if(p+=y,y===U1){u++;continue}if(y===fy){p+=h();continue}if(y===M1&&(u--,u===0))break}m({type:"text",value:p});continue}if(p===f9){a=m({type:"paren",nodes:[]}),i.push(a),m({type:"text",value:p});continue}if(p===d9){if(a.type!=="paren"){m({type:"text",value:p});continue}a=i.pop(),m({type:"text",value:p}),a=i[i.length-1];continue}if(p===m9||p===g9||p===u9){let y=p,b;for(e.keepQuotes!==!0&&(p="");f<c&&(b=h());){if(b===fy){p+=b+h();continue}if(b===y){e.keepQuotes===!0&&(p+=b);break}p+=b}m({type:"text",value:p});continue}if(p===p9){d++;let b={type:"brace",open:!0,close:!1,dollar:s.value&&s.value.slice(-1)==="$"||a.dollar===!0,depth:d,commas:0,ranges:0,nodes:[]};a=m(b),i.push(a),m({type:"open",value:p});continue}if(p===h9){if(a.type!=="brace"){m({type:"text",value:p});continue}let y="close";a=i.pop(),a.close=!0,m({type:y,value:p}),d--,a=i[i.length-1];continue}if(p===c9&&d>0){if(a.ranges>0){a.ranges=0;let y=a.nodes.shift();a.nodes=[y,{type:"text",value:s9(a)}]}m({type:"comma",value:p}),a.commas++;continue}if(p===l9&&d>0&&a.commas===0){let y=a.nodes;if(d===0||y.length===0){m({type:"text",value:p});continue}if(s.type==="dot"){if(a.range=[],s.value+=p,s.type="range",a.nodes.length!==3&&a.nodes.length!==5){a.invalid=!0,a.ranges=0,s.type="text";continue}a.ranges++,a.args=[];continue}if(s.type==="range"){y.pop();let b=y[y.length-1];b.value+=s.value+p,s=b,a.ranges--;continue}m({type:"dot",value:p});continue}m({type:"text",value:p})}do if(a=i.pop(),a.type!=="root"){a.nodes.forEach(v=>{v.nodes||(v.type==="open"&&(v.isOpen=!0),v.type==="close"&&(v.isClose=!0),v.nodes||(v.type="text"),v.invalid=!0)});let y=i[i.length-1],b=y.nodes.indexOf(a);y.nodes.splice(b,1,...a.nodes)}while(i.length>0);return m({type:"eos"}),o};q1.exports=b9});var K1=x((xX,z1)=>{"use strict";var V1=vf(),w9=I1(),v9=B1(),C9=H1(),sr=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let o=sr.create(n,e);Array.isArray(o)?r.push(...o):r.push(o)}else r=[].concat(sr.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};sr.parse=(t,e={})=>C9(t,e);sr.stringify=(t,e={})=>V1(typeof t=="string"?sr.parse(t,e):t,e);sr.compile=(t,e={})=>(typeof t=="string"&&(t=sr.parse(t,e)),w9(t,e));sr.expand=(t,e={})=>{typeof t=="string"&&(t=sr.parse(t,e));let r=v9(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};sr.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?sr.compile(t,e):sr.expand(t,e);z1.exports=sr});var Ys=x((AX,X1)=>{"use strict";var E9=require("path"),Yr="\\\\/",G1=`[^${Yr}]`,wn="\\.",_9="\\+",S9="\\?",_f="\\/",x9="(?=.)",W1="[^/]",dy=`(?:${_f}|$)`,Y1=`(?:^|${_f})`,py=`${wn}{1,2}${dy}`,A9=`(?!${wn})`,O9=`(?!${Y1}${py})`,F9=`(?!${wn}{0,1}${dy})`,P9=`(?!${py})`,k9=`[^.${_f}]`,$9=`${W1}*?`,J1={DOT_LITERAL:wn,PLUS_LITERAL:_9,QMARK_LITERAL:S9,SLASH_LITERAL:_f,ONE_CHAR:x9,QMARK:W1,END_ANCHOR:dy,DOTS_SLASH:py,NO_DOT:A9,NO_DOTS:O9,NO_DOT_SLASH:F9,NO_DOTS_SLASH:P9,QMARK_NO_DOT:k9,STAR:$9,START_ANCHOR:Y1},I9={...J1,SLASH_LITERAL:`[${Yr}]`,QMARK:G1,STAR:`${G1}*?`,DOTS_SLASH:`${wn}{1,2}(?:[${Yr}]|$)`,NO_DOT:`(?!${wn})`,NO_DOTS:`(?!(?:^|[${Yr}])${wn}{1,2}(?:[${Yr}]|$))`,NO_DOT_SLASH:`(?!${wn}{0,1}(?:[${Yr}]|$))`,NO_DOTS_SLASH:`(?!${wn}{1,2}(?:[${Yr}]|$))`,QMARK_NO_DOT:`[^.${Yr}]`,START_ANCHOR:`(?:^|[${Yr}])`,END_ANCHOR:`(?:[${Yr}]|$)`},T9={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};X1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:T9,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:E9.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?I9:J1}}});var Js=x(Xt=>{"use strict";var R9=require("path"),B9=process.platform==="win32",{REGEX_BACKSLASH:N9,REGEX_REMOVE_BACKSLASH:L9,REGEX_SPECIAL_CHARS:j9,REGEX_SPECIAL_CHARS_GLOBAL:U9}=Ys();Xt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Xt.hasRegexChars=t=>j9.test(t);Xt.isRegexChar=t=>t.length===1&&Xt.hasRegexChars(t);Xt.escapeRegex=t=>t.replace(U9,"\\$1");Xt.toPosixSlashes=t=>t.replace(N9,"/");Xt.removeBackslashes=t=>t.replace(L9,e=>e==="\\"?"":e);Xt.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Xt.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:B9===!0||R9.sep==="\\";Xt.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?Xt.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};Xt.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Xt.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",o=r.contains?"":"$",i=`${n}(?:${t})${o}`;return e.negated===!0&&(i=`(?:^(?!${i}).*$)`),i}});var iF=x((FX,oF)=>{"use strict";var Z1=Js(),{CHAR_ASTERISK:hy,CHAR_AT:M9,CHAR_BACKWARD_SLASH:Xs,CHAR_COMMA:q9,CHAR_DOT:my,CHAR_EXCLAMATION_MARK:gy,CHAR_FORWARD_SLASH:nF,CHAR_LEFT_CURLY_BRACE:yy,CHAR_LEFT_PARENTHESES:Dy,CHAR_LEFT_SQUARE_BRACKET:H9,CHAR_PLUS:V9,CHAR_QUESTION_MARK:Q1,CHAR_RIGHT_CURLY_BRACE:z9,CHAR_RIGHT_PARENTHESES:eF,CHAR_RIGHT_SQUARE_BRACKET:K9}=Ys(),tF=t=>t===nF||t===Xs,rF=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},G9=(t,e)=>{let r=e||{},n=t.length-1,o=r.parts===!0||r.scanToEnd===!0,i=[],a=[],s=[],u=t,c=-1,f=0,d=0,p=!1,h=!1,m=!1,y=!1,b=!1,v=!1,E=!1,g=!1,_=!1,S=!1,k=0,T,B,F={value:"",depth:0,isGlob:!1},L=()=>c>=n,A=()=>u.charCodeAt(c+1),q=()=>(T=B,u.charCodeAt(++c));for(;c<n;){B=q();let w;if(B===Xs){E=F.backslashes=!0,B=q(),B===yy&&(v=!0);continue}if(v===!0||B===yy){for(k++;L()!==!0&&(B=q());){if(B===Xs){E=F.backslashes=!0,q();continue}if(B===yy){k++;continue}if(v!==!0&&B===my&&(B=q())===my){if(p=F.isBrace=!0,m=F.isGlob=!0,S=!0,o===!0)continue;break}if(v!==!0&&B===q9){if(p=F.isBrace=!0,m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===z9&&(k--,k===0)){v=!1,p=F.isBrace=!0,S=!0;break}}if(o===!0)continue;break}if(B===nF){if(i.push(c),a.push(F),F={value:"",depth:0,isGlob:!1},S===!0)continue;if(T===my&&c===f+1){f+=2;continue}d=c+1;continue}if(r.noext!==!0&&(B===V9||B===M9||B===hy||B===Q1||B===gy)===!0&&A()===Dy){if(m=F.isGlob=!0,y=F.isExtglob=!0,S=!0,B===gy&&c===f&&(_=!0),o===!0){for(;L()!==!0&&(B=q());){if(B===Xs){E=F.backslashes=!0,B=q();continue}if(B===eF){m=F.isGlob=!0,S=!0;break}}continue}break}if(B===hy){if(T===hy&&(b=F.isGlobstar=!0),m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===Q1){if(m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===H9){for(;L()!==!0&&(w=q());){if(w===Xs){E=F.backslashes=!0,q();continue}if(w===K9){h=F.isBracket=!0,m=F.isGlob=!0,S=!0;break}}if(o===!0)continue;break}if(r.nonegate!==!0&&B===gy&&c===f){g=F.negated=!0,f++;continue}if(r.noparen!==!0&&B===Dy){if(m=F.isGlob=!0,o===!0){for(;L()!==!0&&(B=q());){if(B===Dy){E=F.backslashes=!0,B=q();continue}if(B===eF){S=!0;break}}continue}break}if(m===!0){if(S=!0,o===!0)continue;break}}r.noext===!0&&(y=!1,m=!1);let j=u,Z="",P="";f>0&&(Z=u.slice(0,f),u=u.slice(f),d-=f),j&&m===!0&&d>0?(j=u.slice(0,d),P=u.slice(d)):m===!0?(j="",P=u):j=u,j&&j!==""&&j!=="/"&&j!==u&&tF(j.charCodeAt(j.length-1))&&(j=j.slice(0,-1)),r.unescape===!0&&(P&&(P=Z1.removeBackslashes(P)),j&&E===!0&&(j=Z1.removeBackslashes(j)));let D={prefix:Z,input:t,start:f,base:j,glob:P,isBrace:p,isBracket:h,isGlob:m,isExtglob:y,isGlobstar:b,negated:g,negatedExtglob:_};if(r.tokens===!0&&(D.maxDepth=0,tF(B)||a.push(F),D.tokens=a),r.parts===!0||r.tokens===!0){let w;for(let C=0;C<i.length;C++){let O=w?w+1:f,R=i[C],$=t.slice(O,R);r.tokens&&(C===0&&f!==0?(a[C].isPrefix=!0,a[C].value=Z):a[C].value=$,rF(a[C]),D.maxDepth+=a[C].depth),(C!==0||$!=="")&&s.push($),w=R}if(w&&w+1<t.length){let C=t.slice(w+1);s.push(C),r.tokens&&(a[a.length-1].value=C,rF(a[a.length-1]),D.maxDepth+=a[a.length-1].depth)}D.slashes=i,D.parts=s}return D};oF.exports=G9});var uF=x((PX,sF)=>{"use strict";var Sf=Ys(),ur=Js(),{MAX_LENGTH:xf,POSIX_REGEX_SOURCE:W9,REGEX_NON_SPECIAL_CHARS:Y9,REGEX_SPECIAL_CHARS_BACKREF:J9,REPLACEMENTS:aF}=Sf,X9=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(o=>ur.escapeRegex(o)).join("..")}return r},Da=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,by=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=aF[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(xf,r.maxLength):xf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);let i={type:"bos",value:"",output:r.prepend||""},a=[i],s=r.capture?"":"?:",u=ur.isWindows(e),c=Sf.globChars(u),f=Sf.extglobChars(c),{DOT_LITERAL:d,PLUS_LITERAL:p,SLASH_LITERAL:h,ONE_CHAR:m,DOTS_SLASH:y,NO_DOT:b,NO_DOT_SLASH:v,NO_DOTS_SLASH:E,QMARK:g,QMARK_NO_DOT:_,STAR:S,START_ANCHOR:k}=c,T=K=>`(${s}(?:(?!${k}${K.dot?y:d}).)*?)`,B=r.dot?"":b,F=r.dot?g:_,L=r.bash===!0?T(r):S;r.capture&&(L=`(${L})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:a};t=ur.removePrefix(t,A),o=t.length;let q=[],j=[],Z=[],P=i,D,w=()=>A.index===o-1,C=A.peek=(K=1)=>t[A.index+K],O=A.advance=()=>t[++A.index]||"",R=()=>t.slice(A.index+1),$=(K="",Se=0)=>{A.consumed+=K,A.index+=Se},H=K=>{A.output+=K.output!=null?K.output:K.value,$(K.value)},I=()=>{let K=1;for(;C()==="!"&&(C(2)!=="("||C(3)==="?");)O(),A.start++,K++;return K%2===0?!1:(A.negated=!0,A.start++,!0)},N=K=>{A[K]++,Z.push(K)},X=K=>{A[K]--,Z.pop()},U=K=>{if(P.type==="globstar"){let Se=A.braces>0&&(K.type==="comma"||K.type==="brace"),z=K.extglob===!0||q.length&&(K.type==="pipe"||K.type==="paren");K.type!=="slash"&&K.type!=="paren"&&!Se&&!z&&(A.output=A.output.slice(0,-P.output.length),P.type="star",P.value="*",P.output=L,A.output+=P.output)}if(q.length&&K.type!=="paren"&&(q[q.length-1].inner+=K.value),(K.value||K.output)&&H(K),P&&P.type==="text"&&K.type==="text"){P.value+=K.value,P.output=(P.output||"")+K.value;return}K.prev=P,a.push(K),P=K},oe=(K,Se)=>{let z={...f[Se],conditions:1,inner:""};z.prev=P,z.parens=A.parens,z.output=A.output;let de=(r.capture?"(":"")+z.open;N("parens"),U({type:K,value:Se,output:A.output?"":m}),U({type:"paren",extglob:!0,value:O(),output:de}),q.push(z)},Zt=K=>{let Se=K.close+(r.capture?")":""),z;if(K.type==="negate"){let de=L;if(K.inner&&K.inner.length>1&&K.inner.includes("/")&&(de=T(r)),(de!==L||w()||/^\)+$/.test(R()))&&(Se=K.close=`)$))${de}`),K.inner.includes("*")&&(z=R())&&/^\.[^\\/.]+$/.test(z)){let Ve=by(z,{...e,fastpaths:!1}).output;Se=K.close=`)${Ve})${de})`}K.prev.type==="bos"&&(A.negatedExtglob=!0)}U({type:"paren",extglob:!0,value:D,output:Se}),X("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let K=!1,Se=t.replace(J9,(z,de,Ve,Ot,ot,Lf)=>Ot==="\\"?(K=!0,z):Ot==="?"?de?de+Ot+(ot?g.repeat(ot.length):""):Lf===0?F+(ot?g.repeat(ot.length):""):g.repeat(Ve.length):Ot==="."?d.repeat(Ve.length):Ot==="*"?de?de+Ot+(ot?L:""):L:de?z:`\\${z}`);return K===!0&&(r.unescape===!0?Se=Se.replace(/\\/g,""):Se=Se.replace(/\\+/g,z=>z.length%2===0?"\\\\":z?"\\":"")),Se===t&&r.contains===!0?(A.output=t,A):(A.output=ur.wrapOutput(Se,A,e),A)}for(;!w();){if(D=O(),D==="\0")continue;if(D==="\\"){let z=C();if(z==="/"&&r.bash!==!0||z==="."||z===";")continue;if(!z){D+="\\",U({type:"text",value:D});continue}let de=/^\\+/.exec(R()),Ve=0;if(de&&de[0].length>2&&(Ve=de[0].length,A.index+=Ve,Ve%2!==0&&(D+="\\")),r.unescape===!0?D=O():D+=O(),A.brackets===0){U({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||P.value==="["||P.value==="[^")){if(r.posix!==!1&&D===":"){let z=P.value.slice(1);if(z.includes("[")&&(P.posix=!0,z.includes(":"))){let de=P.value.lastIndexOf("["),Ve=P.value.slice(0,de),Ot=P.value.slice(de+2),ot=W9[Ot];if(ot){P.value=Ve+ot,A.backtrack=!0,O(),!i.output&&a.indexOf(P)===1&&(i.output=m);continue}}}(D==="["&&C()!==":"||D==="-"&&C()==="]")&&(D=`\\${D}`),D==="]"&&(P.value==="["||P.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&P.value==="["&&(D="^"),P.value+=D,H({value:D});continue}if(A.quotes===1&&D!=='"'){D=ur.escapeRegex(D),P.value+=D,H({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&U({type:"text",value:D});continue}if(D==="("){N("parens"),U({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Da("opening","("));let z=q[q.length-1];if(z&&A.parens===z.parens+1){Zt(q.pop());continue}U({type:"paren",value:D,output:A.parens?")":"\\)"}),X("parens");continue}if(D==="["){if(r.nobracket===!0||!R().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Da("closing","]"));D=`\\${D}`}else N("brackets");U({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||P&&P.type==="bracket"&&P.value.length===1){U({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Da("opening","["));U({type:"text",value:D,output:`\\${D}`});continue}X("brackets");let z=P.value.slice(1);if(P.posix!==!0&&z[0]==="^"&&!z.includes("/")&&(D=`/${D}`),P.value+=D,H({value:D}),r.literalBrackets===!1||ur.hasRegexChars(z))continue;let de=ur.escapeRegex(P.value);if(A.output=A.output.slice(0,-P.value.length),r.literalBrackets===!0){A.output+=de,P.value=de;continue}P.value=`(${s}${de}|${P.value})`,A.output+=P.value;continue}if(D==="{"&&r.nobrace!==!0){N("braces");let z={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};j.push(z),U(z);continue}if(D==="}"){let z=j[j.length-1];if(r.nobrace===!0||!z){U({type:"text",value:D,output:D});continue}let de=")";if(z.dots===!0){let Ve=a.slice(),Ot=[];for(let ot=Ve.length-1;ot>=0&&(a.pop(),Ve[ot].type!=="brace");ot--)Ve[ot].type!=="dots"&&Ot.unshift(Ve[ot].value);de=X9(Ot,r),A.backtrack=!0}if(z.comma!==!0&&z.dots!==!0){let Ve=A.output.slice(0,z.outputIndex),Ot=A.tokens.slice(z.tokensIndex);z.value=z.output="\\{",D=de="\\}",A.output=Ve;for(let ot of Ot)A.output+=ot.output||ot.value}U({type:"brace",value:D,output:de}),X("braces"),j.pop();continue}if(D==="|"){q.length>0&&q[q.length-1].conditions++,U({type:"text",value:D});continue}if(D===","){let z=D,de=j[j.length-1];de&&Z[Z.length-1]==="braces"&&(de.comma=!0,z="|"),U({type:"comma",value:D,output:z});continue}if(D==="/"){if(P.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",a.pop(),P=i;continue}U({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&P.type==="dot"){P.value==="."&&(P.output=d);let z=j[j.length-1];P.type="dots",P.output+=D,P.value+=D,z.dots=!0;continue}if(A.braces+A.parens===0&&P.type!=="bos"&&P.type!=="slash"){U({type:"text",value:D,output:d});continue}U({type:"dot",value:D,output:d});continue}if(D==="?"){if(!(P&&P.value==="(")&&r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("qmark",D);continue}if(P&&P.type==="paren"){let de=C(),Ve=D;if(de==="<"&&!ur.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(P.value==="("&&!/[!=<:]/.test(de)||de==="<"&&!/<([!=]|\w+>)/.test(R()))&&(Ve=`\\${D}`),U({type:"text",value:D,output:Ve});continue}if(r.dot!==!0&&(P.type==="slash"||P.type==="bos")){U({type:"qmark",value:D,output:_});continue}U({type:"qmark",value:D,output:g});continue}if(D==="!"){if(r.noextglob!==!0&&C()==="("&&(C(2)!=="?"||!/[!=<:]/.test(C(3)))){oe("negate",D);continue}if(r.nonegate!==!0&&A.index===0){I();continue}}if(D==="+"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("plus",D);continue}if(P&&P.value==="("||r.regex===!1){U({type:"plus",value:D,output:p});continue}if(P&&(P.type==="bracket"||P.type==="paren"||P.type==="brace")||A.parens>0){U({type:"plus",value:D});continue}U({type:"plus",value:p});continue}if(D==="@"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){U({type:"at",extglob:!0,value:D,output:""});continue}U({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let z=Y9.exec(R());z&&(D+=z[0],A.index+=z[0].length),U({type:"text",value:D});continue}if(P&&(P.type==="globstar"||P.star===!0)){P.type="star",P.star=!0,P.value+=D,P.output=L,A.backtrack=!0,A.globstar=!0,$(D);continue}let K=R();if(r.noextglob!==!0&&/^\([^?]/.test(K)){oe("star",D);continue}if(P.type==="star"){if(r.noglobstar===!0){$(D);continue}let z=P.prev,de=z.prev,Ve=z.type==="slash"||z.type==="bos",Ot=de&&(de.type==="star"||de.type==="globstar");if(r.bash===!0&&(!Ve||K[0]&&K[0]!=="/")){U({type:"star",value:D,output:""});continue}let ot=A.braces>0&&(z.type==="comma"||z.type==="brace"),Lf=q.length&&(z.type==="pipe"||z.type==="paren");if(!Ve&&z.type!=="paren"&&!ot&&!Lf){U({type:"star",value:D,output:""});continue}for(;K.slice(0,3)==="/**";){let nu=t[A.index+4];if(nu&&nu!=="/")break;K=K.slice(3),$("/**",3)}if(z.type==="bos"&&w()){P.type="globstar",P.value+=D,P.output=T(r),A.output=P.output,A.globstar=!0,$(D);continue}if(z.type==="slash"&&z.prev.type!=="bos"&&!Ot&&w()){A.output=A.output.slice(0,-(z.output+P.output).length),z.output=`(?:${z.output}`,P.type="globstar",P.output=T(r)+(r.strictSlashes?")":"|$)"),P.value+=D,A.globstar=!0,A.output+=z.output+P.output,$(D);continue}if(z.type==="slash"&&z.prev.type!=="bos"&&K[0]==="/"){let nu=K[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(z.output+P.output).length),z.output=`(?:${z.output}`,P.type="globstar",P.output=`${T(r)}${h}|${h}${nu})`,P.value+=D,A.output+=z.output+P.output,A.globstar=!0,$(D+O()),U({type:"slash",value:"/",output:""});continue}if(z.type==="bos"&&K[0]==="/"){P.type="globstar",P.value+=D,P.output=`(?:^|${h}|${T(r)}${h})`,A.output=P.output,A.globstar=!0,$(D+O()),U({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-P.output.length),P.type="globstar",P.output=T(r),P.value+=D,A.output+=P.output,A.globstar=!0,$(D);continue}let Se={type:"star",value:D,output:L};if(r.bash===!0){Se.output=".*?",(P.type==="bos"||P.type==="slash")&&(Se.output=B+Se.output),U(Se);continue}if(P&&(P.type==="bracket"||P.type==="paren")&&r.regex===!0){Se.output=D,U(Se);continue}(A.index===A.start||P.type==="slash"||P.type==="dot")&&(P.type==="dot"?(A.output+=v,P.output+=v):r.dot===!0?(A.output+=E,P.output+=E):(A.output+=B,P.output+=B),C()!=="*"&&(A.output+=m,P.output+=m)),U(Se)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing","]"));A.output=ur.escapeLast(A.output,"["),X("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing",")"));A.output=ur.escapeLast(A.output,"("),X("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing","}"));A.output=ur.escapeLast(A.output,"{"),X("braces")}if(r.strictSlashes!==!0&&(P.type==="star"||P.type==="bracket")&&U({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let K of A.tokens)A.output+=K.output!=null?K.output:K.value,K.suffix&&(A.output+=K.suffix)}return A};by.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(xf,r.maxLength):xf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);t=aF[t]||t;let i=ur.isWindows(e),{DOT_LITERAL:a,SLASH_LITERAL:s,ONE_CHAR:u,DOTS_SLASH:c,NO_DOT:f,NO_DOTS:d,NO_DOTS_SLASH:p,STAR:h,START_ANCHOR:m}=Sf.globChars(i),y=r.dot?d:f,b=r.dot?p:f,v=r.capture?"":"?:",E={negated:!1,prefix:""},g=r.bash===!0?".*?":h;r.capture&&(g=`(${g})`);let _=B=>B.noglobstar===!0?g:`(${v}(?:(?!${m}${B.dot?c:a}).)*?)`,S=B=>{switch(B){case"*":return`${y}${u}${g}`;case".*":return`${a}${u}${g}`;case"*.*":return`${y}${g}${a}${u}${g}`;case"*/*":return`${y}${g}${s}${u}${b}${g}`;case"**":return y+_(r);case"**/*":return`(?:${y}${_(r)}${s})?${b}${u}${g}`;case"**/*.*":return`(?:${y}${_(r)}${s})?${b}${g}${a}${u}${g}`;case"**/.*":return`(?:${y}${_(r)}${s})?${a}${u}${g}`;default:{let F=/^(.*?)\.(\w+)$/.exec(B);if(!F)return;let L=S(F[1]);return L?L+a+F[2]:void 0}}},k=ur.removePrefix(t,E),T=S(k);return T&&r.strictSlashes!==!0&&(T+=`${s}?`),T};sF.exports=by});var lF=x((kX,cF)=>{"use strict";var Z9=require("path"),Q9=iF(),wy=uF(),vy=Js(),e7=Ys(),t7=t=>t&&typeof t=="object"&&!Array.isArray(t),rt=(t,e,r=!1)=>{if(Array.isArray(t)){let f=t.map(p=>rt(p,e,r));return p=>{for(let h of f){let m=h(p);if(m)return m}return!1}}let n=t7(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!n)throw new TypeError("Expected pattern to be a non-empty string");let o=e||{},i=vy.isWindows(e),a=n?rt.compileRe(t,e):rt.makeRe(t,e,!1,!0),s=a.state;delete a.state;let u=()=>!1;if(o.ignore){let f={...e,ignore:null,onMatch:null,onResult:null};u=rt(o.ignore,f,r)}let c=(f,d=!1)=>{let{isMatch:p,match:h,output:m}=rt.test(f,a,e,{glob:t,posix:i}),y={glob:t,state:s,regex:a,posix:i,input:f,output:m,match:h,isMatch:p};return typeof o.onResult=="function"&&o.onResult(y),p===!1?(y.isMatch=!1,d?y:!1):u(f)?(typeof o.onIgnore=="function"&&o.onIgnore(y),y.isMatch=!1,d?y:!1):(typeof o.onMatch=="function"&&o.onMatch(y),d?y:!0)};return r&&(c.state=s),c};rt.test=(t,e,r,{glob:n,posix:o}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let i=r||{},a=i.format||(o?vy.toPosixSlashes:null),s=t===n,u=s&&a?a(t):t;return s===!1&&(u=a?a(t):t,s=u===n),(s===!1||i.capture===!0)&&(i.matchBase===!0||i.basename===!0?s=rt.matchBase(t,e,r,o):s=e.exec(u)),{isMatch:!!s,match:s,output:u}};rt.matchBase=(t,e,r,n=vy.isWindows(r))=>(e instanceof RegExp?e:rt.makeRe(e,r)).test(Z9.basename(t));rt.isMatch=(t,e,r)=>rt(e,r)(t);rt.parse=(t,e)=>Array.isArray(t)?t.map(r=>rt.parse(r,e)):wy(t,{...e,fastpaths:!1});rt.scan=(t,e)=>Q9(t,e);rt.compileRe=(t,e,r=!1,n=!1)=>{if(r===!0)return t.output;let o=e||{},i=o.contains?"":"^",a=o.contains?"":"$",s=`${i}(?:${t.output})${a}`;t&&t.negated===!0&&(s=`^(?!${s}).*$`);let u=rt.toRegex(s,e);return n===!0&&(u.state=t),u};rt.makeRe=(t,e={},r=!1,n=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let o={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(o.output=wy.fastpaths(t,e)),o.output||(o=wy(t,e)),rt.compileRe(o,e,r,n)};rt.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};rt.constants=e7;cF.exports=rt});var dF=x(($X,fF)=>{"use strict";fF.exports=lF()});var DF=x((IX,yF)=>{"use strict";var hF=require("util"),mF=K1(),Jr=dF(),Cy=Js(),pF=t=>t===""||t==="./",gF=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},je=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,o=new Set,i=new Set,a=0,s=f=>{i.add(f.output),r&&r.onResult&&r.onResult(f)};for(let f=0;f<e.length;f++){let d=Jr(String(e[f]),{...r,onResult:s},!0),p=d.state.negated||d.state.negatedExtglob;p&&a++;for(let h of t){let m=d(h,!0);(p?!m.isMatch:m.isMatch)&&(p?n.add(m.output):(n.delete(m.output),o.add(m.output)))}}let c=(a===e.length?[...i]:[...o]).filter(f=>!n.has(f));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(f=>f.replace(/\\/g,"")):e}return c};je.match=je;je.matcher=(t,e)=>Jr(t,e);je.isMatch=(t,e,r)=>Jr(e,r)(t);je.any=je.isMatch;je.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,o=[],i=s=>{r.onResult&&r.onResult(s),o.push(s.output)},a=new Set(je(t,e,{...r,onResult:i}));for(let s of o)a.has(s)||n.add(s);return[...n]};je.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${hF.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>je.contains(t,n,r));if(typeof e=="string"){if(pF(t)||pF(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return je.isMatch(t,e,{...r,contains:!0})};je.matchKeys=(t,e,r)=>{if(!Cy.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=je(Object.keys(t),e,r),o={};for(let i of n)o[i]=t[i];return o};je.some=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Jr(String(o),r);if(n.some(a=>i(a)))return!0}return!1};je.every=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Jr(String(o),r);if(!n.every(a=>i(a)))return!1}return!0};je.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${hF.inspect(t)}"`);return[].concat(e).every(n=>Jr(n,r)(t))};je.capture=(t,e,r)=>{let n=Cy.isWindows(r),i=Jr.makeRe(String(t),{...r,capture:!0}).exec(n?Cy.toPosixSlashes(e):e);if(i)return i.slice(1).map(a=>a===void 0?"":a)};je.makeRe=(...t)=>Jr.makeRe(...t);je.scan=(...t)=>Jr.scan(...t);je.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let o of mF(String(n),e))r.push(Jr.parse(o,e));return r};je.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!gF(t)?[t]:mF(t,e)};je.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return je.braces(t,{...e,expand:!0})};je.hasBraces=gF;yF.exports=je});var r2=x((IZ,vn)=>{var Te=require("fs"),If=require("os"),wt=require("path"),jF=require("crypto"),Zr={fs:Te.constants,os:If.constants},UF="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",VF=/XXXXXX/,O7=3,zF=(Zr.O_CREAT||Zr.fs.O_CREAT)|(Zr.O_EXCL||Zr.fs.O_EXCL)|(Zr.O_RDWR||Zr.fs.O_RDWR),F7=If.platform()==="win32",P7=Zr.EBADF||Zr.os.errno.EBADF,k7=Zr.ENOENT||Zr.os.errno.ENOENT,KF=448,GF=384,$7="exit",wa=[],WF=Te.rmdirSync.bind(Te),YF=!1;function I7(t,e){return Te.rm(t,{recursive:!0},e)}function JF(t){return Te.rmSync(t,{recursive:!0})}function Ay(t,e){let r=va(t,e),n=r[0],o=r[1];H7(n,function(i,a){if(i)return o(i);let s=a.tries;(function u(){try{let c=ZF(a);Te.stat(c,function(f){if(!f)return s-- >0?u():o(new Error("Could not get a unique tmp filename, max tries reached "+c));o(null,c)})}catch(c){o(c)}})()})}function Oy(t){let e=va(t),r=e[0],n=V7(r),o=n.tries;do{let i=ZF(n);try{Te.statSync(i)}catch{return i}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function T7(t,e){let r=va(t,e),n=r[0],o=r[1];Ay(n,function(a,s){if(a)return o(a);Te.open(s,zF,n.mode||GF,function(c,f){if(c)return o(c);if(n.discardDescriptor)return Te.close(f,function(p){return o(p,s,void 0,Sy(s,-1,n,!1))});{let d=n.discardDescriptor||n.detachDescriptor;o(null,s,f,Sy(s,d?-1:f,n,!1))}})})}function R7(t){let e=va(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,o=Oy(r),i=Te.openSync(o,zF,r.mode||GF);return r.discardDescriptor&&(Te.closeSync(i),i=void 0),{name:o,fd:i,removeCallback:Sy(o,n?-1:i,r,!0)}}function B7(t,e){let r=va(t,e),n=r[0],o=r[1];Ay(n,function(a,s){if(a)return o(a);Te.mkdir(s,n.mode||KF,function(c){if(c)return o(c);o(null,s,XF(s,n,!1))})})}function N7(t){let e=va(t),r=e[0],n=Oy(r);return Te.mkdirSync(n,r.mode||KF),{name:n,removeCallback:XF(n,r,!0)}}function L7(t,e){let r=function(n){if(n&&!xy(n))return e(n);e()};0<=t[0]?Te.close(t[0],function(){Te.unlink(t[1],r)}):Te.unlink(t[1],r)}function j7(t){let e=null;try{0<=t[0]&&Te.closeSync(t[0])}catch(r){if(!z7(r)&&!xy(r))throw r}finally{try{Te.unlinkSync(t[1])}catch(r){xy(r)||(e=r)}}if(e!==null)throw e}function Sy(t,e,r,n){let o=$f(j7,[e,t],n),i=$f(L7,[e,t],n,o);return r.keep||wa.unshift(o),n?o:i}function XF(t,e,r){let n=e.unsafeCleanup?I7:Te.rmdir.bind(Te),o=e.unsafeCleanup?JF:WF,i=$f(o,t,r),a=$f(n,t,r,i);return e.keep||wa.unshift(i),r?i:a}function $f(t,e,r,n){let o=!1;return function i(a){if(!o){let s=n||i,u=wa.indexOf(s);return u>=0&&wa.splice(u,1),o=!0,r||t===WF||t===JF?t(e):t(e,a||function(){})}}}function U7(){if(YF)for(;wa.length;)try{wa[0]()}catch{}}function MF(t){let e=[],r=null;try{r=jF.randomBytes(t)}catch{r=jF.pseudoRandomBytes(t)}for(let n=0;n<t;n++)e.push(UF[r[n]%UF.length]);return e.join("")}function cr(t){return typeof t>"u"}function va(t,e){if(typeof t=="function")return[{},t];if(cr(t))return[{},e];let r={};for(let n of Object.getOwnPropertyNames(t))r[n]=t[n];return[r,e]}function M7(t,e,r){let n=wt.isAbsolute(t)?t:wt.join(e,t);Te.stat(n,function(o){o?Te.realpath(wt.dirname(n),function(i,a){if(i)return r(i);r(null,wt.join(a,wt.basename(n)))}):Te.realpath(n,r)})}function q7(t,e){let r=wt.isAbsolute(t)?t:wt.join(e,t);try{return Te.statSync(r),Te.realpathSync(r)}catch{let o=Te.realpathSync(wt.dirname(r));return wt.join(o,wt.basename(r))}}function ZF(t){let e=t.tmpdir;if(!cr(t.name))return wt.join(e,t.dir,t.name);if(!cr(t.template))return wt.join(e,t.dir,t.template).replace(VF,MF(6));let r=[t.prefix?t.prefix:"tmp","-",process.pid,"-",MF(12),t.postfix?"-"+t.postfix:""].join("");return wt.join(e,t.dir,r)}function QF(t){if(!cr(t.name)){let e=t.name;if(wt.isAbsolute(e))throw new Error(`name option must not contain an absolute path, found "${e}".`);let r=wt.basename(e);if(r===".."||r==="."||r!==e)throw new Error(`name option must not contain a path, found "${e}".`)}if(!cr(t.template)&&!t.template.match(VF))throw new Error(`Invalid template, found "${t.template}".`);if(!cr(t.tries)&&isNaN(t.tries)||t.tries<0)throw new Error(`Invalid tries, found "${t.tries}".`);t.tries=cr(t.name)?t.tries||O7:1,t.keep=!!t.keep,t.detachDescriptor=!!t.detachDescriptor,t.discardDescriptor=!!t.discardDescriptor,t.unsafeCleanup=!!t.unsafeCleanup,t.prefix=cr(t.prefix)?"":t.prefix,t.postfix=cr(t.postfix)?"":t.postfix}function qF(t,e,r,n){if(cr(e))return n(null);M7(e,r,function(o,i){if(o)return n(o);let a=wt.relative(r,i);if(!i.startsWith(r))return n(new Error(`${t} option must be relative to "${r}", found "${a}".`));n(null,a)})}function HF(t,e,r){if(cr(e))return;let n=q7(e,r),o=wt.relative(r,n);if(!n.startsWith(r))throw new Error(`${t} option must be relative to "${r}", found "${o}".`);return o}function H7(t,e){G7(t,function(r,n){if(r)return e(r);t.tmpdir=n;try{QF(t,n)}catch(o){return e(o)}qF("dir",t.dir,n,function(o,i){if(o)return e(o);t.dir=cr(i)?"":i,qF("template",t.template,n,function(a,s){if(a)return e(a);t.template=s,e(null,t)})})})}function V7(t){let e=t.tmpdir=t2(t);QF(t,e);let r=HF("dir",t.dir,e);return t.dir=cr(r)?"":r,t.template=HF("template",t.template,e),t}function z7(t){return e2(t,-P7,"EBADF")}function xy(t){return e2(t,-k7,"ENOENT")}function e2(t,e,r){return F7?t.code===r:t.code===r&&t.errno===e}function K7(){YF=!0}function G7(t,e){return Te.realpath(t&&t.tmpdir||If.tmpdir(),e)}function t2(t){return Te.realpathSync(t&&t.tmpdir||If.tmpdir())}process.addListener($7,U7);Object.defineProperty(vn.exports,"tmpdir",{enumerable:!0,configurable:!1,get:function(){return t2()}});vn.exports.dir=B7;vn.exports.dirSync=N7;vn.exports.file=T7;vn.exports.fileSync=R7;vn.exports.tmpName=Ay;vn.exports.tmpNameSync=Oy;vn.exports.setGracefulCleanup=K7});var Rf=require("node:process");var Zy=pe(Xy(),1),{program:at,createCommand:kq,createArgument:$q,createOption:Iq,CommanderError:Tq,InvalidArgumentError:Rq,InvalidOptionArgumentError:Bq,Command:Nq,Argument:Lq,Option:jq,Help:Uq}=Zy.default;var fr={name:"@capgo/cli",version:"7.58.0",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};var la=require("node:fs");var vt=pe(nd(),1),Yo=require("node:process"),En=pe(require("node:readline"),1),ud=pe(require("node:readline"),1),lD=require("node:stream"),Sa=pe(id(),1);function j2({onlyFirst:t=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}var U2=j2();function fD(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(U2,"")}function dD(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var pD={exports:{}};(function(t){var e={};t.exports=e,e.eastAsianWidth=function(n){var o=n.charCodeAt(0),i=n.length==2?n.charCodeAt(1):0,a=o;return 55296<=o&&o<=56319&&56320<=i&&i<=57343&&(o&=1023,i&=1023,a=o<<10|i,a+=65536),a==12288||65281<=a&&a<=65376||65504<=a&&a<=65510?"F":a==8361||65377<=a&&a<=65470||65474<=a&&a<=65479||65482<=a&&a<=65487||65490<=a&&a<=65495||65498<=a&&a<=65500||65512<=a&&a<=65518?"H":4352<=a&&a<=4447||4515<=a&&a<=4519||4602<=a&&a<=4607||9001<=a&&a<=9002||11904<=a&&a<=11929||11931<=a&&a<=12019||12032<=a&&a<=12245||12272<=a&&a<=12283||12289<=a&&a<=12350||12353<=a&&a<=12438||12441<=a&&a<=12543||12549<=a&&a<=12589||12593<=a&&a<=12686||12688<=a&&a<=12730||12736<=a&&a<=12771||12784<=a&&a<=12830||12832<=a&&a<=12871||12880<=a&&a<=13054||13056<=a&&a<=19903||19968<=a&&a<=42124||42128<=a&&a<=42182||43360<=a&&a<=43388||44032<=a&&a<=55203||55216<=a&&a<=55238||55243<=a&&a<=55291||63744<=a&&a<=64255||65040<=a&&a<=65049||65072<=a&&a<=65106||65108<=a&&a<=65126||65128<=a&&a<=65131||110592<=a&&a<=110593||127488<=a&&a<=127490||127504<=a&&a<=127546||127552<=a&&a<=127560||127568<=a&&a<=127569||131072<=a&&a<=194367||177984<=a&&a<=196605||196608<=a&&a<=262141?"W":32<=a&&a<=126||162<=a&&a<=163||165<=a&&a<=166||a==172||a==175||10214<=a&&a<=10221||10629<=a&&a<=10630?"Na":a==161||a==164||167<=a&&a<=168||a==170||173<=a&&a<=174||176<=a&&a<=180||182<=a&&a<=186||188<=a&&a<=191||a==198||a==208||215<=a&&a<=216||222<=a&&a<=225||a==230||232<=a&&a<=234||236<=a&&a<=237||a==240||242<=a&&a<=243||247<=a&&a<=250||a==252||a==254||a==257||a==273||a==275||a==283||294<=a&&a<=295||a==299||305<=a&&a<=307||a==312||319<=a&&a<=322||a==324||328<=a&&a<=331||a==333||338<=a&&a<=339||358<=a&&a<=359||a==363||a==462||a==464||a==466||a==468||a==470||a==472||a==474||a==476||a==593||a==609||a==708||a==711||713<=a&&a<=715||a==717||a==720||728<=a&&a<=731||a==733||a==735||768<=a&&a<=879||913<=a&&a<=929||931<=a&&a<=937||945<=a&&a<=961||963<=a&&a<=969||a==1025||1040<=a&&a<=1103||a==1105||a==8208||8211<=a&&a<=8214||8216<=a&&a<=8217||8220<=a&&a<=8221||8224<=a&&a<=8226||8228<=a&&a<=8231||a==8240||8242<=a&&a<=8243||a==8245||a==8251||a==8254||a==8308||a==8319||8321<=a&&a<=8324||a==8364||a==8451||a==8453||a==8457||a==8467||a==8470||8481<=a&&a<=8482||a==8486||a==8491||8531<=a&&a<=8532||8539<=a&&a<=8542||8544<=a&&a<=8555||8560<=a&&a<=8569||a==8585||8592<=a&&a<=8601||8632<=a&&a<=8633||a==8658||a==8660||a==8679||a==8704||8706<=a&&a<=8707||8711<=a&&a<=8712||a==8715||a==8719||a==8721||a==8725||a==8730||8733<=a&&a<=8736||a==8739||a==8741||8743<=a&&a<=8748||a==8750||8756<=a&&a<=8759||8764<=a&&a<=8765||a==8776||a==8780||a==8786||8800<=a&&a<=8801||8804<=a&&a<=8807||8810<=a&&a<=8811||8814<=a&&a<=8815||8834<=a&&a<=8835||8838<=a&&a<=8839||a==8853||a==8857||a==8869||a==8895||a==8978||9312<=a&&a<=9449||9451<=a&&a<=9547||9552<=a&&a<=9587||9600<=a&&a<=9615||9618<=a&&a<=9621||9632<=a&&a<=9633||9635<=a&&a<=9641||9650<=a&&a<=9651||9654<=a&&a<=9655||9660<=a&&a<=9661||9664<=a&&a<=9665||9670<=a&&a<=9672||a==9675||9678<=a&&a<=9681||9698<=a&&a<=9701||a==9711||9733<=a&&a<=9734||a==9737||9742<=a&&a<=9743||9748<=a&&a<=9749||a==9756||a==9758||a==9792||a==9794||9824<=a&&a<=9825||9827<=a&&a<=9829||9831<=a&&a<=9834||9836<=a&&a<=9837||a==9839||9886<=a&&a<=9887||9918<=a&&a<=9919||9924<=a&&a<=9933||9935<=a&&a<=9953||a==9955||9960<=a&&a<=9983||a==10045||a==10071||10102<=a&&a<=10111||11093<=a&&a<=11097||12872<=a&&a<=12879||57344<=a&&a<=63743||65024<=a&&a<=65039||a==65533||127232<=a&&a<=127242||127248<=a&&a<=127277||127280<=a&&a<=127337||127344<=a&&a<=127386||917760<=a&&a<=917999||983040<=a&&a<=1048573||1048576<=a&&a<=1114109?"A":"N"},e.characterLength=function(n){var o=this.eastAsianWidth(n);return o=="F"||o=="W"||o=="A"?2:1};function r(n){return n.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}e.length=function(n){for(var o=r(n),i=0,a=0;a<o.length;a++)i=i+this.characterLength(o[a]);return i},e.slice=function(n,o,i){textLen=e.length(n),o=o||0,i=i||1,o<0&&(o=textLen+o),i<0&&(i=textLen+i);for(var a="",s=0,u=r(n),c=0;c<u.length;c++){var f=u[c],d=e.length(f);if(s>=o-(d==2?1:0))if(s+d<=i)a+=f;else break;s+=d}return a}})(pD);var M2=pD.exports,q2=dD(M2),H2=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\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|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\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]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\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-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},V2=dD(H2);function xa(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=fD(t),t.length===0))return 0;t=t.replace(V2()," ");let r=e.ambiguousIsNarrow?1:2,n=0;for(let o of t){let i=o.codePointAt(0);if(!(i<=31||i>=127&&i<=159||i>=768&&i<=879))switch(q2.eastAsianWidth(o)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}var ad=10,rD=(t=0)=>e=>`\x1B[${e+t}m`,nD=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,oD=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,Ue={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(Ue.modifier);var z2=Object.keys(Ue.color),K2=Object.keys(Ue.bgColor);[...z2,...K2];function G2(){let t=new Map;for(let[e,r]of Object.entries(Ue)){for(let[n,o]of Object.entries(r))Ue[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=Ue[n],t.set(o[0],o[1]);Object.defineProperty(Ue,e,{value:r,enumerable:!1})}return Object.defineProperty(Ue,"codes",{value:t,enumerable:!1}),Ue.color.close="\x1B[39m",Ue.bgColor.close="\x1B[49m",Ue.color.ansi=rD(),Ue.color.ansi256=nD(),Ue.color.ansi16m=oD(),Ue.bgColor.ansi=rD(ad),Ue.bgColor.ansi256=nD(ad),Ue.bgColor.ansi16m=oD(ad),Object.defineProperties(Ue,{rgbToAnsi256:{value:(e,r,n)=>e===r&&r===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5),enumerable:!1},hexToRgb:{value:e=>{let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>Ue.rgbToAnsi256(...Ue.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:e=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,n,o;if(e>=232)r=((e-232)*10+8)/255,n=r,o=r;else{e-=16;let s=e%36;r=Math.floor(e/36)/5,n=Math.floor(s/6)/5,o=s%6/5}let i=Math.max(r,n,o)*2;if(i===0)return 30;let a=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(r));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,r,n)=>Ue.ansi256ToAnsi(Ue.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>Ue.ansi256ToAnsi(Ue.hexToAnsi256(e)),enumerable:!1}}),Ue}var W2=G2(),gu=new Set(["\x1B","\x9B"]),Y2=39,ld="\x07",hD="[",J2="]",mD="m",fd=`${J2}8;;`,iD=t=>`${gu.values().next().value}${hD}${t}${mD}`,aD=t=>`${gu.values().next().value}${fd}${t}${ld}`,X2=t=>t.split(" ").map(e=>xa(e)),sd=(t,e,r)=>{let n=[...e],o=!1,i=!1,a=xa(fD(t[t.length-1]));for(let[s,u]of n.entries()){let c=xa(u);if(a+c<=r?t[t.length-1]+=u:(t.push(u),a=0),gu.has(u)&&(o=!0,i=n.slice(s+1).join("").startsWith(fd)),o){i?u===ld&&(o=!1,i=!1):u===mD&&(o=!1);continue}a+=c,a===r&&s<n.length-1&&(t.push(""),a=0)}!a&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},Z2=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(xa(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},Q2=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let n="",o,i,a=X2(t),s=[""];for(let[c,f]of t.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let d=xa(s[s.length-1]);if(c!==0&&(d>=e&&(r.wordWrap===!1||r.trim===!1)&&(s.push(""),d=0),(d>0||r.trim===!1)&&(s[s.length-1]+=" ",d++)),r.hard&&a[c]>e){let p=e-d,h=1+Math.floor((a[c]-p-1)/e);Math.floor((a[c]-1)/e)<h&&s.push(""),sd(s,f,e);continue}if(d+a[c]>e&&d>0&&a[c]>0){if(r.wordWrap===!1&&d<e){sd(s,f,e);continue}s.push("")}if(d+a[c]>e&&r.wordWrap===!1){sd(s,f,e);continue}s[s.length-1]+=f}r.trim!==!1&&(s=s.map(c=>Z2(c)));let u=[...s.join(`
112
+ `,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var H1=x((SX,q1)=>{"use strict";var s9=vf(),{MAX_LENGTH:j1,CHAR_BACKSLASH:fy,CHAR_BACKTICK:u9,CHAR_COMMA:c9,CHAR_DOT:l9,CHAR_LEFT_PARENTHESES:f9,CHAR_RIGHT_PARENTHESES:d9,CHAR_LEFT_CURLY_BRACE:p9,CHAR_RIGHT_CURLY_BRACE:h9,CHAR_LEFT_SQUARE_BRACKET:U1,CHAR_RIGHT_SQUARE_BRACKET:M1,CHAR_DOUBLE_QUOTE:m9,CHAR_SINGLE_QUOTE:g9,CHAR_NO_BREAK_SPACE:y9,CHAR_ZERO_WIDTH_NOBREAK_SPACE:D9}=L1(),b9=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(j1,r.maxLength):j1;if(t.length>n)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${n})`);let o={type:"root",input:t,nodes:[]},i=[o],a=o,s=o,u=0,c=t.length,f=0,d=0,p,h=()=>t[f++],m=y=>{if(y.type==="text"&&s.type==="dot"&&(s.type="text"),s&&s.type==="text"&&y.type==="text"){s.value+=y.value;return}return a.nodes.push(y),y.parent=a,y.prev=s,s=y,y};for(m({type:"bos"});f<c;)if(a=i[i.length-1],p=h(),!(p===D9||p===y9)){if(p===fy){m({type:"text",value:(e.keepEscaping?p:"")+h()});continue}if(p===M1){m({type:"text",value:"\\"+p});continue}if(p===U1){u++;let y;for(;f<c&&(y=h());){if(p+=y,y===U1){u++;continue}if(y===fy){p+=h();continue}if(y===M1&&(u--,u===0))break}m({type:"text",value:p});continue}if(p===f9){a=m({type:"paren",nodes:[]}),i.push(a),m({type:"text",value:p});continue}if(p===d9){if(a.type!=="paren"){m({type:"text",value:p});continue}a=i.pop(),m({type:"text",value:p}),a=i[i.length-1];continue}if(p===m9||p===g9||p===u9){let y=p,b;for(e.keepQuotes!==!0&&(p="");f<c&&(b=h());){if(b===fy){p+=b+h();continue}if(b===y){e.keepQuotes===!0&&(p+=b);break}p+=b}m({type:"text",value:p});continue}if(p===p9){d++;let b={type:"brace",open:!0,close:!1,dollar:s.value&&s.value.slice(-1)==="$"||a.dollar===!0,depth:d,commas:0,ranges:0,nodes:[]};a=m(b),i.push(a),m({type:"open",value:p});continue}if(p===h9){if(a.type!=="brace"){m({type:"text",value:p});continue}let y="close";a=i.pop(),a.close=!0,m({type:y,value:p}),d--,a=i[i.length-1];continue}if(p===c9&&d>0){if(a.ranges>0){a.ranges=0;let y=a.nodes.shift();a.nodes=[y,{type:"text",value:s9(a)}]}m({type:"comma",value:p}),a.commas++;continue}if(p===l9&&d>0&&a.commas===0){let y=a.nodes;if(d===0||y.length===0){m({type:"text",value:p});continue}if(s.type==="dot"){if(a.range=[],s.value+=p,s.type="range",a.nodes.length!==3&&a.nodes.length!==5){a.invalid=!0,a.ranges=0,s.type="text";continue}a.ranges++,a.args=[];continue}if(s.type==="range"){y.pop();let b=y[y.length-1];b.value+=s.value+p,s=b,a.ranges--;continue}m({type:"dot",value:p});continue}m({type:"text",value:p})}do if(a=i.pop(),a.type!=="root"){a.nodes.forEach(v=>{v.nodes||(v.type==="open"&&(v.isOpen=!0),v.type==="close"&&(v.isClose=!0),v.nodes||(v.type="text"),v.invalid=!0)});let y=i[i.length-1],b=y.nodes.indexOf(a);y.nodes.splice(b,1,...a.nodes)}while(i.length>0);return m({type:"eos"}),o};q1.exports=b9});var K1=x((xX,z1)=>{"use strict";var V1=vf(),w9=I1(),v9=B1(),C9=H1(),sr=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let o=sr.create(n,e);Array.isArray(o)?r.push(...o):r.push(o)}else r=[].concat(sr.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};sr.parse=(t,e={})=>C9(t,e);sr.stringify=(t,e={})=>V1(typeof t=="string"?sr.parse(t,e):t,e);sr.compile=(t,e={})=>(typeof t=="string"&&(t=sr.parse(t,e)),w9(t,e));sr.expand=(t,e={})=>{typeof t=="string"&&(t=sr.parse(t,e));let r=v9(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};sr.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?sr.compile(t,e):sr.expand(t,e);z1.exports=sr});var Ys=x((AX,X1)=>{"use strict";var E9=require("path"),Yr="\\\\/",G1=`[^${Yr}]`,wn="\\.",_9="\\+",S9="\\?",_f="\\/",x9="(?=.)",W1="[^/]",dy=`(?:${_f}|$)`,Y1=`(?:^|${_f})`,py=`${wn}{1,2}${dy}`,A9=`(?!${wn})`,O9=`(?!${Y1}${py})`,F9=`(?!${wn}{0,1}${dy})`,P9=`(?!${py})`,k9=`[^.${_f}]`,$9=`${W1}*?`,J1={DOT_LITERAL:wn,PLUS_LITERAL:_9,QMARK_LITERAL:S9,SLASH_LITERAL:_f,ONE_CHAR:x9,QMARK:W1,END_ANCHOR:dy,DOTS_SLASH:py,NO_DOT:A9,NO_DOTS:O9,NO_DOT_SLASH:F9,NO_DOTS_SLASH:P9,QMARK_NO_DOT:k9,STAR:$9,START_ANCHOR:Y1},I9={...J1,SLASH_LITERAL:`[${Yr}]`,QMARK:G1,STAR:`${G1}*?`,DOTS_SLASH:`${wn}{1,2}(?:[${Yr}]|$)`,NO_DOT:`(?!${wn})`,NO_DOTS:`(?!(?:^|[${Yr}])${wn}{1,2}(?:[${Yr}]|$))`,NO_DOT_SLASH:`(?!${wn}{0,1}(?:[${Yr}]|$))`,NO_DOTS_SLASH:`(?!${wn}{1,2}(?:[${Yr}]|$))`,QMARK_NO_DOT:`[^.${Yr}]`,START_ANCHOR:`(?:^|[${Yr}])`,END_ANCHOR:`(?:[${Yr}]|$)`},T9={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};X1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:T9,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:E9.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?I9:J1}}});var Js=x(Xt=>{"use strict";var R9=require("path"),B9=process.platform==="win32",{REGEX_BACKSLASH:N9,REGEX_REMOVE_BACKSLASH:L9,REGEX_SPECIAL_CHARS:j9,REGEX_SPECIAL_CHARS_GLOBAL:U9}=Ys();Xt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Xt.hasRegexChars=t=>j9.test(t);Xt.isRegexChar=t=>t.length===1&&Xt.hasRegexChars(t);Xt.escapeRegex=t=>t.replace(U9,"\\$1");Xt.toPosixSlashes=t=>t.replace(N9,"/");Xt.removeBackslashes=t=>t.replace(L9,e=>e==="\\"?"":e);Xt.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Xt.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:B9===!0||R9.sep==="\\";Xt.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?Xt.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};Xt.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Xt.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",o=r.contains?"":"$",i=`${n}(?:${t})${o}`;return e.negated===!0&&(i=`(?:^(?!${i}).*$)`),i}});var iF=x((FX,oF)=>{"use strict";var Z1=Js(),{CHAR_ASTERISK:hy,CHAR_AT:M9,CHAR_BACKWARD_SLASH:Xs,CHAR_COMMA:q9,CHAR_DOT:my,CHAR_EXCLAMATION_MARK:gy,CHAR_FORWARD_SLASH:nF,CHAR_LEFT_CURLY_BRACE:yy,CHAR_LEFT_PARENTHESES:Dy,CHAR_LEFT_SQUARE_BRACKET:H9,CHAR_PLUS:V9,CHAR_QUESTION_MARK:Q1,CHAR_RIGHT_CURLY_BRACE:z9,CHAR_RIGHT_PARENTHESES:eF,CHAR_RIGHT_SQUARE_BRACKET:K9}=Ys(),tF=t=>t===nF||t===Xs,rF=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},G9=(t,e)=>{let r=e||{},n=t.length-1,o=r.parts===!0||r.scanToEnd===!0,i=[],a=[],s=[],u=t,c=-1,f=0,d=0,p=!1,h=!1,m=!1,y=!1,b=!1,v=!1,E=!1,g=!1,_=!1,S=!1,k=0,T,B,F={value:"",depth:0,isGlob:!1},L=()=>c>=n,A=()=>u.charCodeAt(c+1),q=()=>(T=B,u.charCodeAt(++c));for(;c<n;){B=q();let w;if(B===Xs){E=F.backslashes=!0,B=q(),B===yy&&(v=!0);continue}if(v===!0||B===yy){for(k++;L()!==!0&&(B=q());){if(B===Xs){E=F.backslashes=!0,q();continue}if(B===yy){k++;continue}if(v!==!0&&B===my&&(B=q())===my){if(p=F.isBrace=!0,m=F.isGlob=!0,S=!0,o===!0)continue;break}if(v!==!0&&B===q9){if(p=F.isBrace=!0,m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===z9&&(k--,k===0)){v=!1,p=F.isBrace=!0,S=!0;break}}if(o===!0)continue;break}if(B===nF){if(i.push(c),a.push(F),F={value:"",depth:0,isGlob:!1},S===!0)continue;if(T===my&&c===f+1){f+=2;continue}d=c+1;continue}if(r.noext!==!0&&(B===V9||B===M9||B===hy||B===Q1||B===gy)===!0&&A()===Dy){if(m=F.isGlob=!0,y=F.isExtglob=!0,S=!0,B===gy&&c===f&&(_=!0),o===!0){for(;L()!==!0&&(B=q());){if(B===Xs){E=F.backslashes=!0,B=q();continue}if(B===eF){m=F.isGlob=!0,S=!0;break}}continue}break}if(B===hy){if(T===hy&&(b=F.isGlobstar=!0),m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===Q1){if(m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===H9){for(;L()!==!0&&(w=q());){if(w===Xs){E=F.backslashes=!0,q();continue}if(w===K9){h=F.isBracket=!0,m=F.isGlob=!0,S=!0;break}}if(o===!0)continue;break}if(r.nonegate!==!0&&B===gy&&c===f){g=F.negated=!0,f++;continue}if(r.noparen!==!0&&B===Dy){if(m=F.isGlob=!0,o===!0){for(;L()!==!0&&(B=q());){if(B===Dy){E=F.backslashes=!0,B=q();continue}if(B===eF){S=!0;break}}continue}break}if(m===!0){if(S=!0,o===!0)continue;break}}r.noext===!0&&(y=!1,m=!1);let j=u,Z="",P="";f>0&&(Z=u.slice(0,f),u=u.slice(f),d-=f),j&&m===!0&&d>0?(j=u.slice(0,d),P=u.slice(d)):m===!0?(j="",P=u):j=u,j&&j!==""&&j!=="/"&&j!==u&&tF(j.charCodeAt(j.length-1))&&(j=j.slice(0,-1)),r.unescape===!0&&(P&&(P=Z1.removeBackslashes(P)),j&&E===!0&&(j=Z1.removeBackslashes(j)));let D={prefix:Z,input:t,start:f,base:j,glob:P,isBrace:p,isBracket:h,isGlob:m,isExtglob:y,isGlobstar:b,negated:g,negatedExtglob:_};if(r.tokens===!0&&(D.maxDepth=0,tF(B)||a.push(F),D.tokens=a),r.parts===!0||r.tokens===!0){let w;for(let C=0;C<i.length;C++){let O=w?w+1:f,R=i[C],$=t.slice(O,R);r.tokens&&(C===0&&f!==0?(a[C].isPrefix=!0,a[C].value=Z):a[C].value=$,rF(a[C]),D.maxDepth+=a[C].depth),(C!==0||$!=="")&&s.push($),w=R}if(w&&w+1<t.length){let C=t.slice(w+1);s.push(C),r.tokens&&(a[a.length-1].value=C,rF(a[a.length-1]),D.maxDepth+=a[a.length-1].depth)}D.slashes=i,D.parts=s}return D};oF.exports=G9});var uF=x((PX,sF)=>{"use strict";var Sf=Ys(),ur=Js(),{MAX_LENGTH:xf,POSIX_REGEX_SOURCE:W9,REGEX_NON_SPECIAL_CHARS:Y9,REGEX_SPECIAL_CHARS_BACKREF:J9,REPLACEMENTS:aF}=Sf,X9=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(o=>ur.escapeRegex(o)).join("..")}return r},Da=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,by=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=aF[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(xf,r.maxLength):xf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);let i={type:"bos",value:"",output:r.prepend||""},a=[i],s=r.capture?"":"?:",u=ur.isWindows(e),c=Sf.globChars(u),f=Sf.extglobChars(c),{DOT_LITERAL:d,PLUS_LITERAL:p,SLASH_LITERAL:h,ONE_CHAR:m,DOTS_SLASH:y,NO_DOT:b,NO_DOT_SLASH:v,NO_DOTS_SLASH:E,QMARK:g,QMARK_NO_DOT:_,STAR:S,START_ANCHOR:k}=c,T=K=>`(${s}(?:(?!${k}${K.dot?y:d}).)*?)`,B=r.dot?"":b,F=r.dot?g:_,L=r.bash===!0?T(r):S;r.capture&&(L=`(${L})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:a};t=ur.removePrefix(t,A),o=t.length;let q=[],j=[],Z=[],P=i,D,w=()=>A.index===o-1,C=A.peek=(K=1)=>t[A.index+K],O=A.advance=()=>t[++A.index]||"",R=()=>t.slice(A.index+1),$=(K="",Se=0)=>{A.consumed+=K,A.index+=Se},H=K=>{A.output+=K.output!=null?K.output:K.value,$(K.value)},I=()=>{let K=1;for(;C()==="!"&&(C(2)!=="("||C(3)==="?");)O(),A.start++,K++;return K%2===0?!1:(A.negated=!0,A.start++,!0)},N=K=>{A[K]++,Z.push(K)},X=K=>{A[K]--,Z.pop()},U=K=>{if(P.type==="globstar"){let Se=A.braces>0&&(K.type==="comma"||K.type==="brace"),z=K.extglob===!0||q.length&&(K.type==="pipe"||K.type==="paren");K.type!=="slash"&&K.type!=="paren"&&!Se&&!z&&(A.output=A.output.slice(0,-P.output.length),P.type="star",P.value="*",P.output=L,A.output+=P.output)}if(q.length&&K.type!=="paren"&&(q[q.length-1].inner+=K.value),(K.value||K.output)&&H(K),P&&P.type==="text"&&K.type==="text"){P.value+=K.value,P.output=(P.output||"")+K.value;return}K.prev=P,a.push(K),P=K},oe=(K,Se)=>{let z={...f[Se],conditions:1,inner:""};z.prev=P,z.parens=A.parens,z.output=A.output;let de=(r.capture?"(":"")+z.open;N("parens"),U({type:K,value:Se,output:A.output?"":m}),U({type:"paren",extglob:!0,value:O(),output:de}),q.push(z)},Zt=K=>{let Se=K.close+(r.capture?")":""),z;if(K.type==="negate"){let de=L;if(K.inner&&K.inner.length>1&&K.inner.includes("/")&&(de=T(r)),(de!==L||w()||/^\)+$/.test(R()))&&(Se=K.close=`)$))${de}`),K.inner.includes("*")&&(z=R())&&/^\.[^\\/.]+$/.test(z)){let Ve=by(z,{...e,fastpaths:!1}).output;Se=K.close=`)${Ve})${de})`}K.prev.type==="bos"&&(A.negatedExtglob=!0)}U({type:"paren",extglob:!0,value:D,output:Se}),X("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let K=!1,Se=t.replace(J9,(z,de,Ve,Ot,ot,Lf)=>Ot==="\\"?(K=!0,z):Ot==="?"?de?de+Ot+(ot?g.repeat(ot.length):""):Lf===0?F+(ot?g.repeat(ot.length):""):g.repeat(Ve.length):Ot==="."?d.repeat(Ve.length):Ot==="*"?de?de+Ot+(ot?L:""):L:de?z:`\\${z}`);return K===!0&&(r.unescape===!0?Se=Se.replace(/\\/g,""):Se=Se.replace(/\\+/g,z=>z.length%2===0?"\\\\":z?"\\":"")),Se===t&&r.contains===!0?(A.output=t,A):(A.output=ur.wrapOutput(Se,A,e),A)}for(;!w();){if(D=O(),D==="\0")continue;if(D==="\\"){let z=C();if(z==="/"&&r.bash!==!0||z==="."||z===";")continue;if(!z){D+="\\",U({type:"text",value:D});continue}let de=/^\\+/.exec(R()),Ve=0;if(de&&de[0].length>2&&(Ve=de[0].length,A.index+=Ve,Ve%2!==0&&(D+="\\")),r.unescape===!0?D=O():D+=O(),A.brackets===0){U({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||P.value==="["||P.value==="[^")){if(r.posix!==!1&&D===":"){let z=P.value.slice(1);if(z.includes("[")&&(P.posix=!0,z.includes(":"))){let de=P.value.lastIndexOf("["),Ve=P.value.slice(0,de),Ot=P.value.slice(de+2),ot=W9[Ot];if(ot){P.value=Ve+ot,A.backtrack=!0,O(),!i.output&&a.indexOf(P)===1&&(i.output=m);continue}}}(D==="["&&C()!==":"||D==="-"&&C()==="]")&&(D=`\\${D}`),D==="]"&&(P.value==="["||P.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&P.value==="["&&(D="^"),P.value+=D,H({value:D});continue}if(A.quotes===1&&D!=='"'){D=ur.escapeRegex(D),P.value+=D,H({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&U({type:"text",value:D});continue}if(D==="("){N("parens"),U({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Da("opening","("));let z=q[q.length-1];if(z&&A.parens===z.parens+1){Zt(q.pop());continue}U({type:"paren",value:D,output:A.parens?")":"\\)"}),X("parens");continue}if(D==="["){if(r.nobracket===!0||!R().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Da("closing","]"));D=`\\${D}`}else N("brackets");U({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||P&&P.type==="bracket"&&P.value.length===1){U({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Da("opening","["));U({type:"text",value:D,output:`\\${D}`});continue}X("brackets");let z=P.value.slice(1);if(P.posix!==!0&&z[0]==="^"&&!z.includes("/")&&(D=`/${D}`),P.value+=D,H({value:D}),r.literalBrackets===!1||ur.hasRegexChars(z))continue;let de=ur.escapeRegex(P.value);if(A.output=A.output.slice(0,-P.value.length),r.literalBrackets===!0){A.output+=de,P.value=de;continue}P.value=`(${s}${de}|${P.value})`,A.output+=P.value;continue}if(D==="{"&&r.nobrace!==!0){N("braces");let z={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};j.push(z),U(z);continue}if(D==="}"){let z=j[j.length-1];if(r.nobrace===!0||!z){U({type:"text",value:D,output:D});continue}let de=")";if(z.dots===!0){let Ve=a.slice(),Ot=[];for(let ot=Ve.length-1;ot>=0&&(a.pop(),Ve[ot].type!=="brace");ot--)Ve[ot].type!=="dots"&&Ot.unshift(Ve[ot].value);de=X9(Ot,r),A.backtrack=!0}if(z.comma!==!0&&z.dots!==!0){let Ve=A.output.slice(0,z.outputIndex),Ot=A.tokens.slice(z.tokensIndex);z.value=z.output="\\{",D=de="\\}",A.output=Ve;for(let ot of Ot)A.output+=ot.output||ot.value}U({type:"brace",value:D,output:de}),X("braces"),j.pop();continue}if(D==="|"){q.length>0&&q[q.length-1].conditions++,U({type:"text",value:D});continue}if(D===","){let z=D,de=j[j.length-1];de&&Z[Z.length-1]==="braces"&&(de.comma=!0,z="|"),U({type:"comma",value:D,output:z});continue}if(D==="/"){if(P.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",a.pop(),P=i;continue}U({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&P.type==="dot"){P.value==="."&&(P.output=d);let z=j[j.length-1];P.type="dots",P.output+=D,P.value+=D,z.dots=!0;continue}if(A.braces+A.parens===0&&P.type!=="bos"&&P.type!=="slash"){U({type:"text",value:D,output:d});continue}U({type:"dot",value:D,output:d});continue}if(D==="?"){if(!(P&&P.value==="(")&&r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("qmark",D);continue}if(P&&P.type==="paren"){let de=C(),Ve=D;if(de==="<"&&!ur.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(P.value==="("&&!/[!=<:]/.test(de)||de==="<"&&!/<([!=]|\w+>)/.test(R()))&&(Ve=`\\${D}`),U({type:"text",value:D,output:Ve});continue}if(r.dot!==!0&&(P.type==="slash"||P.type==="bos")){U({type:"qmark",value:D,output:_});continue}U({type:"qmark",value:D,output:g});continue}if(D==="!"){if(r.noextglob!==!0&&C()==="("&&(C(2)!=="?"||!/[!=<:]/.test(C(3)))){oe("negate",D);continue}if(r.nonegate!==!0&&A.index===0){I();continue}}if(D==="+"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("plus",D);continue}if(P&&P.value==="("||r.regex===!1){U({type:"plus",value:D,output:p});continue}if(P&&(P.type==="bracket"||P.type==="paren"||P.type==="brace")||A.parens>0){U({type:"plus",value:D});continue}U({type:"plus",value:p});continue}if(D==="@"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){U({type:"at",extglob:!0,value:D,output:""});continue}U({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let z=Y9.exec(R());z&&(D+=z[0],A.index+=z[0].length),U({type:"text",value:D});continue}if(P&&(P.type==="globstar"||P.star===!0)){P.type="star",P.star=!0,P.value+=D,P.output=L,A.backtrack=!0,A.globstar=!0,$(D);continue}let K=R();if(r.noextglob!==!0&&/^\([^?]/.test(K)){oe("star",D);continue}if(P.type==="star"){if(r.noglobstar===!0){$(D);continue}let z=P.prev,de=z.prev,Ve=z.type==="slash"||z.type==="bos",Ot=de&&(de.type==="star"||de.type==="globstar");if(r.bash===!0&&(!Ve||K[0]&&K[0]!=="/")){U({type:"star",value:D,output:""});continue}let ot=A.braces>0&&(z.type==="comma"||z.type==="brace"),Lf=q.length&&(z.type==="pipe"||z.type==="paren");if(!Ve&&z.type!=="paren"&&!ot&&!Lf){U({type:"star",value:D,output:""});continue}for(;K.slice(0,3)==="/**";){let nu=t[A.index+4];if(nu&&nu!=="/")break;K=K.slice(3),$("/**",3)}if(z.type==="bos"&&w()){P.type="globstar",P.value+=D,P.output=T(r),A.output=P.output,A.globstar=!0,$(D);continue}if(z.type==="slash"&&z.prev.type!=="bos"&&!Ot&&w()){A.output=A.output.slice(0,-(z.output+P.output).length),z.output=`(?:${z.output}`,P.type="globstar",P.output=T(r)+(r.strictSlashes?")":"|$)"),P.value+=D,A.globstar=!0,A.output+=z.output+P.output,$(D);continue}if(z.type==="slash"&&z.prev.type!=="bos"&&K[0]==="/"){let nu=K[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(z.output+P.output).length),z.output=`(?:${z.output}`,P.type="globstar",P.output=`${T(r)}${h}|${h}${nu})`,P.value+=D,A.output+=z.output+P.output,A.globstar=!0,$(D+O()),U({type:"slash",value:"/",output:""});continue}if(z.type==="bos"&&K[0]==="/"){P.type="globstar",P.value+=D,P.output=`(?:^|${h}|${T(r)}${h})`,A.output=P.output,A.globstar=!0,$(D+O()),U({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-P.output.length),P.type="globstar",P.output=T(r),P.value+=D,A.output+=P.output,A.globstar=!0,$(D);continue}let Se={type:"star",value:D,output:L};if(r.bash===!0){Se.output=".*?",(P.type==="bos"||P.type==="slash")&&(Se.output=B+Se.output),U(Se);continue}if(P&&(P.type==="bracket"||P.type==="paren")&&r.regex===!0){Se.output=D,U(Se);continue}(A.index===A.start||P.type==="slash"||P.type==="dot")&&(P.type==="dot"?(A.output+=v,P.output+=v):r.dot===!0?(A.output+=E,P.output+=E):(A.output+=B,P.output+=B),C()!=="*"&&(A.output+=m,P.output+=m)),U(Se)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing","]"));A.output=ur.escapeLast(A.output,"["),X("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing",")"));A.output=ur.escapeLast(A.output,"("),X("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing","}"));A.output=ur.escapeLast(A.output,"{"),X("braces")}if(r.strictSlashes!==!0&&(P.type==="star"||P.type==="bracket")&&U({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let K of A.tokens)A.output+=K.output!=null?K.output:K.value,K.suffix&&(A.output+=K.suffix)}return A};by.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(xf,r.maxLength):xf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);t=aF[t]||t;let i=ur.isWindows(e),{DOT_LITERAL:a,SLASH_LITERAL:s,ONE_CHAR:u,DOTS_SLASH:c,NO_DOT:f,NO_DOTS:d,NO_DOTS_SLASH:p,STAR:h,START_ANCHOR:m}=Sf.globChars(i),y=r.dot?d:f,b=r.dot?p:f,v=r.capture?"":"?:",E={negated:!1,prefix:""},g=r.bash===!0?".*?":h;r.capture&&(g=`(${g})`);let _=B=>B.noglobstar===!0?g:`(${v}(?:(?!${m}${B.dot?c:a}).)*?)`,S=B=>{switch(B){case"*":return`${y}${u}${g}`;case".*":return`${a}${u}${g}`;case"*.*":return`${y}${g}${a}${u}${g}`;case"*/*":return`${y}${g}${s}${u}${b}${g}`;case"**":return y+_(r);case"**/*":return`(?:${y}${_(r)}${s})?${b}${u}${g}`;case"**/*.*":return`(?:${y}${_(r)}${s})?${b}${g}${a}${u}${g}`;case"**/.*":return`(?:${y}${_(r)}${s})?${a}${u}${g}`;default:{let F=/^(.*?)\.(\w+)$/.exec(B);if(!F)return;let L=S(F[1]);return L?L+a+F[2]:void 0}}},k=ur.removePrefix(t,E),T=S(k);return T&&r.strictSlashes!==!0&&(T+=`${s}?`),T};sF.exports=by});var lF=x((kX,cF)=>{"use strict";var Z9=require("path"),Q9=iF(),wy=uF(),vy=Js(),e7=Ys(),t7=t=>t&&typeof t=="object"&&!Array.isArray(t),rt=(t,e,r=!1)=>{if(Array.isArray(t)){let f=t.map(p=>rt(p,e,r));return p=>{for(let h of f){let m=h(p);if(m)return m}return!1}}let n=t7(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!n)throw new TypeError("Expected pattern to be a non-empty string");let o=e||{},i=vy.isWindows(e),a=n?rt.compileRe(t,e):rt.makeRe(t,e,!1,!0),s=a.state;delete a.state;let u=()=>!1;if(o.ignore){let f={...e,ignore:null,onMatch:null,onResult:null};u=rt(o.ignore,f,r)}let c=(f,d=!1)=>{let{isMatch:p,match:h,output:m}=rt.test(f,a,e,{glob:t,posix:i}),y={glob:t,state:s,regex:a,posix:i,input:f,output:m,match:h,isMatch:p};return typeof o.onResult=="function"&&o.onResult(y),p===!1?(y.isMatch=!1,d?y:!1):u(f)?(typeof o.onIgnore=="function"&&o.onIgnore(y),y.isMatch=!1,d?y:!1):(typeof o.onMatch=="function"&&o.onMatch(y),d?y:!0)};return r&&(c.state=s),c};rt.test=(t,e,r,{glob:n,posix:o}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let i=r||{},a=i.format||(o?vy.toPosixSlashes:null),s=t===n,u=s&&a?a(t):t;return s===!1&&(u=a?a(t):t,s=u===n),(s===!1||i.capture===!0)&&(i.matchBase===!0||i.basename===!0?s=rt.matchBase(t,e,r,o):s=e.exec(u)),{isMatch:!!s,match:s,output:u}};rt.matchBase=(t,e,r,n=vy.isWindows(r))=>(e instanceof RegExp?e:rt.makeRe(e,r)).test(Z9.basename(t));rt.isMatch=(t,e,r)=>rt(e,r)(t);rt.parse=(t,e)=>Array.isArray(t)?t.map(r=>rt.parse(r,e)):wy(t,{...e,fastpaths:!1});rt.scan=(t,e)=>Q9(t,e);rt.compileRe=(t,e,r=!1,n=!1)=>{if(r===!0)return t.output;let o=e||{},i=o.contains?"":"^",a=o.contains?"":"$",s=`${i}(?:${t.output})${a}`;t&&t.negated===!0&&(s=`^(?!${s}).*$`);let u=rt.toRegex(s,e);return n===!0&&(u.state=t),u};rt.makeRe=(t,e={},r=!1,n=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let o={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(o.output=wy.fastpaths(t,e)),o.output||(o=wy(t,e)),rt.compileRe(o,e,r,n)};rt.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};rt.constants=e7;cF.exports=rt});var dF=x(($X,fF)=>{"use strict";fF.exports=lF()});var DF=x((IX,yF)=>{"use strict";var hF=require("util"),mF=K1(),Jr=dF(),Cy=Js(),pF=t=>t===""||t==="./",gF=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},je=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,o=new Set,i=new Set,a=0,s=f=>{i.add(f.output),r&&r.onResult&&r.onResult(f)};for(let f=0;f<e.length;f++){let d=Jr(String(e[f]),{...r,onResult:s},!0),p=d.state.negated||d.state.negatedExtglob;p&&a++;for(let h of t){let m=d(h,!0);(p?!m.isMatch:m.isMatch)&&(p?n.add(m.output):(n.delete(m.output),o.add(m.output)))}}let c=(a===e.length?[...i]:[...o]).filter(f=>!n.has(f));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(f=>f.replace(/\\/g,"")):e}return c};je.match=je;je.matcher=(t,e)=>Jr(t,e);je.isMatch=(t,e,r)=>Jr(e,r)(t);je.any=je.isMatch;je.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,o=[],i=s=>{r.onResult&&r.onResult(s),o.push(s.output)},a=new Set(je(t,e,{...r,onResult:i}));for(let s of o)a.has(s)||n.add(s);return[...n]};je.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${hF.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>je.contains(t,n,r));if(typeof e=="string"){if(pF(t)||pF(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return je.isMatch(t,e,{...r,contains:!0})};je.matchKeys=(t,e,r)=>{if(!Cy.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=je(Object.keys(t),e,r),o={};for(let i of n)o[i]=t[i];return o};je.some=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Jr(String(o),r);if(n.some(a=>i(a)))return!0}return!1};je.every=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Jr(String(o),r);if(!n.every(a=>i(a)))return!1}return!0};je.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${hF.inspect(t)}"`);return[].concat(e).every(n=>Jr(n,r)(t))};je.capture=(t,e,r)=>{let n=Cy.isWindows(r),i=Jr.makeRe(String(t),{...r,capture:!0}).exec(n?Cy.toPosixSlashes(e):e);if(i)return i.slice(1).map(a=>a===void 0?"":a)};je.makeRe=(...t)=>Jr.makeRe(...t);je.scan=(...t)=>Jr.scan(...t);je.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let o of mF(String(n),e))r.push(Jr.parse(o,e));return r};je.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!gF(t)?[t]:mF(t,e)};je.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return je.braces(t,{...e,expand:!0})};je.hasBraces=gF;yF.exports=je});var r2=x((IZ,vn)=>{var Te=require("fs"),If=require("os"),wt=require("path"),jF=require("crypto"),Zr={fs:Te.constants,os:If.constants},UF="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",VF=/XXXXXX/,O7=3,zF=(Zr.O_CREAT||Zr.fs.O_CREAT)|(Zr.O_EXCL||Zr.fs.O_EXCL)|(Zr.O_RDWR||Zr.fs.O_RDWR),F7=If.platform()==="win32",P7=Zr.EBADF||Zr.os.errno.EBADF,k7=Zr.ENOENT||Zr.os.errno.ENOENT,KF=448,GF=384,$7="exit",wa=[],WF=Te.rmdirSync.bind(Te),YF=!1;function I7(t,e){return Te.rm(t,{recursive:!0},e)}function JF(t){return Te.rmSync(t,{recursive:!0})}function Ay(t,e){let r=va(t,e),n=r[0],o=r[1];H7(n,function(i,a){if(i)return o(i);let s=a.tries;(function u(){try{let c=ZF(a);Te.stat(c,function(f){if(!f)return s-- >0?u():o(new Error("Could not get a unique tmp filename, max tries reached "+c));o(null,c)})}catch(c){o(c)}})()})}function Oy(t){let e=va(t),r=e[0],n=V7(r),o=n.tries;do{let i=ZF(n);try{Te.statSync(i)}catch{return i}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function T7(t,e){let r=va(t,e),n=r[0],o=r[1];Ay(n,function(a,s){if(a)return o(a);Te.open(s,zF,n.mode||GF,function(c,f){if(c)return o(c);if(n.discardDescriptor)return Te.close(f,function(p){return o(p,s,void 0,Sy(s,-1,n,!1))});{let d=n.discardDescriptor||n.detachDescriptor;o(null,s,f,Sy(s,d?-1:f,n,!1))}})})}function R7(t){let e=va(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,o=Oy(r),i=Te.openSync(o,zF,r.mode||GF);return r.discardDescriptor&&(Te.closeSync(i),i=void 0),{name:o,fd:i,removeCallback:Sy(o,n?-1:i,r,!0)}}function B7(t,e){let r=va(t,e),n=r[0],o=r[1];Ay(n,function(a,s){if(a)return o(a);Te.mkdir(s,n.mode||KF,function(c){if(c)return o(c);o(null,s,XF(s,n,!1))})})}function N7(t){let e=va(t),r=e[0],n=Oy(r);return Te.mkdirSync(n,r.mode||KF),{name:n,removeCallback:XF(n,r,!0)}}function L7(t,e){let r=function(n){if(n&&!xy(n))return e(n);e()};0<=t[0]?Te.close(t[0],function(){Te.unlink(t[1],r)}):Te.unlink(t[1],r)}function j7(t){let e=null;try{0<=t[0]&&Te.closeSync(t[0])}catch(r){if(!z7(r)&&!xy(r))throw r}finally{try{Te.unlinkSync(t[1])}catch(r){xy(r)||(e=r)}}if(e!==null)throw e}function Sy(t,e,r,n){let o=$f(j7,[e,t],n),i=$f(L7,[e,t],n,o);return r.keep||wa.unshift(o),n?o:i}function XF(t,e,r){let n=e.unsafeCleanup?I7:Te.rmdir.bind(Te),o=e.unsafeCleanup?JF:WF,i=$f(o,t,r),a=$f(n,t,r,i);return e.keep||wa.unshift(i),r?i:a}function $f(t,e,r,n){let o=!1;return function i(a){if(!o){let s=n||i,u=wa.indexOf(s);return u>=0&&wa.splice(u,1),o=!0,r||t===WF||t===JF?t(e):t(e,a||function(){})}}}function U7(){if(YF)for(;wa.length;)try{wa[0]()}catch{}}function MF(t){let e=[],r=null;try{r=jF.randomBytes(t)}catch{r=jF.pseudoRandomBytes(t)}for(let n=0;n<t;n++)e.push(UF[r[n]%UF.length]);return e.join("")}function cr(t){return typeof t>"u"}function va(t,e){if(typeof t=="function")return[{},t];if(cr(t))return[{},e];let r={};for(let n of Object.getOwnPropertyNames(t))r[n]=t[n];return[r,e]}function M7(t,e,r){let n=wt.isAbsolute(t)?t:wt.join(e,t);Te.stat(n,function(o){o?Te.realpath(wt.dirname(n),function(i,a){if(i)return r(i);r(null,wt.join(a,wt.basename(n)))}):Te.realpath(n,r)})}function q7(t,e){let r=wt.isAbsolute(t)?t:wt.join(e,t);try{return Te.statSync(r),Te.realpathSync(r)}catch{let o=Te.realpathSync(wt.dirname(r));return wt.join(o,wt.basename(r))}}function ZF(t){let e=t.tmpdir;if(!cr(t.name))return wt.join(e,t.dir,t.name);if(!cr(t.template))return wt.join(e,t.dir,t.template).replace(VF,MF(6));let r=[t.prefix?t.prefix:"tmp","-",process.pid,"-",MF(12),t.postfix?"-"+t.postfix:""].join("");return wt.join(e,t.dir,r)}function QF(t){if(!cr(t.name)){let e=t.name;if(wt.isAbsolute(e))throw new Error(`name option must not contain an absolute path, found "${e}".`);let r=wt.basename(e);if(r===".."||r==="."||r!==e)throw new Error(`name option must not contain a path, found "${e}".`)}if(!cr(t.template)&&!t.template.match(VF))throw new Error(`Invalid template, found "${t.template}".`);if(!cr(t.tries)&&isNaN(t.tries)||t.tries<0)throw new Error(`Invalid tries, found "${t.tries}".`);t.tries=cr(t.name)?t.tries||O7:1,t.keep=!!t.keep,t.detachDescriptor=!!t.detachDescriptor,t.discardDescriptor=!!t.discardDescriptor,t.unsafeCleanup=!!t.unsafeCleanup,t.prefix=cr(t.prefix)?"":t.prefix,t.postfix=cr(t.postfix)?"":t.postfix}function qF(t,e,r,n){if(cr(e))return n(null);M7(e,r,function(o,i){if(o)return n(o);let a=wt.relative(r,i);if(!i.startsWith(r))return n(new Error(`${t} option must be relative to "${r}", found "${a}".`));n(null,a)})}function HF(t,e,r){if(cr(e))return;let n=q7(e,r),o=wt.relative(r,n);if(!n.startsWith(r))throw new Error(`${t} option must be relative to "${r}", found "${o}".`);return o}function H7(t,e){G7(t,function(r,n){if(r)return e(r);t.tmpdir=n;try{QF(t,n)}catch(o){return e(o)}qF("dir",t.dir,n,function(o,i){if(o)return e(o);t.dir=cr(i)?"":i,qF("template",t.template,n,function(a,s){if(a)return e(a);t.template=s,e(null,t)})})})}function V7(t){let e=t.tmpdir=t2(t);QF(t,e);let r=HF("dir",t.dir,e);return t.dir=cr(r)?"":r,t.template=HF("template",t.template,e),t}function z7(t){return e2(t,-P7,"EBADF")}function xy(t){return e2(t,-k7,"ENOENT")}function e2(t,e,r){return F7?t.code===r:t.code===r&&t.errno===e}function K7(){YF=!0}function G7(t,e){return Te.realpath(t&&t.tmpdir||If.tmpdir(),e)}function t2(t){return Te.realpathSync(t&&t.tmpdir||If.tmpdir())}process.addListener($7,U7);Object.defineProperty(vn.exports,"tmpdir",{enumerable:!0,configurable:!1,get:function(){return t2()}});vn.exports.dir=B7;vn.exports.dirSync=N7;vn.exports.file=T7;vn.exports.fileSync=R7;vn.exports.tmpName=Ay;vn.exports.tmpNameSync=Oy;vn.exports.setGracefulCleanup=K7});var Rf=require("node:process");var Zy=pe(Xy(),1),{program:at,createCommand:kq,createArgument:$q,createOption:Iq,CommanderError:Tq,InvalidArgumentError:Rq,InvalidOptionArgumentError:Bq,Command:Nq,Argument:Lq,Option:jq,Help:Uq}=Zy.default;var fr={name:"@capgo/cli",version:"7.58.1",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};var la=require("node:fs");var vt=pe(nd(),1),Yo=require("node:process"),En=pe(require("node:readline"),1),ud=pe(require("node:readline"),1),lD=require("node:stream"),Sa=pe(id(),1);function j2({onlyFirst:t=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}var U2=j2();function fD(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(U2,"")}function dD(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var pD={exports:{}};(function(t){var e={};t.exports=e,e.eastAsianWidth=function(n){var o=n.charCodeAt(0),i=n.length==2?n.charCodeAt(1):0,a=o;return 55296<=o&&o<=56319&&56320<=i&&i<=57343&&(o&=1023,i&=1023,a=o<<10|i,a+=65536),a==12288||65281<=a&&a<=65376||65504<=a&&a<=65510?"F":a==8361||65377<=a&&a<=65470||65474<=a&&a<=65479||65482<=a&&a<=65487||65490<=a&&a<=65495||65498<=a&&a<=65500||65512<=a&&a<=65518?"H":4352<=a&&a<=4447||4515<=a&&a<=4519||4602<=a&&a<=4607||9001<=a&&a<=9002||11904<=a&&a<=11929||11931<=a&&a<=12019||12032<=a&&a<=12245||12272<=a&&a<=12283||12289<=a&&a<=12350||12353<=a&&a<=12438||12441<=a&&a<=12543||12549<=a&&a<=12589||12593<=a&&a<=12686||12688<=a&&a<=12730||12736<=a&&a<=12771||12784<=a&&a<=12830||12832<=a&&a<=12871||12880<=a&&a<=13054||13056<=a&&a<=19903||19968<=a&&a<=42124||42128<=a&&a<=42182||43360<=a&&a<=43388||44032<=a&&a<=55203||55216<=a&&a<=55238||55243<=a&&a<=55291||63744<=a&&a<=64255||65040<=a&&a<=65049||65072<=a&&a<=65106||65108<=a&&a<=65126||65128<=a&&a<=65131||110592<=a&&a<=110593||127488<=a&&a<=127490||127504<=a&&a<=127546||127552<=a&&a<=127560||127568<=a&&a<=127569||131072<=a&&a<=194367||177984<=a&&a<=196605||196608<=a&&a<=262141?"W":32<=a&&a<=126||162<=a&&a<=163||165<=a&&a<=166||a==172||a==175||10214<=a&&a<=10221||10629<=a&&a<=10630?"Na":a==161||a==164||167<=a&&a<=168||a==170||173<=a&&a<=174||176<=a&&a<=180||182<=a&&a<=186||188<=a&&a<=191||a==198||a==208||215<=a&&a<=216||222<=a&&a<=225||a==230||232<=a&&a<=234||236<=a&&a<=237||a==240||242<=a&&a<=243||247<=a&&a<=250||a==252||a==254||a==257||a==273||a==275||a==283||294<=a&&a<=295||a==299||305<=a&&a<=307||a==312||319<=a&&a<=322||a==324||328<=a&&a<=331||a==333||338<=a&&a<=339||358<=a&&a<=359||a==363||a==462||a==464||a==466||a==468||a==470||a==472||a==474||a==476||a==593||a==609||a==708||a==711||713<=a&&a<=715||a==717||a==720||728<=a&&a<=731||a==733||a==735||768<=a&&a<=879||913<=a&&a<=929||931<=a&&a<=937||945<=a&&a<=961||963<=a&&a<=969||a==1025||1040<=a&&a<=1103||a==1105||a==8208||8211<=a&&a<=8214||8216<=a&&a<=8217||8220<=a&&a<=8221||8224<=a&&a<=8226||8228<=a&&a<=8231||a==8240||8242<=a&&a<=8243||a==8245||a==8251||a==8254||a==8308||a==8319||8321<=a&&a<=8324||a==8364||a==8451||a==8453||a==8457||a==8467||a==8470||8481<=a&&a<=8482||a==8486||a==8491||8531<=a&&a<=8532||8539<=a&&a<=8542||8544<=a&&a<=8555||8560<=a&&a<=8569||a==8585||8592<=a&&a<=8601||8632<=a&&a<=8633||a==8658||a==8660||a==8679||a==8704||8706<=a&&a<=8707||8711<=a&&a<=8712||a==8715||a==8719||a==8721||a==8725||a==8730||8733<=a&&a<=8736||a==8739||a==8741||8743<=a&&a<=8748||a==8750||8756<=a&&a<=8759||8764<=a&&a<=8765||a==8776||a==8780||a==8786||8800<=a&&a<=8801||8804<=a&&a<=8807||8810<=a&&a<=8811||8814<=a&&a<=8815||8834<=a&&a<=8835||8838<=a&&a<=8839||a==8853||a==8857||a==8869||a==8895||a==8978||9312<=a&&a<=9449||9451<=a&&a<=9547||9552<=a&&a<=9587||9600<=a&&a<=9615||9618<=a&&a<=9621||9632<=a&&a<=9633||9635<=a&&a<=9641||9650<=a&&a<=9651||9654<=a&&a<=9655||9660<=a&&a<=9661||9664<=a&&a<=9665||9670<=a&&a<=9672||a==9675||9678<=a&&a<=9681||9698<=a&&a<=9701||a==9711||9733<=a&&a<=9734||a==9737||9742<=a&&a<=9743||9748<=a&&a<=9749||a==9756||a==9758||a==9792||a==9794||9824<=a&&a<=9825||9827<=a&&a<=9829||9831<=a&&a<=9834||9836<=a&&a<=9837||a==9839||9886<=a&&a<=9887||9918<=a&&a<=9919||9924<=a&&a<=9933||9935<=a&&a<=9953||a==9955||9960<=a&&a<=9983||a==10045||a==10071||10102<=a&&a<=10111||11093<=a&&a<=11097||12872<=a&&a<=12879||57344<=a&&a<=63743||65024<=a&&a<=65039||a==65533||127232<=a&&a<=127242||127248<=a&&a<=127277||127280<=a&&a<=127337||127344<=a&&a<=127386||917760<=a&&a<=917999||983040<=a&&a<=1048573||1048576<=a&&a<=1114109?"A":"N"},e.characterLength=function(n){var o=this.eastAsianWidth(n);return o=="F"||o=="W"||o=="A"?2:1};function r(n){return n.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}e.length=function(n){for(var o=r(n),i=0,a=0;a<o.length;a++)i=i+this.characterLength(o[a]);return i},e.slice=function(n,o,i){textLen=e.length(n),o=o||0,i=i||1,o<0&&(o=textLen+o),i<0&&(i=textLen+i);for(var a="",s=0,u=r(n),c=0;c<u.length;c++){var f=u[c],d=e.length(f);if(s>=o-(d==2?1:0))if(s+d<=i)a+=f;else break;s+=d}return a}})(pD);var M2=pD.exports,q2=dD(M2),H2=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\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|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\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]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\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-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},V2=dD(H2);function xa(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=fD(t),t.length===0))return 0;t=t.replace(V2()," ");let r=e.ambiguousIsNarrow?1:2,n=0;for(let o of t){let i=o.codePointAt(0);if(!(i<=31||i>=127&&i<=159||i>=768&&i<=879))switch(q2.eastAsianWidth(o)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}var ad=10,rD=(t=0)=>e=>`\x1B[${e+t}m`,nD=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,oD=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,Ue={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(Ue.modifier);var z2=Object.keys(Ue.color),K2=Object.keys(Ue.bgColor);[...z2,...K2];function G2(){let t=new Map;for(let[e,r]of Object.entries(Ue)){for(let[n,o]of Object.entries(r))Ue[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=Ue[n],t.set(o[0],o[1]);Object.defineProperty(Ue,e,{value:r,enumerable:!1})}return Object.defineProperty(Ue,"codes",{value:t,enumerable:!1}),Ue.color.close="\x1B[39m",Ue.bgColor.close="\x1B[49m",Ue.color.ansi=rD(),Ue.color.ansi256=nD(),Ue.color.ansi16m=oD(),Ue.bgColor.ansi=rD(ad),Ue.bgColor.ansi256=nD(ad),Ue.bgColor.ansi16m=oD(ad),Object.defineProperties(Ue,{rgbToAnsi256:{value:(e,r,n)=>e===r&&r===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5),enumerable:!1},hexToRgb:{value:e=>{let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>Ue.rgbToAnsi256(...Ue.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:e=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,n,o;if(e>=232)r=((e-232)*10+8)/255,n=r,o=r;else{e-=16;let s=e%36;r=Math.floor(e/36)/5,n=Math.floor(s/6)/5,o=s%6/5}let i=Math.max(r,n,o)*2;if(i===0)return 30;let a=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(r));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,r,n)=>Ue.ansi256ToAnsi(Ue.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>Ue.ansi256ToAnsi(Ue.hexToAnsi256(e)),enumerable:!1}}),Ue}var W2=G2(),gu=new Set(["\x1B","\x9B"]),Y2=39,ld="\x07",hD="[",J2="]",mD="m",fd=`${J2}8;;`,iD=t=>`${gu.values().next().value}${hD}${t}${mD}`,aD=t=>`${gu.values().next().value}${fd}${t}${ld}`,X2=t=>t.split(" ").map(e=>xa(e)),sd=(t,e,r)=>{let n=[...e],o=!1,i=!1,a=xa(fD(t[t.length-1]));for(let[s,u]of n.entries()){let c=xa(u);if(a+c<=r?t[t.length-1]+=u:(t.push(u),a=0),gu.has(u)&&(o=!0,i=n.slice(s+1).join("").startsWith(fd)),o){i?u===ld&&(o=!1,i=!1):u===mD&&(o=!1);continue}a+=c,a===r&&s<n.length-1&&(t.push(""),a=0)}!a&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},Z2=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(xa(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},Q2=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let n="",o,i,a=X2(t),s=[""];for(let[c,f]of t.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let d=xa(s[s.length-1]);if(c!==0&&(d>=e&&(r.wordWrap===!1||r.trim===!1)&&(s.push(""),d=0),(d>0||r.trim===!1)&&(s[s.length-1]+=" ",d++)),r.hard&&a[c]>e){let p=e-d,h=1+Math.floor((a[c]-p-1)/e);Math.floor((a[c]-1)/e)<h&&s.push(""),sd(s,f,e);continue}if(d+a[c]>e&&d>0&&a[c]>0){if(r.wordWrap===!1&&d<e){sd(s,f,e);continue}s.push("")}if(d+a[c]>e&&r.wordWrap===!1){sd(s,f,e);continue}s[s.length-1]+=f}r.trim!==!1&&(s=s.map(c=>Z2(c)));let u=[...s.join(`
113
113
  `)];for(let[c,f]of u.entries()){if(n+=f,gu.has(f)){let{groups:p}=new RegExp(`(?:\\${hD}(?<code>\\d+)m|\\${fd}(?<uri>.*)${ld})`).exec(u.slice(c).join(""))||{groups:{}};if(p.code!==void 0){let h=Number.parseFloat(p.code);o=h===Y2?void 0:h}else p.uri!==void 0&&(i=p.uri.length===0?void 0:p.uri)}let d=W2.codes.get(Number(o));u[c+1]===`
114
114
  `?(i&&(n+=aD("")),o&&d&&(n+=iD(d))):f===`
115
115
  `&&(o&&d&&(n+=iD(o)),i&&(n+=aD(i)))}return n};function sD(t,e,r){return String(t).normalize().replace(/\r\n/g,`
@@ -218,7 +218,7 @@ ${M(i)}`),new Error(`Cannot retrieve unknown version for app ${e}: ${M(i)}`)}fun
218
218
  created_by,
219
219
  app_id,
220
220
  version (id, name)
221
- `).eq("app_id",e).order("created_at",{ascending:!1});if(o)throw r||l.error(`App ${e} not found in database`),new Error(`App ${e} not found in database: ${M(o)}`);return n}async function Zg(t,e,r,n={}){let{silent:o=!1}=n,{error:i}=await t.from("app_versions").update({deleted:!0}).eq("app_id",e).eq("deleted",!1).eq("name",r);if(i){let a=`App version ${e}@${r} not found in database`;throw o||l.error(a),new Error(`${a}: ${M(i)}`)}}async function cf(t,e,r,n={}){let{silent:o=!1,autoUnlink:i=!1}=n,a=await _5(t,e,r,{silent:o});await $O(t,e,a,{silent:o,autoUnlink:i}),await Zg(t,e,r,{silent:o})}function lf(t,e=!1){if(e)return;if(!t.length)throw new Error("No bundle found");let r=new ut;r.theme=ut.roundTheme,r.headers=["Version","Created","Keep"],r.rows=[];for(let n of t.toReversed())r.rows.push([n.name,ca(n.created_at),n.keep??""]);l.success("Bundles"),l.success(r.toString())}async function ff(t,e,r={}){let{silent:n=!1}=r,{data:o,error:i}=await t.from("app_versions").select().eq("app_id",e).eq("deleted",!1).order("created_at",{ascending:!1});if(i){let a=`App ${e} not found in database`;throw n||l.error(a),new Error(`${a}: ${M(i)}`)}return o??[]}async function UO(t,e,r={}){let{silent:n=!1}=r,{data:o,error:i}=await t.from("channels").select("version").eq("app_id",e);if(i){let a=`App ${e} not found in database`;throw n||l.error(a),new Error(`${a}: ${M(i)}`)}return(o??[]).map(a=>a.version)}async function _5(t,e,r,n={}){let{silent:o=!1}=n,{data:i,error:a}=await t.from("app_versions").select().eq("app_id",e).eq("name",r).eq("deleted",!1).single();if(!i||a){let s=`App version ${e}@${r} doesn't exist`;throw o||l.error(s),new Error(`${s}${a?`: ${M(a)}`:""}`)}return i}async function S5(t,e,r,n){for await(let o of t)n||l.warn(`Removing ${o.name} created on ${ca(o.created_at)}`),await cf(e,r,o.name)}function x5(t,e,r){let n=[];for(let o of t??[]){let i=ge(o.name);_d(i,e)&&er(i,r)&&n.push(o)}return n}async function A5(t,e,r=!1){r||ee("Cleanup versions in Capgo"),await Ce(),e.apikey=e.apikey||ne();let{bundle:n,keep:o=4}=e,i=e.force||!1,a=e.ignoreChannel||!1,s=await te();if(t=fe(t,s?.config),!e.apikey)throw r||l.error("Missing API key, you need to provide an API key to delete your app"),new Error("Missing API key");if(!t)throw r||l.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let u=await re(e.apikey,e.supaHost,e.supaAnon);await ae(u,e.apikey,["write","all"]),await qe(u,e.apikey,t,3,r),r||l.info("Querying all available versions in Capgo");let c=await ff(u,t),f=await UO(u,t);if(r||l.info(`Total active versions in Capgo: ${c?.length??0}`),!c?.length)throw r||l.error("No versions found, aborting cleanup"),new Error("No versions found");if(n){let h=ge(n),m=An(h,"major");r||l.info(`Querying available versions in Capgo between ${Vt(h)} and ${Vt(m)}`),c=x5(c,h,m),r||l.info(`Active versions in Capgo between ${Vt(h)} and ${Vt(m)}: ${c?.length??0}`)}let d=[],p=0;for(let h of c){let m=f.find(y=>y===h.id);p<o||m&&!a?(h.keep=m?"\u2705 (Linked to channel)":"\u2705",p+=1):(h.keep="\u274C",d.push(h))}if(!d.length)return r||l.warn("Nothing to be removed, aborting removal..."),{removed:0,kept:p};if(r||lf(c),!i){if(r)throw new Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");{let h=await ce({message:"Do you want to continue removing the versions specified?"});if(ue(h)||!h)throw l.warn("Not confirmed, aborting removal..."),new Error("Cleanup cancelled by user")}}return r||l.success("You have confirmed removal, removing versions now"),await S5(d,u,t,r),r||G("Done \u2705"),{removed:d.length,kept:p}}async function MO(t,e){return A5(t,e)}async function O5(t,e,r=!1){r||ee("Check compatibility");let n={...e,apikey:e.apikey||ne()},o=await te(),i=fe(t,o?.config),a=n.channel;if(!a)throw r||l.error("Missing argument, you need to provide a channel"),new Error("Missing channel");if(!n.apikey)throw r||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!i)throw r||l.error("Missing argument, you need to provide an appId, or be in a capacitor project"),new Error("Missing appId");let s=await re(n.apikey,n.supaHost,n.supaAnon);await ae(s,n.apikey,["write","all","read","upload"]),await qe(s,n.apikey,i,1,r);let u=await ef(s,i,a,n.packageJson,n.nodeModules);if(!r){let c=new ut;c.headers=["Package","Local version","Remote version","Compatible"],c.theme=ut.roundTheme,c.rows=[];let f=n.text?"Yes":"\u2705",d=n.text?"No":"\u274C";for(let p of u.finalCompatibility){let{name:h,localVersion:m,remoteVersion:y}=p,b=No(p)?f:d;c.rows.push([h,m,y,b])}l.success("Compatibility"),l.success(c.toString())}return{finalCompatibility:u.finalCompatibility}}async function qO(t,e){try{await O5(t,e,!1)}catch(r){throw l.error(`Error checking compatibility ${M(r)}`),r}}var yn=require("node:fs");var mn=require("node:buffer"),mt=require("node:crypto"),VO="aes-128-cbc",gn="base64",HO="hex",Us=mt.constants.RSA_PKCS1_PADDING;function df(t){let e=(0,mt.randomBytes)(16),r=(0,mt.randomBytes)(16),n=e.toString(gn),o=(0,mt.privateEncrypt)({key:t,padding:Us},r).toString(gn);return{sessionKey:r,ivSessionKey:`${n}:${o}`}}function ha(t,e,r){let[n]=r.split(":"),o=mn.Buffer.from(n,gn),i=(0,mt.createCipheriv)(VO,e,o);return i.setAutoPadding(!0),mn.Buffer.concat([i.update(t),i.final()])}function zO(t,e,r){let[n,o]=e.split(":"),i=(0,mt.publicDecrypt)({key:r,padding:Us},mn.Buffer.from(o,gn)),a=mn.Buffer.from(n,gn),s=(0,mt.createDecipheriv)(VO,i,a);return s.setAutoPadding(!0),mn.Buffer.concat([s.update(t),s.final()])}function ma(t,e){return(0,mt.privateEncrypt)({key:e,padding:Us},mn.Buffer.from(t,gn)).toString(gn)}function pf(t,e){return(0,mt.privateEncrypt)({key:e,padding:Us},mn.Buffer.from(t,HO)).toString(HO)}function KO(t="pem",e=2048){let{publicKey:r,privateKey:n}=(0,mt.generateKeyPairSync)("rsa",{modulusLength:e});return t==="pem"?{publicKey:r.export({type:"pkcs1",format:"pem"}),privateKey:n.export({type:"pkcs1",format:"pem"})}:{publicKey:r.export({type:"spki",format:"der"}).toString("base64"),privateKey:n.export({type:"pkcs1",format:"pem"}).toString("base64")}}function GO(t,e){return(0,mt.publicDecrypt)({key:e,padding:Us},mn.Buffer.from(t,gn)).toString(gn)}function WO(t){return t?t.replace(/-----BEGIN RSA PUBLIC KEY-----/g,"").replace(/-----END RSA PUBLIC KEY-----/g,"").replace(/\n/g,"").replace(/\r/g,"").replace(/ /g,"").substring(0,4):""}function F5(t,e){let r=t.key||hn,n=e.config.plugins?.CapacitorUpdater?.publicKey;return(0,yn.existsSync)(r)?n=(0,yn.readFileSync)(r,"utf8"):!n&&t.keyData&&(n=t.keyData),{publicKey:n,fallbackKeyPath:r}}async function P5(t,e,r,n=!1){n||ee("Decrypt zip file");try{if(await Ce(),!(0,yn.existsSync)(t)){let d=`Zip not found at the path ${t}`;throw n||l.error(d),new Error(d)}let o=await te();if(!r.key&&!(0,yn.existsSync)(hn)&&!o.config.plugins?.CapacitorUpdater?.publicKey){let d=`Public Key not found at the path ${hn} or in ${o.path}`;throw n||l.error(d),new Error(d)}let{publicKey:i,fallbackKeyPath:a}=F5(r,o);if(!i){let d=`Cannot find public key ${a} or as keyData option or in ${o.path}`;throw n||l.error(d),new Error(d)}let s=(0,yn.readFileSync)(t),u=zO(s,e,r.keyData??i),c=`${t}_decrypted.zip`;(0,yn.writeFileSync)(c,u),n||l.info(`Decrypted zip file at ${c}`);let f;if(r.checksum){let d=await cn(u,"sha256"),p=GO(r.checksum,r.keyData??i);if(f=d===p,!f){let h=`Checksum does not match ${d} !== ${p}`;throw n||l.error(h),new Error(h)}n||l.info("Checksum matches")}return n||G("\u2705 done"),{outputPath:c,checksumMatches:f}}catch(o){throw n||l.error(`Error decrypting zip file ${M(o)}`),o instanceof Error?o:new Error(String(o))}}async function YO(t,e,r){await P5(t,e,r,!1)}async function k5(t,e,r,n=!1){n||ee("Delete bundle"),r.apikey=r.apikey||ne();let o=await te();if(e=fe(e,o?.config),!r.apikey)throw n||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||l.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!t)throw n||l.error("Missing argument, you need to provide a bundleId, or be in a capacitor project"),new Error("Missing bundleId");let i=await re(r.apikey,r.supaHost,r.supaAnon);return await ae(i,r.apikey,["write","all"]),await qe(i,r.apikey,e,3,n),n||(l.info(`Deleting bundle ${e}@${t} from Capgo`),l.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever")),await cf(i,e,t),n||(l.success(`Bundle ${e}@${t} deleted in Capgo`),G("Done")),!0}async function JO(t,e,r){return k5(t,e,r)}var Dn=require("node:fs");function Ms(t){console.error(M(t))}async function $5(t,e,r,n=!1){let{json:o}=r,i=!o&&!n;i&&(ee("Encryption"),await Ce());try{let a=await te(),s=!!a.config.plugins?.CapacitorUpdater?.privateKey,u=!!a.config.plugins?.CapacitorUpdater?.publicKey;if(s&&i&&l.warning("There is still a privateKey in the config"),!(0,Dn.existsSync)(t)){let v=`Zip not found at the path ${t}`;throw n||(o?Ms({error:"zip_not_found"}):l.error(`Error: ${v}`)),new Error(v)}if(!u)throw n||(o?Ms({error:"missing_public_key"}):l.warning("Warning: Missing Public Key in config")),new Error("Missing public key in config");let c=r.key||or,f=r.keyData||"";if(!(0,Dn.existsSync)(c)&&!f)throw n||(o?Ms({error:"missing_key"}):(l.warning(`Cannot find a private key at ${c} or as a keyData option`),l.error("Error: Missing key"))),new Error("Missing private key");if((0,Dn.existsSync)(c)&&(f=(0,Dn.readFileSync)(c,"utf8")),f&&!f.startsWith("-----BEGIN RSA PRIVATE KEY-----"))throw n||(o?Ms({error:"invalid_private_key"}):l.error("The private key provided is not a valid RSA Private key")),new Error("Invalid private key format");let d=(0,Dn.readFileSync)(t),{sessionKey:p,ivSessionKey:h}=df(f),m=ha(d,p,h),y=ma(e,f),b=`${t}_encrypted.zip`;return(0,Dn.writeFileSync)(b,m),n||(o?console.log(JSON.stringify({checksum:y,filename:b,ivSessionKey:h},null,2)):(l.success(`Encoded Checksum: ${y}`),l.success(`ivSessionKey: ${h}`),l.success(`Encrypted zip saved at ${b}`),G("Done \u2705"))),{checksum:y,filename:b,ivSessionKey:h}}catch(a){throw n||(r.json?Ms(a):l.error(`Error encrypting zip file ${M(a)}`)),a instanceof Error?a:new Error(String(a))}}async function XO(t,e,r){await $5(t,e,r,!1)}async function ZO(t,e,r=!1){r||ee("List bundles"),await Ce(),e.apikey=e.apikey||ne();let n=await te();if(t=fe(t,n?.config),!e.apikey)throw r||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||l.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let o=await re(e.apikey,e.supaHost,e.supaAnon);await ae(o,e.apikey,["write","all","read","upload"]),await qe(o,e.apikey,t,1,r),r||l.info(`Querying available versions of: ${t} in Capgo`);let i=await ff(o,t);return r||(l.info(`Active versions in Capgo: ${i?.length??0}`),lf(i),G("Done \u2705")),i}var OF=require("node:crypto"),Go=require("node:fs"),Of=require("node:process");var hf=class extends TransformStream{outChunkSize;constructor(e){let r=new Uint8Array(e),n=0;super({transform(o,i){let a=0;for(;a<o.length;){let s=e-n,u=Math.min(s,o.length-a);r.set(o.subarray(a,a+u),n),a+=u,n+=u,n===e&&(i.enqueue(r),r=new Uint8Array(e),n=0)}},flush(o){n>0&&o.enqueue(r.subarray(0,n))}}),this.outChunkSize=e}};function zn(t){return t=t.trim(),t=t.replace(/<!--[\s\S]*?-->/g,""),e();function e(){return{declaration:r(),root:n()}}function r(){if(!u(/^<\?xml\s*/))return;let p={attributes:{}};for(;!(c()||f("?>"));){let h=i();if(!h)return p;p.attributes[h.name]=h.value}return u(/\?>\s*/),p}function n(){let d=u(/^<([\w-:.]+)\s*/);if(!d)return;let p={name:d[1],attributes:{},children:[]};for(;!(c()||f(">")||f("?>")||f("/>"));){let m=i();if(!m)return p;p.attributes[m.name]=m.value}if(u(/^\s*\/>\s*/))return p;u(/\??>\s*/),p.content=o();let h;for(;h=n();)p.children.push(h);return u(/^<\/[\w-:.]+>\s*/),p}function o(){let d=u(/^([^<]*)/);return d?s(d[1]):""}function i(){let d=u(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(d)return{name:d[1],value:s(a(d[2]))}}function a(d){return d.replace(/^['"]|['"]$/g,"")}function s(d){return d.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}function u(d){let p=t.match(d);if(p)return t=t.slice(p[0].length),p}function c(){return t.length===0}function f(d){return t.startsWith(d)}}var Gr=class extends Error{};var xt=class extends Gr{},qs=class extends Gr{},mf=class extends Gr{bucketName;constructor(e){super(`Invalid bucket name: ${e}`),this.bucketName=e}},Wr=class extends Gr{objectName;constructor(e){super(`Invalid object name: ${e}`),this.objectName=e}},Kn=class extends Gr{constructor(){super("accessKey is required")}},ga=class extends Gr{constructor(){super("secretKey is required")}},Hs=class extends Gr{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}},bn=class extends Gr{statusCode;code;key;bucketName;resource;region;constructor(e,r,n,o={}){super(n),this.statusCode=e,this.code=r,this.key=o.key,this.bucketName=o.bucketName,this.resource=o.resource,this.region=o.region}};async function QO(t){try{let r=zn(await t.text()).root;if(r?.name!=="Error")throw new Error("Invalid root, expected <Error>");let n=r.children.find(c=>c.name==="Code")?.content??"UnknownErrorCode",o=r.children.find(c=>c.name==="Message")?.content??"The error message could not be determined.",i=r.children.find(c=>c.name==="Key")?.content,a=r.children.find(c=>c.name==="BucketName")?.content,s=r.children.find(c=>c.name==="Resource")?.content,u=r.children.find(c=>c.name==="Region")?.content;return new bn(t.status,n,o,{key:i,bucketName:a,resource:s,region:u})}catch{return new bn(t.status,"UnrecognizedError",`Error: Unexpected response code ${t.status} ${t.statusText}. Unable to parse response as XML.`)}}function e1(t){return typeof t!="number"||isNaN(t)?!1:t>=1&&t<=65535}function t1(t){return typeof t!="string"||t.length<3||t.length>63||t.includes("..")||t.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)?!1:!!t.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/)}function Gn(t){return!(!I5(t)||t.length===0)}function I5(t){return!(typeof t!="string"||t.length>1024)}function Vs(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function jo(t=""){let e={'"':"","&quot;":"","&#34;":"","&QUOT;":"","&#x00022":""};return t.replace(/^("|&quot;|&#34;)|("|&quot;|&#34;)$/g,r=>e[r])}function ey(t){return t.get("x-amz-version-id")??null}function Uo(t){let e=t.toISOString();return e.slice(0,4)+e.slice(5,7)+e.slice(8,13)+e.slice(14,16)+e.slice(17,19)+"Z"}function ty(t){return Uo(t).slice(0,8)}function ry(t,e){return`${ty(e)}/${t}/s3/aws4_request`}async function gf(t){return t instanceof Uint8Array||(t=new TextEncoder().encode(t)),Vs(new Uint8Array(await crypto.subtle.digest("SHA-256",t)))}var T5=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"],yf=class extends WritableStream{getResult;constructor({client:e,bucketName:r,objectName:n,partSize:o,metadata:i}){let a,s=1,u,c=[],f,d=[];super({start(){},async write(p,h){let y=s++;try{if(y==1&&p.length<o){let E=await e.makeRequest({method:"PUT",headers:new Headers({...i,"Content-Length":String(p.length)}),bucketName:r,objectName:n,payload:p});a={etag:jo(E.headers.get("etag")??void 0),versionId:ey(E.headers)};return}y===1&&(u=(await R5({client:e,bucketName:r,objectName:n,metadata:i})).uploadId);let b={"Content-Length":String(p.length)};for(let E of T5){let g=i[E];g&&(b[E]=g)}let v=e.makeRequest({method:"PUT",query:{partNumber:y.toString(),uploadId:u},headers:new Headers(b),bucketName:r,objectName:n,payload:p}).then(E=>{let g=E.headers.get("etag")??"";return g&&(g=g.replace(/^"/,"").replace(/"$/,"")),c.push({part:y,etag:g}),E});d.push(v.catch(E=>{f||(f=E)}))}catch(b){throw b}},async close(){if(!a)if(u){if(await Promise.all(d),f)throw f;c.sort((p,h)=>p.part>h.part?1:-1),a=await B5({client:e,bucketName:r,objectName:n,uploadId:u,etags:c})}else throw new Error("Stream was closed without uploading any data.")}}),this.getResult=()=>{if(a===void 0)throw new Error("Result is not ready. await the stream first.");return a}}};async function R5(t){let e="POST",r=new Headers(t.metadata),i=await(await t.client.makeRequest({method:e,bucketName:t.bucketName,objectName:t.objectName,query:"uploads",headers:r,returnBody:!0})).text(),a=zn(i).root;if(!a||a.name!=="InitiateMultipartUploadResult")throw new Error(`Unexpected response: ${i}`);let s=a.children.find(u=>u.name==="UploadId")?.content;if(!s)throw new Error(`Unable to get UploadId from response: ${i}`);return{uploadId:s}}async function B5({client:t,bucketName:e,objectName:r,uploadId:n,etags:o}){let i=`
221
+ `).eq("app_id",e).order("created_at",{ascending:!1});if(o)throw r||l.error(`App ${e} not found in database`),new Error(`App ${e} not found in database: ${M(o)}`);return n}async function Zg(t,e,r,n={}){let{silent:o=!1}=n,{error:i}=await t.from("app_versions").update({deleted:!0}).eq("app_id",e).eq("deleted",!1).eq("name",r);if(i){let a=`App version ${e}@${r} not found in database`;throw o||l.error(a),new Error(`${a}: ${M(i)}`)}}async function cf(t,e,r,n={}){let{silent:o=!1,autoUnlink:i=!1}=n,a=await _5(t,e,r,{silent:o});await $O(t,e,a,{silent:o,autoUnlink:i}),await Zg(t,e,r,{silent:o})}function lf(t,e=!1){if(e)return;if(!t.length)throw new Error("No bundle found");let r=new ut;r.theme=ut.roundTheme,r.headers=["Version","Created","Keep"],r.rows=[];for(let n of t.toReversed())r.rows.push([n.name,ca(n.created_at),n.keep??""]);l.success("Bundles"),l.success(r.toString())}async function ff(t,e,r={}){let{silent:n=!1}=r,{data:o,error:i}=await t.from("app_versions").select().eq("app_id",e).eq("deleted",!1).order("created_at",{ascending:!1});if(i){let a=`App ${e} not found in database`;throw n||l.error(a),new Error(`${a}: ${M(i)}`)}return o??[]}async function UO(t,e,r={}){let{silent:n=!1}=r,{data:o,error:i}=await t.from("channels").select("version").eq("app_id",e);if(i){let a=`App ${e} not found in database`;throw n||l.error(a),new Error(`${a}: ${M(i)}`)}return(o??[]).map(a=>a.version)}async function _5(t,e,r,n={}){let{silent:o=!1}=n,{data:i,error:a}=await t.from("app_versions").select().eq("app_id",e).eq("name",r).eq("deleted",!1).single();if(!i||a){let s=`App version ${e}@${r} doesn't exist`;throw o||l.error(s),new Error(`${s}${a?`: ${M(a)}`:""}`)}return i}async function S5(t,e,r,n){for await(let o of t)n||l.warn(`Removing ${o.name} created on ${ca(o.created_at)}`),await cf(e,r,o.name)}function x5(t,e,r){let n=[];for(let o of t??[]){let i=ge(o.name);_d(i,e)&&er(i,r)&&n.push(o)}return n}async function A5(t,e,r=!1){r||ee("Cleanup versions in Capgo"),await Ce(),e.apikey=e.apikey||ne();let{bundle:n,keep:o=4}=e,i=e.force||!1,a=e.ignoreChannel||!1,s=await te();if(t=fe(t,s?.config),!e.apikey)throw r||l.error("Missing API key, you need to provide an API key to delete your app"),new Error("Missing API key");if(!t)throw r||l.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let u=await re(e.apikey,e.supaHost,e.supaAnon);await ae(u,e.apikey,["write","all"]),await qe(u,e.apikey,t,3,r),r||l.info("Querying all available versions in Capgo");let c=await ff(u,t),f=await UO(u,t);if(r||l.info(`Total active versions in Capgo: ${c?.length??0}`),!c?.length)throw r||l.error("No versions found, aborting cleanup"),new Error("No versions found");if(n){let h=ge(n),m=An(h,"major");r||l.info(`Querying available versions in Capgo between ${Vt(h)} and ${Vt(m)}`),c=x5(c,h,m),r||l.info(`Active versions in Capgo between ${Vt(h)} and ${Vt(m)}: ${c?.length??0}`)}let d=[],p=0;for(let h of c){let m=f.find(y=>y===h.id);p<o||m&&!a?(h.keep=m?"\u2705 (Linked to channel)":"\u2705",p+=1):(h.keep="\u274C",d.push(h))}if(!d.length)return r||l.warn("Nothing to be removed, aborting removal..."),{removed:0,kept:p};if(r||lf(c),!i){if(r)throw new Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");{let h=await ce({message:"Do you want to continue removing the versions specified?"});if(ue(h)||!h)throw l.warn("Not confirmed, aborting removal..."),new Error("Cleanup cancelled by user")}}return r||l.success("You have confirmed removal, removing versions now"),await S5(d,u,t,r),r||G("Done \u2705"),{removed:d.length,kept:p}}async function MO(t,e){return A5(t,e)}async function O5(t,e,r=!1){r||ee("Check compatibility");let n={...e,apikey:e.apikey||ne()},o=await te(),i=fe(t,o?.config),a=n.channel;if(!a)throw r||l.error("Missing argument, you need to provide a channel"),new Error("Missing channel");if(!n.apikey)throw r||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!i)throw r||l.error("Missing argument, you need to provide an appId, or be in a capacitor project"),new Error("Missing appId");let s=await re(n.apikey,n.supaHost,n.supaAnon);await ae(s,n.apikey,["write","all","read","upload"]),await qe(s,n.apikey,i,1,r);let u=await ef(s,i,a,n.packageJson,n.nodeModules);if(!r){let c=new ut;c.headers=["Package","Local version","Remote version","Compatible"],c.theme=ut.roundTheme,c.rows=[];let f=n.text?"Yes":"\u2705",d=n.text?"No":"\u274C";for(let p of u.finalCompatibility){let{name:h,localVersion:m,remoteVersion:y}=p,b=No(p)?f:d;c.rows.push([h,m,y,b])}l.success("Compatibility"),l.success(c.toString())}return{finalCompatibility:u.finalCompatibility}}async function qO(t,e){try{await O5(t,e,!1)}catch(r){throw l.error(`Error checking compatibility ${M(r)}`),r}}var yn=require("node:fs");var mn=require("node:buffer"),mt=require("node:crypto"),VO="aes-128-cbc",gn="base64",HO="hex",Us=mt.constants.RSA_PKCS1_PADDING;function df(t){let e=(0,mt.randomBytes)(16),r=(0,mt.randomBytes)(16),n=e.toString(gn),o=(0,mt.privateEncrypt)({key:t,padding:Us},r).toString(gn);return{sessionKey:r,ivSessionKey:`${n}:${o}`}}function ha(t,e,r){let[n]=r.split(":"),o=mn.Buffer.from(n,gn),i=(0,mt.createCipheriv)(VO,e,o);return i.setAutoPadding(!0),mn.Buffer.concat([i.update(t),i.final()])}function zO(t,e,r){let[n,o]=e.split(":"),i=(0,mt.publicDecrypt)({key:r,padding:Us},mn.Buffer.from(o,gn)),a=mn.Buffer.from(n,gn),s=(0,mt.createDecipheriv)(VO,i,a);return s.setAutoPadding(!0),mn.Buffer.concat([s.update(t),s.final()])}function ma(t,e){return(0,mt.privateEncrypt)({key:e,padding:Us},mn.Buffer.from(t,gn)).toString(gn)}function pf(t,e){return(0,mt.privateEncrypt)({key:e,padding:Us},mn.Buffer.from(t,HO)).toString(HO)}function KO(t,e){return(0,mt.publicDecrypt)({key:e,padding:Us},mn.Buffer.from(t,gn)).toString(gn)}function GO(){let{publicKey:t,privateKey:e}=(0,mt.generateKeyPairSync)("rsa",{modulusLength:2048});return{publicKey:t.export({type:"pkcs1",format:"pem"}),privateKey:e.export({type:"pkcs1",format:"pem"})}}function WO(t){return t?t.replace(/-----BEGIN RSA PUBLIC KEY-----/g,"").replace(/-----END RSA PUBLIC KEY-----/g,"").replace(/\n/g,"").replace(/\r/g,"").replace(/ /g,"").substring(0,4):""}function F5(t,e){let r=t.key||hn,n=e.config.plugins?.CapacitorUpdater?.publicKey;return(0,yn.existsSync)(r)?n=(0,yn.readFileSync)(r,"utf8"):!n&&t.keyData&&(n=t.keyData),{publicKey:n,fallbackKeyPath:r}}async function P5(t,e,r,n=!1){n||ee("Decrypt zip file");try{if(await Ce(),!(0,yn.existsSync)(t)){let d=`Zip not found at the path ${t}`;throw n||l.error(d),new Error(d)}let o=await te();if(!r.key&&!(0,yn.existsSync)(hn)&&!o.config.plugins?.CapacitorUpdater?.publicKey){let d=`Public Key not found at the path ${hn} or in ${o.path}`;throw n||l.error(d),new Error(d)}let{publicKey:i,fallbackKeyPath:a}=F5(r,o);if(!i){let d=`Cannot find public key ${a} or as keyData option or in ${o.path}`;throw n||l.error(d),new Error(d)}let s=(0,yn.readFileSync)(t),u=zO(s,e,r.keyData??i),c=`${t}_decrypted.zip`;(0,yn.writeFileSync)(c,u),n||l.info(`Decrypted zip file at ${c}`);let f;if(r.checksum){let d=await cn(u,"sha256"),p=KO(r.checksum,r.keyData??i);if(f=d===p,!f){let h=`Checksum does not match ${d} !== ${p}`;throw n||l.error(h),new Error(h)}n||l.info("Checksum matches")}return n||G("\u2705 done"),{outputPath:c,checksumMatches:f}}catch(o){throw n||l.error(`Error decrypting zip file ${M(o)}`),o instanceof Error?o:new Error(String(o))}}async function YO(t,e,r){await P5(t,e,r,!1)}async function k5(t,e,r,n=!1){n||ee("Delete bundle"),r.apikey=r.apikey||ne();let o=await te();if(e=fe(e,o?.config),!r.apikey)throw n||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||l.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!t)throw n||l.error("Missing argument, you need to provide a bundleId, or be in a capacitor project"),new Error("Missing bundleId");let i=await re(r.apikey,r.supaHost,r.supaAnon);return await ae(i,r.apikey,["write","all"]),await qe(i,r.apikey,e,3,n),n||(l.info(`Deleting bundle ${e}@${t} from Capgo`),l.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever")),await cf(i,e,t),n||(l.success(`Bundle ${e}@${t} deleted in Capgo`),G("Done")),!0}async function JO(t,e,r){return k5(t,e,r)}var Dn=require("node:fs");function Ms(t){console.error(M(t))}async function $5(t,e,r,n=!1){let{json:o}=r,i=!o&&!n;i&&(ee("Encryption"),await Ce());try{let a=await te(),s=!!a.config.plugins?.CapacitorUpdater?.privateKey,u=!!a.config.plugins?.CapacitorUpdater?.publicKey;if(s&&i&&l.warning("There is still a privateKey in the config"),!(0,Dn.existsSync)(t)){let v=`Zip not found at the path ${t}`;throw n||(o?Ms({error:"zip_not_found"}):l.error(`Error: ${v}`)),new Error(v)}if(!u)throw n||(o?Ms({error:"missing_public_key"}):l.warning("Warning: Missing Public Key in config")),new Error("Missing public key in config");let c=r.key||or,f=r.keyData||"";if(!(0,Dn.existsSync)(c)&&!f)throw n||(o?Ms({error:"missing_key"}):(l.warning(`Cannot find a private key at ${c} or as a keyData option`),l.error("Error: Missing key"))),new Error("Missing private key");if((0,Dn.existsSync)(c)&&(f=(0,Dn.readFileSync)(c,"utf8")),f&&!f.startsWith("-----BEGIN RSA PRIVATE KEY-----"))throw n||(o?Ms({error:"invalid_private_key"}):l.error("The private key provided is not a valid RSA Private key")),new Error("Invalid private key format");let d=(0,Dn.readFileSync)(t),{sessionKey:p,ivSessionKey:h}=df(f),m=ha(d,p,h),y=ma(e,f),b=`${t}_encrypted.zip`;return(0,Dn.writeFileSync)(b,m),n||(o?console.log(JSON.stringify({checksum:y,filename:b,ivSessionKey:h},null,2)):(l.success(`Encoded Checksum: ${y}`),l.success(`ivSessionKey: ${h}`),l.success(`Encrypted zip saved at ${b}`),G("Done \u2705"))),{checksum:y,filename:b,ivSessionKey:h}}catch(a){throw n||(r.json?Ms(a):l.error(`Error encrypting zip file ${M(a)}`)),a instanceof Error?a:new Error(String(a))}}async function XO(t,e,r){await $5(t,e,r,!1)}async function ZO(t,e,r=!1){r||ee("List bundles"),await Ce(),e.apikey=e.apikey||ne();let n=await te();if(t=fe(t,n?.config),!e.apikey)throw r||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||l.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let o=await re(e.apikey,e.supaHost,e.supaAnon);await ae(o,e.apikey,["write","all","read","upload"]),await qe(o,e.apikey,t,1,r),r||l.info(`Querying available versions of: ${t} in Capgo`);let i=await ff(o,t);return r||(l.info(`Active versions in Capgo: ${i?.length??0}`),lf(i),G("Done \u2705")),i}var OF=require("node:crypto"),Go=require("node:fs"),Of=require("node:process");var hf=class extends TransformStream{outChunkSize;constructor(e){let r=new Uint8Array(e),n=0;super({transform(o,i){let a=0;for(;a<o.length;){let s=e-n,u=Math.min(s,o.length-a);r.set(o.subarray(a,a+u),n),a+=u,n+=u,n===e&&(i.enqueue(r),r=new Uint8Array(e),n=0)}},flush(o){n>0&&o.enqueue(r.subarray(0,n))}}),this.outChunkSize=e}};function zn(t){return t=t.trim(),t=t.replace(/<!--[\s\S]*?-->/g,""),e();function e(){return{declaration:r(),root:n()}}function r(){if(!u(/^<\?xml\s*/))return;let p={attributes:{}};for(;!(c()||f("?>"));){let h=i();if(!h)return p;p.attributes[h.name]=h.value}return u(/\?>\s*/),p}function n(){let d=u(/^<([\w-:.]+)\s*/);if(!d)return;let p={name:d[1],attributes:{},children:[]};for(;!(c()||f(">")||f("?>")||f("/>"));){let m=i();if(!m)return p;p.attributes[m.name]=m.value}if(u(/^\s*\/>\s*/))return p;u(/\??>\s*/),p.content=o();let h;for(;h=n();)p.children.push(h);return u(/^<\/[\w-:.]+>\s*/),p}function o(){let d=u(/^([^<]*)/);return d?s(d[1]):""}function i(){let d=u(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(d)return{name:d[1],value:s(a(d[2]))}}function a(d){return d.replace(/^['"]|['"]$/g,"")}function s(d){return d.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}function u(d){let p=t.match(d);if(p)return t=t.slice(p[0].length),p}function c(){return t.length===0}function f(d){return t.startsWith(d)}}var Gr=class extends Error{};var xt=class extends Gr{},qs=class extends Gr{},mf=class extends Gr{bucketName;constructor(e){super(`Invalid bucket name: ${e}`),this.bucketName=e}},Wr=class extends Gr{objectName;constructor(e){super(`Invalid object name: ${e}`),this.objectName=e}},Kn=class extends Gr{constructor(){super("accessKey is required")}},ga=class extends Gr{constructor(){super("secretKey is required")}},Hs=class extends Gr{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}},bn=class extends Gr{statusCode;code;key;bucketName;resource;region;constructor(e,r,n,o={}){super(n),this.statusCode=e,this.code=r,this.key=o.key,this.bucketName=o.bucketName,this.resource=o.resource,this.region=o.region}};async function QO(t){try{let r=zn(await t.text()).root;if(r?.name!=="Error")throw new Error("Invalid root, expected <Error>");let n=r.children.find(c=>c.name==="Code")?.content??"UnknownErrorCode",o=r.children.find(c=>c.name==="Message")?.content??"The error message could not be determined.",i=r.children.find(c=>c.name==="Key")?.content,a=r.children.find(c=>c.name==="BucketName")?.content,s=r.children.find(c=>c.name==="Resource")?.content,u=r.children.find(c=>c.name==="Region")?.content;return new bn(t.status,n,o,{key:i,bucketName:a,resource:s,region:u})}catch{return new bn(t.status,"UnrecognizedError",`Error: Unexpected response code ${t.status} ${t.statusText}. Unable to parse response as XML.`)}}function e1(t){return typeof t!="number"||isNaN(t)?!1:t>=1&&t<=65535}function t1(t){return typeof t!="string"||t.length<3||t.length>63||t.includes("..")||t.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)?!1:!!t.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/)}function Gn(t){return!(!I5(t)||t.length===0)}function I5(t){return!(typeof t!="string"||t.length>1024)}function Vs(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function jo(t=""){let e={'"':"","&quot;":"","&#34;":"","&QUOT;":"","&#x00022":""};return t.replace(/^("|&quot;|&#34;)|("|&quot;|&#34;)$/g,r=>e[r])}function ey(t){return t.get("x-amz-version-id")??null}function Uo(t){let e=t.toISOString();return e.slice(0,4)+e.slice(5,7)+e.slice(8,13)+e.slice(14,16)+e.slice(17,19)+"Z"}function ty(t){return Uo(t).slice(0,8)}function ry(t,e){return`${ty(e)}/${t}/s3/aws4_request`}async function gf(t){return t instanceof Uint8Array||(t=new TextEncoder().encode(t)),Vs(new Uint8Array(await crypto.subtle.digest("SHA-256",t)))}var T5=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"],yf=class extends WritableStream{getResult;constructor({client:e,bucketName:r,objectName:n,partSize:o,metadata:i}){let a,s=1,u,c=[],f,d=[];super({start(){},async write(p,h){let y=s++;try{if(y==1&&p.length<o){let E=await e.makeRequest({method:"PUT",headers:new Headers({...i,"Content-Length":String(p.length)}),bucketName:r,objectName:n,payload:p});a={etag:jo(E.headers.get("etag")??void 0),versionId:ey(E.headers)};return}y===1&&(u=(await R5({client:e,bucketName:r,objectName:n,metadata:i})).uploadId);let b={"Content-Length":String(p.length)};for(let E of T5){let g=i[E];g&&(b[E]=g)}let v=e.makeRequest({method:"PUT",query:{partNumber:y.toString(),uploadId:u},headers:new Headers(b),bucketName:r,objectName:n,payload:p}).then(E=>{let g=E.headers.get("etag")??"";return g&&(g=g.replace(/^"/,"").replace(/"$/,"")),c.push({part:y,etag:g}),E});d.push(v.catch(E=>{f||(f=E)}))}catch(b){throw b}},async close(){if(!a)if(u){if(await Promise.all(d),f)throw f;c.sort((p,h)=>p.part>h.part?1:-1),a=await B5({client:e,bucketName:r,objectName:n,uploadId:u,etags:c})}else throw new Error("Stream was closed without uploading any data.")}}),this.getResult=()=>{if(a===void 0)throw new Error("Result is not ready. await the stream first.");return a}}};async function R5(t){let e="POST",r=new Headers(t.metadata),i=await(await t.client.makeRequest({method:e,bucketName:t.bucketName,objectName:t.objectName,query:"uploads",headers:r,returnBody:!0})).text(),a=zn(i).root;if(!a||a.name!=="InitiateMultipartUploadResult")throw new Error(`Unexpected response: ${i}`);let s=a.children.find(u=>u.name==="UploadId")?.content;if(!s)throw new Error(`Unable to get UploadId from response: ${i}`);return{uploadId:s}}async function B5({client:t,bucketName:e,objectName:r,uploadId:n,etags:o}){let i=`
222
222
  <CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
223
223
  ${o.map(d=>` <Part><PartNumber>${d.part}</PartNumber><ETag>${d.etag}</ETag></Part>`).join(`
224
224
  `)}
@@ -286,7 +286,7 @@ sidebar:
286
286
  `);for(let d of f.subcommands)o+=n(d,!0,f.name)}o+=`
287
287
  `}let i="<!-- AUTO-GENERATED-DOCS-START -->",a="<!-- AUTO-GENERATED-DOCS-END -->",s="";try{s=(0,Xr.readFileSync)(t,"utf8")}catch{s=""}let u=s.indexOf(i),c=s.indexOf(a,u);if(u!==-1&&c!==-1){let f=s.substring(0,u+i.length),d=s.substring(c),p=`${f}
288
288
  ${o}
289
- ${d}`;(0,Xr.writeFileSync)(t,p,"utf8"),l.success(`Documentation updated in ${t}`)}else(0,Xr.writeFileSync)(t,o,"utf8"),l.success(`Documentation written to ${t}`)}}var Ca=require("node:child_process"),Oe=require("node:fs"),Tr=require("node:path"),se=require("node:process");var Tf=pe(r2());var Ut=require("node:fs");function n2(t){return t.plugins??={},t.plugins.extConfig??={},t.plugins.CapacitorUpdater??={},t.plugins.CapacitorUpdater}async function W7(t,e=!1){e||ee("Save keys \u{1F511}");let r=await te(),n=t.key||hn,o=t.keyData||"";if(!(0,Ut.existsSync)(n)&&!o)throw e||l.error(`Cannot find a public key at ${n} or as keyData option or in ${r.path}`),new Error("Missing public key");if((0,Ut.existsSync)(n)&&(o=(0,Ut.readFileSync)(n,"utf8")),!o.startsWith("-----BEGIN RSA PUBLIC KEY-----"))throw e||l.error("The public key provided is not a valid RSA Public key"),new Error("Invalid RSA public key");if(r?.config){let i=n2(r.config);i.privateKey&&(delete i.privateKey,e||l.info("Old private key deleted from config file"),(e?t.setupChannel??!1:t.setupChannel??await ce({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))&&(i.defaultChannel="encryption_v2")),i.publicKey=o,await Qi(r)}return e||(l.success(`Public key saved into ${r.path} file in local directory`),l.success("Your app will decode the zip archive with this key")),!0}async function Y7(t,e=!1){e||ee("Deleting old private key \u{1F5D1}\uFE0F");let r=await te(),n=r?.config?.plugins?.CapacitorUpdater;if(n?.privateKey){if(delete n.privateKey,await Qi(r),(0,Ut.existsSync)(oa))try{(0,Ut.unlinkSync)(oa),e||l.success(`Old private key file deleted: ${oa}`)}catch(o){e||l.error(`Failed to delete old private key file: ${oa} (${String(o)})`)}if((0,Ut.existsSync)(Yl))try{(0,Ut.unlinkSync)(Yl),e||l.success(`Old public key file deleted: ${Yl}`)}catch(o){e||l.error(`Failed to delete old public key file: ${hn} (${String(o)})`)}return e||(l.success(`Old private key deleted from ${r.path} file`),G("Done \u2705")),!0}return e||l.info("No old private key found in config file"),!1}async function o2(t){await Ce(),await W7(t,!1)}async function Fy(t,e=!1){e||ee("Create keys \u{1F511}");let{publicKey:r,privateKey:n}=KO();if((0,Ut.existsSync)(hn)&&!t.force)throw e||l.error("Public Key already exists, use --force to overwrite"),new Error("Public key already exists");if((0,Ut.writeFileSync)(hn,r),(0,Ut.existsSync)(or)&&!t.force)throw e||l.error("Private Key already exists, use --force to overwrite"),new Error("Private key already exists");(0,Ut.writeFileSync)(or,n);let o=await te();if(o){let i=n2(o.config);i.privateKey&&(delete i.privateKey,e||l.info("Old private key deleted from config file"),(e?t.setupChannel??!1:t.setupChannel??await ce({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))&&(i.defaultChannel="encryption_v2")),i.publicKey=r,await Qi(o)}if(!e){l.success("Your RSA key has been generated"),l.success(`Private key saved in ${or}`),l.success("This key will be used to encrypt your bundle before sending it to Capgo"),l.success("Keep it safe"),l.success("Then make it unreadable by Capgo and unmodifiable by anyone"),l.success(`Public key saved in ${o.path}`),l.success("Your app will be the only one having it"),l.success("Only your users can decrypt your update"),l.success("Only you can send them an update");try{await tf(),G("Done \u2705")}catch(i){if(i instanceof Error&&i.message==="Capacitor sync cancelled")return!0;throw i}}return!0}async function i2(t){await Ce(),await Fy(t,!1)}async function a2(t){await Ce(),await Y7(t,!1)}var Cn=require("node:fs"),Py=require("node:os");function s2(){let t=(0,Py.homedir)();return(0,Cn.existsSync)(`${t}/.capgo`)||(0,Cn.existsSync)(".capgo")}async function ky(t,e,r=!1){if(r||ee("Login to Capgo"),!t&&!r){let a=await bD({message:"Enter your API key:",mask:"*"});if(ue(a))throw l.error("Login cancelled"),new Error("Login cancelled");t=a}if(!t)throw r||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");await Ce();let{local:n}=e;if(n){if(!(0,Cn.existsSync)(".git"))throw r||l.error("To use local you should be in a git repository"),new Error("Not in a git repository");(0,Cn.writeFileSync)(".capgo",`${t}
289
+ ${d}`;(0,Xr.writeFileSync)(t,p,"utf8"),l.success(`Documentation updated in ${t}`)}else(0,Xr.writeFileSync)(t,o,"utf8"),l.success(`Documentation written to ${t}`)}}var Ca=require("node:child_process"),Oe=require("node:fs"),Tr=require("node:path"),se=require("node:process");var Tf=pe(r2());var Ut=require("node:fs");function n2(t){return t.plugins??={},t.plugins.extConfig??={},t.plugins.CapacitorUpdater??={},t.plugins.CapacitorUpdater}async function W7(t,e=!1){e||ee("Save keys \u{1F511}");let r=await te(),n=t.key||hn,o=t.keyData||"";if(!(0,Ut.existsSync)(n)&&!o)throw e||l.error(`Cannot find a public key at ${n} or as keyData option or in ${r.path}`),new Error("Missing public key");if((0,Ut.existsSync)(n)&&(o=(0,Ut.readFileSync)(n,"utf8")),!o.startsWith("-----BEGIN RSA PUBLIC KEY-----"))throw e||l.error("The public key provided is not a valid RSA Public key"),new Error("Invalid RSA public key");if(r?.config){let i=n2(r.config);i.privateKey&&(delete i.privateKey,e||l.info("Old private key deleted from config file"),(e?t.setupChannel??!1:t.setupChannel??await ce({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))&&(i.defaultChannel="encryption_v2")),i.publicKey=o,await Qi(r)}return e||(l.success(`Public key saved into ${r.path} file in local directory`),l.success("Your app will decode the zip archive with this key")),!0}async function Y7(t,e=!1){e||ee("Deleting old private key \u{1F5D1}\uFE0F");let r=await te(),n=r?.config?.plugins?.CapacitorUpdater;if(n?.privateKey){if(delete n.privateKey,await Qi(r),(0,Ut.existsSync)(oa))try{(0,Ut.unlinkSync)(oa),e||l.success(`Old private key file deleted: ${oa}`)}catch(o){e||l.error(`Failed to delete old private key file: ${oa} (${String(o)})`)}if((0,Ut.existsSync)(Yl))try{(0,Ut.unlinkSync)(Yl),e||l.success(`Old public key file deleted: ${Yl}`)}catch(o){e||l.error(`Failed to delete old public key file: ${hn} (${String(o)})`)}return e||(l.success(`Old private key deleted from ${r.path} file`),G("Done \u2705")),!0}return e||l.info("No old private key found in config file"),!1}async function o2(t){await Ce(),await W7(t,!1)}async function Fy(t,e=!1){e||ee("Create keys \u{1F511}");let{publicKey:r,privateKey:n}=GO();if((0,Ut.existsSync)(hn)&&!t.force)throw e||l.error("Public Key already exists, use --force to overwrite"),new Error("Public key already exists");if((0,Ut.writeFileSync)(hn,r),(0,Ut.existsSync)(or)&&!t.force)throw e||l.error("Private Key already exists, use --force to overwrite"),new Error("Private key already exists");(0,Ut.writeFileSync)(or,n);let o=await te();if(o){let i=n2(o.config);i.privateKey&&(delete i.privateKey,e||l.info("Old private key deleted from config file"),(e?t.setupChannel??!1:t.setupChannel??await ce({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))&&(i.defaultChannel="encryption_v2")),i.publicKey=r,await Qi(o)}if(!e){l.success("Your RSA key has been generated"),l.success(`Private key saved in ${or}`),l.success("This key will be used to encrypt your bundle before sending it to Capgo"),l.success("Keep it safe"),l.success("Then make it unreadable by Capgo and unmodifiable by anyone"),l.success(`Public key saved in ${o.path}`),l.success("Your app will be the only one having it"),l.success("Only your users can decrypt your update"),l.success("Only you can send them an update");try{await tf(),G("Done \u2705")}catch(i){if(i instanceof Error&&i.message==="Capacitor sync cancelled")return!0;throw i}}return!0}async function i2(t){await Ce(),await Fy(t,!1)}async function a2(t){await Ce(),await Y7(t,!1)}var Cn=require("node:fs"),Py=require("node:os");function s2(){let t=(0,Py.homedir)();return(0,Cn.existsSync)(`${t}/.capgo`)||(0,Cn.existsSync)(".capgo")}async function ky(t,e,r=!1){if(r||ee("Login to Capgo"),!t&&!r){let a=await bD({message:"Enter your API key:",mask:"*"});if(ue(a))throw l.error("Login cancelled"),new Error("Login cancelled");t=a}if(!t)throw r||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");await Ce();let{local:n}=e;if(n){if(!(0,Cn.existsSync)(".git"))throw r||l.error("To use local you should be in a git repository"),new Error("Not in a git repository");(0,Cn.writeFileSync)(".capgo",`${t}
290
290
  `),(0,Cn.appendFileSync)(".gitignore",`.capgo
291
291
  `)}else{let a=(0,Py.homedir)();(0,Cn.writeFileSync)(`${a}/.capgo`,`${t}
292
292
  `)}let o=await re(t,e.supaHost,e.supaAnon),i=await ae(o,t,["write","all","upload"]);await me(t,{channel:"user-login",event:"User CLI login",icon:"\u2705",user_id:i,notify:!1}).catch(),r||(l.success(`login saved into .capgo file in ${n?"local":"home"} directory`),G("Done \u2705"))}async function u2(t,e){await ky(t,e,!1)}var $y="import { CapacitorUpdater } from '@capgo/capacitor-updater'",Qs="CapacitorUpdater.notifyAppReady()",J7=/import.*from.*/g,eu="production",Iy={stdio:"pipe"},tu,Wn;function c2(){tu??=(0,Oe.readdirSync)(Tf.default.tmpdir).map(t=>({name:t,full:`${Tf.default.tmpdir}/${t}`})).find(t=>t.name.startsWith("capgocli"))?.full??Tf.default.fileSync({prefix:"capgocli"}).name}function Mt(t,e){try{c2(),(0,Oe.writeFileSync)(tu,JSON.stringify(e?{step_done:t,pathToPackageJson:e}:{step_done:t,pathToPackageJson:Wn})),e&&(Wn=e)}catch(r){l.error(`Cannot mark step as done in the CLI, error:
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
- "version": "7.58.0",
3
+ "version": "7.58.1",
4
4
  "description": "A CLI to upload to capgo servers",
5
5
  "author": "Martin martin@capgo.app",
6
6
  "license": "Apache 2.0",
@@ -7,13 +7,12 @@ export declare function encryptSourceV2(source: Buffer, sessionKey: Buffer, ivSe
7
7
  export declare function decryptSourceV2(source: Buffer, ivSessionKey: string, key: string): Buffer;
8
8
  export declare function encryptChecksumV2(checksum: string, key: string): string;
9
9
  export declare function encryptChecksumV3(checksum: string, key: string): string;
10
- export declare function createRSA(format?: 'pem' | 'der/pem', keySize?: number): RSAKeys;
11
10
  export declare function decryptChecksumV2(checksum: string, key: string): string;
12
11
  export interface RSAKeys {
13
12
  publicKey: string;
14
13
  privateKey: string;
15
14
  }
16
- export declare function createRSAV2(): RSAKeys;
15
+ export declare function createRSA(): RSAKeys;
17
16
  /**
18
17
  * Calculate the key ID from a public key (first 4 characters of base64-encoded key)
19
18
  * This matches the implementation in the iOS/Android updater plugins
@@ -1 +1 @@
1
- {"version":3,"file":"cryptoV2.d.ts","sourceRoot":"","sources":["../../../src/api/cryptoV2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAgBpC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAgB5F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAOhG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAmBzF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAYvE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAWvE;AACD,wBAAgB,SAAS,CAAC,MAAM,GAAE,KAAK,GAAG,SAAiB,EAAE,OAAO,SAAO,GAAG,OAAO,CA+BpF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAUvE;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AACD,wBAAgB,WAAW,IAAI,OAAO,CAgBrC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgBnD"}
1
+ {"version":3,"file":"cryptoV2.d.ts","sourceRoot":"","sources":["../../../src/api/cryptoV2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAgBpC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAgB5F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAOhG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAmBzF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAYvE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAWvE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAUvE;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AACD,wBAAgB,SAAS,IAAI,OAAO,CAgBnC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgBnD"}
package/dist/src/sdk.js CHANGED
@@ -296,7 +296,7 @@ ${X.default.gray(hs)} ${t}
296
296
  `);let w=0,S=0;f(),s=setInterval(()=>{if(n&&a===u)return;y(),u=a;let R=X.default.magenta(e[w]);if(n)process.stdout.write(`${R} ${a}...`);else if(t==="timer")process.stdout.write(`${R} ${a} ${E(c)}`);else{let _=".".repeat(Math.floor(S)).slice(0,3);process.stdout.write(`${R} ${a}${_}`)}w=w+1<e.length?w+1:0,S=S<e.length?S+.125:0},r)},m=(D="",w=0)=>{o=!1,clearInterval(s),y();let S=w===0?X.default.green(qm):w===1?X.default.red(y_):X.default.red(D_);a=v(D??a),t==="timer"?process.stdout.write(`${S} ${a} ${E(c)}
297
297
  `):process.stdout.write(`${S} ${a}
298
298
  `),p(),i()};return{start:A,stop:m,message:(D="")=>{a=v(D??a)}}};function v_(t,e){let n=["normal","bold","dim","italic","underline","strikethrough"].indexOf(t),i="\x1B[";return i+n+"m"+e+i+"0m"}var zt=class t{title=null;headers=[];rows=[];static narrowTheme={top:["\u2554","\u2550","\u2564","\u2557"],row:["\u2551"," ","\u2502","\u2551"],div:["\u255F","\u2500","\u253C","\u2562"],bot:["\u255A","\u2550","\u2567","\u255D"]};static wideTheme={top:["\u2554\u2550","\u2550","\u2550\u2564\u2550","\u2550\u2557"],row:["\u2551 "," "," \u2502 "," \u2551"],div:["\u255F\u2500","\u2500","\u2500\u253C\u2500","\u2500\u2562"],bot:["\u255A\u2550","\u2550","\u2550\u2567\u2550","\u2550\u255D"]};static roundTheme={top:["\u256D\u2500","\u2500","\u2500\u252C\u2500","\u2500\u256E"],row:["\u2502 "," "," \u2502 "," \u2502"],div:["\u251C\u2500","\u2500","\u2500\u253C\u2500","\u2500\u2524"],bot:["\u2570\u2500","\u2500","\u2500\u2534\u2500","\u2500\u256F"]};theme=t.wideTheme;columnWidth(){let e=[this.headers,...this.rows].filter(n=>n.length>0),r=e[0].map(n=>this.cast(n).length);for(let n of e.slice(1))for(let i=0;i<r.length;i++){let s=this.cast(n[i]).length;s>r[i]&&(r[i]=s)}return r}cast(e){return typeof e=="object"?"obj":e!==void 0&&typeof e.toString=="function"?e.toString():""}renderTitle(){return"[ "+this.title+" ]"}renderLine(e){let r=this.columnWidth();return e[0]+r.map(n=>e[1].repeat(n)).join(e[2])+e[3]}renderCell(e,r,n=!1){let i=this.cast(e),s=n?v_("bold",i):i,o=r-i.length,a=this.theme.row[1];switch(typeof e){case"number":return a.repeat(o)+s;case"string":return s+a.repeat(o);case"boolean":case"object":return a.repeat(Math.ceil(o/2))+v_("italic",i)+a.repeat(Math.floor(o/2));default:return a.repeat(o)}}renderRow(e,r=!1){let n=this.theme.row,i=this.columnWidth();return n[0]+e.map((s,o)=>this.renderCell(s,i[o],r)).join(n[2])+n[3]}toString(){let e=this.theme,r=this.headers.length>0,n=this.rows.length>0;return[this.title?this.renderTitle():"",r||n?this.renderLine(e.top):"",r?this.renderRow(this.headers,!0):"",r&&n?this.renderLine(e.div):"",...this.rows.map(i=>this.renderRow(i)),r||n?this.renderLine(e.bot):""].filter(i=>i.length>0).join(`
299
- `)}};var g8=require("node:child_process"),Te=require("node:fs"),Wp=require("node:os"),xe=Ee(require("node:path")),Un=require("node:process"),os=Ee(jl());var Zt=require("fs"),Du=(t=".",e="unknown")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bun":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm":(0,Zt.existsSync)(o)?"yarn":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npm":e},Ml=(t=Du(),e=!1)=>{switch(t){case"bun":return e?"bun install":"install";case"pnpm":return e?"pnpm install":"install";case"yarn":return e?"yarn install":"install";case"npm":return e?"npm install":"install";case"unknown":return e?"unknown unknown":"unknown";default:return e?"npm install":"install"}},E_=(t=".",e="npx")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bunx":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm exec":(0,Zt.existsSync)(o)?"yarn dlx":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npx":e};function Ul(t,e){if(isNaN(t)||isNaN(e))throw new Error("Cannot compare against non-numbers");return t===e?0:t<e?-1:1}function C_(t=[],e=[]){return t.length&&!e.length?-1:!t.length&&e.length?1:0}function Km(t=[],e=[]){let r=Math.max(t.length,e.length);for(let n=0;n<r;n++){let i=t[n],s=e[n];if(i===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(i===void 0)return-1;if(typeof i=="string"&&typeof s=="number")return 1;if(typeof i=="number"&&typeof s=="string"||i<s)return-1;if(i>s)return 1}return 0}var Oo="0|[1-9]\\d*",l4="\\d*[a-zA-Z-][a-zA-Z0-9-]*",f4=`(?<major>${Oo})\\.(?<minor>${Oo})\\.(?<patch>${Oo})`,b_=`(?:${Oo}|${l4})`,S_=`(?:-(?<prerelease>${b_}(?:\\.${b_})*))`,__="[0-9A-Za-z-]+",A_=`(?:\\+(?<buildmetadata>${__}(?:\\.${__})*))`,O_=`v?${f4}${S_}?${A_}?`,x_=new RegExp(`^${O_}$`),T_="(?:<|>)?=?",d4="x|X|\\*",zm=`${Oo}|${d4}`,ql=`[v=\\s]*(?<major>${zm})(?:\\.(?<minor>${zm})(?:\\.(?<patch>${zm})${S_}?${A_}?)?)?`,I_=new RegExp(`^(?<operator>~>?|\\^|${T_})\\s*${ql}$`),P_=new RegExp(`^(?<operator>${T_})\\s*(${O_})$|^$`);function Gm(t){return typeof t=="number"&&!Number.isNaN(t)&&(!Number.isFinite(t)||0<=t&&t<=Number.MAX_SAFE_INTEGER)}var Wm=256;var h4=new RegExp(`^${Oo}$`);function Qt(t){return t.split(".").filter(Boolean).map(e=>{if(h4.test(e)){let r=Number(e);if(Gm(r))return r}return e})}function nn(t){return t.split(".").filter(Boolean)}function Pi(t,e){let r=Number(t);if(!Gm(r))throw new TypeError(e);return r}function Wn(t){return Number.isNaN(t.major)&&Number.isNaN(t.minor)&&Number.isNaN(t.patch)&&(t.prerelease===void 0||t.prerelease.length===0)&&(t.build===void 0||t.build.length===0)}function er(t,e){return t===e?0:Ul(t.major,e.major)||Ul(t.minor,e.minor)||Ul(t.patch,e.patch)||C_(t.prerelease,e.prerelease)||Km(t.prerelease,e.prerelease)}function Xm(t){return t.toFixed(0)}function sn(t){let e=Xm(t.major),r=Xm(t.minor),n=Xm(t.patch),i=t.prerelease?.join(".")??"",s=t.build?.join(".")??"";return[[`${e}.${r}.${n}`,i].filter(u=>u).join("-"),s].filter(u=>u).join("+")}function p4(t,e){if(Wn(e))return!0;let r=er(t,e);switch(e.operator){case"=":case void 0:return r===0;case"!=":return r!==0;case">":return r>0;case"<":return r<0;case">=":return r>=0;case"<=":return r<=0}}function Hl(t,e){for(let r of e)if(!p4(t,r))return!1;if(t.prerelease&&t.prerelease.length>0){for(let r of e){if(Wn(r))continue;let{major:n,minor:i,patch:s,prerelease:o}=r;if(o&&o.length>0&&t.major===n&&t.minor===i&&t.patch===s)return!0}return!1}return!0}function wu(t,e){return e.some(r=>Hl(t,r))}function m4(t=[]){let e=[...t],r=e.length;for(;r>=0;){let n=e[r];if(typeof n=="number"){e[r]=n+1;break}r-=1}return r===-1&&e.push(0),e}function vu(t=[],e){let r=m4(t);if(!e)return r;let n=Qt(e);if(n.every(i=>typeof i=="string")){if(n.every((i,s)=>i===r[s])&&typeof r[n.length]=="number")return r;n=[...n,0]}return n}function Eu(t,e,r={}){let n=r.build!==void 0?nn(r.build):t.build??[];switch(e){case"premajor":return{major:t.major+1,minor:0,patch:0,prerelease:vu(t.prerelease,r.prerelease),build:n};case"preminor":return{major:t.major,minor:t.minor+1,patch:0,prerelease:vu(t.prerelease,r.prerelease),build:n};case"prepatch":return{major:t.major,minor:t.minor,patch:t.patch+1,prerelease:vu(t.prerelease,r.prerelease),build:n};case"prerelease":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:vu(t.prerelease,r.prerelease),build:n}}case"major":return{major:(t.prerelease??[]).length===0||t.minor!==0||t.patch!==0?t.major+1:t.major,minor:0,patch:0,prerelease:[],build:n};case"minor":{let s=(t.prerelease??[]).length===0||t.patch!==0?t.minor+1:t.minor;return{major:t.major,minor:s,patch:0,prerelease:[],build:n}}case"patch":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:[],build:n}}case"pre":return{major:t.major,minor:t.minor,patch:t.patch,prerelease:vu(t.prerelease,r.prerelease),build:n};default:throw new TypeError(`Cannot increment version: invalid argument ${e}`)}}var Vl={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},xo={operator:void 0,...Vl};function Ym(t,e){return er(t,e)>0}function ps(t,e){return er(t,e)<0}function g4(t){let r=t.match(P_)?.groups;if(!r)return null;let{operator:n,prerelease:i,buildmetadata:s}=r,o=r.major?{major:Pi(r.major,`Cannot parse comparator ${t}: invalid major version`),minor:Pi(r.minor,`Cannot parse comparator ${t}: invalid minor version`),patch:Pi(r.patch,`Cannot parse comparator ${t}: invalid patch version`),prerelease:i?Qt(i):[],build:s?nn(s):[]}:Vl;return{operator:n||void 0,...o}}function Ge(t){return!t||t.toLowerCase()==="x"||t==="*"}function y4(t){if(!Ge(t.major))return Ge(t.minor)?{operator:">=",major:+t.major,minor:0,patch:0,prerelease:[],build:[]}:Ge(t.patch)?{operator:">=",major:+t.major,minor:+t.minor,patch:0,prerelease:[],build:[]}:{operator:">=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:t.prerelease?Qt(t.prerelease):[],build:[]}}function D4(t){if(!Ge(t.major))return Ge(t.minor)?{operator:"<",major:+t.major+1,minor:0,patch:0,prerelease:[],build:[]}:Ge(t.patch)?{operator:"<",major:+t.major,minor:+t.minor+1,patch:0,prerelease:[],build:[]}:t.prerelease?{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:Qt(t.prerelease),build:[]}:{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:[],build:[]}}function w4(t){let e=t.match(new RegExp(`^${ql}`)),r=e?.groups;if(!r)return null;let n=e[0].length,i=t.slice(n).match(/^\s+-\s+/);if(!i)return null;let s=i[0].length,a=t.slice(n+s).match(new RegExp(`^${ql}\\s*$`))?.groups;if(!a)return null;let u=y4(r),c=D4(a);return[u,c].filter(Boolean)}function v4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return i===0?[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];let a=Qt(t.prerelease??"");return i===0?s===0?[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s,patch:o+1}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i+1,minor:0,patch:0}]}function E4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]}function b4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return n?[{operator:"<",major:i,minor:0,patch:0}]:[{operator:"<",major:i,minor:0,patch:0}];if(n)return[{operator:"<",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:"<",major:i,minor:s,patch:o,prerelease:a,build:u}]}function _4(t){let e=Ge(t.minor),r=Ge(t.patch),n=+t.major,i=+t.minor,s=+t.patch;if(e)return r?[{operator:"<",major:n+1,minor:0,patch:0}]:[{operator:"<",major:n,minor:i+1,patch:0}];if(r)return[{operator:"<",major:n,minor:i+1,patch:0}];let o=Qt(t.prerelease??""),a=nn(t.build??"");return[{operator:"<=",major:n,minor:i,patch:s,prerelease:o,build:a}]}function C4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return[{operator:">=",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:">",major:i,minor:s,patch:o,prerelease:a,build:u}]}function S4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return n?[{operator:">=",major:i,minor:0,patch:0}]:[{operator:">=",major:i,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a,build:u}]}function A4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:void 0,major:i,minor:s,patch:o,prerelease:a,build:u}]}function O4(t){let e=t.match(I_)?.groups;if(!e)return g4(t);switch(e.operator){case"^":return v4(e);case"~":case"~>":return E4(e);case"<":return b4(e);case"<=":return _4(e);case">":return C4(e);case">=":return S4(e);case"=":case"":return A4(e);default:throw new Error(`Cannot parse version range: '${e.operator}' is not a valid operator`)}}function x4(t){return t.split(/\s+/).flatMap(O4)}function zl(t){let e=t.replaceAll(/(?<=<|>|=|~|\^)(\s+)/g,"").split(/\s*\|\|\s*/).map(r=>w4(r)||x4(r));if(e.some(r=>r.includes(null)))throw new TypeError(`Cannot parse version range: range "${t}" is invalid`);return e}function lt(t){if(typeof t!="string")throw new TypeError(`Cannot parse version as version must be a string: received ${typeof t}`);if(t.length>Wm)throw new TypeError(`Cannot parse version as version length is too long: length is ${t.length}, max length is ${Wm}`);t=t.trim();let e=t.match(x_)?.groups;if(!e)throw new TypeError(`Cannot parse version: ${t}`);let r=Pi(e.major,`Cannot parse version ${t}: invalid major version`),n=Pi(e.minor,`Cannot parse version ${t}: invalid minor version`),i=Pi(e.patch,`Cannot parse version ${t}: invalid patch version`),s=e.prerelease?Qt(e.prerelease):[],o=e.buildmetadata?nn(e.buildmetadata):[];return{major:r,minor:n,patch:i,prerelease:s,build:o}}function F_(t,e){let r=t.operator,n=e.operator;if(r===void 0)return Wn(t)?!0:wu(t,[[e]]);if(n===void 0)return Wn(e)?!0:wu(e,[[t]]);let i=er(t,e);return(r===">="||r===">")&&(n===">="||n===">")||(r==="<="||r==="<")&&(n==="<="||n==="<")||i===0&&((r===">="||r==="<=")&&(n===">="||n==="<="))||i===-1&&(r===">="||r===">")&&(n==="<="||n==="<")||i===1&&(r==="<="||r==="<")&&(n===">="||n===">")}function T4(t){return t.every(e=>e.some(r=>I4(r)))}function I4(t){for(let e=0;e<t.length-1;e++){let r=t[e];for(let n of t.slice(e+1))if(!F_(r,n))return!1}return!0}function R_(t,e){return T4([t,e])&&t.some(r=>e.some(n=>r.every(i=>n.every(s=>F_(i,s)))))}function k_(t){try{return lt(t),!0}catch{return!1}}function N_(t,e){return er(t,e)>=0}var eu=Ee(FS()),gb=Ee(fD()),y8=Ee(UA()),Xp=Ee(Wd());var ni={name:"@capgo/cli",version:"7.58.0",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};async function Xd(t){try{let r=`https://registry.npmjs.org/${encodeURIComponent(t.toLowerCase())}`,n=await fetch(r,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});return n.ok&&(await n.json())["dist-tags"]?.latest||null}catch{return null}}async function Je(){let t=await Xd("@capgo/cli")??"",e=t?.split(".")[0];t!==ni.version&&g.warning(`\u{1F6A8} You are using @capgo/cli@${ni.version} it's not the latest version.
299
+ `)}};var g8=require("node:child_process"),Te=require("node:fs"),Wp=require("node:os"),xe=Ee(require("node:path")),Un=require("node:process"),os=Ee(jl());var Zt=require("fs"),Du=(t=".",e="unknown")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bun":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm":(0,Zt.existsSync)(o)?"yarn":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npm":e},Ml=(t=Du(),e=!1)=>{switch(t){case"bun":return e?"bun install":"install";case"pnpm":return e?"pnpm install":"install";case"yarn":return e?"yarn install":"install";case"npm":return e?"npm install":"install";case"unknown":return e?"unknown unknown":"unknown";default:return e?"npm install":"install"}},E_=(t=".",e="npx")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bunx":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm exec":(0,Zt.existsSync)(o)?"yarn dlx":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npx":e};function Ul(t,e){if(isNaN(t)||isNaN(e))throw new Error("Cannot compare against non-numbers");return t===e?0:t<e?-1:1}function C_(t=[],e=[]){return t.length&&!e.length?-1:!t.length&&e.length?1:0}function Km(t=[],e=[]){let r=Math.max(t.length,e.length);for(let n=0;n<r;n++){let i=t[n],s=e[n];if(i===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(i===void 0)return-1;if(typeof i=="string"&&typeof s=="number")return 1;if(typeof i=="number"&&typeof s=="string"||i<s)return-1;if(i>s)return 1}return 0}var Oo="0|[1-9]\\d*",l4="\\d*[a-zA-Z-][a-zA-Z0-9-]*",f4=`(?<major>${Oo})\\.(?<minor>${Oo})\\.(?<patch>${Oo})`,b_=`(?:${Oo}|${l4})`,S_=`(?:-(?<prerelease>${b_}(?:\\.${b_})*))`,__="[0-9A-Za-z-]+",A_=`(?:\\+(?<buildmetadata>${__}(?:\\.${__})*))`,O_=`v?${f4}${S_}?${A_}?`,x_=new RegExp(`^${O_}$`),T_="(?:<|>)?=?",d4="x|X|\\*",zm=`${Oo}|${d4}`,ql=`[v=\\s]*(?<major>${zm})(?:\\.(?<minor>${zm})(?:\\.(?<patch>${zm})${S_}?${A_}?)?)?`,I_=new RegExp(`^(?<operator>~>?|\\^|${T_})\\s*${ql}$`),P_=new RegExp(`^(?<operator>${T_})\\s*(${O_})$|^$`);function Gm(t){return typeof t=="number"&&!Number.isNaN(t)&&(!Number.isFinite(t)||0<=t&&t<=Number.MAX_SAFE_INTEGER)}var Wm=256;var h4=new RegExp(`^${Oo}$`);function Qt(t){return t.split(".").filter(Boolean).map(e=>{if(h4.test(e)){let r=Number(e);if(Gm(r))return r}return e})}function nn(t){return t.split(".").filter(Boolean)}function Pi(t,e){let r=Number(t);if(!Gm(r))throw new TypeError(e);return r}function Wn(t){return Number.isNaN(t.major)&&Number.isNaN(t.minor)&&Number.isNaN(t.patch)&&(t.prerelease===void 0||t.prerelease.length===0)&&(t.build===void 0||t.build.length===0)}function er(t,e){return t===e?0:Ul(t.major,e.major)||Ul(t.minor,e.minor)||Ul(t.patch,e.patch)||C_(t.prerelease,e.prerelease)||Km(t.prerelease,e.prerelease)}function Xm(t){return t.toFixed(0)}function sn(t){let e=Xm(t.major),r=Xm(t.minor),n=Xm(t.patch),i=t.prerelease?.join(".")??"",s=t.build?.join(".")??"";return[[`${e}.${r}.${n}`,i].filter(u=>u).join("-"),s].filter(u=>u).join("+")}function p4(t,e){if(Wn(e))return!0;let r=er(t,e);switch(e.operator){case"=":case void 0:return r===0;case"!=":return r!==0;case">":return r>0;case"<":return r<0;case">=":return r>=0;case"<=":return r<=0}}function Hl(t,e){for(let r of e)if(!p4(t,r))return!1;if(t.prerelease&&t.prerelease.length>0){for(let r of e){if(Wn(r))continue;let{major:n,minor:i,patch:s,prerelease:o}=r;if(o&&o.length>0&&t.major===n&&t.minor===i&&t.patch===s)return!0}return!1}return!0}function wu(t,e){return e.some(r=>Hl(t,r))}function m4(t=[]){let e=[...t],r=e.length;for(;r>=0;){let n=e[r];if(typeof n=="number"){e[r]=n+1;break}r-=1}return r===-1&&e.push(0),e}function vu(t=[],e){let r=m4(t);if(!e)return r;let n=Qt(e);if(n.every(i=>typeof i=="string")){if(n.every((i,s)=>i===r[s])&&typeof r[n.length]=="number")return r;n=[...n,0]}return n}function Eu(t,e,r={}){let n=r.build!==void 0?nn(r.build):t.build??[];switch(e){case"premajor":return{major:t.major+1,minor:0,patch:0,prerelease:vu(t.prerelease,r.prerelease),build:n};case"preminor":return{major:t.major,minor:t.minor+1,patch:0,prerelease:vu(t.prerelease,r.prerelease),build:n};case"prepatch":return{major:t.major,minor:t.minor,patch:t.patch+1,prerelease:vu(t.prerelease,r.prerelease),build:n};case"prerelease":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:vu(t.prerelease,r.prerelease),build:n}}case"major":return{major:(t.prerelease??[]).length===0||t.minor!==0||t.patch!==0?t.major+1:t.major,minor:0,patch:0,prerelease:[],build:n};case"minor":{let s=(t.prerelease??[]).length===0||t.patch!==0?t.minor+1:t.minor;return{major:t.major,minor:s,patch:0,prerelease:[],build:n}}case"patch":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:[],build:n}}case"pre":return{major:t.major,minor:t.minor,patch:t.patch,prerelease:vu(t.prerelease,r.prerelease),build:n};default:throw new TypeError(`Cannot increment version: invalid argument ${e}`)}}var Vl={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},xo={operator:void 0,...Vl};function Ym(t,e){return er(t,e)>0}function ps(t,e){return er(t,e)<0}function g4(t){let r=t.match(P_)?.groups;if(!r)return null;let{operator:n,prerelease:i,buildmetadata:s}=r,o=r.major?{major:Pi(r.major,`Cannot parse comparator ${t}: invalid major version`),minor:Pi(r.minor,`Cannot parse comparator ${t}: invalid minor version`),patch:Pi(r.patch,`Cannot parse comparator ${t}: invalid patch version`),prerelease:i?Qt(i):[],build:s?nn(s):[]}:Vl;return{operator:n||void 0,...o}}function Ge(t){return!t||t.toLowerCase()==="x"||t==="*"}function y4(t){if(!Ge(t.major))return Ge(t.minor)?{operator:">=",major:+t.major,minor:0,patch:0,prerelease:[],build:[]}:Ge(t.patch)?{operator:">=",major:+t.major,minor:+t.minor,patch:0,prerelease:[],build:[]}:{operator:">=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:t.prerelease?Qt(t.prerelease):[],build:[]}}function D4(t){if(!Ge(t.major))return Ge(t.minor)?{operator:"<",major:+t.major+1,minor:0,patch:0,prerelease:[],build:[]}:Ge(t.patch)?{operator:"<",major:+t.major,minor:+t.minor+1,patch:0,prerelease:[],build:[]}:t.prerelease?{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:Qt(t.prerelease),build:[]}:{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:[],build:[]}}function w4(t){let e=t.match(new RegExp(`^${ql}`)),r=e?.groups;if(!r)return null;let n=e[0].length,i=t.slice(n).match(/^\s+-\s+/);if(!i)return null;let s=i[0].length,a=t.slice(n+s).match(new RegExp(`^${ql}\\s*$`))?.groups;if(!a)return null;let u=y4(r),c=D4(a);return[u,c].filter(Boolean)}function v4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return i===0?[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];let a=Qt(t.prerelease??"");return i===0?s===0?[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s,patch:o+1}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i+1,minor:0,patch:0}]}function E4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]}function b4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return n?[{operator:"<",major:i,minor:0,patch:0}]:[{operator:"<",major:i,minor:0,patch:0}];if(n)return[{operator:"<",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:"<",major:i,minor:s,patch:o,prerelease:a,build:u}]}function _4(t){let e=Ge(t.minor),r=Ge(t.patch),n=+t.major,i=+t.minor,s=+t.patch;if(e)return r?[{operator:"<",major:n+1,minor:0,patch:0}]:[{operator:"<",major:n,minor:i+1,patch:0}];if(r)return[{operator:"<",major:n,minor:i+1,patch:0}];let o=Qt(t.prerelease??""),a=nn(t.build??"");return[{operator:"<=",major:n,minor:i,patch:s,prerelease:o,build:a}]}function C4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return[{operator:">=",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:">",major:i,minor:s,patch:o,prerelease:a,build:u}]}function S4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return n?[{operator:">=",major:i,minor:0,patch:0}]:[{operator:">=",major:i,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a,build:u}]}function A4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:void 0,major:i,minor:s,patch:o,prerelease:a,build:u}]}function O4(t){let e=t.match(I_)?.groups;if(!e)return g4(t);switch(e.operator){case"^":return v4(e);case"~":case"~>":return E4(e);case"<":return b4(e);case"<=":return _4(e);case">":return C4(e);case">=":return S4(e);case"=":case"":return A4(e);default:throw new Error(`Cannot parse version range: '${e.operator}' is not a valid operator`)}}function x4(t){return t.split(/\s+/).flatMap(O4)}function zl(t){let e=t.replaceAll(/(?<=<|>|=|~|\^)(\s+)/g,"").split(/\s*\|\|\s*/).map(r=>w4(r)||x4(r));if(e.some(r=>r.includes(null)))throw new TypeError(`Cannot parse version range: range "${t}" is invalid`);return e}function lt(t){if(typeof t!="string")throw new TypeError(`Cannot parse version as version must be a string: received ${typeof t}`);if(t.length>Wm)throw new TypeError(`Cannot parse version as version length is too long: length is ${t.length}, max length is ${Wm}`);t=t.trim();let e=t.match(x_)?.groups;if(!e)throw new TypeError(`Cannot parse version: ${t}`);let r=Pi(e.major,`Cannot parse version ${t}: invalid major version`),n=Pi(e.minor,`Cannot parse version ${t}: invalid minor version`),i=Pi(e.patch,`Cannot parse version ${t}: invalid patch version`),s=e.prerelease?Qt(e.prerelease):[],o=e.buildmetadata?nn(e.buildmetadata):[];return{major:r,minor:n,patch:i,prerelease:s,build:o}}function F_(t,e){let r=t.operator,n=e.operator;if(r===void 0)return Wn(t)?!0:wu(t,[[e]]);if(n===void 0)return Wn(e)?!0:wu(e,[[t]]);let i=er(t,e);return(r===">="||r===">")&&(n===">="||n===">")||(r==="<="||r==="<")&&(n==="<="||n==="<")||i===0&&((r===">="||r==="<=")&&(n===">="||n==="<="))||i===-1&&(r===">="||r===">")&&(n==="<="||n==="<")||i===1&&(r==="<="||r==="<")&&(n===">="||n===">")}function T4(t){return t.every(e=>e.some(r=>I4(r)))}function I4(t){for(let e=0;e<t.length-1;e++){let r=t[e];for(let n of t.slice(e+1))if(!F_(r,n))return!1}return!0}function R_(t,e){return T4([t,e])&&t.some(r=>e.some(n=>r.every(i=>n.every(s=>F_(i,s)))))}function k_(t){try{return lt(t),!0}catch{return!1}}function N_(t,e){return er(t,e)>=0}var eu=Ee(FS()),gb=Ee(fD()),y8=Ee(UA()),Xp=Ee(Wd());var ni={name:"@capgo/cli",version:"7.58.1",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};async function Xd(t){try{let r=`https://registry.npmjs.org/${encodeURIComponent(t.toLowerCase())}`,n=await fetch(r,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});return n.ok&&(await n.json())["dist-tags"]?.latest||null}catch{return null}}async function Je(){let t=await Xd("@capgo/cli")??"",e=t?.split(".")[0];t!==ni.version&&g.warning(`\u{1F6A8} You are using @capgo/cli@${ni.version} it's not the latest version.
300
300
  Please use @capgo/cli@${t}" or @capgo/cli@${e} to keep up to date with the latest features and bug fixes.`)}async function QT(t,e,r,n,i,s="\u2705"){await _e(r,{channel:t,event:n,icon:s,user_id:e,...i?{tags:{"app-id":i}}:{},notify:!1})}var Cw=require("node:buffer"),e1=require("node:crypto"),jY=(()=>{let t=[];for(let e=0;e<256;e++){let r=e;for(let n=0;n<8;n++)r=r&1?3988292384^r>>>1:r>>>1;t[e]=r}return t})();function MY(t){let e=4294967295;for(let r=0;r<t.length;r++){let n=t[r];e=jY[(e^n)&255]^e>>>8}return e=e^4294967295,(e>>>0).toString(16).padStart(8,"0")}async function ii(t,e="sha256"){let r=Cw.Buffer.isBuffer(t)?t:Cw.Buffer.from(t);if(e==="crc32")return MY(r);let n=(0,e1.createHash)(e);return n.update(r),n.digest("hex")}var al=Ee(bM());async function _M(){let t=await(0,al.loadConfig)();return{config:t.app.extConfig,path:t.app.extConfigFilePath}}async function KE(t,e,r=!1){let n=await(0,al.loadConfig)(),{extConfig:i}=n.app;i&&(i.plugins||(i.plugins={extConfig:{},[t]:{}}),i.plugins[t]||(i.plugins[t]={}),r?i=e.config:i.plugins[t]=e.config.plugins?.[t],(0,al.writeConfig)(i,n.app.extConfigFilePath))}async function Ya(t,e=!1){await KE("CapacitorUpdater",t,e)}var ru=".capgo_key",$r=".capgo_key_v2",Yp=`${ru}.pub`,Ei=`${$r}.pub`,l8="https://capgo.app",f8="https://files.capgo.app",d8="https://api.capgo.app",h8="https://console.capgo.app",yb=12e4,nfe=1024*1024*20,ife=1024*1024*1024,sfe=1024*1024*99,tu="package.json",nu=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-z-][0-9a-z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-z-][0-9a-z-]*))*))?(?:\+([0-9a-z-]+(?:\.[0-9a-z-]+)*))?$/i,W=t=>t?`
301
301
  ${y8.default.render(t)}`:"";function Gp(t){return new Promise(e=>{setTimeout(e,t)})}function Lr(t){return(0,os.isMonorepo)(t)?(0,os.findMonorepoRoot)(t):(0,os.isNXMonorepo)(t)?(0,os.findNXMonorepoRoot)(t):t}function ofe(t=Lr((0,Un.cwd)()),e=void 0){let r=e?.split(",")[0];if(r&&!(0,Te.existsSync)(r)){let i=`Package.json at ${r} does not exist`;throw g.error(i),new Error(i)}let n=(0,Te.readFileSync)(r??(0,xe.join)(t,tu));return JSON.parse(n)}function as(t=Lr((0,Un.cwd)()),e=void 0){return ofe(t,e).version??""}function p8(t){let e=t.replace("^","").replace("~","");if(k_(e))try{let r=lt(e);return sn(r)}catch{return e}return e}async function us(t,e=(0,Un.cwd)(),r){if(t!=="@capgo/capacitor-updater")return null;let n=r?(0,xe.dirname)(r):e;try{let u=`${t}/package.json`,{createRequire:c}=await import("node:module"),d=c((0,xe.join)(n,"package.json")).resolve(u),h=JSON.parse((0,Te.readFileSync)(d,"utf-8"));if(h.version)return h.version}catch{}let i=n,s=xe.default.parse(i).root;for(;i!==s;){let u=(0,xe.join)(i,"node_modules",t,tu);if((0,Te.existsSync)(u))try{let l=JSON.parse((0,Te.readFileSync)(u,"utf-8"));if(l.version)return l.version}catch{}let c=(0,xe.dirname)(i);if(c===i)break;i=c}let o=null,a=(0,xe.join)(e,"ios","App","Podfile");if((0,Te.existsSync)(a))try{let c=(0,Te.readFileSync)(a,"utf-8").match(/pod\s+['"]CapgoCapacitorUpdater['"],\s*:path\s*=>\s*['"]([^'"]+)['"]/);c?.[1]&&(o=(0,xe.resolve)((0,xe.join)(e,"ios","App",c[1])))}catch{}if(!o){let u=(0,xe.join)(e,"android","capacitor.settings.gradle");if((0,Te.existsSync)(u))try{let l=(0,Te.readFileSync)(u,"utf-8").match(/project\(':capgo-capacitor-updater'\)\.projectDir\s*=\s*new\s+File\(['"]([^'"]+)['"]/);l?.[1]&&(o=(0,xe.resolve)((0,xe.join)(e,"android",l[1])).replace(/\/android$/,""))}catch{}}if(o){let u=(0,xe.join)(o,tu);if((0,Te.existsSync)(u))try{let c=JSON.parse((0,Te.readFileSync)(u,"utf-8"));if(c.version)return c.version}catch{}}try{let c=(await Jp(e)).get(t);if(c)return c}catch{}return null}async function Jp(t=Lr((0,Un.cwd)()),e=void 0){let r=e?.split(",");if(r??=[(0,xe.join)(t,tu)],r){for(let i of r)if(!(0,Te.existsSync)(i)){let s=`Package.json at ${i} does not exist`;throw g.error(s),new Error(s)}}let n=new Map;for(let i of r){let s=(0,Te.readFileSync)(i),o=JSON.parse(s);for(let a in o.dependencies)n.set(a,p8(o.dependencies[a]));for(let a in o.devDependencies)n.set(a,p8(o.devDependencies[a]))}return n}async function he(){try{let t=await _M();if(!t){let e="No capacitor config file found, run `cap init` first";throw g.error(e),new Error(e)}return t}catch(t){let e=`No capacitor config file found, run \`cap init\` first ${W(t)}`;throw g.error(e),new Error(e)}}async function afe(t,e){let r=await he();return r?.config&&(r.config.plugins??={},r.config.plugins.extConfig??={},r.config.plugins[t]??={},r.config.plugins[t]={...r.config.plugins[t],...e},await KE(t,r)),r}async function D8(t){return afe("CapacitorUpdater",t)}async function Sn(){try{let t=await he(),e={host:t?.config?.plugins?.CapacitorUpdater?.localHost||l8,hostWeb:t?.config?.plugins?.CapacitorUpdater?.localWebHost||h8,hostFilesApi:t?.config?.plugins?.CapacitorUpdater?.localApiFiles||f8,hostApi:t?.config?.plugins?.CapacitorUpdater?.localApi||d8};return t?.config?.plugins?.CapacitorUpdater?.localSupa&&t?.config?.plugins?.CapacitorUpdater?.localSupaAnon&&(g.info("Using custom supabase instance from capacitor.config.json"),e.supaKey=t?.config?.plugins?.CapacitorUpdater?.localSupaAnon,e.supaHost=t?.config?.plugins?.CapacitorUpdater?.localSupa),e}catch{return{host:l8,hostWeb:h8,hostFilesApi:f8,hostApi:d8}}}var ufe=/([A-Za-z0-9]+)\.(java|swift|kt|scala)$/;async function Zp(){let t=await Sn();try{let e=await fetch(`${t.hostApi}/private/config`);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return{...await e.json(),...t}}catch{return g.info(`Local config ${W(t)}`),t}}async function w8(){let t=await Sn();try{let e=await fetch(`${t.hostFilesApi}/files/config`);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return await e.json()}catch{return{partialUpload:!1,TUSUpload:!1,partialUploadForced:!1,TUSUploadForced:!1,maxUploadLength:ife,maxChunkSize:sfe,alertUploadSize:nfe}}}async function pe(t,e,r){let n=await Zp();if(e&&r&&(g.info("Using custom supabase instance from provided options"),n.supaHost=e,n.supaKey=r),!n.supaHost||!n.supaKey)throw g.error("Cannot connect to server please try again later"),new Error("Cannot connect to server please try again later");return(0,eu.createClient)(n.supaHost,n.supaKey,{auth:{persistSession:!1},global:{headers:{capgkey:t}}})}async function cfe(t,e,r){let{data:n}=await t.rpc("is_allowed_capgkey",{apikey:e,keymode:r}).single();if(!n){g.error("Invalid API key or insufficient permissions.");let s=`Your key should be: ${r.map((o,a)=>r.length===1?`"${o}"`:a===r.length-1?`or "${o}"`:`"${o}", `).join("")} mode.`;throw g.error(s),new Error("Invalid API key or insufficient permissions.")}}async function v8(t,e){let{data:r}=await t.rpc("is_paying_org",{orgid:e}).single();return r||!1}async function E8(t,e){let{data:r}=await t.rpc("is_trial_org",{orgid:e}).single();return r||0}async function lfe(t,e){let{data:r}=await t.rpc("is_allowed_action_org",{orgid:e}).single();return!!r}async function ffe(t,e,r){let{data:n}=await t.rpc("is_allowed_action",{apikey:r,appid:e}).single();return!!n}var hr=(o=>(o[o.none=0]="none",o[o.read=1]="read",o[o.upload=2]="upload",o[o.write=3]="write",o[o.admin=4]="admin",o[o.super_admin=5]="super_admin",o))(hr||{}),iu=(t,e)=>t>=e;async function b8(t,e,r){let{data:n,error:i}=await t.rpc("get_org_perm_for_apikey",{apikey:e,app_id:r}).single();if(i)throw g.error("Cannot get permissions for organization!"),console.error(i),new Error("Cannot get permissions for organization");if(n.includes("perm")){let a=null;switch(n){case"perm_none":{a=0;break}case"perm_read":{a=1;break}case"perm_upload":{a=2;break}case"perm_write":{a=3;break}case"perm_admin":{a=4;break}case"perm_owner":{a=5;break}default:throw n.includes("invite")?(g.info("Please accept/deny the organization invitation before trying to access the app"),new Error("Organization invitation pending")):(g.error(`Invalid output when fetching organization permission. Response: ${n}`),new Error(`Invalid output when fetching organization permission. Response: ${n}`))}return{okay:!0,data:a}}let o=null;switch(n){case"INVALID_APIKEY":{o="INVALID_APIKEY";break}case"NO_APP":{o="NO_APP";break}case"NO_ORG":{o="NO_ORG";break}default:throw g.error(`Invalid error when fetching organization permission. Response: ${n}`),new Error(`Invalid error when fetching organization permission. Response: ${n}`)}return{okay:!1,error:o}}async function _8(t,e,r){let{data:n,error:i}=await t.rpc("get_organization_cli_warnings",{orgid:e,cli_version:r});if(i){g.error(`Cannot get cli warnings: ${W(i)}`);return}if(n.length>0){g.warn(`Found ${n.length} cli warnings for your organization.`);let s=null;for(let o of n){if(typeof o!="object"||typeof o.message!="string"||typeof o.fatal!="boolean"){g.error(`Invalid cli warning: ${o}`);continue}let a=o;a.fatal?(g.error(`${a.message.replaceAll("\\n",`
302
302
  `)}`),s=new Error(a.message)):g.warn(`${a.message.replaceAll("\\n",`
@@ -337,7 +337,7 @@ ${W(s)}`),new Error(`Cannot retrieve unknown version for app ${e}: ${W(s)}`)}fun
337
337
  `).eq("app_id",e).order("created_at",{ascending:!1});if(i)throw r||g.error(`App ${e} not found in database`),new Error(`App ${e} not found in database: ${W(i)}`);return n}async function bb(t,e,r,n={}){let{silent:i=!1}=n,{error:s}=await t.from("app_versions").update({deleted:!0}).eq("app_id",e).eq("deleted",!1).eq("name",r);if(s){let o=`App version ${e}@${r} not found in database`;throw i||g.error(o),new Error(`${o}: ${W(s)}`)}}async function nm(t,e,r,n={}){let{silent:i=!1,autoUnlink:s=!1}=n,o=await gfe(t,e,r,{silent:i});await L8(t,e,o,{silent:i,autoUnlink:s}),await bb(t,e,r,{silent:i})}function z8(t,e=!1){if(e)return;if(!t.length)throw new Error("No bundle found");let r=new zt;r.theme=zt.roundTheme,r.headers=["Version","Created","Keep"],r.rows=[];for(let n of t.toReversed())r.rows.push([n.name,ou(n.created_at),n.keep??""]);g.success("Bundles"),g.success(r.toString())}async function im(t,e,r={}){let{silent:n=!1}=r,{data:i,error:s}=await t.from("app_versions").select().eq("app_id",e).eq("deleted",!1).order("created_at",{ascending:!1});if(s){let o=`App ${e} not found in database`;throw n||g.error(o),new Error(`${o}: ${W(s)}`)}return i??[]}async function K8(t,e,r={}){let{silent:n=!1}=r,{data:i,error:s}=await t.from("channels").select("version").eq("app_id",e);if(s){let o=`App ${e} not found in database`;throw n||g.error(o),new Error(`${o}: ${W(s)}`)}return(i??[]).map(o=>o.version)}async function gfe(t,e,r,n={}){let{silent:i=!1}=n,{data:s,error:o}=await t.from("app_versions").select().eq("app_id",e).eq("name",r).eq("deleted",!1).single();if(!s||o){let a=`App version ${e}@${r} doesn't exist`;throw i||g.error(a),new Error(`${a}${o?`: ${W(o)}`:""}`)}return s}var au=require("node:fs");async function G8(t,e){let{data:r}=await t.rpc("exist_app_v2",{appid:e}).single();return!!r}async function Et(t,e,r,n,i=!1){let s=qn(),o=await b8(t,e,r);if(!o.okay)switch(o.error){case"INVALID_APIKEY":{let c="Invalid apikey, such apikey does not exists!";throw i||g.error(c),new Error(c)}case"NO_APP":{let c=`App ${r} does not exist, run first \`${s.runner} @capgo/cli app add ${r}\` to create it`;throw i||g.error(c),new Error(c)}case"NO_ORG":{let c="Could not find organization, please contact support to resolve this!";throw i||g.error(c),new Error(c)}}let a=o.data;if(n>a){let c=`Insuficcent permissions for app ${r}. Current permission: ${hr[o.data]}, required for this action: ${hr[n]}.`;throw i||g.error(c),new Error(c)}return o.data}var Qr="assets/icon.png";var yfe=/^[a-z0-9]+(\.[\w-]+)+$/i;function Dfe(t,e,r){if(!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(t.includes("--"))throw r||g.error('The app id includes illegal symbols. You cannot use "--" in the app id'),new Error("App id includes illegal symbols");if(!yfe.test(t))throw r||(g.error(`Invalid app ID format: "${t}"`),g.info("App ID must be in reverse domain notation (e.g., com.example.app)"),g.info("Valid format: lowercase letters, numbers, dots, hyphens, and underscores"),g.info("Examples: com.mycompany.myapp, io.capgo.app, com.example.my-app")),new Error("Invalid app ID format")}async function wfe(t,e,r){if(await G8(t,e))throw e==="io.ionic.starter"?(r||g.error(`This appId ${e} cannot be used it's reserved, please change it in your capacitor config.`),new Error("Reserved appId, please change it in capacitor config")):(r||g.error(`App ${e} already exist`),new Error(`App ${e} already exists`))}async function W8(t,e,r,n=!1){n||ae("Adding"),await Je(),e.apikey=e.apikey||re();let i=await he(),s=Be(t,i?.config);Dfe(s,e,n);let o=await pe(e.apikey,e.supaHost,e.supaAnon),a=await De(o,e.apikey,["write","all"]);await wfe(o,s,n),r||(r=await tm(o,["admin","super_admin"]));let u=r.gid,{name:c,icon:l}=e;if(c=c||i.config?.appName||"Unknown",l=l||"resources/icon.png",!l||!c)throw n||g.error("Missing argument, you need to provide a appId and a name, or be in a capacitor project"),new Error("Missing app name or icon path");n||g.info(`Adding ${s} to Capgo`);let d=null,h=null;l&&(0,au.existsSync)(l)?(d=(0,au.readFileSync)(l),h=su(l)||"image/png",n||g.warn(`Found app icon ${l}`)):(0,au.existsSync)(Qr)?(d=(0,au.readFileSync)(Qr),h=su(Qr)||"image/png",n||g.warn(`Found app icon ${Qr}`)):n||g.warn(`Cannot find app icon in any of the following locations: ${l}, ${Qr}`);let f="icon",p="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(d&&h){let{error:v}=await o.storage.from(`images/org/${u}/${s}`).upload(f,d,{contentType:h});if(v)throw n||console.error(v),n||g.error(`Could not add app ${W(v)}`),new Error(`Could not add app ${W(v)}`);let{data:E}=await o.storage.from(`images/org/${u}/${s}`).getPublicUrl(f);p=E?.publicUrl||p}let{error:y}=await o.from("apps").insert({icon_url:p,owner_org:u,user_id:a,name:c,app_id:s});if(y)throw n||g.error(`Could not add app ${W(y)}`),new Error(`Could not add app ${W(y)}`);return n||(g.success(`App ${s} added to Capgo. You can upload a bundle now`),le("Done \u2705")),{appId:s,organizationUid:u,userId:a,name:c,signedURL:p}}async function X8(t,e,r=!1,n=!1){r||ae("Deleting"),e.apikey=e.apikey||re();let i=await he(),s=Be(t,i?.config);if(!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!s)throw r||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let o=await pe(e.apikey,e.supaHost,e.supaAnon),a=await De(o,e.apikey,["write","all"]);await Et(o,e.apikey,s,5,r);let{data:u,error:c}=await o.from("apps").select("owner_org ( created_by, id )").eq("app_id",s).single(),l=u;if(!n&&!c&&(l?.owner_org.created_by??"")!==a){if(r)throw new Error("Cannot delete app: you are not the organization owner");{g.warn("Deleting the app is not recommended for users that are not the organization owner"),g.warn("You are invited as a super_admin but your are not the owner"),g.warn("It's strongly recommended that you do not continue!");let y=await gn({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(Ke(y)||y==="no")throw g.error("Canceled deleting the app, exiting"),new Error("App deletion cancelled")}}else c&&!r&&g.warn(`Cannot get the app owner ${W(c)}`);let{error:d}=await o.storage.from("images").remove([`org/${l?.owner_org.id}/${s}/icon`]);d&&!r&&g.error("Could not delete app logo");let{error:h}=await o.storage.from(`apps/${s}/${a}`).remove(["versions"]);h&&!r&&g.error("Could not delete app version");let{error:f}=await o.from("apps").delete().eq("app_id",s);if(f)throw r||g.error("Could not delete app"),new Error(`Could not delete app: ${W(f)}`);let p=await Rr(o,s);return await _e(e.apikey,{channel:"app",event:"App Deleted",icon:"\u{1F5D1}\uFE0F",user_id:p,tags:{"app-id":s},notify:!1}).catch(()=>{}),r||(g.success("App deleted in Capgo"),le("Done \u2705")),!0}var sm=require("node:os"),J8=require("node:process");async function Y8(t){let e={},r=Object.keys(t);return(await Promise.all(r.map(i=>Xd(i)))).forEach((i,s)=>{i&&(e[r[s]]=i)}),e}async function vfe(){let t=await Jp(),e={"@capgo/cli":ni.version};for(let[r,n]of t)(r.startsWith("@capgo/")||r.startsWith("@capawesome/")||r.startsWith("capacitor"))&&(e[r]=n);return e}async function Z8(t,e=!1){e||g.warn(" \u{1F48A} Capgo Doctor \u{1F48A}");let r=await he(),n=as("",t.packageJson),i=r?.config?.plugins?.CapacitorUpdater?.version||n,s=r?.config?.appName||"",o=Be("",r?.config),a=r?.config?.webDir||"";e||(g.info(` App Name: ${s}`),g.info(` App ID: ${o}`),g.info(` App Version: ${i}`),g.info(` Web Dir: ${a}`),g.info(` OS: ${(0,sm.platform)()} ${(0,sm.version)()}`),g.info(` Node: ${J8.version}`),g.info(" Installed Dependencies:"));let u=await vfe();if(Object.keys(u).length===0)throw e||g.warning("\x1B[31m%s\x1B[0m \u{1F6A8} No dependencies found"),new Error("No dependencies found");if(!e)for(let l of Object.keys(u))g.info(` ${l}: ${u[l]}`);let c={};if(e)c=await Y8(u);else{let l=xt();l.start("Running: Loading latest dependencies"),c=await Y8(u),l.stop("Latest Dependencies:");for(let d of Object.keys(c))g.info(` ${d}: ${c[d]}`)}if(JSON.stringify(u)!==JSON.stringify(c))throw e||g.warn("\x1B[31m\u{1F6A8} Some dependencies are not up to date\x1B[0m"),new Error("Some dependencies are not up to date");return e||g.success("\x1B[32m\u2705 All dependencies are up to date\x1B[0m"),{appName:s,appId:o,appVersion:i,webDir:a,installedDependencies:u,latestDependencies:c}}function Efe(t){let e=new zt;e.headers=["Name","id","Created"],e.rows=[];for(let r of t.toReversed())e.rows.push([r.name??"",r.app_id,ou(r.created_at)]);g.success("Apps"),g.success(e.toString())}async function bfe(t,e){let{data:r,error:n}=await t.from("apps").select().order("created_at",{ascending:!1});if(n)throw e||g.error("Apps not found"),new Error("Apps not found");return r??[]}async function Q8(t,e=!1){e||ae("List apps in Capgo"),await Je(),t.apikey=t.apikey||re();let r=await pe(t.apikey,t.supaHost,t.supaAnon);await De(r,t.apikey,["write","all","read","upload"]),e||g.info("Getting active bundle in Capgo");let n=await bfe(r,e);if(!n.length)throw e||g.error("No apps found"),new Error("No apps found");return e||(g.info(`Active app in Capgo: ${n.length}`),Efe(n),le("Done \u2705")),n}var e6=require("node:crypto"),uu=require("node:fs");async function t6(t,e,r=!1){r||ae("Set app"),e.apikey=e.apikey||re();let n=await he();if(t=Be(t,n?.config),!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let i=await pe(e.apikey,e.supaHost,e.supaAnon),o=(await tm(i,["admin","super_admin"])).gid,a=await De(i,e.apikey,["write","all"]);await Et(i,e.apikey,t,4,r);let{name:u,icon:c,retention:l,exposeMetadata:d}=e;if(l&&Number.isNaN(Number(l)))throw r||g.error("retention value must be a number"),new Error("Retention value must be a number");if(l&&l<0)throw r||g.error("retention value cannot be less than 0"),new Error("Retention value cannot be less than 0");if(l&&l>=63113904)throw r||g.error("retention value cannot be greater than 63113904 seconds (2 years)"),new Error("Retention value cannot be greater than 63113904 seconds (2 years)");let h,f,p=`icon_${(0,e6.randomUUID)()}`,y="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(c&&(0,uu.existsSync)(c)?(h=(0,uu.readFileSync)(c),f=su(c)||"image/png",r||g.warn(`Found app icon ${c}`)):(0,uu.existsSync)(Qr)?(h=(0,uu.readFileSync)(Qr),f=su(Qr)||"image/png",r||g.warn(`Found app icon ${Qr}`)):r||g.warn(`Cannot find app icon in any of the following locations: ${c}, ${Qr}`),h&&f){let{error:E}=await i.storage.from(`images/org/${o}/${t}`).upload(p,h,{contentType:f});if(E)throw r||g.error(`Could not set app ${W(E)}`),new Error(`Could not set app: ${W(E)}`);let{data:A}=await i.storage.from(`images/org/${o}/${t}`).getPublicUrl(p);y=A?.publicUrl||y}let{error:v}=await i.from("apps").update({icon_url:y,name:u,retention:l?l*24*60*60:void 0,expose_metadata:d}).eq("app_id",t).eq("user_id",a);if(v)throw r||g.error(`Could not set app ${W(v)}`),new Error(`Could not set app: ${W(v)}`);return r||le("Done \u2705"),!0}async function r6(t,e,r=!1){if(r||ae("Set a specific setting in capacitor config"),e.bool&&e.string)throw r||g.error("Bool and string CANNOT be set at the same time"),new Error("Bool and string cannot both be provided");if(!e.bool&&!e.string)throw r||g.error("You MUST provide either bool or string as the value"),new Error("Either bool or string value is required");if(e.bool&&e.bool!=="true"&&e.bool!=="false")throw r||g.error("Invalid bool"),new Error("Invalid bool value; expected true or false");try{let n=await he(),i=n.config,s=t.split(".");if(s.length===0)throw r||g.error("Invalid path"),new Error("Invalid config path");for(let a of s.slice(0,-1))Object.prototype.hasOwnProperty.call(i,a)||(i[a]={}),i=i[a];let o=e.bool?e.bool==="true":e.string;i[s.at(-1)]=o,await Ya(n,!0),r||g.success(`Set "${t}" to "${o}"`)}catch(n){throw r||g.error(`Cannot set config in capacitor settings ${W(n)}`),new Error(`Cannot set capacitor config: ${W(n)}`)}r||le("Done \u2705")}var Hn=require("node:fs"),en=require("node:fs/promises"),o6=require("node:os"),tn=require("node:path"),Cb=require("node:process");var a6=Ee(fD()),um=Ee(Wd());var om=require("node:fs/promises"),n6=require("node:os"),am=require("node:path"),Ie=require("node:process"),_fe=(0,am.join)((0,n6.homedir)(),".capgo-credentials"),Cfe=(0,am.join)(_fe,"credentials.json"),Sfe=".capgo-credentials.json";function Afe(t){return t?(0,am.join)((0,Ie.cwd)(),Sfe):Cfe}async function _b(t){try{let e=Afe(t),r=await(0,om.readFile)(e,"utf-8");return JSON.parse(r)}catch{return{}}}async function Ofe(t,e){if(e!==void 0){let i=await _b(e);if(!t){let s=Object.keys(i);return s.length===0?null:i[s[0]]||null}return i[t]||null}let r=await _b(!0),n=await _b(!1);if(!t){let i=Object.keys(r);if(i.length>0)return r[i[0]]||null;let s=Object.keys(n);return s.length===0?null:n[s[0]]||null}return r[t]||n[t]||null}function xfe(){let t={};return Ie.env.BUILD_CERTIFICATE_BASE64&&(t.BUILD_CERTIFICATE_BASE64=Ie.env.BUILD_CERTIFICATE_BASE64),Ie.env.BUILD_PROVISION_PROFILE_BASE64&&(t.BUILD_PROVISION_PROFILE_BASE64=Ie.env.BUILD_PROVISION_PROFILE_BASE64),Ie.env.BUILD_PROVISION_PROFILE_BASE64_PROD&&(t.BUILD_PROVISION_PROFILE_BASE64_PROD=Ie.env.BUILD_PROVISION_PROFILE_BASE64_PROD),Ie.env.P12_PASSWORD&&(t.P12_PASSWORD=Ie.env.P12_PASSWORD),Ie.env.APPLE_KEY_ID&&(t.APPLE_KEY_ID=Ie.env.APPLE_KEY_ID),Ie.env.APPLE_ISSUER_ID&&(t.APPLE_ISSUER_ID=Ie.env.APPLE_ISSUER_ID),Ie.env.APPLE_KEY_CONTENT&&(t.APPLE_KEY_CONTENT=Ie.env.APPLE_KEY_CONTENT),Ie.env.APPLE_PROFILE_NAME&&(t.APPLE_PROFILE_NAME=Ie.env.APPLE_PROFILE_NAME),Ie.env.APP_STORE_CONNECT_TEAM_ID&&(t.APP_STORE_CONNECT_TEAM_ID=Ie.env.APP_STORE_CONNECT_TEAM_ID),Ie.env.ANDROID_KEYSTORE_FILE&&(t.ANDROID_KEYSTORE_FILE=Ie.env.ANDROID_KEYSTORE_FILE),Ie.env.KEYSTORE_KEY_ALIAS&&(t.KEYSTORE_KEY_ALIAS=Ie.env.KEYSTORE_KEY_ALIAS),Ie.env.KEYSTORE_KEY_PASSWORD&&(t.KEYSTORE_KEY_PASSWORD=Ie.env.KEYSTORE_KEY_PASSWORD),Ie.env.KEYSTORE_STORE_PASSWORD&&(t.KEYSTORE_STORE_PASSWORD=Ie.env.KEYSTORE_STORE_PASSWORD),Ie.env.PLAY_CONFIG_JSON&&(t.PLAY_CONFIG_JSON=Ie.env.PLAY_CONFIG_JSON),t}async function i6(t,e,r){let n=await Ofe(t),i=xfe(),s={...n?.[e]||{}};if(Object.assign(s,i),r&&Object.assign(s,r),e==="android"){let o=!!s.KEYSTORE_KEY_PASSWORD,a=!!s.KEYSTORE_STORE_PASSWORD;o&&!a?s.KEYSTORE_STORE_PASSWORD=s.KEYSTORE_KEY_PASSWORD:!o&&a&&(s.KEYSTORE_KEY_PASSWORD=s.KEYSTORE_STORE_PASSWORD)}return Object.keys(s).length>0?s:void 0}async function Tfe(t,e,r,n,i,s=!1){if(i)return null;let o=null,a=!1,u=`${t}/build/logs/${e}?app_id=${encodeURIComponent(r)}`;g.info(`Connecting to log stream: ${u}`);try{let c=await fetch(u,{headers:{authorization:n}});if(g.info(`Log stream response: ${c.status}`),!c.ok){let p=await c.text().catch(()=>"unknown error");return g.warn(`Could not stream logs (${c.status}): ${p}`),null}let l=c.body?.getReader();if(!l)return g.warn("No response body for log stream"),null;g.info("Reading log stream...");let d=new TextDecoder,h="",f=p=>{if(!p.trim())return;let y=p.match(/^(?:Build|Job already) (succeeded|failed|expired|released|cancelled)$/i);if(y){o=y[1].toLowerCase();return}o||(a||(a=!0,g.info("")),g.info(p))};for(;;){let{done:p,value:y}=await l.read();if(p)break;h+=d.decode(y,{stream:!0});let v=h.split(`
338
338
  `);h=v.pop()||"";for(let E of v)if(E.startsWith("data: ")){let A=E.slice(6);f(A)}}if(h.startsWith("data: ")){let p=h.slice(6);f(p)}return o}catch(c){return i||g.warn(`Log streaming interrupted${c instanceof Error?`: ${c.message}`:""}`),null}}async function Ife(t,e,r,n,i,s){let a=0;for(;a<120;)try{let u=await fetch(`${t}/build/status?job_id=${encodeURIComponent(e)}&app_id=${encodeURIComponent(r)}&platform=${n}`,{headers:{authorization:i}});if(!u.ok){s||g.warn(`Status check failed: ${u.status}`),await new Promise(l=>setTimeout(l,5e3)),a++;continue}let c=await u.json();if(c.status==="succeeded"||c.status==="failed")return c.status;await new Promise(l=>setTimeout(l,5e3)),a++}catch(u){s||g.warn(`Status check error: ${u}`),await new Promise(c=>setTimeout(c,5e3)),a++}return s||g.warn("Build status polling timed out"),"timeout"}async function Pfe(t,e){let r=new Set,n=!1;if(e==="ios"){let i=(0,tn.join)(t,"ios/App/CapApp-SPM/Package.swift");if((0,Hn.existsSync)(i)){n=!0;let o=(await(0,en.readFile)(i,"utf-8")).matchAll(/\.package\s*\([^)]*path:\s*["'](?:\.\.\/)*node_modules\/([^"']+)["']\s*\)/g);for(let a of o)r.add(a[1])}else{let s=(0,tn.join)(t,"ios/App/Podfile");if((0,Hn.existsSync)(s)){let a=(await(0,en.readFile)(s,"utf-8")).matchAll(/pod\s+['"][^'"]+['"],\s*:path\s*=>\s*['"]\.\.\/\.\.\/node_modules\/([^'"]+)['"]/g);for(let u of a)r.add(u[1])}}}else if(e==="android"){let i=(0,tn.join)(t,"android/capacitor.settings.gradle");if((0,Hn.existsSync)(i)){let o=(await(0,en.readFile)(i,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let a of o){let c=a[1].replace(/\/android$/,"");r.add(c)}}}return{packages:r,usesSPM:n}}function s6(t,e,r){let n=t.replace(/\\/g,"/");if(n.startsWith(`${e}/`)||n==="package.json"||n==="package-lock.json"||n.startsWith("capacitor.config.")||n.startsWith("resources/")||e==="ios"&&n.startsWith("node_modules/@capacitor/ios/")||e==="android"&&n.startsWith("node_modules/@capacitor/android/"))return!0;for(let i of r.packages){let s=`node_modules/${i}/`;if(e==="android"){if(n.startsWith(`${s}android/`))return!0}else if(e==="ios"){if(n.startsWith(`${s}ios/`))return!0;if(r.usesSPM){if(n===`${s}Package.swift`)return!0}else if(n.startsWith(s)&&n.endsWith(".podspec"))return!0}}return!1}function dl(t,e,r,n,i){let s=(0,Hn.readdirSync)(e);for(let o of s){let a=(0,tn.join)(e,o),u=r?`${r}/${o}`:o,c=(0,Hn.statSync)(a);if(c.isDirectory()){if(o===".git"||o==="dist"||o==="build"||o===".angular"||o===".vite"||o===".gradle"||o===".idea"||o===".swiftpm")continue;if(o===n){dl(t,a,u,n,i);continue}if(o==="node_modules"){dl(t,a,u,n,i);continue}if(o==="resources"){dl(t,a,u,n,i);continue}let l=u.replace(/\\/g,"/");(s6(u,n,i)||Array.from(i.packages).some(h=>`node_modules/${h}/`.startsWith(`${l}/`)||l.startsWith(`node_modules/${h}`)))&&dl(t,a,u,n,i)}else if(c.isFile()){if(o===".DS_Store"||o.endsWith(".log"))continue;s6(u,n,i)&&t.addLocalFile(a,r||void 0)}}}async function Ffe(t,e,r){let n=await Pfe(t,r),i=new a6.default;dl(i,t,"",r,n),await(0,en.writeFile)(e,i.toBuffer())}async function u6(t,e,r=!1){let n=Date.now(),i=e.verbose??!1;try{e.apikey=e.apikey||re(r);let s=await he();if(t=t||s?.config.appId,!t)throw new Error("Missing argument, you need to provide a appId, or be in a capacitor project");if(!e.platform)throw new Error("Missing required argument: --platform <ios|android>");if(e.platform!=="ios"&&e.platform!=="android")throw new Error(`Invalid platform "${e.platform}". Must be "ios" or "android"`);let o=(0,tn.resolve)(e.path||(0,Cb.cwd)()),a=e.supaHost||"https://api.capgo.app",u=await pe(e.apikey,e.supaHost,e.supaAnon);await De(u,e.apikey,["write","all"]);let c=await Rr(u,t);r||(g.info(`Requesting native build for ${t}`),g.info(`Platform: ${e.platform}`),g.info(`Project: ${o}`),g.info(`
339
339
  \u{1F512} Security: Credentials are never stored on Capgo servers`),g.info(" They are used only during build and deleted after"),g.info(` Builds sent directly to app stores - Capgo keeps nothing
340
- `)),i&&g.info(`API host: ${a}`);let l={};e.buildCertificateBase64&&(l.BUILD_CERTIFICATE_BASE64=e.buildCertificateBase64),e.buildProvisionProfileBase64&&(l.BUILD_PROVISION_PROFILE_BASE64=e.buildProvisionProfileBase64),e.buildProvisionProfileBase64Prod&&(l.BUILD_PROVISION_PROFILE_BASE64_PROD=e.buildProvisionProfileBase64Prod),e.p12Password&&(l.P12_PASSWORD=e.p12Password),e.appleKeyId&&(l.APPLE_KEY_ID=e.appleKeyId),e.appleIssuerId&&(l.APPLE_ISSUER_ID=e.appleIssuerId),e.appleKeyContent&&(l.APPLE_KEY_CONTENT=e.appleKeyContent),e.appleProfileName&&(l.APPLE_PROFILE_NAME=e.appleProfileName),e.appStoreConnectTeamId&&(l.APP_STORE_CONNECT_TEAM_ID=e.appStoreConnectTeamId),e.androidKeystoreFile&&(l.ANDROID_KEYSTORE_FILE=e.androidKeystoreFile),e.keystoreKeyAlias&&(l.KEYSTORE_KEY_ALIAS=e.keystoreKeyAlias);let d=!!e.keystoreKeyPassword,h=!!e.keystoreStorePassword;d&&!h?(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreKeyPassword):!d&&h?(l.KEYSTORE_KEY_PASSWORD=e.keystoreStorePassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword):d&&h&&(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword),e.playConfigJson&&(l.PLAY_CONFIG_JSON=e.playConfigJson);let f=await i6(t,e.platform,Object.keys(l).length>0?l:void 0),p={app_id:t,platform:e.platform};if(!f)throw r||(g.error("\u274C No credentials found for this app and platform"),g.error(""),g.error("You must provide credentials via:"),g.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),g.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),g.error(" 3. Saved credentials file:"),g.error(` npx @capgo/cli build credentials save --appId ${t} --platform ${e.platform}`),g.error(""),g.error("Documentation:"),g.error(" https://capgo.app/docs/cli/cloud-build/credentials/")),new Error("No credentials found. Please provide credentials before building.");let y=[];if(e.platform==="ios"?(f.BUILD_CERTIFICATE_BASE64||y.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)"),!f.P12_PASSWORD&&!r&&(g.warn("\u26A0\uFE0F P12_PASSWORD not provided - assuming certificate has no password"),g.warn(" If your certificate requires a password, provide it with --p12-password")),f.BUILD_PROVISION_PROFILE_BASE64||y.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)"),f.APPLE_KEY_ID||y.push("APPLE_KEY_ID (or --apple-key-id)"),f.APPLE_ISSUER_ID||y.push("APPLE_ISSUER_ID (or --apple-issuer-id)"),f.APPLE_KEY_CONTENT||y.push("APPLE_KEY_CONTENT (or --apple-key-content)"),f.APP_STORE_CONNECT_TEAM_ID||y.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")):e.platform==="android"&&(f.ANDROID_KEYSTORE_FILE||y.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)"),f.KEYSTORE_KEY_ALIAS||y.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)"),!f.KEYSTORE_KEY_PASSWORD&&!f.KEYSTORE_STORE_PASSWORD&&y.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)"),!f.PLAY_CONFIG_JSON&&!r&&g.warn("\u26A0\uFE0F PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")),y.length>0){if(!r){g.error(`\u274C Missing required credentials for ${e.platform}:`),g.error("");for(let D of y)g.error(` \u2022 ${D}`);g.error(""),g.error("Provide credentials via:"),g.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),g.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),g.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),g.error(""),g.error("Documentation:"),g.error(` https://capgo.app/docs/cli/cloud-build/${e.platform}/`)}throw new Error(`Missing required credentials for ${e.platform}: ${y.join(", ")}`)}if(p.credentials=f,r||g.info("\u2713 Using credentials (merged from CLI args, env vars, and saved file)"),i){let D=Object.keys(f).filter(w=>f[w]);g.info(`Credentials provided: ${D.join(", ")}`)}r||g.info("Requesting build from Capgo...");let v=await fetch(`${a}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify(p)});if(!v.ok){let D=await v.text();throw new Error(`Failed to request build: ${v.status} - ${D}`)}let E=await v.json();r||(g.success(`Build job created: ${E.job_id}`),g.info(`Status: ${E.status}`)),i&&(g.info(`Upload URL: ${E.upload_url}`),g.info(`Upload expires: ${E.upload_expires_at}`)),await _e(e.apikey,{channel:"native-builder",event:"Build requested",icon:"\u{1F3D7}\uFE0F",user_id:c,tags:{"app-id":t,platform:e.platform},notify:!1}).catch();let A=(0,tn.join)((0,o6.tmpdir)(),`capgo-build-${Date.now()}`);await(0,en.mkdir)(A,{recursive:!0});let m=(0,tn.join)(A,`${(0,tn.basename)(o)}.zip`);try{r||g.info(`Zipping ${e.platform} project from ${o}...`),await Ffe(o,m,e.platform);let w=((await(0,en.stat)(m)).size/1024/1024).toFixed(2);r||g.success(`Created zip: ${m} (${w} MB)`),r||g.info("Uploading to builder..."),i&&(g.info(`Upload endpoint: ${E.upload_url}`),g.info(`File size: ${w} MB`),g.info(`Job ID: ${E.job_id}`));let S=(0,Hn.readFileSync)(m),R=xt();r||R.start("Uploading bundle"),await new Promise((j,z)=>{let L=new um.Upload(S,{endpoint:E.upload_url,chunkSize:5242880,metadata:{filename:(0,tn.basename)(m),filetype:"application/zip"},headers:{authorization:e.apikey},onBeforeRequest(b){if(i){g.info(`[TUS] ${b.getMethod()} ${b.getURL()}`);let T=b.getHeader("authorization");g.info(`[TUS] Authorization header present: ${!!T}`)}},onAfterResponse(b,T){if(i){g.info(`[TUS] Response status: ${T.getStatus()}`);let P=T.getHeader("upload-offset"),$=T.getHeader("tus-resumable");g.info(`[TUS] Upload-Offset: ${P}, Tus-Resumable: ${$}`)}},onError(b){if(r||(R.stop("Upload failed"),g.error(`Upload error: ${b.message}`)),b instanceof um.DetailedError){let T=b.originalResponse?.getBody(),P=b.originalResponse?.getStatus(),$=b.originalRequest?.getURL();i&&(g.error(`[TUS] Request URL: ${$}`),g.error(`[TUS] Response status: ${P}`),g.error(`[TUS] Response body: ${T}`));let q="Unknown error";try{let M=JSON.parse(T||'{"error": "unknown error"}');q=M.status||M.error||M.message||"unknown error"}catch{q=T||b.message}z(new Error(`TUS upload failed: ${q}`))}else z(new Error(`TUS upload failed: ${b.message||b.toString()}`))},onProgress(b,T){let P=(b/T*100).toFixed(2);r||R.message(`Uploading ${P}%`)},onSuccess(){r||R.stop("Upload complete!"),i&&g.success("TUS upload completed successfully"),j()}});i&&g.info("[TUS] Starting upload..."),L.start()}),r||g.info("Starting build job...");let _=await fetch(`${a}/build/start/${E.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify({app_id:t})});if(!_.ok){let j=await _.text();throw new Error(`Failed to start build: ${_.status} - ${j}`)}let k=await _.json();r||(g.success("Build started!"),g.info("Streaming build logs..."));let F,I=await Tfe(a,E.job_id,t,e.apikey,r,i);I?F=I:F=await Ife(a,E.job_id,t,e.platform,e.apikey,r),r||(F==="succeeded"?g.success("Build completed successfully!"):F==="failed"?g.error("Build failed"):g.warn(`Build finished with status: ${F}`));let B=((Date.now()-n)/1e3).toFixed(2);return await _e(e.apikey,{channel:"native-builder",event:F==="succeeded"?"Build succeeded":"Build failed",icon:F==="succeeded"?"\u2705":"\u274C",user_id:c,tags:{"app-id":t,platform:e.platform,status:F||"unknown",time:B},notify:!1}).catch(),{success:F==="succeeded",jobId:E.job_id,uploadUrl:E.upload_url,status:F||k.status||E.status}}finally{await(0,en.rm)(A,{recursive:!0,force:!0})}}catch(s){let o=s instanceof Error?s.message:String(s);return r||g.error(o),{success:!1,error:o}}}async function Rfe(t,e,r,n){for await(let i of t)n||g.warn(`Removing ${i.name} created on ${ou(i.created_at)}`),await nm(e,r,i.name)}function kfe(t,e,r){let n=[];for(let i of t??[]){let s=lt(i.name);Ym(s,e)&&ps(s,r)&&n.push(i)}return n}async function c6(t,e,r=!1){r||ae("Cleanup versions in Capgo"),await Je(),e.apikey=e.apikey||re();let{bundle:n,keep:i=4}=e,s=e.force||!1,o=e.ignoreChannel||!1,a=await he();if(t=Be(t,a?.config),!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to delete your app"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let u=await pe(e.apikey,e.supaHost,e.supaAnon);await De(u,e.apikey,["write","all"]),await Et(u,e.apikey,t,3,r),r||g.info("Querying all available versions in Capgo");let c=await im(u,t),l=await K8(u,t);if(r||g.info(`Total active versions in Capgo: ${c?.length??0}`),!c?.length)throw r||g.error("No versions found, aborting cleanup"),new Error("No versions found");if(n){let f=lt(n),p=Eu(f,"major");r||g.info(`Querying available versions in Capgo between ${sn(f)} and ${sn(p)}`),c=kfe(c,f,p),r||g.info(`Active versions in Capgo between ${sn(f)} and ${sn(p)}: ${c?.length??0}`)}let d=[],h=0;for(let f of c){let p=l.find(y=>y===f.id);h<i||p&&!o?(f.keep=p?"\u2705 (Linked to channel)":"\u2705",h+=1):(f.keep="\u274C",d.push(f))}if(!d.length)return r||g.warn("Nothing to be removed, aborting removal..."),{removed:0,kept:h};if(r||z8(c),!s){if(r)throw new Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");{let f=await Pr({message:"Do you want to continue removing the versions specified?"});if(Ke(f)||!f)throw g.warn("Not confirmed, aborting removal..."),new Error("Cleanup cancelled by user")}}return r||g.success("You have confirmed removal, removing versions now"),await Rfe(d,u,t,r),r||le("Done \u2705"),{removed:d.length,kept:h}}async function l6(t,e,r=!1){r||ae("Check compatibility");let n={...e,apikey:e.apikey||re()},i=await he(),s=Be(t,i?.config),o=n.channel;if(!o)throw r||g.error("Missing argument, you need to provide a channel"),new Error("Missing channel");if(!n.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!s)throw r||g.error("Missing argument, you need to provide an appId, or be in a capacitor project"),new Error("Missing appId");let a=await pe(n.apikey,n.supaHost,n.supaAnon);await De(a,n.apikey,["write","all","read","upload"]),await Et(a,n.apikey,s,1,r);let u=await rm(a,s,o,n.packageJson,n.nodeModules);if(!r){let c=new zt;c.headers=["Package","Local version","Remote version","Compatible"],c.theme=zt.roundTheme,c.rows=[];let l=n.text?"Yes":"\u2705",d=n.text?"No":"\u274C";for(let h of u.finalCompatibility){let{name:f,localVersion:p,remoteVersion:y}=h,v=po(h)?l:d;c.rows.push([f,p,y,v])}g.success("Compatibility"),g.success(c.toString())}return{finalCompatibility:u.finalCompatibility}}var Ci=require("node:fs");var bi=require("node:buffer"),Ut=require("node:crypto"),d6="aes-128-cbc",_i="base64",f6="hex",hl=Ut.constants.RSA_PKCS1_PADDING;function cm(t){let e=(0,Ut.randomBytes)(16),r=(0,Ut.randomBytes)(16),n=e.toString(_i),i=(0,Ut.privateEncrypt)({key:t,padding:hl},r).toString(_i);return{sessionKey:r,ivSessionKey:`${n}:${i}`}}function cu(t,e,r){let[n]=r.split(":"),i=bi.Buffer.from(n,_i),s=(0,Ut.createCipheriv)(d6,e,i);return s.setAutoPadding(!0),bi.Buffer.concat([s.update(t),s.final()])}function h6(t,e,r){let[n,i]=e.split(":"),s=(0,Ut.publicDecrypt)({key:r,padding:hl},bi.Buffer.from(i,_i)),o=bi.Buffer.from(n,_i),a=(0,Ut.createDecipheriv)(d6,s,o);return a.setAutoPadding(!0),bi.Buffer.concat([a.update(t),a.final()])}function lu(t,e){return(0,Ut.privateEncrypt)({key:e,padding:hl},bi.Buffer.from(t,_i)).toString(_i)}function lm(t,e){return(0,Ut.privateEncrypt)({key:e,padding:hl},bi.Buffer.from(t,f6)).toString(f6)}function p6(t="pem",e=2048){let{publicKey:r,privateKey:n}=(0,Ut.generateKeyPairSync)("rsa",{modulusLength:e});return t==="pem"?{publicKey:r.export({type:"pkcs1",format:"pem"}),privateKey:n.export({type:"pkcs1",format:"pem"})}:{publicKey:r.export({type:"spki",format:"der"}).toString("base64"),privateKey:n.export({type:"pkcs1",format:"pem"}).toString("base64")}}function m6(t,e){return(0,Ut.publicDecrypt)({key:e,padding:hl},bi.Buffer.from(t,_i)).toString(_i)}function g6(t){return t?t.replace(/-----BEGIN RSA PUBLIC KEY-----/g,"").replace(/-----END RSA PUBLIC KEY-----/g,"").replace(/\n/g,"").replace(/\r/g,"").replace(/ /g,"").substring(0,4):""}function Nfe(t,e){let r=t.key||Ei,n=e.config.plugins?.CapacitorUpdater?.publicKey;return(0,Ci.existsSync)(r)?n=(0,Ci.readFileSync)(r,"utf8"):!n&&t.keyData&&(n=t.keyData),{publicKey:n,fallbackKeyPath:r}}async function y6(t,e,r,n=!1){n||ae("Decrypt zip file");try{if(await Je(),!(0,Ci.existsSync)(t)){let d=`Zip not found at the path ${t}`;throw n||g.error(d),new Error(d)}let i=await he();if(!r.key&&!(0,Ci.existsSync)(Ei)&&!i.config.plugins?.CapacitorUpdater?.publicKey){let d=`Public Key not found at the path ${Ei} or in ${i.path}`;throw n||g.error(d),new Error(d)}let{publicKey:s,fallbackKeyPath:o}=Nfe(r,i);if(!s){let d=`Cannot find public key ${o} or as keyData option or in ${i.path}`;throw n||g.error(d),new Error(d)}let a=(0,Ci.readFileSync)(t),u=h6(a,e,r.keyData??s),c=`${t}_decrypted.zip`;(0,Ci.writeFileSync)(c,u),n||g.info(`Decrypted zip file at ${c}`);let l;if(r.checksum){let d=await ii(u,"sha256"),h=m6(r.checksum,r.keyData??s);if(l=d===h,!l){let f=`Checksum does not match ${d} !== ${h}`;throw n||g.error(f),new Error(f)}n||g.info("Checksum matches")}return n||le("\u2705 done"),{outputPath:c,checksumMatches:l}}catch(i){throw n||g.error(`Error decrypting zip file ${W(i)}`),i instanceof Error?i:new Error(String(i))}}async function D6(t,e,r,n=!1){n||ae("Delete bundle"),r.apikey=r.apikey||re();let i=await he();if(e=Be(e,i?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!t)throw n||g.error("Missing argument, you need to provide a bundleId, or be in a capacitor project"),new Error("Missing bundleId");let s=await pe(r.apikey,r.supaHost,r.supaAnon);return await De(s,r.apikey,["write","all"]),await Et(s,r.apikey,e,3,n),n||(g.info(`Deleting bundle ${e}@${t} from Capgo`),g.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever")),await nm(s,e,t),n||(g.success(`Bundle ${e}@${t} deleted in Capgo`),le("Done")),!0}var Si=require("node:fs");function pl(t){console.error(W(t))}async function w6(t,e,r,n=!1){let{json:i}=r,s=!i&&!n;s&&(ae("Encryption"),await Je());try{let o=await he(),a=!!o.config.plugins?.CapacitorUpdater?.privateKey,u=!!o.config.plugins?.CapacitorUpdater?.publicKey;if(a&&s&&g.warning("There is still a privateKey in the config"),!(0,Si.existsSync)(t)){let E=`Zip not found at the path ${t}`;throw n||(i?pl({error:"zip_not_found"}):g.error(`Error: ${E}`)),new Error(E)}if(!u)throw n||(i?pl({error:"missing_public_key"}):g.warning("Warning: Missing Public Key in config")),new Error("Missing public key in config");let c=r.key||$r,l=r.keyData||"";if(!(0,Si.existsSync)(c)&&!l)throw n||(i?pl({error:"missing_key"}):(g.warning(`Cannot find a private key at ${c} or as a keyData option`),g.error("Error: Missing key"))),new Error("Missing private key");if((0,Si.existsSync)(c)&&(l=(0,Si.readFileSync)(c,"utf8")),l&&!l.startsWith("-----BEGIN RSA PRIVATE KEY-----"))throw n||(i?pl({error:"invalid_private_key"}):g.error("The private key provided is not a valid RSA Private key")),new Error("Invalid private key format");let d=(0,Si.readFileSync)(t),{sessionKey:h,ivSessionKey:f}=cm(l),p=cu(d,h,f),y=lu(e,l),v=`${t}_encrypted.zip`;return(0,Si.writeFileSync)(v,p),n||(i?console.log(JSON.stringify({checksum:y,filename:v,ivSessionKey:f},null,2)):(g.success(`Encoded Checksum: ${y}`),g.success(`ivSessionKey: ${f}`),g.success(`Encrypted zip saved at ${v}`),le("Done \u2705"))),{checksum:y,filename:v,ivSessionKey:f}}catch(o){throw n||(r.json?pl(o):g.error(`Error encrypting zip file ${W(o)}`)),o instanceof Error?o:new Error(String(o))}}var XU=require("node:crypto"),_o=require("node:fs"),Sm=require("node:process");var fm=class extends TransformStream{outChunkSize;constructor(e){let r=new Uint8Array(e),n=0;super({transform(i,s){let o=0;for(;o<i.length;){let a=e-n,u=Math.min(a,i.length-o);r.set(i.subarray(o,o+u),n),o+=u,n+=u,n===e&&(s.enqueue(r),r=new Uint8Array(e),n=0)}},flush(i){n>0&&i.enqueue(r.subarray(0,n))}}),this.outChunkSize=e}};function ls(t){return t=t.trim(),t=t.replace(/<!--[\s\S]*?-->/g,""),e();function e(){return{declaration:r(),root:n()}}function r(){if(!u(/^<\?xml\s*/))return;let h={attributes:{}};for(;!(c()||l("?>"));){let f=s();if(!f)return h;h.attributes[f.name]=f.value}return u(/\?>\s*/),h}function n(){let d=u(/^<([\w-:.]+)\s*/);if(!d)return;let h={name:d[1],attributes:{},children:[]};for(;!(c()||l(">")||l("?>")||l("/>"));){let p=s();if(!p)return h;h.attributes[p.name]=p.value}if(u(/^\s*\/>\s*/))return h;u(/\??>\s*/),h.content=i();let f;for(;f=n();)h.children.push(f);return u(/^<\/[\w-:.]+>\s*/),h}function i(){let d=u(/^([^<]*)/);return d?a(d[1]):""}function s(){let d=u(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(d)return{name:d[1],value:a(o(d[2]))}}function o(d){return d.replace(/^['"]|['"]$/g,"")}function a(d){return d.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}function u(d){let h=t.match(d);if(h)return t=t.slice(h[0].length),h}function c(){return t.length===0}function l(d){return t.startsWith(d)}}var Vn=class extends Error{};var Jt=class extends Vn{},ml=class extends Vn{},dm=class extends Vn{bucketName;constructor(e){super(`Invalid bucket name: ${e}`),this.bucketName=e}},zn=class extends Vn{objectName;constructor(e){super(`Invalid object name: ${e}`),this.objectName=e}},fs=class extends Vn{constructor(){super("accessKey is required")}},fu=class extends Vn{constructor(){super("secretKey is required")}},gl=class extends Vn{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}},Ai=class extends Vn{statusCode;code;key;bucketName;resource;region;constructor(e,r,n,i={}){super(n),this.statusCode=e,this.code=r,this.key=i.key,this.bucketName=i.bucketName,this.resource=i.resource,this.region=i.region}};async function v6(t){try{let r=ls(await t.text()).root;if(r?.name!=="Error")throw new Error("Invalid root, expected <Error>");let n=r.children.find(c=>c.name==="Code")?.content??"UnknownErrorCode",i=r.children.find(c=>c.name==="Message")?.content??"The error message could not be determined.",s=r.children.find(c=>c.name==="Key")?.content,o=r.children.find(c=>c.name==="BucketName")?.content,a=r.children.find(c=>c.name==="Resource")?.content,u=r.children.find(c=>c.name==="Region")?.content;return new Ai(t.status,n,i,{key:s,bucketName:o,resource:a,region:u})}catch{return new Ai(t.status,"UnrecognizedError",`Error: Unexpected response code ${t.status} ${t.statusText}. Unable to parse response as XML.`)}}function E6(t){return typeof t!="number"||isNaN(t)?!1:t>=1&&t<=65535}function b6(t){return typeof t!="string"||t.length<3||t.length>63||t.includes("..")||t.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)?!1:!!t.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/)}function ds(t){return!(!$fe(t)||t.length===0)}function $fe(t){return!(typeof t!="string"||t.length>1024)}function yl(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function mo(t=""){let e={'"':"","&quot;":"","&#34;":"","&QUOT;":"","&#x00022":""};return t.replace(/^("|&quot;|&#34;)|("|&quot;|&#34;)$/g,r=>e[r])}function Ab(t){return t.get("x-amz-version-id")??null}function go(t){let e=t.toISOString();return e.slice(0,4)+e.slice(5,7)+e.slice(8,13)+e.slice(14,16)+e.slice(17,19)+"Z"}function Ob(t){return go(t).slice(0,8)}function xb(t,e){return`${Ob(e)}/${t}/s3/aws4_request`}async function hm(t){return t instanceof Uint8Array||(t=new TextEncoder().encode(t)),yl(new Uint8Array(await crypto.subtle.digest("SHA-256",t)))}var Lfe=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"],pm=class extends WritableStream{getResult;constructor({client:e,bucketName:r,objectName:n,partSize:i,metadata:s}){let o,a=1,u,c=[],l,d=[];super({start(){},async write(h,f){let y=a++;try{if(y==1&&h.length<i){let A=await e.makeRequest({method:"PUT",headers:new Headers({...s,"Content-Length":String(h.length)}),bucketName:r,objectName:n,payload:h});o={etag:mo(A.headers.get("etag")??void 0),versionId:Ab(A.headers)};return}y===1&&(u=(await Bfe({client:e,bucketName:r,objectName:n,metadata:s})).uploadId);let v={"Content-Length":String(h.length)};for(let A of Lfe){let m=s[A];m&&(v[A]=m)}let E=e.makeRequest({method:"PUT",query:{partNumber:y.toString(),uploadId:u},headers:new Headers(v),bucketName:r,objectName:n,payload:h}).then(A=>{let m=A.headers.get("etag")??"";return m&&(m=m.replace(/^"/,"").replace(/"$/,"")),c.push({part:y,etag:m}),A});d.push(E.catch(A=>{l||(l=A)}))}catch(v){throw v}},async close(){if(!o)if(u){if(await Promise.all(d),l)throw l;c.sort((h,f)=>h.part>f.part?1:-1),o=await jfe({client:e,bucketName:r,objectName:n,uploadId:u,etags:c})}else throw new Error("Stream was closed without uploading any data.")}}),this.getResult=()=>{if(o===void 0)throw new Error("Result is not ready. await the stream first.");return o}}};async function Bfe(t){let e="POST",r=new Headers(t.metadata),s=await(await t.client.makeRequest({method:e,bucketName:t.bucketName,objectName:t.objectName,query:"uploads",headers:r,returnBody:!0})).text(),o=ls(s).root;if(!o||o.name!=="InitiateMultipartUploadResult")throw new Error(`Unexpected response: ${s}`);let a=o.children.find(u=>u.name==="UploadId")?.content;if(!a)throw new Error(`Unable to get UploadId from response: ${s}`);return{uploadId:a}}async function jfe({client:t,bucketName:e,objectName:r,uploadId:n,etags:i}){let s=`
340
+ `)),i&&g.info(`API host: ${a}`);let l={};e.buildCertificateBase64&&(l.BUILD_CERTIFICATE_BASE64=e.buildCertificateBase64),e.buildProvisionProfileBase64&&(l.BUILD_PROVISION_PROFILE_BASE64=e.buildProvisionProfileBase64),e.buildProvisionProfileBase64Prod&&(l.BUILD_PROVISION_PROFILE_BASE64_PROD=e.buildProvisionProfileBase64Prod),e.p12Password&&(l.P12_PASSWORD=e.p12Password),e.appleKeyId&&(l.APPLE_KEY_ID=e.appleKeyId),e.appleIssuerId&&(l.APPLE_ISSUER_ID=e.appleIssuerId),e.appleKeyContent&&(l.APPLE_KEY_CONTENT=e.appleKeyContent),e.appleProfileName&&(l.APPLE_PROFILE_NAME=e.appleProfileName),e.appStoreConnectTeamId&&(l.APP_STORE_CONNECT_TEAM_ID=e.appStoreConnectTeamId),e.androidKeystoreFile&&(l.ANDROID_KEYSTORE_FILE=e.androidKeystoreFile),e.keystoreKeyAlias&&(l.KEYSTORE_KEY_ALIAS=e.keystoreKeyAlias);let d=!!e.keystoreKeyPassword,h=!!e.keystoreStorePassword;d&&!h?(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreKeyPassword):!d&&h?(l.KEYSTORE_KEY_PASSWORD=e.keystoreStorePassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword):d&&h&&(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword),e.playConfigJson&&(l.PLAY_CONFIG_JSON=e.playConfigJson);let f=await i6(t,e.platform,Object.keys(l).length>0?l:void 0),p={app_id:t,platform:e.platform};if(!f)throw r||(g.error("\u274C No credentials found for this app and platform"),g.error(""),g.error("You must provide credentials via:"),g.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),g.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),g.error(" 3. Saved credentials file:"),g.error(` npx @capgo/cli build credentials save --appId ${t} --platform ${e.platform}`),g.error(""),g.error("Documentation:"),g.error(" https://capgo.app/docs/cli/cloud-build/credentials/")),new Error("No credentials found. Please provide credentials before building.");let y=[];if(e.platform==="ios"?(f.BUILD_CERTIFICATE_BASE64||y.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)"),!f.P12_PASSWORD&&!r&&(g.warn("\u26A0\uFE0F P12_PASSWORD not provided - assuming certificate has no password"),g.warn(" If your certificate requires a password, provide it with --p12-password")),f.BUILD_PROVISION_PROFILE_BASE64||y.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)"),f.APPLE_KEY_ID||y.push("APPLE_KEY_ID (or --apple-key-id)"),f.APPLE_ISSUER_ID||y.push("APPLE_ISSUER_ID (or --apple-issuer-id)"),f.APPLE_KEY_CONTENT||y.push("APPLE_KEY_CONTENT (or --apple-key-content)"),f.APP_STORE_CONNECT_TEAM_ID||y.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")):e.platform==="android"&&(f.ANDROID_KEYSTORE_FILE||y.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)"),f.KEYSTORE_KEY_ALIAS||y.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)"),!f.KEYSTORE_KEY_PASSWORD&&!f.KEYSTORE_STORE_PASSWORD&&y.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)"),!f.PLAY_CONFIG_JSON&&!r&&g.warn("\u26A0\uFE0F PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")),y.length>0){if(!r){g.error(`\u274C Missing required credentials for ${e.platform}:`),g.error("");for(let D of y)g.error(` \u2022 ${D}`);g.error(""),g.error("Provide credentials via:"),g.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),g.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),g.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),g.error(""),g.error("Documentation:"),g.error(` https://capgo.app/docs/cli/cloud-build/${e.platform}/`)}throw new Error(`Missing required credentials for ${e.platform}: ${y.join(", ")}`)}if(p.credentials=f,r||g.info("\u2713 Using credentials (merged from CLI args, env vars, and saved file)"),i){let D=Object.keys(f).filter(w=>f[w]);g.info(`Credentials provided: ${D.join(", ")}`)}r||g.info("Requesting build from Capgo...");let v=await fetch(`${a}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify(p)});if(!v.ok){let D=await v.text();throw new Error(`Failed to request build: ${v.status} - ${D}`)}let E=await v.json();r||(g.success(`Build job created: ${E.job_id}`),g.info(`Status: ${E.status}`)),i&&(g.info(`Upload URL: ${E.upload_url}`),g.info(`Upload expires: ${E.upload_expires_at}`)),await _e(e.apikey,{channel:"native-builder",event:"Build requested",icon:"\u{1F3D7}\uFE0F",user_id:c,tags:{"app-id":t,platform:e.platform},notify:!1}).catch();let A=(0,tn.join)((0,o6.tmpdir)(),`capgo-build-${Date.now()}`);await(0,en.mkdir)(A,{recursive:!0});let m=(0,tn.join)(A,`${(0,tn.basename)(o)}.zip`);try{r||g.info(`Zipping ${e.platform} project from ${o}...`),await Ffe(o,m,e.platform);let w=((await(0,en.stat)(m)).size/1024/1024).toFixed(2);r||g.success(`Created zip: ${m} (${w} MB)`),r||g.info("Uploading to builder..."),i&&(g.info(`Upload endpoint: ${E.upload_url}`),g.info(`File size: ${w} MB`),g.info(`Job ID: ${E.job_id}`));let S=(0,Hn.readFileSync)(m),R=xt();r||R.start("Uploading bundle"),await new Promise((j,z)=>{let L=new um.Upload(S,{endpoint:E.upload_url,chunkSize:5242880,metadata:{filename:(0,tn.basename)(m),filetype:"application/zip"},headers:{authorization:e.apikey},onBeforeRequest(b){if(i){g.info(`[TUS] ${b.getMethod()} ${b.getURL()}`);let T=b.getHeader("authorization");g.info(`[TUS] Authorization header present: ${!!T}`)}},onAfterResponse(b,T){if(i){g.info(`[TUS] Response status: ${T.getStatus()}`);let P=T.getHeader("upload-offset"),$=T.getHeader("tus-resumable");g.info(`[TUS] Upload-Offset: ${P}, Tus-Resumable: ${$}`)}},onError(b){if(r||(R.stop("Upload failed"),g.error(`Upload error: ${b.message}`)),b instanceof um.DetailedError){let T=b.originalResponse?.getBody(),P=b.originalResponse?.getStatus(),$=b.originalRequest?.getURL();i&&(g.error(`[TUS] Request URL: ${$}`),g.error(`[TUS] Response status: ${P}`),g.error(`[TUS] Response body: ${T}`));let q="Unknown error";try{let M=JSON.parse(T||'{"error": "unknown error"}');q=M.status||M.error||M.message||"unknown error"}catch{q=T||b.message}z(new Error(`TUS upload failed: ${q}`))}else z(new Error(`TUS upload failed: ${b.message||b.toString()}`))},onProgress(b,T){let P=(b/T*100).toFixed(2);r||R.message(`Uploading ${P}%`)},onSuccess(){r||R.stop("Upload complete!"),i&&g.success("TUS upload completed successfully"),j()}});i&&g.info("[TUS] Starting upload..."),L.start()}),r||g.info("Starting build job...");let _=await fetch(`${a}/build/start/${E.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify({app_id:t})});if(!_.ok){let j=await _.text();throw new Error(`Failed to start build: ${_.status} - ${j}`)}let k=await _.json();r||(g.success("Build started!"),g.info("Streaming build logs..."));let F,I=await Tfe(a,E.job_id,t,e.apikey,r,i);I?F=I:F=await Ife(a,E.job_id,t,e.platform,e.apikey,r),r||(F==="succeeded"?g.success("Build completed successfully!"):F==="failed"?g.error("Build failed"):g.warn(`Build finished with status: ${F}`));let B=((Date.now()-n)/1e3).toFixed(2);return await _e(e.apikey,{channel:"native-builder",event:F==="succeeded"?"Build succeeded":"Build failed",icon:F==="succeeded"?"\u2705":"\u274C",user_id:c,tags:{"app-id":t,platform:e.platform,status:F||"unknown",time:B},notify:!1}).catch(),{success:F==="succeeded",jobId:E.job_id,uploadUrl:E.upload_url,status:F||k.status||E.status}}finally{await(0,en.rm)(A,{recursive:!0,force:!0})}}catch(s){let o=s instanceof Error?s.message:String(s);return r||g.error(o),{success:!1,error:o}}}async function Rfe(t,e,r,n){for await(let i of t)n||g.warn(`Removing ${i.name} created on ${ou(i.created_at)}`),await nm(e,r,i.name)}function kfe(t,e,r){let n=[];for(let i of t??[]){let s=lt(i.name);Ym(s,e)&&ps(s,r)&&n.push(i)}return n}async function c6(t,e,r=!1){r||ae("Cleanup versions in Capgo"),await Je(),e.apikey=e.apikey||re();let{bundle:n,keep:i=4}=e,s=e.force||!1,o=e.ignoreChannel||!1,a=await he();if(t=Be(t,a?.config),!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to delete your app"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let u=await pe(e.apikey,e.supaHost,e.supaAnon);await De(u,e.apikey,["write","all"]),await Et(u,e.apikey,t,3,r),r||g.info("Querying all available versions in Capgo");let c=await im(u,t),l=await K8(u,t);if(r||g.info(`Total active versions in Capgo: ${c?.length??0}`),!c?.length)throw r||g.error("No versions found, aborting cleanup"),new Error("No versions found");if(n){let f=lt(n),p=Eu(f,"major");r||g.info(`Querying available versions in Capgo between ${sn(f)} and ${sn(p)}`),c=kfe(c,f,p),r||g.info(`Active versions in Capgo between ${sn(f)} and ${sn(p)}: ${c?.length??0}`)}let d=[],h=0;for(let f of c){let p=l.find(y=>y===f.id);h<i||p&&!o?(f.keep=p?"\u2705 (Linked to channel)":"\u2705",h+=1):(f.keep="\u274C",d.push(f))}if(!d.length)return r||g.warn("Nothing to be removed, aborting removal..."),{removed:0,kept:h};if(r||z8(c),!s){if(r)throw new Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");{let f=await Pr({message:"Do you want to continue removing the versions specified?"});if(Ke(f)||!f)throw g.warn("Not confirmed, aborting removal..."),new Error("Cleanup cancelled by user")}}return r||g.success("You have confirmed removal, removing versions now"),await Rfe(d,u,t,r),r||le("Done \u2705"),{removed:d.length,kept:h}}async function l6(t,e,r=!1){r||ae("Check compatibility");let n={...e,apikey:e.apikey||re()},i=await he(),s=Be(t,i?.config),o=n.channel;if(!o)throw r||g.error("Missing argument, you need to provide a channel"),new Error("Missing channel");if(!n.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!s)throw r||g.error("Missing argument, you need to provide an appId, or be in a capacitor project"),new Error("Missing appId");let a=await pe(n.apikey,n.supaHost,n.supaAnon);await De(a,n.apikey,["write","all","read","upload"]),await Et(a,n.apikey,s,1,r);let u=await rm(a,s,o,n.packageJson,n.nodeModules);if(!r){let c=new zt;c.headers=["Package","Local version","Remote version","Compatible"],c.theme=zt.roundTheme,c.rows=[];let l=n.text?"Yes":"\u2705",d=n.text?"No":"\u274C";for(let h of u.finalCompatibility){let{name:f,localVersion:p,remoteVersion:y}=h,v=po(h)?l:d;c.rows.push([f,p,y,v])}g.success("Compatibility"),g.success(c.toString())}return{finalCompatibility:u.finalCompatibility}}var Ci=require("node:fs");var bi=require("node:buffer"),Ut=require("node:crypto"),d6="aes-128-cbc",_i="base64",f6="hex",hl=Ut.constants.RSA_PKCS1_PADDING;function cm(t){let e=(0,Ut.randomBytes)(16),r=(0,Ut.randomBytes)(16),n=e.toString(_i),i=(0,Ut.privateEncrypt)({key:t,padding:hl},r).toString(_i);return{sessionKey:r,ivSessionKey:`${n}:${i}`}}function cu(t,e,r){let[n]=r.split(":"),i=bi.Buffer.from(n,_i),s=(0,Ut.createCipheriv)(d6,e,i);return s.setAutoPadding(!0),bi.Buffer.concat([s.update(t),s.final()])}function h6(t,e,r){let[n,i]=e.split(":"),s=(0,Ut.publicDecrypt)({key:r,padding:hl},bi.Buffer.from(i,_i)),o=bi.Buffer.from(n,_i),a=(0,Ut.createDecipheriv)(d6,s,o);return a.setAutoPadding(!0),bi.Buffer.concat([a.update(t),a.final()])}function lu(t,e){return(0,Ut.privateEncrypt)({key:e,padding:hl},bi.Buffer.from(t,_i)).toString(_i)}function lm(t,e){return(0,Ut.privateEncrypt)({key:e,padding:hl},bi.Buffer.from(t,f6)).toString(f6)}function p6(t,e){return(0,Ut.publicDecrypt)({key:e,padding:hl},bi.Buffer.from(t,_i)).toString(_i)}function m6(){let{publicKey:t,privateKey:e}=(0,Ut.generateKeyPairSync)("rsa",{modulusLength:2048});return{publicKey:t.export({type:"pkcs1",format:"pem"}),privateKey:e.export({type:"pkcs1",format:"pem"})}}function g6(t){return t?t.replace(/-----BEGIN RSA PUBLIC KEY-----/g,"").replace(/-----END RSA PUBLIC KEY-----/g,"").replace(/\n/g,"").replace(/\r/g,"").replace(/ /g,"").substring(0,4):""}function Nfe(t,e){let r=t.key||Ei,n=e.config.plugins?.CapacitorUpdater?.publicKey;return(0,Ci.existsSync)(r)?n=(0,Ci.readFileSync)(r,"utf8"):!n&&t.keyData&&(n=t.keyData),{publicKey:n,fallbackKeyPath:r}}async function y6(t,e,r,n=!1){n||ae("Decrypt zip file");try{if(await Je(),!(0,Ci.existsSync)(t)){let d=`Zip not found at the path ${t}`;throw n||g.error(d),new Error(d)}let i=await he();if(!r.key&&!(0,Ci.existsSync)(Ei)&&!i.config.plugins?.CapacitorUpdater?.publicKey){let d=`Public Key not found at the path ${Ei} or in ${i.path}`;throw n||g.error(d),new Error(d)}let{publicKey:s,fallbackKeyPath:o}=Nfe(r,i);if(!s){let d=`Cannot find public key ${o} or as keyData option or in ${i.path}`;throw n||g.error(d),new Error(d)}let a=(0,Ci.readFileSync)(t),u=h6(a,e,r.keyData??s),c=`${t}_decrypted.zip`;(0,Ci.writeFileSync)(c,u),n||g.info(`Decrypted zip file at ${c}`);let l;if(r.checksum){let d=await ii(u,"sha256"),h=p6(r.checksum,r.keyData??s);if(l=d===h,!l){let f=`Checksum does not match ${d} !== ${h}`;throw n||g.error(f),new Error(f)}n||g.info("Checksum matches")}return n||le("\u2705 done"),{outputPath:c,checksumMatches:l}}catch(i){throw n||g.error(`Error decrypting zip file ${W(i)}`),i instanceof Error?i:new Error(String(i))}}async function D6(t,e,r,n=!1){n||ae("Delete bundle"),r.apikey=r.apikey||re();let i=await he();if(e=Be(e,i?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!t)throw n||g.error("Missing argument, you need to provide a bundleId, or be in a capacitor project"),new Error("Missing bundleId");let s=await pe(r.apikey,r.supaHost,r.supaAnon);return await De(s,r.apikey,["write","all"]),await Et(s,r.apikey,e,3,n),n||(g.info(`Deleting bundle ${e}@${t} from Capgo`),g.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever")),await nm(s,e,t),n||(g.success(`Bundle ${e}@${t} deleted in Capgo`),le("Done")),!0}var Si=require("node:fs");function pl(t){console.error(W(t))}async function w6(t,e,r,n=!1){let{json:i}=r,s=!i&&!n;s&&(ae("Encryption"),await Je());try{let o=await he(),a=!!o.config.plugins?.CapacitorUpdater?.privateKey,u=!!o.config.plugins?.CapacitorUpdater?.publicKey;if(a&&s&&g.warning("There is still a privateKey in the config"),!(0,Si.existsSync)(t)){let E=`Zip not found at the path ${t}`;throw n||(i?pl({error:"zip_not_found"}):g.error(`Error: ${E}`)),new Error(E)}if(!u)throw n||(i?pl({error:"missing_public_key"}):g.warning("Warning: Missing Public Key in config")),new Error("Missing public key in config");let c=r.key||$r,l=r.keyData||"";if(!(0,Si.existsSync)(c)&&!l)throw n||(i?pl({error:"missing_key"}):(g.warning(`Cannot find a private key at ${c} or as a keyData option`),g.error("Error: Missing key"))),new Error("Missing private key");if((0,Si.existsSync)(c)&&(l=(0,Si.readFileSync)(c,"utf8")),l&&!l.startsWith("-----BEGIN RSA PRIVATE KEY-----"))throw n||(i?pl({error:"invalid_private_key"}):g.error("The private key provided is not a valid RSA Private key")),new Error("Invalid private key format");let d=(0,Si.readFileSync)(t),{sessionKey:h,ivSessionKey:f}=cm(l),p=cu(d,h,f),y=lu(e,l),v=`${t}_encrypted.zip`;return(0,Si.writeFileSync)(v,p),n||(i?console.log(JSON.stringify({checksum:y,filename:v,ivSessionKey:f},null,2)):(g.success(`Encoded Checksum: ${y}`),g.success(`ivSessionKey: ${f}`),g.success(`Encrypted zip saved at ${v}`),le("Done \u2705"))),{checksum:y,filename:v,ivSessionKey:f}}catch(o){throw n||(r.json?pl(o):g.error(`Error encrypting zip file ${W(o)}`)),o instanceof Error?o:new Error(String(o))}}var XU=require("node:crypto"),_o=require("node:fs"),Sm=require("node:process");var fm=class extends TransformStream{outChunkSize;constructor(e){let r=new Uint8Array(e),n=0;super({transform(i,s){let o=0;for(;o<i.length;){let a=e-n,u=Math.min(a,i.length-o);r.set(i.subarray(o,o+u),n),o+=u,n+=u,n===e&&(s.enqueue(r),r=new Uint8Array(e),n=0)}},flush(i){n>0&&i.enqueue(r.subarray(0,n))}}),this.outChunkSize=e}};function ls(t){return t=t.trim(),t=t.replace(/<!--[\s\S]*?-->/g,""),e();function e(){return{declaration:r(),root:n()}}function r(){if(!u(/^<\?xml\s*/))return;let h={attributes:{}};for(;!(c()||l("?>"));){let f=s();if(!f)return h;h.attributes[f.name]=f.value}return u(/\?>\s*/),h}function n(){let d=u(/^<([\w-:.]+)\s*/);if(!d)return;let h={name:d[1],attributes:{},children:[]};for(;!(c()||l(">")||l("?>")||l("/>"));){let p=s();if(!p)return h;h.attributes[p.name]=p.value}if(u(/^\s*\/>\s*/))return h;u(/\??>\s*/),h.content=i();let f;for(;f=n();)h.children.push(f);return u(/^<\/[\w-:.]+>\s*/),h}function i(){let d=u(/^([^<]*)/);return d?a(d[1]):""}function s(){let d=u(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(d)return{name:d[1],value:a(o(d[2]))}}function o(d){return d.replace(/^['"]|['"]$/g,"")}function a(d){return d.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}function u(d){let h=t.match(d);if(h)return t=t.slice(h[0].length),h}function c(){return t.length===0}function l(d){return t.startsWith(d)}}var Vn=class extends Error{};var Jt=class extends Vn{},ml=class extends Vn{},dm=class extends Vn{bucketName;constructor(e){super(`Invalid bucket name: ${e}`),this.bucketName=e}},zn=class extends Vn{objectName;constructor(e){super(`Invalid object name: ${e}`),this.objectName=e}},fs=class extends Vn{constructor(){super("accessKey is required")}},fu=class extends Vn{constructor(){super("secretKey is required")}},gl=class extends Vn{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}},Ai=class extends Vn{statusCode;code;key;bucketName;resource;region;constructor(e,r,n,i={}){super(n),this.statusCode=e,this.code=r,this.key=i.key,this.bucketName=i.bucketName,this.resource=i.resource,this.region=i.region}};async function v6(t){try{let r=ls(await t.text()).root;if(r?.name!=="Error")throw new Error("Invalid root, expected <Error>");let n=r.children.find(c=>c.name==="Code")?.content??"UnknownErrorCode",i=r.children.find(c=>c.name==="Message")?.content??"The error message could not be determined.",s=r.children.find(c=>c.name==="Key")?.content,o=r.children.find(c=>c.name==="BucketName")?.content,a=r.children.find(c=>c.name==="Resource")?.content,u=r.children.find(c=>c.name==="Region")?.content;return new Ai(t.status,n,i,{key:s,bucketName:o,resource:a,region:u})}catch{return new Ai(t.status,"UnrecognizedError",`Error: Unexpected response code ${t.status} ${t.statusText}. Unable to parse response as XML.`)}}function E6(t){return typeof t!="number"||isNaN(t)?!1:t>=1&&t<=65535}function b6(t){return typeof t!="string"||t.length<3||t.length>63||t.includes("..")||t.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)?!1:!!t.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/)}function ds(t){return!(!$fe(t)||t.length===0)}function $fe(t){return!(typeof t!="string"||t.length>1024)}function yl(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function mo(t=""){let e={'"':"","&quot;":"","&#34;":"","&QUOT;":"","&#x00022":""};return t.replace(/^("|&quot;|&#34;)|("|&quot;|&#34;)$/g,r=>e[r])}function Ab(t){return t.get("x-amz-version-id")??null}function go(t){let e=t.toISOString();return e.slice(0,4)+e.slice(5,7)+e.slice(8,13)+e.slice(14,16)+e.slice(17,19)+"Z"}function Ob(t){return go(t).slice(0,8)}function xb(t,e){return`${Ob(e)}/${t}/s3/aws4_request`}async function hm(t){return t instanceof Uint8Array||(t=new TextEncoder().encode(t)),yl(new Uint8Array(await crypto.subtle.digest("SHA-256",t)))}var Lfe=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"],pm=class extends WritableStream{getResult;constructor({client:e,bucketName:r,objectName:n,partSize:i,metadata:s}){let o,a=1,u,c=[],l,d=[];super({start(){},async write(h,f){let y=a++;try{if(y==1&&h.length<i){let A=await e.makeRequest({method:"PUT",headers:new Headers({...s,"Content-Length":String(h.length)}),bucketName:r,objectName:n,payload:h});o={etag:mo(A.headers.get("etag")??void 0),versionId:Ab(A.headers)};return}y===1&&(u=(await Bfe({client:e,bucketName:r,objectName:n,metadata:s})).uploadId);let v={"Content-Length":String(h.length)};for(let A of Lfe){let m=s[A];m&&(v[A]=m)}let E=e.makeRequest({method:"PUT",query:{partNumber:y.toString(),uploadId:u},headers:new Headers(v),bucketName:r,objectName:n,payload:h}).then(A=>{let m=A.headers.get("etag")??"";return m&&(m=m.replace(/^"/,"").replace(/"$/,"")),c.push({part:y,etag:m}),A});d.push(E.catch(A=>{l||(l=A)}))}catch(v){throw v}},async close(){if(!o)if(u){if(await Promise.all(d),l)throw l;c.sort((h,f)=>h.part>f.part?1:-1),o=await jfe({client:e,bucketName:r,objectName:n,uploadId:u,etags:c})}else throw new Error("Stream was closed without uploading any data.")}}),this.getResult=()=>{if(o===void 0)throw new Error("Result is not ready. await the stream first.");return o}}};async function Bfe(t){let e="POST",r=new Headers(t.metadata),s=await(await t.client.makeRequest({method:e,bucketName:t.bucketName,objectName:t.objectName,query:"uploads",headers:r,returnBody:!0})).text(),o=ls(s).root;if(!o||o.name!=="InitiateMultipartUploadResult")throw new Error(`Unexpected response: ${s}`);let a=o.children.find(u=>u.name==="UploadId")?.content;if(!a)throw new Error(`Unable to get UploadId from response: ${s}`);return{uploadId:a}}async function jfe({client:t,bucketName:e,objectName:r,uploadId:n,etags:i}){let s=`
341
341
  <CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
342
342
  ${i.map(d=>` <Part><PartNumber>${d.part}</PartNumber><ETag>${d.etag}</ETag></Part>`).join(`
343
343
  `)}
@@ -358,7 +358,7 @@ Bundle uploaded \u{1F4AA} in 0 seconds`),o.verbose&&g.info("[Verbose] Dry upload
358
358
  The bundle size is ${m} Mb, this may take a while to download for users
359
359
  `),g.warn(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
360
360
  `));let D=o?xt():null,w=e.name||`${u}_${i}.zip`;return D&&D.start(`Saving to ${w}`),(0,Am.writeFileSync)(w,h),D&&D.stop(`Saved to ${w}`),o&&le("Done \u2705"),!r&&n&&Che({bundle:i,filename:w,checksum:A}),{bundle:i,filename:w,checksum:A}}catch(a){throw r||(n?Sl(a):g.error(W(a))),a instanceof Error?a:new Error(String(a))}}async function QU(t,e,r,n=!1){n||ae("Create channel"),r.apikey=r.apikey||re();let i=await he().catch(()=>{});if(e=Be(e,i?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let s=await pe(r.apikey,r.supaHost,r.supaAnon);await De(s,r.apikey,["write","all"]),await Et(s,r.apikey,e,4,n),n||g.info(`Creating channel ${e}#${t} to Capgo`);let o=await Eb(s,e);if(!o)throw n||g.error("Cannot find default version for channel creation, please contact Capgo support \u{1F928}"),new Error("Cannot find default version for channel creation");let a=await Rr(s,e),u=await De(s,r.apikey,["write","all"]),c=await B8(s,{name:t,app_id:e,version:o.id,created_by:u,owner_org:a,allow_device_self_set:r.selfAssign??!1,public:r.default??!1});if(c.error)throw n||g.error(`Cannot create Channel \u{1F640}
361
- ${W(c.error)}`),new Error(`Cannot create channel: ${W(c.error)}`);return await _e(r.apikey,{channel:"channel",event:"Create channel",icon:"\u2705",user_id:a,tags:{"app-id":e,channel:t},notify:!1}).catch(()=>{}),n||(g.success("Channel created \u2705"),le("Done \u2705")),c.data??!0}async function eq(t,e,r,n=!1){let{quiet:i}=r;!i&&!n&&ae("List current bundle"),r.apikey=r.apikey||re(i);let s=await he();if(e=Be(e,s?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let o=await pe(r.apikey,r.supaHost,r.supaAnon);if(await De(o,r.apikey,["write","all","read"]),await Et(o,r.apikey,e,1,n),!t)throw n||g.error("Please provide a channel to get the bundle from."),new Error("Channel name missing");let{data:a,error:u}=await o.from("channels").select("version ( name )").eq("name",t).eq("app_id",e).limit(1);if(u||!a?.length)throw n||g.error(`Error retrieving channel ${t} for app ${e}. Perhaps the channel does not exist?`),new Error(`Channel ${t} not found for app ${e}`);let{version:c}=a[0];if(!c)throw n||g.error(`Error retrieving channel ${t} for app ${e}. Perhaps the channel does not exist?`),new Error(`Channel ${t} does not have a bundle linked`);return n||(i?g.info(c.name):g.info(`Current bundle for channel ${t} is ${c.name}`)),c.name}async function tq(t,e,r,n=!1){n||ae("Delete channel"),r.apikey=r.apikey||re();let i=await he();if(e=Be(e,i?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let s=await pe(r.apikey,r.supaHost,r.supaAnon),o=await De(s,r.apikey,["all"]);if(await Et(s,r.apikey,e,4,n),r.deleteBundle&&!n&&g.info(`Deleting bundle ${e}#${t} from Capgo`),r.deleteBundle){let h=await q8(s,e,t);h?.name&&!n&&g.info(`Deleting bundle ${h.name} from Capgo`),h?.name&&await bb(s,e,h.name)}let{data:a,error:u}=await M8(s,e,t);if(u||!a){if(n||g.error(`Channel ${t} not found`),r.successIfNotFound)return n||g.success(`Channel ${t} not found and successIfNotFound is true`),!0;throw new Error(`Channel ${t} not found`)}let{error:c}=await U8(s,e,a.id);if(c)throw n||g.error(`Cannot delete channel devices: ${W(c)}`),new Error(`Cannot delete channel devices: ${W(c)}`);n||g.info(`Deleting channel ${e}#${t} from Capgo`);let l=await j8(s,t,e,o);if(l.error)throw n||g.error(`Cannot delete Channel \u{1F640} ${W(l.error)}`),new Error(`Cannot delete channel: ${W(l.error)}`);let d=await Rr(s,e);return await _e(r.apikey,{channel:"channel",event:"Delete channel",icon:"\u2705",user_id:d,tags:{"app-id":e,channel:t},notify:!1}).catch(()=>{}),n||(g.success("Channel deleted"),le("Done \u2705")),!0}async function rq(t,e,r=!1){r||ae("List channels"),e.apikey=e.apikey||re();let n=await he();if(t=Be(t,n?.config),!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let i=await pe(e.apikey,e.supaHost,e.supaAnon),s=await De(i,e.apikey,["write","all","read","upload"]);await Et(i,e.apikey,t,1,r),r||g.info("Querying available channels in Capgo");let o=await V8(i,t);return r||(g.info(`Active channels in Capgo: ${o?.length??0}`),H8(o)),await _e(e.apikey,{channel:"channel",event:"List channel",icon:"\u2705",user_id:s,tags:{"app-id":t},notify:!1}).catch(()=>{}),r||le("Done \u2705"),o}var nq=["major","minor","metadata","patch","none"];async function iq(t,e,r,n=!1){n||ae("Set channel"),r.apikey=r.apikey||re();let i=await he();if(e=Be(e,i?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!t)throw n||g.error("Missing argument, you need to provide a channel"),new Error("Missing channel id");let s=await pe(r.apikey,r.supaHost,r.supaAnon),o=await De(s,r.apikey,["write","all"]);await Et(s,r.apikey,e,4,n);let a=await Rr(s,e),{bundle:u,state:c,downgrade:l,latest:d,latestRemote:h,ios:f,android:p,selfAssign:y,disableAutoUpdate:v,dev:E,emulator:A,device:m,prod:D}=r;if(d&&u)throw n||g.error("Cannot set latest and bundle at the same time"),new Error("Cannot set both latest and bundle simultaneously");if(h&&u)throw n||g.error("Cannot set latest remote and bundle at the same time"),new Error("Cannot set both latest remote and bundle simultaneously");if(h&&d)throw n||g.error("Cannot set latest remote and latest at the same time"),new Error("Cannot set both latest remote and latest simultaneously");if(u==null&&c==null&&d==null&&h==null&&l==null&&f==null&&p==null&&y==null&&E==null&&A==null&&m==null&&D==null&&v==null)throw n||g.error("Missing argument, you need to provide a option to set"),new Error("No channel option provided");await C8(s,a,r.apikey,e);let w={created_by:o,app_id:e,name:t,owner_org:a,version:void 0},{error:S}=await s.from("channels").select().eq("app_id",e).eq("name",t).single();if(S)throw n||g.error(`Cannot find channel ${t}`),new Error(`Cannot find channel ${t}`);let R=d?i?.config?.plugins?.CapacitorUpdater?.version||as("",r.packageJson):u;if(R!=null){let{data:k,error:F}=await s.from("app_versions").select().eq("app_id",e).eq("name",R).eq("user_id",o).eq("deleted",!1).single();if(F||!k)throw n||g.error(`Cannot find version ${R}`),new Error(`Cannot find version ${R}`);if(!r.ignoreMetadataCheck){let{finalCompatibility:I,localDependencies:B}=await vb(s,e,t,k.native_packages??[]),j=qn();if(B.length>0&&I.some(z=>!po(z)))throw n||(g.warn(`Bundle NOT compatible with ${t} channel`),g.warn(`You can check compatibility with "${j.runner} @capgo/cli bundle compatibility"`)),new Error(`Bundle is not compatible with ${t} channel`);n||(B.length===0&&I.length>0?g.info(`Ignoring check compatibility with ${t} channel because the bundle does not contain any native packages`):g.info(`Bundle is compatible with ${t} channel`))}n||g.info(`Set ${e} channel: ${t} to @${R}`),w.version=k.id}if(h){let{data:k,error:F}=await s.from("app_versions").select().eq("app_id",e).eq("user_id",o).eq("deleted",!1).order("created_at",{ascending:!1}).single();if(F||!k)throw n||g.error("Cannot find latest remote version"),new Error("Cannot find latest remote version");if(!r.ignoreMetadataCheck){let{finalCompatibility:I}=await vb(s,e,t,k.native_packages??[]),B=qn();if(I.some(j=>!po(j)))throw n||(g.warn(`Bundle NOT compatible with ${t} channel`),g.warn(`You can check compatibility with "${B.runner} @capgo/cli bundle compatibility"`)),new Error(`Latest remote bundle is not compatible with ${t} channel`)}n||g.info(`Set ${e} channel: ${t} to @${k.name}`),w.version=k.id}if(c!=null){if(c!=="normal"&&c!=="default")throw n||g.error(`State ${c} is not known. The possible values are: normal, default.`),new Error(`Unknown state ${c}. Expected normal or default`);n||g.info(`Set ${e} channel: ${t} to ${c}`),w.public=c==="default"}if(l!=null&&(n||g.info(`Set ${e} channel: ${t} to ${l?"allow":"disallow"} downgrade`),w.disable_auto_update_under_native=!l),f!=null&&(n||g.info(`Set ${e} channel: ${t} to ${f?"allow":"disallow"} ios update`),w.ios=!!f),p!=null&&(n||g.info(`Set ${e} channel: ${t} to ${p?"allow":"disallow"} android update`),w.android=!!p),y!=null&&(n||g.info(`Set ${e} channel: ${t} to ${y?"allow":"disallow"} self assign to this channel`),w.allow_device_self_set=!!y),E!=null&&(n||g.info(`Set ${e} channel: ${t} to ${E?"allow":"disallow"} dev devices`),w.allow_dev=!!E),A!=null&&(n||g.info(`Set ${e} channel: ${t} to ${A?"allow":"disallow"} emulator devices`),w.allow_emulator=!!A),m!=null&&(n||g.info(`Set ${e} channel: ${t} to ${m?"allow":"disallow"} physical devices`),w.allow_device=!!m),D!=null&&(n||g.info(`Set ${e} channel: ${t} to ${D?"allow":"disallow"} prod builds`),w.allow_prod=!!D),v!=null){let k=v.toLowerCase();if(!nq.includes(k))throw n||g.error(`Channel strategy ${k} is not known. The possible values are: ${nq.join(", ")}.`),new Error(`Unknown channel strategy ${k}`);k==="metadata"&&(k="version_number"),w.disable_auto_update=k,n||g.info(`Set ${e} channel: ${t} to ${k} disable update strategy to this channel`)}let{error:_}=await em(s,w);if(_)throw n||g.error('Cannot set channel the upload key is not allowed to do that, use the "all" for this.'),new Error("Upload key is not allowed to set this channel");return await _e(r.apikey,{channel:"channel",event:"Set channel",icon:"\u2705",user_id:a,tags:{"app-id":e},notify:!1}).catch(()=>{}),n||le("Done \u2705"),!0}var pr=require("node:fs");function sq(t){return t.plugins??={},t.plugins.extConfig??={},t.plugins.CapacitorUpdater??={},t.plugins.CapacitorUpdater}async function oq(t,e=!1){e||ae("Save keys \u{1F511}");let r=await he(),n=t.key||Ei,i=t.keyData||"";if(!(0,pr.existsSync)(n)&&!i)throw e||g.error(`Cannot find a public key at ${n} or as keyData option or in ${r.path}`),new Error("Missing public key");if((0,pr.existsSync)(n)&&(i=(0,pr.readFileSync)(n,"utf8")),!i.startsWith("-----BEGIN RSA PUBLIC KEY-----"))throw e||g.error("The public key provided is not a valid RSA Public key"),new Error("Invalid RSA public key");if(r?.config){let s=sq(r.config);s.privateKey&&(delete s.privateKey,e||g.info("Old private key deleted from config file"),(e?t.setupChannel??!1:t.setupChannel??await Pr({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))&&(s.defaultChannel="encryption_v2")),s.publicKey=i,await Ya(r)}return e||(g.success(`Public key saved into ${r.path} file in local directory`),g.success("Your app will decode the zip archive with this key")),!0}async function aq(t,e=!1){e||ae("Deleting old private key \u{1F5D1}\uFE0F");let r=await he(),n=r?.config?.plugins?.CapacitorUpdater;if(n?.privateKey){if(delete n.privateKey,await Ya(r),(0,pr.existsSync)(ru))try{(0,pr.unlinkSync)(ru),e||g.success(`Old private key file deleted: ${ru}`)}catch(i){e||g.error(`Failed to delete old private key file: ${ru} (${String(i)})`)}if((0,pr.existsSync)(Yp))try{(0,pr.unlinkSync)(Yp),e||g.success(`Old public key file deleted: ${Yp}`)}catch(i){e||g.error(`Failed to delete old public key file: ${Ei} (${String(i)})`)}return e||(g.success(`Old private key deleted from ${r.path} file`),le("Done \u2705")),!0}return e||g.info("No old private key found in config file"),!1}async function uq(t,e=!1){e||ae("Create keys \u{1F511}");let{publicKey:r,privateKey:n}=p6();if((0,pr.existsSync)(Ei)&&!t.force)throw e||g.error("Public Key already exists, use --force to overwrite"),new Error("Public key already exists");if((0,pr.writeFileSync)(Ei,r),(0,pr.existsSync)($r)&&!t.force)throw e||g.error("Private Key already exists, use --force to overwrite"),new Error("Private key already exists");(0,pr.writeFileSync)($r,n);let i=await he();if(i){let s=sq(i.config);s.privateKey&&(delete s.privateKey,e||g.info("Old private key deleted from config file"),(e?t.setupChannel??!1:t.setupChannel??await Pr({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))&&(s.defaultChannel="encryption_v2")),s.publicKey=r,await Ya(i)}if(!e){g.success("Your RSA key has been generated"),g.success(`Private key saved in ${$r}`),g.success("This key will be used to encrypt your bundle before sending it to Capgo"),g.success("Keep it safe"),g.success("Then make it unreadable by Capgo and unmodifiable by anyone"),g.success(`Public key saved in ${i.path}`),g.success("Your app will be the only one having it"),g.success("Only your users can decrypt your update"),g.success("Only you can send them an update");try{await $8(),le("Done \u2705")}catch(s){if(s instanceof Error&&s.message==="Capacitor sync cancelled")return!0;throw s}}return!0}var Co=require("node:fs"),cq=require("node:os");async function lq(t,e,r=!1){if(r||ae("Login to Capgo"),!t&&!r){let o=await w_({message:"Enter your API key:",mask:"*"});if(Ke(o))throw g.error("Login cancelled"),new Error("Login cancelled");t=o}if(!t)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");await Je();let{local:n}=e;if(n){if(!(0,Co.existsSync)(".git"))throw r||g.error("To use local you should be in a git repository"),new Error("Not in a git repository");(0,Co.writeFileSync)(".capgo",`${t}
361
+ ${W(c.error)}`),new Error(`Cannot create channel: ${W(c.error)}`);return await _e(r.apikey,{channel:"channel",event:"Create channel",icon:"\u2705",user_id:a,tags:{"app-id":e,channel:t},notify:!1}).catch(()=>{}),n||(g.success("Channel created \u2705"),le("Done \u2705")),c.data??!0}async function eq(t,e,r,n=!1){let{quiet:i}=r;!i&&!n&&ae("List current bundle"),r.apikey=r.apikey||re(i);let s=await he();if(e=Be(e,s?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let o=await pe(r.apikey,r.supaHost,r.supaAnon);if(await De(o,r.apikey,["write","all","read"]),await Et(o,r.apikey,e,1,n),!t)throw n||g.error("Please provide a channel to get the bundle from."),new Error("Channel name missing");let{data:a,error:u}=await o.from("channels").select("version ( name )").eq("name",t).eq("app_id",e).limit(1);if(u||!a?.length)throw n||g.error(`Error retrieving channel ${t} for app ${e}. Perhaps the channel does not exist?`),new Error(`Channel ${t} not found for app ${e}`);let{version:c}=a[0];if(!c)throw n||g.error(`Error retrieving channel ${t} for app ${e}. Perhaps the channel does not exist?`),new Error(`Channel ${t} does not have a bundle linked`);return n||(i?g.info(c.name):g.info(`Current bundle for channel ${t} is ${c.name}`)),c.name}async function tq(t,e,r,n=!1){n||ae("Delete channel"),r.apikey=r.apikey||re();let i=await he();if(e=Be(e,i?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let s=await pe(r.apikey,r.supaHost,r.supaAnon),o=await De(s,r.apikey,["all"]);if(await Et(s,r.apikey,e,4,n),r.deleteBundle&&!n&&g.info(`Deleting bundle ${e}#${t} from Capgo`),r.deleteBundle){let h=await q8(s,e,t);h?.name&&!n&&g.info(`Deleting bundle ${h.name} from Capgo`),h?.name&&await bb(s,e,h.name)}let{data:a,error:u}=await M8(s,e,t);if(u||!a){if(n||g.error(`Channel ${t} not found`),r.successIfNotFound)return n||g.success(`Channel ${t} not found and successIfNotFound is true`),!0;throw new Error(`Channel ${t} not found`)}let{error:c}=await U8(s,e,a.id);if(c)throw n||g.error(`Cannot delete channel devices: ${W(c)}`),new Error(`Cannot delete channel devices: ${W(c)}`);n||g.info(`Deleting channel ${e}#${t} from Capgo`);let l=await j8(s,t,e,o);if(l.error)throw n||g.error(`Cannot delete Channel \u{1F640} ${W(l.error)}`),new Error(`Cannot delete channel: ${W(l.error)}`);let d=await Rr(s,e);return await _e(r.apikey,{channel:"channel",event:"Delete channel",icon:"\u2705",user_id:d,tags:{"app-id":e,channel:t},notify:!1}).catch(()=>{}),n||(g.success("Channel deleted"),le("Done \u2705")),!0}async function rq(t,e,r=!1){r||ae("List channels"),e.apikey=e.apikey||re();let n=await he();if(t=Be(t,n?.config),!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let i=await pe(e.apikey,e.supaHost,e.supaAnon),s=await De(i,e.apikey,["write","all","read","upload"]);await Et(i,e.apikey,t,1,r),r||g.info("Querying available channels in Capgo");let o=await V8(i,t);return r||(g.info(`Active channels in Capgo: ${o?.length??0}`),H8(o)),await _e(e.apikey,{channel:"channel",event:"List channel",icon:"\u2705",user_id:s,tags:{"app-id":t},notify:!1}).catch(()=>{}),r||le("Done \u2705"),o}var nq=["major","minor","metadata","patch","none"];async function iq(t,e,r,n=!1){n||ae("Set channel"),r.apikey=r.apikey||re();let i=await he();if(e=Be(e,i?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!t)throw n||g.error("Missing argument, you need to provide a channel"),new Error("Missing channel id");let s=await pe(r.apikey,r.supaHost,r.supaAnon),o=await De(s,r.apikey,["write","all"]);await Et(s,r.apikey,e,4,n);let a=await Rr(s,e),{bundle:u,state:c,downgrade:l,latest:d,latestRemote:h,ios:f,android:p,selfAssign:y,disableAutoUpdate:v,dev:E,emulator:A,device:m,prod:D}=r;if(d&&u)throw n||g.error("Cannot set latest and bundle at the same time"),new Error("Cannot set both latest and bundle simultaneously");if(h&&u)throw n||g.error("Cannot set latest remote and bundle at the same time"),new Error("Cannot set both latest remote and bundle simultaneously");if(h&&d)throw n||g.error("Cannot set latest remote and latest at the same time"),new Error("Cannot set both latest remote and latest simultaneously");if(u==null&&c==null&&d==null&&h==null&&l==null&&f==null&&p==null&&y==null&&E==null&&A==null&&m==null&&D==null&&v==null)throw n||g.error("Missing argument, you need to provide a option to set"),new Error("No channel option provided");await C8(s,a,r.apikey,e);let w={created_by:o,app_id:e,name:t,owner_org:a,version:void 0},{error:S}=await s.from("channels").select().eq("app_id",e).eq("name",t).single();if(S)throw n||g.error(`Cannot find channel ${t}`),new Error(`Cannot find channel ${t}`);let R=d?i?.config?.plugins?.CapacitorUpdater?.version||as("",r.packageJson):u;if(R!=null){let{data:k,error:F}=await s.from("app_versions").select().eq("app_id",e).eq("name",R).eq("user_id",o).eq("deleted",!1).single();if(F||!k)throw n||g.error(`Cannot find version ${R}`),new Error(`Cannot find version ${R}`);if(!r.ignoreMetadataCheck){let{finalCompatibility:I,localDependencies:B}=await vb(s,e,t,k.native_packages??[]),j=qn();if(B.length>0&&I.some(z=>!po(z)))throw n||(g.warn(`Bundle NOT compatible with ${t} channel`),g.warn(`You can check compatibility with "${j.runner} @capgo/cli bundle compatibility"`)),new Error(`Bundle is not compatible with ${t} channel`);n||(B.length===0&&I.length>0?g.info(`Ignoring check compatibility with ${t} channel because the bundle does not contain any native packages`):g.info(`Bundle is compatible with ${t} channel`))}n||g.info(`Set ${e} channel: ${t} to @${R}`),w.version=k.id}if(h){let{data:k,error:F}=await s.from("app_versions").select().eq("app_id",e).eq("user_id",o).eq("deleted",!1).order("created_at",{ascending:!1}).single();if(F||!k)throw n||g.error("Cannot find latest remote version"),new Error("Cannot find latest remote version");if(!r.ignoreMetadataCheck){let{finalCompatibility:I}=await vb(s,e,t,k.native_packages??[]),B=qn();if(I.some(j=>!po(j)))throw n||(g.warn(`Bundle NOT compatible with ${t} channel`),g.warn(`You can check compatibility with "${B.runner} @capgo/cli bundle compatibility"`)),new Error(`Latest remote bundle is not compatible with ${t} channel`)}n||g.info(`Set ${e} channel: ${t} to @${k.name}`),w.version=k.id}if(c!=null){if(c!=="normal"&&c!=="default")throw n||g.error(`State ${c} is not known. The possible values are: normal, default.`),new Error(`Unknown state ${c}. Expected normal or default`);n||g.info(`Set ${e} channel: ${t} to ${c}`),w.public=c==="default"}if(l!=null&&(n||g.info(`Set ${e} channel: ${t} to ${l?"allow":"disallow"} downgrade`),w.disable_auto_update_under_native=!l),f!=null&&(n||g.info(`Set ${e} channel: ${t} to ${f?"allow":"disallow"} ios update`),w.ios=!!f),p!=null&&(n||g.info(`Set ${e} channel: ${t} to ${p?"allow":"disallow"} android update`),w.android=!!p),y!=null&&(n||g.info(`Set ${e} channel: ${t} to ${y?"allow":"disallow"} self assign to this channel`),w.allow_device_self_set=!!y),E!=null&&(n||g.info(`Set ${e} channel: ${t} to ${E?"allow":"disallow"} dev devices`),w.allow_dev=!!E),A!=null&&(n||g.info(`Set ${e} channel: ${t} to ${A?"allow":"disallow"} emulator devices`),w.allow_emulator=!!A),m!=null&&(n||g.info(`Set ${e} channel: ${t} to ${m?"allow":"disallow"} physical devices`),w.allow_device=!!m),D!=null&&(n||g.info(`Set ${e} channel: ${t} to ${D?"allow":"disallow"} prod builds`),w.allow_prod=!!D),v!=null){let k=v.toLowerCase();if(!nq.includes(k))throw n||g.error(`Channel strategy ${k} is not known. The possible values are: ${nq.join(", ")}.`),new Error(`Unknown channel strategy ${k}`);k==="metadata"&&(k="version_number"),w.disable_auto_update=k,n||g.info(`Set ${e} channel: ${t} to ${k} disable update strategy to this channel`)}let{error:_}=await em(s,w);if(_)throw n||g.error('Cannot set channel the upload key is not allowed to do that, use the "all" for this.'),new Error("Upload key is not allowed to set this channel");return await _e(r.apikey,{channel:"channel",event:"Set channel",icon:"\u2705",user_id:a,tags:{"app-id":e},notify:!1}).catch(()=>{}),n||le("Done \u2705"),!0}var pr=require("node:fs");function sq(t){return t.plugins??={},t.plugins.extConfig??={},t.plugins.CapacitorUpdater??={},t.plugins.CapacitorUpdater}async function oq(t,e=!1){e||ae("Save keys \u{1F511}");let r=await he(),n=t.key||Ei,i=t.keyData||"";if(!(0,pr.existsSync)(n)&&!i)throw e||g.error(`Cannot find a public key at ${n} or as keyData option or in ${r.path}`),new Error("Missing public key");if((0,pr.existsSync)(n)&&(i=(0,pr.readFileSync)(n,"utf8")),!i.startsWith("-----BEGIN RSA PUBLIC KEY-----"))throw e||g.error("The public key provided is not a valid RSA Public key"),new Error("Invalid RSA public key");if(r?.config){let s=sq(r.config);s.privateKey&&(delete s.privateKey,e||g.info("Old private key deleted from config file"),(e?t.setupChannel??!1:t.setupChannel??await Pr({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))&&(s.defaultChannel="encryption_v2")),s.publicKey=i,await Ya(r)}return e||(g.success(`Public key saved into ${r.path} file in local directory`),g.success("Your app will decode the zip archive with this key")),!0}async function aq(t,e=!1){e||ae("Deleting old private key \u{1F5D1}\uFE0F");let r=await he(),n=r?.config?.plugins?.CapacitorUpdater;if(n?.privateKey){if(delete n.privateKey,await Ya(r),(0,pr.existsSync)(ru))try{(0,pr.unlinkSync)(ru),e||g.success(`Old private key file deleted: ${ru}`)}catch(i){e||g.error(`Failed to delete old private key file: ${ru} (${String(i)})`)}if((0,pr.existsSync)(Yp))try{(0,pr.unlinkSync)(Yp),e||g.success(`Old public key file deleted: ${Yp}`)}catch(i){e||g.error(`Failed to delete old public key file: ${Ei} (${String(i)})`)}return e||(g.success(`Old private key deleted from ${r.path} file`),le("Done \u2705")),!0}return e||g.info("No old private key found in config file"),!1}async function uq(t,e=!1){e||ae("Create keys \u{1F511}");let{publicKey:r,privateKey:n}=m6();if((0,pr.existsSync)(Ei)&&!t.force)throw e||g.error("Public Key already exists, use --force to overwrite"),new Error("Public key already exists");if((0,pr.writeFileSync)(Ei,r),(0,pr.existsSync)($r)&&!t.force)throw e||g.error("Private Key already exists, use --force to overwrite"),new Error("Private key already exists");(0,pr.writeFileSync)($r,n);let i=await he();if(i){let s=sq(i.config);s.privateKey&&(delete s.privateKey,e||g.info("Old private key deleted from config file"),(e?t.setupChannel??!1:t.setupChannel??await Pr({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))&&(s.defaultChannel="encryption_v2")),s.publicKey=r,await Ya(i)}if(!e){g.success("Your RSA key has been generated"),g.success(`Private key saved in ${$r}`),g.success("This key will be used to encrypt your bundle before sending it to Capgo"),g.success("Keep it safe"),g.success("Then make it unreadable by Capgo and unmodifiable by anyone"),g.success(`Public key saved in ${i.path}`),g.success("Your app will be the only one having it"),g.success("Only your users can decrypt your update"),g.success("Only you can send them an update");try{await $8(),le("Done \u2705")}catch(s){if(s instanceof Error&&s.message==="Capacitor sync cancelled")return!0;throw s}}return!0}var Co=require("node:fs"),cq=require("node:os");async function lq(t,e,r=!1){if(r||ae("Login to Capgo"),!t&&!r){let o=await w_({message:"Enter your API key:",mask:"*"});if(Ke(o))throw g.error("Login cancelled"),new Error("Login cancelled");t=o}if(!t)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");await Je();let{local:n}=e;if(n){if(!(0,Co.existsSync)(".git"))throw r||g.error("To use local you should be in a git repository"),new Error("Not in a git repository");(0,Co.writeFileSync)(".capgo",`${t}
362
362
  `),(0,Co.appendFileSync)(".gitignore",`.capgo
363
363
  `)}else{let o=(0,cq.homedir)();(0,Co.writeFileSync)(`${o}/.capgo`,`${t}
364
364
  `)}let i=await pe(t,e.supaHost,e.supaAnon),s=await De(i,t,["write","all","upload"]);await _e(t,{channel:"user-login",event:"User CLI login",icon:"\u2705",user_id:s,notify:!1}).catch(),r||(g.success(`login saved into .capgo file in ${n?"local":"home"} directory`),le("Done \u2705"))}async function fq(t,e=!1){e||ae("Adding organization"),await Je();let r={...t,apikey:t.apikey||re()};if(!r.apikey)throw e||g.error("Missing API key, you need to provide an API key to add an organization"),new Error("Missing API key");let n=await pe(r.apikey,r.supaHost,r.supaAnon),i=await De(n,r.apikey,["write","all"]),{name:s,email:o}=r;if(!e&&!s){let c=await Ti({message:"Organization name:",placeholder:"My Organization"});if(Ke(c))throw g.error("Canceled adding organization"),new Error("Organization creation cancelled");s=c}if(!e&&!o){let c=await Ti({message:"Management email:",placeholder:"admin@example.com"});if(Ke(c))throw g.error("Canceled adding organization"),new Error("Organization creation cancelled");o=c}if(!s||!o)throw e||g.error("Missing arguments, you need to provide an organization name and management email"),new Error("Missing organization name or management email");e||g.info(`Adding organization "${s}" to Capgo`);let{data:a,error:u}=await n.from("orgs").insert({name:s,management_email:o,created_by:i}).select().single();if(u)throw e||g.error(`Could not add organization ${W(u)}`),new Error(`Could not add organization: ${W(u)}`);return await _e(r.apikey,{channel:"organization",event:"Organization Created",icon:"\u{1F3E2}",user_id:a.id,tags:{"org-name":s},notify:!1}).catch(()=>{}),e||(g.success(`Organization "${s}" added to Capgo`),le("Done \u2705")),a}async function dq(t,e,r=!1){r||ae("Deleting organization"),await Je();let n={...e,apikey:e.apikey||re()};if(!n.apikey)throw r||g.error("Missing API key, you need to provide an API key to delete an organization"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide an organization ID"),new Error("Missing organization id");let i=await pe(n.apikey,n.supaHost,n.supaAnon),s=await De(i,n.apikey,["write","all"]),{data:o,error:a}=await i.from("orgs").select("created_by, name").eq("id",t).single();if(a||!o)throw r||g.error(`Cannot get organization details ${W(a)}`),new Error(`Cannot get organization details: ${W(a)}`);if(o.created_by!==s){if(r)throw new Error("Deleting an organization is restricted to the organization owner");g.warn("Deleting an organization is restricted to the organization owner"),g.warn("You are not the owner of this organization"),g.warn("It's strongly recommended that you do not continue!");let c=await gn({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(Ke(c)||c==="no")throw g.error("Canceled deleting the organization"),new Error("Organization deletion cancelled")}if(!r&&!n.autoConfirm){let c=await Pr({message:`Are you sure you want to delete organization "${o.name}"? This action cannot be undone.`});if(Ke(c)||!c)throw g.error("Canceled deleting the organization"),new Error("Organization deletion cancelled")}r||g.info(`Deleting organization "${o.name}"`);let{error:u}=await i.from("orgs").delete().eq("id",t);if(u)throw r||g.error(`Could not delete organization ${W(u)}`),new Error(`Could not delete organization: ${W(u)}`);return await _e(n.apikey,{channel:"organization",event:"Organization Deleted",icon:"\u{1F5D1}\uFE0F",user_id:t,tags:{"org-name":o.name},notify:!1}).catch(()=>{}),r||(g.success(`Organization "${o.name}" deleted from Capgo`),le("Done \u2705")),!0}function She(t,e){if(e)return;if(!t.length){g.error("No organizations found");return}let r=new zt;r.headers=["Name","ID","Role","Apps"],r.rows=[];for(let n of t.toReversed())r.rows.push([n.name??"Unknown",n.gid,n.role,n.app_count?.toString()||"0"]);g.success("Organizations"),g.success(r.toString())}async function hq(t,e=!1){e||ae("List organizations"),await Je();let r={...t,apikey:t.apikey||re()};if(!r.apikey)throw e||g.error("Missing API key, you need to provide an API key to list organizations"),new Error("Missing API key");let n=await pe(r.apikey,r.supaHost,r.supaAnon);await De(n,r.apikey,["read","write","all"]),e||g.info("Getting organizations from Capgo");let{error:i,data:s}=await n.rpc("get_orgs_v6");if(i)throw e||g.error(`Cannot get organizations ${W(i)}`),new Error(`Cannot get organizations: ${W(i)}`);let o=s||[];return e||(g.info(`Organizations found: ${o.length}`),She(o,e),le("Done \u2705")),o}async function pq(t,e,r=!1){r||ae("Updating organization"),await Je();let n={...e,apikey:e.apikey||re()};if(!n.apikey)throw r||g.error("Missing API key, you need to provide an API key to update an organization"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide an organization ID"),new Error("Missing organization id");let i=await pe(n.apikey,n.supaHost,n.supaAnon);await De(i,n.apikey,["write","all"]);let{data:s,error:o}=await i.from("orgs").select("name, management_email, created_by").eq("id",t).single();if(o||!s)throw r||g.error(`Cannot get organization details ${W(o)}`),new Error(`Cannot get organization details: ${W(o)}`);let{name:a,email:u}=n;if(!r&&!a){let l=await Ti({message:"New organization name:",placeholder:s.name||"My Organization"});if(Ke(l))throw g.error("Canceled updating organization"),new Error("Organization update cancelled");a=l}if(!r&&!u){let l=await Ti({message:"Management email:",placeholder:s.management_email||"admin@example.com"});if(Ke(l))throw g.error("Canceled updating organization"),new Error("Organization update cancelled");u=l}if(!a||!u)throw r||g.error("Missing arguments, you need to provide an organization name and management email"),new Error("Missing organization name or management email");r||g.info(`Updating organization "${t}"`);let{error:c}=await i.from("orgs").update({name:a,management_email:u}).eq("id",t);if(c)throw r||g.error(`Could not update organization ${W(c)}`),new Error(`Could not update organization: ${W(c)}`);return await _e(n.apikey,{channel:"organization",event:"Organization Updated",icon:"\u270F\uFE0F",user_id:t,tags:{"org-name":a},notify:!1}).catch(()=>{}),r||(g.success("Organization updated"),le("Done \u2705")),{orgId:t,name:a,email:u}}async function mq(t,e=!1){e||ae("Getting user id");let r={...t,apikey:t.apikey||re()};if(!r.apikey)throw e||g.error("Missing API key, you need to provide an API key to fetch the user id"),new Error("Missing API key");try{let n=await pe(r.apikey,r.supaHost,r.supaAnon),i=await De(n,r.apikey,["read","all","write"]);return e||le(`Done \u2705: ${i}`),i}catch(n){throw e||g.error(`Error getting user id ${W(n)}`),n instanceof Error?n:new Error(String(n))}}var st=class{apikey;supaHost;supaAnon;constructor(e){this.apikey=e?.apikey,this.supaHost=e?.supaHost,this.supaAnon=e?.supaAnon}async login(e){try{return await lq(e.apikey,{local:e.local??!1,supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon},!0),{success:!0}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async doctor(e){try{return{success:!0,data:await Z8({packageJson:e?.packageJson},!0)}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async addApp(e){try{let r={apikey:e.apikey||this.apikey||re(!0),supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon,name:e.name,icon:e.icon};return await W8(e.appId,r,void 0,!0),{success:!0}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async updateApp(e){try{let r={apikey:e.apikey||this.apikey||re(!0),supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon,name:e.name,icon:e.icon,retention:e.retention};return await t6(e.appId,r,!0),{success:!0}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async deleteApp(e,r=!1){try{let n={apikey:this.apikey||re(!0),supaHost:this.supaHost,supaAnon:this.supaAnon};return await X8(e,n,!1,r),{success:!0}}catch(n){return{success:!1,error:n instanceof Error?n.message:String(n)}}}async listApps(){try{let e={apikey:this.apikey||re(!0),supaHost:this.supaHost,supaAnon:this.supaAnon};return{success:!0,data:(await Q8(e,!1)).map(i=>({appId:i.app_id,name:i.name||"Unknown",iconUrl:i.icon_url||void 0,createdAt:new Date(i.created_at||"")}))}}catch(e){return{success:!1,error:e instanceof Error?e.message:String(e)}}}async getAccountId(e){try{let r={apikey:e?.apikey||this.apikey||re(!0),supaHost:e?.supaHost||this.supaHost,supaAnon:e?.supaAnon||this.supaAnon};return{success:!0,data:await mq(r,!0)}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async checkBundleCompatibility(e){try{let r={apikey:e.apikey||this.apikey||re(!0),channel:e.channel,text:e.textOutput??!1,packageJson:e.packageJson,nodeModules:e.nodeModules,supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon};return{success:!0,data:(await l6(e.appId,r,!0)).finalCompatibility}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async encryptBundle(e){try{return{success:!0,data:await w6(e.zipPath,e.checksum,{key:e.keyPath,keyData:e.keyData,json:e.json},!0)}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async decryptBundle(e){try{return{success:!0,data:await y6(e.zipPath,e.ivSessionKey,{key:e.keyPath,keyData:e.keyData,checksum:e.checksum},!0)}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async zipBundle(e){try{return{success:!0,data:await ZU(e.appId,{apikey:this.apikey||re(!0),path:e.path,bundle:e.bundle,name:e.name,codeCheck:e.codeCheck,json:e.json,keyV2:e.keyV2,packageJson:e.packageJson},!0)}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async uploadBundle(e){try{let r={apikey:e.apikey||this.apikey||re(!0),supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon,path:e.path,bundle:e.bundle,channel:e.channel,external:e.external,key:e.encrypt!==!1,keyV2:e.encryptionKey,timeout:e.timeout,tus:e.useTus,comment:e.comment,minUpdateVersion:e.minUpdateVersion,autoMinUpdateVersion:e.autoMinUpdateVersion,selfAssign:e.selfAssign,packageJson:e.packageJsonPaths,ignoreMetadataCheck:e.ignoreCompatibilityCheck,codeCheck:!e.disableCodeCheck,zip:e.useZip},n=await Xb(e.appId,r,!0);return{success:n.success,bundleId:n.bundle,checksum:n.checksum??null,encryptionMethod:n.encryptionMethod,sessionKey:n.sessionKey,ivSessionKey:n.ivSessionKey,storageProvider:n.storageProvider,skipped:n.skipped,reason:n.reason}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async listBundles(e){try{let r=this.apikey||re(!0),n=await pe(r,this.supaHost,this.supaAnon);return{success:!0,data:(await im(n,e)).map(o=>({id:o.id.toString(),version:o.name,uploadedAt:new Date(o.created_at||""),size:0,encrypted:o.session_key!==null}))}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async deleteBundle(e,r){try{let n={apikey:this.apikey||re(!0),supaHost:this.supaHost,supaAnon:this.supaAnon,bundle:r};return await D6(r,e,n,!0),{success:!0}}catch(n){return{success:!1,error:n instanceof Error?n.message:String(n)}}}async cleanupBundles(e){try{let r={apikey:e.apikey||this.apikey||re(!0),supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon,bundle:e.bundle||"",version:"",keep:e.keep||4,force:e.force||!1,ignoreChannel:e.ignoreChannel||!1};return{success:!0,data:await c6(e.appId,r,!0)}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async requestBuild(e){try{let r=e.credentials,n={apikey:e.apikey||this.apikey||re(!0),supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon,path:e.path,platform:e.platform,userId:e.userId,buildCertificateBase64:r?.BUILD_CERTIFICATE_BASE64,buildProvisionProfileBase64:r?.BUILD_PROVISION_PROFILE_BASE64,buildProvisionProfileBase64Prod:r?.BUILD_PROVISION_PROFILE_BASE64_PROD,p12Password:r?.P12_PASSWORD,appleKeyId:r?.APPLE_KEY_ID,appleIssuerId:r?.APPLE_ISSUER_ID,appleKeyContent:r?.APPLE_KEY_CONTENT,appStoreConnectTeamId:r?.APP_STORE_CONNECT_TEAM_ID,androidKeystoreFile:r?.ANDROID_KEYSTORE_FILE,keystoreKeyAlias:r?.KEYSTORE_KEY_ALIAS,keystoreKeyPassword:r?.KEYSTORE_KEY_PASSWORD,keystoreStorePassword:r?.KEYSTORE_STORE_PASSWORD,playConfigJson:r?.PLAY_CONFIG_JSON},i=await u6(e.appId,n,!0);return i.success&&i.jobId?{success:!0,data:{jobId:i.jobId,uploadUrl:i.uploadUrl||"",status:i.status||"unknown"}}:{success:!1,error:i.error||"Unknown error during build request"}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async getCurrentBundle(e,r,n){try{let i={apikey:n?.apikey||this.apikey||re(!0),quiet:!0,supaHost:n?.supaHost||this.supaHost,supaAnon:n?.supaAnon||this.supaAnon};return{success:!0,data:await eq(r,e,i,!0)}}catch(i){return{success:!1,error:i instanceof Error?i.message:String(i)}}}async addChannel(e){try{let r={apikey:e.apikey||this.apikey||re(!0),supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon,default:e.default,selfAssign:e.selfAssign};return await QU(e.channelId,e.appId,r,!0),{success:!0}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async updateChannel(e){try{let r={apikey:e.apikey||this.apikey||re(!0),supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon,bundle:e.bundle??void 0,state:e.state,downgrade:e.downgrade,ios:e.ios,android:e.android,selfAssign:e.selfAssign,disableAutoUpdate:e.disableAutoUpdate??void 0,dev:e.dev,emulator:e.emulator,device:e.device,prod:e.prod,latest:!1,latestRemote:!1,packageJson:void 0,ignoreMetadataCheck:!1};return await iq(e.channelId,e.appId,r,!0),{success:!0}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async deleteChannel(e,r,n=!1){try{let i={apikey:this.apikey||re(!0),supaHost:this.supaHost,supaAnon:this.supaAnon,deleteBundle:n,successIfNotFound:!1};return await tq(e,r,i,!0),{success:!0}}catch(i){return{success:!1,error:i instanceof Error?i.message:String(i)}}}async listChannels(e){try{let r={apikey:this.apikey||re(!0),supaHost:this.supaHost,supaAnon:this.supaAnon};return{success:!0,data:await rq(e,r,!0)}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async generateEncryptionKeys(e){try{return await uq({force:e?.force,setupChannel:e?.setupChannel},!0),{success:!0}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async saveEncryptionKey(e){try{return await oq({key:e?.keyPath,keyData:e?.keyData,setupChannel:e?.setupChannel},!0),{success:!0}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async deleteLegacyEncryptionKey(e){try{return{success:!0,data:{deleted:await aq({force:e?.force,setupChannel:e?.setupChannel},!0)}}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async listOrganizations(e){try{let r={apikey:e?.apikey||this.apikey||re(!0),supaHost:e?.supaHost||this.supaHost,supaAnon:e?.supaAnon||this.supaAnon};return{success:!0,data:(await hq(r,!0)).map(s=>({id:String(s.id??s.gid??""),name:s.name??"Unknown",role:s.role??void 0,appCount:typeof s.app_count=="number"?s.app_count:void 0,email:s.management_email??void 0,createdAt:s.created_at?new Date(s.created_at):void 0}))}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async addOrganization(e){try{let r={apikey:e.apikey||this.apikey||re(!0),supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon,name:e.name,email:e.email},n=await fq(r,!0);return{success:!0,data:{id:String(n.id??n.gid??""),name:n.name??e.name,role:"owner",appCount:0,email:n.management_email??e.email,createdAt:n.created_at?new Date(n.created_at):void 0}}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async updateOrganization(e){try{let r={apikey:e.apikey||this.apikey||re(!0),supaHost:e.supaHost||this.supaHost,supaAnon:e.supaAnon||this.supaAnon,name:e.name,email:e.email},n=await pq(e.orgId,r,!0);return{success:!0,data:{id:n.orgId,name:n.name,email:n.email}}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async deleteOrganization(e,r){try{let n={apikey:r?.apikey||this.apikey||re(!0),supaHost:r?.supaHost||this.supaHost,supaAnon:r?.supaAnon||this.supaAnon,autoConfirm:r?.autoConfirm??!0};return{success:!0,data:{deleted:await dq(e,n,!0)}}}catch(n){return{success:!1,error:n instanceof Error?n.message:String(n)}}}async getStats(e){try{let r=e.apikey||this.apikey||re(!0),n=await Sn(),i={appId:e.appId,devicesId:e.deviceIds,search:e.search,order:e.order,rangeStart:e.after||e.rangeStart,rangeEnd:e.rangeEnd,limit:e.limit},s=await fetch(`${n.hostApi}/private/stats`,{method:"POST",headers:{"Content-Type":"application/json",capgkey:r},body:JSON.stringify(i)});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return{success:!0,data:(await s.json()).map(u=>({appId:u.app_id,deviceId:u.device_id,action:u.action,versionId:u.version_id,version:u.version,createdAt:u.created_at}))}}catch(r){return{success:!1,error:r instanceof Error?r.message:String(r)}}}async setAppSetting(e,r){try{return await r6(e,{apikey:r.apikey||this.apikey||re(!0),bool:r.bool,string:r.string},!0),{success:!0}}catch(n){return{success:!1,error:n instanceof Error?n.message:String(n)}}}};async function Ahe(t){return new st({apikey:t.apikey,supaHost:t.supaHost,supaAnon:t.supaAnon}).uploadBundle(t)}async function Ohe(t){return new st({supaHost:t.supaHost,supaAnon:t.supaAnon}).login(t)}async function xhe(t){return new st().doctor(t)}async function The(t){return new st({apikey:t.apikey,supaHost:t.supaHost,supaAnon:t.supaAnon}).checkBundleCompatibility(t)}async function Ihe(t){return new st().encryptBundle(t)}async function Phe(t){return new st().decryptBundle(t)}async function Fhe(t){return new st().zipBundle(t)}async function Rhe(t){return new st().generateEncryptionKeys(t)}async function khe(t){return new st().saveEncryptionKey(t)}async function Nhe(t){return new st().deleteLegacyEncryptionKey(t)}async function $he(t,e,r){return new st({apikey:r?.apikey,supaHost:r?.supaHost,supaAnon:r?.supaAnon}).getCurrentBundle(t,e,r)}async function Lhe(t,e){return new st({apikey:e.apikey}).setAppSetting(t,e)}async function Bhe(t){return new st({apikey:t?.apikey,supaHost:t?.supaHost,supaAnon:t?.supaAnon}).getAccountId(t)}async function jhe(t){return new st({apikey:t?.apikey,supaHost:t?.supaHost,supaAnon:t?.supaAnon}).listOrganizations(t)}async function Mhe(t){return new st({apikey:t.apikey,supaHost:t.supaHost,supaAnon:t.supaAnon}).addOrganization(t)}async function Uhe(t){return new st({apikey:t.apikey,supaHost:t.supaHost,supaAnon:t.supaAnon}).updateOrganization(t)}async function qhe(t,e){return new st({apikey:e?.apikey,supaHost:e?.supaHost,supaAnon:e?.supaAnon}).deleteOrganization(t,e)}async function Hhe(t){return new st({apikey:t.apikey,supaHost:t.supaHost,supaAnon:t.supaAnon}).addApp(t)}async function Vhe(t,e){return new st(e).listBundles(t)}async function zhe(t){return new st({apikey:t.apikey,supaHost:t.supaHost,supaAnon:t.supaAnon}).addChannel(t)}async function Khe(t){return new st({apikey:t.apikey,supaHost:t.supaHost,supaAnon:t.supaAnon}).requestBuild(t)}async function Ghe(t){return new st({apikey:t.apikey,supaHost:t.supaHost,supaAnon:t.supaAnon}).getStats(t)}async function Whe(){try{return await he()}catch{return null}}0&&(module.exports={CapgoSDK,addApp,addChannel,addOrganization,checkBundleCompatibility,createSupabaseClient,decryptBundle,deleteLegacyEncryptionKey,deleteOrganization,doctor,encryptBundle,generateEncryptionKeys,getAccountId,getCapacitorConfig,getCurrentBundle,getStats,listBundles,listOrganizations,login,requestBuild,saveEncryptionKey,updateAppSetting,updateOrganization,uploadBundle,zipBundle});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
- "version": "7.58.0",
3
+ "version": "7.58.1",
4
4
  "description": "A CLI to upload to capgo servers",
5
5
  "author": "Martin martin@capgo.app",
6
6
  "license": "Apache 2.0",