@capgo/cli 7.51.0 → 7.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -104,7 +104,7 @@ const config: CapacitorConfig = ${(0,i5.formatJSObject)(t)};
104
104
  export default config;
105
105
  `}});function C5(){try{return ug.default.statSync("/.dockerenv"),!0}catch{return!1}}function E5(){try{return ug.default.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function cg(){return sg===void 0&&(sg=C5()||E5()),sg}var ug,sg,jx=Ze(()=>{ug=fe(require("node:fs"),1)});function ea(){return lg===void 0&&(lg=_5()||cg()),lg}var Ux,lg,_5,fg=Ze(()=>{Ux=fe(require("node:fs"),1);jx();_5=()=>{try{return Ux.default.statSync("/run/.containerenv"),!0}catch{return!1}}});var dg,qx,Hx,Mx,ln,pg=Ze(()=>{dg=fe(require("node:process"),1),qx=fe(require("node:os"),1),Hx=fe(require("node:fs"),1);fg();Mx=()=>{if(dg.default.platform!=="linux")return!1;if(qx.default.release().toLowerCase().includes("microsoft"))return!ea();try{return Hx.default.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!ea():!1}catch{return!1}},ln=dg.default.env.__IS_WSL_TEST__?Mx:Mx()});var hg,Vx,zx,Kx,S5,mg,tr,gg=Ze(()=>{hg=fe(require("node:process"),1),Vx=require("node:buffer"),zx=require("node:util"),Kx=fe(require("node:child_process"),1),S5=(0,zx.promisify)(Kx.default.execFile),mg=()=>`${hg.default.env.SYSTEMROOT||hg.default.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,tr=async(t,e={})=>{let{powerShellPath:r,...n}=e,o=tr.encodeCommand(t);return S5(r??mg(),[...tr.argumentsPrefix,o],{encoding:"utf8",...n})};tr.argumentsPrefix=["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"];tr.encodeCommand=t=>Vx.Buffer.from(t,"utf16le").toString("base64");tr.escapeArgument=t=>`'${String(t).replaceAll("'","''")}'`});var Wx,Yx,Po,x5,A5,O5,Tl,Gx,Jx,Xx,Zx,Qx=Ze(()=>{Wx=require("node:util"),Yx=fe(require("node:child_process"),1),Po=fe(require("node:fs/promises"),1);pg();gg();pg();x5=(0,Wx.promisify)(Yx.default.execFile),A5=(()=>{let t="/mnt/",e;return async function(){if(e)return e;let r="/etc/wsl.conf",n=!1;try{await Po.default.access(r,Po.constants.F_OK),n=!0}catch{}if(!n)return t;let o=await Po.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}})(),O5=async()=>`${await A5()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,Tl=ln?O5:mg,Jx=async()=>(Gx??=(async()=>{try{let t=await Tl();return await Po.default.access(t,Po.constants.X_OK),!0}catch{return!1}})(),Gx),Xx=async()=>{let t=await Tl(),e=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:r}=await tr(e,{powerShellPath:t});return r.trim()},Zx=async t=>{if(/^[a-z]+:\/\//i.test(t))return t;try{let{stdout:e}=await x5("wslpath",["-aw",t],{encoding:"utf8"});return e.trim()}catch{return t}}});function $o(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 eA=Ze(()=>{});async function yg(){if(rA.default.platform!=="darwin")throw new Error("macOS only");let{stdout:t}=await F5("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 tA,rA,nA,F5,oA=Ze(()=>{tA=require("node:util"),rA=fe(require("node:process"),1),nA=require("node:child_process"),F5=(0,tA.promisify)(nA.execFile)});async function sA(t,{humanReadableOutput:e=!0,signal:r}={}){if(iA.default.platform!=="darwin")throw new Error("macOS only");let n=e?[]:["-ss"],o={};r&&(o.signal=r);let{stdout:i}=await k5("osascript",["-e",t,n],o);return i.trim()}var iA,aA,Dg,k5,uA=Ze(()=>{iA=fe(require("node:process"),1),aA=require("node:util"),Dg=require("node:child_process"),k5=(0,aA.promisify)(Dg.execFile)});async function bg(t){return sA(`tell application "Finder" to set app_path to application file id "${t}" as string
106
106
  tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var cA=Ze(()=>{uA()});async function vg(t=P5){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 Rl(`Cannot find Windows browser in stdout: ${JSON.stringify(e)}`);let{id:n}=r.groups,o=dA[n];if(!o)throw new Rl(`Unknown browser ID: ${n}`);return o}var lA,fA,P5,dA,wg,Rl,Cg=Ze(()=>{lA=require("node:util"),fA=require("node:child_process"),P5=(0,lA.promisify)(fA.execFile),dA={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"}},wg=new Map(Object.entries(dA)),Rl=class extends Error{}});async function Eg(){if(Bl.default.platform==="darwin"){let t=await yg();return{name:await bg(t),id:t}}if(Bl.default.platform==="linux"){let{stdout:t}=await $5("xdg-mime",["query","default","x-scheme-handler/http"]),e=t.trim();return{name:I5(e.replace(/.desktop$/,"").replace("-"," ")),id:e}}if(Bl.default.platform==="win32")return vg();throw new Error("Only macOS, Linux, and Windows are supported")}var pA,Bl,hA,$5,I5,mA=Ze(()=>{pA=require("node:util"),Bl=fe(require("node:process"),1),hA=require("node:child_process");oA();cA();Cg();Cg();$5=(0,pA.promisify)(hA.execFile),I5=t=>t.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase())});var Nl,T5,gA,yA=Ze(()=>{Nl=fe(require("node:process"),1),T5=!!(Nl.default.env.SSH_CONNECTION||Nl.default.env.SSH_CLIENT||Nl.default.env.SSH_TTY),gA=T5});var Ag={};Jr(Ag,{apps:()=>Io,default:()=>N5,openApp:()=>B5});function vA(t){if(typeof t=="string"||Array.isArray(t))return t;let{[bA]:e}=t;if(!e)throw new Error(`${bA} is not supported`);return e}function ks({[ta]:t},{wsl:e}={}){if(e&&ln)return vA(e);if(!t)throw new Error(`${ta} is not supported`);return vA(t)}var Sg,xg,EA,_A,jl,CA,Ll,_g,DA,ta,bA,wA,Fs,R5,B5,Io,N5,Og=Ze(()=>{Sg=fe(require("node:process"),1),xg=fe(require("node:path"),1),EA=require("node:url"),_A=fe(require("node:child_process"),1),jl=fe(require("node:fs/promises"),1);Qx();gg();eA();mA();fg();yA();CA={},Ll=Symbol("fallbackAttempt"),_g=CA.url?xg.default.dirname((0,EA.fileURLToPath)(CA.url)):"",DA=xg.default.join(_g,"xdg-open"),{platform:ta,arch:bA}=Sg.default,wA=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")},Fs=async t=>{t={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...t};let e=t[Ll]===!0;if(delete t[Ll],Array.isArray(t.app))return wA(t.app,c=>Fs({...t,app:c,[Ll]:!0}));let{name:r,arguments:n=[]}=t.app??{};if(n=[...n],Array.isArray(r))return wA(r,c=>Fs({...t,app:{name:c,arguments:n},[Ll]:!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(ln){let p=await Xx();d=wg.get(p)??{}}else d=await Eg();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 Fs({...t,app:{name:Io[p],arguments:n}})}throw new Error(`${d.name} is not supported as a default browser`)}let o,i=[],a={},s=!1;if(ln&&!ea()&&!gA&&!r&&(s=await Jx()),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 Tl(),i.push(...tr.argumentsPrefix),ln||(a.windowsVerbatimArguments=!0),ln&&t.target&&(t.target=await Zx(t.target));let c=["$ProgressPreference = 'SilentlyContinue';","Start"];t.wait&&c.push("-Wait"),r?(c.push(tr.escapeArgument(r)),t.target&&n.push(t.target)):t.target&&c.push(tr.escapeArgument(t.target)),n.length>0&&(n=n.map(f=>tr.escapeArgument(f)),c.push("-ArgumentList",n.join(","))),t.target=tr.encodeCommand(c.join(" ")),t.wait||(a.stdio="ignore")}else{if(r)o=r;else{let c=!_g||_g==="/",f=!1;try{await jl.default.access(DA,jl.constants.X_OK),f=!0}catch{}o=Sg.default.versions.electron??(ta==="android"||c||!f)?"xdg-open":DA}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)})}))},R5=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a `target`");return Fs({...e,target:t})},B5=(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 Fs({...e,app:{name:t,arguments:r}})};Io={browser:"browser",browserPrivate:"browserPrivate"};$o(Io,"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"]}}));$o(Io,"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"]}}));$o(Io,"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"}));$o(Io,"edge",()=>ks({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));$o(Io,"safari",()=>ks({darwin:"Safari"}));N5=R5});var pf=x(vr=>{"use strict";vr.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;vr.find=(t,e)=>t.nodes.find(r=>r.type===e);vr.exceedsLimit=(t,e,r=1,n)=>n===!1||!vr.isInteger(t)||!vr.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=n;vr.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)};vr.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;vr.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;vr.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;vr.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);vr.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 hf=x((cX,oO)=>{"use strict";var nO=pf();oO.exports=(t,e={})=>{let r=(n,o={})=>{let i=e.escapeInvalid&&nO.isInvalidBrace(o),a=n.invalid===!0&&e.escapeInvalid===!0,s="";if(n.value)return(i||a)&&nO.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 aO=x((lX,iO)=>{"use strict";iO.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var mO=x((fX,hO)=>{"use strict";var sO=aO(),Ho=(t,e,r)=>{if(sO(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(sO(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(Ho.cache.hasOwnProperty(u))return Ho.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=pO(t)||pO(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=uO(y,Math.abs(c),p,n),c=p.a=0}return f>=0&&(h=uO(c,f,p,n)),p.negatives=m,p.positives=h,p.result=PM(m,h,n),n.capture===!0?p.result=`(${p.result})`:n.wrap!==!1&&h.length+m.length>1&&(p.result=`(?:${p.result})`),Ho.cache[u]=p,p.result};function PM(t,e,r){let n=Zg(t,e,"-",!1,r)||[],o=Zg(e,t,"",!1,r)||[],i=Zg(t,e,"-?",!0,r)||[];return n.concat(i).concat(o).join("|")}function $M(t,e){let r=1,n=1,o=lO(t,r),i=new Set([e]);for(;t<=o&&o<=e;)i.add(o),r+=1,o=lO(t,r);for(o=fO(e+1,n)-1;t<o&&o<=e;)i.add(o),n+=1,o=fO(e+1,n)-1;return i=[...i],i.sort(RM),i}function IM(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let n=TM(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+=BM(u,c,r):a++}return a&&(i+=r.shorthand===!0?"\\d":"[0-9]"),{pattern:i,count:[a],digits:o}}function uO(t,e,r,n){let o=$M(t,e),i=[],a=t,s;for(let u=0;u<o.length;u++){let c=o[u],f=IM(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+dO(s.count),a=c+1;continue}r.isPadded&&(d=NM(c,r,n)),f.string=d+f.pattern+dO(f.count),i.push(f),a=c+1,s=f}return i}function Zg(t,e,r,n,o){let i=[];for(let a of t){let{string:s}=a;!n&&!cO(e,"string",s)&&i.push(r+s),n&&cO(e,"string",s)&&i.push(r+s)}return i}function TM(t,e){let r=[];for(let n=0;n<t.length;n++)r.push([t[n],e[n]]);return r}function RM(t,e){return t>e?1:e>t?-1:0}function cO(t,e,r){return t.some(n=>n[e]===r)}function lO(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function fO(t,e){return t-t%Math.pow(10,e)}function dO(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function BM(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function pO(t){return/^-?(0+)\d/.test(t)}function NM(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}}`}}Ho.cache={};Ho.clearCache=()=>Ho.cache={};hO.exports=Ho});var ty=x((dX,CO)=>{"use strict";var LM=require("util"),yO=mO(),gO=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),jM=t=>e=>t===!0?Number(e):String(e),Qg=t=>typeof t=="number"||typeof t=="string"&&t!=="",Vs=t=>Number.isInteger(+t),ey=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},UM=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,MM=(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},gf=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length<e;)t="0"+t;return r?"-"+t:t},qM=(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=>gf(String(s),r)).join("|")),t.negatives.length&&(i=`-(${n}${t.negatives.map(s=>gf(String(s),r)).join("|")})`),o&&i?a=`${o}|${i}`:a=o||i,e.wrap?`(${n}${a})`:a},DO=(t,e,r,n)=>{if(r)return yO(t,e,{wrap:!1,...n});let o=String.fromCharCode(t);if(t===e)return o;let i=String.fromCharCode(e);return`[${o}-${i}]`},bO=(t,e,r)=>{if(Array.isArray(t)){let n=r.wrap===!0,o=r.capture?"":"?:";return n?`(${o}${t.join("|")})`:t.join("|")}return yO(t,e,r)},wO=(...t)=>new RangeError("Invalid range arguments: "+LM.inspect(...t)),vO=(t,e,r)=>{if(r.strictRanges===!0)throw wO([t,e]);return[]},HM=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},VM=(t,e,r=1,n={})=>{let o=Number(t),i=Number(e);if(!Number.isInteger(o)||!Number.isInteger(i)){if(n.strictRanges===!0)throw wO([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=ey(s)||ey(u)||ey(c),d=f?Math.max(s.length,u.length,c.length):0,p=f===!1&&UM(t,e,n)===!1,h=n.transform||jM(p);if(n.toRegex&&r===1)return DO(gf(t,d),gf(e,d),!0,n);let m={negatives:[],positives:[]},y=E=>m[E<0?"negatives":"positives"].push(Math.abs(E)),D=[],v=0;for(;a?o>=i:o<=i;)n.toRegex===!0&&r>1?y(o):D.push(MM(h(o,v),d,p)),o=a?o-r:o+r,v++;return n.toRegex===!0?r>1?qM(m,n,d):bO(D,null,{wrap:!1,...n}):D},zM=(t,e,r=1,n={})=>{if(!Vs(t)&&t.length>1||!Vs(e)&&e.length>1)return vO(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 DO(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?bO(f,null,{wrap:!1,options:n}):f},mf=(t,e,r,n={})=>{if(e==null&&Qg(t))return[t];if(!Qg(t)||!Qg(e))return vO(t,e,n);if(typeof r=="function")return mf(t,e,1,{transform:r});if(gO(r))return mf(t,e,0,r);let o={...n};return o.capture===!0&&(o.wrap=!0),r=r||o.step||1,Vs(r)?Vs(t)&&Vs(e)?VM(t,e,r,o):zM(t,e,Math.max(Math.abs(r),1),o):r!=null&&!gO(r)?HM(r,o):mf(t,e,1,r)};CO.exports=mf});var SO=x((pX,_O)=>{"use strict";var KM=ty(),EO=pf(),GM=(t,e={})=>{let r=(n,o={})=>{let i=EO.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=EO.reduce(n.nodes),d=KM(...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)};_O.exports=GM});var OO=x((hX,AO)=>{"use strict";var WM=ty(),xO=hf(),ga=pf(),Vo=(t="",e="",r=!1)=>{let n=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ga.flatten(e).map(o=>`{${o}}`):e;for(let o of t)if(Array.isArray(o))for(let i of o)n.push(Vo(i,e,r));else for(let i of e)r===!0&&typeof i=="string"&&(i=`{${i}}`),n.push(Array.isArray(i)?Vo(o,i,r):o+i);return ga.flatten(n)},YM=(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(Vo(s.pop(),xO(o,e)));return}if(o.type==="brace"&&o.invalid!==!0&&o.nodes.length===2){s.push(Vo(s.pop(),["{}"]));return}if(o.nodes&&o.ranges>0){let d=ga.reduce(o.nodes);if(ga.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=WM(...d,e);p.length===0&&(p=xO(o,e)),s.push(Vo(s.pop(),p)),o.nodes=[];return}let u=ga.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(Vo(s.pop(),c,u));continue}if(p.value&&p.type!=="open"){c.push(Vo(c.pop(),p.value));continue}p.nodes&&n(p,o)}return c};return ga.flatten(n(t))};AO.exports=YM});var kO=x((mX,FO)=>{"use strict";FO.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:`
107
- `,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 RO=x((gX,TO)=>{"use strict";var JM=hf(),{MAX_LENGTH:PO,CHAR_BACKSLASH:ry,CHAR_BACKTICK:XM,CHAR_COMMA:ZM,CHAR_DOT:QM,CHAR_LEFT_PARENTHESES:e9,CHAR_RIGHT_PARENTHESES:t9,CHAR_LEFT_CURLY_BRACE:r9,CHAR_RIGHT_CURLY_BRACE:n9,CHAR_LEFT_SQUARE_BRACKET:$O,CHAR_RIGHT_SQUARE_BRACKET:IO,CHAR_DOUBLE_QUOTE:o9,CHAR_SINGLE_QUOTE:i9,CHAR_NO_BREAK_SPACE:a9,CHAR_ZERO_WIDTH_NOBREAK_SPACE:s9}=kO(),u9=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(PO,r.maxLength):PO;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===s9||p===a9)){if(p===ry){m({type:"text",value:(e.keepEscaping?p:"")+h()});continue}if(p===IO){m({type:"text",value:"\\"+p});continue}if(p===$O){u++;let y;for(;f<c&&(y=h());){if(p+=y,y===$O){u++;continue}if(y===ry){p+=h();continue}if(y===IO&&(u--,u===0))break}m({type:"text",value:p});continue}if(p===e9){a=m({type:"paren",nodes:[]}),i.push(a),m({type:"text",value:p});continue}if(p===t9){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===o9||p===i9||p===XM){let y=p,D;for(e.keepQuotes!==!0&&(p="");f<c&&(D=h());){if(D===ry){p+=D+h();continue}if(D===y){e.keepQuotes===!0&&(p+=D);break}p+=D}m({type:"text",value:p});continue}if(p===r9){d++;let D={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(D),i.push(a),m({type:"open",value:p});continue}if(p===n9){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===ZM&&d>0){if(a.ranges>0){a.ranges=0;let y=a.nodes.shift();a.nodes=[y,{type:"text",value:JM(a)}]}m({type:"comma",value:p}),a.commas++;continue}if(p===QM&&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 D=y[y.length-1];D.value+=s.value+p,s=D,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],D=y.nodes.indexOf(a);y.nodes.splice(D,1,...a.nodes)}while(i.length>0);return m({type:"eos"}),o};TO.exports=u9});var LO=x((yX,NO)=>{"use strict";var BO=hf(),c9=SO(),l9=OO(),f9=RO(),ir=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let o=ir.create(n,e);Array.isArray(o)?r.push(...o):r.push(o)}else r=[].concat(ir.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};ir.parse=(t,e={})=>f9(t,e);ir.stringify=(t,e={})=>BO(typeof t=="string"?ir.parse(t,e):t,e);ir.compile=(t,e={})=>(typeof t=="string"&&(t=ir.parse(t,e)),c9(t,e));ir.expand=(t,e={})=>{typeof t=="string"&&(t=ir.parse(t,e));let r=l9(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};ir.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?ir.compile(t,e):ir.expand(t,e);NO.exports=ir});var zs=x((DX,HO)=>{"use strict";var d9=require("path"),Kr="\\\\/",jO=`[^${Kr}]`,Dn="\\.",p9="\\+",h9="\\?",yf="\\/",m9="(?=.)",UO="[^/]",ny=`(?:${yf}|$)`,MO=`(?:^|${yf})`,oy=`${Dn}{1,2}${ny}`,g9=`(?!${Dn})`,y9=`(?!${MO}${oy})`,D9=`(?!${Dn}{0,1}${ny})`,b9=`(?!${oy})`,w9=`[^.${yf}]`,v9=`${UO}*?`,qO={DOT_LITERAL:Dn,PLUS_LITERAL:p9,QMARK_LITERAL:h9,SLASH_LITERAL:yf,ONE_CHAR:m9,QMARK:UO,END_ANCHOR:ny,DOTS_SLASH:oy,NO_DOT:g9,NO_DOTS:y9,NO_DOT_SLASH:D9,NO_DOTS_SLASH:b9,QMARK_NO_DOT:w9,STAR:v9,START_ANCHOR:MO},C9={...qO,SLASH_LITERAL:`[${Kr}]`,QMARK:jO,STAR:`${jO}*?`,DOTS_SLASH:`${Dn}{1,2}(?:[${Kr}]|$)`,NO_DOT:`(?!${Dn})`,NO_DOTS:`(?!(?:^|[${Kr}])${Dn}{1,2}(?:[${Kr}]|$))`,NO_DOT_SLASH:`(?!${Dn}{0,1}(?:[${Kr}]|$))`,NO_DOTS_SLASH:`(?!${Dn}{1,2}(?:[${Kr}]|$))`,QMARK_NO_DOT:`[^.${Kr}]`,START_ANCHOR:`(?:^|[${Kr}])`,END_ANCHOR:`(?:[${Kr}]|$)`},E9={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"};HO.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:E9,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:d9.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?C9:qO}}});var Ks=x(Jt=>{"use strict";var _9=require("path"),S9=process.platform==="win32",{REGEX_BACKSLASH:x9,REGEX_REMOVE_BACKSLASH:A9,REGEX_SPECIAL_CHARS:O9,REGEX_SPECIAL_CHARS_GLOBAL:F9}=zs();Jt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Jt.hasRegexChars=t=>O9.test(t);Jt.isRegexChar=t=>t.length===1&&Jt.hasRegexChars(t);Jt.escapeRegex=t=>t.replace(F9,"\\$1");Jt.toPosixSlashes=t=>t.replace(x9,"/");Jt.removeBackslashes=t=>t.replace(A9,e=>e==="\\"?"":e);Jt.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Jt.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:S9===!0||_9.sep==="\\";Jt.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?Jt.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};Jt.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Jt.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",o=r.contains?"":"$",i=`${n}(?:${t})${o}`;return e.negated===!0&&(i=`(?:^(?!${i}).*$)`),i}});var XO=x((wX,JO)=>{"use strict";var VO=Ks(),{CHAR_ASTERISK:iy,CHAR_AT:k9,CHAR_BACKWARD_SLASH:Gs,CHAR_COMMA:P9,CHAR_DOT:ay,CHAR_EXCLAMATION_MARK:sy,CHAR_FORWARD_SLASH:YO,CHAR_LEFT_CURLY_BRACE:uy,CHAR_LEFT_PARENTHESES:cy,CHAR_LEFT_SQUARE_BRACKET:$9,CHAR_PLUS:I9,CHAR_QUESTION_MARK:zO,CHAR_RIGHT_CURLY_BRACE:T9,CHAR_RIGHT_PARENTHESES:KO,CHAR_RIGHT_SQUARE_BRACKET:R9}=zs(),GO=t=>t===YO||t===Gs,WO=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},B9=(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,D=!1,v=!1,E=!1,g=!1,_=!1,S=!1,P=0,F,B,T={value:"",depth:0,isGlob:!1},j=()=>c>=n,A=()=>u.charCodeAt(c+1),M=()=>(F=B,u.charCodeAt(++c));for(;c<n;){B=M();let w;if(B===Gs){E=T.backslashes=!0,B=M(),B===uy&&(v=!0);continue}if(v===!0||B===uy){for(P++;j()!==!0&&(B=M());){if(B===Gs){E=T.backslashes=!0,M();continue}if(B===uy){P++;continue}if(v!==!0&&B===ay&&(B=M())===ay){if(p=T.isBrace=!0,m=T.isGlob=!0,S=!0,o===!0)continue;break}if(v!==!0&&B===P9){if(p=T.isBrace=!0,m=T.isGlob=!0,S=!0,o===!0)continue;break}if(B===T9&&(P--,P===0)){v=!1,p=T.isBrace=!0,S=!0;break}}if(o===!0)continue;break}if(B===YO){if(i.push(c),a.push(T),T={value:"",depth:0,isGlob:!1},S===!0)continue;if(F===ay&&c===f+1){f+=2;continue}d=c+1;continue}if(r.noext!==!0&&(B===I9||B===k9||B===iy||B===zO||B===sy)===!0&&A()===cy){if(m=T.isGlob=!0,y=T.isExtglob=!0,S=!0,B===sy&&c===f&&(_=!0),o===!0){for(;j()!==!0&&(B=M());){if(B===Gs){E=T.backslashes=!0,B=M();continue}if(B===KO){m=T.isGlob=!0,S=!0;break}}continue}break}if(B===iy){if(F===iy&&(D=T.isGlobstar=!0),m=T.isGlob=!0,S=!0,o===!0)continue;break}if(B===zO){if(m=T.isGlob=!0,S=!0,o===!0)continue;break}if(B===$9){for(;j()!==!0&&(w=M());){if(w===Gs){E=T.backslashes=!0,M();continue}if(w===R9){h=T.isBracket=!0,m=T.isGlob=!0,S=!0;break}}if(o===!0)continue;break}if(r.nonegate!==!0&&B===sy&&c===f){g=T.negated=!0,f++;continue}if(r.noparen!==!0&&B===cy){if(m=T.isGlob=!0,o===!0){for(;j()!==!0&&(B=M());){if(B===cy){E=T.backslashes=!0,B=M();continue}if(B===KO){S=!0;break}}continue}break}if(m===!0){if(S=!0,o===!0)continue;break}}r.noext===!0&&(y=!1,m=!1);let L=u,Z="",k="";f>0&&(Z=u.slice(0,f),u=u.slice(f),d-=f),L&&m===!0&&d>0?(L=u.slice(0,d),k=u.slice(d)):m===!0?(L="",k=u):L=u,L&&L!==""&&L!=="/"&&L!==u&&GO(L.charCodeAt(L.length-1))&&(L=L.slice(0,-1)),r.unescape===!0&&(k&&(k=VO.removeBackslashes(k)),L&&E===!0&&(L=VO.removeBackslashes(L)));let b={prefix:Z,input:t,start:f,base:L,glob:k,isBrace:p,isBracket:h,isGlob:m,isExtglob:y,isGlobstar:D,negated:g,negatedExtglob:_};if(r.tokens===!0&&(b.maxDepth=0,GO(B)||a.push(T),b.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=$,WO(a[C]),b.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,WO(a[a.length-1]),b.maxDepth+=a[a.length-1].depth)}b.slashes=i,b.parts=s}return b};JO.exports=B9});var eF=x((vX,QO)=>{"use strict";var Df=zs(),ar=Ks(),{MAX_LENGTH:bf,POSIX_REGEX_SOURCE:N9,REGEX_NON_SPECIAL_CHARS:L9,REGEX_SPECIAL_CHARS_BACKREF:j9,REPLACEMENTS:ZO}=Df,U9=(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=>ar.escapeRegex(o)).join("..")}return r},ya=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,ly=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=ZO[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(bf,r.maxLength):bf,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=ar.isWindows(e),c=Df.globChars(u),f=Df.extglobChars(c),{DOT_LITERAL:d,PLUS_LITERAL:p,SLASH_LITERAL:h,ONE_CHAR:m,DOTS_SLASH:y,NO_DOT:D,NO_DOT_SLASH:v,NO_DOTS_SLASH:E,QMARK:g,QMARK_NO_DOT:_,STAR:S,START_ANCHOR:P}=c,F=z=>`(${s}(?:(?!${P}${z.dot?y:d}).)*?)`,B=r.dot?"":D,T=r.dot?g:_,j=r.bash===!0?F(r):S;r.capture&&(j=`(${j})`),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=ar.removePrefix(t,A),o=t.length;let M=[],L=[],Z=[],k=i,b,w=()=>A.index===o-1,C=A.peek=(z=1)=>t[A.index+z],O=A.advance=()=>t[++A.index]||"",R=()=>t.slice(A.index+1),$=(z="",Se=0)=>{A.consumed+=z,A.index+=Se},H=z=>{A.output+=z.output!=null?z.output:z.value,$(z.value)},I=()=>{let z=1;for(;C()==="!"&&(C(2)!=="("||C(3)==="?");)O(),A.start++,z++;return z%2===0?!1:(A.negated=!0,A.start++,!0)},N=z=>{A[z]++,Z.push(z)},X=z=>{A[z]--,Z.pop()},U=z=>{if(k.type==="globstar"){let Se=A.braces>0&&(z.type==="comma"||z.type==="brace"),V=z.extglob===!0||M.length&&(z.type==="pipe"||z.type==="paren");z.type!=="slash"&&z.type!=="paren"&&!Se&&!V&&(A.output=A.output.slice(0,-k.output.length),k.type="star",k.value="*",k.output=j,A.output+=k.output)}if(M.length&&z.type!=="paren"&&(M[M.length-1].inner+=z.value),(z.value||z.output)&&H(z),k&&k.type==="text"&&z.type==="text"){k.value+=z.value,k.output=(k.output||"")+z.value;return}z.prev=k,a.push(z),k=z},oe=(z,Se)=>{let V={...f[Se],conditions:1,inner:""};V.prev=k,V.parens=A.parens,V.output=A.output;let de=(r.capture?"(":"")+V.open;N("parens"),U({type:z,value:Se,output:A.output?"":m}),U({type:"paren",extglob:!0,value:O(),output:de}),M.push(V)},Xt=z=>{let Se=z.close+(r.capture?")":""),V;if(z.type==="negate"){let de=j;if(z.inner&&z.inner.length>1&&z.inner.includes("/")&&(de=F(r)),(de!==j||w()||/^\)+$/.test(R()))&&(Se=z.close=`)$))${de}`),z.inner.includes("*")&&(V=R())&&/^\.[^\\/.]+$/.test(V)){let qe=ly(V,{...e,fastpaths:!1}).output;Se=z.close=`)${qe})${de})`}z.prev.type==="bos"&&(A.negatedExtglob=!0)}U({type:"paren",extglob:!0,value:b,output:Se}),X("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let z=!1,Se=t.replace(j9,(V,de,qe,At,nt,kf)=>At==="\\"?(z=!0,V):At==="?"?de?de+At+(nt?g.repeat(nt.length):""):kf===0?T+(nt?g.repeat(nt.length):""):g.repeat(qe.length):At==="."?d.repeat(qe.length):At==="*"?de?de+At+(nt?j:""):j:de?V:`\\${V}`);return z===!0&&(r.unescape===!0?Se=Se.replace(/\\/g,""):Se=Se.replace(/\\+/g,V=>V.length%2===0?"\\\\":V?"\\":"")),Se===t&&r.contains===!0?(A.output=t,A):(A.output=ar.wrapOutput(Se,A,e),A)}for(;!w();){if(b=O(),b==="\0")continue;if(b==="\\"){let V=C();if(V==="/"&&r.bash!==!0||V==="."||V===";")continue;if(!V){b+="\\",U({type:"text",value:b});continue}let de=/^\\+/.exec(R()),qe=0;if(de&&de[0].length>2&&(qe=de[0].length,A.index+=qe,qe%2!==0&&(b+="\\")),r.unescape===!0?b=O():b+=O(),A.brackets===0){U({type:"text",value:b});continue}}if(A.brackets>0&&(b!=="]"||k.value==="["||k.value==="[^")){if(r.posix!==!1&&b===":"){let V=k.value.slice(1);if(V.includes("[")&&(k.posix=!0,V.includes(":"))){let de=k.value.lastIndexOf("["),qe=k.value.slice(0,de),At=k.value.slice(de+2),nt=N9[At];if(nt){k.value=qe+nt,A.backtrack=!0,O(),!i.output&&a.indexOf(k)===1&&(i.output=m);continue}}}(b==="["&&C()!==":"||b==="-"&&C()==="]")&&(b=`\\${b}`),b==="]"&&(k.value==="["||k.value==="[^")&&(b=`\\${b}`),r.posix===!0&&b==="!"&&k.value==="["&&(b="^"),k.value+=b,H({value:b});continue}if(A.quotes===1&&b!=='"'){b=ar.escapeRegex(b),k.value+=b,H({value:b});continue}if(b==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&U({type:"text",value:b});continue}if(b==="("){N("parens"),U({type:"paren",value:b});continue}if(b===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(ya("opening","("));let V=M[M.length-1];if(V&&A.parens===V.parens+1){Xt(M.pop());continue}U({type:"paren",value:b,output:A.parens?")":"\\)"}),X("parens");continue}if(b==="["){if(r.nobracket===!0||!R().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(ya("closing","]"));b=`\\${b}`}else N("brackets");U({type:"bracket",value:b});continue}if(b==="]"){if(r.nobracket===!0||k&&k.type==="bracket"&&k.value.length===1){U({type:"text",value:b,output:`\\${b}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(ya("opening","["));U({type:"text",value:b,output:`\\${b}`});continue}X("brackets");let V=k.value.slice(1);if(k.posix!==!0&&V[0]==="^"&&!V.includes("/")&&(b=`/${b}`),k.value+=b,H({value:b}),r.literalBrackets===!1||ar.hasRegexChars(V))continue;let de=ar.escapeRegex(k.value);if(A.output=A.output.slice(0,-k.value.length),r.literalBrackets===!0){A.output+=de,k.value=de;continue}k.value=`(${s}${de}|${k.value})`,A.output+=k.value;continue}if(b==="{"&&r.nobrace!==!0){N("braces");let V={type:"brace",value:b,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};L.push(V),U(V);continue}if(b==="}"){let V=L[L.length-1];if(r.nobrace===!0||!V){U({type:"text",value:b,output:b});continue}let de=")";if(V.dots===!0){let qe=a.slice(),At=[];for(let nt=qe.length-1;nt>=0&&(a.pop(),qe[nt].type!=="brace");nt--)qe[nt].type!=="dots"&&At.unshift(qe[nt].value);de=U9(At,r),A.backtrack=!0}if(V.comma!==!0&&V.dots!==!0){let qe=A.output.slice(0,V.outputIndex),At=A.tokens.slice(V.tokensIndex);V.value=V.output="\\{",b=de="\\}",A.output=qe;for(let nt of At)A.output+=nt.output||nt.value}U({type:"brace",value:b,output:de}),X("braces"),L.pop();continue}if(b==="|"){M.length>0&&M[M.length-1].conditions++,U({type:"text",value:b});continue}if(b===","){let V=b,de=L[L.length-1];de&&Z[Z.length-1]==="braces"&&(de.comma=!0,V="|"),U({type:"comma",value:b,output:V});continue}if(b==="/"){if(k.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",a.pop(),k=i;continue}U({type:"slash",value:b,output:h});continue}if(b==="."){if(A.braces>0&&k.type==="dot"){k.value==="."&&(k.output=d);let V=L[L.length-1];k.type="dots",k.output+=b,k.value+=b,V.dots=!0;continue}if(A.braces+A.parens===0&&k.type!=="bos"&&k.type!=="slash"){U({type:"text",value:b,output:d});continue}U({type:"dot",value:b,output:d});continue}if(b==="?"){if(!(k&&k.value==="(")&&r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("qmark",b);continue}if(k&&k.type==="paren"){let de=C(),qe=b;if(de==="<"&&!ar.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(k.value==="("&&!/[!=<:]/.test(de)||de==="<"&&!/<([!=]|\w+>)/.test(R()))&&(qe=`\\${b}`),U({type:"text",value:b,output:qe});continue}if(r.dot!==!0&&(k.type==="slash"||k.type==="bos")){U({type:"qmark",value:b,output:_});continue}U({type:"qmark",value:b,output:g});continue}if(b==="!"){if(r.noextglob!==!0&&C()==="("&&(C(2)!=="?"||!/[!=<:]/.test(C(3)))){oe("negate",b);continue}if(r.nonegate!==!0&&A.index===0){I();continue}}if(b==="+"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("plus",b);continue}if(k&&k.value==="("||r.regex===!1){U({type:"plus",value:b,output:p});continue}if(k&&(k.type==="bracket"||k.type==="paren"||k.type==="brace")||A.parens>0){U({type:"plus",value:b});continue}U({type:"plus",value:p});continue}if(b==="@"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){U({type:"at",extglob:!0,value:b,output:""});continue}U({type:"text",value:b});continue}if(b!=="*"){(b==="$"||b==="^")&&(b=`\\${b}`);let V=L9.exec(R());V&&(b+=V[0],A.index+=V[0].length),U({type:"text",value:b});continue}if(k&&(k.type==="globstar"||k.star===!0)){k.type="star",k.star=!0,k.value+=b,k.output=j,A.backtrack=!0,A.globstar=!0,$(b);continue}let z=R();if(r.noextglob!==!0&&/^\([^?]/.test(z)){oe("star",b);continue}if(k.type==="star"){if(r.noglobstar===!0){$(b);continue}let V=k.prev,de=V.prev,qe=V.type==="slash"||V.type==="bos",At=de&&(de.type==="star"||de.type==="globstar");if(r.bash===!0&&(!qe||z[0]&&z[0]!=="/")){U({type:"star",value:b,output:""});continue}let nt=A.braces>0&&(V.type==="comma"||V.type==="brace"),kf=M.length&&(V.type==="pipe"||V.type==="paren");if(!qe&&V.type!=="paren"&&!nt&&!kf){U({type:"star",value:b,output:""});continue}for(;z.slice(0,3)==="/**";){let Qs=t[A.index+4];if(Qs&&Qs!=="/")break;z=z.slice(3),$("/**",3)}if(V.type==="bos"&&w()){k.type="globstar",k.value+=b,k.output=F(r),A.output=k.output,A.globstar=!0,$(b);continue}if(V.type==="slash"&&V.prev.type!=="bos"&&!At&&w()){A.output=A.output.slice(0,-(V.output+k.output).length),V.output=`(?:${V.output}`,k.type="globstar",k.output=F(r)+(r.strictSlashes?")":"|$)"),k.value+=b,A.globstar=!0,A.output+=V.output+k.output,$(b);continue}if(V.type==="slash"&&V.prev.type!=="bos"&&z[0]==="/"){let Qs=z[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(V.output+k.output).length),V.output=`(?:${V.output}`,k.type="globstar",k.output=`${F(r)}${h}|${h}${Qs})`,k.value+=b,A.output+=V.output+k.output,A.globstar=!0,$(b+O()),U({type:"slash",value:"/",output:""});continue}if(V.type==="bos"&&z[0]==="/"){k.type="globstar",k.value+=b,k.output=`(?:^|${h}|${F(r)}${h})`,A.output=k.output,A.globstar=!0,$(b+O()),U({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-k.output.length),k.type="globstar",k.output=F(r),k.value+=b,A.output+=k.output,A.globstar=!0,$(b);continue}let Se={type:"star",value:b,output:j};if(r.bash===!0){Se.output=".*?",(k.type==="bos"||k.type==="slash")&&(Se.output=B+Se.output),U(Se);continue}if(k&&(k.type==="bracket"||k.type==="paren")&&r.regex===!0){Se.output=b,U(Se);continue}(A.index===A.start||k.type==="slash"||k.type==="dot")&&(k.type==="dot"?(A.output+=v,k.output+=v):r.dot===!0?(A.output+=E,k.output+=E):(A.output+=B,k.output+=B),C()!=="*"&&(A.output+=m,k.output+=m)),U(Se)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(ya("closing","]"));A.output=ar.escapeLast(A.output,"["),X("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(ya("closing",")"));A.output=ar.escapeLast(A.output,"("),X("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(ya("closing","}"));A.output=ar.escapeLast(A.output,"{"),X("braces")}if(r.strictSlashes!==!0&&(k.type==="star"||k.type==="bracket")&&U({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let z of A.tokens)A.output+=z.output!=null?z.output:z.value,z.suffix&&(A.output+=z.suffix)}return A};ly.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(bf,r.maxLength):bf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);t=ZO[t]||t;let i=ar.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}=Df.globChars(i),y=r.dot?d:f,D=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}${D}${g}`;case"**":return y+_(r);case"**/*":return`(?:${y}${_(r)}${s})?${D}${u}${g}`;case"**/*.*":return`(?:${y}${_(r)}${s})?${D}${g}${a}${u}${g}`;case"**/.*":return`(?:${y}${_(r)}${s})?${a}${u}${g}`;default:{let T=/^(.*?)\.(\w+)$/.exec(B);if(!T)return;let j=S(T[1]);return j?j+a+T[2]:void 0}}},P=ar.removePrefix(t,E),F=S(P);return F&&r.strictSlashes!==!0&&(F+=`${s}?`),F};QO.exports=ly});var rF=x((CX,tF)=>{"use strict";var M9=require("path"),q9=XO(),fy=eF(),dy=Ks(),H9=zs(),V9=t=>t&&typeof t=="object"&&!Array.isArray(t),tt=(t,e,r=!1)=>{if(Array.isArray(t)){let f=t.map(p=>tt(p,e,r));return p=>{for(let h of f){let m=h(p);if(m)return m}return!1}}let n=V9(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=dy.isWindows(e),a=n?tt.compileRe(t,e):tt.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=tt(o.ignore,f,r)}let c=(f,d=!1)=>{let{isMatch:p,match:h,output:m}=tt.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};tt.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?dy.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=tt.matchBase(t,e,r,o):s=e.exec(u)),{isMatch:!!s,match:s,output:u}};tt.matchBase=(t,e,r,n=dy.isWindows(r))=>(e instanceof RegExp?e:tt.makeRe(e,r)).test(M9.basename(t));tt.isMatch=(t,e,r)=>tt(e,r)(t);tt.parse=(t,e)=>Array.isArray(t)?t.map(r=>tt.parse(r,e)):fy(t,{...e,fastpaths:!1});tt.scan=(t,e)=>q9(t,e);tt.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=tt.toRegex(s,e);return n===!0&&(u.state=t),u};tt.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=fy.fastpaths(t,e)),o.output||(o=fy(t,e)),tt.compileRe(o,e,r,n)};tt.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/$^/}};tt.constants=H9;tF.exports=tt});var oF=x((EX,nF)=>{"use strict";nF.exports=rF()});var lF=x((_X,cF)=>{"use strict";var aF=require("util"),sF=LO(),Gr=oF(),py=Ks(),iF=t=>t===""||t==="./",uF=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},Le=(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=Gr(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};Le.match=Le;Le.matcher=(t,e)=>Gr(t,e);Le.isMatch=(t,e,r)=>Gr(e,r)(t);Le.any=Le.isMatch;Le.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(Le(t,e,{...r,onResult:i}));for(let s of o)a.has(s)||n.add(s);return[...n]};Le.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${aF.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>Le.contains(t,n,r));if(typeof e=="string"){if(iF(t)||iF(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return Le.isMatch(t,e,{...r,contains:!0})};Le.matchKeys=(t,e,r)=>{if(!py.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=Le(Object.keys(t),e,r),o={};for(let i of n)o[i]=t[i];return o};Le.some=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Gr(String(o),r);if(n.some(a=>i(a)))return!0}return!1};Le.every=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Gr(String(o),r);if(!n.every(a=>i(a)))return!1}return!0};Le.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${aF.inspect(t)}"`);return[].concat(e).every(n=>Gr(n,r)(t))};Le.capture=(t,e,r)=>{let n=py.isWindows(r),i=Gr.makeRe(String(t),{...r,capture:!0}).exec(n?py.toPosixSlashes(e):e);if(i)return i.slice(1).map(a=>a===void 0?"":a)};Le.makeRe=(...t)=>Gr.makeRe(...t);Le.scan=(...t)=>Gr.scan(...t);Le.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let o of sF(String(n),e))r.push(Gr.parse(o,e));return r};Le.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!uF(t)?[t]:sF(t,e)};Le.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return Le.braces(t,{...e,expand:!0})};Le.hasBraces=uF;cF.exports=Le});var WF=x((_Z,bn)=>{var Ie=require("fs"),xf=require("os"),bt=require("path"),PF=require("crypto"),Yr={fs:Ie.constants,os:xf.constants},$F="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",BF=/XXXXXX/,y7=3,NF=(Yr.O_CREAT||Yr.fs.O_CREAT)|(Yr.O_EXCL||Yr.fs.O_EXCL)|(Yr.O_RDWR||Yr.fs.O_RDWR),D7=xf.platform()==="win32",b7=Yr.EBADF||Yr.os.errno.EBADF,w7=Yr.ENOENT||Yr.os.errno.ENOENT,LF=448,jF=384,v7="exit",ba=[],UF=Ie.rmdirSync.bind(Ie),MF=!1;function C7(t,e){return Ie.rm(t,{recursive:!0},e)}function qF(t){return Ie.rmSync(t,{recursive:!0})}function Dy(t,e){let r=wa(t,e),n=r[0],o=r[1];$7(n,function(i,a){if(i)return o(i);let s=a.tries;(function u(){try{let c=VF(a);Ie.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 by(t){let e=wa(t),r=e[0],n=I7(r),o=n.tries;do{let i=VF(n);try{Ie.statSync(i)}catch{return i}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function E7(t,e){let r=wa(t,e),n=r[0],o=r[1];Dy(n,function(a,s){if(a)return o(a);Ie.open(s,NF,n.mode||jF,function(c,f){if(c)return o(c);if(n.discardDescriptor)return Ie.close(f,function(p){return o(p,s,void 0,gy(s,-1,n,!1))});{let d=n.discardDescriptor||n.detachDescriptor;o(null,s,f,gy(s,d?-1:f,n,!1))}})})}function _7(t){let e=wa(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,o=by(r),i=Ie.openSync(o,NF,r.mode||jF);return r.discardDescriptor&&(Ie.closeSync(i),i=void 0),{name:o,fd:i,removeCallback:gy(o,n?-1:i,r,!0)}}function S7(t,e){let r=wa(t,e),n=r[0],o=r[1];Dy(n,function(a,s){if(a)return o(a);Ie.mkdir(s,n.mode||LF,function(c){if(c)return o(c);o(null,s,HF(s,n,!1))})})}function x7(t){let e=wa(t),r=e[0],n=by(r);return Ie.mkdirSync(n,r.mode||LF),{name:n,removeCallback:HF(n,r,!0)}}function A7(t,e){let r=function(n){if(n&&!yy(n))return e(n);e()};0<=t[0]?Ie.close(t[0],function(){Ie.unlink(t[1],r)}):Ie.unlink(t[1],r)}function O7(t){let e=null;try{0<=t[0]&&Ie.closeSync(t[0])}catch(r){if(!T7(r)&&!yy(r))throw r}finally{try{Ie.unlinkSync(t[1])}catch(r){yy(r)||(e=r)}}if(e!==null)throw e}function gy(t,e,r,n){let o=Sf(O7,[e,t],n),i=Sf(A7,[e,t],n,o);return r.keep||ba.unshift(o),n?o:i}function HF(t,e,r){let n=e.unsafeCleanup?C7:Ie.rmdir.bind(Ie),o=e.unsafeCleanup?qF:UF,i=Sf(o,t,r),a=Sf(n,t,r,i);return e.keep||ba.unshift(i),r?i:a}function Sf(t,e,r,n){let o=!1;return function i(a){if(!o){let s=n||i,u=ba.indexOf(s);return u>=0&&ba.splice(u,1),o=!0,r||t===UF||t===qF?t(e):t(e,a||function(){})}}}function F7(){if(MF)for(;ba.length;)try{ba[0]()}catch{}}function IF(t){let e=[],r=null;try{r=PF.randomBytes(t)}catch{r=PF.pseudoRandomBytes(t)}for(let n=0;n<t;n++)e.push($F[r[n]%$F.length]);return e.join("")}function sr(t){return typeof t>"u"}function wa(t,e){if(typeof t=="function")return[{},t];if(sr(t))return[{},e];let r={};for(let n of Object.getOwnPropertyNames(t))r[n]=t[n];return[r,e]}function k7(t,e,r){let n=bt.isAbsolute(t)?t:bt.join(e,t);Ie.stat(n,function(o){o?Ie.realpath(bt.dirname(n),function(i,a){if(i)return r(i);r(null,bt.join(a,bt.basename(n)))}):Ie.realpath(n,r)})}function P7(t,e){let r=bt.isAbsolute(t)?t:bt.join(e,t);try{return Ie.statSync(r),Ie.realpathSync(r)}catch{let o=Ie.realpathSync(bt.dirname(r));return bt.join(o,bt.basename(r))}}function VF(t){let e=t.tmpdir;if(!sr(t.name))return bt.join(e,t.dir,t.name);if(!sr(t.template))return bt.join(e,t.dir,t.template).replace(BF,IF(6));let r=[t.prefix?t.prefix:"tmp","-",process.pid,"-",IF(12),t.postfix?"-"+t.postfix:""].join("");return bt.join(e,t.dir,r)}function zF(t){if(!sr(t.name)){let e=t.name;if(bt.isAbsolute(e))throw new Error(`name option must not contain an absolute path, found "${e}".`);let r=bt.basename(e);if(r===".."||r==="."||r!==e)throw new Error(`name option must not contain a path, found "${e}".`)}if(!sr(t.template)&&!t.template.match(BF))throw new Error(`Invalid template, found "${t.template}".`);if(!sr(t.tries)&&isNaN(t.tries)||t.tries<0)throw new Error(`Invalid tries, found "${t.tries}".`);t.tries=sr(t.name)?t.tries||y7:1,t.keep=!!t.keep,t.detachDescriptor=!!t.detachDescriptor,t.discardDescriptor=!!t.discardDescriptor,t.unsafeCleanup=!!t.unsafeCleanup,t.prefix=sr(t.prefix)?"":t.prefix,t.postfix=sr(t.postfix)?"":t.postfix}function TF(t,e,r,n){if(sr(e))return n(null);k7(e,r,function(o,i){if(o)return n(o);let a=bt.relative(r,i);if(!i.startsWith(r))return n(new Error(`${t} option must be relative to "${r}", found "${a}".`));n(null,a)})}function RF(t,e,r){if(sr(e))return;let n=P7(e,r),o=bt.relative(r,n);if(!n.startsWith(r))throw new Error(`${t} option must be relative to "${r}", found "${o}".`);return o}function $7(t,e){B7(t,function(r,n){if(r)return e(r);t.tmpdir=n;try{zF(t,n)}catch(o){return e(o)}TF("dir",t.dir,n,function(o,i){if(o)return e(o);t.dir=sr(i)?"":i,TF("template",t.template,n,function(a,s){if(a)return e(a);t.template=s,e(null,t)})})})}function I7(t){let e=t.tmpdir=GF(t);zF(t,e);let r=RF("dir",t.dir,e);return t.dir=sr(r)?"":r,t.template=RF("template",t.template,e),t}function T7(t){return KF(t,-b7,"EBADF")}function yy(t){return KF(t,-w7,"ENOENT")}function KF(t,e,r){return D7?t.code===r:t.code===r&&t.errno===e}function R7(){MF=!0}function B7(t,e){return Ie.realpath(t&&t.tmpdir||xf.tmpdir(),e)}function GF(t){return Ie.realpathSync(t&&t.tmpdir||xf.tmpdir())}process.addListener(v7,F7);Object.defineProperty(bn.exports,"tmpdir",{enumerable:!0,configurable:!1,get:function(){return GF()}});bn.exports.dir=S7;bn.exports.dirSync=x7;bn.exports.file=E7;bn.exports.fileSync=_7;bn.exports.tmpName=Dy;bn.exports.tmpNameSync=by;bn.exports.setGracefulCleanup=R7});var Of=require("node:process");var Vy=fe(Hy(),1),{program:it,createCommand:wq,createArgument:vq,createOption:Cq,CommanderError:Eq,InvalidArgumentError:_q,InvalidOptionArgumentError:Sq,Command:xq,Argument:Aq,Option:Oq,Help:Fq}=Vy.default;var Cr={name:"@capgo/cli",version:"7.51.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":"^7.4.4","@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.9.1","@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 wt=fe(Yf(),1),Go=require("node:process"),vn=fe(require("node:readline"),1),ed=fe(require("node:readline"),1),tD=require("node:stream"),rD=fe(Xf(),1);function P2({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 $2=P2();function nD(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace($2,"")}function oD(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var iD={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}})(iD);var I2=iD.exports,T2=oD(I2),R2=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},B2=oD(R2);function _a(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=nD(t),t.length===0))return 0;t=t.replace(B2()," ");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(T2.eastAsianWidth(o)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}var Zf=10,Wy=(t=0)=>e=>`\x1B[${e+t}m`,Yy=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,Jy=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,je={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(je.modifier);var N2=Object.keys(je.color),L2=Object.keys(je.bgColor);[...N2,...L2];function j2(){let t=new Map;for(let[e,r]of Object.entries(je)){for(let[n,o]of Object.entries(r))je[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=je[n],t.set(o[0],o[1]);Object.defineProperty(je,e,{value:r,enumerable:!1})}return Object.defineProperty(je,"codes",{value:t,enumerable:!1}),je.color.close="\x1B[39m",je.bgColor.close="\x1B[49m",je.color.ansi=Wy(),je.color.ansi256=Yy(),je.color.ansi16m=Jy(),je.bgColor.ansi=Wy(Zf),je.bgColor.ansi256=Yy(Zf),je.bgColor.ansi16m=Jy(Zf),Object.defineProperties(je,{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=>je.rgbToAnsi256(...je.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)=>je.ansi256ToAnsi(je.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>je.ansi256ToAnsi(je.hexToAnsi256(e)),enumerable:!1}}),je}var U2=j2(),fu=new Set(["\x1B","\x9B"]),M2=39,rd="\x07",aD="[",q2="]",sD="m",nd=`${q2}8;;`,Xy=t=>`${fu.values().next().value}${aD}${t}${sD}`,Zy=t=>`${fu.values().next().value}${nd}${t}${rd}`,H2=t=>t.split(" ").map(e=>_a(e)),Qf=(t,e,r)=>{let n=[...e],o=!1,i=!1,a=_a(nD(t[t.length-1]));for(let[s,u]of n.entries()){let c=_a(u);if(a+c<=r?t[t.length-1]+=u:(t.push(u),a=0),fu.has(u)&&(o=!0,i=n.slice(s+1).join("").startsWith(nd)),o){i?u===rd&&(o=!1,i=!1):u===sD&&(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())},V2=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(_a(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},z2=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let n="",o,i,a=H2(t),s=[""];for(let[c,f]of t.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let d=_a(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(""),Qf(s,f,e);continue}if(d+a[c]>e&&d>0&&a[c]>0){if(r.wordWrap===!1&&d<e){Qf(s,f,e);continue}s.push("")}if(d+a[c]>e&&r.wordWrap===!1){Qf(s,f,e);continue}s[s.length-1]+=f}r.trim!==!1&&(s=s.map(c=>V2(c)));let u=[...s.join(`
107
+ `,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 RO=x((gX,TO)=>{"use strict";var JM=hf(),{MAX_LENGTH:PO,CHAR_BACKSLASH:ry,CHAR_BACKTICK:XM,CHAR_COMMA:ZM,CHAR_DOT:QM,CHAR_LEFT_PARENTHESES:e9,CHAR_RIGHT_PARENTHESES:t9,CHAR_LEFT_CURLY_BRACE:r9,CHAR_RIGHT_CURLY_BRACE:n9,CHAR_LEFT_SQUARE_BRACKET:$O,CHAR_RIGHT_SQUARE_BRACKET:IO,CHAR_DOUBLE_QUOTE:o9,CHAR_SINGLE_QUOTE:i9,CHAR_NO_BREAK_SPACE:a9,CHAR_ZERO_WIDTH_NOBREAK_SPACE:s9}=kO(),u9=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(PO,r.maxLength):PO;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===s9||p===a9)){if(p===ry){m({type:"text",value:(e.keepEscaping?p:"")+h()});continue}if(p===IO){m({type:"text",value:"\\"+p});continue}if(p===$O){u++;let y;for(;f<c&&(y=h());){if(p+=y,y===$O){u++;continue}if(y===ry){p+=h();continue}if(y===IO&&(u--,u===0))break}m({type:"text",value:p});continue}if(p===e9){a=m({type:"paren",nodes:[]}),i.push(a),m({type:"text",value:p});continue}if(p===t9){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===o9||p===i9||p===XM){let y=p,D;for(e.keepQuotes!==!0&&(p="");f<c&&(D=h());){if(D===ry){p+=D+h();continue}if(D===y){e.keepQuotes===!0&&(p+=D);break}p+=D}m({type:"text",value:p});continue}if(p===r9){d++;let D={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(D),i.push(a),m({type:"open",value:p});continue}if(p===n9){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===ZM&&d>0){if(a.ranges>0){a.ranges=0;let y=a.nodes.shift();a.nodes=[y,{type:"text",value:JM(a)}]}m({type:"comma",value:p}),a.commas++;continue}if(p===QM&&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 D=y[y.length-1];D.value+=s.value+p,s=D,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],D=y.nodes.indexOf(a);y.nodes.splice(D,1,...a.nodes)}while(i.length>0);return m({type:"eos"}),o};TO.exports=u9});var LO=x((yX,NO)=>{"use strict";var BO=hf(),c9=SO(),l9=OO(),f9=RO(),ir=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let o=ir.create(n,e);Array.isArray(o)?r.push(...o):r.push(o)}else r=[].concat(ir.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};ir.parse=(t,e={})=>f9(t,e);ir.stringify=(t,e={})=>BO(typeof t=="string"?ir.parse(t,e):t,e);ir.compile=(t,e={})=>(typeof t=="string"&&(t=ir.parse(t,e)),c9(t,e));ir.expand=(t,e={})=>{typeof t=="string"&&(t=ir.parse(t,e));let r=l9(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};ir.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?ir.compile(t,e):ir.expand(t,e);NO.exports=ir});var zs=x((DX,HO)=>{"use strict";var d9=require("path"),Kr="\\\\/",jO=`[^${Kr}]`,Dn="\\.",p9="\\+",h9="\\?",yf="\\/",m9="(?=.)",UO="[^/]",ny=`(?:${yf}|$)`,MO=`(?:^|${yf})`,oy=`${Dn}{1,2}${ny}`,g9=`(?!${Dn})`,y9=`(?!${MO}${oy})`,D9=`(?!${Dn}{0,1}${ny})`,b9=`(?!${oy})`,w9=`[^.${yf}]`,v9=`${UO}*?`,qO={DOT_LITERAL:Dn,PLUS_LITERAL:p9,QMARK_LITERAL:h9,SLASH_LITERAL:yf,ONE_CHAR:m9,QMARK:UO,END_ANCHOR:ny,DOTS_SLASH:oy,NO_DOT:g9,NO_DOTS:y9,NO_DOT_SLASH:D9,NO_DOTS_SLASH:b9,QMARK_NO_DOT:w9,STAR:v9,START_ANCHOR:MO},C9={...qO,SLASH_LITERAL:`[${Kr}]`,QMARK:jO,STAR:`${jO}*?`,DOTS_SLASH:`${Dn}{1,2}(?:[${Kr}]|$)`,NO_DOT:`(?!${Dn})`,NO_DOTS:`(?!(?:^|[${Kr}])${Dn}{1,2}(?:[${Kr}]|$))`,NO_DOT_SLASH:`(?!${Dn}{0,1}(?:[${Kr}]|$))`,NO_DOTS_SLASH:`(?!${Dn}{1,2}(?:[${Kr}]|$))`,QMARK_NO_DOT:`[^.${Kr}]`,START_ANCHOR:`(?:^|[${Kr}])`,END_ANCHOR:`(?:[${Kr}]|$)`},E9={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"};HO.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:E9,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:d9.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?C9:qO}}});var Ks=x(Jt=>{"use strict";var _9=require("path"),S9=process.platform==="win32",{REGEX_BACKSLASH:x9,REGEX_REMOVE_BACKSLASH:A9,REGEX_SPECIAL_CHARS:O9,REGEX_SPECIAL_CHARS_GLOBAL:F9}=zs();Jt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Jt.hasRegexChars=t=>O9.test(t);Jt.isRegexChar=t=>t.length===1&&Jt.hasRegexChars(t);Jt.escapeRegex=t=>t.replace(F9,"\\$1");Jt.toPosixSlashes=t=>t.replace(x9,"/");Jt.removeBackslashes=t=>t.replace(A9,e=>e==="\\"?"":e);Jt.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Jt.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:S9===!0||_9.sep==="\\";Jt.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?Jt.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};Jt.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Jt.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",o=r.contains?"":"$",i=`${n}(?:${t})${o}`;return e.negated===!0&&(i=`(?:^(?!${i}).*$)`),i}});var XO=x((wX,JO)=>{"use strict";var VO=Ks(),{CHAR_ASTERISK:iy,CHAR_AT:k9,CHAR_BACKWARD_SLASH:Gs,CHAR_COMMA:P9,CHAR_DOT:ay,CHAR_EXCLAMATION_MARK:sy,CHAR_FORWARD_SLASH:YO,CHAR_LEFT_CURLY_BRACE:uy,CHAR_LEFT_PARENTHESES:cy,CHAR_LEFT_SQUARE_BRACKET:$9,CHAR_PLUS:I9,CHAR_QUESTION_MARK:zO,CHAR_RIGHT_CURLY_BRACE:T9,CHAR_RIGHT_PARENTHESES:KO,CHAR_RIGHT_SQUARE_BRACKET:R9}=zs(),GO=t=>t===YO||t===Gs,WO=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},B9=(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,D=!1,v=!1,E=!1,g=!1,_=!1,S=!1,P=0,F,B,T={value:"",depth:0,isGlob:!1},j=()=>c>=n,A=()=>u.charCodeAt(c+1),M=()=>(F=B,u.charCodeAt(++c));for(;c<n;){B=M();let w;if(B===Gs){E=T.backslashes=!0,B=M(),B===uy&&(v=!0);continue}if(v===!0||B===uy){for(P++;j()!==!0&&(B=M());){if(B===Gs){E=T.backslashes=!0,M();continue}if(B===uy){P++;continue}if(v!==!0&&B===ay&&(B=M())===ay){if(p=T.isBrace=!0,m=T.isGlob=!0,S=!0,o===!0)continue;break}if(v!==!0&&B===P9){if(p=T.isBrace=!0,m=T.isGlob=!0,S=!0,o===!0)continue;break}if(B===T9&&(P--,P===0)){v=!1,p=T.isBrace=!0,S=!0;break}}if(o===!0)continue;break}if(B===YO){if(i.push(c),a.push(T),T={value:"",depth:0,isGlob:!1},S===!0)continue;if(F===ay&&c===f+1){f+=2;continue}d=c+1;continue}if(r.noext!==!0&&(B===I9||B===k9||B===iy||B===zO||B===sy)===!0&&A()===cy){if(m=T.isGlob=!0,y=T.isExtglob=!0,S=!0,B===sy&&c===f&&(_=!0),o===!0){for(;j()!==!0&&(B=M());){if(B===Gs){E=T.backslashes=!0,B=M();continue}if(B===KO){m=T.isGlob=!0,S=!0;break}}continue}break}if(B===iy){if(F===iy&&(D=T.isGlobstar=!0),m=T.isGlob=!0,S=!0,o===!0)continue;break}if(B===zO){if(m=T.isGlob=!0,S=!0,o===!0)continue;break}if(B===$9){for(;j()!==!0&&(w=M());){if(w===Gs){E=T.backslashes=!0,M();continue}if(w===R9){h=T.isBracket=!0,m=T.isGlob=!0,S=!0;break}}if(o===!0)continue;break}if(r.nonegate!==!0&&B===sy&&c===f){g=T.negated=!0,f++;continue}if(r.noparen!==!0&&B===cy){if(m=T.isGlob=!0,o===!0){for(;j()!==!0&&(B=M());){if(B===cy){E=T.backslashes=!0,B=M();continue}if(B===KO){S=!0;break}}continue}break}if(m===!0){if(S=!0,o===!0)continue;break}}r.noext===!0&&(y=!1,m=!1);let L=u,Z="",k="";f>0&&(Z=u.slice(0,f),u=u.slice(f),d-=f),L&&m===!0&&d>0?(L=u.slice(0,d),k=u.slice(d)):m===!0?(L="",k=u):L=u,L&&L!==""&&L!=="/"&&L!==u&&GO(L.charCodeAt(L.length-1))&&(L=L.slice(0,-1)),r.unescape===!0&&(k&&(k=VO.removeBackslashes(k)),L&&E===!0&&(L=VO.removeBackslashes(L)));let b={prefix:Z,input:t,start:f,base:L,glob:k,isBrace:p,isBracket:h,isGlob:m,isExtglob:y,isGlobstar:D,negated:g,negatedExtglob:_};if(r.tokens===!0&&(b.maxDepth=0,GO(B)||a.push(T),b.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=$,WO(a[C]),b.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,WO(a[a.length-1]),b.maxDepth+=a[a.length-1].depth)}b.slashes=i,b.parts=s}return b};JO.exports=B9});var eF=x((vX,QO)=>{"use strict";var Df=zs(),ar=Ks(),{MAX_LENGTH:bf,POSIX_REGEX_SOURCE:N9,REGEX_NON_SPECIAL_CHARS:L9,REGEX_SPECIAL_CHARS_BACKREF:j9,REPLACEMENTS:ZO}=Df,U9=(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=>ar.escapeRegex(o)).join("..")}return r},ya=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,ly=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=ZO[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(bf,r.maxLength):bf,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=ar.isWindows(e),c=Df.globChars(u),f=Df.extglobChars(c),{DOT_LITERAL:d,PLUS_LITERAL:p,SLASH_LITERAL:h,ONE_CHAR:m,DOTS_SLASH:y,NO_DOT:D,NO_DOT_SLASH:v,NO_DOTS_SLASH:E,QMARK:g,QMARK_NO_DOT:_,STAR:S,START_ANCHOR:P}=c,F=z=>`(${s}(?:(?!${P}${z.dot?y:d}).)*?)`,B=r.dot?"":D,T=r.dot?g:_,j=r.bash===!0?F(r):S;r.capture&&(j=`(${j})`),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=ar.removePrefix(t,A),o=t.length;let M=[],L=[],Z=[],k=i,b,w=()=>A.index===o-1,C=A.peek=(z=1)=>t[A.index+z],O=A.advance=()=>t[++A.index]||"",R=()=>t.slice(A.index+1),$=(z="",Se=0)=>{A.consumed+=z,A.index+=Se},H=z=>{A.output+=z.output!=null?z.output:z.value,$(z.value)},I=()=>{let z=1;for(;C()==="!"&&(C(2)!=="("||C(3)==="?");)O(),A.start++,z++;return z%2===0?!1:(A.negated=!0,A.start++,!0)},N=z=>{A[z]++,Z.push(z)},X=z=>{A[z]--,Z.pop()},U=z=>{if(k.type==="globstar"){let Se=A.braces>0&&(z.type==="comma"||z.type==="brace"),V=z.extglob===!0||M.length&&(z.type==="pipe"||z.type==="paren");z.type!=="slash"&&z.type!=="paren"&&!Se&&!V&&(A.output=A.output.slice(0,-k.output.length),k.type="star",k.value="*",k.output=j,A.output+=k.output)}if(M.length&&z.type!=="paren"&&(M[M.length-1].inner+=z.value),(z.value||z.output)&&H(z),k&&k.type==="text"&&z.type==="text"){k.value+=z.value,k.output=(k.output||"")+z.value;return}z.prev=k,a.push(z),k=z},oe=(z,Se)=>{let V={...f[Se],conditions:1,inner:""};V.prev=k,V.parens=A.parens,V.output=A.output;let de=(r.capture?"(":"")+V.open;N("parens"),U({type:z,value:Se,output:A.output?"":m}),U({type:"paren",extglob:!0,value:O(),output:de}),M.push(V)},Xt=z=>{let Se=z.close+(r.capture?")":""),V;if(z.type==="negate"){let de=j;if(z.inner&&z.inner.length>1&&z.inner.includes("/")&&(de=F(r)),(de!==j||w()||/^\)+$/.test(R()))&&(Se=z.close=`)$))${de}`),z.inner.includes("*")&&(V=R())&&/^\.[^\\/.]+$/.test(V)){let qe=ly(V,{...e,fastpaths:!1}).output;Se=z.close=`)${qe})${de})`}z.prev.type==="bos"&&(A.negatedExtglob=!0)}U({type:"paren",extglob:!0,value:b,output:Se}),X("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let z=!1,Se=t.replace(j9,(V,de,qe,At,nt,kf)=>At==="\\"?(z=!0,V):At==="?"?de?de+At+(nt?g.repeat(nt.length):""):kf===0?T+(nt?g.repeat(nt.length):""):g.repeat(qe.length):At==="."?d.repeat(qe.length):At==="*"?de?de+At+(nt?j:""):j:de?V:`\\${V}`);return z===!0&&(r.unescape===!0?Se=Se.replace(/\\/g,""):Se=Se.replace(/\\+/g,V=>V.length%2===0?"\\\\":V?"\\":"")),Se===t&&r.contains===!0?(A.output=t,A):(A.output=ar.wrapOutput(Se,A,e),A)}for(;!w();){if(b=O(),b==="\0")continue;if(b==="\\"){let V=C();if(V==="/"&&r.bash!==!0||V==="."||V===";")continue;if(!V){b+="\\",U({type:"text",value:b});continue}let de=/^\\+/.exec(R()),qe=0;if(de&&de[0].length>2&&(qe=de[0].length,A.index+=qe,qe%2!==0&&(b+="\\")),r.unescape===!0?b=O():b+=O(),A.brackets===0){U({type:"text",value:b});continue}}if(A.brackets>0&&(b!=="]"||k.value==="["||k.value==="[^")){if(r.posix!==!1&&b===":"){let V=k.value.slice(1);if(V.includes("[")&&(k.posix=!0,V.includes(":"))){let de=k.value.lastIndexOf("["),qe=k.value.slice(0,de),At=k.value.slice(de+2),nt=N9[At];if(nt){k.value=qe+nt,A.backtrack=!0,O(),!i.output&&a.indexOf(k)===1&&(i.output=m);continue}}}(b==="["&&C()!==":"||b==="-"&&C()==="]")&&(b=`\\${b}`),b==="]"&&(k.value==="["||k.value==="[^")&&(b=`\\${b}`),r.posix===!0&&b==="!"&&k.value==="["&&(b="^"),k.value+=b,H({value:b});continue}if(A.quotes===1&&b!=='"'){b=ar.escapeRegex(b),k.value+=b,H({value:b});continue}if(b==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&U({type:"text",value:b});continue}if(b==="("){N("parens"),U({type:"paren",value:b});continue}if(b===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(ya("opening","("));let V=M[M.length-1];if(V&&A.parens===V.parens+1){Xt(M.pop());continue}U({type:"paren",value:b,output:A.parens?")":"\\)"}),X("parens");continue}if(b==="["){if(r.nobracket===!0||!R().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(ya("closing","]"));b=`\\${b}`}else N("brackets");U({type:"bracket",value:b});continue}if(b==="]"){if(r.nobracket===!0||k&&k.type==="bracket"&&k.value.length===1){U({type:"text",value:b,output:`\\${b}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(ya("opening","["));U({type:"text",value:b,output:`\\${b}`});continue}X("brackets");let V=k.value.slice(1);if(k.posix!==!0&&V[0]==="^"&&!V.includes("/")&&(b=`/${b}`),k.value+=b,H({value:b}),r.literalBrackets===!1||ar.hasRegexChars(V))continue;let de=ar.escapeRegex(k.value);if(A.output=A.output.slice(0,-k.value.length),r.literalBrackets===!0){A.output+=de,k.value=de;continue}k.value=`(${s}${de}|${k.value})`,A.output+=k.value;continue}if(b==="{"&&r.nobrace!==!0){N("braces");let V={type:"brace",value:b,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};L.push(V),U(V);continue}if(b==="}"){let V=L[L.length-1];if(r.nobrace===!0||!V){U({type:"text",value:b,output:b});continue}let de=")";if(V.dots===!0){let qe=a.slice(),At=[];for(let nt=qe.length-1;nt>=0&&(a.pop(),qe[nt].type!=="brace");nt--)qe[nt].type!=="dots"&&At.unshift(qe[nt].value);de=U9(At,r),A.backtrack=!0}if(V.comma!==!0&&V.dots!==!0){let qe=A.output.slice(0,V.outputIndex),At=A.tokens.slice(V.tokensIndex);V.value=V.output="\\{",b=de="\\}",A.output=qe;for(let nt of At)A.output+=nt.output||nt.value}U({type:"brace",value:b,output:de}),X("braces"),L.pop();continue}if(b==="|"){M.length>0&&M[M.length-1].conditions++,U({type:"text",value:b});continue}if(b===","){let V=b,de=L[L.length-1];de&&Z[Z.length-1]==="braces"&&(de.comma=!0,V="|"),U({type:"comma",value:b,output:V});continue}if(b==="/"){if(k.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",a.pop(),k=i;continue}U({type:"slash",value:b,output:h});continue}if(b==="."){if(A.braces>0&&k.type==="dot"){k.value==="."&&(k.output=d);let V=L[L.length-1];k.type="dots",k.output+=b,k.value+=b,V.dots=!0;continue}if(A.braces+A.parens===0&&k.type!=="bos"&&k.type!=="slash"){U({type:"text",value:b,output:d});continue}U({type:"dot",value:b,output:d});continue}if(b==="?"){if(!(k&&k.value==="(")&&r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("qmark",b);continue}if(k&&k.type==="paren"){let de=C(),qe=b;if(de==="<"&&!ar.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(k.value==="("&&!/[!=<:]/.test(de)||de==="<"&&!/<([!=]|\w+>)/.test(R()))&&(qe=`\\${b}`),U({type:"text",value:b,output:qe});continue}if(r.dot!==!0&&(k.type==="slash"||k.type==="bos")){U({type:"qmark",value:b,output:_});continue}U({type:"qmark",value:b,output:g});continue}if(b==="!"){if(r.noextglob!==!0&&C()==="("&&(C(2)!=="?"||!/[!=<:]/.test(C(3)))){oe("negate",b);continue}if(r.nonegate!==!0&&A.index===0){I();continue}}if(b==="+"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("plus",b);continue}if(k&&k.value==="("||r.regex===!1){U({type:"plus",value:b,output:p});continue}if(k&&(k.type==="bracket"||k.type==="paren"||k.type==="brace")||A.parens>0){U({type:"plus",value:b});continue}U({type:"plus",value:p});continue}if(b==="@"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){U({type:"at",extglob:!0,value:b,output:""});continue}U({type:"text",value:b});continue}if(b!=="*"){(b==="$"||b==="^")&&(b=`\\${b}`);let V=L9.exec(R());V&&(b+=V[0],A.index+=V[0].length),U({type:"text",value:b});continue}if(k&&(k.type==="globstar"||k.star===!0)){k.type="star",k.star=!0,k.value+=b,k.output=j,A.backtrack=!0,A.globstar=!0,$(b);continue}let z=R();if(r.noextglob!==!0&&/^\([^?]/.test(z)){oe("star",b);continue}if(k.type==="star"){if(r.noglobstar===!0){$(b);continue}let V=k.prev,de=V.prev,qe=V.type==="slash"||V.type==="bos",At=de&&(de.type==="star"||de.type==="globstar");if(r.bash===!0&&(!qe||z[0]&&z[0]!=="/")){U({type:"star",value:b,output:""});continue}let nt=A.braces>0&&(V.type==="comma"||V.type==="brace"),kf=M.length&&(V.type==="pipe"||V.type==="paren");if(!qe&&V.type!=="paren"&&!nt&&!kf){U({type:"star",value:b,output:""});continue}for(;z.slice(0,3)==="/**";){let Qs=t[A.index+4];if(Qs&&Qs!=="/")break;z=z.slice(3),$("/**",3)}if(V.type==="bos"&&w()){k.type="globstar",k.value+=b,k.output=F(r),A.output=k.output,A.globstar=!0,$(b);continue}if(V.type==="slash"&&V.prev.type!=="bos"&&!At&&w()){A.output=A.output.slice(0,-(V.output+k.output).length),V.output=`(?:${V.output}`,k.type="globstar",k.output=F(r)+(r.strictSlashes?")":"|$)"),k.value+=b,A.globstar=!0,A.output+=V.output+k.output,$(b);continue}if(V.type==="slash"&&V.prev.type!=="bos"&&z[0]==="/"){let Qs=z[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(V.output+k.output).length),V.output=`(?:${V.output}`,k.type="globstar",k.output=`${F(r)}${h}|${h}${Qs})`,k.value+=b,A.output+=V.output+k.output,A.globstar=!0,$(b+O()),U({type:"slash",value:"/",output:""});continue}if(V.type==="bos"&&z[0]==="/"){k.type="globstar",k.value+=b,k.output=`(?:^|${h}|${F(r)}${h})`,A.output=k.output,A.globstar=!0,$(b+O()),U({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-k.output.length),k.type="globstar",k.output=F(r),k.value+=b,A.output+=k.output,A.globstar=!0,$(b);continue}let Se={type:"star",value:b,output:j};if(r.bash===!0){Se.output=".*?",(k.type==="bos"||k.type==="slash")&&(Se.output=B+Se.output),U(Se);continue}if(k&&(k.type==="bracket"||k.type==="paren")&&r.regex===!0){Se.output=b,U(Se);continue}(A.index===A.start||k.type==="slash"||k.type==="dot")&&(k.type==="dot"?(A.output+=v,k.output+=v):r.dot===!0?(A.output+=E,k.output+=E):(A.output+=B,k.output+=B),C()!=="*"&&(A.output+=m,k.output+=m)),U(Se)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(ya("closing","]"));A.output=ar.escapeLast(A.output,"["),X("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(ya("closing",")"));A.output=ar.escapeLast(A.output,"("),X("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(ya("closing","}"));A.output=ar.escapeLast(A.output,"{"),X("braces")}if(r.strictSlashes!==!0&&(k.type==="star"||k.type==="bracket")&&U({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let z of A.tokens)A.output+=z.output!=null?z.output:z.value,z.suffix&&(A.output+=z.suffix)}return A};ly.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(bf,r.maxLength):bf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);t=ZO[t]||t;let i=ar.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}=Df.globChars(i),y=r.dot?d:f,D=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}${D}${g}`;case"**":return y+_(r);case"**/*":return`(?:${y}${_(r)}${s})?${D}${u}${g}`;case"**/*.*":return`(?:${y}${_(r)}${s})?${D}${g}${a}${u}${g}`;case"**/.*":return`(?:${y}${_(r)}${s})?${a}${u}${g}`;default:{let T=/^(.*?)\.(\w+)$/.exec(B);if(!T)return;let j=S(T[1]);return j?j+a+T[2]:void 0}}},P=ar.removePrefix(t,E),F=S(P);return F&&r.strictSlashes!==!0&&(F+=`${s}?`),F};QO.exports=ly});var rF=x((CX,tF)=>{"use strict";var M9=require("path"),q9=XO(),fy=eF(),dy=Ks(),H9=zs(),V9=t=>t&&typeof t=="object"&&!Array.isArray(t),tt=(t,e,r=!1)=>{if(Array.isArray(t)){let f=t.map(p=>tt(p,e,r));return p=>{for(let h of f){let m=h(p);if(m)return m}return!1}}let n=V9(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=dy.isWindows(e),a=n?tt.compileRe(t,e):tt.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=tt(o.ignore,f,r)}let c=(f,d=!1)=>{let{isMatch:p,match:h,output:m}=tt.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};tt.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?dy.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=tt.matchBase(t,e,r,o):s=e.exec(u)),{isMatch:!!s,match:s,output:u}};tt.matchBase=(t,e,r,n=dy.isWindows(r))=>(e instanceof RegExp?e:tt.makeRe(e,r)).test(M9.basename(t));tt.isMatch=(t,e,r)=>tt(e,r)(t);tt.parse=(t,e)=>Array.isArray(t)?t.map(r=>tt.parse(r,e)):fy(t,{...e,fastpaths:!1});tt.scan=(t,e)=>q9(t,e);tt.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=tt.toRegex(s,e);return n===!0&&(u.state=t),u};tt.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=fy.fastpaths(t,e)),o.output||(o=fy(t,e)),tt.compileRe(o,e,r,n)};tt.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/$^/}};tt.constants=H9;tF.exports=tt});var oF=x((EX,nF)=>{"use strict";nF.exports=rF()});var lF=x((_X,cF)=>{"use strict";var aF=require("util"),sF=LO(),Gr=oF(),py=Ks(),iF=t=>t===""||t==="./",uF=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},Le=(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=Gr(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};Le.match=Le;Le.matcher=(t,e)=>Gr(t,e);Le.isMatch=(t,e,r)=>Gr(e,r)(t);Le.any=Le.isMatch;Le.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(Le(t,e,{...r,onResult:i}));for(let s of o)a.has(s)||n.add(s);return[...n]};Le.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${aF.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>Le.contains(t,n,r));if(typeof e=="string"){if(iF(t)||iF(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return Le.isMatch(t,e,{...r,contains:!0})};Le.matchKeys=(t,e,r)=>{if(!py.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=Le(Object.keys(t),e,r),o={};for(let i of n)o[i]=t[i];return o};Le.some=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Gr(String(o),r);if(n.some(a=>i(a)))return!0}return!1};Le.every=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Gr(String(o),r);if(!n.every(a=>i(a)))return!1}return!0};Le.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${aF.inspect(t)}"`);return[].concat(e).every(n=>Gr(n,r)(t))};Le.capture=(t,e,r)=>{let n=py.isWindows(r),i=Gr.makeRe(String(t),{...r,capture:!0}).exec(n?py.toPosixSlashes(e):e);if(i)return i.slice(1).map(a=>a===void 0?"":a)};Le.makeRe=(...t)=>Gr.makeRe(...t);Le.scan=(...t)=>Gr.scan(...t);Le.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let o of sF(String(n),e))r.push(Gr.parse(o,e));return r};Le.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!uF(t)?[t]:sF(t,e)};Le.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return Le.braces(t,{...e,expand:!0})};Le.hasBraces=uF;cF.exports=Le});var WF=x((_Z,bn)=>{var Ie=require("fs"),xf=require("os"),bt=require("path"),PF=require("crypto"),Yr={fs:Ie.constants,os:xf.constants},$F="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",BF=/XXXXXX/,y7=3,NF=(Yr.O_CREAT||Yr.fs.O_CREAT)|(Yr.O_EXCL||Yr.fs.O_EXCL)|(Yr.O_RDWR||Yr.fs.O_RDWR),D7=xf.platform()==="win32",b7=Yr.EBADF||Yr.os.errno.EBADF,w7=Yr.ENOENT||Yr.os.errno.ENOENT,LF=448,jF=384,v7="exit",ba=[],UF=Ie.rmdirSync.bind(Ie),MF=!1;function C7(t,e){return Ie.rm(t,{recursive:!0},e)}function qF(t){return Ie.rmSync(t,{recursive:!0})}function Dy(t,e){let r=wa(t,e),n=r[0],o=r[1];$7(n,function(i,a){if(i)return o(i);let s=a.tries;(function u(){try{let c=VF(a);Ie.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 by(t){let e=wa(t),r=e[0],n=I7(r),o=n.tries;do{let i=VF(n);try{Ie.statSync(i)}catch{return i}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function E7(t,e){let r=wa(t,e),n=r[0],o=r[1];Dy(n,function(a,s){if(a)return o(a);Ie.open(s,NF,n.mode||jF,function(c,f){if(c)return o(c);if(n.discardDescriptor)return Ie.close(f,function(p){return o(p,s,void 0,gy(s,-1,n,!1))});{let d=n.discardDescriptor||n.detachDescriptor;o(null,s,f,gy(s,d?-1:f,n,!1))}})})}function _7(t){let e=wa(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,o=by(r),i=Ie.openSync(o,NF,r.mode||jF);return r.discardDescriptor&&(Ie.closeSync(i),i=void 0),{name:o,fd:i,removeCallback:gy(o,n?-1:i,r,!0)}}function S7(t,e){let r=wa(t,e),n=r[0],o=r[1];Dy(n,function(a,s){if(a)return o(a);Ie.mkdir(s,n.mode||LF,function(c){if(c)return o(c);o(null,s,HF(s,n,!1))})})}function x7(t){let e=wa(t),r=e[0],n=by(r);return Ie.mkdirSync(n,r.mode||LF),{name:n,removeCallback:HF(n,r,!0)}}function A7(t,e){let r=function(n){if(n&&!yy(n))return e(n);e()};0<=t[0]?Ie.close(t[0],function(){Ie.unlink(t[1],r)}):Ie.unlink(t[1],r)}function O7(t){let e=null;try{0<=t[0]&&Ie.closeSync(t[0])}catch(r){if(!T7(r)&&!yy(r))throw r}finally{try{Ie.unlinkSync(t[1])}catch(r){yy(r)||(e=r)}}if(e!==null)throw e}function gy(t,e,r,n){let o=Sf(O7,[e,t],n),i=Sf(A7,[e,t],n,o);return r.keep||ba.unshift(o),n?o:i}function HF(t,e,r){let n=e.unsafeCleanup?C7:Ie.rmdir.bind(Ie),o=e.unsafeCleanup?qF:UF,i=Sf(o,t,r),a=Sf(n,t,r,i);return e.keep||ba.unshift(i),r?i:a}function Sf(t,e,r,n){let o=!1;return function i(a){if(!o){let s=n||i,u=ba.indexOf(s);return u>=0&&ba.splice(u,1),o=!0,r||t===UF||t===qF?t(e):t(e,a||function(){})}}}function F7(){if(MF)for(;ba.length;)try{ba[0]()}catch{}}function IF(t){let e=[],r=null;try{r=PF.randomBytes(t)}catch{r=PF.pseudoRandomBytes(t)}for(let n=0;n<t;n++)e.push($F[r[n]%$F.length]);return e.join("")}function sr(t){return typeof t>"u"}function wa(t,e){if(typeof t=="function")return[{},t];if(sr(t))return[{},e];let r={};for(let n of Object.getOwnPropertyNames(t))r[n]=t[n];return[r,e]}function k7(t,e,r){let n=bt.isAbsolute(t)?t:bt.join(e,t);Ie.stat(n,function(o){o?Ie.realpath(bt.dirname(n),function(i,a){if(i)return r(i);r(null,bt.join(a,bt.basename(n)))}):Ie.realpath(n,r)})}function P7(t,e){let r=bt.isAbsolute(t)?t:bt.join(e,t);try{return Ie.statSync(r),Ie.realpathSync(r)}catch{let o=Ie.realpathSync(bt.dirname(r));return bt.join(o,bt.basename(r))}}function VF(t){let e=t.tmpdir;if(!sr(t.name))return bt.join(e,t.dir,t.name);if(!sr(t.template))return bt.join(e,t.dir,t.template).replace(BF,IF(6));let r=[t.prefix?t.prefix:"tmp","-",process.pid,"-",IF(12),t.postfix?"-"+t.postfix:""].join("");return bt.join(e,t.dir,r)}function zF(t){if(!sr(t.name)){let e=t.name;if(bt.isAbsolute(e))throw new Error(`name option must not contain an absolute path, found "${e}".`);let r=bt.basename(e);if(r===".."||r==="."||r!==e)throw new Error(`name option must not contain a path, found "${e}".`)}if(!sr(t.template)&&!t.template.match(BF))throw new Error(`Invalid template, found "${t.template}".`);if(!sr(t.tries)&&isNaN(t.tries)||t.tries<0)throw new Error(`Invalid tries, found "${t.tries}".`);t.tries=sr(t.name)?t.tries||y7:1,t.keep=!!t.keep,t.detachDescriptor=!!t.detachDescriptor,t.discardDescriptor=!!t.discardDescriptor,t.unsafeCleanup=!!t.unsafeCleanup,t.prefix=sr(t.prefix)?"":t.prefix,t.postfix=sr(t.postfix)?"":t.postfix}function TF(t,e,r,n){if(sr(e))return n(null);k7(e,r,function(o,i){if(o)return n(o);let a=bt.relative(r,i);if(!i.startsWith(r))return n(new Error(`${t} option must be relative to "${r}", found "${a}".`));n(null,a)})}function RF(t,e,r){if(sr(e))return;let n=P7(e,r),o=bt.relative(r,n);if(!n.startsWith(r))throw new Error(`${t} option must be relative to "${r}", found "${o}".`);return o}function $7(t,e){B7(t,function(r,n){if(r)return e(r);t.tmpdir=n;try{zF(t,n)}catch(o){return e(o)}TF("dir",t.dir,n,function(o,i){if(o)return e(o);t.dir=sr(i)?"":i,TF("template",t.template,n,function(a,s){if(a)return e(a);t.template=s,e(null,t)})})})}function I7(t){let e=t.tmpdir=GF(t);zF(t,e);let r=RF("dir",t.dir,e);return t.dir=sr(r)?"":r,t.template=RF("template",t.template,e),t}function T7(t){return KF(t,-b7,"EBADF")}function yy(t){return KF(t,-w7,"ENOENT")}function KF(t,e,r){return D7?t.code===r:t.code===r&&t.errno===e}function R7(){MF=!0}function B7(t,e){return Ie.realpath(t&&t.tmpdir||xf.tmpdir(),e)}function GF(t){return Ie.realpathSync(t&&t.tmpdir||xf.tmpdir())}process.addListener(v7,F7);Object.defineProperty(bn.exports,"tmpdir",{enumerable:!0,configurable:!1,get:function(){return GF()}});bn.exports.dir=S7;bn.exports.dirSync=x7;bn.exports.file=E7;bn.exports.fileSync=_7;bn.exports.tmpName=Dy;bn.exports.tmpNameSync=by;bn.exports.setGracefulCleanup=R7});var Of=require("node:process");var Vy=fe(Hy(),1),{program:it,createCommand:wq,createArgument:vq,createOption:Cq,CommanderError:Eq,InvalidArgumentError:_q,InvalidOptionArgumentError:Sq,Command:xq,Argument:Aq,Option:Oq,Help:Fq}=Vy.default;var Cr={name:"@capgo/cli",version:"7.52.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":"^7.4.4","@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.9.1","@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 wt=fe(Yf(),1),Go=require("node:process"),vn=fe(require("node:readline"),1),ed=fe(require("node:readline"),1),tD=require("node:stream"),rD=fe(Xf(),1);function P2({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 $2=P2();function nD(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace($2,"")}function oD(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var iD={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}})(iD);var I2=iD.exports,T2=oD(I2),R2=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},B2=oD(R2);function _a(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=nD(t),t.length===0))return 0;t=t.replace(B2()," ");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(T2.eastAsianWidth(o)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}var Zf=10,Wy=(t=0)=>e=>`\x1B[${e+t}m`,Yy=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,Jy=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,je={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(je.modifier);var N2=Object.keys(je.color),L2=Object.keys(je.bgColor);[...N2,...L2];function j2(){let t=new Map;for(let[e,r]of Object.entries(je)){for(let[n,o]of Object.entries(r))je[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=je[n],t.set(o[0],o[1]);Object.defineProperty(je,e,{value:r,enumerable:!1})}return Object.defineProperty(je,"codes",{value:t,enumerable:!1}),je.color.close="\x1B[39m",je.bgColor.close="\x1B[49m",je.color.ansi=Wy(),je.color.ansi256=Yy(),je.color.ansi16m=Jy(),je.bgColor.ansi=Wy(Zf),je.bgColor.ansi256=Yy(Zf),je.bgColor.ansi16m=Jy(Zf),Object.defineProperties(je,{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=>je.rgbToAnsi256(...je.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)=>je.ansi256ToAnsi(je.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>je.ansi256ToAnsi(je.hexToAnsi256(e)),enumerable:!1}}),je}var U2=j2(),fu=new Set(["\x1B","\x9B"]),M2=39,rd="\x07",aD="[",q2="]",sD="m",nd=`${q2}8;;`,Xy=t=>`${fu.values().next().value}${aD}${t}${sD}`,Zy=t=>`${fu.values().next().value}${nd}${t}${rd}`,H2=t=>t.split(" ").map(e=>_a(e)),Qf=(t,e,r)=>{let n=[...e],o=!1,i=!1,a=_a(nD(t[t.length-1]));for(let[s,u]of n.entries()){let c=_a(u);if(a+c<=r?t[t.length-1]+=u:(t.push(u),a=0),fu.has(u)&&(o=!0,i=n.slice(s+1).join("").startsWith(nd)),o){i?u===rd&&(o=!1,i=!1):u===sD&&(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())},V2=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(_a(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},z2=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let n="",o,i,a=H2(t),s=[""];for(let[c,f]of t.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let d=_a(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(""),Qf(s,f,e);continue}if(d+a[c]>e&&d>0&&a[c]>0){if(r.wordWrap===!1&&d<e){Qf(s,f,e);continue}s.push("")}if(d+a[c]>e&&r.wordWrap===!1){Qf(s,f,e);continue}s[s.length-1]+=f}r.trim!==!1&&(s=s.map(c=>V2(c)));let u=[...s.join(`
108
108
  `)];for(let[c,f]of u.entries()){if(n+=f,fu.has(f)){let{groups:p}=new RegExp(`(?:\\${aD}(?<code>\\d+)m|\\${nd}(?<uri>.*)${rd})`).exec(u.slice(c).join(""))||{groups:{}};if(p.code!==void 0){let h=Number.parseFloat(p.code);o=h===M2?void 0:h}else p.uri!==void 0&&(i=p.uri.length===0?void 0:p.uri)}let d=U2.codes.get(Number(o));u[c+1]===`
109
109
  `?(i&&(n+=Zy("")),o&&d&&(n+=Xy(d))):f===`
110
110
  `&&(o&&d&&(n+=Xy(o)),i&&(n+=Zy(i)))}return n};function Qy(t,e,r){return String(t).normalize().replace(/\r\n/g,`
@@ -183,7 +183,7 @@ Location: ~/.capgo-credentials/credentials.json`),l.info(`
183
183
  \u26A0\uFE0F Cancelling build...`);let i=await fetch(`${t}/build/cancel/${e}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:n},body:JSON.stringify({app_id:r})});if(!i.ok){let s=await i.text();o||l.warn(`Could not cancel build: ${s}`);return}let a=await i.json();o||l.info(`Build cancelled (status: ${a.status})`)}catch(i){o||l.warn(`Failed to cancel build: ${i instanceof Error?i.message:String(i)}`)}}async function uM(t,e,r,n,o){if(!o)try{let i=await fetch(`${t}/build/logs/${e}?app_id=${encodeURIComponent(r)}`,{headers:{authorization:n}});if(!i.ok){l.warn("Could not stream logs, continuing...");return}let a=i.body?.getReader();if(!a)return;let s=new TextDecoder,u="";for(;;){let{done:c,value:f}=await a.read();if(c)break;u+=s.decode(f,{stream:!0});let d=u.split(`
184
184
  `);u=d.pop()||"";for(let p of d)if(p.startsWith("data: ")){let h=p.slice(6);h.trim()&&l.info(h)}}if(u.startsWith("data: ")){let c=u.slice(6);c.trim()&&l.info(c)}}catch(i){o||l.warn(`Log streaming interrupted${i instanceof Error?`: ${i.message}`:""}`)}}async function cM(t,e,r,n,o,i){let s=0;for(;s<120;)try{let u=await fetch(`${t}/build/status?job_id=${encodeURIComponent(e)}&app_id=${encodeURIComponent(r)}&platform=${n}`,{headers:{authorization:o}});if(!u.ok){i||l.warn(`Status check failed: ${u.status}`),await new Promise(f=>setTimeout(f,5e3)),s++;continue}let c=await u.json();if(c.status==="succeeded"||c.status==="failed")return c.status;await new Promise(f=>setTimeout(f,5e3)),s++}catch(u){i||l.warn(`Status check error: ${u}`),await new Promise(c=>setTimeout(c,5e3)),s++}return i||l.warn("Build status polling timed out"),"timeout"}async function lM(t,e){let r=new Set;if(e==="ios"){let n=(0,Pr.join)(t,"ios/App/Podfile");if((0,dn.existsSync)(n)){let i=(await(0,kr.readFile)(n,"utf-8")).matchAll(/pod\s+['"][^'"]+['"],\s*:path\s*=>\s*['"]\.\.\/\.\.\/node_modules\/([^'"]+)['"]/g);for(let a of i){let s=a[1];r.add(`node_modules/${s}/Package.swift`),r.add(`node_modules/${s}/*.podspec`),r.add(`node_modules/${s}/ios/`)}}}else if(e==="android"){let n=(0,Pr.join)(t,"android/capacitor.settings.gradle");if((0,dn.existsSync)(n)){let i=(await(0,kr.readFile)(n,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let a of i){let u=a[1].replace(/\/android$/,"");r.add(`node_modules/${u}/android/`)}}}return r}function w1(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 o of r)if(n.startsWith(o))return!0;return!1}function Rs(t,e,r,n,o){let i=(0,dn.readdirSync)(e);for(let a of i){let s=(0,Pr.join)(e,a),u=r?`${r}/${a}`:a,c=(0,dn.statSync)(s);if(c.isDirectory()){if(a===".git"||a==="dist"||a==="build"||a===".angular"||a===".vite")continue;if(a===n){Rs(t,s,u,n,o);continue}if(a==="node_modules"){Rs(t,s,u,n,o);continue}if(a==="resources"){Rs(t,s,u,n,o);continue}let f=u.replace(/\\/g,"/");(w1(u,n,o)||Array.from(o).some(p=>p.startsWith(`${f}/`)))&&Rs(t,s,u,n,o)}else if(c.isFile()){if(a===".DS_Store"||a.endsWith(".log"))continue;w1(u,n,o)&&t.addLocalFile(s,r||void 0)}}}async function fM(t,e,r){let n=await lM(t,r),o=new C1.default;Rs(o,t,"",r,n),await(0,kr.writeFile)(e,o.toBuffer())}async function dM(t,e,r=!1){let n=Date.now(),o=e.verbose??!1;try{e.apikey=e.apikey||ne(r);let i=await te();if(t=t||i?.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 a=(0,Pr.resolve)(e.path||qn.default.cwd()),s=e.supaHost||"https://api.capgo.app",u=await re(e.apikey,e.supaHost,e.supaAnon);await ae(u,e.apikey,["write","all"]);let c=await Ct(u,t);r||(l.info(`Requesting native build for ${t}`),l.info(`Platform: ${e.platform}`),l.info(`Project: ${a}`),l.info(`
185
185
  \u{1F512} Security: Credentials are never stored on Capgo servers`),l.info(" They are used only during build and deleted after (max 24h)"),l.info(` Builds sent directly to app stores - Capgo keeps nothing
186
- `)),o&&l.info(`API host: ${s}`);let f={};e.buildCertificateBase64&&(f.BUILD_CERTIFICATE_BASE64=e.buildCertificateBase64),e.buildProvisionProfileBase64&&(f.BUILD_PROVISION_PROFILE_BASE64=e.buildProvisionProfileBase64),e.buildProvisionProfileBase64Prod&&(f.BUILD_PROVISION_PROFILE_BASE64_PROD=e.buildProvisionProfileBase64Prod),e.p12Password&&(f.P12_PASSWORD=e.p12Password),e.appleKeyId&&(f.APPLE_KEY_ID=e.appleKeyId),e.appleIssuerId&&(f.APPLE_ISSUER_ID=e.appleIssuerId),e.appleKeyContent&&(f.APPLE_KEY_CONTENT=e.appleKeyContent),e.appleProfileName&&(f.APPLE_PROFILE_NAME=e.appleProfileName),e.appStoreConnectTeamId&&(f.APP_STORE_CONNECT_TEAM_ID=e.appStoreConnectTeamId),e.androidKeystoreFile&&(f.ANDROID_KEYSTORE_FILE=e.androidKeystoreFile),e.keystoreKeyAlias&&(f.KEYSTORE_KEY_ALIAS=e.keystoreKeyAlias);let d=!!e.keystoreKeyPassword,p=!!e.keystoreStorePassword;d&&!p?(f.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,f.KEYSTORE_STORE_PASSWORD=e.keystoreKeyPassword):!d&&p?(f.KEYSTORE_KEY_PASSWORD=e.keystoreStorePassword,f.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword):d&&p&&(f.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,f.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword),e.playConfigJson&&(f.PLAY_CONFIG_JSON=e.playConfigJson);let h=await p1(t,e.platform,Object.keys(f).length>0?f:void 0),m={app_id:t,platform:e.platform};if(!h)throw r||(l.error("\u274C No credentials found for this app and platform"),l.error(""),l.error("You must provide credentials via:"),l.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),l.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),l.error(" 3. Saved credentials file:"),l.error(` npx @capgo/cli build credentials save --appId ${t} --platform ${e.platform}`),l.error(""),l.error("Documentation:"),l.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"?(h.BUILD_CERTIFICATE_BASE64||y.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)"),!h.P12_PASSWORD&&!r&&(l.warn("\u26A0\uFE0F P12_PASSWORD not provided - assuming certificate has no password"),l.warn(" If your certificate requires a password, provide it with --p12-password")),h.BUILD_PROVISION_PROFILE_BASE64||y.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)"),h.APPLE_KEY_ID||y.push("APPLE_KEY_ID (or --apple-key-id)"),h.APPLE_ISSUER_ID||y.push("APPLE_ISSUER_ID (or --apple-issuer-id)"),h.APPLE_KEY_CONTENT||y.push("APPLE_KEY_CONTENT (or --apple-key-content)"),h.APP_STORE_CONNECT_TEAM_ID||y.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")):e.platform==="android"&&(h.ANDROID_KEYSTORE_FILE||y.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)"),h.KEYSTORE_KEY_ALIAS||y.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)"),!h.KEYSTORE_KEY_PASSWORD&&!h.KEYSTORE_STORE_PASSWORD&&y.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)"),!h.PLAY_CONFIG_JSON&&!r&&l.warn("\u26A0\uFE0F PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")),y.length>0){if(!r){l.error(`\u274C Missing required credentials for ${e.platform}:`),l.error("");for(let _ of y)l.error(` \u2022 ${_}`);l.error(""),l.error("Provide credentials via:"),l.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),l.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),l.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),l.error(""),l.error("Documentation:"),l.error(` https://capgo.app/docs/cli/cloud-build/${e.platform}/`)}throw new Error(`Missing required credentials for ${e.platform}: ${y.join(", ")}`)}if(m.credentials=h,r||l.info("\u2713 Using credentials (merged from CLI args, env vars, and saved file)"),o){let _=Object.keys(h).filter(S=>h[S]);l.info(`Credentials provided: ${_.join(", ")}`)}r||l.info("Requesting build from Capgo...");let D=await fetch(`${s}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify(m)});if(!D.ok){let _=await D.text();throw new Error(`Failed to request build: ${D.status} - ${_}`)}let v=await D.json();r||(l.success(`Build job created: ${v.job_id}`),l.info(`Status: ${v.status}`)),o&&(l.info(`Upload URL: ${v.upload_url}`),l.info(`Upload expires: ${v.upload_expires_at}`)),await me(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 E=(0,Pr.join)((0,v1.tmpdir)(),`capgo-build-${Date.now()}`);await(0,kr.mkdir)(E,{recursive:!0});let g=(0,Pr.join)(E,`${(0,Pr.basename)(a)}.zip`);try{r||l.info(`Zipping ${e.platform} project from ${a}...`),await fM(a,g,e.platform);let S=((await(0,kr.stat)(g)).size/1024/1024).toFixed(2);r||l.success(`Created zip: ${g} (${S} MB)`),r||l.info("Uploading to builder..."),o&&(l.info(`Upload endpoint: ${v.upload_url}`),l.info(`File size: ${S} MB`),l.info(`Job ID: ${v.job_id}`));let P=(0,dn.readFileSync)(g),F=Ee();r||F.start("Uploading bundle"),await new Promise((Z,k)=>{let b=new ef.Upload(P,{endpoint:v.upload_url,chunkSize:5242880,metadata:{filename:(0,Pr.basename)(g),filetype:"application/zip"},headers:{authorization:e.apikey},onBeforeRequest(w){if(o){l.info(`[TUS] ${w.getMethod()} ${w.getURL()}`);let C=w.getHeader("authorization");l.info(`[TUS] Authorization header present: ${!!C}`)}},onAfterResponse(w,C){if(o){l.info(`[TUS] Response status: ${C.getStatus()}`);let O=C.getHeader("upload-offset"),R=C.getHeader("tus-resumable");l.info(`[TUS] Upload-Offset: ${O}, Tus-Resumable: ${R}`)}},onError(w){if(r||(F.stop("Upload failed"),l.error(`Upload error: ${w.message}`)),w instanceof ef.DetailedError){let C=w.originalResponse?.getBody(),O=w.originalResponse?.getStatus(),R=w.originalRequest?.getURL();o&&(l.error(`[TUS] Request URL: ${R}`),l.error(`[TUS] Response status: ${O}`),l.error(`[TUS] Response body: ${C}`));let $="Unknown error";try{let H=JSON.parse(C||'{"error": "unknown error"}');$=H.status||H.error||H.message||"unknown error"}catch{$=C||w.message}k(new Error(`TUS upload failed: ${$}`))}else k(new Error(`TUS upload failed: ${w.message||w.toString()}`))},onProgress(w,C){let O=(w/C*100).toFixed(2);r||F.message(`Uploading ${O}%`)},onSuccess(){r||F.stop("Upload complete!"),o&&l.success("TUS upload completed successfully"),Z()}});o&&l.info("[TUS] Starting upload..."),b.start()}),r||l.info("Starting build job...");let B=await fetch(`${s}/build/start/${v.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify({app_id:t})});if(!B.ok){let Z=await B.text();throw new Error(`Failed to start build: ${B.status} - ${Z}`)}let T=await B.json();r||(l.success("Build started successfully!"),l.info(`Job ID: ${v.job_id}`),l.info(`Streaming build logs...
186
+ `)),o&&l.info(`API host: ${s}`);let f={};e.buildCertificateBase64&&(f.BUILD_CERTIFICATE_BASE64=e.buildCertificateBase64),e.buildProvisionProfileBase64&&(f.BUILD_PROVISION_PROFILE_BASE64=e.buildProvisionProfileBase64),e.buildProvisionProfileBase64Prod&&(f.BUILD_PROVISION_PROFILE_BASE64_PROD=e.buildProvisionProfileBase64Prod),e.p12Password&&(f.P12_PASSWORD=e.p12Password),e.appleKeyId&&(f.APPLE_KEY_ID=e.appleKeyId),e.appleIssuerId&&(f.APPLE_ISSUER_ID=e.appleIssuerId),e.appleKeyContent&&(f.APPLE_KEY_CONTENT=e.appleKeyContent),e.appleProfileName&&(f.APPLE_PROFILE_NAME=e.appleProfileName),e.appStoreConnectTeamId&&(f.APP_STORE_CONNECT_TEAM_ID=e.appStoreConnectTeamId),e.androidKeystoreFile&&(f.ANDROID_KEYSTORE_FILE=e.androidKeystoreFile),e.keystoreKeyAlias&&(f.KEYSTORE_KEY_ALIAS=e.keystoreKeyAlias);let d=!!e.keystoreKeyPassword,p=!!e.keystoreStorePassword;d&&!p?(f.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,f.KEYSTORE_STORE_PASSWORD=e.keystoreKeyPassword):!d&&p?(f.KEYSTORE_KEY_PASSWORD=e.keystoreStorePassword,f.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword):d&&p&&(f.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,f.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword),e.playConfigJson&&(f.PLAY_CONFIG_JSON=e.playConfigJson);let h=await p1(t,e.platform,Object.keys(f).length>0?f:void 0),m={app_id:t,platform:e.platform};if(!h)throw r||(l.error("\u274C No credentials found for this app and platform"),l.error(""),l.error("You must provide credentials via:"),l.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),l.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),l.error(" 3. Saved credentials file:"),l.error(` npx @capgo/cli build credentials save --appId ${t} --platform ${e.platform}`),l.error(""),l.error("Documentation:"),l.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"?(h.BUILD_CERTIFICATE_BASE64||y.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)"),!h.P12_PASSWORD&&!r&&(l.warn("\u26A0\uFE0F P12_PASSWORD not provided - assuming certificate has no password"),l.warn(" If your certificate requires a password, provide it with --p12-password")),h.BUILD_PROVISION_PROFILE_BASE64||y.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)"),h.APPLE_KEY_ID||y.push("APPLE_KEY_ID (or --apple-key-id)"),h.APPLE_ISSUER_ID||y.push("APPLE_ISSUER_ID (or --apple-issuer-id)"),h.APPLE_KEY_CONTENT||y.push("APPLE_KEY_CONTENT (or --apple-key-content)"),h.APP_STORE_CONNECT_TEAM_ID||y.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")):e.platform==="android"&&(h.ANDROID_KEYSTORE_FILE||y.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)"),h.KEYSTORE_KEY_ALIAS||y.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)"),!h.KEYSTORE_KEY_PASSWORD&&!h.KEYSTORE_STORE_PASSWORD&&y.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)"),!h.PLAY_CONFIG_JSON&&!r&&l.warn("\u26A0\uFE0F PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")),y.length>0){if(!r){l.error(`\u274C Missing required credentials for ${e.platform}:`),l.error("");for(let _ of y)l.error(` \u2022 ${_}`);l.error(""),l.error("Provide credentials via:"),l.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),l.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),l.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),l.error(""),l.error("Documentation:"),l.error(` https://capgo.app/docs/cli/cloud-build/${e.platform}/`)}throw new Error(`Missing required credentials for ${e.platform}: ${y.join(", ")}`)}if(m.credentials=h,r||l.info("\u2713 Using credentials (merged from CLI args, env vars, and saved file)"),o){let _=Object.keys(h).filter(S=>h[S]);l.info(`Credentials provided: ${_.join(", ")}`)}r||l.info("Requesting build from Capgo...");let D=await fetch(`${s}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify(m)});if(!D.ok){let _=await D.text();throw new Error(`Failed to request build: ${D.status} - ${_}`)}let v=await D.json();r||(l.success(`Build job created: ${v.job_id}`),l.info(`Status: ${v.status}`)),o&&(l.info(`Upload URL: ${v.upload_url}`),l.info(`Upload expires: ${v.upload_expires_at}`)),await me(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 E=(0,Pr.join)((0,v1.tmpdir)(),`capgo-build-${Date.now()}`);await(0,kr.mkdir)(E,{recursive:!0});let g=(0,Pr.join)(E,`${(0,Pr.basename)(a)}.zip`);try{r||l.info(`Zipping ${e.platform} project from ${a}...`),await fM(a,g,e.platform);let S=((await(0,kr.stat)(g)).size/1024/1024).toFixed(2);r||l.success(`Created zip: ${g} (${S} MB)`),r||l.info("Uploading to builder..."),o&&(l.info(`Upload endpoint: ${v.upload_url}`),l.info(`File size: ${S} MB`),l.info(`Job ID: ${v.job_id}`));let P=(0,dn.readFileSync)(g),F=Ee();r||F.start("Uploading bundle"),await new Promise((Z,k)=>{let b=new ef.Upload(P,{endpoint:v.upload_url,chunkSize:5242880,metadata:{filename:(0,Pr.basename)(g),filetype:"application/zip"},headers:{authorization:e.apikey},onBeforeRequest(w){if(o){l.info(`[TUS] ${w.getMethod()} ${w.getURL()}`);let C=w.getHeader("authorization");l.info(`[TUS] Authorization header present: ${!!C}`)}},onAfterResponse(w,C){if(o){l.info(`[TUS] Response status: ${C.getStatus()}`);let O=C.getHeader("upload-offset"),R=C.getHeader("tus-resumable");l.info(`[TUS] Upload-Offset: ${O}, Tus-Resumable: ${R}`)}},onError(w){if(r||(F.stop("Upload failed"),l.error(`Upload error: ${w.message}`)),w instanceof ef.DetailedError){let C=w.originalResponse?.getBody(),O=w.originalResponse?.getStatus(),R=w.originalRequest?.getURL();o&&(l.error(`[TUS] Request URL: ${R}`),l.error(`[TUS] Response status: ${O}`),l.error(`[TUS] Response body: ${C}`));let $="Unknown error";try{let H=JSON.parse(C||'{"error": "unknown error"}');$=H.status||H.error||H.message||"unknown error"}catch{$=C||w.message}k(new Error(`TUS upload failed: ${$}`))}else k(new Error(`TUS upload failed: ${w.message||w.toString()}`))},onProgress(w,C){let O=(w/C*100).toFixed(2);r||F.message(`Uploading ${O}%`)},onSuccess(){r||F.stop("Upload complete!"),o&&l.success("TUS upload completed successfully"),Z()}});o&&l.info("[TUS] Starting upload..."),b.start()}),r||l.info("Starting build job...");let B=await fetch(`${s}/build/start/${v.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify({app_id:t})});if(!B.ok){let Z=await B.text();throw new Error(`Failed to start build: ${B.status} - ${Z}`)}let T=await B.json();r||(l.success("Build started!"),l.info(`Streaming build logs...
187
187
  `),l.info(`Press Ctrl+C to cancel the build
188
188
  `));let j=!1,A=async()=>{j||(j=!0,await sM(s,v.job_id,t,e.apikey,r),qn.default.exit(130))};qn.default.on("SIGINT",A),qn.default.on("SIGTERM",A);let M;try{await uM(s,v.job_id,t,e.apikey,r),M=await cM(s,v.job_id,t,e.platform,e.apikey,r)}finally{qn.default.off("SIGINT",A),qn.default.off("SIGTERM",A)}r||(M==="succeeded"?l.success("Build completed successfully!"):M==="failed"?l.error("Build failed"):l.warn(`Build finished with status: ${M}`));let L=((Date.now()-n)/1e3).toFixed(2);return await me(e.apikey,{channel:"native-builder",event:M==="succeeded"?"Build succeeded":"Build failed",icon:M==="succeeded"?"\u2705":"\u274C",user_id:c,tags:{"app-id":t,platform:e.platform,status:M||"unknown",time:L},notify:!1}).catch(),{success:M==="succeeded",jobId:v.job_id,uploadUrl:v.upload_url,status:M||T.status||v.status}}finally{await(0,kr.rm)(E,{recursive:!0,force:!0})}}catch(i){let a=i instanceof Error?i.message:String(i);return r||l.error(a),{success:!1,error:a}}}async function E1(t,e){(await dM(t,e,!1)).success||qn.default.exit(1)}async function _1(t,e,r,n={}){let{silent:o=!1,autoUnlink:i=!1}=n,{data:a,error:s}=await t.from("channels").select().eq("app_id",e).eq("version",r.id);if(s)throw o||l.error(`Cannot check Version ${e}@${r.name}: ${q(s)}`),new Error(`Cannot check version ${e}@${r.name}: ${q(s)}`);if(!a?.length)return;if(o)throw new Error(`Version ${e}@${r.name} is used in ${a.length} channel(s)`);ee(`\u274C Version ${e}@${r.name} is used in ${a.length} channel${a.length>1?"s":""}`);let u=i;if(i||(u=await ue({message:"unlink it?"})===!0),!u)throw l.error("Unlink it first"),new Error(`Version ${e}@${r.name} is still linked to channel(s)`);for(let c of a){let f=Ee();f.start(`Unlinking channel ${c.name}`);let d=await qg(t,e,{silent:o});if(!d)throw f.stop(`Cannot find unknown version for ${e}`),new Error(`Cannot find unknown version for ${e}`);let{error:p}=await t.from("channels").update({version:d.id}).eq("id",c.id);if(p)throw f.stop(`Cannot update channel ${c.name} ${q(p)}`),new Error(`Cannot update channel ${c.name}: ${q(p)}`);f.stop(`\u2705 Channel ${c.name} unlinked`)}K(`Version unlinked from ${a.length} channel${a.length>1?"s":""}`)}async function qg(t,e,r={}){let{silent:n=!1}=r,o=[3e3,7e3],i;for(let a=0;a<=2;a++){let{data:s,error:u}=await t.from("app_versions").select("id").eq("app_id",e).eq("name","unknown").single();if(!u)return s;i=u,a<2&&await new Promise(c=>setTimeout(c,o[a]))}throw n||l.error(`Cannot call findUnknownVersion as it returned an error.
189
189
  ${q(i)}`),new Error(`Cannot retrieve unknown version for app ${e}: ${q(i)}`)}function S1(t,e){return t.from("channels").insert(e).select().single()}function x1(t,e,r,n){return t.from("channels").delete().eq("name",e).eq("app_id",r).single()}function A1(t,e,r){return t.from("channels").select().eq("app_id",e).eq("name",r).single()}function O1(t,e,r){return t.from("channel_devices").delete().eq("app_id",e).eq("channel_id",r)}function F1(t,e,r){return t.from("channels").select(`
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
- "version": "7.51.0",
3
+ "version": "7.52.0",
4
4
  "description": "A CLI to upload to capgo servers",
5
5
  "author": "Martin martin@capgo.app",
6
6
  "license": "Apache 2.0",
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/build/request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAY3C;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAE/B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,mCAAmC,CAAC,EAAE,MAAM,CAAA;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAGlC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAGzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,+BAA+B,CAAC,EAAE,MAAM,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAG9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,CAAA;QACV,EAAE,EAAE,MAAM,CAAA;QACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,GAAG,IAAI,CAAA;CACT;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAgTD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsdnI;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMpG"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/build/request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAY3C;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAE/B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,mCAAmC,CAAC,EAAE,MAAM,CAAA;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAGlC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAGzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,+BAA+B,CAAC,EAAE,MAAM,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAG9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,CAAA;QACV,EAAE,EAAE,MAAM,CAAA;QACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,GAAG,IAAI,CAAA;CACT;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAgTD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqdnI;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMpG"}
package/dist/src/sdk.js CHANGED
@@ -283,7 +283,7 @@ ${J.default.gray(gu)} ${t}
283
283
  `);let w=0,C=0;f(),s=setInterval(()=>{if(n&&a===u)return;y(),u=a;let F=J.default.magenta(e[w]);if(n)process.stdout.write(`${F} ${a}...`);else if(t==="timer")process.stdout.write(`${F} ${a} ${E(c)}`);else{let b=".".repeat(Math.floor(C)).slice(0,3);process.stdout.write(`${F} ${a}${b}`)}w=w+1<e.length?w+1:0,C=C<e.length?C+.125:0},r)},p=(D="",w=0)=>{o=!1,clearInterval(s),y();let C=w===0?J.default.green(jm):w===1?J.default.red(d_):J.default.red(p_);a=v(D??a),t==="timer"?process.stdout.write(`${C} ${a} ${E(c)}
284
284
  `):process.stdout.write(`${C} ${a}
285
285
  `),m(),i()};return{start:A,stop:p,message:(D="")=>{a=v(D??a)}}};function m_(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?m_("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))+m_("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(`
286
- `)}};var h8=require("node:child_process"),Te=require("node:fs"),Kp=require("node:os"),xe=ve(require("node:path")),Un=require("node:process"),os=ve(Ll());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},Bl=(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"}},g_=(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 jl(t,e){if(isNaN(t)||isNaN(e))throw new Error("Cannot compare against non-numbers");return t===e?0:t<e?-1:1}function w_(t=[],e=[]){return t.length&&!e.length?-1:!t.length&&e.length?1:0}function Vm(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 So="0|[1-9]\\d*",n4="\\d*[a-zA-Z-][a-zA-Z0-9-]*",i4=`(?<major>${So})\\.(?<minor>${So})\\.(?<patch>${So})`,y_=`(?:${So}|${n4})`,v_=`(?:-(?<prerelease>${y_}(?:\\.${y_})*))`,D_="[0-9A-Za-z-]+",E_=`(?:\\+(?<buildmetadata>${D_}(?:\\.${D_})*))`,b_=`v?${i4}${v_}?${E_}?`,__=new RegExp(`^${b_}$`),C_="(?:<|>)?=?",s4="x|X|\\*",Hm=`${So}|${s4}`,Ml=`[v=\\s]*(?<major>${Hm})(?:\\.(?<minor>${Hm})(?:\\.(?<patch>${Hm})${v_}?${E_}?)?)?`,S_=new RegExp(`^(?<operator>~>?|\\^|${C_})\\s*${Ml}$`),A_=new RegExp(`^(?<operator>${C_})\\s*(${b_})$|^$`);function zm(t){return typeof t=="number"&&!Number.isNaN(t)&&(!Number.isFinite(t)||0<=t&&t<=Number.MAX_SAFE_INTEGER)}var Km=256;var o4=new RegExp(`^${So}$`);function Qt(t){return t.split(".").filter(Boolean).map(e=>{if(o4.test(e)){let r=Number(e);if(zm(r))return r}return e})}function tn(t){return t.split(".").filter(Boolean)}function Ii(t,e){let r=Number(t);if(!zm(r))throw new TypeError(e);return r}function Gn(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:jl(t.major,e.major)||jl(t.minor,e.minor)||jl(t.patch,e.patch)||w_(t.prerelease,e.prerelease)||Vm(t.prerelease,e.prerelease)}function Gm(t){return t.toFixed(0)}function rn(t){let e=Gm(t.major),r=Gm(t.minor),n=Gm(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 a4(t,e){if(Gn(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 Ul(t,e){for(let r of e)if(!a4(t,r))return!1;if(t.prerelease&&t.prerelease.length>0){for(let r of e){if(Gn(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=>Ul(t,r))}function u4(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=u4(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?tn(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 ql={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},Ao={operator:void 0,...ql};function Wm(t,e){return er(t,e)>0}function ds(t,e){return er(t,e)<0}function c4(t){let r=t.match(A_)?.groups;if(!r)return null;let{operator:n,prerelease:i,buildmetadata:s}=r,o=r.major?{major:Ii(r.major,`Cannot parse comparator ${t}: invalid major version`),minor:Ii(r.minor,`Cannot parse comparator ${t}: invalid minor version`),patch:Ii(r.patch,`Cannot parse comparator ${t}: invalid patch version`),prerelease:i?Qt(i):[],build:s?tn(s):[]}:ql;return{operator:n||void 0,...o}}function ze(t){return!t||t.toLowerCase()==="x"||t==="*"}function l4(t){if(!ze(t.major))return ze(t.minor)?{operator:">=",major:+t.major,minor:0,patch:0,prerelease:[],build:[]}:ze(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 f4(t){if(!ze(t.major))return ze(t.minor)?{operator:"<",major:+t.major+1,minor:0,patch:0,prerelease:[],build:[]}:ze(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 h4(t){let e=t.match(new RegExp(`^${Ml}`)),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(`^${Ml}\\s*$`))?.groups;if(!a)return null;let u=l4(r),c=f4(a);return[u,c].filter(Boolean)}function d4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[Ao];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 p4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[Ao];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 m4(t){let e=ze(t.major),r=ze(t.minor),n=ze(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=tn(t.build??"");return[{operator:"<",major:i,minor:s,patch:o,prerelease:a,build:u}]}function g4(t){let e=ze(t.minor),r=ze(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=tn(t.build??"");return[{operator:"<=",major:n,minor:i,patch:s,prerelease:o,build:a}]}function y4(t){let e=ze(t.major),r=ze(t.minor),n=ze(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=tn(t.build??"");return[{operator:">",major:i,minor:s,patch:o,prerelease:a,build:u}]}function D4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[Ao];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=tn(t.build??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a,build:u}]}function w4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[Ao];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=tn(t.build??"");return[{operator:void 0,major:i,minor:s,patch:o,prerelease:a,build:u}]}function v4(t){let e=t.match(S_)?.groups;if(!e)return c4(t);switch(e.operator){case"^":return d4(e);case"~":case"~>":return p4(e);case"<":return m4(e);case"<=":return g4(e);case">":return y4(e);case">=":return D4(e);case"=":case"":return w4(e);default:throw new Error(`Cannot parse version range: '${e.operator}' is not a valid operator`)}}function E4(t){return t.split(/\s+/).flatMap(v4)}function Hl(t){let e=t.replaceAll(/(?<=<|>|=|~|\^)(\s+)/g,"").split(/\s*\|\|\s*/).map(r=>h4(r)||E4(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>Km)throw new TypeError(`Cannot parse version as version length is too long: length is ${t.length}, max length is ${Km}`);t=t.trim();let e=t.match(__)?.groups;if(!e)throw new TypeError(`Cannot parse version: ${t}`);let r=Ii(e.major,`Cannot parse version ${t}: invalid major version`),n=Ii(e.minor,`Cannot parse version ${t}: invalid minor version`),i=Ii(e.patch,`Cannot parse version ${t}: invalid patch version`),s=e.prerelease?Qt(e.prerelease):[],o=e.buildmetadata?tn(e.buildmetadata):[];return{major:r,minor:n,patch:i,prerelease:s,build:o}}function O_(t,e){let r=t.operator,n=e.operator;if(r===void 0)return Gn(t)?!0:wu(t,[[e]]);if(n===void 0)return Gn(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 b4(t){return t.every(e=>e.some(r=>_4(r)))}function _4(t){for(let e=0;e<t.length-1;e++){let r=t[e];for(let n of t.slice(e+1))if(!O_(r,n))return!1}return!0}function x_(t,e){return b4([t,e])&&t.some(r=>e.some(n=>r.every(i=>n.every(s=>O_(i,s)))))}function T_(t){try{return lt(t),!0}catch{return!1}}function I_(t,e){return er(t,e)>=0}var Qa=ve(OS()),db=ve(cD()),d8=ve($A()),Gp=ve(Kh());var Mi={name:"@capgo/cli",version:"7.51.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":"^7.4.4","@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.9.1","@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 Gh(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 Xe(){let t=await Gh("@capgo/cli")??"",e=t?.split(".")[0];t!==Mi.version&&g.warning(`\u{1F6A8} You are using @capgo/cli@${Mi.version} it's not the latest version.
286
+ `)}};var h8=require("node:child_process"),Te=require("node:fs"),Kp=require("node:os"),xe=ve(require("node:path")),Un=require("node:process"),os=ve(Ll());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},Bl=(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"}},g_=(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 jl(t,e){if(isNaN(t)||isNaN(e))throw new Error("Cannot compare against non-numbers");return t===e?0:t<e?-1:1}function w_(t=[],e=[]){return t.length&&!e.length?-1:!t.length&&e.length?1:0}function Vm(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 So="0|[1-9]\\d*",n4="\\d*[a-zA-Z-][a-zA-Z0-9-]*",i4=`(?<major>${So})\\.(?<minor>${So})\\.(?<patch>${So})`,y_=`(?:${So}|${n4})`,v_=`(?:-(?<prerelease>${y_}(?:\\.${y_})*))`,D_="[0-9A-Za-z-]+",E_=`(?:\\+(?<buildmetadata>${D_}(?:\\.${D_})*))`,b_=`v?${i4}${v_}?${E_}?`,__=new RegExp(`^${b_}$`),C_="(?:<|>)?=?",s4="x|X|\\*",Hm=`${So}|${s4}`,Ml=`[v=\\s]*(?<major>${Hm})(?:\\.(?<minor>${Hm})(?:\\.(?<patch>${Hm})${v_}?${E_}?)?)?`,S_=new RegExp(`^(?<operator>~>?|\\^|${C_})\\s*${Ml}$`),A_=new RegExp(`^(?<operator>${C_})\\s*(${b_})$|^$`);function zm(t){return typeof t=="number"&&!Number.isNaN(t)&&(!Number.isFinite(t)||0<=t&&t<=Number.MAX_SAFE_INTEGER)}var Km=256;var o4=new RegExp(`^${So}$`);function Qt(t){return t.split(".").filter(Boolean).map(e=>{if(o4.test(e)){let r=Number(e);if(zm(r))return r}return e})}function tn(t){return t.split(".").filter(Boolean)}function Ii(t,e){let r=Number(t);if(!zm(r))throw new TypeError(e);return r}function Gn(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:jl(t.major,e.major)||jl(t.minor,e.minor)||jl(t.patch,e.patch)||w_(t.prerelease,e.prerelease)||Vm(t.prerelease,e.prerelease)}function Gm(t){return t.toFixed(0)}function rn(t){let e=Gm(t.major),r=Gm(t.minor),n=Gm(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 a4(t,e){if(Gn(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 Ul(t,e){for(let r of e)if(!a4(t,r))return!1;if(t.prerelease&&t.prerelease.length>0){for(let r of e){if(Gn(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=>Ul(t,r))}function u4(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=u4(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?tn(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 ql={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},Ao={operator:void 0,...ql};function Wm(t,e){return er(t,e)>0}function ds(t,e){return er(t,e)<0}function c4(t){let r=t.match(A_)?.groups;if(!r)return null;let{operator:n,prerelease:i,buildmetadata:s}=r,o=r.major?{major:Ii(r.major,`Cannot parse comparator ${t}: invalid major version`),minor:Ii(r.minor,`Cannot parse comparator ${t}: invalid minor version`),patch:Ii(r.patch,`Cannot parse comparator ${t}: invalid patch version`),prerelease:i?Qt(i):[],build:s?tn(s):[]}:ql;return{operator:n||void 0,...o}}function ze(t){return!t||t.toLowerCase()==="x"||t==="*"}function l4(t){if(!ze(t.major))return ze(t.minor)?{operator:">=",major:+t.major,minor:0,patch:0,prerelease:[],build:[]}:ze(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 f4(t){if(!ze(t.major))return ze(t.minor)?{operator:"<",major:+t.major+1,minor:0,patch:0,prerelease:[],build:[]}:ze(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 h4(t){let e=t.match(new RegExp(`^${Ml}`)),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(`^${Ml}\\s*$`))?.groups;if(!a)return null;let u=l4(r),c=f4(a);return[u,c].filter(Boolean)}function d4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[Ao];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 p4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[Ao];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 m4(t){let e=ze(t.major),r=ze(t.minor),n=ze(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=tn(t.build??"");return[{operator:"<",major:i,minor:s,patch:o,prerelease:a,build:u}]}function g4(t){let e=ze(t.minor),r=ze(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=tn(t.build??"");return[{operator:"<=",major:n,minor:i,patch:s,prerelease:o,build:a}]}function y4(t){let e=ze(t.major),r=ze(t.minor),n=ze(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=tn(t.build??"");return[{operator:">",major:i,minor:s,patch:o,prerelease:a,build:u}]}function D4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[Ao];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=tn(t.build??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a,build:u}]}function w4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[Ao];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=tn(t.build??"");return[{operator:void 0,major:i,minor:s,patch:o,prerelease:a,build:u}]}function v4(t){let e=t.match(S_)?.groups;if(!e)return c4(t);switch(e.operator){case"^":return d4(e);case"~":case"~>":return p4(e);case"<":return m4(e);case"<=":return g4(e);case">":return y4(e);case">=":return D4(e);case"=":case"":return w4(e);default:throw new Error(`Cannot parse version range: '${e.operator}' is not a valid operator`)}}function E4(t){return t.split(/\s+/).flatMap(v4)}function Hl(t){let e=t.replaceAll(/(?<=<|>|=|~|\^)(\s+)/g,"").split(/\s*\|\|\s*/).map(r=>h4(r)||E4(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>Km)throw new TypeError(`Cannot parse version as version length is too long: length is ${t.length}, max length is ${Km}`);t=t.trim();let e=t.match(__)?.groups;if(!e)throw new TypeError(`Cannot parse version: ${t}`);let r=Ii(e.major,`Cannot parse version ${t}: invalid major version`),n=Ii(e.minor,`Cannot parse version ${t}: invalid minor version`),i=Ii(e.patch,`Cannot parse version ${t}: invalid patch version`),s=e.prerelease?Qt(e.prerelease):[],o=e.buildmetadata?tn(e.buildmetadata):[];return{major:r,minor:n,patch:i,prerelease:s,build:o}}function O_(t,e){let r=t.operator,n=e.operator;if(r===void 0)return Gn(t)?!0:wu(t,[[e]]);if(n===void 0)return Gn(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 b4(t){return t.every(e=>e.some(r=>_4(r)))}function _4(t){for(let e=0;e<t.length-1;e++){let r=t[e];for(let n of t.slice(e+1))if(!O_(r,n))return!1}return!0}function x_(t,e){return b4([t,e])&&t.some(r=>e.some(n=>r.every(i=>n.every(s=>O_(i,s)))))}function T_(t){try{return lt(t),!0}catch{return!1}}function I_(t,e){return er(t,e)>=0}var Qa=ve(OS()),db=ve(cD()),d8=ve($A()),Gp=ve(Kh());var Mi={name:"@capgo/cli",version:"7.52.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":"^7.4.4","@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.9.1","@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 Gh(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 Xe(){let t=await Gh("@capgo/cli")??"",e=t?.split(".")[0];t!==Mi.version&&g.warning(`\u{1F6A8} You are using @capgo/cli@${Mi.version} it's not the latest version.
287
287
  Please use @capgo/cli@${t}" or @capgo/cli@${e} to keep up to date with the latest features and bug fixes.`)}async function WT(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 b0=require("node:buffer"),XT=require("node:crypto"),FY=(()=>{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 RY(t){let e=4294967295;for(let r=0;r<t.length;r++){let n=t[r];e=FY[(e^n)&255]^e>>>8}return e=e^4294967295,(e>>>0).toString(16).padStart(8,"0")}async function ri(t,e="sha256"){let r=b0.Buffer.isBuffer(t)?t:b0.Buffer.from(t);if(e==="crc32")return RY(r);let n=(0,XT.createHash)(e);return n.update(r),n.digest("hex")}var al=ve(DM());async function wM(){let t=await(0,al.loadConfig)();return{config:t.app.extConfig,path:t.app.extConfigFilePath}}async function HE(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 Xa(t,e=!1){await HE("CapacitorUpdater",t,e)}var tu=".capgo_key",$r=".capgo_key_v2",Wp=`${tu}.pub`,wi=`${$r}.pub`,o8="https://capgo.app",a8="https://files.capgo.app",u8="https://api.capgo.app",c8="https://console.capgo.app",pb=12e4,Yle=1024*1024*20,Jle=1024*1024*1024,Zle=1024*1024*99,eu="package.json",ru=/^(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?`
288
288
  ${d8.default.render(t)}`:"";function zp(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 Qle(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,eu));return JSON.parse(n)}function as(t=Lr((0,Un.cwd)()),e=void 0){return Qle(t,e).version??""}function l8(t){let e=t.replace("^","").replace("~","");if(T_(e))try{let r=lt(e);return rn(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"),h=c((0,xe.join)(n,"package.json")).resolve(u),d=JSON.parse((0,Te.readFileSync)(h,"utf-8"));if(d.version)return d.version}catch{}let i=n,s=xe.default.parse(i).root;for(;i!==s;){let u=(0,xe.join)(i,"node_modules",t,eu);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,eu);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 Xp(e)).get(t);if(c)return c}catch{}return null}async function Xp(t=Lr((0,Un.cwd)()),e=void 0){let r=e?.split(",");if(r??=[(0,xe.join)(t,eu)],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,l8(o.dependencies[a]));for(let a in o.devDependencies)n.set(a,l8(o.devDependencies[a]))}return n}async function de(){try{let t=await wM();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 efe(t,e){let r=await de();return r?.config&&(r.config.plugins??={},r.config.plugins.extConfig??={},r.config.plugins[t]??={},r.config.plugins[t]={...r.config.plugins[t],...e},await HE(t,r)),r}async function p8(t){return efe("CapacitorUpdater",t)}async function Sn(){try{let t=await de(),e={host:t?.config?.plugins?.CapacitorUpdater?.localHost||o8,hostWeb:t?.config?.plugins?.CapacitorUpdater?.localWebHost||c8,hostFilesApi:t?.config?.plugins?.CapacitorUpdater?.localApiFiles||a8,hostApi:t?.config?.plugins?.CapacitorUpdater?.localApi||u8};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:o8,hostWeb:c8,hostFilesApi:a8,hostApi:u8}}}var tfe=/([A-Za-z0-9]+)\.(java|swift|kt|scala)$/;async function Yp(){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 m8(){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:Jle,maxChunkSize:Zle,alertUploadSize:Yle}}}async function pe(t,e,r){let n=await Yp();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,Qa.createClient)(n.supaHost,n.supaKey,{auth:{persistSession:!1},global:{headers:{capgkey:t}}})}async function rfe(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 g8(t,e){let{data:r}=await t.rpc("is_paying_org",{orgid:e}).single();return r||!1}async function y8(t,e){let{data:r}=await t.rpc("is_trial_org",{orgid:e}).single();return r||0}async function nfe(t,e){let{data:r}=await t.rpc("is_allowed_action_org",{orgid:e}).single();return!!r}async function ife(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||{}),nu=(t,e)=>t>=e;async function D8(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 w8(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",`
289
289
  `)}`),s=new Error(a.message)):g.warn(`${a.message.replaceAll("\\n",`
@@ -323,7 +323,7 @@ ${W(s)}`),new Error(`Cannot retrieve unknown version for app ${e}: ${W(s)}`)}fun
323
323
  \u26A0\uFE0F Cancelling build...`);let s=await fetch(`${t}/build/cancel/${e}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:n},body:JSON.stringify({app_id:r})});if(!s.ok){let a=await s.text();i||g.warn(`Could not cancel build: ${a}`);return}let o=await s.json();i||g.info(`Build cancelled (status: ${o.status})`)}catch(s){i||g.warn(`Failed to cancel build: ${s instanceof Error?s.message:String(s)}`)}}async function bfe(t,e,r,n,i){if(!i)try{let s=await fetch(`${t}/build/logs/${e}?app_id=${encodeURIComponent(r)}`,{headers:{authorization:n}});if(!s.ok){g.warn("Could not stream logs, continuing...");return}let o=s.body?.getReader();if(!o)return;let a=new TextDecoder,u="";for(;;){let{done:c,value:l}=await o.read();if(c)break;u+=a.decode(l,{stream:!0});let h=u.split(`
324
324
  `);u=h.pop()||"";for(let d of h)if(d.startsWith("data: ")){let f=d.slice(6);f.trim()&&g.info(f)}}if(u.startsWith("data: ")){let c=u.slice(6);c.trim()&&g.info(c)}}catch(s){i||g.warn(`Log streaming interrupted${s instanceof Error?`: ${s.message}`:""}`)}}async function _fe(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 Cfe(t,e){let r=new Set;if(e==="ios"){let n=(0,mn.join)(t,"ios/App/Podfile");if((0,vi.existsSync)(n)){let s=(await(0,pn.readFile)(n,"utf-8")).matchAll(/pod\s+['"][^'"]+['"],\s*:path\s*=>\s*['"]\.\.\/\.\.\/node_modules\/([^'"]+)['"]/g);for(let o of s){let a=o[1];r.add(`node_modules/${a}/Package.swift`),r.add(`node_modules/${a}/*.podspec`),r.add(`node_modules/${a}/ios/`)}}}else if(e==="android"){let n=(0,mn.join)(t,"android/capacitor.settings.gradle");if((0,vi.existsSync)(n)){let s=(await(0,pn.readFile)(n,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let o of s){let u=o[1].replace(/\/android$/,"");r.add(`node_modules/${u}/android/`)}}}return r}function t6(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)if(n.startsWith(i))return!0;return!1}function hl(t,e,r,n,i){let s=(0,vi.readdirSync)(e);for(let o of s){let a=(0,mn.join)(e,o),u=r?`${r}/${o}`:o,c=(0,vi.statSync)(a);if(c.isDirectory()){if(o===".git"||o==="dist"||o==="build"||o===".angular"||o===".vite")continue;if(o===n){hl(t,a,u,n,i);continue}if(o==="node_modules"){hl(t,a,u,n,i);continue}if(o==="resources"){hl(t,a,u,n,i);continue}let l=u.replace(/\\/g,"/");(t6(u,n,i)||Array.from(i).some(d=>d.startsWith(`${l}/`)))&&hl(t,a,u,n,i)}else if(c.isFile()){if(o===".DS_Store"||o.endsWith(".log"))continue;t6(u,n,i)&&t.addLocalFile(a,r||void 0)}}}async function Sfe(t,e,r){let n=await Cfe(t,r),i=new n6.default;hl(i,t,"",r,n),await(0,pn.writeFile)(e,i.toBuffer())}async function i6(t,e,r=!1){let n=Date.now(),i=e.verbose??!1;try{e.apikey=e.apikey||re(r);let s=await de();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,mn.resolve)(e.path||ho.default.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(`
325
325
  \u{1F512} Security: Credentials are never stored on Capgo servers`),g.info(" They are used only during build and deleted after (max 24h)"),g.info(` Builds sent directly to app stores - Capgo keeps nothing
326
- `)),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 h=!!e.keystoreKeyPassword,d=!!e.keystoreStorePassword;h&&!d?(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreKeyPassword):!h&&d?(l.KEYSTORE_KEY_PASSWORD=e.keystoreStorePassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword):h&&d&&(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword),e.playConfigJson&&(l.PLAY_CONFIG_JSON=e.playConfigJson);let f=await e6(t,e.platform,Object.keys(l).length>0?l:void 0),m={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(m.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(m)});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,mn.join)((0,r6.tmpdir)(),`capgo-build-${Date.now()}`);await(0,pn.mkdir)(A,{recursive:!0});let p=(0,mn.join)(A,`${(0,mn.basename)(o)}.zip`);try{r||g.info(`Zipping ${e.platform} project from ${o}...`),await Sfe(o,p,e.platform);let w=((await(0,pn.stat)(p)).size/1024/1024).toFixed(2);r||g.success(`Created zip: ${p} (${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 C=(0,vi.readFileSync)(p),F=xt();r||F.start("Uploading bundle"),await new Promise((z,L)=>{let S=new sm.Upload(C,{endpoint:E.upload_url,chunkSize:5242880,metadata:{filename:(0,mn.basename)(p),filetype:"application/zip"},headers:{authorization:e.apikey},onBeforeRequest(T){if(i){g.info(`[TUS] ${T.getMethod()} ${T.getURL()}`);let P=T.getHeader("authorization");g.info(`[TUS] Authorization header present: ${!!P}`)}},onAfterResponse(T,P){if(i){g.info(`[TUS] Response status: ${P.getStatus()}`);let $=P.getHeader("upload-offset"),q=P.getHeader("tus-resumable");g.info(`[TUS] Upload-Offset: ${$}, Tus-Resumable: ${q}`)}},onError(T){if(r||(F.stop("Upload failed"),g.error(`Upload error: ${T.message}`)),T instanceof sm.DetailedError){let P=T.originalResponse?.getBody(),$=T.originalResponse?.getStatus(),q=T.originalRequest?.getURL();i&&(g.error(`[TUS] Request URL: ${q}`),g.error(`[TUS] Response status: ${$}`),g.error(`[TUS] Response body: ${P}`));let M="Unknown error";try{let G=JSON.parse(P||'{"error": "unknown error"}');M=G.status||G.error||G.message||"unknown error"}catch{M=P||T.message}L(new Error(`TUS upload failed: ${M}`))}else L(new Error(`TUS upload failed: ${T.message||T.toString()}`))},onProgress(T,P){let $=(T/P*100).toFixed(2);r||F.message(`Uploading ${$}%`)},onSuccess(){r||F.stop("Upload complete!"),i&&g.success("TUS upload completed successfully"),z()}});i&&g.info("[TUS] Starting upload..."),S.start()}),r||g.info("Starting build job...");let b=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(!b.ok){let z=await b.text();throw new Error(`Failed to start build: ${b.status} - ${z}`)}let k=await b.json();r||(g.success("Build started successfully!"),g.info(`Job ID: ${E.job_id}`),g.info(`Streaming build logs...
326
+ `)),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 h=!!e.keystoreKeyPassword,d=!!e.keystoreStorePassword;h&&!d?(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreKeyPassword):!h&&d?(l.KEYSTORE_KEY_PASSWORD=e.keystoreStorePassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword):h&&d&&(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword),e.playConfigJson&&(l.PLAY_CONFIG_JSON=e.playConfigJson);let f=await e6(t,e.platform,Object.keys(l).length>0?l:void 0),m={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(m.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(m)});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,mn.join)((0,r6.tmpdir)(),`capgo-build-${Date.now()}`);await(0,pn.mkdir)(A,{recursive:!0});let p=(0,mn.join)(A,`${(0,mn.basename)(o)}.zip`);try{r||g.info(`Zipping ${e.platform} project from ${o}...`),await Sfe(o,p,e.platform);let w=((await(0,pn.stat)(p)).size/1024/1024).toFixed(2);r||g.success(`Created zip: ${p} (${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 C=(0,vi.readFileSync)(p),F=xt();r||F.start("Uploading bundle"),await new Promise((z,L)=>{let S=new sm.Upload(C,{endpoint:E.upload_url,chunkSize:5242880,metadata:{filename:(0,mn.basename)(p),filetype:"application/zip"},headers:{authorization:e.apikey},onBeforeRequest(T){if(i){g.info(`[TUS] ${T.getMethod()} ${T.getURL()}`);let P=T.getHeader("authorization");g.info(`[TUS] Authorization header present: ${!!P}`)}},onAfterResponse(T,P){if(i){g.info(`[TUS] Response status: ${P.getStatus()}`);let $=P.getHeader("upload-offset"),q=P.getHeader("tus-resumable");g.info(`[TUS] Upload-Offset: ${$}, Tus-Resumable: ${q}`)}},onError(T){if(r||(F.stop("Upload failed"),g.error(`Upload error: ${T.message}`)),T instanceof sm.DetailedError){let P=T.originalResponse?.getBody(),$=T.originalResponse?.getStatus(),q=T.originalRequest?.getURL();i&&(g.error(`[TUS] Request URL: ${q}`),g.error(`[TUS] Response status: ${$}`),g.error(`[TUS] Response body: ${P}`));let M="Unknown error";try{let G=JSON.parse(P||'{"error": "unknown error"}');M=G.status||G.error||G.message||"unknown error"}catch{M=P||T.message}L(new Error(`TUS upload failed: ${M}`))}else L(new Error(`TUS upload failed: ${T.message||T.toString()}`))},onProgress(T,P){let $=(T/P*100).toFixed(2);r||F.message(`Uploading ${$}%`)},onSuccess(){r||F.stop("Upload complete!"),i&&g.success("TUS upload completed successfully"),z()}});i&&g.info("[TUS] Starting upload..."),S.start()}),r||g.info("Starting build job...");let b=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(!b.ok){let z=await b.text();throw new Error(`Failed to start build: ${b.status} - ${z}`)}let k=await b.json();r||(g.success("Build started!"),g.info(`Streaming build logs...
327
327
  `),g.info(`Press Ctrl+C to cancel the build
328
328
  `));let R=!1,I=async()=>{R||(R=!0,await Efe(a,E.job_id,t,e.apikey,r),ho.default.exit(130))};ho.default.on("SIGINT",I),ho.default.on("SIGTERM",I);let B;try{await bfe(a,E.job_id,t,e.apikey,r),B=await _fe(a,E.job_id,t,e.platform,e.apikey,r)}finally{ho.default.off("SIGINT",I),ho.default.off("SIGTERM",I)}r||(B==="succeeded"?g.success("Build completed successfully!"):B==="failed"?g.error("Build failed"):g.warn(`Build finished with status: ${B}`));let j=((Date.now()-n)/1e3).toFixed(2);return await _e(e.apikey,{channel:"native-builder",event:B==="succeeded"?"Build succeeded":"Build failed",icon:B==="succeeded"?"\u2705":"\u274C",user_id:c,tags:{"app-id":t,platform:e.platform,status:B||"unknown",time:j},notify:!1}).catch(),{success:B==="succeeded",jobId:E.job_id,uploadUrl:E.upload_url,status:B||k.status||E.status}}finally{await(0,pn.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 Afe(t,e,r,n){for await(let i of t)n||g.warn(`Removing ${i.name} created on ${su(i.created_at)}`),await tm(e,r,i.name)}function Ofe(t,e,r){let n=[];for(let i of t??[]){let s=lt(i.name);Wm(s,e)&&ds(s,r)&&n.push(i)}return n}async function s6(t,e,r=!1){r||ae("Cleanup versions in Capgo"),await Xe(),e.apikey=e.apikey||re();let{bundle:n,keep:i=4}=e,s=e.force||!1,o=e.ignoreChannel||!1,a=await de();if(t=$e(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 rm(u,t),l=await q8(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),m=Eu(f,"major");r||g.info(`Querying available versions in Capgo between ${rn(f)} and ${rn(m)}`),c=Ofe(c,f,m),r||g.info(`Active versions in Capgo between ${rn(f)} and ${rn(m)}: ${c?.length??0}`)}let h=[],d=0;for(let f of c){let m=l.find(y=>y===f.id);d<i||m&&!o?(f.keep=m?"\u2705 (Linked to channel)":"\u2705",d+=1):(f.keep="\u274C",h.push(f))}if(!h.length)return r||g.warn("Nothing to be removed, aborting removal..."),{removed:0,kept:d};if(r||U8(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(st(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 Afe(h,u,t,r),r||le("Done \u2705"),{removed:h.length,kept:d}}async function o6(t,e,r=!1){r||ae("Check compatibility");let n={...e,apikey:e.apikey||re()},i=await de(),s=$e(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 em(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",h=n.text?"No":"\u274C";for(let d of u.finalCompatibility){let{name:f,localVersion:m,remoteVersion:y}=d,v=fo(d)?l:h;c.rows.push([f,m,y,v])}g.success("Compatibility"),g.success(c.toString())}return{finalCompatibility:u.finalCompatibility}}var _i=require("node:fs");var Ei=require("node:buffer"),Ut=require("node:crypto"),u6="aes-128-cbc",bi="base64",a6="hex",dl=Ut.constants.RSA_PKCS1_PADDING;function om(t){let e=(0,Ut.randomBytes)(16),r=(0,Ut.randomBytes)(16),n=e.toString(bi),i=(0,Ut.privateEncrypt)({key:t,padding:dl},r).toString(bi);return{sessionKey:r,ivSessionKey:`${n}:${i}`}}function uu(t,e,r){let[n]=r.split(":"),i=Ei.Buffer.from(n,bi),s=(0,Ut.createCipheriv)(u6,e,i);return s.setAutoPadding(!0),Ei.Buffer.concat([s.update(t),s.final()])}function c6(t,e,r){let[n,i]=e.split(":"),s=(0,Ut.publicDecrypt)({key:r,padding:dl},Ei.Buffer.from(i,bi)),o=Ei.Buffer.from(n,bi),a=(0,Ut.createDecipheriv)(u6,s,o);return a.setAutoPadding(!0),Ei.Buffer.concat([a.update(t),a.final()])}function cu(t,e){return(0,Ut.privateEncrypt)({key:e,padding:dl},Ei.Buffer.from(t,bi)).toString(bi)}function am(t,e){return(0,Ut.privateEncrypt)({key:e,padding:dl},Ei.Buffer.from(t,a6)).toString(a6)}function l6(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 f6(t,e){return(0,Ut.publicDecrypt)({key:e,padding:dl},Ei.Buffer.from(t,bi)).toString(bi)}function h6(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 xfe(t,e){let r=t.key||wi,n=e.config.plugins?.CapacitorUpdater?.publicKey;return(0,_i.existsSync)(r)?n=(0,_i.readFileSync)(r,"utf8"):!n&&t.keyData&&(n=t.keyData),{publicKey:n,fallbackKeyPath:r}}async function d6(t,e,r,n=!1){n||ae("Decrypt zip file");try{if(await Xe(),!(0,_i.existsSync)(t)){let h=`Zip not found at the path ${t}`;throw n||g.error(h),new Error(h)}let i=await de();if(!r.key&&!(0,_i.existsSync)(wi)&&!i.config.plugins?.CapacitorUpdater?.publicKey){let h=`Public Key not found at the path ${wi} or in ${i.path}`;throw n||g.error(h),new Error(h)}let{publicKey:s,fallbackKeyPath:o}=xfe(r,i);if(!s){let h=`Cannot find public key ${o} or as keyData option or in ${i.path}`;throw n||g.error(h),new Error(h)}let a=(0,_i.readFileSync)(t),u=c6(a,e,r.keyData??s),c=`${t}_decrypted.zip`;(0,_i.writeFileSync)(c,u),n||g.info(`Decrypted zip file at ${c}`);let l;if(r.checksum){let h=await ri(u,"sha256"),d=f6(r.checksum,r.keyData??s);if(l=h===d,!l){let f=`Checksum does not match ${h} !== ${d}`;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 p6(t,e,r,n=!1){n||ae("Delete bundle"),r.apikey=r.apikey||re();let i=await de();if(e=$e(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 tm(s,e,t),n||(g.success(`Bundle ${e}@${t} deleted in Capgo`),le("Done")),!0}var Ci=require("node:fs");function pl(t){console.error(W(t))}async function m6(t,e,r,n=!1){let{json:i}=r,s=!i&&!n;s&&(ae("Encryption"),await Xe());try{let o=await de(),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,Ci.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,Ci.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,Ci.existsSync)(c)&&(l=(0,Ci.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 h=(0,Ci.readFileSync)(t),{sessionKey:d,ivSessionKey:f}=om(l),m=uu(h,d,f),y=cu(e,l),v=`${t}_encrypted.zip`;return(0,Ci.writeFileSync)(v,m),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 zU=require("node:crypto"),bo=require("node:fs"),bm=require("node:process");var um=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 d={attributes:{}};for(;!(c()||l("?>"));){let f=s();if(!f)return d;d.attributes[f.name]=f.value}return u(/\?>\s*/),d}function n(){let h=u(/^<([\w-:.]+)\s*/);if(!h)return;let d={name:h[1],attributes:{},children:[]};for(;!(c()||l(">")||l("?>")||l("/>"));){let m=s();if(!m)return d;d.attributes[m.name]=m.value}if(u(/^\s*\/>\s*/))return d;u(/\??>\s*/),d.content=i();let f;for(;f=n();)d.children.push(f);return u(/^<\/[\w-:.]+>\s*/),d}function i(){let h=u(/^([^<]*)/);return h?a(h[1]):""}function s(){let h=u(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(h)return{name:h[1],value:a(o(h[2]))}}function o(h){return h.replace(/^['"]|['"]$/g,"")}function a(h){return h.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}function u(h){let d=t.match(h);if(d)return t=t.slice(d[0].length),d}function c(){return t.length===0}function l(h){return t.startsWith(h)}}var Hn=class extends Error{};var Jt=class extends Hn{},ml=class extends Hn{},cm=class extends Hn{bucketName;constructor(e){super(`Invalid bucket name: ${e}`),this.bucketName=e}},Vn=class extends Hn{objectName;constructor(e){super(`Invalid object name: ${e}`),this.objectName=e}},fs=class extends Hn{constructor(){super("accessKey is required")}},lu=class extends Hn{constructor(){super("secretKey is required")}},gl=class extends Hn{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}},Si=class extends Hn{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 g6(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 Si(t.status,n,i,{key:s,bucketName:o,resource:a,region:u})}catch{return new Si(t.status,"UnrecognizedError",`Error: Unexpected response code ${t.status} ${t.statusText}. Unable to parse response as XML.`)}}function y6(t){return typeof t!="number"||isNaN(t)?!1:t>=1&&t<=65535}function D6(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 hs(t){return!(!Tfe(t)||t.length===0)}function Tfe(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 po(t=""){let e={'"':"","&quot;":"","&#34;":"","&QUOT;":"","&#x00022":""};return t.replace(/^("|&quot;|&#34;)|("|&quot;|&#34;)$/g,r=>e[r])}function bb(t){return t.get("x-amz-version-id")??null}function mo(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 _b(t){return mo(t).slice(0,8)}function Cb(t,e){return`${_b(e)}/${t}/s3/aws4_request`}async function lm(t){return t instanceof Uint8Array||(t=new TextEncoder().encode(t)),yl(new Uint8Array(await crypto.subtle.digest("SHA-256",t)))}var Ife=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"],fm=class extends WritableStream{getResult;constructor({client:e,bucketName:r,objectName:n,partSize:i,metadata:s}){let o,a=1,u,c=[],l,h=[];super({start(){},async write(d,f){let y=a++;try{if(y==1&&d.length<i){let A=await e.makeRequest({method:"PUT",headers:new Headers({...s,"Content-Length":String(d.length)}),bucketName:r,objectName:n,payload:d});o={etag:po(A.headers.get("etag")??void 0),versionId:bb(A.headers)};return}y===1&&(u=(await Pfe({client:e,bucketName:r,objectName:n,metadata:s})).uploadId);let v={"Content-Length":String(d.length)};for(let A of Ife){let p=s[A];p&&(v[A]=p)}let E=e.makeRequest({method:"PUT",query:{partNumber:y.toString(),uploadId:u},headers:new Headers(v),bucketName:r,objectName:n,payload:d}).then(A=>{let p=A.headers.get("etag")??"";return p&&(p=p.replace(/^"/,"").replace(/"$/,"")),c.push({part:y,etag:p}),A});h.push(E.catch(A=>{l||(l=A)}))}catch(v){throw v}},async close(){if(!o)if(u){if(await Promise.all(h),l)throw l;c.sort((d,f)=>d.part>f.part?1:-1),o=await Ffe({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 Pfe(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 Ffe({client:t,bucketName:e,objectName:r,uploadId:n,etags:i}){let s=`
329
329
  <CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
- "version": "7.51.0",
3
+ "version": "7.52.0",
4
4
  "description": "A CLI to upload to capgo servers",
5
5
  "author": "Martin martin@capgo.app",
6
6
  "license": "Apache 2.0",