@capgo/cli 7.20.0 → 7.20.2
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 +7 -7
- package/dist/package.json +1 -1
- package/dist/src/api/channels.d.ts +1130 -136
- package/dist/src/api/channels.d.ts.map +1 -1
- package/dist/src/api/versions.d.ts.map +1 -1
- package/dist/src/app/list.d.ts +2 -0
- package/dist/src/app/list.d.ts.map +1 -1
- package/dist/src/bundle/list.d.ts.map +1 -1
- package/dist/src/bundle/upload.d.ts +1 -1
- package/dist/src/bundle/upload.d.ts.map +1 -1
- package/dist/src/channel/add.d.ts.map +1 -1
- package/dist/src/organisation/add.d.ts +1 -0
- package/dist/src/organisation/add.d.ts.map +1 -1
- package/dist/src/organisation/list.d.ts +5 -0
- package/dist/src/organisation/list.d.ts.map +1 -1
- package/dist/src/sdk.js +3 -3
- package/dist/src/types/supabase.types.d.ts +584 -69
- package/dist/src/types/supabase.types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +568 -79
- package/dist/src/utils.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -101,7 +101,7 @@ const config: CapacitorConfig = ${(0,t5.formatJSObject)(t)};
|
|
|
101
101
|
export default config;
|
|
102
102
|
`}});function y5(){try{return Im.default.statSync("/.dockerenv"),!0}catch{return!1}}function b5(){try{return Im.default.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function Bm(){return Rm===void 0&&(Rm=y5()||b5()),Rm}var Im,Rm,c1=tt(()=>{Im=ge(require("node:fs"),1)});function Mi(){return jm===void 0&&(jm=v5()||Bm()),jm}var l1,jm,v5,Nm=tt(()=>{l1=ge(require("node:fs"),1);c1();v5=()=>{try{return l1.default.statSync("/run/.containerenv"),!0}catch{return!1}}});var Lm,p1,d1,f1,kn,Um=tt(()=>{Lm=ge(require("node:process"),1),p1=ge(require("node:os"),1),d1=ge(require("node:fs"),1);Nm();f1=()=>{if(Lm.default.platform!=="linux")return!1;if(p1.default.release().toLowerCase().includes("microsoft"))return!Mi();try{return d1.default.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!Mi():!1}catch{return!1}},kn=Lm.default.env.__IS_WSL_TEST__?f1:f1()});var Mm,gs,w5,C5,qm,h1=tt(()=>{Mm=ge(require("node:process"),1),gs=ge(require("node:fs/promises"),1);Um();Um();w5=(()=>{let t="/mnt/",e;return async function(){if(e)return e;let r="/etc/wsl.conf",n=!1;try{await gs.default.access(r,gs.constants.F_OK),n=!0}catch{}if(!n)return t;let o=await gs.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}})(),C5=async()=>`${await w5()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,qm=async()=>kn?C5():`${Mm.default.env.SYSTEMROOT||Mm.default.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`});function $n(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 m1=tt(()=>{});async function Hm(){if(D1.default.platform!=="darwin")throw new Error("macOS only");let{stdout:t}=await E5("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]);return/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(t)?.groups.id??"com.apple.Safari"}var g1,D1,y1,E5,b1=tt(()=>{g1=require("node:util"),D1=ge(require("node:process"),1),y1=require("node:child_process"),E5=(0,g1.promisify)(y1.execFile)});async function C1(t,{humanReadableOutput:e=!0,signal:r}={}){if(v1.default.platform!=="darwin")throw new Error("macOS only");let n=e?[]:["-ss"],o={};r&&(o.signal=r);let{stdout:i}=await _5("osascript",["-e",t,n],o);return i.trim()}var v1,w1,Vm,_5,E1=tt(()=>{v1=ge(require("node:process"),1),w1=require("node:util"),Vm=require("node:child_process"),_5=(0,w1.promisify)(Vm.execFile)});async function zm(t){return C1(`tell application "Finder" to set app_path to application file id "${t}" as string
|
|
103
103
|
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var _1=tt(()=>{E1()});async function Gm(t=x5){let{stdout:e}=await t("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),r=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(e);if(!r)throw new ml(`Cannot find Windows browser in stdout: ${JSON.stringify(e)}`);let{id:n}=r.groups,o=S5[n];if(!o)throw new ml(`Unknown browser ID: ${n}`);return o}var x1,S1,x5,S5,ml,F1=tt(()=>{x1=require("node:util"),S1=require("node:child_process"),x5=(0,x1.promisify)(S1.execFile),S5={AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},MSEdgeDHTML:{name:"Edge",id:"com.microsoft.edge"},MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"}},ml=class extends Error{}});async function Wm(){if(gl.default.platform==="darwin"){let t=await Hm();return{name:await zm(t),id:t}}if(gl.default.platform==="linux"){let{stdout:t}=await F5("xdg-mime",["query","default","x-scheme-handler/http"]),e=t.trim();return{name:A5(e.replace(/.desktop$/,"").replace("-"," ")),id:e}}if(gl.default.platform==="win32")return Gm();throw new Error("Only macOS, Linux, and Windows are supported")}var A1,gl,O1,F5,A5,k1=tt(()=>{A1=require("node:util"),gl=ge(require("node:process"),1),O1=require("node:child_process");b1();_1();F1();F5=(0,A1.promisify)(O1.execFile),A5=t=>t.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase())});var Qm={};qr(Qm,{apps:()=>Pn,default:()=>T5,openApp:()=>P5});async function k5(){let t=await qm(),e=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,r=Jm.Buffer.from(e,"utf16le").toString("base64"),{stdout:n}=await O5(t,["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",r],{encoding:"utf8"}),o=n.trim(),i={ChromeHTML:"com.google.chrome",BraveHTML:"com.brave.Browser",MSEdgeHTM:"com.microsoft.edge",FirefoxURL:"org.mozilla.firefox"};return i[o]?{id:i[o]}:{}}function R1(t){if(typeof t=="string"||Array.isArray(t))return t;let{[P1]:e}=t;if(!e)throw new Error(`${P1} is not supported`);return e}function yl({[qi]:t},{wsl:e}){if(e&&kn)return R1(e);if(!t)throw new Error(`${qi} is not supported`);return R1(t)}var Ym,Jm,Xm,I1,B1,Zm,Dl,R5,O5,Km,$1,qi,P1,T1,Ds,$5,P5,Pn,T5,eg=tt(()=>{Ym=ge(require("node:process"),1),Jm=require("node:buffer"),Xm=ge(require("node:path"),1),I1=require("node:url"),B1=require("node:util"),Zm=ge(require("node:child_process"),1),Dl=ge(require("node:fs/promises"),1);h1();m1();k1();Nm();R5={},O5=(0,B1.promisify)(Zm.default.execFile),Km=Xm.default.dirname((0,I1.fileURLToPath)(R5.url)),$1=Xm.default.join(Km,"xdg-open"),{platform:qi,arch:P1}=Ym.default;T1=async(t,e)=>{let r;for(let n of t)try{return await e(n)}catch(o){r=o}throw r},Ds=async t=>{if(t={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...t},Array.isArray(t.app))return T1(t.app,s=>Ds({...t,app:s}));let{name:e,arguments:r=[]}=t.app??{};if(r=[...r],Array.isArray(e))return T1(e,s=>Ds({...t,app:{name:s,arguments:r}}));if(e==="browser"||e==="browserPrivate"){let s={"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"},u={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},c=kn?await k5():await Wm();if(c.id in s){let l=s[c.id];return e==="browserPrivate"&&r.push(u[l]),Ds({...t,app:{name:Pn[l],arguments:r}})}throw new Error(`${c.name} is not supported as a default browser`)}let n,o=[],i={};if(qi==="darwin")n="open",t.wait&&o.push("--wait-apps"),t.background&&o.push("--background"),t.newInstance&&o.push("--new"),e&&o.push("-a",e);else if(qi==="win32"||kn&&!Mi()&&!e){n=await qm(),o.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"),kn||(i.windowsVerbatimArguments=!0);let s=["Start"];t.wait&&s.push("-Wait"),e?(s.push(`"\`"${e}\`""`),t.target&&r.push(t.target)):t.target&&s.push(`"${t.target}"`),r.length>0&&(r=r.map(u=>`"\`"${u}\`""`),s.push("-ArgumentList",r.join(","))),t.target=Jm.Buffer.from(s.join(" "),"utf16le").toString("base64")}else{if(e)n=e;else{let s=!Km||Km==="/",u=!1;try{await Dl.default.access($1,Dl.constants.X_OK),u=!0}catch{}n=Ym.default.versions.electron??(qi==="android"||s||!u)?"xdg-open":$1}r.length>0&&o.push(...r),t.wait||(i.stdio="ignore",i.detached=!0)}qi==="darwin"&&r.length>0&&o.push("--args",...r),t.target&&o.push(t.target);let a=Zm.default.spawn(n,o,i);return t.wait?new Promise((s,u)=>{a.once("error",u),a.once("close",c=>{if(!t.allowNonzeroExitCode&&c>0){u(new Error(`Exited with code ${c}`));return}s(a)})}):(a.unref(),a)},$5=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a `target`");return Ds({...e,target:t})},P5=(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 Ds({...e,app:{name:t,arguments:r}})};Pn={};$n(Pn,"chrome",()=>yl({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{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"]}}));$n(Pn,"brave",()=>yl({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"]}}));$n(Pn,"firefox",()=>yl({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));$n(Pn,"edge",()=>yl({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));$n(Pn,"browser",()=>"browser");$n(Pn,"browserPrivate",()=>"browserPrivate");T5=$5});var Ml=x(fr=>{"use strict";fr.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;fr.find=(t,e)=>t.nodes.find(r=>r.type===e);fr.exceedsLimit=(t,e,r=1,n)=>n===!1||!fr.isInteger(t)||!fr.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=n;fr.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)};fr.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;fr.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;fr.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;fr.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);fr.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 ql=x((vY,Y2)=>{"use strict";var K2=Ml();Y2.exports=(t,e={})=>{let r=(n,o={})=>{let i=e.escapeInvalid&&K2.isInvalidBrace(o),a=n.invalid===!0&&e.escapeInvalid===!0,s="";if(n.value)return(i||a)&&K2.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 X2=x((wY,J2)=>{"use strict";J2.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var aS=x((CY,iS)=>{"use strict";var Z2=X2(),Po=(t,e,r)=>{if(Z2(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(Z2(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(Po.cache.hasOwnProperty(u))return Po.cache[u].result;let c=Math.min(t,e),l=Math.max(t,e);if(Math.abs(c-l)===1){let b=t+"|"+e;return n.capture?`(${b})`:n.wrap===!1?b:`(?:${b})`}let f=oS(t)||oS(e),d={min:t,max:e,a:c,b:l},h=[],m=[];if(f&&(d.isPadded=f,d.maxLen=String(d.max).length),c<0){let b=l<0?Math.abs(l):1;m=Q2(b,Math.abs(c),d,n),c=d.a=0}return l>=0&&(h=Q2(c,l,d,n)),d.negatives=m,d.positives=h,d.result=hU(m,h,n),n.capture===!0?d.result=`(${d.result})`:n.wrap!==!1&&h.length+m.length>1&&(d.result=`(?:${d.result})`),Po.cache[u]=d,d.result};function hU(t,e,r){let n=Cg(t,e,"-",!1,r)||[],o=Cg(e,t,"",!1,r)||[],i=Cg(t,e,"-?",!0,r)||[];return n.concat(i).concat(o).join("|")}function mU(t,e){let r=1,n=1,o=tS(t,r),i=new Set([e]);for(;t<=o&&o<=e;)i.add(o),r+=1,o=tS(t,r);for(o=rS(e+1,n)-1;t<o&&o<=e;)i.add(o),n+=1,o=rS(e+1,n)-1;return i=[...i],i.sort(yU),i}function gU(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let n=DU(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+=bU(u,c,r):a++}return a&&(i+=r.shorthand===!0?"\\d":"[0-9]"),{pattern:i,count:[a],digits:o}}function Q2(t,e,r,n){let o=mU(t,e),i=[],a=t,s;for(let u=0;u<o.length;u++){let c=o[u],l=gU(String(a),String(c),n),f="";if(!r.isPadded&&s&&s.pattern===l.pattern){s.count.length>1&&s.count.pop(),s.count.push(l.count[0]),s.string=s.pattern+nS(s.count),a=c+1;continue}r.isPadded&&(f=vU(c,r,n)),l.string=f+l.pattern+nS(l.count),i.push(l),a=c+1,s=l}return i}function Cg(t,e,r,n,o){let i=[];for(let a of t){let{string:s}=a;!n&&!eS(e,"string",s)&&i.push(r+s),n&&eS(e,"string",s)&&i.push(r+s)}return i}function DU(t,e){let r=[];for(let n=0;n<t.length;n++)r.push([t[n],e[n]]);return r}function yU(t,e){return t>e?1:e>t?-1:0}function eS(t,e,r){return t.some(n=>n[e]===r)}function tS(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function rS(t,e){return t-t%Math.pow(10,e)}function nS(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function bU(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function oS(t){return/^-?(0+)\d/.test(t)}function vU(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}}`}}Po.cache={};Po.clearCache=()=>Po.cache={};iS.exports=Po});var xg=x((EY,dS)=>{"use strict";var wU=require("util"),uS=aS(),sS=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),CU=t=>e=>t===!0?Number(e):String(e),Eg=t=>typeof t=="number"||typeof t=="string"&&t!=="",Fs=t=>Number.isInteger(+t),_g=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},EU=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,_U=(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},Vl=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length<e;)t="0"+t;return r?"-"+t:t},xU=(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=>Vl(String(s),r)).join("|")),t.negatives.length&&(i=`-(${n}${t.negatives.map(s=>Vl(String(s),r)).join("|")})`),o&&i?a=`${o}|${i}`:a=o||i,e.wrap?`(${n}${a})`:a},cS=(t,e,r,n)=>{if(r)return uS(t,e,{wrap:!1,...n});let o=String.fromCharCode(t);if(t===e)return o;let i=String.fromCharCode(e);return`[${o}-${i}]`},lS=(t,e,r)=>{if(Array.isArray(t)){let n=r.wrap===!0,o=r.capture?"":"?:";return n?`(${o}${t.join("|")})`:t.join("|")}return uS(t,e,r)},fS=(...t)=>new RangeError("Invalid range arguments: "+wU.inspect(...t)),pS=(t,e,r)=>{if(r.strictRanges===!0)throw fS([t,e]);return[]},SU=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},FU=(t,e,r=1,n={})=>{let o=Number(t),i=Number(e);if(!Number.isInteger(o)||!Number.isInteger(i)){if(n.strictRanges===!0)throw fS([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 l=_g(s)||_g(u)||_g(c),f=l?Math.max(s.length,u.length,c.length):0,d=l===!1&&EU(t,e,n)===!1,h=n.transform||CU(d);if(n.toRegex&&r===1)return cS(Vl(t,f),Vl(e,f),!0,n);let m={negatives:[],positives:[]},b=E=>m[E<0?"negatives":"positives"].push(Math.abs(E)),D=[],C=0;for(;a?o>=i:o<=i;)n.toRegex===!0&&r>1?b(o):D.push(_U(h(o,C),f,d)),o=a?o-r:o+r,C++;return n.toRegex===!0?r>1?xU(m,n,f):lS(D,null,{wrap:!1,...n}):D},AU=(t,e,r=1,n={})=>{if(!Fs(t)&&t.length>1||!Fs(e)&&e.length>1)return pS(t,e,n);let o=n.transform||(d=>String.fromCharCode(d)),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 cS(u,c,!1,n);let l=[],f=0;for(;s?i>=a:i<=a;)l.push(o(i,f)),i=s?i-r:i+r,f++;return n.toRegex===!0?lS(l,null,{wrap:!1,options:n}):l},Hl=(t,e,r,n={})=>{if(e==null&&Eg(t))return[t];if(!Eg(t)||!Eg(e))return pS(t,e,n);if(typeof r=="function")return Hl(t,e,1,{transform:r});if(sS(r))return Hl(t,e,0,r);let o={...n};return o.capture===!0&&(o.wrap=!0),r=r||o.step||1,Fs(r)?Fs(t)&&Fs(e)?FU(t,e,r,o):AU(t,e,Math.max(Math.abs(r),1),o):r!=null&&!sS(r)?SU(r,o):Hl(t,e,1,r)};dS.exports=Hl});var gS=x((_Y,mS)=>{"use strict";var OU=xg(),hS=Ml(),kU=(t,e={})=>{let r=(n,o={})=>{let i=hS.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 l=hS.reduce(n.nodes),f=OU(...l,{...e,wrap:!1,toRegex:!0,strictZeros:!0});if(f.length!==0)return l.length>1&&f.length>1?`(${f})`:f}if(n.nodes)for(let l of n.nodes)c+=r(l,n);return c};return r(t)};mS.exports=kU});var bS=x((xY,yS)=>{"use strict";var $U=xg(),DS=ql(),ra=Ml(),To=(t="",e="",r=!1)=>{let n=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ra.flatten(e).map(o=>`{${o}}`):e;for(let o of t)if(Array.isArray(o))for(let i of o)n.push(To(i,e,r));else for(let i of e)r===!0&&typeof i=="string"&&(i=`{${i}}`),n.push(Array.isArray(i)?To(o,i,r):o+i);return ra.flatten(n)},PU=(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(To(s.pop(),DS(o,e)));return}if(o.type==="brace"&&o.invalid!==!0&&o.nodes.length===2){s.push(To(s.pop(),["{}"]));return}if(o.nodes&&o.ranges>0){let f=ra.reduce(o.nodes);if(ra.exceedsLimit(...f,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let d=$U(...f,e);d.length===0&&(d=DS(o,e)),s.push(To(s.pop(),d)),o.nodes=[];return}let u=ra.encloseBrace(o),c=o.queue,l=o;for(;l.type!=="brace"&&l.type!=="root"&&l.parent;)l=l.parent,c=l.queue;for(let f=0;f<o.nodes.length;f++){let d=o.nodes[f];if(d.type==="comma"&&o.type==="brace"){f===1&&c.push(""),c.push("");continue}if(d.type==="close"){s.push(To(s.pop(),c,u));continue}if(d.value&&d.type!=="open"){c.push(To(c.pop(),d.value));continue}d.nodes&&n(d,o)}return c};return ra.flatten(n(t))};yS.exports=PU});var wS=x((SY,vS)=>{"use strict";vS.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:`
|
|
104
|
-
`,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 SS=x((FY,xS)=>{"use strict";var TU=ql(),{MAX_LENGTH:CS,CHAR_BACKSLASH:Sg,CHAR_BACKTICK:RU,CHAR_COMMA:IU,CHAR_DOT:BU,CHAR_LEFT_PARENTHESES:jU,CHAR_RIGHT_PARENTHESES:NU,CHAR_LEFT_CURLY_BRACE:LU,CHAR_RIGHT_CURLY_BRACE:UU,CHAR_LEFT_SQUARE_BRACKET:ES,CHAR_RIGHT_SQUARE_BRACKET:_S,CHAR_DOUBLE_QUOTE:MU,CHAR_SINGLE_QUOTE:qU,CHAR_NO_BREAK_SPACE:HU,CHAR_ZERO_WIDTH_NOBREAK_SPACE:VU}=wS(),zU=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(CS,r.maxLength):CS;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,l=0,f=0,d,h=()=>t[l++],m=b=>{if(b.type==="text"&&s.type==="dot"&&(s.type="text"),s&&s.type==="text"&&b.type==="text"){s.value+=b.value;return}return a.nodes.push(b),b.parent=a,b.prev=s,s=b,b};for(m({type:"bos"});l<c;)if(a=i[i.length-1],d=h(),!(d===VU||d===HU)){if(d===Sg){m({type:"text",value:(e.keepEscaping?d:"")+h()});continue}if(d===_S){m({type:"text",value:"\\"+d});continue}if(d===ES){u++;let b;for(;l<c&&(b=h());){if(d+=b,b===ES){u++;continue}if(b===Sg){d+=h();continue}if(b===_S&&(u--,u===0))break}m({type:"text",value:d});continue}if(d===jU){a=m({type:"paren",nodes:[]}),i.push(a),m({type:"text",value:d});continue}if(d===NU){if(a.type!=="paren"){m({type:"text",value:d});continue}a=i.pop(),m({type:"text",value:d}),a=i[i.length-1];continue}if(d===MU||d===qU||d===RU){let b=d,D;for(e.keepQuotes!==!0&&(d="");l<c&&(D=h());){if(D===Sg){d+=D+h();continue}if(D===b){e.keepQuotes===!0&&(d+=D);break}d+=D}m({type:"text",value:d});continue}if(d===LU){f++;let D={type:"brace",open:!0,close:!1,dollar:s.value&&s.value.slice(-1)==="$"||a.dollar===!0,depth:f,commas:0,ranges:0,nodes:[]};a=m(D),i.push(a),m({type:"open",value:d});continue}if(d===UU){if(a.type!=="brace"){m({type:"text",value:d});continue}let b="close";a=i.pop(),a.close=!0,m({type:b,value:d}),f--,a=i[i.length-1];continue}if(d===IU&&f>0){if(a.ranges>0){a.ranges=0;let b=a.nodes.shift();a.nodes=[b,{type:"text",value:TU(a)}]}m({type:"comma",value:d}),a.commas++;continue}if(d===BU&&f>0&&a.commas===0){let b=a.nodes;if(f===0||b.length===0){m({type:"text",value:d});continue}if(s.type==="dot"){if(a.range=[],s.value+=d,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"){b.pop();let D=b[b.length-1];D.value+=s.value+d,s=D,a.ranges--;continue}m({type:"dot",value:d});continue}m({type:"text",value:d})}do if(a=i.pop(),a.type!=="root"){a.nodes.forEach(C=>{C.nodes||(C.type==="open"&&(C.isOpen=!0),C.type==="close"&&(C.isClose=!0),C.nodes||(C.type="text"),C.invalid=!0)});let b=i[i.length-1],D=b.nodes.indexOf(a);b.nodes.splice(D,1,...a.nodes)}while(i.length>0);return m({type:"eos"}),o};xS.exports=zU});var OS=x((AY,AS)=>{"use strict";var FS=ql(),GU=gS(),WU=bS(),KU=SS(),Kt=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let o=Kt.create(n,e);Array.isArray(o)?r.push(...o):r.push(o)}else r=[].concat(Kt.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Kt.parse=(t,e={})=>KU(t,e);Kt.stringify=(t,e={})=>FS(typeof t=="string"?Kt.parse(t,e):t,e);Kt.compile=(t,e={})=>(typeof t=="string"&&(t=Kt.parse(t,e)),GU(t,e));Kt.expand=(t,e={})=>{typeof t=="string"&&(t=Kt.parse(t,e));let r=WU(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Kt.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Kt.compile(t,e):Kt.expand(t,e);AS.exports=Kt});var As=x((OY,RS)=>{"use strict";var YU=require("path"),Nr="\\\\/",kS=`[^${Nr}]`,sn="\\.",JU="\\+",XU="\\?",zl="\\/",ZU="(?=.)",$S="[^/]",Fg=`(?:${zl}|$)`,PS=`(?:^|${zl})`,Ag=`${sn}{1,2}${Fg}`,QU=`(?!${sn})`,eM=`(?!${PS}${Ag})`,tM=`(?!${sn}{0,1}${Fg})`,rM=`(?!${Ag})`,nM=`[^.${zl}]`,oM=`${$S}*?`,TS={DOT_LITERAL:sn,PLUS_LITERAL:JU,QMARK_LITERAL:XU,SLASH_LITERAL:zl,ONE_CHAR:ZU,QMARK:$S,END_ANCHOR:Fg,DOTS_SLASH:Ag,NO_DOT:QU,NO_DOTS:eM,NO_DOT_SLASH:tM,NO_DOTS_SLASH:rM,QMARK_NO_DOT:nM,STAR:oM,START_ANCHOR:PS},iM={...TS,SLASH_LITERAL:`[${Nr}]`,QMARK:kS,STAR:`${kS}*?`,DOTS_SLASH:`${sn}{1,2}(?:[${Nr}]|$)`,NO_DOT:`(?!${sn})`,NO_DOTS:`(?!(?:^|[${Nr}])${sn}{1,2}(?:[${Nr}]|$))`,NO_DOT_SLASH:`(?!${sn}{0,1}(?:[${Nr}]|$))`,NO_DOTS_SLASH:`(?!${sn}{1,2}(?:[${Nr}]|$))`,QMARK_NO_DOT:`[^.${Nr}]`,START_ANCHOR:`(?:^|[${Nr}])`,END_ANCHOR:`(?:[${Nr}]|$)`},aM={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"};RS.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:aM,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:YU.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?iM:TS}}});var Os=x(Ht=>{"use strict";var sM=require("path"),uM=process.platform==="win32",{REGEX_BACKSLASH:cM,REGEX_REMOVE_BACKSLASH:lM,REGEX_SPECIAL_CHARS:fM,REGEX_SPECIAL_CHARS_GLOBAL:pM}=As();Ht.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Ht.hasRegexChars=t=>fM.test(t);Ht.isRegexChar=t=>t.length===1&&Ht.hasRegexChars(t);Ht.escapeRegex=t=>t.replace(pM,"\\$1");Ht.toPosixSlashes=t=>t.replace(cM,"/");Ht.removeBackslashes=t=>t.replace(lM,e=>e==="\\"?"":e);Ht.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Ht.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:uM===!0||sM.sep==="\\";Ht.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?Ht.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};Ht.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Ht.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",o=r.contains?"":"$",i=`${n}(?:${t})${o}`;return e.negated===!0&&(i=`(?:^(?!${i}).*$)`),i}});var qS=x(($Y,MS)=>{"use strict";var IS=Os(),{CHAR_ASTERISK:Og,CHAR_AT:dM,CHAR_BACKWARD_SLASH:ks,CHAR_COMMA:hM,CHAR_DOT:kg,CHAR_EXCLAMATION_MARK:$g,CHAR_FORWARD_SLASH:US,CHAR_LEFT_CURLY_BRACE:Pg,CHAR_LEFT_PARENTHESES:Tg,CHAR_LEFT_SQUARE_BRACKET:mM,CHAR_PLUS:gM,CHAR_QUESTION_MARK:BS,CHAR_RIGHT_CURLY_BRACE:DM,CHAR_RIGHT_PARENTHESES:jS,CHAR_RIGHT_SQUARE_BRACKET:yM}=As(),NS=t=>t===US||t===ks,LS=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},bM=(t,e)=>{let r=e||{},n=t.length-1,o=r.parts===!0||r.scanToEnd===!0,i=[],a=[],s=[],u=t,c=-1,l=0,f=0,d=!1,h=!1,m=!1,b=!1,D=!1,C=!1,E=!1,g=!1,_=!1,S=!1,T=0,O,B,I={value:"",depth:0,isGlob:!1},N=()=>c>=n,A=()=>u.charCodeAt(c+1),L=()=>(O=B,u.charCodeAt(++c));for(;c<n;){B=L();let v;if(B===ks){E=I.backslashes=!0,B=L(),B===Pg&&(C=!0);continue}if(C===!0||B===Pg){for(T++;N()!==!0&&(B=L());){if(B===ks){E=I.backslashes=!0,L();continue}if(B===Pg){T++;continue}if(C!==!0&&B===kg&&(B=L())===kg){if(d=I.isBrace=!0,m=I.isGlob=!0,S=!0,o===!0)continue;break}if(C!==!0&&B===hM){if(d=I.isBrace=!0,m=I.isGlob=!0,S=!0,o===!0)continue;break}if(B===DM&&(T--,T===0)){C=!1,d=I.isBrace=!0,S=!0;break}}if(o===!0)continue;break}if(B===US){if(i.push(c),a.push(I),I={value:"",depth:0,isGlob:!1},S===!0)continue;if(O===kg&&c===l+1){l+=2;continue}f=c+1;continue}if(r.noext!==!0&&(B===gM||B===dM||B===Og||B===BS||B===$g)===!0&&A()===Tg){if(m=I.isGlob=!0,b=I.isExtglob=!0,S=!0,B===$g&&c===l&&(_=!0),o===!0){for(;N()!==!0&&(B=L());){if(B===ks){E=I.backslashes=!0,B=L();continue}if(B===jS){m=I.isGlob=!0,S=!0;break}}continue}break}if(B===Og){if(O===Og&&(D=I.isGlobstar=!0),m=I.isGlob=!0,S=!0,o===!0)continue;break}if(B===BS){if(m=I.isGlob=!0,S=!0,o===!0)continue;break}if(B===mM){for(;N()!==!0&&(v=L());){if(v===ks){E=I.backslashes=!0,L();continue}if(v===yM){h=I.isBracket=!0,m=I.isGlob=!0,S=!0;break}}if(o===!0)continue;break}if(r.nonegate!==!0&&B===$g&&c===l){g=I.negated=!0,l++;continue}if(r.noparen!==!0&&B===Tg){if(m=I.isGlob=!0,o===!0){for(;N()!==!0&&(B=L());){if(B===Tg){E=I.backslashes=!0,B=L();continue}if(B===jS){S=!0;break}}continue}break}if(m===!0){if(S=!0,o===!0)continue;break}}r.noext===!0&&(b=!1,m=!1);let M=u,Q="",$="";l>0&&(Q=u.slice(0,l),u=u.slice(l),f-=l),M&&m===!0&&f>0?(M=u.slice(0,f),$=u.slice(f)):m===!0?(M="",$=u):M=u,M&&M!==""&&M!=="/"&&M!==u&&NS(M.charCodeAt(M.length-1))&&(M=M.slice(0,-1)),r.unescape===!0&&($&&($=IS.removeBackslashes($)),M&&E===!0&&(M=IS.removeBackslashes(M)));let y={prefix:Q,input:t,start:l,base:M,glob:$,isBrace:d,isBracket:h,isGlob:m,isExtglob:b,isGlobstar:D,negated:g,negatedExtglob:_};if(r.tokens===!0&&(y.maxDepth=0,NS(B)||a.push(I),y.tokens=a),r.parts===!0||r.tokens===!0){let v;for(let w=0;w<i.length;w++){let F=v?v+1:l,R=i[w],k=t.slice(F,R);r.tokens&&(w===0&&l!==0?(a[w].isPrefix=!0,a[w].value=Q):a[w].value=k,LS(a[w]),y.maxDepth+=a[w].depth),(w!==0||k!=="")&&s.push(k),v=R}if(v&&v+1<t.length){let w=t.slice(v+1);s.push(w),r.tokens&&(a[a.length-1].value=w,LS(a[a.length-1]),y.maxDepth+=a[a.length-1].depth)}y.slashes=i,y.parts=s}return y};MS.exports=bM});var zS=x((PY,VS)=>{"use strict";var Gl=As(),Yt=Os(),{MAX_LENGTH:Wl,POSIX_REGEX_SOURCE:vM,REGEX_NON_SPECIAL_CHARS:wM,REGEX_SPECIAL_CHARS_BACKREF:CM,REPLACEMENTS:HS}=Gl,EM=(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=>Yt.escapeRegex(o)).join("..")}return r},na=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,Rg=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=HS[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(Wl,r.maxLength):Wl,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=Yt.isWindows(e),c=Gl.globChars(u),l=Gl.extglobChars(c),{DOT_LITERAL:f,PLUS_LITERAL:d,SLASH_LITERAL:h,ONE_CHAR:m,DOTS_SLASH:b,NO_DOT:D,NO_DOT_SLASH:C,NO_DOTS_SLASH:E,QMARK:g,QMARK_NO_DOT:_,STAR:S,START_ANCHOR:T}=c,O=z=>`(${s}(?:(?!${T}${z.dot?b:f}).)*?)`,B=r.dot?"":D,I=r.dot?g:_,N=r.bash===!0?O(r):S;r.capture&&(N=`(${N})`),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=Yt.removePrefix(t,A),o=t.length;let L=[],M=[],Q=[],$=i,y,v=()=>A.index===o-1,w=A.peek=(z=1)=>t[A.index+z],F=A.advance=()=>t[++A.index]||"",R=()=>t.slice(A.index+1),k=(z="",Ee=0)=>{A.consumed+=z,A.index+=Ee},q=z=>{A.output+=z.output!=null?z.output:z.value,k(z.value)},P=()=>{let z=1;for(;w()==="!"&&(w(2)!=="("||w(3)==="?");)F(),A.start++,z++;return z%2===0?!1:(A.negated=!0,A.start++,!0)},j=z=>{A[z]++,Q.push(z)},ee=z=>{A[z]--,Q.pop()},V=z=>{if($.type==="globstar"){let Ee=A.braces>0&&(z.type==="comma"||z.type==="brace"),H=z.extglob===!0||L.length&&(z.type==="pipe"||z.type==="paren");z.type!=="slash"&&z.type!=="paren"&&!Ee&&!H&&(A.output=A.output.slice(0,-$.output.length),$.type="star",$.value="*",$.output=N,A.output+=$.output)}if(L.length&&z.type!=="paren"&&(L[L.length-1].inner+=z.value),(z.value||z.output)&&q(z),$&&$.type==="text"&&z.type==="text"){$.value+=z.value,$.output=($.output||"")+z.value;return}z.prev=$,a.push(z),$=z},se=(z,Ee)=>{let H={...l[Ee],conditions:1,inner:""};H.prev=$,H.parens=A.parens,H.output=A.output;let ue=(r.capture?"(":"")+H.open;j("parens"),V({type:z,value:Ee,output:A.output?"":m}),V({type:"paren",extglob:!0,value:F(),output:ue}),L.push(H)},hr=z=>{let Ee=z.close+(r.capture?")":""),H;if(z.type==="negate"){let ue=N;if(z.inner&&z.inner.length>1&&z.inner.includes("/")&&(ue=O(r)),(ue!==N||v()||/^\)+$/.test(R()))&&(Ee=z.close=`)$))${ue}`),z.inner.includes("*")&&(H=R())&&/^\.[^\\/.]+$/.test(H)){let Le=Rg(H,{...e,fastpaths:!1}).output;Ee=z.close=`)${Le})${ue})`}z.prev.type==="bos"&&(A.negatedExtglob=!0)}V({type:"paren",extglob:!0,value:y,output:Ee}),ee("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let z=!1,Ee=t.replace(CM,(H,ue,Le,Et,et,rf)=>Et==="\\"?(z=!0,H):Et==="?"?ue?ue+Et+(et?g.repeat(et.length):""):rf===0?I+(et?g.repeat(et.length):""):g.repeat(Le.length):Et==="."?f.repeat(Le.length):Et==="*"?ue?ue+Et+(et?N:""):N:ue?H:`\\${H}`);return z===!0&&(r.unescape===!0?Ee=Ee.replace(/\\/g,""):Ee=Ee.replace(/\\+/g,H=>H.length%2===0?"\\\\":H?"\\":"")),Ee===t&&r.contains===!0?(A.output=t,A):(A.output=Yt.wrapOutput(Ee,A,e),A)}for(;!v();){if(y=F(),y==="\0")continue;if(y==="\\"){let H=w();if(H==="/"&&r.bash!==!0||H==="."||H===";")continue;if(!H){y+="\\",V({type:"text",value:y});continue}let ue=/^\\+/.exec(R()),Le=0;if(ue&&ue[0].length>2&&(Le=ue[0].length,A.index+=Le,Le%2!==0&&(y+="\\")),r.unescape===!0?y=F():y+=F(),A.brackets===0){V({type:"text",value:y});continue}}if(A.brackets>0&&(y!=="]"||$.value==="["||$.value==="[^")){if(r.posix!==!1&&y===":"){let H=$.value.slice(1);if(H.includes("[")&&($.posix=!0,H.includes(":"))){let ue=$.value.lastIndexOf("["),Le=$.value.slice(0,ue),Et=$.value.slice(ue+2),et=vM[Et];if(et){$.value=Le+et,A.backtrack=!0,F(),!i.output&&a.indexOf($)===1&&(i.output=m);continue}}}(y==="["&&w()!==":"||y==="-"&&w()==="]")&&(y=`\\${y}`),y==="]"&&($.value==="["||$.value==="[^")&&(y=`\\${y}`),r.posix===!0&&y==="!"&&$.value==="["&&(y="^"),$.value+=y,q({value:y});continue}if(A.quotes===1&&y!=='"'){y=Yt.escapeRegex(y),$.value+=y,q({value:y});continue}if(y==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&V({type:"text",value:y});continue}if(y==="("){j("parens"),V({type:"paren",value:y});continue}if(y===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(na("opening","("));let H=L[L.length-1];if(H&&A.parens===H.parens+1){hr(L.pop());continue}V({type:"paren",value:y,output:A.parens?")":"\\)"}),ee("parens");continue}if(y==="["){if(r.nobracket===!0||!R().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(na("closing","]"));y=`\\${y}`}else j("brackets");V({type:"bracket",value:y});continue}if(y==="]"){if(r.nobracket===!0||$&&$.type==="bracket"&&$.value.length===1){V({type:"text",value:y,output:`\\${y}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(na("opening","["));V({type:"text",value:y,output:`\\${y}`});continue}ee("brackets");let H=$.value.slice(1);if($.posix!==!0&&H[0]==="^"&&!H.includes("/")&&(y=`/${y}`),$.value+=y,q({value:y}),r.literalBrackets===!1||Yt.hasRegexChars(H))continue;let ue=Yt.escapeRegex($.value);if(A.output=A.output.slice(0,-$.value.length),r.literalBrackets===!0){A.output+=ue,$.value=ue;continue}$.value=`(${s}${ue}|${$.value})`,A.output+=$.value;continue}if(y==="{"&&r.nobrace!==!0){j("braces");let H={type:"brace",value:y,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};M.push(H),V(H);continue}if(y==="}"){let H=M[M.length-1];if(r.nobrace===!0||!H){V({type:"text",value:y,output:y});continue}let ue=")";if(H.dots===!0){let Le=a.slice(),Et=[];for(let et=Le.length-1;et>=0&&(a.pop(),Le[et].type!=="brace");et--)Le[et].type!=="dots"&&Et.unshift(Le[et].value);ue=EM(Et,r),A.backtrack=!0}if(H.comma!==!0&&H.dots!==!0){let Le=A.output.slice(0,H.outputIndex),Et=A.tokens.slice(H.tokensIndex);H.value=H.output="\\{",y=ue="\\}",A.output=Le;for(let et of Et)A.output+=et.output||et.value}V({type:"brace",value:y,output:ue}),ee("braces"),M.pop();continue}if(y==="|"){L.length>0&&L[L.length-1].conditions++,V({type:"text",value:y});continue}if(y===","){let H=y,ue=M[M.length-1];ue&&Q[Q.length-1]==="braces"&&(ue.comma=!0,H="|"),V({type:"comma",value:y,output:H});continue}if(y==="/"){if($.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",a.pop(),$=i;continue}V({type:"slash",value:y,output:h});continue}if(y==="."){if(A.braces>0&&$.type==="dot"){$.value==="."&&($.output=f);let H=M[M.length-1];$.type="dots",$.output+=y,$.value+=y,H.dots=!0;continue}if(A.braces+A.parens===0&&$.type!=="bos"&&$.type!=="slash"){V({type:"text",value:y,output:f});continue}V({type:"dot",value:y,output:f});continue}if(y==="?"){if(!($&&$.value==="(")&&r.noextglob!==!0&&w()==="("&&w(2)!=="?"){se("qmark",y);continue}if($&&$.type==="paren"){let ue=w(),Le=y;if(ue==="<"&&!Yt.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");($.value==="("&&!/[!=<:]/.test(ue)||ue==="<"&&!/<([!=]|\w+>)/.test(R()))&&(Le=`\\${y}`),V({type:"text",value:y,output:Le});continue}if(r.dot!==!0&&($.type==="slash"||$.type==="bos")){V({type:"qmark",value:y,output:_});continue}V({type:"qmark",value:y,output:g});continue}if(y==="!"){if(r.noextglob!==!0&&w()==="("&&(w(2)!=="?"||!/[!=<:]/.test(w(3)))){se("negate",y);continue}if(r.nonegate!==!0&&A.index===0){P();continue}}if(y==="+"){if(r.noextglob!==!0&&w()==="("&&w(2)!=="?"){se("plus",y);continue}if($&&$.value==="("||r.regex===!1){V({type:"plus",value:y,output:d});continue}if($&&($.type==="bracket"||$.type==="paren"||$.type==="brace")||A.parens>0){V({type:"plus",value:y});continue}V({type:"plus",value:d});continue}if(y==="@"){if(r.noextglob!==!0&&w()==="("&&w(2)!=="?"){V({type:"at",extglob:!0,value:y,output:""});continue}V({type:"text",value:y});continue}if(y!=="*"){(y==="$"||y==="^")&&(y=`\\${y}`);let H=wM.exec(R());H&&(y+=H[0],A.index+=H[0].length),V({type:"text",value:y});continue}if($&&($.type==="globstar"||$.star===!0)){$.type="star",$.star=!0,$.value+=y,$.output=N,A.backtrack=!0,A.globstar=!0,k(y);continue}let z=R();if(r.noextglob!==!0&&/^\([^?]/.test(z)){se("star",y);continue}if($.type==="star"){if(r.noglobstar===!0){k(y);continue}let H=$.prev,ue=H.prev,Le=H.type==="slash"||H.type==="bos",Et=ue&&(ue.type==="star"||ue.type==="globstar");if(r.bash===!0&&(!Le||z[0]&&z[0]!=="/")){V({type:"star",value:y,output:""});continue}let et=A.braces>0&&(H.type==="comma"||H.type==="brace"),rf=L.length&&(H.type==="pipe"||H.type==="paren");if(!Le&&H.type!=="paren"&&!et&&!rf){V({type:"star",value:y,output:""});continue}for(;z.slice(0,3)==="/**";){let Is=t[A.index+4];if(Is&&Is!=="/")break;z=z.slice(3),k("/**",3)}if(H.type==="bos"&&v()){$.type="globstar",$.value+=y,$.output=O(r),A.output=$.output,A.globstar=!0,k(y);continue}if(H.type==="slash"&&H.prev.type!=="bos"&&!Et&&v()){A.output=A.output.slice(0,-(H.output+$.output).length),H.output=`(?:${H.output}`,$.type="globstar",$.output=O(r)+(r.strictSlashes?")":"|$)"),$.value+=y,A.globstar=!0,A.output+=H.output+$.output,k(y);continue}if(H.type==="slash"&&H.prev.type!=="bos"&&z[0]==="/"){let Is=z[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(H.output+$.output).length),H.output=`(?:${H.output}`,$.type="globstar",$.output=`${O(r)}${h}|${h}${Is})`,$.value+=y,A.output+=H.output+$.output,A.globstar=!0,k(y+F()),V({type:"slash",value:"/",output:""});continue}if(H.type==="bos"&&z[0]==="/"){$.type="globstar",$.value+=y,$.output=`(?:^|${h}|${O(r)}${h})`,A.output=$.output,A.globstar=!0,k(y+F()),V({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-$.output.length),$.type="globstar",$.output=O(r),$.value+=y,A.output+=$.output,A.globstar=!0,k(y);continue}let Ee={type:"star",value:y,output:N};if(r.bash===!0){Ee.output=".*?",($.type==="bos"||$.type==="slash")&&(Ee.output=B+Ee.output),V(Ee);continue}if($&&($.type==="bracket"||$.type==="paren")&&r.regex===!0){Ee.output=y,V(Ee);continue}(A.index===A.start||$.type==="slash"||$.type==="dot")&&($.type==="dot"?(A.output+=C,$.output+=C):r.dot===!0?(A.output+=E,$.output+=E):(A.output+=B,$.output+=B),w()!=="*"&&(A.output+=m,$.output+=m)),V(Ee)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(na("closing","]"));A.output=Yt.escapeLast(A.output,"["),ee("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(na("closing",")"));A.output=Yt.escapeLast(A.output,"("),ee("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(na("closing","}"));A.output=Yt.escapeLast(A.output,"{"),ee("braces")}if(r.strictSlashes!==!0&&($.type==="star"||$.type==="bracket")&&V({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};Rg.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(Wl,r.maxLength):Wl,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);t=HS[t]||t;let i=Yt.isWindows(e),{DOT_LITERAL:a,SLASH_LITERAL:s,ONE_CHAR:u,DOTS_SLASH:c,NO_DOT:l,NO_DOTS:f,NO_DOTS_SLASH:d,STAR:h,START_ANCHOR:m}=Gl.globChars(i),b=r.dot?f:l,D=r.dot?d:l,C=r.capture?"":"?:",E={negated:!1,prefix:""},g=r.bash===!0?".*?":h;r.capture&&(g=`(${g})`);let _=B=>B.noglobstar===!0?g:`(${C}(?:(?!${m}${B.dot?c:a}).)*?)`,S=B=>{switch(B){case"*":return`${b}${u}${g}`;case".*":return`${a}${u}${g}`;case"*.*":return`${b}${g}${a}${u}${g}`;case"*/*":return`${b}${g}${s}${u}${D}${g}`;case"**":return b+_(r);case"**/*":return`(?:${b}${_(r)}${s})?${D}${u}${g}`;case"**/*.*":return`(?:${b}${_(r)}${s})?${D}${g}${a}${u}${g}`;case"**/.*":return`(?:${b}${_(r)}${s})?${a}${u}${g}`;default:{let I=/^(.*?)\.(\w+)$/.exec(B);if(!I)return;let N=S(I[1]);return N?N+a+I[2]:void 0}}},T=Yt.removePrefix(t,E),O=S(T);return O&&r.strictSlashes!==!0&&(O+=`${s}?`),O};VS.exports=Rg});var WS=x((TY,GS)=>{"use strict";var _M=require("path"),xM=qS(),Ig=zS(),Bg=Os(),SM=As(),FM=t=>t&&typeof t=="object"&&!Array.isArray(t),Ze=(t,e,r=!1)=>{if(Array.isArray(t)){let l=t.map(d=>Ze(d,e,r));return d=>{for(let h of l){let m=h(d);if(m)return m}return!1}}let n=FM(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=Bg.isWindows(e),a=n?Ze.compileRe(t,e):Ze.makeRe(t,e,!1,!0),s=a.state;delete a.state;let u=()=>!1;if(o.ignore){let l={...e,ignore:null,onMatch:null,onResult:null};u=Ze(o.ignore,l,r)}let c=(l,f=!1)=>{let{isMatch:d,match:h,output:m}=Ze.test(l,a,e,{glob:t,posix:i}),b={glob:t,state:s,regex:a,posix:i,input:l,output:m,match:h,isMatch:d};return typeof o.onResult=="function"&&o.onResult(b),d===!1?(b.isMatch=!1,f?b:!1):u(l)?(typeof o.onIgnore=="function"&&o.onIgnore(b),b.isMatch=!1,f?b:!1):(typeof o.onMatch=="function"&&o.onMatch(b),f?b:!0)};return r&&(c.state=s),c};Ze.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?Bg.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=Ze.matchBase(t,e,r,o):s=e.exec(u)),{isMatch:!!s,match:s,output:u}};Ze.matchBase=(t,e,r,n=Bg.isWindows(r))=>(e instanceof RegExp?e:Ze.makeRe(e,r)).test(_M.basename(t));Ze.isMatch=(t,e,r)=>Ze(e,r)(t);Ze.parse=(t,e)=>Array.isArray(t)?t.map(r=>Ze.parse(r,e)):Ig(t,{...e,fastpaths:!1});Ze.scan=(t,e)=>xM(t,e);Ze.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=Ze.toRegex(s,e);return n===!0&&(u.state=t),u};Ze.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=Ig.fastpaths(t,e)),o.output||(o=Ig(t,e)),Ze.compileRe(o,e,r,n)};Ze.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/$^/}};Ze.constants=SM;GS.exports=Ze});var YS=x((RY,KS)=>{"use strict";KS.exports=WS()});var tF=x((IY,eF)=>{"use strict";var XS=require("util"),ZS=OS(),Lr=YS(),jg=Os(),JS=t=>t===""||t==="./",QS=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},Ie=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,o=new Set,i=new Set,a=0,s=l=>{i.add(l.output),r&&r.onResult&&r.onResult(l)};for(let l=0;l<e.length;l++){let f=Lr(String(e[l]),{...r,onResult:s},!0),d=f.state.negated||f.state.negatedExtglob;d&&a++;for(let h of t){let m=f(h,!0);(d?!m.isMatch:m.isMatch)&&(d?n.add(m.output):(n.delete(m.output),o.add(m.output)))}}let c=(a===e.length?[...i]:[...o]).filter(l=>!n.has(l));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(l=>l.replace(/\\/g,"")):e}return c};Ie.match=Ie;Ie.matcher=(t,e)=>Lr(t,e);Ie.isMatch=(t,e,r)=>Lr(e,r)(t);Ie.any=Ie.isMatch;Ie.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(Ie(t,e,{...r,onResult:i}));for(let s of o)a.has(s)||n.add(s);return[...n]};Ie.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${XS.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>Ie.contains(t,n,r));if(typeof e=="string"){if(JS(t)||JS(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return Ie.isMatch(t,e,{...r,contains:!0})};Ie.matchKeys=(t,e,r)=>{if(!jg.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=Ie(Object.keys(t),e,r),o={};for(let i of n)o[i]=t[i];return o};Ie.some=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Lr(String(o),r);if(n.some(a=>i(a)))return!0}return!1};Ie.every=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Lr(String(o),r);if(!n.every(a=>i(a)))return!1}return!0};Ie.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${XS.inspect(t)}"`);return[].concat(e).every(n=>Lr(n,r)(t))};Ie.capture=(t,e,r)=>{let n=jg.isWindows(r),i=Lr.makeRe(String(t),{...r,capture:!0}).exec(n?jg.toPosixSlashes(e):e);if(i)return i.slice(1).map(a=>a===void 0?"":a)};Ie.makeRe=(...t)=>Lr.makeRe(...t);Ie.scan=(...t)=>Lr.scan(...t);Ie.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let o of ZS(String(n),e))r.push(Lr.parse(o,e));return r};Ie.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!QS(t)?[t]:ZS(t,e)};Ie.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return Ie.braces(t,{...e,expand:!0})};Ie.hasBraces=QS;eF.exports=Ie});var qF=x((TJ,un)=>{var Oe=require("fs"),Xl=require("os"),gt=require("path"),xF=require("crypto"),Mr={fs:Oe.constants,os:Xl.constants},SF="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",kF=/XXXXXX/,JM=3,$F=(Mr.O_CREAT||Mr.fs.O_CREAT)|(Mr.O_EXCL||Mr.fs.O_EXCL)|(Mr.O_RDWR||Mr.fs.O_RDWR),XM=Xl.platform()==="win32",ZM=Mr.EBADF||Mr.os.errno.EBADF,QM=Mr.ENOENT||Mr.os.errno.ENOENT,PF=448,TF=384,e9="exit",ia=[],RF=Oe.rmdirSync.bind(Oe),IF=!1;function t9(t,e){return Oe.rm(t,{recursive:!0},e)}function BF(t){return Oe.rmSync(t,{recursive:!0})}function zg(t,e){let r=aa(t,e),n=r[0],o=r[1];f9(n,function(i,a){if(i)return o(i);let s=a.tries;(function u(){try{let c=NF(a);Oe.stat(c,function(l){if(!l)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 Gg(t){let e=aa(t),r=e[0],n=p9(r),o=n.tries;do{let i=NF(n);try{Oe.statSync(i)}catch{return i}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function r9(t,e){let r=aa(t,e),n=r[0],o=r[1];zg(n,function(a,s){if(a)return o(a);Oe.open(s,$F,n.mode||TF,function(c,l){if(c)return o(c);if(n.discardDescriptor)return Oe.close(l,function(d){return o(d,s,void 0,Hg(s,-1,n,!1))});{let f=n.discardDescriptor||n.detachDescriptor;o(null,s,l,Hg(s,f?-1:l,n,!1))}})})}function n9(t){let e=aa(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,o=Gg(r),i=Oe.openSync(o,$F,r.mode||TF);return r.discardDescriptor&&(Oe.closeSync(i),i=void 0),{name:o,fd:i,removeCallback:Hg(o,n?-1:i,r,!0)}}function o9(t,e){let r=aa(t,e),n=r[0],o=r[1];zg(n,function(a,s){if(a)return o(a);Oe.mkdir(s,n.mode||PF,function(c){if(c)return o(c);o(null,s,jF(s,n,!1))})})}function i9(t){let e=aa(t),r=e[0],n=Gg(r);return Oe.mkdirSync(n,r.mode||PF),{name:n,removeCallback:jF(n,r,!0)}}function a9(t,e){let r=function(n){if(n&&!Vg(n))return e(n);e()};0<=t[0]?Oe.close(t[0],function(){Oe.unlink(t[1],r)}):Oe.unlink(t[1],r)}function s9(t){let e=null;try{0<=t[0]&&Oe.closeSync(t[0])}catch(r){if(!d9(r)&&!Vg(r))throw r}finally{try{Oe.unlinkSync(t[1])}catch(r){Vg(r)||(e=r)}}if(e!==null)throw e}function Hg(t,e,r,n){let o=Jl(s9,[e,t],n),i=Jl(a9,[e,t],n,o);return r.keep||ia.unshift(o),n?o:i}function jF(t,e,r){let n=e.unsafeCleanup?t9:Oe.rmdir.bind(Oe),o=e.unsafeCleanup?BF:RF,i=Jl(o,t,r),a=Jl(n,t,r,i);return e.keep||ia.unshift(i),r?i:a}function Jl(t,e,r,n){let o=!1;return function i(a){if(!o){let s=n||i,u=ia.indexOf(s);return u>=0&&ia.splice(u,1),o=!0,r||t===RF||t===BF?t(e):t(e,a||function(){})}}}function u9(){if(IF)for(;ia.length;)try{ia[0]()}catch{}}function FF(t){let e=[],r=null;try{r=xF.randomBytes(t)}catch{r=xF.pseudoRandomBytes(t)}for(let n=0;n<t;n++)e.push(SF[r[n]%SF.length]);return e.join("")}function Jt(t){return typeof t>"u"}function aa(t,e){if(typeof t=="function")return[{},t];if(Jt(t))return[{},e];let r={};for(let n of Object.getOwnPropertyNames(t))r[n]=t[n];return[r,e]}function c9(t,e,r){let n=gt.isAbsolute(t)?t:gt.join(e,t);Oe.stat(n,function(o){o?Oe.realpath(gt.dirname(n),function(i,a){if(i)return r(i);r(null,gt.join(a,gt.basename(n)))}):Oe.realpath(n,r)})}function l9(t,e){let r=gt.isAbsolute(t)?t:gt.join(e,t);try{return Oe.statSync(r),Oe.realpathSync(r)}catch{let o=Oe.realpathSync(gt.dirname(r));return gt.join(o,gt.basename(r))}}function NF(t){let e=t.tmpdir;if(!Jt(t.name))return gt.join(e,t.dir,t.name);if(!Jt(t.template))return gt.join(e,t.dir,t.template).replace(kF,FF(6));let r=[t.prefix?t.prefix:"tmp","-",process.pid,"-",FF(12),t.postfix?"-"+t.postfix:""].join("");return gt.join(e,t.dir,r)}function LF(t){if(!Jt(t.name)){let e=t.name;if(gt.isAbsolute(e))throw new Error(`name option must not contain an absolute path, found "${e}".`);let r=gt.basename(e);if(r===".."||r==="."||r!==e)throw new Error(`name option must not contain a path, found "${e}".`)}if(!Jt(t.template)&&!t.template.match(kF))throw new Error(`Invalid template, found "${t.template}".`);if(!Jt(t.tries)&&isNaN(t.tries)||t.tries<0)throw new Error(`Invalid tries, found "${t.tries}".`);t.tries=Jt(t.name)?t.tries||JM:1,t.keep=!!t.keep,t.detachDescriptor=!!t.detachDescriptor,t.discardDescriptor=!!t.discardDescriptor,t.unsafeCleanup=!!t.unsafeCleanup,t.prefix=Jt(t.prefix)?"":t.prefix,t.postfix=Jt(t.postfix)?"":t.postfix}function AF(t,e,r,n){if(Jt(e))return n(null);c9(e,r,function(o,i){if(o)return n(o);let a=gt.relative(r,i);if(!i.startsWith(r))return n(new Error(`${t} option must be relative to "${r}", found "${a}".`));n(null,a)})}function OF(t,e,r){if(Jt(e))return;let n=l9(e,r),o=gt.relative(r,n);if(!n.startsWith(r))throw new Error(`${t} option must be relative to "${r}", found "${o}".`);return o}function f9(t,e){m9(t,function(r,n){if(r)return e(r);t.tmpdir=n;try{LF(t,n)}catch(o){return e(o)}AF("dir",t.dir,n,function(o,i){if(o)return e(o);t.dir=Jt(i)?"":i,AF("template",t.template,n,function(a,s){if(a)return e(a);t.template=s,e(null,t)})})})}function p9(t){let e=t.tmpdir=MF(t);LF(t,e);let r=OF("dir",t.dir,e);return t.dir=Jt(r)?"":r,t.template=OF("template",t.template,e),t}function d9(t){return UF(t,-ZM,"EBADF")}function Vg(t){return UF(t,-QM,"ENOENT")}function UF(t,e,r){return XM?t.code===r:t.code===r&&t.errno===e}function h9(){IF=!0}function m9(t,e){return Oe.realpath(t&&t.tmpdir||Xl.tmpdir(),e)}function MF(t){return Oe.realpathSync(t&&t.tmpdir||Xl.tmpdir())}process.addListener(e9,u9);Object.defineProperty(un.exports,"tmpdir",{enumerable:!0,configurable:!1,get:function(){return MF()}});un.exports.dir=o9;un.exports.dirSync=i9;un.exports.file=r9;un.exports.fileSync=n9;un.exports.tmpName=zg;un.exports.tmpNameSync=Gg;un.exports.setGracefulCleanup=h9});var ef=require("node:process");var hD=ge(dD(),1),{program:pt,createCommand:Y9,createArgument:J9,createOption:X9,CommanderError:Z9,InvalidArgumentError:Q9,InvalidOptionArgumentError:e7,Command:t7,Argument:r7,Option:n7,Help:o7}=hD.default;var mr={name:"@capgo/cli",version:"7.20.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",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:"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"},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.25.11",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^10.1.2",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};var Xi=require("node:fs");var Dt=ge(Cf(),1),Io=require("node:process"),ln=ge(require("node:readline"),1),Ff=ge(require("node:readline"),1),xD=require("node:stream"),SD=ge(_f(),1);function FA({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 AA=FA();function FD(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(AA,"")}function AD(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var OD={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 l=u[c],f=e.length(l);if(s>=o-(f==2?1:0))if(s+f<=i)a+=l;else break;s+=f}return a}})(OD);var OA=OD.exports,kA=AD(OA),$A=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},PA=AD($A);function la(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=FD(t),t.length===0))return 0;t=t.replace(PA()," ");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(kA.eastAsianWidth(o)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}var xf=10,yD=(t=0)=>e=>`\x1B[${e+t}m`,bD=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,vD=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,Be={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(Be.modifier);var TA=Object.keys(Be.color),RA=Object.keys(Be.bgColor);[...TA,...RA];function IA(){let t=new Map;for(let[e,r]of Object.entries(Be)){for(let[n,o]of Object.entries(r))Be[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=Be[n],t.set(o[0],o[1]);Object.defineProperty(Be,e,{value:r,enumerable:!1})}return Object.defineProperty(Be,"codes",{value:t,enumerable:!1}),Be.color.close="\x1B[39m",Be.bgColor.close="\x1B[49m",Be.color.ansi=yD(),Be.color.ansi256=bD(),Be.color.ansi16m=vD(),Be.bgColor.ansi=yD(xf),Be.bgColor.ansi256=bD(xf),Be.bgColor.ansi16m=vD(xf),Object.defineProperties(Be,{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=>Be.rgbToAnsi256(...Be.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)=>Be.ansi256ToAnsi(Be.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>Be.ansi256ToAnsi(Be.hexToAnsi256(e)),enumerable:!1}}),Be}var BA=IA(),Ws=new Set(["\x1B","\x9B"]),jA=39,Of="\x07",kD="[",NA="]",$D="m",kf=`${NA}8;;`,wD=t=>`${Ws.values().next().value}${kD}${t}${$D}`,CD=t=>`${Ws.values().next().value}${kf}${t}${Of}`,LA=t=>t.split(" ").map(e=>la(e)),Sf=(t,e,r)=>{let n=[...e],o=!1,i=!1,a=la(FD(t[t.length-1]));for(let[s,u]of n.entries()){let c=la(u);if(a+c<=r?t[t.length-1]+=u:(t.push(u),a=0),Ws.has(u)&&(o=!0,i=n.slice(s+1).join("").startsWith(kf)),o){i?u===Of&&(o=!1,i=!1):u===$D&&(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())},UA=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(la(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},MA=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let n="",o,i,a=LA(t),s=[""];for(let[c,l]of t.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let f=la(s[s.length-1]);if(c!==0&&(f>=e&&(r.wordWrap===!1||r.trim===!1)&&(s.push(""),f=0),(f>0||r.trim===!1)&&(s[s.length-1]+=" ",f++)),r.hard&&a[c]>e){let d=e-f,h=1+Math.floor((a[c]-d-1)/e);Math.floor((a[c]-1)/e)<h&&s.push(""),Sf(s,l,e);continue}if(f+a[c]>e&&f>0&&a[c]>0){if(r.wordWrap===!1&&f<e){Sf(s,l,e);continue}s.push("")}if(f+a[c]>e&&r.wordWrap===!1){Sf(s,l,e);continue}s[s.length-1]+=l}r.trim!==!1&&(s=s.map(c=>UA(c)));let u=[...s.join(`
|
|
104
|
+
`,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 SS=x((FY,xS)=>{"use strict";var TU=ql(),{MAX_LENGTH:CS,CHAR_BACKSLASH:Sg,CHAR_BACKTICK:RU,CHAR_COMMA:IU,CHAR_DOT:BU,CHAR_LEFT_PARENTHESES:jU,CHAR_RIGHT_PARENTHESES:NU,CHAR_LEFT_CURLY_BRACE:LU,CHAR_RIGHT_CURLY_BRACE:UU,CHAR_LEFT_SQUARE_BRACKET:ES,CHAR_RIGHT_SQUARE_BRACKET:_S,CHAR_DOUBLE_QUOTE:MU,CHAR_SINGLE_QUOTE:qU,CHAR_NO_BREAK_SPACE:HU,CHAR_ZERO_WIDTH_NOBREAK_SPACE:VU}=wS(),zU=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(CS,r.maxLength):CS;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,l=0,f=0,d,h=()=>t[l++],m=b=>{if(b.type==="text"&&s.type==="dot"&&(s.type="text"),s&&s.type==="text"&&b.type==="text"){s.value+=b.value;return}return a.nodes.push(b),b.parent=a,b.prev=s,s=b,b};for(m({type:"bos"});l<c;)if(a=i[i.length-1],d=h(),!(d===VU||d===HU)){if(d===Sg){m({type:"text",value:(e.keepEscaping?d:"")+h()});continue}if(d===_S){m({type:"text",value:"\\"+d});continue}if(d===ES){u++;let b;for(;l<c&&(b=h());){if(d+=b,b===ES){u++;continue}if(b===Sg){d+=h();continue}if(b===_S&&(u--,u===0))break}m({type:"text",value:d});continue}if(d===jU){a=m({type:"paren",nodes:[]}),i.push(a),m({type:"text",value:d});continue}if(d===NU){if(a.type!=="paren"){m({type:"text",value:d});continue}a=i.pop(),m({type:"text",value:d}),a=i[i.length-1];continue}if(d===MU||d===qU||d===RU){let b=d,D;for(e.keepQuotes!==!0&&(d="");l<c&&(D=h());){if(D===Sg){d+=D+h();continue}if(D===b){e.keepQuotes===!0&&(d+=D);break}d+=D}m({type:"text",value:d});continue}if(d===LU){f++;let D={type:"brace",open:!0,close:!1,dollar:s.value&&s.value.slice(-1)==="$"||a.dollar===!0,depth:f,commas:0,ranges:0,nodes:[]};a=m(D),i.push(a),m({type:"open",value:d});continue}if(d===UU){if(a.type!=="brace"){m({type:"text",value:d});continue}let b="close";a=i.pop(),a.close=!0,m({type:b,value:d}),f--,a=i[i.length-1];continue}if(d===IU&&f>0){if(a.ranges>0){a.ranges=0;let b=a.nodes.shift();a.nodes=[b,{type:"text",value:TU(a)}]}m({type:"comma",value:d}),a.commas++;continue}if(d===BU&&f>0&&a.commas===0){let b=a.nodes;if(f===0||b.length===0){m({type:"text",value:d});continue}if(s.type==="dot"){if(a.range=[],s.value+=d,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"){b.pop();let D=b[b.length-1];D.value+=s.value+d,s=D,a.ranges--;continue}m({type:"dot",value:d});continue}m({type:"text",value:d})}do if(a=i.pop(),a.type!=="root"){a.nodes.forEach(C=>{C.nodes||(C.type==="open"&&(C.isOpen=!0),C.type==="close"&&(C.isClose=!0),C.nodes||(C.type="text"),C.invalid=!0)});let b=i[i.length-1],D=b.nodes.indexOf(a);b.nodes.splice(D,1,...a.nodes)}while(i.length>0);return m({type:"eos"}),o};xS.exports=zU});var OS=x((AY,AS)=>{"use strict";var FS=ql(),GU=gS(),WU=bS(),KU=SS(),Kt=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let o=Kt.create(n,e);Array.isArray(o)?r.push(...o):r.push(o)}else r=[].concat(Kt.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Kt.parse=(t,e={})=>KU(t,e);Kt.stringify=(t,e={})=>FS(typeof t=="string"?Kt.parse(t,e):t,e);Kt.compile=(t,e={})=>(typeof t=="string"&&(t=Kt.parse(t,e)),GU(t,e));Kt.expand=(t,e={})=>{typeof t=="string"&&(t=Kt.parse(t,e));let r=WU(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Kt.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Kt.compile(t,e):Kt.expand(t,e);AS.exports=Kt});var As=x((OY,RS)=>{"use strict";var YU=require("path"),Nr="\\\\/",kS=`[^${Nr}]`,sn="\\.",JU="\\+",XU="\\?",zl="\\/",ZU="(?=.)",$S="[^/]",Fg=`(?:${zl}|$)`,PS=`(?:^|${zl})`,Ag=`${sn}{1,2}${Fg}`,QU=`(?!${sn})`,eM=`(?!${PS}${Ag})`,tM=`(?!${sn}{0,1}${Fg})`,rM=`(?!${Ag})`,nM=`[^.${zl}]`,oM=`${$S}*?`,TS={DOT_LITERAL:sn,PLUS_LITERAL:JU,QMARK_LITERAL:XU,SLASH_LITERAL:zl,ONE_CHAR:ZU,QMARK:$S,END_ANCHOR:Fg,DOTS_SLASH:Ag,NO_DOT:QU,NO_DOTS:eM,NO_DOT_SLASH:tM,NO_DOTS_SLASH:rM,QMARK_NO_DOT:nM,STAR:oM,START_ANCHOR:PS},iM={...TS,SLASH_LITERAL:`[${Nr}]`,QMARK:kS,STAR:`${kS}*?`,DOTS_SLASH:`${sn}{1,2}(?:[${Nr}]|$)`,NO_DOT:`(?!${sn})`,NO_DOTS:`(?!(?:^|[${Nr}])${sn}{1,2}(?:[${Nr}]|$))`,NO_DOT_SLASH:`(?!${sn}{0,1}(?:[${Nr}]|$))`,NO_DOTS_SLASH:`(?!${sn}{1,2}(?:[${Nr}]|$))`,QMARK_NO_DOT:`[^.${Nr}]`,START_ANCHOR:`(?:^|[${Nr}])`,END_ANCHOR:`(?:[${Nr}]|$)`},aM={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"};RS.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:aM,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:YU.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?iM:TS}}});var Os=x(Ht=>{"use strict";var sM=require("path"),uM=process.platform==="win32",{REGEX_BACKSLASH:cM,REGEX_REMOVE_BACKSLASH:lM,REGEX_SPECIAL_CHARS:fM,REGEX_SPECIAL_CHARS_GLOBAL:pM}=As();Ht.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Ht.hasRegexChars=t=>fM.test(t);Ht.isRegexChar=t=>t.length===1&&Ht.hasRegexChars(t);Ht.escapeRegex=t=>t.replace(pM,"\\$1");Ht.toPosixSlashes=t=>t.replace(cM,"/");Ht.removeBackslashes=t=>t.replace(lM,e=>e==="\\"?"":e);Ht.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Ht.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:uM===!0||sM.sep==="\\";Ht.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?Ht.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};Ht.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Ht.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",o=r.contains?"":"$",i=`${n}(?:${t})${o}`;return e.negated===!0&&(i=`(?:^(?!${i}).*$)`),i}});var qS=x(($Y,MS)=>{"use strict";var IS=Os(),{CHAR_ASTERISK:Og,CHAR_AT:dM,CHAR_BACKWARD_SLASH:ks,CHAR_COMMA:hM,CHAR_DOT:kg,CHAR_EXCLAMATION_MARK:$g,CHAR_FORWARD_SLASH:US,CHAR_LEFT_CURLY_BRACE:Pg,CHAR_LEFT_PARENTHESES:Tg,CHAR_LEFT_SQUARE_BRACKET:mM,CHAR_PLUS:gM,CHAR_QUESTION_MARK:BS,CHAR_RIGHT_CURLY_BRACE:DM,CHAR_RIGHT_PARENTHESES:jS,CHAR_RIGHT_SQUARE_BRACKET:yM}=As(),NS=t=>t===US||t===ks,LS=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},bM=(t,e)=>{let r=e||{},n=t.length-1,o=r.parts===!0||r.scanToEnd===!0,i=[],a=[],s=[],u=t,c=-1,l=0,f=0,d=!1,h=!1,m=!1,b=!1,D=!1,C=!1,E=!1,g=!1,_=!1,S=!1,T=0,O,B,I={value:"",depth:0,isGlob:!1},N=()=>c>=n,A=()=>u.charCodeAt(c+1),L=()=>(O=B,u.charCodeAt(++c));for(;c<n;){B=L();let v;if(B===ks){E=I.backslashes=!0,B=L(),B===Pg&&(C=!0);continue}if(C===!0||B===Pg){for(T++;N()!==!0&&(B=L());){if(B===ks){E=I.backslashes=!0,L();continue}if(B===Pg){T++;continue}if(C!==!0&&B===kg&&(B=L())===kg){if(d=I.isBrace=!0,m=I.isGlob=!0,S=!0,o===!0)continue;break}if(C!==!0&&B===hM){if(d=I.isBrace=!0,m=I.isGlob=!0,S=!0,o===!0)continue;break}if(B===DM&&(T--,T===0)){C=!1,d=I.isBrace=!0,S=!0;break}}if(o===!0)continue;break}if(B===US){if(i.push(c),a.push(I),I={value:"",depth:0,isGlob:!1},S===!0)continue;if(O===kg&&c===l+1){l+=2;continue}f=c+1;continue}if(r.noext!==!0&&(B===gM||B===dM||B===Og||B===BS||B===$g)===!0&&A()===Tg){if(m=I.isGlob=!0,b=I.isExtglob=!0,S=!0,B===$g&&c===l&&(_=!0),o===!0){for(;N()!==!0&&(B=L());){if(B===ks){E=I.backslashes=!0,B=L();continue}if(B===jS){m=I.isGlob=!0,S=!0;break}}continue}break}if(B===Og){if(O===Og&&(D=I.isGlobstar=!0),m=I.isGlob=!0,S=!0,o===!0)continue;break}if(B===BS){if(m=I.isGlob=!0,S=!0,o===!0)continue;break}if(B===mM){for(;N()!==!0&&(v=L());){if(v===ks){E=I.backslashes=!0,L();continue}if(v===yM){h=I.isBracket=!0,m=I.isGlob=!0,S=!0;break}}if(o===!0)continue;break}if(r.nonegate!==!0&&B===$g&&c===l){g=I.negated=!0,l++;continue}if(r.noparen!==!0&&B===Tg){if(m=I.isGlob=!0,o===!0){for(;N()!==!0&&(B=L());){if(B===Tg){E=I.backslashes=!0,B=L();continue}if(B===jS){S=!0;break}}continue}break}if(m===!0){if(S=!0,o===!0)continue;break}}r.noext===!0&&(b=!1,m=!1);let M=u,Q="",$="";l>0&&(Q=u.slice(0,l),u=u.slice(l),f-=l),M&&m===!0&&f>0?(M=u.slice(0,f),$=u.slice(f)):m===!0?(M="",$=u):M=u,M&&M!==""&&M!=="/"&&M!==u&&NS(M.charCodeAt(M.length-1))&&(M=M.slice(0,-1)),r.unescape===!0&&($&&($=IS.removeBackslashes($)),M&&E===!0&&(M=IS.removeBackslashes(M)));let y={prefix:Q,input:t,start:l,base:M,glob:$,isBrace:d,isBracket:h,isGlob:m,isExtglob:b,isGlobstar:D,negated:g,negatedExtglob:_};if(r.tokens===!0&&(y.maxDepth=0,NS(B)||a.push(I),y.tokens=a),r.parts===!0||r.tokens===!0){let v;for(let w=0;w<i.length;w++){let F=v?v+1:l,R=i[w],k=t.slice(F,R);r.tokens&&(w===0&&l!==0?(a[w].isPrefix=!0,a[w].value=Q):a[w].value=k,LS(a[w]),y.maxDepth+=a[w].depth),(w!==0||k!=="")&&s.push(k),v=R}if(v&&v+1<t.length){let w=t.slice(v+1);s.push(w),r.tokens&&(a[a.length-1].value=w,LS(a[a.length-1]),y.maxDepth+=a[a.length-1].depth)}y.slashes=i,y.parts=s}return y};MS.exports=bM});var zS=x((PY,VS)=>{"use strict";var Gl=As(),Yt=Os(),{MAX_LENGTH:Wl,POSIX_REGEX_SOURCE:vM,REGEX_NON_SPECIAL_CHARS:wM,REGEX_SPECIAL_CHARS_BACKREF:CM,REPLACEMENTS:HS}=Gl,EM=(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=>Yt.escapeRegex(o)).join("..")}return r},na=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,Rg=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=HS[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(Wl,r.maxLength):Wl,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=Yt.isWindows(e),c=Gl.globChars(u),l=Gl.extglobChars(c),{DOT_LITERAL:f,PLUS_LITERAL:d,SLASH_LITERAL:h,ONE_CHAR:m,DOTS_SLASH:b,NO_DOT:D,NO_DOT_SLASH:C,NO_DOTS_SLASH:E,QMARK:g,QMARK_NO_DOT:_,STAR:S,START_ANCHOR:T}=c,O=z=>`(${s}(?:(?!${T}${z.dot?b:f}).)*?)`,B=r.dot?"":D,I=r.dot?g:_,N=r.bash===!0?O(r):S;r.capture&&(N=`(${N})`),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=Yt.removePrefix(t,A),o=t.length;let L=[],M=[],Q=[],$=i,y,v=()=>A.index===o-1,w=A.peek=(z=1)=>t[A.index+z],F=A.advance=()=>t[++A.index]||"",R=()=>t.slice(A.index+1),k=(z="",Ee=0)=>{A.consumed+=z,A.index+=Ee},q=z=>{A.output+=z.output!=null?z.output:z.value,k(z.value)},P=()=>{let z=1;for(;w()==="!"&&(w(2)!=="("||w(3)==="?");)F(),A.start++,z++;return z%2===0?!1:(A.negated=!0,A.start++,!0)},j=z=>{A[z]++,Q.push(z)},ee=z=>{A[z]--,Q.pop()},V=z=>{if($.type==="globstar"){let Ee=A.braces>0&&(z.type==="comma"||z.type==="brace"),H=z.extglob===!0||L.length&&(z.type==="pipe"||z.type==="paren");z.type!=="slash"&&z.type!=="paren"&&!Ee&&!H&&(A.output=A.output.slice(0,-$.output.length),$.type="star",$.value="*",$.output=N,A.output+=$.output)}if(L.length&&z.type!=="paren"&&(L[L.length-1].inner+=z.value),(z.value||z.output)&&q(z),$&&$.type==="text"&&z.type==="text"){$.value+=z.value,$.output=($.output||"")+z.value;return}z.prev=$,a.push(z),$=z},se=(z,Ee)=>{let H={...l[Ee],conditions:1,inner:""};H.prev=$,H.parens=A.parens,H.output=A.output;let ue=(r.capture?"(":"")+H.open;j("parens"),V({type:z,value:Ee,output:A.output?"":m}),V({type:"paren",extglob:!0,value:F(),output:ue}),L.push(H)},hr=z=>{let Ee=z.close+(r.capture?")":""),H;if(z.type==="negate"){let ue=N;if(z.inner&&z.inner.length>1&&z.inner.includes("/")&&(ue=O(r)),(ue!==N||v()||/^\)+$/.test(R()))&&(Ee=z.close=`)$))${ue}`),z.inner.includes("*")&&(H=R())&&/^\.[^\\/.]+$/.test(H)){let Le=Rg(H,{...e,fastpaths:!1}).output;Ee=z.close=`)${Le})${ue})`}z.prev.type==="bos"&&(A.negatedExtglob=!0)}V({type:"paren",extglob:!0,value:y,output:Ee}),ee("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let z=!1,Ee=t.replace(CM,(H,ue,Le,Et,et,rf)=>Et==="\\"?(z=!0,H):Et==="?"?ue?ue+Et+(et?g.repeat(et.length):""):rf===0?I+(et?g.repeat(et.length):""):g.repeat(Le.length):Et==="."?f.repeat(Le.length):Et==="*"?ue?ue+Et+(et?N:""):N:ue?H:`\\${H}`);return z===!0&&(r.unescape===!0?Ee=Ee.replace(/\\/g,""):Ee=Ee.replace(/\\+/g,H=>H.length%2===0?"\\\\":H?"\\":"")),Ee===t&&r.contains===!0?(A.output=t,A):(A.output=Yt.wrapOutput(Ee,A,e),A)}for(;!v();){if(y=F(),y==="\0")continue;if(y==="\\"){let H=w();if(H==="/"&&r.bash!==!0||H==="."||H===";")continue;if(!H){y+="\\",V({type:"text",value:y});continue}let ue=/^\\+/.exec(R()),Le=0;if(ue&&ue[0].length>2&&(Le=ue[0].length,A.index+=Le,Le%2!==0&&(y+="\\")),r.unescape===!0?y=F():y+=F(),A.brackets===0){V({type:"text",value:y});continue}}if(A.brackets>0&&(y!=="]"||$.value==="["||$.value==="[^")){if(r.posix!==!1&&y===":"){let H=$.value.slice(1);if(H.includes("[")&&($.posix=!0,H.includes(":"))){let ue=$.value.lastIndexOf("["),Le=$.value.slice(0,ue),Et=$.value.slice(ue+2),et=vM[Et];if(et){$.value=Le+et,A.backtrack=!0,F(),!i.output&&a.indexOf($)===1&&(i.output=m);continue}}}(y==="["&&w()!==":"||y==="-"&&w()==="]")&&(y=`\\${y}`),y==="]"&&($.value==="["||$.value==="[^")&&(y=`\\${y}`),r.posix===!0&&y==="!"&&$.value==="["&&(y="^"),$.value+=y,q({value:y});continue}if(A.quotes===1&&y!=='"'){y=Yt.escapeRegex(y),$.value+=y,q({value:y});continue}if(y==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&V({type:"text",value:y});continue}if(y==="("){j("parens"),V({type:"paren",value:y});continue}if(y===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(na("opening","("));let H=L[L.length-1];if(H&&A.parens===H.parens+1){hr(L.pop());continue}V({type:"paren",value:y,output:A.parens?")":"\\)"}),ee("parens");continue}if(y==="["){if(r.nobracket===!0||!R().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(na("closing","]"));y=`\\${y}`}else j("brackets");V({type:"bracket",value:y});continue}if(y==="]"){if(r.nobracket===!0||$&&$.type==="bracket"&&$.value.length===1){V({type:"text",value:y,output:`\\${y}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(na("opening","["));V({type:"text",value:y,output:`\\${y}`});continue}ee("brackets");let H=$.value.slice(1);if($.posix!==!0&&H[0]==="^"&&!H.includes("/")&&(y=`/${y}`),$.value+=y,q({value:y}),r.literalBrackets===!1||Yt.hasRegexChars(H))continue;let ue=Yt.escapeRegex($.value);if(A.output=A.output.slice(0,-$.value.length),r.literalBrackets===!0){A.output+=ue,$.value=ue;continue}$.value=`(${s}${ue}|${$.value})`,A.output+=$.value;continue}if(y==="{"&&r.nobrace!==!0){j("braces");let H={type:"brace",value:y,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};M.push(H),V(H);continue}if(y==="}"){let H=M[M.length-1];if(r.nobrace===!0||!H){V({type:"text",value:y,output:y});continue}let ue=")";if(H.dots===!0){let Le=a.slice(),Et=[];for(let et=Le.length-1;et>=0&&(a.pop(),Le[et].type!=="brace");et--)Le[et].type!=="dots"&&Et.unshift(Le[et].value);ue=EM(Et,r),A.backtrack=!0}if(H.comma!==!0&&H.dots!==!0){let Le=A.output.slice(0,H.outputIndex),Et=A.tokens.slice(H.tokensIndex);H.value=H.output="\\{",y=ue="\\}",A.output=Le;for(let et of Et)A.output+=et.output||et.value}V({type:"brace",value:y,output:ue}),ee("braces"),M.pop();continue}if(y==="|"){L.length>0&&L[L.length-1].conditions++,V({type:"text",value:y});continue}if(y===","){let H=y,ue=M[M.length-1];ue&&Q[Q.length-1]==="braces"&&(ue.comma=!0,H="|"),V({type:"comma",value:y,output:H});continue}if(y==="/"){if($.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",a.pop(),$=i;continue}V({type:"slash",value:y,output:h});continue}if(y==="."){if(A.braces>0&&$.type==="dot"){$.value==="."&&($.output=f);let H=M[M.length-1];$.type="dots",$.output+=y,$.value+=y,H.dots=!0;continue}if(A.braces+A.parens===0&&$.type!=="bos"&&$.type!=="slash"){V({type:"text",value:y,output:f});continue}V({type:"dot",value:y,output:f});continue}if(y==="?"){if(!($&&$.value==="(")&&r.noextglob!==!0&&w()==="("&&w(2)!=="?"){se("qmark",y);continue}if($&&$.type==="paren"){let ue=w(),Le=y;if(ue==="<"&&!Yt.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");($.value==="("&&!/[!=<:]/.test(ue)||ue==="<"&&!/<([!=]|\w+>)/.test(R()))&&(Le=`\\${y}`),V({type:"text",value:y,output:Le});continue}if(r.dot!==!0&&($.type==="slash"||$.type==="bos")){V({type:"qmark",value:y,output:_});continue}V({type:"qmark",value:y,output:g});continue}if(y==="!"){if(r.noextglob!==!0&&w()==="("&&(w(2)!=="?"||!/[!=<:]/.test(w(3)))){se("negate",y);continue}if(r.nonegate!==!0&&A.index===0){P();continue}}if(y==="+"){if(r.noextglob!==!0&&w()==="("&&w(2)!=="?"){se("plus",y);continue}if($&&$.value==="("||r.regex===!1){V({type:"plus",value:y,output:d});continue}if($&&($.type==="bracket"||$.type==="paren"||$.type==="brace")||A.parens>0){V({type:"plus",value:y});continue}V({type:"plus",value:d});continue}if(y==="@"){if(r.noextglob!==!0&&w()==="("&&w(2)!=="?"){V({type:"at",extglob:!0,value:y,output:""});continue}V({type:"text",value:y});continue}if(y!=="*"){(y==="$"||y==="^")&&(y=`\\${y}`);let H=wM.exec(R());H&&(y+=H[0],A.index+=H[0].length),V({type:"text",value:y});continue}if($&&($.type==="globstar"||$.star===!0)){$.type="star",$.star=!0,$.value+=y,$.output=N,A.backtrack=!0,A.globstar=!0,k(y);continue}let z=R();if(r.noextglob!==!0&&/^\([^?]/.test(z)){se("star",y);continue}if($.type==="star"){if(r.noglobstar===!0){k(y);continue}let H=$.prev,ue=H.prev,Le=H.type==="slash"||H.type==="bos",Et=ue&&(ue.type==="star"||ue.type==="globstar");if(r.bash===!0&&(!Le||z[0]&&z[0]!=="/")){V({type:"star",value:y,output:""});continue}let et=A.braces>0&&(H.type==="comma"||H.type==="brace"),rf=L.length&&(H.type==="pipe"||H.type==="paren");if(!Le&&H.type!=="paren"&&!et&&!rf){V({type:"star",value:y,output:""});continue}for(;z.slice(0,3)==="/**";){let Is=t[A.index+4];if(Is&&Is!=="/")break;z=z.slice(3),k("/**",3)}if(H.type==="bos"&&v()){$.type="globstar",$.value+=y,$.output=O(r),A.output=$.output,A.globstar=!0,k(y);continue}if(H.type==="slash"&&H.prev.type!=="bos"&&!Et&&v()){A.output=A.output.slice(0,-(H.output+$.output).length),H.output=`(?:${H.output}`,$.type="globstar",$.output=O(r)+(r.strictSlashes?")":"|$)"),$.value+=y,A.globstar=!0,A.output+=H.output+$.output,k(y);continue}if(H.type==="slash"&&H.prev.type!=="bos"&&z[0]==="/"){let Is=z[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(H.output+$.output).length),H.output=`(?:${H.output}`,$.type="globstar",$.output=`${O(r)}${h}|${h}${Is})`,$.value+=y,A.output+=H.output+$.output,A.globstar=!0,k(y+F()),V({type:"slash",value:"/",output:""});continue}if(H.type==="bos"&&z[0]==="/"){$.type="globstar",$.value+=y,$.output=`(?:^|${h}|${O(r)}${h})`,A.output=$.output,A.globstar=!0,k(y+F()),V({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-$.output.length),$.type="globstar",$.output=O(r),$.value+=y,A.output+=$.output,A.globstar=!0,k(y);continue}let Ee={type:"star",value:y,output:N};if(r.bash===!0){Ee.output=".*?",($.type==="bos"||$.type==="slash")&&(Ee.output=B+Ee.output),V(Ee);continue}if($&&($.type==="bracket"||$.type==="paren")&&r.regex===!0){Ee.output=y,V(Ee);continue}(A.index===A.start||$.type==="slash"||$.type==="dot")&&($.type==="dot"?(A.output+=C,$.output+=C):r.dot===!0?(A.output+=E,$.output+=E):(A.output+=B,$.output+=B),w()!=="*"&&(A.output+=m,$.output+=m)),V(Ee)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(na("closing","]"));A.output=Yt.escapeLast(A.output,"["),ee("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(na("closing",")"));A.output=Yt.escapeLast(A.output,"("),ee("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(na("closing","}"));A.output=Yt.escapeLast(A.output,"{"),ee("braces")}if(r.strictSlashes!==!0&&($.type==="star"||$.type==="bracket")&&V({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};Rg.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(Wl,r.maxLength):Wl,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);t=HS[t]||t;let i=Yt.isWindows(e),{DOT_LITERAL:a,SLASH_LITERAL:s,ONE_CHAR:u,DOTS_SLASH:c,NO_DOT:l,NO_DOTS:f,NO_DOTS_SLASH:d,STAR:h,START_ANCHOR:m}=Gl.globChars(i),b=r.dot?f:l,D=r.dot?d:l,C=r.capture?"":"?:",E={negated:!1,prefix:""},g=r.bash===!0?".*?":h;r.capture&&(g=`(${g})`);let _=B=>B.noglobstar===!0?g:`(${C}(?:(?!${m}${B.dot?c:a}).)*?)`,S=B=>{switch(B){case"*":return`${b}${u}${g}`;case".*":return`${a}${u}${g}`;case"*.*":return`${b}${g}${a}${u}${g}`;case"*/*":return`${b}${g}${s}${u}${D}${g}`;case"**":return b+_(r);case"**/*":return`(?:${b}${_(r)}${s})?${D}${u}${g}`;case"**/*.*":return`(?:${b}${_(r)}${s})?${D}${g}${a}${u}${g}`;case"**/.*":return`(?:${b}${_(r)}${s})?${a}${u}${g}`;default:{let I=/^(.*?)\.(\w+)$/.exec(B);if(!I)return;let N=S(I[1]);return N?N+a+I[2]:void 0}}},T=Yt.removePrefix(t,E),O=S(T);return O&&r.strictSlashes!==!0&&(O+=`${s}?`),O};VS.exports=Rg});var WS=x((TY,GS)=>{"use strict";var _M=require("path"),xM=qS(),Ig=zS(),Bg=Os(),SM=As(),FM=t=>t&&typeof t=="object"&&!Array.isArray(t),Ze=(t,e,r=!1)=>{if(Array.isArray(t)){let l=t.map(d=>Ze(d,e,r));return d=>{for(let h of l){let m=h(d);if(m)return m}return!1}}let n=FM(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=Bg.isWindows(e),a=n?Ze.compileRe(t,e):Ze.makeRe(t,e,!1,!0),s=a.state;delete a.state;let u=()=>!1;if(o.ignore){let l={...e,ignore:null,onMatch:null,onResult:null};u=Ze(o.ignore,l,r)}let c=(l,f=!1)=>{let{isMatch:d,match:h,output:m}=Ze.test(l,a,e,{glob:t,posix:i}),b={glob:t,state:s,regex:a,posix:i,input:l,output:m,match:h,isMatch:d};return typeof o.onResult=="function"&&o.onResult(b),d===!1?(b.isMatch=!1,f?b:!1):u(l)?(typeof o.onIgnore=="function"&&o.onIgnore(b),b.isMatch=!1,f?b:!1):(typeof o.onMatch=="function"&&o.onMatch(b),f?b:!0)};return r&&(c.state=s),c};Ze.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?Bg.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=Ze.matchBase(t,e,r,o):s=e.exec(u)),{isMatch:!!s,match:s,output:u}};Ze.matchBase=(t,e,r,n=Bg.isWindows(r))=>(e instanceof RegExp?e:Ze.makeRe(e,r)).test(_M.basename(t));Ze.isMatch=(t,e,r)=>Ze(e,r)(t);Ze.parse=(t,e)=>Array.isArray(t)?t.map(r=>Ze.parse(r,e)):Ig(t,{...e,fastpaths:!1});Ze.scan=(t,e)=>xM(t,e);Ze.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=Ze.toRegex(s,e);return n===!0&&(u.state=t),u};Ze.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=Ig.fastpaths(t,e)),o.output||(o=Ig(t,e)),Ze.compileRe(o,e,r,n)};Ze.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/$^/}};Ze.constants=SM;GS.exports=Ze});var YS=x((RY,KS)=>{"use strict";KS.exports=WS()});var tF=x((IY,eF)=>{"use strict";var XS=require("util"),ZS=OS(),Lr=YS(),jg=Os(),JS=t=>t===""||t==="./",QS=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},Ie=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,o=new Set,i=new Set,a=0,s=l=>{i.add(l.output),r&&r.onResult&&r.onResult(l)};for(let l=0;l<e.length;l++){let f=Lr(String(e[l]),{...r,onResult:s},!0),d=f.state.negated||f.state.negatedExtglob;d&&a++;for(let h of t){let m=f(h,!0);(d?!m.isMatch:m.isMatch)&&(d?n.add(m.output):(n.delete(m.output),o.add(m.output)))}}let c=(a===e.length?[...i]:[...o]).filter(l=>!n.has(l));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(l=>l.replace(/\\/g,"")):e}return c};Ie.match=Ie;Ie.matcher=(t,e)=>Lr(t,e);Ie.isMatch=(t,e,r)=>Lr(e,r)(t);Ie.any=Ie.isMatch;Ie.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(Ie(t,e,{...r,onResult:i}));for(let s of o)a.has(s)||n.add(s);return[...n]};Ie.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${XS.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>Ie.contains(t,n,r));if(typeof e=="string"){if(JS(t)||JS(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return Ie.isMatch(t,e,{...r,contains:!0})};Ie.matchKeys=(t,e,r)=>{if(!jg.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=Ie(Object.keys(t),e,r),o={};for(let i of n)o[i]=t[i];return o};Ie.some=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Lr(String(o),r);if(n.some(a=>i(a)))return!0}return!1};Ie.every=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Lr(String(o),r);if(!n.every(a=>i(a)))return!1}return!0};Ie.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${XS.inspect(t)}"`);return[].concat(e).every(n=>Lr(n,r)(t))};Ie.capture=(t,e,r)=>{let n=jg.isWindows(r),i=Lr.makeRe(String(t),{...r,capture:!0}).exec(n?jg.toPosixSlashes(e):e);if(i)return i.slice(1).map(a=>a===void 0?"":a)};Ie.makeRe=(...t)=>Lr.makeRe(...t);Ie.scan=(...t)=>Lr.scan(...t);Ie.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let o of ZS(String(n),e))r.push(Lr.parse(o,e));return r};Ie.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!QS(t)?[t]:ZS(t,e)};Ie.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return Ie.braces(t,{...e,expand:!0})};Ie.hasBraces=QS;eF.exports=Ie});var qF=x((TJ,un)=>{var Oe=require("fs"),Xl=require("os"),gt=require("path"),xF=require("crypto"),Mr={fs:Oe.constants,os:Xl.constants},SF="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",kF=/XXXXXX/,JM=3,$F=(Mr.O_CREAT||Mr.fs.O_CREAT)|(Mr.O_EXCL||Mr.fs.O_EXCL)|(Mr.O_RDWR||Mr.fs.O_RDWR),XM=Xl.platform()==="win32",ZM=Mr.EBADF||Mr.os.errno.EBADF,QM=Mr.ENOENT||Mr.os.errno.ENOENT,PF=448,TF=384,e9="exit",ia=[],RF=Oe.rmdirSync.bind(Oe),IF=!1;function t9(t,e){return Oe.rm(t,{recursive:!0},e)}function BF(t){return Oe.rmSync(t,{recursive:!0})}function zg(t,e){let r=aa(t,e),n=r[0],o=r[1];f9(n,function(i,a){if(i)return o(i);let s=a.tries;(function u(){try{let c=NF(a);Oe.stat(c,function(l){if(!l)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 Gg(t){let e=aa(t),r=e[0],n=p9(r),o=n.tries;do{let i=NF(n);try{Oe.statSync(i)}catch{return i}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function r9(t,e){let r=aa(t,e),n=r[0],o=r[1];zg(n,function(a,s){if(a)return o(a);Oe.open(s,$F,n.mode||TF,function(c,l){if(c)return o(c);if(n.discardDescriptor)return Oe.close(l,function(d){return o(d,s,void 0,Hg(s,-1,n,!1))});{let f=n.discardDescriptor||n.detachDescriptor;o(null,s,l,Hg(s,f?-1:l,n,!1))}})})}function n9(t){let e=aa(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,o=Gg(r),i=Oe.openSync(o,$F,r.mode||TF);return r.discardDescriptor&&(Oe.closeSync(i),i=void 0),{name:o,fd:i,removeCallback:Hg(o,n?-1:i,r,!0)}}function o9(t,e){let r=aa(t,e),n=r[0],o=r[1];zg(n,function(a,s){if(a)return o(a);Oe.mkdir(s,n.mode||PF,function(c){if(c)return o(c);o(null,s,jF(s,n,!1))})})}function i9(t){let e=aa(t),r=e[0],n=Gg(r);return Oe.mkdirSync(n,r.mode||PF),{name:n,removeCallback:jF(n,r,!0)}}function a9(t,e){let r=function(n){if(n&&!Vg(n))return e(n);e()};0<=t[0]?Oe.close(t[0],function(){Oe.unlink(t[1],r)}):Oe.unlink(t[1],r)}function s9(t){let e=null;try{0<=t[0]&&Oe.closeSync(t[0])}catch(r){if(!d9(r)&&!Vg(r))throw r}finally{try{Oe.unlinkSync(t[1])}catch(r){Vg(r)||(e=r)}}if(e!==null)throw e}function Hg(t,e,r,n){let o=Jl(s9,[e,t],n),i=Jl(a9,[e,t],n,o);return r.keep||ia.unshift(o),n?o:i}function jF(t,e,r){let n=e.unsafeCleanup?t9:Oe.rmdir.bind(Oe),o=e.unsafeCleanup?BF:RF,i=Jl(o,t,r),a=Jl(n,t,r,i);return e.keep||ia.unshift(i),r?i:a}function Jl(t,e,r,n){let o=!1;return function i(a){if(!o){let s=n||i,u=ia.indexOf(s);return u>=0&&ia.splice(u,1),o=!0,r||t===RF||t===BF?t(e):t(e,a||function(){})}}}function u9(){if(IF)for(;ia.length;)try{ia[0]()}catch{}}function FF(t){let e=[],r=null;try{r=xF.randomBytes(t)}catch{r=xF.pseudoRandomBytes(t)}for(let n=0;n<t;n++)e.push(SF[r[n]%SF.length]);return e.join("")}function Jt(t){return typeof t>"u"}function aa(t,e){if(typeof t=="function")return[{},t];if(Jt(t))return[{},e];let r={};for(let n of Object.getOwnPropertyNames(t))r[n]=t[n];return[r,e]}function c9(t,e,r){let n=gt.isAbsolute(t)?t:gt.join(e,t);Oe.stat(n,function(o){o?Oe.realpath(gt.dirname(n),function(i,a){if(i)return r(i);r(null,gt.join(a,gt.basename(n)))}):Oe.realpath(n,r)})}function l9(t,e){let r=gt.isAbsolute(t)?t:gt.join(e,t);try{return Oe.statSync(r),Oe.realpathSync(r)}catch{let o=Oe.realpathSync(gt.dirname(r));return gt.join(o,gt.basename(r))}}function NF(t){let e=t.tmpdir;if(!Jt(t.name))return gt.join(e,t.dir,t.name);if(!Jt(t.template))return gt.join(e,t.dir,t.template).replace(kF,FF(6));let r=[t.prefix?t.prefix:"tmp","-",process.pid,"-",FF(12),t.postfix?"-"+t.postfix:""].join("");return gt.join(e,t.dir,r)}function LF(t){if(!Jt(t.name)){let e=t.name;if(gt.isAbsolute(e))throw new Error(`name option must not contain an absolute path, found "${e}".`);let r=gt.basename(e);if(r===".."||r==="."||r!==e)throw new Error(`name option must not contain a path, found "${e}".`)}if(!Jt(t.template)&&!t.template.match(kF))throw new Error(`Invalid template, found "${t.template}".`);if(!Jt(t.tries)&&isNaN(t.tries)||t.tries<0)throw new Error(`Invalid tries, found "${t.tries}".`);t.tries=Jt(t.name)?t.tries||JM:1,t.keep=!!t.keep,t.detachDescriptor=!!t.detachDescriptor,t.discardDescriptor=!!t.discardDescriptor,t.unsafeCleanup=!!t.unsafeCleanup,t.prefix=Jt(t.prefix)?"":t.prefix,t.postfix=Jt(t.postfix)?"":t.postfix}function AF(t,e,r,n){if(Jt(e))return n(null);c9(e,r,function(o,i){if(o)return n(o);let a=gt.relative(r,i);if(!i.startsWith(r))return n(new Error(`${t} option must be relative to "${r}", found "${a}".`));n(null,a)})}function OF(t,e,r){if(Jt(e))return;let n=l9(e,r),o=gt.relative(r,n);if(!n.startsWith(r))throw new Error(`${t} option must be relative to "${r}", found "${o}".`);return o}function f9(t,e){m9(t,function(r,n){if(r)return e(r);t.tmpdir=n;try{LF(t,n)}catch(o){return e(o)}AF("dir",t.dir,n,function(o,i){if(o)return e(o);t.dir=Jt(i)?"":i,AF("template",t.template,n,function(a,s){if(a)return e(a);t.template=s,e(null,t)})})})}function p9(t){let e=t.tmpdir=MF(t);LF(t,e);let r=OF("dir",t.dir,e);return t.dir=Jt(r)?"":r,t.template=OF("template",t.template,e),t}function d9(t){return UF(t,-ZM,"EBADF")}function Vg(t){return UF(t,-QM,"ENOENT")}function UF(t,e,r){return XM?t.code===r:t.code===r&&t.errno===e}function h9(){IF=!0}function m9(t,e){return Oe.realpath(t&&t.tmpdir||Xl.tmpdir(),e)}function MF(t){return Oe.realpathSync(t&&t.tmpdir||Xl.tmpdir())}process.addListener(e9,u9);Object.defineProperty(un.exports,"tmpdir",{enumerable:!0,configurable:!1,get:function(){return MF()}});un.exports.dir=o9;un.exports.dirSync=i9;un.exports.file=r9;un.exports.fileSync=n9;un.exports.tmpName=zg;un.exports.tmpNameSync=Gg;un.exports.setGracefulCleanup=h9});var ef=require("node:process");var hD=ge(dD(),1),{program:pt,createCommand:Y9,createArgument:J9,createOption:X9,CommanderError:Z9,InvalidArgumentError:Q9,InvalidOptionArgumentError:e7,Command:t7,Argument:r7,Option:n7,Help:o7}=hD.default;var mr={name:"@capgo/cli",version:"7.20.2",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",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:"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"},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.25.11",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^10.1.2",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};var Xi=require("node:fs");var Dt=ge(Cf(),1),Io=require("node:process"),ln=ge(require("node:readline"),1),Ff=ge(require("node:readline"),1),xD=require("node:stream"),SD=ge(_f(),1);function FA({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 AA=FA();function FD(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(AA,"")}function AD(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var OD={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 l=u[c],f=e.length(l);if(s>=o-(f==2?1:0))if(s+f<=i)a+=l;else break;s+=f}return a}})(OD);var OA=OD.exports,kA=AD(OA),$A=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},PA=AD($A);function la(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=FD(t),t.length===0))return 0;t=t.replace(PA()," ");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(kA.eastAsianWidth(o)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}var xf=10,yD=(t=0)=>e=>`\x1B[${e+t}m`,bD=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,vD=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,Be={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(Be.modifier);var TA=Object.keys(Be.color),RA=Object.keys(Be.bgColor);[...TA,...RA];function IA(){let t=new Map;for(let[e,r]of Object.entries(Be)){for(let[n,o]of Object.entries(r))Be[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=Be[n],t.set(o[0],o[1]);Object.defineProperty(Be,e,{value:r,enumerable:!1})}return Object.defineProperty(Be,"codes",{value:t,enumerable:!1}),Be.color.close="\x1B[39m",Be.bgColor.close="\x1B[49m",Be.color.ansi=yD(),Be.color.ansi256=bD(),Be.color.ansi16m=vD(),Be.bgColor.ansi=yD(xf),Be.bgColor.ansi256=bD(xf),Be.bgColor.ansi16m=vD(xf),Object.defineProperties(Be,{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=>Be.rgbToAnsi256(...Be.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)=>Be.ansi256ToAnsi(Be.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>Be.ansi256ToAnsi(Be.hexToAnsi256(e)),enumerable:!1}}),Be}var BA=IA(),Ws=new Set(["\x1B","\x9B"]),jA=39,Of="\x07",kD="[",NA="]",$D="m",kf=`${NA}8;;`,wD=t=>`${Ws.values().next().value}${kD}${t}${$D}`,CD=t=>`${Ws.values().next().value}${kf}${t}${Of}`,LA=t=>t.split(" ").map(e=>la(e)),Sf=(t,e,r)=>{let n=[...e],o=!1,i=!1,a=la(FD(t[t.length-1]));for(let[s,u]of n.entries()){let c=la(u);if(a+c<=r?t[t.length-1]+=u:(t.push(u),a=0),Ws.has(u)&&(o=!0,i=n.slice(s+1).join("").startsWith(kf)),o){i?u===Of&&(o=!1,i=!1):u===$D&&(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())},UA=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(la(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},MA=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let n="",o,i,a=LA(t),s=[""];for(let[c,l]of t.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let f=la(s[s.length-1]);if(c!==0&&(f>=e&&(r.wordWrap===!1||r.trim===!1)&&(s.push(""),f=0),(f>0||r.trim===!1)&&(s[s.length-1]+=" ",f++)),r.hard&&a[c]>e){let d=e-f,h=1+Math.floor((a[c]-d-1)/e);Math.floor((a[c]-1)/e)<h&&s.push(""),Sf(s,l,e);continue}if(f+a[c]>e&&f>0&&a[c]>0){if(r.wordWrap===!1&&f<e){Sf(s,l,e);continue}s.push("")}if(f+a[c]>e&&r.wordWrap===!1){Sf(s,l,e);continue}s[s.length-1]+=l}r.trim!==!1&&(s=s.map(c=>UA(c)));let u=[...s.join(`
|
|
105
105
|
`)];for(let[c,l]of u.entries()){if(n+=l,Ws.has(l)){let{groups:d}=new RegExp(`(?:\\${kD}(?<code>\\d+)m|\\${kf}(?<uri>.*)${Of})`).exec(u.slice(c).join(""))||{groups:{}};if(d.code!==void 0){let h=Number.parseFloat(d.code);o=h===jA?void 0:h}else d.uri!==void 0&&(i=d.uri.length===0?void 0:d.uri)}let f=BA.codes.get(Number(o));u[c+1]===`
|
|
106
106
|
`?(i&&(n+=CD("")),o&&f&&(n+=wD(f))):l===`
|
|
107
107
|
`&&(o&&f&&(n+=wD(o)),i&&(n+=CD(i)))}return n};function ED(t,e,r){return String(t).normalize().replace(/\r\n/g,`
|
|
@@ -160,12 +160,12 @@ Trial expires in ${s} days, upgrade here: ${i.hostWeb}/dashboard/settings/plans
|
|
|
160
160
|
Upgrade here: ${i.hostWeb}/dashboard/settings/plans
|
|
161
161
|
`),bl(100),Promise.resolve().then(()=>(eg(),Qm)).then(c=>{c.default(`${i.hostWeb}/dashboard/settings/plans`)}),bl(500),new Error("Plan upgrade required for upload");let[s,u]=await Promise.all([Y1(t,e),K1(t,e)]);s>0&&o&&!u&&p.warn(`WARNING !!
|
|
162
162
|
Trial expires in ${s} days, upgrade here: ${i.hostWeb}/dashboard/settings/plans
|
|
163
|
-
`)}function ie(t=!1){let e=cr.env.CAPGO_TOKEN?.trim();if(e)return t||p.info("Use CAPGO_TOKEN environment variable"),e;let r=(0,vl.homedir)(),n,o=`${r}/.capgo`;if((0,Ye.existsSync)(o)&&(t||p.info(`Use global API key ${o}`),n=(0,Ye.readFileSync)(o,"utf8").trim()),o=".capgo",!n&&(0,Ye.existsSync)(o)&&(t||p.info(`Use local API key ${o}`),n=(0,Ye.readFileSync)(o,"utf8").trim()),!n){let i=`Cannot find API key in local folder or global, please login first with ${Qe().runner} @capacitor/cli login`;throw p.error(i),new Error(i)}return n}async function*ag(t){let e=await(0,Ye.readdirSync)(t,{withFileTypes:!0});for(let r of e){let n=(0,Ke.resolve)(t,r.name);r.isDirectory()&&!r.name.startsWith(".")&&!r.name.startsWith("node_modules")&&!r.name.startsWith("dist")?yield*ag(n):yield n}}function Ki(t){let e=/\.(jpg|jpeg|png|gif|bmp|webp)$/i,r=t.match(e);if(r)switch(r[1].toLowerCase()){case"jpg":case"jpeg":return"image/jpeg";case"png":return"image/png";case"webp":return"image/webp"}return null}async function _l(){let t=(0,cr.cwd)(),e=!1,r=(0,Ke.resolve)(t,"tsconfig.json");(0,Ye.existsSync)(r)&&(e=!0);for await(let n of ag(t)){if(n.includes("angular.json"))return p.info("Found angular project"),e?"angular-ts":"angular-js";if(n.includes("nuxt.config.js")||n.includes("nuxt.config.ts"))return p.info("Found nuxtjs project"),e?"nuxtjs-ts":"nuxtjs-js";if(n.includes("next.config.js")||n.includes("next.config.mjs"))return p.info("Found nextjs project"),e?"nextjs-ts":"nextjs-js";if(n.includes("svelte.config.js"))return p.info("Found sveltekit project"),e?"sveltekit-ts":"sveltekit-js";if(n.includes("rolluconfig.js"))return p.info("Found svelte project"),e?"svelte-ts":"svelte-js";if(n.includes("vue.config.js"))return p.info("Found vue project"),e?"vue-ts":"vue-js";if(n.includes(bt)){let o=(0,Ke.dirname)(n),i=await ft(o);if(i){if(i.get("react"))return p.info("Found react project test"),e?"react-ts":"react-js";if(i.get("vue"))return p.info("Found vue project"),e?"vue-ts":"vue-js"}}}return"unknown"}function e2(t,e){return t==="angular-js"||t==="angular-ts"?e?"src/main.ts":"src/main.js":t==="nextjs-js"||t==="nextjs-ts"?e?"src/app/layout.tsx":"src/app/layout.js":t==="svelte-js"||t==="svelte-ts"||t==="vue-js"||t==="vue-ts"?e?"src/main.ts":"src/main.js":t==="react-js"||t==="react-ts"?e?"src/index.tsx":"src/index.js":null}async function sg(t){if(t==="angular")return p.info("Angular project detected"),"build";if(t==="nuxtjs")return p.info("Nuxtjs project detected"),"generate";if(t==="nextjs"){if(p.info("Nextjs project detected"),p.warn("Please make sure you have configured static export in your next.config.js: https://nextjs.org/docs/pages/building-your-application/deploying/static-exports"),p.warn("Please make sure you have the output: 'export' and distDir: 'dist' in your next.config.js"),!await ye({message:"Do you want to continue?"})){let r="Build command selection aborted by user";throw p.error(r),new Error(r)}return"build"}if(t==="sveltekit"){if(p.info("Sveltekit project detected"),p.warn("Please make sure you have the adapter-static installed: https://kit.svelte.dev/docs/adapter-static"),p.warn("Please make sure you have the pages: 'dist' and assets: 'dest', in your svelte.config.js adaptater"),!await ye({message:"Do you want to continue?"})){let r="Build command selection aborted by user";throw p.error(r),new Error(r)}return"build"}return"build"}async function t2(){let t=/(main|index)\.(ts|tsx|js|jsx)$/,e="",r=(0,cr.cwd)(),n=r.split("/").length;for await(let o of ag(r))if(o.split("/").length-n<=2&&t.test(o)){e=o,p.info(`Found main file here ${o}`);break}return e}async function ug(t,e){return t.from("app_versions").upsert(e,{onConflict:"name,app_id"}).eq("app_id",e.app_id).eq("name",e.name)}async function r2(t,e,r){let n={app_id:e,name:r,version:0};try{let i=await t.functions.invoke("files/upload_link",{body:JSON.stringify(n)});if(i.error){if(i.error instanceof Vi.FunctionsHttpError){let a=await i.error.context.json();p.error(`Upload URL error: ${a.status||JSON.stringify(a)}`)}else p.error(`Cannot get upload url: ${i.error.message}`);return""}return i.data.url}catch(o){p.error(`Cannot get upload url ${U(o)}`)}return""}async function*n2(t){let e=(0,Ye.readdirSync)(t,{withFileTypes:!0});for(let r of e){let n=(0,Ke.join)(t,r.name);r.isDirectory()?yield*n2(n):yield n}}async function o2(t){let e=[],r=[".DS_Store",".git",".gitignore","node_modules","package-lock.json","tsconfig.json","tsconfig.app.json","tsconfig.spec.json","tsconfig.app.json","tsconfig.spec.json","tsconfig.app.json","tsconfig.spec.json"];for await(let n of n2(t)){if(r.some(s=>n.includes(s))){p.info(`Ignoring file ${n}, please ensure you have only required files in your dist folder`);continue}let o=(0,Ye.readFileSync)(n);if(o.length===0){p.info(`Ignoring empty file ${n}, please ensure you have only required files in your dist folder`);continue}let i=await Xr(o,"sha256"),a=(0,Ke.relative)(t,n);a.startsWith("/")&&(a=a.substring(1)),e.push({file:a,hash:i})}return e}async function xl(t){return(0,vl.platform)()==="win32"?H5(t):q5(t)}function q5(t){let e=new rg.default;return e.addLocalFolder(t),e.toBuffer()}async function H5(t){p.info("Zipping file windows mode");let e=new rg.default,r=(n,o)=>{let i=(0,Ye.readdirSync)(n);for(let a of i){let s=(0,Ke.join)(n,a),u=(0,Ye.statSync)(s);if(u.isFile()){let c=(0,Ye.readFileSync)(s);e.addFile((0,Ke.join)(o,a).split(Ke.sep).join("/"),c)}else u.isDirectory()&&r(s,(0,Ke.join)(o,a))}};return r(t,""),e.toBuffer()}async function i2(t,e,r,n,o,i,a,s){return new Promise((u,c)=>{be(t,{channel:"app",event:"App TUS upload",icon:"\u23EB",user_id:r,tags:{"app-id":n},notify:!1}),new wl.Upload(e,{endpoint:`${a.hostFilesApi}/files/upload/attachments/`,chunkSize:s,metadataForPartialUploads:{filename:`orgs/${r}/apps/${n}/${o}.zip`,filetype:"application/gzip"},metadata:{filename:`orgs/${r}/apps/${n}/${o}.zip`,filetype:"application/zip"},headers:{Authorization:t},onError(f){if(p.error(`Error uploading bundle: ${f.message}`),f instanceof wl.DetailedError){let d=f.originalResponse?.getBody(),h=JSON.parse(d||'{"error": "unknown error"}');c(h.status||h.error||h.message||"unknown error")}else c(f.message||f.toString()||"unknown error")},onProgress(f,d){let h=(f/d*100).toFixed(2);i.message(`Uploaded ${h}%`)},async onSuccess(){await be(t,{channel:"app",event:"App TUS done",icon:"\u23EB",user_id:r,tags:{"app-id":n},notify:!1}).catch(),u(!0)}}).start()})}async function a2(t,e,r){let n={app_id:e,name:r};try{let i=await t.functions.invoke("private/delete_failed_version",{body:JSON.stringify(n),method:"DELETE"});if(i.error){if(i.error instanceof Vi.FunctionsHttpError){let a=await i.error.context.json();p.error(`Cannot delete failed version: ${a.status||JSON.stringify(a)}`)}else p.error(`Cannot delete failed version: ${i.error.message}`);return}return i.data?.status}catch(o){if(o instanceof Vi.FunctionsHttpError){let i=await o.context.json();p.error(`Cannot delete failed version: ${i.message||JSON.stringify(i)}`)}else p.error(`Cannot delete failed version: ${U(o)}`)}}async function Sl(t,e){if(!e.app_id||!e.name||!e.created_by)return p.error("missing app_id, name, or created_by"),Promise.reject(new Error("missing app_id, name, or created_by"));let{data:r,error:n}=await t.from("channels").select().eq("app_id",e.app_id).eq("name",e.name).single();return r&&!n?t.from("channels").update(e).eq("app_id",e.app_id).eq("name",e.name).select().single():t.from("channels").insert(e).select().single()}async function be(t,e,r){try{r&&p.info(`Get remove config: for ${e.event}`);let n=await El();r&&p.info(`Sending LogSnag event: ${JSON.stringify(e)}`);let o=new AbortController,i=setTimeout(()=>o.abort(),1e4);try{let a=await fetch(`${n.hostApi}/private/events`,{method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json",capgkey:t},signal:o.signal});if(clearTimeout(i),!a.ok)throw new Error(`HTTP error! status: ${a.status}`);let s=await a.json();s.error&&p.error(`Failed to send LogSnag event: ${s.error}`)}finally{clearTimeout(i)}}catch(n){r&&(p.error("Failed to send Stats event details:"),p.error(U(n)))}}async function Yi(t,e){let{error:r,data:n}=await t.rpc("get_orgs_v6");if(r)throw p.error("Cannot get the list of organizations - exiting"),p.error(`Error ${JSON.stringify(r)}`),new Error("Cannot get the list of organizations");let o=n.filter(u=>!!e.find(c=>c===u.role));if(n.length===0)throw p.error("Could not get organization please create an organization first"),new Error("No organizations available");if(o.length===0)throw p.error(`Could not find organization with roles: ${e.join(" or ")} please create an organization or ask the admin to add you to the organization with this roles`),new Error("Could not find organization with required roles");let i=o.length>1?await Dr({message:"Please pick the organization that you want to insert to",options:o.map(u=>({value:u.gid,label:u.name}))}):o[0].gid;if(De(i))throw p.error("Canceled organization selection, exiting"),new Error("Organization selection cancelled");let a=i,s=n.find(u=>u.gid===a);return p.info(`Using the organization "${s.name}" as the app owner`),s}async function oe(t,e,r=["all"]){await L5(t,e,r);let{data:n,error:o}=await t.rpc("get_user_id",{apikey:e}).single(),i=(n||"").toString();if(!i||o)throw p.error("Cannot auth user with apikey"),new Error("Cannot authenticate user with provided API key");return i}async function ar(t,e){let{data:r,error:n}=await t.from("apps").select("owner_org").eq("app_id",e).single();if(!r||n)throw p.error(`Cannot get organization id for app id ${e}`),U(n),new Error(`Cannot get organization id for app id ${e}`);return r.owner_org}function Ji(t){return new Date(t||"").toLocaleString()}var q1=!1,Hi="npm",ys="install",tg="npx";function Qe(){if(q1)return{pm:Hi,command:ys,installCommand:`${Hi} ${ys}`,runner:tg};let t=vt((0,cr.cwd)());return Hi=da(t,"npm"),ys=Xs(Hi),q1=!0,tg=ID(t),{pm:Hi,command:ys,installCommand:`${Hi} ${ys}`,runner:tg}}function s2(t){return(0,Ye.readdirSync)(t,{withFileTypes:!0}).flatMap(n=>{let o=(0,Ke.join)(t,n.name);return n.isDirectory()?s2(o):o.split(`node_modules${Ke.sep}`)[1]||o})}async function cg(t,e){let r=e?e.split(","):[],n;try{n=await ft("",t)}catch(l){throw p.error("Invalid package.json, JSON parsing failed"),console.error("json parse error: ",l),l instanceof Error?l:new Error("Invalid package.json")}let o=t?.split(",")[0],i=o?Ke.default.resolve(o).replace(bt,""):vt((0,cr.cwd)());if(!n)throw p.error("Missing dependencies section in package.json"),new Error("Missing dependencies section in package.json");for(let[l,f]of Object.entries(n))if(typeof f!="string")throw p.error(`Invalid dependency ${l}: ${f}, expected string, got ${typeof f}`),new Error(`Invalid dependency ${l}: expected string version`);let a=r.length===0?[(0,Ke.join)((0,cr.cwd)(),"node_modules")]:r;if(!a.some(l=>(0,Ye.existsSync)(l))){let l=da(i,"npm"),f=Xs(l);throw p.error(`Missing node_modules folder at ${a.join(", ")}, please run ${l} ${f}`),new Error("Missing node_modules folder")}let u=!1,c=await Promise.all(Array.from(n.entries()).map(async([l,f])=>{let d=!1,h=!1;for(let m of a){let b=(0,Ke.join)(m,l);if((0,Ye.existsSync)(b)){d=!0;try{if(s2(b).some(C=>N5.test(C))){h=!0;break}}catch(D){throw p.error(`Error reading node_modules files for ${l} package in ${m}`),console.error(D),D instanceof Error?D:new Error(`Error reading node_modules files for ${l}`)}}}if(!d){u=!0;let m=da(i,"npm"),b=Xs(m);return p.error(`Missing dependency ${l}, please run ${m} ${b}`),{name:l,version:f}}return{name:l,version:f,native:h}})).catch(()=>[]);if(u||c.find(l=>l.native===void 0))throw p.error("Missing dependencies or invalid dependencies"),p.error("If you use monorepo, workspace or any special package manager you can use the --package-json [path,] and --node-modules [path,] options to make the command work properly"),new Error("Missing dependencies or invalid dependencies");return c}async function V5(t,e,r){let{data:n,error:o}=await t.from("channels").select("version(checksum)").eq("name",r).eq("app_id",e).single(),i=n;return o||i===null||!i.version||!i.version.checksum?null:i.version.checksum}function z5(t){if(!t)throw p.error("Error parsing native packages, perhaps the metadata does not exist in Capgo?"),new Error("Error parsing native packages");for(let r of t){if(typeof r!="object")throw p.error(`Invalid remote native package data: ${r}, expected object, got ${typeof r}`),new Error("Invalid remote native package data");let{name:n,version:o}=r;if(!n||typeof n!="string")throw p.error(`Invalid remote native package name: ${n}, expected string, got ${typeof n}`),new Error("Invalid remote native package name");if(!o||typeof o!="string")throw p.error(`Invalid remote native package version: ${o}, expected string, got ${typeof o}`),new Error("Invalid remote native package version")}return new Map(t.map(r=>[r.name,r]))}async function u2(t,e,r){let{data:n,error:o}=await t.from("channels").select(`version (
|
|
163
|
+
`)}function ie(t=!1){let e=cr.env.CAPGO_TOKEN?.trim();if(e)return t||p.info("Use CAPGO_TOKEN environment variable"),e;let r=(0,vl.homedir)(),n,o=`${r}/.capgo`;if((0,Ye.existsSync)(o)&&(t||p.info(`Use global API key ${o}`),n=(0,Ye.readFileSync)(o,"utf8").trim()),o=".capgo",!n&&(0,Ye.existsSync)(o)&&(t||p.info(`Use local API key ${o}`),n=(0,Ye.readFileSync)(o,"utf8").trim()),!n){let i=`Cannot find API key in local folder or global, please login first with ${Qe().runner} @capacitor/cli login`;throw p.error(i),new Error(i)}return n}async function*ag(t){let e=await(0,Ye.readdirSync)(t,{withFileTypes:!0});for(let r of e){let n=(0,Ke.resolve)(t,r.name);r.isDirectory()&&!r.name.startsWith(".")&&!r.name.startsWith("node_modules")&&!r.name.startsWith("dist")?yield*ag(n):yield n}}function Ki(t){let e=/\.(jpg|jpeg|png|gif|bmp|webp)$/i,r=t.match(e);if(r)switch(r[1].toLowerCase()){case"jpg":case"jpeg":return"image/jpeg";case"png":return"image/png";case"webp":return"image/webp"}return null}async function _l(){let t=(0,cr.cwd)(),e=!1,r=(0,Ke.resolve)(t,"tsconfig.json");(0,Ye.existsSync)(r)&&(e=!0);for await(let n of ag(t)){if(n.includes("angular.json"))return p.info("Found angular project"),e?"angular-ts":"angular-js";if(n.includes("nuxt.config.js")||n.includes("nuxt.config.ts"))return p.info("Found nuxtjs project"),e?"nuxtjs-ts":"nuxtjs-js";if(n.includes("next.config.js")||n.includes("next.config.mjs"))return p.info("Found nextjs project"),e?"nextjs-ts":"nextjs-js";if(n.includes("svelte.config.js"))return p.info("Found sveltekit project"),e?"sveltekit-ts":"sveltekit-js";if(n.includes("rolluconfig.js"))return p.info("Found svelte project"),e?"svelte-ts":"svelte-js";if(n.includes("vue.config.js"))return p.info("Found vue project"),e?"vue-ts":"vue-js";if(n.includes(bt)){let o=(0,Ke.dirname)(n),i=await ft(o);if(i){if(i.get("react"))return p.info("Found react project test"),e?"react-ts":"react-js";if(i.get("vue"))return p.info("Found vue project"),e?"vue-ts":"vue-js"}}}return"unknown"}function e2(t,e){return t==="angular-js"||t==="angular-ts"?e?"src/main.ts":"src/main.js":t==="nextjs-js"||t==="nextjs-ts"?e?"src/app/layout.tsx":"src/app/layout.js":t==="svelte-js"||t==="svelte-ts"||t==="vue-js"||t==="vue-ts"?e?"src/main.ts":"src/main.js":t==="react-js"||t==="react-ts"?e?"src/index.tsx":"src/index.js":null}async function sg(t){if(t==="angular")return p.info("Angular project detected"),"build";if(t==="nuxtjs")return p.info("Nuxtjs project detected"),"generate";if(t==="nextjs"){if(p.info("Nextjs project detected"),p.warn("Please make sure you have configured static export in your next.config.js: https://nextjs.org/docs/pages/building-your-application/deploying/static-exports"),p.warn("Please make sure you have the output: 'export' and distDir: 'dist' in your next.config.js"),!await ye({message:"Do you want to continue?"})){let r="Build command selection aborted by user";throw p.error(r),new Error(r)}return"build"}if(t==="sveltekit"){if(p.info("Sveltekit project detected"),p.warn("Please make sure you have the adapter-static installed: https://kit.svelte.dev/docs/adapter-static"),p.warn("Please make sure you have the pages: 'dist' and assets: 'dest', in your svelte.config.js adapter"),!await ye({message:"Do you want to continue?"})){let r="Build command selection aborted by user";throw p.error(r),new Error(r)}return"build"}return"build"}async function t2(){let t=/(main|index)\.(ts|tsx|js|jsx)$/,e="",r=(0,cr.cwd)(),n=r.split("/").length;for await(let o of ag(r))if(o.split("/").length-n<=2&&t.test(o)){e=o,p.info(`Found main file here ${o}`);break}return e}async function ug(t,e){return t.from("app_versions").upsert(e,{onConflict:"name,app_id"}).eq("app_id",e.app_id).eq("name",e.name)}async function r2(t,e,r){let n={app_id:e,name:r,version:0};try{let i=await t.functions.invoke("files/upload_link",{body:JSON.stringify(n)});if(i.error){if(i.error instanceof Vi.FunctionsHttpError){let a=await i.error.context.json();p.error(`Upload URL error: ${a.status||JSON.stringify(a)}`)}else p.error(`Cannot get upload url: ${i.error.message}`);return""}return i.data.url}catch(o){p.error(`Cannot get upload url ${U(o)}`)}return""}async function*n2(t){let e=(0,Ye.readdirSync)(t,{withFileTypes:!0});for(let r of e){let n=(0,Ke.join)(t,r.name);r.isDirectory()?yield*n2(n):yield n}}async function o2(t){let e=[],r=[".DS_Store",".git",".gitignore","node_modules","package-lock.json","tsconfig.json","tsconfig.app.json","tsconfig.spec.json","tsconfig.app.json","tsconfig.spec.json","tsconfig.app.json","tsconfig.spec.json"];for await(let n of n2(t)){if(r.some(s=>n.includes(s))){p.info(`Ignoring file ${n}, please ensure you have only required files in your dist folder`);continue}let o=(0,Ye.readFileSync)(n);if(o.length===0){p.info(`Ignoring empty file ${n}, please ensure you have only required files in your dist folder`);continue}let i=await Xr(o,"sha256"),a=(0,Ke.relative)(t,n);a.startsWith("/")&&(a=a.substring(1)),e.push({file:a,hash:i})}return e}async function xl(t){return(0,vl.platform)()==="win32"?H5(t):q5(t)}function q5(t){let e=new rg.default;return e.addLocalFolder(t),e.toBuffer()}async function H5(t){p.info("Zipping file windows mode");let e=new rg.default,r=(n,o)=>{let i=(0,Ye.readdirSync)(n);for(let a of i){let s=(0,Ke.join)(n,a),u=(0,Ye.statSync)(s);if(u.isFile()){let c=(0,Ye.readFileSync)(s);e.addFile((0,Ke.join)(o,a).split(Ke.sep).join("/"),c)}else u.isDirectory()&&r(s,(0,Ke.join)(o,a))}};return r(t,""),e.toBuffer()}async function i2(t,e,r,n,o,i,a,s){return new Promise((u,c)=>{be(t,{channel:"app",event:"App TUS upload",icon:"\u23EB",user_id:r,tags:{"app-id":n},notify:!1}),new wl.Upload(e,{endpoint:`${a.hostFilesApi}/files/upload/attachments/`,chunkSize:s,metadataForPartialUploads:{filename:`orgs/${r}/apps/${n}/${o}.zip`,filetype:"application/gzip"},metadata:{filename:`orgs/${r}/apps/${n}/${o}.zip`,filetype:"application/zip"},headers:{Authorization:t},onError(f){if(p.error(`Error uploading bundle: ${f.message}`),f instanceof wl.DetailedError){let d=f.originalResponse?.getBody(),h=JSON.parse(d||'{"error": "unknown error"}');c(h.status||h.error||h.message||"unknown error")}else c(f.message||f.toString()||"unknown error")},onProgress(f,d){let h=(f/d*100).toFixed(2);i.message(`Uploaded ${h}%`)},async onSuccess(){await be(t,{channel:"app",event:"App TUS done",icon:"\u23EB",user_id:r,tags:{"app-id":n},notify:!1}).catch(),u(!0)}}).start()})}async function a2(t,e,r){let n={app_id:e,name:r};try{let i=await t.functions.invoke("private/delete_failed_version",{body:JSON.stringify(n),method:"DELETE"});if(i.error){if(i.error instanceof Vi.FunctionsHttpError){let a=await i.error.context.json();p.error(`Cannot delete failed version: ${a.status||JSON.stringify(a)}`)}else p.error(`Cannot delete failed version: ${i.error.message}`);return}return i.data?.status}catch(o){if(o instanceof Vi.FunctionsHttpError){let i=await o.context.json();p.error(`Cannot delete failed version: ${i.message||JSON.stringify(i)}`)}else p.error(`Cannot delete failed version: ${U(o)}`)}}async function Sl(t,e){if(!e.app_id||!e.name||!e.created_by)return p.error("missing app_id, name, or created_by"),Promise.reject(new Error("missing app_id, name, or created_by"));let{data:r,error:n}=await t.from("channels").select().eq("app_id",e.app_id).eq("name",e.name).single();return r&&!n?t.from("channels").update(e).eq("app_id",e.app_id).eq("name",e.name).select().single():t.from("channels").insert(e).select().single()}async function be(t,e,r){try{r&&p.info(`Get remove config: for ${e.event}`);let n=await El();r&&p.info(`Sending LogSnag event: ${JSON.stringify(e)}`);let o=new AbortController,i=setTimeout(()=>o.abort(),1e4);try{let a=await fetch(`${n.hostApi}/private/events`,{method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json",capgkey:t},signal:o.signal});if(clearTimeout(i),!a.ok)throw new Error(`HTTP error! status: ${a.status}`);let s=await a.json();s.error&&p.error(`Failed to send LogSnag event: ${s.error}`)}finally{clearTimeout(i)}}catch(n){r&&(p.error("Failed to send Stats event details:"),p.error(U(n)))}}async function Yi(t,e){let{error:r,data:n}=await t.rpc("get_orgs_v6");if(r)throw p.error("Cannot get the list of organizations - exiting"),p.error(`Error ${JSON.stringify(r)}`),new Error("Cannot get the list of organizations");let o=n.filter(u=>!!e.find(c=>c===u.role));if(n.length===0)throw p.error("Could not get organization please create an organization first"),new Error("No organizations available");if(o.length===0)throw p.error(`Could not find organization with roles: ${e.join(" or ")} please create an organization or ask the admin to add you to the organization with this roles`),new Error("Could not find organization with required roles");let i=o.length>1?await Dr({message:"Please pick the organization that you want to insert to",options:o.map(u=>({value:u.gid,label:u.name}))}):o[0].gid;if(De(i))throw p.error("Canceled organization selection, exiting"),new Error("Organization selection cancelled");let a=i,s=n.find(u=>u.gid===a);return p.info(`Using the organization "${s.name}" as the app owner`),s}async function oe(t,e,r=["all"]){await L5(t,e,r);let{data:n,error:o}=await t.rpc("get_user_id",{apikey:e}).single(),i=(n||"").toString();if(!i||o)throw p.error("Cannot auth user with apikey"),new Error("Cannot authenticate user with provided API key");return i}async function ar(t,e){let{data:r,error:n}=await t.from("apps").select("owner_org").eq("app_id",e).single();if(!r||n)throw p.error(`Cannot get organization id for app id ${e}`),U(n),new Error(`Cannot get organization id for app id ${e}`);return r.owner_org}function Ji(t){return new Date(t||"").toLocaleString()}var q1=!1,Hi="npm",ys="install",tg="npx";function Qe(){if(q1)return{pm:Hi,command:ys,installCommand:`${Hi} ${ys}`,runner:tg};let t=vt((0,cr.cwd)());return Hi=da(t,"npm"),ys=Xs(Hi),q1=!0,tg=ID(t),{pm:Hi,command:ys,installCommand:`${Hi} ${ys}`,runner:tg}}function s2(t){return(0,Ye.readdirSync)(t,{withFileTypes:!0}).flatMap(n=>{let o=(0,Ke.join)(t,n.name);return n.isDirectory()?s2(o):o.split(`node_modules${Ke.sep}`)[1]||o})}async function cg(t,e){let r=e?e.split(","):[],n;try{n=await ft("",t)}catch(l){throw p.error("Invalid package.json, JSON parsing failed"),console.error("json parse error: ",l),l instanceof Error?l:new Error("Invalid package.json")}let o=t?.split(",")[0],i=o?Ke.default.resolve(o).replace(bt,""):vt((0,cr.cwd)());if(!n)throw p.error("Missing dependencies section in package.json"),new Error("Missing dependencies section in package.json");for(let[l,f]of Object.entries(n))if(typeof f!="string")throw p.error(`Invalid dependency ${l}: ${f}, expected string, got ${typeof f}`),new Error(`Invalid dependency ${l}: expected string version`);let a=r.length===0?[(0,Ke.join)((0,cr.cwd)(),"node_modules")]:r;if(!a.some(l=>(0,Ye.existsSync)(l))){let l=da(i,"npm"),f=Xs(l);throw p.error(`Missing node_modules folder at ${a.join(", ")}, please run ${l} ${f}`),new Error("Missing node_modules folder")}let u=!1,c=await Promise.all(Array.from(n.entries()).map(async([l,f])=>{let d=!1,h=!1;for(let m of a){let b=(0,Ke.join)(m,l);if((0,Ye.existsSync)(b)){d=!0;try{if(s2(b).some(C=>N5.test(C))){h=!0;break}}catch(D){throw p.error(`Error reading node_modules files for ${l} package in ${m}`),console.error(D),D instanceof Error?D:new Error(`Error reading node_modules files for ${l}`)}}}if(!d){u=!0;let m=da(i,"npm"),b=Xs(m);return p.error(`Missing dependency ${l}, please run ${m} ${b}`),{name:l,version:f}}return{name:l,version:f,native:h}})).catch(()=>[]);if(u||c.find(l=>l.native===void 0))throw p.error("Missing dependencies or invalid dependencies"),p.error("If you use monorepo, workspace or any special package manager you can use the --package-json [path,] and --node-modules [path,] options to make the command work properly"),new Error("Missing dependencies or invalid dependencies");return c}async function V5(t,e,r){let{data:n,error:o}=await t.from("channels").select("version(checksum)").eq("name",r).eq("app_id",e).single(),i=n;return o||i===null||!i.version||!i.version.checksum?null:i.version.checksum}function z5(t){if(!t)throw p.error("Error parsing native packages, perhaps the metadata does not exist in Capgo?"),new Error("Error parsing native packages");for(let r of t){if(typeof r!="object")throw p.error(`Invalid remote native package data: ${r}, expected object, got ${typeof r}`),new Error("Invalid remote native package data");let{name:n,version:o}=r;if(!n||typeof n!="string")throw p.error(`Invalid remote native package name: ${n}, expected string, got ${typeof n}`),new Error("Invalid remote native package name");if(!o||typeof o!="string")throw p.error(`Invalid remote native package version: ${o}, expected string, got ${typeof o}`),new Error("Invalid remote native package version")}return new Map(t.map(r=>[r.name,r]))}async function u2(t,e,r){let{data:n,error:o}=await t.from("channels").select(`version (
|
|
164
164
|
native_packages
|
|
165
165
|
)`).eq("name",r).eq("app_id",e).single();if(o)throw p.error(`Error fetching native packages: ${o.message}`),new Error(`Error fetching native packages: ${o.message}`);return z5(n.version.native_packages??[])}async function c2(t,e,r,n){let o=we();o.start(`Checking bundle checksum compatibility with channel ${r}`);let i=await V5(t,e,r);if(!i){o.stop(`No checksum found for channel ${r}, the bundle will be uploaded`);return}if(i&&i===n)throw p.error(`Cannot upload the same bundle content.
|
|
166
166
|
Current bundle checksum matches remote bundle for channel ${r}
|
|
167
|
-
Did you
|
|
168
|
-
PS: You can ignore this check with "--ignore-checksum-check"`),new Error("Cannot upload the same bundle content");o.stop(`Checksum compatible with ${r} channel`)}function he(t,e){return t||e?.plugins?.CapacitorUpdater?.appId||e?.appId}function So(t){if(!t.localVersion)return!0;if(!t.remoteVersion)return!1;try{let e=ru(t.localVersion),r=ru(t.remoteVersion);return WD(e,r)}catch{return!1}}async function Fl(t,e,r,n,o){let i=await cg(n,o),a=await u2(t,e,r),s=i.filter(c=>!!c.native).map(c=>{let l=a.get(c.name);return l?{name:c.name,localVersion:c.version,remoteVersion:l.version}:{name:c.name,localVersion:c.version,remoteVersion:void 0}}),u=[...a].filter(([c])=>i.find(l=>l.name===c)===void 0).map(([c,l])=>({name:c,localVersion:void 0,remoteVersion:l.version}));return s.push(...u),{finalCompatibility:s,localDependencies:i}}async function lg(t,e,r,n){let o=await u2(t,e,r),i=n.map(s=>{let u=o.get(s.name);return u?{name:s.name,localVersion:s.version,remoteVersion:u.version}:{name:s.name,localVersion:s.version,remoteVersion:void 0}}),a=[...o].filter(([s])=>n.find(u=>u.name===s)===void 0).map(([s,u])=>({name:s,localVersion:void 0,remoteVersion:u.version}));return i.push(...a),{finalCompatibility:i,localDependencies:n}}async function Al(t,e,r){let n=await ye({message:"Would you like to sync your project with Capacitor now? This is recommended to ensure encrypted updates work properly."});if(De(n))throw t&&e&&r&&await or("onboarding-v2",e,r,"canceled","\u{1F937}"),p.error("Canceled Capacitor sync"),new Error("Capacitor sync cancelled");if(n){let o=Qe(),i=we();i.start("Running the command...");try{await new Promise((a,s)=>{let u=(0,H1.spawn)(o.runner,["cap","sync"],{stdio:"pipe"});u.on("close",c=>{c===0?a():s(new Error(`Command failed with exit code ${c}`))}),u.on("error",c=>{s(c)})}),i.stop("Capacitor sync completed \u2705")}catch(a){i.stop("Error"),p.error(`Failed to run Capacitor sync: ${a}`),p.warn(`Please run "${o.runner} cap sync" manually to ensure encrypted updates work properly`)}}else{let o=Qe();p.warn("\u26A0\uFE0F Important: If you upload encrypted bundles without syncing, updates will fail!"),p.info(`Remember to run "${o.runner} cap sync" before uploading encrypted bundles`)}}async function l2(t,e){let{data:r}=await t.rpc("exist_app_v2",{appid:e}).single();return!!r}async function Ne(t,e,r,n,o=!1){let i=Qe(),a=await J1(t,e,r);if(!a.okay)switch(a.error){case"INVALID_APIKEY":{let c="Invalid apikey, such apikey does not exists!";throw o||p.error(c),new Error(c)}case"NO_APP":{let c=`App ${r} does not exist, run first \`${i.runner} @capgo/cli app add ${r}\` to create it`;throw o||p.error(c),new Error(c)}case"NO_ORG":{let c="Could not find organization, please contact support to resolve this!";throw o||p.error(c),new Error(c)}}let s=a.data;if(n>s){let c=`Insuficcent permissions for app ${r}. Current permission: ${wt[a.data]}, required for this action: ${wt[n]}.`;throw o||p.error(c),new Error(c)}return a.data}var lr="assets/icon.png";function G5(t,e,r){if(!e.apikey)throw r||p.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||p.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(t.includes("--"))throw r||p.error('The app id includes illegal symbols. You cannot use "--" in the app id'),new Error("App id includes illegal symbols")}async function W5(t,e,r){if(await l2(t,e))throw e==="io.ionic.starter"?(r||p.error(`This appId ${e} cannot be used it's reserved, please change it in your capacitor config.`),new Error("Reserved appId, please change it in capacitor config")):(r||p.error(`App ${e} already exist`),new Error(`App ${e} already exists`))}async function K5(t,e,r=!1){return fg(t,e,void 0,r)}async function fg(t,e,r,n=!1){n||Z("Adding"),await de(),e.apikey=e.apikey||ie();let o=await te(),i=he(t,o?.config);G5(i,e,n);let a=await ne(e.apikey,e.supaHost,e.supaAnon),s=await oe(a,e.apikey,["write","all"]);await W5(a,i,n),r||(r=await Yi(a,["admin","super_admin"]));let u=r.gid,{name:c,icon:l}=e;if(c=c||o.config?.appName||"Unknown",l=l||"resources/icon.png",!l||!c)throw n||p.error("Missing argument, you need to provide a appId and a name, or be in a capacitor project"),new Error("Missing app name or icon path");n||p.info(`Adding ${i} to Capgo`);let f=null,d=null;l&&(0,Xi.existsSync)(l)?(f=(0,Xi.readFileSync)(l),d=Ki(l)||"image/png",n||p.warn(`Found app icon ${l}`)):(0,Xi.existsSync)(lr)?(f=(0,Xi.readFileSync)(lr),d=Ki(lr)||"image/png",n||p.warn(`Found app icon ${lr}`)):n||p.warn(`Cannot find app icon in any of the following locations: ${l}, ${lr}`);let h="icon",m="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(f&&d){let{error:D}=await a.storage.from(`images/org/${u}/${i}`).upload(h,f,{contentType:d});if(D)throw n||console.error(D),n||p.error(`Could not add app ${U(D)}`),new Error(`Could not add app ${U(D)}`);let{data:C}=await a.storage.from(`images/org/${u}/${i}`).getPublicUrl(h);m=C?.publicUrl||m}let{error:b}=await a.from("apps").insert({icon_url:m,owner_org:u,user_id:s,name:c,app_id:i});if(b)throw n||p.error(`Could not add app ${U(b)}`),new Error(`Could not add app ${U(b)}`);return n||(p.success(`App ${i} added to Capgo. You can upload a bundle now`),J("Done \u2705")),{appId:i,organizationUid:u,userId:s,name:c,signedURL:m}}async function f2(t,e){await K5(t,e,!1)}async function p2(t,e,r=!1,n=!1){r||Z("Deleting"),e.apikey=e.apikey||ie();let o=await te(),i=he(t,o?.config);if(!e.apikey)throw r||p.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!i)throw r||p.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let a=await ne(e.apikey,e.supaHost,e.supaAnon),s=await oe(a,e.apikey,["write","all"]);await Ne(a,e.apikey,i,5,r);let{data:u,error:c}=await a.from("apps").select("owner_org ( created_by, id )").eq("app_id",i).single(),l=u;if(!n&&!c&&(l?.owner_org.created_by??"")!==s){if(r)throw new Error("Cannot delete app: you are not the organization owner");{p.warn("Deleting the app is not recomended for users that are not the organization owner"),p.warn("You are invited as a super_admin but your are not the owner"),p.warn("It's strongly recomended that you do not continue!");let b=await Dr({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(De(b)||b==="no")throw p.error("Canceled deleting the app, exiting"),new Error("App deletion cancelled")}}else c&&!r&&p.warn(`Cannot get the app owner ${U(c)}`);let{error:f}=await a.storage.from("images").remove([`org/${l?.owner_org.id}/${i}/icon`]);f&&!r&&p.error("Could not delete app logo");let{error:d}=await a.storage.from(`apps/${i}/${s}`).remove(["versions"]);d&&!r&&p.error("Could not delete app version");let{error:h}=await a.from("apps").delete().eq("app_id",i);if(h)throw r||p.error("Could not delete app"),new Error(`Could not delete app: ${U(h)}`);let m=await ar(a,i);return await be(e.apikey,{channel:"app",event:"App Deleted",icon:"\u{1F5D1}\uFE0F",user_id:m,tags:{"app-id":i},notify:!1}).catch(()=>{}),r||(p.success("App deleted in Capgo"),J("Done \u2705")),!0}var Ol=require("node:os"),h2=require("node:process");async function d2(t){let e={},r=Object.keys(t);return(await Promise.all(r.map(o=>Bc(o)))).forEach((o,i)=>{o&&(e[r[i]]=o)}),e}async function Y5(){let t=await ft(),e={"@capgo/cli":mr.version};for(let[r,n]of t)(r.startsWith("@capgo/")||r.startsWith("@capawesome/")||r.startsWith("capacitor"))&&(e[r]=n);return e}async function m2(t,e=!1){e||p.warn(" \u{1F48A} Capgo Doctor \u{1F48A}");let r=await te(),n=xr("",t.packageJson),o=r?.config?.plugins?.CapacitorUpdater?.version||n,i=r?.config?.appName||"",a=he("",r?.config),s=r?.config?.webDir||"";e||(p.info(` App Name: ${i}`),p.info(` App ID: ${a}`),p.info(` App Version: ${o}`),p.info(` Web Dir: ${s}`),p.info(` OS: ${(0,Ol.platform)()} ${(0,Ol.version)()}`),p.info(` Node: ${h2.version}`),p.info(" Installed Dependencies:"));let u=await Y5();if(Object.keys(u).length===0)throw e||p.warning("\x1B[31m%s\x1B[0m \u{1F6A8} No dependencies found"),new Error("No dependencies found");if(!e)for(let l of Object.keys(u))p.info(` ${l}: ${u[l]}`);let c={};if(e)c=await d2(u);else{let l=we();l.start("Running: Loading latest dependencies"),c=await d2(u),l.stop("Latest Dependencies:");for(let f of Object.keys(c))p.info(` ${f}: ${c[f]}`)}if(JSON.stringify(u)!==JSON.stringify(c))throw e||p.warn("\x1B[31m\u{1F6A8} Some dependencies are not up to date\x1B[0m"),new Error("Some dependencies are not up to date");return e||p.success("\x1B[32m\u2705 All dependencies are up to date\x1B[0m"),{appName:i,appId:a,appVersion:o,webDir:s,installedDependencies:u,latestDependencies:c}}function J5(t){let e=new ot;e.headers=["Name","id","Created"],e.rows=[];for(let r of t.toReversed())e.rows.push([r.name??"",r.app_id,Ji(r.created_at)]);p.success("Apps"),p.success(e.toString())}async function X5(t,e){let{data:r,error:n}=await t.from("apps").select().order("created_at",{ascending:!1});if(n)throw e||p.error("Apps not found"),new Error("Apps not found");return r??[]}async function g2(t,e=!1){e||Z("List apps in Capgo"),await de(),t.apikey=t.apikey||ie();let r=await ne(t.apikey,t.supaHost,t.supaAnon);await oe(r,t.apikey,["write","all","read","upload"]),e||p.info("Getting active bundle in Capgo");let n=await X5(r,e);if(!n.length)throw e||p.error("No apps found"),new Error("No apps found");return e||(p.info(`Active app in Capgo: ${n.length}`),J5(n),J("Done \u2705")),n}var D2=require("node:crypto"),Zi=require("node:fs");async function y2(t,e,r=!1){r||Z("Set app"),e.apikey=e.apikey||ie();let n=await te();if(t=he(t,n?.config),!e.apikey)throw r||p.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||p.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let o=await ne(e.apikey,e.supaHost,e.supaAnon),a=(await Yi(o,["admin","super_admin"])).gid,s=await oe(o,e.apikey,["write","all"]);await Ne(o,e.apikey,t,4,r);let{name:u,icon:c,retention:l}=e;if(l&&Number.isNaN(Number(l)))throw r||p.error("retention value must be a number"),new Error("Retention value must be a number");if(l&&l<0)throw r||p.error("retention value cannot be less than 0"),new Error("Retention value cannot be less than 0");if(l&&l>=63113904)throw r||p.error("retention value cannot be greater than 63113904 seconds (2 years)"),new Error("Retention value cannot be greater than 63113904 seconds (2 years)");let f,d,h=`icon_${(0,D2.randomUUID)()}`,m="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(c&&(0,Zi.existsSync)(c)?(f=(0,Zi.readFileSync)(c),d=Ki(c)||"image/png",r||p.warn(`Found app icon ${c}`)):(0,Zi.existsSync)(lr)?(f=(0,Zi.readFileSync)(lr),d=Ki(lr)||"image/png",r||p.warn(`Found app icon ${lr}`)):r||p.warn(`Cannot find app icon in any of the following locations: ${c}, ${lr}`),f&&d){let{error:D}=await o.storage.from(`images/org/${a}/${t}`).upload(h,f,{contentType:d});if(D)throw r||p.error(`Could not set app ${U(D)}`),new Error(`Could not set app: ${U(D)}`);let{data:C}=await o.storage.from(`images/org/${a}/${t}`).getPublicUrl(h);m=C?.publicUrl||m}let{error:b}=await o.from("apps").update({icon_url:m,name:u,retention:l?l*24*60*60:void 0}).eq("app_id",t).eq("user_id",s);if(b)throw r||p.error(`Could not set app ${U(b)}`),new Error(`Could not set app: ${U(b)}`);return r||J("Done \u2705"),!0}async function b2(t,e,r=!1){if(r||Z("Set a specific setting in capacitor config"),e.bool&&e.string)throw r||p.error("Bool and string CANNOT be set at the same time"),new Error("Bool and string cannot both be provided");if(!e.bool&&!e.string)throw r||p.error("You MUST provide either bool or string as the value"),new Error("Either bool or string value is required");if(e.bool&&e.bool!=="true"&&e.bool!=="false")throw r||p.error("Invalid bool"),new Error("Invalid bool value; expected true or false");try{let n=await te(),o=n.config,i=t.split(".");if(i.length===0)throw r||p.error("Invalid path"),new Error("Invalid config path");for(let s of i.slice(0,-1))Object.prototype.hasOwnProperty.call(o,s)||(o[s]={}),o=o[s];let a=e.bool?e.bool==="true":e.string;o[i.at(-1)]=a,await Ui(n,!0),r||p.success(`Set "${t}" to "${a}"`)}catch(n){throw r||p.error(`Cannot set config in capacitor settings ${U(n)}`),new Error(`Cannot set capacitor config: ${U(n)}`)}r||J("Done \u2705")}async function v2(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||p.error(`Cannot check Version ${e}@${r.name}: ${U(s)}`),new Error(`Cannot check version ${e}@${r.name}: ${U(s)}`);if(!a?.length)return;if(o)throw new Error(`Version ${e}@${r.name} is used in ${a.length} channel(s)`);Z(`\u274C Version ${e}@${r.name} is used in ${a.length} channel${a.length>1?"s":""}`);let u=i;if(i||(u=await ye({message:"unlink it?"})===!0),!u)throw p.error("Unlink it first"),new Error(`Version ${e}@${r.name} is still linked to channel(s)`);for(let c of a){let l=we();l.start(`Unlinking channel ${c.name}`);let f=await pg(t,e,{silent:o});if(!f)throw l.stop(`Cannot find unknown version for ${e}`),new Error(`Cannot find unknown version for ${e}`);let{error:d}=await t.from("channels").update({version:f.id}).eq("id",c.id);if(d)throw l.stop(`Cannot update channel ${c.name} ${U(d)}`),new Error(`Cannot update channel ${c.name}: ${U(d)}`);l.stop(`\u2705 Channel ${c.name} unlinked`)}J(`Version unlinked from ${a.length} channel${a.length>1?"s":""}`)}async function pg(t,e,r={}){let{silent:n=!1}=r,{data:o,error:i}=await t.from("app_versions").select("id").eq("app_id",e).eq("name","unknown").single();if(i)throw n||p.error(`Cannot call findUnknownVersion as it returned an error.
|
|
167
|
+
Did you build your app before uploading?
|
|
168
|
+
PS: You can ignore this check with "--ignore-checksum-check"`),new Error("Cannot upload the same bundle content");o.stop(`Checksum compatible with ${r} channel`)}function he(t,e){return t||e?.plugins?.CapacitorUpdater?.appId||e?.appId}function So(t){if(!t.localVersion)return!0;if(!t.remoteVersion)return!1;try{let e=ru(t.localVersion),r=ru(t.remoteVersion);return WD(e,r)}catch{return!1}}async function Fl(t,e,r,n,o){let i=await cg(n,o),a=await u2(t,e,r),s=i.filter(c=>!!c.native).map(c=>{let l=a.get(c.name);return l?{name:c.name,localVersion:c.version,remoteVersion:l.version}:{name:c.name,localVersion:c.version,remoteVersion:void 0}}),u=[...a].filter(([c])=>i.find(l=>l.name===c)===void 0).map(([c,l])=>({name:c,localVersion:void 0,remoteVersion:l.version}));return s.push(...u),{finalCompatibility:s,localDependencies:i}}async function lg(t,e,r,n){let o=await u2(t,e,r),i=n.map(s=>{let u=o.get(s.name);return u?{name:s.name,localVersion:s.version,remoteVersion:u.version}:{name:s.name,localVersion:s.version,remoteVersion:void 0}}),a=[...o].filter(([s])=>n.find(u=>u.name===s)===void 0).map(([s,u])=>({name:s,localVersion:void 0,remoteVersion:u.version}));return i.push(...a),{finalCompatibility:i,localDependencies:n}}async function Al(t,e,r){let n=await ye({message:"Would you like to sync your project with Capacitor now? This is recommended to ensure encrypted updates work properly."});if(De(n))throw t&&e&&r&&await or("onboarding-v2",e,r,"canceled","\u{1F937}"),p.error("Canceled Capacitor sync"),new Error("Capacitor sync cancelled");if(n){let o=Qe(),i=we();i.start("Running the command...");try{await new Promise((a,s)=>{let u=(0,H1.spawn)(o.runner,["cap","sync"],{stdio:"pipe"});u.on("close",c=>{c===0?a():s(new Error(`Command failed with exit code ${c}`))}),u.on("error",c=>{s(c)})}),i.stop("Capacitor sync completed \u2705")}catch(a){i.stop("Error"),p.error(`Failed to run Capacitor sync: ${a}`),p.warn(`Please run "${o.runner} cap sync" manually to ensure encrypted updates work properly`)}}else{let o=Qe();p.warn("\u26A0\uFE0F Important: If you upload encrypted bundles without syncing, updates will fail!"),p.info(`Remember to run "${o.runner} cap sync" before uploading encrypted bundles`)}}async function l2(t,e){let{data:r}=await t.rpc("exist_app_v2",{appid:e}).single();return!!r}async function Ne(t,e,r,n,o=!1){let i=Qe(),a=await J1(t,e,r);if(!a.okay)switch(a.error){case"INVALID_APIKEY":{let c="Invalid apikey, such apikey does not exists!";throw o||p.error(c),new Error(c)}case"NO_APP":{let c=`App ${r} does not exist, run first \`${i.runner} @capgo/cli app add ${r}\` to create it`;throw o||p.error(c),new Error(c)}case"NO_ORG":{let c="Could not find organization, please contact support to resolve this!";throw o||p.error(c),new Error(c)}}let s=a.data;if(n>s){let c=`Insuficcent permissions for app ${r}. Current permission: ${wt[a.data]}, required for this action: ${wt[n]}.`;throw o||p.error(c),new Error(c)}return a.data}var lr="assets/icon.png";function G5(t,e,r){if(!e.apikey)throw r||p.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||p.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(t.includes("--"))throw r||p.error('The app id includes illegal symbols. You cannot use "--" in the app id'),new Error("App id includes illegal symbols")}async function W5(t,e,r){if(await l2(t,e))throw e==="io.ionic.starter"?(r||p.error(`This appId ${e} cannot be used it's reserved, please change it in your capacitor config.`),new Error("Reserved appId, please change it in capacitor config")):(r||p.error(`App ${e} already exist`),new Error(`App ${e} already exists`))}async function K5(t,e,r=!1){return fg(t,e,void 0,r)}async function fg(t,e,r,n=!1){n||Z("Adding"),await de(),e.apikey=e.apikey||ie();let o=await te(),i=he(t,o?.config);G5(i,e,n);let a=await ne(e.apikey,e.supaHost,e.supaAnon),s=await oe(a,e.apikey,["write","all"]);await W5(a,i,n),r||(r=await Yi(a,["admin","super_admin"]));let u=r.gid,{name:c,icon:l}=e;if(c=c||o.config?.appName||"Unknown",l=l||"resources/icon.png",!l||!c)throw n||p.error("Missing argument, you need to provide a appId and a name, or be in a capacitor project"),new Error("Missing app name or icon path");n||p.info(`Adding ${i} to Capgo`);let f=null,d=null;l&&(0,Xi.existsSync)(l)?(f=(0,Xi.readFileSync)(l),d=Ki(l)||"image/png",n||p.warn(`Found app icon ${l}`)):(0,Xi.existsSync)(lr)?(f=(0,Xi.readFileSync)(lr),d=Ki(lr)||"image/png",n||p.warn(`Found app icon ${lr}`)):n||p.warn(`Cannot find app icon in any of the following locations: ${l}, ${lr}`);let h="icon",m="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(f&&d){let{error:D}=await a.storage.from(`images/org/${u}/${i}`).upload(h,f,{contentType:d});if(D)throw n||console.error(D),n||p.error(`Could not add app ${U(D)}`),new Error(`Could not add app ${U(D)}`);let{data:C}=await a.storage.from(`images/org/${u}/${i}`).getPublicUrl(h);m=C?.publicUrl||m}let{error:b}=await a.from("apps").insert({icon_url:m,owner_org:u,user_id:s,name:c,app_id:i});if(b)throw n||p.error(`Could not add app ${U(b)}`),new Error(`Could not add app ${U(b)}`);return n||(p.success(`App ${i} added to Capgo. You can upload a bundle now`),J("Done \u2705")),{appId:i,organizationUid:u,userId:s,name:c,signedURL:m}}async function f2(t,e){await K5(t,e,!1)}async function p2(t,e,r=!1,n=!1){r||Z("Deleting"),e.apikey=e.apikey||ie();let o=await te(),i=he(t,o?.config);if(!e.apikey)throw r||p.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!i)throw r||p.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let a=await ne(e.apikey,e.supaHost,e.supaAnon),s=await oe(a,e.apikey,["write","all"]);await Ne(a,e.apikey,i,5,r);let{data:u,error:c}=await a.from("apps").select("owner_org ( created_by, id )").eq("app_id",i).single(),l=u;if(!n&&!c&&(l?.owner_org.created_by??"")!==s){if(r)throw new Error("Cannot delete app: you are not the organization owner");{p.warn("Deleting the app is not recommended for users that are not the organization owner"),p.warn("You are invited as a super_admin but your are not the owner"),p.warn("It's strongly recommended that you do not continue!");let b=await Dr({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(De(b)||b==="no")throw p.error("Canceled deleting the app, exiting"),new Error("App deletion cancelled")}}else c&&!r&&p.warn(`Cannot get the app owner ${U(c)}`);let{error:f}=await a.storage.from("images").remove([`org/${l?.owner_org.id}/${i}/icon`]);f&&!r&&p.error("Could not delete app logo");let{error:d}=await a.storage.from(`apps/${i}/${s}`).remove(["versions"]);d&&!r&&p.error("Could not delete app version");let{error:h}=await a.from("apps").delete().eq("app_id",i);if(h)throw r||p.error("Could not delete app"),new Error(`Could not delete app: ${U(h)}`);let m=await ar(a,i);return await be(e.apikey,{channel:"app",event:"App Deleted",icon:"\u{1F5D1}\uFE0F",user_id:m,tags:{"app-id":i},notify:!1}).catch(()=>{}),r||(p.success("App deleted in Capgo"),J("Done \u2705")),!0}var Ol=require("node:os"),h2=require("node:process");async function d2(t){let e={},r=Object.keys(t);return(await Promise.all(r.map(o=>Bc(o)))).forEach((o,i)=>{o&&(e[r[i]]=o)}),e}async function Y5(){let t=await ft(),e={"@capgo/cli":mr.version};for(let[r,n]of t)(r.startsWith("@capgo/")||r.startsWith("@capawesome/")||r.startsWith("capacitor"))&&(e[r]=n);return e}async function m2(t,e=!1){e||p.warn(" \u{1F48A} Capgo Doctor \u{1F48A}");let r=await te(),n=xr("",t.packageJson),o=r?.config?.plugins?.CapacitorUpdater?.version||n,i=r?.config?.appName||"",a=he("",r?.config),s=r?.config?.webDir||"";e||(p.info(` App Name: ${i}`),p.info(` App ID: ${a}`),p.info(` App Version: ${o}`),p.info(` Web Dir: ${s}`),p.info(` OS: ${(0,Ol.platform)()} ${(0,Ol.version)()}`),p.info(` Node: ${h2.version}`),p.info(" Installed Dependencies:"));let u=await Y5();if(Object.keys(u).length===0)throw e||p.warning("\x1B[31m%s\x1B[0m \u{1F6A8} No dependencies found"),new Error("No dependencies found");if(!e)for(let l of Object.keys(u))p.info(` ${l}: ${u[l]}`);let c={};if(e)c=await d2(u);else{let l=we();l.start("Running: Loading latest dependencies"),c=await d2(u),l.stop("Latest Dependencies:");for(let f of Object.keys(c))p.info(` ${f}: ${c[f]}`)}if(JSON.stringify(u)!==JSON.stringify(c))throw e||p.warn("\x1B[31m\u{1F6A8} Some dependencies are not up to date\x1B[0m"),new Error("Some dependencies are not up to date");return e||p.success("\x1B[32m\u2705 All dependencies are up to date\x1B[0m"),{appName:i,appId:a,appVersion:o,webDir:s,installedDependencies:u,latestDependencies:c}}function J5(t){let e=new ot;e.headers=["Name","id","Created"],e.rows=[];for(let r of t.toReversed())e.rows.push([r.name??"",r.app_id,Ji(r.created_at)]);p.success("Apps"),p.success(e.toString())}async function X5(t,e){let{data:r,error:n}=await t.from("apps").select().order("created_at",{ascending:!1});if(n)throw e||p.error("Apps not found"),new Error("Apps not found");return r??[]}async function g2(t,e=!1){e||Z("List apps in Capgo"),await de(),t.apikey=t.apikey||ie();let r=await ne(t.apikey,t.supaHost,t.supaAnon);await oe(r,t.apikey,["write","all","read","upload"]),e||p.info("Getting active bundle in Capgo");let n=await X5(r,e);if(!n.length)throw e||p.error("No apps found"),new Error("No apps found");return e||(p.info(`Active app in Capgo: ${n.length}`),J5(n),J("Done \u2705")),n}var D2=require("node:crypto"),Zi=require("node:fs");async function y2(t,e,r=!1){r||Z("Set app"),e.apikey=e.apikey||ie();let n=await te();if(t=he(t,n?.config),!e.apikey)throw r||p.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||p.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let o=await ne(e.apikey,e.supaHost,e.supaAnon),a=(await Yi(o,["admin","super_admin"])).gid,s=await oe(o,e.apikey,["write","all"]);await Ne(o,e.apikey,t,4,r);let{name:u,icon:c,retention:l}=e;if(l&&Number.isNaN(Number(l)))throw r||p.error("retention value must be a number"),new Error("Retention value must be a number");if(l&&l<0)throw r||p.error("retention value cannot be less than 0"),new Error("Retention value cannot be less than 0");if(l&&l>=63113904)throw r||p.error("retention value cannot be greater than 63113904 seconds (2 years)"),new Error("Retention value cannot be greater than 63113904 seconds (2 years)");let f,d,h=`icon_${(0,D2.randomUUID)()}`,m="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(c&&(0,Zi.existsSync)(c)?(f=(0,Zi.readFileSync)(c),d=Ki(c)||"image/png",r||p.warn(`Found app icon ${c}`)):(0,Zi.existsSync)(lr)?(f=(0,Zi.readFileSync)(lr),d=Ki(lr)||"image/png",r||p.warn(`Found app icon ${lr}`)):r||p.warn(`Cannot find app icon in any of the following locations: ${c}, ${lr}`),f&&d){let{error:D}=await o.storage.from(`images/org/${a}/${t}`).upload(h,f,{contentType:d});if(D)throw r||p.error(`Could not set app ${U(D)}`),new Error(`Could not set app: ${U(D)}`);let{data:C}=await o.storage.from(`images/org/${a}/${t}`).getPublicUrl(h);m=C?.publicUrl||m}let{error:b}=await o.from("apps").update({icon_url:m,name:u,retention:l?l*24*60*60:void 0}).eq("app_id",t).eq("user_id",s);if(b)throw r||p.error(`Could not set app ${U(b)}`),new Error(`Could not set app: ${U(b)}`);return r||J("Done \u2705"),!0}async function b2(t,e,r=!1){if(r||Z("Set a specific setting in capacitor config"),e.bool&&e.string)throw r||p.error("Bool and string CANNOT be set at the same time"),new Error("Bool and string cannot both be provided");if(!e.bool&&!e.string)throw r||p.error("You MUST provide either bool or string as the value"),new Error("Either bool or string value is required");if(e.bool&&e.bool!=="true"&&e.bool!=="false")throw r||p.error("Invalid bool"),new Error("Invalid bool value; expected true or false");try{let n=await te(),o=n.config,i=t.split(".");if(i.length===0)throw r||p.error("Invalid path"),new Error("Invalid config path");for(let s of i.slice(0,-1))Object.prototype.hasOwnProperty.call(o,s)||(o[s]={}),o=o[s];let a=e.bool?e.bool==="true":e.string;o[i.at(-1)]=a,await Ui(n,!0),r||p.success(`Set "${t}" to "${a}"`)}catch(n){throw r||p.error(`Cannot set config in capacitor settings ${U(n)}`),new Error(`Cannot set capacitor config: ${U(n)}`)}r||J("Done \u2705")}async function v2(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||p.error(`Cannot check Version ${e}@${r.name}: ${U(s)}`),new Error(`Cannot check version ${e}@${r.name}: ${U(s)}`);if(!a?.length)return;if(o)throw new Error(`Version ${e}@${r.name} is used in ${a.length} channel(s)`);Z(`\u274C Version ${e}@${r.name} is used in ${a.length} channel${a.length>1?"s":""}`);let u=i;if(i||(u=await ye({message:"unlink it?"})===!0),!u)throw p.error("Unlink it first"),new Error(`Version ${e}@${r.name} is still linked to channel(s)`);for(let c of a){let l=we();l.start(`Unlinking channel ${c.name}`);let f=await pg(t,e,{silent:o});if(!f)throw l.stop(`Cannot find unknown version for ${e}`),new Error(`Cannot find unknown version for ${e}`);let{error:d}=await t.from("channels").update({version:f.id}).eq("id",c.id);if(d)throw l.stop(`Cannot update channel ${c.name} ${U(d)}`),new Error(`Cannot update channel ${c.name}: ${U(d)}`);l.stop(`\u2705 Channel ${c.name} unlinked`)}J(`Version unlinked from ${a.length} channel${a.length>1?"s":""}`)}async function pg(t,e,r={}){let{silent:n=!1}=r,{data:o,error:i}=await t.from("app_versions").select("id").eq("app_id",e).eq("name","unknown").single();if(i)throw n||p.error(`Cannot call findUnknownVersion as it returned an error.
|
|
169
169
|
${U(i)}`),new Error(`Cannot retrieve unknown version for app ${e}: ${U(i)}`);return o}function w2(t,e){return t.from("channels").insert(e).select().single()}function C2(t,e,r,n){return t.from("channels").delete().eq("name",e).eq("app_id",r).single()}function E2(t,e,r){return t.from("channels").select().eq("app_id",e).eq("name",r).single()}function _2(t,e,r){return t.from("channel_devices").delete().eq("app_id",e).eq("channel_id",r)}function x2(t,e,r){return t.from("channels").select(`
|
|
170
170
|
id,
|
|
171
171
|
version (id, name)
|
|
@@ -202,7 +202,7 @@ Trial expires in ${n} days`),p.warn(`Upgrade here: ${r.hostWeb}/dashboard/settin
|
|
|
202
202
|
The bundle size is ${S} Mb, this may take a while to download for users
|
|
203
203
|
`),p.info(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
|
|
204
204
|
`),e.verbose&&(p.info("[Verbose] Bundle size details:"),p.info(` - Actual size: ${S} MB (${l?.byteLength} bytes)`),p.info(` - Alert threshold: ${Math.floor(a/1024/1024)} MB`),p.info(` - Maximum allowed: ${T} MB`),p.info("[Verbose] Sending 'App Too Large' event to analytics...")),await be(r,{channel:"app-error",event:"App Too Large",icon:"\u{1F69B}",user_id:n,tags:{"app-id":o},notify:!1},e.verbose),e.verbose&&p.info("[Verbose] Event sent successfully")):e.verbose&&p.info(`[Verbose] Bundle size OK: ${S} MB (under ${Math.floor(a/1024/1024)} MB alert threshold)`),e.verbose&&p.info("[Verbose] Bundle preparation complete, returning bundle data"),{zipped:l,ivSessionKey:s,sessionKey:u,checksum:c,encryptionMethod:f,finalKeyData:d}}async function qM(t,e,r,n,o,i,a,s){let u=we();u.start("Uploading Bundle");let c=performance.now(),l=!1;if(a.verbose&&(p.info("[Verbose] uploadBundleToCapgoCloud called:"),p.info(` - Bundle size: ${Math.floor(i.byteLength/1024)} KB`),p.info(` - App ID: ${r}`),p.info(` - Bundle version: ${n}`),p.info(` - Chunk size: ${Math.floor(s/1024/1024)} MB`)),a.dryUpload){u.stop(`Dry run, bundle not uploaded
|
|
205
|
-
Bundle uploaded \u{1F4AA} in 0 seconds`),a.verbose&&p.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let h=await ir();if(a.verbose&&p.info("[Verbose] Local config retrieved for upload"),a.multipart!==void 0&&a.multipart||a.tus!==void 0&&a.tus){a.multipart?p.info("Uploading bundle with multipart is deprecated, we upload with TUS instead"):p.info("Uploading bundle with TUS protocol"),a.verbose&&(p.info("[Verbose] Starting TUS resumable upload..."),p.info(` - Host: ${h.hostWeb}`),p.info(` - Chunk size: ${Math.floor(s/1024/1024)} MB`)),await i2(t,i,o,r,n,u,h,s),l=!0,a.verbose&&p.info("[Verbose] TUS upload completed, updating database with R2 path...");let m=`orgs/${o}/apps/${r}/${n}.zip`,{error:b}=await e.from("app_versions").update({r2_path:m}).eq("name",n).eq("app_id",r);if(b)return p.error(`Cannot finish TUS upload ${U(b)}`),a.verbose&&p.info(`[Verbose] Database update failed: ${U(b)}`),Promise.reject(new Error("Cannot finish TUS upload"));a.verbose&&p.info(`[Verbose] Database updated with R2 path: ${m}`)}else{a.verbose&&p.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let m=await r2(e,r,n);if(!m)return p.error("Cannot get upload url"),a.verbose&&p.info("[Verbose] Failed to retrieve presigned upload URL from database"),Promise.reject(new Error("Cannot get upload url"));a.verbose&&(p.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),p.info(` - Timeout: ${a.timeout||ng}ms`),p.info(" - Retry attempts: 5"),p.info(" - Content-Type: application/zip"));let b=new AbortController,D=setTimeout(()=>b.abort(),a.timeout||ng);try{let C=await fetch(m,{method:"PUT",body:i,headers:{"Content-Type":"application/zip"},signal:b.signal});if(!C.ok)throw new Error(`HTTP error! status: ${C.status}`)}finally{clearTimeout(D)}a.verbose&&p.info("[Verbose] HTTP PUT upload completed successfully")}}catch(h){let b=((performance.now()-c)/1e3).toFixed(2);if(u.stop(`Failed to upload bundle ( after ${b} seconds)`),a.verbose&&(p.info(`[Verbose] Upload failed after ${b} seconds`),p.info(`[Verbose] Error type: ${h instanceof Error?"Error":typeof h}`)),h instanceof Error&&h.message.includes("HTTP error"))try{let D=h.message.match(/status: (\d+)/),C=D?D[1]:"unknown";p.error(`Upload failed with status ${C}: ${h.message}`)}catch{p.error(`Upload failed: ${h.message}`)}else a.verbose&&p.info(`[Verbose] Non-HTTP error: ${U(h)}`),a.tus?p.error(`Cannot upload bundle please contact support if the issue persists ${U(h)}`):p.error(`Cannot upload bundle ( try again with --tus option) ${U(h)}`);throw a.verbose&&p.info("[Verbose] Cleaning up failed version from database..."),await a2(e,r,n),a.verbose&&p.info("[Verbose] Failed version cleaned up"),h instanceof Error?h:new Error(String(h))}let d=((performance.now()-c)/1e3).toFixed(2);u.stop(`Bundle uploaded \u{1F4AA} in (${d} seconds)`),a.verbose&&(p.info("[Verbose] Upload successful:"),p.info(` - Upload time: ${d} seconds`),p.info(` - Upload method: ${l?"TUS (resumable)":"Standard HTTP PUT"}`),p.info(` - Bundle size: ${Math.floor(i.byteLength/1024)} KB`),p.info("[Verbose] Sending performance event...")),await be(t,{channel:"performance",event:l?"TUS upload zip performance":"Upload zip performance",icon:"\u{1F684}",user_id:o,tags:{"app-id":r,time:d},notify:!1},a.verbose),a.verbose&&p.info("[Verbose] Performance event sent successfully")}async function HM(t,e,r){let{data:n,error:o}=await t.from("channels").select("version ( id, name, deleted )").eq("app_id",e).eq("name",r);if(o){p.error(`Cannot delete linked bundle on upload ${U(o)}`);return}if(n.length===0){p.warn("No linked bundle found in the channel you are trying to upload to");return}let i=n[0].version;if(i.deleted){p.warn("The linked bundle is already deleted");return}let{error:a}=await t.from("app_versions").update({deleted:!0}).eq("id",i.id);if(a){p.error(`Cannot delete linked bundle on upload ${U(a)}`);return}p.info("Linked bundle deleted")}async function VM(t,e,r,n,o,i,a,s,u,c){let{data:l}=await t.rpc("get_app_versions",{apikey:e,name_version:n,appid:s}).single();l||me("Cannot get version id, cannot set channel");let{data:f}=await t.rpc("is_allowed_capgkey",{apikey:e,keymode:["write","all"]}).single();if(f){let{error:d,data:h}=await Sl(t,{name:o,app_id:s,created_by:i,version:l,owner_org:a,...c?{allow_device_self_set:!0}:{}});d&&me(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${U(d)}`);let m=`${u.hostWeb}/app/p/${s}/channel/${h.id}`;h?.public?p.info("Your update is now available in your public channel \u{1F389}"):h?.id&&p.info(`Link device to this bundle to try it: ${m}`),r&&p.info(`Bundle url: ${m}`)}else p.warn("The upload key is not allowed to set the version in the channel")}async function zM(t,e,r){let{error:n,data:o}=await e.from("apps").select("default_upload_channel").eq("app_id",t).single();return n?(p.warn("Cannot find default upload channel"),p.info(`You can set it here: ${r}/app/p/${t}/settings`),null):o.default_upload_channel}async function Ug(t,e,r=!0){r&&Z(`Uploading with CLI version ${mr.version}`);let n,o=Qe();await de();let{s3Region:i,s3Apikey:a,s3Apisecret:s,s3BucketName:u,s3Endpoint:c,s3Port:l,s3SSL:f}=e;e.verbose&&(p.info("[Verbose] Starting upload process with options:"),p.info(` - API key: ${e.apikey?"provided":"from saved key"}`),p.info(` - Path: ${e.path||"from capacitor config"}`),p.info(` - Channel: ${e.channel||"from default upload channel"}`),p.info(` - Bundle: ${e.bundle||"auto-detected"}`),p.info(` - External: ${e.external||"false"}`),p.info(` - Encryption: ${e.keyV2||e.keyDataV2?"v2":e.key===!1?"disabled":"auto"}`),p.info(` - Upload method: ${e.tus?"TUS":e.zip?"ZIP":"auto"}`),p.info(` - Delta updates: ${e.delta||e.partial?"enabled":"disabled"}`));let d=IM(e);e.verbose&&p.info("[Verbose] API key retrieved successfully");let h=await te();e.verbose&&p.info("[Verbose] Capacitor config loaded successfully");let m=await W1();e.verbose&&(p.info("[Verbose] Remote file config retrieved:"),p.info(` - Max upload length: ${Math.floor(m.maxUploadLength/1024/1024)} MB`),p.info(` - Alert upload size: ${Math.floor(m.alertUploadSize/1024/1024)} MB`),p.info(` - TUS upload: ${m.TUSUpload?"enabled":"disabled"}`),p.info(` - TUS upload forced: ${m.TUSUploadForced?"yes":"no"}`),p.info(` - Partial upload: ${m.partialUpload?"enabled":"disabled"}`),p.info(` - Max chunk size: ${Math.floor(m.maxChunkSize/1024/1024)} MB`));let{appid:b,path:D}=BM(t,e,h.config);e.verbose&&p.info(`[Verbose] App ID: ${b}, Build path: ${D}`);let C=await RM(h.config,e);e.verbose&&p.info(`[Verbose] Bundle version: ${C}`);let E=e.external?"external":"r2-direct",g="none";e.autoSetBundle&&(await bs({version:C}),e.verbose&&p.info("[Verbose] Auto-set bundle version in capacitor.config.json")),jM(e,D),e.verbose&&p.info("[Verbose] Code check passed (notifyAppReady found and index.html present)"),p.info(`Upload ${b}@${C} started from path "${D}" to Capgo cloud`);let _=await ir();e.verbose&&p.info(`[Verbose] Local config loaded: host=${_.hostWeb}`),e.supaHost&&e.supaAnon&&(p.info("Using custom supabase instance from provided options"),_.supaHost=e.supaHost,_.supaKey=e.supaAnon,e.verbose&&p.info(`[Verbose] Custom Supabase host: ${e.supaHost}`));let S=await ne(d,e.supaHost,e.supaAnon);e.verbose&&p.info("[Verbose] Supabase client created successfully");let T=await oe(S,d,["write","all","upload"]);e.verbose&&p.info(`[Verbose] User verified successfully, user_id: ${T}`);let O=e.channel||await zM(b,S,_.hostWeb)||"dev";e.verbose&&p.info(`[Verbose] Target channel: ${O}`);let B=await ar(S,b);e.verbose&&p.info(`[Verbose] Organization ID: ${B}`),await X1(S,B,mr.version),e.verbose&&p.info("[Verbose] Remote CLI messages checked"),await Q1(S,B,d,b,!0),e.verbose&&p.info("[Verbose] Plan validation passed"),await LM(S,B,_),e.verbose&&p.info("[Verbose] Trial check completed"),e.verbose&&p.info(`[Verbose] Checking compatibility with channel ${O}...`);let{nativePackages:I,minUpdateVersion:N}=await NM(S,o,e,O,b,C);e.verbose&&(p.info("[Verbose] Compatibility check completed:"),p.info(` - Native packages: ${I?I.length:0}`),p.info(` - Min update version: ${N||"none"}`)),e.verbose&&p.info(`[Verbose] Checking if version ${C} already exists...`);let A=await UM(S,b,C,e.versionExistsOk);if(e.verbose&&p.info(`[Verbose] Version exists check: ${A?"yes (skipping)":"no (continuing)"}`),A)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:C,checksum:null,encryptionMethod:g,storageProvider:E};e.external&&!e.external.startsWith("https://")&&me(`External link should should start with "https://" current is "${e.external}"`),e.deleteLinkedBundleOnUpload&&(p.warn("Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the channel you are trying to upload to."),p.warn("Please make sure you want to do this, if you are not sure, please do not use this option."));let L={name:C,app_id:b,session_key:void 0,external_url:e.external,storage_provider:E,min_update_version:N,native_packages:I,owner_org:B,user_id:T,checksum:void 0,link:e.link||null,comment:e.comment||null},M=null,Q="";if(e.external)e.verbose&&p.info(`[Verbose] Using external URL: ${e.external}`),await be(d,{channel:"app",event:"App external",icon:"\u{1F4E4}",user_id:B,tags:{"app-id":b},notify:!1},e.verbose),L.session_key=e.ivSessionKey,L.checksum=e.encryptedChecksum,e.verbose&&(p.info("[Verbose] External bundle configured:"),p.info(` - URL: ${e.external}`),p.info(` - IV Session Key: ${e.ivSessionKey?"provided":"none"}`),p.info(` - Encrypted Checksum: ${e.encryptedChecksum?"provided":"none"}`));else{e.verbose&&p.info(`[Verbose] Preparing bundle file from path: ${D}`);let{zipped:F,ivSessionKey:R,checksum:k,sessionKey:q,encryptionMethod:P,finalKeyData:j}=await MM(D,e,d,B,b,m.maxUploadLength,m.alertUploadSize);L.session_key=R,L.checksum=k,n=q,M=F,g=P,Q=j,e.verbose&&(p.info("[Verbose] Bundle prepared:"),p.info(` - Size: ${Math.floor((F?.byteLength??0)/1024)} KB`),p.info(` - Checksum: ${k}`),p.info(` - Encryption: ${P}`),p.info(` - IV Session Key: ${R?"present":"none"}`)),e.ignoreChecksumCheck||(e.verbose&&p.info("[Verbose] Checking for duplicate checksum..."),await c2(S,b,O,k),e.verbose&&p.info("[Verbose] Checksum is unique"))}if(e.zip?(e.tus=!1,e.verbose&&p.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")):!m.TUSUpload||e.external?(e.tus=!1,e.verbose&&p.info("[Verbose] Upload method: Standard (TUS not available or external URL)")):(e.tus=e.tus||m.TUSUploadForced,e.verbose&&p.info(`[Verbose] Upload method: ${e.tus?"TUS (resumable)":"Standard"}`)),!m.partialUpload||e.external?(e.delta=!1,e.verbose&&e.external&&p.info("[Verbose] Delta updates disabled (not available with external URLs)")):(e.delta=e.delta||e.partial||e.deltaOnly||e.partialOnly||m.partialUploadForced,e.verbose&&p.info(`[Verbose] Delta updates: ${e.delta?"enabled":"disabled"}`)),e.encryptPartial&&g==="v1"&&me("You cannot encrypt the partial update if you are not using the v2 encryption method"),e.delta&&g==="v2"&&!e.encryptPartial){let F=(0,Ng.join)(vt((0,Lg.cwd)()),bt),k=(await ft(void 0,e.packageJson||F)).get("@capgo/capacitor-updater"),q;try{q=k?_e(k):void 0}catch{q=void 0}k&&q&&dn(q,_e("6.14.4"))&&(p.info(`Auto-enabling partial update encryption for updater version ${q} (> 6.14.4)`),e.verbose&&p.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4"),e.encryptPartial=!0)}e.verbose&&e.delta&&p.info("[Verbose] Preparing delta/partial update manifest...");let $=e.delta?await lF(D,d,B,b,e.encryptPartial?g:"none",Q):[];e.verbose&&e.delta&&p.info(`[Verbose] Delta manifest prepared with ${$.length} files`),e.verbose&&p.info("[Verbose] Creating version record in database...");let{error:y}=await ug(S,L);if(y&&me(`Cannot add bundle ${U(y)}`),e.verbose&&p.info("[Verbose] Version record created successfully"),e.tusChunkSize&&e.tusChunkSize>m.maxChunkSize?(p.error(`Chunk size ${e.tusChunkSize} is greater than the maximum chunk size ${m.maxChunkSize}, using the maximum chunk size`),e.tusChunkSize=m.maxChunkSize):e.tusChunkSize||(e.tusChunkSize=m.maxChunkSize),e.verbose&&p.info(`[Verbose] TUS chunk size: ${Math.floor(e.tusChunkSize/1024/1024)} MB`),M&&(u||c||i||a||s||l||f)){(!u||!c||!i||!a||!s||!l)&&me("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret"),p.info("Uploading to S3"),e.verbose&&(p.info("[Verbose] S3 configuration:"),p.info(` - Endpoint: ${c}`),p.info(` - Region: ${i}`),p.info(` - Bucket: ${u}`),p.info(` - Port: ${l}`),p.info(` - SSL: ${f?"enabled":"disabled"}`));let F=f?`https://${c}`:`http://${c}`,R=new xs({endPoint:c,region:i,port:l,pathStyle:!0,bucket:u,accessKey:a,secretKey:s}),k=`${b}-${C}`,q=encodeURIComponent(k);e.verbose&&p.info(`[Verbose] Uploading to S3 as: ${k}`),await R.putObject(k,Uint8Array.from(M)),L.external_url=`${F}/${q}`,L.storage_provider="external",e.verbose&&p.info(`[Verbose] S3 upload complete, external URL: ${L.external_url}`)}else if(M){!e.partialOnly&&!e.deltaOnly?(e.verbose&&p.info("[Verbose] Starting full bundle upload to Capgo Cloud..."),await qM(d,S,b,C,B,M,e,e.tusChunkSize)):e.verbose&&p.info("[Verbose] Skipping full bundle upload (delta-only mode)");let F=null;try{e.dryUpload&&(e.delta=!1,e.verbose&&p.info("[Verbose] Dry upload mode: skipping delta upload"));let k=L.session_key&&e.encryptPartial&&n?{sessionKey:n,ivSessionKey:L.session_key}:void 0;e.verbose&&e.delta&&(p.info("[Verbose] Starting delta/partial file upload..."),p.info(` - Manifest entries: ${$.length}`),p.info(` - Encryption: ${k?"enabled":"disabled"}`)),F=e.delta?await fF(d,$,D,b,C,B,k,e):null,e.verbose&&F&&p.info(`[Verbose] Delta upload complete with ${F.length} files`)}catch(k){p.info(`Failed to upload partial files to capgo cloud. Error: ${U(k)}. This is not a critical error, the bundle has been uploaded without the partial files`),e.verbose&&p.info(`[Verbose] Delta upload error details: ${U(k)}`)}L.storage_provider="r2",L.manifest=F,e.verbose&&p.info("[Verbose] Updating version record with storage provider and manifest...");let{error:R}=await ug(S,L);R&&me(`Cannot update bundle ${U(R)}`),e.verbose&&p.info("[Verbose] Version record updated successfully")}e.verbose&&p.info("[Verbose] Checking app permissions...");let v=await Ne(S,d,b,2);e.verbose&&(p.info("[Verbose] Permissions:"),p.info(` - Upload: ${Wi(v,2)?"yes":"no"}`),p.info(` - Write: ${Wi(v,3)?"yes":"no"}`),p.info(` - Admin: ${Wi(v,4)?"yes":"no"}`)),e.deleteLinkedBundleOnUpload&&Wi(v,3)?(e.verbose&&p.info(`[Verbose] Deleting linked bundle in channel ${O}...`),await HM(S,b,O)):e.deleteLinkedBundleOnUpload&&p.warn("Cannot delete linked bundle on upload as a upload organization member"),Wi(v,3)?(e.verbose&&p.info(`[Verbose] Setting bundle ${C} to channel ${O}...`),await VM(S,d,!!e.bundleUrl,C,O,T,B,b,_,e.selfAssign),e.verbose&&p.info("[Verbose] Channel updated successfully")):p.warn("Cannot set channel as a upload organization member"),e.verbose&&p.info("[Verbose] Sending upload event..."),await be(d,{channel:"app",event:"App Uploaded",icon:"\u23EB",user_id:B,tags:{"app-id":b},notify:!1},e.verbose);let w={success:!0,bundle:C,checksum:L.checksum??null,encryptionMethod:g,sessionKey:n?n.toString("base64"):void 0,ivSessionKey:typeof L.session_key=="string"?L.session_key:void 0,storageProvider:L.storage_provider};return e.verbose&&(p.info("[Verbose] Upload completed successfully:"),p.info(` - Bundle: ${w.bundle}`),p.info(` - Checksum: ${w.checksum}`),p.info(` - Encryption: ${w.encryptionMethod}`),p.info(` - Storage: ${w.storageProvider}`)),r&&!w.skipped&&J("Time to share your update to the world \u{1F30D}"),w}function GM(t){t.ivSessionKey&&!t.external&&me("You need to provide an external url if you want to use the --iv-session-key option"),t.encryptedChecksum&&!t.external&&me("You need to provide an external url if you want to use the --encrypted-checksum option"),(t.partial||t.delta||t.partialOnly||t.deltaOnly)&&t.external&&me("You cannot use the --partial/--delta/--partial-only/--delta-only option with an external url"),t.tus&&t.external&&me("You cannot use the --tus option with an external url"),t.dryUpload&&t.external&&me("You cannot use the --dry-upload option with an external url"),t.multipart&&t.external&&me("You cannot use the --multipart option with an external url"),t.external&&(t.keyV2||t.keyDataV2)&&me("You cannot set a key if you are uploading to an external url"),t.keyV2&&t.keyDataV2&&me("You cannot set both key-v2 and key-data-v2"),t.external&&(t.s3Region||t.s3Apikey||t.s3Apisecret||t.s3Endpoint||t.s3BucketName||t.s3Port||t.s3SSL)&&me("You cannot set S3 options if you are uploading to an external url, it's automatically handled"),t.encryptedChecksum&&!t.external&&me("You cannot set the --encrypted-checksum option if you are not uploading to an external url"),t.minUpdateVersion&&t.autoMinUpdateVersion&&me("You cannot set both min-update-version and auto-min-update-version, use only one of them")}async function dF(t,e){try{GM(e),await Ug(t,e,!0)}catch(r){throw p.error(`uploadBundle failded: ${U(r)}`),r instanceof Error?r:new Error(String(r))}}var hF=require("node:crypto"),Yl=require("node:fs"),mF=require("node:path"),gF=require("node:process");var WM=20;function KM(t){console.log(JSON.stringify(t,null,2))}function $s(t){console.error(U(t))}async function YM(t,e,r=!1){let{json:n}=e,{bundle:o,path:i}=e,a=!n&&!r;try{a&&await de();let s=await te(),u=he(t,s?.config),c=(0,hF.randomUUID)().split("-")[0],l=xr("",e.packageJson);if(o=o||l||`0.0.1-beta.${c}`,a&&Z(`Zipping ${u}@${o}`),o&&!Gi.test(o)){let O=`Your bundle name ${o}, is not valid it should follow semver convention : https://semver.org/`;throw r||(n?$s({error:"invalid_semver"}):p.error(O)),new Error("Invalid bundle version format")}if(i=i||s?.config?.webDir,!u||!o||!i){let O="Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project";throw r||(n?$s({error:"missing_argument"}):p.error(O)),new Error(O)}if(a&&p.info(`Started from path "${i}"`),typeof e.codeCheck>"u"?!0:e.codeCheck){if(!Ss(i,"notifyAppReady"))throw r||(n?$s({error:"notifyAppReady_not_in_source_code"}):p.error("notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready")),new Error("notifyAppReady() is missing in build folder");if(!Ul(i))throw r||(n?$s({error:"index_html_not_found"}):p.error(`index.html is missing in the root folder of ${i}`)),new Error("index.html is missing in root folder")}let d=await xl(i);a&&p.info(`Zipped ${d.byteLength} bytes`);let h=a?we():null;h&&h.start("Calculating checksum");let m=(0,mF.join)(vt((0,gF.cwd)()),bt),D=(await ft(void 0,e.packageJson||m)).get("@capgo/capacitor-updater");if(!D){let O="Cannot find @capgo/capacitor-updater in ./package.json, provide the package.json path with --package-json it's required for v7 CLI to work";throw r||p.warn(O),new Error(O)}let C=!1,E;try{E=D?_e(D):void 0}catch{E=void 0}if(E){let O=E.major===6&&dn(E,_e("6.25.0")),B=E.major>=7;C=O||B}else D==="link:@capgo/capacitor-updater"&&(r||p.warn("Using local @capgo/capacitor-updater. Assuming v7"),C=!0);let g=await Xr(d,e.keyV2||(0,Yl.existsSync)(Wt)||C?"sha256":"crc32");h&&h.stop(`Checksum ${C?"SHA256":"CRC32"}: ${g}`);let _=Math.floor(d.byteLength/1024/1024);_>WM&&a&&(p.warn(`WARNING !!
|
|
205
|
+
Bundle uploaded \u{1F4AA} in 0 seconds`),a.verbose&&p.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let h=await ir();if(a.verbose&&p.info("[Verbose] Local config retrieved for upload"),a.multipart!==void 0&&a.multipart||a.tus!==void 0&&a.tus){a.multipart?p.info("Uploading bundle with multipart is deprecated, we upload with TUS instead"):p.info("Uploading bundle with TUS protocol"),a.verbose&&(p.info("[Verbose] Starting TUS resumable upload..."),p.info(` - Host: ${h.hostWeb}`),p.info(` - Chunk size: ${Math.floor(s/1024/1024)} MB`)),await i2(t,i,o,r,n,u,h,s),l=!0,a.verbose&&p.info("[Verbose] TUS upload completed, updating database with R2 path...");let m=`orgs/${o}/apps/${r}/${n}.zip`,{error:b}=await e.from("app_versions").update({r2_path:m}).eq("name",n).eq("app_id",r);if(b)return p.error(`Cannot finish TUS upload ${U(b)}`),a.verbose&&p.info(`[Verbose] Database update failed: ${U(b)}`),Promise.reject(new Error("Cannot finish TUS upload"));a.verbose&&p.info(`[Verbose] Database updated with R2 path: ${m}`)}else{a.verbose&&p.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let m=await r2(e,r,n);if(!m)return p.error("Cannot get upload url"),a.verbose&&p.info("[Verbose] Failed to retrieve presigned upload URL from database"),Promise.reject(new Error("Cannot get upload url"));a.verbose&&(p.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),p.info(` - Timeout: ${a.timeout||ng}ms`),p.info(" - Retry attempts: 5"),p.info(" - Content-Type: application/zip"));let b=new AbortController,D=setTimeout(()=>b.abort(),a.timeout||ng);try{let C=await fetch(m,{method:"PUT",body:i,headers:{"Content-Type":"application/zip"},signal:b.signal});if(!C.ok)throw new Error(`HTTP error! status: ${C.status}`)}finally{clearTimeout(D)}a.verbose&&p.info("[Verbose] HTTP PUT upload completed successfully")}}catch(h){let b=((performance.now()-c)/1e3).toFixed(2);if(u.stop(`Failed to upload bundle ( after ${b} seconds)`),a.verbose&&(p.info(`[Verbose] Upload failed after ${b} seconds`),p.info(`[Verbose] Error type: ${h instanceof Error?"Error":typeof h}`)),h instanceof Error&&h.message.includes("HTTP error"))try{let D=h.message.match(/status: (\d+)/),C=D?D[1]:"unknown";p.error(`Upload failed with status ${C}: ${h.message}`)}catch{p.error(`Upload failed: ${h.message}`)}else a.verbose&&p.info(`[Verbose] Non-HTTP error: ${U(h)}`),a.tus?p.error(`Cannot upload bundle please contact support if the issue persists ${U(h)}`):p.error(`Cannot upload bundle ( try again with --tus option) ${U(h)}`);throw a.verbose&&p.info("[Verbose] Cleaning up failed version from database..."),await a2(e,r,n),a.verbose&&p.info("[Verbose] Failed version cleaned up"),h instanceof Error?h:new Error(String(h))}let d=((performance.now()-c)/1e3).toFixed(2);u.stop(`Bundle uploaded \u{1F4AA} in (${d} seconds)`),a.verbose&&(p.info("[Verbose] Upload successful:"),p.info(` - Upload time: ${d} seconds`),p.info(` - Upload method: ${l?"TUS (resumable)":"Standard HTTP PUT"}`),p.info(` - Bundle size: ${Math.floor(i.byteLength/1024)} KB`),p.info("[Verbose] Sending performance event...")),await be(t,{channel:"performance",event:l?"TUS upload zip performance":"Upload zip performance",icon:"\u{1F684}",user_id:o,tags:{"app-id":r,time:d},notify:!1},a.verbose),a.verbose&&p.info("[Verbose] Performance event sent successfully")}async function HM(t,e,r){let{data:n,error:o}=await t.from("channels").select("version ( id, name, deleted )").eq("app_id",e).eq("name",r);if(o){p.error(`Cannot delete linked bundle on upload ${U(o)}`);return}if(n.length===0){p.warn("No linked bundle found in the channel you are trying to upload to");return}let i=n[0].version;if(i.deleted){p.warn("The linked bundle is already deleted");return}let{error:a}=await t.from("app_versions").update({deleted:!0}).eq("id",i.id);if(a){p.error(`Cannot delete linked bundle on upload ${U(a)}`);return}p.info("Linked bundle deleted")}async function VM(t,e,r,n,o,i,a,s,u,c){let{data:l}=await t.rpc("get_app_versions",{apikey:e,name_version:n,appid:s}).single();l||me("Cannot get version id, cannot set channel");let{data:f}=await t.rpc("is_allowed_capgkey",{apikey:e,keymode:["write","all"]}).single();if(f){let{error:d,data:h}=await Sl(t,{name:o,app_id:s,created_by:i,version:l,owner_org:a,...c?{allow_device_self_set:!0}:{}});d&&me(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${U(d)}`);let m=`${u.hostWeb}/app/p/${s}/channel/${h.id}`;h?.public?p.info("Your update is now available in your public channel \u{1F389}"):h?.id&&p.info(`Link device to this bundle to try it: ${m}`),r&&p.info(`Bundle url: ${m}`)}else p.warn("The upload key is not allowed to set the version in the channel")}async function zM(t,e,r){let{error:n,data:o}=await e.from("apps").select("default_upload_channel").eq("app_id",t).single();return n?(p.warn("Cannot find default upload channel"),p.info(`You can set it here: ${r}/app/p/${t}/settings`),null):o.default_upload_channel}async function Ug(t,e,r=!0){r&&Z(`Uploading with CLI version ${mr.version}`);let n,o=Qe();await de();let{s3Region:i,s3Apikey:a,s3Apisecret:s,s3BucketName:u,s3Endpoint:c,s3Port:l,s3SSL:f}=e;e.verbose&&(p.info("[Verbose] Starting upload process with options:"),p.info(` - API key: ${e.apikey?"provided":"from saved key"}`),p.info(` - Path: ${e.path||"from capacitor config"}`),p.info(` - Channel: ${e.channel||"from default upload channel"}`),p.info(` - Bundle: ${e.bundle||"auto-detected"}`),p.info(` - External: ${e.external||"false"}`),p.info(` - Encryption: ${e.keyV2||e.keyDataV2?"v2":e.key===!1?"disabled":"auto"}`),p.info(` - Upload method: ${e.tus?"TUS":e.zip?"ZIP":"auto"}`),p.info(` - Delta updates: ${e.delta||e.partial?"enabled":"disabled"}`));let d=IM(e);e.verbose&&p.info("[Verbose] API key retrieved successfully");let h=await te();e.verbose&&p.info("[Verbose] Capacitor config loaded successfully");let m=await W1();e.verbose&&(p.info("[Verbose] Remote file config retrieved:"),p.info(` - Max upload length: ${Math.floor(m.maxUploadLength/1024/1024)} MB`),p.info(` - Alert upload size: ${Math.floor(m.alertUploadSize/1024/1024)} MB`),p.info(` - TUS upload: ${m.TUSUpload?"enabled":"disabled"}`),p.info(` - TUS upload forced: ${m.TUSUploadForced?"yes":"no"}`),p.info(` - Partial upload: ${m.partialUpload?"enabled":"disabled"}`),p.info(` - Max chunk size: ${Math.floor(m.maxChunkSize/1024/1024)} MB`));let{appid:b,path:D}=BM(t,e,h.config);e.verbose&&p.info(`[Verbose] App ID: ${b}, Build path: ${D}`);let C=await RM(h.config,e);e.verbose&&p.info(`[Verbose] Bundle version: ${C}`);let E=e.external?"external":"r2-direct",g="none";e.autoSetBundle&&(await bs({version:C}),e.verbose&&p.info("[Verbose] Auto-set bundle version in capacitor.config.json")),jM(e,D),e.verbose&&p.info("[Verbose] Code check passed (notifyAppReady found and index.html present)"),p.info(`Upload ${b}@${C} started from path "${D}" to Capgo cloud`);let _=await ir();e.verbose&&p.info(`[Verbose] Local config loaded: host=${_.hostWeb}`),e.supaHost&&e.supaAnon&&(p.info("Using custom supabase instance from provided options"),_.supaHost=e.supaHost,_.supaKey=e.supaAnon,e.verbose&&p.info(`[Verbose] Custom Supabase host: ${e.supaHost}`));let S=await ne(d,e.supaHost,e.supaAnon);e.verbose&&p.info("[Verbose] Supabase client created successfully");let T=await oe(S,d,["write","all","upload"]);e.verbose&&p.info(`[Verbose] User verified successfully, user_id: ${T}`);let O=e.channel||await zM(b,S,_.hostWeb)||"dev";e.verbose&&p.info(`[Verbose] Target channel: ${O}`);let B=await ar(S,b);e.verbose&&p.info(`[Verbose] Organization ID: ${B}`),await X1(S,B,mr.version),e.verbose&&p.info("[Verbose] Remote CLI messages checked"),await Q1(S,B,d,b,!0),e.verbose&&p.info("[Verbose] Plan validation passed"),await LM(S,B,_),e.verbose&&p.info("[Verbose] Trial check completed"),e.verbose&&p.info(`[Verbose] Checking compatibility with channel ${O}...`);let{nativePackages:I,minUpdateVersion:N}=await NM(S,o,e,O,b,C);e.verbose&&(p.info("[Verbose] Compatibility check completed:"),p.info(` - Native packages: ${I?I.length:0}`),p.info(` - Min update version: ${N||"none"}`)),e.verbose&&p.info(`[Verbose] Checking if version ${C} already exists...`);let A=await UM(S,b,C,e.versionExistsOk);if(e.verbose&&p.info(`[Verbose] Version exists check: ${A?"yes (skipping)":"no (continuing)"}`),A)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:C,checksum:null,encryptionMethod:g,storageProvider:E};e.external&&!e.external.startsWith("https://")&&me(`External link should should start with "https://" current is "${e.external}"`),e.deleteLinkedBundleOnUpload&&(p.warn("Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the channel you are trying to upload to."),p.warn("Please make sure you want to do this, if you are not sure, please do not use this option."));let L={name:C,app_id:b,session_key:void 0,external_url:e.external,storage_provider:E,min_update_version:N,native_packages:I,owner_org:B,user_id:T,checksum:void 0,link:e.link||null,comment:e.comment||null},M=null,Q="";if(e.external)e.verbose&&p.info(`[Verbose] Using external URL: ${e.external}`),await be(d,{channel:"app",event:"App external",icon:"\u{1F4E4}",user_id:B,tags:{"app-id":b},notify:!1},e.verbose),L.session_key=e.ivSessionKey,L.checksum=e.encryptedChecksum,e.verbose&&(p.info("[Verbose] External bundle configured:"),p.info(` - URL: ${e.external}`),p.info(` - IV Session Key: ${e.ivSessionKey?"provided":"none"}`),p.info(` - Encrypted Checksum: ${e.encryptedChecksum?"provided":"none"}`));else{e.verbose&&p.info(`[Verbose] Preparing bundle file from path: ${D}`);let{zipped:F,ivSessionKey:R,checksum:k,sessionKey:q,encryptionMethod:P,finalKeyData:j}=await MM(D,e,d,B,b,m.maxUploadLength,m.alertUploadSize);L.session_key=R,L.checksum=k,n=q,M=F,g=P,Q=j,e.verbose&&(p.info("[Verbose] Bundle prepared:"),p.info(` - Size: ${Math.floor((F?.byteLength??0)/1024)} KB`),p.info(` - Checksum: ${k}`),p.info(` - Encryption: ${P}`),p.info(` - IV Session Key: ${R?"present":"none"}`)),e.ignoreChecksumCheck||(e.verbose&&p.info("[Verbose] Checking for duplicate checksum..."),await c2(S,b,O,k),e.verbose&&p.info("[Verbose] Checksum is unique"))}if(e.zip?(e.tus=!1,e.verbose&&p.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")):!m.TUSUpload||e.external?(e.tus=!1,e.verbose&&p.info("[Verbose] Upload method: Standard (TUS not available or external URL)")):(e.tus=e.tus||m.TUSUploadForced,e.verbose&&p.info(`[Verbose] Upload method: ${e.tus?"TUS (resumable)":"Standard"}`)),!m.partialUpload||e.external?(e.delta=!1,e.verbose&&e.external&&p.info("[Verbose] Delta updates disabled (not available with external URLs)")):(e.delta=e.delta||e.partial||e.deltaOnly||e.partialOnly||m.partialUploadForced,e.verbose&&p.info(`[Verbose] Delta updates: ${e.delta?"enabled":"disabled"}`)),e.encryptPartial&&g==="v1"&&me("You cannot encrypt the partial update if you are not using the v2 encryption method"),e.delta&&g==="v2"&&!e.encryptPartial){let F=(0,Ng.join)(vt((0,Lg.cwd)()),bt),k=(await ft(void 0,e.packageJson||F)).get("@capgo/capacitor-updater"),q;try{q=k?_e(k):void 0}catch{q=void 0}k&&q&&dn(q,_e("6.14.4"))&&(p.info(`Auto-enabling partial update encryption for updater version ${q} (> 6.14.4)`),e.verbose&&p.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4"),e.encryptPartial=!0)}e.verbose&&e.delta&&p.info("[Verbose] Preparing delta/partial update manifest...");let $=e.delta?await lF(D,d,B,b,e.encryptPartial?g:"none",Q):[];e.verbose&&e.delta&&p.info(`[Verbose] Delta manifest prepared with ${$.length} files`),e.verbose&&p.info("[Verbose] Creating version record in database...");let{error:y}=await ug(S,L);if(y&&me(`Cannot add bundle ${U(y)}`),e.verbose&&p.info("[Verbose] Version record created successfully"),e.tusChunkSize&&e.tusChunkSize>m.maxChunkSize?(p.error(`Chunk size ${e.tusChunkSize} is greater than the maximum chunk size ${m.maxChunkSize}, using the maximum chunk size`),e.tusChunkSize=m.maxChunkSize):e.tusChunkSize||(e.tusChunkSize=m.maxChunkSize),e.verbose&&p.info(`[Verbose] TUS chunk size: ${Math.floor(e.tusChunkSize/1024/1024)} MB`),M&&(u||c||i||a||s||l||f)){(!u||!c||!i||!a||!s||!l)&&me("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret"),p.info("Uploading to S3"),e.verbose&&(p.info("[Verbose] S3 configuration:"),p.info(` - Endpoint: ${c}`),p.info(` - Region: ${i}`),p.info(` - Bucket: ${u}`),p.info(` - Port: ${l}`),p.info(` - SSL: ${f?"enabled":"disabled"}`));let F=f?`https://${c}`:`http://${c}`,R=new xs({endPoint:c,region:i,port:l,pathStyle:!0,bucket:u,accessKey:a,secretKey:s}),k=`${b}-${C}`,q=encodeURIComponent(k);e.verbose&&p.info(`[Verbose] Uploading to S3 as: ${k}`),await R.putObject(k,Uint8Array.from(M)),L.external_url=`${F}/${q}`,L.storage_provider="external",e.verbose&&p.info(`[Verbose] S3 upload complete, external URL: ${L.external_url}`)}else if(M){!e.partialOnly&&!e.deltaOnly?(e.verbose&&p.info("[Verbose] Starting full bundle upload to Capgo Cloud..."),await qM(d,S,b,C,B,M,e,e.tusChunkSize)):e.verbose&&p.info("[Verbose] Skipping full bundle upload (delta-only mode)");let F=null;try{e.dryUpload&&(e.delta=!1,e.verbose&&p.info("[Verbose] Dry upload mode: skipping delta upload"));let k=L.session_key&&e.encryptPartial&&n?{sessionKey:n,ivSessionKey:L.session_key}:void 0;e.verbose&&e.delta&&(p.info("[Verbose] Starting delta/partial file upload..."),p.info(` - Manifest entries: ${$.length}`),p.info(` - Encryption: ${k?"enabled":"disabled"}`)),F=e.delta?await fF(d,$,D,b,C,B,k,e):null,e.verbose&&F&&p.info(`[Verbose] Delta upload complete with ${F.length} files`)}catch(k){p.info(`Failed to upload partial files to capgo cloud. Error: ${U(k)}. This is not a critical error, the bundle has been uploaded without the partial files`),e.verbose&&p.info(`[Verbose] Delta upload error details: ${U(k)}`)}L.storage_provider="r2",L.manifest=F,e.verbose&&p.info("[Verbose] Updating version record with storage provider and manifest...");let{error:R}=await ug(S,L);R&&me(`Cannot update bundle ${U(R)}`),e.verbose&&p.info("[Verbose] Version record updated successfully")}e.verbose&&p.info("[Verbose] Checking app permissions...");let v=await Ne(S,d,b,2);e.verbose&&(p.info("[Verbose] Permissions:"),p.info(` - Upload: ${Wi(v,2)?"yes":"no"}`),p.info(` - Write: ${Wi(v,3)?"yes":"no"}`),p.info(` - Admin: ${Wi(v,4)?"yes":"no"}`)),e.deleteLinkedBundleOnUpload&&Wi(v,3)?(e.verbose&&p.info(`[Verbose] Deleting linked bundle in channel ${O}...`),await HM(S,b,O)):e.deleteLinkedBundleOnUpload&&p.warn("Cannot delete linked bundle on upload as a upload organization member"),Wi(v,3)?(e.verbose&&p.info(`[Verbose] Setting bundle ${C} to channel ${O}...`),await VM(S,d,!!e.bundleUrl,C,O,T,B,b,_,e.selfAssign),e.verbose&&p.info("[Verbose] Channel updated successfully")):p.warn("Cannot set channel as a upload organization member"),e.verbose&&p.info("[Verbose] Sending upload event..."),await be(d,{channel:"app",event:"App Uploaded",icon:"\u23EB",user_id:B,tags:{"app-id":b},notify:!1},e.verbose);let w={success:!0,bundle:C,checksum:L.checksum??null,encryptionMethod:g,sessionKey:n?n.toString("base64"):void 0,ivSessionKey:typeof L.session_key=="string"?L.session_key:void 0,storageProvider:L.storage_provider};return e.verbose&&(p.info("[Verbose] Upload completed successfully:"),p.info(` - Bundle: ${w.bundle}`),p.info(` - Checksum: ${w.checksum}`),p.info(` - Encryption: ${w.encryptionMethod}`),p.info(` - Storage: ${w.storageProvider}`)),r&&!w.skipped&&J("Time to share your update to the world \u{1F30D}"),w}function GM(t){t.ivSessionKey&&!t.external&&me("You need to provide an external url if you want to use the --iv-session-key option"),t.encryptedChecksum&&!t.external&&me("You need to provide an external url if you want to use the --encrypted-checksum option"),(t.partial||t.delta||t.partialOnly||t.deltaOnly)&&t.external&&me("You cannot use the --partial/--delta/--partial-only/--delta-only option with an external url"),t.tus&&t.external&&me("You cannot use the --tus option with an external url"),t.dryUpload&&t.external&&me("You cannot use the --dry-upload option with an external url"),t.multipart&&t.external&&me("You cannot use the --multipart option with an external url"),t.external&&(t.keyV2||t.keyDataV2)&&me("You cannot set a key if you are uploading to an external url"),t.keyV2&&t.keyDataV2&&me("You cannot set both key-v2 and key-data-v2"),t.external&&(t.s3Region||t.s3Apikey||t.s3Apisecret||t.s3Endpoint||t.s3BucketName||t.s3Port||t.s3SSL)&&me("You cannot set S3 options if you are uploading to an external url, it's automatically handled"),t.encryptedChecksum&&!t.external&&me("You cannot set the --encrypted-checksum option if you are not uploading to an external url"),t.minUpdateVersion&&t.autoMinUpdateVersion&&me("You cannot set both min-update-version and auto-min-update-version, use only one of them")}async function dF(t,e){try{GM(e),await Ug(t,e,!0)}catch(r){throw p.error(`uploadBundle failed: ${U(r)}`),r instanceof Error?r:new Error(String(r))}}var hF=require("node:crypto"),Yl=require("node:fs"),mF=require("node:path"),gF=require("node:process");var WM=20;function KM(t){console.log(JSON.stringify(t,null,2))}function $s(t){console.error(U(t))}async function YM(t,e,r=!1){let{json:n}=e,{bundle:o,path:i}=e,a=!n&&!r;try{a&&await de();let s=await te(),u=he(t,s?.config),c=(0,hF.randomUUID)().split("-")[0],l=xr("",e.packageJson);if(o=o||l||`0.0.1-beta.${c}`,a&&Z(`Zipping ${u}@${o}`),o&&!Gi.test(o)){let O=`Your bundle name ${o}, is not valid it should follow semver convention : https://semver.org/`;throw r||(n?$s({error:"invalid_semver"}):p.error(O)),new Error("Invalid bundle version format")}if(i=i||s?.config?.webDir,!u||!o||!i){let O="Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project";throw r||(n?$s({error:"missing_argument"}):p.error(O)),new Error(O)}if(a&&p.info(`Started from path "${i}"`),typeof e.codeCheck>"u"?!0:e.codeCheck){if(!Ss(i,"notifyAppReady"))throw r||(n?$s({error:"notifyAppReady_not_in_source_code"}):p.error("notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready")),new Error("notifyAppReady() is missing in build folder");if(!Ul(i))throw r||(n?$s({error:"index_html_not_found"}):p.error(`index.html is missing in the root folder of ${i}`)),new Error("index.html is missing in root folder")}let d=await xl(i);a&&p.info(`Zipped ${d.byteLength} bytes`);let h=a?we():null;h&&h.start("Calculating checksum");let m=(0,mF.join)(vt((0,gF.cwd)()),bt),D=(await ft(void 0,e.packageJson||m)).get("@capgo/capacitor-updater");if(!D){let O="Cannot find @capgo/capacitor-updater in ./package.json, provide the package.json path with --package-json it's required for v7 CLI to work";throw r||p.warn(O),new Error(O)}let C=!1,E;try{E=D?_e(D):void 0}catch{E=void 0}if(E){let O=E.major===6&&dn(E,_e("6.25.0")),B=E.major>=7;C=O||B}else D==="link:@capgo/capacitor-updater"&&(r||p.warn("Using local @capgo/capacitor-updater. Assuming v7"),C=!0);let g=await Xr(d,e.keyV2||(0,Yl.existsSync)(Wt)||C?"sha256":"crc32");h&&h.stop(`Checksum ${C?"SHA256":"CRC32"}: ${g}`);let _=Math.floor(d.byteLength/1024/1024);_>WM&&a&&(p.warn(`WARNING !!
|
|
206
206
|
The bundle size is ${_} Mb, this may take a while to download for users
|
|
207
207
|
`),p.warn(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
|
|
208
208
|
`));let S=a?we():null,T=e.name||`${u}_${o}.zip`;return S&&S.start(`Saving to ${T}`),(0,Yl.writeFileSync)(T,d),S&&S.stop(`Saved to ${T}`),a&&J("Done \u2705"),!r&&n&&KM({bundle:o,filename:T,checksum:g}),{bundle:o,filename:T,checksum:g}}catch(s){throw r||(n?$s(s):p.error(U(s))),s instanceof Error?s:new Error(String(s))}}async function DF(t,e){await YM(t,e,!1)}async function Mg(t,e,r,n=!1){n||Z("Create channel"),r.apikey=r.apikey||ie();let o=await te().catch(()=>{});if(e=he(e,o?.config),!r.apikey)throw n||p.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||p.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let i=await ne(r.apikey,r.supaHost,r.supaAnon);await oe(i,r.apikey,["write","all"]),await Ne(i,r.apikey,e,4,n),n||p.info(`Creating channel ${e}#${t} to Capgo`);let a=await pg(i,e);if(!a)throw n||p.error("Cannot find default version for channel creation, please contact Capgo support \u{1F928}"),new Error("Cannot find default version for channel creation");let s=await ar(i,e),u=await oe(i,r.apikey,["write","all"]),c=await w2(i,{name:t,app_id:e,version:a.id,created_by:u,owner_org:s,allow_device_self_set:r.selfAssign??!1,public:r.default??!1});if(c.error)throw n||p.error(`Cannot create Channel \u{1F640}
|
|
@@ -257,9 +257,9 @@ ${f}`;(0,Ur.writeFileSync)(t,d,"utf8"),p.success(`Documentation updated in ${t}`
|
|
|
257
257
|
`),(0,cn.appendFileSync)(".gitignore",`.capgo
|
|
258
258
|
`)}else{let a=(0,Wg.homedir)();(0,cn.writeFileSync)(`${a}/.capgo`,`${t}
|
|
259
259
|
`)}let o=await ne(t,e.supaHost,e.supaAnon),i=await oe(o,t,["write","all","upload"]);await be(t,{channel:"user-login",event:"User CLI login",icon:"\u2705",user_id:i,notify:!1}).catch(),r||(p.success(`login saved into .capgo file in ${n?"local":"home"} directory`),J("Done \u2705"))}async function JF(t,e){await Kg(t,e,!1)}var XF="import { CapacitorUpdater } from '@capgo/capacitor-updater'",Zl="CapacitorUpdater.notifyAppReady()",y9=/import.*from.*/g,Ps="production",Yg={stdio:"pipe"},Ts,Ln;function ZF(){Ts??=(0,ke.readdirSync)(Ql.default.tmpdir).map(t=>({name:t,full:`${Ql.default.tmpdir}/${t}`})).find(t=>t.name.startsWith("capgocli"))?.full??Ql.default.fileSync({prefix:"capgocli"}).name}function pr(t,e){try{ZF(),(0,ke.writeFileSync)(Ts,JSON.stringify(e?{step_done:t,pathToPackageJson:e}:{step_done:t,pathToPackageJson:Ln})),e&&(Ln=e)}catch(r){p.error(`Cannot mark step as done in the CLI, error:
|
|
260
|
-
${r}`),p.warn("Onboarding will continue but please report it to the capgo team!")}}async function b9(t,e){try{ZF();let r=(0,ke.readFileSync)(Ts,"utf-8");if(!r||r.length===0)return;let{step_done:n,pathToPackageJson:o}=JSON.parse(r);p.info(`You have already got to the step ${n}/10 in the previous session`);let i=await ye({message:"Would you like to continue from where you left off?"});return await Vt(i,t,e),i?(o&&(Ln=o),n):void 0}catch(r){p.error(`Cannot read which steps have been
|
|
260
|
+
${r}`),p.warn("Onboarding will continue but please report it to the capgo team!")}}async function b9(t,e){try{ZF();let r=(0,ke.readFileSync)(Ts,"utf-8");if(!r||r.length===0)return;let{step_done:n,pathToPackageJson:o}=JSON.parse(r);p.info(`You have already got to the step ${n}/10 in the previous session`);let i=await ye({message:"Would you like to continue from where you left off?"});return await Vt(i,t,e),i?(o&&(Ln=o),n):void 0}catch(r){p.error(`Cannot read which steps have been completed, error:
|
|
261
261
|
${r}`),p.warn("Onboarding will continue but please report it to the capgo team!");return}}function v9(){if(Ts)try{(0,ke.rmSync)(Ts)}catch(t){p.error(`Cannot delete the tmp steps file.
|
|
262
|
-
Error: ${t}`)}}async function Vt(t,e,r){De(t)&&(await or("onboarding-v2",e,r,"canceled","\u{1F937}"),(0,Ce.exit)())}async function dr(t,e,r,n){return or("onboarding-v2",t,e,`onboarding-step-${r}`,n)}async function w9(t,e,r,n){let o=Qe(),i=await ye({message:`Add ${r} in Capgo?`});if(await Vt(i,t.gid,e),i){let a=we();a.start(`Running: ${o.runner} @capgo/cli@latest app add ${r}`),await fg(r,n,t,!0)?a.stop("App add Done \u2705"):a.stop("App already add \u2705")}else p.info(`If you change your mind, run it for yourself with: "${o.runner} @capgo/cli@latest app add ${r}"`);await dr(t.gid,e,"add-app",r)}async function C9(t,e,r){let n=Qe(),o=await ye({message:`Create default channel ${Ps} for ${r} in Capgo?`});if(await Vt(o,t,e),o){let i=we();i.start(`Running: ${n.runner} @capgo/cli@latest channel add ${Ps} ${r} --default`),await Mg(Ps,r,{default:!0,apikey:e},!0)?i.stop("Channel add Done \u2705"):i.stop("Channel already added \u2705")}else p.info(`If you change your mind, run it for yourself with: "${n.runner} @capgo/cli@latest channel add ${Ps} ${r} --default"`);await dr(t,e,"add-channel",r)}async function E9(t){let e=(0,Nn.join)(vt((0,Ce.cwd)()),bt),r=Ln?await ft(void 0,Ln):await ft(void 0,e);if(r.size===0||!r.has("@capacitor/core")){p.warn("No adequate dependencies found");let n=await ye({message:"Would you like to select the package.json file manually?"});if(De(n)&&(Mn("Operation cancelled."),(0,Ce.exit)(1)),n){let o=await ye({message:"Would you like to use a tree selector to choose the package.json file?"});if(De(o)&&(Mn("Operation cancelled."),(0,Ce.exit)(1)),o){let a=(0,Ce.cwd)(),s=bt;for(;;){let u=(0,ke.readdirSync)(a).map(c=>({value:c,label:c}));if(u.push({value:"..",label:".."}),s=await Dr({message:"Select package.json file:",options:u}),De(s)&&(Mn("Operation cancelled."),(0,Ce.exit)(1)),!(0,ke.statSync)((0,Nn.join)(a,s)).isDirectory()&&s!==bt){p.error("Selected a file that is not a package.json file");continue}if(a=(0,Nn.join)(a,s),s===bt)break}return await pr(t,a),{dependencies:await ft(void 0,a),path:a}}let i=await gr({message:"Enter path to node_modules folder:"});return De(i)&&(Mn("Operation cancelled."),(0,Ce.exit)(1)),(0,ke.existsSync)(i)||(p.error(`Path ${i} does not exist`),(0,Ce.exit)(1)),{dependencies:await ft(void 0,i),path:i}}}return await pr(t,e),{dependencies:await ft(void 0,e),path:e}}var _9="https://capacitorjs.com/docs/updating/6-0",x9="https://capacitorjs.com/docs/updating/7-0";async function S9(t,e,r){let n=Qe(),o="1.0.0",i=!1,a=await ye({message:`Automatic Install "@capgo/capacitor-updater" dependency in ${r}?`});if(await Vt(a,t,e),a){let s=we(),u="latest",{dependencies:c,path:l}=await E9(3);s.start("Checking if @capgo/capacitor-updater is installed"),c.has("@capacitor/core")||(s.stop("Error"),p.warn("Cannot find @capacitor/core in package.json"),J("Bye \u{1F44B}"),(0,Ce.exit)());let f=c.get("@capacitor/core");if(f||(s.stop("Error"),p.warn("Cannot find @capacitor/core in package.json, please run `capgo init` in a capacitor project"),J("Bye \u{1F44B}"),(0,Ce.exit)()),f==="latest"?(s.stop(`@capacitor/core version is ${f}, make sure to use a proper version, using Latest as value is not recommended and will lead to unexpected behavior`),J("Bye \u{1F44B}"),(0,Ce.exit)()):qn(_e(f),_e("6.0.0"))?(s.stop("Error"),p.warn(`@capacitor/core version is ${f}, Capgo only support 2 last Capacitor versions, please update to Capacitor v6 minimum: ${_9}`),J("Bye \u{1F44B}"),(0,Ce.exit)()):qn(_e(f),_e("7.0.0"))&&(s.stop(`@capacitor/core version is ${f}, update to Capacitor v7 minimum: ${x9} to support latest Mobile OS versions`),u="^6.0.0"),n.pm==="unknown"&&(s.stop("Error"),p.warn("Cannot
|
|
262
|
+
Error: ${t}`)}}async function Vt(t,e,r){De(t)&&(await or("onboarding-v2",e,r,"canceled","\u{1F937}"),(0,Ce.exit)())}async function dr(t,e,r,n){return or("onboarding-v2",t,e,`onboarding-step-${r}`,n)}async function w9(t,e,r,n){let o=Qe(),i=await ye({message:`Add ${r} in Capgo?`});if(await Vt(i,t.gid,e),i){let a=we();a.start(`Running: ${o.runner} @capgo/cli@latest app add ${r}`),await fg(r,n,t,!0)?a.stop("App add Done \u2705"):a.stop("App already add \u2705")}else p.info(`If you change your mind, run it for yourself with: "${o.runner} @capgo/cli@latest app add ${r}"`);await dr(t.gid,e,"add-app",r)}async function C9(t,e,r){let n=Qe(),o=await ye({message:`Create default channel ${Ps} for ${r} in Capgo?`});if(await Vt(o,t,e),o){let i=we();i.start(`Running: ${n.runner} @capgo/cli@latest channel add ${Ps} ${r} --default`),await Mg(Ps,r,{default:!0,apikey:e},!0)?i.stop("Channel add Done \u2705"):i.stop("Channel already added \u2705")}else p.info(`If you change your mind, run it for yourself with: "${n.runner} @capgo/cli@latest channel add ${Ps} ${r} --default"`);await dr(t,e,"add-channel",r)}async function E9(t){let e=(0,Nn.join)(vt((0,Ce.cwd)()),bt),r=Ln?await ft(void 0,Ln):await ft(void 0,e);if(r.size===0||!r.has("@capacitor/core")){p.warn("No adequate dependencies found");let n=await ye({message:"Would you like to select the package.json file manually?"});if(De(n)&&(Mn("Operation cancelled."),(0,Ce.exit)(1)),n){let o=await ye({message:"Would you like to use a tree selector to choose the package.json file?"});if(De(o)&&(Mn("Operation cancelled."),(0,Ce.exit)(1)),o){let a=(0,Ce.cwd)(),s=bt;for(;;){let u=(0,ke.readdirSync)(a).map(c=>({value:c,label:c}));if(u.push({value:"..",label:".."}),s=await Dr({message:"Select package.json file:",options:u}),De(s)&&(Mn("Operation cancelled."),(0,Ce.exit)(1)),!(0,ke.statSync)((0,Nn.join)(a,s)).isDirectory()&&s!==bt){p.error("Selected a file that is not a package.json file");continue}if(a=(0,Nn.join)(a,s),s===bt)break}return await pr(t,a),{dependencies:await ft(void 0,a),path:a}}let i=await gr({message:"Enter path to node_modules folder:"});return De(i)&&(Mn("Operation cancelled."),(0,Ce.exit)(1)),(0,ke.existsSync)(i)||(p.error(`Path ${i} does not exist`),(0,Ce.exit)(1)),{dependencies:await ft(void 0,i),path:i}}}return await pr(t,e),{dependencies:await ft(void 0,e),path:e}}var _9="https://capacitorjs.com/docs/updating/6-0",x9="https://capacitorjs.com/docs/updating/7-0";async function S9(t,e,r){let n=Qe(),o="1.0.0",i=!1,a=await ye({message:`Automatic Install "@capgo/capacitor-updater" dependency in ${r}?`});if(await Vt(a,t,e),a){let s=we(),u="latest",{dependencies:c,path:l}=await E9(3);s.start("Checking if @capgo/capacitor-updater is installed"),c.has("@capacitor/core")||(s.stop("Error"),p.warn("Cannot find @capacitor/core in package.json"),J("Bye \u{1F44B}"),(0,Ce.exit)());let f=c.get("@capacitor/core");if(f||(s.stop("Error"),p.warn("Cannot find @capacitor/core in package.json, please run `capgo init` in a capacitor project"),J("Bye \u{1F44B}"),(0,Ce.exit)()),f==="latest"?(s.stop(`@capacitor/core version is ${f}, make sure to use a proper version, using Latest as value is not recommended and will lead to unexpected behavior`),J("Bye \u{1F44B}"),(0,Ce.exit)()):qn(_e(f),_e("6.0.0"))?(s.stop("Error"),p.warn(`@capacitor/core version is ${f}, Capgo only support 2 last Capacitor versions, please update to Capacitor v6 minimum: ${_9}`),J("Bye \u{1F44B}"),(0,Ce.exit)()):qn(_e(f),_e("7.0.0"))&&(s.stop(`@capacitor/core version is ${f}, update to Capacitor v7 minimum: ${x9} to support latest Mobile OS versions`),u="^6.0.0"),n.pm==="unknown"&&(s.stop("Error"),p.warn("Cannot recognize package manager, please run `capgo init` in a capacitor project with npm, pnpm, bun or yarn"),J("Bye \u{1F44B}"),(0,Ce.exit)()),c.get("@capgo/capacitor-updater"))s.stop("Capgo already installed \u2705");else{await(0,sa.execSync)(`${n.installCommand} --force @capgo/capacitor-updater@${u}`,{...Yg,cwd:l.replace("/package.json","")}),s.stop("Install Done \u2705"),o=xr(void 0,l)||"1.0.0";let d=!1;u==="latest"&&(d=await ye({message:`Do you want to set instant updates in ${r}? Read more about it here: https://capgo.app/docs/live-updates/update-behavior/#applying-updates-immediately`}),await Vt(d,t,e)),s.start("Updating config file"),i=!!d;let h=d?{directUpdate:"always",autoSplashscreen:!0}:{};d&&await ig("SplashScreen",{launchAutoHide:!1}),await bs({version:o,appId:r,autoUpdate:!0,...h}),s.stop("Config file updated \u2705")}}else p.info(`If you change your mind, run it for yourself with: "${n.installCommand} @capgo/capacitor-updater@latest"`);return await dr(t,e,"add-updater",r),{pkgVersion:o,delta:i}}async function F9(t,e,r){let n=await ye({message:`Automatic Add "${Zl}" code and import in ${r}?`});if(await Vt(n,t,e),n){let o=we();o.start("Adding @capacitor-updater to your main file");let i=await _l();if(i==="nuxtjs-js"||i==="nuxtjs-ts"){let a=(0,Nn.join)("plugins");(0,ke.existsSync)(a)||(0,ke.mkdirSync)(a,{recursive:!0});let s;i==="nuxtjs-ts"?s=(0,Nn.join)(a,"capacitorUpdater.client.ts"):s=(0,Nn.join)(a,"capacitorUpdater.client.js");let u=`
|
|
263
263
|
import { CapacitorUpdater } from '@capgo/capacitor-updater'
|
|
264
264
|
|
|
265
265
|
export default defineNuxtPlugin(() => {
|