@capgo/cli 7.83.0 → 7.83.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/dist/package.json +1 -1
- package/dist/src/sdk.js +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -24,7 +24,7 @@ Expecting one of '${X.join("', '")}'`);if(this._lifeCycleHooks[$])this._lifeCycl
|
|
|
24
24
|
`),this.outputHelp({error:!0});let X=D||{},J=X.exitCode||1,Y=X.code||"commander.error";this._exit(J,Y,$)}_parseOptionsEnv(){this.options.forEach(($)=>{if($.envVar&&$.envVar in B$.env){let D=$.attributeName();if(this.getOptionValue(D)===void 0||["default","config","env"].includes(this.getOptionValueSource(D)))if($.required||$.optional)this.emit(`optionEnv:${$.name()}`,B$.env[$.envVar]);else this.emit(`optionEnv:${$.name()}`)}})}_parseOptionsImplied(){let $=new Ft(this.options),D=(X)=>{return this.getOptionValue(X)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(X))};this.options.filter((X)=>X.implied!==void 0&&D(X.attributeName())&&$.valueFromOption(this.getOptionValue(X.attributeName()),X)).forEach((X)=>{Object.keys(X.implied).filter((J)=>!D(J)).forEach((J)=>{this.setOptionValueWithSource(J,X.implied[J],"implied")})})}missingArgument($){let D=`error: missing required argument '${$}'`;this.error(D,{code:"commander.missingArgument"})}optionMissingArgument($){let D=`error: option '${$.flags}' argument missing`;this.error(D,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue($){let D=`error: required option '${$.flags}' not specified`;this.error(D,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption($,D){let X=(Q)=>{let G=Q.attributeName(),W=this.getOptionValue(G),B=this.options.find((U)=>U.negate&&G===U.attributeName()),H=this.options.find((U)=>!U.negate&&G===U.attributeName());if(B&&(B.presetArg===void 0&&W===!1||B.presetArg!==void 0&&W===B.presetArg))return B;return H||Q},J=(Q)=>{let G=X(Q),W=G.attributeName();if(this.getOptionValueSource(W)==="env")return`environment variable '${G.envVar}'`;return`option '${G.flags}'`},Y=`error: ${J($)} cannot be used with ${J(D)}`;this.error(Y,{code:"commander.conflictingOption"})}unknownOption($){if(this._allowUnknownOption)return;let D="";if($.startsWith("--")&&this._showSuggestionAfterError){let J=[],Y=this;do{let Q=Y.createHelp().visibleOptions(Y).filter((G)=>G.long).map((G)=>G.long);J=J.concat(Q),Y=Y.parent}while(Y&&!Y._enablePositionalOptions);D=WR($,J)}let X=`error: unknown option '${$}'${D}`;this.error(X,{code:"commander.unknownOption"})}_excessArguments($){if(this._allowExcessArguments)return;let D=this.registeredArguments.length,X=D===1?"":"s",Y=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${D} argument${X} but got ${$.length}.`;this.error(Y,{code:"commander.excessArguments"})}unknownCommand(){let $=this.args[0],D="";if(this._showSuggestionAfterError){let J=[];this.createHelp().visibleCommands(this).forEach((Y)=>{if(J.push(Y.name()),Y.alias())J.push(Y.alias())}),D=WR($,J)}let X=`error: unknown command '${$}'${D}`;this.error(X,{code:"commander.unknownCommand"})}version($,D,X){if($===void 0)return this._version;this._version=$,D=D||"-V, --version",X=X||"output the version number";let J=this.createOption(D,X);return this._versionOptionName=J.attributeName(),this._registerOption(J),this.on("option:"+J.name(),()=>{this._outputConfiguration.writeOut(`${$}
|
|
25
25
|
`),this._exit(0,"commander.version",$)}),this}description($,D){if($===void 0&&D===void 0)return this._description;if(this._description=$,D)this._argsDescription=D;return this}summary($){if($===void 0)return this._summary;return this._summary=$,this}alias($){if($===void 0)return this._aliases[0];let D=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)D=this.commands[this.commands.length-1];if($===D._name)throw Error("Command alias can't be the same as its name");let X=this.parent?._findCommand($);if(X){let J=[X.name()].concat(X.aliases()).join("|");throw Error(`cannot add alias '${$}' to command '${this.name()}' as already have command '${J}'`)}return D._aliases.push($),this}aliases($){if($===void 0)return this._aliases;return $.forEach((D)=>this.alias(D)),this}usage($){if($===void 0){if(this._usage)return this._usage;let D=this.registeredArguments.map((X)=>{return Bt(X)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?D:[]).join(" ")}return this._usage=$,this}name($){if($===void 0)return this._name;return this._name=$,this}helpGroup($){if($===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=$,this}commandsGroup($){if($===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=$,this}optionsGroup($){if($===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=$,this}_initOptionGroup($){if(this._defaultOptionGroup&&!$.helpGroupHeading)$.helpGroup(this._defaultOptionGroup)}_initCommandGroup($){if(this._defaultCommandGroup&&!$.helpGroup())$.helpGroup(this._defaultCommandGroup)}nameFromFilename($){return this._name=l6.basename($,l6.extname($)),this}executableDir($){if($===void 0)return this._executableDir;return this._executableDir=$,this}helpInformation($){let D=this.createHelp(),X=this._getOutputContext($);D.prepareContext({error:X.error,helpWidth:X.helpWidth,outputHasColors:X.hasColors});let J=D.formatHelp(this,D);if(X.hasColors)return J;return this._outputConfiguration.stripColor(J)}_getOutputContext($){$=$||{};let D=!!$.error,X,J,Y;if(D)X=(G)=>this._outputConfiguration.writeErr(G),J=this._outputConfiguration.getErrHasColors(),Y=this._outputConfiguration.getErrHelpWidth();else X=(G)=>this._outputConfiguration.writeOut(G),J=this._outputConfiguration.getOutHasColors(),Y=this._outputConfiguration.getOutHelpWidth();return{error:D,write:(G)=>{if(!J)G=this._outputConfiguration.stripColor(G);return X(G)},hasColors:J,helpWidth:Y}}outputHelp($){let D;if(typeof $==="function")D=$,$=void 0;let X=this._getOutputContext($),J={error:X.error,write:X.write,command:this};this._getCommandAndAncestors().reverse().forEach((Q)=>Q.emit("beforeAllHelp",J)),this.emit("beforeHelp",J);let Y=this.helpInformation({error:X.error});if(D){if(Y=D(Y),typeof Y!=="string"&&!Buffer.isBuffer(Y))throw Error("outputHelp callback must return a string or a Buffer")}if(X.write(Y),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",J),this._getCommandAndAncestors().forEach((Q)=>Q.emit("afterAllHelp",J))}helpOption($,D){if(typeof $==="boolean"){if($){if(this._helpOption===null)this._helpOption=void 0;if(this._defaultOptionGroup)this._initOptionGroup(this._getHelpOption())}else this._helpOption=null;return this}if(this._helpOption=this.createOption($??"-h, --help",D??"display help for command"),$||D)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption($){return this._helpOption=$,this._initOptionGroup($),this}help($){this.outputHelp($);let D=Number(B$.exitCode??0);if(D===0&&$&&typeof $!=="function"&&$.error)D=1;this._exit(D,"commander.help","(outputHelp)")}addHelpText($,D){let X=["beforeAll","before","after","afterAll"];if(!X.includes($))throw Error(`Unexpected value for position to addHelpText.
|
|
26
26
|
Expecting one of '${X.join("', '")}'`);let J=`${$}Help`;return this.on(J,(Y)=>{let Q;if(typeof D==="function")Q=D({error:Y.error,command:Y.command});else Q=D;if(Q)Y.write(`${Q}
|
|
27
|
-
`)}),this}_outputHelpIfRequested($){let D=this._getHelpOption();if(D&&$.find((J)=>D.is(J)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function BR($){return $.map((D)=>{if(!D.startsWith("--inspect"))return D;let X,J="127.0.0.1",Y="9229",Q;if((Q=D.match(/^(--inspect(-brk)?)$/))!==null)X=Q[1];else if((Q=D.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(X=Q[1],/^\d+$/.test(Q[3]))Y=Q[3];else J=Q[3];else if((Q=D.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)X=Q[1],J=Q[3],Y=Q[4];if(X&&Y!=="0")return`${X}=${J}:${parseInt(Y)+1}`;return D})}function HK(){if(B$.env.NO_COLOR||B$.env.FORCE_COLOR==="0"||B$.env.FORCE_COLOR==="false")return!1;if(B$.env.FORCE_COLOR||B$.env.CLICOLOR_FORCE!==void 0)return!0;return}Kt.Command=UK;Kt.useColor=HK});var qR=T((Nt)=>{var{Argument:UR}=SQ(),{Command:FK}=HR(),{CommanderError:zt,InvalidArgumentError:FR}=k7(),{Help:wt}=QK(),{Option:KR}=GK();Nt.program=new FK;Nt.createCommand=($)=>new FK($);Nt.createOption=($,D)=>new KR($,D);Nt.createArgument=($,D)=>new UR($,D);Nt.Command=FK;Nt.Option=KR;Nt.Argument=UR;Nt.Help=wt;Nt.CommanderError=zt;Nt.InvalidArgumentError=FR;Nt.InvalidOptionArgumentError=FR});var _1;var I8=l(()=>{_1={name:"@capgo/cli",type:"module",version:"7.83.
|
|
27
|
+
`)}),this}_outputHelpIfRequested($){let D=this._getHelpOption();if(D&&$.find((J)=>D.is(J)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function BR($){return $.map((D)=>{if(!D.startsWith("--inspect"))return D;let X,J="127.0.0.1",Y="9229",Q;if((Q=D.match(/^(--inspect(-brk)?)$/))!==null)X=Q[1];else if((Q=D.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(X=Q[1],/^\d+$/.test(Q[3]))Y=Q[3];else J=Q[3];else if((Q=D.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)X=Q[1],J=Q[3],Y=Q[4];if(X&&Y!=="0")return`${X}=${J}:${parseInt(Y)+1}`;return D})}function HK(){if(B$.env.NO_COLOR||B$.env.FORCE_COLOR==="0"||B$.env.FORCE_COLOR==="false")return!1;if(B$.env.FORCE_COLOR||B$.env.CLICOLOR_FORCE!==void 0)return!0;return}Kt.Command=UK;Kt.useColor=HK});var qR=T((Nt)=>{var{Argument:UR}=SQ(),{Command:FK}=HR(),{CommanderError:zt,InvalidArgumentError:FR}=k7(),{Help:wt}=QK(),{Option:KR}=GK();Nt.program=new FK;Nt.createCommand=($)=>new FK($);Nt.createOption=($,D)=>new KR($,D);Nt.createArgument=($,D)=>new UR($,D);Nt.Command=FK;Nt.Option=KR;Nt.Argument=UR;Nt.Help=wt;Nt.CommanderError=zt;Nt.InvalidArgumentError=FR;Nt.InvalidOptionArgumentError=FR});var _1;var I8=l(()=>{_1={name:"@capgo/cli",type:"module",version:"7.83.1",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && bun build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:build-zip-filter":"bun test/test-build-zip-filter.mjs","test:checksum":"bun test/test-checksum-algorithm.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:"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:build-zip-filter && bun run test:checksum && bun run test:esm-sdk && bun run test:mcp && bun run test:version-detection && bun run test:platform-paths && bun run test:payload-split"},devDependencies:{"@antfu/eslint-config":"^7.0.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^1.0.0","@modelcontextprotocol/sdk":"^1.25.3","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^25.0.0","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",eslint:"^9.38.0","git-format-staged":"4.0.1",husky:"^9.1.7","is-wsl":"^3.1.0",micromatch:"^4.0.8",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3",partysocket:"^1.1.11",ws:"^8.18.3",zod:"^4.3.6"}}});var qK=T((SI0,KK)=>{var _Q=process||{},zR=_Q.argv||[],CQ=_Q.env||{},vt=!(!!CQ.NO_COLOR||zR.includes("--no-color"))&&(!!CQ.FORCE_COLOR||zR.includes("--color")||_Q.platform==="win32"||(_Q.stdout||{}).isTTY&&CQ.TERM!=="dumb"||!!CQ.CI),Ct=($,D,X=$)=>(J)=>{let Y=""+J,Q=Y.indexOf(D,$.length);return~Q?$+_t(Y,D,X,Q)+D:$+Y+D},_t=($,D,X,J)=>{let Y="",Q=0;do Y+=$.substring(Q,J)+X,Q=J+D.length,J=$.indexOf(D,Q);while(~J);return Y+$.substring(Q)},wR=($=vt)=>{let D=$?Ct:()=>String;return{isColorSupported:$,reset:D("\x1B[0m","\x1B[0m"),bold:D("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:D("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:D("\x1B[3m","\x1B[23m"),underline:D("\x1B[4m","\x1B[24m"),inverse:D("\x1B[7m","\x1B[27m"),hidden:D("\x1B[8m","\x1B[28m"),strikethrough:D("\x1B[9m","\x1B[29m"),black:D("\x1B[30m","\x1B[39m"),red:D("\x1B[31m","\x1B[39m"),green:D("\x1B[32m","\x1B[39m"),yellow:D("\x1B[33m","\x1B[39m"),blue:D("\x1B[34m","\x1B[39m"),magenta:D("\x1B[35m","\x1B[39m"),cyan:D("\x1B[36m","\x1B[39m"),white:D("\x1B[37m","\x1B[39m"),gray:D("\x1B[90m","\x1B[39m"),bgBlack:D("\x1B[40m","\x1B[49m"),bgRed:D("\x1B[41m","\x1B[49m"),bgGreen:D("\x1B[42m","\x1B[49m"),bgYellow:D("\x1B[43m","\x1B[49m"),bgBlue:D("\x1B[44m","\x1B[49m"),bgMagenta:D("\x1B[45m","\x1B[49m"),bgCyan:D("\x1B[46m","\x1B[49m"),bgWhite:D("\x1B[47m","\x1B[49m"),blackBright:D("\x1B[90m","\x1B[39m"),redBright:D("\x1B[91m","\x1B[39m"),greenBright:D("\x1B[92m","\x1B[39m"),yellowBright:D("\x1B[93m","\x1B[39m"),blueBright:D("\x1B[94m","\x1B[39m"),magentaBright:D("\x1B[95m","\x1B[39m"),cyanBright:D("\x1B[96m","\x1B[39m"),whiteBright:D("\x1B[97m","\x1B[39m"),bgBlackBright:D("\x1B[100m","\x1B[49m"),bgRedBright:D("\x1B[101m","\x1B[49m"),bgGreenBright:D("\x1B[102m","\x1B[49m"),bgYellowBright:D("\x1B[103m","\x1B[49m"),bgBlueBright:D("\x1B[104m","\x1B[49m"),bgMagentaBright:D("\x1B[105m","\x1B[49m"),bgCyanBright:D("\x1B[106m","\x1B[49m"),bgWhiteBright:D("\x1B[107m","\x1B[49m")}};KK.exports=wR();KK.exports.createColors=wR});var zK=T((PI0,NR)=>{var VK={to($,D){if(!D)return`\x1B[${$+1}G`;return`\x1B[${D+1};${$+1}H`},move($,D){let X="";if($<0)X+=`\x1B[${-$}D`;else if($>0)X+=`\x1B[${$}C`;if(D<0)X+=`\x1B[${-D}A`;else if(D>0)X+=`\x1B[${D}B`;return X},up:($=1)=>`\x1B[${$}A`,down:($=1)=>`\x1B[${$}B`,forward:($=1)=>`\x1B[${$}C`,backward:($=1)=>`\x1B[${$}D`,nextLine:($=1)=>"\x1B[E".repeat($),prevLine:($=1)=>"\x1B[F".repeat($),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},xt={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},bt={screen:"\x1B[2J",up:($=1)=>"\x1B[1J".repeat($),down:($=1)=>"\x1B[J".repeat($),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines($){let D="";for(let X=0;X<$;X++)D+=this.line+(X<$-1?VK.up():"");if($)D+=VK.left;return D}};NR.exports={cursor:VK,scroll:xt,erase:bt,beep:"\x07"}});import{stdout as ZK,stdin as AR}from"node:process";import*as j4 from"node:readline";import kt from"node:readline";import{ReadStream as OR}from"node:tty";function l9($,D,X){if(!X.some((G)=>!G.disabled))return $;let J=$+D,Y=Math.max(X.length-1,0),Q=J<0?Y:J>Y?0:J;return X[Q].disabled?l9(Q,D<0?-1:1,X):Q}function LK($,D,X){return String($).normalize().replaceAll(`\r
|
|
28
28
|
`,`
|
|
29
29
|
`).split(`
|
|
30
30
|
`).map((J)=>pt(J,D,X)).join(`
|
|
@@ -337,7 +337,7 @@ const partysocket = new PartySocket({
|
|
|
337
337
|
`),Kh=!0;let Q=this._options.WebSocket||WebSocket;this._debug("connect",{url:J,protocols:Y}),this._ws=Y?new Q(J,Y):new Q(J),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),X)}).catch((J)=>{this._connectLock=!1,this._handleError(new jM.ErrorEvent(Error(J.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new jM.ErrorEvent(Error("TIMEOUT"),this))}_disconnect(D=1000,X){if(this._clearTimeouts(),!this._ws)return;this._removeListeners();try{if(this._ws.readyState===this.OPEN||this._ws.readyState===this.CONNECTING)this._ws.close(D,X);this._handleClose(new jM.CloseEvent(D,X,this))}catch(J){}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_handleOpen=(D)=>{this._debug("open event");let{minUptime:X=M9.minUptime}=this._options;if(clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),X),MH0(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach((J)=>{this._ws?.send(J)}),this._messageQueue=[],this.onopen)this.onopen(D);this.dispatchEvent(cH(D))};_handleMessage=(D)=>{if(this._debug("message event"),this.onmessage)this.onmessage(D);this.dispatchEvent(cH(D))};_handleError=(D)=>{if(this._debug("error event",D.message),this._disconnect(void 0,D.message==="TIMEOUT"?"timeout":void 0),this.onerror)this.onerror(D);this._debug("exec error listeners"),this.dispatchEvent(cH(D)),this._connect()};_handleClose=(D)=>{if(this._debug("close event"),this._clearTimeouts(),this._shouldReconnect)this._connect();if(this.onclose)this.onclose(D);this.dispatchEvent(cH(D))};_removeListeners(){if(!this._ws)return;this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError)}_addListeners(){if(!this._ws)return;this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError)}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};var JU=u$(GW(),1);var dU0=u$(Hm(),1),iU0=u$(PM(),1),nU0=u$(CM(),1),Nm=u$($U(),1),pU0=u$(wm(),1);var Om=Nm.default;I8();f0();var Am=Promise.resolve();async function JF0($,D){let X=async()=>{let Y=Em();try{Zm($)}catch(Q){throw Error(`Failed to change working directory to "${$}": ${Q.message}`)}try{return await D()}finally{try{Zm(Y)}catch{}}},J=Am.then(X,X);return Am=J.then(()=>{return},()=>{return}),J}async function QF0($,D,X=3,J=!1){let Y=[1000,3000,5000];for(let Q=1;Q<=X;Q++)try{let G=await fetch($,D);if(G.ok||G.status>=400&&G.status<500)return G;let W=await G.text().catch(()=>"unknown error");if(!J)F.warn(`Build request attempt ${Q}/${X} failed: ${G.status} - ${W}`);if(Q<X){let B=Y[Q-1]||5000;if(!J)F.info(`Retrying in ${B/1000}s...`);await new Promise((H)=>setTimeout(H,B))}else throw Error(`Failed to request build after ${X} attempts: ${G.status} - ${W}`)}catch(G){let W=G instanceof Error?G.message:String(G);if(W.startsWith("Failed to request build after"))throw G;if(!J)F.warn(`Build request attempt ${Q}/${X} failed: ${W}`);if(Q<X){let B=Y[Q-1]||5000;if(!J)F.info(`Retrying in ${B/1000}s...`);await new Promise((H)=>setTimeout(H,B))}else throw Error(`Failed to request build after ${X} attempts: ${W}`)}throw Error("Unexpected error in fetchWithRetry")}var GF0=["succeeded","failed","expired","released","cancelled"],YU=new Set(GF0);async function WF0($,D=!1,X,J,Y,Q,G){if($)return null;let W=null,B=!1,H=(K)=>{if(!K.trim())return;if(W)return;if(!B)B=!0,console.log("");console.log(K)},U=async()=>{if(!X||!J)return null;let K=X.replace(/\/+$/,""),q=`${K}/start`,z=`${K}/stream?token=${encodeURIComponent(J)}`.replace(/^https:/,"wss:").replace(/^http:/,"ws:");if(!$)console.log("Connecting to log streaming...");let w=await fetch(q,{method:"POST",headers:{"x-capgo-log-token":J}});if(!w.ok){let N=await w.text().catch(()=>"unknown error");if(!$)console.warn(`Could not start log session (${w.status}): ${N}`);return null}return await new Promise((N)=>{let L=!1,M=10,O=0,R=!1,E=new l3(z,void 0,{maxRetries:M,WebSocket:Om}),v=null,S=0,x=Date.now(),_=!1,h=2000,P=4,a=YU,d=null,n=null,b=(A)=>{if(L)return;if(L=!0,n)clearTimeout(n),n=null;if(v)clearInterval(v),v=null;if(Q&&d)Q.removeEventListener("abort",d),d=null;try{E.close()}catch{}N(A)};if(n=setTimeout(()=>{if(!L){if(!$)console.warn("Log streaming timed out after 3 hours");b(null)}},10800000),(()=>{if(v)return;v=setInterval(async()=>{try{if(E.readyState===l3.OPEN)E.send(JSON.stringify({type:"heartbeat",lastId:S}));let A=Date.now();if(Y&&!_&&A-x>=h*P){_=!0;try{let I=await Y();if(I&&a.has(I))W=I,b(W)}finally{_=!1}}}catch(A){if(!$)F.warn(`Heartbeat encountered an error, continuing... ${String(A)}`)}},h)})(),Q){if(d=()=>{if(!L)b("cancelled")},Q.aborted){b("cancelled");return}Q.addEventListener("abort",d)}E.addEventListener("message",(A)=>{let I="";if(typeof A.data==="string")I=A.data;else if(A.data instanceof ArrayBuffer)I=new TextDecoder().decode(A.data);else if(ArrayBuffer.isView(A.data)){let k=A.data;I=new TextDecoder().decode(new Uint8Array(k.buffer,k.byteOffset,k.byteLength))}else if(A.data&&typeof A.data.toString==="function")I=A.data.toString();let C=null;try{C=JSON.parse(I)}catch{C=null}let u=(k)=>{if(k.type==="status"&&typeof k.status==="string"){let D0=k.status.toLowerCase();if(x=Date.now(),a.has(D0))W=D0;return}if(k.type==="log"&&typeof k.message==="string"){x=Date.now(),H(k.message);return}if(typeof k.message==="string")x=Date.now(),H(k.message)};if(C?.type==="heartbeat_response")return;if(C?.type==="batch_messages"&&Array.isArray(C.messages)){let k=S;for(let D0 of C.messages)if(u(D0),typeof D0.id==="number")k=Math.max(k,D0.id);if(k>S){if(S=k,E.readyState===l3.OPEN)try{E.send(JSON.stringify({type:"confirmed_received",lastId:k}))}catch(D0){if(!$)F.warn(`Failed to send log confirmation, continuing... ${String(D0)}`)}}}else{if(C)u(C);else if(I)x=Date.now(),H(I);if(C&&typeof C.id==="number"){if(S=C.id,E.readyState===l3.OPEN)try{E.send(JSON.stringify({type:"confirmed_received",lastId:C.id}))}catch(k){if(!$)F.warn(`Failed to send log confirmation, continuing... ${String(k)}`)}}}if(W)b(W)}),E.addEventListener("error",()=>{if(O+=1,!$)console.warn(`Log stream encountered an error, retrying (${O}/${M})...`);if(!R&&O>=M){if(R=!0,!$)F.warn("Log stream retry limit reached. Falling back to status checks.");if(G)G();b(null)}}),E.addEventListener("close",()=>{if(L)return;if(W){b(W);return}if(!$)F.warn("Log stream closed, waiting for reconnect...")})})};try{let K=await U();if(K||W)return K||W}catch(K){if(!$)F.warn(`Direct log streaming failed${K instanceof Error?`: ${K.message}`:""}`)}return W}async function BF0($,D,X,J,Y,Q,G=!1,W){let H=0;while(H<120){if(W?.aborted)return"cancelled";try{let U=await fetch(`${$}/build/status?job_id=${encodeURIComponent(D)}&app_id=${encodeURIComponent(X)}&platform=${J}`,{headers:{authorization:Y},signal:W});if(!U.ok){if(!Q)F.warn(`Status check failed: ${U.status}`);await new Promise((V)=>setTimeout(V,5000)),H++;continue}let K=await U.json(),q=K.status?.toLowerCase?.()??"";if(!Q&&G)F.info(`Build status: ${q||K.status}`);if(YU.has(q))return q;await new Promise((V)=>setTimeout(V,5000)),H++}catch(U){if(W?.aborted)return"cancelled";if(!Q)F.warn(`Status check error: ${U}`);await new Promise((K)=>setTimeout(K,5000)),H++}}if(!Q)F.warn("Build status polling timed out");return"timeout"}async function HF0($,D,X){let J=new Set,Y=!1,Q=!1;if(D==="ios"){let G=x6($,X,"App","CapApp-SPM","Package.swift");if(KJ(G)){Y=!0;let H=(await uM(G,"utf-8")).matchAll(/\.package\s*\([^)]*path:\s*["'](?:\.\.\/)*node_modules\/([^"']+)["']\s*\)/g);for(let U of H){let K=U[1],q=K.lastIndexOf("node_modules/");if(q!==-1)K=K.substring(q+13);J.add(K)}}let W=x6($,X);if(KJ(W)){let B=[x6(W,"App","Podfile"),x6(W,"Podfile")];for(let U of Rm(W,{withFileTypes:!0}))if(U.isDirectory())B.push(x6(W,U.name,"Podfile"));let H=[...new Set(B)].filter((U)=>KJ(U));if(H.length>0)Q=!0;for(let U of H){let q=(await uM(U,"utf-8")).matchAll(/pod\s+['"][^'"]+['"],\s*:path\s*=>\s*['"](?:\.\.\/)+node_modules\/([^'"]+)['"]/g);for(let V of q){let z=V[1],w=z.lastIndexOf("node_modules/");if(w!==-1)z=z.substring(w+13);J.add(z)}}}}else if(D==="android"){let G=x6($,X,"capacitor.settings.gradle");if(KJ(G)){let B=(await uM(G,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let H of B){let U=H[1],K=U.lastIndexOf("node_modules/");if(K!==-1)U=U.substring(K+13);let q=U.replace(/\/(android|capacitor)$/,"");J.add(q)}}}return{packages:J,usesSPM:Y,usesCocoaPods:Q}}function jm($,D,X,J){let Y=$.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(D==="ios"&&Y.startsWith("node_modules/@capacitor/ios/"))return!0;if(D==="android"&&Y.startsWith("node_modules/@capacitor/android/"))return!0;for(let Q of X.packages){let G=`node_modules/${Q}/`;if(Y===`${G}package.json`)return!0;if(D==="android"){if(Y.startsWith(`${G}android/`))return!0}else if(D==="ios"){if(Y.startsWith(`${G}ios/`))return!0;if(X.usesSPM){if(Y===`${G}Package.swift`)return!0}if(X.usesCocoaPods||!X.usesSPM){if(Y.startsWith(G)&&Y.endsWith(".podspec"))return!0}}}return!1}function XU($,D,X,J,Y,Q){let G=Rm(D);for(let W of G){let B=x6(D,W),H=X?`${X}/${W}`:W,U=oU0(B);if(U.isDirectory()){if(W===".git"||W==="dist"||W==="build"||W===".angular"||W===".vite"||W===".gradle"||W===".idea"||W===".swiftpm")continue;if(W==="node_modules"){XU($,B,H,J,Y,Q);continue}if(W==="resources"){XU($,B,H,J,Y,Q);continue}let K=H.replace(/\\/g,"/");if(jm(H,J,Y,Q)||Q===K||Q.startsWith(`${K}/`)||Array.from(Y.packages).some((V)=>{return`node_modules/${V}/`.startsWith(`${K}/`)||K.startsWith(`node_modules/${V}`)}))XU($,B,H,J,Y,Q)}else if(U.isFile()){if(W===".DS_Store"||W.endsWith(".log"))continue;if(jm(H,J,Y,Q))$.addLocalFile(B,X||void 0)}}}async function UF0($,D,X,J){let Y=FJ(J,X),Q=await HF0($,X,Y),G=new Im.default;XU(G,$,"",X,Q,Y);let W=/node_modules\/\.pnpm\/[^/\n\r]+(?:\/[^/\n\r]+)*\/node_modules\//g,B=new Set(["",".gradle",".swift",".json",".lock",".xml",".properties",".pbxproj",".xcconfig",".plist",".podspec",".rb",".yaml",".yml"]);for(let U of G.getEntries()){if(U.isDirectory)continue;let K=U.entryName.includes(".")?`.${U.entryName.split(".").pop()}`:"",q=U.entryName.split("/").pop()||"";if(!B.has(K)&&q!=="Podfile")continue;let V=U.getData().toString("utf-8"),z=V.replace(W,"node_modules/");if(X==="ios")z=z.replace(/(?:\.\.\/){4,}(ios\/)/g,"../../../$1");if(z!==V)G.updateFile(U.entryName,Lm.from(z,"utf-8"))}let H=x6($,"capacitor.config.json");if(J&&!KJ(H)){let U=`${JSON.stringify(J,null,2)}
|
|
338
338
|
`;G.addFile("capacitor.config.json",Lm.from(U,"utf-8"))}await $F0(D,G.toBuffer())}var FF0=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"]);function KF0($,D,X,J){let Y={platform:D,buildMode:X,cliVersion:J,iosScheme:$.CAPGO_IOS_SCHEME,iosTarget:$.CAPGO_IOS_TARGET,iosDistribution:$.CAPGO_IOS_DISTRIBUTION,iosSourceDir:$.CAPGO_IOS_SOURCE_DIR,iosAppDir:$.CAPGO_IOS_APP_DIR,iosProjectDir:$.CAPGO_IOS_PROJECT_DIR,androidSourceDir:$.CAPGO_ANDROID_SOURCE_DIR,androidAppDir:$.CAPGO_ANDROID_APP_DIR,androidProjectDir:$.CAPGO_ANDROID_PROJECT_DIR,outputUploadEnabled:$.BUILD_OUTPUT_UPLOAD_ENABLED==="true",outputRetentionSeconds:$.BUILD_OUTPUT_RETENTION_SECONDS?Number.parseInt($.BUILD_OUTPUT_RETENTION_SECONDS,10)||$4:$4,skipBuildNumberBump:$.SKIP_BUILD_NUMBER_BUMP==="true"},Q={};for(let[G,W]of Object.entries($))if(!FF0.has(G)&&W!==void 0)Q[G]=W;return{buildOptions:Y,buildCredentials:Q}}async function hM($,D,X=!1){let J=Date.now(),Y=D.verbose??!1;try{D.apikey=D.apikey||q0(X);let Q=XF0(D.path||Em()),G=await JF0(Q,()=>j0());if($=$||G?.config?.appId,!$)throw Error("Missing argument, you need to provide a appId, or be in a capacitor project");if(!D.platform)throw Error("Missing required argument: --platform <ios|android>");if(D.platform!=="ios"&&D.platform!=="android")throw Error(`Invalid platform "${D.platform}". Must be "ios" or "android"`);let W=D.supaHost||"https://api.capgo.app",B=await E0(D.apikey,D.supaHost,D.supaAnon);await x0(B,D.apikey,["write","all"]);let H=await Y1(B,$);if(!X)F.info(`Requesting native build for ${$}`),F.info(`Platform: ${D.platform}`),F.info(`Project: ${Q}`),F.info(`
|
|
339
339
|
\uD83D\uDD12 Security: Credentials are never stored on Capgo servers`),F.info(" They are used only during build and deleted after"),F.info(` Build outputs can optionally be uploaded for time-limited download links
|
|
340
|
-
`);if(Y)F.info(`API host: ${W}`);let U={};if(D.buildCertificateBase64)U.BUILD_CERTIFICATE_BASE64=D.buildCertificateBase64;if(D.buildProvisionProfileBase64)U.BUILD_PROVISION_PROFILE_BASE64=D.buildProvisionProfileBase64;if(D.buildProvisionProfileBase64Prod)U.BUILD_PROVISION_PROFILE_BASE64_PROD=D.buildProvisionProfileBase64Prod;if(D.p12Password)U.P12_PASSWORD=D.p12Password;if(D.appleKeyId)U.APPLE_KEY_ID=D.appleKeyId;if(D.appleIssuerId)U.APPLE_ISSUER_ID=D.appleIssuerId;if(D.appleKeyContent)U.APPLE_KEY_CONTENT=D.appleKeyContent;if(D.appleProfileName)U.APPLE_PROFILE_NAME=D.appleProfileName;if(D.appStoreConnectTeamId)U.APP_STORE_CONNECT_TEAM_ID=D.appStoreConnectTeamId;if(D.iosScheme)U.CAPGO_IOS_SCHEME=D.iosScheme;if(D.iosTarget)U.CAPGO_IOS_TARGET=D.iosTarget;if(D.iosDistribution)U.CAPGO_IOS_DISTRIBUTION=D.iosDistribution;if(D.androidKeystoreFile)U.ANDROID_KEYSTORE_FILE=D.androidKeystoreFile;if(D.keystoreKeyAlias)U.KEYSTORE_KEY_ALIAS=D.keystoreKeyAlias;let K=!!D.keystoreKeyPassword,q=!!D.keystoreStorePassword;if(K&&!q)U.KEYSTORE_KEY_PASSWORD=D.keystoreKeyPassword,U.KEYSTORE_STORE_PASSWORD=D.keystoreKeyPassword;else if(!K&&q)U.KEYSTORE_KEY_PASSWORD=D.keystoreStorePassword,U.KEYSTORE_STORE_PASSWORD=D.keystoreStorePassword;else if(K&&q)U.KEYSTORE_KEY_PASSWORD=D.keystoreKeyPassword,U.KEYSTORE_STORE_PASSWORD=D.keystoreStorePassword;if(D.playConfigJson)U.PLAY_CONFIG_JSON=D.playConfigJson;if(D.outputUpload!==void 0)U.BUILD_OUTPUT_UPLOAD_ENABLED=C6(D.outputUpload)?"true":"false";if(D.outputRetention)U.BUILD_OUTPUT_RETENTION_SECONDS=String(m3(D.outputRetention));if(D.skipBuildNumberBump!==void 0)U.SKIP_BUILD_NUMBER_BUMP=C6(D.skipBuildNumberBump)?"true":"false";let V=await Wh($,D.platform,Object.keys(U).length>0?U:void 0),z=FJ(G?.config,D.platform);if(V&&z)if(D.platform==="ios")V.CAPGO_IOS_SOURCE_DIR=z,V.CAPGO_IOS_APP_DIR=z,V.CAPGO_IOS_PROJECT_DIR=z,V.IOS_PROJECT_DIR=z;else V.CAPGO_ANDROID_SOURCE_DIR=z,V.CAPGO_ANDROID_APP_DIR=z,V.CAPGO_ANDROID_PROJECT_DIR=z,V.ANDROID_PROJECT_DIR=z;if(!V){if(!X)F.error("❌ No credentials found for this app and platform"),F.error(""),F.error("You must provide credentials via:"),F.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),F.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),F.error(" 3. Saved credentials file:"),F.error(` npx @capgo/cli build credentials save --appId ${$} --platform ${D.platform}`),F.error(""),F.error("Documentation:"),F.error(" https://capgo.app/docs/cli/cloud-build/credentials/");throw Error("No credentials found. Please provide credentials before building.")}let w=[];if(D.platform==="ios"){let x=V.CAPGO_IOS_DISTRIBUTION,_=["app_store","ad_hoc"];if(x&&!_.includes(x))w.push(`Invalid CAPGO_IOS_DISTRIBUTION value: '${x}'. Must be one of: ${_.join(", ")}`);let h=x&&_.includes(x)?x:"app_store";if(!x&&!X)F.info("ℹ️ --ios-distribution not specified, defaulting to app_store");if(V.CAPGO_IOS_DISTRIBUTION=h,!V.BUILD_CERTIFICATE_BASE64)w.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)");if(!V.P12_PASSWORD&&!X)F.warn("⚠️ P12_PASSWORD not provided - assuming certificate has no password"),F.warn(" If your certificate requires a password, provide it with --p12-password");if(!V.BUILD_PROVISION_PROFILE_BASE64)w.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)");if(h==="app_store"){let P=!!V.APPLE_KEY_ID,a=!!V.APPLE_ISSUER_ID,d=!!V.APPLE_KEY_CONTENT,n=P||a||d;if(!(P&&a&&d)){if(n){let Z=[];if(!P)Z.push("APPLE_KEY_ID (or --apple-key-id)");if(!a)Z.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!d)Z.push("APPLE_KEY_CONTENT (or --apple-key-content)");w.push(`Incomplete App Store Connect API key - missing: ${Z.join(", ")}`)}else if(V.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")w.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(V.SKIP_BUILD_NUMBER_BUMP!=="true")w.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 if(!X)F.warn("⚠️ App Store Connect API key not provided - build will succeed but cannot auto-upload to TestFlight")}}else if(h==="ad_hoc"){if(!X)F.info("\uD83D\uDCE6 Ad-hoc distribution mode: App Store Connect API key not required"),F.info(" Build number will use timestamp-based fallback")}if(!V.APP_STORE_CONNECT_TEAM_ID)w.push("APP_STORE_CONNECT_TEAM_ID (or --app-store-connect-team-id)")}else if(D.platform==="android"){if(!V.ANDROID_KEYSTORE_FILE)w.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!V.KEYSTORE_KEY_ALIAS)w.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!V.KEYSTORE_KEY_PASSWORD&&!V.KEYSTORE_STORE_PASSWORD)w.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)");if(!V.PLAY_CONFIG_JSON){if(V.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")w.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 if(!X)F.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}}if(w.length>0){if(!X){F.error(`❌ Missing required credentials for ${D.platform}:`),F.error("");for(let x of w)F.error(` • ${x}`);F.error(""),F.error("Provide credentials via:"),F.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),F.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),F.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),F.error(""),F.error("Documentation:"),F.error(` https://capgo.app/docs/cli/cloud-build/${D.platform}/`)}throw Error(`Missing required credentials for ${D.platform}: ${w.join(", ")}`)}if(!X){if(!V.BUILD_OUTPUT_UPLOAD_ENABLED)F.info("ℹ️ --output-upload not specified, defaulting to false (no Capgo download link)");if(!V.BUILD_OUTPUT_RETENTION_SECONDS)F.info(`ℹ️ --output-retention not specified, defaulting to ${$4}s (1 hour)`);if(!V.SKIP_BUILD_NUMBER_BUMP)F.info("ℹ️ --skip-build-number-bump not specified, build number will be auto-incremented (default)")}let{buildOptions:N,buildCredentials:L}=KF0(V,D.platform,D.buildMode||"release",_1.version),M={app_id:$,build_options:N,build_credentials:L};if(!X)F.info("✓ Using credentials (merged from CLI args, env vars, and saved file)");if(Y){let x=Object.keys(L);F.info(`Credentials provided: ${x.join(", ")}`),F.info(`Build options: platform=${N.platform}, mode=${N.buildMode}, cliVersion=${N.cliVersion}`)}if(!X)F.info("Requesting build from Capgo...");let O=3,R=await QF0(`${W}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify(M)},O,X);if(!R.ok){let x=await R.text();throw Error(`Failed to request build: ${R.status} - ${x}`)}let E=await R.json();if(!X)F.success(`Build job created: ${E.job_id}`),F.info(`Status: ${E.status}`);if(Y)F.info(`Upload URL: ${E.upload_url}`),F.info(`Upload expires: ${E.upload_expires_at}`);await _0(D.apikey,{channel:"native-builder",event:"Build requested",icon:"\uD83C\uDFD7️",user_id:H,tags:{"app-id":$,platform:D.platform},notify:!1}).catch();let v=x6(DF0(),`capgo-build-${Date.now()}`);await tU0(v,{recursive:!0});let S=x6(v,`${Mm(Q)}.zip`);try{if(!X)F.info(`Zipping ${D.platform} project from ${Q}...`);await UF0(Q,S,D.platform,G?.config);let _=((await eU0(S)).size/1024/1024).toFixed(2);if(!X)F.success(`Created zip: ${S} (${_} MB)`);if(!X)F.info("Uploading to builder...");if(Y)F.info(`Upload endpoint: ${E.upload_url}`),F.info(`File size: ${_} MB`),F.info(`Job ID: ${E.job_id}`);let h=aU0(S),P=s0();if(!X)P.start("Uploading bundle");if(await new Promise((f,c)=>{let H0=new JU.Upload(h,{endpoint:E.upload_url,chunkSize:5242880,metadata:{filename:Mm(S),filetype:"application/zip"},headers:{authorization:D.apikey},onBeforeRequest(p){if(Y){F.info(`[TUS] ${p.getMethod()} ${p.getURL()}`);let U0=p.getHeader("authorization");F.info(`[TUS] Authorization header present: ${!!U0}`)}},onAfterResponse(p,U0){if(Y){F.info(`[TUS] Response status: ${U0.getStatus()}`);let x$=U0.getHeader("upload-offset"),B0=U0.getHeader("tus-resumable");F.info(`[TUS] Upload-Offset: ${x$}, Tus-Resumable: ${B0}`)}},onError(p){if(!X)P.stop("Upload failed"),F.error(`Upload error: ${p.message}`);if(p instanceof JU.DetailedError){let U0=p.originalResponse?.getBody(),x$=p.originalResponse?.getStatus(),B0=p.originalRequest?.getURL();if(Y)F.error(`[TUS] Request URL: ${B0}`),F.error(`[TUS] Response status: ${x$}`),F.error(`[TUS] Response body: ${U0}`);let a0="Unknown error";try{let Q0=JSON.parse(U0||'{"error": "unknown error"}');a0=Q0.status||Q0.error||Q0.message||"unknown error"}catch{a0=U0||p.message}c(Error(`TUS upload failed: ${a0}`))}else c(Error(`TUS upload failed: ${p.message||p.toString()}`))},onProgress(p,U0){let x$=(p/U0*100).toFixed(2);if(!X)P.message(`Uploading ${x$}%`)},onSuccess(){if(!X)P.stop("Upload complete!");if(Y)F.success("TUS upload completed successfully");f()}});if(Y)F.info("[TUS] Starting upload...");H0.start()}),!X)F.info("Starting build job...");let a=await fetch(`${W}/build/start/${E.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify({app_id:$})});if(!a.ok){let f=await a.text();throw Error(`Failed to start build: ${a.status} - ${f}`)}let d=await a.json();if(!X)F.success("Build started!"),F.info("Streaming build logs...");let n=new AbortController,b=!1,Z=async()=>{if(b)return;b=!0;let f=new AbortController,c=setTimeout(()=>f.abort(),4000);try{await fetch(`${W}/build/cancel/${E.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify({app_id:$}),signal:f.signal})}catch{}finally{clearTimeout(c)}},A=async()=>{try{if(b)gM.exit(1);if(!X)F.warn("Canceling build... (press Ctrl+C again to force quit)");await Z(),n.abort()}catch{}};gM.on("SIGINT",A);let I,C=!1,u=async()=>{try{let f=await fetch(`${W}/build/status?job_id=${encodeURIComponent(E.job_id)}&app_id=${encodeURIComponent($)}&platform=${D.platform}`,{headers:{authorization:D.apikey}});if(!f.ok)return null;let c=await f.json(),H0=c.status?.toLowerCase?.()??"";if(!X&&C)F.info(`Build status: ${H0||c.status}`);if(YU.has(H0))return H0;return null}catch{return null}},k=null;try{k=await WF0(X,Y,d.logs_url,d.logs_token,u,n.signal,()=>{C=!0})}finally{gM.removeListener("SIGINT",A)}if(k){if(I=k,YU.has(k))await u().catch(()=>{})}else I=await BF0(W,E.job_id,$,D.platform,D.apikey,X,C,n.signal);if(!X)if(I==="succeeded")F.success("Build completed successfully!");else if(I==="failed")F.error("Build failed");else F.warn(`Build finished with status: ${I}`);let D0=((Date.now()-J)/1000).toFixed(2);return await _0(D.apikey,{channel:"native-builder",event:I==="succeeded"?"Build succeeded":"Build failed",icon:I==="succeeded"?"✅":"❌",user_id:H,tags:{"app-id":$,platform:D.platform,status:I||"unknown",time:D0},notify:!1}).catch(),{success:I==="succeeded",jobId:E.job_id,uploadUrl:E.upload_url,status:I||d.status||E.status}}finally{await sU0(v,{recursive:!0,force:!0})}}catch(Q){let G=Q instanceof Error?Q.message:String(Q);if(!X)F.error(G);return{success:!1,error:G}}}async function Tm($,D){if(!(await hM($,D,!1)).success)YF0(1)}y0();N6();F1();y0();A6();f0();y0();A6();f0();async function Sm($,D,X,J={}){let{silent:Y=!1,autoUnlink:Q=!1}=J,{data:G,error:W}=await $.from("channels").select().eq("app_id",D).eq("version",X.id);if(W){if(!Y)F.error(`Cannot check Version ${D}@${X.name}: ${i(W)}`);throw Error(`Cannot check version ${D}@${X.name}: ${i(W)}`)}if(!G?.length)return;if(Y)throw Error(`Version ${D}@${X.name} is used in ${G.length} channel(s)`);w0(`❌ Version ${D}@${X.name} is used in ${G.length} channel${G.length>1?"s":""}`);let B=Q;if(!Q)B=await T0({message:"unlink it?"})===!0;if(!B)throw F.error("Unlink it first"),Error(`Version ${D}@${X.name} is still linked to channel(s)`);for(let H of G){let U=s0();U.start(`Unlinking channel ${H.name}`);let K=await mM($,D,{silent:Y});if(!K)throw U.stop(`Cannot find unknown version for ${D}`),Error(`Cannot find unknown version for ${D}`);let{error:q}=await $.from("channels").update({version:K.id}).eq("id",H.id);if(q)throw U.stop(`Cannot update channel ${H.name} ${i(q)}`),Error(`Cannot update channel ${H.name}: ${i(q)}`);U.stop(`✅ Channel ${H.name} unlinked`)}W0(`Version unlinked from ${G.length} channel${G.length>1?"s":""}`)}async function mM($,D,X={}){let{silent:J=!1}=X,{data:Y,error:Q}=await $.from("app_versions").select("id").eq("app_id",D).eq("name","unknown").single();if(!Q)return Y;try{let G=await Y1($,D),{data:W,error:B}=await $.from("app_versions").insert({owner_org:G,deleted:!0,name:"unknown",app_id:D}).select("id").single();if(B){if(!J)F.error(`Cannot find or create unknown version for ${D}. Find error: ${i(Q)}, Create error: ${i(B)}`);throw Error(`Cannot find or create unknown version for app ${D}: ${i(B)}`)}return W}catch(G){if(!J)F.error(`Cannot find or create unknown version for ${D}. Find error: ${i(Q)}, Create error: ${i(G)}`);throw Error(`Cannot retrieve or create unknown version for app ${D}: ${i(G)}`)}}function Pm($,D){return $.from("channels").insert(D).select().single()}function vm($,D,X,J){return $.from("channels").delete().eq("name",D).eq("app_id",X).single()}function Cm($,D,X){return $.from("channels").select().eq("app_id",D).eq("name",X).single()}function _m($,D,X){return $.from("channel_devices").delete().eq("app_id",D).eq("channel_id",X)}function xm($,D,X){return $.from("channels").select(`
|
|
340
|
+
`);if(Y)F.info(`API host: ${W}`);let U={};if(D.buildCertificateBase64)U.BUILD_CERTIFICATE_BASE64=D.buildCertificateBase64;if(D.buildProvisionProfileBase64)U.BUILD_PROVISION_PROFILE_BASE64=D.buildProvisionProfileBase64;if(D.buildProvisionProfileBase64Prod)U.BUILD_PROVISION_PROFILE_BASE64_PROD=D.buildProvisionProfileBase64Prod;if(D.p12Password)U.P12_PASSWORD=D.p12Password;if(D.appleKeyId)U.APPLE_KEY_ID=D.appleKeyId;if(D.appleIssuerId)U.APPLE_ISSUER_ID=D.appleIssuerId;if(D.appleKeyContent)U.APPLE_KEY_CONTENT=D.appleKeyContent;if(D.appleProfileName)U.APPLE_PROFILE_NAME=D.appleProfileName;if(D.appStoreConnectTeamId)U.APP_STORE_CONNECT_TEAM_ID=D.appStoreConnectTeamId;if(D.iosScheme)U.CAPGO_IOS_SCHEME=D.iosScheme;if(D.iosTarget)U.CAPGO_IOS_TARGET=D.iosTarget;if(D.iosDistribution)U.CAPGO_IOS_DISTRIBUTION=D.iosDistribution;if(D.androidKeystoreFile)U.ANDROID_KEYSTORE_FILE=D.androidKeystoreFile;if(D.keystoreKeyAlias)U.KEYSTORE_KEY_ALIAS=D.keystoreKeyAlias;let K=!!D.keystoreKeyPassword,q=!!D.keystoreStorePassword;if(K&&!q)U.KEYSTORE_KEY_PASSWORD=D.keystoreKeyPassword,U.KEYSTORE_STORE_PASSWORD=D.keystoreKeyPassword;else if(!K&&q)U.KEYSTORE_KEY_PASSWORD=D.keystoreStorePassword,U.KEYSTORE_STORE_PASSWORD=D.keystoreStorePassword;else if(K&&q)U.KEYSTORE_KEY_PASSWORD=D.keystoreKeyPassword,U.KEYSTORE_STORE_PASSWORD=D.keystoreStorePassword;if(D.playConfigJson)U.PLAY_CONFIG_JSON=D.playConfigJson;if(D.outputUpload!==void 0)U.BUILD_OUTPUT_UPLOAD_ENABLED=C6(D.outputUpload)?"true":"false";if(D.outputRetention)U.BUILD_OUTPUT_RETENTION_SECONDS=String(m3(D.outputRetention));if(D.skipBuildNumberBump!==void 0)U.SKIP_BUILD_NUMBER_BUMP=C6(D.skipBuildNumberBump)?"true":"false";let V=await Wh($,D.platform,Object.keys(U).length>0?U:void 0),z=FJ(G?.config,D.platform);if(V&&z)if(D.platform==="ios")V.CAPGO_IOS_SOURCE_DIR=z,V.CAPGO_IOS_APP_DIR=z,V.CAPGO_IOS_PROJECT_DIR=z,V.IOS_PROJECT_DIR=z;else V.CAPGO_ANDROID_SOURCE_DIR=z,V.CAPGO_ANDROID_APP_DIR=z,V.CAPGO_ANDROID_PROJECT_DIR=z,V.ANDROID_PROJECT_DIR=z;if(!V){if(!X)F.error("❌ No credentials found for this app and platform"),F.error(""),F.error("You must provide credentials via:"),F.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),F.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),F.error(" 3. Saved credentials file:"),F.error(` npx @capgo/cli build credentials save --appId ${$} --platform ${D.platform}`),F.error(""),F.error("Documentation:"),F.error(" https://capgo.app/docs/cli/cloud-build/credentials/");throw Error("No credentials found. Please provide credentials before building.")}let w=[];if(D.platform==="ios"){let x=V.CAPGO_IOS_DISTRIBUTION,_=["app_store","ad_hoc"];if(x&&!_.includes(x))w.push(`Invalid CAPGO_IOS_DISTRIBUTION value: '${x}'. Must be one of: ${_.join(", ")}`);let h=x&&_.includes(x)?x:"app_store";if(!x&&!X)F.info("ℹ️ --ios-distribution not specified, defaulting to app_store");if(V.CAPGO_IOS_DISTRIBUTION=h,!V.BUILD_CERTIFICATE_BASE64)w.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)");if(!V.P12_PASSWORD&&!X)F.warn("⚠️ P12_PASSWORD not provided - assuming certificate has no password"),F.warn(" If your certificate requires a password, provide it with --p12-password");if(!V.BUILD_PROVISION_PROFILE_BASE64)w.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)");if(h==="app_store"){let P=!!V.APPLE_KEY_ID,a=!!V.APPLE_ISSUER_ID,d=!!V.APPLE_KEY_CONTENT,n=P||a||d;if(!(P&&a&&d)){if(n){let Z=[];if(!P)Z.push("APPLE_KEY_ID (or --apple-key-id)");if(!a)Z.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!d)Z.push("APPLE_KEY_CONTENT (or --apple-key-content)");w.push(`Incomplete App Store Connect API key - missing: ${Z.join(", ")}`)}else if(V.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")w.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(V.SKIP_BUILD_NUMBER_BUMP!=="true")w.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 if(!X)F.warn("⚠️ App Store Connect API key not provided - build will succeed but cannot auto-upload to TestFlight")}}else if(h==="ad_hoc"){if(!X)F.info("\uD83D\uDCE6 Ad-hoc distribution mode: App Store Connect API key not required"),F.info(" Build number will use timestamp-based fallback")}if(!V.APP_STORE_CONNECT_TEAM_ID)w.push("APP_STORE_CONNECT_TEAM_ID (or --app-store-connect-team-id)")}else if(D.platform==="android"){if(!V.ANDROID_KEYSTORE_FILE)w.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!V.KEYSTORE_KEY_ALIAS)w.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!V.KEYSTORE_KEY_PASSWORD&&!V.KEYSTORE_STORE_PASSWORD)w.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)");if(!V.PLAY_CONFIG_JSON){if(V.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")w.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 if(!X)F.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}}if(w.length>0){if(!X){F.error(`❌ Missing required credentials for ${D.platform}:`),F.error("");for(let x of w)F.error(` • ${x}`);F.error(""),F.error("Provide credentials via:"),F.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),F.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),F.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),F.error(""),F.error("Documentation:"),F.error(` https://capgo.app/docs/cli/cloud-build/${D.platform}/`)}throw Error(`Missing required credentials for ${D.platform}: ${w.join(", ")}`)}if(!X){if(!V.BUILD_OUTPUT_UPLOAD_ENABLED)F.info("ℹ️ --output-upload not specified, defaulting to false (no Capgo download link)");if(!V.BUILD_OUTPUT_RETENTION_SECONDS)F.info(`ℹ️ --output-retention not specified, defaulting to ${$4}s (1 hour)`);if(!V.SKIP_BUILD_NUMBER_BUMP)F.info("ℹ️ --skip-build-number-bump not specified, build number will be auto-incremented (default)")}let{buildOptions:N,buildCredentials:L}=KF0(V,D.platform,D.buildMode||"release",_1.version),M={app_id:$,platform:D.platform,build_mode:D.buildMode||"release",build_options:N,build_credentials:L};if(!X)F.info("✓ Using credentials (merged from CLI args, env vars, and saved file)");if(Y){let x=Object.keys(L);F.info(`Credentials provided: ${x.join(", ")}`),F.info(`Build options: platform=${N.platform}, mode=${N.buildMode}, cliVersion=${N.cliVersion}`)}if(!X)F.info("Requesting build from Capgo...");let O=3,R=await QF0(`${W}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify(M)},O,X);if(!R.ok){let x=await R.text();throw Error(`Failed to request build: ${R.status} - ${x}`)}let E=await R.json();if(!X)F.success(`Build job created: ${E.job_id}`),F.info(`Status: ${E.status}`);if(Y)F.info(`Upload URL: ${E.upload_url}`),F.info(`Upload expires: ${E.upload_expires_at}`);await _0(D.apikey,{channel:"native-builder",event:"Build requested",icon:"\uD83C\uDFD7️",user_id:H,tags:{"app-id":$,platform:D.platform},notify:!1}).catch();let v=x6(DF0(),`capgo-build-${Date.now()}`);await tU0(v,{recursive:!0});let S=x6(v,`${Mm(Q)}.zip`);try{if(!X)F.info(`Zipping ${D.platform} project from ${Q}...`);await UF0(Q,S,D.platform,G?.config);let _=((await eU0(S)).size/1024/1024).toFixed(2);if(!X)F.success(`Created zip: ${S} (${_} MB)`);if(!X)F.info("Uploading to builder...");if(Y)F.info(`Upload endpoint: ${E.upload_url}`),F.info(`File size: ${_} MB`),F.info(`Job ID: ${E.job_id}`);let h=aU0(S),P=s0();if(!X)P.start("Uploading bundle");if(await new Promise((f,c)=>{let H0=new JU.Upload(h,{endpoint:E.upload_url,chunkSize:5242880,metadata:{filename:Mm(S),filetype:"application/zip"},headers:{authorization:D.apikey},onBeforeRequest(p){if(Y){F.info(`[TUS] ${p.getMethod()} ${p.getURL()}`);let U0=p.getHeader("authorization");F.info(`[TUS] Authorization header present: ${!!U0}`)}},onAfterResponse(p,U0){if(Y){F.info(`[TUS] Response status: ${U0.getStatus()}`);let x$=U0.getHeader("upload-offset"),B0=U0.getHeader("tus-resumable");F.info(`[TUS] Upload-Offset: ${x$}, Tus-Resumable: ${B0}`)}},onError(p){if(!X)P.stop("Upload failed"),F.error(`Upload error: ${p.message}`);if(p instanceof JU.DetailedError){let U0=p.originalResponse?.getBody(),x$=p.originalResponse?.getStatus(),B0=p.originalRequest?.getURL();if(Y)F.error(`[TUS] Request URL: ${B0}`),F.error(`[TUS] Response status: ${x$}`),F.error(`[TUS] Response body: ${U0}`);let a0="Unknown error";try{let Q0=JSON.parse(U0||'{"error": "unknown error"}');a0=Q0.status||Q0.error||Q0.message||"unknown error"}catch{a0=U0||p.message}c(Error(`TUS upload failed: ${a0}`))}else c(Error(`TUS upload failed: ${p.message||p.toString()}`))},onProgress(p,U0){let x$=(p/U0*100).toFixed(2);if(!X)P.message(`Uploading ${x$}%`)},onSuccess(){if(!X)P.stop("Upload complete!");if(Y)F.success("TUS upload completed successfully");f()}});if(Y)F.info("[TUS] Starting upload...");H0.start()}),!X)F.info("Starting build job...");let a=await fetch(`${W}/build/start/${E.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify({app_id:$})});if(!a.ok){let f=await a.text();throw Error(`Failed to start build: ${a.status} - ${f}`)}let d=await a.json();if(!X)F.success("Build started!"),F.info("Streaming build logs...");let n=new AbortController,b=!1,Z=async()=>{if(b)return;b=!0;let f=new AbortController,c=setTimeout(()=>f.abort(),4000);try{await fetch(`${W}/build/cancel/${E.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify({app_id:$}),signal:f.signal})}catch{}finally{clearTimeout(c)}},A=async()=>{try{if(b)gM.exit(1);if(!X)F.warn("Canceling build... (press Ctrl+C again to force quit)");await Z(),n.abort()}catch{}};gM.on("SIGINT",A);let I,C=!1,u=async()=>{try{let f=await fetch(`${W}/build/status?job_id=${encodeURIComponent(E.job_id)}&app_id=${encodeURIComponent($)}&platform=${D.platform}`,{headers:{authorization:D.apikey}});if(!f.ok)return null;let c=await f.json(),H0=c.status?.toLowerCase?.()??"";if(!X&&C)F.info(`Build status: ${H0||c.status}`);if(YU.has(H0))return H0;return null}catch{return null}},k=null;try{k=await WF0(X,Y,d.logs_url,d.logs_token,u,n.signal,()=>{C=!0})}finally{gM.removeListener("SIGINT",A)}if(k){if(I=k,YU.has(k))await u().catch(()=>{})}else I=await BF0(W,E.job_id,$,D.platform,D.apikey,X,C,n.signal);if(!X)if(I==="succeeded")F.success("Build completed successfully!");else if(I==="failed")F.error("Build failed");else F.warn(`Build finished with status: ${I}`);let D0=((Date.now()-J)/1000).toFixed(2);return await _0(D.apikey,{channel:"native-builder",event:I==="succeeded"?"Build succeeded":"Build failed",icon:I==="succeeded"?"✅":"❌",user_id:H,tags:{"app-id":$,platform:D.platform,status:I||"unknown",time:D0},notify:!1}).catch(),{success:I==="succeeded",jobId:E.job_id,uploadUrl:E.upload_url,status:I||d.status||E.status}}finally{await sU0(v,{recursive:!0,force:!0})}}catch(Q){let G=Q instanceof Error?Q.message:String(Q);if(!X)F.error(G);return{success:!1,error:G}}}async function Tm($,D){if(!(await hM($,D,!1)).success)YF0(1)}y0();N6();F1();y0();A6();f0();y0();A6();f0();async function Sm($,D,X,J={}){let{silent:Y=!1,autoUnlink:Q=!1}=J,{data:G,error:W}=await $.from("channels").select().eq("app_id",D).eq("version",X.id);if(W){if(!Y)F.error(`Cannot check Version ${D}@${X.name}: ${i(W)}`);throw Error(`Cannot check version ${D}@${X.name}: ${i(W)}`)}if(!G?.length)return;if(Y)throw Error(`Version ${D}@${X.name} is used in ${G.length} channel(s)`);w0(`❌ Version ${D}@${X.name} is used in ${G.length} channel${G.length>1?"s":""}`);let B=Q;if(!Q)B=await T0({message:"unlink it?"})===!0;if(!B)throw F.error("Unlink it first"),Error(`Version ${D}@${X.name} is still linked to channel(s)`);for(let H of G){let U=s0();U.start(`Unlinking channel ${H.name}`);let K=await mM($,D,{silent:Y});if(!K)throw U.stop(`Cannot find unknown version for ${D}`),Error(`Cannot find unknown version for ${D}`);let{error:q}=await $.from("channels").update({version:K.id}).eq("id",H.id);if(q)throw U.stop(`Cannot update channel ${H.name} ${i(q)}`),Error(`Cannot update channel ${H.name}: ${i(q)}`);U.stop(`✅ Channel ${H.name} unlinked`)}W0(`Version unlinked from ${G.length} channel${G.length>1?"s":""}`)}async function mM($,D,X={}){let{silent:J=!1}=X,{data:Y,error:Q}=await $.from("app_versions").select("id").eq("app_id",D).eq("name","unknown").single();if(!Q)return Y;try{let G=await Y1($,D),{data:W,error:B}=await $.from("app_versions").insert({owner_org:G,deleted:!0,name:"unknown",app_id:D}).select("id").single();if(B){if(!J)F.error(`Cannot find or create unknown version for ${D}. Find error: ${i(Q)}, Create error: ${i(B)}`);throw Error(`Cannot find or create unknown version for app ${D}: ${i(B)}`)}return W}catch(G){if(!J)F.error(`Cannot find or create unknown version for ${D}. Find error: ${i(Q)}, Create error: ${i(G)}`);throw Error(`Cannot retrieve or create unknown version for app ${D}: ${i(G)}`)}}function Pm($,D){return $.from("channels").insert(D).select().single()}function vm($,D,X,J){return $.from("channels").delete().eq("name",D).eq("app_id",X).single()}function Cm($,D,X){return $.from("channels").select().eq("app_id",D).eq("name",X).single()}function _m($,D,X){return $.from("channel_devices").delete().eq("app_id",D).eq("channel_id",X)}function xm($,D,X){return $.from("channels").select(`
|
|
341
341
|
id,
|
|
342
342
|
version (id, name)
|
|
343
343
|
`).eq("app_id",D).eq("name",X).single().throwOnError().then(({data:J})=>J?.version)}function bm($,D=!1){if(D)return;let X=new I$;X.theme=I$.roundTheme,X.headers=["Name","Version","Public","iOS","Android","Auto Update","Native Auto Update","Device Self Set","Progressive Deploy","Secondary Version","Secondary Version Percentage","AB Testing","AB Testing Version","AB Testing Percentage","Emulator","Device","Dev","Prod"],X.rows=[];for(let J of $.toReversed())X.rows.push([J.name,J.version?.name,J.public?"✅":"❌",J.ios?"✅":"❌",J.android?"✅":"❌",J.disable_auto_update,J.disable_auto_update_under_native?"❌":"✅",J.allow_device_self_set?"✅":"❌",J.allow_emulator?"✅":"❌",J.allow_device?"✅":"❌",J.allow_dev?"✅":"❌",J.allow_prod?"✅":"❌"]);F.success("Channels"),F.success(X.toString())}async function km($,D,X=!1){let{data:J,error:Y}=await $.from("channels").select(`
|
package/dist/package.json
CHANGED
package/dist/src/sdk.js
CHANGED
|
@@ -127,7 +127,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
127
127
|
`)}),$.__defineSetter__("stack",function(X){return[X].concat($.stack).join(`
|
|
128
128
|
|
|
129
129
|
`)}),$}});var Jx=T((NyD,Xx)=>{var c6=i("constants"),yYD=process.cwd,ZY=null,bYD=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){if(!ZY)ZY=yYD.call(process);return ZY};try{process.cwd()}catch(D){}if(typeof process.chdir==="function"){if(GY=process.chdir,process.chdir=function(D){ZY=null,GY.call(process,D)},Object.setPrototypeOf)Object.setPrototypeOf(process.chdir,GY)}var GY;Xx.exports=hYD;function hYD(D){if(c6.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=Y(D.chmod),D.fchmod=Y(D.fchmod),D.lchmod=Y(D.lchmod),D.chownSync=F(D.chownSync),D.fchownSync=F(D.fchownSync),D.lchownSync=F(D.lchownSync),D.chmodSync=J(D.chmodSync),D.fchmodSync=J(D.fchmodSync),D.lchmodSync=J(D.lchmodSync),D.stat=w(D.stat),D.fstat=w(D.fstat),D.lstat=w(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,U,z){if(z)process.nextTick(z)},D.lchmodSync=function(){};if(D.chown&&!D.lchown)D.lchown=function(O,U,z,q){if(q)process.nextTick(q)},D.lchownSync=function(){};if(bYD==="win32")D.rename=typeof D.rename!=="function"?D.rename:function(O){function U(z,q,B){var K=Date.now(),L=0;O(z,q,function M(I){if(I&&(I.code==="EACCES"||I.code==="EPERM"||I.code==="EBUSY")&&Date.now()-K<60000){if(setTimeout(function(){D.stat(q,function(W,N){if(W&&W.code==="ENOENT")O(z,q,M);else B(I)})},L),L<100)L+=10;return}if(B)B(I)})}if(Object.setPrototypeOf)Object.setPrototypeOf(U,O);return U}(D.rename);D.read=typeof D.read!=="function"?D.read:function(O){function U(z,q,B,K,L,M){var I;if(M&&typeof M==="function"){var W=0;I=function(N,V,R){if(N&&N.code==="EAGAIN"&&W<10)return W++,O.call(D,z,q,B,K,L,I);M.apply(this,arguments)}}return O.call(D,z,q,B,K,L,I)}if(Object.setPrototypeOf)Object.setPrototypeOf(U,O);return U}(D.read),D.readSync=typeof D.readSync!=="function"?D.readSync:function(O){return function(U,z,q,B,K){var L=0;while(!0)try{return O.call(D,U,z,q,B,K)}catch(M){if(M.code==="EAGAIN"&&L<10){L++;continue}throw M}}}(D.readSync);function $(O){O.lchmod=function(U,z,q){O.open(U,c6.O_WRONLY|c6.O_SYMLINK,z,function(B,K){if(B){if(q)q(B);return}O.fchmod(K,z,function(L){O.close(K,function(M){if(q)q(L||M)})})})},O.lchmodSync=function(U,z){var q=O.openSync(U,c6.O_WRONLY|c6.O_SYMLINK,z),B=!0,K;try{K=O.fchmodSync(q,z),B=!1}finally{if(B)try{O.closeSync(q)}catch(L){}else O.closeSync(q)}return K}}function X(O){if(c6.hasOwnProperty("O_SYMLINK")&&O.futimes)O.lutimes=function(U,z,q,B){O.open(U,c6.O_SYMLINK,function(K,L){if(K){if(B)B(K);return}O.futimes(L,z,q,function(M){O.close(L,function(I){if(B)B(M||I)})})})},O.lutimesSync=function(U,z,q){var B=O.openSync(U,c6.O_SYMLINK),K,L=!0;try{K=O.futimesSync(B,z,q),L=!1}finally{if(L)try{O.closeSync(B)}catch(M){}else O.closeSync(B)}return K};else if(O.futimes)O.lutimes=function(U,z,q,B){if(B)process.nextTick(B)},O.lutimesSync=function(){}}function Y(O){if(!O)return O;return function(U,z,q){return O.call(D,U,z,function(B){if(G(B))B=null;if(q)q.apply(this,arguments)})}}function J(O){if(!O)return O;return function(U,z){try{return O.call(D,U,z)}catch(q){if(!G(q))throw q}}}function Q(O){if(!O)return O;return function(U,z,q,B){return O.call(D,U,z,q,function(K){if(G(K))K=null;if(B)B.apply(this,arguments)})}}function F(O){if(!O)return O;return function(U,z,q){try{return O.call(D,U,z,q)}catch(B){if(!G(B))throw B}}}function w(O){if(!O)return O;return function(U,z,q){if(typeof z==="function")q=z,z=null;function B(K,L){if(L){if(L.uid<0)L.uid+=4294967296;if(L.gid<0)L.gid+=4294967296}if(q)q.apply(this,arguments)}return z?O.call(D,U,z,B):O.call(D,U,B)}}function Z(O){if(!O)return O;return function(U,z){var q=z?O.call(D,U,z):O.call(D,U);if(q){if(q.uid<0)q.uid+=4294967296;if(q.gid<0)q.gid+=4294967296}return q}}function G(O){if(!O)return!0;if(O.code==="ENOSYS")return!0;var U=!process.getuid||process.getuid()!==0;if(U){if(O.code==="EINVAL"||O.code==="EPERM")return!0}return!1}}});var Fx=T((LyD,Qx)=>{var Yx=i("stream").Stream;Qx.exports=gYD;function gYD(D){return{ReadStream:$,WriteStream:X};function $(Y,J){if(!(this instanceof $))return new $(Y,J);Yx.call(this);var Q=this;this.path=Y,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,J=J||{};var F=Object.keys(J);for(var w=0,Z=F.length;w<Z;w++){var G=F[w];this[G]=J[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,U){if(O){Q.emit("error",O),Q.readable=!1;return}Q.fd=U,Q.emit("open",U),Q._read()})}function X(Y,J){if(!(this instanceof X))return new X(Y,J);Yx.call(this),this.path=Y,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,J=J||{};var Q=Object.keys(J);for(var F=0,w=Q.length;F<w;F++){var Z=Q[F];this[Z]=J[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 Zx=T((MyD,wx)=>{wx.exports=dYD;var mYD=Object.getPrototypeOf||function(D){return D.__proto__};function dYD(D){if(D===null||typeof D!=="object")return D;if(D instanceof Object)var $={__proto__:mYD(D)};else var $=Object.create(null);return Object.getOwnPropertyNames(D).forEach(function(X){Object.defineProperty($,X,Object.getOwnPropertyDescriptor(D,X))}),$}});var S0=T((IyD,zU)=>{var M0=i("fs"),cYD=Jx(),lYD=Fx(),nYD=Zx(),OY=i("util"),r0,qY;if(typeof Symbol==="function"&&typeof Symbol.for==="function")r0=Symbol.for("graceful-fs.queue"),qY=Symbol.for("graceful-fs.previous");else r0="___graceful-fs.queue",qY="___graceful-fs.previous";function iYD(){}function Ox(D,$){Object.defineProperty(D,r0,{get:function(){return $}})}var $8=iYD;if(OY.debuglog)$8=OY.debuglog("gfs4");else if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))$8=function(){var D=OY.format.apply(OY,arguments);D="GFS4: "+D.split(/\n/).join(`
|
|
130
|
-
GFS4: `),console.error(D)};if(!M0[r0]){if(OU=global[r0]||[],Ox(M0,OU),M0.close=function(D){function $(X,Y){return D.call(M0,X,function(J){if(!J)Gx();if(typeof Y==="function")Y.apply(this,arguments)})}return Object.defineProperty($,qY,{value:D}),$}(M0.close),M0.closeSync=function(D){function $(X){D.apply(M0,arguments),Gx()}return Object.defineProperty($,qY,{value:D}),$}(M0.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){$8(M0[r0]),i("assert").equal(M0[r0].length,0)})}var OU;if(!global[r0])Ox(global,M0[r0]);zU.exports=UU(nYD(M0));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!M0.__patched)zU.exports=UU(M0),M0.__patched=!0;function UU(D){cYD(D),D.gracefulify=UU,D.createReadStream=V,D.createWriteStream=R;var $=D.readFile;D.readFile=X;function X(_,v,x){if(typeof v==="function")x=v,v=null;return h(_,v,x);function h(b,l,f,j){return $(b,l,function(S){if(S&&(S.code==="EMFILE"||S.code==="ENFILE"))u9([h,[b,l,f],S,j||Date.now(),Date.now()]);else if(typeof f==="function")f.apply(this,arguments)})}}var Y=D.writeFile;D.writeFile=J;function J(_,v,x,h){if(typeof x==="function")h=x,x=null;return b(_,v,x,h);function b(l,f,j,S,u){return Y(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([b,[l,f,j,S],y,u||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var Q=D.appendFile;if(Q)D.appendFile=F;function F(_,v,x,h){if(typeof x==="function")h=x,x=null;return b(_,v,x,h);function b(l,f,j,S,u){return Q(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([b,[l,f,j,S],y,u||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var w=D.copyFile;if(w)D.copyFile=Z;function Z(_,v,x,h){if(typeof x==="function")h=x,x=0;return b(_,v,x,h);function b(l,f,j,S,u){return w(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([b,[l,f,j,S],y,u||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var G=D.readdir;D.readdir=U;var O=/^v[0-5]\./;function U(_,v,x){if(typeof v==="function")x=v,v=null;var h=O.test(process.version)?function(f,j,S,u){return G(f,b(f,j,S,u))}:function(f,j,S,u){return G(f,j,b(f,j,S,u))};return h(_,v,x);function b(l,f,j,S){return function(u,y){if(u&&(u.code==="EMFILE"||u.code==="ENFILE"))u9([h,[l,f,j],u,S||Date.now(),Date.now()]);else{if(y&&y.sort)y.sort();if(typeof j==="function")j.call(this,u,y)}}}}if(process.version.substr(0,4)==="v0.8"){var z=lYD(D);M=z.ReadStream,W=z.WriteStream}var q=D.ReadStream;if(q)M.prototype=Object.create(q.prototype),M.prototype.open=I;var B=D.WriteStream;if(B)W.prototype=Object.create(B.prototype),W.prototype.open=N;Object.defineProperty(D,"ReadStream",{get:function(){return M},set:function(_){M=_},enumerable:!0,configurable:!0}),Object.defineProperty(D,"WriteStream",{get:function(){return W},set:function(_){W=_},enumerable:!0,configurable:!0});var K=M;Object.defineProperty(D,"FileReadStream",{get:function(){return K},set:function(_){K=_},enumerable:!0,configurable:!0});var L=W;Object.defineProperty(D,"FileWriteStream",{get:function(){return L},set:function(_){L=_},enumerable:!0,configurable:!0});function M(_,v){if(this instanceof M)return q.apply(this,arguments),this;else return M.apply(Object.create(M.prototype),arguments)}function I(){var _=this;A(_.path,_.flags,_.mode,function(v,x){if(v){if(_.autoClose)_.destroy();_.emit("error",v)}else _.fd=x,_.emit("open",x),_.read()})}function W(_,v){if(this instanceof W)return B.apply(this,arguments),this;else return W.apply(Object.create(W.prototype),arguments)}function N(){var _=this;A(_.path,_.flags,_.mode,function(v,x){if(v)_.destroy(),_.emit("error",v);else _.fd=x,_.emit("open",x)})}function V(_,v){return new D.ReadStream(_,v)}function R(_,v){return new D.WriteStream(_,v)}var P=D.open;D.open=A;function A(_,v,x,h){if(typeof x==="function")h=x,x=null;return b(_,v,x,h);function b(l,f,j,S,u){return P(l,f,j,function(y,d){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([b,[l,f,j,S],y,u||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}return D}function u9(D){$8("ENQUEUE",D[0].name,D[1]),M0[r0].push(D),qU()}var UY;function Gx(){var D=Date.now();for(var $=0;$<M0[r0].length;++$)if(M0[r0][$].length>2)M0[r0][$][3]=D,M0[r0][$][4]=D;qU()}function qU(){if(clearTimeout(UY),UY=void 0,M0[r0].length===0)return;var D=M0[r0].shift(),$=D[0],X=D[1],Y=D[2],J=D[3],Q=D[4];if(J===void 0)$8("RETRY",$.name,X),$.apply(null,X);else if(Date.now()-J>=60000){$8("TIMEOUT",$.name,X);var F=X.pop();if(typeof F==="function")F.call(null,Y)}else{var w=Date.now()-Q,Z=Math.max(Q-J,1),G=Math.min(Z*1.2,100);if(w>=G)$8("RETRY",$.name,X),$.apply(null,X.concat([J]));else M0[r0].push(D)}if(UY===void 0)UY=setTimeout(qU,0)}});var qx=T((AyD,Ux)=>{function e1(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)}Ux.exports=e1;e1.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};e1.prototype.stop=function(){if(this._timeout)clearTimeout(this._timeout);this._timeouts=[],this._cachedTimeouts=null};e1.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 Y=this,J=setTimeout(function(){if(Y._attempts++,Y._operationTimeoutCb){if(Y._timeout=setTimeout(function(){Y._operationTimeoutCb(Y._attempts)},Y._operationTimeout),Y._options.unref)Y._timeout.unref()}Y._fn(Y._attempts)},X);if(this._options.unref)J.unref();return!0};e1.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)};e1.prototype.try=function(D){console.log("Using RetryOperation.try() is deprecated"),this.attempt(D)};e1.prototype.start=function(D){console.log("Using RetryOperation.start() is deprecated"),this.attempt(D)};e1.prototype.start=e1.prototype.try;e1.prototype.errors=function(){return this._errors};e1.prototype.attempts=function(){return this._attempts};e1.prototype.mainError=function(){if(this._errors.length===0)return null;var D={},$=null,X=0;for(var Y=0;Y<this._errors.length;Y++){var J=this._errors[Y],Q=J.message,F=(D[Q]||0)+1;if(D[Q]=F,F>=X)$=J,X=F}return $}});var Bx=T((rYD)=>{var pYD=qx();rYD.operation=function(D){var $=rYD.timeouts(D);return new pYD($,{forever:D&&D.forever,unref:D&&D.unref,maxRetryTime:D&&D.maxRetryTime})};rYD.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 Y=[];for(var J=0;J<$.retries;J++)Y.push(this.createTimeout(J,$));if(D&&D.forever&&!Y.length)Y.push(this.createTimeout(J,$));return Y.sort(function(Q,F){return Q-F}),Y};rYD.createTimeout=function(D,$){var X=$.randomize?Math.random()+1:1,Y=Math.round(X*$.minTimeout*Math.pow($.factor,D));return Y=Math.min(Y,$.maxTimeout),Y};rYD.wrap=function(D,$,X){if($ instanceof Array)X=$,$=null;if(!X){X=[];for(var Y in D)if(typeof D[Y]==="function")X.push(Y)}for(var J=0;J<X.length;J++){var Q=X[J],F=D[Q];D[Q]=function(Z){var G=rYD.operation($),O=Array.prototype.slice.call(arguments,1),U=O.pop();O.push(function(z){if(G.retry(z))return;if(z)arguments[0]=G.mainError();U.apply(this,arguments)}),G.attempt(function(){Z.apply(D,O)})}.bind(D,F),D[Q].options=$}}});var Kx=T((jyD,zY)=>{zY.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];if(process.platform!=="win32")zY.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")zY.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var WY=T((EyD,_9)=>{var K0=global.process,X8=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(!X8(K0))_9.exports=function(){return function(){}};else{if(BU=i("assert"),J8=Kx(),KU=/^win/i.test(K0.platform),v9=i("events"),typeof v9!=="function")v9=v9.EventEmitter;if(K0.__signal_exit_emitter__)m0=K0.__signal_exit_emitter__;else m0=K0.__signal_exit_emitter__=new v9,m0.count=0,m0.emitted={};if(!m0.infinite)m0.setMaxListeners(1/0),m0.infinite=!0;_9.exports=function(D,$){if(!X8(global.process))return function(){};if(BU.equal(typeof D,"function","a callback must be provided for exit handler"),Y8===!1)BY();var X="exit";if($&&$.alwaysLast)X="afterexit";var Y=function(){if(m0.removeListener(X,D),m0.listeners("exit").length===0&&m0.listeners("afterexit").length===0)w3()};return m0.on(X,D),Y},w3=function(){if(!Y8||!X8(global.process))return;Y8=!1,J8.forEach(function($){try{K0.removeListener($,Z3[$])}catch(X){}}),K0.emit=G3,K0.reallyExit=KY,m0.count-=1},_9.exports.unload=w3,l6=function($,X,Y){if(m0.emitted[$])return;m0.emitted[$]=!0,m0.emit($,X,Y)},Z3={},J8.forEach(function(D){Z3[D]=function(){if(!X8(global.process))return;var X=K0.listeners(D);if(X.length===m0.count){if(w3(),l6("exit",null,D),l6("afterexit",null,D),KU&&D==="SIGHUP")D="SIGINT";K0.kill(K0.pid,D)}}}),_9.exports.signals=function(){return J8},Y8=!1,BY=function(){if(Y8||!X8(global.process))return;Y8=!0,m0.count+=1,J8=J8.filter(function($){try{return K0.on($,Z3[$]),!0}catch(X){return!1}}),K0.emit=HU,K0.reallyExit=WU},_9.exports.load=BY,KY=K0.reallyExit,WU=function($){if(!X8(global.process))return;K0.exitCode=$||0,l6("exit",K0.exitCode,null),l6("afterexit",K0.exitCode,null),KY.call(K0,K0.exitCode)},G3=K0.emit,HU=function($,X){if($==="exit"&&X8(global.process)){if(X!==void 0)K0.exitCode=X;var Y=G3.apply(this,arguments);return l6("exit",K0.exitCode,null),l6("afterexit",K0.exitCode,null),Y}else return G3.apply(this,arguments)}}var BU,J8,KU,v9,m0,w3,l6,Z3,Y8,BY,KY,WU,G3,HU});var Hx=T((DQD,VU)=>{var Wx=Symbol();function sYD(D,$,X){let Y=$[Wx];if(Y)return $.stat(D,(Q,F)=>{if(Q)return X(Q);X(null,F.mtime,Y)});let J=new Date(Math.ceil(Date.now()/1000)*1000+5);$.utimes(D,J,J,(Q)=>{if(Q)return X(Q);$.stat(D,(F,w)=>{if(F)return X(F);let Z=w.mtime.getTime()%1000===0?"s":"ms";Object.defineProperty($,Wx,{value:Z}),X(null,w.mtime,Z)})})}function eYD(D){let $=Date.now();if(D==="s")$=Math.ceil($/1000)*1000;return new Date($)}DQD.probe=sYD;DQD.getMtime=eYD});var Ix=T((GQD,U3)=>{var JQD=i("path"),MU=S0(),YQD=Bx(),QQD=WY(),Vx=Hx(),F6={};function O3(D,$){return $.lockfilePath||`${D}.lock`}function IU(D,$,X){if(!$.realpath)return X(null,JQD.resolve(D));$.fs.realpath(D,X)}function LU(D,$,X){let Y=O3(D,$);$.fs.mkdir(Y,(J)=>{if(!J)return Vx.probe(Y,$.fs,(Q,F,w)=>{if(Q)return $.fs.rmdir(Y,()=>{}),X(Q);X(null,F,w)});if(J.code!=="EEXIST")return X(J);if($.stale<=0)return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));$.fs.stat(Y,(Q,F)=>{if(Q){if(Q.code==="ENOENT")return LU(D,{...$,stale:0},X);return X(Q)}if(!Nx(F,$))return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));Lx(D,$,(w)=>{if(w)return X(w);LU(D,{...$,stale:0},X)})})})}function Nx(D,$){return D.mtime.getTime()<Date.now()-$.stale}function Lx(D,$,X){$.fs.rmdir(O3(D,$),(Y)=>{if(Y&&Y.code!=="ENOENT")return X(Y);X()})}function HY(D,$){let X=F6[D];if(X.updateTimeout)return;if(X.updateDelay=X.updateDelay||$.update,X.updateTimeout=setTimeout(()=>{X.updateTimeout=null,$.fs.stat(X.lockfilePath,(Y,J)=>{let Q=X.lastUpdate+$.stale<Date.now();if(Y){if(Y.code==="ENOENT"||Q)return NU(D,X,Object.assign(Y,{code:"ECOMPROMISED"}));return X.updateDelay=1000,HY(D,$)}if(X.mtime.getTime()!==J.mtime.getTime())return NU(D,X,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let w=Vx.getMtime(X.mtimePrecision);$.fs.utimes(X.lockfilePath,w,w,(Z)=>{let G=X.lastUpdate+$.stale<Date.now();if(X.released)return;if(Z){if(Z.code==="ENOENT"||G)return NU(D,X,Object.assign(Z,{code:"ECOMPROMISED"}));return X.updateDelay=1000,HY(D,$)}X.mtime=w,X.lastUpdate=Date.now(),X.updateDelay=null,HY(D,$)})})},X.updateDelay),X.updateTimeout.unref)X.updateTimeout.unref()}function NU(D,$,X){if($.released=!0,$.updateTimeout)clearTimeout($.updateTimeout);if(F6[D]===$)delete F6[D];$.options.onCompromised(X)}function FQD(D,$,X){$={stale:1e4,update:null,realpath:!0,retries:0,fs:MU,onCompromised:(Y)=>{throw Y},...$},$.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),IU(D,$,(Y,J)=>{if(Y)return X(Y);let Q=YQD.operation($.retries);Q.attempt(()=>{LU(J,$,(F,w,Z)=>{if(Q.retry(F))return;if(F)return X(Q.mainError());let G=F6[J]={lockfilePath:O3(J,$),mtime:w,mtimePrecision:Z,options:$,lastUpdate:Date.now()};HY(J,$),X(null,(O)=>{if(G.released)return O&&O(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));Mx(J,{...$,realpath:!1},O)})})})})}function Mx(D,$,X){$={fs:MU,realpath:!0,...$},IU(D,$,(Y,J)=>{if(Y)return X(Y);let Q=F6[J];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 F6[J],Lx(J,$,X)})}function wQD(D,$,X){$={stale:1e4,realpath:!0,fs:MU,...$},$.stale=Math.max($.stale||0,2000),IU(D,$,(Y,J)=>{if(Y)return X(Y);$.fs.stat(O3(J,$),(Q,F)=>{if(Q)return Q.code==="ENOENT"?X(null,!1):X(Q);return X(null,!Nx(F,$))})})}function ZQD(){return F6}QQD(()=>{for(let D in F6){let $=F6[D].options;try{$.fs.rmdirSync(O3(D,$))}catch(X){}}});GQD.lock=FQD;GQD.unlock=Mx;GQD.check=wQD;GQD.getLocks=ZQD});var Rx=T((TyD,Ax)=>{var BQD=S0();function KQD(D){let $=["mkdir","realpath","stat","rmdir","utimes"],X={...D};return $.forEach((Y)=>{X[Y]=(...J)=>{let Q=J.pop(),F;try{F=D[`${Y}Sync`](...J)}catch(w){return Q(w)}Q(null,F)}}),X}function WQD(D){return(...$)=>new Promise((X,Y)=>{$.push((J,Q)=>{if(J)Y(J);else X(Q)}),D(...$)})}function HQD(D){return(...$)=>{let X,Y;if($.push((J,Q)=>{X=J,Y=Q}),D(...$),X)throw X;return Y}}function VQD(D){if(D={...D},D.fs=KQD(D.fs||BQD),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}Ax.exports={toPromise:WQD,toSync:HQD,toSyncOptions:VQD}});var Ex=T((CyD,n6)=>{var k9=Ix(),{toPromise:VY,toSync:NY,toSyncOptions:AU}=Rx();async function jx(D,$){let X=await VY(k9.lock)(D,$);return VY(X)}function NQD(D,$){let X=NY(k9.lock)(D,AU($));return NY(X)}function LQD(D,$){return VY(k9.unlock)(D,$)}function MQD(D,$){return NY(k9.unlock)(D,AU($))}function IQD(D,$){return VY(k9.check)(D,$)}function AQD(D,$){return NY(k9.check)(D,AU($))}n6.exports=jx;n6.exports.lock=jx;n6.exports.unlock=LQD;n6.exports.lockSync=NQD;n6.exports.unlockSync=MQD;n6.exports.check=IQD;n6.exports.checkSync=AQD});var vx=T((Sx)=>{Object.defineProperty(Sx,"__esModule",{value:!0});Sx.canStoreURLs=Sx.FileUrlStorage=void 0;var Tx=i("fs"),RQD=EQD($x()),Cx=jQD(Ex());function xx(D){if(typeof WeakMap!="function")return null;var $=new WeakMap,X=new WeakMap;return(xx=function(Y){return Y?X:$})(D)}function jQD(D,$){if(!$&&D&&D.__esModule)return D;if(D===null||typeof D!="object"&&typeof D!="function")return{default:D};var X=xx($);if(X&&X.has(D))return X.get(D);var Y={__proto__:null},J=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var Q in D)if(Q!=="default"&&{}.hasOwnProperty.call(D,Q)){var F=J?Object.getOwnPropertyDescriptor(D,Q):null;F&&(F.get||F.set)?Object.defineProperty(Y,Q,F):Y[Q]=D[Q]}return Y.default=D,X&&X.set(D,Y),Y}function EQD(D){return D&&D.__esModule?D:{default:D}}function q3(D){return q3=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},q3(D)}function TQD(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function Px(D,$){for(var X=0;X<$.length;X++){var Y=$[X];if(Y.enumerable=Y.enumerable||!1,Y.configurable=!0,"value"in Y)Y.writable=!0;Object.defineProperty(D,PQD(Y.key),Y)}}function CQD(D,$,X){if($)Px(D.prototype,$);if(X)Px(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function PQD(D){var $=xQD(D,"string");return q3($)=="symbol"?$:$+""}function xQD(D,$){if(q3(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var Y=X.call(D,$||"default");if(q3(Y)!="object")return Y;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var PyD=Sx.canStoreURLs=!0,xyD=Sx.FileUrlStorage=function(){function D($){TQD(this,D),this.path=$}return CQD(D,[{key:"findAllUploads",value:function(){var X=this;return new Promise(function(Y,J){X._getItems("tus::",function(Q,F){if(Q)J(Q);else Y(F)})})}},{key:"findUploadsByFingerprint",value:function(X){var Y=this;return new Promise(function(J,Q){Y._getItems("tus::".concat(X),function(F,w){if(F)Q(F);else J(w)})})}},{key:"removeUpload",value:function(X){var Y=this;return new Promise(function(J,Q){Y._removeItem(X,function(F){if(F)Q(F);else J()})})}},{key:"addUpload",value:function(X,Y){var J=this,Q=Math.round(Math.random()*1000000000000),F="tus::".concat(X,"::").concat(Q);return new Promise(function(w,Z){J._setItem(F,Y,function(G){if(G)Z(G);else w(F)})})}},{key:"_setItem",value:function(X,Y,J){var Q=this;Cx.lock(this.path,this._lockfileOptions()).then(function(F){J=Q._releaseAndCb(F,J),Q._getData(function(w,Z){if(w){J(w);return}Z[X]=Y,Q._writeData(Z,function(G){return J(G)})})}).catch(J)}},{key:"_getItems",value:function(X,Y){this._getData(function(J,Q){if(J){Y(J);return}var F=Object.keys(Q).filter(function(w){return w.startsWith(X)}).map(function(w){var Z=Q[w];return Z.urlStorageKey=w,Z});Y(null,F)})}},{key:"_removeItem",value:function(X,Y){var J=this;Cx.lock(this.path,this._lockfileOptions()).then(function(Q){Y=J._releaseAndCb(Q,Y),J._getData(function(F,w){if(F){Y(F);return}delete w[X],J._writeData(w,function(Z){return Y(Z)})})}).catch(Y)}},{key:"_lockfileOptions",value:function(){return{realpath:!1,retries:{retries:5,minTimeout:20}}}},{key:"_releaseAndCb",value:function(X,Y){return function(J){if(J){X().then(function(){return Y(J)}).catch(function(Q){return Y((0,RQD.default)([J,Q]))});return}X().then(Y).catch(Y)}}},{key:"_writeData",value:function(X,Y){var J={encoding:"utf8",mode:432,flag:"w"};(0,Tx.writeFile)(this.path,JSON.stringify(X),J,function(Q){return Y(Q)})}},{key:"_getData",value:function(X){(0,Tx.readFile)(this.path,"utf8",function(Y,J){if(Y){if(Y.code==="ENOENT")X(null,{});else X(Y);return}try{J=!J.trim().length?{}:JSON.parse(J)}catch(Q){X(Q);return}X(null,J)})}}])}()});var MY=T((i6)=>{Object.defineProperty(i6,"__esModule",{value:!0});Object.defineProperty(i6,"DefaultHttpStack",{enumerable:!0,get:function(){return yx.default}});Object.defineProperty(i6,"DetailedError",{enumerable:!0,get:function(){return uQD.default}});Object.defineProperty(i6,"FileUrlStorage",{enumerable:!0,get:function(){return bx.FileUrlStorage}});Object.defineProperty(i6,"StreamSource",{enumerable:!0,get:function(){return yQD.default}});i6.Upload=void 0;Object.defineProperty(i6,"canStoreURLs",{enumerable:!0,get:function(){return bx.canStoreURLs}});i6.defaultOptions=void 0;Object.defineProperty(i6,"enableDebugLog",{enumerable:!0,get:function(){return vQD.enableDebugLog}});i6.isSupported=void 0;var uQD=Q8(AO()),vQD=RO(),_QD=Q8(ET()),RU=Q8(QC()),kQD=Q8(jC()),fQD=Q8(xC()),yx=Q8(iC()),yQD=Q8(kO()),bx=vx();function Q8(D){return D&&D.__esModule?D:{default:D}}function y9(D){return y9=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},y9(D)}function bQD(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function _x(D,$){for(var X=0;X<$.length;X++){var Y=$[X];if(Y.enumerable=Y.enumerable||!1,Y.configurable=!0,"value"in Y)Y.writable=!0;Object.defineProperty(D,gx(Y.key),Y)}}function hQD(D,$,X){if($)_x(D.prototype,$);if(X)_x(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function gQD(D,$,X){return $=LY($),mQD(D,hx()?Reflect.construct($,X||[],LY(D).constructor):$.apply(D,X))}function mQD(D,$){if($&&(y9($)==="object"||typeof $==="function"))return $;else if($!==void 0)throw TypeError("Derived constructors may only return object or undefined");return dQD(D)}function dQD(D){if(D===void 0)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return D}function hx(){try{var D=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch($){}return(hx=function(){return!!D})()}function LY(D){return LY=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(X){return X.__proto__||Object.getPrototypeOf(X)},LY(D)}function cQD(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}),$)jU(D,$)}function jU(D,$){return jU=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(Y,J){return Y.__proto__=J,Y},jU(D,$)}function kx(D,$){var X=Object.keys(D);if(Object.getOwnPropertySymbols){var Y=Object.getOwnPropertySymbols(D);$&&(Y=Y.filter(function(J){return Object.getOwnPropertyDescriptor(D,J).enumerable})),X.push.apply(X,Y)}return X}function f9(D){for(var $=1;$<arguments.length;$++){var X=arguments[$]!=null?arguments[$]:{};$%2?kx(Object(X),!0).forEach(function(Y){lQD(D,Y,X[Y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(X)):kx(Object(X)).forEach(function(Y){Object.defineProperty(D,Y,Object.getOwnPropertyDescriptor(X,Y))})}return D}function lQD(D,$,X){if($=gx($),$ in D)Object.defineProperty(D,$,{value:X,enumerable:!0,configurable:!0,writable:!0});else D[$]=X;return D}function gx(D){var $=nQD(D,"string");return y9($)=="symbol"?$:$+""}function nQD(D,$){if(y9(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var Y=X.call(D,$||"default");if(y9(Y)!="object")return Y;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var fx=i6.defaultOptions=f9(f9({},RU.default.defaultOptions),{},{httpStack:new yx.default,fileReader:new kQD.default,urlStorage:new _QD.default,fingerprint:fQD.default}),uyD=i6.Upload=function(D){function $(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return bQD(this,$),Y=f9(f9({},fx),Y),gQD(this,$,[X,Y])}return cQD($,D),hQD($,null,[{key:"terminate",value:function(Y){var J=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return J=f9(f9({},fx),J),RU.default.terminate(Y,J)}}])}(RU.default),vyD=i6.isSupported=!0});var V$;var z3=o(()=>{V$={name:"@capgo/cli",type:"module",version:"7.83.0",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && bun build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:build-zip-filter":"bun test/test-build-zip-filter.mjs","test:checksum":"bun test/test-checksum-algorithm.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:"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:build-zip-filter && bun run test:checksum && bun run test:esm-sdk && bun run test:mcp && bun run test:version-detection && bun run test:platform-paths && bun run test:payload-split"},devDependencies:{"@antfu/eslint-config":"^7.0.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^1.0.0","@modelcontextprotocol/sdk":"^1.25.3","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^25.0.0","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",eslint:"^9.38.0","git-format-staged":"4.0.1",husky:"^9.1.7","is-wsl":"^3.1.0",micromatch:"^4.0.8",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3",partysocket:"^1.1.11",ws:"^8.18.3",zod:"^4.3.6"}}});async function IY(D){try{let X=`https://registry.npmjs.org/${encodeURIComponent(D.toLowerCase())}`,Y=await fetch(X,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});if(!Y.ok)return null;return(await Y.json())["dist-tags"]?.latest||null}catch{return null}}async function F0(){let D=await IY("@capgo/cli")??"",$=D?.split(".")[0];if(D!==V$.version)H.warning(`\uD83D\uDEA8 You are using @capgo/cli@${V$.version} it's not the latest version.
|
|
130
|
+
GFS4: `),console.error(D)};if(!M0[r0]){if(OU=global[r0]||[],Ox(M0,OU),M0.close=function(D){function $(X,Y){return D.call(M0,X,function(J){if(!J)Gx();if(typeof Y==="function")Y.apply(this,arguments)})}return Object.defineProperty($,qY,{value:D}),$}(M0.close),M0.closeSync=function(D){function $(X){D.apply(M0,arguments),Gx()}return Object.defineProperty($,qY,{value:D}),$}(M0.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){$8(M0[r0]),i("assert").equal(M0[r0].length,0)})}var OU;if(!global[r0])Ox(global,M0[r0]);zU.exports=UU(nYD(M0));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!M0.__patched)zU.exports=UU(M0),M0.__patched=!0;function UU(D){cYD(D),D.gracefulify=UU,D.createReadStream=V,D.createWriteStream=R;var $=D.readFile;D.readFile=X;function X(_,v,x){if(typeof v==="function")x=v,v=null;return h(_,v,x);function h(b,l,f,j){return $(b,l,function(S){if(S&&(S.code==="EMFILE"||S.code==="ENFILE"))u9([h,[b,l,f],S,j||Date.now(),Date.now()]);else if(typeof f==="function")f.apply(this,arguments)})}}var Y=D.writeFile;D.writeFile=J;function J(_,v,x,h){if(typeof x==="function")h=x,x=null;return b(_,v,x,h);function b(l,f,j,S,u){return Y(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([b,[l,f,j,S],y,u||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var Q=D.appendFile;if(Q)D.appendFile=F;function F(_,v,x,h){if(typeof x==="function")h=x,x=null;return b(_,v,x,h);function b(l,f,j,S,u){return Q(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([b,[l,f,j,S],y,u||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var w=D.copyFile;if(w)D.copyFile=Z;function Z(_,v,x,h){if(typeof x==="function")h=x,x=0;return b(_,v,x,h);function b(l,f,j,S,u){return w(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([b,[l,f,j,S],y,u||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var G=D.readdir;D.readdir=U;var O=/^v[0-5]\./;function U(_,v,x){if(typeof v==="function")x=v,v=null;var h=O.test(process.version)?function(f,j,S,u){return G(f,b(f,j,S,u))}:function(f,j,S,u){return G(f,j,b(f,j,S,u))};return h(_,v,x);function b(l,f,j,S){return function(u,y){if(u&&(u.code==="EMFILE"||u.code==="ENFILE"))u9([h,[l,f,j],u,S||Date.now(),Date.now()]);else{if(y&&y.sort)y.sort();if(typeof j==="function")j.call(this,u,y)}}}}if(process.version.substr(0,4)==="v0.8"){var z=lYD(D);M=z.ReadStream,W=z.WriteStream}var q=D.ReadStream;if(q)M.prototype=Object.create(q.prototype),M.prototype.open=I;var B=D.WriteStream;if(B)W.prototype=Object.create(B.prototype),W.prototype.open=N;Object.defineProperty(D,"ReadStream",{get:function(){return M},set:function(_){M=_},enumerable:!0,configurable:!0}),Object.defineProperty(D,"WriteStream",{get:function(){return W},set:function(_){W=_},enumerable:!0,configurable:!0});var K=M;Object.defineProperty(D,"FileReadStream",{get:function(){return K},set:function(_){K=_},enumerable:!0,configurable:!0});var L=W;Object.defineProperty(D,"FileWriteStream",{get:function(){return L},set:function(_){L=_},enumerable:!0,configurable:!0});function M(_,v){if(this instanceof M)return q.apply(this,arguments),this;else return M.apply(Object.create(M.prototype),arguments)}function I(){var _=this;A(_.path,_.flags,_.mode,function(v,x){if(v){if(_.autoClose)_.destroy();_.emit("error",v)}else _.fd=x,_.emit("open",x),_.read()})}function W(_,v){if(this instanceof W)return B.apply(this,arguments),this;else return W.apply(Object.create(W.prototype),arguments)}function N(){var _=this;A(_.path,_.flags,_.mode,function(v,x){if(v)_.destroy(),_.emit("error",v);else _.fd=x,_.emit("open",x)})}function V(_,v){return new D.ReadStream(_,v)}function R(_,v){return new D.WriteStream(_,v)}var P=D.open;D.open=A;function A(_,v,x,h){if(typeof x==="function")h=x,x=null;return b(_,v,x,h);function b(l,f,j,S,u){return P(l,f,j,function(y,d){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([b,[l,f,j,S],y,u||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}return D}function u9(D){$8("ENQUEUE",D[0].name,D[1]),M0[r0].push(D),qU()}var UY;function Gx(){var D=Date.now();for(var $=0;$<M0[r0].length;++$)if(M0[r0][$].length>2)M0[r0][$][3]=D,M0[r0][$][4]=D;qU()}function qU(){if(clearTimeout(UY),UY=void 0,M0[r0].length===0)return;var D=M0[r0].shift(),$=D[0],X=D[1],Y=D[2],J=D[3],Q=D[4];if(J===void 0)$8("RETRY",$.name,X),$.apply(null,X);else if(Date.now()-J>=60000){$8("TIMEOUT",$.name,X);var F=X.pop();if(typeof F==="function")F.call(null,Y)}else{var w=Date.now()-Q,Z=Math.max(Q-J,1),G=Math.min(Z*1.2,100);if(w>=G)$8("RETRY",$.name,X),$.apply(null,X.concat([J]));else M0[r0].push(D)}if(UY===void 0)UY=setTimeout(qU,0)}});var qx=T((AyD,Ux)=>{function e1(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)}Ux.exports=e1;e1.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};e1.prototype.stop=function(){if(this._timeout)clearTimeout(this._timeout);this._timeouts=[],this._cachedTimeouts=null};e1.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 Y=this,J=setTimeout(function(){if(Y._attempts++,Y._operationTimeoutCb){if(Y._timeout=setTimeout(function(){Y._operationTimeoutCb(Y._attempts)},Y._operationTimeout),Y._options.unref)Y._timeout.unref()}Y._fn(Y._attempts)},X);if(this._options.unref)J.unref();return!0};e1.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)};e1.prototype.try=function(D){console.log("Using RetryOperation.try() is deprecated"),this.attempt(D)};e1.prototype.start=function(D){console.log("Using RetryOperation.start() is deprecated"),this.attempt(D)};e1.prototype.start=e1.prototype.try;e1.prototype.errors=function(){return this._errors};e1.prototype.attempts=function(){return this._attempts};e1.prototype.mainError=function(){if(this._errors.length===0)return null;var D={},$=null,X=0;for(var Y=0;Y<this._errors.length;Y++){var J=this._errors[Y],Q=J.message,F=(D[Q]||0)+1;if(D[Q]=F,F>=X)$=J,X=F}return $}});var Bx=T((rYD)=>{var pYD=qx();rYD.operation=function(D){var $=rYD.timeouts(D);return new pYD($,{forever:D&&D.forever,unref:D&&D.unref,maxRetryTime:D&&D.maxRetryTime})};rYD.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 Y=[];for(var J=0;J<$.retries;J++)Y.push(this.createTimeout(J,$));if(D&&D.forever&&!Y.length)Y.push(this.createTimeout(J,$));return Y.sort(function(Q,F){return Q-F}),Y};rYD.createTimeout=function(D,$){var X=$.randomize?Math.random()+1:1,Y=Math.round(X*$.minTimeout*Math.pow($.factor,D));return Y=Math.min(Y,$.maxTimeout),Y};rYD.wrap=function(D,$,X){if($ instanceof Array)X=$,$=null;if(!X){X=[];for(var Y in D)if(typeof D[Y]==="function")X.push(Y)}for(var J=0;J<X.length;J++){var Q=X[J],F=D[Q];D[Q]=function(Z){var G=rYD.operation($),O=Array.prototype.slice.call(arguments,1),U=O.pop();O.push(function(z){if(G.retry(z))return;if(z)arguments[0]=G.mainError();U.apply(this,arguments)}),G.attempt(function(){Z.apply(D,O)})}.bind(D,F),D[Q].options=$}}});var Kx=T((jyD,zY)=>{zY.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];if(process.platform!=="win32")zY.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")zY.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var WY=T((EyD,_9)=>{var K0=global.process,X8=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(!X8(K0))_9.exports=function(){return function(){}};else{if(BU=i("assert"),J8=Kx(),KU=/^win/i.test(K0.platform),v9=i("events"),typeof v9!=="function")v9=v9.EventEmitter;if(K0.__signal_exit_emitter__)m0=K0.__signal_exit_emitter__;else m0=K0.__signal_exit_emitter__=new v9,m0.count=0,m0.emitted={};if(!m0.infinite)m0.setMaxListeners(1/0),m0.infinite=!0;_9.exports=function(D,$){if(!X8(global.process))return function(){};if(BU.equal(typeof D,"function","a callback must be provided for exit handler"),Y8===!1)BY();var X="exit";if($&&$.alwaysLast)X="afterexit";var Y=function(){if(m0.removeListener(X,D),m0.listeners("exit").length===0&&m0.listeners("afterexit").length===0)w3()};return m0.on(X,D),Y},w3=function(){if(!Y8||!X8(global.process))return;Y8=!1,J8.forEach(function($){try{K0.removeListener($,Z3[$])}catch(X){}}),K0.emit=G3,K0.reallyExit=KY,m0.count-=1},_9.exports.unload=w3,l6=function($,X,Y){if(m0.emitted[$])return;m0.emitted[$]=!0,m0.emit($,X,Y)},Z3={},J8.forEach(function(D){Z3[D]=function(){if(!X8(global.process))return;var X=K0.listeners(D);if(X.length===m0.count){if(w3(),l6("exit",null,D),l6("afterexit",null,D),KU&&D==="SIGHUP")D="SIGINT";K0.kill(K0.pid,D)}}}),_9.exports.signals=function(){return J8},Y8=!1,BY=function(){if(Y8||!X8(global.process))return;Y8=!0,m0.count+=1,J8=J8.filter(function($){try{return K0.on($,Z3[$]),!0}catch(X){return!1}}),K0.emit=HU,K0.reallyExit=WU},_9.exports.load=BY,KY=K0.reallyExit,WU=function($){if(!X8(global.process))return;K0.exitCode=$||0,l6("exit",K0.exitCode,null),l6("afterexit",K0.exitCode,null),KY.call(K0,K0.exitCode)},G3=K0.emit,HU=function($,X){if($==="exit"&&X8(global.process)){if(X!==void 0)K0.exitCode=X;var Y=G3.apply(this,arguments);return l6("exit",K0.exitCode,null),l6("afterexit",K0.exitCode,null),Y}else return G3.apply(this,arguments)}}var BU,J8,KU,v9,m0,w3,l6,Z3,Y8,BY,KY,WU,G3,HU});var Hx=T((DQD,VU)=>{var Wx=Symbol();function sYD(D,$,X){let Y=$[Wx];if(Y)return $.stat(D,(Q,F)=>{if(Q)return X(Q);X(null,F.mtime,Y)});let J=new Date(Math.ceil(Date.now()/1000)*1000+5);$.utimes(D,J,J,(Q)=>{if(Q)return X(Q);$.stat(D,(F,w)=>{if(F)return X(F);let Z=w.mtime.getTime()%1000===0?"s":"ms";Object.defineProperty($,Wx,{value:Z}),X(null,w.mtime,Z)})})}function eYD(D){let $=Date.now();if(D==="s")$=Math.ceil($/1000)*1000;return new Date($)}DQD.probe=sYD;DQD.getMtime=eYD});var Ix=T((GQD,U3)=>{var JQD=i("path"),MU=S0(),YQD=Bx(),QQD=WY(),Vx=Hx(),F6={};function O3(D,$){return $.lockfilePath||`${D}.lock`}function IU(D,$,X){if(!$.realpath)return X(null,JQD.resolve(D));$.fs.realpath(D,X)}function LU(D,$,X){let Y=O3(D,$);$.fs.mkdir(Y,(J)=>{if(!J)return Vx.probe(Y,$.fs,(Q,F,w)=>{if(Q)return $.fs.rmdir(Y,()=>{}),X(Q);X(null,F,w)});if(J.code!=="EEXIST")return X(J);if($.stale<=0)return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));$.fs.stat(Y,(Q,F)=>{if(Q){if(Q.code==="ENOENT")return LU(D,{...$,stale:0},X);return X(Q)}if(!Nx(F,$))return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));Lx(D,$,(w)=>{if(w)return X(w);LU(D,{...$,stale:0},X)})})})}function Nx(D,$){return D.mtime.getTime()<Date.now()-$.stale}function Lx(D,$,X){$.fs.rmdir(O3(D,$),(Y)=>{if(Y&&Y.code!=="ENOENT")return X(Y);X()})}function HY(D,$){let X=F6[D];if(X.updateTimeout)return;if(X.updateDelay=X.updateDelay||$.update,X.updateTimeout=setTimeout(()=>{X.updateTimeout=null,$.fs.stat(X.lockfilePath,(Y,J)=>{let Q=X.lastUpdate+$.stale<Date.now();if(Y){if(Y.code==="ENOENT"||Q)return NU(D,X,Object.assign(Y,{code:"ECOMPROMISED"}));return X.updateDelay=1000,HY(D,$)}if(X.mtime.getTime()!==J.mtime.getTime())return NU(D,X,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let w=Vx.getMtime(X.mtimePrecision);$.fs.utimes(X.lockfilePath,w,w,(Z)=>{let G=X.lastUpdate+$.stale<Date.now();if(X.released)return;if(Z){if(Z.code==="ENOENT"||G)return NU(D,X,Object.assign(Z,{code:"ECOMPROMISED"}));return X.updateDelay=1000,HY(D,$)}X.mtime=w,X.lastUpdate=Date.now(),X.updateDelay=null,HY(D,$)})})},X.updateDelay),X.updateTimeout.unref)X.updateTimeout.unref()}function NU(D,$,X){if($.released=!0,$.updateTimeout)clearTimeout($.updateTimeout);if(F6[D]===$)delete F6[D];$.options.onCompromised(X)}function FQD(D,$,X){$={stale:1e4,update:null,realpath:!0,retries:0,fs:MU,onCompromised:(Y)=>{throw Y},...$},$.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),IU(D,$,(Y,J)=>{if(Y)return X(Y);let Q=YQD.operation($.retries);Q.attempt(()=>{LU(J,$,(F,w,Z)=>{if(Q.retry(F))return;if(F)return X(Q.mainError());let G=F6[J]={lockfilePath:O3(J,$),mtime:w,mtimePrecision:Z,options:$,lastUpdate:Date.now()};HY(J,$),X(null,(O)=>{if(G.released)return O&&O(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));Mx(J,{...$,realpath:!1},O)})})})})}function Mx(D,$,X){$={fs:MU,realpath:!0,...$},IU(D,$,(Y,J)=>{if(Y)return X(Y);let Q=F6[J];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 F6[J],Lx(J,$,X)})}function wQD(D,$,X){$={stale:1e4,realpath:!0,fs:MU,...$},$.stale=Math.max($.stale||0,2000),IU(D,$,(Y,J)=>{if(Y)return X(Y);$.fs.stat(O3(J,$),(Q,F)=>{if(Q)return Q.code==="ENOENT"?X(null,!1):X(Q);return X(null,!Nx(F,$))})})}function ZQD(){return F6}QQD(()=>{for(let D in F6){let $=F6[D].options;try{$.fs.rmdirSync(O3(D,$))}catch(X){}}});GQD.lock=FQD;GQD.unlock=Mx;GQD.check=wQD;GQD.getLocks=ZQD});var Rx=T((TyD,Ax)=>{var BQD=S0();function KQD(D){let $=["mkdir","realpath","stat","rmdir","utimes"],X={...D};return $.forEach((Y)=>{X[Y]=(...J)=>{let Q=J.pop(),F;try{F=D[`${Y}Sync`](...J)}catch(w){return Q(w)}Q(null,F)}}),X}function WQD(D){return(...$)=>new Promise((X,Y)=>{$.push((J,Q)=>{if(J)Y(J);else X(Q)}),D(...$)})}function HQD(D){return(...$)=>{let X,Y;if($.push((J,Q)=>{X=J,Y=Q}),D(...$),X)throw X;return Y}}function VQD(D){if(D={...D},D.fs=KQD(D.fs||BQD),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}Ax.exports={toPromise:WQD,toSync:HQD,toSyncOptions:VQD}});var Ex=T((CyD,n6)=>{var k9=Ix(),{toPromise:VY,toSync:NY,toSyncOptions:AU}=Rx();async function jx(D,$){let X=await VY(k9.lock)(D,$);return VY(X)}function NQD(D,$){let X=NY(k9.lock)(D,AU($));return NY(X)}function LQD(D,$){return VY(k9.unlock)(D,$)}function MQD(D,$){return NY(k9.unlock)(D,AU($))}function IQD(D,$){return VY(k9.check)(D,$)}function AQD(D,$){return NY(k9.check)(D,AU($))}n6.exports=jx;n6.exports.lock=jx;n6.exports.unlock=LQD;n6.exports.lockSync=NQD;n6.exports.unlockSync=MQD;n6.exports.check=IQD;n6.exports.checkSync=AQD});var vx=T((Sx)=>{Object.defineProperty(Sx,"__esModule",{value:!0});Sx.canStoreURLs=Sx.FileUrlStorage=void 0;var Tx=i("fs"),RQD=EQD($x()),Cx=jQD(Ex());function xx(D){if(typeof WeakMap!="function")return null;var $=new WeakMap,X=new WeakMap;return(xx=function(Y){return Y?X:$})(D)}function jQD(D,$){if(!$&&D&&D.__esModule)return D;if(D===null||typeof D!="object"&&typeof D!="function")return{default:D};var X=xx($);if(X&&X.has(D))return X.get(D);var Y={__proto__:null},J=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var Q in D)if(Q!=="default"&&{}.hasOwnProperty.call(D,Q)){var F=J?Object.getOwnPropertyDescriptor(D,Q):null;F&&(F.get||F.set)?Object.defineProperty(Y,Q,F):Y[Q]=D[Q]}return Y.default=D,X&&X.set(D,Y),Y}function EQD(D){return D&&D.__esModule?D:{default:D}}function q3(D){return q3=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},q3(D)}function TQD(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function Px(D,$){for(var X=0;X<$.length;X++){var Y=$[X];if(Y.enumerable=Y.enumerable||!1,Y.configurable=!0,"value"in Y)Y.writable=!0;Object.defineProperty(D,PQD(Y.key),Y)}}function CQD(D,$,X){if($)Px(D.prototype,$);if(X)Px(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function PQD(D){var $=xQD(D,"string");return q3($)=="symbol"?$:$+""}function xQD(D,$){if(q3(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var Y=X.call(D,$||"default");if(q3(Y)!="object")return Y;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var PyD=Sx.canStoreURLs=!0,xyD=Sx.FileUrlStorage=function(){function D($){TQD(this,D),this.path=$}return CQD(D,[{key:"findAllUploads",value:function(){var X=this;return new Promise(function(Y,J){X._getItems("tus::",function(Q,F){if(Q)J(Q);else Y(F)})})}},{key:"findUploadsByFingerprint",value:function(X){var Y=this;return new Promise(function(J,Q){Y._getItems("tus::".concat(X),function(F,w){if(F)Q(F);else J(w)})})}},{key:"removeUpload",value:function(X){var Y=this;return new Promise(function(J,Q){Y._removeItem(X,function(F){if(F)Q(F);else J()})})}},{key:"addUpload",value:function(X,Y){var J=this,Q=Math.round(Math.random()*1000000000000),F="tus::".concat(X,"::").concat(Q);return new Promise(function(w,Z){J._setItem(F,Y,function(G){if(G)Z(G);else w(F)})})}},{key:"_setItem",value:function(X,Y,J){var Q=this;Cx.lock(this.path,this._lockfileOptions()).then(function(F){J=Q._releaseAndCb(F,J),Q._getData(function(w,Z){if(w){J(w);return}Z[X]=Y,Q._writeData(Z,function(G){return J(G)})})}).catch(J)}},{key:"_getItems",value:function(X,Y){this._getData(function(J,Q){if(J){Y(J);return}var F=Object.keys(Q).filter(function(w){return w.startsWith(X)}).map(function(w){var Z=Q[w];return Z.urlStorageKey=w,Z});Y(null,F)})}},{key:"_removeItem",value:function(X,Y){var J=this;Cx.lock(this.path,this._lockfileOptions()).then(function(Q){Y=J._releaseAndCb(Q,Y),J._getData(function(F,w){if(F){Y(F);return}delete w[X],J._writeData(w,function(Z){return Y(Z)})})}).catch(Y)}},{key:"_lockfileOptions",value:function(){return{realpath:!1,retries:{retries:5,minTimeout:20}}}},{key:"_releaseAndCb",value:function(X,Y){return function(J){if(J){X().then(function(){return Y(J)}).catch(function(Q){return Y((0,RQD.default)([J,Q]))});return}X().then(Y).catch(Y)}}},{key:"_writeData",value:function(X,Y){var J={encoding:"utf8",mode:432,flag:"w"};(0,Tx.writeFile)(this.path,JSON.stringify(X),J,function(Q){return Y(Q)})}},{key:"_getData",value:function(X){(0,Tx.readFile)(this.path,"utf8",function(Y,J){if(Y){if(Y.code==="ENOENT")X(null,{});else X(Y);return}try{J=!J.trim().length?{}:JSON.parse(J)}catch(Q){X(Q);return}X(null,J)})}}])}()});var MY=T((i6)=>{Object.defineProperty(i6,"__esModule",{value:!0});Object.defineProperty(i6,"DefaultHttpStack",{enumerable:!0,get:function(){return yx.default}});Object.defineProperty(i6,"DetailedError",{enumerable:!0,get:function(){return uQD.default}});Object.defineProperty(i6,"FileUrlStorage",{enumerable:!0,get:function(){return bx.FileUrlStorage}});Object.defineProperty(i6,"StreamSource",{enumerable:!0,get:function(){return yQD.default}});i6.Upload=void 0;Object.defineProperty(i6,"canStoreURLs",{enumerable:!0,get:function(){return bx.canStoreURLs}});i6.defaultOptions=void 0;Object.defineProperty(i6,"enableDebugLog",{enumerable:!0,get:function(){return vQD.enableDebugLog}});i6.isSupported=void 0;var uQD=Q8(AO()),vQD=RO(),_QD=Q8(ET()),RU=Q8(QC()),kQD=Q8(jC()),fQD=Q8(xC()),yx=Q8(iC()),yQD=Q8(kO()),bx=vx();function Q8(D){return D&&D.__esModule?D:{default:D}}function y9(D){return y9=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},y9(D)}function bQD(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function _x(D,$){for(var X=0;X<$.length;X++){var Y=$[X];if(Y.enumerable=Y.enumerable||!1,Y.configurable=!0,"value"in Y)Y.writable=!0;Object.defineProperty(D,gx(Y.key),Y)}}function hQD(D,$,X){if($)_x(D.prototype,$);if(X)_x(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function gQD(D,$,X){return $=LY($),mQD(D,hx()?Reflect.construct($,X||[],LY(D).constructor):$.apply(D,X))}function mQD(D,$){if($&&(y9($)==="object"||typeof $==="function"))return $;else if($!==void 0)throw TypeError("Derived constructors may only return object or undefined");return dQD(D)}function dQD(D){if(D===void 0)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return D}function hx(){try{var D=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch($){}return(hx=function(){return!!D})()}function LY(D){return LY=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(X){return X.__proto__||Object.getPrototypeOf(X)},LY(D)}function cQD(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}),$)jU(D,$)}function jU(D,$){return jU=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(Y,J){return Y.__proto__=J,Y},jU(D,$)}function kx(D,$){var X=Object.keys(D);if(Object.getOwnPropertySymbols){var Y=Object.getOwnPropertySymbols(D);$&&(Y=Y.filter(function(J){return Object.getOwnPropertyDescriptor(D,J).enumerable})),X.push.apply(X,Y)}return X}function f9(D){for(var $=1;$<arguments.length;$++){var X=arguments[$]!=null?arguments[$]:{};$%2?kx(Object(X),!0).forEach(function(Y){lQD(D,Y,X[Y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(X)):kx(Object(X)).forEach(function(Y){Object.defineProperty(D,Y,Object.getOwnPropertyDescriptor(X,Y))})}return D}function lQD(D,$,X){if($=gx($),$ in D)Object.defineProperty(D,$,{value:X,enumerable:!0,configurable:!0,writable:!0});else D[$]=X;return D}function gx(D){var $=nQD(D,"string");return y9($)=="symbol"?$:$+""}function nQD(D,$){if(y9(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var Y=X.call(D,$||"default");if(y9(Y)!="object")return Y;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var fx=i6.defaultOptions=f9(f9({},RU.default.defaultOptions),{},{httpStack:new yx.default,fileReader:new kQD.default,urlStorage:new _QD.default,fingerprint:fQD.default}),uyD=i6.Upload=function(D){function $(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return bQD(this,$),Y=f9(f9({},fx),Y),gQD(this,$,[X,Y])}return cQD($,D),hQD($,null,[{key:"terminate",value:function(Y){var J=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return J=f9(f9({},fx),J),RU.default.terminate(Y,J)}}])}(RU.default),vyD=i6.isSupported=!0});var V$;var z3=o(()=>{V$={name:"@capgo/cli",type:"module",version:"7.83.1",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && bun build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsc --noEmit",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:credentials":"bun test/test-credentials.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:build-zip-filter":"bun test/test-build-zip-filter.mjs","test:checksum":"bun test/test-checksum-algorithm.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:"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:build-zip-filter && bun run test:checksum && bun run test:esm-sdk && bun run test:mcp && bun run test:version-detection && bun run test:platform-paths && bun run test:payload-split"},devDependencies:{"@antfu/eslint-config":"^7.0.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^8.0.0","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^1.0.0","@modelcontextprotocol/sdk":"^1.25.3","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.79.0","@types/adm-zip":"^0.5.7","@types/node":"^25.0.0","@types/prettyjson":"^0.0.33","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16","ci-info":"^4.3.1",commander:"^14.0.2",eslint:"^9.38.0","git-format-staged":"4.0.1",husky:"^9.1.7","is-wsl":"^3.1.0",micromatch:"^4.0.8",open:"^11.0.0",prettyjson:"^1.2.5",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3",partysocket:"^1.1.11",ws:"^8.18.3",zod:"^4.3.6"}}});async function IY(D){try{let X=`https://registry.npmjs.org/${encodeURIComponent(D.toLowerCase())}`,Y=await fetch(X,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});if(!Y.ok)return null;return(await Y.json())["dist-tags"]?.latest||null}catch{return null}}async function F0(){let D=await IY("@capgo/cli")??"",$=D?.split(".")[0];if(D!==V$.version)H.warning(`\uD83D\uDEA8 You are using @capgo/cli@${V$.version} it's not the latest version.
|
|
131
131
|
Please use @capgo/cli@${D}" or @capgo/cli@${$} to keep up to date with the latest features and bug fixes.`)}var q1=o(()=>{vD();z3()});async function lx(D,$,X,Y,J,Q="✅"){await RD(X,{channel:D,event:Y,icon:Q,user_id:$,...J?{tags:{"app-id":J}}:{},notify:!1})}var nx=o(()=>{vD();e$();q1();fD()});import{Buffer as ix}from"node:buffer";import{createHash as pQD}from"node:crypto";function oQD(D){let $=4294967295;for(let X=0;X<D.length;X++){let Y=D[X];$=rQD[($^Y)&255]^$>>>8}return $=$^4294967295,($>>>0).toString(16).padStart(8,"0")}async function p6(D,$="sha256"){let X=ix.isBuffer(D)?D:ix.from(D);if($==="crc32")return oQD(X);let Y=pQD($);return Y.update(X),Y.digest("hex")}var rQD;var B3=o(()=>{rQD=(()=>{let D=[];for(let $=0;$<256;$++){let X=$;for(let Y=0;Y<8;Y++)X=X&1?3988292384^X>>>1:X>>>1;D[$]=X}return D})()});var rx=T((oyD,px)=>{var b9=1000,h9=b9*60,g9=h9*60,F8=g9*24,aQD=F8*7,tQD=F8*365.25;px.exports=function(D,$){$=$||{};var X=typeof D;if(X==="string"&&D.length>0)return sQD(D);else if(X==="number"&&isFinite(D))return $.long?DFD(D):eQD(D);throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(D))};function sQD(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]),Y=($[2]||"ms").toLowerCase();switch(Y){case"years":case"year":case"yrs":case"yr":case"y":return X*tQD;case"weeks":case"week":case"w":return X*aQD;case"days":case"day":case"d":return X*F8;case"hours":case"hour":case"hrs":case"hr":case"h":return X*g9;case"minutes":case"minute":case"mins":case"min":case"m":return X*h9;case"seconds":case"second":case"secs":case"sec":case"s":return X*b9;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return X;default:return}}function eQD(D){var $=Math.abs(D);if($>=F8)return Math.round(D/F8)+"d";if($>=g9)return Math.round(D/g9)+"h";if($>=h9)return Math.round(D/h9)+"m";if($>=b9)return Math.round(D/b9)+"s";return D+"ms"}function DFD(D){var $=Math.abs(D);if($>=F8)return AY(D,$,F8,"day");if($>=g9)return AY(D,$,g9,"hour");if($>=h9)return AY(D,$,h9,"minute");if($>=b9)return AY(D,$,b9,"second");return D+" ms"}function AY(D,$,X,Y){var J=$>=X*1.5;return Math.round(D/X)+" "+Y+(J?"s":"")}});var EU=T((ayD,ox)=>{function $FD(D){X.debug=X,X.default=X,X.coerce=Z,X.disable=F,X.enable=J,X.enabled=w,X.humanize=rx(),X.destroy=G,Object.keys(D).forEach((O)=>{X[O]=D[O]}),X.names=[],X.skips=[],X.formatters={};function $(O){let U=0;for(let z=0;z<O.length;z++)U=(U<<5)-U+O.charCodeAt(z),U|=0;return X.colors[Math.abs(U)%X.colors.length]}X.selectColor=$;function X(O){let U,z=null,q,B;function K(...L){if(!K.enabled)return;let M=K,I=Number(new Date),W=I-(U||I);if(M.diff=W,M.prev=U,M.curr=I,U=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,P)=>{if(R==="%%")return"%";N++;let A=X.formatters[P];if(typeof A==="function"){let _=L[N];R=A.call(M,_),L.splice(N,1),N--}return R}),X.formatArgs.call(M,L),(M.log||X.log).apply(M,L)}if(K.namespace=O,K.useColors=X.useColors(),K.color=X.selectColor(O),K.extend=Y,K.destroy=X.destroy,Object.defineProperty(K,"enabled",{enumerable:!0,configurable:!1,get:()=>{if(z!==null)return z;if(q!==X.namespaces)q=X.namespaces,B=X.enabled(O);return B},set:(L)=>{z=L}}),typeof X.init==="function")X.init(K);return K}function Y(O,U){let z=X(this.namespace+(typeof U>"u"?":":U)+O);return z.log=this.log,z}function J(O){X.save(O),X.namespaces=O,X.names=[],X.skips=[];let U=(typeof O==="string"?O:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let z of U)if(z[0]==="-")X.skips.push(z.slice(1));else X.names.push(z)}function Q(O,U){let z=0,q=0,B=-1,K=0;while(z<O.length)if(q<U.length&&(U[q]===O[z]||U[q]==="*"))if(U[q]==="*")B=q,K=z,q++;else z++,q++;else if(B!==-1)q=B+1,K++,z=K;else return!1;while(q<U.length&&U[q]==="*")q++;return q===U.length}function F(){let O=[...X.names,...X.skips.map((U)=>"-"+U)].join(",");return X.enable(""),O}function w(O){for(let U of X.skips)if(Q(O,U))return!1;for(let U of X.names)if(Q(O,U))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}ox.exports=$FD});var tx=T((ax,RY)=>{ax.formatArgs=JFD;ax.save=YFD;ax.load=QFD;ax.useColors=XFD;ax.storage=FFD();ax.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`.")}})();ax.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 XFD(){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 JFD(D){if(D[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+D[0]+(this.useColors?"%c ":" ")+"+"+RY.exports.humanize(this.diff),!this.useColors)return;let $="color: "+this.color;D.splice(1,0,$,"color: inherit");let X=0,Y=0;D[0].replace(/%[a-zA-Z%]/g,(J)=>{if(J==="%%")return;if(X++,J==="%c")Y=X}),D.splice(Y,0,$)}ax.log=console.debug||console.log||(()=>{});function YFD(D){try{if(D)ax.storage.setItem("debug",D);else ax.storage.removeItem("debug")}catch($){}}function QFD(){let D;try{D=ax.storage.getItem("debug")||ax.storage.getItem("DEBUG")}catch($){}if(!D&&typeof process<"u"&&"env"in process)D=process.env.DEBUG;return D}function FFD(){try{return localStorage}catch(D){}}RY.exports=EU()(ax);var{formatters:wFD}=RY.exports;wFD.j=function(D){try{return JSON.stringify(D)}catch($){return"[UnexpectedJSONParseError]: "+$.message}}});var ex=T((syD,sx)=>{sx.exports=(D,$=process.argv)=>{let X=D.startsWith("-")?"":D.length===1?"-":"--",Y=$.indexOf(X+D),J=$.indexOf("--");return Y!==-1&&(J===-1||Y<J)}});var XS=T((eyD,$S)=>{var KFD=i("os"),DS=i("tty"),D$=ex(),{env:l0}=process,r6;if(D$("no-color")||D$("no-colors")||D$("color=false")||D$("color=never"))r6=0;else if(D$("color")||D$("colors")||D$("color=true")||D$("color=always"))r6=1;if("FORCE_COLOR"in l0)if(l0.FORCE_COLOR==="true")r6=1;else if(l0.FORCE_COLOR==="false")r6=0;else r6=l0.FORCE_COLOR.length===0?1:Math.min(parseInt(l0.FORCE_COLOR,10),3);function TU(D){if(D===0)return!1;return{level:D,hasBasic:!0,has256:D>=2,has16m:D>=3}}function CU(D,$){if(r6===0)return 0;if(D$("color=16m")||D$("color=full")||D$("color=truecolor"))return 3;if(D$("color=256"))return 2;if(D&&!$&&r6===void 0)return 0;let X=r6||0;if(l0.TERM==="dumb")return X;if(process.platform==="win32"){let Y=KFD.release().split(".");if(Number(Y[0])>=10&&Number(Y[2])>=10586)return Number(Y[2])>=14931?3:2;return 1}if("CI"in l0){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((Y)=>(Y in l0))||l0.CI_NAME==="codeship")return 1;return X}if("TEAMCITY_VERSION"in l0)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(l0.TEAMCITY_VERSION)?1:0;if(l0.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in l0){let Y=parseInt((l0.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(l0.TERM_PROGRAM){case"iTerm.app":return Y>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(l0.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(l0.TERM))return 1;if("COLORTERM"in l0)return 1;return X}function WFD(D){let $=CU(D,D&&D.isTTY);return TU($)}$S.exports={supportsColor:WFD,stdout:TU(CU(!0,DS.isatty(1))),stderr:TU(CU(!0,DS.isatty(2)))}});var FS=T((YS,EY)=>{var HFD=i("tty"),jY=i("util");YS.init=RFD;YS.log=MFD;YS.formatArgs=NFD;YS.save=IFD;YS.load=AFD;YS.useColors=VFD;YS.destroy=jY.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");YS.colors=[6,2,3,4,5,1];try{let D=XS();if(D&&(D.stderr||D).level>=2)YS.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){}YS.inspectOpts=Object.keys(process.env).filter((D)=>{return/^debug_/i.test(D)}).reduce((D,$)=>{let X=$.substring(6).toLowerCase().replace(/_([a-z])/g,(J,Q)=>{return Q.toUpperCase()}),Y=process.env[$];if(/^(yes|on|true|enabled)$/i.test(Y))Y=!0;else if(/^(no|off|false|disabled)$/i.test(Y))Y=!1;else if(Y==="null")Y=null;else Y=Number(Y);return D[X]=Y,D},{});function VFD(){return"colors"in YS.inspectOpts?Boolean(YS.inspectOpts.colors):HFD.isatty(process.stderr.fd)}function NFD(D){let{namespace:$,useColors:X}=this;if(X){let Y=this.color,J="\x1B[3"+(Y<8?Y:"8;5;"+Y),Q=` ${J};1m${$} \x1B[0m`;D[0]=Q+D[0].split(`
|
|
132
132
|
`).join(`
|
|
133
133
|
`+Q),D.push(J+"m+"+EY.exports.humanize(this.diff)+"\x1B[0m")}else D[0]=LFD()+$+" "+D[0]}function LFD(){if(YS.inspectOpts.hideDate)return"";return new Date().toISOString()+" "}function MFD(...D){return process.stderr.write(jY.formatWithOptions(YS.inspectOpts,...D)+`
|
|
@@ -463,7 +463,7 @@ const partysocket = new PartySocket({
|
|
|
463
463
|
`),$t=!0;let Q=this._options.WebSocket||WebSocket;this._debug("connect",{url:Y,protocols:J}),this._ws=J?new Q(Y,J):new Q(Y),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),X)}).catch((Y)=>{this._connectLock=!1,this._handleError(new bL.ErrorEvent(Error(Y.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new bL.ErrorEvent(Error("TIMEOUT"),this))}_disconnect($=1000,X){if(this._clearTimeouts(),!this._ws)return;this._removeListeners();try{if(this._ws.readyState===this.OPEN||this._ws.readyState===this.CONNECTING)this._ws.close($,X);this._handleClose(new bL.CloseEvent($,X,this))}catch(Y){}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_handleOpen=($)=>{this._debug("open event");let{minUptime:X=f8.minUptime}=this._options;if(clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),X),aED(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach((Y)=>{this._ws?.send(Y)}),this._messageQueue=[],this.onopen)this.onopen($);this.dispatchEvent(BZ($))};_handleMessage=($)=>{if(this._debug("message event"),this.onmessage)this.onmessage($);this.dispatchEvent(BZ($))};_handleError=($)=>{if(this._debug("error event",$.message),this._disconnect(void 0,$.message==="TIMEOUT"?"timeout":void 0),this.onerror)this.onerror($);this._debug("exec error listeners"),this.dispatchEvent(BZ($)),this._connect()};_handleClose=($)=>{if(this._debug("close event"),this._clearTimeouts(),this._shouldReconnect)this._connect();if(this.onclose)this.onclose($);this.dispatchEvent(BZ($))};_removeListeners(){if(!this._ws)return;this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError)}_addListeners(){if(!this._ws)return;this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError)}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};var PZ=V0(MY(),1);var LCD=V0(st(),1),MCD=V0(lL(),1),ICD=V0(iL(),1),Fs=V0(jZ(),1),ACD=V0(Qs(),1);var ws=Fs.default;z3();fD();import{mkdir as lrD,readFile as RCD,writeFile as nrD}from"node:fs/promises";import{homedir as jCD}from"node:os";import{join as DM}from"node:path";import{cwd as ECD,env as TCD}from"node:process";var CCD=DM(jCD(),".capgo-credentials"),PCD=DM(CCD,"credentials.json"),xCD=".capgo-credentials.json",Y7=3600,Zs=604800;function SCD(D){return D?DM(ECD(),xCD):PCD}function $M(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 Y=Number.parseInt(X[1],10),J=(X[2]||"s").toLowerCase(),F=Y*(J==="s"?1:J==="m"?60:J==="h"?3600:86400);if(F<Y7)throw Error(`output-retention must be at least ${Y7} seconds (1h)`);if(F>Zs)throw Error(`output-retention must be at most ${Zs} seconds (7d)`);return F}function W2(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)")}async function eL(D){try{let $=SCD(D),X=await RCD($,"utf-8");return JSON.parse(X)}catch{return{}}}async function uCD(D,$){if($!==void 0){let J=await eL($);if(!D){let Q=Object.keys(J);if(Q.length===0)return null;return J[Q[0]]||null}return J[D]||null}let X=await eL(!0),Y=await eL(!1);if(!D){let J=Object.keys(X);if(J.length>0)return X[J[0]]||null;let Q=Object.keys(Y);if(Q.length===0)return null;return Y[Q[0]]||null}return X[D]||Y[D]||null}function b0(D){return TCD[D]}function vCD(){let D={},$=b0("BUILD_CERTIFICATE_BASE64"),X=b0("BUILD_PROVISION_PROFILE_BASE64"),Y=b0("BUILD_PROVISION_PROFILE_BASE64_PROD"),J=b0("P12_PASSWORD"),Q=b0("APPLE_KEY_ID"),F=b0("APPLE_ISSUER_ID"),w=b0("APPLE_KEY_CONTENT"),Z=b0("APPLE_PROFILE_NAME"),G=b0("APP_STORE_CONNECT_TEAM_ID"),O=b0("CAPGO_IOS_SCHEME"),U=b0("CAPGO_IOS_TARGET"),z=b0("ANDROID_KEYSTORE_FILE"),q=b0("KEYSTORE_KEY_ALIAS"),B=b0("KEYSTORE_KEY_PASSWORD"),K=b0("KEYSTORE_STORE_PASSWORD"),L=b0("PLAY_CONFIG_JSON"),M=b0("BUILD_OUTPUT_UPLOAD_ENABLED"),I=b0("BUILD_OUTPUT_RETENTION_SECONDS"),W=b0("SKIP_BUILD_NUMBER_BUMP"),N=b0("CAPGO_IOS_DISTRIBUTION");if($)D.BUILD_CERTIFICATE_BASE64=$;if(X)D.BUILD_PROVISION_PROFILE_BASE64=X;if(Y)D.BUILD_PROVISION_PROFILE_BASE64_PROD=Y;if(J)D.P12_PASSWORD=J;if(Q)D.APPLE_KEY_ID=Q;if(F)D.APPLE_ISSUER_ID=F;if(w)D.APPLE_KEY_CONTENT=w;if(Z)D.APPLE_PROFILE_NAME=Z;if(G)D.APP_STORE_CONNECT_TEAM_ID=G;if(O)D.CAPGO_IOS_SCHEME=O;if(U)D.CAPGO_IOS_TARGET=U;if(N)D.CAPGO_IOS_DISTRIBUTION=N;if(z)D.ANDROID_KEYSTORE_FILE=z;if(q)D.KEYSTORE_KEY_ALIAS=q;if(B)D.KEYSTORE_KEY_PASSWORD=B;if(K)D.KEYSTORE_STORE_PASSWORD=K;if(L)D.PLAY_CONFIG_JSON=L;if(M)D.BUILD_OUTPUT_UPLOAD_ENABLED=W2(M)?"true":"false";if(I)D.BUILD_OUTPUT_RETENTION_SECONDS=String($M(I));if(W)D.SKIP_BUILD_NUMBER_BUMP=W2(W)?"true":"false";return D}async function Gs(D,$,X){let Y=await uCD(D),J=vCD(),Q={...Y?.[$]||{}};if(Object.assign(Q,J),X)Object.assign(Q,X);if($==="android"){let F=!!Q.KEYSTORE_KEY_PASSWORD,w=!!Q.KEYSTORE_STORE_PASSWORD;if(F&&!w)Q.KEYSTORE_STORE_PASSWORD=Q.KEYSTORE_KEY_PASSWORD;else if(!F&&w)Q.KEYSTORE_KEY_PASSWORD=Q.KEYSTORE_STORE_PASSWORD}return Object.keys(Q).length>0?Q:void 0}var zs=Promise.resolve();async function cCD(D,$){let X=async()=>{let J=Ws();try{qs(D)}catch(Q){throw Error(`Failed to change working directory to "${D}": ${Q.message}`)}try{return await $()}finally{try{qs(J)}catch{}}},Y=zs.then(X,X);return zs=Y.then(()=>{return},()=>{return}),Y}async function lCD(D,$,X=3,Y=!1){let J=[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 w=await F.text().catch(()=>"unknown error");if(!Y)H.warn(`Build request attempt ${Q}/${X} failed: ${F.status} - ${w}`);if(Q<X){let Z=J[Q-1]||5000;if(!Y)H.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} - ${w}`)}catch(F){let w=F instanceof Error?F.message:String(F);if(w.startsWith("Failed to request build after"))throw F;if(!Y)H.warn(`Build request attempt ${Q}/${X} failed: ${w}`);if(Q<X){let Z=J[Q-1]||5000;if(!Y)H.info(`Retrying in ${Z/1000}s...`);await new Promise((G)=>setTimeout(G,Z))}else throw Error(`Failed to request build after ${X} attempts: ${w}`)}throw Error("Unexpected error in fetchWithRetry")}var nCD=["succeeded","failed","expired","released","cancelled"],CZ=new Set(nCD);async function iCD(D,$=!1,X,Y,J,Q,F){if(D)return null;let w=null,Z=!1,G=(U)=>{if(!U.trim())return;if(w)return;if(!Z)Z=!0,console.log("");console.log(U)},O=async()=>{if(!X||!Y)return null;let U=X.replace(/\/+$/,""),z=`${U}/start`,B=`${U}/stream?token=${encodeURIComponent(Y)}`.replace(/^https:/,"wss:").replace(/^http:/,"ws:");if(!D)console.log("Connecting to log streaming...");let K=await fetch(z,{method:"POST",headers:{"x-capgo-log-token":Y}});if(!K.ok){let L=await K.text().catch(()=>"unknown error");if(!D)console.warn(`Could not start log session (${K.status}): ${L}`);return null}return await new Promise((L)=>{let M=!1,I=10,W=0,N=!1,V=new a5(B,void 0,{maxRetries:I,WebSocket:ws}),R=null,P=0,A=Date.now(),_=!1,v=2000,x=4,h=CZ,b=null,l=null,f=(S)=>{if(M)return;if(M=!0,l)clearTimeout(l),l=null;if(R)clearInterval(R),R=null;if(Q&&b)Q.removeEventListener("abort",b),b=null;try{V.close()}catch{}L(S)};if(l=setTimeout(()=>{if(!M){if(!D)console.warn("Log streaming timed out after 3 hours");f(null)}},10800000),(()=>{if(R)return;R=setInterval(async()=>{try{if(V.readyState===a5.OPEN)V.send(JSON.stringify({type:"heartbeat",lastId:P}));let S=Date.now();if(J&&!_&&S-A>=v*x){_=!0;try{let u=await J();if(u&&h.has(u))w=u,f(w)}finally{_=!1}}}catch(S){if(!D)H.warn(`Heartbeat encountered an error, continuing... ${String(S)}`)}},v)})(),Q){if(b=()=>{if(!M)f("cancelled")},Q.aborted){f("cancelled");return}Q.addEventListener("abort",b)}V.addEventListener("message",(S)=>{let u="";if(typeof S.data==="string")u=S.data;else if(S.data instanceof ArrayBuffer)u=new TextDecoder().decode(S.data);else if(ArrayBuffer.isView(S.data)){let g=S.data;u=new TextDecoder().decode(new Uint8Array(g.buffer,g.byteOffset,g.byteLength))}else if(S.data&&typeof S.data.toString==="function")u=S.data.toString();let y=null;try{y=JSON.parse(u)}catch{y=null}let d=(g)=>{if(g.type==="status"&&typeof g.status==="string"){let e=g.status.toLowerCase();if(A=Date.now(),h.has(e))w=e;return}if(g.type==="log"&&typeof g.message==="string"){A=Date.now(),G(g.message);return}if(typeof g.message==="string")A=Date.now(),G(g.message)};if(y?.type==="heartbeat_response")return;if(y?.type==="batch_messages"&&Array.isArray(y.messages)){let g=P;for(let e of y.messages)if(d(e),typeof e.id==="number")g=Math.max(g,e.id);if(g>P){if(P=g,V.readyState===a5.OPEN)try{V.send(JSON.stringify({type:"confirmed_received",lastId:g}))}catch(e){if(!D)H.warn(`Failed to send log confirmation, continuing... ${String(e)}`)}}}else{if(y)d(y);else if(u)A=Date.now(),G(u);if(y&&typeof y.id==="number"){if(P=y.id,V.readyState===a5.OPEN)try{V.send(JSON.stringify({type:"confirmed_received",lastId:y.id}))}catch(g){if(!D)H.warn(`Failed to send log confirmation, continuing... ${String(g)}`)}}}if(w)f(w)}),V.addEventListener("error",()=>{if(W+=1,!D)console.warn(`Log stream encountered an error, retrying (${W}/${I})...`);if(!N&&W>=I){if(N=!0,!D)H.warn("Log stream retry limit reached. Falling back to status checks.");if(F)F();f(null)}}),V.addEventListener("close",()=>{if(M)return;if(w){f(w);return}if(!D)H.warn("Log stream closed, waiting for reconnect...")})})};try{let U=await O();if(U||w)return U||w}catch(U){if(!D)H.warn(`Direct log streaming failed${U instanceof Error?`: ${U.message}`:""}`)}return w}async function pCD(D,$,X,Y,J,Q,F=!1,w){let G=0;while(G<120){if(w?.aborted)return"cancelled";try{let O=await fetch(`${D}/build/status?job_id=${encodeURIComponent($)}&app_id=${encodeURIComponent(X)}&platform=${Y}`,{headers:{authorization:J},signal:w});if(!O.ok){if(!Q)H.warn(`Status check failed: ${O.status}`);await new Promise((q)=>setTimeout(q,5000)),G++;continue}let U=await O.json(),z=U.status?.toLowerCase?.()??"";if(!Q&&F)H.info(`Build status: ${z||U.status}`);if(CZ.has(z))return z;await new Promise((q)=>setTimeout(q,5000)),G++}catch(O){if(w?.aborted)return"cancelled";if(!Q)H.warn(`Status check error: ${O}`);await new Promise((U)=>setTimeout(U,5000)),G++}}if(!Q)H.warn("Build status polling timed out");return"timeout"}async function rCD(D,$,X){let Y=new Set,J=!1,Q=!1;if($==="ios"){let F=t$(D,X,"App","CapApp-SPM","Package.swift");if(V2(F)){J=!0;let G=(await XM(F,"utf-8")).matchAll(/\.package\s*\([^)]*path:\s*["'](?:\.\.\/)*node_modules\/([^"']+)["']\s*\)/g);for(let O of G){let U=O[1],z=U.lastIndexOf("node_modules/");if(z!==-1)U=U.substring(z+13);Y.add(U)}}let w=t$(D,X);if(V2(w)){let Z=[t$(w,"App","Podfile"),t$(w,"Podfile")];for(let O of Ks(w,{withFileTypes:!0}))if(O.isDirectory())Z.push(t$(w,O.name,"Podfile"));let G=[...new Set(Z)].filter((O)=>V2(O));if(G.length>0)Q=!0;for(let O of G){let z=(await XM(O,"utf-8")).matchAll(/pod\s+['"][^'"]+['"],\s*:path\s*=>\s*['"](?:\.\.\/)+node_modules\/([^'"]+)['"]/g);for(let q of z){let B=q[1],K=B.lastIndexOf("node_modules/");if(K!==-1)B=B.substring(K+13);Y.add(B)}}}}else if($==="android"){let F=t$(D,X,"capacitor.settings.gradle");if(V2(F)){let Z=(await XM(F,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let G of Z){let O=G[1],U=O.lastIndexOf("node_modules/");if(U!==-1)O=O.substring(U+13);let z=O.replace(/\/(android|capacitor)$/,"");Y.add(z)}}}return{packages:Y,usesSPM:J,usesCocoaPods:Q}}function Bs(D,$,X,Y){let J=D.replace(/\\/g,"/");if(J.startsWith(`${Y}/`))return!0;if(J==="package.json"||J==="package-lock.json"||J.startsWith("capacitor.config."))return!0;if(J.startsWith("resources/"))return!0;if($==="ios"&&J.startsWith("node_modules/@capacitor/ios/"))return!0;if($==="android"&&J.startsWith("node_modules/@capacitor/android/"))return!0;for(let Q of X.packages){let F=`node_modules/${Q}/`;if(J===`${F}package.json`)return!0;if($==="android"){if(J.startsWith(`${F}android/`))return!0}else if($==="ios"){if(J.startsWith(`${F}ios/`))return!0;if(X.usesSPM){if(J===`${F}Package.swift`)return!0}if(X.usesCocoaPods||!X.usesSPM){if(J.startsWith(F)&&J.endsWith(".podspec"))return!0}}}return!1}function TZ(D,$,X,Y,J,Q){let F=Ks($);for(let w of F){let Z=t$($,w),G=X?`${X}/${w}`:w,O=fCD(Z);if(O.isDirectory()){if(w===".git"||w==="dist"||w==="build"||w===".angular"||w===".vite"||w===".gradle"||w===".idea"||w===".swiftpm")continue;if(w==="node_modules"){TZ(D,Z,G,Y,J,Q);continue}if(w==="resources"){TZ(D,Z,G,Y,J,Q);continue}let U=G.replace(/\\/g,"/");if(Bs(G,Y,J,Q)||Q===U||Q.startsWith(`${U}/`)||Array.from(J.packages).some((q)=>{return`node_modules/${q}/`.startsWith(`${U}/`)||U.startsWith(`node_modules/${q}`)}))TZ(D,Z,G,Y,J,Q)}else if(O.isFile()){if(w===".DS_Store"||w.endsWith(".log"))continue;if(Bs(G,Y,J,Q))D.addLocalFile(Z,X||void 0)}}}async function oCD(D,$,X,Y){let J=H2(Y,X),Q=await rCD(D,X,J),F=new Hs.default;TZ(F,D,"",X,Q,J);let w=/node_modules\/\.pnpm\/[^/\n\r]+(?:\/[^/\n\r]+)*\/node_modules\//g,Z=new Set(["",".gradle",".swift",".json",".lock",".xml",".properties",".pbxproj",".xcconfig",".plist",".podspec",".rb",".yaml",".yml"]);for(let O of F.getEntries()){if(O.isDirectory)continue;let U=O.entryName.includes(".")?`.${O.entryName.split(".").pop()}`:"",z=O.entryName.split("/").pop()||"";if(!Z.has(U)&&z!=="Podfile")continue;let q=O.getData().toString("utf-8"),B=q.replace(w,"node_modules/");if(X==="ios")B=B.replace(/(?:\.\.\/){4,}(ios\/)/g,"../../../$1");if(B!==q)F.updateFile(O.entryName,Os.from(B,"utf-8"))}let G=t$(D,"capacitor.config.json");if(Y&&!V2(G)){let O=`${JSON.stringify(Y,null,2)}
|
|
464
464
|
`;F.addFile("capacitor.config.json",Os.from(O,"utf-8"))}await gCD($,F.toBuffer())}var aCD=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"]);function tCD(D,$,X,Y){let J={platform:$,buildMode:X,cliVersion:Y,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,outputUploadEnabled:D.BUILD_OUTPUT_UPLOAD_ENABLED==="true",outputRetentionSeconds:D.BUILD_OUTPUT_RETENTION_SECONDS?Number.parseInt(D.BUILD_OUTPUT_RETENTION_SECONDS,10)||Y7:Y7,skipBuildNumberBump:D.SKIP_BUILD_NUMBER_BUMP==="true"},Q={};for(let[F,w]of Object.entries(D))if(!aCD.has(F)&&w!==void 0)Q[F]=w;return{buildOptions:J,buildCredentials:Q}}async function Vs(D,$,X=!1){let Y=Date.now(),J=$.verbose??!1;try{$.apikey=$.apikey||BD(X);let Q=dCD($.path||Ws()),F=await cCD(Q,()=>ID());if(D=D||F?.config?.appId,!D)throw Error("Missing argument, you need to provide a appId, or be in a capacitor project");if(!$.platform)throw Error("Missing required argument: --platform <ios|android>");if($.platform!=="ios"&&$.platform!=="android")throw Error(`Invalid platform "${$.platform}". Must be "ios" or "android"`);let w=$.supaHost||"https://api.capgo.app",Z=await jD($.apikey,$.supaHost,$.supaAnon);await xD(Z,$.apikey,["write","all"]);let G=await o0(Z,D);if(!X)H.info(`Requesting native build for ${D}`),H.info(`Platform: ${$.platform}`),H.info(`Project: ${Q}`),H.info(`
|
|
465
465
|
\uD83D\uDD12 Security: Credentials are never stored on Capgo servers`),H.info(" They are used only during build and deleted after"),H.info(` Build outputs can optionally be uploaded for time-limited download links
|
|
466
|
-
`);if(J)H.info(`API host: ${w}`);let O={};if($.buildCertificateBase64)O.BUILD_CERTIFICATE_BASE64=$.buildCertificateBase64;if($.buildProvisionProfileBase64)O.BUILD_PROVISION_PROFILE_BASE64=$.buildProvisionProfileBase64;if($.buildProvisionProfileBase64Prod)O.BUILD_PROVISION_PROFILE_BASE64_PROD=$.buildProvisionProfileBase64Prod;if($.p12Password)O.P12_PASSWORD=$.p12Password;if($.appleKeyId)O.APPLE_KEY_ID=$.appleKeyId;if($.appleIssuerId)O.APPLE_ISSUER_ID=$.appleIssuerId;if($.appleKeyContent)O.APPLE_KEY_CONTENT=$.appleKeyContent;if($.appleProfileName)O.APPLE_PROFILE_NAME=$.appleProfileName;if($.appStoreConnectTeamId)O.APP_STORE_CONNECT_TEAM_ID=$.appStoreConnectTeamId;if($.iosScheme)O.CAPGO_IOS_SCHEME=$.iosScheme;if($.iosTarget)O.CAPGO_IOS_TARGET=$.iosTarget;if($.iosDistribution)O.CAPGO_IOS_DISTRIBUTION=$.iosDistribution;if($.androidKeystoreFile)O.ANDROID_KEYSTORE_FILE=$.androidKeystoreFile;if($.keystoreKeyAlias)O.KEYSTORE_KEY_ALIAS=$.keystoreKeyAlias;let U=!!$.keystoreKeyPassword,z=!!$.keystoreStorePassword;if(U&&!z)O.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,O.KEYSTORE_STORE_PASSWORD=$.keystoreKeyPassword;else if(!U&&z)O.KEYSTORE_KEY_PASSWORD=$.keystoreStorePassword,O.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword;else if(U&&z)O.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,O.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword;if($.playConfigJson)O.PLAY_CONFIG_JSON=$.playConfigJson;if($.outputUpload!==void 0)O.BUILD_OUTPUT_UPLOAD_ENABLED=W2($.outputUpload)?"true":"false";if($.outputRetention)O.BUILD_OUTPUT_RETENTION_SECONDS=String($M($.outputRetention));if($.skipBuildNumberBump!==void 0)O.SKIP_BUILD_NUMBER_BUMP=W2($.skipBuildNumberBump)?"true":"false";let q=await Gs(D,$.platform,Object.keys(O).length>0?O:void 0),B=H2(F?.config,$.platform);if(q&&B)if($.platform==="ios")q.CAPGO_IOS_SOURCE_DIR=B,q.CAPGO_IOS_APP_DIR=B,q.CAPGO_IOS_PROJECT_DIR=B,q.IOS_PROJECT_DIR=B;else q.CAPGO_ANDROID_SOURCE_DIR=B,q.CAPGO_ANDROID_APP_DIR=B,q.CAPGO_ANDROID_PROJECT_DIR=B,q.ANDROID_PROJECT_DIR=B;if(!q){if(!X)H.error("❌ No credentials found for this app and platform"),H.error(""),H.error("You must provide credentials via:"),H.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),H.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),H.error(" 3. Saved credentials file:"),H.error(` npx @capgo/cli build credentials save --appId ${D} --platform ${$.platform}`),H.error(""),H.error("Documentation:"),H.error(" https://capgo.app/docs/cli/cloud-build/credentials/");throw Error("No credentials found. Please provide credentials before building.")}let K=[];if($.platform==="ios"){let A=q.CAPGO_IOS_DISTRIBUTION,_=["app_store","ad_hoc"];if(A&&!_.includes(A))K.push(`Invalid CAPGO_IOS_DISTRIBUTION value: '${A}'. Must be one of: ${_.join(", ")}`);let v=A&&_.includes(A)?A:"app_store";if(!A&&!X)H.info("ℹ️ --ios-distribution not specified, defaulting to app_store");if(q.CAPGO_IOS_DISTRIBUTION=v,!q.BUILD_CERTIFICATE_BASE64)K.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)");if(!q.P12_PASSWORD&&!X)H.warn("⚠️ P12_PASSWORD not provided - assuming certificate has no password"),H.warn(" If your certificate requires a password, provide it with --p12-password");if(!q.BUILD_PROVISION_PROFILE_BASE64)K.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)");if(v==="app_store"){let x=!!q.APPLE_KEY_ID,h=!!q.APPLE_ISSUER_ID,b=!!q.APPLE_KEY_CONTENT,l=x||h||b;if(!(x&&h&&b)){if(l){let j=[];if(!x)j.push("APPLE_KEY_ID (or --apple-key-id)");if(!h)j.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!b)j.push("APPLE_KEY_CONTENT (or --apple-key-content)");K.push(`Incomplete App Store Connect API key - missing: ${j.join(", ")}`)}else if(q.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")K.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(q.SKIP_BUILD_NUMBER_BUMP!=="true")K.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 if(!X)H.warn("⚠️ App Store Connect API key not provided - build will succeed but cannot auto-upload to TestFlight")}}else if(v==="ad_hoc"){if(!X)H.info("\uD83D\uDCE6 Ad-hoc distribution mode: App Store Connect API key not required"),H.info(" Build number will use timestamp-based fallback")}if(!q.APP_STORE_CONNECT_TEAM_ID)K.push("APP_STORE_CONNECT_TEAM_ID (or --app-store-connect-team-id)")}else if($.platform==="android"){if(!q.ANDROID_KEYSTORE_FILE)K.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!q.KEYSTORE_KEY_ALIAS)K.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!q.KEYSTORE_KEY_PASSWORD&&!q.KEYSTORE_STORE_PASSWORD)K.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)");if(!q.PLAY_CONFIG_JSON){if(q.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")K.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 if(!X)H.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}}if(K.length>0){if(!X){H.error(`❌ Missing required credentials for ${$.platform}:`),H.error("");for(let A of K)H.error(` • ${A}`);H.error(""),H.error("Provide credentials via:"),H.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),H.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),H.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),H.error(""),H.error("Documentation:"),H.error(` https://capgo.app/docs/cli/cloud-build/${$.platform}/`)}throw Error(`Missing required credentials for ${$.platform}: ${K.join(", ")}`)}if(!X){if(!q.BUILD_OUTPUT_UPLOAD_ENABLED)H.info("ℹ️ --output-upload not specified, defaulting to false (no Capgo download link)");if(!q.BUILD_OUTPUT_RETENTION_SECONDS)H.info(`ℹ️ --output-retention not specified, defaulting to ${Y7}s (1 hour)`);if(!q.SKIP_BUILD_NUMBER_BUMP)H.info("ℹ️ --skip-build-number-bump not specified, build number will be auto-incremented (default)")}let{buildOptions:L,buildCredentials:M}=tCD(q,$.platform,$.buildMode||"release",V$.version),I={app_id:D,build_options:L,build_credentials:M};if(!X)H.info("✓ Using credentials (merged from CLI args, env vars, and saved file)");if(J){let A=Object.keys(M);H.info(`Credentials provided: ${A.join(", ")}`),H.info(`Build options: platform=${L.platform}, mode=${L.buildMode}, cliVersion=${L.cliVersion}`)}if(!X)H.info("Requesting build from Capgo...");let W=3,N=await lCD(`${w}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify(I)},W,X);if(!N.ok){let A=await N.text();throw Error(`Failed to request build: ${N.status} - ${A}`)}let V=await N.json();if(!X)H.success(`Build job created: ${V.job_id}`),H.info(`Status: ${V.status}`);if(J)H.info(`Upload URL: ${V.upload_url}`),H.info(`Upload expires: ${V.upload_expires_at}`);await RD($.apikey,{channel:"native-builder",event:"Build requested",icon:"\uD83C\uDFD7️",user_id:G,tags:{"app-id":D,platform:$.platform},notify:!1}).catch();let R=t$(mCD(),`capgo-build-${Date.now()}`);await yCD(R,{recursive:!0});let P=t$(R,`${Us(Q)}.zip`);try{if(!X)H.info(`Zipping ${$.platform} project from ${Q}...`);await oCD(Q,P,$.platform,F?.config);let _=((await hCD(P)).size/1024/1024).toFixed(2);if(!X)H.success(`Created zip: ${P} (${_} MB)`);if(!X)H.info("Uploading to builder...");if(J)H.info(`Upload endpoint: ${V.upload_url}`),H.info(`File size: ${_} MB`),H.info(`Job ID: ${V.job_id}`);let v=kCD(P),x=A0();if(!X)x.start("Uploading bundle");if(await new Promise((c,r)=>{let YD=new PZ.Upload(v,{endpoint:V.upload_url,chunkSize:5242880,metadata:{filename:Us(P),filetype:"application/zip"},headers:{authorization:$.apikey},onBeforeRequest(C){if(J){H.info(`[TUS] ${C.getMethod()} ${C.getURL()}`);let E=C.getHeader("authorization");H.info(`[TUS] Authorization header present: ${!!E}`)}},onAfterResponse(C,E){if(J){H.info(`[TUS] Response status: ${E.getStatus()}`);let p=E.getHeader("upload-offset"),k=E.getHeader("tus-resumable");H.info(`[TUS] Upload-Offset: ${p}, Tus-Resumable: ${k}`)}},onError(C){if(!X)x.stop("Upload failed"),H.error(`Upload error: ${C.message}`);if(C instanceof PZ.DetailedError){let E=C.originalResponse?.getBody(),p=C.originalResponse?.getStatus(),k=C.originalRequest?.getURL();if(J)H.error(`[TUS] Request URL: ${k}`),H.error(`[TUS] Response status: ${p}`),H.error(`[TUS] Response body: ${E}`);let zD="Unknown error";try{let a=JSON.parse(E||'{"error": "unknown error"}');zD=a.status||a.error||a.message||"unknown error"}catch{zD=E||C.message}r(Error(`TUS upload failed: ${zD}`))}else r(Error(`TUS upload failed: ${C.message||C.toString()}`))},onProgress(C,E){let p=(C/E*100).toFixed(2);if(!X)x.message(`Uploading ${p}%`)},onSuccess(){if(!X)x.stop("Upload complete!");if(J)H.success("TUS upload completed successfully");c()}});if(J)H.info("[TUS] Starting upload...");YD.start()}),!X)H.info("Starting build job...");let h=await fetch(`${w}/build/start/${V.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D})});if(!h.ok){let c=await h.text();throw Error(`Failed to start build: ${h.status} - ${c}`)}let b=await h.json();if(!X)H.success("Build started!"),H.info("Streaming build logs...");let l=new AbortController,f=!1,j=async()=>{if(f)return;f=!0;let c=new AbortController,r=setTimeout(()=>c.abort(),4000);try{await fetch(`${w}/build/cancel/${V.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D}),signal:c.signal})}catch{}finally{clearTimeout(r)}},S=async()=>{try{if(f)JM.exit(1);if(!X)H.warn("Canceling build... (press Ctrl+C again to force quit)");await j(),l.abort()}catch{}};JM.on("SIGINT",S);let u,y=!1,d=async()=>{try{let c=await fetch(`${w}/build/status?job_id=${encodeURIComponent(V.job_id)}&app_id=${encodeURIComponent(D)}&platform=${$.platform}`,{headers:{authorization:$.apikey}});if(!c.ok)return null;let r=await c.json(),YD=r.status?.toLowerCase?.()??"";if(!X&&y)H.info(`Build status: ${YD||r.status}`);if(CZ.has(YD))return YD;return null}catch{return null}},g=null;try{g=await iCD(X,J,b.logs_url,b.logs_token,d,l.signal,()=>{y=!0})}finally{JM.removeListener("SIGINT",S)}if(g){if(u=g,CZ.has(g))await d().catch(()=>{})}else u=await pCD(w,V.job_id,D,$.platform,$.apikey,X,y,l.signal);if(!X)if(u==="succeeded")H.success("Build completed successfully!");else if(u==="failed")H.error("Build failed");else H.warn(`Build finished with status: ${u}`);let e=((Date.now()-Y)/1000).toFixed(2);return await RD($.apikey,{channel:"native-builder",event:u==="succeeded"?"Build succeeded":"Build failed",icon:u==="succeeded"?"✅":"❌",user_id:G,tags:{"app-id":D,platform:$.platform,status:u||"unknown",time:e},notify:!1}).catch(),{success:u==="succeeded",jobId:V.job_id,uploadUrl:V.upload_url,status:u||b.status||V.status}}finally{await bCD(R,{recursive:!0,force:!0})}}catch(Q){let F=Q instanceof Error?Q.message:String(Q);if(!X)H.error(F);return{success:!1,error:F}}}vD();$6();q1();fD();async function sCD(D,$,X,Y){for await(let J of D){if(!Y)H.warn(`Removing ${J.name} created on ${o5(J.created_at)}`);await qZ($,X,J.name)}}function eCD(D,$,X){let Y=[];for(let J of D??[]){let Q=eD(J.name);if(PG(Q,$)&&S4(Q,X))Y.push(J)}return Y}async function Ns(D,$,X=!1){if(!X)VD("Cleanup versions in Capgo");await F0(),$.apikey=$.apikey||BD();let{bundle:Y,keep:J=4}=$,Q=$.force||!1,F=$.ignoreChannel||!1,w=await ID();if(D=iD(D,w?.config),!$.apikey){if(!X)H.error("Missing API key, you need to provide an API key to delete your app");throw Error("Missing API key")}if(!D){if(!X)H.error("Missing argument, you need to provide a appid, or be in a capacitor project");throw Error("Missing appId")}let Z=await jD($.apikey,$.supaHost,$.supaAnon);if(await d0(Z,D,X),await xD(Z,$.apikey,["write","all"]),await u0(Z,$.apikey,D,3,X,!0),!X)H.info("Querying all available versions in Capgo");let G=await zZ(Z,D),O=await da(Z,D);if(!X)H.info(`Total active versions in Capgo: ${G?.length??0}`);if(!G?.length){if(!X)H.error("No versions found, aborting cleanup");throw Error("No versions found")}if(Y){let q=eD(Y),B=I7(q,"major");if(!X)H.info(`Querying available versions in Capgo between ${z$(q)} and ${z$(B)}`);if(G=eCD(G,q,B),!X)H.info(`Active versions in Capgo between ${z$(q)} and ${z$(B)}: ${G?.length??0}`)}let U=[],z=0;for(let q of G){let B=O.find((K)=>K===q.id);if(z<J||B&&!F)q.keep=B?"✅ (Linked to channel)":"✅",z+=1;else q.keep="❌",U.push(q)}if(!U.length){if(!X)H.warn("Nothing to be removed, aborting removal...");return{removed:0,kept:z}}if(!X)ma(G);if(!Q)if(!X){let q=await c0({message:"Do you want to continue removing the versions specified?"});if(yD(q)||!q)throw H.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)H.success("You have confirmed removal, removing versions now");if(await sCD(U,Z,D,X),!X)ND("Done ✅");return{removed:U.length,kept:z}}vD();e$();fD();async function Ls(D,$,X=!1){if(!X)VD("Check compatibility");let Y={...$,apikey:$.apikey||BD()},J=D?void 0:await ID(),Q=iD(D,J?.config),F=Y.channel;if(!F){if(!X)H.error("Missing argument, you need to provide a channel");throw Error("Missing channel")}if(!Y.apikey){if(!X)H.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)H.error("Missing argument, you need to provide an appId, or be in a capacitor project");throw Error("Missing appId")}let w=await jD(Y.apikey,Y.supaHost,Y.supaAnon);await d0(w,Q,X),await xD(w,Y.apikey,["write","all","read","upload"]),await u0(w,Y.apikey,Q,1,X,!0);let Z=await UZ(w,Q,F,Y.packageJson,Y.nodeModules),G=Z.finalCompatibility.some((O)=>!M4(O));if(!X){let O=new R0;O.headers=["Package","Local","Remote","Status","Details"],O.theme=R0.roundTheme,O.rows=[];let U=Y.text?"OK":"✅",z=Y.text?"FAIL":"❌";for(let q of Z.finalCompatibility){let{name:B,localVersion:K,remoteVersion:L}=q,M=k8(q),I=M.compatible?U:z;O.rows.push([B,K||"-",L||"-",I,M.message])}if(H.success("Compatibility Check Results"),H.info(O.toString()),G){let q=Z.finalCompatibility.filter((B)=>!M4(B)).length;H.warn(`
|
|
466
|
+
`);if(J)H.info(`API host: ${w}`);let O={};if($.buildCertificateBase64)O.BUILD_CERTIFICATE_BASE64=$.buildCertificateBase64;if($.buildProvisionProfileBase64)O.BUILD_PROVISION_PROFILE_BASE64=$.buildProvisionProfileBase64;if($.buildProvisionProfileBase64Prod)O.BUILD_PROVISION_PROFILE_BASE64_PROD=$.buildProvisionProfileBase64Prod;if($.p12Password)O.P12_PASSWORD=$.p12Password;if($.appleKeyId)O.APPLE_KEY_ID=$.appleKeyId;if($.appleIssuerId)O.APPLE_ISSUER_ID=$.appleIssuerId;if($.appleKeyContent)O.APPLE_KEY_CONTENT=$.appleKeyContent;if($.appleProfileName)O.APPLE_PROFILE_NAME=$.appleProfileName;if($.appStoreConnectTeamId)O.APP_STORE_CONNECT_TEAM_ID=$.appStoreConnectTeamId;if($.iosScheme)O.CAPGO_IOS_SCHEME=$.iosScheme;if($.iosTarget)O.CAPGO_IOS_TARGET=$.iosTarget;if($.iosDistribution)O.CAPGO_IOS_DISTRIBUTION=$.iosDistribution;if($.androidKeystoreFile)O.ANDROID_KEYSTORE_FILE=$.androidKeystoreFile;if($.keystoreKeyAlias)O.KEYSTORE_KEY_ALIAS=$.keystoreKeyAlias;let U=!!$.keystoreKeyPassword,z=!!$.keystoreStorePassword;if(U&&!z)O.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,O.KEYSTORE_STORE_PASSWORD=$.keystoreKeyPassword;else if(!U&&z)O.KEYSTORE_KEY_PASSWORD=$.keystoreStorePassword,O.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword;else if(U&&z)O.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,O.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword;if($.playConfigJson)O.PLAY_CONFIG_JSON=$.playConfigJson;if($.outputUpload!==void 0)O.BUILD_OUTPUT_UPLOAD_ENABLED=W2($.outputUpload)?"true":"false";if($.outputRetention)O.BUILD_OUTPUT_RETENTION_SECONDS=String($M($.outputRetention));if($.skipBuildNumberBump!==void 0)O.SKIP_BUILD_NUMBER_BUMP=W2($.skipBuildNumberBump)?"true":"false";let q=await Gs(D,$.platform,Object.keys(O).length>0?O:void 0),B=H2(F?.config,$.platform);if(q&&B)if($.platform==="ios")q.CAPGO_IOS_SOURCE_DIR=B,q.CAPGO_IOS_APP_DIR=B,q.CAPGO_IOS_PROJECT_DIR=B,q.IOS_PROJECT_DIR=B;else q.CAPGO_ANDROID_SOURCE_DIR=B,q.CAPGO_ANDROID_APP_DIR=B,q.CAPGO_ANDROID_PROJECT_DIR=B,q.ANDROID_PROJECT_DIR=B;if(!q){if(!X)H.error("❌ No credentials found for this app and platform"),H.error(""),H.error("You must provide credentials via:"),H.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),H.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),H.error(" 3. Saved credentials file:"),H.error(` npx @capgo/cli build credentials save --appId ${D} --platform ${$.platform}`),H.error(""),H.error("Documentation:"),H.error(" https://capgo.app/docs/cli/cloud-build/credentials/");throw Error("No credentials found. Please provide credentials before building.")}let K=[];if($.platform==="ios"){let A=q.CAPGO_IOS_DISTRIBUTION,_=["app_store","ad_hoc"];if(A&&!_.includes(A))K.push(`Invalid CAPGO_IOS_DISTRIBUTION value: '${A}'. Must be one of: ${_.join(", ")}`);let v=A&&_.includes(A)?A:"app_store";if(!A&&!X)H.info("ℹ️ --ios-distribution not specified, defaulting to app_store");if(q.CAPGO_IOS_DISTRIBUTION=v,!q.BUILD_CERTIFICATE_BASE64)K.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)");if(!q.P12_PASSWORD&&!X)H.warn("⚠️ P12_PASSWORD not provided - assuming certificate has no password"),H.warn(" If your certificate requires a password, provide it with --p12-password");if(!q.BUILD_PROVISION_PROFILE_BASE64)K.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)");if(v==="app_store"){let x=!!q.APPLE_KEY_ID,h=!!q.APPLE_ISSUER_ID,b=!!q.APPLE_KEY_CONTENT,l=x||h||b;if(!(x&&h&&b)){if(l){let j=[];if(!x)j.push("APPLE_KEY_ID (or --apple-key-id)");if(!h)j.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!b)j.push("APPLE_KEY_CONTENT (or --apple-key-content)");K.push(`Incomplete App Store Connect API key - missing: ${j.join(", ")}`)}else if(q.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")K.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(q.SKIP_BUILD_NUMBER_BUMP!=="true")K.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 if(!X)H.warn("⚠️ App Store Connect API key not provided - build will succeed but cannot auto-upload to TestFlight")}}else if(v==="ad_hoc"){if(!X)H.info("\uD83D\uDCE6 Ad-hoc distribution mode: App Store Connect API key not required"),H.info(" Build number will use timestamp-based fallback")}if(!q.APP_STORE_CONNECT_TEAM_ID)K.push("APP_STORE_CONNECT_TEAM_ID (or --app-store-connect-team-id)")}else if($.platform==="android"){if(!q.ANDROID_KEYSTORE_FILE)K.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!q.KEYSTORE_KEY_ALIAS)K.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!q.KEYSTORE_KEY_PASSWORD&&!q.KEYSTORE_STORE_PASSWORD)K.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)");if(!q.PLAY_CONFIG_JSON){if(q.BUILD_OUTPUT_UPLOAD_ENABLED!=="true")K.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 if(!X)H.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}}if(K.length>0){if(!X){H.error(`❌ Missing required credentials for ${$.platform}:`),H.error("");for(let A of K)H.error(` • ${A}`);H.error(""),H.error("Provide credentials via:"),H.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),H.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),H.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),H.error(""),H.error("Documentation:"),H.error(` https://capgo.app/docs/cli/cloud-build/${$.platform}/`)}throw Error(`Missing required credentials for ${$.platform}: ${K.join(", ")}`)}if(!X){if(!q.BUILD_OUTPUT_UPLOAD_ENABLED)H.info("ℹ️ --output-upload not specified, defaulting to false (no Capgo download link)");if(!q.BUILD_OUTPUT_RETENTION_SECONDS)H.info(`ℹ️ --output-retention not specified, defaulting to ${Y7}s (1 hour)`);if(!q.SKIP_BUILD_NUMBER_BUMP)H.info("ℹ️ --skip-build-number-bump not specified, build number will be auto-incremented (default)")}let{buildOptions:L,buildCredentials:M}=tCD(q,$.platform,$.buildMode||"release",V$.version),I={app_id:D,platform:$.platform,build_mode:$.buildMode||"release",build_options:L,build_credentials:M};if(!X)H.info("✓ Using credentials (merged from CLI args, env vars, and saved file)");if(J){let A=Object.keys(M);H.info(`Credentials provided: ${A.join(", ")}`),H.info(`Build options: platform=${L.platform}, mode=${L.buildMode}, cliVersion=${L.cliVersion}`)}if(!X)H.info("Requesting build from Capgo...");let W=3,N=await lCD(`${w}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify(I)},W,X);if(!N.ok){let A=await N.text();throw Error(`Failed to request build: ${N.status} - ${A}`)}let V=await N.json();if(!X)H.success(`Build job created: ${V.job_id}`),H.info(`Status: ${V.status}`);if(J)H.info(`Upload URL: ${V.upload_url}`),H.info(`Upload expires: ${V.upload_expires_at}`);await RD($.apikey,{channel:"native-builder",event:"Build requested",icon:"\uD83C\uDFD7️",user_id:G,tags:{"app-id":D,platform:$.platform},notify:!1}).catch();let R=t$(mCD(),`capgo-build-${Date.now()}`);await yCD(R,{recursive:!0});let P=t$(R,`${Us(Q)}.zip`);try{if(!X)H.info(`Zipping ${$.platform} project from ${Q}...`);await oCD(Q,P,$.platform,F?.config);let _=((await hCD(P)).size/1024/1024).toFixed(2);if(!X)H.success(`Created zip: ${P} (${_} MB)`);if(!X)H.info("Uploading to builder...");if(J)H.info(`Upload endpoint: ${V.upload_url}`),H.info(`File size: ${_} MB`),H.info(`Job ID: ${V.job_id}`);let v=kCD(P),x=A0();if(!X)x.start("Uploading bundle");if(await new Promise((c,r)=>{let YD=new PZ.Upload(v,{endpoint:V.upload_url,chunkSize:5242880,metadata:{filename:Us(P),filetype:"application/zip"},headers:{authorization:$.apikey},onBeforeRequest(C){if(J){H.info(`[TUS] ${C.getMethod()} ${C.getURL()}`);let E=C.getHeader("authorization");H.info(`[TUS] Authorization header present: ${!!E}`)}},onAfterResponse(C,E){if(J){H.info(`[TUS] Response status: ${E.getStatus()}`);let p=E.getHeader("upload-offset"),k=E.getHeader("tus-resumable");H.info(`[TUS] Upload-Offset: ${p}, Tus-Resumable: ${k}`)}},onError(C){if(!X)x.stop("Upload failed"),H.error(`Upload error: ${C.message}`);if(C instanceof PZ.DetailedError){let E=C.originalResponse?.getBody(),p=C.originalResponse?.getStatus(),k=C.originalRequest?.getURL();if(J)H.error(`[TUS] Request URL: ${k}`),H.error(`[TUS] Response status: ${p}`),H.error(`[TUS] Response body: ${E}`);let zD="Unknown error";try{let a=JSON.parse(E||'{"error": "unknown error"}');zD=a.status||a.error||a.message||"unknown error"}catch{zD=E||C.message}r(Error(`TUS upload failed: ${zD}`))}else r(Error(`TUS upload failed: ${C.message||C.toString()}`))},onProgress(C,E){let p=(C/E*100).toFixed(2);if(!X)x.message(`Uploading ${p}%`)},onSuccess(){if(!X)x.stop("Upload complete!");if(J)H.success("TUS upload completed successfully");c()}});if(J)H.info("[TUS] Starting upload...");YD.start()}),!X)H.info("Starting build job...");let h=await fetch(`${w}/build/start/${V.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D})});if(!h.ok){let c=await h.text();throw Error(`Failed to start build: ${h.status} - ${c}`)}let b=await h.json();if(!X)H.success("Build started!"),H.info("Streaming build logs...");let l=new AbortController,f=!1,j=async()=>{if(f)return;f=!0;let c=new AbortController,r=setTimeout(()=>c.abort(),4000);try{await fetch(`${w}/build/cancel/${V.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D}),signal:c.signal})}catch{}finally{clearTimeout(r)}},S=async()=>{try{if(f)JM.exit(1);if(!X)H.warn("Canceling build... (press Ctrl+C again to force quit)");await j(),l.abort()}catch{}};JM.on("SIGINT",S);let u,y=!1,d=async()=>{try{let c=await fetch(`${w}/build/status?job_id=${encodeURIComponent(V.job_id)}&app_id=${encodeURIComponent(D)}&platform=${$.platform}`,{headers:{authorization:$.apikey}});if(!c.ok)return null;let r=await c.json(),YD=r.status?.toLowerCase?.()??"";if(!X&&y)H.info(`Build status: ${YD||r.status}`);if(CZ.has(YD))return YD;return null}catch{return null}},g=null;try{g=await iCD(X,J,b.logs_url,b.logs_token,d,l.signal,()=>{y=!0})}finally{JM.removeListener("SIGINT",S)}if(g){if(u=g,CZ.has(g))await d().catch(()=>{})}else u=await pCD(w,V.job_id,D,$.platform,$.apikey,X,y,l.signal);if(!X)if(u==="succeeded")H.success("Build completed successfully!");else if(u==="failed")H.error("Build failed");else H.warn(`Build finished with status: ${u}`);let e=((Date.now()-Y)/1000).toFixed(2);return await RD($.apikey,{channel:"native-builder",event:u==="succeeded"?"Build succeeded":"Build failed",icon:u==="succeeded"?"✅":"❌",user_id:G,tags:{"app-id":D,platform:$.platform,status:u||"unknown",time:e},notify:!1}).catch(),{success:u==="succeeded",jobId:V.job_id,uploadUrl:V.upload_url,status:u||b.status||V.status}}finally{await bCD(R,{recursive:!0,force:!0})}}catch(Q){let F=Q instanceof Error?Q.message:String(Q);if(!X)H.error(F);return{success:!1,error:F}}}vD();$6();q1();fD();async function sCD(D,$,X,Y){for await(let J of D){if(!Y)H.warn(`Removing ${J.name} created on ${o5(J.created_at)}`);await qZ($,X,J.name)}}function eCD(D,$,X){let Y=[];for(let J of D??[]){let Q=eD(J.name);if(PG(Q,$)&&S4(Q,X))Y.push(J)}return Y}async function Ns(D,$,X=!1){if(!X)VD("Cleanup versions in Capgo");await F0(),$.apikey=$.apikey||BD();let{bundle:Y,keep:J=4}=$,Q=$.force||!1,F=$.ignoreChannel||!1,w=await ID();if(D=iD(D,w?.config),!$.apikey){if(!X)H.error("Missing API key, you need to provide an API key to delete your app");throw Error("Missing API key")}if(!D){if(!X)H.error("Missing argument, you need to provide a appid, or be in a capacitor project");throw Error("Missing appId")}let Z=await jD($.apikey,$.supaHost,$.supaAnon);if(await d0(Z,D,X),await xD(Z,$.apikey,["write","all"]),await u0(Z,$.apikey,D,3,X,!0),!X)H.info("Querying all available versions in Capgo");let G=await zZ(Z,D),O=await da(Z,D);if(!X)H.info(`Total active versions in Capgo: ${G?.length??0}`);if(!G?.length){if(!X)H.error("No versions found, aborting cleanup");throw Error("No versions found")}if(Y){let q=eD(Y),B=I7(q,"major");if(!X)H.info(`Querying available versions in Capgo between ${z$(q)} and ${z$(B)}`);if(G=eCD(G,q,B),!X)H.info(`Active versions in Capgo between ${z$(q)} and ${z$(B)}: ${G?.length??0}`)}let U=[],z=0;for(let q of G){let B=O.find((K)=>K===q.id);if(z<J||B&&!F)q.keep=B?"✅ (Linked to channel)":"✅",z+=1;else q.keep="❌",U.push(q)}if(!U.length){if(!X)H.warn("Nothing to be removed, aborting removal...");return{removed:0,kept:z}}if(!X)ma(G);if(!Q)if(!X){let q=await c0({message:"Do you want to continue removing the versions specified?"});if(yD(q)||!q)throw H.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)H.success("You have confirmed removal, removing versions now");if(await sCD(U,Z,D,X),!X)ND("Done ✅");return{removed:U.length,kept:z}}vD();e$();fD();async function Ls(D,$,X=!1){if(!X)VD("Check compatibility");let Y={...$,apikey:$.apikey||BD()},J=D?void 0:await ID(),Q=iD(D,J?.config),F=Y.channel;if(!F){if(!X)H.error("Missing argument, you need to provide a channel");throw Error("Missing channel")}if(!Y.apikey){if(!X)H.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)H.error("Missing argument, you need to provide an appId, or be in a capacitor project");throw Error("Missing appId")}let w=await jD(Y.apikey,Y.supaHost,Y.supaAnon);await d0(w,Q,X),await xD(w,Y.apikey,["write","all","read","upload"]),await u0(w,Y.apikey,Q,1,X,!0);let Z=await UZ(w,Q,F,Y.packageJson,Y.nodeModules),G=Z.finalCompatibility.some((O)=>!M4(O));if(!X){let O=new R0;O.headers=["Package","Local","Remote","Status","Details"],O.theme=R0.roundTheme,O.rows=[];let U=Y.text?"OK":"✅",z=Y.text?"FAIL":"❌";for(let q of Z.finalCompatibility){let{name:B,localVersion:K,remoteVersion:L}=q,M=k8(q),I=M.compatible?U:z;O.rows.push([B,K||"-",L||"-",I,M.message])}if(H.success("Compatibility Check Results"),H.info(O.toString()),G){let q=Z.finalCompatibility.filter((B)=>!M4(B)).length;H.warn(`
|
|
467
467
|
${q} package(s) are incompatible with channel "${F}"`),H.warn("An app store update may be required for these changes to take effect.")}else H.success(`
|
|
468
468
|
All packages are compatible with channel "${F}"`)}return{finalCompatibility:Z.finalCompatibility,hasIncompatible:G,resolvedAppId:Q,channel:F}}vD();$6();import{existsSync as FM,readFileSync as Cs,writeFileSync as YPD}from"node:fs";import{cwd as QPD}from"node:process";import{Buffer as C6}from"node:buffer";import{constants as DPD,createCipheriv as $PD,createDecipheriv as XPD,generateKeyPairSync as JPD,privateEncrypt as YM,publicDecrypt as QM,randomBytes as Ms}from"node:crypto";var Is="aes-128-cbc",P6="base64",xZ="hex",Q7=DPD.RSA_PKCS1_PADDING;function SZ(D){let $=Ms(16),X=Ms(16),Y=$.toString(P6),J=YM({key:D,padding:Q7},X).toString(P6);return{sessionKey:X,ivSessionKey:`${Y}:${J}`}}function F7(D,$,X){let[Y]=X.split(":"),J=C6.from(Y,P6),Q=$PD(Is,$,J);return Q.setAutoPadding(!0),C6.concat([Q.update(D),Q.final()])}function As(D,$,X){let[Y,J]=$.split(":"),Q=QM({key:X,padding:Q7},C6.from(J,P6)),F=C6.from(Y,P6),w=XPD(Is,Q,F);return w.setAutoPadding(!0),C6.concat([w.update(D),w.final()])}function w7(D,$){return YM({key:$,padding:Q7},C6.from(D,P6)).toString(P6)}function Z7(D,$){return YM({key:$,padding:Q7},C6.from(D,xZ)).toString(xZ)}function Rs(D,$){return QM({key:$,padding:Q7},C6.from(D,P6)).toString(P6)}function js(D,$){return QM({key:$,padding:Q7},C6.from(D,xZ)).toString(xZ)}function Es(){let{publicKey:D,privateKey:$}=JPD("rsa",{modulusLength:2048});return{publicKey:D.export({type:"pkcs1",format:"pem"}),privateKey:$.export({type:"pkcs1",format:"pem"})}}function Ts(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)}q1();B3();fD();var FPD="5.30.0",wPD="6.30.0",ZPD="7.30.0";function GPD(D,$){let X=D.key||R6,Y=$.config.plugins?.CapacitorUpdater?.publicKey;if(FM(X))Y=Cs(X,"utf8");else if(!Y&&D.keyData)Y=D.keyData;return{publicKey:Y,fallbackKeyPath:X}}async function Ps(D,$,X,Y=!1){if(!Y)VD("Decrypt zip file");try{if(await F0(),!FM(D)){let U=`Zip not found at the path ${D}`;if(!Y)H.error(U);throw Error(U)}let J=await ID();if(!X.key&&!FM(R6)&&!J.config.plugins?.CapacitorUpdater?.publicKey){let U=`Public Key not found at the path ${R6} or in ${J.path}`;if(!Y)H.error(U);throw Error(U)}let{publicKey:Q,fallbackKeyPath:F}=GPD(X,J);if(!Q){let U=`Cannot find public key ${F} or as keyData option or in ${J.path}`;if(!Y)H.error(U);throw Error(U)}let w=Cs(D),Z=As(w,$,X.keyData??Q),G=`${D}_decrypted.zip`;if(YPD(G,Z),!Y)H.info(`Decrypted zip file at ${G}`);let O;if(X.checksum){let U=await p6(Z,"sha256"),z=e0(QPD()),q=await y1("@capgo/capacitor-updater",z,X.packageJson),B=!1,K;try{K=q?eD(q):void 0}catch{K=void 0}if(K)B=!Z$(K,FPD,wPD,ZPD);if(!Y)H.info(`Decrypting checksum with ${B?"V3":"V2"} (based on updater version ${q||"unknown"})`);let L=B?js(X.checksum,X.keyData??Q):Rs(X.checksum,X.keyData??Q);if(O=U===L,!O){let M=`Checksum does not match ${U} !== ${L}`;if(!Y)H.error(M);throw Error(M)}if(!Y)H.info("Checksum matches")}if(!Y)ND("✅ done");return{outputPath:G,checksumMatches:O}}catch(J){if(!Y)H.error(`Error decrypting zip file ${t(J)}`);throw J instanceof Error?J:Error(String(J))}}vD();fD();async function xs(D,$,X,Y=!1){if(!Y)VD("Delete bundle");X.apikey=X.apikey||BD();let J=await ID();if($=iD($,J?.config),!X.apikey){if(!Y)H.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!$){if(!Y)H.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}if(!D){if(!Y)H.error("Missing argument, you need to provide a bundleId, or be in a capacitor project");throw Error("Missing bundleId")}let Q=await jD(X.apikey,X.supaHost,X.supaAnon);if(await d0(Q,$,Y),await xD(Q,X.apikey,["write","all"]),await u0(Q,X.apikey,$,3,Y,!0),!Y)H.info(`Deleting bundle ${$}@${D} from Capgo`),H.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever");await qZ(Q,$,D);let F=await o0(Q,$);if(await RD(X.apikey,{channel:"app",event:"Bundle Deleted",icon:"\uD83D\uDDD1️",user_id:F,tags:{"app-id":$,bundle:D},notify:!1,notifyConsole:!0}).catch(()=>{}),!Y)H.success(`Bundle ${$}@${D} deleted in Capgo`),ND("Done");return!0}vD();$6();import{existsSync as wM,readFileSync as Ss,writeFileSync as OPD}from"node:fs";import{cwd as UPD}from"node:process";q1();fD();var qPD="5.30.0",zPD="6.30.0",BPD="7.30.0";function N2(D){console.error(t(D))}async function us(D,$,X,Y=!1){let{json:J}=X,Q=!J&&!Y;if(Q)VD("Encryption"),await F0();try{let F=await ID(),w=!!F.config.plugins?.CapacitorUpdater?.privateKey,Z=!!F.config.plugins?.CapacitorUpdater?.publicKey;if(w&&Q)H.warning("There is still a privateKey in the config");if(!wM(D)){let V=`Zip not found at the path ${D}`;if(!Y)if(J)N2({error:"zip_not_found"});else H.error(`Error: ${V}`);throw Error(V)}if(!Z){if(!Y)if(J)N2({error:"missing_public_key"});else H.warning("Warning: Missing Public Key in config");throw Error("Missing public key in config")}let G=X.key||i1,O=X.keyData||"";if(!wM(G)&&!O){if(!Y)if(J)N2({error:"missing_key"});else H.warning(`Cannot find a private key at ${G} or as a keyData option`),H.error("Error: Missing key");throw Error("Missing private key")}else if(wM(G))O=Ss(G,"utf8");if(O&&!O.startsWith("-----BEGIN RSA PRIVATE KEY-----")){if(!Y)if(J)N2({error:"invalid_private_key"});else H.error("The private key provided is not a valid RSA Private key");throw Error("Invalid private key format")}let U=Ss(D),{sessionKey:z,ivSessionKey:q}=SZ(O),B=F7(U,z,q),K=e0(UPD()),L=await y1("@capgo/capacitor-updater",K,X.packageJson),M=!1,I;try{I=L?eD(L):void 0}catch{I=void 0}if(I)M=!Z$(I,qPD,zPD,BPD);let W=M?Z7($,O):w7($,O);if(Q)H.info(`Encrypting checksum with ${M?"V3":"V2"} (based on updater version ${L||"unknown"})`);let N=`${D}_encrypted.zip`;if(OPD(N,B),!Y)if(J)console.log(JSON.stringify({checksum:W,filename:N,ivSessionKey:q},null,2));else H.success(`Encoded Checksum: ${W}`),H.success(`ivSessionKey: ${q}`),H.success(`Encrypted zip saved at ${N}`),ND("Done ✅");return{checksum:W,filename:N,ivSessionKey:q}}catch(F){if(!Y)if(X.json)N2(F);else H.error(`Error encrypting zip file ${t(F)}`);throw F instanceof Error?F:Error(String(F))}}import{randomUUID as ISD}from"node:crypto";import{existsSync as cZ,readFileSync as ASD}from"node:fs";import{cwd as fM,stdin as RSD,stdout as jSD}from"node:process";class ZM extends TransformStream{outChunkSize;constructor(D){let $=new Uint8Array(D),X=0;super({transform(Y,J){let Q=0;while(Q<Y.length){let F=D-X,w=Math.min(F,Y.length-Q);if($.set(Y.subarray(Q,Q+w),X),Q+=w,X+=w,X===D)J.enqueue($),$=new Uint8Array(D),X=0}},flush(Y){if(X>0)Y.enqueue($.subarray(0,X))}}),this.outChunkSize=D}}function E4(D){return D=D.trim(),D=D.replace(/<!--[\s\S]*?-->/g,""),$();function $(){return{declaration:X(),root:Y()}}function X(){if(!Z(/^<\?xml\s*/))return;let z={attributes:{}};while(!(G()||O("?>"))){let q=Q();if(!q)return z;z.attributes[q.name]=q.value}return Z(/\?>\s*/),z}function Y(){let U=Z(/^<([\w-:.]+)\s*/);if(!U)return;let z={name:U[1],attributes:{},children:[]};while(!(G()||O(">")||O("?>")||O("/>"))){let B=Q();if(!B)return z;z.attributes[B.name]=B.value}if(Z(/^\s*\/>\s*/))return z;Z(/\??>\s*/),z.content=J();let q;while(q=Y())z.children.push(q);return Z(/^<\/[\w-:.]+>\s*/),z}function J(){let U=Z(/^([^<]*)/);if(U)return w(U[1]);return""}function Q(){let U=Z(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(!U)return;return{name:U[1],value:w(F(U[2]))}}function F(U){return U.replace(/^['"]|['"]$/g,"")}function w(U){return U.replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function Z(U){let z=D.match(U);if(!z)return;return D=D.slice(z[0].length),z}function G(){return D.length===0}function O(U){return D.startsWith(U)}}class x6 extends Error{}class j1 extends x6{}class uZ extends x6{}class GM extends x6{bucketName;constructor(D){super(`Invalid bucket name: ${D}`),this.bucketName=D}}class S6 extends x6{objectName;constructor(D){super(`Invalid object name: ${D}`),this.objectName=D}}class m8 extends x6{constructor(){super("accessKey is required")}}class L2 extends x6{constructor(){super("secretKey is required")}}class vZ extends x6{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}}class T4 extends x6{statusCode;code;key;bucketName;resource;region;constructor(D,$,X,Y={}){super(X),this.statusCode=D,this.code=$,this.key=Y.key,this.bucketName=Y.bucketName,this.resource=Y.resource,this.region=Y.region}}async function vs(D){try{let X=E4(await D.text()).root;if(X?.name!=="Error")throw Error("Invalid root, expected <Error>");let Y=X.children.find((G)=>G.name==="Code")?.content??"UnknownErrorCode",J=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,w=X.children.find((G)=>G.name==="Resource")?.content,Z=X.children.find((G)=>G.name==="Region")?.content;return new T4(D.status,Y,J,{key:Q,bucketName:F,resource:w,region:Z})}catch{return new T4(D.status,"UnrecognizedError",`Error: Unexpected response code ${D.status} ${D.statusText}. Unable to parse response as XML.`)}}function _s(D){if(typeof D!=="number"||isNaN(D))return!1;return D>=1&&D<=65535}function ks(D){if(typeof D!=="string")return!1;if(D.length<3||D.length>63)return!1;if(D.includes(".."))return!1;if(D.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/))return!1;if(D.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/))return!0;return!1}function C4(D){if(!KPD(D))return!1;if(D.length===0)return!1;return!0}function KPD(D){if(typeof D!=="string")return!1;if(D.length>1024)return!1;return!0}function M2(D){return Array.from(D).map(($)=>$.toString(16).padStart(2,"0")).join("")}function d8(D=""){let $={'"':"",""":"",""":"",""":"",""":""};return D.replace(/^("|"|")|("|"|")$/g,(X)=>$[X])}function UM(D){return D.get("x-amz-version-id")??null}function c8(D){let $=D.toISOString();return $.slice(0,4)+$.slice(5,7)+$.slice(8,13)+$.slice(14,16)+$.slice(17,19)+"Z"}function qM(D){return c8(D).slice(0,8)}function zM(D,$){return`${qM($)}/${D}/s3/aws4_request`}async function _Z(D){if(!(D instanceof Uint8Array))D=new TextEncoder().encode(D);return M2(new Uint8Array(await crypto.subtle.digest("SHA-256",D)))}var WPD=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"];class BM extends WritableStream{getResult;constructor({client:D,bucketName:$,objectName:X,partSize:Y,metadata:J}){let Q,F=1,w,Z=[],G,O=[];super({start(){},async write(U,z){let B=F++;try{if(B==1&&U.length<Y){let M=await D.makeRequest({method:"PUT",headers:new Headers({...J,"Content-Length":String(U.length)}),bucketName:$,objectName:X,payload:U});Q={etag:d8(M.headers.get("etag")??void 0),versionId:UM(M.headers)};return}if(B===1)w=(await HPD({client:D,bucketName:$,objectName:X,metadata:J})).uploadId;let K={"Content-Length":String(U.length)};for(let M of WPD){let I=J[M];if(I)K[M]=I}let L=D.makeRequest({method:"PUT",query:{partNumber:B.toString(),uploadId:w},headers:new Headers(K),bucketName:$,objectName:X,payload:U}).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(K){throw K}},async close(){if(Q);else if(w){if(await Promise.all(O),G)throw G;Z.sort((U,z)=>U.part>z.part?1:-1),Q=await VPD({client:D,bucketName:$,objectName:X,uploadId:w,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 HPD(D){let X=new Headers(D.metadata),Y="uploads",Q=await(await D.client.makeRequest({method:"POST",bucketName:D.bucketName,objectName:D.objectName,query:"uploads",headers:X,returnBody:!0})).text(),F=E4(Q).root;if(!F||F.name!=="InitiateMultipartUploadResult")throw Error(`Unexpected response: ${Q}`);let w=F.children.find((Z)=>Z.name==="UploadId")?.content;if(!w)throw Error(`Unable to get UploadId from response: ${Q}`);return{uploadId:w}}async function VPD({client:D,bucketName:$,objectName:X,uploadId:Y,etags:J}){let Q=`
|
|
469
469
|
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|