@capgo/cli 7.58.1 → 7.58.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/dist/package.json +1 -1
- package/dist/src/api/cryptoV2.d.ts +5 -3
- package/dist/src/api/cryptoV2.d.ts.map +1 -1
- package/dist/src/sdk.js +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -109,7 +109,7 @@ const config: CapacitorConfig = ${(0,gM.formatJSObject)(t)};
|
|
|
109
109
|
export default config;
|
|
110
110
|
`}});function IM(){try{return gg.default.statSync("/.dockerenv"),!0}catch{return!1}}function TM(){try{return gg.default.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function yg(){return mg===void 0&&(mg=IM()||TM()),mg}var gg,mg,Gx=Qe(()=>{gg=pe(require("node:fs"),1)});function ea(){return Dg===void 0&&(Dg=RM()||yg()),Dg}var Wx,Dg,RM,bg=Qe(()=>{Wx=pe(require("node:fs"),1);Gx();RM=()=>{try{return Wx.default.statSync("/run/.containerenv"),!0}catch{return!1}}});var wg,Jx,Xx,Yx,pn,vg=Qe(()=>{wg=pe(require("node:process"),1),Jx=pe(require("node:os"),1),Xx=pe(require("node:fs"),1);bg();Yx=()=>{if(wg.default.platform!=="linux")return!1;if(Jx.default.release().toLowerCase().includes("microsoft"))return!ea();try{return Xx.default.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!ea():!1}catch{return!1}},pn=wg.default.env.__IS_WSL_TEST__?Yx:Yx()});var Cg,Zx,Qx,eA,BM,Eg,rr,_g=Qe(()=>{Cg=pe(require("node:process"),1),Zx=require("node:buffer"),Qx=require("node:util"),eA=pe(require("node:child_process"),1),BM=(0,Qx.promisify)(eA.default.execFile),Eg=()=>`${Cg.default.env.SYSTEMROOT||Cg.default.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,rr=async(t,e={})=>{let{powerShellPath:r,...n}=e,o=rr.encodeCommand(t);return BM(r??Eg(),[...rr.argumentsPrefix,o],{encoding:"utf8",...n})};rr.argumentsPrefix=["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"];rr.encodeCommand=t=>Zx.Buffer.from(t,"utf16le").toString("base64");rr.escapeArgument=t=>`'${String(t).replaceAll("'","''")}'`});var rA,nA,To,NM,LM,jM,Ul,tA,oA,iA,aA,sA=Qe(()=>{rA=require("node:util"),nA=pe(require("node:child_process"),1),To=pe(require("node:fs/promises"),1);vg();_g();vg();NM=(0,rA.promisify)(nA.default.execFile),LM=(()=>{let t="/mnt/",e;return async function(){if(e)return e;let r="/etc/wsl.conf",n=!1;try{await To.default.access(r,To.constants.F_OK),n=!0}catch{}if(!n)return t;let o=await To.default.readFile(r,{encoding:"utf8"}),i=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(o);return i?(e=i.groups.mountPoint.trim(),e=e.endsWith("/")?e:`${e}/`,e):t}})(),jM=async()=>`${await LM()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,Ul=pn?jM:Eg,oA=async()=>(tA??=(async()=>{try{let t=await Ul();return await To.default.access(t,To.constants.X_OK),!0}catch{return!1}})(),tA),iA=async()=>{let t=await Ul(),e=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:r}=await rr(e,{powerShellPath:t});return r.trim()},aA=async t=>{if(/^[a-z]+:\/\//i.test(t))return t;try{let{stdout:e}=await NM("wslpath",["-aw",t],{encoding:"utf8"});return e.trim()}catch{return t}}});function Ro(t,e,r){let n=o=>Object.defineProperty(t,e,{value:o,enumerable:!0,writable:!0});return Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get(){let o=r();return n(o),o},set(o){n(o)}}),t}var uA=Qe(()=>{});async function Sg(){if(lA.default.platform!=="darwin")throw new Error("macOS only");let{stdout:t}=await UM("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),r=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(t)?.groups.id??"com.apple.Safari";return r==="com.apple.safari"?"com.apple.Safari":r}var cA,lA,fA,UM,dA=Qe(()=>{cA=require("node:util"),lA=pe(require("node:process"),1),fA=require("node:child_process"),UM=(0,cA.promisify)(fA.execFile)});async function mA(t,{humanReadableOutput:e=!0,signal:r}={}){if(pA.default.platform!=="darwin")throw new Error("macOS only");let n=e?[]:["-ss"],o={};r&&(o.signal=r);let{stdout:i}=await MM("osascript",["-e",t,n],o);return i.trim()}var pA,hA,xg,MM,gA=Qe(()=>{pA=pe(require("node:process"),1),hA=require("node:util"),xg=require("node:child_process"),MM=(0,hA.promisify)(xg.execFile)});async function Ag(t){return mA(`tell application "Finder" to set app_path to application file id "${t}" as string
|
|
111
111
|
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var yA=Qe(()=>{gA()});async function Fg(t=qM){let{stdout:e}=await t("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),r=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(e);if(!r)throw new Ml(`Cannot find Windows browser in stdout: ${JSON.stringify(e)}`);let{id:n}=r.groups,o=wA[n];if(!o)throw new Ml(`Unknown browser ID: ${n}`);return o}var DA,bA,qM,wA,Og,Ml,Pg=Qe(()=>{DA=require("node:util"),bA=require("node:child_process"),qM=(0,DA.promisify)(bA.execFile),wA={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},Og=new Map(Object.entries(wA)),Ml=class extends Error{}});async function kg(){if(ql.default.platform==="darwin"){let t=await Sg();return{name:await Ag(t),id:t}}if(ql.default.platform==="linux"){let{stdout:t}=await HM("xdg-mime",["query","default","x-scheme-handler/http"]),e=t.trim();return{name:VM(e.replace(/.desktop$/,"").replace("-"," ")),id:e}}if(ql.default.platform==="win32")return Fg();throw new Error("Only macOS, Linux, and Windows are supported")}var vA,ql,CA,HM,VM,EA=Qe(()=>{vA=require("node:util"),ql=pe(require("node:process"),1),CA=require("node:child_process");dA();yA();Pg();Pg();HM=(0,vA.promisify)(CA.execFile),VM=t=>t.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase())});var Hl,zM,_A,SA=Qe(()=>{Hl=pe(require("node:process"),1),zM=!!(Hl.default.env.SSH_CONNECTION||Hl.default.env.SSH_CLIENT||Hl.default.env.SSH_TTY),_A=zM});var Rg={};Qr(Rg,{apps:()=>Bo,default:()=>WM,openApp:()=>GM});function FA(t){if(typeof t=="string"||Array.isArray(t))return t;let{[AA]:e}=t;if(!e)throw new Error(`${AA} is not supported`);return e}function ks({[ta]:t},{wsl:e}={}){if(e&&pn)return FA(e);if(!t)throw new Error(`${ta} is not supported`);return FA(t)}var Ig,Tg,kA,$A,zl,PA,Vl,$g,xA,ta,AA,OA,Ps,KM,GM,Bo,WM,Bg=Qe(()=>{Ig=pe(require("node:process"),1),Tg=pe(require("node:path"),1),kA=require("node:url"),$A=pe(require("node:child_process"),1),zl=pe(require("node:fs/promises"),1);sA();_g();uA();EA();bg();SA();PA={},Vl=Symbol("fallbackAttempt"),$g=PA.url?Tg.default.dirname((0,kA.fileURLToPath)(PA.url)):"",xA=Tg.default.join($g,"xdg-open"),{platform:ta,arch:AA}=Ig.default,OA=async(t,e)=>{if(t.length===0)return;let r=[];for(let n of t)try{return await e(n)}catch(o){r.push(o)}throw new AggregateError(r,"Failed to open in all supported apps")},Ps=async t=>{t={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...t};let e=t[Vl]===!0;if(delete t[Vl],Array.isArray(t.app))return OA(t.app,c=>Ps({...t,app:c,[Vl]:!0}));let{name:r,arguments:n=[]}=t.app??{};if(n=[...n],Array.isArray(r))return OA(r,c=>Ps({...t,app:{name:c,arguments:n},[Vl]:!0}));if(r==="browser"||r==="browserPrivate"){let c={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge","com.apple.safari":"safari"},f={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},d;if(pn){let p=await iA();d=Og.get(p)??{}}else d=await kg();if(d.id in c){let p=c[d.id.toLowerCase()];if(r==="browserPrivate"){if(p==="safari")throw new Error("Safari doesn't support opening in private mode via command line");n.push(f[p])}return Ps({...t,app:{name:Bo[p],arguments:n}})}throw new Error(`${d.name} is not supported as a default browser`)}let o,i=[],a={},s=!1;if(pn&&!ea()&&!_A&&!r&&(s=await oA()),ta==="darwin")o="open",t.wait&&i.push("--wait-apps"),t.background&&i.push("--background"),t.newInstance&&i.push("--new"),r&&i.push("-a",r);else if(ta==="win32"||s){o=await Ul(),i.push(...rr.argumentsPrefix),pn||(a.windowsVerbatimArguments=!0),pn&&t.target&&(t.target=await aA(t.target));let c=["$ProgressPreference = 'SilentlyContinue';","Start"];t.wait&&c.push("-Wait"),r?(c.push(rr.escapeArgument(r)),t.target&&n.push(t.target)):t.target&&c.push(rr.escapeArgument(t.target)),n.length>0&&(n=n.map(f=>rr.escapeArgument(f)),c.push("-ArgumentList",n.join(","))),t.target=rr.encodeCommand(c.join(" ")),t.wait||(a.stdio="ignore")}else{if(r)o=r;else{let c=!$g||$g==="/",f=!1;try{await zl.default.access(xA,zl.constants.X_OK),f=!0}catch{}o=Ig.default.versions.electron??(ta==="android"||c||!f)?"xdg-open":xA}n.length>0&&i.push(...n),t.wait||(a.stdio="ignore",a.detached=!0)}ta==="darwin"&&n.length>0&&i.push("--args",...n),t.target&&i.push(t.target);let u=$A.default.spawn(o,i,a);return t.wait?new Promise((c,f)=>{u.once("error",f),u.once("close",d=>{if(!t.allowNonzeroExitCode&&d!==0){f(new Error(`Exited with code ${d}`));return}c(u)})}):e?new Promise((c,f)=>{u.once("error",f),u.once("spawn",()=>{u.once("close",d=>{if(u.off("error",f),d!==0){f(new Error(`Exited with code ${d}`));return}u.unref(),c(u)})})}):(u.unref(),new Promise((c,f)=>{u.once("error",f),u.once("spawn",()=>{u.off("error",f),c(u)})}))},KM=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a `target`");return Ps({...e,target:t})},GM=(t,e)=>{if(typeof t!="string"&&!Array.isArray(t))throw new TypeError("Expected a valid `name`");let{arguments:r=[]}=e??{};if(r!=null&&!Array.isArray(r))throw new TypeError("Expected `appArguments` as Array type");return Ps({...e,app:{name:t,arguments:r}})};Bo={browser:"browser",browserPrivate:"browserPrivate"};Ro(Bo,"chrome",()=>ks({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium","chromium-browser"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));Ro(Bo,"brave",()=>ks({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));Ro(Bo,"firefox",()=>ks({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));Ro(Bo,"edge",()=>ks({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));Ro(Bo,"safari",()=>ks({darwin:"Safari"}));WM=KM});var wf=x(xr=>{"use strict";xr.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;xr.find=(t,e)=>t.nodes.find(r=>r.type===e);xr.exceedsLimit=(t,e,r=1,n)=>n===!1||!xr.isInteger(t)||!xr.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=n;xr.escapeNode=(t,e=0,r)=>{let n=t.nodes[e];n&&(r&&n.type===r||n.type==="open"||n.type==="close")&&n.escaped!==!0&&(n.value="\\"+n.value,n.escaped=!0)};xr.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;xr.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;xr.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;xr.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);xr.flatten=(...t)=>{let e=[],r=n=>{for(let o=0;o<n.length;o++){let i=n[o];if(Array.isArray(i)){r(i);continue}i!==void 0&&e.push(i)}return e};return r(t),e}});var vf=x((DX,d1)=>{"use strict";var f1=wf();d1.exports=(t,e={})=>{let r=(n,o={})=>{let i=e.escapeInvalid&&f1.isInvalidBrace(o),a=n.invalid===!0&&e.escapeInvalid===!0,s="";if(n.value)return(i||a)&&f1.isOpenOrClose(n)?"\\"+n.value:n.value;if(n.value)return n.value;if(n.nodes)for(let u of n.nodes)s+=r(u);return s};return r(t)}});var h1=x((bX,p1)=>{"use strict";p1.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var E1=x((wX,C1)=>{"use strict";var m1=h1(),Vo=(t,e,r)=>{if(m1(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(m1(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let n={relaxZeros:!0,...r};typeof n.strictZeros=="boolean"&&(n.relaxZeros=n.strictZeros===!1);let o=String(n.relaxZeros),i=String(n.shorthand),a=String(n.capture),s=String(n.wrap),u=t+":"+e+"="+o+i+a+s;if(Vo.cache.hasOwnProperty(u))return Vo.cache[u].result;let c=Math.min(t,e),f=Math.max(t,e);if(Math.abs(c-f)===1){let y=t+"|"+e;return n.capture?`(${y})`:n.wrap===!1?y:`(?:${y})`}let d=v1(t)||v1(e),p={min:t,max:e,a:c,b:f},h=[],m=[];if(d&&(p.isPadded=d,p.maxLen=String(p.max).length),c<0){let y=f<0?Math.abs(f):1;m=g1(y,Math.abs(c),p,n),c=p.a=0}return f>=0&&(h=g1(c,f,p,n)),p.negatives=m,p.positives=h,p.result=q5(m,h,n),n.capture===!0?p.result=`(${p.result})`:n.wrap!==!1&&h.length+m.length>1&&(p.result=`(?:${p.result})`),Vo.cache[u]=p,p.result};function q5(t,e,r){let n=sy(t,e,"-",!1,r)||[],o=sy(e,t,"",!1,r)||[],i=sy(t,e,"-?",!0,r)||[];return n.concat(i).concat(o).join("|")}function H5(t,e){let r=1,n=1,o=D1(t,r),i=new Set([e]);for(;t<=o&&o<=e;)i.add(o),r+=1,o=D1(t,r);for(o=b1(e+1,n)-1;t<o&&o<=e;)i.add(o),n+=1,o=b1(e+1,n)-1;return i=[...i],i.sort(K5),i}function V5(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let n=z5(t,e),o=n.length,i="",a=0;for(let s=0;s<o;s++){let[u,c]=n[s];u===c?i+=u:u!=="0"||c!=="9"?i+=G5(u,c,r):a++}return a&&(i+=r.shorthand===!0?"\\d":"[0-9]"),{pattern:i,count:[a],digits:o}}function g1(t,e,r,n){let o=H5(t,e),i=[],a=t,s;for(let u=0;u<o.length;u++){let c=o[u],f=V5(String(a),String(c),n),d="";if(!r.isPadded&&s&&s.pattern===f.pattern){s.count.length>1&&s.count.pop(),s.count.push(f.count[0]),s.string=s.pattern+w1(s.count),a=c+1;continue}r.isPadded&&(d=W5(c,r,n)),f.string=d+f.pattern+w1(f.count),i.push(f),a=c+1,s=f}return i}function sy(t,e,r,n,o){let i=[];for(let a of t){let{string:s}=a;!n&&!y1(e,"string",s)&&i.push(r+s),n&&y1(e,"string",s)&&i.push(r+s)}return i}function z5(t,e){let r=[];for(let n=0;n<t.length;n++)r.push([t[n],e[n]]);return r}function K5(t,e){return t>e?1:e>t?-1:0}function y1(t,e,r){return t.some(n=>n[e]===r)}function D1(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function b1(t,e){return t-t%Math.pow(10,e)}function w1(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function G5(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function v1(t){return/^-?(0+)\d/.test(t)}function W5(t,e,r){if(!e.isPadded)return t;let n=Math.abs(e.maxLen-String(t).length),o=r.relaxZeros!==!1;switch(n){case 0:return"";case 1:return o?"0?":"0";case 2:return o?"0{0,2}":"00";default:return o?`0{0,${n}}`:`0{${n}}`}}Vo.cache={};Vo.clearCache=()=>Vo.cache={};C1.exports=Vo});var ly=x((vX,P1)=>{"use strict";var Y5=require("util"),S1=E1(),_1=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),J5=t=>e=>t===!0?Number(e):String(e),uy=t=>typeof t=="number"||typeof t=="string"&&t!=="",Ws=t=>Number.isInteger(+t),cy=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},X5=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,Z5=(t,e,r)=>{if(e>0){let n=t[0]==="-"?"-":"";n&&(t=t.slice(1)),t=n+t.padStart(n?e-1:e,"0")}return r===!1?String(t):t},Ef=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length<e;)t="0"+t;return r?"-"+t:t},Q5=(t,e,r)=>{t.negatives.sort((s,u)=>s<u?-1:s>u?1:0),t.positives.sort((s,u)=>s<u?-1:s>u?1:0);let n=e.capture?"":"?:",o="",i="",a;return t.positives.length&&(o=t.positives.map(s=>Ef(String(s),r)).join("|")),t.negatives.length&&(i=`-(${n}${t.negatives.map(s=>Ef(String(s),r)).join("|")})`),o&&i?a=`${o}|${i}`:a=o||i,e.wrap?`(${n}${a})`:a},x1=(t,e,r,n)=>{if(r)return S1(t,e,{wrap:!1,...n});let o=String.fromCharCode(t);if(t===e)return o;let i=String.fromCharCode(e);return`[${o}-${i}]`},A1=(t,e,r)=>{if(Array.isArray(t)){let n=r.wrap===!0,o=r.capture?"":"?:";return n?`(${o}${t.join("|")})`:t.join("|")}return S1(t,e,r)},O1=(...t)=>new RangeError("Invalid range arguments: "+Y5.inspect(...t)),F1=(t,e,r)=>{if(r.strictRanges===!0)throw O1([t,e]);return[]},e9=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},t9=(t,e,r=1,n={})=>{let o=Number(t),i=Number(e);if(!Number.isInteger(o)||!Number.isInteger(i)){if(n.strictRanges===!0)throw O1([t,e]);return[]}o===0&&(o=0),i===0&&(i=0);let a=o>i,s=String(t),u=String(e),c=String(r);r=Math.max(Math.abs(r),1);let f=cy(s)||cy(u)||cy(c),d=f?Math.max(s.length,u.length,c.length):0,p=f===!1&&X5(t,e,n)===!1,h=n.transform||J5(p);if(n.toRegex&&r===1)return x1(Ef(t,d),Ef(e,d),!0,n);let m={negatives:[],positives:[]},y=E=>m[E<0?"negatives":"positives"].push(Math.abs(E)),b=[],v=0;for(;a?o>=i:o<=i;)n.toRegex===!0&&r>1?y(o):b.push(Z5(h(o,v),d,p)),o=a?o-r:o+r,v++;return n.toRegex===!0?r>1?Q5(m,n,d):A1(b,null,{wrap:!1,...n}):b},r9=(t,e,r=1,n={})=>{if(!Ws(t)&&t.length>1||!Ws(e)&&e.length>1)return F1(t,e,n);let o=n.transform||(p=>String.fromCharCode(p)),i=`${t}`.charCodeAt(0),a=`${e}`.charCodeAt(0),s=i>a,u=Math.min(i,a),c=Math.max(i,a);if(n.toRegex&&r===1)return x1(u,c,!1,n);let f=[],d=0;for(;s?i>=a:i<=a;)f.push(o(i,d)),i=s?i-r:i+r,d++;return n.toRegex===!0?A1(f,null,{wrap:!1,options:n}):f},Cf=(t,e,r,n={})=>{if(e==null&&uy(t))return[t];if(!uy(t)||!uy(e))return F1(t,e,n);if(typeof r=="function")return Cf(t,e,1,{transform:r});if(_1(r))return Cf(t,e,0,r);let o={...n};return o.capture===!0&&(o.wrap=!0),r=r||o.step||1,Ws(r)?Ws(t)&&Ws(e)?t9(t,e,r,o):r9(t,e,Math.max(Math.abs(r),1),o):r!=null&&!_1(r)?e9(r,o):Cf(t,e,1,r)};P1.exports=Cf});var I1=x((CX,$1)=>{"use strict";var n9=ly(),k1=wf(),o9=(t,e={})=>{let r=(n,o={})=>{let i=k1.isInvalidBrace(o),a=n.invalid===!0&&e.escapeInvalid===!0,s=i===!0||a===!0,u=e.escapeInvalid===!0?"\\":"",c="";if(n.isOpen===!0)return u+n.value;if(n.isClose===!0)return console.log("node.isClose",u,n.value),u+n.value;if(n.type==="open")return s?u+n.value:"(";if(n.type==="close")return s?u+n.value:")";if(n.type==="comma")return n.prev.type==="comma"?"":s?n.value:"|";if(n.value)return n.value;if(n.nodes&&n.ranges>0){let f=k1.reduce(n.nodes),d=n9(...f,{...e,wrap:!1,toRegex:!0,strictZeros:!0});if(d.length!==0)return f.length>1&&d.length>1?`(${d})`:d}if(n.nodes)for(let f of n.nodes)c+=r(f,n);return c};return r(t)};$1.exports=o9});var B1=x((EX,R1)=>{"use strict";var i9=ly(),T1=vf(),ya=wf(),zo=(t="",e="",r=!1)=>{let n=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ya.flatten(e).map(o=>`{${o}}`):e;for(let o of t)if(Array.isArray(o))for(let i of o)n.push(zo(i,e,r));else for(let i of e)r===!0&&typeof i=="string"&&(i=`{${i}}`),n.push(Array.isArray(i)?zo(o,i,r):o+i);return ya.flatten(n)},a9=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,n=(o,i={})=>{o.queue=[];let a=i,s=i.queue;for(;a.type!=="brace"&&a.type!=="root"&&a.parent;)a=a.parent,s=a.queue;if(o.invalid||o.dollar){s.push(zo(s.pop(),T1(o,e)));return}if(o.type==="brace"&&o.invalid!==!0&&o.nodes.length===2){s.push(zo(s.pop(),["{}"]));return}if(o.nodes&&o.ranges>0){let d=ya.reduce(o.nodes);if(ya.exceedsLimit(...d,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let p=i9(...d,e);p.length===0&&(p=T1(o,e)),s.push(zo(s.pop(),p)),o.nodes=[];return}let u=ya.encloseBrace(o),c=o.queue,f=o;for(;f.type!=="brace"&&f.type!=="root"&&f.parent;)f=f.parent,c=f.queue;for(let d=0;d<o.nodes.length;d++){let p=o.nodes[d];if(p.type==="comma"&&o.type==="brace"){d===1&&c.push(""),c.push("");continue}if(p.type==="close"){s.push(zo(s.pop(),c,u));continue}if(p.value&&p.type!=="open"){c.push(zo(c.pop(),p.value));continue}p.nodes&&n(p,o)}return c};return ya.flatten(n(t))};R1.exports=a9});var L1=x((_X,N1)=>{"use strict";N1.exports={MAX_LENGTH:1e4,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:`
|
|
112
|
-
`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var H1=x((SX,q1)=>{"use strict";var s9=vf(),{MAX_LENGTH:j1,CHAR_BACKSLASH:fy,CHAR_BACKTICK:u9,CHAR_COMMA:c9,CHAR_DOT:l9,CHAR_LEFT_PARENTHESES:f9,CHAR_RIGHT_PARENTHESES:d9,CHAR_LEFT_CURLY_BRACE:p9,CHAR_RIGHT_CURLY_BRACE:h9,CHAR_LEFT_SQUARE_BRACKET:U1,CHAR_RIGHT_SQUARE_BRACKET:M1,CHAR_DOUBLE_QUOTE:m9,CHAR_SINGLE_QUOTE:g9,CHAR_NO_BREAK_SPACE:y9,CHAR_ZERO_WIDTH_NOBREAK_SPACE:D9}=L1(),b9=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(j1,r.maxLength):j1;if(t.length>n)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${n})`);let o={type:"root",input:t,nodes:[]},i=[o],a=o,s=o,u=0,c=t.length,f=0,d=0,p,h=()=>t[f++],m=y=>{if(y.type==="text"&&s.type==="dot"&&(s.type="text"),s&&s.type==="text"&&y.type==="text"){s.value+=y.value;return}return a.nodes.push(y),y.parent=a,y.prev=s,s=y,y};for(m({type:"bos"});f<c;)if(a=i[i.length-1],p=h(),!(p===D9||p===y9)){if(p===fy){m({type:"text",value:(e.keepEscaping?p:"")+h()});continue}if(p===M1){m({type:"text",value:"\\"+p});continue}if(p===U1){u++;let y;for(;f<c&&(y=h());){if(p+=y,y===U1){u++;continue}if(y===fy){p+=h();continue}if(y===M1&&(u--,u===0))break}m({type:"text",value:p});continue}if(p===f9){a=m({type:"paren",nodes:[]}),i.push(a),m({type:"text",value:p});continue}if(p===d9){if(a.type!=="paren"){m({type:"text",value:p});continue}a=i.pop(),m({type:"text",value:p}),a=i[i.length-1];continue}if(p===m9||p===g9||p===u9){let y=p,b;for(e.keepQuotes!==!0&&(p="");f<c&&(b=h());){if(b===fy){p+=b+h();continue}if(b===y){e.keepQuotes===!0&&(p+=b);break}p+=b}m({type:"text",value:p});continue}if(p===p9){d++;let b={type:"brace",open:!0,close:!1,dollar:s.value&&s.value.slice(-1)==="$"||a.dollar===!0,depth:d,commas:0,ranges:0,nodes:[]};a=m(b),i.push(a),m({type:"open",value:p});continue}if(p===h9){if(a.type!=="brace"){m({type:"text",value:p});continue}let y="close";a=i.pop(),a.close=!0,m({type:y,value:p}),d--,a=i[i.length-1];continue}if(p===c9&&d>0){if(a.ranges>0){a.ranges=0;let y=a.nodes.shift();a.nodes=[y,{type:"text",value:s9(a)}]}m({type:"comma",value:p}),a.commas++;continue}if(p===l9&&d>0&&a.commas===0){let y=a.nodes;if(d===0||y.length===0){m({type:"text",value:p});continue}if(s.type==="dot"){if(a.range=[],s.value+=p,s.type="range",a.nodes.length!==3&&a.nodes.length!==5){a.invalid=!0,a.ranges=0,s.type="text";continue}a.ranges++,a.args=[];continue}if(s.type==="range"){y.pop();let b=y[y.length-1];b.value+=s.value+p,s=b,a.ranges--;continue}m({type:"dot",value:p});continue}m({type:"text",value:p})}do if(a=i.pop(),a.type!=="root"){a.nodes.forEach(v=>{v.nodes||(v.type==="open"&&(v.isOpen=!0),v.type==="close"&&(v.isClose=!0),v.nodes||(v.type="text"),v.invalid=!0)});let y=i[i.length-1],b=y.nodes.indexOf(a);y.nodes.splice(b,1,...a.nodes)}while(i.length>0);return m({type:"eos"}),o};q1.exports=b9});var K1=x((xX,z1)=>{"use strict";var V1=vf(),w9=I1(),v9=B1(),C9=H1(),sr=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let o=sr.create(n,e);Array.isArray(o)?r.push(...o):r.push(o)}else r=[].concat(sr.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};sr.parse=(t,e={})=>C9(t,e);sr.stringify=(t,e={})=>V1(typeof t=="string"?sr.parse(t,e):t,e);sr.compile=(t,e={})=>(typeof t=="string"&&(t=sr.parse(t,e)),w9(t,e));sr.expand=(t,e={})=>{typeof t=="string"&&(t=sr.parse(t,e));let r=v9(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};sr.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?sr.compile(t,e):sr.expand(t,e);z1.exports=sr});var Ys=x((AX,X1)=>{"use strict";var E9=require("path"),Yr="\\\\/",G1=`[^${Yr}]`,wn="\\.",_9="\\+",S9="\\?",_f="\\/",x9="(?=.)",W1="[^/]",dy=`(?:${_f}|$)`,Y1=`(?:^|${_f})`,py=`${wn}{1,2}${dy}`,A9=`(?!${wn})`,O9=`(?!${Y1}${py})`,F9=`(?!${wn}{0,1}${dy})`,P9=`(?!${py})`,k9=`[^.${_f}]`,$9=`${W1}*?`,J1={DOT_LITERAL:wn,PLUS_LITERAL:_9,QMARK_LITERAL:S9,SLASH_LITERAL:_f,ONE_CHAR:x9,QMARK:W1,END_ANCHOR:dy,DOTS_SLASH:py,NO_DOT:A9,NO_DOTS:O9,NO_DOT_SLASH:F9,NO_DOTS_SLASH:P9,QMARK_NO_DOT:k9,STAR:$9,START_ANCHOR:Y1},I9={...J1,SLASH_LITERAL:`[${Yr}]`,QMARK:G1,STAR:`${G1}*?`,DOTS_SLASH:`${wn}{1,2}(?:[${Yr}]|$)`,NO_DOT:`(?!${wn})`,NO_DOTS:`(?!(?:^|[${Yr}])${wn}{1,2}(?:[${Yr}]|$))`,NO_DOT_SLASH:`(?!${wn}{0,1}(?:[${Yr}]|$))`,NO_DOTS_SLASH:`(?!${wn}{1,2}(?:[${Yr}]|$))`,QMARK_NO_DOT:`[^.${Yr}]`,START_ANCHOR:`(?:^|[${Yr}])`,END_ANCHOR:`(?:[${Yr}]|$)`},T9={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};X1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:T9,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:E9.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?I9:J1}}});var Js=x(Xt=>{"use strict";var R9=require("path"),B9=process.platform==="win32",{REGEX_BACKSLASH:N9,REGEX_REMOVE_BACKSLASH:L9,REGEX_SPECIAL_CHARS:j9,REGEX_SPECIAL_CHARS_GLOBAL:U9}=Ys();Xt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Xt.hasRegexChars=t=>j9.test(t);Xt.isRegexChar=t=>t.length===1&&Xt.hasRegexChars(t);Xt.escapeRegex=t=>t.replace(U9,"\\$1");Xt.toPosixSlashes=t=>t.replace(N9,"/");Xt.removeBackslashes=t=>t.replace(L9,e=>e==="\\"?"":e);Xt.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Xt.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:B9===!0||R9.sep==="\\";Xt.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?Xt.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};Xt.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Xt.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",o=r.contains?"":"$",i=`${n}(?:${t})${o}`;return e.negated===!0&&(i=`(?:^(?!${i}).*$)`),i}});var iF=x((FX,oF)=>{"use strict";var Z1=Js(),{CHAR_ASTERISK:hy,CHAR_AT:M9,CHAR_BACKWARD_SLASH:Xs,CHAR_COMMA:q9,CHAR_DOT:my,CHAR_EXCLAMATION_MARK:gy,CHAR_FORWARD_SLASH:nF,CHAR_LEFT_CURLY_BRACE:yy,CHAR_LEFT_PARENTHESES:Dy,CHAR_LEFT_SQUARE_BRACKET:H9,CHAR_PLUS:V9,CHAR_QUESTION_MARK:Q1,CHAR_RIGHT_CURLY_BRACE:z9,CHAR_RIGHT_PARENTHESES:eF,CHAR_RIGHT_SQUARE_BRACKET:K9}=Ys(),tF=t=>t===nF||t===Xs,rF=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},G9=(t,e)=>{let r=e||{},n=t.length-1,o=r.parts===!0||r.scanToEnd===!0,i=[],a=[],s=[],u=t,c=-1,f=0,d=0,p=!1,h=!1,m=!1,y=!1,b=!1,v=!1,E=!1,g=!1,_=!1,S=!1,k=0,T,B,F={value:"",depth:0,isGlob:!1},L=()=>c>=n,A=()=>u.charCodeAt(c+1),q=()=>(T=B,u.charCodeAt(++c));for(;c<n;){B=q();let w;if(B===Xs){E=F.backslashes=!0,B=q(),B===yy&&(v=!0);continue}if(v===!0||B===yy){for(k++;L()!==!0&&(B=q());){if(B===Xs){E=F.backslashes=!0,q();continue}if(B===yy){k++;continue}if(v!==!0&&B===my&&(B=q())===my){if(p=F.isBrace=!0,m=F.isGlob=!0,S=!0,o===!0)continue;break}if(v!==!0&&B===q9){if(p=F.isBrace=!0,m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===z9&&(k--,k===0)){v=!1,p=F.isBrace=!0,S=!0;break}}if(o===!0)continue;break}if(B===nF){if(i.push(c),a.push(F),F={value:"",depth:0,isGlob:!1},S===!0)continue;if(T===my&&c===f+1){f+=2;continue}d=c+1;continue}if(r.noext!==!0&&(B===V9||B===M9||B===hy||B===Q1||B===gy)===!0&&A()===Dy){if(m=F.isGlob=!0,y=F.isExtglob=!0,S=!0,B===gy&&c===f&&(_=!0),o===!0){for(;L()!==!0&&(B=q());){if(B===Xs){E=F.backslashes=!0,B=q();continue}if(B===eF){m=F.isGlob=!0,S=!0;break}}continue}break}if(B===hy){if(T===hy&&(b=F.isGlobstar=!0),m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===Q1){if(m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===H9){for(;L()!==!0&&(w=q());){if(w===Xs){E=F.backslashes=!0,q();continue}if(w===K9){h=F.isBracket=!0,m=F.isGlob=!0,S=!0;break}}if(o===!0)continue;break}if(r.nonegate!==!0&&B===gy&&c===f){g=F.negated=!0,f++;continue}if(r.noparen!==!0&&B===Dy){if(m=F.isGlob=!0,o===!0){for(;L()!==!0&&(B=q());){if(B===Dy){E=F.backslashes=!0,B=q();continue}if(B===eF){S=!0;break}}continue}break}if(m===!0){if(S=!0,o===!0)continue;break}}r.noext===!0&&(y=!1,m=!1);let j=u,Z="",P="";f>0&&(Z=u.slice(0,f),u=u.slice(f),d-=f),j&&m===!0&&d>0?(j=u.slice(0,d),P=u.slice(d)):m===!0?(j="",P=u):j=u,j&&j!==""&&j!=="/"&&j!==u&&tF(j.charCodeAt(j.length-1))&&(j=j.slice(0,-1)),r.unescape===!0&&(P&&(P=Z1.removeBackslashes(P)),j&&E===!0&&(j=Z1.removeBackslashes(j)));let D={prefix:Z,input:t,start:f,base:j,glob:P,isBrace:p,isBracket:h,isGlob:m,isExtglob:y,isGlobstar:b,negated:g,negatedExtglob:_};if(r.tokens===!0&&(D.maxDepth=0,tF(B)||a.push(F),D.tokens=a),r.parts===!0||r.tokens===!0){let w;for(let C=0;C<i.length;C++){let O=w?w+1:f,R=i[C],$=t.slice(O,R);r.tokens&&(C===0&&f!==0?(a[C].isPrefix=!0,a[C].value=Z):a[C].value=$,rF(a[C]),D.maxDepth+=a[C].depth),(C!==0||$!=="")&&s.push($),w=R}if(w&&w+1<t.length){let C=t.slice(w+1);s.push(C),r.tokens&&(a[a.length-1].value=C,rF(a[a.length-1]),D.maxDepth+=a[a.length-1].depth)}D.slashes=i,D.parts=s}return D};oF.exports=G9});var uF=x((PX,sF)=>{"use strict";var Sf=Ys(),ur=Js(),{MAX_LENGTH:xf,POSIX_REGEX_SOURCE:W9,REGEX_NON_SPECIAL_CHARS:Y9,REGEX_SPECIAL_CHARS_BACKREF:J9,REPLACEMENTS:aF}=Sf,X9=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(o=>ur.escapeRegex(o)).join("..")}return r},Da=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,by=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=aF[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(xf,r.maxLength):xf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);let i={type:"bos",value:"",output:r.prepend||""},a=[i],s=r.capture?"":"?:",u=ur.isWindows(e),c=Sf.globChars(u),f=Sf.extglobChars(c),{DOT_LITERAL:d,PLUS_LITERAL:p,SLASH_LITERAL:h,ONE_CHAR:m,DOTS_SLASH:y,NO_DOT:b,NO_DOT_SLASH:v,NO_DOTS_SLASH:E,QMARK:g,QMARK_NO_DOT:_,STAR:S,START_ANCHOR:k}=c,T=K=>`(${s}(?:(?!${k}${K.dot?y:d}).)*?)`,B=r.dot?"":b,F=r.dot?g:_,L=r.bash===!0?T(r):S;r.capture&&(L=`(${L})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:a};t=ur.removePrefix(t,A),o=t.length;let q=[],j=[],Z=[],P=i,D,w=()=>A.index===o-1,C=A.peek=(K=1)=>t[A.index+K],O=A.advance=()=>t[++A.index]||"",R=()=>t.slice(A.index+1),$=(K="",Se=0)=>{A.consumed+=K,A.index+=Se},H=K=>{A.output+=K.output!=null?K.output:K.value,$(K.value)},I=()=>{let K=1;for(;C()==="!"&&(C(2)!=="("||C(3)==="?");)O(),A.start++,K++;return K%2===0?!1:(A.negated=!0,A.start++,!0)},N=K=>{A[K]++,Z.push(K)},X=K=>{A[K]--,Z.pop()},U=K=>{if(P.type==="globstar"){let Se=A.braces>0&&(K.type==="comma"||K.type==="brace"),z=K.extglob===!0||q.length&&(K.type==="pipe"||K.type==="paren");K.type!=="slash"&&K.type!=="paren"&&!Se&&!z&&(A.output=A.output.slice(0,-P.output.length),P.type="star",P.value="*",P.output=L,A.output+=P.output)}if(q.length&&K.type!=="paren"&&(q[q.length-1].inner+=K.value),(K.value||K.output)&&H(K),P&&P.type==="text"&&K.type==="text"){P.value+=K.value,P.output=(P.output||"")+K.value;return}K.prev=P,a.push(K),P=K},oe=(K,Se)=>{let z={...f[Se],conditions:1,inner:""};z.prev=P,z.parens=A.parens,z.output=A.output;let de=(r.capture?"(":"")+z.open;N("parens"),U({type:K,value:Se,output:A.output?"":m}),U({type:"paren",extglob:!0,value:O(),output:de}),q.push(z)},Zt=K=>{let Se=K.close+(r.capture?")":""),z;if(K.type==="negate"){let de=L;if(K.inner&&K.inner.length>1&&K.inner.includes("/")&&(de=T(r)),(de!==L||w()||/^\)+$/.test(R()))&&(Se=K.close=`)$))${de}`),K.inner.includes("*")&&(z=R())&&/^\.[^\\/.]+$/.test(z)){let Ve=by(z,{...e,fastpaths:!1}).output;Se=K.close=`)${Ve})${de})`}K.prev.type==="bos"&&(A.negatedExtglob=!0)}U({type:"paren",extglob:!0,value:D,output:Se}),X("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let K=!1,Se=t.replace(J9,(z,de,Ve,Ot,ot,Lf)=>Ot==="\\"?(K=!0,z):Ot==="?"?de?de+Ot+(ot?g.repeat(ot.length):""):Lf===0?F+(ot?g.repeat(ot.length):""):g.repeat(Ve.length):Ot==="."?d.repeat(Ve.length):Ot==="*"?de?de+Ot+(ot?L:""):L:de?z:`\\${z}`);return K===!0&&(r.unescape===!0?Se=Se.replace(/\\/g,""):Se=Se.replace(/\\+/g,z=>z.length%2===0?"\\\\":z?"\\":"")),Se===t&&r.contains===!0?(A.output=t,A):(A.output=ur.wrapOutput(Se,A,e),A)}for(;!w();){if(D=O(),D==="\0")continue;if(D==="\\"){let z=C();if(z==="/"&&r.bash!==!0||z==="."||z===";")continue;if(!z){D+="\\",U({type:"text",value:D});continue}let de=/^\\+/.exec(R()),Ve=0;if(de&&de[0].length>2&&(Ve=de[0].length,A.index+=Ve,Ve%2!==0&&(D+="\\")),r.unescape===!0?D=O():D+=O(),A.brackets===0){U({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||P.value==="["||P.value==="[^")){if(r.posix!==!1&&D===":"){let z=P.value.slice(1);if(z.includes("[")&&(P.posix=!0,z.includes(":"))){let de=P.value.lastIndexOf("["),Ve=P.value.slice(0,de),Ot=P.value.slice(de+2),ot=W9[Ot];if(ot){P.value=Ve+ot,A.backtrack=!0,O(),!i.output&&a.indexOf(P)===1&&(i.output=m);continue}}}(D==="["&&C()!==":"||D==="-"&&C()==="]")&&(D=`\\${D}`),D==="]"&&(P.value==="["||P.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&P.value==="["&&(D="^"),P.value+=D,H({value:D});continue}if(A.quotes===1&&D!=='"'){D=ur.escapeRegex(D),P.value+=D,H({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&U({type:"text",value:D});continue}if(D==="("){N("parens"),U({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Da("opening","("));let z=q[q.length-1];if(z&&A.parens===z.parens+1){Zt(q.pop());continue}U({type:"paren",value:D,output:A.parens?")":"\\)"}),X("parens");continue}if(D==="["){if(r.nobracket===!0||!R().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Da("closing","]"));D=`\\${D}`}else N("brackets");U({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||P&&P.type==="bracket"&&P.value.length===1){U({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Da("opening","["));U({type:"text",value:D,output:`\\${D}`});continue}X("brackets");let z=P.value.slice(1);if(P.posix!==!0&&z[0]==="^"&&!z.includes("/")&&(D=`/${D}`),P.value+=D,H({value:D}),r.literalBrackets===!1||ur.hasRegexChars(z))continue;let de=ur.escapeRegex(P.value);if(A.output=A.output.slice(0,-P.value.length),r.literalBrackets===!0){A.output+=de,P.value=de;continue}P.value=`(${s}${de}|${P.value})`,A.output+=P.value;continue}if(D==="{"&&r.nobrace!==!0){N("braces");let z={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};j.push(z),U(z);continue}if(D==="}"){let z=j[j.length-1];if(r.nobrace===!0||!z){U({type:"text",value:D,output:D});continue}let de=")";if(z.dots===!0){let Ve=a.slice(),Ot=[];for(let ot=Ve.length-1;ot>=0&&(a.pop(),Ve[ot].type!=="brace");ot--)Ve[ot].type!=="dots"&&Ot.unshift(Ve[ot].value);de=X9(Ot,r),A.backtrack=!0}if(z.comma!==!0&&z.dots!==!0){let Ve=A.output.slice(0,z.outputIndex),Ot=A.tokens.slice(z.tokensIndex);z.value=z.output="\\{",D=de="\\}",A.output=Ve;for(let ot of Ot)A.output+=ot.output||ot.value}U({type:"brace",value:D,output:de}),X("braces"),j.pop();continue}if(D==="|"){q.length>0&&q[q.length-1].conditions++,U({type:"text",value:D});continue}if(D===","){let z=D,de=j[j.length-1];de&&Z[Z.length-1]==="braces"&&(de.comma=!0,z="|"),U({type:"comma",value:D,output:z});continue}if(D==="/"){if(P.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",a.pop(),P=i;continue}U({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&P.type==="dot"){P.value==="."&&(P.output=d);let z=j[j.length-1];P.type="dots",P.output+=D,P.value+=D,z.dots=!0;continue}if(A.braces+A.parens===0&&P.type!=="bos"&&P.type!=="slash"){U({type:"text",value:D,output:d});continue}U({type:"dot",value:D,output:d});continue}if(D==="?"){if(!(P&&P.value==="(")&&r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("qmark",D);continue}if(P&&P.type==="paren"){let de=C(),Ve=D;if(de==="<"&&!ur.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(P.value==="("&&!/[!=<:]/.test(de)||de==="<"&&!/<([!=]|\w+>)/.test(R()))&&(Ve=`\\${D}`),U({type:"text",value:D,output:Ve});continue}if(r.dot!==!0&&(P.type==="slash"||P.type==="bos")){U({type:"qmark",value:D,output:_});continue}U({type:"qmark",value:D,output:g});continue}if(D==="!"){if(r.noextglob!==!0&&C()==="("&&(C(2)!=="?"||!/[!=<:]/.test(C(3)))){oe("negate",D);continue}if(r.nonegate!==!0&&A.index===0){I();continue}}if(D==="+"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("plus",D);continue}if(P&&P.value==="("||r.regex===!1){U({type:"plus",value:D,output:p});continue}if(P&&(P.type==="bracket"||P.type==="paren"||P.type==="brace")||A.parens>0){U({type:"plus",value:D});continue}U({type:"plus",value:p});continue}if(D==="@"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){U({type:"at",extglob:!0,value:D,output:""});continue}U({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let z=Y9.exec(R());z&&(D+=z[0],A.index+=z[0].length),U({type:"text",value:D});continue}if(P&&(P.type==="globstar"||P.star===!0)){P.type="star",P.star=!0,P.value+=D,P.output=L,A.backtrack=!0,A.globstar=!0,$(D);continue}let K=R();if(r.noextglob!==!0&&/^\([^?]/.test(K)){oe("star",D);continue}if(P.type==="star"){if(r.noglobstar===!0){$(D);continue}let z=P.prev,de=z.prev,Ve=z.type==="slash"||z.type==="bos",Ot=de&&(de.type==="star"||de.type==="globstar");if(r.bash===!0&&(!Ve||K[0]&&K[0]!=="/")){U({type:"star",value:D,output:""});continue}let ot=A.braces>0&&(z.type==="comma"||z.type==="brace"),Lf=q.length&&(z.type==="pipe"||z.type==="paren");if(!Ve&&z.type!=="paren"&&!ot&&!Lf){U({type:"star",value:D,output:""});continue}for(;K.slice(0,3)==="/**";){let nu=t[A.index+4];if(nu&&nu!=="/")break;K=K.slice(3),$("/**",3)}if(z.type==="bos"&&w()){P.type="globstar",P.value+=D,P.output=T(r),A.output=P.output,A.globstar=!0,$(D);continue}if(z.type==="slash"&&z.prev.type!=="bos"&&!Ot&&w()){A.output=A.output.slice(0,-(z.output+P.output).length),z.output=`(?:${z.output}`,P.type="globstar",P.output=T(r)+(r.strictSlashes?")":"|$)"),P.value+=D,A.globstar=!0,A.output+=z.output+P.output,$(D);continue}if(z.type==="slash"&&z.prev.type!=="bos"&&K[0]==="/"){let nu=K[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(z.output+P.output).length),z.output=`(?:${z.output}`,P.type="globstar",P.output=`${T(r)}${h}|${h}${nu})`,P.value+=D,A.output+=z.output+P.output,A.globstar=!0,$(D+O()),U({type:"slash",value:"/",output:""});continue}if(z.type==="bos"&&K[0]==="/"){P.type="globstar",P.value+=D,P.output=`(?:^|${h}|${T(r)}${h})`,A.output=P.output,A.globstar=!0,$(D+O()),U({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-P.output.length),P.type="globstar",P.output=T(r),P.value+=D,A.output+=P.output,A.globstar=!0,$(D);continue}let Se={type:"star",value:D,output:L};if(r.bash===!0){Se.output=".*?",(P.type==="bos"||P.type==="slash")&&(Se.output=B+Se.output),U(Se);continue}if(P&&(P.type==="bracket"||P.type==="paren")&&r.regex===!0){Se.output=D,U(Se);continue}(A.index===A.start||P.type==="slash"||P.type==="dot")&&(P.type==="dot"?(A.output+=v,P.output+=v):r.dot===!0?(A.output+=E,P.output+=E):(A.output+=B,P.output+=B),C()!=="*"&&(A.output+=m,P.output+=m)),U(Se)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing","]"));A.output=ur.escapeLast(A.output,"["),X("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing",")"));A.output=ur.escapeLast(A.output,"("),X("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing","}"));A.output=ur.escapeLast(A.output,"{"),X("braces")}if(r.strictSlashes!==!0&&(P.type==="star"||P.type==="bracket")&&U({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let K of A.tokens)A.output+=K.output!=null?K.output:K.value,K.suffix&&(A.output+=K.suffix)}return A};by.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(xf,r.maxLength):xf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);t=aF[t]||t;let i=ur.isWindows(e),{DOT_LITERAL:a,SLASH_LITERAL:s,ONE_CHAR:u,DOTS_SLASH:c,NO_DOT:f,NO_DOTS:d,NO_DOTS_SLASH:p,STAR:h,START_ANCHOR:m}=Sf.globChars(i),y=r.dot?d:f,b=r.dot?p:f,v=r.capture?"":"?:",E={negated:!1,prefix:""},g=r.bash===!0?".*?":h;r.capture&&(g=`(${g})`);let _=B=>B.noglobstar===!0?g:`(${v}(?:(?!${m}${B.dot?c:a}).)*?)`,S=B=>{switch(B){case"*":return`${y}${u}${g}`;case".*":return`${a}${u}${g}`;case"*.*":return`${y}${g}${a}${u}${g}`;case"*/*":return`${y}${g}${s}${u}${b}${g}`;case"**":return y+_(r);case"**/*":return`(?:${y}${_(r)}${s})?${b}${u}${g}`;case"**/*.*":return`(?:${y}${_(r)}${s})?${b}${g}${a}${u}${g}`;case"**/.*":return`(?:${y}${_(r)}${s})?${a}${u}${g}`;default:{let F=/^(.*?)\.(\w+)$/.exec(B);if(!F)return;let L=S(F[1]);return L?L+a+F[2]:void 0}}},k=ur.removePrefix(t,E),T=S(k);return T&&r.strictSlashes!==!0&&(T+=`${s}?`),T};sF.exports=by});var lF=x((kX,cF)=>{"use strict";var Z9=require("path"),Q9=iF(),wy=uF(),vy=Js(),e7=Ys(),t7=t=>t&&typeof t=="object"&&!Array.isArray(t),rt=(t,e,r=!1)=>{if(Array.isArray(t)){let f=t.map(p=>rt(p,e,r));return p=>{for(let h of f){let m=h(p);if(m)return m}return!1}}let n=t7(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!n)throw new TypeError("Expected pattern to be a non-empty string");let o=e||{},i=vy.isWindows(e),a=n?rt.compileRe(t,e):rt.makeRe(t,e,!1,!0),s=a.state;delete a.state;let u=()=>!1;if(o.ignore){let f={...e,ignore:null,onMatch:null,onResult:null};u=rt(o.ignore,f,r)}let c=(f,d=!1)=>{let{isMatch:p,match:h,output:m}=rt.test(f,a,e,{glob:t,posix:i}),y={glob:t,state:s,regex:a,posix:i,input:f,output:m,match:h,isMatch:p};return typeof o.onResult=="function"&&o.onResult(y),p===!1?(y.isMatch=!1,d?y:!1):u(f)?(typeof o.onIgnore=="function"&&o.onIgnore(y),y.isMatch=!1,d?y:!1):(typeof o.onMatch=="function"&&o.onMatch(y),d?y:!0)};return r&&(c.state=s),c};rt.test=(t,e,r,{glob:n,posix:o}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let i=r||{},a=i.format||(o?vy.toPosixSlashes:null),s=t===n,u=s&&a?a(t):t;return s===!1&&(u=a?a(t):t,s=u===n),(s===!1||i.capture===!0)&&(i.matchBase===!0||i.basename===!0?s=rt.matchBase(t,e,r,o):s=e.exec(u)),{isMatch:!!s,match:s,output:u}};rt.matchBase=(t,e,r,n=vy.isWindows(r))=>(e instanceof RegExp?e:rt.makeRe(e,r)).test(Z9.basename(t));rt.isMatch=(t,e,r)=>rt(e,r)(t);rt.parse=(t,e)=>Array.isArray(t)?t.map(r=>rt.parse(r,e)):wy(t,{...e,fastpaths:!1});rt.scan=(t,e)=>Q9(t,e);rt.compileRe=(t,e,r=!1,n=!1)=>{if(r===!0)return t.output;let o=e||{},i=o.contains?"":"^",a=o.contains?"":"$",s=`${i}(?:${t.output})${a}`;t&&t.negated===!0&&(s=`^(?!${s}).*$`);let u=rt.toRegex(s,e);return n===!0&&(u.state=t),u};rt.makeRe=(t,e={},r=!1,n=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let o={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(o.output=wy.fastpaths(t,e)),o.output||(o=wy(t,e)),rt.compileRe(o,e,r,n)};rt.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};rt.constants=e7;cF.exports=rt});var dF=x(($X,fF)=>{"use strict";fF.exports=lF()});var DF=x((IX,yF)=>{"use strict";var hF=require("util"),mF=K1(),Jr=dF(),Cy=Js(),pF=t=>t===""||t==="./",gF=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},je=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,o=new Set,i=new Set,a=0,s=f=>{i.add(f.output),r&&r.onResult&&r.onResult(f)};for(let f=0;f<e.length;f++){let d=Jr(String(e[f]),{...r,onResult:s},!0),p=d.state.negated||d.state.negatedExtglob;p&&a++;for(let h of t){let m=d(h,!0);(p?!m.isMatch:m.isMatch)&&(p?n.add(m.output):(n.delete(m.output),o.add(m.output)))}}let c=(a===e.length?[...i]:[...o]).filter(f=>!n.has(f));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(f=>f.replace(/\\/g,"")):e}return c};je.match=je;je.matcher=(t,e)=>Jr(t,e);je.isMatch=(t,e,r)=>Jr(e,r)(t);je.any=je.isMatch;je.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,o=[],i=s=>{r.onResult&&r.onResult(s),o.push(s.output)},a=new Set(je(t,e,{...r,onResult:i}));for(let s of o)a.has(s)||n.add(s);return[...n]};je.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${hF.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>je.contains(t,n,r));if(typeof e=="string"){if(pF(t)||pF(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return je.isMatch(t,e,{...r,contains:!0})};je.matchKeys=(t,e,r)=>{if(!Cy.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=je(Object.keys(t),e,r),o={};for(let i of n)o[i]=t[i];return o};je.some=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Jr(String(o),r);if(n.some(a=>i(a)))return!0}return!1};je.every=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Jr(String(o),r);if(!n.every(a=>i(a)))return!1}return!0};je.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${hF.inspect(t)}"`);return[].concat(e).every(n=>Jr(n,r)(t))};je.capture=(t,e,r)=>{let n=Cy.isWindows(r),i=Jr.makeRe(String(t),{...r,capture:!0}).exec(n?Cy.toPosixSlashes(e):e);if(i)return i.slice(1).map(a=>a===void 0?"":a)};je.makeRe=(...t)=>Jr.makeRe(...t);je.scan=(...t)=>Jr.scan(...t);je.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let o of mF(String(n),e))r.push(Jr.parse(o,e));return r};je.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!gF(t)?[t]:mF(t,e)};je.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return je.braces(t,{...e,expand:!0})};je.hasBraces=gF;yF.exports=je});var r2=x((IZ,vn)=>{var Te=require("fs"),If=require("os"),wt=require("path"),jF=require("crypto"),Zr={fs:Te.constants,os:If.constants},UF="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",VF=/XXXXXX/,O7=3,zF=(Zr.O_CREAT||Zr.fs.O_CREAT)|(Zr.O_EXCL||Zr.fs.O_EXCL)|(Zr.O_RDWR||Zr.fs.O_RDWR),F7=If.platform()==="win32",P7=Zr.EBADF||Zr.os.errno.EBADF,k7=Zr.ENOENT||Zr.os.errno.ENOENT,KF=448,GF=384,$7="exit",wa=[],WF=Te.rmdirSync.bind(Te),YF=!1;function I7(t,e){return Te.rm(t,{recursive:!0},e)}function JF(t){return Te.rmSync(t,{recursive:!0})}function Ay(t,e){let r=va(t,e),n=r[0],o=r[1];H7(n,function(i,a){if(i)return o(i);let s=a.tries;(function u(){try{let c=ZF(a);Te.stat(c,function(f){if(!f)return s-- >0?u():o(new Error("Could not get a unique tmp filename, max tries reached "+c));o(null,c)})}catch(c){o(c)}})()})}function Oy(t){let e=va(t),r=e[0],n=V7(r),o=n.tries;do{let i=ZF(n);try{Te.statSync(i)}catch{return i}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function T7(t,e){let r=va(t,e),n=r[0],o=r[1];Ay(n,function(a,s){if(a)return o(a);Te.open(s,zF,n.mode||GF,function(c,f){if(c)return o(c);if(n.discardDescriptor)return Te.close(f,function(p){return o(p,s,void 0,Sy(s,-1,n,!1))});{let d=n.discardDescriptor||n.detachDescriptor;o(null,s,f,Sy(s,d?-1:f,n,!1))}})})}function R7(t){let e=va(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,o=Oy(r),i=Te.openSync(o,zF,r.mode||GF);return r.discardDescriptor&&(Te.closeSync(i),i=void 0),{name:o,fd:i,removeCallback:Sy(o,n?-1:i,r,!0)}}function B7(t,e){let r=va(t,e),n=r[0],o=r[1];Ay(n,function(a,s){if(a)return o(a);Te.mkdir(s,n.mode||KF,function(c){if(c)return o(c);o(null,s,XF(s,n,!1))})})}function N7(t){let e=va(t),r=e[0],n=Oy(r);return Te.mkdirSync(n,r.mode||KF),{name:n,removeCallback:XF(n,r,!0)}}function L7(t,e){let r=function(n){if(n&&!xy(n))return e(n);e()};0<=t[0]?Te.close(t[0],function(){Te.unlink(t[1],r)}):Te.unlink(t[1],r)}function j7(t){let e=null;try{0<=t[0]&&Te.closeSync(t[0])}catch(r){if(!z7(r)&&!xy(r))throw r}finally{try{Te.unlinkSync(t[1])}catch(r){xy(r)||(e=r)}}if(e!==null)throw e}function Sy(t,e,r,n){let o=$f(j7,[e,t],n),i=$f(L7,[e,t],n,o);return r.keep||wa.unshift(o),n?o:i}function XF(t,e,r){let n=e.unsafeCleanup?I7:Te.rmdir.bind(Te),o=e.unsafeCleanup?JF:WF,i=$f(o,t,r),a=$f(n,t,r,i);return e.keep||wa.unshift(i),r?i:a}function $f(t,e,r,n){let o=!1;return function i(a){if(!o){let s=n||i,u=wa.indexOf(s);return u>=0&&wa.splice(u,1),o=!0,r||t===WF||t===JF?t(e):t(e,a||function(){})}}}function U7(){if(YF)for(;wa.length;)try{wa[0]()}catch{}}function MF(t){let e=[],r=null;try{r=jF.randomBytes(t)}catch{r=jF.pseudoRandomBytes(t)}for(let n=0;n<t;n++)e.push(UF[r[n]%UF.length]);return e.join("")}function cr(t){return typeof t>"u"}function va(t,e){if(typeof t=="function")return[{},t];if(cr(t))return[{},e];let r={};for(let n of Object.getOwnPropertyNames(t))r[n]=t[n];return[r,e]}function M7(t,e,r){let n=wt.isAbsolute(t)?t:wt.join(e,t);Te.stat(n,function(o){o?Te.realpath(wt.dirname(n),function(i,a){if(i)return r(i);r(null,wt.join(a,wt.basename(n)))}):Te.realpath(n,r)})}function q7(t,e){let r=wt.isAbsolute(t)?t:wt.join(e,t);try{return Te.statSync(r),Te.realpathSync(r)}catch{let o=Te.realpathSync(wt.dirname(r));return wt.join(o,wt.basename(r))}}function ZF(t){let e=t.tmpdir;if(!cr(t.name))return wt.join(e,t.dir,t.name);if(!cr(t.template))return wt.join(e,t.dir,t.template).replace(VF,MF(6));let r=[t.prefix?t.prefix:"tmp","-",process.pid,"-",MF(12),t.postfix?"-"+t.postfix:""].join("");return wt.join(e,t.dir,r)}function QF(t){if(!cr(t.name)){let e=t.name;if(wt.isAbsolute(e))throw new Error(`name option must not contain an absolute path, found "${e}".`);let r=wt.basename(e);if(r===".."||r==="."||r!==e)throw new Error(`name option must not contain a path, found "${e}".`)}if(!cr(t.template)&&!t.template.match(VF))throw new Error(`Invalid template, found "${t.template}".`);if(!cr(t.tries)&&isNaN(t.tries)||t.tries<0)throw new Error(`Invalid tries, found "${t.tries}".`);t.tries=cr(t.name)?t.tries||O7:1,t.keep=!!t.keep,t.detachDescriptor=!!t.detachDescriptor,t.discardDescriptor=!!t.discardDescriptor,t.unsafeCleanup=!!t.unsafeCleanup,t.prefix=cr(t.prefix)?"":t.prefix,t.postfix=cr(t.postfix)?"":t.postfix}function qF(t,e,r,n){if(cr(e))return n(null);M7(e,r,function(o,i){if(o)return n(o);let a=wt.relative(r,i);if(!i.startsWith(r))return n(new Error(`${t} option must be relative to "${r}", found "${a}".`));n(null,a)})}function HF(t,e,r){if(cr(e))return;let n=q7(e,r),o=wt.relative(r,n);if(!n.startsWith(r))throw new Error(`${t} option must be relative to "${r}", found "${o}".`);return o}function H7(t,e){G7(t,function(r,n){if(r)return e(r);t.tmpdir=n;try{QF(t,n)}catch(o){return e(o)}qF("dir",t.dir,n,function(o,i){if(o)return e(o);t.dir=cr(i)?"":i,qF("template",t.template,n,function(a,s){if(a)return e(a);t.template=s,e(null,t)})})})}function V7(t){let e=t.tmpdir=t2(t);QF(t,e);let r=HF("dir",t.dir,e);return t.dir=cr(r)?"":r,t.template=HF("template",t.template,e),t}function z7(t){return e2(t,-P7,"EBADF")}function xy(t){return e2(t,-k7,"ENOENT")}function e2(t,e,r){return F7?t.code===r:t.code===r&&t.errno===e}function K7(){YF=!0}function G7(t,e){return Te.realpath(t&&t.tmpdir||If.tmpdir(),e)}function t2(t){return Te.realpathSync(t&&t.tmpdir||If.tmpdir())}process.addListener($7,U7);Object.defineProperty(vn.exports,"tmpdir",{enumerable:!0,configurable:!1,get:function(){return t2()}});vn.exports.dir=B7;vn.exports.dirSync=N7;vn.exports.file=T7;vn.exports.fileSync=R7;vn.exports.tmpName=Ay;vn.exports.tmpNameSync=Oy;vn.exports.setGracefulCleanup=K7});var Rf=require("node:process");var Zy=pe(Xy(),1),{program:at,createCommand:kq,createArgument:$q,createOption:Iq,CommanderError:Tq,InvalidArgumentError:Rq,InvalidOptionArgumentError:Bq,Command:Nq,Argument:Lq,Option:jq,Help:Uq}=Zy.default;var fr={name:"@capgo/cli",version:"7.58.1",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};var la=require("node:fs");var vt=pe(nd(),1),Yo=require("node:process"),En=pe(require("node:readline"),1),ud=pe(require("node:readline"),1),lD=require("node:stream"),Sa=pe(id(),1);function j2({onlyFirst:t=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}var U2=j2();function fD(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(U2,"")}function dD(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var pD={exports:{}};(function(t){var e={};t.exports=e,e.eastAsianWidth=function(n){var o=n.charCodeAt(0),i=n.length==2?n.charCodeAt(1):0,a=o;return 55296<=o&&o<=56319&&56320<=i&&i<=57343&&(o&=1023,i&=1023,a=o<<10|i,a+=65536),a==12288||65281<=a&&a<=65376||65504<=a&&a<=65510?"F":a==8361||65377<=a&&a<=65470||65474<=a&&a<=65479||65482<=a&&a<=65487||65490<=a&&a<=65495||65498<=a&&a<=65500||65512<=a&&a<=65518?"H":4352<=a&&a<=4447||4515<=a&&a<=4519||4602<=a&&a<=4607||9001<=a&&a<=9002||11904<=a&&a<=11929||11931<=a&&a<=12019||12032<=a&&a<=12245||12272<=a&&a<=12283||12289<=a&&a<=12350||12353<=a&&a<=12438||12441<=a&&a<=12543||12549<=a&&a<=12589||12593<=a&&a<=12686||12688<=a&&a<=12730||12736<=a&&a<=12771||12784<=a&&a<=12830||12832<=a&&a<=12871||12880<=a&&a<=13054||13056<=a&&a<=19903||19968<=a&&a<=42124||42128<=a&&a<=42182||43360<=a&&a<=43388||44032<=a&&a<=55203||55216<=a&&a<=55238||55243<=a&&a<=55291||63744<=a&&a<=64255||65040<=a&&a<=65049||65072<=a&&a<=65106||65108<=a&&a<=65126||65128<=a&&a<=65131||110592<=a&&a<=110593||127488<=a&&a<=127490||127504<=a&&a<=127546||127552<=a&&a<=127560||127568<=a&&a<=127569||131072<=a&&a<=194367||177984<=a&&a<=196605||196608<=a&&a<=262141?"W":32<=a&&a<=126||162<=a&&a<=163||165<=a&&a<=166||a==172||a==175||10214<=a&&a<=10221||10629<=a&&a<=10630?"Na":a==161||a==164||167<=a&&a<=168||a==170||173<=a&&a<=174||176<=a&&a<=180||182<=a&&a<=186||188<=a&&a<=191||a==198||a==208||215<=a&&a<=216||222<=a&&a<=225||a==230||232<=a&&a<=234||236<=a&&a<=237||a==240||242<=a&&a<=243||247<=a&&a<=250||a==252||a==254||a==257||a==273||a==275||a==283||294<=a&&a<=295||a==299||305<=a&&a<=307||a==312||319<=a&&a<=322||a==324||328<=a&&a<=331||a==333||338<=a&&a<=339||358<=a&&a<=359||a==363||a==462||a==464||a==466||a==468||a==470||a==472||a==474||a==476||a==593||a==609||a==708||a==711||713<=a&&a<=715||a==717||a==720||728<=a&&a<=731||a==733||a==735||768<=a&&a<=879||913<=a&&a<=929||931<=a&&a<=937||945<=a&&a<=961||963<=a&&a<=969||a==1025||1040<=a&&a<=1103||a==1105||a==8208||8211<=a&&a<=8214||8216<=a&&a<=8217||8220<=a&&a<=8221||8224<=a&&a<=8226||8228<=a&&a<=8231||a==8240||8242<=a&&a<=8243||a==8245||a==8251||a==8254||a==8308||a==8319||8321<=a&&a<=8324||a==8364||a==8451||a==8453||a==8457||a==8467||a==8470||8481<=a&&a<=8482||a==8486||a==8491||8531<=a&&a<=8532||8539<=a&&a<=8542||8544<=a&&a<=8555||8560<=a&&a<=8569||a==8585||8592<=a&&a<=8601||8632<=a&&a<=8633||a==8658||a==8660||a==8679||a==8704||8706<=a&&a<=8707||8711<=a&&a<=8712||a==8715||a==8719||a==8721||a==8725||a==8730||8733<=a&&a<=8736||a==8739||a==8741||8743<=a&&a<=8748||a==8750||8756<=a&&a<=8759||8764<=a&&a<=8765||a==8776||a==8780||a==8786||8800<=a&&a<=8801||8804<=a&&a<=8807||8810<=a&&a<=8811||8814<=a&&a<=8815||8834<=a&&a<=8835||8838<=a&&a<=8839||a==8853||a==8857||a==8869||a==8895||a==8978||9312<=a&&a<=9449||9451<=a&&a<=9547||9552<=a&&a<=9587||9600<=a&&a<=9615||9618<=a&&a<=9621||9632<=a&&a<=9633||9635<=a&&a<=9641||9650<=a&&a<=9651||9654<=a&&a<=9655||9660<=a&&a<=9661||9664<=a&&a<=9665||9670<=a&&a<=9672||a==9675||9678<=a&&a<=9681||9698<=a&&a<=9701||a==9711||9733<=a&&a<=9734||a==9737||9742<=a&&a<=9743||9748<=a&&a<=9749||a==9756||a==9758||a==9792||a==9794||9824<=a&&a<=9825||9827<=a&&a<=9829||9831<=a&&a<=9834||9836<=a&&a<=9837||a==9839||9886<=a&&a<=9887||9918<=a&&a<=9919||9924<=a&&a<=9933||9935<=a&&a<=9953||a==9955||9960<=a&&a<=9983||a==10045||a==10071||10102<=a&&a<=10111||11093<=a&&a<=11097||12872<=a&&a<=12879||57344<=a&&a<=63743||65024<=a&&a<=65039||a==65533||127232<=a&&a<=127242||127248<=a&&a<=127277||127280<=a&&a<=127337||127344<=a&&a<=127386||917760<=a&&a<=917999||983040<=a&&a<=1048573||1048576<=a&&a<=1114109?"A":"N"},e.characterLength=function(n){var o=this.eastAsianWidth(n);return o=="F"||o=="W"||o=="A"?2:1};function r(n){return n.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}e.length=function(n){for(var o=r(n),i=0,a=0;a<o.length;a++)i=i+this.characterLength(o[a]);return i},e.slice=function(n,o,i){textLen=e.length(n),o=o||0,i=i||1,o<0&&(o=textLen+o),i<0&&(i=textLen+i);for(var a="",s=0,u=r(n),c=0;c<u.length;c++){var f=u[c],d=e.length(f);if(s>=o-(d==2?1:0))if(s+d<=i)a+=f;else break;s+=d}return a}})(pD);var M2=pD.exports,q2=dD(M2),H2=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},V2=dD(H2);function xa(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=fD(t),t.length===0))return 0;t=t.replace(V2()," ");let r=e.ambiguousIsNarrow?1:2,n=0;for(let o of t){let i=o.codePointAt(0);if(!(i<=31||i>=127&&i<=159||i>=768&&i<=879))switch(q2.eastAsianWidth(o)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}var ad=10,rD=(t=0)=>e=>`\x1B[${e+t}m`,nD=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,oD=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,Ue={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(Ue.modifier);var z2=Object.keys(Ue.color),K2=Object.keys(Ue.bgColor);[...z2,...K2];function G2(){let t=new Map;for(let[e,r]of Object.entries(Ue)){for(let[n,o]of Object.entries(r))Ue[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=Ue[n],t.set(o[0],o[1]);Object.defineProperty(Ue,e,{value:r,enumerable:!1})}return Object.defineProperty(Ue,"codes",{value:t,enumerable:!1}),Ue.color.close="\x1B[39m",Ue.bgColor.close="\x1B[49m",Ue.color.ansi=rD(),Ue.color.ansi256=nD(),Ue.color.ansi16m=oD(),Ue.bgColor.ansi=rD(ad),Ue.bgColor.ansi256=nD(ad),Ue.bgColor.ansi16m=oD(ad),Object.defineProperties(Ue,{rgbToAnsi256:{value:(e,r,n)=>e===r&&r===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5),enumerable:!1},hexToRgb:{value:e=>{let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>Ue.rgbToAnsi256(...Ue.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:e=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,n,o;if(e>=232)r=((e-232)*10+8)/255,n=r,o=r;else{e-=16;let s=e%36;r=Math.floor(e/36)/5,n=Math.floor(s/6)/5,o=s%6/5}let i=Math.max(r,n,o)*2;if(i===0)return 30;let a=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(r));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,r,n)=>Ue.ansi256ToAnsi(Ue.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>Ue.ansi256ToAnsi(Ue.hexToAnsi256(e)),enumerable:!1}}),Ue}var W2=G2(),gu=new Set(["\x1B","\x9B"]),Y2=39,ld="\x07",hD="[",J2="]",mD="m",fd=`${J2}8;;`,iD=t=>`${gu.values().next().value}${hD}${t}${mD}`,aD=t=>`${gu.values().next().value}${fd}${t}${ld}`,X2=t=>t.split(" ").map(e=>xa(e)),sd=(t,e,r)=>{let n=[...e],o=!1,i=!1,a=xa(fD(t[t.length-1]));for(let[s,u]of n.entries()){let c=xa(u);if(a+c<=r?t[t.length-1]+=u:(t.push(u),a=0),gu.has(u)&&(o=!0,i=n.slice(s+1).join("").startsWith(fd)),o){i?u===ld&&(o=!1,i=!1):u===mD&&(o=!1);continue}a+=c,a===r&&s<n.length-1&&(t.push(""),a=0)}!a&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},Z2=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(xa(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},Q2=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let n="",o,i,a=X2(t),s=[""];for(let[c,f]of t.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let d=xa(s[s.length-1]);if(c!==0&&(d>=e&&(r.wordWrap===!1||r.trim===!1)&&(s.push(""),d=0),(d>0||r.trim===!1)&&(s[s.length-1]+=" ",d++)),r.hard&&a[c]>e){let p=e-d,h=1+Math.floor((a[c]-p-1)/e);Math.floor((a[c]-1)/e)<h&&s.push(""),sd(s,f,e);continue}if(d+a[c]>e&&d>0&&a[c]>0){if(r.wordWrap===!1&&d<e){sd(s,f,e);continue}s.push("")}if(d+a[c]>e&&r.wordWrap===!1){sd(s,f,e);continue}s[s.length-1]+=f}r.trim!==!1&&(s=s.map(c=>Z2(c)));let u=[...s.join(`
|
|
112
|
+
`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var H1=x((SX,q1)=>{"use strict";var s9=vf(),{MAX_LENGTH:j1,CHAR_BACKSLASH:fy,CHAR_BACKTICK:u9,CHAR_COMMA:c9,CHAR_DOT:l9,CHAR_LEFT_PARENTHESES:f9,CHAR_RIGHT_PARENTHESES:d9,CHAR_LEFT_CURLY_BRACE:p9,CHAR_RIGHT_CURLY_BRACE:h9,CHAR_LEFT_SQUARE_BRACKET:U1,CHAR_RIGHT_SQUARE_BRACKET:M1,CHAR_DOUBLE_QUOTE:m9,CHAR_SINGLE_QUOTE:g9,CHAR_NO_BREAK_SPACE:y9,CHAR_ZERO_WIDTH_NOBREAK_SPACE:D9}=L1(),b9=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(j1,r.maxLength):j1;if(t.length>n)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${n})`);let o={type:"root",input:t,nodes:[]},i=[o],a=o,s=o,u=0,c=t.length,f=0,d=0,p,h=()=>t[f++],m=y=>{if(y.type==="text"&&s.type==="dot"&&(s.type="text"),s&&s.type==="text"&&y.type==="text"){s.value+=y.value;return}return a.nodes.push(y),y.parent=a,y.prev=s,s=y,y};for(m({type:"bos"});f<c;)if(a=i[i.length-1],p=h(),!(p===D9||p===y9)){if(p===fy){m({type:"text",value:(e.keepEscaping?p:"")+h()});continue}if(p===M1){m({type:"text",value:"\\"+p});continue}if(p===U1){u++;let y;for(;f<c&&(y=h());){if(p+=y,y===U1){u++;continue}if(y===fy){p+=h();continue}if(y===M1&&(u--,u===0))break}m({type:"text",value:p});continue}if(p===f9){a=m({type:"paren",nodes:[]}),i.push(a),m({type:"text",value:p});continue}if(p===d9){if(a.type!=="paren"){m({type:"text",value:p});continue}a=i.pop(),m({type:"text",value:p}),a=i[i.length-1];continue}if(p===m9||p===g9||p===u9){let y=p,b;for(e.keepQuotes!==!0&&(p="");f<c&&(b=h());){if(b===fy){p+=b+h();continue}if(b===y){e.keepQuotes===!0&&(p+=b);break}p+=b}m({type:"text",value:p});continue}if(p===p9){d++;let b={type:"brace",open:!0,close:!1,dollar:s.value&&s.value.slice(-1)==="$"||a.dollar===!0,depth:d,commas:0,ranges:0,nodes:[]};a=m(b),i.push(a),m({type:"open",value:p});continue}if(p===h9){if(a.type!=="brace"){m({type:"text",value:p});continue}let y="close";a=i.pop(),a.close=!0,m({type:y,value:p}),d--,a=i[i.length-1];continue}if(p===c9&&d>0){if(a.ranges>0){a.ranges=0;let y=a.nodes.shift();a.nodes=[y,{type:"text",value:s9(a)}]}m({type:"comma",value:p}),a.commas++;continue}if(p===l9&&d>0&&a.commas===0){let y=a.nodes;if(d===0||y.length===0){m({type:"text",value:p});continue}if(s.type==="dot"){if(a.range=[],s.value+=p,s.type="range",a.nodes.length!==3&&a.nodes.length!==5){a.invalid=!0,a.ranges=0,s.type="text";continue}a.ranges++,a.args=[];continue}if(s.type==="range"){y.pop();let b=y[y.length-1];b.value+=s.value+p,s=b,a.ranges--;continue}m({type:"dot",value:p});continue}m({type:"text",value:p})}do if(a=i.pop(),a.type!=="root"){a.nodes.forEach(v=>{v.nodes||(v.type==="open"&&(v.isOpen=!0),v.type==="close"&&(v.isClose=!0),v.nodes||(v.type="text"),v.invalid=!0)});let y=i[i.length-1],b=y.nodes.indexOf(a);y.nodes.splice(b,1,...a.nodes)}while(i.length>0);return m({type:"eos"}),o};q1.exports=b9});var K1=x((xX,z1)=>{"use strict";var V1=vf(),w9=I1(),v9=B1(),C9=H1(),sr=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let o=sr.create(n,e);Array.isArray(o)?r.push(...o):r.push(o)}else r=[].concat(sr.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};sr.parse=(t,e={})=>C9(t,e);sr.stringify=(t,e={})=>V1(typeof t=="string"?sr.parse(t,e):t,e);sr.compile=(t,e={})=>(typeof t=="string"&&(t=sr.parse(t,e)),w9(t,e));sr.expand=(t,e={})=>{typeof t=="string"&&(t=sr.parse(t,e));let r=v9(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};sr.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?sr.compile(t,e):sr.expand(t,e);z1.exports=sr});var Ys=x((AX,X1)=>{"use strict";var E9=require("path"),Yr="\\\\/",G1=`[^${Yr}]`,wn="\\.",_9="\\+",S9="\\?",_f="\\/",x9="(?=.)",W1="[^/]",dy=`(?:${_f}|$)`,Y1=`(?:^|${_f})`,py=`${wn}{1,2}${dy}`,A9=`(?!${wn})`,O9=`(?!${Y1}${py})`,F9=`(?!${wn}{0,1}${dy})`,P9=`(?!${py})`,k9=`[^.${_f}]`,$9=`${W1}*?`,J1={DOT_LITERAL:wn,PLUS_LITERAL:_9,QMARK_LITERAL:S9,SLASH_LITERAL:_f,ONE_CHAR:x9,QMARK:W1,END_ANCHOR:dy,DOTS_SLASH:py,NO_DOT:A9,NO_DOTS:O9,NO_DOT_SLASH:F9,NO_DOTS_SLASH:P9,QMARK_NO_DOT:k9,STAR:$9,START_ANCHOR:Y1},I9={...J1,SLASH_LITERAL:`[${Yr}]`,QMARK:G1,STAR:`${G1}*?`,DOTS_SLASH:`${wn}{1,2}(?:[${Yr}]|$)`,NO_DOT:`(?!${wn})`,NO_DOTS:`(?!(?:^|[${Yr}])${wn}{1,2}(?:[${Yr}]|$))`,NO_DOT_SLASH:`(?!${wn}{0,1}(?:[${Yr}]|$))`,NO_DOTS_SLASH:`(?!${wn}{1,2}(?:[${Yr}]|$))`,QMARK_NO_DOT:`[^.${Yr}]`,START_ANCHOR:`(?:^|[${Yr}])`,END_ANCHOR:`(?:[${Yr}]|$)`},T9={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};X1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:T9,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:E9.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?I9:J1}}});var Js=x(Xt=>{"use strict";var R9=require("path"),B9=process.platform==="win32",{REGEX_BACKSLASH:N9,REGEX_REMOVE_BACKSLASH:L9,REGEX_SPECIAL_CHARS:j9,REGEX_SPECIAL_CHARS_GLOBAL:U9}=Ys();Xt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Xt.hasRegexChars=t=>j9.test(t);Xt.isRegexChar=t=>t.length===1&&Xt.hasRegexChars(t);Xt.escapeRegex=t=>t.replace(U9,"\\$1");Xt.toPosixSlashes=t=>t.replace(N9,"/");Xt.removeBackslashes=t=>t.replace(L9,e=>e==="\\"?"":e);Xt.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Xt.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:B9===!0||R9.sep==="\\";Xt.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?Xt.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};Xt.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Xt.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",o=r.contains?"":"$",i=`${n}(?:${t})${o}`;return e.negated===!0&&(i=`(?:^(?!${i}).*$)`),i}});var iF=x((FX,oF)=>{"use strict";var Z1=Js(),{CHAR_ASTERISK:hy,CHAR_AT:M9,CHAR_BACKWARD_SLASH:Xs,CHAR_COMMA:q9,CHAR_DOT:my,CHAR_EXCLAMATION_MARK:gy,CHAR_FORWARD_SLASH:nF,CHAR_LEFT_CURLY_BRACE:yy,CHAR_LEFT_PARENTHESES:Dy,CHAR_LEFT_SQUARE_BRACKET:H9,CHAR_PLUS:V9,CHAR_QUESTION_MARK:Q1,CHAR_RIGHT_CURLY_BRACE:z9,CHAR_RIGHT_PARENTHESES:eF,CHAR_RIGHT_SQUARE_BRACKET:K9}=Ys(),tF=t=>t===nF||t===Xs,rF=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},G9=(t,e)=>{let r=e||{},n=t.length-1,o=r.parts===!0||r.scanToEnd===!0,i=[],a=[],s=[],u=t,c=-1,f=0,d=0,p=!1,h=!1,m=!1,y=!1,b=!1,v=!1,E=!1,g=!1,_=!1,S=!1,k=0,T,B,F={value:"",depth:0,isGlob:!1},L=()=>c>=n,A=()=>u.charCodeAt(c+1),q=()=>(T=B,u.charCodeAt(++c));for(;c<n;){B=q();let w;if(B===Xs){E=F.backslashes=!0,B=q(),B===yy&&(v=!0);continue}if(v===!0||B===yy){for(k++;L()!==!0&&(B=q());){if(B===Xs){E=F.backslashes=!0,q();continue}if(B===yy){k++;continue}if(v!==!0&&B===my&&(B=q())===my){if(p=F.isBrace=!0,m=F.isGlob=!0,S=!0,o===!0)continue;break}if(v!==!0&&B===q9){if(p=F.isBrace=!0,m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===z9&&(k--,k===0)){v=!1,p=F.isBrace=!0,S=!0;break}}if(o===!0)continue;break}if(B===nF){if(i.push(c),a.push(F),F={value:"",depth:0,isGlob:!1},S===!0)continue;if(T===my&&c===f+1){f+=2;continue}d=c+1;continue}if(r.noext!==!0&&(B===V9||B===M9||B===hy||B===Q1||B===gy)===!0&&A()===Dy){if(m=F.isGlob=!0,y=F.isExtglob=!0,S=!0,B===gy&&c===f&&(_=!0),o===!0){for(;L()!==!0&&(B=q());){if(B===Xs){E=F.backslashes=!0,B=q();continue}if(B===eF){m=F.isGlob=!0,S=!0;break}}continue}break}if(B===hy){if(T===hy&&(b=F.isGlobstar=!0),m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===Q1){if(m=F.isGlob=!0,S=!0,o===!0)continue;break}if(B===H9){for(;L()!==!0&&(w=q());){if(w===Xs){E=F.backslashes=!0,q();continue}if(w===K9){h=F.isBracket=!0,m=F.isGlob=!0,S=!0;break}}if(o===!0)continue;break}if(r.nonegate!==!0&&B===gy&&c===f){g=F.negated=!0,f++;continue}if(r.noparen!==!0&&B===Dy){if(m=F.isGlob=!0,o===!0){for(;L()!==!0&&(B=q());){if(B===Dy){E=F.backslashes=!0,B=q();continue}if(B===eF){S=!0;break}}continue}break}if(m===!0){if(S=!0,o===!0)continue;break}}r.noext===!0&&(y=!1,m=!1);let j=u,Z="",P="";f>0&&(Z=u.slice(0,f),u=u.slice(f),d-=f),j&&m===!0&&d>0?(j=u.slice(0,d),P=u.slice(d)):m===!0?(j="",P=u):j=u,j&&j!==""&&j!=="/"&&j!==u&&tF(j.charCodeAt(j.length-1))&&(j=j.slice(0,-1)),r.unescape===!0&&(P&&(P=Z1.removeBackslashes(P)),j&&E===!0&&(j=Z1.removeBackslashes(j)));let D={prefix:Z,input:t,start:f,base:j,glob:P,isBrace:p,isBracket:h,isGlob:m,isExtglob:y,isGlobstar:b,negated:g,negatedExtglob:_};if(r.tokens===!0&&(D.maxDepth=0,tF(B)||a.push(F),D.tokens=a),r.parts===!0||r.tokens===!0){let w;for(let C=0;C<i.length;C++){let O=w?w+1:f,R=i[C],$=t.slice(O,R);r.tokens&&(C===0&&f!==0?(a[C].isPrefix=!0,a[C].value=Z):a[C].value=$,rF(a[C]),D.maxDepth+=a[C].depth),(C!==0||$!=="")&&s.push($),w=R}if(w&&w+1<t.length){let C=t.slice(w+1);s.push(C),r.tokens&&(a[a.length-1].value=C,rF(a[a.length-1]),D.maxDepth+=a[a.length-1].depth)}D.slashes=i,D.parts=s}return D};oF.exports=G9});var uF=x((PX,sF)=>{"use strict";var Sf=Ys(),ur=Js(),{MAX_LENGTH:xf,POSIX_REGEX_SOURCE:W9,REGEX_NON_SPECIAL_CHARS:Y9,REGEX_SPECIAL_CHARS_BACKREF:J9,REPLACEMENTS:aF}=Sf,X9=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(o=>ur.escapeRegex(o)).join("..")}return r},Da=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,by=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=aF[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(xf,r.maxLength):xf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);let i={type:"bos",value:"",output:r.prepend||""},a=[i],s=r.capture?"":"?:",u=ur.isWindows(e),c=Sf.globChars(u),f=Sf.extglobChars(c),{DOT_LITERAL:d,PLUS_LITERAL:p,SLASH_LITERAL:h,ONE_CHAR:m,DOTS_SLASH:y,NO_DOT:b,NO_DOT_SLASH:v,NO_DOTS_SLASH:E,QMARK:g,QMARK_NO_DOT:_,STAR:S,START_ANCHOR:k}=c,T=K=>`(${s}(?:(?!${k}${K.dot?y:d}).)*?)`,B=r.dot?"":b,F=r.dot?g:_,L=r.bash===!0?T(r):S;r.capture&&(L=`(${L})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:a};t=ur.removePrefix(t,A),o=t.length;let q=[],j=[],Z=[],P=i,D,w=()=>A.index===o-1,C=A.peek=(K=1)=>t[A.index+K],O=A.advance=()=>t[++A.index]||"",R=()=>t.slice(A.index+1),$=(K="",Se=0)=>{A.consumed+=K,A.index+=Se},H=K=>{A.output+=K.output!=null?K.output:K.value,$(K.value)},I=()=>{let K=1;for(;C()==="!"&&(C(2)!=="("||C(3)==="?");)O(),A.start++,K++;return K%2===0?!1:(A.negated=!0,A.start++,!0)},N=K=>{A[K]++,Z.push(K)},X=K=>{A[K]--,Z.pop()},U=K=>{if(P.type==="globstar"){let Se=A.braces>0&&(K.type==="comma"||K.type==="brace"),z=K.extglob===!0||q.length&&(K.type==="pipe"||K.type==="paren");K.type!=="slash"&&K.type!=="paren"&&!Se&&!z&&(A.output=A.output.slice(0,-P.output.length),P.type="star",P.value="*",P.output=L,A.output+=P.output)}if(q.length&&K.type!=="paren"&&(q[q.length-1].inner+=K.value),(K.value||K.output)&&H(K),P&&P.type==="text"&&K.type==="text"){P.value+=K.value,P.output=(P.output||"")+K.value;return}K.prev=P,a.push(K),P=K},oe=(K,Se)=>{let z={...f[Se],conditions:1,inner:""};z.prev=P,z.parens=A.parens,z.output=A.output;let de=(r.capture?"(":"")+z.open;N("parens"),U({type:K,value:Se,output:A.output?"":m}),U({type:"paren",extglob:!0,value:O(),output:de}),q.push(z)},Zt=K=>{let Se=K.close+(r.capture?")":""),z;if(K.type==="negate"){let de=L;if(K.inner&&K.inner.length>1&&K.inner.includes("/")&&(de=T(r)),(de!==L||w()||/^\)+$/.test(R()))&&(Se=K.close=`)$))${de}`),K.inner.includes("*")&&(z=R())&&/^\.[^\\/.]+$/.test(z)){let Ve=by(z,{...e,fastpaths:!1}).output;Se=K.close=`)${Ve})${de})`}K.prev.type==="bos"&&(A.negatedExtglob=!0)}U({type:"paren",extglob:!0,value:D,output:Se}),X("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let K=!1,Se=t.replace(J9,(z,de,Ve,Ot,ot,Lf)=>Ot==="\\"?(K=!0,z):Ot==="?"?de?de+Ot+(ot?g.repeat(ot.length):""):Lf===0?F+(ot?g.repeat(ot.length):""):g.repeat(Ve.length):Ot==="."?d.repeat(Ve.length):Ot==="*"?de?de+Ot+(ot?L:""):L:de?z:`\\${z}`);return K===!0&&(r.unescape===!0?Se=Se.replace(/\\/g,""):Se=Se.replace(/\\+/g,z=>z.length%2===0?"\\\\":z?"\\":"")),Se===t&&r.contains===!0?(A.output=t,A):(A.output=ur.wrapOutput(Se,A,e),A)}for(;!w();){if(D=O(),D==="\0")continue;if(D==="\\"){let z=C();if(z==="/"&&r.bash!==!0||z==="."||z===";")continue;if(!z){D+="\\",U({type:"text",value:D});continue}let de=/^\\+/.exec(R()),Ve=0;if(de&&de[0].length>2&&(Ve=de[0].length,A.index+=Ve,Ve%2!==0&&(D+="\\")),r.unescape===!0?D=O():D+=O(),A.brackets===0){U({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||P.value==="["||P.value==="[^")){if(r.posix!==!1&&D===":"){let z=P.value.slice(1);if(z.includes("[")&&(P.posix=!0,z.includes(":"))){let de=P.value.lastIndexOf("["),Ve=P.value.slice(0,de),Ot=P.value.slice(de+2),ot=W9[Ot];if(ot){P.value=Ve+ot,A.backtrack=!0,O(),!i.output&&a.indexOf(P)===1&&(i.output=m);continue}}}(D==="["&&C()!==":"||D==="-"&&C()==="]")&&(D=`\\${D}`),D==="]"&&(P.value==="["||P.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&P.value==="["&&(D="^"),P.value+=D,H({value:D});continue}if(A.quotes===1&&D!=='"'){D=ur.escapeRegex(D),P.value+=D,H({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&U({type:"text",value:D});continue}if(D==="("){N("parens"),U({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Da("opening","("));let z=q[q.length-1];if(z&&A.parens===z.parens+1){Zt(q.pop());continue}U({type:"paren",value:D,output:A.parens?")":"\\)"}),X("parens");continue}if(D==="["){if(r.nobracket===!0||!R().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Da("closing","]"));D=`\\${D}`}else N("brackets");U({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||P&&P.type==="bracket"&&P.value.length===1){U({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Da("opening","["));U({type:"text",value:D,output:`\\${D}`});continue}X("brackets");let z=P.value.slice(1);if(P.posix!==!0&&z[0]==="^"&&!z.includes("/")&&(D=`/${D}`),P.value+=D,H({value:D}),r.literalBrackets===!1||ur.hasRegexChars(z))continue;let de=ur.escapeRegex(P.value);if(A.output=A.output.slice(0,-P.value.length),r.literalBrackets===!0){A.output+=de,P.value=de;continue}P.value=`(${s}${de}|${P.value})`,A.output+=P.value;continue}if(D==="{"&&r.nobrace!==!0){N("braces");let z={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};j.push(z),U(z);continue}if(D==="}"){let z=j[j.length-1];if(r.nobrace===!0||!z){U({type:"text",value:D,output:D});continue}let de=")";if(z.dots===!0){let Ve=a.slice(),Ot=[];for(let ot=Ve.length-1;ot>=0&&(a.pop(),Ve[ot].type!=="brace");ot--)Ve[ot].type!=="dots"&&Ot.unshift(Ve[ot].value);de=X9(Ot,r),A.backtrack=!0}if(z.comma!==!0&&z.dots!==!0){let Ve=A.output.slice(0,z.outputIndex),Ot=A.tokens.slice(z.tokensIndex);z.value=z.output="\\{",D=de="\\}",A.output=Ve;for(let ot of Ot)A.output+=ot.output||ot.value}U({type:"brace",value:D,output:de}),X("braces"),j.pop();continue}if(D==="|"){q.length>0&&q[q.length-1].conditions++,U({type:"text",value:D});continue}if(D===","){let z=D,de=j[j.length-1];de&&Z[Z.length-1]==="braces"&&(de.comma=!0,z="|"),U({type:"comma",value:D,output:z});continue}if(D==="/"){if(P.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",a.pop(),P=i;continue}U({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&P.type==="dot"){P.value==="."&&(P.output=d);let z=j[j.length-1];P.type="dots",P.output+=D,P.value+=D,z.dots=!0;continue}if(A.braces+A.parens===0&&P.type!=="bos"&&P.type!=="slash"){U({type:"text",value:D,output:d});continue}U({type:"dot",value:D,output:d});continue}if(D==="?"){if(!(P&&P.value==="(")&&r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("qmark",D);continue}if(P&&P.type==="paren"){let de=C(),Ve=D;if(de==="<"&&!ur.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(P.value==="("&&!/[!=<:]/.test(de)||de==="<"&&!/<([!=]|\w+>)/.test(R()))&&(Ve=`\\${D}`),U({type:"text",value:D,output:Ve});continue}if(r.dot!==!0&&(P.type==="slash"||P.type==="bos")){U({type:"qmark",value:D,output:_});continue}U({type:"qmark",value:D,output:g});continue}if(D==="!"){if(r.noextglob!==!0&&C()==="("&&(C(2)!=="?"||!/[!=<:]/.test(C(3)))){oe("negate",D);continue}if(r.nonegate!==!0&&A.index===0){I();continue}}if(D==="+"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){oe("plus",D);continue}if(P&&P.value==="("||r.regex===!1){U({type:"plus",value:D,output:p});continue}if(P&&(P.type==="bracket"||P.type==="paren"||P.type==="brace")||A.parens>0){U({type:"plus",value:D});continue}U({type:"plus",value:p});continue}if(D==="@"){if(r.noextglob!==!0&&C()==="("&&C(2)!=="?"){U({type:"at",extglob:!0,value:D,output:""});continue}U({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let z=Y9.exec(R());z&&(D+=z[0],A.index+=z[0].length),U({type:"text",value:D});continue}if(P&&(P.type==="globstar"||P.star===!0)){P.type="star",P.star=!0,P.value+=D,P.output=L,A.backtrack=!0,A.globstar=!0,$(D);continue}let K=R();if(r.noextglob!==!0&&/^\([^?]/.test(K)){oe("star",D);continue}if(P.type==="star"){if(r.noglobstar===!0){$(D);continue}let z=P.prev,de=z.prev,Ve=z.type==="slash"||z.type==="bos",Ot=de&&(de.type==="star"||de.type==="globstar");if(r.bash===!0&&(!Ve||K[0]&&K[0]!=="/")){U({type:"star",value:D,output:""});continue}let ot=A.braces>0&&(z.type==="comma"||z.type==="brace"),Lf=q.length&&(z.type==="pipe"||z.type==="paren");if(!Ve&&z.type!=="paren"&&!ot&&!Lf){U({type:"star",value:D,output:""});continue}for(;K.slice(0,3)==="/**";){let nu=t[A.index+4];if(nu&&nu!=="/")break;K=K.slice(3),$("/**",3)}if(z.type==="bos"&&w()){P.type="globstar",P.value+=D,P.output=T(r),A.output=P.output,A.globstar=!0,$(D);continue}if(z.type==="slash"&&z.prev.type!=="bos"&&!Ot&&w()){A.output=A.output.slice(0,-(z.output+P.output).length),z.output=`(?:${z.output}`,P.type="globstar",P.output=T(r)+(r.strictSlashes?")":"|$)"),P.value+=D,A.globstar=!0,A.output+=z.output+P.output,$(D);continue}if(z.type==="slash"&&z.prev.type!=="bos"&&K[0]==="/"){let nu=K[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(z.output+P.output).length),z.output=`(?:${z.output}`,P.type="globstar",P.output=`${T(r)}${h}|${h}${nu})`,P.value+=D,A.output+=z.output+P.output,A.globstar=!0,$(D+O()),U({type:"slash",value:"/",output:""});continue}if(z.type==="bos"&&K[0]==="/"){P.type="globstar",P.value+=D,P.output=`(?:^|${h}|${T(r)}${h})`,A.output=P.output,A.globstar=!0,$(D+O()),U({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-P.output.length),P.type="globstar",P.output=T(r),P.value+=D,A.output+=P.output,A.globstar=!0,$(D);continue}let Se={type:"star",value:D,output:L};if(r.bash===!0){Se.output=".*?",(P.type==="bos"||P.type==="slash")&&(Se.output=B+Se.output),U(Se);continue}if(P&&(P.type==="bracket"||P.type==="paren")&&r.regex===!0){Se.output=D,U(Se);continue}(A.index===A.start||P.type==="slash"||P.type==="dot")&&(P.type==="dot"?(A.output+=v,P.output+=v):r.dot===!0?(A.output+=E,P.output+=E):(A.output+=B,P.output+=B),C()!=="*"&&(A.output+=m,P.output+=m)),U(Se)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing","]"));A.output=ur.escapeLast(A.output,"["),X("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing",")"));A.output=ur.escapeLast(A.output,"("),X("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Da("closing","}"));A.output=ur.escapeLast(A.output,"{"),X("braces")}if(r.strictSlashes!==!0&&(P.type==="star"||P.type==="bracket")&&U({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let K of A.tokens)A.output+=K.output!=null?K.output:K.value,K.suffix&&(A.output+=K.suffix)}return A};by.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(xf,r.maxLength):xf,o=t.length;if(o>n)throw new SyntaxError(`Input length: ${o}, exceeds maximum allowed length: ${n}`);t=aF[t]||t;let i=ur.isWindows(e),{DOT_LITERAL:a,SLASH_LITERAL:s,ONE_CHAR:u,DOTS_SLASH:c,NO_DOT:f,NO_DOTS:d,NO_DOTS_SLASH:p,STAR:h,START_ANCHOR:m}=Sf.globChars(i),y=r.dot?d:f,b=r.dot?p:f,v=r.capture?"":"?:",E={negated:!1,prefix:""},g=r.bash===!0?".*?":h;r.capture&&(g=`(${g})`);let _=B=>B.noglobstar===!0?g:`(${v}(?:(?!${m}${B.dot?c:a}).)*?)`,S=B=>{switch(B){case"*":return`${y}${u}${g}`;case".*":return`${a}${u}${g}`;case"*.*":return`${y}${g}${a}${u}${g}`;case"*/*":return`${y}${g}${s}${u}${b}${g}`;case"**":return y+_(r);case"**/*":return`(?:${y}${_(r)}${s})?${b}${u}${g}`;case"**/*.*":return`(?:${y}${_(r)}${s})?${b}${g}${a}${u}${g}`;case"**/.*":return`(?:${y}${_(r)}${s})?${a}${u}${g}`;default:{let F=/^(.*?)\.(\w+)$/.exec(B);if(!F)return;let L=S(F[1]);return L?L+a+F[2]:void 0}}},k=ur.removePrefix(t,E),T=S(k);return T&&r.strictSlashes!==!0&&(T+=`${s}?`),T};sF.exports=by});var lF=x((kX,cF)=>{"use strict";var Z9=require("path"),Q9=iF(),wy=uF(),vy=Js(),e7=Ys(),t7=t=>t&&typeof t=="object"&&!Array.isArray(t),rt=(t,e,r=!1)=>{if(Array.isArray(t)){let f=t.map(p=>rt(p,e,r));return p=>{for(let h of f){let m=h(p);if(m)return m}return!1}}let n=t7(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!n)throw new TypeError("Expected pattern to be a non-empty string");let o=e||{},i=vy.isWindows(e),a=n?rt.compileRe(t,e):rt.makeRe(t,e,!1,!0),s=a.state;delete a.state;let u=()=>!1;if(o.ignore){let f={...e,ignore:null,onMatch:null,onResult:null};u=rt(o.ignore,f,r)}let c=(f,d=!1)=>{let{isMatch:p,match:h,output:m}=rt.test(f,a,e,{glob:t,posix:i}),y={glob:t,state:s,regex:a,posix:i,input:f,output:m,match:h,isMatch:p};return typeof o.onResult=="function"&&o.onResult(y),p===!1?(y.isMatch=!1,d?y:!1):u(f)?(typeof o.onIgnore=="function"&&o.onIgnore(y),y.isMatch=!1,d?y:!1):(typeof o.onMatch=="function"&&o.onMatch(y),d?y:!0)};return r&&(c.state=s),c};rt.test=(t,e,r,{glob:n,posix:o}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let i=r||{},a=i.format||(o?vy.toPosixSlashes:null),s=t===n,u=s&&a?a(t):t;return s===!1&&(u=a?a(t):t,s=u===n),(s===!1||i.capture===!0)&&(i.matchBase===!0||i.basename===!0?s=rt.matchBase(t,e,r,o):s=e.exec(u)),{isMatch:!!s,match:s,output:u}};rt.matchBase=(t,e,r,n=vy.isWindows(r))=>(e instanceof RegExp?e:rt.makeRe(e,r)).test(Z9.basename(t));rt.isMatch=(t,e,r)=>rt(e,r)(t);rt.parse=(t,e)=>Array.isArray(t)?t.map(r=>rt.parse(r,e)):wy(t,{...e,fastpaths:!1});rt.scan=(t,e)=>Q9(t,e);rt.compileRe=(t,e,r=!1,n=!1)=>{if(r===!0)return t.output;let o=e||{},i=o.contains?"":"^",a=o.contains?"":"$",s=`${i}(?:${t.output})${a}`;t&&t.negated===!0&&(s=`^(?!${s}).*$`);let u=rt.toRegex(s,e);return n===!0&&(u.state=t),u};rt.makeRe=(t,e={},r=!1,n=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let o={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(o.output=wy.fastpaths(t,e)),o.output||(o=wy(t,e)),rt.compileRe(o,e,r,n)};rt.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};rt.constants=e7;cF.exports=rt});var dF=x(($X,fF)=>{"use strict";fF.exports=lF()});var DF=x((IX,yF)=>{"use strict";var hF=require("util"),mF=K1(),Jr=dF(),Cy=Js(),pF=t=>t===""||t==="./",gF=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},je=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,o=new Set,i=new Set,a=0,s=f=>{i.add(f.output),r&&r.onResult&&r.onResult(f)};for(let f=0;f<e.length;f++){let d=Jr(String(e[f]),{...r,onResult:s},!0),p=d.state.negated||d.state.negatedExtglob;p&&a++;for(let h of t){let m=d(h,!0);(p?!m.isMatch:m.isMatch)&&(p?n.add(m.output):(n.delete(m.output),o.add(m.output)))}}let c=(a===e.length?[...i]:[...o]).filter(f=>!n.has(f));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(f=>f.replace(/\\/g,"")):e}return c};je.match=je;je.matcher=(t,e)=>Jr(t,e);je.isMatch=(t,e,r)=>Jr(e,r)(t);je.any=je.isMatch;je.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,o=[],i=s=>{r.onResult&&r.onResult(s),o.push(s.output)},a=new Set(je(t,e,{...r,onResult:i}));for(let s of o)a.has(s)||n.add(s);return[...n]};je.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${hF.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>je.contains(t,n,r));if(typeof e=="string"){if(pF(t)||pF(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return je.isMatch(t,e,{...r,contains:!0})};je.matchKeys=(t,e,r)=>{if(!Cy.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=je(Object.keys(t),e,r),o={};for(let i of n)o[i]=t[i];return o};je.some=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Jr(String(o),r);if(n.some(a=>i(a)))return!0}return!1};je.every=(t,e,r)=>{let n=[].concat(t);for(let o of[].concat(e)){let i=Jr(String(o),r);if(!n.every(a=>i(a)))return!1}return!0};je.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${hF.inspect(t)}"`);return[].concat(e).every(n=>Jr(n,r)(t))};je.capture=(t,e,r)=>{let n=Cy.isWindows(r),i=Jr.makeRe(String(t),{...r,capture:!0}).exec(n?Cy.toPosixSlashes(e):e);if(i)return i.slice(1).map(a=>a===void 0?"":a)};je.makeRe=(...t)=>Jr.makeRe(...t);je.scan=(...t)=>Jr.scan(...t);je.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let o of mF(String(n),e))r.push(Jr.parse(o,e));return r};je.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!gF(t)?[t]:mF(t,e)};je.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return je.braces(t,{...e,expand:!0})};je.hasBraces=gF;yF.exports=je});var r2=x((IZ,vn)=>{var Te=require("fs"),If=require("os"),wt=require("path"),jF=require("crypto"),Zr={fs:Te.constants,os:If.constants},UF="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",VF=/XXXXXX/,O7=3,zF=(Zr.O_CREAT||Zr.fs.O_CREAT)|(Zr.O_EXCL||Zr.fs.O_EXCL)|(Zr.O_RDWR||Zr.fs.O_RDWR),F7=If.platform()==="win32",P7=Zr.EBADF||Zr.os.errno.EBADF,k7=Zr.ENOENT||Zr.os.errno.ENOENT,KF=448,GF=384,$7="exit",wa=[],WF=Te.rmdirSync.bind(Te),YF=!1;function I7(t,e){return Te.rm(t,{recursive:!0},e)}function JF(t){return Te.rmSync(t,{recursive:!0})}function Ay(t,e){let r=va(t,e),n=r[0],o=r[1];H7(n,function(i,a){if(i)return o(i);let s=a.tries;(function u(){try{let c=ZF(a);Te.stat(c,function(f){if(!f)return s-- >0?u():o(new Error("Could not get a unique tmp filename, max tries reached "+c));o(null,c)})}catch(c){o(c)}})()})}function Oy(t){let e=va(t),r=e[0],n=V7(r),o=n.tries;do{let i=ZF(n);try{Te.statSync(i)}catch{return i}}while(o-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function T7(t,e){let r=va(t,e),n=r[0],o=r[1];Ay(n,function(a,s){if(a)return o(a);Te.open(s,zF,n.mode||GF,function(c,f){if(c)return o(c);if(n.discardDescriptor)return Te.close(f,function(p){return o(p,s,void 0,Sy(s,-1,n,!1))});{let d=n.discardDescriptor||n.detachDescriptor;o(null,s,f,Sy(s,d?-1:f,n,!1))}})})}function R7(t){let e=va(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,o=Oy(r),i=Te.openSync(o,zF,r.mode||GF);return r.discardDescriptor&&(Te.closeSync(i),i=void 0),{name:o,fd:i,removeCallback:Sy(o,n?-1:i,r,!0)}}function B7(t,e){let r=va(t,e),n=r[0],o=r[1];Ay(n,function(a,s){if(a)return o(a);Te.mkdir(s,n.mode||KF,function(c){if(c)return o(c);o(null,s,XF(s,n,!1))})})}function N7(t){let e=va(t),r=e[0],n=Oy(r);return Te.mkdirSync(n,r.mode||KF),{name:n,removeCallback:XF(n,r,!0)}}function L7(t,e){let r=function(n){if(n&&!xy(n))return e(n);e()};0<=t[0]?Te.close(t[0],function(){Te.unlink(t[1],r)}):Te.unlink(t[1],r)}function j7(t){let e=null;try{0<=t[0]&&Te.closeSync(t[0])}catch(r){if(!z7(r)&&!xy(r))throw r}finally{try{Te.unlinkSync(t[1])}catch(r){xy(r)||(e=r)}}if(e!==null)throw e}function Sy(t,e,r,n){let o=$f(j7,[e,t],n),i=$f(L7,[e,t],n,o);return r.keep||wa.unshift(o),n?o:i}function XF(t,e,r){let n=e.unsafeCleanup?I7:Te.rmdir.bind(Te),o=e.unsafeCleanup?JF:WF,i=$f(o,t,r),a=$f(n,t,r,i);return e.keep||wa.unshift(i),r?i:a}function $f(t,e,r,n){let o=!1;return function i(a){if(!o){let s=n||i,u=wa.indexOf(s);return u>=0&&wa.splice(u,1),o=!0,r||t===WF||t===JF?t(e):t(e,a||function(){})}}}function U7(){if(YF)for(;wa.length;)try{wa[0]()}catch{}}function MF(t){let e=[],r=null;try{r=jF.randomBytes(t)}catch{r=jF.pseudoRandomBytes(t)}for(let n=0;n<t;n++)e.push(UF[r[n]%UF.length]);return e.join("")}function cr(t){return typeof t>"u"}function va(t,e){if(typeof t=="function")return[{},t];if(cr(t))return[{},e];let r={};for(let n of Object.getOwnPropertyNames(t))r[n]=t[n];return[r,e]}function M7(t,e,r){let n=wt.isAbsolute(t)?t:wt.join(e,t);Te.stat(n,function(o){o?Te.realpath(wt.dirname(n),function(i,a){if(i)return r(i);r(null,wt.join(a,wt.basename(n)))}):Te.realpath(n,r)})}function q7(t,e){let r=wt.isAbsolute(t)?t:wt.join(e,t);try{return Te.statSync(r),Te.realpathSync(r)}catch{let o=Te.realpathSync(wt.dirname(r));return wt.join(o,wt.basename(r))}}function ZF(t){let e=t.tmpdir;if(!cr(t.name))return wt.join(e,t.dir,t.name);if(!cr(t.template))return wt.join(e,t.dir,t.template).replace(VF,MF(6));let r=[t.prefix?t.prefix:"tmp","-",process.pid,"-",MF(12),t.postfix?"-"+t.postfix:""].join("");return wt.join(e,t.dir,r)}function QF(t){if(!cr(t.name)){let e=t.name;if(wt.isAbsolute(e))throw new Error(`name option must not contain an absolute path, found "${e}".`);let r=wt.basename(e);if(r===".."||r==="."||r!==e)throw new Error(`name option must not contain a path, found "${e}".`)}if(!cr(t.template)&&!t.template.match(VF))throw new Error(`Invalid template, found "${t.template}".`);if(!cr(t.tries)&&isNaN(t.tries)||t.tries<0)throw new Error(`Invalid tries, found "${t.tries}".`);t.tries=cr(t.name)?t.tries||O7:1,t.keep=!!t.keep,t.detachDescriptor=!!t.detachDescriptor,t.discardDescriptor=!!t.discardDescriptor,t.unsafeCleanup=!!t.unsafeCleanup,t.prefix=cr(t.prefix)?"":t.prefix,t.postfix=cr(t.postfix)?"":t.postfix}function qF(t,e,r,n){if(cr(e))return n(null);M7(e,r,function(o,i){if(o)return n(o);let a=wt.relative(r,i);if(!i.startsWith(r))return n(new Error(`${t} option must be relative to "${r}", found "${a}".`));n(null,a)})}function HF(t,e,r){if(cr(e))return;let n=q7(e,r),o=wt.relative(r,n);if(!n.startsWith(r))throw new Error(`${t} option must be relative to "${r}", found "${o}".`);return o}function H7(t,e){G7(t,function(r,n){if(r)return e(r);t.tmpdir=n;try{QF(t,n)}catch(o){return e(o)}qF("dir",t.dir,n,function(o,i){if(o)return e(o);t.dir=cr(i)?"":i,qF("template",t.template,n,function(a,s){if(a)return e(a);t.template=s,e(null,t)})})})}function V7(t){let e=t.tmpdir=t2(t);QF(t,e);let r=HF("dir",t.dir,e);return t.dir=cr(r)?"":r,t.template=HF("template",t.template,e),t}function z7(t){return e2(t,-P7,"EBADF")}function xy(t){return e2(t,-k7,"ENOENT")}function e2(t,e,r){return F7?t.code===r:t.code===r&&t.errno===e}function K7(){YF=!0}function G7(t,e){return Te.realpath(t&&t.tmpdir||If.tmpdir(),e)}function t2(t){return Te.realpathSync(t&&t.tmpdir||If.tmpdir())}process.addListener($7,U7);Object.defineProperty(vn.exports,"tmpdir",{enumerable:!0,configurable:!1,get:function(){return t2()}});vn.exports.dir=B7;vn.exports.dirSync=N7;vn.exports.file=T7;vn.exports.fileSync=R7;vn.exports.tmpName=Ay;vn.exports.tmpNameSync=Oy;vn.exports.setGracefulCleanup=K7});var Rf=require("node:process");var Zy=pe(Xy(),1),{program:at,createCommand:kq,createArgument:$q,createOption:Iq,CommanderError:Tq,InvalidArgumentError:Rq,InvalidOptionArgumentError:Bq,Command:Nq,Argument:Lq,Option:jq,Help:Uq}=Zy.default;var fr={name:"@capgo/cli",version:"7.58.2",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};var la=require("node:fs");var vt=pe(nd(),1),Yo=require("node:process"),En=pe(require("node:readline"),1),ud=pe(require("node:readline"),1),lD=require("node:stream"),Sa=pe(id(),1);function j2({onlyFirst:t=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}var U2=j2();function fD(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(U2,"")}function dD(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var pD={exports:{}};(function(t){var e={};t.exports=e,e.eastAsianWidth=function(n){var o=n.charCodeAt(0),i=n.length==2?n.charCodeAt(1):0,a=o;return 55296<=o&&o<=56319&&56320<=i&&i<=57343&&(o&=1023,i&=1023,a=o<<10|i,a+=65536),a==12288||65281<=a&&a<=65376||65504<=a&&a<=65510?"F":a==8361||65377<=a&&a<=65470||65474<=a&&a<=65479||65482<=a&&a<=65487||65490<=a&&a<=65495||65498<=a&&a<=65500||65512<=a&&a<=65518?"H":4352<=a&&a<=4447||4515<=a&&a<=4519||4602<=a&&a<=4607||9001<=a&&a<=9002||11904<=a&&a<=11929||11931<=a&&a<=12019||12032<=a&&a<=12245||12272<=a&&a<=12283||12289<=a&&a<=12350||12353<=a&&a<=12438||12441<=a&&a<=12543||12549<=a&&a<=12589||12593<=a&&a<=12686||12688<=a&&a<=12730||12736<=a&&a<=12771||12784<=a&&a<=12830||12832<=a&&a<=12871||12880<=a&&a<=13054||13056<=a&&a<=19903||19968<=a&&a<=42124||42128<=a&&a<=42182||43360<=a&&a<=43388||44032<=a&&a<=55203||55216<=a&&a<=55238||55243<=a&&a<=55291||63744<=a&&a<=64255||65040<=a&&a<=65049||65072<=a&&a<=65106||65108<=a&&a<=65126||65128<=a&&a<=65131||110592<=a&&a<=110593||127488<=a&&a<=127490||127504<=a&&a<=127546||127552<=a&&a<=127560||127568<=a&&a<=127569||131072<=a&&a<=194367||177984<=a&&a<=196605||196608<=a&&a<=262141?"W":32<=a&&a<=126||162<=a&&a<=163||165<=a&&a<=166||a==172||a==175||10214<=a&&a<=10221||10629<=a&&a<=10630?"Na":a==161||a==164||167<=a&&a<=168||a==170||173<=a&&a<=174||176<=a&&a<=180||182<=a&&a<=186||188<=a&&a<=191||a==198||a==208||215<=a&&a<=216||222<=a&&a<=225||a==230||232<=a&&a<=234||236<=a&&a<=237||a==240||242<=a&&a<=243||247<=a&&a<=250||a==252||a==254||a==257||a==273||a==275||a==283||294<=a&&a<=295||a==299||305<=a&&a<=307||a==312||319<=a&&a<=322||a==324||328<=a&&a<=331||a==333||338<=a&&a<=339||358<=a&&a<=359||a==363||a==462||a==464||a==466||a==468||a==470||a==472||a==474||a==476||a==593||a==609||a==708||a==711||713<=a&&a<=715||a==717||a==720||728<=a&&a<=731||a==733||a==735||768<=a&&a<=879||913<=a&&a<=929||931<=a&&a<=937||945<=a&&a<=961||963<=a&&a<=969||a==1025||1040<=a&&a<=1103||a==1105||a==8208||8211<=a&&a<=8214||8216<=a&&a<=8217||8220<=a&&a<=8221||8224<=a&&a<=8226||8228<=a&&a<=8231||a==8240||8242<=a&&a<=8243||a==8245||a==8251||a==8254||a==8308||a==8319||8321<=a&&a<=8324||a==8364||a==8451||a==8453||a==8457||a==8467||a==8470||8481<=a&&a<=8482||a==8486||a==8491||8531<=a&&a<=8532||8539<=a&&a<=8542||8544<=a&&a<=8555||8560<=a&&a<=8569||a==8585||8592<=a&&a<=8601||8632<=a&&a<=8633||a==8658||a==8660||a==8679||a==8704||8706<=a&&a<=8707||8711<=a&&a<=8712||a==8715||a==8719||a==8721||a==8725||a==8730||8733<=a&&a<=8736||a==8739||a==8741||8743<=a&&a<=8748||a==8750||8756<=a&&a<=8759||8764<=a&&a<=8765||a==8776||a==8780||a==8786||8800<=a&&a<=8801||8804<=a&&a<=8807||8810<=a&&a<=8811||8814<=a&&a<=8815||8834<=a&&a<=8835||8838<=a&&a<=8839||a==8853||a==8857||a==8869||a==8895||a==8978||9312<=a&&a<=9449||9451<=a&&a<=9547||9552<=a&&a<=9587||9600<=a&&a<=9615||9618<=a&&a<=9621||9632<=a&&a<=9633||9635<=a&&a<=9641||9650<=a&&a<=9651||9654<=a&&a<=9655||9660<=a&&a<=9661||9664<=a&&a<=9665||9670<=a&&a<=9672||a==9675||9678<=a&&a<=9681||9698<=a&&a<=9701||a==9711||9733<=a&&a<=9734||a==9737||9742<=a&&a<=9743||9748<=a&&a<=9749||a==9756||a==9758||a==9792||a==9794||9824<=a&&a<=9825||9827<=a&&a<=9829||9831<=a&&a<=9834||9836<=a&&a<=9837||a==9839||9886<=a&&a<=9887||9918<=a&&a<=9919||9924<=a&&a<=9933||9935<=a&&a<=9953||a==9955||9960<=a&&a<=9983||a==10045||a==10071||10102<=a&&a<=10111||11093<=a&&a<=11097||12872<=a&&a<=12879||57344<=a&&a<=63743||65024<=a&&a<=65039||a==65533||127232<=a&&a<=127242||127248<=a&&a<=127277||127280<=a&&a<=127337||127344<=a&&a<=127386||917760<=a&&a<=917999||983040<=a&&a<=1048573||1048576<=a&&a<=1114109?"A":"N"},e.characterLength=function(n){var o=this.eastAsianWidth(n);return o=="F"||o=="W"||o=="A"?2:1};function r(n){return n.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}e.length=function(n){for(var o=r(n),i=0,a=0;a<o.length;a++)i=i+this.characterLength(o[a]);return i},e.slice=function(n,o,i){textLen=e.length(n),o=o||0,i=i||1,o<0&&(o=textLen+o),i<0&&(i=textLen+i);for(var a="",s=0,u=r(n),c=0;c<u.length;c++){var f=u[c],d=e.length(f);if(s>=o-(d==2?1:0))if(s+d<=i)a+=f;else break;s+=d}return a}})(pD);var M2=pD.exports,q2=dD(M2),H2=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},V2=dD(H2);function xa(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=fD(t),t.length===0))return 0;t=t.replace(V2()," ");let r=e.ambiguousIsNarrow?1:2,n=0;for(let o of t){let i=o.codePointAt(0);if(!(i<=31||i>=127&&i<=159||i>=768&&i<=879))switch(q2.eastAsianWidth(o)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}var ad=10,rD=(t=0)=>e=>`\x1B[${e+t}m`,nD=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,oD=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,Ue={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(Ue.modifier);var z2=Object.keys(Ue.color),K2=Object.keys(Ue.bgColor);[...z2,...K2];function G2(){let t=new Map;for(let[e,r]of Object.entries(Ue)){for(let[n,o]of Object.entries(r))Ue[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=Ue[n],t.set(o[0],o[1]);Object.defineProperty(Ue,e,{value:r,enumerable:!1})}return Object.defineProperty(Ue,"codes",{value:t,enumerable:!1}),Ue.color.close="\x1B[39m",Ue.bgColor.close="\x1B[49m",Ue.color.ansi=rD(),Ue.color.ansi256=nD(),Ue.color.ansi16m=oD(),Ue.bgColor.ansi=rD(ad),Ue.bgColor.ansi256=nD(ad),Ue.bgColor.ansi16m=oD(ad),Object.defineProperties(Ue,{rgbToAnsi256:{value:(e,r,n)=>e===r&&r===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5),enumerable:!1},hexToRgb:{value:e=>{let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>Ue.rgbToAnsi256(...Ue.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:e=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,n,o;if(e>=232)r=((e-232)*10+8)/255,n=r,o=r;else{e-=16;let s=e%36;r=Math.floor(e/36)/5,n=Math.floor(s/6)/5,o=s%6/5}let i=Math.max(r,n,o)*2;if(i===0)return 30;let a=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(r));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,r,n)=>Ue.ansi256ToAnsi(Ue.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>Ue.ansi256ToAnsi(Ue.hexToAnsi256(e)),enumerable:!1}}),Ue}var W2=G2(),gu=new Set(["\x1B","\x9B"]),Y2=39,ld="\x07",hD="[",J2="]",mD="m",fd=`${J2}8;;`,iD=t=>`${gu.values().next().value}${hD}${t}${mD}`,aD=t=>`${gu.values().next().value}${fd}${t}${ld}`,X2=t=>t.split(" ").map(e=>xa(e)),sd=(t,e,r)=>{let n=[...e],o=!1,i=!1,a=xa(fD(t[t.length-1]));for(let[s,u]of n.entries()){let c=xa(u);if(a+c<=r?t[t.length-1]+=u:(t.push(u),a=0),gu.has(u)&&(o=!0,i=n.slice(s+1).join("").startsWith(fd)),o){i?u===ld&&(o=!1,i=!1):u===mD&&(o=!1);continue}a+=c,a===r&&s<n.length-1&&(t.push(""),a=0)}!a&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},Z2=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(xa(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},Q2=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let n="",o,i,a=X2(t),s=[""];for(let[c,f]of t.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let d=xa(s[s.length-1]);if(c!==0&&(d>=e&&(r.wordWrap===!1||r.trim===!1)&&(s.push(""),d=0),(d>0||r.trim===!1)&&(s[s.length-1]+=" ",d++)),r.hard&&a[c]>e){let p=e-d,h=1+Math.floor((a[c]-p-1)/e);Math.floor((a[c]-1)/e)<h&&s.push(""),sd(s,f,e);continue}if(d+a[c]>e&&d>0&&a[c]>0){if(r.wordWrap===!1&&d<e){sd(s,f,e);continue}s.push("")}if(d+a[c]>e&&r.wordWrap===!1){sd(s,f,e);continue}s[s.length-1]+=f}r.trim!==!1&&(s=s.map(c=>Z2(c)));let u=[...s.join(`
|
|
113
113
|
`)];for(let[c,f]of u.entries()){if(n+=f,gu.has(f)){let{groups:p}=new RegExp(`(?:\\${hD}(?<code>\\d+)m|\\${fd}(?<uri>.*)${ld})`).exec(u.slice(c).join(""))||{groups:{}};if(p.code!==void 0){let h=Number.parseFloat(p.code);o=h===Y2?void 0:h}else p.uri!==void 0&&(i=p.uri.length===0?void 0:p.uri)}let d=W2.codes.get(Number(o));u[c+1]===`
|
|
114
114
|
`?(i&&(n+=aD("")),o&&d&&(n+=iD(d))):f===`
|
|
115
115
|
`&&(o&&d&&(n+=iD(o)),i&&(n+=aD(i)))}return n};function sD(t,e,r){return String(t).normalize().replace(/\r\n/g,`
|
|
@@ -218,7 +218,7 @@ ${M(i)}`),new Error(`Cannot retrieve unknown version for app ${e}: ${M(i)}`)}fun
|
|
|
218
218
|
created_by,
|
|
219
219
|
app_id,
|
|
220
220
|
version (id, name)
|
|
221
|
-
`).eq("app_id",e).order("created_at",{ascending:!1});if(o)throw r||l.error(`App ${e} not found in database`),new Error(`App ${e} not found in database: ${M(o)}`);return n}async function Zg(t,e,r,n={}){let{silent:o=!1}=n,{error:i}=await t.from("app_versions").update({deleted:!0}).eq("app_id",e).eq("deleted",!1).eq("name",r);if(i){let a=`App version ${e}@${r} not found in database`;throw o||l.error(a),new Error(`${a}: ${M(i)}`)}}async function cf(t,e,r,n={}){let{silent:o=!1,autoUnlink:i=!1}=n,a=await _5(t,e,r,{silent:o});await $O(t,e,a,{silent:o,autoUnlink:i}),await Zg(t,e,r,{silent:o})}function lf(t,e=!1){if(e)return;if(!t.length)throw new Error("No bundle found");let r=new ut;r.theme=ut.roundTheme,r.headers=["Version","Created","Keep"],r.rows=[];for(let n of t.toReversed())r.rows.push([n.name,ca(n.created_at),n.keep??""]);l.success("Bundles"),l.success(r.toString())}async function ff(t,e,r={}){let{silent:n=!1}=r,{data:o,error:i}=await t.from("app_versions").select().eq("app_id",e).eq("deleted",!1).order("created_at",{ascending:!1});if(i){let a=`App ${e} not found in database`;throw n||l.error(a),new Error(`${a}: ${M(i)}`)}return o??[]}async function UO(t,e,r={}){let{silent:n=!1}=r,{data:o,error:i}=await t.from("channels").select("version").eq("app_id",e);if(i){let a=`App ${e} not found in database`;throw n||l.error(a),new Error(`${a}: ${M(i)}`)}return(o??[]).map(a=>a.version)}async function _5(t,e,r,n={}){let{silent:o=!1}=n,{data:i,error:a}=await t.from("app_versions").select().eq("app_id",e).eq("name",r).eq("deleted",!1).single();if(!i||a){let s=`App version ${e}@${r} doesn't exist`;throw o||l.error(s),new Error(`${s}${a?`: ${M(a)}`:""}`)}return i}async function S5(t,e,r,n){for await(let o of t)n||l.warn(`Removing ${o.name} created on ${ca(o.created_at)}`),await cf(e,r,o.name)}function x5(t,e,r){let n=[];for(let o of t??[]){let i=ge(o.name);_d(i,e)&&er(i,r)&&n.push(o)}return n}async function A5(t,e,r=!1){r||ee("Cleanup versions in Capgo"),await Ce(),e.apikey=e.apikey||ne();let{bundle:n,keep:o=4}=e,i=e.force||!1,a=e.ignoreChannel||!1,s=await te();if(t=fe(t,s?.config),!e.apikey)throw r||l.error("Missing API key, you need to provide an API key to delete your app"),new Error("Missing API key");if(!t)throw r||l.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let u=await re(e.apikey,e.supaHost,e.supaAnon);await ae(u,e.apikey,["write","all"]),await qe(u,e.apikey,t,3,r),r||l.info("Querying all available versions in Capgo");let c=await ff(u,t),f=await UO(u,t);if(r||l.info(`Total active versions in Capgo: ${c?.length??0}`),!c?.length)throw r||l.error("No versions found, aborting cleanup"),new Error("No versions found");if(n){let h=ge(n),m=An(h,"major");r||l.info(`Querying available versions in Capgo between ${Vt(h)} and ${Vt(m)}`),c=x5(c,h,m),r||l.info(`Active versions in Capgo between ${Vt(h)} and ${Vt(m)}: ${c?.length??0}`)}let d=[],p=0;for(let h of c){let m=f.find(y=>y===h.id);p<o||m&&!a?(h.keep=m?"\u2705 (Linked to channel)":"\u2705",p+=1):(h.keep="\u274C",d.push(h))}if(!d.length)return r||l.warn("Nothing to be removed, aborting removal..."),{removed:0,kept:p};if(r||lf(c),!i){if(r)throw new Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");{let h=await ce({message:"Do you want to continue removing the versions specified?"});if(ue(h)||!h)throw l.warn("Not confirmed, aborting removal..."),new Error("Cleanup cancelled by user")}}return r||l.success("You have confirmed removal, removing versions now"),await S5(d,u,t,r),r||G("Done \u2705"),{removed:d.length,kept:p}}async function MO(t,e){return A5(t,e)}async function O5(t,e,r=!1){r||ee("Check compatibility");let n={...e,apikey:e.apikey||ne()},o=await te(),i=fe(t,o?.config),a=n.channel;if(!a)throw r||l.error("Missing argument, you need to provide a channel"),new Error("Missing channel");if(!n.apikey)throw r||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!i)throw r||l.error("Missing argument, you need to provide an appId, or be in a capacitor project"),new Error("Missing appId");let s=await re(n.apikey,n.supaHost,n.supaAnon);await ae(s,n.apikey,["write","all","read","upload"]),await qe(s,n.apikey,i,1,r);let u=await ef(s,i,a,n.packageJson,n.nodeModules);if(!r){let c=new ut;c.headers=["Package","Local version","Remote version","Compatible"],c.theme=ut.roundTheme,c.rows=[];let f=n.text?"Yes":"\u2705",d=n.text?"No":"\u274C";for(let p of u.finalCompatibility){let{name:h,localVersion:m,remoteVersion:y}=p,b=No(p)?f:d;c.rows.push([h,m,y,b])}l.success("Compatibility"),l.success(c.toString())}return{finalCompatibility:u.finalCompatibility}}async function qO(t,e){try{await O5(t,e,!1)}catch(r){throw l.error(`Error checking compatibility ${M(r)}`),r}}var yn=require("node:fs");var mn=require("node:buffer"),mt=require("node:crypto"),VO="aes-128-cbc",gn="base64",HO="hex",Us=mt.constants.RSA_PKCS1_PADDING;function df(t){let e=(0,mt.randomBytes)(16),r=(0,mt.randomBytes)(16),n=e.toString(gn),o=(0,mt.privateEncrypt)({key:t,padding:Us},r).toString(gn);return{sessionKey:r,ivSessionKey:`${n}:${o}`}}function ha(t,e,r){let[n]=r.split(":"),o=mn.Buffer.from(n,gn),i=(0,mt.createCipheriv)(VO,e,o);return i.setAutoPadding(!0),mn.Buffer.concat([i.update(t),i.final()])}function zO(t,e,r){let[n,o]=e.split(":"),i=(0,mt.publicDecrypt)({key:r,padding:Us},mn.Buffer.from(o,gn)),a=mn.Buffer.from(n,gn),s=(0,mt.createDecipheriv)(VO,i,a);return s.setAutoPadding(!0),mn.Buffer.concat([s.update(t),s.final()])}function ma(t,e){return(0,mt.privateEncrypt)({key:e,padding:Us},mn.Buffer.from(t,gn)).toString(gn)}function pf(t,e){return(0,mt.privateEncrypt)({key:e,padding:Us},mn.Buffer.from(t,HO)).toString(HO)}function KO(t,e){return(0,mt.publicDecrypt)({key:e,padding:Us},mn.Buffer.from(t,gn)).toString(gn)}function GO(){let{publicKey:t,privateKey:e}=(0,mt.generateKeyPairSync)("rsa",{modulusLength:2048});return{publicKey:t.export({type:"pkcs1",format:"pem"}),privateKey:e.export({type:"pkcs1",format:"pem"})}}function WO(t){return t?t.replace(/-----BEGIN RSA PUBLIC KEY-----/g,"").replace(/-----END RSA PUBLIC KEY-----/g,"").replace(/\n/g,"").replace(/\r/g,"").replace(/ /g,"").substring(0,4):""}function F5(t,e){let r=t.key||hn,n=e.config.plugins?.CapacitorUpdater?.publicKey;return(0,yn.existsSync)(r)?n=(0,yn.readFileSync)(r,"utf8"):!n&&t.keyData&&(n=t.keyData),{publicKey:n,fallbackKeyPath:r}}async function P5(t,e,r,n=!1){n||ee("Decrypt zip file");try{if(await Ce(),!(0,yn.existsSync)(t)){let d=`Zip not found at the path ${t}`;throw n||l.error(d),new Error(d)}let o=await te();if(!r.key&&!(0,yn.existsSync)(hn)&&!o.config.plugins?.CapacitorUpdater?.publicKey){let d=`Public Key not found at the path ${hn} or in ${o.path}`;throw n||l.error(d),new Error(d)}let{publicKey:i,fallbackKeyPath:a}=F5(r,o);if(!i){let d=`Cannot find public key ${a} or as keyData option or in ${o.path}`;throw n||l.error(d),new Error(d)}let s=(0,yn.readFileSync)(t),u=zO(s,e,r.keyData??i),c=`${t}_decrypted.zip`;(0,yn.writeFileSync)(c,u),n||l.info(`Decrypted zip file at ${c}`);let f;if(r.checksum){let d=await cn(u,"sha256"),p=KO(r.checksum,r.keyData??i);if(f=d===p,!f){let h=`Checksum does not match ${d} !== ${p}`;throw n||l.error(h),new Error(h)}n||l.info("Checksum matches")}return n||G("\u2705 done"),{outputPath:c,checksumMatches:f}}catch(o){throw n||l.error(`Error decrypting zip file ${M(o)}`),o instanceof Error?o:new Error(String(o))}}async function YO(t,e,r){await P5(t,e,r,!1)}async function k5(t,e,r,n=!1){n||ee("Delete bundle"),r.apikey=r.apikey||ne();let o=await te();if(e=fe(e,o?.config),!r.apikey)throw n||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||l.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!t)throw n||l.error("Missing argument, you need to provide a bundleId, or be in a capacitor project"),new Error("Missing bundleId");let i=await re(r.apikey,r.supaHost,r.supaAnon);return await ae(i,r.apikey,["write","all"]),await qe(i,r.apikey,e,3,n),n||(l.info(`Deleting bundle ${e}@${t} from Capgo`),l.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever")),await cf(i,e,t),n||(l.success(`Bundle ${e}@${t} deleted in Capgo`),G("Done")),!0}async function JO(t,e,r){return k5(t,e,r)}var Dn=require("node:fs");function Ms(t){console.error(M(t))}async function $5(t,e,r,n=!1){let{json:o}=r,i=!o&&!n;i&&(ee("Encryption"),await Ce());try{let a=await te(),s=!!a.config.plugins?.CapacitorUpdater?.privateKey,u=!!a.config.plugins?.CapacitorUpdater?.publicKey;if(s&&i&&l.warning("There is still a privateKey in the config"),!(0,Dn.existsSync)(t)){let v=`Zip not found at the path ${t}`;throw n||(o?Ms({error:"zip_not_found"}):l.error(`Error: ${v}`)),new Error(v)}if(!u)throw n||(o?Ms({error:"missing_public_key"}):l.warning("Warning: Missing Public Key in config")),new Error("Missing public key in config");let c=r.key||or,f=r.keyData||"";if(!(0,Dn.existsSync)(c)&&!f)throw n||(o?Ms({error:"missing_key"}):(l.warning(`Cannot find a private key at ${c} or as a keyData option`),l.error("Error: Missing key"))),new Error("Missing private key");if((0,Dn.existsSync)(c)&&(f=(0,Dn.readFileSync)(c,"utf8")),f&&!f.startsWith("-----BEGIN RSA PRIVATE KEY-----"))throw n||(o?Ms({error:"invalid_private_key"}):l.error("The private key provided is not a valid RSA Private key")),new Error("Invalid private key format");let d=(0,Dn.readFileSync)(t),{sessionKey:p,ivSessionKey:h}=df(f),m=ha(d,p,h),y=ma(e,f),b=`${t}_encrypted.zip`;return(0,Dn.writeFileSync)(b,m),n||(o?console.log(JSON.stringify({checksum:y,filename:b,ivSessionKey:h},null,2)):(l.success(`Encoded Checksum: ${y}`),l.success(`ivSessionKey: ${h}`),l.success(`Encrypted zip saved at ${b}`),G("Done \u2705"))),{checksum:y,filename:b,ivSessionKey:h}}catch(a){throw n||(r.json?Ms(a):l.error(`Error encrypting zip file ${M(a)}`)),a instanceof Error?a:new Error(String(a))}}async function XO(t,e,r){await $5(t,e,r,!1)}async function ZO(t,e,r=!1){r||ee("List bundles"),await Ce(),e.apikey=e.apikey||ne();let n=await te();if(t=fe(t,n?.config),!e.apikey)throw r||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||l.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let o=await re(e.apikey,e.supaHost,e.supaAnon);await ae(o,e.apikey,["write","all","read","upload"]),await qe(o,e.apikey,t,1,r),r||l.info(`Querying available versions of: ${t} in Capgo`);let i=await ff(o,t);return r||(l.info(`Active versions in Capgo: ${i?.length??0}`),lf(i),G("Done \u2705")),i}var OF=require("node:crypto"),Go=require("node:fs"),Of=require("node:process");var hf=class extends TransformStream{outChunkSize;constructor(e){let r=new Uint8Array(e),n=0;super({transform(o,i){let a=0;for(;a<o.length;){let s=e-n,u=Math.min(s,o.length-a);r.set(o.subarray(a,a+u),n),a+=u,n+=u,n===e&&(i.enqueue(r),r=new Uint8Array(e),n=0)}},flush(o){n>0&&o.enqueue(r.subarray(0,n))}}),this.outChunkSize=e}};function zn(t){return t=t.trim(),t=t.replace(/<!--[\s\S]*?-->/g,""),e();function e(){return{declaration:r(),root:n()}}function r(){if(!u(/^<\?xml\s*/))return;let p={attributes:{}};for(;!(c()||f("?>"));){let h=i();if(!h)return p;p.attributes[h.name]=h.value}return u(/\?>\s*/),p}function n(){let d=u(/^<([\w-:.]+)\s*/);if(!d)return;let p={name:d[1],attributes:{},children:[]};for(;!(c()||f(">")||f("?>")||f("/>"));){let m=i();if(!m)return p;p.attributes[m.name]=m.value}if(u(/^\s*\/>\s*/))return p;u(/\??>\s*/),p.content=o();let h;for(;h=n();)p.children.push(h);return u(/^<\/[\w-:.]+>\s*/),p}function o(){let d=u(/^([^<]*)/);return d?s(d[1]):""}function i(){let d=u(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(d)return{name:d[1],value:s(a(d[2]))}}function a(d){return d.replace(/^['"]|['"]$/g,"")}function s(d){return d.replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function u(d){let p=t.match(d);if(p)return t=t.slice(p[0].length),p}function c(){return t.length===0}function f(d){return t.startsWith(d)}}var Gr=class extends Error{};var xt=class extends Gr{},qs=class extends Gr{},mf=class extends Gr{bucketName;constructor(e){super(`Invalid bucket name: ${e}`),this.bucketName=e}},Wr=class extends Gr{objectName;constructor(e){super(`Invalid object name: ${e}`),this.objectName=e}},Kn=class extends Gr{constructor(){super("accessKey is required")}},ga=class extends Gr{constructor(){super("secretKey is required")}},Hs=class extends Gr{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}},bn=class extends Gr{statusCode;code;key;bucketName;resource;region;constructor(e,r,n,o={}){super(n),this.statusCode=e,this.code=r,this.key=o.key,this.bucketName=o.bucketName,this.resource=o.resource,this.region=o.region}};async function QO(t){try{let r=zn(await t.text()).root;if(r?.name!=="Error")throw new Error("Invalid root, expected <Error>");let n=r.children.find(c=>c.name==="Code")?.content??"UnknownErrorCode",o=r.children.find(c=>c.name==="Message")?.content??"The error message could not be determined.",i=r.children.find(c=>c.name==="Key")?.content,a=r.children.find(c=>c.name==="BucketName")?.content,s=r.children.find(c=>c.name==="Resource")?.content,u=r.children.find(c=>c.name==="Region")?.content;return new bn(t.status,n,o,{key:i,bucketName:a,resource:s,region:u})}catch{return new bn(t.status,"UnrecognizedError",`Error: Unexpected response code ${t.status} ${t.statusText}. Unable to parse response as XML.`)}}function e1(t){return typeof t!="number"||isNaN(t)?!1:t>=1&&t<=65535}function t1(t){return typeof t!="string"||t.length<3||t.length>63||t.includes("..")||t.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)?!1:!!t.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/)}function Gn(t){return!(!I5(t)||t.length===0)}function I5(t){return!(typeof t!="string"||t.length>1024)}function Vs(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function jo(t=""){let e={'"':"",""":"",""":"",""":"",""":""};return t.replace(/^("|"|")|("|"|")$/g,r=>e[r])}function ey(t){return t.get("x-amz-version-id")??null}function Uo(t){let e=t.toISOString();return e.slice(0,4)+e.slice(5,7)+e.slice(8,13)+e.slice(14,16)+e.slice(17,19)+"Z"}function ty(t){return Uo(t).slice(0,8)}function ry(t,e){return`${ty(e)}/${t}/s3/aws4_request`}async function gf(t){return t instanceof Uint8Array||(t=new TextEncoder().encode(t)),Vs(new Uint8Array(await crypto.subtle.digest("SHA-256",t)))}var T5=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"],yf=class extends WritableStream{getResult;constructor({client:e,bucketName:r,objectName:n,partSize:o,metadata:i}){let a,s=1,u,c=[],f,d=[];super({start(){},async write(p,h){let y=s++;try{if(y==1&&p.length<o){let E=await e.makeRequest({method:"PUT",headers:new Headers({...i,"Content-Length":String(p.length)}),bucketName:r,objectName:n,payload:p});a={etag:jo(E.headers.get("etag")??void 0),versionId:ey(E.headers)};return}y===1&&(u=(await R5({client:e,bucketName:r,objectName:n,metadata:i})).uploadId);let b={"Content-Length":String(p.length)};for(let E of T5){let g=i[E];g&&(b[E]=g)}let v=e.makeRequest({method:"PUT",query:{partNumber:y.toString(),uploadId:u},headers:new Headers(b),bucketName:r,objectName:n,payload:p}).then(E=>{let g=E.headers.get("etag")??"";return g&&(g=g.replace(/^"/,"").replace(/"$/,"")),c.push({part:y,etag:g}),E});d.push(v.catch(E=>{f||(f=E)}))}catch(b){throw b}},async close(){if(!a)if(u){if(await Promise.all(d),f)throw f;c.sort((p,h)=>p.part>h.part?1:-1),a=await B5({client:e,bucketName:r,objectName:n,uploadId:u,etags:c})}else throw new Error("Stream was closed without uploading any data.")}}),this.getResult=()=>{if(a===void 0)throw new Error("Result is not ready. await the stream first.");return a}}};async function R5(t){let e="POST",r=new Headers(t.metadata),i=await(await t.client.makeRequest({method:e,bucketName:t.bucketName,objectName:t.objectName,query:"uploads",headers:r,returnBody:!0})).text(),a=zn(i).root;if(!a||a.name!=="InitiateMultipartUploadResult")throw new Error(`Unexpected response: ${i}`);let s=a.children.find(u=>u.name==="UploadId")?.content;if(!s)throw new Error(`Unable to get UploadId from response: ${i}`);return{uploadId:s}}async function B5({client:t,bucketName:e,objectName:r,uploadId:n,etags:o}){let i=`
|
|
221
|
+
`).eq("app_id",e).order("created_at",{ascending:!1});if(o)throw r||l.error(`App ${e} not found in database`),new Error(`App ${e} not found in database: ${M(o)}`);return n}async function Zg(t,e,r,n={}){let{silent:o=!1}=n,{error:i}=await t.from("app_versions").update({deleted:!0}).eq("app_id",e).eq("deleted",!1).eq("name",r);if(i){let a=`App version ${e}@${r} not found in database`;throw o||l.error(a),new Error(`${a}: ${M(i)}`)}}async function cf(t,e,r,n={}){let{silent:o=!1,autoUnlink:i=!1}=n,a=await _5(t,e,r,{silent:o});await $O(t,e,a,{silent:o,autoUnlink:i}),await Zg(t,e,r,{silent:o})}function lf(t,e=!1){if(e)return;if(!t.length)throw new Error("No bundle found");let r=new ut;r.theme=ut.roundTheme,r.headers=["Version","Created","Keep"],r.rows=[];for(let n of t.toReversed())r.rows.push([n.name,ca(n.created_at),n.keep??""]);l.success("Bundles"),l.success(r.toString())}async function ff(t,e,r={}){let{silent:n=!1}=r,{data:o,error:i}=await t.from("app_versions").select().eq("app_id",e).eq("deleted",!1).order("created_at",{ascending:!1});if(i){let a=`App ${e} not found in database`;throw n||l.error(a),new Error(`${a}: ${M(i)}`)}return o??[]}async function UO(t,e,r={}){let{silent:n=!1}=r,{data:o,error:i}=await t.from("channels").select("version").eq("app_id",e);if(i){let a=`App ${e} not found in database`;throw n||l.error(a),new Error(`${a}: ${M(i)}`)}return(o??[]).map(a=>a.version)}async function _5(t,e,r,n={}){let{silent:o=!1}=n,{data:i,error:a}=await t.from("app_versions").select().eq("app_id",e).eq("name",r).eq("deleted",!1).single();if(!i||a){let s=`App version ${e}@${r} doesn't exist`;throw o||l.error(s),new Error(`${s}${a?`: ${M(a)}`:""}`)}return i}async function S5(t,e,r,n){for await(let o of t)n||l.warn(`Removing ${o.name} created on ${ca(o.created_at)}`),await cf(e,r,o.name)}function x5(t,e,r){let n=[];for(let o of t??[]){let i=ge(o.name);_d(i,e)&&er(i,r)&&n.push(o)}return n}async function A5(t,e,r=!1){r||ee("Cleanup versions in Capgo"),await Ce(),e.apikey=e.apikey||ne();let{bundle:n,keep:o=4}=e,i=e.force||!1,a=e.ignoreChannel||!1,s=await te();if(t=fe(t,s?.config),!e.apikey)throw r||l.error("Missing API key, you need to provide an API key to delete your app"),new Error("Missing API key");if(!t)throw r||l.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let u=await re(e.apikey,e.supaHost,e.supaAnon);await ae(u,e.apikey,["write","all"]),await qe(u,e.apikey,t,3,r),r||l.info("Querying all available versions in Capgo");let c=await ff(u,t),f=await UO(u,t);if(r||l.info(`Total active versions in Capgo: ${c?.length??0}`),!c?.length)throw r||l.error("No versions found, aborting cleanup"),new Error("No versions found");if(n){let h=ge(n),m=An(h,"major");r||l.info(`Querying available versions in Capgo between ${Vt(h)} and ${Vt(m)}`),c=x5(c,h,m),r||l.info(`Active versions in Capgo between ${Vt(h)} and ${Vt(m)}: ${c?.length??0}`)}let d=[],p=0;for(let h of c){let m=f.find(y=>y===h.id);p<o||m&&!a?(h.keep=m?"\u2705 (Linked to channel)":"\u2705",p+=1):(h.keep="\u274C",d.push(h))}if(!d.length)return r||l.warn("Nothing to be removed, aborting removal..."),{removed:0,kept:p};if(r||lf(c),!i){if(r)throw new Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");{let h=await ce({message:"Do you want to continue removing the versions specified?"});if(ue(h)||!h)throw l.warn("Not confirmed, aborting removal..."),new Error("Cleanup cancelled by user")}}return r||l.success("You have confirmed removal, removing versions now"),await S5(d,u,t,r),r||G("Done \u2705"),{removed:d.length,kept:p}}async function MO(t,e){return A5(t,e)}async function O5(t,e,r=!1){r||ee("Check compatibility");let n={...e,apikey:e.apikey||ne()},o=await te(),i=fe(t,o?.config),a=n.channel;if(!a)throw r||l.error("Missing argument, you need to provide a channel"),new Error("Missing channel");if(!n.apikey)throw r||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!i)throw r||l.error("Missing argument, you need to provide an appId, or be in a capacitor project"),new Error("Missing appId");let s=await re(n.apikey,n.supaHost,n.supaAnon);await ae(s,n.apikey,["write","all","read","upload"]),await qe(s,n.apikey,i,1,r);let u=await ef(s,i,a,n.packageJson,n.nodeModules);if(!r){let c=new ut;c.headers=["Package","Local version","Remote version","Compatible"],c.theme=ut.roundTheme,c.rows=[];let f=n.text?"Yes":"\u2705",d=n.text?"No":"\u274C";for(let p of u.finalCompatibility){let{name:h,localVersion:m,remoteVersion:y}=p,b=No(p)?f:d;c.rows.push([h,m,y,b])}l.success("Compatibility"),l.success(c.toString())}return{finalCompatibility:u.finalCompatibility}}async function qO(t,e){try{await O5(t,e,!1)}catch(r){throw l.error(`Error checking compatibility ${M(r)}`),r}}var yn=require("node:fs");var mn=require("node:buffer"),mt=require("node:crypto"),VO="aes-128-cbc",gn="base64",HO="hex",Us=mt.constants.RSA_PKCS1_PADDING;function df(t){let e=(0,mt.randomBytes)(16),r=(0,mt.randomBytes)(16),n=e.toString(gn),o=(0,mt.privateEncrypt)({key:t,padding:Us},r).toString(gn);return{sessionKey:r,ivSessionKey:`${n}:${o}`}}function ha(t,e,r){let[n]=r.split(":"),o=mn.Buffer.from(n,gn),i=(0,mt.createCipheriv)(VO,e,o);return i.setAutoPadding(!0),mn.Buffer.concat([i.update(t),i.final()])}function zO(t,e,r){let[n,o]=e.split(":"),i=(0,mt.publicDecrypt)({key:r,padding:Us},mn.Buffer.from(o,gn)),a=mn.Buffer.from(n,gn),s=(0,mt.createDecipheriv)(VO,i,a);return s.setAutoPadding(!0),mn.Buffer.concat([s.update(t),s.final()])}function ma(t,e){return(0,mt.privateEncrypt)({key:e,padding:Us},mn.Buffer.from(t,gn)).toString(gn)}function pf(t,e){return(0,mt.privateEncrypt)({key:e,padding:Us},mn.Buffer.from(t,HO)).toString(HO)}function KO(t,e){return(0,mt.publicDecrypt)({key:e,padding:Us},mn.Buffer.from(t,gn)).toString(gn)}function GO(){let{publicKey:t,privateKey:e}=(0,mt.generateKeyPairSync)("rsa",{modulusLength:2048});return{publicKey:t.export({type:"pkcs1",format:"pem"}),privateKey:e.export({type:"pkcs1",format:"pem"})}}function WO(t){return t?t.replace(/-----BEGIN RSA PUBLIC KEY-----/g,"").replace(/-----END RSA PUBLIC KEY-----/g,"").replace(/\n/g,"").replace(/\r/g,"").replace(/ /g,"").substring(0,20):""}function F5(t,e){let r=t.key||hn,n=e.config.plugins?.CapacitorUpdater?.publicKey;return(0,yn.existsSync)(r)?n=(0,yn.readFileSync)(r,"utf8"):!n&&t.keyData&&(n=t.keyData),{publicKey:n,fallbackKeyPath:r}}async function P5(t,e,r,n=!1){n||ee("Decrypt zip file");try{if(await Ce(),!(0,yn.existsSync)(t)){let d=`Zip not found at the path ${t}`;throw n||l.error(d),new Error(d)}let o=await te();if(!r.key&&!(0,yn.existsSync)(hn)&&!o.config.plugins?.CapacitorUpdater?.publicKey){let d=`Public Key not found at the path ${hn} or in ${o.path}`;throw n||l.error(d),new Error(d)}let{publicKey:i,fallbackKeyPath:a}=F5(r,o);if(!i){let d=`Cannot find public key ${a} or as keyData option or in ${o.path}`;throw n||l.error(d),new Error(d)}let s=(0,yn.readFileSync)(t),u=zO(s,e,r.keyData??i),c=`${t}_decrypted.zip`;(0,yn.writeFileSync)(c,u),n||l.info(`Decrypted zip file at ${c}`);let f;if(r.checksum){let d=await cn(u,"sha256"),p=KO(r.checksum,r.keyData??i);if(f=d===p,!f){let h=`Checksum does not match ${d} !== ${p}`;throw n||l.error(h),new Error(h)}n||l.info("Checksum matches")}return n||G("\u2705 done"),{outputPath:c,checksumMatches:f}}catch(o){throw n||l.error(`Error decrypting zip file ${M(o)}`),o instanceof Error?o:new Error(String(o))}}async function YO(t,e,r){await P5(t,e,r,!1)}async function k5(t,e,r,n=!1){n||ee("Delete bundle"),r.apikey=r.apikey||ne();let o=await te();if(e=fe(e,o?.config),!r.apikey)throw n||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||l.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!t)throw n||l.error("Missing argument, you need to provide a bundleId, or be in a capacitor project"),new Error("Missing bundleId");let i=await re(r.apikey,r.supaHost,r.supaAnon);return await ae(i,r.apikey,["write","all"]),await qe(i,r.apikey,e,3,n),n||(l.info(`Deleting bundle ${e}@${t} from Capgo`),l.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever")),await cf(i,e,t),n||(l.success(`Bundle ${e}@${t} deleted in Capgo`),G("Done")),!0}async function JO(t,e,r){return k5(t,e,r)}var Dn=require("node:fs");function Ms(t){console.error(M(t))}async function $5(t,e,r,n=!1){let{json:o}=r,i=!o&&!n;i&&(ee("Encryption"),await Ce());try{let a=await te(),s=!!a.config.plugins?.CapacitorUpdater?.privateKey,u=!!a.config.plugins?.CapacitorUpdater?.publicKey;if(s&&i&&l.warning("There is still a privateKey in the config"),!(0,Dn.existsSync)(t)){let v=`Zip not found at the path ${t}`;throw n||(o?Ms({error:"zip_not_found"}):l.error(`Error: ${v}`)),new Error(v)}if(!u)throw n||(o?Ms({error:"missing_public_key"}):l.warning("Warning: Missing Public Key in config")),new Error("Missing public key in config");let c=r.key||or,f=r.keyData||"";if(!(0,Dn.existsSync)(c)&&!f)throw n||(o?Ms({error:"missing_key"}):(l.warning(`Cannot find a private key at ${c} or as a keyData option`),l.error("Error: Missing key"))),new Error("Missing private key");if((0,Dn.existsSync)(c)&&(f=(0,Dn.readFileSync)(c,"utf8")),f&&!f.startsWith("-----BEGIN RSA PRIVATE KEY-----"))throw n||(o?Ms({error:"invalid_private_key"}):l.error("The private key provided is not a valid RSA Private key")),new Error("Invalid private key format");let d=(0,Dn.readFileSync)(t),{sessionKey:p,ivSessionKey:h}=df(f),m=ha(d,p,h),y=ma(e,f),b=`${t}_encrypted.zip`;return(0,Dn.writeFileSync)(b,m),n||(o?console.log(JSON.stringify({checksum:y,filename:b,ivSessionKey:h},null,2)):(l.success(`Encoded Checksum: ${y}`),l.success(`ivSessionKey: ${h}`),l.success(`Encrypted zip saved at ${b}`),G("Done \u2705"))),{checksum:y,filename:b,ivSessionKey:h}}catch(a){throw n||(r.json?Ms(a):l.error(`Error encrypting zip file ${M(a)}`)),a instanceof Error?a:new Error(String(a))}}async function XO(t,e,r){await $5(t,e,r,!1)}async function ZO(t,e,r=!1){r||ee("List bundles"),await Ce(),e.apikey=e.apikey||ne();let n=await te();if(t=fe(t,n?.config),!e.apikey)throw r||l.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||l.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let o=await re(e.apikey,e.supaHost,e.supaAnon);await ae(o,e.apikey,["write","all","read","upload"]),await qe(o,e.apikey,t,1,r),r||l.info(`Querying available versions of: ${t} in Capgo`);let i=await ff(o,t);return r||(l.info(`Active versions in Capgo: ${i?.length??0}`),lf(i),G("Done \u2705")),i}var OF=require("node:crypto"),Go=require("node:fs"),Of=require("node:process");var hf=class extends TransformStream{outChunkSize;constructor(e){let r=new Uint8Array(e),n=0;super({transform(o,i){let a=0;for(;a<o.length;){let s=e-n,u=Math.min(s,o.length-a);r.set(o.subarray(a,a+u),n),a+=u,n+=u,n===e&&(i.enqueue(r),r=new Uint8Array(e),n=0)}},flush(o){n>0&&o.enqueue(r.subarray(0,n))}}),this.outChunkSize=e}};function zn(t){return t=t.trim(),t=t.replace(/<!--[\s\S]*?-->/g,""),e();function e(){return{declaration:r(),root:n()}}function r(){if(!u(/^<\?xml\s*/))return;let p={attributes:{}};for(;!(c()||f("?>"));){let h=i();if(!h)return p;p.attributes[h.name]=h.value}return u(/\?>\s*/),p}function n(){let d=u(/^<([\w-:.]+)\s*/);if(!d)return;let p={name:d[1],attributes:{},children:[]};for(;!(c()||f(">")||f("?>")||f("/>"));){let m=i();if(!m)return p;p.attributes[m.name]=m.value}if(u(/^\s*\/>\s*/))return p;u(/\??>\s*/),p.content=o();let h;for(;h=n();)p.children.push(h);return u(/^<\/[\w-:.]+>\s*/),p}function o(){let d=u(/^([^<]*)/);return d?s(d[1]):""}function i(){let d=u(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(d)return{name:d[1],value:s(a(d[2]))}}function a(d){return d.replace(/^['"]|['"]$/g,"")}function s(d){return d.replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function u(d){let p=t.match(d);if(p)return t=t.slice(p[0].length),p}function c(){return t.length===0}function f(d){return t.startsWith(d)}}var Gr=class extends Error{};var xt=class extends Gr{},qs=class extends Gr{},mf=class extends Gr{bucketName;constructor(e){super(`Invalid bucket name: ${e}`),this.bucketName=e}},Wr=class extends Gr{objectName;constructor(e){super(`Invalid object name: ${e}`),this.objectName=e}},Kn=class extends Gr{constructor(){super("accessKey is required")}},ga=class extends Gr{constructor(){super("secretKey is required")}},Hs=class extends Gr{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}},bn=class extends Gr{statusCode;code;key;bucketName;resource;region;constructor(e,r,n,o={}){super(n),this.statusCode=e,this.code=r,this.key=o.key,this.bucketName=o.bucketName,this.resource=o.resource,this.region=o.region}};async function QO(t){try{let r=zn(await t.text()).root;if(r?.name!=="Error")throw new Error("Invalid root, expected <Error>");let n=r.children.find(c=>c.name==="Code")?.content??"UnknownErrorCode",o=r.children.find(c=>c.name==="Message")?.content??"The error message could not be determined.",i=r.children.find(c=>c.name==="Key")?.content,a=r.children.find(c=>c.name==="BucketName")?.content,s=r.children.find(c=>c.name==="Resource")?.content,u=r.children.find(c=>c.name==="Region")?.content;return new bn(t.status,n,o,{key:i,bucketName:a,resource:s,region:u})}catch{return new bn(t.status,"UnrecognizedError",`Error: Unexpected response code ${t.status} ${t.statusText}. Unable to parse response as XML.`)}}function e1(t){return typeof t!="number"||isNaN(t)?!1:t>=1&&t<=65535}function t1(t){return typeof t!="string"||t.length<3||t.length>63||t.includes("..")||t.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)?!1:!!t.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/)}function Gn(t){return!(!I5(t)||t.length===0)}function I5(t){return!(typeof t!="string"||t.length>1024)}function Vs(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function jo(t=""){let e={'"':"",""":"",""":"",""":"",""":""};return t.replace(/^("|"|")|("|"|")$/g,r=>e[r])}function ey(t){return t.get("x-amz-version-id")??null}function Uo(t){let e=t.toISOString();return e.slice(0,4)+e.slice(5,7)+e.slice(8,13)+e.slice(14,16)+e.slice(17,19)+"Z"}function ty(t){return Uo(t).slice(0,8)}function ry(t,e){return`${ty(e)}/${t}/s3/aws4_request`}async function gf(t){return t instanceof Uint8Array||(t=new TextEncoder().encode(t)),Vs(new Uint8Array(await crypto.subtle.digest("SHA-256",t)))}var T5=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"],yf=class extends WritableStream{getResult;constructor({client:e,bucketName:r,objectName:n,partSize:o,metadata:i}){let a,s=1,u,c=[],f,d=[];super({start(){},async write(p,h){let y=s++;try{if(y==1&&p.length<o){let E=await e.makeRequest({method:"PUT",headers:new Headers({...i,"Content-Length":String(p.length)}),bucketName:r,objectName:n,payload:p});a={etag:jo(E.headers.get("etag")??void 0),versionId:ey(E.headers)};return}y===1&&(u=(await R5({client:e,bucketName:r,objectName:n,metadata:i})).uploadId);let b={"Content-Length":String(p.length)};for(let E of T5){let g=i[E];g&&(b[E]=g)}let v=e.makeRequest({method:"PUT",query:{partNumber:y.toString(),uploadId:u},headers:new Headers(b),bucketName:r,objectName:n,payload:p}).then(E=>{let g=E.headers.get("etag")??"";return g&&(g=g.replace(/^"/,"").replace(/"$/,"")),c.push({part:y,etag:g}),E});d.push(v.catch(E=>{f||(f=E)}))}catch(b){throw b}},async close(){if(!a)if(u){if(await Promise.all(d),f)throw f;c.sort((p,h)=>p.part>h.part?1:-1),a=await B5({client:e,bucketName:r,objectName:n,uploadId:u,etags:c})}else throw new Error("Stream was closed without uploading any data.")}}),this.getResult=()=>{if(a===void 0)throw new Error("Result is not ready. await the stream first.");return a}}};async function R5(t){let e="POST",r=new Headers(t.metadata),i=await(await t.client.makeRequest({method:e,bucketName:t.bucketName,objectName:t.objectName,query:"uploads",headers:r,returnBody:!0})).text(),a=zn(i).root;if(!a||a.name!=="InitiateMultipartUploadResult")throw new Error(`Unexpected response: ${i}`);let s=a.children.find(u=>u.name==="UploadId")?.content;if(!s)throw new Error(`Unable to get UploadId from response: ${i}`);return{uploadId:s}}async function B5({client:t,bucketName:e,objectName:r,uploadId:n,etags:o}){let i=`
|
|
222
222
|
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
223
223
|
${o.map(d=>` <Part><PartNumber>${d.part}</PartNumber><ETag>${d.etag}</ETag></Part>`).join(`
|
|
224
224
|
`)}
|
package/dist/package.json
CHANGED
|
@@ -14,10 +14,12 @@ export interface RSAKeys {
|
|
|
14
14
|
}
|
|
15
15
|
export declare function createRSA(): RSAKeys;
|
|
16
16
|
/**
|
|
17
|
-
* Calculate the key ID from a public key
|
|
18
|
-
*
|
|
17
|
+
* Calculate the key ID from a public key
|
|
18
|
+
* Shows the first 20 characters of base64-encoded key body for easy visual verification
|
|
19
|
+
* Note: First 12 characters (MIIBCgKCAQEA) are always the same for 2048-bit RSA PKCS#1 keys,
|
|
20
|
+
* but we show all of them so users can easily match with their key file
|
|
19
21
|
* @param publicKey - RSA public key in PEM format
|
|
20
|
-
* @returns
|
|
22
|
+
* @returns 20-character key ID or empty string if key is invalid
|
|
21
23
|
*/
|
|
22
24
|
export declare function calcKeyId(publicKey: string): string;
|
|
23
25
|
//# sourceMappingURL=cryptoV2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cryptoV2.d.ts","sourceRoot":"","sources":["../../../src/api/cryptoV2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAgBpC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAgB5F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAOhG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAmBzF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAYvE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAWvE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAUvE;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AACD,wBAAgB,SAAS,IAAI,OAAO,CAgBnC;AAED
|
|
1
|
+
{"version":3,"file":"cryptoV2.d.ts","sourceRoot":"","sources":["../../../src/api/cryptoV2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAgBpC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAgB5F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAOhG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAmBzF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAYvE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAWvE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAUvE;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AACD,wBAAgB,SAAS,IAAI,OAAO,CAgBnC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgBnD"}
|
package/dist/src/sdk.js
CHANGED
|
@@ -296,7 +296,7 @@ ${X.default.gray(hs)} ${t}
|
|
|
296
296
|
`);let w=0,S=0;f(),s=setInterval(()=>{if(n&&a===u)return;y(),u=a;let R=X.default.magenta(e[w]);if(n)process.stdout.write(`${R} ${a}...`);else if(t==="timer")process.stdout.write(`${R} ${a} ${E(c)}`);else{let _=".".repeat(Math.floor(S)).slice(0,3);process.stdout.write(`${R} ${a}${_}`)}w=w+1<e.length?w+1:0,S=S<e.length?S+.125:0},r)},m=(D="",w=0)=>{o=!1,clearInterval(s),y();let S=w===0?X.default.green(qm):w===1?X.default.red(y_):X.default.red(D_);a=v(D??a),t==="timer"?process.stdout.write(`${S} ${a} ${E(c)}
|
|
297
297
|
`):process.stdout.write(`${S} ${a}
|
|
298
298
|
`),p(),i()};return{start:A,stop:m,message:(D="")=>{a=v(D??a)}}};function v_(t,e){let n=["normal","bold","dim","italic","underline","strikethrough"].indexOf(t),i="\x1B[";return i+n+"m"+e+i+"0m"}var zt=class t{title=null;headers=[];rows=[];static narrowTheme={top:["\u2554","\u2550","\u2564","\u2557"],row:["\u2551"," ","\u2502","\u2551"],div:["\u255F","\u2500","\u253C","\u2562"],bot:["\u255A","\u2550","\u2567","\u255D"]};static wideTheme={top:["\u2554\u2550","\u2550","\u2550\u2564\u2550","\u2550\u2557"],row:["\u2551 "," "," \u2502 "," \u2551"],div:["\u255F\u2500","\u2500","\u2500\u253C\u2500","\u2500\u2562"],bot:["\u255A\u2550","\u2550","\u2550\u2567\u2550","\u2550\u255D"]};static roundTheme={top:["\u256D\u2500","\u2500","\u2500\u252C\u2500","\u2500\u256E"],row:["\u2502 "," "," \u2502 "," \u2502"],div:["\u251C\u2500","\u2500","\u2500\u253C\u2500","\u2500\u2524"],bot:["\u2570\u2500","\u2500","\u2500\u2534\u2500","\u2500\u256F"]};theme=t.wideTheme;columnWidth(){let e=[this.headers,...this.rows].filter(n=>n.length>0),r=e[0].map(n=>this.cast(n).length);for(let n of e.slice(1))for(let i=0;i<r.length;i++){let s=this.cast(n[i]).length;s>r[i]&&(r[i]=s)}return r}cast(e){return typeof e=="object"?"obj":e!==void 0&&typeof e.toString=="function"?e.toString():""}renderTitle(){return"[ "+this.title+" ]"}renderLine(e){let r=this.columnWidth();return e[0]+r.map(n=>e[1].repeat(n)).join(e[2])+e[3]}renderCell(e,r,n=!1){let i=this.cast(e),s=n?v_("bold",i):i,o=r-i.length,a=this.theme.row[1];switch(typeof e){case"number":return a.repeat(o)+s;case"string":return s+a.repeat(o);case"boolean":case"object":return a.repeat(Math.ceil(o/2))+v_("italic",i)+a.repeat(Math.floor(o/2));default:return a.repeat(o)}}renderRow(e,r=!1){let n=this.theme.row,i=this.columnWidth();return n[0]+e.map((s,o)=>this.renderCell(s,i[o],r)).join(n[2])+n[3]}toString(){let e=this.theme,r=this.headers.length>0,n=this.rows.length>0;return[this.title?this.renderTitle():"",r||n?this.renderLine(e.top):"",r?this.renderRow(this.headers,!0):"",r&&n?this.renderLine(e.div):"",...this.rows.map(i=>this.renderRow(i)),r||n?this.renderLine(e.bot):""].filter(i=>i.length>0).join(`
|
|
299
|
-
`)}};var g8=require("node:child_process"),Te=require("node:fs"),Wp=require("node:os"),xe=Ee(require("node:path")),Un=require("node:process"),os=Ee(jl());var Zt=require("fs"),Du=(t=".",e="unknown")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bun":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm":(0,Zt.existsSync)(o)?"yarn":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npm":e},Ml=(t=Du(),e=!1)=>{switch(t){case"bun":return e?"bun install":"install";case"pnpm":return e?"pnpm install":"install";case"yarn":return e?"yarn install":"install";case"npm":return e?"npm install":"install";case"unknown":return e?"unknown unknown":"unknown";default:return e?"npm install":"install"}},E_=(t=".",e="npx")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bunx":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm exec":(0,Zt.existsSync)(o)?"yarn dlx":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npx":e};function Ul(t,e){if(isNaN(t)||isNaN(e))throw new Error("Cannot compare against non-numbers");return t===e?0:t<e?-1:1}function C_(t=[],e=[]){return t.length&&!e.length?-1:!t.length&&e.length?1:0}function Km(t=[],e=[]){let r=Math.max(t.length,e.length);for(let n=0;n<r;n++){let i=t[n],s=e[n];if(i===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(i===void 0)return-1;if(typeof i=="string"&&typeof s=="number")return 1;if(typeof i=="number"&&typeof s=="string"||i<s)return-1;if(i>s)return 1}return 0}var Oo="0|[1-9]\\d*",l4="\\d*[a-zA-Z-][a-zA-Z0-9-]*",f4=`(?<major>${Oo})\\.(?<minor>${Oo})\\.(?<patch>${Oo})`,b_=`(?:${Oo}|${l4})`,S_=`(?:-(?<prerelease>${b_}(?:\\.${b_})*))`,__="[0-9A-Za-z-]+",A_=`(?:\\+(?<buildmetadata>${__}(?:\\.${__})*))`,O_=`v?${f4}${S_}?${A_}?`,x_=new RegExp(`^${O_}$`),T_="(?:<|>)?=?",d4="x|X|\\*",zm=`${Oo}|${d4}`,ql=`[v=\\s]*(?<major>${zm})(?:\\.(?<minor>${zm})(?:\\.(?<patch>${zm})${S_}?${A_}?)?)?`,I_=new RegExp(`^(?<operator>~>?|\\^|${T_})\\s*${ql}$`),P_=new RegExp(`^(?<operator>${T_})\\s*(${O_})$|^$`);function Gm(t){return typeof t=="number"&&!Number.isNaN(t)&&(!Number.isFinite(t)||0<=t&&t<=Number.MAX_SAFE_INTEGER)}var Wm=256;var h4=new RegExp(`^${Oo}$`);function Qt(t){return t.split(".").filter(Boolean).map(e=>{if(h4.test(e)){let r=Number(e);if(Gm(r))return r}return e})}function nn(t){return t.split(".").filter(Boolean)}function Pi(t,e){let r=Number(t);if(!Gm(r))throw new TypeError(e);return r}function Wn(t){return Number.isNaN(t.major)&&Number.isNaN(t.minor)&&Number.isNaN(t.patch)&&(t.prerelease===void 0||t.prerelease.length===0)&&(t.build===void 0||t.build.length===0)}function er(t,e){return t===e?0:Ul(t.major,e.major)||Ul(t.minor,e.minor)||Ul(t.patch,e.patch)||C_(t.prerelease,e.prerelease)||Km(t.prerelease,e.prerelease)}function Xm(t){return t.toFixed(0)}function sn(t){let e=Xm(t.major),r=Xm(t.minor),n=Xm(t.patch),i=t.prerelease?.join(".")??"",s=t.build?.join(".")??"";return[[`${e}.${r}.${n}`,i].filter(u=>u).join("-"),s].filter(u=>u).join("+")}function p4(t,e){if(Wn(e))return!0;let r=er(t,e);switch(e.operator){case"=":case void 0:return r===0;case"!=":return r!==0;case">":return r>0;case"<":return r<0;case">=":return r>=0;case"<=":return r<=0}}function Hl(t,e){for(let r of e)if(!p4(t,r))return!1;if(t.prerelease&&t.prerelease.length>0){for(let r of e){if(Wn(r))continue;let{major:n,minor:i,patch:s,prerelease:o}=r;if(o&&o.length>0&&t.major===n&&t.minor===i&&t.patch===s)return!0}return!1}return!0}function wu(t,e){return e.some(r=>Hl(t,r))}function m4(t=[]){let e=[...t],r=e.length;for(;r>=0;){let n=e[r];if(typeof n=="number"){e[r]=n+1;break}r-=1}return r===-1&&e.push(0),e}function vu(t=[],e){let r=m4(t);if(!e)return r;let n=Qt(e);if(n.every(i=>typeof i=="string")){if(n.every((i,s)=>i===r[s])&&typeof r[n.length]=="number")return r;n=[...n,0]}return n}function Eu(t,e,r={}){let n=r.build!==void 0?nn(r.build):t.build??[];switch(e){case"premajor":return{major:t.major+1,minor:0,patch:0,prerelease:vu(t.prerelease,r.prerelease),build:n};case"preminor":return{major:t.major,minor:t.minor+1,patch:0,prerelease:vu(t.prerelease,r.prerelease),build:n};case"prepatch":return{major:t.major,minor:t.minor,patch:t.patch+1,prerelease:vu(t.prerelease,r.prerelease),build:n};case"prerelease":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:vu(t.prerelease,r.prerelease),build:n}}case"major":return{major:(t.prerelease??[]).length===0||t.minor!==0||t.patch!==0?t.major+1:t.major,minor:0,patch:0,prerelease:[],build:n};case"minor":{let s=(t.prerelease??[]).length===0||t.patch!==0?t.minor+1:t.minor;return{major:t.major,minor:s,patch:0,prerelease:[],build:n}}case"patch":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:[],build:n}}case"pre":return{major:t.major,minor:t.minor,patch:t.patch,prerelease:vu(t.prerelease,r.prerelease),build:n};default:throw new TypeError(`Cannot increment version: invalid argument ${e}`)}}var Vl={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},xo={operator:void 0,...Vl};function Ym(t,e){return er(t,e)>0}function ps(t,e){return er(t,e)<0}function g4(t){let r=t.match(P_)?.groups;if(!r)return null;let{operator:n,prerelease:i,buildmetadata:s}=r,o=r.major?{major:Pi(r.major,`Cannot parse comparator ${t}: invalid major version`),minor:Pi(r.minor,`Cannot parse comparator ${t}: invalid minor version`),patch:Pi(r.patch,`Cannot parse comparator ${t}: invalid patch version`),prerelease:i?Qt(i):[],build:s?nn(s):[]}:Vl;return{operator:n||void 0,...o}}function Ge(t){return!t||t.toLowerCase()==="x"||t==="*"}function y4(t){if(!Ge(t.major))return Ge(t.minor)?{operator:">=",major:+t.major,minor:0,patch:0,prerelease:[],build:[]}:Ge(t.patch)?{operator:">=",major:+t.major,minor:+t.minor,patch:0,prerelease:[],build:[]}:{operator:">=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:t.prerelease?Qt(t.prerelease):[],build:[]}}function D4(t){if(!Ge(t.major))return Ge(t.minor)?{operator:"<",major:+t.major+1,minor:0,patch:0,prerelease:[],build:[]}:Ge(t.patch)?{operator:"<",major:+t.major,minor:+t.minor+1,patch:0,prerelease:[],build:[]}:t.prerelease?{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:Qt(t.prerelease),build:[]}:{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:[],build:[]}}function w4(t){let e=t.match(new RegExp(`^${ql}`)),r=e?.groups;if(!r)return null;let n=e[0].length,i=t.slice(n).match(/^\s+-\s+/);if(!i)return null;let s=i[0].length,a=t.slice(n+s).match(new RegExp(`^${ql}\\s*$`))?.groups;if(!a)return null;let u=y4(r),c=D4(a);return[u,c].filter(Boolean)}function v4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return i===0?[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];let a=Qt(t.prerelease??"");return i===0?s===0?[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s,patch:o+1}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i+1,minor:0,patch:0}]}function E4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]}function b4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return n?[{operator:"<",major:i,minor:0,patch:0}]:[{operator:"<",major:i,minor:0,patch:0}];if(n)return[{operator:"<",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:"<",major:i,minor:s,patch:o,prerelease:a,build:u}]}function _4(t){let e=Ge(t.minor),r=Ge(t.patch),n=+t.major,i=+t.minor,s=+t.patch;if(e)return r?[{operator:"<",major:n+1,minor:0,patch:0}]:[{operator:"<",major:n,minor:i+1,patch:0}];if(r)return[{operator:"<",major:n,minor:i+1,patch:0}];let o=Qt(t.prerelease??""),a=nn(t.build??"");return[{operator:"<=",major:n,minor:i,patch:s,prerelease:o,build:a}]}function C4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return[{operator:">=",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:">",major:i,minor:s,patch:o,prerelease:a,build:u}]}function S4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return n?[{operator:">=",major:i,minor:0,patch:0}]:[{operator:">=",major:i,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a,build:u}]}function A4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:void 0,major:i,minor:s,patch:o,prerelease:a,build:u}]}function O4(t){let e=t.match(I_)?.groups;if(!e)return g4(t);switch(e.operator){case"^":return v4(e);case"~":case"~>":return E4(e);case"<":return b4(e);case"<=":return _4(e);case">":return C4(e);case">=":return S4(e);case"=":case"":return A4(e);default:throw new Error(`Cannot parse version range: '${e.operator}' is not a valid operator`)}}function x4(t){return t.split(/\s+/).flatMap(O4)}function zl(t){let e=t.replaceAll(/(?<=<|>|=|~|\^)(\s+)/g,"").split(/\s*\|\|\s*/).map(r=>w4(r)||x4(r));if(e.some(r=>r.includes(null)))throw new TypeError(`Cannot parse version range: range "${t}" is invalid`);return e}function lt(t){if(typeof t!="string")throw new TypeError(`Cannot parse version as version must be a string: received ${typeof t}`);if(t.length>Wm)throw new TypeError(`Cannot parse version as version length is too long: length is ${t.length}, max length is ${Wm}`);t=t.trim();let e=t.match(x_)?.groups;if(!e)throw new TypeError(`Cannot parse version: ${t}`);let r=Pi(e.major,`Cannot parse version ${t}: invalid major version`),n=Pi(e.minor,`Cannot parse version ${t}: invalid minor version`),i=Pi(e.patch,`Cannot parse version ${t}: invalid patch version`),s=e.prerelease?Qt(e.prerelease):[],o=e.buildmetadata?nn(e.buildmetadata):[];return{major:r,minor:n,patch:i,prerelease:s,build:o}}function F_(t,e){let r=t.operator,n=e.operator;if(r===void 0)return Wn(t)?!0:wu(t,[[e]]);if(n===void 0)return Wn(e)?!0:wu(e,[[t]]);let i=er(t,e);return(r===">="||r===">")&&(n===">="||n===">")||(r==="<="||r==="<")&&(n==="<="||n==="<")||i===0&&((r===">="||r==="<=")&&(n===">="||n==="<="))||i===-1&&(r===">="||r===">")&&(n==="<="||n==="<")||i===1&&(r==="<="||r==="<")&&(n===">="||n===">")}function T4(t){return t.every(e=>e.some(r=>I4(r)))}function I4(t){for(let e=0;e<t.length-1;e++){let r=t[e];for(let n of t.slice(e+1))if(!F_(r,n))return!1}return!0}function R_(t,e){return T4([t,e])&&t.some(r=>e.some(n=>r.every(i=>n.every(s=>F_(i,s)))))}function k_(t){try{return lt(t),!0}catch{return!1}}function N_(t,e){return er(t,e)>=0}var eu=Ee(FS()),gb=Ee(fD()),y8=Ee(UA()),Xp=Ee(Wd());var ni={name:"@capgo/cli",version:"7.58.1",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};async function Xd(t){try{let r=`https://registry.npmjs.org/${encodeURIComponent(t.toLowerCase())}`,n=await fetch(r,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});return n.ok&&(await n.json())["dist-tags"]?.latest||null}catch{return null}}async function Je(){let t=await Xd("@capgo/cli")??"",e=t?.split(".")[0];t!==ni.version&&g.warning(`\u{1F6A8} You are using @capgo/cli@${ni.version} it's not the latest version.
|
|
299
|
+
`)}};var g8=require("node:child_process"),Te=require("node:fs"),Wp=require("node:os"),xe=Ee(require("node:path")),Un=require("node:process"),os=Ee(jl());var Zt=require("fs"),Du=(t=".",e="unknown")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bun":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm":(0,Zt.existsSync)(o)?"yarn":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npm":e},Ml=(t=Du(),e=!1)=>{switch(t){case"bun":return e?"bun install":"install";case"pnpm":return e?"pnpm install":"install";case"yarn":return e?"yarn install":"install";case"npm":return e?"npm install":"install";case"unknown":return e?"unknown unknown":"unknown";default:return e?"npm install":"install"}},E_=(t=".",e="npx")=>{let r=`${t}/bun.lockb`,n=`${t}/bun.lock`,i=`${t}/pnpm-lock.yaml`,s=`${t}/shrinkwrap.yaml`,o=`${t}/yarn.lock`,a=`${t}/package-lock.json`,u=`${t}/npm-shrinkwrap.json`;return(0,Zt.existsSync)(r)||(0,Zt.existsSync)(n)?"bunx":(0,Zt.existsSync)(i)||(0,Zt.existsSync)(s)?"pnpm exec":(0,Zt.existsSync)(o)?"yarn dlx":(0,Zt.existsSync)(a)||(0,Zt.existsSync)(u)?"npx":e};function Ul(t,e){if(isNaN(t)||isNaN(e))throw new Error("Cannot compare against non-numbers");return t===e?0:t<e?-1:1}function C_(t=[],e=[]){return t.length&&!e.length?-1:!t.length&&e.length?1:0}function Km(t=[],e=[]){let r=Math.max(t.length,e.length);for(let n=0;n<r;n++){let i=t[n],s=e[n];if(i===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(i===void 0)return-1;if(typeof i=="string"&&typeof s=="number")return 1;if(typeof i=="number"&&typeof s=="string"||i<s)return-1;if(i>s)return 1}return 0}var Oo="0|[1-9]\\d*",l4="\\d*[a-zA-Z-][a-zA-Z0-9-]*",f4=`(?<major>${Oo})\\.(?<minor>${Oo})\\.(?<patch>${Oo})`,b_=`(?:${Oo}|${l4})`,S_=`(?:-(?<prerelease>${b_}(?:\\.${b_})*))`,__="[0-9A-Za-z-]+",A_=`(?:\\+(?<buildmetadata>${__}(?:\\.${__})*))`,O_=`v?${f4}${S_}?${A_}?`,x_=new RegExp(`^${O_}$`),T_="(?:<|>)?=?",d4="x|X|\\*",zm=`${Oo}|${d4}`,ql=`[v=\\s]*(?<major>${zm})(?:\\.(?<minor>${zm})(?:\\.(?<patch>${zm})${S_}?${A_}?)?)?`,I_=new RegExp(`^(?<operator>~>?|\\^|${T_})\\s*${ql}$`),P_=new RegExp(`^(?<operator>${T_})\\s*(${O_})$|^$`);function Gm(t){return typeof t=="number"&&!Number.isNaN(t)&&(!Number.isFinite(t)||0<=t&&t<=Number.MAX_SAFE_INTEGER)}var Wm=256;var h4=new RegExp(`^${Oo}$`);function Qt(t){return t.split(".").filter(Boolean).map(e=>{if(h4.test(e)){let r=Number(e);if(Gm(r))return r}return e})}function nn(t){return t.split(".").filter(Boolean)}function Pi(t,e){let r=Number(t);if(!Gm(r))throw new TypeError(e);return r}function Wn(t){return Number.isNaN(t.major)&&Number.isNaN(t.minor)&&Number.isNaN(t.patch)&&(t.prerelease===void 0||t.prerelease.length===0)&&(t.build===void 0||t.build.length===0)}function er(t,e){return t===e?0:Ul(t.major,e.major)||Ul(t.minor,e.minor)||Ul(t.patch,e.patch)||C_(t.prerelease,e.prerelease)||Km(t.prerelease,e.prerelease)}function Xm(t){return t.toFixed(0)}function sn(t){let e=Xm(t.major),r=Xm(t.minor),n=Xm(t.patch),i=t.prerelease?.join(".")??"",s=t.build?.join(".")??"";return[[`${e}.${r}.${n}`,i].filter(u=>u).join("-"),s].filter(u=>u).join("+")}function p4(t,e){if(Wn(e))return!0;let r=er(t,e);switch(e.operator){case"=":case void 0:return r===0;case"!=":return r!==0;case">":return r>0;case"<":return r<0;case">=":return r>=0;case"<=":return r<=0}}function Hl(t,e){for(let r of e)if(!p4(t,r))return!1;if(t.prerelease&&t.prerelease.length>0){for(let r of e){if(Wn(r))continue;let{major:n,minor:i,patch:s,prerelease:o}=r;if(o&&o.length>0&&t.major===n&&t.minor===i&&t.patch===s)return!0}return!1}return!0}function wu(t,e){return e.some(r=>Hl(t,r))}function m4(t=[]){let e=[...t],r=e.length;for(;r>=0;){let n=e[r];if(typeof n=="number"){e[r]=n+1;break}r-=1}return r===-1&&e.push(0),e}function vu(t=[],e){let r=m4(t);if(!e)return r;let n=Qt(e);if(n.every(i=>typeof i=="string")){if(n.every((i,s)=>i===r[s])&&typeof r[n.length]=="number")return r;n=[...n,0]}return n}function Eu(t,e,r={}){let n=r.build!==void 0?nn(r.build):t.build??[];switch(e){case"premajor":return{major:t.major+1,minor:0,patch:0,prerelease:vu(t.prerelease,r.prerelease),build:n};case"preminor":return{major:t.major,minor:t.minor+1,patch:0,prerelease:vu(t.prerelease,r.prerelease),build:n};case"prepatch":return{major:t.major,minor:t.minor,patch:t.patch+1,prerelease:vu(t.prerelease,r.prerelease),build:n};case"prerelease":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:vu(t.prerelease,r.prerelease),build:n}}case"major":return{major:(t.prerelease??[]).length===0||t.minor!==0||t.patch!==0?t.major+1:t.major,minor:0,patch:0,prerelease:[],build:n};case"minor":{let s=(t.prerelease??[]).length===0||t.patch!==0?t.minor+1:t.minor;return{major:t.major,minor:s,patch:0,prerelease:[],build:n}}case"patch":{let s=(t.prerelease??[]).length===0?t.patch+1:t.patch;return{major:t.major,minor:t.minor,patch:s,prerelease:[],build:n}}case"pre":return{major:t.major,minor:t.minor,patch:t.patch,prerelease:vu(t.prerelease,r.prerelease),build:n};default:throw new TypeError(`Cannot increment version: invalid argument ${e}`)}}var Vl={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},xo={operator:void 0,...Vl};function Ym(t,e){return er(t,e)>0}function ps(t,e){return er(t,e)<0}function g4(t){let r=t.match(P_)?.groups;if(!r)return null;let{operator:n,prerelease:i,buildmetadata:s}=r,o=r.major?{major:Pi(r.major,`Cannot parse comparator ${t}: invalid major version`),minor:Pi(r.minor,`Cannot parse comparator ${t}: invalid minor version`),patch:Pi(r.patch,`Cannot parse comparator ${t}: invalid patch version`),prerelease:i?Qt(i):[],build:s?nn(s):[]}:Vl;return{operator:n||void 0,...o}}function Ge(t){return!t||t.toLowerCase()==="x"||t==="*"}function y4(t){if(!Ge(t.major))return Ge(t.minor)?{operator:">=",major:+t.major,minor:0,patch:0,prerelease:[],build:[]}:Ge(t.patch)?{operator:">=",major:+t.major,minor:+t.minor,patch:0,prerelease:[],build:[]}:{operator:">=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:t.prerelease?Qt(t.prerelease):[],build:[]}}function D4(t){if(!Ge(t.major))return Ge(t.minor)?{operator:"<",major:+t.major+1,minor:0,patch:0,prerelease:[],build:[]}:Ge(t.patch)?{operator:"<",major:+t.major,minor:+t.minor+1,patch:0,prerelease:[],build:[]}:t.prerelease?{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:Qt(t.prerelease),build:[]}:{operator:"<=",major:+t.major,minor:+t.minor,patch:+t.patch,prerelease:[],build:[]}}function w4(t){let e=t.match(new RegExp(`^${ql}`)),r=e?.groups;if(!r)return null;let n=e[0].length,i=t.slice(n).match(/^\s+-\s+/);if(!i)return null;let s=i[0].length,a=t.slice(n+s).match(new RegExp(`^${ql}\\s*$`))?.groups;if(!a)return null;let u=y4(r),c=D4(a);return[u,c].filter(Boolean)}function v4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return i===0?[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];let a=Qt(t.prerelease??"");return i===0?s===0?[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s,patch:o+1}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]:[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i+1,minor:0,patch:0}]}function E4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a},{operator:"<",major:i,minor:s+1,patch:0}]}function b4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return n?[{operator:"<",major:i,minor:0,patch:0}]:[{operator:"<",major:i,minor:0,patch:0}];if(n)return[{operator:"<",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:"<",major:i,minor:s,patch:o,prerelease:a,build:u}]}function _4(t){let e=Ge(t.minor),r=Ge(t.patch),n=+t.major,i=+t.minor,s=+t.patch;if(e)return r?[{operator:"<",major:n+1,minor:0,patch:0}]:[{operator:"<",major:n,minor:i+1,patch:0}];if(r)return[{operator:"<",major:n,minor:i+1,patch:0}];let o=Qt(t.prerelease??""),a=nn(t.build??"");return[{operator:"<=",major:n,minor:i,patch:s,prerelease:o,build:a}]}function C4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(r)return[{operator:">=",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:">",major:i,minor:s,patch:o,prerelease:a,build:u}]}function S4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return n?[{operator:">=",major:i,minor:0,patch:0}]:[{operator:">=",major:i,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:">=",major:i,minor:s,patch:o,prerelease:a,build:u}]}function A4(t){let e=Ge(t.major),r=Ge(t.minor),n=Ge(t.patch),i=+t.major,s=+t.minor,o=+t.patch;if(e)return[xo];if(r)return[{operator:">=",major:i,minor:0,patch:0},{operator:"<",major:i+1,minor:0,patch:0}];if(n)return[{operator:">=",major:i,minor:s,patch:0},{operator:"<",major:i,minor:s+1,patch:0}];let a=Qt(t.prerelease??""),u=nn(t.build??"");return[{operator:void 0,major:i,minor:s,patch:o,prerelease:a,build:u}]}function O4(t){let e=t.match(I_)?.groups;if(!e)return g4(t);switch(e.operator){case"^":return v4(e);case"~":case"~>":return E4(e);case"<":return b4(e);case"<=":return _4(e);case">":return C4(e);case">=":return S4(e);case"=":case"":return A4(e);default:throw new Error(`Cannot parse version range: '${e.operator}' is not a valid operator`)}}function x4(t){return t.split(/\s+/).flatMap(O4)}function zl(t){let e=t.replaceAll(/(?<=<|>|=|~|\^)(\s+)/g,"").split(/\s*\|\|\s*/).map(r=>w4(r)||x4(r));if(e.some(r=>r.includes(null)))throw new TypeError(`Cannot parse version range: range "${t}" is invalid`);return e}function lt(t){if(typeof t!="string")throw new TypeError(`Cannot parse version as version must be a string: received ${typeof t}`);if(t.length>Wm)throw new TypeError(`Cannot parse version as version length is too long: length is ${t.length}, max length is ${Wm}`);t=t.trim();let e=t.match(x_)?.groups;if(!e)throw new TypeError(`Cannot parse version: ${t}`);let r=Pi(e.major,`Cannot parse version ${t}: invalid major version`),n=Pi(e.minor,`Cannot parse version ${t}: invalid minor version`),i=Pi(e.patch,`Cannot parse version ${t}: invalid patch version`),s=e.prerelease?Qt(e.prerelease):[],o=e.buildmetadata?nn(e.buildmetadata):[];return{major:r,minor:n,patch:i,prerelease:s,build:o}}function F_(t,e){let r=t.operator,n=e.operator;if(r===void 0)return Wn(t)?!0:wu(t,[[e]]);if(n===void 0)return Wn(e)?!0:wu(e,[[t]]);let i=er(t,e);return(r===">="||r===">")&&(n===">="||n===">")||(r==="<="||r==="<")&&(n==="<="||n==="<")||i===0&&((r===">="||r==="<=")&&(n===">="||n==="<="))||i===-1&&(r===">="||r===">")&&(n==="<="||n==="<")||i===1&&(r==="<="||r==="<")&&(n===">="||n===">")}function T4(t){return t.every(e=>e.some(r=>I4(r)))}function I4(t){for(let e=0;e<t.length-1;e++){let r=t[e];for(let n of t.slice(e+1))if(!F_(r,n))return!1}return!0}function R_(t,e){return T4([t,e])&&t.some(r=>e.some(n=>r.every(i=>n.every(s=>F_(i,s)))))}function k_(t){try{return lt(t),!0}catch{return!1}}function N_(t,e){return er(t,e)>=0}var eu=Ee(FS()),gb=Ee(fD()),y8=Ee(UA()),Xp=Ee(Wd());var ni={name:"@capgo/cli",version:"7.58.2",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh",test:"bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:credentials && bun run test:credentials-validation && bun run test:version-detection"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^24","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.27.0",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};async function Xd(t){try{let r=`https://registry.npmjs.org/${encodeURIComponent(t.toLowerCase())}`,n=await fetch(r,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});return n.ok&&(await n.json())["dist-tags"]?.latest||null}catch{return null}}async function Je(){let t=await Xd("@capgo/cli")??"",e=t?.split(".")[0];t!==ni.version&&g.warning(`\u{1F6A8} You are using @capgo/cli@${ni.version} it's not the latest version.
|
|
300
300
|
Please use @capgo/cli@${t}" or @capgo/cli@${e} to keep up to date with the latest features and bug fixes.`)}async function QT(t,e,r,n,i,s="\u2705"){await _e(r,{channel:t,event:n,icon:s,user_id:e,...i?{tags:{"app-id":i}}:{},notify:!1})}var Cw=require("node:buffer"),e1=require("node:crypto"),jY=(()=>{let t=[];for(let e=0;e<256;e++){let r=e;for(let n=0;n<8;n++)r=r&1?3988292384^r>>>1:r>>>1;t[e]=r}return t})();function MY(t){let e=4294967295;for(let r=0;r<t.length;r++){let n=t[r];e=jY[(e^n)&255]^e>>>8}return e=e^4294967295,(e>>>0).toString(16).padStart(8,"0")}async function ii(t,e="sha256"){let r=Cw.Buffer.isBuffer(t)?t:Cw.Buffer.from(t);if(e==="crc32")return MY(r);let n=(0,e1.createHash)(e);return n.update(r),n.digest("hex")}var al=Ee(bM());async function _M(){let t=await(0,al.loadConfig)();return{config:t.app.extConfig,path:t.app.extConfigFilePath}}async function KE(t,e,r=!1){let n=await(0,al.loadConfig)(),{extConfig:i}=n.app;i&&(i.plugins||(i.plugins={extConfig:{},[t]:{}}),i.plugins[t]||(i.plugins[t]={}),r?i=e.config:i.plugins[t]=e.config.plugins?.[t],(0,al.writeConfig)(i,n.app.extConfigFilePath))}async function Ya(t,e=!1){await KE("CapacitorUpdater",t,e)}var ru=".capgo_key",$r=".capgo_key_v2",Yp=`${ru}.pub`,Ei=`${$r}.pub`,l8="https://capgo.app",f8="https://files.capgo.app",d8="https://api.capgo.app",h8="https://console.capgo.app",yb=12e4,nfe=1024*1024*20,ife=1024*1024*1024,sfe=1024*1024*99,tu="package.json",nu=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-z-][0-9a-z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-z-][0-9a-z-]*))*))?(?:\+([0-9a-z-]+(?:\.[0-9a-z-]+)*))?$/i,W=t=>t?`
|
|
301
301
|
${y8.default.render(t)}`:"";function Gp(t){return new Promise(e=>{setTimeout(e,t)})}function Lr(t){return(0,os.isMonorepo)(t)?(0,os.findMonorepoRoot)(t):(0,os.isNXMonorepo)(t)?(0,os.findNXMonorepoRoot)(t):t}function ofe(t=Lr((0,Un.cwd)()),e=void 0){let r=e?.split(",")[0];if(r&&!(0,Te.existsSync)(r)){let i=`Package.json at ${r} does not exist`;throw g.error(i),new Error(i)}let n=(0,Te.readFileSync)(r??(0,xe.join)(t,tu));return JSON.parse(n)}function as(t=Lr((0,Un.cwd)()),e=void 0){return ofe(t,e).version??""}function p8(t){let e=t.replace("^","").replace("~","");if(k_(e))try{let r=lt(e);return sn(r)}catch{return e}return e}async function us(t,e=(0,Un.cwd)(),r){if(t!=="@capgo/capacitor-updater")return null;let n=r?(0,xe.dirname)(r):e;try{let u=`${t}/package.json`,{createRequire:c}=await import("node:module"),d=c((0,xe.join)(n,"package.json")).resolve(u),h=JSON.parse((0,Te.readFileSync)(d,"utf-8"));if(h.version)return h.version}catch{}let i=n,s=xe.default.parse(i).root;for(;i!==s;){let u=(0,xe.join)(i,"node_modules",t,tu);if((0,Te.existsSync)(u))try{let l=JSON.parse((0,Te.readFileSync)(u,"utf-8"));if(l.version)return l.version}catch{}let c=(0,xe.dirname)(i);if(c===i)break;i=c}let o=null,a=(0,xe.join)(e,"ios","App","Podfile");if((0,Te.existsSync)(a))try{let c=(0,Te.readFileSync)(a,"utf-8").match(/pod\s+['"]CapgoCapacitorUpdater['"],\s*:path\s*=>\s*['"]([^'"]+)['"]/);c?.[1]&&(o=(0,xe.resolve)((0,xe.join)(e,"ios","App",c[1])))}catch{}if(!o){let u=(0,xe.join)(e,"android","capacitor.settings.gradle");if((0,Te.existsSync)(u))try{let l=(0,Te.readFileSync)(u,"utf-8").match(/project\(':capgo-capacitor-updater'\)\.projectDir\s*=\s*new\s+File\(['"]([^'"]+)['"]/);l?.[1]&&(o=(0,xe.resolve)((0,xe.join)(e,"android",l[1])).replace(/\/android$/,""))}catch{}}if(o){let u=(0,xe.join)(o,tu);if((0,Te.existsSync)(u))try{let c=JSON.parse((0,Te.readFileSync)(u,"utf-8"));if(c.version)return c.version}catch{}}try{let c=(await Jp(e)).get(t);if(c)return c}catch{}return null}async function Jp(t=Lr((0,Un.cwd)()),e=void 0){let r=e?.split(",");if(r??=[(0,xe.join)(t,tu)],r){for(let i of r)if(!(0,Te.existsSync)(i)){let s=`Package.json at ${i} does not exist`;throw g.error(s),new Error(s)}}let n=new Map;for(let i of r){let s=(0,Te.readFileSync)(i),o=JSON.parse(s);for(let a in o.dependencies)n.set(a,p8(o.dependencies[a]));for(let a in o.devDependencies)n.set(a,p8(o.devDependencies[a]))}return n}async function he(){try{let t=await _M();if(!t){let e="No capacitor config file found, run `cap init` first";throw g.error(e),new Error(e)}return t}catch(t){let e=`No capacitor config file found, run \`cap init\` first ${W(t)}`;throw g.error(e),new Error(e)}}async function afe(t,e){let r=await he();return r?.config&&(r.config.plugins??={},r.config.plugins.extConfig??={},r.config.plugins[t]??={},r.config.plugins[t]={...r.config.plugins[t],...e},await KE(t,r)),r}async function D8(t){return afe("CapacitorUpdater",t)}async function Sn(){try{let t=await he(),e={host:t?.config?.plugins?.CapacitorUpdater?.localHost||l8,hostWeb:t?.config?.plugins?.CapacitorUpdater?.localWebHost||h8,hostFilesApi:t?.config?.plugins?.CapacitorUpdater?.localApiFiles||f8,hostApi:t?.config?.plugins?.CapacitorUpdater?.localApi||d8};return t?.config?.plugins?.CapacitorUpdater?.localSupa&&t?.config?.plugins?.CapacitorUpdater?.localSupaAnon&&(g.info("Using custom supabase instance from capacitor.config.json"),e.supaKey=t?.config?.plugins?.CapacitorUpdater?.localSupaAnon,e.supaHost=t?.config?.plugins?.CapacitorUpdater?.localSupa),e}catch{return{host:l8,hostWeb:h8,hostFilesApi:f8,hostApi:d8}}}var ufe=/([A-Za-z0-9]+)\.(java|swift|kt|scala)$/;async function Zp(){let t=await Sn();try{let e=await fetch(`${t.hostApi}/private/config`);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return{...await e.json(),...t}}catch{return g.info(`Local config ${W(t)}`),t}}async function w8(){let t=await Sn();try{let e=await fetch(`${t.hostFilesApi}/files/config`);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return await e.json()}catch{return{partialUpload:!1,TUSUpload:!1,partialUploadForced:!1,TUSUploadForced:!1,maxUploadLength:ife,maxChunkSize:sfe,alertUploadSize:nfe}}}async function pe(t,e,r){let n=await Zp();if(e&&r&&(g.info("Using custom supabase instance from provided options"),n.supaHost=e,n.supaKey=r),!n.supaHost||!n.supaKey)throw g.error("Cannot connect to server please try again later"),new Error("Cannot connect to server please try again later");return(0,eu.createClient)(n.supaHost,n.supaKey,{auth:{persistSession:!1},global:{headers:{capgkey:t}}})}async function cfe(t,e,r){let{data:n}=await t.rpc("is_allowed_capgkey",{apikey:e,keymode:r}).single();if(!n){g.error("Invalid API key or insufficient permissions.");let s=`Your key should be: ${r.map((o,a)=>r.length===1?`"${o}"`:a===r.length-1?`or "${o}"`:`"${o}", `).join("")} mode.`;throw g.error(s),new Error("Invalid API key or insufficient permissions.")}}async function v8(t,e){let{data:r}=await t.rpc("is_paying_org",{orgid:e}).single();return r||!1}async function E8(t,e){let{data:r}=await t.rpc("is_trial_org",{orgid:e}).single();return r||0}async function lfe(t,e){let{data:r}=await t.rpc("is_allowed_action_org",{orgid:e}).single();return!!r}async function ffe(t,e,r){let{data:n}=await t.rpc("is_allowed_action",{apikey:r,appid:e}).single();return!!n}var hr=(o=>(o[o.none=0]="none",o[o.read=1]="read",o[o.upload=2]="upload",o[o.write=3]="write",o[o.admin=4]="admin",o[o.super_admin=5]="super_admin",o))(hr||{}),iu=(t,e)=>t>=e;async function b8(t,e,r){let{data:n,error:i}=await t.rpc("get_org_perm_for_apikey",{apikey:e,app_id:r}).single();if(i)throw g.error("Cannot get permissions for organization!"),console.error(i),new Error("Cannot get permissions for organization");if(n.includes("perm")){let a=null;switch(n){case"perm_none":{a=0;break}case"perm_read":{a=1;break}case"perm_upload":{a=2;break}case"perm_write":{a=3;break}case"perm_admin":{a=4;break}case"perm_owner":{a=5;break}default:throw n.includes("invite")?(g.info("Please accept/deny the organization invitation before trying to access the app"),new Error("Organization invitation pending")):(g.error(`Invalid output when fetching organization permission. Response: ${n}`),new Error(`Invalid output when fetching organization permission. Response: ${n}`))}return{okay:!0,data:a}}let o=null;switch(n){case"INVALID_APIKEY":{o="INVALID_APIKEY";break}case"NO_APP":{o="NO_APP";break}case"NO_ORG":{o="NO_ORG";break}default:throw g.error(`Invalid error when fetching organization permission. Response: ${n}`),new Error(`Invalid error when fetching organization permission. Response: ${n}`)}return{okay:!1,error:o}}async function _8(t,e,r){let{data:n,error:i}=await t.rpc("get_organization_cli_warnings",{orgid:e,cli_version:r});if(i){g.error(`Cannot get cli warnings: ${W(i)}`);return}if(n.length>0){g.warn(`Found ${n.length} cli warnings for your organization.`);let s=null;for(let o of n){if(typeof o!="object"||typeof o.message!="string"||typeof o.fatal!="boolean"){g.error(`Invalid cli warning: ${o}`);continue}let a=o;a.fatal?(g.error(`${a.message.replaceAll("\\n",`
|
|
302
302
|
`)}`),s=new Error(a.message)):g.warn(`${a.message.replaceAll("\\n",`
|
|
@@ -337,7 +337,7 @@ ${W(s)}`),new Error(`Cannot retrieve unknown version for app ${e}: ${W(s)}`)}fun
|
|
|
337
337
|
`).eq("app_id",e).order("created_at",{ascending:!1});if(i)throw r||g.error(`App ${e} not found in database`),new Error(`App ${e} not found in database: ${W(i)}`);return n}async function bb(t,e,r,n={}){let{silent:i=!1}=n,{error:s}=await t.from("app_versions").update({deleted:!0}).eq("app_id",e).eq("deleted",!1).eq("name",r);if(s){let o=`App version ${e}@${r} not found in database`;throw i||g.error(o),new Error(`${o}: ${W(s)}`)}}async function nm(t,e,r,n={}){let{silent:i=!1,autoUnlink:s=!1}=n,o=await gfe(t,e,r,{silent:i});await L8(t,e,o,{silent:i,autoUnlink:s}),await bb(t,e,r,{silent:i})}function z8(t,e=!1){if(e)return;if(!t.length)throw new Error("No bundle found");let r=new zt;r.theme=zt.roundTheme,r.headers=["Version","Created","Keep"],r.rows=[];for(let n of t.toReversed())r.rows.push([n.name,ou(n.created_at),n.keep??""]);g.success("Bundles"),g.success(r.toString())}async function im(t,e,r={}){let{silent:n=!1}=r,{data:i,error:s}=await t.from("app_versions").select().eq("app_id",e).eq("deleted",!1).order("created_at",{ascending:!1});if(s){let o=`App ${e} not found in database`;throw n||g.error(o),new Error(`${o}: ${W(s)}`)}return i??[]}async function K8(t,e,r={}){let{silent:n=!1}=r,{data:i,error:s}=await t.from("channels").select("version").eq("app_id",e);if(s){let o=`App ${e} not found in database`;throw n||g.error(o),new Error(`${o}: ${W(s)}`)}return(i??[]).map(o=>o.version)}async function gfe(t,e,r,n={}){let{silent:i=!1}=n,{data:s,error:o}=await t.from("app_versions").select().eq("app_id",e).eq("name",r).eq("deleted",!1).single();if(!s||o){let a=`App version ${e}@${r} doesn't exist`;throw i||g.error(a),new Error(`${a}${o?`: ${W(o)}`:""}`)}return s}var au=require("node:fs");async function G8(t,e){let{data:r}=await t.rpc("exist_app_v2",{appid:e}).single();return!!r}async function Et(t,e,r,n,i=!1){let s=qn(),o=await b8(t,e,r);if(!o.okay)switch(o.error){case"INVALID_APIKEY":{let c="Invalid apikey, such apikey does not exists!";throw i||g.error(c),new Error(c)}case"NO_APP":{let c=`App ${r} does not exist, run first \`${s.runner} @capgo/cli app add ${r}\` to create it`;throw i||g.error(c),new Error(c)}case"NO_ORG":{let c="Could not find organization, please contact support to resolve this!";throw i||g.error(c),new Error(c)}}let a=o.data;if(n>a){let c=`Insuficcent permissions for app ${r}. Current permission: ${hr[o.data]}, required for this action: ${hr[n]}.`;throw i||g.error(c),new Error(c)}return o.data}var Qr="assets/icon.png";var yfe=/^[a-z0-9]+(\.[\w-]+)+$/i;function Dfe(t,e,r){if(!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(t.includes("--"))throw r||g.error('The app id includes illegal symbols. You cannot use "--" in the app id'),new Error("App id includes illegal symbols");if(!yfe.test(t))throw r||(g.error(`Invalid app ID format: "${t}"`),g.info("App ID must be in reverse domain notation (e.g., com.example.app)"),g.info("Valid format: lowercase letters, numbers, dots, hyphens, and underscores"),g.info("Examples: com.mycompany.myapp, io.capgo.app, com.example.my-app")),new Error("Invalid app ID format")}async function wfe(t,e,r){if(await G8(t,e))throw e==="io.ionic.starter"?(r||g.error(`This appId ${e} cannot be used it's reserved, please change it in your capacitor config.`),new Error("Reserved appId, please change it in capacitor config")):(r||g.error(`App ${e} already exist`),new Error(`App ${e} already exists`))}async function W8(t,e,r,n=!1){n||ae("Adding"),await Je(),e.apikey=e.apikey||re();let i=await he(),s=Be(t,i?.config);Dfe(s,e,n);let o=await pe(e.apikey,e.supaHost,e.supaAnon),a=await De(o,e.apikey,["write","all"]);await wfe(o,s,n),r||(r=await tm(o,["admin","super_admin"]));let u=r.gid,{name:c,icon:l}=e;if(c=c||i.config?.appName||"Unknown",l=l||"resources/icon.png",!l||!c)throw n||g.error("Missing argument, you need to provide a appId and a name, or be in a capacitor project"),new Error("Missing app name or icon path");n||g.info(`Adding ${s} to Capgo`);let d=null,h=null;l&&(0,au.existsSync)(l)?(d=(0,au.readFileSync)(l),h=su(l)||"image/png",n||g.warn(`Found app icon ${l}`)):(0,au.existsSync)(Qr)?(d=(0,au.readFileSync)(Qr),h=su(Qr)||"image/png",n||g.warn(`Found app icon ${Qr}`)):n||g.warn(`Cannot find app icon in any of the following locations: ${l}, ${Qr}`);let f="icon",p="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(d&&h){let{error:v}=await o.storage.from(`images/org/${u}/${s}`).upload(f,d,{contentType:h});if(v)throw n||console.error(v),n||g.error(`Could not add app ${W(v)}`),new Error(`Could not add app ${W(v)}`);let{data:E}=await o.storage.from(`images/org/${u}/${s}`).getPublicUrl(f);p=E?.publicUrl||p}let{error:y}=await o.from("apps").insert({icon_url:p,owner_org:u,user_id:a,name:c,app_id:s});if(y)throw n||g.error(`Could not add app ${W(y)}`),new Error(`Could not add app ${W(y)}`);return n||(g.success(`App ${s} added to Capgo. You can upload a bundle now`),le("Done \u2705")),{appId:s,organizationUid:u,userId:a,name:c,signedURL:p}}async function X8(t,e,r=!1,n=!1){r||ae("Deleting"),e.apikey=e.apikey||re();let i=await he(),s=Be(t,i?.config);if(!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!s)throw r||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let o=await pe(e.apikey,e.supaHost,e.supaAnon),a=await De(o,e.apikey,["write","all"]);await Et(o,e.apikey,s,5,r);let{data:u,error:c}=await o.from("apps").select("owner_org ( created_by, id )").eq("app_id",s).single(),l=u;if(!n&&!c&&(l?.owner_org.created_by??"")!==a){if(r)throw new Error("Cannot delete app: you are not the organization owner");{g.warn("Deleting the app is not recommended for users that are not the organization owner"),g.warn("You are invited as a super_admin but your are not the owner"),g.warn("It's strongly recommended that you do not continue!");let y=await gn({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(Ke(y)||y==="no")throw g.error("Canceled deleting the app, exiting"),new Error("App deletion cancelled")}}else c&&!r&&g.warn(`Cannot get the app owner ${W(c)}`);let{error:d}=await o.storage.from("images").remove([`org/${l?.owner_org.id}/${s}/icon`]);d&&!r&&g.error("Could not delete app logo");let{error:h}=await o.storage.from(`apps/${s}/${a}`).remove(["versions"]);h&&!r&&g.error("Could not delete app version");let{error:f}=await o.from("apps").delete().eq("app_id",s);if(f)throw r||g.error("Could not delete app"),new Error(`Could not delete app: ${W(f)}`);let p=await Rr(o,s);return await _e(e.apikey,{channel:"app",event:"App Deleted",icon:"\u{1F5D1}\uFE0F",user_id:p,tags:{"app-id":s},notify:!1}).catch(()=>{}),r||(g.success("App deleted in Capgo"),le("Done \u2705")),!0}var sm=require("node:os"),J8=require("node:process");async function Y8(t){let e={},r=Object.keys(t);return(await Promise.all(r.map(i=>Xd(i)))).forEach((i,s)=>{i&&(e[r[s]]=i)}),e}async function vfe(){let t=await Jp(),e={"@capgo/cli":ni.version};for(let[r,n]of t)(r.startsWith("@capgo/")||r.startsWith("@capawesome/")||r.startsWith("capacitor"))&&(e[r]=n);return e}async function Z8(t,e=!1){e||g.warn(" \u{1F48A} Capgo Doctor \u{1F48A}");let r=await he(),n=as("",t.packageJson),i=r?.config?.plugins?.CapacitorUpdater?.version||n,s=r?.config?.appName||"",o=Be("",r?.config),a=r?.config?.webDir||"";e||(g.info(` App Name: ${s}`),g.info(` App ID: ${o}`),g.info(` App Version: ${i}`),g.info(` Web Dir: ${a}`),g.info(` OS: ${(0,sm.platform)()} ${(0,sm.version)()}`),g.info(` Node: ${J8.version}`),g.info(" Installed Dependencies:"));let u=await vfe();if(Object.keys(u).length===0)throw e||g.warning("\x1B[31m%s\x1B[0m \u{1F6A8} No dependencies found"),new Error("No dependencies found");if(!e)for(let l of Object.keys(u))g.info(` ${l}: ${u[l]}`);let c={};if(e)c=await Y8(u);else{let l=xt();l.start("Running: Loading latest dependencies"),c=await Y8(u),l.stop("Latest Dependencies:");for(let d of Object.keys(c))g.info(` ${d}: ${c[d]}`)}if(JSON.stringify(u)!==JSON.stringify(c))throw e||g.warn("\x1B[31m\u{1F6A8} Some dependencies are not up to date\x1B[0m"),new Error("Some dependencies are not up to date");return e||g.success("\x1B[32m\u2705 All dependencies are up to date\x1B[0m"),{appName:s,appId:o,appVersion:i,webDir:a,installedDependencies:u,latestDependencies:c}}function Efe(t){let e=new zt;e.headers=["Name","id","Created"],e.rows=[];for(let r of t.toReversed())e.rows.push([r.name??"",r.app_id,ou(r.created_at)]);g.success("Apps"),g.success(e.toString())}async function bfe(t,e){let{data:r,error:n}=await t.from("apps").select().order("created_at",{ascending:!1});if(n)throw e||g.error("Apps not found"),new Error("Apps not found");return r??[]}async function Q8(t,e=!1){e||ae("List apps in Capgo"),await Je(),t.apikey=t.apikey||re();let r=await pe(t.apikey,t.supaHost,t.supaAnon);await De(r,t.apikey,["write","all","read","upload"]),e||g.info("Getting active bundle in Capgo");let n=await bfe(r,e);if(!n.length)throw e||g.error("No apps found"),new Error("No apps found");return e||(g.info(`Active app in Capgo: ${n.length}`),Efe(n),le("Done \u2705")),n}var e6=require("node:crypto"),uu=require("node:fs");async function t6(t,e,r=!1){r||ae("Set app"),e.apikey=e.apikey||re();let n=await he();if(t=Be(t,n?.config),!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let i=await pe(e.apikey,e.supaHost,e.supaAnon),o=(await tm(i,["admin","super_admin"])).gid,a=await De(i,e.apikey,["write","all"]);await Et(i,e.apikey,t,4,r);let{name:u,icon:c,retention:l,exposeMetadata:d}=e;if(l&&Number.isNaN(Number(l)))throw r||g.error("retention value must be a number"),new Error("Retention value must be a number");if(l&&l<0)throw r||g.error("retention value cannot be less than 0"),new Error("Retention value cannot be less than 0");if(l&&l>=63113904)throw r||g.error("retention value cannot be greater than 63113904 seconds (2 years)"),new Error("Retention value cannot be greater than 63113904 seconds (2 years)");let h,f,p=`icon_${(0,e6.randomUUID)()}`,y="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(c&&(0,uu.existsSync)(c)?(h=(0,uu.readFileSync)(c),f=su(c)||"image/png",r||g.warn(`Found app icon ${c}`)):(0,uu.existsSync)(Qr)?(h=(0,uu.readFileSync)(Qr),f=su(Qr)||"image/png",r||g.warn(`Found app icon ${Qr}`)):r||g.warn(`Cannot find app icon in any of the following locations: ${c}, ${Qr}`),h&&f){let{error:E}=await i.storage.from(`images/org/${o}/${t}`).upload(p,h,{contentType:f});if(E)throw r||g.error(`Could not set app ${W(E)}`),new Error(`Could not set app: ${W(E)}`);let{data:A}=await i.storage.from(`images/org/${o}/${t}`).getPublicUrl(p);y=A?.publicUrl||y}let{error:v}=await i.from("apps").update({icon_url:y,name:u,retention:l?l*24*60*60:void 0,expose_metadata:d}).eq("app_id",t).eq("user_id",a);if(v)throw r||g.error(`Could not set app ${W(v)}`),new Error(`Could not set app: ${W(v)}`);return r||le("Done \u2705"),!0}async function r6(t,e,r=!1){if(r||ae("Set a specific setting in capacitor config"),e.bool&&e.string)throw r||g.error("Bool and string CANNOT be set at the same time"),new Error("Bool and string cannot both be provided");if(!e.bool&&!e.string)throw r||g.error("You MUST provide either bool or string as the value"),new Error("Either bool or string value is required");if(e.bool&&e.bool!=="true"&&e.bool!=="false")throw r||g.error("Invalid bool"),new Error("Invalid bool value; expected true or false");try{let n=await he(),i=n.config,s=t.split(".");if(s.length===0)throw r||g.error("Invalid path"),new Error("Invalid config path");for(let a of s.slice(0,-1))Object.prototype.hasOwnProperty.call(i,a)||(i[a]={}),i=i[a];let o=e.bool?e.bool==="true":e.string;i[s.at(-1)]=o,await Ya(n,!0),r||g.success(`Set "${t}" to "${o}"`)}catch(n){throw r||g.error(`Cannot set config in capacitor settings ${W(n)}`),new Error(`Cannot set capacitor config: ${W(n)}`)}r||le("Done \u2705")}var Hn=require("node:fs"),en=require("node:fs/promises"),o6=require("node:os"),tn=require("node:path"),Cb=require("node:process");var a6=Ee(fD()),um=Ee(Wd());var om=require("node:fs/promises"),n6=require("node:os"),am=require("node:path"),Ie=require("node:process"),_fe=(0,am.join)((0,n6.homedir)(),".capgo-credentials"),Cfe=(0,am.join)(_fe,"credentials.json"),Sfe=".capgo-credentials.json";function Afe(t){return t?(0,am.join)((0,Ie.cwd)(),Sfe):Cfe}async function _b(t){try{let e=Afe(t),r=await(0,om.readFile)(e,"utf-8");return JSON.parse(r)}catch{return{}}}async function Ofe(t,e){if(e!==void 0){let i=await _b(e);if(!t){let s=Object.keys(i);return s.length===0?null:i[s[0]]||null}return i[t]||null}let r=await _b(!0),n=await _b(!1);if(!t){let i=Object.keys(r);if(i.length>0)return r[i[0]]||null;let s=Object.keys(n);return s.length===0?null:n[s[0]]||null}return r[t]||n[t]||null}function xfe(){let t={};return Ie.env.BUILD_CERTIFICATE_BASE64&&(t.BUILD_CERTIFICATE_BASE64=Ie.env.BUILD_CERTIFICATE_BASE64),Ie.env.BUILD_PROVISION_PROFILE_BASE64&&(t.BUILD_PROVISION_PROFILE_BASE64=Ie.env.BUILD_PROVISION_PROFILE_BASE64),Ie.env.BUILD_PROVISION_PROFILE_BASE64_PROD&&(t.BUILD_PROVISION_PROFILE_BASE64_PROD=Ie.env.BUILD_PROVISION_PROFILE_BASE64_PROD),Ie.env.P12_PASSWORD&&(t.P12_PASSWORD=Ie.env.P12_PASSWORD),Ie.env.APPLE_KEY_ID&&(t.APPLE_KEY_ID=Ie.env.APPLE_KEY_ID),Ie.env.APPLE_ISSUER_ID&&(t.APPLE_ISSUER_ID=Ie.env.APPLE_ISSUER_ID),Ie.env.APPLE_KEY_CONTENT&&(t.APPLE_KEY_CONTENT=Ie.env.APPLE_KEY_CONTENT),Ie.env.APPLE_PROFILE_NAME&&(t.APPLE_PROFILE_NAME=Ie.env.APPLE_PROFILE_NAME),Ie.env.APP_STORE_CONNECT_TEAM_ID&&(t.APP_STORE_CONNECT_TEAM_ID=Ie.env.APP_STORE_CONNECT_TEAM_ID),Ie.env.ANDROID_KEYSTORE_FILE&&(t.ANDROID_KEYSTORE_FILE=Ie.env.ANDROID_KEYSTORE_FILE),Ie.env.KEYSTORE_KEY_ALIAS&&(t.KEYSTORE_KEY_ALIAS=Ie.env.KEYSTORE_KEY_ALIAS),Ie.env.KEYSTORE_KEY_PASSWORD&&(t.KEYSTORE_KEY_PASSWORD=Ie.env.KEYSTORE_KEY_PASSWORD),Ie.env.KEYSTORE_STORE_PASSWORD&&(t.KEYSTORE_STORE_PASSWORD=Ie.env.KEYSTORE_STORE_PASSWORD),Ie.env.PLAY_CONFIG_JSON&&(t.PLAY_CONFIG_JSON=Ie.env.PLAY_CONFIG_JSON),t}async function i6(t,e,r){let n=await Ofe(t),i=xfe(),s={...n?.[e]||{}};if(Object.assign(s,i),r&&Object.assign(s,r),e==="android"){let o=!!s.KEYSTORE_KEY_PASSWORD,a=!!s.KEYSTORE_STORE_PASSWORD;o&&!a?s.KEYSTORE_STORE_PASSWORD=s.KEYSTORE_KEY_PASSWORD:!o&&a&&(s.KEYSTORE_KEY_PASSWORD=s.KEYSTORE_STORE_PASSWORD)}return Object.keys(s).length>0?s:void 0}async function Tfe(t,e,r,n,i,s=!1){if(i)return null;let o=null,a=!1,u=`${t}/build/logs/${e}?app_id=${encodeURIComponent(r)}`;g.info(`Connecting to log stream: ${u}`);try{let c=await fetch(u,{headers:{authorization:n}});if(g.info(`Log stream response: ${c.status}`),!c.ok){let p=await c.text().catch(()=>"unknown error");return g.warn(`Could not stream logs (${c.status}): ${p}`),null}let l=c.body?.getReader();if(!l)return g.warn("No response body for log stream"),null;g.info("Reading log stream...");let d=new TextDecoder,h="",f=p=>{if(!p.trim())return;let y=p.match(/^(?:Build|Job already) (succeeded|failed|expired|released|cancelled)$/i);if(y){o=y[1].toLowerCase();return}o||(a||(a=!0,g.info("")),g.info(p))};for(;;){let{done:p,value:y}=await l.read();if(p)break;h+=d.decode(y,{stream:!0});let v=h.split(`
|
|
338
338
|
`);h=v.pop()||"";for(let E of v)if(E.startsWith("data: ")){let A=E.slice(6);f(A)}}if(h.startsWith("data: ")){let p=h.slice(6);f(p)}return o}catch(c){return i||g.warn(`Log streaming interrupted${c instanceof Error?`: ${c.message}`:""}`),null}}async function Ife(t,e,r,n,i,s){let a=0;for(;a<120;)try{let u=await fetch(`${t}/build/status?job_id=${encodeURIComponent(e)}&app_id=${encodeURIComponent(r)}&platform=${n}`,{headers:{authorization:i}});if(!u.ok){s||g.warn(`Status check failed: ${u.status}`),await new Promise(l=>setTimeout(l,5e3)),a++;continue}let c=await u.json();if(c.status==="succeeded"||c.status==="failed")return c.status;await new Promise(l=>setTimeout(l,5e3)),a++}catch(u){s||g.warn(`Status check error: ${u}`),await new Promise(c=>setTimeout(c,5e3)),a++}return s||g.warn("Build status polling timed out"),"timeout"}async function Pfe(t,e){let r=new Set,n=!1;if(e==="ios"){let i=(0,tn.join)(t,"ios/App/CapApp-SPM/Package.swift");if((0,Hn.existsSync)(i)){n=!0;let o=(await(0,en.readFile)(i,"utf-8")).matchAll(/\.package\s*\([^)]*path:\s*["'](?:\.\.\/)*node_modules\/([^"']+)["']\s*\)/g);for(let a of o)r.add(a[1])}else{let s=(0,tn.join)(t,"ios/App/Podfile");if((0,Hn.existsSync)(s)){let a=(await(0,en.readFile)(s,"utf-8")).matchAll(/pod\s+['"][^'"]+['"],\s*:path\s*=>\s*['"]\.\.\/\.\.\/node_modules\/([^'"]+)['"]/g);for(let u of a)r.add(u[1])}}}else if(e==="android"){let i=(0,tn.join)(t,"android/capacitor.settings.gradle");if((0,Hn.existsSync)(i)){let o=(await(0,en.readFile)(i,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let a of o){let c=a[1].replace(/\/android$/,"");r.add(c)}}}return{packages:r,usesSPM:n}}function s6(t,e,r){let n=t.replace(/\\/g,"/");if(n.startsWith(`${e}/`)||n==="package.json"||n==="package-lock.json"||n.startsWith("capacitor.config.")||n.startsWith("resources/")||e==="ios"&&n.startsWith("node_modules/@capacitor/ios/")||e==="android"&&n.startsWith("node_modules/@capacitor/android/"))return!0;for(let i of r.packages){let s=`node_modules/${i}/`;if(e==="android"){if(n.startsWith(`${s}android/`))return!0}else if(e==="ios"){if(n.startsWith(`${s}ios/`))return!0;if(r.usesSPM){if(n===`${s}Package.swift`)return!0}else if(n.startsWith(s)&&n.endsWith(".podspec"))return!0}}return!1}function dl(t,e,r,n,i){let s=(0,Hn.readdirSync)(e);for(let o of s){let a=(0,tn.join)(e,o),u=r?`${r}/${o}`:o,c=(0,Hn.statSync)(a);if(c.isDirectory()){if(o===".git"||o==="dist"||o==="build"||o===".angular"||o===".vite"||o===".gradle"||o===".idea"||o===".swiftpm")continue;if(o===n){dl(t,a,u,n,i);continue}if(o==="node_modules"){dl(t,a,u,n,i);continue}if(o==="resources"){dl(t,a,u,n,i);continue}let l=u.replace(/\\/g,"/");(s6(u,n,i)||Array.from(i.packages).some(h=>`node_modules/${h}/`.startsWith(`${l}/`)||l.startsWith(`node_modules/${h}`)))&&dl(t,a,u,n,i)}else if(c.isFile()){if(o===".DS_Store"||o.endsWith(".log"))continue;s6(u,n,i)&&t.addLocalFile(a,r||void 0)}}}async function Ffe(t,e,r){let n=await Pfe(t,r),i=new a6.default;dl(i,t,"",r,n),await(0,en.writeFile)(e,i.toBuffer())}async function u6(t,e,r=!1){let n=Date.now(),i=e.verbose??!1;try{e.apikey=e.apikey||re(r);let s=await he();if(t=t||s?.config.appId,!t)throw new Error("Missing argument, you need to provide a appId, or be in a capacitor project");if(!e.platform)throw new Error("Missing required argument: --platform <ios|android>");if(e.platform!=="ios"&&e.platform!=="android")throw new Error(`Invalid platform "${e.platform}". Must be "ios" or "android"`);let o=(0,tn.resolve)(e.path||(0,Cb.cwd)()),a=e.supaHost||"https://api.capgo.app",u=await pe(e.apikey,e.supaHost,e.supaAnon);await De(u,e.apikey,["write","all"]);let c=await Rr(u,t);r||(g.info(`Requesting native build for ${t}`),g.info(`Platform: ${e.platform}`),g.info(`Project: ${o}`),g.info(`
|
|
339
339
|
\u{1F512} Security: Credentials are never stored on Capgo servers`),g.info(" They are used only during build and deleted after"),g.info(` Builds sent directly to app stores - Capgo keeps nothing
|
|
340
|
-
`)),i&&g.info(`API host: ${a}`);let l={};e.buildCertificateBase64&&(l.BUILD_CERTIFICATE_BASE64=e.buildCertificateBase64),e.buildProvisionProfileBase64&&(l.BUILD_PROVISION_PROFILE_BASE64=e.buildProvisionProfileBase64),e.buildProvisionProfileBase64Prod&&(l.BUILD_PROVISION_PROFILE_BASE64_PROD=e.buildProvisionProfileBase64Prod),e.p12Password&&(l.P12_PASSWORD=e.p12Password),e.appleKeyId&&(l.APPLE_KEY_ID=e.appleKeyId),e.appleIssuerId&&(l.APPLE_ISSUER_ID=e.appleIssuerId),e.appleKeyContent&&(l.APPLE_KEY_CONTENT=e.appleKeyContent),e.appleProfileName&&(l.APPLE_PROFILE_NAME=e.appleProfileName),e.appStoreConnectTeamId&&(l.APP_STORE_CONNECT_TEAM_ID=e.appStoreConnectTeamId),e.androidKeystoreFile&&(l.ANDROID_KEYSTORE_FILE=e.androidKeystoreFile),e.keystoreKeyAlias&&(l.KEYSTORE_KEY_ALIAS=e.keystoreKeyAlias);let d=!!e.keystoreKeyPassword,h=!!e.keystoreStorePassword;d&&!h?(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreKeyPassword):!d&&h?(l.KEYSTORE_KEY_PASSWORD=e.keystoreStorePassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword):d&&h&&(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword),e.playConfigJson&&(l.PLAY_CONFIG_JSON=e.playConfigJson);let f=await i6(t,e.platform,Object.keys(l).length>0?l:void 0),p={app_id:t,platform:e.platform};if(!f)throw r||(g.error("\u274C No credentials found for this app and platform"),g.error(""),g.error("You must provide credentials via:"),g.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),g.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),g.error(" 3. Saved credentials file:"),g.error(` npx @capgo/cli build credentials save --appId ${t} --platform ${e.platform}`),g.error(""),g.error("Documentation:"),g.error(" https://capgo.app/docs/cli/cloud-build/credentials/")),new Error("No credentials found. Please provide credentials before building.");let y=[];if(e.platform==="ios"?(f.BUILD_CERTIFICATE_BASE64||y.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)"),!f.P12_PASSWORD&&!r&&(g.warn("\u26A0\uFE0F P12_PASSWORD not provided - assuming certificate has no password"),g.warn(" If your certificate requires a password, provide it with --p12-password")),f.BUILD_PROVISION_PROFILE_BASE64||y.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)"),f.APPLE_KEY_ID||y.push("APPLE_KEY_ID (or --apple-key-id)"),f.APPLE_ISSUER_ID||y.push("APPLE_ISSUER_ID (or --apple-issuer-id)"),f.APPLE_KEY_CONTENT||y.push("APPLE_KEY_CONTENT (or --apple-key-content)"),f.APP_STORE_CONNECT_TEAM_ID||y.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")):e.platform==="android"&&(f.ANDROID_KEYSTORE_FILE||y.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)"),f.KEYSTORE_KEY_ALIAS||y.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)"),!f.KEYSTORE_KEY_PASSWORD&&!f.KEYSTORE_STORE_PASSWORD&&y.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)"),!f.PLAY_CONFIG_JSON&&!r&&g.warn("\u26A0\uFE0F PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")),y.length>0){if(!r){g.error(`\u274C Missing required credentials for ${e.platform}:`),g.error("");for(let D of y)g.error(` \u2022 ${D}`);g.error(""),g.error("Provide credentials via:"),g.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),g.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),g.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),g.error(""),g.error("Documentation:"),g.error(` https://capgo.app/docs/cli/cloud-build/${e.platform}/`)}throw new Error(`Missing required credentials for ${e.platform}: ${y.join(", ")}`)}if(p.credentials=f,r||g.info("\u2713 Using credentials (merged from CLI args, env vars, and saved file)"),i){let D=Object.keys(f).filter(w=>f[w]);g.info(`Credentials provided: ${D.join(", ")}`)}r||g.info("Requesting build from Capgo...");let v=await fetch(`${a}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify(p)});if(!v.ok){let D=await v.text();throw new Error(`Failed to request build: ${v.status} - ${D}`)}let E=await v.json();r||(g.success(`Build job created: ${E.job_id}`),g.info(`Status: ${E.status}`)),i&&(g.info(`Upload URL: ${E.upload_url}`),g.info(`Upload expires: ${E.upload_expires_at}`)),await _e(e.apikey,{channel:"native-builder",event:"Build requested",icon:"\u{1F3D7}\uFE0F",user_id:c,tags:{"app-id":t,platform:e.platform},notify:!1}).catch();let A=(0,tn.join)((0,o6.tmpdir)(),`capgo-build-${Date.now()}`);await(0,en.mkdir)(A,{recursive:!0});let m=(0,tn.join)(A,`${(0,tn.basename)(o)}.zip`);try{r||g.info(`Zipping ${e.platform} project from ${o}...`),await Ffe(o,m,e.platform);let w=((await(0,en.stat)(m)).size/1024/1024).toFixed(2);r||g.success(`Created zip: ${m} (${w} MB)`),r||g.info("Uploading to builder..."),i&&(g.info(`Upload endpoint: ${E.upload_url}`),g.info(`File size: ${w} MB`),g.info(`Job ID: ${E.job_id}`));let S=(0,Hn.readFileSync)(m),R=xt();r||R.start("Uploading bundle"),await new Promise((j,z)=>{let L=new um.Upload(S,{endpoint:E.upload_url,chunkSize:5242880,metadata:{filename:(0,tn.basename)(m),filetype:"application/zip"},headers:{authorization:e.apikey},onBeforeRequest(b){if(i){g.info(`[TUS] ${b.getMethod()} ${b.getURL()}`);let T=b.getHeader("authorization");g.info(`[TUS] Authorization header present: ${!!T}`)}},onAfterResponse(b,T){if(i){g.info(`[TUS] Response status: ${T.getStatus()}`);let P=T.getHeader("upload-offset"),$=T.getHeader("tus-resumable");g.info(`[TUS] Upload-Offset: ${P}, Tus-Resumable: ${$}`)}},onError(b){if(r||(R.stop("Upload failed"),g.error(`Upload error: ${b.message}`)),b instanceof um.DetailedError){let T=b.originalResponse?.getBody(),P=b.originalResponse?.getStatus(),$=b.originalRequest?.getURL();i&&(g.error(`[TUS] Request URL: ${$}`),g.error(`[TUS] Response status: ${P}`),g.error(`[TUS] Response body: ${T}`));let q="Unknown error";try{let M=JSON.parse(T||'{"error": "unknown error"}');q=M.status||M.error||M.message||"unknown error"}catch{q=T||b.message}z(new Error(`TUS upload failed: ${q}`))}else z(new Error(`TUS upload failed: ${b.message||b.toString()}`))},onProgress(b,T){let P=(b/T*100).toFixed(2);r||R.message(`Uploading ${P}%`)},onSuccess(){r||R.stop("Upload complete!"),i&&g.success("TUS upload completed successfully"),j()}});i&&g.info("[TUS] Starting upload..."),L.start()}),r||g.info("Starting build job...");let _=await fetch(`${a}/build/start/${E.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify({app_id:t})});if(!_.ok){let j=await _.text();throw new Error(`Failed to start build: ${_.status} - ${j}`)}let k=await _.json();r||(g.success("Build started!"),g.info("Streaming build logs..."));let F,I=await Tfe(a,E.job_id,t,e.apikey,r,i);I?F=I:F=await Ife(a,E.job_id,t,e.platform,e.apikey,r),r||(F==="succeeded"?g.success("Build completed successfully!"):F==="failed"?g.error("Build failed"):g.warn(`Build finished with status: ${F}`));let B=((Date.now()-n)/1e3).toFixed(2);return await _e(e.apikey,{channel:"native-builder",event:F==="succeeded"?"Build succeeded":"Build failed",icon:F==="succeeded"?"\u2705":"\u274C",user_id:c,tags:{"app-id":t,platform:e.platform,status:F||"unknown",time:B},notify:!1}).catch(),{success:F==="succeeded",jobId:E.job_id,uploadUrl:E.upload_url,status:F||k.status||E.status}}finally{await(0,en.rm)(A,{recursive:!0,force:!0})}}catch(s){let o=s instanceof Error?s.message:String(s);return r||g.error(o),{success:!1,error:o}}}async function Rfe(t,e,r,n){for await(let i of t)n||g.warn(`Removing ${i.name} created on ${ou(i.created_at)}`),await nm(e,r,i.name)}function kfe(t,e,r){let n=[];for(let i of t??[]){let s=lt(i.name);Ym(s,e)&&ps(s,r)&&n.push(i)}return n}async function c6(t,e,r=!1){r||ae("Cleanup versions in Capgo"),await Je(),e.apikey=e.apikey||re();let{bundle:n,keep:i=4}=e,s=e.force||!1,o=e.ignoreChannel||!1,a=await he();if(t=Be(t,a?.config),!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to delete your app"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let u=await pe(e.apikey,e.supaHost,e.supaAnon);await De(u,e.apikey,["write","all"]),await Et(u,e.apikey,t,3,r),r||g.info("Querying all available versions in Capgo");let c=await im(u,t),l=await K8(u,t);if(r||g.info(`Total active versions in Capgo: ${c?.length??0}`),!c?.length)throw r||g.error("No versions found, aborting cleanup"),new Error("No versions found");if(n){let f=lt(n),p=Eu(f,"major");r||g.info(`Querying available versions in Capgo between ${sn(f)} and ${sn(p)}`),c=kfe(c,f,p),r||g.info(`Active versions in Capgo between ${sn(f)} and ${sn(p)}: ${c?.length??0}`)}let d=[],h=0;for(let f of c){let p=l.find(y=>y===f.id);h<i||p&&!o?(f.keep=p?"\u2705 (Linked to channel)":"\u2705",h+=1):(f.keep="\u274C",d.push(f))}if(!d.length)return r||g.warn("Nothing to be removed, aborting removal..."),{removed:0,kept:h};if(r||z8(c),!s){if(r)throw new Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");{let f=await Pr({message:"Do you want to continue removing the versions specified?"});if(Ke(f)||!f)throw g.warn("Not confirmed, aborting removal..."),new Error("Cleanup cancelled by user")}}return r||g.success("You have confirmed removal, removing versions now"),await Rfe(d,u,t,r),r||le("Done \u2705"),{removed:d.length,kept:h}}async function l6(t,e,r=!1){r||ae("Check compatibility");let n={...e,apikey:e.apikey||re()},i=await he(),s=Be(t,i?.config),o=n.channel;if(!o)throw r||g.error("Missing argument, you need to provide a channel"),new Error("Missing channel");if(!n.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!s)throw r||g.error("Missing argument, you need to provide an appId, or be in a capacitor project"),new Error("Missing appId");let a=await pe(n.apikey,n.supaHost,n.supaAnon);await De(a,n.apikey,["write","all","read","upload"]),await Et(a,n.apikey,s,1,r);let u=await rm(a,s,o,n.packageJson,n.nodeModules);if(!r){let c=new zt;c.headers=["Package","Local version","Remote version","Compatible"],c.theme=zt.roundTheme,c.rows=[];let l=n.text?"Yes":"\u2705",d=n.text?"No":"\u274C";for(let h of u.finalCompatibility){let{name:f,localVersion:p,remoteVersion:y}=h,v=po(h)?l:d;c.rows.push([f,p,y,v])}g.success("Compatibility"),g.success(c.toString())}return{finalCompatibility:u.finalCompatibility}}var Ci=require("node:fs");var bi=require("node:buffer"),Ut=require("node:crypto"),d6="aes-128-cbc",_i="base64",f6="hex",hl=Ut.constants.RSA_PKCS1_PADDING;function cm(t){let e=(0,Ut.randomBytes)(16),r=(0,Ut.randomBytes)(16),n=e.toString(_i),i=(0,Ut.privateEncrypt)({key:t,padding:hl},r).toString(_i);return{sessionKey:r,ivSessionKey:`${n}:${i}`}}function cu(t,e,r){let[n]=r.split(":"),i=bi.Buffer.from(n,_i),s=(0,Ut.createCipheriv)(d6,e,i);return s.setAutoPadding(!0),bi.Buffer.concat([s.update(t),s.final()])}function h6(t,e,r){let[n,i]=e.split(":"),s=(0,Ut.publicDecrypt)({key:r,padding:hl},bi.Buffer.from(i,_i)),o=bi.Buffer.from(n,_i),a=(0,Ut.createDecipheriv)(d6,s,o);return a.setAutoPadding(!0),bi.Buffer.concat([a.update(t),a.final()])}function lu(t,e){return(0,Ut.privateEncrypt)({key:e,padding:hl},bi.Buffer.from(t,_i)).toString(_i)}function lm(t,e){return(0,Ut.privateEncrypt)({key:e,padding:hl},bi.Buffer.from(t,f6)).toString(f6)}function p6(t,e){return(0,Ut.publicDecrypt)({key:e,padding:hl},bi.Buffer.from(t,_i)).toString(_i)}function m6(){let{publicKey:t,privateKey:e}=(0,Ut.generateKeyPairSync)("rsa",{modulusLength:2048});return{publicKey:t.export({type:"pkcs1",format:"pem"}),privateKey:e.export({type:"pkcs1",format:"pem"})}}function g6(t){return t?t.replace(/-----BEGIN RSA PUBLIC KEY-----/g,"").replace(/-----END RSA PUBLIC KEY-----/g,"").replace(/\n/g,"").replace(/\r/g,"").replace(/ /g,"").substring(0,4):""}function Nfe(t,e){let r=t.key||Ei,n=e.config.plugins?.CapacitorUpdater?.publicKey;return(0,Ci.existsSync)(r)?n=(0,Ci.readFileSync)(r,"utf8"):!n&&t.keyData&&(n=t.keyData),{publicKey:n,fallbackKeyPath:r}}async function y6(t,e,r,n=!1){n||ae("Decrypt zip file");try{if(await Je(),!(0,Ci.existsSync)(t)){let d=`Zip not found at the path ${t}`;throw n||g.error(d),new Error(d)}let i=await he();if(!r.key&&!(0,Ci.existsSync)(Ei)&&!i.config.plugins?.CapacitorUpdater?.publicKey){let d=`Public Key not found at the path ${Ei} or in ${i.path}`;throw n||g.error(d),new Error(d)}let{publicKey:s,fallbackKeyPath:o}=Nfe(r,i);if(!s){let d=`Cannot find public key ${o} or as keyData option or in ${i.path}`;throw n||g.error(d),new Error(d)}let a=(0,Ci.readFileSync)(t),u=h6(a,e,r.keyData??s),c=`${t}_decrypted.zip`;(0,Ci.writeFileSync)(c,u),n||g.info(`Decrypted zip file at ${c}`);let l;if(r.checksum){let d=await ii(u,"sha256"),h=p6(r.checksum,r.keyData??s);if(l=d===h,!l){let f=`Checksum does not match ${d} !== ${h}`;throw n||g.error(f),new Error(f)}n||g.info("Checksum matches")}return n||le("\u2705 done"),{outputPath:c,checksumMatches:l}}catch(i){throw n||g.error(`Error decrypting zip file ${W(i)}`),i instanceof Error?i:new Error(String(i))}}async function D6(t,e,r,n=!1){n||ae("Delete bundle"),r.apikey=r.apikey||re();let i=await he();if(e=Be(e,i?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!t)throw n||g.error("Missing argument, you need to provide a bundleId, or be in a capacitor project"),new Error("Missing bundleId");let s=await pe(r.apikey,r.supaHost,r.supaAnon);return await De(s,r.apikey,["write","all"]),await Et(s,r.apikey,e,3,n),n||(g.info(`Deleting bundle ${e}@${t} from Capgo`),g.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever")),await nm(s,e,t),n||(g.success(`Bundle ${e}@${t} deleted in Capgo`),le("Done")),!0}var Si=require("node:fs");function pl(t){console.error(W(t))}async function w6(t,e,r,n=!1){let{json:i}=r,s=!i&&!n;s&&(ae("Encryption"),await Je());try{let o=await he(),a=!!o.config.plugins?.CapacitorUpdater?.privateKey,u=!!o.config.plugins?.CapacitorUpdater?.publicKey;if(a&&s&&g.warning("There is still a privateKey in the config"),!(0,Si.existsSync)(t)){let E=`Zip not found at the path ${t}`;throw n||(i?pl({error:"zip_not_found"}):g.error(`Error: ${E}`)),new Error(E)}if(!u)throw n||(i?pl({error:"missing_public_key"}):g.warning("Warning: Missing Public Key in config")),new Error("Missing public key in config");let c=r.key||$r,l=r.keyData||"";if(!(0,Si.existsSync)(c)&&!l)throw n||(i?pl({error:"missing_key"}):(g.warning(`Cannot find a private key at ${c} or as a keyData option`),g.error("Error: Missing key"))),new Error("Missing private key");if((0,Si.existsSync)(c)&&(l=(0,Si.readFileSync)(c,"utf8")),l&&!l.startsWith("-----BEGIN RSA PRIVATE KEY-----"))throw n||(i?pl({error:"invalid_private_key"}):g.error("The private key provided is not a valid RSA Private key")),new Error("Invalid private key format");let d=(0,Si.readFileSync)(t),{sessionKey:h,ivSessionKey:f}=cm(l),p=cu(d,h,f),y=lu(e,l),v=`${t}_encrypted.zip`;return(0,Si.writeFileSync)(v,p),n||(i?console.log(JSON.stringify({checksum:y,filename:v,ivSessionKey:f},null,2)):(g.success(`Encoded Checksum: ${y}`),g.success(`ivSessionKey: ${f}`),g.success(`Encrypted zip saved at ${v}`),le("Done \u2705"))),{checksum:y,filename:v,ivSessionKey:f}}catch(o){throw n||(r.json?pl(o):g.error(`Error encrypting zip file ${W(o)}`)),o instanceof Error?o:new Error(String(o))}}var XU=require("node:crypto"),_o=require("node:fs"),Sm=require("node:process");var fm=class extends TransformStream{outChunkSize;constructor(e){let r=new Uint8Array(e),n=0;super({transform(i,s){let o=0;for(;o<i.length;){let a=e-n,u=Math.min(a,i.length-o);r.set(i.subarray(o,o+u),n),o+=u,n+=u,n===e&&(s.enqueue(r),r=new Uint8Array(e),n=0)}},flush(i){n>0&&i.enqueue(r.subarray(0,n))}}),this.outChunkSize=e}};function ls(t){return t=t.trim(),t=t.replace(/<!--[\s\S]*?-->/g,""),e();function e(){return{declaration:r(),root:n()}}function r(){if(!u(/^<\?xml\s*/))return;let h={attributes:{}};for(;!(c()||l("?>"));){let f=s();if(!f)return h;h.attributes[f.name]=f.value}return u(/\?>\s*/),h}function n(){let d=u(/^<([\w-:.]+)\s*/);if(!d)return;let h={name:d[1],attributes:{},children:[]};for(;!(c()||l(">")||l("?>")||l("/>"));){let p=s();if(!p)return h;h.attributes[p.name]=p.value}if(u(/^\s*\/>\s*/))return h;u(/\??>\s*/),h.content=i();let f;for(;f=n();)h.children.push(f);return u(/^<\/[\w-:.]+>\s*/),h}function i(){let d=u(/^([^<]*)/);return d?a(d[1]):""}function s(){let d=u(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(d)return{name:d[1],value:a(o(d[2]))}}function o(d){return d.replace(/^['"]|['"]$/g,"")}function a(d){return d.replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function u(d){let h=t.match(d);if(h)return t=t.slice(h[0].length),h}function c(){return t.length===0}function l(d){return t.startsWith(d)}}var Vn=class extends Error{};var Jt=class extends Vn{},ml=class extends Vn{},dm=class extends Vn{bucketName;constructor(e){super(`Invalid bucket name: ${e}`),this.bucketName=e}},zn=class extends Vn{objectName;constructor(e){super(`Invalid object name: ${e}`),this.objectName=e}},fs=class extends Vn{constructor(){super("accessKey is required")}},fu=class extends Vn{constructor(){super("secretKey is required")}},gl=class extends Vn{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}},Ai=class extends Vn{statusCode;code;key;bucketName;resource;region;constructor(e,r,n,i={}){super(n),this.statusCode=e,this.code=r,this.key=i.key,this.bucketName=i.bucketName,this.resource=i.resource,this.region=i.region}};async function v6(t){try{let r=ls(await t.text()).root;if(r?.name!=="Error")throw new Error("Invalid root, expected <Error>");let n=r.children.find(c=>c.name==="Code")?.content??"UnknownErrorCode",i=r.children.find(c=>c.name==="Message")?.content??"The error message could not be determined.",s=r.children.find(c=>c.name==="Key")?.content,o=r.children.find(c=>c.name==="BucketName")?.content,a=r.children.find(c=>c.name==="Resource")?.content,u=r.children.find(c=>c.name==="Region")?.content;return new Ai(t.status,n,i,{key:s,bucketName:o,resource:a,region:u})}catch{return new Ai(t.status,"UnrecognizedError",`Error: Unexpected response code ${t.status} ${t.statusText}. Unable to parse response as XML.`)}}function E6(t){return typeof t!="number"||isNaN(t)?!1:t>=1&&t<=65535}function b6(t){return typeof t!="string"||t.length<3||t.length>63||t.includes("..")||t.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)?!1:!!t.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/)}function ds(t){return!(!$fe(t)||t.length===0)}function $fe(t){return!(typeof t!="string"||t.length>1024)}function yl(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function mo(t=""){let e={'"':"",""":"",""":"",""":"",""":""};return t.replace(/^("|"|")|("|"|")$/g,r=>e[r])}function Ab(t){return t.get("x-amz-version-id")??null}function go(t){let e=t.toISOString();return e.slice(0,4)+e.slice(5,7)+e.slice(8,13)+e.slice(14,16)+e.slice(17,19)+"Z"}function Ob(t){return go(t).slice(0,8)}function xb(t,e){return`${Ob(e)}/${t}/s3/aws4_request`}async function hm(t){return t instanceof Uint8Array||(t=new TextEncoder().encode(t)),yl(new Uint8Array(await crypto.subtle.digest("SHA-256",t)))}var Lfe=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"],pm=class extends WritableStream{getResult;constructor({client:e,bucketName:r,objectName:n,partSize:i,metadata:s}){let o,a=1,u,c=[],l,d=[];super({start(){},async write(h,f){let y=a++;try{if(y==1&&h.length<i){let A=await e.makeRequest({method:"PUT",headers:new Headers({...s,"Content-Length":String(h.length)}),bucketName:r,objectName:n,payload:h});o={etag:mo(A.headers.get("etag")??void 0),versionId:Ab(A.headers)};return}y===1&&(u=(await Bfe({client:e,bucketName:r,objectName:n,metadata:s})).uploadId);let v={"Content-Length":String(h.length)};for(let A of Lfe){let m=s[A];m&&(v[A]=m)}let E=e.makeRequest({method:"PUT",query:{partNumber:y.toString(),uploadId:u},headers:new Headers(v),bucketName:r,objectName:n,payload:h}).then(A=>{let m=A.headers.get("etag")??"";return m&&(m=m.replace(/^"/,"").replace(/"$/,"")),c.push({part:y,etag:m}),A});d.push(E.catch(A=>{l||(l=A)}))}catch(v){throw v}},async close(){if(!o)if(u){if(await Promise.all(d),l)throw l;c.sort((h,f)=>h.part>f.part?1:-1),o=await jfe({client:e,bucketName:r,objectName:n,uploadId:u,etags:c})}else throw new Error("Stream was closed without uploading any data.")}}),this.getResult=()=>{if(o===void 0)throw new Error("Result is not ready. await the stream first.");return o}}};async function Bfe(t){let e="POST",r=new Headers(t.metadata),s=await(await t.client.makeRequest({method:e,bucketName:t.bucketName,objectName:t.objectName,query:"uploads",headers:r,returnBody:!0})).text(),o=ls(s).root;if(!o||o.name!=="InitiateMultipartUploadResult")throw new Error(`Unexpected response: ${s}`);let a=o.children.find(u=>u.name==="UploadId")?.content;if(!a)throw new Error(`Unable to get UploadId from response: ${s}`);return{uploadId:a}}async function jfe({client:t,bucketName:e,objectName:r,uploadId:n,etags:i}){let s=`
|
|
340
|
+
`)),i&&g.info(`API host: ${a}`);let l={};e.buildCertificateBase64&&(l.BUILD_CERTIFICATE_BASE64=e.buildCertificateBase64),e.buildProvisionProfileBase64&&(l.BUILD_PROVISION_PROFILE_BASE64=e.buildProvisionProfileBase64),e.buildProvisionProfileBase64Prod&&(l.BUILD_PROVISION_PROFILE_BASE64_PROD=e.buildProvisionProfileBase64Prod),e.p12Password&&(l.P12_PASSWORD=e.p12Password),e.appleKeyId&&(l.APPLE_KEY_ID=e.appleKeyId),e.appleIssuerId&&(l.APPLE_ISSUER_ID=e.appleIssuerId),e.appleKeyContent&&(l.APPLE_KEY_CONTENT=e.appleKeyContent),e.appleProfileName&&(l.APPLE_PROFILE_NAME=e.appleProfileName),e.appStoreConnectTeamId&&(l.APP_STORE_CONNECT_TEAM_ID=e.appStoreConnectTeamId),e.androidKeystoreFile&&(l.ANDROID_KEYSTORE_FILE=e.androidKeystoreFile),e.keystoreKeyAlias&&(l.KEYSTORE_KEY_ALIAS=e.keystoreKeyAlias);let d=!!e.keystoreKeyPassword,h=!!e.keystoreStorePassword;d&&!h?(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreKeyPassword):!d&&h?(l.KEYSTORE_KEY_PASSWORD=e.keystoreStorePassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword):d&&h&&(l.KEYSTORE_KEY_PASSWORD=e.keystoreKeyPassword,l.KEYSTORE_STORE_PASSWORD=e.keystoreStorePassword),e.playConfigJson&&(l.PLAY_CONFIG_JSON=e.playConfigJson);let f=await i6(t,e.platform,Object.keys(l).length>0?l:void 0),p={app_id:t,platform:e.platform};if(!f)throw r||(g.error("\u274C No credentials found for this app and platform"),g.error(""),g.error("You must provide credentials via:"),g.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),g.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),g.error(" 3. Saved credentials file:"),g.error(` npx @capgo/cli build credentials save --appId ${t} --platform ${e.platform}`),g.error(""),g.error("Documentation:"),g.error(" https://capgo.app/docs/cli/cloud-build/credentials/")),new Error("No credentials found. Please provide credentials before building.");let y=[];if(e.platform==="ios"?(f.BUILD_CERTIFICATE_BASE64||y.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)"),!f.P12_PASSWORD&&!r&&(g.warn("\u26A0\uFE0F P12_PASSWORD not provided - assuming certificate has no password"),g.warn(" If your certificate requires a password, provide it with --p12-password")),f.BUILD_PROVISION_PROFILE_BASE64||y.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)"),f.APPLE_KEY_ID||y.push("APPLE_KEY_ID (or --apple-key-id)"),f.APPLE_ISSUER_ID||y.push("APPLE_ISSUER_ID (or --apple-issuer-id)"),f.APPLE_KEY_CONTENT||y.push("APPLE_KEY_CONTENT (or --apple-key-content)"),f.APP_STORE_CONNECT_TEAM_ID||y.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")):e.platform==="android"&&(f.ANDROID_KEYSTORE_FILE||y.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)"),f.KEYSTORE_KEY_ALIAS||y.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)"),!f.KEYSTORE_KEY_PASSWORD&&!f.KEYSTORE_STORE_PASSWORD&&y.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)"),!f.PLAY_CONFIG_JSON&&!r&&g.warn("\u26A0\uFE0F PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")),y.length>0){if(!r){g.error(`\u274C Missing required credentials for ${e.platform}:`),g.error("");for(let D of y)g.error(` \u2022 ${D}`);g.error(""),g.error("Provide credentials via:"),g.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),g.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),g.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),g.error(""),g.error("Documentation:"),g.error(` https://capgo.app/docs/cli/cloud-build/${e.platform}/`)}throw new Error(`Missing required credentials for ${e.platform}: ${y.join(", ")}`)}if(p.credentials=f,r||g.info("\u2713 Using credentials (merged from CLI args, env vars, and saved file)"),i){let D=Object.keys(f).filter(w=>f[w]);g.info(`Credentials provided: ${D.join(", ")}`)}r||g.info("Requesting build from Capgo...");let v=await fetch(`${a}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify(p)});if(!v.ok){let D=await v.text();throw new Error(`Failed to request build: ${v.status} - ${D}`)}let E=await v.json();r||(g.success(`Build job created: ${E.job_id}`),g.info(`Status: ${E.status}`)),i&&(g.info(`Upload URL: ${E.upload_url}`),g.info(`Upload expires: ${E.upload_expires_at}`)),await _e(e.apikey,{channel:"native-builder",event:"Build requested",icon:"\u{1F3D7}\uFE0F",user_id:c,tags:{"app-id":t,platform:e.platform},notify:!1}).catch();let A=(0,tn.join)((0,o6.tmpdir)(),`capgo-build-${Date.now()}`);await(0,en.mkdir)(A,{recursive:!0});let m=(0,tn.join)(A,`${(0,tn.basename)(o)}.zip`);try{r||g.info(`Zipping ${e.platform} project from ${o}...`),await Ffe(o,m,e.platform);let w=((await(0,en.stat)(m)).size/1024/1024).toFixed(2);r||g.success(`Created zip: ${m} (${w} MB)`),r||g.info("Uploading to builder..."),i&&(g.info(`Upload endpoint: ${E.upload_url}`),g.info(`File size: ${w} MB`),g.info(`Job ID: ${E.job_id}`));let S=(0,Hn.readFileSync)(m),R=xt();r||R.start("Uploading bundle"),await new Promise((j,z)=>{let L=new um.Upload(S,{endpoint:E.upload_url,chunkSize:5242880,metadata:{filename:(0,tn.basename)(m),filetype:"application/zip"},headers:{authorization:e.apikey},onBeforeRequest(b){if(i){g.info(`[TUS] ${b.getMethod()} ${b.getURL()}`);let T=b.getHeader("authorization");g.info(`[TUS] Authorization header present: ${!!T}`)}},onAfterResponse(b,T){if(i){g.info(`[TUS] Response status: ${T.getStatus()}`);let P=T.getHeader("upload-offset"),$=T.getHeader("tus-resumable");g.info(`[TUS] Upload-Offset: ${P}, Tus-Resumable: ${$}`)}},onError(b){if(r||(R.stop("Upload failed"),g.error(`Upload error: ${b.message}`)),b instanceof um.DetailedError){let T=b.originalResponse?.getBody(),P=b.originalResponse?.getStatus(),$=b.originalRequest?.getURL();i&&(g.error(`[TUS] Request URL: ${$}`),g.error(`[TUS] Response status: ${P}`),g.error(`[TUS] Response body: ${T}`));let q="Unknown error";try{let M=JSON.parse(T||'{"error": "unknown error"}');q=M.status||M.error||M.message||"unknown error"}catch{q=T||b.message}z(new Error(`TUS upload failed: ${q}`))}else z(new Error(`TUS upload failed: ${b.message||b.toString()}`))},onProgress(b,T){let P=(b/T*100).toFixed(2);r||R.message(`Uploading ${P}%`)},onSuccess(){r||R.stop("Upload complete!"),i&&g.success("TUS upload completed successfully"),j()}});i&&g.info("[TUS] Starting upload..."),L.start()}),r||g.info("Starting build job...");let _=await fetch(`${a}/build/start/${E.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:e.apikey},body:JSON.stringify({app_id:t})});if(!_.ok){let j=await _.text();throw new Error(`Failed to start build: ${_.status} - ${j}`)}let k=await _.json();r||(g.success("Build started!"),g.info("Streaming build logs..."));let F,I=await Tfe(a,E.job_id,t,e.apikey,r,i);I?F=I:F=await Ife(a,E.job_id,t,e.platform,e.apikey,r),r||(F==="succeeded"?g.success("Build completed successfully!"):F==="failed"?g.error("Build failed"):g.warn(`Build finished with status: ${F}`));let B=((Date.now()-n)/1e3).toFixed(2);return await _e(e.apikey,{channel:"native-builder",event:F==="succeeded"?"Build succeeded":"Build failed",icon:F==="succeeded"?"\u2705":"\u274C",user_id:c,tags:{"app-id":t,platform:e.platform,status:F||"unknown",time:B},notify:!1}).catch(),{success:F==="succeeded",jobId:E.job_id,uploadUrl:E.upload_url,status:F||k.status||E.status}}finally{await(0,en.rm)(A,{recursive:!0,force:!0})}}catch(s){let o=s instanceof Error?s.message:String(s);return r||g.error(o),{success:!1,error:o}}}async function Rfe(t,e,r,n){for await(let i of t)n||g.warn(`Removing ${i.name} created on ${ou(i.created_at)}`),await nm(e,r,i.name)}function kfe(t,e,r){let n=[];for(let i of t??[]){let s=lt(i.name);Ym(s,e)&&ps(s,r)&&n.push(i)}return n}async function c6(t,e,r=!1){r||ae("Cleanup versions in Capgo"),await Je(),e.apikey=e.apikey||re();let{bundle:n,keep:i=4}=e,s=e.force||!1,o=e.ignoreChannel||!1,a=await he();if(t=Be(t,a?.config),!e.apikey)throw r||g.error("Missing API key, you need to provide an API key to delete your app"),new Error("Missing API key");if(!t)throw r||g.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let u=await pe(e.apikey,e.supaHost,e.supaAnon);await De(u,e.apikey,["write","all"]),await Et(u,e.apikey,t,3,r),r||g.info("Querying all available versions in Capgo");let c=await im(u,t),l=await K8(u,t);if(r||g.info(`Total active versions in Capgo: ${c?.length??0}`),!c?.length)throw r||g.error("No versions found, aborting cleanup"),new Error("No versions found");if(n){let f=lt(n),p=Eu(f,"major");r||g.info(`Querying available versions in Capgo between ${sn(f)} and ${sn(p)}`),c=kfe(c,f,p),r||g.info(`Active versions in Capgo between ${sn(f)} and ${sn(p)}: ${c?.length??0}`)}let d=[],h=0;for(let f of c){let p=l.find(y=>y===f.id);h<i||p&&!o?(f.keep=p?"\u2705 (Linked to channel)":"\u2705",h+=1):(f.keep="\u274C",d.push(f))}if(!d.length)return r||g.warn("Nothing to be removed, aborting removal..."),{removed:0,kept:h};if(r||z8(c),!s){if(r)throw new Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");{let f=await Pr({message:"Do you want to continue removing the versions specified?"});if(Ke(f)||!f)throw g.warn("Not confirmed, aborting removal..."),new Error("Cleanup cancelled by user")}}return r||g.success("You have confirmed removal, removing versions now"),await Rfe(d,u,t,r),r||le("Done \u2705"),{removed:d.length,kept:h}}async function l6(t,e,r=!1){r||ae("Check compatibility");let n={...e,apikey:e.apikey||re()},i=await he(),s=Be(t,i?.config),o=n.channel;if(!o)throw r||g.error("Missing argument, you need to provide a channel"),new Error("Missing channel");if(!n.apikey)throw r||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!s)throw r||g.error("Missing argument, you need to provide an appId, or be in a capacitor project"),new Error("Missing appId");let a=await pe(n.apikey,n.supaHost,n.supaAnon);await De(a,n.apikey,["write","all","read","upload"]),await Et(a,n.apikey,s,1,r);let u=await rm(a,s,o,n.packageJson,n.nodeModules);if(!r){let c=new zt;c.headers=["Package","Local version","Remote version","Compatible"],c.theme=zt.roundTheme,c.rows=[];let l=n.text?"Yes":"\u2705",d=n.text?"No":"\u274C";for(let h of u.finalCompatibility){let{name:f,localVersion:p,remoteVersion:y}=h,v=po(h)?l:d;c.rows.push([f,p,y,v])}g.success("Compatibility"),g.success(c.toString())}return{finalCompatibility:u.finalCompatibility}}var Ci=require("node:fs");var bi=require("node:buffer"),Ut=require("node:crypto"),d6="aes-128-cbc",_i="base64",f6="hex",hl=Ut.constants.RSA_PKCS1_PADDING;function cm(t){let e=(0,Ut.randomBytes)(16),r=(0,Ut.randomBytes)(16),n=e.toString(_i),i=(0,Ut.privateEncrypt)({key:t,padding:hl},r).toString(_i);return{sessionKey:r,ivSessionKey:`${n}:${i}`}}function cu(t,e,r){let[n]=r.split(":"),i=bi.Buffer.from(n,_i),s=(0,Ut.createCipheriv)(d6,e,i);return s.setAutoPadding(!0),bi.Buffer.concat([s.update(t),s.final()])}function h6(t,e,r){let[n,i]=e.split(":"),s=(0,Ut.publicDecrypt)({key:r,padding:hl},bi.Buffer.from(i,_i)),o=bi.Buffer.from(n,_i),a=(0,Ut.createDecipheriv)(d6,s,o);return a.setAutoPadding(!0),bi.Buffer.concat([a.update(t),a.final()])}function lu(t,e){return(0,Ut.privateEncrypt)({key:e,padding:hl},bi.Buffer.from(t,_i)).toString(_i)}function lm(t,e){return(0,Ut.privateEncrypt)({key:e,padding:hl},bi.Buffer.from(t,f6)).toString(f6)}function p6(t,e){return(0,Ut.publicDecrypt)({key:e,padding:hl},bi.Buffer.from(t,_i)).toString(_i)}function m6(){let{publicKey:t,privateKey:e}=(0,Ut.generateKeyPairSync)("rsa",{modulusLength:2048});return{publicKey:t.export({type:"pkcs1",format:"pem"}),privateKey:e.export({type:"pkcs1",format:"pem"})}}function g6(t){return t?t.replace(/-----BEGIN RSA PUBLIC KEY-----/g,"").replace(/-----END RSA PUBLIC KEY-----/g,"").replace(/\n/g,"").replace(/\r/g,"").replace(/ /g,"").substring(0,20):""}function Nfe(t,e){let r=t.key||Ei,n=e.config.plugins?.CapacitorUpdater?.publicKey;return(0,Ci.existsSync)(r)?n=(0,Ci.readFileSync)(r,"utf8"):!n&&t.keyData&&(n=t.keyData),{publicKey:n,fallbackKeyPath:r}}async function y6(t,e,r,n=!1){n||ae("Decrypt zip file");try{if(await Je(),!(0,Ci.existsSync)(t)){let d=`Zip not found at the path ${t}`;throw n||g.error(d),new Error(d)}let i=await he();if(!r.key&&!(0,Ci.existsSync)(Ei)&&!i.config.plugins?.CapacitorUpdater?.publicKey){let d=`Public Key not found at the path ${Ei} or in ${i.path}`;throw n||g.error(d),new Error(d)}let{publicKey:s,fallbackKeyPath:o}=Nfe(r,i);if(!s){let d=`Cannot find public key ${o} or as keyData option or in ${i.path}`;throw n||g.error(d),new Error(d)}let a=(0,Ci.readFileSync)(t),u=h6(a,e,r.keyData??s),c=`${t}_decrypted.zip`;(0,Ci.writeFileSync)(c,u),n||g.info(`Decrypted zip file at ${c}`);let l;if(r.checksum){let d=await ii(u,"sha256"),h=p6(r.checksum,r.keyData??s);if(l=d===h,!l){let f=`Checksum does not match ${d} !== ${h}`;throw n||g.error(f),new Error(f)}n||g.info("Checksum matches")}return n||le("\u2705 done"),{outputPath:c,checksumMatches:l}}catch(i){throw n||g.error(`Error decrypting zip file ${W(i)}`),i instanceof Error?i:new Error(String(i))}}async function D6(t,e,r,n=!1){n||ae("Delete bundle"),r.apikey=r.apikey||re();let i=await he();if(e=Be(e,i?.config),!r.apikey)throw n||g.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||g.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!t)throw n||g.error("Missing argument, you need to provide a bundleId, or be in a capacitor project"),new Error("Missing bundleId");let s=await pe(r.apikey,r.supaHost,r.supaAnon);return await De(s,r.apikey,["write","all"]),await Et(s,r.apikey,e,3,n),n||(g.info(`Deleting bundle ${e}@${t} from Capgo`),g.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever")),await nm(s,e,t),n||(g.success(`Bundle ${e}@${t} deleted in Capgo`),le("Done")),!0}var Si=require("node:fs");function pl(t){console.error(W(t))}async function w6(t,e,r,n=!1){let{json:i}=r,s=!i&&!n;s&&(ae("Encryption"),await Je());try{let o=await he(),a=!!o.config.plugins?.CapacitorUpdater?.privateKey,u=!!o.config.plugins?.CapacitorUpdater?.publicKey;if(a&&s&&g.warning("There is still a privateKey in the config"),!(0,Si.existsSync)(t)){let E=`Zip not found at the path ${t}`;throw n||(i?pl({error:"zip_not_found"}):g.error(`Error: ${E}`)),new Error(E)}if(!u)throw n||(i?pl({error:"missing_public_key"}):g.warning("Warning: Missing Public Key in config")),new Error("Missing public key in config");let c=r.key||$r,l=r.keyData||"";if(!(0,Si.existsSync)(c)&&!l)throw n||(i?pl({error:"missing_key"}):(g.warning(`Cannot find a private key at ${c} or as a keyData option`),g.error("Error: Missing key"))),new Error("Missing private key");if((0,Si.existsSync)(c)&&(l=(0,Si.readFileSync)(c,"utf8")),l&&!l.startsWith("-----BEGIN RSA PRIVATE KEY-----"))throw n||(i?pl({error:"invalid_private_key"}):g.error("The private key provided is not a valid RSA Private key")),new Error("Invalid private key format");let d=(0,Si.readFileSync)(t),{sessionKey:h,ivSessionKey:f}=cm(l),p=cu(d,h,f),y=lu(e,l),v=`${t}_encrypted.zip`;return(0,Si.writeFileSync)(v,p),n||(i?console.log(JSON.stringify({checksum:y,filename:v,ivSessionKey:f},null,2)):(g.success(`Encoded Checksum: ${y}`),g.success(`ivSessionKey: ${f}`),g.success(`Encrypted zip saved at ${v}`),le("Done \u2705"))),{checksum:y,filename:v,ivSessionKey:f}}catch(o){throw n||(r.json?pl(o):g.error(`Error encrypting zip file ${W(o)}`)),o instanceof Error?o:new Error(String(o))}}var XU=require("node:crypto"),_o=require("node:fs"),Sm=require("node:process");var fm=class extends TransformStream{outChunkSize;constructor(e){let r=new Uint8Array(e),n=0;super({transform(i,s){let o=0;for(;o<i.length;){let a=e-n,u=Math.min(a,i.length-o);r.set(i.subarray(o,o+u),n),o+=u,n+=u,n===e&&(s.enqueue(r),r=new Uint8Array(e),n=0)}},flush(i){n>0&&i.enqueue(r.subarray(0,n))}}),this.outChunkSize=e}};function ls(t){return t=t.trim(),t=t.replace(/<!--[\s\S]*?-->/g,""),e();function e(){return{declaration:r(),root:n()}}function r(){if(!u(/^<\?xml\s*/))return;let h={attributes:{}};for(;!(c()||l("?>"));){let f=s();if(!f)return h;h.attributes[f.name]=f.value}return u(/\?>\s*/),h}function n(){let d=u(/^<([\w-:.]+)\s*/);if(!d)return;let h={name:d[1],attributes:{},children:[]};for(;!(c()||l(">")||l("?>")||l("/>"));){let p=s();if(!p)return h;h.attributes[p.name]=p.value}if(u(/^\s*\/>\s*/))return h;u(/\??>\s*/),h.content=i();let f;for(;f=n();)h.children.push(f);return u(/^<\/[\w-:.]+>\s*/),h}function i(){let d=u(/^([^<]*)/);return d?a(d[1]):""}function s(){let d=u(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(d)return{name:d[1],value:a(o(d[2]))}}function o(d){return d.replace(/^['"]|['"]$/g,"")}function a(d){return d.replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function u(d){let h=t.match(d);if(h)return t=t.slice(h[0].length),h}function c(){return t.length===0}function l(d){return t.startsWith(d)}}var Vn=class extends Error{};var Jt=class extends Vn{},ml=class extends Vn{},dm=class extends Vn{bucketName;constructor(e){super(`Invalid bucket name: ${e}`),this.bucketName=e}},zn=class extends Vn{objectName;constructor(e){super(`Invalid object name: ${e}`),this.objectName=e}},fs=class extends Vn{constructor(){super("accessKey is required")}},fu=class extends Vn{constructor(){super("secretKey is required")}},gl=class extends Vn{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}},Ai=class extends Vn{statusCode;code;key;bucketName;resource;region;constructor(e,r,n,i={}){super(n),this.statusCode=e,this.code=r,this.key=i.key,this.bucketName=i.bucketName,this.resource=i.resource,this.region=i.region}};async function v6(t){try{let r=ls(await t.text()).root;if(r?.name!=="Error")throw new Error("Invalid root, expected <Error>");let n=r.children.find(c=>c.name==="Code")?.content??"UnknownErrorCode",i=r.children.find(c=>c.name==="Message")?.content??"The error message could not be determined.",s=r.children.find(c=>c.name==="Key")?.content,o=r.children.find(c=>c.name==="BucketName")?.content,a=r.children.find(c=>c.name==="Resource")?.content,u=r.children.find(c=>c.name==="Region")?.content;return new Ai(t.status,n,i,{key:s,bucketName:o,resource:a,region:u})}catch{return new Ai(t.status,"UnrecognizedError",`Error: Unexpected response code ${t.status} ${t.statusText}. Unable to parse response as XML.`)}}function E6(t){return typeof t!="number"||isNaN(t)?!1:t>=1&&t<=65535}function b6(t){return typeof t!="string"||t.length<3||t.length>63||t.includes("..")||t.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)?!1:!!t.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/)}function ds(t){return!(!$fe(t)||t.length===0)}function $fe(t){return!(typeof t!="string"||t.length>1024)}function yl(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function mo(t=""){let e={'"':"",""":"",""":"",""":"",""":""};return t.replace(/^("|"|")|("|"|")$/g,r=>e[r])}function Ab(t){return t.get("x-amz-version-id")??null}function go(t){let e=t.toISOString();return e.slice(0,4)+e.slice(5,7)+e.slice(8,13)+e.slice(14,16)+e.slice(17,19)+"Z"}function Ob(t){return go(t).slice(0,8)}function xb(t,e){return`${Ob(e)}/${t}/s3/aws4_request`}async function hm(t){return t instanceof Uint8Array||(t=new TextEncoder().encode(t)),yl(new Uint8Array(await crypto.subtle.digest("SHA-256",t)))}var Lfe=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"],pm=class extends WritableStream{getResult;constructor({client:e,bucketName:r,objectName:n,partSize:i,metadata:s}){let o,a=1,u,c=[],l,d=[];super({start(){},async write(h,f){let y=a++;try{if(y==1&&h.length<i){let A=await e.makeRequest({method:"PUT",headers:new Headers({...s,"Content-Length":String(h.length)}),bucketName:r,objectName:n,payload:h});o={etag:mo(A.headers.get("etag")??void 0),versionId:Ab(A.headers)};return}y===1&&(u=(await Bfe({client:e,bucketName:r,objectName:n,metadata:s})).uploadId);let v={"Content-Length":String(h.length)};for(let A of Lfe){let m=s[A];m&&(v[A]=m)}let E=e.makeRequest({method:"PUT",query:{partNumber:y.toString(),uploadId:u},headers:new Headers(v),bucketName:r,objectName:n,payload:h}).then(A=>{let m=A.headers.get("etag")??"";return m&&(m=m.replace(/^"/,"").replace(/"$/,"")),c.push({part:y,etag:m}),A});d.push(E.catch(A=>{l||(l=A)}))}catch(v){throw v}},async close(){if(!o)if(u){if(await Promise.all(d),l)throw l;c.sort((h,f)=>h.part>f.part?1:-1),o=await jfe({client:e,bucketName:r,objectName:n,uploadId:u,etags:c})}else throw new Error("Stream was closed without uploading any data.")}}),this.getResult=()=>{if(o===void 0)throw new Error("Result is not ready. await the stream first.");return o}}};async function Bfe(t){let e="POST",r=new Headers(t.metadata),s=await(await t.client.makeRequest({method:e,bucketName:t.bucketName,objectName:t.objectName,query:"uploads",headers:r,returnBody:!0})).text(),o=ls(s).root;if(!o||o.name!=="InitiateMultipartUploadResult")throw new Error(`Unexpected response: ${s}`);let a=o.children.find(u=>u.name==="UploadId")?.content;if(!a)throw new Error(`Unable to get UploadId from response: ${s}`);return{uploadId:a}}async function jfe({client:t,bucketName:e,objectName:r,uploadId:n,etags:i}){let s=`
|
|
341
341
|
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
342
342
|
${i.map(d=>` <Part><PartNumber>${d.part}</PartNumber><ETag>${d.etag}</ETag></Part>`).join(`
|
|
343
343
|
`)}
|