@capgo/cli 7.71.1 → 7.71.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/src/sdk.js CHANGED
@@ -1,4 +1,4 @@
1
- var Sh=Object.create;var{getPrototypeOf:xh,defineProperty:w9,getOwnPropertyNames:OX,getOwnPropertyDescriptor:fh}=Object,WX=Object.prototype.hasOwnProperty,J0=(D,X,Y)=>{for(let Z of OX(X))if(!WX.call(D,Z)&&Z!=="default")w9(D,Z,{get:()=>X[Z],enumerable:!0});if(Y){for(let Z of OX(X))if(!WX.call(Y,Z)&&Z!=="default")w9(Y,Z,{get:()=>X[Z],enumerable:!0});return Y}},V0=(D,X,Y)=>{Y=D!=null?Sh(xh(D)):{};let Z=X||!D||!D.__esModule?w9(Y,"default",{value:D,enumerable:!0}):Y;for(let J of OX(D))if(!WX.call(Z,J))w9(Z,J,{get:()=>D[J],enumerable:!0});return Z},HG=new WeakMap,yh=(D)=>{var X=HG.get(D),Y;if(X)return X;if(X=w9({},"__esModule",{value:!0}),D&&typeof D==="object"||typeof D==="function")OX(D).map((Z)=>!WX.call(X,Z)&&w9(X,Z,{get:()=>D[Z],enumerable:!(Y=fh(D,Z))||Y.enumerable}));return HG.set(D,X),X},T=(D,X)=>()=>(X||D((X={exports:{}}).exports,X),X.exports);var e7=(D,X)=>{for(var Y in X)w9(D,Y,{get:X[Y],enumerable:!0,configurable:!0,set:(Z)=>X[Y]=()=>Z})};var m1=(D,X)=>()=>(D&&(X=D(D=0)),X);var XD=T((LY0,KG)=>{var cJ={to(D,X){if(!X)return`\x1B[${D+1}G`;return`\x1B[${X+1};${D+1}H`},move(D,X){let Y="";if(D<0)Y+=`\x1B[${-D}D`;else if(D>0)Y+=`\x1B[${D}C`;if(X<0)Y+=`\x1B[${-X}A`;else if(X>0)Y+=`\x1B[${X}B`;return Y},up:(D=1)=>`\x1B[${D}A`,down:(D=1)=>`\x1B[${D}B`,forward:(D=1)=>`\x1B[${D}C`,backward:(D=1)=>`\x1B[${D}D`,nextLine:(D=1)=>"\x1B[E".repeat(D),prevLine:(D=1)=>"\x1B[F".repeat(D),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},kh={up:(D=1)=>"\x1B[S".repeat(D),down:(D=1)=>"\x1B[T".repeat(D)},uh={screen:"\x1B[2J",up:(D=1)=>"\x1B[1J".repeat(D),down:(D=1)=>"\x1B[J".repeat(D),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(D){let X="";for(let Y=0;Y<D;Y++)X+=this.line+(Y<D-1?cJ.up():"");if(D)X+=cJ.left;return X}};KG.exports={cursor:cJ,scroll:kh,erase:uh,beep:"\x07"}});var nJ=T((VY0,lJ)=>{var KX=process||{},zG=KX.argv||[],HX=KX.env||{},hh=!(!!HX.NO_COLOR||zG.includes("--no-color"))&&(!!HX.FORCE_COLOR||zG.includes("--color")||KX.platform==="win32"||(KX.stdout||{}).isTTY&&HX.TERM!=="dumb"||!!HX.CI),_h=(D,X,Y=D)=>(Z)=>{let J=""+Z,Q=J.indexOf(X,D.length);return~Q?D+vh(J,X,Y,Q)+X:D+J+X},vh=(D,X,Y,Z)=>{let J="",Q=0;do J+=D.substring(Q,Z)+Y,Q=Z+X.length,Z=D.indexOf(X,Q);while(~Z);return J+D.substring(Q)},MG=(D=hh)=>{let X=D?_h:()=>String;return{isColorSupported:D,reset:X("\x1B[0m","\x1B[0m"),bold:X("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:X("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:X("\x1B[3m","\x1B[23m"),underline:X("\x1B[4m","\x1B[24m"),inverse:X("\x1B[7m","\x1B[27m"),hidden:X("\x1B[8m","\x1B[28m"),strikethrough:X("\x1B[9m","\x1B[29m"),black:X("\x1B[30m","\x1B[39m"),red:X("\x1B[31m","\x1B[39m"),green:X("\x1B[32m","\x1B[39m"),yellow:X("\x1B[33m","\x1B[39m"),blue:X("\x1B[34m","\x1B[39m"),magenta:X("\x1B[35m","\x1B[39m"),cyan:X("\x1B[36m","\x1B[39m"),white:X("\x1B[37m","\x1B[39m"),gray:X("\x1B[90m","\x1B[39m"),bgBlack:X("\x1B[40m","\x1B[49m"),bgRed:X("\x1B[41m","\x1B[49m"),bgGreen:X("\x1B[42m","\x1B[49m"),bgYellow:X("\x1B[43m","\x1B[49m"),bgBlue:X("\x1B[44m","\x1B[49m"),bgMagenta:X("\x1B[45m","\x1B[49m"),bgCyan:X("\x1B[46m","\x1B[49m"),bgWhite:X("\x1B[47m","\x1B[49m"),blackBright:X("\x1B[90m","\x1B[39m"),redBright:X("\x1B[91m","\x1B[39m"),greenBright:X("\x1B[92m","\x1B[39m"),yellowBright:X("\x1B[93m","\x1B[39m"),blueBright:X("\x1B[94m","\x1B[39m"),magentaBright:X("\x1B[95m","\x1B[39m"),cyanBright:X("\x1B[96m","\x1B[39m"),whiteBright:X("\x1B[97m","\x1B[39m"),bgBlackBright:X("\x1B[100m","\x1B[49m"),bgRedBright:X("\x1B[101m","\x1B[49m"),bgGreenBright:X("\x1B[102m","\x1B[49m"),bgYellowBright:X("\x1B[103m","\x1B[49m"),bgBlueBright:X("\x1B[104m","\x1B[49m"),bgMagentaBright:X("\x1B[105m","\x1B[49m"),bgCyanBright:X("\x1B[106m","\x1B[49m"),bgWhiteBright:X("\x1B[107m","\x1B[49m")}};lJ.exports=MG();lJ.exports.createColors=MG});var RX=T((R1)=>{Object.defineProperty(R1,"__esModule",{value:!0});R1.isNXMonorepo=R1.isMonorepo=R1.findPackageRelativePathInMonorepo=R1.findPackagePath=R1.findNXMonorepoRoot=R1.findMonorepoRoot=void 0;var Z4=require("node:fs"),E6=require("node:path");function NX(D){let X=(0,E6.join)(D,"package.json"),Y=(0,E6.join)(D,"pnpm-workspace.yaml");if((0,Z4.existsSync)(Y)||(0,Z4.existsSync)(X)&&JSON.parse((0,Z4.readFileSync)(X,"utf-8")).workspaces)return D;let Z=(0,E6.dirname)(D);if(Z===D)throw Error("Monorepo root not found");return NX(Z)}R1.findMonorepoRoot=NX;function FQ(D){let X=(0,E6.join)(D,"nx.json");if((0,Z4.existsSync)(X))return D;let Y=(0,E6.dirname)(D);if(Y===D)throw Error("Monorepo root not found");return FQ(Y)}R1.findNXMonorepoRoot=FQ;function BQ(D,X,Y){let Z=(0,E6.join)(X,"node_modules",D);if((0,Z4.existsSync)(Z))return Z;if(X===Y)return null;let J=(0,E6.dirname)(X);return BQ(D,J,Y)}R1.findPackagePath=BQ;function V_(D,X){let Y=NX(X),Z=BQ(D,X,Y);if(Z)return(0,E6.relative)(X,Z);return null}R1.findPackageRelativePathInMonorepo=V_;function U_(D){try{return NX(D),!0}catch(X){return!1}}R1.isMonorepo=U_;function N_(D){try{return FQ(D),!0}catch(X){return!1}}R1.isNXMonorepo=N_});var h0=T((I20,xX)=>{var oG,eG,DO,XO,YO,ZO,JO,QO,wO,FO,BO,qO,$O,PX,KQ,GO,OO,WO,E5,HO,KO,zO,MO,LO,VO,UO,NO,RO,SX,AO,EO,CO;(function(D){var X=typeof global==="object"?global:typeof self==="object"?self:typeof this==="object"?this:{};if(typeof define==="function"&&define.amd)define("tslib",["exports"],function(Z){D(Y(X,Y(Z)))});else if(typeof xX==="object"&&typeof xX.exports==="object")D(Y(X,Y(xX.exports)));else D(Y(X));function Y(Z,J){if(Z!==X)if(typeof Object.create==="function")Object.defineProperty(Z,"__esModule",{value:!0});else Z.__esModule=!0;return function(Q,w){return Z[Q]=J?J(Q,w):w}}})(function(D){var X=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(Q,w){Q.__proto__=w}||function(Q,w){for(var F in w)if(Object.prototype.hasOwnProperty.call(w,F))Q[F]=w[F]};oG=function(Q,w){if(typeof w!=="function"&&w!==null)throw TypeError("Class extends value "+String(w)+" is not a constructor or null");X(Q,w);function F(){this.constructor=Q}Q.prototype=w===null?Object.create(w):(F.prototype=w.prototype,new F)},eG=Object.assign||function(Q){for(var w,F=1,B=arguments.length;F<B;F++){w=arguments[F];for(var q in w)if(Object.prototype.hasOwnProperty.call(w,q))Q[q]=w[q]}return Q},DO=function(Q,w){var F={};for(var B in Q)if(Object.prototype.hasOwnProperty.call(Q,B)&&w.indexOf(B)<0)F[B]=Q[B];if(Q!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var q=0,B=Object.getOwnPropertySymbols(Q);q<B.length;q++)if(w.indexOf(B[q])<0&&Object.prototype.propertyIsEnumerable.call(Q,B[q]))F[B[q]]=Q[B[q]]}return F},XO=function(Q,w,F,B){var q=arguments.length,$=q<3?w:B===null?B=Object.getOwnPropertyDescriptor(w,F):B,G;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")$=Reflect.decorate(Q,w,F,B);else for(var W=Q.length-1;W>=0;W--)if(G=Q[W])$=(q<3?G($):q>3?G(w,F,$):G(w,F))||$;return q>3&&$&&Object.defineProperty(w,F,$),$},YO=function(Q,w){return function(F,B){w(F,B,Q)}},ZO=function(Q,w,F,B,q,$){function G(C){if(C!==void 0&&typeof C!=="function")throw TypeError("Function expected");return C}var W=B.kind,O=W==="getter"?"get":W==="setter"?"set":"value",H=!w&&Q?B.static?Q:Q.prototype:null,M=w||(H?Object.getOwnPropertyDescriptor(H,B.name):{}),U,N=!1;for(var R=F.length-1;R>=0;R--){var z={};for(var V in B)z[V]=V==="access"?{}:B[V];for(var V in B.access)z.access[V]=B.access[V];z.addInitializer=function(C){if(N)throw TypeError("Cannot add initializers after decoration has completed");$.push(G(C||null))};var L=(0,F[R])(W==="accessor"?{get:M.get,set:M.set}:M[O],z);if(W==="accessor"){if(L===void 0)continue;if(L===null||typeof L!=="object")throw TypeError("Object expected");if(U=G(L.get))M.get=U;if(U=G(L.set))M.set=U;if(U=G(L.init))q.unshift(U)}else if(U=G(L))if(W==="field")q.unshift(U);else M[O]=U}if(H)Object.defineProperty(H,B.name,M);N=!0},JO=function(Q,w,F){var B=arguments.length>2;for(var q=0;q<w.length;q++)F=B?w[q].call(Q,F):w[q].call(Q);return B?F:void 0},QO=function(Q){return typeof Q==="symbol"?Q:"".concat(Q)},wO=function(Q,w,F){if(typeof w==="symbol")w=w.description?"[".concat(w.description,"]"):"";return Object.defineProperty(Q,"name",{configurable:!0,value:F?"".concat(F," ",w):w})},FO=function(Q,w){if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(Q,w)},BO=function(Q,w,F,B){function q($){return $ instanceof F?$:new F(function(G){G($)})}return new(F||(F=Promise))(function($,G){function W(M){try{H(B.next(M))}catch(U){G(U)}}function O(M){try{H(B.throw(M))}catch(U){G(U)}}function H(M){M.done?$(M.value):q(M.value).then(W,O)}H((B=B.apply(Q,w||[])).next())})},qO=function(Q,w){var F={label:0,sent:function(){if($[0]&1)throw $[1];return $[1]},trys:[],ops:[]},B,q,$,G=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return G.next=W(0),G.throw=W(1),G.return=W(2),typeof Symbol==="function"&&(G[Symbol.iterator]=function(){return this}),G;function W(H){return function(M){return O([H,M])}}function O(H){if(B)throw TypeError("Generator is already executing.");while(G&&(G=0,H[0]&&(F=0)),F)try{if(B=1,q&&($=H[0]&2?q.return:H[0]?q.throw||(($=q.return)&&$.call(q),0):q.next)&&!($=$.call(q,H[1])).done)return $;if(q=0,$)H=[H[0]&2,$.value];switch(H[0]){case 0:case 1:$=H;break;case 4:return F.label++,{value:H[1],done:!1};case 5:F.label++,q=H[1],H=[0];continue;case 7:H=F.ops.pop(),F.trys.pop();continue;default:if(($=F.trys,!($=$.length>0&&$[$.length-1]))&&(H[0]===6||H[0]===2)){F=0;continue}if(H[0]===3&&(!$||H[1]>$[0]&&H[1]<$[3])){F.label=H[1];break}if(H[0]===6&&F.label<$[1]){F.label=$[1],$=H;break}if($&&F.label<$[2]){F.label=$[2],F.ops.push(H);break}if($[2])F.ops.pop();F.trys.pop();continue}H=w.call(Q,F)}catch(M){H=[6,M],q=0}finally{B=$=0}if(H[0]&5)throw H[1];return{value:H[0]?H[1]:void 0,done:!0}}},$O=function(Q,w){for(var F in Q)if(F!=="default"&&!Object.prototype.hasOwnProperty.call(w,F))SX(w,Q,F)},SX=Object.create?function(Q,w,F,B){if(B===void 0)B=F;var q=Object.getOwnPropertyDescriptor(w,F);if(!q||("get"in q?!w.__esModule:q.writable||q.configurable))q={enumerable:!0,get:function(){return w[F]}};Object.defineProperty(Q,B,q)}:function(Q,w,F,B){if(B===void 0)B=F;Q[B]=w[F]},PX=function(Q){var w=typeof Symbol==="function"&&Symbol.iterator,F=w&&Q[w],B=0;if(F)return F.call(Q);if(Q&&typeof Q.length==="number")return{next:function(){if(Q&&B>=Q.length)Q=void 0;return{value:Q&&Q[B++],done:!Q}}};throw TypeError(w?"Object is not iterable.":"Symbol.iterator is not defined.")},KQ=function(Q,w){var F=typeof Symbol==="function"&&Q[Symbol.iterator];if(!F)return Q;var B=F.call(Q),q,$=[],G;try{while((w===void 0||w-- >0)&&!(q=B.next()).done)$.push(q.value)}catch(W){G={error:W}}finally{try{if(q&&!q.done&&(F=B.return))F.call(B)}finally{if(G)throw G.error}}return $},GO=function(){for(var Q=[],w=0;w<arguments.length;w++)Q=Q.concat(KQ(arguments[w]));return Q},OO=function(){for(var Q=0,w=0,F=arguments.length;w<F;w++)Q+=arguments[w].length;for(var B=Array(Q),q=0,w=0;w<F;w++)for(var $=arguments[w],G=0,W=$.length;G<W;G++,q++)B[q]=$[G];return B},WO=function(Q,w,F){if(F||arguments.length===2){for(var B=0,q=w.length,$;B<q;B++)if($||!(B in w)){if(!$)$=Array.prototype.slice.call(w,0,B);$[B]=w[B]}}return Q.concat($||Array.prototype.slice.call(w))},E5=function(Q){return this instanceof E5?(this.v=Q,this):new E5(Q)},HO=function(Q,w,F){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var B=F.apply(Q,w||[]),q,$=[];return q=Object.create((typeof AsyncIterator==="function"?AsyncIterator:Object).prototype),W("next"),W("throw"),W("return",G),q[Symbol.asyncIterator]=function(){return this},q;function G(R){return function(z){return Promise.resolve(z).then(R,U)}}function W(R,z){if(B[R]){if(q[R]=function(V){return new Promise(function(L,C){$.push([R,V,L,C])>1||O(R,V)})},z)q[R]=z(q[R])}}function O(R,z){try{H(B[R](z))}catch(V){N($[0][3],V)}}function H(R){R.value instanceof E5?Promise.resolve(R.value.v).then(M,U):N($[0][2],R)}function M(R){O("next",R)}function U(R){O("throw",R)}function N(R,z){if(R(z),$.shift(),$.length)O($[0][0],$[0][1])}},KO=function(Q){var w,F;return w={},B("next"),B("throw",function(q){throw q}),B("return"),w[Symbol.iterator]=function(){return this},w;function B(q,$){w[q]=Q[q]?function(G){return(F=!F)?{value:E5(Q[q](G)),done:!1}:$?$(G):G}:$}},zO=function(Q){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var w=Q[Symbol.asyncIterator],F;return w?w.call(Q):(Q=typeof PX==="function"?PX(Q):Q[Symbol.iterator](),F={},B("next"),B("throw"),B("return"),F[Symbol.asyncIterator]=function(){return this},F);function B($){F[$]=Q[$]&&function(G){return new Promise(function(W,O){G=Q[$](G),q(W,O,G.done,G.value)})}}function q($,G,W,O){Promise.resolve(O).then(function(H){$({value:H,done:W})},G)}},MO=function(Q,w){if(Object.defineProperty)Object.defineProperty(Q,"raw",{value:w});else Q.raw=w;return Q};var Y=Object.create?function(Q,w){Object.defineProperty(Q,"default",{enumerable:!0,value:w})}:function(Q,w){Q.default=w},Z=function(Q){return Z=Object.getOwnPropertyNames||function(w){var F=[];for(var B in w)if(Object.prototype.hasOwnProperty.call(w,B))F[F.length]=B;return F},Z(Q)};LO=function(Q){if(Q&&Q.__esModule)return Q;var w={};if(Q!=null){for(var F=Z(Q),B=0;B<F.length;B++)if(F[B]!=="default")SX(w,Q,F[B])}return Y(w,Q),w},VO=function(Q){return Q&&Q.__esModule?Q:{default:Q}},UO=function(Q,w,F,B){if(F==="a"&&!B)throw TypeError("Private accessor was defined without a getter");if(typeof w==="function"?Q!==w||!B:!w.has(Q))throw TypeError("Cannot read private member from an object whose class did not declare it");return F==="m"?B:F==="a"?B.call(Q):B?B.value:w.get(Q)},NO=function(Q,w,F,B,q){if(B==="m")throw TypeError("Private method is not writable");if(B==="a"&&!q)throw TypeError("Private accessor was defined without a setter");if(typeof w==="function"?Q!==w||!q:!w.has(Q))throw TypeError("Cannot write private member to an object whose class did not declare it");return B==="a"?q.call(Q,F):q?q.value=F:w.set(Q,F),F},RO=function(Q,w){if(w===null||typeof w!=="object"&&typeof w!=="function")throw TypeError("Cannot use 'in' operator on non-object");return typeof Q==="function"?w===Q:Q.has(w)},AO=function(Q,w,F){if(w!==null&&w!==void 0){if(typeof w!=="object"&&typeof w!=="function")throw TypeError("Object expected.");var B,q;if(F){if(!Symbol.asyncDispose)throw TypeError("Symbol.asyncDispose is not defined.");B=w[Symbol.asyncDispose]}if(B===void 0){if(!Symbol.dispose)throw TypeError("Symbol.dispose is not defined.");if(B=w[Symbol.dispose],F)q=B}if(typeof B!=="function")throw TypeError("Object not disposable.");if(q)B=function(){try{q.call(this)}catch($){return Promise.reject($)}};Q.stack.push({value:w,dispose:B,async:F})}else if(F)Q.stack.push({async:!0});return w};var J=typeof SuppressedError==="function"?SuppressedError:function(Q,w,F){var B=Error(F);return B.name="SuppressedError",B.error=Q,B.suppressed=w,B};EO=function(Q){function w($){Q.error=Q.hasError?new J($,Q.error,"An error was suppressed during disposal."):$,Q.hasError=!0}var F,B=0;function q(){while(F=Q.stack.pop())try{if(!F.async&&B===1)return B=0,Q.stack.push(F),Promise.resolve().then(q);if(F.dispose){var $=F.dispose.call(F.value);if(F.async)return B|=2,Promise.resolve($).then(q,function(G){return w(G),q()})}else B|=1}catch(G){w(G)}if(B===1)return Q.hasError?Promise.reject(Q.error):Promise.resolve();if(Q.hasError)throw Q.error}return q()},CO=function(Q,w){if(typeof Q==="string"&&/^\.\.?\//.test(Q))return Q.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(F,B,q,$,G){return B?w?".jsx":".js":q&&(!$||!G)?F:q+$+"."+G.toLowerCase()+"js"});return Q},D("__extends",oG),D("__assign",eG),D("__rest",DO),D("__decorate",XO),D("__param",YO),D("__esDecorate",ZO),D("__runInitializers",JO),D("__propKey",QO),D("__setFunctionName",wO),D("__metadata",FO),D("__awaiter",BO),D("__generator",qO),D("__exportStar",$O),D("__createBinding",SX),D("__values",PX),D("__read",KQ),D("__spread",GO),D("__spreadArrays",OO),D("__spreadArray",WO),D("__await",E5),D("__asyncGenerator",HO),D("__asyncDelegator",KO),D("__asyncValues",zO),D("__makeTemplateObject",MO),D("__importStar",LO),D("__importDefault",VO),D("__classPrivateFieldGet",UO),D("__classPrivateFieldSet",NO),D("__classPrivateFieldIn",RO),D("__addDisposableResource",AO),D("__disposeResources",EO),D("__rewriteRelativeImportExtension",CO)})});var jO=T((fX)=>{Object.defineProperty(fX,"__esModule",{value:!0});fX.resolveFetch=void 0;var c_=(D)=>{if(D)return(...X)=>D(...X);return(...X)=>fetch(...X)};fX.resolveFetch=c_});var zQ=T((c1)=>{Object.defineProperty(c1,"__esModule",{value:!0});c1.FunctionRegion=c1.FunctionsHttpError=c1.FunctionsRelayError=c1.FunctionsFetchError=c1.FunctionsError=void 0;class B4 extends Error{constructor(D,X="FunctionsError",Y){super(D);this.name=X,this.context=Y}}c1.FunctionsError=B4;class IO extends B4{constructor(D){super("Failed to send a request to the Edge Function","FunctionsFetchError",D)}}c1.FunctionsFetchError=IO;class PO extends B4{constructor(D){super("Relay Error invoking the Edge Function","FunctionsRelayError",D)}}c1.FunctionsRelayError=PO;class SO extends B4{constructor(D){super("Edge Function returned a non-2xx status code","FunctionsHttpError",D)}}c1.FunctionsHttpError=SO;var TO;(function(D){D.Any="any",D.ApNortheast1="ap-northeast-1",D.ApNortheast2="ap-northeast-2",D.ApSouth1="ap-south-1",D.ApSoutheast1="ap-southeast-1",D.ApSoutheast2="ap-southeast-2",D.CaCentral1="ca-central-1",D.EuCentral1="eu-central-1",D.EuWest1="eu-west-1",D.EuWest2="eu-west-2",D.EuWest3="eu-west-3",D.SaEast1="sa-east-1",D.UsEast1="us-east-1",D.UsWest1="us-west-1",D.UsWest2="us-west-2"})(TO||(c1.FunctionRegion=TO={}))});var fO=T((yX)=>{Object.defineProperty(yX,"__esModule",{value:!0});yX.FunctionsClient=void 0;var l_=h0(),n_=jO(),C5=zQ();class xO{constructor(D,{headers:X={},customFetch:Y,region:Z=C5.FunctionRegion.Any}={}){this.url=D,this.headers=X,this.region=Z,this.fetch=(0,n_.resolveFetch)(Y)}setAuth(D){this.headers.Authorization=`Bearer ${D}`}invoke(D){return l_.__awaiter(this,arguments,void 0,function*(X,Y={}){var Z;let J,Q;try{let{headers:w,method:F,body:B,signal:q,timeout:$}=Y,G={},{region:W}=Y;if(!W)W=this.region;let O=new URL(`${this.url}/${X}`);if(W&&W!=="any")G["x-region"]=W,O.searchParams.set("forceFunctionRegion",W);let H;if(B&&(w&&!Object.prototype.hasOwnProperty.call(w,"Content-Type")||!w))if(typeof Blob<"u"&&B instanceof Blob||B instanceof ArrayBuffer)G["Content-Type"]="application/octet-stream",H=B;else if(typeof B==="string")G["Content-Type"]="text/plain",H=B;else if(typeof FormData<"u"&&B instanceof FormData)H=B;else G["Content-Type"]="application/json",H=JSON.stringify(B);else H=B;let M=q;if($)if(Q=new AbortController,J=setTimeout(()=>Q.abort(),$),q)M=Q.signal,q.addEventListener("abort",()=>Q.abort());else M=Q.signal;let U=yield this.fetch(O.toString(),{method:F||"POST",headers:Object.assign(Object.assign(Object.assign({},G),this.headers),w),body:H,signal:M}).catch((V)=>{throw new C5.FunctionsFetchError(V)}),N=U.headers.get("x-relay-error");if(N&&N==="true")throw new C5.FunctionsRelayError(U);if(!U.ok)throw new C5.FunctionsHttpError(U);let R=((Z=U.headers.get("Content-Type"))!==null&&Z!==void 0?Z:"text/plain").split(";")[0].trim(),z;if(R==="application/json")z=yield U.json();else if(R==="application/octet-stream"||R==="application/pdf")z=yield U.blob();else if(R==="text/event-stream")z=U;else if(R==="multipart/form-data")z=yield U.formData();else z=yield U.text();return{data:z,error:null,response:U}}catch(w){return{data:null,error:w,response:w instanceof C5.FunctionsHttpError||w instanceof C5.FunctionsRelayError?w.context:void 0}}finally{if(J)clearTimeout(J)}})}}yX.FunctionsClient=xO});var yO=T((A1)=>{Object.defineProperty(A1,"__esModule",{value:!0});A1.FunctionRegion=A1.FunctionsRelayError=A1.FunctionsHttpError=A1.FunctionsFetchError=A1.FunctionsError=A1.FunctionsClient=void 0;var i_=fO();Object.defineProperty(A1,"FunctionsClient",{enumerable:!0,get:function(){return i_.FunctionsClient}});var q4=zQ();Object.defineProperty(A1,"FunctionsError",{enumerable:!0,get:function(){return q4.FunctionsError}});Object.defineProperty(A1,"FunctionsFetchError",{enumerable:!0,get:function(){return q4.FunctionsFetchError}});Object.defineProperty(A1,"FunctionsHttpError",{enumerable:!0,get:function(){return q4.FunctionsHttpError}});Object.defineProperty(A1,"FunctionsRelayError",{enumerable:!0,get:function(){return q4.FunctionsRelayError}});Object.defineProperty(A1,"FunctionRegion",{enumerable:!0,get:function(){return q4.FunctionRegion}})});var NQ=T((G4)=>{Object.defineProperty(G4,"__esModule",{value:!0});G4.WebSocketFactory=void 0;class UQ{constructor(){}static detectEnvironment(){var D;if(typeof WebSocket<"u")return{type:"native",constructor:WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};if(typeof global<"u"&&typeof global.WebSocket<"u")return{type:"native",constructor:global.WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocketPair<"u"&&typeof globalThis.WebSocket>"u")return{type:"cloudflare",error:"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.",workaround:"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime."};if(typeof globalThis<"u"&&globalThis.EdgeRuntime||typeof navigator<"u"&&((D=navigator.userAgent)===null||D===void 0?void 0:D.includes("Vercel-Edge")))return{type:"unsupported",error:"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.",workaround:"Use serverless functions or a different deployment target for WebSocket functionality."};if(typeof process<"u"){let X=process.versions;if(X&&X.node){let Y=X.node,Z=parseInt(Y.replace(/^v/,"").split(".")[0]);if(Z>=22){if(typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};return{type:"unsupported",error:`Node.js ${Z} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}}return{type:"unsupported",error:`Node.js ${Z} detected without native WebSocket support.`,workaround:`For Node.js < 22, install "ws" package and provide it via the transport option:
1
+ var Sh=Object.create;var{getPrototypeOf:xh,defineProperty:w9,getOwnPropertyNames:OX,getOwnPropertyDescriptor:fh}=Object,WX=Object.prototype.hasOwnProperty,J0=(D,X,Y)=>{for(let Z of OX(X))if(!WX.call(D,Z)&&Z!=="default")w9(D,Z,{get:()=>X[Z],enumerable:!0});if(Y){for(let Z of OX(X))if(!WX.call(Y,Z)&&Z!=="default")w9(Y,Z,{get:()=>X[Z],enumerable:!0});return Y}},N0=(D,X,Y)=>{Y=D!=null?Sh(xh(D)):{};let Z=X||!D||!D.__esModule?w9(Y,"default",{value:D,enumerable:!0}):Y;for(let J of OX(D))if(!WX.call(Z,J))w9(Z,J,{get:()=>D[J],enumerable:!0});return Z},HG=new WeakMap,yh=(D)=>{var X=HG.get(D),Y;if(X)return X;if(X=w9({},"__esModule",{value:!0}),D&&typeof D==="object"||typeof D==="function")OX(D).map((Z)=>!WX.call(X,Z)&&w9(X,Z,{get:()=>D[Z],enumerable:!(Y=fh(D,Z))||Y.enumerable}));return HG.set(D,X),X},T=(D,X)=>()=>(X||D((X={exports:{}}).exports,X),X.exports);var e7=(D,X)=>{for(var Y in X)w9(D,Y,{get:X[Y],enumerable:!0,configurable:!0,set:(Z)=>X[Y]=()=>Z})};var m1=(D,X)=>()=>(D&&(X=D(D=0)),X);var XD=T((LY0,KG)=>{var cJ={to(D,X){if(!X)return`\x1B[${D+1}G`;return`\x1B[${X+1};${D+1}H`},move(D,X){let Y="";if(D<0)Y+=`\x1B[${-D}D`;else if(D>0)Y+=`\x1B[${D}C`;if(X<0)Y+=`\x1B[${-X}A`;else if(X>0)Y+=`\x1B[${X}B`;return Y},up:(D=1)=>`\x1B[${D}A`,down:(D=1)=>`\x1B[${D}B`,forward:(D=1)=>`\x1B[${D}C`,backward:(D=1)=>`\x1B[${D}D`,nextLine:(D=1)=>"\x1B[E".repeat(D),prevLine:(D=1)=>"\x1B[F".repeat(D),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},kh={up:(D=1)=>"\x1B[S".repeat(D),down:(D=1)=>"\x1B[T".repeat(D)},uh={screen:"\x1B[2J",up:(D=1)=>"\x1B[1J".repeat(D),down:(D=1)=>"\x1B[J".repeat(D),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(D){let X="";for(let Y=0;Y<D;Y++)X+=this.line+(Y<D-1?cJ.up():"");if(D)X+=cJ.left;return X}};KG.exports={cursor:cJ,scroll:kh,erase:uh,beep:"\x07"}});var nJ=T((VY0,lJ)=>{var KX=process||{},zG=KX.argv||[],HX=KX.env||{},hh=!(!!HX.NO_COLOR||zG.includes("--no-color"))&&(!!HX.FORCE_COLOR||zG.includes("--color")||KX.platform==="win32"||(KX.stdout||{}).isTTY&&HX.TERM!=="dumb"||!!HX.CI),_h=(D,X,Y=D)=>(Z)=>{let J=""+Z,Q=J.indexOf(X,D.length);return~Q?D+vh(J,X,Y,Q)+X:D+J+X},vh=(D,X,Y,Z)=>{let J="",Q=0;do J+=D.substring(Q,Z)+Y,Q=Z+X.length,Z=D.indexOf(X,Q);while(~Z);return J+D.substring(Q)},MG=(D=hh)=>{let X=D?_h:()=>String;return{isColorSupported:D,reset:X("\x1B[0m","\x1B[0m"),bold:X("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:X("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:X("\x1B[3m","\x1B[23m"),underline:X("\x1B[4m","\x1B[24m"),inverse:X("\x1B[7m","\x1B[27m"),hidden:X("\x1B[8m","\x1B[28m"),strikethrough:X("\x1B[9m","\x1B[29m"),black:X("\x1B[30m","\x1B[39m"),red:X("\x1B[31m","\x1B[39m"),green:X("\x1B[32m","\x1B[39m"),yellow:X("\x1B[33m","\x1B[39m"),blue:X("\x1B[34m","\x1B[39m"),magenta:X("\x1B[35m","\x1B[39m"),cyan:X("\x1B[36m","\x1B[39m"),white:X("\x1B[37m","\x1B[39m"),gray:X("\x1B[90m","\x1B[39m"),bgBlack:X("\x1B[40m","\x1B[49m"),bgRed:X("\x1B[41m","\x1B[49m"),bgGreen:X("\x1B[42m","\x1B[49m"),bgYellow:X("\x1B[43m","\x1B[49m"),bgBlue:X("\x1B[44m","\x1B[49m"),bgMagenta:X("\x1B[45m","\x1B[49m"),bgCyan:X("\x1B[46m","\x1B[49m"),bgWhite:X("\x1B[47m","\x1B[49m"),blackBright:X("\x1B[90m","\x1B[39m"),redBright:X("\x1B[91m","\x1B[39m"),greenBright:X("\x1B[92m","\x1B[39m"),yellowBright:X("\x1B[93m","\x1B[39m"),blueBright:X("\x1B[94m","\x1B[39m"),magentaBright:X("\x1B[95m","\x1B[39m"),cyanBright:X("\x1B[96m","\x1B[39m"),whiteBright:X("\x1B[97m","\x1B[39m"),bgBlackBright:X("\x1B[100m","\x1B[49m"),bgRedBright:X("\x1B[101m","\x1B[49m"),bgGreenBright:X("\x1B[102m","\x1B[49m"),bgYellowBright:X("\x1B[103m","\x1B[49m"),bgBlueBright:X("\x1B[104m","\x1B[49m"),bgMagentaBright:X("\x1B[105m","\x1B[49m"),bgCyanBright:X("\x1B[106m","\x1B[49m"),bgWhiteBright:X("\x1B[107m","\x1B[49m")}};lJ.exports=MG();lJ.exports.createColors=MG});var RX=T((R1)=>{Object.defineProperty(R1,"__esModule",{value:!0});R1.isNXMonorepo=R1.isMonorepo=R1.findPackageRelativePathInMonorepo=R1.findPackagePath=R1.findNXMonorepoRoot=R1.findMonorepoRoot=void 0;var Z4=require("node:fs"),E6=require("node:path");function NX(D){let X=(0,E6.join)(D,"package.json"),Y=(0,E6.join)(D,"pnpm-workspace.yaml");if((0,Z4.existsSync)(Y)||(0,Z4.existsSync)(X)&&JSON.parse((0,Z4.readFileSync)(X,"utf-8")).workspaces)return D;let Z=(0,E6.dirname)(D);if(Z===D)throw Error("Monorepo root not found");return NX(Z)}R1.findMonorepoRoot=NX;function FQ(D){let X=(0,E6.join)(D,"nx.json");if((0,Z4.existsSync)(X))return D;let Y=(0,E6.dirname)(D);if(Y===D)throw Error("Monorepo root not found");return FQ(Y)}R1.findNXMonorepoRoot=FQ;function BQ(D,X,Y){let Z=(0,E6.join)(X,"node_modules",D);if((0,Z4.existsSync)(Z))return Z;if(X===Y)return null;let J=(0,E6.dirname)(X);return BQ(D,J,Y)}R1.findPackagePath=BQ;function V_(D,X){let Y=NX(X),Z=BQ(D,X,Y);if(Z)return(0,E6.relative)(X,Z);return null}R1.findPackageRelativePathInMonorepo=V_;function U_(D){try{return NX(D),!0}catch(X){return!1}}R1.isMonorepo=U_;function N_(D){try{return FQ(D),!0}catch(X){return!1}}R1.isNXMonorepo=N_});var h0=T((I20,xX)=>{var oG,eG,DO,XO,YO,ZO,JO,QO,wO,FO,BO,qO,$O,PX,KQ,GO,OO,WO,E5,HO,KO,zO,MO,LO,VO,UO,NO,RO,SX,AO,EO,CO;(function(D){var X=typeof global==="object"?global:typeof self==="object"?self:typeof this==="object"?this:{};if(typeof define==="function"&&define.amd)define("tslib",["exports"],function(Z){D(Y(X,Y(Z)))});else if(typeof xX==="object"&&typeof xX.exports==="object")D(Y(X,Y(xX.exports)));else D(Y(X));function Y(Z,J){if(Z!==X)if(typeof Object.create==="function")Object.defineProperty(Z,"__esModule",{value:!0});else Z.__esModule=!0;return function(Q,w){return Z[Q]=J?J(Q,w):w}}})(function(D){var X=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(Q,w){Q.__proto__=w}||function(Q,w){for(var F in w)if(Object.prototype.hasOwnProperty.call(w,F))Q[F]=w[F]};oG=function(Q,w){if(typeof w!=="function"&&w!==null)throw TypeError("Class extends value "+String(w)+" is not a constructor or null");X(Q,w);function F(){this.constructor=Q}Q.prototype=w===null?Object.create(w):(F.prototype=w.prototype,new F)},eG=Object.assign||function(Q){for(var w,F=1,B=arguments.length;F<B;F++){w=arguments[F];for(var q in w)if(Object.prototype.hasOwnProperty.call(w,q))Q[q]=w[q]}return Q},DO=function(Q,w){var F={};for(var B in Q)if(Object.prototype.hasOwnProperty.call(Q,B)&&w.indexOf(B)<0)F[B]=Q[B];if(Q!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var q=0,B=Object.getOwnPropertySymbols(Q);q<B.length;q++)if(w.indexOf(B[q])<0&&Object.prototype.propertyIsEnumerable.call(Q,B[q]))F[B[q]]=Q[B[q]]}return F},XO=function(Q,w,F,B){var q=arguments.length,$=q<3?w:B===null?B=Object.getOwnPropertyDescriptor(w,F):B,G;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")$=Reflect.decorate(Q,w,F,B);else for(var W=Q.length-1;W>=0;W--)if(G=Q[W])$=(q<3?G($):q>3?G(w,F,$):G(w,F))||$;return q>3&&$&&Object.defineProperty(w,F,$),$},YO=function(Q,w){return function(F,B){w(F,B,Q)}},ZO=function(Q,w,F,B,q,$){function G(C){if(C!==void 0&&typeof C!=="function")throw TypeError("Function expected");return C}var W=B.kind,O=W==="getter"?"get":W==="setter"?"set":"value",H=!w&&Q?B.static?Q:Q.prototype:null,M=w||(H?Object.getOwnPropertyDescriptor(H,B.name):{}),U,N=!1;for(var R=F.length-1;R>=0;R--){var z={};for(var V in B)z[V]=V==="access"?{}:B[V];for(var V in B.access)z.access[V]=B.access[V];z.addInitializer=function(C){if(N)throw TypeError("Cannot add initializers after decoration has completed");$.push(G(C||null))};var L=(0,F[R])(W==="accessor"?{get:M.get,set:M.set}:M[O],z);if(W==="accessor"){if(L===void 0)continue;if(L===null||typeof L!=="object")throw TypeError("Object expected");if(U=G(L.get))M.get=U;if(U=G(L.set))M.set=U;if(U=G(L.init))q.unshift(U)}else if(U=G(L))if(W==="field")q.unshift(U);else M[O]=U}if(H)Object.defineProperty(H,B.name,M);N=!0},JO=function(Q,w,F){var B=arguments.length>2;for(var q=0;q<w.length;q++)F=B?w[q].call(Q,F):w[q].call(Q);return B?F:void 0},QO=function(Q){return typeof Q==="symbol"?Q:"".concat(Q)},wO=function(Q,w,F){if(typeof w==="symbol")w=w.description?"[".concat(w.description,"]"):"";return Object.defineProperty(Q,"name",{configurable:!0,value:F?"".concat(F," ",w):w})},FO=function(Q,w){if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(Q,w)},BO=function(Q,w,F,B){function q($){return $ instanceof F?$:new F(function(G){G($)})}return new(F||(F=Promise))(function($,G){function W(M){try{H(B.next(M))}catch(U){G(U)}}function O(M){try{H(B.throw(M))}catch(U){G(U)}}function H(M){M.done?$(M.value):q(M.value).then(W,O)}H((B=B.apply(Q,w||[])).next())})},qO=function(Q,w){var F={label:0,sent:function(){if($[0]&1)throw $[1];return $[1]},trys:[],ops:[]},B,q,$,G=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return G.next=W(0),G.throw=W(1),G.return=W(2),typeof Symbol==="function"&&(G[Symbol.iterator]=function(){return this}),G;function W(H){return function(M){return O([H,M])}}function O(H){if(B)throw TypeError("Generator is already executing.");while(G&&(G=0,H[0]&&(F=0)),F)try{if(B=1,q&&($=H[0]&2?q.return:H[0]?q.throw||(($=q.return)&&$.call(q),0):q.next)&&!($=$.call(q,H[1])).done)return $;if(q=0,$)H=[H[0]&2,$.value];switch(H[0]){case 0:case 1:$=H;break;case 4:return F.label++,{value:H[1],done:!1};case 5:F.label++,q=H[1],H=[0];continue;case 7:H=F.ops.pop(),F.trys.pop();continue;default:if(($=F.trys,!($=$.length>0&&$[$.length-1]))&&(H[0]===6||H[0]===2)){F=0;continue}if(H[0]===3&&(!$||H[1]>$[0]&&H[1]<$[3])){F.label=H[1];break}if(H[0]===6&&F.label<$[1]){F.label=$[1],$=H;break}if($&&F.label<$[2]){F.label=$[2],F.ops.push(H);break}if($[2])F.ops.pop();F.trys.pop();continue}H=w.call(Q,F)}catch(M){H=[6,M],q=0}finally{B=$=0}if(H[0]&5)throw H[1];return{value:H[0]?H[1]:void 0,done:!0}}},$O=function(Q,w){for(var F in Q)if(F!=="default"&&!Object.prototype.hasOwnProperty.call(w,F))SX(w,Q,F)},SX=Object.create?function(Q,w,F,B){if(B===void 0)B=F;var q=Object.getOwnPropertyDescriptor(w,F);if(!q||("get"in q?!w.__esModule:q.writable||q.configurable))q={enumerable:!0,get:function(){return w[F]}};Object.defineProperty(Q,B,q)}:function(Q,w,F,B){if(B===void 0)B=F;Q[B]=w[F]},PX=function(Q){var w=typeof Symbol==="function"&&Symbol.iterator,F=w&&Q[w],B=0;if(F)return F.call(Q);if(Q&&typeof Q.length==="number")return{next:function(){if(Q&&B>=Q.length)Q=void 0;return{value:Q&&Q[B++],done:!Q}}};throw TypeError(w?"Object is not iterable.":"Symbol.iterator is not defined.")},KQ=function(Q,w){var F=typeof Symbol==="function"&&Q[Symbol.iterator];if(!F)return Q;var B=F.call(Q),q,$=[],G;try{while((w===void 0||w-- >0)&&!(q=B.next()).done)$.push(q.value)}catch(W){G={error:W}}finally{try{if(q&&!q.done&&(F=B.return))F.call(B)}finally{if(G)throw G.error}}return $},GO=function(){for(var Q=[],w=0;w<arguments.length;w++)Q=Q.concat(KQ(arguments[w]));return Q},OO=function(){for(var Q=0,w=0,F=arguments.length;w<F;w++)Q+=arguments[w].length;for(var B=Array(Q),q=0,w=0;w<F;w++)for(var $=arguments[w],G=0,W=$.length;G<W;G++,q++)B[q]=$[G];return B},WO=function(Q,w,F){if(F||arguments.length===2){for(var B=0,q=w.length,$;B<q;B++)if($||!(B in w)){if(!$)$=Array.prototype.slice.call(w,0,B);$[B]=w[B]}}return Q.concat($||Array.prototype.slice.call(w))},E5=function(Q){return this instanceof E5?(this.v=Q,this):new E5(Q)},HO=function(Q,w,F){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var B=F.apply(Q,w||[]),q,$=[];return q=Object.create((typeof AsyncIterator==="function"?AsyncIterator:Object).prototype),W("next"),W("throw"),W("return",G),q[Symbol.asyncIterator]=function(){return this},q;function G(R){return function(z){return Promise.resolve(z).then(R,U)}}function W(R,z){if(B[R]){if(q[R]=function(V){return new Promise(function(L,C){$.push([R,V,L,C])>1||O(R,V)})},z)q[R]=z(q[R])}}function O(R,z){try{H(B[R](z))}catch(V){N($[0][3],V)}}function H(R){R.value instanceof E5?Promise.resolve(R.value.v).then(M,U):N($[0][2],R)}function M(R){O("next",R)}function U(R){O("throw",R)}function N(R,z){if(R(z),$.shift(),$.length)O($[0][0],$[0][1])}},KO=function(Q){var w,F;return w={},B("next"),B("throw",function(q){throw q}),B("return"),w[Symbol.iterator]=function(){return this},w;function B(q,$){w[q]=Q[q]?function(G){return(F=!F)?{value:E5(Q[q](G)),done:!1}:$?$(G):G}:$}},zO=function(Q){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var w=Q[Symbol.asyncIterator],F;return w?w.call(Q):(Q=typeof PX==="function"?PX(Q):Q[Symbol.iterator](),F={},B("next"),B("throw"),B("return"),F[Symbol.asyncIterator]=function(){return this},F);function B($){F[$]=Q[$]&&function(G){return new Promise(function(W,O){G=Q[$](G),q(W,O,G.done,G.value)})}}function q($,G,W,O){Promise.resolve(O).then(function(H){$({value:H,done:W})},G)}},MO=function(Q,w){if(Object.defineProperty)Object.defineProperty(Q,"raw",{value:w});else Q.raw=w;return Q};var Y=Object.create?function(Q,w){Object.defineProperty(Q,"default",{enumerable:!0,value:w})}:function(Q,w){Q.default=w},Z=function(Q){return Z=Object.getOwnPropertyNames||function(w){var F=[];for(var B in w)if(Object.prototype.hasOwnProperty.call(w,B))F[F.length]=B;return F},Z(Q)};LO=function(Q){if(Q&&Q.__esModule)return Q;var w={};if(Q!=null){for(var F=Z(Q),B=0;B<F.length;B++)if(F[B]!=="default")SX(w,Q,F[B])}return Y(w,Q),w},VO=function(Q){return Q&&Q.__esModule?Q:{default:Q}},UO=function(Q,w,F,B){if(F==="a"&&!B)throw TypeError("Private accessor was defined without a getter");if(typeof w==="function"?Q!==w||!B:!w.has(Q))throw TypeError("Cannot read private member from an object whose class did not declare it");return F==="m"?B:F==="a"?B.call(Q):B?B.value:w.get(Q)},NO=function(Q,w,F,B,q){if(B==="m")throw TypeError("Private method is not writable");if(B==="a"&&!q)throw TypeError("Private accessor was defined without a setter");if(typeof w==="function"?Q!==w||!q:!w.has(Q))throw TypeError("Cannot write private member to an object whose class did not declare it");return B==="a"?q.call(Q,F):q?q.value=F:w.set(Q,F),F},RO=function(Q,w){if(w===null||typeof w!=="object"&&typeof w!=="function")throw TypeError("Cannot use 'in' operator on non-object");return typeof Q==="function"?w===Q:Q.has(w)},AO=function(Q,w,F){if(w!==null&&w!==void 0){if(typeof w!=="object"&&typeof w!=="function")throw TypeError("Object expected.");var B,q;if(F){if(!Symbol.asyncDispose)throw TypeError("Symbol.asyncDispose is not defined.");B=w[Symbol.asyncDispose]}if(B===void 0){if(!Symbol.dispose)throw TypeError("Symbol.dispose is not defined.");if(B=w[Symbol.dispose],F)q=B}if(typeof B!=="function")throw TypeError("Object not disposable.");if(q)B=function(){try{q.call(this)}catch($){return Promise.reject($)}};Q.stack.push({value:w,dispose:B,async:F})}else if(F)Q.stack.push({async:!0});return w};var J=typeof SuppressedError==="function"?SuppressedError:function(Q,w,F){var B=Error(F);return B.name="SuppressedError",B.error=Q,B.suppressed=w,B};EO=function(Q){function w($){Q.error=Q.hasError?new J($,Q.error,"An error was suppressed during disposal."):$,Q.hasError=!0}var F,B=0;function q(){while(F=Q.stack.pop())try{if(!F.async&&B===1)return B=0,Q.stack.push(F),Promise.resolve().then(q);if(F.dispose){var $=F.dispose.call(F.value);if(F.async)return B|=2,Promise.resolve($).then(q,function(G){return w(G),q()})}else B|=1}catch(G){w(G)}if(B===1)return Q.hasError?Promise.reject(Q.error):Promise.resolve();if(Q.hasError)throw Q.error}return q()},CO=function(Q,w){if(typeof Q==="string"&&/^\.\.?\//.test(Q))return Q.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(F,B,q,$,G){return B?w?".jsx":".js":q&&(!$||!G)?F:q+$+"."+G.toLowerCase()+"js"});return Q},D("__extends",oG),D("__assign",eG),D("__rest",DO),D("__decorate",XO),D("__param",YO),D("__esDecorate",ZO),D("__runInitializers",JO),D("__propKey",QO),D("__setFunctionName",wO),D("__metadata",FO),D("__awaiter",BO),D("__generator",qO),D("__exportStar",$O),D("__createBinding",SX),D("__values",PX),D("__read",KQ),D("__spread",GO),D("__spreadArrays",OO),D("__spreadArray",WO),D("__await",E5),D("__asyncGenerator",HO),D("__asyncDelegator",KO),D("__asyncValues",zO),D("__makeTemplateObject",MO),D("__importStar",LO),D("__importDefault",VO),D("__classPrivateFieldGet",UO),D("__classPrivateFieldSet",NO),D("__classPrivateFieldIn",RO),D("__addDisposableResource",AO),D("__disposeResources",EO),D("__rewriteRelativeImportExtension",CO)})});var jO=T((fX)=>{Object.defineProperty(fX,"__esModule",{value:!0});fX.resolveFetch=void 0;var c_=(D)=>{if(D)return(...X)=>D(...X);return(...X)=>fetch(...X)};fX.resolveFetch=c_});var zQ=T((c1)=>{Object.defineProperty(c1,"__esModule",{value:!0});c1.FunctionRegion=c1.FunctionsHttpError=c1.FunctionsRelayError=c1.FunctionsFetchError=c1.FunctionsError=void 0;class B4 extends Error{constructor(D,X="FunctionsError",Y){super(D);this.name=X,this.context=Y}}c1.FunctionsError=B4;class IO extends B4{constructor(D){super("Failed to send a request to the Edge Function","FunctionsFetchError",D)}}c1.FunctionsFetchError=IO;class PO extends B4{constructor(D){super("Relay Error invoking the Edge Function","FunctionsRelayError",D)}}c1.FunctionsRelayError=PO;class SO extends B4{constructor(D){super("Edge Function returned a non-2xx status code","FunctionsHttpError",D)}}c1.FunctionsHttpError=SO;var TO;(function(D){D.Any="any",D.ApNortheast1="ap-northeast-1",D.ApNortheast2="ap-northeast-2",D.ApSouth1="ap-south-1",D.ApSoutheast1="ap-southeast-1",D.ApSoutheast2="ap-southeast-2",D.CaCentral1="ca-central-1",D.EuCentral1="eu-central-1",D.EuWest1="eu-west-1",D.EuWest2="eu-west-2",D.EuWest3="eu-west-3",D.SaEast1="sa-east-1",D.UsEast1="us-east-1",D.UsWest1="us-west-1",D.UsWest2="us-west-2"})(TO||(c1.FunctionRegion=TO={}))});var fO=T((yX)=>{Object.defineProperty(yX,"__esModule",{value:!0});yX.FunctionsClient=void 0;var l_=h0(),n_=jO(),C5=zQ();class xO{constructor(D,{headers:X={},customFetch:Y,region:Z=C5.FunctionRegion.Any}={}){this.url=D,this.headers=X,this.region=Z,this.fetch=(0,n_.resolveFetch)(Y)}setAuth(D){this.headers.Authorization=`Bearer ${D}`}invoke(D){return l_.__awaiter(this,arguments,void 0,function*(X,Y={}){var Z;let J,Q;try{let{headers:w,method:F,body:B,signal:q,timeout:$}=Y,G={},{region:W}=Y;if(!W)W=this.region;let O=new URL(`${this.url}/${X}`);if(W&&W!=="any")G["x-region"]=W,O.searchParams.set("forceFunctionRegion",W);let H;if(B&&(w&&!Object.prototype.hasOwnProperty.call(w,"Content-Type")||!w))if(typeof Blob<"u"&&B instanceof Blob||B instanceof ArrayBuffer)G["Content-Type"]="application/octet-stream",H=B;else if(typeof B==="string")G["Content-Type"]="text/plain",H=B;else if(typeof FormData<"u"&&B instanceof FormData)H=B;else G["Content-Type"]="application/json",H=JSON.stringify(B);else H=B;let M=q;if($)if(Q=new AbortController,J=setTimeout(()=>Q.abort(),$),q)M=Q.signal,q.addEventListener("abort",()=>Q.abort());else M=Q.signal;let U=yield this.fetch(O.toString(),{method:F||"POST",headers:Object.assign(Object.assign(Object.assign({},G),this.headers),w),body:H,signal:M}).catch((V)=>{throw new C5.FunctionsFetchError(V)}),N=U.headers.get("x-relay-error");if(N&&N==="true")throw new C5.FunctionsRelayError(U);if(!U.ok)throw new C5.FunctionsHttpError(U);let R=((Z=U.headers.get("Content-Type"))!==null&&Z!==void 0?Z:"text/plain").split(";")[0].trim(),z;if(R==="application/json")z=yield U.json();else if(R==="application/octet-stream"||R==="application/pdf")z=yield U.blob();else if(R==="text/event-stream")z=U;else if(R==="multipart/form-data")z=yield U.formData();else z=yield U.text();return{data:z,error:null,response:U}}catch(w){return{data:null,error:w,response:w instanceof C5.FunctionsHttpError||w instanceof C5.FunctionsRelayError?w.context:void 0}}finally{if(J)clearTimeout(J)}})}}yX.FunctionsClient=xO});var yO=T((A1)=>{Object.defineProperty(A1,"__esModule",{value:!0});A1.FunctionRegion=A1.FunctionsRelayError=A1.FunctionsHttpError=A1.FunctionsFetchError=A1.FunctionsError=A1.FunctionsClient=void 0;var i_=fO();Object.defineProperty(A1,"FunctionsClient",{enumerable:!0,get:function(){return i_.FunctionsClient}});var q4=zQ();Object.defineProperty(A1,"FunctionsError",{enumerable:!0,get:function(){return q4.FunctionsError}});Object.defineProperty(A1,"FunctionsFetchError",{enumerable:!0,get:function(){return q4.FunctionsFetchError}});Object.defineProperty(A1,"FunctionsHttpError",{enumerable:!0,get:function(){return q4.FunctionsHttpError}});Object.defineProperty(A1,"FunctionsRelayError",{enumerable:!0,get:function(){return q4.FunctionsRelayError}});Object.defineProperty(A1,"FunctionRegion",{enumerable:!0,get:function(){return q4.FunctionRegion}})});var NQ=T((G4)=>{Object.defineProperty(G4,"__esModule",{value:!0});G4.WebSocketFactory=void 0;class UQ{constructor(){}static detectEnvironment(){var D;if(typeof WebSocket<"u")return{type:"native",constructor:WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};if(typeof global<"u"&&typeof global.WebSocket<"u")return{type:"native",constructor:global.WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocketPair<"u"&&typeof globalThis.WebSocket>"u")return{type:"cloudflare",error:"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.",workaround:"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime."};if(typeof globalThis<"u"&&globalThis.EdgeRuntime||typeof navigator<"u"&&((D=navigator.userAgent)===null||D===void 0?void 0:D.includes("Vercel-Edge")))return{type:"unsupported",error:"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.",workaround:"Use serverless functions or a different deployment target for WebSocket functionality."};if(typeof process<"u"){let X=process.versions;if(X&&X.node){let Y=X.node,Z=parseInt(Y.replace(/^v/,"").split(".")[0]);if(Z>=22){if(typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};return{type:"unsupported",error:`Node.js ${Z} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}}return{type:"unsupported",error:`Node.js ${Z} detected without native WebSocket support.`,workaround:`For Node.js < 22, install "ws" package and provide it via the transport option:
2
2
  import ws from "ws"
3
3
  new RealtimeClient(url, { transport: ws })`}}}return{type:"unsupported",error:"Unknown JavaScript runtime without WebSocket support.",workaround:"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation."}}static getWebSocketConstructor(){let D=this.detectEnvironment();if(D.constructor)return D.constructor;let X=D.error||"WebSocket not supported in this environment.";if(D.workaround)X+=`
4
4
 
@@ -227,19 +227,19 @@ Valid targets are:
227
227
  Valid targets are:
228
228
  ${D.map((B)=>B.id).join(`
229
229
  `)}`)}return F}Y0.promptForPlatformTarget=P70;function jf(D){var X,Y,Z;return`${(Z=(Y=(X=D.name)!==null&&X!==void 0?X:D.model)!==null&&Y!==void 0?Y:D.id)!==null&&Z!==void 0?Z:"?"}${D.virtual?` (${D.platform==="ios"?"simulator":"emulator"})`:""}`}Y0.getPlatformTargetName=jf;async function Tf(D){let X=[];if(await t2(D,D.android.name))X.push(D.android.name);if(await t2(D,D.ios.name))X.push(D.ios.name);return X.push(D.web.name),X}Y0.getAddedPlatforms=Tf;async function S70(D,X){let Y=await Promise.resolve().then(()=>a3.__importStar(zf())),Z=await Af(D),J=await r2(D,X);if(Y.diff(Z,J)==="minor"||Y.diff(Z,J)==="major")Vf.logger.warn(`${d0.default.strong("@capacitor/core")}${d0.default.weak(`@${Z}`)} version doesn't match ${d0.default.strong(`@capacitor/${X}`)}${d0.default.weak(`@${J}`)} version.
230
- Consider updating to a matching version, e.g. w/ ${d0.default.input(`npm install @capacitor/core@${J}`)}`)}Y0.checkPlatformVersions=S70;function x70(D,X){if(X[0]!=="@"){let Z=(0,p3.resolveNode)(D.app.rootDir,`@capacitor/${X}`,"package.json");if(Z)return(0,D5.dirname)(Z);let J=(0,p3.resolveNode)(D.app.rootDir,`@capacitor-community/${X}`,"package.json");if(J)return(0,D5.dirname)(J);let Q=(0,p3.resolveNode)(D.app.rootDir,`@ionic-enterprise/capacitor-${X}`,"package.json");if(Q)return(0,D5.dirname)(Q)}let Y=(0,p3.resolveNode)(D.app.rootDir,X,"package.json");if(Y)return(0,D5.dirname)(Y);return null}Y0.resolvePlatform=x70;async function f70(){try{let D=await(0,W70.runCommand)("java",["--version"]),Y=RegExp(/([0-9]+)\.?([0-9]*)\.?([0-9]*)/).exec(D);if(Y===null)return-1;let Z=parseInt(Y[1]),J=parseInt(Y[2]);if(typeof Z==="number"&&Z!=1)return Z;else if(typeof J==="number"&&Z==1&&J<9)return J;else return-1}catch(D){return-1}}Y0.checkJDKMajorVersion=f70;function y70(D){let X=D.replace(/([A-Z])/g,"-$1").toLowerCase();if(X.startsWith("-"))X=X.replace("-","");return`app-${X?`${X}-`:""}debug.apk`}Y0.parseApkNameFromFlavor=y70});var Pf=T((s2)=>{Object.defineProperty(s2,"__esModule",{value:!0});s2.tryFn=void 0;var k70=async(D,...X)=>{try{return await D(...X)}catch{}return null};s2.tryFn=k70});var Sf=T((o2)=>{Object.defineProperty(o2,"__esModule",{value:!0});o2.formatJSObject=void 0;var u70=h0(),h70=u70.__importDefault(require("util"));function _70(D){try{D=JSON.parse(JSON.stringify(D))}catch(X){throw Error(`Cannot parse object as JSON: ${X.stack?X.stack:X}`)}return h70.default.inspect(D,{compact:!1,breakLength:1/0,depth:1/0,maxArrayLength:1/0,maxStringLength:1/0})}o2.formatJSObject=_70});var xf=T((o6)=>{Object.defineProperty(o6,"__esModule",{value:!0});o6.lazy=o6.LazyPromise=o6.allSerial=void 0;function v70(D){return D.reduce((X,Y)=>X.then((Z)=>Y().then((J)=>Z.concat(J))),Promise.resolve([]))}o6.allSerial=v70;class Y$ extends Promise{constructor(D){super(()=>{});this._executor=D}then(D,X){return this._promise=this._promise||new Promise(this._executor),this._promise.then(D,X)}catch(D){return this._promise=this._promise||new Promise(this._executor),this._promise.catch(D)}}o6.LazyPromise=Y$;function b70(D){return new Y$(async(X,Y)=>{try{X(await D())}catch(Z){Y(Z)}})}o6.lazy=b70});var kf=T((lD)=>{var __dirname="/home/runner/work/CLI/CLI/node_modules/@capacitor/cli/dist";Object.defineProperty(lD,"__esModule",{value:!0});lD.writeConfig=lD.loadConfig=lD.CONFIG_FILE_NAME_JSON=lD.CONFIG_FILE_NAME_JS=lD.CONFIG_FILE_NAME_TS=void 0;var Q$=h0(),g70=Q$.__importDefault(KZ()),M1=O7(),U0=require("path"),Y5=Q$.__importDefault(W7()),m70=If(),e2=xZ(),d70=O3(),Z$=Pf(),c70=Sf(),ff=RX(),yf=X2(),k7=xf(),l70=u2(),J$=(0,g70.default)("capacitor:config");lD.CONFIG_FILE_NAME_TS="capacitor.config.ts";lD.CONFIG_FILE_NAME_JS="capacitor.config.js";lD.CONFIG_FILE_NAME_JSON="capacitor.config.json";async function n70(){var D,X,Y,Z;let J=process.cwd(),Q=(0,U0.dirname)(__dirname),w=await t70(J),F=await(async()=>{var O,H;if((0,ff.isNXMonorepo)(J)){let M=(0,ff.findNXMonorepoRoot)(J),U=await(0,Z$.tryFn)(M1.readJSON,(0,U0.resolve)(M,"package.json")),N=(O=U===null||U===void 0?void 0:U.devDependencies)!==null&&O!==void 0?O:{},R=(H=U===null||U===void 0?void 0:U.dependencies)!==null&&H!==void 0?H:{};return{devDependencies:N,dependencies:R}}return{}})(),B=(D=w.extConfig.appId)!==null&&D!==void 0?D:"",q=(X=w.extConfig.appName)!==null&&X!==void 0?X:"",$=(Y=w.extConfig.webDir)!==null&&Y!==void 0?Y:"www",G=await r70(Q),W={android:await s70(J,w.extConfig,G),ios:await o70(J,w.extConfig),web:await e70(J,$),cli:G,app:{rootDir:J,appId:B,appName:q,webDir:$,webDirAbs:(0,U0.resolve)(J,$),package:(Z=await(0,Z$.tryFn)(M1.readJSON,(0,U0.resolve)(J,"package.json")))!==null&&Z!==void 0?Z:{name:q,version:"1.0.0",...F},...w}};return J$("config: %O",W),W}lD.loadConfig=n70;async function i70(D,X){switch((0,U0.extname)(X)){case".json":{await(0,M1.writeJSON)(X,D,{spaces:2});break}case".ts":{await(0,M1.writeFile)(X,Q40(D));break}}}lD.writeConfig=i70;async function p70(D,X,Y){var Z;try{let J=(0,yf.resolveNode)(D,"typescript");if(!J)(0,e2.fatal)(`Could not find installation of TypeScript.
230
+ Consider updating to a matching version, e.g. w/ ${d0.default.input(`npm install @capacitor/core@${J}`)}`)}Y0.checkPlatformVersions=S70;function x70(D,X){if(X[0]!=="@"){let Z=(0,p3.resolveNode)(D.app.rootDir,`@capacitor/${X}`,"package.json");if(Z)return(0,D5.dirname)(Z);let J=(0,p3.resolveNode)(D.app.rootDir,`@capacitor-community/${X}`,"package.json");if(J)return(0,D5.dirname)(J);let Q=(0,p3.resolveNode)(D.app.rootDir,`@ionic-enterprise/capacitor-${X}`,"package.json");if(Q)return(0,D5.dirname)(Q)}let Y=(0,p3.resolveNode)(D.app.rootDir,X,"package.json");if(Y)return(0,D5.dirname)(Y);return null}Y0.resolvePlatform=x70;async function f70(){try{let D=await(0,W70.runCommand)("java",["--version"]),Y=RegExp(/([0-9]+)\.?([0-9]*)\.?([0-9]*)/).exec(D);if(Y===null)return-1;let Z=parseInt(Y[1]),J=parseInt(Y[2]);if(typeof Z==="number"&&Z!=1)return Z;else if(typeof J==="number"&&Z==1&&J<9)return J;else return-1}catch(D){return-1}}Y0.checkJDKMajorVersion=f70;function y70(D){let X=D.replace(/([A-Z])/g,"-$1").toLowerCase();if(X.startsWith("-"))X=X.replace("-","");return`app-${X?`${X}-`:""}debug.apk`}Y0.parseApkNameFromFlavor=y70});var Pf=T((s2)=>{Object.defineProperty(s2,"__esModule",{value:!0});s2.tryFn=void 0;var k70=async(D,...X)=>{try{return await D(...X)}catch{}return null};s2.tryFn=k70});var Sf=T((o2)=>{Object.defineProperty(o2,"__esModule",{value:!0});o2.formatJSObject=void 0;var u70=h0(),h70=u70.__importDefault(require("util"));function _70(D){try{D=JSON.parse(JSON.stringify(D))}catch(X){throw Error(`Cannot parse object as JSON: ${X.stack?X.stack:X}`)}return h70.default.inspect(D,{compact:!1,breakLength:1/0,depth:1/0,maxArrayLength:1/0,maxStringLength:1/0})}o2.formatJSObject=_70});var xf=T((o6)=>{Object.defineProperty(o6,"__esModule",{value:!0});o6.lazy=o6.LazyPromise=o6.allSerial=void 0;function v70(D){return D.reduce((X,Y)=>X.then((Z)=>Y().then((J)=>Z.concat(J))),Promise.resolve([]))}o6.allSerial=v70;class Y$ extends Promise{constructor(D){super(()=>{});this._executor=D}then(D,X){return this._promise=this._promise||new Promise(this._executor),this._promise.then(D,X)}catch(D){return this._promise=this._promise||new Promise(this._executor),this._promise.catch(D)}}o6.LazyPromise=Y$;function b70(D){return new Y$(async(X,Y)=>{try{X(await D())}catch(Z){Y(Z)}})}o6.lazy=b70});var kf=T((lD)=>{var __dirname="/home/runner/work/CLI/CLI/node_modules/@capacitor/cli/dist";Object.defineProperty(lD,"__esModule",{value:!0});lD.writeConfig=lD.loadConfig=lD.CONFIG_FILE_NAME_JSON=lD.CONFIG_FILE_NAME_JS=lD.CONFIG_FILE_NAME_TS=void 0;var Q$=h0(),g70=Q$.__importDefault(KZ()),M1=O7(),V0=require("path"),Y5=Q$.__importDefault(W7()),m70=If(),e2=xZ(),d70=O3(),Z$=Pf(),c70=Sf(),ff=RX(),yf=X2(),k7=xf(),l70=u2(),J$=(0,g70.default)("capacitor:config");lD.CONFIG_FILE_NAME_TS="capacitor.config.ts";lD.CONFIG_FILE_NAME_JS="capacitor.config.js";lD.CONFIG_FILE_NAME_JSON="capacitor.config.json";async function n70(){var D,X,Y,Z;let J=process.cwd(),Q=(0,V0.dirname)(__dirname),w=await t70(J),F=await(async()=>{var O,H;if((0,ff.isNXMonorepo)(J)){let M=(0,ff.findNXMonorepoRoot)(J),U=await(0,Z$.tryFn)(M1.readJSON,(0,V0.resolve)(M,"package.json")),N=(O=U===null||U===void 0?void 0:U.devDependencies)!==null&&O!==void 0?O:{},R=(H=U===null||U===void 0?void 0:U.dependencies)!==null&&H!==void 0?H:{};return{devDependencies:N,dependencies:R}}return{}})(),B=(D=w.extConfig.appId)!==null&&D!==void 0?D:"",q=(X=w.extConfig.appName)!==null&&X!==void 0?X:"",$=(Y=w.extConfig.webDir)!==null&&Y!==void 0?Y:"www",G=await r70(Q),W={android:await s70(J,w.extConfig,G),ios:await o70(J,w.extConfig),web:await e70(J,$),cli:G,app:{rootDir:J,appId:B,appName:q,webDir:$,webDirAbs:(0,V0.resolve)(J,$),package:(Z=await(0,Z$.tryFn)(M1.readJSON,(0,V0.resolve)(J,"package.json")))!==null&&Z!==void 0?Z:{name:q,version:"1.0.0",...F},...w}};return J$("config: %O",W),W}lD.loadConfig=n70;async function i70(D,X){switch((0,V0.extname)(X)){case".json":{await(0,M1.writeJSON)(X,D,{spaces:2});break}case".ts":{await(0,M1.writeFile)(X,Q40(D));break}}}lD.writeConfig=i70;async function p70(D,X,Y){var Z;try{let J=(0,yf.resolveNode)(D,"typescript");if(!J)(0,e2.fatal)(`Could not find installation of TypeScript.
231
231
  To use ${Y5.default.strong(X)} files, you must install TypeScript in your project, e.g. w/ ${Y5.default.input("npm install -D typescript")}`);let Q=require(J),w=(0,yf.requireTS)(Q,Y),F=w.default?await w.default:w;return{extConfigType:"ts",extConfigName:X,extConfigFilePath:Y,extConfig:F}}catch(J){if(!(0,e2.isFatal)(J))(0,e2.fatal)(`Parsing ${Y5.default.strong(X)} failed.
232
232
 
233
233
  ${(Z=J.stack)!==null&&Z!==void 0?Z:J}`);throw J}}async function a70(D,X,Y){var Z;try{return{extConfigType:"js",extConfigName:X,extConfigFilePath:Y,extConfig:await require(Y)}}catch(J){(0,e2.fatal)(`Parsing ${Y5.default.strong(X)} failed.
234
234
 
235
- ${(Z=J.stack)!==null&&Z!==void 0?Z:J}`)}}async function t70(D){var X;let Y=(0,U0.resolve)(D,lD.CONFIG_FILE_NAME_TS);if(await(0,M1.pathExists)(Y))return p70(D,lD.CONFIG_FILE_NAME_TS,Y);let Z=(0,U0.resolve)(D,lD.CONFIG_FILE_NAME_JS);if(await(0,M1.pathExists)(Z))return a70(D,lD.CONFIG_FILE_NAME_JS,Z);let J=(0,U0.resolve)(D,lD.CONFIG_FILE_NAME_JSON);return{extConfigType:"json",extConfigName:lD.CONFIG_FILE_NAME_JSON,extConfigFilePath:J,extConfig:(X=await(0,Z$.tryFn)(M1.readJSON,J))!==null&&X!==void 0?X:{}}}async function r70(D){let Y=(0,U0.join)(D,"assets"),Z="ios-spm-template.tar.gz",J="capacitor-cordova-ios-plugins.tar.gz",Q="android-template.tar.gz",w="capacitor-cordova-android-plugins.tar.gz";return{rootDir:D,assetsDir:"assets",assetsDirAbs:Y,assets:{ios:{platformTemplateArchive:"ios-spm-template.tar.gz",platformTemplateArchiveAbs:(0,U0.resolve)(Y,"ios-spm-template.tar.gz"),cordovaPluginsTemplateArchive:"capacitor-cordova-ios-plugins.tar.gz",cordovaPluginsTemplateArchiveAbs:(0,U0.resolve)(Y,"capacitor-cordova-ios-plugins.tar.gz")},android:{platformTemplateArchive:"android-template.tar.gz",platformTemplateArchiveAbs:(0,U0.resolve)(Y,"android-template.tar.gz"),cordovaPluginsTemplateArchive:"capacitor-cordova-android-plugins.tar.gz",cordovaPluginsTemplateArchiveAbs:(0,U0.resolve)(Y,"capacitor-cordova-android-plugins.tar.gz")}},package:await(0,M1.readJSON)((0,U0.resolve)(D,"package.json")),os:D40(process.platform)}}async function s70(D,X,Y){var Z,J,Q,w,F,B,q,$,G,W,O,H,M,U,N,R,z;let V="android",L=(J=(Z=X.android)===null||Z===void 0?void 0:Z.path)!==null&&J!==void 0?J:"android",C=(0,U0.resolve)(D,L),k="app",A="app/src",y="app/src/main",f="app/src/main/assets",S="app/src/main/assets/public",v="app/src/main/res",b="app/build/outputs/apk/",n=((Q=X.android)===null||Q===void 0?void 0:Q.flavor)||"";if((w=X.android)===null||w===void 0?void 0:w.flavor)b=`${b}/${(F=X.android)===null||F===void 0?void 0:F.flavor}`;let h=(0,m70.parseApkNameFromFlavor)(n),E=`${b}/debug`,P="capacitor-cordova-android-plugins",x=(0,k7.lazy)(()=>Z40(Y.os)),_={keystorePath:(q=(B=X.android)===null||B===void 0?void 0:B.buildOptions)===null||q===void 0?void 0:q.keystorePath,keystorePassword:(G=($=X.android)===null||$===void 0?void 0:$.buildOptions)===null||G===void 0?void 0:G.keystorePassword,keystoreAlias:(O=(W=X.android)===null||W===void 0?void 0:W.buildOptions)===null||O===void 0?void 0:O.keystoreAlias,keystoreAliasPassword:(M=(H=X.android)===null||H===void 0?void 0:H.buildOptions)===null||M===void 0?void 0:M.keystoreAliasPassword,signingType:(N=(U=X.android)===null||U===void 0?void 0:U.buildOptions)===null||N===void 0?void 0:N.signingType,releaseType:(z=(R=X.android)===null||R===void 0?void 0:R.buildOptions)===null||z===void 0?void 0:z.releaseType};return{name:"android",minVersion:"24",studioPath:x,platformDir:L,platformDirAbs:C,cordovaPluginsDir:P,cordovaPluginsDirAbs:(0,U0.resolve)(C,P),appDir:"app",appDirAbs:(0,U0.resolve)(C,"app"),srcDir:"app/src",srcDirAbs:(0,U0.resolve)(C,"app/src"),srcMainDir:"app/src/main",srcMainDirAbs:(0,U0.resolve)(C,"app/src/main"),assetsDir:"app/src/main/assets",assetsDirAbs:(0,U0.resolve)(C,"app/src/main/assets"),webDir:"app/src/main/assets/public",webDirAbs:(0,U0.resolve)(C,"app/src/main/assets/public"),resDir:"app/src/main/res",resDirAbs:(0,U0.resolve)(C,"app/src/main/res"),apkName:h,buildOutputDir:E,buildOutputDirAbs:(0,U0.resolve)(C,E),flavor:n,buildOptions:_}}async function o70(D,X){var Y,Z,J,Q,w,F,B,q,$,G,W,O;let H="ios",M=(Z=(Y=X.ios)===null||Y===void 0?void 0:Y.path)!==null&&Z!==void 0?Z:"ios",U=(0,U0.resolve)(D,M),N=(Q=(J=X.ios)===null||J===void 0?void 0:J.scheme)!==null&&Q!==void 0?Q:"App",R="App",z=(0,U0.resolve)(U,"App"),V="App/App",L=(0,U0.resolve)(U,"App/App"),C="App/App.xcodeproj",k=(0,U0.resolve)(U,"App/App.xcodeproj"),A=(0,k7.lazy)(()=>X40(z)),y=(0,k7.lazy)(()=>J40(D,U,z)),f=(0,k7.lazy)(()=>Y40(z,L,k)),S="capacitor-cordova-ios-plugins",v={exportMethod:(F=(w=X.ios)===null||w===void 0?void 0:w.buildOptions)===null||F===void 0?void 0:F.exportMethod,xcodeSigningStyle:(q=(B=X.ios)===null||B===void 0?void 0:B.buildOptions)===null||q===void 0?void 0:q.signingStyle,signingCertificate:(G=($=X.ios)===null||$===void 0?void 0:$.buildOptions)===null||G===void 0?void 0:G.signingCertificate,provisioningProfile:(O=(W=X.ios)===null||W===void 0?void 0:W.buildOptions)===null||O===void 0?void 0:O.provisioningProfile};return{name:"ios",minVersion:"15.0",platformDir:M,platformDirAbs:U,scheme:N,cordovaPluginsDir:"capacitor-cordova-ios-plugins",cordovaPluginsDirAbs:(0,U0.resolve)(U,"capacitor-cordova-ios-plugins"),nativeProjectDir:"App",nativeProjectDirAbs:z,nativeTargetDir:"App/App",nativeTargetDirAbs:L,nativeXcodeProjDir:"App/App.xcodeproj",nativeXcodeProjDirAbs:k,nativeXcodeWorkspaceDir:(0,k7.lazy)(async()=>(0,U0.relative)(U,await A)),nativeXcodeWorkspaceDirAbs:A,webDir:(0,k7.lazy)(async()=>(0,U0.relative)(U,await f)),webDirAbs:f,podPath:y,buildOptions:v}}async function e70(D,X){let Y=X,Z=(0,U0.resolve)(D,Y);return{name:"web",platformDir:Y,platformDirAbs:Z}}function D40(D){switch(D){case"darwin":return"mac";case"win32":return"windows";case"linux":return"linux"}return"unknown"}async function X40(D){return(0,U0.resolve)(D,"App.xcworkspace")}async function Y40(D,X,Y){let Z=/path\s=\spublic[\s\S]+?sourceTree\s=\s([^;]+)/,J=(0,U0.resolve)(Y,"project.pbxproj");try{let w=(await(0,M1.readFile)(J,{encoding:"utf8"})).match(Z);if(w&&w[1]==="SOURCE_ROOT")return d70.logger.warn(`Using the iOS project root for the ${Y5.default.strong("public")} directory is deprecated.
236
- Please follow the Upgrade Guide to move ${Y5.default.strong("public")} inside the iOS target directory: ${Y5.default.strong("https://capacitorjs.com/docs/updating/3-0#move-public-into-the-ios-target-directory")}`),(0,U0.resolve)(D,"public")}catch(Q){}return(0,U0.resolve)(X,"public")}async function Z40(D){if(process.env.CAPACITOR_ANDROID_STUDIO_PATH)return process.env.CAPACITOR_ANDROID_STUDIO_PATH;switch(D){case"mac":return"/Applications/Android Studio.app";case"windows":{let{runCommand:X}=await Promise.resolve().then(()=>Q$.__importStar(u2())),Y="C:\\Program Files\\Android\\Android Studio\\bin\\studio64.exe";try{if(!await(0,M1.pathExists)(Y)){let Z=await X("REG",["QUERY","HKEY_LOCAL_MACHINE\\SOFTWARE\\Android Studio","/v","Path"]);Z=Z.replace(/(\r\n|\n|\r)/gm,"");let J=Z.indexOf("REG_SZ");if(J>0)Y=Z.substring(J+6).trim()+"\\bin\\studio64.exe"}}catch(Z){J$("Error checking registry for Android Studio path: %O",Z);break}return Y}case"linux":{try{if(await(0,M1.pathExists)("/usr/local/android-studio/bin/studio"))return"/usr/local/android-studio/bin/studio"}catch(Z){J$("Error checking for studio executable: %O",Z)}return"/usr/local/android-studio/bin/studio.sh"}}return""}async function J40(D,X,Y){if(process.env.CAPACITOR_COCOAPODS_PATH)return process.env.CAPACITOR_COCOAPODS_PATH;let Z="";if(await(0,M1.pathExists)((0,U0.resolve)(D,"Gemfile")))Z=(0,U0.resolve)(D,"Gemfile");else if(await(0,M1.pathExists)((0,U0.resolve)(X,"Gemfile")))Z=(0,U0.resolve)(X,"Gemfile");else if(await(0,M1.pathExists)((0,U0.resolve)(Y,"Gemfile")))Z=(0,U0.resolve)(Y,"Gemfile");if(Z=="")try{let Q=await(0,l70.getCommandOutput)("git",["rev-parse","--show-toplevel"],{cwd:D});if(Q!=null)Z=(0,U0.resolve)(Q,"Gemfile")}catch(Q){}try{let Q=(await(0,M1.readFile)(Z)).toString();if(!Q)return"pod";if(new RegExp(/gem\s+['"]cocoapods/).test(Q))return"bundle exec pod";else return"pod"}catch{return"pod"}}function Q40(D){return`import type { CapacitorConfig } from '@capacitor/cli';
235
+ ${(Z=J.stack)!==null&&Z!==void 0?Z:J}`)}}async function t70(D){var X;let Y=(0,V0.resolve)(D,lD.CONFIG_FILE_NAME_TS);if(await(0,M1.pathExists)(Y))return p70(D,lD.CONFIG_FILE_NAME_TS,Y);let Z=(0,V0.resolve)(D,lD.CONFIG_FILE_NAME_JS);if(await(0,M1.pathExists)(Z))return a70(D,lD.CONFIG_FILE_NAME_JS,Z);let J=(0,V0.resolve)(D,lD.CONFIG_FILE_NAME_JSON);return{extConfigType:"json",extConfigName:lD.CONFIG_FILE_NAME_JSON,extConfigFilePath:J,extConfig:(X=await(0,Z$.tryFn)(M1.readJSON,J))!==null&&X!==void 0?X:{}}}async function r70(D){let Y=(0,V0.join)(D,"assets"),Z="ios-spm-template.tar.gz",J="capacitor-cordova-ios-plugins.tar.gz",Q="android-template.tar.gz",w="capacitor-cordova-android-plugins.tar.gz";return{rootDir:D,assetsDir:"assets",assetsDirAbs:Y,assets:{ios:{platformTemplateArchive:"ios-spm-template.tar.gz",platformTemplateArchiveAbs:(0,V0.resolve)(Y,"ios-spm-template.tar.gz"),cordovaPluginsTemplateArchive:"capacitor-cordova-ios-plugins.tar.gz",cordovaPluginsTemplateArchiveAbs:(0,V0.resolve)(Y,"capacitor-cordova-ios-plugins.tar.gz")},android:{platformTemplateArchive:"android-template.tar.gz",platformTemplateArchiveAbs:(0,V0.resolve)(Y,"android-template.tar.gz"),cordovaPluginsTemplateArchive:"capacitor-cordova-android-plugins.tar.gz",cordovaPluginsTemplateArchiveAbs:(0,V0.resolve)(Y,"capacitor-cordova-android-plugins.tar.gz")}},package:await(0,M1.readJSON)((0,V0.resolve)(D,"package.json")),os:D40(process.platform)}}async function s70(D,X,Y){var Z,J,Q,w,F,B,q,$,G,W,O,H,M,U,N,R,z;let V="android",L=(J=(Z=X.android)===null||Z===void 0?void 0:Z.path)!==null&&J!==void 0?J:"android",C=(0,V0.resolve)(D,L),k="app",A="app/src",y="app/src/main",f="app/src/main/assets",S="app/src/main/assets/public",v="app/src/main/res",b="app/build/outputs/apk/",n=((Q=X.android)===null||Q===void 0?void 0:Q.flavor)||"";if((w=X.android)===null||w===void 0?void 0:w.flavor)b=`${b}/${(F=X.android)===null||F===void 0?void 0:F.flavor}`;let h=(0,m70.parseApkNameFromFlavor)(n),E=`${b}/debug`,P="capacitor-cordova-android-plugins",x=(0,k7.lazy)(()=>Z40(Y.os)),_={keystorePath:(q=(B=X.android)===null||B===void 0?void 0:B.buildOptions)===null||q===void 0?void 0:q.keystorePath,keystorePassword:(G=($=X.android)===null||$===void 0?void 0:$.buildOptions)===null||G===void 0?void 0:G.keystorePassword,keystoreAlias:(O=(W=X.android)===null||W===void 0?void 0:W.buildOptions)===null||O===void 0?void 0:O.keystoreAlias,keystoreAliasPassword:(M=(H=X.android)===null||H===void 0?void 0:H.buildOptions)===null||M===void 0?void 0:M.keystoreAliasPassword,signingType:(N=(U=X.android)===null||U===void 0?void 0:U.buildOptions)===null||N===void 0?void 0:N.signingType,releaseType:(z=(R=X.android)===null||R===void 0?void 0:R.buildOptions)===null||z===void 0?void 0:z.releaseType};return{name:"android",minVersion:"24",studioPath:x,platformDir:L,platformDirAbs:C,cordovaPluginsDir:P,cordovaPluginsDirAbs:(0,V0.resolve)(C,P),appDir:"app",appDirAbs:(0,V0.resolve)(C,"app"),srcDir:"app/src",srcDirAbs:(0,V0.resolve)(C,"app/src"),srcMainDir:"app/src/main",srcMainDirAbs:(0,V0.resolve)(C,"app/src/main"),assetsDir:"app/src/main/assets",assetsDirAbs:(0,V0.resolve)(C,"app/src/main/assets"),webDir:"app/src/main/assets/public",webDirAbs:(0,V0.resolve)(C,"app/src/main/assets/public"),resDir:"app/src/main/res",resDirAbs:(0,V0.resolve)(C,"app/src/main/res"),apkName:h,buildOutputDir:E,buildOutputDirAbs:(0,V0.resolve)(C,E),flavor:n,buildOptions:_}}async function o70(D,X){var Y,Z,J,Q,w,F,B,q,$,G,W,O;let H="ios",M=(Z=(Y=X.ios)===null||Y===void 0?void 0:Y.path)!==null&&Z!==void 0?Z:"ios",U=(0,V0.resolve)(D,M),N=(Q=(J=X.ios)===null||J===void 0?void 0:J.scheme)!==null&&Q!==void 0?Q:"App",R="App",z=(0,V0.resolve)(U,"App"),V="App/App",L=(0,V0.resolve)(U,"App/App"),C="App/App.xcodeproj",k=(0,V0.resolve)(U,"App/App.xcodeproj"),A=(0,k7.lazy)(()=>X40(z)),y=(0,k7.lazy)(()=>J40(D,U,z)),f=(0,k7.lazy)(()=>Y40(z,L,k)),S="capacitor-cordova-ios-plugins",v={exportMethod:(F=(w=X.ios)===null||w===void 0?void 0:w.buildOptions)===null||F===void 0?void 0:F.exportMethod,xcodeSigningStyle:(q=(B=X.ios)===null||B===void 0?void 0:B.buildOptions)===null||q===void 0?void 0:q.signingStyle,signingCertificate:(G=($=X.ios)===null||$===void 0?void 0:$.buildOptions)===null||G===void 0?void 0:G.signingCertificate,provisioningProfile:(O=(W=X.ios)===null||W===void 0?void 0:W.buildOptions)===null||O===void 0?void 0:O.provisioningProfile};return{name:"ios",minVersion:"15.0",platformDir:M,platformDirAbs:U,scheme:N,cordovaPluginsDir:"capacitor-cordova-ios-plugins",cordovaPluginsDirAbs:(0,V0.resolve)(U,"capacitor-cordova-ios-plugins"),nativeProjectDir:"App",nativeProjectDirAbs:z,nativeTargetDir:"App/App",nativeTargetDirAbs:L,nativeXcodeProjDir:"App/App.xcodeproj",nativeXcodeProjDirAbs:k,nativeXcodeWorkspaceDir:(0,k7.lazy)(async()=>(0,V0.relative)(U,await A)),nativeXcodeWorkspaceDirAbs:A,webDir:(0,k7.lazy)(async()=>(0,V0.relative)(U,await f)),webDirAbs:f,podPath:y,buildOptions:v}}async function e70(D,X){let Y=X,Z=(0,V0.resolve)(D,Y);return{name:"web",platformDir:Y,platformDirAbs:Z}}function D40(D){switch(D){case"darwin":return"mac";case"win32":return"windows";case"linux":return"linux"}return"unknown"}async function X40(D){return(0,V0.resolve)(D,"App.xcworkspace")}async function Y40(D,X,Y){let Z=/path\s=\spublic[\s\S]+?sourceTree\s=\s([^;]+)/,J=(0,V0.resolve)(Y,"project.pbxproj");try{let w=(await(0,M1.readFile)(J,{encoding:"utf8"})).match(Z);if(w&&w[1]==="SOURCE_ROOT")return d70.logger.warn(`Using the iOS project root for the ${Y5.default.strong("public")} directory is deprecated.
236
+ Please follow the Upgrade Guide to move ${Y5.default.strong("public")} inside the iOS target directory: ${Y5.default.strong("https://capacitorjs.com/docs/updating/3-0#move-public-into-the-ios-target-directory")}`),(0,V0.resolve)(D,"public")}catch(Q){}return(0,V0.resolve)(X,"public")}async function Z40(D){if(process.env.CAPACITOR_ANDROID_STUDIO_PATH)return process.env.CAPACITOR_ANDROID_STUDIO_PATH;switch(D){case"mac":return"/Applications/Android Studio.app";case"windows":{let{runCommand:X}=await Promise.resolve().then(()=>Q$.__importStar(u2())),Y="C:\\Program Files\\Android\\Android Studio\\bin\\studio64.exe";try{if(!await(0,M1.pathExists)(Y)){let Z=await X("REG",["QUERY","HKEY_LOCAL_MACHINE\\SOFTWARE\\Android Studio","/v","Path"]);Z=Z.replace(/(\r\n|\n|\r)/gm,"");let J=Z.indexOf("REG_SZ");if(J>0)Y=Z.substring(J+6).trim()+"\\bin\\studio64.exe"}}catch(Z){J$("Error checking registry for Android Studio path: %O",Z);break}return Y}case"linux":{try{if(await(0,M1.pathExists)("/usr/local/android-studio/bin/studio"))return"/usr/local/android-studio/bin/studio"}catch(Z){J$("Error checking for studio executable: %O",Z)}return"/usr/local/android-studio/bin/studio.sh"}}return""}async function J40(D,X,Y){if(process.env.CAPACITOR_COCOAPODS_PATH)return process.env.CAPACITOR_COCOAPODS_PATH;let Z="";if(await(0,M1.pathExists)((0,V0.resolve)(D,"Gemfile")))Z=(0,V0.resolve)(D,"Gemfile");else if(await(0,M1.pathExists)((0,V0.resolve)(X,"Gemfile")))Z=(0,V0.resolve)(X,"Gemfile");else if(await(0,M1.pathExists)((0,V0.resolve)(Y,"Gemfile")))Z=(0,V0.resolve)(Y,"Gemfile");if(Z=="")try{let Q=await(0,l70.getCommandOutput)("git",["rev-parse","--show-toplevel"],{cwd:D});if(Q!=null)Z=(0,V0.resolve)(Q,"Gemfile")}catch(Q){}try{let Q=(await(0,M1.readFile)(Z)).toString();if(!Q)return"pod";if(new RegExp(/gem\s+['"]cocoapods/).test(Q))return"bundle exec pod";else return"pod"}catch{return"pod"}}function Q40(D){return`import type { CapacitorConfig } from '@capacitor/cli';
237
237
 
238
238
  const config: CapacitorConfig = ${(0,c70.formatJSObject)(D)};
239
239
 
240
240
  export default config;
241
- `}});function w40(){try{return q$.default.statSync("/.dockerenv"),!0}catch{return!1}}function F40(){try{return q$.default.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function $$(){if(B$===void 0)B$=w40()||F40();return B$}var q$,B$;var _f=m1(()=>{q$=V0(require("node:fs"))});function _7(){if(G$===void 0)G$=B40()||$$();return G$}var vf,G$,B40=()=>{try{return vf.default.statSync("/run/.containerenv"),!0}catch{return!1}};var O$=m1(()=>{_f();vf=V0(require("node:fs"))});var W$,gf,mf,bf=()=>{if(W$.default.platform!=="linux")return!1;if(gf.default.release().toLowerCase().includes("microsoft")){if(_7())return!1;return!0}try{return mf.default.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!_7():!1}catch{return!1}},K6;var H$=m1(()=>{O$();W$=V0(require("node:process")),gf=V0(require("node:os")),mf=V0(require("node:fs")),K6=W$.default.env.__IS_WSL_TEST__?bf:bf()});var K$,df,cf,lf,q40,z$=()=>`${K$.default.env.SYSTEMROOT||K$.default.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,_1=async(D,X={})=>{let{powerShellPath:Y,...Z}=X,J=_1.encodeCommand(D);return q40(Y??z$(),[..._1.argumentsPrefix,J],{encoding:"utf8",...Z})};var M$=m1(()=>{K$=V0(require("node:process")),df=require("node:buffer"),cf=require("node:util"),lf=V0(require("node:child_process")),q40=cf.promisify(lf.default.execFile);_1.argumentsPrefix=["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"];_1.encodeCommand=(D)=>df.Buffer.from(D,"utf16le").toString("base64");_1.escapeArgument=(D)=>`'${String(D).replaceAll("'","''")}'`});var pf,af,J5,$40,G40,O40=async()=>{return`${await G40()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`},XJ,nf,tf=async()=>{return nf??=(async()=>{try{let D=await XJ();return await J5.default.access(D,J5.constants.X_OK),!0}catch{return!1}})(),nf},rf=async()=>{let D=await XJ(),X=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:Y}=await _1(X,{powerShellPath:D});return Y.trim()},sf=async(D)=>{if(/^[a-z]+:\/\//i.test(D))return D;try{let{stdout:X}=await $40("wslpath",["-aw",D],{encoding:"utf8"});return X.trim()}catch{return D}};var of=m1(()=>{H$();M$();H$();pf=require("node:util"),af=V0(require("node:child_process")),J5=V0(require("node:fs/promises")),$40=pf.promisify(af.default.execFile),G40=(()=>{let X;return async function(){if(X)return X;let Y="/etc/wsl.conf",Z=!1;try{await J5.default.access(Y,J5.constants.F_OK),Z=!0}catch{}if(!Z)return"/mnt/";let J=await J5.default.readFile(Y,{encoding:"utf8"}),Q=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(J);if(!Q)return"/mnt/";return X=Q.groups.mountPoint.trim(),X=X.endsWith("/")?X:`${X}/`,X}})(),XJ=K6?O40:z$});function Q5(D,X,Y){let Z=(J)=>Object.defineProperty(D,X,{value:J,enumerable:!0,writable:!0});return Object.defineProperty(D,X,{configurable:!0,enumerable:!0,get(){let J=Y();return Z(J),J},set(J){Z(J)}}),D}async function L$(){if(Dy.default.platform!=="darwin")throw Error("macOS only");let{stdout:D}=await H40("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),Y=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(D)?.groups.id??"com.apple.Safari";if(Y==="com.apple.safari")return"com.apple.Safari";return Y}var ef,Dy,Xy,H40;var Yy=m1(()=>{ef=require("node:util"),Dy=V0(require("node:process")),Xy=require("node:child_process"),H40=ef.promisify(Xy.execFile)});async function Qy(D,{humanReadableOutput:X=!0,signal:Y}={}){if(Zy.default.platform!=="darwin")throw Error("macOS only");let Z=X?[]:["-ss"],J={};if(Y)J.signal=Y;let{stdout:Q}=await K40("osascript",["-e",D,Z],J);return Q.trim()}var Zy,Jy,V$,K40;var wy=m1(()=>{Zy=V0(require("node:process")),Jy=require("node:util"),V$=require("node:child_process"),K40=Jy.promisify(V$.execFile)});async function U$(D){return Qy(`tell application "Finder" to set app_path to application file id "${D}" as string
242
- tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var Fy=m1(()=>{wy()});async function R$(D=z40){let{stdout:X}=await D("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),Y=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(X);if(!Y)throw new N$(`Cannot find Windows browser in stdout: ${JSON.stringify(X)}`);let{id:Z}=Y.groups,J=$y[Z];if(!J)throw new N$(`Unknown browser ID: ${Z}`);return J}var By,qy,z40,$y,YJ,N$;var A$=m1(()=>{By=require("node:util"),qy=require("node:child_process"),z40=By.promisify(qy.execFile),$y={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"}},YJ=new Map(Object.entries($y));N$=class N$ extends Error{}});async function E$(){if(ZJ.default.platform==="darwin"){let D=await L$();return{name:await U$(D),id:D}}if(ZJ.default.platform==="linux"){let{stdout:D}=await M40("xdg-mime",["query","default","x-scheme-handler/http"]),X=D.trim();return{name:L40(X.replace(/.desktop$/,"").replace("-"," ")),id:X}}if(ZJ.default.platform==="win32")return R$();throw Error("Only macOS, Linux, and Windows are supported")}var Gy,ZJ,Oy,M40,L40=(D)=>D.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,(X)=>X.toUpperCase());var Wy=m1(()=>{Yy();Fy();A$();A$();Gy=require("node:util"),ZJ=V0(require("node:process")),Oy=require("node:child_process"),M40=Gy.promisify(Oy.execFile)});var JJ,V40,Hy;var Ky=m1(()=>{JJ=V0(require("node:process")),V40=Boolean(JJ.default.env.SSH_CONNECTION||JJ.default.env.SSH_CLIENT||JJ.default.env.SSH_TTY),Hy=V40});var T$={};e7(T$,{openApp:()=>N40,default:()=>R40,apps:()=>w5});function Vy(D){if(typeof D==="string"||Array.isArray(D))return D;let{[My]:X}=D;if(!X)throw Error(`${My} is not supported`);return X}function o3({[v7]:D},{wsl:X}={}){if(X&&K6)return Vy(X);if(!D)throw Error(`${v7} is not supported`);return Vy(D)}var wJ,j$,Uy,Ny,FJ,QJ,C$,zy,v7,My,Ly=async(D,X)=>{if(D.length===0)return;let Y=[];for(let Z of D)try{return await X(Z)}catch(J){Y.push(J)}throw AggregateError(Y,"Failed to open in all supported apps")},s3=async(D)=>{D={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...D};let X=D[QJ]===!0;if(delete D[QJ],Array.isArray(D.app))return Ly(D.app,(q)=>s3({...D,app:q,[QJ]:!0}));let{name:Y,arguments:Z=[]}=D.app??{};if(Z=[...Z],Array.isArray(Y))return Ly(Y,(q)=>s3({...D,app:{name:q,arguments:Z},[QJ]:!0}));if(Y==="browser"||Y==="browserPrivate"){let q={"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"},$={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},G;if(K6){let W=await rf();G=YJ.get(W)??{}}else G=await E$();if(G.id in q){let W=q[G.id.toLowerCase()];if(Y==="browserPrivate"){if(W==="safari")throw Error("Safari doesn't support opening in private mode via command line");Z.push($[W])}return s3({...D,app:{name:w5[W],arguments:Z}})}throw Error(`${G.name} is not supported as a default browser`)}let J,Q=[],w={},F=!1;if(K6&&!_7()&&!Hy&&!Y)F=await tf();if(v7==="darwin"){if(J="open",D.wait)Q.push("--wait-apps");if(D.background)Q.push("--background");if(D.newInstance)Q.push("--new");if(Y)Q.push("-a",Y)}else if(v7==="win32"||F){if(J=await XJ(),Q.push(..._1.argumentsPrefix),!K6)w.windowsVerbatimArguments=!0;if(K6&&D.target)D.target=await sf(D.target);let q=["$ProgressPreference = 'SilentlyContinue';","Start"];if(D.wait)q.push("-Wait");if(Y){if(q.push(_1.escapeArgument(Y)),D.target)Z.push(D.target)}else if(D.target)q.push(_1.escapeArgument(D.target));if(Z.length>0)Z=Z.map(($)=>_1.escapeArgument($)),q.push("-ArgumentList",Z.join(","));if(D.target=_1.encodeCommand(q.join(" ")),!D.wait)w.stdio="ignore"}else{if(Y)J=Y;else{let q=!C$||C$==="/",$=!1;try{await FJ.default.access(zy,FJ.constants.X_OK),$=!0}catch{}J=wJ.default.versions.electron??(v7==="android"||q||!$)?"xdg-open":zy}if(Z.length>0)Q.push(...Z);if(!D.wait)w.stdio="ignore",w.detached=!0}if(v7==="darwin"&&Z.length>0)Q.push("--args",...Z);if(D.target)Q.push(D.target);let B=Ny.default.spawn(J,Q,w);if(D.wait)return new Promise((q,$)=>{B.once("error",$),B.once("close",(G)=>{if(!D.allowNonzeroExitCode&&G!==0){$(Error(`Exited with code ${G}`));return}q(B)})});if(X)return new Promise((q,$)=>{B.once("error",$),B.once("spawn",()=>{B.once("close",(G)=>{if(B.off("error",$),G!==0){$(Error(`Exited with code ${G}`));return}B.unref(),q(B)})})});return B.unref(),new Promise((q,$)=>{B.once("error",$),B.once("spawn",()=>{B.off("error",$),q(B)})})},U40=(D,X)=>{if(typeof D!=="string")throw TypeError("Expected a `target`");return s3({...X,target:D})},N40=(D,X)=>{if(typeof D!=="string"&&!Array.isArray(D))throw TypeError("Expected a valid `name`");let{arguments:Y=[]}=X??{};if(Y!==void 0&&Y!==null&&!Array.isArray(Y))throw TypeError("Expected `appArguments` as Array type");return s3({...X,app:{name:D,arguments:Y}})},w5,R40;var I$=m1(()=>{of();M$();Wy();O$();Ky();wJ=V0(require("node:process")),j$=V0(require("node:path")),Uy=require("node:url"),Ny=V0(require("node:child_process")),FJ=V0(require("node:fs/promises")),QJ=Symbol("fallbackAttempt"),C$=j$.default.dirname(Uy.fileURLToPath("file:///home/runner/work/CLI/CLI/node_modules/open/index.js")),zy=j$.default.join(C$,"xdg-open"),{platform:v7,arch:My}=wJ.default;w5={browser:"browser",browserPrivate:"browserPrivate"};Q5(w5,"chrome",()=>o3({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"]}}));Q5(w5,"brave",()=>o3({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"]}}));Q5(w5,"firefox",()=>o3({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));Q5(w5,"edge",()=>o3({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));Q5(w5,"safari",()=>o3({darwin:"Safari"}));R40=U40});var yJ=T((Z8)=>{Z8.isInteger=(D)=>{if(typeof D==="number")return Number.isInteger(D);if(typeof D==="string"&&D.trim()!=="")return Number.isInteger(Number(D));return!1};Z8.find=(D,X)=>D.nodes.find((Y)=>Y.type===X);Z8.exceedsLimit=(D,X,Y=1,Z)=>{if(Z===!1)return!1;if(!Z8.isInteger(D)||!Z8.isInteger(X))return!1;return(Number(X)-Number(D))/Number(Y)>=Z};Z8.escapeNode=(D,X=0,Y)=>{let Z=D.nodes[X];if(!Z)return;if(Y&&Z.type===Y||Z.type==="open"||Z.type==="close"){if(Z.escaped!==!0)Z.value="\\"+Z.value,Z.escaped=!0}};Z8.encloseBrace=(D)=>{if(D.type!=="brace")return!1;if(D.commas>>0+D.ranges>>0===0)return D.invalid=!0,!0;return!1};Z8.isInvalidBrace=(D)=>{if(D.type!=="brace")return!1;if(D.invalid===!0||D.dollar)return!0;if(D.commas>>0+D.ranges>>0===0)return D.invalid=!0,!0;if(D.open!==!0||D.close!==!0)return D.invalid=!0,!0;return!1};Z8.isOpenOrClose=(D)=>{if(D.type==="open"||D.type==="close")return!0;return D.open===!0||D.close===!0};Z8.reduce=(D)=>D.reduce((X,Y)=>{if(Y.type==="text")X.push(Y.value);if(Y.type==="range")Y.type="text";return X},[]);Z8.flatten=(...D)=>{let X=[],Y=(Z)=>{for(let J=0;J<Z.length;J++){let Q=Z[J];if(Array.isArray(Q)){Y(Q);continue}if(Q!==void 0)X.push(Q)}return X};return Y(D),X}});var kJ=T((PW0,ak)=>{var pk=yJ();ak.exports=(D,X={})=>{let Y=(Z,J={})=>{let Q=X.escapeInvalid&&pk.isInvalidBrace(J),w=Z.invalid===!0&&X.escapeInvalid===!0,F="";if(Z.value){if((Q||w)&&pk.isOpenOrClose(Z))return"\\"+Z.value;return Z.value}if(Z.value)return Z.value;if(Z.nodes)for(let B of Z.nodes)F+=Y(B);return F};return Y(D)}});var rk=T((SW0,tk)=>{/*!
241
+ `}});function w40(){try{return q$.default.statSync("/.dockerenv"),!0}catch{return!1}}function F40(){try{return q$.default.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function $$(){if(B$===void 0)B$=w40()||F40();return B$}var q$,B$;var _f=m1(()=>{q$=N0(require("node:fs"))});function _7(){if(G$===void 0)G$=B40()||$$();return G$}var vf,G$,B40=()=>{try{return vf.default.statSync("/run/.containerenv"),!0}catch{return!1}};var O$=m1(()=>{_f();vf=N0(require("node:fs"))});var W$,gf,mf,bf=()=>{if(W$.default.platform!=="linux")return!1;if(gf.default.release().toLowerCase().includes("microsoft")){if(_7())return!1;return!0}try{return mf.default.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!_7():!1}catch{return!1}},K6;var H$=m1(()=>{O$();W$=N0(require("node:process")),gf=N0(require("node:os")),mf=N0(require("node:fs")),K6=W$.default.env.__IS_WSL_TEST__?bf:bf()});var K$,df,cf,lf,q40,z$=()=>`${K$.default.env.SYSTEMROOT||K$.default.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,_1=async(D,X={})=>{let{powerShellPath:Y,...Z}=X,J=_1.encodeCommand(D);return q40(Y??z$(),[..._1.argumentsPrefix,J],{encoding:"utf8",...Z})};var M$=m1(()=>{K$=N0(require("node:process")),df=require("node:buffer"),cf=require("node:util"),lf=N0(require("node:child_process")),q40=cf.promisify(lf.default.execFile);_1.argumentsPrefix=["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"];_1.encodeCommand=(D)=>df.Buffer.from(D,"utf16le").toString("base64");_1.escapeArgument=(D)=>`'${String(D).replaceAll("'","''")}'`});var pf,af,J5,$40,G40,O40=async()=>{return`${await G40()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`},XJ,nf,tf=async()=>{return nf??=(async()=>{try{let D=await XJ();return await J5.default.access(D,J5.constants.X_OK),!0}catch{return!1}})(),nf},rf=async()=>{let D=await XJ(),X=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:Y}=await _1(X,{powerShellPath:D});return Y.trim()},sf=async(D)=>{if(/^[a-z]+:\/\//i.test(D))return D;try{let{stdout:X}=await $40("wslpath",["-aw",D],{encoding:"utf8"});return X.trim()}catch{return D}};var of=m1(()=>{H$();M$();H$();pf=require("node:util"),af=N0(require("node:child_process")),J5=N0(require("node:fs/promises")),$40=pf.promisify(af.default.execFile),G40=(()=>{let X;return async function(){if(X)return X;let Y="/etc/wsl.conf",Z=!1;try{await J5.default.access(Y,J5.constants.F_OK),Z=!0}catch{}if(!Z)return"/mnt/";let J=await J5.default.readFile(Y,{encoding:"utf8"}),Q=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(J);if(!Q)return"/mnt/";return X=Q.groups.mountPoint.trim(),X=X.endsWith("/")?X:`${X}/`,X}})(),XJ=K6?O40:z$});function Q5(D,X,Y){let Z=(J)=>Object.defineProperty(D,X,{value:J,enumerable:!0,writable:!0});return Object.defineProperty(D,X,{configurable:!0,enumerable:!0,get(){let J=Y();return Z(J),J},set(J){Z(J)}}),D}async function L$(){if(Dy.default.platform!=="darwin")throw Error("macOS only");let{stdout:D}=await H40("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),Y=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(D)?.groups.id??"com.apple.Safari";if(Y==="com.apple.safari")return"com.apple.Safari";return Y}var ef,Dy,Xy,H40;var Yy=m1(()=>{ef=require("node:util"),Dy=N0(require("node:process")),Xy=require("node:child_process"),H40=ef.promisify(Xy.execFile)});async function Qy(D,{humanReadableOutput:X=!0,signal:Y}={}){if(Zy.default.platform!=="darwin")throw Error("macOS only");let Z=X?[]:["-ss"],J={};if(Y)J.signal=Y;let{stdout:Q}=await K40("osascript",["-e",D,Z],J);return Q.trim()}var Zy,Jy,V$,K40;var wy=m1(()=>{Zy=N0(require("node:process")),Jy=require("node:util"),V$=require("node:child_process"),K40=Jy.promisify(V$.execFile)});async function U$(D){return Qy(`tell application "Finder" to set app_path to application file id "${D}" as string
242
+ tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var Fy=m1(()=>{wy()});async function R$(D=z40){let{stdout:X}=await D("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),Y=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(X);if(!Y)throw new N$(`Cannot find Windows browser in stdout: ${JSON.stringify(X)}`);let{id:Z}=Y.groups,J=$y[Z];if(!J)throw new N$(`Unknown browser ID: ${Z}`);return J}var By,qy,z40,$y,YJ,N$;var A$=m1(()=>{By=require("node:util"),qy=require("node:child_process"),z40=By.promisify(qy.execFile),$y={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"}},YJ=new Map(Object.entries($y));N$=class N$ extends Error{}});async function E$(){if(ZJ.default.platform==="darwin"){let D=await L$();return{name:await U$(D),id:D}}if(ZJ.default.platform==="linux"){let{stdout:D}=await M40("xdg-mime",["query","default","x-scheme-handler/http"]),X=D.trim();return{name:L40(X.replace(/.desktop$/,"").replace("-"," ")),id:X}}if(ZJ.default.platform==="win32")return R$();throw Error("Only macOS, Linux, and Windows are supported")}var Gy,ZJ,Oy,M40,L40=(D)=>D.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,(X)=>X.toUpperCase());var Wy=m1(()=>{Yy();Fy();A$();A$();Gy=require("node:util"),ZJ=N0(require("node:process")),Oy=require("node:child_process"),M40=Gy.promisify(Oy.execFile)});var JJ,V40,Hy;var Ky=m1(()=>{JJ=N0(require("node:process")),V40=Boolean(JJ.default.env.SSH_CONNECTION||JJ.default.env.SSH_CLIENT||JJ.default.env.SSH_TTY),Hy=V40});var T$={};e7(T$,{openApp:()=>N40,default:()=>R40,apps:()=>w5});function Vy(D){if(typeof D==="string"||Array.isArray(D))return D;let{[My]:X}=D;if(!X)throw Error(`${My} is not supported`);return X}function o3({[v7]:D},{wsl:X}={}){if(X&&K6)return Vy(X);if(!D)throw Error(`${v7} is not supported`);return Vy(D)}var wJ,j$,Uy,Ny,FJ,QJ,C$,zy,v7,My,Ly=async(D,X)=>{if(D.length===0)return;let Y=[];for(let Z of D)try{return await X(Z)}catch(J){Y.push(J)}throw AggregateError(Y,"Failed to open in all supported apps")},s3=async(D)=>{D={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...D};let X=D[QJ]===!0;if(delete D[QJ],Array.isArray(D.app))return Ly(D.app,(q)=>s3({...D,app:q,[QJ]:!0}));let{name:Y,arguments:Z=[]}=D.app??{};if(Z=[...Z],Array.isArray(Y))return Ly(Y,(q)=>s3({...D,app:{name:q,arguments:Z},[QJ]:!0}));if(Y==="browser"||Y==="browserPrivate"){let q={"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"},$={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},G;if(K6){let W=await rf();G=YJ.get(W)??{}}else G=await E$();if(G.id in q){let W=q[G.id.toLowerCase()];if(Y==="browserPrivate"){if(W==="safari")throw Error("Safari doesn't support opening in private mode via command line");Z.push($[W])}return s3({...D,app:{name:w5[W],arguments:Z}})}throw Error(`${G.name} is not supported as a default browser`)}let J,Q=[],w={},F=!1;if(K6&&!_7()&&!Hy&&!Y)F=await tf();if(v7==="darwin"){if(J="open",D.wait)Q.push("--wait-apps");if(D.background)Q.push("--background");if(D.newInstance)Q.push("--new");if(Y)Q.push("-a",Y)}else if(v7==="win32"||F){if(J=await XJ(),Q.push(..._1.argumentsPrefix),!K6)w.windowsVerbatimArguments=!0;if(K6&&D.target)D.target=await sf(D.target);let q=["$ProgressPreference = 'SilentlyContinue';","Start"];if(D.wait)q.push("-Wait");if(Y){if(q.push(_1.escapeArgument(Y)),D.target)Z.push(D.target)}else if(D.target)q.push(_1.escapeArgument(D.target));if(Z.length>0)Z=Z.map(($)=>_1.escapeArgument($)),q.push("-ArgumentList",Z.join(","));if(D.target=_1.encodeCommand(q.join(" ")),!D.wait)w.stdio="ignore"}else{if(Y)J=Y;else{let q=!C$||C$==="/",$=!1;try{await FJ.default.access(zy,FJ.constants.X_OK),$=!0}catch{}J=wJ.default.versions.electron??(v7==="android"||q||!$)?"xdg-open":zy}if(Z.length>0)Q.push(...Z);if(!D.wait)w.stdio="ignore",w.detached=!0}if(v7==="darwin"&&Z.length>0)Q.push("--args",...Z);if(D.target)Q.push(D.target);let B=Ny.default.spawn(J,Q,w);if(D.wait)return new Promise((q,$)=>{B.once("error",$),B.once("close",(G)=>{if(!D.allowNonzeroExitCode&&G!==0){$(Error(`Exited with code ${G}`));return}q(B)})});if(X)return new Promise((q,$)=>{B.once("error",$),B.once("spawn",()=>{B.once("close",(G)=>{if(B.off("error",$),G!==0){$(Error(`Exited with code ${G}`));return}B.unref(),q(B)})})});return B.unref(),new Promise((q,$)=>{B.once("error",$),B.once("spawn",()=>{B.off("error",$),q(B)})})},U40=(D,X)=>{if(typeof D!=="string")throw TypeError("Expected a `target`");return s3({...X,target:D})},N40=(D,X)=>{if(typeof D!=="string"&&!Array.isArray(D))throw TypeError("Expected a valid `name`");let{arguments:Y=[]}=X??{};if(Y!==void 0&&Y!==null&&!Array.isArray(Y))throw TypeError("Expected `appArguments` as Array type");return s3({...X,app:{name:D,arguments:Y}})},w5,R40;var I$=m1(()=>{of();M$();Wy();O$();Ky();wJ=N0(require("node:process")),j$=N0(require("node:path")),Uy=require("node:url"),Ny=N0(require("node:child_process")),FJ=N0(require("node:fs/promises")),QJ=Symbol("fallbackAttempt"),C$=j$.default.dirname(Uy.fileURLToPath("file:///home/runner/work/CLI/CLI/node_modules/open/index.js")),zy=j$.default.join(C$,"xdg-open"),{platform:v7,arch:My}=wJ.default;w5={browser:"browser",browserPrivate:"browserPrivate"};Q5(w5,"chrome",()=>o3({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"]}}));Q5(w5,"brave",()=>o3({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"]}}));Q5(w5,"firefox",()=>o3({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));Q5(w5,"edge",()=>o3({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));Q5(w5,"safari",()=>o3({darwin:"Safari"}));R40=U40});var yJ=T((Z8)=>{Z8.isInteger=(D)=>{if(typeof D==="number")return Number.isInteger(D);if(typeof D==="string"&&D.trim()!=="")return Number.isInteger(Number(D));return!1};Z8.find=(D,X)=>D.nodes.find((Y)=>Y.type===X);Z8.exceedsLimit=(D,X,Y=1,Z)=>{if(Z===!1)return!1;if(!Z8.isInteger(D)||!Z8.isInteger(X))return!1;return(Number(X)-Number(D))/Number(Y)>=Z};Z8.escapeNode=(D,X=0,Y)=>{let Z=D.nodes[X];if(!Z)return;if(Y&&Z.type===Y||Z.type==="open"||Z.type==="close"){if(Z.escaped!==!0)Z.value="\\"+Z.value,Z.escaped=!0}};Z8.encloseBrace=(D)=>{if(D.type!=="brace")return!1;if(D.commas>>0+D.ranges>>0===0)return D.invalid=!0,!0;return!1};Z8.isInvalidBrace=(D)=>{if(D.type!=="brace")return!1;if(D.invalid===!0||D.dollar)return!0;if(D.commas>>0+D.ranges>>0===0)return D.invalid=!0,!0;if(D.open!==!0||D.close!==!0)return D.invalid=!0,!0;return!1};Z8.isOpenOrClose=(D)=>{if(D.type==="open"||D.type==="close")return!0;return D.open===!0||D.close===!0};Z8.reduce=(D)=>D.reduce((X,Y)=>{if(Y.type==="text")X.push(Y.value);if(Y.type==="range")Y.type="text";return X},[]);Z8.flatten=(...D)=>{let X=[],Y=(Z)=>{for(let J=0;J<Z.length;J++){let Q=Z[J];if(Array.isArray(Q)){Y(Q);continue}if(Q!==void 0)X.push(Q)}return X};return Y(D),X}});var kJ=T((PW0,ak)=>{var pk=yJ();ak.exports=(D,X={})=>{let Y=(Z,J={})=>{let Q=X.escapeInvalid&&pk.isInvalidBrace(J),w=Z.invalid===!0&&X.escapeInvalid===!0,F="";if(Z.value){if((Q||w)&&pk.isOpenOrClose(Z))return"\\"+Z.value;return Z.value}if(Z.value)return Z.value;if(Z.nodes)for(let B of Z.nodes)F+=Y(B);return F};return Y(D)}});var rk=T((SW0,tk)=>{/*!
243
243
  * is-number <https://github.com/jonschlinkert/is-number>
244
244
  *
245
245
  * Copyright (c) 2014-present, Jon Schlinkert.
@@ -255,7 +255,7 @@ tell application "System Events" to get value of property list item "CFBundleNam
255
255
  * Copyright (c) 2014-present, Jon Schlinkert.
256
256
  * Licensed under the MIT License.
257
257
  */var T30=require("util"),Fu=Qu(),wu=(D)=>D!==null&&typeof D==="object"&&!Array.isArray(D),I30=(D)=>{return(X)=>D===!0?Number(X):String(X)},o$=(D)=>{return typeof D==="number"||typeof D==="string"&&D!==""},FX=(D)=>Number.isInteger(+D),e$=(D)=>{let X=`${D}`,Y=-1;if(X[0]==="-")X=X.slice(1);if(X==="0")return!1;while(X[++Y]==="0");return Y>0},P30=(D,X,Y)=>{if(typeof D==="string"||typeof X==="string")return!0;return Y.stringify===!0},S30=(D,X,Y)=>{if(X>0){let Z=D[0]==="-"?"-":"";if(Z)D=D.slice(1);D=Z+D.padStart(Z?X-1:X,"0")}if(Y===!1)return String(D);return D},hJ=(D,X)=>{let Y=D[0]==="-"?"-":"";if(Y)D=D.slice(1),X--;while(D.length<X)D="0"+D;return Y?"-"+D:D},x30=(D,X,Y)=>{D.negatives.sort((F,B)=>F<B?-1:F>B?1:0),D.positives.sort((F,B)=>F<B?-1:F>B?1:0);let Z=X.capture?"":"?:",J="",Q="",w;if(D.positives.length)J=D.positives.map((F)=>hJ(String(F),Y)).join("|");if(D.negatives.length)Q=`-(${Z}${D.negatives.map((F)=>hJ(String(F),Y)).join("|")})`;if(J&&Q)w=`${J}|${Q}`;else w=J||Q;if(X.wrap)return`(${Z}${w})`;return w},Bu=(D,X,Y,Z)=>{if(Y)return Fu(D,X,{wrap:!1,...Z});let J=String.fromCharCode(D);if(D===X)return J;let Q=String.fromCharCode(X);return`[${J}-${Q}]`},qu=(D,X,Y)=>{if(Array.isArray(D)){let Z=Y.wrap===!0,J=Y.capture?"":"?:";return Z?`(${J}${D.join("|")})`:D.join("|")}return Fu(D,X,Y)},$u=(...D)=>{return RangeError("Invalid range arguments: "+T30.inspect(...D))},Gu=(D,X,Y)=>{if(Y.strictRanges===!0)throw $u([D,X]);return[]},f30=(D,X)=>{if(X.strictRanges===!0)throw TypeError(`Expected step "${D}" to be a number`);return[]},y30=(D,X,Y=1,Z={})=>{let J=Number(D),Q=Number(X);if(!Number.isInteger(J)||!Number.isInteger(Q)){if(Z.strictRanges===!0)throw $u([D,X]);return[]}if(J===0)J=0;if(Q===0)Q=0;let w=J>Q,F=String(D),B=String(X),q=String(Y);Y=Math.max(Math.abs(Y),1);let $=e$(F)||e$(B)||e$(q),G=$?Math.max(F.length,B.length,q.length):0,W=$===!1&&P30(D,X,Z)===!1,O=Z.transform||I30(W);if(Z.toRegex&&Y===1)return Bu(hJ(D,G),hJ(X,G),!0,Z);let H={negatives:[],positives:[]},M=(R)=>H[R<0?"negatives":"positives"].push(Math.abs(R)),U=[],N=0;while(w?J>=Q:J<=Q){if(Z.toRegex===!0&&Y>1)M(J);else U.push(S30(O(J,N),G,W));J=w?J-Y:J+Y,N++}if(Z.toRegex===!0)return Y>1?x30(H,Z,G):qu(U,null,{wrap:!1,...Z});return U},k30=(D,X,Y=1,Z={})=>{if(!FX(D)&&D.length>1||!FX(X)&&X.length>1)return Gu(D,X,Z);let J=Z.transform||((W)=>String.fromCharCode(W)),Q=`${D}`.charCodeAt(0),w=`${X}`.charCodeAt(0),F=Q>w,B=Math.min(Q,w),q=Math.max(Q,w);if(Z.toRegex&&Y===1)return Bu(B,q,!1,Z);let $=[],G=0;while(F?Q>=w:Q<=w)$.push(J(Q,G)),Q=F?Q-Y:Q+Y,G++;if(Z.toRegex===!0)return qu($,null,{wrap:!1,options:Z});return $},uJ=(D,X,Y,Z={})=>{if(X==null&&o$(D))return[D];if(!o$(D)||!o$(X))return Gu(D,X,Z);if(typeof Y==="function")return uJ(D,X,1,{transform:Y});if(wu(Y))return uJ(D,X,0,Y);let J={...Z};if(J.capture===!0)J.wrap=!0;if(Y=Y||J.step||1,!FX(Y)){if(Y!=null&&!wu(Y))return f30(Y,J);return uJ(D,X,1,Y)}if(FX(D)&&FX(X))return y30(D,X,Y,J);return k30(D,X,Math.max(Math.abs(Y),1),J)};Ou.exports=uJ});var Ku=T((yW0,Hu)=>{var u30=DG(),Wu=yJ(),h30=(D,X={})=>{let Y=(Z,J={})=>{let Q=Wu.isInvalidBrace(J),w=Z.invalid===!0&&X.escapeInvalid===!0,F=Q===!0||w===!0,B=X.escapeInvalid===!0?"\\":"",q="";if(Z.isOpen===!0)return B+Z.value;if(Z.isClose===!0)return console.log("node.isClose",B,Z.value),B+Z.value;if(Z.type==="open")return F?B+Z.value:"(";if(Z.type==="close")return F?B+Z.value:")";if(Z.type==="comma")return Z.prev.type==="comma"?"":F?Z.value:"|";if(Z.value)return Z.value;if(Z.nodes&&Z.ranges>0){let $=Wu.reduce(Z.nodes),G=u30(...$,{...X,wrap:!1,toRegex:!0,strictZeros:!0});if(G.length!==0)return $.length>1&&G.length>1?`(${G})`:G}if(Z.nodes)for(let $ of Z.nodes)q+=Y($,Z);return q};return Y(D)};Hu.exports=h30});var Lu=T((kW0,Mu)=>{var _30=DG(),zu=kJ(),r7=yJ(),M5=(D="",X="",Y=!1)=>{let Z=[];if(D=[].concat(D),X=[].concat(X),!X.length)return D;if(!D.length)return Y?r7.flatten(X).map((J)=>`{${J}}`):X;for(let J of D)if(Array.isArray(J))for(let Q of J)Z.push(M5(Q,X,Y));else for(let Q of X){if(Y===!0&&typeof Q==="string")Q=`{${Q}}`;Z.push(Array.isArray(Q)?M5(J,Q,Y):J+Q)}return r7.flatten(Z)},v30=(D,X={})=>{let Y=X.rangeLimit===void 0?1000:X.rangeLimit,Z=(J,Q={})=>{J.queue=[];let w=Q,F=Q.queue;while(w.type!=="brace"&&w.type!=="root"&&w.parent)w=w.parent,F=w.queue;if(J.invalid||J.dollar){F.push(M5(F.pop(),zu(J,X)));return}if(J.type==="brace"&&J.invalid!==!0&&J.nodes.length===2){F.push(M5(F.pop(),["{}"]));return}if(J.nodes&&J.ranges>0){let G=r7.reduce(J.nodes);if(r7.exceedsLimit(...G,X.step,Y))throw RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let W=_30(...G,X);if(W.length===0)W=zu(J,X);F.push(M5(F.pop(),W)),J.nodes=[];return}let B=r7.encloseBrace(J),q=J.queue,$=J;while($.type!=="brace"&&$.type!=="root"&&$.parent)$=$.parent,q=$.queue;for(let G=0;G<J.nodes.length;G++){let W=J.nodes[G];if(W.type==="comma"&&J.type==="brace"){if(G===1)q.push("");q.push("");continue}if(W.type==="close"){F.push(M5(F.pop(),q,B));continue}if(W.value&&W.type!=="open"){q.push(M5(q.pop(),W.value));continue}if(W.nodes)Z(W,J)}return q};return r7.flatten(Z(D))};Mu.exports=v30});var Uu=T((uW0,Vu)=>{Vu.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:`
258
- `,CHAR_NO_BREAK_SPACE:" ",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:"\t",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var Cu=T((hW0,Eu)=>{var b30=kJ(),{MAX_LENGTH:Nu,CHAR_BACKSLASH:XG,CHAR_BACKTICK:g30,CHAR_COMMA:m30,CHAR_DOT:d30,CHAR_LEFT_PARENTHESES:c30,CHAR_RIGHT_PARENTHESES:l30,CHAR_LEFT_CURLY_BRACE:n30,CHAR_RIGHT_CURLY_BRACE:i30,CHAR_LEFT_SQUARE_BRACKET:Ru,CHAR_RIGHT_SQUARE_BRACKET:Au,CHAR_DOUBLE_QUOTE:p30,CHAR_SINGLE_QUOTE:a30,CHAR_NO_BREAK_SPACE:t30,CHAR_ZERO_WIDTH_NOBREAK_SPACE:r30}=Uu(),s30=(D,X={})=>{if(typeof D!=="string")throw TypeError("Expected a string");let Y=X||{},Z=typeof Y.maxLength==="number"?Math.min(Nu,Y.maxLength):Nu;if(D.length>Z)throw SyntaxError(`Input length (${D.length}), exceeds max characters (${Z})`);let J={type:"root",input:D,nodes:[]},Q=[J],w=J,F=J,B=0,q=D.length,$=0,G=0,W,O=()=>D[$++],H=(M)=>{if(M.type==="text"&&F.type==="dot")F.type="text";if(F&&F.type==="text"&&M.type==="text"){F.value+=M.value;return}return w.nodes.push(M),M.parent=w,M.prev=F,F=M,M};H({type:"bos"});while($<q){if(w=Q[Q.length-1],W=O(),W===r30||W===t30)continue;if(W===XG){H({type:"text",value:(X.keepEscaping?W:"")+O()});continue}if(W===Au){H({type:"text",value:"\\"+W});continue}if(W===Ru){B++;let M;while($<q&&(M=O())){if(W+=M,M===Ru){B++;continue}if(M===XG){W+=O();continue}if(M===Au){if(B--,B===0)break}}H({type:"text",value:W});continue}if(W===c30){w=H({type:"paren",nodes:[]}),Q.push(w),H({type:"text",value:W});continue}if(W===l30){if(w.type!=="paren"){H({type:"text",value:W});continue}w=Q.pop(),H({type:"text",value:W}),w=Q[Q.length-1];continue}if(W===p30||W===a30||W===g30){let M=W,U;if(X.keepQuotes!==!0)W="";while($<q&&(U=O())){if(U===XG){W+=U+O();continue}if(U===M){if(X.keepQuotes===!0)W+=U;break}W+=U}H({type:"text",value:W});continue}if(W===n30){G++;let U={type:"brace",open:!0,close:!1,dollar:F.value&&F.value.slice(-1)==="$"||w.dollar===!0,depth:G,commas:0,ranges:0,nodes:[]};w=H(U),Q.push(w),H({type:"open",value:W});continue}if(W===i30){if(w.type!=="brace"){H({type:"text",value:W});continue}let M="close";w=Q.pop(),w.close=!0,H({type:M,value:W}),G--,w=Q[Q.length-1];continue}if(W===m30&&G>0){if(w.ranges>0){w.ranges=0;let M=w.nodes.shift();w.nodes=[M,{type:"text",value:b30(w)}]}H({type:"comma",value:W}),w.commas++;continue}if(W===d30&&G>0&&w.commas===0){let M=w.nodes;if(G===0||M.length===0){H({type:"text",value:W});continue}if(F.type==="dot"){if(w.range=[],F.value+=W,F.type="range",w.nodes.length!==3&&w.nodes.length!==5){w.invalid=!0,w.ranges=0,F.type="text";continue}w.ranges++,w.args=[];continue}if(F.type==="range"){M.pop();let U=M[M.length-1];U.value+=F.value+W,F=U,w.ranges--;continue}H({type:"dot",value:W});continue}H({type:"text",value:W})}do if(w=Q.pop(),w.type!=="root"){w.nodes.forEach((N)=>{if(!N.nodes){if(N.type==="open")N.isOpen=!0;if(N.type==="close")N.isClose=!0;if(!N.nodes)N.type="text";N.invalid=!0}});let M=Q[Q.length-1],U=M.nodes.indexOf(w);M.nodes.splice(U,1,...w.nodes)}while(Q.length>0);return H({type:"eos"}),J};Eu.exports=s30});var Iu=T((_W0,Tu)=>{var ju=kJ(),o30=Ku(),e30=Lu(),DX0=Cu(),b1=(D,X={})=>{let Y=[];if(Array.isArray(D))for(let Z of D){let J=b1.create(Z,X);if(Array.isArray(J))Y.push(...J);else Y.push(J)}else Y=[].concat(b1.create(D,X));if(X&&X.expand===!0&&X.nodupes===!0)Y=[...new Set(Y)];return Y};b1.parse=(D,X={})=>DX0(D,X);b1.stringify=(D,X={})=>{if(typeof D==="string")return ju(b1.parse(D,X),X);return ju(D,X)};b1.compile=(D,X={})=>{if(typeof D==="string")D=b1.parse(D,X);return o30(D,X)};b1.expand=(D,X={})=>{if(typeof D==="string")D=b1.parse(D,X);let Y=e30(D,X);if(X.noempty===!0)Y=Y.filter(Boolean);if(X.nodupes===!0)Y=[...new Set(Y)];return Y};b1.create=(D,X={})=>{if(D===""||D.length<3)return[D];return X.expand!==!0?b1.compile(D,X):b1.expand(D,X)};Tu.exports=b1});var BX=T((vW0,Su)=>{var XX0=require("path"),Pu={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},YX0={...Pu,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"},ZX0={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"};Su.exports={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:ZX0,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:XX0.sep,extglobChars(D){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${D.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(D){return D===!0?YX0:Pu}}});var qX=T((y1)=>{var JX0=require("path"),QX0=process.platform==="win32",{REGEX_BACKSLASH:wX0,REGEX_REMOVE_BACKSLASH:FX0,REGEX_SPECIAL_CHARS:BX0,REGEX_SPECIAL_CHARS_GLOBAL:qX0}=BX();y1.isObject=(D)=>D!==null&&typeof D==="object"&&!Array.isArray(D);y1.hasRegexChars=(D)=>BX0.test(D);y1.isRegexChar=(D)=>D.length===1&&y1.hasRegexChars(D);y1.escapeRegex=(D)=>D.replace(qX0,"\\$1");y1.toPosixSlashes=(D)=>D.replace(wX0,"/");y1.removeBackslashes=(D)=>{return D.replace(FX0,(X)=>{return X==="\\"?"":X})};y1.supportsLookbehinds=()=>{let D=process.version.slice(1).split(".").map(Number);if(D.length===3&&D[0]>=9||D[0]===8&&D[1]>=10)return!0;return!1};y1.isWindows=(D)=>{if(D&&typeof D.windows==="boolean")return D.windows;return QX0===!0||JX0.sep==="\\"};y1.escapeLast=(D,X,Y)=>{let Z=D.lastIndexOf(X,Y);if(Z===-1)return D;if(D[Z-1]==="\\")return y1.escapeLast(D,X,Z-1);return`${D.slice(0,Z)}\\${D.slice(Z)}`};y1.removePrefix=(D,X={})=>{let Y=D;if(Y.startsWith("./"))Y=Y.slice(2),X.prefix="./";return Y};y1.wrapOutput=(D,X={},Y={})=>{let Z=Y.contains?"":"^",J=Y.contains?"":"$",Q=`${Z}(?:${D})${J}`;if(X.negated===!0)Q=`(?:^(?!${Q}).*$)`;return Q}});var vu=T((gW0,_u)=>{var xu=qX(),{CHAR_ASTERISK:YG,CHAR_AT:$X0,CHAR_BACKWARD_SLASH:$X,CHAR_COMMA:GX0,CHAR_DOT:ZG,CHAR_EXCLAMATION_MARK:JG,CHAR_FORWARD_SLASH:hu,CHAR_LEFT_CURLY_BRACE:QG,CHAR_LEFT_PARENTHESES:wG,CHAR_LEFT_SQUARE_BRACKET:OX0,CHAR_PLUS:WX0,CHAR_QUESTION_MARK:fu,CHAR_RIGHT_CURLY_BRACE:HX0,CHAR_RIGHT_PARENTHESES:yu,CHAR_RIGHT_SQUARE_BRACKET:KX0}=BX(),ku=(D)=>{return D===hu||D===$X},uu=(D)=>{if(D.isPrefix!==!0)D.depth=D.isGlobstar?1/0:1},zX0=(D,X)=>{let Y=X||{},Z=D.length-1,J=Y.parts===!0||Y.scanToEnd===!0,Q=[],w=[],F=[],B=D,q=-1,$=0,G=0,W=!1,O=!1,H=!1,M=!1,U=!1,N=!1,R=!1,z=!1,V=!1,L=!1,C=0,k,A,y={value:"",depth:0,isGlob:!1},f=()=>q>=Z,S=()=>B.charCodeAt(q+1),v=()=>{return k=A,B.charCodeAt(++q)};while(q<Z){A=v();let P;if(A===$X){if(R=y.backslashes=!0,A=v(),A===QG)N=!0;continue}if(N===!0||A===QG){C++;while(f()!==!0&&(A=v())){if(A===$X){R=y.backslashes=!0,v();continue}if(A===QG){C++;continue}if(N!==!0&&A===ZG&&(A=v())===ZG){if(W=y.isBrace=!0,H=y.isGlob=!0,L=!0,J===!0)continue;break}if(N!==!0&&A===GX0){if(W=y.isBrace=!0,H=y.isGlob=!0,L=!0,J===!0)continue;break}if(A===HX0){if(C--,C===0){N=!1,W=y.isBrace=!0,L=!0;break}}}if(J===!0)continue;break}if(A===hu){if(Q.push(q),w.push(y),y={value:"",depth:0,isGlob:!1},L===!0)continue;if(k===ZG&&q===$+1){$+=2;continue}G=q+1;continue}if(Y.noext!==!0){if((A===WX0||A===$X0||A===YG||A===fu||A===JG)===!0&&S()===wG){if(H=y.isGlob=!0,M=y.isExtglob=!0,L=!0,A===JG&&q===$)V=!0;if(J===!0){while(f()!==!0&&(A=v())){if(A===$X){R=y.backslashes=!0,A=v();continue}if(A===yu){H=y.isGlob=!0,L=!0;break}}continue}break}}if(A===YG){if(k===YG)U=y.isGlobstar=!0;if(H=y.isGlob=!0,L=!0,J===!0)continue;break}if(A===fu){if(H=y.isGlob=!0,L=!0,J===!0)continue;break}if(A===OX0){while(f()!==!0&&(P=v())){if(P===$X){R=y.backslashes=!0,v();continue}if(P===KX0){O=y.isBracket=!0,H=y.isGlob=!0,L=!0;break}}if(J===!0)continue;break}if(Y.nonegate!==!0&&A===JG&&q===$){z=y.negated=!0,$++;continue}if(Y.noparen!==!0&&A===wG){if(H=y.isGlob=!0,J===!0){while(f()!==!0&&(A=v())){if(A===wG){R=y.backslashes=!0,A=v();continue}if(A===yu){L=!0;break}}continue}break}if(H===!0){if(L=!0,J===!0)continue;break}}if(Y.noext===!0)M=!1,H=!1;let b=B,n="",h="";if($>0)n=B.slice(0,$),B=B.slice($),G-=$;if(b&&H===!0&&G>0)b=B.slice(0,G),h=B.slice(G);else if(H===!0)b="",h=B;else b=B;if(b&&b!==""&&b!=="/"&&b!==B){if(ku(b.charCodeAt(b.length-1)))b=b.slice(0,-1)}if(Y.unescape===!0){if(h)h=xu.removeBackslashes(h);if(b&&R===!0)b=xu.removeBackslashes(b)}let E={prefix:n,input:D,start:$,base:b,glob:h,isBrace:W,isBracket:O,isGlob:H,isExtglob:M,isGlobstar:U,negated:z,negatedExtglob:V};if(Y.tokens===!0){if(E.maxDepth=0,!ku(A))w.push(y);E.tokens=w}if(Y.parts===!0||Y.tokens===!0){let P;for(let x=0;x<Q.length;x++){let _=P?P+1:$,g=Q[x],m=D.slice(_,g);if(Y.tokens){if(x===0&&$!==0)w[x].isPrefix=!0,w[x].value=n;else w[x].value=m;uu(w[x]),E.maxDepth+=w[x].depth}if(x!==0||m!=="")F.push(m);P=g}if(P&&P+1<D.length){let x=D.slice(P+1);if(F.push(x),Y.tokens)w[w.length-1].value=x,uu(w[w.length-1]),E.maxDepth+=w[w.length-1].depth}E.slashes=Q,E.parts=F}return E};_u.exports=zX0});var mu=T((mW0,gu)=>{var _J=BX(),g1=qX(),{MAX_LENGTH:vJ,POSIX_REGEX_SOURCE:MX0,REGEX_NON_SPECIAL_CHARS:LX0,REGEX_SPECIAL_CHARS_BACKREF:VX0,REPLACEMENTS:bu}=_J,UX0=(D,X)=>{if(typeof X.expandRange==="function")return X.expandRange(...D,X);D.sort();let Y=`[${D.join("-")}]`;try{new RegExp(Y)}catch(Z){return D.map((J)=>g1.escapeRegex(J)).join("..")}return Y},s7=(D,X)=>{return`Missing ${D}: "${X}" - use "\\\\${X}" to match literal characters`},FG=(D,X)=>{if(typeof D!=="string")throw TypeError("Expected a string");D=bu[D]||D;let Y={...X},Z=typeof Y.maxLength==="number"?Math.min(vJ,Y.maxLength):vJ,J=D.length;if(J>Z)throw SyntaxError(`Input length: ${J}, exceeds maximum allowed length: ${Z}`);let Q={type:"bos",value:"",output:Y.prepend||""},w=[Q],F=Y.capture?"":"?:",B=g1.isWindows(X),q=_J.globChars(B),$=_J.extglobChars(q),{DOT_LITERAL:G,PLUS_LITERAL:W,SLASH_LITERAL:O,ONE_CHAR:H,DOTS_SLASH:M,NO_DOT:U,NO_DOT_SLASH:N,NO_DOTS_SLASH:R,QMARK:z,QMARK_NO_DOT:V,STAR:L,START_ANCHOR:C}=q,k=(u)=>{return`(${F}(?:(?!${C}${u.dot?M:G}).)*?)`},A=Y.dot?"":U,y=Y.dot?z:V,f=Y.bash===!0?k(Y):L;if(Y.capture)f=`(${f})`;if(typeof Y.noext==="boolean")Y.noextglob=Y.noext;let S={input:D,index:-1,start:0,dot:Y.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:w};D=g1.removePrefix(D,S),J=D.length;let v=[],b=[],n=[],h=Q,E,P=()=>S.index===J-1,x=S.peek=(u=1)=>D[S.index+u],_=S.advance=()=>D[++S.index]||"",g=()=>D.slice(S.index+1),m=(u="",w0=0)=>{S.consumed+=u,S.index+=w0},a=(u)=>{S.output+=u.output!=null?u.output:u.value,m(u.value)},d=()=>{let u=1;while(x()==="!"&&(x(2)!=="("||x(3)==="?"))_(),S.start++,u++;if(u%2===0)return!1;return S.negated=!0,S.start++,!0},c=(u)=>{S[u]++,n.push(u)},o=(u)=>{S[u]--,n.pop()},I=(u)=>{if(h.type==="globstar"){let w0=S.braces>0&&(u.type==="comma"||u.type==="brace"),i=u.extglob===!0||v.length&&(u.type==="pipe"||u.type==="paren");if(u.type!=="slash"&&u.type!=="paren"&&!w0&&!i)S.output=S.output.slice(0,-h.output.length),h.type="star",h.value="*",h.output=f,S.output+=h.output}if(v.length&&u.type!=="paren")v[v.length-1].inner+=u.value;if(u.value||u.output)a(u);if(h&&h.type==="text"&&u.type==="text"){h.value+=u.value,h.output=(h.output||"")+u.value;return}u.prev=h,w.push(u),h=u},j=(u,w0)=>{let i={...$[w0],conditions:1,inner:""};i.prev=h,i.parens=S.parens,i.output=S.output;let B0=(Y.capture?"(":"")+i.open;c("parens"),I({type:u,value:w0,output:S.output?"":H}),I({type:"paren",extglob:!0,value:_(),output:B0}),v.push(i)},l=(u)=>{let w0=u.close+(Y.capture?")":""),i;if(u.type==="negate"){let B0=f;if(u.inner&&u.inner.length>1&&u.inner.includes("/"))B0=k(Y);if(B0!==f||P()||/^\)+$/.test(g()))w0=u.close=`)$))${B0}`;if(u.inner.includes("*")&&(i=g())&&/^\.[^\\/.]+$/.test(i)){let R0=FG(i,{...X,fastpaths:!1}).output;w0=u.close=`)${R0})${B0})`}if(u.prev.type==="bos")S.negatedExtglob=!0}I({type:"paren",extglob:!0,value:E,output:w0}),o("parens")};if(Y.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(D)){let u=!1,w0=D.replace(VX0,(i,B0,R0,S0,a0,jD)=>{if(S0==="\\")return u=!0,i;if(S0==="?"){if(B0)return B0+S0+(a0?z.repeat(a0.length):"");if(jD===0)return y+(a0?z.repeat(a0.length):"");return z.repeat(R0.length)}if(S0===".")return G.repeat(R0.length);if(S0==="*"){if(B0)return B0+S0+(a0?f:"");return f}return B0?i:`\\${i}`});if(u===!0)if(Y.unescape===!0)w0=w0.replace(/\\/g,"");else w0=w0.replace(/\\+/g,(i)=>{return i.length%2===0?"\\\\":i?"\\":""});if(w0===D&&Y.contains===!0)return S.output=D,S;return S.output=g1.wrapOutput(w0,S,X),S}while(!P()){if(E=_(),E==="\x00")continue;if(E==="\\"){let i=x();if(i==="/"&&Y.bash!==!0)continue;if(i==="."||i===";")continue;if(!i){E+="\\",I({type:"text",value:E});continue}let B0=/^\\+/.exec(g()),R0=0;if(B0&&B0[0].length>2){if(R0=B0[0].length,S.index+=R0,R0%2!==0)E+="\\"}if(Y.unescape===!0)E=_();else E+=_();if(S.brackets===0){I({type:"text",value:E});continue}}if(S.brackets>0&&(E!=="]"||h.value==="["||h.value==="[^")){if(Y.posix!==!1&&E===":"){let i=h.value.slice(1);if(i.includes("[")){if(h.posix=!0,i.includes(":")){let B0=h.value.lastIndexOf("["),R0=h.value.slice(0,B0),S0=h.value.slice(B0+2),a0=MX0[S0];if(a0){if(h.value=R0+a0,S.backtrack=!0,_(),!Q.output&&w.indexOf(h)===1)Q.output=H;continue}}}}if(E==="["&&x()!==":"||E==="-"&&x()==="]")E=`\\${E}`;if(E==="]"&&(h.value==="["||h.value==="[^"))E=`\\${E}`;if(Y.posix===!0&&E==="!"&&h.value==="[")E="^";h.value+=E,a({value:E});continue}if(S.quotes===1&&E!=='"'){E=g1.escapeRegex(E),h.value+=E,a({value:E});continue}if(E==='"'){if(S.quotes=S.quotes===1?0:1,Y.keepQuotes===!0)I({type:"text",value:E});continue}if(E==="("){c("parens"),I({type:"paren",value:E});continue}if(E===")"){if(S.parens===0&&Y.strictBrackets===!0)throw SyntaxError(s7("opening","("));let i=v[v.length-1];if(i&&S.parens===i.parens+1){l(v.pop());continue}I({type:"paren",value:E,output:S.parens?")":"\\)"}),o("parens");continue}if(E==="["){if(Y.nobracket===!0||!g().includes("]")){if(Y.nobracket!==!0&&Y.strictBrackets===!0)throw SyntaxError(s7("closing","]"));E=`\\${E}`}else c("brackets");I({type:"bracket",value:E});continue}if(E==="]"){if(Y.nobracket===!0||h&&h.type==="bracket"&&h.value.length===1){I({type:"text",value:E,output:`\\${E}`});continue}if(S.brackets===0){if(Y.strictBrackets===!0)throw SyntaxError(s7("opening","["));I({type:"text",value:E,output:`\\${E}`});continue}o("brackets");let i=h.value.slice(1);if(h.posix!==!0&&i[0]==="^"&&!i.includes("/"))E=`/${E}`;if(h.value+=E,a({value:E}),Y.literalBrackets===!1||g1.hasRegexChars(i))continue;let B0=g1.escapeRegex(h.value);if(S.output=S.output.slice(0,-h.value.length),Y.literalBrackets===!0){S.output+=B0,h.value=B0;continue}h.value=`(${F}${B0}|${h.value})`,S.output+=h.value;continue}if(E==="{"&&Y.nobrace!==!0){c("braces");let i={type:"brace",value:E,output:"(",outputIndex:S.output.length,tokensIndex:S.tokens.length};b.push(i),I(i);continue}if(E==="}"){let i=b[b.length-1];if(Y.nobrace===!0||!i){I({type:"text",value:E,output:E});continue}let B0=")";if(i.dots===!0){let R0=w.slice(),S0=[];for(let a0=R0.length-1;a0>=0;a0--){if(w.pop(),R0[a0].type==="brace")break;if(R0[a0].type!=="dots")S0.unshift(R0[a0].value)}B0=UX0(S0,Y),S.backtrack=!0}if(i.comma!==!0&&i.dots!==!0){let R0=S.output.slice(0,i.outputIndex),S0=S.tokens.slice(i.tokensIndex);i.value=i.output="\\{",E=B0="\\}",S.output=R0;for(let a0 of S0)S.output+=a0.output||a0.value}I({type:"brace",value:E,output:B0}),o("braces"),b.pop();continue}if(E==="|"){if(v.length>0)v[v.length-1].conditions++;I({type:"text",value:E});continue}if(E===","){let i=E,B0=b[b.length-1];if(B0&&n[n.length-1]==="braces")B0.comma=!0,i="|";I({type:"comma",value:E,output:i});continue}if(E==="/"){if(h.type==="dot"&&S.index===S.start+1){S.start=S.index+1,S.consumed="",S.output="",w.pop(),h=Q;continue}I({type:"slash",value:E,output:O});continue}if(E==="."){if(S.braces>0&&h.type==="dot"){if(h.value===".")h.output=G;let i=b[b.length-1];h.type="dots",h.output+=E,h.value+=E,i.dots=!0;continue}if(S.braces+S.parens===0&&h.type!=="bos"&&h.type!=="slash"){I({type:"text",value:E,output:G});continue}I({type:"dot",value:E,output:G});continue}if(E==="?"){if(!(h&&h.value==="(")&&Y.noextglob!==!0&&x()==="("&&x(2)!=="?"){j("qmark",E);continue}if(h&&h.type==="paren"){let B0=x(),R0=E;if(B0==="<"&&!g1.supportsLookbehinds())throw Error("Node.js v10 or higher is required for regex lookbehinds");if(h.value==="("&&!/[!=<:]/.test(B0)||B0==="<"&&!/<([!=]|\w+>)/.test(g()))R0=`\\${E}`;I({type:"text",value:E,output:R0});continue}if(Y.dot!==!0&&(h.type==="slash"||h.type==="bos")){I({type:"qmark",value:E,output:V});continue}I({type:"qmark",value:E,output:z});continue}if(E==="!"){if(Y.noextglob!==!0&&x()==="("){if(x(2)!=="?"||!/[!=<:]/.test(x(3))){j("negate",E);continue}}if(Y.nonegate!==!0&&S.index===0){d();continue}}if(E==="+"){if(Y.noextglob!==!0&&x()==="("&&x(2)!=="?"){j("plus",E);continue}if(h&&h.value==="("||Y.regex===!1){I({type:"plus",value:E,output:W});continue}if(h&&(h.type==="bracket"||h.type==="paren"||h.type==="brace")||S.parens>0){I({type:"plus",value:E});continue}I({type:"plus",value:W});continue}if(E==="@"){if(Y.noextglob!==!0&&x()==="("&&x(2)!=="?"){I({type:"at",extglob:!0,value:E,output:""});continue}I({type:"text",value:E});continue}if(E!=="*"){if(E==="$"||E==="^")E=`\\${E}`;let i=LX0.exec(g());if(i)E+=i[0],S.index+=i[0].length;I({type:"text",value:E});continue}if(h&&(h.type==="globstar"||h.star===!0)){h.type="star",h.star=!0,h.value+=E,h.output=f,S.backtrack=!0,S.globstar=!0,m(E);continue}let u=g();if(Y.noextglob!==!0&&/^\([^?]/.test(u)){j("star",E);continue}if(h.type==="star"){if(Y.noglobstar===!0){m(E);continue}let i=h.prev,B0=i.prev,R0=i.type==="slash"||i.type==="bos",S0=B0&&(B0.type==="star"||B0.type==="globstar");if(Y.bash===!0&&(!R0||u[0]&&u[0]!=="/")){I({type:"star",value:E,output:""});continue}let a0=S.braces>0&&(i.type==="comma"||i.type==="brace"),jD=v.length&&(i.type==="pipe"||i.type==="paren");if(!R0&&i.type!=="paren"&&!a0&&!jD){I({type:"star",value:E,output:""});continue}while(u.slice(0,3)==="/**"){let N1=D[S.index+4];if(N1&&N1!=="/")break;u=u.slice(3),m("/**",3)}if(i.type==="bos"&&P()){h.type="globstar",h.value+=E,h.output=k(Y),S.output=h.output,S.globstar=!0,m(E);continue}if(i.type==="slash"&&i.prev.type!=="bos"&&!S0&&P()){S.output=S.output.slice(0,-(i.output+h.output).length),i.output=`(?:${i.output}`,h.type="globstar",h.output=k(Y)+(Y.strictSlashes?")":"|$)"),h.value+=E,S.globstar=!0,S.output+=i.output+h.output,m(E);continue}if(i.type==="slash"&&i.prev.type!=="bos"&&u[0]==="/"){let N1=u[1]!==void 0?"|$":"";S.output=S.output.slice(0,-(i.output+h.output).length),i.output=`(?:${i.output}`,h.type="globstar",h.output=`${k(Y)}${O}|${O}${N1})`,h.value+=E,S.output+=i.output+h.output,S.globstar=!0,m(E+_()),I({type:"slash",value:"/",output:""});continue}if(i.type==="bos"&&u[0]==="/"){h.type="globstar",h.value+=E,h.output=`(?:^|${O}|${k(Y)}${O})`,S.output=h.output,S.globstar=!0,m(E+_()),I({type:"slash",value:"/",output:""});continue}S.output=S.output.slice(0,-h.output.length),h.type="globstar",h.output=k(Y),h.value+=E,S.output+=h.output,S.globstar=!0,m(E);continue}let w0={type:"star",value:E,output:f};if(Y.bash===!0){if(w0.output=".*?",h.type==="bos"||h.type==="slash")w0.output=A+w0.output;I(w0);continue}if(h&&(h.type==="bracket"||h.type==="paren")&&Y.regex===!0){w0.output=E,I(w0);continue}if(S.index===S.start||h.type==="slash"||h.type==="dot"){if(h.type==="dot")S.output+=N,h.output+=N;else if(Y.dot===!0)S.output+=R,h.output+=R;else S.output+=A,h.output+=A;if(x()!=="*")S.output+=H,h.output+=H}I(w0)}while(S.brackets>0){if(Y.strictBrackets===!0)throw SyntaxError(s7("closing","]"));S.output=g1.escapeLast(S.output,"["),o("brackets")}while(S.parens>0){if(Y.strictBrackets===!0)throw SyntaxError(s7("closing",")"));S.output=g1.escapeLast(S.output,"("),o("parens")}while(S.braces>0){if(Y.strictBrackets===!0)throw SyntaxError(s7("closing","}"));S.output=g1.escapeLast(S.output,"{"),o("braces")}if(Y.strictSlashes!==!0&&(h.type==="star"||h.type==="bracket"))I({type:"maybe_slash",value:"",output:`${O}?`});if(S.backtrack===!0){S.output="";for(let u of S.tokens)if(S.output+=u.output!=null?u.output:u.value,u.suffix)S.output+=u.suffix}return S};FG.fastpaths=(D,X)=>{let Y={...X},Z=typeof Y.maxLength==="number"?Math.min(vJ,Y.maxLength):vJ,J=D.length;if(J>Z)throw SyntaxError(`Input length: ${J}, exceeds maximum allowed length: ${Z}`);D=bu[D]||D;let Q=g1.isWindows(X),{DOT_LITERAL:w,SLASH_LITERAL:F,ONE_CHAR:B,DOTS_SLASH:q,NO_DOT:$,NO_DOTS:G,NO_DOTS_SLASH:W,STAR:O,START_ANCHOR:H}=_J.globChars(Q),M=Y.dot?G:$,U=Y.dot?W:$,N=Y.capture?"":"?:",R={negated:!1,prefix:""},z=Y.bash===!0?".*?":O;if(Y.capture)z=`(${z})`;let V=(A)=>{if(A.noglobstar===!0)return z;return`(${N}(?:(?!${H}${A.dot?q:w}).)*?)`},L=(A)=>{switch(A){case"*":return`${M}${B}${z}`;case".*":return`${w}${B}${z}`;case"*.*":return`${M}${z}${w}${B}${z}`;case"*/*":return`${M}${z}${F}${B}${U}${z}`;case"**":return M+V(Y);case"**/*":return`(?:${M}${V(Y)}${F})?${U}${B}${z}`;case"**/*.*":return`(?:${M}${V(Y)}${F})?${U}${z}${w}${B}${z}`;case"**/.*":return`(?:${M}${V(Y)}${F})?${w}${B}${z}`;default:{let y=/^(.*?)\.(\w+)$/.exec(A);if(!y)return;let f=L(y[1]);if(!f)return;return f+w+y[2]}}},C=g1.removePrefix(D,R),k=L(C);if(k&&Y.strictSlashes!==!0)k+=`${F}?`;return k};gu.exports=FG});var cu=T((dW0,du)=>{var NX0=require("path"),RX0=vu(),BG=mu(),qG=qX(),AX0=BX(),EX0=(D)=>D&&typeof D==="object"&&!Array.isArray(D),SD=(D,X,Y=!1)=>{if(Array.isArray(D)){let $=D.map((W)=>SD(W,X,Y));return(W)=>{for(let O of $){let H=O(W);if(H)return H}return!1}}let Z=EX0(D)&&D.tokens&&D.input;if(D===""||typeof D!=="string"&&!Z)throw TypeError("Expected pattern to be a non-empty string");let J=X||{},Q=qG.isWindows(X),w=Z?SD.compileRe(D,X):SD.makeRe(D,X,!1,!0),F=w.state;delete w.state;let B=()=>!1;if(J.ignore){let $={...X,ignore:null,onMatch:null,onResult:null};B=SD(J.ignore,$,Y)}let q=($,G=!1)=>{let{isMatch:W,match:O,output:H}=SD.test($,w,X,{glob:D,posix:Q}),M={glob:D,state:F,regex:w,posix:Q,input:$,output:H,match:O,isMatch:W};if(typeof J.onResult==="function")J.onResult(M);if(W===!1)return M.isMatch=!1,G?M:!1;if(B($)){if(typeof J.onIgnore==="function")J.onIgnore(M);return M.isMatch=!1,G?M:!1}if(typeof J.onMatch==="function")J.onMatch(M);return G?M:!0};if(Y)q.state=F;return q};SD.test=(D,X,Y,{glob:Z,posix:J}={})=>{if(typeof D!=="string")throw TypeError("Expected input to be a string");if(D==="")return{isMatch:!1,output:""};let Q=Y||{},w=Q.format||(J?qG.toPosixSlashes:null),F=D===Z,B=F&&w?w(D):D;if(F===!1)B=w?w(D):D,F=B===Z;if(F===!1||Q.capture===!0)if(Q.matchBase===!0||Q.basename===!0)F=SD.matchBase(D,X,Y,J);else F=X.exec(B);return{isMatch:Boolean(F),match:F,output:B}};SD.matchBase=(D,X,Y,Z=qG.isWindows(Y))=>{return(X instanceof RegExp?X:SD.makeRe(X,Y)).test(NX0.basename(D))};SD.isMatch=(D,X,Y)=>SD(X,Y)(D);SD.parse=(D,X)=>{if(Array.isArray(D))return D.map((Y)=>SD.parse(Y,X));return BG(D,{...X,fastpaths:!1})};SD.scan=(D,X)=>RX0(D,X);SD.compileRe=(D,X,Y=!1,Z=!1)=>{if(Y===!0)return D.output;let J=X||{},Q=J.contains?"":"^",w=J.contains?"":"$",F=`${Q}(?:${D.output})${w}`;if(D&&D.negated===!0)F=`^(?!${F}).*$`;let B=SD.toRegex(F,X);if(Z===!0)B.state=D;return B};SD.makeRe=(D,X={},Y=!1,Z=!1)=>{if(!D||typeof D!=="string")throw TypeError("Expected a non-empty string");let J={negated:!1,fastpaths:!0};if(X.fastpaths!==!1&&(D[0]==="."||D[0]==="*"))J.output=BG.fastpaths(D,X);if(!J.output)J=BG(D,X);return SD.compileRe(J,X,Y,Z)};SD.toRegex=(D,X)=>{try{let Y=X||{};return new RegExp(D,Y.flags||(Y.nocase?"i":""))}catch(Y){if(X&&X.debug===!0)throw Y;return/$^/}};SD.constants=AX0;du.exports=SD});var nu=T((cW0,lu)=>{lu.exports=cu()});var su=T((lW0,ru)=>{var pu=require("util"),au=Iu(),l8=nu(),$G=qX(),iu=(D)=>D===""||D==="./",tu=(D)=>{let X=D.indexOf("{");return X>-1&&D.indexOf("}",X)>-1},QD=(D,X,Y)=>{X=[].concat(X),D=[].concat(D);let Z=new Set,J=new Set,Q=new Set,w=0,F=($)=>{if(Q.add($.output),Y&&Y.onResult)Y.onResult($)};for(let $=0;$<X.length;$++){let G=l8(String(X[$]),{...Y,onResult:F},!0),W=G.state.negated||G.state.negatedExtglob;if(W)w++;for(let O of D){let H=G(O,!0);if(!(W?!H.isMatch:H.isMatch))continue;if(W)Z.add(H.output);else Z.delete(H.output),J.add(H.output)}}let q=(w===X.length?[...Q]:[...J]).filter(($)=>!Z.has($));if(Y&&q.length===0){if(Y.failglob===!0)throw Error(`No matches found for "${X.join(", ")}"`);if(Y.nonull===!0||Y.nullglob===!0)return Y.unescape?X.map(($)=>$.replace(/\\/g,"")):X}return q};QD.match=QD;QD.matcher=(D,X)=>l8(D,X);QD.isMatch=(D,X,Y)=>l8(X,Y)(D);QD.any=QD.isMatch;QD.not=(D,X,Y={})=>{X=[].concat(X).map(String);let Z=new Set,J=[],w=new Set(QD(D,X,{...Y,onResult:(F)=>{if(Y.onResult)Y.onResult(F);J.push(F.output)}}));for(let F of J)if(!w.has(F))Z.add(F);return[...Z]};QD.contains=(D,X,Y)=>{if(typeof D!=="string")throw TypeError(`Expected a string: "${pu.inspect(D)}"`);if(Array.isArray(X))return X.some((Z)=>QD.contains(D,Z,Y));if(typeof X==="string"){if(iu(D)||iu(X))return!1;if(D.includes(X)||D.startsWith("./")&&D.slice(2).includes(X))return!0}return QD.isMatch(D,X,{...Y,contains:!0})};QD.matchKeys=(D,X,Y)=>{if(!$G.isObject(D))throw TypeError("Expected the first argument to be an object");let Z=QD(Object.keys(D),X,Y),J={};for(let Q of Z)J[Q]=D[Q];return J};QD.some=(D,X,Y)=>{let Z=[].concat(D);for(let J of[].concat(X)){let Q=l8(String(J),Y);if(Z.some((w)=>Q(w)))return!0}return!1};QD.every=(D,X,Y)=>{let Z=[].concat(D);for(let J of[].concat(X)){let Q=l8(String(J),Y);if(!Z.every((w)=>Q(w)))return!1}return!0};QD.all=(D,X,Y)=>{if(typeof D!=="string")throw TypeError(`Expected a string: "${pu.inspect(D)}"`);return[].concat(X).every((Z)=>l8(Z,Y)(D))};QD.capture=(D,X,Y)=>{let Z=$G.isWindows(Y),Q=l8.makeRe(String(D),{...Y,capture:!0}).exec(Z?$G.toPosixSlashes(X):X);if(Q)return Q.slice(1).map((w)=>w===void 0?"":w)};QD.makeRe=(...D)=>l8.makeRe(...D);QD.scan=(...D)=>l8.scan(...D);QD.parse=(D,X)=>{let Y=[];for(let Z of[].concat(D||[]))for(let J of au(String(Z),X))Y.push(l8.parse(J,X));return Y};QD.braces=(D,X)=>{if(typeof D!=="string")throw TypeError("Expected a string");if(X&&X.nobrace===!0||!tu(D))return[D];return au(D,X)};QD.braceExpand=(D,X)=>{if(typeof D!=="string")throw TypeError("Expected a string");return QD.braces(D,{...X,expand:!0})};QD.hasBraces=tu;ru.exports=QD});var zY0={};e7(zY0,{zipBundle:()=>eX0,uploadBundle:()=>pX0,updateOrganization:()=>BY0,updateAppSetting:()=>JY0,saveEncryptionKey:()=>XY0,requestBuild:()=>WY0,parseSecurityPolicyError:()=>Z5,login:()=>aX0,listOrganizations:()=>wY0,listBundles:()=>GY0,isSecurityPolicyError:()=>F$,getStats:()=>HY0,getSecurityPolicyMessage:()=>hf,getCurrentBundle:()=>ZY0,getCapacitorConfig:()=>KY0,getAccountId:()=>QY0,generateEncryptionKeys:()=>DY0,formatApiErrorForCli:()=>DJ,encryptBundle:()=>sX0,doctor:()=>tX0,deleteOrganization:()=>qY0,deleteLegacyEncryptionKey:()=>YY0,decryptBundle:()=>oX0,createSupabaseClient:()=>K0,checkBundleCompatibility:()=>rX0,addOrganization:()=>FY0,addChannel:()=>OY0,addApp:()=>$Y0,SECURITY_POLICY_MESSAGES:()=>r3,SECURITY_POLICY_ERRORS:()=>h7,CapgoSDK:()=>GD});module.exports=yh(zY0);var rD=V0(XD(),1),N5=require("node:process"),R6=V0(require("node:readline")),aJ=V0(require("node:readline")),jG=require("node:stream"),D4=V0(nJ(),1);function bh({onlyFirst:D=!1}={}){let X=["[\\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(X,D?void 0:"g")}var gh=bh();function TG(D){if(typeof D!="string")throw TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(gh,"")}function IG(D){return D&&D.__esModule&&Object.prototype.hasOwnProperty.call(D,"default")?D.default:D}var PG={exports:{}};(function(D){var X={};D.exports=X,X.eastAsianWidth=function(Z){var J=Z.charCodeAt(0),Q=Z.length==2?Z.charCodeAt(1):0,w=J;return 55296<=J&&J<=56319&&56320<=Q&&Q<=57343&&(J&=1023,Q&=1023,w=J<<10|Q,w+=65536),w==12288||65281<=w&&w<=65376||65504<=w&&w<=65510?"F":w==8361||65377<=w&&w<=65470||65474<=w&&w<=65479||65482<=w&&w<=65487||65490<=w&&w<=65495||65498<=w&&w<=65500||65512<=w&&w<=65518?"H":4352<=w&&w<=4447||4515<=w&&w<=4519||4602<=w&&w<=4607||9001<=w&&w<=9002||11904<=w&&w<=11929||11931<=w&&w<=12019||12032<=w&&w<=12245||12272<=w&&w<=12283||12289<=w&&w<=12350||12353<=w&&w<=12438||12441<=w&&w<=12543||12549<=w&&w<=12589||12593<=w&&w<=12686||12688<=w&&w<=12730||12736<=w&&w<=12771||12784<=w&&w<=12830||12832<=w&&w<=12871||12880<=w&&w<=13054||13056<=w&&w<=19903||19968<=w&&w<=42124||42128<=w&&w<=42182||43360<=w&&w<=43388||44032<=w&&w<=55203||55216<=w&&w<=55238||55243<=w&&w<=55291||63744<=w&&w<=64255||65040<=w&&w<=65049||65072<=w&&w<=65106||65108<=w&&w<=65126||65128<=w&&w<=65131||110592<=w&&w<=110593||127488<=w&&w<=127490||127504<=w&&w<=127546||127552<=w&&w<=127560||127568<=w&&w<=127569||131072<=w&&w<=194367||177984<=w&&w<=196605||196608<=w&&w<=262141?"W":32<=w&&w<=126||162<=w&&w<=163||165<=w&&w<=166||w==172||w==175||10214<=w&&w<=10221||10629<=w&&w<=10630?"Na":w==161||w==164||167<=w&&w<=168||w==170||173<=w&&w<=174||176<=w&&w<=180||182<=w&&w<=186||188<=w&&w<=191||w==198||w==208||215<=w&&w<=216||222<=w&&w<=225||w==230||232<=w&&w<=234||236<=w&&w<=237||w==240||242<=w&&w<=243||247<=w&&w<=250||w==252||w==254||w==257||w==273||w==275||w==283||294<=w&&w<=295||w==299||305<=w&&w<=307||w==312||319<=w&&w<=322||w==324||328<=w&&w<=331||w==333||338<=w&&w<=339||358<=w&&w<=359||w==363||w==462||w==464||w==466||w==468||w==470||w==472||w==474||w==476||w==593||w==609||w==708||w==711||713<=w&&w<=715||w==717||w==720||728<=w&&w<=731||w==733||w==735||768<=w&&w<=879||913<=w&&w<=929||931<=w&&w<=937||945<=w&&w<=961||963<=w&&w<=969||w==1025||1040<=w&&w<=1103||w==1105||w==8208||8211<=w&&w<=8214||8216<=w&&w<=8217||8220<=w&&w<=8221||8224<=w&&w<=8226||8228<=w&&w<=8231||w==8240||8242<=w&&w<=8243||w==8245||w==8251||w==8254||w==8308||w==8319||8321<=w&&w<=8324||w==8364||w==8451||w==8453||w==8457||w==8467||w==8470||8481<=w&&w<=8482||w==8486||w==8491||8531<=w&&w<=8532||8539<=w&&w<=8542||8544<=w&&w<=8555||8560<=w&&w<=8569||w==8585||8592<=w&&w<=8601||8632<=w&&w<=8633||w==8658||w==8660||w==8679||w==8704||8706<=w&&w<=8707||8711<=w&&w<=8712||w==8715||w==8719||w==8721||w==8725||w==8730||8733<=w&&w<=8736||w==8739||w==8741||8743<=w&&w<=8748||w==8750||8756<=w&&w<=8759||8764<=w&&w<=8765||w==8776||w==8780||w==8786||8800<=w&&w<=8801||8804<=w&&w<=8807||8810<=w&&w<=8811||8814<=w&&w<=8815||8834<=w&&w<=8835||8838<=w&&w<=8839||w==8853||w==8857||w==8869||w==8895||w==8978||9312<=w&&w<=9449||9451<=w&&w<=9547||9552<=w&&w<=9587||9600<=w&&w<=9615||9618<=w&&w<=9621||9632<=w&&w<=9633||9635<=w&&w<=9641||9650<=w&&w<=9651||9654<=w&&w<=9655||9660<=w&&w<=9661||9664<=w&&w<=9665||9670<=w&&w<=9672||w==9675||9678<=w&&w<=9681||9698<=w&&w<=9701||w==9711||9733<=w&&w<=9734||w==9737||9742<=w&&w<=9743||9748<=w&&w<=9749||w==9756||w==9758||w==9792||w==9794||9824<=w&&w<=9825||9827<=w&&w<=9829||9831<=w&&w<=9834||9836<=w&&w<=9837||w==9839||9886<=w&&w<=9887||9918<=w&&w<=9919||9924<=w&&w<=9933||9935<=w&&w<=9953||w==9955||9960<=w&&w<=9983||w==10045||w==10071||10102<=w&&w<=10111||11093<=w&&w<=11097||12872<=w&&w<=12879||57344<=w&&w<=63743||65024<=w&&w<=65039||w==65533||127232<=w&&w<=127242||127248<=w&&w<=127277||127280<=w&&w<=127337||127344<=w&&w<=127386||917760<=w&&w<=917999||983040<=w&&w<=1048573||1048576<=w&&w<=1114109?"A":"N"},X.characterLength=function(Z){var J=this.eastAsianWidth(Z);return J=="F"||J=="W"||J=="A"?2:1};function Y(Z){return Z.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}X.length=function(Z){for(var J=Y(Z),Q=0,w=0;w<J.length;w++)Q=Q+this.characterLength(J[w]);return Q},X.slice=function(Z,J,Q){textLen=X.length(Z),J=J||0,Q=Q||1,J<0&&(J=textLen+J),Q<0&&(Q=textLen+Q);for(var w="",F=0,B=Y(Z),q=0;q<B.length;q++){var $=B[q],G=X.length($);if(F>=J-(G==2?1:0))if(F+G<=Q)w+=$;else break;F+=G}return w}})(PG);var mh=PG.exports,dh=IG(mh),ch=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},lh=IG(ch);function X4(D,X={}){if(typeof D!="string"||D.length===0||(X={ambiguousIsNarrow:!0,...X},D=TG(D),D.length===0))return 0;D=D.replace(lh()," ");let Y=X.ambiguousIsNarrow?1:2,Z=0;for(let J of D){let Q=J.codePointAt(0);if(Q<=31||Q>=127&&Q<=159||Q>=768&&Q<=879)continue;switch(dh.eastAsianWidth(J)){case"F":case"W":Z+=2;break;case"A":Z+=Y;break;default:Z+=1}}return Z}var iJ=10,LG=(D=0)=>(X)=>`\x1B[${X+D}m`,VG=(D=0)=>(X)=>`\x1B[${38+D};5;${X}m`,UG=(D=0)=>(X,Y,Z)=>`\x1B[${38+D};2;${X};${Y};${Z}m`,wD={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(wD.modifier);var nh=Object.keys(wD.color),ih=Object.keys(wD.bgColor);[...nh,...ih];function ph(){let D=new Map;for(let[X,Y]of Object.entries(wD)){for(let[Z,J]of Object.entries(Y))wD[Z]={open:`\x1B[${J[0]}m`,close:`\x1B[${J[1]}m`},Y[Z]=wD[Z],D.set(J[0],J[1]);Object.defineProperty(wD,X,{value:Y,enumerable:!1})}return Object.defineProperty(wD,"codes",{value:D,enumerable:!1}),wD.color.close="\x1B[39m",wD.bgColor.close="\x1B[49m",wD.color.ansi=LG(),wD.color.ansi256=VG(),wD.color.ansi16m=UG(),wD.bgColor.ansi=LG(iJ),wD.bgColor.ansi256=VG(iJ),wD.bgColor.ansi16m=UG(iJ),Object.defineProperties(wD,{rgbToAnsi256:{value:(X,Y,Z)=>X===Y&&Y===Z?X<8?16:X>248?231:Math.round((X-8)/247*24)+232:16+36*Math.round(X/255*5)+6*Math.round(Y/255*5)+Math.round(Z/255*5),enumerable:!1},hexToRgb:{value:(X)=>{let Y=/[a-f\d]{6}|[a-f\d]{3}/i.exec(X.toString(16));if(!Y)return[0,0,0];let[Z]=Y;Z.length===3&&(Z=[...Z].map((Q)=>Q+Q).join(""));let J=Number.parseInt(Z,16);return[J>>16&255,J>>8&255,J&255]},enumerable:!1},hexToAnsi256:{value:(X)=>wD.rgbToAnsi256(...wD.hexToRgb(X)),enumerable:!1},ansi256ToAnsi:{value:(X)=>{if(X<8)return 30+X;if(X<16)return 90+(X-8);let Y,Z,J;if(X>=232)Y=((X-232)*10+8)/255,Z=Y,J=Y;else{X-=16;let F=X%36;Y=Math.floor(X/36)/5,Z=Math.floor(F/6)/5,J=F%6/5}let Q=Math.max(Y,Z,J)*2;if(Q===0)return 30;let w=30+(Math.round(J)<<2|Math.round(Z)<<1|Math.round(Y));return Q===2&&(w+=60),w},enumerable:!1},rgbToAnsi:{value:(X,Y,Z)=>wD.ansi256ToAnsi(wD.rgbToAnsi256(X,Y,Z)),enumerable:!1},hexToAnsi:{value:(X)=>wD.ansi256ToAnsi(wD.hexToAnsi256(X)),enumerable:!1}}),wD}var ah=ph(),LX=new Set(["\x1B","›"]),th=39,rJ="\x07",SG="[",rh="]",xG="m",sJ=`${rh}8;;`,NG=(D)=>`${LX.values().next().value}${SG}${D}${xG}`,RG=(D)=>`${LX.values().next().value}${sJ}${D}${rJ}`,sh=(D)=>D.split(" ").map((X)=>X4(X)),pJ=(D,X,Y)=>{let Z=[...X],J=!1,Q=!1,w=X4(TG(D[D.length-1]));for(let[F,B]of Z.entries()){let q=X4(B);if(w+q<=Y?D[D.length-1]+=B:(D.push(B),w=0),LX.has(B)&&(J=!0,Q=Z.slice(F+1).join("").startsWith(sJ)),J){Q?B===rJ&&(J=!1,Q=!1):B===xG&&(J=!1);continue}w+=q,w===Y&&F<Z.length-1&&(D.push(""),w=0)}!w&&D[D.length-1].length>0&&D.length>1&&(D[D.length-2]+=D.pop())},oh=(D)=>{let X=D.split(" "),Y=X.length;for(;Y>0&&!(X4(X[Y-1])>0);)Y--;return Y===X.length?D:X.slice(0,Y).join(" ")+X.slice(Y).join("")},eh=(D,X,Y={})=>{if(Y.trim!==!1&&D.trim()==="")return"";let Z="",J,Q,w=sh(D),F=[""];for(let[q,$]of D.split(" ").entries()){Y.trim!==!1&&(F[F.length-1]=F[F.length-1].trimStart());let G=X4(F[F.length-1]);if(q!==0&&(G>=X&&(Y.wordWrap===!1||Y.trim===!1)&&(F.push(""),G=0),(G>0||Y.trim===!1)&&(F[F.length-1]+=" ",G++)),Y.hard&&w[q]>X){let W=X-G,O=1+Math.floor((w[q]-W-1)/X);Math.floor((w[q]-1)/X)<O&&F.push(""),pJ(F,$,X);continue}if(G+w[q]>X&&G>0&&w[q]>0){if(Y.wordWrap===!1&&G<X){pJ(F,$,X);continue}F.push("")}if(G+w[q]>X&&Y.wordWrap===!1){pJ(F,$,X);continue}F[F.length-1]+=$}Y.trim!==!1&&(F=F.map((q)=>oh(q)));let B=[...F.join(`
258
+ `,CHAR_NO_BREAK_SPACE:" ",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:"\t",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var Cu=T((hW0,Eu)=>{var b30=kJ(),{MAX_LENGTH:Nu,CHAR_BACKSLASH:XG,CHAR_BACKTICK:g30,CHAR_COMMA:m30,CHAR_DOT:d30,CHAR_LEFT_PARENTHESES:c30,CHAR_RIGHT_PARENTHESES:l30,CHAR_LEFT_CURLY_BRACE:n30,CHAR_RIGHT_CURLY_BRACE:i30,CHAR_LEFT_SQUARE_BRACKET:Ru,CHAR_RIGHT_SQUARE_BRACKET:Au,CHAR_DOUBLE_QUOTE:p30,CHAR_SINGLE_QUOTE:a30,CHAR_NO_BREAK_SPACE:t30,CHAR_ZERO_WIDTH_NOBREAK_SPACE:r30}=Uu(),s30=(D,X={})=>{if(typeof D!=="string")throw TypeError("Expected a string");let Y=X||{},Z=typeof Y.maxLength==="number"?Math.min(Nu,Y.maxLength):Nu;if(D.length>Z)throw SyntaxError(`Input length (${D.length}), exceeds max characters (${Z})`);let J={type:"root",input:D,nodes:[]},Q=[J],w=J,F=J,B=0,q=D.length,$=0,G=0,W,O=()=>D[$++],H=(M)=>{if(M.type==="text"&&F.type==="dot")F.type="text";if(F&&F.type==="text"&&M.type==="text"){F.value+=M.value;return}return w.nodes.push(M),M.parent=w,M.prev=F,F=M,M};H({type:"bos"});while($<q){if(w=Q[Q.length-1],W=O(),W===r30||W===t30)continue;if(W===XG){H({type:"text",value:(X.keepEscaping?W:"")+O()});continue}if(W===Au){H({type:"text",value:"\\"+W});continue}if(W===Ru){B++;let M;while($<q&&(M=O())){if(W+=M,M===Ru){B++;continue}if(M===XG){W+=O();continue}if(M===Au){if(B--,B===0)break}}H({type:"text",value:W});continue}if(W===c30){w=H({type:"paren",nodes:[]}),Q.push(w),H({type:"text",value:W});continue}if(W===l30){if(w.type!=="paren"){H({type:"text",value:W});continue}w=Q.pop(),H({type:"text",value:W}),w=Q[Q.length-1];continue}if(W===p30||W===a30||W===g30){let M=W,U;if(X.keepQuotes!==!0)W="";while($<q&&(U=O())){if(U===XG){W+=U+O();continue}if(U===M){if(X.keepQuotes===!0)W+=U;break}W+=U}H({type:"text",value:W});continue}if(W===n30){G++;let U={type:"brace",open:!0,close:!1,dollar:F.value&&F.value.slice(-1)==="$"||w.dollar===!0,depth:G,commas:0,ranges:0,nodes:[]};w=H(U),Q.push(w),H({type:"open",value:W});continue}if(W===i30){if(w.type!=="brace"){H({type:"text",value:W});continue}let M="close";w=Q.pop(),w.close=!0,H({type:M,value:W}),G--,w=Q[Q.length-1];continue}if(W===m30&&G>0){if(w.ranges>0){w.ranges=0;let M=w.nodes.shift();w.nodes=[M,{type:"text",value:b30(w)}]}H({type:"comma",value:W}),w.commas++;continue}if(W===d30&&G>0&&w.commas===0){let M=w.nodes;if(G===0||M.length===0){H({type:"text",value:W});continue}if(F.type==="dot"){if(w.range=[],F.value+=W,F.type="range",w.nodes.length!==3&&w.nodes.length!==5){w.invalid=!0,w.ranges=0,F.type="text";continue}w.ranges++,w.args=[];continue}if(F.type==="range"){M.pop();let U=M[M.length-1];U.value+=F.value+W,F=U,w.ranges--;continue}H({type:"dot",value:W});continue}H({type:"text",value:W})}do if(w=Q.pop(),w.type!=="root"){w.nodes.forEach((N)=>{if(!N.nodes){if(N.type==="open")N.isOpen=!0;if(N.type==="close")N.isClose=!0;if(!N.nodes)N.type="text";N.invalid=!0}});let M=Q[Q.length-1],U=M.nodes.indexOf(w);M.nodes.splice(U,1,...w.nodes)}while(Q.length>0);return H({type:"eos"}),J};Eu.exports=s30});var Iu=T((_W0,Tu)=>{var ju=kJ(),o30=Ku(),e30=Lu(),DX0=Cu(),b1=(D,X={})=>{let Y=[];if(Array.isArray(D))for(let Z of D){let J=b1.create(Z,X);if(Array.isArray(J))Y.push(...J);else Y.push(J)}else Y=[].concat(b1.create(D,X));if(X&&X.expand===!0&&X.nodupes===!0)Y=[...new Set(Y)];return Y};b1.parse=(D,X={})=>DX0(D,X);b1.stringify=(D,X={})=>{if(typeof D==="string")return ju(b1.parse(D,X),X);return ju(D,X)};b1.compile=(D,X={})=>{if(typeof D==="string")D=b1.parse(D,X);return o30(D,X)};b1.expand=(D,X={})=>{if(typeof D==="string")D=b1.parse(D,X);let Y=e30(D,X);if(X.noempty===!0)Y=Y.filter(Boolean);if(X.nodupes===!0)Y=[...new Set(Y)];return Y};b1.create=(D,X={})=>{if(D===""||D.length<3)return[D];return X.expand!==!0?b1.compile(D,X):b1.expand(D,X)};Tu.exports=b1});var BX=T((vW0,Su)=>{var XX0=require("path"),Pu={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},YX0={...Pu,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"},ZX0={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"};Su.exports={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:ZX0,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:XX0.sep,extglobChars(D){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${D.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(D){return D===!0?YX0:Pu}}});var qX=T((y1)=>{var JX0=require("path"),QX0=process.platform==="win32",{REGEX_BACKSLASH:wX0,REGEX_REMOVE_BACKSLASH:FX0,REGEX_SPECIAL_CHARS:BX0,REGEX_SPECIAL_CHARS_GLOBAL:qX0}=BX();y1.isObject=(D)=>D!==null&&typeof D==="object"&&!Array.isArray(D);y1.hasRegexChars=(D)=>BX0.test(D);y1.isRegexChar=(D)=>D.length===1&&y1.hasRegexChars(D);y1.escapeRegex=(D)=>D.replace(qX0,"\\$1");y1.toPosixSlashes=(D)=>D.replace(wX0,"/");y1.removeBackslashes=(D)=>{return D.replace(FX0,(X)=>{return X==="\\"?"":X})};y1.supportsLookbehinds=()=>{let D=process.version.slice(1).split(".").map(Number);if(D.length===3&&D[0]>=9||D[0]===8&&D[1]>=10)return!0;return!1};y1.isWindows=(D)=>{if(D&&typeof D.windows==="boolean")return D.windows;return QX0===!0||JX0.sep==="\\"};y1.escapeLast=(D,X,Y)=>{let Z=D.lastIndexOf(X,Y);if(Z===-1)return D;if(D[Z-1]==="\\")return y1.escapeLast(D,X,Z-1);return`${D.slice(0,Z)}\\${D.slice(Z)}`};y1.removePrefix=(D,X={})=>{let Y=D;if(Y.startsWith("./"))Y=Y.slice(2),X.prefix="./";return Y};y1.wrapOutput=(D,X={},Y={})=>{let Z=Y.contains?"":"^",J=Y.contains?"":"$",Q=`${Z}(?:${D})${J}`;if(X.negated===!0)Q=`(?:^(?!${Q}).*$)`;return Q}});var vu=T((gW0,_u)=>{var xu=qX(),{CHAR_ASTERISK:YG,CHAR_AT:$X0,CHAR_BACKWARD_SLASH:$X,CHAR_COMMA:GX0,CHAR_DOT:ZG,CHAR_EXCLAMATION_MARK:JG,CHAR_FORWARD_SLASH:hu,CHAR_LEFT_CURLY_BRACE:QG,CHAR_LEFT_PARENTHESES:wG,CHAR_LEFT_SQUARE_BRACKET:OX0,CHAR_PLUS:WX0,CHAR_QUESTION_MARK:fu,CHAR_RIGHT_CURLY_BRACE:HX0,CHAR_RIGHT_PARENTHESES:yu,CHAR_RIGHT_SQUARE_BRACKET:KX0}=BX(),ku=(D)=>{return D===hu||D===$X},uu=(D)=>{if(D.isPrefix!==!0)D.depth=D.isGlobstar?1/0:1},zX0=(D,X)=>{let Y=X||{},Z=D.length-1,J=Y.parts===!0||Y.scanToEnd===!0,Q=[],w=[],F=[],B=D,q=-1,$=0,G=0,W=!1,O=!1,H=!1,M=!1,U=!1,N=!1,R=!1,z=!1,V=!1,L=!1,C=0,k,A,y={value:"",depth:0,isGlob:!1},f=()=>q>=Z,S=()=>B.charCodeAt(q+1),v=()=>{return k=A,B.charCodeAt(++q)};while(q<Z){A=v();let P;if(A===$X){if(R=y.backslashes=!0,A=v(),A===QG)N=!0;continue}if(N===!0||A===QG){C++;while(f()!==!0&&(A=v())){if(A===$X){R=y.backslashes=!0,v();continue}if(A===QG){C++;continue}if(N!==!0&&A===ZG&&(A=v())===ZG){if(W=y.isBrace=!0,H=y.isGlob=!0,L=!0,J===!0)continue;break}if(N!==!0&&A===GX0){if(W=y.isBrace=!0,H=y.isGlob=!0,L=!0,J===!0)continue;break}if(A===HX0){if(C--,C===0){N=!1,W=y.isBrace=!0,L=!0;break}}}if(J===!0)continue;break}if(A===hu){if(Q.push(q),w.push(y),y={value:"",depth:0,isGlob:!1},L===!0)continue;if(k===ZG&&q===$+1){$+=2;continue}G=q+1;continue}if(Y.noext!==!0){if((A===WX0||A===$X0||A===YG||A===fu||A===JG)===!0&&S()===wG){if(H=y.isGlob=!0,M=y.isExtglob=!0,L=!0,A===JG&&q===$)V=!0;if(J===!0){while(f()!==!0&&(A=v())){if(A===$X){R=y.backslashes=!0,A=v();continue}if(A===yu){H=y.isGlob=!0,L=!0;break}}continue}break}}if(A===YG){if(k===YG)U=y.isGlobstar=!0;if(H=y.isGlob=!0,L=!0,J===!0)continue;break}if(A===fu){if(H=y.isGlob=!0,L=!0,J===!0)continue;break}if(A===OX0){while(f()!==!0&&(P=v())){if(P===$X){R=y.backslashes=!0,v();continue}if(P===KX0){O=y.isBracket=!0,H=y.isGlob=!0,L=!0;break}}if(J===!0)continue;break}if(Y.nonegate!==!0&&A===JG&&q===$){z=y.negated=!0,$++;continue}if(Y.noparen!==!0&&A===wG){if(H=y.isGlob=!0,J===!0){while(f()!==!0&&(A=v())){if(A===wG){R=y.backslashes=!0,A=v();continue}if(A===yu){L=!0;break}}continue}break}if(H===!0){if(L=!0,J===!0)continue;break}}if(Y.noext===!0)M=!1,H=!1;let b=B,n="",h="";if($>0)n=B.slice(0,$),B=B.slice($),G-=$;if(b&&H===!0&&G>0)b=B.slice(0,G),h=B.slice(G);else if(H===!0)b="",h=B;else b=B;if(b&&b!==""&&b!=="/"&&b!==B){if(ku(b.charCodeAt(b.length-1)))b=b.slice(0,-1)}if(Y.unescape===!0){if(h)h=xu.removeBackslashes(h);if(b&&R===!0)b=xu.removeBackslashes(b)}let E={prefix:n,input:D,start:$,base:b,glob:h,isBrace:W,isBracket:O,isGlob:H,isExtglob:M,isGlobstar:U,negated:z,negatedExtglob:V};if(Y.tokens===!0){if(E.maxDepth=0,!ku(A))w.push(y);E.tokens=w}if(Y.parts===!0||Y.tokens===!0){let P;for(let x=0;x<Q.length;x++){let _=P?P+1:$,g=Q[x],m=D.slice(_,g);if(Y.tokens){if(x===0&&$!==0)w[x].isPrefix=!0,w[x].value=n;else w[x].value=m;uu(w[x]),E.maxDepth+=w[x].depth}if(x!==0||m!=="")F.push(m);P=g}if(P&&P+1<D.length){let x=D.slice(P+1);if(F.push(x),Y.tokens)w[w.length-1].value=x,uu(w[w.length-1]),E.maxDepth+=w[w.length-1].depth}E.slashes=Q,E.parts=F}return E};_u.exports=zX0});var mu=T((mW0,gu)=>{var _J=BX(),g1=qX(),{MAX_LENGTH:vJ,POSIX_REGEX_SOURCE:MX0,REGEX_NON_SPECIAL_CHARS:LX0,REGEX_SPECIAL_CHARS_BACKREF:VX0,REPLACEMENTS:bu}=_J,UX0=(D,X)=>{if(typeof X.expandRange==="function")return X.expandRange(...D,X);D.sort();let Y=`[${D.join("-")}]`;try{new RegExp(Y)}catch(Z){return D.map((J)=>g1.escapeRegex(J)).join("..")}return Y},s7=(D,X)=>{return`Missing ${D}: "${X}" - use "\\\\${X}" to match literal characters`},FG=(D,X)=>{if(typeof D!=="string")throw TypeError("Expected a string");D=bu[D]||D;let Y={...X},Z=typeof Y.maxLength==="number"?Math.min(vJ,Y.maxLength):vJ,J=D.length;if(J>Z)throw SyntaxError(`Input length: ${J}, exceeds maximum allowed length: ${Z}`);let Q={type:"bos",value:"",output:Y.prepend||""},w=[Q],F=Y.capture?"":"?:",B=g1.isWindows(X),q=_J.globChars(B),$=_J.extglobChars(q),{DOT_LITERAL:G,PLUS_LITERAL:W,SLASH_LITERAL:O,ONE_CHAR:H,DOTS_SLASH:M,NO_DOT:U,NO_DOT_SLASH:N,NO_DOTS_SLASH:R,QMARK:z,QMARK_NO_DOT:V,STAR:L,START_ANCHOR:C}=q,k=(u)=>{return`(${F}(?:(?!${C}${u.dot?M:G}).)*?)`},A=Y.dot?"":U,y=Y.dot?z:V,f=Y.bash===!0?k(Y):L;if(Y.capture)f=`(${f})`;if(typeof Y.noext==="boolean")Y.noextglob=Y.noext;let S={input:D,index:-1,start:0,dot:Y.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:w};D=g1.removePrefix(D,S),J=D.length;let v=[],b=[],n=[],h=Q,E,P=()=>S.index===J-1,x=S.peek=(u=1)=>D[S.index+u],_=S.advance=()=>D[++S.index]||"",g=()=>D.slice(S.index+1),m=(u="",w0=0)=>{S.consumed+=u,S.index+=w0},a=(u)=>{S.output+=u.output!=null?u.output:u.value,m(u.value)},d=()=>{let u=1;while(x()==="!"&&(x(2)!=="("||x(3)==="?"))_(),S.start++,u++;if(u%2===0)return!1;return S.negated=!0,S.start++,!0},c=(u)=>{S[u]++,n.push(u)},o=(u)=>{S[u]--,n.pop()},I=(u)=>{if(h.type==="globstar"){let w0=S.braces>0&&(u.type==="comma"||u.type==="brace"),i=u.extglob===!0||v.length&&(u.type==="pipe"||u.type==="paren");if(u.type!=="slash"&&u.type!=="paren"&&!w0&&!i)S.output=S.output.slice(0,-h.output.length),h.type="star",h.value="*",h.output=f,S.output+=h.output}if(v.length&&u.type!=="paren")v[v.length-1].inner+=u.value;if(u.value||u.output)a(u);if(h&&h.type==="text"&&u.type==="text"){h.value+=u.value,h.output=(h.output||"")+u.value;return}u.prev=h,w.push(u),h=u},j=(u,w0)=>{let i={...$[w0],conditions:1,inner:""};i.prev=h,i.parens=S.parens,i.output=S.output;let B0=(Y.capture?"(":"")+i.open;c("parens"),I({type:u,value:w0,output:S.output?"":H}),I({type:"paren",extglob:!0,value:_(),output:B0}),v.push(i)},l=(u)=>{let w0=u.close+(Y.capture?")":""),i;if(u.type==="negate"){let B0=f;if(u.inner&&u.inner.length>1&&u.inner.includes("/"))B0=k(Y);if(B0!==f||P()||/^\)+$/.test(g()))w0=u.close=`)$))${B0}`;if(u.inner.includes("*")&&(i=g())&&/^\.[^\\/.]+$/.test(i)){let R0=FG(i,{...X,fastpaths:!1}).output;w0=u.close=`)${R0})${B0})`}if(u.prev.type==="bos")S.negatedExtglob=!0}I({type:"paren",extglob:!0,value:E,output:w0}),o("parens")};if(Y.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(D)){let u=!1,w0=D.replace(VX0,(i,B0,R0,S0,a0,jD)=>{if(S0==="\\")return u=!0,i;if(S0==="?"){if(B0)return B0+S0+(a0?z.repeat(a0.length):"");if(jD===0)return y+(a0?z.repeat(a0.length):"");return z.repeat(R0.length)}if(S0===".")return G.repeat(R0.length);if(S0==="*"){if(B0)return B0+S0+(a0?f:"");return f}return B0?i:`\\${i}`});if(u===!0)if(Y.unescape===!0)w0=w0.replace(/\\/g,"");else w0=w0.replace(/\\+/g,(i)=>{return i.length%2===0?"\\\\":i?"\\":""});if(w0===D&&Y.contains===!0)return S.output=D,S;return S.output=g1.wrapOutput(w0,S,X),S}while(!P()){if(E=_(),E==="\x00")continue;if(E==="\\"){let i=x();if(i==="/"&&Y.bash!==!0)continue;if(i==="."||i===";")continue;if(!i){E+="\\",I({type:"text",value:E});continue}let B0=/^\\+/.exec(g()),R0=0;if(B0&&B0[0].length>2){if(R0=B0[0].length,S.index+=R0,R0%2!==0)E+="\\"}if(Y.unescape===!0)E=_();else E+=_();if(S.brackets===0){I({type:"text",value:E});continue}}if(S.brackets>0&&(E!=="]"||h.value==="["||h.value==="[^")){if(Y.posix!==!1&&E===":"){let i=h.value.slice(1);if(i.includes("[")){if(h.posix=!0,i.includes(":")){let B0=h.value.lastIndexOf("["),R0=h.value.slice(0,B0),S0=h.value.slice(B0+2),a0=MX0[S0];if(a0){if(h.value=R0+a0,S.backtrack=!0,_(),!Q.output&&w.indexOf(h)===1)Q.output=H;continue}}}}if(E==="["&&x()!==":"||E==="-"&&x()==="]")E=`\\${E}`;if(E==="]"&&(h.value==="["||h.value==="[^"))E=`\\${E}`;if(Y.posix===!0&&E==="!"&&h.value==="[")E="^";h.value+=E,a({value:E});continue}if(S.quotes===1&&E!=='"'){E=g1.escapeRegex(E),h.value+=E,a({value:E});continue}if(E==='"'){if(S.quotes=S.quotes===1?0:1,Y.keepQuotes===!0)I({type:"text",value:E});continue}if(E==="("){c("parens"),I({type:"paren",value:E});continue}if(E===")"){if(S.parens===0&&Y.strictBrackets===!0)throw SyntaxError(s7("opening","("));let i=v[v.length-1];if(i&&S.parens===i.parens+1){l(v.pop());continue}I({type:"paren",value:E,output:S.parens?")":"\\)"}),o("parens");continue}if(E==="["){if(Y.nobracket===!0||!g().includes("]")){if(Y.nobracket!==!0&&Y.strictBrackets===!0)throw SyntaxError(s7("closing","]"));E=`\\${E}`}else c("brackets");I({type:"bracket",value:E});continue}if(E==="]"){if(Y.nobracket===!0||h&&h.type==="bracket"&&h.value.length===1){I({type:"text",value:E,output:`\\${E}`});continue}if(S.brackets===0){if(Y.strictBrackets===!0)throw SyntaxError(s7("opening","["));I({type:"text",value:E,output:`\\${E}`});continue}o("brackets");let i=h.value.slice(1);if(h.posix!==!0&&i[0]==="^"&&!i.includes("/"))E=`/${E}`;if(h.value+=E,a({value:E}),Y.literalBrackets===!1||g1.hasRegexChars(i))continue;let B0=g1.escapeRegex(h.value);if(S.output=S.output.slice(0,-h.value.length),Y.literalBrackets===!0){S.output+=B0,h.value=B0;continue}h.value=`(${F}${B0}|${h.value})`,S.output+=h.value;continue}if(E==="{"&&Y.nobrace!==!0){c("braces");let i={type:"brace",value:E,output:"(",outputIndex:S.output.length,tokensIndex:S.tokens.length};b.push(i),I(i);continue}if(E==="}"){let i=b[b.length-1];if(Y.nobrace===!0||!i){I({type:"text",value:E,output:E});continue}let B0=")";if(i.dots===!0){let R0=w.slice(),S0=[];for(let a0=R0.length-1;a0>=0;a0--){if(w.pop(),R0[a0].type==="brace")break;if(R0[a0].type!=="dots")S0.unshift(R0[a0].value)}B0=UX0(S0,Y),S.backtrack=!0}if(i.comma!==!0&&i.dots!==!0){let R0=S.output.slice(0,i.outputIndex),S0=S.tokens.slice(i.tokensIndex);i.value=i.output="\\{",E=B0="\\}",S.output=R0;for(let a0 of S0)S.output+=a0.output||a0.value}I({type:"brace",value:E,output:B0}),o("braces"),b.pop();continue}if(E==="|"){if(v.length>0)v[v.length-1].conditions++;I({type:"text",value:E});continue}if(E===","){let i=E,B0=b[b.length-1];if(B0&&n[n.length-1]==="braces")B0.comma=!0,i="|";I({type:"comma",value:E,output:i});continue}if(E==="/"){if(h.type==="dot"&&S.index===S.start+1){S.start=S.index+1,S.consumed="",S.output="",w.pop(),h=Q;continue}I({type:"slash",value:E,output:O});continue}if(E==="."){if(S.braces>0&&h.type==="dot"){if(h.value===".")h.output=G;let i=b[b.length-1];h.type="dots",h.output+=E,h.value+=E,i.dots=!0;continue}if(S.braces+S.parens===0&&h.type!=="bos"&&h.type!=="slash"){I({type:"text",value:E,output:G});continue}I({type:"dot",value:E,output:G});continue}if(E==="?"){if(!(h&&h.value==="(")&&Y.noextglob!==!0&&x()==="("&&x(2)!=="?"){j("qmark",E);continue}if(h&&h.type==="paren"){let B0=x(),R0=E;if(B0==="<"&&!g1.supportsLookbehinds())throw Error("Node.js v10 or higher is required for regex lookbehinds");if(h.value==="("&&!/[!=<:]/.test(B0)||B0==="<"&&!/<([!=]|\w+>)/.test(g()))R0=`\\${E}`;I({type:"text",value:E,output:R0});continue}if(Y.dot!==!0&&(h.type==="slash"||h.type==="bos")){I({type:"qmark",value:E,output:V});continue}I({type:"qmark",value:E,output:z});continue}if(E==="!"){if(Y.noextglob!==!0&&x()==="("){if(x(2)!=="?"||!/[!=<:]/.test(x(3))){j("negate",E);continue}}if(Y.nonegate!==!0&&S.index===0){d();continue}}if(E==="+"){if(Y.noextglob!==!0&&x()==="("&&x(2)!=="?"){j("plus",E);continue}if(h&&h.value==="("||Y.regex===!1){I({type:"plus",value:E,output:W});continue}if(h&&(h.type==="bracket"||h.type==="paren"||h.type==="brace")||S.parens>0){I({type:"plus",value:E});continue}I({type:"plus",value:W});continue}if(E==="@"){if(Y.noextglob!==!0&&x()==="("&&x(2)!=="?"){I({type:"at",extglob:!0,value:E,output:""});continue}I({type:"text",value:E});continue}if(E!=="*"){if(E==="$"||E==="^")E=`\\${E}`;let i=LX0.exec(g());if(i)E+=i[0],S.index+=i[0].length;I({type:"text",value:E});continue}if(h&&(h.type==="globstar"||h.star===!0)){h.type="star",h.star=!0,h.value+=E,h.output=f,S.backtrack=!0,S.globstar=!0,m(E);continue}let u=g();if(Y.noextglob!==!0&&/^\([^?]/.test(u)){j("star",E);continue}if(h.type==="star"){if(Y.noglobstar===!0){m(E);continue}let i=h.prev,B0=i.prev,R0=i.type==="slash"||i.type==="bos",S0=B0&&(B0.type==="star"||B0.type==="globstar");if(Y.bash===!0&&(!R0||u[0]&&u[0]!=="/")){I({type:"star",value:E,output:""});continue}let a0=S.braces>0&&(i.type==="comma"||i.type==="brace"),jD=v.length&&(i.type==="pipe"||i.type==="paren");if(!R0&&i.type!=="paren"&&!a0&&!jD){I({type:"star",value:E,output:""});continue}while(u.slice(0,3)==="/**"){let N1=D[S.index+4];if(N1&&N1!=="/")break;u=u.slice(3),m("/**",3)}if(i.type==="bos"&&P()){h.type="globstar",h.value+=E,h.output=k(Y),S.output=h.output,S.globstar=!0,m(E);continue}if(i.type==="slash"&&i.prev.type!=="bos"&&!S0&&P()){S.output=S.output.slice(0,-(i.output+h.output).length),i.output=`(?:${i.output}`,h.type="globstar",h.output=k(Y)+(Y.strictSlashes?")":"|$)"),h.value+=E,S.globstar=!0,S.output+=i.output+h.output,m(E);continue}if(i.type==="slash"&&i.prev.type!=="bos"&&u[0]==="/"){let N1=u[1]!==void 0?"|$":"";S.output=S.output.slice(0,-(i.output+h.output).length),i.output=`(?:${i.output}`,h.type="globstar",h.output=`${k(Y)}${O}|${O}${N1})`,h.value+=E,S.output+=i.output+h.output,S.globstar=!0,m(E+_()),I({type:"slash",value:"/",output:""});continue}if(i.type==="bos"&&u[0]==="/"){h.type="globstar",h.value+=E,h.output=`(?:^|${O}|${k(Y)}${O})`,S.output=h.output,S.globstar=!0,m(E+_()),I({type:"slash",value:"/",output:""});continue}S.output=S.output.slice(0,-h.output.length),h.type="globstar",h.output=k(Y),h.value+=E,S.output+=h.output,S.globstar=!0,m(E);continue}let w0={type:"star",value:E,output:f};if(Y.bash===!0){if(w0.output=".*?",h.type==="bos"||h.type==="slash")w0.output=A+w0.output;I(w0);continue}if(h&&(h.type==="bracket"||h.type==="paren")&&Y.regex===!0){w0.output=E,I(w0);continue}if(S.index===S.start||h.type==="slash"||h.type==="dot"){if(h.type==="dot")S.output+=N,h.output+=N;else if(Y.dot===!0)S.output+=R,h.output+=R;else S.output+=A,h.output+=A;if(x()!=="*")S.output+=H,h.output+=H}I(w0)}while(S.brackets>0){if(Y.strictBrackets===!0)throw SyntaxError(s7("closing","]"));S.output=g1.escapeLast(S.output,"["),o("brackets")}while(S.parens>0){if(Y.strictBrackets===!0)throw SyntaxError(s7("closing",")"));S.output=g1.escapeLast(S.output,"("),o("parens")}while(S.braces>0){if(Y.strictBrackets===!0)throw SyntaxError(s7("closing","}"));S.output=g1.escapeLast(S.output,"{"),o("braces")}if(Y.strictSlashes!==!0&&(h.type==="star"||h.type==="bracket"))I({type:"maybe_slash",value:"",output:`${O}?`});if(S.backtrack===!0){S.output="";for(let u of S.tokens)if(S.output+=u.output!=null?u.output:u.value,u.suffix)S.output+=u.suffix}return S};FG.fastpaths=(D,X)=>{let Y={...X},Z=typeof Y.maxLength==="number"?Math.min(vJ,Y.maxLength):vJ,J=D.length;if(J>Z)throw SyntaxError(`Input length: ${J}, exceeds maximum allowed length: ${Z}`);D=bu[D]||D;let Q=g1.isWindows(X),{DOT_LITERAL:w,SLASH_LITERAL:F,ONE_CHAR:B,DOTS_SLASH:q,NO_DOT:$,NO_DOTS:G,NO_DOTS_SLASH:W,STAR:O,START_ANCHOR:H}=_J.globChars(Q),M=Y.dot?G:$,U=Y.dot?W:$,N=Y.capture?"":"?:",R={negated:!1,prefix:""},z=Y.bash===!0?".*?":O;if(Y.capture)z=`(${z})`;let V=(A)=>{if(A.noglobstar===!0)return z;return`(${N}(?:(?!${H}${A.dot?q:w}).)*?)`},L=(A)=>{switch(A){case"*":return`${M}${B}${z}`;case".*":return`${w}${B}${z}`;case"*.*":return`${M}${z}${w}${B}${z}`;case"*/*":return`${M}${z}${F}${B}${U}${z}`;case"**":return M+V(Y);case"**/*":return`(?:${M}${V(Y)}${F})?${U}${B}${z}`;case"**/*.*":return`(?:${M}${V(Y)}${F})?${U}${z}${w}${B}${z}`;case"**/.*":return`(?:${M}${V(Y)}${F})?${w}${B}${z}`;default:{let y=/^(.*?)\.(\w+)$/.exec(A);if(!y)return;let f=L(y[1]);if(!f)return;return f+w+y[2]}}},C=g1.removePrefix(D,R),k=L(C);if(k&&Y.strictSlashes!==!0)k+=`${F}?`;return k};gu.exports=FG});var cu=T((dW0,du)=>{var NX0=require("path"),RX0=vu(),BG=mu(),qG=qX(),AX0=BX(),EX0=(D)=>D&&typeof D==="object"&&!Array.isArray(D),SD=(D,X,Y=!1)=>{if(Array.isArray(D)){let $=D.map((W)=>SD(W,X,Y));return(W)=>{for(let O of $){let H=O(W);if(H)return H}return!1}}let Z=EX0(D)&&D.tokens&&D.input;if(D===""||typeof D!=="string"&&!Z)throw TypeError("Expected pattern to be a non-empty string");let J=X||{},Q=qG.isWindows(X),w=Z?SD.compileRe(D,X):SD.makeRe(D,X,!1,!0),F=w.state;delete w.state;let B=()=>!1;if(J.ignore){let $={...X,ignore:null,onMatch:null,onResult:null};B=SD(J.ignore,$,Y)}let q=($,G=!1)=>{let{isMatch:W,match:O,output:H}=SD.test($,w,X,{glob:D,posix:Q}),M={glob:D,state:F,regex:w,posix:Q,input:$,output:H,match:O,isMatch:W};if(typeof J.onResult==="function")J.onResult(M);if(W===!1)return M.isMatch=!1,G?M:!1;if(B($)){if(typeof J.onIgnore==="function")J.onIgnore(M);return M.isMatch=!1,G?M:!1}if(typeof J.onMatch==="function")J.onMatch(M);return G?M:!0};if(Y)q.state=F;return q};SD.test=(D,X,Y,{glob:Z,posix:J}={})=>{if(typeof D!=="string")throw TypeError("Expected input to be a string");if(D==="")return{isMatch:!1,output:""};let Q=Y||{},w=Q.format||(J?qG.toPosixSlashes:null),F=D===Z,B=F&&w?w(D):D;if(F===!1)B=w?w(D):D,F=B===Z;if(F===!1||Q.capture===!0)if(Q.matchBase===!0||Q.basename===!0)F=SD.matchBase(D,X,Y,J);else F=X.exec(B);return{isMatch:Boolean(F),match:F,output:B}};SD.matchBase=(D,X,Y,Z=qG.isWindows(Y))=>{return(X instanceof RegExp?X:SD.makeRe(X,Y)).test(NX0.basename(D))};SD.isMatch=(D,X,Y)=>SD(X,Y)(D);SD.parse=(D,X)=>{if(Array.isArray(D))return D.map((Y)=>SD.parse(Y,X));return BG(D,{...X,fastpaths:!1})};SD.scan=(D,X)=>RX0(D,X);SD.compileRe=(D,X,Y=!1,Z=!1)=>{if(Y===!0)return D.output;let J=X||{},Q=J.contains?"":"^",w=J.contains?"":"$",F=`${Q}(?:${D.output})${w}`;if(D&&D.negated===!0)F=`^(?!${F}).*$`;let B=SD.toRegex(F,X);if(Z===!0)B.state=D;return B};SD.makeRe=(D,X={},Y=!1,Z=!1)=>{if(!D||typeof D!=="string")throw TypeError("Expected a non-empty string");let J={negated:!1,fastpaths:!0};if(X.fastpaths!==!1&&(D[0]==="."||D[0]==="*"))J.output=BG.fastpaths(D,X);if(!J.output)J=BG(D,X);return SD.compileRe(J,X,Y,Z)};SD.toRegex=(D,X)=>{try{let Y=X||{};return new RegExp(D,Y.flags||(Y.nocase?"i":""))}catch(Y){if(X&&X.debug===!0)throw Y;return/$^/}};SD.constants=AX0;du.exports=SD});var nu=T((cW0,lu)=>{lu.exports=cu()});var su=T((lW0,ru)=>{var pu=require("util"),au=Iu(),l8=nu(),$G=qX(),iu=(D)=>D===""||D==="./",tu=(D)=>{let X=D.indexOf("{");return X>-1&&D.indexOf("}",X)>-1},QD=(D,X,Y)=>{X=[].concat(X),D=[].concat(D);let Z=new Set,J=new Set,Q=new Set,w=0,F=($)=>{if(Q.add($.output),Y&&Y.onResult)Y.onResult($)};for(let $=0;$<X.length;$++){let G=l8(String(X[$]),{...Y,onResult:F},!0),W=G.state.negated||G.state.negatedExtglob;if(W)w++;for(let O of D){let H=G(O,!0);if(!(W?!H.isMatch:H.isMatch))continue;if(W)Z.add(H.output);else Z.delete(H.output),J.add(H.output)}}let q=(w===X.length?[...Q]:[...J]).filter(($)=>!Z.has($));if(Y&&q.length===0){if(Y.failglob===!0)throw Error(`No matches found for "${X.join(", ")}"`);if(Y.nonull===!0||Y.nullglob===!0)return Y.unescape?X.map(($)=>$.replace(/\\/g,"")):X}return q};QD.match=QD;QD.matcher=(D,X)=>l8(D,X);QD.isMatch=(D,X,Y)=>l8(X,Y)(D);QD.any=QD.isMatch;QD.not=(D,X,Y={})=>{X=[].concat(X).map(String);let Z=new Set,J=[],w=new Set(QD(D,X,{...Y,onResult:(F)=>{if(Y.onResult)Y.onResult(F);J.push(F.output)}}));for(let F of J)if(!w.has(F))Z.add(F);return[...Z]};QD.contains=(D,X,Y)=>{if(typeof D!=="string")throw TypeError(`Expected a string: "${pu.inspect(D)}"`);if(Array.isArray(X))return X.some((Z)=>QD.contains(D,Z,Y));if(typeof X==="string"){if(iu(D)||iu(X))return!1;if(D.includes(X)||D.startsWith("./")&&D.slice(2).includes(X))return!0}return QD.isMatch(D,X,{...Y,contains:!0})};QD.matchKeys=(D,X,Y)=>{if(!$G.isObject(D))throw TypeError("Expected the first argument to be an object");let Z=QD(Object.keys(D),X,Y),J={};for(let Q of Z)J[Q]=D[Q];return J};QD.some=(D,X,Y)=>{let Z=[].concat(D);for(let J of[].concat(X)){let Q=l8(String(J),Y);if(Z.some((w)=>Q(w)))return!0}return!1};QD.every=(D,X,Y)=>{let Z=[].concat(D);for(let J of[].concat(X)){let Q=l8(String(J),Y);if(!Z.every((w)=>Q(w)))return!1}return!0};QD.all=(D,X,Y)=>{if(typeof D!=="string")throw TypeError(`Expected a string: "${pu.inspect(D)}"`);return[].concat(X).every((Z)=>l8(Z,Y)(D))};QD.capture=(D,X,Y)=>{let Z=$G.isWindows(Y),Q=l8.makeRe(String(D),{...Y,capture:!0}).exec(Z?$G.toPosixSlashes(X):X);if(Q)return Q.slice(1).map((w)=>w===void 0?"":w)};QD.makeRe=(...D)=>l8.makeRe(...D);QD.scan=(...D)=>l8.scan(...D);QD.parse=(D,X)=>{let Y=[];for(let Z of[].concat(D||[]))for(let J of au(String(Z),X))Y.push(l8.parse(J,X));return Y};QD.braces=(D,X)=>{if(typeof D!=="string")throw TypeError("Expected a string");if(X&&X.nobrace===!0||!tu(D))return[D];return au(D,X)};QD.braceExpand=(D,X)=>{if(typeof D!=="string")throw TypeError("Expected a string");return QD.braces(D,{...X,expand:!0})};QD.hasBraces=tu;ru.exports=QD});var zY0={};e7(zY0,{zipBundle:()=>eX0,uploadBundle:()=>pX0,updateOrganization:()=>BY0,updateAppSetting:()=>JY0,saveEncryptionKey:()=>XY0,requestBuild:()=>WY0,parseSecurityPolicyError:()=>Z5,login:()=>aX0,listOrganizations:()=>wY0,listBundles:()=>GY0,isSecurityPolicyError:()=>F$,getStats:()=>HY0,getSecurityPolicyMessage:()=>hf,getCurrentBundle:()=>ZY0,getCapacitorConfig:()=>KY0,getAccountId:()=>QY0,generateEncryptionKeys:()=>DY0,formatApiErrorForCli:()=>DJ,encryptBundle:()=>sX0,doctor:()=>tX0,deleteOrganization:()=>qY0,deleteLegacyEncryptionKey:()=>YY0,decryptBundle:()=>oX0,createSupabaseClient:()=>K0,checkBundleCompatibility:()=>rX0,addOrganization:()=>FY0,addChannel:()=>OY0,addApp:()=>$Y0,SECURITY_POLICY_MESSAGES:()=>r3,SECURITY_POLICY_ERRORS:()=>h7,CapgoSDK:()=>GD});module.exports=yh(zY0);var rD=N0(XD(),1),N5=require("node:process"),R6=N0(require("node:readline")),aJ=N0(require("node:readline")),jG=require("node:stream"),D4=N0(nJ(),1);function bh({onlyFirst:D=!1}={}){let X=["[\\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(X,D?void 0:"g")}var gh=bh();function TG(D){if(typeof D!="string")throw TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(gh,"")}function IG(D){return D&&D.__esModule&&Object.prototype.hasOwnProperty.call(D,"default")?D.default:D}var PG={exports:{}};(function(D){var X={};D.exports=X,X.eastAsianWidth=function(Z){var J=Z.charCodeAt(0),Q=Z.length==2?Z.charCodeAt(1):0,w=J;return 55296<=J&&J<=56319&&56320<=Q&&Q<=57343&&(J&=1023,Q&=1023,w=J<<10|Q,w+=65536),w==12288||65281<=w&&w<=65376||65504<=w&&w<=65510?"F":w==8361||65377<=w&&w<=65470||65474<=w&&w<=65479||65482<=w&&w<=65487||65490<=w&&w<=65495||65498<=w&&w<=65500||65512<=w&&w<=65518?"H":4352<=w&&w<=4447||4515<=w&&w<=4519||4602<=w&&w<=4607||9001<=w&&w<=9002||11904<=w&&w<=11929||11931<=w&&w<=12019||12032<=w&&w<=12245||12272<=w&&w<=12283||12289<=w&&w<=12350||12353<=w&&w<=12438||12441<=w&&w<=12543||12549<=w&&w<=12589||12593<=w&&w<=12686||12688<=w&&w<=12730||12736<=w&&w<=12771||12784<=w&&w<=12830||12832<=w&&w<=12871||12880<=w&&w<=13054||13056<=w&&w<=19903||19968<=w&&w<=42124||42128<=w&&w<=42182||43360<=w&&w<=43388||44032<=w&&w<=55203||55216<=w&&w<=55238||55243<=w&&w<=55291||63744<=w&&w<=64255||65040<=w&&w<=65049||65072<=w&&w<=65106||65108<=w&&w<=65126||65128<=w&&w<=65131||110592<=w&&w<=110593||127488<=w&&w<=127490||127504<=w&&w<=127546||127552<=w&&w<=127560||127568<=w&&w<=127569||131072<=w&&w<=194367||177984<=w&&w<=196605||196608<=w&&w<=262141?"W":32<=w&&w<=126||162<=w&&w<=163||165<=w&&w<=166||w==172||w==175||10214<=w&&w<=10221||10629<=w&&w<=10630?"Na":w==161||w==164||167<=w&&w<=168||w==170||173<=w&&w<=174||176<=w&&w<=180||182<=w&&w<=186||188<=w&&w<=191||w==198||w==208||215<=w&&w<=216||222<=w&&w<=225||w==230||232<=w&&w<=234||236<=w&&w<=237||w==240||242<=w&&w<=243||247<=w&&w<=250||w==252||w==254||w==257||w==273||w==275||w==283||294<=w&&w<=295||w==299||305<=w&&w<=307||w==312||319<=w&&w<=322||w==324||328<=w&&w<=331||w==333||338<=w&&w<=339||358<=w&&w<=359||w==363||w==462||w==464||w==466||w==468||w==470||w==472||w==474||w==476||w==593||w==609||w==708||w==711||713<=w&&w<=715||w==717||w==720||728<=w&&w<=731||w==733||w==735||768<=w&&w<=879||913<=w&&w<=929||931<=w&&w<=937||945<=w&&w<=961||963<=w&&w<=969||w==1025||1040<=w&&w<=1103||w==1105||w==8208||8211<=w&&w<=8214||8216<=w&&w<=8217||8220<=w&&w<=8221||8224<=w&&w<=8226||8228<=w&&w<=8231||w==8240||8242<=w&&w<=8243||w==8245||w==8251||w==8254||w==8308||w==8319||8321<=w&&w<=8324||w==8364||w==8451||w==8453||w==8457||w==8467||w==8470||8481<=w&&w<=8482||w==8486||w==8491||8531<=w&&w<=8532||8539<=w&&w<=8542||8544<=w&&w<=8555||8560<=w&&w<=8569||w==8585||8592<=w&&w<=8601||8632<=w&&w<=8633||w==8658||w==8660||w==8679||w==8704||8706<=w&&w<=8707||8711<=w&&w<=8712||w==8715||w==8719||w==8721||w==8725||w==8730||8733<=w&&w<=8736||w==8739||w==8741||8743<=w&&w<=8748||w==8750||8756<=w&&w<=8759||8764<=w&&w<=8765||w==8776||w==8780||w==8786||8800<=w&&w<=8801||8804<=w&&w<=8807||8810<=w&&w<=8811||8814<=w&&w<=8815||8834<=w&&w<=8835||8838<=w&&w<=8839||w==8853||w==8857||w==8869||w==8895||w==8978||9312<=w&&w<=9449||9451<=w&&w<=9547||9552<=w&&w<=9587||9600<=w&&w<=9615||9618<=w&&w<=9621||9632<=w&&w<=9633||9635<=w&&w<=9641||9650<=w&&w<=9651||9654<=w&&w<=9655||9660<=w&&w<=9661||9664<=w&&w<=9665||9670<=w&&w<=9672||w==9675||9678<=w&&w<=9681||9698<=w&&w<=9701||w==9711||9733<=w&&w<=9734||w==9737||9742<=w&&w<=9743||9748<=w&&w<=9749||w==9756||w==9758||w==9792||w==9794||9824<=w&&w<=9825||9827<=w&&w<=9829||9831<=w&&w<=9834||9836<=w&&w<=9837||w==9839||9886<=w&&w<=9887||9918<=w&&w<=9919||9924<=w&&w<=9933||9935<=w&&w<=9953||w==9955||9960<=w&&w<=9983||w==10045||w==10071||10102<=w&&w<=10111||11093<=w&&w<=11097||12872<=w&&w<=12879||57344<=w&&w<=63743||65024<=w&&w<=65039||w==65533||127232<=w&&w<=127242||127248<=w&&w<=127277||127280<=w&&w<=127337||127344<=w&&w<=127386||917760<=w&&w<=917999||983040<=w&&w<=1048573||1048576<=w&&w<=1114109?"A":"N"},X.characterLength=function(Z){var J=this.eastAsianWidth(Z);return J=="F"||J=="W"||J=="A"?2:1};function Y(Z){return Z.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}X.length=function(Z){for(var J=Y(Z),Q=0,w=0;w<J.length;w++)Q=Q+this.characterLength(J[w]);return Q},X.slice=function(Z,J,Q){textLen=X.length(Z),J=J||0,Q=Q||1,J<0&&(J=textLen+J),Q<0&&(Q=textLen+Q);for(var w="",F=0,B=Y(Z),q=0;q<B.length;q++){var $=B[q],G=X.length($);if(F>=J-(G==2?1:0))if(F+G<=Q)w+=$;else break;F+=G}return w}})(PG);var mh=PG.exports,dh=IG(mh),ch=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},lh=IG(ch);function X4(D,X={}){if(typeof D!="string"||D.length===0||(X={ambiguousIsNarrow:!0,...X},D=TG(D),D.length===0))return 0;D=D.replace(lh()," ");let Y=X.ambiguousIsNarrow?1:2,Z=0;for(let J of D){let Q=J.codePointAt(0);if(Q<=31||Q>=127&&Q<=159||Q>=768&&Q<=879)continue;switch(dh.eastAsianWidth(J)){case"F":case"W":Z+=2;break;case"A":Z+=Y;break;default:Z+=1}}return Z}var iJ=10,LG=(D=0)=>(X)=>`\x1B[${X+D}m`,VG=(D=0)=>(X)=>`\x1B[${38+D};5;${X}m`,UG=(D=0)=>(X,Y,Z)=>`\x1B[${38+D};2;${X};${Y};${Z}m`,wD={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(wD.modifier);var nh=Object.keys(wD.color),ih=Object.keys(wD.bgColor);[...nh,...ih];function ph(){let D=new Map;for(let[X,Y]of Object.entries(wD)){for(let[Z,J]of Object.entries(Y))wD[Z]={open:`\x1B[${J[0]}m`,close:`\x1B[${J[1]}m`},Y[Z]=wD[Z],D.set(J[0],J[1]);Object.defineProperty(wD,X,{value:Y,enumerable:!1})}return Object.defineProperty(wD,"codes",{value:D,enumerable:!1}),wD.color.close="\x1B[39m",wD.bgColor.close="\x1B[49m",wD.color.ansi=LG(),wD.color.ansi256=VG(),wD.color.ansi16m=UG(),wD.bgColor.ansi=LG(iJ),wD.bgColor.ansi256=VG(iJ),wD.bgColor.ansi16m=UG(iJ),Object.defineProperties(wD,{rgbToAnsi256:{value:(X,Y,Z)=>X===Y&&Y===Z?X<8?16:X>248?231:Math.round((X-8)/247*24)+232:16+36*Math.round(X/255*5)+6*Math.round(Y/255*5)+Math.round(Z/255*5),enumerable:!1},hexToRgb:{value:(X)=>{let Y=/[a-f\d]{6}|[a-f\d]{3}/i.exec(X.toString(16));if(!Y)return[0,0,0];let[Z]=Y;Z.length===3&&(Z=[...Z].map((Q)=>Q+Q).join(""));let J=Number.parseInt(Z,16);return[J>>16&255,J>>8&255,J&255]},enumerable:!1},hexToAnsi256:{value:(X)=>wD.rgbToAnsi256(...wD.hexToRgb(X)),enumerable:!1},ansi256ToAnsi:{value:(X)=>{if(X<8)return 30+X;if(X<16)return 90+(X-8);let Y,Z,J;if(X>=232)Y=((X-232)*10+8)/255,Z=Y,J=Y;else{X-=16;let F=X%36;Y=Math.floor(X/36)/5,Z=Math.floor(F/6)/5,J=F%6/5}let Q=Math.max(Y,Z,J)*2;if(Q===0)return 30;let w=30+(Math.round(J)<<2|Math.round(Z)<<1|Math.round(Y));return Q===2&&(w+=60),w},enumerable:!1},rgbToAnsi:{value:(X,Y,Z)=>wD.ansi256ToAnsi(wD.rgbToAnsi256(X,Y,Z)),enumerable:!1},hexToAnsi:{value:(X)=>wD.ansi256ToAnsi(wD.hexToAnsi256(X)),enumerable:!1}}),wD}var ah=ph(),LX=new Set(["\x1B","›"]),th=39,rJ="\x07",SG="[",rh="]",xG="m",sJ=`${rh}8;;`,NG=(D)=>`${LX.values().next().value}${SG}${D}${xG}`,RG=(D)=>`${LX.values().next().value}${sJ}${D}${rJ}`,sh=(D)=>D.split(" ").map((X)=>X4(X)),pJ=(D,X,Y)=>{let Z=[...X],J=!1,Q=!1,w=X4(TG(D[D.length-1]));for(let[F,B]of Z.entries()){let q=X4(B);if(w+q<=Y?D[D.length-1]+=B:(D.push(B),w=0),LX.has(B)&&(J=!0,Q=Z.slice(F+1).join("").startsWith(sJ)),J){Q?B===rJ&&(J=!1,Q=!1):B===xG&&(J=!1);continue}w+=q,w===Y&&F<Z.length-1&&(D.push(""),w=0)}!w&&D[D.length-1].length>0&&D.length>1&&(D[D.length-2]+=D.pop())},oh=(D)=>{let X=D.split(" "),Y=X.length;for(;Y>0&&!(X4(X[Y-1])>0);)Y--;return Y===X.length?D:X.slice(0,Y).join(" ")+X.slice(Y).join("")},eh=(D,X,Y={})=>{if(Y.trim!==!1&&D.trim()==="")return"";let Z="",J,Q,w=sh(D),F=[""];for(let[q,$]of D.split(" ").entries()){Y.trim!==!1&&(F[F.length-1]=F[F.length-1].trimStart());let G=X4(F[F.length-1]);if(q!==0&&(G>=X&&(Y.wordWrap===!1||Y.trim===!1)&&(F.push(""),G=0),(G>0||Y.trim===!1)&&(F[F.length-1]+=" ",G++)),Y.hard&&w[q]>X){let W=X-G,O=1+Math.floor((w[q]-W-1)/X);Math.floor((w[q]-1)/X)<O&&F.push(""),pJ(F,$,X);continue}if(G+w[q]>X&&G>0&&w[q]>0){if(Y.wordWrap===!1&&G<X){pJ(F,$,X);continue}F.push("")}if(G+w[q]>X&&Y.wordWrap===!1){pJ(F,$,X);continue}F[F.length-1]+=$}Y.trim!==!1&&(F=F.map((q)=>oh(q)));let B=[...F.join(`
259
259
  `)];for(let[q,$]of B.entries()){if(Z+=$,LX.has($)){let{groups:W}=new RegExp(`(?:\\${SG}(?<code>\\d+)m|\\${sJ}(?<uri>.*)${rJ})`).exec(B.slice(q).join(""))||{groups:{}};if(W.code!==void 0){let O=Number.parseFloat(W.code);J=O===th?void 0:O}else W.uri!==void 0&&(Q=W.uri.length===0?void 0:W.uri)}let G=ah.codes.get(Number(J));B[q+1]===`
260
260
  `?(Q&&(Z+=RG("")),J&&G&&(Z+=NG(G))):$===`
261
261
  `&&(J&&G&&(Z+=NG(J)),Q&&(Z+=RG(Q)))}return Z};function AG(D,X,Y){return String(D).normalize().replace(/\r\n/g,`
@@ -268,7 +268,7 @@ tell application "System Events" to get value of property list item "CFBundleNam
268
268
  `).length-1;this.output.write(rD.cursor.move(-999,D*-1))}render(){let D=AG(this._render(this)??"",process.stdout.columns,{hard:!0});if(D!==this._prevFrame){if(this.state==="initial")this.output.write(rD.cursor.hide);else{let X=X_(this._prevFrame,D);if(this.restoreCursor(),X&&X?.length===1){let Y=X[0];this.output.write(rD.cursor.move(0,Y)),this.output.write(rD.erase.lines(1));let Z=D.split(`
269
269
  `);this.output.write(Z[Y]),this._prevFrame=D,this.output.write(rD.cursor.move(0,Z.length-Y-1));return}if(X&&X?.length>1){let Y=X[0];this.output.write(rD.cursor.move(0,Y)),this.output.write(rD.erase.down());let Z=D.split(`
270
270
  `).slice(Y);this.output.write(Z.join(`
271
- `)),this._prevFrame=D;return}this.output.write(rD.erase.down())}this.output.write(D),this.state==="initial"&&(this.state="active"),this._prevFrame=D}}}class eJ extends Y4{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(D){super(D,!1),this.value=!!D.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(X)=>{this.output.write(rD.cursor.move(0,-1)),this.value=X,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var Q_;Q_=new WeakMap;var w_=Object.defineProperty,F_=(D,X,Y)=>(X in D)?w_(D,X,{enumerable:!0,configurable:!0,writable:!0,value:Y}):D[X]=Y,EG=(D,X,Y)=>(F_(D,typeof X!="symbol"?X+"":X,Y),Y);class DQ extends Y4{constructor({mask:D,...X}){super(X),EG(this,"valueWithCursor",""),EG(this,"_mask","•"),this._mask=D??"•",this.on("finalize",()=>{this.valueWithCursor=this.masked}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.masked}${D4.default.inverse(D4.default.hidden("_"))}`;else{let Y=this.masked.slice(0,this.cursor),Z=this.masked.slice(this.cursor);this.valueWithCursor=`${Y}${D4.default.inverse(Z[0])}${Z.slice(1)}`}})}get cursor(){return this._cursor}get masked(){return this.value.replaceAll(/./g,this._mask)}}var B_=Object.defineProperty,q_=(D,X,Y)=>(X in D)?B_(D,X,{enumerable:!0,configurable:!0,writable:!0,value:Y}):D[X]=Y,CG=(D,X,Y)=>(q_(D,typeof X!="symbol"?X+"":X,Y),Y);class XQ extends Y4{constructor(D){super(D,!1),CG(this,"options"),CG(this,"cursor",0),this.options=D.options,this.cursor=this.options.findIndex(({value:X})=>X===D.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(X)=>{switch(X){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}}class YQ extends Y4{get valueWithCursor(){if(this.state==="submit")return this.value;if(this.cursor>=this.value.length)return`${this.value}█`;let D=this.value.slice(0,this.cursor),[X,...Y]=this.value.slice(this.cursor);return`${D}${D4.default.inverse(X)}${Y.join("")}`}get cursor(){return this._cursor}constructor(D){super(D),this.on("finalize",()=>{this.value||(this.value=D.defaultValue)})}}var d1=V0(require("node:process")),t=V0(nJ(),1),VX=V0(XD(),1);function $_(){return d1.default.platform!=="win32"?d1.default.env.TERM!=="linux":!!d1.default.env.CI||!!d1.default.env.WT_SESSION||!!d1.default.env.TERMINUS_SUBLIME||d1.default.env.ConEmuTask==="{cmd::Cmder}"||d1.default.env.TERM_PROGRAM==="Terminus-Sublime"||d1.default.env.TERM_PROGRAM==="vscode"||d1.default.env.TERM==="xterm-256color"||d1.default.env.TERM==="alacritty"||d1.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var ZQ=$_(),TD=(D,X)=>ZQ?D:X,G_=TD("◆","*"),yG=TD("■","x"),kG=TD("▲","x"),wQ=TD("◇","o"),O_=TD("┌","T"),u0=TD("│","|"),F9=TD("└","—"),JQ=TD("●",">"),QQ=TD("○"," "),jY0=TD("◻","[•]"),TY0=TD("◼","[+]"),IY0=TD("◻","[ ]"),W_=TD("▪","•"),PY0=TD("─","-"),SY0=TD("╮","+"),xY0=TD("├","+"),fY0=TD("╯","+"),H_=TD("●","•"),K_=TD("◆","*"),z_=TD("▲","!"),M_=TD("■","x"),UX=(D)=>{switch(D){case"initial":case"active":return t.default.cyan(G_);case"cancel":return t.default.red(yG);case"error":return t.default.yellow(kG);case"submit":return t.default.green(wQ)}},L_=(D)=>{let{cursor:X,options:Y,style:Z}=D,J=D.maxItems??Number.POSITIVE_INFINITY,Q=Math.max(process.stdout.rows-4,0),w=Math.min(Q,Math.max(J,5)),F=0;X>=F+w-3?F=Math.max(Math.min(X-w+3,Y.length-w),0):X<F+2&&(F=Math.max(X-2,0));let B=w<Y.length&&F>0,q=w<Y.length&&F+w<Y.length;return Y.slice(F,F+w).map(($,G,W)=>{let O=G===0&&B,H=G===W.length-1&&q;return O||H?t.default.dim("..."):Z($,G+F===X)})},A6=(D)=>new YQ({validate:D.validate,placeholder:D.placeholder,defaultValue:D.defaultValue,initialValue:D.initialValue,render(){let X=`${t.default.gray(u0)}
271
+ `)),this._prevFrame=D;return}this.output.write(rD.erase.down())}this.output.write(D),this.state==="initial"&&(this.state="active"),this._prevFrame=D}}}class eJ extends Y4{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(D){super(D,!1),this.value=!!D.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(X)=>{this.output.write(rD.cursor.move(0,-1)),this.value=X,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var Q_;Q_=new WeakMap;var w_=Object.defineProperty,F_=(D,X,Y)=>(X in D)?w_(D,X,{enumerable:!0,configurable:!0,writable:!0,value:Y}):D[X]=Y,EG=(D,X,Y)=>(F_(D,typeof X!="symbol"?X+"":X,Y),Y);class DQ extends Y4{constructor({mask:D,...X}){super(X),EG(this,"valueWithCursor",""),EG(this,"_mask","•"),this._mask=D??"•",this.on("finalize",()=>{this.valueWithCursor=this.masked}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.masked}${D4.default.inverse(D4.default.hidden("_"))}`;else{let Y=this.masked.slice(0,this.cursor),Z=this.masked.slice(this.cursor);this.valueWithCursor=`${Y}${D4.default.inverse(Z[0])}${Z.slice(1)}`}})}get cursor(){return this._cursor}get masked(){return this.value.replaceAll(/./g,this._mask)}}var B_=Object.defineProperty,q_=(D,X,Y)=>(X in D)?B_(D,X,{enumerable:!0,configurable:!0,writable:!0,value:Y}):D[X]=Y,CG=(D,X,Y)=>(q_(D,typeof X!="symbol"?X+"":X,Y),Y);class XQ extends Y4{constructor(D){super(D,!1),CG(this,"options"),CG(this,"cursor",0),this.options=D.options,this.cursor=this.options.findIndex(({value:X})=>X===D.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(X)=>{switch(X){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}}class YQ extends Y4{get valueWithCursor(){if(this.state==="submit")return this.value;if(this.cursor>=this.value.length)return`${this.value}█`;let D=this.value.slice(0,this.cursor),[X,...Y]=this.value.slice(this.cursor);return`${D}${D4.default.inverse(X)}${Y.join("")}`}get cursor(){return this._cursor}constructor(D){super(D),this.on("finalize",()=>{this.value||(this.value=D.defaultValue)})}}var d1=N0(require("node:process")),t=N0(nJ(),1),VX=N0(XD(),1);function $_(){return d1.default.platform!=="win32"?d1.default.env.TERM!=="linux":!!d1.default.env.CI||!!d1.default.env.WT_SESSION||!!d1.default.env.TERMINUS_SUBLIME||d1.default.env.ConEmuTask==="{cmd::Cmder}"||d1.default.env.TERM_PROGRAM==="Terminus-Sublime"||d1.default.env.TERM_PROGRAM==="vscode"||d1.default.env.TERM==="xterm-256color"||d1.default.env.TERM==="alacritty"||d1.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var ZQ=$_(),TD=(D,X)=>ZQ?D:X,G_=TD("◆","*"),yG=TD("■","x"),kG=TD("▲","x"),wQ=TD("◇","o"),O_=TD("┌","T"),u0=TD("│","|"),F9=TD("└","—"),JQ=TD("●",">"),QQ=TD("○"," "),jY0=TD("◻","[•]"),TY0=TD("◼","[+]"),IY0=TD("◻","[ ]"),W_=TD("▪","•"),PY0=TD("─","-"),SY0=TD("╮","+"),xY0=TD("├","+"),fY0=TD("╯","+"),H_=TD("●","•"),K_=TD("◆","*"),z_=TD("▲","!"),M_=TD("■","x"),UX=(D)=>{switch(D){case"initial":case"active":return t.default.cyan(G_);case"cancel":return t.default.red(yG);case"error":return t.default.yellow(kG);case"submit":return t.default.green(wQ)}},L_=(D)=>{let{cursor:X,options:Y,style:Z}=D,J=D.maxItems??Number.POSITIVE_INFINITY,Q=Math.max(process.stdout.rows-4,0),w=Math.min(Q,Math.max(J,5)),F=0;X>=F+w-3?F=Math.max(Math.min(X-w+3,Y.length-w),0):X<F+2&&(F=Math.max(X-2,0));let B=w<Y.length&&F>0,q=w<Y.length&&F+w<Y.length;return Y.slice(F,F+w).map(($,G,W)=>{let O=G===0&&B,H=G===W.length-1&&q;return O||H?t.default.dim("..."):Z($,G+F===X)})},A6=(D)=>new YQ({validate:D.validate,placeholder:D.placeholder,defaultValue:D.defaultValue,initialValue:D.initialValue,render(){let X=`${t.default.gray(u0)}
272
272
  ${UX(this.state)} ${D.message}
273
273
  `,Y=D.placeholder?t.default.inverse(D.placeholder[0])+t.default.dim(D.placeholder.slice(1)):t.default.inverse(t.default.hidden("_")),Z=this.value?this.valueWithCursor:Y;switch(this.state){case"error":return`${X.trim()}
274
274
  ${t.default.yellow(u0)} ${Z}
@@ -308,11 +308,11 @@ ${t.default.gray(F9)} ${D}
308
308
  `);let L=0,C=0;O(),Q=setInterval(()=>{if(Z&&F===B)return;M(),B=F;let k=t.default.magenta(X[L]);if(Z)process.stdout.write(`${k} ${F}...`);else if(D==="timer")process.stdout.write(`${k} ${F} ${N(q)}`);else{let A=".".repeat(Math.floor(C)).slice(0,3);process.stdout.write(`${k} ${F}${A}`)}L=L+1<X.length?L+1:0,C=C<X.length?C+0.125:0},Y)},z=(V="",L=0)=>{w=!1,clearInterval(Q),M();let C=L===0?t.default.green(wQ):L===1?t.default.red(yG):t.default.red(kG);F=U(V??F),D==="timer"?process.stdout.write(`${C} ${F} ${N(q)}
309
309
  `):process.stdout.write(`${C} ${F}
310
310
  `),H(),J()};return{start:R,stop:z,message:(V="")=>{F=U(V??F)}}};function hG(D,X){let Z=["normal","bold","dim","italic","underline","strikethrough"].indexOf(D),J="\x1B[";return"\x1B["+Z+"m"+X+"\x1B[0m"}class MD{title=null;headers=[];rows=[];static narrowTheme={top:["╔","═","╤","╗"],row:["║"," ","│","║"],div:["╟","─","┼","╢"],bot:["╚","═","╧","╝"]};static wideTheme={top:["╔═","═","═╤═","═╗"],row:["║ "," "," │ "," ║"],div:["╟─","─","─┼─","─╢"],bot:["╚═","═","═╧═","═╝"]};static roundTheme={top:["╭─","─","─┬─","─╮"],row:["│ "," "," │ "," │"],div:["├─","─","─┼─","─┤"],bot:["╰─","─","─┴─","─╯"]};theme=MD.wideTheme;columnWidth(){let D=[this.headers,...this.rows].filter((Y)=>Y.length>0),X=D[0].map((Y)=>this.cast(Y).length);for(let Y of D.slice(1))for(let Z=0;Z<X.length;Z++){let J=this.cast(Y[Z]).length;if(J>X[Z])X[Z]=J}return X}cast(D){if(typeof D==="object")return"obj";if(D!==void 0&&typeof D.toString==="function")return D.toString();else return""}renderTitle(){return"[ "+this.title+" ]"}renderLine(D){let X=this.columnWidth();return D[0]+X.map((Y)=>D[1].repeat(Y)).join(D[2])+D[3]}renderCell(D,X,Y=!1){let Z=this.cast(D),J=Y?hG("bold",Z):Z,Q=X-Z.length,w=this.theme.row[1];switch(typeof D){case"number":return w.repeat(Q)+J;case"string":return J+w.repeat(Q);case"boolean":case"object":return w.repeat(Math.ceil(Q/2))+hG("italic",Z)+w.repeat(Math.floor(Q/2));default:return w.repeat(Q)}}renderRow(D,X=!1){let Y=this.theme.row,Z=this.columnWidth();return Y[0]+D.map((J,Q)=>this.renderCell(J,Z[Q],X)).join(Y[2])+Y[3]}toString(){let D=this.theme,X=this.headers.length>0,Y=this.rows.length>0;return[this.title?this.renderTitle():"",X||Y?this.renderLine(D.top):"",X?this.renderRow(this.headers,!0):"",X&&Y?this.renderLine(D.div):"",...this.rows.map((Z)=>this.renderRow(Z)),X||Y?this.renderLine(D.bot):""].filter((Z)=>Z.length>0).join(`
311
- `)}}var Ty=require("node:child_process"),L0=require("node:fs"),qJ=require("node:os"),W0=V0(require("node:path")),m8=require("node:process"),e6=V0(RX(),1);var J1=require("fs"),J4=(D=".",X="unknown")=>{let Y=`${D}/bun.lockb`,Z=`${D}/bun.lock`,J=`${D}/pnpm-lock.yaml`,Q=`${D}/shrinkwrap.yaml`,w=`${D}/yarn.lock`,F=`${D}/package-lock.json`,B=`${D}/npm-shrinkwrap.json`;if(J1.existsSync(Y)||J1.existsSync(Z))return"bun";if(J1.existsSync(J)||J1.existsSync(Q))return"pnpm";if(J1.existsSync(w))return"yarn";if(J1.existsSync(F)||J1.existsSync(B))return"npm";return X},AX=(D=J4(),X=!1)=>{switch(D){case"bun":return X?"bun install":"install";case"pnpm":return X?"pnpm install":"install";case"yarn":return X?"yarn install":"install";case"npm":return X?"npm install":"install";case"unknown":return X?"unknown unknown":"unknown";default:return X?"npm install":"install"}},_G=(D=".",X="npx")=>{let Y=`${D}/bun.lockb`,Z=`${D}/bun.lock`,J=`${D}/pnpm-lock.yaml`,Q=`${D}/shrinkwrap.yaml`,w=`${D}/yarn.lock`,F=`${D}/package-lock.json`,B=`${D}/npm-shrinkwrap.json`;if(J1.existsSync(Y)||J1.existsSync(Z))return"bunx";if(J1.existsSync(J)||J1.existsSync(Q))return"pnpm exec";if(J1.existsSync(w))return"yarn dlx";if(J1.existsSync(F)||J1.existsSync(B))return"npx";return X};function EX(D,X){if(isNaN(D)||isNaN(X))throw Error("Cannot compare against non-numbers");return D===X?0:D<X?-1:1}function gG(D=[],X=[]){if(D.length&&!X.length)return-1;if(!D.length&&X.length)return 1;return 0}function $Q(D=[],X=[]){let Y=Math.max(D.length,X.length);for(let Z=0;Z<Y;Z++){let J=D[Z],Q=X[Z];if(J===void 0&&Q===void 0)return 0;if(Q===void 0)return 1;if(J===void 0)return-1;if(typeof J==="string"&&typeof Q==="number")return 1;if(typeof J==="number"&&typeof Q==="string")return-1;if(J<Q)return-1;if(J>Q)return 1}return 0}var R5="0|[1-9]\\d*",R_="\\d*[a-zA-Z-][a-zA-Z0-9-]*",A_=`(?<major>${R5})\\.(?<minor>${R5})\\.(?<patch>${R5})`,vG=`(?:${R5}|${R_})`,mG=`(?:-(?<prerelease>${vG}(?:\\.${vG})*))`,bG="[0-9A-Za-z-]+",dG=`(?:\\+(?<buildmetadata>${bG}(?:\\.${bG})*))`,cG=`v?${A_}${mG}?${dG}?`,lG=new RegExp(`^${cG}$`),nG="(?:<|>)?=?",E_="x|X|\\*",qQ=`${R5}|${E_}`,CX=`[v=\\s]*(?<major>${qQ})(?:\\.(?<minor>${qQ})(?:\\.(?<patch>${qQ})${mG}?${dG}?)?)?`,iG=new RegExp(`^(?<operator>~>?|\\^|${nG})\\s*${CX}$`),pG=new RegExp(`^(?<operator>${nG})\\s*(${cG})$|^$`);function GQ(D){return typeof D==="number"&&!Number.isNaN(D)&&(!Number.isFinite(D)||0<=D&&D<=Number.MAX_SAFE_INTEGER)}var OQ=256;var C_=new RegExp(`^${R5}$`);function Q1(D){return D.split(".").filter(Boolean).map((X)=>{if(C_.test(X)){let Y=Number(X);if(GQ(Y))return Y}return X})}function J8(D){return D.split(".").filter(Boolean)}function C6(D,X){let Y=Number(D);if(!GQ(Y))throw TypeError(X);return Y}function n8(D){return Number.isNaN(D.major)&&Number.isNaN(D.minor)&&Number.isNaN(D.patch)&&(D.prerelease===void 0||D.prerelease.length===0)&&(D.build===void 0||D.build.length===0)}function w1(D,X){if(D===X)return 0;return EX(D.major,X.major)||EX(D.minor,X.minor)||EX(D.patch,X.patch)||gG(D.prerelease,X.prerelease)||$Q(D.prerelease,X.prerelease)}function WQ(D){return D.toFixed(0)}function Q8(D){let X=WQ(D.major),Y=WQ(D.minor),Z=WQ(D.patch),J=D.prerelease?.join(".")??"",Q=D.build?.join(".")??"";return[[`${X}.${Y}.${Z}`,J].filter((B)=>B).join("-"),Q].filter((B)=>B).join("+")}function j_(D,X){if(n8(X))return!0;let Y=w1(D,X);switch(X.operator){case"=":case void 0:return Y===0;case"!=":return Y!==0;case">":return Y>0;case"<":return Y<0;case">=":return Y>=0;case"<=":return Y<=0}}function jX(D,X){for(let Y of X)if(!j_(D,Y))return!1;if(D.prerelease&&D.prerelease.length>0){for(let Y of X){if(n8(Y))continue;let{major:Z,minor:J,patch:Q,prerelease:w}=Y;if(w&&w.length>0){if(D.major===Z&&D.minor===J&&D.patch===Q)return!0}}return!1}return!0}function Q4(D,X){return X.some((Y)=>jX(D,Y))}function T_(D=[]){let X=[...D],Y=X.length;while(Y>=0){let Z=X[Y];if(typeof Z==="number"){X[Y]=Z+1;break}Y-=1}if(Y===-1)X.push(0);return X}function w4(D=[],X){let Y=T_(D);if(!X)return Y;let Z=Q1(X);if(Z.every((J)=>typeof J==="string")){if(Z.every((J,Q)=>J===Y[Q])&&typeof Y[Z.length]==="number")return Y;Z=[...Z,0]}return Z}function F4(D,X,Y={}){let Z=Y.build!==void 0?J8(Y.build):D.build??[];switch(X){case"premajor":return{major:D.major+1,minor:0,patch:0,prerelease:w4(D.prerelease,Y.prerelease),build:Z};case"preminor":return{major:D.major,minor:D.minor+1,patch:0,prerelease:w4(D.prerelease,Y.prerelease),build:Z};case"prepatch":return{major:D.major,minor:D.minor,patch:D.patch+1,prerelease:w4(D.prerelease,Y.prerelease),build:Z};case"prerelease":{let Q=(D.prerelease??[]).length===0?D.patch+1:D.patch;return{major:D.major,minor:D.minor,patch:Q,prerelease:w4(D.prerelease,Y.prerelease),build:Z}}case"major":return{major:(D.prerelease??[]).length===0||D.minor!==0||D.patch!==0?D.major+1:D.major,minor:0,patch:0,prerelease:[],build:Z};case"minor":{let Q=(D.prerelease??[]).length===0||D.patch!==0?D.minor+1:D.minor;return{major:D.major,minor:Q,patch:0,prerelease:[],build:Z}}case"patch":{let Q=(D.prerelease??[]).length===0?D.patch+1:D.patch;return{major:D.major,minor:D.minor,patch:Q,prerelease:[],build:Z}}case"pre":return{major:D.major,minor:D.minor,patch:D.patch,prerelease:w4(D.prerelease,Y.prerelease),build:Z};default:throw TypeError(`Cannot increment version: invalid argument ${X}`)}}var TX={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},A5={operator:void 0,...TX};function HQ(D,X){return w1(D,X)>0}function B9(D,X){return w1(D,X)<0}function I_(D){let Y=D.match(pG)?.groups;if(!Y)return null;let{operator:Z,prerelease:J,buildmetadata:Q}=Y,w=Y.major?{major:C6(Y.major,`Cannot parse comparator ${D}: invalid major version`),minor:C6(Y.minor,`Cannot parse comparator ${D}: invalid minor version`),patch:C6(Y.patch,`Cannot parse comparator ${D}: invalid patch version`),prerelease:J?Q1(J):[],build:Q?J8(Q):[]}:TX;return{operator:Z||void 0,...w}}function t0(D){return!D||D.toLowerCase()==="x"||D==="*"}function P_(D){if(t0(D.major))return;if(t0(D.minor))return{operator:">=",major:+D.major,minor:0,patch:0,prerelease:[],build:[]};if(t0(D.patch))return{operator:">=",major:+D.major,minor:+D.minor,patch:0,prerelease:[],build:[]};return{operator:">=",major:+D.major,minor:+D.minor,patch:+D.patch,prerelease:D.prerelease?Q1(D.prerelease):[],build:[]}}function S_(D){if(t0(D.major))return;if(t0(D.minor))return{operator:"<",major:+D.major+1,minor:0,patch:0,prerelease:[],build:[]};if(t0(D.patch))return{operator:"<",major:+D.major,minor:+D.minor+1,patch:0,prerelease:[],build:[]};if(D.prerelease)return{operator:"<=",major:+D.major,minor:+D.minor,patch:+D.patch,prerelease:Q1(D.prerelease),build:[]};return{operator:"<=",major:+D.major,minor:+D.minor,patch:+D.patch,prerelease:[],build:[]}}function x_(D){let X=D.match(new RegExp(`^${CX}`)),Y=X?.groups;if(!Y)return null;let Z=X[0].length,J=D.slice(Z).match(/^\s+-\s+/);if(!J)return null;let Q=J[0].length,F=D.slice(Z+Q).match(new RegExp(`^${CX}\\s*$`))?.groups;if(!F)return null;let B=P_(Y),q=S_(F);return[B,q].filter(Boolean)}function f_(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[A5];if(Y)return[{operator:">=",major:J,minor:0,patch:0},{operator:"<",major:J+1,minor:0,patch:0}];if(Z){if(J===0)return[{operator:">=",major:J,minor:Q,patch:0},{operator:"<",major:J,minor:Q+1,patch:0}];return[{operator:">=",major:J,minor:Q,patch:0},{operator:"<",major:J+1,minor:0,patch:0}]}let F=Q1(D.prerelease??"");if(J===0){if(Q===0)return[{operator:">=",major:J,minor:Q,patch:w,prerelease:F},{operator:"<",major:J,minor:Q,patch:w+1}];return[{operator:">=",major:J,minor:Q,patch:w,prerelease:F},{operator:"<",major:J,minor:Q+1,patch:0}]}return[{operator:">=",major:J,minor:Q,patch:w,prerelease:F},{operator:"<",major:J+1,minor:0,patch:0}]}function y_(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[A5];if(Y)return[{operator:">=",major:J,minor:0,patch:0},{operator:"<",major:J+1,minor:0,patch:0}];if(Z)return[{operator:">=",major:J,minor:Q,patch:0},{operator:"<",major:J,minor:Q+1,patch:0}];let F=Q1(D.prerelease??"");return[{operator:">=",major:J,minor:Q,patch:w,prerelease:F},{operator:"<",major:J,minor:Q+1,patch:0}]}function k_(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[{operator:"<",major:0,minor:0,patch:0}];if(Y){if(Z)return[{operator:"<",major:J,minor:0,patch:0}];return[{operator:"<",major:J,minor:0,patch:0}]}if(Z)return[{operator:"<",major:J,minor:Q,patch:0}];let F=Q1(D.prerelease??""),B=J8(D.build??"");return[{operator:"<",major:J,minor:Q,patch:w,prerelease:F,build:B}]}function u_(D){let X=t0(D.minor),Y=t0(D.patch),Z=+D.major,J=+D.minor,Q=+D.patch;if(X){if(Y)return[{operator:"<",major:Z+1,minor:0,patch:0}];return[{operator:"<",major:Z,minor:J+1,patch:0}]}if(Y)return[{operator:"<",major:Z,minor:J+1,patch:0}];let w=Q1(D.prerelease??""),F=J8(D.build??"");return[{operator:"<=",major:Z,minor:J,patch:Q,prerelease:w,build:F}]}function h_(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[{operator:"<",major:0,minor:0,patch:0}];if(Y)return[{operator:">=",major:J+1,minor:0,patch:0}];if(Z)return[{operator:">=",major:J,minor:Q+1,patch:0}];let F=Q1(D.prerelease??""),B=J8(D.build??"");return[{operator:">",major:J,minor:Q,patch:w,prerelease:F,build:B}]}function __(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[A5];if(Y){if(Z)return[{operator:">=",major:J,minor:0,patch:0}];return[{operator:">=",major:J,minor:0,patch:0}]}if(Z)return[{operator:">=",major:J,minor:Q,patch:0}];let F=Q1(D.prerelease??""),B=J8(D.build??"");return[{operator:">=",major:J,minor:Q,patch:w,prerelease:F,build:B}]}function v_(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[A5];if(Y)return[{operator:">=",major:J,minor:0,patch:0},{operator:"<",major:J+1,minor:0,patch:0}];if(Z)return[{operator:">=",major:J,minor:Q,patch:0},{operator:"<",major:J,minor:Q+1,patch:0}];let F=Q1(D.prerelease??""),B=J8(D.build??"");return[{operator:void 0,major:J,minor:Q,patch:w,prerelease:F,build:B}]}function b_(D){let X=D.match(iG)?.groups;if(!X)return I_(D);switch(X.operator){case"^":return f_(X);case"~":case"~>":return y_(X);case"<":return k_(X);case"<=":return u_(X);case">":return h_(X);case">=":return __(X);case"=":case"":return v_(X);default:throw Error(`Cannot parse version range: '${X.operator}' is not a valid operator`)}}function g_(D){return D.split(/\s+/).flatMap(b_)}function IX(D){let X=D.replaceAll(/(?<=<|>|=|~|\^)(\s+)/g,"").split(/\s*\|\|\s*/).map((Y)=>x_(Y)||g_(Y));if(X.some((Y)=>Y.includes(null)))throw TypeError(`Cannot parse version range: range "${D}" is invalid`);return X}function i0(D){if(typeof D!=="string")throw TypeError(`Cannot parse version as version must be a string: received ${typeof D}`);if(D.length>OQ)throw TypeError(`Cannot parse version as version length is too long: length is ${D.length}, max length is ${OQ}`);D=D.trim();let X=D.match(lG)?.groups;if(!X)throw TypeError(`Cannot parse version: ${D}`);let Y=C6(X.major,`Cannot parse version ${D}: invalid major version`),Z=C6(X.minor,`Cannot parse version ${D}: invalid minor version`),J=C6(X.patch,`Cannot parse version ${D}: invalid patch version`),Q=X.prerelease?Q1(X.prerelease):[],w=X.buildmetadata?J8(X.buildmetadata):[];return{major:Y,minor:Z,patch:J,prerelease:Q,build:w}}function aG(D,X){let Y=D.operator,Z=X.operator;if(Y===void 0){if(n8(D))return!0;return Q4(D,[[X]])}if(Z===void 0){if(n8(X))return!0;return Q4(X,[[D]])}let J=w1(D,X);return(Y===">="||Y===">")&&(Z===">="||Z===">")||(Y==="<="||Y==="<")&&(Z==="<="||Z==="<")||J===0&&((Y===">="||Y==="<=")&&(Z===">="||Z==="<="))||J===-1&&(Y===">="||Y===">")&&(Z==="<="||Z==="<")||J===1&&(Y==="<="||Y==="<")&&(Z===">="||Z===">")}function m_(D){return D.every((X)=>{return X.some((Y)=>d_(Y))})}function d_(D){for(let X=0;X<D.length-1;X++){let Y=D[X];for(let Z of D.slice(X+1))if(!aG(Y,Z))return!1}return!0}function tG(D,X){return m_([D,X])&&D.some((Y)=>{return X.some((Z)=>{return Y.every((J)=>{return Z.every((Q)=>aG(J,Q))})})})}function rG(D){try{return i0(D),!0}catch{return!1}}function sG(D,X){return w1(D,X)>=0}var Z0={};e7(Z0,{createClient:()=>qw,SupabaseClient:()=>BH,PostgrestError:()=>$4,FunctionsRelayError:()=>eD.FunctionsRelayError,FunctionsHttpError:()=>eD.FunctionsHttpError,FunctionsFetchError:()=>eD.FunctionsFetchError,FunctionsError:()=>eD.FunctionsError,FunctionRegion:()=>eD.FunctionRegion});var eD=V0(yO(),1);var uO={};e7(uO,{default:()=>p_,PostgrestTransformBuilder:()=>LQ,PostgrestQueryBuilder:()=>VQ,PostgrestFilterBuilder:()=>j6,PostgrestError:()=>$4,PostgrestClient:()=>kX,PostgrestBuilder:()=>MQ});var $4=class extends Error{constructor(D){super(D.message);this.name="PostgrestError",this.details=D.details,this.hint=D.hint,this.code=D.code}},MQ=class{constructor(D){var X,Y;if(this.shouldThrowOnError=!1,this.method=D.method,this.url=D.url,this.headers=new Headers(D.headers),this.schema=D.schema,this.body=D.body,this.shouldThrowOnError=(X=D.shouldThrowOnError)!==null&&X!==void 0?X:!1,this.signal=D.signal,this.isMaybeSingle=(Y=D.isMaybeSingle)!==null&&Y!==void 0?Y:!1,D.fetch)this.fetch=D.fetch;else this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(D,X){return this.headers=new Headers(this.headers),this.headers.set(D,X),this}then(D,X){var Y=this;if(this.schema===void 0);else if(["GET","HEAD"].includes(this.method))this.headers.set("Accept-Profile",this.schema);else this.headers.set("Content-Profile",this.schema);if(this.method!=="GET"&&this.method!=="HEAD")this.headers.set("Content-Type","application/json");let Z=this.fetch,J=Z(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(async(Q)=>{let w=null,F=null,B=null,q=Q.status,$=Q.statusText;if(Q.ok){var G,W;if(Y.method!=="HEAD"){var O;let N=await Q.text();if(N==="");else if(Y.headers.get("Accept")==="text/csv")F=N;else if(Y.headers.get("Accept")&&((O=Y.headers.get("Accept"))===null||O===void 0?void 0:O.includes("application/vnd.pgrst.plan+text")))F=N;else F=JSON.parse(N)}let M=(G=Y.headers.get("Prefer"))===null||G===void 0?void 0:G.match(/count=(exact|planned|estimated)/),U=(W=Q.headers.get("content-range"))===null||W===void 0?void 0:W.split("/");if(M&&U&&U.length>1)B=parseInt(U[1]);if(Y.isMaybeSingle&&Y.method==="GET"&&Array.isArray(F))if(F.length>1)w={code:"PGRST116",details:`Results contain ${F.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},F=null,B=null,q=406,$="Not Acceptable";else if(F.length===1)F=F[0];else F=null}else{var H;let M=await Q.text();try{if(w=JSON.parse(M),Array.isArray(w)&&Q.status===404)F=[],w=null,q=200,$="OK"}catch(U){if(Q.status===404&&M==="")q=204,$="No Content";else w={message:M}}if(w&&Y.isMaybeSingle&&(w===null||w===void 0||(H=w.details)===null||H===void 0?void 0:H.includes("0 rows")))w=null,q=200,$="OK";if(w&&Y.shouldThrowOnError)throw new $4(w)}return{error:w,data:F,count:B,status:q,statusText:$}});if(!this.shouldThrowOnError)J=J.catch((Q)=>{var w;let F="",B=Q===null||Q===void 0?void 0:Q.cause;if(B){var q,$,G,W;let H=(q=B===null||B===void 0?void 0:B.message)!==null&&q!==void 0?q:"",M=($=B===null||B===void 0?void 0:B.code)!==null&&$!==void 0?$:"";if(F=`${(G=Q===null||Q===void 0?void 0:Q.name)!==null&&G!==void 0?G:"FetchError"}: ${Q===null||Q===void 0?void 0:Q.message}`,F+=`
311
+ `)}}var Ty=require("node:child_process"),L0=require("node:fs"),qJ=require("node:os"),W0=N0(require("node:path")),m8=require("node:process"),e6=N0(RX(),1);var J1=require("fs"),J4=(D=".",X="unknown")=>{let Y=`${D}/bun.lockb`,Z=`${D}/bun.lock`,J=`${D}/pnpm-lock.yaml`,Q=`${D}/shrinkwrap.yaml`,w=`${D}/yarn.lock`,F=`${D}/package-lock.json`,B=`${D}/npm-shrinkwrap.json`;if(J1.existsSync(Y)||J1.existsSync(Z))return"bun";if(J1.existsSync(J)||J1.existsSync(Q))return"pnpm";if(J1.existsSync(w))return"yarn";if(J1.existsSync(F)||J1.existsSync(B))return"npm";return X},AX=(D=J4(),X=!1)=>{switch(D){case"bun":return X?"bun install":"install";case"pnpm":return X?"pnpm install":"install";case"yarn":return X?"yarn install":"install";case"npm":return X?"npm install":"install";case"unknown":return X?"unknown unknown":"unknown";default:return X?"npm install":"install"}},_G=(D=".",X="npx")=>{let Y=`${D}/bun.lockb`,Z=`${D}/bun.lock`,J=`${D}/pnpm-lock.yaml`,Q=`${D}/shrinkwrap.yaml`,w=`${D}/yarn.lock`,F=`${D}/package-lock.json`,B=`${D}/npm-shrinkwrap.json`;if(J1.existsSync(Y)||J1.existsSync(Z))return"bunx";if(J1.existsSync(J)||J1.existsSync(Q))return"pnpm exec";if(J1.existsSync(w))return"yarn dlx";if(J1.existsSync(F)||J1.existsSync(B))return"npx";return X};function EX(D,X){if(isNaN(D)||isNaN(X))throw Error("Cannot compare against non-numbers");return D===X?0:D<X?-1:1}function gG(D=[],X=[]){if(D.length&&!X.length)return-1;if(!D.length&&X.length)return 1;return 0}function $Q(D=[],X=[]){let Y=Math.max(D.length,X.length);for(let Z=0;Z<Y;Z++){let J=D[Z],Q=X[Z];if(J===void 0&&Q===void 0)return 0;if(Q===void 0)return 1;if(J===void 0)return-1;if(typeof J==="string"&&typeof Q==="number")return 1;if(typeof J==="number"&&typeof Q==="string")return-1;if(J<Q)return-1;if(J>Q)return 1}return 0}var R5="0|[1-9]\\d*",R_="\\d*[a-zA-Z-][a-zA-Z0-9-]*",A_=`(?<major>${R5})\\.(?<minor>${R5})\\.(?<patch>${R5})`,vG=`(?:${R5}|${R_})`,mG=`(?:-(?<prerelease>${vG}(?:\\.${vG})*))`,bG="[0-9A-Za-z-]+",dG=`(?:\\+(?<buildmetadata>${bG}(?:\\.${bG})*))`,cG=`v?${A_}${mG}?${dG}?`,lG=new RegExp(`^${cG}$`),nG="(?:<|>)?=?",E_="x|X|\\*",qQ=`${R5}|${E_}`,CX=`[v=\\s]*(?<major>${qQ})(?:\\.(?<minor>${qQ})(?:\\.(?<patch>${qQ})${mG}?${dG}?)?)?`,iG=new RegExp(`^(?<operator>~>?|\\^|${nG})\\s*${CX}$`),pG=new RegExp(`^(?<operator>${nG})\\s*(${cG})$|^$`);function GQ(D){return typeof D==="number"&&!Number.isNaN(D)&&(!Number.isFinite(D)||0<=D&&D<=Number.MAX_SAFE_INTEGER)}var OQ=256;var C_=new RegExp(`^${R5}$`);function Q1(D){return D.split(".").filter(Boolean).map((X)=>{if(C_.test(X)){let Y=Number(X);if(GQ(Y))return Y}return X})}function J8(D){return D.split(".").filter(Boolean)}function C6(D,X){let Y=Number(D);if(!GQ(Y))throw TypeError(X);return Y}function n8(D){return Number.isNaN(D.major)&&Number.isNaN(D.minor)&&Number.isNaN(D.patch)&&(D.prerelease===void 0||D.prerelease.length===0)&&(D.build===void 0||D.build.length===0)}function w1(D,X){if(D===X)return 0;return EX(D.major,X.major)||EX(D.minor,X.minor)||EX(D.patch,X.patch)||gG(D.prerelease,X.prerelease)||$Q(D.prerelease,X.prerelease)}function WQ(D){return D.toFixed(0)}function Q8(D){let X=WQ(D.major),Y=WQ(D.minor),Z=WQ(D.patch),J=D.prerelease?.join(".")??"",Q=D.build?.join(".")??"";return[[`${X}.${Y}.${Z}`,J].filter((B)=>B).join("-"),Q].filter((B)=>B).join("+")}function j_(D,X){if(n8(X))return!0;let Y=w1(D,X);switch(X.operator){case"=":case void 0:return Y===0;case"!=":return Y!==0;case">":return Y>0;case"<":return Y<0;case">=":return Y>=0;case"<=":return Y<=0}}function jX(D,X){for(let Y of X)if(!j_(D,Y))return!1;if(D.prerelease&&D.prerelease.length>0){for(let Y of X){if(n8(Y))continue;let{major:Z,minor:J,patch:Q,prerelease:w}=Y;if(w&&w.length>0){if(D.major===Z&&D.minor===J&&D.patch===Q)return!0}}return!1}return!0}function Q4(D,X){return X.some((Y)=>jX(D,Y))}function T_(D=[]){let X=[...D],Y=X.length;while(Y>=0){let Z=X[Y];if(typeof Z==="number"){X[Y]=Z+1;break}Y-=1}if(Y===-1)X.push(0);return X}function w4(D=[],X){let Y=T_(D);if(!X)return Y;let Z=Q1(X);if(Z.every((J)=>typeof J==="string")){if(Z.every((J,Q)=>J===Y[Q])&&typeof Y[Z.length]==="number")return Y;Z=[...Z,0]}return Z}function F4(D,X,Y={}){let Z=Y.build!==void 0?J8(Y.build):D.build??[];switch(X){case"premajor":return{major:D.major+1,minor:0,patch:0,prerelease:w4(D.prerelease,Y.prerelease),build:Z};case"preminor":return{major:D.major,minor:D.minor+1,patch:0,prerelease:w4(D.prerelease,Y.prerelease),build:Z};case"prepatch":return{major:D.major,minor:D.minor,patch:D.patch+1,prerelease:w4(D.prerelease,Y.prerelease),build:Z};case"prerelease":{let Q=(D.prerelease??[]).length===0?D.patch+1:D.patch;return{major:D.major,minor:D.minor,patch:Q,prerelease:w4(D.prerelease,Y.prerelease),build:Z}}case"major":return{major:(D.prerelease??[]).length===0||D.minor!==0||D.patch!==0?D.major+1:D.major,minor:0,patch:0,prerelease:[],build:Z};case"minor":{let Q=(D.prerelease??[]).length===0||D.patch!==0?D.minor+1:D.minor;return{major:D.major,minor:Q,patch:0,prerelease:[],build:Z}}case"patch":{let Q=(D.prerelease??[]).length===0?D.patch+1:D.patch;return{major:D.major,minor:D.minor,patch:Q,prerelease:[],build:Z}}case"pre":return{major:D.major,minor:D.minor,patch:D.patch,prerelease:w4(D.prerelease,Y.prerelease),build:Z};default:throw TypeError(`Cannot increment version: invalid argument ${X}`)}}var TX={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},A5={operator:void 0,...TX};function HQ(D,X){return w1(D,X)>0}function B9(D,X){return w1(D,X)<0}function I_(D){let Y=D.match(pG)?.groups;if(!Y)return null;let{operator:Z,prerelease:J,buildmetadata:Q}=Y,w=Y.major?{major:C6(Y.major,`Cannot parse comparator ${D}: invalid major version`),minor:C6(Y.minor,`Cannot parse comparator ${D}: invalid minor version`),patch:C6(Y.patch,`Cannot parse comparator ${D}: invalid patch version`),prerelease:J?Q1(J):[],build:Q?J8(Q):[]}:TX;return{operator:Z||void 0,...w}}function t0(D){return!D||D.toLowerCase()==="x"||D==="*"}function P_(D){if(t0(D.major))return;if(t0(D.minor))return{operator:">=",major:+D.major,minor:0,patch:0,prerelease:[],build:[]};if(t0(D.patch))return{operator:">=",major:+D.major,minor:+D.minor,patch:0,prerelease:[],build:[]};return{operator:">=",major:+D.major,minor:+D.minor,patch:+D.patch,prerelease:D.prerelease?Q1(D.prerelease):[],build:[]}}function S_(D){if(t0(D.major))return;if(t0(D.minor))return{operator:"<",major:+D.major+1,minor:0,patch:0,prerelease:[],build:[]};if(t0(D.patch))return{operator:"<",major:+D.major,minor:+D.minor+1,patch:0,prerelease:[],build:[]};if(D.prerelease)return{operator:"<=",major:+D.major,minor:+D.minor,patch:+D.patch,prerelease:Q1(D.prerelease),build:[]};return{operator:"<=",major:+D.major,minor:+D.minor,patch:+D.patch,prerelease:[],build:[]}}function x_(D){let X=D.match(new RegExp(`^${CX}`)),Y=X?.groups;if(!Y)return null;let Z=X[0].length,J=D.slice(Z).match(/^\s+-\s+/);if(!J)return null;let Q=J[0].length,F=D.slice(Z+Q).match(new RegExp(`^${CX}\\s*$`))?.groups;if(!F)return null;let B=P_(Y),q=S_(F);return[B,q].filter(Boolean)}function f_(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[A5];if(Y)return[{operator:">=",major:J,minor:0,patch:0},{operator:"<",major:J+1,minor:0,patch:0}];if(Z){if(J===0)return[{operator:">=",major:J,minor:Q,patch:0},{operator:"<",major:J,minor:Q+1,patch:0}];return[{operator:">=",major:J,minor:Q,patch:0},{operator:"<",major:J+1,minor:0,patch:0}]}let F=Q1(D.prerelease??"");if(J===0){if(Q===0)return[{operator:">=",major:J,minor:Q,patch:w,prerelease:F},{operator:"<",major:J,minor:Q,patch:w+1}];return[{operator:">=",major:J,minor:Q,patch:w,prerelease:F},{operator:"<",major:J,minor:Q+1,patch:0}]}return[{operator:">=",major:J,minor:Q,patch:w,prerelease:F},{operator:"<",major:J+1,minor:0,patch:0}]}function y_(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[A5];if(Y)return[{operator:">=",major:J,minor:0,patch:0},{operator:"<",major:J+1,minor:0,patch:0}];if(Z)return[{operator:">=",major:J,minor:Q,patch:0},{operator:"<",major:J,minor:Q+1,patch:0}];let F=Q1(D.prerelease??"");return[{operator:">=",major:J,minor:Q,patch:w,prerelease:F},{operator:"<",major:J,minor:Q+1,patch:0}]}function k_(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[{operator:"<",major:0,minor:0,patch:0}];if(Y){if(Z)return[{operator:"<",major:J,minor:0,patch:0}];return[{operator:"<",major:J,minor:0,patch:0}]}if(Z)return[{operator:"<",major:J,minor:Q,patch:0}];let F=Q1(D.prerelease??""),B=J8(D.build??"");return[{operator:"<",major:J,minor:Q,patch:w,prerelease:F,build:B}]}function u_(D){let X=t0(D.minor),Y=t0(D.patch),Z=+D.major,J=+D.minor,Q=+D.patch;if(X){if(Y)return[{operator:"<",major:Z+1,minor:0,patch:0}];return[{operator:"<",major:Z,minor:J+1,patch:0}]}if(Y)return[{operator:"<",major:Z,minor:J+1,patch:0}];let w=Q1(D.prerelease??""),F=J8(D.build??"");return[{operator:"<=",major:Z,minor:J,patch:Q,prerelease:w,build:F}]}function h_(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[{operator:"<",major:0,minor:0,patch:0}];if(Y)return[{operator:">=",major:J+1,minor:0,patch:0}];if(Z)return[{operator:">=",major:J,minor:Q+1,patch:0}];let F=Q1(D.prerelease??""),B=J8(D.build??"");return[{operator:">",major:J,minor:Q,patch:w,prerelease:F,build:B}]}function __(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[A5];if(Y){if(Z)return[{operator:">=",major:J,minor:0,patch:0}];return[{operator:">=",major:J,minor:0,patch:0}]}if(Z)return[{operator:">=",major:J,minor:Q,patch:0}];let F=Q1(D.prerelease??""),B=J8(D.build??"");return[{operator:">=",major:J,minor:Q,patch:w,prerelease:F,build:B}]}function v_(D){let X=t0(D.major),Y=t0(D.minor),Z=t0(D.patch),J=+D.major,Q=+D.minor,w=+D.patch;if(X)return[A5];if(Y)return[{operator:">=",major:J,minor:0,patch:0},{operator:"<",major:J+1,minor:0,patch:0}];if(Z)return[{operator:">=",major:J,minor:Q,patch:0},{operator:"<",major:J,minor:Q+1,patch:0}];let F=Q1(D.prerelease??""),B=J8(D.build??"");return[{operator:void 0,major:J,minor:Q,patch:w,prerelease:F,build:B}]}function b_(D){let X=D.match(iG)?.groups;if(!X)return I_(D);switch(X.operator){case"^":return f_(X);case"~":case"~>":return y_(X);case"<":return k_(X);case"<=":return u_(X);case">":return h_(X);case">=":return __(X);case"=":case"":return v_(X);default:throw Error(`Cannot parse version range: '${X.operator}' is not a valid operator`)}}function g_(D){return D.split(/\s+/).flatMap(b_)}function IX(D){let X=D.replaceAll(/(?<=<|>|=|~|\^)(\s+)/g,"").split(/\s*\|\|\s*/).map((Y)=>x_(Y)||g_(Y));if(X.some((Y)=>Y.includes(null)))throw TypeError(`Cannot parse version range: range "${D}" is invalid`);return X}function i0(D){if(typeof D!=="string")throw TypeError(`Cannot parse version as version must be a string: received ${typeof D}`);if(D.length>OQ)throw TypeError(`Cannot parse version as version length is too long: length is ${D.length}, max length is ${OQ}`);D=D.trim();let X=D.match(lG)?.groups;if(!X)throw TypeError(`Cannot parse version: ${D}`);let Y=C6(X.major,`Cannot parse version ${D}: invalid major version`),Z=C6(X.minor,`Cannot parse version ${D}: invalid minor version`),J=C6(X.patch,`Cannot parse version ${D}: invalid patch version`),Q=X.prerelease?Q1(X.prerelease):[],w=X.buildmetadata?J8(X.buildmetadata):[];return{major:Y,minor:Z,patch:J,prerelease:Q,build:w}}function aG(D,X){let Y=D.operator,Z=X.operator;if(Y===void 0){if(n8(D))return!0;return Q4(D,[[X]])}if(Z===void 0){if(n8(X))return!0;return Q4(X,[[D]])}let J=w1(D,X);return(Y===">="||Y===">")&&(Z===">="||Z===">")||(Y==="<="||Y==="<")&&(Z==="<="||Z==="<")||J===0&&((Y===">="||Y==="<=")&&(Z===">="||Z==="<="))||J===-1&&(Y===">="||Y===">")&&(Z==="<="||Z==="<")||J===1&&(Y==="<="||Y==="<")&&(Z===">="||Z===">")}function m_(D){return D.every((X)=>{return X.some((Y)=>d_(Y))})}function d_(D){for(let X=0;X<D.length-1;X++){let Y=D[X];for(let Z of D.slice(X+1))if(!aG(Y,Z))return!1}return!0}function tG(D,X){return m_([D,X])&&D.some((Y)=>{return X.some((Z)=>{return Y.every((J)=>{return Z.every((Q)=>aG(J,Q))})})})}function rG(D){try{return i0(D),!0}catch{return!1}}function sG(D,X){return w1(D,X)>=0}var Z0={};e7(Z0,{createClient:()=>qw,SupabaseClient:()=>BH,PostgrestError:()=>$4,FunctionsRelayError:()=>eD.FunctionsRelayError,FunctionsHttpError:()=>eD.FunctionsHttpError,FunctionsFetchError:()=>eD.FunctionsFetchError,FunctionsError:()=>eD.FunctionsError,FunctionRegion:()=>eD.FunctionRegion});var eD=N0(yO(),1);var uO={};e7(uO,{default:()=>p_,PostgrestTransformBuilder:()=>LQ,PostgrestQueryBuilder:()=>VQ,PostgrestFilterBuilder:()=>j6,PostgrestError:()=>$4,PostgrestClient:()=>kX,PostgrestBuilder:()=>MQ});var $4=class extends Error{constructor(D){super(D.message);this.name="PostgrestError",this.details=D.details,this.hint=D.hint,this.code=D.code}},MQ=class{constructor(D){var X,Y;if(this.shouldThrowOnError=!1,this.method=D.method,this.url=D.url,this.headers=new Headers(D.headers),this.schema=D.schema,this.body=D.body,this.shouldThrowOnError=(X=D.shouldThrowOnError)!==null&&X!==void 0?X:!1,this.signal=D.signal,this.isMaybeSingle=(Y=D.isMaybeSingle)!==null&&Y!==void 0?Y:!1,D.fetch)this.fetch=D.fetch;else this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(D,X){return this.headers=new Headers(this.headers),this.headers.set(D,X),this}then(D,X){var Y=this;if(this.schema===void 0);else if(["GET","HEAD"].includes(this.method))this.headers.set("Accept-Profile",this.schema);else this.headers.set("Content-Profile",this.schema);if(this.method!=="GET"&&this.method!=="HEAD")this.headers.set("Content-Type","application/json");let Z=this.fetch,J=Z(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(async(Q)=>{let w=null,F=null,B=null,q=Q.status,$=Q.statusText;if(Q.ok){var G,W;if(Y.method!=="HEAD"){var O;let N=await Q.text();if(N==="");else if(Y.headers.get("Accept")==="text/csv")F=N;else if(Y.headers.get("Accept")&&((O=Y.headers.get("Accept"))===null||O===void 0?void 0:O.includes("application/vnd.pgrst.plan+text")))F=N;else F=JSON.parse(N)}let M=(G=Y.headers.get("Prefer"))===null||G===void 0?void 0:G.match(/count=(exact|planned|estimated)/),U=(W=Q.headers.get("content-range"))===null||W===void 0?void 0:W.split("/");if(M&&U&&U.length>1)B=parseInt(U[1]);if(Y.isMaybeSingle&&Y.method==="GET"&&Array.isArray(F))if(F.length>1)w={code:"PGRST116",details:`Results contain ${F.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},F=null,B=null,q=406,$="Not Acceptable";else if(F.length===1)F=F[0];else F=null}else{var H;let M=await Q.text();try{if(w=JSON.parse(M),Array.isArray(w)&&Q.status===404)F=[],w=null,q=200,$="OK"}catch(U){if(Q.status===404&&M==="")q=204,$="No Content";else w={message:M}}if(w&&Y.isMaybeSingle&&(w===null||w===void 0||(H=w.details)===null||H===void 0?void 0:H.includes("0 rows")))w=null,q=200,$="OK";if(w&&Y.shouldThrowOnError)throw new $4(w)}return{error:w,data:F,count:B,status:q,statusText:$}});if(!this.shouldThrowOnError)J=J.catch((Q)=>{var w;let F="",B=Q===null||Q===void 0?void 0:Q.cause;if(B){var q,$,G,W;let H=(q=B===null||B===void 0?void 0:B.message)!==null&&q!==void 0?q:"",M=($=B===null||B===void 0?void 0:B.code)!==null&&$!==void 0?$:"";if(F=`${(G=Q===null||Q===void 0?void 0:Q.name)!==null&&G!==void 0?G:"FetchError"}: ${Q===null||Q===void 0?void 0:Q.message}`,F+=`
312
312
 
313
313
  Caused by: ${(W=B===null||B===void 0?void 0:B.name)!==null&&W!==void 0?W:"Error"}: ${H}`,M)F+=` (${M})`;if(B===null||B===void 0?void 0:B.stack)F+=`
314
- ${B.stack}`}else{var O;F=(O=Q===null||Q===void 0?void 0:Q.stack)!==null&&O!==void 0?O:""}return{error:{message:`${(w=Q===null||Q===void 0?void 0:Q.name)!==null&&w!==void 0?w:"FetchError"}: ${Q===null||Q===void 0?void 0:Q.message}`,details:F,hint:"",code:""},data:null,count:null,status:0,statusText:""}});return J.then(D,X)}returns(){return this}overrideTypes(){return this}},LQ=class extends MQ{select(D){let X=!1,Y=(D!==null&&D!==void 0?D:"*").split("").map((Z)=>{if(/\s/.test(Z)&&!X)return"";if(Z==='"')X=!X;return Z}).join("");return this.url.searchParams.set("select",Y),this.headers.append("Prefer","return=representation"),this}order(D,{ascending:X=!0,nullsFirst:Y,foreignTable:Z,referencedTable:J=Z}={}){let Q=J?`${J}.order`:"order",w=this.url.searchParams.get(Q);return this.url.searchParams.set(Q,`${w?`${w},`:""}${D}.${X?"asc":"desc"}${Y===void 0?"":Y?".nullsfirst":".nullslast"}`),this}limit(D,{foreignTable:X,referencedTable:Y=X}={}){let Z=typeof Y>"u"?"limit":`${Y}.limit`;return this.url.searchParams.set(Z,`${D}`),this}range(D,X,{foreignTable:Y,referencedTable:Z=Y}={}){let J=typeof Z>"u"?"offset":`${Z}.offset`,Q=typeof Z>"u"?"limit":`${Z}.limit`;return this.url.searchParams.set(J,`${D}`),this.url.searchParams.set(Q,`${X-D+1}`),this}abortSignal(D){return this.signal=D,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){if(this.method==="GET")this.headers.set("Accept","application/json");else this.headers.set("Accept","application/vnd.pgrst.object+json");return this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}explain({analyze:D=!1,verbose:X=!1,settings:Y=!1,buffers:Z=!1,wal:J=!1,format:Q="text"}={}){var w;let F=[D?"analyze":null,X?"verbose":null,Y?"settings":null,Z?"buffers":null,J?"wal":null].filter(Boolean).join("|"),B=(w=this.headers.get("Accept"))!==null&&w!==void 0?w:"application/json";if(this.headers.set("Accept",`application/vnd.pgrst.plan+${Q}; for="${B}"; options=${F};`),Q==="json")return this;else return this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(D){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${D}`),this}},kO=new RegExp("[,()]"),j6=class extends LQ{eq(D,X){return this.url.searchParams.append(D,`eq.${X}`),this}neq(D,X){return this.url.searchParams.append(D,`neq.${X}`),this}gt(D,X){return this.url.searchParams.append(D,`gt.${X}`),this}gte(D,X){return this.url.searchParams.append(D,`gte.${X}`),this}lt(D,X){return this.url.searchParams.append(D,`lt.${X}`),this}lte(D,X){return this.url.searchParams.append(D,`lte.${X}`),this}like(D,X){return this.url.searchParams.append(D,`like.${X}`),this}likeAllOf(D,X){return this.url.searchParams.append(D,`like(all).{${X.join(",")}}`),this}likeAnyOf(D,X){return this.url.searchParams.append(D,`like(any).{${X.join(",")}}`),this}ilike(D,X){return this.url.searchParams.append(D,`ilike.${X}`),this}ilikeAllOf(D,X){return this.url.searchParams.append(D,`ilike(all).{${X.join(",")}}`),this}ilikeAnyOf(D,X){return this.url.searchParams.append(D,`ilike(any).{${X.join(",")}}`),this}regexMatch(D,X){return this.url.searchParams.append(D,`match.${X}`),this}regexIMatch(D,X){return this.url.searchParams.append(D,`imatch.${X}`),this}is(D,X){return this.url.searchParams.append(D,`is.${X}`),this}isDistinct(D,X){return this.url.searchParams.append(D,`isdistinct.${X}`),this}in(D,X){let Y=Array.from(new Set(X)).map((Z)=>{if(typeof Z==="string"&&kO.test(Z))return`"${Z}"`;else return`${Z}`}).join(",");return this.url.searchParams.append(D,`in.(${Y})`),this}notIn(D,X){let Y=Array.from(new Set(X)).map((Z)=>{if(typeof Z==="string"&&kO.test(Z))return`"${Z}"`;else return`${Z}`}).join(",");return this.url.searchParams.append(D,`not.in.(${Y})`),this}contains(D,X){if(typeof X==="string")this.url.searchParams.append(D,`cs.${X}`);else if(Array.isArray(X))this.url.searchParams.append(D,`cs.{${X.join(",")}}`);else this.url.searchParams.append(D,`cs.${JSON.stringify(X)}`);return this}containedBy(D,X){if(typeof X==="string")this.url.searchParams.append(D,`cd.${X}`);else if(Array.isArray(X))this.url.searchParams.append(D,`cd.{${X.join(",")}}`);else this.url.searchParams.append(D,`cd.${JSON.stringify(X)}`);return this}rangeGt(D,X){return this.url.searchParams.append(D,`sr.${X}`),this}rangeGte(D,X){return this.url.searchParams.append(D,`nxl.${X}`),this}rangeLt(D,X){return this.url.searchParams.append(D,`sl.${X}`),this}rangeLte(D,X){return this.url.searchParams.append(D,`nxr.${X}`),this}rangeAdjacent(D,X){return this.url.searchParams.append(D,`adj.${X}`),this}overlaps(D,X){if(typeof X==="string")this.url.searchParams.append(D,`ov.${X}`);else this.url.searchParams.append(D,`ov.{${X.join(",")}}`);return this}textSearch(D,X,{config:Y,type:Z}={}){let J="";if(Z==="plain")J="pl";else if(Z==="phrase")J="ph";else if(Z==="websearch")J="w";let Q=Y===void 0?"":`(${Y})`;return this.url.searchParams.append(D,`${J}fts${Q}.${X}`),this}match(D){return Object.entries(D).forEach(([X,Y])=>{this.url.searchParams.append(X,`eq.${Y}`)}),this}not(D,X,Y){return this.url.searchParams.append(D,`not.${X}.${Y}`),this}or(D,{foreignTable:X,referencedTable:Y=X}={}){let Z=Y?`${Y}.or`:"or";return this.url.searchParams.append(Z,`(${D})`),this}filter(D,X,Y){return this.url.searchParams.append(D,`${X}.${Y}`),this}},VQ=class{constructor(D,{headers:X={},schema:Y,fetch:Z}){this.url=D,this.headers=new Headers(X),this.schema=Y,this.fetch=Z}select(D,X){let{head:Y=!1,count:Z}=X!==null&&X!==void 0?X:{},J=Y?"HEAD":"GET",Q=!1,w=(D!==null&&D!==void 0?D:"*").split("").map((F)=>{if(/\s/.test(F)&&!Q)return"";if(F==='"')Q=!Q;return F}).join("");if(this.url.searchParams.set("select",w),Z)this.headers.append("Prefer",`count=${Z}`);return new j6({method:J,url:this.url,headers:this.headers,schema:this.schema,fetch:this.fetch})}insert(D,{count:X,defaultToNull:Y=!0}={}){var Z;let J="POST";if(X)this.headers.append("Prefer",`count=${X}`);if(!Y)this.headers.append("Prefer","missing=default");if(Array.isArray(D)){let Q=D.reduce((w,F)=>w.concat(Object.keys(F)),[]);if(Q.length>0){let w=[...new Set(Q)].map((F)=>`"${F}"`);this.url.searchParams.set("columns",w.join(","))}}return new j6({method:"POST",url:this.url,headers:this.headers,schema:this.schema,body:D,fetch:(Z=this.fetch)!==null&&Z!==void 0?Z:fetch})}upsert(D,{onConflict:X,ignoreDuplicates:Y=!1,count:Z,defaultToNull:J=!0}={}){var Q;let w="POST";if(this.headers.append("Prefer",`resolution=${Y?"ignore":"merge"}-duplicates`),X!==void 0)this.url.searchParams.set("on_conflict",X);if(Z)this.headers.append("Prefer",`count=${Z}`);if(!J)this.headers.append("Prefer","missing=default");if(Array.isArray(D)){let F=D.reduce((B,q)=>B.concat(Object.keys(q)),[]);if(F.length>0){let B=[...new Set(F)].map((q)=>`"${q}"`);this.url.searchParams.set("columns",B.join(","))}}return new j6({method:"POST",url:this.url,headers:this.headers,schema:this.schema,body:D,fetch:(Q=this.fetch)!==null&&Q!==void 0?Q:fetch})}update(D,{count:X}={}){var Y;let Z="PATCH";if(X)this.headers.append("Prefer",`count=${X}`);return new j6({method:"PATCH",url:this.url,headers:this.headers,schema:this.schema,body:D,fetch:(Y=this.fetch)!==null&&Y!==void 0?Y:fetch})}delete({count:D}={}){var X;let Y="DELETE";if(D)this.headers.append("Prefer",`count=${D}`);return new j6({method:"DELETE",url:this.url,headers:this.headers,schema:this.schema,fetch:(X=this.fetch)!==null&&X!==void 0?X:fetch})}},kX=class D{constructor(X,{headers:Y={},schema:Z,fetch:J}={}){this.url=X,this.headers=new Headers(Y),this.schemaName=Z,this.fetch=J}from(X){if(!X||typeof X!=="string"||X.trim()==="")throw Error("Invalid relation name: relation must be a non-empty string.");return new VQ(new URL(`${this.url}/${X}`),{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch})}schema(X){return new D(this.url,{headers:this.headers,schema:X,fetch:this.fetch})}rpc(X,Y={},{head:Z=!1,get:J=!1,count:Q}={}){var w;let F,B=new URL(`${this.url}/rpc/${X}`),q;if(Z||J)F=Z?"HEAD":"GET",Object.entries(Y).filter(([G,W])=>W!==void 0).map(([G,W])=>[G,Array.isArray(W)?`{${W.join(",")}}`:`${W}`]).forEach(([G,W])=>{B.searchParams.append(G,W)});else F="POST",q=Y;let $=new Headers(this.headers);if(Q)$.set("Prefer",`count=${Q}`);return new j6({method:F,url:B,headers:$,schema:this.schemaName,body:q,fetch:(w=this.fetch)!==null&&w!==void 0?w:fetch})}},p_={PostgrestClient:kX,PostgrestQueryBuilder:VQ,PostgrestFilterBuilder:j6,PostgrestTransformBuilder:LQ,PostgrestBuilder:MQ,PostgrestError:$4};var wH=V0(fQ(),1);var MW={};e7(MW,{validateVectorDimension:()=>bv,resolveResponse:()=>_v,resolveFetch:()=>nX,normalizeToFloat32:()=>vv,isStorageVectorsError:()=>E1,isStorageError:()=>FD,isPlainObject:()=>$W,VectorIndexScope:()=>zW,VectorIndexApi:()=>GW,VectorDataApi:()=>OW,VectorBucketScope:()=>KW,VectorBucketApi:()=>WW,StorageVectorsUnknownError:()=>qW,StorageVectorsErrorCode:()=>hv,StorageVectorsError:()=>bQ,StorageVectorsClient:()=>HW,StorageVectorsApiError:()=>cX,StorageUnknownError:()=>lX,StorageError:()=>V4,StorageClient:()=>gQ,StorageApiError:()=>JW,StorageAnalyticsClient:()=>BW});var z4=class extends Error{constructor(D,X){super(D);this.name="IcebergError",this.status=X.status,this.icebergType=X.icebergType,this.icebergCode=X.icebergCode,this.details=X.details,this.isCommitStateUnknown=X.icebergType==="CommitStateUnknownException"||[500,502,504].includes(X.status)&&X.icebergType?.includes("CommitState")===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function Mv(D,X,Y){let Z=new URL(X,D);if(Y){for(let[J,Q]of Object.entries(Y))if(Q!==void 0)Z.searchParams.set(J,Q)}return Z.toString()}async function Lv(D){if(!D||D.type==="none")return{};if(D.type==="bearer")return{Authorization:`Bearer ${D.token}`};if(D.type==="header")return{[D.name]:D.value};if(D.type==="custom")return await D.getHeaders();return{}}function Vv(D){let X=D.fetchImpl??globalThis.fetch;return{async request({method:Y,path:Z,query:J,body:Q,headers:w}){let F=Mv(D.baseUrl,Z,J),B=await Lv(D.auth),q=await X(F,{method:Y,headers:{...Q?{"Content-Type":"application/json"}:{},...B,...w},body:Q?JSON.stringify(Q):void 0}),$=await q.text(),G=(q.headers.get("content-type")||"").includes("application/json"),W=G&&$?JSON.parse($):$;if(!q.ok){let O=G?W:void 0,H=O?.error;throw new z4(H?.message??`Request failed with status ${q.status}`,{status:q.status,icebergType:H?.type,icebergCode:H?.code,details:O})}return{status:q.status,headers:q.headers,data:W}}}}function dX(D){return D.join("\x1F")}var Uv=class{constructor(D,X=""){this.client=D,this.prefix=X}async listNamespaces(D){let X=D?{parent:dX(D.namespace)}:void 0;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces`,query:X})).data.namespaces.map((Z)=>({namespace:Z}))}async createNamespace(D,X){let Y={namespace:D.namespace,properties:X?.properties};return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces`,body:Y})).data}async dropNamespace(D){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${dX(D.namespace)}`})}async loadNamespaceMetadata(D){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${dX(D.namespace)}`})).data.properties}}async namespaceExists(D){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${dX(D.namespace)}`}),!0}catch(X){if(X instanceof z4&&X.status===404)return!1;throw X}}async createNamespaceIfNotExists(D,X){try{return await this.createNamespace(D,X)}catch(Y){if(Y instanceof z4&&Y.status===409)return;throw Y}}};function T5(D){return D.join("\x1F")}var Nv=class{constructor(D,X="",Y){this.client=D,this.prefix=X,this.accessDelegation=Y}async listTables(D){return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables`})).data.identifiers}async createTable(D,X){let Y={};if(this.accessDelegation)Y["X-Iceberg-Access-Delegation"]=this.accessDelegation;return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables`,body:X,headers:Y})).data.metadata}async updateTable(D,X){let Y=await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables/${D.name}`,body:X});return{"metadata-location":Y.data["metadata-location"],metadata:Y.data.metadata}}async dropTable(D,X){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables/${D.name}`,query:{purgeRequested:String(X?.purge??!1)}})}async loadTable(D){let X={};if(this.accessDelegation)X["X-Iceberg-Access-Delegation"]=this.accessDelegation;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables/${D.name}`,headers:X})).data.metadata}async tableExists(D){let X={};if(this.accessDelegation)X["X-Iceberg-Access-Delegation"]=this.accessDelegation;try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables/${D.name}`,headers:X}),!0}catch(Y){if(Y instanceof z4&&Y.status===404)return!1;throw Y}}async createTableIfNotExists(D,X){try{return await this.createTable(D,X)}catch(Y){if(Y instanceof z4&&Y.status===409)return await this.loadTable({namespace:D.namespace,name:X.name});throw Y}}},DW=class{constructor(D){let X="v1";if(D.catalogName)X+=`/${D.catalogName}`;let Y=D.baseUrl.endsWith("/")?D.baseUrl:`${D.baseUrl}/`;this.client=Vv({baseUrl:Y,auth:D.auth,fetchImpl:D.fetch}),this.accessDelegation=D.accessDelegation?.join(","),this.namespaceOps=new Uv(this.client,X),this.tableOps=new Nv(this.client,X,this.accessDelegation)}async listNamespaces(D){return this.namespaceOps.listNamespaces(D)}async createNamespace(D,X){return this.namespaceOps.createNamespace(D,X)}async dropNamespace(D){await this.namespaceOps.dropNamespace(D)}async loadNamespaceMetadata(D){return this.namespaceOps.loadNamespaceMetadata(D)}async listTables(D){return this.tableOps.listTables(D)}async createTable(D,X){return this.tableOps.createTable(D,X)}async updateTable(D,X){return this.tableOps.updateTable(D,X)}async dropTable(D,X){await this.tableOps.dropTable(D,X)}async loadTable(D){return this.tableOps.loadTable(D)}async namespaceExists(D){return this.namespaceOps.namespaceExists(D)}async tableExists(D){return this.tableOps.tableExists(D)}async createNamespaceIfNotExists(D,X){return this.namespaceOps.createNamespaceIfNotExists(D,X)}async createTableIfNotExists(D,X){return this.tableOps.createTableIfNotExists(D,X)}};var V4=class extends Error{constructor(D){super(D);this.__isStorageError=!0,this.name="StorageError"}};function FD(D){return typeof D==="object"&&D!==null&&"__isStorageError"in D}var JW=class extends V4{constructor(D,X,Y){super(D);this.name="StorageApiError",this.status=X,this.statusCode=Y}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},lX=class extends V4{constructor(D,X){super(D);this.name="StorageUnknownError",this.originalError=X}},hQ=(D)=>{if(D)return(...X)=>D(...X);return(...X)=>fetch(...X)},Rv=()=>{return Response},kQ=(D)=>{if(Array.isArray(D))return D.map((Y)=>kQ(Y));else if(typeof D==="function"||D!==Object(D))return D;let X={};return Object.entries(D).forEach(([Y,Z])=>{let J=Y.replace(/([-_][a-z])/gi,(Q)=>Q.toUpperCase().replace(/[-_]/g,""));X[J]=kQ(Z)}),X},Av=(D)=>{if(typeof D!=="object"||D===null)return!1;let X=Object.getPrototypeOf(D);return(X===null||X===Object.prototype||Object.getPrototypeOf(X)===null)&&!(Symbol.toStringTag in D)&&!(Symbol.iterator in D)},Ev=(D)=>{if(!D||typeof D!=="string")return!1;if(D.length===0||D.length>100)return!1;if(D.trim()!==D)return!1;if(D.includes("/")||D.includes("\\"))return!1;return/^[\w!.\*'() &$@=;:+,?-]+$/.test(D)};function M4(D){return M4=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(X){return typeof X}:function(X){return X&&typeof Symbol=="function"&&X.constructor===Symbol&&X!==Symbol.prototype?"symbol":typeof X},M4(D)}function Cv(D,X){if(M4(D)!="object"||!D)return D;var Y=D[Symbol.toPrimitive];if(Y!==void 0){var Z=Y.call(D,X||"default");if(M4(Z)!="object")return Z;throw TypeError("@@toPrimitive must return a primitive value.")}return(X==="string"?String:Number)(D)}function jv(D){var X=Cv(D,"string");return M4(X)=="symbol"?X:X+""}function Tv(D,X,Y){return(X=jv(X))in D?Object.defineProperty(D,X,{value:Y,enumerable:!0,configurable:!0,writable:!0}):D[X]=Y,D}function XW(D,X){var Y=Object.keys(D);if(Object.getOwnPropertySymbols){var Z=Object.getOwnPropertySymbols(D);X&&(Z=Z.filter(function(J){return Object.getOwnPropertyDescriptor(D,J).enumerable})),Y.push.apply(Y,Z)}return Y}function G0(D){for(var X=1;X<arguments.length;X++){var Y=arguments[X]!=null?arguments[X]:{};X%2?XW(Object(Y),!0).forEach(function(Z){Tv(D,Z,Y[Z])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(Y)):XW(Object(Y)).forEach(function(Z){Object.defineProperty(D,Z,Object.getOwnPropertyDescriptor(Y,Z))})}return D}var yQ=(D)=>{var X;return D.msg||D.message||D.error_description||(typeof D.error==="string"?D.error:(X=D.error)===null||X===void 0?void 0:X.message)||JSON.stringify(D)},Iv=async(D,X,Y)=>{if(D instanceof await Rv()&&!(Y===null||Y===void 0?void 0:Y.noResolveJson))D.json().then((Z)=>{let J=D.status||500,Q=(Z===null||Z===void 0?void 0:Z.statusCode)||J+"";X(new JW(yQ(Z),J,Q))}).catch((Z)=>{X(new lX(yQ(Z),Z))});else X(new lX(yQ(D),D))},Pv=(D,X,Y,Z)=>{let J={method:D,headers:(X===null||X===void 0?void 0:X.headers)||{}};if(D==="GET"||!Z)return J;if(Av(Z))J.headers=G0({"Content-Type":"application/json"},X===null||X===void 0?void 0:X.headers),J.body=JSON.stringify(Z);else J.body=Z;if(X===null||X===void 0?void 0:X.duplex)J.duplex=X.duplex;return G0(G0({},J),Y)};async function U4(D,X,Y,Z,J,Q){return new Promise((w,F)=>{D(Y,Pv(X,Z,J,Q)).then((B)=>{if(!B.ok)throw B;if(Z===null||Z===void 0?void 0:Z.noResolveJson)return B;return B.json()}).then((B)=>w(B)).catch((B)=>Iv(B,F,Z))})}async function L4(D,X,Y,Z){return U4(D,"GET",X,Y,Z)}async function F8(D,X,Y,Z,J){return U4(D,"POST",X,Z,J,Y)}async function uQ(D,X,Y,Z,J){return U4(D,"PUT",X,Z,J,Y)}async function Sv(D,X,Y,Z){return U4(D,"HEAD",X,G0(G0({},Y),{},{noResolveJson:!0}),Z)}async function _Q(D,X,Y,Z,J){return U4(D,"DELETE",X,Z,J,Y)}var xv=class{constructor(D,X){this.downloadFn=D,this.shouldThrowOnError=X}then(D,X){return this.execute().then(D,X)}async execute(){var D=this;try{return{data:(await D.downloadFn()).body,error:null}}catch(X){if(D.shouldThrowOnError)throw X;if(FD(X))return{data:null,error:X};throw X}}},QW;QW=Symbol.toStringTag;var fv=class{constructor(D,X){this.downloadFn=D,this.shouldThrowOnError=X,this[QW]="BlobDownloadBuilder",this.promise=null}asStream(){return new xv(this.downloadFn,this.shouldThrowOnError)}then(D,X){return this.getPromise().then(D,X)}catch(D){return this.getPromise().catch(D)}finally(D){return this.getPromise().finally(D)}getPromise(){if(!this.promise)this.promise=this.execute();return this.promise}async execute(){var D=this;try{return{data:await(await D.downloadFn()).blob(),error:null}}catch(X){if(D.shouldThrowOnError)throw X;if(FD(X))return{data:null,error:X};throw X}}},yv={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},YW={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1},kv=class{constructor(D,X={},Y,Z){this.shouldThrowOnError=!1,this.url=D,this.headers=X,this.bucketId=Y,this.fetch=hQ(Z)}throwOnError(){return this.shouldThrowOnError=!0,this}async uploadOrUpdate(D,X,Y,Z){var J=this;try{let Q,w=G0(G0({},YW),Z),F=G0(G0({},J.headers),D==="POST"&&{"x-upsert":String(w.upsert)}),B=w.metadata;if(typeof Blob<"u"&&Y instanceof Blob){if(Q=new FormData,Q.append("cacheControl",w.cacheControl),B)Q.append("metadata",J.encodeMetadata(B));Q.append("",Y)}else if(typeof FormData<"u"&&Y instanceof FormData){if(Q=Y,!Q.has("cacheControl"))Q.append("cacheControl",w.cacheControl);if(B&&!Q.has("metadata"))Q.append("metadata",J.encodeMetadata(B))}else{if(Q=Y,F["cache-control"]=`max-age=${w.cacheControl}`,F["content-type"]=w.contentType,B)F["x-metadata"]=J.toBase64(J.encodeMetadata(B));if((typeof ReadableStream<"u"&&Q instanceof ReadableStream||Q&&typeof Q==="object"&&("pipe"in Q)&&typeof Q.pipe==="function")&&!w.duplex)w.duplex="half"}if(Z===null||Z===void 0?void 0:Z.headers)F=G0(G0({},F),Z.headers);let q=J._removeEmptyFolders(X),$=J._getFinalPath(q),G=await(D=="PUT"?uQ:F8)(J.fetch,`${J.url}/object/${$}`,Q,G0({headers:F},(w===null||w===void 0?void 0:w.duplex)?{duplex:w.duplex}:{}));return{data:{path:q,id:G.Id,fullPath:G.Key},error:null}}catch(Q){if(J.shouldThrowOnError)throw Q;if(FD(Q))return{data:null,error:Q};throw Q}}async upload(D,X,Y){return this.uploadOrUpdate("POST",D,X,Y)}async uploadToSignedUrl(D,X,Y,Z){var J=this;let Q=J._removeEmptyFolders(D),w=J._getFinalPath(Q),F=new URL(J.url+`/object/upload/sign/${w}`);F.searchParams.set("token",X);try{let B,q=G0({upsert:YW.upsert},Z),$=G0(G0({},J.headers),{"x-upsert":String(q.upsert)});if(typeof Blob<"u"&&Y instanceof Blob)B=new FormData,B.append("cacheControl",q.cacheControl),B.append("",Y);else if(typeof FormData<"u"&&Y instanceof FormData)B=Y,B.append("cacheControl",q.cacheControl);else B=Y,$["cache-control"]=`max-age=${q.cacheControl}`,$["content-type"]=q.contentType;return{data:{path:Q,fullPath:(await uQ(J.fetch,F.toString(),B,{headers:$})).Key},error:null}}catch(B){if(J.shouldThrowOnError)throw B;if(FD(B))return{data:null,error:B};throw B}}async createSignedUploadUrl(D,X){var Y=this;try{let Z=Y._getFinalPath(D),J=G0({},Y.headers);if(X===null||X===void 0?void 0:X.upsert)J["x-upsert"]="true";let Q=await F8(Y.fetch,`${Y.url}/object/upload/sign/${Z}`,{},{headers:J}),w=new URL(Y.url+Q.url),F=w.searchParams.get("token");if(!F)throw new V4("No token returned by API");return{data:{signedUrl:w.toString(),path:D,token:F},error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(FD(Z))return{data:null,error:Z};throw Z}}async update(D,X,Y){return this.uploadOrUpdate("PUT",D,X,Y)}async move(D,X,Y){var Z=this;try{return{data:await F8(Z.fetch,`${Z.url}/object/move`,{bucketId:Z.bucketId,sourceKey:D,destinationKey:X,destinationBucket:Y===null||Y===void 0?void 0:Y.destinationBucket},{headers:Z.headers}),error:null}}catch(J){if(Z.shouldThrowOnError)throw J;if(FD(J))return{data:null,error:J};throw J}}async copy(D,X,Y){var Z=this;try{return{data:{path:(await F8(Z.fetch,`${Z.url}/object/copy`,{bucketId:Z.bucketId,sourceKey:D,destinationKey:X,destinationBucket:Y===null||Y===void 0?void 0:Y.destinationBucket},{headers:Z.headers})).Key},error:null}}catch(J){if(Z.shouldThrowOnError)throw J;if(FD(J))return{data:null,error:J};throw J}}async createSignedUrl(D,X,Y){var Z=this;try{let J=Z._getFinalPath(D),Q=await F8(Z.fetch,`${Z.url}/object/sign/${J}`,G0({expiresIn:X},(Y===null||Y===void 0?void 0:Y.transform)?{transform:Y.transform}:{}),{headers:Z.headers}),w=(Y===null||Y===void 0?void 0:Y.download)?`&download=${Y.download===!0?"":Y.download}`:"";return Q={signedUrl:encodeURI(`${Z.url}${Q.signedURL}${w}`)},{data:Q,error:null}}catch(J){if(Z.shouldThrowOnError)throw J;if(FD(J))return{data:null,error:J};throw J}}async createSignedUrls(D,X,Y){var Z=this;try{let J=await F8(Z.fetch,`${Z.url}/object/sign/${Z.bucketId}`,{expiresIn:X,paths:D},{headers:Z.headers}),Q=(Y===null||Y===void 0?void 0:Y.download)?`&download=${Y.download===!0?"":Y.download}`:"";return{data:J.map((w)=>G0(G0({},w),{},{signedUrl:w.signedURL?encodeURI(`${Z.url}${w.signedURL}${Q}`):null})),error:null}}catch(J){if(Z.shouldThrowOnError)throw J;if(FD(J))return{data:null,error:J};throw J}}download(D,X){let Y=typeof(X===null||X===void 0?void 0:X.transform)<"u"?"render/image/authenticated":"object",Z=this.transformOptsToQueryString((X===null||X===void 0?void 0:X.transform)||{}),J=Z?`?${Z}`:"",Q=this._getFinalPath(D);return new fv(()=>L4(this.fetch,`${this.url}/${Y}/${Q}${J}`,{headers:this.headers,noResolveJson:!0}),this.shouldThrowOnError)}async info(D){var X=this;let Y=X._getFinalPath(D);try{return{data:kQ(await L4(X.fetch,`${X.url}/object/info/${Y}`,{headers:X.headers})),error:null}}catch(Z){if(X.shouldThrowOnError)throw Z;if(FD(Z))return{data:null,error:Z};throw Z}}async exists(D){var X=this;let Y=X._getFinalPath(D);try{return await Sv(X.fetch,`${X.url}/object/${Y}`,{headers:X.headers}),{data:!0,error:null}}catch(Z){if(X.shouldThrowOnError)throw Z;if(FD(Z)&&Z instanceof lX){let J=Z.originalError;if([400,404].includes(J===null||J===void 0?void 0:J.status))return{data:!1,error:Z}}throw Z}}getPublicUrl(D,X){let Y=this._getFinalPath(D),Z=[],J=(X===null||X===void 0?void 0:X.download)?`download=${X.download===!0?"":X.download}`:"";if(J!=="")Z.push(J);let Q=typeof(X===null||X===void 0?void 0:X.transform)<"u"?"render/image":"object",w=this.transformOptsToQueryString((X===null||X===void 0?void 0:X.transform)||{});if(w!=="")Z.push(w);let F=Z.join("&");if(F!=="")F=`?${F}`;return{data:{publicUrl:encodeURI(`${this.url}/${Q}/public/${Y}${F}`)}}}async remove(D){var X=this;try{return{data:await _Q(X.fetch,`${X.url}/object/${X.bucketId}`,{prefixes:D},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async list(D,X,Y){var Z=this;try{let J=G0(G0(G0({},yv),X),{},{prefix:D||""});return{data:await F8(Z.fetch,`${Z.url}/object/list/${Z.bucketId}`,J,{headers:Z.headers},Y),error:null}}catch(J){if(Z.shouldThrowOnError)throw J;if(FD(J))return{data:null,error:J};throw J}}async listV2(D,X){var Y=this;try{let Z=G0({},D);return{data:await F8(Y.fetch,`${Y.url}/object/list-v2/${Y.bucketId}`,Z,{headers:Y.headers},X),error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(FD(Z))return{data:null,error:Z};throw Z}}encodeMetadata(D){return JSON.stringify(D)}toBase64(D){if(typeof Buffer<"u")return Buffer.from(D).toString("base64");return btoa(D)}_getFinalPath(D){return`${this.bucketId}/${D.replace(/^\/+/,"")}`}_removeEmptyFolders(D){return D.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}transformOptsToQueryString(D){let X=[];if(D.width)X.push(`width=${D.width}`);if(D.height)X.push(`height=${D.height}`);if(D.resize)X.push(`resize=${D.resize}`);if(D.format)X.push(`format=${D.format}`);if(D.quality)X.push(`quality=${D.quality}`);return X.join("&")}},wW="2.89.0",FW={"X-Client-Info":`storage-js/${wW}`},uv=class{constructor(D,X={},Y,Z){this.shouldThrowOnError=!1;let J=new URL(D);if(Z===null||Z===void 0?void 0:Z.useNewHostname){if(/supabase\.(co|in|red)$/.test(J.hostname)&&!J.hostname.includes("storage.supabase."))J.hostname=J.hostname.replace("supabase.","storage.supabase.")}this.url=J.href.replace(/\/$/,""),this.headers=G0(G0({},FW),X),this.fetch=hQ(Y)}throwOnError(){return this.shouldThrowOnError=!0,this}async listBuckets(D){var X=this;try{let Y=X.listBucketOptionsToQueryString(D);return{data:await L4(X.fetch,`${X.url}/bucket${Y}`,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async getBucket(D){var X=this;try{return{data:await L4(X.fetch,`${X.url}/bucket/${D}`,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async createBucket(D,X={public:!1}){var Y=this;try{return{data:await F8(Y.fetch,`${Y.url}/bucket`,{id:D,name:D,type:X.type,public:X.public,file_size_limit:X.fileSizeLimit,allowed_mime_types:X.allowedMimeTypes},{headers:Y.headers}),error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(FD(Z))return{data:null,error:Z};throw Z}}async updateBucket(D,X){var Y=this;try{return{data:await uQ(Y.fetch,`${Y.url}/bucket/${D}`,{id:D,name:D,public:X.public,file_size_limit:X.fileSizeLimit,allowed_mime_types:X.allowedMimeTypes},{headers:Y.headers}),error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(FD(Z))return{data:null,error:Z};throw Z}}async emptyBucket(D){var X=this;try{return{data:await F8(X.fetch,`${X.url}/bucket/${D}/empty`,{},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async deleteBucket(D){var X=this;try{return{data:await _Q(X.fetch,`${X.url}/bucket/${D}`,{},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}listBucketOptionsToQueryString(D){let X={};if(D){if("limit"in D)X.limit=String(D.limit);if("offset"in D)X.offset=String(D.offset);if(D.search)X.search=D.search;if(D.sortColumn)X.sortColumn=D.sortColumn;if(D.sortOrder)X.sortOrder=D.sortOrder}return Object.keys(X).length>0?"?"+new URLSearchParams(X).toString():""}},BW=class{constructor(D,X={},Y){this.shouldThrowOnError=!1,this.url=D.replace(/\/$/,""),this.headers=G0(G0({},FW),X),this.fetch=hQ(Y)}throwOnError(){return this.shouldThrowOnError=!0,this}async createBucket(D){var X=this;try{return{data:await F8(X.fetch,`${X.url}/bucket`,{name:D},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async listBuckets(D){var X=this;try{let Y=new URLSearchParams;if((D===null||D===void 0?void 0:D.limit)!==void 0)Y.set("limit",D.limit.toString());if((D===null||D===void 0?void 0:D.offset)!==void 0)Y.set("offset",D.offset.toString());if(D===null||D===void 0?void 0:D.sortColumn)Y.set("sortColumn",D.sortColumn);if(D===null||D===void 0?void 0:D.sortOrder)Y.set("sortOrder",D.sortOrder);if(D===null||D===void 0?void 0:D.search)Y.set("search",D.search);let Z=Y.toString(),J=Z?`${X.url}/bucket?${Z}`:`${X.url}/bucket`;return{data:await L4(X.fetch,J,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async deleteBucket(D){var X=this;try{return{data:await _Q(X.fetch,`${X.url}/bucket/${D}`,{},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}from(D){var X=this;if(!Ev(D))throw new V4("Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.");let Y=new DW({baseUrl:this.url,catalogName:D,auth:{type:"custom",getHeaders:async()=>X.headers},fetch:this.fetch}),Z=this.shouldThrowOnError;return new Proxy(Y,{get(J,Q){let w=J[Q];if(typeof w!=="function")return w;return async(...F)=>{try{return{data:await w.apply(J,F),error:null}}catch(B){if(Z)throw B;return{data:null,error:B}}}}})}},vQ={"X-Client-Info":`storage-js/${wW}`,"Content-Type":"application/json"},bQ=class extends Error{constructor(D){super(D);this.__isStorageVectorsError=!0,this.name="StorageVectorsError"}};function E1(D){return typeof D==="object"&&D!==null&&"__isStorageVectorsError"in D}var cX=class extends bQ{constructor(D,X,Y){super(D);this.name="StorageVectorsApiError",this.status=X,this.statusCode=Y}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},qW=class extends bQ{constructor(D,X){super(D);this.name="StorageVectorsUnknownError",this.originalError=X}},hv=function(D){return D.InternalError="InternalError",D.S3VectorConflictException="S3VectorConflictException",D.S3VectorNotFoundException="S3VectorNotFoundException",D.S3VectorBucketNotEmpty="S3VectorBucketNotEmpty",D.S3VectorMaxBucketsExceeded="S3VectorMaxBucketsExceeded",D.S3VectorMaxIndexesExceeded="S3VectorMaxIndexesExceeded",D}({}),nX=(D)=>{if(D)return(...X)=>D(...X);return(...X)=>fetch(...X)},_v=()=>{return Response},$W=(D)=>{if(typeof D!=="object"||D===null)return!1;let X=Object.getPrototypeOf(D);return(X===null||X===Object.prototype||Object.getPrototypeOf(X)===null)&&!(Symbol.toStringTag in D)&&!(Symbol.iterator in D)},vv=(D)=>{return Array.from(new Float32Array(D))},bv=(D,X)=>{if(X!==void 0&&D.float32.length!==X)throw Error(`Vector dimension mismatch: expected ${X}, got ${D.float32.length}`)},ZW=(D)=>D.msg||D.message||D.error_description||D.error||JSON.stringify(D),gv=async(D,X,Y)=>{if(D&&typeof D==="object"&&"status"in D&&"ok"in D&&typeof D.status==="number"&&!(Y===null||Y===void 0?void 0:Y.noResolveJson)){let Z=D.status||500,J=D;if(typeof J.json==="function")J.json().then((Q)=>{let w=(Q===null||Q===void 0?void 0:Q.statusCode)||(Q===null||Q===void 0?void 0:Q.code)||Z+"";X(new cX(ZW(Q),Z,w))}).catch(()=>{let Q=Z+"";X(new cX(J.statusText||`HTTP ${Z} error`,Z,Q))});else{let Q=Z+"";X(new cX(J.statusText||`HTTP ${Z} error`,Z,Q))}}else X(new qW(ZW(D),D))},mv=(D,X,Y,Z)=>{let J={method:D,headers:(X===null||X===void 0?void 0:X.headers)||{}};if(D==="GET"||!Z)return J;if($W(Z))J.headers=G0({"Content-Type":"application/json"},X===null||X===void 0?void 0:X.headers),J.body=JSON.stringify(Z);else J.body=Z;return G0(G0({},J),Y)};async function dv(D,X,Y,Z,J,Q){return new Promise((w,F)=>{D(Y,mv(X,Z,J,Q)).then((B)=>{if(!B.ok)throw B;if(Z===null||Z===void 0?void 0:Z.noResolveJson)return B;let q=B.headers.get("content-type");if(!q||!q.includes("application/json"))return{};return B.json()}).then((B)=>w(B)).catch((B)=>gv(B,F,Z))})}async function u1(D,X,Y,Z,J){return dv(D,"POST",X,Z,J,Y)}var GW=class{constructor(D,X={},Y){this.shouldThrowOnError=!1,this.url=D.replace(/\/$/,""),this.headers=G0(G0({},vQ),X),this.fetch=nX(Y)}throwOnError(){return this.shouldThrowOnError=!0,this}async createIndex(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/CreateIndex`,D,{headers:X.headers})||{},error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async getIndex(D,X){var Y=this;try{return{data:await u1(Y.fetch,`${Y.url}/GetIndex`,{vectorBucketName:D,indexName:X},{headers:Y.headers}),error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(E1(Z))return{data:null,error:Z};throw Z}}async listIndexes(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/ListIndexes`,D,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async deleteIndex(D,X){var Y=this;try{return{data:await u1(Y.fetch,`${Y.url}/DeleteIndex`,{vectorBucketName:D,indexName:X},{headers:Y.headers})||{},error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(E1(Z))return{data:null,error:Z};throw Z}}},OW=class{constructor(D,X={},Y){this.shouldThrowOnError=!1,this.url=D.replace(/\/$/,""),this.headers=G0(G0({},vQ),X),this.fetch=nX(Y)}throwOnError(){return this.shouldThrowOnError=!0,this}async putVectors(D){var X=this;try{if(D.vectors.length<1||D.vectors.length>500)throw Error("Vector batch size must be between 1 and 500 items");return{data:await u1(X.fetch,`${X.url}/PutVectors`,D,{headers:X.headers})||{},error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async getVectors(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/GetVectors`,D,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async listVectors(D){var X=this;try{if(D.segmentCount!==void 0){if(D.segmentCount<1||D.segmentCount>16)throw Error("segmentCount must be between 1 and 16");if(D.segmentIndex!==void 0){if(D.segmentIndex<0||D.segmentIndex>=D.segmentCount)throw Error(`segmentIndex must be between 0 and ${D.segmentCount-1}`)}}return{data:await u1(X.fetch,`${X.url}/ListVectors`,D,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async queryVectors(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/QueryVectors`,D,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async deleteVectors(D){var X=this;try{if(D.keys.length<1||D.keys.length>500)throw Error("Keys batch size must be between 1 and 500 items");return{data:await u1(X.fetch,`${X.url}/DeleteVectors`,D,{headers:X.headers})||{},error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}},WW=class{constructor(D,X={},Y){this.shouldThrowOnError=!1,this.url=D.replace(/\/$/,""),this.headers=G0(G0({},vQ),X),this.fetch=nX(Y)}throwOnError(){return this.shouldThrowOnError=!0,this}async createBucket(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/CreateVectorBucket`,{vectorBucketName:D},{headers:X.headers})||{},error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async getBucket(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/GetVectorBucket`,{vectorBucketName:D},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async listBuckets(D={}){var X=this;try{return{data:await u1(X.fetch,`${X.url}/ListVectorBuckets`,D,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async deleteBucket(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/DeleteVectorBucket`,{vectorBucketName:D},{headers:X.headers})||{},error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}},HW=class extends WW{constructor(D,X={}){super(D,X.headers||{},X.fetch)}from(D){return new KW(this.url,this.headers,D,this.fetch)}async createBucket(D){var X=()=>super.createBucket,Y=this;return X().call(Y,D)}async getBucket(D){var X=()=>super.getBucket,Y=this;return X().call(Y,D)}async listBuckets(D={}){var X=()=>super.listBuckets,Y=this;return X().call(Y,D)}async deleteBucket(D){var X=()=>super.deleteBucket,Y=this;return X().call(Y,D)}},KW=class extends GW{constructor(D,X,Y,Z){super(D,X,Z);this.vectorBucketName=Y}async createIndex(D){var X=()=>super.createIndex,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName}))}async listIndexes(D={}){var X=()=>super.listIndexes,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName}))}async getIndex(D){var X=()=>super.getIndex,Y=this;return X().call(Y,Y.vectorBucketName,D)}async deleteIndex(D){var X=()=>super.deleteIndex,Y=this;return X().call(Y,Y.vectorBucketName,D)}index(D){return new zW(this.url,this.headers,this.vectorBucketName,D,this.fetch)}},zW=class extends OW{constructor(D,X,Y,Z,J){super(D,X,J);this.vectorBucketName=Y,this.indexName=Z}async putVectors(D){var X=()=>super.putVectors,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName,indexName:Y.indexName}))}async getVectors(D){var X=()=>super.getVectors,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName,indexName:Y.indexName}))}async listVectors(D={}){var X=()=>super.listVectors,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName,indexName:Y.indexName}))}async queryVectors(D){var X=()=>super.queryVectors,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName,indexName:Y.indexName}))}async deleteVectors(D){var X=()=>super.deleteVectors,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName,indexName:Y.indexName}))}},gQ=class extends uv{constructor(D,X={},Y,Z){super(D,X,Y,Z)}from(D){return new kv(this.url,this.headers,D,this.fetch)}get vectors(){return new HW(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new BW(this.url+"/iceberg",this.headers,this.fetch)}};var FH=V0(Bw(),1);J0(Z0,V0(fQ(),1),module.exports);J0(Z0,V0(Bw(),1),module.exports);var Mg="2.89.0",C4="";if(typeof Deno<"u")C4="deno";else if(typeof document<"u")C4="web";else if(typeof navigator<"u"&&navigator.product==="ReactNative")C4="react-native";else C4="node";var Lg={"X-Client-Info":`supabase-js-${C4}/${Mg}`},Vg={headers:Lg},Ug={schema:"public"},Ng={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},Rg={};function j4(D){return j4=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(X){return typeof X}:function(X){return X&&typeof Symbol=="function"&&X.constructor===Symbol&&X!==Symbol.prototype?"symbol":typeof X},j4(D)}function Ag(D,X){if(j4(D)!="object"||!D)return D;var Y=D[Symbol.toPrimitive];if(Y!==void 0){var Z=Y.call(D,X||"default");if(j4(Z)!="object")return Z;throw TypeError("@@toPrimitive must return a primitive value.")}return(X==="string"?String:Number)(D)}function Eg(D){var X=Ag(D,"string");return j4(X)=="symbol"?X:X+""}function Cg(D,X,Y){return(X=Eg(X))in D?Object.defineProperty(D,X,{value:Y,enumerable:!0,configurable:!0,writable:!0}):D[X]=Y,D}function QH(D,X){var Y=Object.keys(D);if(Object.getOwnPropertySymbols){var Z=Object.getOwnPropertySymbols(D);X&&(Z=Z.filter(function(J){return Object.getOwnPropertyDescriptor(D,J).enumerable})),Y.push.apply(Y,Z)}return Y}function UD(D){for(var X=1;X<arguments.length;X++){var Y=arguments[X]!=null?arguments[X]:{};X%2?QH(Object(Y),!0).forEach(function(Z){Cg(D,Z,Y[Z])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(Y)):QH(Object(Y)).forEach(function(Z){Object.defineProperty(D,Z,Object.getOwnPropertyDescriptor(Y,Z))})}return D}var jg=(D)=>{if(D)return(...X)=>D(...X);return(...X)=>fetch(...X)},Tg=()=>{return Headers},Ig=(D,X,Y)=>{let Z=jg(Y),J=Tg();return async(Q,w)=>{var F;let B=(F=await X())!==null&&F!==void 0?F:D,q=new J(w===null||w===void 0?void 0:w.headers);if(!q.has("apikey"))q.set("apikey",D);if(!q.has("Authorization"))q.set("Authorization",`Bearer ${B}`);return Z(Q,UD(UD({},w),{},{headers:q}))}};function Pg(D){return D.endsWith("/")?D:D+"/"}function Sg(D,X){var Y,Z;let{db:J,auth:Q,realtime:w,global:F}=D,{db:B,auth:q,realtime:$,global:G}=X,W={db:UD(UD({},B),J),auth:UD(UD({},q),Q),realtime:UD(UD({},$),w),storage:{},global:UD(UD(UD({},G),F),{},{headers:UD(UD({},(Y=G===null||G===void 0?void 0:G.headers)!==null&&Y!==void 0?Y:{}),(Z=F===null||F===void 0?void 0:F.headers)!==null&&Z!==void 0?Z:{})}),accessToken:async()=>""};if(D.accessToken)W.accessToken=D.accessToken;else delete W.accessToken;return W}function xg(D){let X=D===null||D===void 0?void 0:D.trim();if(!X)throw Error("supabaseUrl is required.");if(!X.match(/^https?:\/\//i))throw Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(Pg(X))}catch(Y){throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var fg=class extends FH.AuthClient{constructor(D){super(D)}},BH=class{constructor(D,X,Y){var Z,J;this.supabaseUrl=D,this.supabaseKey=X;let Q=xg(D);if(!X)throw Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",Q),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",Q),this.storageUrl=new URL("storage/v1",Q),this.functionsUrl=new URL("functions/v1",Q);let w=`sb-${Q.hostname.split(".")[0]}-auth-token`,F={db:Ug,realtime:Rg,auth:UD(UD({},Ng),{},{storageKey:w}),global:Vg},B=Sg(Y!==null&&Y!==void 0?Y:{},F);if(this.storageKey=(Z=B.auth.storageKey)!==null&&Z!==void 0?Z:"",this.headers=(J=B.global.headers)!==null&&J!==void 0?J:{},!B.accessToken){var q;this.auth=this._initSupabaseAuthClient((q=B.auth)!==null&&q!==void 0?q:{},this.headers,B.global.fetch)}else this.accessToken=B.accessToken,this.auth=new Proxy({},{get:($,G)=>{throw Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(G)} is not possible`)}});if(this.fetch=Ig(X,this._getAccessToken.bind(this),B.global.fetch),this.realtime=this._initRealtimeClient(UD({headers:this.headers,accessToken:this._getAccessToken.bind(this)},B.realtime)),this.accessToken)this.accessToken().then(($)=>this.realtime.setAuth($)).catch(($)=>console.warn("Failed to set initial Realtime auth token:",$));if(this.rest=new kX(new URL("rest/v1",Q).href,{headers:this.headers,schema:B.db.schema,fetch:this.fetch}),this.storage=new gQ(this.storageUrl.href,this.headers,this.fetch,Y===null||Y===void 0?void 0:Y.storage),!B.accessToken)this._listenForAuthEvents()}get functions(){return new eD.FunctionsClient(this.functionsUrl.href,{headers:this.headers,customFetch:this.fetch})}from(D){return this.rest.from(D)}schema(D){return this.rest.schema(D)}rpc(D,X={},Y={head:!1,get:!1,count:void 0}){return this.rest.rpc(D,X,Y)}channel(D,X={config:{}}){return this.realtime.channel(D,X)}getChannels(){return this.realtime.getChannels()}removeChannel(D){return this.realtime.removeChannel(D)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getAccessToken(){var D=this,X,Y;if(D.accessToken)return await D.accessToken();let{data:Z}=await D.auth.getSession();return(X=(Y=Z.session)===null||Y===void 0?void 0:Y.access_token)!==null&&X!==void 0?X:D.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:D,persistSession:X,detectSessionInUrl:Y,storage:Z,userStorage:J,storageKey:Q,flowType:w,lock:F,debug:B,throwOnError:q},$,G){let W={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new fg({url:this.authUrl.href,headers:UD(UD({},W),$),storageKey:Q,autoRefreshToken:D,persistSession:X,detectSessionInUrl:Y,storage:Z,userStorage:J,flowType:w,lock:F,debug:B,throwOnError:q,fetch:G,hasCustomAuthorizationHeader:Object.keys(this.headers).some((O)=>O.toLowerCase()==="authorization")})}_initRealtimeClient(D){return new wH.RealtimeClient(this.realtimeUrl.href,UD(UD({},D),{},{params:UD(UD({},{apikey:this.supabaseKey}),D===null||D===void 0?void 0:D.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((D,X)=>{this._handleTokenChanged(D,"CLIENT",X===null||X===void 0?void 0:X.access_token)})}_handleTokenChanged(D,X,Y){if((D==="TOKEN_REFRESHED"||D==="SIGNED_IN")&&this.changedAccessToken!==Y)this.changedAccessToken=Y,this.realtime.setAuth(Y);else if(D==="SIGNED_OUT"){if(this.realtime.setAuth(),X=="STORAGE")this.auth.signOut();this.changedAccessToken=void 0}}},qw=(D,X,Y)=>{return new BH(D,X,Y)};function yg(){if(typeof window<"u")return!1;if(typeof process>"u")return!1;let D=process.version;if(D===void 0||D===null)return!1;let X=D.match(/^v(\d+)\./);if(!X)return!1;return parseInt(X[1],10)<=18}if(yg())console.warn("⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");var S$=V0(Kw(),1),Iy=V0(zK(),1),$J=V0(qZ(),1);var o8={name:"@capgo/cli",version:"7.71.1",type:"module",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 && bun 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","@modelcontextprotocol/sdk":"^1.0.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",eslint:"^9.38.0","git-format-staged":"3.1.3",husky:"^9.1.7","is-wsl":"^3.1.0",micromatch:"^4.0.8",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3",zod:"^3.24.0"}};async function $Z(D){try{let Y=`https://registry.npmjs.org/${encodeURIComponent(D.toLowerCase())}`,Z=await fetch(Y,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});if(!Z.ok)return null;return(await Z.json())["dist-tags"]?.latest||null}catch{return null}}async function o0(){let D=await $Z("@capgo/cli")??"",X=D?.split(".")[0];if(D!==o8.version)K.warning(`\uD83D\uDEA8 You are using @capgo/cli@${o8.version} it's not the latest version.
315
- Please use @capgo/cli@${D}" or @capgo/cli@${X} to keep up to date with the latest features and bug fixes.`)}async function AL(D,X,Y,Z,J,Q="✅"){await A0(Y,{channel:D,event:Z,icon:Q,user_id:X,...J?{tags:{"app-id":J}}:{},notify:!1})}var xF=require("node:buffer"),EL=require("node:crypto"),Ba=(()=>{let D=[];for(let X=0;X<256;X++){let Y=X;for(let Z=0;Z<8;Z++)Y=Y&1?3988292384^Y>>>1:Y>>>1;D[X]=Y}return D})();function qa(D){let X=4294967295;for(let Y=0;Y<D.length;Y++){let Z=D[Y];X=Ba[(X^Z)&255]^X>>>8}return X=X^4294967295,(X>>>0).toString(16).padStart(8,"0")}async function e8(D,X="sha256"){let Y=xF.Buffer.isBuffer(D)?D:xF.Buffer.from(D);if(X==="crc32")return qa(Y);let Z=EL.createHash(X);return Z.update(Y),Z.digest("hex")}var t3=V0(kf(),1);async function uf(){let D=await t3.loadConfig();return{config:D.app.extConfig,path:D.app.extConfigFilePath}}async function w$(D,X,Y=!1){let Z=await t3.loadConfig(),{extConfig:J}=Z.app;if(J){if(!J.plugins)J.plugins={extConfig:{},[D]:{}};if(!J.plugins[D])J.plugins[D]={};if(!Y)J.plugins[D]=X.config.plugins?.[D];else J=X.config;t3.writeConfig(J,Z.app.extConfigFilePath)}}async function u7(D,X=!1){await w$("CapacitorUpdater",D,X)}var h7={ORG_REQUIRES_EXPIRING_KEY:"org_requires_expiring_key",EXPIRATION_REQUIRED:"expiration_required",EXPIRATION_EXCEEDS_MAX:"expiration_exceeds_max"},r3={[h7.ORG_REQUIRES_EXPIRING_KEY]:`This organization requires API keys with expiration dates.
314
+ ${B.stack}`}else{var O;F=(O=Q===null||Q===void 0?void 0:Q.stack)!==null&&O!==void 0?O:""}return{error:{message:`${(w=Q===null||Q===void 0?void 0:Q.name)!==null&&w!==void 0?w:"FetchError"}: ${Q===null||Q===void 0?void 0:Q.message}`,details:F,hint:"",code:""},data:null,count:null,status:0,statusText:""}});return J.then(D,X)}returns(){return this}overrideTypes(){return this}},LQ=class extends MQ{select(D){let X=!1,Y=(D!==null&&D!==void 0?D:"*").split("").map((Z)=>{if(/\s/.test(Z)&&!X)return"";if(Z==='"')X=!X;return Z}).join("");return this.url.searchParams.set("select",Y),this.headers.append("Prefer","return=representation"),this}order(D,{ascending:X=!0,nullsFirst:Y,foreignTable:Z,referencedTable:J=Z}={}){let Q=J?`${J}.order`:"order",w=this.url.searchParams.get(Q);return this.url.searchParams.set(Q,`${w?`${w},`:""}${D}.${X?"asc":"desc"}${Y===void 0?"":Y?".nullsfirst":".nullslast"}`),this}limit(D,{foreignTable:X,referencedTable:Y=X}={}){let Z=typeof Y>"u"?"limit":`${Y}.limit`;return this.url.searchParams.set(Z,`${D}`),this}range(D,X,{foreignTable:Y,referencedTable:Z=Y}={}){let J=typeof Z>"u"?"offset":`${Z}.offset`,Q=typeof Z>"u"?"limit":`${Z}.limit`;return this.url.searchParams.set(J,`${D}`),this.url.searchParams.set(Q,`${X-D+1}`),this}abortSignal(D){return this.signal=D,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){if(this.method==="GET")this.headers.set("Accept","application/json");else this.headers.set("Accept","application/vnd.pgrst.object+json");return this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}explain({analyze:D=!1,verbose:X=!1,settings:Y=!1,buffers:Z=!1,wal:J=!1,format:Q="text"}={}){var w;let F=[D?"analyze":null,X?"verbose":null,Y?"settings":null,Z?"buffers":null,J?"wal":null].filter(Boolean).join("|"),B=(w=this.headers.get("Accept"))!==null&&w!==void 0?w:"application/json";if(this.headers.set("Accept",`application/vnd.pgrst.plan+${Q}; for="${B}"; options=${F};`),Q==="json")return this;else return this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(D){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${D}`),this}},kO=new RegExp("[,()]"),j6=class extends LQ{eq(D,X){return this.url.searchParams.append(D,`eq.${X}`),this}neq(D,X){return this.url.searchParams.append(D,`neq.${X}`),this}gt(D,X){return this.url.searchParams.append(D,`gt.${X}`),this}gte(D,X){return this.url.searchParams.append(D,`gte.${X}`),this}lt(D,X){return this.url.searchParams.append(D,`lt.${X}`),this}lte(D,X){return this.url.searchParams.append(D,`lte.${X}`),this}like(D,X){return this.url.searchParams.append(D,`like.${X}`),this}likeAllOf(D,X){return this.url.searchParams.append(D,`like(all).{${X.join(",")}}`),this}likeAnyOf(D,X){return this.url.searchParams.append(D,`like(any).{${X.join(",")}}`),this}ilike(D,X){return this.url.searchParams.append(D,`ilike.${X}`),this}ilikeAllOf(D,X){return this.url.searchParams.append(D,`ilike(all).{${X.join(",")}}`),this}ilikeAnyOf(D,X){return this.url.searchParams.append(D,`ilike(any).{${X.join(",")}}`),this}regexMatch(D,X){return this.url.searchParams.append(D,`match.${X}`),this}regexIMatch(D,X){return this.url.searchParams.append(D,`imatch.${X}`),this}is(D,X){return this.url.searchParams.append(D,`is.${X}`),this}isDistinct(D,X){return this.url.searchParams.append(D,`isdistinct.${X}`),this}in(D,X){let Y=Array.from(new Set(X)).map((Z)=>{if(typeof Z==="string"&&kO.test(Z))return`"${Z}"`;else return`${Z}`}).join(",");return this.url.searchParams.append(D,`in.(${Y})`),this}notIn(D,X){let Y=Array.from(new Set(X)).map((Z)=>{if(typeof Z==="string"&&kO.test(Z))return`"${Z}"`;else return`${Z}`}).join(",");return this.url.searchParams.append(D,`not.in.(${Y})`),this}contains(D,X){if(typeof X==="string")this.url.searchParams.append(D,`cs.${X}`);else if(Array.isArray(X))this.url.searchParams.append(D,`cs.{${X.join(",")}}`);else this.url.searchParams.append(D,`cs.${JSON.stringify(X)}`);return this}containedBy(D,X){if(typeof X==="string")this.url.searchParams.append(D,`cd.${X}`);else if(Array.isArray(X))this.url.searchParams.append(D,`cd.{${X.join(",")}}`);else this.url.searchParams.append(D,`cd.${JSON.stringify(X)}`);return this}rangeGt(D,X){return this.url.searchParams.append(D,`sr.${X}`),this}rangeGte(D,X){return this.url.searchParams.append(D,`nxl.${X}`),this}rangeLt(D,X){return this.url.searchParams.append(D,`sl.${X}`),this}rangeLte(D,X){return this.url.searchParams.append(D,`nxr.${X}`),this}rangeAdjacent(D,X){return this.url.searchParams.append(D,`adj.${X}`),this}overlaps(D,X){if(typeof X==="string")this.url.searchParams.append(D,`ov.${X}`);else this.url.searchParams.append(D,`ov.{${X.join(",")}}`);return this}textSearch(D,X,{config:Y,type:Z}={}){let J="";if(Z==="plain")J="pl";else if(Z==="phrase")J="ph";else if(Z==="websearch")J="w";let Q=Y===void 0?"":`(${Y})`;return this.url.searchParams.append(D,`${J}fts${Q}.${X}`),this}match(D){return Object.entries(D).forEach(([X,Y])=>{this.url.searchParams.append(X,`eq.${Y}`)}),this}not(D,X,Y){return this.url.searchParams.append(D,`not.${X}.${Y}`),this}or(D,{foreignTable:X,referencedTable:Y=X}={}){let Z=Y?`${Y}.or`:"or";return this.url.searchParams.append(Z,`(${D})`),this}filter(D,X,Y){return this.url.searchParams.append(D,`${X}.${Y}`),this}},VQ=class{constructor(D,{headers:X={},schema:Y,fetch:Z}){this.url=D,this.headers=new Headers(X),this.schema=Y,this.fetch=Z}select(D,X){let{head:Y=!1,count:Z}=X!==null&&X!==void 0?X:{},J=Y?"HEAD":"GET",Q=!1,w=(D!==null&&D!==void 0?D:"*").split("").map((F)=>{if(/\s/.test(F)&&!Q)return"";if(F==='"')Q=!Q;return F}).join("");if(this.url.searchParams.set("select",w),Z)this.headers.append("Prefer",`count=${Z}`);return new j6({method:J,url:this.url,headers:this.headers,schema:this.schema,fetch:this.fetch})}insert(D,{count:X,defaultToNull:Y=!0}={}){var Z;let J="POST";if(X)this.headers.append("Prefer",`count=${X}`);if(!Y)this.headers.append("Prefer","missing=default");if(Array.isArray(D)){let Q=D.reduce((w,F)=>w.concat(Object.keys(F)),[]);if(Q.length>0){let w=[...new Set(Q)].map((F)=>`"${F}"`);this.url.searchParams.set("columns",w.join(","))}}return new j6({method:"POST",url:this.url,headers:this.headers,schema:this.schema,body:D,fetch:(Z=this.fetch)!==null&&Z!==void 0?Z:fetch})}upsert(D,{onConflict:X,ignoreDuplicates:Y=!1,count:Z,defaultToNull:J=!0}={}){var Q;let w="POST";if(this.headers.append("Prefer",`resolution=${Y?"ignore":"merge"}-duplicates`),X!==void 0)this.url.searchParams.set("on_conflict",X);if(Z)this.headers.append("Prefer",`count=${Z}`);if(!J)this.headers.append("Prefer","missing=default");if(Array.isArray(D)){let F=D.reduce((B,q)=>B.concat(Object.keys(q)),[]);if(F.length>0){let B=[...new Set(F)].map((q)=>`"${q}"`);this.url.searchParams.set("columns",B.join(","))}}return new j6({method:"POST",url:this.url,headers:this.headers,schema:this.schema,body:D,fetch:(Q=this.fetch)!==null&&Q!==void 0?Q:fetch})}update(D,{count:X}={}){var Y;let Z="PATCH";if(X)this.headers.append("Prefer",`count=${X}`);return new j6({method:"PATCH",url:this.url,headers:this.headers,schema:this.schema,body:D,fetch:(Y=this.fetch)!==null&&Y!==void 0?Y:fetch})}delete({count:D}={}){var X;let Y="DELETE";if(D)this.headers.append("Prefer",`count=${D}`);return new j6({method:"DELETE",url:this.url,headers:this.headers,schema:this.schema,fetch:(X=this.fetch)!==null&&X!==void 0?X:fetch})}},kX=class D{constructor(X,{headers:Y={},schema:Z,fetch:J}={}){this.url=X,this.headers=new Headers(Y),this.schemaName=Z,this.fetch=J}from(X){if(!X||typeof X!=="string"||X.trim()==="")throw Error("Invalid relation name: relation must be a non-empty string.");return new VQ(new URL(`${this.url}/${X}`),{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch})}schema(X){return new D(this.url,{headers:this.headers,schema:X,fetch:this.fetch})}rpc(X,Y={},{head:Z=!1,get:J=!1,count:Q}={}){var w;let F,B=new URL(`${this.url}/rpc/${X}`),q;if(Z||J)F=Z?"HEAD":"GET",Object.entries(Y).filter(([G,W])=>W!==void 0).map(([G,W])=>[G,Array.isArray(W)?`{${W.join(",")}}`:`${W}`]).forEach(([G,W])=>{B.searchParams.append(G,W)});else F="POST",q=Y;let $=new Headers(this.headers);if(Q)$.set("Prefer",`count=${Q}`);return new j6({method:F,url:B,headers:$,schema:this.schemaName,body:q,fetch:(w=this.fetch)!==null&&w!==void 0?w:fetch})}},p_={PostgrestClient:kX,PostgrestQueryBuilder:VQ,PostgrestFilterBuilder:j6,PostgrestTransformBuilder:LQ,PostgrestBuilder:MQ,PostgrestError:$4};var wH=N0(fQ(),1);var MW={};e7(MW,{validateVectorDimension:()=>bv,resolveResponse:()=>_v,resolveFetch:()=>nX,normalizeToFloat32:()=>vv,isStorageVectorsError:()=>E1,isStorageError:()=>FD,isPlainObject:()=>$W,VectorIndexScope:()=>zW,VectorIndexApi:()=>GW,VectorDataApi:()=>OW,VectorBucketScope:()=>KW,VectorBucketApi:()=>WW,StorageVectorsUnknownError:()=>qW,StorageVectorsErrorCode:()=>hv,StorageVectorsError:()=>bQ,StorageVectorsClient:()=>HW,StorageVectorsApiError:()=>cX,StorageUnknownError:()=>lX,StorageError:()=>V4,StorageClient:()=>gQ,StorageApiError:()=>JW,StorageAnalyticsClient:()=>BW});var z4=class extends Error{constructor(D,X){super(D);this.name="IcebergError",this.status=X.status,this.icebergType=X.icebergType,this.icebergCode=X.icebergCode,this.details=X.details,this.isCommitStateUnknown=X.icebergType==="CommitStateUnknownException"||[500,502,504].includes(X.status)&&X.icebergType?.includes("CommitState")===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function Mv(D,X,Y){let Z=new URL(X,D);if(Y){for(let[J,Q]of Object.entries(Y))if(Q!==void 0)Z.searchParams.set(J,Q)}return Z.toString()}async function Lv(D){if(!D||D.type==="none")return{};if(D.type==="bearer")return{Authorization:`Bearer ${D.token}`};if(D.type==="header")return{[D.name]:D.value};if(D.type==="custom")return await D.getHeaders();return{}}function Vv(D){let X=D.fetchImpl??globalThis.fetch;return{async request({method:Y,path:Z,query:J,body:Q,headers:w}){let F=Mv(D.baseUrl,Z,J),B=await Lv(D.auth),q=await X(F,{method:Y,headers:{...Q?{"Content-Type":"application/json"}:{},...B,...w},body:Q?JSON.stringify(Q):void 0}),$=await q.text(),G=(q.headers.get("content-type")||"").includes("application/json"),W=G&&$?JSON.parse($):$;if(!q.ok){let O=G?W:void 0,H=O?.error;throw new z4(H?.message??`Request failed with status ${q.status}`,{status:q.status,icebergType:H?.type,icebergCode:H?.code,details:O})}return{status:q.status,headers:q.headers,data:W}}}}function dX(D){return D.join("\x1F")}var Uv=class{constructor(D,X=""){this.client=D,this.prefix=X}async listNamespaces(D){let X=D?{parent:dX(D.namespace)}:void 0;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces`,query:X})).data.namespaces.map((Z)=>({namespace:Z}))}async createNamespace(D,X){let Y={namespace:D.namespace,properties:X?.properties};return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces`,body:Y})).data}async dropNamespace(D){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${dX(D.namespace)}`})}async loadNamespaceMetadata(D){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${dX(D.namespace)}`})).data.properties}}async namespaceExists(D){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${dX(D.namespace)}`}),!0}catch(X){if(X instanceof z4&&X.status===404)return!1;throw X}}async createNamespaceIfNotExists(D,X){try{return await this.createNamespace(D,X)}catch(Y){if(Y instanceof z4&&Y.status===409)return;throw Y}}};function T5(D){return D.join("\x1F")}var Nv=class{constructor(D,X="",Y){this.client=D,this.prefix=X,this.accessDelegation=Y}async listTables(D){return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables`})).data.identifiers}async createTable(D,X){let Y={};if(this.accessDelegation)Y["X-Iceberg-Access-Delegation"]=this.accessDelegation;return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables`,body:X,headers:Y})).data.metadata}async updateTable(D,X){let Y=await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables/${D.name}`,body:X});return{"metadata-location":Y.data["metadata-location"],metadata:Y.data.metadata}}async dropTable(D,X){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables/${D.name}`,query:{purgeRequested:String(X?.purge??!1)}})}async loadTable(D){let X={};if(this.accessDelegation)X["X-Iceberg-Access-Delegation"]=this.accessDelegation;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables/${D.name}`,headers:X})).data.metadata}async tableExists(D){let X={};if(this.accessDelegation)X["X-Iceberg-Access-Delegation"]=this.accessDelegation;try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${T5(D.namespace)}/tables/${D.name}`,headers:X}),!0}catch(Y){if(Y instanceof z4&&Y.status===404)return!1;throw Y}}async createTableIfNotExists(D,X){try{return await this.createTable(D,X)}catch(Y){if(Y instanceof z4&&Y.status===409)return await this.loadTable({namespace:D.namespace,name:X.name});throw Y}}},DW=class{constructor(D){let X="v1";if(D.catalogName)X+=`/${D.catalogName}`;let Y=D.baseUrl.endsWith("/")?D.baseUrl:`${D.baseUrl}/`;this.client=Vv({baseUrl:Y,auth:D.auth,fetchImpl:D.fetch}),this.accessDelegation=D.accessDelegation?.join(","),this.namespaceOps=new Uv(this.client,X),this.tableOps=new Nv(this.client,X,this.accessDelegation)}async listNamespaces(D){return this.namespaceOps.listNamespaces(D)}async createNamespace(D,X){return this.namespaceOps.createNamespace(D,X)}async dropNamespace(D){await this.namespaceOps.dropNamespace(D)}async loadNamespaceMetadata(D){return this.namespaceOps.loadNamespaceMetadata(D)}async listTables(D){return this.tableOps.listTables(D)}async createTable(D,X){return this.tableOps.createTable(D,X)}async updateTable(D,X){return this.tableOps.updateTable(D,X)}async dropTable(D,X){await this.tableOps.dropTable(D,X)}async loadTable(D){return this.tableOps.loadTable(D)}async namespaceExists(D){return this.namespaceOps.namespaceExists(D)}async tableExists(D){return this.tableOps.tableExists(D)}async createNamespaceIfNotExists(D,X){return this.namespaceOps.createNamespaceIfNotExists(D,X)}async createTableIfNotExists(D,X){return this.tableOps.createTableIfNotExists(D,X)}};var V4=class extends Error{constructor(D){super(D);this.__isStorageError=!0,this.name="StorageError"}};function FD(D){return typeof D==="object"&&D!==null&&"__isStorageError"in D}var JW=class extends V4{constructor(D,X,Y){super(D);this.name="StorageApiError",this.status=X,this.statusCode=Y}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},lX=class extends V4{constructor(D,X){super(D);this.name="StorageUnknownError",this.originalError=X}},hQ=(D)=>{if(D)return(...X)=>D(...X);return(...X)=>fetch(...X)},Rv=()=>{return Response},kQ=(D)=>{if(Array.isArray(D))return D.map((Y)=>kQ(Y));else if(typeof D==="function"||D!==Object(D))return D;let X={};return Object.entries(D).forEach(([Y,Z])=>{let J=Y.replace(/([-_][a-z])/gi,(Q)=>Q.toUpperCase().replace(/[-_]/g,""));X[J]=kQ(Z)}),X},Av=(D)=>{if(typeof D!=="object"||D===null)return!1;let X=Object.getPrototypeOf(D);return(X===null||X===Object.prototype||Object.getPrototypeOf(X)===null)&&!(Symbol.toStringTag in D)&&!(Symbol.iterator in D)},Ev=(D)=>{if(!D||typeof D!=="string")return!1;if(D.length===0||D.length>100)return!1;if(D.trim()!==D)return!1;if(D.includes("/")||D.includes("\\"))return!1;return/^[\w!.\*'() &$@=;:+,?-]+$/.test(D)};function M4(D){return M4=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(X){return typeof X}:function(X){return X&&typeof Symbol=="function"&&X.constructor===Symbol&&X!==Symbol.prototype?"symbol":typeof X},M4(D)}function Cv(D,X){if(M4(D)!="object"||!D)return D;var Y=D[Symbol.toPrimitive];if(Y!==void 0){var Z=Y.call(D,X||"default");if(M4(Z)!="object")return Z;throw TypeError("@@toPrimitive must return a primitive value.")}return(X==="string"?String:Number)(D)}function jv(D){var X=Cv(D,"string");return M4(X)=="symbol"?X:X+""}function Tv(D,X,Y){return(X=jv(X))in D?Object.defineProperty(D,X,{value:Y,enumerable:!0,configurable:!0,writable:!0}):D[X]=Y,D}function XW(D,X){var Y=Object.keys(D);if(Object.getOwnPropertySymbols){var Z=Object.getOwnPropertySymbols(D);X&&(Z=Z.filter(function(J){return Object.getOwnPropertyDescriptor(D,J).enumerable})),Y.push.apply(Y,Z)}return Y}function G0(D){for(var X=1;X<arguments.length;X++){var Y=arguments[X]!=null?arguments[X]:{};X%2?XW(Object(Y),!0).forEach(function(Z){Tv(D,Z,Y[Z])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(Y)):XW(Object(Y)).forEach(function(Z){Object.defineProperty(D,Z,Object.getOwnPropertyDescriptor(Y,Z))})}return D}var yQ=(D)=>{var X;return D.msg||D.message||D.error_description||(typeof D.error==="string"?D.error:(X=D.error)===null||X===void 0?void 0:X.message)||JSON.stringify(D)},Iv=async(D,X,Y)=>{if(D instanceof await Rv()&&!(Y===null||Y===void 0?void 0:Y.noResolveJson))D.json().then((Z)=>{let J=D.status||500,Q=(Z===null||Z===void 0?void 0:Z.statusCode)||J+"";X(new JW(yQ(Z),J,Q))}).catch((Z)=>{X(new lX(yQ(Z),Z))});else X(new lX(yQ(D),D))},Pv=(D,X,Y,Z)=>{let J={method:D,headers:(X===null||X===void 0?void 0:X.headers)||{}};if(D==="GET"||!Z)return J;if(Av(Z))J.headers=G0({"Content-Type":"application/json"},X===null||X===void 0?void 0:X.headers),J.body=JSON.stringify(Z);else J.body=Z;if(X===null||X===void 0?void 0:X.duplex)J.duplex=X.duplex;return G0(G0({},J),Y)};async function U4(D,X,Y,Z,J,Q){return new Promise((w,F)=>{D(Y,Pv(X,Z,J,Q)).then((B)=>{if(!B.ok)throw B;if(Z===null||Z===void 0?void 0:Z.noResolveJson)return B;return B.json()}).then((B)=>w(B)).catch((B)=>Iv(B,F,Z))})}async function L4(D,X,Y,Z){return U4(D,"GET",X,Y,Z)}async function F8(D,X,Y,Z,J){return U4(D,"POST",X,Z,J,Y)}async function uQ(D,X,Y,Z,J){return U4(D,"PUT",X,Z,J,Y)}async function Sv(D,X,Y,Z){return U4(D,"HEAD",X,G0(G0({},Y),{},{noResolveJson:!0}),Z)}async function _Q(D,X,Y,Z,J){return U4(D,"DELETE",X,Z,J,Y)}var xv=class{constructor(D,X){this.downloadFn=D,this.shouldThrowOnError=X}then(D,X){return this.execute().then(D,X)}async execute(){var D=this;try{return{data:(await D.downloadFn()).body,error:null}}catch(X){if(D.shouldThrowOnError)throw X;if(FD(X))return{data:null,error:X};throw X}}},QW;QW=Symbol.toStringTag;var fv=class{constructor(D,X){this.downloadFn=D,this.shouldThrowOnError=X,this[QW]="BlobDownloadBuilder",this.promise=null}asStream(){return new xv(this.downloadFn,this.shouldThrowOnError)}then(D,X){return this.getPromise().then(D,X)}catch(D){return this.getPromise().catch(D)}finally(D){return this.getPromise().finally(D)}getPromise(){if(!this.promise)this.promise=this.execute();return this.promise}async execute(){var D=this;try{return{data:await(await D.downloadFn()).blob(),error:null}}catch(X){if(D.shouldThrowOnError)throw X;if(FD(X))return{data:null,error:X};throw X}}},yv={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},YW={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1},kv=class{constructor(D,X={},Y,Z){this.shouldThrowOnError=!1,this.url=D,this.headers=X,this.bucketId=Y,this.fetch=hQ(Z)}throwOnError(){return this.shouldThrowOnError=!0,this}async uploadOrUpdate(D,X,Y,Z){var J=this;try{let Q,w=G0(G0({},YW),Z),F=G0(G0({},J.headers),D==="POST"&&{"x-upsert":String(w.upsert)}),B=w.metadata;if(typeof Blob<"u"&&Y instanceof Blob){if(Q=new FormData,Q.append("cacheControl",w.cacheControl),B)Q.append("metadata",J.encodeMetadata(B));Q.append("",Y)}else if(typeof FormData<"u"&&Y instanceof FormData){if(Q=Y,!Q.has("cacheControl"))Q.append("cacheControl",w.cacheControl);if(B&&!Q.has("metadata"))Q.append("metadata",J.encodeMetadata(B))}else{if(Q=Y,F["cache-control"]=`max-age=${w.cacheControl}`,F["content-type"]=w.contentType,B)F["x-metadata"]=J.toBase64(J.encodeMetadata(B));if((typeof ReadableStream<"u"&&Q instanceof ReadableStream||Q&&typeof Q==="object"&&("pipe"in Q)&&typeof Q.pipe==="function")&&!w.duplex)w.duplex="half"}if(Z===null||Z===void 0?void 0:Z.headers)F=G0(G0({},F),Z.headers);let q=J._removeEmptyFolders(X),$=J._getFinalPath(q),G=await(D=="PUT"?uQ:F8)(J.fetch,`${J.url}/object/${$}`,Q,G0({headers:F},(w===null||w===void 0?void 0:w.duplex)?{duplex:w.duplex}:{}));return{data:{path:q,id:G.Id,fullPath:G.Key},error:null}}catch(Q){if(J.shouldThrowOnError)throw Q;if(FD(Q))return{data:null,error:Q};throw Q}}async upload(D,X,Y){return this.uploadOrUpdate("POST",D,X,Y)}async uploadToSignedUrl(D,X,Y,Z){var J=this;let Q=J._removeEmptyFolders(D),w=J._getFinalPath(Q),F=new URL(J.url+`/object/upload/sign/${w}`);F.searchParams.set("token",X);try{let B,q=G0({upsert:YW.upsert},Z),$=G0(G0({},J.headers),{"x-upsert":String(q.upsert)});if(typeof Blob<"u"&&Y instanceof Blob)B=new FormData,B.append("cacheControl",q.cacheControl),B.append("",Y);else if(typeof FormData<"u"&&Y instanceof FormData)B=Y,B.append("cacheControl",q.cacheControl);else B=Y,$["cache-control"]=`max-age=${q.cacheControl}`,$["content-type"]=q.contentType;return{data:{path:Q,fullPath:(await uQ(J.fetch,F.toString(),B,{headers:$})).Key},error:null}}catch(B){if(J.shouldThrowOnError)throw B;if(FD(B))return{data:null,error:B};throw B}}async createSignedUploadUrl(D,X){var Y=this;try{let Z=Y._getFinalPath(D),J=G0({},Y.headers);if(X===null||X===void 0?void 0:X.upsert)J["x-upsert"]="true";let Q=await F8(Y.fetch,`${Y.url}/object/upload/sign/${Z}`,{},{headers:J}),w=new URL(Y.url+Q.url),F=w.searchParams.get("token");if(!F)throw new V4("No token returned by API");return{data:{signedUrl:w.toString(),path:D,token:F},error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(FD(Z))return{data:null,error:Z};throw Z}}async update(D,X,Y){return this.uploadOrUpdate("PUT",D,X,Y)}async move(D,X,Y){var Z=this;try{return{data:await F8(Z.fetch,`${Z.url}/object/move`,{bucketId:Z.bucketId,sourceKey:D,destinationKey:X,destinationBucket:Y===null||Y===void 0?void 0:Y.destinationBucket},{headers:Z.headers}),error:null}}catch(J){if(Z.shouldThrowOnError)throw J;if(FD(J))return{data:null,error:J};throw J}}async copy(D,X,Y){var Z=this;try{return{data:{path:(await F8(Z.fetch,`${Z.url}/object/copy`,{bucketId:Z.bucketId,sourceKey:D,destinationKey:X,destinationBucket:Y===null||Y===void 0?void 0:Y.destinationBucket},{headers:Z.headers})).Key},error:null}}catch(J){if(Z.shouldThrowOnError)throw J;if(FD(J))return{data:null,error:J};throw J}}async createSignedUrl(D,X,Y){var Z=this;try{let J=Z._getFinalPath(D),Q=await F8(Z.fetch,`${Z.url}/object/sign/${J}`,G0({expiresIn:X},(Y===null||Y===void 0?void 0:Y.transform)?{transform:Y.transform}:{}),{headers:Z.headers}),w=(Y===null||Y===void 0?void 0:Y.download)?`&download=${Y.download===!0?"":Y.download}`:"";return Q={signedUrl:encodeURI(`${Z.url}${Q.signedURL}${w}`)},{data:Q,error:null}}catch(J){if(Z.shouldThrowOnError)throw J;if(FD(J))return{data:null,error:J};throw J}}async createSignedUrls(D,X,Y){var Z=this;try{let J=await F8(Z.fetch,`${Z.url}/object/sign/${Z.bucketId}`,{expiresIn:X,paths:D},{headers:Z.headers}),Q=(Y===null||Y===void 0?void 0:Y.download)?`&download=${Y.download===!0?"":Y.download}`:"";return{data:J.map((w)=>G0(G0({},w),{},{signedUrl:w.signedURL?encodeURI(`${Z.url}${w.signedURL}${Q}`):null})),error:null}}catch(J){if(Z.shouldThrowOnError)throw J;if(FD(J))return{data:null,error:J};throw J}}download(D,X){let Y=typeof(X===null||X===void 0?void 0:X.transform)<"u"?"render/image/authenticated":"object",Z=this.transformOptsToQueryString((X===null||X===void 0?void 0:X.transform)||{}),J=Z?`?${Z}`:"",Q=this._getFinalPath(D);return new fv(()=>L4(this.fetch,`${this.url}/${Y}/${Q}${J}`,{headers:this.headers,noResolveJson:!0}),this.shouldThrowOnError)}async info(D){var X=this;let Y=X._getFinalPath(D);try{return{data:kQ(await L4(X.fetch,`${X.url}/object/info/${Y}`,{headers:X.headers})),error:null}}catch(Z){if(X.shouldThrowOnError)throw Z;if(FD(Z))return{data:null,error:Z};throw Z}}async exists(D){var X=this;let Y=X._getFinalPath(D);try{return await Sv(X.fetch,`${X.url}/object/${Y}`,{headers:X.headers}),{data:!0,error:null}}catch(Z){if(X.shouldThrowOnError)throw Z;if(FD(Z)&&Z instanceof lX){let J=Z.originalError;if([400,404].includes(J===null||J===void 0?void 0:J.status))return{data:!1,error:Z}}throw Z}}getPublicUrl(D,X){let Y=this._getFinalPath(D),Z=[],J=(X===null||X===void 0?void 0:X.download)?`download=${X.download===!0?"":X.download}`:"";if(J!=="")Z.push(J);let Q=typeof(X===null||X===void 0?void 0:X.transform)<"u"?"render/image":"object",w=this.transformOptsToQueryString((X===null||X===void 0?void 0:X.transform)||{});if(w!=="")Z.push(w);let F=Z.join("&");if(F!=="")F=`?${F}`;return{data:{publicUrl:encodeURI(`${this.url}/${Q}/public/${Y}${F}`)}}}async remove(D){var X=this;try{return{data:await _Q(X.fetch,`${X.url}/object/${X.bucketId}`,{prefixes:D},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async list(D,X,Y){var Z=this;try{let J=G0(G0(G0({},yv),X),{},{prefix:D||""});return{data:await F8(Z.fetch,`${Z.url}/object/list/${Z.bucketId}`,J,{headers:Z.headers},Y),error:null}}catch(J){if(Z.shouldThrowOnError)throw J;if(FD(J))return{data:null,error:J};throw J}}async listV2(D,X){var Y=this;try{let Z=G0({},D);return{data:await F8(Y.fetch,`${Y.url}/object/list-v2/${Y.bucketId}`,Z,{headers:Y.headers},X),error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(FD(Z))return{data:null,error:Z};throw Z}}encodeMetadata(D){return JSON.stringify(D)}toBase64(D){if(typeof Buffer<"u")return Buffer.from(D).toString("base64");return btoa(D)}_getFinalPath(D){return`${this.bucketId}/${D.replace(/^\/+/,"")}`}_removeEmptyFolders(D){return D.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}transformOptsToQueryString(D){let X=[];if(D.width)X.push(`width=${D.width}`);if(D.height)X.push(`height=${D.height}`);if(D.resize)X.push(`resize=${D.resize}`);if(D.format)X.push(`format=${D.format}`);if(D.quality)X.push(`quality=${D.quality}`);return X.join("&")}},wW="2.89.0",FW={"X-Client-Info":`storage-js/${wW}`},uv=class{constructor(D,X={},Y,Z){this.shouldThrowOnError=!1;let J=new URL(D);if(Z===null||Z===void 0?void 0:Z.useNewHostname){if(/supabase\.(co|in|red)$/.test(J.hostname)&&!J.hostname.includes("storage.supabase."))J.hostname=J.hostname.replace("supabase.","storage.supabase.")}this.url=J.href.replace(/\/$/,""),this.headers=G0(G0({},FW),X),this.fetch=hQ(Y)}throwOnError(){return this.shouldThrowOnError=!0,this}async listBuckets(D){var X=this;try{let Y=X.listBucketOptionsToQueryString(D);return{data:await L4(X.fetch,`${X.url}/bucket${Y}`,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async getBucket(D){var X=this;try{return{data:await L4(X.fetch,`${X.url}/bucket/${D}`,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async createBucket(D,X={public:!1}){var Y=this;try{return{data:await F8(Y.fetch,`${Y.url}/bucket`,{id:D,name:D,type:X.type,public:X.public,file_size_limit:X.fileSizeLimit,allowed_mime_types:X.allowedMimeTypes},{headers:Y.headers}),error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(FD(Z))return{data:null,error:Z};throw Z}}async updateBucket(D,X){var Y=this;try{return{data:await uQ(Y.fetch,`${Y.url}/bucket/${D}`,{id:D,name:D,public:X.public,file_size_limit:X.fileSizeLimit,allowed_mime_types:X.allowedMimeTypes},{headers:Y.headers}),error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(FD(Z))return{data:null,error:Z};throw Z}}async emptyBucket(D){var X=this;try{return{data:await F8(X.fetch,`${X.url}/bucket/${D}/empty`,{},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async deleteBucket(D){var X=this;try{return{data:await _Q(X.fetch,`${X.url}/bucket/${D}`,{},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}listBucketOptionsToQueryString(D){let X={};if(D){if("limit"in D)X.limit=String(D.limit);if("offset"in D)X.offset=String(D.offset);if(D.search)X.search=D.search;if(D.sortColumn)X.sortColumn=D.sortColumn;if(D.sortOrder)X.sortOrder=D.sortOrder}return Object.keys(X).length>0?"?"+new URLSearchParams(X).toString():""}},BW=class{constructor(D,X={},Y){this.shouldThrowOnError=!1,this.url=D.replace(/\/$/,""),this.headers=G0(G0({},FW),X),this.fetch=hQ(Y)}throwOnError(){return this.shouldThrowOnError=!0,this}async createBucket(D){var X=this;try{return{data:await F8(X.fetch,`${X.url}/bucket`,{name:D},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async listBuckets(D){var X=this;try{let Y=new URLSearchParams;if((D===null||D===void 0?void 0:D.limit)!==void 0)Y.set("limit",D.limit.toString());if((D===null||D===void 0?void 0:D.offset)!==void 0)Y.set("offset",D.offset.toString());if(D===null||D===void 0?void 0:D.sortColumn)Y.set("sortColumn",D.sortColumn);if(D===null||D===void 0?void 0:D.sortOrder)Y.set("sortOrder",D.sortOrder);if(D===null||D===void 0?void 0:D.search)Y.set("search",D.search);let Z=Y.toString(),J=Z?`${X.url}/bucket?${Z}`:`${X.url}/bucket`;return{data:await L4(X.fetch,J,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}async deleteBucket(D){var X=this;try{return{data:await _Q(X.fetch,`${X.url}/bucket/${D}`,{},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(FD(Y))return{data:null,error:Y};throw Y}}from(D){var X=this;if(!Ev(D))throw new V4("Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.");let Y=new DW({baseUrl:this.url,catalogName:D,auth:{type:"custom",getHeaders:async()=>X.headers},fetch:this.fetch}),Z=this.shouldThrowOnError;return new Proxy(Y,{get(J,Q){let w=J[Q];if(typeof w!=="function")return w;return async(...F)=>{try{return{data:await w.apply(J,F),error:null}}catch(B){if(Z)throw B;return{data:null,error:B}}}}})}},vQ={"X-Client-Info":`storage-js/${wW}`,"Content-Type":"application/json"},bQ=class extends Error{constructor(D){super(D);this.__isStorageVectorsError=!0,this.name="StorageVectorsError"}};function E1(D){return typeof D==="object"&&D!==null&&"__isStorageVectorsError"in D}var cX=class extends bQ{constructor(D,X,Y){super(D);this.name="StorageVectorsApiError",this.status=X,this.statusCode=Y}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},qW=class extends bQ{constructor(D,X){super(D);this.name="StorageVectorsUnknownError",this.originalError=X}},hv=function(D){return D.InternalError="InternalError",D.S3VectorConflictException="S3VectorConflictException",D.S3VectorNotFoundException="S3VectorNotFoundException",D.S3VectorBucketNotEmpty="S3VectorBucketNotEmpty",D.S3VectorMaxBucketsExceeded="S3VectorMaxBucketsExceeded",D.S3VectorMaxIndexesExceeded="S3VectorMaxIndexesExceeded",D}({}),nX=(D)=>{if(D)return(...X)=>D(...X);return(...X)=>fetch(...X)},_v=()=>{return Response},$W=(D)=>{if(typeof D!=="object"||D===null)return!1;let X=Object.getPrototypeOf(D);return(X===null||X===Object.prototype||Object.getPrototypeOf(X)===null)&&!(Symbol.toStringTag in D)&&!(Symbol.iterator in D)},vv=(D)=>{return Array.from(new Float32Array(D))},bv=(D,X)=>{if(X!==void 0&&D.float32.length!==X)throw Error(`Vector dimension mismatch: expected ${X}, got ${D.float32.length}`)},ZW=(D)=>D.msg||D.message||D.error_description||D.error||JSON.stringify(D),gv=async(D,X,Y)=>{if(D&&typeof D==="object"&&"status"in D&&"ok"in D&&typeof D.status==="number"&&!(Y===null||Y===void 0?void 0:Y.noResolveJson)){let Z=D.status||500,J=D;if(typeof J.json==="function")J.json().then((Q)=>{let w=(Q===null||Q===void 0?void 0:Q.statusCode)||(Q===null||Q===void 0?void 0:Q.code)||Z+"";X(new cX(ZW(Q),Z,w))}).catch(()=>{let Q=Z+"";X(new cX(J.statusText||`HTTP ${Z} error`,Z,Q))});else{let Q=Z+"";X(new cX(J.statusText||`HTTP ${Z} error`,Z,Q))}}else X(new qW(ZW(D),D))},mv=(D,X,Y,Z)=>{let J={method:D,headers:(X===null||X===void 0?void 0:X.headers)||{}};if(D==="GET"||!Z)return J;if($W(Z))J.headers=G0({"Content-Type":"application/json"},X===null||X===void 0?void 0:X.headers),J.body=JSON.stringify(Z);else J.body=Z;return G0(G0({},J),Y)};async function dv(D,X,Y,Z,J,Q){return new Promise((w,F)=>{D(Y,mv(X,Z,J,Q)).then((B)=>{if(!B.ok)throw B;if(Z===null||Z===void 0?void 0:Z.noResolveJson)return B;let q=B.headers.get("content-type");if(!q||!q.includes("application/json"))return{};return B.json()}).then((B)=>w(B)).catch((B)=>gv(B,F,Z))})}async function u1(D,X,Y,Z,J){return dv(D,"POST",X,Z,J,Y)}var GW=class{constructor(D,X={},Y){this.shouldThrowOnError=!1,this.url=D.replace(/\/$/,""),this.headers=G0(G0({},vQ),X),this.fetch=nX(Y)}throwOnError(){return this.shouldThrowOnError=!0,this}async createIndex(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/CreateIndex`,D,{headers:X.headers})||{},error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async getIndex(D,X){var Y=this;try{return{data:await u1(Y.fetch,`${Y.url}/GetIndex`,{vectorBucketName:D,indexName:X},{headers:Y.headers}),error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(E1(Z))return{data:null,error:Z};throw Z}}async listIndexes(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/ListIndexes`,D,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async deleteIndex(D,X){var Y=this;try{return{data:await u1(Y.fetch,`${Y.url}/DeleteIndex`,{vectorBucketName:D,indexName:X},{headers:Y.headers})||{},error:null}}catch(Z){if(Y.shouldThrowOnError)throw Z;if(E1(Z))return{data:null,error:Z};throw Z}}},OW=class{constructor(D,X={},Y){this.shouldThrowOnError=!1,this.url=D.replace(/\/$/,""),this.headers=G0(G0({},vQ),X),this.fetch=nX(Y)}throwOnError(){return this.shouldThrowOnError=!0,this}async putVectors(D){var X=this;try{if(D.vectors.length<1||D.vectors.length>500)throw Error("Vector batch size must be between 1 and 500 items");return{data:await u1(X.fetch,`${X.url}/PutVectors`,D,{headers:X.headers})||{},error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async getVectors(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/GetVectors`,D,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async listVectors(D){var X=this;try{if(D.segmentCount!==void 0){if(D.segmentCount<1||D.segmentCount>16)throw Error("segmentCount must be between 1 and 16");if(D.segmentIndex!==void 0){if(D.segmentIndex<0||D.segmentIndex>=D.segmentCount)throw Error(`segmentIndex must be between 0 and ${D.segmentCount-1}`)}}return{data:await u1(X.fetch,`${X.url}/ListVectors`,D,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async queryVectors(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/QueryVectors`,D,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async deleteVectors(D){var X=this;try{if(D.keys.length<1||D.keys.length>500)throw Error("Keys batch size must be between 1 and 500 items");return{data:await u1(X.fetch,`${X.url}/DeleteVectors`,D,{headers:X.headers})||{},error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}},WW=class{constructor(D,X={},Y){this.shouldThrowOnError=!1,this.url=D.replace(/\/$/,""),this.headers=G0(G0({},vQ),X),this.fetch=nX(Y)}throwOnError(){return this.shouldThrowOnError=!0,this}async createBucket(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/CreateVectorBucket`,{vectorBucketName:D},{headers:X.headers})||{},error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async getBucket(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/GetVectorBucket`,{vectorBucketName:D},{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async listBuckets(D={}){var X=this;try{return{data:await u1(X.fetch,`${X.url}/ListVectorBuckets`,D,{headers:X.headers}),error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}async deleteBucket(D){var X=this;try{return{data:await u1(X.fetch,`${X.url}/DeleteVectorBucket`,{vectorBucketName:D},{headers:X.headers})||{},error:null}}catch(Y){if(X.shouldThrowOnError)throw Y;if(E1(Y))return{data:null,error:Y};throw Y}}},HW=class extends WW{constructor(D,X={}){super(D,X.headers||{},X.fetch)}from(D){return new KW(this.url,this.headers,D,this.fetch)}async createBucket(D){var X=()=>super.createBucket,Y=this;return X().call(Y,D)}async getBucket(D){var X=()=>super.getBucket,Y=this;return X().call(Y,D)}async listBuckets(D={}){var X=()=>super.listBuckets,Y=this;return X().call(Y,D)}async deleteBucket(D){var X=()=>super.deleteBucket,Y=this;return X().call(Y,D)}},KW=class extends GW{constructor(D,X,Y,Z){super(D,X,Z);this.vectorBucketName=Y}async createIndex(D){var X=()=>super.createIndex,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName}))}async listIndexes(D={}){var X=()=>super.listIndexes,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName}))}async getIndex(D){var X=()=>super.getIndex,Y=this;return X().call(Y,Y.vectorBucketName,D)}async deleteIndex(D){var X=()=>super.deleteIndex,Y=this;return X().call(Y,Y.vectorBucketName,D)}index(D){return new zW(this.url,this.headers,this.vectorBucketName,D,this.fetch)}},zW=class extends OW{constructor(D,X,Y,Z,J){super(D,X,J);this.vectorBucketName=Y,this.indexName=Z}async putVectors(D){var X=()=>super.putVectors,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName,indexName:Y.indexName}))}async getVectors(D){var X=()=>super.getVectors,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName,indexName:Y.indexName}))}async listVectors(D={}){var X=()=>super.listVectors,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName,indexName:Y.indexName}))}async queryVectors(D){var X=()=>super.queryVectors,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName,indexName:Y.indexName}))}async deleteVectors(D){var X=()=>super.deleteVectors,Y=this;return X().call(Y,G0(G0({},D),{},{vectorBucketName:Y.vectorBucketName,indexName:Y.indexName}))}},gQ=class extends uv{constructor(D,X={},Y,Z){super(D,X,Y,Z)}from(D){return new kv(this.url,this.headers,D,this.fetch)}get vectors(){return new HW(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new BW(this.url+"/iceberg",this.headers,this.fetch)}};var FH=N0(Bw(),1);J0(Z0,N0(fQ(),1),module.exports);J0(Z0,N0(Bw(),1),module.exports);var Mg="2.89.0",C4="";if(typeof Deno<"u")C4="deno";else if(typeof document<"u")C4="web";else if(typeof navigator<"u"&&navigator.product==="ReactNative")C4="react-native";else C4="node";var Lg={"X-Client-Info":`supabase-js-${C4}/${Mg}`},Vg={headers:Lg},Ug={schema:"public"},Ng={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},Rg={};function j4(D){return j4=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(X){return typeof X}:function(X){return X&&typeof Symbol=="function"&&X.constructor===Symbol&&X!==Symbol.prototype?"symbol":typeof X},j4(D)}function Ag(D,X){if(j4(D)!="object"||!D)return D;var Y=D[Symbol.toPrimitive];if(Y!==void 0){var Z=Y.call(D,X||"default");if(j4(Z)!="object")return Z;throw TypeError("@@toPrimitive must return a primitive value.")}return(X==="string"?String:Number)(D)}function Eg(D){var X=Ag(D,"string");return j4(X)=="symbol"?X:X+""}function Cg(D,X,Y){return(X=Eg(X))in D?Object.defineProperty(D,X,{value:Y,enumerable:!0,configurable:!0,writable:!0}):D[X]=Y,D}function QH(D,X){var Y=Object.keys(D);if(Object.getOwnPropertySymbols){var Z=Object.getOwnPropertySymbols(D);X&&(Z=Z.filter(function(J){return Object.getOwnPropertyDescriptor(D,J).enumerable})),Y.push.apply(Y,Z)}return Y}function UD(D){for(var X=1;X<arguments.length;X++){var Y=arguments[X]!=null?arguments[X]:{};X%2?QH(Object(Y),!0).forEach(function(Z){Cg(D,Z,Y[Z])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(Y)):QH(Object(Y)).forEach(function(Z){Object.defineProperty(D,Z,Object.getOwnPropertyDescriptor(Y,Z))})}return D}var jg=(D)=>{if(D)return(...X)=>D(...X);return(...X)=>fetch(...X)},Tg=()=>{return Headers},Ig=(D,X,Y)=>{let Z=jg(Y),J=Tg();return async(Q,w)=>{var F;let B=(F=await X())!==null&&F!==void 0?F:D,q=new J(w===null||w===void 0?void 0:w.headers);if(!q.has("apikey"))q.set("apikey",D);if(!q.has("Authorization"))q.set("Authorization",`Bearer ${B}`);return Z(Q,UD(UD({},w),{},{headers:q}))}};function Pg(D){return D.endsWith("/")?D:D+"/"}function Sg(D,X){var Y,Z;let{db:J,auth:Q,realtime:w,global:F}=D,{db:B,auth:q,realtime:$,global:G}=X,W={db:UD(UD({},B),J),auth:UD(UD({},q),Q),realtime:UD(UD({},$),w),storage:{},global:UD(UD(UD({},G),F),{},{headers:UD(UD({},(Y=G===null||G===void 0?void 0:G.headers)!==null&&Y!==void 0?Y:{}),(Z=F===null||F===void 0?void 0:F.headers)!==null&&Z!==void 0?Z:{})}),accessToken:async()=>""};if(D.accessToken)W.accessToken=D.accessToken;else delete W.accessToken;return W}function xg(D){let X=D===null||D===void 0?void 0:D.trim();if(!X)throw Error("supabaseUrl is required.");if(!X.match(/^https?:\/\//i))throw Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(Pg(X))}catch(Y){throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var fg=class extends FH.AuthClient{constructor(D){super(D)}},BH=class{constructor(D,X,Y){var Z,J;this.supabaseUrl=D,this.supabaseKey=X;let Q=xg(D);if(!X)throw Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",Q),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",Q),this.storageUrl=new URL("storage/v1",Q),this.functionsUrl=new URL("functions/v1",Q);let w=`sb-${Q.hostname.split(".")[0]}-auth-token`,F={db:Ug,realtime:Rg,auth:UD(UD({},Ng),{},{storageKey:w}),global:Vg},B=Sg(Y!==null&&Y!==void 0?Y:{},F);if(this.storageKey=(Z=B.auth.storageKey)!==null&&Z!==void 0?Z:"",this.headers=(J=B.global.headers)!==null&&J!==void 0?J:{},!B.accessToken){var q;this.auth=this._initSupabaseAuthClient((q=B.auth)!==null&&q!==void 0?q:{},this.headers,B.global.fetch)}else this.accessToken=B.accessToken,this.auth=new Proxy({},{get:($,G)=>{throw Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(G)} is not possible`)}});if(this.fetch=Ig(X,this._getAccessToken.bind(this),B.global.fetch),this.realtime=this._initRealtimeClient(UD({headers:this.headers,accessToken:this._getAccessToken.bind(this)},B.realtime)),this.accessToken)this.accessToken().then(($)=>this.realtime.setAuth($)).catch(($)=>console.warn("Failed to set initial Realtime auth token:",$));if(this.rest=new kX(new URL("rest/v1",Q).href,{headers:this.headers,schema:B.db.schema,fetch:this.fetch}),this.storage=new gQ(this.storageUrl.href,this.headers,this.fetch,Y===null||Y===void 0?void 0:Y.storage),!B.accessToken)this._listenForAuthEvents()}get functions(){return new eD.FunctionsClient(this.functionsUrl.href,{headers:this.headers,customFetch:this.fetch})}from(D){return this.rest.from(D)}schema(D){return this.rest.schema(D)}rpc(D,X={},Y={head:!1,get:!1,count:void 0}){return this.rest.rpc(D,X,Y)}channel(D,X={config:{}}){return this.realtime.channel(D,X)}getChannels(){return this.realtime.getChannels()}removeChannel(D){return this.realtime.removeChannel(D)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getAccessToken(){var D=this,X,Y;if(D.accessToken)return await D.accessToken();let{data:Z}=await D.auth.getSession();return(X=(Y=Z.session)===null||Y===void 0?void 0:Y.access_token)!==null&&X!==void 0?X:D.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:D,persistSession:X,detectSessionInUrl:Y,storage:Z,userStorage:J,storageKey:Q,flowType:w,lock:F,debug:B,throwOnError:q},$,G){let W={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new fg({url:this.authUrl.href,headers:UD(UD({},W),$),storageKey:Q,autoRefreshToken:D,persistSession:X,detectSessionInUrl:Y,storage:Z,userStorage:J,flowType:w,lock:F,debug:B,throwOnError:q,fetch:G,hasCustomAuthorizationHeader:Object.keys(this.headers).some((O)=>O.toLowerCase()==="authorization")})}_initRealtimeClient(D){return new wH.RealtimeClient(this.realtimeUrl.href,UD(UD({},D),{},{params:UD(UD({},{apikey:this.supabaseKey}),D===null||D===void 0?void 0:D.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((D,X)=>{this._handleTokenChanged(D,"CLIENT",X===null||X===void 0?void 0:X.access_token)})}_handleTokenChanged(D,X,Y){if((D==="TOKEN_REFRESHED"||D==="SIGNED_IN")&&this.changedAccessToken!==Y)this.changedAccessToken=Y,this.realtime.setAuth(Y);else if(D==="SIGNED_OUT"){if(this.realtime.setAuth(),X=="STORAGE")this.auth.signOut();this.changedAccessToken=void 0}}},qw=(D,X,Y)=>{return new BH(D,X,Y)};function yg(){if(typeof window<"u")return!1;if(typeof process>"u")return!1;let D=process.version;if(D===void 0||D===null)return!1;let X=D.match(/^v(\d+)\./);if(!X)return!1;return parseInt(X[1],10)<=18}if(yg())console.warn("⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");var S$=N0(Kw(),1),Iy=N0(zK(),1),$J=N0(qZ(),1);var o8={name:"@capgo/cli",version:"7.71.2",type:"module",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 && bun 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","@modelcontextprotocol/sdk":"^1.0.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",eslint:"^9.38.0","git-format-staged":"3.1.3",husky:"^9.1.7","is-wsl":"^3.1.0",micromatch:"^4.0.8",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3",zod:"^3.24.0"}};async function $Z(D){try{let Y=`https://registry.npmjs.org/${encodeURIComponent(D.toLowerCase())}`,Z=await fetch(Y,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});if(!Z.ok)return null;return(await Z.json())["dist-tags"]?.latest||null}catch{return null}}async function o0(){let D=await $Z("@capgo/cli")??"",X=D?.split(".")[0];if(D!==o8.version)K.warning(`\uD83D\uDEA8 You are using @capgo/cli@${o8.version} it's not the latest version.
315
+ Please use @capgo/cli@${D}" or @capgo/cli@${X} to keep up to date with the latest features and bug fixes.`)}async function AL(D,X,Y,Z,J,Q="✅"){await A0(Y,{channel:D,event:Z,icon:Q,user_id:X,...J?{tags:{"app-id":J}}:{},notify:!1})}var xF=require("node:buffer"),EL=require("node:crypto"),Ba=(()=>{let D=[];for(let X=0;X<256;X++){let Y=X;for(let Z=0;Z<8;Z++)Y=Y&1?3988292384^Y>>>1:Y>>>1;D[X]=Y}return D})();function qa(D){let X=4294967295;for(let Y=0;Y<D.length;Y++){let Z=D[Y];X=Ba[(X^Z)&255]^X>>>8}return X=X^4294967295,(X>>>0).toString(16).padStart(8,"0")}async function e8(D,X="sha256"){let Y=xF.Buffer.isBuffer(D)?D:xF.Buffer.from(D);if(X==="crc32")return qa(Y);let Z=EL.createHash(X);return Z.update(Y),Z.digest("hex")}var t3=N0(kf(),1);async function uf(){let D=await t3.loadConfig();return{config:D.app.extConfig,path:D.app.extConfigFilePath}}async function w$(D,X,Y=!1){let Z=await t3.loadConfig(),{extConfig:J}=Z.app;if(J){if(!J.plugins)J.plugins={extConfig:{},[D]:{}};if(!J.plugins[D])J.plugins[D]={};if(!Y)J.plugins[D]=X.config.plugins?.[D];else J=X.config;t3.writeConfig(J,Z.app.extConfigFilePath)}}async function u7(D,X=!1){await w$("CapacitorUpdater",D,X)}var h7={ORG_REQUIRES_EXPIRING_KEY:"org_requires_expiring_key",EXPIRATION_REQUIRED:"expiration_required",EXPIRATION_EXCEEDS_MAX:"expiration_exceeds_max"},r3={[h7.ORG_REQUIRES_EXPIRING_KEY]:`This organization requires API keys with expiration dates.
316
316
 
317
317
  Please generate a new API key with an expiration:
318
318
  1. Go to https://web.capgo.app/dashboard/apikeys
@@ -351,7 +351,7 @@ The organization "${D}" requires all members to have 2FA enabled.`);else K.error
351
351
  This organization requires all members to have 2FA enabled.`);throw K.error(`
352
352
  To regain access:`),K.error(" 1. Go to https://web.capgo.app/settings/account"),K.error(" 2. Enable Two-Factor Authentication on your account"),K.error(" 3. Try your command again"),K.error(`
353
353
  For more information, visit: https://capgo.app/docs/webapp/2fa-enforcement/
354
- `),Error("2FA required for this organization")}async function MJ(D,X){let{error:Y,data:Z}=await D.rpc("get_orgs_v7");if(Y)throw K.error("Cannot get the list of organizations - exiting"),K.error(`Error ${JSON.stringify(Y)}`),Error("Cannot get the list of organizations");let J=Z.filter((B)=>!!X.find((q)=>q===B.role));if(Z.length===0)throw K.error("Could not get organization please create an organization first"),Error("No organizations available");if(J.length===0)throw K.error(`Could not find organization with roles: ${X.join(" or ")} please create an organization or ask the admin to add you to the organization with this roles`),Error("Could not find organization with required roles");let Q=J.length>1?await M8({message:"Please pick the organization that you want to insert to",options:J.map((B)=>{let q=B.enforcing_2fa&&!B["2fa_has_access"]?" ⚠️ (2FA required)":"";return{value:B.gid,label:`${B.name}${q}`}})}):J[0].gid;if(c0(Q))throw K.error("Canceled organization selection, exiting"),Error("Organization selection cancelled");let w=Q,F=Z.find((B)=>B.gid===w);if(F.enforcing_2fa&&!F["2fa_has_access"])y$(F.name);return K.info(`Using the organization "${F.name}" as the app owner`),F}async function N0(D,X,Y=["all"]){await P40(D,X,Y);let{data:Z,error:J}=await D.rpc("get_user_id",{apikey:X}).single(),Q=(Z||"").toString();if(!Q||J)throw K.error("Cannot auth user with apikey"),Error("Cannot authenticate user with provided API key");return Q}async function B1(D,X){let{data:Y,error:Z}=await D.from("apps").select("owner_org").eq("app_id",X).single();if(!Y||Z)throw K.error(`Cannot get organization id for app id ${X}`),p(Z),Error(`Cannot get organization id for app id ${X}`);return Y.owner_org}function c7(D){return new Date(D||"").toLocaleString()}var jy=!1,b7="npm",e3="install",P$="npx";function B5(){if(jy)return{pm:b7,command:e3,installCommand:`${b7} ${e3}`,runner:P$};let D=tD(m8.cwd());return b7=J4(D,"npm"),e3=AX(b7),jy=!0,P$=_G(D),{pm:b7,command:e3,installCommand:`${b7} ${e3}`,runner:P$}}function ny(D){return L0.readdirSync(D,{withFileTypes:!0}).flatMap((Z)=>{let J=W0.join(D,Z.name);if(Z.isDirectory())return ny(J);else return J.split(`node_modules${W0.sep}`)[1]||J})}function iy(D){if(!L0.existsSync(D))return[];try{return L0.readdirSync(D,{withFileTypes:!0}).flatMap((Z)=>{let J=W0.join(D,Z.name);if(Z.isDirectory())return iy(J);else return J})}catch{return[]}}function k40(D,X){let Y=[];if(X==="ios"){try{let Q=L0.readdirSync(D);for(let w of Q)if(w.endsWith(".podspec"))Y.push(W0.join(D,w))}catch{}let Z=W0.join(D,"Package.swift"),J=W0.join(D,"ios","Package.swift");if(L0.existsSync(Z))Y.push(Z);if(L0.existsSync(J))Y.push(J)}else if(X==="android"){let Z=W0.join(D,"android"),J=W0.join(Z,"build.gradle"),Q=W0.join(Z,"build.gradle.kts");if(L0.existsSync(J))Y.push(J);if(L0.existsSync(Q))Y.push(Q)}return Y}async function u40(D){let X=W0.join(D,"ios"),Y=W0.join(D,"android"),Z=async(w,F)=>{let B=L0.existsSync(w)?iy(w).filter((O)=>Sy.test(O)):[],q=k40(D,F),$=[...B,...q].sort((O,H)=>O.localeCompare(H));if($.length===0)return;let{createHash:G}=await import("node:crypto"),W=G("sha256");for(let O of $)try{let H=W0.relative(D,O);W.update(H);let M=L0.readFileSync(O);W.update(M)}catch{}return W.digest("hex")},[J,Q]=await Promise.all([Z(X,"ios"),Z(Y,"android")]);return{ios_checksum:J,android_checksum:Q}}async function k$(D,X){let Y=X?X.split(","):[],Z;try{Z=await WJ("",D)}catch($){throw K.error("Invalid package.json, JSON parsing failed"),console.error("json parse error: ",$),$ instanceof Error?$:Error("Invalid package.json")}let J=D?.split(",")[0],Q=!J?tD(m8.cwd()):W0.default.resolve(J).replace(F5,"");if(!Z)throw K.error("Missing dependencies section in package.json"),Error("Missing dependencies section in package.json");for(let[$,G]of Object.entries(Z))if(typeof G!=="string")throw K.error(`Invalid dependency ${$}: ${G}, expected string, got ${typeof G}`),Error(`Invalid dependency ${$}: expected string version`);let w=Y.length===0?[W0.join(m8.cwd(),"node_modules")]:Y;if(!w.some(($)=>L0.existsSync($))){let $=J4(Q,"npm"),G=AX($);throw K.error(`Missing node_modules folder at ${w.join(", ")}, please run ${$} ${G}`),Error("Missing node_modules folder")}let B=!1,q=await Promise.all(Array.from(Z.entries()).map(async([$,G])=>{let W=!1,O=!1,H=G,M;for(let R of w){let z=W0.join(R,$);if(L0.existsSync(z)){W=!0,M=z;try{let V=W0.join(z,F5);if(L0.existsSync(V)){let L=JSON.parse(L0.readFileSync(V,"utf-8"));if(L.version)H=L.version}}catch{}try{if(ny(z).some((L)=>Sy.test(L))){O=!0;break}}catch(V){throw K.error(`Error reading node_modules files for ${$} package in ${R}`),console.error(V),V instanceof Error?V:Error(`Error reading node_modules files for ${$}`)}}}if(!W){B=!0;let R=J4(Q,"npm"),z=AX(R);return K.error(`Missing dependency ${$}, please run ${R} ${z}`),{name:$,version:G}}let U,N;if(O&&M){let R=await u40(M);U=R.ios_checksum,N=R.android_checksum}return{name:$,version:H,native:O,ios_checksum:U,android_checksum:N}})).catch(()=>[]);if(B||q.find(($)=>$.native===void 0))throw K.error("Missing dependencies or invalid dependencies"),K.error("If you use monorepo, workspace or any special package manager you can use the --package-json [path,] and --node-modules [path,] options to make the command work properly"),Error("Missing dependencies or invalid dependencies");return q}async function h40(D,X,Y){let{data:Z,error:J}=await D.from("channels").select("version(checksum)").eq("name",Y).eq("app_id",X).single(),Q=Z;if(J||Q===null||!Q.version||!Q.version.checksum)return null;return Q.version.checksum}function _40(D){if(!D)throw K.error("Error parsing native packages, perhaps the metadata does not exist in Capgo?"),Error("Error parsing native packages");for(let Y of D){if(typeof Y!=="object")throw K.error(`Invalid remote native package data: ${Y}, expected object, got ${typeof Y}`),Error("Invalid remote native package data");let{name:Z,version:J}=Y;if(!Z||typeof Z!=="string")throw K.error(`Invalid remote native package name: ${Z}, expected string, got ${typeof Z}`),Error("Invalid remote native package name");if(!J||typeof J!=="string")throw K.error(`Invalid remote native package version: ${J}, expected string, got ${typeof J}`),Error("Invalid remote native package version")}return new Map(D.map((Y)=>[Y.name,Y]))}async function py(D,X,Y){let{data:Z,error:J}=await D.from("channels").select(`version (
354
+ `),Error("2FA required for this organization")}async function MJ(D,X){let{error:Y,data:Z}=await D.rpc("get_orgs_v7");if(Y)throw K.error("Cannot get the list of organizations - exiting"),K.error(`Error ${JSON.stringify(Y)}`),Error("Cannot get the list of organizations");let J=Z.filter((B)=>!!X.find((q)=>q===B.role));if(Z.length===0)throw K.error("Could not get organization please create an organization first"),Error("No organizations available");if(J.length===0)throw K.error(`Could not find organization with roles: ${X.join(" or ")} please create an organization or ask the admin to add you to the organization with this roles`),Error("Could not find organization with required roles");let Q=J.length>1?await M8({message:"Please pick the organization that you want to insert to",options:J.map((B)=>{let q=B.enforcing_2fa&&!B["2fa_has_access"]?" ⚠️ (2FA required)":"";return{value:B.gid,label:`${B.name}${q}`}})}):J[0].gid;if(c0(Q))throw K.error("Canceled organization selection, exiting"),Error("Organization selection cancelled");let w=Q,F=Z.find((B)=>B.gid===w);if(F.enforcing_2fa&&!F["2fa_has_access"])y$(F.name);return K.info(`Using the organization "${F.name}" as the app owner`),F}async function U0(D,X,Y=["all"]){await P40(D,X,Y);let{data:Z,error:J}=await D.rpc("get_user_id",{apikey:X}).single(),Q=(Z||"").toString();if(!Q||J)throw K.error("Cannot auth user with apikey"),Error("Cannot authenticate user with provided API key");return Q}async function B1(D,X){let{data:Y,error:Z}=await D.from("apps").select("owner_org").eq("app_id",X).single();if(!Y||Z)throw K.error(`Cannot get organization id for app id ${X}`),p(Z),Error(`Cannot get organization id for app id ${X}`);return Y.owner_org}function c7(D){return new Date(D||"").toLocaleString()}var jy=!1,b7="npm",e3="install",P$="npx";function B5(){if(jy)return{pm:b7,command:e3,installCommand:`${b7} ${e3}`,runner:P$};let D=tD(m8.cwd());return b7=J4(D,"npm"),e3=AX(b7),jy=!0,P$=_G(D),{pm:b7,command:e3,installCommand:`${b7} ${e3}`,runner:P$}}function ny(D){return L0.readdirSync(D,{withFileTypes:!0}).flatMap((Z)=>{let J=W0.join(D,Z.name);if(Z.isDirectory())return ny(J);else return J.split(`node_modules${W0.sep}`)[1]||J})}function iy(D){if(!L0.existsSync(D))return[];try{return L0.readdirSync(D,{withFileTypes:!0}).flatMap((Z)=>{let J=W0.join(D,Z.name);if(Z.isDirectory())return iy(J);else return J})}catch{return[]}}function k40(D,X){let Y=[];if(X==="ios"){try{let Q=L0.readdirSync(D);for(let w of Q)if(w.endsWith(".podspec"))Y.push(W0.join(D,w))}catch{}let Z=W0.join(D,"Package.swift"),J=W0.join(D,"ios","Package.swift");if(L0.existsSync(Z))Y.push(Z);if(L0.existsSync(J))Y.push(J)}else if(X==="android"){let Z=W0.join(D,"android"),J=W0.join(Z,"build.gradle"),Q=W0.join(Z,"build.gradle.kts");if(L0.existsSync(J))Y.push(J);if(L0.existsSync(Q))Y.push(Q)}return Y}async function u40(D){let X=W0.join(D,"ios"),Y=W0.join(D,"android"),Z=async(w,F)=>{let B=L0.existsSync(w)?iy(w).filter((O)=>Sy.test(O)):[],q=k40(D,F),$=[...B,...q].sort((O,H)=>O.localeCompare(H));if($.length===0)return;let{createHash:G}=await import("node:crypto"),W=G("sha256");for(let O of $)try{let H=W0.relative(D,O);W.update(H);let M=L0.readFileSync(O);W.update(M)}catch{}return W.digest("hex")},[J,Q]=await Promise.all([Z(X,"ios"),Z(Y,"android")]);return{ios_checksum:J,android_checksum:Q}}async function k$(D,X){let Y=X?X.split(","):[],Z;try{Z=await WJ("",D)}catch($){throw K.error("Invalid package.json, JSON parsing failed"),console.error("json parse error: ",$),$ instanceof Error?$:Error("Invalid package.json")}let J=D?.split(",")[0],Q=!J?tD(m8.cwd()):W0.default.resolve(J).replace(F5,"");if(!Z)throw K.error("Missing dependencies section in package.json"),Error("Missing dependencies section in package.json");for(let[$,G]of Object.entries(Z))if(typeof G!=="string")throw K.error(`Invalid dependency ${$}: ${G}, expected string, got ${typeof G}`),Error(`Invalid dependency ${$}: expected string version`);let w=Y.length===0?[W0.join(m8.cwd(),"node_modules")]:Y;if(!w.some(($)=>L0.existsSync($))){let $=J4(Q,"npm"),G=AX($);throw K.error(`Missing node_modules folder at ${w.join(", ")}, please run ${$} ${G}`),Error("Missing node_modules folder")}let B=!1,q=await Promise.all(Array.from(Z.entries()).map(async([$,G])=>{let W=!1,O=!1,H=G,M;for(let R of w){let z=W0.join(R,$);if(L0.existsSync(z)){W=!0,M=z;try{let V=W0.join(z,F5);if(L0.existsSync(V)){let L=JSON.parse(L0.readFileSync(V,"utf-8"));if(L.version)H=L.version}}catch{}try{if(ny(z).some((L)=>Sy.test(L))){O=!0;break}}catch(V){throw K.error(`Error reading node_modules files for ${$} package in ${R}`),console.error(V),V instanceof Error?V:Error(`Error reading node_modules files for ${$}`)}}}if(!W){B=!0;let R=J4(Q,"npm"),z=AX(R);return K.error(`Missing dependency ${$}, please run ${R} ${z}`),{name:$,version:G}}let U,N;if(O&&M){let R=await u40(M);U=R.ios_checksum,N=R.android_checksum}return{name:$,version:H,native:O,ios_checksum:U,android_checksum:N}})).catch(()=>[]);if(B||q.find(($)=>$.native===void 0))throw K.error("Missing dependencies or invalid dependencies"),K.error("If you use monorepo, workspace or any special package manager you can use the --package-json [path,] and --node-modules [path,] options to make the command work properly"),Error("Missing dependencies or invalid dependencies");return q}async function h40(D,X,Y){let{data:Z,error:J}=await D.from("channels").select("version(checksum)").eq("name",Y).eq("app_id",X).single(),Q=Z;if(J||Q===null||!Q.version||!Q.version.checksum)return null;return Q.version.checksum}function _40(D){if(!D)throw K.error("Error parsing native packages, perhaps the metadata does not exist in Capgo?"),Error("Error parsing native packages");for(let Y of D){if(typeof Y!=="object")throw K.error(`Invalid remote native package data: ${Y}, expected object, got ${typeof Y}`),Error("Invalid remote native package data");let{name:Z,version:J}=Y;if(!Z||typeof Z!=="string")throw K.error(`Invalid remote native package name: ${Z}, expected string, got ${typeof Z}`),Error("Invalid remote native package name");if(!J||typeof J!=="string")throw K.error(`Invalid remote native package version: ${J}, expected string, got ${typeof J}`),Error("Invalid remote native package version")}return new Map(D.map((Y)=>[Y.name,Y]))}async function py(D,X,Y){let{data:Z,error:J}=await D.from("channels").select(`version (
355
355
  native_packages
356
356
  )`).eq("name",Y).eq("app_id",X).single();if(J)throw K.error(`Error fetching native packages: ${J.message}`),Error(`Error fetching native packages: ${J.message}`);return _40(Z.version.native_packages??[])}async function ay(D,X,Y,Z){let J=xD();J.start(`Checking bundle checksum compatibility with channel ${Y}`);let Q=await h40(D,X,Y);if(!Q){J.stop(`No checksum found for channel ${Y}, the bundle will be uploaded`);return}if(Q&&Q===Z)throw J.stop("Checksum check failed"),K.error(`Cannot upload the same bundle content.
357
357
  Current bundle checksum matches remote bundle for channel ${Y}
@@ -376,12 +376,12 @@ PS: You can ignore this check with "--ignore-checksum-check"`),Error("Cannot upl
376
376
  created_by,
377
377
  app_id,
378
378
  version (id, name)
379
- `).eq("app_id",X).order("created_at",{ascending:!1});if(J){if(!Y)K.error(`App ${X} not found in database`);throw Error(`App ${X} not found in database: ${p(J)}`)}return Z}async function _$(D,X,Y,Z={}){let{silent:J=!1}=Z,{error:Q}=await D.from("app_versions").update({deleted:!0}).eq("app_id",X).eq("deleted",!1).eq("name",Y);if(Q){let w=`App version ${X}@${Y} not found in database`;if(!J)K.error(w);throw Error(`${w}: ${p(Q)}`)}}async function VJ(D,X,Y,Z={}){let{silent:J=!1,autoUnlink:Q=!1}=Z,w=await v40(D,X,Y,{silent:J});await ry(D,X,w,{silent:J,autoUnlink:Q}),await _$(D,X,Y,{silent:J})}function Jk(D,X=!1){if(X)return;if(!D.length)throw Error("No bundle found");let Y=new MD;Y.theme=MD.roundTheme,Y.headers=["Version","Created","Keep"],Y.rows=[];for(let Z of D.toReversed())Y.rows.push([Z.name,c7(Z.created_at),Z.keep??""]);K.success("Bundles"),K.success(Y.toString())}async function UJ(D,X,Y={}){let{silent:Z=!1}=Y,{data:J,error:Q}=await D.from("app_versions").select().eq("app_id",X).eq("deleted",!1).order("created_at",{ascending:!1});if(Q){let w=`App ${X} not found in database`;if(!Z)K.error(w);throw Error(`${w}: ${p(Q)}`)}return J??[]}async function Qk(D,X,Y={}){let{silent:Z=!1}=Y,{data:J,error:Q}=await D.from("channels").select("version").eq("app_id",X);if(Q){let w=`App ${X} not found in database`;if(!Z)K.error(w);throw Error(`${w}: ${p(Q)}`)}return(J??[]).map((w)=>w.version)}async function v40(D,X,Y,Z={}){let{silent:J=!1}=Z,{data:Q,error:w}=await D.from("app_versions").select().eq("app_id",X).eq("name",Y).eq("deleted",!1).single();if(!Q||w){let F=`App version ${X}@${Y} doesn't exist`;if(!J)K.error(F);throw Error(`${F}${w?`: ${p(w)}`:""}`)}return Q}var l7=require("node:fs");async function wk(D,X){let{data:Y}=await D.rpc("exist_app_v2",{appid:X}).single();return!!Y}async function _D(D,X,Y=!1){let{data:Z,error:J}=await D.rpc("reject_access_due_to_2fa_for_app",{app_id:X});if(J){if(!Y)K.error(`Cannot check 2FA compliance: ${J.message}`);throw Error(`Cannot check 2FA compliance: ${J.message}`)}if(Z){if(Y)throw Error("2FA required for this organization");y$()}}async function CD(D,X,Y,Z,J=!1,Q=!1){let w=B5();if(!Q)await _D(D,Y,J);let F=await ky(D,X,Y);if(!F.okay)switch(F.error){case"INVALID_APIKEY":{if(!J)K.error("Invalid apikey, such apikey does not exists!");throw Error("Invalid apikey, such apikey does not exists!")}case"NO_APP":{let $=`App ${Y} does not exist, run first \`${w.runner} @capgo/cli app add ${Y}\` to create it`;if(!J)K.error($);throw Error($)}case"NO_ORG":{if(!J)K.error("Could not find organization, please contact support to resolve this!");throw Error("Could not find organization, please contact support to resolve this!")}}let B=F.data;if(Z>B){let $=`Insuficcent permissions for app ${Y}. Current permission: ${L1[F.data]}, required for this action: ${L1[Z]}.`;if(!J)K.error($);throw Error($)}return F.data}var D8="assets/icon.png";var b40=/^[a-z0-9]+(\.[\w-]+)+$/i;function g40(D,X,Y){if(!X.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}if(D.includes("--")){if(!Y)K.error('The app id includes illegal symbols. You cannot use "--" in the app id');throw Error("App id includes illegal symbols")}if(!b40.test(D)){if(!Y)K.error(`Invalid app ID format: "${D}"`),K.info("App ID must be in reverse domain notation (e.g., com.example.app)"),K.info("Valid format: lowercase letters, numbers, dots, hyphens, and underscores"),K.info("Examples: com.mycompany.myapp, io.capgo.app, com.example.my-app");throw Error("Invalid app ID format")}}async function m40(D,X,Y){if(!await wk(D,X))return;if(X==="io.ionic.starter"){if(!Y)K.error(`This appId ${X} cannot be used it's reserved, please change it in your capacitor config.`);throw Error("Reserved appId, please change it in capacitor config")}if(!Y)K.error(`App ${X} already exist`);throw Error(`App ${X} already exists`)}async function Fk(D,X,Y,Z=!1){if(!Z)q0("Adding");await o0(),X.apikey=X.apikey||Q0();let J=await H0(),Q=b0(D,J?.config);g40(Q,X,Z);let w=await K0(X.apikey,X.supaHost,X.supaAnon),F=await N0(w,X.apikey,["write","all"]);if(await m40(w,Q,Z),!Y)Y=await MJ(w,["admin","super_admin"]);let B=Y.gid,{name:q,icon:$}=X;if(q=q||J.config?.appName||"Unknown",$=$||"resources/icon.png",!$||!q){if(!Z)K.error("Missing argument, you need to provide a appId and a name, or be in a capacitor project");throw Error("Missing app name or icon path")}if(!Z)K.info(`Adding ${Q} to Capgo`);let G=null,W=null;if($&&l7.existsSync($)){if(G=l7.readFileSync($),W=X9($)||"image/png",!Z)K.warn(`Found app icon ${$}`)}else if(l7.existsSync(D8)){if(G=l7.readFileSync(D8),W=X9(D8)||"image/png",!Z)K.warn(`Found app icon ${D8}`)}else if(!Z)K.warn(`Cannot find app icon in any of the following locations: ${$}, ${D8}`);let O="icon",H="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(G&&W){let{error:U}=await w.storage.from(`images/org/${B}/${Q}`).upload(O,G,{contentType:W});if(U){if(!Z)console.error(U);if(!Z)K.error(`Could not add app ${p(U)}`);throw Error(`Could not add app ${p(U)}`)}let{data:N}=await w.storage.from(`images/org/${B}/${Q}`).getPublicUrl(O);H=N?.publicUrl||H}let{error:M}=await w.from("apps").insert({icon_url:H,owner_org:B,user_id:F,name:q,app_id:Q});if(M){if(!Z)K.error(`Could not add app ${p(M)}`);throw Error(`Could not add app ${p(M)}`)}if(!Z)K.success(`App ${Q} added to Capgo`),K.info("This app is accessible to all members of your organization based on their permissions"),K.info(`Next step: upload a bundle with "npx @capgo/cli bundle upload ${Q}"`),$0("Done ✅");return{appId:Q,organizationUid:B,userId:F,name:q,signedURL:H}}async function Bk(D,X,Y=!1,Z=!1){if(!Y)q0("Deleting");X.apikey=X.apikey||Q0();let J=await H0(),Q=b0(D,J?.config);if(!X.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!Q){if(!Y)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let w=await K0(X.apikey,X.supaHost,X.supaAnon),F=await N0(w,X.apikey,["write","all"]);await CD(w,X.apikey,Q,5,Y);let{data:B,error:q}=await w.from("apps").select("owner_org ( created_by, id )").eq("app_id",Q).single(),$=B;if(!Z&&!q&&($?.owner_org.created_by??"")!==F)if(!Y){K.warn("Deleting the app is not recommended for users that are not the organization owner"),K.warn("You are invited as a super_admin but your are not the owner"),K.warn("It's strongly recommended that you do not continue!");let M=await M8({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(c0(M)||M==="no")throw K.error("Canceled deleting the app, exiting"),Error("App deletion cancelled")}else throw Error("Cannot delete app: you are not the organization owner");else if(q&&!Y)K.warn(`Cannot get the app owner ${p(q)}`);let{error:G}=await w.storage.from("images").remove([`org/${$?.owner_org.id}/${Q}/icon`]);if(G&&!Y)K.error("Could not delete app logo");let{error:W}=await w.storage.from(`apps/${Q}/${F}`).remove(["versions"]);if(W&&!Y)K.error("Could not delete app version");let{error:O}=await w.from("apps").delete().eq("app_id",Q);if(O){if(!Y)K.error("Could not delete app");throw Error(`Could not delete app: ${p(O)}`)}let H=await B1(w,Q);if(await A0(X.apikey,{channel:"app",event:"App Deleted",icon:"\uD83D\uDDD1️",user_id:H,tags:{"app-id":Q},notify:!1}).catch(()=>{}),!Y)K.success("App deleted in Capgo"),$0("Done ✅");return!0}var NJ=require("node:os"),$k=require("node:process");async function qk(D){let X={},Y=Object.keys(D);return(await Promise.all(Y.map((J)=>$Z(J)))).forEach((J,Q)=>{if(J)X[Y[Q]]=J}),X}async function d40(){let D=await WJ(),X={"@capgo/cli":o8.version};for(let[Y,Z]of D)if(Y.startsWith("@capgo/")||Y.startsWith("@capawesome/")||Y.startsWith("capacitor"))X[Y]=Z;return X}async function Gk(D,X=!1){if(!X)K.warn(" \uD83D\uDC8A Capgo Doctor \uD83D\uDC8A");let Y=await H0(),Z=D9("",D.packageJson),J=Y?.config?.plugins?.CapacitorUpdater?.version||Z,Q=Y?.config?.appName||"",w=b0("",Y?.config),F=Y?.config?.webDir||"";if(!X)K.info(` App Name: ${Q}`),K.info(` App ID: ${w}`),K.info(` App Version: ${J}`),K.info(` Web Dir: ${F}`),K.info(` OS: ${NJ.platform()} ${NJ.version()}`),K.info(` Node: ${$k.version}`),K.info(" Installed Dependencies:");let B=await d40();if(Object.keys(B).length===0){if(!X)K.warning("\x1B[31m%s\x1B[0m \uD83D\uDEA8 No dependencies found");throw Error("No dependencies found")}if(!X)for(let $ of Object.keys(B))K.info(` ${$}: ${B[$]}`);let q={};if(!X){let $=xD();$.start("Running: Loading latest dependencies"),q=await qk(B),$.stop("Latest Dependencies:");for(let G of Object.keys(q))K.info(` ${G}: ${q[G]}`)}else q=await qk(B);if(JSON.stringify(B)!==JSON.stringify(q)){if(!X)K.warn("\x1B[31m\uD83D\uDEA8 Some dependencies are not up to date\x1B[0m");throw Error("Some dependencies are not up to date")}if(!X)K.success("\x1B[32m✅ All dependencies are up to date\x1B[0m");return{appName:Q,appId:w,appVersion:J,webDir:F,installedDependencies:B,latestDependencies:q}}function c40(D){let X=new MD;X.headers=["Name","id","Created"],X.rows=[];for(let Y of D.toReversed())X.rows.push([Y.name??"",Y.app_id,c7(Y.created_at)]);K.success("Apps"),K.success(X.toString())}async function l40(D,X){let{data:Y,error:Z}=await D.from("apps").select().order("created_at",{ascending:!1});if(Z){if(!X)K.error("Apps not found");throw Error("Apps not found")}return Y??[]}async function Ok(D,X=!1){if(!X)q0("List apps in Capgo");await o0(),D.apikey=D.apikey||Q0();let Y=await K0(D.apikey,D.supaHost,D.supaAnon);if(await N0(Y,D.apikey,["write","all","read","upload"]),!X)K.info("Getting active bundle in Capgo");let Z=await l40(Y,X);if(!Z.length){if(!X)K.error("No apps found");throw Error("No apps found")}if(!X)K.info(`Active app in Capgo: ${Z.length}`),c40(Z),$0("Done ✅");return Z}var Wk=require("node:crypto"),n7=require("node:fs");async function Hk(D,X,Y=!1){if(!Y)q0("Set app");X.apikey=X.apikey||Q0();let Z=await H0();if(D=b0(D,Z?.config),!X.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let J=await K0(X.apikey,X.supaHost,X.supaAnon),w=(await MJ(J,["admin","super_admin"])).gid,F=await N0(J,X.apikey,["write","all"]);await CD(J,X.apikey,D,4,Y);let{name:B,icon:q,retention:$,exposeMetadata:G}=X;if($&&Number.isNaN(Number($))){if(!Y)K.error("retention value must be a number");throw Error("Retention value must be a number")}else if($&&$<0){if(!Y)K.error("retention value cannot be less than 0");throw Error("Retention value cannot be less than 0")}else if($&&$>=63113904){if(!Y)K.error("retention value cannot be greater than 63113904 seconds (2 years)");throw Error("Retention value cannot be greater than 63113904 seconds (2 years)")}let W,O,H=`icon_${Wk.randomUUID()}`,M="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(q&&n7.existsSync(q)){if(W=n7.readFileSync(q),O=X9(q)||"image/png",!Y)K.warn(`Found app icon ${q}`)}else if(n7.existsSync(D8)){if(W=n7.readFileSync(D8),O=X9(D8)||"image/png",!Y)K.warn(`Found app icon ${D8}`)}else if(!Y)K.warn(`Cannot find app icon in any of the following locations: ${q}, ${D8}`);if(W&&O){let{error:N}=await J.storage.from(`images/org/${w}/${D}`).upload(H,W,{contentType:O});if(N){if(!Y)K.error(`Could not set app ${p(N)}`);throw Error(`Could not set app: ${p(N)}`)}let{data:R}=await J.storage.from(`images/org/${w}/${D}`).getPublicUrl(H);M=R?.publicUrl||M}let{error:U}=await J.from("apps").update({icon_url:M,name:B,retention:!$?void 0:$*24*60*60,expose_metadata:G}).eq("app_id",D).eq("user_id",F);if(U){if(!Y)K.error(`Could not set app ${p(U)}`);throw Error(`Could not set app: ${p(U)}`)}if(!Y)$0("Done ✅");return!0}async function Kk(D,X,Y=!1){if(!Y)q0("Set a specific setting in capacitor config");if(X.bool&&X.string){if(!Y)K.error("Bool and string CANNOT be set at the same time");throw Error("Bool and string cannot both be provided")}if(!X.bool&&!X.string){if(!Y)K.error("You MUST provide either bool or string as the value");throw Error("Either bool or string value is required")}if(X.bool&&X.bool!=="true"&&X.bool!=="false"){if(!Y)K.error("Invalid bool");throw Error("Invalid bool value; expected true or false")}try{let Z=await H0(),J=Z.config,Q=D.split(".");if(Q.length===0){if(!Y)K.error("Invalid path");throw Error("Invalid config path")}for(let F of Q.slice(0,-1)){if(!Object.prototype.hasOwnProperty.call(J,F))J[F]={};J=J[F]}let w=X.bool?X.bool==="true":X.string;if(J[Q.at(-1)]=w,await u7(Z,!0),!Y)K.success(`Set "${D}" to "${w}"`)}catch(Z){if(!Y)K.error(`Cannot set config in capacitor settings ${p(Z)}`);throw Error(`Cannot set capacitor config: ${p(Z)}`)}if(!Y)$0("Done ✅")}var d8=require("node:fs"),X8=require("node:fs/promises"),Vk=require("node:os"),Y8=require("node:path"),b$=require("node:process");var Uk=V0(Kw(),1),EJ=V0(qZ(),1);var RJ=require("node:fs/promises"),zk=require("node:os"),AJ=require("node:path"),P0=require("node:process"),n40=AJ.join(zk.homedir(),".capgo-credentials"),i40=AJ.join(n40,"credentials.json"),p40=".capgo-credentials.json";function a40(D){return D?AJ.join(P0.cwd(),p40):i40}async function v$(D){try{let X=a40(D),Y=await RJ.readFile(X,"utf-8");return JSON.parse(Y)}catch{return{}}}async function t40(D,X){if(X!==void 0){let J=await v$(X);if(!D){let Q=Object.keys(J);if(Q.length===0)return null;return J[Q[0]]||null}return J[D]||null}let Y=await v$(!0),Z=await v$(!1);if(!D){let J=Object.keys(Y);if(J.length>0)return Y[J[0]]||null;let Q=Object.keys(Z);if(Q.length===0)return null;return Z[Q[0]]||null}return Y[D]||Z[D]||null}function r40(){let D={};if(P0.env.BUILD_CERTIFICATE_BASE64)D.BUILD_CERTIFICATE_BASE64=P0.env.BUILD_CERTIFICATE_BASE64;if(P0.env.BUILD_PROVISION_PROFILE_BASE64)D.BUILD_PROVISION_PROFILE_BASE64=P0.env.BUILD_PROVISION_PROFILE_BASE64;if(P0.env.BUILD_PROVISION_PROFILE_BASE64_PROD)D.BUILD_PROVISION_PROFILE_BASE64_PROD=P0.env.BUILD_PROVISION_PROFILE_BASE64_PROD;if(P0.env.P12_PASSWORD)D.P12_PASSWORD=P0.env.P12_PASSWORD;if(P0.env.APPLE_KEY_ID)D.APPLE_KEY_ID=P0.env.APPLE_KEY_ID;if(P0.env.APPLE_ISSUER_ID)D.APPLE_ISSUER_ID=P0.env.APPLE_ISSUER_ID;if(P0.env.APPLE_KEY_CONTENT)D.APPLE_KEY_CONTENT=P0.env.APPLE_KEY_CONTENT;if(P0.env.APPLE_PROFILE_NAME)D.APPLE_PROFILE_NAME=P0.env.APPLE_PROFILE_NAME;if(P0.env.APP_STORE_CONNECT_TEAM_ID)D.APP_STORE_CONNECT_TEAM_ID=P0.env.APP_STORE_CONNECT_TEAM_ID;if(P0.env.ANDROID_KEYSTORE_FILE)D.ANDROID_KEYSTORE_FILE=P0.env.ANDROID_KEYSTORE_FILE;if(P0.env.KEYSTORE_KEY_ALIAS)D.KEYSTORE_KEY_ALIAS=P0.env.KEYSTORE_KEY_ALIAS;if(P0.env.KEYSTORE_KEY_PASSWORD)D.KEYSTORE_KEY_PASSWORD=P0.env.KEYSTORE_KEY_PASSWORD;if(P0.env.KEYSTORE_STORE_PASSWORD)D.KEYSTORE_STORE_PASSWORD=P0.env.KEYSTORE_STORE_PASSWORD;if(P0.env.PLAY_CONFIG_JSON)D.PLAY_CONFIG_JSON=P0.env.PLAY_CONFIG_JSON;return D}async function Mk(D,X,Y){let Z=await t40(D),J=r40(),Q={...Z?.[X]||{}};if(Object.assign(Q,J),Y)Object.assign(Q,Y);if(X==="android"){let w=!!Q.KEYSTORE_KEY_PASSWORD,F=!!Q.KEYSTORE_STORE_PASSWORD;if(w&&!F)Q.KEYSTORE_STORE_PASSWORD=Q.KEYSTORE_KEY_PASSWORD;else if(!w&&F)Q.KEYSTORE_KEY_PASSWORD=Q.KEYSTORE_STORE_PASSWORD}return Object.keys(Q).length>0?Q:void 0}async function s40(D,X,Y=3,Z=!1){let J=[1000,3000,5000];for(let Q=1;Q<=Y;Q++)try{let w=await fetch(D,X);if(w.ok||w.status>=400&&w.status<500)return w;let F=await w.text().catch(()=>"unknown error");if(!Z)K.warn(`Build request attempt ${Q}/${Y} failed: ${w.status} - ${F}`);if(Q<Y){let B=J[Q-1]||5000;if(!Z)K.info(`Retrying in ${B/1000}s...`);await new Promise((q)=>setTimeout(q,B))}else throw Error(`Failed to request build after ${Y} attempts: ${w.status} - ${F}`)}catch(w){let F=w instanceof Error?w.message:String(w);if(F.startsWith("Failed to request build after"))throw w;if(!Z)K.warn(`Build request attempt ${Q}/${Y} failed: ${F}`);if(Q<Y){let B=J[Q-1]||5000;if(!Z)K.info(`Retrying in ${B/1000}s...`);await new Promise((q)=>setTimeout(q,B))}else throw Error(`Failed to request build after ${Y} attempts: ${F}`)}throw Error("Unexpected error in fetchWithRetry")}async function o40(D,X,Y,Z,J,Q=!1){if(J)return null;let w=null,F=!1,B=`${D}/build/logs/${X}?app_id=${encodeURIComponent(Y)}`;K.info(`Connecting to log stream: ${B}`);try{let q=await fetch(B,{headers:{authorization:Z}});if(K.info(`Log stream response: ${q.status}`),!q.ok){let H=await q.text().catch(()=>"unknown error");return K.warn(`Could not stream logs (${q.status}): ${H}`),null}let $=q.body?.getReader();if(!$)return K.warn("No response body for log stream"),null;K.info("Reading log stream...");let G=new TextDecoder,W="",O=(H)=>{if(!H.trim())return;let M=H.match(/^(?:Build|Job already) (succeeded|failed|expired|released|cancelled)$/i);if(M){w=M[1].toLowerCase();return}if(w)return;if(!F)F=!0,K.info("");K.info(H)};while(!0){let{done:H,value:M}=await $.read();if(H)break;W+=G.decode(M,{stream:!0});let U=W.split(`
380
- `);W=U.pop()||"";for(let N of U)if(N.startsWith("data: ")){let R=N.slice(6);O(R)}}if(W.startsWith("data: ")){let H=W.slice(6);O(H)}return w}catch(q){if(!J)K.warn(`Log streaming interrupted${q instanceof Error?`: ${q.message}`:""}`);return null}}async function e40(D,X,Y,Z,J,Q){let F=0;while(F<120)try{let B=await fetch(`${D}/build/status?job_id=${encodeURIComponent(X)}&app_id=${encodeURIComponent(Y)}&platform=${Z}`,{headers:{authorization:J}});if(!B.ok){if(!Q)K.warn(`Status check failed: ${B.status}`);await new Promise(($)=>setTimeout($,5000)),F++;continue}let q=await B.json();if(q.status==="succeeded"||q.status==="failed")return q.status;await new Promise(($)=>setTimeout($,5000)),F++}catch(B){if(!Q)K.warn(`Status check error: ${B}`);await new Promise((q)=>setTimeout(q,5000)),F++}if(!Q)K.warn("Build status polling timed out");return"timeout"}async function D30(D,X){let Y=new Set,Z=!1;if(X==="ios"){let J=Y8.join(D,"ios/App/CapApp-SPM/Package.swift");if(d8.existsSync(J)){Z=!0;let w=(await X8.readFile(J,"utf-8")).matchAll(/\.package\s*\([^)]*path:\s*["'](?:\.\.\/)*node_modules\/([^"']+)["']\s*\)/g);for(let F of w)Y.add(F[1])}else{let Q=Y8.join(D,"ios/App/Podfile");if(d8.existsSync(Q)){let F=(await X8.readFile(Q,"utf-8")).matchAll(/pod\s+['"][^'"]+['"],\s*:path\s*=>\s*['"]\.\.\/\.\.\/node_modules\/([^'"]+)['"]/g);for(let B of F)Y.add(B[1])}}}else if(X==="android"){let J=Y8.join(D,"android/capacitor.settings.gradle");if(d8.existsSync(J)){let w=(await X8.readFile(J,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let F of w){let q=F[1].replace(/\/android$/,"");Y.add(q)}}}return{packages:Y,usesSPM:Z}}function Lk(D,X,Y){let Z=D.replace(/\\/g,"/");if(Z.startsWith(`${X}/`))return!0;if(Z==="package.json"||Z==="package-lock.json"||Z.startsWith("capacitor.config."))return!0;if(Z.startsWith("resources/"))return!0;if(X==="ios"&&Z.startsWith("node_modules/@capacitor/ios/"))return!0;if(X==="android"&&Z.startsWith("node_modules/@capacitor/android/"))return!0;for(let J of Y.packages){let Q=`node_modules/${J}/`;if(X==="android"){if(Z.startsWith(`${Q}android/`))return!0}else if(X==="ios"){if(Z.startsWith(`${Q}ios/`))return!0;if(Y.usesSPM){if(Z===`${Q}Package.swift`)return!0}else if(Z.startsWith(Q)&&Z.endsWith(".podspec"))return!0}}return!1}function XX(D,X,Y,Z,J){let Q=d8.readdirSync(X);for(let w of Q){let F=Y8.join(X,w),B=Y?`${Y}/${w}`:w,q=d8.statSync(F);if(q.isDirectory()){if(w===".git"||w==="dist"||w==="build"||w===".angular"||w===".vite"||w===".gradle"||w===".idea"||w===".swiftpm")continue;if(w===Z){XX(D,F,B,Z,J);continue}if(w==="node_modules"){XX(D,F,B,Z,J);continue}if(w==="resources"){XX(D,F,B,Z,J);continue}let $=B.replace(/\\/g,"/");if(Lk(B,Z,J)||Array.from(J.packages).some((W)=>{return`node_modules/${W}/`.startsWith(`${$}/`)||$.startsWith(`node_modules/${W}`)}))XX(D,F,B,Z,J)}else if(q.isFile()){if(w===".DS_Store"||w.endsWith(".log"))continue;if(Lk(B,Z,J))D.addLocalFile(F,Y||void 0)}}}async function X30(D,X,Y){let Z=await D30(D,Y),J=new Uk.default;XX(J,D,"",Y,Z),await X8.writeFile(X,J.toBuffer())}async function Nk(D,X,Y=!1){let Z=Date.now(),J=X.verbose??!1;try{X.apikey=X.apikey||Q0(Y);let Q=await H0();if(D=D||Q?.config.appId,!D)throw Error("Missing argument, you need to provide a appId, or be in a capacitor project");if(!X.platform)throw Error("Missing required argument: --platform <ios|android>");if(X.platform!=="ios"&&X.platform!=="android")throw Error(`Invalid platform "${X.platform}". Must be "ios" or "android"`);let w=Y8.resolve(X.path||b$.cwd()),F=X.supaHost||"https://api.capgo.app",B=await K0(X.apikey,X.supaHost,X.supaAnon);await N0(B,X.apikey,["write","all"]);let q=await B1(B,D);if(!Y)K.info(`Requesting native build for ${D}`),K.info(`Platform: ${X.platform}`),K.info(`Project: ${w}`),K.info(`
379
+ `).eq("app_id",X).order("created_at",{ascending:!1});if(J){if(!Y)K.error(`App ${X} not found in database`);throw Error(`App ${X} not found in database: ${p(J)}`)}return Z}async function _$(D,X,Y,Z={}){let{silent:J=!1}=Z,{error:Q}=await D.from("app_versions").update({deleted:!0}).eq("app_id",X).eq("deleted",!1).eq("name",Y);if(Q){let w=`App version ${X}@${Y} not found in database`;if(!J)K.error(w);throw Error(`${w}: ${p(Q)}`)}}async function VJ(D,X,Y,Z={}){let{silent:J=!1,autoUnlink:Q=!1}=Z,w=await v40(D,X,Y,{silent:J});await ry(D,X,w,{silent:J,autoUnlink:Q}),await _$(D,X,Y,{silent:J})}function Jk(D,X=!1){if(X)return;if(!D.length)throw Error("No bundle found");let Y=new MD;Y.theme=MD.roundTheme,Y.headers=["Version","Created","Keep"],Y.rows=[];for(let Z of D.toReversed())Y.rows.push([Z.name,c7(Z.created_at),Z.keep??""]);K.success("Bundles"),K.success(Y.toString())}async function UJ(D,X,Y={}){let{silent:Z=!1}=Y,{data:J,error:Q}=await D.from("app_versions").select().eq("app_id",X).eq("deleted",!1).order("created_at",{ascending:!1});if(Q){let w=`App ${X} not found in database`;if(!Z)K.error(w);throw Error(`${w}: ${p(Q)}`)}return J??[]}async function Qk(D,X,Y={}){let{silent:Z=!1}=Y,{data:J,error:Q}=await D.from("channels").select("version").eq("app_id",X);if(Q){let w=`App ${X} not found in database`;if(!Z)K.error(w);throw Error(`${w}: ${p(Q)}`)}return(J??[]).map((w)=>w.version)}async function v40(D,X,Y,Z={}){let{silent:J=!1}=Z,{data:Q,error:w}=await D.from("app_versions").select().eq("app_id",X).eq("name",Y).eq("deleted",!1).single();if(!Q||w){let F=`App version ${X}@${Y} doesn't exist`;if(!J)K.error(F);throw Error(`${F}${w?`: ${p(w)}`:""}`)}return Q}var l7=require("node:fs");async function wk(D,X){let{data:Y}=await D.rpc("exist_app_v2",{appid:X}).single();return!!Y}async function _D(D,X,Y=!1){let{data:Z,error:J}=await D.rpc("reject_access_due_to_2fa_for_app",{app_id:X});if(J){if(!Y)K.error(`Cannot check 2FA compliance: ${J.message}`);throw Error(`Cannot check 2FA compliance: ${J.message}`)}if(Z){if(Y)throw Error("2FA required for this organization");y$()}}async function CD(D,X,Y,Z,J=!1,Q=!1){let w=B5();if(!Q)await _D(D,Y,J);let F=await ky(D,X,Y);if(!F.okay)switch(F.error){case"INVALID_APIKEY":{if(!J)K.error("Invalid apikey, such apikey does not exists!");throw Error("Invalid apikey, such apikey does not exists!")}case"NO_APP":{let $=`App ${Y} does not exist, run first \`${w.runner} @capgo/cli app add ${Y}\` to create it`;if(!J)K.error($);throw Error($)}case"NO_ORG":{if(!J)K.error("Could not find organization, please contact support to resolve this!");throw Error("Could not find organization, please contact support to resolve this!")}}let B=F.data;if(Z>B){let $=`Insuficcent permissions for app ${Y}. Current permission: ${L1[F.data]}, required for this action: ${L1[Z]}.`;if(!J)K.error($);throw Error($)}return F.data}var D8="assets/icon.png";var b40=/^[a-z0-9]+(\.[\w-]+)+$/i;function g40(D,X,Y){if(!X.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}if(D.includes("--")){if(!Y)K.error('The app id includes illegal symbols. You cannot use "--" in the app id');throw Error("App id includes illegal symbols")}if(!b40.test(D)){if(!Y)K.error(`Invalid app ID format: "${D}"`),K.info("App ID must be in reverse domain notation (e.g., com.example.app)"),K.info("Valid format: lowercase letters, numbers, dots, hyphens, and underscores"),K.info("Examples: com.mycompany.myapp, io.capgo.app, com.example.my-app");throw Error("Invalid app ID format")}}async function m40(D,X,Y){if(!await wk(D,X))return;if(X==="io.ionic.starter"){if(!Y)K.error(`This appId ${X} cannot be used it's reserved, please change it in your capacitor config.`);throw Error("Reserved appId, please change it in capacitor config")}if(!Y)K.error(`App ${X} already exist`);throw Error(`App ${X} already exists`)}async function Fk(D,X,Y,Z=!1){if(!Z)q0("Adding");await o0(),X.apikey=X.apikey||Q0();let J=await H0(),Q=b0(D,J?.config);g40(Q,X,Z);let w=await K0(X.apikey,X.supaHost,X.supaAnon),F=await U0(w,X.apikey,["write","all"]);if(await m40(w,Q,Z),!Y)Y=await MJ(w,["admin","super_admin"]);let B=Y.gid,{name:q,icon:$}=X;if(q=q||J.config?.appName||"Unknown",$=$||"resources/icon.png",!$||!q){if(!Z)K.error("Missing argument, you need to provide a appId and a name, or be in a capacitor project");throw Error("Missing app name or icon path")}if(!Z)K.info(`Adding ${Q} to Capgo`);let G=null,W=null;if($&&l7.existsSync($)){if(G=l7.readFileSync($),W=X9($)||"image/png",!Z)K.warn(`Found app icon ${$}`)}else if(l7.existsSync(D8)){if(G=l7.readFileSync(D8),W=X9(D8)||"image/png",!Z)K.warn(`Found app icon ${D8}`)}else if(!Z)K.warn(`Cannot find app icon in any of the following locations: ${$}, ${D8}`);let O="icon",H="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(G&&W){let{error:U}=await w.storage.from(`images/org/${B}/${Q}`).upload(O,G,{contentType:W});if(U){if(!Z)console.error(U);if(!Z)K.error(`Could not add app ${p(U)}`);throw Error(`Could not add app ${p(U)}`)}let{data:N}=await w.storage.from(`images/org/${B}/${Q}`).getPublicUrl(O);H=N?.publicUrl||H}let{error:M}=await w.from("apps").insert({icon_url:H,owner_org:B,user_id:F,name:q,app_id:Q});if(M){if(!Z)K.error(`Could not add app ${p(M)}`);throw Error(`Could not add app ${p(M)}`)}if(!Z)K.success(`App ${Q} added to Capgo`),K.info("This app is accessible to all members of your organization based on their permissions"),K.info(`Next step: upload a bundle with "npx @capgo/cli bundle upload ${Q}"`),$0("Done ✅");return{appId:Q,organizationUid:B,userId:F,name:q,signedURL:H}}async function Bk(D,X,Y=!1,Z=!1){if(!Y)q0("Deleting");X.apikey=X.apikey||Q0();let J=await H0(),Q=b0(D,J?.config);if(!X.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!Q){if(!Y)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let w=await K0(X.apikey,X.supaHost,X.supaAnon),F=await U0(w,X.apikey,["write","all"]);await CD(w,X.apikey,Q,5,Y);let{data:B,error:q}=await w.from("apps").select("owner_org ( created_by, id )").eq("app_id",Q).single(),$=B;if(!Z&&!q&&($?.owner_org.created_by??"")!==F)if(!Y){K.warn("Deleting the app is not recommended for users that are not the organization owner"),K.warn("You are invited as a super_admin but your are not the owner"),K.warn("It's strongly recommended that you do not continue!");let M=await M8({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(c0(M)||M==="no")throw K.error("Canceled deleting the app, exiting"),Error("App deletion cancelled")}else throw Error("Cannot delete app: you are not the organization owner");else if(q&&!Y)K.warn(`Cannot get the app owner ${p(q)}`);let{error:G}=await w.storage.from("images").remove([`org/${$?.owner_org.id}/${Q}/icon`]);if(G&&!Y)K.error("Could not delete app logo");let{error:W}=await w.storage.from(`apps/${Q}/${F}`).remove(["versions"]);if(W&&!Y)K.error("Could not delete app version");let{error:O}=await w.from("apps").delete().eq("app_id",Q);if(O){if(!Y)K.error("Could not delete app");throw Error(`Could not delete app: ${p(O)}`)}let H=await B1(w,Q);if(await A0(X.apikey,{channel:"app",event:"App Deleted",icon:"\uD83D\uDDD1️",user_id:H,tags:{"app-id":Q},notify:!1}).catch(()=>{}),!Y)K.success("App deleted in Capgo"),$0("Done ✅");return!0}var NJ=require("node:os"),$k=require("node:process");async function qk(D){let X={},Y=Object.keys(D);return(await Promise.all(Y.map((J)=>$Z(J)))).forEach((J,Q)=>{if(J)X[Y[Q]]=J}),X}async function d40(){let D=await WJ(),X={"@capgo/cli":o8.version};for(let[Y,Z]of D)if(Y.startsWith("@capgo/")||Y.startsWith("@capawesome/")||Y.startsWith("capacitor"))X[Y]=Z;return X}async function Gk(D,X=!1){if(!X)K.warn(" \uD83D\uDC8A Capgo Doctor \uD83D\uDC8A");let Y=await H0(),Z=D9("",D.packageJson),J=Y?.config?.plugins?.CapacitorUpdater?.version||Z,Q=Y?.config?.appName||"",w=b0("",Y?.config),F=Y?.config?.webDir||"";if(!X)K.info(` App Name: ${Q}`),K.info(` App ID: ${w}`),K.info(` App Version: ${J}`),K.info(` Web Dir: ${F}`),K.info(` OS: ${NJ.platform()} ${NJ.version()}`),K.info(` Node: ${$k.version}`),K.info(" Installed Dependencies:");let B=await d40();if(Object.keys(B).length===0){if(!X)K.warning("\x1B[31m%s\x1B[0m \uD83D\uDEA8 No dependencies found");throw Error("No dependencies found")}if(!X)for(let $ of Object.keys(B))K.info(` ${$}: ${B[$]}`);let q={};if(!X){let $=xD();$.start("Running: Loading latest dependencies"),q=await qk(B),$.stop("Latest Dependencies:");for(let G of Object.keys(q))K.info(` ${G}: ${q[G]}`)}else q=await qk(B);if(JSON.stringify(B)!==JSON.stringify(q)){if(!X)K.warn("\x1B[31m\uD83D\uDEA8 Some dependencies are not up to date\x1B[0m");throw Error("Some dependencies are not up to date")}if(!X)K.success("\x1B[32m✅ All dependencies are up to date\x1B[0m");return{appName:Q,appId:w,appVersion:J,webDir:F,installedDependencies:B,latestDependencies:q}}function c40(D){let X=new MD;X.headers=["Name","id","Created"],X.rows=[];for(let Y of D.toReversed())X.rows.push([Y.name??"",Y.app_id,c7(Y.created_at)]);K.success("Apps"),K.success(X.toString())}async function l40(D,X){let{data:Y,error:Z}=await D.from("apps").select().order("created_at",{ascending:!1});if(Z){if(!X)K.error("Apps not found");throw Error("Apps not found")}return Y??[]}async function Ok(D,X=!1){if(!X)q0("List apps in Capgo");await o0(),D.apikey=D.apikey||Q0();let Y=await K0(D.apikey,D.supaHost,D.supaAnon);if(await U0(Y,D.apikey,["write","all","read","upload"]),!X)K.info("Getting active bundle in Capgo");let Z=await l40(Y,X);if(!Z.length){if(!X)K.error("No apps found");throw Error("No apps found")}if(!X)K.info(`Active app in Capgo: ${Z.length}`),c40(Z),$0("Done ✅");return Z}var Wk=require("node:crypto"),n7=require("node:fs");async function Hk(D,X,Y=!1){if(!Y)q0("Set app");X.apikey=X.apikey||Q0();let Z=await H0();if(D=b0(D,Z?.config),!X.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let J=await K0(X.apikey,X.supaHost,X.supaAnon),w=(await MJ(J,["admin","super_admin"])).gid,F=await U0(J,X.apikey,["write","all"]);await CD(J,X.apikey,D,4,Y);let{name:B,icon:q,retention:$,exposeMetadata:G}=X;if($&&Number.isNaN(Number($))){if(!Y)K.error("retention value must be a number");throw Error("Retention value must be a number")}else if($&&$<0){if(!Y)K.error("retention value cannot be less than 0");throw Error("Retention value cannot be less than 0")}else if($&&$>=63113904){if(!Y)K.error("retention value cannot be greater than 63113904 seconds (2 years)");throw Error("Retention value cannot be greater than 63113904 seconds (2 years)")}let W,O,H=`icon_${Wk.randomUUID()}`,M="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(q&&n7.existsSync(q)){if(W=n7.readFileSync(q),O=X9(q)||"image/png",!Y)K.warn(`Found app icon ${q}`)}else if(n7.existsSync(D8)){if(W=n7.readFileSync(D8),O=X9(D8)||"image/png",!Y)K.warn(`Found app icon ${D8}`)}else if(!Y)K.warn(`Cannot find app icon in any of the following locations: ${q}, ${D8}`);if(W&&O){let{error:N}=await J.storage.from(`images/org/${w}/${D}`).upload(H,W,{contentType:O});if(N){if(!Y)K.error(`Could not set app ${p(N)}`);throw Error(`Could not set app: ${p(N)}`)}let{data:R}=await J.storage.from(`images/org/${w}/${D}`).getPublicUrl(H);M=R?.publicUrl||M}let{error:U}=await J.from("apps").update({icon_url:M,name:B,retention:!$?void 0:$*24*60*60,expose_metadata:G}).eq("app_id",D).eq("user_id",F);if(U){if(!Y)K.error(`Could not set app ${p(U)}`);throw Error(`Could not set app: ${p(U)}`)}if(!Y)$0("Done ✅");return!0}async function Kk(D,X,Y=!1){if(!Y)q0("Set a specific setting in capacitor config");if(X.bool&&X.string){if(!Y)K.error("Bool and string CANNOT be set at the same time");throw Error("Bool and string cannot both be provided")}if(!X.bool&&!X.string){if(!Y)K.error("You MUST provide either bool or string as the value");throw Error("Either bool or string value is required")}if(X.bool&&X.bool!=="true"&&X.bool!=="false"){if(!Y)K.error("Invalid bool");throw Error("Invalid bool value; expected true or false")}try{let Z=await H0(),J=Z.config,Q=D.split(".");if(Q.length===0){if(!Y)K.error("Invalid path");throw Error("Invalid config path")}for(let F of Q.slice(0,-1)){if(!Object.prototype.hasOwnProperty.call(J,F))J[F]={};J=J[F]}let w=X.bool?X.bool==="true":X.string;if(J[Q.at(-1)]=w,await u7(Z,!0),!Y)K.success(`Set "${D}" to "${w}"`)}catch(Z){if(!Y)K.error(`Cannot set config in capacitor settings ${p(Z)}`);throw Error(`Cannot set capacitor config: ${p(Z)}`)}if(!Y)$0("Done ✅")}var d8=require("node:fs"),X8=require("node:fs/promises"),Vk=require("node:os"),Y8=require("node:path"),b$=require("node:process");var Uk=N0(Kw(),1),EJ=N0(qZ(),1);var RJ=require("node:fs/promises"),zk=require("node:os"),AJ=require("node:path"),P0=require("node:process"),n40=AJ.join(zk.homedir(),".capgo-credentials"),i40=AJ.join(n40,"credentials.json"),p40=".capgo-credentials.json";function a40(D){return D?AJ.join(P0.cwd(),p40):i40}async function v$(D){try{let X=a40(D),Y=await RJ.readFile(X,"utf-8");return JSON.parse(Y)}catch{return{}}}async function t40(D,X){if(X!==void 0){let J=await v$(X);if(!D){let Q=Object.keys(J);if(Q.length===0)return null;return J[Q[0]]||null}return J[D]||null}let Y=await v$(!0),Z=await v$(!1);if(!D){let J=Object.keys(Y);if(J.length>0)return Y[J[0]]||null;let Q=Object.keys(Z);if(Q.length===0)return null;return Z[Q[0]]||null}return Y[D]||Z[D]||null}function r40(){let D={};if(P0.env.BUILD_CERTIFICATE_BASE64)D.BUILD_CERTIFICATE_BASE64=P0.env.BUILD_CERTIFICATE_BASE64;if(P0.env.BUILD_PROVISION_PROFILE_BASE64)D.BUILD_PROVISION_PROFILE_BASE64=P0.env.BUILD_PROVISION_PROFILE_BASE64;if(P0.env.BUILD_PROVISION_PROFILE_BASE64_PROD)D.BUILD_PROVISION_PROFILE_BASE64_PROD=P0.env.BUILD_PROVISION_PROFILE_BASE64_PROD;if(P0.env.P12_PASSWORD)D.P12_PASSWORD=P0.env.P12_PASSWORD;if(P0.env.APPLE_KEY_ID)D.APPLE_KEY_ID=P0.env.APPLE_KEY_ID;if(P0.env.APPLE_ISSUER_ID)D.APPLE_ISSUER_ID=P0.env.APPLE_ISSUER_ID;if(P0.env.APPLE_KEY_CONTENT)D.APPLE_KEY_CONTENT=P0.env.APPLE_KEY_CONTENT;if(P0.env.APPLE_PROFILE_NAME)D.APPLE_PROFILE_NAME=P0.env.APPLE_PROFILE_NAME;if(P0.env.APP_STORE_CONNECT_TEAM_ID)D.APP_STORE_CONNECT_TEAM_ID=P0.env.APP_STORE_CONNECT_TEAM_ID;if(P0.env.ANDROID_KEYSTORE_FILE)D.ANDROID_KEYSTORE_FILE=P0.env.ANDROID_KEYSTORE_FILE;if(P0.env.KEYSTORE_KEY_ALIAS)D.KEYSTORE_KEY_ALIAS=P0.env.KEYSTORE_KEY_ALIAS;if(P0.env.KEYSTORE_KEY_PASSWORD)D.KEYSTORE_KEY_PASSWORD=P0.env.KEYSTORE_KEY_PASSWORD;if(P0.env.KEYSTORE_STORE_PASSWORD)D.KEYSTORE_STORE_PASSWORD=P0.env.KEYSTORE_STORE_PASSWORD;if(P0.env.PLAY_CONFIG_JSON)D.PLAY_CONFIG_JSON=P0.env.PLAY_CONFIG_JSON;return D}async function Mk(D,X,Y){let Z=await t40(D),J=r40(),Q={...Z?.[X]||{}};if(Object.assign(Q,J),Y)Object.assign(Q,Y);if(X==="android"){let w=!!Q.KEYSTORE_KEY_PASSWORD,F=!!Q.KEYSTORE_STORE_PASSWORD;if(w&&!F)Q.KEYSTORE_STORE_PASSWORD=Q.KEYSTORE_KEY_PASSWORD;else if(!w&&F)Q.KEYSTORE_KEY_PASSWORD=Q.KEYSTORE_STORE_PASSWORD}return Object.keys(Q).length>0?Q:void 0}async function s40(D,X,Y=3,Z=!1){let J=[1000,3000,5000];for(let Q=1;Q<=Y;Q++)try{let w=await fetch(D,X);if(w.ok||w.status>=400&&w.status<500)return w;let F=await w.text().catch(()=>"unknown error");if(!Z)K.warn(`Build request attempt ${Q}/${Y} failed: ${w.status} - ${F}`);if(Q<Y){let B=J[Q-1]||5000;if(!Z)K.info(`Retrying in ${B/1000}s...`);await new Promise((q)=>setTimeout(q,B))}else throw Error(`Failed to request build after ${Y} attempts: ${w.status} - ${F}`)}catch(w){let F=w instanceof Error?w.message:String(w);if(F.startsWith("Failed to request build after"))throw w;if(!Z)K.warn(`Build request attempt ${Q}/${Y} failed: ${F}`);if(Q<Y){let B=J[Q-1]||5000;if(!Z)K.info(`Retrying in ${B/1000}s...`);await new Promise((q)=>setTimeout(q,B))}else throw Error(`Failed to request build after ${Y} attempts: ${F}`)}throw Error("Unexpected error in fetchWithRetry")}async function o40(D,X,Y,Z,J,Q=!1){if(J)return null;let w=null,F=!1,B=`${D}/build/logs/${X}?app_id=${encodeURIComponent(Y)}`;K.info(`Connecting to log stream: ${B}`);try{let q=await fetch(B,{headers:{authorization:Z}});if(K.info(`Log stream response: ${q.status}`),!q.ok){let H=await q.text().catch(()=>"unknown error");return K.warn(`Could not stream logs (${q.status}): ${H}`),null}let $=q.body?.getReader();if(!$)return K.warn("No response body for log stream"),null;K.info("Reading log stream...");let G=new TextDecoder,W="",O=(H)=>{if(!H.trim())return;let M=H.match(/^(?:Build|Job already) (succeeded|failed|expired|released|cancelled)$/i);if(M){w=M[1].toLowerCase();return}if(w)return;if(!F)F=!0,K.info("");K.info(H)};while(!0){let{done:H,value:M}=await $.read();if(H)break;W+=G.decode(M,{stream:!0});let U=W.split(`
380
+ `);W=U.pop()||"";for(let N of U)if(N.startsWith("data: ")){let R=N.slice(6);O(R)}}if(W.startsWith("data: ")){let H=W.slice(6);O(H)}return w}catch(q){if(!J)K.warn(`Log streaming interrupted${q instanceof Error?`: ${q.message}`:""}`);return null}}async function e40(D,X,Y,Z,J,Q){let F=0;while(F<120)try{let B=await fetch(`${D}/build/status?job_id=${encodeURIComponent(X)}&app_id=${encodeURIComponent(Y)}&platform=${Z}`,{headers:{authorization:J}});if(!B.ok){if(!Q)K.warn(`Status check failed: ${B.status}`);await new Promise(($)=>setTimeout($,5000)),F++;continue}let q=await B.json();if(q.status==="succeeded"||q.status==="failed")return q.status;await new Promise(($)=>setTimeout($,5000)),F++}catch(B){if(!Q)K.warn(`Status check error: ${B}`);await new Promise((q)=>setTimeout(q,5000)),F++}if(!Q)K.warn("Build status polling timed out");return"timeout"}async function D30(D,X){let Y=new Set,Z=!1;if(X==="ios"){let J=Y8.join(D,"ios/App/CapApp-SPM/Package.swift");if(d8.existsSync(J)){Z=!0;let w=(await X8.readFile(J,"utf-8")).matchAll(/\.package\s*\([^)]*path:\s*["'](?:\.\.\/)*node_modules\/([^"']+)["']\s*\)/g);for(let F of w)Y.add(F[1])}else{let Q=Y8.join(D,"ios/App/Podfile");if(d8.existsSync(Q)){let F=(await X8.readFile(Q,"utf-8")).matchAll(/pod\s+['"][^'"]+['"],\s*:path\s*=>\s*['"]\.\.\/\.\.\/node_modules\/([^'"]+)['"]/g);for(let B of F)Y.add(B[1])}}}else if(X==="android"){let J=Y8.join(D,"android/capacitor.settings.gradle");if(d8.existsSync(J)){let w=(await X8.readFile(J,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let F of w){let q=F[1].replace(/\/android$/,"");Y.add(q)}}}return{packages:Y,usesSPM:Z}}function Lk(D,X,Y){let Z=D.replace(/\\/g,"/");if(Z.startsWith(`${X}/`))return!0;if(Z==="package.json"||Z==="package-lock.json"||Z.startsWith("capacitor.config."))return!0;if(Z.startsWith("resources/"))return!0;if(X==="ios"&&Z.startsWith("node_modules/@capacitor/ios/"))return!0;if(X==="android"&&Z.startsWith("node_modules/@capacitor/android/"))return!0;for(let J of Y.packages){let Q=`node_modules/${J}/`;if(X==="android"){if(Z.startsWith(`${Q}android/`))return!0}else if(X==="ios"){if(Z.startsWith(`${Q}ios/`))return!0;if(Y.usesSPM){if(Z===`${Q}Package.swift`)return!0}else if(Z.startsWith(Q)&&Z.endsWith(".podspec"))return!0}}return!1}function XX(D,X,Y,Z,J){let Q=d8.readdirSync(X);for(let w of Q){let F=Y8.join(X,w),B=Y?`${Y}/${w}`:w,q=d8.statSync(F);if(q.isDirectory()){if(w===".git"||w==="dist"||w==="build"||w===".angular"||w===".vite"||w===".gradle"||w===".idea"||w===".swiftpm")continue;if(w===Z){XX(D,F,B,Z,J);continue}if(w==="node_modules"){XX(D,F,B,Z,J);continue}if(w==="resources"){XX(D,F,B,Z,J);continue}let $=B.replace(/\\/g,"/");if(Lk(B,Z,J)||Array.from(J.packages).some((W)=>{return`node_modules/${W}/`.startsWith(`${$}/`)||$.startsWith(`node_modules/${W}`)}))XX(D,F,B,Z,J)}else if(q.isFile()){if(w===".DS_Store"||w.endsWith(".log"))continue;if(Lk(B,Z,J))D.addLocalFile(F,Y||void 0)}}}async function X30(D,X,Y){let Z=await D30(D,Y),J=new Uk.default;XX(J,D,"",Y,Z),await X8.writeFile(X,J.toBuffer())}async function Nk(D,X,Y=!1){let Z=Date.now(),J=X.verbose??!1;try{X.apikey=X.apikey||Q0(Y);let Q=await H0();if(D=D||Q?.config.appId,!D)throw Error("Missing argument, you need to provide a appId, or be in a capacitor project");if(!X.platform)throw Error("Missing required argument: --platform <ios|android>");if(X.platform!=="ios"&&X.platform!=="android")throw Error(`Invalid platform "${X.platform}". Must be "ios" or "android"`);let w=Y8.resolve(X.path||b$.cwd()),F=X.supaHost||"https://api.capgo.app",B=await K0(X.apikey,X.supaHost,X.supaAnon);await U0(B,X.apikey,["write","all"]);let q=await B1(B,D);if(!Y)K.info(`Requesting native build for ${D}`),K.info(`Platform: ${X.platform}`),K.info(`Project: ${w}`),K.info(`
381
381
  \uD83D\uDD12 Security: Credentials are never stored on Capgo servers`),K.info(" They are used only during build and deleted after"),K.info(` Builds sent directly to app stores - Capgo keeps nothing
382
- `);if(J)K.info(`API host: ${F}`);let $={};if(X.buildCertificateBase64)$.BUILD_CERTIFICATE_BASE64=X.buildCertificateBase64;if(X.buildProvisionProfileBase64)$.BUILD_PROVISION_PROFILE_BASE64=X.buildProvisionProfileBase64;if(X.buildProvisionProfileBase64Prod)$.BUILD_PROVISION_PROFILE_BASE64_PROD=X.buildProvisionProfileBase64Prod;if(X.p12Password)$.P12_PASSWORD=X.p12Password;if(X.appleKeyId)$.APPLE_KEY_ID=X.appleKeyId;if(X.appleIssuerId)$.APPLE_ISSUER_ID=X.appleIssuerId;if(X.appleKeyContent)$.APPLE_KEY_CONTENT=X.appleKeyContent;if(X.appleProfileName)$.APPLE_PROFILE_NAME=X.appleProfileName;if(X.appStoreConnectTeamId)$.APP_STORE_CONNECT_TEAM_ID=X.appStoreConnectTeamId;if(X.androidKeystoreFile)$.ANDROID_KEYSTORE_FILE=X.androidKeystoreFile;if(X.keystoreKeyAlias)$.KEYSTORE_KEY_ALIAS=X.keystoreKeyAlias;let G=!!X.keystoreKeyPassword,W=!!X.keystoreStorePassword;if(G&&!W)$.KEYSTORE_KEY_PASSWORD=X.keystoreKeyPassword,$.KEYSTORE_STORE_PASSWORD=X.keystoreKeyPassword;else if(!G&&W)$.KEYSTORE_KEY_PASSWORD=X.keystoreStorePassword,$.KEYSTORE_STORE_PASSWORD=X.keystoreStorePassword;else if(G&&W)$.KEYSTORE_KEY_PASSWORD=X.keystoreKeyPassword,$.KEYSTORE_STORE_PASSWORD=X.keystoreStorePassword;if(X.playConfigJson)$.PLAY_CONFIG_JSON=X.playConfigJson;let O=await Mk(D,X.platform,Object.keys($).length>0?$:void 0),H={app_id:D,platform:X.platform,build_mode:X.buildMode};if(!O){if(!Y)K.error("❌ No credentials found for this app and platform"),K.error(""),K.error("You must provide credentials via:"),K.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),K.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),K.error(" 3. Saved credentials file:"),K.error(` npx @capgo/cli build credentials save --appId ${D} --platform ${X.platform}`),K.error(""),K.error("Documentation:"),K.error(" https://capgo.app/docs/cli/cloud-build/credentials/");throw Error("No credentials found. Please provide credentials before building.")}let M=[];if(X.platform==="ios"){if(!O.BUILD_CERTIFICATE_BASE64)M.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)");if(!O.P12_PASSWORD&&!Y)K.warn("⚠️ P12_PASSWORD not provided - assuming certificate has no password"),K.warn(" If your certificate requires a password, provide it with --p12-password");if(!O.BUILD_PROVISION_PROFILE_BASE64)M.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)");if(!O.APPLE_KEY_ID)M.push("APPLE_KEY_ID (or --apple-key-id)");if(!O.APPLE_ISSUER_ID)M.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!O.APPLE_KEY_CONTENT)M.push("APPLE_KEY_CONTENT (or --apple-key-content)");if(!O.APP_STORE_CONNECT_TEAM_ID)M.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")}else if(X.platform==="android"){if(!O.ANDROID_KEYSTORE_FILE)M.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!O.KEYSTORE_KEY_ALIAS)M.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!O.KEYSTORE_KEY_PASSWORD&&!O.KEYSTORE_STORE_PASSWORD)M.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)");if(!O.PLAY_CONFIG_JSON&&!Y)K.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}if(M.length>0){if(!Y){K.error(`❌ Missing required credentials for ${X.platform}:`),K.error("");for(let L of M)K.error(` • ${L}`);K.error(""),K.error("Provide credentials via:"),K.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),K.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),K.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),K.error(""),K.error("Documentation:"),K.error(` https://capgo.app/docs/cli/cloud-build/${X.platform}/`)}throw Error(`Missing required credentials for ${X.platform}: ${M.join(", ")}`)}if(H.credentials=O,!Y)K.info("✓ Using credentials (merged from CLI args, env vars, and saved file)");if(J){let L=Object.keys(O).filter((C)=>O[C]);K.info(`Credentials provided: ${L.join(", ")}`)}if(!Y)K.info("Requesting build from Capgo...");let U=3,N=await s40(`${F}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:X.apikey},body:JSON.stringify(H)},U,Y);if(!N.ok){let L=await N.text();throw Error(`Failed to request build: ${N.status} - ${L}`)}let R=await N.json();if(!Y)K.success(`Build job created: ${R.job_id}`),K.info(`Status: ${R.status}`);if(J)K.info(`Upload URL: ${R.upload_url}`),K.info(`Upload expires: ${R.upload_expires_at}`);await A0(X.apikey,{channel:"native-builder",event:"Build requested",icon:"\uD83C\uDFD7️",user_id:q,tags:{"app-id":D,platform:X.platform},notify:!1}).catch();let z=Y8.join(Vk.tmpdir(),`capgo-build-${Date.now()}`);await X8.mkdir(z,{recursive:!0});let V=Y8.join(z,`${Y8.basename(w)}.zip`);try{if(!Y)K.info(`Zipping ${X.platform} project from ${w}...`);await X30(w,V,X.platform);let C=((await X8.stat(V)).size/1024/1024).toFixed(2);if(!Y)K.success(`Created zip: ${V} (${C} MB)`);if(!Y)K.info("Uploading to builder...");if(J)K.info(`Upload endpoint: ${R.upload_url}`),K.info(`File size: ${C} MB`),K.info(`Job ID: ${R.job_id}`);let k=d8.readFileSync(V),A=xD();if(!Y)A.start("Uploading bundle");if(await new Promise((n,h)=>{let E=new EJ.Upload(k,{endpoint:R.upload_url,chunkSize:5242880,metadata:{filename:Y8.basename(V),filetype:"application/zip"},headers:{authorization:X.apikey},onBeforeRequest(P){if(J){K.info(`[TUS] ${P.getMethod()} ${P.getURL()}`);let x=P.getHeader("authorization");K.info(`[TUS] Authorization header present: ${!!x}`)}},onAfterResponse(P,x){if(J){K.info(`[TUS] Response status: ${x.getStatus()}`);let _=x.getHeader("upload-offset"),g=x.getHeader("tus-resumable");K.info(`[TUS] Upload-Offset: ${_}, Tus-Resumable: ${g}`)}},onError(P){if(!Y)A.stop("Upload failed"),K.error(`Upload error: ${P.message}`);if(P instanceof EJ.DetailedError){let x=P.originalResponse?.getBody(),_=P.originalResponse?.getStatus(),g=P.originalRequest?.getURL();if(J)K.error(`[TUS] Request URL: ${g}`),K.error(`[TUS] Response status: ${_}`),K.error(`[TUS] Response body: ${x}`);let m="Unknown error";try{let a=JSON.parse(x||'{"error": "unknown error"}');m=a.status||a.error||a.message||"unknown error"}catch{m=x||P.message}h(Error(`TUS upload failed: ${m}`))}else h(Error(`TUS upload failed: ${P.message||P.toString()}`))},onProgress(P,x){let _=(P/x*100).toFixed(2);if(!Y)A.message(`Uploading ${_}%`)},onSuccess(){if(!Y)A.stop("Upload complete!");if(J)K.success("TUS upload completed successfully");n()}});if(J)K.info("[TUS] Starting upload...");E.start()}),!Y)K.info("Starting build job...");let y=await fetch(`${F}/build/start/${R.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:X.apikey},body:JSON.stringify({app_id:D})});if(!y.ok){let n=await y.text();throw Error(`Failed to start build: ${y.status} - ${n}`)}let f=await y.json();if(!Y)K.success("Build started!"),K.info("Streaming build logs...");let S,v=await o40(F,R.job_id,D,X.apikey,Y,J);if(v)S=v;else S=await e40(F,R.job_id,D,X.platform,X.apikey,Y);if(!Y)if(S==="succeeded")K.success("Build completed successfully!");else if(S==="failed")K.error("Build failed");else K.warn(`Build finished with status: ${S}`);let b=((Date.now()-Z)/1000).toFixed(2);return await A0(X.apikey,{channel:"native-builder",event:S==="succeeded"?"Build succeeded":"Build failed",icon:S==="succeeded"?"✅":"❌",user_id:q,tags:{"app-id":D,platform:X.platform,status:S||"unknown",time:b},notify:!1}).catch(),{success:S==="succeeded",jobId:R.job_id,uploadUrl:R.upload_url,status:S||f.status||R.status}}finally{await X8.rm(z,{recursive:!0,force:!0})}}catch(Q){let w=Q instanceof Error?Q.message:String(Q);if(!Y)K.error(w);return{success:!1,error:w}}}async function Y30(D,X,Y,Z){for await(let J of D){if(!Z)K.warn(`Removing ${J.name} created on ${c7(J.created_at)}`);await VJ(X,Y,J.name)}}function Z30(D,X,Y){let Z=[];for(let J of D??[]){let Q=i0(J.name);if(HQ(Q,X)&&B9(Q,Y))Z.push(J)}return Z}async function Rk(D,X,Y=!1){if(!Y)q0("Cleanup versions in Capgo");await o0(),X.apikey=X.apikey||Q0();let{bundle:Z,keep:J=4}=X,Q=X.force||!1,w=X.ignoreChannel||!1,F=await H0();if(D=b0(D,F?.config),!X.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to delete your app");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide a appid, or be in a capacitor project");throw Error("Missing appId")}let B=await K0(X.apikey,X.supaHost,X.supaAnon);if(await _D(B,D,Y),await N0(B,X.apikey,["write","all"]),await CD(B,X.apikey,D,3,Y,!0),!Y)K.info("Querying all available versions in Capgo");let q=await UJ(B,D),$=await Qk(B,D);if(!Y)K.info(`Total active versions in Capgo: ${q?.length??0}`);if(!q?.length){if(!Y)K.error("No versions found, aborting cleanup");throw Error("No versions found")}if(Z){let O=i0(Z),H=F4(O,"major");if(!Y)K.info(`Querying available versions in Capgo between ${Q8(O)} and ${Q8(H)}`);if(q=Z30(q,O,H),!Y)K.info(`Active versions in Capgo between ${Q8(O)} and ${Q8(H)}: ${q?.length??0}`)}let G=[],W=0;for(let O of q){let H=$.find((M)=>M===O.id);if(W<J||H&&!w)O.keep=H?"✅ (Linked to channel)":"✅",W+=1;else O.keep="❌",G.push(O)}if(!G.length){if(!Y)K.warn("Nothing to be removed, aborting removal...");return{removed:0,kept:W}}if(!Y)Jk(q);if(!Q)if(!Y){let O=await sD({message:"Do you want to continue removing the versions specified?"});if(c0(O)||!O)throw K.warn("Not confirmed, aborting removal..."),Error("Cleanup cancelled by user")}else throw Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");if(!Y)K.success("You have confirmed removal, removing versions now");if(await Y30(G,B,D,Y),!Y)$0("Done ✅");return{removed:G.length,kept:W}}async function Ak(D,X,Y=!1){if(!Y)q0("Check compatibility");let Z={...X,apikey:X.apikey||Q0()},J=D?void 0:await H0(),Q=b0(D,J?.config),w=Z.channel;if(!w){if(!Y)K.error("Missing argument, you need to provide a channel");throw Error("Missing channel")}if(!Z.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to access Capgo Cloud metadata");throw Error("Missing API key")}if(!Q){if(!Y)K.error("Missing argument, you need to provide an appId, or be in a capacitor project");throw Error("Missing appId")}let F=await K0(Z.apikey,Z.supaHost,Z.supaAnon);await _D(F,Q,Y),await N0(F,Z.apikey,["write","all","read","upload"]),await CD(F,Z.apikey,Q,1,Y,!0);let B=await LJ(F,Q,w,Z.packageJson,Z.nodeModules),q=B.finalCompatibility.some(($)=>!Y9($));if(!Y){let $=new MD;$.headers=["Package","Local","Remote","Status","Details"],$.theme=MD.roundTheme,$.rows=[];let G=Z.text?"OK":"✅",W=Z.text?"FAIL":"❌";for(let O of B.finalCompatibility){let{name:H,localVersion:M,remoteVersion:U}=O,N=q5(O),R=N.compatible?G:W;$.rows.push([H,M||"-",U||"-",R,N.message])}if(K.success("Compatibility Check Results"),K.info($.toString()),q){let O=B.finalCompatibility.filter((H)=>!Y9(H)).length;K.warn(`
382
+ `);if(J)K.info(`API host: ${F}`);let $={};if(X.buildCertificateBase64)$.BUILD_CERTIFICATE_BASE64=X.buildCertificateBase64;if(X.buildProvisionProfileBase64)$.BUILD_PROVISION_PROFILE_BASE64=X.buildProvisionProfileBase64;if(X.buildProvisionProfileBase64Prod)$.BUILD_PROVISION_PROFILE_BASE64_PROD=X.buildProvisionProfileBase64Prod;if(X.p12Password)$.P12_PASSWORD=X.p12Password;if(X.appleKeyId)$.APPLE_KEY_ID=X.appleKeyId;if(X.appleIssuerId)$.APPLE_ISSUER_ID=X.appleIssuerId;if(X.appleKeyContent)$.APPLE_KEY_CONTENT=X.appleKeyContent;if(X.appleProfileName)$.APPLE_PROFILE_NAME=X.appleProfileName;if(X.appStoreConnectTeamId)$.APP_STORE_CONNECT_TEAM_ID=X.appStoreConnectTeamId;if(X.androidKeystoreFile)$.ANDROID_KEYSTORE_FILE=X.androidKeystoreFile;if(X.keystoreKeyAlias)$.KEYSTORE_KEY_ALIAS=X.keystoreKeyAlias;let G=!!X.keystoreKeyPassword,W=!!X.keystoreStorePassword;if(G&&!W)$.KEYSTORE_KEY_PASSWORD=X.keystoreKeyPassword,$.KEYSTORE_STORE_PASSWORD=X.keystoreKeyPassword;else if(!G&&W)$.KEYSTORE_KEY_PASSWORD=X.keystoreStorePassword,$.KEYSTORE_STORE_PASSWORD=X.keystoreStorePassword;else if(G&&W)$.KEYSTORE_KEY_PASSWORD=X.keystoreKeyPassword,$.KEYSTORE_STORE_PASSWORD=X.keystoreStorePassword;if(X.playConfigJson)$.PLAY_CONFIG_JSON=X.playConfigJson;let O=await Mk(D,X.platform,Object.keys($).length>0?$:void 0),H={app_id:D,platform:X.platform,build_mode:X.buildMode};if(!O){if(!Y)K.error("❌ No credentials found for this app and platform"),K.error(""),K.error("You must provide credentials via:"),K.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),K.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),K.error(" 3. Saved credentials file:"),K.error(` npx @capgo/cli build credentials save --appId ${D} --platform ${X.platform}`),K.error(""),K.error("Documentation:"),K.error(" https://capgo.app/docs/cli/cloud-build/credentials/");throw Error("No credentials found. Please provide credentials before building.")}let M=[];if(X.platform==="ios"){if(!O.BUILD_CERTIFICATE_BASE64)M.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)");if(!O.P12_PASSWORD&&!Y)K.warn("⚠️ P12_PASSWORD not provided - assuming certificate has no password"),K.warn(" If your certificate requires a password, provide it with --p12-password");if(!O.BUILD_PROVISION_PROFILE_BASE64)M.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)");if(!O.APPLE_KEY_ID)M.push("APPLE_KEY_ID (or --apple-key-id)");if(!O.APPLE_ISSUER_ID)M.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!O.APPLE_KEY_CONTENT)M.push("APPLE_KEY_CONTENT (or --apple-key-content)");if(!O.APP_STORE_CONNECT_TEAM_ID)M.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")}else if(X.platform==="android"){if(!O.ANDROID_KEYSTORE_FILE)M.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!O.KEYSTORE_KEY_ALIAS)M.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!O.KEYSTORE_KEY_PASSWORD&&!O.KEYSTORE_STORE_PASSWORD)M.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)");if(!O.PLAY_CONFIG_JSON&&!Y)K.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}if(M.length>0){if(!Y){K.error(`❌ Missing required credentials for ${X.platform}:`),K.error("");for(let L of M)K.error(` • ${L}`);K.error(""),K.error("Provide credentials via:"),K.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),K.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),K.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),K.error(""),K.error("Documentation:"),K.error(` https://capgo.app/docs/cli/cloud-build/${X.platform}/`)}throw Error(`Missing required credentials for ${X.platform}: ${M.join(", ")}`)}if(H.credentials=O,!Y)K.info("✓ Using credentials (merged from CLI args, env vars, and saved file)");if(J){let L=Object.keys(O).filter((C)=>O[C]);K.info(`Credentials provided: ${L.join(", ")}`)}if(!Y)K.info("Requesting build from Capgo...");let U=3,N=await s40(`${F}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:X.apikey},body:JSON.stringify(H)},U,Y);if(!N.ok){let L=await N.text();throw Error(`Failed to request build: ${N.status} - ${L}`)}let R=await N.json();if(!Y)K.success(`Build job created: ${R.job_id}`),K.info(`Status: ${R.status}`);if(J)K.info(`Upload URL: ${R.upload_url}`),K.info(`Upload expires: ${R.upload_expires_at}`);await A0(X.apikey,{channel:"native-builder",event:"Build requested",icon:"\uD83C\uDFD7️",user_id:q,tags:{"app-id":D,platform:X.platform},notify:!1}).catch();let z=Y8.join(Vk.tmpdir(),`capgo-build-${Date.now()}`);await X8.mkdir(z,{recursive:!0});let V=Y8.join(z,`${Y8.basename(w)}.zip`);try{if(!Y)K.info(`Zipping ${X.platform} project from ${w}...`);await X30(w,V,X.platform);let C=((await X8.stat(V)).size/1024/1024).toFixed(2);if(!Y)K.success(`Created zip: ${V} (${C} MB)`);if(!Y)K.info("Uploading to builder...");if(J)K.info(`Upload endpoint: ${R.upload_url}`),K.info(`File size: ${C} MB`),K.info(`Job ID: ${R.job_id}`);let k=d8.readFileSync(V),A=xD();if(!Y)A.start("Uploading bundle");if(await new Promise((n,h)=>{let E=new EJ.Upload(k,{endpoint:R.upload_url,chunkSize:5242880,metadata:{filename:Y8.basename(V),filetype:"application/zip"},headers:{authorization:X.apikey},onBeforeRequest(P){if(J){K.info(`[TUS] ${P.getMethod()} ${P.getURL()}`);let x=P.getHeader("authorization");K.info(`[TUS] Authorization header present: ${!!x}`)}},onAfterResponse(P,x){if(J){K.info(`[TUS] Response status: ${x.getStatus()}`);let _=x.getHeader("upload-offset"),g=x.getHeader("tus-resumable");K.info(`[TUS] Upload-Offset: ${_}, Tus-Resumable: ${g}`)}},onError(P){if(!Y)A.stop("Upload failed"),K.error(`Upload error: ${P.message}`);if(P instanceof EJ.DetailedError){let x=P.originalResponse?.getBody(),_=P.originalResponse?.getStatus(),g=P.originalRequest?.getURL();if(J)K.error(`[TUS] Request URL: ${g}`),K.error(`[TUS] Response status: ${_}`),K.error(`[TUS] Response body: ${x}`);let m="Unknown error";try{let a=JSON.parse(x||'{"error": "unknown error"}');m=a.status||a.error||a.message||"unknown error"}catch{m=x||P.message}h(Error(`TUS upload failed: ${m}`))}else h(Error(`TUS upload failed: ${P.message||P.toString()}`))},onProgress(P,x){let _=(P/x*100).toFixed(2);if(!Y)A.message(`Uploading ${_}%`)},onSuccess(){if(!Y)A.stop("Upload complete!");if(J)K.success("TUS upload completed successfully");n()}});if(J)K.info("[TUS] Starting upload...");E.start()}),!Y)K.info("Starting build job...");let y=await fetch(`${F}/build/start/${R.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:X.apikey},body:JSON.stringify({app_id:D})});if(!y.ok){let n=await y.text();throw Error(`Failed to start build: ${y.status} - ${n}`)}let f=await y.json();if(!Y)K.success("Build started!"),K.info("Streaming build logs...");let S,v=await o40(F,R.job_id,D,X.apikey,Y,J);if(v)S=v;else S=await e40(F,R.job_id,D,X.platform,X.apikey,Y);if(!Y)if(S==="succeeded")K.success("Build completed successfully!");else if(S==="failed")K.error("Build failed");else K.warn(`Build finished with status: ${S}`);let b=((Date.now()-Z)/1000).toFixed(2);return await A0(X.apikey,{channel:"native-builder",event:S==="succeeded"?"Build succeeded":"Build failed",icon:S==="succeeded"?"✅":"❌",user_id:q,tags:{"app-id":D,platform:X.platform,status:S||"unknown",time:b},notify:!1}).catch(),{success:S==="succeeded",jobId:R.job_id,uploadUrl:R.upload_url,status:S||f.status||R.status}}finally{await X8.rm(z,{recursive:!0,force:!0})}}catch(Q){let w=Q instanceof Error?Q.message:String(Q);if(!Y)K.error(w);return{success:!1,error:w}}}async function Y30(D,X,Y,Z){for await(let J of D){if(!Z)K.warn(`Removing ${J.name} created on ${c7(J.created_at)}`);await VJ(X,Y,J.name)}}function Z30(D,X,Y){let Z=[];for(let J of D??[]){let Q=i0(J.name);if(HQ(Q,X)&&B9(Q,Y))Z.push(J)}return Z}async function Rk(D,X,Y=!1){if(!Y)q0("Cleanup versions in Capgo");await o0(),X.apikey=X.apikey||Q0();let{bundle:Z,keep:J=4}=X,Q=X.force||!1,w=X.ignoreChannel||!1,F=await H0();if(D=b0(D,F?.config),!X.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to delete your app");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide a appid, or be in a capacitor project");throw Error("Missing appId")}let B=await K0(X.apikey,X.supaHost,X.supaAnon);if(await _D(B,D,Y),await U0(B,X.apikey,["write","all"]),await CD(B,X.apikey,D,3,Y,!0),!Y)K.info("Querying all available versions in Capgo");let q=await UJ(B,D),$=await Qk(B,D);if(!Y)K.info(`Total active versions in Capgo: ${q?.length??0}`);if(!q?.length){if(!Y)K.error("No versions found, aborting cleanup");throw Error("No versions found")}if(Z){let O=i0(Z),H=F4(O,"major");if(!Y)K.info(`Querying available versions in Capgo between ${Q8(O)} and ${Q8(H)}`);if(q=Z30(q,O,H),!Y)K.info(`Active versions in Capgo between ${Q8(O)} and ${Q8(H)}: ${q?.length??0}`)}let G=[],W=0;for(let O of q){let H=$.find((M)=>M===O.id);if(W<J||H&&!w)O.keep=H?"✅ (Linked to channel)":"✅",W+=1;else O.keep="❌",G.push(O)}if(!G.length){if(!Y)K.warn("Nothing to be removed, aborting removal...");return{removed:0,kept:W}}if(!Y)Jk(q);if(!Q)if(!Y){let O=await sD({message:"Do you want to continue removing the versions specified?"});if(c0(O)||!O)throw K.warn("Not confirmed, aborting removal..."),Error("Cleanup cancelled by user")}else throw Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");if(!Y)K.success("You have confirmed removal, removing versions now");if(await Y30(G,B,D,Y),!Y)$0("Done ✅");return{removed:G.length,kept:W}}async function Ak(D,X,Y=!1){if(!Y)q0("Check compatibility");let Z={...X,apikey:X.apikey||Q0()},J=D?void 0:await H0(),Q=b0(D,J?.config),w=Z.channel;if(!w){if(!Y)K.error("Missing argument, you need to provide a channel");throw Error("Missing channel")}if(!Z.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to access Capgo Cloud metadata");throw Error("Missing API key")}if(!Q){if(!Y)K.error("Missing argument, you need to provide an appId, or be in a capacitor project");throw Error("Missing appId")}let F=await K0(Z.apikey,Z.supaHost,Z.supaAnon);await _D(F,Q,Y),await U0(F,Z.apikey,["write","all","read","upload"]),await CD(F,Z.apikey,Q,1,Y,!0);let B=await LJ(F,Q,w,Z.packageJson,Z.nodeModules),q=B.finalCompatibility.some(($)=>!Y9($));if(!Y){let $=new MD;$.headers=["Package","Local","Remote","Status","Details"],$.theme=MD.roundTheme,$.rows=[];let G=Z.text?"OK":"✅",W=Z.text?"FAIL":"❌";for(let O of B.finalCompatibility){let{name:H,localVersion:M,remoteVersion:U}=O,N=q5(O),R=N.compatible?G:W;$.rows.push([H,M||"-",U||"-",R,N.message])}if(K.success("Compatibility Check Results"),K.info($.toString()),q){let O=B.finalCompatibility.filter((H)=>!Y9(H)).length;K.warn(`
383
383
  ${O} package(s) are incompatible with channel "${w}"`),K.warn("An app store update may be required for these changes to take effect.")}else K.success(`
384
- All packages are compatible with channel "${w}"`)}return{finalCompatibility:B.finalCompatibility,hasIncompatible:q,resolvedAppId:Q,channel:w}}var L6=require("node:fs"),Sk=require("node:process");var c8=require("node:buffer"),vD=require("node:crypto"),Ek="aes-128-cbc",M6="base64",CJ="hex",i7=vD.constants.RSA_PKCS1_PADDING;function jJ(D){let X=vD.randomBytes(16),Y=vD.randomBytes(16),Z=X.toString(M6),J=vD.privateEncrypt({key:D,padding:i7},Y).toString(M6);return{sessionKey:Y,ivSessionKey:`${Z}:${J}`}}function p7(D,X,Y){let[Z]=Y.split(":"),J=c8.Buffer.from(Z,M6),Q=vD.createCipheriv(Ek,X,J);return Q.setAutoPadding(!0),c8.Buffer.concat([Q.update(D),Q.final()])}function Ck(D,X,Y){let[Z,J]=X.split(":"),Q=vD.publicDecrypt({key:Y,padding:i7},c8.Buffer.from(J,M6)),w=c8.Buffer.from(Z,M6),F=vD.createDecipheriv(Ek,Q,w);return F.setAutoPadding(!0),c8.Buffer.concat([F.update(D),F.final()])}function a7(D,X){return vD.privateEncrypt({key:X,padding:i7},c8.Buffer.from(D,M6)).toString(M6)}function t7(D,X){return vD.privateEncrypt({key:X,padding:i7},c8.Buffer.from(D,CJ)).toString(CJ)}function jk(D,X){return vD.publicDecrypt({key:X,padding:i7},c8.Buffer.from(D,M6)).toString(M6)}function Tk(D,X){return vD.publicDecrypt({key:X,padding:i7},c8.Buffer.from(D,CJ)).toString(CJ)}function Ik(){let{publicKey:D,privateKey:X}=vD.generateKeyPairSync("rsa",{modulusLength:2048});return{publicKey:D.export({type:"pkcs1",format:"pem"}),privateKey:X.export({type:"pkcs1",format:"pem"})}}function Pk(D){if(!D)return"";return D.replace(/-----BEGIN RSA PUBLIC KEY-----/g,"").replace(/-----END RSA PUBLIC KEY-----/g,"").replace(/\n/g,"").replace(/\r/g,"").replace(/ /g,"").substring(0,20)}var J30="5.30.0",Q30="6.30.0",w30="7.30.0";function F30(D,X){let Y=D.key||z6,Z=X.config.plugins?.CapacitorUpdater?.publicKey;if(L6.existsSync(Y))Z=L6.readFileSync(Y,"utf8");else if(!Z&&D.keyData)Z=D.keyData;return{publicKey:Z,fallbackKeyPath:Y}}async function xk(D,X,Y,Z=!1){if(!Z)q0("Decrypt zip file");try{if(await o0(),!L6.existsSync(D)){let G=`Zip not found at the path ${D}`;if(!Z)K.error(G);throw Error(G)}let J=await H0();if(!Y.key&&!L6.existsSync(z6)&&!J.config.plugins?.CapacitorUpdater?.publicKey){let G=`Public Key not found at the path ${z6} or in ${J.path}`;if(!Z)K.error(G);throw Error(G)}let{publicKey:Q,fallbackKeyPath:w}=F30(Y,J);if(!Q){let G=`Cannot find public key ${w} or as keyData option or in ${J.path}`;if(!Z)K.error(G);throw Error(G)}let F=L6.readFileSync(D),B=Ck(F,X,Y.keyData??Q),q=`${D}_decrypted.zip`;if(L6.writeFileSync(q,B),!Z)K.info(`Decrypted zip file at ${q}`);let $;if(Y.checksum){let G=await e8(B,"sha256"),W=tD(Sk.cwd()),O=await o1("@capgo/capacitor-updater",W,Y.packageJson),H=!1,M;try{M=O?i0(O):void 0}catch{M=void 0}if(M)H=!e1(M,J30,Q30,w30);if(!Z)K.info(`Decrypting checksum with ${H?"V3":"V2"} (based on updater version ${O||"unknown"})`);let U=H?Tk(Y.checksum,Y.keyData??Q):jk(Y.checksum,Y.keyData??Q);if($=G===U,!$){let N=`Checksum does not match ${G} !== ${U}`;if(!Z)K.error(N);throw Error(N)}if(!Z)K.info("Checksum matches")}if(!Z)$0("✅ done");return{outputPath:q,checksumMatches:$}}catch(J){if(!Z)K.error(`Error decrypting zip file ${p(J)}`);throw J instanceof Error?J:Error(String(J))}}async function fk(D,X,Y,Z=!1){if(!Z)q0("Delete bundle");Y.apikey=Y.apikey||Q0();let J=await H0();if(X=b0(X,J?.config),!Y.apikey){if(!Z)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!X){if(!Z)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}if(!D){if(!Z)K.error("Missing argument, you need to provide a bundleId, or be in a capacitor project");throw Error("Missing bundleId")}let Q=await K0(Y.apikey,Y.supaHost,Y.supaAnon);if(await _D(Q,X,Z),await N0(Q,Y.apikey,["write","all"]),await CD(Q,Y.apikey,X,3,Z,!0),!Z)K.info(`Deleting bundle ${X}@${D} from Capgo`),K.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever");if(await VJ(Q,X,D),!Z)K.success(`Bundle ${X}@${D} deleted in Capgo`),$0("Done");return!0}var V6=require("node:fs"),yk=require("node:process");var B30="5.30.0",q30="6.30.0",$30="7.30.0";function YX(D){console.error(p(D))}async function kk(D,X,Y,Z=!1){let{json:J}=Y,Q=!J&&!Z;if(Q)q0("Encryption"),await o0();try{let w=await H0(),F=!!w.config.plugins?.CapacitorUpdater?.privateKey,B=!!w.config.plugins?.CapacitorUpdater?.publicKey;if(F&&Q)K.warning("There is still a privateKey in the config");if(!V6.existsSync(D)){let L=`Zip not found at the path ${D}`;if(!Z)if(J)YX({error:"zip_not_found"});else K.error(`Error: ${L}`);throw Error(L)}if(!B){if(!Z)if(J)YX({error:"missing_public_key"});else K.warning("Warning: Missing Public Key in config");throw Error("Missing public key in config")}let q=Y.key||v1,$=Y.keyData||"";if(!V6.existsSync(q)&&!$){if(!Z)if(J)YX({error:"missing_key"});else K.warning(`Cannot find a private key at ${q} or as a keyData option`),K.error("Error: Missing key");throw Error("Missing private key")}else if(V6.existsSync(q))$=V6.readFileSync(q,"utf8");if($&&!$.startsWith("-----BEGIN RSA PRIVATE KEY-----")){if(!Z)if(J)YX({error:"invalid_private_key"});else K.error("The private key provided is not a valid RSA Private key");throw Error("Invalid private key format")}let G=V6.readFileSync(D),{sessionKey:W,ivSessionKey:O}=jJ($),H=p7(G,W,O),M=tD(yk.cwd()),U=await o1("@capgo/capacitor-updater",M,Y.packageJson),N=!1,R;try{R=U?i0(U):void 0}catch{R=void 0}if(R)N=!e1(R,B30,q30,$30);let z=N?t7(X,$):a7(X,$);if(Q)K.info(`Encrypting checksum with ${N?"V3":"V2"} (based on updater version ${U||"unknown"})`);let V=`${D}_encrypted.zip`;if(V6.writeFileSync(V,H),!Z)if(J)console.log(JSON.stringify({checksum:z,filename:V,ivSessionKey:O},null,2));else K.success(`Encoded Checksum: ${z}`),K.success(`ivSessionKey: ${O}`),K.success(`Encrypted zip saved at ${V}`),$0("Done ✅");return{checksum:z,filename:V,ivSessionKey:O}}catch(w){if(!Z)if(Y.json)YX(w);else K.error(`Error encrypting zip file ${p(w)}`);throw w instanceof Error?w:Error(String(w))}}var Fh=require("node:crypto"),V5=require("node:fs"),gJ=require("node:process");class g$ extends TransformStream{outChunkSize;constructor(D){let X=new Uint8Array(D),Y=0;super({transform(Z,J){let Q=0;while(Q<Z.length){let w=D-Y,F=Math.min(w,Z.length-Q);if(X.set(Z.subarray(Q,Q+F),Y),Q+=F,Y+=F,Y===D)J.enqueue(X),X=new Uint8Array(D),Y=0}},flush(Z){if(Y>0)Z.enqueue(X.subarray(0,Y))}}),this.outChunkSize=D}}function Z9(D){return D=D.trim(),D=D.replace(/<!--[\s\S]*?-->/g,""),X();function X(){return{declaration:Y(),root:Z()}}function Y(){if(!B(/^<\?xml\s*/))return;let W={attributes:{}};while(!(q()||$("?>"))){let O=Q();if(!O)return W;W.attributes[O.name]=O.value}return B(/\?>\s*/),W}function Z(){let G=B(/^<([\w-:.]+)\s*/);if(!G)return;let W={name:G[1],attributes:{},children:[]};while(!(q()||$(">")||$("?>")||$("/>"))){let H=Q();if(!H)return W;W.attributes[H.name]=H.value}if(B(/^\s*\/>\s*/))return W;B(/\??>\s*/),W.content=J();let O;while(O=Z())W.children.push(O);return B(/^<\/[\w-:.]+>\s*/),W}function J(){let G=B(/^([^<]*)/);if(G)return F(G[1]);return""}function Q(){let G=B(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(!G)return;return{name:G[1],value:F(w(G[2]))}}function w(G){return G.replace(/^['"]|['"]$/g,"")}function F(G){return G.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}function B(G){let W=D.match(G);if(!W)return;return D=D.slice(W[0].length),W}function q(){return D.length===0}function $(G){return D.startsWith(G)}}class U6 extends Error{}class V1 extends U6{}class TJ extends U6{}class m$ extends U6{bucketName;constructor(D){super(`Invalid bucket name: ${D}`),this.bucketName=D}}class N6 extends U6{objectName;constructor(D){super(`Invalid object name: ${D}`),this.objectName=D}}class $5 extends U6{constructor(){super("accessKey is required")}}class ZX extends U6{constructor(){super("secretKey is required")}}class IJ extends U6{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}}class J9 extends U6{statusCode;code;key;bucketName;resource;region;constructor(D,X,Y,Z={}){super(Y),this.statusCode=D,this.code=X,this.key=Z.key,this.bucketName=Z.bucketName,this.resource=Z.resource,this.region=Z.region}}async function uk(D){try{let Y=Z9(await D.text()).root;if(Y?.name!=="Error")throw Error("Invalid root, expected <Error>");let Z=Y.children.find((q)=>q.name==="Code")?.content??"UnknownErrorCode",J=Y.children.find((q)=>q.name==="Message")?.content??"The error message could not be determined.",Q=Y.children.find((q)=>q.name==="Key")?.content,w=Y.children.find((q)=>q.name==="BucketName")?.content,F=Y.children.find((q)=>q.name==="Resource")?.content,B=Y.children.find((q)=>q.name==="Region")?.content;return new J9(D.status,Z,J,{key:Q,bucketName:w,resource:F,region:B})}catch{return new J9(D.status,"UnrecognizedError",`Error: Unexpected response code ${D.status} ${D.statusText}. Unable to parse response as XML.`)}}function hk(D){if(typeof D!=="number"||isNaN(D))return!1;return D>=1&&D<=65535}function _k(D){if(typeof D!=="string")return!1;if(D.length<3||D.length>63)return!1;if(D.includes(".."))return!1;if(D.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/))return!1;if(D.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/))return!0;return!1}function Q9(D){if(!G30(D))return!1;if(D.length===0)return!1;return!0}function G30(D){if(typeof D!=="string")return!1;if(D.length>1024)return!1;return!0}function JX(D){return Array.from(D).map((X)=>X.toString(16).padStart(2,"0")).join("")}function G5(D=""){let X={'"':"","&quot;":"","&#34;":"","&QUOT;":"","&#x00022":""};return D.replace(/^("|&quot;|&#34;)|("|&quot;|&#34;)$/g,(Y)=>X[Y])}function c$(D){return D.get("x-amz-version-id")??null}function O5(D){let X=D.toISOString();return X.slice(0,4)+X.slice(5,7)+X.slice(8,13)+X.slice(14,16)+X.slice(17,19)+"Z"}function l$(D){return O5(D).slice(0,8)}function n$(D,X){return`${l$(X)}/${D}/s3/aws4_request`}async function PJ(D){if(!(D instanceof Uint8Array))D=new TextEncoder().encode(D);return JX(new Uint8Array(await crypto.subtle.digest("SHA-256",D)))}var O30=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"];class i$ extends WritableStream{getResult;constructor({client:D,bucketName:X,objectName:Y,partSize:Z,metadata:J}){let Q,w=1,F,B=[],q,$=[];super({start(){},async write(G,W){let H=w++;try{if(H==1&&G.length<Z){let N=await D.makeRequest({method:"PUT",headers:new Headers({...J,"Content-Length":String(G.length)}),bucketName:X,objectName:Y,payload:G});Q={etag:G5(N.headers.get("etag")??void 0),versionId:c$(N.headers)};return}if(H===1)F=(await W30({client:D,bucketName:X,objectName:Y,metadata:J})).uploadId;let M={"Content-Length":String(G.length)};for(let N of O30){let R=J[N];if(R)M[N]=R}let U=D.makeRequest({method:"PUT",query:{partNumber:H.toString(),uploadId:F},headers:new Headers(M),bucketName:X,objectName:Y,payload:G}).then((N)=>{let R=N.headers.get("etag")??"";if(R)R=R.replace(/^"/,"").replace(/"$/,"");return B.push({part:H,etag:R}),N});$.push(U.catch((N)=>{if(!q)q=N}))}catch(M){throw M}},async close(){if(Q);else if(F){if(await Promise.all($),q)throw q;B.sort((G,W)=>G.part>W.part?1:-1),Q=await H30({client:D,bucketName:X,objectName:Y,uploadId:F,etags:B})}else throw Error("Stream was closed without uploading any data.")}});this.getResult=()=>{if(Q===void 0)throw Error("Result is not ready. await the stream first.");return Q}}}async function W30(D){let Y=new Headers(D.metadata),Z="uploads",Q=await(await D.client.makeRequest({method:"POST",bucketName:D.bucketName,objectName:D.objectName,query:"uploads",headers:Y,returnBody:!0})).text(),w=Z9(Q).root;if(!w||w.name!=="InitiateMultipartUploadResult")throw Error(`Unexpected response: ${Q}`);let F=w.children.find((B)=>B.name==="UploadId")?.content;if(!F)throw Error(`Unable to get UploadId from response: ${Q}`);return{uploadId:F}}async function H30({client:D,bucketName:X,objectName:Y,uploadId:Z,etags:J}){let Q=`
384
+ All packages are compatible with channel "${w}"`)}return{finalCompatibility:B.finalCompatibility,hasIncompatible:q,resolvedAppId:Q,channel:w}}var L6=require("node:fs"),Sk=require("node:process");var c8=require("node:buffer"),vD=require("node:crypto"),Ek="aes-128-cbc",M6="base64",CJ="hex",i7=vD.constants.RSA_PKCS1_PADDING;function jJ(D){let X=vD.randomBytes(16),Y=vD.randomBytes(16),Z=X.toString(M6),J=vD.privateEncrypt({key:D,padding:i7},Y).toString(M6);return{sessionKey:Y,ivSessionKey:`${Z}:${J}`}}function p7(D,X,Y){let[Z]=Y.split(":"),J=c8.Buffer.from(Z,M6),Q=vD.createCipheriv(Ek,X,J);return Q.setAutoPadding(!0),c8.Buffer.concat([Q.update(D),Q.final()])}function Ck(D,X,Y){let[Z,J]=X.split(":"),Q=vD.publicDecrypt({key:Y,padding:i7},c8.Buffer.from(J,M6)),w=c8.Buffer.from(Z,M6),F=vD.createDecipheriv(Ek,Q,w);return F.setAutoPadding(!0),c8.Buffer.concat([F.update(D),F.final()])}function a7(D,X){return vD.privateEncrypt({key:X,padding:i7},c8.Buffer.from(D,M6)).toString(M6)}function t7(D,X){return vD.privateEncrypt({key:X,padding:i7},c8.Buffer.from(D,CJ)).toString(CJ)}function jk(D,X){return vD.publicDecrypt({key:X,padding:i7},c8.Buffer.from(D,M6)).toString(M6)}function Tk(D,X){return vD.publicDecrypt({key:X,padding:i7},c8.Buffer.from(D,CJ)).toString(CJ)}function Ik(){let{publicKey:D,privateKey:X}=vD.generateKeyPairSync("rsa",{modulusLength:2048});return{publicKey:D.export({type:"pkcs1",format:"pem"}),privateKey:X.export({type:"pkcs1",format:"pem"})}}function Pk(D){if(!D)return"";return D.replace(/-----BEGIN RSA PUBLIC KEY-----/g,"").replace(/-----END RSA PUBLIC KEY-----/g,"").replace(/\n/g,"").replace(/\r/g,"").replace(/ /g,"").substring(0,20)}var J30="5.30.0",Q30="6.30.0",w30="7.30.0";function F30(D,X){let Y=D.key||z6,Z=X.config.plugins?.CapacitorUpdater?.publicKey;if(L6.existsSync(Y))Z=L6.readFileSync(Y,"utf8");else if(!Z&&D.keyData)Z=D.keyData;return{publicKey:Z,fallbackKeyPath:Y}}async function xk(D,X,Y,Z=!1){if(!Z)q0("Decrypt zip file");try{if(await o0(),!L6.existsSync(D)){let G=`Zip not found at the path ${D}`;if(!Z)K.error(G);throw Error(G)}let J=await H0();if(!Y.key&&!L6.existsSync(z6)&&!J.config.plugins?.CapacitorUpdater?.publicKey){let G=`Public Key not found at the path ${z6} or in ${J.path}`;if(!Z)K.error(G);throw Error(G)}let{publicKey:Q,fallbackKeyPath:w}=F30(Y,J);if(!Q){let G=`Cannot find public key ${w} or as keyData option or in ${J.path}`;if(!Z)K.error(G);throw Error(G)}let F=L6.readFileSync(D),B=Ck(F,X,Y.keyData??Q),q=`${D}_decrypted.zip`;if(L6.writeFileSync(q,B),!Z)K.info(`Decrypted zip file at ${q}`);let $;if(Y.checksum){let G=await e8(B,"sha256"),W=tD(Sk.cwd()),O=await o1("@capgo/capacitor-updater",W,Y.packageJson),H=!1,M;try{M=O?i0(O):void 0}catch{M=void 0}if(M)H=!e1(M,J30,Q30,w30);if(!Z)K.info(`Decrypting checksum with ${H?"V3":"V2"} (based on updater version ${O||"unknown"})`);let U=H?Tk(Y.checksum,Y.keyData??Q):jk(Y.checksum,Y.keyData??Q);if($=G===U,!$){let N=`Checksum does not match ${G} !== ${U}`;if(!Z)K.error(N);throw Error(N)}if(!Z)K.info("Checksum matches")}if(!Z)$0("✅ done");return{outputPath:q,checksumMatches:$}}catch(J){if(!Z)K.error(`Error decrypting zip file ${p(J)}`);throw J instanceof Error?J:Error(String(J))}}async function fk(D,X,Y,Z=!1){if(!Z)q0("Delete bundle");Y.apikey=Y.apikey||Q0();let J=await H0();if(X=b0(X,J?.config),!Y.apikey){if(!Z)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!X){if(!Z)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}if(!D){if(!Z)K.error("Missing argument, you need to provide a bundleId, or be in a capacitor project");throw Error("Missing bundleId")}let Q=await K0(Y.apikey,Y.supaHost,Y.supaAnon);if(await _D(Q,X,Z),await U0(Q,Y.apikey,["write","all"]),await CD(Q,Y.apikey,X,3,Z,!0),!Z)K.info(`Deleting bundle ${X}@${D} from Capgo`),K.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever");if(await VJ(Q,X,D),!Z)K.success(`Bundle ${X}@${D} deleted in Capgo`),$0("Done");return!0}var V6=require("node:fs"),yk=require("node:process");var B30="5.30.0",q30="6.30.0",$30="7.30.0";function YX(D){console.error(p(D))}async function kk(D,X,Y,Z=!1){let{json:J}=Y,Q=!J&&!Z;if(Q)q0("Encryption"),await o0();try{let w=await H0(),F=!!w.config.plugins?.CapacitorUpdater?.privateKey,B=!!w.config.plugins?.CapacitorUpdater?.publicKey;if(F&&Q)K.warning("There is still a privateKey in the config");if(!V6.existsSync(D)){let L=`Zip not found at the path ${D}`;if(!Z)if(J)YX({error:"zip_not_found"});else K.error(`Error: ${L}`);throw Error(L)}if(!B){if(!Z)if(J)YX({error:"missing_public_key"});else K.warning("Warning: Missing Public Key in config");throw Error("Missing public key in config")}let q=Y.key||v1,$=Y.keyData||"";if(!V6.existsSync(q)&&!$){if(!Z)if(J)YX({error:"missing_key"});else K.warning(`Cannot find a private key at ${q} or as a keyData option`),K.error("Error: Missing key");throw Error("Missing private key")}else if(V6.existsSync(q))$=V6.readFileSync(q,"utf8");if($&&!$.startsWith("-----BEGIN RSA PRIVATE KEY-----")){if(!Z)if(J)YX({error:"invalid_private_key"});else K.error("The private key provided is not a valid RSA Private key");throw Error("Invalid private key format")}let G=V6.readFileSync(D),{sessionKey:W,ivSessionKey:O}=jJ($),H=p7(G,W,O),M=tD(yk.cwd()),U=await o1("@capgo/capacitor-updater",M,Y.packageJson),N=!1,R;try{R=U?i0(U):void 0}catch{R=void 0}if(R)N=!e1(R,B30,q30,$30);let z=N?t7(X,$):a7(X,$);if(Q)K.info(`Encrypting checksum with ${N?"V3":"V2"} (based on updater version ${U||"unknown"})`);let V=`${D}_encrypted.zip`;if(V6.writeFileSync(V,H),!Z)if(J)console.log(JSON.stringify({checksum:z,filename:V,ivSessionKey:O},null,2));else K.success(`Encoded Checksum: ${z}`),K.success(`ivSessionKey: ${O}`),K.success(`Encrypted zip saved at ${V}`),$0("Done ✅");return{checksum:z,filename:V,ivSessionKey:O}}catch(w){if(!Z)if(Y.json)YX(w);else K.error(`Error encrypting zip file ${p(w)}`);throw w instanceof Error?w:Error(String(w))}}var Fh=require("node:crypto"),V5=require("node:fs"),gJ=require("node:process");class g$ extends TransformStream{outChunkSize;constructor(D){let X=new Uint8Array(D),Y=0;super({transform(Z,J){let Q=0;while(Q<Z.length){let w=D-Y,F=Math.min(w,Z.length-Q);if(X.set(Z.subarray(Q,Q+F),Y),Q+=F,Y+=F,Y===D)J.enqueue(X),X=new Uint8Array(D),Y=0}},flush(Z){if(Y>0)Z.enqueue(X.subarray(0,Y))}}),this.outChunkSize=D}}function Z9(D){return D=D.trim(),D=D.replace(/<!--[\s\S]*?-->/g,""),X();function X(){return{declaration:Y(),root:Z()}}function Y(){if(!B(/^<\?xml\s*/))return;let W={attributes:{}};while(!(q()||$("?>"))){let O=Q();if(!O)return W;W.attributes[O.name]=O.value}return B(/\?>\s*/),W}function Z(){let G=B(/^<([\w-:.]+)\s*/);if(!G)return;let W={name:G[1],attributes:{},children:[]};while(!(q()||$(">")||$("?>")||$("/>"))){let H=Q();if(!H)return W;W.attributes[H.name]=H.value}if(B(/^\s*\/>\s*/))return W;B(/\??>\s*/),W.content=J();let O;while(O=Z())W.children.push(O);return B(/^<\/[\w-:.]+>\s*/),W}function J(){let G=B(/^([^<]*)/);if(G)return F(G[1]);return""}function Q(){let G=B(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(!G)return;return{name:G[1],value:F(w(G[2]))}}function w(G){return G.replace(/^['"]|['"]$/g,"")}function F(G){return G.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}function B(G){let W=D.match(G);if(!W)return;return D=D.slice(W[0].length),W}function q(){return D.length===0}function $(G){return D.startsWith(G)}}class U6 extends Error{}class V1 extends U6{}class TJ extends U6{}class m$ extends U6{bucketName;constructor(D){super(`Invalid bucket name: ${D}`),this.bucketName=D}}class N6 extends U6{objectName;constructor(D){super(`Invalid object name: ${D}`),this.objectName=D}}class $5 extends U6{constructor(){super("accessKey is required")}}class ZX extends U6{constructor(){super("secretKey is required")}}class IJ extends U6{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}}class J9 extends U6{statusCode;code;key;bucketName;resource;region;constructor(D,X,Y,Z={}){super(Y),this.statusCode=D,this.code=X,this.key=Z.key,this.bucketName=Z.bucketName,this.resource=Z.resource,this.region=Z.region}}async function uk(D){try{let Y=Z9(await D.text()).root;if(Y?.name!=="Error")throw Error("Invalid root, expected <Error>");let Z=Y.children.find((q)=>q.name==="Code")?.content??"UnknownErrorCode",J=Y.children.find((q)=>q.name==="Message")?.content??"The error message could not be determined.",Q=Y.children.find((q)=>q.name==="Key")?.content,w=Y.children.find((q)=>q.name==="BucketName")?.content,F=Y.children.find((q)=>q.name==="Resource")?.content,B=Y.children.find((q)=>q.name==="Region")?.content;return new J9(D.status,Z,J,{key:Q,bucketName:w,resource:F,region:B})}catch{return new J9(D.status,"UnrecognizedError",`Error: Unexpected response code ${D.status} ${D.statusText}. Unable to parse response as XML.`)}}function hk(D){if(typeof D!=="number"||isNaN(D))return!1;return D>=1&&D<=65535}function _k(D){if(typeof D!=="string")return!1;if(D.length<3||D.length>63)return!1;if(D.includes(".."))return!1;if(D.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/))return!1;if(D.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/))return!0;return!1}function Q9(D){if(!G30(D))return!1;if(D.length===0)return!1;return!0}function G30(D){if(typeof D!=="string")return!1;if(D.length>1024)return!1;return!0}function JX(D){return Array.from(D).map((X)=>X.toString(16).padStart(2,"0")).join("")}function G5(D=""){let X={'"':"","&quot;":"","&#34;":"","&QUOT;":"","&#x00022":""};return D.replace(/^("|&quot;|&#34;)|("|&quot;|&#34;)$/g,(Y)=>X[Y])}function c$(D){return D.get("x-amz-version-id")??null}function O5(D){let X=D.toISOString();return X.slice(0,4)+X.slice(5,7)+X.slice(8,13)+X.slice(14,16)+X.slice(17,19)+"Z"}function l$(D){return O5(D).slice(0,8)}function n$(D,X){return`${l$(X)}/${D}/s3/aws4_request`}async function PJ(D){if(!(D instanceof Uint8Array))D=new TextEncoder().encode(D);return JX(new Uint8Array(await crypto.subtle.digest("SHA-256",D)))}var O30=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"];class i$ extends WritableStream{getResult;constructor({client:D,bucketName:X,objectName:Y,partSize:Z,metadata:J}){let Q,w=1,F,B=[],q,$=[];super({start(){},async write(G,W){let H=w++;try{if(H==1&&G.length<Z){let N=await D.makeRequest({method:"PUT",headers:new Headers({...J,"Content-Length":String(G.length)}),bucketName:X,objectName:Y,payload:G});Q={etag:G5(N.headers.get("etag")??void 0),versionId:c$(N.headers)};return}if(H===1)F=(await W30({client:D,bucketName:X,objectName:Y,metadata:J})).uploadId;let M={"Content-Length":String(G.length)};for(let N of O30){let R=J[N];if(R)M[N]=R}let U=D.makeRequest({method:"PUT",query:{partNumber:H.toString(),uploadId:F},headers:new Headers(M),bucketName:X,objectName:Y,payload:G}).then((N)=>{let R=N.headers.get("etag")??"";if(R)R=R.replace(/^"/,"").replace(/"$/,"");return B.push({part:H,etag:R}),N});$.push(U.catch((N)=>{if(!q)q=N}))}catch(M){throw M}},async close(){if(Q);else if(F){if(await Promise.all($),q)throw q;B.sort((G,W)=>G.part>W.part?1:-1),Q=await H30({client:D,bucketName:X,objectName:Y,uploadId:F,etags:B})}else throw Error("Stream was closed without uploading any data.")}});this.getResult=()=>{if(Q===void 0)throw Error("Result is not ready. await the stream first.");return Q}}}async function W30(D){let Y=new Headers(D.metadata),Z="uploads",Q=await(await D.client.makeRequest({method:"POST",bucketName:D.bucketName,objectName:D.objectName,query:"uploads",headers:Y,returnBody:!0})).text(),w=Z9(Q).root;if(!w||w.name!=="InitiateMultipartUploadResult")throw Error(`Unexpected response: ${Q}`);let F=w.children.find((B)=>B.name==="UploadId")?.content;if(!F)throw Error(`Unable to get UploadId from response: ${Q}`);return{uploadId:F}}async function H30({client:D,bucketName:X,objectName:Y,uploadId:Z,etags:J}){let Q=`
385
385
  <CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
386
386
  ${J.map((G)=>` <Part><PartNumber>${G.part}</PartNumber><ETag>${G.etag}</ETag></Part>`).join(`
387
387
  `)}
@@ -390,7 +390,7 @@ All packages are compatible with channel "${w}"`)}return{finalCompatibility:B.fi
390
390
  `)+`
391
391
  `,Z.join(";").toLowerCase(),J].join(`
392
392
  `)}async function dk(D,X,Y){let Z=await PJ(D),J=n$(Y,X);return[QX,O5(X),J,Z].join(`
393
- `)}async function a$(D,X,Y){let Z=l$(D),J=await H5("AWS4"+Y,Z),Q=await H5(J,X),w=await H5(Q,"s3");return await H5(w,"aws4_request")}function t$(D,X,Y){return`${D}/${n$(X,Y)}`}async function H5(D,X){let Y=new TextEncoder,Z=await crypto.subtle.importKey("raw",D instanceof Uint8Array?D:Y.encode(D),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]),J=await crypto.subtle.sign("HMAC",Z,X instanceof Uint8Array?X:Y.encode(X));return new Uint8Array(J)}async function ck(D){if(!D.accessKey)throw new $5;if(!D.secretKey)throw new ZX;if(D.expirySeconds<1||D.expirySeconds>604800)throw new IJ;let X=new Date(D.date);X.setSeconds(X.getSeconds()+D.expirySeconds);let Y=t$(D.accessKey,D.region,D.date),Z=O5(D.date),J={"X-Amz-Algorithm":QX,"X-Amz-Credential":Y,"X-Amz-Date":Z,key:D.objectKey,...D.fields},Q=[{bucket:D.bucket},{key:D.objectKey},{"X-Amz-Algorithm":QX},{"X-Amz-Credential":Y},{"X-Amz-Date":Z}];if(D.conditions)Q.push(...D.conditions);for(let[O,H]of Object.entries(D.fields||{})){if(["key","X-Amz-Algorithm","X-Amz-Credential","X-Amz-Date"].includes(O))continue;Q.push({[O]:H})}let w={expiration:X.toISOString(),conditions:Q},F=new TextEncoder().encode(JSON.stringify(w)),B=btoa(String.fromCharCode(...F));J.policy=B;let q=B,$=await a$(D.date,D.region,D.secretKey),G=JX(await H5($,q)).toLowerCase();return J["X-Amz-Signature"]=G,{url:`${D.protocol}//${D.host}/${D.bucket}`,fields:J}}var z30=["Content-Type","Cache-Control","Content-Disposition","Content-Encoding","Content-Language","Expires","x-amz-checksum-sha256","x-amz-grant-full-control","x-amz-grant-read","x-amz-grant-read-acp","x-amz-grant-write-acp","x-amz-server-side-encryption","x-amz-storage-class","x-amz-website-redirect-location","x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5","x-amz-server-side-encryption-aws-kms-key-id","x-amz-server-side-encryption-context","x-amz-server-side-encryption-bucket-key-enabled","x-amz-request-payer","x-amz-tagging","x-amz-object-lock-mode","x-amz-object-lock-retain-until-date","x-amz-object-lock-legal-hold","x-amz-expected-bucket-owner"],M30=5242880,L30=5368709120,r$=5497558138880;class SJ{host;port;protocol;accessKey;#D;sessionToken;defaultBucket;region;userAgent="s3-lite-client";pathStyle;pathPrefix;constructor({endPoint:D,useSSL:X,port:Y,pathPrefix:Z,...J}){if(/^https?:\/\//i.test(D)){if(X!==void 0||Y!==void 0||Z!==void 0)throw new V1("useSSL/port/pathPrefix cannot be specified if endPoint is a URL.");try{let w=new URL(D);if(D=w.hostname,X=w.protocol==="https:",Y=w.port?parseInt(w.port,10):X?443:80,w.pathname&&w.pathname!=="/")Z=w.pathname.endsWith("/")?w.pathname.slice(0,-1):w.pathname}catch{throw new TJ(`Invalid endPoint URL: ${D}`)}}if(typeof D!=="string"||D.length===0)throw new TJ(`Invalid endPoint: ${D}`);if(X===void 0)X=!0;if(Y!==void 0&&!hk(Y))throw new V1(`Invalid port: ${Y}`);if(J.accessKey&&!J.secretKey)throw new V1("If specifying access key, secret key must also be provided.");if(J.accessKey&&J.accessKey.startsWith("ASIA")&&!J.sessionToken)throw new V1("If specifying temporary access key, session token must also be provided.");let Q=X?443:80;if(this.port=Y??Q,this.host=D.toLowerCase()+(this.port!==Q?`:${this.port}`:""),this.protocol=X?"https:":"http:",this.accessKey=J.accessKey,this.#D=J.secretKey??"",this.sessionToken=J.sessionToken,this.pathStyle=J.pathStyle??!0,this.pathPrefix=Z??"",this.defaultBucket=J.bucket,this.region=J.region,this.pathPrefix){if(!this.pathStyle)throw new V1("pathPrefix is incompatible with pathStyle=false");if(!this.pathPrefix.startsWith("/"))throw new V1("pathPrefix should start with /");if(this.pathPrefix.endsWith("/"))throw new V1("pathPrefix should not end with /")}}getBucketName(D){let X=D?.bucketName??this.defaultBucket;if(X===void 0||!_k(X))throw new m$(X??"");return X}buildRequestOptions(D){let X=this.getBucketName(D),Y=this.pathStyle?this.host:`${X}.${this.host}`,Z=D.headers??new Headers;Z.set("host",Y);let J=typeof D.query==="object"?new URLSearchParams(D.query).toString().replace("+","%20"):D.query,Q=this.pathStyle?`${this.pathPrefix}/${X}/${D.objectName}`:`/${D.objectName}`,w=J?`?${J}`:"",F=Q+w,B=Q.split("/").map((q)=>encodeURIComponent(q)).join("/")+w;return{headers:Z,host:Y,path:F,encodedPath:B}}async makeRequest({method:D,payload:X,...Y}){let Z=new Date,{headers:J,host:Q,path:w,encodedPath:F}=this.buildRequestOptions(Y),B=Y.statusCode??200;if(D==="POST"||D==="PUT"||D==="DELETE"){if(X===void 0)X=new Uint8Array;else if(typeof X==="string")X=new TextEncoder().encode(X);J.set("Content-Length",String(X.length))}else if(X)throw Error(`Unexpected payload on ${D} request.`);let q=await PJ(X??new Uint8Array);if(J.set("x-amz-date",O5(Z)),J.set("x-amz-content-sha256",q),this.accessKey){if(this.sessionToken)J.set("x-amz-security-token",this.sessionToken);J.set("authorization",await vk({headers:J,method:D,path:w,accessKey:this.accessKey,secretKey:this.#D,region:this.region,date:Z}))}let $=`${this.protocol}//${Q}${F}`,G=await fetch($,{method:D,headers:J,body:X});if(G.status!==B){if(G.status>=400)throw await uk(G);else if(G.status===301)throw new J9(G.status,"UnexpectedRedirect",'The server unexpectedly returned a redirect response. With AWS S3, this usually means you need to use a region-specific endpoint like "s3.us-west-2.amazonaws.com" instead of "s3.amazonaws.com"');throw new J9(G.status,"UnexpectedStatusCode",`Unexpected response code from the server (expected ${B}, got ${G.status} ${G.statusText}).`)}if(!Y.returnBody)await G.body?.getReader().read();return G}async deleteObject(D,X={}){let Y=this.getBucketName(X);if(!Q9(D))throw new N6(D);let Z=X.versionId?{versionId:X.versionId}:{},J=new Headers;if(X.governanceBypass)J.set("X-Amz-Bypass-Governance-Retention","true");await this.makeRequest({method:"DELETE",bucketName:Y,objectName:D,headers:J,query:Z,statusCode:204})}async exists(D,X){try{return await this.statObject(D,X),!0}catch(Y){if(Y instanceof J9&&Y.statusCode===404)return!1;throw Y}}getObject(D,X){return this.getPartialObject(D,{...X,offset:0,length:0})}async getPartialObject(D,{offset:X,length:Y,...Z}){let J=this.getBucketName(Z);if(!Q9(D))throw new N6(D);let Q=new Headers(Object.entries(Z.metadata??{})),w=200;if(X||Y){let B="";if(X)B=`bytes=${+X}-`;else B="bytes=0-",X=0;if(Y)B+=`${+Y+X-1}`;Q.set("Range",B),w=206}let F={...Z.responseParams,...Z.versionId?{versionId:Z.versionId}:{}};return await this.makeRequest({method:"GET",bucketName:J,objectName:D,headers:Q,query:F,statusCode:w,returnBody:!0})}getPresignedUrl(D,X,Y={}){if(!this.accessKey)throw new $5;if(!Q9(X))throw new N6(X);let{headers:Z,path:J}=this.buildRequestOptions({objectName:X,bucketName:Y.bucketName,query:Y.parameters}),Q=Y.requestDate??new Date,w=Y.expirySeconds??604800;return bk({protocol:this.protocol,headers:Z,method:D,path:J,accessKey:this.accessKey,secretKey:this.#D,sessionToken:this.sessionToken,region:this.region,date:Q,expirySeconds:w})}presignedGetObject(D,X={}){let{versionId:Y,responseParams:Z,...J}=X,Q={...Z,...Y?{versionId:Y}:{}};return this.getPresignedUrl("GET",D,{parameters:Q,...J})}async*listObjects(D={}){for await(let X of this.listObjectsGrouped({...D,delimiter:""}))if(X.type==="Object")yield X;else throw Error(`Unexpected result from listObjectsGrouped(): ${X}`)}async*listObjectsGrouped(D){let X=this.getBucketName(D),Y="",Z=D.pageSize??1000;if(Z<1||Z>1000)throw new V1("pageSize must be between 1 and 1,000.");let J=0;while(!0){let Q=D.maxResults?Math.min(Z,D.maxResults-J):Z;if(Q===0)return;let F=await(await this.makeRequest({method:"GET",bucketName:X,objectName:"",query:{"list-type":"2",prefix:D.prefix??"",delimiter:D.delimiter,"max-keys":String(Q),...Y?{"continuation-token":Y}:{}},returnBody:!0})).text(),B=Z9(F).root;if(!B||B.name!=="ListBucketResult")throw Error(`Unexpected response: ${F}`);let q=B.children.filter((W)=>W.name==="CommonPrefixes").flatMap((W)=>W.children),$=[];for(let W of q)$.push({type:"CommonPrefix",prefix:W.content??""}),J++;for(let W of B.children.filter((O)=>O.name==="Contents"))$.push({type:"Object",key:W.children.find((O)=>O.name==="Key")?.content??"",etag:G5(W.children.find((O)=>O.name==="ETag")?.content??""),size:parseInt(W.children.find((O)=>O.name==="Size")?.content??"",10),lastModified:new Date(W.children.find((O)=>O.name==="LastModified")?.content??"invalid")}),J++;$.sort((W,O)=>{let H=W.type==="Object"?W.key:W.prefix,M=O.type==="Object"?O.key:O.prefix;return H>M?1:H<M?-1:0});for(let W of $)yield W;if(B.children.find((W)=>W.name==="IsTruncated")?.content==="true"){let W=B.children.find((O)=>O.name==="NextContinuationToken")?.content;if(!W)throw Error("Unexpectedly missing continuation token, but server said there are more results.");Y=W}else return}}async putObject(D,X,Y){let Z=this.getBucketName(Y);if(!Q9(D))throw new N6(D);let J,Q;if(typeof X==="string"){let q=new TextEncoder().encode(X);if(typeof ReadableStream.from<"u")Q=ReadableStream.from([q]);else Q=new ReadableStream({start($){$.enqueue(q),$.close()}});J=q.length}else if(X instanceof Uint8Array){if(typeof ReadableStream.from<"u")Q=ReadableStream.from([X]);else Q=new ReadableStream({start(q){q.enqueue(X),q.close()}});J=X.byteLength}else if(X instanceof ReadableStream)Q=X;else throw new V1("Invalid stream/data type provided.");if(Y?.size!==void 0){if(J!==void 0&&Y?.size!==J)throw new V1(`size was specified (${Y.size}) but doesn't match auto-detected size (${J}).`);if(typeof Y.size!=="number"||Y.size<0||isNaN(Y.size))throw new V1(`invalid size specified: ${Y.size}`);else J=Y.size}let w=Y?.partSize??this.calculatePartSize(J);if(w<M30)throw new V1("Part size should be greater than 5MB");else if(w>L30)throw new V1("Part size should be less than 6MB");let F=new g$(w),B=new i$({client:this,bucketName:Z,objectName:D,partSize:w,metadata:Y?.metadata??{}});return await Q.pipeThrough(F).pipeTo(B),B.getResult()}calculatePartSize(D){if(D===void 0)D=r$;if(D>r$)throw TypeError(`size should not be more than ${r$}`);let X=67108864;while(!0){if(X*1e4>D)return X;X+=16777216}}async statObject(D,X){let Y=this.getBucketName(X);if(!Q9(D))throw new N6(D);let Z={};if(X?.versionId)Z.versionId=X.versionId;let J=await this.makeRequest({method:"HEAD",bucketName:Y,objectName:D,query:Z,headers:new Headers(X?.headers)}),Q={};for(let w of z30)if(J.headers.has(w))Q[w]=J.headers.get(w);return J.headers.forEach((w,F)=>{if(F.startsWith("x-amz-meta-"))Q[F]=J.headers.get(F)}),{type:"Object",key:D,size:parseInt(J.headers.get("content-length")??"",10),metadata:Q,lastModified:new Date(J.headers.get("Last-Modified")??"error: missing last modified"),versionId:J.headers.get("x-amz-version-id")||null,etag:G5(J.headers.get("ETag")??"")}}async copyObject(D,X,Y){let Z=this.getBucketName(Y),J=D.sourceBucketName??Z;if(!Q9(X))throw new N6(X);let Q=`${J}/${D.sourceKey}`;if(D.sourceVersionId)Q+=`?versionId=${D.sourceVersionId}`;let w=new Headers(Y?.metadata);if(Y?.metadata!==void 0)w.set("x-amz-metadata-directive","REPLACE");w.set("x-amz-copy-source",Q);let F=await this.makeRequest({method:"PUT",bucketName:Z,objectName:X,headers:w,returnBody:!0}),B=await F.text(),q=Z9(B).root;if(!q||q.name!=="CopyObjectResult")throw Error(`Unexpected response: ${B}`);let $=q.children.find((W)=>W.name==="ETag")?.content??"",G=q.children.find((W)=>W.name==="LastModified")?.content;if(G===void 0)throw Error("Unable to find <LastModified>...</LastModified> from the server.");return{copySourceVersionId:F.headers.get("x-amz-copy-source-version-id")||null,etag:G5($),lastModified:new Date(G),versionId:F.headers.get("x-amz-version-id")||null}}async bucketExists(D){try{return await this.listObjects({bucketName:D}).next(),!0}catch(X){if(X instanceof J9&&X.statusCode===404)return!1;throw X}}async makeBucket(D){await this.makeRequest({method:"PUT",bucketName:this.getBucketName({bucketName:D}),objectName:"",statusCode:200})}async removeBucket(D){await this.makeRequest({method:"DELETE",bucketName:this.getBucketName({bucketName:D}),objectName:"",statusCode:204})}presignedPostObject(D,X={}){if(!Q9(D))throw new N6(D);let Y=this.getBucketName(X);if(!Y)throw Error("Bucket name is required for presignedPost, but none was provided either to this method nor to the client constructor");let Z=X.requestDate||new Date,J=X.expirySeconds??3600;return ck({protocol:this.protocol,host:this.host,bucket:Y,objectKey:D,accessKey:this.accessKey||"",secretKey:this.#D||"",region:this.region,date:Z,expirySeconds:J,conditions:X.conditions,fields:X.fields})}}function lk(D){try{let X=i0(D);return Q8(F4(X,"patch"))}catch{let X=D.match(/^(\d+)\.(\d+)\.(\d+)/);if(X){let[,Y,Z,J]=X;return`${Y}.${Z}.${Number.parseInt(J)+1}`}return"1.0.1"}}async function nk(D,X){let Y=lk(D),Z=X?` for ${X}`:"",J=await M8({message:`How do you want to handle the version${Z}?`,options:[{value:"auto",label:`Auto: Bump patch version (${D} → ${Y})`},{value:"manual",label:"Manual: I'll provide the version number"}]});if(c0(J))return null;if(J==="auto")return K.info(`\uD83D\uDD22 Auto-bumped version from ${D} to ${Y}`),Y;let Q=await A6({message:`Current version is ${D}. Enter new version:`,validate:(w)=>{if(!w)return"Version is required";if(!w.match(/^\d+\.\d+\.\d+/))return"Please enter a valid version (x.y.z)"}});if(c0(Q))return null;return Q}function ik(D){let X=lk(D);try{let Y=i0(D);return[X,Q8(F4(Y,"minor")),`${D}-beta.1`,`${D}.1`]}catch{return[X,`${D}.1`,`${D}-beta.1`,`${D}-rc.1`]}}var K5=require("node:fs"),xJ=require("node:path");function V30(D,X){return K5.readFileSync(D,"utf8").includes(X)}function wX(D,X){let Y=K5.readdirSync(D);for(let Z of Y){let J=xJ.join(D,Z),Q=K5.statSync(J);if(Q.isDirectory()){if(wX(J,X))return!0}else if(Q.isFile()&&xJ.extname(J)===".js"){if(V30(J,X))return!0}}return!1}function fJ(D){if(K5.readdirSync(D).indexOf("index.html")>-1)return!0;return!1}var ou=require("node:buffer"),eu=require("node:crypto"),o7=require("node:fs"),Dh=require("node:os"),L5=require("node:path"),Xh=require("node:process"),bJ=require("node:stream/consumers"),Yh=require("node:zlib");var Zh=V0(su(),1),Jh=V0(qZ(),1);async function CX0(D,X){try{let Y=new URL(`${D.hostFilesApi}/files/read/attachments/${encodeURIComponent(X)}`);return Y.searchParams.set("nocache",`${Date.now()}`),(await fetch(Y.toString(),{method:"GET",headers:{range:"bytes=0-0","cache-control":"no-cache"}})).ok}catch{return!1}}var jX0=8192;async function TX0(D){let X=tD(Xh.cwd()),Y=await o1("@capgo/capacitor-updater",X,D.packageJson),Z;try{Z=Y?i0(Y):void 0}catch{Z=void 0}if(!Y||!Z)return{version:null,supportsBrotliV2:!1};let J=!e1(Z,void 0,void 0,DX);return{version:`${Z.major}.${Z.minor}.${Z.patch}`,supportsBrotliV2:J}}function IX0(D,X){if(!X)return!1;let Y=X.split(",").map((Z)=>Z.trim()).filter((Z)=>!!Z);if(Y.length===0)return!1;return Zh.isMatch(D,Y)}async function PX0(D,X,Y){let J=o7.statSync(D).size,Q=await bJ.buffer(o7.createReadStream(D));if(J===0)return{buffer:Q,useBrotli:!1};if(IX0(X,Y.noBrotliPatterns))return{buffer:Q,useBrotli:!1};if(J<jX0)return{buffer:Q,useBrotli:!1};try{let w=await bJ.buffer(o7.createReadStream(D).pipe(Yh.createBrotliCompress({})));if(w.length>=J-10)return{buffer:Q,useBrotli:!1};return{buffer:w,useBrotli:!0}}catch(w){return K.warn(`Brotli compression failed for ${D}: ${w}, using original file`),{buffer:Q,useBrotli:!1}}}async function Qh(D,X,Y,Z,J,Q,w=!1){let F=xD();F.start(J!=="v2"?"Generating the update manifest":`Generating the update manifest with ${w?"V3":"V2"} encryption`);let B=await dy(D);if(J==="v2")for(let q of B)q.hash=w?t7(q.hash,Q):a7(q.hash,Q);return F.stop("Manifest generated successfully"),await A0(X,{channel:"partial-update",event:"Generate manifest",icon:"\uD83D\uDCC2",user_id:Y,tags:{"app-id":Z},notify:!1}),B}function SX0(D){if(Dh.platform()!=="win32")return D;return L5.win32.normalize(D).split(L5.win32.sep).join(L5.posix.sep)}function xX0(D){let X=D.split("/").map((Y)=>encodeURIComponent(Y)).join("/");if(D.includes(" "))K.warn(`File "${D}" contains spaces in its name.`);return X}async function wh(D,X,Y,Z,J,Q,w){let F=xD();F.start("Preparing partial update with TUS protocol");let B=performance.now(),q=await C8(),$=!!(w.partial||w.delta||w.partialOnly||w.deltaOnly),{version:G,supportsBrotliV2:W}=await TX0(w);if(!W)throw Error(`Your project is using an older version of @capgo/capacitor-updater (${G||"unknown"}). To use Delta updates, please upgrade to version ${gy} (v5), ${my} (v6) or ${DX} (v7) or higher.`);else if(w.disableBrotli)K.info("Brotli compression disabled by user request");else if(w.noBrotliPatterns)K.info(`Files matching patterns (${w.noBrotliPatterns}) will be excluded from brotli compression`);let O=X.filter((N)=>N.file.includes(" "));if(O.length>0)throw Error(`Files with spaces in their names (${O.map((N)=>N.file).join(", ")}). Please rename the files.`);let H=0,M=X.length,U=0;try{F.message(`Uploading ${M} files using TUS protocol`);let N=async(C)=>{let k=L5.join(Y,C.file),A=SX0(C.file),y,f=!1;if(w.disableBrotli)y=await bJ.buffer(o7.createReadStream(k)),f=!1;else{let E=await PX0(k,A,w);y=E.buffer,f=E.useBrotli}let S=y;if(Q)S=p7(y,Q.sessionKey,Q.ivSessionKey);let v=A;if(f)v=`${A}.br`,U++;let b=xX0(v),n=eu.createHash("sha256").update(C.hash).digest("hex"),h;if(Q){let E=ou.Buffer.from(Q.ivSessionKey).toString("hex");h=`orgs/${J}/apps/${Z}/delta/${E}/${n}_${b}`}else h=`orgs/${J}/apps/${Z}/delta/${n}_${b}`;if(!Q&&await CX0(q,h))return H++,Promise.resolve({file_name:b,s3_path:h,file_hash:C.hash});return new Promise((E,P)=>{F.message(`Prepare upload partial file: ${A}`);let x=X9(v);new Jh.Upload(S,{endpoint:`${q.hostFilesApi}/files/upload/attachments/`,chunkSize:w.tusChunkSize,retryDelays:[0,1000,3000,5000,1e4],removeFingerprintOnSuccess:!0,metadata:{filename:h,filetype:x},headers:{Authorization:D},onError:(g)=>{let m=g.toString(),a;try{let c=m.match(/response text: (\{.*?\})/);if(c&&c[1])a=JSON.parse(c[1]).moreInfo?.requestId}catch{}let d=a?` [requestId: ${a}]`:"";K.error(`Failed to upload ${A}: ${m}${d}`),P(g)},onProgress(){let g=(H/M*100).toFixed(2);F.message(`Uploading partial update: ${g}%`)},onSuccess(){H++,E({file_name:b,s3_path:h,file_hash:C.hash})}}).start()})},R=500,z=[];for(let C=0;C<X.length;C+=R){let k=X.slice(C,C+R),A=Math.floor(C/R)+1,y=Math.ceil(X.length/R);if(y>1)F.message(`Processing batch ${A}/${y} (${k.length} files)`);let f=await Promise.all(k.map((S)=>N(S)));z.push(...f)}let L=((performance.now()-B)/1000).toFixed(2);if(F.stop(`Partial update uploaded successfully \uD83D\uDCAA in (${L} seconds)`),U>0)K.info(`${U} of ${M} files were compressed with brotli and use .br extension`);return await A0(D,{channel:"app",event:`App Partial TUS done${U>0?" with .br extension":""}`,icon:"⏫",user_id:J,tags:{"app-id":Z},notify:!1}),await A0(D,{channel:"performance",event:"Partial upload performance",icon:"\uD83D\uDE84",user_id:J,tags:{"app-id":Z,time:L},notify:!1}),z}catch(N){let z=((performance.now()-B)/1000).toFixed(2);if(F.stop(`Failed to upload Partial bundle (after ${z} seconds)`),$)throw K.error(`Error uploading partial update: ${N}`),K.error("Delta/partial upload was explicitly requested but failed. Upload aborted."),N;else return K.info(`Error uploading partial update: ${N}, This is not a critical error, the bundle has been uploaded without the partial files`),null}}function $D(D){throw K.error(D),Error(D)}function fX0(D){let X=new MD;X.headers=["Package","Local","Remote","Status","Details"],X.theme=MD.roundTheme,X.rows=[];for(let Y of D){let{name:Z,localVersion:J,remoteVersion:Q}=Y,w=q5(Y),F=w.compatible?"✅":"❌";X.rows.push([Z,J||"-",Q||"-",F,w.message])}K.info(X.toString())}async function yX0(D,X){let Y=D9("",X.packageJson),Z=X.bundle||D?.plugins?.CapacitorUpdater?.version||Y||`0.0.1-beta.${Fh.randomUUID().split("-")[0]}`;if(!m7.test(Z))$D(`Your bundle name ${Z}, is not valid it should follow semver convention : https://semver.org/`);return Z}function kX0(D){let X=D.apikey||Q0();if(!X)$D("Missing API key, you need to provide an API key to upload your bundle");return X}function uX0(D,X,Y){let Z=b0(D,Y),J=X.path||Y?.webDir;if(!Z)$D("Missing argument, you need to provide a appid or be in a capacitor project");if(!J)$D("Missing argument, you need to provide a path (--path), or be in a capacitor project");if(!V5.existsSync(J))$D(`Path ${J} does not exist, build your app first, or provide a valid path`);return{appid:Z,path:J}}function hX0(D,X){let Y=D.codeCheck;if(typeof Y>"u"||Y){if(!wX(X,"notifyAppReady"))$D(`notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready
393
+ `)}async function a$(D,X,Y){let Z=l$(D),J=await H5("AWS4"+Y,Z),Q=await H5(J,X),w=await H5(Q,"s3");return await H5(w,"aws4_request")}function t$(D,X,Y){return`${D}/${n$(X,Y)}`}async function H5(D,X){let Y=new TextEncoder,Z=await crypto.subtle.importKey("raw",D instanceof Uint8Array?D:Y.encode(D),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]),J=await crypto.subtle.sign("HMAC",Z,X instanceof Uint8Array?X:Y.encode(X));return new Uint8Array(J)}async function ck(D){if(!D.accessKey)throw new $5;if(!D.secretKey)throw new ZX;if(D.expirySeconds<1||D.expirySeconds>604800)throw new IJ;let X=new Date(D.date);X.setSeconds(X.getSeconds()+D.expirySeconds);let Y=t$(D.accessKey,D.region,D.date),Z=O5(D.date),J={"X-Amz-Algorithm":QX,"X-Amz-Credential":Y,"X-Amz-Date":Z,key:D.objectKey,...D.fields},Q=[{bucket:D.bucket},{key:D.objectKey},{"X-Amz-Algorithm":QX},{"X-Amz-Credential":Y},{"X-Amz-Date":Z}];if(D.conditions)Q.push(...D.conditions);for(let[O,H]of Object.entries(D.fields||{})){if(["key","X-Amz-Algorithm","X-Amz-Credential","X-Amz-Date"].includes(O))continue;Q.push({[O]:H})}let w={expiration:X.toISOString(),conditions:Q},F=new TextEncoder().encode(JSON.stringify(w)),B=btoa(String.fromCharCode(...F));J.policy=B;let q=B,$=await a$(D.date,D.region,D.secretKey),G=JX(await H5($,q)).toLowerCase();return J["X-Amz-Signature"]=G,{url:`${D.protocol}//${D.host}/${D.bucket}`,fields:J}}var z30=["Content-Type","Cache-Control","Content-Disposition","Content-Encoding","Content-Language","Expires","x-amz-checksum-sha256","x-amz-grant-full-control","x-amz-grant-read","x-amz-grant-read-acp","x-amz-grant-write-acp","x-amz-server-side-encryption","x-amz-storage-class","x-amz-website-redirect-location","x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5","x-amz-server-side-encryption-aws-kms-key-id","x-amz-server-side-encryption-context","x-amz-server-side-encryption-bucket-key-enabled","x-amz-request-payer","x-amz-tagging","x-amz-object-lock-mode","x-amz-object-lock-retain-until-date","x-amz-object-lock-legal-hold","x-amz-expected-bucket-owner"],M30=5242880,L30=5368709120,r$=5497558138880;class SJ{host;port;protocol;accessKey;#D;sessionToken;defaultBucket;region;userAgent="s3-lite-client";pathStyle;pathPrefix;constructor({endPoint:D,useSSL:X,port:Y,pathPrefix:Z,...J}){if(/^https?:\/\//i.test(D)){if(X!==void 0||Y!==void 0||Z!==void 0)throw new V1("useSSL/port/pathPrefix cannot be specified if endPoint is a URL.");try{let w=new URL(D);if(D=w.hostname,X=w.protocol==="https:",Y=w.port?parseInt(w.port,10):X?443:80,w.pathname&&w.pathname!=="/")Z=w.pathname.endsWith("/")?w.pathname.slice(0,-1):w.pathname}catch{throw new TJ(`Invalid endPoint URL: ${D}`)}}if(typeof D!=="string"||D.length===0)throw new TJ(`Invalid endPoint: ${D}`);if(X===void 0)X=!0;if(Y!==void 0&&!hk(Y))throw new V1(`Invalid port: ${Y}`);if(J.accessKey&&!J.secretKey)throw new V1("If specifying access key, secret key must also be provided.");if(J.accessKey&&J.accessKey.startsWith("ASIA")&&!J.sessionToken)throw new V1("If specifying temporary access key, session token must also be provided.");let Q=X?443:80;if(this.port=Y??Q,this.host=D.toLowerCase()+(this.port!==Q?`:${this.port}`:""),this.protocol=X?"https:":"http:",this.accessKey=J.accessKey,this.#D=J.secretKey??"",this.sessionToken=J.sessionToken,this.pathStyle=J.pathStyle??!0,this.pathPrefix=Z??"",this.defaultBucket=J.bucket,this.region=J.region,this.pathPrefix){if(!this.pathStyle)throw new V1("pathPrefix is incompatible with pathStyle=false");if(!this.pathPrefix.startsWith("/"))throw new V1("pathPrefix should start with /");if(this.pathPrefix.endsWith("/"))throw new V1("pathPrefix should not end with /")}}getBucketName(D){let X=D?.bucketName??this.defaultBucket;if(X===void 0||!_k(X))throw new m$(X??"");return X}buildRequestOptions(D){let X=this.getBucketName(D),Y=this.pathStyle?this.host:`${X}.${this.host}`,Z=D.headers??new Headers;Z.set("host",Y);let J=typeof D.query==="object"?new URLSearchParams(D.query).toString().replace("+","%20"):D.query,Q=this.pathStyle?`${this.pathPrefix}/${X}/${D.objectName}`:`/${D.objectName}`,w=J?`?${J}`:"",F=Q+w,B=Q.split("/").map((q)=>encodeURIComponent(q)).join("/")+w;return{headers:Z,host:Y,path:F,encodedPath:B}}async makeRequest({method:D,payload:X,...Y}){let Z=new Date,{headers:J,host:Q,path:w,encodedPath:F}=this.buildRequestOptions(Y),B=Y.statusCode??200;if(D==="POST"||D==="PUT"||D==="DELETE"){if(X===void 0)X=new Uint8Array;else if(typeof X==="string")X=new TextEncoder().encode(X);J.set("Content-Length",String(X.length))}else if(X)throw Error(`Unexpected payload on ${D} request.`);let q=await PJ(X??new Uint8Array);if(J.set("x-amz-date",O5(Z)),J.set("x-amz-content-sha256",q),this.accessKey){if(this.sessionToken)J.set("x-amz-security-token",this.sessionToken);J.set("authorization",await vk({headers:J,method:D,path:w,accessKey:this.accessKey,secretKey:this.#D,region:this.region,date:Z}))}let $=`${this.protocol}//${Q}${F}`,G=await fetch($,{method:D,headers:J,body:X});if(G.status!==B){if(G.status>=400)throw await uk(G);else if(G.status===301)throw new J9(G.status,"UnexpectedRedirect",'The server unexpectedly returned a redirect response. With AWS S3, this usually means you need to use a region-specific endpoint like "s3.us-west-2.amazonaws.com" instead of "s3.amazonaws.com"');throw new J9(G.status,"UnexpectedStatusCode",`Unexpected response code from the server (expected ${B}, got ${G.status} ${G.statusText}).`)}if(!Y.returnBody)await G.body?.getReader().read();return G}async deleteObject(D,X={}){let Y=this.getBucketName(X);if(!Q9(D))throw new N6(D);let Z=X.versionId?{versionId:X.versionId}:{},J=new Headers;if(X.governanceBypass)J.set("X-Amz-Bypass-Governance-Retention","true");await this.makeRequest({method:"DELETE",bucketName:Y,objectName:D,headers:J,query:Z,statusCode:204})}async exists(D,X){try{return await this.statObject(D,X),!0}catch(Y){if(Y instanceof J9&&Y.statusCode===404)return!1;throw Y}}getObject(D,X){return this.getPartialObject(D,{...X,offset:0,length:0})}async getPartialObject(D,{offset:X,length:Y,...Z}){let J=this.getBucketName(Z);if(!Q9(D))throw new N6(D);let Q=new Headers(Object.entries(Z.metadata??{})),w=200;if(X||Y){let B="";if(X)B=`bytes=${+X}-`;else B="bytes=0-",X=0;if(Y)B+=`${+Y+X-1}`;Q.set("Range",B),w=206}let F={...Z.responseParams,...Z.versionId?{versionId:Z.versionId}:{}};return await this.makeRequest({method:"GET",bucketName:J,objectName:D,headers:Q,query:F,statusCode:w,returnBody:!0})}getPresignedUrl(D,X,Y={}){if(!this.accessKey)throw new $5;if(!Q9(X))throw new N6(X);let{headers:Z,path:J}=this.buildRequestOptions({objectName:X,bucketName:Y.bucketName,query:Y.parameters}),Q=Y.requestDate??new Date,w=Y.expirySeconds??604800;return bk({protocol:this.protocol,headers:Z,method:D,path:J,accessKey:this.accessKey,secretKey:this.#D,sessionToken:this.sessionToken,region:this.region,date:Q,expirySeconds:w})}presignedGetObject(D,X={}){let{versionId:Y,responseParams:Z,...J}=X,Q={...Z,...Y?{versionId:Y}:{}};return this.getPresignedUrl("GET",D,{parameters:Q,...J})}async*listObjects(D={}){for await(let X of this.listObjectsGrouped({...D,delimiter:""}))if(X.type==="Object")yield X;else throw Error(`Unexpected result from listObjectsGrouped(): ${X}`)}async*listObjectsGrouped(D){let X=this.getBucketName(D),Y="",Z=D.pageSize??1000;if(Z<1||Z>1000)throw new V1("pageSize must be between 1 and 1,000.");let J=0;while(!0){let Q=D.maxResults?Math.min(Z,D.maxResults-J):Z;if(Q===0)return;let F=await(await this.makeRequest({method:"GET",bucketName:X,objectName:"",query:{"list-type":"2",prefix:D.prefix??"",delimiter:D.delimiter,"max-keys":String(Q),...Y?{"continuation-token":Y}:{}},returnBody:!0})).text(),B=Z9(F).root;if(!B||B.name!=="ListBucketResult")throw Error(`Unexpected response: ${F}`);let q=B.children.filter((W)=>W.name==="CommonPrefixes").flatMap((W)=>W.children),$=[];for(let W of q)$.push({type:"CommonPrefix",prefix:W.content??""}),J++;for(let W of B.children.filter((O)=>O.name==="Contents"))$.push({type:"Object",key:W.children.find((O)=>O.name==="Key")?.content??"",etag:G5(W.children.find((O)=>O.name==="ETag")?.content??""),size:parseInt(W.children.find((O)=>O.name==="Size")?.content??"",10),lastModified:new Date(W.children.find((O)=>O.name==="LastModified")?.content??"invalid")}),J++;$.sort((W,O)=>{let H=W.type==="Object"?W.key:W.prefix,M=O.type==="Object"?O.key:O.prefix;return H>M?1:H<M?-1:0});for(let W of $)yield W;if(B.children.find((W)=>W.name==="IsTruncated")?.content==="true"){let W=B.children.find((O)=>O.name==="NextContinuationToken")?.content;if(!W)throw Error("Unexpectedly missing continuation token, but server said there are more results.");Y=W}else return}}async putObject(D,X,Y){let Z=this.getBucketName(Y);if(!Q9(D))throw new N6(D);let J,Q;if(typeof X==="string"){let q=new TextEncoder().encode(X);if(typeof ReadableStream.from<"u")Q=ReadableStream.from([q]);else Q=new ReadableStream({start($){$.enqueue(q),$.close()}});J=q.length}else if(X instanceof Uint8Array){if(typeof ReadableStream.from<"u")Q=ReadableStream.from([X]);else Q=new ReadableStream({start(q){q.enqueue(X),q.close()}});J=X.byteLength}else if(X instanceof ReadableStream)Q=X;else throw new V1("Invalid stream/data type provided.");if(Y?.size!==void 0){if(J!==void 0&&Y?.size!==J)throw new V1(`size was specified (${Y.size}) but doesn't match auto-detected size (${J}).`);if(typeof Y.size!=="number"||Y.size<0||isNaN(Y.size))throw new V1(`invalid size specified: ${Y.size}`);else J=Y.size}let w=Y?.partSize??this.calculatePartSize(J);if(w<M30)throw new V1("Part size should be greater than 5MB");else if(w>L30)throw new V1("Part size should be less than 6MB");let F=new g$(w),B=new i$({client:this,bucketName:Z,objectName:D,partSize:w,metadata:Y?.metadata??{}});return await Q.pipeThrough(F).pipeTo(B),B.getResult()}calculatePartSize(D){if(D===void 0)D=r$;if(D>r$)throw TypeError(`size should not be more than ${r$}`);let X=67108864;while(!0){if(X*1e4>D)return X;X+=16777216}}async statObject(D,X){let Y=this.getBucketName(X);if(!Q9(D))throw new N6(D);let Z={};if(X?.versionId)Z.versionId=X.versionId;let J=await this.makeRequest({method:"HEAD",bucketName:Y,objectName:D,query:Z,headers:new Headers(X?.headers)}),Q={};for(let w of z30)if(J.headers.has(w))Q[w]=J.headers.get(w);return J.headers.forEach((w,F)=>{if(F.startsWith("x-amz-meta-"))Q[F]=J.headers.get(F)}),{type:"Object",key:D,size:parseInt(J.headers.get("content-length")??"",10),metadata:Q,lastModified:new Date(J.headers.get("Last-Modified")??"error: missing last modified"),versionId:J.headers.get("x-amz-version-id")||null,etag:G5(J.headers.get("ETag")??"")}}async copyObject(D,X,Y){let Z=this.getBucketName(Y),J=D.sourceBucketName??Z;if(!Q9(X))throw new N6(X);let Q=`${J}/${D.sourceKey}`;if(D.sourceVersionId)Q+=`?versionId=${D.sourceVersionId}`;let w=new Headers(Y?.metadata);if(Y?.metadata!==void 0)w.set("x-amz-metadata-directive","REPLACE");w.set("x-amz-copy-source",Q);let F=await this.makeRequest({method:"PUT",bucketName:Z,objectName:X,headers:w,returnBody:!0}),B=await F.text(),q=Z9(B).root;if(!q||q.name!=="CopyObjectResult")throw Error(`Unexpected response: ${B}`);let $=q.children.find((W)=>W.name==="ETag")?.content??"",G=q.children.find((W)=>W.name==="LastModified")?.content;if(G===void 0)throw Error("Unable to find <LastModified>...</LastModified> from the server.");return{copySourceVersionId:F.headers.get("x-amz-copy-source-version-id")||null,etag:G5($),lastModified:new Date(G),versionId:F.headers.get("x-amz-version-id")||null}}async bucketExists(D){try{return await this.listObjects({bucketName:D}).next(),!0}catch(X){if(X instanceof J9&&X.statusCode===404)return!1;throw X}}async makeBucket(D){await this.makeRequest({method:"PUT",bucketName:this.getBucketName({bucketName:D}),objectName:"",statusCode:200})}async removeBucket(D){await this.makeRequest({method:"DELETE",bucketName:this.getBucketName({bucketName:D}),objectName:"",statusCode:204})}presignedPostObject(D,X={}){if(!Q9(D))throw new N6(D);let Y=this.getBucketName(X);if(!Y)throw Error("Bucket name is required for presignedPost, but none was provided either to this method nor to the client constructor");let Z=X.requestDate||new Date,J=X.expirySeconds??3600;return ck({protocol:this.protocol,host:this.host,bucket:Y,objectKey:D,accessKey:this.accessKey||"",secretKey:this.#D||"",region:this.region,date:Z,expirySeconds:J,conditions:X.conditions,fields:X.fields})}}function lk(D){try{let X=i0(D);return Q8(F4(X,"patch"))}catch{let X=D.match(/^(\d+)\.(\d+)\.(\d+)/);if(X){let[,Y,Z,J]=X;return`${Y}.${Z}.${Number.parseInt(J)+1}`}return"1.0.1"}}async function nk(D,X){let Y=lk(D),Z=X?` for ${X}`:"",J=await M8({message:`How do you want to handle the version${Z}?`,options:[{value:"auto",label:`Auto: Bump patch version (${D} → ${Y})`},{value:"manual",label:"Manual: I'll provide the version number"}]});if(c0(J))return null;if(J==="auto")return K.info(`\uD83D\uDD22 Auto-bumped version from ${D} to ${Y}`),Y;let Q=await A6({message:`Current version is ${D}. Enter new version:`,validate:(w)=>{if(!w)return"Version is required";if(!w.match(/^\d+\.\d+\.\d+/))return"Please enter a valid version (x.y.z)"}});if(c0(Q))return null;return Q}function ik(D){let X=lk(D);try{let Y=i0(D);return[X,Q8(F4(Y,"minor")),`${D}-beta.1`,`${D}.1`]}catch{return[X,`${D}.1`,`${D}-beta.1`,`${D}-rc.1`]}}var K5=require("node:fs"),xJ=require("node:path");function V30(D,X){return K5.readFileSync(D,"utf8").includes(X)}function wX(D,X){let Y=K5.readdirSync(D);for(let Z of Y){let J=xJ.join(D,Z),Q=K5.statSync(J);if(Q.isDirectory()){if(wX(J,X))return!0}else if(Q.isFile()&&xJ.extname(J)===".js"){if(V30(J,X))return!0}}return!1}function fJ(D){if(K5.readdirSync(D).indexOf("index.html")>-1)return!0;return!1}var ou=require("node:buffer"),eu=require("node:crypto"),o7=require("node:fs"),Dh=require("node:os"),L5=require("node:path"),Xh=require("node:process"),bJ=require("node:stream/consumers"),Yh=require("node:zlib");var Zh=N0(su(),1),Jh=N0(qZ(),1);async function CX0(D,X){try{let Y=new URL(`${D.hostFilesApi}/files/read/attachments/${encodeURIComponent(X)}`);return Y.searchParams.set("nocache",`${Date.now()}`),(await fetch(Y.toString(),{method:"GET",headers:{range:"bytes=0-0","cache-control":"no-cache"}})).ok}catch{return!1}}var jX0=8192;async function TX0(D){let X=tD(Xh.cwd()),Y=await o1("@capgo/capacitor-updater",X,D.packageJson),Z;try{Z=Y?i0(Y):void 0}catch{Z=void 0}if(!Y||!Z)return{version:null,supportsBrotliV2:!1};let J=!e1(Z,void 0,void 0,DX);return{version:`${Z.major}.${Z.minor}.${Z.patch}`,supportsBrotliV2:J}}function IX0(D,X){if(!X)return!1;let Y=X.split(",").map((Z)=>Z.trim()).filter((Z)=>!!Z);if(Y.length===0)return!1;return Zh.isMatch(D,Y)}async function PX0(D,X,Y){let J=o7.statSync(D).size,Q=await bJ.buffer(o7.createReadStream(D));if(J===0)return{buffer:Q,useBrotli:!1};if(IX0(X,Y.noBrotliPatterns))return{buffer:Q,useBrotli:!1};if(J<jX0)return{buffer:Q,useBrotli:!1};try{let w=await bJ.buffer(o7.createReadStream(D).pipe(Yh.createBrotliCompress({})));if(w.length>=J-10)return{buffer:Q,useBrotli:!1};return{buffer:w,useBrotli:!0}}catch(w){return K.warn(`Brotli compression failed for ${D}: ${w}, using original file`),{buffer:Q,useBrotli:!1}}}async function Qh(D,X,Y,Z,J,Q,w=!1){let F=xD();F.start(J!=="v2"?"Generating the update manifest":`Generating the update manifest with ${w?"V3":"V2"} encryption`);let B=await dy(D);if(J==="v2")for(let q of B)q.hash=w?t7(q.hash,Q):a7(q.hash,Q);return F.stop("Manifest generated successfully"),await A0(X,{channel:"partial-update",event:"Generate manifest",icon:"\uD83D\uDCC2",user_id:Y,tags:{"app-id":Z},notify:!1}),B}function SX0(D){if(Dh.platform()!=="win32")return D;return L5.win32.normalize(D).split(L5.win32.sep).join(L5.posix.sep)}function xX0(D){let X=D.split("/").map((Y)=>encodeURIComponent(Y)).join("/");if(D.includes(" "))K.warn(`File "${D}" contains spaces in its name.`);return X}async function wh(D,X,Y,Z,J,Q,w){let F=xD();F.start("Preparing partial update with TUS protocol");let B=performance.now(),q=await C8(),$=!!(w.partial||w.delta||w.partialOnly||w.deltaOnly),{version:G,supportsBrotliV2:W}=await TX0(w);if(!W)throw Error(`Your project is using an older version of @capgo/capacitor-updater (${G||"unknown"}). To use Delta updates, please upgrade to version ${gy} (v5), ${my} (v6) or ${DX} (v7) or higher.`);else if(w.disableBrotli)K.info("Brotli compression disabled by user request");else if(w.noBrotliPatterns)K.info(`Files matching patterns (${w.noBrotliPatterns}) will be excluded from brotli compression`);let O=X.filter((N)=>N.file.includes(" "));if(O.length>0)throw Error(`Files with spaces in their names (${O.map((N)=>N.file).join(", ")}). Please rename the files.`);let H=0,M=X.length,U=0;try{F.message(`Uploading ${M} files using TUS protocol`);let N=async(C)=>{let k=L5.join(Y,C.file),A=SX0(C.file),y,f=!1;if(w.disableBrotli)y=await bJ.buffer(o7.createReadStream(k)),f=!1;else{let E=await PX0(k,A,w);y=E.buffer,f=E.useBrotli}let S=y;if(Q)S=p7(y,Q.sessionKey,Q.ivSessionKey);let v=A;if(f)v=`${A}.br`,U++;let b=xX0(v),n=eu.createHash("sha256").update(C.hash).digest("hex"),h;if(Q){let E=ou.Buffer.from(Q.ivSessionKey).toString("hex");h=`orgs/${J}/apps/${Z}/delta/${E}/${n}_${b}`}else h=`orgs/${J}/apps/${Z}/delta/${n}_${b}`;if(!Q&&await CX0(q,h))return H++,Promise.resolve({file_name:b,s3_path:h,file_hash:C.hash});return new Promise((E,P)=>{F.message(`Prepare upload partial file: ${A}`);let x=X9(v);new Jh.Upload(S,{endpoint:`${q.hostFilesApi}/files/upload/attachments/`,chunkSize:w.tusChunkSize,retryDelays:[0,1000,3000,5000,1e4],removeFingerprintOnSuccess:!0,metadata:{filename:h,filetype:x},headers:{Authorization:D},onError:(g)=>{let m=g.toString(),a;try{let c=m.match(/response text: (\{.*?\})/);if(c&&c[1])a=JSON.parse(c[1]).moreInfo?.requestId}catch{}let d=a?` [requestId: ${a}]`:"";K.error(`Failed to upload ${A}: ${m}${d}`),P(g)},onProgress(){let g=(H/M*100).toFixed(2);F.message(`Uploading partial update: ${g}%`)},onSuccess(){H++,E({file_name:b,s3_path:h,file_hash:C.hash})}}).start()})},R=500,z=[];for(let C=0;C<X.length;C+=R){let k=X.slice(C,C+R),A=Math.floor(C/R)+1,y=Math.ceil(X.length/R);if(y>1)F.message(`Processing batch ${A}/${y} (${k.length} files)`);let f=await Promise.all(k.map((S)=>N(S)));z.push(...f)}let L=((performance.now()-B)/1000).toFixed(2);if(F.stop(`Partial update uploaded successfully \uD83D\uDCAA in (${L} seconds)`),U>0)K.info(`${U} of ${M} files were compressed with brotli and use .br extension`);return await A0(D,{channel:"app",event:`App Partial TUS done${U>0?" with .br extension":""}`,icon:"⏫",user_id:J,tags:{"app-id":Z},notify:!1}),await A0(D,{channel:"performance",event:"Partial upload performance",icon:"\uD83D\uDE84",user_id:J,tags:{"app-id":Z,time:L},notify:!1}),z}catch(N){let z=((performance.now()-B)/1000).toFixed(2);if(F.stop(`Failed to upload Partial bundle (after ${z} seconds)`),$)throw K.error(`Error uploading partial update: ${N}`),K.error("Delta/partial upload was explicitly requested but failed. Upload aborted."),N;else return K.info(`Error uploading partial update: ${N}, This is not a critical error, the bundle has been uploaded without the partial files`),null}}function $D(D){throw K.error(D),Error(D)}function fX0(D){let X=new MD;X.headers=["Package","Local","Remote","Status","Details"],X.theme=MD.roundTheme,X.rows=[];for(let Y of D){let{name:Z,localVersion:J,remoteVersion:Q}=Y,w=q5(Y),F=w.compatible?"✅":"❌";X.rows.push([Z,J||"-",Q||"-",F,w.message])}K.info(X.toString())}async function yX0(D,X){let Y=D9("",X.packageJson),Z=X.bundle||D?.plugins?.CapacitorUpdater?.version||Y||`0.0.1-beta.${Fh.randomUUID().split("-")[0]}`;if(!m7.test(Z))$D(`Your bundle name ${Z}, is not valid it should follow semver convention : https://semver.org/`);return Z}function kX0(D){let X=D.apikey||Q0();if(!X)$D("Missing API key, you need to provide an API key to upload your bundle");return X}function uX0(D,X,Y){let Z=b0(D,Y),J=X.path||Y?.webDir;if(!Z)$D("Missing argument, you need to provide a appid or be in a capacitor project");if(!J)$D("Missing argument, you need to provide a path (--path), or be in a capacitor project");if(!V5.existsSync(J))$D(`Path ${J} does not exist, build your app first, or provide a valid path`);return{appid:Z,path:J}}function hX0(D,X){let Y=D.codeCheck;if(typeof Y>"u"||Y){if(!wX(X,"notifyAppReady"))$D(`notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready
394
394
  If you are sure your app has this code, you can use the --no-code-check option`);if(!fJ(X))$D(`index.html is missing in the root folder of ${X}`)}}async function _X0(D,X,Y,Z,J,Q){let{ignoreMetadataCheck:w,autoMinUpdateVersion:F,minUpdateVersion:B}=Y,{data:q,error:$}=await D.from("channels").select("disable_auto_update, version ( min_update_version, native_packages )").eq("name",Z).eq("app_id",J).single(),G=!!q&&q.disable_auto_update==="version_number",W,O;if(!$&&q&&q.version&&q.version.native_packages&&!w){let U=xD();U.start(`Checking bundle compatibility with channel ${Z}`);let{finalCompatibility:N,localDependencies:R}=await LJ(D,J,Z,Y.packageJson,Y.nodeModules);if(O=N,W=R,O.filter((V)=>!Y9(V)).length>0){if(U.stop(`Bundle NOT compatible with ${Z} channel`),K.warn(""),fX0(O),K.warn(""),K.warn("An app store update may be required for these changes to take effect."),F)B=Q,K.info(`Auto set min-update-version to ${B}`)}else if(F)try{let{min_update_version:V}=q.version;if(!V||!m7.test(V))$D("Invalid remote min update version, skipping auto setting compatibility");B=V,U.stop(`Auto set min-update-version to ${B}`)}catch{$D(`Cannot auto set compatibility, invalid data ${q}`)}else U.stop(`Bundle compatible with ${Z} channel`)}else if(!w){if(K.warn(`Channel ${Z} is new or it's your first upload with compatibility check, it will be ignored this time`),W=await k$(Y.packageJson,Y.nodeModules),F)B=Q,K.info(`Auto set min-update-version to ${B}`)}if(G&&!B&&!w)$D("You need to provide a min-update-version to upload a bundle to this channel");if(B){if(!m7.test(B))$D(`Your minimal version update ${B}, is not valid it should follow semver convention : https://semver.org/`)}let H=W?new Map(W.filter((U)=>!!U.native&&U.native!==void 0).map((U)=>[U.name,U])):new Map;return{nativePackages:H.size>0||!Y.ignoreMetadataCheck?Array.from(H,([U,N])=>({name:U,version:N.version,...N.ios_checksum&&{ios_checksum:N.ios_checksum},...N.android_checksum&&{android_checksum:N.android_checksum}})):void 0,minUpdateVersion:B}}async function vX0(D,X,Y,Z=!1,J=!1){let{data:Q,error:w}=await D.rpc("exist_app_versions",{appid:X,name_version:Y}).single();if(Q||w){if(Z)return K.warn(`Version ${Y} already exists - exiting gracefully due to --silent-fail option`),$0("Bundle version already exists - exiting gracefully \uD83C\uDF89"),!0;if(J){K.error(`❌ Version ${Y} already exists`);let F=ik(Y);K.info("\uD83D\uDCA1 Here are some suggestions:"),F.forEach(($,G)=>{K.info(` ${G+1}. ${$}`)});let B=await M8({message:"What would you like to do?",options:[{value:"suggest1",label:`Use ${F[0]}`},{value:"suggest2",label:`Use ${F[1]}`},{value:"suggest3",label:`Use ${F[2]}`},{value:"suggest4",label:`Use ${F[3]}`},{value:"custom",label:"Enter a custom version"},{value:"cancel",label:"Cancel upload"}]});if(c0(B)||B==="cancel")$D("Upload cancelled by user");let q;if(B==="custom"){let $=await nk(Y,"upload");if(!$)$D("Upload cancelled by user");q=$}else{let $=Number.parseInt(B.replace("suggest",""))-1;q=F[$]}return K.info(`\uD83D\uDD04 Retrying with new version: ${q}`),q}$D(`Version ${Y} already exists ${p(w)}`)}return!1}async function bX0(D,X,Y,Z,J,Q,w,F){let B,q,$="",G=null,W="none",O="",H="",M=X.keyV2,U=X.key===!1,N=xD();N.start(`Zipping bundle from ${D}`),G=await KJ(D),N.message("Calculating checksum");let R=tD(gJ.cwd()),z=await o1("@capgo/capacitor-updater",R,X.packageJson),V=!1,L;try{L=z?i0(z):void 0}catch{L=void 0}if(!z)$D("Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager");else if(L)V=!e1(L,DX);else if(z==="link:@capgo/capacitor-updater"||z==="file:.."||z==="file:../")K.warn("Using local @capgo/capacitor-updater. Assuming latest version for checksum calculation."),V=!0;if((M||X.keyDataV2||V5.existsSync(v1))&&!U||V)$=await e8(G,"sha256");else $=await e8(G,"crc32");if(N.stop(`Checksum ${V?"SHA256":"CRC32"}: ${$}`),U)K.info("Encryption ignored");else if((M||V5.existsSync(v1)||X.keyDataV2)&&!X.oldEncryption){let A=typeof M==="string"?M:v1,y=X.keyDataV2||"";if(!y&&!V5.existsSync(A))$D(`Cannot find private key ${A}`);if(await A0(Y,{channel:"app",event:"App encryption v2",icon:"\uD83D\uDD11",user_id:Z,tags:{"app-id":J},notify:!1},X.verbose),!y)y=V5.readFileSync(A).toString();let f=L&&!e1(L,"5.30.0","6.30.0","7.30.0");K.info(`Encrypting your bundle with ${f?"V3":"V2"}`);let{sessionKey:S,ivSessionKey:v}=jJ(y),b=p7(G,S,v);if($=f?t7($,y):a7($,y),B=v,q=S,W="v2",O=y,F){if(H=Pk(F),X.verbose)K.info(`[Verbose] Encryption key_id: ${H}`)}if(X.displayIvSession)K.info(`Your Iv Session key is ${B},
395
395
  keep it safe, you will need it to decrypt your bundle.
396
396
  It will be also visible in your dashboard
@@ -398,13 +398,13 @@ All packages are compatible with channel "${w}"`)}return{finalCompatibility:B.fi
398
398
  The bundle size is ${C} Mb, this may take a while to download for users
399
399
  `),K.info(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
400
400
  `),X.verbose)K.info("[Verbose] Bundle size details:"),K.info(` - Actual size: ${C} MB (${G?.byteLength} bytes)`),K.info(` - Alert threshold: ${Math.floor(w/1024/1024)} MB`),K.info(` - Maximum allowed: ${k} MB`),K.info("[Verbose] Sending 'App Too Large' event to analytics...");if(await A0(Y,{channel:"app-error",event:"App Too Large",icon:"\uD83D\uDE9B",user_id:Z,tags:{"app-id":J},notify:!1},X.verbose),X.verbose)K.info("[Verbose] Event sent successfully")}else if(X.verbose)K.info(`[Verbose] Bundle size OK: ${C} MB (under ${Math.floor(w/1024/1024)} MB alert threshold)`);if(X.verbose)K.info("[Verbose] Bundle preparation complete, returning bundle data");return{zipped:G,ivSessionKey:B,sessionKey:q,checksum:$,encryptionMethod:W,finalKeyData:O,keyId:H}}async function gX0(D,X,Y,Z,J,Q,w,F){let B=xD();B.start("Uploading Bundle");let q=performance.now(),$=!1;if(w.verbose)K.info("[Verbose] uploadBundleToCapgoCloud called:"),K.info(` - Bundle size: ${Math.floor(Q.byteLength/1024)} KB`),K.info(` - App ID: ${Y}`),K.info(` - Bundle version: ${Z}`),K.info(` - Chunk size: ${Math.floor(F/1024/1024)} MB`);if(w.dryUpload){if(B.stop(`Dry run, bundle not uploaded
401
- Bundle uploaded \uD83D\uDCAA in 0 seconds`),w.verbose)K.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let O=await C8();if(w.verbose)K.info("[Verbose] Local config retrieved for upload");if(w.multipart!==void 0&&w.multipart||w.tus!==void 0&&w.tus){if(w.multipart)K.info("Uploading bundle with multipart is deprecated, we upload with TUS instead");else K.info("Uploading bundle with TUS protocol");if(w.verbose)K.info("[Verbose] Starting TUS resumable upload..."),K.info(` - Host: ${O.hostWeb}`),K.info(` - Chunk size: ${Math.floor(F/1024/1024)} MB`);if(await cy(D,Q,J,Y,Z,B,O,F),$=!0,w.verbose)K.info("[Verbose] TUS upload completed, updating database with R2 path...");let H=`orgs/${J}/apps/${Y}/${Z}.zip`,{error:M}=await X.from("app_versions").update({r2_path:H}).eq("name",Z).eq("app_id",Y);if(M){if(K.error(`Cannot finish TUS upload ${p(M)}`),w.verbose)K.info(`[Verbose] Database update failed: ${p(M)}`);return Promise.reject(Error("Cannot finish TUS upload"))}if(w.verbose)K.info(`[Verbose] Database updated with R2 path: ${H}`)}else{if(w.verbose)K.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let H=await vy(X,Y,Z);if(!H){if(K.error("Cannot get upload url"),w.verbose)K.info("[Verbose] Failed to retrieve presigned upload URL from database");return Promise.reject(Error("Cannot get upload url"))}if(w.verbose)K.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),K.info(` - Timeout: ${w.timeout||x$}ms`),K.info(" - Retry attempts: 5"),K.info(" - Content-Type: application/zip");let M=new AbortController,U=setTimeout(()=>M.abort(),w.timeout||x$);try{let N=await fetch(H,{method:"PUT",body:Q,headers:{"Content-Type":"application/zip"},signal:M.signal});if(!N.ok)throw Error(`HTTP error! status: ${N.status}`)}finally{clearTimeout(U)}if(w.verbose)K.info("[Verbose] HTTP PUT upload completed successfully")}}catch(O){let M=((performance.now()-q)/1000).toFixed(2);if(B.stop(`Failed to upload bundle ( after ${M} seconds)`),w.verbose)K.info(`[Verbose] Upload failed after ${M} seconds`),K.info(`[Verbose] Error type: ${O instanceof Error?"Error":typeof O}`);if(O instanceof Error&&O.message.includes("HTTP error"))try{let U=O.message.match(/status: (\d+)/),N=U?U[1]:"unknown";K.error(`Upload failed with status ${N}: ${O.message}`)}catch{K.error(`Upload failed: ${O.message}`)}else{if(w.verbose)K.info(`[Verbose] Non-HTTP error: ${p(O)}`);if(!w.tus)K.error(`Cannot upload bundle ( try again with --tus option) ${p(O)}`);else K.error(`Cannot upload bundle please contact support if the issue persists ${p(O)}`)}if(w.verbose)K.info("[Verbose] Cleaning up failed version from database...");if(await ly(X,Y,Z),w.verbose)K.info("[Verbose] Failed version cleaned up");throw O instanceof Error?O:Error(String(O))}let W=((performance.now()-q)/1000).toFixed(2);if(B.stop(`Bundle uploaded \uD83D\uDCAA in (${W} seconds)`),w.verbose)K.info("[Verbose] Upload successful:"),K.info(` - Upload time: ${W} seconds`),K.info(` - Upload method: ${$?"TUS (resumable)":"Standard HTTP PUT"}`),K.info(` - Bundle size: ${Math.floor(Q.byteLength/1024)} KB`),K.info("[Verbose] Sending performance event...");if(await A0(D,{channel:"performance",event:$?"TUS upload zip performance":"Upload zip performance",icon:"\uD83D\uDE84",user_id:J,tags:{"app-id":Y,time:W},notify:!1},w.verbose),w.verbose)K.info("[Verbose] Performance event sent successfully")}async function mX0(D,X,Y){let{data:Z,error:J}=await D.from("channels").select("version ( id, name, deleted )").eq("app_id",X).eq("name",Y);if(J){K.error(`Cannot delete linked bundle on upload ${p(J)}`);return}if(Z.length===0){K.warn("No linked bundle found in the channel you are trying to upload to");return}let Q=Z[0].version;if(Q.deleted){K.warn("The linked bundle is already deleted");return}let{error:w}=await D.from("app_versions").update({deleted:!0}).eq("id",Q.id);if(w){K.error(`Cannot delete linked bundle on upload ${p(w)}`);return}K.info("Linked bundle deleted")}async function dX0(D,X,Y,Z,J,Q,w,F,B,q){let{data:$}=await D.rpc("get_app_versions",{apikey:X,name_version:Z,appid:F}).single();if(!$)$D("Cannot get version id, cannot set channel");let{data:G}=await D.rpc("is_allowed_capgkey",{apikey:X,keymode:["write","all"]}).single();if(G){let{error:W,data:O}=await zJ(D,{name:J,app_id:F,created_by:Q,version:$,owner_org:w,...q?{allow_device_self_set:!0}:{}});if(W)$D(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${p(W)}`);let H=`${B.hostWeb}/app/${F}/channel/${O.id}`;if(O?.public)K.info("Your update is now available in your public channel \uD83C\uDF89");else if(O?.id)K.info(`Link device to this bundle to try it: ${H}`);if(Y)K.info(`Bundle url: ${H}`)}else K.warn("The upload key is not allowed to set the version in the channel")}async function cX0(D,X,Y){let{error:Z,data:J}=await X.from("apps").select("default_upload_channel").eq("app_id",D).single();if(Z)return K.warn("Cannot find default upload channel"),K.info(`You can set it here: ${Y}/app/${D}/info`),null;return J.default_upload_channel}async function GG(D,X,Y=!1){if(!Y)q0(`Uploading with CLI version ${o8.version}`);let Z,J=B5();await o0();let{s3Region:Q,s3Apikey:w,s3Apisecret:F,s3BucketName:B,s3Endpoint:q,s3Port:$,s3SSL:G}=X;if(X.verbose)K.info("[Verbose] Starting upload process with options:"),K.info(` - API key: ${X.apikey?"provided":"from saved key"}`),K.info(` - Path: ${X.path||"from capacitor config"}`),K.info(` - Channel: ${X.channel||"from default upload channel"}`),K.info(` - Bundle: ${X.bundle||"auto-detected"}`),K.info(` - External: ${X.external||"false"}`),K.info(` - Encryption: ${X.keyV2||X.keyDataV2?"v2":X.key===!1?"disabled":"auto"}`),K.info(` - Upload method: ${X.tus?"TUS":X.zip?"ZIP":"auto"}`),K.info(` - Delta updates: ${X.delta||X.partial?"enabled":"disabled"}`);let W=kX0(X);if(X.verbose)K.info("[Verbose] API key retrieved successfully");let O=await H0();if(X.verbose)K.info("[Verbose] Capacitor config loaded successfully");let H=await xy();if(X.verbose)K.info("[Verbose] Remote file config retrieved:"),K.info(` - Max upload length: ${Math.floor(H.maxUploadLength/1024/1024)} MB`),K.info(` - Alert upload size: ${Math.floor(H.alertUploadSize/1024/1024)} MB`),K.info(` - TUS upload: ${H.TUSUpload?"enabled":"disabled"}`),K.info(` - TUS upload forced: ${H.TUSUploadForced?"yes":"no"}`),K.info(` - Partial upload: ${H.partialUpload?"enabled":"disabled"}`),K.info(` - Max chunk size: ${Math.floor(H.maxChunkSize/1024/1024)} MB`);let{appid:M,path:U}=uX0(D,X,O.config);if(X.verbose)K.info(`[Verbose] App ID: ${M}, Build path: ${U}`);let N=await yX0(O.config,X);if(X.verbose)K.info(`[Verbose] Bundle version: ${N}`);let R=X.external?"external":"r2-direct",z="none";if(X.autoSetBundle){if(await Py({version:N}),X.verbose)K.info("[Verbose] Auto-set bundle version in capacitor.config.json")}if(hX0(X,U),X.verbose)K.info("[Verbose] Code check passed (notifyAppReady found and index.html present)");K.info(`Upload ${M}@${N} started from path "${U}" to Capgo cloud`);let V=await C8();if(X.verbose)K.info(`[Verbose] Local config loaded: host=${V.hostWeb}`);if(X.supaHost&&X.supaAnon){if(K.info("Using custom supabase instance from provided options"),V.supaHost=X.supaHost,V.supaKey=X.supaAnon,X.verbose)K.info(`[Verbose] Custom Supabase host: ${X.supaHost}`)}let L=await K0(W,X.supaHost,X.supaAnon);if(X.verbose)K.info("[Verbose] Supabase client created successfully");await _D(L,M,Y);let C=await N0(L,W,["write","all","upload"]);if(X.verbose)K.info(`[Verbose] User verified successfully, user_id: ${C}`);let k=X.channel||await cX0(M,L,V.hostWeb)||"production";if(X.verbose)K.info(`[Verbose] Target channel: ${k}`);let A=await B1(L,M);if(X.verbose)K.info(`[Verbose] Organization ID: ${A}`);if(await uy(L,A,o8.version),X.verbose)K.info("[Verbose] Remote CLI messages checked");if(await _y(L,A,W,M,!0),X.verbose)K.info("[Verbose] Plan validation passed");if(X.verbose)K.info("[Verbose] Trial check completed");if(X.verbose)K.info(`[Verbose] Checking compatibility with channel ${k}...`);let{nativePackages:y,minUpdateVersion:f}=await _X0(L,J,X,k,M,N);if(X.verbose)K.info("[Verbose] Compatibility check completed:"),K.info(` - Native packages: ${y?y.length:0}`),K.info(` - Min update version: ${f||"none"}`);if(X.verbose)K.info(`[Verbose] Checking if version ${N} already exists...`);let S=!Y,v=await vX0(L,M,N,X.versionExistsOk,S);if(X.verbose)K.info(`[Verbose] Version exists check: ${v?typeof v==="string"?`retry with ${v}`:"yes (skipping)":"no (continuing)"}`);if(v===!0)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:N,checksum:null,encryptionMethod:z,storageProvider:R};if(typeof v==="string")return K.info(`Retrying upload with new version: ${v}`),GG(D,{...X,bundle:v},Y);if(X.external&&!X.external.startsWith("https://"))$D(`External link should should start with "https://" current is "${X.external}"`);if(X.deleteLinkedBundleOnUpload)K.warn("Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the channel you are trying to upload to."),K.warn("Please make sure you want to do this, if you are not sure, please do not use this option.");let b={name:N,app_id:M,session_key:void 0,external_url:X.external,storage_provider:R,min_update_version:f,native_packages:y,owner_org:A,user_id:C,checksum:void 0,link:X.link||null,comment:X.comment||null,key_id:void 0,cli_version:o8.version},n=null,h="";if(!X.external){if(X.verbose)K.info(`[Verbose] Preparing bundle file from path: ${U}`);let c=O.config?.plugins?.CapacitorUpdater?.publicKey,{zipped:o,ivSessionKey:I,checksum:j,sessionKey:l,encryptionMethod:u,finalKeyData:w0,keyId:i}=await bX0(U,X,W,A,M,H.maxUploadLength,H.alertUploadSize,c);if(b.session_key=I,b.checksum=j,b.key_id=i||void 0,Z=l,n=o,z=u,h=w0,X.verbose)K.info("[Verbose] Bundle prepared:"),K.info(` - Size: ${Math.floor((o?.byteLength??0)/1024)} KB`),K.info(` - Checksum: ${j}`),K.info(` - Encryption: ${u}`),K.info(` - IV Session Key: ${I?"present":"none"}`),K.info(` - Key ID: ${i||"none"}`);if(!X.ignoreChecksumCheck){if(X.verbose)K.info("[Verbose] Checking for duplicate checksum...");if(await ay(L,M,k,j),X.verbose)K.info("[Verbose] Checksum is unique")}}else{if(X.verbose)K.info(`[Verbose] Using external URL: ${X.external}`);if(await A0(W,{channel:"app",event:"App external",icon:"\uD83D\uDCE4",user_id:A,tags:{"app-id":M},notify:!1},X.verbose),b.session_key=X.ivSessionKey,b.checksum=X.encryptedChecksum,X.verbose)K.info("[Verbose] External bundle configured:"),K.info(` - URL: ${X.external}`),K.info(` - IV Session Key: ${X.ivSessionKey?"provided":"none"}`),K.info(` - Encrypted Checksum: ${X.encryptedChecksum?"provided":"none"}`)}if(X.zip){if(X.tus=!1,X.verbose)K.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")}else if(!H.TUSUpload||X.external){if(X.tus=!1,X.verbose)K.info("[Verbose] Upload method: Standard (TUS not available or external URL)")}else if(X.tus=X.tus||H.TUSUploadForced,X.verbose)K.info(`[Verbose] Upload method: ${X.tus?"TUS (resumable)":"Standard"}`);if(!H.partialUpload||X.external){if(X.delta=!1,X.verbose&&X.external)K.info("[Verbose] Delta updates disabled (not available with external URLs)")}else if(X.delta=X.delta||X.partial||X.deltaOnly||X.partialOnly||H.partialUploadForced,X.verbose)K.info(`[Verbose] Delta updates: ${X.delta?"enabled":"disabled"}`);if(X.encryptPartial&&z==="v1")$D("You cannot encrypt the partial update if you are not using the v2 encryption method");let E="5.30.0",P="6.30.0",x="7.30.0",_=!1;if(X.delta&&z==="v2"&&!X.encryptPartial){let c=tD(gJ.cwd()),o=await o1("@capgo/capacitor-updater",c,X.packageJson),I;try{I=o?i0(o):void 0}catch{I=void 0}if(o&&I&&sG(I,i0("6.14.4"))){if(K.info(`Auto-enabling partial update encryption for updater version ${I} (> 6.14.4)`),X.verbose)K.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4");X.encryptPartial=!0}}if(X.delta&&(X.encryptPartial||z==="v2")){let c=tD(gJ.cwd()),o=await o1("@capgo/capacitor-updater",c,X.packageJson),I;try{I=o?i0(o):void 0}catch{I=void 0}if(o&&I){if(_=!e1(I,E,P,x),X.verbose&&_)K.info(`[Verbose] Using hex checksum format for updater version ${I}`)}}if(X.verbose&&X.delta)K.info("[Verbose] Preparing delta/partial update manifest...");let g=X.delta?await Qh(U,W,A,M,X.encryptPartial?z:"none",h,_):[];if(X.verbose&&X.delta)K.info(`[Verbose] Delta manifest prepared with ${g.length} files`);if(X.verbose)K.info("[Verbose] Creating version record in database...");let{error:m}=await f$(L,b);if(m)$D(`Cannot add bundle ${p(m)}`);if(X.verbose)K.info("[Verbose] Version record created successfully");if(X.tusChunkSize&&X.tusChunkSize>H.maxChunkSize)K.error(`Chunk size ${X.tusChunkSize} is greater than the maximum chunk size ${H.maxChunkSize}, using the maximum chunk size`),X.tusChunkSize=H.maxChunkSize;else if(!X.tusChunkSize)X.tusChunkSize=H.maxChunkSize;if(X.verbose)K.info(`[Verbose] TUS chunk size: ${Math.floor(X.tusChunkSize/1024/1024)} MB`);if(n&&(B||q||Q||w||F||$||G)){if(!B||!q||!Q||!w||!F||!$)$D("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret");if(K.info("Uploading to S3"),X.verbose)K.info("[Verbose] S3 configuration:"),K.info(` - Endpoint: ${q}`),K.info(` - Region: ${Q}`),K.info(` - Bucket: ${B}`),K.info(` - Port: ${$}`),K.info(` - SSL: ${G?"enabled":"disabled"}`);let c=G?`https://${q}`:`http://${q}`,o=new SJ({endPoint:q,region:Q,port:$,pathStyle:!0,bucket:B,accessKey:w,secretKey:F}),I=`${M}-${N}`,j=encodeURIComponent(I);if(X.verbose)K.info(`[Verbose] Uploading to S3 as: ${I}`);if(await o.putObject(I,Uint8Array.from(n)),b.external_url=`${c}/${j}`,b.storage_provider="external",X.verbose)K.info(`[Verbose] S3 upload complete, external URL: ${b.external_url}`)}else if(n){if(!X.partialOnly&&!X.deltaOnly){if(X.verbose)K.info("[Verbose] Starting full bundle upload to Capgo Cloud...");await gX0(W,L,M,N,A,n,X,X.tusChunkSize)}else if(X.verbose)K.info("[Verbose] Skipping full bundle upload (delta-only mode)");let c=null;try{if(X.dryUpload){if(X.delta=!1,X.verbose)K.info("[Verbose] Dry upload mode: skipping delta upload")}let I=b.session_key&&X.encryptPartial&&Z?{sessionKey:Z,ivSessionKey:b.session_key}:void 0;if(X.verbose&&X.delta)K.info("[Verbose] Starting delta/partial file upload..."),K.info(` - Manifest entries: ${g.length}`),K.info(` - Encryption: ${I?"enabled":"disabled"}`);if(c=X.delta?await wh(W,g,U,M,A,I,X):null,X.verbose&&c)K.info(`[Verbose] Delta upload complete with ${c.length} files`)}catch(I){if(!!(X.partial||X.delta||X.partialOnly||X.deltaOnly))throw I;if(K.info(`Failed to upload partial files to capgo cloud. Error: ${p(I)}. This is not a critical error, the bundle has been uploaded without the partial files`),X.verbose)K.info(`[Verbose] Delta upload error details: ${p(I)}`)}if(b.storage_provider="r2",b.manifest=c,X.verbose)K.info("[Verbose] Updating version record with storage provider and manifest...");let{error:o}=await f$(L,b);if(o)$D(`Cannot update bundle ${p(o)}`);if(X.verbose)K.info("[Verbose] Version record updated successfully")}if(X.verbose)K.info("[Verbose] Checking app permissions...");let a=await CD(L,W,M,2,!1,!0);if(X.verbose)K.info("[Verbose] Permissions:"),K.info(` - Upload: ${d7(a,2)?"yes":"no"}`),K.info(` - Write: ${d7(a,3)?"yes":"no"}`),K.info(` - Admin: ${d7(a,4)?"yes":"no"}`);if(X.deleteLinkedBundleOnUpload&&d7(a,3)){if(X.verbose)K.info(`[Verbose] Deleting linked bundle in channel ${k}...`);await mX0(L,M,k)}else if(X.deleteLinkedBundleOnUpload)K.warn("Cannot delete linked bundle on upload as a upload organization member");if(d7(a,3)){if(X.verbose)K.info(`[Verbose] Setting bundle ${N} to channel ${k}...`);if(await dX0(L,W,!!X.bundleUrl,N,k,C,A,M,V,X.selfAssign),X.verbose)K.info("[Verbose] Channel updated successfully")}else K.warn("Cannot set channel as a upload organization member");if(X.verbose)K.info("[Verbose] Sending upload event...");await A0(W,{channel:"app",event:"App Uploaded",icon:"⏫",user_id:A,tags:{"app-id":M},notify:!1},X.verbose);let d={success:!0,bundle:N,checksum:b.checksum??null,encryptionMethod:z,sessionKey:Z?Z.toString("base64"):void 0,ivSessionKey:typeof b.session_key==="string"?b.session_key:void 0,storageProvider:b.storage_provider};if(X.verbose)K.info("[Verbose] Upload completed successfully:"),K.info(` - Bundle: ${d.bundle}`),K.info(` - Checksum: ${d.checksum}`),K.info(` - Encryption: ${d.encryptionMethod}`),K.info(` - Storage: ${d.storageProvider}`);if(Y&&!d.skipped)$0("Time to share your update to the world \uD83C\uDF0D");return d}var Bh=require("node:crypto"),mJ=require("node:fs"),qh=require("node:process");var lX0=20;function nX0(D){console.log(JSON.stringify(D,null,2))}function GX(D){console.error(p(D))}async function $h(D,X,Y=!1){let{json:Z}=X,{bundle:J,path:Q}=X,w=!Z&&!Y;try{if(w)await o0();let F=await H0(),B=b0(D,F?.config),q=Bh.randomUUID().split("-")[0],$=D9("",X.packageJson);if(J=J||$||`0.0.1-beta.${q}`,w)q0(`Zipping ${B}@${J}`);if(J&&!m7.test(J)){let C=`Your bundle name ${J}, is not valid it should follow semver convention : https://semver.org/`;if(!Y)if(Z)GX({error:"invalid_semver"});else K.error(C);throw Error("Invalid bundle version format")}if(Q=Q||F?.config?.webDir,!B||!J||!Q){if(!Y)if(Z)GX({error:"missing_argument"});else K.error("Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project");throw Error("Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project")}if(w)K.info(`Started from path "${Q}"`);if(typeof X.codeCheck>"u"?!0:X.codeCheck){if(!wX(Q,"notifyAppReady")){if(!Y)if(Z)GX({error:"notifyAppReady_not_in_source_code"});else K.error("notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready");throw Error("notifyAppReady() is missing in build folder")}if(!fJ(Q)){if(!Y)if(Z)GX({error:"index_html_not_found"});else K.error(`index.html is missing in the root folder of ${Q}`);throw Error("index.html is missing in root folder")}}let W=await KJ(Q);if(w)K.info(`Zipped ${W.byteLength} bytes`);let O=w?xD():null;if(O)O.start("Calculating checksum");let H=tD(qh.cwd()),M=await o1("@capgo/capacitor-updater",H,X.packageJson);if(!M){if(!Y)K.warn("Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager");throw Error("Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager")}let U=!1,N;try{N=M?i0(M):void 0}catch{N=void 0}if(N)U=!e1(N,void 0,void 0,"7.0.0");else if(M==="link:@capgo/capacitor-updater"){if(!Y)K.warn("Using local @capgo/capacitor-updater. Assuming v7");U=!0}let R=await e8(W,X.keyV2||mJ.existsSync(v1)||U?"sha256":"crc32");if(O)O.stop(`Checksum ${U?"SHA256":"CRC32"}: ${R}`);let z=Math.floor(W.byteLength/1024/1024);if(z>lX0&&w)K.warn(`WARNING !!
401
+ Bundle uploaded \uD83D\uDCAA in 0 seconds`),w.verbose)K.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let O=await C8();if(w.verbose)K.info("[Verbose] Local config retrieved for upload");if(w.multipart!==void 0&&w.multipart||w.tus!==void 0&&w.tus){if(w.multipart)K.info("Uploading bundle with multipart is deprecated, we upload with TUS instead");else K.info("Uploading bundle with TUS protocol");if(w.verbose)K.info("[Verbose] Starting TUS resumable upload..."),K.info(` - Host: ${O.hostWeb}`),K.info(` - Chunk size: ${Math.floor(F/1024/1024)} MB`);if(await cy(D,Q,J,Y,Z,B,O,F),$=!0,w.verbose)K.info("[Verbose] TUS upload completed, updating database with R2 path...");let H=`orgs/${J}/apps/${Y}/${Z}.zip`,{error:M}=await X.from("app_versions").update({r2_path:H}).eq("name",Z).eq("app_id",Y);if(M){if(K.error(`Cannot finish TUS upload ${p(M)}`),w.verbose)K.info(`[Verbose] Database update failed: ${p(M)}`);return Promise.reject(Error("Cannot finish TUS upload"))}if(w.verbose)K.info(`[Verbose] Database updated with R2 path: ${H}`)}else{if(w.verbose)K.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let H=await vy(X,Y,Z);if(!H){if(K.error("Cannot get upload url"),w.verbose)K.info("[Verbose] Failed to retrieve presigned upload URL from database");return Promise.reject(Error("Cannot get upload url"))}if(w.verbose)K.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),K.info(` - Timeout: ${w.timeout||x$}ms`),K.info(" - Retry attempts: 5"),K.info(" - Content-Type: application/zip");let M=new AbortController,U=setTimeout(()=>M.abort(),w.timeout||x$);try{let N=await fetch(H,{method:"PUT",body:Q,headers:{"Content-Type":"application/zip"},signal:M.signal});if(!N.ok)throw Error(`HTTP error! status: ${N.status}`)}finally{clearTimeout(U)}if(w.verbose)K.info("[Verbose] HTTP PUT upload completed successfully")}}catch(O){let M=((performance.now()-q)/1000).toFixed(2);if(B.stop(`Failed to upload bundle ( after ${M} seconds)`),w.verbose)K.info(`[Verbose] Upload failed after ${M} seconds`),K.info(`[Verbose] Error type: ${O instanceof Error?"Error":typeof O}`);if(O instanceof Error&&O.message.includes("HTTP error"))try{let U=O.message.match(/status: (\d+)/),N=U?U[1]:"unknown";K.error(`Upload failed with status ${N}: ${O.message}`)}catch{K.error(`Upload failed: ${O.message}`)}else{if(w.verbose)K.info(`[Verbose] Non-HTTP error: ${p(O)}`);if(!w.tus)K.error(`Cannot upload bundle ( try again with --tus option) ${p(O)}`);else K.error(`Cannot upload bundle please contact support if the issue persists ${p(O)}`)}if(w.verbose)K.info("[Verbose] Cleaning up failed version from database...");if(await ly(X,Y,Z),w.verbose)K.info("[Verbose] Failed version cleaned up");throw O instanceof Error?O:Error(String(O))}let W=((performance.now()-q)/1000).toFixed(2);if(B.stop(`Bundle uploaded \uD83D\uDCAA in (${W} seconds)`),w.verbose)K.info("[Verbose] Upload successful:"),K.info(` - Upload time: ${W} seconds`),K.info(` - Upload method: ${$?"TUS (resumable)":"Standard HTTP PUT"}`),K.info(` - Bundle size: ${Math.floor(Q.byteLength/1024)} KB`),K.info("[Verbose] Sending performance event...");if(await A0(D,{channel:"performance",event:$?"TUS upload zip performance":"Upload zip performance",icon:"\uD83D\uDE84",user_id:J,tags:{"app-id":Y,time:W},notify:!1},w.verbose),w.verbose)K.info("[Verbose] Performance event sent successfully")}async function mX0(D,X,Y){let{data:Z,error:J}=await D.from("channels").select("version ( id, name, deleted )").eq("app_id",X).eq("name",Y);if(J){K.error(`Cannot delete linked bundle on upload ${p(J)}`);return}if(Z.length===0){K.warn("No linked bundle found in the channel you are trying to upload to");return}let Q=Z[0].version;if(Q.deleted){K.warn("The linked bundle is already deleted");return}let{error:w}=await D.from("app_versions").update({deleted:!0}).eq("id",Q.id);if(w){K.error(`Cannot delete linked bundle on upload ${p(w)}`);return}K.info("Linked bundle deleted")}async function dX0(D,X,Y,Z,J,Q,w,F,B,q){let{data:$}=await D.rpc("get_app_versions",{apikey:X,name_version:Z,appid:F}).single();if(!$)$D("Cannot get version id, cannot set channel");let{data:G}=await D.rpc("is_allowed_capgkey",{apikey:X,keymode:["write","all"]}).single();if(G){let{error:W,data:O}=await zJ(D,{name:J,app_id:F,created_by:Q,version:$,owner_org:w,...q?{allow_device_self_set:!0}:{}});if(W)$D(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${p(W)}`);let H=`${B.hostWeb}/app/${F}/channel/${O.id}`;if(O?.public)K.info("Your update is now available in your public channel \uD83C\uDF89");else if(O?.id)K.info(`Link device to this bundle to try it: ${H}`);if(Y)K.info(`Bundle url: ${H}`)}else K.warn("The upload key is not allowed to set the version in the channel")}async function cX0(D,X,Y){let{error:Z,data:J}=await X.from("apps").select("default_upload_channel").eq("app_id",D).single();if(Z)return K.warn("Cannot find default upload channel"),K.info(`You can set it here: ${Y}/app/${D}/info`),null;return J.default_upload_channel}async function GG(D,X,Y=!1){if(!Y)q0(`Uploading with CLI version ${o8.version}`);let Z,J=B5();await o0();let{s3Region:Q,s3Apikey:w,s3Apisecret:F,s3BucketName:B,s3Endpoint:q,s3Port:$,s3SSL:G}=X;if(X.verbose)K.info("[Verbose] Starting upload process with options:"),K.info(` - API key: ${X.apikey?"provided":"from saved key"}`),K.info(` - Path: ${X.path||"from capacitor config"}`),K.info(` - Channel: ${X.channel||"from default upload channel"}`),K.info(` - Bundle: ${X.bundle||"auto-detected"}`),K.info(` - External: ${X.external||"false"}`),K.info(` - Encryption: ${X.keyV2||X.keyDataV2?"v2":X.key===!1?"disabled":"auto"}`),K.info(` - Upload method: ${X.tus?"TUS":X.zip?"ZIP":"auto"}`),K.info(` - Delta updates: ${X.delta||X.partial?"enabled":"disabled"}`);let W=kX0(X);if(X.verbose)K.info("[Verbose] API key retrieved successfully");let O=await H0();if(X.verbose)K.info("[Verbose] Capacitor config loaded successfully");let H=await xy();if(X.verbose)K.info("[Verbose] Remote file config retrieved:"),K.info(` - Max upload length: ${Math.floor(H.maxUploadLength/1024/1024)} MB`),K.info(` - Alert upload size: ${Math.floor(H.alertUploadSize/1024/1024)} MB`),K.info(` - TUS upload: ${H.TUSUpload?"enabled":"disabled"}`),K.info(` - TUS upload forced: ${H.TUSUploadForced?"yes":"no"}`),K.info(` - Partial upload: ${H.partialUpload?"enabled":"disabled"}`),K.info(` - Max chunk size: ${Math.floor(H.maxChunkSize/1024/1024)} MB`);let{appid:M,path:U}=uX0(D,X,O.config);if(X.verbose)K.info(`[Verbose] App ID: ${M}, Build path: ${U}`);let N=await yX0(O.config,X);if(X.verbose)K.info(`[Verbose] Bundle version: ${N}`);let R=X.external?"external":"r2-direct",z="none";if(X.autoSetBundle){if(await Py({version:N}),X.verbose)K.info("[Verbose] Auto-set bundle version in capacitor.config.json")}if(hX0(X,U),X.verbose)K.info("[Verbose] Code check passed (notifyAppReady found and index.html present)");K.info(`Upload ${M}@${N} started from path "${U}" to Capgo cloud`);let V=await C8();if(X.verbose)K.info(`[Verbose] Local config loaded: host=${V.hostWeb}`);if(X.supaHost&&X.supaAnon){if(K.info("Using custom supabase instance from provided options"),V.supaHost=X.supaHost,V.supaKey=X.supaAnon,X.verbose)K.info(`[Verbose] Custom Supabase host: ${X.supaHost}`)}let L=await K0(W,X.supaHost,X.supaAnon);if(X.verbose)K.info("[Verbose] Supabase client created successfully");await _D(L,M,Y);let C=await U0(L,W,["write","all","upload"]);if(X.verbose)K.info(`[Verbose] User verified successfully, user_id: ${C}`);let k=X.channel||await cX0(M,L,V.hostWeb)||"production";if(X.verbose)K.info(`[Verbose] Target channel: ${k}`);let A=await B1(L,M);if(X.verbose)K.info(`[Verbose] Organization ID: ${A}`);if(await uy(L,A,o8.version),X.verbose)K.info("[Verbose] Remote CLI messages checked");if(await _y(L,A,W,M,!0),X.verbose)K.info("[Verbose] Plan validation passed");if(X.verbose)K.info("[Verbose] Trial check completed");if(X.verbose)K.info(`[Verbose] Checking compatibility with channel ${k}...`);let{nativePackages:y,minUpdateVersion:f}=await _X0(L,J,X,k,M,N);if(X.verbose)K.info("[Verbose] Compatibility check completed:"),K.info(` - Native packages: ${y?y.length:0}`),K.info(` - Min update version: ${f||"none"}`);if(X.verbose)K.info(`[Verbose] Checking if version ${N} already exists...`);let S=!Y,v=await vX0(L,M,N,X.versionExistsOk,S);if(X.verbose)K.info(`[Verbose] Version exists check: ${v?typeof v==="string"?`retry with ${v}`:"yes (skipping)":"no (continuing)"}`);if(v===!0)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:N,checksum:null,encryptionMethod:z,storageProvider:R};if(typeof v==="string")return K.info(`Retrying upload with new version: ${v}`),GG(D,{...X,bundle:v},Y);if(X.external&&!X.external.startsWith("https://"))$D(`External link should should start with "https://" current is "${X.external}"`);if(X.deleteLinkedBundleOnUpload)K.warn("Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the channel you are trying to upload to."),K.warn("Please make sure you want to do this, if you are not sure, please do not use this option.");let b={name:N,app_id:M,session_key:void 0,external_url:X.external,storage_provider:R,min_update_version:f,native_packages:y,owner_org:A,user_id:C,checksum:void 0,link:X.link||null,comment:X.comment||null,key_id:void 0,cli_version:o8.version},n=null,h="";if(!X.external){if(X.verbose)K.info(`[Verbose] Preparing bundle file from path: ${U}`);let c=O.config?.plugins?.CapacitorUpdater?.publicKey,{zipped:o,ivSessionKey:I,checksum:j,sessionKey:l,encryptionMethod:u,finalKeyData:w0,keyId:i}=await bX0(U,X,W,A,M,H.maxUploadLength,H.alertUploadSize,c);if(b.session_key=I,b.checksum=j,b.key_id=i||void 0,Z=l,n=o,z=u,h=w0,X.verbose)K.info("[Verbose] Bundle prepared:"),K.info(` - Size: ${Math.floor((o?.byteLength??0)/1024)} KB`),K.info(` - Checksum: ${j}`),K.info(` - Encryption: ${u}`),K.info(` - IV Session Key: ${I?"present":"none"}`),K.info(` - Key ID: ${i||"none"}`);if(!X.ignoreChecksumCheck){if(X.verbose)K.info("[Verbose] Checking for duplicate checksum...");if(await ay(L,M,k,j),X.verbose)K.info("[Verbose] Checksum is unique")}}else{if(X.verbose)K.info(`[Verbose] Using external URL: ${X.external}`);if(await A0(W,{channel:"app",event:"App external",icon:"\uD83D\uDCE4",user_id:A,tags:{"app-id":M},notify:!1},X.verbose),b.session_key=X.ivSessionKey,b.checksum=X.encryptedChecksum,X.verbose)K.info("[Verbose] External bundle configured:"),K.info(` - URL: ${X.external}`),K.info(` - IV Session Key: ${X.ivSessionKey?"provided":"none"}`),K.info(` - Encrypted Checksum: ${X.encryptedChecksum?"provided":"none"}`)}if(X.zip){if(X.tus=!1,X.verbose)K.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")}else if(!H.TUSUpload||X.external){if(X.tus=!1,X.verbose)K.info("[Verbose] Upload method: Standard (TUS not available or external URL)")}else if(X.tus=X.tus||H.TUSUploadForced,X.verbose)K.info(`[Verbose] Upload method: ${X.tus?"TUS (resumable)":"Standard"}`);if(!H.partialUpload||X.external){if(X.delta=!1,X.verbose&&X.external)K.info("[Verbose] Delta updates disabled (not available with external URLs)")}else if(X.delta=X.delta||X.partial||X.deltaOnly||X.partialOnly||H.partialUploadForced,X.verbose)K.info(`[Verbose] Delta updates: ${X.delta?"enabled":"disabled"}`);if(X.encryptPartial&&z==="v1")$D("You cannot encrypt the partial update if you are not using the v2 encryption method");let E="5.30.0",P="6.30.0",x="7.30.0",_=!1;if(X.delta&&z==="v2"&&!X.encryptPartial){let c=tD(gJ.cwd()),o=await o1("@capgo/capacitor-updater",c,X.packageJson),I;try{I=o?i0(o):void 0}catch{I=void 0}if(o&&I&&sG(I,i0("6.14.4"))){if(K.info(`Auto-enabling partial update encryption for updater version ${I} (> 6.14.4)`),X.verbose)K.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4");X.encryptPartial=!0}}if(X.delta&&(X.encryptPartial||z==="v2")){let c=tD(gJ.cwd()),o=await o1("@capgo/capacitor-updater",c,X.packageJson),I;try{I=o?i0(o):void 0}catch{I=void 0}if(o&&I){if(_=!e1(I,E,P,x),X.verbose&&_)K.info(`[Verbose] Using hex checksum format for updater version ${I}`)}}if(X.verbose&&X.delta)K.info("[Verbose] Preparing delta/partial update manifest...");let g=X.delta?await Qh(U,W,A,M,X.encryptPartial?z:"none",h,_):[];if(X.verbose&&X.delta)K.info(`[Verbose] Delta manifest prepared with ${g.length} files`);if(X.verbose)K.info("[Verbose] Creating version record in database...");let{error:m}=await f$(L,b);if(m)$D(`Cannot add bundle ${p(m)}`);if(X.verbose)K.info("[Verbose] Version record created successfully");if(X.tusChunkSize&&X.tusChunkSize>H.maxChunkSize)K.error(`Chunk size ${X.tusChunkSize} is greater than the maximum chunk size ${H.maxChunkSize}, using the maximum chunk size`),X.tusChunkSize=H.maxChunkSize;else if(!X.tusChunkSize)X.tusChunkSize=H.maxChunkSize;if(X.verbose)K.info(`[Verbose] TUS chunk size: ${Math.floor(X.tusChunkSize/1024/1024)} MB`);if(n&&(B||q||Q||w||F||$||G)){if(!B||!q||!Q||!w||!F||!$)$D("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret");if(K.info("Uploading to S3"),X.verbose)K.info("[Verbose] S3 configuration:"),K.info(` - Endpoint: ${q}`),K.info(` - Region: ${Q}`),K.info(` - Bucket: ${B}`),K.info(` - Port: ${$}`),K.info(` - SSL: ${G?"enabled":"disabled"}`);let c=G?`https://${q}`:`http://${q}`,o=new SJ({endPoint:q,region:Q,port:$,pathStyle:!0,bucket:B,accessKey:w,secretKey:F}),I=`${M}-${N}`,j=encodeURIComponent(I);if(X.verbose)K.info(`[Verbose] Uploading to S3 as: ${I}`);if(await o.putObject(I,Uint8Array.from(n)),b.external_url=`${c}/${j}`,b.storage_provider="external",X.verbose)K.info(`[Verbose] S3 upload complete, external URL: ${b.external_url}`)}else if(n){if(!X.partialOnly&&!X.deltaOnly){if(X.verbose)K.info("[Verbose] Starting full bundle upload to Capgo Cloud...");await gX0(W,L,M,N,A,n,X,X.tusChunkSize)}else if(X.verbose)K.info("[Verbose] Skipping full bundle upload (delta-only mode)");let c=null;try{if(X.dryUpload){if(X.delta=!1,X.verbose)K.info("[Verbose] Dry upload mode: skipping delta upload")}let I=b.session_key&&X.encryptPartial&&Z?{sessionKey:Z,ivSessionKey:b.session_key}:void 0;if(X.verbose&&X.delta)K.info("[Verbose] Starting delta/partial file upload..."),K.info(` - Manifest entries: ${g.length}`),K.info(` - Encryption: ${I?"enabled":"disabled"}`);if(c=X.delta?await wh(W,g,U,M,A,I,X):null,X.verbose&&c)K.info(`[Verbose] Delta upload complete with ${c.length} files`)}catch(I){if(!!(X.partial||X.delta||X.partialOnly||X.deltaOnly))throw I;if(K.info(`Failed to upload partial files to capgo cloud. Error: ${p(I)}. This is not a critical error, the bundle has been uploaded without the partial files`),X.verbose)K.info(`[Verbose] Delta upload error details: ${p(I)}`)}if(b.storage_provider="r2",b.manifest=c,X.verbose)K.info("[Verbose] Updating version record with storage provider and manifest...");let{error:o}=await f$(L,b);if(o)$D(`Cannot update bundle ${p(o)}`);if(X.verbose)K.info("[Verbose] Version record updated successfully")}if(X.verbose)K.info("[Verbose] Checking app permissions...");let a=await CD(L,W,M,2,!1,!0);if(X.verbose)K.info("[Verbose] Permissions:"),K.info(` - Upload: ${d7(a,2)?"yes":"no"}`),K.info(` - Write: ${d7(a,3)?"yes":"no"}`),K.info(` - Admin: ${d7(a,4)?"yes":"no"}`);if(X.deleteLinkedBundleOnUpload&&d7(a,3)){if(X.verbose)K.info(`[Verbose] Deleting linked bundle in channel ${k}...`);await mX0(L,M,k)}else if(X.deleteLinkedBundleOnUpload)K.warn("Cannot delete linked bundle on upload as a upload organization member");if(d7(a,3)){if(X.verbose)K.info(`[Verbose] Setting bundle ${N} to channel ${k}...`);if(await dX0(L,W,!!X.bundleUrl,N,k,C,A,M,V,X.selfAssign),X.verbose)K.info("[Verbose] Channel updated successfully")}else K.warn("Cannot set channel as a upload organization member");if(X.verbose)K.info("[Verbose] Sending upload event...");await A0(W,{channel:"app",event:"App Uploaded",icon:"⏫",user_id:A,tags:{"app-id":M},notify:!1},X.verbose);let d={success:!0,bundle:N,checksum:b.checksum??null,encryptionMethod:z,sessionKey:Z?Z.toString("base64"):void 0,ivSessionKey:typeof b.session_key==="string"?b.session_key:void 0,storageProvider:b.storage_provider};if(X.verbose)K.info("[Verbose] Upload completed successfully:"),K.info(` - Bundle: ${d.bundle}`),K.info(` - Checksum: ${d.checksum}`),K.info(` - Encryption: ${d.encryptionMethod}`),K.info(` - Storage: ${d.storageProvider}`);if(Y&&!d.skipped)$0("Time to share your update to the world \uD83C\uDF0D");return d}var Bh=require("node:crypto"),mJ=require("node:fs"),qh=require("node:process");var lX0=20;function nX0(D){console.log(JSON.stringify(D,null,2))}function GX(D){console.error(p(D))}async function $h(D,X,Y=!1){let{json:Z}=X,{bundle:J,path:Q}=X,w=!Z&&!Y;try{if(w)await o0();let F=await H0(),B=b0(D,F?.config),q=Bh.randomUUID().split("-")[0],$=D9("",X.packageJson);if(J=J||$||`0.0.1-beta.${q}`,w)q0(`Zipping ${B}@${J}`);if(J&&!m7.test(J)){let C=`Your bundle name ${J}, is not valid it should follow semver convention : https://semver.org/`;if(!Y)if(Z)GX({error:"invalid_semver"});else K.error(C);throw Error("Invalid bundle version format")}if(Q=Q||F?.config?.webDir,!B||!J||!Q){if(!Y)if(Z)GX({error:"missing_argument"});else K.error("Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project");throw Error("Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project")}if(w)K.info(`Started from path "${Q}"`);if(typeof X.codeCheck>"u"?!0:X.codeCheck){if(!wX(Q,"notifyAppReady")){if(!Y)if(Z)GX({error:"notifyAppReady_not_in_source_code"});else K.error("notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready");throw Error("notifyAppReady() is missing in build folder")}if(!fJ(Q)){if(!Y)if(Z)GX({error:"index_html_not_found"});else K.error(`index.html is missing in the root folder of ${Q}`);throw Error("index.html is missing in root folder")}}let W=await KJ(Q);if(w)K.info(`Zipped ${W.byteLength} bytes`);let O=w?xD():null;if(O)O.start("Calculating checksum");let H=tD(qh.cwd()),M=await o1("@capgo/capacitor-updater",H,X.packageJson);if(!M){if(!Y)K.warn("Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager");throw Error("Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager")}let U=!1,N;try{N=M?i0(M):void 0}catch{N=void 0}if(N)U=!e1(N,void 0,void 0,"7.0.0");else if(M==="link:@capgo/capacitor-updater"){if(!Y)K.warn("Using local @capgo/capacitor-updater. Assuming v7");U=!0}let R=await e8(W,X.keyV2||mJ.existsSync(v1)||U?"sha256":"crc32");if(O)O.stop(`Checksum ${U?"SHA256":"CRC32"}: ${R}`);let z=Math.floor(W.byteLength/1024/1024);if(z>lX0&&w)K.warn(`WARNING !!
402
402
  The bundle size is ${z} Mb, this may take a while to download for users
403
403
  `),K.warn(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
404
- `);let V=w?xD():null,L=X.name||`${B}_${J}.zip`;if(V)V.start(`Saving to ${L}`);if(mJ.writeFileSync(L,W),V)V.stop(`Saved to ${L}`);if(w)$0("Done ✅");if(!Y&&Z)nX0({bundle:J,filename:L,checksum:R});return{bundle:J,filename:L,checksum:R}}catch(F){if(!Y)if(Z)GX(F);else K.error(p(F));throw F instanceof Error?F:Error(String(F))}}async function Gh(D,X,Y,Z=!1){if(!Z)q0("Create channel");Y.apikey=Y.apikey||Q0();let J=await H0().catch(()=>{return});if(X=b0(X,J?.config),!Y.apikey){if(!Z)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!X){if(!Z)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let Q=await K0(Y.apikey,Y.supaHost,Y.supaAnon);if(await _D(Q,X,Z),await N0(Q,Y.apikey,["write","all"]),await CD(Q,Y.apikey,X,4,Z,!0),!Z)K.info(`Creating channel ${X}#${D} to Capgo`);let w=await h$(Q,X);if(!w){if(!Z)K.error("Cannot find default version for channel creation, please contact Capgo support \uD83E\uDD28");throw Error("Cannot find default version for channel creation")}let F=await B1(Q,X),B=await N0(Q,Y.apikey,["write","all"]),q=await sy(Q,{name:D,app_id:X,version:w.id,created_by:B,owner_org:F,allow_device_self_set:Y.selfAssign??!1,public:Y.default??!1});if(q.error){if(!Z)K.error(`Cannot create Channel \uD83D\uDE40
405
- ${p(q.error)}`);throw Error(`Cannot create channel: ${p(q.error)}`)}if(await A0(Y.apikey,{channel:"channel",event:"Create channel",icon:"✅",user_id:F,tags:{"app-id":X,channel:D},notify:!1}).catch(()=>{}),!Z)K.success("Channel created ✅"),$0("Done ✅");return q.data??!0}async function Oh(D,X,Y,Z=!1){let{quiet:J}=Y;if(!J&&!Z)q0("List current bundle");Y.apikey=Y.apikey||Q0(J);let Q=await H0();if(X=b0(X,Q?.config),!Y.apikey){if(!Z)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!X){if(!Z)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let w=await K0(Y.apikey,Y.supaHost,Y.supaAnon);if(await _D(w,X,Z),await N0(w,Y.apikey,["write","all","read"]),await CD(w,Y.apikey,X,1,Z,!0),!D){if(!Z)K.error("Please provide a channel to get the bundle from.");throw Error("Channel name missing")}let{data:F,error:B}=await w.from("channels").select("version ( name )").eq("name",D).eq("app_id",X).limit(1);if(B||!F?.length){if(!Z)K.error(`Error retrieving channel ${D} for app ${X}. Perhaps the channel does not exist?`);throw Error(`Channel ${D} not found for app ${X}`)}let{version:q}=F[0];if(!q){if(!Z)K.error(`Error retrieving channel ${D} for app ${X}. Perhaps the channel does not exist?`);throw Error(`Channel ${D} does not have a bundle linked`)}if(!Z)if(!J)K.info(`Current bundle for channel ${D} is ${q.name}`);else K.info(q.name);return q.name}async function Wh(D,X,Y,Z=!1){if(!Z)q0("Delete channel");Y.apikey=Y.apikey||Q0();let J=await H0();if(X=b0(X,J?.config),!Y.apikey){if(!Z)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!X){if(!Z)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let Q=await K0(Y.apikey,Y.supaHost,Y.supaAnon);await _D(Q,X,Z);let w=await N0(Q,Y.apikey,["all"]);if(await CD(Q,Y.apikey,X,4,Z,!0),Y.deleteBundle&&!Z)K.info(`Deleting bundle ${X}#${D} from Capgo`);if(Y.deleteBundle){let W=await Xk(Q,X,D);if(W?.name&&!Z)K.info(`Deleting bundle ${W.name} from Capgo`);if(W?.name)await _$(Q,X,W.name)}let{data:F,error:B}=await ey(Q,X,D);if(B||!F){if(!Z)K.error(`Channel ${D} not found`);if(Y.successIfNotFound){if(!Z)K.success(`Channel ${D} not found and successIfNotFound is true`);return!0}throw Error(`Channel ${D} not found`)}let{error:q}=await Dk(Q,X,F.id);if(q){if(!Z)K.error(`Cannot delete channel devices: ${p(q)}`);throw Error(`Cannot delete channel devices: ${p(q)}`)}if(!Z)K.info(`Deleting channel ${X}#${D} from Capgo`);let $=await oy(Q,D,X,w);if($.error){if(!Z)K.error(`Cannot delete Channel \uD83D\uDE40 ${p($.error)}`);throw Error(`Cannot delete channel: ${p($.error)}`)}let G=await B1(Q,X);if(await A0(Y.apikey,{channel:"channel",event:"Delete channel",icon:"✅",user_id:G,tags:{"app-id":X,channel:D},notify:!1}).catch(()=>{}),!Z)K.success("Channel deleted"),$0("Done ✅");return!0}async function Hh(D,X,Y=!1){if(!Y)q0("List channels");X.apikey=X.apikey||Q0();let Z=await H0();if(D=b0(D,Z?.config),!X.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let J=await K0(X.apikey,X.supaHost,X.supaAnon);await _D(J,D,Y);let Q=await N0(J,X.apikey,["write","all","read","upload"]);if(await CD(J,X.apikey,D,1,Y,!0),!Y)K.info("Querying available channels in Capgo");let w=await Zk(J,D);if(!Y)K.info(`Active channels in Capgo: ${w?.length??0}`),Yk(w);if(await A0(X.apikey,{channel:"channel",event:"List channel",icon:"✅",user_id:Q,tags:{"app-id":D},notify:!1}).catch(()=>{}),!Y)$0("Done ✅");return w}function Kh(D){let X=new MD;X.headers=["Package","Local","Remote","Status","Details"],X.theme=MD.roundTheme,X.rows=[];for(let Y of D){let{name:Z,localVersion:J,remoteVersion:Q}=Y,w=q5(Y),F=w.compatible?"✅":"❌";X.rows.push([Z,J||"-",Q||"-",F,w.message])}K.info(X.toString())}var zh=["major","minor","metadata","patch","none"];async function Mh(D,X,Y,Z=!1){if(!Z)q0("Set channel");Y.apikey=Y.apikey||Q0();let J=await H0();if(X=b0(X,J?.config),!Y.apikey){if(!Z)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!X){if(!Z)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}if(!D){if(!Z)K.error("Missing argument, you need to provide a channel");throw Error("Missing channel id")}let Q=await K0(Y.apikey,Y.supaHost,Y.supaAnon);await _D(Q,X,Z);let w=await N0(Q,Y.apikey,["write","all"]);await CD(Q,Y.apikey,X,4,Z,!0);let F=await B1(Q,X),{bundle:B,state:q,downgrade:$,latest:G,latestRemote:W,ios:O,android:H,selfAssign:M,disableAutoUpdate:U,dev:N,emulator:R,device:z,prod:V}=Y;if(G&&B){if(!Z)K.error("Cannot set latest and bundle at the same time");throw Error("Cannot set both latest and bundle simultaneously")}if(W&&B){if(!Z)K.error("Cannot set latest remote and bundle at the same time");throw Error("Cannot set both latest remote and bundle simultaneously")}if(W&&G){if(!Z)K.error("Cannot set latest remote and latest at the same time");throw Error("Cannot set both latest remote and latest simultaneously")}if(B==null&&q==null&&G==null&&W==null&&$==null&&O==null&&H==null&&M==null&&N==null&&R==null&&z==null&&V==null&&U==null){if(!Z)K.error("Missing argument, you need to provide a option to set");throw Error("No channel option provided")}await hy(Q,F,Y.apikey,X);let L={created_by:w,app_id:X,name:D,owner_org:F,version:void 0},{error:C}=await Q.from("channels").select().eq("app_id",X).eq("name",D).single();if(C){if(!Z)K.error(`Cannot find channel ${D}`);throw Error(`Cannot find channel ${D}`)}let k=G?J?.config?.plugins?.CapacitorUpdater?.version||D9("",Y.packageJson):B;if(k!=null){let{data:y,error:f}=await Q.from("app_versions").select().eq("app_id",X).eq("name",k).eq("user_id",w).eq("deleted",!1).single();if(f||!y){if(!Z)K.error(`Cannot find version ${k}`);throw Error(`Cannot find version ${k}`)}if(!Y.ignoreMetadataCheck){let{finalCompatibility:S,localDependencies:v}=await u$(Q,X,D,y.native_packages??[]),b=S.filter((n)=>!Y9(n));if(v.length>0&&b.length>0){if(!Z)K.warn(`Bundle NOT compatible with ${D} channel`),K.warn(""),Kh(S),K.warn(""),K.warn("An app store update may be required for these changes to take effect.");throw Error(`Bundle is not compatible with ${D} channel`)}if(!Z)if(v.length===0&&S.length>0)K.info(`Ignoring check compatibility with ${D} channel because the bundle does not contain any native packages`);else K.info(`Bundle is compatible with ${D} channel`)}if(!Z)K.info(`Set ${X} channel: ${D} to @${k}`);L.version=y.id}if(W){let{data:y,error:f}=await Q.from("app_versions").select().eq("app_id",X).eq("user_id",w).eq("deleted",!1).order("created_at",{ascending:!1}).single();if(f||!y){if(!Z)K.error("Cannot find latest remote version");throw Error("Cannot find latest remote version")}if(!Y.ignoreMetadataCheck){let{finalCompatibility:S}=await u$(Q,X,D,y.native_packages??[]);if(S.filter((b)=>!Y9(b)).length>0){if(!Z)K.warn(`Bundle NOT compatible with ${D} channel`),K.warn(""),Kh(S),K.warn(""),K.warn("An app store update may be required for these changes to take effect.");throw Error(`Latest remote bundle is not compatible with ${D} channel`)}}if(!Z)K.info(`Set ${X} channel: ${D} to @${y.name}`);L.version=y.id}if(q!=null){if(q!=="normal"&&q!=="default"){if(!Z)K.error(`State ${q} is not known. The possible values are: normal, default.`);throw Error(`Unknown state ${q}. Expected normal or default`)}if(!Z)K.info(`Set ${X} channel: ${D} to ${q}`);L.public=q==="default"}if($!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${$?"allow":"disallow"} downgrade`);L.disable_auto_update_under_native=!$}if(O!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${O?"allow":"disallow"} ios update`);L.ios=!!O}if(H!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${H?"allow":"disallow"} android update`);L.android=!!H}if(M!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${M?"allow":"disallow"} self assign to this channel`);L.allow_device_self_set=!!M}if(N!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${N?"allow":"disallow"} dev devices`);L.allow_dev=!!N}if(R!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${R?"allow":"disallow"} emulator devices`);L.allow_emulator=!!R}if(z!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${z?"allow":"disallow"} physical devices`);L.allow_device=!!z}if(V!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${V?"allow":"disallow"} prod builds`);L.allow_prod=!!V}if(U!=null){let y=U.toLowerCase();if(!zh.includes(y)){if(!Z)K.error(`Channel strategy ${y} is not known. The possible values are: ${zh.join(", ")}.`);throw Error(`Unknown channel strategy ${y}`)}if(y==="metadata")y="version_number";if(L.disable_auto_update=y,!Z)K.info(`Set ${X} channel: ${D} to ${y} disable update strategy to this channel`)}let{error:A}=await zJ(Q,L);if(A){if(!Z)K.error('Cannot set channel the upload key is not allowed to do that, use the "all" for this.');throw Error("Upload key is not allowed to set this channel")}if(await A0(Y.apikey,{channel:"channel",event:"Set channel",icon:"✅",user_id:F,tags:{"app-id":X},notify:!1}).catch(()=>{}),!Z)$0("Done ✅");return!0}var U1=require("node:fs");function Lh(D){return D.plugins??={},D.plugins.extConfig??={},D.plugins.CapacitorUpdater??={},D.plugins.CapacitorUpdater}async function Vh(D,X=!1){if(!X)q0("Save keys \uD83D\uDD11");let Y=await H0(),Z=D.key||z6,J=D.keyData||"";if(!U1.existsSync(Z)&&!J){if(!X)K.error(`Cannot find a public key at ${Z} or as keyData option or in ${Y.path}`);throw Error("Missing public key")}if(U1.existsSync(Z))J=U1.readFileSync(Z,"utf8");if(!J.startsWith("-----BEGIN RSA PUBLIC KEY-----")){if(!X)K.error("The public key provided is not a valid RSA Public key");throw Error("Invalid RSA public key")}if(Y?.config){let Q=Lh(Y.config);if(Q.privateKey){if(delete Q.privateKey,!X)K.info("Old private key deleted from config file");if(X?D.setupChannel??!1:D.setupChannel??await sD({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))Q.defaultChannel="encryption_v2"}Q.publicKey=J,await u7(Y)}if(!X)K.success(`Public key saved into ${Y.path} file in local directory`),K.success("Your app will decode the zip archive with this key");return!0}async function Uh(D,X=!1){if(!X)q0("Deleting old private key \uD83D\uDDD1️");let Y=await H0(),Z=Y?.config?.plugins?.CapacitorUpdater;if(Z?.privateKey){if(delete Z.privateKey,await u7(Y),U1.existsSync(g7))try{if(U1.unlinkSync(g7),!X)K.success(`Old private key file deleted: ${g7}`)}catch(J){if(!X)K.error(`Failed to delete old private key file: ${g7} (${String(J)})`)}if(U1.existsSync(GJ))try{if(U1.unlinkSync(GJ),!X)K.success(`Old public key file deleted: ${GJ}`)}catch(J){if(!X)K.error(`Failed to delete old public key file: ${z6} (${String(J)})`)}if(!X)K.success(`Old private key deleted from ${Y.path} file`),$0("Done ✅");return!0}if(!X)K.info("No old private key found in config file");return!1}async function Nh(D,X=!1){if(!X)q0("Create keys \uD83D\uDD11");let{publicKey:Y,privateKey:Z}=Ik();if(U1.existsSync(z6)&&!D.force){if(!X)K.error("Public Key already exists, use --force to overwrite");throw Error("Public key already exists")}if(U1.writeFileSync(z6,Y),U1.existsSync(v1)&&!D.force){if(!X)K.error("Private Key already exists, use --force to overwrite");throw Error("Private key already exists")}U1.writeFileSync(v1,Z);let J=await H0();if(J){let Q=Lh(J.config);if(Q.privateKey){if(delete Q.privateKey,!X)K.info("Old private key deleted from config file");if(X?D.setupChannel??!1:D.setupChannel??await sD({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))Q.defaultChannel="encryption_v2"}Q.publicKey=Y,await u7(J)}if(!X){K.success("Your RSA key has been generated"),K.success(`Private key saved in ${v1}`),K.success("This key will be used to encrypt your bundle before sending it to Capgo"),K.success("Keep it safe"),K.success("Then make it unreadable by Capgo and unmodifiable by anyone"),K.success(`Public key saved in ${J.path}`),K.success("Your app will be the only one having it"),K.success("Only your users can decrypt your update"),K.success("Only you can send them an update");try{await ty(),$0("Done ✅")}catch(Q){if(Q instanceof Error&&Q.message==="Capacitor sync cancelled")return!0;throw Q}}return!0}var U5=require("node:fs"),Rh=require("node:os");async function Ah(D,X,Y=!1){if(!Y)q0("Login to Capgo");if(!D&&!Y){let w=await uG({message:"Enter your API key:",mask:"*"});if(c0(w))throw K.error("Login cancelled"),Error("Login cancelled");D=w}if(!D){if(!Y)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}await o0();let{local:Z}=X;if(Z){if(!U5.existsSync(".git")){if(!Y)K.error("To use local you should be in a git repository");throw Error("Not in a git repository")}U5.writeFileSync(".capgo",`${D}
404
+ `);let V=w?xD():null,L=X.name||`${B}_${J}.zip`;if(V)V.start(`Saving to ${L}`);if(mJ.writeFileSync(L,W),V)V.stop(`Saved to ${L}`);if(w)$0("Done ✅");if(!Y&&Z)nX0({bundle:J,filename:L,checksum:R});return{bundle:J,filename:L,checksum:R}}catch(F){if(!Y)if(Z)GX(F);else K.error(p(F));throw F instanceof Error?F:Error(String(F))}}async function Gh(D,X,Y,Z=!1){if(!Z)q0("Create channel");Y.apikey=Y.apikey||Q0();let J=await H0().catch(()=>{return});if(X=b0(X,J?.config),!Y.apikey){if(!Z)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!X){if(!Z)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let Q=await K0(Y.apikey,Y.supaHost,Y.supaAnon);if(await _D(Q,X,Z),await U0(Q,Y.apikey,["write","all"]),await CD(Q,Y.apikey,X,4,Z,!0),!Z)K.info(`Creating channel ${X}#${D} to Capgo`);let w=await h$(Q,X);if(!w){if(!Z)K.error("Cannot find default version for channel creation, please contact Capgo support \uD83E\uDD28");throw Error("Cannot find default version for channel creation")}let F=await B1(Q,X),B=await U0(Q,Y.apikey,["write","all"]),q=await sy(Q,{name:D,app_id:X,version:w.id,created_by:B,owner_org:F,allow_device_self_set:Y.selfAssign??!1,public:Y.default??!1});if(q.error){if(!Z)K.error(`Cannot create Channel \uD83D\uDE40
405
+ ${p(q.error)}`);throw Error(`Cannot create channel: ${p(q.error)}`)}if(await A0(Y.apikey,{channel:"channel",event:"Create channel",icon:"✅",user_id:F,tags:{"app-id":X,channel:D},notify:!1}).catch(()=>{}),!Z)K.success("Channel created ✅"),$0("Done ✅");return q.data??!0}async function Oh(D,X,Y,Z=!1){let{quiet:J}=Y;if(!J&&!Z)q0("List current bundle");Y.apikey=Y.apikey||Q0(J);let Q=await H0();if(X=b0(X,Q?.config),!Y.apikey){if(!Z)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!X){if(!Z)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let w=await K0(Y.apikey,Y.supaHost,Y.supaAnon);if(await _D(w,X,Z),await U0(w,Y.apikey,["write","all","read"]),await CD(w,Y.apikey,X,1,Z,!0),!D){if(!Z)K.error("Please provide a channel to get the bundle from.");throw Error("Channel name missing")}let{data:F,error:B}=await w.from("channels").select("version ( name )").eq("name",D).eq("app_id",X).limit(1);if(B||!F?.length){if(!Z)K.error(`Error retrieving channel ${D} for app ${X}. Perhaps the channel does not exist?`);throw Error(`Channel ${D} not found for app ${X}`)}let{version:q}=F[0];if(!q){if(!Z)K.error(`Error retrieving channel ${D} for app ${X}. Perhaps the channel does not exist?`);throw Error(`Channel ${D} does not have a bundle linked`)}if(!Z)if(!J)K.info(`Current bundle for channel ${D} is ${q.name}`);else K.info(q.name);return q.name}async function Wh(D,X,Y,Z=!1){if(!Z)q0("Delete channel");Y.apikey=Y.apikey||Q0();let J=await H0();if(X=b0(X,J?.config),!Y.apikey){if(!Z)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!X){if(!Z)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let Q=await K0(Y.apikey,Y.supaHost,Y.supaAnon);await _D(Q,X,Z);let w=await U0(Q,Y.apikey,["all"]);if(await CD(Q,Y.apikey,X,4,Z,!0),Y.deleteBundle&&!Z)K.info(`Deleting bundle ${X}#${D} from Capgo`);if(Y.deleteBundle){let W=await Xk(Q,X,D);if(W?.name&&!Z)K.info(`Deleting bundle ${W.name} from Capgo`);if(W?.name)await _$(Q,X,W.name)}let{data:F,error:B}=await ey(Q,X,D);if(B||!F){if(!Z)K.error(`Channel ${D} not found`);if(Y.successIfNotFound){if(!Z)K.success(`Channel ${D} not found and successIfNotFound is true`);return!0}throw Error(`Channel ${D} not found`)}let{error:q}=await Dk(Q,X,F.id);if(q){if(!Z)K.error(`Cannot delete channel devices: ${p(q)}`);throw Error(`Cannot delete channel devices: ${p(q)}`)}if(!Z)K.info(`Deleting channel ${X}#${D} from Capgo`);let $=await oy(Q,D,X,w);if($.error){if(!Z)K.error(`Cannot delete Channel \uD83D\uDE40 ${p($.error)}`);throw Error(`Cannot delete channel: ${p($.error)}`)}let G=await B1(Q,X);if(await A0(Y.apikey,{channel:"channel",event:"Delete channel",icon:"✅",user_id:G,tags:{"app-id":X,channel:D},notify:!1}).catch(()=>{}),!Z)K.success("Channel deleted"),$0("Done ✅");return!0}async function Hh(D,X,Y=!1){if(!Y)q0("List channels");X.apikey=X.apikey||Q0();let Z=await H0();if(D=b0(D,Z?.config),!X.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let J=await K0(X.apikey,X.supaHost,X.supaAnon);await _D(J,D,Y);let Q=await U0(J,X.apikey,["write","all","read","upload"]);if(await CD(J,X.apikey,D,1,Y,!0),!Y)K.info("Querying available channels in Capgo");let w=await Zk(J,D);if(!Y)K.info(`Active channels in Capgo: ${w?.length??0}`),Yk(w);if(await A0(X.apikey,{channel:"channel",event:"List channel",icon:"✅",user_id:Q,tags:{"app-id":D},notify:!1}).catch(()=>{}),!Y)$0("Done ✅");return w}function Kh(D){let X=new MD;X.headers=["Package","Local","Remote","Status","Details"],X.theme=MD.roundTheme,X.rows=[];for(let Y of D){let{name:Z,localVersion:J,remoteVersion:Q}=Y,w=q5(Y),F=w.compatible?"✅":"❌";X.rows.push([Z,J||"-",Q||"-",F,w.message])}K.info(X.toString())}var zh=["major","minor","metadata","patch","none"];async function Mh(D,X,Y,Z=!1){if(!Z)q0("Set channel");Y.apikey=Y.apikey||Q0();let J=await H0();if(X=b0(X,J?.config),!Y.apikey){if(!Z)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!X){if(!Z)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}if(!D){if(!Z)K.error("Missing argument, you need to provide a channel");throw Error("Missing channel id")}let Q=await K0(Y.apikey,Y.supaHost,Y.supaAnon);await _D(Q,X,Z);let w=await U0(Q,Y.apikey,["write","all"]);await CD(Q,Y.apikey,X,4,Z,!0);let F=await B1(Q,X),{bundle:B,state:q,downgrade:$,latest:G,latestRemote:W,ios:O,android:H,selfAssign:M,disableAutoUpdate:U,dev:N,emulator:R,device:z,prod:V}=Y;if(G&&B){if(!Z)K.error("Cannot set latest and bundle at the same time");throw Error("Cannot set both latest and bundle simultaneously")}if(W&&B){if(!Z)K.error("Cannot set latest remote and bundle at the same time");throw Error("Cannot set both latest remote and bundle simultaneously")}if(W&&G){if(!Z)K.error("Cannot set latest remote and latest at the same time");throw Error("Cannot set both latest remote and latest simultaneously")}if(B==null&&q==null&&G==null&&W==null&&$==null&&O==null&&H==null&&M==null&&N==null&&R==null&&z==null&&V==null&&U==null){if(!Z)K.error("Missing argument, you need to provide a option to set");throw Error("No channel option provided")}await hy(Q,F,Y.apikey,X);let L={created_by:w,app_id:X,name:D,owner_org:F,version:void 0},{error:C}=await Q.from("channels").select().eq("app_id",X).eq("name",D).single();if(C){if(!Z)K.error(`Cannot find channel ${D}`);throw Error(`Cannot find channel ${D}`)}let k=G?J?.config?.plugins?.CapacitorUpdater?.version||D9("",Y.packageJson):B;if(k!=null){let{data:y,error:f}=await Q.from("app_versions").select().eq("app_id",X).eq("name",k).eq("user_id",w).eq("deleted",!1).single();if(f||!y){if(!Z)K.error(`Cannot find version ${k}`);throw Error(`Cannot find version ${k}`)}if(!Y.ignoreMetadataCheck){let{finalCompatibility:S,localDependencies:v}=await u$(Q,X,D,y.native_packages??[]),b=S.filter((n)=>!Y9(n));if(v.length>0&&b.length>0){if(!Z)K.warn(`Bundle NOT compatible with ${D} channel`),K.warn(""),Kh(S),K.warn(""),K.warn("An app store update may be required for these changes to take effect.");throw Error(`Bundle is not compatible with ${D} channel`)}if(!Z)if(v.length===0&&S.length>0)K.info(`Ignoring check compatibility with ${D} channel because the bundle does not contain any native packages`);else K.info(`Bundle is compatible with ${D} channel`)}if(!Z)K.info(`Set ${X} channel: ${D} to @${k}`);L.version=y.id}if(W){let{data:y,error:f}=await Q.from("app_versions").select().eq("app_id",X).eq("user_id",w).eq("deleted",!1).order("created_at",{ascending:!1}).single();if(f||!y){if(!Z)K.error("Cannot find latest remote version");throw Error("Cannot find latest remote version")}if(!Y.ignoreMetadataCheck){let{finalCompatibility:S}=await u$(Q,X,D,y.native_packages??[]);if(S.filter((b)=>!Y9(b)).length>0){if(!Z)K.warn(`Bundle NOT compatible with ${D} channel`),K.warn(""),Kh(S),K.warn(""),K.warn("An app store update may be required for these changes to take effect.");throw Error(`Latest remote bundle is not compatible with ${D} channel`)}}if(!Z)K.info(`Set ${X} channel: ${D} to @${y.name}`);L.version=y.id}if(q!=null){if(q!=="normal"&&q!=="default"){if(!Z)K.error(`State ${q} is not known. The possible values are: normal, default.`);throw Error(`Unknown state ${q}. Expected normal or default`)}if(!Z)K.info(`Set ${X} channel: ${D} to ${q}`);L.public=q==="default"}if($!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${$?"allow":"disallow"} downgrade`);L.disable_auto_update_under_native=!$}if(O!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${O?"allow":"disallow"} ios update`);L.ios=!!O}if(H!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${H?"allow":"disallow"} android update`);L.android=!!H}if(M!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${M?"allow":"disallow"} self assign to this channel`);L.allow_device_self_set=!!M}if(N!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${N?"allow":"disallow"} dev devices`);L.allow_dev=!!N}if(R!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${R?"allow":"disallow"} emulator devices`);L.allow_emulator=!!R}if(z!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${z?"allow":"disallow"} physical devices`);L.allow_device=!!z}if(V!=null){if(!Z)K.info(`Set ${X} channel: ${D} to ${V?"allow":"disallow"} prod builds`);L.allow_prod=!!V}if(U!=null){let y=U.toLowerCase();if(!zh.includes(y)){if(!Z)K.error(`Channel strategy ${y} is not known. The possible values are: ${zh.join(", ")}.`);throw Error(`Unknown channel strategy ${y}`)}if(y==="metadata")y="version_number";if(L.disable_auto_update=y,!Z)K.info(`Set ${X} channel: ${D} to ${y} disable update strategy to this channel`)}let{error:A}=await zJ(Q,L);if(A){if(!Z)K.error('Cannot set channel the upload key is not allowed to do that, use the "all" for this.');throw Error("Upload key is not allowed to set this channel")}if(await A0(Y.apikey,{channel:"channel",event:"Set channel",icon:"✅",user_id:F,tags:{"app-id":X},notify:!1}).catch(()=>{}),!Z)$0("Done ✅");return!0}var U1=require("node:fs");function Lh(D){return D.plugins??={},D.plugins.extConfig??={},D.plugins.CapacitorUpdater??={},D.plugins.CapacitorUpdater}async function Vh(D,X=!1){if(!X)q0("Save keys \uD83D\uDD11");let Y=await H0(),Z=D.key||z6,J=D.keyData||"";if(!U1.existsSync(Z)&&!J){if(!X)K.error(`Cannot find a public key at ${Z} or as keyData option or in ${Y.path}`);throw Error("Missing public key")}if(U1.existsSync(Z))J=U1.readFileSync(Z,"utf8");if(!J.startsWith("-----BEGIN RSA PUBLIC KEY-----")){if(!X)K.error("The public key provided is not a valid RSA Public key");throw Error("Invalid RSA public key")}if(Y?.config){let Q=Lh(Y.config);if(Q.privateKey){if(delete Q.privateKey,!X)K.info("Old private key deleted from config file");if(X?D.setupChannel??!1:D.setupChannel??await sD({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))Q.defaultChannel="encryption_v2"}Q.publicKey=J,await u7(Y)}if(!X)K.success(`Public key saved into ${Y.path} file in local directory`),K.success("Your app will decode the zip archive with this key");return!0}async function Uh(D,X=!1){if(!X)q0("Deleting old private key \uD83D\uDDD1️");let Y=await H0(),Z=Y?.config?.plugins?.CapacitorUpdater;if(Z?.privateKey){if(delete Z.privateKey,await u7(Y),U1.existsSync(g7))try{if(U1.unlinkSync(g7),!X)K.success(`Old private key file deleted: ${g7}`)}catch(J){if(!X)K.error(`Failed to delete old private key file: ${g7} (${String(J)})`)}if(U1.existsSync(GJ))try{if(U1.unlinkSync(GJ),!X)K.success(`Old public key file deleted: ${GJ}`)}catch(J){if(!X)K.error(`Failed to delete old public key file: ${z6} (${String(J)})`)}if(!X)K.success(`Old private key deleted from ${Y.path} file`),$0("Done ✅");return!0}if(!X)K.info("No old private key found in config file");return!1}async function Nh(D,X=!1){if(!X)q0("Create keys \uD83D\uDD11");let{publicKey:Y,privateKey:Z}=Ik();if(U1.existsSync(z6)&&!D.force){if(!X)K.error("Public Key already exists, use --force to overwrite");throw Error("Public key already exists")}if(U1.writeFileSync(z6,Y),U1.existsSync(v1)&&!D.force){if(!X)K.error("Private Key already exists, use --force to overwrite");throw Error("Private key already exists")}U1.writeFileSync(v1,Z);let J=await H0();if(J){let Q=Lh(J.config);if(Q.privateKey){if(delete Q.privateKey,!X)K.info("Old private key deleted from config file");if(X?D.setupChannel??!1:D.setupChannel??await sD({message:"Do you want to setup encryption with the new channel in order to support old apps and facilitate the migration?"}))Q.defaultChannel="encryption_v2"}Q.publicKey=Y,await u7(J)}if(!X){K.success("Your RSA key has been generated"),K.success(`Private key saved in ${v1}`),K.success("This key will be used to encrypt your bundle before sending it to Capgo"),K.success("Keep it safe"),K.success("Then make it unreadable by Capgo and unmodifiable by anyone"),K.success(`Public key saved in ${J.path}`),K.success("Your app will be the only one having it"),K.success("Only your users can decrypt your update"),K.success("Only you can send them an update");try{await ty(),$0("Done ✅")}catch(Q){if(Q instanceof Error&&Q.message==="Capacitor sync cancelled")return!0;throw Q}}return!0}var U5=require("node:fs"),Rh=require("node:os");async function Ah(D,X,Y=!1){if(!Y)q0("Login to Capgo");if(!D&&!Y){let w=await uG({message:"Enter your API key:",mask:"*"});if(c0(w))throw K.error("Login cancelled"),Error("Login cancelled");D=w}if(!D){if(!Y)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}await o0();let{local:Z}=X;if(Z){if(!U5.existsSync(".git")){if(!Y)K.error("To use local you should be in a git repository");throw Error("Not in a git repository")}U5.writeFileSync(".capgo",`${D}
406
406
  `),U5.appendFileSync(".gitignore",`.capgo
407
407
  `)}else{let w=Rh.homedir();U5.writeFileSync(`${w}/.capgo`,`${D}
408
- `)}let J=await K0(D,X.supaHost,X.supaAnon),Q=await N0(J,D,["write","all","upload"]);if(await A0(D,{channel:"user-login",event:"User CLI login",icon:"✅",user_id:Q,notify:!1}).catch(),!Y)K.success(`login saved into .capgo file in ${Z?"local":"home"} directory`),$0("Done ✅")}async function Eh(D,X=!1){if(!X)q0("Adding organization");await o0();let Y={...D,apikey:D.apikey||Q0()};if(!Y.apikey){if(!X)K.error("Missing API key, you need to provide an API key to add an organization");throw Error("Missing API key")}let Z=await K0(Y.apikey,Y.supaHost,Y.supaAnon),J=await N0(Z,Y.apikey,["write","all"]),{name:Q,email:w}=Y;if(!X&&!Q){let q=await A6({message:"Organization name:",placeholder:"My Organization"});if(c0(q))throw K.error("Canceled adding organization"),Error("Organization creation cancelled");Q=q}if(!X&&!w){let q=await A6({message:"Management email:",placeholder:"admin@example.com"});if(c0(q))throw K.error("Canceled adding organization"),Error("Organization creation cancelled");w=q}if(!Q||!w){if(!X)K.error("Missing arguments, you need to provide an organization name and management email");throw Error("Missing organization name or management email")}if(!X)K.info(`Adding organization "${Q}" to Capgo`);let{data:F,error:B}=await Z.from("orgs").insert({name:Q,management_email:w,created_by:J}).select().single();if(B){if(!X)K.error(`Could not add organization ${p(B)}`);throw Error(`Could not add organization: ${p(B)}`)}if(await A0(Y.apikey,{channel:"organization",event:"Organization Created",icon:"\uD83C\uDFE2",user_id:F.id,tags:{"org-name":Q},notify:!1}).catch(()=>{}),!X)K.success(`Organization "${Q}" added to Capgo`),$0("Done ✅");return F}async function Ch(D,X,Y=!1){if(!Y)q0("Deleting organization");await o0();let Z={...X,apikey:X.apikey||Q0()};if(!Z.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to delete an organization");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide an organization ID");throw Error("Missing organization id")}let J=await K0(Z.apikey,Z.supaHost,Z.supaAnon),Q=await N0(J,Z.apikey,["write","all"]);await OJ(J,D,Y);let{data:w,error:F}=await J.from("orgs").select("created_by, name").eq("id",D).single();if(F||!w){if(!Y)K.error(`Cannot get organization details ${p(F)}`);throw Error(`Cannot get organization details: ${p(F)}`)}if(w.created_by!==Q){if(Y)throw Error("Deleting an organization is restricted to the organization owner");K.warn("Deleting an organization is restricted to the organization owner"),K.warn("You are not the owner of this organization"),K.warn("It's strongly recommended that you do not continue!");let q=await M8({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(c0(q)||q==="no")throw K.error("Canceled deleting the organization"),Error("Organization deletion cancelled")}if(!Y&&!Z.autoConfirm){let q=await sD({message:`Are you sure you want to delete organization "${w.name}"? This action cannot be undone.`});if(c0(q)||!q)throw K.error("Canceled deleting the organization"),Error("Organization deletion cancelled")}if(!Y)K.info(`Deleting organization "${w.name}"`);let{error:B}=await J.from("orgs").delete().eq("id",D);if(B){if(!Y)K.error(`Could not delete organization ${p(B)}`);throw Error(`Could not delete organization: ${p(B)}`)}if(await A0(Z.apikey,{channel:"organization",event:"Organization Deleted",icon:"\uD83D\uDDD1️",user_id:D,tags:{"org-name":w.name},notify:!1}).catch(()=>{}),!Y)K.success(`Organization "${w.name}" deleted from Capgo`),$0("Done ✅");return!0}function iX0(D,X){if(X)return;if(!D.length){K.error("No organizations found");return}let Y=new MD;Y.headers=["Name","ID","Role","Apps","2FA Required","2FA Access"],Y.rows=[];for(let J of D.toReversed()){let Q=J.enforcing_2fa?"✓ Yes":"✗ No",w=J["2fa_has_access"]?"✓ Yes":"✗ No";Y.rows.push([J.name??"Unknown",J.gid,J.role,J.app_count?.toString()||"0",Q,w])}K.success("Organizations"),K.success(Y.toString());let Z=D.filter((J)=>J.enforcing_2fa&&!J["2fa_has_access"]);if(Z.length>0){K.warn(`
408
+ `)}let J=await K0(D,X.supaHost,X.supaAnon),Q=await U0(J,D,["write","all","upload"]);if(await A0(D,{channel:"user-login",event:"User CLI login",icon:"✅",user_id:Q,notify:!1}).catch(),!Y)K.success(`login saved into .capgo file in ${Z?"local":"home"} directory`),$0("Done ✅")}async function Eh(D,X=!1){if(!X)q0("Adding organization");await o0();let Y={...D,apikey:D.apikey||Q0()};if(!Y.apikey){if(!X)K.error("Missing API key, you need to provide an API key to add an organization");throw Error("Missing API key")}let Z=await K0(Y.apikey,Y.supaHost,Y.supaAnon),J=await U0(Z,Y.apikey,["write","all"]),{name:Q,email:w}=Y;if(!X&&!Q){let q=await A6({message:"Organization name:",placeholder:"My Organization"});if(c0(q))throw K.error("Canceled adding organization"),Error("Organization creation cancelled");Q=q}if(!X&&!w){let q=await A6({message:"Management email:",placeholder:"admin@example.com"});if(c0(q))throw K.error("Canceled adding organization"),Error("Organization creation cancelled");w=q}if(!Q||!w){if(!X)K.error("Missing arguments, you need to provide an organization name and management email");throw Error("Missing organization name or management email")}if(!X)K.info(`Adding organization "${Q}" to Capgo`);let{data:F,error:B}=await Z.from("orgs").insert({name:Q,management_email:w,created_by:J}).select().single();if(B){if(!X)K.error(`Could not add organization ${p(B)}`);throw Error(`Could not add organization: ${p(B)}`)}if(await A0(Y.apikey,{channel:"organization",event:"Organization Created",icon:"\uD83C\uDFE2",user_id:F.id,tags:{"org-name":Q},notify:!1}).catch(()=>{}),!X)K.success(`Organization "${Q}" added to Capgo`),$0("Done ✅");return F}async function Ch(D,X,Y=!1){if(!Y)q0("Deleting organization");await o0();let Z={...X,apikey:X.apikey||Q0()};if(!Z.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to delete an organization");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide an organization ID");throw Error("Missing organization id")}let J=await K0(Z.apikey,Z.supaHost,Z.supaAnon),Q=await U0(J,Z.apikey,["write","all"]);await OJ(J,D,Y);let{data:w,error:F}=await J.from("orgs").select("created_by, name").eq("id",D).single();if(F||!w){if(!Y)K.error(`Cannot get organization details ${p(F)}`);throw Error(`Cannot get organization details: ${p(F)}`)}if(w.created_by!==Q){if(Y)throw Error("Deleting an organization is restricted to the organization owner");K.warn("Deleting an organization is restricted to the organization owner"),K.warn("You are not the owner of this organization"),K.warn("It's strongly recommended that you do not continue!");let q=await M8({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(c0(q)||q==="no")throw K.error("Canceled deleting the organization"),Error("Organization deletion cancelled")}if(!Y&&!Z.autoConfirm){let q=await sD({message:`Are you sure you want to delete organization "${w.name}"? This action cannot be undone.`});if(c0(q)||!q)throw K.error("Canceled deleting the organization"),Error("Organization deletion cancelled")}if(!Y)K.info(`Deleting organization "${w.name}"`);let{error:B}=await J.from("orgs").delete().eq("id",D);if(B){if(!Y)K.error(`Could not delete organization ${p(B)}`);throw Error(`Could not delete organization: ${p(B)}`)}if(await A0(Z.apikey,{channel:"organization",event:"Organization Deleted",icon:"\uD83D\uDDD1️",user_id:D,tags:{"org-name":w.name},notify:!1}).catch(()=>{}),!Y)K.success(`Organization "${w.name}" deleted from Capgo`),$0("Done ✅");return!0}function iX0(D,X){if(X)return;if(!D.length){K.error("No organizations found");return}let Y=new MD;Y.headers=["Name","ID","Role","Apps","2FA Required","2FA Access"],Y.rows=[];for(let J of D.toReversed()){let Q=J.enforcing_2fa?"✓ Yes":"✗ No",w=J["2fa_has_access"]?"✓ Yes":"✗ No";Y.rows.push([J.name??"Unknown",J.gid,J.role,J.app_count?.toString()||"0",Q,w])}K.success("Organizations"),K.success(Y.toString());let Z=D.filter((J)=>J.enforcing_2fa&&!J["2fa_has_access"]);if(Z.length>0){K.warn(`
409
409
  ⚠️ You don't have access to ${Z.length} organization(s) due to 2FA enforcement:`);for(let J of Z)K.warn(` - ${J.name} (${J.gid})`);K.warn(`
410
- To regain access, enable 2FA on your account at https://web.capgo.app/settings/account`)}}async function jh(D,X=!1){if(!X)q0("List organizations");await o0();let Y={...D,apikey:D.apikey||Q0()};if(!Y.apikey){if(!X)K.error("Missing API key, you need to provide an API key to list organizations");throw Error("Missing API key")}let Z=await K0(Y.apikey,Y.supaHost,Y.supaAnon);if(await N0(Z,Y.apikey,["read","write","all"]),!X)K.info("Getting organizations from Capgo");let{error:J,data:Q}=await Z.rpc("get_orgs_v7");if(J){if(!X)K.error(`Cannot get organizations ${p(J)}`);throw Error(`Cannot get organizations: ${p(J)}`)}let w=Q||[];if(!X)K.info(`Organizations found: ${w.length}`),iX0(w,X),$0("Done ✅");return w}async function Th(D,X,Y=!1){if(!Y)q0("Updating organization");await o0();let Z={...X,apikey:X.apikey||Q0()};if(!Z.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to update an organization");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide an organization ID");throw Error("Missing organization id")}let J=await K0(Z.apikey,Z.supaHost,Z.supaAnon);await N0(J,Z.apikey,["write","all"]),await OJ(J,D,Y);let{data:Q,error:w}=await J.from("orgs").select("name, management_email, created_by, enforcing_2fa, password_policy_config, require_apikey_expiration, max_apikey_expiration_days, enforce_hashed_api_keys").eq("id",D).single();if(w||!Q){if(!Y)K.error(`Cannot get organization details ${p(w)}`);throw Error(`Cannot get organization details: ${p(w)}`)}let{name:F,email:B,enforce2fa:q}=Z,{passwordPolicy:$,minLength:G,requireUppercase:W,requireNumber:O,requireSpecial:H}=Z,{requireApikeyExpiration:M,maxApikeyExpirationDays:U,enforceHashedApiKeys:N}=Z;if(q!==void 0){if(!Y){if(q&&!Q.enforcing_2fa){K.info("Checking organization members 2FA status...");let{data:C,error:k}=await J.rpc("check_org_members_2fa_enabled",{org_id:D});if(k)throw K.error(`Cannot check members 2FA status: ${p(k)}`),Error("Cannot check members 2FA status");let{data:A,error:y}=await J.rpc("has_2fa_enabled");if(y)throw K.error(`Cannot check your 2FA status: ${p(y)}`),Error("Cannot check your 2FA status");let{data:f,error:S}=await J.rpc("get_identity_apikey_only",{keymode:["read","upload","write","all"]});if(S||!f)throw K.error(`Cannot get current user identity: ${S?p(S):"No user ID returned"}`),Error("Cannot get current user identity");let v=C?.filter((b)=>!b["2fa_enabled"]&&b.user_id!==f)||[];if(v.length>0||!A){if(K.warn("⚠️ Warning: Enabling 2FA enforcement will affect access"),K.message("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),!A)K.warn("\uD83D\uDD10 YOU do not have 2FA enabled! By enabling 2FA enforcement, you will LOSE ACCESS to this organization until you enable 2FA on your account.");if(v.length>0){let{data:n,error:h}=await J.rpc("get_org_members",{guild_id:D});if(h)throw K.error(`Cannot get organization members: ${p(h)}`),Error("Cannot get organization members");let E=new Map(n?.map((g)=>[g.uid,g])||[]),P=v.map((g)=>{return E.get(g.user_id)?.email||g.user_id}),x=v.length===1?"member does":"members do",_=v.length===1?"This member will":"These members will";K.warn(`${v.length} ${x} not have 2FA enabled: ${P.join(", ")}`),K.warn(`${_} lose access until they enable 2FA.`)}let b=await sD({message:"Are you sure you want to enable 2FA enforcement?"});if(c0(b)||!b)throw K.error("Canceled enabling 2FA enforcement"),Error("2FA enforcement cancelled")}K.info("Enabling 2FA enforcement for organization...")}else if(!q&&Q.enforcing_2fa)K.info("Disabling 2FA enforcement for organization...")}let{error:V}=await J.from("orgs").update({enforcing_2fa:q}).eq("id",D);if(V){if(!Y)K.error(`Could not update 2FA enforcement: ${p(V)}`);throw Error(`Could not update 2FA enforcement: ${p(V)}`)}if(!Y)if(q)K.success("✓ 2FA enforcement enabled for this organization");else K.success("✓ 2FA enforcement disabled for this organization");if(F===void 0&&B===void 0&&!($!==void 0||M!==void 0||U!==void 0||N!==void 0)){if(await A0(Z.apikey,{channel:"organization",event:q?"Organization 2FA Enabled":"Organization 2FA Disabled",icon:"\uD83D\uDD10",user_id:D,tags:{"org-name":Q.name,"enforce-2fa":q.toString()},notify:!1}).catch(()=>{}),!Y)$0("Done ✅");return{orgId:D,name:Q.name,email:Q.management_email,enforce2fa:q}}}if($!==void 0){if(!Y)if($){K.info("Configuring password policy for organization...");let{data:C,error:k}=await J.rpc("check_org_members_password_policy",{org_id:D});if(k){if(!k.message?.includes("NO_RIGHTS"))K.warn(`Cannot check members password policy status: ${p(k)}`)}else if(C){let A=C.filter((y)=>!y.password_policy_compliant);if(A.length>0){K.warn(`⚠️ Warning: ${A.length} member(s) do not meet the password policy requirements`),K.warn("These members will need to update their passwords to regain access.");let y=await sD({message:"Are you sure you want to enable the password policy?"});if(c0(y)||!y)throw K.error("Canceled enabling password policy"),Error("Password policy configuration cancelled")}}}else K.info("Disabling password policy for organization...");let V={enabled:$,min_length:G??10,require_uppercase:W??!0,require_number:O??!0,require_special:H??!0},{error:L}=await J.from("orgs").update({password_policy_config:V}).eq("id",D);if(L){if(!Y)K.error(`Could not update password policy: ${p(L)}`);throw Error(`Could not update password policy: ${p(L)}`)}if(!Y)if($)K.success("✓ Password policy enabled for this organization"),K.info(` - Minimum length: ${V.min_length} characters`),K.info(` - Require uppercase: ${V.require_uppercase?"Yes":"No"}`),K.info(` - Require number: ${V.require_number?"Yes":"No"}`),K.info(` - Require special character: ${V.require_special?"Yes":"No"}`);else K.success("✓ Password policy disabled for this organization");if(F===void 0&&B===void 0&&q===void 0&&M===void 0&&U===void 0&&N===void 0){if(await A0(Z.apikey,{channel:"organization",event:$?"Password Policy Enabled":"Password Policy Disabled",icon:"\uD83D\uDD11",user_id:D,tags:{"org-name":Q.name},notify:!1}).catch(()=>{}),!Y)$0("Done ✅");return{orgId:D,name:Q.name,email:Q.management_email,passwordPolicy:$}}}if(M!==void 0||U!==void 0||N!==void 0){if(!Y)K.info("Updating API key security settings...");if(U!==void 0&&U!==null){if(U<1||U>365){if(!Y)K.error("Maximum API key expiration days must be between 1 and 365");throw Error("Maximum API key expiration days must be between 1 and 365")}}let V={};if(M!==void 0)V.require_apikey_expiration=M;if(U!==void 0)V.max_apikey_expiration_days=U;if(N!==void 0)V.enforce_hashed_api_keys=N;let{error:L}=await J.from("orgs").update(V).eq("id",D);if(L){if(!Y)K.error(`Could not update API key settings: ${p(L)}`);throw Error(`Could not update API key settings: ${p(L)}`)}if(!Y){if(M!==void 0)K.success(`✓ API key expiration requirement: ${M?"Enabled":"Disabled"}`);if(U!==void 0)if(U===null)K.success("✓ Maximum API key expiration days: No limit");else K.success(`✓ Maximum API key expiration days: ${U}`);if(N!==void 0)K.success(`✓ Hashed API keys enforcement: ${N?"Enabled":"Disabled"}`)}if(F===void 0&&B===void 0&&q===void 0&&$===void 0){if(await A0(Z.apikey,{channel:"organization",event:"API Key Settings Updated",icon:"\uD83D\uDD10",user_id:D,tags:{"org-name":Q.name},notify:!1}).catch(()=>{}),!Y)$0("Done ✅");return{orgId:D,name:Q.name,email:Q.management_email}}}if(!Y&&!F){let V=await A6({message:"New organization name:",placeholder:Q.name||"My Organization"});if(c0(V))throw K.error("Canceled updating organization"),Error("Organization update cancelled");F=V}if(!Y&&!B){let V=await A6({message:"Management email:",placeholder:Q.management_email||"admin@example.com"});if(c0(V))throw K.error("Canceled updating organization"),Error("Organization update cancelled");B=V}if(!F||!B){if(!Y)K.error("Missing arguments, you need to provide an organization name and management email");throw Error("Missing organization name or management email")}if(!Y)K.info(`Updating organization "${D}"`);let{error:z}=await J.from("orgs").update({name:F,management_email:B}).eq("id",D);if(z){if(!Y)K.error(`Could not update organization ${p(z)}`);throw Error(`Could not update organization: ${p(z)}`)}if(await A0(Z.apikey,{channel:"organization",event:"Organization Updated",icon:"✏️",user_id:D,tags:{"org-name":F},notify:!1}).catch(()=>{}),!Y)K.success("Organization updated"),$0("Done ✅");return{orgId:D,name:F,email:B,enforce2fa:q??Q.enforcing_2fa}}async function Ih(D,X=!1){if(!X)q0("Getting user id");let Y={...D,apikey:D.apikey||Q0()};if(!Y.apikey){if(!X)K.error("Missing API key, you need to provide an API key to fetch the user id");throw Error("Missing API key")}try{let Z=await K0(Y.apikey,Y.supaHost,Y.supaAnon),J=await N0(Z,Y.apikey,["read","all","write"]);if(!X)$0(`Done ✅: ${J}`);return J}catch(Z){if(!X)K.error(`Error getting user id ${p(Z)}`);throw Z instanceof Error?Z:Error(String(Z))}}function k0(D){let X=D instanceof Error?D.message:String(D),Y=Z5(D);return{success:!1,error:X,isSecurityPolicyError:Y.isSecurityPolicyError,securityPolicyMessage:Y.isSecurityPolicyError?Y.message:void 0}}class GD{apikey;supaHost;supaAnon;constructor(D){this.apikey=D?.apikey,this.supaHost=D?.supaHost,this.supaAnon=D?.supaAnon}async login(D){try{return await Ah(D.apikey,{local:D.local??!1,supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon},!0),{success:!0}}catch(X){return k0(X)}}async doctor(D){try{return{success:!0,data:await Gk({packageJson:D?.packageJson},!0)}}catch(X){return k0(X)}}async addApp(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,name:D.name,icon:D.icon};return await Fk(D.appId,X,void 0,!0),{success:!0}}catch(X){return k0(X)}}async updateApp(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,name:D.name,icon:D.icon,retention:D.retention};return await Hk(D.appId,X,!0),{success:!0}}catch(X){return k0(X)}}async deleteApp(D,X=!1){try{let Y={apikey:this.apikey||Q0(!0),supaHost:this.supaHost,supaAnon:this.supaAnon};return await Bk(D,Y,!1,X),{success:!0}}catch(Y){return k0(Y)}}async listApps(){try{let D={apikey:this.apikey||Q0(!0),supaHost:this.supaHost,supaAnon:this.supaAnon};return{success:!0,data:(await Ok(D,!1)).map((Z)=>({appId:Z.app_id,name:Z.name||"Unknown",iconUrl:Z.icon_url||void 0,createdAt:new Date(Z.created_at||"")}))}}catch(D){return k0(D)}}async getAccountId(D){try{let X={apikey:D?.apikey||this.apikey||Q0(!0),supaHost:D?.supaHost||this.supaHost,supaAnon:D?.supaAnon||this.supaAnon};return{success:!0,data:await Ih(X,!0)}}catch(X){return k0(X)}}async checkBundleCompatibility(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),channel:D.channel,text:D.textOutput??!1,packageJson:D.packageJson,nodeModules:D.nodeModules,supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon};return{success:!0,data:(await Ak(D.appId,X,!0)).finalCompatibility}}catch(X){return k0(X)}}async encryptBundle(D){try{return{success:!0,data:await kk(D.zipPath,D.checksum,{key:D.keyPath,keyData:D.keyData,json:D.json,packageJson:D.packageJson},!0)}}catch(X){return k0(X)}}async decryptBundle(D){try{return{success:!0,data:await xk(D.zipPath,D.ivSessionKey,{key:D.keyPath,keyData:D.keyData,checksum:D.checksum,packageJson:D.packageJson},!0)}}catch(X){return k0(X)}}async zipBundle(D){try{return{success:!0,data:await $h(D.appId,{apikey:this.apikey||Q0(!0),path:D.path,bundle:D.bundle,name:D.name,codeCheck:D.codeCheck,json:D.json,keyV2:D.keyV2,packageJson:D.packageJson},!0)}}catch(X){return k0(X)}}async uploadBundle(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,path:D.path,bundle:D.bundle,channel:D.channel,external:D.external,key:D.encrypt!==!1,keyV2:D.encryptionKey,timeout:D.timeout,tus:D.useTus,comment:D.comment,minUpdateVersion:D.minUpdateVersion,autoMinUpdateVersion:D.autoMinUpdateVersion,selfAssign:D.selfAssign,packageJson:D.packageJsonPaths,ignoreMetadataCheck:D.ignoreCompatibilityCheck,codeCheck:!D.disableCodeCheck,zip:D.useZip},Y=await GG(D.appId,X,!0);return{success:Y.success,bundleId:Y.bundle,checksum:Y.checksum??null,encryptionMethod:Y.encryptionMethod,sessionKey:Y.sessionKey,ivSessionKey:Y.ivSessionKey,storageProvider:Y.storageProvider,skipped:Y.skipped,reason:Y.reason}}catch(X){return k0(X)}}async listBundles(D){try{let X=this.apikey||Q0(!0),Y=await K0(X,this.supaHost,this.supaAnon);return{success:!0,data:(await UJ(Y,D)).map((Q)=>({id:Q.id.toString(),version:Q.name,uploadedAt:new Date(Q.created_at||""),size:0,encrypted:Q.session_key!==null}))}}catch(X){return k0(X)}}async deleteBundle(D,X){try{let Y={apikey:this.apikey||Q0(!0),supaHost:this.supaHost,supaAnon:this.supaAnon,bundle:X};return await fk(X,D,Y,!0),{success:!0}}catch(Y){return k0(Y)}}async cleanupBundles(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,bundle:D.bundle||"",version:"",keep:D.keep||4,force:D.force||!1,ignoreChannel:D.ignoreChannel||!1};return{success:!0,data:await Rk(D.appId,X,!0)}}catch(X){return k0(X)}}async requestBuild(D){try{let X=D.credentials,Y={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,path:D.path,platform:D.platform,userId:D.userId,buildCertificateBase64:X?.BUILD_CERTIFICATE_BASE64,buildProvisionProfileBase64:X?.BUILD_PROVISION_PROFILE_BASE64,buildProvisionProfileBase64Prod:X?.BUILD_PROVISION_PROFILE_BASE64_PROD,p12Password:X?.P12_PASSWORD,appleKeyId:X?.APPLE_KEY_ID,appleIssuerId:X?.APPLE_ISSUER_ID,appleKeyContent:X?.APPLE_KEY_CONTENT,appStoreConnectTeamId:X?.APP_STORE_CONNECT_TEAM_ID,androidKeystoreFile:X?.ANDROID_KEYSTORE_FILE,keystoreKeyAlias:X?.KEYSTORE_KEY_ALIAS,keystoreKeyPassword:X?.KEYSTORE_KEY_PASSWORD,keystoreStorePassword:X?.KEYSTORE_STORE_PASSWORD,playConfigJson:X?.PLAY_CONFIG_JSON},Z=await Nk(D.appId,Y,!0);if(Z.success&&Z.jobId)return{success:!0,data:{jobId:Z.jobId,uploadUrl:Z.uploadUrl||"",status:Z.status||"unknown"}};return{success:!1,error:Z.error||"Unknown error during build request"}}catch(X){return k0(X)}}async getCurrentBundle(D,X,Y){try{let Z={apikey:Y?.apikey||this.apikey||Q0(!0),quiet:!0,supaHost:Y?.supaHost||this.supaHost,supaAnon:Y?.supaAnon||this.supaAnon};return{success:!0,data:await Oh(X,D,Z,!0)}}catch(Z){return k0(Z)}}async addChannel(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,default:D.default,selfAssign:D.selfAssign};return await Gh(D.channelId,D.appId,X,!0),{success:!0}}catch(X){return k0(X)}}async updateChannel(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,bundle:D.bundle??void 0,state:D.state,downgrade:D.downgrade,ios:D.ios,android:D.android,selfAssign:D.selfAssign,disableAutoUpdate:D.disableAutoUpdate??void 0,dev:D.dev,emulator:D.emulator,device:D.device,prod:D.prod,latest:!1,latestRemote:!1,packageJson:void 0,ignoreMetadataCheck:!1};return await Mh(D.channelId,D.appId,X,!0),{success:!0}}catch(X){return k0(X)}}async deleteChannel(D,X,Y=!1){try{let Z={apikey:this.apikey||Q0(!0),supaHost:this.supaHost,supaAnon:this.supaAnon,deleteBundle:Y,successIfNotFound:!1};return await Wh(D,X,Z,!0),{success:!0}}catch(Z){return k0(Z)}}async listChannels(D){try{let X={apikey:this.apikey||Q0(!0),supaHost:this.supaHost,supaAnon:this.supaAnon};return{success:!0,data:await Hh(D,X,!0)}}catch(X){return k0(X)}}async generateEncryptionKeys(D){try{return await Nh({force:D?.force,setupChannel:D?.setupChannel},!0),{success:!0}}catch(X){return k0(X)}}async saveEncryptionKey(D){try{return await Vh({key:D?.keyPath,keyData:D?.keyData,setupChannel:D?.setupChannel},!0),{success:!0}}catch(X){return k0(X)}}async deleteLegacyEncryptionKey(D){try{return{success:!0,data:{deleted:await Uh({force:D?.force,setupChannel:D?.setupChannel},!0)}}}catch(X){return k0(X)}}async listOrganizations(D){try{let X={apikey:D?.apikey||this.apikey||Q0(!0),supaHost:D?.supaHost||this.supaHost,supaAnon:D?.supaAnon||this.supaAnon};return{success:!0,data:(await jh(X,!0)).map((J)=>({id:String(J.id??J.gid??""),name:J.name??"Unknown",role:J.role??void 0,appCount:typeof J.app_count==="number"?J.app_count:void 0,email:J.management_email??void 0,createdAt:J.created_at?new Date(J.created_at):void 0}))}}catch(X){return k0(X)}}async addOrganization(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,name:D.name,email:D.email},Y=await Eh(X,!0);return{success:!0,data:{id:String(Y.id??Y.gid??""),name:Y.name??D.name,role:"owner",appCount:0,email:Y.management_email??D.email,createdAt:Y.created_at?new Date(Y.created_at):void 0}}}catch(X){return k0(X)}}async updateOrganization(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,name:D.name,email:D.email},Y=await Th(D.orgId,X,!0);return{success:!0,data:{id:Y.orgId,name:Y.name,email:Y.email}}}catch(X){return k0(X)}}async deleteOrganization(D,X){try{let Y={apikey:X?.apikey||this.apikey||Q0(!0),supaHost:X?.supaHost||this.supaHost,supaAnon:X?.supaAnon||this.supaAnon,autoConfirm:X?.autoConfirm??!0};return{success:!0,data:{deleted:await Ch(D,Y,!0)}}}catch(Y){return k0(Y)}}async getStats(D){try{let X=D.apikey||this.apikey||Q0(!0),Y=await C8(),Z={appId:D.appId,devicesId:D.deviceIds,search:D.search,order:D.order,rangeStart:D.after||D.rangeStart,rangeEnd:D.rangeEnd,limit:D.limit},J=await fetch(`${Y.hostApi}/private/stats`,{method:"POST",headers:{"Content-Type":"application/json",capgkey:X},body:JSON.stringify(Z)});if(!J.ok)throw Error(`HTTP error! status: ${J.status}`);return{success:!0,data:(await J.json()).map((F)=>({appId:F.app_id,deviceId:F.device_id,action:F.action,versionId:F.version_id,version:F.version,createdAt:F.created_at}))}}catch(X){return k0(X)}}async setAppSetting(D,X){try{return await Kk(D,{apikey:X.apikey||this.apikey||Q0(!0),bool:X.bool,string:X.string},!0),{success:!0}}catch(Y){return k0(Y)}}}async function pX0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).uploadBundle(D)}async function aX0(D){return new GD({supaHost:D.supaHost,supaAnon:D.supaAnon}).login(D)}async function tX0(D){return new GD().doctor(D)}async function rX0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).checkBundleCompatibility(D)}async function sX0(D){return new GD().encryptBundle(D)}async function oX0(D){return new GD().decryptBundle(D)}async function eX0(D){return new GD().zipBundle(D)}async function DY0(D){return new GD().generateEncryptionKeys(D)}async function XY0(D){return new GD().saveEncryptionKey(D)}async function YY0(D){return new GD().deleteLegacyEncryptionKey(D)}async function ZY0(D,X,Y){return new GD({apikey:Y?.apikey,supaHost:Y?.supaHost,supaAnon:Y?.supaAnon}).getCurrentBundle(D,X,Y)}async function JY0(D,X){return new GD({apikey:X.apikey}).setAppSetting(D,X)}async function QY0(D){return new GD({apikey:D?.apikey,supaHost:D?.supaHost,supaAnon:D?.supaAnon}).getAccountId(D)}async function wY0(D){return new GD({apikey:D?.apikey,supaHost:D?.supaHost,supaAnon:D?.supaAnon}).listOrganizations(D)}async function FY0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).addOrganization(D)}async function BY0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).updateOrganization(D)}async function qY0(D,X){return new GD({apikey:X?.apikey,supaHost:X?.supaHost,supaAnon:X?.supaAnon}).deleteOrganization(D,X)}async function $Y0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).addApp(D)}async function GY0(D,X){return new GD(X).listBundles(D)}async function OY0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).addChannel(D)}async function WY0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).requestBuild(D)}async function HY0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).getStats(D)}async function KY0(){try{return await H0()}catch{return null}}
410
+ To regain access, enable 2FA on your account at https://web.capgo.app/settings/account`)}}async function jh(D,X=!1){if(!X)q0("List organizations");await o0();let Y={...D,apikey:D.apikey||Q0()};if(!Y.apikey){if(!X)K.error("Missing API key, you need to provide an API key to list organizations");throw Error("Missing API key")}let Z=await K0(Y.apikey,Y.supaHost,Y.supaAnon);if(await U0(Z,Y.apikey,["read","write","all"]),!X)K.info("Getting organizations from Capgo");let{error:J,data:Q}=await Z.rpc("get_orgs_v7");if(J){if(!X)K.error(`Cannot get organizations ${p(J)}`);throw Error(`Cannot get organizations: ${p(J)}`)}let w=Q||[];if(!X)K.info(`Organizations found: ${w.length}`),iX0(w,X),$0("Done ✅");return w}async function Th(D,X,Y=!1){if(!Y)q0("Updating organization");await o0();let Z={...X,apikey:X.apikey||Q0()};if(!Z.apikey){if(!Y)K.error("Missing API key, you need to provide an API key to update an organization");throw Error("Missing API key")}if(!D){if(!Y)K.error("Missing argument, you need to provide an organization ID");throw Error("Missing organization id")}let J=await K0(Z.apikey,Z.supaHost,Z.supaAnon);await U0(J,Z.apikey,["write","all"]),await OJ(J,D,Y);let{data:Q,error:w}=await J.from("orgs").select("name, management_email, created_by, enforcing_2fa, password_policy_config, require_apikey_expiration, max_apikey_expiration_days, enforce_hashed_api_keys").eq("id",D).single();if(w||!Q){if(!Y)K.error(`Cannot get organization details ${p(w)}`);throw Error(`Cannot get organization details: ${p(w)}`)}let{name:F,email:B,enforce2fa:q}=Z,{passwordPolicy:$,minLength:G,requireUppercase:W,requireNumber:O,requireSpecial:H}=Z,{requireApikeyExpiration:M,maxApikeyExpirationDays:U,enforceHashedApiKeys:N}=Z;if(q!==void 0){if(!Y){if(q&&!Q.enforcing_2fa){K.info("Checking organization members 2FA status...");let{data:C,error:k}=await J.rpc("check_org_members_2fa_enabled",{org_id:D});if(k)throw K.error(`Cannot check members 2FA status: ${p(k)}`),Error("Cannot check members 2FA status");let{data:A,error:y}=await J.rpc("has_2fa_enabled");if(y)throw K.error(`Cannot check your 2FA status: ${p(y)}`),Error("Cannot check your 2FA status");let{data:f,error:S}=await J.rpc("get_identity_apikey_only",{keymode:["read","upload","write","all"]});if(S||!f)throw K.error(`Cannot get current user identity: ${S?p(S):"No user ID returned"}`),Error("Cannot get current user identity");let v=C?.filter((b)=>!b["2fa_enabled"]&&b.user_id!==f)||[];if(v.length>0||!A){if(K.warn("⚠️ Warning: Enabling 2FA enforcement will affect access"),K.message("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),!A)K.warn("\uD83D\uDD10 YOU do not have 2FA enabled! By enabling 2FA enforcement, you will LOSE ACCESS to this organization until you enable 2FA on your account.");if(v.length>0){let{data:n,error:h}=await J.rpc("get_org_members",{guild_id:D});if(h)throw K.error(`Cannot get organization members: ${p(h)}`),Error("Cannot get organization members");let E=new Map(n?.map((g)=>[g.uid,g])||[]),P=v.map((g)=>{return E.get(g.user_id)?.email||g.user_id}),x=v.length===1?"member does":"members do",_=v.length===1?"This member will":"These members will";K.warn(`${v.length} ${x} not have 2FA enabled: ${P.join(", ")}`),K.warn(`${_} lose access until they enable 2FA.`)}let b=await sD({message:"Are you sure you want to enable 2FA enforcement?"});if(c0(b)||!b)throw K.error("Canceled enabling 2FA enforcement"),Error("2FA enforcement cancelled")}K.info("Enabling 2FA enforcement for organization...")}else if(!q&&Q.enforcing_2fa)K.info("Disabling 2FA enforcement for organization...")}let{error:V}=await J.from("orgs").update({enforcing_2fa:q}).eq("id",D);if(V){if(!Y)K.error(`Could not update 2FA enforcement: ${p(V)}`);throw Error(`Could not update 2FA enforcement: ${p(V)}`)}if(!Y)if(q)K.success("✓ 2FA enforcement enabled for this organization");else K.success("✓ 2FA enforcement disabled for this organization");if(F===void 0&&B===void 0&&!($!==void 0||M!==void 0||U!==void 0||N!==void 0)){if(await A0(Z.apikey,{channel:"organization",event:q?"Organization 2FA Enabled":"Organization 2FA Disabled",icon:"\uD83D\uDD10",user_id:D,tags:{"org-name":Q.name,"enforce-2fa":q.toString()},notify:!1}).catch(()=>{}),!Y)$0("Done ✅");return{orgId:D,name:Q.name,email:Q.management_email,enforce2fa:q}}}if($!==void 0){if(!Y)if($){K.info("Configuring password policy for organization...");let{data:C,error:k}=await J.rpc("check_org_members_password_policy",{org_id:D});if(k){if(!k.message?.includes("NO_RIGHTS"))K.warn(`Cannot check members password policy status: ${p(k)}`)}else if(C){let A=C.filter((y)=>!y.password_policy_compliant);if(A.length>0){K.warn(`⚠️ Warning: ${A.length} member(s) do not meet the password policy requirements`),K.warn("These members will need to update their passwords to regain access.");let y=await sD({message:"Are you sure you want to enable the password policy?"});if(c0(y)||!y)throw K.error("Canceled enabling password policy"),Error("Password policy configuration cancelled")}}}else K.info("Disabling password policy for organization...");let V={enabled:$,min_length:G??10,require_uppercase:W??!0,require_number:O??!0,require_special:H??!0},{error:L}=await J.from("orgs").update({password_policy_config:V}).eq("id",D);if(L){if(!Y)K.error(`Could not update password policy: ${p(L)}`);throw Error(`Could not update password policy: ${p(L)}`)}if(!Y)if($)K.success("✓ Password policy enabled for this organization"),K.info(` - Minimum length: ${V.min_length} characters`),K.info(` - Require uppercase: ${V.require_uppercase?"Yes":"No"}`),K.info(` - Require number: ${V.require_number?"Yes":"No"}`),K.info(` - Require special character: ${V.require_special?"Yes":"No"}`);else K.success("✓ Password policy disabled for this organization");if(F===void 0&&B===void 0&&q===void 0&&M===void 0&&U===void 0&&N===void 0){if(await A0(Z.apikey,{channel:"organization",event:$?"Password Policy Enabled":"Password Policy Disabled",icon:"\uD83D\uDD11",user_id:D,tags:{"org-name":Q.name},notify:!1}).catch(()=>{}),!Y)$0("Done ✅");return{orgId:D,name:Q.name,email:Q.management_email,passwordPolicy:$}}}if(M!==void 0||U!==void 0||N!==void 0){if(!Y)K.info("Updating API key security settings...");if(U!==void 0&&U!==null){if(U<1||U>365){if(!Y)K.error("Maximum API key expiration days must be between 1 and 365");throw Error("Maximum API key expiration days must be between 1 and 365")}}let V={};if(M!==void 0)V.require_apikey_expiration=M;if(U!==void 0)V.max_apikey_expiration_days=U;if(N!==void 0)V.enforce_hashed_api_keys=N;let{error:L}=await J.from("orgs").update(V).eq("id",D);if(L){if(!Y)K.error(`Could not update API key settings: ${p(L)}`);throw Error(`Could not update API key settings: ${p(L)}`)}if(!Y){if(M!==void 0)K.success(`✓ API key expiration requirement: ${M?"Enabled":"Disabled"}`);if(U!==void 0)if(U===null)K.success("✓ Maximum API key expiration days: No limit");else K.success(`✓ Maximum API key expiration days: ${U}`);if(N!==void 0)K.success(`✓ Hashed API keys enforcement: ${N?"Enabled":"Disabled"}`)}if(F===void 0&&B===void 0&&q===void 0&&$===void 0){if(await A0(Z.apikey,{channel:"organization",event:"API Key Settings Updated",icon:"\uD83D\uDD10",user_id:D,tags:{"org-name":Q.name},notify:!1}).catch(()=>{}),!Y)$0("Done ✅");return{orgId:D,name:Q.name,email:Q.management_email}}}if(!Y&&!F){let V=await A6({message:"New organization name:",placeholder:Q.name||"My Organization"});if(c0(V))throw K.error("Canceled updating organization"),Error("Organization update cancelled");F=V}if(!Y&&!B){let V=await A6({message:"Management email:",placeholder:Q.management_email||"admin@example.com"});if(c0(V))throw K.error("Canceled updating organization"),Error("Organization update cancelled");B=V}if(!F||!B){if(!Y)K.error("Missing arguments, you need to provide an organization name and management email");throw Error("Missing organization name or management email")}if(!Y)K.info(`Updating organization "${D}"`);let{error:z}=await J.from("orgs").update({name:F,management_email:B}).eq("id",D);if(z){if(!Y)K.error(`Could not update organization ${p(z)}`);throw Error(`Could not update organization: ${p(z)}`)}if(await A0(Z.apikey,{channel:"organization",event:"Organization Updated",icon:"✏️",user_id:D,tags:{"org-name":F},notify:!1}).catch(()=>{}),!Y)K.success("Organization updated"),$0("Done ✅");return{orgId:D,name:F,email:B,enforce2fa:q??Q.enforcing_2fa}}async function Ih(D,X=!1){if(!X)q0("Getting user id");let Y={...D,apikey:D.apikey||Q0()};if(!Y.apikey){if(!X)K.error("Missing API key, you need to provide an API key to fetch the user id");throw Error("Missing API key")}try{let Z=await K0(Y.apikey,Y.supaHost,Y.supaAnon),J=await U0(Z,Y.apikey,["read","all","write"]);if(!X)$0(`Done ✅: ${J}`);return J}catch(Z){if(!X)K.error(`Error getting user id ${p(Z)}`);throw Z instanceof Error?Z:Error(String(Z))}}function k0(D){let X=D instanceof Error?D.message:String(D),Y=Z5(D);return{success:!1,error:X,isSecurityPolicyError:Y.isSecurityPolicyError,securityPolicyMessage:Y.isSecurityPolicyError?Y.message:void 0}}class GD{apikey;supaHost;supaAnon;constructor(D){this.apikey=D?.apikey,this.supaHost=D?.supaHost,this.supaAnon=D?.supaAnon}async login(D){try{return await Ah(D.apikey,{local:D.local??!1,supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon},!0),{success:!0}}catch(X){return k0(X)}}async doctor(D){try{return{success:!0,data:await Gk({packageJson:D?.packageJson},!0)}}catch(X){return k0(X)}}async addApp(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,name:D.name,icon:D.icon};return await Fk(D.appId,X,void 0,!0),{success:!0}}catch(X){return k0(X)}}async updateApp(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,name:D.name,icon:D.icon,retention:D.retention};return await Hk(D.appId,X,!0),{success:!0}}catch(X){return k0(X)}}async deleteApp(D,X=!1){try{let Y={apikey:this.apikey||Q0(!0),supaHost:this.supaHost,supaAnon:this.supaAnon};return await Bk(D,Y,!1,X),{success:!0}}catch(Y){return k0(Y)}}async listApps(){try{let D={apikey:this.apikey||Q0(!0),supaHost:this.supaHost,supaAnon:this.supaAnon};return{success:!0,data:(await Ok(D,!1)).map((Z)=>({appId:Z.app_id,name:Z.name||"Unknown",iconUrl:Z.icon_url||void 0,createdAt:new Date(Z.created_at||"")}))}}catch(D){return k0(D)}}async getAccountId(D){try{let X={apikey:D?.apikey||this.apikey||Q0(!0),supaHost:D?.supaHost||this.supaHost,supaAnon:D?.supaAnon||this.supaAnon};return{success:!0,data:await Ih(X,!0)}}catch(X){return k0(X)}}async checkBundleCompatibility(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),channel:D.channel,text:D.textOutput??!1,packageJson:D.packageJson,nodeModules:D.nodeModules,supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon};return{success:!0,data:(await Ak(D.appId,X,!0)).finalCompatibility}}catch(X){return k0(X)}}async encryptBundle(D){try{return{success:!0,data:await kk(D.zipPath,D.checksum,{key:D.keyPath,keyData:D.keyData,json:D.json,packageJson:D.packageJson},!0)}}catch(X){return k0(X)}}async decryptBundle(D){try{return{success:!0,data:await xk(D.zipPath,D.ivSessionKey,{key:D.keyPath,keyData:D.keyData,checksum:D.checksum,packageJson:D.packageJson},!0)}}catch(X){return k0(X)}}async zipBundle(D){try{return{success:!0,data:await $h(D.appId,{apikey:this.apikey||Q0(!0),path:D.path,bundle:D.bundle,name:D.name,codeCheck:D.codeCheck,json:D.json,keyV2:D.keyV2,packageJson:D.packageJson},!0)}}catch(X){return k0(X)}}async uploadBundle(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,path:D.path,bundle:D.bundle,channel:D.channel,external:D.external,key:D.encrypt!==!1,keyV2:D.encryptionKey,timeout:D.timeout,tus:D.useTus,comment:D.comment,minUpdateVersion:D.minUpdateVersion,autoMinUpdateVersion:D.autoMinUpdateVersion,selfAssign:D.selfAssign,packageJson:D.packageJsonPaths,ignoreMetadataCheck:D.ignoreCompatibilityCheck,codeCheck:!D.disableCodeCheck,zip:D.useZip},Y=await GG(D.appId,X,!0);return{success:Y.success,bundleId:Y.bundle,checksum:Y.checksum??null,encryptionMethod:Y.encryptionMethod,sessionKey:Y.sessionKey,ivSessionKey:Y.ivSessionKey,storageProvider:Y.storageProvider,skipped:Y.skipped,reason:Y.reason}}catch(X){return k0(X)}}async listBundles(D){try{let X=this.apikey||Q0(!0),Y=await K0(X,this.supaHost,this.supaAnon);return{success:!0,data:(await UJ(Y,D)).map((Q)=>({id:Q.id.toString(),version:Q.name,uploadedAt:new Date(Q.created_at||""),size:0,encrypted:Q.session_key!==null}))}}catch(X){return k0(X)}}async deleteBundle(D,X){try{let Y={apikey:this.apikey||Q0(!0),supaHost:this.supaHost,supaAnon:this.supaAnon,bundle:X};return await fk(X,D,Y,!0),{success:!0}}catch(Y){return k0(Y)}}async cleanupBundles(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,bundle:D.bundle||"",version:"",keep:D.keep||4,force:D.force||!1,ignoreChannel:D.ignoreChannel||!1};return{success:!0,data:await Rk(D.appId,X,!0)}}catch(X){return k0(X)}}async requestBuild(D){try{let X=D.credentials,Y={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,path:D.path,platform:D.platform,userId:D.userId,buildCertificateBase64:X?.BUILD_CERTIFICATE_BASE64,buildProvisionProfileBase64:X?.BUILD_PROVISION_PROFILE_BASE64,buildProvisionProfileBase64Prod:X?.BUILD_PROVISION_PROFILE_BASE64_PROD,p12Password:X?.P12_PASSWORD,appleKeyId:X?.APPLE_KEY_ID,appleIssuerId:X?.APPLE_ISSUER_ID,appleKeyContent:X?.APPLE_KEY_CONTENT,appStoreConnectTeamId:X?.APP_STORE_CONNECT_TEAM_ID,androidKeystoreFile:X?.ANDROID_KEYSTORE_FILE,keystoreKeyAlias:X?.KEYSTORE_KEY_ALIAS,keystoreKeyPassword:X?.KEYSTORE_KEY_PASSWORD,keystoreStorePassword:X?.KEYSTORE_STORE_PASSWORD,playConfigJson:X?.PLAY_CONFIG_JSON},Z=await Nk(D.appId,Y,!0);if(Z.success&&Z.jobId)return{success:!0,data:{jobId:Z.jobId,uploadUrl:Z.uploadUrl||"",status:Z.status||"unknown"}};return{success:!1,error:Z.error||"Unknown error during build request"}}catch(X){return k0(X)}}async getCurrentBundle(D,X,Y){try{let Z={apikey:Y?.apikey||this.apikey||Q0(!0),quiet:!0,supaHost:Y?.supaHost||this.supaHost,supaAnon:Y?.supaAnon||this.supaAnon};return{success:!0,data:await Oh(X,D,Z,!0)}}catch(Z){return k0(Z)}}async addChannel(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,default:D.default,selfAssign:D.selfAssign};return await Gh(D.channelId,D.appId,X,!0),{success:!0}}catch(X){return k0(X)}}async updateChannel(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,bundle:D.bundle??void 0,state:D.state,downgrade:D.downgrade,ios:D.ios,android:D.android,selfAssign:D.selfAssign,disableAutoUpdate:D.disableAutoUpdate??void 0,dev:D.dev,emulator:D.emulator,device:D.device,prod:D.prod,latest:!1,latestRemote:!1,packageJson:void 0,ignoreMetadataCheck:!1};return await Mh(D.channelId,D.appId,X,!0),{success:!0}}catch(X){return k0(X)}}async deleteChannel(D,X,Y=!1){try{let Z={apikey:this.apikey||Q0(!0),supaHost:this.supaHost,supaAnon:this.supaAnon,deleteBundle:Y,successIfNotFound:!1};return await Wh(D,X,Z,!0),{success:!0}}catch(Z){return k0(Z)}}async listChannels(D){try{let X={apikey:this.apikey||Q0(!0),supaHost:this.supaHost,supaAnon:this.supaAnon};return{success:!0,data:await Hh(D,X,!0)}}catch(X){return k0(X)}}async generateEncryptionKeys(D){try{return await Nh({force:D?.force,setupChannel:D?.setupChannel},!0),{success:!0}}catch(X){return k0(X)}}async saveEncryptionKey(D){try{return await Vh({key:D?.keyPath,keyData:D?.keyData,setupChannel:D?.setupChannel},!0),{success:!0}}catch(X){return k0(X)}}async deleteLegacyEncryptionKey(D){try{return{success:!0,data:{deleted:await Uh({force:D?.force,setupChannel:D?.setupChannel},!0)}}}catch(X){return k0(X)}}async listOrganizations(D){try{let X={apikey:D?.apikey||this.apikey||Q0(!0),supaHost:D?.supaHost||this.supaHost,supaAnon:D?.supaAnon||this.supaAnon};return{success:!0,data:(await jh(X,!0)).map((J)=>({id:String(J.id??J.gid??""),name:J.name??"Unknown",role:J.role??void 0,appCount:typeof J.app_count==="number"?J.app_count:void 0,email:J.management_email??void 0,createdAt:J.created_at?new Date(J.created_at):void 0}))}}catch(X){return k0(X)}}async addOrganization(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,name:D.name,email:D.email},Y=await Eh(X,!0);return{success:!0,data:{id:String(Y.id??Y.gid??""),name:Y.name??D.name,role:"owner",appCount:0,email:Y.management_email??D.email,createdAt:Y.created_at?new Date(Y.created_at):void 0}}}catch(X){return k0(X)}}async updateOrganization(D){try{let X={apikey:D.apikey||this.apikey||Q0(!0),supaHost:D.supaHost||this.supaHost,supaAnon:D.supaAnon||this.supaAnon,name:D.name,email:D.email},Y=await Th(D.orgId,X,!0);return{success:!0,data:{id:Y.orgId,name:Y.name,email:Y.email}}}catch(X){return k0(X)}}async deleteOrganization(D,X){try{let Y={apikey:X?.apikey||this.apikey||Q0(!0),supaHost:X?.supaHost||this.supaHost,supaAnon:X?.supaAnon||this.supaAnon,autoConfirm:X?.autoConfirm??!0};return{success:!0,data:{deleted:await Ch(D,Y,!0)}}}catch(Y){return k0(Y)}}async getStats(D){try{let X=D.apikey||this.apikey||Q0(!0),Y=await C8(),Z={appId:D.appId,devicesId:D.deviceIds,search:D.search,order:D.order,rangeStart:D.after||D.rangeStart,rangeEnd:D.rangeEnd,limit:D.limit},J=await fetch(`${Y.hostApi}/private/stats`,{method:"POST",headers:{"Content-Type":"application/json",capgkey:X},body:JSON.stringify(Z)});if(!J.ok)throw Error(`HTTP error! status: ${J.status}`);return{success:!0,data:(await J.json()).map((F)=>({appId:F.app_id,deviceId:F.device_id,action:F.action,versionId:F.version_id,version:F.version,createdAt:F.created_at}))}}catch(X){return k0(X)}}async setAppSetting(D,X){try{return await Kk(D,{apikey:X.apikey||this.apikey||Q0(!0),bool:X.bool,string:X.string},!0),{success:!0}}catch(Y){return k0(Y)}}}async function pX0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).uploadBundle(D)}async function aX0(D){return new GD({supaHost:D.supaHost,supaAnon:D.supaAnon}).login(D)}async function tX0(D){return new GD().doctor(D)}async function rX0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).checkBundleCompatibility(D)}async function sX0(D){return new GD().encryptBundle(D)}async function oX0(D){return new GD().decryptBundle(D)}async function eX0(D){return new GD().zipBundle(D)}async function DY0(D){return new GD().generateEncryptionKeys(D)}async function XY0(D){return new GD().saveEncryptionKey(D)}async function YY0(D){return new GD().deleteLegacyEncryptionKey(D)}async function ZY0(D,X,Y){return new GD({apikey:Y?.apikey,supaHost:Y?.supaHost,supaAnon:Y?.supaAnon}).getCurrentBundle(D,X,Y)}async function JY0(D,X){return new GD({apikey:X.apikey}).setAppSetting(D,X)}async function QY0(D){return new GD({apikey:D?.apikey,supaHost:D?.supaHost,supaAnon:D?.supaAnon}).getAccountId(D)}async function wY0(D){return new GD({apikey:D?.apikey,supaHost:D?.supaHost,supaAnon:D?.supaAnon}).listOrganizations(D)}async function FY0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).addOrganization(D)}async function BY0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).updateOrganization(D)}async function qY0(D,X){return new GD({apikey:X?.apikey,supaHost:X?.supaHost,supaAnon:X?.supaAnon}).deleteOrganization(D,X)}async function $Y0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).addApp(D)}async function GY0(D,X){return new GD(X).listBundles(D)}async function OY0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).addChannel(D)}async function WY0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).requestBuild(D)}async function HY0(D){return new GD({apikey:D.apikey,supaHost:D.supaHost,supaAnon:D.supaAnon}).getStats(D)}async function KY0(){try{return await H0()}catch{return null}}