@capgo/cli 7.44.0 → 7.44.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/dist/package.json +1 -1
- package/dist/src/sdk.js +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -104,7 +104,7 @@ const config: CapacitorConfig = ${(0,t5.formatJSObject)(t)};
|
|
|
104
104
|
export default config;
|
|
105
105
|
`}});function D5(){try{return ig.default.statSync("/.dockerenv"),!0}catch{return!1}}function b5(){try{return ig.default.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function ag(){return og===void 0&&(og=D5()||b5()),og}var ig,og,Nx=Xe(()=>{ig=ue(require("node:fs"),1)});function Zi(){return sg===void 0&&(sg=w5()||ag()),sg}var Lx,sg,w5,ug=Xe(()=>{Lx=ue(require("node:fs"),1);Nx();w5=()=>{try{return Lx.default.statSync("/run/.containerenv"),!0}catch{return!1}}});var cg,Ux,Mx,jx,cn,lg=Xe(()=>{cg=ue(require("node:process"),1),Ux=ue(require("node:os"),1),Mx=ue(require("node:fs"),1);ug();jx=()=>{if(cg.default.platform!=="linux")return!1;if(Ux.default.release().toLowerCase().includes("microsoft"))return!Zi();try{return Mx.default.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!Zi():!1}catch{return!1}},cn=cg.default.env.__IS_WSL_TEST__?jx:jx()});var fg,qx,Hx,Vx,v5,dg,Wt,pg=Xe(()=>{fg=ue(require("node:process"),1),qx=require("node:buffer"),Hx=require("node:util"),Vx=ue(require("node:child_process"),1),v5=(0,Hx.promisify)(Vx.default.execFile),dg=()=>`${fg.default.env.SYSTEMROOT||fg.default.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,Wt=async(t,e={})=>{let{powerShellPath:r,...n}=e,o=Wt.encodeCommand(t);return v5(r??dg(),[...Wt.argumentsPrefix,o],{encoding:"utf8",...n})};Wt.argumentsPrefix=["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"];Wt.encodeCommand=t=>qx.Buffer.from(t,"utf16le").toString("base64");Wt.escapeArgument=t=>`'${String(t).replaceAll("'","''")}'`});var Kx,Gx,Fo,C5,E5,_5,$l,zx,Wx,Yx,Jx,Xx=Xe(()=>{Kx=require("node:util"),Gx=ue(require("node:child_process"),1),Fo=ue(require("node:fs/promises"),1);lg();pg();lg();C5=(0,Kx.promisify)(Gx.default.execFile),E5=(()=>{let t="/mnt/",e;return async function(){if(e)return e;let r="/etc/wsl.conf",n=!1;try{await Fo.default.access(r,Fo.constants.F_OK),n=!0}catch{}if(!n)return t;let o=await Fo.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}})(),_5=async()=>`${await E5()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,$l=cn?_5:dg,Wx=async()=>(zx??=(async()=>{try{let t=await $l();return await Fo.default.access(t,Fo.constants.X_OK),!0}catch{return!1}})(),zx),Yx=async()=>{let t=await $l(),e=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:r}=await Wt(e,{powerShellPath:t});return r.trim()},Jx=async t=>{if(/^[a-z]+:\/\//i.test(t))return t;try{let{stdout:e}=await C5("wslpath",["-aw",t],{encoding:"utf8"});return e.trim()}catch{return t}}});function ko(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 Zx=Xe(()=>{});async function hg(){if(eA.default.platform!=="darwin")throw new Error("macOS only");let{stdout:t}=await S5("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),r=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(t)?.groups.id??"com.apple.Safari";return r==="com.apple.safari"?"com.apple.Safari":r}var Qx,eA,tA,S5,rA=Xe(()=>{Qx=require("node:util"),eA=ue(require("node:process"),1),tA=require("node:child_process"),S5=(0,Qx.promisify)(tA.execFile)});async function iA(t,{humanReadableOutput:e=!0,signal:r}={}){if(nA.default.platform!=="darwin")throw new Error("macOS only");let n=e?[]:["-ss"],o={};r&&(o.signal=r);let{stdout:i}=await x5("osascript",["-e",t,n],o);return i.trim()}var nA,oA,mg,x5,aA=Xe(()=>{nA=ue(require("node:process"),1),oA=require("node:util"),mg=require("node:child_process"),x5=(0,oA.promisify)(mg.execFile)});async function gg(t){return iA(`tell application "Finder" to set app_path to application file id "${t}" as string
|
|
106
106
|
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var sA=Xe(()=>{aA()});async function Dg(t=A5){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 Il(`Cannot find Windows browser in stdout: ${JSON.stringify(e)}`);let{id:n}=r.groups,o=lA[n];if(!o)throw new Il(`Unknown browser ID: ${n}`);return o}var uA,cA,A5,lA,yg,Il,bg=Xe(()=>{uA=require("node:util"),cA=require("node:child_process"),A5=(0,uA.promisify)(cA.execFile),lA={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},yg=new Map(Object.entries(lA)),Il=class extends Error{}});async function wg(){if(Tl.default.platform==="darwin"){let t=await hg();return{name:await gg(t),id:t}}if(Tl.default.platform==="linux"){let{stdout:t}=await O5("xdg-mime",["query","default","x-scheme-handler/http"]),e=t.trim();return{name:F5(e.replace(/.desktop$/,"").replace("-"," ")),id:e}}if(Tl.default.platform==="win32")return Dg();throw new Error("Only macOS, Linux, and Windows are supported")}var fA,Tl,dA,O5,F5,pA=Xe(()=>{fA=require("node:util"),Tl=ue(require("node:process"),1),dA=require("node:child_process");rA();sA();bg();bg();O5=(0,fA.promisify)(dA.execFile),F5=t=>t.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase())});var Rl,k5,hA,mA=Xe(()=>{Rl=ue(require("node:process"),1),k5=!!(Rl.default.env.SSH_CONNECTION||Rl.default.env.SSH_CLIENT||Rl.default.env.SSH_TTY),hA=k5});var _g={};Yr(_g,{apps:()=>Po,default:()=>I5,openApp:()=>$5});function bA(t){if(typeof t=="string"||Array.isArray(t))return t;let{[yA]:e}=t;if(!e)throw new Error(`${yA} is not supported`);return e}function Fs({[Qi]:t},{wsl:e}={}){if(e&&cn)return bA(e);if(!t)throw new Error(`${Qi} is not supported`);return bA(t)}var Cg,Eg,vA,CA,Nl,wA,Bl,vg,gA,Qi,yA,DA,Os,P5,$5,Po,I5,Sg=Xe(()=>{Cg=ue(require("node:process"),1),Eg=ue(require("node:path"),1),vA=require("node:url"),CA=ue(require("node:child_process"),1),Nl=ue(require("node:fs/promises"),1);Xx();pg();Zx();pA();ug();mA();wA={},Bl=Symbol("fallbackAttempt"),vg=wA.url?Eg.default.dirname((0,vA.fileURLToPath)(wA.url)):"",gA=Eg.default.join(vg,"xdg-open"),{platform:Qi,arch:yA}=Cg.default,DA=async(t,e)=>{if(t.length===0)return;let r=[];for(let n of t)try{return await e(n)}catch(o){r.push(o)}throw new AggregateError(r,"Failed to open in all supported apps")},Os=async t=>{t={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...t};let e=t[Bl]===!0;if(delete t[Bl],Array.isArray(t.app))return DA(t.app,c=>Os({...t,app:c,[Bl]:!0}));let{name:r,arguments:n=[]}=t.app??{};if(n=[...n],Array.isArray(r))return DA(r,c=>Os({...t,app:{name:c,arguments:n},[Bl]:!0}));if(r==="browser"||r==="browserPrivate"){let c={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge","com.apple.safari":"safari"},l={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},d;if(cn){let p=await Yx();d=yg.get(p)??{}}else d=await wg();if(d.id in c){let p=c[d.id.toLowerCase()];if(r==="browserPrivate"){if(p==="safari")throw new Error("Safari doesn't support opening in private mode via command line");n.push(l[p])}return Os({...t,app:{name:Po[p],arguments:n}})}throw new Error(`${d.name} is not supported as a default browser`)}let o,i=[],a={},s=!1;if(cn&&!Zi()&&!hA&&!r&&(s=await Wx()),Qi==="darwin")o="open",t.wait&&i.push("--wait-apps"),t.background&&i.push("--background"),t.newInstance&&i.push("--new"),r&&i.push("-a",r);else if(Qi==="win32"||s){o=await $l(),i.push(...Wt.argumentsPrefix),cn||(a.windowsVerbatimArguments=!0),cn&&t.target&&(t.target=await Jx(t.target));let c=["$ProgressPreference = 'SilentlyContinue';","Start"];t.wait&&c.push("-Wait"),r?(c.push(Wt.escapeArgument(r)),t.target&&n.push(t.target)):t.target&&c.push(Wt.escapeArgument(t.target)),n.length>0&&(n=n.map(l=>Wt.escapeArgument(l)),c.push("-ArgumentList",n.join(","))),t.target=Wt.encodeCommand(c.join(" ")),t.wait||(a.stdio="ignore")}else{if(r)o=r;else{let c=!vg||vg==="/",l=!1;try{await Nl.default.access(gA,Nl.constants.X_OK),l=!0}catch{}o=Cg.default.versions.electron??(Qi==="android"||c||!l)?"xdg-open":gA}n.length>0&&i.push(...n),t.wait||(a.stdio="ignore",a.detached=!0)}Qi==="darwin"&&n.length>0&&i.push("--args",...n),t.target&&i.push(t.target);let u=CA.default.spawn(o,i,a);return t.wait?new Promise((c,l)=>{u.once("error",l),u.once("close",d=>{if(!t.allowNonzeroExitCode&&d!==0){l(new Error(`Exited with code ${d}`));return}c(u)})}):e?new Promise((c,l)=>{u.once("error",l),u.once("spawn",()=>{u.once("close",d=>{if(u.off("error",l),d!==0){l(new Error(`Exited with code ${d}`));return}u.unref(),c(u)})})}):(u.unref(),new Promise((c,l)=>{u.once("error",l),u.once("spawn",()=>{u.off("error",l),c(u)})}))},P5=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a `target`");return Os({...e,target:t})},$5=(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 Os({...e,app:{name:t,arguments:r}})};Po={browser:"browser",browserPrivate:"browserPrivate"};ko(Po,"chrome",()=>Fs({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium","chromium-browser"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));ko(Po,"brave",()=>Fs({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"]}}));ko(Po,"firefox",()=>Fs({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));ko(Po,"edge",()=>Fs({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));ko(Po,"safari",()=>Fs({darwin:"Safari"}));I5=P5});var ff=S(mr=>{"use strict";mr.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;mr.find=(t,e)=>t.nodes.find(r=>r.type===e);mr.exceedsLimit=(t,e,r=1,n)=>n===!1||!mr.isInteger(t)||!mr.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=n;mr.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)};mr.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;mr.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;mr.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;mr.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);mr.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 df=S((XJ,Z1)=>{"use strict";var X1=ff();Z1.exports=(t,e={})=>{let r=(n,o={})=>{let i=e.escapeInvalid&&X1.isInvalidBrace(o),a=n.invalid===!0&&e.escapeInvalid===!0,s="";if(n.value)return(i||a)&&X1.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 eO=S((ZJ,Q1)=>{"use strict";Q1.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var cO=S((QJ,uO)=>{"use strict";var tO=eO(),Mo=(t,e,r)=>{if(tO(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(tO(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(Mo.cache.hasOwnProperty(u))return Mo.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 d=sO(t)||sO(e),p={min:t,max:e,a:c,b:l},h=[],m=[];if(d&&(p.isPadded=d,p.maxLen=String(p.max).length),c<0){let b=l<0?Math.abs(l):1;m=rO(b,Math.abs(c),p,n),c=p.a=0}return l>=0&&(h=rO(c,l,p,n)),p.negatives=m,p.positives=h,p.result=xM(m,h,n),n.capture===!0?p.result=`(${p.result})`:n.wrap!==!1&&h.length+m.length>1&&(p.result=`(?:${p.result})`),Mo.cache[u]=p,p.result};function xM(t,e,r){let n=Jg(t,e,"-",!1,r)||[],o=Jg(e,t,"",!1,r)||[],i=Jg(t,e,"-?",!0,r)||[];return n.concat(i).concat(o).join("|")}function AM(t,e){let r=1,n=1,o=oO(t,r),i=new Set([e]);for(;t<=o&&o<=e;)i.add(o),r+=1,o=oO(t,r);for(o=iO(e+1,n)-1;t<o&&o<=e;)i.add(o),n+=1,o=iO(e+1,n)-1;return i=[...i],i.sort(kM),i}function OM(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let n=FM(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+=PM(u,c,r):a++}return a&&(i+=r.shorthand===!0?"\\d":"[0-9]"),{pattern:i,count:[a],digits:o}}function rO(t,e,r,n){let o=AM(t,e),i=[],a=t,s;for(let u=0;u<o.length;u++){let c=o[u],l=OM(String(a),String(c),n),d="";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+aO(s.count),a=c+1;continue}r.isPadded&&(d=$M(c,r,n)),l.string=d+l.pattern+aO(l.count),i.push(l),a=c+1,s=l}return i}function Jg(t,e,r,n,o){let i=[];for(let a of t){let{string:s}=a;!n&&!nO(e,"string",s)&&i.push(r+s),n&&nO(e,"string",s)&&i.push(r+s)}return i}function FM(t,e){let r=[];for(let n=0;n<t.length;n++)r.push([t[n],e[n]]);return r}function kM(t,e){return t>e?1:e>t?-1:0}function nO(t,e,r){return t.some(n=>n[e]===r)}function oO(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function iO(t,e){return t-t%Math.pow(10,e)}function aO(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function PM(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function sO(t){return/^-?(0+)\d/.test(t)}function $M(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}}`}}Mo.cache={};Mo.clearCache=()=>Mo.cache={};uO.exports=Mo});var Qg=S((eX,gO)=>{"use strict";var IM=require("util"),fO=cO(),lO=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),TM=t=>e=>t===!0?Number(e):String(e),Xg=t=>typeof t=="number"||typeof t=="string"&&t!=="",Hs=t=>Number.isInteger(+t),Zg=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},RM=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,BM=(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},hf=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length<e;)t="0"+t;return r?"-"+t:t},NM=(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=>hf(String(s),r)).join("|")),t.negatives.length&&(i=`-(${n}${t.negatives.map(s=>hf(String(s),r)).join("|")})`),o&&i?a=`${o}|${i}`:a=o||i,e.wrap?`(${n}${a})`:a},dO=(t,e,r,n)=>{if(r)return fO(t,e,{wrap:!1,...n});let o=String.fromCharCode(t);if(t===e)return o;let i=String.fromCharCode(e);return`[${o}-${i}]`},pO=(t,e,r)=>{if(Array.isArray(t)){let n=r.wrap===!0,o=r.capture?"":"?:";return n?`(${o}${t.join("|")})`:t.join("|")}return fO(t,e,r)},hO=(...t)=>new RangeError("Invalid range arguments: "+IM.inspect(...t)),mO=(t,e,r)=>{if(r.strictRanges===!0)throw hO([t,e]);return[]},LM=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},jM=(t,e,r=1,n={})=>{let o=Number(t),i=Number(e);if(!Number.isInteger(o)||!Number.isInteger(i)){if(n.strictRanges===!0)throw hO([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=Zg(s)||Zg(u)||Zg(c),d=l?Math.max(s.length,u.length,c.length):0,p=l===!1&&RM(t,e,n)===!1,h=n.transform||TM(p);if(n.toRegex&&r===1)return dO(hf(t,d),hf(e,d),!0,n);let m={negatives:[],positives:[]},b=E=>m[E<0?"negatives":"positives"].push(Math.abs(E)),y=[],v=0;for(;a?o>=i:o<=i;)n.toRegex===!0&&r>1?b(o):y.push(BM(h(o,v),d,p)),o=a?o-r:o+r,v++;return n.toRegex===!0?r>1?NM(m,n,d):pO(y,null,{wrap:!1,...n}):y},UM=(t,e,r=1,n={})=>{if(!Hs(t)&&t.length>1||!Hs(e)&&e.length>1)return mO(t,e,n);let o=n.transform||(p=>String.fromCharCode(p)),i=`${t}`.charCodeAt(0),a=`${e}`.charCodeAt(0),s=i>a,u=Math.min(i,a),c=Math.max(i,a);if(n.toRegex&&r===1)return dO(u,c,!1,n);let l=[],d=0;for(;s?i>=a:i<=a;)l.push(o(i,d)),i=s?i-r:i+r,d++;return n.toRegex===!0?pO(l,null,{wrap:!1,options:n}):l},pf=(t,e,r,n={})=>{if(e==null&&Xg(t))return[t];if(!Xg(t)||!Xg(e))return mO(t,e,n);if(typeof r=="function")return pf(t,e,1,{transform:r});if(lO(r))return pf(t,e,0,r);let o={...n};return o.capture===!0&&(o.wrap=!0),r=r||o.step||1,Hs(r)?Hs(t)&&Hs(e)?jM(t,e,r,o):UM(t,e,Math.max(Math.abs(r),1),o):r!=null&&!lO(r)?LM(r,o):pf(t,e,1,r)};gO.exports=pf});var bO=S((tX,DO)=>{"use strict";var MM=Qg(),yO=ff(),qM=(t,e={})=>{let r=(n,o={})=>{let i=yO.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=yO.reduce(n.nodes),d=MM(...l,{...e,wrap:!1,toRegex:!0,strictZeros:!0});if(d.length!==0)return l.length>1&&d.length>1?`(${d})`:d}if(n.nodes)for(let l of n.nodes)c+=r(l,n);return c};return r(t)};DO.exports=qM});var CO=S((rX,vO)=>{"use strict";var HM=Qg(),wO=df(),ha=ff(),qo=(t="",e="",r=!1)=>{let n=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ha.flatten(e).map(o=>`{${o}}`):e;for(let o of t)if(Array.isArray(o))for(let i of o)n.push(qo(i,e,r));else for(let i of e)r===!0&&typeof i=="string"&&(i=`{${i}}`),n.push(Array.isArray(i)?qo(o,i,r):o+i);return ha.flatten(n)},VM=(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(qo(s.pop(),wO(o,e)));return}if(o.type==="brace"&&o.invalid!==!0&&o.nodes.length===2){s.push(qo(s.pop(),["{}"]));return}if(o.nodes&&o.ranges>0){let d=ha.reduce(o.nodes);if(ha.exceedsLimit(...d,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let p=HM(...d,e);p.length===0&&(p=wO(o,e)),s.push(qo(s.pop(),p)),o.nodes=[];return}let u=ha.encloseBrace(o),c=o.queue,l=o;for(;l.type!=="brace"&&l.type!=="root"&&l.parent;)l=l.parent,c=l.queue;for(let d=0;d<o.nodes.length;d++){let p=o.nodes[d];if(p.type==="comma"&&o.type==="brace"){d===1&&c.push(""),c.push("");continue}if(p.type==="close"){s.push(qo(s.pop(),c,u));continue}if(p.value&&p.type!=="open"){c.push(qo(c.pop(),p.value));continue}p.nodes&&n(p,o)}return c};return ha.flatten(n(t))};vO.exports=VM});var _O=S((nX,EO)=>{"use strict";EO.exports={MAX_LENGTH:1e4,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:`
|
|
107
|
-
`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var FO=S((oX,OO)=>{"use strict";var zM=df(),{MAX_LENGTH:SO,CHAR_BACKSLASH:ey,CHAR_BACKTICK:KM,CHAR_COMMA:GM,CHAR_DOT:WM,CHAR_LEFT_PARENTHESES:YM,CHAR_RIGHT_PARENTHESES:JM,CHAR_LEFT_CURLY_BRACE:XM,CHAR_RIGHT_CURLY_BRACE:ZM,CHAR_LEFT_SQUARE_BRACKET:xO,CHAR_RIGHT_SQUARE_BRACKET:AO,CHAR_DOUBLE_QUOTE:QM,CHAR_SINGLE_QUOTE:e9,CHAR_NO_BREAK_SPACE:t9,CHAR_ZERO_WIDTH_NOBREAK_SPACE:r9}=_O(),n9=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(SO,r.maxLength):SO;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,d=0,p,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],p=h(),!(p===r9||p===t9)){if(p===ey){m({type:"text",value:(e.keepEscaping?p:"")+h()});continue}if(p===AO){m({type:"text",value:"\\"+p});continue}if(p===xO){u++;let b;for(;l<c&&(b=h());){if(p+=b,b===xO){u++;continue}if(b===ey){p+=h();continue}if(b===AO&&(u--,u===0))break}m({type:"text",value:p});continue}if(p===YM){a=m({type:"paren",nodes:[]}),i.push(a),m({type:"text",value:p});continue}if(p===JM){if(a.type!=="paren"){m({type:"text",value:p});continue}a=i.pop(),m({type:"text",value:p}),a=i[i.length-1];continue}if(p===QM||p===e9||p===KM){let b=p,y;for(e.keepQuotes!==!0&&(p="");l<c&&(y=h());){if(y===ey){p+=y+h();continue}if(y===b){e.keepQuotes===!0&&(p+=y);break}p+=y}m({type:"text",value:p});continue}if(p===XM){d++;let y={type:"brace",open:!0,close:!1,dollar:s.value&&s.value.slice(-1)==="$"||a.dollar===!0,depth:d,commas:0,ranges:0,nodes:[]};a=m(y),i.push(a),m({type:"open",value:p});continue}if(p===ZM){if(a.type!=="brace"){m({type:"text",value:p});continue}let b="close";a=i.pop(),a.close=!0,m({type:b,value:p}),d--,a=i[i.length-1];continue}if(p===GM&&d>0){if(a.ranges>0){a.ranges=0;let b=a.nodes.shift();a.nodes=[b,{type:"text",value:zM(a)}]}m({type:"comma",value:p}),a.commas++;continue}if(p===WM&&d>0&&a.commas===0){let b=a.nodes;if(d===0||b.length===0){m({type:"text",value:p});continue}if(s.type==="dot"){if(a.range=[],s.value+=p,s.type="range",a.nodes.length!==3&&a.nodes.length!==5){a.invalid=!0,a.ranges=0,s.type="text";continue}a.ranges++,a.args=[];continue}if(s.type==="range"){b.pop();let y=b[b.length-1];y.value+=s.value+p,s=y,a.ranges--;continue}m({type:"dot",value:p});continue}m({type:"text",value:p})}do if(a=i.pop(),a.type!=="root"){a.nodes.forEach(v=>{v.nodes||(v.type==="open"&&(v.isOpen=!0),v.type==="close"&&(v.isClose=!0),v.nodes||(v.type="text"),v.invalid=!0)});let b=i[i.length-1],y=b.nodes.indexOf(a);b.nodes.splice(y,1,...a.nodes)}while(i.length>0);return m({type:"eos"}),o};OO.exports=n9});var $O=S((iX,PO)=>{"use strict";var kO=df(),o9=bO(),i9=CO(),a9=FO(),Zt=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let o=Zt.create(n,e);Array.isArray(o)?r.push(...o):r.push(o)}else r=[].concat(Zt.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Zt.parse=(t,e={})=>a9(t,e);Zt.stringify=(t,e={})=>kO(typeof t=="string"?Zt.parse(t,e):t,e);Zt.compile=(t,e={})=>(typeof t=="string"&&(t=Zt.parse(t,e)),o9(t,e));Zt.expand=(t,e={})=>{typeof t=="string"&&(t=Zt.parse(t,e));let r=i9(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Zt.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Zt.compile(t,e):Zt.expand(t,e);PO.exports=Zt});var Vs=S((aX,NO)=>{"use strict";var s9=require("path"),zr="\\\\/",IO=`[^${zr}]`,yn="\\.",u9="\\+",c9="\\?",mf="\\/",l9="(?=.)",TO="[^/]",ty=`(?:${mf}|$)`,RO=`(?:^|${mf})`,ry=`${yn}{1,2}${ty}`,f9=`(?!${yn})`,d9=`(?!${RO}${ry})`,p9=`(?!${yn}{0,1}${ty})`,h9=`(?!${ry})`,m9=`[^.${mf}]`,g9=`${TO}*?`,BO={DOT_LITERAL:yn,PLUS_LITERAL:u9,QMARK_LITERAL:c9,SLASH_LITERAL:mf,ONE_CHAR:l9,QMARK:TO,END_ANCHOR:ty,DOTS_SLASH:ry,NO_DOT:f9,NO_DOTS:d9,NO_DOT_SLASH:p9,NO_DOTS_SLASH:h9,QMARK_NO_DOT:m9,STAR:g9,START_ANCHOR:RO},y9={...BO,SLASH_LITERAL:`[${zr}]`,QMARK:IO,STAR:`${IO}*?`,DOTS_SLASH:`${yn}{1,2}(?:[${zr}]|$)`,NO_DOT:`(?!${yn})`,NO_DOTS:`(?!(?:^|[${zr}])${yn}{1,2}(?:[${zr}]|$))`,NO_DOT_SLASH:`(?!${yn}{0,1}(?:[${zr}]|$))`,NO_DOTS_SLASH:`(?!${yn}{1,2}(?:[${zr}]|$))`,QMARK_NO_DOT:`[^.${zr}]`,START_ANCHOR:`(?:^|[${zr}])`,END_ANCHOR:`(?:[${zr}]|$)`},D9={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"};NO.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:D9,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:s9.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?y9:BO}}});var zs=S(Ht=>{"use strict";var b9=require("path"),w9=process.platform==="win32",{REGEX_BACKSLASH:v9,REGEX_REMOVE_BACKSLASH:C9,REGEX_SPECIAL_CHARS:E9,REGEX_SPECIAL_CHARS_GLOBAL:_9}=Vs();Ht.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Ht.hasRegexChars=t=>E9.test(t);Ht.isRegexChar=t=>t.length===1&&Ht.hasRegexChars(t);Ht.escapeRegex=t=>t.replace(_9,"\\$1");Ht.toPosixSlashes=t=>t.replace(v9,"/");Ht.removeBackslashes=t=>t.replace(C9,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:w9===!0||b9.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 zO=S((uX,VO)=>{"use strict";var LO=zs(),{CHAR_ASTERISK:ny,CHAR_AT:S9,CHAR_BACKWARD_SLASH:Ks,CHAR_COMMA:x9,CHAR_DOT:oy,CHAR_EXCLAMATION_MARK:iy,CHAR_FORWARD_SLASH:HO,CHAR_LEFT_CURLY_BRACE:ay,CHAR_LEFT_PARENTHESES:sy,CHAR_LEFT_SQUARE_BRACKET:A9,CHAR_PLUS:O9,CHAR_QUESTION_MARK:jO,CHAR_RIGHT_CURLY_BRACE:F9,CHAR_RIGHT_PARENTHESES:UO,CHAR_RIGHT_SQUARE_BRACKET:k9}=Vs(),MO=t=>t===HO||t===Ks,qO=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},P9=(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,d=0,p=!1,h=!1,m=!1,b=!1,y=!1,v=!1,E=!1,g=!1,_=!1,x=!1,$=0,k,B,T={value:"",depth:0,isGlob:!1},L=()=>c>=n,A=()=>u.charCodeAt(c+1),j=()=>(k=B,u.charCodeAt(++c));for(;c<n;){B=j();let w;if(B===Ks){E=T.backslashes=!0,B=j(),B===ay&&(v=!0);continue}if(v===!0||B===ay){for($++;L()!==!0&&(B=j());){if(B===Ks){E=T.backslashes=!0,j();continue}if(B===ay){$++;continue}if(v!==!0&&B===oy&&(B=j())===oy){if(p=T.isBrace=!0,m=T.isGlob=!0,x=!0,o===!0)continue;break}if(v!==!0&&B===x9){if(p=T.isBrace=!0,m=T.isGlob=!0,x=!0,o===!0)continue;break}if(B===F9&&($--,$===0)){v=!1,p=T.isBrace=!0,x=!0;break}}if(o===!0)continue;break}if(B===HO){if(i.push(c),a.push(T),T={value:"",depth:0,isGlob:!1},x===!0)continue;if(k===oy&&c===l+1){l+=2;continue}d=c+1;continue}if(r.noext!==!0&&(B===O9||B===S9||B===ny||B===jO||B===iy)===!0&&A()===sy){if(m=T.isGlob=!0,b=T.isExtglob=!0,x=!0,B===iy&&c===l&&(_=!0),o===!0){for(;L()!==!0&&(B=j());){if(B===Ks){E=T.backslashes=!0,B=j();continue}if(B===UO){m=T.isGlob=!0,x=!0;break}}continue}break}if(B===ny){if(k===ny&&(y=T.isGlobstar=!0),m=T.isGlob=!0,x=!0,o===!0)continue;break}if(B===jO){if(m=T.isGlob=!0,x=!0,o===!0)continue;break}if(B===A9){for(;L()!==!0&&(w=j());){if(w===Ks){E=T.backslashes=!0,j();continue}if(w===k9){h=T.isBracket=!0,m=T.isGlob=!0,x=!0;break}}if(o===!0)continue;break}if(r.nonegate!==!0&&B===iy&&c===l){g=T.negated=!0,l++;continue}if(r.noparen!==!0&&B===sy){if(m=T.isGlob=!0,o===!0){for(;L()!==!0&&(B=j());){if(B===sy){E=T.backslashes=!0,B=j();continue}if(B===UO){x=!0;break}}continue}break}if(m===!0){if(x=!0,o===!0)continue;break}}r.noext===!0&&(b=!1,m=!1);let M=u,W="",F="";l>0&&(W=u.slice(0,l),u=u.slice(l),d-=l),M&&m===!0&&d>0?(M=u.slice(0,d),F=u.slice(d)):m===!0?(M="",F=u):M=u,M&&M!==""&&M!=="/"&&M!==u&&MO(M.charCodeAt(M.length-1))&&(M=M.slice(0,-1)),r.unescape===!0&&(F&&(F=LO.removeBackslashes(F)),M&&E===!0&&(M=LO.removeBackslashes(M)));let D={prefix:W,input:t,start:l,base:M,glob:F,isBrace:p,isBracket:h,isGlob:m,isExtglob:b,isGlobstar:y,negated:g,negatedExtglob:_};if(r.tokens===!0&&(D.maxDepth=0,MO(B)||a.push(T),D.tokens=a),r.parts===!0||r.tokens===!0){let w;for(let C=0;C<i.length;C++){let O=w?w+1:l,R=i[C],I=t.slice(O,R);r.tokens&&(C===0&&l!==0?(a[C].isPrefix=!0,a[C].value=W):a[C].value=I,qO(a[C]),D.maxDepth+=a[C].depth),(C!==0||I!=="")&&s.push(I),w=R}if(w&&w+1<t.length){let C=t.slice(w+1);s.push(C),r.tokens&&(a[a.length-1].value=C,qO(a[a.length-1]),D.maxDepth+=a[a.length-1].depth)}D.slashes=i,D.parts=s}return D};VO.exports=P9});var WO=S((cX,GO)=>{"use strict";var gf=Vs(),Qt=zs(),{MAX_LENGTH:yf,POSIX_REGEX_SOURCE:$9,REGEX_NON_SPECIAL_CHARS:I9,REGEX_SPECIAL_CHARS_BACKREF:T9,REPLACEMENTS:KO}=gf,R9=(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=>Qt.escapeRegex(o)).join("..")}return r},ma=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,uy=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=KO[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(yf,r.maxLength):yf,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=Qt.isWindows(e),c=gf.globChars(u),l=gf.extglobChars(c),{DOT_LITERAL:d,PLUS_LITERAL:p,SLASH_LITERAL:h,ONE_CHAR:m,DOTS_SLASH:b,NO_DOT:y,NO_DOT_SLASH:v,NO_DOTS_SLASH:E,QMARK:g,QMARK_NO_DOT:_,STAR:x,START_ANCHOR:$}=c,k=G=>`(${s}(?:(?!${$}${G.dot?b:d}).)*?)`,B=r.dot?"":y,T=r.dot?g:_,L=r.bash===!0?k(r):x;r.capture&&(L=`(${L})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:a};t=Qt.removePrefix(t,A),o=t.length;let j=[],M=[],W=[],F=i,D,w=()=>A.index===o-1,C=A.peek=(G=1)=>t[A.index+G],O=A.advance=()=>t[++A.index]||"",R=()=>t.slice(A.index+1),I=(G="",Se=0)=>{A.consumed+=G,A.index+=Se},q=G=>{A.output+=G.output!=null?G.output:G.value,I(G.value)},P=()=>{let G=1;for(;C()==="!"&&(C(2)!=="("||C(3)==="?");)O(),A.start++,G++;return G%2===0?!1:(A.negated=!0,A.start++,!0)},N=G=>{A[G]++,W.push(G)},z=G=>{A[G]--,W.pop()},H=G=>{if(F.type==="globstar"){let Se=A.braces>0&&(G.type==="comma"||G.type==="brace"),V=G.extglob===!0||j.length&&(G.type==="pipe"||G.type==="paren");G.type!=="slash"&&G.type!=="paren"&&!Se&&!V&&(A.output=A.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=L,A.output+=F.output)}if(j.length&&G.type!=="paren"&&(j[j.length-1].inner+=G.value),(G.value||G.output)&&q(G),F&&F.type==="text"&&G.type==="text"){F.value+=G.value,F.output=(F.output||"")+G.value;return}G.prev=F,a.push(G),F=G},se=(G,Se)=>{let V={...l[Se],conditions:1,inner:""};V.prev=F,V.parens=A.parens,V.output=A.output;let ce=(r.capture?"(":"")+V.open;N("parens"),H({type:G,value:Se,output:A.output?"":m}),H({type:"paren",extglob:!0,value:O(),output:ce}),j.push(V)},zt=G=>{let Se=G.close+(r.capture?")":""),V;if(G.type==="negate"){let ce=L;if(G.inner&&G.inner.length>1&&G.inner.includes("/")&&(ce=k(r)),(ce!==L||w()||/^\)+$/.test(R()))&&(Se=G.close=`)$))${ce}`),G.inner.includes("*")&&(V=R())&&/^\.[^\\/.]+$/.test(V)){let qe=uy(V,{...e,fastpaths:!1}).output;Se=G.close=`)${qe})${ce})`}G.prev.type==="bos"&&(A.negatedExtglob=!0)}H({type:"paren",extglob:!0,value:D,output:Se}),z("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let G=!1,Se=t.replace(T9,(V,ce,qe,Et,rt,Af)=>Et==="\\"?(G=!0,V):Et==="?"?ce?ce+Et+(rt?g.repeat(rt.length):""):Af===0?T+(rt?g.repeat(rt.length):""):g.repeat(qe.length):Et==="."?d.repeat(qe.length):Et==="*"?ce?ce+Et+(rt?L:""):L:ce?V:`\\${V}`);return G===!0&&(r.unescape===!0?Se=Se.replace(/\\/g,""):Se=Se.replace(/\\+/g,V=>V.length%2===0?"\\\\":V?"\\":"")),Se===t&&r.contains===!0?(A.output=t,A):(A.output=Qt.wrapOutput(Se,A,e),A)}for(;!w();){if(D=O(),D==="\0")continue;if(D==="\\"){let V=C();if(V==="/"&&r.bash!==!0||V==="."||V===";")continue;if(!V){D+="\\",H({type:"text",value:D});continue}let ce=/^\\+/.exec(R()),qe=0;if(ce&&ce[0].length>2&&(qe=ce[0].length,A.index+=qe,qe%2!==0&&(D+="\\")),r.unescape===!0?D=O():D+=O(),A.brackets===0){H({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(r.posix!==!1&&D===":"){let V=F.value.slice(1);if(V.includes("[")&&(F.posix=!0,V.includes(":"))){let ce=F.value.lastIndexOf("["),qe=F.value.slice(0,ce),Et=F.value.slice(ce+2),rt=$9[Et];if(rt){F.value=qe+rt,A.backtrack=!0,O(),!i.output&&a.indexOf(F)===1&&(i.output=m);continue}}}(D==="["&&C()!==":"||D==="-"&&C()==="]")&&(D=`\\${D}`),D==="]"&&(F.value==="["||F.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&F.value==="["&&(D="^"),F.value+=D,q({value:D});continue}if(A.quotes===1&&D!=='"'){D=Qt.escapeRegex(D),F.value+=D,q({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&H({type:"text",value:D});continue}if(D==="("){N("parens"),H({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(ma("opening","("));let V=j[j.length-1];if(V&&A.parens===V.parens+1){zt(j.pop());continue}H({type:"paren",value:D,output:A.parens?")":"\\)"}),z("parens");continue}if(D==="["){if(r.nobracket===!0||!R().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(ma("closing","]"));D=`\\${D}`}else N("brackets");H({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){H({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(ma("opening","["));H({type:"text",value:D,output:`\\${D}`});continue}z("brackets");let V=F.value.slice(1);if(F.posix!==!0&&V[0]==="^"&&!V.includes("/")&&(D=`/${D}`),F.value+=D,q({value:D}),r.literalBrackets===!1||Qt.hasRegexChars(V))continue;let ce=Qt.escapeRegex(F.value);if(A.output=A.output.slice(0,-F.value.length),r.literalBrackets===!0){A.output+=ce,F.value=ce;continue}F.value=`(${s}${ce}|${F.value})`,A.output+=F.value;continue}if(D==="{"&&r.nobrace!==!0){N("braces");let V={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};M.push(V),H(V);continue}if(D==="}"){let V=M[M.length-1];if(r.nobrace===!0||!V){H({type:"text",value:D,output:D});continue}let ce=")";if(V.dots===!0){let qe=a.slice(),Et=[];for(let rt=qe.length-1;rt>=0&&(a.pop(),qe[rt].type!=="brace");rt--)qe[rt].type!=="dots"&&Et.unshift(qe[rt].value);ce=R9(Et,r),A.backtrack=!0}if(V.comma!==!0&&V.dots!==!0){let qe=A.output.slice(0,V.outputIndex),Et=A.tokens.slice(V.tokensIndex);V.value=V.output="\\{",D=ce="\\}",A.output=qe;for(let rt of Et)A.output+=rt.output||rt.value}H({type:"brace",value:D,output:ce}),z("braces"),M.pop();continue}if(D==="|"){j.length>0&&j[j.length-1].conditions++,H({type:"text",value:D});continue}if(D===","){let V=D,ce=M[M.length-1];ce&&W[W.length-1]==="braces"&&(ce.comma=!0,V="|"),H({type:"comma",value:D,output:V});continue}if(D==="/"){if(F.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",a.pop(),F=i;continue}H({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&F.type==="dot"){F.value==="."&&(F.output=d);let V=M[M.length-1];F.type="dots",F.output+=D,F.value+=D,V.dots=!0;continue}if(A.braces+A.parens===0&&F.type!=="bos"&&F.type!=="slash"){H({type:"text",value:D,output:d});continue}H({type:"dot",value:D,output:d});continue}if(D==="?"){if(!(F&&F.value==="(")&&r.noextglob!==!0&&C()==="("&&C(2)!=="?"){se("qmark",D);continue}if(F&&F.type==="paren"){let ce=C(),qe=D;if(ce==="<"&&!Qt.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(F.value==="("&&!/[!=<:]/.test(ce)||ce==="<"&&!/<([!=]|\w+>)/.test(R()))&&(qe=`\\${D}`),H({type:"text",value:D,output:qe});continue}if(r.dot!==!0&&(F.type==="slash"||F.type==="bos")){H({type:"qmark",value:D,output:_});continue}H({type:"qmark",value:D,output:g});continue}if(D==="!"){if(r.noextglob!==!0&&C()==="("&&(C(2)!=="?"||!/[!=<:]/.test(C(3)))){se("negate",D);continue}if(r.nonegate!==!0&&A.index===0){P();continue}}if(D==="+"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){se("plus",D);continue}if(F&&F.value==="("||r.regex===!1){H({type:"plus",value:D,output:p});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||A.parens>0){H({type:"plus",value:D});continue}H({type:"plus",value:p});continue}if(D==="@"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){H({type:"at",extglob:!0,value:D,output:""});continue}H({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let V=I9.exec(R());V&&(D+=V[0],A.index+=V[0].length),H({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=L,A.backtrack=!0,A.globstar=!0,I(D);continue}let G=R();if(r.noextglob!==!0&&/^\([^?]/.test(G)){se("star",D);continue}if(F.type==="star"){if(r.noglobstar===!0){I(D);continue}let V=F.prev,ce=V.prev,qe=V.type==="slash"||V.type==="bos",Et=ce&&(ce.type==="star"||ce.type==="globstar");if(r.bash===!0&&(!qe||G[0]&&G[0]!=="/")){H({type:"star",value:D,output:""});continue}let rt=A.braces>0&&(V.type==="comma"||V.type==="brace"),Af=j.length&&(V.type==="pipe"||V.type==="paren");if(!qe&&V.type!=="paren"&&!rt&&!Af){H({type:"star",value:D,output:""});continue}for(;G.slice(0,3)==="/**";){let Xs=t[A.index+4];if(Xs&&Xs!=="/")break;G=G.slice(3),I("/**",3)}if(V.type==="bos"&&w()){F.type="globstar",F.value+=D,F.output=k(r),A.output=F.output,A.globstar=!0,I(D);continue}if(V.type==="slash"&&V.prev.type!=="bos"&&!Et&&w()){A.output=A.output.slice(0,-(V.output+F.output).length),V.output=`(?:${V.output}`,F.type="globstar",F.output=k(r)+(r.strictSlashes?")":"|$)"),F.value+=D,A.globstar=!0,A.output+=V.output+F.output,I(D);continue}if(V.type==="slash"&&V.prev.type!=="bos"&&G[0]==="/"){let Xs=G[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(V.output+F.output).length),V.output=`(?:${V.output}`,F.type="globstar",F.output=`${k(r)}${h}|${h}${Xs})`,F.value+=D,A.output+=V.output+F.output,A.globstar=!0,I(D+O()),H({type:"slash",value:"/",output:""});continue}if(V.type==="bos"&&G[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${h}|${k(r)}${h})`,A.output=F.output,A.globstar=!0,I(D+O()),H({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-F.output.length),F.type="globstar",F.output=k(r),F.value+=D,A.output+=F.output,A.globstar=!0,I(D);continue}let Se={type:"star",value:D,output:L};if(r.bash===!0){Se.output=".*?",(F.type==="bos"||F.type==="slash")&&(Se.output=B+Se.output),H(Se);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&r.regex===!0){Se.output=D,H(Se);continue}(A.index===A.start||F.type==="slash"||F.type==="dot")&&(F.type==="dot"?(A.output+=v,F.output+=v):r.dot===!0?(A.output+=E,F.output+=E):(A.output+=B,F.output+=B),C()!=="*"&&(A.output+=m,F.output+=m)),H(Se)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(ma("closing","]"));A.output=Qt.escapeLast(A.output,"["),z("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(ma("closing",")"));A.output=Qt.escapeLast(A.output,"("),z("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(ma("closing","}"));A.output=Qt.escapeLast(A.output,"{"),z("braces")}if(r.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket")&&H({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let G of A.tokens)A.output+=G.output!=null?G.output:G.value,G.suffix&&(A.output+=G.suffix)}return A};uy.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(yf,r.maxLength):yf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);t=KO[t]||t;let i=Qt.isWindows(e),{DOT_LITERAL:a,SLASH_LITERAL:s,ONE_CHAR:u,DOTS_SLASH:c,NO_DOT:l,NO_DOTS:d,NO_DOTS_SLASH:p,STAR:h,START_ANCHOR:m}=gf.globChars(i),b=r.dot?d:l,y=r.dot?p:l,v=r.capture?"":"?:",E={negated:!1,prefix:""},g=r.bash===!0?".*?":h;r.capture&&(g=`(${g})`);let _=B=>B.noglobstar===!0?g:`(${v}(?:(?!${m}${B.dot?c:a}).)*?)`,x=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}${y}${g}`;case"**":return b+_(r);case"**/*":return`(?:${b}${_(r)}${s})?${y}${u}${g}`;case"**/*.*":return`(?:${b}${_(r)}${s})?${y}${g}${a}${u}${g}`;case"**/.*":return`(?:${b}${_(r)}${s})?${a}${u}${g}`;default:{let T=/^(.*?)\.(\w+)$/.exec(B);if(!T)return;let L=x(T[1]);return L?L+a+T[2]:void 0}}},$=Qt.removePrefix(t,E),k=x($);return k&&r.strictSlashes!==!0&&(k+=`${s}?`),k};GO.exports=uy});var JO=S((lX,YO)=>{"use strict";var B9=require("path"),N9=zO(),cy=WO(),ly=zs(),L9=Vs(),j9=t=>t&&typeof t=="object"&&!Array.isArray(t),et=(t,e,r=!1)=>{if(Array.isArray(t)){let l=t.map(p=>et(p,e,r));return p=>{for(let h of l){let m=h(p);if(m)return m}return!1}}let n=j9(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=ly.isWindows(e),a=n?et.compileRe(t,e):et.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=et(o.ignore,l,r)}let c=(l,d=!1)=>{let{isMatch:p,match:h,output:m}=et.test(l,a,e,{glob:t,posix:i}),b={glob:t,state:s,regex:a,posix:i,input:l,output:m,match:h,isMatch:p};return typeof o.onResult=="function"&&o.onResult(b),p===!1?(b.isMatch=!1,d?b:!1):u(l)?(typeof o.onIgnore=="function"&&o.onIgnore(b),b.isMatch=!1,d?b:!1):(typeof o.onMatch=="function"&&o.onMatch(b),d?b:!0)};return r&&(c.state=s),c};et.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?ly.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=et.matchBase(t,e,r,o):s=e.exec(u)),{isMatch:!!s,match:s,output:u}};et.matchBase=(t,e,r,n=ly.isWindows(r))=>(e instanceof RegExp?e:et.makeRe(e,r)).test(B9.basename(t));et.isMatch=(t,e,r)=>et(e,r)(t);et.parse=(t,e)=>Array.isArray(t)?t.map(r=>et.parse(r,e)):cy(t,{...e,fastpaths:!1});et.scan=(t,e)=>N9(t,e);et.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=et.toRegex(s,e);return n===!0&&(u.state=t),u};et.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=cy.fastpaths(t,e)),o.output||(o=cy(t,e)),et.compileRe(o,e,r,n)};et.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/$^/}};et.constants=L9;YO.exports=et});var ZO=S((fX,XO)=>{"use strict";XO.exports=JO()});var oF=S((dX,nF)=>{"use strict";var eF=require("util"),tF=$O(),Kr=ZO(),fy=zs(),QO=t=>t===""||t==="./",rF=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},Le=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,o=new Set,i=new Set,a=0,s=l=>{i.add(l.output),r&&r.onResult&&r.onResult(l)};for(let l=0;l<e.length;l++){let d=Kr(String(e[l]),{...r,onResult:s},!0),p=d.state.negated||d.state.negatedExtglob;p&&a++;for(let h of t){let m=d(h,!0);(p?!m.isMatch:m.isMatch)&&(p?n.add(m.output):(n.delete(m.output),o.add(m.output)))}}let c=(a===e.length?[...i]:[...o]).filter(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};Le.match=Le;Le.matcher=(t,e)=>Kr(t,e);Le.isMatch=(t,e,r)=>Kr(e,r)(t);Le.any=Le.isMatch;Le.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,o=[],i=s=>{r.onResult&&r.onResult(s),o.push(s.output)},a=new Set(Le(t,e,{...r,onResult:i}));for(let s of o)a.has(s)||n.add(s);return[...n]};Le.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${eF.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>Le.contains(t,n,r));if(typeof e=="string"){if(QO(t)||QO(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return Le.isMatch(t,e,{...r,contains:!0})};Le.matchKeys=(t,e,r)=>{if(!fy.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=Le(Object.keys(t),e,r),o={};for(let i of n)o[i]=t[i];return o};Le.some=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Kr(String(o),r);if(n.some(a=>i(a)))return!0}return!1};Le.every=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Kr(String(o),r);if(!n.every(a=>i(a)))return!1}return!0};Le.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${eF.inspect(t)}"`);return[].concat(e).every(n=>Kr(n,r)(t))};Le.capture=(t,e,r)=>{let n=fy.isWindows(r),i=Kr.makeRe(String(t),{...r,capture:!0}).exec(n?fy.toPosixSlashes(e):e);if(i)return i.slice(1).map(a=>a===void 0?"":a)};Le.makeRe=(...t)=>Kr.makeRe(...t);Le.scan=(...t)=>Kr.scan(...t);Le.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let o of tF(String(n),e))r.push(Kr.parse(o,e));return r};Le.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!rF(t)?[t]:tF(t,e)};Le.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return Le.braces(t,{...e,expand:!0})};Le.hasBraces=rF;nF.exports=Le});var HF=S((lZ,Dn)=>{var $e=require("fs"),Cf=require("os"),yt=require("path"),xF=require("crypto"),Wr={fs:$e.constants,os:Cf.constants},AF="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",PF=/XXXXXX/,d7=3,$F=(Wr.O_CREAT||Wr.fs.O_CREAT)|(Wr.O_EXCL||Wr.fs.O_EXCL)|(Wr.O_RDWR||Wr.fs.O_RDWR),p7=Cf.platform()==="win32",h7=Wr.EBADF||Wr.os.errno.EBADF,m7=Wr.ENOENT||Wr.os.errno.ENOENT,IF=448,TF=384,g7="exit",ya=[],RF=$e.rmdirSync.bind($e),BF=!1;function y7(t,e){return $e.rm(t,{recursive:!0},e)}function NF(t){return $e.rmSync(t,{recursive:!0})}function yy(t,e){let r=Da(t,e),n=r[0],o=r[1];A7(n,function(i,a){if(i)return o(i);let s=a.tries;(function u(){try{let c=jF(a);$e.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 Dy(t){let e=Da(t),r=e[0],n=O7(r),o=n.tries;do{let i=jF(n);try{$e.statSync(i)}catch{return i}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function D7(t,e){let r=Da(t,e),n=r[0],o=r[1];yy(n,function(a,s){if(a)return o(a);$e.open(s,$F,n.mode||TF,function(c,l){if(c)return o(c);if(n.discardDescriptor)return $e.close(l,function(p){return o(p,s,void 0,my(s,-1,n,!1))});{let d=n.discardDescriptor||n.detachDescriptor;o(null,s,l,my(s,d?-1:l,n,!1))}})})}function b7(t){let e=Da(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,o=Dy(r),i=$e.openSync(o,$F,r.mode||TF);return r.discardDescriptor&&($e.closeSync(i),i=void 0),{name:o,fd:i,removeCallback:my(o,n?-1:i,r,!0)}}function w7(t,e){let r=Da(t,e),n=r[0],o=r[1];yy(n,function(a,s){if(a)return o(a);$e.mkdir(s,n.mode||IF,function(c){if(c)return o(c);o(null,s,LF(s,n,!1))})})}function v7(t){let e=Da(t),r=e[0],n=Dy(r);return $e.mkdirSync(n,r.mode||IF),{name:n,removeCallback:LF(n,r,!0)}}function C7(t,e){let r=function(n){if(n&&!gy(n))return e(n);e()};0<=t[0]?$e.close(t[0],function(){$e.unlink(t[1],r)}):$e.unlink(t[1],r)}function E7(t){let e=null;try{0<=t[0]&&$e.closeSync(t[0])}catch(r){if(!F7(r)&&!gy(r))throw r}finally{try{$e.unlinkSync(t[1])}catch(r){gy(r)||(e=r)}}if(e!==null)throw e}function my(t,e,r,n){let o=vf(E7,[e,t],n),i=vf(C7,[e,t],n,o);return r.keep||ya.unshift(o),n?o:i}function LF(t,e,r){let n=e.unsafeCleanup?y7:$e.rmdir.bind($e),o=e.unsafeCleanup?NF:RF,i=vf(o,t,r),a=vf(n,t,r,i);return e.keep||ya.unshift(i),r?i:a}function vf(t,e,r,n){let o=!1;return function i(a){if(!o){let s=n||i,u=ya.indexOf(s);return u>=0&&ya.splice(u,1),o=!0,r||t===RF||t===NF?t(e):t(e,a||function(){})}}}function _7(){if(BF)for(;ya.length;)try{ya[0]()}catch{}}function OF(t){let e=[],r=null;try{r=xF.randomBytes(t)}catch{r=xF.pseudoRandomBytes(t)}for(let n=0;n<t;n++)e.push(AF[r[n]%AF.length]);return e.join("")}function er(t){return typeof t>"u"}function Da(t,e){if(typeof t=="function")return[{},t];if(er(t))return[{},e];let r={};for(let n of Object.getOwnPropertyNames(t))r[n]=t[n];return[r,e]}function S7(t,e,r){let n=yt.isAbsolute(t)?t:yt.join(e,t);$e.stat(n,function(o){o?$e.realpath(yt.dirname(n),function(i,a){if(i)return r(i);r(null,yt.join(a,yt.basename(n)))}):$e.realpath(n,r)})}function x7(t,e){let r=yt.isAbsolute(t)?t:yt.join(e,t);try{return $e.statSync(r),$e.realpathSync(r)}catch{let o=$e.realpathSync(yt.dirname(r));return yt.join(o,yt.basename(r))}}function jF(t){let e=t.tmpdir;if(!er(t.name))return yt.join(e,t.dir,t.name);if(!er(t.template))return yt.join(e,t.dir,t.template).replace(PF,OF(6));let r=[t.prefix?t.prefix:"tmp","-",process.pid,"-",OF(12),t.postfix?"-"+t.postfix:""].join("");return yt.join(e,t.dir,r)}function UF(t){if(!er(t.name)){let e=t.name;if(yt.isAbsolute(e))throw new Error(`name option must not contain an absolute path, found "${e}".`);let r=yt.basename(e);if(r===".."||r==="."||r!==e)throw new Error(`name option must not contain a path, found "${e}".`)}if(!er(t.template)&&!t.template.match(PF))throw new Error(`Invalid template, found "${t.template}".`);if(!er(t.tries)&&isNaN(t.tries)||t.tries<0)throw new Error(`Invalid tries, found "${t.tries}".`);t.tries=er(t.name)?t.tries||d7:1,t.keep=!!t.keep,t.detachDescriptor=!!t.detachDescriptor,t.discardDescriptor=!!t.discardDescriptor,t.unsafeCleanup=!!t.unsafeCleanup,t.prefix=er(t.prefix)?"":t.prefix,t.postfix=er(t.postfix)?"":t.postfix}function FF(t,e,r,n){if(er(e))return n(null);S7(e,r,function(o,i){if(o)return n(o);let a=yt.relative(r,i);if(!i.startsWith(r))return n(new Error(`${t} option must be relative to "${r}", found "${a}".`));n(null,a)})}function kF(t,e,r){if(er(e))return;let n=x7(e,r),o=yt.relative(r,n);if(!n.startsWith(r))throw new Error(`${t} option must be relative to "${r}", found "${o}".`);return o}function A7(t,e){P7(t,function(r,n){if(r)return e(r);t.tmpdir=n;try{UF(t,n)}catch(o){return e(o)}FF("dir",t.dir,n,function(o,i){if(o)return e(o);t.dir=er(i)?"":i,FF("template",t.template,n,function(a,s){if(a)return e(a);t.template=s,e(null,t)})})})}function O7(t){let e=t.tmpdir=qF(t);UF(t,e);let r=kF("dir",t.dir,e);return t.dir=er(r)?"":r,t.template=kF("template",t.template,e),t}function F7(t){return MF(t,-h7,"EBADF")}function gy(t){return MF(t,-m7,"ENOENT")}function MF(t,e,r){return p7?t.code===r:t.code===r&&t.errno===e}function k7(){BF=!0}function P7(t,e){return $e.realpath(t&&t.tmpdir||Cf.tmpdir(),e)}function qF(t){return $e.realpathSync(t&&t.tmpdir||Cf.tmpdir())}process.addListener(g7,_7);Object.defineProperty(Dn.exports,"tmpdir",{enumerable:!0,configurable:!1,get:function(){return qF()}});Dn.exports.dir=w7;Dn.exports.dirSync=v7;Dn.exports.file=D7;Dn.exports.fileSync=b7;Dn.exports.tmpName=yy;Dn.exports.tmpNameSync=Dy;Dn.exports.setGracefulCleanup=k7});var Sf=require("node:process");var qy=ue(My(),1),{program:ot,createCommand:fq,createArgument:dq,createOption:pq,CommanderError:hq,InvalidArgumentError:mq,InvalidOptionArgumentError:gq,Command:yq,Argument:Dq,Option:bq,Help:wq}=qy.default;var Dr={name:"@capgo/cli",version:"7.44.0",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^7.4.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24.9.1","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};var ua=require("node:fs");var Dt=ue(Kf(),1),zo=require("node:process"),wn=ue(require("node:readline"),1),Xf=ue(require("node:readline"),1),Qy=require("node:stream"),eD=ue(Wf(),1);function A2({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 O2=A2();function tD(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(O2,"")}function rD(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var nD={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],d=e.length(l);if(s>=o-(d==2?1:0))if(s+d<=i)a+=l;else break;s+=d}return a}})(nD);var F2=nD.exports,k2=rD(F2),P2=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},$2=rD(P2);function Ca(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=tD(t),t.length===0))return 0;t=t.replace($2()," ");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(k2.eastAsianWidth(o)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}var Yf=10,Ky=(t=0)=>e=>`\x1B[${e+t}m`,Gy=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,Wy=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,je={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(je.modifier);var I2=Object.keys(je.color),T2=Object.keys(je.bgColor);[...I2,...T2];function R2(){let t=new Map;for(let[e,r]of Object.entries(je)){for(let[n,o]of Object.entries(r))je[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=je[n],t.set(o[0],o[1]);Object.defineProperty(je,e,{value:r,enumerable:!1})}return Object.defineProperty(je,"codes",{value:t,enumerable:!1}),je.color.close="\x1B[39m",je.bgColor.close="\x1B[49m",je.color.ansi=Ky(),je.color.ansi256=Gy(),je.color.ansi16m=Wy(),je.bgColor.ansi=Ky(Yf),je.bgColor.ansi256=Gy(Yf),je.bgColor.ansi16m=Wy(Yf),Object.defineProperties(je,{rgbToAnsi256:{value:(e,r,n)=>e===r&&r===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5),enumerable:!1},hexToRgb:{value:e=>{let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>je.rgbToAnsi256(...je.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:e=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,n,o;if(e>=232)r=((e-232)*10+8)/255,n=r,o=r;else{e-=16;let s=e%36;r=Math.floor(e/36)/5,n=Math.floor(s/6)/5,o=s%6/5}let i=Math.max(r,n,o)*2;if(i===0)return 30;let a=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(r));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,r,n)=>je.ansi256ToAnsi(je.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>je.ansi256ToAnsi(je.hexToAnsi256(e)),enumerable:!1}}),je}var B2=R2(),cu=new Set(["\x1B","\x9B"]),N2=39,Qf="\x07",oD="[",L2="]",iD="m",ed=`${L2}8;;`,Yy=t=>`${cu.values().next().value}${oD}${t}${iD}`,Jy=t=>`${cu.values().next().value}${ed}${t}${Qf}`,j2=t=>t.split(" ").map(e=>Ca(e)),Jf=(t,e,r)=>{let n=[...e],o=!1,i=!1,a=Ca(tD(t[t.length-1]));for(let[s,u]of n.entries()){let c=Ca(u);if(a+c<=r?t[t.length-1]+=u:(t.push(u),a=0),cu.has(u)&&(o=!0,i=n.slice(s+1).join("").startsWith(ed)),o){i?u===Qf&&(o=!1,i=!1):u===iD&&(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())},U2=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(Ca(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},M2=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let n="",o,i,a=j2(t),s=[""];for(let[c,l]of t.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let d=Ca(s[s.length-1]);if(c!==0&&(d>=e&&(r.wordWrap===!1||r.trim===!1)&&(s.push(""),d=0),(d>0||r.trim===!1)&&(s[s.length-1]+=" ",d++)),r.hard&&a[c]>e){let p=e-d,h=1+Math.floor((a[c]-p-1)/e);Math.floor((a[c]-1)/e)<h&&s.push(""),Jf(s,l,e);continue}if(d+a[c]>e&&d>0&&a[c]>0){if(r.wordWrap===!1&&d<e){Jf(s,l,e);continue}s.push("")}if(d+a[c]>e&&r.wordWrap===!1){Jf(s,l,e);continue}s[s.length-1]+=l}r.trim!==!1&&(s=s.map(c=>U2(c)));let u=[...s.join(`
|
|
107
|
+
`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var FO=S((oX,OO)=>{"use strict";var zM=df(),{MAX_LENGTH:SO,CHAR_BACKSLASH:ey,CHAR_BACKTICK:KM,CHAR_COMMA:GM,CHAR_DOT:WM,CHAR_LEFT_PARENTHESES:YM,CHAR_RIGHT_PARENTHESES:JM,CHAR_LEFT_CURLY_BRACE:XM,CHAR_RIGHT_CURLY_BRACE:ZM,CHAR_LEFT_SQUARE_BRACKET:xO,CHAR_RIGHT_SQUARE_BRACKET:AO,CHAR_DOUBLE_QUOTE:QM,CHAR_SINGLE_QUOTE:e9,CHAR_NO_BREAK_SPACE:t9,CHAR_ZERO_WIDTH_NOBREAK_SPACE:r9}=_O(),n9=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(SO,r.maxLength):SO;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,d=0,p,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],p=h(),!(p===r9||p===t9)){if(p===ey){m({type:"text",value:(e.keepEscaping?p:"")+h()});continue}if(p===AO){m({type:"text",value:"\\"+p});continue}if(p===xO){u++;let b;for(;l<c&&(b=h());){if(p+=b,b===xO){u++;continue}if(b===ey){p+=h();continue}if(b===AO&&(u--,u===0))break}m({type:"text",value:p});continue}if(p===YM){a=m({type:"paren",nodes:[]}),i.push(a),m({type:"text",value:p});continue}if(p===JM){if(a.type!=="paren"){m({type:"text",value:p});continue}a=i.pop(),m({type:"text",value:p}),a=i[i.length-1];continue}if(p===QM||p===e9||p===KM){let b=p,y;for(e.keepQuotes!==!0&&(p="");l<c&&(y=h());){if(y===ey){p+=y+h();continue}if(y===b){e.keepQuotes===!0&&(p+=y);break}p+=y}m({type:"text",value:p});continue}if(p===XM){d++;let y={type:"brace",open:!0,close:!1,dollar:s.value&&s.value.slice(-1)==="$"||a.dollar===!0,depth:d,commas:0,ranges:0,nodes:[]};a=m(y),i.push(a),m({type:"open",value:p});continue}if(p===ZM){if(a.type!=="brace"){m({type:"text",value:p});continue}let b="close";a=i.pop(),a.close=!0,m({type:b,value:p}),d--,a=i[i.length-1];continue}if(p===GM&&d>0){if(a.ranges>0){a.ranges=0;let b=a.nodes.shift();a.nodes=[b,{type:"text",value:zM(a)}]}m({type:"comma",value:p}),a.commas++;continue}if(p===WM&&d>0&&a.commas===0){let b=a.nodes;if(d===0||b.length===0){m({type:"text",value:p});continue}if(s.type==="dot"){if(a.range=[],s.value+=p,s.type="range",a.nodes.length!==3&&a.nodes.length!==5){a.invalid=!0,a.ranges=0,s.type="text";continue}a.ranges++,a.args=[];continue}if(s.type==="range"){b.pop();let y=b[b.length-1];y.value+=s.value+p,s=y,a.ranges--;continue}m({type:"dot",value:p});continue}m({type:"text",value:p})}do if(a=i.pop(),a.type!=="root"){a.nodes.forEach(v=>{v.nodes||(v.type==="open"&&(v.isOpen=!0),v.type==="close"&&(v.isClose=!0),v.nodes||(v.type="text"),v.invalid=!0)});let b=i[i.length-1],y=b.nodes.indexOf(a);b.nodes.splice(y,1,...a.nodes)}while(i.length>0);return m({type:"eos"}),o};OO.exports=n9});var $O=S((iX,PO)=>{"use strict";var kO=df(),o9=bO(),i9=CO(),a9=FO(),Zt=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let o=Zt.create(n,e);Array.isArray(o)?r.push(...o):r.push(o)}else r=[].concat(Zt.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Zt.parse=(t,e={})=>a9(t,e);Zt.stringify=(t,e={})=>kO(typeof t=="string"?Zt.parse(t,e):t,e);Zt.compile=(t,e={})=>(typeof t=="string"&&(t=Zt.parse(t,e)),o9(t,e));Zt.expand=(t,e={})=>{typeof t=="string"&&(t=Zt.parse(t,e));let r=i9(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Zt.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Zt.compile(t,e):Zt.expand(t,e);PO.exports=Zt});var Vs=S((aX,NO)=>{"use strict";var s9=require("path"),zr="\\\\/",IO=`[^${zr}]`,yn="\\.",u9="\\+",c9="\\?",mf="\\/",l9="(?=.)",TO="[^/]",ty=`(?:${mf}|$)`,RO=`(?:^|${mf})`,ry=`${yn}{1,2}${ty}`,f9=`(?!${yn})`,d9=`(?!${RO}${ry})`,p9=`(?!${yn}{0,1}${ty})`,h9=`(?!${ry})`,m9=`[^.${mf}]`,g9=`${TO}*?`,BO={DOT_LITERAL:yn,PLUS_LITERAL:u9,QMARK_LITERAL:c9,SLASH_LITERAL:mf,ONE_CHAR:l9,QMARK:TO,END_ANCHOR:ty,DOTS_SLASH:ry,NO_DOT:f9,NO_DOTS:d9,NO_DOT_SLASH:p9,NO_DOTS_SLASH:h9,QMARK_NO_DOT:m9,STAR:g9,START_ANCHOR:RO},y9={...BO,SLASH_LITERAL:`[${zr}]`,QMARK:IO,STAR:`${IO}*?`,DOTS_SLASH:`${yn}{1,2}(?:[${zr}]|$)`,NO_DOT:`(?!${yn})`,NO_DOTS:`(?!(?:^|[${zr}])${yn}{1,2}(?:[${zr}]|$))`,NO_DOT_SLASH:`(?!${yn}{0,1}(?:[${zr}]|$))`,NO_DOTS_SLASH:`(?!${yn}{1,2}(?:[${zr}]|$))`,QMARK_NO_DOT:`[^.${zr}]`,START_ANCHOR:`(?:^|[${zr}])`,END_ANCHOR:`(?:[${zr}]|$)`},D9={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"};NO.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:D9,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:s9.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?y9:BO}}});var zs=S(Ht=>{"use strict";var b9=require("path"),w9=process.platform==="win32",{REGEX_BACKSLASH:v9,REGEX_REMOVE_BACKSLASH:C9,REGEX_SPECIAL_CHARS:E9,REGEX_SPECIAL_CHARS_GLOBAL:_9}=Vs();Ht.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Ht.hasRegexChars=t=>E9.test(t);Ht.isRegexChar=t=>t.length===1&&Ht.hasRegexChars(t);Ht.escapeRegex=t=>t.replace(_9,"\\$1");Ht.toPosixSlashes=t=>t.replace(v9,"/");Ht.removeBackslashes=t=>t.replace(C9,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:w9===!0||b9.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 zO=S((uX,VO)=>{"use strict";var LO=zs(),{CHAR_ASTERISK:ny,CHAR_AT:S9,CHAR_BACKWARD_SLASH:Ks,CHAR_COMMA:x9,CHAR_DOT:oy,CHAR_EXCLAMATION_MARK:iy,CHAR_FORWARD_SLASH:HO,CHAR_LEFT_CURLY_BRACE:ay,CHAR_LEFT_PARENTHESES:sy,CHAR_LEFT_SQUARE_BRACKET:A9,CHAR_PLUS:O9,CHAR_QUESTION_MARK:jO,CHAR_RIGHT_CURLY_BRACE:F9,CHAR_RIGHT_PARENTHESES:UO,CHAR_RIGHT_SQUARE_BRACKET:k9}=Vs(),MO=t=>t===HO||t===Ks,qO=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},P9=(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,d=0,p=!1,h=!1,m=!1,b=!1,y=!1,v=!1,E=!1,g=!1,_=!1,x=!1,$=0,k,B,T={value:"",depth:0,isGlob:!1},L=()=>c>=n,A=()=>u.charCodeAt(c+1),j=()=>(k=B,u.charCodeAt(++c));for(;c<n;){B=j();let w;if(B===Ks){E=T.backslashes=!0,B=j(),B===ay&&(v=!0);continue}if(v===!0||B===ay){for($++;L()!==!0&&(B=j());){if(B===Ks){E=T.backslashes=!0,j();continue}if(B===ay){$++;continue}if(v!==!0&&B===oy&&(B=j())===oy){if(p=T.isBrace=!0,m=T.isGlob=!0,x=!0,o===!0)continue;break}if(v!==!0&&B===x9){if(p=T.isBrace=!0,m=T.isGlob=!0,x=!0,o===!0)continue;break}if(B===F9&&($--,$===0)){v=!1,p=T.isBrace=!0,x=!0;break}}if(o===!0)continue;break}if(B===HO){if(i.push(c),a.push(T),T={value:"",depth:0,isGlob:!1},x===!0)continue;if(k===oy&&c===l+1){l+=2;continue}d=c+1;continue}if(r.noext!==!0&&(B===O9||B===S9||B===ny||B===jO||B===iy)===!0&&A()===sy){if(m=T.isGlob=!0,b=T.isExtglob=!0,x=!0,B===iy&&c===l&&(_=!0),o===!0){for(;L()!==!0&&(B=j());){if(B===Ks){E=T.backslashes=!0,B=j();continue}if(B===UO){m=T.isGlob=!0,x=!0;break}}continue}break}if(B===ny){if(k===ny&&(y=T.isGlobstar=!0),m=T.isGlob=!0,x=!0,o===!0)continue;break}if(B===jO){if(m=T.isGlob=!0,x=!0,o===!0)continue;break}if(B===A9){for(;L()!==!0&&(w=j());){if(w===Ks){E=T.backslashes=!0,j();continue}if(w===k9){h=T.isBracket=!0,m=T.isGlob=!0,x=!0;break}}if(o===!0)continue;break}if(r.nonegate!==!0&&B===iy&&c===l){g=T.negated=!0,l++;continue}if(r.noparen!==!0&&B===sy){if(m=T.isGlob=!0,o===!0){for(;L()!==!0&&(B=j());){if(B===sy){E=T.backslashes=!0,B=j();continue}if(B===UO){x=!0;break}}continue}break}if(m===!0){if(x=!0,o===!0)continue;break}}r.noext===!0&&(b=!1,m=!1);let M=u,W="",F="";l>0&&(W=u.slice(0,l),u=u.slice(l),d-=l),M&&m===!0&&d>0?(M=u.slice(0,d),F=u.slice(d)):m===!0?(M="",F=u):M=u,M&&M!==""&&M!=="/"&&M!==u&&MO(M.charCodeAt(M.length-1))&&(M=M.slice(0,-1)),r.unescape===!0&&(F&&(F=LO.removeBackslashes(F)),M&&E===!0&&(M=LO.removeBackslashes(M)));let D={prefix:W,input:t,start:l,base:M,glob:F,isBrace:p,isBracket:h,isGlob:m,isExtglob:b,isGlobstar:y,negated:g,negatedExtglob:_};if(r.tokens===!0&&(D.maxDepth=0,MO(B)||a.push(T),D.tokens=a),r.parts===!0||r.tokens===!0){let w;for(let C=0;C<i.length;C++){let O=w?w+1:l,R=i[C],I=t.slice(O,R);r.tokens&&(C===0&&l!==0?(a[C].isPrefix=!0,a[C].value=W):a[C].value=I,qO(a[C]),D.maxDepth+=a[C].depth),(C!==0||I!=="")&&s.push(I),w=R}if(w&&w+1<t.length){let C=t.slice(w+1);s.push(C),r.tokens&&(a[a.length-1].value=C,qO(a[a.length-1]),D.maxDepth+=a[a.length-1].depth)}D.slashes=i,D.parts=s}return D};VO.exports=P9});var WO=S((cX,GO)=>{"use strict";var gf=Vs(),Qt=zs(),{MAX_LENGTH:yf,POSIX_REGEX_SOURCE:$9,REGEX_NON_SPECIAL_CHARS:I9,REGEX_SPECIAL_CHARS_BACKREF:T9,REPLACEMENTS:KO}=gf,R9=(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=>Qt.escapeRegex(o)).join("..")}return r},ma=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,uy=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=KO[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(yf,r.maxLength):yf,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=Qt.isWindows(e),c=gf.globChars(u),l=gf.extglobChars(c),{DOT_LITERAL:d,PLUS_LITERAL:p,SLASH_LITERAL:h,ONE_CHAR:m,DOTS_SLASH:b,NO_DOT:y,NO_DOT_SLASH:v,NO_DOTS_SLASH:E,QMARK:g,QMARK_NO_DOT:_,STAR:x,START_ANCHOR:$}=c,k=G=>`(${s}(?:(?!${$}${G.dot?b:d}).)*?)`,B=r.dot?"":y,T=r.dot?g:_,L=r.bash===!0?k(r):x;r.capture&&(L=`(${L})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:a};t=Qt.removePrefix(t,A),o=t.length;let j=[],M=[],W=[],F=i,D,w=()=>A.index===o-1,C=A.peek=(G=1)=>t[A.index+G],O=A.advance=()=>t[++A.index]||"",R=()=>t.slice(A.index+1),I=(G="",Se=0)=>{A.consumed+=G,A.index+=Se},q=G=>{A.output+=G.output!=null?G.output:G.value,I(G.value)},P=()=>{let G=1;for(;C()==="!"&&(C(2)!=="("||C(3)==="?");)O(),A.start++,G++;return G%2===0?!1:(A.negated=!0,A.start++,!0)},N=G=>{A[G]++,W.push(G)},z=G=>{A[G]--,W.pop()},H=G=>{if(F.type==="globstar"){let Se=A.braces>0&&(G.type==="comma"||G.type==="brace"),V=G.extglob===!0||j.length&&(G.type==="pipe"||G.type==="paren");G.type!=="slash"&&G.type!=="paren"&&!Se&&!V&&(A.output=A.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=L,A.output+=F.output)}if(j.length&&G.type!=="paren"&&(j[j.length-1].inner+=G.value),(G.value||G.output)&&q(G),F&&F.type==="text"&&G.type==="text"){F.value+=G.value,F.output=(F.output||"")+G.value;return}G.prev=F,a.push(G),F=G},se=(G,Se)=>{let V={...l[Se],conditions:1,inner:""};V.prev=F,V.parens=A.parens,V.output=A.output;let ce=(r.capture?"(":"")+V.open;N("parens"),H({type:G,value:Se,output:A.output?"":m}),H({type:"paren",extglob:!0,value:O(),output:ce}),j.push(V)},zt=G=>{let Se=G.close+(r.capture?")":""),V;if(G.type==="negate"){let ce=L;if(G.inner&&G.inner.length>1&&G.inner.includes("/")&&(ce=k(r)),(ce!==L||w()||/^\)+$/.test(R()))&&(Se=G.close=`)$))${ce}`),G.inner.includes("*")&&(V=R())&&/^\.[^\\/.]+$/.test(V)){let qe=uy(V,{...e,fastpaths:!1}).output;Se=G.close=`)${qe})${ce})`}G.prev.type==="bos"&&(A.negatedExtglob=!0)}H({type:"paren",extglob:!0,value:D,output:Se}),z("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let G=!1,Se=t.replace(T9,(V,ce,qe,Et,rt,Af)=>Et==="\\"?(G=!0,V):Et==="?"?ce?ce+Et+(rt?g.repeat(rt.length):""):Af===0?T+(rt?g.repeat(rt.length):""):g.repeat(qe.length):Et==="."?d.repeat(qe.length):Et==="*"?ce?ce+Et+(rt?L:""):L:ce?V:`\\${V}`);return G===!0&&(r.unescape===!0?Se=Se.replace(/\\/g,""):Se=Se.replace(/\\+/g,V=>V.length%2===0?"\\\\":V?"\\":"")),Se===t&&r.contains===!0?(A.output=t,A):(A.output=Qt.wrapOutput(Se,A,e),A)}for(;!w();){if(D=O(),D==="\0")continue;if(D==="\\"){let V=C();if(V==="/"&&r.bash!==!0||V==="."||V===";")continue;if(!V){D+="\\",H({type:"text",value:D});continue}let ce=/^\\+/.exec(R()),qe=0;if(ce&&ce[0].length>2&&(qe=ce[0].length,A.index+=qe,qe%2!==0&&(D+="\\")),r.unescape===!0?D=O():D+=O(),A.brackets===0){H({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(r.posix!==!1&&D===":"){let V=F.value.slice(1);if(V.includes("[")&&(F.posix=!0,V.includes(":"))){let ce=F.value.lastIndexOf("["),qe=F.value.slice(0,ce),Et=F.value.slice(ce+2),rt=$9[Et];if(rt){F.value=qe+rt,A.backtrack=!0,O(),!i.output&&a.indexOf(F)===1&&(i.output=m);continue}}}(D==="["&&C()!==":"||D==="-"&&C()==="]")&&(D=`\\${D}`),D==="]"&&(F.value==="["||F.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&F.value==="["&&(D="^"),F.value+=D,q({value:D});continue}if(A.quotes===1&&D!=='"'){D=Qt.escapeRegex(D),F.value+=D,q({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&H({type:"text",value:D});continue}if(D==="("){N("parens"),H({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(ma("opening","("));let V=j[j.length-1];if(V&&A.parens===V.parens+1){zt(j.pop());continue}H({type:"paren",value:D,output:A.parens?")":"\\)"}),z("parens");continue}if(D==="["){if(r.nobracket===!0||!R().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(ma("closing","]"));D=`\\${D}`}else N("brackets");H({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){H({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(ma("opening","["));H({type:"text",value:D,output:`\\${D}`});continue}z("brackets");let V=F.value.slice(1);if(F.posix!==!0&&V[0]==="^"&&!V.includes("/")&&(D=`/${D}`),F.value+=D,q({value:D}),r.literalBrackets===!1||Qt.hasRegexChars(V))continue;let ce=Qt.escapeRegex(F.value);if(A.output=A.output.slice(0,-F.value.length),r.literalBrackets===!0){A.output+=ce,F.value=ce;continue}F.value=`(${s}${ce}|${F.value})`,A.output+=F.value;continue}if(D==="{"&&r.nobrace!==!0){N("braces");let V={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};M.push(V),H(V);continue}if(D==="}"){let V=M[M.length-1];if(r.nobrace===!0||!V){H({type:"text",value:D,output:D});continue}let ce=")";if(V.dots===!0){let qe=a.slice(),Et=[];for(let rt=qe.length-1;rt>=0&&(a.pop(),qe[rt].type!=="brace");rt--)qe[rt].type!=="dots"&&Et.unshift(qe[rt].value);ce=R9(Et,r),A.backtrack=!0}if(V.comma!==!0&&V.dots!==!0){let qe=A.output.slice(0,V.outputIndex),Et=A.tokens.slice(V.tokensIndex);V.value=V.output="\\{",D=ce="\\}",A.output=qe;for(let rt of Et)A.output+=rt.output||rt.value}H({type:"brace",value:D,output:ce}),z("braces"),M.pop();continue}if(D==="|"){j.length>0&&j[j.length-1].conditions++,H({type:"text",value:D});continue}if(D===","){let V=D,ce=M[M.length-1];ce&&W[W.length-1]==="braces"&&(ce.comma=!0,V="|"),H({type:"comma",value:D,output:V});continue}if(D==="/"){if(F.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",a.pop(),F=i;continue}H({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&F.type==="dot"){F.value==="."&&(F.output=d);let V=M[M.length-1];F.type="dots",F.output+=D,F.value+=D,V.dots=!0;continue}if(A.braces+A.parens===0&&F.type!=="bos"&&F.type!=="slash"){H({type:"text",value:D,output:d});continue}H({type:"dot",value:D,output:d});continue}if(D==="?"){if(!(F&&F.value==="(")&&r.noextglob!==!0&&C()==="("&&C(2)!=="?"){se("qmark",D);continue}if(F&&F.type==="paren"){let ce=C(),qe=D;if(ce==="<"&&!Qt.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(F.value==="("&&!/[!=<:]/.test(ce)||ce==="<"&&!/<([!=]|\w+>)/.test(R()))&&(qe=`\\${D}`),H({type:"text",value:D,output:qe});continue}if(r.dot!==!0&&(F.type==="slash"||F.type==="bos")){H({type:"qmark",value:D,output:_});continue}H({type:"qmark",value:D,output:g});continue}if(D==="!"){if(r.noextglob!==!0&&C()==="("&&(C(2)!=="?"||!/[!=<:]/.test(C(3)))){se("negate",D);continue}if(r.nonegate!==!0&&A.index===0){P();continue}}if(D==="+"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){se("plus",D);continue}if(F&&F.value==="("||r.regex===!1){H({type:"plus",value:D,output:p});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||A.parens>0){H({type:"plus",value:D});continue}H({type:"plus",value:p});continue}if(D==="@"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){H({type:"at",extglob:!0,value:D,output:""});continue}H({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let V=I9.exec(R());V&&(D+=V[0],A.index+=V[0].length),H({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=L,A.backtrack=!0,A.globstar=!0,I(D);continue}let G=R();if(r.noextglob!==!0&&/^\([^?]/.test(G)){se("star",D);continue}if(F.type==="star"){if(r.noglobstar===!0){I(D);continue}let V=F.prev,ce=V.prev,qe=V.type==="slash"||V.type==="bos",Et=ce&&(ce.type==="star"||ce.type==="globstar");if(r.bash===!0&&(!qe||G[0]&&G[0]!=="/")){H({type:"star",value:D,output:""});continue}let rt=A.braces>0&&(V.type==="comma"||V.type==="brace"),Af=j.length&&(V.type==="pipe"||V.type==="paren");if(!qe&&V.type!=="paren"&&!rt&&!Af){H({type:"star",value:D,output:""});continue}for(;G.slice(0,3)==="/**";){let Xs=t[A.index+4];if(Xs&&Xs!=="/")break;G=G.slice(3),I("/**",3)}if(V.type==="bos"&&w()){F.type="globstar",F.value+=D,F.output=k(r),A.output=F.output,A.globstar=!0,I(D);continue}if(V.type==="slash"&&V.prev.type!=="bos"&&!Et&&w()){A.output=A.output.slice(0,-(V.output+F.output).length),V.output=`(?:${V.output}`,F.type="globstar",F.output=k(r)+(r.strictSlashes?")":"|$)"),F.value+=D,A.globstar=!0,A.output+=V.output+F.output,I(D);continue}if(V.type==="slash"&&V.prev.type!=="bos"&&G[0]==="/"){let Xs=G[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(V.output+F.output).length),V.output=`(?:${V.output}`,F.type="globstar",F.output=`${k(r)}${h}|${h}${Xs})`,F.value+=D,A.output+=V.output+F.output,A.globstar=!0,I(D+O()),H({type:"slash",value:"/",output:""});continue}if(V.type==="bos"&&G[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${h}|${k(r)}${h})`,A.output=F.output,A.globstar=!0,I(D+O()),H({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-F.output.length),F.type="globstar",F.output=k(r),F.value+=D,A.output+=F.output,A.globstar=!0,I(D);continue}let Se={type:"star",value:D,output:L};if(r.bash===!0){Se.output=".*?",(F.type==="bos"||F.type==="slash")&&(Se.output=B+Se.output),H(Se);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&r.regex===!0){Se.output=D,H(Se);continue}(A.index===A.start||F.type==="slash"||F.type==="dot")&&(F.type==="dot"?(A.output+=v,F.output+=v):r.dot===!0?(A.output+=E,F.output+=E):(A.output+=B,F.output+=B),C()!=="*"&&(A.output+=m,F.output+=m)),H(Se)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(ma("closing","]"));A.output=Qt.escapeLast(A.output,"["),z("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(ma("closing",")"));A.output=Qt.escapeLast(A.output,"("),z("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(ma("closing","}"));A.output=Qt.escapeLast(A.output,"{"),z("braces")}if(r.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket")&&H({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let G of A.tokens)A.output+=G.output!=null?G.output:G.value,G.suffix&&(A.output+=G.suffix)}return A};uy.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(yf,r.maxLength):yf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);t=KO[t]||t;let i=Qt.isWindows(e),{DOT_LITERAL:a,SLASH_LITERAL:s,ONE_CHAR:u,DOTS_SLASH:c,NO_DOT:l,NO_DOTS:d,NO_DOTS_SLASH:p,STAR:h,START_ANCHOR:m}=gf.globChars(i),b=r.dot?d:l,y=r.dot?p:l,v=r.capture?"":"?:",E={negated:!1,prefix:""},g=r.bash===!0?".*?":h;r.capture&&(g=`(${g})`);let _=B=>B.noglobstar===!0?g:`(${v}(?:(?!${m}${B.dot?c:a}).)*?)`,x=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}${y}${g}`;case"**":return b+_(r);case"**/*":return`(?:${b}${_(r)}${s})?${y}${u}${g}`;case"**/*.*":return`(?:${b}${_(r)}${s})?${y}${g}${a}${u}${g}`;case"**/.*":return`(?:${b}${_(r)}${s})?${a}${u}${g}`;default:{let T=/^(.*?)\.(\w+)$/.exec(B);if(!T)return;let L=x(T[1]);return L?L+a+T[2]:void 0}}},$=Qt.removePrefix(t,E),k=x($);return k&&r.strictSlashes!==!0&&(k+=`${s}?`),k};GO.exports=uy});var JO=S((lX,YO)=>{"use strict";var B9=require("path"),N9=zO(),cy=WO(),ly=zs(),L9=Vs(),j9=t=>t&&typeof t=="object"&&!Array.isArray(t),et=(t,e,r=!1)=>{if(Array.isArray(t)){let l=t.map(p=>et(p,e,r));return p=>{for(let h of l){let m=h(p);if(m)return m}return!1}}let n=j9(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=ly.isWindows(e),a=n?et.compileRe(t,e):et.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=et(o.ignore,l,r)}let c=(l,d=!1)=>{let{isMatch:p,match:h,output:m}=et.test(l,a,e,{glob:t,posix:i}),b={glob:t,state:s,regex:a,posix:i,input:l,output:m,match:h,isMatch:p};return typeof o.onResult=="function"&&o.onResult(b),p===!1?(b.isMatch=!1,d?b:!1):u(l)?(typeof o.onIgnore=="function"&&o.onIgnore(b),b.isMatch=!1,d?b:!1):(typeof o.onMatch=="function"&&o.onMatch(b),d?b:!0)};return r&&(c.state=s),c};et.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?ly.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=et.matchBase(t,e,r,o):s=e.exec(u)),{isMatch:!!s,match:s,output:u}};et.matchBase=(t,e,r,n=ly.isWindows(r))=>(e instanceof RegExp?e:et.makeRe(e,r)).test(B9.basename(t));et.isMatch=(t,e,r)=>et(e,r)(t);et.parse=(t,e)=>Array.isArray(t)?t.map(r=>et.parse(r,e)):cy(t,{...e,fastpaths:!1});et.scan=(t,e)=>N9(t,e);et.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=et.toRegex(s,e);return n===!0&&(u.state=t),u};et.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=cy.fastpaths(t,e)),o.output||(o=cy(t,e)),et.compileRe(o,e,r,n)};et.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/$^/}};et.constants=L9;YO.exports=et});var ZO=S((fX,XO)=>{"use strict";XO.exports=JO()});var oF=S((dX,nF)=>{"use strict";var eF=require("util"),tF=$O(),Kr=ZO(),fy=zs(),QO=t=>t===""||t==="./",rF=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},Le=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,o=new Set,i=new Set,a=0,s=l=>{i.add(l.output),r&&r.onResult&&r.onResult(l)};for(let l=0;l<e.length;l++){let d=Kr(String(e[l]),{...r,onResult:s},!0),p=d.state.negated||d.state.negatedExtglob;p&&a++;for(let h of t){let m=d(h,!0);(p?!m.isMatch:m.isMatch)&&(p?n.add(m.output):(n.delete(m.output),o.add(m.output)))}}let c=(a===e.length?[...i]:[...o]).filter(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};Le.match=Le;Le.matcher=(t,e)=>Kr(t,e);Le.isMatch=(t,e,r)=>Kr(e,r)(t);Le.any=Le.isMatch;Le.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,o=[],i=s=>{r.onResult&&r.onResult(s),o.push(s.output)},a=new Set(Le(t,e,{...r,onResult:i}));for(let s of o)a.has(s)||n.add(s);return[...n]};Le.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${eF.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>Le.contains(t,n,r));if(typeof e=="string"){if(QO(t)||QO(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return Le.isMatch(t,e,{...r,contains:!0})};Le.matchKeys=(t,e,r)=>{if(!fy.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=Le(Object.keys(t),e,r),o={};for(let i of n)o[i]=t[i];return o};Le.some=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Kr(String(o),r);if(n.some(a=>i(a)))return!0}return!1};Le.every=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Kr(String(o),r);if(!n.every(a=>i(a)))return!1}return!0};Le.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${eF.inspect(t)}"`);return[].concat(e).every(n=>Kr(n,r)(t))};Le.capture=(t,e,r)=>{let n=fy.isWindows(r),i=Kr.makeRe(String(t),{...r,capture:!0}).exec(n?fy.toPosixSlashes(e):e);if(i)return i.slice(1).map(a=>a===void 0?"":a)};Le.makeRe=(...t)=>Kr.makeRe(...t);Le.scan=(...t)=>Kr.scan(...t);Le.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let o of tF(String(n),e))r.push(Kr.parse(o,e));return r};Le.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!rF(t)?[t]:tF(t,e)};Le.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return Le.braces(t,{...e,expand:!0})};Le.hasBraces=rF;nF.exports=Le});var HF=S((lZ,Dn)=>{var $e=require("fs"),Cf=require("os"),yt=require("path"),xF=require("crypto"),Wr={fs:$e.constants,os:Cf.constants},AF="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",PF=/XXXXXX/,d7=3,$F=(Wr.O_CREAT||Wr.fs.O_CREAT)|(Wr.O_EXCL||Wr.fs.O_EXCL)|(Wr.O_RDWR||Wr.fs.O_RDWR),p7=Cf.platform()==="win32",h7=Wr.EBADF||Wr.os.errno.EBADF,m7=Wr.ENOENT||Wr.os.errno.ENOENT,IF=448,TF=384,g7="exit",ya=[],RF=$e.rmdirSync.bind($e),BF=!1;function y7(t,e){return $e.rm(t,{recursive:!0},e)}function NF(t){return $e.rmSync(t,{recursive:!0})}function yy(t,e){let r=Da(t,e),n=r[0],o=r[1];A7(n,function(i,a){if(i)return o(i);let s=a.tries;(function u(){try{let c=jF(a);$e.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 Dy(t){let e=Da(t),r=e[0],n=O7(r),o=n.tries;do{let i=jF(n);try{$e.statSync(i)}catch{return i}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function D7(t,e){let r=Da(t,e),n=r[0],o=r[1];yy(n,function(a,s){if(a)return o(a);$e.open(s,$F,n.mode||TF,function(c,l){if(c)return o(c);if(n.discardDescriptor)return $e.close(l,function(p){return o(p,s,void 0,my(s,-1,n,!1))});{let d=n.discardDescriptor||n.detachDescriptor;o(null,s,l,my(s,d?-1:l,n,!1))}})})}function b7(t){let e=Da(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,o=Dy(r),i=$e.openSync(o,$F,r.mode||TF);return r.discardDescriptor&&($e.closeSync(i),i=void 0),{name:o,fd:i,removeCallback:my(o,n?-1:i,r,!0)}}function w7(t,e){let r=Da(t,e),n=r[0],o=r[1];yy(n,function(a,s){if(a)return o(a);$e.mkdir(s,n.mode||IF,function(c){if(c)return o(c);o(null,s,LF(s,n,!1))})})}function v7(t){let e=Da(t),r=e[0],n=Dy(r);return $e.mkdirSync(n,r.mode||IF),{name:n,removeCallback:LF(n,r,!0)}}function C7(t,e){let r=function(n){if(n&&!gy(n))return e(n);e()};0<=t[0]?$e.close(t[0],function(){$e.unlink(t[1],r)}):$e.unlink(t[1],r)}function E7(t){let e=null;try{0<=t[0]&&$e.closeSync(t[0])}catch(r){if(!F7(r)&&!gy(r))throw r}finally{try{$e.unlinkSync(t[1])}catch(r){gy(r)||(e=r)}}if(e!==null)throw e}function my(t,e,r,n){let o=vf(E7,[e,t],n),i=vf(C7,[e,t],n,o);return r.keep||ya.unshift(o),n?o:i}function LF(t,e,r){let n=e.unsafeCleanup?y7:$e.rmdir.bind($e),o=e.unsafeCleanup?NF:RF,i=vf(o,t,r),a=vf(n,t,r,i);return e.keep||ya.unshift(i),r?i:a}function vf(t,e,r,n){let o=!1;return function i(a){if(!o){let s=n||i,u=ya.indexOf(s);return u>=0&&ya.splice(u,1),o=!0,r||t===RF||t===NF?t(e):t(e,a||function(){})}}}function _7(){if(BF)for(;ya.length;)try{ya[0]()}catch{}}function OF(t){let e=[],r=null;try{r=xF.randomBytes(t)}catch{r=xF.pseudoRandomBytes(t)}for(let n=0;n<t;n++)e.push(AF[r[n]%AF.length]);return e.join("")}function er(t){return typeof t>"u"}function Da(t,e){if(typeof t=="function")return[{},t];if(er(t))return[{},e];let r={};for(let n of Object.getOwnPropertyNames(t))r[n]=t[n];return[r,e]}function S7(t,e,r){let n=yt.isAbsolute(t)?t:yt.join(e,t);$e.stat(n,function(o){o?$e.realpath(yt.dirname(n),function(i,a){if(i)return r(i);r(null,yt.join(a,yt.basename(n)))}):$e.realpath(n,r)})}function x7(t,e){let r=yt.isAbsolute(t)?t:yt.join(e,t);try{return $e.statSync(r),$e.realpathSync(r)}catch{let o=$e.realpathSync(yt.dirname(r));return yt.join(o,yt.basename(r))}}function jF(t){let e=t.tmpdir;if(!er(t.name))return yt.join(e,t.dir,t.name);if(!er(t.template))return yt.join(e,t.dir,t.template).replace(PF,OF(6));let r=[t.prefix?t.prefix:"tmp","-",process.pid,"-",OF(12),t.postfix?"-"+t.postfix:""].join("");return yt.join(e,t.dir,r)}function UF(t){if(!er(t.name)){let e=t.name;if(yt.isAbsolute(e))throw new Error(`name option must not contain an absolute path, found "${e}".`);let r=yt.basename(e);if(r===".."||r==="."||r!==e)throw new Error(`name option must not contain a path, found "${e}".`)}if(!er(t.template)&&!t.template.match(PF))throw new Error(`Invalid template, found "${t.template}".`);if(!er(t.tries)&&isNaN(t.tries)||t.tries<0)throw new Error(`Invalid tries, found "${t.tries}".`);t.tries=er(t.name)?t.tries||d7:1,t.keep=!!t.keep,t.detachDescriptor=!!t.detachDescriptor,t.discardDescriptor=!!t.discardDescriptor,t.unsafeCleanup=!!t.unsafeCleanup,t.prefix=er(t.prefix)?"":t.prefix,t.postfix=er(t.postfix)?"":t.postfix}function FF(t,e,r,n){if(er(e))return n(null);S7(e,r,function(o,i){if(o)return n(o);let a=yt.relative(r,i);if(!i.startsWith(r))return n(new Error(`${t} option must be relative to "${r}", found "${a}".`));n(null,a)})}function kF(t,e,r){if(er(e))return;let n=x7(e,r),o=yt.relative(r,n);if(!n.startsWith(r))throw new Error(`${t} option must be relative to "${r}", found "${o}".`);return o}function A7(t,e){P7(t,function(r,n){if(r)return e(r);t.tmpdir=n;try{UF(t,n)}catch(o){return e(o)}FF("dir",t.dir,n,function(o,i){if(o)return e(o);t.dir=er(i)?"":i,FF("template",t.template,n,function(a,s){if(a)return e(a);t.template=s,e(null,t)})})})}function O7(t){let e=t.tmpdir=qF(t);UF(t,e);let r=kF("dir",t.dir,e);return t.dir=er(r)?"":r,t.template=kF("template",t.template,e),t}function F7(t){return MF(t,-h7,"EBADF")}function gy(t){return MF(t,-m7,"ENOENT")}function MF(t,e,r){return p7?t.code===r:t.code===r&&t.errno===e}function k7(){BF=!0}function P7(t,e){return $e.realpath(t&&t.tmpdir||Cf.tmpdir(),e)}function qF(t){return $e.realpathSync(t&&t.tmpdir||Cf.tmpdir())}process.addListener(g7,_7);Object.defineProperty(Dn.exports,"tmpdir",{enumerable:!0,configurable:!1,get:function(){return qF()}});Dn.exports.dir=w7;Dn.exports.dirSync=v7;Dn.exports.file=D7;Dn.exports.fileSync=b7;Dn.exports.tmpName=yy;Dn.exports.tmpNameSync=Dy;Dn.exports.setGracefulCleanup=k7});var Sf=require("node:process");var qy=ue(My(),1),{program:ot,createCommand:fq,createArgument:dq,createOption:pq,CommanderError:hq,InvalidArgumentError:mq,InvalidOptionArgumentError:gq,Command:yq,Argument:Dq,Option:bq,Help:wq}=qy.default;var Dr={name:"@capgo/cli",version:"7.44.1",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^7.4.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24.9.1","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};var ua=require("node:fs");var Dt=ue(Kf(),1),zo=require("node:process"),wn=ue(require("node:readline"),1),Xf=ue(require("node:readline"),1),Qy=require("node:stream"),eD=ue(Wf(),1);function A2({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 O2=A2();function tD(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(O2,"")}function rD(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var nD={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],d=e.length(l);if(s>=o-(d==2?1:0))if(s+d<=i)a+=l;else break;s+=d}return a}})(nD);var F2=nD.exports,k2=rD(F2),P2=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},$2=rD(P2);function Ca(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=tD(t),t.length===0))return 0;t=t.replace($2()," ");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(k2.eastAsianWidth(o)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}var Yf=10,Ky=(t=0)=>e=>`\x1B[${e+t}m`,Gy=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,Wy=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,je={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(je.modifier);var I2=Object.keys(je.color),T2=Object.keys(je.bgColor);[...I2,...T2];function R2(){let t=new Map;for(let[e,r]of Object.entries(je)){for(let[n,o]of Object.entries(r))je[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=je[n],t.set(o[0],o[1]);Object.defineProperty(je,e,{value:r,enumerable:!1})}return Object.defineProperty(je,"codes",{value:t,enumerable:!1}),je.color.close="\x1B[39m",je.bgColor.close="\x1B[49m",je.color.ansi=Ky(),je.color.ansi256=Gy(),je.color.ansi16m=Wy(),je.bgColor.ansi=Ky(Yf),je.bgColor.ansi256=Gy(Yf),je.bgColor.ansi16m=Wy(Yf),Object.defineProperties(je,{rgbToAnsi256:{value:(e,r,n)=>e===r&&r===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5),enumerable:!1},hexToRgb:{value:e=>{let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>je.rgbToAnsi256(...je.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:e=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,n,o;if(e>=232)r=((e-232)*10+8)/255,n=r,o=r;else{e-=16;let s=e%36;r=Math.floor(e/36)/5,n=Math.floor(s/6)/5,o=s%6/5}let i=Math.max(r,n,o)*2;if(i===0)return 30;let a=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(r));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,r,n)=>je.ansi256ToAnsi(je.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>je.ansi256ToAnsi(je.hexToAnsi256(e)),enumerable:!1}}),je}var B2=R2(),cu=new Set(["\x1B","\x9B"]),N2=39,Qf="\x07",oD="[",L2="]",iD="m",ed=`${L2}8;;`,Yy=t=>`${cu.values().next().value}${oD}${t}${iD}`,Jy=t=>`${cu.values().next().value}${ed}${t}${Qf}`,j2=t=>t.split(" ").map(e=>Ca(e)),Jf=(t,e,r)=>{let n=[...e],o=!1,i=!1,a=Ca(tD(t[t.length-1]));for(let[s,u]of n.entries()){let c=Ca(u);if(a+c<=r?t[t.length-1]+=u:(t.push(u),a=0),cu.has(u)&&(o=!0,i=n.slice(s+1).join("").startsWith(ed)),o){i?u===Qf&&(o=!1,i=!1):u===iD&&(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())},U2=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(Ca(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},M2=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let n="",o,i,a=j2(t),s=[""];for(let[c,l]of t.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let d=Ca(s[s.length-1]);if(c!==0&&(d>=e&&(r.wordWrap===!1||r.trim===!1)&&(s.push(""),d=0),(d>0||r.trim===!1)&&(s[s.length-1]+=" ",d++)),r.hard&&a[c]>e){let p=e-d,h=1+Math.floor((a[c]-p-1)/e);Math.floor((a[c]-1)/e)<h&&s.push(""),Jf(s,l,e);continue}if(d+a[c]>e&&d>0&&a[c]>0){if(r.wordWrap===!1&&d<e){Jf(s,l,e);continue}s.push("")}if(d+a[c]>e&&r.wordWrap===!1){Jf(s,l,e);continue}s[s.length-1]+=l}r.trim!==!1&&(s=s.map(c=>U2(c)));let u=[...s.join(`
|
|
108
108
|
`)];for(let[c,l]of u.entries()){if(n+=l,cu.has(l)){let{groups:p}=new RegExp(`(?:\\${oD}(?<code>\\d+)m|\\${ed}(?<uri>.*)${Qf})`).exec(u.slice(c).join(""))||{groups:{}};if(p.code!==void 0){let h=Number.parseFloat(p.code);o=h===N2?void 0:h}else p.uri!==void 0&&(i=p.uri.length===0?void 0:p.uri)}let d=B2.codes.get(Number(o));u[c+1]===`
|
|
109
109
|
`?(i&&(n+=Jy("")),o&&d&&(n+=Yy(d))):l===`
|
|
110
110
|
`&&(o&&d&&(n+=Yy(o)),i&&(n+=Jy(i)))}return n};function Xy(t,e,r){return String(t).normalize().replace(/\r\n/g,`
|
|
@@ -219,7 +219,7 @@ ${U(i)}`),new Error(`Cannot retrieve unknown version for app ${e}: ${U(i)}`)}fun
|
|
|
219
219
|
The bundle size is ${_} Mb, this may take a while to download for users
|
|
220
220
|
`),f.info(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
|
|
221
221
|
`),e.verbose&&(f.info("[Verbose] Bundle size details:"),f.info(` - Actual size: ${_} MB (${l?.byteLength} bytes)`),f.info(` - Alert threshold: ${Math.floor(a/1024/1024)} MB`),f.info(` - Maximum allowed: ${x} MB`),f.info("[Verbose] Sending 'App Too Large' event to analytics...")),await de(r,{channel:"app-error",event:"App Too Large",icon:"\u{1F69B}",user_id:n,tags:{"app-id":o},notify:!1},e.verbose),e.verbose&&f.info("[Verbose] Event sent successfully")):e.verbose&&f.info(`[Verbose] Bundle size OK: ${_} MB (under ${Math.floor(a/1024/1024)} MB alert threshold)`),e.verbose&&f.info("[Verbose] Bundle preparation complete, returning bundle data"),{zipped:l,ivSessionKey:s,sessionKey:u,checksum:c,encryptionMethod:d,finalKeyData:p}}async function e7(t,e,r,n,o,i,a,s){let u=De();u.start("Uploading Bundle");let c=performance.now(),l=!1;if(a.verbose&&(f.info("[Verbose] uploadBundleToCapgoCloud called:"),f.info(` - Bundle size: ${Math.floor(i.byteLength/1024)} KB`),f.info(` - App ID: ${r}`),f.info(` - Bundle version: ${n}`),f.info(` - Chunk size: ${Math.floor(s/1024/1024)} MB`)),a.dryUpload){u.stop(`Dry run, bundle not uploaded
|
|
222
|
-
Bundle uploaded \u{1F4AA} in 0 seconds`),a.verbose&&f.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let h=await cr();if(a.verbose&&f.info("[Verbose] Local config retrieved for upload"),a.multipart!==void 0&&a.multipart||a.tus!==void 0&&a.tus){a.multipart?f.info("Uploading bundle with multipart is deprecated, we upload with TUS instead"):f.info("Uploading bundle with TUS protocol"),a.verbose&&(f.info("[Verbose] Starting TUS resumable upload..."),f.info(` - Host: ${h.hostWeb}`),f.info(` - Chunk size: ${Math.floor(s/1024/1024)} MB`)),await GA(t,i,o,r,n,u,h,s),l=!0,a.verbose&&f.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 f.error(`Cannot finish TUS upload ${U(b)}`),a.verbose&&f.info(`[Verbose] Database update failed: ${U(b)}`),Promise.reject(new Error("Cannot finish TUS upload"));a.verbose&&f.info(`[Verbose] Database updated with R2 path: ${m}`)}else{a.verbose&&f.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let m=await qA(e,r,n);if(!m)return f.error("Cannot get upload url"),a.verbose&&f.info("[Verbose] Failed to retrieve presigned upload URL from database"),Promise.reject(new Error("Cannot get upload url"));a.verbose&&(f.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),f.info(` - Timeout: ${a.timeout||Og}ms`),f.info(" - Retry attempts: 5"),f.info(" - Content-Type: application/zip"));let b=new AbortController,y=setTimeout(()=>b.abort(),a.timeout||Og);try{let v=await fetch(m,{method:"PUT",body:i,headers:{"Content-Type":"application/zip"},signal:b.signal});if(!v.ok)throw new Error(`HTTP error! status: ${v.status}`)}finally{clearTimeout(y)}a.verbose&&f.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&&(f.info(`[Verbose] Upload failed after ${b} seconds`),f.info(`[Verbose] Error type: ${h instanceof Error?"Error":typeof h}`)),h instanceof Error&&h.message.includes("HTTP error"))try{let y=h.message.match(/status: (\d+)/),v=y?y[1]:"unknown";f.error(`Upload failed with status ${v}: ${h.message}`)}catch{f.error(`Upload failed: ${h.message}`)}else a.verbose&&f.info(`[Verbose] Non-HTTP error: ${U(h)}`),a.tus?f.error(`Cannot upload bundle please contact support if the issue persists ${U(h)}`):f.error(`Cannot upload bundle ( try again with --tus option) ${U(h)}`);throw a.verbose&&f.info("[Verbose] Cleaning up failed version from database..."),await WA(e,r,n),a.verbose&&f.info("[Verbose] Failed version cleaned up"),h instanceof Error?h:new Error(String(h))}let p=((performance.now()-c)/1e3).toFixed(2);u.stop(`Bundle uploaded \u{1F4AA} in (${p} seconds)`),a.verbose&&(f.info("[Verbose] Upload successful:"),f.info(` - Upload time: ${p} seconds`),f.info(` - Upload method: ${l?"TUS (resumable)":"Standard HTTP PUT"}`),f.info(` - Bundle size: ${Math.floor(i.byteLength/1024)} KB`),f.info("[Verbose] Sending performance event...")),await de(t,{channel:"performance",event:l?"TUS upload zip performance":"Upload zip performance",icon:"\u{1F684}",user_id:o,tags:{"app-id":r,time:p},notify:!1},a.verbose),a.verbose&&f.info("[Verbose] Performance event sent successfully")}async function t7(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){f.error(`Cannot delete linked bundle on upload ${U(o)}`);return}if(n.length===0){f.warn("No linked bundle found in the channel you are trying to upload to");return}let i=n[0].version;if(i.deleted){f.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){f.error(`Cannot delete linked bundle on upload ${U(a)}`);return}f.info("Linked bundle deleted")}async function r7(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||we("Cannot get version id, cannot set channel");let{data:d}=await t.rpc("is_allowed_capgkey",{apikey:e,keymode:["write","all"]}).single();if(d){let{error:p,data:h}=await zl(t,{name:o,app_id:s,created_by:i,version:l,owner_org:a,...c?{allow_device_self_set:!0}:{}});p&&we(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${U(p)}`);let m=`${u.hostWeb}/app/${s}/channel/${h.id}`;h?.public?f.info("Your update is now available in your public channel \u{1F389}"):h?.id&&f.info(`Link device to this bundle to try it: ${m}`),r&&f.info(`Bundle url: ${m}`)}else f.warn("The upload key is not allowed to set the version in the channel")}async function n7(t,e,r){let{error:n,data:o}=await e.from("apps").select("default_upload_channel").eq("app_id",t).single();return n?(f.warn("Cannot find default upload channel"),f.info(`You can set it here: ${r}/app/${t}/settings`),null):o.default_upload_channel}async function dy(t,e,r=!1){r||ee(`Uploading with CLI version ${Dr.version}`);let n,o=tt();await ye();let{s3Region:i,s3Apikey:a,s3Apisecret:s,s3BucketName:u,s3Endpoint:c,s3Port:l,s3SSL:d}=e;e.verbose&&(f.info("[Verbose] Starting upload process with options:"),f.info(` - API key: ${e.apikey?"provided":"from saved key"}`),f.info(` - Path: ${e.path||"from capacitor config"}`),f.info(` - Channel: ${e.channel||"from default upload channel"}`),f.info(` - Bundle: ${e.bundle||"auto-detected"}`),f.info(` - External: ${e.external||"false"}`),f.info(` - Encryption: ${e.keyV2||e.keyDataV2?"v2":e.key===!1?"disabled":"auto"}`),f.info(` - Upload method: ${e.tus?"TUS":e.zip?"ZIP":"auto"}`),f.info(` - Delta updates: ${e.delta||e.partial?"enabled":"disabled"}`));let p=W9(e);e.verbose&&f.info("[Verbose] API key retrieved successfully");let h=await te();e.verbose&&f.info("[Verbose] Capacitor config loaded successfully");let m=await IA();e.verbose&&(f.info("[Verbose] Remote file config retrieved:"),f.info(` - Max upload length: ${Math.floor(m.maxUploadLength/1024/1024)} MB`),f.info(` - Alert upload size: ${Math.floor(m.alertUploadSize/1024/1024)} MB`),f.info(` - TUS upload: ${m.TUSUpload?"enabled":"disabled"}`),f.info(` - TUS upload forced: ${m.TUSUploadForced?"yes":"no"}`),f.info(` - Partial upload: ${m.partialUpload?"enabled":"disabled"}`),f.info(` - Max chunk size: ${Math.floor(m.maxChunkSize/1024/1024)} MB`));let{appid:b,path:y}=Y9(t,e,h.config);e.verbose&&f.info(`[Verbose] App ID: ${b}, Build path: ${y}`);let v=await G9(h.config,e);e.verbose&&f.info(`[Verbose] Bundle version: ${v}`);let E=e.external?"external":"r2-direct",g="none";e.autoSetBundle&&(await Ps({version:v}),e.verbose&&f.info("[Verbose] Auto-set bundle version in capacitor.config.json")),J9(e,y),e.verbose&&f.info("[Verbose] Code check passed (notifyAppReady found and index.html present)"),f.info(`Upload ${b}@${v} started from path "${y}" to Capgo cloud`);let _=await cr();e.verbose&&f.info(`[Verbose] Local config loaded: host=${_.hostWeb}`),e.supaHost&&e.supaAnon&&(f.info("Using custom supabase instance from provided options"),_.supaHost=e.supaHost,_.supaKey=e.supaAnon,e.verbose&&f.info(`[Verbose] Custom Supabase host: ${e.supaHost}`));let x=await re(p,e.supaHost,e.supaAnon);e.verbose&&f.info("[Verbose] Supabase client created successfully");let $=await ie(x,p,["write","all","upload"]);e.verbose&&f.info(`[Verbose] User verified successfully, user_id: ${$}`);let k=e.channel||await n7(b,x,_.hostWeb)||"dev";e.verbose&&f.info(`[Verbose] Target channel: ${k}`);let B=await bt(x,b);e.verbose&&f.info(`[Verbose] Organization ID: ${B}`),await NA(x,B,Dr.version),e.verbose&&f.info("[Verbose] Remote CLI messages checked"),await jA(x,B,p,b,!0),e.verbose&&f.info("[Verbose] Plan validation passed"),e.verbose&&f.info("[Verbose] Trial check completed"),e.verbose&&f.info(`[Verbose] Checking compatibility with channel ${k}...`);let{nativePackages:T,minUpdateVersion:L}=await X9(x,o,e,k,b,v);e.verbose&&(f.info("[Verbose] Compatibility check completed:"),f.info(` - Native packages: ${T?T.length:0}`),f.info(` - Min update version: ${L||"none"}`)),e.verbose&&f.info(`[Verbose] Checking if version ${v} already exists...`);let A=await Z9(x,b,v,e.versionExistsOk);if(e.verbose&&f.info(`[Verbose] Version exists check: ${A?"yes (skipping)":"no (continuing)"}`),A)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:v,checksum:null,encryptionMethod:g,storageProvider:E};e.external&&!e.external.startsWith("https://")&&we(`External link should should start with "https://" current is "${e.external}"`),e.deleteLinkedBundleOnUpload&&(f.warn("Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the channel you are trying to upload to."),f.warn("Please make sure you want to do this, if you are not sure, please do not use this option."));let j={name:v,app_id:b,session_key:void 0,external_url:e.external,storage_provider:E,min_update_version:L,native_packages:T,owner_org:B,user_id:$,checksum:void 0,link:e.link||null,comment:e.comment||null},M=null,W="";if(e.external)e.verbose&&f.info(`[Verbose] Using external URL: ${e.external}`),await de(p,{channel:"app",event:"App external",icon:"\u{1F4E4}",user_id:B,tags:{"app-id":b},notify:!1},e.verbose),j.session_key=e.ivSessionKey,j.checksum=e.encryptedChecksum,e.verbose&&(f.info("[Verbose] External bundle configured:"),f.info(` - URL: ${e.external}`),f.info(` - IV Session Key: ${e.ivSessionKey?"provided":"none"}`),f.info(` - Encrypted Checksum: ${e.encryptedChecksum?"provided":"none"}`));else{e.verbose&&f.info(`[Verbose] Preparing bundle file from path: ${y}`);let{zipped:P,ivSessionKey:N,checksum:z,sessionKey:H,encryptionMethod:se,finalKeyData:zt}=await Q9(y,e,p,B,b,m.maxUploadLength,m.alertUploadSize);j.session_key=N,j.checksum=z,n=H,M=P,g=se,W=zt,e.verbose&&(f.info("[Verbose] Bundle prepared:"),f.info(` - Size: ${Math.floor((P?.byteLength??0)/1024)} KB`),f.info(` - Checksum: ${z}`),f.info(` - Encryption: ${se}`),f.info(` - IV Session Key: ${N?"present":"none"}`)),e.ignoreChecksumCheck||(e.verbose&&f.info("[Verbose] Checking for duplicate checksum..."),await XA(x,b,k,z),e.verbose&&f.info("[Verbose] Checksum is unique"))}e.zip?(e.tus=!1,e.verbose&&f.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")):!m.TUSUpload||e.external?(e.tus=!1,e.verbose&&f.info("[Verbose] Upload method: Standard (TUS not available or external URL)")):(e.tus=e.tus||m.TUSUploadForced,e.verbose&&f.info(`[Verbose] Upload method: ${e.tus?"TUS (resumable)":"Standard"}`)),!m.partialUpload||e.external?(e.delta=!1,e.verbose&&e.external&&f.info("[Verbose] Delta updates disabled (not available with external URLs)")):(e.delta=e.delta||e.partial||e.deltaOnly||e.partialOnly||m.partialUploadForced,e.verbose&&f.info(`[Verbose] Delta updates: ${e.delta?"enabled":"disabled"}`)),e.encryptPartial&&g==="v1"&&we("You cannot encrypt the partial update if you are not using the v2 encryption method");let F="5.30.0",D="6.30.0",w="7.30.0",C=!1;if(e.delta&&g==="v2"&&!e.encryptPartial){let P=gt((0,bf.cwd)()),N=await qr("@capgo/capacitor-updater",P,e.packageJson),z;try{z=N?xe(N):void 0}catch{z=void 0}N&&z&&ED(z,xe("6.14.4"))&&(f.info(`Auto-enabling partial update encryption for updater version ${z} (> 6.14.4)`),e.verbose&&f.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4"),e.encryptPartial=!0)}if(e.delta&&(e.encryptPartial||g==="v2")){let P=gt((0,bf.cwd)()),N=await qr("@capgo/capacitor-updater",P,e.packageJson),z;try{z=N?xe(N):void 0}catch{z=void 0}N&&z&&(C=!jn(z,F,D,w),e.verbose&&C&&f.info(`[Verbose] Using hex checksum format for updater version ${z}`))}e.verbose&&e.delta&&f.info("[Verbose] Preparing delta/partial update manifest...");let O=e.delta?await dF(y,p,B,b,e.encryptPartial?g:"none",W,C):[];e.verbose&&e.delta&&f.info(`[Verbose] Delta manifest prepared with ${O.length} files`),e.verbose&&f.info("[Verbose] Creating version record in database...");let{error:R}=await Ig(x,j);if(R&&we(`Cannot add bundle ${U(R)}`),e.verbose&&f.info("[Verbose] Version record created successfully"),e.tusChunkSize&&e.tusChunkSize>m.maxChunkSize?(f.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&&f.info(`[Verbose] TUS chunk size: ${Math.floor(e.tusChunkSize/1024/1024)} MB`),M&&(u||c||i||a||s||l||d)){(!u||!c||!i||!a||!s||!l)&&we("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret"),f.info("Uploading to S3"),e.verbose&&(f.info("[Verbose] S3 configuration:"),f.info(` - Endpoint: ${c}`),f.info(` - Region: ${i}`),f.info(` - Bucket: ${u}`),f.info(` - Port: ${l}`),f.info(` - SSL: ${d?"enabled":"disabled"}`));let P=d?`https://${c}`:`http://${c}`,N=new Ms({endPoint:c,region:i,port:l,pathStyle:!0,bucket:u,accessKey:a,secretKey:s}),z=`${b}-${v}`,H=encodeURIComponent(z);e.verbose&&f.info(`[Verbose] Uploading to S3 as: ${z}`),await N.putObject(z,Uint8Array.from(M)),j.external_url=`${P}/${H}`,j.storage_provider="external",e.verbose&&f.info(`[Verbose] S3 upload complete, external URL: ${j.external_url}`)}else if(M){!e.partialOnly&&!e.deltaOnly?(e.verbose&&f.info("[Verbose] Starting full bundle upload to Capgo Cloud..."),await e7(p,x,b,v,B,M,e,e.tusChunkSize)):e.verbose&&f.info("[Verbose] Skipping full bundle upload (delta-only mode)");let P=null;try{e.dryUpload&&(e.delta=!1,e.verbose&&f.info("[Verbose] Dry upload mode: skipping delta upload"));let z=j.session_key&&e.encryptPartial&&n?{sessionKey:n,ivSessionKey:j.session_key}:void 0;e.verbose&&e.delta&&(f.info("[Verbose] Starting delta/partial file upload..."),f.info(` - Manifest entries: ${O.length}`),f.info(` - Encryption: ${z?"enabled":"disabled"}`)),P=e.delta?await pF(p,O,y,b,B,z,e):null,e.verbose&&P&&f.info(`[Verbose] Delta upload complete with ${P.length} files`)}catch(z){if(!!(e.partial||e.delta||e.partialOnly||e.deltaOnly))throw z;f.info(`Failed to upload partial files to capgo cloud. Error: ${U(z)}. This is not a critical error, the bundle has been uploaded without the partial files`),e.verbose&&f.info(`[Verbose] Delta upload error details: ${U(z)}`)}j.storage_provider="r2",j.manifest=P,e.verbose&&f.info("[Verbose] Updating version record with storage provider and manifest...");let{error:N}=await Ig(x,j);N&&we(`Cannot update bundle ${U(N)}`),e.verbose&&f.info("[Verbose] Version record updated successfully")}e.verbose&&f.info("[Verbose] Checking app permissions...");let I=await Me(x,p,b,2);e.verbose&&(f.info("[Verbose] Permissions:"),f.info(` - Upload: ${oa(I,2)?"yes":"no"}`),f.info(` - Write: ${oa(I,3)?"yes":"no"}`),f.info(` - Admin: ${oa(I,4)?"yes":"no"}`)),e.deleteLinkedBundleOnUpload&&oa(I,3)?(e.verbose&&f.info(`[Verbose] Deleting linked bundle in channel ${k}...`),await t7(x,b,k)):e.deleteLinkedBundleOnUpload&&f.warn("Cannot delete linked bundle on upload as a upload organization member"),oa(I,3)?(e.verbose&&f.info(`[Verbose] Setting bundle ${v} to channel ${k}...`),await r7(x,p,!!e.bundleUrl,v,k,$,B,b,_,e.selfAssign),e.verbose&&f.info("[Verbose] Channel updated successfully")):f.warn("Cannot set channel as a upload organization member"),e.verbose&&f.info("[Verbose] Sending upload event..."),await de(p,{channel:"app",event:"App Uploaded",icon:"\u23EB",user_id:B,tags:{"app-id":b},notify:!1},e.verbose);let q={success:!0,bundle:v,checksum:j.checksum??null,encryptionMethod:g,sessionKey:n?n.toString("base64"):void 0,ivSessionKey:typeof j.session_key=="string"?j.session_key:void 0,storageProvider:j.storage_provider};return e.verbose&&(f.info("[Verbose] Upload completed successfully:"),f.info(` - Bundle: ${q.bundle}`),f.info(` - Checksum: ${q.checksum}`),f.info(` - Encryption: ${q.encryptionMethod}`),f.info(` - Storage: ${q.storageProvider}`)),r&&!q.skipped&&Z("Time to share your update to the world \u{1F30D}"),q}function o7(t){t.ivSessionKey&&!t.external&&we("You need to provide an external url if you want to use the --iv-session-key option"),t.encryptedChecksum&&!t.external&&we("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&&we("You cannot use the --partial/--delta/--partial-only/--delta-only option with an external url"),t.tus&&t.external&&we("You cannot use the --tus option with an external url"),t.dryUpload&&t.external&&we("You cannot use the --dry-upload option with an external url"),t.multipart&&t.external&&we("You cannot use the --multipart option with an external url"),t.external&&(t.keyV2||t.keyDataV2)&&we("You cannot set a key if you are uploading to an external url"),t.keyV2&&t.keyDataV2&&we("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)&&we("You cannot set S3 options if you are uploading to an external url, it's automatically handled"),t.encryptedChecksum&&!t.external&&we("You cannot set the --encrypted-checksum option if you are not uploading to an external url"),t.minUpdateVersion&&t.autoMinUpdateVersion&&we("You cannot set both min-update-version and auto-min-update-version, use only one of them")}async function mF(t,e){try{o7(e),await dy(t,e)}catch(r){throw f.error(`uploadBundle failed: ${U(r)}`),r instanceof Error?r:new Error(String(r))}}var gF=require("node:crypto"),wf=require("node:fs"),yF=require("node:process");var i7=20;function a7(t){console.log(JSON.stringify(t,null,2))}function Gs(t){console.error(U(t))}async function s7(t,e,r=!1){let{json:n}=e,{bundle:o,path:i}=e,a=!n&&!r;try{a&&await ye();let s=await te(),u=le(t,s?.config),c=(0,gF.randomUUID)().split("-")[0],l=Fr("",e.packageJson);if(o=o||l||`0.0.1-beta.${c}`,a&&ee(`Zipping ${u}@${o}`),o&&!na.test(o)){let $=`Your bundle name ${o}, is not valid it should follow semver convention : https://semver.org/`;throw r||(n?Gs({error:"invalid_semver"}):f.error($)),new Error("Invalid bundle version format")}if(i=i||s?.config?.webDir,!u||!o||!i){let $="Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project";throw r||(n?Gs({error:"missing_argument"}):f.error($)),new Error($)}if(a&&f.info(`Started from path "${i}"`),typeof e.codeCheck>"u"?!0:e.codeCheck){if(!qs(i,"notifyAppReady"))throw r||(n?Gs({error:"notifyAppReady_not_in_source_code"}):f.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(!lf(i))throw r||(n?Gs({error:"index_html_not_found"}):f.error(`index.html is missing in the root folder of ${i}`)),new Error("index.html is missing in root folder")}let p=await Vl(i);a&&f.info(`Zipped ${p.byteLength} bytes`);let h=a?De():null;h&&h.start("Calculating checksum");let m=gt((0,yF.cwd)()),b=await qr("@capgo/capacitor-updater",m,e.packageJson);if(!b){let $="Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager";throw r||f.warn($),new Error($)}let y=!1,v;try{v=b?xe(b):void 0}catch{v=void 0}v?y=!jn(v,void 0,void 0,"7.0.0"):b==="link:@capgo/capacitor-updater"&&(r||f.warn("Using local @capgo/capacitor-updater. Assuming v7"),y=!0);let E=await on(p,e.keyV2||(0,wf.existsSync)(Jt)||y?"sha256":"crc32");h&&h.stop(`Checksum ${y?"SHA256":"CRC32"}: ${E}`);let g=Math.floor(p.byteLength/1024/1024);g>i7&&a&&(f.warn(`WARNING !!
|
|
222
|
+
Bundle uploaded \u{1F4AA} in 0 seconds`),a.verbose&&f.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let h=await cr();if(a.verbose&&f.info("[Verbose] Local config retrieved for upload"),a.multipart!==void 0&&a.multipart||a.tus!==void 0&&a.tus){a.multipart?f.info("Uploading bundle with multipart is deprecated, we upload with TUS instead"):f.info("Uploading bundle with TUS protocol"),a.verbose&&(f.info("[Verbose] Starting TUS resumable upload..."),f.info(` - Host: ${h.hostWeb}`),f.info(` - Chunk size: ${Math.floor(s/1024/1024)} MB`)),await GA(t,i,o,r,n,u,h,s),l=!0,a.verbose&&f.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 f.error(`Cannot finish TUS upload ${U(b)}`),a.verbose&&f.info(`[Verbose] Database update failed: ${U(b)}`),Promise.reject(new Error("Cannot finish TUS upload"));a.verbose&&f.info(`[Verbose] Database updated with R2 path: ${m}`)}else{a.verbose&&f.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let m=await qA(e,r,n);if(!m)return f.error("Cannot get upload url"),a.verbose&&f.info("[Verbose] Failed to retrieve presigned upload URL from database"),Promise.reject(new Error("Cannot get upload url"));a.verbose&&(f.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),f.info(` - Timeout: ${a.timeout||Og}ms`),f.info(" - Retry attempts: 5"),f.info(" - Content-Type: application/zip"));let b=new AbortController,y=setTimeout(()=>b.abort(),a.timeout||Og);try{let v=await fetch(m,{method:"PUT",body:i,headers:{"Content-Type":"application/zip"},signal:b.signal});if(!v.ok)throw new Error(`HTTP error! status: ${v.status}`)}finally{clearTimeout(y)}a.verbose&&f.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&&(f.info(`[Verbose] Upload failed after ${b} seconds`),f.info(`[Verbose] Error type: ${h instanceof Error?"Error":typeof h}`)),h instanceof Error&&h.message.includes("HTTP error"))try{let y=h.message.match(/status: (\d+)/),v=y?y[1]:"unknown";f.error(`Upload failed with status ${v}: ${h.message}`)}catch{f.error(`Upload failed: ${h.message}`)}else a.verbose&&f.info(`[Verbose] Non-HTTP error: ${U(h)}`),a.tus?f.error(`Cannot upload bundle please contact support if the issue persists ${U(h)}`):f.error(`Cannot upload bundle ( try again with --tus option) ${U(h)}`);throw a.verbose&&f.info("[Verbose] Cleaning up failed version from database..."),await WA(e,r,n),a.verbose&&f.info("[Verbose] Failed version cleaned up"),h instanceof Error?h:new Error(String(h))}let p=((performance.now()-c)/1e3).toFixed(2);u.stop(`Bundle uploaded \u{1F4AA} in (${p} seconds)`),a.verbose&&(f.info("[Verbose] Upload successful:"),f.info(` - Upload time: ${p} seconds`),f.info(` - Upload method: ${l?"TUS (resumable)":"Standard HTTP PUT"}`),f.info(` - Bundle size: ${Math.floor(i.byteLength/1024)} KB`),f.info("[Verbose] Sending performance event...")),await de(t,{channel:"performance",event:l?"TUS upload zip performance":"Upload zip performance",icon:"\u{1F684}",user_id:o,tags:{"app-id":r,time:p},notify:!1},a.verbose),a.verbose&&f.info("[Verbose] Performance event sent successfully")}async function t7(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){f.error(`Cannot delete linked bundle on upload ${U(o)}`);return}if(n.length===0){f.warn("No linked bundle found in the channel you are trying to upload to");return}let i=n[0].version;if(i.deleted){f.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){f.error(`Cannot delete linked bundle on upload ${U(a)}`);return}f.info("Linked bundle deleted")}async function r7(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||we("Cannot get version id, cannot set channel");let{data:d}=await t.rpc("is_allowed_capgkey",{apikey:e,keymode:["write","all"]}).single();if(d){let{error:p,data:h}=await zl(t,{name:o,app_id:s,created_by:i,version:l,owner_org:a,...c?{allow_device_self_set:!0}:{}});p&&we(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${U(p)}`);let m=`${u.hostWeb}/app/${s}/channel/${h.id}`;h?.public?f.info("Your update is now available in your public channel \u{1F389}"):h?.id&&f.info(`Link device to this bundle to try it: ${m}`),r&&f.info(`Bundle url: ${m}`)}else f.warn("The upload key is not allowed to set the version in the channel")}async function n7(t,e,r){let{error:n,data:o}=await e.from("apps").select("default_upload_channel").eq("app_id",t).single();return n?(f.warn("Cannot find default upload channel"),f.info(`You can set it here: ${r}/app/${t}/info`),null):o.default_upload_channel}async function dy(t,e,r=!1){r||ee(`Uploading with CLI version ${Dr.version}`);let n,o=tt();await ye();let{s3Region:i,s3Apikey:a,s3Apisecret:s,s3BucketName:u,s3Endpoint:c,s3Port:l,s3SSL:d}=e;e.verbose&&(f.info("[Verbose] Starting upload process with options:"),f.info(` - API key: ${e.apikey?"provided":"from saved key"}`),f.info(` - Path: ${e.path||"from capacitor config"}`),f.info(` - Channel: ${e.channel||"from default upload channel"}`),f.info(` - Bundle: ${e.bundle||"auto-detected"}`),f.info(` - External: ${e.external||"false"}`),f.info(` - Encryption: ${e.keyV2||e.keyDataV2?"v2":e.key===!1?"disabled":"auto"}`),f.info(` - Upload method: ${e.tus?"TUS":e.zip?"ZIP":"auto"}`),f.info(` - Delta updates: ${e.delta||e.partial?"enabled":"disabled"}`));let p=W9(e);e.verbose&&f.info("[Verbose] API key retrieved successfully");let h=await te();e.verbose&&f.info("[Verbose] Capacitor config loaded successfully");let m=await IA();e.verbose&&(f.info("[Verbose] Remote file config retrieved:"),f.info(` - Max upload length: ${Math.floor(m.maxUploadLength/1024/1024)} MB`),f.info(` - Alert upload size: ${Math.floor(m.alertUploadSize/1024/1024)} MB`),f.info(` - TUS upload: ${m.TUSUpload?"enabled":"disabled"}`),f.info(` - TUS upload forced: ${m.TUSUploadForced?"yes":"no"}`),f.info(` - Partial upload: ${m.partialUpload?"enabled":"disabled"}`),f.info(` - Max chunk size: ${Math.floor(m.maxChunkSize/1024/1024)} MB`));let{appid:b,path:y}=Y9(t,e,h.config);e.verbose&&f.info(`[Verbose] App ID: ${b}, Build path: ${y}`);let v=await G9(h.config,e);e.verbose&&f.info(`[Verbose] Bundle version: ${v}`);let E=e.external?"external":"r2-direct",g="none";e.autoSetBundle&&(await Ps({version:v}),e.verbose&&f.info("[Verbose] Auto-set bundle version in capacitor.config.json")),J9(e,y),e.verbose&&f.info("[Verbose] Code check passed (notifyAppReady found and index.html present)"),f.info(`Upload ${b}@${v} started from path "${y}" to Capgo cloud`);let _=await cr();e.verbose&&f.info(`[Verbose] Local config loaded: host=${_.hostWeb}`),e.supaHost&&e.supaAnon&&(f.info("Using custom supabase instance from provided options"),_.supaHost=e.supaHost,_.supaKey=e.supaAnon,e.verbose&&f.info(`[Verbose] Custom Supabase host: ${e.supaHost}`));let x=await re(p,e.supaHost,e.supaAnon);e.verbose&&f.info("[Verbose] Supabase client created successfully");let $=await ie(x,p,["write","all","upload"]);e.verbose&&f.info(`[Verbose] User verified successfully, user_id: ${$}`);let k=e.channel||await n7(b,x,_.hostWeb)||"dev";e.verbose&&f.info(`[Verbose] Target channel: ${k}`);let B=await bt(x,b);e.verbose&&f.info(`[Verbose] Organization ID: ${B}`),await NA(x,B,Dr.version),e.verbose&&f.info("[Verbose] Remote CLI messages checked"),await jA(x,B,p,b,!0),e.verbose&&f.info("[Verbose] Plan validation passed"),e.verbose&&f.info("[Verbose] Trial check completed"),e.verbose&&f.info(`[Verbose] Checking compatibility with channel ${k}...`);let{nativePackages:T,minUpdateVersion:L}=await X9(x,o,e,k,b,v);e.verbose&&(f.info("[Verbose] Compatibility check completed:"),f.info(` - Native packages: ${T?T.length:0}`),f.info(` - Min update version: ${L||"none"}`)),e.verbose&&f.info(`[Verbose] Checking if version ${v} already exists...`);let A=await Z9(x,b,v,e.versionExistsOk);if(e.verbose&&f.info(`[Verbose] Version exists check: ${A?"yes (skipping)":"no (continuing)"}`),A)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:v,checksum:null,encryptionMethod:g,storageProvider:E};e.external&&!e.external.startsWith("https://")&&we(`External link should should start with "https://" current is "${e.external}"`),e.deleteLinkedBundleOnUpload&&(f.warn("Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the channel you are trying to upload to."),f.warn("Please make sure you want to do this, if you are not sure, please do not use this option."));let j={name:v,app_id:b,session_key:void 0,external_url:e.external,storage_provider:E,min_update_version:L,native_packages:T,owner_org:B,user_id:$,checksum:void 0,link:e.link||null,comment:e.comment||null},M=null,W="";if(e.external)e.verbose&&f.info(`[Verbose] Using external URL: ${e.external}`),await de(p,{channel:"app",event:"App external",icon:"\u{1F4E4}",user_id:B,tags:{"app-id":b},notify:!1},e.verbose),j.session_key=e.ivSessionKey,j.checksum=e.encryptedChecksum,e.verbose&&(f.info("[Verbose] External bundle configured:"),f.info(` - URL: ${e.external}`),f.info(` - IV Session Key: ${e.ivSessionKey?"provided":"none"}`),f.info(` - Encrypted Checksum: ${e.encryptedChecksum?"provided":"none"}`));else{e.verbose&&f.info(`[Verbose] Preparing bundle file from path: ${y}`);let{zipped:P,ivSessionKey:N,checksum:z,sessionKey:H,encryptionMethod:se,finalKeyData:zt}=await Q9(y,e,p,B,b,m.maxUploadLength,m.alertUploadSize);j.session_key=N,j.checksum=z,n=H,M=P,g=se,W=zt,e.verbose&&(f.info("[Verbose] Bundle prepared:"),f.info(` - Size: ${Math.floor((P?.byteLength??0)/1024)} KB`),f.info(` - Checksum: ${z}`),f.info(` - Encryption: ${se}`),f.info(` - IV Session Key: ${N?"present":"none"}`)),e.ignoreChecksumCheck||(e.verbose&&f.info("[Verbose] Checking for duplicate checksum..."),await XA(x,b,k,z),e.verbose&&f.info("[Verbose] Checksum is unique"))}e.zip?(e.tus=!1,e.verbose&&f.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")):!m.TUSUpload||e.external?(e.tus=!1,e.verbose&&f.info("[Verbose] Upload method: Standard (TUS not available or external URL)")):(e.tus=e.tus||m.TUSUploadForced,e.verbose&&f.info(`[Verbose] Upload method: ${e.tus?"TUS (resumable)":"Standard"}`)),!m.partialUpload||e.external?(e.delta=!1,e.verbose&&e.external&&f.info("[Verbose] Delta updates disabled (not available with external URLs)")):(e.delta=e.delta||e.partial||e.deltaOnly||e.partialOnly||m.partialUploadForced,e.verbose&&f.info(`[Verbose] Delta updates: ${e.delta?"enabled":"disabled"}`)),e.encryptPartial&&g==="v1"&&we("You cannot encrypt the partial update if you are not using the v2 encryption method");let F="5.30.0",D="6.30.0",w="7.30.0",C=!1;if(e.delta&&g==="v2"&&!e.encryptPartial){let P=gt((0,bf.cwd)()),N=await qr("@capgo/capacitor-updater",P,e.packageJson),z;try{z=N?xe(N):void 0}catch{z=void 0}N&&z&&ED(z,xe("6.14.4"))&&(f.info(`Auto-enabling partial update encryption for updater version ${z} (> 6.14.4)`),e.verbose&&f.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4"),e.encryptPartial=!0)}if(e.delta&&(e.encryptPartial||g==="v2")){let P=gt((0,bf.cwd)()),N=await qr("@capgo/capacitor-updater",P,e.packageJson),z;try{z=N?xe(N):void 0}catch{z=void 0}N&&z&&(C=!jn(z,F,D,w),e.verbose&&C&&f.info(`[Verbose] Using hex checksum format for updater version ${z}`))}e.verbose&&e.delta&&f.info("[Verbose] Preparing delta/partial update manifest...");let O=e.delta?await dF(y,p,B,b,e.encryptPartial?g:"none",W,C):[];e.verbose&&e.delta&&f.info(`[Verbose] Delta manifest prepared with ${O.length} files`),e.verbose&&f.info("[Verbose] Creating version record in database...");let{error:R}=await Ig(x,j);if(R&&we(`Cannot add bundle ${U(R)}`),e.verbose&&f.info("[Verbose] Version record created successfully"),e.tusChunkSize&&e.tusChunkSize>m.maxChunkSize?(f.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&&f.info(`[Verbose] TUS chunk size: ${Math.floor(e.tusChunkSize/1024/1024)} MB`),M&&(u||c||i||a||s||l||d)){(!u||!c||!i||!a||!s||!l)&&we("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret"),f.info("Uploading to S3"),e.verbose&&(f.info("[Verbose] S3 configuration:"),f.info(` - Endpoint: ${c}`),f.info(` - Region: ${i}`),f.info(` - Bucket: ${u}`),f.info(` - Port: ${l}`),f.info(` - SSL: ${d?"enabled":"disabled"}`));let P=d?`https://${c}`:`http://${c}`,N=new Ms({endPoint:c,region:i,port:l,pathStyle:!0,bucket:u,accessKey:a,secretKey:s}),z=`${b}-${v}`,H=encodeURIComponent(z);e.verbose&&f.info(`[Verbose] Uploading to S3 as: ${z}`),await N.putObject(z,Uint8Array.from(M)),j.external_url=`${P}/${H}`,j.storage_provider="external",e.verbose&&f.info(`[Verbose] S3 upload complete, external URL: ${j.external_url}`)}else if(M){!e.partialOnly&&!e.deltaOnly?(e.verbose&&f.info("[Verbose] Starting full bundle upload to Capgo Cloud..."),await e7(p,x,b,v,B,M,e,e.tusChunkSize)):e.verbose&&f.info("[Verbose] Skipping full bundle upload (delta-only mode)");let P=null;try{e.dryUpload&&(e.delta=!1,e.verbose&&f.info("[Verbose] Dry upload mode: skipping delta upload"));let z=j.session_key&&e.encryptPartial&&n?{sessionKey:n,ivSessionKey:j.session_key}:void 0;e.verbose&&e.delta&&(f.info("[Verbose] Starting delta/partial file upload..."),f.info(` - Manifest entries: ${O.length}`),f.info(` - Encryption: ${z?"enabled":"disabled"}`)),P=e.delta?await pF(p,O,y,b,B,z,e):null,e.verbose&&P&&f.info(`[Verbose] Delta upload complete with ${P.length} files`)}catch(z){if(!!(e.partial||e.delta||e.partialOnly||e.deltaOnly))throw z;f.info(`Failed to upload partial files to capgo cloud. Error: ${U(z)}. This is not a critical error, the bundle has been uploaded without the partial files`),e.verbose&&f.info(`[Verbose] Delta upload error details: ${U(z)}`)}j.storage_provider="r2",j.manifest=P,e.verbose&&f.info("[Verbose] Updating version record with storage provider and manifest...");let{error:N}=await Ig(x,j);N&&we(`Cannot update bundle ${U(N)}`),e.verbose&&f.info("[Verbose] Version record updated successfully")}e.verbose&&f.info("[Verbose] Checking app permissions...");let I=await Me(x,p,b,2);e.verbose&&(f.info("[Verbose] Permissions:"),f.info(` - Upload: ${oa(I,2)?"yes":"no"}`),f.info(` - Write: ${oa(I,3)?"yes":"no"}`),f.info(` - Admin: ${oa(I,4)?"yes":"no"}`)),e.deleteLinkedBundleOnUpload&&oa(I,3)?(e.verbose&&f.info(`[Verbose] Deleting linked bundle in channel ${k}...`),await t7(x,b,k)):e.deleteLinkedBundleOnUpload&&f.warn("Cannot delete linked bundle on upload as a upload organization member"),oa(I,3)?(e.verbose&&f.info(`[Verbose] Setting bundle ${v} to channel ${k}...`),await r7(x,p,!!e.bundleUrl,v,k,$,B,b,_,e.selfAssign),e.verbose&&f.info("[Verbose] Channel updated successfully")):f.warn("Cannot set channel as a upload organization member"),e.verbose&&f.info("[Verbose] Sending upload event..."),await de(p,{channel:"app",event:"App Uploaded",icon:"\u23EB",user_id:B,tags:{"app-id":b},notify:!1},e.verbose);let q={success:!0,bundle:v,checksum:j.checksum??null,encryptionMethod:g,sessionKey:n?n.toString("base64"):void 0,ivSessionKey:typeof j.session_key=="string"?j.session_key:void 0,storageProvider:j.storage_provider};return e.verbose&&(f.info("[Verbose] Upload completed successfully:"),f.info(` - Bundle: ${q.bundle}`),f.info(` - Checksum: ${q.checksum}`),f.info(` - Encryption: ${q.encryptionMethod}`),f.info(` - Storage: ${q.storageProvider}`)),r&&!q.skipped&&Z("Time to share your update to the world \u{1F30D}"),q}function o7(t){t.ivSessionKey&&!t.external&&we("You need to provide an external url if you want to use the --iv-session-key option"),t.encryptedChecksum&&!t.external&&we("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&&we("You cannot use the --partial/--delta/--partial-only/--delta-only option with an external url"),t.tus&&t.external&&we("You cannot use the --tus option with an external url"),t.dryUpload&&t.external&&we("You cannot use the --dry-upload option with an external url"),t.multipart&&t.external&&we("You cannot use the --multipart option with an external url"),t.external&&(t.keyV2||t.keyDataV2)&&we("You cannot set a key if you are uploading to an external url"),t.keyV2&&t.keyDataV2&&we("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)&&we("You cannot set S3 options if you are uploading to an external url, it's automatically handled"),t.encryptedChecksum&&!t.external&&we("You cannot set the --encrypted-checksum option if you are not uploading to an external url"),t.minUpdateVersion&&t.autoMinUpdateVersion&&we("You cannot set both min-update-version and auto-min-update-version, use only one of them")}async function mF(t,e){try{o7(e),await dy(t,e)}catch(r){throw f.error(`uploadBundle failed: ${U(r)}`),r instanceof Error?r:new Error(String(r))}}var gF=require("node:crypto"),wf=require("node:fs"),yF=require("node:process");var i7=20;function a7(t){console.log(JSON.stringify(t,null,2))}function Gs(t){console.error(U(t))}async function s7(t,e,r=!1){let{json:n}=e,{bundle:o,path:i}=e,a=!n&&!r;try{a&&await ye();let s=await te(),u=le(t,s?.config),c=(0,gF.randomUUID)().split("-")[0],l=Fr("",e.packageJson);if(o=o||l||`0.0.1-beta.${c}`,a&&ee(`Zipping ${u}@${o}`),o&&!na.test(o)){let $=`Your bundle name ${o}, is not valid it should follow semver convention : https://semver.org/`;throw r||(n?Gs({error:"invalid_semver"}):f.error($)),new Error("Invalid bundle version format")}if(i=i||s?.config?.webDir,!u||!o||!i){let $="Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project";throw r||(n?Gs({error:"missing_argument"}):f.error($)),new Error($)}if(a&&f.info(`Started from path "${i}"`),typeof e.codeCheck>"u"?!0:e.codeCheck){if(!qs(i,"notifyAppReady"))throw r||(n?Gs({error:"notifyAppReady_not_in_source_code"}):f.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(!lf(i))throw r||(n?Gs({error:"index_html_not_found"}):f.error(`index.html is missing in the root folder of ${i}`)),new Error("index.html is missing in root folder")}let p=await Vl(i);a&&f.info(`Zipped ${p.byteLength} bytes`);let h=a?De():null;h&&h.start("Calculating checksum");let m=gt((0,yF.cwd)()),b=await qr("@capgo/capacitor-updater",m,e.packageJson);if(!b){let $="Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager";throw r||f.warn($),new Error($)}let y=!1,v;try{v=b?xe(b):void 0}catch{v=void 0}v?y=!jn(v,void 0,void 0,"7.0.0"):b==="link:@capgo/capacitor-updater"&&(r||f.warn("Using local @capgo/capacitor-updater. Assuming v7"),y=!0);let E=await on(p,e.keyV2||(0,wf.existsSync)(Jt)||y?"sha256":"crc32");h&&h.stop(`Checksum ${y?"SHA256":"CRC32"}: ${E}`);let g=Math.floor(p.byteLength/1024/1024);g>i7&&a&&(f.warn(`WARNING !!
|
|
223
223
|
The bundle size is ${g} Mb, this may take a while to download for users
|
|
224
224
|
`),f.warn(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
|
|
225
225
|
`));let _=a?De():null,x=e.name||`${u}_${o}.zip`;return _&&_.start(`Saving to ${x}`),(0,wf.writeFileSync)(x,p),_&&_.stop(`Saved to ${x}`),a&&Z("Done \u2705"),!r&&n&&a7({bundle:o,filename:x,checksum:E}),{bundle:o,filename:x,checksum:E}}catch(s){throw r||(n?Gs(s):f.error(U(s))),s instanceof Error?s:new Error(String(s))}}async function DF(t,e){await s7(t,e,!1)}async function py(t,e,r,n=!1){n||ee("Create channel"),r.apikey=r.apikey||ne();let o=await te().catch(()=>{});if(e=le(e,o?.config),!r.apikey)throw n||f.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||f.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let i=await re(r.apikey,r.supaHost,r.supaAnon);await ie(i,r.apikey,["write","all"]),await Me(i,r.apikey,e,4,n),n||f.info(`Creating channel ${e}#${t} to Capgo`);let a=await Ug(i,e);if(!a)throw n||f.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 bt(i,e),u=await ie(i,r.apikey,["write","all"]),c=await E1(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||f.error(`Cannot create Channel \u{1F640}
|
package/dist/package.json
CHANGED
package/dist/src/sdk.js
CHANGED
|
@@ -283,7 +283,7 @@ ${Z.default.gray(mu)} ${t}
|
|
|
283
283
|
`);let w=0,S=0;f(),s=setInterval(()=>{if(n&&a===u)return;g(),u=a;let F=Z.default.magenta(e[w]);if(n)process.stdout.write(`${F} ${a}...`);else if(t==="timer")process.stdout.write(`${F} ${a} ${v(c)}`);else{let b=".".repeat(Math.floor(S)).slice(0,3);process.stdout.write(`${F} ${a}${b}`)}w=w+1<e.length?w+1:0,S=S<e.length?S+.125:0},r)},m=(D="",w=0)=>{o=!1,clearInterval(s),g();let S=w===0?Z.default.green(Lm):w===1?Z.default.red(l_):Z.default.red(f_);a=E(D??a),t==="timer"?process.stdout.write(`${S} ${a} ${v(c)}
|
|
284
284
|
`):process.stdout.write(`${S} ${a}
|
|
285
285
|
`),p(),i()};return{start:A,stop:m,message:(D="")=>{a=E(D??a)}}};function h_(t,e){let n=["normal","bold","dim","italic","underline","strikethrough"].indexOf(t),i="\x1B[";return i+n+"m"+e+i+"0m"}var zt=class t{title=null;headers=[];rows=[];static narrowTheme={top:["\u2554","\u2550","\u2564","\u2557"],row:["\u2551"," ","\u2502","\u2551"],div:["\u255F","\u2500","\u253C","\u2562"],bot:["\u255A","\u2550","\u2567","\u255D"]};static wideTheme={top:["\u2554\u2550","\u2550","\u2550\u2564\u2550","\u2550\u2557"],row:["\u2551 "," "," \u2502 "," \u2551"],div:["\u255F\u2500","\u2500","\u2500\u253C\u2500","\u2500\u2562"],bot:["\u255A\u2550","\u2550","\u2550\u2567\u2550","\u2550\u255D"]};static roundTheme={top:["\u256D\u2500","\u2500","\u2500\u252C\u2500","\u2500\u256E"],row:["\u2502 "," "," \u2502 "," \u2502"],div:["\u251C\u2500","\u2500","\u2500\u253C\u2500","\u2500\u2524"],bot:["\u2570\u2500","\u2500","\u2500\u2534\u2500","\u2500\u256F"]};theme=t.wideTheme;columnWidth(){let e=[this.headers,...this.rows].filter(n=>n.length>0),r=e[0].map(n=>this.cast(n).length);for(let n of e.slice(1))for(let i=0;i<r.length;i++){let s=this.cast(n[i]).length;s>r[i]&&(r[i]=s)}return r}cast(e){return typeof e=="object"?"obj":e!==void 0&&typeof e.toString=="function"?e.toString():""}renderTitle(){return"[ "+this.title+" ]"}renderLine(e){let r=this.columnWidth();return e[0]+r.map(n=>e[1].repeat(n)).join(e[2])+e[3]}renderCell(e,r,n=!1){let i=this.cast(e),s=n?h_("bold",i):i,o=r-i.length,a=this.theme.row[1];switch(typeof e){case"number":return a.repeat(o)+s;case"string":return s+a.repeat(o);case"boolean":case"object":return a.repeat(Math.ceil(o/2))+h_("italic",i)+a.repeat(Math.floor(o/2));default:return a.repeat(o)}}renderRow(e,r=!1){let n=this.theme.row,i=this.columnWidth();return n[0]+e.map((s,o)=>this.renderCell(s,i[o],r)).join(n[2])+n[3]}toString(){let e=this.theme,r=this.headers.length>0,n=this.rows.length>0;return[this.title?this.renderTitle():"",r||n?this.renderLine(e.top):"",r?this.renderRow(this.headers,!0):"",r&&n?this.renderLine(e.div):"",...this.rows.map(i=>this.renderRow(i)),r||n?this.renderLine(e.bot):""].filter(i=>i.length>0).join(`
|
|
286
|
-
`)}};var l8=require("node:child_process"),Te=require("node:fs"),Vp=require("node:os"),xe=Ee(require("node:path")),jn=require("node:process"),is=Ee(Nl());var Zt=require("fs"),yu=(t=".",e="unknown")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bun":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm":(0,Zt.existsSync)(o)?"yarn":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npm":e},$l=(t=yu(),e=!1)=>{switch(t){case"bun":return e?"bun install":"install";case"pnpm":return e?"pnpm install":"install";case"yarn":return e?"yarn install":"install";case"npm":return e?"npm install":"install";case"unknown":return e?"unknown unknown":"unknown";default:return e?"npm install":"install"}},d_=(t=".",e="npx")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bunx":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm exec":(0,Zt.existsSync)(o)?"yarn dlx":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npx":e};function Ll(t,e){if(isNaN(t)||isNaN(e))throw new Error("Cannot compare against non-numbers");return t===e?0:t<e?-1:1}function g_(t=[],e=[]){return t.length&&!e.length?-1:!t.length&&e.length?1:0}function Um(t=[],e=[]){let r=Math.max(t.length,e.length);for(let n=0;n<r;n++){let i=t[n],s=e[n];if(i===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(i===void 0)return-1;if(typeof i=="string"&&typeof s=="number")return 1;if(typeof i=="number"&&typeof s=="string"||i<s)return-1;if(i>s)return 1}return 0}var Co="0|[1-9]\\d*",QU="\\d*[a-zA-Z-][a-zA-Z0-9-]*",e4=`(?<major>${Co})\\.(?<minor>${Co})\\.(?<patch>${Co})`,p_=`(?:${Co}|${QU})`,y_=`(?:-(?<prerelease>${p_}(?:\\.${p_})*))`,m_="[0-9A-Za-z-]+",D_=`(?:\\+(?<buildmetadata>${m_}(?:\\.${m_})*))`,w_=`v?${e4}${y_}?${D_}?`,E_=new RegExp(`^${w_}$`),v_="(?:<|>)?=?",t4="x|X|\\*",qm=`${Co}|${t4}`,Bl=`[v=\\s]*(?<major>${qm})(?:\\.(?<minor>${qm})(?:\\.(?<patch>${qm})${y_}?${D_}?)?)?`,b_=new RegExp(`^(?<operator>~>?|\\^|${v_})\\s*${Bl}$`),__=new RegExp(`^(?<operator>${v_})\\s*(${w_})$|^$`);function Hm(t){return typeof t=="number"&&!Number.isNaN(t)&&(!Number.isFinite(t)||0<=t&&t<=Number.MAX_SAFE_INTEGER)}var Vm=256;var r4=new RegExp(`^${Co}$`);function Qt(t){return t.split(".").filter(Boolean).map(e=>{if(r4.test(e)){let r=Number(e);if(Hm(r))return r}return e})}function tn(t){return t.split(".").filter(Boolean)}function Oi(t,e){let r=Number(t);if(!Hm(r))throw new TypeError(e);return r}function zn(t){return Number.isNaN(t.major)&&Number.isNaN(t.minor)&&Number.isNaN(t.patch)&&(t.prerelease===void 0||t.prerelease.length===0)&&(t.build===void 0||t.build.length===0)}function er(t,e){return t===e?0:Ll(t.major,e.major)||Ll(t.minor,e.minor)||Ll(t.patch,e.patch)||g_(t.prerelease,e.prerelease)||Um(t.prerelease,e.prerelease)}function zm(t){return t.toFixed(0)}function xi(t){let e=zm(t.major),r=zm(t.minor),n=zm(t.patch),i=t.prerelease?.join(".")??"",s=t.build?.join(".")??"";return[[`${e}.${r}.${n}`,i].filter(u=>u).join("-"),s].filter(u=>u).join("+")}function n4(t,e){if(zn(e))return!0;let r=er(t,e);switch(e.operator){case"=":case void 0:return r===0;case"!=":return r!==0;case">":return r>0;case"<":return r<0;case">=":return r>=0;case"<=":return r<=0}}function jl(t,e){for(let r of e)if(!n4(t,r))return!1;if(t.prerelease&&t.prerelease.length>0){for(let r of e){if(zn(r))continue;let{major:n,minor:i,patch:s,prerelease:o}=r;if(o&&o.length>0&&t.major===n&&t.minor===i&&t.patch===s)return!0}return!1}return!0}function Du(t,e){return e.some(r=>jl(t,r))}function i4(t=[]){let e=[...t],r=e.length;for(;r>=0;){let n=e[r];if(typeof n=="number"){e[r]=n+1;break}r-=1}return r===-1&&e.push(0),e}function wu(t=[],e){let r=i4(t);if(!e)return r;let n=Qt(e);if(n.every(i=>typeof i=="string")){if(n.every((i,s)=>i===r[s])&&typeof r[n.length]=="number")return r;n=[...n,0]}return n}function C_(t,e,r={}){let n=r.build!==void 0?tn(r.build):t.build??[];switch(e){case"premajor":return{major:t.major+1,minor:0,patch:0,prerelease:wu(t.prerelease,r.prerelease),build:n};case"preminor":return{major:t.major,minor:t.minor+1,patch:0,prerelease:wu(t.prerelease,r.prerelease),build:n};case"prepatch":return{major:t.major,minor:t.minor,patch:t.patch+1,prerelease:wu(t.prerelease,r.prerelease),build:n};case"prerelease":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:wu(t.prerelease,r.prerelease),build:n}}case"major":return{major:(t.prerelease??[]).length===0||t.minor!==0||t.patch!==0?t.major+1:t.major,minor:0,patch:0,prerelease:[],build:n};case"minor":{let s=(t.prerelease??[]).length===0||t.patch!==0?t.minor+1:t.minor;return{major:t.major,minor:s,patch:0,prerelease:[],build:n}}case"patch":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:[],build:n}}case"pre":return{major:t.major,minor:t.minor,patch:t.patch,prerelease:wu(t.prerelease,r.prerelease),build:n};default:throw new TypeError(`Cannot increment version: invalid argument ${e}`)}}var Ml={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},So={operator:void 0,...Ml};function Km(t,e){return er(t,e)>0}function fs(t,e){return er(t,e)<0}function s4(t){let r=t.match(__)?.groups;if(!r)return null;let{operator:n,prerelease:i,buildmetadata:s}=r,o=r.major?{major:Oi(r.major,`Cannot parse comparator ${t}: invalid major version`),minor:Oi(r.minor,`Cannot parse comparator ${t}: invalid minor version`),patch:Oi(r.patch,`Cannot parse comparator ${t}: invalid patch version`),prerelease:i?Qt(i):[],build:s?tn(s):[]}:Ml;return{operator:n||void 0,...o}}function ze(t){return!t||t.toLowerCase()==="x"||t==="*"}function o4(t){if(!ze(t.major))return ze(t.minor)?{operator:">=",major:+t.major,minor:0,patch:0,prerelease:[],build:[]}:ze(t.patch)?{operator:">=",major:+t.major,minor:+t.minor,patch:0,prerelease:[],build:[]}:{operator:">=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:t.prerelease?Qt(t.prerelease):[],build:[]}}function a4(t){if(!ze(t.major))return ze(t.minor)?{operator:"<",major:+t.major+1,minor:0,patch:0,prerelease:[],build:[]}:ze(t.patch)?{operator:"<",major:+t.major,minor:+t.minor+1,patch:0,prerelease:[],build:[]}:t.prerelease?{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:Qt(t.prerelease),build:[]}:{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:[],build:[]}}function u4(t){let e=t.match(new RegExp(`^${Bl}`)),r=e?.groups;if(!r)return null;let n=e[0].length,i=t.slice(n).match(/^\s+-\s+/);if(!i)return null;let s=i[0].length,a=t.slice(n+s).match(new RegExp(`^${Bl}\\s*$`))?.groups;if(!a)return null;let u=o4(r),c=a4(a);return[u,c].filter(Boolean)}function c4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[So];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return i===0?[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];let a=Qt(t.prerelease??"");return i===0?s===0?[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s,patch:o+1}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i+1,minor:0,patch:0}]}function l4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[So];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]}function f4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return n?[{operator:"<",major:i,minor:0,patch:0}]:[{operator:"<",major:i,minor:0,patch:0}];if(n)return[{operator:"<",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=tn(t.build??"");return[{operator:"<",major:i,minor:s,patch:o,prerelease:a,build:u}]}function h4(t){let e=ze(t.minor),r=ze(t.patch),n=+t.major,i=+t.minor,s=+t.patch;if(e)return r?[{operator:"<",major:n+1,minor:0,patch:0}]:[{operator:"<",major:n,minor:i+1,patch:0}];if(r)return[{operator:"<",major:n,minor:i+1,patch:0}];let o=Qt(t.prerelease??""),a=tn(t.build??"");return[{operator:"<=",major:n,minor:i,patch:s,prerelease:o,build:a}]}function d4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return[{operator:">=",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=tn(t.build??"");return[{operator:">",major:i,minor:s,patch:o,prerelease:a,build:u}]}function p4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[So];if(r)return n?[{operator:">=",major:i,minor:0,patch:0}]:[{operator:">=",major:i,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=tn(t.build??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a,build:u}]}function m4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[So];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=tn(t.build??"");return[{operator:void 0,major:i,minor:s,patch:o,prerelease:a,build:u}]}function g4(t){let e=t.match(b_)?.groups;if(!e)return s4(t);switch(e.operator){case"^":return c4(e);case"~":case"~>":return l4(e);case"<":return f4(e);case"<=":return h4(e);case">":return d4(e);case">=":return p4(e);case"=":case"":return m4(e);default:throw new Error(`Cannot parse version range: '${e.operator}' is not a valid operator`)}}function y4(t){return t.split(/\s+/).flatMap(g4)}function ql(t){let e=t.replaceAll(/(?<=<|>|=|~|\^)(\s+)/g,"").split(/\s*\|\|\s*/).map(r=>u4(r)||y4(r));if(e.some(r=>r.includes(null)))throw new TypeError(`Cannot parse version range: range "${t}" is invalid`);return e}function Ot(t){if(typeof t!="string")throw new TypeError(`Cannot parse version as version must be a string: received ${typeof t}`);if(t.length>Vm)throw new TypeError(`Cannot parse version as version length is too long: length is ${t.length}, max length is ${Vm}`);t=t.trim();let e=t.match(E_)?.groups;if(!e)throw new TypeError(`Cannot parse version: ${t}`);let r=Oi(e.major,`Cannot parse version ${t}: invalid major version`),n=Oi(e.minor,`Cannot parse version ${t}: invalid minor version`),i=Oi(e.patch,`Cannot parse version ${t}: invalid patch version`),s=e.prerelease?Qt(e.prerelease):[],o=e.buildmetadata?tn(e.buildmetadata):[];return{major:r,minor:n,patch:i,prerelease:s,build:o}}function S_(t,e){let r=t.operator,n=e.operator;if(r===void 0)return zn(t)?!0:Du(t,[[e]]);if(n===void 0)return zn(e)?!0:Du(e,[[t]]);let i=er(t,e);return(r===">="||r===">")&&(n===">="||n===">")||(r==="<="||r==="<")&&(n==="<="||n==="<")||i===0&&((r===">="||r==="<=")&&(n===">="||n==="<="))||i===-1&&(r===">="||r===">")&&(n==="<="||n==="<")||i===1&&(r==="<="||r==="<")&&(n===">="||n===">")}function D4(t){return t.every(e=>e.some(r=>w4(r)))}function w4(t){for(let e=0;e<t.length-1;e++){let r=t[e];for(let n of t.slice(e+1))if(!S_(r,n))return!1}return!0}function A_(t,e){return D4([t,e])&&t.some(r=>e.some(n=>r.every(i=>n.every(s=>S_(i,s)))))}function O_(t){try{return Ot(t),!0}catch{return!1}}function x_(t,e){return er(t,e)>=0}var Za=Ee(SS()),fb=Ee(aD()),f8=Ee(kA()),zp=Ee(Vh());var Bi={name:"@capgo/cli",version:"7.44.0",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^7.4.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24.9.1","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};async function zh(t){try{let r=`https://registry.npmjs.org/${encodeURIComponent(t.toLowerCase())}`,n=await fetch(r,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});return n.ok&&(await n.json())["dist-tags"]?.latest||null}catch{return null}}async function Xe(){let t=await zh("@capgo/cli")??"",e=t?.split(".")[0];t!==Bi.version&&y.warning(`\u{1F6A8} You are using @capgo/cli@${Bi.version} it's not the latest version.
|
|
286
|
+
`)}};var l8=require("node:child_process"),Te=require("node:fs"),Vp=require("node:os"),xe=Ee(require("node:path")),jn=require("node:process"),is=Ee(Nl());var Zt=require("fs"),yu=(t=".",e="unknown")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bun":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm":(0,Zt.existsSync)(o)?"yarn":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npm":e},$l=(t=yu(),e=!1)=>{switch(t){case"bun":return e?"bun install":"install";case"pnpm":return e?"pnpm install":"install";case"yarn":return e?"yarn install":"install";case"npm":return e?"npm install":"install";case"unknown":return e?"unknown unknown":"unknown";default:return e?"npm install":"install"}},d_=(t=".",e="npx")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bunx":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm exec":(0,Zt.existsSync)(o)?"yarn dlx":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npx":e};function Ll(t,e){if(isNaN(t)||isNaN(e))throw new Error("Cannot compare against non-numbers");return t===e?0:t<e?-1:1}function g_(t=[],e=[]){return t.length&&!e.length?-1:!t.length&&e.length?1:0}function Um(t=[],e=[]){let r=Math.max(t.length,e.length);for(let n=0;n<r;n++){let i=t[n],s=e[n];if(i===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(i===void 0)return-1;if(typeof i=="string"&&typeof s=="number")return 1;if(typeof i=="number"&&typeof s=="string"||i<s)return-1;if(i>s)return 1}return 0}var Co="0|[1-9]\\d*",QU="\\d*[a-zA-Z-][a-zA-Z0-9-]*",e4=`(?<major>${Co})\\.(?<minor>${Co})\\.(?<patch>${Co})`,p_=`(?:${Co}|${QU})`,y_=`(?:-(?<prerelease>${p_}(?:\\.${p_})*))`,m_="[0-9A-Za-z-]+",D_=`(?:\\+(?<buildmetadata>${m_}(?:\\.${m_})*))`,w_=`v?${e4}${y_}?${D_}?`,E_=new RegExp(`^${w_}$`),v_="(?:<|>)?=?",t4="x|X|\\*",qm=`${Co}|${t4}`,Bl=`[v=\\s]*(?<major>${qm})(?:\\.(?<minor>${qm})(?:\\.(?<patch>${qm})${y_}?${D_}?)?)?`,b_=new RegExp(`^(?<operator>~>?|\\^|${v_})\\s*${Bl}$`),__=new RegExp(`^(?<operator>${v_})\\s*(${w_})$|^$`);function Hm(t){return typeof t=="number"&&!Number.isNaN(t)&&(!Number.isFinite(t)||0<=t&&t<=Number.MAX_SAFE_INTEGER)}var Vm=256;var r4=new RegExp(`^${Co}$`);function Qt(t){return t.split(".").filter(Boolean).map(e=>{if(r4.test(e)){let r=Number(e);if(Hm(r))return r}return e})}function tn(t){return t.split(".").filter(Boolean)}function Oi(t,e){let r=Number(t);if(!Hm(r))throw new TypeError(e);return r}function zn(t){return Number.isNaN(t.major)&&Number.isNaN(t.minor)&&Number.isNaN(t.patch)&&(t.prerelease===void 0||t.prerelease.length===0)&&(t.build===void 0||t.build.length===0)}function er(t,e){return t===e?0:Ll(t.major,e.major)||Ll(t.minor,e.minor)||Ll(t.patch,e.patch)||g_(t.prerelease,e.prerelease)||Um(t.prerelease,e.prerelease)}function zm(t){return t.toFixed(0)}function xi(t){let e=zm(t.major),r=zm(t.minor),n=zm(t.patch),i=t.prerelease?.join(".")??"",s=t.build?.join(".")??"";return[[`${e}.${r}.${n}`,i].filter(u=>u).join("-"),s].filter(u=>u).join("+")}function n4(t,e){if(zn(e))return!0;let r=er(t,e);switch(e.operator){case"=":case void 0:return r===0;case"!=":return r!==0;case">":return r>0;case"<":return r<0;case">=":return r>=0;case"<=":return r<=0}}function jl(t,e){for(let r of e)if(!n4(t,r))return!1;if(t.prerelease&&t.prerelease.length>0){for(let r of e){if(zn(r))continue;let{major:n,minor:i,patch:s,prerelease:o}=r;if(o&&o.length>0&&t.major===n&&t.minor===i&&t.patch===s)return!0}return!1}return!0}function Du(t,e){return e.some(r=>jl(t,r))}function i4(t=[]){let e=[...t],r=e.length;for(;r>=0;){let n=e[r];if(typeof n=="number"){e[r]=n+1;break}r-=1}return r===-1&&e.push(0),e}function wu(t=[],e){let r=i4(t);if(!e)return r;let n=Qt(e);if(n.every(i=>typeof i=="string")){if(n.every((i,s)=>i===r[s])&&typeof r[n.length]=="number")return r;n=[...n,0]}return n}function C_(t,e,r={}){let n=r.build!==void 0?tn(r.build):t.build??[];switch(e){case"premajor":return{major:t.major+1,minor:0,patch:0,prerelease:wu(t.prerelease,r.prerelease),build:n};case"preminor":return{major:t.major,minor:t.minor+1,patch:0,prerelease:wu(t.prerelease,r.prerelease),build:n};case"prepatch":return{major:t.major,minor:t.minor,patch:t.patch+1,prerelease:wu(t.prerelease,r.prerelease),build:n};case"prerelease":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:wu(t.prerelease,r.prerelease),build:n}}case"major":return{major:(t.prerelease??[]).length===0||t.minor!==0||t.patch!==0?t.major+1:t.major,minor:0,patch:0,prerelease:[],build:n};case"minor":{let s=(t.prerelease??[]).length===0||t.patch!==0?t.minor+1:t.minor;return{major:t.major,minor:s,patch:0,prerelease:[],build:n}}case"patch":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:[],build:n}}case"pre":return{major:t.major,minor:t.minor,patch:t.patch,prerelease:wu(t.prerelease,r.prerelease),build:n};default:throw new TypeError(`Cannot increment version: invalid argument ${e}`)}}var Ml={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},So={operator:void 0,...Ml};function Km(t,e){return er(t,e)>0}function fs(t,e){return er(t,e)<0}function s4(t){let r=t.match(__)?.groups;if(!r)return null;let{operator:n,prerelease:i,buildmetadata:s}=r,o=r.major?{major:Oi(r.major,`Cannot parse comparator ${t}: invalid major version`),minor:Oi(r.minor,`Cannot parse comparator ${t}: invalid minor version`),patch:Oi(r.patch,`Cannot parse comparator ${t}: invalid patch version`),prerelease:i?Qt(i):[],build:s?tn(s):[]}:Ml;return{operator:n||void 0,...o}}function ze(t){return!t||t.toLowerCase()==="x"||t==="*"}function o4(t){if(!ze(t.major))return ze(t.minor)?{operator:">=",major:+t.major,minor:0,patch:0,prerelease:[],build:[]}:ze(t.patch)?{operator:">=",major:+t.major,minor:+t.minor,patch:0,prerelease:[],build:[]}:{operator:">=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:t.prerelease?Qt(t.prerelease):[],build:[]}}function a4(t){if(!ze(t.major))return ze(t.minor)?{operator:"<",major:+t.major+1,minor:0,patch:0,prerelease:[],build:[]}:ze(t.patch)?{operator:"<",major:+t.major,minor:+t.minor+1,patch:0,prerelease:[],build:[]}:t.prerelease?{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:Qt(t.prerelease),build:[]}:{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:[],build:[]}}function u4(t){let e=t.match(new RegExp(`^${Bl}`)),r=e?.groups;if(!r)return null;let n=e[0].length,i=t.slice(n).match(/^\s+-\s+/);if(!i)return null;let s=i[0].length,a=t.slice(n+s).match(new RegExp(`^${Bl}\\s*$`))?.groups;if(!a)return null;let u=o4(r),c=a4(a);return[u,c].filter(Boolean)}function c4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[So];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return i===0?[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];let a=Qt(t.prerelease??"");return i===0?s===0?[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s,patch:o+1}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i+1,minor:0,patch:0}]}function l4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[So];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]}function f4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return n?[{operator:"<",major:i,minor:0,patch:0}]:[{operator:"<",major:i,minor:0,patch:0}];if(n)return[{operator:"<",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=tn(t.build??"");return[{operator:"<",major:i,minor:s,patch:o,prerelease:a,build:u}]}function h4(t){let e=ze(t.minor),r=ze(t.patch),n=+t.major,i=+t.minor,s=+t.patch;if(e)return r?[{operator:"<",major:n+1,minor:0,patch:0}]:[{operator:"<",major:n,minor:i+1,patch:0}];if(r)return[{operator:"<",major:n,minor:i+1,patch:0}];let o=Qt(t.prerelease??""),a=tn(t.build??"");return[{operator:"<=",major:n,minor:i,patch:s,prerelease:o,build:a}]}function d4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return[{operator:">=",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=tn(t.build??"");return[{operator:">",major:i,minor:s,patch:o,prerelease:a,build:u}]}function p4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[So];if(r)return n?[{operator:">=",major:i,minor:0,patch:0}]:[{operator:">=",major:i,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=tn(t.build??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a,build:u}]}function m4(t){let e=ze(t.major),r=ze(t.minor),n=ze(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[So];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=tn(t.build??"");return[{operator:void 0,major:i,minor:s,patch:o,prerelease:a,build:u}]}function g4(t){let e=t.match(b_)?.groups;if(!e)return s4(t);switch(e.operator){case"^":return c4(e);case"~":case"~>":return l4(e);case"<":return f4(e);case"<=":return h4(e);case">":return d4(e);case">=":return p4(e);case"=":case"":return m4(e);default:throw new Error(`Cannot parse version range: '${e.operator}' is not a valid operator`)}}function y4(t){return t.split(/\s+/).flatMap(g4)}function ql(t){let e=t.replaceAll(/(?<=<|>|=|~|\^)(\s+)/g,"").split(/\s*\|\|\s*/).map(r=>u4(r)||y4(r));if(e.some(r=>r.includes(null)))throw new TypeError(`Cannot parse version range: range "${t}" is invalid`);return e}function Ot(t){if(typeof t!="string")throw new TypeError(`Cannot parse version as version must be a string: received ${typeof t}`);if(t.length>Vm)throw new TypeError(`Cannot parse version as version length is too long: length is ${t.length}, max length is ${Vm}`);t=t.trim();let e=t.match(E_)?.groups;if(!e)throw new TypeError(`Cannot parse version: ${t}`);let r=Oi(e.major,`Cannot parse version ${t}: invalid major version`),n=Oi(e.minor,`Cannot parse version ${t}: invalid minor version`),i=Oi(e.patch,`Cannot parse version ${t}: invalid patch version`),s=e.prerelease?Qt(e.prerelease):[],o=e.buildmetadata?tn(e.buildmetadata):[];return{major:r,minor:n,patch:i,prerelease:s,build:o}}function S_(t,e){let r=t.operator,n=e.operator;if(r===void 0)return zn(t)?!0:Du(t,[[e]]);if(n===void 0)return zn(e)?!0:Du(e,[[t]]);let i=er(t,e);return(r===">="||r===">")&&(n===">="||n===">")||(r==="<="||r==="<")&&(n==="<="||n==="<")||i===0&&((r===">="||r==="<=")&&(n===">="||n==="<="))||i===-1&&(r===">="||r===">")&&(n==="<="||n==="<")||i===1&&(r==="<="||r==="<")&&(n===">="||n===">")}function D4(t){return t.every(e=>e.some(r=>w4(r)))}function w4(t){for(let e=0;e<t.length-1;e++){let r=t[e];for(let n of t.slice(e+1))if(!S_(r,n))return!1}return!0}function A_(t,e){return D4([t,e])&&t.some(r=>e.some(n=>r.every(i=>n.every(s=>S_(i,s)))))}function O_(t){try{return Ot(t),!0}catch{return!1}}function x_(t,e){return er(t,e)>=0}var Za=Ee(SS()),fb=Ee(aD()),f8=Ee(kA()),zp=Ee(Vh());var Bi={name:"@capgo/cli",version:"7.44.1",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^7.4.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24.9.1","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};async function zh(t){try{let r=`https://registry.npmjs.org/${encodeURIComponent(t.toLowerCase())}`,n=await fetch(r,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});return n.ok&&(await n.json())["dist-tags"]?.latest||null}catch{return null}}async function Xe(){let t=await zh("@capgo/cli")??"",e=t?.split(".")[0];t!==Bi.version&&y.warning(`\u{1F6A8} You are using @capgo/cli@${Bi.version} it's not the latest version.
|
|
287
287
|
Please use @capgo/cli@${t}" or @capgo/cli@${e} to keep up to date with the latest features and bug fixes.`)}async function KT(t,e,r,n,i,s="\u2705"){await _e(r,{channel:t,event:n,icon:s,user_id:e,...i?{tags:{"app-id":i}}:{},notify:!1})}var E0=require("node:buffer"),GT=require("node:crypto"),xY=(()=>{let t=[];for(let e=0;e<256;e++){let r=e;for(let n=0;n<8;n++)r=r&1?3988292384^r>>>1:r>>>1;t[e]=r}return t})();function TY(t){let e=4294967295;for(let r=0;r<t.length;r++){let n=t[r];e=xY[(e^n)&255]^e>>>8}return e=e^4294967295,(e>>>0).toString(16).padStart(8,"0")}async function ei(t,e="sha256"){let r=E0.Buffer.isBuffer(t)?t:E0.Buffer.from(t);if(e==="crc32")return TY(r);let n=(0,GT.createHash)(e);return n.update(r),n.digest("hex")}var sl=Ee(gM());async function yM(){let t=await(0,sl.loadConfig)();return{config:t.app.extConfig,path:t.app.extConfigFilePath}}async function qv(t,e,r=!1){let n=await(0,sl.loadConfig)(),{extConfig:i}=n.app;i&&(i.plugins||(i.plugins={extConfig:{},[t]:{}}),i.plugins[t]||(i.plugins[t]={}),r?i=e.config:i.plugins[t]=e.config.plugins?.[t],(0,sl.writeConfig)(i,n.app.extConfigFilePath))}async function Wa(t,e=!1){await qv("CapacitorUpdater",t,e)}var eu=".capgo_key",Nr=".capgo_key_v2",Kp=`${eu}.pub`,yi=`${Nr}.pub`,i8="https://capgo.app",s8="https://files.capgo.app",o8="https://api.capgo.app",a8="https://console.capgo.app",hb=12e4,Kle=1024*1024*20,Gle=1024*1024*1024,Wle=1024*1024*99,Qa="package.json",tu=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-z-][0-9a-z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-z-][0-9a-z-]*))*))?(?:\+([0-9a-z-]+(?:\.[0-9a-z-]+)*))?$/i,W=t=>t?`
|
|
288
288
|
${f8.default.render(t)}`:"";function Hp(t){return new Promise(e=>{setTimeout(e,t)})}function $r(t){return(0,is.isMonorepo)(t)?(0,is.findMonorepoRoot)(t):(0,is.isNXMonorepo)(t)?(0,is.findNXMonorepoRoot)(t):t}function Xle(t=$r((0,jn.cwd)()),e=void 0){let r=e?.split(",")[0];if(r&&!(0,Te.existsSync)(r)){let i=`Package.json at ${r} does not exist`;throw y.error(i),new Error(i)}let n=(0,Te.readFileSync)(r??(0,xe.join)(t,Qa));return JSON.parse(n)}function ss(t=$r((0,jn.cwd)()),e=void 0){return Xle(t,e).version??""}function u8(t){let e=t.replace("^","").replace("~","");if(O_(e))try{let r=Ot(e);return xi(r)}catch{return e}return e}async function os(t,e=(0,jn.cwd)(),r){if(t!=="@capgo/capacitor-updater")return null;let n=r?(0,xe.dirname)(r):e;try{let u=`${t}/package.json`,{createRequire:c}=await import("node:module"),h=c((0,xe.join)(n,"package.json")).resolve(u),d=JSON.parse((0,Te.readFileSync)(h,"utf-8"));if(d.version)return d.version}catch{}let i=n,s=xe.default.parse(i).root;for(;i!==s;){let u=(0,xe.join)(i,"node_modules",t,Qa);if((0,Te.existsSync)(u))try{let l=JSON.parse((0,Te.readFileSync)(u,"utf-8"));if(l.version)return l.version}catch{}let c=(0,xe.dirname)(i);if(c===i)break;i=c}let o=null,a=(0,xe.join)(e,"ios","App","Podfile");if((0,Te.existsSync)(a))try{let c=(0,Te.readFileSync)(a,"utf-8").match(/pod\s+['"]CapgoCapacitorUpdater['"],\s*:path\s*=>\s*['"]([^'"]+)['"]/);c?.[1]&&(o=(0,xe.resolve)((0,xe.join)(e,"ios","App",c[1])))}catch{}if(!o){let u=(0,xe.join)(e,"android","capacitor.settings.gradle");if((0,Te.existsSync)(u))try{let l=(0,Te.readFileSync)(u,"utf-8").match(/project\(':capgo-capacitor-updater'\)\.projectDir\s*=\s*new\s+File\(['"]([^'"]+)['"]/);l?.[1]&&(o=(0,xe.resolve)((0,xe.join)(e,"android",l[1])).replace(/\/android$/,""))}catch{}}if(o){let u=(0,xe.join)(o,Qa);if((0,Te.existsSync)(u))try{let c=JSON.parse((0,Te.readFileSync)(u,"utf-8"));if(c.version)return c.version}catch{}}try{let c=(await Gp(e)).get(t);if(c)return c}catch{}return null}async function Gp(t=$r((0,jn.cwd)()),e=void 0){let r=e?.split(",");if(r??=[(0,xe.join)(t,Qa)],r){for(let i of r)if(!(0,Te.existsSync)(i)){let s=`Package.json at ${i} does not exist`;throw y.error(s),new Error(s)}}let n=new Map;for(let i of r){let s=(0,Te.readFileSync)(i),o=JSON.parse(s);for(let a in o.dependencies)n.set(a,u8(o.dependencies[a]));for(let a in o.devDependencies)n.set(a,u8(o.devDependencies[a]))}return n}async function de(){try{let t=await yM();if(!t){let e="No capacitor config file found, run `cap init` first";throw y.error(e),new Error(e)}return t}catch(t){let e=`No capacitor config file found, run \`cap init\` first ${W(t)}`;throw y.error(e),new Error(e)}}async function Yle(t,e){let r=await de();return r?.config&&(r.config.plugins??={},r.config.plugins.extConfig??={},r.config.plugins[t]??={},r.config.plugins[t]={...r.config.plugins[t],...e},await qv(t,r)),r}async function h8(t){return Yle("CapacitorUpdater",t)}async function _n(){try{let t=await de(),e={host:t?.config?.plugins?.CapacitorUpdater?.localHost||i8,hostWeb:t?.config?.plugins?.CapacitorUpdater?.localWebHost||a8,hostFilesApi:t?.config?.plugins?.CapacitorUpdater?.localApiFiles||s8,hostApi:t?.config?.plugins?.CapacitorUpdater?.localApi||o8};return t?.config?.plugins?.CapacitorUpdater?.localSupa&&t?.config?.plugins?.CapacitorUpdater?.localSupaAnon&&(y.info("Using custom supabase instance from capacitor.config.json"),e.supaKey=t?.config?.plugins?.CapacitorUpdater?.localSupaAnon,e.supaHost=t?.config?.plugins?.CapacitorUpdater?.localSupa),e}catch{return{host:i8,hostWeb:a8,hostFilesApi:s8,hostApi:o8}}}var Jle=/([A-Za-z0-9]+)\.(java|swift|kt|scala)$/;async function Wp(){let t=await _n();try{let e=await fetch(`${t.hostApi}/private/config`);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return{...await e.json(),...t}}catch{return y.info(`Local config ${W(t)}`),t}}async function d8(){let t=await _n();try{let e=await fetch(`${t.hostFilesApi}/files/config`);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return await e.json()}catch{return{partialUpload:!1,TUSUpload:!1,partialUploadForced:!1,TUSUploadForced:!1,maxUploadLength:Gle,maxChunkSize:Wle,alertUploadSize:Kle}}}async function pe(t,e,r){let n=await Wp();if(e&&r&&(y.info("Using custom supabase instance from provided options"),n.supaHost=e,n.supaKey=r),!n.supaHost||!n.supaKey)throw y.error("Cannot connect to server please try again later"),new Error("Cannot connect to server please try again later");return(0,Za.createClient)(n.supaHost,n.supaKey,{auth:{persistSession:!1},global:{headers:{capgkey:t}}})}async function Zle(t,e,r){let{data:n}=await t.rpc("is_allowed_capgkey",{apikey:e,keymode:r}).single();if(!n){y.error("Invalid API key or insufficient permissions.");let s=`Your key should be: ${r.map((o,a)=>r.length===1?`"${o}"`:a===r.length-1?`or "${o}"`:`"${o}", `).join("")} mode.`;throw y.error(s),new Error("Invalid API key or insufficient permissions.")}}async function p8(t,e){let{data:r}=await t.rpc("is_paying_org",{orgid:e}).single();return r||!1}async function m8(t,e){let{data:r}=await t.rpc("is_trial_org",{orgid:e}).single();return r||0}async function Qle(t,e){let{data:r}=await t.rpc("is_allowed_action_org",{orgid:e}).single();return!!r}async function efe(t,e,r){let{data:n}=await t.rpc("is_allowed_action",{apikey:r,appid:e}).single();return!!n}var hr=(o=>(o[o.none=0]="none",o[o.read=1]="read",o[o.upload=2]="upload",o[o.write=3]="write",o[o.admin=4]="admin",o[o.super_admin=5]="super_admin",o))(hr||{}),ru=(t,e)=>t>=e;async function g8(t,e,r){let{data:n,error:i}=await t.rpc("get_org_perm_for_apikey",{apikey:e,app_id:r}).single();if(i)throw y.error("Cannot get permissions for organization!"),console.error(i),new Error("Cannot get permissions for organization");if(n.includes("perm")){let a=null;switch(n){case"perm_none":{a=0;break}case"perm_read":{a=1;break}case"perm_upload":{a=2;break}case"perm_write":{a=3;break}case"perm_admin":{a=4;break}case"perm_owner":{a=5;break}default:throw n.includes("invite")?(y.info("Please accept/deny the organization invitation before trying to access the app"),new Error("Organization invitation pending")):(y.error(`Invalid output when fetching organization permission. Response: ${n}`),new Error(`Invalid output when fetching organization permission. Response: ${n}`))}return{okay:!0,data:a}}let o=null;switch(n){case"INVALID_APIKEY":{o="INVALID_APIKEY";break}case"NO_APP":{o="NO_APP";break}case"NO_ORG":{o="NO_ORG";break}default:throw y.error(`Invalid error when fetching organization permission. Response: ${n}`),new Error(`Invalid error when fetching organization permission. Response: ${n}`)}return{okay:!1,error:o}}async function y8(t,e,r){let{data:n,error:i}=await t.rpc("get_organization_cli_warnings",{orgid:e,cli_version:r});if(i){y.error(`Cannot get cli warnings: ${W(i)}`);return}if(n.length>0){y.warn(`Found ${n.length} cli warnings for your organization.`);let s=null;for(let o of n){if(typeof o!="object"||typeof o.message!="string"||typeof o.fatal!="boolean"){y.error(`Invalid cli warning: ${o}`);continue}let a=o;a.fatal?(y.error(`${a.message.replaceAll("\\n",`
|
|
289
289
|
`)}`),s=new Error(a.message)):y.warn(`${a.message.replaceAll("\\n",`
|
|
@@ -340,7 +340,7 @@ ${W(s)}`),new Error(`Cannot retrieve unknown version for app ${e}: ${W(s)}`)}fun
|
|
|
340
340
|
The bundle size is ${D} Mb, this may take a while to download for users
|
|
341
341
|
`),y.info(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
|
|
342
342
|
`),e.verbose&&(y.info("[Verbose] Bundle size details:"),y.info(` - Actual size: ${D} MB (${l?.byteLength} bytes)`),y.info(` - Alert threshold: ${Math.floor(o/1024/1024)} MB`),y.info(` - Maximum allowed: ${w} MB`),y.info("[Verbose] Sending 'App Too Large' event to analytics...")),await _e(r,{channel:"app-error",event:"App Too Large",icon:"\u{1F69B}",user_id:n,tags:{"app-id":i},notify:!1},e.verbose),e.verbose&&y.info("[Verbose] Event sent successfully")):e.verbose&&y.info(`[Verbose] Bundle size OK: ${D} MB (under ${Math.floor(o/1024/1024)} MB alert threshold)`),e.verbose&&y.info("[Verbose] Bundle preparation complete, returning bundle data"),{zipped:l,ivSessionKey:a,sessionKey:u,checksum:c,encryptionMethod:h,finalKeyData:d}}async function ade(t,e,r,n,i,s,o,a){let u=At();u.start("Uploading Bundle");let c=performance.now(),l=!1;if(o.verbose&&(y.info("[Verbose] uploadBundleToCapgoCloud called:"),y.info(` - Bundle size: ${Math.floor(s.byteLength/1024)} KB`),y.info(` - App ID: ${r}`),y.info(` - Bundle version: ${n}`),y.info(` - Chunk size: ${Math.floor(a/1024/1024)} MB`)),o.dryUpload){u.stop(`Dry run, bundle not uploaded
|
|
343
|
-
Bundle uploaded \u{1F4AA} in 0 seconds`),o.verbose&&y.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let f=await _n();if(o.verbose&&y.info("[Verbose] Local config retrieved for upload"),o.multipart!==void 0&&o.multipart||o.tus!==void 0&&o.tus){o.multipart?y.info("Uploading bundle with multipart is deprecated, we upload with TUS instead"):y.info("Uploading bundle with TUS protocol"),o.verbose&&(y.info("[Verbose] Starting TUS resumable upload..."),y.info(` - Host: ${f.hostWeb}`),y.info(` - Chunk size: ${Math.floor(a/1024/1024)} MB`)),await S8(t,s,i,r,n,u,f,a),l=!0,o.verbose&&y.info("[Verbose] TUS upload completed, updating database with R2 path...");let p=`orgs/${i}/apps/${r}/${n}.zip`,{error:g}=await e.from("app_versions").update({r2_path:p}).eq("name",n).eq("app_id",r);if(g)return y.error(`Cannot finish TUS upload ${W(g)}`),o.verbose&&y.info(`[Verbose] Database update failed: ${W(g)}`),Promise.reject(new Error("Cannot finish TUS upload"));o.verbose&&y.info(`[Verbose] Database updated with R2 path: ${p}`)}else{o.verbose&&y.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let p=await E8(e,r,n);if(!p)return y.error("Cannot get upload url"),o.verbose&&y.info("[Verbose] Failed to retrieve presigned upload URL from database"),Promise.reject(new Error("Cannot get upload url"));o.verbose&&(y.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),y.info(` - Timeout: ${o.timeout||hb}ms`),y.info(" - Retry attempts: 5"),y.info(" - Content-Type: application/zip"));let g=new AbortController,E=setTimeout(()=>g.abort(),o.timeout||hb);try{let v=await fetch(p,{method:"PUT",body:s,headers:{"Content-Type":"application/zip"},signal:g.signal});if(!v.ok)throw new Error(`HTTP error! status: ${v.status}`)}finally{clearTimeout(E)}o.verbose&&y.info("[Verbose] HTTP PUT upload completed successfully")}}catch(f){let g=((performance.now()-c)/1e3).toFixed(2);if(u.stop(`Failed to upload bundle ( after ${g} seconds)`),o.verbose&&(y.info(`[Verbose] Upload failed after ${g} seconds`),y.info(`[Verbose] Error type: ${f instanceof Error?"Error":typeof f}`)),f instanceof Error&&f.message.includes("HTTP error"))try{let E=f.message.match(/status: (\d+)/),v=E?E[1]:"unknown";y.error(`Upload failed with status ${v}: ${f.message}`)}catch{y.error(`Upload failed: ${f.message}`)}else o.verbose&&y.info(`[Verbose] Non-HTTP error: ${W(f)}`),o.tus?y.error(`Cannot upload bundle please contact support if the issue persists ${W(f)}`):y.error(`Cannot upload bundle ( try again with --tus option) ${W(f)}`);throw o.verbose&&y.info("[Verbose] Cleaning up failed version from database..."),await A8(e,r,n),o.verbose&&y.info("[Verbose] Failed version cleaned up"),f instanceof Error?f:new Error(String(f))}let d=((performance.now()-c)/1e3).toFixed(2);u.stop(`Bundle uploaded \u{1F4AA} in (${d} seconds)`),o.verbose&&(y.info("[Verbose] Upload successful:"),y.info(` - Upload time: ${d} seconds`),y.info(` - Upload method: ${l?"TUS (resumable)":"Standard HTTP PUT"}`),y.info(` - Bundle size: ${Math.floor(s.byteLength/1024)} KB`),y.info("[Verbose] Sending performance event...")),await _e(t,{channel:"performance",event:l?"TUS upload zip performance":"Upload zip performance",icon:"\u{1F684}",user_id:i,tags:{"app-id":r,time:d},notify:!1},o.verbose),o.verbose&&y.info("[Verbose] Performance event sent successfully")}async function ude(t,e,r){let{data:n,error:i}=await t.from("channels").select("version ( id, name, deleted )").eq("app_id",e).eq("name",r);if(i){y.error(`Cannot delete linked bundle on upload ${W(i)}`);return}if(n.length===0){y.warn("No linked bundle found in the channel you are trying to upload to");return}let s=n[0].version;if(s.deleted){y.warn("The linked bundle is already deleted");return}let{error:o}=await t.from("app_versions").update({deleted:!0}).eq("id",s.id);if(o){y.error(`Cannot delete linked bundle on upload ${W(o)}`);return}y.info("Linked bundle deleted")}async function cde(t,e,r,n,i,s,o,a,u,c){let{data:l}=await t.rpc("get_app_versions",{apikey:e,name_version:n,appid:a}).single();l||wt("Cannot get version id, cannot set channel");let{data:h}=await t.rpc("is_allowed_capgkey",{apikey:e,keymode:["write","all"]}).single();if(h){let{error:d,data:f}=await Yp(t,{name:i,app_id:a,created_by:s,version:l,owner_org:o,...c?{allow_device_self_set:!0}:{}});d&&wt(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${W(d)}`);let p=`${u.hostWeb}/app/${a}/channel/${f.id}`;f?.public?y.info("Your update is now available in your public channel \u{1F389}"):f?.id&&y.info(`Link device to this bundle to try it: ${p}`),r&&y.info(`Bundle url: ${p}`)}else y.warn("The upload key is not allowed to set the version in the channel")}async function lde(t,e,r){let{error:n,data:i}=await e.from("apps").select("default_upload_channel").eq("app_id",t).single();return n?(y.warn("Cannot find default upload channel"),y.info(`You can set it here: ${r}/app/${t}/settings`),null):i.default_upload_channel}async function qq(t,e,r=!1){r||ae(`Uploading with CLI version ${Bi.version}`);let n,i=Mn();await Xe();let{s3Region:s,s3Apikey:o,s3Apisecret:a,s3BucketName:u,s3Endpoint:c,s3Port:l,s3SSL:h}=e;e.verbose&&(y.info("[Verbose] Starting upload process with options:"),y.info(` - API key: ${e.apikey?"provided":"from saved key"}`),y.info(` - Path: ${e.path||"from capacitor config"}`),y.info(` - Channel: ${e.channel||"from default upload channel"}`),y.info(` - Bundle: ${e.bundle||"auto-detected"}`),y.info(` - External: ${e.external||"false"}`),y.info(` - Encryption: ${e.keyV2||e.keyDataV2?"v2":e.key===!1?"disabled":"auto"}`),y.info(` - Upload method: ${e.tus?"TUS":e.zip?"ZIP":"auto"}`),y.info(` - Delta updates: ${e.delta||e.partial?"enabled":"disabled"}`));let d=tde(e);e.verbose&&y.info("[Verbose] API key retrieved successfully");let f=await de();e.verbose&&y.info("[Verbose] Capacitor config loaded successfully");let p=await d8();e.verbose&&(y.info("[Verbose] Remote file config retrieved:"),y.info(` - Max upload length: ${Math.floor(p.maxUploadLength/1024/1024)} MB`),y.info(` - Alert upload size: ${Math.floor(p.alertUploadSize/1024/1024)} MB`),y.info(` - TUS upload: ${p.TUSUpload?"enabled":"disabled"}`),y.info(` - TUS upload forced: ${p.TUSUploadForced?"yes":"no"}`),y.info(` - Partial upload: ${p.partialUpload?"enabled":"disabled"}`),y.info(` - Max chunk size: ${Math.floor(p.maxChunkSize/1024/1024)} MB`));let{appid:g,path:E}=rde(t,e,f.config);e.verbose&&y.info(`[Verbose] App ID: ${g}, Build path: ${E}`);let v=await ede(f.config,e);e.verbose&&y.info(`[Verbose] Bundle version: ${v}`);let A=e.external?"external":"r2-direct",m="none";e.autoSetBundle&&(await h8({version:v}),e.verbose&&y.info("[Verbose] Auto-set bundle version in capacitor.config.json")),nde(e,E),e.verbose&&y.info("[Verbose] Code check passed (notifyAppReady found and index.html present)"),y.info(`Upload ${g}@${v} started from path "${E}" to Capgo cloud`);let D=await _n();e.verbose&&y.info(`[Verbose] Local config loaded: host=${D.hostWeb}`),e.supaHost&&e.supaAnon&&(y.info("Using custom supabase instance from provided options"),D.supaHost=e.supaHost,D.supaKey=e.supaAnon,e.verbose&&y.info(`[Verbose] Custom Supabase host: ${e.supaHost}`));let w=await pe(d,e.supaHost,e.supaAnon);e.verbose&&y.info("[Verbose] Supabase client created successfully");let S=await De(w,d,["write","all","upload"]);e.verbose&&y.info(`[Verbose] User verified successfully, user_id: ${S}`);let F=e.channel||await lde(g,w,D.hostWeb)||"dev";e.verbose&&y.info(`[Verbose] Target channel: ${F}`);let b=await Fr(w,g);e.verbose&&y.info(`[Verbose] Organization ID: ${b}`),await y8(w,b,Bi.version),e.verbose&&y.info("[Verbose] Remote CLI messages checked"),await w8(w,b,d,g,!0),e.verbose&&y.info("[Verbose] Plan validation passed"),e.verbose&&y.info("[Verbose] Trial check completed"),e.verbose&&y.info(`[Verbose] Checking compatibility with channel ${F}...`);let{nativePackages:k,minUpdateVersion:R}=await ide(w,i,e,F,g,v);e.verbose&&(y.info("[Verbose] Compatibility check completed:"),y.info(` - Native packages: ${k?k.length:0}`),y.info(` - Min update version: ${R||"none"}`)),e.verbose&&y.info(`[Verbose] Checking if version ${v} already exists...`);let I=await sde(w,g,v,e.versionExistsOk);if(e.verbose&&y.info(`[Verbose] Version exists check: ${I?"yes (skipping)":"no (continuing)"}`),I)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:v,checksum:null,encryptionMethod:m,storageProvider:A};e.external&&!e.external.startsWith("https://")&&wt(`External link should should start with "https://" current is "${e.external}"`),e.deleteLinkedBundleOnUpload&&(y.warn("Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the channel you are trying to upload to."),y.warn("Please make sure you want to do this, if you are not sure, please do not use this option."));let B={name:v,app_id:g,session_key:void 0,external_url:e.external,storage_provider:A,min_update_version:R,native_packages:k,owner_org:b,user_id:S,checksum:void 0,link:e.link||null,comment:e.comment||null},q=null,z="";if(e.external)e.verbose&&y.info(`[Verbose] Using external URL: ${e.external}`),await _e(d,{channel:"app",event:"App external",icon:"\u{1F4E4}",user_id:b,tags:{"app-id":g},notify:!1},e.verbose),B.session_key=e.ivSessionKey,B.checksum=e.encryptedChecksum,e.verbose&&(y.info("[Verbose] External bundle configured:"),y.info(` - URL: ${e.external}`),y.info(` - IV Session Key: ${e.ivSessionKey?"provided":"none"}`),y.info(` - Encrypted Checksum: ${e.encryptedChecksum?"provided":"none"}`));else{e.verbose&&y.info(`[Verbose] Preparing bundle file from path: ${E}`);let{zipped:j,ivSessionKey:H,checksum:X,sessionKey:x,encryptionMethod:O,finalKeyData:V}=await ode(E,e,d,b,g,p.maxUploadLength,p.alertUploadSize);B.session_key=H,B.checksum=X,n=x,q=j,m=O,z=V,e.verbose&&(y.info("[Verbose] Bundle prepared:"),y.info(` - Size: ${Math.floor((j?.byteLength??0)/1024)} KB`),y.info(` - Checksum: ${X}`),y.info(` - Encryption: ${O}`),y.info(` - IV Session Key: ${H?"present":"none"}`)),e.ignoreChecksumCheck||(e.verbose&&y.info("[Verbose] Checking for duplicate checksum..."),await T8(w,g,F,X),e.verbose&&y.info("[Verbose] Checksum is unique"))}e.zip?(e.tus=!1,e.verbose&&y.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")):!p.TUSUpload||e.external?(e.tus=!1,e.verbose&&y.info("[Verbose] Upload method: Standard (TUS not available or external URL)")):(e.tus=e.tus||p.TUSUploadForced,e.verbose&&y.info(`[Verbose] Upload method: ${e.tus?"TUS (resumable)":"Standard"}`)),!p.partialUpload||e.external?(e.delta=!1,e.verbose&&e.external&&y.info("[Verbose] Delta updates disabled (not available with external URLs)")):(e.delta=e.delta||e.partial||e.deltaOnly||e.partialOnly||p.partialUploadForced,e.verbose&&y.info(`[Verbose] Delta updates: ${e.delta?"enabled":"disabled"}`)),e.encryptPartial&&m==="v1"&&wt("You cannot encrypt the partial update if you are not using the v2 encryption method");let $="5.30.0",C="6.30.0",T="7.30.0",P=!1;if(e.delta&&m==="v2"&&!e.encryptPartial){let j=$r((0,Em.cwd)()),H=await os("@capgo/capacitor-updater",j,e.packageJson),X;try{X=H?Ot(H):void 0}catch{X=void 0}H&&X&&x_(X,Ot("6.14.4"))&&(y.info(`Auto-enabling partial update encryption for updater version ${X} (> 6.14.4)`),e.verbose&&y.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4"),e.encryptPartial=!0)}if(e.delta&&(e.encryptPartial||m==="v2")){let j=$r((0,Em.cwd)()),H=await os("@capgo/capacitor-updater",j,e.packageJson),X;try{X=H?Ot(H):void 0}catch{X=void 0}H&&X&&(P=!as(X,$,C,T),e.verbose&&P&&y.info(`[Verbose] Using hex checksum format for updater version ${X}`))}e.verbose&&e.delta&&y.info("[Verbose] Preparing delta/partial update manifest...");let L=e.delta?await Bq(E,d,b,g,e.encryptPartial?m:"none",z,P):[];e.verbose&&e.delta&&y.info(`[Verbose] Delta manifest prepared with ${L.length} files`),e.verbose&&y.info("[Verbose] Creating version record in database...");let{error:U}=await db(w,B);if(U&&wt(`Cannot add bundle ${W(U)}`),e.verbose&&y.info("[Verbose] Version record created successfully"),e.tusChunkSize&&e.tusChunkSize>p.maxChunkSize?(y.error(`Chunk size ${e.tusChunkSize} is greater than the maximum chunk size ${p.maxChunkSize}, using the maximum chunk size`),e.tusChunkSize=p.maxChunkSize):e.tusChunkSize||(e.tusChunkSize=p.maxChunkSize),e.verbose&&y.info(`[Verbose] TUS chunk size: ${Math.floor(e.tusChunkSize/1024/1024)} MB`),q&&(u||c||s||o||a||l||h)){(!u||!c||!s||!o||!a||!l)&&wt("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret"),y.info("Uploading to S3"),e.verbose&&(y.info("[Verbose] S3 configuration:"),y.info(` - Endpoint: ${c}`),y.info(` - Region: ${s}`),y.info(` - Bucket: ${u}`),y.info(` - Port: ${l}`),y.info(` - SSL: ${h?"enabled":"disabled"}`));let j=h?`https://${c}`:`http://${c}`,H=new yl({endPoint:c,region:s,port:l,pathStyle:!0,bucket:u,accessKey:o,secretKey:a}),X=`${g}-${v}`,x=encodeURIComponent(X);e.verbose&&y.info(`[Verbose] Uploading to S3 as: ${X}`),await H.putObject(X,Uint8Array.from(q)),B.external_url=`${j}/${x}`,B.storage_provider="external",e.verbose&&y.info(`[Verbose] S3 upload complete, external URL: ${B.external_url}`)}else if(q){!e.partialOnly&&!e.deltaOnly?(e.verbose&&y.info("[Verbose] Starting full bundle upload to Capgo Cloud..."),await ade(d,w,g,v,b,q,e,e.tusChunkSize)):e.verbose&&y.info("[Verbose] Skipping full bundle upload (delta-only mode)");let j=null;try{e.dryUpload&&(e.delta=!1,e.verbose&&y.info("[Verbose] Dry upload mode: skipping delta upload"));let X=B.session_key&&e.encryptPartial&&n?{sessionKey:n,ivSessionKey:B.session_key}:void 0;e.verbose&&e.delta&&(y.info("[Verbose] Starting delta/partial file upload..."),y.info(` - Manifest entries: ${L.length}`),y.info(` - Encryption: ${X?"enabled":"disabled"}`)),j=e.delta?await jq(d,L,E,g,b,X,e):null,e.verbose&&j&&y.info(`[Verbose] Delta upload complete with ${j.length} files`)}catch(X){if(!!(e.partial||e.delta||e.partialOnly||e.deltaOnly))throw X;y.info(`Failed to upload partial files to capgo cloud. Error: ${W(X)}. This is not a critical error, the bundle has been uploaded without the partial files`),e.verbose&&y.info(`[Verbose] Delta upload error details: ${W(X)}`)}B.storage_provider="r2",B.manifest=j,e.verbose&&y.info("[Verbose] Updating version record with storage provider and manifest...");let{error:H}=await db(w,B);H&&wt(`Cannot update bundle ${W(H)}`),e.verbose&&y.info("[Verbose] Version record updated successfully")}e.verbose&&y.info("[Verbose] Checking app permissions...");let M=await Dt(w,d,g,2);e.verbose&&(y.info("[Verbose] Permissions:"),y.info(` - Upload: ${ru(M,2)?"yes":"no"}`),y.info(` - Write: ${ru(M,3)?"yes":"no"}`),y.info(` - Admin: ${ru(M,4)?"yes":"no"}`)),e.deleteLinkedBundleOnUpload&&ru(M,3)?(e.verbose&&y.info(`[Verbose] Deleting linked bundle in channel ${F}...`),await ude(w,g,F)):e.deleteLinkedBundleOnUpload&&y.warn("Cannot delete linked bundle on upload as a upload organization member"),ru(M,3)?(e.verbose&&y.info(`[Verbose] Setting bundle ${v} to channel ${F}...`),await cde(w,d,!!e.bundleUrl,v,F,S,b,g,D,e.selfAssign),e.verbose&&y.info("[Verbose] Channel updated successfully")):y.warn("Cannot set channel as a upload organization member"),e.verbose&&y.info("[Verbose] Sending upload event..."),await _e(d,{channel:"app",event:"App Uploaded",icon:"\u23EB",user_id:b,tags:{"app-id":g},notify:!1},e.verbose);let G={success:!0,bundle:v,checksum:B.checksum??null,encryptionMethod:m,sessionKey:n?n.toString("base64"):void 0,ivSessionKey:typeof B.session_key=="string"?B.session_key:void 0,storageProvider:B.storage_provider};return e.verbose&&(y.info("[Verbose] Upload completed successfully:"),y.info(` - Bundle: ${G.bundle}`),y.info(` - Checksum: ${G.checksum}`),y.info(` - Encryption: ${G.encryptionMethod}`),y.info(` - Storage: ${G.storageProvider}`)),r&&!G.skipped&&le("Time to share your update to the world \u{1F30D}"),G}var Uq=require("node:crypto"),vm=require("node:fs"),Hq=require("node:process");var fde=20;function hde(t){console.log(JSON.stringify(t,null,2))}function _l(t){console.error(W(t))}async function Vq(t,e,r=!1){let{json:n}=e,{bundle:i,path:s}=e,o=!n&&!r;try{o&&await Xe();let a=await de(),u=$e(t,a?.config),c=(0,Uq.randomUUID)().split("-")[0],l=ss("",e.packageJson);if(i=i||l||`0.0.1-beta.${c}`,o&&ae(`Zipping ${u}@${i}`),i&&!tu.test(i)){let S=`Your bundle name ${i}, is not valid it should follow semver convention : https://semver.org/`;throw r||(n?_l({error:"invalid_semver"}):y.error(S)),new Error("Invalid bundle version format")}if(s=s||a?.config?.webDir,!u||!i||!s){let S="Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project";throw r||(n?_l({error:"missing_argument"}):y.error(S)),new Error(S)}if(o&&y.info(`Started from path "${s}"`),typeof e.codeCheck>"u"?!0:e.codeCheck){if(!Dl(s,"notifyAppReady"))throw r||(n?_l({error:"notifyAppReady_not_in_source_code"}):y.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(!fm(s))throw r||(n?_l({error:"index_html_not_found"}):y.error(`index.html is missing in the root folder of ${s}`)),new Error("index.html is missing in root folder")}let d=await Xp(s);o&&y.info(`Zipped ${d.byteLength} bytes`);let f=o?At():null;f&&f.start("Calculating checksum");let p=$r((0,Hq.cwd)()),g=await os("@capgo/capacitor-updater",p,e.packageJson);if(!g){let S="Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager";throw r||y.warn(S),new Error(S)}let E=!1,v;try{v=g?Ot(g):void 0}catch{v=void 0}v?E=!as(v,void 0,void 0,"7.0.0"):g==="link:@capgo/capacitor-updater"&&(r||y.warn("Using local @capgo/capacitor-updater. Assuming v7"),E=!0);let A=await ei(d,e.keyV2||(0,vm.existsSync)(Nr)||E?"sha256":"crc32");f&&f.stop(`Checksum ${E?"SHA256":"CRC32"}: ${A}`);let m=Math.floor(d.byteLength/1024/1024);m>fde&&o&&(y.warn(`WARNING !!
|
|
343
|
+
Bundle uploaded \u{1F4AA} in 0 seconds`),o.verbose&&y.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let f=await _n();if(o.verbose&&y.info("[Verbose] Local config retrieved for upload"),o.multipart!==void 0&&o.multipart||o.tus!==void 0&&o.tus){o.multipart?y.info("Uploading bundle with multipart is deprecated, we upload with TUS instead"):y.info("Uploading bundle with TUS protocol"),o.verbose&&(y.info("[Verbose] Starting TUS resumable upload..."),y.info(` - Host: ${f.hostWeb}`),y.info(` - Chunk size: ${Math.floor(a/1024/1024)} MB`)),await S8(t,s,i,r,n,u,f,a),l=!0,o.verbose&&y.info("[Verbose] TUS upload completed, updating database with R2 path...");let p=`orgs/${i}/apps/${r}/${n}.zip`,{error:g}=await e.from("app_versions").update({r2_path:p}).eq("name",n).eq("app_id",r);if(g)return y.error(`Cannot finish TUS upload ${W(g)}`),o.verbose&&y.info(`[Verbose] Database update failed: ${W(g)}`),Promise.reject(new Error("Cannot finish TUS upload"));o.verbose&&y.info(`[Verbose] Database updated with R2 path: ${p}`)}else{o.verbose&&y.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let p=await E8(e,r,n);if(!p)return y.error("Cannot get upload url"),o.verbose&&y.info("[Verbose] Failed to retrieve presigned upload URL from database"),Promise.reject(new Error("Cannot get upload url"));o.verbose&&(y.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),y.info(` - Timeout: ${o.timeout||hb}ms`),y.info(" - Retry attempts: 5"),y.info(" - Content-Type: application/zip"));let g=new AbortController,E=setTimeout(()=>g.abort(),o.timeout||hb);try{let v=await fetch(p,{method:"PUT",body:s,headers:{"Content-Type":"application/zip"},signal:g.signal});if(!v.ok)throw new Error(`HTTP error! status: ${v.status}`)}finally{clearTimeout(E)}o.verbose&&y.info("[Verbose] HTTP PUT upload completed successfully")}}catch(f){let g=((performance.now()-c)/1e3).toFixed(2);if(u.stop(`Failed to upload bundle ( after ${g} seconds)`),o.verbose&&(y.info(`[Verbose] Upload failed after ${g} seconds`),y.info(`[Verbose] Error type: ${f instanceof Error?"Error":typeof f}`)),f instanceof Error&&f.message.includes("HTTP error"))try{let E=f.message.match(/status: (\d+)/),v=E?E[1]:"unknown";y.error(`Upload failed with status ${v}: ${f.message}`)}catch{y.error(`Upload failed: ${f.message}`)}else o.verbose&&y.info(`[Verbose] Non-HTTP error: ${W(f)}`),o.tus?y.error(`Cannot upload bundle please contact support if the issue persists ${W(f)}`):y.error(`Cannot upload bundle ( try again with --tus option) ${W(f)}`);throw o.verbose&&y.info("[Verbose] Cleaning up failed version from database..."),await A8(e,r,n),o.verbose&&y.info("[Verbose] Failed version cleaned up"),f instanceof Error?f:new Error(String(f))}let d=((performance.now()-c)/1e3).toFixed(2);u.stop(`Bundle uploaded \u{1F4AA} in (${d} seconds)`),o.verbose&&(y.info("[Verbose] Upload successful:"),y.info(` - Upload time: ${d} seconds`),y.info(` - Upload method: ${l?"TUS (resumable)":"Standard HTTP PUT"}`),y.info(` - Bundle size: ${Math.floor(s.byteLength/1024)} KB`),y.info("[Verbose] Sending performance event...")),await _e(t,{channel:"performance",event:l?"TUS upload zip performance":"Upload zip performance",icon:"\u{1F684}",user_id:i,tags:{"app-id":r,time:d},notify:!1},o.verbose),o.verbose&&y.info("[Verbose] Performance event sent successfully")}async function ude(t,e,r){let{data:n,error:i}=await t.from("channels").select("version ( id, name, deleted )").eq("app_id",e).eq("name",r);if(i){y.error(`Cannot delete linked bundle on upload ${W(i)}`);return}if(n.length===0){y.warn("No linked bundle found in the channel you are trying to upload to");return}let s=n[0].version;if(s.deleted){y.warn("The linked bundle is already deleted");return}let{error:o}=await t.from("app_versions").update({deleted:!0}).eq("id",s.id);if(o){y.error(`Cannot delete linked bundle on upload ${W(o)}`);return}y.info("Linked bundle deleted")}async function cde(t,e,r,n,i,s,o,a,u,c){let{data:l}=await t.rpc("get_app_versions",{apikey:e,name_version:n,appid:a}).single();l||wt("Cannot get version id, cannot set channel");let{data:h}=await t.rpc("is_allowed_capgkey",{apikey:e,keymode:["write","all"]}).single();if(h){let{error:d,data:f}=await Yp(t,{name:i,app_id:a,created_by:s,version:l,owner_org:o,...c?{allow_device_self_set:!0}:{}});d&&wt(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${W(d)}`);let p=`${u.hostWeb}/app/${a}/channel/${f.id}`;f?.public?y.info("Your update is now available in your public channel \u{1F389}"):f?.id&&y.info(`Link device to this bundle to try it: ${p}`),r&&y.info(`Bundle url: ${p}`)}else y.warn("The upload key is not allowed to set the version in the channel")}async function lde(t,e,r){let{error:n,data:i}=await e.from("apps").select("default_upload_channel").eq("app_id",t).single();return n?(y.warn("Cannot find default upload channel"),y.info(`You can set it here: ${r}/app/${t}/info`),null):i.default_upload_channel}async function qq(t,e,r=!1){r||ae(`Uploading with CLI version ${Bi.version}`);let n,i=Mn();await Xe();let{s3Region:s,s3Apikey:o,s3Apisecret:a,s3BucketName:u,s3Endpoint:c,s3Port:l,s3SSL:h}=e;e.verbose&&(y.info("[Verbose] Starting upload process with options:"),y.info(` - API key: ${e.apikey?"provided":"from saved key"}`),y.info(` - Path: ${e.path||"from capacitor config"}`),y.info(` - Channel: ${e.channel||"from default upload channel"}`),y.info(` - Bundle: ${e.bundle||"auto-detected"}`),y.info(` - External: ${e.external||"false"}`),y.info(` - Encryption: ${e.keyV2||e.keyDataV2?"v2":e.key===!1?"disabled":"auto"}`),y.info(` - Upload method: ${e.tus?"TUS":e.zip?"ZIP":"auto"}`),y.info(` - Delta updates: ${e.delta||e.partial?"enabled":"disabled"}`));let d=tde(e);e.verbose&&y.info("[Verbose] API key retrieved successfully");let f=await de();e.verbose&&y.info("[Verbose] Capacitor config loaded successfully");let p=await d8();e.verbose&&(y.info("[Verbose] Remote file config retrieved:"),y.info(` - Max upload length: ${Math.floor(p.maxUploadLength/1024/1024)} MB`),y.info(` - Alert upload size: ${Math.floor(p.alertUploadSize/1024/1024)} MB`),y.info(` - TUS upload: ${p.TUSUpload?"enabled":"disabled"}`),y.info(` - TUS upload forced: ${p.TUSUploadForced?"yes":"no"}`),y.info(` - Partial upload: ${p.partialUpload?"enabled":"disabled"}`),y.info(` - Max chunk size: ${Math.floor(p.maxChunkSize/1024/1024)} MB`));let{appid:g,path:E}=rde(t,e,f.config);e.verbose&&y.info(`[Verbose] App ID: ${g}, Build path: ${E}`);let v=await ede(f.config,e);e.verbose&&y.info(`[Verbose] Bundle version: ${v}`);let A=e.external?"external":"r2-direct",m="none";e.autoSetBundle&&(await h8({version:v}),e.verbose&&y.info("[Verbose] Auto-set bundle version in capacitor.config.json")),nde(e,E),e.verbose&&y.info("[Verbose] Code check passed (notifyAppReady found and index.html present)"),y.info(`Upload ${g}@${v} started from path "${E}" to Capgo cloud`);let D=await _n();e.verbose&&y.info(`[Verbose] Local config loaded: host=${D.hostWeb}`),e.supaHost&&e.supaAnon&&(y.info("Using custom supabase instance from provided options"),D.supaHost=e.supaHost,D.supaKey=e.supaAnon,e.verbose&&y.info(`[Verbose] Custom Supabase host: ${e.supaHost}`));let w=await pe(d,e.supaHost,e.supaAnon);e.verbose&&y.info("[Verbose] Supabase client created successfully");let S=await De(w,d,["write","all","upload"]);e.verbose&&y.info(`[Verbose] User verified successfully, user_id: ${S}`);let F=e.channel||await lde(g,w,D.hostWeb)||"dev";e.verbose&&y.info(`[Verbose] Target channel: ${F}`);let b=await Fr(w,g);e.verbose&&y.info(`[Verbose] Organization ID: ${b}`),await y8(w,b,Bi.version),e.verbose&&y.info("[Verbose] Remote CLI messages checked"),await w8(w,b,d,g,!0),e.verbose&&y.info("[Verbose] Plan validation passed"),e.verbose&&y.info("[Verbose] Trial check completed"),e.verbose&&y.info(`[Verbose] Checking compatibility with channel ${F}...`);let{nativePackages:k,minUpdateVersion:R}=await ide(w,i,e,F,g,v);e.verbose&&(y.info("[Verbose] Compatibility check completed:"),y.info(` - Native packages: ${k?k.length:0}`),y.info(` - Min update version: ${R||"none"}`)),e.verbose&&y.info(`[Verbose] Checking if version ${v} already exists...`);let I=await sde(w,g,v,e.versionExistsOk);if(e.verbose&&y.info(`[Verbose] Version exists check: ${I?"yes (skipping)":"no (continuing)"}`),I)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:v,checksum:null,encryptionMethod:m,storageProvider:A};e.external&&!e.external.startsWith("https://")&&wt(`External link should should start with "https://" current is "${e.external}"`),e.deleteLinkedBundleOnUpload&&(y.warn("Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the channel you are trying to upload to."),y.warn("Please make sure you want to do this, if you are not sure, please do not use this option."));let B={name:v,app_id:g,session_key:void 0,external_url:e.external,storage_provider:A,min_update_version:R,native_packages:k,owner_org:b,user_id:S,checksum:void 0,link:e.link||null,comment:e.comment||null},q=null,z="";if(e.external)e.verbose&&y.info(`[Verbose] Using external URL: ${e.external}`),await _e(d,{channel:"app",event:"App external",icon:"\u{1F4E4}",user_id:b,tags:{"app-id":g},notify:!1},e.verbose),B.session_key=e.ivSessionKey,B.checksum=e.encryptedChecksum,e.verbose&&(y.info("[Verbose] External bundle configured:"),y.info(` - URL: ${e.external}`),y.info(` - IV Session Key: ${e.ivSessionKey?"provided":"none"}`),y.info(` - Encrypted Checksum: ${e.encryptedChecksum?"provided":"none"}`));else{e.verbose&&y.info(`[Verbose] Preparing bundle file from path: ${E}`);let{zipped:j,ivSessionKey:H,checksum:X,sessionKey:x,encryptionMethod:O,finalKeyData:V}=await ode(E,e,d,b,g,p.maxUploadLength,p.alertUploadSize);B.session_key=H,B.checksum=X,n=x,q=j,m=O,z=V,e.verbose&&(y.info("[Verbose] Bundle prepared:"),y.info(` - Size: ${Math.floor((j?.byteLength??0)/1024)} KB`),y.info(` - Checksum: ${X}`),y.info(` - Encryption: ${O}`),y.info(` - IV Session Key: ${H?"present":"none"}`)),e.ignoreChecksumCheck||(e.verbose&&y.info("[Verbose] Checking for duplicate checksum..."),await T8(w,g,F,X),e.verbose&&y.info("[Verbose] Checksum is unique"))}e.zip?(e.tus=!1,e.verbose&&y.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")):!p.TUSUpload||e.external?(e.tus=!1,e.verbose&&y.info("[Verbose] Upload method: Standard (TUS not available or external URL)")):(e.tus=e.tus||p.TUSUploadForced,e.verbose&&y.info(`[Verbose] Upload method: ${e.tus?"TUS (resumable)":"Standard"}`)),!p.partialUpload||e.external?(e.delta=!1,e.verbose&&e.external&&y.info("[Verbose] Delta updates disabled (not available with external URLs)")):(e.delta=e.delta||e.partial||e.deltaOnly||e.partialOnly||p.partialUploadForced,e.verbose&&y.info(`[Verbose] Delta updates: ${e.delta?"enabled":"disabled"}`)),e.encryptPartial&&m==="v1"&&wt("You cannot encrypt the partial update if you are not using the v2 encryption method");let $="5.30.0",C="6.30.0",T="7.30.0",P=!1;if(e.delta&&m==="v2"&&!e.encryptPartial){let j=$r((0,Em.cwd)()),H=await os("@capgo/capacitor-updater",j,e.packageJson),X;try{X=H?Ot(H):void 0}catch{X=void 0}H&&X&&x_(X,Ot("6.14.4"))&&(y.info(`Auto-enabling partial update encryption for updater version ${X} (> 6.14.4)`),e.verbose&&y.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4"),e.encryptPartial=!0)}if(e.delta&&(e.encryptPartial||m==="v2")){let j=$r((0,Em.cwd)()),H=await os("@capgo/capacitor-updater",j,e.packageJson),X;try{X=H?Ot(H):void 0}catch{X=void 0}H&&X&&(P=!as(X,$,C,T),e.verbose&&P&&y.info(`[Verbose] Using hex checksum format for updater version ${X}`))}e.verbose&&e.delta&&y.info("[Verbose] Preparing delta/partial update manifest...");let L=e.delta?await Bq(E,d,b,g,e.encryptPartial?m:"none",z,P):[];e.verbose&&e.delta&&y.info(`[Verbose] Delta manifest prepared with ${L.length} files`),e.verbose&&y.info("[Verbose] Creating version record in database...");let{error:U}=await db(w,B);if(U&&wt(`Cannot add bundle ${W(U)}`),e.verbose&&y.info("[Verbose] Version record created successfully"),e.tusChunkSize&&e.tusChunkSize>p.maxChunkSize?(y.error(`Chunk size ${e.tusChunkSize} is greater than the maximum chunk size ${p.maxChunkSize}, using the maximum chunk size`),e.tusChunkSize=p.maxChunkSize):e.tusChunkSize||(e.tusChunkSize=p.maxChunkSize),e.verbose&&y.info(`[Verbose] TUS chunk size: ${Math.floor(e.tusChunkSize/1024/1024)} MB`),q&&(u||c||s||o||a||l||h)){(!u||!c||!s||!o||!a||!l)&&wt("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret"),y.info("Uploading to S3"),e.verbose&&(y.info("[Verbose] S3 configuration:"),y.info(` - Endpoint: ${c}`),y.info(` - Region: ${s}`),y.info(` - Bucket: ${u}`),y.info(` - Port: ${l}`),y.info(` - SSL: ${h?"enabled":"disabled"}`));let j=h?`https://${c}`:`http://${c}`,H=new yl({endPoint:c,region:s,port:l,pathStyle:!0,bucket:u,accessKey:o,secretKey:a}),X=`${g}-${v}`,x=encodeURIComponent(X);e.verbose&&y.info(`[Verbose] Uploading to S3 as: ${X}`),await H.putObject(X,Uint8Array.from(q)),B.external_url=`${j}/${x}`,B.storage_provider="external",e.verbose&&y.info(`[Verbose] S3 upload complete, external URL: ${B.external_url}`)}else if(q){!e.partialOnly&&!e.deltaOnly?(e.verbose&&y.info("[Verbose] Starting full bundle upload to Capgo Cloud..."),await ade(d,w,g,v,b,q,e,e.tusChunkSize)):e.verbose&&y.info("[Verbose] Skipping full bundle upload (delta-only mode)");let j=null;try{e.dryUpload&&(e.delta=!1,e.verbose&&y.info("[Verbose] Dry upload mode: skipping delta upload"));let X=B.session_key&&e.encryptPartial&&n?{sessionKey:n,ivSessionKey:B.session_key}:void 0;e.verbose&&e.delta&&(y.info("[Verbose] Starting delta/partial file upload..."),y.info(` - Manifest entries: ${L.length}`),y.info(` - Encryption: ${X?"enabled":"disabled"}`)),j=e.delta?await jq(d,L,E,g,b,X,e):null,e.verbose&&j&&y.info(`[Verbose] Delta upload complete with ${j.length} files`)}catch(X){if(!!(e.partial||e.delta||e.partialOnly||e.deltaOnly))throw X;y.info(`Failed to upload partial files to capgo cloud. Error: ${W(X)}. This is not a critical error, the bundle has been uploaded without the partial files`),e.verbose&&y.info(`[Verbose] Delta upload error details: ${W(X)}`)}B.storage_provider="r2",B.manifest=j,e.verbose&&y.info("[Verbose] Updating version record with storage provider and manifest...");let{error:H}=await db(w,B);H&&wt(`Cannot update bundle ${W(H)}`),e.verbose&&y.info("[Verbose] Version record updated successfully")}e.verbose&&y.info("[Verbose] Checking app permissions...");let M=await Dt(w,d,g,2);e.verbose&&(y.info("[Verbose] Permissions:"),y.info(` - Upload: ${ru(M,2)?"yes":"no"}`),y.info(` - Write: ${ru(M,3)?"yes":"no"}`),y.info(` - Admin: ${ru(M,4)?"yes":"no"}`)),e.deleteLinkedBundleOnUpload&&ru(M,3)?(e.verbose&&y.info(`[Verbose] Deleting linked bundle in channel ${F}...`),await ude(w,g,F)):e.deleteLinkedBundleOnUpload&&y.warn("Cannot delete linked bundle on upload as a upload organization member"),ru(M,3)?(e.verbose&&y.info(`[Verbose] Setting bundle ${v} to channel ${F}...`),await cde(w,d,!!e.bundleUrl,v,F,S,b,g,D,e.selfAssign),e.verbose&&y.info("[Verbose] Channel updated successfully")):y.warn("Cannot set channel as a upload organization member"),e.verbose&&y.info("[Verbose] Sending upload event..."),await _e(d,{channel:"app",event:"App Uploaded",icon:"\u23EB",user_id:b,tags:{"app-id":g},notify:!1},e.verbose);let G={success:!0,bundle:v,checksum:B.checksum??null,encryptionMethod:m,sessionKey:n?n.toString("base64"):void 0,ivSessionKey:typeof B.session_key=="string"?B.session_key:void 0,storageProvider:B.storage_provider};return e.verbose&&(y.info("[Verbose] Upload completed successfully:"),y.info(` - Bundle: ${G.bundle}`),y.info(` - Checksum: ${G.checksum}`),y.info(` - Encryption: ${G.encryptionMethod}`),y.info(` - Storage: ${G.storageProvider}`)),r&&!G.skipped&&le("Time to share your update to the world \u{1F30D}"),G}var Uq=require("node:crypto"),vm=require("node:fs"),Hq=require("node:process");var fde=20;function hde(t){console.log(JSON.stringify(t,null,2))}function _l(t){console.error(W(t))}async function Vq(t,e,r=!1){let{json:n}=e,{bundle:i,path:s}=e,o=!n&&!r;try{o&&await Xe();let a=await de(),u=$e(t,a?.config),c=(0,Uq.randomUUID)().split("-")[0],l=ss("",e.packageJson);if(i=i||l||`0.0.1-beta.${c}`,o&&ae(`Zipping ${u}@${i}`),i&&!tu.test(i)){let S=`Your bundle name ${i}, is not valid it should follow semver convention : https://semver.org/`;throw r||(n?_l({error:"invalid_semver"}):y.error(S)),new Error("Invalid bundle version format")}if(s=s||a?.config?.webDir,!u||!i||!s){let S="Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project";throw r||(n?_l({error:"missing_argument"}):y.error(S)),new Error(S)}if(o&&y.info(`Started from path "${s}"`),typeof e.codeCheck>"u"?!0:e.codeCheck){if(!Dl(s,"notifyAppReady"))throw r||(n?_l({error:"notifyAppReady_not_in_source_code"}):y.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(!fm(s))throw r||(n?_l({error:"index_html_not_found"}):y.error(`index.html is missing in the root folder of ${s}`)),new Error("index.html is missing in root folder")}let d=await Xp(s);o&&y.info(`Zipped ${d.byteLength} bytes`);let f=o?At():null;f&&f.start("Calculating checksum");let p=$r((0,Hq.cwd)()),g=await os("@capgo/capacitor-updater",p,e.packageJson);if(!g){let S="Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager";throw r||y.warn(S),new Error(S)}let E=!1,v;try{v=g?Ot(g):void 0}catch{v=void 0}v?E=!as(v,void 0,void 0,"7.0.0"):g==="link:@capgo/capacitor-updater"&&(r||y.warn("Using local @capgo/capacitor-updater. Assuming v7"),E=!0);let A=await ei(d,e.keyV2||(0,vm.existsSync)(Nr)||E?"sha256":"crc32");f&&f.stop(`Checksum ${E?"SHA256":"CRC32"}: ${A}`);let m=Math.floor(d.byteLength/1024/1024);m>fde&&o&&(y.warn(`WARNING !!
|
|
344
344
|
The bundle size is ${m} Mb, this may take a while to download for users
|
|
345
345
|
`),y.warn(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
|
|
346
346
|
`));let D=o?At():null,w=e.name||`${u}_${i}.zip`;return D&&D.start(`Saving to ${w}`),(0,vm.writeFileSync)(w,d),D&&D.stop(`Saved to ${w}`),o&&le("Done \u2705"),!r&&n&&hde({bundle:i,filename:w,checksum:A}),{bundle:i,filename:w,checksum:A}}catch(a){throw r||(n?_l(a):y.error(W(a))),a instanceof Error?a:new Error(String(a))}}async function zq(t,e,r,n=!1){n||ae("Create channel"),r.apikey=r.apikey||re();let i=await de().catch(()=>{});if(e=$e(e,i?.config),!r.apikey)throw n||y.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||y.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let s=await pe(r.apikey,r.supaHost,r.supaAnon);await De(s,r.apikey,["write","all"]),await Dt(s,r.apikey,e,4,n),n||y.info(`Creating channel ${e}#${t} to Capgo`);let o=await gb(s,e);if(!o)throw n||y.error("Cannot find default version for channel creation, please contact Capgo support \u{1F928}"),new Error("Cannot find default version for channel creation");let a=await Fr(s,e),u=await De(s,r.apikey,["write","all"]),c=await F8(s,{name:t,app_id:e,version:o.id,created_by:u,owner_org:a,allow_device_self_set:r.selfAssign??!1,public:r.default??!1});if(c.error)throw n||y.error(`Cannot create Channel \u{1F640}
|