@capgo/cli 7.112.3 → 7.112.5

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
3
  "type": "module",
4
- "version": "7.112.3",
4
+ "version": "7.112.5",
5
5
  "description": "A CLI to upload to capgo servers",
6
6
  "author": "Martin martin@capgo.app",
7
7
  "license": "Apache 2.0",
package/dist/src/sdk.js CHANGED
@@ -124,7 +124,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
124
124
  `)}),$.__defineSetter__("stack",function(X){return[X].concat($.stack).join(`
125
125
 
126
126
  `)}),$}});var Kv=E((_o0,Hv)=>{var K4=l("constants"),gw0=process.cwd,IQ=null,mw0=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){if(!IQ)IQ=gw0.call(process);return IQ};try{process.cwd()}catch(D){}if(typeof process.chdir==="function"){if(AQ=process.chdir,process.chdir=function(D){IQ=null,AQ.call(process,D)},Object.setPrototypeOf)Object.setPrototypeOf(process.chdir,AQ)}var AQ;Hv.exports=cw0;function cw0(D){if(K4.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./))$(D);if(!D.lutimes)X(D);if(D.chown=Q(D.chown),D.fchown=Q(D.fchown),D.lchown=Q(D.lchown),D.chmod=J(D.chmod),D.fchmod=J(D.fchmod),D.lchmod=J(D.lchmod),D.chownSync=F(D.chownSync),D.fchownSync=F(D.fchownSync),D.lchownSync=F(D.lchownSync),D.chmodSync=Y(D.chmodSync),D.fchmodSync=Y(D.fchmodSync),D.lchmodSync=Y(D.lchmodSync),D.stat=U(D.stat),D.fstat=U(D.fstat),D.lstat=U(D.lstat),D.statSync=Z(D.statSync),D.fstatSync=Z(D.fstatSync),D.lstatSync=Z(D.lstatSync),D.chmod&&!D.lchmod)D.lchmod=function(O,w,q){if(q)process.nextTick(q)},D.lchmodSync=function(){};if(D.chown&&!D.lchown)D.lchown=function(O,w,q,W){if(W)process.nextTick(W)},D.lchownSync=function(){};if(mw0==="win32")D.rename=typeof D.rename!=="function"?D.rename:function(O){function w(q,W,B){var H=Date.now(),L=0;O(q,W,function M(I){if(I&&(I.code==="EACCES"||I.code==="EPERM"||I.code==="EBUSY")&&Date.now()-H<60000){if(setTimeout(function(){D.stat(W,function(K,N){if(K&&K.code==="ENOENT")O(q,W,M);else B(I)})},L),L<100)L+=10;return}if(B)B(I)})}if(Object.setPrototypeOf)Object.setPrototypeOf(w,O);return w}(D.rename);D.read=typeof D.read!=="function"?D.read:function(O){function w(q,W,B,H,L,M){var I;if(M&&typeof M==="function"){var K=0;I=function(N,V,R){if(N&&N.code==="EAGAIN"&&K<10)return K++,O.call(D,q,W,B,H,L,I);M.apply(this,arguments)}}return O.call(D,q,W,B,H,L,I)}if(Object.setPrototypeOf)Object.setPrototypeOf(w,O);return w}(D.read),D.readSync=typeof D.readSync!=="function"?D.readSync:function(O){return function(w,q,W,B,H){var L=0;while(!0)try{return O.call(D,w,q,W,B,H)}catch(M){if(M.code==="EAGAIN"&&L<10){L++;continue}throw M}}}(D.readSync);function $(O){O.lchmod=function(w,q,W){O.open(w,K4.O_WRONLY|K4.O_SYMLINK,q,function(B,H){if(B){if(W)W(B);return}O.fchmod(H,q,function(L){O.close(H,function(M){if(W)W(L||M)})})})},O.lchmodSync=function(w,q){var W=O.openSync(w,K4.O_WRONLY|K4.O_SYMLINK,q),B=!0,H;try{H=O.fchmodSync(W,q),B=!1}finally{if(B)try{O.closeSync(W)}catch(L){}else O.closeSync(W)}return H}}function X(O){if(K4.hasOwnProperty("O_SYMLINK")&&O.futimes)O.lutimes=function(w,q,W,B){O.open(w,K4.O_SYMLINK,function(H,L){if(H){if(B)B(H);return}O.futimes(L,q,W,function(M){O.close(L,function(I){if(B)B(M||I)})})})},O.lutimesSync=function(w,q,W){var B=O.openSync(w,K4.O_SYMLINK),H,L=!0;try{H=O.futimesSync(B,q,W),L=!1}finally{if(L)try{O.closeSync(B)}catch(M){}else O.closeSync(B)}return H};else if(O.futimes)O.lutimes=function(w,q,W,B){if(B)process.nextTick(B)},O.lutimesSync=function(){}}function J(O){if(!O)return O;return function(w,q,W){return O.call(D,w,q,function(B){if(G(B))B=null;if(W)W.apply(this,arguments)})}}function Y(O){if(!O)return O;return function(w,q){try{return O.call(D,w,q)}catch(W){if(!G(W))throw W}}}function Q(O){if(!O)return O;return function(w,q,W,B){return O.call(D,w,q,W,function(H){if(G(H))H=null;if(B)B.apply(this,arguments)})}}function F(O){if(!O)return O;return function(w,q,W){try{return O.call(D,w,q,W)}catch(B){if(!G(B))throw B}}}function U(O){if(!O)return O;return function(w,q,W){if(typeof q==="function")W=q,q=null;function B(H,L){if(L){if(L.uid<0)L.uid+=4294967296;if(L.gid<0)L.gid+=4294967296}if(W)W.apply(this,arguments)}return q?O.call(D,w,q,B):O.call(D,w,B)}}function Z(O){if(!O)return O;return function(w,q){var W=q?O.call(D,w,q):O.call(D,w);if(W){if(W.uid<0)W.uid+=4294967296;if(W.gid<0)W.gid+=4294967296}return W}}function G(O){if(!O)return!0;if(O.code==="ENOSYS")return!0;var w=!process.getuid||process.getuid()!==0;if(w){if(O.code==="EINVAL"||O.code==="EPERM")return!0}return!1}}});var zv=E((fo0,Vv)=>{var Nv=l("stream").Stream;Vv.exports=dw0;function dw0(D){return{ReadStream:$,WriteStream:X};function $(J,Y){if(!(this instanceof $))return new $(J,Y);Nv.call(this);var Q=this;this.path=J,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,Y=Y||{};var F=Object.keys(Y);for(var U=0,Z=F.length;U<Z;U++){var G=F[U];this[G]=Y[G]}if(this.encoding)this.setEncoding(this.encoding);if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!=="number")throw TypeError("end must be a Number");if(this.start>this.end)throw Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){Q._read()});return}D.open(this.path,this.flags,this.mode,function(O,w){if(O){Q.emit("error",O),Q.readable=!1;return}Q.fd=w,Q.emit("open",w),Q._read()})}function X(J,Y){if(!(this instanceof X))return new X(J,Y);Nv.call(this),this.path=J,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,Y=Y||{};var Q=Object.keys(Y);for(var F=0,U=Q.length;F<U;F++){var Z=Q[F];this[Z]=Y[Z]}if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.start<0)throw Error("start must be >= zero");this.pos=this.start}if(this.busy=!1,this._queue=[],this.fd===null)this._open=D.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush()}}});var Mv=E((ko0,Lv)=>{Lv.exports=lw0;var nw0=Object.getPrototypeOf||function(D){return D.__proto__};function lw0(D){if(D===null||typeof D!=="object")return D;if(D instanceof Object)var $={__proto__:nw0(D)};else var $=Object.create(null);return Object.getOwnPropertyNames(D).forEach(function(X){Object.defineProperty($,X,Object.getOwnPropertyDescriptor(D,X))}),$}});var yD=E((yo0,iq)=>{var SD=l("fs"),iw0=Kv(),pw0=zv(),rw0=Mv(),EQ=l("util"),Y1,jQ;if(typeof Symbol==="function"&&typeof Symbol.for==="function")Y1=Symbol.for("graceful-fs.queue"),jQ=Symbol.for("graceful-fs.previous");else Y1="___graceful-fs.queue",jQ="___graceful-fs.previous";function tw0(){}function Av(D,$){Object.defineProperty(D,Y1,{get:function(){return $}})}var k8=tw0;if(EQ.debuglog)k8=EQ.debuglog("gfs4");else if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))k8=function(){var D=EQ.format.apply(EQ,arguments);D="GFS4: "+D.split(/\n/).join(`
127
- GFS4: `),console.error(D)};if(!SD[Y1]){if(dq=global[Y1]||[],Av(SD,dq),SD.close=function(D){function $(X,J){return D.call(SD,X,function(Y){if(!Y)Iv();if(typeof J==="function")J.apply(this,arguments)})}return Object.defineProperty($,jQ,{value:D}),$}(SD.close),SD.closeSync=function(D){function $(X){D.apply(SD,arguments),Iv()}return Object.defineProperty($,jQ,{value:D}),$}(SD.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){k8(SD[Y1]),l("assert").equal(SD[Y1].length,0)})}var dq;if(!global[Y1])Av(global,SD[Y1]);iq.exports=nq(rw0(SD));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!SD.__patched)iq.exports=nq(SD),SD.__patched=!0;function nq(D){iw0(D),D.gracefulify=nq,D.createReadStream=V,D.createWriteStream=R;var $=D.readFile;D.readFile=X;function X(A,u,P){if(typeof u==="function")P=u,u=null;return h(A,u,P);function h(c,r,f,j){return $(c,r,function(S){if(S&&(S.code==="EMFILE"||S.code==="ENFILE"))R5([h,[c,r,f],S,j||Date.now(),Date.now()]);else if(typeof f==="function")f.apply(this,arguments)})}}var J=D.writeFile;D.writeFile=Y;function Y(A,u,P,h){if(typeof P==="function")h=P,P=null;return c(A,u,P,h);function c(r,f,j,S,x){return J(r,f,j,function(k){if(k&&(k.code==="EMFILE"||k.code==="ENFILE"))R5([c,[r,f,j,S],k,x||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var Q=D.appendFile;if(Q)D.appendFile=F;function F(A,u,P,h){if(typeof P==="function")h=P,P=null;return c(A,u,P,h);function c(r,f,j,S,x){return Q(r,f,j,function(k){if(k&&(k.code==="EMFILE"||k.code==="ENFILE"))R5([c,[r,f,j,S],k,x||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var U=D.copyFile;if(U)D.copyFile=Z;function Z(A,u,P,h){if(typeof P==="function")h=P,P=0;return c(A,u,P,h);function c(r,f,j,S,x){return U(r,f,j,function(k){if(k&&(k.code==="EMFILE"||k.code==="ENFILE"))R5([c,[r,f,j,S],k,x||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var G=D.readdir;D.readdir=w;var O=/^v[0-5]\./;function w(A,u,P){if(typeof u==="function")P=u,u=null;var h=O.test(process.version)?function(f,j,S,x){return G(f,c(f,j,S,x))}:function(f,j,S,x){return G(f,j,c(f,j,S,x))};return h(A,u,P);function c(r,f,j,S){return function(x,k){if(x&&(x.code==="EMFILE"||x.code==="ENFILE"))R5([h,[r,f,j],x,S||Date.now(),Date.now()]);else{if(k&&k.sort)k.sort();if(typeof j==="function")j.call(this,x,k)}}}}if(process.version.substr(0,4)==="v0.8"){var q=pw0(D);M=q.ReadStream,K=q.WriteStream}var W=D.ReadStream;if(W)M.prototype=Object.create(W.prototype),M.prototype.open=I;var B=D.WriteStream;if(B)K.prototype=Object.create(B.prototype),K.prototype.open=N;Object.defineProperty(D,"ReadStream",{get:function(){return M},set:function(A){M=A},enumerable:!0,configurable:!0}),Object.defineProperty(D,"WriteStream",{get:function(){return K},set:function(A){K=A},enumerable:!0,configurable:!0});var H=M;Object.defineProperty(D,"FileReadStream",{get:function(){return H},set:function(A){H=A},enumerable:!0,configurable:!0});var L=K;Object.defineProperty(D,"FileWriteStream",{get:function(){return L},set:function(A){L=A},enumerable:!0,configurable:!0});function M(A,u){if(this instanceof M)return W.apply(this,arguments),this;else return M.apply(Object.create(M.prototype),arguments)}function I(){var A=this;_(A.path,A.flags,A.mode,function(u,P){if(u){if(A.autoClose)A.destroy();A.emit("error",u)}else A.fd=P,A.emit("open",P),A.read()})}function K(A,u){if(this instanceof K)return B.apply(this,arguments),this;else return K.apply(Object.create(K.prototype),arguments)}function N(){var A=this;_(A.path,A.flags,A.mode,function(u,P){if(u)A.destroy(),A.emit("error",u);else A.fd=P,A.emit("open",P)})}function V(A,u){return new D.ReadStream(A,u)}function R(A,u){return new D.WriteStream(A,u)}var v=D.open;D.open=_;function _(A,u,P,h){if(typeof P==="function")h=P,P=null;return c(A,u,P,h);function c(r,f,j,S,x){return v(r,f,j,function(k,g){if(k&&(k.code==="EMFILE"||k.code==="ENFILE"))R5([c,[r,f,j,S],k,x||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}return D}function R5(D){k8("ENQUEUE",D[0].name,D[1]),SD[Y1].push(D),lq()}var RQ;function Iv(){var D=Date.now();for(var $=0;$<SD[Y1].length;++$)if(SD[Y1][$].length>2)SD[Y1][$][3]=D,SD[Y1][$][4]=D;lq()}function lq(){if(clearTimeout(RQ),RQ=void 0,SD[Y1].length===0)return;var D=SD[Y1].shift(),$=D[0],X=D[1],J=D[2],Y=D[3],Q=D[4];if(Y===void 0)k8("RETRY",$.name,X),$.apply(null,X);else if(Date.now()-Y>=60000){k8("TIMEOUT",$.name,X);var F=X.pop();if(typeof F==="function")F.call(null,J)}else{var U=Date.now()-Q,Z=Math.max(Q-Y,1),G=Math.min(Z*1.2,100);if(U>=G)k8("RETRY",$.name,X),$.apply(null,X.concat([Y]));else SD[Y1].push(D)}if(RQ===void 0)RQ=setTimeout(lq,0)}});var Rv=E((bo0,Ev)=>{function K$(D,$){if(typeof $==="boolean")$={forever:$};if(this._originalTimeouts=JSON.parse(JSON.stringify(D)),this._timeouts=D,this._options=$||{},this._maxRetryTime=$&&$.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever)this._cachedTimeouts=this._timeouts.slice(0)}Ev.exports=K$;K$.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};K$.prototype.stop=function(){if(this._timeout)clearTimeout(this._timeout);this._timeouts=[],this._cachedTimeouts=null};K$.prototype.retry=function(D){if(this._timeout)clearTimeout(this._timeout);if(!D)return!1;var $=new Date().getTime();if(D&&$-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error("RetryOperation timeout occurred")),!1;this._errors.push(D);var X=this._timeouts.shift();if(X===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),X=this._timeouts.shift();else return!1;var J=this,Y=setTimeout(function(){if(J._attempts++,J._operationTimeoutCb){if(J._timeout=setTimeout(function(){J._operationTimeoutCb(J._attempts)},J._operationTimeout),J._options.unref)J._timeout.unref()}J._fn(J._attempts)},X);if(this._options.unref)Y.unref();return!0};K$.prototype.attempt=function(D,$){if(this._fn=D,$){if($.timeout)this._operationTimeout=$.timeout;if($.cb)this._operationTimeoutCb=$.cb}var X=this;if(this._operationTimeoutCb)this._timeout=setTimeout(function(){X._operationTimeoutCb()},X._operationTimeout);this._operationStart=new Date().getTime(),this._fn(this._attempts)};K$.prototype.try=function(D){console.log("Using RetryOperation.try() is deprecated"),this.attempt(D)};K$.prototype.start=function(D){console.log("Using RetryOperation.start() is deprecated"),this.attempt(D)};K$.prototype.start=K$.prototype.try;K$.prototype.errors=function(){return this._errors};K$.prototype.attempts=function(){return this._attempts};K$.prototype.mainError=function(){if(this._errors.length===0)return null;var D={},$=null,X=0;for(var J=0;J<this._errors.length;J++){var Y=this._errors[J],Q=Y.message,F=(D[Q]||0)+1;if(D[Q]=F,F>=X)$=Y,X=F}return $}});var Tv=E((aw0)=>{var ow0=Rv();aw0.operation=function(D){var $=aw0.timeouts(D);return new ow0($,{forever:D&&D.forever,unref:D&&D.unref,maxRetryTime:D&&D.maxRetryTime})};aw0.timeouts=function(D){if(D instanceof Array)return[].concat(D);var $={retries:10,factor:2,minTimeout:1000,maxTimeout:1/0,randomize:!1};for(var X in D)$[X]=D[X];if($.minTimeout>$.maxTimeout)throw Error("minTimeout is greater than maxTimeout");var J=[];for(var Y=0;Y<$.retries;Y++)J.push(this.createTimeout(Y,$));if(D&&D.forever&&!J.length)J.push(this.createTimeout(Y,$));return J.sort(function(Q,F){return Q-F}),J};aw0.createTimeout=function(D,$){var X=$.randomize?Math.random()+1:1,J=Math.round(X*$.minTimeout*Math.pow($.factor,D));return J=Math.min(J,$.maxTimeout),J};aw0.wrap=function(D,$,X){if($ instanceof Array)X=$,$=null;if(!X){X=[];for(var J in D)if(typeof D[J]==="function")X.push(J)}for(var Y=0;Y<X.length;Y++){var Q=X[Y],F=D[Q];D[Q]=function(Z){var G=aw0.operation($),O=Array.prototype.slice.call(arguments,1),w=O.pop();O.push(function(q){if(G.retry(q))return;if(q)arguments[0]=G.mainError();w.apply(this,arguments)}),G.attempt(function(){Z.apply(D,O)})}.bind(D,F),D[Q].options=$}}});var Cv=E((go0,TQ)=>{TQ.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];if(process.platform!=="win32")TQ.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")TQ.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var PQ=E((mo0,T5)=>{var AD=global.process,y8=function(D){return D&&typeof D==="object"&&typeof D.removeListener==="function"&&typeof D.emit==="function"&&typeof D.reallyExit==="function"&&typeof D.listeners==="function"&&typeof D.kill==="function"&&typeof D.pid==="number"&&typeof D.on==="function"};if(!y8(AD))T5.exports=function(){return function(){}};else{if(pq=l("assert"),b8=Cv(),rq=/^win/i.test(AD.platform),j5=l("events"),typeof j5!=="function")j5=j5.EventEmitter;if(AD.__signal_exit_emitter__)tD=AD.__signal_exit_emitter__;else tD=AD.__signal_exit_emitter__=new j5,tD.count=0,tD.emitted={};if(!tD.infinite)tD.setMaxListeners(1/0),tD.infinite=!0;T5.exports=function(D,$){if(!y8(global.process))return function(){};if(pq.equal(typeof D,"function","a callback must be provided for exit handler"),h8===!1)CQ();var X="exit";if($&&$.alwaysLast)X="afterexit";var J=function(){if(tD.removeListener(X,D),tD.listeners("exit").length===0&&tD.listeners("afterexit").length===0)V2()};return tD.on(X,D),J},V2=function(){if(!h8||!y8(global.process))return;h8=!1,b8.forEach(function($){try{AD.removeListener($,z2[$])}catch(X){}}),AD.emit=L2,AD.reallyExit=SQ,tD.count-=1},T5.exports.unload=V2,N4=function($,X,J){if(tD.emitted[$])return;tD.emitted[$]=!0,tD.emit($,X,J)},z2={},b8.forEach(function(D){z2[D]=function(){if(!y8(global.process))return;var X=AD.listeners(D);if(X.length===tD.count){if(V2(),N4("exit",null,D),N4("afterexit",null,D),rq&&D==="SIGHUP")D="SIGINT";AD.kill(AD.pid,D)}}}),T5.exports.signals=function(){return b8},h8=!1,CQ=function(){if(h8||!y8(global.process))return;h8=!0,tD.count+=1,b8=b8.filter(function($){try{return AD.on($,z2[$]),!0}catch(X){return!1}}),AD.emit=oq,AD.reallyExit=tq},T5.exports.load=CQ,SQ=AD.reallyExit,tq=function($){if(!y8(global.process))return;AD.exitCode=$||0,N4("exit",AD.exitCode,null),N4("afterexit",AD.exitCode,null),SQ.call(AD,AD.exitCode)},L2=AD.emit,oq=function($,X){if($==="exit"&&y8(global.process)){if(X!==void 0)AD.exitCode=X;var J=L2.apply(this,arguments);return N4("exit",AD.exitCode,null),N4("afterexit",AD.exitCode,null),J}else return L2.apply(this,arguments)}}var pq,b8,rq,j5,tD,V2,N4,z2,h8,CQ,SQ,tq,L2,oq});var Pv=E((Jq0,aq)=>{var Sv=Symbol();function $q0(D,$,X){let J=$[Sv];if(J)return $.stat(D,(Q,F)=>{if(Q)return X(Q);X(null,F.mtime,J)});let Y=new Date(Math.ceil(Date.now()/1000)*1000+5);$.utimes(D,Y,Y,(Q)=>{if(Q)return X(Q);$.stat(D,(F,U)=>{if(F)return X(F);let Z=U.mtime.getTime()%1000===0?"s":"ms";Object.defineProperty($,Sv,{value:Z}),X(null,U.mtime,Z)})})}function Xq0(D){let $=Date.now();if(D==="s")$=Math.ceil($/1000)*1000;return new Date($)}Jq0.probe=$q0;Jq0.getMtime=Xq0});var fv=E((qq0,I2)=>{var Fq0=l("path"),DW=yD(),Uq0=Tv(),Zq0=PQ(),uv=Pv(),v6={};function M2(D,$){return $.lockfilePath||`${D}.lock`}function $W(D,$,X){if(!$.realpath)return X(null,Fq0.resolve(D));$.fs.realpath(D,X)}function eq(D,$,X){let J=M2(D,$);$.fs.mkdir(J,(Y)=>{if(!Y)return uv.probe(J,$.fs,(Q,F,U)=>{if(Q)return $.fs.rmdir(J,()=>{}),X(Q);X(null,F,U)});if(Y.code!=="EEXIST")return X(Y);if($.stale<=0)return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));$.fs.stat(J,(Q,F)=>{if(Q){if(Q.code==="ENOENT")return eq(D,{...$,stale:0},X);return X(Q)}if(!xv(F,$))return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));vv(D,$,(U)=>{if(U)return X(U);eq(D,{...$,stale:0},X)})})})}function xv(D,$){return D.mtime.getTime()<Date.now()-$.stale}function vv(D,$,X){$.fs.rmdir(M2(D,$),(J)=>{if(J&&J.code!=="ENOENT")return X(J);X()})}function uQ(D,$){let X=v6[D];if(X.updateTimeout)return;if(X.updateDelay=X.updateDelay||$.update,X.updateTimeout=setTimeout(()=>{X.updateTimeout=null,$.fs.stat(X.lockfilePath,(J,Y)=>{let Q=X.lastUpdate+$.stale<Date.now();if(J){if(J.code==="ENOENT"||Q)return sq(D,X,Object.assign(J,{code:"ECOMPROMISED"}));return X.updateDelay=1000,uQ(D,$)}if(X.mtime.getTime()!==Y.mtime.getTime())return sq(D,X,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let U=uv.getMtime(X.mtimePrecision);$.fs.utimes(X.lockfilePath,U,U,(Z)=>{let G=X.lastUpdate+$.stale<Date.now();if(X.released)return;if(Z){if(Z.code==="ENOENT"||G)return sq(D,X,Object.assign(Z,{code:"ECOMPROMISED"}));return X.updateDelay=1000,uQ(D,$)}X.mtime=U,X.lastUpdate=Date.now(),X.updateDelay=null,uQ(D,$)})})},X.updateDelay),X.updateTimeout.unref)X.updateTimeout.unref()}function sq(D,$,X){if($.released=!0,$.updateTimeout)clearTimeout($.updateTimeout);if(v6[D]===$)delete v6[D];$.options.onCompromised(X)}function Gq0(D,$,X){$={stale:1e4,update:null,realpath:!0,retries:0,fs:DW,onCompromised:(J)=>{throw J},...$},$.retries=$.retries||0,$.retries=typeof $.retries==="number"?{retries:$.retries}:$.retries,$.stale=Math.max($.stale||0,2000),$.update=$.update==null?$.stale/2:$.update||0,$.update=Math.max(Math.min($.update,$.stale/2),1000),$W(D,$,(J,Y)=>{if(J)return X(J);let Q=Uq0.operation($.retries);Q.attempt(()=>{eq(Y,$,(F,U,Z)=>{if(Q.retry(F))return;if(F)return X(Q.mainError());let G=v6[Y]={lockfilePath:M2(Y,$),mtime:U,mtimePrecision:Z,options:$,lastUpdate:Date.now()};uQ(Y,$),X(null,(O)=>{if(G.released)return O&&O(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));_v(Y,{...$,realpath:!1},O)})})})})}function _v(D,$,X){$={fs:DW,realpath:!0,...$},$W(D,$,(J,Y)=>{if(J)return X(J);let Q=v6[Y];if(!Q)return X(Object.assign(Error("Lock is not acquired/owned by you"),{code:"ENOTACQUIRED"}));Q.updateTimeout&&clearTimeout(Q.updateTimeout),Q.released=!0,delete v6[Y],vv(Y,$,X)})}function Oq0(D,$,X){$={stale:1e4,realpath:!0,fs:DW,...$},$.stale=Math.max($.stale||0,2000),$W(D,$,(J,Y)=>{if(J)return X(J);$.fs.stat(M2(Y,$),(Q,F)=>{if(Q)return Q.code==="ENOENT"?X(null,!1):X(Q);return X(null,!xv(F,$))})})}function wq0(){return v6}Zq0(()=>{for(let D in v6){let $=v6[D].options;try{$.fs.rmdirSync(M2(D,$))}catch(X){}}});qq0.lock=Gq0;qq0.unlock=_v;qq0.check=Oq0;qq0.getLocks=wq0});var yv=E((co0,kv)=>{var Nq0=yD();function Vq0(D){let $=["mkdir","realpath","stat","rmdir","utimes"],X={...D};return $.forEach((J)=>{X[J]=(...Y)=>{let Q=Y.pop(),F;try{F=D[`${J}Sync`](...Y)}catch(U){return Q(U)}Q(null,F)}}),X}function zq0(D){return(...$)=>new Promise((X,J)=>{$.push((Y,Q)=>{if(Y)J(Y);else X(Q)}),D(...$)})}function Lq0(D){return(...$)=>{let X,J;if($.push((Y,Q)=>{X=Y,J=Q}),D(...$),X)throw X;return J}}function Mq0(D){if(D={...D},D.fs=Vq0(D.fs||Nq0),typeof D.retries==="number"&&D.retries>0||D.retries&&typeof D.retries.retries==="number"&&D.retries.retries>0)throw Object.assign(Error("Cannot use retries with the sync api"),{code:"ESYNC"});return D}kv.exports={toPromise:zq0,toSync:Lq0,toSyncOptions:Mq0}});var hv=E((do0,V4)=>{var C5=fv(),{toPromise:xQ,toSync:vQ,toSyncOptions:XW}=yv();async function bv(D,$){let X=await xQ(C5.lock)(D,$);return xQ(X)}function Iq0(D,$){let X=vQ(C5.lock)(D,XW($));return vQ(X)}function Aq0(D,$){return xQ(C5.unlock)(D,$)}function Eq0(D,$){return vQ(C5.unlock)(D,XW($))}function Rq0(D,$){return xQ(C5.check)(D,$)}function jq0(D,$){return vQ(C5.check)(D,XW($))}V4.exports=bv;V4.exports.lock=bv;V4.exports.unlock=Aq0;V4.exports.lockSync=Iq0;V4.exports.unlockSync=Eq0;V4.exports.check=Rq0;V4.exports.checkSync=jq0});var iv=E((nv)=>{Object.defineProperty(nv,"__esModule",{value:!0});nv.canStoreURLs=nv.FileUrlStorage=void 0;var gv=l("fs"),Tq0=Sq0(Bv()),mv=Cq0(hv());function dv(D){if(typeof WeakMap!="function")return null;var $=new WeakMap,X=new WeakMap;return(dv=function(J){return J?X:$})(D)}function Cq0(D,$){if(!$&&D&&D.__esModule)return D;if(D===null||typeof D!="object"&&typeof D!="function")return{default:D};var X=dv($);if(X&&X.has(D))return X.get(D);var J={__proto__:null},Y=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var Q in D)if(Q!=="default"&&{}.hasOwnProperty.call(D,Q)){var F=Y?Object.getOwnPropertyDescriptor(D,Q):null;F&&(F.get||F.set)?Object.defineProperty(J,Q,F):J[Q]=D[Q]}return J.default=D,X&&X.set(D,J),J}function Sq0(D){return D&&D.__esModule?D:{default:D}}function A2(D){return A2=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},A2(D)}function Pq0(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function cv(D,$){for(var X=0;X<$.length;X++){var J=$[X];if(J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J)J.writable=!0;Object.defineProperty(D,xq0(J.key),J)}}function uq0(D,$,X){if($)cv(D.prototype,$);if(X)cv(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function xq0(D){var $=vq0(D,"string");return A2($)=="symbol"?$:$+""}function vq0(D,$){if(A2(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var J=X.call(D,$||"default");if(A2(J)!="object")return J;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var no0=nv.canStoreURLs=!0,lo0=nv.FileUrlStorage=function(){function D($){Pq0(this,D),this.path=$}return uq0(D,[{key:"findAllUploads",value:function(){var X=this;return new Promise(function(J,Y){X._getItems("tus::",function(Q,F){if(Q)Y(Q);else J(F)})})}},{key:"findUploadsByFingerprint",value:function(X){var J=this;return new Promise(function(Y,Q){J._getItems("tus::".concat(X),function(F,U){if(F)Q(F);else Y(U)})})}},{key:"removeUpload",value:function(X){var J=this;return new Promise(function(Y,Q){J._removeItem(X,function(F){if(F)Q(F);else Y()})})}},{key:"addUpload",value:function(X,J){var Y=this,Q=Math.round(Math.random()*1000000000000),F="tus::".concat(X,"::").concat(Q);return new Promise(function(U,Z){Y._setItem(F,J,function(G){if(G)Z(G);else U(F)})})}},{key:"_setItem",value:function(X,J,Y){var Q=this;mv.lock(this.path,this._lockfileOptions()).then(function(F){Y=Q._releaseAndCb(F,Y),Q._getData(function(U,Z){if(U){Y(U);return}Z[X]=J,Q._writeData(Z,function(G){return Y(G)})})}).catch(Y)}},{key:"_getItems",value:function(X,J){this._getData(function(Y,Q){if(Y){J(Y);return}var F=Object.keys(Q).filter(function(U){return U.startsWith(X)}).map(function(U){var Z=Q[U];return Z.urlStorageKey=U,Z});J(null,F)})}},{key:"_removeItem",value:function(X,J){var Y=this;mv.lock(this.path,this._lockfileOptions()).then(function(Q){J=Y._releaseAndCb(Q,J),Y._getData(function(F,U){if(F){J(F);return}delete U[X],Y._writeData(U,function(Z){return J(Z)})})}).catch(J)}},{key:"_lockfileOptions",value:function(){return{realpath:!1,retries:{retries:5,minTimeout:20}}}},{key:"_releaseAndCb",value:function(X,J){return function(Y){if(Y){X().then(function(){return J(Y)}).catch(function(Q){return J((0,Tq0.default)([Y,Q]))});return}X().then(J).catch(J)}}},{key:"_writeData",value:function(X,J){var Y={encoding:"utf8",mode:432,flag:"w"};(0,gv.writeFile)(this.path,JSON.stringify(X),Y,function(Q){return J(Q)})}},{key:"_getData",value:function(X){(0,gv.readFile)(this.path,"utf8",function(J,Y){if(J){if(J.code==="ENOENT")X(null,{});else X(J);return}try{Y=!Y.trim().length?{}:JSON.parse(Y)}catch(Q){X(Q);return}X(null,Y)})}}])}()});var fQ=E((z4)=>{Object.defineProperty(z4,"__esModule",{value:!0});Object.defineProperty(z4,"DefaultHttpStack",{enumerable:!0,get:function(){return ov.default}});Object.defineProperty(z4,"DetailedError",{enumerable:!0,get:function(){return fq0.default}});Object.defineProperty(z4,"FileUrlStorage",{enumerable:!0,get:function(){return av.FileUrlStorage}});Object.defineProperty(z4,"StreamSource",{enumerable:!0,get:function(){return gq0.default}});z4.Upload=void 0;Object.defineProperty(z4,"canStoreURLs",{enumerable:!0,get:function(){return av.canStoreURLs}});z4.defaultOptions=void 0;Object.defineProperty(z4,"enableDebugLog",{enumerable:!0,get:function(){return kq0.enableDebugLog}});z4.isSupported=void 0;var fq0=g8(Xq()),kq0=Jq(),yq0=g8(hP()),JW=g8(Vu()),bq0=g8(bu()),hq0=g8(du()),ov=g8(Qx()),gq0=g8(Bq()),av=iv();function g8(D){return D&&D.__esModule?D:{default:D}}function P5(D){return P5=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},P5(D)}function mq0(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function pv(D,$){for(var X=0;X<$.length;X++){var J=$[X];if(J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J)J.writable=!0;Object.defineProperty(D,ev(J.key),J)}}function cq0(D,$,X){if($)pv(D.prototype,$);if(X)pv(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function dq0(D,$,X){return $=_Q($),nq0(D,sv()?Reflect.construct($,X||[],_Q(D).constructor):$.apply(D,X))}function nq0(D,$){if($&&(P5($)==="object"||typeof $==="function"))return $;else if($!==void 0)throw TypeError("Derived constructors may only return object or undefined");return lq0(D)}function lq0(D){if(D===void 0)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return D}function sv(){try{var D=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch($){}return(sv=function(){return!!D})()}function _Q(D){return _Q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(X){return X.__proto__||Object.getPrototypeOf(X)},_Q(D)}function iq0(D,$){if(typeof $!=="function"&&$!==null)throw TypeError("Super expression must either be null or a function");if(D.prototype=Object.create($&&$.prototype,{constructor:{value:D,writable:!0,configurable:!0}}),Object.defineProperty(D,"prototype",{writable:!1}),$)YW(D,$)}function YW(D,$){return YW=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(J,Y){return J.__proto__=Y,J},YW(D,$)}function rv(D,$){var X=Object.keys(D);if(Object.getOwnPropertySymbols){var J=Object.getOwnPropertySymbols(D);$&&(J=J.filter(function(Y){return Object.getOwnPropertyDescriptor(D,Y).enumerable})),X.push.apply(X,J)}return X}function S5(D){for(var $=1;$<arguments.length;$++){var X=arguments[$]!=null?arguments[$]:{};$%2?rv(Object(X),!0).forEach(function(J){pq0(D,J,X[J])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(X)):rv(Object(X)).forEach(function(J){Object.defineProperty(D,J,Object.getOwnPropertyDescriptor(X,J))})}return D}function pq0(D,$,X){if($=ev($),$ in D)Object.defineProperty(D,$,{value:X,enumerable:!0,configurable:!0,writable:!0});else D[$]=X;return D}function ev(D){var $=rq0(D,"string");return P5($)=="symbol"?$:$+""}function rq0(D,$){if(P5(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var J=X.call(D,$||"default");if(P5(J)!="object")return J;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var tv=z4.defaultOptions=S5(S5({},JW.default.defaultOptions),{},{httpStack:new ov.default,fileReader:new bq0.default,urlStorage:new yq0.default,fingerprint:hq0.default}),po0=z4.Upload=function(D){function $(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,J=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return mq0(this,$),J=S5(S5({},tv),J),dq0(this,$,[X,J])}return iq0($,D),cq0($,null,[{key:"terminate",value:function(J){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Y=S5(S5({},tv),Y),JW.default.terminate(J,Y)}}])}(JW.default),ro0=z4.isSupported=!0});var f$;var E2=p(()=>{f$={name:"@capgo/cli",type:"module",version:"7.112.3",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/capgo/tree/main/cli#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/capgo.git",directory:"cli"},bugs:{url:"https://github.com/Cap-go/capgo/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk","tanstack-intent"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},files:["!skills/_artifacts","dist","skills"],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:"bunx --bun supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsgo --project tsconfig.tsgo.json --noEmit",lint:"bun run lint:ox","lint:ox":"oxlint --config ../.oxlintrc.json src","lint:fix":"oxlint --config ../.oxlintrc.json --fix src","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:android-service-account-validation":"bun test/test-android-service-account-validation.mjs","test:build-zip-filter":"bun test/test-build-zip-filter.mjs","test:checksum":"bun test/test-checksum-algorithm.mjs","test:build-needed":"bun test/test-build-needed.mjs","test:ci-prompts":"bun test/test-ci-prompts.mjs","test:ci-secrets":"bun test/test-ci-secrets.mjs","test:android-onboarding-progress":"bun test/test-android-onboarding-progress.mjs","test:onboarding-telemetry":"bun test/test-onboarding-telemetry.mjs","test:posthog-exception":"bun test/test-posthog-exception.mjs","test:onboarding-recovery":"bun test/test-onboarding-recovery.mjs","test:onboarding-progress":"bun test/test-onboarding-progress.mjs","test:onboarding-run-targets":"bun test/test-onboarding-run-targets.mjs","test:run-device-command":"bun test/test-run-device-command.mjs","test:init-app-conflict":"bun test/test-init-app-conflict.mjs","test:init-guardrails":"bun test/test-init-guardrails.mjs","test:prompt-preferences":"bun test/test-prompt-preferences.mjs","test:esm-sdk":"node test/test-sdk-esm.mjs","test:mcp":"node test/test-mcp.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh","test:platform-paths":"bun test/test-platform-paths.mjs","test:payload-split":"bun test/test-payload-split.mjs","test:macos-signing":"bun test/test-macos-signing.mjs","test:apple-api-import-helpers":"bun test/test-apple-api-import-helpers.mjs","test:manifest-path-encoding":"bun test/test-manifest-path-encoding.mjs",test:"bun run build && bun run test:version-detection:setup && 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:android-service-account-validation && bun run test:build-zip-filter && bun run test:checksum && bun run test:build-needed && bun run test:ci-prompts && bun run test:ci-secrets && bun run test:android-onboarding-progress && bun run test:onboarding-telemetry && bun run test:posthog-exception && bun run test:build-platform-selection && bun run test:onboarding-recovery && bun run test:onboarding-progress && bun run test:onboarding-run-targets && bun run test:run-device-command && bun run test:init-app-conflict && bun run test:init-guardrails && bun run test:prompt-preferences && bun run test:esm-sdk && bun run test:mcp && bun run test:version-detection && bun run test:platform-paths && bun run test:payload-split && bun run test:manifest-path-encoding && bun run test:macos-signing && bun run test:apple-api-import-helpers && bun run test:ai-log-capture && bun run test:ai-analyze-flow && bun run test:ai-render-markdown","test:build-platform-selection":"bun test/test-build-platform-selection.mjs","test:ai-log-capture":"bun test/test-ai-log-capture.mjs","test:ai-analyze-flow":"bun test/test-ai-analyze-flow.mjs","test:ai-render-markdown":"bun test/test-ai-render-markdown.mjs"},dependencies:{"@inkjs/ui":"^2.0.0",ink:"^7.0.4","ink-spinner":"^5.0.0",jsonwebtoken:"^9.0.3","node-forge":"^1.4.0",qrcode:"^1.5.4",react:"^19.2.6"},devDependencies:{"@antfu/eslint-config":"^9.0.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.6","@capacitor/cli":"^8.3.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^1.4.0","@modelcontextprotocol/sdk":"^1.29.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.8","@supabase/supabase-js":"^2.106.2","@tanstack/intent":"^0.0.41","@types/adm-zip":"^0.5.8","@types/jsonwebtoken":"^9.0.10","@types/node":"^25.9.1","@types/node-forge":"^1.3.14","@types/prettyjson":"^0.0.33","@types/qrcode":"^1.5.6","@types/react":"^19.2.15","@types/tmp":"^0.2.6","@types/ws":"^8.18.1","@typescript/native-preview":"7.0.0-dev.20260526.1","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.17","ci-info":"^4.4.0",commander:"^14.0.3",eslint:"^10.4.0","git-format-staged":"4.0.1",husky:"^9.1.7","is-wsl":"^3.1.1",micromatch:"^4.0.8",open:"^11.0.0",oxlint:"^1.67.0",partysocket:"^1.1.19",prettyjson:"^1.2.5",tmp:"^0.2.6","tus-js-client":"^4.3.1",typescript:"^6.0.3",ws:"^8.21.0",zod:"^4.4.3"}}});async function kQ(D){try{let X=`https://registry.npmjs.org/${encodeURIComponent(D.toLowerCase())}`,J=await fetch(X,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});if(!J.ok)return null;return(await J.json())["dist-tags"]?.latest||null}catch{return null}}async function oq0(){let D=await kQ("@capgo/cli")??"",$=D?.split(".")[0]??"";return{currentVersion:f$.version,latestVersion:D,isOutdated:!!D&&D!==f$.version,majorVersion:$}}async function OD(){let{isOutdated:D,currentVersion:$,latestVersion:X,majorVersion:J}=await oq0();if(D)z.warning(`\uD83D\uDEA8 You are using @capgo/cli@${$} it's not the latest version.
127
+ GFS4: `),console.error(D)};if(!SD[Y1]){if(dq=global[Y1]||[],Av(SD,dq),SD.close=function(D){function $(X,J){return D.call(SD,X,function(Y){if(!Y)Iv();if(typeof J==="function")J.apply(this,arguments)})}return Object.defineProperty($,jQ,{value:D}),$}(SD.close),SD.closeSync=function(D){function $(X){D.apply(SD,arguments),Iv()}return Object.defineProperty($,jQ,{value:D}),$}(SD.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){k8(SD[Y1]),l("assert").equal(SD[Y1].length,0)})}var dq;if(!global[Y1])Av(global,SD[Y1]);iq.exports=nq(rw0(SD));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!SD.__patched)iq.exports=nq(SD),SD.__patched=!0;function nq(D){iw0(D),D.gracefulify=nq,D.createReadStream=V,D.createWriteStream=R;var $=D.readFile;D.readFile=X;function X(A,u,P){if(typeof u==="function")P=u,u=null;return h(A,u,P);function h(c,r,f,j){return $(c,r,function(S){if(S&&(S.code==="EMFILE"||S.code==="ENFILE"))R5([h,[c,r,f],S,j||Date.now(),Date.now()]);else if(typeof f==="function")f.apply(this,arguments)})}}var J=D.writeFile;D.writeFile=Y;function Y(A,u,P,h){if(typeof P==="function")h=P,P=null;return c(A,u,P,h);function c(r,f,j,S,x){return J(r,f,j,function(k){if(k&&(k.code==="EMFILE"||k.code==="ENFILE"))R5([c,[r,f,j,S],k,x||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var Q=D.appendFile;if(Q)D.appendFile=F;function F(A,u,P,h){if(typeof P==="function")h=P,P=null;return c(A,u,P,h);function c(r,f,j,S,x){return Q(r,f,j,function(k){if(k&&(k.code==="EMFILE"||k.code==="ENFILE"))R5([c,[r,f,j,S],k,x||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var U=D.copyFile;if(U)D.copyFile=Z;function Z(A,u,P,h){if(typeof P==="function")h=P,P=0;return c(A,u,P,h);function c(r,f,j,S,x){return U(r,f,j,function(k){if(k&&(k.code==="EMFILE"||k.code==="ENFILE"))R5([c,[r,f,j,S],k,x||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var G=D.readdir;D.readdir=w;var O=/^v[0-5]\./;function w(A,u,P){if(typeof u==="function")P=u,u=null;var h=O.test(process.version)?function(f,j,S,x){return G(f,c(f,j,S,x))}:function(f,j,S,x){return G(f,j,c(f,j,S,x))};return h(A,u,P);function c(r,f,j,S){return function(x,k){if(x&&(x.code==="EMFILE"||x.code==="ENFILE"))R5([h,[r,f,j],x,S||Date.now(),Date.now()]);else{if(k&&k.sort)k.sort();if(typeof j==="function")j.call(this,x,k)}}}}if(process.version.substr(0,4)==="v0.8"){var q=pw0(D);M=q.ReadStream,K=q.WriteStream}var W=D.ReadStream;if(W)M.prototype=Object.create(W.prototype),M.prototype.open=I;var B=D.WriteStream;if(B)K.prototype=Object.create(B.prototype),K.prototype.open=N;Object.defineProperty(D,"ReadStream",{get:function(){return M},set:function(A){M=A},enumerable:!0,configurable:!0}),Object.defineProperty(D,"WriteStream",{get:function(){return K},set:function(A){K=A},enumerable:!0,configurable:!0});var H=M;Object.defineProperty(D,"FileReadStream",{get:function(){return H},set:function(A){H=A},enumerable:!0,configurable:!0});var L=K;Object.defineProperty(D,"FileWriteStream",{get:function(){return L},set:function(A){L=A},enumerable:!0,configurable:!0});function M(A,u){if(this instanceof M)return W.apply(this,arguments),this;else return M.apply(Object.create(M.prototype),arguments)}function I(){var A=this;_(A.path,A.flags,A.mode,function(u,P){if(u){if(A.autoClose)A.destroy();A.emit("error",u)}else A.fd=P,A.emit("open",P),A.read()})}function K(A,u){if(this instanceof K)return B.apply(this,arguments),this;else return K.apply(Object.create(K.prototype),arguments)}function N(){var A=this;_(A.path,A.flags,A.mode,function(u,P){if(u)A.destroy(),A.emit("error",u);else A.fd=P,A.emit("open",P)})}function V(A,u){return new D.ReadStream(A,u)}function R(A,u){return new D.WriteStream(A,u)}var v=D.open;D.open=_;function _(A,u,P,h){if(typeof P==="function")h=P,P=null;return c(A,u,P,h);function c(r,f,j,S,x){return v(r,f,j,function(k,g){if(k&&(k.code==="EMFILE"||k.code==="ENFILE"))R5([c,[r,f,j,S],k,x||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}return D}function R5(D){k8("ENQUEUE",D[0].name,D[1]),SD[Y1].push(D),lq()}var RQ;function Iv(){var D=Date.now();for(var $=0;$<SD[Y1].length;++$)if(SD[Y1][$].length>2)SD[Y1][$][3]=D,SD[Y1][$][4]=D;lq()}function lq(){if(clearTimeout(RQ),RQ=void 0,SD[Y1].length===0)return;var D=SD[Y1].shift(),$=D[0],X=D[1],J=D[2],Y=D[3],Q=D[4];if(Y===void 0)k8("RETRY",$.name,X),$.apply(null,X);else if(Date.now()-Y>=60000){k8("TIMEOUT",$.name,X);var F=X.pop();if(typeof F==="function")F.call(null,J)}else{var U=Date.now()-Q,Z=Math.max(Q-Y,1),G=Math.min(Z*1.2,100);if(U>=G)k8("RETRY",$.name,X),$.apply(null,X.concat([Y]));else SD[Y1].push(D)}if(RQ===void 0)RQ=setTimeout(lq,0)}});var Rv=E((bo0,Ev)=>{function K$(D,$){if(typeof $==="boolean")$={forever:$};if(this._originalTimeouts=JSON.parse(JSON.stringify(D)),this._timeouts=D,this._options=$||{},this._maxRetryTime=$&&$.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever)this._cachedTimeouts=this._timeouts.slice(0)}Ev.exports=K$;K$.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};K$.prototype.stop=function(){if(this._timeout)clearTimeout(this._timeout);this._timeouts=[],this._cachedTimeouts=null};K$.prototype.retry=function(D){if(this._timeout)clearTimeout(this._timeout);if(!D)return!1;var $=new Date().getTime();if(D&&$-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error("RetryOperation timeout occurred")),!1;this._errors.push(D);var X=this._timeouts.shift();if(X===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),X=this._timeouts.shift();else return!1;var J=this,Y=setTimeout(function(){if(J._attempts++,J._operationTimeoutCb){if(J._timeout=setTimeout(function(){J._operationTimeoutCb(J._attempts)},J._operationTimeout),J._options.unref)J._timeout.unref()}J._fn(J._attempts)},X);if(this._options.unref)Y.unref();return!0};K$.prototype.attempt=function(D,$){if(this._fn=D,$){if($.timeout)this._operationTimeout=$.timeout;if($.cb)this._operationTimeoutCb=$.cb}var X=this;if(this._operationTimeoutCb)this._timeout=setTimeout(function(){X._operationTimeoutCb()},X._operationTimeout);this._operationStart=new Date().getTime(),this._fn(this._attempts)};K$.prototype.try=function(D){console.log("Using RetryOperation.try() is deprecated"),this.attempt(D)};K$.prototype.start=function(D){console.log("Using RetryOperation.start() is deprecated"),this.attempt(D)};K$.prototype.start=K$.prototype.try;K$.prototype.errors=function(){return this._errors};K$.prototype.attempts=function(){return this._attempts};K$.prototype.mainError=function(){if(this._errors.length===0)return null;var D={},$=null,X=0;for(var J=0;J<this._errors.length;J++){var Y=this._errors[J],Q=Y.message,F=(D[Q]||0)+1;if(D[Q]=F,F>=X)$=Y,X=F}return $}});var Tv=E((aw0)=>{var ow0=Rv();aw0.operation=function(D){var $=aw0.timeouts(D);return new ow0($,{forever:D&&D.forever,unref:D&&D.unref,maxRetryTime:D&&D.maxRetryTime})};aw0.timeouts=function(D){if(D instanceof Array)return[].concat(D);var $={retries:10,factor:2,minTimeout:1000,maxTimeout:1/0,randomize:!1};for(var X in D)$[X]=D[X];if($.minTimeout>$.maxTimeout)throw Error("minTimeout is greater than maxTimeout");var J=[];for(var Y=0;Y<$.retries;Y++)J.push(this.createTimeout(Y,$));if(D&&D.forever&&!J.length)J.push(this.createTimeout(Y,$));return J.sort(function(Q,F){return Q-F}),J};aw0.createTimeout=function(D,$){var X=$.randomize?Math.random()+1:1,J=Math.round(X*$.minTimeout*Math.pow($.factor,D));return J=Math.min(J,$.maxTimeout),J};aw0.wrap=function(D,$,X){if($ instanceof Array)X=$,$=null;if(!X){X=[];for(var J in D)if(typeof D[J]==="function")X.push(J)}for(var Y=0;Y<X.length;Y++){var Q=X[Y],F=D[Q];D[Q]=function(Z){var G=aw0.operation($),O=Array.prototype.slice.call(arguments,1),w=O.pop();O.push(function(q){if(G.retry(q))return;if(q)arguments[0]=G.mainError();w.apply(this,arguments)}),G.attempt(function(){Z.apply(D,O)})}.bind(D,F),D[Q].options=$}}});var Cv=E((go0,TQ)=>{TQ.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];if(process.platform!=="win32")TQ.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")TQ.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var PQ=E((mo0,T5)=>{var AD=global.process,y8=function(D){return D&&typeof D==="object"&&typeof D.removeListener==="function"&&typeof D.emit==="function"&&typeof D.reallyExit==="function"&&typeof D.listeners==="function"&&typeof D.kill==="function"&&typeof D.pid==="number"&&typeof D.on==="function"};if(!y8(AD))T5.exports=function(){return function(){}};else{if(pq=l("assert"),b8=Cv(),rq=/^win/i.test(AD.platform),j5=l("events"),typeof j5!=="function")j5=j5.EventEmitter;if(AD.__signal_exit_emitter__)tD=AD.__signal_exit_emitter__;else tD=AD.__signal_exit_emitter__=new j5,tD.count=0,tD.emitted={};if(!tD.infinite)tD.setMaxListeners(1/0),tD.infinite=!0;T5.exports=function(D,$){if(!y8(global.process))return function(){};if(pq.equal(typeof D,"function","a callback must be provided for exit handler"),h8===!1)CQ();var X="exit";if($&&$.alwaysLast)X="afterexit";var J=function(){if(tD.removeListener(X,D),tD.listeners("exit").length===0&&tD.listeners("afterexit").length===0)V2()};return tD.on(X,D),J},V2=function(){if(!h8||!y8(global.process))return;h8=!1,b8.forEach(function($){try{AD.removeListener($,z2[$])}catch(X){}}),AD.emit=L2,AD.reallyExit=SQ,tD.count-=1},T5.exports.unload=V2,N4=function($,X,J){if(tD.emitted[$])return;tD.emitted[$]=!0,tD.emit($,X,J)},z2={},b8.forEach(function(D){z2[D]=function(){if(!y8(global.process))return;var X=AD.listeners(D);if(X.length===tD.count){if(V2(),N4("exit",null,D),N4("afterexit",null,D),rq&&D==="SIGHUP")D="SIGINT";AD.kill(AD.pid,D)}}}),T5.exports.signals=function(){return b8},h8=!1,CQ=function(){if(h8||!y8(global.process))return;h8=!0,tD.count+=1,b8=b8.filter(function($){try{return AD.on($,z2[$]),!0}catch(X){return!1}}),AD.emit=oq,AD.reallyExit=tq},T5.exports.load=CQ,SQ=AD.reallyExit,tq=function($){if(!y8(global.process))return;AD.exitCode=$||0,N4("exit",AD.exitCode,null),N4("afterexit",AD.exitCode,null),SQ.call(AD,AD.exitCode)},L2=AD.emit,oq=function($,X){if($==="exit"&&y8(global.process)){if(X!==void 0)AD.exitCode=X;var J=L2.apply(this,arguments);return N4("exit",AD.exitCode,null),N4("afterexit",AD.exitCode,null),J}else return L2.apply(this,arguments)}}var pq,b8,rq,j5,tD,V2,N4,z2,h8,CQ,SQ,tq,L2,oq});var Pv=E((Jq0,aq)=>{var Sv=Symbol();function $q0(D,$,X){let J=$[Sv];if(J)return $.stat(D,(Q,F)=>{if(Q)return X(Q);X(null,F.mtime,J)});let Y=new Date(Math.ceil(Date.now()/1000)*1000+5);$.utimes(D,Y,Y,(Q)=>{if(Q)return X(Q);$.stat(D,(F,U)=>{if(F)return X(F);let Z=U.mtime.getTime()%1000===0?"s":"ms";Object.defineProperty($,Sv,{value:Z}),X(null,U.mtime,Z)})})}function Xq0(D){let $=Date.now();if(D==="s")$=Math.ceil($/1000)*1000;return new Date($)}Jq0.probe=$q0;Jq0.getMtime=Xq0});var fv=E((qq0,I2)=>{var Fq0=l("path"),DW=yD(),Uq0=Tv(),Zq0=PQ(),uv=Pv(),v6={};function M2(D,$){return $.lockfilePath||`${D}.lock`}function $W(D,$,X){if(!$.realpath)return X(null,Fq0.resolve(D));$.fs.realpath(D,X)}function eq(D,$,X){let J=M2(D,$);$.fs.mkdir(J,(Y)=>{if(!Y)return uv.probe(J,$.fs,(Q,F,U)=>{if(Q)return $.fs.rmdir(J,()=>{}),X(Q);X(null,F,U)});if(Y.code!=="EEXIST")return X(Y);if($.stale<=0)return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));$.fs.stat(J,(Q,F)=>{if(Q){if(Q.code==="ENOENT")return eq(D,{...$,stale:0},X);return X(Q)}if(!xv(F,$))return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));vv(D,$,(U)=>{if(U)return X(U);eq(D,{...$,stale:0},X)})})})}function xv(D,$){return D.mtime.getTime()<Date.now()-$.stale}function vv(D,$,X){$.fs.rmdir(M2(D,$),(J)=>{if(J&&J.code!=="ENOENT")return X(J);X()})}function uQ(D,$){let X=v6[D];if(X.updateTimeout)return;if(X.updateDelay=X.updateDelay||$.update,X.updateTimeout=setTimeout(()=>{X.updateTimeout=null,$.fs.stat(X.lockfilePath,(J,Y)=>{let Q=X.lastUpdate+$.stale<Date.now();if(J){if(J.code==="ENOENT"||Q)return sq(D,X,Object.assign(J,{code:"ECOMPROMISED"}));return X.updateDelay=1000,uQ(D,$)}if(X.mtime.getTime()!==Y.mtime.getTime())return sq(D,X,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let U=uv.getMtime(X.mtimePrecision);$.fs.utimes(X.lockfilePath,U,U,(Z)=>{let G=X.lastUpdate+$.stale<Date.now();if(X.released)return;if(Z){if(Z.code==="ENOENT"||G)return sq(D,X,Object.assign(Z,{code:"ECOMPROMISED"}));return X.updateDelay=1000,uQ(D,$)}X.mtime=U,X.lastUpdate=Date.now(),X.updateDelay=null,uQ(D,$)})})},X.updateDelay),X.updateTimeout.unref)X.updateTimeout.unref()}function sq(D,$,X){if($.released=!0,$.updateTimeout)clearTimeout($.updateTimeout);if(v6[D]===$)delete v6[D];$.options.onCompromised(X)}function Gq0(D,$,X){$={stale:1e4,update:null,realpath:!0,retries:0,fs:DW,onCompromised:(J)=>{throw J},...$},$.retries=$.retries||0,$.retries=typeof $.retries==="number"?{retries:$.retries}:$.retries,$.stale=Math.max($.stale||0,2000),$.update=$.update==null?$.stale/2:$.update||0,$.update=Math.max(Math.min($.update,$.stale/2),1000),$W(D,$,(J,Y)=>{if(J)return X(J);let Q=Uq0.operation($.retries);Q.attempt(()=>{eq(Y,$,(F,U,Z)=>{if(Q.retry(F))return;if(F)return X(Q.mainError());let G=v6[Y]={lockfilePath:M2(Y,$),mtime:U,mtimePrecision:Z,options:$,lastUpdate:Date.now()};uQ(Y,$),X(null,(O)=>{if(G.released)return O&&O(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));_v(Y,{...$,realpath:!1},O)})})})})}function _v(D,$,X){$={fs:DW,realpath:!0,...$},$W(D,$,(J,Y)=>{if(J)return X(J);let Q=v6[Y];if(!Q)return X(Object.assign(Error("Lock is not acquired/owned by you"),{code:"ENOTACQUIRED"}));Q.updateTimeout&&clearTimeout(Q.updateTimeout),Q.released=!0,delete v6[Y],vv(Y,$,X)})}function Oq0(D,$,X){$={stale:1e4,realpath:!0,fs:DW,...$},$.stale=Math.max($.stale||0,2000),$W(D,$,(J,Y)=>{if(J)return X(J);$.fs.stat(M2(Y,$),(Q,F)=>{if(Q)return Q.code==="ENOENT"?X(null,!1):X(Q);return X(null,!xv(F,$))})})}function wq0(){return v6}Zq0(()=>{for(let D in v6){let $=v6[D].options;try{$.fs.rmdirSync(M2(D,$))}catch(X){}}});qq0.lock=Gq0;qq0.unlock=_v;qq0.check=Oq0;qq0.getLocks=wq0});var yv=E((co0,kv)=>{var Nq0=yD();function Vq0(D){let $=["mkdir","realpath","stat","rmdir","utimes"],X={...D};return $.forEach((J)=>{X[J]=(...Y)=>{let Q=Y.pop(),F;try{F=D[`${J}Sync`](...Y)}catch(U){return Q(U)}Q(null,F)}}),X}function zq0(D){return(...$)=>new Promise((X,J)=>{$.push((Y,Q)=>{if(Y)J(Y);else X(Q)}),D(...$)})}function Lq0(D){return(...$)=>{let X,J;if($.push((Y,Q)=>{X=Y,J=Q}),D(...$),X)throw X;return J}}function Mq0(D){if(D={...D},D.fs=Vq0(D.fs||Nq0),typeof D.retries==="number"&&D.retries>0||D.retries&&typeof D.retries.retries==="number"&&D.retries.retries>0)throw Object.assign(Error("Cannot use retries with the sync api"),{code:"ESYNC"});return D}kv.exports={toPromise:zq0,toSync:Lq0,toSyncOptions:Mq0}});var hv=E((do0,V4)=>{var C5=fv(),{toPromise:xQ,toSync:vQ,toSyncOptions:XW}=yv();async function bv(D,$){let X=await xQ(C5.lock)(D,$);return xQ(X)}function Iq0(D,$){let X=vQ(C5.lock)(D,XW($));return vQ(X)}function Aq0(D,$){return xQ(C5.unlock)(D,$)}function Eq0(D,$){return vQ(C5.unlock)(D,XW($))}function Rq0(D,$){return xQ(C5.check)(D,$)}function jq0(D,$){return vQ(C5.check)(D,XW($))}V4.exports=bv;V4.exports.lock=bv;V4.exports.unlock=Aq0;V4.exports.lockSync=Iq0;V4.exports.unlockSync=Eq0;V4.exports.check=Rq0;V4.exports.checkSync=jq0});var iv=E((nv)=>{Object.defineProperty(nv,"__esModule",{value:!0});nv.canStoreURLs=nv.FileUrlStorage=void 0;var gv=l("fs"),Tq0=Sq0(Bv()),mv=Cq0(hv());function dv(D){if(typeof WeakMap!="function")return null;var $=new WeakMap,X=new WeakMap;return(dv=function(J){return J?X:$})(D)}function Cq0(D,$){if(!$&&D&&D.__esModule)return D;if(D===null||typeof D!="object"&&typeof D!="function")return{default:D};var X=dv($);if(X&&X.has(D))return X.get(D);var J={__proto__:null},Y=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var Q in D)if(Q!=="default"&&{}.hasOwnProperty.call(D,Q)){var F=Y?Object.getOwnPropertyDescriptor(D,Q):null;F&&(F.get||F.set)?Object.defineProperty(J,Q,F):J[Q]=D[Q]}return J.default=D,X&&X.set(D,J),J}function Sq0(D){return D&&D.__esModule?D:{default:D}}function A2(D){return A2=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},A2(D)}function Pq0(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function cv(D,$){for(var X=0;X<$.length;X++){var J=$[X];if(J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J)J.writable=!0;Object.defineProperty(D,xq0(J.key),J)}}function uq0(D,$,X){if($)cv(D.prototype,$);if(X)cv(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function xq0(D){var $=vq0(D,"string");return A2($)=="symbol"?$:$+""}function vq0(D,$){if(A2(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var J=X.call(D,$||"default");if(A2(J)!="object")return J;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var no0=nv.canStoreURLs=!0,lo0=nv.FileUrlStorage=function(){function D($){Pq0(this,D),this.path=$}return uq0(D,[{key:"findAllUploads",value:function(){var X=this;return new Promise(function(J,Y){X._getItems("tus::",function(Q,F){if(Q)Y(Q);else J(F)})})}},{key:"findUploadsByFingerprint",value:function(X){var J=this;return new Promise(function(Y,Q){J._getItems("tus::".concat(X),function(F,U){if(F)Q(F);else Y(U)})})}},{key:"removeUpload",value:function(X){var J=this;return new Promise(function(Y,Q){J._removeItem(X,function(F){if(F)Q(F);else Y()})})}},{key:"addUpload",value:function(X,J){var Y=this,Q=Math.round(Math.random()*1000000000000),F="tus::".concat(X,"::").concat(Q);return new Promise(function(U,Z){Y._setItem(F,J,function(G){if(G)Z(G);else U(F)})})}},{key:"_setItem",value:function(X,J,Y){var Q=this;mv.lock(this.path,this._lockfileOptions()).then(function(F){Y=Q._releaseAndCb(F,Y),Q._getData(function(U,Z){if(U){Y(U);return}Z[X]=J,Q._writeData(Z,function(G){return Y(G)})})}).catch(Y)}},{key:"_getItems",value:function(X,J){this._getData(function(Y,Q){if(Y){J(Y);return}var F=Object.keys(Q).filter(function(U){return U.startsWith(X)}).map(function(U){var Z=Q[U];return Z.urlStorageKey=U,Z});J(null,F)})}},{key:"_removeItem",value:function(X,J){var Y=this;mv.lock(this.path,this._lockfileOptions()).then(function(Q){J=Y._releaseAndCb(Q,J),Y._getData(function(F,U){if(F){J(F);return}delete U[X],Y._writeData(U,function(Z){return J(Z)})})}).catch(J)}},{key:"_lockfileOptions",value:function(){return{realpath:!1,retries:{retries:5,minTimeout:20}}}},{key:"_releaseAndCb",value:function(X,J){return function(Y){if(Y){X().then(function(){return J(Y)}).catch(function(Q){return J((0,Tq0.default)([Y,Q]))});return}X().then(J).catch(J)}}},{key:"_writeData",value:function(X,J){var Y={encoding:"utf8",mode:432,flag:"w"};(0,gv.writeFile)(this.path,JSON.stringify(X),Y,function(Q){return J(Q)})}},{key:"_getData",value:function(X){(0,gv.readFile)(this.path,"utf8",function(J,Y){if(J){if(J.code==="ENOENT")X(null,{});else X(J);return}try{Y=!Y.trim().length?{}:JSON.parse(Y)}catch(Q){X(Q);return}X(null,Y)})}}])}()});var fQ=E((z4)=>{Object.defineProperty(z4,"__esModule",{value:!0});Object.defineProperty(z4,"DefaultHttpStack",{enumerable:!0,get:function(){return ov.default}});Object.defineProperty(z4,"DetailedError",{enumerable:!0,get:function(){return fq0.default}});Object.defineProperty(z4,"FileUrlStorage",{enumerable:!0,get:function(){return av.FileUrlStorage}});Object.defineProperty(z4,"StreamSource",{enumerable:!0,get:function(){return gq0.default}});z4.Upload=void 0;Object.defineProperty(z4,"canStoreURLs",{enumerable:!0,get:function(){return av.canStoreURLs}});z4.defaultOptions=void 0;Object.defineProperty(z4,"enableDebugLog",{enumerable:!0,get:function(){return kq0.enableDebugLog}});z4.isSupported=void 0;var fq0=g8(Xq()),kq0=Jq(),yq0=g8(hP()),JW=g8(Vu()),bq0=g8(bu()),hq0=g8(du()),ov=g8(Qx()),gq0=g8(Bq()),av=iv();function g8(D){return D&&D.__esModule?D:{default:D}}function P5(D){return P5=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},P5(D)}function mq0(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function pv(D,$){for(var X=0;X<$.length;X++){var J=$[X];if(J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J)J.writable=!0;Object.defineProperty(D,ev(J.key),J)}}function cq0(D,$,X){if($)pv(D.prototype,$);if(X)pv(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function dq0(D,$,X){return $=_Q($),nq0(D,sv()?Reflect.construct($,X||[],_Q(D).constructor):$.apply(D,X))}function nq0(D,$){if($&&(P5($)==="object"||typeof $==="function"))return $;else if($!==void 0)throw TypeError("Derived constructors may only return object or undefined");return lq0(D)}function lq0(D){if(D===void 0)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return D}function sv(){try{var D=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch($){}return(sv=function(){return!!D})()}function _Q(D){return _Q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(X){return X.__proto__||Object.getPrototypeOf(X)},_Q(D)}function iq0(D,$){if(typeof $!=="function"&&$!==null)throw TypeError("Super expression must either be null or a function");if(D.prototype=Object.create($&&$.prototype,{constructor:{value:D,writable:!0,configurable:!0}}),Object.defineProperty(D,"prototype",{writable:!1}),$)YW(D,$)}function YW(D,$){return YW=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(J,Y){return J.__proto__=Y,J},YW(D,$)}function rv(D,$){var X=Object.keys(D);if(Object.getOwnPropertySymbols){var J=Object.getOwnPropertySymbols(D);$&&(J=J.filter(function(Y){return Object.getOwnPropertyDescriptor(D,Y).enumerable})),X.push.apply(X,J)}return X}function S5(D){for(var $=1;$<arguments.length;$++){var X=arguments[$]!=null?arguments[$]:{};$%2?rv(Object(X),!0).forEach(function(J){pq0(D,J,X[J])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(X)):rv(Object(X)).forEach(function(J){Object.defineProperty(D,J,Object.getOwnPropertyDescriptor(X,J))})}return D}function pq0(D,$,X){if($=ev($),$ in D)Object.defineProperty(D,$,{value:X,enumerable:!0,configurable:!0,writable:!0});else D[$]=X;return D}function ev(D){var $=rq0(D,"string");return P5($)=="symbol"?$:$+""}function rq0(D,$){if(P5(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var J=X.call(D,$||"default");if(P5(J)!="object")return J;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var tv=z4.defaultOptions=S5(S5({},JW.default.defaultOptions),{},{httpStack:new ov.default,fileReader:new bq0.default,urlStorage:new yq0.default,fingerprint:hq0.default}),po0=z4.Upload=function(D){function $(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,J=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return mq0(this,$),J=S5(S5({},tv),J),dq0(this,$,[X,J])}return iq0($,D),cq0($,null,[{key:"terminate",value:function(J){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Y=S5(S5({},tv),Y),JW.default.terminate(J,Y)}}])}(JW.default),ro0=z4.isSupported=!0});var f$;var E2=p(()=>{f$={name:"@capgo/cli",type:"module",version:"7.112.5",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/capgo/tree/main/cli#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/capgo.git",directory:"cli"},bugs:{url:"https://github.com/Cap-go/capgo/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk","tanstack-intent"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},files:["!skills/_artifacts","dist","skills"],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:"bunx --bun supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsgo --project tsconfig.tsgo.json --noEmit",lint:"bun run lint:ox","lint:ox":"oxlint --config ../.oxlintrc.json src","lint:fix":"oxlint --config ../.oxlintrc.json --fix src","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:android-service-account-validation":"bun test/test-android-service-account-validation.mjs","test:build-zip-filter":"bun test/test-build-zip-filter.mjs","test:checksum":"bun test/test-checksum-algorithm.mjs","test:build-needed":"bun test/test-build-needed.mjs","test:ci-prompts":"bun test/test-ci-prompts.mjs","test:ci-secrets":"bun test/test-ci-secrets.mjs","test:android-onboarding-progress":"bun test/test-android-onboarding-progress.mjs","test:onboarding-telemetry":"bun test/test-onboarding-telemetry.mjs","test:posthog-exception":"bun test/test-posthog-exception.mjs","test:onboarding-recovery":"bun test/test-onboarding-recovery.mjs","test:onboarding-progress":"bun test/test-onboarding-progress.mjs","test:onboarding-run-targets":"bun test/test-onboarding-run-targets.mjs","test:run-device-command":"bun test/test-run-device-command.mjs","test:init-app-conflict":"bun test/test-init-app-conflict.mjs","test:init-guardrails":"bun test/test-init-guardrails.mjs","test:prompt-preferences":"bun test/test-prompt-preferences.mjs","test:esm-sdk":"node test/test-sdk-esm.mjs","test:mcp":"node test/test-mcp.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh","test:platform-paths":"bun test/test-platform-paths.mjs","test:payload-split":"bun test/test-payload-split.mjs","test:macos-signing":"bun test/test-macos-signing.mjs","test:apple-api-import-helpers":"bun test/test-apple-api-import-helpers.mjs","test:manifest-path-encoding":"bun test/test-manifest-path-encoding.mjs",test:"bun run build && bun run test:version-detection:setup && 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:android-service-account-validation && bun run test:build-zip-filter && bun run test:checksum && bun run test:build-needed && bun run test:ci-prompts && bun run test:ci-secrets && bun run test:android-onboarding-progress && bun run test:onboarding-telemetry && bun run test:posthog-exception && bun run test:build-platform-selection && bun run test:onboarding-recovery && bun run test:onboarding-progress && bun run test:onboarding-run-targets && bun run test:run-device-command && bun run test:init-app-conflict && bun run test:init-guardrails && bun run test:prompt-preferences && bun run test:esm-sdk && bun run test:mcp && bun run test:version-detection && bun run test:platform-paths && bun run test:payload-split && bun run test:manifest-path-encoding && bun run test:macos-signing && bun run test:apple-api-import-helpers && bun run test:ai-log-capture && bun run test:ai-analyze-flow && bun run test:ai-render-markdown","test:build-platform-selection":"bun test/test-build-platform-selection.mjs","test:ai-log-capture":"bun test/test-ai-log-capture.mjs","test:ai-analyze-flow":"bun test/test-ai-analyze-flow.mjs","test:ai-render-markdown":"bun test/test-ai-render-markdown.mjs"},dependencies:{"@inkjs/ui":"^2.0.0",ink:"^7.0.4","ink-spinner":"^5.0.0",jsonwebtoken:"^9.0.3","node-forge":"^1.4.0",qrcode:"^1.5.4",react:"^19.2.6"},devDependencies:{"@antfu/eslint-config":"^9.0.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.6","@capacitor/cli":"^8.3.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^1.4.0","@modelcontextprotocol/sdk":"^1.29.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.8","@supabase/supabase-js":"^2.106.2","@tanstack/intent":"^0.0.41","@types/adm-zip":"^0.5.8","@types/jsonwebtoken":"^9.0.10","@types/node":"^25.9.1","@types/node-forge":"^1.3.14","@types/prettyjson":"^0.0.33","@types/qrcode":"^1.5.6","@types/react":"^19.2.15","@types/tmp":"^0.2.6","@types/ws":"^8.18.1","@typescript/native-preview":"7.0.0-dev.20260526.1","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.17","ci-info":"^4.4.0",commander:"^14.0.3",eslint:"^10.4.0","git-format-staged":"4.0.1",husky:"^9.1.7","is-wsl":"^3.1.1",micromatch:"^4.0.8",open:"^11.0.0",oxlint:"^1.67.0",partysocket:"^1.1.19",prettyjson:"^1.2.5",tmp:"^0.2.6","tus-js-client":"^4.3.1",typescript:"^6.0.3",ws:"^8.21.0",zod:"^4.4.3"}}});async function kQ(D){try{let X=`https://registry.npmjs.org/${encodeURIComponent(D.toLowerCase())}`,J=await fetch(X,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});if(!J.ok)return null;return(await J.json())["dist-tags"]?.latest||null}catch{return null}}async function oq0(){let D=await kQ("@capgo/cli")??"",$=D?.split(".")[0]??"";return{currentVersion:f$.version,latestVersion:D,isOutdated:!!D&&D!==f$.version,majorVersion:$}}async function OD(){let{isOutdated:D,currentVersion:$,latestVersion:X,majorVersion:J}=await oq0();if(D)z.warning(`\uD83D\uDEA8 You are using @capgo/cli@${$} it's not the latest version.
128
128
  Please use @capgo/cli@${X}" or @capgo/cli@${J} to keep up to date with the latest features and bug fixes.`)}var I1=p(()=>{k0();E2()});async function J_(D,$,X,J,Y,Q="✅"){await A0(X,{channel:D,event:J,icon:Q,user_id:$,...Y?{tags:{"app-id":Y}}:{},notify:!1})}var Y_=p(()=>{k0();R6();I1();f0()});import{Buffer as Q_}from"node:buffer";import{createHash as aq0}from"node:crypto";function eq0(D){let $=4294967295;for(let X=0;X<D.length;X++){let J=D[X];$=sq0[($^J)&255]^$>>>8}return $=$^4294967295,($>>>0).toString(16).padStart(8,"0")}async function L4(D,$="sha256"){let X=Q_.isBuffer(D)?D:Q_.from(D);if($==="crc32")return eq0(X);let J=aq0($);return J.update(X),J.digest("hex")}var sq0;var R2=p(()=>{sq0=(()=>{let D=[];for(let $=0;$<256;$++){let X=$;for(let J=0;J<8;J++)X=X&1?3988292384^X>>>1:X>>>1;D[$]=X}return D})()});var U_=E((Oa0,F_)=>{var u5=1000,x5=u5*60,v5=x5*60,m8=v5*24,DW0=m8*7,$W0=m8*365.25;F_.exports=function(D,$){$=$||{};var X=typeof D;if(X==="string"&&D.length>0)return XW0(D);else if(X==="number"&&isFinite(D))return $.long?YW0(D):JW0(D);throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(D))};function XW0(D){if(D=String(D),D.length>100)return;var $=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(D);if(!$)return;var X=parseFloat($[1]),J=($[2]||"ms").toLowerCase();switch(J){case"years":case"year":case"yrs":case"yr":case"y":return X*$W0;case"weeks":case"week":case"w":return X*DW0;case"days":case"day":case"d":return X*m8;case"hours":case"hour":case"hrs":case"hr":case"h":return X*v5;case"minutes":case"minute":case"mins":case"min":case"m":return X*x5;case"seconds":case"second":case"secs":case"sec":case"s":return X*u5;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return X;default:return}}function JW0(D){var $=Math.abs(D);if($>=m8)return Math.round(D/m8)+"d";if($>=v5)return Math.round(D/v5)+"h";if($>=x5)return Math.round(D/x5)+"m";if($>=u5)return Math.round(D/u5)+"s";return D+"ms"}function YW0(D){var $=Math.abs(D);if($>=m8)return yQ(D,$,m8,"day");if($>=v5)return yQ(D,$,v5,"hour");if($>=x5)return yQ(D,$,x5,"minute");if($>=u5)return yQ(D,$,u5,"second");return D+" ms"}function yQ(D,$,X,J){var Y=$>=X*1.5;return Math.round(D/X)+" "+J+(Y?"s":"")}});var QW=E((wa0,Z_)=>{function QW0(D){X.debug=X,X.default=X,X.coerce=Z,X.disable=F,X.enable=Y,X.enabled=U,X.humanize=U_(),X.destroy=G,Object.keys(D).forEach((O)=>{X[O]=D[O]}),X.names=[],X.skips=[],X.formatters={};function $(O){let w=0;for(let q=0;q<O.length;q++)w=(w<<5)-w+O.charCodeAt(q),w|=0;return X.colors[Math.abs(w)%X.colors.length]}X.selectColor=$;function X(O){let w,q=null,W,B;function H(...L){if(!H.enabled)return;let M=H,I=Number(new Date),K=I-(w||I);if(M.diff=K,M.prev=w,M.curr=I,w=I,L[0]=X.coerce(L[0]),typeof L[0]!=="string")L.unshift("%O");let N=0;L[0]=L[0].replace(/%([a-zA-Z%])/g,(R,v)=>{if(R==="%%")return"%";N++;let _=X.formatters[v];if(typeof _==="function"){let A=L[N];R=_.call(M,A),L.splice(N,1),N--}return R}),X.formatArgs.call(M,L),(M.log||X.log).apply(M,L)}if(H.namespace=O,H.useColors=X.useColors(),H.color=X.selectColor(O),H.extend=J,H.destroy=X.destroy,Object.defineProperty(H,"enabled",{enumerable:!0,configurable:!1,get:()=>{if(q!==null)return q;if(W!==X.namespaces)W=X.namespaces,B=X.enabled(O);return B},set:(L)=>{q=L}}),typeof X.init==="function")X.init(H);return H}function J(O,w){let q=X(this.namespace+(typeof w>"u"?":":w)+O);return q.log=this.log,q}function Y(O){X.save(O),X.namespaces=O,X.names=[],X.skips=[];let w=(typeof O==="string"?O:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let q of w)if(q[0]==="-")X.skips.push(q.slice(1));else X.names.push(q)}function Q(O,w){let q=0,W=0,B=-1,H=0;while(q<O.length)if(W<w.length&&(w[W]===O[q]||w[W]==="*"))if(w[W]==="*")B=W,H=q,W++;else q++,W++;else if(B!==-1)W=B+1,H++,q=H;else return!1;while(W<w.length&&w[W]==="*")W++;return W===w.length}function F(){let O=[...X.names,...X.skips.map((w)=>"-"+w)].join(",");return X.enable(""),O}function U(O){for(let w of X.skips)if(Q(O,w))return!1;for(let w of X.names)if(Q(O,w))return!0;return!1}function Z(O){if(O instanceof Error)return O.stack||O.message;return O}function G(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return X.enable(X.load()),X}Z_.exports=QW0});var O_=E((G_,bQ)=>{G_.formatArgs=UW0;G_.save=ZW0;G_.load=GW0;G_.useColors=FW0;G_.storage=OW0();G_.destroy=(()=>{let D=!1;return()=>{if(!D)D=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}})();G_.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function FW0(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let D;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(D=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(D[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function UW0(D){if(D[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+D[0]+(this.useColors?"%c ":" ")+"+"+bQ.exports.humanize(this.diff),!this.useColors)return;let $="color: "+this.color;D.splice(1,0,$,"color: inherit");let X=0,J=0;D[0].replace(/%[a-zA-Z%]/g,(Y)=>{if(Y==="%%")return;if(X++,Y==="%c")J=X}),D.splice(J,0,$)}G_.log=console.debug||console.log||(()=>{});function ZW0(D){try{if(D)G_.storage.setItem("debug",D);else G_.storage.removeItem("debug")}catch($){}}function GW0(){let D;try{D=G_.storage.getItem("debug")||G_.storage.getItem("DEBUG")}catch($){}if(!D&&typeof process<"u"&&"env"in process)D=process.env.DEBUG;return D}function OW0(){try{return localStorage}catch(D){}}bQ.exports=QW()(G_);var{formatters:wW0}=bQ.exports;wW0.j=function(D){try{return JSON.stringify(D)}catch($){return"[UnexpectedJSONParseError]: "+$.message}}});var q_=E((Wa0,w_)=>{w_.exports=(D,$=process.argv)=>{let X=D.startsWith("-")?"":D.length===1?"-":"--",J=$.indexOf(X+D),Y=$.indexOf("--");return J!==-1&&(Y===-1||J<Y)}});var H_=E((Ba0,B_)=>{var zW0=l("os"),W_=l("tty"),N$=q_(),{env:eD}=process,M4;if(N$("no-color")||N$("no-colors")||N$("color=false")||N$("color=never"))M4=0;else if(N$("color")||N$("colors")||N$("color=true")||N$("color=always"))M4=1;if("FORCE_COLOR"in eD)if(eD.FORCE_COLOR==="true")M4=1;else if(eD.FORCE_COLOR==="false")M4=0;else M4=eD.FORCE_COLOR.length===0?1:Math.min(parseInt(eD.FORCE_COLOR,10),3);function FW(D){if(D===0)return!1;return{level:D,hasBasic:!0,has256:D>=2,has16m:D>=3}}function UW(D,$){if(M4===0)return 0;if(N$("color=16m")||N$("color=full")||N$("color=truecolor"))return 3;if(N$("color=256"))return 2;if(D&&!$&&M4===void 0)return 0;let X=M4||0;if(eD.TERM==="dumb")return X;if(process.platform==="win32"){let J=zW0.release().split(".");if(Number(J[0])>=10&&Number(J[2])>=10586)return Number(J[2])>=14931?3:2;return 1}if("CI"in eD){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((J)=>(J in eD))||eD.CI_NAME==="codeship")return 1;return X}if("TEAMCITY_VERSION"in eD)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(eD.TEAMCITY_VERSION)?1:0;if(eD.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in eD){let J=parseInt((eD.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(eD.TERM_PROGRAM){case"iTerm.app":return J>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(eD.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(eD.TERM))return 1;if("COLORTERM"in eD)return 1;return X}function LW0(D){let $=UW(D,D&&D.isTTY);return FW($)}B_.exports={supportsColor:LW0,stdout:FW(UW(!0,W_.isatty(1))),stderr:FW(UW(!0,W_.isatty(2)))}});var z_=E((N_,gQ)=>{var MW0=l("tty"),hQ=l("util");N_.init=CW0;N_.log=RW0;N_.formatArgs=AW0;N_.save=jW0;N_.load=TW0;N_.useColors=IW0;N_.destroy=hQ.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");N_.colors=[6,2,3,4,5,1];try{let D=H_();if(D&&(D.stderr||D).level>=2)N_.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221]}catch(D){}N_.inspectOpts=Object.keys(process.env).filter((D)=>{return/^debug_/i.test(D)}).reduce((D,$)=>{let X=$.substring(6).toLowerCase().replace(/_([a-z])/g,(Y,Q)=>{return Q.toUpperCase()}),J=process.env[$];if(/^(yes|on|true|enabled)$/i.test(J))J=!0;else if(/^(no|off|false|disabled)$/i.test(J))J=!1;else if(J==="null")J=null;else J=Number(J);return D[X]=J,D},{});function IW0(){return"colors"in N_.inspectOpts?Boolean(N_.inspectOpts.colors):MW0.isatty(process.stderr.fd)}function AW0(D){let{namespace:$,useColors:X}=this;if(X){let J=this.color,Y="\x1B[3"+(J<8?J:"8;5;"+J),Q=` ${Y};1m${$} \x1B[0m`;D[0]=Q+D[0].split(`
129
129
  `).join(`
130
130
  `+Q),D.push(Y+"m+"+gQ.exports.humanize(this.diff)+"\x1B[0m")}else D[0]=EW0()+$+" "+D[0]}function EW0(){if(N_.inspectOpts.hideDate)return"";return new Date().toISOString()+" "}function RW0(...D){return process.stderr.write(hQ.formatWithOptions(N_.inspectOpts,...D)+`
@@ -547,12 +547,12 @@ ${X}
547
547
  </BUILD_LOG>
548
548
  `;return await Xk0(J,Y),J}async function cD0(D){let $=`${D.apiHost}/build/ai_analyze`;try{let X=await fetch($,{method:"POST",headers:{capgkey:D.apikey,"content-type":"application/json"},body:JSON.stringify({jobId:D.jobId,appId:D.appId,logs:D.logs}),signal:AbortSignal.timeout(60000)});if(X.status===200){let Y=await X.json();if(typeof Y.analysis!=="string")return{kind:"error",status:200,message:"malformed_response"};return{kind:"ok",analysis:Y.analysis}}if(X.status===409)return{kind:"already_analyzed"};if(X.status===413)return{kind:"too_big"};let J;try{let Y=await X.json();J=Y.error||Y.message}catch{}return{kind:"error",status:X.status,message:J}}catch(X){return{kind:"error",message:X instanceof Error?X.message:String(X)}}}var Jk0=10485760;async function hI(D){try{return(await $k0(D3(D))).size>Jk0}catch{return!1}}import Yk0 from"node:process";var L6={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",cyan:"\x1B[36m",yellow:"\x1B[33m",gray:"\x1B[90m"};function A9(D,$){return`${D}${$}${L6.reset}`}function gI(D){return D.replace(/`([^`]+)`/g,($,X)=>A9(`${L6.cyan}${L6.dim}`,X)).replace(/\*\*([^*]+)\*\*/g,($,X)=>A9(L6.bold,X)).replace(/(^|[^*])\*([^*\s][^*]*)\*(?!\*)/g,($,X,J)=>`${X}${A9(L6.italic,J)}`)}function dD0(D,$=Yk0.stdout.isTTY===!0){if(!$)return D;let X=D.split(`
549
549
  `),J=[],Y=!1,Q=A9(L6.gray,"▎ ");for(let F of X){if(F.trimStart().startsWith("```")){Y=!Y;continue}if(Y){J.push(`${Q}${F}`);continue}let U=F.match(/^(#{1,6}) +(\S.*)$/);if(U){let O=U[2];J.push(""),J.push(A9(`${L6.bold}${L6.cyan}`,O));continue}let Z=F.match(/^([ \t]*)(\d+)\. +(\S.*)$/);if(Z){let[,O,w,q]=Z;J.push(`${O}${A9(L6.yellow,`${w}.`)} ${gI(q)}`);continue}let G=F.match(/^([ \t]*)[-*] +(\S.*)$/);if(G){let[,O,w]=G;J.push(`${O}${A9(L6.yellow,"•")} ${gI(w)}`);continue}J.push(gI(F))}return J.join(`
550
- `)}f0();async function nG(D){try{await A0(D.apikey,{event:"CLI AI Build Analysis Choice",channel:"build-lifecycle",icon:"\uD83E\uDD16",notify:!1,user_id:D.orgId,tags:{app_id:D.appId,platform:D.platform,job_id:D.jobId,choice:D.choice,triggered_by:D.triggeredBy}})}catch{}}async function nD0(D){let $={app_id:D.appId,platform:D.platform,job_id:D.jobId,result:D.result};if(D.result==="error"&&typeof D.errorStatus==="number"&&Number.isFinite(D.errorStatus))$.error_status=String(D.errorStatus);try{await A0(D.apikey,{event:"CLI AI Build Analysis Result",channel:"build-lifecycle",icon:"\uD83E\uDD16",notify:!1,user_id:D.orgId,tags:$})}catch{}}f0();import{Buffer as Bk0}from"node:buffer";import{homedir as Hk0}from"node:os";import{join as dI}from"node:path";import{cwd as Kk0,env as Nk0}from"node:process";import{randomBytes as Qk0}from"node:crypto";import{appendFile as Fk0,chmod as R5D,lstat as Uk0,mkdir as j5D,readFile as Zk0,rename as Gk0,rm as Ok0,writeFile as wk0}from"node:fs/promises";import{dirname as qk0,join as Wk0}from"node:path";async function mI(D){try{if((await Uk0(D)).isSymbolicLink())throw Error(`Refusing to access symbolic link path: ${D}`)}catch($){if($.code!=="ENOENT")throw $}}async function lD0(D,$,X=384){await mI(D),await Fk0(D,$,{mode:X})}async function $3(D,$,X={}){let J=X.mode??384;await mI(D);let Y=Wk0(qk0(D),`.capgo-tmp-${Qk0(8).toString("hex")}`);try{await wk0(Y,$,{encoding:X.encoding??"utf-8",mode:J}),await Gk0(Y,D)}catch(Q){throw await Ok0(Y,{force:!0}),Q}}async function lG(D){return await mI(D),await Zk0(D,"utf-8")}var Vk0=dI(Hk0(),".capgo-credentials"),zk0=dI(Vk0,"credentials.json"),Lk0=".capgo-credentials.json",E9=3600,iD0=604800;function Mk0(D){return D?dI(Kk0(),Lk0):zk0}function iG(D){let X=D.trim().match(/^(\d+)\s*([smhd])?$/i);if(!X)throw Error("output-retention must be a number with optional unit: s, m, h, d (examples: 1h, 3600s, 2d)");let J=Number.parseInt(X[1],10),Y=(X[2]||"s").toLowerCase(),F=J*(Y==="s"?1:Y==="m"?60:Y==="h"?3600:86400);if(F<E9)throw Error(`output-retention must be at least ${E9} seconds (1h)`);if(F>iD0)throw Error(`output-retention must be at most ${iD0} seconds (7d)`);return F}function X3(D){if(D===void 0)return!0;if(typeof D==="boolean")return D;let $=D.trim().toLowerCase();if($==="true"||$==="1"||$==="yes")return!0;if($==="false"||$==="0"||$==="no")return!1;throw Error("output-upload must be true/false (examples: --output-upload, --output-upload false)")}function pG(D){if(typeof D==="string"&&D.trim()==="")throw Error("in-app-update-priority must be an integer between 0 and 5");let $=typeof D==="number"?D:Number(D);if(!Number.isInteger($)||$<0||$>5)throw Error("in-app-update-priority must be an integer between 0 and 5");return $}async function cI(D){try{let $=Mk0(D),X=await lG($);return JSON.parse(X)}catch{return{}}}async function pD0(D,$){if($!==void 0){let Y=await cI($);if(!D){let Q=Object.keys(Y);if(Q.length===0)return null;return Y[Q[0]]||null}return Y[D]||null}let X=await cI(!0),J=await cI(!1);if(!D){let Y=Object.keys(X);if(Y.length>0)return X[Y[0]]||null;let Q=Object.keys(J);if(Q.length===0)return null;return J[Q[0]]||null}return X[D]||J[D]||null}function dD(D){return Nk0[D]}function Ik0(){let D={},$=dD("BUILD_CERTIFICATE_BASE64"),X=dD("P12_PASSWORD"),J=dD("APPLE_KEY_ID"),Y=dD("APPLE_ISSUER_ID"),Q=dD("APPLE_KEY_CONTENT"),F=dD("APP_STORE_CONNECT_TEAM_ID"),U=dD("CAPGO_IOS_SCHEME"),Z=dD("CAPGO_IOS_TARGET"),G=dD("CAPGO_IOS_PROVISIONING_MAP"),O=dD("CAPGO_IOS_PROVISIONING_MAP_BASE64"),w=G||(O?Bk0.from(O,"base64").toString("utf-8"):void 0),W=dD("CAPGO_ANDROID_FLAVOR")?.trim()||void 0,B=dD("ANDROID_KEYSTORE_FILE"),H=dD("KEYSTORE_KEY_ALIAS"),L=dD("KEYSTORE_KEY_PASSWORD"),M=dD("KEYSTORE_STORE_PASSWORD"),I=dD("PLAY_CONFIG_JSON"),K=dD("PLAY_STORE_IN_APP_UPDATE_PRIORITY"),N=dD("BUILD_OUTPUT_UPLOAD_ENABLED"),V=dD("BUILD_OUTPUT_RETENTION_SECONDS"),R=dD("SKIP_BUILD_NUMBER_BUMP"),v=dD("CAPGO_IOS_DISTRIBUTION");if($)D.BUILD_CERTIFICATE_BASE64=$;if(X)D.P12_PASSWORD=X;if(J)D.APPLE_KEY_ID=J;if(Y)D.APPLE_ISSUER_ID=Y;if(Q)D.APPLE_KEY_CONTENT=Q;if(F)D.APP_STORE_CONNECT_TEAM_ID=F;if(U)D.CAPGO_IOS_SCHEME=U;if(Z)D.CAPGO_IOS_TARGET=Z;if(v)D.CAPGO_IOS_DISTRIBUTION=v;if(w)D.CAPGO_IOS_PROVISIONING_MAP=w;let _=W?.trim();if(_)D.CAPGO_ANDROID_FLAVOR=_;if(B)D.ANDROID_KEYSTORE_FILE=B;if(H)D.KEYSTORE_KEY_ALIAS=H;if(L)D.KEYSTORE_KEY_PASSWORD=L;if(M)D.KEYSTORE_STORE_PASSWORD=M;if(I)D.PLAY_CONFIG_JSON=I;if(K)D.PLAY_STORE_IN_APP_UPDATE_PRIORITY=String(pG(K));if(N)D.BUILD_OUTPUT_UPLOAD_ENABLED=X3(N)?"true":"false";if(V)D.BUILD_OUTPUT_RETENTION_SECONDS=String(iG(V));if(R)D.SKIP_BUILD_NUMBER_BUMP=X3(R)?"true":"false";return D}async function rD0(D,$,X){let J=await pD0(D),Y=Ik0(),Q={...J?.[$]||{}};if(Object.assign(Q,Y),X)Object.assign(Q,X);if($==="android"){let F=!!Q.KEYSTORE_KEY_PASSWORD,U=!!Q.KEYSTORE_STORE_PASSWORD;if(F&&!U)Q.KEYSTORE_STORE_PASSWORD=Q.KEYSTORE_KEY_PASSWORD;else if(!F&&U)Q.KEYSTORE_KEY_PASSWORD=Q.KEYSTORE_STORE_PASSWORD}return Object.keys(Q).length>0?Q:void 0}import{existsSync as $10,readFileSync as uk0}from"node:fs";import{resolve as X10}from"node:path";k0();f0();import{readFileSync as Ak0}from"node:fs";function iI(D){let $=Ak0(D);return Ek0($,D)}function Ek0(D,$){let Y=D.indexOf("<?xml"),Q=Y!==-1?D.indexOf("</plist>",Y):-1;if(Y===-1||Q===-1||Q<=Y)throw Error(`No embedded plist found in mobileprovision file: ${$}`);let F=D.slice(Y,Q+8).toString("utf-8"),U=nI(F,"Name");if(!U)throw Error(`Mobileprovision file missing required 'Name' key: ${$}`);let Z=nI(F,"UUID")||"",G=Rk0(F,"Entitlements","application-identifier")||"",O=G.indexOf("."),w=O!==-1?G.slice(O+1):G;return{name:U,uuid:Z,applicationIdentifier:G,bundleId:w}}function nI(D,$,X="string"){let J=lI(X),Y=new RegExp(`<key>${lI($)}</key>\\s*<${J}>([^<]*)</${J}>`),Q=D.match(Y);return Q?Q[1]:null}function Rk0(D,$,X){let J=new RegExp(`<key>${lI($)}</key>\\s*<dict>([\\s\\S]*?)</dict>`),Y=D.match(J);if(!Y)return null;return nI(Y[1],X)}function lI(D){return D.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}import{existsSync as tD0,readdirSync as jk0,readFileSync as Tk0}from"node:fs";import{join as sD0}from"node:path";var Ck0=new Set(["com.apple.product-type.application","com.apple.product-type.app-extension","com.apple.product-type.app-extension.messages","com.apple.product-type.app-extension.messages-sticker-pack","com.apple.product-type.application.watchapp2","com.apple.product-type.watchkit2-extension","com.apple.product-type.extensionkit-extension","com.apple.product-type.application.on-demand-install-capable"]);function eD0(D){if(!D)return[];let $=/\w+\s*\/\*[^*]*\*\/\s*=\s*\{[^}]*isa\s*=\s*PBXNativeTarget;[^}]*\}/g,X=[];for(let J of D.matchAll($)){let Y=J[0],Q=Y.match(/name\s*=\s*("[^"]*"|[^;\s]+)\s*;/),F=Y.match(/productType\s*=\s*"([^"]+)"/),U=Y.match(/buildConfigurationList\s*=\s*(\w+)/);if(!Q||!F||!U)continue;let Z=Q[1].replace(/^"|"$/g,""),G=F[1],O=U[1];if(!Ck0.has(G))continue;let w=Sk0(D,O);X.push({name:Z,bundleId:w,productType:G})}return X}function Sk0(D,$){let X=new RegExp(`${aD0($)}\\s*\\/\\*[^*]*\\*\\/\\s*=\\s*\\{[^}]*isa\\s*=\\s*XCConfigurationList;[^}]*\\}`),J=D.match(X);if(!J)return"";let Y=J[0].match(/buildConfigurations\s*=\s*\(([^)]*)\)/);if(!Y)return"";let Q=Array.from(Y[1].matchAll(/(\w+)/g),(U)=>U[1]);if(Q.length===0)return"";let F="";for(let U of Q){let Z=new RegExp(`${aD0(U)}\\s*\\/\\*[^*]*\\*\\/\\s*=\\s*\\{(?:[^{}]*\\{[^}]*\\})*[^}]*\\}`),G=D.match(Z);if(!G)continue;let O=G[0],w=O.match(/PRODUCT_BUNDLE_IDENTIFIER\s*=\s*"?([^";\s]+)"?\s*;/);if(!w)continue;let q=O.match(/name\s*=\s*("[^"]*"|[^;\s]+)\s*;/);if((q?q[1].replace(/^"|"$/g,""):"")==="Release")return w[1];if(!F)F=w[1]}return F}function Pk0(D){let $=sD0(D,"ios"),X=oD0($);if(X)return X;return oD0(D)}function oD0(D){if(!tD0(D))return null;let $;try{$=jk0(D)}catch{return null}for(let X of $)if(X.endsWith(".xcodeproj")){let J=sD0(D,X,"project.pbxproj");if(tD0(J))return J}return null}function D10(D){let $=Pk0(D);if(!$)return null;try{return Tk0($,"utf-8")}catch{return null}}function aD0(D){return D.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function J10(D,$){let X={},J=[];if($){let Y=D10($);if(Y)J=eD0(Y)}for(let Y of D){let Q=Y.indexOf("="),F,U;if(Q!==-1){if(F=Y.slice(0,Q).trim(),U=Y.slice(Q+1).trim(),!F)throw Error(`Empty bundle ID in provisioning profile entry: "${Y}"`);if(!U)throw Error(`Empty profile path in provisioning profile entry: "${Y}"`)}else{if(U=Y.trim(),!U)throw Error("Empty provisioning profile entry");let q=X10(U);if(!$10(q))throw Error(`Provisioning profile not found: ${q}`);let W=iI(q);if(J.find((H)=>H.bundleId===W.bundleId))F=W.bundleId;else if(W.bundleId.endsWith(".*")){let H=J.find((L)=>L.productType==="com.apple.product-type.application");if(H)F=H.bundleId;else F=W.bundleId}else F=W.bundleId}let Z=X10(U);if(!$10(Z))throw Error(`Provisioning profile not found: ${Z}`);if(X[F])throw Error(`Duplicate provisioning profile for bundle ID "${F}". Each bundle ID can only have one profile.`);let O=uk0(Z).toString("base64"),w=iI(Z);X[F]={profile:O,name:w.name}}return X}var mA=YD(gA(),1);import{mkdir as kg0,writeFile as yg0}from"node:fs/promises";import{dirname as bg0,resolve as hg0}from"node:path";import{cwd as gg0}from"node:process";async function W60(D,$,X){let J=hg0(gg0(),D),Y=`${J}.qr.png`;await kg0(bg0(J),{recursive:!0});let Q=null,F=null;if($.outputUrl){try{Q=await mA.default.toString($.outputUrl,{type:"utf8",errorCorrectionLevel:"L"})}catch(Z){X?.(`Failed to render ASCII QR code: ${q60(Z)}`)}try{await mA.default.toFile(Y,$.outputUrl,{errorCorrectionLevel:"L",width:512}),F=Y}catch(Z){X?.(`Failed to render PNG QR code at ${Y}: ${q60(Z)}`)}}let U={schemaVersion:1,jobId:$.jobId,appId:$.appId,platform:$.platform,buildMode:$.buildMode,status:$.status,outputUrl:$.outputUrl??null,qrCodeAscii:Q,qrCodePngPath:F,finishedAt:new Date().toISOString()};return await yg0(J,`${JSON.stringify(U,null,2)}
550
+ `)}f0();async function nG(D){try{await A0(D.apikey,{event:"CLI AI Build Analysis Choice",channel:"build-lifecycle",icon:"\uD83E\uDD16",notify:!1,org_id:D.orgId,tracking_version:2,tags:{app_id:D.appId,platform:D.platform,job_id:D.jobId,choice:D.choice,triggered_by:D.triggeredBy}})}catch{}}async function nD0(D){let $={app_id:D.appId,platform:D.platform,job_id:D.jobId,result:D.result};if(D.result==="error"&&typeof D.errorStatus==="number"&&Number.isFinite(D.errorStatus))$.error_status=String(D.errorStatus);try{await A0(D.apikey,{event:"CLI AI Build Analysis Result",channel:"build-lifecycle",icon:"\uD83E\uDD16",notify:!1,org_id:D.orgId,tracking_version:2,tags:$})}catch{}}f0();import{Buffer as Bk0}from"node:buffer";import{homedir as Hk0}from"node:os";import{join as dI}from"node:path";import{cwd as Kk0,env as Nk0}from"node:process";import{randomBytes as Qk0}from"node:crypto";import{appendFile as Fk0,chmod as R5D,lstat as Uk0,mkdir as j5D,readFile as Zk0,rename as Gk0,rm as Ok0,writeFile as wk0}from"node:fs/promises";import{dirname as qk0,join as Wk0}from"node:path";async function mI(D){try{if((await Uk0(D)).isSymbolicLink())throw Error(`Refusing to access symbolic link path: ${D}`)}catch($){if($.code!=="ENOENT")throw $}}async function lD0(D,$,X=384){await mI(D),await Fk0(D,$,{mode:X})}async function $3(D,$,X={}){let J=X.mode??384;await mI(D);let Y=Wk0(qk0(D),`.capgo-tmp-${Qk0(8).toString("hex")}`);try{await wk0(Y,$,{encoding:X.encoding??"utf-8",mode:J}),await Gk0(Y,D)}catch(Q){throw await Ok0(Y,{force:!0}),Q}}async function lG(D){return await mI(D),await Zk0(D,"utf-8")}var Vk0=dI(Hk0(),".capgo-credentials"),zk0=dI(Vk0,"credentials.json"),Lk0=".capgo-credentials.json",E9=3600,iD0=604800;function Mk0(D){return D?dI(Kk0(),Lk0):zk0}function iG(D){let X=D.trim().match(/^(\d+)\s*([smhd])?$/i);if(!X)throw Error("output-retention must be a number with optional unit: s, m, h, d (examples: 1h, 3600s, 2d)");let J=Number.parseInt(X[1],10),Y=(X[2]||"s").toLowerCase(),F=J*(Y==="s"?1:Y==="m"?60:Y==="h"?3600:86400);if(F<E9)throw Error(`output-retention must be at least ${E9} seconds (1h)`);if(F>iD0)throw Error(`output-retention must be at most ${iD0} seconds (7d)`);return F}function X3(D){if(D===void 0)return!0;if(typeof D==="boolean")return D;let $=D.trim().toLowerCase();if($==="true"||$==="1"||$==="yes")return!0;if($==="false"||$==="0"||$==="no")return!1;throw Error("output-upload must be true/false (examples: --output-upload, --output-upload false)")}function pG(D){if(typeof D==="string"&&D.trim()==="")throw Error("in-app-update-priority must be an integer between 0 and 5");let $=typeof D==="number"?D:Number(D);if(!Number.isInteger($)||$<0||$>5)throw Error("in-app-update-priority must be an integer between 0 and 5");return $}async function cI(D){try{let $=Mk0(D),X=await lG($);return JSON.parse(X)}catch{return{}}}async function pD0(D,$){if($!==void 0){let Y=await cI($);if(!D){let Q=Object.keys(Y);if(Q.length===0)return null;return Y[Q[0]]||null}return Y[D]||null}let X=await cI(!0),J=await cI(!1);if(!D){let Y=Object.keys(X);if(Y.length>0)return X[Y[0]]||null;let Q=Object.keys(J);if(Q.length===0)return null;return J[Q[0]]||null}return X[D]||J[D]||null}function dD(D){return Nk0[D]}function Ik0(){let D={},$=dD("BUILD_CERTIFICATE_BASE64"),X=dD("P12_PASSWORD"),J=dD("APPLE_KEY_ID"),Y=dD("APPLE_ISSUER_ID"),Q=dD("APPLE_KEY_CONTENT"),F=dD("APP_STORE_CONNECT_TEAM_ID"),U=dD("CAPGO_IOS_SCHEME"),Z=dD("CAPGO_IOS_TARGET"),G=dD("CAPGO_IOS_PROVISIONING_MAP"),O=dD("CAPGO_IOS_PROVISIONING_MAP_BASE64"),w=G||(O?Bk0.from(O,"base64").toString("utf-8"):void 0),W=dD("CAPGO_ANDROID_FLAVOR")?.trim()||void 0,B=dD("ANDROID_KEYSTORE_FILE"),H=dD("KEYSTORE_KEY_ALIAS"),L=dD("KEYSTORE_KEY_PASSWORD"),M=dD("KEYSTORE_STORE_PASSWORD"),I=dD("PLAY_CONFIG_JSON"),K=dD("PLAY_STORE_IN_APP_UPDATE_PRIORITY"),N=dD("BUILD_OUTPUT_UPLOAD_ENABLED"),V=dD("BUILD_OUTPUT_RETENTION_SECONDS"),R=dD("SKIP_BUILD_NUMBER_BUMP"),v=dD("CAPGO_IOS_DISTRIBUTION");if($)D.BUILD_CERTIFICATE_BASE64=$;if(X)D.P12_PASSWORD=X;if(J)D.APPLE_KEY_ID=J;if(Y)D.APPLE_ISSUER_ID=Y;if(Q)D.APPLE_KEY_CONTENT=Q;if(F)D.APP_STORE_CONNECT_TEAM_ID=F;if(U)D.CAPGO_IOS_SCHEME=U;if(Z)D.CAPGO_IOS_TARGET=Z;if(v)D.CAPGO_IOS_DISTRIBUTION=v;if(w)D.CAPGO_IOS_PROVISIONING_MAP=w;let _=W?.trim();if(_)D.CAPGO_ANDROID_FLAVOR=_;if(B)D.ANDROID_KEYSTORE_FILE=B;if(H)D.KEYSTORE_KEY_ALIAS=H;if(L)D.KEYSTORE_KEY_PASSWORD=L;if(M)D.KEYSTORE_STORE_PASSWORD=M;if(I)D.PLAY_CONFIG_JSON=I;if(K)D.PLAY_STORE_IN_APP_UPDATE_PRIORITY=String(pG(K));if(N)D.BUILD_OUTPUT_UPLOAD_ENABLED=X3(N)?"true":"false";if(V)D.BUILD_OUTPUT_RETENTION_SECONDS=String(iG(V));if(R)D.SKIP_BUILD_NUMBER_BUMP=X3(R)?"true":"false";return D}async function rD0(D,$,X){let J=await pD0(D),Y=Ik0(),Q={...J?.[$]||{}};if(Object.assign(Q,Y),X)Object.assign(Q,X);if($==="android"){let F=!!Q.KEYSTORE_KEY_PASSWORD,U=!!Q.KEYSTORE_STORE_PASSWORD;if(F&&!U)Q.KEYSTORE_STORE_PASSWORD=Q.KEYSTORE_KEY_PASSWORD;else if(!F&&U)Q.KEYSTORE_KEY_PASSWORD=Q.KEYSTORE_STORE_PASSWORD}return Object.keys(Q).length>0?Q:void 0}import{existsSync as $10,readFileSync as uk0}from"node:fs";import{resolve as X10}from"node:path";k0();f0();import{readFileSync as Ak0}from"node:fs";function iI(D){let $=Ak0(D);return Ek0($,D)}function Ek0(D,$){let Y=D.indexOf("<?xml"),Q=Y!==-1?D.indexOf("</plist>",Y):-1;if(Y===-1||Q===-1||Q<=Y)throw Error(`No embedded plist found in mobileprovision file: ${$}`);let F=D.slice(Y,Q+8).toString("utf-8"),U=nI(F,"Name");if(!U)throw Error(`Mobileprovision file missing required 'Name' key: ${$}`);let Z=nI(F,"UUID")||"",G=Rk0(F,"Entitlements","application-identifier")||"",O=G.indexOf("."),w=O!==-1?G.slice(O+1):G;return{name:U,uuid:Z,applicationIdentifier:G,bundleId:w}}function nI(D,$,X="string"){let J=lI(X),Y=new RegExp(`<key>${lI($)}</key>\\s*<${J}>([^<]*)</${J}>`),Q=D.match(Y);return Q?Q[1]:null}function Rk0(D,$,X){let J=new RegExp(`<key>${lI($)}</key>\\s*<dict>([\\s\\S]*?)</dict>`),Y=D.match(J);if(!Y)return null;return nI(Y[1],X)}function lI(D){return D.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}import{existsSync as tD0,readdirSync as jk0,readFileSync as Tk0}from"node:fs";import{join as sD0}from"node:path";var Ck0=new Set(["com.apple.product-type.application","com.apple.product-type.app-extension","com.apple.product-type.app-extension.messages","com.apple.product-type.app-extension.messages-sticker-pack","com.apple.product-type.application.watchapp2","com.apple.product-type.watchkit2-extension","com.apple.product-type.extensionkit-extension","com.apple.product-type.application.on-demand-install-capable"]);function eD0(D){if(!D)return[];let $=/\w+\s*\/\*[^*]*\*\/\s*=\s*\{[^}]*isa\s*=\s*PBXNativeTarget;[^}]*\}/g,X=[];for(let J of D.matchAll($)){let Y=J[0],Q=Y.match(/name\s*=\s*("[^"]*"|[^;\s]+)\s*;/),F=Y.match(/productType\s*=\s*"([^"]+)"/),U=Y.match(/buildConfigurationList\s*=\s*(\w+)/);if(!Q||!F||!U)continue;let Z=Q[1].replace(/^"|"$/g,""),G=F[1],O=U[1];if(!Ck0.has(G))continue;let w=Sk0(D,O);X.push({name:Z,bundleId:w,productType:G})}return X}function Sk0(D,$){let X=new RegExp(`${aD0($)}\\s*\\/\\*[^*]*\\*\\/\\s*=\\s*\\{[^}]*isa\\s*=\\s*XCConfigurationList;[^}]*\\}`),J=D.match(X);if(!J)return"";let Y=J[0].match(/buildConfigurations\s*=\s*\(([^)]*)\)/);if(!Y)return"";let Q=Array.from(Y[1].matchAll(/(\w+)/g),(U)=>U[1]);if(Q.length===0)return"";let F="";for(let U of Q){let Z=new RegExp(`${aD0(U)}\\s*\\/\\*[^*]*\\*\\/\\s*=\\s*\\{(?:[^{}]*\\{[^}]*\\})*[^}]*\\}`),G=D.match(Z);if(!G)continue;let O=G[0],w=O.match(/PRODUCT_BUNDLE_IDENTIFIER\s*=\s*"?([^";\s]+)"?\s*;/);if(!w)continue;let q=O.match(/name\s*=\s*("[^"]*"|[^;\s]+)\s*;/);if((q?q[1].replace(/^"|"$/g,""):"")==="Release")return w[1];if(!F)F=w[1]}return F}function Pk0(D){let $=sD0(D,"ios"),X=oD0($);if(X)return X;return oD0(D)}function oD0(D){if(!tD0(D))return null;let $;try{$=jk0(D)}catch{return null}for(let X of $)if(X.endsWith(".xcodeproj")){let J=sD0(D,X,"project.pbxproj");if(tD0(J))return J}return null}function D10(D){let $=Pk0(D);if(!$)return null;try{return Tk0($,"utf-8")}catch{return null}}function aD0(D){return D.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function J10(D,$){let X={},J=[];if($){let Y=D10($);if(Y)J=eD0(Y)}for(let Y of D){let Q=Y.indexOf("="),F,U;if(Q!==-1){if(F=Y.slice(0,Q).trim(),U=Y.slice(Q+1).trim(),!F)throw Error(`Empty bundle ID in provisioning profile entry: "${Y}"`);if(!U)throw Error(`Empty profile path in provisioning profile entry: "${Y}"`)}else{if(U=Y.trim(),!U)throw Error("Empty provisioning profile entry");let q=X10(U);if(!$10(q))throw Error(`Provisioning profile not found: ${q}`);let W=iI(q);if(J.find((H)=>H.bundleId===W.bundleId))F=W.bundleId;else if(W.bundleId.endsWith(".*")){let H=J.find((L)=>L.productType==="com.apple.product-type.application");if(H)F=H.bundleId;else F=W.bundleId}else F=W.bundleId}let Z=X10(U);if(!$10(Z))throw Error(`Provisioning profile not found: ${Z}`);if(X[F])throw Error(`Duplicate provisioning profile for bundle ID "${F}". Each bundle ID can only have one profile.`);let O=uk0(Z).toString("base64"),w=iI(Z);X[F]={profile:O,name:w.name}}return X}var mA=YD(gA(),1);import{mkdir as kg0,writeFile as yg0}from"node:fs/promises";import{dirname as bg0,resolve as hg0}from"node:path";import{cwd as gg0}from"node:process";async function W60(D,$,X){let J=hg0(gg0(),D),Y=`${J}.qr.png`;await kg0(bg0(J),{recursive:!0});let Q=null,F=null;if($.outputUrl){try{Q=await mA.default.toString($.outputUrl,{type:"utf8",errorCorrectionLevel:"L"})}catch(Z){X?.(`Failed to render ASCII QR code: ${q60(Z)}`)}try{await mA.default.toFile(Y,$.outputUrl,{errorCorrectionLevel:"L",width:512}),F=Y}catch(Z){X?.(`Failed to render PNG QR code at ${Y}: ${q60(Z)}`)}}let U={schemaVersion:1,jobId:$.jobId,appId:$.appId,platform:$.platform,buildMode:$.buildMode,status:$.status,outputUrl:$.outputUrl??null,qrCodeAscii:Q,qrCodePngPath:F,finishedAt:new Date().toISOString()};return await yg0(J,`${JSON.stringify(U,null,2)}
551
551
  `,"utf-8"),U}function q60(D){if(D instanceof Error)return D.message;return String(D)}var B60=YD(gA(),1);async function cA(D,$,X,J){if(D==="qr_download_link"){let Y=$.url;if(typeof Y!=="string"){J("qr_download_link message missing url field");return}try{let Q=await B60.default.toString(Y,{type:"utf8",errorCorrectionLevel:"L"});X("");for(let F of Q.split(`
552
- `))X(F);X(Y),X("")}catch{X(""),X(Y),X("")}return}J(`Unknown message type "${D}" — you may need to update the CLI`),X(JSON.stringify($,null,2))}f0();function cg0(D){if(!D||typeof D!=="object")return;let $=D.originalResponse?.getStatus?.();return typeof $==="number"?$:void 0}function dg0(D){let $=cg0(D);if($===401||$===403)return"unauthorized";if($===413)return"payload_too_large";if($!==void 0&&$>=500&&$<600)return"storage_failure";if($===void 0||$===0)return"network_error";return"unknown"}var ng0={started:"Builder Upload Started",succeeded:"Builder Upload Succeeded",failed:"Builder Upload Failed"},lg0={started:"⬆️",succeeded:"\uD83D\uDCE6",failed:"\uD83D\uDEAB"};async function JO(D){let $={app_id:D.appId,platform:D.platform,build_mode:D.buildMode,job_id:D.jobId,upload_size_bytes:String(D.sizeBytes)};if(typeof D.durationSeconds==="number"&&Number.isFinite(D.durationSeconds))$.upload_duration_seconds=String(Math.round(D.durationSeconds));if(D.phase==="failed"&&D.error!==void 0)$.failure_category=dg0(D.error);try{await A0(D.apikey,{event:ng0[D.phase],channel:"build-lifecycle",icon:lg0[D.phase],notify:!1,user_id:D.orgId,tags:$})}catch{}}async function eg0(){return b1({message:"No platform selected. Which platform do you want to build?",options:[{value:"ios",label:"iOS"},{value:"android",label:"Android"}]})}async function Dm0(D,{silent:$=!1,interactive:X=NG({silent:$}),promptPlatform:J=eg0}={}){if(D==="ios"||D==="android")return D;if(D)throw Error(`Invalid platform "${D}". Must be "ios" or "android"`);if(!X)throw Error("Missing required argument: --platform <ios|android>. In an interactive terminal, you can omit --platform and choose one when prompted.");let Y=await J();if(g0(Y))throw Error("Build request canceled.");if(Y!=="ios"&&Y!=="android")throw Error("Build request canceled.");return Y}function $m0(D){return{info:($)=>{if(!D)z.info($)},error:($)=>{if(!D)z.error($)},warn:($)=>{if(!D)z.warn($)},success:($)=>{if(!D)z.success($)},buildLog:($)=>{if(!D)console.log($)},uploadProgress:(()=>{let $=D?null:RD(),X=!1;return(J)=>{if(D||!$)return;if(!X)$.start("Uploading bundle"),X=!0;if(J>=100)$.stop("Upload complete!");else $.message(`Uploading ${J.toFixed(0)}%`)}})(),customMsg:async($,X)=>{if(!D)await cA($,X,(J)=>console.log(J),(J)=>z.warn(J))}}}var V60=Promise.resolve();async function Xm0(D,$){let X=async()=>{let Y=nA();try{N60(D)}catch(Q){throw Error(`Failed to change working directory to "${D}": ${Q.message}`)}try{return await $()}finally{try{N60(Y)}catch{}}},J=V60.then(X,X);return V60=J.then(()=>{return},()=>{return}),J}async function Jm0(D,$,X=3,J){let Y=[1000,3000,5000];for(let Q=1;Q<=X;Q++)try{let F=await fetch(D,$);if(F.ok||F.status>=400&&F.status<500)return F;let U=await F.text().catch(()=>"unknown error");if(J?.warn(`Build request attempt ${Q}/${X} failed: ${F.status} - ${U}`),Q<X){let Z=Y[Q-1]||5000;J?.info(`Retrying in ${Z/1000}s...`),await new Promise((G)=>setTimeout(G,Z))}else throw Error(`Failed to request build after ${X} attempts: ${F.status} - ${U}`)}catch(F){let U=F instanceof Error?F.message:String(F);if(U.startsWith("Failed to request build after"))throw F;if(J?.warn(`Build request attempt ${Q}/${X} failed: ${U}`),Q<X){let Z=Y[Q-1]||5000;J?.info(`Retrying in ${Z/1000}s...`),await new Promise((G)=>setTimeout(G,Z))}else throw Error(`Failed to request build after ${X} attempts: ${U}`)}throw Error("Unexpected error in fetchWithRetry")}var Ym0=["succeeded","failed","expired","released","cancelled"],QO=new Set(Ym0);function Qm0(D){if(typeof D.data==="string")return D.data;if(D.data instanceof ArrayBuffer)return new TextDecoder().decode(D.data);if(ArrayBuffer.isView(D.data)){let $=D.data;return new TextDecoder().decode(new Uint8Array($.buffer,$.byteOffset,$.byteLength))}if(D.data&&typeof D.data.toString==="function")return D.data.toString();return""}function M60(D,$,X){if($)$.warn(D);else if(!X)z.warn(D)}async function Fm0(D,$,X,J){try{if(X)await X.customMsg(D,$);else if(!J)await cA(D,$,(Y)=>console.log(Y),(Y)=>z.warn(Y))}catch(Y){M60(`Custom message handler encountered an error, continuing... ${String(Y)}`,X,J)}}async function Um0(D,$=!1,X,J,Y,Q,F,U){if(D&&!U)return null;let Z=null,G=!1,O=(q)=>{if(!q.trim())return;if(Z)return;if(!G)if(G=!0,U)U.buildLog("");else console.log("");if(U)U.buildLog(q);else console.log(q)},w=async()=>{if(!X||!J)return null;let q=X.replace(/\/+$/,""),W=`${q}/start`,H=`${q}/stream?token=${encodeURIComponent(J)}`.replace(/^https:/,"wss:").replace(/^http:/,"ws:");if(U)U.info("Connecting to log streaming...");else if(!D)console.log("Connecting to log streaming...");let L=await fetch(W,{method:"POST",headers:{"x-capgo-log-token":J}});if(!L.ok){let M=await L.text().catch(()=>"unknown error");if(U)U.warn(`Could not start log session (${L.status}): ${M}`);else if(!D)console.warn(`Could not start log session (${L.status}): ${M}`);return null}return await new Promise((M)=>{let I=!1,K=10,N=0,V=!1,R=new VJ(H,void 0,{maxRetries:K,WebSocket:xD0}),v=null,_=0,A=Date.now(),u=!1,P=2000,h=4,c=QO,r=null,f=null,j=(g)=>{if(I)return;if(I=!0,f)clearTimeout(f),f=null;if(v)clearInterval(v),v=null;if(Q&&r)Q.removeEventListener("abort",r),r=null;try{R.close()}catch{}M(g)};f=setTimeout(()=>{if(!I){if(U)U.warn("Log streaming timed out after 3 hours");else if(!D)console.warn("Log streaming timed out after 3 hours");j(null)}},10800000);let S=()=>{if(v)return;v=setInterval(async()=>{try{if(R.readyState===VJ.OPEN)R.send(JSON.stringify({type:"heartbeat",lastId:_}));let g=Date.now();if(Y&&!u&&g-A>=P*h){u=!0;try{let y=await Y();if(y&&c.has(y))Z=y,j(Z)}finally{u=!1}}}catch(g){if(U)U.warn(`Heartbeat encountered an error, continuing... ${String(g)}`);else if(!D)z.warn(`Heartbeat encountered an error, continuing... ${String(g)}`)}},P)},x=async(g)=>{if(g.type==="custom_msg"&&typeof g.kind==="string"&&g.data){A=Date.now(),await Fm0(g.kind,g.data,U,D);return}if(g.type==="status"&&typeof g.status==="string"){let y=g.status.toLowerCase();if(A=Date.now(),c.has(y))Z=y;return}if(g.type==="log"&&typeof g.message==="string"){A=Date.now(),O(g.message);return}if(typeof g.message==="string")A=Date.now(),O(g.message)},k=(g)=>{if(R.readyState!==VJ.OPEN)return;try{R.send(JSON.stringify({type:"confirmed_received",lastId:g}))}catch(y){M60(`Failed to send log confirmation, continuing... ${String(y)}`,U,D)}};if(S(),Q){if(r=()=>{if(!I)j("cancelled")},Q.aborted){j("cancelled");return}Q.addEventListener("abort",r)}R.addEventListener("message",async(g)=>{let y=Qm0(g),o=null;try{o=JSON.parse(y)}catch{o=null}if(o?.type==="heartbeat_response")return;if(o?.type==="batch_messages"&&Array.isArray(o.messages)){let d=_;for(let t of o.messages)if(await x(t),typeof t.id==="number")d=Math.max(d,t.id);if(d>_)_=d,k(d)}else{if(o)await x(o);else if(y)A=Date.now(),O(y);if(o&&typeof o.id==="number"&&o.id>_)_=o.id,k(o.id)}if(Z)j(Z)}),R.addEventListener("error",()=>{if(N+=1,U)U.warn(`Log stream encountered an error, retrying (${N}/${K})...`);else if(!D)console.warn(`Log stream encountered an error, retrying (${N}/${K})...`);if(!V&&N>=K){if(V=!0,U)U.warn("Log stream retry limit reached. Falling back to status checks.");else if(!D)z.warn("Log stream retry limit reached. Falling back to status checks.");if(F)F();j(null)}}),R.addEventListener("close",()=>{if(I)return;if(Z){j(Z);return}if(U)U.warn("Log stream closed, waiting for reconnect...");else if(!D)z.warn("Log stream closed, waiting for reconnect...")})})};try{let q=await w();if(q||Z)return q||Z}catch(q){if(U)U.warn(`Direct log streaming failed${q instanceof Error?`: ${q.message}`:""}`);else if(!D)z.warn(`Direct log streaming failed${q instanceof Error?`: ${q.message}`:""}`)}return Z}async function Zm0(D,$,X,J,Y,Q,F=!1,U,Z){let O=0;while(O<120){if(U?.aborted)return"cancelled";try{let w=await fetch(`${D}/build/status?job_id=${encodeURIComponent($)}&app_id=${encodeURIComponent(X)}&platform=${J}`,{headers:{authorization:Y},signal:U});if(!w.ok){Z?.warn(`Status check failed: ${w.status}`),await new Promise((B)=>setTimeout(B,5000)),O++;continue}let q=await w.json(),W=q.status?.toLowerCase?.()??"";if(F)Z?.info(`Build status: ${W||q.status}`);if(QO.has(W))return W;await new Promise((B)=>setTimeout(B,5000)),O++}catch(w){if(U?.aborted)return"cancelled";Z?.warn(`Status check error: ${w}`),await new Promise((q)=>setTimeout(q,5000)),O++}}return Z?.warn("Build status polling timed out"),"timeout"}async function Gm0(D,$,X){let J=new Set,Y=new Set,Q=!1,F=!1;if($==="ios"){let U=s1(D,X,"App","CapApp-SPM","Package.swift");if(A6(U)){Q=!0;let O=(await YO(U,"utf-8")).matchAll(/\.package\s*\([^)]*path:\s*["'](?:\.\.\/)*node_modules\/([^"']+)["']\s*\)/g);for(let w of O){let q=w[1],W=q.lastIndexOf("node_modules/");if(W!==-1)q=q.substring(W+13);J.add(q)}}let Z=s1(D,X);if(A6(Z)){let G=[s1(Z,"App","Podfile"),s1(Z,"Podfile")];for(let w of lA(Z,{withFileTypes:!0}))if(w.isDirectory())G.push(s1(Z,w.name,"Podfile"));let O=[...new Set(G)].filter((w)=>A6(w));if(O.length>0)F=!0;for(let w of O){let W=(await YO(w,"utf-8")).matchAll(/pod\s+['"][^'"]+['"],\s*:path\s*=>\s*['"](?:\.\.\/)+node_modules\/([^'"]+)['"]/g);for(let B of W){let H=B[1],L=H.lastIndexOf("node_modules/");if(L!==-1)H=H.substring(L+13);J.add(H)}}}}else if($==="android"){let U=s1(D,X,"capacitor.settings.gradle");if(A6(U)){let O=(await YO(U,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let w of O){let q=w[1],W=q.lastIndexOf("node_modules/");if(W!==-1)q=q.substring(W+13);let B=q.replace(/\/(android|capacitor)$/,"");J.add(B)}}let Z=s1(D,X,"capacitor-cordova-android-plugins","build.gradle");if(A6(Z)){let O=(await YO(Z,"utf-8")).matchAll(/apply\s+from\s*:\s*["'](?:\.\.\/)+node_modules\/([^"']+)["']/g);for(let w of O){let q=w[1],W=q.lastIndexOf("node_modules/");if(W!==-1)q=q.substring(W+13);let B=q.split("/"),H=B[0].startsWith("@")&&B.length>=2?`${B[0]}/${B[1]}`:B[0];Y.add(H)}}}return{packages:J,cordovaPackages:Y,usesSPM:Q,usesCocoaPods:F}}function z60(D,$,X,J){let Y=D.replace(/\\/g,"/");if(Y.startsWith(`${J}/`))return!0;if(Y==="package.json"||Y==="package-lock.json"||Y.startsWith("capacitor.config."))return!0;if(Y.startsWith("resources/"))return!0;if($==="ios"&&Y.startsWith("node_modules/@capacitor/ios/"))return!0;if($==="android"&&Y.startsWith("node_modules/@capacitor/android/"))return!0;if($==="android")for(let Q of X.cordovaPackages){let F=`node_modules/${Q}/`;if(Y===`node_modules/${Q}/package.json`)return!0;if(Y.startsWith(F)){let U=Y.slice(F.length);if(U==="node_modules"||U.startsWith("node_modules/"))continue;return!0}}for(let Q of X.packages){let F=`node_modules/${Q}/`;if(Y===`${F}package.json`)return!0;if($==="android"){if(Y.startsWith(`${F}android/`))return!0}else if($==="ios"){if(Y.startsWith(`${F}ios/`))return!0;if(X.usesSPM){if(Y===`${F}Package.swift`)return!0}if(X.usesCocoaPods||!X.usesSPM){if(Y.startsWith(F)&&Y.endsWith(".podspec"))return!0}}}return!1}function yJ(D,$,X,J,Y,Q){let F=lA($);for(let U of F){let Z=s1($,U),G=X?`${X}/${U}`:U,O=pg0(Z);if(O.isDirectory()){if(U===".git"||U==="dist"||U==="build"||U===".angular"||U===".vite"||U===".gradle"||U===".idea"||U===".swiftpm")continue;if(U==="node_modules"){yJ(D,Z,G,J,Y,Q);continue}if(U==="resources"){yJ(D,Z,G,J,Y,Q);continue}let w=G.replace(/\\/g,"/"),q=[...Y.packages,...Y.cordovaPackages];if(z60(G,J,Y,Q)||Q===w||Q.startsWith(`${w}/`)||q.some((B)=>{return`node_modules/${B}/`.startsWith(`${w}/`)||w.startsWith(`node_modules/${B}`)}))yJ(D,Z,G,J,Y,Q)}else if(O.isFile()){if(U===".DS_Store"||U.endsWith(".log"))continue;if(z60(G,J,Y,Q))Om0(D,Z,G)}}}function Om0(D,$,X){let J=X.replace(/\\/g,"/");if(D.getEntry(J))return;let Y=J.lastIndexOf("/"),Q=Y===-1?void 0:J.slice(0,Y);D.addLocalFile($,Q)}function wm0(D){if(!D)return[];let $=D.split(",").map((X)=>X.trim()).filter(Boolean).map((X)=>dA(X));return[...new Set($)]}function qm0(D,$){let X=new Set([...$.packages,...$.cordovaPackages]);return X.add(D==="ios"?"@capacitor/ios":"@capacitor/android"),X}function Wm0(D,$){let X=s1(D,...$.split("/"));if(A6(X))return X;let J=s1(D,".pnpm");if(!A6(J))return;let Y=$.replace("/","+"),Q=lA(J,{withFileTypes:!0}).filter((F)=>F.isDirectory()).map((F)=>F.name).filter((F)=>F.startsWith(`${Y}@`)).sort();if(Q.length>1)throw Error(`Multiple pnpm store entries found for ${$} in ${J}; provide the app-specific node_modules path so the native build archive can use the exact resolved package.`);for(let F of Q){let U=s1(J,F,"node_modules",...$.split("/"));if(A6(U))return U}return}function Bm0(D,$,X,J,Y){if($.length===0)return;let Q=$.filter((F)=>!A6(F));if(Q.length>0)throw Error(`Missing node_modules folder at ${Q.join(", ")}`);for(let F of $)for(let U of qm0(X,J)){let Z=Wm0(F,U);if(!Z)continue;yJ(D,Z,`node_modules/${U}`,X,J,Y)}}async function Hm0(D,$,X,J,Y={}){let Q=kJ(J,X),F=await Gm0(D,X,Q),U=new L60.default;yJ(U,D,"",X,F,Q),Bm0(U,wm0(Y.nodeModules),X,F,Q);let Z=/node_modules\/\.pnpm\/[^/\n\r]+(?:\/[^/\n\r]+)*\/node_modules\//g,G=new Set(["",".gradle",".swift",".json",".lock",".xml",".properties",".pbxproj",".xcconfig",".plist",".podspec",".rb",".yaml",".yml"]);for(let w of U.getEntries()){if(w.isDirectory)continue;let q=w.entryName.includes(".")?`.${w.entryName.split(".").pop()}`:"",W=w.entryName.split("/").pop()||"";if(!G.has(q)&&W!=="Podfile")continue;let B=w.getData().toString("utf-8"),H=B.replace(Z,"node_modules/");if(X==="ios"){let L="../".repeat(w.entryName.split("/").length-1);H=H.replace(/(?:\.\.\/){4,}(ios\/|node_modules\/)/g,(M,I)=>`${L}${I}`)}if(H!==B)U.updateFile(w.entryName,H60.from(H,"utf-8"))}let O=s1(D,"capacitor.config.json");if(J&&!A6(O)){let w=`${JSON.stringify(J,null,2)}
552
+ `))X(F);X(Y),X("")}catch{X(""),X(Y),X("")}return}J(`Unknown message type "${D}" — you may need to update the CLI`),X(JSON.stringify($,null,2))}f0();function cg0(D){if(!D||typeof D!=="object")return;let $=D.originalResponse?.getStatus?.();return typeof $==="number"?$:void 0}function dg0(D){let $=cg0(D);if($===401||$===403)return"unauthorized";if($===413)return"payload_too_large";if($!==void 0&&$>=500&&$<600)return"storage_failure";if($===void 0||$===0)return"network_error";return"unknown"}var ng0={started:"Builder Upload Started",succeeded:"Builder Upload Succeeded",failed:"Builder Upload Failed"},lg0={started:"⬆️",succeeded:"\uD83D\uDCE6",failed:"\uD83D\uDEAB"};async function JO(D){let $={app_id:D.appId,platform:D.platform,build_mode:D.buildMode,job_id:D.jobId,upload_size_bytes:String(D.sizeBytes)};if(typeof D.durationSeconds==="number"&&Number.isFinite(D.durationSeconds))$.upload_duration_seconds=String(Math.round(D.durationSeconds));if(D.phase==="failed"&&D.error!==void 0)$.failure_category=dg0(D.error);try{await A0(D.apikey,{event:ng0[D.phase],channel:"build-lifecycle",icon:lg0[D.phase],notify:!1,org_id:D.orgId,tracking_version:2,tags:$})}catch{}}async function eg0(){return b1({message:"No platform selected. Which platform do you want to build?",options:[{value:"ios",label:"iOS"},{value:"android",label:"Android"}]})}async function Dm0(D,{silent:$=!1,interactive:X=NG({silent:$}),promptPlatform:J=eg0}={}){if(D==="ios"||D==="android")return D;if(D)throw Error(`Invalid platform "${D}". Must be "ios" or "android"`);if(!X)throw Error("Missing required argument: --platform <ios|android>. In an interactive terminal, you can omit --platform and choose one when prompted.");let Y=await J();if(g0(Y))throw Error("Build request canceled.");if(Y!=="ios"&&Y!=="android")throw Error("Build request canceled.");return Y}function $m0(D){return{info:($)=>{if(!D)z.info($)},error:($)=>{if(!D)z.error($)},warn:($)=>{if(!D)z.warn($)},success:($)=>{if(!D)z.success($)},buildLog:($)=>{if(!D)console.log($)},uploadProgress:(()=>{let $=D?null:RD(),X=!1;return(J)=>{if(D||!$)return;if(!X)$.start("Uploading bundle"),X=!0;if(J>=100)$.stop("Upload complete!");else $.message(`Uploading ${J.toFixed(0)}%`)}})(),customMsg:async($,X)=>{if(!D)await cA($,X,(J)=>console.log(J),(J)=>z.warn(J))}}}var V60=Promise.resolve();async function Xm0(D,$){let X=async()=>{let Y=nA();try{N60(D)}catch(Q){throw Error(`Failed to change working directory to "${D}": ${Q.message}`)}try{return await $()}finally{try{N60(Y)}catch{}}},J=V60.then(X,X);return V60=J.then(()=>{return},()=>{return}),J}async function Jm0(D,$,X=3,J){let Y=[1000,3000,5000];for(let Q=1;Q<=X;Q++)try{let F=await fetch(D,$);if(F.ok||F.status>=400&&F.status<500)return F;let U=await F.text().catch(()=>"unknown error");if(J?.warn(`Build request attempt ${Q}/${X} failed: ${F.status} - ${U}`),Q<X){let Z=Y[Q-1]||5000;J?.info(`Retrying in ${Z/1000}s...`),await new Promise((G)=>setTimeout(G,Z))}else throw Error(`Failed to request build after ${X} attempts: ${F.status} - ${U}`)}catch(F){let U=F instanceof Error?F.message:String(F);if(U.startsWith("Failed to request build after"))throw F;if(J?.warn(`Build request attempt ${Q}/${X} failed: ${U}`),Q<X){let Z=Y[Q-1]||5000;J?.info(`Retrying in ${Z/1000}s...`),await new Promise((G)=>setTimeout(G,Z))}else throw Error(`Failed to request build after ${X} attempts: ${U}`)}throw Error("Unexpected error in fetchWithRetry")}var Ym0=["succeeded","failed","expired","released","cancelled"],QO=new Set(Ym0);function Qm0(D){if(typeof D.data==="string")return D.data;if(D.data instanceof ArrayBuffer)return new TextDecoder().decode(D.data);if(ArrayBuffer.isView(D.data)){let $=D.data;return new TextDecoder().decode(new Uint8Array($.buffer,$.byteOffset,$.byteLength))}if(D.data&&typeof D.data.toString==="function")return D.data.toString();return""}function M60(D,$,X){if($)$.warn(D);else if(!X)z.warn(D)}async function Fm0(D,$,X,J){try{if(X)await X.customMsg(D,$);else if(!J)await cA(D,$,(Y)=>console.log(Y),(Y)=>z.warn(Y))}catch(Y){M60(`Custom message handler encountered an error, continuing... ${String(Y)}`,X,J)}}async function Um0(D,$=!1,X,J,Y,Q,F,U){if(D&&!U)return null;let Z=null,G=!1,O=(q)=>{if(!q.trim())return;if(Z)return;if(!G)if(G=!0,U)U.buildLog("");else console.log("");if(U)U.buildLog(q);else console.log(q)},w=async()=>{if(!X||!J)return null;let q=X.replace(/\/+$/,""),W=`${q}/start`,H=`${q}/stream?token=${encodeURIComponent(J)}`.replace(/^https:/,"wss:").replace(/^http:/,"ws:");if(U)U.info("Connecting to log streaming...");else if(!D)console.log("Connecting to log streaming...");let L=await fetch(W,{method:"POST",headers:{"x-capgo-log-token":J}});if(!L.ok){let M=await L.text().catch(()=>"unknown error");if(U)U.warn(`Could not start log session (${L.status}): ${M}`);else if(!D)console.warn(`Could not start log session (${L.status}): ${M}`);return null}return await new Promise((M)=>{let I=!1,K=10,N=0,V=!1,R=new VJ(H,void 0,{maxRetries:K,WebSocket:xD0}),v=null,_=0,A=Date.now(),u=!1,P=2000,h=4,c=QO,r=null,f=null,j=(g)=>{if(I)return;if(I=!0,f)clearTimeout(f),f=null;if(v)clearInterval(v),v=null;if(Q&&r)Q.removeEventListener("abort",r),r=null;try{R.close()}catch{}M(g)};f=setTimeout(()=>{if(!I){if(U)U.warn("Log streaming timed out after 3 hours");else if(!D)console.warn("Log streaming timed out after 3 hours");j(null)}},10800000);let S=()=>{if(v)return;v=setInterval(async()=>{try{if(R.readyState===VJ.OPEN)R.send(JSON.stringify({type:"heartbeat",lastId:_}));let g=Date.now();if(Y&&!u&&g-A>=P*h){u=!0;try{let y=await Y();if(y&&c.has(y))Z=y,j(Z)}finally{u=!1}}}catch(g){if(U)U.warn(`Heartbeat encountered an error, continuing... ${String(g)}`);else if(!D)z.warn(`Heartbeat encountered an error, continuing... ${String(g)}`)}},P)},x=async(g)=>{if(g.type==="custom_msg"&&typeof g.kind==="string"&&g.data){A=Date.now(),await Fm0(g.kind,g.data,U,D);return}if(g.type==="status"&&typeof g.status==="string"){let y=g.status.toLowerCase();if(A=Date.now(),c.has(y))Z=y;return}if(g.type==="log"&&typeof g.message==="string"){A=Date.now(),O(g.message);return}if(typeof g.message==="string")A=Date.now(),O(g.message)},k=(g)=>{if(R.readyState!==VJ.OPEN)return;try{R.send(JSON.stringify({type:"confirmed_received",lastId:g}))}catch(y){M60(`Failed to send log confirmation, continuing... ${String(y)}`,U,D)}};if(S(),Q){if(r=()=>{if(!I)j("cancelled")},Q.aborted){j("cancelled");return}Q.addEventListener("abort",r)}R.addEventListener("message",async(g)=>{let y=Qm0(g),o=null;try{o=JSON.parse(y)}catch{o=null}if(o?.type==="heartbeat_response")return;if(o?.type==="batch_messages"&&Array.isArray(o.messages)){let d=_;for(let t of o.messages)if(await x(t),typeof t.id==="number")d=Math.max(d,t.id);if(d>_)_=d,k(d)}else{if(o)await x(o);else if(y)A=Date.now(),O(y);if(o&&typeof o.id==="number"&&o.id>_)_=o.id,k(o.id)}if(Z)j(Z)}),R.addEventListener("error",()=>{if(N+=1,U)U.warn(`Log stream encountered an error, retrying (${N}/${K})...`);else if(!D)console.warn(`Log stream encountered an error, retrying (${N}/${K})...`);if(!V&&N>=K){if(V=!0,U)U.warn("Log stream retry limit reached. Falling back to status checks.");else if(!D)z.warn("Log stream retry limit reached. Falling back to status checks.");if(F)F();j(null)}}),R.addEventListener("close",()=>{if(I)return;if(Z){j(Z);return}if(U)U.warn("Log stream closed, waiting for reconnect...");else if(!D)z.warn("Log stream closed, waiting for reconnect...")})})};try{let q=await w();if(q||Z)return q||Z}catch(q){if(U)U.warn(`Direct log streaming failed${q instanceof Error?`: ${q.message}`:""}`);else if(!D)z.warn(`Direct log streaming failed${q instanceof Error?`: ${q.message}`:""}`)}return Z}async function Zm0(D,$,X,J,Y,Q,F=!1,U,Z){let O=0;while(O<120){if(U?.aborted)return"cancelled";try{let w=await fetch(`${D}/build/status?job_id=${encodeURIComponent($)}&app_id=${encodeURIComponent(X)}&platform=${J}`,{headers:{authorization:Y},signal:U});if(!w.ok){Z?.warn(`Status check failed: ${w.status}`),await new Promise((B)=>setTimeout(B,5000)),O++;continue}let q=await w.json(),W=q.status?.toLowerCase?.()??"";if(F)Z?.info(`Build status: ${W||q.status}`);if(QO.has(W))return W;await new Promise((B)=>setTimeout(B,5000)),O++}catch(w){if(U?.aborted)return"cancelled";Z?.warn(`Status check error: ${w}`),await new Promise((q)=>setTimeout(q,5000)),O++}}return Z?.warn("Build status polling timed out"),"timeout"}async function Gm0(D,$,X){let J=new Set,Y=new Set,Q=!1,F=!1;if($==="ios"){let U=s1(D,X,"App","CapApp-SPM","Package.swift");if(A6(U)){Q=!0;let O=(await YO(U,"utf-8")).matchAll(/\.package\s*\([^)]*path:\s*["'](?:\.\.\/)*node_modules\/([^"']+)["']\s*\)/g);for(let w of O){let q=w[1],W=q.lastIndexOf("node_modules/");if(W!==-1)q=q.substring(W+13);J.add(q)}}let Z=s1(D,X);if(A6(Z)){let G=[s1(Z,"App","Podfile"),s1(Z,"Podfile")];for(let w of lA(Z,{withFileTypes:!0}))if(w.isDirectory())G.push(s1(Z,w.name,"Podfile"));let O=[...new Set(G)].filter((w)=>A6(w));if(O.length>0)F=!0;for(let w of O){let W=(await YO(w,"utf-8")).matchAll(/pod\s+['"][^'"]+['"],\s*:path\s*=>\s*['"](?:\.\.\/)+node_modules\/([^'"]+)['"]/g);for(let B of W){let H=B[1],L=H.lastIndexOf("node_modules/");if(L!==-1)H=H.substring(L+13);J.add(H)}}}}else if($==="android"){let U=s1(D,X,"capacitor.settings.gradle");if(A6(U)){let O=(await YO(U,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let w of O){let q=w[1],W=q.lastIndexOf("node_modules/");if(W!==-1)q=q.substring(W+13);let B=q.replace(/\/(android|capacitor)$/,"");J.add(B)}}let Z=s1(D,X,"capacitor-cordova-android-plugins","build.gradle");if(A6(Z)){let O=(await YO(Z,"utf-8")).matchAll(/apply\s+from\s*:\s*["'](?:\.\.\/)+node_modules\/([^"']+)["']/g);for(let w of O){let q=w[1],W=q.lastIndexOf("node_modules/");if(W!==-1)q=q.substring(W+13);let B=q.split("/"),H=B[0].startsWith("@")&&B.length>=2?`${B[0]}/${B[1]}`:B[0];Y.add(H)}}}return{packages:J,cordovaPackages:Y,usesSPM:Q,usesCocoaPods:F}}function z60(D,$,X,J){let Y=D.replace(/\\/g,"/");if(Y.startsWith(`${J}/`))return!0;if(Y==="package.json"||Y==="package-lock.json"||Y.startsWith("capacitor.config."))return!0;if(Y.startsWith("resources/"))return!0;if($==="ios"&&Y.startsWith("node_modules/@capacitor/ios/"))return!0;if($==="android"&&Y.startsWith("node_modules/@capacitor/android/"))return!0;if($==="android")for(let Q of X.cordovaPackages){let F=`node_modules/${Q}/`;if(Y===`node_modules/${Q}/package.json`)return!0;if(Y.startsWith(F)){let U=Y.slice(F.length);if(U==="node_modules"||U.startsWith("node_modules/"))continue;return!0}}for(let Q of X.packages){let F=`node_modules/${Q}/`;if(Y===`${F}package.json`)return!0;if($==="android"){if(Y.startsWith(`${F}android/`))return!0}else if($==="ios"){if(Y.startsWith(`${F}ios/`))return!0;if(X.usesSPM){if(Y===`${F}Package.swift`)return!0}if(X.usesCocoaPods||!X.usesSPM){if(Y.startsWith(F)&&Y.endsWith(".podspec"))return!0}}}return!1}function yJ(D,$,X,J,Y,Q){let F=lA($);for(let U of F){let Z=s1($,U),G=X?`${X}/${U}`:U,O=pg0(Z);if(O.isDirectory()){if(U===".git"||U==="dist"||U==="build"||U===".angular"||U===".vite"||U===".gradle"||U===".idea"||U===".swiftpm")continue;if(U==="node_modules"){yJ(D,Z,G,J,Y,Q);continue}if(U==="resources"){yJ(D,Z,G,J,Y,Q);continue}let w=G.replace(/\\/g,"/"),q=[...Y.packages,...Y.cordovaPackages];if(z60(G,J,Y,Q)||Q===w||Q.startsWith(`${w}/`)||q.some((B)=>{return`node_modules/${B}/`.startsWith(`${w}/`)||w.startsWith(`node_modules/${B}`)}))yJ(D,Z,G,J,Y,Q)}else if(O.isFile()){if(U===".DS_Store"||U.endsWith(".log"))continue;if(z60(G,J,Y,Q))Om0(D,Z,G)}}}function Om0(D,$,X){let J=X.replace(/\\/g,"/");if(D.getEntry(J))return;let Y=J.lastIndexOf("/"),Q=Y===-1?void 0:J.slice(0,Y);D.addLocalFile($,Q)}function wm0(D){if(!D)return[];let $=D.split(",").map((X)=>X.trim()).filter(Boolean).map((X)=>dA(X));return[...new Set($)]}function qm0(D,$){let X=new Set([...$.packages,...$.cordovaPackages]);return X.add(D==="ios"?"@capacitor/ios":"@capacitor/android"),X}function Wm0(D,$){let X=s1(D,...$.split("/"));if(A6(X))return X;let J=s1(D,".pnpm");if(!A6(J))return;let Y=$.replace("/","+"),Q=lA(J,{withFileTypes:!0}).filter((F)=>F.isDirectory()).map((F)=>F.name).filter((F)=>F.startsWith(`${Y}@`)).sort();if(Q.length>1)throw Error(`Multiple pnpm store entries found for ${$} in ${J}; provide the app-specific node_modules path so the native build archive can use the exact resolved package.`);for(let F of Q){let U=s1(J,F,"node_modules",...$.split("/"));if(A6(U))return U}return}function Bm0(D,$,X,J,Y){if($.length===0)return;let Q=$.filter((F)=>!A6(F));if(Q.length>0)throw Error(`Missing node_modules folder at ${Q.join(", ")}`);for(let F of $)for(let U of qm0(X,J)){let Z=Wm0(F,U);if(!Z)continue;yJ(D,Z,`node_modules/${U}`,X,J,Y)}}async function Hm0(D,$,X,J,Y={}){let Q=kJ(J,X),F=await Gm0(D,X,Q),U=new L60.default;yJ(U,D,"",X,F,Q),Bm0(U,wm0(Y.nodeModules),X,F,Q);let Z=/node_modules\/\.pnpm\/[^/\n\r]+(?:\/[^/\n\r]+)*\/node_modules\//g,G=new Set(["",".gradle",".swift",".json",".lock",".xml",".properties",".pbxproj",".xcconfig",".plist",".podspec",".rb",".yaml",".yml"]);for(let w of U.getEntries()){if(w.isDirectory)continue;let q=w.entryName.includes(".")?`.${w.entryName.split(".").pop()}`:"",W=w.entryName.split("/").pop()||"";if(!G.has(q)&&W!=="Podfile")continue;let B=w.getData().toString("utf-8"),H=B.replace(Z,"node_modules/");if(X==="ios"){let L="../".repeat(w.entryName.split("/").length-1);H=H.replace(/(?:\.\.\/){4,}(ios\/|node_modules\/)/g,(M,I)=>`${L}${I}`)}if(H!==B)U.updateFile(w.entryName,H60.from(H,"utf-8"))}let O=s1(D,"capacitor.config.json");if(J&&!A6(O)){let w=`${JSON.stringify(J,null,2)}
553
553
  `;U.addFile("capacitor.config.json",H60.from(w,"utf-8"))}await ag0($,U.toBuffer())}var Km0=new Set(["CAPGO_IOS_SCHEME","CAPGO_IOS_TARGET","CAPGO_IOS_DISTRIBUTION","BUILD_OUTPUT_UPLOAD_ENABLED","BUILD_OUTPUT_RETENTION_SECONDS","SKIP_BUILD_NUMBER_BUMP","CAPGO_IOS_SOURCE_DIR","CAPGO_IOS_APP_DIR","CAPGO_IOS_PROJECT_DIR","IOS_PROJECT_DIR","CAPGO_ANDROID_SOURCE_DIR","CAPGO_ANDROID_APP_DIR","CAPGO_ANDROID_PROJECT_DIR","ANDROID_PROJECT_DIR","CAPGO_ANDROID_FLAVOR"]);function Nm0(D,$,X,J){let Y={platform:$,buildMode:X,cliVersion:J,iosScheme:D.CAPGO_IOS_SCHEME,iosTarget:D.CAPGO_IOS_TARGET,iosDistribution:D.CAPGO_IOS_DISTRIBUTION,iosSourceDir:D.CAPGO_IOS_SOURCE_DIR,iosAppDir:D.CAPGO_IOS_APP_DIR,iosProjectDir:D.CAPGO_IOS_PROJECT_DIR,androidSourceDir:D.CAPGO_ANDROID_SOURCE_DIR,androidAppDir:D.CAPGO_ANDROID_APP_DIR,androidProjectDir:D.CAPGO_ANDROID_PROJECT_DIR,androidFlavor:D.CAPGO_ANDROID_FLAVOR,outputUploadEnabled:D.BUILD_OUTPUT_UPLOAD_ENABLED==="true",outputRetentionSeconds:D.BUILD_OUTPUT_RETENTION_SECONDS?Number.parseInt(D.BUILD_OUTPUT_RETENTION_SECONDS,10)||E9:E9,skipBuildNumberBump:D.SKIP_BUILD_NUMBER_BUMP==="true"},Q={};for(let[F,U]of Object.entries(D))if(!Km0.has(F)&&U!==void 0)Q[F]=U;return{buildOptions:Y,buildCredentials:Q}}async function I60(D,$,X=!1,J){let Y=Date.now(),Q=$.verbose??!1,F=J||$m0(X),U=null,Z=$.outputRecord?{...F,customMsg:async(G,O)=>{if(G==="qr_download_link"&&typeof O.url==="string")U=O.url;await F.customMsg(G,O)}}:F;try{$.apikey=$.apikey||H0(X);let G=dA($.path||nA()),O=await Xm0(G,()=>j0());if(D=D||O?.config?.appId,!D)throw Error("Missing argument, you need to provide a appId, or be in a capacitor project");let w=await Dm0($.platform,{silent:X}),q=$.supaHost||"https://api.capgo.app",W=await S0($.apikey,$.supaHost,$.supaAnon);await NJ(W,$.apikey,"app.build_native",{appId:D},{message:`Insufficient permissions to request a native build for app ${D}`,silent:X});let B=await sD(W,D);if(Z.info(`Requesting native build for ${D}`),Z.info(`Platform: ${w}`),Z.info(`Project: ${G}`),Z.info(`
554
554
  \uD83D\uDD12 Security: Credentials are never stored on Capgo servers`),Z.info(" They are used only during build and deleted after"),Z.info(` Build outputs can optionally be uploaded for time-limited download links
555
- `),Q)Z.info(`API host: ${q}`);let H={};if($.buildCertificateBase64)H.BUILD_CERTIFICATE_BASE64=$.buildCertificateBase64;if($.p12Password)H.P12_PASSWORD=$.p12Password;if($.appleKeyId)H.APPLE_KEY_ID=$.appleKeyId;if($.appleIssuerId)H.APPLE_ISSUER_ID=$.appleIssuerId;if($.appleKeyContent)H.APPLE_KEY_CONTENT=$.appleKeyContent;if($.appStoreConnectTeamId)H.APP_STORE_CONNECT_TEAM_ID=$.appStoreConnectTeamId;if($.iosScheme)H.CAPGO_IOS_SCHEME=$.iosScheme;if($.iosTarget)H.CAPGO_IOS_TARGET=$.iosTarget;if($.iosDistribution)H.CAPGO_IOS_DISTRIBUTION=$.iosDistribution;if($.iosProvisioningProfile&&$.iosProvisioningProfile.length>0){let S=J10($.iosProvisioningProfile,dA($.path||nA()));H.CAPGO_IOS_PROVISIONING_MAP=JSON.stringify(S)}if($.iosProvisioningMap)H.CAPGO_IOS_PROVISIONING_MAP=$.iosProvisioningMap;if($.androidKeystoreFile)H.ANDROID_KEYSTORE_FILE=$.androidKeystoreFile;if($.keystoreKeyAlias)H.KEYSTORE_KEY_ALIAS=$.keystoreKeyAlias;let L=!!$.keystoreKeyPassword,M=!!$.keystoreStorePassword;if(L&&!M)H.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,H.KEYSTORE_STORE_PASSWORD=$.keystoreKeyPassword;else if(!L&&M)H.KEYSTORE_KEY_PASSWORD=$.keystoreStorePassword,H.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword;else if(L&&M)H.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,H.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword;if(typeof $.androidFlavor==="string"){let S=$.androidFlavor.trim();if(S)H.CAPGO_ANDROID_FLAVOR=S}if($.playConfigJson)H.PLAY_CONFIG_JSON=$.playConfigJson;if($.inAppUpdatePriority!==void 0)H.PLAY_STORE_IN_APP_UPDATE_PRIORITY=String(pG($.inAppUpdatePriority));if($.outputUpload!==void 0)H.BUILD_OUTPUT_UPLOAD_ENABLED=X3($.outputUpload)?"true":"false";if($.outputRetention)H.BUILD_OUTPUT_RETENTION_SECONDS=String(iG($.outputRetention));if($.skipBuildNumberBump!==void 0)H.SKIP_BUILD_NUMBER_BUMP=X3($.skipBuildNumberBump)?"true":"false";let I=await rD0(D,w,Object.keys(H).length>0?H:void 0);if($.playstoreUpload===!1&&I)delete I.PLAY_CONFIG_JSON,Z.info("ℹ️ --no-playstore-upload specified, Play Store upload disabled for this build");let K=kJ(O?.config,w);if(I&&K)if(w==="ios")I.CAPGO_IOS_SOURCE_DIR=K,I.CAPGO_IOS_APP_DIR=K,I.CAPGO_IOS_PROJECT_DIR=K,I.IOS_PROJECT_DIR=K;else I.CAPGO_ANDROID_SOURCE_DIR=K,I.CAPGO_ANDROID_APP_DIR=K,I.CAPGO_ANDROID_PROJECT_DIR=K,I.ANDROID_PROJECT_DIR=K;if(!I)throw Z.error("❌ No credentials found for this app and platform"),Z.error(""),Z.error("You must provide credentials via:"),Z.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),Z.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),Z.error(" 3. Saved credentials file:"),Z.error(` npx @capgo/cli build credentials save --appId ${D} --platform ${w}`),Z.error(""),Z.error("Documentation:"),Z.error(" https://capgo.app/docs/cli/cloud-build/credentials/"),Error("No credentials found. Please provide credentials before building.");let N=[];if(w==="ios"){let S=I.CAPGO_IOS_DISTRIBUTION,x=["app_store","ad_hoc"];if(S&&!x.includes(S))N.push(`Invalid CAPGO_IOS_DISTRIBUTION value: '${S}'. Must be one of: ${x.join(", ")}`);let k=S&&x.includes(S)?S:"app_store";if(!S)Z.info("ℹ️ --ios-distribution not specified, defaulting to app_store");if(I.CAPGO_IOS_DISTRIBUTION=k,!I.BUILD_CERTIFICATE_BASE64)N.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)");if(!I.P12_PASSWORD)Z.warn("⚠️ P12_PASSWORD not provided - assuming certificate has no password"),Z.warn(" If your certificate requires a password, provide it with --p12-password");if(!!(I.BUILD_PROVISION_PROFILE_BASE64||I.APPLE_PROFILE_NAME)&&!I.CAPGO_IOS_PROVISIONING_MAP)throw Z.error("❌ Legacy provisioning profile format detected. Run:"),Z.error(" npx @capgo/cli build credentials migrate --platform ios"),Z.error(""),Z.error(" This will convert your existing provisioning profile to the new multi-target format."),Error("Legacy provisioning profile format detected. Run: npx @capgo/cli build credentials migrate --platform ios");if(!I.CAPGO_IOS_PROVISIONING_MAP)N.push('CAPGO_IOS_PROVISIONING_MAP (use --ios-provisioning-profile or save via "build credentials save")');if(k==="app_store"){let y=!!I.APPLE_KEY_ID,o=!!I.APPLE_ISSUER_ID,d=!!I.APPLE_KEY_CONTENT,t=y||o||d;if(!(y&&o&&d))if(t){let X0=[];if(!y)X0.push("APPLE_KEY_ID (or --apple-key-id)");if(!o)X0.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!d)X0.push("APPLE_KEY_CONTENT (or --apple-key-content)");N.push(`Incomplete App Store Connect API key - missing: ${X0.join(", ")}`)}else if(I.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")N.push("APPLE_KEY_ID/APPLE_ISSUER_ID/APPLE_KEY_CONTENT or BUILD_OUTPUT_UPLOAD_ENABLED=true (or --output-upload) (build has no output destination - enable either TestFlight upload or Capgo download link)");else if(I.SKIP_BUILD_NUMBER_BUMP!=="true")N.push("APPLE_KEY_ID/APPLE_ISSUER_ID/APPLE_KEY_CONTENT or --skip-build-number-bump (App Store Connect API key not provided - build numbers cannot be auto-incremented without it)");else Z.warn("⚠️ App Store Connect API key not provided - build will succeed but cannot auto-upload to TestFlight")}else if(k==="ad_hoc")Z.info("\uD83D\uDCE6 Ad-hoc distribution mode: App Store Connect API key not required"),Z.info(" Build number will use timestamp-based fallback");if(!I.APP_STORE_CONNECT_TEAM_ID)N.push("APP_STORE_CONNECT_TEAM_ID (or --app-store-connect-team-id)")}else if(w==="android"){if(!I.ANDROID_KEYSTORE_FILE)N.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!I.KEYSTORE_KEY_ALIAS)N.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!I.KEYSTORE_KEY_PASSWORD&&!I.KEYSTORE_STORE_PASSWORD)N.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)");if(!I.PLAY_CONFIG_JSON)if(I.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")N.push("PLAY_CONFIG_JSON or BUILD_OUTPUT_UPLOAD_ENABLED=true (build has no output destination - enable either Play Store upload or Capgo download link)");else Z.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}if(N.length>0){Z.error(`❌ Missing required credentials for ${w}:`),Z.error("");for(let S of N)Z.error(` • ${S}`);throw Z.error(""),Z.error("Provide credentials via:"),Z.error(` 1. CLI arguments: npx @capgo/cli build request --platform ${w} ${w==="ios"?'--apple-key-id "..." --apple-issuer-id "..." --apple-key-content "..."':'--android-keystore-file "..." --keystore-key-alias "..."'}`),Z.error(` 2. Environment variables: ${w==="ios"?'export APPLE_KEY_ID="..." APPLE_ISSUER_ID="..." APPLE_KEY_CONTENT="..."':'export ANDROID_KEYSTORE_FILE="..." KEYSTORE_KEY_ALIAS="..."'}`),Z.error(` 3. Saved credentials: npx @capgo/cli build credentials save --platform ${w} ...`),Z.error(""),Z.error("Documentation:"),Z.error(` https://capgo.app/docs/cli/cloud-build/${w}/`),Error(`Missing required credentials for ${w}: ${N.join(", ")}`)}if(!$.buildMode)Z.info("ℹ️ --build-mode not specified, defaulting to release");if(!I.BUILD_OUTPUT_UPLOAD_ENABLED)Z.info("ℹ️ --output-upload not specified, defaulting to false (no Capgo download link)");if(!I.BUILD_OUTPUT_RETENTION_SECONDS)Z.info(`ℹ️ --output-retention not specified, defaulting to ${E9}s (1 hour)`);if(!I.SKIP_BUILD_NUMBER_BUMP)Z.info("ℹ️ --skip-build-number-bump not specified, build number will be auto-incremented (default)");let{buildOptions:V,buildCredentials:R}=Nm0(I,w,$.buildMode||"release",f$.version),v={app_id:D,platform:w,build_mode:$.buildMode||"release",build_options:V,build_credentials:R};if(Z.info("✓ Using credentials (merged from CLI args, env vars, and saved file)"),Q){let S=Object.keys(R);Z.info(`Credentials provided: ${S.join(", ")}`),Z.info(`Build options: platform=${V.platform}, mode=${V.buildMode}, cliVersion=${V.cliVersion}`)}Z.info("Requesting build from Capgo...");let _=3,A=await Jm0(`${q}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify(v)},_,Z);if(!A.ok){let S=await A.text();throw Error(`Failed to request build: ${A.status} - ${S}`)}let u=await A.json();if(Z.success(`Build job created: ${u.job_id}`),Z.info(`Status: ${u.status}`),Q)Z.info(`Upload URL: ${u.upload_url}`),Z.info(`Upload expires: ${u.upload_expires_at}`);let P=fD0()||$.aiAnalytics===!0,h=null,c=!1;if(P&&u.job_id)h=u.job_id,await kD0(u.job_id),bD0(u.job_id,()=>c);let r={...Z,buildLog:(S)=>{if(Z.buildLog(S),P&&h)yD0(h,S)}};await A0($.apikey,{channel:"native-builder",event:"Build requested",icon:"\uD83C\uDFD7️",user_id:B,tags:{"app-id":D,platform:w},notify:!1}).catch();let f=s1(sg0(),`capgo-build-${Date.now()}`);await rg0(f,{recursive:!0});let j=s1(f,`${K60(G)}.zip`);try{Z.info(`Zipping ${w} project from ${G}...`),await Hm0(G,j,w,O?.config,{nodeModules:$.nodeModules});let S=await og0(j),x=(S.size/1024/1024).toFixed(2);if(Z.success(`Created zip: ${j} (${x} MB)`),Z.info("Uploading to builder..."),Q)Z.info(`Upload endpoint: ${u.upload_url}`),Z.info(`File size: ${x} MB`),Z.info(`Job ID: ${u.job_id}`);let k=ig0(j);Z.uploadProgress(0);let g=Date.now(),y=$.buildMode||"release";JO({apikey:$.apikey,appId:D,orgId:B,platform:w,buildMode:y,jobId:u.job_id,sizeBytes:S.size,phase:"started"}),await new Promise((m,b)=>{let B0=new FO.Upload(k,{endpoint:u.upload_url,chunkSize:5242880,metadata:{filename:K60(j),filetype:"application/zip"},headers:{authorization:$.apikey},onBeforeRequest(I0){if(Q){Z.info(`[TUS] ${I0.getMethod()} ${I0.getURL()}`);let C0=I0.getHeader("authorization");Z.info(`[TUS] Authorization header present: ${!!C0}`)}},onAfterResponse(I0,C0){if(Q){Z.info(`[TUS] Response status: ${C0.getStatus()}`);let KD=C0.getHeader("upload-offset"),gD=C0.getHeader("tus-resumable");Z.info(`[TUS] Upload-Offset: ${KD}, Tus-Resumable: ${gD}`)}},async onError(I0){if(await JO({apikey:$.apikey,appId:D,orgId:B,platform:w,buildMode:y,jobId:u.job_id,sizeBytes:S.size,phase:"failed",durationSeconds:(Date.now()-g)/1000,error:I0}),Z.error(`Upload error: ${I0.message}`),I0 instanceof FO.DetailedError){let C0=I0.originalResponse?.getBody(),KD=I0.originalResponse?.getStatus(),gD=I0.originalRequest?.getURL();if(Q)Z.error(`[TUS] Request URL: ${gD}`),Z.error(`[TUS] Response status: ${KD}`),Z.error(`[TUS] Response body: ${C0}`);let a0=(()=>{try{let ED=JSON.parse(C0||'{"error": "unknown error"}');return ED.status||ED.error||ED.message||"unknown error"}catch{return C0||I0.message}})();b(Error(`TUS upload failed: ${a0}`))}else b(Error(`TUS upload failed: ${I0.message||I0.toString()}`))},onProgress(I0,C0){let KD=Number.parseFloat((I0/C0*100).toFixed(2));Z.uploadProgress(KD)},onSuccess(){if(JO({apikey:$.apikey,appId:D,orgId:B,platform:w,buildMode:y,jobId:u.job_id,sizeBytes:S.size,phase:"succeeded",durationSeconds:(Date.now()-g)/1000}),Z.uploadProgress(100),Q)Z.success("TUS upload completed successfully");m()}});if(Q)Z.info("[TUS] Starting upload...");B0.start()}),Z.info("Starting build job...");let o=await fetch(`${q}/build/start/${u.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D})});if(!o.ok){let m=await o.text();throw Error(`Failed to start build: ${o.status} - ${m}`)}let d=await o.json();Z.success("Build started!"),Z.info("Streaming build logs...");let t=new AbortController,W0=!1,X0=async()=>{if(W0)return;W0=!0;let m=new AbortController,b=setTimeout(()=>m.abort(),4000);try{await fetch(`${q}/build/cancel/${u.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D}),signal:m.signal})}catch{}finally{clearTimeout(b)}},K0=async()=>{try{if(W0)G$.exit(1);Z.warn("Canceling build... (press Ctrl+C again to force quit)"),await X0(),t.abort()}catch{}};G$.on("SIGINT",K0);let R0,a=!1,_0=async()=>{try{let m=await fetch(`${q}/build/status?job_id=${encodeURIComponent(u.job_id)}&app_id=${encodeURIComponent(D)}&platform=${w}`,{headers:{authorization:$.apikey}});if(!m.ok)return null;let b=await m.json(),B0=b.status?.toLowerCase?.()??"";if(a)Z.info(`Build status: ${B0||b.status}`);if(QO.has(B0))return B0;return null}catch{return null}},C=null;try{C=await Um0(X,Q,d.logs_url,d.logs_token,_0,t.signal,()=>{a=!0},X&&!J&&!$.outputRecord?void 0:r)}finally{G$.removeListener("SIGINT",K0)}if(C){if(R0=C,QO.has(C))await _0().catch(()=>{})}else R0=await Zm0(q,u.job_id,D,w,$.apikey,X,a,t.signal,Z);if(R0==="succeeded")Z.success("Build completed successfully!");else if(R0==="failed")Z.error("Build failed");else Z.warn(`Build finished with status: ${R0}`);if($.outputRecord&&R0==="succeeded")try{let m=await W60($.outputRecord,{jobId:u.job_id,appId:D,platform:w,buildMode:$.buildMode??"release",status:R0,outputUrl:U},(b)=>Z.warn(b));if(Z.success(`Build output record written to ${$.outputRecord}`),!m.outputUrl)Z.info("ℹ️ Record contains no download URL — pass --output-upload to publish one.");if(m.qrCodePngPath)Z.info(`ℹ️ QR code PNG written to ${m.qrCodePngPath}`)}catch(m){Z.warn(`Failed to write build output record to ${$.outputRecord}: ${m instanceof Error?m.message:String(m)}`)}if(R0==="failed"&&P&&h){let m=gD0({isTTY:G$.stdout.isTTY===!0,aiAnalyticsFlag:$.aiAnalytics===!0}),b="⚠ AI can make mistakes. Always verify the diagnosis against the full log before applying the suggested fix.",B0=(a0)=>{if(a0==="ok")return"success";if(a0==="already_analyzed")return"already_analyzed";if(a0==="too_big")return"too_big";return"error"},I0=async(a0,ED)=>{await nG({apikey:$.apikey,orgId:B,appId:D,platform:w,jobId:h,choice:a0,triggeredBy:ED});let w$=`${G$.env.CAPGO_AI_LOG_BASE_DIR||"/tmp/capgo-builds"}/${h}.log`,oJ="";try{let{readFile:z3}=await import("node:fs/promises");oJ=await z3(w$,"utf8")}catch(z3){let F90=z3 instanceof Error?z3.message:String(z3);G$.stderr.write(`AI analysis skipped: could not read captured log at ${w$}: ${F90}
555
+ `),Q)Z.info(`API host: ${q}`);let H={};if($.buildCertificateBase64)H.BUILD_CERTIFICATE_BASE64=$.buildCertificateBase64;if($.p12Password)H.P12_PASSWORD=$.p12Password;if($.appleKeyId)H.APPLE_KEY_ID=$.appleKeyId;if($.appleIssuerId)H.APPLE_ISSUER_ID=$.appleIssuerId;if($.appleKeyContent)H.APPLE_KEY_CONTENT=$.appleKeyContent;if($.appStoreConnectTeamId)H.APP_STORE_CONNECT_TEAM_ID=$.appStoreConnectTeamId;if($.iosScheme)H.CAPGO_IOS_SCHEME=$.iosScheme;if($.iosTarget)H.CAPGO_IOS_TARGET=$.iosTarget;if($.iosDistribution)H.CAPGO_IOS_DISTRIBUTION=$.iosDistribution;if($.iosProvisioningProfile&&$.iosProvisioningProfile.length>0){let S=J10($.iosProvisioningProfile,dA($.path||nA()));H.CAPGO_IOS_PROVISIONING_MAP=JSON.stringify(S)}if($.iosProvisioningMap)H.CAPGO_IOS_PROVISIONING_MAP=$.iosProvisioningMap;if($.androidKeystoreFile)H.ANDROID_KEYSTORE_FILE=$.androidKeystoreFile;if($.keystoreKeyAlias)H.KEYSTORE_KEY_ALIAS=$.keystoreKeyAlias;let L=!!$.keystoreKeyPassword,M=!!$.keystoreStorePassword;if(L&&!M)H.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,H.KEYSTORE_STORE_PASSWORD=$.keystoreKeyPassword;else if(!L&&M)H.KEYSTORE_KEY_PASSWORD=$.keystoreStorePassword,H.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword;else if(L&&M)H.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,H.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword;if(typeof $.androidFlavor==="string"){let S=$.androidFlavor.trim();if(S)H.CAPGO_ANDROID_FLAVOR=S}if($.playConfigJson)H.PLAY_CONFIG_JSON=$.playConfigJson;if($.inAppUpdatePriority!==void 0)H.PLAY_STORE_IN_APP_UPDATE_PRIORITY=String(pG($.inAppUpdatePriority));if($.outputUpload!==void 0)H.BUILD_OUTPUT_UPLOAD_ENABLED=X3($.outputUpload)?"true":"false";if($.outputRetention)H.BUILD_OUTPUT_RETENTION_SECONDS=String(iG($.outputRetention));if($.skipBuildNumberBump!==void 0)H.SKIP_BUILD_NUMBER_BUMP=X3($.skipBuildNumberBump)?"true":"false";let I=await rD0(D,w,Object.keys(H).length>0?H:void 0);if($.playstoreUpload===!1&&I)delete I.PLAY_CONFIG_JSON,Z.info("ℹ️ --no-playstore-upload specified, Play Store upload disabled for this build");let K=kJ(O?.config,w);if(I&&K)if(w==="ios")I.CAPGO_IOS_SOURCE_DIR=K,I.CAPGO_IOS_APP_DIR=K,I.CAPGO_IOS_PROJECT_DIR=K,I.IOS_PROJECT_DIR=K;else I.CAPGO_ANDROID_SOURCE_DIR=K,I.CAPGO_ANDROID_APP_DIR=K,I.CAPGO_ANDROID_PROJECT_DIR=K,I.ANDROID_PROJECT_DIR=K;if(!I)throw Z.error("❌ No credentials found for this app and platform"),Z.error(""),Z.error("You must provide credentials via:"),Z.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),Z.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),Z.error(" 3. Saved credentials file:"),Z.error(` npx @capgo/cli build credentials save --appId ${D} --platform ${w}`),Z.error(""),Z.error("Documentation:"),Z.error(" https://capgo.app/docs/cli/cloud-build/credentials/"),Error("No credentials found. Please provide credentials before building.");let N=[];if(w==="ios"){let S=I.CAPGO_IOS_DISTRIBUTION,x=["app_store","ad_hoc"];if(S&&!x.includes(S))N.push(`Invalid CAPGO_IOS_DISTRIBUTION value: '${S}'. Must be one of: ${x.join(", ")}`);let k=S&&x.includes(S)?S:"app_store";if(!S)Z.info("ℹ️ --ios-distribution not specified, defaulting to app_store");if(I.CAPGO_IOS_DISTRIBUTION=k,!I.BUILD_CERTIFICATE_BASE64)N.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)");if(!I.P12_PASSWORD)Z.warn("⚠️ P12_PASSWORD not provided - assuming certificate has no password"),Z.warn(" If your certificate requires a password, provide it with --p12-password");if(!!(I.BUILD_PROVISION_PROFILE_BASE64||I.APPLE_PROFILE_NAME)&&!I.CAPGO_IOS_PROVISIONING_MAP)throw Z.error("❌ Legacy provisioning profile format detected. Run:"),Z.error(" npx @capgo/cli build credentials migrate --platform ios"),Z.error(""),Z.error(" This will convert your existing provisioning profile to the new multi-target format."),Error("Legacy provisioning profile format detected. Run: npx @capgo/cli build credentials migrate --platform ios");if(!I.CAPGO_IOS_PROVISIONING_MAP)N.push('CAPGO_IOS_PROVISIONING_MAP (use --ios-provisioning-profile or save via "build credentials save")');if(k==="app_store"){let y=!!I.APPLE_KEY_ID,o=!!I.APPLE_ISSUER_ID,d=!!I.APPLE_KEY_CONTENT,t=y||o||d;if(!(y&&o&&d))if(t){let X0=[];if(!y)X0.push("APPLE_KEY_ID (or --apple-key-id)");if(!o)X0.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!d)X0.push("APPLE_KEY_CONTENT (or --apple-key-content)");N.push(`Incomplete App Store Connect API key - missing: ${X0.join(", ")}`)}else if(I.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")N.push("APPLE_KEY_ID/APPLE_ISSUER_ID/APPLE_KEY_CONTENT or BUILD_OUTPUT_UPLOAD_ENABLED=true (or --output-upload) (build has no output destination - enable either TestFlight upload or Capgo download link)");else if(I.SKIP_BUILD_NUMBER_BUMP!=="true")N.push("APPLE_KEY_ID/APPLE_ISSUER_ID/APPLE_KEY_CONTENT or --skip-build-number-bump (App Store Connect API key not provided - build numbers cannot be auto-incremented without it)");else Z.warn("⚠️ App Store Connect API key not provided - build will succeed but cannot auto-upload to TestFlight")}else if(k==="ad_hoc")Z.info("\uD83D\uDCE6 Ad-hoc distribution mode: App Store Connect API key not required"),Z.info(" Build number will use timestamp-based fallback");if(!I.APP_STORE_CONNECT_TEAM_ID)N.push("APP_STORE_CONNECT_TEAM_ID (or --app-store-connect-team-id)")}else if(w==="android"){if(!I.ANDROID_KEYSTORE_FILE)N.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!I.KEYSTORE_KEY_ALIAS)N.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!I.KEYSTORE_KEY_PASSWORD&&!I.KEYSTORE_STORE_PASSWORD)N.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)");if(!I.PLAY_CONFIG_JSON)if(I.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")N.push("PLAY_CONFIG_JSON or BUILD_OUTPUT_UPLOAD_ENABLED=true (build has no output destination - enable either Play Store upload or Capgo download link)");else Z.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}if(N.length>0){Z.error(`❌ Missing required credentials for ${w}:`),Z.error("");for(let S of N)Z.error(` • ${S}`);throw Z.error(""),Z.error("Provide credentials via:"),Z.error(` 1. CLI arguments: npx @capgo/cli build request --platform ${w} ${w==="ios"?'--apple-key-id "..." --apple-issuer-id "..." --apple-key-content "..."':'--android-keystore-file "..." --keystore-key-alias "..."'}`),Z.error(` 2. Environment variables: ${w==="ios"?'export APPLE_KEY_ID="..." APPLE_ISSUER_ID="..." APPLE_KEY_CONTENT="..."':'export ANDROID_KEYSTORE_FILE="..." KEYSTORE_KEY_ALIAS="..."'}`),Z.error(` 3. Saved credentials: npx @capgo/cli build credentials save --platform ${w} ...`),Z.error(""),Z.error("Documentation:"),Z.error(` https://capgo.app/docs/cli/cloud-build/${w}/`),Error(`Missing required credentials for ${w}: ${N.join(", ")}`)}if(!$.buildMode)Z.info("ℹ️ --build-mode not specified, defaulting to release");if(!I.BUILD_OUTPUT_UPLOAD_ENABLED)Z.info("ℹ️ --output-upload not specified, defaulting to false (no Capgo download link)");if(!I.BUILD_OUTPUT_RETENTION_SECONDS)Z.info(`ℹ️ --output-retention not specified, defaulting to ${E9}s (1 hour)`);if(!I.SKIP_BUILD_NUMBER_BUMP)Z.info("ℹ️ --skip-build-number-bump not specified, build number will be auto-incremented (default)");let{buildOptions:V,buildCredentials:R}=Nm0(I,w,$.buildMode||"release",f$.version),v={app_id:D,platform:w,build_mode:$.buildMode||"release",build_options:V,build_credentials:R};if(Z.info("✓ Using credentials (merged from CLI args, env vars, and saved file)"),Q){let S=Object.keys(R);Z.info(`Credentials provided: ${S.join(", ")}`),Z.info(`Build options: platform=${V.platform}, mode=${V.buildMode}, cliVersion=${V.cliVersion}`)}Z.info("Requesting build from Capgo...");let _=3,A=await Jm0(`${q}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify(v)},_,Z);if(!A.ok){let S=await A.text();throw Error(`Failed to request build: ${A.status} - ${S}`)}let u=await A.json();if(Z.success(`Build job created: ${u.job_id}`),Z.info(`Status: ${u.status}`),Q)Z.info(`Upload URL: ${u.upload_url}`),Z.info(`Upload expires: ${u.upload_expires_at}`);let P=fD0()||$.aiAnalytics===!0,h=null,c=!1;if(P&&u.job_id)h=u.job_id,await kD0(u.job_id),bD0(u.job_id,()=>c);let r={...Z,buildLog:(S)=>{if(Z.buildLog(S),P&&h)yD0(h,S)}};await A0($.apikey,{channel:"native-builder",event:"Build requested",icon:"\uD83C\uDFD7️",org_id:B,tracking_version:2,tags:{"app-id":D,platform:w},notify:!1}).catch();let f=s1(sg0(),`capgo-build-${Date.now()}`);await rg0(f,{recursive:!0});let j=s1(f,`${K60(G)}.zip`);try{Z.info(`Zipping ${w} project from ${G}...`),await Hm0(G,j,w,O?.config,{nodeModules:$.nodeModules});let S=await og0(j),x=(S.size/1024/1024).toFixed(2);if(Z.success(`Created zip: ${j} (${x} MB)`),Z.info("Uploading to builder..."),Q)Z.info(`Upload endpoint: ${u.upload_url}`),Z.info(`File size: ${x} MB`),Z.info(`Job ID: ${u.job_id}`);let k=ig0(j);Z.uploadProgress(0);let g=Date.now(),y=$.buildMode||"release";JO({apikey:$.apikey,appId:D,orgId:B,platform:w,buildMode:y,jobId:u.job_id,sizeBytes:S.size,phase:"started"}),await new Promise((m,b)=>{let B0=new FO.Upload(k,{endpoint:u.upload_url,chunkSize:5242880,metadata:{filename:K60(j),filetype:"application/zip"},headers:{authorization:$.apikey},onBeforeRequest(I0){if(Q){Z.info(`[TUS] ${I0.getMethod()} ${I0.getURL()}`);let C0=I0.getHeader("authorization");Z.info(`[TUS] Authorization header present: ${!!C0}`)}},onAfterResponse(I0,C0){if(Q){Z.info(`[TUS] Response status: ${C0.getStatus()}`);let KD=C0.getHeader("upload-offset"),gD=C0.getHeader("tus-resumable");Z.info(`[TUS] Upload-Offset: ${KD}, Tus-Resumable: ${gD}`)}},async onError(I0){if(await JO({apikey:$.apikey,appId:D,orgId:B,platform:w,buildMode:y,jobId:u.job_id,sizeBytes:S.size,phase:"failed",durationSeconds:(Date.now()-g)/1000,error:I0}),Z.error(`Upload error: ${I0.message}`),I0 instanceof FO.DetailedError){let C0=I0.originalResponse?.getBody(),KD=I0.originalResponse?.getStatus(),gD=I0.originalRequest?.getURL();if(Q)Z.error(`[TUS] Request URL: ${gD}`),Z.error(`[TUS] Response status: ${KD}`),Z.error(`[TUS] Response body: ${C0}`);let a0=(()=>{try{let ED=JSON.parse(C0||'{"error": "unknown error"}');return ED.status||ED.error||ED.message||"unknown error"}catch{return C0||I0.message}})();b(Error(`TUS upload failed: ${a0}`))}else b(Error(`TUS upload failed: ${I0.message||I0.toString()}`))},onProgress(I0,C0){let KD=Number.parseFloat((I0/C0*100).toFixed(2));Z.uploadProgress(KD)},onSuccess(){if(JO({apikey:$.apikey,appId:D,orgId:B,platform:w,buildMode:y,jobId:u.job_id,sizeBytes:S.size,phase:"succeeded",durationSeconds:(Date.now()-g)/1000}),Z.uploadProgress(100),Q)Z.success("TUS upload completed successfully");m()}});if(Q)Z.info("[TUS] Starting upload...");B0.start()}),Z.info("Starting build job...");let o=await fetch(`${q}/build/start/${u.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D})});if(!o.ok){let m=await o.text();throw Error(`Failed to start build: ${o.status} - ${m}`)}let d=await o.json();Z.success("Build started!"),Z.info("Streaming build logs...");let t=new AbortController,W0=!1,X0=async()=>{if(W0)return;W0=!0;let m=new AbortController,b=setTimeout(()=>m.abort(),4000);try{await fetch(`${q}/build/cancel/${u.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D}),signal:m.signal})}catch{}finally{clearTimeout(b)}},K0=async()=>{try{if(W0)G$.exit(1);Z.warn("Canceling build... (press Ctrl+C again to force quit)"),await X0(),t.abort()}catch{}};G$.on("SIGINT",K0);let R0,a=!1,_0=async()=>{try{let m=await fetch(`${q}/build/status?job_id=${encodeURIComponent(u.job_id)}&app_id=${encodeURIComponent(D)}&platform=${w}`,{headers:{authorization:$.apikey}});if(!m.ok)return null;let b=await m.json(),B0=b.status?.toLowerCase?.()??"";if(a)Z.info(`Build status: ${B0||b.status}`);if(QO.has(B0))return B0;return null}catch{return null}},C=null;try{C=await Um0(X,Q,d.logs_url,d.logs_token,_0,t.signal,()=>{a=!0},X&&!J&&!$.outputRecord?void 0:r)}finally{G$.removeListener("SIGINT",K0)}if(C){if(R0=C,QO.has(C))await _0().catch(()=>{})}else R0=await Zm0(q,u.job_id,D,w,$.apikey,X,a,t.signal,Z);if(R0==="succeeded")Z.success("Build completed successfully!");else if(R0==="failed")Z.error("Build failed");else Z.warn(`Build finished with status: ${R0}`);if($.outputRecord&&R0==="succeeded")try{let m=await W60($.outputRecord,{jobId:u.job_id,appId:D,platform:w,buildMode:$.buildMode??"release",status:R0,outputUrl:U},(b)=>Z.warn(b));if(Z.success(`Build output record written to ${$.outputRecord}`),!m.outputUrl)Z.info("ℹ️ Record contains no download URL — pass --output-upload to publish one.");if(m.qrCodePngPath)Z.info(`ℹ️ QR code PNG written to ${m.qrCodePngPath}`)}catch(m){Z.warn(`Failed to write build output record to ${$.outputRecord}: ${m instanceof Error?m.message:String(m)}`)}if(R0==="failed"&&P&&h){let m=gD0({isTTY:G$.stdout.isTTY===!0,aiAnalyticsFlag:$.aiAnalytics===!0}),b="⚠ AI can make mistakes. Always verify the diagnosis against the full log before applying the suggested fix.",B0=(a0)=>{if(a0==="ok")return"success";if(a0==="already_analyzed")return"already_analyzed";if(a0==="too_big")return"too_big";return"error"},I0=async(a0,ED)=>{await nG({apikey:$.apikey,orgId:B,appId:D,platform:w,jobId:h,choice:a0,triggeredBy:ED});let w$=`${G$.env.CAPGO_AI_LOG_BASE_DIR||"/tmp/capgo-builds"}/${h}.log`,oJ="";try{let{readFile:z3}=await import("node:fs/promises");oJ=await z3(w$,"utf8")}catch(z3){let F90=z3 instanceof Error?z3.message:String(z3);G$.stderr.write(`AI analysis skipped: could not read captured log at ${w$}: ${F90}
556
556
  `);return}let k9=G$.stdout.isTTY===!0,Y4=k9?G$.stdout:G$.stderr,V3=k9?RD():null;V3?.start("Analyzing build log with Capgo AI (Kimi K2.5)");let q$;try{q$=await cD0({apiHost:q,apikey:$.apikey,jobId:h,appId:D,logs:oJ})}finally{V3?.stop("Capgo AI finished")}let Q90=B0(q$.kind);if(await nD0({apikey:$.apikey,orgId:B,appId:D,platform:w,jobId:h,result:Q90,errorStatus:q$.kind==="error"?q$.status:void 0}),q$.kind==="ok")Y4.write(`
557
557
  --- AI analysis ---
558
558
  ${dD0(q$.analysis,k9)}
@@ -571,7 +571,7 @@ ${"⚠ AI can make mistakes. Always verify the diagnosis against the full log be
571
571
  `)},KD=async()=>{await nG({apikey:$.apikey,orgId:B,appId:D,platform:w,jobId:h,choice:"skip",triggeredBy:m==="auto_upload"||m==="skip"?"ci_flag":"menu"})};async function gD(){if(await hI(h)){G$.stdout.write(`Log too big for AI analysis (>10 MB). Offering local AI instead.
572
572
  `),await C0();return}let a0=await b1({message:"Choose AI analysis",options:[{value:"capgo",label:"Capgo AI (Kimi K2.5)"},{value:"local",label:"Local AI (write prompt to file)"},{value:"skip",label:"Skip"}]});if(a0==="capgo")await I0("capgo_ai","menu");else if(a0==="local")await C0();else await KD()}try{if(m==="skip")await KD();else if(m==="auto_upload")if(await hI(h))G$.stderr.write(`Log too big for AI analysis (>10 MB), skipping
573
573
  `),await KD();else await I0("auto_upload","ci_flag");else if(m==="ask_then_menu"){let a0=await uD({message:"Build failed. Run AI analysis?"});if(!a0||typeof a0==="symbol")await KD();else await gD()}else await gD()}catch(a0){G$.stderr.write(`AI analysis flow errored: ${a0 instanceof Error?a0.message:String(a0)}
574
- `)}}let T=((Date.now()-Y)/1000).toFixed(2);return await A0($.apikey,{channel:"native-builder",event:R0==="succeeded"?"Build succeeded":"Build failed",icon:R0==="succeeded"?"✅":"❌",user_id:B,tags:{"app-id":D,platform:w,status:R0||"unknown",time:T},notify:!1}).catch(),{success:R0==="succeeded",jobId:u.job_id,uploadUrl:u.upload_url,status:R0||d.status||u.status}}finally{await tg0(f,{recursive:!0,force:!0})}}catch(G){let O=G instanceof Error?G.message:String(G);return Z.error(O),{success:!1,error:O}}}k0();T6();I1();f0();async function Vm0(D,$,X,J){for await(let Y of D){if(!J)z.warn(`Removing ${Y.name} created on ${n7(Y.created_at)}`);await TG($,X,Y.name)}}function zm0(D,$,X){let J=[];for(let Y of D??[]){let Q=QD(Y.name);if(Xw(Q,$)&&q8(Q,X))J.push(Y)}return J}async function A60(D,$,X=!1){if(!X)L0("Cleanup versions in Capgo");await OD(),$.apikey=$.apikey||H0();let{bundle:J,keep:Y=4}=$,Q=$.force||!1,F=$.ignoreChannel||!1,U=await j0();if(D=p0(D,U?.config),!$.apikey){if(!X)z.error("Missing API key, you need to provide an API key to delete your app");throw Error("Missing API key")}if(!D){if(!X)z.error("Missing argument, you need to provide a appid, or be in a capacitor project");throw Error("Missing appId")}let Z=await S0($.apikey,$.supaHost,$.supaAnon);if(await oD(Z,D,X),await d0(Z,$.apikey),await hD(Z,$.apikey,D,3,X,!0),!X)z.info("Querying all available versions in Capgo");let G=await CG(Z,D),O=await B00(Z,D);if(!X)z.info(`Total active versions in Capgo: ${G?.length??0}`);if(!G?.length){if(!X)z.error("No versions found, aborting cleanup");throw Error("No versions found")}if(J){let W=QD(J),B=C3(W,"major");if(!X)z.info(`Querying available versions in Capgo between ${S$(W)} and ${S$(B)}`);if(G=zm0(G,W,B),!X)z.info(`Active versions in Capgo between ${S$(W)} and ${S$(B)}: ${G?.length??0}`)}let w=[],q=0;for(let W of G){let B=O.find((H)=>H===W.id);if(q<Y||B&&!F)W.keep=B?"✅ (Linked to channel)":"✅",q+=1;else W.keep="❌",w.push(W)}if(!w.length){if(!X)z.warn("Nothing to be removed, aborting removal...");return{removed:0,kept:q}}if(!X)W00(G);if(!Q)if(!X){let W=await uD({message:"Do you want to continue removing the versions specified?"});if(g0(W)||!W)throw z.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(!X)z.success("You have confirmed removal, removing versions now");if(await Vm0(w,Z,D,X),!X)M0("Done ✅");return{removed:w.length,kept:q}}k0();R6();f0();async function E60(D,$,X=!1){if(!X)L0("Check compatibility");let J={...$,apikey:$.apikey||H0()},Y=D?void 0:await j0(),Q=p0(D,Y?.config),F=J.channel;if(!F){if(!X)z.error("Missing argument, you need to provide a channel");throw Error("Missing channel")}if(!J.apikey){if(!X)z.error("Missing API key, you need to provide an API key to access Capgo Cloud metadata");throw Error("Missing API key")}if(!Q){if(!X)z.error("Missing argument, you need to provide an appId, or be in a capacitor project");throw Error("Missing appId")}let U=await S0(J.apikey,J.supaHost,J.supaAnon);await oD(U,Q,X),await hD(U,J.apikey,Q,1,X,!0);let Z=await jG(U,Q,F,J.packageJson,J.nodeModules),G=Z.finalCompatibility.some((O)=>!o4(O));if(!X){let O=new xD;O.headers=["Package","Local","Remote","Status","Details"],O.theme=xD.roundTheme,O.rows=[];let w=J.text?"OK":"✅",q=J.text?"FAIL":"❌";for(let W of Z.finalCompatibility){let{name:B,localVersion:H,remoteVersion:L}=W,M=N9(W),I=M.compatible?w:q;O.rows.push([B,H||"-",L||"-",I,M.message])}if(z.success("Compatibility Check Results"),z.info(O.toString()),G){let W=Z.finalCompatibility.filter((B)=>!o4(B)).length;z.warn(`
574
+ `)}}let T=((Date.now()-Y)/1000).toFixed(2);return await A0($.apikey,{channel:"native-builder",event:R0==="succeeded"?"Build succeeded":"Build failed",icon:R0==="succeeded"?"✅":"❌",org_id:B,tracking_version:2,tags:{"app-id":D,platform:w,status:R0||"unknown",time:T},notify:!1}).catch(),{success:R0==="succeeded",jobId:u.job_id,uploadUrl:u.upload_url,status:R0||d.status||u.status}}finally{await tg0(f,{recursive:!0,force:!0})}}catch(G){let O=G instanceof Error?G.message:String(G);return Z.error(O),{success:!1,error:O}}}k0();T6();I1();f0();async function Vm0(D,$,X,J){for await(let Y of D){if(!J)z.warn(`Removing ${Y.name} created on ${n7(Y.created_at)}`);await TG($,X,Y.name)}}function zm0(D,$,X){let J=[];for(let Y of D??[]){let Q=QD(Y.name);if(Xw(Q,$)&&q8(Q,X))J.push(Y)}return J}async function A60(D,$,X=!1){if(!X)L0("Cleanup versions in Capgo");await OD(),$.apikey=$.apikey||H0();let{bundle:J,keep:Y=4}=$,Q=$.force||!1,F=$.ignoreChannel||!1,U=await j0();if(D=p0(D,U?.config),!$.apikey){if(!X)z.error("Missing API key, you need to provide an API key to delete your app");throw Error("Missing API key")}if(!D){if(!X)z.error("Missing argument, you need to provide a appid, or be in a capacitor project");throw Error("Missing appId")}let Z=await S0($.apikey,$.supaHost,$.supaAnon);if(await oD(Z,D,X),await d0(Z,$.apikey),await hD(Z,$.apikey,D,3,X,!0),!X)z.info("Querying all available versions in Capgo");let G=await CG(Z,D),O=await B00(Z,D);if(!X)z.info(`Total active versions in Capgo: ${G?.length??0}`);if(!G?.length){if(!X)z.error("No versions found, aborting cleanup");throw Error("No versions found")}if(J){let W=QD(J),B=C3(W,"major");if(!X)z.info(`Querying available versions in Capgo between ${S$(W)} and ${S$(B)}`);if(G=zm0(G,W,B),!X)z.info(`Active versions in Capgo between ${S$(W)} and ${S$(B)}: ${G?.length??0}`)}let w=[],q=0;for(let W of G){let B=O.find((H)=>H===W.id);if(q<Y||B&&!F)W.keep=B?"✅ (Linked to channel)":"✅",q+=1;else W.keep="❌",w.push(W)}if(!w.length){if(!X)z.warn("Nothing to be removed, aborting removal...");return{removed:0,kept:q}}if(!X)W00(G);if(!Q)if(!X){let W=await uD({message:"Do you want to continue removing the versions specified?"});if(g0(W)||!W)throw z.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(!X)z.success("You have confirmed removal, removing versions now");if(await Vm0(w,Z,D,X),!X)M0("Done ✅");return{removed:w.length,kept:q}}k0();R6();f0();async function E60(D,$,X=!1){if(!X)L0("Check compatibility");let J={...$,apikey:$.apikey||H0()},Y=D?void 0:await j0(),Q=p0(D,Y?.config),F=J.channel;if(!F){if(!X)z.error("Missing argument, you need to provide a channel");throw Error("Missing channel")}if(!J.apikey){if(!X)z.error("Missing API key, you need to provide an API key to access Capgo Cloud metadata");throw Error("Missing API key")}if(!Q){if(!X)z.error("Missing argument, you need to provide an appId, or be in a capacitor project");throw Error("Missing appId")}let U=await S0(J.apikey,J.supaHost,J.supaAnon);await oD(U,Q,X),await hD(U,J.apikey,Q,1,X,!0);let Z=await jG(U,Q,F,J.packageJson,J.nodeModules),G=Z.finalCompatibility.some((O)=>!o4(O));if(!X){let O=new xD;O.headers=["Package","Local","Remote","Status","Details"],O.theme=xD.roundTheme,O.rows=[];let w=J.text?"OK":"✅",q=J.text?"FAIL":"❌";for(let W of Z.finalCompatibility){let{name:B,localVersion:H,remoteVersion:L}=W,M=N9(W),I=M.compatible?w:q;O.rows.push([B,H||"-",L||"-",I,M.message])}if(z.success("Compatibility Check Results"),z.info(O.toString()),G){let W=Z.finalCompatibility.filter((B)=>!o4(B)).length;z.warn(`
575
575
  ${W} package(s) are incompatible with channel "${F}"`),z.warn("An app store update may be required for these changes to take effect.")}else z.success(`
576
576
  All packages are compatible with channel "${F}"`)}return{finalCompatibility:Z.finalCompatibility,hasIncompatible:G,resolvedAppId:Q,channel:F}}k0();T6();import{existsSync as rA,readFileSync as x60,writeFileSync as Em0}from"node:fs";import{cwd as Rm0}from"node:process";import{Buffer as D4}from"node:buffer";import{constants as Lm0,createCipheriv as Mm0,createDecipheriv as Im0,generateKeyPairSync as Am0,privateEncrypt as iA,publicDecrypt as pA,randomBytes as R60}from"node:crypto";var j60="aes-128-cbc",$4="base64",UO="hex",O3=Lm0.RSA_PKCS1_PADDING;function ZO(D){let $=R60(16),X=R60(16),J=$.toString($4),Y=iA({key:D,padding:O3},X).toString($4);return{sessionKey:X,ivSessionKey:`${J}:${Y}`}}function w3(D,$,X){let[J]=X.split(":"),Y=D4.from(J,$4),Q=Mm0(j60,$,Y);return Q.setAutoPadding(!0),D4.concat([Q.update(D),Q.final()])}function T60(D,$,X){let[J,Y]=$.split(":"),Q=pA({key:X,padding:O3},D4.from(Y,$4)),F=D4.from(J,$4),U=Im0(j60,Q,F);return U.setAutoPadding(!0),D4.concat([U.update(D),U.final()])}function q3(D,$){return iA({key:$,padding:O3},D4.from(D,$4)).toString($4)}function W3(D,$){return iA({key:$,padding:O3},D4.from(D,UO)).toString(UO)}function C60(D,$){return pA({key:$,padding:O3},D4.from(D,$4)).toString($4)}function S60(D,$){return pA({key:$,padding:O3},D4.from(D,UO)).toString(UO)}function P60(){let{publicKey:D,privateKey:$}=Am0("rsa",{modulusLength:2048});return{publicKey:D.export({type:"pkcs1",format:"pem"}),privateKey:$.export({type:"pkcs1",format:"pem"})}}function u60(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)}I1();R2();f0();var jm0="5.30.0",Tm0="6.30.0",Cm0="7.30.0";function Sm0(D,$){let X=D.key||o6,J=$.config.plugins?.CapacitorUpdater?.publicKey;if(rA(X))J=x60(X,"utf8");else if(!J&&D.keyData)J=D.keyData;return{publicKey:J,fallbackKeyPath:X}}async function v60(D,$,X,J=!1){if(!J)L0("Decrypt zip file");try{if(await OD(),!rA(D)){let w=`Zip not found at the path ${D}`;if(!J)z.error(w);throw Error(w)}let Y=await j0();if(!X.key&&!rA(o6)&&!Y.config.plugins?.CapacitorUpdater?.publicKey){let w=`Public Key not found at the path ${o6} or in ${Y.path}`;if(!J)z.error(w);throw Error(w)}let{publicKey:Q,fallbackKeyPath:F}=Sm0(X,Y);if(!Q){let w=`Cannot find public key ${F} or as keyData option or in ${Y.path}`;if(!J)z.error(w);throw Error(w)}let U=x60(D),Z=T60(U,$,X.keyData??Q),G=`${D}_decrypted.zip`;if(Em0(G,Z),!J)z.info(`Decrypted zip file at ${G}`);let O;if(X.checksum){let w=await L4(Z,"sha256"),q=O1(Rm0()),W=await a1("@capgo/capacitor-updater",q,X.packageJson),B=!1,H;try{H=W?QD(W):void 0}catch{H=void 0}if(H)B=!E$(H,jm0,Tm0,Cm0);if(!J)z.info(`Decrypting checksum with ${B?"V3":"V2"} (based on updater version ${W||"unknown"})`);let L=B?S60(X.checksum,X.keyData??Q):C60(X.checksum,X.keyData??Q);if(O=w===L,!O){let M=`Checksum does not match ${w} !== ${L}`;if(!J)z.error(M);throw Error(M)}if(!J)z.info("Checksum matches")}if(!J)M0("✅ done");return{outputPath:G,checksumMatches:O}}catch(Y){if(!J)z.error(`Error decrypting zip file ${s(Y)}`);throw Y instanceof Error?Y:Error(String(Y))}}k0();f0();async function _60(D,$,X,J=!1){if(!J)L0("Delete bundle");X.apikey=X.apikey||H0();let Y=await j0();if($=p0($,Y?.config),!X.apikey){if(!J)z.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!$){if(!J)z.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}if(!D){if(!J)z.error("Missing argument, you need to provide a bundleId, or be in a capacitor project");throw Error("Missing bundleId")}let Q=await S0(X.apikey,X.supaHost,X.supaAnon);if(await oD(Q,$,J),await d0(Q,X.apikey),await hD(Q,X.apikey,$,3,J,!0),!J)z.info(`Deleting bundle ${$}@${D} from Capgo`),z.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever");await TG(Q,$,D);let F=await sD(Q,$);if(await A0(X.apikey,{channel:"app",event:"Bundle Deleted",icon:"\uD83D\uDDD1️",user_id:F,tags:{"app-id":$,bundle:D},notify:!1,notifyConsole:!0}).catch(()=>{}),!J)z.success(`Bundle ${$}@${D} deleted in Capgo`),M0("Done");return!0}k0();T6();import{existsSync as tA,readFileSync as f60,writeFileSync as Pm0}from"node:fs";import{cwd as um0}from"node:process";I1();f0();var xm0="5.30.0",vm0="6.30.0",_m0="7.30.0";function bJ(D){console.error(s(D))}async function k60(D,$,X,J=!1){let{json:Y}=X,Q=!Y&&!J;if(Q)L0("Encryption"),await OD();try{let F=await j0(),U=!!F.config.plugins?.CapacitorUpdater?.privateKey,Z=!!F.config.plugins?.CapacitorUpdater?.publicKey;if(U&&Q)z.warning("There is still a privateKey in the config");if(!tA(D)){let V=`Zip not found at the path ${D}`;if(!J)if(Y)bJ({error:"zip_not_found"});else z.error(`Error: ${V}`);throw Error(V)}if(!Z){if(!J)if(Y)bJ({error:"missing_public_key"});else z.warning("Warning: Missing Public Key in config");throw Error("Missing public key in config")}let G=X.key||U$,O=X.keyData||"";if(!tA(G)&&!O){if(!J)if(Y)bJ({error:"missing_key"});else z.warning(`Cannot find a private key at ${G} or as a keyData option`),z.error("Error: Missing key");throw Error("Missing private key")}else if(tA(G))O=f60(G,"utf8");if(O&&!O.startsWith("-----BEGIN RSA PRIVATE KEY-----")){if(!J)if(Y)bJ({error:"invalid_private_key"});else z.error("The private key provided is not a valid RSA Private key");throw Error("Invalid private key format")}let w=f60(D),{sessionKey:q,ivSessionKey:W}=ZO(O),B=w3(w,q,W),H=O1(um0()),L=await a1("@capgo/capacitor-updater",H,X.packageJson),M=!1,I;try{I=L?QD(L):void 0}catch{I=void 0}if(I)M=!E$(I,xm0,vm0,_m0);let K=M?W3($,O):q3($,O);if(Q)z.info(`Encrypting checksum with ${M?"V3":"V2"} (based on updater version ${L||"unknown"})`);let N=`${D}_encrypted.zip`;if(Pm0(N,B),!J)if(Y)console.log(JSON.stringify({checksum:K,filename:N,ivSessionKey:W},null,2));else z.success(`Encoded Checksum: ${K}`),z.success(`ivSessionKey: ${W}`),z.success(`Encrypted zip saved at ${N}`),M0("Done ✅");return{checksum:K,filename:N,ivSessionKey:W}}catch(F){if(!J)if(X.json)bJ(F);else z.error(`Error encrypting zip file ${s(F)}`);throw F instanceof Error?F:Error(String(F))}}import{randomUUID as Hn0}from"node:crypto";import{existsSync as AO,readFileSync as Kn0}from"node:fs";import{cwd as PE}from"node:process";class oA extends TransformStream{outChunkSize;constructor(D){let $=new Uint8Array(D),X=0;super({transform(J,Y){let Q=0;while(Q<J.length){let F=D-X,U=Math.min(F,J.length-Q);if($.set(J.subarray(Q,Q+U),X),Q+=U,X+=U,X===D)Y.enqueue($),$=new Uint8Array(D),X=0}},flush(J){if(X>0)J.enqueue($.subarray(0,X))}}),this.outChunkSize=D}}function U8(D){return D=D.trim(),D=D.replace(/<!--[\s\S]*?-->/g,""),$();function $(){return{declaration:X(),root:J()}}function X(){if(!Z(/^<\?xml\s*/))return;let q={attributes:{}};while(!(G()||O("?>"))){let W=Q();if(!W)return q;q.attributes[W.name]=W.value}return Z(/\?>\s*/),q}function J(){let w=Z(/^<([\w-:.]+)\s*/);if(!w)return;let q={name:w[1],attributes:{},children:[]};while(!(G()||O(">")||O("?>")||O("/>"))){let B=Q();if(!B)return q;q.attributes[B.name]=B.value}if(Z(/^\s*\/>\s*/))return q;Z(/\??>\s*/),q.content=Y();let W;while(W=J())q.children.push(W);return Z(/^<\/[\w-:.]+>\s*/),q}function Y(){let w=Z(/^([^<]*)/);if(w)return U(w[1]);return""}function Q(){let w=Z(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(!w)return;return{name:w[1],value:U(F(w[2]))}}function F(w){return w.replace(/^['"]|['"]$/g,"")}function U(w){return w.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}function Z(w){let q=D.match(w);if(!q)return;return D=D.slice(q[0].length),q}function G(){return D.length===0}function O(w){return D.startsWith(w)}}class X4 extends Error{}class y1 extends X4{}class GO extends X4{}class aA extends X4{bucketName;constructor(D){super(`Invalid bucket name: ${D}`),this.bucketName=D}}class J4 extends X4{objectName;constructor(D){super(`Invalid object name: ${D}`),this.objectName=D}}class T9 extends X4{constructor(){super("accessKey is required")}}class hJ extends X4{constructor(){super("secretKey is required")}}class OO extends X4{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}}class Z8 extends X4{statusCode;code;key;bucketName;resource;region;constructor(D,$,X,J={}){super(X),this.statusCode=D,this.code=$,this.key=J.key,this.bucketName=J.bucketName,this.resource=J.resource,this.region=J.region}}async function y60(D){try{let X=U8(await D.text()).root;if(X?.name!=="Error")throw Error("Invalid root, expected <Error>");let J=X.children.find((G)=>G.name==="Code")?.content??"UnknownErrorCode",Y=X.children.find((G)=>G.name==="Message")?.content??"The error message could not be determined.",Q=X.children.find((G)=>G.name==="Key")?.content,F=X.children.find((G)=>G.name==="BucketName")?.content,U=X.children.find((G)=>G.name==="Resource")?.content,Z=X.children.find((G)=>G.name==="Region")?.content;return new Z8(D.status,J,Y,{key:Q,bucketName:F,resource:U,region:Z})}catch{return new Z8(D.status,"UnrecognizedError",`Error: Unexpected response code ${D.status} ${D.statusText}. Unable to parse response as XML.`)}}function b60(D){if(typeof D!=="number"||isNaN(D))return!1;return D>=1&&D<=65535}function h60(D){if(typeof D!=="string")return!1;if(D.length>255)return!1;if(D.includes(".."))return!1;return Boolean(D.match(/^[a-zA-Z0-9][a-zA-Z0-9.-]+[a-zA-Z0-9]$/))}function G8(D){if(!fm0(D))return!1;if(D.length===0)return!1;return!0}function fm0(D){if(typeof D!=="string")return!1;if(D.length>1024)return!1;return!0}function gJ(D){return Array.from(D).map(($)=>$.toString(16).padStart(2,"0")).join("")}function C9(D=""){let $={'"':"","&quot;":"","&#34;":"","&QUOT;":"","&#x00022":""};return D.replace(/^("|&quot;|&#34;)|("|&quot;|&#34;)$/g,(X)=>$[X])}function eA(D){return D.get("x-amz-version-id")??null}function S9(D){let $=D.toISOString();return $.slice(0,4)+$.slice(5,7)+$.slice(8,13)+$.slice(14,16)+$.slice(17,19)+"Z"}function DE(D){return S9(D).slice(0,8)}function $E(D,$){return`${DE($)}/${D}/s3/aws4_request`}async function wO(D){if(!(D instanceof Uint8Array))D=new TextEncoder().encode(D);return gJ(new Uint8Array(await crypto.subtle.digest("SHA-256",D)))}var km0=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"];class XE extends WritableStream{getResult;constructor({client:D,bucketName:$,objectName:X,partSize:J,metadata:Y}){let Q,F=1,U,Z=[],G,O=[];super({start(){},async write(w,q){let B=F++;try{if(B==1&&w.length<J){let M=await D.makeRequest({method:"PUT",headers:new Headers({...Y,"Content-Length":String(w.length)}),bucketName:$,objectName:X,payload:w});Q={etag:C9(M.headers.get("etag")??void 0),versionId:eA(M.headers)};return}if(B===1)U=(await ym0({client:D,bucketName:$,objectName:X,metadata:Y})).uploadId;let H={"Content-Length":String(w.length)};for(let M of km0){let I=Y[M];if(I)H[M]=I}let L=D.makeRequest({method:"PUT",query:{partNumber:B.toString(),uploadId:U},headers:new Headers(H),bucketName:$,objectName:X,payload:w}).then((M)=>{let I=M.headers.get("etag")??"";if(I)I=I.replace(/^"/,"").replace(/"$/,"");return Z.push({part:B,etag:I}),M});O.push(L.catch((M)=>{if(!G)G=M}))}catch(H){throw H}},async close(){if(Q);else if(U){if(await Promise.all(O),G)throw G;Z.sort((w,q)=>w.part>q.part?1:-1),Q=await bm0({client:D,bucketName:$,objectName:X,uploadId:U,etags:Z})}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 ym0(D){let X=new Headers(D.metadata),J="uploads",Q=await(await D.client.makeRequest({method:"POST",bucketName:D.bucketName,objectName:D.objectName,query:"uploads",headers:X,returnBody:!0})).text(),F=U8(Q).root;if(!F||F.name!=="InitiateMultipartUploadResult")throw Error(`Unexpected response: ${Q}`);let U=F.children.find((Z)=>Z.name==="UploadId")?.content;if(!U)throw Error(`Unable to get UploadId from response: ${Q}`);return{uploadId:U}}async function bm0({client:D,bucketName:$,objectName:X,uploadId:J,etags:Y}){let Q=`
577
577
  <CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
@@ -56,6 +56,14 @@ interface TrackOptions {
56
56
  * example: "user-123"
57
57
  */
58
58
  user_id?: string;
59
+ /**
60
+ * Organization ID for actor-scoped tracking.
61
+ */
62
+ org_id?: string;
63
+ /**
64
+ * Tracking payload contract version.
65
+ */
66
+ tracking_version?: number;
59
67
  /**
60
68
  * Event icon (emoji)
61
69
  * must be a single emoji
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
3
  "type": "module",
4
- "version": "7.112.3",
4
+ "version": "7.112.5",
5
5
  "description": "A CLI to upload to capgo servers",
6
6
  "author": "Martin martin@capgo.app",
7
7
  "license": "Apache 2.0",