@capgo/cli 7.78.0 → 7.79.0

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 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 Qt(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=Qj($,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=Qj($,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 Xt(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=m6.basename($,m6.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 Gj($){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 BK(){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}Gt.Command=HK;Gt.useColor=BK});var Fj=T((Ft)=>{var{Argument:Bj}=TQ(),{Command:UK}=Wj(),{CommanderError:Ht,InvalidArgumentError:Hj}=b7(),{Help:Ut}=JK(),{Option:Uj}=QK();Ft.program=new UK;Ft.createCommand=($)=>new UK($);Ft.createOption=($,D)=>new Uj($,D);Ft.createArgument=($,D)=>new Bj($,D);Ft.Command=UK;Ft.Option=Uj;Ft.Argument=Bj;Ft.Help=Ut;Ft.CommanderError=Ht;Ft.InvalidArgumentError=Hj;Ft.InvalidOptionArgumentError=Hj});var GD;var g9=c(()=>{GD={name:"@capgo/cli",type:"module",version:"7.78.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:"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"},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 KK=T((ZI0,FK)=>{var CQ=process||{},qj=CQ.argv||[],PQ=CQ.env||{},jt=!(!!PQ.NO_COLOR||qj.includes("--no-color"))&&(!!PQ.FORCE_COLOR||qj.includes("--color")||CQ.platform==="win32"||(CQ.stdout||{}).isTTY&&PQ.TERM!=="dumb"||!!PQ.CI),Et=($,D,X=$)=>(J)=>{let Y=""+J,Q=Y.indexOf(D,$.length);return~Q?$+It(Y,D,X,Q)+D:$+Y+D},It=($,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)},Vj=($=jt)=>{let D=$?Et:()=>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")}};FK.exports=Vj();FK.exports.createColors=Vj});var VK=T((AI0,zj)=>{var qK={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"},Tt={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},St={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?qK.up():"");if($)D+=qK.left;return D}};zj.exports={cursor:qK,scroll:Tt,erase:St,beep:"\x07"}});import{stdout as MK,stdin as Mj}from"node:process";import*as Z4 from"node:readline";import Pt from"node:readline";import{ReadStream as wj}from"node:tty";function h9($,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?h9(Q,D<0?-1:1,X):Q}function OK($,D,X){return String($).normalize().replaceAll(`\r
27
+ `)}),this}_outputHelpIfRequested($){let D=this._getHelpOption();if(D&&$.find((J)=>D.is(J)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function Gj($){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 BK(){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}Gt.Command=HK;Gt.useColor=BK});var Fj=T((Ft)=>{var{Argument:Bj}=TQ(),{Command:UK}=Wj(),{CommanderError:Ht,InvalidArgumentError:Hj}=b7(),{Help:Ut}=JK(),{Option:Uj}=QK();Ft.program=new UK;Ft.createCommand=($)=>new UK($);Ft.createOption=($,D)=>new Uj($,D);Ft.createArgument=($,D)=>new Bj($,D);Ft.Command=UK;Ft.Option=Uj;Ft.Argument=Bj;Ft.Help=Ut;Ft.CommanderError=Ht;Ft.InvalidArgumentError=Hj;Ft.InvalidOptionArgumentError=Hj});var GD;var g9=c(()=>{GD={name:"@capgo/cli",type:"module",version:"7.79.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:"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"},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 KK=T((ZI0,FK)=>{var CQ=process||{},qj=CQ.argv||[],PQ=CQ.env||{},jt=!(!!PQ.NO_COLOR||qj.includes("--no-color"))&&(!!PQ.FORCE_COLOR||qj.includes("--color")||CQ.platform==="win32"||(CQ.stdout||{}).isTTY&&PQ.TERM!=="dumb"||!!PQ.CI),Et=($,D,X=$)=>(J)=>{let Y=""+J,Q=Y.indexOf(D,$.length);return~Q?$+It(Y,D,X,Q)+D:$+Y+D},It=($,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)},Vj=($=jt)=>{let D=$?Et:()=>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")}};FK.exports=Vj();FK.exports.createColors=Vj});var VK=T((AI0,zj)=>{var qK={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"},Tt={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},St={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?qK.up():"");if($)D+=qK.left;return D}};zj.exports={cursor:qK,scroll:Tt,erase:St,beep:"\x07"}});import{stdout as MK,stdin as Mj}from"node:process";import*as Z4 from"node:readline";import Pt from"node:readline";import{ReadStream as wj}from"node:tty";function h9($,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?h9(Q,D<0?-1:1,X):Q}function OK($,D,X){return String($).normalize().replaceAll(`\r
28
28
  `,`
29
29
  `).split(`
30
30
  `).map((J)=>mt(J,D,X)).join(`
@@ -302,7 +302,7 @@ PS: You can ignore this check with "--ignore-checksum-check"`),Error("Cannot upl
302
302
  depsCount: ${D},
303
303
  deps: ${X}}`};var _R0={keyword:"dependencies",type:"object",schemaType:"object",error:kr.error,code($){let[D,X]=xR0($);xr($,D),br($,X)}};function xR0({schema:$}){let D={},X={};for(let J in $){if(J==="__proto__")continue;let Y=Array.isArray($[J])?D:X;Y[J]=$[J]}return[D,X]}function xr($,D=$.schema){let{gen:X,data:J,it:Y}=$;if(Object.keys(D).length===0)return;let Q=X.let("missing");for(let G in D){let W=D[G];if(W.length===0)continue;let B=(0,MQ.propertyInData)(X,J,G,Y.opts.ownProperties);if($.setParams({property:G,depsCount:W.length,deps:W.join(", ")}),Y.allErrors)X.if(B,()=>{for(let H of W)(0,MQ.checkReportMissingProp)($,H)});else X.if(HR._`${B} && (${(0,MQ.checkMissingProp)($,W,Q)})`),(0,MQ.reportMissingProp)($,Q),X.else()}}kr.validatePropertyDeps=xr;function br($,D=$.schema){let{gen:X,data:J,keyword:Y,it:Q}=$,G=X.name("valid");for(let W in D){if((0,vR0.alwaysValidSchema)(Q,D[W]))continue;X.if((0,MQ.propertyInData)(X,J,W,Q.opts.ownProperties),()=>{let B=$.subschema({keyword:Y,schemaProp:W},G);$.mergeValidEvaluated(B,G)},()=>X.var(G,!0)),$.ok(G)}}kr.validateSchemaDeps=br;kr.default=_R0});var mr=T((hr)=>{Object.defineProperty(hr,"__esModule",{value:!0});var gr=i0(),yR0=Y$(),fR0={message:"property name must be valid",params:({params:$})=>gr._`{propertyName: ${$.propertyName}}`},uR0={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:fR0,code($){let{gen:D,schema:X,data:J,it:Y}=$;if((0,yR0.alwaysValidSchema)(Y,X))return;let Q=D.name("valid");D.forIn("key",J,(G)=>{$.setParams({propertyName:G}),$.subschema({keyword:"propertyNames",data:G,dataTypes:["string"],propertyName:G,compositeRule:!0},Q),D.if((0,gr.not)(Q),()=>{if($.error(!0),!Y.allErrors)D.break()})}),$.ok(Q)}};hr.default=uR0});var UR=T((lr)=>{Object.defineProperty(lr,"__esModule",{value:!0});var hF=rD(),z6=i0(),hR0=V4(),mF=Y$(),mR0={message:"must NOT have additional properties",params:({params:$})=>z6._`{additionalProperty: ${$.additionalProperty}}`},lR0={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:mR0,code($){let{gen:D,schema:X,parentSchema:J,data:Y,errsCount:Q,it:G}=$;if(!Q)throw Error("ajv implementation error");let{allErrors:W,opts:B}=G;if(G.props=!0,B.removeAdditional!=="all"&&(0,mF.alwaysValidSchema)(G,X))return;let H=(0,hF.allSchemaProperties)(J.properties),U=(0,hF.allSchemaProperties)(J.patternProperties);F(),$.ok(z6._`${Q} === ${hR0.default.errors}`);function F(){D.forIn("key",Y,(N)=>{if(!H.length&&!U.length)z(N);else D.if(q(N),()=>z(N))})}function q(N){let L;if(H.length>8){let M=(0,mF.schemaRefOrVal)(G,J.properties,"properties");L=(0,hF.isOwnProperty)(D,M,N)}else if(H.length)L=(0,z6.or)(...H.map((M)=>z6._`${N} === ${M}`));else L=z6.nil;if(U.length)L=(0,z6.or)(L,...U.map((M)=>z6._`${(0,hF.usePattern)($,M)}.test(${N})`));return(0,z6.not)(L)}function V(N){D.code(z6._`delete ${Y}[${N}]`)}function z(N){if(B.removeAdditional==="all"||B.removeAdditional&&X===!1){V(N);return}if(X===!1){if($.setParams({additionalProperty:N}),$.error(),!W)D.break();return}if(typeof X=="object"&&!(0,mF.alwaysValidSchema)(G,X)){let L=D.name("valid");if(B.removeAdditional==="failing")w(N,L,!1),D.if((0,z6.not)(L),()=>{$.reset(),V(N)});else if(w(N,L),!W)D.if((0,z6.not)(L),()=>D.break())}}function w(N,L,M){let O={keyword:"additionalProperties",dataProp:N,dataPropType:mF.Type.Str};if(M===!1)Object.assign(O,{compositeRule:!0,createErrors:!1,allErrors:!1});$.subschema(O,L)}}};lr.default=lR0});var nr=T((ir)=>{Object.defineProperty(ir,"__esModule",{value:!0});var dR0=BQ(),cr=rD(),FR=Y$(),dr=UR(),iR0={keyword:"properties",type:"object",schemaType:"object",code($){let{gen:D,schema:X,parentSchema:J,data:Y,it:Q}=$;if(Q.opts.removeAdditional==="all"&&J.additionalProperties===void 0)dr.default.code(new dR0.KeywordCxt(Q,dr.default,"additionalProperties"));let G=(0,cr.allSchemaProperties)(X);for(let F of G)Q.definedProperties.add(F);if(Q.opts.unevaluated&&G.length&&Q.props!==!0)Q.props=FR.mergeEvaluated.props(D,(0,FR.toHash)(G),Q.props);let W=G.filter((F)=>!(0,FR.alwaysValidSchema)(Q,X[F]));if(W.length===0)return;let B=D.name("valid");for(let F of W){if(H(F))U(F);else{if(D.if((0,cr.propertyInData)(D,Y,F,Q.opts.ownProperties)),U(F),!Q.allErrors)D.else().var(B,!0);D.endIf()}$.it.definedProperties.add(F),$.ok(B)}function H(F){return Q.opts.useDefaults&&!Q.compositeRule&&X[F].default!==void 0}function U(F){$.subschema({keyword:"properties",schemaProp:F,dataProp:F},B)}}};ir.default=iR0});var tr=T((or)=>{Object.defineProperty(or,"__esModule",{value:!0});var pr=rD(),lF=i0(),rr=Y$(),ar=Y$(),pR0={keyword:"patternProperties",type:"object",schemaType:"object",code($){let{gen:D,schema:X,data:J,parentSchema:Y,it:Q}=$,{opts:G}=Q,W=(0,pr.allSchemaProperties)(X),B=W.filter((w)=>(0,rr.alwaysValidSchema)(Q,X[w]));if(W.length===0||B.length===W.length&&(!Q.opts.unevaluated||Q.props===!0))return;let H=G.strictSchema&&!G.allowMatchingProperties&&Y.properties,U=D.name("valid");if(Q.props!==!0&&!(Q.props instanceof lF.Name))Q.props=(0,ar.evaluatedPropsToName)(D,Q.props);let{props:F}=Q;q();function q(){for(let w of W){if(H)V(w);if(Q.allErrors)z(w);else D.var(U,!0),z(w),D.if(U)}}function V(w){for(let N in H)if(new RegExp(w).test(N))(0,rr.checkStrictMode)(Q,`property ${N} matches pattern ${w} (use allowMatchingProperties)`)}function z(w){D.forIn("key",J,(N)=>{D.if(lF._`${(0,pr.usePattern)($,w)}.test(${N})`,()=>{let L=B.includes(w);if(!L)$.subschema({keyword:"patternProperties",schemaProp:w,dataProp:N,dataPropType:ar.Type.Str},U);if(Q.opts.unevaluated&&F!==!0)D.assign(lF._`${F}[${N}]`,!0);else if(!L&&!Q.allErrors)D.if((0,lF.not)(U),()=>D.break())})})}}};or.default=pR0});var er=T((sr)=>{Object.defineProperty(sr,"__esModule",{value:!0});var aR0=Y$(),oR0={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code($){let{gen:D,schema:X,it:J}=$;if((0,aR0.alwaysValidSchema)(J,X)){$.fail();return}let Y=D.name("valid");$.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},Y),$.failResult(Y,()=>$.reset(),()=>$.error())},error:{message:"must NOT be valid"}};sr.default=oR0});var Da=T(($a)=>{Object.defineProperty($a,"__esModule",{value:!0});var sR0=rD(),eR0={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:sR0.validateUnion,error:{message:"must match a schema in anyOf"}};$a.default=eR0});var Ya=T((Xa)=>{Object.defineProperty(Xa,"__esModule",{value:!0});var cF=i0(),Dj0=Y$(),Xj0={message:"must match exactly one schema in oneOf",params:({params:$})=>cF._`{passingSchemas: ${$.passing}}`},Yj0={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:Xj0,code($){let{gen:D,schema:X,parentSchema:J,it:Y}=$;if(!Array.isArray(X))throw Error("ajv implementation error");if(Y.opts.discriminator&&J.discriminator)return;let Q=X,G=D.let("valid",!1),W=D.let("passing",null),B=D.name("_valid");$.setParams({passing:W}),D.block(H),$.result(G,()=>$.reset(),()=>$.error(!0));function H(){Q.forEach((U,F)=>{let q;if((0,Dj0.alwaysValidSchema)(Y,U))D.var(B,!0);else q=$.subschema({keyword:"oneOf",schemaProp:F,compositeRule:!0},B);if(F>0)D.if(cF._`${B} && ${G}`).assign(G,!1).assign(W,cF._`[${W}, ${F}]`).else();D.if(B,()=>{if(D.assign(G,!0),D.assign(W,F),q)$.mergeEvaluated(q,cF.Name)})})}}};Xa.default=Yj0});var Qa=T((Ja)=>{Object.defineProperty(Ja,"__esModule",{value:!0});var Qj0=Y$(),Gj0={keyword:"allOf",schemaType:"array",code($){let{gen:D,schema:X,it:J}=$;if(!Array.isArray(X))throw Error("ajv implementation error");let Y=D.name("valid");X.forEach((Q,G)=>{if((0,Qj0.alwaysValidSchema)(J,Q))return;let W=$.subschema({keyword:"allOf",schemaProp:G},Y);$.ok(Y),$.mergeEvaluated(W)})}};Ja.default=Gj0});var Ha=T((Ba)=>{Object.defineProperty(Ba,"__esModule",{value:!0});var dF=i0(),Wa=Y$(),Bj0={message:({params:$})=>dF.str`must match "${$.ifClause}" schema`,params:({params:$})=>dF._`{failingKeyword: ${$.ifClause}}`},Hj0={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:Bj0,code($){let{gen:D,parentSchema:X,it:J}=$;if(X.then===void 0&&X.else===void 0)(0,Wa.checkStrictMode)(J,'"if" without "then" and "else" is ignored');let Y=Ga(J,"then"),Q=Ga(J,"else");if(!Y&&!Q)return;let G=D.let("valid",!0),W=D.name("_valid");if(B(),$.reset(),Y&&Q){let U=D.let("ifClause");$.setParams({ifClause:U}),D.if(W,H("then",U),H("else",U))}else if(Y)D.if(W,H("then"));else D.if((0,dF.not)(W),H("else"));$.pass(G,()=>$.error(!0));function B(){let U=$.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},W);$.mergeEvaluated(U)}function H(U,F){return()=>{let q=$.subschema({keyword:U},W);if(D.assign(G,W),$.mergeValidEvaluated(q,G),F)D.assign(F,dF._`${U}`);else $.setParams({ifClause:U})}}}};function Ga($,D){let X=$.schema[D];return X!==void 0&&!(0,Wa.alwaysValidSchema)($,X)}Ba.default=Hj0});var Fa=T((Ua)=>{Object.defineProperty(Ua,"__esModule",{value:!0});var Fj0=Y$(),Kj0={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:$,parentSchema:D,it:X}){if(D.if===void 0)(0,Fj0.checkStrictMode)(X,`"${$}" without "if" is ignored`)}};Ua.default=Kj0});var qa=T((Ka)=>{Object.defineProperty(Ka,"__esModule",{value:!0});var Vj0=WR(),zj0=Tr(),wj0=BR(),Nj0=Cr(),Oj0=_r(),Lj0=ur(),Mj0=mr(),Zj0=UR(),Aj0=nr(),Rj0=tr(),jj0=er(),Ej0=Da(),Ij0=Ya(),Tj0=Qa(),Sj0=Ha(),Pj0=Fa();function Cj0($=!1){let D=[jj0.default,Ej0.default,Ij0.default,Tj0.default,Sj0.default,Pj0.default,Mj0.default,Zj0.default,Lj0.default,Aj0.default,Rj0.default];if($)D.push(zj0.default,Nj0.default);else D.push(Vj0.default,wj0.default);return D.push(Oj0.default),D}Ka.default=Cj0});var za=T((Va)=>{Object.defineProperty(Va,"__esModule",{value:!0});var X1=i0(),_j0={message:({schemaCode:$})=>X1.str`must match format "${$}"`,params:({schemaCode:$})=>X1._`{format: ${$}}`},xj0={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:_j0,code($,D){let{gen:X,data:J,$data:Y,schema:Q,schemaCode:G,it:W}=$,{opts:B,errSchemaPath:H,schemaEnv:U,self:F}=W;if(!B.validateFormats)return;if(Y)q();else V();function q(){let z=X.scopeValue("formats",{ref:F.formats,code:B.code.formats}),w=X.const("fDef",X1._`${z}[${G}]`),N=X.let("fType"),L=X.let("format");X.if(X1._`typeof ${w} == "object" && !(${w} instanceof RegExp)`,()=>X.assign(N,X1._`${w}.type || "string"`).assign(L,X1._`${w}.validate`),()=>X.assign(N,X1._`"string"`).assign(L,w)),$.fail$data((0,X1.or)(M(),O()));function M(){if(B.strictSchema===!1)return X1.nil;return X1._`${G} && !${L}`}function O(){let R=U.$async?X1._`(${w}.async ? await ${L}(${J}) : ${L}(${J}))`:X1._`${L}(${J})`,E=X1._`(typeof ${L} == "function" ? ${R} : ${L}.test(${J}))`;return X1._`${L} && ${L} !== true && ${N} === ${D} && !${E}`}}function V(){let z=F.formats[Q];if(!z){M();return}if(z===!0)return;let[w,N,L]=O(z);if(w===D)$.pass(R());function M(){if(B.strictSchema===!1){F.logger.warn(E());return}throw Error(E());function E(){return`unknown format "${Q}" ignored in schema at path "${H}"`}}function O(E){let C=E instanceof RegExp?(0,X1.regexpCode)(E):B.code.formats?X1._`${B.code.formats}${(0,X1.getProperty)(Q)}`:void 0,S=X.scopeValue("formats",{key:Q,ref:E,code:C});if(typeof E=="object"&&!(E instanceof RegExp))return[E.type||"string",E.validate,X1._`${S}.validate`];return["string",E,S]}function R(){if(typeof z=="object"&&!(z instanceof RegExp)&&z.async){if(!U.$async)throw Error("async format in sync schema");return X1._`await ${L}(${J})`}return typeof N=="function"?X1._`${L}(${J})`:X1._`${L}.test(${J})`}}}};Va.default=xj0});var Na=T((wa)=>{Object.defineProperty(wa,"__esModule",{value:!0});var kj0=za(),yj0=[kj0.default];wa.default=yj0});var Ma=T((Oa)=>{Object.defineProperty(Oa,"__esModule",{value:!0});Oa.contentVocabulary=Oa.metadataVocabulary=void 0;Oa.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];Oa.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var Ra=T((Aa)=>{Object.defineProperty(Aa,"__esModule",{value:!0});var gj0=ip(),hj0=Or(),mj0=qa(),lj0=Na(),Za=Ma(),cj0=[gj0.default,hj0.default,(0,mj0.default)(),lj0.default,Za.metadataVocabulary,Za.contentVocabulary];Aa.default=cj0});var Ta=T((Ea)=>{Object.defineProperty(Ea,"__esModule",{value:!0});Ea.DiscrError=void 0;var ja;(function($){$.Tag="tag",$.Mapping="mapping"})(ja||(Ea.DiscrError=ja={}))});var Ca=T((Pa)=>{Object.defineProperty(Pa,"__esModule",{value:!0});var S7=i0(),KR=Ta(),Sa=IF(),ij0=HQ(),nj0=Y$(),pj0={message:({params:{discrError:$,tagName:D}})=>$===KR.DiscrError.Tag?`tag "${D}" must be string`:`value of tag "${D}" must be in oneOf`,params:({params:{discrError:$,tag:D,tagName:X}})=>S7._`{error: ${$}, tag: ${X}, tagValue: ${D}}`},rj0={keyword:"discriminator",type:"object",schemaType:"object",error:pj0,code($){let{gen:D,data:X,schema:J,parentSchema:Y,it:Q}=$,{oneOf:G}=Y;if(!Q.opts.discriminator)throw Error("discriminator: requires discriminator option");let W=J.propertyName;if(typeof W!="string")throw Error("discriminator: requires propertyName");if(J.mapping)throw Error("discriminator: mapping is not supported");if(!G)throw Error("discriminator: requires oneOf keyword");let B=D.let("valid",!1),H=D.const("tag",S7._`${X}${(0,S7.getProperty)(W)}`);D.if(S7._`typeof ${H} == "string"`,()=>U(),()=>$.error(!1,{discrError:KR.DiscrError.Tag,tag:H,tagName:W})),$.ok(B);function U(){let V=q();D.if(!1);for(let z in V)D.elseIf(S7._`${H} === ${z}`),D.assign(B,F(V[z]));D.else(),$.error(!1,{discrError:KR.DiscrError.Mapping,tag:H,tagName:W}),D.endIf()}function F(V){let z=D.name("valid"),w=$.subschema({keyword:"oneOf",schemaProp:V},z);return $.mergeEvaluated(w,S7.Name),z}function q(){var V;let z={},w=L(Y),N=!0;for(let R=0;R<G.length;R++){let E=G[R];if((E===null||E===void 0?void 0:E.$ref)&&!(0,nj0.schemaHasRulesButRef)(E,Q.self.RULES)){let S=E.$ref;if(E=Sa.resolveRef.call(Q.self,Q.schemaEnv.root,Q.baseId,S),E instanceof Sa.SchemaEnv)E=E.schema;if(E===void 0)throw new ij0.default(Q.opts.uriResolver,Q.baseId,S)}let C=(V=E===null||E===void 0?void 0:E.properties)===null||V===void 0?void 0:V[W];if(typeof C!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${W}"`);N=N&&(w||L(E)),M(C,R)}if(!N)throw Error(`discriminator: "${W}" must be required`);return z;function L({required:R}){return Array.isArray(R)&&R.includes(W)}function M(R,E){if(R.const)O(R.const,E);else if(R.enum)for(let C of R.enum)O(C,E);else throw Error(`discriminator: "properties/${W}" must have "const" or "enum"`)}function O(R,E){if(typeof R!="string"||R in z)throw Error(`discriminator: "${W}" values must be unique strings`);z[R]=E}}}};Pa.default=rj0});var va=T((wr0,oj0)=>{oj0.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var VR=T((LD,qR)=>{Object.defineProperty(LD,"__esModule",{value:!0});LD.MissingRefError=LD.ValidationError=LD.CodeGen=LD.Name=LD.nil=LD.stringify=LD.str=LD._=LD.KeywordCxt=LD.Ajv=void 0;var tj0=kp(),sj0=Ra(),ej0=Ca(),_a=va(),$E0=["/properties"],iF="http://json-schema.org/draft-07/schema";class ZQ extends tj0.default{_addVocabularies(){if(super._addVocabularies(),sj0.default.forEach(($)=>this.addVocabulary($)),this.opts.discriminator)this.addKeyword(ej0.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let $=this.opts.$data?this.$dataMetaSchema(_a,$E0):_a;this.addMetaSchema($,iF,!1),this.refs["http://json-schema.org/schema"]=iF}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(iF)?iF:void 0)}}LD.Ajv=ZQ;qR.exports=LD=ZQ;qR.exports.Ajv=ZQ;Object.defineProperty(LD,"__esModule",{value:!0});LD.default=ZQ;var DE0=BQ();Object.defineProperty(LD,"KeywordCxt",{enumerable:!0,get:function(){return DE0.KeywordCxt}});var P7=i0();Object.defineProperty(LD,"_",{enumerable:!0,get:function(){return P7._}});Object.defineProperty(LD,"str",{enumerable:!0,get:function(){return P7.str}});Object.defineProperty(LD,"stringify",{enumerable:!0,get:function(){return P7.stringify}});Object.defineProperty(LD,"nil",{enumerable:!0,get:function(){return P7.nil}});Object.defineProperty(LD,"Name",{enumerable:!0,get:function(){return P7.Name}});Object.defineProperty(LD,"CodeGen",{enumerable:!0,get:function(){return P7.CodeGen}});var XE0=jF();Object.defineProperty(LD,"ValidationError",{enumerable:!0,get:function(){return XE0.default}});var YE0=HQ();Object.defineProperty(LD,"MissingRefError",{enumerable:!0,get:function(){return YE0.default}})});var la=T((ha)=>{Object.defineProperty(ha,"__esModule",{value:!0});ha.formatNames=ha.fastFormats=ha.fullFormats=void 0;function h6($,D){return{validate:$,compare:D}}ha.fullFormats={date:h6(ya,OR),time:h6(wR(!0),LR),"date-time":h6(xa(!0),ua),"iso-time":h6(wR(),fa),"iso-date-time":h6(xa(),ga),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:FE0,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:OE0,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:KE0,int32:{type:"number",validate:zE0},int64:{type:"number",validate:wE0},float:{type:"number",validate:ka},double:{type:"number",validate:ka},password:!0,binary:!0};ha.fastFormats={...ha.fullFormats,date:h6(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,OR),time:h6(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,LR),"date-time":h6(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,ua),"iso-time":h6(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,fa),"iso-date-time":h6(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,ga),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};ha.formatNames=Object.keys(ha.fullFormats);function GE0($){return $%4===0&&($%100!==0||$%400===0)}var WE0=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,BE0=[0,31,28,31,30,31,30,31,31,30,31,30,31];function ya($){let D=WE0.exec($);if(!D)return!1;let X=+D[1],J=+D[2],Y=+D[3];return J>=1&&J<=12&&Y>=1&&Y<=(J===2&&GE0(X)?29:BE0[J])}function OR($,D){if(!($&&D))return;if($>D)return 1;if($<D)return-1;return 0}var zR=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function wR($){return function(X){let J=zR.exec(X);if(!J)return!1;let Y=+J[1],Q=+J[2],G=+J[3],W=J[4],B=J[5]==="-"?-1:1,H=+(J[6]||0),U=+(J[7]||0);if(H>23||U>59||$&&!W)return!1;if(Y<=23&&Q<=59&&G<60)return!0;let F=Q-U*B,q=Y-H*B-(F<0?1:0);return(q===23||q===-1)&&(F===59||F===-1)&&G<61}}function LR($,D){if(!($&&D))return;let X=new Date("2020-01-01T"+$).valueOf(),J=new Date("2020-01-01T"+D).valueOf();if(!(X&&J))return;return X-J}function fa($,D){if(!($&&D))return;let X=zR.exec($),J=zR.exec(D);if(!(X&&J))return;if($=X[1]+X[2]+X[3],D=J[1]+J[2]+J[3],$>D)return 1;if($<D)return-1;return 0}var NR=/t|\s/i;function xa($){let D=wR($);return function(J){let Y=J.split(NR);return Y.length===2&&ya(Y[0])&&D(Y[1])}}function ua($,D){if(!($&&D))return;let X=new Date($).valueOf(),J=new Date(D).valueOf();if(!(X&&J))return;return X-J}function ga($,D){if(!($&&D))return;let[X,J]=$.split(NR),[Y,Q]=D.split(NR),G=OR(X,Y);if(G===void 0)return;return G||LR(J,Q)}var HE0=/\/|:/,UE0=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function FE0($){return HE0.test($)&&UE0.test($)}var ba=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function KE0($){return ba.lastIndex=0,ba.test($)}var qE0=-2147483648,VE0=2147483647;function zE0($){return Number.isInteger($)&&$<=VE0&&$>=qE0}function wE0($){return Number.isInteger($)}function ka(){return!0}var NE0=/[^\\]\\Z/;function OE0($){if(NE0.test($))return!1;try{return new RegExp($),!0}catch(D){return!1}}});var da=T((ca)=>{Object.defineProperty(ca,"__esModule",{value:!0});ca.formatLimitDefinition=void 0;var ME0=VR(),w6=i0(),A8=w6.operators,nF={formatMaximum:{okStr:"<=",ok:A8.LTE,fail:A8.GT},formatMinimum:{okStr:">=",ok:A8.GTE,fail:A8.LT},formatExclusiveMaximum:{okStr:"<",ok:A8.LT,fail:A8.GTE},formatExclusiveMinimum:{okStr:">",ok:A8.GT,fail:A8.LTE}},ZE0={message:({keyword:$,schemaCode:D})=>w6.str`should be ${nF[$].okStr} ${D}`,params:({keyword:$,schemaCode:D})=>w6._`{comparison: ${nF[$].okStr}, limit: ${D}}`};ca.formatLimitDefinition={keyword:Object.keys(nF),type:"string",schemaType:"string",$data:!0,error:ZE0,code($){let{gen:D,data:X,schemaCode:J,keyword:Y,it:Q}=$,{opts:G,self:W}=Q;if(!G.validateFormats)return;let B=new ME0.KeywordCxt(Q,W.RULES.all.format.definition,"format");if(B.$data)H();else U();function H(){let q=D.scopeValue("formats",{ref:W.formats,code:G.code.formats}),V=D.const("fmt",w6._`${q}[${B.schemaCode}]`);$.fail$data((0,w6.or)(w6._`typeof ${V} != "object"`,w6._`${V} instanceof RegExp`,w6._`typeof ${V}.compare != "function"`,F(V)))}function U(){let q=B.schema,V=W.formats[q];if(!V||V===!0)return;if(typeof V!="object"||V instanceof RegExp||typeof V.compare!="function")throw Error(`"${Y}": format "${q}" does not define "compare" function`);let z=D.scopeValue("formats",{key:q,ref:V,code:G.code.formats?w6._`${G.code.formats}${(0,w6.getProperty)(q)}`:void 0});$.fail$data(F(z))}function F(q){return w6._`${q}.compare(${X}, ${J}) ${nF[Y].fail} 0`}},dependencies:["format"]};var AE0=($)=>{return $.addKeyword(ca.formatLimitDefinition),$};ca.default=AE0});var ra=T((AQ,pa)=>{Object.defineProperty(AQ,"__esModule",{value:!0});var C7=la(),jE0=da(),AR=i0(),ia=new AR.Name("fullFormats"),EE0=new AR.Name("fastFormats"),RR=($,D={keywords:!0})=>{if(Array.isArray(D))return na($,D,C7.fullFormats,ia),$;let[X,J]=D.mode==="fast"?[C7.fastFormats,EE0]:[C7.fullFormats,ia],Y=D.formats||C7.formatNames;if(na($,Y,X,J),D.keywords)(0,jE0.default)($);return $};RR.get=($,D="full")=>{let J=(D==="fast"?C7.fastFormats:C7.fullFormats)[$];if(!J)throw Error(`Unknown format "${$}"`);return J};function na($,D,X,J){var Y,Q;(Y=(Q=$.opts.code).formats)!==null&&Y!==void 0||(Q.formats=AR._`require("ajv-formats/dist/formats").${J}`);for(let G of D)$.addFormat(G,X[G])}pa.exports=AQ=RR;Object.defineProperty(AQ,"__esModule",{value:!0});AQ.default=RR});import{existsSync as fE0,readFileSync as uE0}from"node:fs";import{dirname as gE0,join as v7}from"node:path";import{cwd as eF}from"node:process";function hR($){if(!fE0($))return;return uE0($,"utf-8")}function lE0($){let D=[v7(eF(),$,"app","build.gradle"),v7(eF(),$,"app","build.gradle.kts")];for(let X of D){let J=hR(X);if(!J)continue;let Y=J.match(/versionName\s*(?:=\s*)?["']([^"']+)["']/)?.[1],Q=J.match(/versionCode\s*(?:=\s*)?(\d+)/)?.[1];if(Y)return{versionName:Y,versionCode:Q,source:X}}return}function zo($,D){let X=D.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return $.match(new RegExp(`<key>${X}</key>\\s*<string>([^<]+)</string>`))?.[1]?.trim()}function sF($,D){let J=$.match(new RegExp(`${D}\\s*=\\s*([^;]+);`))?.[1]?.trim();if(!J)return;return J.replace(/"/g,"").trim()}function cE0($){let D=v7(eF(),$,"App"),X=v7(D,"App","Info.plist"),J=v7(D,"App.xcodeproj","project.pbxproj"),Y=hR(X),Q=hR(J);if(!Y)return;let G=zo(Y,"CFBundleShortVersionString"),W=zo(Y,"CFBundleVersion");if(G==="$(MARKETING_VERSION)")G=Q?sF(Q,"MARKETING_VERSION"):void 0;if(W==="$(CURRENT_PROJECT_VERSION)")W=Q?sF(Q,"CURRENT_PROJECT_VERSION"):void 0;if(!G&&Q)G=sF(Q,"MARKETING_VERSION");if(!W&&Q)W=sF(Q,"CURRENT_PROJECT_VERSION");if(!G)return;return{versionName:G,versionCode:W,source:X}}function dE0($){let D=$?.plugins?.CapacitorUpdater?.version;if(typeof D==="string"&&D.trim().length>0)return D.trim();return}function iE0($){let D=$?.plugins?.CapacitorUpdater?.defaultChannel;if(typeof D==="string"&&D.trim().length>0)return D.trim();return""}function nE0($){let D=$?.plugins?.CapacitorUpdater?.updateUrl;if(typeof D==="string"&&D.trim().length>0)return D.trim();return hE0}async function No($,D){let X=D?.plugins?.CapacitorUpdater?.appId,J=D?.appId,Y=X||J;if(!Y)return{ok:!1,error:"Could not resolve app ID from capacitor config. Ensure appId is set in capacitor.config.ts or CapacitorUpdater.appId is configured."};let Q=X?"CapacitorUpdater.appId from capacitor config":"top-level appId from capacitor config",G=UJ(D,$),W=$==="android"?lE0(G):cE0(G);if(!W)return{ok:!1,error:`Unable to resolve native ${$.toUpperCase()} version values from platform files in "${G}".`};let B=dE0(D),H=B||W.versionName,U=B?"CapacitorUpdater.version from capacitor config":`native ${$.toUpperCase()} versionName`,F=v7(eF(),"package.json"),q=gE0(F),V=await f1("@capgo/capacitor-updater",q,F);if(!V)return{ok:!1,error:"Unable to resolve installed @capgo/capacitor-updater version from this project."};return{ok:!0,context:{endpoint:nE0(D),payload:{app_id:Y,device_id:mE0,version_name:"builtin",version_build:H,is_emulator:!1,is_prod:!1,platform:$,plugin_version:V,defaultChannel:iE0(D)},nativeSource:W.source,versionBuildSource:U,appIdSource:Q}}}function Oo($){let D={};if($&&typeof $==="object"){for(let[X,J]of Object.entries($))if(X!=="error"&&X!=="message")D[X]=J}return D}function pE0($,D){let X=typeof $?.error==="string"?$.error:void 0,J=typeof $?.message==="string"?$.message:void 0,Y=typeof $?.version==="string"?$.version:void 0;if(X==="no_new_version_available"||Y&&Y===D)return{status:"retry",detail:J||"No new version available yet"};if(X)return{status:"failed",detail:`${X}: ${J??"Unknown backend message"}`,errorCode:X,backendMessage:J,extra:Oo($)};if(Y&&Y!==D)return{status:"available",detail:`Update ${Y} is available`,responseVersion:Y};return{status:"failed",detail:`Unexpected response format: ${JSON.stringify($)}`}}async function Lo($,D){let X;try{X=await fetch($,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(D),signal:AbortSignal.timeout(wo)})}catch(Q){if(Q instanceof DOMException&&Q.name==="TimeoutError")return{success:!1,reason:`Request timed out after ${wo/1000}s — the endpoint did not respond in time.`,backendRefusal:!1};return{success:!1,reason:`Network error: ${Q instanceof Error?Q.message:String(Q)}`,backendRefusal:!1}}let J;try{J=await X.json()}catch{J={error:"invalid_json_response",message:"Non-JSON response from updates endpoint"}}if(!X.ok){let Q=typeof J?.error==="string"?J.error:void 0,G=typeof J?.message==="string"?J.message:void 0;return{success:!1,reason:`HTTP ${X.status}: ${JSON.stringify(J)}`,backendRefusal:!!Q,errorCode:Q,backendMessage:G,extra:Oo(J)}}let Y=pE0(J,D.version_name);if(Y.status==="available")return{success:!0,availableVersion:Y.responseVersion??""};if(Y.status==="retry")return{success:!1,reason:Y.detail,backendRefusal:!1};return{success:!1,reason:Y.detail,backendRefusal:!!Y.errorCode,errorCode:Y.errorCode,backendMessage:Y.backendMessage,extra:Y.extra}}function Mo($){if(!$.errorCode)return[];let D=[];if($.errorCode==="disable_auto_update_to_major"){let J=typeof $.extra?.version==="string"?$.extra.version:"unknown",Y=typeof $.extra?.old==="string"?$.extra.old:"unknown";D.push(`Channel policy blocks major upgrades (target ${J}, device baseline ${Y}).`)}let X=rE0[$.errorCode];if(X)D.push(X.cause),D.push(`Fix: ${X.fix}`),D.push(`Details: ${X.docsUrl||J1}`);else D.push(`Backend returned ${$.errorCode}.`),D.push("Check channel restrictions, app/plugin configuration, and device version values."),D.push(`Troubleshooting guide: ${J1}`);return D}var hE0="https://plugin.capgo.app/updates",mE0="00000000-0000-0000-0000-000000000000",J1="https://capgo.app/docs/plugins/updater/commonproblems/",wo=1e4,rE0;var Zo=c(()=>{f0();rE0={disable_auto_update_to_major:{cause:"Channel blocks major upgrades and device baseline major does not match the target bundle major.",fix:"Set plugins.CapacitorUpdater.version so its MAJOR matches the bundle MAJOR (e.g. 1.0.0 for bundle 1.x.x), run npx cap sync, and reinstall the native build.",docsUrl:`${J1}#disable_auto_update_to_major`},disable_auto_update_to_minor:{cause:"Channel blocks minor upgrades and the target bundle minor is above the device baseline.",fix:"Upload a bundle within the allowed minor range, or change the channel disable_auto_update policy in the dashboard.",docsUrl:`${J1}#disable_auto_update_to_minor--disable_auto_update_to_patch`},disable_auto_update_to_patch:{cause:"Channel blocks patch upgrades and the target bundle patch is above the device baseline.",fix:"Upload a bundle within the allowed patch range, or change the channel disable_auto_update policy in the dashboard.",docsUrl:`${J1}#disable_auto_update_to_minor--disable_auto_update_to_patch`},disable_auto_update_to_metadata:{cause:"Channel uses metadata-based targeting (version_number) and the device baseline is below the required min_update_version.",fix:"Set plugins.CapacitorUpdater.version to match the installed native version, or adjust min_update_version on the channel.",docsUrl:`${J1}#disable_auto_update_to_metadata`},disable_auto_update_under_native:{cause:"Channel prevents downgrades below the native app version.",fix:"Upload a bundle with version >= native baseline, or disable the under-native downgrade protection on the channel.",docsUrl:`${J1}#disable_auto_update_under_native`},misconfigured_channel:{cause:"Channel has disable_auto_update=version_number but min_update_version is missing.",fix:"Set a valid min_update_version on the channel, or change disable_auto_update to a different mode."},cannot_update_via_private_channel:{cause:"The selected channel does not allow device self-assignment.",fix:"Use a channel with self-assignment enabled, or enable self-assignment / make the channel public.",docsUrl:`${J1}#cannot_update_via_private_channel`},semver_error:{cause:"version_build sent to the backend is not valid semver (expected x.y.z).",fix:"Set plugins.CapacitorUpdater.version to a valid semver like 1.2.3, run npx cap sync, and rebuild native.",docsUrl:`${J1}#unknown_version_build--semver_error`},unknown_version_build:{cause:"Backend received version_build=unknown (device baseline version is missing).",fix:"Set plugins.CapacitorUpdater.version in capacitor.config.*, run npx cap sync, and rebuild native.",docsUrl:`${J1}#unknown_version_build--semver_error`},unsupported_plugin_version:{cause:"Installed @capgo/capacitor-updater is too old for the current backend.",fix:"Run npm install @capgo/capacitor-updater@latest, then npx cap sync, and rebuild native.",docsUrl:`${J1}#unsupported_plugin_version`},key_id_mismatch:{cause:"Bundle encryption key and device key differ.",fix:"Ensure the same public key is used in app config and when encrypting bundles, then re-upload the bundle.",docsUrl:`${J1}#key_id_mismatch`},disabled_platform_ios:{cause:"Channel has iOS updates disabled.",fix:"Enable the iOS platform toggle on the target channel in the dashboard.",docsUrl:`${J1}#disabled_platform_ios--disabled_platform_android`},disabled_platform_android:{cause:"Channel has Android updates disabled.",fix:"Enable the Android platform toggle on the target channel in the dashboard.",docsUrl:`${J1}#disabled_platform_ios--disabled_platform_android`},disabled_platform_electron:{cause:"Channel has Electron updates disabled.",fix:"Enable the Electron platform toggle on the target channel in the dashboard."},disable_prod_build:{cause:"Channel blocks production builds (allow_prod is off).",fix:"Enable allow_prod on the channel, or test with a development build.",docsUrl:`${J1}#disable_prod_build--disable_dev_build--disable_device--disable_emulator`},disable_dev_build:{cause:"Channel blocks development builds (allow_dev is off).",fix:"Enable allow_dev on the channel, or test with a production build.",docsUrl:`${J1}#disable_prod_build--disable_dev_build--disable_device--disable_emulator`},disable_device:{cause:"Channel blocks physical devices (allow_device is off).",fix:"Enable allow_device on the channel, or test on an emulator.",docsUrl:`${J1}#disable_prod_build--disable_dev_build--disable_device--disable_emulator`},disable_emulator:{cause:"Channel blocks emulators (allow_emulator is off).",fix:"Enable allow_emulator on the channel, or test on a physical device.",docsUrl:`${J1}#disable_prod_build--disable_dev_build--disable_device--disable_emulator`},no_channel:{cause:"No channel was resolved for this device.",fix:"Set defaultChannel in capacitor.config.* plugins.CapacitorUpdater section, or create a default channel in the dashboard.",docsUrl:`${J1}#no_channel--null_channel_data`},null_channel_data:{cause:"Channel was resolved but contains no usable data.",fix:"Set defaultChannel in capacitor.config.* plugins.CapacitorUpdater section, or verify the channel has a bundle assigned.",docsUrl:`${J1}#no_channel--null_channel_data`},missing_info:{cause:"Request is missing required fields (app_id, device_id, version_build, or platform).",fix:"Check capacitor.config.* for a valid appId and verify the probe payload."},no_bundle:{cause:"Channel resolved a version but no downloadable bundle artifact exists.",fix:"Re-upload the bundle with npx @capgo/cli@latest bundle upload and verify channel assignment."},no_bundle_url:{cause:"Bundle was resolved but its download URL is missing.",fix:"Re-upload the bundle — the storage artifact may be corrupted or missing."},no_url_or_manifest:{cause:"Bundle was resolved but neither URL nor manifest is available.",fix:"Re-upload the bundle — the storage artifact may be corrupted or missing."},already_on_builtin:{cause:"Device is already running the builtin bundle.",fix:"Upload and assign a bundle to the channel for OTA updates to be delivered."},revert_to_builtin_plugin_version_too_old:{cause:"Plugin version is too old for safe builtin revert.",fix:"Run npm install @capgo/capacitor-updater@latest, then npx cap sync, and rebuild native."},on_premise_app:{cause:"App is either flagged as on-premise or does not exist in Capgo Cloud.",fix:"Check that the app_id is registered in Capgo (capgo app add). If it is an on-premise app, configure plugins.CapacitorUpdater.updateUrl to point to your on-prem update endpoint."},need_plan_upgrade:{cause:"Update checks are blocked by plan limits.",fix:"Upgrade your Capgo plan or contact your organization admin."},invalid_json_body:{cause:"Updates endpoint rejected the request body as invalid JSON.",fix:"This is likely a CLI bug — please report it at https://github.com/Cap-go/CLI/issues."},invalid_query_parameters:{cause:"Updates endpoint rejected the query parameters.",fix:"This is likely a CLI bug — please report it at https://github.com/Cap-go/CLI/issues."}}});var Eo={};v1(Eo,{probeInternal:()=>jo,probe:()=>mR});import{exit as aE0,stdin as Ao,stdout as Ro}from"node:process";async function jo($){let D;try{D=(await R0()).config}catch{return{success:!1,error:"Failed to load Capacitor config."}}let X;if($.platform==="ios"||$.platform==="android")X=$.platform;else if($.platform)return{success:!1,error:`Invalid platform "${$.platform}". Must be "ios" or "android".`};else{if(!(!!Ao.isTTY&&!!Ro.isTTY))return{success:!1,error:"Platform is required in non-interactive environments. Use --platform ios or --platform android."};let B=await G1({message:"Which platform do you want to probe?",options:[{value:"ios",label:"iOS"},{value:"android",label:"Android"}]});if(I0(B))return{success:!1,error:"Probe cancelled."};X=B}let J=await No(X,D);if(!J.ok)return{success:!1,error:`Probe setup failed: ${J.error}`};let Y=J.context,Q=await Lo(Y.endpoint,Y.payload),G={success:Q.success,probeResult:Q,endpoint:Y.endpoint,platform:X,versionBuild:Y.payload.version_build,versionBuildSource:Y.versionBuildSource,appId:Y.payload.app_id,appIdSource:Y.appIdSource,nativeSource:Y.nativeSource};if(!Q.success)G.hints=Mo(Q);return G}async function mR($){w0("Probe Capgo updates endpoint");let D=await jo($);if(D.error)K.error(D.error),aE0(1);K.info(`Endpoint: ${D.endpoint}`),K.info(`Platform: ${D.platform}, version_build: ${D.versionBuild}`),K.info(`version_build source: ${D.versionBuildSource}`),K.info(`app_id: ${D.appId} (${D.appIdSource})`),K.info(`Native values source: ${D.nativeSource}`);let X=D.probeResult;if(X.success)K.success(`Update available: ${X.availableVersion}`);else{if(K.warn(`Reason: ${X.reason}`),X.backendRefusal)K.warn("The backend actively refused the request (not a cache/propagation issue).");if(X.errorCode)K.warn(`Error code: ${X.errorCode}`);if(X.backendMessage)K.warn(`Backend message: ${X.backendMessage}`);if(D.hints)for(let J of D.hints)K.warn(` ${J}`)}}var lR=c(()=>{y0();Zo();f0()});import{exit as iR}from"node:process";var Kj=f$(Fj(),1),{program:a$,createCommand:HI0,createArgument:UI0,createOption:FI0,CommanderError:KI0,InvalidArgumentError:qI0,InvalidOptionArgumentError:VI0,Command:zI0,Argument:wI0,Option:NI0,Help:OI0}=Kj.default;g9();y0();import{existsSync as mg,readFileSync as lg}from"node:fs";y0();f0();async function gg($,D){let{data:X}=await $.rpc("exist_app_v2",{appid:D}).single();return!!X}async function hg($,D){return await Promise.all(D.map(async(J)=>{let{data:Y}=await $.rpc("exist_app_v2",{appid:J}).single();return{appid:J,exists:!!Y}}))}async function $1($,D,X=!1){let{data:J,error:Y}=await $.rpc("reject_access_due_to_2fa_for_app",{app_id:D});if(Y){if(!X)K.error(`Cannot check 2FA compliance: ${Y.message}`);throw Error(`Cannot check 2FA compliance: ${Y.message}`)}if(J){if(X)throw Error("2FA required for this organization");UM()}}async function x$($,D,X,J,Y=!1,Q=!1){let G=E1();if(!Q)await $1($,X,Y);let W=await Rg($,D,X);if(!W.okay)switch(W.error){case"INVALID_APIKEY":{if(!Y)K.error("Invalid apikey, such apikey does not exists!");throw Error("Invalid apikey, such apikey does not exists!")}case"NO_APP":{let U=`App ${X} does not exist, run first \`${G.runner} @capgo/cli app add ${X}\` to create it`;if(!Y)K.error(U);throw Error(U)}case"NO_ORG":{if(!Y)K.error("Could not find organization, please contact support to resolve this!");throw Error("Could not find organization, please contact support to resolve this!")}}let B=W.data;if(J>B){let U=`Insuficcent permissions for app ${X}. Current permission: ${u1[W.data]}, required for this action: ${u1[J]}.`;if(!Y)K.error(U);throw Error(U)}return W.data}var hD="assets/icon.png";U1();f0();var sB0=/^[a-z0-9]+(\.[\w-]+)+$/i;function eB0($,D,X){if(!D.apikey){if(!X)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!$){if(!X)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}if($.includes("--")){if(!X)K.error('The app id includes illegal symbols. You cannot use "--" in the app id');throw Error("App id includes illegal symbols")}if(!sB0.test($)){if(!X)K.error(`Invalid app ID format: "${$}"`),K.info("App ID must be in reverse domain notation (e.g., com.example.app)"),K.info("Valid format: lowercase letters, numbers, dots, hyphens, and underscores"),K.info("Examples: com.mycompany.myapp, io.capgo.app, com.example.my-app");throw Error("Invalid app ID format")}}async function $H0($,D,X){if(!await gg($,D))return;if(D==="io.ionic.starter"){if(!X)K.error(`This appId ${D} cannot be used it's reserved, please change it in your capacitor config.`);throw Error("Reserved appId, please change it in capacitor config")}if(!X)K.error(`App ${D} already exist`);throw Error(`App ${D} already exists`)}async function sY($,D,X,J=!1){if(!J)w0("Adding");await s0(),D.apikey=D.apikey||K0();let Y=await R0(),Q=n0($,Y?.config);eB0(Q,D,J);let G=await E0(D.apikey,D.supaHost,D.supaAnon),W=await x0(G,D.apikey,["write","all"]);if(await $H0(G,Q,J),!X)X=await k3(G,["admin","super_admin"]);let B=X.gid,{name:H,icon:U}=D;if(H=H||Y.config?.appName||"Unknown",U=U||"resources/icon.png",!U||!H){if(!J)K.error("Missing argument, you need to provide a appId and a name, or be in a capacitor project");throw Error("Missing app name or icon path")}if(!J)K.info(`Adding ${Q} to Capgo`);let F=null,q=null;if(U&&mg(U)){if(F=lg(U),q=D8(U)||"image/png",!J)K.warn(`Found app icon ${U}`)}else if(mg(hD)){if(F=lg(hD),q=D8(hD)||"image/png",!J)K.warn(`Found app icon ${hD}`)}else if(!J)K.warn(`Cannot find app icon in any of the following locations: ${U}, ${hD}`);let V="icon",z="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(F&&q){let{error:N}=await G.storage.from(`images/org/${B}/${Q}`).upload(V,F,{contentType:q});if(N){if(!J)console.error(N);if(!J)K.error(`Could not add app ${i(N)}`);throw Error(`Could not add app ${i(N)}`)}let{data:L}=await G.storage.from(`images/org/${B}/${Q}`).getPublicUrl(V);z=L?.publicUrl||z}let{error:w}=await G.from("apps").insert({icon_url:z,owner_org:B,user_id:W,name:H,app_id:Q});if(w){if(!J)K.error(`Could not add app ${i(w)}`);throw Error(`Could not add app ${i(w)}`)}if(await _0(D.apikey,{channel:"app",event:"App Created",icon:"\uD83C\uDD95",user_id:B,tags:{"app-id":Q},notify:!1,notifyConsole:!0}).catch(()=>{}),!J)K.success(`App ${Q} added to Capgo`),K.info("This app is accessible to all members of your organization based on their permissions"),K.info(`Next step: upload a bundle with "npx @capgo/cli bundle upload ${Q}"`),W0("Done ✅");return{appId:Q,organizationUid:B,userId:W,name:H,signedURL:z}}async function cg($,D){await sY($,D,void 0)}GW();y0();f0();async function VM($,D,X=!1,J=!1){if(!X)w0("Deleting");D.apikey=D.apikey||K0();let Y=await R0(),Q=n0($,Y?.config);if(!D.apikey){if(!X)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!Q){if(!X)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let G=await E0(D.apikey,D.supaHost,D.supaAnon),W=await x0(G,D.apikey,["write","all"]);await x$(G,D.apikey,Q,5,X);let{data:B,error:H}=await G.from("apps").select("owner_org ( created_by, id )").eq("app_id",Q).single(),U=B;if(!J&&!H&&(U?.owner_org.created_by??"")!==W)if(!X){K.warn("Deleting the app is not recommended for users that are not the organization owner"),K.warn("You are invited as a super_admin but your are not the owner"),K.warn("It's strongly recommended that you do not continue!");let w=await G1({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(I0(w)||w==="no")throw K.error("Canceled deleting the app, exiting"),Error("App deletion cancelled")}else throw Error("Cannot delete app: you are not the organization owner");else if(H&&!X)K.warn(`Cannot get the app owner ${i(H)}`);let{error:F}=await G.storage.from("images").remove([`org/${U?.owner_org.id}/${Q}/icon`]);if(F&&!X)K.error("Could not delete app logo");let{error:q}=await G.storage.from(`apps/${Q}/${W}`).remove(["versions"]);if(q&&!X)K.error("Could not delete app version");let{error:V}=await G.from("apps").delete().eq("app_id",Q);if(V){if(!X)K.error("Could not delete app");throw Error(`Could not delete app: ${i(V)}`)}let z=await Y1(G,Q);if(await _0(D.apikey,{channel:"app",event:"App Deleted",icon:"\uD83D\uDDD1️",user_id:z,tags:{"app-id":Q},notify:!1}).catch(()=>{}),!X)K.success("App deleted in Capgo"),W0("Done ✅");return!0}async function dg($,D){return VM($,D,!1,!1)}y0();g9();f0();import{platform as DH0,version as XH0}from"node:os";import{version as YH0}from"node:process";async function ig($){let D={},X=Object.keys($);return(await Promise.all(X.map((Y)=>QW(Y)))).forEach((Y,Q)=>{if(Y)D[X[Q]]=Y}),D}async function JH0(){let $=await uD(),D={"@capgo/cli":GD.version};for(let[X,J]of $)if(X.startsWith("@capgo/")||X.startsWith("@capawesome/")||X.startsWith("capacitor"))D[X]=J;return D}async function zM($,D=!1){if(!D)K.warn(" \uD83D\uDC8A Capgo Doctor \uD83D\uDC8A");let X=await R0(),J=Q6("",$.packageJson),Y=X?.config?.plugins?.CapacitorUpdater?.version||J,Q=X?.config?.appName||"",G=n0("",X?.config),W=X?.config?.webDir||"";if(!D)K.info(` App Name: ${Q}`),K.info(` App ID: ${G}`),K.info(` App Version: ${Y}`),K.info(` Web Dir: ${W}`),K.info(` OS: ${DH0()} ${XH0()}`),K.info(` Node: ${YH0}`),K.info(" Installed Dependencies:");let B=await JH0();if(Object.keys(B).length===0){if(!D)K.warning("\x1B[31m%s\x1B[0m \uD83D\uDEA8 No dependencies found");throw Error("No dependencies found")}if(!D)for(let U of Object.keys(B))K.info(` ${U}: ${B[U]}`);let H={};if(!D){let U=t0();U.start("Running: Loading latest dependencies"),H=await ig(B),U.stop("Latest Dependencies:");for(let F of Object.keys(H))K.info(` ${F}: ${H[F]}`)}else H=await ig(B);if(JSON.stringify(B)!==JSON.stringify(H)){if(!D)K.warn("\x1B[31m\uD83D\uDEA8 Some dependencies are not up to date\x1B[0m");throw Error("Some dependencies are not up to date")}if(!D)K.success("\x1B[32m✅ All dependencies are up to date\x1B[0m");return{appName:Q,appId:G,appVersion:Y,webDir:W,installedDependencies:B,latestDependencies:H}}async function ng($){return zM($)}y0();A6();U1();f0();function QH0($){let D=new I$;D.headers=["Name","id","Created"],D.rows=[];for(let X of $.toReversed())D.rows.push([X.name??"",X.app_id,y3(X.created_at)]);K.success("Apps"),K.success(D.toString())}async function GH0($,D){let{data:X,error:J}=await $.from("apps").select().order("created_at",{ascending:!1});if(J){if(!D)K.error("Apps not found");throw Error("Apps not found")}return X??[]}async function wM($,D=!1){if(!D)w0("List apps in Capgo");await s0(),$.apikey=$.apikey||K0();let X=await E0($.apikey,$.supaHost,$.supaAnon);if(await x0(X,$.apikey,["write","all","read","upload"]),!D)K.info("Getting active bundle in Capgo");let J=await GH0(X,D);if(!J.length){if(!D)K.error("No apps found");throw Error("No apps found")}if(!D)K.info(`Active app in Capgo: ${J.length}`),QH0(J),W0("Done ✅");return J}async function pg($){return wM($,!1)}y0();import{randomUUID as WH0}from"node:crypto";import{existsSync as rg,readFileSync as ag}from"node:fs";f0();async function NM($,D,X=!1){if(!X)w0("Set app");D.apikey=D.apikey||K0();let J=await R0();if($=n0($,J?.config),!D.apikey){if(!X)K.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!$){if(!X)K.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let Y=await E0(D.apikey,D.supaHost,D.supaAnon),G=(await k3(Y,["admin","super_admin"])).gid,W=await x0(Y,D.apikey,["write","all"]);await x$(Y,D.apikey,$,4,X);let{name:B,icon:H,retention:U,exposeMetadata:F}=D;if(U&&Number.isNaN(Number(U))){if(!X)K.error("retention value must be a number");throw Error("Retention value must be a number")}else if(U&&U<0){if(!X)K.error("retention value cannot be less than 0");throw Error("Retention value cannot be less than 0")}else if(U&&U>=63113904){if(!X)K.error("retention value cannot be greater than 63113904 seconds (2 years)");throw Error("Retention value cannot be greater than 63113904 seconds (2 years)")}let q,V,z=`icon_${WH0()}`,w="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(H&&rg(H)){if(q=ag(H),V=D8(H)||"image/png",!X)K.warn(`Found app icon ${H}`)}else if(rg(hD)){if(q=ag(hD),V=D8(hD)||"image/png",!X)K.warn(`Found app icon ${hD}`)}else if(!X)K.warn(`Cannot find app icon in any of the following locations: ${H}, ${hD}`);if(q&&V){let{error:L}=await Y.storage.from(`images/org/${G}/${$}`).upload(z,q,{contentType:V});if(L){if(!X)K.error(`Could not set app ${i(L)}`);throw Error(`Could not set app: ${i(L)}`)}let{data:M}=await Y.storage.from(`images/org/${G}/${$}`).getPublicUrl(z);w=M?.publicUrl||w}let{error:N}=await Y.from("apps").update({icon_url:w,name:B,retention:!U?void 0:U*24*60*60,expose_metadata:F}).eq("app_id",$).eq("user_id",W);if(N){if(!X)K.error(`Could not set app ${i(N)}`);throw Error(`Could not set app: ${i(N)}`)}if(await _0(D.apikey,{channel:"app",event:"App Updated",icon:"\uD83D\uDCDD",user_id:G,tags:{"app-id":$},notify:!1,notifyConsole:!0}).catch(()=>{}),!X)W0("Done ✅");return!0}async function og($,D){return NM($,D)}y0();bW();f0();async function OM($,D,X=!1){if(!X)w0("Set a specific setting in capacitor config");if(D.bool&&D.string){if(!X)K.error("Bool and string CANNOT be set at the same time");throw Error("Bool and string cannot both be provided")}if(!D.bool&&!D.string){if(!X)K.error("You MUST provide either bool or string as the value");throw Error("Either bool or string value is required")}if(D.bool&&D.bool!=="true"&&D.bool!=="false"){if(!X)K.error("Invalid bool");throw Error("Invalid bool value; expected true or false")}try{let J=await R0(),Y=J.config,Q=$.split(".");if(Q.length===0){if(!X)K.error("Invalid path");throw Error("Invalid config path")}for(let W of Q.slice(0,-1)){if(!Object.prototype.hasOwnProperty.call(Y,W))Y[W]={};Y=Y[W]}let G=D.bool?D.bool==="true":D.string;if(Y[Q.at(-1)]=G,await u5(J,!0),!X)K.success(`Set "${$}" to "${G}"`)}catch(J){if(!X)K.error(`Cannot set config in capacitor settings ${i(J)}`);throw Error(`Cannot set capacitor config: ${i(J)}`)}if(!X)W0("Done ✅")}async function tg($,D){return OM($,D)}y0();f0();import{existsSync as mD}from"node:fs";import{resolve as lD}from"node:path";import{exit as b$}from"node:process";import{mkdir as BH0,readFile as eg,writeFile as HH0}from"node:fs/promises";import{homedir as UH0}from"node:os";import{join as gH}from"node:path";import{cwd as $h,env as FH0}from"node:process";var Dh=gH(UH0(),".capgo-credentials"),Xh=gH(Dh,"credentials.json"),Yh=".capgo-credentials.json",uH=3600,sg=604800;function Jh($){return $?gH($h(),Yh):Xh}function KH0($){return $?null:Dh}function g3($){let X=$.trim().match(/^(\d+)\s*([smhd])?$/i);if(!X)throw Error("output-retention must be a number with optional unit: s, m, h, d (examples: 1h, 3600s, 2d)");let J=Number.parseInt(X[1],10),Y=(X[2]||"s").toLowerCase(),G=J*(Y==="s"?1:Y==="m"?60:Y==="h"?3600:86400);if(G<uH)throw Error(`output-retention must be at least ${uH} seconds (1h)`);if(G>sg)throw Error(`output-retention must be at most ${sg} seconds (7d)`);return G}function h3($){if($===void 0)return!0;if(typeof $==="boolean")return $;let D=$.trim().toLowerCase();if(D==="true"||D==="1"||D==="yes")return!0;if(D==="false"||D==="0"||D==="no")return!1;throw Error("output-upload must be true/false (examples: --output-upload, --output-upload false)")}async function f3($){return(await eg($)).toString("base64")}async function u3($){try{let D=Jh($),X=await eg(D,"utf-8");return JSON.parse(X)}catch{return{}}}async function eY($,D){if(D!==void 0){let Y=await u3(D);if(!$){let Q=Object.keys(Y);if(Q.length===0)return null;return Y[Q[0]]||null}return Y[$]||null}let X=await u3(!0),J=await u3(!1);if(!$){let Y=Object.keys(X);if(Y.length>0)return X[Y[0]]||null;let Q=Object.keys(J);if(Q.length===0)return null;return J[Q[0]]||null}return X[$]||J[$]||null}async function fH($,D){let X=Jh(D),J=KH0(D);if(J)await BH0(J,{recursive:!0});await HH0(X,JSON.stringify($,null,2),"utf-8")}function V1($){return FH0[$]}function qH0(){let $={},D=V1("BUILD_CERTIFICATE_BASE64"),X=V1("BUILD_PROVISION_PROFILE_BASE64"),J=V1("BUILD_PROVISION_PROFILE_BASE64_PROD"),Y=V1("P12_PASSWORD"),Q=V1("APPLE_KEY_ID"),G=V1("APPLE_ISSUER_ID"),W=V1("APPLE_KEY_CONTENT"),B=V1("APPLE_PROFILE_NAME"),H=V1("APP_STORE_CONNECT_TEAM_ID"),U=V1("CAPGO_IOS_SCHEME"),F=V1("CAPGO_IOS_TARGET"),q=V1("ANDROID_KEYSTORE_FILE"),V=V1("KEYSTORE_KEY_ALIAS"),z=V1("KEYSTORE_KEY_PASSWORD"),w=V1("KEYSTORE_STORE_PASSWORD"),N=V1("PLAY_CONFIG_JSON"),L=V1("BUILD_OUTPUT_UPLOAD_ENABLED"),M=V1("BUILD_OUTPUT_RETENTION_SECONDS");if(D)$.BUILD_CERTIFICATE_BASE64=D;if(X)$.BUILD_PROVISION_PROFILE_BASE64=X;if(J)$.BUILD_PROVISION_PROFILE_BASE64_PROD=J;if(Y)$.P12_PASSWORD=Y;if(Q)$.APPLE_KEY_ID=Q;if(G)$.APPLE_ISSUER_ID=G;if(W)$.APPLE_KEY_CONTENT=W;if(B)$.APPLE_PROFILE_NAME=B;if(H)$.APP_STORE_CONNECT_TEAM_ID=H;if(U)$.CAPGO_IOS_SCHEME=U;if(F)$.CAPGO_IOS_TARGET=F;if(q)$.ANDROID_KEYSTORE_FILE=q;if(V)$.KEYSTORE_KEY_ALIAS=V;if(z)$.KEYSTORE_KEY_PASSWORD=z;if(w)$.KEYSTORE_STORE_PASSWORD=w;if(N)$.PLAY_CONFIG_JSON=N;if(L)$.BUILD_OUTPUT_UPLOAD_ENABLED=h3(L)?"true":"false";if(M)$.BUILD_OUTPUT_RETENTION_SECONDS=String(g3(M));return $}async function Qh($,D,X){let J=await eY($),Y=qH0(),Q={...J?.[D]||{}};if(Object.assign(Q,Y),X)Object.assign(Q,X);if(D==="android"){let G=!!Q.KEYSTORE_KEY_PASSWORD,W=!!Q.KEYSTORE_STORE_PASSWORD;if(G&&!W)Q.KEYSTORE_STORE_PASSWORD=Q.KEYSTORE_KEY_PASSWORD;else if(!G&&W)Q.KEYSTORE_KEY_PASSWORD=Q.KEYSTORE_STORE_PASSWORD}return Object.keys(Q).length>0?Q:void 0}async function LM($,D,X={}){let J={...X};if($==="ios"){if(D.BUILD_CERTIFICATE_FILE)J.BUILD_CERTIFICATE_BASE64=await f3(D.BUILD_CERTIFICATE_FILE);if(D.BUILD_PROVISION_PROFILE_FILE)J.BUILD_PROVISION_PROFILE_BASE64=await f3(D.BUILD_PROVISION_PROFILE_FILE);if(D.BUILD_PROVISION_PROFILE_FILE_PROD)J.BUILD_PROVISION_PROFILE_BASE64_PROD=await f3(D.BUILD_PROVISION_PROFILE_FILE_PROD);if(D.APPLE_KEY_FILE)J.APPLE_KEY_CONTENT=await f3(D.APPLE_KEY_FILE)}else if($==="android"){if(D.ANDROID_KEYSTORE_PATH)J.ANDROID_KEYSTORE_FILE=await f3(D.ANDROID_KEYSTORE_PATH);if(D.PLAY_CONFIG_JSON_PATH)J.PLAY_CONFIG_JSON=await f3(D.PLAY_CONFIG_JSON_PATH)}return J}async function MM($,D,X,J){let Y=await u3(J),Q=Y[$]||{};Q[D]={...Q[D],...X},Y[$]=Q,await fH(Y,J)}async function hH($,D,X){let J=await u3(X);if(!$){await fH({},X);return}if(!D){delete J[$],await fH(J,X);return}let Y=J[$]||{};if(delete Y[D],Object.keys(Y).length===0)delete J[$];else J[$]=Y;await fH(J,X)}async function ZM($,D,X){return(await eY($,X))?.[D]||null}async function mH($){let D=await u3($);return Object.keys(D)}function $J(){return gH($h(),Yh)}function DJ(){return Xh}async function Gh($){try{if(!$.platform)K.error("Platform is required. Use --platform ios or --platform android"),b$(1);let D=await R0(),X=n0($.appId,D?.config);if(!X)K.error("❌ App ID is required."),K.error(""),K.error("Either:"),K.error(" 1. Run this command from a Capacitor project directory, OR"),K.error(" 2. Provide --appId explicitly: --appId com.example.app"),K.error(""),b$(1);let J=$.platform;K.info(`
304
304
  \uD83D\uDD12 SECURITY NOTICE:`),K.info(" - Credentials saved to ~/.capgo-credentials/credentials.json (local only)"),K.info(" - When building, credentials are sent to Capgo servers"),K.info(" - Credentials are NEVER stored on Capgo servers"),K.info(" - Auto-deleted after build"),K.info(" - Builds sent directly to app stores"),K.info(` - Build outputs can optionally be uploaded for time-limited download links
305
- `);let Y={},Q={},G=$.outputUpload===void 0?!0:h3($.outputUpload),W=$.outputRetention?g3($.outputRetention):uH;if(Y.BUILD_OUTPUT_UPLOAD_ENABLED=G?"true":"false",Y.BUILD_OUTPUT_RETENTION_SECONDS=String(W),J==="ios"){if($.certificate){let F=lD($.certificate);if(!mD(F))K.error(`Certificate file not found: ${F}`),b$(1);Q.BUILD_CERTIFICATE_FILE=F,K.info(`✓ Certificate file: ${F}`)}if($.provisioningProfile){let F=lD($.provisioningProfile);if(!mD(F))K.error(`Provisioning profile not found: ${F}`),b$(1);Q.BUILD_PROVISION_PROFILE_FILE=F,K.info(`✓ Provisioning profile: ${F}`)}if($.provisioningProfileProd){let F=lD($.provisioningProfileProd);if(!mD(F))K.error(`Production provisioning profile not found: ${F}`),b$(1);Q.BUILD_PROVISION_PROFILE_FILE_PROD=F,K.info(`✓ Production provisioning profile: ${F}`)}if($.appleKey){let F=lD($.appleKey);if(!mD(F))K.error(`Apple key file not found: ${F}`),b$(1);Q.APPLE_KEY_FILE=F,K.info(`✓ Apple key file: ${F}`)}if($.p12Password)Y.P12_PASSWORD=$.p12Password;else if(Q.BUILD_CERTIFICATE_FILE)K.warn("⚠️ No P12 password provided - assuming certificate has no password"),K.warn(' If your certificate requires a password, add --p12-password "your-password"');if($.appleKeyId)Y.APPLE_KEY_ID=$.appleKeyId;if($.appleIssuerId)Y.APPLE_ISSUER_ID=$.appleIssuerId;if($.appleProfileName)Y.APPLE_PROFILE_NAME=$.appleProfileName;if($.appleTeamId)Y.APP_STORE_CONNECT_TEAM_ID=$.appleTeamId}else if(J==="android"){if($.keystore){let V=lD($.keystore);if(!mD(V))K.error(`Keystore file not found: ${V}`),b$(1);Q.ANDROID_KEYSTORE_PATH=V,K.info(`✓ Keystore file: ${V}`)}if($.playConfig){let V=lD($.playConfig);if(!mD(V))K.error(`Play config file not found: ${V}`),b$(1);Q.PLAY_CONFIG_JSON_PATH=V,K.info(`✓ Play Store config: ${V}`)}if($.keystoreAlias)Y.KEYSTORE_KEY_ALIAS=$.keystoreAlias;let F=!!$.keystoreKeyPassword,q=!!$.keystoreStorePassword;if(F&&!q)Y.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,Y.KEYSTORE_STORE_PASSWORD=$.keystoreKeyPassword;else if(!F&&q)Y.KEYSTORE_KEY_PASSWORD=$.keystoreStorePassword,Y.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword;else if(F&&q)Y.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,Y.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword}let B=await LM(J,Q,Y),H=[];if(J==="ios"){if(!B.BUILD_CERTIFICATE_BASE64)H.push("--certificate <path> (P12 certificate file)");if(!B.BUILD_PROVISION_PROFILE_BASE64)H.push("--provisioning-profile <path> (Provisioning profile file)");if(!B.APPLE_KEY_ID)H.push("--apple-key-id <id> (App Store Connect API Key ID)");if(!B.APPLE_ISSUER_ID)H.push("--apple-issuer-id <id> (App Store Connect Issuer ID)");if(!B.APPLE_KEY_CONTENT)H.push("--apple-key <path> (App Store Connect API Key file)");if(!B.APP_STORE_CONNECT_TEAM_ID)H.push("--apple-team-id <id> (App Store Connect Team ID)");if(!B.APPLE_PROFILE_NAME)H.push("--apple-profile-name <name> (Provisioning profile name)")}else if(J==="android"){if(!B.ANDROID_KEYSTORE_FILE)H.push("--keystore <path> (Keystore file)");if(!B.KEYSTORE_KEY_ALIAS)H.push("--keystore-alias <alias> (Keystore alias)");if(!B.KEYSTORE_KEY_PASSWORD&&!B.KEYSTORE_STORE_PASSWORD)H.push("--keystore-key-password <password> OR --keystore-store-password <password> (At least one password required, will be used for both)");if(!B.PLAY_CONFIG_JSON)H.push("--play-config <path> (Google Play service account JSON - required for uploading to Play Store)")}if(H.length>0){K.error(`❌ Missing required credentials for ${J.toUpperCase()}:`),K.error("");for(let F of H)K.error(` • ${F}`);if(K.error(""),K.error("Example:"),J==="ios")K.error(" npx @capgo/cli build credentials save --platform ios \\"),K.error(" --certificate ./cert.p12 \\"),K.error(' --p12-password "your-password" \\ # Optional if cert has no password'),K.error(" --provisioning-profile ./profile.mobileprovision \\"),K.error(" --apple-key ./AuthKey_XXXXXXXXXX.p8 \\"),K.error(' --apple-key-id "XXXXXXXXXX" \\'),K.error(' --apple-issuer-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \\'),K.error(' --apple-team-id "XXXXXXXXXX" \\'),K.error(' --apple-profile-name "match AppStore com.example.app"');else K.error(" npx @capgo/cli build credentials save --platform android \\"),K.error(" --keystore ./release.keystore \\"),K.error(' --keystore-alias "my-key-alias" \\'),K.error(' --keystore-key-password "password" \\'),K.error(" --play-config ./play-store-service-account.json"),K.error(""),K.error(" Note: If both key and store passwords are the same, you only need to provide one."),K.error(" If they differ, provide both --keystore-key-password and --keystore-store-password."),K.error(" The --play-config is required for uploading to Google Play Store.");K.error(""),b$(1)}await MM(X,J,B,$.local);try{let F=K0(!0);if(F){let q=await E0(F),V=await Y1(q,X);await _0(F,{channel:"credentials",event:"Credentials saved",icon:"\uD83D\uDD10",user_id:V,tags:{"app-id":X,platform:J,storage:$.local?"local":"global"},notify:!1}).catch()}}catch{}let U=$.local?$J():DJ();K.success(`
305
+ `);let Y={},Q={},G=$.outputUpload===void 0?!0:h3($.outputUpload),W=$.outputRetention?g3($.outputRetention):uH;if(Y.BUILD_OUTPUT_UPLOAD_ENABLED=G?"true":"false",Y.BUILD_OUTPUT_RETENTION_SECONDS=String(W),J==="ios"){if($.certificate){let F=lD($.certificate);if(!mD(F))K.error(`Certificate file not found: ${F}`),b$(1);Q.BUILD_CERTIFICATE_FILE=F,K.info(`✓ Certificate file: ${F}`)}if($.provisioningProfile){let F=lD($.provisioningProfile);if(!mD(F))K.error(`Provisioning profile not found: ${F}`),b$(1);Q.BUILD_PROVISION_PROFILE_FILE=F,K.info(`✓ Provisioning profile: ${F}`)}if($.provisioningProfileProd){let F=lD($.provisioningProfileProd);if(!mD(F))K.error(`Production provisioning profile not found: ${F}`),b$(1);Q.BUILD_PROVISION_PROFILE_FILE_PROD=F,K.info(`✓ Production provisioning profile: ${F}`)}if($.appleKey){let F=lD($.appleKey);if(!mD(F))K.error(`Apple key file not found: ${F}`),b$(1);Q.APPLE_KEY_FILE=F,K.info(`✓ Apple key file: ${F}`)}if($.p12Password)Y.P12_PASSWORD=$.p12Password;else if(Q.BUILD_CERTIFICATE_FILE)K.warn("⚠️ No P12 password provided - assuming certificate has no password"),K.warn(' If your certificate requires a password, add --p12-password "your-password"');if($.appleKeyId)Y.APPLE_KEY_ID=$.appleKeyId;if($.appleIssuerId)Y.APPLE_ISSUER_ID=$.appleIssuerId;if($.appleProfileName)Y.APPLE_PROFILE_NAME=$.appleProfileName;if($.appleTeamId)Y.APP_STORE_CONNECT_TEAM_ID=$.appleTeamId}else if(J==="android"){if($.keystore){let V=lD($.keystore);if(!mD(V))K.error(`Keystore file not found: ${V}`),b$(1);Q.ANDROID_KEYSTORE_PATH=V,K.info(`✓ Keystore file: ${V}`)}if($.playConfig){let V=lD($.playConfig);if(!mD(V))K.error(`Play config file not found: ${V}`),b$(1);Q.PLAY_CONFIG_JSON_PATH=V,K.info(`✓ Play Store config: ${V}`)}if($.keystoreAlias)Y.KEYSTORE_KEY_ALIAS=$.keystoreAlias;let F=!!$.keystoreKeyPassword,q=!!$.keystoreStorePassword;if(F&&!q)Y.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,Y.KEYSTORE_STORE_PASSWORD=$.keystoreKeyPassword;else if(!F&&q)Y.KEYSTORE_KEY_PASSWORD=$.keystoreStorePassword,Y.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword;else if(F&&q)Y.KEYSTORE_KEY_PASSWORD=$.keystoreKeyPassword,Y.KEYSTORE_STORE_PASSWORD=$.keystoreStorePassword}let B=await LM(J,Q,Y),H=[];if(J==="ios"){if(!B.BUILD_CERTIFICATE_BASE64)H.push("--certificate <path> (P12 certificate file)");if(!B.BUILD_PROVISION_PROFILE_BASE64)H.push("--provisioning-profile <path> (Provisioning profile file)");if(!B.APPLE_KEY_ID)H.push("--apple-key-id <id> (App Store Connect API Key ID)");if(!B.APPLE_ISSUER_ID)H.push("--apple-issuer-id <id> (App Store Connect Issuer ID)");if(!B.APPLE_KEY_CONTENT)H.push("--apple-key <path> (App Store Connect API Key file)");if(!B.APP_STORE_CONNECT_TEAM_ID)H.push("--apple-team-id <id> (App Store Connect Team ID)");if(!B.APPLE_PROFILE_NAME)H.push("--apple-profile-name <name> (Provisioning profile name)")}else if(J==="android"){if(!B.ANDROID_KEYSTORE_FILE)H.push("--keystore <path> (Keystore file)");if(!B.KEYSTORE_KEY_ALIAS)H.push("--keystore-alias <alias> (Keystore alias)");if(!B.KEYSTORE_KEY_PASSWORD&&!B.KEYSTORE_STORE_PASSWORD)H.push("--keystore-key-password <password> OR --keystore-store-password <password> (At least one password required, will be used for both)");if(!B.PLAY_CONFIG_JSON)if(B.BUILD_OUTPUT_UPLOAD_ENABLED==="false")H.push("--play-config <path> OR --output-upload (Build has no output destination - enable either Play Store upload or Capgo download link)");else K.warn("⚠️ --play-config not provided - builds will succeed but cannot auto-upload to Play Store"),K.warn(" To enable auto-upload, add: --play-config ./play-store-service-account.json")}if(H.length>0){K.error(`❌ Missing required credentials for ${J.toUpperCase()}:`),K.error("");for(let F of H)K.error(` • ${F}`);if(K.error(""),K.error("Example:"),J==="ios")K.error(" npx @capgo/cli build credentials save --platform ios \\"),K.error(" --certificate ./cert.p12 \\"),K.error(' --p12-password "your-password" \\ # Optional if cert has no password'),K.error(" --provisioning-profile ./profile.mobileprovision \\"),K.error(" --apple-key ./AuthKey_XXXXXXXXXX.p8 \\"),K.error(' --apple-key-id "XXXXXXXXXX" \\'),K.error(' --apple-issuer-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \\'),K.error(' --apple-team-id "XXXXXXXXXX" \\'),K.error(' --apple-profile-name "match AppStore com.example.app"');else K.error(" npx @capgo/cli build credentials save --platform android \\"),K.error(" --keystore ./release.keystore \\"),K.error(' --keystore-alias "my-key-alias" \\'),K.error(' --keystore-key-password "password"'),K.error(""),K.error(" Note: If both key and store passwords are the same, you only need to provide one."),K.error(" If they differ, provide both --keystore-key-password and --keystore-store-password."),K.error(" Optionally add --play-config for auto-uploading to Google Play Store.");K.error(""),b$(1)}await MM(X,J,B,$.local);try{let F=K0(!0);if(F){let q=await E0(F),V=await Y1(q,X);await _0(F,{channel:"credentials",event:"Credentials saved",icon:"\uD83D\uDD10",user_id:V,tags:{"app-id":X,platform:J,storage:$.local?"local":"global"},notify:!1}).catch()}}catch{}let U=$.local?$J():DJ();K.success(`
306
306
  ✅ ${J.toUpperCase()} credentials saved successfully for ${X}!`),K.info(` Location: ${U}`),K.info(` Use: npx @capgo/cli build ${X} --platform ${J}
307
307
  `)}catch(D){K.error(`Failed to save credentials: ${D instanceof Error?D.message:String(D)}`),b$(1)}}async function Wh($){try{let D=$?.local?await mH(!0):[],X=$?.local?[]:await mH(!1),J=[...new Set([...D,...X])];if(J.length===0){K.info("No saved credentials found."),K.info("Use: npx @capgo/cli build credentials save --platform <ios|android>");return}K.info(`
308
308
  \uD83D\uDCCB Saved Build Credentials:
@@ -337,7 +337,7 @@ const partysocket = new PartySocket({
337
337
  `),Uh=!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 AM.ErrorEvent(Error(J.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new AM.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 AM.CloseEvent(D,X,this))}catch(J){}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_handleOpen=(D)=>{this._debug("open event");let{minUptime:X=N9.minUptime}=this._options;if(clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),X),VH0(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(lH(D))};_handleMessage=(D)=>{if(this._debug("message event"),this.onmessage)this.onmessage(D);this.dispatchEvent(lH(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(lH(D)),this._connect()};_handleClose=(D)=>{if(this._debug("close event"),this._clearTimeouts(),this._shouldReconnect)this._connect();if(this.onclose)this.onclose(D);this.dispatchEvent(lH(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 YU=f$(JW(),1);var uU0=f$(Wm(),1),gU0=f$(SM(),1),hU0=f$(CM(),1),zm=f$(eH(),1),mU0=f$(Vm(),1);var wm=zm.default;f0();var Mm=Promise.resolve();async function sU0($,D){let X=async()=>{let Y=Rm();try{Lm($)}catch(Q){throw Error(`Failed to change working directory to "${$}": ${Q.message}`)}try{return await D()}finally{try{Lm(Y)}catch{}}},J=Mm.then(X,X);return Mm=J.then(()=>{return},()=>{return}),J}async function eU0($,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)K.warn(`Build request attempt ${Q}/${X} failed: ${G.status} - ${W}`);if(Q<X){let B=Y[Q-1]||5000;if(!J)K.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)K.warn(`Build request attempt ${Q}/${X} failed: ${W}`);if(Q<X){let B=Y[Q-1]||5000;if(!J)K.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 $F0=["succeeded","failed","expired","released","cancelled"],XU=new Set($F0);async function DF0($,D=!1,X,J,Y,Q,G){if($)return null;let W=null,B=!1,H=(F)=>{if(!F.trim())return;let q=F.match(/^(?:Build|Job already) (succeeded|failed|expired|released|cancelled)$/i);if(q){W=q[1].toLowerCase();return}if(W)return;if(!B)B=!0,console.log("");console.log(F)},U=async()=>{if(!X||!J)return null;let F=X.replace(/\/+$/,""),q=`${F}/start`,z=`${F}/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 m3(z,void 0,{maxRetries:M,WebSocket:wm}),C=null,S=0,b=Date.now(),_=!1,h=2000,P=4,o=XU,d=null,n=null,x=(A)=>{if(L)return;if(L=!0,n)clearTimeout(n),n=null;if(C)clearInterval(C),C=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");x(null)}},10800000),(()=>{if(C)return;C=setInterval(async()=>{try{if(E.readyState===m3.OPEN)E.send(JSON.stringify({type:"heartbeat",lastId:S}));let A=Date.now();if(Y&&!_&&A-b>=h*P){_=!0;try{let I=await Y();if(I&&o.has(I))W=I,x(W)}finally{_=!1}}}catch(A){if(!$)K.warn(`Heartbeat encountered an error, continuing... ${String(A)}`)}},h)})(),Q){if(d=()=>{if(!L)x("cancelled")},Q.aborted){x("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 v=null;try{v=JSON.parse(I)}catch{v=null}let u=(k)=>{if(k.type==="status"&&typeof k.status==="string"){let a=k.status.toLowerCase();if(b=Date.now(),o.has(a))W=a;return}if(k.type==="log"&&typeof k.message==="string"){b=Date.now(),H(k.message);return}if(typeof k.message==="string")b=Date.now(),H(k.message)};if(v?.type==="heartbeat_response")return;if(v?.type==="batch_messages"&&Array.isArray(v.messages)){let k=S;for(let a of v.messages)if(u(a),typeof a.id==="number")k=Math.max(k,a.id);if(k>S){if(S=k,E.readyState===m3.OPEN)try{E.send(JSON.stringify({type:"confirmed_received",lastId:k}))}catch(a){if(!$)K.warn(`Failed to send log confirmation, continuing... ${String(a)}`)}}}else{if(v)u(v);else if(I)b=Date.now(),H(I);if(v&&typeof v.id==="number"){if(S=v.id,E.readyState===m3.OPEN)try{E.send(JSON.stringify({type:"confirmed_received",lastId:v.id}))}catch(k){if(!$)K.warn(`Failed to send log confirmation, continuing... ${String(k)}`)}}}if(W)x(W)}),E.addEventListener("error",()=>{if(O+=1,!$)console.warn(`Log stream encountered an error, retrying (${O}/${M})...`);if(!R&&O>=M){if(R=!0,!$)K.warn("Log stream retry limit reached. Falling back to status checks.");if(G)G();x(null)}}),E.addEventListener("close",()=>{if(L)return;if(W){x(W);return}if(!$)K.warn("Log stream closed, waiting for reconnect...")})})};try{let F=await U();if(F||W)return F||W}catch(F){if(!$)K.warn(`Direct log streaming failed${F instanceof Error?`: ${F.message}`:""}`)}return W}async function XF0($,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)K.warn(`Status check failed: ${U.status}`);await new Promise((V)=>setTimeout(V,5000)),H++;continue}let F=await U.json(),q=F.status?.toLowerCase?.()??"";if(!Q&&G)K.info(`Build status: ${q||F.status}`);if(XU.has(q))return q;await new Promise((V)=>setTimeout(V,5000)),H++}catch(U){if(W?.aborted)return"cancelled";if(!Q)K.warn(`Status check error: ${U}`);await new Promise((F)=>setTimeout(F,5000)),H++}}if(!Q)K.warn("Build status polling timed out");return"timeout"}async function YF0($,D,X){let J=new Set,Y=!1,Q=!1;if(D==="ios"){let G=_6($,X,"App","CapApp-SPM","Package.swift");if(FJ(G)){Y=!0;let H=(await fM(G,"utf-8")).matchAll(/\.package\s*\([^)]*path:\s*["'](?:\.\.\/)*node_modules\/([^"']+)["']\s*\)/g);for(let U of H){let F=U[1],q=F.lastIndexOf("node_modules/");if(q!==-1)F=F.substring(q+13);J.add(F)}}let W=_6($,X);if(FJ(W)){let B=[_6(W,"App","Podfile"),_6(W,"Podfile")];for(let U of Am(W,{withFileTypes:!0}))if(U.isDirectory())B.push(_6(W,U.name,"Podfile"));let H=[...new Set(B)].filter((U)=>FJ(U));if(H.length>0)Q=!0;for(let U of H){let q=(await fM(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=_6($,X,"capacitor.settings.gradle");if(FJ(G)){let B=(await fM(G,"utf-8")).matchAll(/new\s+File\s*\(\s*['"]\.\.\/node_modules\/([^'"]+)['"]\s*\)/g);for(let H of B){let U=H[1],F=U.lastIndexOf("node_modules/");if(F!==-1)U=U.substring(F+13);let q=U.replace(/\/(android|capacitor)$/,"");J.add(q)}}}return{packages:J,usesSPM:Y,usesCocoaPods:Q}}function Zm($,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 DU($,D,X,J,Y,Q){let G=Am(D);for(let W of G){let B=_6(D,W),H=X?`${X}/${W}`:W,U=dU0(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"){DU($,B,H,J,Y,Q);continue}if(W==="resources"){DU($,B,H,J,Y,Q);continue}let F=H.replace(/\\/g,"/");if(Zm(H,J,Y,Q)||Q===F||Q.startsWith(`${F}/`)||Array.from(Y.packages).some((V)=>{return`node_modules/${V}/`.startsWith(`${F}/`)||F.startsWith(`node_modules/${V}`)}))DU($,B,H,J,Y,Q)}else if(U.isFile()){if(W===".DS_Store"||W.endsWith(".log"))continue;if(Zm(H,J,Y,Q))$.addLocalFile(B,X||void 0)}}}async function JF0($,D,X,J){let Y=UJ(J,X),Q=await YF0($,X,Y),G=new jm.default;DU(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 F=U.entryName.includes(".")?`.${U.entryName.split(".").pop()}`:"",q=U.entryName.split("/").pop()||"";if(!B.has(F)&&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,Nm.from(z,"utf-8"))}let H=_6($,"capacitor.config.json");if(J&&!FJ(H)){let U=`${JSON.stringify(J,null,2)}
338
338
  `;G.addFile("capacitor.config.json",Nm.from(U,"utf-8"))}await rU0(D,G.toBuffer())}async function gM($,D,X=!1){let J=Date.now(),Y=D.verbose??!1;try{D.apikey=D.apikey||K0(X);let Q=oU0(D.path||Rm()),G=await sU0(Q,()=>R0());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)K.info(`Requesting native build for ${$}`),K.info(`Platform: ${D.platform}`),K.info(`Project: ${Q}`),K.info(`
339
339
  \uD83D\uDD12 Security: Credentials are never stored on Capgo servers`),K.info(" They are used only during build and deleted after"),K.info(` Build outputs can optionally be uploaded for time-limited download links
340
- `);if(Y)K.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.androidKeystoreFile)U.ANDROID_KEYSTORE_FILE=D.androidKeystoreFile;if(D.keystoreKeyAlias)U.KEYSTORE_KEY_ALIAS=D.keystoreKeyAlias;let F=!!D.keystoreKeyPassword,q=!!D.keystoreStorePassword;if(F&&!q)U.KEYSTORE_KEY_PASSWORD=D.keystoreKeyPassword,U.KEYSTORE_STORE_PASSWORD=D.keystoreKeyPassword;else if(!F&&q)U.KEYSTORE_KEY_PASSWORD=D.keystoreStorePassword,U.KEYSTORE_STORE_PASSWORD=D.keystoreStorePassword;else if(F&&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=h3(D.outputUpload)?"true":"false";if(D.outputRetention)U.BUILD_OUTPUT_RETENTION_SECONDS=String(g3(D.outputRetention));let V=await Qh($,D.platform,Object.keys(U).length>0?U:void 0),z=UJ(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;let w={app_id:$,platform:D.platform,build_mode:D.buildMode};if(!V){if(!X)K.error("❌ No credentials found for this app and platform"),K.error(""),K.error("You must provide credentials via:"),K.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),K.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),K.error(" 3. Saved credentials file:"),K.error(` npx @capgo/cli build credentials save --appId ${$} --platform ${D.platform}`),K.error(""),K.error("Documentation:"),K.error(" https://capgo.app/docs/cli/cloud-build/credentials/");throw Error("No credentials found. Please provide credentials before building.")}let N=[];if(D.platform==="ios"){if(!V.BUILD_CERTIFICATE_BASE64)N.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)");if(!V.P12_PASSWORD&&!X)K.warn("⚠️ P12_PASSWORD not provided - assuming certificate has no password"),K.warn(" If your certificate requires a password, provide it with --p12-password");if(!V.BUILD_PROVISION_PROFILE_BASE64)N.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)");if(!V.APPLE_KEY_ID)N.push("APPLE_KEY_ID (or --apple-key-id)");if(!V.APPLE_ISSUER_ID)N.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!V.APPLE_KEY_CONTENT)N.push("APPLE_KEY_CONTENT (or --apple-key-content)");if(!V.APP_STORE_CONNECT_TEAM_ID)N.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")}else if(D.platform==="android"){if(!V.ANDROID_KEYSTORE_FILE)N.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!V.KEYSTORE_KEY_ALIAS)N.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!V.KEYSTORE_KEY_PASSWORD&&!V.KEYSTORE_STORE_PASSWORD)N.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)");if(!V.PLAY_CONFIG_JSON&&!X)K.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}if(N.length>0){if(!X){K.error(`❌ Missing required credentials for ${D.platform}:`),K.error("");for(let C of N)K.error(` • ${C}`);K.error(""),K.error("Provide credentials via:"),K.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),K.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),K.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),K.error(""),K.error("Documentation:"),K.error(` https://capgo.app/docs/cli/cloud-build/${D.platform}/`)}throw Error(`Missing required credentials for ${D.platform}: ${N.join(", ")}`)}if(w.credentials=V,!X)K.info("✓ Using credentials (merged from CLI args, env vars, and saved file)");if(Y){let C=Object.keys(V).filter((S)=>V[S]);K.info(`Credentials provided: ${C.join(", ")}`)}if(!X)K.info("Requesting build from Capgo...");let L=3,M=await eU0(`${W}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify(w)},L,X);if(!M.ok){let C=await M.text();throw Error(`Failed to request build: ${M.status} - ${C}`)}let O=await M.json();if(!X)K.success(`Build job created: ${O.job_id}`),K.info(`Status: ${O.status}`);if(Y)K.info(`Upload URL: ${O.upload_url}`),K.info(`Upload expires: ${O.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 R=_6(aU0(),`capgo-build-${Date.now()}`);await iU0(R,{recursive:!0});let E=_6(R,`${Om(Q)}.zip`);try{if(!X)K.info(`Zipping ${D.platform} project from ${Q}...`);await JF0(Q,E,D.platform,G?.config);let S=((await pU0(E)).size/1024/1024).toFixed(2);if(!X)K.success(`Created zip: ${E} (${S} MB)`);if(!X)K.info("Uploading to builder...");if(Y)K.info(`Upload endpoint: ${O.upload_url}`),K.info(`File size: ${S} MB`),K.info(`Job ID: ${O.job_id}`);let b=cU0(E),_=t0();if(!X)_.start("Uploading bundle");if(await new Promise((k,a)=>{let f=new YU.Upload(b,{endpoint:O.upload_url,chunkSize:5242880,metadata:{filename:Om(E),filetype:"application/zip"},headers:{authorization:D.apikey},onBeforeRequest(l){if(Y){K.info(`[TUS] ${l.getMethod()} ${l.getURL()}`);let G0=l.getHeader("authorization");K.info(`[TUS] Authorization header present: ${!!G0}`)}},onAfterResponse(l,G0){if(Y){K.info(`[TUS] Response status: ${G0.getStatus()}`);let r=G0.getHeader("upload-offset"),z0=G0.getHeader("tus-resumable");K.info(`[TUS] Upload-Offset: ${r}, Tus-Resumable: ${z0}`)}},onError(l){if(!X)_.stop("Upload failed"),K.error(`Upload error: ${l.message}`);if(l instanceof YU.DetailedError){let G0=l.originalResponse?.getBody(),r=l.originalResponse?.getStatus(),z0=l.originalRequest?.getURL();if(Y)K.error(`[TUS] Request URL: ${z0}`),K.error(`[TUS] Response status: ${r}`),K.error(`[TUS] Response body: ${G0}`);let l$="Unknown error";try{let H0=JSON.parse(G0||'{"error": "unknown error"}');l$=H0.status||H0.error||H0.message||"unknown error"}catch{l$=G0||l.message}a(Error(`TUS upload failed: ${l$}`))}else a(Error(`TUS upload failed: ${l.message||l.toString()}`))},onProgress(l,G0){let r=(l/G0*100).toFixed(2);if(!X)_.message(`Uploading ${r}%`)},onSuccess(){if(!X)_.stop("Upload complete!");if(Y)K.success("TUS upload completed successfully");k()}});if(Y)K.info("[TUS] Starting upload...");f.start()}),!X)K.info("Starting build job...");let h=await fetch(`${W}/build/start/${O.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify({app_id:$})});if(!h.ok){let k=await h.text();throw Error(`Failed to start build: ${h.status} - ${k}`)}let P=await h.json();if(!X)K.success("Build started!"),K.info("Streaming build logs...");let o=new AbortController,d=!1,n=async()=>{if(d)return;d=!0;let k=new AbortController,a=setTimeout(()=>k.abort(),4000);try{await fetch(`${W}/build/cancel/${O.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify({app_id:$}),signal:k.signal})}catch{}finally{clearTimeout(a)}},x=async()=>{try{if(d)uM.exit(1);if(!X)K.warn("Canceling build... (press Ctrl+C again to force quit)");await n(),o.abort()}catch{}};uM.on("SIGINT",x);let Z,A=!1,I=async()=>{try{let k=await fetch(`${W}/build/status?job_id=${encodeURIComponent(O.job_id)}&app_id=${encodeURIComponent($)}&platform=${D.platform}`,{headers:{authorization:D.apikey}});if(!k.ok)return null;let a=await k.json(),f=a.status?.toLowerCase?.()??"";if(!X&&A)K.info(`Build status: ${f||a.status}`);if(XU.has(f))return f;return null}catch{return null}},v=null;try{v=await DF0(X,Y,P.logs_url,P.logs_token,I,o.signal,()=>{A=!0})}finally{uM.removeListener("SIGINT",x)}if(v){if(Z=v,XU.has(v))await I().catch(()=>{})}else Z=await XF0(W,O.job_id,$,D.platform,D.apikey,X,A,o.signal);if(!X)if(Z==="succeeded")K.success("Build completed successfully!");else if(Z==="failed")K.error("Build failed");else K.warn(`Build finished with status: ${Z}`);let u=((Date.now()-J)/1000).toFixed(2);return await _0(D.apikey,{channel:"native-builder",event:Z==="succeeded"?"Build succeeded":"Build failed",icon:Z==="succeeded"?"✅":"❌",user_id:H,tags:{"app-id":$,platform:D.platform,status:Z||"unknown",time:u},notify:!1}).catch(),{success:Z==="succeeded",jobId:O.job_id,uploadUrl:O.upload_url,status:Z||P.status||O.status}}finally{await nU0(R,{recursive:!0,force:!0})}}catch(Q){let G=Q instanceof Error?Q.message:String(Q);if(!X)K.error(G);return{success:!1,error:G}}}async function Em($,D){if(!(await gM($,D,!1)).success)tU0(1)}y0();N6();U1();y0();A6();f0();y0();A6();f0();async function Im($,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)K.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 K.error("Unlink it first"),Error(`Version ${D}@${X.name} is still linked to channel(s)`);for(let H of G){let U=t0();U.start(`Unlinking channel ${H.name}`);let F=await hM($,D,{silent:Y});if(!F)throw U.stop(`Cannot find unknown version for ${D}`),Error(`Cannot find unknown version for ${D}`);let{error:q}=await $.from("channels").update({version:F.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 hM($,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)K.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)K.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 Tm($,D){return $.from("channels").insert(D).select().single()}function Sm($,D,X,J){return $.from("channels").delete().eq("name",D).eq("app_id",X).single()}function Pm($,D,X){return $.from("channels").select().eq("app_id",D).eq("name",X).single()}function Cm($,D,X){return $.from("channel_devices").delete().eq("app_id",D).eq("channel_id",X)}function vm($,D,X){return $.from("channels").select(`
340
+ `);if(Y)K.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.androidKeystoreFile)U.ANDROID_KEYSTORE_FILE=D.androidKeystoreFile;if(D.keystoreKeyAlias)U.KEYSTORE_KEY_ALIAS=D.keystoreKeyAlias;let F=!!D.keystoreKeyPassword,q=!!D.keystoreStorePassword;if(F&&!q)U.KEYSTORE_KEY_PASSWORD=D.keystoreKeyPassword,U.KEYSTORE_STORE_PASSWORD=D.keystoreKeyPassword;else if(!F&&q)U.KEYSTORE_KEY_PASSWORD=D.keystoreStorePassword,U.KEYSTORE_STORE_PASSWORD=D.keystoreStorePassword;else if(F&&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=h3(D.outputUpload)?"true":"false";if(D.outputRetention)U.BUILD_OUTPUT_RETENTION_SECONDS=String(g3(D.outputRetention));let V=await Qh($,D.platform,Object.keys(U).length>0?U:void 0),z=UJ(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;let w={app_id:$,platform:D.platform,build_mode:D.buildMode};if(!V){if(!X)K.error("❌ No credentials found for this app and platform"),K.error(""),K.error("You must provide credentials via:"),K.error(" 1. CLI arguments (--apple-key-id, --p12-password, etc.)"),K.error(" 2. Environment variables (APPLE_KEY_ID, P12_PASSWORD, etc.)"),K.error(" 3. Saved credentials file:"),K.error(` npx @capgo/cli build credentials save --appId ${$} --platform ${D.platform}`),K.error(""),K.error("Documentation:"),K.error(" https://capgo.app/docs/cli/cloud-build/credentials/");throw Error("No credentials found. Please provide credentials before building.")}let N=[];if(D.platform==="ios"){if(!V.BUILD_CERTIFICATE_BASE64)N.push("BUILD_CERTIFICATE_BASE64 (or --build-certificate-base64)");if(!V.P12_PASSWORD&&!X)K.warn("⚠️ P12_PASSWORD not provided - assuming certificate has no password"),K.warn(" If your certificate requires a password, provide it with --p12-password");if(!V.BUILD_PROVISION_PROFILE_BASE64)N.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)");if(!V.APPLE_KEY_ID)N.push("APPLE_KEY_ID (or --apple-key-id)");if(!V.APPLE_ISSUER_ID)N.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!V.APPLE_KEY_CONTENT)N.push("APPLE_KEY_CONTENT (or --apple-key-content)");if(!V.APP_STORE_CONNECT_TEAM_ID)N.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")}else if(D.platform==="android"){if(!V.ANDROID_KEYSTORE_FILE)N.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!V.KEYSTORE_KEY_ALIAS)N.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!V.KEYSTORE_KEY_PASSWORD&&!V.KEYSTORE_STORE_PASSWORD)N.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")N.push("PLAY_CONFIG_JSON or BUILD_OUTPUT_UPLOAD_ENABLED=true (build has no output destination - enable either Play Store upload or Capgo download link)");else if(!X)K.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}}if(N.length>0){if(!X){K.error(`❌ Missing required credentials for ${D.platform}:`),K.error("");for(let C of N)K.error(` • ${C}`);K.error(""),K.error("Provide credentials via:"),K.error(' 1. CLI arguments: npx @capgo/cli build request --platform ios --apple-id "..." --p12-password "..."'),K.error(' 2. Environment variables: export APPLE_ID="..." P12_PASSWORD="..."'),K.error(" 3. Saved credentials: npx @capgo/cli build credentials save --platform ios ..."),K.error(""),K.error("Documentation:"),K.error(` https://capgo.app/docs/cli/cloud-build/${D.platform}/`)}throw Error(`Missing required credentials for ${D.platform}: ${N.join(", ")}`)}if(w.credentials=V,!X)K.info("✓ Using credentials (merged from CLI args, env vars, and saved file)");if(Y){let C=Object.keys(V).filter((S)=>V[S]);K.info(`Credentials provided: ${C.join(", ")}`)}if(!X)K.info("Requesting build from Capgo...");let L=3,M=await eU0(`${W}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify(w)},L,X);if(!M.ok){let C=await M.text();throw Error(`Failed to request build: ${M.status} - ${C}`)}let O=await M.json();if(!X)K.success(`Build job created: ${O.job_id}`),K.info(`Status: ${O.status}`);if(Y)K.info(`Upload URL: ${O.upload_url}`),K.info(`Upload expires: ${O.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 R=_6(aU0(),`capgo-build-${Date.now()}`);await iU0(R,{recursive:!0});let E=_6(R,`${Om(Q)}.zip`);try{if(!X)K.info(`Zipping ${D.platform} project from ${Q}...`);await JF0(Q,E,D.platform,G?.config);let S=((await pU0(E)).size/1024/1024).toFixed(2);if(!X)K.success(`Created zip: ${E} (${S} MB)`);if(!X)K.info("Uploading to builder...");if(Y)K.info(`Upload endpoint: ${O.upload_url}`),K.info(`File size: ${S} MB`),K.info(`Job ID: ${O.job_id}`);let b=cU0(E),_=t0();if(!X)_.start("Uploading bundle");if(await new Promise((k,a)=>{let f=new YU.Upload(b,{endpoint:O.upload_url,chunkSize:5242880,metadata:{filename:Om(E),filetype:"application/zip"},headers:{authorization:D.apikey},onBeforeRequest(l){if(Y){K.info(`[TUS] ${l.getMethod()} ${l.getURL()}`);let G0=l.getHeader("authorization");K.info(`[TUS] Authorization header present: ${!!G0}`)}},onAfterResponse(l,G0){if(Y){K.info(`[TUS] Response status: ${G0.getStatus()}`);let r=G0.getHeader("upload-offset"),z0=G0.getHeader("tus-resumable");K.info(`[TUS] Upload-Offset: ${r}, Tus-Resumable: ${z0}`)}},onError(l){if(!X)_.stop("Upload failed"),K.error(`Upload error: ${l.message}`);if(l instanceof YU.DetailedError){let G0=l.originalResponse?.getBody(),r=l.originalResponse?.getStatus(),z0=l.originalRequest?.getURL();if(Y)K.error(`[TUS] Request URL: ${z0}`),K.error(`[TUS] Response status: ${r}`),K.error(`[TUS] Response body: ${G0}`);let l$="Unknown error";try{let H0=JSON.parse(G0||'{"error": "unknown error"}');l$=H0.status||H0.error||H0.message||"unknown error"}catch{l$=G0||l.message}a(Error(`TUS upload failed: ${l$}`))}else a(Error(`TUS upload failed: ${l.message||l.toString()}`))},onProgress(l,G0){let r=(l/G0*100).toFixed(2);if(!X)_.message(`Uploading ${r}%`)},onSuccess(){if(!X)_.stop("Upload complete!");if(Y)K.success("TUS upload completed successfully");k()}});if(Y)K.info("[TUS] Starting upload...");f.start()}),!X)K.info("Starting build job...");let h=await fetch(`${W}/build/start/${O.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify({app_id:$})});if(!h.ok){let k=await h.text();throw Error(`Failed to start build: ${h.status} - ${k}`)}let P=await h.json();if(!X)K.success("Build started!"),K.info("Streaming build logs...");let o=new AbortController,d=!1,n=async()=>{if(d)return;d=!0;let k=new AbortController,a=setTimeout(()=>k.abort(),4000);try{await fetch(`${W}/build/cancel/${O.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:D.apikey},body:JSON.stringify({app_id:$}),signal:k.signal})}catch{}finally{clearTimeout(a)}},x=async()=>{try{if(d)uM.exit(1);if(!X)K.warn("Canceling build... (press Ctrl+C again to force quit)");await n(),o.abort()}catch{}};uM.on("SIGINT",x);let Z,A=!1,I=async()=>{try{let k=await fetch(`${W}/build/status?job_id=${encodeURIComponent(O.job_id)}&app_id=${encodeURIComponent($)}&platform=${D.platform}`,{headers:{authorization:D.apikey}});if(!k.ok)return null;let a=await k.json(),f=a.status?.toLowerCase?.()??"";if(!X&&A)K.info(`Build status: ${f||a.status}`);if(XU.has(f))return f;return null}catch{return null}},v=null;try{v=await DF0(X,Y,P.logs_url,P.logs_token,I,o.signal,()=>{A=!0})}finally{uM.removeListener("SIGINT",x)}if(v){if(Z=v,XU.has(v))await I().catch(()=>{})}else Z=await XF0(W,O.job_id,$,D.platform,D.apikey,X,A,o.signal);if(!X)if(Z==="succeeded")K.success("Build completed successfully!");else if(Z==="failed")K.error("Build failed");else K.warn(`Build finished with status: ${Z}`);let u=((Date.now()-J)/1000).toFixed(2);return await _0(D.apikey,{channel:"native-builder",event:Z==="succeeded"?"Build succeeded":"Build failed",icon:Z==="succeeded"?"✅":"❌",user_id:H,tags:{"app-id":$,platform:D.platform,status:Z||"unknown",time:u},notify:!1}).catch(),{success:Z==="succeeded",jobId:O.job_id,uploadUrl:O.upload_url,status:Z||P.status||O.status}}finally{await nU0(R,{recursive:!0,force:!0})}}catch(Q){let G=Q instanceof Error?Q.message:String(Q);if(!X)K.error(G);return{success:!1,error:G}}}async function Em($,D){if(!(await gM($,D,!1)).success)tU0(1)}y0();N6();U1();y0();A6();f0();y0();A6();f0();async function Im($,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)K.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 K.error("Unlink it first"),Error(`Version ${D}@${X.name} is still linked to channel(s)`);for(let H of G){let U=t0();U.start(`Unlinking channel ${H.name}`);let F=await hM($,D,{silent:Y});if(!F)throw U.stop(`Cannot find unknown version for ${D}`),Error(`Cannot find unknown version for ${D}`);let{error:q}=await $.from("channels").update({version:F.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 hM($,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)K.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)K.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 Tm($,D){return $.from("channels").insert(D).select().single()}function Sm($,D,X,J){return $.from("channels").delete().eq("name",D).eq("app_id",X).single()}function Pm($,D,X){return $.from("channels").select().eq("app_id",D).eq("name",X).single()}function Cm($,D,X){return $.from("channel_devices").delete().eq("app_id",D).eq("channel_id",X)}function vm($,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 _m($,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?"✅":"❌"]);K.success("Channels"),K.success(X.toString())}async function xm($,D,X=!1){let{data:J,error:Y}=await $.from("channels").select(`
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
3
  "type": "module",
4
- "version": "7.78.0",
4
+ "version": "7.79.0",
5
5
  "description": "A CLI to upload to capgo servers",
6
6
  "author": "Martin martin@capgo.app",
7
7
  "license": "Apache 2.0",
package/dist/src/sdk.js CHANGED
@@ -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 $x=T((qyD,Dx)=>{var c6=p("constants"),uYD=process.cwd,QY=null,vYD=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){if(!QY)QY=uYD.call(process);return QY};try{process.cwd()}catch(D){}if(typeof process.chdir==="function"){if(FY=process.chdir,process.chdir=function(D){QY=null,FY.call(process,D)},Object.setPrototypeOf)Object.setPrototypeOf(process.chdir,FY)}var FY;Dx.exports=_YD;function _YD(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(vYD==="win32")D.rename=typeof D.rename!=="function"?D.rename:function(O){function U(z,q,B){var K=Date.now(),M=0;O(z,q,function L(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,L);else B(I)})},M),M<100)M+=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,M,L){var I;if(L&&typeof L==="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,M,I);L.apply(this,arguments)}}return O.call(D,z,q,B,K,M,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 M=0;while(!0)try{return O.call(D,U,z,q,B,K)}catch(L){if(L.code==="EAGAIN"&&M<10){M++;continue}throw L}}}(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(M){O.close(K,function(L){if(q)q(M||L)})})})},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(M){}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,M){if(K){if(B)B(K);return}O.futimes(M,z,q,function(L){O.close(M,function(I){if(B)B(L||I)})})})},O.lutimesSync=function(U,z,q){var B=O.openSync(U,c6.O_SYMLINK),K,M=!0;try{K=O.futimesSync(B,z,q),M=!1}finally{if(M)try{O.closeSync(B)}catch(L){}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,M){if(M){if(M.uid<0)M.uid+=4294967296;if(M.gid<0)M.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 Yx=T((zyD,Jx)=>{var Xx=p("stream").Stream;Jx.exports=kYD;function kYD(D){return{ReadStream:$,WriteStream:X};function $(Y,J){if(!(this instanceof $))return new $(Y,J);Xx.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);Xx.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 Fx=T((ByD,Qx)=>{Qx.exports=yYD;var fYD=Object.getPrototypeOf||function(D){return D.__proto__};function yYD(D){if(D===null||typeof D!=="object")return D;if(D instanceof Object)var $={__proto__:fYD(D)};else var $=Object.create(null);return Object.getOwnPropertyNames(D).forEach(function(X){Object.defineProperty($,X,Object.getOwnPropertyDescriptor(D,X))}),$}});var S0=T((KyD,UU)=>{var L0=p("fs"),bYD=$x(),gYD=Yx(),hYD=Fx(),wY=p("util"),r0,GY;if(typeof Symbol==="function"&&typeof Symbol.for==="function")r0=Symbol.for("graceful-fs.queue"),GY=Symbol.for("graceful-fs.previous");else r0="___graceful-fs.queue",GY="___graceful-fs.previous";function mYD(){}function Zx(D,$){Object.defineProperty(D,r0,{get:function(){return $}})}var $8=mYD;if(wY.debuglog)$8=wY.debuglog("gfs4");else if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))$8=function(){var D=wY.format.apply(wY,arguments);D="GFS4: "+D.split(/\n/).join(`
130
- GFS4: `),console.error(D)};if(!L0[r0]){if(ZU=global[r0]||[],Zx(L0,ZU),L0.close=function(D){function $(X,Y){return D.call(L0,X,function(J){if(!J)wx();if(typeof Y==="function")Y.apply(this,arguments)})}return Object.defineProperty($,GY,{value:D}),$}(L0.close),L0.closeSync=function(D){function $(X){D.apply(L0,arguments),wx()}return Object.defineProperty($,GY,{value:D}),$}(L0.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){$8(L0[r0]),p("assert").equal(L0[r0].length,0)})}var ZU;if(!global[r0])Zx(global,L0[r0]);UU.exports=GU(hYD(L0));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!L0.__patched)UU.exports=GU(L0),L0.__patched=!0;function GU(D){bYD(D),D.gracefulify=GU,D.createReadStream=V,D.createWriteStream=R;var $=D.readFile;D.readFile=X;function X(_,v,S){if(typeof v==="function")S=v,v=null;return h(_,v,S);function h(g,l,f,j){return $(g,l,function(x){if(x&&(x.code==="EMFILE"||x.code==="ENFILE"))u9([h,[g,l,f],x,j||Date.now(),Date.now()]);else if(typeof f==="function")f.apply(this,arguments)})}}var Y=D.writeFile;D.writeFile=J;function J(_,v,S,h){if(typeof S==="function")h=S,S=null;return g(_,v,S,h);function g(l,f,j,x,u){return Y(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([g,[l,f,j,x],y,u||Date.now(),Date.now()]);else if(typeof x==="function")x.apply(this,arguments)})}}var Q=D.appendFile;if(Q)D.appendFile=F;function F(_,v,S,h){if(typeof S==="function")h=S,S=null;return g(_,v,S,h);function g(l,f,j,x,u){return Q(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([g,[l,f,j,x],y,u||Date.now(),Date.now()]);else if(typeof x==="function")x.apply(this,arguments)})}}var w=D.copyFile;if(w)D.copyFile=Z;function Z(_,v,S,h){if(typeof S==="function")h=S,S=0;return g(_,v,S,h);function g(l,f,j,x,u){return w(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([g,[l,f,j,x],y,u||Date.now(),Date.now()]);else if(typeof x==="function")x.apply(this,arguments)})}}var G=D.readdir;D.readdir=U;var O=/^v[0-5]\./;function U(_,v,S){if(typeof v==="function")S=v,v=null;var h=O.test(process.version)?function(f,j,x,u){return G(f,g(f,j,x,u))}:function(f,j,x,u){return G(f,j,g(f,j,x,u))};return h(_,v,S);function g(l,f,j,x){return function(u,y){if(u&&(u.code==="EMFILE"||u.code==="ENFILE"))u9([h,[l,f,j],u,x||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=gYD(D);L=z.ReadStream,W=z.WriteStream}var q=D.ReadStream;if(q)L.prototype=Object.create(q.prototype),L.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 L},set:function(_){L=_},enumerable:!0,configurable:!0}),Object.defineProperty(D,"WriteStream",{get:function(){return W},set:function(_){W=_},enumerable:!0,configurable:!0});var K=L;Object.defineProperty(D,"FileReadStream",{get:function(){return K},set:function(_){K=_},enumerable:!0,configurable:!0});var M=W;Object.defineProperty(D,"FileWriteStream",{get:function(){return M},set:function(_){M=_},enumerable:!0,configurable:!0});function L(_,v){if(this instanceof L)return q.apply(this,arguments),this;else return L.apply(Object.create(L.prototype),arguments)}function I(){var _=this;A(_.path,_.flags,_.mode,function(v,S){if(v){if(_.autoClose)_.destroy();_.emit("error",v)}else _.fd=S,_.emit("open",S),_.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,S){if(v)_.destroy(),_.emit("error",v);else _.fd=S,_.emit("open",S)})}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,S,h){if(typeof S==="function")h=S,S=null;return g(_,v,S,h);function g(l,f,j,x,u){return P(l,f,j,function(y,d){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([g,[l,f,j,x],y,u||Date.now(),Date.now()]);else if(typeof x==="function")x.apply(this,arguments)})}}return D}function u9(D){$8("ENQUEUE",D[0].name,D[1]),L0[r0].push(D),OU()}var ZY;function wx(){var D=Date.now();for(var $=0;$<L0[r0].length;++$)if(L0[r0][$].length>2)L0[r0][$][3]=D,L0[r0][$][4]=D;OU()}function OU(){if(clearTimeout(ZY),ZY=void 0,L0[r0].length===0)return;var D=L0[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 L0[r0].push(D)}if(ZY===void 0)ZY=setTimeout(OU,0)}});var Ox=T((WyD,Gx)=>{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)}Gx.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 qx=T((cYD)=>{var dYD=Ox();cYD.operation=function(D){var $=cYD.timeouts(D);return new dYD($,{forever:D&&D.forever,unref:D&&D.unref,maxRetryTime:D&&D.maxRetryTime})};cYD.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};cYD.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};cYD.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=cYD.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 zx=T((VyD,OY)=>{OY.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];if(process.platform!=="win32")OY.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")OY.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var zY=T((NyD,_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(qU=p("assert"),J8=zx(),zU=/^win/i.test(K0.platform),v9=p("events"),typeof v9!=="function")v9=v9.EventEmitter;if(K0.__signal_exit_emitter__)h0=K0.__signal_exit_emitter__;else h0=K0.__signal_exit_emitter__=new v9,h0.count=0,h0.emitted={};if(!h0.infinite)h0.setMaxListeners(1/0),h0.infinite=!0;_9.exports=function(D,$){if(!X8(global.process))return function(){};if(qU.equal(typeof D,"function","a callback must be provided for exit handler"),Y8===!1)UY();var X="exit";if($&&$.alwaysLast)X="afterexit";var Y=function(){if(h0.removeListener(X,D),h0.listeners("exit").length===0&&h0.listeners("afterexit").length===0)F3()};return h0.on(X,D),Y},F3=function(){if(!Y8||!X8(global.process))return;Y8=!1,J8.forEach(function($){try{K0.removeListener($,w3[$])}catch(X){}}),K0.emit=Z3,K0.reallyExit=qY,h0.count-=1},_9.exports.unload=F3,l6=function($,X,Y){if(h0.emitted[$])return;h0.emitted[$]=!0,h0.emit($,X,Y)},w3={},J8.forEach(function(D){w3[D]=function(){if(!X8(global.process))return;var X=K0.listeners(D);if(X.length===h0.count){if(F3(),l6("exit",null,D),l6("afterexit",null,D),zU&&D==="SIGHUP")D="SIGINT";K0.kill(K0.pid,D)}}}),_9.exports.signals=function(){return J8},Y8=!1,UY=function(){if(Y8||!X8(global.process))return;Y8=!0,h0.count+=1,J8=J8.filter(function($){try{return K0.on($,w3[$]),!0}catch(X){return!1}}),K0.emit=KU,K0.reallyExit=BU},_9.exports.load=UY,qY=K0.reallyExit,BU=function($){if(!X8(global.process))return;K0.exitCode=$||0,l6("exit",K0.exitCode,null),l6("afterexit",K0.exitCode,null),qY.call(K0,K0.exitCode)},Z3=K0.emit,KU=function($,X){if($==="exit"&&X8(global.process)){if(X!==void 0)K0.exitCode=X;var Y=Z3.apply(this,arguments);return l6("exit",K0.exitCode,null),l6("afterexit",K0.exitCode,null),Y}else return Z3.apply(this,arguments)}}var qU,J8,zU,v9,h0,F3,l6,w3,Y8,UY,qY,BU,Z3,KU});var Kx=T((oYD,WU)=>{var Bx=Symbol();function pYD(D,$,X){let Y=$[Bx];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($,Bx,{value:Z}),X(null,w.mtime,Z)})})}function rYD(D){let $=Date.now();if(D==="s")$=Math.ceil($/1000)*1000;return new Date($)}oYD.probe=pYD;oYD.getMtime=rYD});var Mx=T((YQD,O3)=>{var sYD=p("path"),NU=S0(),eYD=qx(),DQD=zY(),Wx=Kx(),Q6={};function G3(D,$){return $.lockfilePath||`${D}.lock`}function MU(D,$,X){if(!$.realpath)return X(null,sYD.resolve(D));$.fs.realpath(D,X)}function VU(D,$,X){let Y=G3(D,$);$.fs.mkdir(Y,(J)=>{if(!J)return Wx.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 VU(D,{...$,stale:0},X);return X(Q)}if(!Hx(F,$))return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));Vx(D,$,(w)=>{if(w)return X(w);VU(D,{...$,stale:0},X)})})})}function Hx(D,$){return D.mtime.getTime()<Date.now()-$.stale}function Vx(D,$,X){$.fs.rmdir(G3(D,$),(Y)=>{if(Y&&Y.code!=="ENOENT")return X(Y);X()})}function BY(D,$){let X=Q6[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 HU(D,X,Object.assign(Y,{code:"ECOMPROMISED"}));return X.updateDelay=1000,BY(D,$)}if(X.mtime.getTime()!==J.mtime.getTime())return HU(D,X,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let w=Wx.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 HU(D,X,Object.assign(Z,{code:"ECOMPROMISED"}));return X.updateDelay=1000,BY(D,$)}X.mtime=w,X.lastUpdate=Date.now(),X.updateDelay=null,BY(D,$)})})},X.updateDelay),X.updateTimeout.unref)X.updateTimeout.unref()}function HU(D,$,X){if($.released=!0,$.updateTimeout)clearTimeout($.updateTimeout);if(Q6[D]===$)delete Q6[D];$.options.onCompromised(X)}function $QD(D,$,X){$={stale:1e4,update:null,realpath:!0,retries:0,fs:NU,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),MU(D,$,(Y,J)=>{if(Y)return X(Y);let Q=eYD.operation($.retries);Q.attempt(()=>{VU(J,$,(F,w,Z)=>{if(Q.retry(F))return;if(F)return X(Q.mainError());let G=Q6[J]={lockfilePath:G3(J,$),mtime:w,mtimePrecision:Z,options:$,lastUpdate:Date.now()};BY(J,$),X(null,(O)=>{if(G.released)return O&&O(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));Nx(J,{...$,realpath:!1},O)})})})})}function Nx(D,$,X){$={fs:NU,realpath:!0,...$},MU(D,$,(Y,J)=>{if(Y)return X(Y);let Q=Q6[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 Q6[J],Vx(J,$,X)})}function XQD(D,$,X){$={stale:1e4,realpath:!0,fs:NU,...$},$.stale=Math.max($.stale||0,2000),MU(D,$,(Y,J)=>{if(Y)return X(Y);$.fs.stat(G3(J,$),(Q,F)=>{if(Q)return Q.code==="ENOENT"?X(null,!1):X(Q);return X(null,!Hx(F,$))})})}function JQD(){return Q6}DQD(()=>{for(let D in Q6){let $=Q6[D].options;try{$.fs.rmdirSync(G3(D,$))}catch(X){}}});YQD.lock=$QD;YQD.unlock=Nx;YQD.check=XQD;YQD.getLocks=JQD});var Ix=T((MyD,Lx)=>{var GQD=S0();function OQD(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 UQD(D){return(...$)=>new Promise((X,Y)=>{$.push((J,Q)=>{if(J)Y(J);else X(Q)}),D(...$)})}function qQD(D){return(...$)=>{let X,Y;if($.push((J,Q)=>{X=J,Y=Q}),D(...$),X)throw X;return Y}}function zQD(D){if(D={...D},D.fs=OQD(D.fs||GQD),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}Lx.exports={toPromise:UQD,toSync:qQD,toSyncOptions:zQD}});var Rx=T((LyD,n6)=>{var k9=Mx(),{toPromise:KY,toSync:WY,toSyncOptions:LU}=Ix();async function Ax(D,$){let X=await KY(k9.lock)(D,$);return KY(X)}function BQD(D,$){let X=WY(k9.lock)(D,LU($));return WY(X)}function KQD(D,$){return KY(k9.unlock)(D,$)}function WQD(D,$){return WY(k9.unlock)(D,LU($))}function HQD(D,$){return KY(k9.check)(D,$)}function VQD(D,$){return WY(k9.check)(D,LU($))}n6.exports=Ax;n6.exports.lock=Ax;n6.exports.unlock=KQD;n6.exports.lockSync=BQD;n6.exports.unlockSync=WQD;n6.exports.check=HQD;n6.exports.checkSync=VQD});var Sx=T((Px)=>{Object.defineProperty(Px,"__esModule",{value:!0});Px.canStoreURLs=Px.FileUrlStorage=void 0;var jx=p("fs"),NQD=LQD(eP()),Ex=MQD(Rx());function Cx(D){if(typeof WeakMap!="function")return null;var $=new WeakMap,X=new WeakMap;return(Cx=function(Y){return Y?X:$})(D)}function MQD(D,$){if(!$&&D&&D.__esModule)return D;if(D===null||typeof D!="object"&&typeof D!="function")return{default:D};var X=Cx($);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 LQD(D){return D&&D.__esModule?D:{default:D}}function U3(D){return U3=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},U3(D)}function IQD(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function Tx(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,RQD(Y.key),Y)}}function AQD(D,$,X){if($)Tx(D.prototype,$);if(X)Tx(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function RQD(D){var $=jQD(D,"string");return U3($)=="symbol"?$:$+""}function jQD(D,$){if(U3(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var Y=X.call(D,$||"default");if(U3(Y)!="object")return Y;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var IyD=Px.canStoreURLs=!0,AyD=Px.FileUrlStorage=function(){function D($){IQD(this,D),this.path=$}return AQD(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;Ex.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;Ex.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,NQD.default)([J,Q]))});return}X().then(Y).catch(Y)}}},{key:"_writeData",value:function(X,Y){var J={encoding:"utf8",mode:432,flag:"w"};(0,jx.writeFile)(this.path,JSON.stringify(X),J,function(Q){return Y(Q)})}},{key:"_getData",value:function(X){(0,jx.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 VY=T((i6)=>{Object.defineProperty(i6,"__esModule",{value:!0});Object.defineProperty(i6,"DefaultHttpStack",{enumerable:!0,get:function(){return kx.default}});Object.defineProperty(i6,"DetailedError",{enumerable:!0,get:function(){return TQD.default}});Object.defineProperty(i6,"FileUrlStorage",{enumerable:!0,get:function(){return fx.FileUrlStorage}});Object.defineProperty(i6,"StreamSource",{enumerable:!0,get:function(){return uQD.default}});i6.Upload=void 0;Object.defineProperty(i6,"canStoreURLs",{enumerable:!0,get:function(){return fx.canStoreURLs}});i6.defaultOptions=void 0;Object.defineProperty(i6,"enableDebugLog",{enumerable:!0,get:function(){return CQD.enableDebugLog}});i6.isSupported=void 0;var TQD=Q8(LO()),CQD=IO(),PQD=Q8(RT()),IU=Q8(JC()),xQD=Q8(AC()),SQD=Q8(CC()),kx=Q8(lC()),uQD=Q8(vO()),fx=Sx();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 vQD(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function ux(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,bx(Y.key),Y)}}function _QD(D,$,X){if($)ux(D.prototype,$);if(X)ux(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function kQD(D,$,X){return $=HY($),fQD(D,yx()?Reflect.construct($,X||[],HY(D).constructor):$.apply(D,X))}function fQD(D,$){if($&&(y9($)==="object"||typeof $==="function"))return $;else if($!==void 0)throw TypeError("Derived constructors may only return object or undefined");return yQD(D)}function yQD(D){if(D===void 0)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return D}function yx(){try{var D=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch($){}return(yx=function(){return!!D})()}function HY(D){return HY=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(X){return X.__proto__||Object.getPrototypeOf(X)},HY(D)}function bQD(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}),$)AU(D,$)}function AU(D,$){return AU=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(Y,J){return Y.__proto__=J,Y},AU(D,$)}function vx(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?vx(Object(X),!0).forEach(function(Y){gQD(D,Y,X[Y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(X)):vx(Object(X)).forEach(function(Y){Object.defineProperty(D,Y,Object.getOwnPropertyDescriptor(X,Y))})}return D}function gQD(D,$,X){if($=bx($),$ in D)Object.defineProperty(D,$,{value:X,enumerable:!0,configurable:!0,writable:!0});else D[$]=X;return D}function bx(D){var $=hQD(D,"string");return y9($)=="symbol"?$:$+""}function hQD(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 _x=i6.defaultOptions=f9(f9({},IU.default.defaultOptions),{},{httpStack:new kx.default,fileReader:new xQD.default,urlStorage:new PQD.default,fingerprint:SQD.default}),jyD=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 vQD(this,$),Y=f9(f9({},_x),Y),kQD(this,$,[X,Y])}return bQD($,D),_QD($,null,[{key:"terminate",value:function(Y){var J=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return J=f9(f9({},_x),J),IU.default.terminate(Y,J)}}])}(IU.default),EyD=i6.isSupported=!0});var F6;var NY=o(()=>{F6={name:"@capgo/cli",type:"module",version:"7.78.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:"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"},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 MY(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 MY("@capgo/cli")??"",$=D?.split(".")[0];if(D!==F6.version)H.warning(`\uD83D\uDEA8 You are using @capgo/cli@${F6.version} it's not the latest version.
130
+ GFS4: `),console.error(D)};if(!L0[r0]){if(ZU=global[r0]||[],Zx(L0,ZU),L0.close=function(D){function $(X,Y){return D.call(L0,X,function(J){if(!J)wx();if(typeof Y==="function")Y.apply(this,arguments)})}return Object.defineProperty($,GY,{value:D}),$}(L0.close),L0.closeSync=function(D){function $(X){D.apply(L0,arguments),wx()}return Object.defineProperty($,GY,{value:D}),$}(L0.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){$8(L0[r0]),p("assert").equal(L0[r0].length,0)})}var ZU;if(!global[r0])Zx(global,L0[r0]);UU.exports=GU(hYD(L0));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!L0.__patched)UU.exports=GU(L0),L0.__patched=!0;function GU(D){bYD(D),D.gracefulify=GU,D.createReadStream=V,D.createWriteStream=R;var $=D.readFile;D.readFile=X;function X(_,v,S){if(typeof v==="function")S=v,v=null;return h(_,v,S);function h(g,l,f,j){return $(g,l,function(x){if(x&&(x.code==="EMFILE"||x.code==="ENFILE"))u9([h,[g,l,f],x,j||Date.now(),Date.now()]);else if(typeof f==="function")f.apply(this,arguments)})}}var Y=D.writeFile;D.writeFile=J;function J(_,v,S,h){if(typeof S==="function")h=S,S=null;return g(_,v,S,h);function g(l,f,j,x,u){return Y(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([g,[l,f,j,x],y,u||Date.now(),Date.now()]);else if(typeof x==="function")x.apply(this,arguments)})}}var Q=D.appendFile;if(Q)D.appendFile=F;function F(_,v,S,h){if(typeof S==="function")h=S,S=null;return g(_,v,S,h);function g(l,f,j,x,u){return Q(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([g,[l,f,j,x],y,u||Date.now(),Date.now()]);else if(typeof x==="function")x.apply(this,arguments)})}}var w=D.copyFile;if(w)D.copyFile=Z;function Z(_,v,S,h){if(typeof S==="function")h=S,S=0;return g(_,v,S,h);function g(l,f,j,x,u){return w(l,f,j,function(y){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([g,[l,f,j,x],y,u||Date.now(),Date.now()]);else if(typeof x==="function")x.apply(this,arguments)})}}var G=D.readdir;D.readdir=U;var O=/^v[0-5]\./;function U(_,v,S){if(typeof v==="function")S=v,v=null;var h=O.test(process.version)?function(f,j,x,u){return G(f,g(f,j,x,u))}:function(f,j,x,u){return G(f,j,g(f,j,x,u))};return h(_,v,S);function g(l,f,j,x){return function(u,y){if(u&&(u.code==="EMFILE"||u.code==="ENFILE"))u9([h,[l,f,j],u,x||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=gYD(D);L=z.ReadStream,W=z.WriteStream}var q=D.ReadStream;if(q)L.prototype=Object.create(q.prototype),L.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 L},set:function(_){L=_},enumerable:!0,configurable:!0}),Object.defineProperty(D,"WriteStream",{get:function(){return W},set:function(_){W=_},enumerable:!0,configurable:!0});var K=L;Object.defineProperty(D,"FileReadStream",{get:function(){return K},set:function(_){K=_},enumerable:!0,configurable:!0});var M=W;Object.defineProperty(D,"FileWriteStream",{get:function(){return M},set:function(_){M=_},enumerable:!0,configurable:!0});function L(_,v){if(this instanceof L)return q.apply(this,arguments),this;else return L.apply(Object.create(L.prototype),arguments)}function I(){var _=this;A(_.path,_.flags,_.mode,function(v,S){if(v){if(_.autoClose)_.destroy();_.emit("error",v)}else _.fd=S,_.emit("open",S),_.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,S){if(v)_.destroy(),_.emit("error",v);else _.fd=S,_.emit("open",S)})}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,S,h){if(typeof S==="function")h=S,S=null;return g(_,v,S,h);function g(l,f,j,x,u){return P(l,f,j,function(y,d){if(y&&(y.code==="EMFILE"||y.code==="ENFILE"))u9([g,[l,f,j,x],y,u||Date.now(),Date.now()]);else if(typeof x==="function")x.apply(this,arguments)})}}return D}function u9(D){$8("ENQUEUE",D[0].name,D[1]),L0[r0].push(D),OU()}var ZY;function wx(){var D=Date.now();for(var $=0;$<L0[r0].length;++$)if(L0[r0][$].length>2)L0[r0][$][3]=D,L0[r0][$][4]=D;OU()}function OU(){if(clearTimeout(ZY),ZY=void 0,L0[r0].length===0)return;var D=L0[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 L0[r0].push(D)}if(ZY===void 0)ZY=setTimeout(OU,0)}});var Ox=T((WyD,Gx)=>{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)}Gx.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 qx=T((cYD)=>{var dYD=Ox();cYD.operation=function(D){var $=cYD.timeouts(D);return new dYD($,{forever:D&&D.forever,unref:D&&D.unref,maxRetryTime:D&&D.maxRetryTime})};cYD.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};cYD.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};cYD.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=cYD.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 zx=T((VyD,OY)=>{OY.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];if(process.platform!=="win32")OY.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")OY.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var zY=T((NyD,_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(qU=p("assert"),J8=zx(),zU=/^win/i.test(K0.platform),v9=p("events"),typeof v9!=="function")v9=v9.EventEmitter;if(K0.__signal_exit_emitter__)h0=K0.__signal_exit_emitter__;else h0=K0.__signal_exit_emitter__=new v9,h0.count=0,h0.emitted={};if(!h0.infinite)h0.setMaxListeners(1/0),h0.infinite=!0;_9.exports=function(D,$){if(!X8(global.process))return function(){};if(qU.equal(typeof D,"function","a callback must be provided for exit handler"),Y8===!1)UY();var X="exit";if($&&$.alwaysLast)X="afterexit";var Y=function(){if(h0.removeListener(X,D),h0.listeners("exit").length===0&&h0.listeners("afterexit").length===0)F3()};return h0.on(X,D),Y},F3=function(){if(!Y8||!X8(global.process))return;Y8=!1,J8.forEach(function($){try{K0.removeListener($,w3[$])}catch(X){}}),K0.emit=Z3,K0.reallyExit=qY,h0.count-=1},_9.exports.unload=F3,l6=function($,X,Y){if(h0.emitted[$])return;h0.emitted[$]=!0,h0.emit($,X,Y)},w3={},J8.forEach(function(D){w3[D]=function(){if(!X8(global.process))return;var X=K0.listeners(D);if(X.length===h0.count){if(F3(),l6("exit",null,D),l6("afterexit",null,D),zU&&D==="SIGHUP")D="SIGINT";K0.kill(K0.pid,D)}}}),_9.exports.signals=function(){return J8},Y8=!1,UY=function(){if(Y8||!X8(global.process))return;Y8=!0,h0.count+=1,J8=J8.filter(function($){try{return K0.on($,w3[$]),!0}catch(X){return!1}}),K0.emit=KU,K0.reallyExit=BU},_9.exports.load=UY,qY=K0.reallyExit,BU=function($){if(!X8(global.process))return;K0.exitCode=$||0,l6("exit",K0.exitCode,null),l6("afterexit",K0.exitCode,null),qY.call(K0,K0.exitCode)},Z3=K0.emit,KU=function($,X){if($==="exit"&&X8(global.process)){if(X!==void 0)K0.exitCode=X;var Y=Z3.apply(this,arguments);return l6("exit",K0.exitCode,null),l6("afterexit",K0.exitCode,null),Y}else return Z3.apply(this,arguments)}}var qU,J8,zU,v9,h0,F3,l6,w3,Y8,UY,qY,BU,Z3,KU});var Kx=T((oYD,WU)=>{var Bx=Symbol();function pYD(D,$,X){let Y=$[Bx];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($,Bx,{value:Z}),X(null,w.mtime,Z)})})}function rYD(D){let $=Date.now();if(D==="s")$=Math.ceil($/1000)*1000;return new Date($)}oYD.probe=pYD;oYD.getMtime=rYD});var Mx=T((YQD,O3)=>{var sYD=p("path"),NU=S0(),eYD=qx(),DQD=zY(),Wx=Kx(),Q6={};function G3(D,$){return $.lockfilePath||`${D}.lock`}function MU(D,$,X){if(!$.realpath)return X(null,sYD.resolve(D));$.fs.realpath(D,X)}function VU(D,$,X){let Y=G3(D,$);$.fs.mkdir(Y,(J)=>{if(!J)return Wx.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 VU(D,{...$,stale:0},X);return X(Q)}if(!Hx(F,$))return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));Vx(D,$,(w)=>{if(w)return X(w);VU(D,{...$,stale:0},X)})})})}function Hx(D,$){return D.mtime.getTime()<Date.now()-$.stale}function Vx(D,$,X){$.fs.rmdir(G3(D,$),(Y)=>{if(Y&&Y.code!=="ENOENT")return X(Y);X()})}function BY(D,$){let X=Q6[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 HU(D,X,Object.assign(Y,{code:"ECOMPROMISED"}));return X.updateDelay=1000,BY(D,$)}if(X.mtime.getTime()!==J.mtime.getTime())return HU(D,X,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let w=Wx.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 HU(D,X,Object.assign(Z,{code:"ECOMPROMISED"}));return X.updateDelay=1000,BY(D,$)}X.mtime=w,X.lastUpdate=Date.now(),X.updateDelay=null,BY(D,$)})})},X.updateDelay),X.updateTimeout.unref)X.updateTimeout.unref()}function HU(D,$,X){if($.released=!0,$.updateTimeout)clearTimeout($.updateTimeout);if(Q6[D]===$)delete Q6[D];$.options.onCompromised(X)}function $QD(D,$,X){$={stale:1e4,update:null,realpath:!0,retries:0,fs:NU,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),MU(D,$,(Y,J)=>{if(Y)return X(Y);let Q=eYD.operation($.retries);Q.attempt(()=>{VU(J,$,(F,w,Z)=>{if(Q.retry(F))return;if(F)return X(Q.mainError());let G=Q6[J]={lockfilePath:G3(J,$),mtime:w,mtimePrecision:Z,options:$,lastUpdate:Date.now()};BY(J,$),X(null,(O)=>{if(G.released)return O&&O(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));Nx(J,{...$,realpath:!1},O)})})})})}function Nx(D,$,X){$={fs:NU,realpath:!0,...$},MU(D,$,(Y,J)=>{if(Y)return X(Y);let Q=Q6[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 Q6[J],Vx(J,$,X)})}function XQD(D,$,X){$={stale:1e4,realpath:!0,fs:NU,...$},$.stale=Math.max($.stale||0,2000),MU(D,$,(Y,J)=>{if(Y)return X(Y);$.fs.stat(G3(J,$),(Q,F)=>{if(Q)return Q.code==="ENOENT"?X(null,!1):X(Q);return X(null,!Hx(F,$))})})}function JQD(){return Q6}DQD(()=>{for(let D in Q6){let $=Q6[D].options;try{$.fs.rmdirSync(G3(D,$))}catch(X){}}});YQD.lock=$QD;YQD.unlock=Nx;YQD.check=XQD;YQD.getLocks=JQD});var Ix=T((MyD,Lx)=>{var GQD=S0();function OQD(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 UQD(D){return(...$)=>new Promise((X,Y)=>{$.push((J,Q)=>{if(J)Y(J);else X(Q)}),D(...$)})}function qQD(D){return(...$)=>{let X,Y;if($.push((J,Q)=>{X=J,Y=Q}),D(...$),X)throw X;return Y}}function zQD(D){if(D={...D},D.fs=OQD(D.fs||GQD),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}Lx.exports={toPromise:UQD,toSync:qQD,toSyncOptions:zQD}});var Rx=T((LyD,n6)=>{var k9=Mx(),{toPromise:KY,toSync:WY,toSyncOptions:LU}=Ix();async function Ax(D,$){let X=await KY(k9.lock)(D,$);return KY(X)}function BQD(D,$){let X=WY(k9.lock)(D,LU($));return WY(X)}function KQD(D,$){return KY(k9.unlock)(D,$)}function WQD(D,$){return WY(k9.unlock)(D,LU($))}function HQD(D,$){return KY(k9.check)(D,$)}function VQD(D,$){return WY(k9.check)(D,LU($))}n6.exports=Ax;n6.exports.lock=Ax;n6.exports.unlock=KQD;n6.exports.lockSync=BQD;n6.exports.unlockSync=WQD;n6.exports.check=HQD;n6.exports.checkSync=VQD});var Sx=T((Px)=>{Object.defineProperty(Px,"__esModule",{value:!0});Px.canStoreURLs=Px.FileUrlStorage=void 0;var jx=p("fs"),NQD=LQD(eP()),Ex=MQD(Rx());function Cx(D){if(typeof WeakMap!="function")return null;var $=new WeakMap,X=new WeakMap;return(Cx=function(Y){return Y?X:$})(D)}function MQD(D,$){if(!$&&D&&D.__esModule)return D;if(D===null||typeof D!="object"&&typeof D!="function")return{default:D};var X=Cx($);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 LQD(D){return D&&D.__esModule?D:{default:D}}function U3(D){return U3=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},U3(D)}function IQD(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function Tx(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,RQD(Y.key),Y)}}function AQD(D,$,X){if($)Tx(D.prototype,$);if(X)Tx(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function RQD(D){var $=jQD(D,"string");return U3($)=="symbol"?$:$+""}function jQD(D,$){if(U3(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var Y=X.call(D,$||"default");if(U3(Y)!="object")return Y;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var IyD=Px.canStoreURLs=!0,AyD=Px.FileUrlStorage=function(){function D($){IQD(this,D),this.path=$}return AQD(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;Ex.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;Ex.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,NQD.default)([J,Q]))});return}X().then(Y).catch(Y)}}},{key:"_writeData",value:function(X,Y){var J={encoding:"utf8",mode:432,flag:"w"};(0,jx.writeFile)(this.path,JSON.stringify(X),J,function(Q){return Y(Q)})}},{key:"_getData",value:function(X){(0,jx.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 VY=T((i6)=>{Object.defineProperty(i6,"__esModule",{value:!0});Object.defineProperty(i6,"DefaultHttpStack",{enumerable:!0,get:function(){return kx.default}});Object.defineProperty(i6,"DetailedError",{enumerable:!0,get:function(){return TQD.default}});Object.defineProperty(i6,"FileUrlStorage",{enumerable:!0,get:function(){return fx.FileUrlStorage}});Object.defineProperty(i6,"StreamSource",{enumerable:!0,get:function(){return uQD.default}});i6.Upload=void 0;Object.defineProperty(i6,"canStoreURLs",{enumerable:!0,get:function(){return fx.canStoreURLs}});i6.defaultOptions=void 0;Object.defineProperty(i6,"enableDebugLog",{enumerable:!0,get:function(){return CQD.enableDebugLog}});i6.isSupported=void 0;var TQD=Q8(LO()),CQD=IO(),PQD=Q8(RT()),IU=Q8(JC()),xQD=Q8(AC()),SQD=Q8(CC()),kx=Q8(lC()),uQD=Q8(vO()),fx=Sx();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 vQD(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function ux(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,bx(Y.key),Y)}}function _QD(D,$,X){if($)ux(D.prototype,$);if(X)ux(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function kQD(D,$,X){return $=HY($),fQD(D,yx()?Reflect.construct($,X||[],HY(D).constructor):$.apply(D,X))}function fQD(D,$){if($&&(y9($)==="object"||typeof $==="function"))return $;else if($!==void 0)throw TypeError("Derived constructors may only return object or undefined");return yQD(D)}function yQD(D){if(D===void 0)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return D}function yx(){try{var D=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch($){}return(yx=function(){return!!D})()}function HY(D){return HY=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(X){return X.__proto__||Object.getPrototypeOf(X)},HY(D)}function bQD(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}),$)AU(D,$)}function AU(D,$){return AU=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(Y,J){return Y.__proto__=J,Y},AU(D,$)}function vx(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?vx(Object(X),!0).forEach(function(Y){gQD(D,Y,X[Y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(X)):vx(Object(X)).forEach(function(Y){Object.defineProperty(D,Y,Object.getOwnPropertyDescriptor(X,Y))})}return D}function gQD(D,$,X){if($=bx($),$ in D)Object.defineProperty(D,$,{value:X,enumerable:!0,configurable:!0,writable:!0});else D[$]=X;return D}function bx(D){var $=hQD(D,"string");return y9($)=="symbol"?$:$+""}function hQD(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 _x=i6.defaultOptions=f9(f9({},IU.default.defaultOptions),{},{httpStack:new kx.default,fileReader:new xQD.default,urlStorage:new PQD.default,fingerprint:SQD.default}),jyD=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 vQD(this,$),Y=f9(f9({},_x),Y),kQD(this,$,[X,Y])}return bQD($,D),_QD($,null,[{key:"terminate",value:function(Y){var J=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return J=f9(f9({},_x),J),IU.default.terminate(Y,J)}}])}(IU.default),EyD=i6.isSupported=!0});var F6;var NY=o(()=>{F6={name:"@capgo/cli",type:"module",version:"7.79.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:"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"},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 MY(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 MY("@capgo/cli")??"",$=D?.split(".")[0];if(D!==F6.version)H.warning(`\uD83D\uDEA8 You are using @capgo/cli@${F6.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();NY()});async function dx(D,$,X,Y,J,Q="✅"){await RD(X,{channel:D,event:Y,icon:Q,user_id:$,...J?{tags:{"app-id":J}}:{},notify:!1})}var cx=o(()=>{vD();s$();q1();fD()});import{Buffer as lx}from"node:buffer";import{createHash as dQD}from"node:crypto";function lQD(D){let $=4294967295;for(let X=0;X<D.length;X++){let Y=D[X];$=cQD[($^Y)&255]^$>>>8}return $=$^4294967295,($>>>0).toString(16).padStart(8,"0")}async function p6(D,$="sha256"){let X=lx.isBuffer(D)?D:lx.from(D);if($==="crc32")return lQD(X);let Y=dQD($);return Y.update(X),Y.digest("hex")}var cQD;var q3=o(()=>{cQD=(()=>{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 ix=T((dyD,nx)=>{var b9=1000,g9=b9*60,h9=g9*60,F8=h9*24,nQD=F8*7,iQD=F8*365.25;nx.exports=function(D,$){$=$||{};var X=typeof D;if(X==="string"&&D.length>0)return pQD(D);else if(X==="number"&&isFinite(D))return $.long?oQD(D):rQD(D);throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(D))};function pQD(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*iQD;case"weeks":case"week":case"w":return X*nQD;case"days":case"day":case"d":return X*F8;case"hours":case"hour":case"hrs":case"hr":case"h":return X*h9;case"minutes":case"minute":case"mins":case"min":case"m":return X*g9;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 rQD(D){var $=Math.abs(D);if($>=F8)return Math.round(D/F8)+"d";if($>=h9)return Math.round(D/h9)+"h";if($>=g9)return Math.round(D/g9)+"m";if($>=b9)return Math.round(D/b9)+"s";return D+"ms"}function oQD(D){var $=Math.abs(D);if($>=F8)return LY(D,$,F8,"day");if($>=h9)return LY(D,$,h9,"hour");if($>=g9)return LY(D,$,g9,"minute");if($>=b9)return LY(D,$,b9,"second");return D+" ms"}function LY(D,$,X,Y){var J=$>=X*1.5;return Math.round(D/X)+" "+Y+(J?"s":"")}});var RU=T((cyD,px)=>{function aQD(D){X.debug=X,X.default=X,X.coerce=Z,X.disable=F,X.enable=J,X.enabled=w,X.humanize=ix(),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(...M){if(!K.enabled)return;let L=K,I=Number(new Date),W=I-(U||I);if(L.diff=W,L.prev=U,L.curr=I,U=I,M[0]=X.coerce(M[0]),typeof M[0]!=="string")M.unshift("%O");let N=0;M[0]=M[0].replace(/%([a-zA-Z%])/g,(R,P)=>{if(R==="%%")return"%";N++;let A=X.formatters[P];if(typeof A==="function"){let _=M[N];R=A.call(L,_),M.splice(N,1),N--}return R}),X.formatArgs.call(L,M),(L.log||X.log).apply(L,M)}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:(M)=>{z=M}}),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}px.exports=aQD});var ox=T((rx,IY)=>{rx.formatArgs=sQD;rx.save=eQD;rx.load=DFD;rx.useColors=tQD;rx.storage=$FD();rx.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`.")}})();rx.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 tQD(){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 sQD(D){if(D[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+D[0]+(this.useColors?"%c ":" ")+"+"+IY.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,$)}rx.log=console.debug||console.log||(()=>{});function eQD(D){try{if(D)rx.storage.setItem("debug",D);else rx.storage.removeItem("debug")}catch($){}}function DFD(){let D;try{D=rx.storage.getItem("debug")||rx.storage.getItem("DEBUG")}catch($){}if(!D&&typeof process<"u"&&"env"in process)D=process.env.DEBUG;return D}function $FD(){try{return localStorage}catch(D){}}IY.exports=RU()(rx);var{formatters:XFD}=IY.exports;XFD.j=function(D){try{return JSON.stringify(D)}catch($){return"[UnexpectedJSONParseError]: "+$.message}}});var tx=T((nyD,ax)=>{ax.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 DS=T((iyD,ex)=>{var OFD=p("os"),sx=p("tty"),D$=tx(),{env:c0}=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 c0)if(c0.FORCE_COLOR==="true")r6=1;else if(c0.FORCE_COLOR==="false")r6=0;else r6=c0.FORCE_COLOR.length===0?1:Math.min(parseInt(c0.FORCE_COLOR,10),3);function jU(D){if(D===0)return!1;return{level:D,hasBasic:!0,has256:D>=2,has16m:D>=3}}function EU(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(c0.TERM==="dumb")return X;if(process.platform==="win32"){let Y=OFD.release().split(".");if(Number(Y[0])>=10&&Number(Y[2])>=10586)return Number(Y[2])>=14931?3:2;return 1}if("CI"in c0){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((Y)=>(Y in c0))||c0.CI_NAME==="codeship")return 1;return X}if("TEAMCITY_VERSION"in c0)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(c0.TEAMCITY_VERSION)?1:0;if(c0.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in c0){let Y=parseInt((c0.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(c0.TERM_PROGRAM){case"iTerm.app":return Y>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(c0.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(c0.TERM))return 1;if("COLORTERM"in c0)return 1;return X}function UFD(D){let $=EU(D,D&&D.isTTY);return jU($)}ex.exports={supportsColor:UFD,stdout:jU(EU(!0,sx.isatty(1))),stderr:jU(EU(!0,sx.isatty(2)))}});var YS=T((XS,RY)=>{var qFD=p("tty"),AY=p("util");XS.init=NFD;XS.log=WFD;XS.formatArgs=BFD;XS.save=HFD;XS.load=VFD;XS.useColors=zFD;XS.destroy=AY.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");XS.colors=[6,2,3,4,5,1];try{let D=DS();if(D&&(D.stderr||D).level>=2)XS.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){}XS.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 zFD(){return"colors"in XS.inspectOpts?Boolean(XS.inspectOpts.colors):qFD.isatty(process.stderr.fd)}function BFD(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+"+RY.exports.humanize(this.diff)+"\x1B[0m")}else D[0]=KFD()+$+" "+D[0]}function KFD(){if(XS.inspectOpts.hideDate)return"";return new Date().toISOString()+" "}function WFD(...D){return process.stderr.write(AY.formatWithOptions(XS.inspectOpts,...D)+`
@@ -463,7 +463,7 @@ const partysocket = new PartySocket({
463
463
  `),ea=!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 fM.ErrorEvent(Error(Y.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new fM.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 fM.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),nED(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(qZ($))};_handleMessage=($)=>{if(this._debug("message event"),this.onmessage)this.onmessage($);this.dispatchEvent(qZ($))};_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(qZ($)),this._connect()};_handleClose=($)=>{if(this._debug("close event"),this._clearTimeouts(),this._shouldReconnect)this._connect();if(this.onclose)this.onclose($);this.dispatchEvent(qZ($))};_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 TZ=V0(VY(),1);var KCD=V0(at(),1),WCD=V0(dM(),1),HCD=V0(lM(),1),Ys=V0(AZ(),1),VCD=V0(Js(),1);var Qs=Ys.default;fD();import{mkdir as yrD,readFile as NCD,writeFile as brD}from"node:fs/promises";import{homedir as MCD}from"node:os";import{join as sM}from"node:path";import{cwd as LCD,env as ICD}from"node:process";var ACD=sM(MCD(),".capgo-credentials"),RCD=sM(ACD,"credentials.json"),jCD=".capgo-credentials.json",Fs=3600,ws=604800;function ECD(D){return D?sM(LCD(),jCD):RCD}function eM(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<Fs)throw Error(`output-retention must be at least ${Fs} seconds (1h)`);if(F>ws)throw Error(`output-retention must be at most ${ws} seconds (7d)`);return F}function DL(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 tM(D){try{let $=ECD(D),X=await NCD($,"utf-8");return JSON.parse(X)}catch{return{}}}async function TCD(D,$){if($!==void 0){let J=await tM($);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 tM(!0),Y=await tM(!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 i0(D){return ICD[D]}function CCD(){let D={},$=i0("BUILD_CERTIFICATE_BASE64"),X=i0("BUILD_PROVISION_PROFILE_BASE64"),Y=i0("BUILD_PROVISION_PROFILE_BASE64_PROD"),J=i0("P12_PASSWORD"),Q=i0("APPLE_KEY_ID"),F=i0("APPLE_ISSUER_ID"),w=i0("APPLE_KEY_CONTENT"),Z=i0("APPLE_PROFILE_NAME"),G=i0("APP_STORE_CONNECT_TEAM_ID"),O=i0("CAPGO_IOS_SCHEME"),U=i0("CAPGO_IOS_TARGET"),z=i0("ANDROID_KEYSTORE_FILE"),q=i0("KEYSTORE_KEY_ALIAS"),B=i0("KEYSTORE_KEY_PASSWORD"),K=i0("KEYSTORE_STORE_PASSWORD"),M=i0("PLAY_CONFIG_JSON"),L=i0("BUILD_OUTPUT_UPLOAD_ENABLED"),I=i0("BUILD_OUTPUT_RETENTION_SECONDS");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(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(M)D.PLAY_CONFIG_JSON=M;if(L)D.BUILD_OUTPUT_UPLOAD_ENABLED=DL(L)?"true":"false";if(I)D.BUILD_OUTPUT_RETENTION_SECONDS=String(eM(I));return D}async function Zs(D,$,X){let Y=await TCD(D),J=CCD(),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 qs=Promise.resolve();async function bCD(D,$){let X=async()=>{let J=Ks();try{Us(D)}catch(Q){throw Error(`Failed to change working directory to "${D}": ${Q.message}`)}try{return await $()}finally{try{Us(J)}catch{}}},Y=qs.then(X,X);return qs=Y.then(()=>{return},()=>{return}),Y}async function gCD(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 hCD=["succeeded","failed","expired","released","cancelled"],EZ=new Set(hCD);async function mCD(D,$=!1,X,Y,J,Q,F){if(D)return null;let w=null,Z=!1,G=(U)=>{if(!U.trim())return;let z=U.match(/^(?:Build|Job already) (succeeded|failed|expired|released|cancelled)$/i);if(z){w=z[1].toLowerCase();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 M=await K.text().catch(()=>"unknown error");if(!D)console.warn(`Could not start log session (${K.status}): ${M}`);return null}return await new Promise((M)=>{let L=!1,I=10,W=0,N=!1,V=new a5(B,void 0,{maxRetries:I,WebSocket:Qs}),R=null,P=0,A=Date.now(),_=!1,v=2000,S=4,h=EZ,g=null,l=null,f=(x)=>{if(L)return;if(L=!0,l)clearTimeout(l),l=null;if(R)clearInterval(R),R=null;if(Q&&g)Q.removeEventListener("abort",g),g=null;try{V.close()}catch{}M(x)};if(l=setTimeout(()=>{if(!L){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 x=Date.now();if(J&&!_&&x-A>=v*S){_=!0;try{let u=await J();if(u&&h.has(u))w=u,f(w)}finally{_=!1}}}catch(x){if(!D)H.warn(`Heartbeat encountered an error, continuing... ${String(x)}`)}},v)})(),Q){if(g=()=>{if(!L)f("cancelled")},Q.aborted){f("cancelled");return}Q.addEventListener("abort",g)}V.addEventListener("message",(x)=>{let u="";if(typeof x.data==="string")u=x.data;else if(x.data instanceof ArrayBuffer)u=new TextDecoder().decode(x.data);else if(ArrayBuffer.isView(x.data)){let b=x.data;u=new TextDecoder().decode(new Uint8Array(b.buffer,b.byteOffset,b.byteLength))}else if(x.data&&typeof x.data.toString==="function")u=x.data.toString();let y=null;try{y=JSON.parse(u)}catch{y=null}let d=(b)=>{if(b.type==="status"&&typeof b.status==="string"){let a=b.status.toLowerCase();if(A=Date.now(),h.has(a))w=a;return}if(b.type==="log"&&typeof b.message==="string"){A=Date.now(),G(b.message);return}if(typeof b.message==="string")A=Date.now(),G(b.message)};if(y?.type==="heartbeat_response")return;if(y?.type==="batch_messages"&&Array.isArray(y.messages)){let b=P;for(let a of y.messages)if(d(a),typeof a.id==="number")b=Math.max(b,a.id);if(b>P){if(P=b,V.readyState===a5.OPEN)try{V.send(JSON.stringify({type:"confirmed_received",lastId:b}))}catch(a){if(!D)H.warn(`Failed to send log confirmation, continuing... ${String(a)}`)}}}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(b){if(!D)H.warn(`Failed to send log confirmation, continuing... ${String(b)}`)}}}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(L)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 dCD(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(EZ.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 cCD(D,$,X){let Y=new Set,J=!1,Q=!1;if($==="ios"){let F=a$(D,X,"App","CapApp-SPM","Package.swift");if(K2(F)){J=!0;let G=(await $L(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=a$(D,X);if(K2(w)){let Z=[a$(w,"App","Podfile"),a$(w,"Podfile")];for(let O of Bs(w,{withFileTypes:!0}))if(O.isDirectory())Z.push(a$(w,O.name,"Podfile"));let G=[...new Set(Z)].filter((O)=>K2(O));if(G.length>0)Q=!0;for(let O of G){let z=(await $L(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=a$(D,X,"capacitor.settings.gradle");if(K2(F)){let Z=(await $L(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 zs(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 jZ(D,$,X,Y,J,Q){let F=Bs($);for(let w of F){let Z=a$($,w),G=X?`${X}/${w}`:w,O=SCD(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"){jZ(D,Z,G,Y,J,Q);continue}if(w==="resources"){jZ(D,Z,G,Y,J,Q);continue}let U=G.replace(/\\/g,"/");if(zs(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}`)}))jZ(D,Z,G,Y,J,Q)}else if(O.isFile()){if(w===".DS_Store"||w.endsWith(".log"))continue;if(zs(G,Y,J,Q))D.addLocalFile(Z,X||void 0)}}}async function lCD(D,$,X,Y){let J=B2(Y,X),Q=await cCD(D,X,J),F=new Ws.default;jZ(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,Gs.from(B,"utf-8"))}let G=a$(D,"capacitor.config.json");if(Y&&!K2(G)){let O=`${JSON.stringify(Y,null,2)}
464
464
  `;F.addFile("capacitor.config.json",Gs.from(O,"utf-8"))}await kCD($,F.toBuffer())}async function Hs(D,$,X=!1){let Y=Date.now(),J=$.verbose??!1;try{$.apikey=$.apikey||BD(X);let Q=yCD($.path||Ks()),F=await bCD(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($.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=DL($.outputUpload)?"true":"false";if($.outputRetention)O.BUILD_OUTPUT_RETENTION_SECONDS=String(eM($.outputRetention));let q=await Zs(D,$.platform,Object.keys(O).length>0?O:void 0),B=B2(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;let K={app_id:D,platform:$.platform,build_mode:$.buildMode};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 M=[];if($.platform==="ios"){if(!q.BUILD_CERTIFICATE_BASE64)M.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)M.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)");if(!q.APPLE_KEY_ID)M.push("APPLE_KEY_ID (or --apple-key-id)");if(!q.APPLE_ISSUER_ID)M.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!q.APPLE_KEY_CONTENT)M.push("APPLE_KEY_CONTENT (or --apple-key-content)");if(!q.APP_STORE_CONNECT_TEAM_ID)M.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")}else if($.platform==="android"){if(!q.ANDROID_KEYSTORE_FILE)M.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!q.KEYSTORE_KEY_ALIAS)M.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!q.KEYSTORE_KEY_PASSWORD&&!q.KEYSTORE_STORE_PASSWORD)M.push("KEYSTORE_KEY_PASSWORD or KEYSTORE_STORE_PASSWORD (at least one password required)");if(!q.PLAY_CONFIG_JSON&&!X)H.warn("⚠️ PLAY_CONFIG_JSON not provided - build will succeed but cannot auto-upload to Play Store")}if(M.length>0){if(!X){H.error(`❌ Missing required credentials for ${$.platform}:`),H.error("");for(let R of M)H.error(` • ${R}`);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}: ${M.join(", ")}`)}if(K.credentials=q,!X)H.info("✓ Using credentials (merged from CLI args, env vars, and saved file)");if(J){let R=Object.keys(q).filter((P)=>q[P]);H.info(`Credentials provided: ${R.join(", ")}`)}if(!X)H.info("Requesting build from Capgo...");let L=3,I=await gCD(`${w}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify(K)},L,X);if(!I.ok){let R=await I.text();throw Error(`Failed to request build: ${I.status} - ${R}`)}let W=await I.json();if(!X)H.success(`Build job created: ${W.job_id}`),H.info(`Status: ${W.status}`);if(J)H.info(`Upload URL: ${W.upload_url}`),H.info(`Upload expires: ${W.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 N=a$(fCD(),`capgo-build-${Date.now()}`);await uCD(N,{recursive:!0});let V=a$(N,`${Os(Q)}.zip`);try{if(!X)H.info(`Zipping ${$.platform} project from ${Q}...`);await lCD(Q,V,$.platform,F?.config);let P=((await _CD(V)).size/1024/1024).toFixed(2);if(!X)H.success(`Created zip: ${V} (${P} MB)`);if(!X)H.info("Uploading to builder...");if(J)H.info(`Upload endpoint: ${W.upload_url}`),H.info(`File size: ${P} MB`),H.info(`Job ID: ${W.job_id}`);let A=xCD(V),_=A0();if(!X)_.start("Uploading bundle");if(await new Promise((b,a)=>{let c=new TZ.Upload(A,{endpoint:W.upload_url,chunkSize:5242880,metadata:{filename:Os(V),filetype:"application/zip"},headers:{authorization:$.apikey},onBeforeRequest(n){if(J){H.info(`[TUS] ${n.getMethod()} ${n.getURL()}`);let YD=n.getHeader("authorization");H.info(`[TUS] Authorization header present: ${!!YD}`)}},onAfterResponse(n,YD){if(J){H.info(`[TUS] Response status: ${YD.getStatus()}`);let C=YD.getHeader("upload-offset"),E=YD.getHeader("tus-resumable");H.info(`[TUS] Upload-Offset: ${C}, Tus-Resumable: ${E}`)}},onError(n){if(!X)_.stop("Upload failed"),H.error(`Upload error: ${n.message}`);if(n instanceof TZ.DetailedError){let YD=n.originalResponse?.getBody(),C=n.originalResponse?.getStatus(),E=n.originalRequest?.getURL();if(J)H.error(`[TUS] Request URL: ${E}`),H.error(`[TUS] Response status: ${C}`),H.error(`[TUS] Response body: ${YD}`);let r="Unknown error";try{let k=JSON.parse(YD||'{"error": "unknown error"}');r=k.status||k.error||k.message||"unknown error"}catch{r=YD||n.message}a(Error(`TUS upload failed: ${r}`))}else a(Error(`TUS upload failed: ${n.message||n.toString()}`))},onProgress(n,YD){let C=(n/YD*100).toFixed(2);if(!X)_.message(`Uploading ${C}%`)},onSuccess(){if(!X)_.stop("Upload complete!");if(J)H.success("TUS upload completed successfully");b()}});if(J)H.info("[TUS] Starting upload...");c.start()}),!X)H.info("Starting build job...");let v=await fetch(`${w}/build/start/${W.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D})});if(!v.ok){let b=await v.text();throw Error(`Failed to start build: ${v.status} - ${b}`)}let S=await v.json();if(!X)H.success("Build started!"),H.info("Streaming build logs...");let h=new AbortController,g=!1,l=async()=>{if(g)return;g=!0;let b=new AbortController,a=setTimeout(()=>b.abort(),4000);try{await fetch(`${w}/build/cancel/${W.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D}),signal:b.signal})}catch{}finally{clearTimeout(a)}},f=async()=>{try{if(g)XL.exit(1);if(!X)H.warn("Canceling build... (press Ctrl+C again to force quit)");await l(),h.abort()}catch{}};XL.on("SIGINT",f);let j,x=!1,u=async()=>{try{let b=await fetch(`${w}/build/status?job_id=${encodeURIComponent(W.job_id)}&app_id=${encodeURIComponent(D)}&platform=${$.platform}`,{headers:{authorization:$.apikey}});if(!b.ok)return null;let a=await b.json(),c=a.status?.toLowerCase?.()??"";if(!X&&x)H.info(`Build status: ${c||a.status}`);if(EZ.has(c))return c;return null}catch{return null}},y=null;try{y=await mCD(X,J,S.logs_url,S.logs_token,u,h.signal,()=>{x=!0})}finally{XL.removeListener("SIGINT",f)}if(y){if(j=y,EZ.has(y))await u().catch(()=>{})}else j=await dCD(w,W.job_id,D,$.platform,$.apikey,X,x,h.signal);if(!X)if(j==="succeeded")H.success("Build completed successfully!");else if(j==="failed")H.error("Build failed");else H.warn(`Build finished with status: ${j}`);let d=((Date.now()-Y)/1000).toFixed(2);return await RD($.apikey,{channel:"native-builder",event:j==="succeeded"?"Build succeeded":"Build failed",icon:j==="succeeded"?"✅":"❌",user_id:G,tags:{"app-id":D,platform:$.platform,status:j||"unknown",time:d},notify:!1}).catch(),{success:j==="succeeded",jobId:W.job_id,uploadUrl:W.upload_url,status:j||S.status||W.status}}finally{await vCD(N,{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();D6();q1();fD();async function nCD(D,$,X,Y){for await(let J of D){if(!Y)H.warn(`Removing ${J.name} created on ${o5(J.created_at)}`);await OZ($,X,J.name)}}function iCD(D,$,X){let Y=[];for(let J of D??[]){let Q=eD(J.name);if(TG(Q,$)&&S4(Q,X))Y.push(J)}return Y}async function Vs(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 m0(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 UZ(Z,D),O=await ha(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=L7(q,"major");if(!X)H.info(`Querying available versions in Capgo between ${z$(q)} and ${z$(B)}`);if(G=iCD(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)ga(G);if(!Q)if(!X){let q=await d0({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 nCD(U,Z,D,X),!X)ND("Done ✅");return{removed:U.length,kept:z}}vD();s$();fD();async function Ns(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 m0(w,Q,X),await xD(w,Y.apikey,["write","all","read","upload"]),await u0(w,Y.apikey,Q,1,X,!0);let Z=await GZ(w,Q,F,Y.packageJson,Y.nodeModules),G=Z.finalCompatibility.some((O)=>!L4(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:M}=q,L=k8(q),I=L.compatible?U:z;O.rows.push([B,K||"-",M||"-",I,L.message])}if(H.success("Compatibility Check Results"),H.info(O.toString()),G){let q=Z.finalCompatibility.filter((B)=>!L4(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($.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=DL($.outputUpload)?"true":"false";if($.outputRetention)O.BUILD_OUTPUT_RETENTION_SECONDS=String(eM($.outputRetention));let q=await Zs(D,$.platform,Object.keys(O).length>0?O:void 0),B=B2(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;let K={app_id:D,platform:$.platform,build_mode:$.buildMode};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 M=[];if($.platform==="ios"){if(!q.BUILD_CERTIFICATE_BASE64)M.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)M.push("BUILD_PROVISION_PROFILE_BASE64 (or --build-provision-profile-base64)");if(!q.APPLE_KEY_ID)M.push("APPLE_KEY_ID (or --apple-key-id)");if(!q.APPLE_ISSUER_ID)M.push("APPLE_ISSUER_ID (or --apple-issuer-id)");if(!q.APPLE_KEY_CONTENT)M.push("APPLE_KEY_CONTENT (or --apple-key-content)");if(!q.APP_STORE_CONNECT_TEAM_ID)M.push("APP_STORE_CONNECT_TEAM_ID (or --apple-team-id)")}else if($.platform==="android"){if(!q.ANDROID_KEYSTORE_FILE)M.push("ANDROID_KEYSTORE_FILE (or --android-keystore-file)");if(!q.KEYSTORE_KEY_ALIAS)M.push("KEYSTORE_KEY_ALIAS (or --keystore-key-alias)");if(!q.KEYSTORE_KEY_PASSWORD&&!q.KEYSTORE_STORE_PASSWORD)M.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")M.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(M.length>0){if(!X){H.error(`❌ Missing required credentials for ${$.platform}:`),H.error("");for(let R of M)H.error(` • ${R}`);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}: ${M.join(", ")}`)}if(K.credentials=q,!X)H.info("✓ Using credentials (merged from CLI args, env vars, and saved file)");if(J){let R=Object.keys(q).filter((P)=>q[P]);H.info(`Credentials provided: ${R.join(", ")}`)}if(!X)H.info("Requesting build from Capgo...");let L=3,I=await gCD(`${w}/build/request`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify(K)},L,X);if(!I.ok){let R=await I.text();throw Error(`Failed to request build: ${I.status} - ${R}`)}let W=await I.json();if(!X)H.success(`Build job created: ${W.job_id}`),H.info(`Status: ${W.status}`);if(J)H.info(`Upload URL: ${W.upload_url}`),H.info(`Upload expires: ${W.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 N=a$(fCD(),`capgo-build-${Date.now()}`);await uCD(N,{recursive:!0});let V=a$(N,`${Os(Q)}.zip`);try{if(!X)H.info(`Zipping ${$.platform} project from ${Q}...`);await lCD(Q,V,$.platform,F?.config);let P=((await _CD(V)).size/1024/1024).toFixed(2);if(!X)H.success(`Created zip: ${V} (${P} MB)`);if(!X)H.info("Uploading to builder...");if(J)H.info(`Upload endpoint: ${W.upload_url}`),H.info(`File size: ${P} MB`),H.info(`Job ID: ${W.job_id}`);let A=xCD(V),_=A0();if(!X)_.start("Uploading bundle");if(await new Promise((b,a)=>{let c=new TZ.Upload(A,{endpoint:W.upload_url,chunkSize:5242880,metadata:{filename:Os(V),filetype:"application/zip"},headers:{authorization:$.apikey},onBeforeRequest(n){if(J){H.info(`[TUS] ${n.getMethod()} ${n.getURL()}`);let YD=n.getHeader("authorization");H.info(`[TUS] Authorization header present: ${!!YD}`)}},onAfterResponse(n,YD){if(J){H.info(`[TUS] Response status: ${YD.getStatus()}`);let C=YD.getHeader("upload-offset"),E=YD.getHeader("tus-resumable");H.info(`[TUS] Upload-Offset: ${C}, Tus-Resumable: ${E}`)}},onError(n){if(!X)_.stop("Upload failed"),H.error(`Upload error: ${n.message}`);if(n instanceof TZ.DetailedError){let YD=n.originalResponse?.getBody(),C=n.originalResponse?.getStatus(),E=n.originalRequest?.getURL();if(J)H.error(`[TUS] Request URL: ${E}`),H.error(`[TUS] Response status: ${C}`),H.error(`[TUS] Response body: ${YD}`);let r="Unknown error";try{let k=JSON.parse(YD||'{"error": "unknown error"}');r=k.status||k.error||k.message||"unknown error"}catch{r=YD||n.message}a(Error(`TUS upload failed: ${r}`))}else a(Error(`TUS upload failed: ${n.message||n.toString()}`))},onProgress(n,YD){let C=(n/YD*100).toFixed(2);if(!X)_.message(`Uploading ${C}%`)},onSuccess(){if(!X)_.stop("Upload complete!");if(J)H.success("TUS upload completed successfully");b()}});if(J)H.info("[TUS] Starting upload...");c.start()}),!X)H.info("Starting build job...");let v=await fetch(`${w}/build/start/${W.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D})});if(!v.ok){let b=await v.text();throw Error(`Failed to start build: ${v.status} - ${b}`)}let S=await v.json();if(!X)H.success("Build started!"),H.info("Streaming build logs...");let h=new AbortController,g=!1,l=async()=>{if(g)return;g=!0;let b=new AbortController,a=setTimeout(()=>b.abort(),4000);try{await fetch(`${w}/build/cancel/${W.job_id}`,{method:"POST",headers:{"Content-Type":"application/json",authorization:$.apikey},body:JSON.stringify({app_id:D}),signal:b.signal})}catch{}finally{clearTimeout(a)}},f=async()=>{try{if(g)XL.exit(1);if(!X)H.warn("Canceling build... (press Ctrl+C again to force quit)");await l(),h.abort()}catch{}};XL.on("SIGINT",f);let j,x=!1,u=async()=>{try{let b=await fetch(`${w}/build/status?job_id=${encodeURIComponent(W.job_id)}&app_id=${encodeURIComponent(D)}&platform=${$.platform}`,{headers:{authorization:$.apikey}});if(!b.ok)return null;let a=await b.json(),c=a.status?.toLowerCase?.()??"";if(!X&&x)H.info(`Build status: ${c||a.status}`);if(EZ.has(c))return c;return null}catch{return null}},y=null;try{y=await mCD(X,J,S.logs_url,S.logs_token,u,h.signal,()=>{x=!0})}finally{XL.removeListener("SIGINT",f)}if(y){if(j=y,EZ.has(y))await u().catch(()=>{})}else j=await dCD(w,W.job_id,D,$.platform,$.apikey,X,x,h.signal);if(!X)if(j==="succeeded")H.success("Build completed successfully!");else if(j==="failed")H.error("Build failed");else H.warn(`Build finished with status: ${j}`);let d=((Date.now()-Y)/1000).toFixed(2);return await RD($.apikey,{channel:"native-builder",event:j==="succeeded"?"Build succeeded":"Build failed",icon:j==="succeeded"?"✅":"❌",user_id:G,tags:{"app-id":D,platform:$.platform,status:j||"unknown",time:d},notify:!1}).catch(),{success:j==="succeeded",jobId:W.job_id,uploadUrl:W.upload_url,status:j||S.status||W.status}}finally{await vCD(N,{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();D6();q1();fD();async function nCD(D,$,X,Y){for await(let J of D){if(!Y)H.warn(`Removing ${J.name} created on ${o5(J.created_at)}`);await OZ($,X,J.name)}}function iCD(D,$,X){let Y=[];for(let J of D??[]){let Q=eD(J.name);if(TG(Q,$)&&S4(Q,X))Y.push(J)}return Y}async function Vs(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 m0(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 UZ(Z,D),O=await ha(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=L7(q,"major");if(!X)H.info(`Querying available versions in Capgo between ${z$(q)} and ${z$(B)}`);if(G=iCD(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)ga(G);if(!Q)if(!X){let q=await d0({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 nCD(U,Z,D,X),!X)ND("Done ✅");return{removed:U.length,kept:z}}vD();s$();fD();async function Ns(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 m0(w,Q,X),await xD(w,Y.apikey,["write","all","read","upload"]),await u0(w,Y.apikey,Q,1,X,!0);let Z=await GZ(w,Q,F,Y.packageJson,Y.nodeModules),G=Z.finalCompatibility.some((O)=>!L4(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:M}=q,L=k8(q),I=L.compatible?U:z;O.rows.push([B,K||"-",M||"-",I,L.message])}if(H.success("Compatibility Check Results"),H.info(O.toString()),G){let q=Z.finalCompatibility.filter((B)=>!L4(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();D6();import{existsSync as QL,readFileSync as Ts,writeFileSync as tCD}from"node:fs";import{cwd as sCD}from"node:process";import{Buffer as C6}from"node:buffer";import{constants as pCD,createCipheriv as rCD,createDecipheriv as oCD,generateKeyPairSync as aCD,privateEncrypt as JL,publicDecrypt as YL,randomBytes as Ms}from"node:crypto";var Ls="aes-128-cbc",P6="base64",CZ="hex",Y7=pCD.RSA_PKCS1_PADDING;function PZ(D){let $=Ms(16),X=Ms(16),Y=$.toString(P6),J=JL({key:D,padding:Y7},X).toString(P6);return{sessionKey:X,ivSessionKey:`${Y}:${J}`}}function Q7(D,$,X){let[Y]=X.split(":"),J=C6.from(Y,P6),Q=rCD(Ls,$,J);return Q.setAutoPadding(!0),C6.concat([Q.update(D),Q.final()])}function Is(D,$,X){let[Y,J]=$.split(":"),Q=YL({key:X,padding:Y7},C6.from(J,P6)),F=C6.from(Y,P6),w=oCD(Ls,Q,F);return w.setAutoPadding(!0),C6.concat([w.update(D),w.final()])}function F7(D,$){return JL({key:$,padding:Y7},C6.from(D,P6)).toString(P6)}function w7(D,$){return JL({key:$,padding:Y7},C6.from(D,CZ)).toString(CZ)}function As(D,$){return YL({key:$,padding:Y7},C6.from(D,P6)).toString(P6)}function Rs(D,$){return YL({key:$,padding:Y7},C6.from(D,CZ)).toString(CZ)}function js(){let{publicKey:D,privateKey:$}=aCD("rsa",{modulusLength:2048});return{publicKey:D.export({type:"pkcs1",format:"pem"}),privateKey:$.export({type:"pkcs1",format:"pem"})}}function Es(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();q3();fD();var eCD="5.30.0",DPD="6.30.0",$PD="7.30.0";function XPD(D,$){let X=D.key||R6,Y=$.config.plugins?.CapacitorUpdater?.publicKey;if(QL(X))Y=Ts(X,"utf8");else if(!Y&&D.keyData)Y=D.keyData;return{publicKey:Y,fallbackKeyPath:X}}async function Cs(D,$,X,Y=!1){if(!Y)VD("Decrypt zip file");try{if(await F0(),!QL(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&&!QL(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}=XPD(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=Ts(D),Z=Is(w,$,X.keyData??Q),G=`${D}_decrypted.zip`;if(tCD(G,Z),!Y)H.info(`Decrypted zip file at ${G}`);let O;if(X.checksum){let U=await p6(Z,"sha256"),z=e0(sCD()),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,eCD,DPD,$PD);if(!Y)H.info(`Decrypting checksum with ${B?"V3":"V2"} (based on updater version ${q||"unknown"})`);let M=B?Rs(X.checksum,X.keyData??Q):As(X.checksum,X.keyData??Q);if(O=U===M,!O){let L=`Checksum does not match ${U} !== ${M}`;if(!Y)H.error(L);throw Error(L)}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 ${s(J)}`);throw J instanceof Error?J:Error(String(J))}}vD();fD();async function Ps(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 m0(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 OZ(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();D6();import{existsSync as FL,readFileSync as xs,writeFileSync as JPD}from"node:fs";import{cwd as YPD}from"node:process";q1();fD();var QPD="5.30.0",FPD="6.30.0",wPD="7.30.0";function W2(D){console.error(s(D))}async function Ss(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(!FL(D)){let V=`Zip not found at the path ${D}`;if(!Y)if(J)W2({error:"zip_not_found"});else H.error(`Error: ${V}`);throw Error(V)}if(!Z){if(!Y)if(J)W2({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(!FL(G)&&!O){if(!Y)if(J)W2({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(FL(G))O=xs(G,"utf8");if(O&&!O.startsWith("-----BEGIN RSA PRIVATE KEY-----")){if(!Y)if(J)W2({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=xs(D),{sessionKey:z,ivSessionKey:q}=PZ(O),B=Q7(U,z,q),K=e0(YPD()),M=await y1("@capgo/capacitor-updater",K,X.packageJson),L=!1,I;try{I=M?eD(M):void 0}catch{I=void 0}if(I)L=!Z$(I,QPD,FPD,wPD);let W=L?w7($,O):F7($,O);if(Q)H.info(`Encrypting checksum with ${L?"V3":"V2"} (based on updater version ${M||"unknown"})`);let N=`${D}_encrypted.zip`;if(JPD(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)W2(F);else H.error(`Error encrypting zip file ${s(F)}`);throw F instanceof Error?F:Error(String(F))}}import{randomUUID as KSD}from"node:crypto";import{existsSync as mZ,readFileSync as WSD}from"node:fs";import{cwd as kL,stdin as HSD,stdout as VSD}from"node:process";class wL 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("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}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 xZ extends x6{}class ZL 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 H2 extends x6{constructor(){super("secretKey is required")}}class SZ 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 us(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 vs(D){if(typeof D!=="number"||isNaN(D))return!1;return D>=1&&D<=65535}function _s(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(!ZPD(D))return!1;if(D.length===0)return!1;return!0}function ZPD(D){if(typeof D!=="string")return!1;if(D.length>1024)return!1;return!0}function V2(D){return Array.from(D).map(($)=>$.toString(16).padStart(2,"0")).join("")}function d8(D=""){let $={'"':"","&quot;":"","&#34;":"","&QUOT;":"","&#x00022":""};return D.replace(/^("|&quot;|&#34;)|("|&quot;|&#34;)$/g,(X)=>$[X])}function OL(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 UL(D){return c8(D).slice(0,8)}function qL(D,$){return`${UL($)}/${D}/s3/aws4_request`}async function uZ(D){if(!(D instanceof Uint8Array))D=new TextEncoder().encode(D);return V2(new Uint8Array(await crypto.subtle.digest("SHA-256",D)))}var GPD=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"];class zL 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 L=await D.makeRequest({method:"PUT",headers:new Headers({...J,"Content-Length":String(U.length)}),bucketName:$,objectName:X,payload:U});Q={etag:d8(L.headers.get("etag")??void 0),versionId:OL(L.headers)};return}if(B===1)w=(await OPD({client:D,bucketName:$,objectName:X,metadata:J})).uploadId;let K={"Content-Length":String(U.length)};for(let L of GPD){let I=J[L];if(I)K[L]=I}let M=D.makeRequest({method:"PUT",query:{partNumber:B.toString(),uploadId:w},headers:new Headers(K),bucketName:$,objectName:X,payload:U}).then((L)=>{let I=L.headers.get("etag")??"";if(I)I=I.replace(/^"/,"").replace(/"$/,"");return Z.push({part:B,etag:I}),L});O.push(M.catch((L)=>{if(!G)G=L}))}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 UPD({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 OPD(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 UPD({client:D,bucketName:$,objectName:X,uploadId:Y,etags:J}){let Q=`
469
469
  <CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
3
  "type": "module",
4
- "version": "7.78.0",
4
+ "version": "7.79.0",
5
5
  "description": "A CLI to upload to capgo servers",
6
6
  "author": "Martin martin@capgo.app",
7
7
  "license": "Apache 2.0",