@capgo/cli 8.5.1 → 8.5.3

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
@@ -91,7 +91,7 @@ Expecting one of '${B.join("', '")}'`);if(this._lifeCycleHooks[A])this._lifeCycl
91
91
  `),this.outputHelp({error:!0});let B=Q||{},$=B.exitCode||1,I=B.code||"commander.error";this._exit($,I,A)}_parseOptionsEnv(){this.options.forEach((A)=>{if(A.envVar&&A.envVar in O1.env){let Q=A.attributeName();if(this.getOptionValue(Q)===void 0||["default","config","env"].includes(this.getOptionValueSource(Q)))if(A.required||A.optional)this.emit(`optionEnv:${A.name()}`,O1.env[A.envVar]);else this.emit(`optionEnv:${A.name()}`)}})}_parseOptionsImplied(){let A=new ydA(this.options),Q=(B)=>{return this.getOptionValue(B)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(B))};this.options.filter((B)=>B.implied!==void 0&&Q(B.attributeName())&&A.valueFromOption(this.getOptionValue(B.attributeName()),B)).forEach((B)=>{Object.keys(B.implied).filter(($)=>!Q($)).forEach(($)=>{this.setOptionValueWithSource($,B.implied[$],"implied")})})}missingArgument(A){let Q=`error: missing required argument '${A}'`;this.error(Q,{code:"commander.missingArgument"})}optionMissingArgument(A){let Q=`error: option '${A.flags}' argument missing`;this.error(Q,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(A){let Q=`error: required option '${A.flags}' not specified`;this.error(Q,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(A,Q){let B=(E)=>{let G=E.attributeName(),J=this.getOptionValue(G),Y=this.options.find((H)=>H.negate&&G===H.attributeName()),X=this.options.find((H)=>!H.negate&&G===H.attributeName());if(Y&&(Y.presetArg===void 0&&J===!1||Y.presetArg!==void 0&&J===Y.presetArg))return Y;return X||E},$=(E)=>{let G=B(E),J=G.attributeName();if(this.getOptionValueSource(J)==="env")return`environment variable '${G.envVar}'`;return`option '${G.flags}'`},I=`error: ${$(A)} cannot be used with ${$(Q)}`;this.error(I,{code:"commander.conflictingOption"})}unknownOption(A){if(this._allowUnknownOption)return;let Q="";if(A.startsWith("--")&&this._showSuggestionAfterError){let $=[],I=this;do{let E=I.createHelp().visibleOptions(I).filter((G)=>G.long).map((G)=>G.long);$=$.concat(E),I=I.parent}while(I&&!I._enablePositionalOptions);Q=n4A(A,$)}let B=`error: unknown option '${A}'${Q}`;this.error(B,{code:"commander.unknownOption"})}_excessArguments(A){if(this._allowExcessArguments)return;let Q=this.registeredArguments.length,B=Q===1?"":"s",I=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${Q} argument${B} but got ${A.length}.`;this.error(I,{code:"commander.excessArguments"})}unknownCommand(){let A=this.args[0],Q="";if(this._showSuggestionAfterError){let $=[];this.createHelp().visibleCommands(this).forEach((I)=>{if($.push(I.name()),I.alias())$.push(I.alias())}),Q=n4A(A,$)}let B=`error: unknown command '${A}'${Q}`;this.error(B,{code:"commander.unknownCommand"})}version(A,Q,B){if(A===void 0)return this._version;this._version=A,Q=Q||"-V, --version",B=B||"output the version number";let $=this.createOption(Q,B);return this._versionOptionName=$.attributeName(),this._registerOption($),this.on("option:"+$.name(),()=>{this._outputConfiguration.writeOut(`${A}
92
92
  `),this._exit(0,"commander.version",A)}),this}description(A,Q){if(A===void 0&&Q===void 0)return this._description;if(this._description=A,Q)this._argsDescription=Q;return this}summary(A){if(A===void 0)return this._summary;return this._summary=A,this}alias(A){if(A===void 0)return this._aliases[0];let Q=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)Q=this.commands[this.commands.length-1];if(A===Q._name)throw Error("Command alias can't be the same as its name");let B=this.parent?._findCommand(A);if(B){let $=[B.name()].concat(B.aliases()).join("|");throw Error(`cannot add alias '${A}' to command '${this.name()}' as already have command '${$}'`)}return Q._aliases.push(A),this}aliases(A){if(A===void 0)return this._aliases;return A.forEach((Q)=>this.alias(Q)),this}usage(A){if(A===void 0){if(this._usage)return this._usage;let Q=this.registeredArguments.map((B)=>{return xdA(B)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?Q:[]).join(" ")}return this._usage=A,this}name(A){if(A===void 0)return this._name;return this._name=A,this}helpGroup(A){if(A===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=A,this}commandsGroup(A){if(A===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=A,this}optionsGroup(A){if(A===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=A,this}_initOptionGroup(A){if(this._defaultOptionGroup&&!A.helpGroupHeading)A.helpGroup(this._defaultOptionGroup)}_initCommandGroup(A){if(this._defaultCommandGroup&&!A.helpGroup())A.helpGroup(this._defaultCommandGroup)}nameFromFilename(A){return this._name=_D.basename(A,_D.extname(A)),this}executableDir(A){if(A===void 0)return this._executableDir;return this._executableDir=A,this}helpInformation(A){let Q=this.createHelp(),B=this._getOutputContext(A);Q.prepareContext({error:B.error,helpWidth:B.helpWidth,outputHasColors:B.hasColors});let $=Q.formatHelp(this,Q);if(B.hasColors)return $;return this._outputConfiguration.stripColor($)}_getOutputContext(A){A=A||{};let Q=!!A.error,B,$,I;if(Q)B=(G)=>this._outputConfiguration.writeErr(G),$=this._outputConfiguration.getErrHasColors(),I=this._outputConfiguration.getErrHelpWidth();else B=(G)=>this._outputConfiguration.writeOut(G),$=this._outputConfiguration.getOutHasColors(),I=this._outputConfiguration.getOutHelpWidth();return{error:Q,write:(G)=>{if(!$)G=this._outputConfiguration.stripColor(G);return B(G)},hasColors:$,helpWidth:I}}outputHelp(A){let Q;if(typeof A==="function")Q=A,A=void 0;let B=this._getOutputContext(A),$={error:B.error,write:B.write,command:this};this._getCommandAndAncestors().reverse().forEach((E)=>E.emit("beforeAllHelp",$)),this.emit("beforeHelp",$);let I=this.helpInformation({error:B.error});if(Q){if(I=Q(I),typeof I!=="string"&&!Buffer.isBuffer(I))throw Error("outputHelp callback must return a string or a Buffer")}if(B.write(I),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",$),this._getCommandAndAncestors().forEach((E)=>E.emit("afterAllHelp",$))}helpOption(A,Q){if(typeof A==="boolean"){if(A){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(A??"-h, --help",Q??"display help for command"),A||Q)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(A){return this._helpOption=A,this._initOptionGroup(A),this}help(A){this.outputHelp(A);let Q=Number(O1.exitCode??0);if(Q===0&&A&&typeof A!=="function"&&A.error)Q=1;this._exit(Q,"commander.help","(outputHelp)")}addHelpText(A,Q){let B=["beforeAll","before","after","afterAll"];if(!B.includes(A))throw Error(`Unexpected value for position to addHelpText.
93
93
  Expecting one of '${B.join("', '")}'`);let $=`${A}Help`;return this.on($,(I)=>{let E;if(typeof Q==="function")E=Q({error:I.error,command:I.command});else E=Q;if(E)I.write(`${E}
94
- `)}),this}_outputHelpIfRequested(A){let Q=this._getHelpOption();if(Q&&A.find(($)=>Q.is($)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function i4A(A){return A.map((Q)=>{if(!Q.startsWith("--inspect"))return Q;let B,$="127.0.0.1",I="9229",E;if((E=Q.match(/^(--inspect(-brk)?)$/))!==null)B=E[1];else if((E=Q.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(B=E[1],/^\d+$/.test(E[3]))I=E[3];else $=E[3];else if((E=Q.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)B=E[1],$=E[3],I=E[4];if(B&&I!=="0")return`${B}=${$}:${parseInt(I)+1}`;return Q})}function bf(){if(O1.env.NO_COLOR||O1.env.FORCE_COLOR==="0"||O1.env.FORCE_COLOR==="false")return!1;if(O1.env.FORCE_COLOR||O1.env.CLICOLOR_FORCE!==void 0)return!0;return}fdA.Command=gf;fdA.useColor=bf});var t4A=b((ldA)=>{var{Argument:o4A}=cO(),{Command:yf}=r4A(),{CommanderError:mdA,InvalidArgumentError:a4A}=DZ(),{Help:cdA}=_f(),{Option:s4A}=kf();ldA.program=new yf;ldA.createCommand=(A)=>new yf(A);ldA.createOption=(A,Q)=>new s4A(A,Q);ldA.createArgument=(A,Q)=>new o4A(A,Q);ldA.Command=yf;ldA.Option=s4A;ldA.Argument=o4A;ldA.Help=cdA;ldA.CommanderError=mdA;ldA.InvalidArgumentError=a4A;ldA.InvalidOptionArgumentError=a4A});var i8;var $9=_A(()=>{i8={name:"@capgo/cli",type:"module",version:"8.5.1",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/capgo/tree/main/cli#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/capgo.git",directory:"cli"},bugs:{url:"https://github.com/Cap-go/capgo/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk","tanstack-intent"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},files:["!skills/_artifacts","dist","skills"],engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && bun build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"bunx --bun supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsgo --project tsconfig.tsgo.json --noEmit",lint:"bun run lint:ox","lint:ox":"oxlint --config ../.oxlintrc.json src","lint:fix":"oxlint --config ../.oxlintrc.json --fix src","check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:fail-on-incompatible":"bun test/test-fail-on-incompatible.mjs","test:credentials":"bun test/test-credentials.mjs","test:asc-key-protocol":"bun test/test-asc-key-protocol.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:android-service-account-validation":"bun test/test-android-service-account-validation.mjs","test:build-zip-filter":"bun test/test-build-zip-filter.mjs","test:checksum":"bun test/test-checksum-algorithm.mjs","test:build-needed":"bun test/test-build-needed.mjs","test:ci-prompts":"bun test/test-ci-prompts.mjs","test:ci-secrets":"bun test/test-ci-secrets.mjs","test:android-onboarding-progress":"bun test/test-android-onboarding-progress.mjs","test:onboarding-telemetry":"bun test/test-onboarding-telemetry.mjs","test:v2-event-migration":"bun test/test-v2-event-migration.mjs","test:analytics":"bun test/test-analytics.mjs","test:analytics-error-category":"bun test/test-analytics-error-category.mjs","test:analytics-org-resolver":"bun test/test-analytics-org-resolver.mjs","test:supabase-perf":"bun test/test-supabase-perf.mjs","test:preview-qr":"bun test/test-preview-qr.mjs","test:mcp-analytics":"bun test/test-mcp-analytics.mjs","test:app-created-source":"bun test/test-app-created-source.mjs","test:doctor-analytics":"bun test/test-doctor-analytics.mjs","test:posthog-exception":"bun test/test-posthog-exception.mjs","test:onboarding-recovery":"bun test/test-onboarding-recovery.mjs","test:onboarding-progress":"bun test/test-onboarding-progress.mjs","test:onboarding-run-targets":"bun test/test-onboarding-run-targets.mjs","test:run-device-command":"bun test/test-run-device-command.mjs","test:init-app-conflict":"bun test/test-init-app-conflict.mjs","test:init-guardrails":"bun test/test-init-guardrails.mjs","test:prompt-preferences":"bun test/test-prompt-preferences.mjs","test:esm-sdk":"node test/test-sdk-esm.mjs","test:mcp":"node test/test-mcp.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh","test:platform-paths":"bun test/test-platform-paths.mjs","test:payload-split":"bun test/test-payload-split.mjs","test:macos-signing":"bun test/test-macos-signing.mjs","test:helper-dce":"bash scripts/check-helper-dce.sh","test:apple-api-import-helpers":"bun test/test-apple-api-import-helpers.mjs","test:bundle-id-detector":"bun test/test-bundle-id-detector.mjs","test:apple-api-app-list":"bun test/test-apple-api-app-list.mjs","test:apple-api-cert-create":"bun test/test-apple-api-cert-create.mjs","test:app-verification":"bun test/test-app-verification.mjs","test:pbxproj-parser":"bun test/test-pbxproj-parser.mjs","test:manifest-path-encoding":"bun test/test-manifest-path-encoding.mjs","test:self-update":"bun test/test-self-update.mjs","test:update-prompt":"bun test/test-update-prompt.mjs","test:android-tail-engine":"bun test/test-android-tail-engine.mjs","test:android-tail-render":"bun test/test-android-tail-render.mjs","test:android-tail-routing":"bun test/test-android-tail-routing.mjs","test:dev-gate-stripped":"bun test/test-dev-gate-stripped.mjs","test:frame-fit-ios-shared":"bun test/test-frame-fit-ios-shared.mjs","test:ios-confirm-app-id":"bun test/test-ios-confirm-app-id.mjs","test:ios-create-new":"bun test/test-ios-create-new.mjs","test:ios-e2e":"bun test/test-ios-e2e.mjs","test:ios-flow-contract":"bun test/test-ios-flow-contract.mjs","test:ios-import-discovery":"bun test/test-ios-import-discovery.mjs","test:ios-import-export":"bun test/test-ios-import-export.mjs","test:ios-import-pickers":"bun test/test-ios-import-pickers.mjs","test:ios-import-recovery":"bun test/test-ios-import-recovery.mjs","test:ios-recovery":"bun test/test-ios-recovery.mjs","test:ios-resume":"bun test/test-ios-resume.mjs","test:ios-tail-handoff":"bun test/test-ios-tail-handoff.mjs","test:ios-tui-render":"bun test/test-ios-tui-render.mjs","test:p8-error":"bun test/test-p8-error.mjs","test:ios-tui-routing":"bun test/test-ios-tui-routing.mjs","test:ios-updater-sync-validation":"bun test/test-ios-updater-sync-validation.mjs","test:ios-verify-app":"bun test/test-ios-verify-app.mjs","test:platform-flow-contract":"bun test/test-platform-flow-contract.mjs","test:tail-engine-shared":"bun test/test-tail-engine-shared.mjs",test:"bun run build && bun run test:helper-dce && bun run test:version-detection:setup && bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:fail-on-incompatible && bun run test:credentials && bun run test:credentials-validation && bun run test:android-service-account-validation && bun run test:build-zip-filter && bun run test:checksum && bun run test:build-needed && bun run test:ci-prompts && bun run test:ci-secrets && bun run test:android-onboarding-progress && bun run test:onboarding-telemetry && bun run test:v2-event-migration && bun run test:analytics && bun run test:analytics-error-category && bun run test:analytics-org-resolver && bun run test:supabase-perf && bun run test:preview-qr && bun run test:mcp-analytics && bun run test:app-created-source && bun run test:doctor-analytics && bun run test:posthog-exception && bun run test:build-platform-selection && bun run test:onboarding-recovery && bun run test:onboarding-progress && bun run test:onboarding-run-targets && bun run test:run-device-command && bun run test:init-app-conflict && bun run test:init-guardrails && bun run test:prompt-preferences && bun run test:esm-sdk && bun run test:mcp && bun run test:version-detection && bun run test:platform-paths && bun run test:payload-split && bun run test:manifest-path-encoding && bun run test:macos-signing && bun run test:asc-key-protocol && bun run test:apple-api-import-helpers && bun run test:bundle-id-detector && bun run test:apple-api-app-list && bun run test:app-verification && bun run test:pbxproj-parser && bun run test:ai-log-capture && bun run test:ai-analyze-flow && bun run test:ai-sse-parser && bun run test:ai-render-markdown && bun run test:ai-stream-markdown && bun run test:ai-onboarding-mode && bun run test:ai-fit && bun run test:platform-layout && bun run test:frame-fit && bun run test:onboarding-min-size && bun run test:min-size-gate && bun run test:shell-size-gate && bun run test:build-log-sanitize && bun run test:build-output-viewport && bun run test:diff-viewer-viewport && bun run test:build-complete-exit && bun run test:ai-analyze-stream && bun run test:support-mailto && bun run test:support-redact && bun run test:support-internal-log && bun run test:support-help-menu && bun run test:support-contact && bun run test:support-bundle-files && bun run test:self-update && bun run test:update-prompt && bun run test:apple-api-cert-create && bun run test:android-tail-engine && bun run test:android-tail-render && bun run test:android-tail-routing && bun run test:dev-gate-stripped && bun run test:frame-fit-ios-shared && bun run test:ios-confirm-app-id && bun run test:ios-create-new && bun run test:ios-e2e && bun run test:ios-flow-contract && bun run test:ios-import-discovery && bun run test:ios-import-export && bun run test:ios-import-pickers && bun run test:ios-import-recovery && bun run test:ios-recovery && bun run test:ios-resume && bun run test:ios-tail-handoff && bun run test:ios-tui-render && bun run test:p8-error && bun run test:ios-tui-routing && bun run test:ios-updater-sync-validation && bun run test:ios-verify-app && bun run test:platform-flow-contract && bun run test:tail-engine-shared","test:build-platform-selection":"bun test/test-build-platform-selection.mjs","test:ai-log-capture":"bun test/test-ai-log-capture.mjs","test:ai-analyze-flow":"bun test/test-ai-analyze-flow.mjs","test:ai-analyze-stream":"bun test/test-ai-analyze-stream.mjs","test:ai-sse-parser":"bun test/test-ai-sse-parser.mjs","test:ai-render-markdown":"bun test/test-ai-render-markdown.mjs","test:ai-onboarding-mode":"bun test/test-ai-onboarding-mode.mjs","test:ai-fit":"bun test/test-ai-fit.mjs","test:platform-layout":"bun test/test-platform-layout.mjs","test:frame-fit":"bun test/run-frame-fit.mjs","test:onboarding-min-size":"bun test/test-onboarding-min-size.mjs","test:min-size-gate":"bun test/test-min-size-gate.mjs","test:shell-size-gate":"bun test/test-shell-size-gate.mjs","test:build-log-sanitize":"bun test/test-build-log-sanitize.mjs","test:build-output-viewport":"bun test/test-build-output-viewport.mjs","test:diff-viewer-viewport":"bun test/test-diff-viewer-viewport.mjs","test:build-complete-exit":"bun test/test-build-complete-exit.mjs","test:ai-stream-markdown":"bun test/test-ai-stream-markdown.mjs","test:support-mailto":"bun test/test-support-mailto.mjs","test:support-redact":"bun test/test-support-redact.mjs","test:support-internal-log":"bun test/test-support-internal-log.mjs","test:support-help-menu":"bun test/test-support-help-menu.mjs","test:support-contact":"bun test/test-support-contact.mjs","test:support-bundle-files":"bun test/test-support-bundle-files.mjs"},dependencies:{"@inkjs/ui":"^2.0.0",ink:"^7.0.4","ink-spinner":"^5.0.0",jsonwebtoken:"^9.0.3","node-forge":"^1.4.0",qrcode:"^1.5.4",react:"^19.2.6","string-width":"^8.2.1"},optionalDependencies:{"@capgo/cli-helper-darwin-arm64":"^1.1.0","@capgo/cli-helper-darwin-x64":"^1.1.0"},devDependencies:{"@antfu/eslint-config":"^9.0.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.6","@capacitor/cli":"^8.3.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^1.4.0","@modelcontextprotocol/sdk":"^1.29.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.8","@supabase/supabase-js":"^2.106.2","@tanstack/intent":"^0.0.41","@types/adm-zip":"^0.5.8","@types/jsonwebtoken":"^9.0.10","@types/node":"^25.9.1","@types/node-forge":"^1.3.14","@types/prettyjson":"^0.0.33","@types/qrcode":"^1.5.6","@types/react":"^19.2.15","@types/tmp":"^0.2.6","@types/ws":"^8.18.1","@typescript/native-preview":"7.0.0-dev.20260526.1","@vercel/ncc":"^0.38.4","@xterm/headless":"^6.0.0","adm-zip":"^0.5.17","ci-info":"^4.4.0",commander:"^14.0.3",eslint:"^10.4.0","git-format-staged":"4.0.1",husky:"^9.1.7","is-wsl":"^3.1.1",micromatch:"^4.0.8",open:"^11.0.0",oxlint:"^1.67.0",partysocket:"^1.1.19",prettyjson:"^1.2.5",tmp:"^0.2.6","tus-js-client":"^4.3.1",typescript:"^6.0.3",ws:"^8.21.0",zod:"^4.4.3"}}});function BpA(A){if(A&&typeof A==="object"&&"status"in A){let Q=A.status;if(typeof Q==="number")return Q}return}function $pA(A){if(A instanceof Error)return A.message;if(typeof A==="string")return A;return""}function UZ(A){if(A&&typeof A==="object"&&"code"in A){let $=A.code;if(typeof $==="string"&&$.startsWith("commander."))return"commander"}let Q=BpA(A);if(Q!==void 0){if(Q===401)return"unauthorized";if(Q===403)return"forbidden";if(Q===404)return"not_found";if(Q===413)return"payload_too_large";if(Q>=500)return"server_error"}let B=$pA(A).toLowerCase();if(/econnrefused|enotfound|fetch failed|network|socket|dns/.test(B))return"network_error";if(/timed out|timeout|etimedout|aborted/.test(B))return"timeout";if(/invalid|must be|required|not allowed|malformed|validation/.test(B))return"validation_error";return"unknown"}function A$A(A){if(A===401)return"unauthorized";if(A===403)return"forbidden";if(A===404)return"not_found";if(A===408||A===504)return"timeout";if(A===413)return"payload_too_large";if(A===429)return"rate_limited";if(A===400||A===422)return"validation_error";if(A>=500)return"server_error";return"unknown"}import{AsyncLocalStorage as IpA}from"node:async_hooks";function XZ(A,Q){return B$A.run(A,()=>Promise.resolve(Q()))}function EpA(){return B$A.getStore()}function HZ(){$$A=!0}function I$A(){return $$A}function G$A(A){E$A=A}function Q$A(A){try{E$A?.(A)}catch{}}function D$A(A,Q){let B;try{B=new URL(A).pathname}catch{B=A.split("?")[0]}let $="/functions/v1/",I=B.indexOf($);if(I>=0){let X=B.slice(I+$.length).replace(/^\/+|\/+$/g,"");return X?`${Q} functions:${X}`:`${Q} functions`}let E="/rest/v1/",G=B.indexOf(E),J=G>=0?B.slice(G+E.length):B.replace(/^\//,"");if(J.startsWith("rpc/"))return`rpc:${J.slice(4).split("/")[0]}`;let Y=J.split("/")[0]||B;return`${Q} ${Y}`}function GpA(A){let Q=A?.headers;if(!Q)return;let B=Q.get;if(typeof B==="function")return B.call(Q,"capgkey")??void 0;if(Array.isArray(Q))return Q.find(([$])=>$.toLowerCase()==="capgkey")?.[1];return Q.capgkey}function Y$A(){return async(Q,B)=>{let $=(B?.method??"GET").toUpperCase(),I=typeof Q==="string"?Q:Q instanceof URL?Q.href:Q.url,E=EpA(),G=GpA(B),J=Date.now();try{let Y=await globalThis.fetch(Q,B);return Q$A({url:I,method:$,status:Y.status,ok:Y.ok,durationMs:Date.now()-J,source:E,apikey:G}),Y}catch(Y){throw Q$A({url:I,method:$,status:0,ok:!1,durationMs:Date.now()-J,source:E,apikey:G,error:Y}),Y}}}var B$A,$$A=!1,E$A,J$A=5000;var FZ=_A(()=>{B$A=new IpA});var U$A=b((ziQ,JpA)=>{JpA.exports=[{name:"Agola CI",constant:"AGOLA",env:"AGOLA_GIT_REF",pr:"AGOLA_PULL_REQUEST_ID"},{name:"Alpic",constant:"ALPIC",env:"ALPIC_HOST"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE",pr:{env:"AC_GIT_PR",ne:"false"}},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN",pr:{env:"CODEBUILD_WEBHOOK_EVENT",any:["PULL_REQUEST_CREATED","PULL_REQUEST_UPDATED","PULL_REQUEST_REOPENED"]}},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"TF_BUILD",pr:{BUILD_REASON:"PullRequest"}},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Cloudflare Pages",constant:"CLOUDFLARE_PAGES",env:"CF_PAGES"},{name:"Cloudflare Workers",constant:"CLOUDFLARE_WORKERS",env:"WORKERS_CI"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Earthly",constant:"EARTHLY",env:"EARTHLY_CI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"Gitea Actions",constant:"GITEA_ACTIONS",env:"GITEA_ACTIONS"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Prow",constant:"PROW",env:"PROW_JOB_ID"},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Sourcehut",constant:"SOURCEHUT",env:{CI_NAME:"sourcehut"}},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vela",constant:"VELA",env:"VELA",pr:{VELA_PULL_REQUEST:"1"}},{name:"Vercel",constant:"VERCEL",env:{any:["NOW_BUILDER","VERCEL"]},pr:"VERCEL_GIT_PULL_REQUEST_ID"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var uf=b((ff)=>{var X$A=U$A(),_4=process.env;Object.defineProperty(ff,"_vendors",{value:X$A.map(function(A){return A.constant})});ff.name=null;ff.isPR=null;ff.id=null;if(_4.CI!=="false")X$A.forEach(function(A){let B=(Array.isArray(A.env)?A.env:[A.env]).every(function($){return H$A($)});if(ff[A.constant]=B,!B)return;ff.name=A.name,ff.isPR=DpA(A),ff.id=A.constant});ff.isCI=!!(_4.CI!=="false"&&(_4.BUILD_ID||_4.BUILD_NUMBER||_4.CI||_4.CI_APP_ID||_4.CI_BUILD_ID||_4.CI_BUILD_NUMBER||_4.CI_NAME||_4.CONTINUOUS_INTEGRATION||_4.RUN_ID||ff.name||!1));function H$A(A){if(typeof A==="string")return!!_4[A];if("env"in A)return _4[A.env]&&_4[A.env].includes(A.includes);if("any"in A)return A.any.some(function(Q){return!!_4[Q]});return Object.keys(A).every(function(Q){return _4[Q]===A[Q]})}function DpA(A){switch(typeof A.pr){case"string":return!!_4[A.pr];case"object":if("env"in A.pr)if("any"in A.pr)return A.pr.any.some(function(Q){return _4[A.pr.env]===Q});else return A.pr.env in _4&&_4[A.pr.env]!==A.pr.ne;else if("any"in A.pr)return A.pr.any.some(function(Q){return!!_4[Q]});else return H$A(A.pr);default:return null}}});import{homedir as C$A,platform as UpA,release as XpA}from"node:os";import{arch as HpA,cwd as K$A,env as bU,version as FpA}from"node:process";function WZ(A){return A==="1"||A?.toLowerCase()==="true"||A?.toLowerCase()==="yes"}function qpA(){if(WZ(bU.CAPGO_DISABLE_TELEMETRY)||WZ(bU.CAPGO_DISABLE_POSTHOG))return;return bU.CAPGO_CLI_POSTHOG_API_KEY?.trim()||bU.POSTHOG_API_KEY?.trim()||CpA}function ZpA(A){let Q=A.replace(/\/+$/,"");if(Q.endsWith("/i/v0/e"))return`${Q}/`;let B=Q.replace(/\/capture$/,"/");return new URL("i/v0/e/",B.endsWith("/")?B:`${B}/`).toString()}function MpA(A){if(A instanceof Error)return{cause:A.cause,message:A.message,name:A.name||"Error",stack:A.stack};if(typeof A==="string")return{message:A,name:"Error",stack:void 0};try{return{message:JSON.stringify(A)??String(A),name:"Error",stack:void 0}}catch{return{message:String(A),name:"Error",stack:void 0}}}function zpA(A){let Q=A,B=K$A(),$=C$A();if(B)Q=Q.replaceAll(B,"<cwd>");if($)Q=Q.replaceAll($,"~");return Q}function NpA(A){let Q=A,B=K$A(),$=C$A();if(B)Q=Q.replaceAll(B,"<cwd>");if($)Q=Q.replaceAll($,"~");return Q.replace(/<cwd>\/[^\s"',)]+/g,"<cwd>/<path>").replace(/~\/[^\s"',)]+/g,"~/<path>").replace(/[\w.%+-]+@[\w.-]+\.[A-Z]{2,}/gi,"<email>").replace(/(https?:\/\/)([^/\s:@]+):([^/\s@]+)@/gi,"$1<redacted>@").replace(/\b[a-z][\w-]*(?:\.[\w-]+){2,}\b/gi,"<app_id>").replace(/\b[a-z]:\\[^\s"',)]+/gi,"<path>").replace(/(^|[\s"'(])\/[^\s"',)]+/g,"$1<path>").replace(/(--(?:token|api[-_]?key|key|password|secret|private[-_]?key|jwt|session|auth)(?:=|\s+))("[^"]+"|'[^']+'|\S+)/gi,"$1<redacted>").replace(/\b((?:token|api[-_]?key|password|secret|authorization)\s*[:=]\s*)[^\s,;]+/gi,"$1<redacted>")}function LpA(A,Q){let B=A?.split(`
94
+ `)}),this}_outputHelpIfRequested(A){let Q=this._getHelpOption();if(Q&&A.find(($)=>Q.is($)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function i4A(A){return A.map((Q)=>{if(!Q.startsWith("--inspect"))return Q;let B,$="127.0.0.1",I="9229",E;if((E=Q.match(/^(--inspect(-brk)?)$/))!==null)B=E[1];else if((E=Q.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(B=E[1],/^\d+$/.test(E[3]))I=E[3];else $=E[3];else if((E=Q.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)B=E[1],$=E[3],I=E[4];if(B&&I!=="0")return`${B}=${$}:${parseInt(I)+1}`;return Q})}function bf(){if(O1.env.NO_COLOR||O1.env.FORCE_COLOR==="0"||O1.env.FORCE_COLOR==="false")return!1;if(O1.env.FORCE_COLOR||O1.env.CLICOLOR_FORCE!==void 0)return!0;return}fdA.Command=gf;fdA.useColor=bf});var t4A=b((ldA)=>{var{Argument:o4A}=cO(),{Command:yf}=r4A(),{CommanderError:mdA,InvalidArgumentError:a4A}=DZ(),{Help:cdA}=_f(),{Option:s4A}=kf();ldA.program=new yf;ldA.createCommand=(A)=>new yf(A);ldA.createOption=(A,Q)=>new s4A(A,Q);ldA.createArgument=(A,Q)=>new o4A(A,Q);ldA.Command=yf;ldA.Option=s4A;ldA.Argument=o4A;ldA.Help=cdA;ldA.CommanderError=mdA;ldA.InvalidArgumentError=a4A;ldA.InvalidOptionArgumentError=a4A});var i8;var $9=_A(()=>{i8={name:"@capgo/cli",type:"module",version:"8.5.3",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/capgo/tree/main/cli#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/capgo.git",directory:"cli"},bugs:{url:"https://github.com/Cap-go/capgo/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk","tanstack-intent"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},files:["!skills/_artifacts","dist","skills"],engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && bun build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"bunx --bun supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsgo --project tsconfig.tsgo.json --noEmit",lint:"bun run lint:ox","lint:ox":"oxlint --config ../.oxlintrc.json src","lint:fix":"oxlint --config ../.oxlintrc.json --fix src","check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:fail-on-incompatible":"bun test/test-fail-on-incompatible.mjs","test:credentials":"bun test/test-credentials.mjs","test:asc-key-protocol":"bun test/test-asc-key-protocol.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:android-service-account-validation":"bun test/test-android-service-account-validation.mjs","test:build-zip-filter":"bun test/test-build-zip-filter.mjs","test:checksum":"bun test/test-checksum-algorithm.mjs","test:build-needed":"bun test/test-build-needed.mjs","test:ci-prompts":"bun test/test-ci-prompts.mjs","test:ci-secrets":"bun test/test-ci-secrets.mjs","test:android-onboarding-progress":"bun test/test-android-onboarding-progress.mjs","test:onboarding-telemetry":"bun test/test-onboarding-telemetry.mjs","test:v2-event-migration":"bun test/test-v2-event-migration.mjs","test:analytics":"bun test/test-analytics.mjs","test:analytics-error-category":"bun test/test-analytics-error-category.mjs","test:analytics-org-resolver":"bun test/test-analytics-org-resolver.mjs","test:supabase-perf":"bun test/test-supabase-perf.mjs","test:preview-qr":"bun test/test-preview-qr.mjs","test:mcp-analytics":"bun test/test-mcp-analytics.mjs","test:app-created-source":"bun test/test-app-created-source.mjs","test:doctor-analytics":"bun test/test-doctor-analytics.mjs","test:posthog-exception":"bun test/test-posthog-exception.mjs","test:onboarding-recovery":"bun test/test-onboarding-recovery.mjs","test:onboarding-progress":"bun test/test-onboarding-progress.mjs","test:onboarding-run-targets":"bun test/test-onboarding-run-targets.mjs","test:run-device-command":"bun test/test-run-device-command.mjs","test:init-app-conflict":"bun test/test-init-app-conflict.mjs","test:init-guardrails":"bun test/test-init-guardrails.mjs","test:prompt-preferences":"bun test/test-prompt-preferences.mjs","test:esm-sdk":"node test/test-sdk-esm.mjs","test:mcp":"node test/test-mcp.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh","test:platform-paths":"bun test/test-platform-paths.mjs","test:payload-split":"bun test/test-payload-split.mjs","test:macos-signing":"bun test/test-macos-signing.mjs","test:helper-dce":"bash scripts/check-helper-dce.sh","test:apple-api-import-helpers":"bun test/test-apple-api-import-helpers.mjs","test:bundle-id-detector":"bun test/test-bundle-id-detector.mjs","test:apple-api-app-list":"bun test/test-apple-api-app-list.mjs","test:apple-api-cert-create":"bun test/test-apple-api-cert-create.mjs","test:app-verification":"bun test/test-app-verification.mjs","test:pbxproj-parser":"bun test/test-pbxproj-parser.mjs","test:manifest-path-encoding":"bun test/test-manifest-path-encoding.mjs","test:self-update":"bun test/test-self-update.mjs","test:update-prompt":"bun test/test-update-prompt.mjs","test:android-tail-engine":"bun test/test-android-tail-engine.mjs","test:android-tail-render":"bun test/test-android-tail-render.mjs","test:android-tail-routing":"bun test/test-android-tail-routing.mjs","test:dev-gate-stripped":"bun test/test-dev-gate-stripped.mjs","test:frame-fit-ios-shared":"bun test/test-frame-fit-ios-shared.mjs","test:ios-confirm-app-id":"bun test/test-ios-confirm-app-id.mjs","test:ios-create-new":"bun test/test-ios-create-new.mjs","test:ios-e2e":"bun test/test-ios-e2e.mjs","test:ios-flow-contract":"bun test/test-ios-flow-contract.mjs","test:ios-import-discovery":"bun test/test-ios-import-discovery.mjs","test:ios-import-export":"bun test/test-ios-import-export.mjs","test:ios-import-pickers":"bun test/test-ios-import-pickers.mjs","test:ios-import-recovery":"bun test/test-ios-import-recovery.mjs","test:ios-recovery":"bun test/test-ios-recovery.mjs","test:ios-resume":"bun test/test-ios-resume.mjs","test:ios-tail-handoff":"bun test/test-ios-tail-handoff.mjs","test:ios-tui-render":"bun test/test-ios-tui-render.mjs","test:p8-error":"bun test/test-p8-error.mjs","test:ios-tui-routing":"bun test/test-ios-tui-routing.mjs","test:ios-updater-sync-validation":"bun test/test-ios-updater-sync-validation.mjs","test:ios-verify-app":"bun test/test-ios-verify-app.mjs","test:platform-flow-contract":"bun test/test-platform-flow-contract.mjs","test:tail-engine-shared":"bun test/test-tail-engine-shared.mjs",test:"bun run build && bun run test:helper-dce && bun run test:version-detection:setup && bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:fail-on-incompatible && bun run test:credentials && bun run test:credentials-validation && bun run test:android-service-account-validation && bun run test:build-zip-filter && bun run test:checksum && bun run test:build-needed && bun run test:ci-prompts && bun run test:ci-secrets && bun run test:android-onboarding-progress && bun run test:onboarding-telemetry && bun run test:v2-event-migration && bun run test:analytics && bun run test:analytics-error-category && bun run test:analytics-org-resolver && bun run test:supabase-perf && bun run test:preview-qr && bun run test:mcp-analytics && bun run test:app-created-source && bun run test:doctor-analytics && bun run test:posthog-exception && bun run test:build-platform-selection && bun run test:onboarding-recovery && bun run test:onboarding-progress && bun run test:onboarding-run-targets && bun run test:run-device-command && bun run test:init-app-conflict && bun run test:init-guardrails && bun run test:prompt-preferences && bun run test:esm-sdk && bun run test:mcp && bun run test:version-detection && bun run test:platform-paths && bun run test:payload-split && bun run test:manifest-path-encoding && bun run test:macos-signing && bun run test:asc-key-protocol && bun run test:apple-api-import-helpers && bun run test:bundle-id-detector && bun run test:apple-api-app-list && bun run test:app-verification && bun run test:pbxproj-parser && bun run test:ai-log-capture && bun run test:ai-analyze-flow && bun run test:ai-sse-parser && bun run test:ai-render-markdown && bun run test:ai-stream-markdown && bun run test:ai-onboarding-mode && bun run test:ai-fit && bun run test:platform-layout && bun run test:frame-fit && bun run test:onboarding-min-size && bun run test:min-size-gate && bun run test:shell-size-gate && bun run test:build-log-sanitize && bun run test:build-output-viewport && bun run test:diff-viewer-viewport && bun run test:build-complete-exit && bun run test:ai-analyze-stream && bun run test:support-mailto && bun run test:support-redact && bun run test:support-internal-log && bun run test:support-help-menu && bun run test:support-contact && bun run test:support-bundle-files && bun run test:self-update && bun run test:update-prompt && bun run test:apple-api-cert-create && bun run test:android-tail-engine && bun run test:android-tail-render && bun run test:android-tail-routing && bun run test:dev-gate-stripped && bun run test:frame-fit-ios-shared && bun run test:ios-confirm-app-id && bun run test:ios-create-new && bun run test:ios-e2e && bun run test:ios-flow-contract && bun run test:ios-import-discovery && bun run test:ios-import-export && bun run test:ios-import-pickers && bun run test:ios-import-recovery && bun run test:ios-recovery && bun run test:ios-resume && bun run test:ios-tail-handoff && bun run test:ios-tui-render && bun run test:p8-error && bun run test:ios-tui-routing && bun run test:ios-updater-sync-validation && bun run test:ios-verify-app && bun run test:platform-flow-contract && bun run test:tail-engine-shared","test:build-platform-selection":"bun test/test-build-platform-selection.mjs","test:ai-log-capture":"bun test/test-ai-log-capture.mjs","test:ai-analyze-flow":"bun test/test-ai-analyze-flow.mjs","test:ai-analyze-stream":"bun test/test-ai-analyze-stream.mjs","test:ai-sse-parser":"bun test/test-ai-sse-parser.mjs","test:ai-render-markdown":"bun test/test-ai-render-markdown.mjs","test:ai-onboarding-mode":"bun test/test-ai-onboarding-mode.mjs","test:ai-fit":"bun test/test-ai-fit.mjs","test:platform-layout":"bun test/test-platform-layout.mjs","test:frame-fit":"bun test/run-frame-fit.mjs","test:onboarding-min-size":"bun test/test-onboarding-min-size.mjs","test:min-size-gate":"bun test/test-min-size-gate.mjs","test:shell-size-gate":"bun test/test-shell-size-gate.mjs","test:build-log-sanitize":"bun test/test-build-log-sanitize.mjs","test:build-output-viewport":"bun test/test-build-output-viewport.mjs","test:diff-viewer-viewport":"bun test/test-diff-viewer-viewport.mjs","test:build-complete-exit":"bun test/test-build-complete-exit.mjs","test:ai-stream-markdown":"bun test/test-ai-stream-markdown.mjs","test:support-mailto":"bun test/test-support-mailto.mjs","test:support-redact":"bun test/test-support-redact.mjs","test:support-internal-log":"bun test/test-support-internal-log.mjs","test:support-help-menu":"bun test/test-support-help-menu.mjs","test:support-contact":"bun test/test-support-contact.mjs","test:support-bundle-files":"bun test/test-support-bundle-files.mjs"},dependencies:{"@inkjs/ui":"^2.0.0",ink:"^7.0.4","ink-spinner":"^5.0.0",jsonwebtoken:"^9.0.3","node-forge":"^1.4.0",qrcode:"^1.5.4",react:"^19.2.6","string-width":"^8.2.1"},optionalDependencies:{"@capgo/cli-helper-darwin-arm64":"^1.1.1","@capgo/cli-helper-darwin-x64":"^1.1.1"},devDependencies:{"@antfu/eslint-config":"^9.0.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.6","@capacitor/cli":"^8.3.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^1.4.0","@modelcontextprotocol/sdk":"^1.29.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.8","@supabase/supabase-js":"^2.106.2","@tanstack/intent":"^0.0.41","@types/adm-zip":"^0.5.8","@types/jsonwebtoken":"^9.0.10","@types/node":"^25.9.1","@types/node-forge":"^1.3.14","@types/prettyjson":"^0.0.33","@types/qrcode":"^1.5.6","@types/react":"^19.2.15","@types/tmp":"^0.2.6","@types/ws":"^8.18.1","@typescript/native-preview":"7.0.0-dev.20260526.1","@vercel/ncc":"^0.38.4","@xterm/headless":"^6.0.0","adm-zip":"^0.5.17","ci-info":"^4.4.0",commander:"^14.0.3",eslint:"^10.4.0","git-format-staged":"4.0.1",husky:"^9.1.7","is-wsl":"^3.1.1",micromatch:"^4.0.8",open:"^11.0.0",oxlint:"^1.67.0",partysocket:"^1.1.19",prettyjson:"^1.2.5",tmp:"^0.2.6","tus-js-client":"^4.3.1",typescript:"^6.0.3",ws:"^8.21.0",zod:"^4.4.3"}}});function BpA(A){if(A&&typeof A==="object"&&"status"in A){let Q=A.status;if(typeof Q==="number")return Q}return}function $pA(A){if(A instanceof Error)return A.message;if(typeof A==="string")return A;return""}function UZ(A){if(A&&typeof A==="object"&&"code"in A){let $=A.code;if(typeof $==="string"&&$.startsWith("commander."))return"commander"}let Q=BpA(A);if(Q!==void 0){if(Q===401)return"unauthorized";if(Q===403)return"forbidden";if(Q===404)return"not_found";if(Q===413)return"payload_too_large";if(Q>=500)return"server_error"}let B=$pA(A).toLowerCase();if(/econnrefused|enotfound|fetch failed|network|socket|dns/.test(B))return"network_error";if(/timed out|timeout|etimedout|aborted/.test(B))return"timeout";if(/invalid|must be|required|not allowed|malformed|validation/.test(B))return"validation_error";return"unknown"}function A$A(A){if(A===401)return"unauthorized";if(A===403)return"forbidden";if(A===404)return"not_found";if(A===408||A===504)return"timeout";if(A===413)return"payload_too_large";if(A===429)return"rate_limited";if(A===400||A===422)return"validation_error";if(A>=500)return"server_error";return"unknown"}import{AsyncLocalStorage as IpA}from"node:async_hooks";function XZ(A,Q){return B$A.run(A,()=>Promise.resolve(Q()))}function EpA(){return B$A.getStore()}function HZ(){$$A=!0}function I$A(){return $$A}function G$A(A){E$A=A}function Q$A(A){try{E$A?.(A)}catch{}}function D$A(A,Q){let B;try{B=new URL(A).pathname}catch{B=A.split("?")[0]}let $="/functions/v1/",I=B.indexOf($);if(I>=0){let X=B.slice(I+$.length).replace(/^\/+|\/+$/g,"");return X?`${Q} functions:${X}`:`${Q} functions`}let E="/rest/v1/",G=B.indexOf(E),J=G>=0?B.slice(G+E.length):B.replace(/^\//,"");if(J.startsWith("rpc/"))return`rpc:${J.slice(4).split("/")[0]}`;let Y=J.split("/")[0]||B;return`${Q} ${Y}`}function GpA(A){let Q=A?.headers;if(!Q)return;let B=Q.get;if(typeof B==="function")return B.call(Q,"capgkey")??void 0;if(Array.isArray(Q))return Q.find(([$])=>$.toLowerCase()==="capgkey")?.[1];return Q.capgkey}function Y$A(){return async(Q,B)=>{let $=(B?.method??"GET").toUpperCase(),I=typeof Q==="string"?Q:Q instanceof URL?Q.href:Q.url,E=EpA(),G=GpA(B),J=Date.now();try{let Y=await globalThis.fetch(Q,B);return Q$A({url:I,method:$,status:Y.status,ok:Y.ok,durationMs:Date.now()-J,source:E,apikey:G}),Y}catch(Y){throw Q$A({url:I,method:$,status:0,ok:!1,durationMs:Date.now()-J,source:E,apikey:G,error:Y}),Y}}}var B$A,$$A=!1,E$A,J$A=5000;var FZ=_A(()=>{B$A=new IpA});var U$A=b((ziQ,JpA)=>{JpA.exports=[{name:"Agola CI",constant:"AGOLA",env:"AGOLA_GIT_REF",pr:"AGOLA_PULL_REQUEST_ID"},{name:"Alpic",constant:"ALPIC",env:"ALPIC_HOST"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE",pr:{env:"AC_GIT_PR",ne:"false"}},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN",pr:{env:"CODEBUILD_WEBHOOK_EVENT",any:["PULL_REQUEST_CREATED","PULL_REQUEST_UPDATED","PULL_REQUEST_REOPENED"]}},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"TF_BUILD",pr:{BUILD_REASON:"PullRequest"}},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Cloudflare Pages",constant:"CLOUDFLARE_PAGES",env:"CF_PAGES"},{name:"Cloudflare Workers",constant:"CLOUDFLARE_WORKERS",env:"WORKERS_CI"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Earthly",constant:"EARTHLY",env:"EARTHLY_CI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"Gitea Actions",constant:"GITEA_ACTIONS",env:"GITEA_ACTIONS"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Prow",constant:"PROW",env:"PROW_JOB_ID"},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Sourcehut",constant:"SOURCEHUT",env:{CI_NAME:"sourcehut"}},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vela",constant:"VELA",env:"VELA",pr:{VELA_PULL_REQUEST:"1"}},{name:"Vercel",constant:"VERCEL",env:{any:["NOW_BUILDER","VERCEL"]},pr:"VERCEL_GIT_PULL_REQUEST_ID"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var uf=b((ff)=>{var X$A=U$A(),_4=process.env;Object.defineProperty(ff,"_vendors",{value:X$A.map(function(A){return A.constant})});ff.name=null;ff.isPR=null;ff.id=null;if(_4.CI!=="false")X$A.forEach(function(A){let B=(Array.isArray(A.env)?A.env:[A.env]).every(function($){return H$A($)});if(ff[A.constant]=B,!B)return;ff.name=A.name,ff.isPR=DpA(A),ff.id=A.constant});ff.isCI=!!(_4.CI!=="false"&&(_4.BUILD_ID||_4.BUILD_NUMBER||_4.CI||_4.CI_APP_ID||_4.CI_BUILD_ID||_4.CI_BUILD_NUMBER||_4.CI_NAME||_4.CONTINUOUS_INTEGRATION||_4.RUN_ID||ff.name||!1));function H$A(A){if(typeof A==="string")return!!_4[A];if("env"in A)return _4[A.env]&&_4[A.env].includes(A.includes);if("any"in A)return A.any.some(function(Q){return!!_4[Q]});return Object.keys(A).every(function(Q){return _4[Q]===A[Q]})}function DpA(A){switch(typeof A.pr){case"string":return!!_4[A.pr];case"object":if("env"in A.pr)if("any"in A.pr)return A.pr.any.some(function(Q){return _4[A.pr.env]===Q});else return A.pr.env in _4&&_4[A.pr.env]!==A.pr.ne;else if("any"in A.pr)return A.pr.any.some(function(Q){return!!_4[Q]});else return H$A(A.pr);default:return null}}});import{homedir as C$A,platform as UpA,release as XpA}from"node:os";import{arch as HpA,cwd as K$A,env as bU,version as FpA}from"node:process";function WZ(A){return A==="1"||A?.toLowerCase()==="true"||A?.toLowerCase()==="yes"}function qpA(){if(WZ(bU.CAPGO_DISABLE_TELEMETRY)||WZ(bU.CAPGO_DISABLE_POSTHOG))return;return bU.CAPGO_CLI_POSTHOG_API_KEY?.trim()||bU.POSTHOG_API_KEY?.trim()||CpA}function ZpA(A){let Q=A.replace(/\/+$/,"");if(Q.endsWith("/i/v0/e"))return`${Q}/`;let B=Q.replace(/\/capture$/,"/");return new URL("i/v0/e/",B.endsWith("/")?B:`${B}/`).toString()}function MpA(A){if(A instanceof Error)return{cause:A.cause,message:A.message,name:A.name||"Error",stack:A.stack};if(typeof A==="string")return{message:A,name:"Error",stack:void 0};try{return{message:JSON.stringify(A)??String(A),name:"Error",stack:void 0}}catch{return{message:String(A),name:"Error",stack:void 0}}}function zpA(A){let Q=A,B=K$A(),$=C$A();if(B)Q=Q.replaceAll(B,"<cwd>");if($)Q=Q.replaceAll($,"~");return Q}function NpA(A){let Q=A,B=K$A(),$=C$A();if(B)Q=Q.replaceAll(B,"<cwd>");if($)Q=Q.replaceAll($,"~");return Q.replace(/<cwd>\/[^\s"',)]+/g,"<cwd>/<path>").replace(/~\/[^\s"',)]+/g,"~/<path>").replace(/[\w.%+-]+@[\w.-]+\.[A-Z]{2,}/gi,"<email>").replace(/(https?:\/\/)([^/\s:@]+):([^/\s@]+)@/gi,"$1<redacted>@").replace(/\b[a-z][\w-]*(?:\.[\w-]+){2,}\b/gi,"<app_id>").replace(/\b[a-z]:\\[^\s"',)]+/gi,"<path>").replace(/(^|[\s"'(])\/[^\s"',)]+/g,"$1<path>").replace(/(--(?:token|api[-_]?key|key|password|secret|private[-_]?key|jwt|session|auth)(?:=|\s+))("[^"]+"|'[^']+'|\S+)/gi,"$1<redacted>").replace(/\b((?:token|api[-_]?key|password|secret|authorization)\s*[:=]\s*)[^\s,;]+/gi,"$1<redacted>")}function LpA(A,Q){let B=A?.split(`
95
95
  `).slice(1).map(($)=>{let I=$.trim(),E=I.startsWith("at ")?I.slice(3):I,G=Q,J=E,Y=E.lastIndexOf(" (");if(Y!==-1&&E.endsWith(")"))G=E.slice(0,Y).trim()||Q,J=E.slice(Y+2,-1);else{let F=E.lastIndexOf(" "),C=F===-1?"":E.slice(F+1);if(/:\d+:\d+$/.test(C))G=E.slice(0,F).trim()||Q,J=C}let X=J.lastIndexOf(":"),H=X===-1?-1:J.lastIndexOf(":",X-1);if(X===-1||H===-1)return{function:Q,platform:"custom",lang:"javascript"};return{function:G,filename:zpA(J.slice(0,H)),lineno:Number.parseInt(J.slice(H+1,X),10),colno:Number.parseInt(J.slice(X+1),10),platform:"custom",lang:"javascript"}}).filter(Boolean);return B&&B.length>0?B:[{function:Q,platform:"custom",lang:"javascript"}]}function wpA(A){if(!A||typeof A!=="object"||!("code"in A))return;let{code:Q}=A;return typeof Q==="string"?Q:void 0}function q$A(A){return!wpA(A)?.startsWith("commander.")}function mf(A){let Q=[],B=A;while(B?.parent){let $=B.name();if($)Q.push($);B=B.parent}return Q.reverse().join(" ")||"unknown"}async function cf(A){let Q=qpA();if(!Q)return!1;let B=bU.CAPGO_CLI_POSTHOG_API_HOST?.trim()||bU.POSTHOG_API_HOST?.trim()||WpA,$;try{$=ZpA(B)}catch{return!1}let I=MpA(A.error),E=NpA(I.message),G=`cli:${i8.version}:${A.functionName}`,J=LpA(I.stack,A.functionName),Y=J[0],X=[G,A.kind,I.name||"Error",Y?.function||A.functionName,Y&&"filename"in Y?Y.filename:"unknown",String(A.status??1)].join(":"),H={token:Q,event:"$exception",properties:{distinct_id:G,$exception_list:[{type:I.name||"Error",value:E,mechanism:{handled:!0,synthetic:!1},stacktrace:{type:"raw",frames:J}}],$exception_fingerprint:X,architecture:HpA,cli_version:i8.version,error_kind:A.kind,function_name:A.functionName,is_ci:Boolean(bU.CI),node_version:FpA,os_platform:UpA(),os_release:XpA(),runtime:"cli",status:A.status},timestamp:new Date().toISOString()};try{let F=new AbortController,C=setTimeout(()=>F.abort(),KpA);try{return(await fetch($,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(H),signal:F.signal})).ok}finally{clearTimeout(C)}}catch{return!1}}var WpA="https://eu.i.posthog.com/i/v0/e/",CpA="phc_NXDyDajQaTQVwb25DEhIVZfxVUn4R0Y348Z7vWYHZUi",KpA=1500;var lf=_A(()=>{$9()});import{existsSync as _6}from"fs";var CZ=(A=".",Q="unknown")=>{let B=`${A}/bun.lockb`,$=`${A}/bun.lock`,I=`${A}/pnpm-lock.yaml`,E=`${A}/shrinkwrap.yaml`,G=`${A}/yarn.lock`,J=`${A}/package-lock.json`,Y=`${A}/npm-shrinkwrap.json`;if(_6(B)||_6($))return"bun";if(_6(I)||_6(E))return"pnpm";if(_6(G))return"yarn";if(_6(J)||_6(Y))return"npm";return Q},dO=(A=CZ(),Q=!1)=>{switch(A){case"bun":return Q?"bun install":"install";case"pnpm":return Q?"pnpm install":"install";case"yarn":return Q?"yarn install":"install";case"npm":return Q?"npm install":"install";case"unknown":return Q?"unknown unknown":"unknown";default:return Q?"npm install":"install"}},Z$A=(A=".",Q="npx")=>{let B=`${A}/bun.lockb`,$=`${A}/bun.lock`,I=`${A}/pnpm-lock.yaml`,E=`${A}/shrinkwrap.yaml`,G=`${A}/yarn.lock`,J=`${A}/package-lock.json`,Y=`${A}/npm-shrinkwrap.json`;if(_6(B)||_6($))return"bunx";if(_6(I)||_6(E))return"pnpm exec";if(_6(G))return"yarn dlx";if(_6(J)||_6(Y))return"npx";return Q};var M$A=()=>{};function pO(A,Q){if(isNaN(A)||isNaN(Q))throw Error("Cannot compare against non-numbers");return A===Q?0:A<Q?-1:1}function L$A(A=[],Q=[]){if(A.length&&!Q.length)return-1;if(!A.length&&Q.length)return 1;return 0}function nO(A=[],Q=[]){let B=Math.max(A.length,Q.length);for(let $=0;$<B;$++){let I=A[$],E=Q[$];if(I===void 0&&E===void 0)return 0;if(E===void 0)return 1;if(I===void 0)return-1;if(typeof I==="string"&&typeof E==="number")return 1;if(typeof I==="number"&&typeof E==="string")return-1;if(I<E)return-1;if(I>E)return 1}return 0}function pf(A){return typeof A==="number"&&!Number.isNaN(A)&&(!Number.isFinite(A)||0<=A&&A<=Number.MAX_SAFE_INTEGER)}function k6(A){return A.split(".").filter(Boolean).map((Q)=>{if(jpA.test(Q)){let B=Number(Q);if(pf(B))return B}return Q})}function I9(A){return A.split(".").filter(Boolean)}function rO(A,Q){let B=Number(A);if(!pf(B))throw TypeError(Q);return B}function kD(A){return Number.isNaN(A.major)&&Number.isNaN(A.minor)&&Number.isNaN(A.patch)&&(A.prerelease===void 0||A.prerelease.length===0)&&(A.build===void 0||A.build.length===0)}var h3="0|[1-9]\\d*",OpA="\\d*[a-zA-Z-][a-zA-Z0-9-]*",RpA,z$A,w$A,N$A="[0-9A-Za-z-]+",O$A,R$A,V$A,j$A="(?:<|>)?=?",VpA="x|X|\\*",df,iO,T$A,S$A,nf=256,jpA;var ME=_A(()=>{RpA=`(?<major>${h3})\\.(?<minor>${h3})\\.(?<patch>${h3})`,z$A=`(?:${h3}|${OpA})`,w$A=`(?:-(?<prerelease>${z$A}(?:\\.${z$A})*))`,O$A=`(?:\\+(?<buildmetadata>${N$A}(?:\\.${N$A})*))`,R$A=`v?${RpA}${w$A}?${O$A}?`,V$A=new RegExp(`^${R$A}$`),df=`${h3}|${VpA}`,iO=`[v=\\s]*(?<major>${df})(?:\\.(?<minor>${df})(?:\\.(?<patch>${df})${w$A}?${O$A}?)?)?`,T$A=new RegExp(`^(?<operator>~>?|\\^|${j$A})\\s*${iO}$`),S$A=new RegExp(`^(?<operator>${j$A})\\s*(${R$A})$|^$`);jpA=new RegExp(`^${h3}$`)});function iI(A,Q){if(A===Q)return 0;return pO(A.major,Q.major)||pO(A.minor,Q.minor)||pO(A.patch,Q.patch)||L$A(A.prerelease,Q.prerelease)||nO(A.prerelease,Q.prerelease)}var eE=_A(()=>{ME()});function P$A(A,Q){let B=A.prerelease?.length||Q.prerelease?.length;if(A.major!==Q.major)return B?"premajor":"major";if(A.minor!==Q.minor)return B?"preminor":"minor";if(A.patch!==Q.patch)return B?"prepatch":"patch";if(nO(A.prerelease,Q.prerelease)!==0)return"prerelease"}var _$A=_A(()=>{ME()});function rf(A){return A.toFixed(0)}function o$(A){let Q=rf(A.major),B=rf(A.minor),$=rf(A.patch),I=A.prerelease?.join(".")??"",E=A.build?.join(".")??"";return[[`${Q}.${B}.${$}`,I].filter((Y)=>Y).join("-"),E].filter((Y)=>Y).join("+")}function TpA(A,Q){if(kD(Q))return!0;let B=iI(A,Q);switch(Q.operator){case"=":case void 0:return B===0;case"!=":return B!==0;case">":return B>0;case"<":return B<0;case">=":return B>=0;case"<=":return B<=0}}function oO(A,Q){for(let B of Q)if(!TpA(A,B))return!1;if(!A.prerelease?.length)return!0;for(let B of Q){if(kD(B))continue;if(!B.prerelease?.length)continue;let{major:$,minor:I,patch:E}=B;if(A.major===$&&A.minor===I&&A.patch===E)return!0}return!1}var aO=_A(()=>{ME();eE()});function KZ(A,Q){return Q.some((B)=>oO(A,B))}var qZ=_A(()=>{aO()});function SpA(A=[]){let Q=[...A],B=Q.length;while(B>=0){let $=Q[B];if(typeof $==="number"){Q[B]=$+1;break}B-=1}if(B===-1)Q.push(0);return Q}function ZZ(A=[],Q){let B=SpA(A);if(!Q)return B;let $=k6(Q);if($.every((I)=>typeof I==="string")){if($.every((I,E)=>I===B[E])&&typeof B[$.length]==="number")return B;$=[...$,0]}return $}function E5(A,Q,B={}){let $=B.build!==void 0?I9(B.build):A.build??[];switch(Q){case"premajor":return{major:A.major+1,minor:0,patch:0,prerelease:ZZ(A.prerelease,B.prerelease),build:$};case"preminor":return{major:A.major,minor:A.minor+1,patch:0,prerelease:ZZ(A.prerelease,B.prerelease),build:$};case"prepatch":return{major:A.major,minor:A.minor,patch:A.patch+1,prerelease:ZZ(A.prerelease,B.prerelease),build:$};case"prerelease":{let E=(A.prerelease??[]).length===0?A.patch+1:A.patch;return{major:A.major,minor:A.minor,patch:E,prerelease:ZZ(A.prerelease,B.prerelease),build:$}}case"major":return{major:(A.prerelease??[]).length===0||A.minor!==0||A.patch!==0?A.major+1:A.major,minor:0,patch:0,prerelease:[],build:$};case"minor":{let E=(A.prerelease??[]).length===0||A.patch!==0?A.minor+1:A.minor;return{major:A.major,minor:E,patch:0,prerelease:[],build:$}}case"patch":{let E=(A.prerelease??[]).length===0?A.patch+1:A.patch;return{major:A.major,minor:A.minor,patch:E,prerelease:[],build:$}}case"pre":return{major:A.major,minor:A.minor,patch:A.patch,prerelease:ZZ(A.prerelease,B.prerelease),build:$};default:throw TypeError(`Cannot increment version: invalid argument ${Q}`)}}var k$A=_A(()=>{ME()});var sO,u3;var MZ=_A(()=>{sO={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},u3={operator:void 0,...sO}});var of=_A(()=>{MZ();ME()});function af(A,Q){return iI(A,Q)>0}var sf=_A(()=>{eE()});var v$A=_A(()=>{qZ();sf()});function zE(A,Q){return iI(A,Q)<0}var tf=_A(()=>{eE()});var x$A=_A(()=>{qZ();tf()});function PpA(A){let B=A.match(S$A)?.groups;if(!B)return null;let{operator:$}=B;return{operator:$||void 0,...sO}}function M8(A){return!A||A.toLowerCase()==="x"||A==="*"}function _pA(A){if(M8(A.major))return;if(M8(A.minor))return{operator:">=",major:+A.major,minor:0,patch:0,prerelease:[],build:[]};if(M8(A.patch))return{operator:">=",major:+A.major,minor:+A.minor,patch:0,prerelease:[],build:[]};return{operator:">=",major:+A.major,minor:+A.minor,patch:+A.patch,prerelease:A.prerelease?k6(A.prerelease):[],build:[]}}function kpA(A){if(M8(A.major))return;if(M8(A.minor))return{operator:"<",major:+A.major+1,minor:0,patch:0,prerelease:[],build:[]};if(M8(A.patch))return{operator:"<",major:+A.major,minor:+A.minor+1,patch:0,prerelease:[],build:[]};if(A.prerelease)return{operator:"<=",major:+A.major,minor:+A.minor,patch:+A.patch,prerelease:k6(A.prerelease),build:[]};return{operator:"<=",major:+A.major,minor:+A.minor,patch:+A.patch,prerelease:[],build:[]}}function vpA(A){let Q=A.match(new RegExp(`^${iO}`)),B=Q?.groups;if(!B)return null;let $=Q[0].length,I=A.slice($).match(/^\s+-\s+/);if(!I)return null;let E=I[0].length,J=A.slice($+E).match(new RegExp(`^${iO}\\s*$`))?.groups,Y=_pA(B),X=kpA(J);return[Y,X].filter(Boolean)}function xpA(A){let Q=M8(A.major),B=M8(A.minor),$=M8(A.patch),I=+A.major,E=+A.minor,G=+A.patch;if(Q)return[u3];if(B)return[{operator:">=",major:I,minor:0,patch:0},{operator:"<",major:I+1,minor:0,patch:0}];if($){if(I===0)return[{operator:">=",major:I,minor:E,patch:0},{operator:"<",major:I,minor:E+1,patch:0}];return[{operator:">=",major:I,minor:E,patch:0},{operator:"<",major:I+1,minor:0,patch:0}]}let J=k6(A.prerelease??"");if(I===0){if(E===0)return[{operator:">=",major:I,minor:E,patch:G,prerelease:J},{operator:"<",major:I,minor:E,patch:G+1}];return[{operator:">=",major:I,minor:E,patch:G,prerelease:J},{operator:"<",major:I,minor:E+1,patch:0}]}return[{operator:">=",major:I,minor:E,patch:G,prerelease:J},{operator:"<",major:I+1,minor:0,patch:0}]}function bpA(A){let Q=M8(A.major),B=M8(A.minor),$=M8(A.patch),I=+A.major,E=+A.minor,G=+A.patch;if(Q)return[u3];if(B)return[{operator:">=",major:I,minor:0,patch:0},{operator:"<",major:I+1,minor:0,patch:0}];if($)return[{operator:">=",major:I,minor:E,patch:0},{operator:"<",major:I,minor:E+1,patch:0}];let J=k6(A.prerelease??"");return[{operator:">=",major:I,minor:E,patch:G,prerelease:J},{operator:"<",major:I,minor:E+1,patch:0}]}function gpA(A){let Q=M8(A.major),B=M8(A.minor),$=M8(A.patch),I=+A.major,E=+A.minor,G=+A.patch;if(Q)return[{operator:"<",major:0,minor:0,patch:0}];if(B){if($)return[{operator:"<",major:I,minor:0,patch:0}];return[{operator:"<",major:I,minor:0,patch:0}]}if($)return[{operator:"<",major:I,minor:E,patch:0}];let J=k6(A.prerelease??""),Y=I9(A.build??"");return[{operator:"<",major:I,minor:E,patch:G,prerelease:J,build:Y}]}function ypA(A){let Q=M8(A.minor),B=M8(A.patch),$=+A.major,I=+A.minor,E=+A.patch;if(Q)return[{operator:"<",major:$+1,minor:0,patch:0}];if(B)return[{operator:"<",major:$,minor:I+1,patch:0}];let G=k6(A.prerelease??""),J=I9(A.build??"");return[{operator:"<=",major:$,minor:I,patch:E,prerelease:G,build:J}]}function fpA(A){let Q=M8(A.major),B=M8(A.minor),$=M8(A.patch),I=+A.major,E=+A.minor,G=+A.patch;if(Q)return[{operator:"<",major:0,minor:0,patch:0}];if(B)return[{operator:">=",major:I+1,minor:0,patch:0}];if($)return[{operator:">=",major:I,minor:E+1,patch:0}];let J=k6(A.prerelease??""),Y=I9(A.build??"");return[{operator:">",major:I,minor:E,patch:G,prerelease:J,build:Y}]}function hpA(A){let Q=M8(A.major),B=M8(A.minor),$=M8(A.patch),I=+A.major,E=+A.minor,G=+A.patch;if(Q)return[u3];if(B)return[{operator:">=",major:I,minor:0,patch:0}];if($)return[{operator:">=",major:I,minor:E,patch:0}];let J=k6(A.prerelease??""),Y=I9(A.build??"");return[{operator:">=",major:I,minor:E,patch:G,prerelease:J,build:Y}]}function upA(A){let Q=M8(A.major),B=M8(A.minor),$=M8(A.patch),I=+A.major,E=+A.minor,G=+A.patch;if(Q)return[u3];if(B)return[{operator:">=",major:I,minor:0,patch:0},{operator:"<",major:I+1,minor:0,patch:0}];if($)return[{operator:">=",major:I,minor:E,patch:0},{operator:"<",major:I,minor:E+1,patch:0}];let J=k6(A.prerelease??""),Y=I9(A.build??"");return[{operator:A.operator==="="?"=":void 0,major:I,minor:E,patch:G,prerelease:J,build:Y}]}function mpA(A){let Q=A.match(T$A)?.groups;if(!Q)return PpA(A);switch(Q.operator){case"^":return xpA(Q);case"~":case"~>":return bpA(Q);case"<":return gpA(Q);case"<=":return ypA(Q);case">":return fpA(Q);case">=":return hpA(Q);default:return upA(Q)}}function cpA(A){return A.split(/\s+/).flatMap(mpA)}function tO(A){let Q=A.replaceAll(/(?<=[<>=~^])(\s+)/g,"").split(/\s*\|\|\s*/).map((B)=>vpA(B)||cpA(B));if(Q.some((B)=>B.includes(null)))throw TypeError(`Cannot parse version range: range "${A}" is invalid`);return Q}var ef=_A(()=>{ME();MZ()});function A0(A){if(typeof A!=="string")throw TypeError(`Cannot parse version as version must be a string: received ${typeof A}`);if(A.length>nf)throw TypeError(`Cannot parse version as version length is too long: length is ${A.length}, max length is ${nf}`);A=A.trim();let Q=A.match(V$A)?.groups;if(!Q)throw TypeError(`Cannot parse version: ${A}`);let B=rO(Q.major,`Cannot parse version ${A}: invalid major version`),$=rO(Q.minor,`Cannot parse version ${A}: invalid minor version`),I=rO(Q.patch,`Cannot parse version ${A}: invalid patch version`),E=Q.prerelease?k6(Q.prerelease):[],G=Q.buildmetadata?I9(Q.buildmetadata):[];return{major:B,minor:$,patch:I,prerelease:E,build:G}}var eO=_A(()=>{ME();ME()});function b$A(A,Q){let B=A.operator,$=Q.operator;if(B===void 0){if(kD(A))return!0;return KZ(A,[[Q]])}if($===void 0){if(kD(Q))return!0;return KZ(Q,[[A]])}let I=iI(A,Q);return(B===">="||B===">")&&($===">="||$===">")||(B==="<="||B==="<")&&($==="<="||$==="<")||I===0&&((B===">="||B==="<=")&&($===">="||$==="<="))||I===-1&&(B===">="||B===">")&&($==="<="||$==="<")||I===1&&(B==="<="||B==="<")&&($===">="||$===">")}function lpA(A){return A.every((Q)=>{return Q.some((B)=>dpA(B))})}function dpA(A){for(let Q=0;Q<A.length-1;Q++){let B=A[Q];for(let $ of A.slice(Q+1))if(!b$A(B,$))return!1}return!0}function g$A(A,Q){return lpA([A,Q])&&A.some((B)=>{return Q.some(($)=>{return B.every((I)=>{return $.every((E)=>b$A(I,E))})})})}var y$A=_A(()=>{ME();eE();qZ()});var f$A=_A(()=>{ef()});var h$A=_A(()=>{MZ();MZ();of()});function zZ(A){try{return A0(A),!0}catch{return!1}}var u$A=_A(()=>{eO()});var m$A=_A(()=>{eO()});var c$A=_A(()=>{ME()});var l$A=_A(()=>{eE()});var d$A=_A(()=>{eE()});var p$A=_A(()=>{aO();ME();eE()});function Ah(A,Q){return iI(A,Q)>=0}var n$A=_A(()=>{eE()});var i$A=_A(()=>{aO();ME();eE()});var r$A=_A(()=>{eE()});var AJ=_A(()=>{eE();_$A();qZ();k$A();of();v$A();x$A();ef();eO();y$A();f$A();h$A();u$A();m$A();c$A();l$A();d$A();sf();p$A();n$A();tf();i$A();r$A()});var v6=b((CoQ,BR)=>{var o$A,a$A,s$A,t$A,e$A,AIA,QIA,BIA,$IA,IIA,EIA,GIA,JIA,AR,Qh,DIA,YIA,UIA,m3,XIA,HIA,FIA,WIA,CIA,KIA,qIA,ZIA,MIA,QR,zIA,NIA,LIA;(function(A){var Q=typeof global==="object"?global:typeof self==="object"?self:typeof this==="object"?this:{};if(typeof define==="function"&&define.amd)define("tslib",["exports"],function($){A(B(Q,B($)))});else if(typeof BR==="object"&&typeof CoQ==="object")A(B(Q,B(CoQ)));else A(B(Q));function B($,I){if($!==Q)if(typeof Object.create==="function")Object.defineProperty($,"__esModule",{value:!0});else $.__esModule=!0;return function(E,G){return $[E]=I?I(E,G):G}}})(function(A){var Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(E,G){E.__proto__=G}||function(E,G){for(var J in G)if(Object.prototype.hasOwnProperty.call(G,J))E[J]=G[J]};o$A=function(E,G){if(typeof G!=="function"&&G!==null)throw TypeError("Class extends value "+String(G)+" is not a constructor or null");Q(E,G);function J(){this.constructor=E}E.prototype=G===null?Object.create(G):(J.prototype=G.prototype,new J)},a$A=Object.assign||function(E){for(var G,J=1,Y=arguments.length;J<Y;J++){G=arguments[J];for(var X in G)if(Object.prototype.hasOwnProperty.call(G,X))E[X]=G[X]}return E},s$A=function(E,G){var J={};for(var Y in E)if(Object.prototype.hasOwnProperty.call(E,Y)&&G.indexOf(Y)<0)J[Y]=E[Y];if(E!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var X=0,Y=Object.getOwnPropertySymbols(E);X<Y.length;X++)if(G.indexOf(Y[X])<0&&Object.prototype.propertyIsEnumerable.call(E,Y[X]))J[Y[X]]=E[Y[X]]}return J},t$A=function(E,G,J,Y){var X=arguments.length,H=X<3?G:Y===null?Y=Object.getOwnPropertyDescriptor(G,J):Y,F;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")H=Reflect.decorate(E,G,J,Y);else for(var C=E.length-1;C>=0;C--)if(F=E[C])H=(X<3?F(H):X>3?F(G,J,H):F(G,J))||H;return X>3&&H&&Object.defineProperty(G,J,H),H},e$A=function(E,G){return function(J,Y){G(J,Y,E)}},AIA=function(E,G,J,Y,X,H){function F(x){if(x!==void 0&&typeof x!=="function")throw TypeError("Function expected");return x}var C=Y.kind,K=C==="getter"?"get":C==="setter"?"set":"value",Z=!G&&E?Y.static?E:E.prototype:null,M=G||(Z?Object.getOwnPropertyDescriptor(Z,Y.name):{}),N,O=!1;for(var j=J.length-1;j>=0;j--){var R={};for(var S in Y)R[S]=S==="access"?{}:Y[S];for(var S in Y.access)R.access[S]=Y.access[S];R.addInitializer=function(x){if(O)throw TypeError("Cannot add initializers after decoration has completed");H.push(F(x||null))};var T=(0,J[j])(C==="accessor"?{get:M.get,set:M.set}:M[K],R);if(C==="accessor"){if(T===void 0)continue;if(T===null||typeof T!=="object")throw TypeError("Object expected");if(N=F(T.get))M.get=N;if(N=F(T.set))M.set=N;if(N=F(T.init))X.unshift(N)}else if(N=F(T))if(C==="field")X.unshift(N);else M[K]=N}if(Z)Object.defineProperty(Z,Y.name,M);O=!0},QIA=function(E,G,J){var Y=arguments.length>2;for(var X=0;X<G.length;X++)J=Y?G[X].call(E,J):G[X].call(E);return Y?J:void 0},BIA=function(E){return typeof E==="symbol"?E:"".concat(E)},$IA=function(E,G,J){if(typeof G==="symbol")G=G.description?"[".concat(G.description,"]"):"";return Object.defineProperty(E,"name",{configurable:!0,value:J?"".concat(J," ",G):G})},IIA=function(E,G){if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(E,G)},EIA=function(E,G,J,Y){function X(H){return H instanceof J?H:new J(function(F){F(H)})}return new(J||(J=Promise))(function(H,F){function C(M){try{Z(Y.next(M))}catch(N){F(N)}}function K(M){try{Z(Y.throw(M))}catch(N){F(N)}}function Z(M){M.done?H(M.value):X(M.value).then(C,K)}Z((Y=Y.apply(E,G||[])).next())})},GIA=function(E,G){var J={label:0,sent:function(){if(H[0]&1)throw H[1];return H[1]},trys:[],ops:[]},Y,X,H,F=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return F.next=C(0),F.throw=C(1),F.return=C(2),typeof Symbol==="function"&&(F[Symbol.iterator]=function(){return this}),F;function C(Z){return function(M){return K([Z,M])}}function K(Z){if(Y)throw TypeError("Generator is already executing.");while(F&&(F=0,Z[0]&&(J=0)),J)try{if(Y=1,X&&(H=Z[0]&2?X.return:Z[0]?X.throw||((H=X.return)&&H.call(X),0):X.next)&&!(H=H.call(X,Z[1])).done)return H;if(X=0,H)Z=[Z[0]&2,H.value];switch(Z[0]){case 0:case 1:H=Z;break;case 4:return J.label++,{value:Z[1],done:!1};case 5:J.label++,X=Z[1],Z=[0];continue;case 7:Z=J.ops.pop(),J.trys.pop();continue;default:if((H=J.trys,!(H=H.length>0&&H[H.length-1]))&&(Z[0]===6||Z[0]===2)){J=0;continue}if(Z[0]===3&&(!H||Z[1]>H[0]&&Z[1]<H[3])){J.label=Z[1];break}if(Z[0]===6&&J.label<H[1]){J.label=H[1],H=Z;break}if(H&&J.label<H[2]){J.label=H[2],J.ops.push(Z);break}if(H[2])J.ops.pop();J.trys.pop();continue}Z=G.call(E,J)}catch(M){Z=[6,M],X=0}finally{Y=H=0}if(Z[0]&5)throw Z[1];return{value:Z[0]?Z[1]:void 0,done:!0}}},JIA=function(E,G){for(var J in E)if(J!=="default"&&!Object.prototype.hasOwnProperty.call(G,J))QR(G,E,J)},QR=Object.create?function(E,G,J,Y){if(Y===void 0)Y=J;var X=Object.getOwnPropertyDescriptor(G,J);if(!X||("get"in X?!G.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return G[J]}};Object.defineProperty(E,Y,X)}:function(E,G,J,Y){if(Y===void 0)Y=J;E[Y]=G[J]},AR=function(E){var G=typeof Symbol==="function"&&Symbol.iterator,J=G&&E[G],Y=0;if(J)return J.call(E);if(E&&typeof E.length==="number")return{next:function(){if(E&&Y>=E.length)E=void 0;return{value:E&&E[Y++],done:!E}}};throw TypeError(G?"Object is not iterable.":"Symbol.iterator is not defined.")},Qh=function(E,G){var J=typeof Symbol==="function"&&E[Symbol.iterator];if(!J)return E;var Y=J.call(E),X,H=[],F;try{while((G===void 0||G-- >0)&&!(X=Y.next()).done)H.push(X.value)}catch(C){F={error:C}}finally{try{if(X&&!X.done&&(J=Y.return))J.call(Y)}finally{if(F)throw F.error}}return H},DIA=function(){for(var E=[],G=0;G<arguments.length;G++)E=E.concat(Qh(arguments[G]));return E},YIA=function(){for(var E=0,G=0,J=arguments.length;G<J;G++)E+=arguments[G].length;for(var Y=Array(E),X=0,G=0;G<J;G++)for(var H=arguments[G],F=0,C=H.length;F<C;F++,X++)Y[X]=H[F];return Y},UIA=function(E,G,J){if(J||arguments.length===2){for(var Y=0,X=G.length,H;Y<X;Y++)if(H||!(Y in G)){if(!H)H=Array.prototype.slice.call(G,0,Y);H[Y]=G[Y]}}return E.concat(H||Array.prototype.slice.call(G))},m3=function(E){return this instanceof m3?(this.v=E,this):new m3(E)},XIA=function(E,G,J){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var Y=J.apply(E,G||[]),X,H=[];return X=Object.create((typeof AsyncIterator==="function"?AsyncIterator:Object).prototype),C("next"),C("throw"),C("return",F),X[Symbol.asyncIterator]=function(){return this},X;function F(j){return function(R){return Promise.resolve(R).then(j,N)}}function C(j,R){if(Y[j]){if(X[j]=function(S){return new Promise(function(T,x){H.push([j,S,T,x])>1||K(j,S)})},R)X[j]=R(X[j])}}function K(j,R){try{Z(Y[j](R))}catch(S){O(H[0][3],S)}}function Z(j){j.value instanceof m3?Promise.resolve(j.value.v).then(M,N):O(H[0][2],j)}function M(j){K("next",j)}function N(j){K("throw",j)}function O(j,R){if(j(R),H.shift(),H.length)K(H[0][0],H[0][1])}},HIA=function(E){var G,J;return G={},Y("next"),Y("throw",function(X){throw X}),Y("return"),G[Symbol.iterator]=function(){return this},G;function Y(X,H){G[X]=E[X]?function(F){return(J=!J)?{value:m3(E[X](F)),done:!1}:H?H(F):F}:H}},FIA=function(E){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var G=E[Symbol.asyncIterator],J;return G?G.call(E):(E=typeof AR==="function"?AR(E):E[Symbol.iterator](),J={},Y("next"),Y("throw"),Y("return"),J[Symbol.asyncIterator]=function(){return this},J);function Y(H){J[H]=E[H]&&function(F){return new Promise(function(C,K){F=E[H](F),X(C,K,F.done,F.value)})}}function X(H,F,C,K){Promise.resolve(K).then(function(Z){H({value:Z,done:C})},F)}},WIA=function(E,G){if(Object.defineProperty)Object.defineProperty(E,"raw",{value:G});else E.raw=G;return E};var B=Object.create?function(E,G){Object.defineProperty(E,"default",{enumerable:!0,value:G})}:function(E,G){E.default=G},$=function(E){return $=Object.getOwnPropertyNames||function(G){var J=[];for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[J.length]=Y;return J},$(E)};CIA=function(E){if(E&&E.__esModule)return E;var G={};if(E!=null){for(var J=$(E),Y=0;Y<J.length;Y++)if(J[Y]!=="default")QR(G,E,J[Y])}return B(G,E),G},KIA=function(E){return E&&E.__esModule?E:{default:E}},qIA=function(E,G,J,Y){if(J==="a"&&!Y)throw TypeError("Private accessor was defined without a getter");if(typeof G==="function"?E!==G||!Y:!G.has(E))throw TypeError("Cannot read private member from an object whose class did not declare it");return J==="m"?Y:J==="a"?Y.call(E):Y?Y.value:G.get(E)},ZIA=function(E,G,J,Y,X){if(Y==="m")throw TypeError("Private method is not writable");if(Y==="a"&&!X)throw TypeError("Private accessor was defined without a setter");if(typeof G==="function"?E!==G||!X:!G.has(E))throw TypeError("Cannot write private member to an object whose class did not declare it");return Y==="a"?X.call(E,J):X?X.value=J:G.set(E,J),J},MIA=function(E,G){if(G===null||typeof G!=="object"&&typeof G!=="function")throw TypeError("Cannot use 'in' operator on non-object");return typeof E==="function"?G===E:E.has(G)},zIA=function(E,G,J){if(G!==null&&G!==void 0){if(typeof G!=="object"&&typeof G!=="function")throw TypeError("Object expected.");var Y,X;if(J){if(!Symbol.asyncDispose)throw TypeError("Symbol.asyncDispose is not defined.");Y=G[Symbol.asyncDispose]}if(Y===void 0){if(!Symbol.dispose)throw TypeError("Symbol.dispose is not defined.");if(Y=G[Symbol.dispose],J)X=Y}if(typeof Y!=="function")throw TypeError("Object not disposable.");if(X)Y=function(){try{X.call(this)}catch(H){return Promise.reject(H)}};E.stack.push({value:G,dispose:Y,async:J})}else if(J)E.stack.push({async:!0});return G};var I=typeof SuppressedError==="function"?SuppressedError:function(E,G,J){var Y=Error(J);return Y.name="SuppressedError",Y.error=E,Y.suppressed=G,Y};NIA=function(E){function G(H){E.error=E.hasError?new I(H,E.error,"An error was suppressed during disposal."):H,E.hasError=!0}var J,Y=0;function X(){while(J=E.stack.pop())try{if(!J.async&&Y===1)return Y=0,E.stack.push(J),Promise.resolve().then(X);if(J.dispose){var H=J.dispose.call(J.value);if(J.async)return Y|=2,Promise.resolve(H).then(X,function(F){return G(F),X()})}else Y|=1}catch(F){G(F)}if(Y===1)return E.hasError?Promise.reject(E.error):Promise.resolve();if(E.hasError)throw E.error}return X()},LIA=function(E,G){if(typeof E==="string"&&/^\.\.?\//.test(E))return E.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(J,Y,X,H,F){return Y?G?".jsx":".js":X&&(!H||!F)?J:X+H+"."+F.toLowerCase()+"js"});return E},A("__extends",o$A),A("__assign",a$A),A("__rest",s$A),A("__decorate",t$A),A("__param",e$A),A("__esDecorate",AIA),A("__runInitializers",QIA),A("__propKey",BIA),A("__setFunctionName",$IA),A("__metadata",IIA),A("__awaiter",EIA),A("__generator",GIA),A("__exportStar",JIA),A("__createBinding",QR),A("__values",AR),A("__read",Qh),A("__spread",DIA),A("__spreadArrays",YIA),A("__spreadArray",UIA),A("__await",m3),A("__asyncGenerator",XIA),A("__asyncDelegator",HIA),A("__asyncValues",FIA),A("__makeTemplateObject",WIA),A("__importStar",CIA),A("__importDefault",KIA),A("__classPrivateFieldGet",qIA),A("__classPrivateFieldSet",ZIA),A("__classPrivateFieldIn",MIA),A("__addDisposableResource",zIA),A("__disposeResources",NIA),A("__rewriteRelativeImportExtension",LIA)})});var RIA=b((wIA)=>{Object.defineProperty(wIA,"__esModule",{value:!0});wIA.resolveFetch=void 0;var ppA=(A)=>{if(A)return(...Q)=>A(...Q);return(...Q)=>fetch(...Q)};wIA.resolveFetch=ppA});var Bh=b((PIA)=>{Object.defineProperty(PIA,"__esModule",{value:!0});PIA.FunctionRegion=PIA.FunctionsHttpError=PIA.FunctionsRelayError=PIA.FunctionsFetchError=PIA.FunctionsError=void 0;class NZ extends Error{constructor(A,Q="FunctionsError",B){super(A);this.name=Q,this.context=B}toJSON(){return{name:this.name,message:this.message,context:this.context}}}PIA.FunctionsError=NZ;class jIA extends NZ{constructor(A){super("Failed to send a request to the Edge Function","FunctionsFetchError",A)}}PIA.FunctionsFetchError=jIA;class TIA extends NZ{constructor(A){super("Relay Error invoking the Edge Function","FunctionsRelayError",A)}}PIA.FunctionsRelayError=TIA;class SIA extends NZ{constructor(A){super("Edge Function returned a non-2xx status code","FunctionsHttpError",A)}}PIA.FunctionsHttpError=SIA;var VIA;(function(A){A.Any="any",A.ApNortheast1="ap-northeast-1",A.ApNortheast2="ap-northeast-2",A.ApSouth1="ap-south-1",A.ApSoutheast1="ap-southeast-1",A.ApSoutheast2="ap-southeast-2",A.CaCentral1="ca-central-1",A.EuCentral1="eu-central-1",A.EuWest1="eu-west-1",A.EuWest2="eu-west-2",A.EuWest3="eu-west-3",A.SaEast1="sa-east-1",A.UsEast1="us-east-1",A.UsWest1="us-west-1",A.UsWest2="us-west-2"})(VIA||(PIA.FunctionRegion=VIA={}))});var bIA=b((vIA)=>{Object.defineProperty(vIA,"__esModule",{value:!0});vIA.FunctionsClient=void 0;var apA=v6(),spA=RIA(),c3=Bh();class kIA{constructor(A,{headers:Q={},customFetch:B,region:$=c3.FunctionRegion.Any}={}){this.url=A,this.headers=Q,this.region=$,this.fetch=(0,spA.resolveFetch)(B)}setAuth(A){this.headers.Authorization=`Bearer ${A}`}invoke(A){return apA.__awaiter(this,arguments,void 0,function*(Q,B={}){var $;let I,E;try{let{headers:G,method:J,body:Y,signal:X,timeout:H}=B,F={},{region:C}=B;if(!C)C=this.region;let K=new URL(`${this.url}/${Q}`);if(C&&C!=="any")F["x-region"]=C,K.searchParams.set("forceFunctionRegion",C);let Z;if(Y&&(G&&!Object.prototype.hasOwnProperty.call(G,"Content-Type")||!G))if(typeof Blob<"u"&&Y instanceof Blob||Y instanceof ArrayBuffer)F["Content-Type"]="application/octet-stream",Z=Y;else if(typeof Y==="string")F["Content-Type"]="text/plain",Z=Y;else if(typeof FormData<"u"&&Y instanceof FormData)Z=Y;else F["Content-Type"]="application/json",Z=JSON.stringify(Y);else if(Y&&typeof Y!=="string"&&!(typeof Blob<"u"&&Y instanceof Blob)&&!(Y instanceof ArrayBuffer)&&!(typeof FormData<"u"&&Y instanceof FormData))Z=JSON.stringify(Y);else Z=Y;let M=X;if(H)if(E=new AbortController,I=setTimeout(()=>E.abort(),H),X)M=E.signal,X.addEventListener("abort",()=>E.abort());else M=E.signal;let N=yield this.fetch(K.toString(),{method:J||"POST",headers:Object.assign(Object.assign(Object.assign({},F),this.headers),G),body:Z,signal:M}).catch((S)=>{throw new c3.FunctionsFetchError(S)}),O=N.headers.get("x-relay-error");if(O&&O==="true")throw new c3.FunctionsRelayError(N);if(!N.ok)throw new c3.FunctionsHttpError(N);let j=(($=N.headers.get("Content-Type"))!==null&&$!==void 0?$:"text/plain").split(";")[0].trim(),R;if(j==="application/json")R=yield N.json();else if(j==="application/octet-stream"||j==="application/pdf")R=yield N.blob();else if(j==="text/event-stream")R=N;else if(j==="multipart/form-data")R=yield N.formData();else R=yield N.text();return{data:R,error:null,response:N}}catch(G){return{data:null,error:G,response:G instanceof c3.FunctionsHttpError||G instanceof c3.FunctionsRelayError?G.context:void 0}}finally{if(I)clearTimeout(I)}})}}vIA.FunctionsClient=kIA});var gIA=b((G5)=>{Object.defineProperty(G5,"__esModule",{value:!0});G5.FunctionRegion=G5.FunctionsRelayError=G5.FunctionsHttpError=G5.FunctionsFetchError=G5.FunctionsError=G5.FunctionsClient=void 0;var tpA=bIA();Object.defineProperty(G5,"FunctionsClient",{enumerable:!0,get:function(){return tpA.FunctionsClient}});var LZ=Bh();Object.defineProperty(G5,"FunctionsError",{enumerable:!0,get:function(){return LZ.FunctionsError}});Object.defineProperty(G5,"FunctionsFetchError",{enumerable:!0,get:function(){return LZ.FunctionsFetchError}});Object.defineProperty(G5,"FunctionsHttpError",{enumerable:!0,get:function(){return LZ.FunctionsHttpError}});Object.defineProperty(G5,"FunctionsRelayError",{enumerable:!0,get:function(){return LZ.FunctionsRelayError}});Object.defineProperty(G5,"FunctionRegion",{enumerable:!0,get:function(){return LZ.FunctionRegion}})});function fIA(A,Q){return new Promise((B)=>{if(Q===null||Q===void 0?void 0:Q.aborted){B();return}let $=setTimeout(()=>{Q===null||Q===void 0||Q.removeEventListener("abort",I),B()},A);function I(){clearTimeout($),B()}Q===null||Q===void 0||Q.addEventListener("abort",I)})}function QnA(A,Q,B,$){if(!$||B>=3)return!1;if(!mIA.includes(A))return!1;if(!AnA.includes(Q))return!1;return!0}function wZ(A){return wZ=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(Q){return typeof Q}:function(Q){return Q&&typeof Symbol=="function"&&Q.constructor===Symbol&&Q!==Symbol.prototype?"symbol":typeof Q},wZ(A)}function EnA(A,Q){if(wZ(A)!="object"||!A)return A;var B=A[Symbol.toPrimitive];if(B!==void 0){var $=B.call(A,Q||"default");if(wZ($)!="object")return $;throw TypeError("@@toPrimitive must return a primitive value.")}return(Q==="string"?String:Number)(A)}function GnA(A){var Q=EnA(A,"string");return wZ(Q)=="symbol"?Q:Q+""}function JnA(A,Q,B){return(Q=GnA(Q))in A?Object.defineProperty(A,Q,{value:B,enumerable:!0,configurable:!0,writable:!0}):A[Q]=B,A}function uIA(A,Q){var B=Object.keys(A);if(Object.getOwnPropertySymbols){var $=Object.getOwnPropertySymbols(A);Q&&($=$.filter(function(I){return Object.getOwnPropertyDescriptor(A,I).enumerable})),B.push.apply(B,$)}return B}function $R(A){for(var Q=1;Q<arguments.length;Q++){var B=arguments[Q]!=null?arguments[Q]:{};Q%2?uIA(Object(B),!0).forEach(function($){JnA(A,$,B[$])}):Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(B)):uIA(Object(B)).forEach(function($){Object.defineProperty(A,$,Object.getOwnPropertyDescriptor(B,$))})}return A}var yIA=(A)=>Math.min(1000*2**A,30000),AnA,mIA,$h,BnA=class{constructor(A){var Q,B,$,I,E;if(this.shouldThrowOnError=!1,this.retryEnabled=!0,this.method=A.method,this.url=A.url,this.headers=new Headers(A.headers),this.schema=A.schema,this.body=A.body,this.shouldThrowOnError=(Q=A.shouldThrowOnError)!==null&&Q!==void 0?Q:!1,this.signal=A.signal,this.isMaybeSingle=(B=A.isMaybeSingle)!==null&&B!==void 0?B:!1,this.shouldStripNulls=($=A.shouldStripNulls)!==null&&$!==void 0?$:!1,this.urlLengthLimit=(I=A.urlLengthLimit)!==null&&I!==void 0?I:8000,this.retryEnabled=(E=A.retry)!==null&&E!==void 0?E:!0,A.fetch)this.fetch=A.fetch;else this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}stripNulls(){if(this.headers.get("Accept")==="text/csv")throw Error("stripNulls() cannot be used with csv()");return this.shouldStripNulls=!0,this}setHeader(A,Q){return this.headers=new Headers(this.headers),this.headers.set(A,Q),this}retry(A){return this.retryEnabled=A,this}then(A,Q){var B=this;if(this.schema===void 0);else if(["GET","HEAD"].includes(this.method))this.headers.set("Accept-Profile",this.schema);else this.headers.set("Content-Profile",this.schema);if(this.method!=="GET"&&this.method!=="HEAD")this.headers.set("Content-Type","application/json");if(this.shouldStripNulls){let G=this.headers.get("Accept");if(G==="application/vnd.pgrst.object+json")this.headers.set("Accept","application/vnd.pgrst.object+json;nulls=stripped");else if(!G||G==="application/json")this.headers.set("Accept","application/vnd.pgrst.array+json;nulls=stripped")}let $=this.fetch,E=(async()=>{let G=0;while(!0){let X=new Headers(B.headers);if(G>0)X.set("X-Retry-Count",String(G));let H;try{H=await $(B.url.toString(),{method:B.method,headers:X,body:JSON.stringify(B.body,(F,C)=>typeof C==="bigint"?C.toString():C),signal:B.signal})}catch(F){if((F===null||F===void 0?void 0:F.name)==="AbortError"||(F===null||F===void 0?void 0:F.code)==="ABORT_ERR")throw F;if(!mIA.includes(B.method))throw F;if(B.retryEnabled&&G<3){let C=yIA(G);G++,await fIA(C,B.signal);continue}throw F}if(QnA(B.method,H.status,G,B.retryEnabled)){var J,Y;let F=(J=(Y=H.headers)===null||Y===void 0?void 0:Y.get("Retry-After"))!==null&&J!==void 0?J:null,C=F!==null?Math.max(0,parseInt(F,10)||0)*1000:yIA(G);await H.text(),G++,await fIA(C,B.signal);continue}return await B.processResponse(H)}})();if(!this.shouldThrowOnError)E=E.catch((G)=>{var J;let Y="",X="",H="",F=G===null||G===void 0?void 0:G.cause;if(F){var C,K,Z,M;let j=(C=F===null||F===void 0?void 0:F.message)!==null&&C!==void 0?C:"",R=(K=F===null||F===void 0?void 0:F.code)!==null&&K!==void 0?K:"";if(Y=`${(Z=G===null||G===void 0?void 0:G.name)!==null&&Z!==void 0?Z:"FetchError"}: ${G===null||G===void 0?void 0:G.message}`,Y+=`
96
96
 
97
97
  Caused by: ${(M=F===null||F===void 0?void 0:F.name)!==null&&M!==void 0?M:"Error"}: ${j}`,R)Y+=` (${R})`;if(F===null||F===void 0?void 0:F.stack)Y+=`
@@ -905,7 +905,7 @@ The bundle size is ${e} Mb, this may take a while to download for users
905
905
  Bundle uploaded \uD83D\uDCAA in 0 seconds`),G.verbose)w.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let K=await x6();if(G.verbose)w.info("[Verbose] Local config retrieved for upload");if(G.multipart!==void 0&&G.multipart||G.tus!==void 0&&G.tus){if(G.multipart)w.info("Uploading bundle with multipart is deprecated, we upload with TUS instead");else w.info("Uploading bundle with TUS protocol");if(G.verbose)w.info("[Verbose] Starting TUS resumable upload..."),w.info(` - Host: ${K.hostWeb}`),w.info(` - Chunk size: ${Math.floor(J/1024/1024)} MB`);if(await jFA(A,E,I,B,$,Y,K,J),H=!0,G.verbose)w.info("[Verbose] TUS upload completed, updating database with R2 path...");let Z=`orgs/${I}/apps/${B}/${$}.zip`,{error:M}=await Q.from("app_versions").update({r2_path:Z}).eq("name",$).eq("app_id",B);if(M){if(w.error(`Cannot finish TUS upload ${VA(M)}`),G.verbose)w.info(`[Verbose] Database update failed: ${VA(M)}`);throw Error("Cannot finish TUS upload")}if(G.verbose)w.info(`[Verbose] Database updated with R2 path: ${Z}`)}else{if(G.verbose)w.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let Z=await OFA(Q,B,$);if(!Z){if(w.error("Cannot get upload url"),G.verbose)w.info("[Verbose] Failed to retrieve presigned upload URL from database");throw Error("Cannot get upload url")}if(G.verbose)w.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),w.info(` - Timeout: ${G.timeout||Ln}ms`),w.info(" - Retry attempts: 5"),w.info(" - Content-Type: application/zip");let M=new AbortController,N=setTimeout(()=>M.abort(),G.timeout||Ln);try{let O=await fetch(Z,{method:"PUT",body:E,headers:{"Content-Type":"application/zip"},signal:M.signal});if(!O.ok)throw Error(`HTTP error! status: ${O.status}`)}finally{clearTimeout(N)}if(G.verbose)w.info("[Verbose] HTTP PUT upload completed successfully")}}catch(K){let M=((performance.now()-X)/1000).toFixed(2);if(Y.error(`Failed to upload bundle ( after ${M} seconds)`),G.verbose)w.info(`[Verbose] Upload failed after ${M} seconds`),w.info(`[Verbose] Error type: ${K instanceof Error?"Error":typeof K}`);if(K instanceof Error&&K.message.includes("HTTP error"))try{let N=K.message.match(/status: (\d+)/),O=N?N[1]:"unknown";w.error(`Upload failed with status ${O}: ${K.message}`)}catch{w.error(`Upload failed: ${K.message}`)}else{if(G.verbose)w.info(`[Verbose] Non-HTTP error: ${VA(K)}`);if(!G.tus)w.error(`Cannot upload bundle ( try again with --tus option) ${VA(K)}`);else w.error(`Cannot upload bundle please contact support if the issue persists ${VA(K)}`)}if(G.verbose)w.info("[Verbose] Cleaning up failed version from database...");if(await Rn(Q,B,$),G.verbose)w.info("[Verbose] Failed version cleaned up");throw K instanceof Error?K:Error(String(K))}let C=((performance.now()-X)/1000).toFixed(2);if(Y.stop(`Bundle uploaded \uD83D\uDCAA in (${C} seconds)`),G.verbose)w.info("[Verbose] Upload successful:"),w.info(` - Upload time: ${C} seconds`),w.info(` - Upload method: ${H?"TUS (resumable)":"Standard HTTP PUT"}`),w.info(` - Bundle size: ${Math.floor(E.byteLength/1024)} KB`),w.info("[Verbose] Sending performance event...");if(await OB(A,{channel:"performance",event:H?"TUS upload zip performance":"Upload zip performance",icon:"\uD83D\uDE84",org_id:I,tracking_version:2,tags:{"app-id":B,time:C},notify:!1},G.verbose),G.verbose)w.info("[Verbose] Performance event sent successfully")}async function EkQ(A,Q,B){let{data:$,error:I}=await A.from("channels").select("version ( id, name, deleted )").eq("app_id",Q).eq("name",B);if(I)return w.error(`Cannot delete linked bundle on upload ${VA(I)}`),null;if($.length===0)return w.warn("No linked bundle found in the channel you are trying to upload to"),null;let E=$[0].version;if(!E)return w.warn("No linked bundle found in the channel you are trying to upload to"),null;if(E.deleted)return w.warn("The linked bundle is already deleted"),null;return E}async function GkQ(A,Q){if(!Q)return;let{error:B}=await A.from("app_versions").update({deleted:!0}).eq("id",Q.id);if(B){w.error(`Cannot delete linked bundle on upload ${VA(B)}`);return}w.info(`Linked bundle ${Q.name} deleted`)}async function JkQ(A,Q,B,$,I,E,G,J,Y,X){let{data:H}=await A.rpc("get_app_versions",{apikey:Q,name_version:$,appid:J}).single();if(!H)S0("Cannot get version id, cannot set channel");if(await _W(A,Q,"app.create_channel",{appId:J})){let{error:C,data:K}=await gS(A,{name:I,app_id:J,created_by:E,version:H,owner_org:G,...X?{allow_device_self_set:!0}:{}});if(C)S0(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${VA(C)}`);let Z=`${Y.hostWeb}/app/${J}/channel/${K.id}`;if(K?.public)w.info("Your update is now available in your public channel \uD83C\uDF89");else if(K?.id)w.info(`Link device to this bundle to try it: ${Z}`);if(B)w.info(`Bundle url: ${Z}`);return!0}return w.warn("The upload key is not allowed to set the version in the channel"),!1}async function DkQ(A,Q,B){let{error:$,data:I}=await Q.from("apps").select("default_upload_channel").eq("app_id",A).single();if($)throw Error(`Cannot find default upload channel: ${VA($)}. You can set it here: ${B}/app/${A}/info`);return I.default_upload_channel}async function TK(A,Q,B=!1){if(!B)UB(`Uploading with CLI version ${i8.version}`);let $,I=L1();await r0();let{s3Region:E,s3Apikey:G,s3Apisecret:J,s3BucketName:Y,s3Endpoint:X,s3Port:H,s3SSL:F}=Q;if(Q.verbose)w.info("[Verbose] Starting upload process with options:"),w.info(` - API key: ${Q.apikey?"provided":"from saved key"}`),w.info(` - Path: ${Q.path||"from capacitor config"}`),w.info(` - Channel: ${Q.channel||"from default upload channel"}`),w.info(` - Bundle: ${Q.bundle||"auto-detected"}`),w.info(` - External: ${Q.external||"false"}`),w.info(` - Encryption: ${Q.keyV2||Q.keyDataV2?"v2":Q.key===!1?"disabled":"auto"}`),w.info(` - Upload method: ${Q.tus?"TUS":Q.zip?"ZIP":"auto"}`),w.info(` - Delta updates: ${Q.delta||Q.partial?"enabled":"disabled"}`);let C=a_Q(Q);if(Q.verbose)w.info("[Verbose] API key retrieved successfully");let K=await GB();if(Q.verbose)w.info("[Verbose] Capacitor config loaded successfully");let Z=U_A(K?.config?.plugins?.CapacitorUpdater),M=TW({silent:B});if(Z&&Q.delta===void 0){if(M){w.info("\uD83D\uDCA1 Instant updates are enabled in your config"),w.info(" Delta updates send only changed files instead of the full bundle");let MQ=await Z8({message:"Enable delta updates for this upload? (Recommended with instant updates)",initialValue:!0});if(!U0(MQ)&&MQ){if(Q.delta=!0,Q.verbose)w.info("[Verbose] Delta updates auto-enabled due to instant update configuration")}}else if(!B){if(Q.delta!==!1){if(Q.delta=!0,Q.verbose)w.info("[Verbose] Delta updates auto-enabled in CI/CD mode due to instant update configuration")}}}let N=await WFA();if(Q.verbose)w.info("[Verbose] Remote file config retrieved:"),w.info(` - Max upload length: ${Math.floor(N.maxUploadLength/1024/1024)} MB`),w.info(` - Alert upload size: ${Math.floor(N.alertUploadSize/1024/1024)} MB`),w.info(` - TUS upload: ${N.TUSUpload?"enabled":"disabled"}`),w.info(` - TUS upload forced: ${N.TUSUploadForced?"yes":"no"}`),w.info(` - Partial upload: ${N.partialUpload?"enabled":"disabled"}`),w.info(` - Max chunk size: ${Math.floor(N.maxChunkSize/1024/1024)} MB`);let{appid:O,path:j}=s_Q(A,Q,K.config);if(Q.verbose)w.info(`[Verbose] App ID: ${O}, Build path: ${j}`);let R=await o_Q(K.config,Q);if(Q.verbose)w.info(`[Verbose] Bundle version: ${R}`);let S=Q.external?"external":"r2-direct",T="none";if(Q.autoSetBundle){if(await SW({version:R}),Q.verbose)w.info("[Verbose] Auto-set bundle version in capacitor.config.json")}if(t_Q(Q,j),Q.verbose)w.info("[Verbose] Code check passed (notifyAppReady found and index.html present)");w.info(`Upload ${O}@${R} started from path "${j}" to Capgo cloud`);let x=await x6();if(Q.verbose)w.info(`[Verbose] Local config loaded: host=${x.hostWeb}`);if(Q.supaHost&&Q.supaAnon){if(w.info("Using custom supabase instance from provided options"),x.supaHost=Q.supaHost,x.supaKey=Q.supaAnon,Q.verbose)w.info(`[Verbose] Custom Supabase host: ${Q.supaHost}`)}let l=await FB(C,Q.supaHost,Q.supaAnon);if(Q.verbose)w.info("[Verbose] Supabase client created successfully");await x8(l,O,B);let e=await D1(l,C);if(Q.verbose)w.info(`[Verbose] User verified successfully, user_id: ${e}`);let m=Xe(Q.channel);if(Q.channel!==void 0&&m.length===0)S0("Missing channel name, pass one channel or a comma-separated list with --channel");let s=m.length>0?null:await DkQ(O,l,x.hostWeb),p=m.length>0?m:Xe(s||"production");if(p.length===0)S0("Cannot resolve target channel");let UA=jK(p),FA=p;if(Q.verbose)w.info(`[Verbose] Target channel${p.length>1?"s":""}: ${UA}`);let LA=await z8(l,O);if(Q.verbose)w.info(`[Verbose] Organization ID: ${LA}`);if(await ZFA(l,LA,i8.version),Q.verbose)w.info("[Verbose] Remote CLI messages checked");if(await zFA(l,LA,C,O,!0),Q.verbose)w.info("[Verbose] Plan validation passed");if(Q.verbose)w.info("[Verbose] Trial check completed");if(Q.verbose)w.info(`[Verbose] Checking if version ${R} already exists...`);let o=await AkQ(l,O,R,Q.versionExistsOk,M);if(Q.verbose)w.info(`[Verbose] Version exists check: ${o?typeof o==="string"?`retry with ${o}`:"yes (skipping)":"no (continuing)"}`);if(o===!0)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:R,checksum:null,encryptionMethod:T,storageProvider:S};if(typeof o==="string")return w.info(`Retrying upload with new version: ${o}`),TK(A,{...Q,bundle:o},B);if(Q.external&&!Q.external.startsWith("https://"))S0(`External link should should start with "https://" current is "${Q.external}"`);let k=null,v="",g;if(!Q.external){if(Q.verbose)w.info(`[Verbose] Preparing bundle file from path: ${j}`);let MQ=K.config?.plugins?.CapacitorUpdater?.publicKey;if(g=await $kQ(j,Q,C,LA,O,N.maxUploadLength,N.alertUploadSize,MQ),$=g.sessionKey,k=g.zipped,T=g.encryptionMethod,v=g.finalKeyData,Q.verbose)w.info("[Verbose] Bundle prepared:"),w.info(` - Size: ${Math.floor((g.zipped?.byteLength??0)/1024)} KB`),w.info(` - Checksum: ${g.checksum}`),w.info(` - Encryption: ${g.encryptionMethod}`),w.info(` - IV Session Key: ${g.ivSessionKey?"present":"none"}`),w.info(` - Key ID: ${g.keyId||"none"}`);if(!Q.ignoreChecksumCheck){if(Q.verbose)w.info("[Verbose] Checking for duplicate checksum...");if(FA=await BkQ(l,O,p,g.checksum),Q.verbose)w.info("[Verbose] Checksum is unique or already satisfied across target channels")}}let t=jK(FA);if(Q.verbose)w.info(`[Verbose] Checking compatibility with channel${FA.length>1?"s":""} ${t}...`);let r=[];for(let MQ of FA){let YB=await e_Q(l,I,Q,MQ,O,R,LA);r.push({channel:MQ,...YB})}let BA=r.find((MQ)=>MQ.nativePackages)?.nativePackages,RA=QkQ(r),EA=r.filter((MQ)=>MQ.compatibility.result==="incompatible"),NA=EA.length>0,BQ=EA.reduce((MQ,YB)=>Math.max(MQ,YB.incompatibleCount),0),hA=jK(EA.map((MQ)=>MQ.channel)),UQ=()=>{let MQ=hA||t;QB({channel:"bundle",event:"Bundle Upload Blocked",icon:"⛔",apikey:Q.apikey,appId:O,orgId:LA,tags:{reason:"incompatible",channel:MQ,channel_name:MQ,channel_names:MQ,channel_count:EA.length||FA.length,incompatible_count:BQ,interactive:M}});let xB=`Upload aborted: bundle is incompatible with ${EA.length===1?"channel":"channels"} "${MQ}" (${BQ} native package(s) changed). A native build / app-store update is required. Run a native build with Capgo Builder (https://capgo.app/docs/cli/cloud-build/), or remove --fail-on-incompatible to upload anyway.`;throw w.error(xB),new We(xB)};if(NA&&!B){if(Q.failOnIncompatible&&!M)UQ();let MQ=await o8(O)!==null,YB=await K_A({incompatible:NA,interactive:M,hasCredentials:MQ,appId:O,orgId:LA,apikey:C,incompatibleCount:BQ});if(YB==="abort")throw Error(_kA);if(YB!=="continue")return{success:!0,skipped:!0,reason:"NATIVE_BUILD",builderAction:YB,bundle:R,checksum:null,encryptionMethod:T,storageProvider:S};if(W_A({incompatible:NA,failOnIncompatible:!!Q.failOnIncompatible,interactive:M,builderAction:YB}))UQ()}if(Q.verbose)w.info("[Verbose] Compatibility check completed:"),w.info(` - Native packages: ${BA?BA.length:0}`),w.info(` - Min update version: ${RA||"none"}`);if(Q.deleteLinkedBundleOnUpload)w.warn(`Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the target channel${FA.length>1?"s":""}: ${t}.`),w.warn("Please make sure you want to do this, if you are not sure, please do not use this option.");let bQ={name:R,app_id:O,session_key:Q.external?Q.ivSessionKey:g?.ivSessionKey,external_url:Q.external,storage_provider:S,min_update_version:RA,native_packages:BA,owner_org:LA,user_id:e,checksum:Q.external?Q.encryptedChecksum:g?.checksum,link:Q.link||null,comment:Q.comment||null,key_id:g?.keyId||void 0,cli_version:i8.version};if(Q.external){if(Q.verbose)w.info(`[Verbose] Using external URL: ${Q.external}`);if(await OB(C,{channel:"app",event:"App external",icon:"\uD83D\uDCE4",org_id:LA,tracking_version:2,tags:{"app-id":O},notify:!1},Q.verbose),Q.verbose)w.info("[Verbose] External bundle configured:"),w.info(` - URL: ${Q.external}`),w.info(` - IV Session Key: ${Q.ivSessionKey?"provided":"none"}`),w.info(` - Encrypted Checksum: ${Q.encryptedChecksum?"provided":"none"}`)}if(Q.zip){if(Q.tus=!1,Q.verbose)w.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")}else if(!N.TUSUpload||Q.external){if(Q.tus=!1,Q.verbose)w.info("[Verbose] Upload method: Standard (TUS not available or external URL)")}else if(Q.tus=Q.tus||N.TUSUploadForced,Q.verbose)w.info(`[Verbose] Upload method: ${Q.tus?"TUS (resumable)":"Standard"}`);if(!N.partialUpload||Q.external){if(Q.delta=!1,Q.verbose&&Q.external)w.info("[Verbose] Delta updates disabled (not available with external URLs)")}else if(Q.delta=Q.delta||Q.partial||Q.deltaOnly||Q.partialOnly||N.partialUploadForced,Q.verbose)w.info(`[Verbose] Delta updates: ${Q.delta?"enabled":"disabled"}`);if(Q.encryptPartial&&T==="v1")S0("You cannot encrypt the partial update if you are not using the v2 encryption method");let wA="5.30.0",GQ="6.30.0",sA="7.30.0",gQ=!1;if(Q.delta&&T==="v2"&&!Q.encryptPartial){let MQ=v8(Fe()),YB=await c6("@capgo/capacitor-updater",MQ,Q.packageJson),xB;try{xB=YB?A0(YB):void 0}catch{xB=void 0}if(YB&&xB&&Ah(xB,A0("6.14.4"))){if(w.info(`Auto-enabling partial update encryption for updater version ${xB} (> 6.14.4)`),Q.verbose)w.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4");Q.encryptPartial=!0}}if(Q.delta&&(Q.encryptPartial||T==="v2")){let MQ=v8(Fe()),YB=await c6("@capgo/capacitor-updater",MQ,Q.packageJson),xB;try{xB=YB?A0(YB):void 0}catch{xB=void 0}if(YB&&xB){if(gQ=!$G(xB,wA,GQ,sA),Q.verbose&&gQ)w.info(`[Verbose] Using hex checksum format for updater version ${xB}`)}}if(Q.verbose&&Q.delta)w.info("[Verbose] Preparing delta/partial update manifest...");let $B=Q.delta?await TkA(j,C,LA,O,Q.encryptPartial?T:"none",v,gQ):[];if(Q.verbose&&Q.delta)w.info(`[Verbose] Delta manifest prepared with ${$B.length} files`);if(Q.verbose)w.info("[Verbose] Creating version record in database...");if(await He(l,bQ,"add"),Q.verbose)w.info("[Verbose] Version record created successfully");if(Q.dryUpload){if(Q.verbose)w.info("[Verbose] Dry upload mode: skipping bundle publishing and channel assignment");if(!B)XB("Dry upload saved bundle metadata without uploading files or updating channels");return{success:!0,bundle:R,checksum:bQ.checksum??null,encryptionMethod:T,sessionKey:$?$.toString("base64"):void 0,ivSessionKey:typeof bQ.session_key==="string"?bQ.session_key:void 0,storageProvider:bQ.storage_provider,skipped:!0,reason:"DRY_UPLOAD"}}if(Q.tusChunkSize&&Q.tusChunkSize>N.maxChunkSize)w.error(`Chunk size ${Q.tusChunkSize} is greater than the maximum chunk size ${N.maxChunkSize}, using the maximum chunk size`),Q.tusChunkSize=N.maxChunkSize;else if(!Q.tusChunkSize)Q.tusChunkSize=N.maxChunkSize;if(Q.verbose)w.info(`[Verbose] TUS chunk size: ${Math.floor(Q.tusChunkSize/1024/1024)} MB`);if(k&&(Y||X||E||G||J||H||F)){if(!Y||!X||!E||!G||!J||!H)S0("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret");if(w.info("Uploading to S3"),Q.verbose)w.info("[Verbose] S3 configuration:"),w.info(` - Endpoint: ${X}`),w.info(` - Region: ${E}`),w.info(` - Bucket: ${Y}`),w.info(` - Port: ${H}`),w.info(` - SSL: ${F?"enabled":"disabled"}`);let MQ=`${F?"https":"http"}://${X}${H?`:${H}`:""}`,YB=new Ix({endPoint:X,region:E,port:H,pathStyle:!0,bucket:Y,accessKey:G,secretKey:J}),xB=`${O}-${R}`,O0=encodeURIComponent(xB);if(Q.verbose)w.info(`[Verbose] Uploading to S3 as: ${xB}`);try{await YB.putObject(xB,Uint8Array.from(k)),bQ.external_url=`${MQ}/${O0}`,bQ.storage_provider="external",await He(l,bQ,"update")}catch(t0){await Rn(l,O,R),S0(`Cannot upload bundle to S3 ${VA(t0)}`)}if(Q.verbose)w.info(`[Verbose] S3 upload complete, external URL: ${bQ.external_url}`)}else if(k){if(!Q.partialOnly&&!Q.deltaOnly){if(Q.verbose)w.info("[Verbose] Starting full bundle upload to Capgo Cloud...");await IkQ(C,l,O,R,LA,k,Q,Q.tusChunkSize)}else if(Q.verbose)w.info("[Verbose] Skipping full bundle upload (delta-only mode)");let MQ=null;try{if(Q.dryUpload){if(Q.delta=!1,Q.verbose)w.info("[Verbose] Dry upload mode: skipping delta upload")}let YB=bQ.session_key&&Q.encryptPartial&&$?{sessionKey:$,ivSessionKey:bQ.session_key}:void 0;if(Q.verbose&&Q.delta)w.info("[Verbose] Starting delta/partial file upload..."),w.info(` - Manifest entries: ${$B.length}`),w.info(` - Encryption: ${YB?"enabled":"disabled"}`);if(MQ=Q.delta?await SkA(C,$B,j,O,LA,YB,Q):null,Q.verbose&&MQ)w.info(`[Verbose] Delta upload complete with ${MQ.length} files`)}catch(YB){if(!!(Q.partial||Q.delta||Q.partialOnly||Q.deltaOnly))throw YB;if(w.info(`Failed to upload partial files to capgo cloud. Error: ${VA(YB)}. This is not a critical error, the bundle has been uploaded without the partial files`),Q.verbose)w.info(`[Verbose] Delta upload error details: ${VA(YB)}`)}if(bQ.storage_provider="r2",bQ.manifest=MQ,Q.verbose)w.info("[Verbose] Updating version record with storage provider and manifest...");if(await He(l,bQ,"update"),Q.verbose)w.info("[Verbose] Version record updated successfully")}if(Q.verbose)w.info("[Verbose] Checking app permissions...");let LQ=await Q8(l,C,O,2,!1,!0);if(Q.verbose)w.info("[Verbose] Permissions:"),w.info(` - Upload: ${PW(LQ,2)?"yes":"no"}`),w.info(` - Write: ${PW(LQ,3)?"yes":"no"}`),w.info(` - Admin: ${PW(LQ,4)?"yes":"no"}`);let JQ=Q.deleteLinkedBundleOnUpload&&PW(LQ,3),aB=JQ?await Promise.all(FA.map(async(MQ)=>({channel:MQ,version:await EkQ(l,O,MQ)}))):[];if(Q.deleteLinkedBundleOnUpload&&!JQ)w.warn("Cannot delete linked bundle on upload as a upload organization member");let SB=new Set;if(PW(LQ,3)){for(let MQ of FA){if(Q.verbose)w.info(`[Verbose] Setting bundle ${R} to channel ${MQ}...`);if(await JkQ(l,C,!!Q.bundleUrl,R,MQ,e,LA,O,x,Q.selfAssign))SB.add(MQ);if(Q.verbose)w.info(`[Verbose] Channel ${MQ} updated successfully`)}if(JQ){let MQ=new Set;for(let YB of aB){if(!YB.version||MQ.has(YB.version.id))continue;if(Q.verbose)w.info(`[Verbose] Deleting previously linked bundle in channel ${YB.channel}...`);await GkQ(l,YB.version),MQ.add(YB.version.id)}}}else w.warn("Cannot set channel as a upload organization member");if(Q.verbose)w.info("[Verbose] Sending upload event...");await OB(C,{channel:"app",event:"App Uploaded",icon:"⏫",org_id:LA,tracking_version:2,tags:{"app-id":O,bundle:R},notify:!1},Q.verbose),await OB(C,{channel:"app",event:"Bundle Uploaded",icon:"⏫",org_id:LA,tracking_version:2,tags:{"app-id":O,bundle:R},notify:!1,notifyConsole:!0}).catch(()=>{});for(let MQ of r){if(MQ.compatibility.result!=="incompatible")continue;QB({channel:"bundle",event:"Bundle Incompatible",icon:"\uD83D\uDEAB",apikey:C,appId:O,orgId:LA,tags:{source:"upload",channel:MQ.channel,channel_name:MQ.channel,channel_overwritten:SB.has(MQ.channel),version_new_name:R,...MQ.compatibility.versionOldId?{version_old_id:MQ.compatibility.versionOldId}:{},...MQ.compatibility.versionOldName?{version_old_name:MQ.compatibility.versionOldName}:{}}})}let VQ={success:!0,bundle:R,checksum:bQ.checksum??null,encryptionMethod:T,sessionKey:$?$.toString("base64"):void 0,ivSessionKey:typeof bQ.session_key==="string"?bQ.session_key:void 0,storageProvider:bQ.storage_provider};if(Q.verbose)w.info("[Verbose] Upload completed successfully:"),w.info(` - Bundle: ${VQ.bundle}`),w.info(` - Checksum: ${VQ.checksum}`),w.info(` - Encryption: ${VQ.encryptionMethod}`),w.info(` - Storage: ${VQ.storageProvider}`);if(M&&!VQ.skipped){let MQ=Q.showReplicationProgress;if(MQ===void 0)MQ=await pt({preferenceKey:"uploadShowReplicationProgress",message:"Show Capgo global replication progress for this upload so you can confirm rollout in all regions?",initialValue:!1,rememberMessage:"Remember this replication progress preference for future uploads on this machine?"});if(MQ)await Xx({title:"Replicating your bundle in all regions to guarantee fast updates.",completeMessage:"Replication complete. Your update is now globally available.",interactive:M})}if(!B&&!VQ.skipped)XB("Time to share your update to the world \uD83C\uDF0D");return VQ}function YkQ(A){let Q=A.key===!1,B=A.forceCrc32Checksum===!0,$=A.keyV2||A.keyDataV2||QL(m6);if(A.ivSessionKey&&!A.external)S0("You need to provide an external url if you want to use the --iv-session-key option");if(A.encryptedChecksum&&!A.external)S0("You need to provide an external url if you want to use the --encrypted-checksum option");if((A.partial||A.delta||A.partialOnly||A.deltaOnly)&&A.external)S0("You cannot use the --partial/--delta/--partial-only/--delta-only option with an external url");if(A.tus&&A.external)S0("You cannot use the --tus option with an external url");if(A.dryUpload&&A.external)S0("You cannot use the --dry-upload option with an external url");if(A.multipart&&A.external)S0("You cannot use the --multipart option with an external url");if(A.external&&(A.keyV2||A.keyDataV2))S0("You cannot set a key if you are uploading to an external url");if(A.keyV2&&A.keyDataV2)S0("You cannot set both key-v2 and key-data-v2");if(A.external&&(A.s3Region||A.s3Apikey||A.s3Apisecret||A.s3Endpoint||A.s3BucketName||A.s3Port||A.s3SSL))S0("You cannot set S3 options if you are uploading to an external url, it's automatically handled");if(A.encryptedChecksum&&!A.external)S0("You cannot set the --encrypted-checksum option if you are not uploading to an external url");if(A.minUpdateVersion&&A.autoMinUpdateVersion)S0("You cannot set both min-update-version and auto-min-update-version, use only one of them");if(B&&$&&!Q)S0("You cannot use --force-crc32-checksum when encryption is enabled. Remove the flag or disable encryption.");if(A.failOnIncompatible&&A.ignoreMetadataCheck)S0("You cannot use --fail-on-incompatible together with --ignore-metadata-check — the metadata check is exactly what --fail-on-incompatible enforces. Remove one of them.")}async function UkQ(){if(!TW())return;let A=wK();if(LK(A.repository)||!A.ghInstalled||!A.ghLoggedIn||!A.repositoryExists||A.starred)return;if(!await pt({preferenceKey:"uploadStarCapgoRepo",message:`Would you like to star ${A.repository} on GitHub to support Capgo?`,rememberMessage:"Remember this GitHub support preference for future uploads on this machine?"}))return;try{let B=DY(A.repository);if(B.alreadyStarred)w.info(`\uD83E\uDEF6 ${B.repository} is already starred`);else w.success(`\uD83D\uDE4F Thanks for starring ${B.repository} \uD83C\uDF89`)}catch(B){w.warn(`Cannot star ${A.repository} right now: ${VA(B)}`)}}async function Zx(A,Q){try{YkQ(Q);let B=await TK(A,Q);if(!B.skipped)await UkQ();return B}catch(B){let $=B instanceof Error?B.message:String(B),I=VA(B);if($===_kA)throw B instanceof Error?B:Error(String(B));if(Q.verbose)w.error(`uploadBundle failed:${I}`);else w.error(`uploadBundle failed: ${$}`);if(B instanceof We)throw B;let E=$.includes("Cannot upload the same bundle content"),G=TW();if(!Q.versionExistsOk&&G)try{if(E){let J=await o4({message:"Would you like to retry the upload?",options:[{value:"ignore",label:"Retry with --ignore-checksum-check (force upload same content)"},{value:"cancel",label:"Cancel upload"}]});if(U0(J)||J==="cancel")throw B instanceof Error?B:Error(String(B));if(J==="ignore")return w.info("\uD83D\uDD04 Retrying upload with --ignore-checksum-check..."),Zx(A,{...Q,ignoreChecksumCheck:!0})}else{let J=await Z8({message:"Would you like to retry the upload?"});if(U0(J))throw B instanceof Error?B:Error(String(B));if(J)return w.info("\uD83D\uDD04 Retrying upload..."),Zx(A,Q)}}catch{throw B instanceof Error?B:Error(String(B))}throw B instanceof Error?B:Error(String(B))}}function kkA(A,Q){return{apikey:A.apikey,bundle:Q,supaAnon:A.supaAnon,supaHost:A.supaHost}}async function vkA(A,Q){let B=await Zx(A,Q);if(Q.qrPreview&&B?.bundle&&B.reason!=="DRY_UPLOAD"&&!B.builderAction)await Ax(A,void 0,kkA(Q,B.bundle));if(!B?.builderAction)return;if(B.builderAction==="launch-onboarding")await WK({apikey:Q.apikey});else await Qk(A??"",{apikey:Q.apikey,supaHost:Q.supaHost,supaAnon:Q.supaAnon})}gB();AJ();R1();a4();wM();CB();import{randomUUID as XkQ}from"node:crypto";import{existsSync as HkQ,writeFileSync as FkQ}from"node:fs";import{cwd as WkQ}from"node:process";var CkQ=20;function KkQ(A){console.log(JSON.stringify(A,null,2))}function BL(A){console.error(VA(A))}async function Ce(A,Q,B=!1){let{json:$}=Q,{bundle:I,path:E}=Q,G=!$&&!B;try{if(G)await r0();let J=await GB(),Y=cB(A,J?.config),X=XkQ().split("-")[0],H=DJ("",Q.packageJson);if(I=I||H||`0.0.1-beta.local-${X}`,G)UB(`Zipping ${Y}@${I}`);if(I&&!VW.test(I)){let x=`Your bundle name ${I}, is not valid it should follow semver convention : https://semver.org/`;if(!B)if($)BL({error:"invalid_semver"});else w.error(x);throw Error("Invalid bundle version format")}if(E=E||J?.config?.webDir,!Y||!I||!E){if(!B)if($)BL({error:"missing_argument"});else w.error("Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project");throw Error("Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project")}if(G)w.info(`Started from path "${E}"`);if(typeof Q.codeCheck>"u"?!0:Q.codeCheck){if(!oN(E,"notifyAppReady")){if(!B)if($)BL({error:"notifyAppReady_not_in_source_code"});else w.error("notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready");throw Error("notifyAppReady() is missing in build folder")}if(!Hx(E)){if(!B)if($)BL({error:"index_html_not_found"});else w.error(`index.html is missing in the root folder of ${E}`);throw Error("index.html is missing in root folder")}}let C=await bS(E);if(G)w.info(`Zipped ${C.byteLength} bytes`);let K=G?a1():null;if(K)K.start("Calculating checksum");let Z=v8(WkQ()),M=await c6("@capgo/capacitor-updater",Z,Q.packageJson);if(!M){if(!B)w.warn("Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager");throw Error("Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager")}let N=!1,O;try{O=M?A0(M):void 0}catch{O=void 0}if(O)N=!$G(O,void 0,void 0,"7.0.0");else if(M==="link:@capgo/capacitor-updater"){if(!B)w.warn("Using local @capgo/capacitor-updater. Assuming v7");N=!0}let j=await w5(C,Q.keyV2||HkQ(m6)||N?"sha256":"crc32");if(K)K.stop(`Checksum ${N?"SHA256":"CRC32"}: ${j}`);let R=Math.floor(C.byteLength/1024/1024);if(R>CkQ&&G)w.warn(`WARNING !!
906
906
  The bundle size is ${R} Mb, this may take a while to download for users
907
907
  `),w.warn(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
908
- `);let S=G?a1():null,T=Q.name||`${Y}_${I}.zip`;if(S)S.start(`Saving to ${T}`);if(FkQ(T,C),S)S.stop(`Saved to ${T}`);if(QB({channel:"bundle",event:"Bundle Zipped",icon:"\uD83D\uDDDC️",tags:{zip_size_bytes:C.byteLength}}),G)XB("Done ✅");if(!B&&$)KkQ({bundle:I,filename:T,checksum:j});return{bundle:I,filename:T,checksum:j}}catch(J){if(!B)if($)BL(J);else w.error(VA(J));throw J instanceof Error?J:Error(String(J))}}async function xkA(A,Q){await Ce(A,Q,!1)}gB();CB();async function $L(A,Q,B,$=!1){if(!$)UB("Create channel");B.apikey=B.apikey||dQ();let I=await GB($).catch(()=>{return});if(Q=cB(Q,I?.config),!B.apikey){if(!$)w.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!Q){if(!$)w.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let E=await FB(B.apikey,B.supaHost,B.supaAnon,$);if(await x8(E,Q,$),await D1(E,B.apikey),await Q8(E,B.apikey,Q,4,$,!0),!$)w.info(`Creating channel ${Q}#${A} to Capgo`);let G=await z8(E,Q),J=await D1(E,B.apikey),Y=await WPA(E,{name:A,app_id:Q,version:null,created_by:J,owner_org:G,allow_device_self_set:B.selfAssign??!1,public:B.default??!1});if(Y.error){if(!$)w.error(`Cannot create Channel \uD83D\uDE40
908
+ `);let S=G?a1():null,T=Q.name||`${Y}_${I}.zip`;if(S)S.start(`Saving to ${T}`);if(FkQ(T,C),S)S.stop(`Saved to ${T}`);if(QB({channel:"bundle",event:"Bundle Zipped",icon:"\uD83D\uDDDC️",tags:{zip_size_bytes:C.byteLength}}),G)XB("Done ✅");if(!B&&$)KkQ({bundle:I,filename:T,checksum:j});return{bundle:I,filename:T,checksum:j}}catch(J){if(!B)if($)BL(J);else w.error(VA(J));throw J instanceof Error?J:Error(String(J))}}async function xkA(A,Q){await Ce(A,Q,!1)}gB();CB();async function $L(A,Q,B,$=!1){if(!$)UB("Create channel");B.apikey=B.apikey||dQ();let I=await GB($).catch(()=>{return});if(Q=cB(Q,I?.config),!B.apikey){if(!$)w.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!Q){if(!$)w.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let E=await FB(B.apikey,B.supaHost,B.supaAnon,$);if(await x8(E,Q,$),await D1(E,B.apikey),await Q8(E,B.apikey,Q,3,$,!0),!$)w.info(`Creating channel ${Q}#${A} to Capgo`);let G=await z8(E,Q),J=await D1(E,B.apikey),Y=await WPA(E,{name:A,app_id:Q,version:null,created_by:J,owner_org:G,allow_device_self_set:B.selfAssign??!1,public:B.default??!1});if(Y.error){if(!$)w.error(`Cannot create Channel \uD83D\uDE40
909
909
  ${VA(Y.error)}`);throw Error(`Cannot create channel: ${VA(Y.error)}`)}if(await OB(B.apikey,{channel:"channel",event:"Create channel",icon:"✅",org_id:G,tracking_version:2,tags:{"app-id":Q,channel:A},notify:!1}).catch(()=>{}),!$)w.success("Channel created ✅"),XB("Done ✅");return Y.data??!0}async function bkA(A,Q,B){await $L(A,Q,B,!1)}gB();R1();CB();async function Ke(A,Q,B,$=!1){let{quiet:I}=B;if(!I&&!$)UB("List current bundle");B.apikey=B.apikey||dQ(I);let E=await GB();if(Q=cB(Q,E?.config),!B.apikey){if(!$)w.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!Q){if(!$)w.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let G=await FB(B.apikey,B.supaHost,B.supaAnon);if(await x8(G,Q,$),await D1(G,B.apikey),await Q8(G,B.apikey,Q,1,$,!0),!A){if(!$)w.error("Please provide a channel to get the bundle from.");throw Error("Channel name missing")}let{data:J,error:Y}=await XZ("channels.currentBundle",()=>G.from("channels").select("version ( name )").eq("name",A).eq("app_id",Q).limit(1));if(Y||!J?.length){if(!$)w.error(`Error retrieving channel ${A} for app ${Q}. Perhaps the channel does not exist?`);throw Error(`Channel ${A} not found for app ${Q}`)}let{version:X}=J[0];if(QB({channel:"channel",event:"Channel Current Bundle Viewed",icon:"\uD83D\uDCE6",tags:{has_bundle:Boolean(X)}}),!X){if(!$)w.error(`Error retrieving channel ${A} for app ${Q}. Perhaps the channel does not exist?`);throw Error(`Channel ${A} does not have a bundle linked`)}if(!$)if(!I)w.info(`Current bundle for channel ${A} is ${X.name}`);else w.info(X.name);return X.name}async function gkA(A,Q,B){return Ke(A,Q,B)}gB();CB();async function qe(A,Q,B,$=!1){if(!$)UB("Delete channel");B.apikey=B.apikey||dQ();let I=await GB();if(Q=cB(Q,I?.config),!B.apikey){if(!$)w.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!Q){if(!$)w.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let E=await FB(B.apikey,B.supaHost,B.supaAnon);await x8(E,Q,$);let G=await D1(E,B.apikey);if(await Q8(E,B.apikey,Q,4,$,!0),B.deleteBundle&&!$)w.info(`Deleting bundle ${Q}#${A} from Capgo`);if(B.deleteBundle){let C=await ZPA(E,Q,A);if(C?.name&&!$)w.info(`Deleting bundle ${C.name} from Capgo`);if(C?.name)await zt(E,Q,C.name)}let{data:J,error:Y}=await KPA(E,Q,A);if(Y||!J){if(!$)w.error(`Channel ${A} not found`);if(B.successIfNotFound){if(!$)w.success(`Channel ${A} not found and successIfNotFound is true`);return!0}throw Error(`Channel ${A} not found`)}let{error:X}=await qPA(E,Q,J.id);if(X){if(!$)w.error(`Cannot delete channel devices: ${VA(X)}`);throw Error(`Cannot delete channel devices: ${VA(X)}`)}if(!$)w.info(`Deleting channel ${Q}#${A} from Capgo`);let H=await CPA(E,A,Q,G);if(H.error){if(!$)w.error(`Cannot delete Channel \uD83D\uDE40 ${VA(H.error)}`);throw Error(`Cannot delete channel: ${VA(H.error)}`)}let F=await z8(E,Q);if(await OB(B.apikey,{channel:"channel",event:"Delete channel",icon:"✅",org_id:F,tracking_version:2,tags:{"app-id":Q,channel:A},notify:!1}).catch(()=>{}),!$)w.success("Channel deleted"),XB("Done ✅");return!0}async function ykA(A,Q,B){return qe(A,Q,B,!1)}gB();CB();async function Ze(A,Q,B=!1){if(!B)UB("List channels");Q.apikey=Q.apikey||dQ();let $=await GB();if(A=cB(A,$?.config),!Q.apikey){if(!B)w.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!A){if(!B)w.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let I=await FB(Q.apikey,Q.supaHost,Q.supaAnon);await x8(I,A,B);let E=await z8(I,A);if(await Q8(I,Q.apikey,A,1,B,!0),!B)w.info("Querying available channels in Capgo");let G=await zPA(I,A);if(!B)w.info(`Active channels in Capgo: ${G?.length??0}`),MPA(G);if(await OB(Q.apikey,{channel:"channel",event:"List channel",icon:"✅",org_id:E,tracking_version:2,tags:{"app-id":A},notify:!1}).catch(()=>{}),!B)XB("Done ✅");return G}async function fkA(A,Q){return Ze(A,Q,!1)}gB();CB();function hkA(A){let Q=A.map((B)=>{let $=Z9(B);return[B.name,B.localVersion||"-",B.remoteVersion||"-",$.compatible?"✅":"❌",$.message]});w.info(k7({headers:["Package","Local","Remote","Status","Details"],rows:Q}))}var ukA=["major","minor","metadata","patch","none"];async function Me(A,Q,B,$=!1){if(!$)UB("Set channel");B.apikey=B.apikey||dQ();let I=await GB();if(Q=cB(Q,I?.config),!B.apikey){if(!$)w.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!Q){if(!$)w.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}if(!A){if(!$)w.error("Missing argument, you need to provide a channel");throw Error("Missing channel id")}let E=await FB(B.apikey,B.supaHost,B.supaAnon);await x8(E,Q,$);let G=await D1(E,B.apikey);await Q8(E,B.apikey,Q,3,$,!0);let J=await z8(E,Q),{bundle:Y,state:X,downgrade:H,latest:F,latestRemote:C,ios:K,android:Z,selfAssign:M,disableAutoUpdate:N,dev:O,emulator:j,device:R,prod:S}=B;if(F&&Y){if(!$)w.error("Cannot set latest and bundle at the same time");throw Error("Cannot set both latest and bundle simultaneously")}if(C&&Y){if(!$)w.error("Cannot set latest remote and bundle at the same time");throw Error("Cannot set both latest remote and bundle simultaneously")}if(C&&F){if(!$)w.error("Cannot set latest remote and latest at the same time");throw Error("Cannot set both latest remote and latest simultaneously")}if(Y==null&&X==null&&F==null&&C==null&&H==null&&K==null&&Z==null&&M==null&&O==null&&j==null&&R==null&&S==null&&N==null){if(!$)w.error("Missing argument, you need to provide a option to set");throw Error("No channel option provided")}await MFA(E,J,B.apikey,Q);let T={created_by:G,app_id:Q,name:A,owner_org:J,version:void 0},{error:x}=await E.from("channels").select().eq("app_id",Q).eq("name",A).single();if(x){if(!$)w.error(`Cannot find channel ${A}`);throw Error(`Cannot find channel ${A}`)}let l=F?I?.config?.plugins?.CapacitorUpdater?.version||DJ("",B.packageJson):Y;if(l!=null){let{data:m,error:s}=await E.from("app_versions").select().eq("app_id",Q).eq("name",l).eq("user_id",G).eq("deleted",!1).single();if(s||!m){if(!$)w.error(`Cannot find version ${l}`);throw Error(`Cannot find version ${l}`)}if(!B.ignoreMetadataCheck){let{finalCompatibility:p,localDependencies:UA}=await Sn(E,Q,A,m.native_packages??[]),FA=p.filter((LA)=>!l6(LA));if(UA.length>0&&FA.length>0){if(!$)w.warn(`Bundle NOT compatible with ${A} channel`),w.warn(""),hkA(p),w.warn(""),w.warn("An app store update may be required for these changes to take effect.");throw Error(`Bundle is not compatible with ${A} channel`)}if(!$)if(UA.length===0&&p.length>0)w.info(`Ignoring check compatibility with ${A} channel because the bundle does not contain any native packages`);else w.info(`Bundle is compatible with ${A} channel`)}if(!$)w.info(`Set ${Q} channel: ${A} to @${l}`);T.version=m.id}if(C){let{data:m,error:s}=await E.from("app_versions").select().eq("app_id",Q).eq("user_id",G).eq("deleted",!1).order("created_at",{ascending:!1}).single();if(s||!m){if(!$)w.error("Cannot find latest remote version");throw Error("Cannot find latest remote version")}if(!B.ignoreMetadataCheck){let{finalCompatibility:p}=await Sn(E,Q,A,m.native_packages??[]);if(p.filter((FA)=>!l6(FA)).length>0){if(!$)w.warn(`Bundle NOT compatible with ${A} channel`),w.warn(""),hkA(p),w.warn(""),w.warn("An app store update may be required for these changes to take effect.");throw Error(`Latest remote bundle is not compatible with ${A} channel`)}}if(!$)w.info(`Set ${Q} channel: ${A} to @${m.name}`);T.version=m.id}if(X!=null){if(X!=="normal"&&X!=="default"){if(!$)w.error(`State ${X} is not known. The possible values are: normal, default.`);throw Error(`Unknown state ${X}. Expected normal or default`)}if(!$)w.info(`Set ${Q} channel: ${A} to ${X}`);T.public=X==="default"}if(H!=null){if(!$)w.info(`Set ${Q} channel: ${A} to ${H?"allow":"disallow"} downgrade`);T.disable_auto_update_under_native=!H}if(K!=null){if(!$)w.info(`Set ${Q} channel: ${A} to ${K?"allow":"disallow"} ios update`);T.ios=!!K}if(Z!=null){if(!$)w.info(`Set ${Q} channel: ${A} to ${Z?"allow":"disallow"} android update`);T.android=!!Z}if(M!=null){if(!$)w.info(`Set ${Q} channel: ${A} to ${M?"allow":"disallow"} self assign to this channel`);T.allow_device_self_set=!!M}if(O!=null){if(!$)w.info(`Set ${Q} channel: ${A} to ${O?"allow":"disallow"} dev devices`);T.allow_dev=!!O}if(j!=null){if(!$)w.info(`Set ${Q} channel: ${A} to ${j?"allow":"disallow"} emulator devices`);T.allow_emulator=!!j}if(R!=null){if(!$)w.info(`Set ${Q} channel: ${A} to ${R?"allow":"disallow"} physical devices`);T.allow_device=!!R}if(S!=null){if(!$)w.info(`Set ${Q} channel: ${A} to ${S?"allow":"disallow"} prod builds`);T.allow_prod=!!S}if(N!=null){let m=N.toLowerCase();if(!ukA.includes(m)){if(!$)w.error(`Channel strategy ${m} is not known. The possible values are: ${ukA.join(", ")}.`);throw Error(`Unknown channel strategy ${m}`)}if(m==="metadata")m="version_number";if(T.disable_auto_update=m,!$)w.info(`Set ${Q} channel: ${A} to ${m} disable update strategy to this channel`)}let{error:e}=await gS(E,T);if(e){if(!$)w.error('Cannot set channel the upload key is not allowed to do that, use the "all" for this.');throw Error("Upload key is not allowed to set this channel")}if(B.qrPreview&&!$){let m=await dN(E,Q,A);if(!m)throw Error(`Channel ${A} not found for app ${Q}`);await Pt(E,Q,m)}if(await OB(B.apikey,{channel:"channel",event:"Set channel",icon:"✅",org_id:J,tracking_version:2,tags:{"app-id":Q},notify:!1}).catch(()=>{}),!$)XB("Done ✅");return!0}async function mkA(A,Q,B){return Me(A,Q,B,!1)}gB();import{existsSync as qkQ,mkdirSync as ZkQ,readFileSync as MkQ,writeFileSync as ze}from"node:fs";CB();function zkQ(A){return`options-${A.join("-")}`}function NkQ(A){return JSON.stringify(A)}function Ne(A){let Q="\uD83D\uDD39";if(A.includes("upload"))Q="⬆️";else if(A.includes("delete"))Q="\uD83D\uDDD1️";else if(A.includes("list"))Q="\uD83D\uDCCB";else if(A.includes("add"))Q="➕";else if(A.includes("set"))Q="⚙️";else if(A.includes("create"))Q="\uD83D\uDD28";else if(A.includes("encrypt"))Q="\uD83D\uDD12";else if(A.includes("decrypt"))Q="\uD83D\uDD13";else if(A.includes("debug"))Q="\uD83D\uDC1E";else if(A==="run")Q="\uD83D\uDCF1";else if(A.includes("doctor"))Q="\uD83D\uDC68‍⚕️";else if(A.includes("login"))Q="\uD83D\uDD11";else if(A.includes("init"))Q="\uD83D\uDE80";else if(A.includes("compatibility"))Q="\uD83E\uDDEA";else if(A.includes("cleanup"))Q="\uD83E\uDDF9";else if(A.includes("currentBundle"))Q="\uD83D\uDCE6";else if(A.includes("setting"))Q="⚙️";else if(A==="app")Q="\uD83D\uDCF1";else if(A==="bundle")Q="\uD83D\uDCE6";else if(A==="channel")Q="\uD83D\uDCE2";else if(A==="key")Q="\uD83D\uDD10";else if(A==="account")Q="\uD83D\uDC64";return Q}function ckA(A){return A.charAt(0).toUpperCase()+A.slice(1)}function LkQ(A){return{flags:A.flags,description:A.description||"",displayName:A.short||A.long||A.flags.split(" ")[0].replace(/,$/,"").trim(),type:A.required||A.optional?"string":"boolean"}}function lkA(A){let Q=A,B=Q._actionHandler!==null&&Q._actionHandler!==void 0,$=A.commands?.map(lkA)??[],I=$.length>0;return{name:A.name(),alias:A.alias()||"",description:A.description(),options:A.options.map(LkQ),subcommands:$,hasAction:B,isCommandGroup:I&&!B}}function dkA(A="./README.md",Q){let B=D8.commands.map(lkA),$=(G,J=[],Y=!1)=>{let X=G.name,H=ckA(X),F=J.length>0,C=[...J,X],K=C.join("-"),Z="#".repeat(Math.min(2+J.length,6)),M="",N=Ne(X);if(!(Y&&!F))M+=`${Z} <a id="${K}"></a> ${N} **${H}**
910
910
 
911
911
  `;if(G.alias)M+=`**Alias:** \`${G.alias}\`
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
3
  "type": "module",
4
- "version": "8.5.1",
4
+ "version": "8.5.3",
5
5
  "description": "A CLI to upload to capgo servers",
6
6
  "author": "Martin martin@capgo.app",
7
7
  "license": "Apache 2.0",
@@ -176,8 +176,8 @@
176
176
  "string-width": "^8.2.1"
177
177
  },
178
178
  "optionalDependencies": {
179
- "@capgo/cli-helper-darwin-arm64": "^1.1.0",
180
- "@capgo/cli-helper-darwin-x64": "^1.1.0"
179
+ "@capgo/cli-helper-darwin-arm64": "^1.1.1",
180
+ "@capgo/cli-helper-darwin-x64": "^1.1.1"
181
181
  },
182
182
  "devDependencies": {
183
183
  "@antfu/eslint-config": "^9.0.0",
package/dist/src/sdk.js CHANGED
@@ -124,7 +124,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
124
124
  `)}),$.__defineSetter__("stack",function(X){return[X].concat($.stack).join(`
125
125
 
126
126
  `)}),$}});var sx=E((ke0,ax)=>{var I4=l("constants"),TW0=process.cwd,yF=null,CW0=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){if(!yF)yF=TW0.call(process);return yF};try{process.cwd()}catch(D){}if(typeof process.chdir==="function"){if(bF=process.chdir,process.chdir=function(D){yF=null,bF.call(process,D)},Object.setPrototypeOf)Object.setPrototypeOf(process.chdir,bF)}var bF;ax.exports=PW0;function PW0(D){if(I4.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./))$(D);if(!D.lutimes)X(D);if(D.chown=F(D.chown),D.fchown=F(D.fchown),D.lchown=F(D.lchown),D.chmod=J(D.chmod),D.fchmod=J(D.fchmod),D.lchmod=J(D.lchmod),D.chownSync=Q(D.chownSync),D.fchownSync=Q(D.fchownSync),D.lchownSync=Q(D.lchownSync),D.chmodSync=Y(D.chmodSync),D.fchmodSync=Y(D.fchmodSync),D.lchmodSync=Y(D.lchmodSync),D.stat=U(D.stat),D.fstat=U(D.fstat),D.lstat=U(D.lstat),D.statSync=Z(D.statSync),D.fstatSync=Z(D.fstatSync),D.lstatSync=Z(D.lstatSync),D.chmod&&!D.lchmod)D.lchmod=function(O,q,w){if(w)process.nextTick(w)},D.lchmodSync=function(){};if(D.chown&&!D.lchown)D.lchown=function(O,q,w,W){if(W)process.nextTick(W)},D.lchownSync=function(){};if(CW0==="win32")D.rename=typeof D.rename!=="function"?D.rename:function(O){function q(w,W,K){var H=Date.now(),B=0;O(w,W,function M(j){if(j&&(j.code==="EACCES"||j.code==="EPERM"||j.code==="EBUSY")&&Date.now()-H<60000){if(setTimeout(function(){D.stat(W,function(z,V){if(z&&z.code==="ENOENT")O(w,W,M);else K(j)})},B),B<100)B+=10;return}if(K)K(j)})}if(Object.setPrototypeOf)Object.setPrototypeOf(q,O);return q}(D.rename);D.read=typeof D.read!=="function"?D.read:function(O){function q(w,W,K,H,B,M){var j;if(M&&typeof M==="function"){var z=0;j=function(V,N,A){if(V&&V.code==="EAGAIN"&&z<10)return z++,O.call(D,w,W,K,H,B,j);M.apply(this,arguments)}}return O.call(D,w,W,K,H,B,j)}if(Object.setPrototypeOf)Object.setPrototypeOf(q,O);return q}(D.read),D.readSync=typeof D.readSync!=="function"?D.readSync:function(O){return function(q,w,W,K,H){var B=0;while(!0)try{return O.call(D,q,w,W,K,H)}catch(M){if(M.code==="EAGAIN"&&B<10){B++;continue}throw M}}}(D.readSync);function $(O){O.lchmod=function(q,w,W){O.open(q,I4.O_WRONLY|I4.O_SYMLINK,w,function(K,H){if(K){if(W)W(K);return}O.fchmod(H,w,function(B){O.close(H,function(M){if(W)W(B||M)})})})},O.lchmodSync=function(q,w){var W=O.openSync(q,I4.O_WRONLY|I4.O_SYMLINK,w),K=!0,H;try{H=O.fchmodSync(W,w),K=!1}finally{if(K)try{O.closeSync(W)}catch(B){}else O.closeSync(W)}return H}}function X(O){if(I4.hasOwnProperty("O_SYMLINK")&&O.futimes)O.lutimes=function(q,w,W,K){O.open(q,I4.O_SYMLINK,function(H,B){if(H){if(K)K(H);return}O.futimes(B,w,W,function(M){O.close(B,function(j){if(K)K(M||j)})})})},O.lutimesSync=function(q,w,W){var K=O.openSync(q,I4.O_SYMLINK),H,B=!0;try{H=O.futimesSync(K,w,W),B=!1}finally{if(B)try{O.closeSync(K)}catch(M){}else O.closeSync(K)}return H};else if(O.futimes)O.lutimes=function(q,w,W,K){if(K)process.nextTick(K)},O.lutimesSync=function(){}}function J(O){if(!O)return O;return function(q,w,W){return O.call(D,q,w,function(K){if(G(K))K=null;if(W)W.apply(this,arguments)})}}function Y(O){if(!O)return O;return function(q,w){try{return O.call(D,q,w)}catch(W){if(!G(W))throw W}}}function F(O){if(!O)return O;return function(q,w,W,K){return O.call(D,q,w,W,function(H){if(G(H))H=null;if(K)K.apply(this,arguments)})}}function Q(O){if(!O)return O;return function(q,w,W){try{return O.call(D,q,w,W)}catch(K){if(!G(K))throw K}}}function U(O){if(!O)return O;return function(q,w,W){if(typeof w==="function")W=w,w=null;function K(H,B){if(B){if(B.uid<0)B.uid+=4294967296;if(B.gid<0)B.gid+=4294967296}if(W)W.apply(this,arguments)}return w?O.call(D,q,w,K):O.call(D,q,K)}}function Z(O){if(!O)return O;return function(q,w){var W=w?O.call(D,q,w):O.call(D,q);if(W){if(W.uid<0)W.uid+=4294967296;if(W.gid<0)W.gid+=4294967296}return W}}function G(O){if(!O)return!0;if(O.code==="ENOSYS")return!0;var q=!process.getuid||process.getuid()!==0;if(q){if(O.code==="EINVAL"||O.code==="EPERM")return!0}return!1}}});var $_=E((ye0,D_)=>{var ex=l("stream").Stream;D_.exports=SW0;function SW0(D){return{ReadStream:$,WriteStream:X};function $(J,Y){if(!(this instanceof $))return new $(J,Y);ex.call(this);var F=this;this.path=J,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,Y=Y||{};var Q=Object.keys(Y);for(var U=0,Z=Q.length;U<Z;U++){var G=Q[U];this[G]=Y[G]}if(this.encoding)this.setEncoding(this.encoding);if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!=="number")throw TypeError("end must be a Number");if(this.start>this.end)throw Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){F._read()});return}D.open(this.path,this.flags,this.mode,function(O,q){if(O){F.emit("error",O),F.readable=!1;return}F.fd=q,F.emit("open",q),F._read()})}function X(J,Y){if(!(this instanceof X))return new X(J,Y);ex.call(this),this.path=J,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,Y=Y||{};var F=Object.keys(Y);for(var Q=0,U=F.length;Q<U;Q++){var Z=F[Q];this[Z]=Y[Z]}if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.start<0)throw Error("start must be >= zero");this.pos=this.start}if(this.busy=!1,this._queue=[],this.fd===null)this._open=D.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush()}}});var J_=E((be0,X_)=>{X_.exports=uW0;var vW0=Object.getPrototypeOf||function(D){return D.__proto__};function uW0(D){if(D===null||typeof D!=="object")return D;if(D instanceof Object)var $={__proto__:vW0(D)};else var $=Object.create(null);return Object.getOwnPropertyNames(D).forEach(function(X){Object.defineProperty($,X,Object.getOwnPropertyDescriptor(D,X))}),$}});var mD=E((ge0,NW)=>{var xD=l("fs"),xW0=sx(),_W0=$_(),fW0=J_(),gF=l("util"),Z1,mF;if(typeof Symbol==="function"&&typeof Symbol.for==="function")Z1=Symbol.for("graceful-fs.queue"),mF=Symbol.for("graceful-fs.previous");else Z1="___graceful-fs.queue",mF="___graceful-fs.previous";function kW0(){}function F_(D,$){Object.defineProperty(D,Z1,{get:function(){return $}})}var n8=kW0;if(gF.debuglog)n8=gF.debuglog("gfs4");else if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))n8=function(){var D=gF.format.apply(gF,arguments);D="GFS4: "+D.split(/\n/).join(`
127
- GFS4: `),console.error(D)};if(!xD[Z1]){if(HW=global[Z1]||[],F_(xD,HW),xD.close=function(D){function $(X,J){return D.call(xD,X,function(Y){if(!Y)Y_();if(typeof J==="function")J.apply(this,arguments)})}return Object.defineProperty($,mF,{value:D}),$}(xD.close),xD.closeSync=function(D){function $(X){D.apply(xD,arguments),Y_()}return Object.defineProperty($,mF,{value:D}),$}(xD.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){n8(xD[Z1]),l("assert").equal(xD[Z1].length,0)})}var HW;if(!global[Z1])F_(global,xD[Z1]);NW.exports=zW(fW0(xD));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!xD.__patched)NW.exports=zW(xD),xD.__patched=!0;function zW(D){xW0(D),D.gracefulify=zW,D.createReadStream=N,D.createWriteStream=A;var $=D.readFile;D.readFile=X;function X(I,x,P){if(typeof x==="function")P=x,x=null;return m(I,x,P);function m(b,p,k,R){return $(b,p,function(S){if(S&&(S.code==="EMFILE"||S.code==="ENFILE"))x5([m,[b,p,k],S,R||Date.now(),Date.now()]);else if(typeof k==="function")k.apply(this,arguments)})}}var J=D.writeFile;D.writeFile=Y;function Y(I,x,P,m){if(typeof P==="function")m=P,P=null;return b(I,x,P,m);function b(p,k,R,S,v){return J(p,k,R,function(f){if(f&&(f.code==="EMFILE"||f.code==="ENFILE"))x5([b,[p,k,R,S],f,v||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var F=D.appendFile;if(F)D.appendFile=Q;function Q(I,x,P,m){if(typeof P==="function")m=P,P=null;return b(I,x,P,m);function b(p,k,R,S,v){return F(p,k,R,function(f){if(f&&(f.code==="EMFILE"||f.code==="ENFILE"))x5([b,[p,k,R,S],f,v||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var U=D.copyFile;if(U)D.copyFile=Z;function Z(I,x,P,m){if(typeof P==="function")m=P,P=0;return b(I,x,P,m);function b(p,k,R,S,v){return U(p,k,R,function(f){if(f&&(f.code==="EMFILE"||f.code==="ENFILE"))x5([b,[p,k,R,S],f,v||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var G=D.readdir;D.readdir=q;var O=/^v[0-5]\./;function q(I,x,P){if(typeof x==="function")P=x,x=null;var m=O.test(process.version)?function(k,R,S,v){return G(k,b(k,R,S,v))}:function(k,R,S,v){return G(k,R,b(k,R,S,v))};return m(I,x,P);function b(p,k,R,S){return function(v,f){if(v&&(v.code==="EMFILE"||v.code==="ENFILE"))x5([m,[p,k,R],v,S||Date.now(),Date.now()]);else{if(f&&f.sort)f.sort();if(typeof R==="function")R.call(this,v,f)}}}}if(process.version.substr(0,4)==="v0.8"){var w=_W0(D);M=w.ReadStream,z=w.WriteStream}var W=D.ReadStream;if(W)M.prototype=Object.create(W.prototype),M.prototype.open=j;var K=D.WriteStream;if(K)z.prototype=Object.create(K.prototype),z.prototype.open=V;Object.defineProperty(D,"ReadStream",{get:function(){return M},set:function(I){M=I},enumerable:!0,configurable:!0}),Object.defineProperty(D,"WriteStream",{get:function(){return z},set:function(I){z=I},enumerable:!0,configurable:!0});var H=M;Object.defineProperty(D,"FileReadStream",{get:function(){return H},set:function(I){H=I},enumerable:!0,configurable:!0});var B=z;Object.defineProperty(D,"FileWriteStream",{get:function(){return B},set:function(I){B=I},enumerable:!0,configurable:!0});function M(I,x){if(this instanceof M)return W.apply(this,arguments),this;else return M.apply(Object.create(M.prototype),arguments)}function j(){var I=this;_(I.path,I.flags,I.mode,function(x,P){if(x){if(I.autoClose)I.destroy();I.emit("error",x)}else I.fd=P,I.emit("open",P),I.read()})}function z(I,x){if(this instanceof z)return K.apply(this,arguments),this;else return z.apply(Object.create(z.prototype),arguments)}function V(){var I=this;_(I.path,I.flags,I.mode,function(x,P){if(x)I.destroy(),I.emit("error",x);else I.fd=P,I.emit("open",P)})}function N(I,x){return new D.ReadStream(I,x)}function A(I,x){return new D.WriteStream(I,x)}var u=D.open;D.open=_;function _(I,x,P,m){if(typeof P==="function")m=P,P=null;return b(I,x,P,m);function b(p,k,R,S,v){return u(p,k,R,function(f,h){if(f&&(f.code==="EMFILE"||f.code==="ENFILE"))x5([b,[p,k,R,S],f,v||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}return D}function x5(D){n8("ENQUEUE",D[0].name,D[1]),xD[Z1].push(D),VW()}var hF;function Y_(){var D=Date.now();for(var $=0;$<xD[Z1].length;++$)if(xD[Z1][$].length>2)xD[Z1][$][3]=D,xD[Z1][$][4]=D;VW()}function VW(){if(clearTimeout(hF),hF=void 0,xD[Z1].length===0)return;var D=xD[Z1].shift(),$=D[0],X=D[1],J=D[2],Y=D[3],F=D[4];if(Y===void 0)n8("RETRY",$.name,X),$.apply(null,X);else if(Date.now()-Y>=60000){n8("TIMEOUT",$.name,X);var Q=X.pop();if(typeof Q==="function")Q.call(null,J)}else{var U=Date.now()-F,Z=Math.max(F-Y,1),G=Math.min(Z*1.2,100);if(U>=G)n8("RETRY",$.name,X),$.apply(null,X.concat([Y]));else xD[Z1].push(D)}if(hF===void 0)hF=setTimeout(VW,0)}});var U_=E((he0,Q_)=>{function E$(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)}Q_.exports=E$;E$.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};E$.prototype.stop=function(){if(this._timeout)clearTimeout(this._timeout);this._timeouts=[],this._cachedTimeouts=null};E$.prototype.retry=function(D){if(this._timeout)clearTimeout(this._timeout);if(!D)return!1;var $=new Date().getTime();if(D&&$-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error("RetryOperation timeout occurred")),!1;this._errors.push(D);var X=this._timeouts.shift();if(X===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),X=this._timeouts.shift();else return!1;var J=this,Y=setTimeout(function(){if(J._attempts++,J._operationTimeoutCb){if(J._timeout=setTimeout(function(){J._operationTimeoutCb(J._attempts)},J._operationTimeout),J._options.unref)J._timeout.unref()}J._fn(J._attempts)},X);if(this._options.unref)Y.unref();return!0};E$.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)};E$.prototype.try=function(D){console.log("Using RetryOperation.try() is deprecated"),this.attempt(D)};E$.prototype.start=function(D){console.log("Using RetryOperation.start() is deprecated"),this.attempt(D)};E$.prototype.start=E$.prototype.try;E$.prototype.errors=function(){return this._errors};E$.prototype.attempts=function(){return this._attempts};E$.prototype.mainError=function(){if(this._errors.length===0)return null;var D={},$=null,X=0;for(var J=0;J<this._errors.length;J++){var Y=this._errors[J],F=Y.message,Q=(D[F]||0)+1;if(D[F]=Q,Q>=X)$=Y,X=Q}return $}});var G_=E((bW0)=>{var yW0=U_();bW0.operation=function(D){var $=bW0.timeouts(D);return new yW0($,{forever:D&&D.forever,unref:D&&D.unref,maxRetryTime:D&&D.maxRetryTime})};bW0.timeouts=function(D){if(D instanceof Array)return[].concat(D);var $={retries:10,factor:2,minTimeout:1000,maxTimeout:1/0,randomize:!1};for(var X in D)$[X]=D[X];if($.minTimeout>$.maxTimeout)throw Error("minTimeout is greater than maxTimeout");var J=[];for(var Y=0;Y<$.retries;Y++)J.push(this.createTimeout(Y,$));if(D&&D.forever&&!J.length)J.push(this.createTimeout(Y,$));return J.sort(function(F,Q){return F-Q}),J};bW0.createTimeout=function(D,$){var X=$.randomize?Math.random()+1:1,J=Math.round(X*$.minTimeout*Math.pow($.factor,D));return J=Math.min(J,$.maxTimeout),J};bW0.wrap=function(D,$,X){if($ instanceof Array)X=$,$=null;if(!X){X=[];for(var J in D)if(typeof D[J]==="function")X.push(J)}for(var Y=0;Y<X.length;Y++){var F=X[Y],Q=D[F];D[F]=function(Z){var G=bW0.operation($),O=Array.prototype.slice.call(arguments,1),q=O.pop();O.push(function(w){if(G.retry(w))return;if(w)arguments[0]=G.mainError();q.apply(this,arguments)}),G.attempt(function(){Z.apply(D,O)})}.bind(D,Q),D[F].options=$}}});var O_=E((ce0,cF)=>{cF.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];if(process.platform!=="win32")cF.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")cF.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var lF=E((de0,f5)=>{var TD=global.process,l8=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(!l8(TD))f5.exports=function(){return function(){}};else{if(LW=l("assert"),i8=O_(),BW=/^win/i.test(TD.platform),_5=l("events"),typeof _5!=="function")_5=_5.EventEmitter;if(TD.__signal_exit_emitter__)sD=TD.__signal_exit_emitter__;else sD=TD.__signal_exit_emitter__=new _5,sD.count=0,sD.emitted={};if(!sD.infinite)sD.setMaxListeners(1/0),sD.infinite=!0;f5.exports=function(D,$){if(!l8(global.process))return function(){};if(LW.equal(typeof D,"function","a callback must be provided for exit handler"),p8===!1)dF();var X="exit";if($&&$.alwaysLast)X="afterexit";var J=function(){if(sD.removeListener(X,D),sD.listeners("exit").length===0&&sD.listeners("afterexit").length===0)v2()};return sD.on(X,D),J},v2=function(){if(!p8||!l8(global.process))return;p8=!1,i8.forEach(function($){try{TD.removeListener($,u2[$])}catch(X){}}),TD.emit=x2,TD.reallyExit=nF,sD.count-=1},f5.exports.unload=v2,E4=function($,X,J){if(sD.emitted[$])return;sD.emitted[$]=!0,sD.emit($,X,J)},u2={},i8.forEach(function(D){u2[D]=function(){if(!l8(global.process))return;var X=TD.listeners(D);if(X.length===sD.count){if(v2(),E4("exit",null,D),E4("afterexit",null,D),BW&&D==="SIGHUP")D="SIGINT";TD.kill(TD.pid,D)}}}),f5.exports.signals=function(){return i8},p8=!1,dF=function(){if(p8||!l8(global.process))return;p8=!0,sD.count+=1,i8=i8.filter(function($){try{return TD.on($,u2[$]),!0}catch(X){return!1}}),TD.emit=jW,TD.reallyExit=MW},f5.exports.load=dF,nF=TD.reallyExit,MW=function($){if(!l8(global.process))return;TD.exitCode=$||0,E4("exit",TD.exitCode,null),E4("afterexit",TD.exitCode,null),nF.call(TD,TD.exitCode)},x2=TD.emit,jW=function($,X){if($==="exit"&&l8(global.process)){if(X!==void 0)TD.exitCode=X;var J=x2.apply(this,arguments);return E4("exit",TD.exitCode,null),E4("afterexit",TD.exitCode,null),J}else return x2.apply(this,arguments)}}var LW,i8,BW,_5,sD,v2,E4,u2,p8,dF,nF,MW,x2,jW});var w_=E((nW0,IW)=>{var q_=Symbol();function cW0(D,$,X){let J=$[q_];if(J)return $.stat(D,(F,Q)=>{if(F)return X(F);X(null,Q.mtime,J)});let Y=new Date(Math.ceil(Date.now()/1000)*1000+5);$.utimes(D,Y,Y,(F)=>{if(F)return X(F);$.stat(D,(Q,U)=>{if(Q)return X(Q);let Z=U.mtime.getTime()%1000===0?"s":"ms";Object.defineProperty($,q_,{value:Z}),X(null,U.mtime,Z)})})}function dW0(D){let $=Date.now();if(D==="s")$=Math.ceil($/1000)*1000;return new Date($)}nW0.probe=cW0;nW0.getMtime=dW0});var V_=E((eW0,f2)=>{var pW0=l("path"),RW=mD(),rW0=G_(),tW0=lF(),W_=w_(),c6={};function _2(D,$){return $.lockfilePath||`${D}.lock`}function TW(D,$,X){if(!$.realpath)return X(null,pW0.resolve(D));$.fs.realpath(D,X)}function AW(D,$,X){let J=_2(D,$);$.fs.mkdir(J,(Y)=>{if(!Y)return W_.probe(J,$.fs,(F,Q,U)=>{if(F)return $.fs.rmdir(J,()=>{}),X(F);X(null,Q,U)});if(Y.code!=="EEXIST")return X(Y);if($.stale<=0)return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));$.fs.stat(J,(F,Q)=>{if(F){if(F.code==="ENOENT")return AW(D,{...$,stale:0},X);return X(F)}if(!K_(Q,$))return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));H_(D,$,(U)=>{if(U)return X(U);AW(D,{...$,stale:0},X)})})})}function K_(D,$){return D.mtime.getTime()<Date.now()-$.stale}function H_(D,$,X){$.fs.rmdir(_2(D,$),(J)=>{if(J&&J.code!=="ENOENT")return X(J);X()})}function iF(D,$){let X=c6[D];if(X.updateTimeout)return;if(X.updateDelay=X.updateDelay||$.update,X.updateTimeout=setTimeout(()=>{X.updateTimeout=null,$.fs.stat(X.lockfilePath,(J,Y)=>{let F=X.lastUpdate+$.stale<Date.now();if(J){if(J.code==="ENOENT"||F)return EW(D,X,Object.assign(J,{code:"ECOMPROMISED"}));return X.updateDelay=1000,iF(D,$)}if(X.mtime.getTime()!==Y.mtime.getTime())return EW(D,X,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let U=W_.getMtime(X.mtimePrecision);$.fs.utimes(X.lockfilePath,U,U,(Z)=>{let G=X.lastUpdate+$.stale<Date.now();if(X.released)return;if(Z){if(Z.code==="ENOENT"||G)return EW(D,X,Object.assign(Z,{code:"ECOMPROMISED"}));return X.updateDelay=1000,iF(D,$)}X.mtime=U,X.lastUpdate=Date.now(),X.updateDelay=null,iF(D,$)})})},X.updateDelay),X.updateTimeout.unref)X.updateTimeout.unref()}function EW(D,$,X){if($.released=!0,$.updateTimeout)clearTimeout($.updateTimeout);if(c6[D]===$)delete c6[D];$.options.onCompromised(X)}function oW0(D,$,X){$={stale:1e4,update:null,realpath:!0,retries:0,fs:RW,onCompromised:(J)=>{throw J},...$},$.retries=$.retries||0,$.retries=typeof $.retries==="number"?{retries:$.retries}:$.retries,$.stale=Math.max($.stale||0,2000),$.update=$.update==null?$.stale/2:$.update||0,$.update=Math.max(Math.min($.update,$.stale/2),1000),TW(D,$,(J,Y)=>{if(J)return X(J);let F=rW0.operation($.retries);F.attempt(()=>{AW(Y,$,(Q,U,Z)=>{if(F.retry(Q))return;if(Q)return X(F.mainError());let G=c6[Y]={lockfilePath:_2(Y,$),mtime:U,mtimePrecision:Z,options:$,lastUpdate:Date.now()};iF(Y,$),X(null,(O)=>{if(G.released)return O&&O(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));z_(Y,{...$,realpath:!1},O)})})})})}function z_(D,$,X){$={fs:RW,realpath:!0,...$},TW(D,$,(J,Y)=>{if(J)return X(J);let F=c6[Y];if(!F)return X(Object.assign(Error("Lock is not acquired/owned by you"),{code:"ENOTACQUIRED"}));F.updateTimeout&&clearTimeout(F.updateTimeout),F.released=!0,delete c6[Y],H_(Y,$,X)})}function aW0(D,$,X){$={stale:1e4,realpath:!0,fs:RW,...$},$.stale=Math.max($.stale||0,2000),TW(D,$,(J,Y)=>{if(J)return X(J);$.fs.stat(_2(Y,$),(F,Q)=>{if(F)return F.code==="ENOENT"?X(null,!1):X(F);return X(null,!K_(Q,$))})})}function sW0(){return c6}tW0(()=>{for(let D in c6){let $=c6[D].options;try{$.fs.rmdirSync(_2(D,$))}catch(X){}}});eW0.lock=oW0;eW0.unlock=z_;eW0.check=aW0;eW0.getLocks=sW0});var L_=E((ne0,N_)=>{var YK0=mD();function FK0(D){let $=["mkdir","realpath","stat","rmdir","utimes"],X={...D};return $.forEach((J)=>{X[J]=(...Y)=>{let F=Y.pop(),Q;try{Q=D[`${J}Sync`](...Y)}catch(U){return F(U)}F(null,Q)}}),X}function QK0(D){return(...$)=>new Promise((X,J)=>{$.push((Y,F)=>{if(Y)J(Y);else X(F)}),D(...$)})}function UK0(D){return(...$)=>{let X,J;if($.push((Y,F)=>{X=Y,J=F}),D(...$),X)throw X;return J}}function ZK0(D){if(D={...D},D.fs=FK0(D.fs||YK0),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}N_.exports={toPromise:QK0,toSync:UK0,toSyncOptions:ZK0}});var M_=E((le0,A4)=>{var k5=V_(),{toPromise:pF,toSync:rF,toSyncOptions:CW}=L_();async function B_(D,$){let X=await pF(k5.lock)(D,$);return pF(X)}function GK0(D,$){let X=rF(k5.lock)(D,CW($));return rF(X)}function OK0(D,$){return pF(k5.unlock)(D,$)}function qK0(D,$){return rF(k5.unlock)(D,CW($))}function wK0(D,$){return pF(k5.check)(D,$)}function WK0(D,$){return rF(k5.check)(D,CW($))}A4.exports=B_;A4.exports.lock=B_;A4.exports.unlock=OK0;A4.exports.lockSync=GK0;A4.exports.unlockSync=qK0;A4.exports.check=wK0;A4.exports.checkSync=WK0});var C_=E((R_)=>{Object.defineProperty(R_,"__esModule",{value:!0});R_.canStoreURLs=R_.FileUrlStorage=void 0;var j_=l("fs"),KK0=zK0(ox()),I_=HK0(M_());function A_(D){if(typeof WeakMap!="function")return null;var $=new WeakMap,X=new WeakMap;return(A_=function(J){return J?X:$})(D)}function HK0(D,$){if(!$&&D&&D.__esModule)return D;if(D===null||typeof D!="object"&&typeof D!="function")return{default:D};var X=A_($);if(X&&X.has(D))return X.get(D);var J={__proto__:null},Y=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var F in D)if(F!=="default"&&{}.hasOwnProperty.call(D,F)){var Q=Y?Object.getOwnPropertyDescriptor(D,F):null;Q&&(Q.get||Q.set)?Object.defineProperty(J,F,Q):J[F]=D[F]}return J.default=D,X&&X.set(D,J),J}function zK0(D){return D&&D.__esModule?D:{default:D}}function k2(D){return k2=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},k2(D)}function VK0(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function E_(D,$){for(var X=0;X<$.length;X++){var J=$[X];if(J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J)J.writable=!0;Object.defineProperty(D,LK0(J.key),J)}}function NK0(D,$,X){if($)E_(D.prototype,$);if(X)E_(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function LK0(D){var $=BK0(D,"string");return k2($)=="symbol"?$:$+""}function BK0(D,$){if(k2(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var J=X.call(D,$||"default");if(k2(J)!="object")return J;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var ie0=R_.canStoreURLs=!0,pe0=R_.FileUrlStorage=function(){function D($){VK0(this,D),this.path=$}return NK0(D,[{key:"findAllUploads",value:function(){var X=this;return new Promise(function(J,Y){X._getItems("tus::",function(F,Q){if(F)Y(F);else J(Q)})})}},{key:"findUploadsByFingerprint",value:function(X){var J=this;return new Promise(function(Y,F){J._getItems("tus::".concat(X),function(Q,U){if(Q)F(Q);else Y(U)})})}},{key:"removeUpload",value:function(X){var J=this;return new Promise(function(Y,F){J._removeItem(X,function(Q){if(Q)F(Q);else Y()})})}},{key:"addUpload",value:function(X,J){var Y=this,F=Math.round(Math.random()*1000000000000),Q="tus::".concat(X,"::").concat(F);return new Promise(function(U,Z){Y._setItem(Q,J,function(G){if(G)Z(G);else U(Q)})})}},{key:"_setItem",value:function(X,J,Y){var F=this;I_.lock(this.path,this._lockfileOptions()).then(function(Q){Y=F._releaseAndCb(Q,Y),F._getData(function(U,Z){if(U){Y(U);return}Z[X]=J,F._writeData(Z,function(G){return Y(G)})})}).catch(Y)}},{key:"_getItems",value:function(X,J){this._getData(function(Y,F){if(Y){J(Y);return}var Q=Object.keys(F).filter(function(U){return U.startsWith(X)}).map(function(U){var Z=F[U];return Z.urlStorageKey=U,Z});J(null,Q)})}},{key:"_removeItem",value:function(X,J){var Y=this;I_.lock(this.path,this._lockfileOptions()).then(function(F){J=Y._releaseAndCb(F,J),Y._getData(function(Q,U){if(Q){J(Q);return}delete U[X],Y._writeData(U,function(Z){return J(Z)})})}).catch(J)}},{key:"_lockfileOptions",value:function(){return{realpath:!1,retries:{retries:5,minTimeout:20}}}},{key:"_releaseAndCb",value:function(X,J){return function(Y){if(Y){X().then(function(){return J(Y)}).catch(function(F){return J((0,KK0.default)([Y,F]))});return}X().then(J).catch(J)}}},{key:"_writeData",value:function(X,J){var Y={encoding:"utf8",mode:432,flag:"w"};(0,j_.writeFile)(this.path,JSON.stringify(X),Y,function(F){return J(F)})}},{key:"_getData",value:function(X){(0,j_.readFile)(this.path,"utf8",function(J,Y){if(J){if(J.code==="ENOENT")X(null,{});else X(J);return}try{Y=!Y.trim().length?{}:JSON.parse(Y)}catch(F){X(F);return}X(null,Y)})}}])}()});var oF=E((R4)=>{Object.defineProperty(R4,"__esModule",{value:!0});Object.defineProperty(R4,"DefaultHttpStack",{enumerable:!0,get:function(){return u_.default}});Object.defineProperty(R4,"DetailedError",{enumerable:!0,get:function(){return jK0.default}});Object.defineProperty(R4,"FileUrlStorage",{enumerable:!0,get:function(){return x_.FileUrlStorage}});Object.defineProperty(R4,"StreamSource",{enumerable:!0,get:function(){return TK0.default}});R4.Upload=void 0;Object.defineProperty(R4,"canStoreURLs",{enumerable:!0,get:function(){return x_.canStoreURLs}});R4.defaultOptions=void 0;Object.defineProperty(R4,"enableDebugLog",{enumerable:!0,get:function(){return IK0.enableDebugLog}});R4.isSupported=void 0;var jK0=r8(Cw()),IK0=Pw(),EK0=r8(Mv()),PW=r8(Du()),AK0=r8(Bu()),RK0=r8(Au()),u_=r8(mu()),TK0=r8(hw()),x_=C_();function r8(D){return D&&D.__esModule?D:{default:D}}function b5(D){return b5=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},b5(D)}function CK0(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function P_(D,$){for(var X=0;X<$.length;X++){var J=$[X];if(J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J)J.writable=!0;Object.defineProperty(D,f_(J.key),J)}}function PK0(D,$,X){if($)P_(D.prototype,$);if(X)P_(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function SK0(D,$,X){return $=tF($),vK0(D,__()?Reflect.construct($,X||[],tF(D).constructor):$.apply(D,X))}function vK0(D,$){if($&&(b5($)==="object"||typeof $==="function"))return $;else if($!==void 0)throw TypeError("Derived constructors may only return object or undefined");return uK0(D)}function uK0(D){if(D===void 0)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return D}function __(){try{var D=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch($){}return(__=function(){return!!D})()}function tF(D){return tF=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(X){return X.__proto__||Object.getPrototypeOf(X)},tF(D)}function xK0(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}),$)SW(D,$)}function SW(D,$){return SW=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(J,Y){return J.__proto__=Y,J},SW(D,$)}function S_(D,$){var X=Object.keys(D);if(Object.getOwnPropertySymbols){var J=Object.getOwnPropertySymbols(D);$&&(J=J.filter(function(Y){return Object.getOwnPropertyDescriptor(D,Y).enumerable})),X.push.apply(X,J)}return X}function y5(D){for(var $=1;$<arguments.length;$++){var X=arguments[$]!=null?arguments[$]:{};$%2?S_(Object(X),!0).forEach(function(J){_K0(D,J,X[J])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(X)):S_(Object(X)).forEach(function(J){Object.defineProperty(D,J,Object.getOwnPropertyDescriptor(X,J))})}return D}function _K0(D,$,X){if($=f_($),$ in D)Object.defineProperty(D,$,{value:X,enumerable:!0,configurable:!0,writable:!0});else D[$]=X;return D}function f_(D){var $=fK0(D,"string");return b5($)=="symbol"?$:$+""}function fK0(D,$){if(b5(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var J=X.call(D,$||"default");if(b5(J)!="object")return J;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var v_=R4.defaultOptions=y5(y5({},PW.default.defaultOptions),{},{httpStack:new u_.default,fileReader:new AK0.default,urlStorage:new EK0.default,fingerprint:RK0.default}),te0=R4.Upload=function(D){function $(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,J=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return CK0(this,$),J=y5(y5({},v_),J),SK0(this,$,[X,J])}return xK0($,D),PK0($,null,[{key:"terminate",value:function(J){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Y=y5(y5({},v_),Y),PW.default.terminate(J,Y)}}])}(PW.default),oe0=R4.isSupported=!0});var B1;var T4=r(()=>{B1={name:"@capgo/cli",type:"module",version:"8.5.1",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/capgo/tree/main/cli#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/capgo.git",directory:"cli"},bugs:{url:"https://github.com/Cap-go/capgo/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk","tanstack-intent"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},files:["!skills/_artifacts","dist","skills"],engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && bun build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"bunx --bun supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsgo --project tsconfig.tsgo.json --noEmit",lint:"bun run lint:ox","lint:ox":"oxlint --config ../.oxlintrc.json src","lint:fix":"oxlint --config ../.oxlintrc.json --fix src","check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:fail-on-incompatible":"bun test/test-fail-on-incompatible.mjs","test:credentials":"bun test/test-credentials.mjs","test:asc-key-protocol":"bun test/test-asc-key-protocol.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:android-service-account-validation":"bun test/test-android-service-account-validation.mjs","test:build-zip-filter":"bun test/test-build-zip-filter.mjs","test:checksum":"bun test/test-checksum-algorithm.mjs","test:build-needed":"bun test/test-build-needed.mjs","test:ci-prompts":"bun test/test-ci-prompts.mjs","test:ci-secrets":"bun test/test-ci-secrets.mjs","test:android-onboarding-progress":"bun test/test-android-onboarding-progress.mjs","test:onboarding-telemetry":"bun test/test-onboarding-telemetry.mjs","test:v2-event-migration":"bun test/test-v2-event-migration.mjs","test:analytics":"bun test/test-analytics.mjs","test:analytics-error-category":"bun test/test-analytics-error-category.mjs","test:analytics-org-resolver":"bun test/test-analytics-org-resolver.mjs","test:supabase-perf":"bun test/test-supabase-perf.mjs","test:preview-qr":"bun test/test-preview-qr.mjs","test:mcp-analytics":"bun test/test-mcp-analytics.mjs","test:app-created-source":"bun test/test-app-created-source.mjs","test:doctor-analytics":"bun test/test-doctor-analytics.mjs","test:posthog-exception":"bun test/test-posthog-exception.mjs","test:onboarding-recovery":"bun test/test-onboarding-recovery.mjs","test:onboarding-progress":"bun test/test-onboarding-progress.mjs","test:onboarding-run-targets":"bun test/test-onboarding-run-targets.mjs","test:run-device-command":"bun test/test-run-device-command.mjs","test:init-app-conflict":"bun test/test-init-app-conflict.mjs","test:init-guardrails":"bun test/test-init-guardrails.mjs","test:prompt-preferences":"bun test/test-prompt-preferences.mjs","test:esm-sdk":"node test/test-sdk-esm.mjs","test:mcp":"node test/test-mcp.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh","test:platform-paths":"bun test/test-platform-paths.mjs","test:payload-split":"bun test/test-payload-split.mjs","test:macos-signing":"bun test/test-macos-signing.mjs","test:helper-dce":"bash scripts/check-helper-dce.sh","test:apple-api-import-helpers":"bun test/test-apple-api-import-helpers.mjs","test:bundle-id-detector":"bun test/test-bundle-id-detector.mjs","test:apple-api-app-list":"bun test/test-apple-api-app-list.mjs","test:apple-api-cert-create":"bun test/test-apple-api-cert-create.mjs","test:app-verification":"bun test/test-app-verification.mjs","test:pbxproj-parser":"bun test/test-pbxproj-parser.mjs","test:manifest-path-encoding":"bun test/test-manifest-path-encoding.mjs","test:self-update":"bun test/test-self-update.mjs","test:update-prompt":"bun test/test-update-prompt.mjs","test:android-tail-engine":"bun test/test-android-tail-engine.mjs","test:android-tail-render":"bun test/test-android-tail-render.mjs","test:android-tail-routing":"bun test/test-android-tail-routing.mjs","test:dev-gate-stripped":"bun test/test-dev-gate-stripped.mjs","test:frame-fit-ios-shared":"bun test/test-frame-fit-ios-shared.mjs","test:ios-confirm-app-id":"bun test/test-ios-confirm-app-id.mjs","test:ios-create-new":"bun test/test-ios-create-new.mjs","test:ios-e2e":"bun test/test-ios-e2e.mjs","test:ios-flow-contract":"bun test/test-ios-flow-contract.mjs","test:ios-import-discovery":"bun test/test-ios-import-discovery.mjs","test:ios-import-export":"bun test/test-ios-import-export.mjs","test:ios-import-pickers":"bun test/test-ios-import-pickers.mjs","test:ios-import-recovery":"bun test/test-ios-import-recovery.mjs","test:ios-recovery":"bun test/test-ios-recovery.mjs","test:ios-resume":"bun test/test-ios-resume.mjs","test:ios-tail-handoff":"bun test/test-ios-tail-handoff.mjs","test:ios-tui-render":"bun test/test-ios-tui-render.mjs","test:p8-error":"bun test/test-p8-error.mjs","test:ios-tui-routing":"bun test/test-ios-tui-routing.mjs","test:ios-updater-sync-validation":"bun test/test-ios-updater-sync-validation.mjs","test:ios-verify-app":"bun test/test-ios-verify-app.mjs","test:platform-flow-contract":"bun test/test-platform-flow-contract.mjs","test:tail-engine-shared":"bun test/test-tail-engine-shared.mjs",test:"bun run build && bun run test:helper-dce && bun run test:version-detection:setup && bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:fail-on-incompatible && bun run test:credentials && bun run test:credentials-validation && bun run test:android-service-account-validation && bun run test:build-zip-filter && bun run test:checksum && bun run test:build-needed && bun run test:ci-prompts && bun run test:ci-secrets && bun run test:android-onboarding-progress && bun run test:onboarding-telemetry && bun run test:v2-event-migration && bun run test:analytics && bun run test:analytics-error-category && bun run test:analytics-org-resolver && bun run test:supabase-perf && bun run test:preview-qr && bun run test:mcp-analytics && bun run test:app-created-source && bun run test:doctor-analytics && bun run test:posthog-exception && bun run test:build-platform-selection && bun run test:onboarding-recovery && bun run test:onboarding-progress && bun run test:onboarding-run-targets && bun run test:run-device-command && bun run test:init-app-conflict && bun run test:init-guardrails && bun run test:prompt-preferences && bun run test:esm-sdk && bun run test:mcp && bun run test:version-detection && bun run test:platform-paths && bun run test:payload-split && bun run test:manifest-path-encoding && bun run test:macos-signing && bun run test:asc-key-protocol && bun run test:apple-api-import-helpers && bun run test:bundle-id-detector && bun run test:apple-api-app-list && bun run test:app-verification && bun run test:pbxproj-parser && bun run test:ai-log-capture && bun run test:ai-analyze-flow && bun run test:ai-sse-parser && bun run test:ai-render-markdown && bun run test:ai-stream-markdown && bun run test:ai-onboarding-mode && bun run test:ai-fit && bun run test:platform-layout && bun run test:frame-fit && bun run test:onboarding-min-size && bun run test:min-size-gate && bun run test:shell-size-gate && bun run test:build-log-sanitize && bun run test:build-output-viewport && bun run test:diff-viewer-viewport && bun run test:build-complete-exit && bun run test:ai-analyze-stream && bun run test:support-mailto && bun run test:support-redact && bun run test:support-internal-log && bun run test:support-help-menu && bun run test:support-contact && bun run test:support-bundle-files && bun run test:self-update && bun run test:update-prompt && bun run test:apple-api-cert-create && bun run test:android-tail-engine && bun run test:android-tail-render && bun run test:android-tail-routing && bun run test:dev-gate-stripped && bun run test:frame-fit-ios-shared && bun run test:ios-confirm-app-id && bun run test:ios-create-new && bun run test:ios-e2e && bun run test:ios-flow-contract && bun run test:ios-import-discovery && bun run test:ios-import-export && bun run test:ios-import-pickers && bun run test:ios-import-recovery && bun run test:ios-recovery && bun run test:ios-resume && bun run test:ios-tail-handoff && bun run test:ios-tui-render && bun run test:p8-error && bun run test:ios-tui-routing && bun run test:ios-updater-sync-validation && bun run test:ios-verify-app && bun run test:platform-flow-contract && bun run test:tail-engine-shared","test:build-platform-selection":"bun test/test-build-platform-selection.mjs","test:ai-log-capture":"bun test/test-ai-log-capture.mjs","test:ai-analyze-flow":"bun test/test-ai-analyze-flow.mjs","test:ai-analyze-stream":"bun test/test-ai-analyze-stream.mjs","test:ai-sse-parser":"bun test/test-ai-sse-parser.mjs","test:ai-render-markdown":"bun test/test-ai-render-markdown.mjs","test:ai-onboarding-mode":"bun test/test-ai-onboarding-mode.mjs","test:ai-fit":"bun test/test-ai-fit.mjs","test:platform-layout":"bun test/test-platform-layout.mjs","test:frame-fit":"bun test/run-frame-fit.mjs","test:onboarding-min-size":"bun test/test-onboarding-min-size.mjs","test:min-size-gate":"bun test/test-min-size-gate.mjs","test:shell-size-gate":"bun test/test-shell-size-gate.mjs","test:build-log-sanitize":"bun test/test-build-log-sanitize.mjs","test:build-output-viewport":"bun test/test-build-output-viewport.mjs","test:diff-viewer-viewport":"bun test/test-diff-viewer-viewport.mjs","test:build-complete-exit":"bun test/test-build-complete-exit.mjs","test:ai-stream-markdown":"bun test/test-ai-stream-markdown.mjs","test:support-mailto":"bun test/test-support-mailto.mjs","test:support-redact":"bun test/test-support-redact.mjs","test:support-internal-log":"bun test/test-support-internal-log.mjs","test:support-help-menu":"bun test/test-support-help-menu.mjs","test:support-contact":"bun test/test-support-contact.mjs","test:support-bundle-files":"bun test/test-support-bundle-files.mjs"},dependencies:{"@inkjs/ui":"^2.0.0",ink:"^7.0.4","ink-spinner":"^5.0.0",jsonwebtoken:"^9.0.3","node-forge":"^1.4.0",qrcode:"^1.5.4",react:"^19.2.6","string-width":"^8.2.1"},optionalDependencies:{"@capgo/cli-helper-darwin-arm64":"^1.1.0","@capgo/cli-helper-darwin-x64":"^1.1.0"},devDependencies:{"@antfu/eslint-config":"^9.0.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.6","@capacitor/cli":"^8.3.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^1.4.0","@modelcontextprotocol/sdk":"^1.29.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.8","@supabase/supabase-js":"^2.106.2","@tanstack/intent":"^0.0.41","@types/adm-zip":"^0.5.8","@types/jsonwebtoken":"^9.0.10","@types/node":"^25.9.1","@types/node-forge":"^1.3.14","@types/prettyjson":"^0.0.33","@types/qrcode":"^1.5.6","@types/react":"^19.2.15","@types/tmp":"^0.2.6","@types/ws":"^8.18.1","@typescript/native-preview":"7.0.0-dev.20260526.1","@vercel/ncc":"^0.38.4","@xterm/headless":"^6.0.0","adm-zip":"^0.5.17","ci-info":"^4.4.0",commander:"^14.0.3",eslint:"^10.4.0","git-format-staged":"4.0.1",husky:"^9.1.7","is-wsl":"^3.1.1",micromatch:"^4.0.8",open:"^11.0.0",oxlint:"^1.67.0",partysocket:"^1.1.19",prettyjson:"^1.2.5",tmp:"^0.2.6","tus-js-client":"^4.3.1",typescript:"^6.0.3",ws:"^8.21.0",zod:"^4.4.3"}}});async function aF(D){try{let X=`https://registry.npmjs.org/${encodeURIComponent(D.toLowerCase())}`,J=await fetch(X,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});if(!J.ok)return null;return(await J.json())["dist-tags"]?.latest||null}catch{return null}}async function yK0(){let D=await aF("@capgo/cli")??"",$=D?.split(".")[0]??"";return{currentVersion:B1.version,latestVersion:D,isOutdated:!!D&&D!==B1.version,majorVersion:$}}async function VD(){let{isOutdated:D,currentVersion:$,latestVersion:X,majorVersion:J}=await yK0();if(D)L.warning(`\uD83D\uDEA8 You are using @capgo/cli@${$} it's not the latest version.
127
+ GFS4: `),console.error(D)};if(!xD[Z1]){if(HW=global[Z1]||[],F_(xD,HW),xD.close=function(D){function $(X,J){return D.call(xD,X,function(Y){if(!Y)Y_();if(typeof J==="function")J.apply(this,arguments)})}return Object.defineProperty($,mF,{value:D}),$}(xD.close),xD.closeSync=function(D){function $(X){D.apply(xD,arguments),Y_()}return Object.defineProperty($,mF,{value:D}),$}(xD.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){n8(xD[Z1]),l("assert").equal(xD[Z1].length,0)})}var HW;if(!global[Z1])F_(global,xD[Z1]);NW.exports=zW(fW0(xD));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!xD.__patched)NW.exports=zW(xD),xD.__patched=!0;function zW(D){xW0(D),D.gracefulify=zW,D.createReadStream=N,D.createWriteStream=A;var $=D.readFile;D.readFile=X;function X(I,x,P){if(typeof x==="function")P=x,x=null;return m(I,x,P);function m(b,p,k,R){return $(b,p,function(S){if(S&&(S.code==="EMFILE"||S.code==="ENFILE"))x5([m,[b,p,k],S,R||Date.now(),Date.now()]);else if(typeof k==="function")k.apply(this,arguments)})}}var J=D.writeFile;D.writeFile=Y;function Y(I,x,P,m){if(typeof P==="function")m=P,P=null;return b(I,x,P,m);function b(p,k,R,S,v){return J(p,k,R,function(f){if(f&&(f.code==="EMFILE"||f.code==="ENFILE"))x5([b,[p,k,R,S],f,v||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var F=D.appendFile;if(F)D.appendFile=Q;function Q(I,x,P,m){if(typeof P==="function")m=P,P=null;return b(I,x,P,m);function b(p,k,R,S,v){return F(p,k,R,function(f){if(f&&(f.code==="EMFILE"||f.code==="ENFILE"))x5([b,[p,k,R,S],f,v||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var U=D.copyFile;if(U)D.copyFile=Z;function Z(I,x,P,m){if(typeof P==="function")m=P,P=0;return b(I,x,P,m);function b(p,k,R,S,v){return U(p,k,R,function(f){if(f&&(f.code==="EMFILE"||f.code==="ENFILE"))x5([b,[p,k,R,S],f,v||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}var G=D.readdir;D.readdir=q;var O=/^v[0-5]\./;function q(I,x,P){if(typeof x==="function")P=x,x=null;var m=O.test(process.version)?function(k,R,S,v){return G(k,b(k,R,S,v))}:function(k,R,S,v){return G(k,R,b(k,R,S,v))};return m(I,x,P);function b(p,k,R,S){return function(v,f){if(v&&(v.code==="EMFILE"||v.code==="ENFILE"))x5([m,[p,k,R],v,S||Date.now(),Date.now()]);else{if(f&&f.sort)f.sort();if(typeof R==="function")R.call(this,v,f)}}}}if(process.version.substr(0,4)==="v0.8"){var w=_W0(D);M=w.ReadStream,z=w.WriteStream}var W=D.ReadStream;if(W)M.prototype=Object.create(W.prototype),M.prototype.open=j;var K=D.WriteStream;if(K)z.prototype=Object.create(K.prototype),z.prototype.open=V;Object.defineProperty(D,"ReadStream",{get:function(){return M},set:function(I){M=I},enumerable:!0,configurable:!0}),Object.defineProperty(D,"WriteStream",{get:function(){return z},set:function(I){z=I},enumerable:!0,configurable:!0});var H=M;Object.defineProperty(D,"FileReadStream",{get:function(){return H},set:function(I){H=I},enumerable:!0,configurable:!0});var B=z;Object.defineProperty(D,"FileWriteStream",{get:function(){return B},set:function(I){B=I},enumerable:!0,configurable:!0});function M(I,x){if(this instanceof M)return W.apply(this,arguments),this;else return M.apply(Object.create(M.prototype),arguments)}function j(){var I=this;_(I.path,I.flags,I.mode,function(x,P){if(x){if(I.autoClose)I.destroy();I.emit("error",x)}else I.fd=P,I.emit("open",P),I.read()})}function z(I,x){if(this instanceof z)return K.apply(this,arguments),this;else return z.apply(Object.create(z.prototype),arguments)}function V(){var I=this;_(I.path,I.flags,I.mode,function(x,P){if(x)I.destroy(),I.emit("error",x);else I.fd=P,I.emit("open",P)})}function N(I,x){return new D.ReadStream(I,x)}function A(I,x){return new D.WriteStream(I,x)}var u=D.open;D.open=_;function _(I,x,P,m){if(typeof P==="function")m=P,P=null;return b(I,x,P,m);function b(p,k,R,S,v){return u(p,k,R,function(f,h){if(f&&(f.code==="EMFILE"||f.code==="ENFILE"))x5([b,[p,k,R,S],f,v||Date.now(),Date.now()]);else if(typeof S==="function")S.apply(this,arguments)})}}return D}function x5(D){n8("ENQUEUE",D[0].name,D[1]),xD[Z1].push(D),VW()}var hF;function Y_(){var D=Date.now();for(var $=0;$<xD[Z1].length;++$)if(xD[Z1][$].length>2)xD[Z1][$][3]=D,xD[Z1][$][4]=D;VW()}function VW(){if(clearTimeout(hF),hF=void 0,xD[Z1].length===0)return;var D=xD[Z1].shift(),$=D[0],X=D[1],J=D[2],Y=D[3],F=D[4];if(Y===void 0)n8("RETRY",$.name,X),$.apply(null,X);else if(Date.now()-Y>=60000){n8("TIMEOUT",$.name,X);var Q=X.pop();if(typeof Q==="function")Q.call(null,J)}else{var U=Date.now()-F,Z=Math.max(F-Y,1),G=Math.min(Z*1.2,100);if(U>=G)n8("RETRY",$.name,X),$.apply(null,X.concat([Y]));else xD[Z1].push(D)}if(hF===void 0)hF=setTimeout(VW,0)}});var U_=E((he0,Q_)=>{function E$(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)}Q_.exports=E$;E$.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};E$.prototype.stop=function(){if(this._timeout)clearTimeout(this._timeout);this._timeouts=[],this._cachedTimeouts=null};E$.prototype.retry=function(D){if(this._timeout)clearTimeout(this._timeout);if(!D)return!1;var $=new Date().getTime();if(D&&$-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error("RetryOperation timeout occurred")),!1;this._errors.push(D);var X=this._timeouts.shift();if(X===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),X=this._timeouts.shift();else return!1;var J=this,Y=setTimeout(function(){if(J._attempts++,J._operationTimeoutCb){if(J._timeout=setTimeout(function(){J._operationTimeoutCb(J._attempts)},J._operationTimeout),J._options.unref)J._timeout.unref()}J._fn(J._attempts)},X);if(this._options.unref)Y.unref();return!0};E$.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)};E$.prototype.try=function(D){console.log("Using RetryOperation.try() is deprecated"),this.attempt(D)};E$.prototype.start=function(D){console.log("Using RetryOperation.start() is deprecated"),this.attempt(D)};E$.prototype.start=E$.prototype.try;E$.prototype.errors=function(){return this._errors};E$.prototype.attempts=function(){return this._attempts};E$.prototype.mainError=function(){if(this._errors.length===0)return null;var D={},$=null,X=0;for(var J=0;J<this._errors.length;J++){var Y=this._errors[J],F=Y.message,Q=(D[F]||0)+1;if(D[F]=Q,Q>=X)$=Y,X=Q}return $}});var G_=E((bW0)=>{var yW0=U_();bW0.operation=function(D){var $=bW0.timeouts(D);return new yW0($,{forever:D&&D.forever,unref:D&&D.unref,maxRetryTime:D&&D.maxRetryTime})};bW0.timeouts=function(D){if(D instanceof Array)return[].concat(D);var $={retries:10,factor:2,minTimeout:1000,maxTimeout:1/0,randomize:!1};for(var X in D)$[X]=D[X];if($.minTimeout>$.maxTimeout)throw Error("minTimeout is greater than maxTimeout");var J=[];for(var Y=0;Y<$.retries;Y++)J.push(this.createTimeout(Y,$));if(D&&D.forever&&!J.length)J.push(this.createTimeout(Y,$));return J.sort(function(F,Q){return F-Q}),J};bW0.createTimeout=function(D,$){var X=$.randomize?Math.random()+1:1,J=Math.round(X*$.minTimeout*Math.pow($.factor,D));return J=Math.min(J,$.maxTimeout),J};bW0.wrap=function(D,$,X){if($ instanceof Array)X=$,$=null;if(!X){X=[];for(var J in D)if(typeof D[J]==="function")X.push(J)}for(var Y=0;Y<X.length;Y++){var F=X[Y],Q=D[F];D[F]=function(Z){var G=bW0.operation($),O=Array.prototype.slice.call(arguments,1),q=O.pop();O.push(function(w){if(G.retry(w))return;if(w)arguments[0]=G.mainError();q.apply(this,arguments)}),G.attempt(function(){Z.apply(D,O)})}.bind(D,Q),D[F].options=$}}});var O_=E((ce0,cF)=>{cF.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];if(process.platform!=="win32")cF.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")cF.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var lF=E((de0,f5)=>{var TD=global.process,l8=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(!l8(TD))f5.exports=function(){return function(){}};else{if(LW=l("assert"),i8=O_(),BW=/^win/i.test(TD.platform),_5=l("events"),typeof _5!=="function")_5=_5.EventEmitter;if(TD.__signal_exit_emitter__)sD=TD.__signal_exit_emitter__;else sD=TD.__signal_exit_emitter__=new _5,sD.count=0,sD.emitted={};if(!sD.infinite)sD.setMaxListeners(1/0),sD.infinite=!0;f5.exports=function(D,$){if(!l8(global.process))return function(){};if(LW.equal(typeof D,"function","a callback must be provided for exit handler"),p8===!1)dF();var X="exit";if($&&$.alwaysLast)X="afterexit";var J=function(){if(sD.removeListener(X,D),sD.listeners("exit").length===0&&sD.listeners("afterexit").length===0)v2()};return sD.on(X,D),J},v2=function(){if(!p8||!l8(global.process))return;p8=!1,i8.forEach(function($){try{TD.removeListener($,u2[$])}catch(X){}}),TD.emit=x2,TD.reallyExit=nF,sD.count-=1},f5.exports.unload=v2,E4=function($,X,J){if(sD.emitted[$])return;sD.emitted[$]=!0,sD.emit($,X,J)},u2={},i8.forEach(function(D){u2[D]=function(){if(!l8(global.process))return;var X=TD.listeners(D);if(X.length===sD.count){if(v2(),E4("exit",null,D),E4("afterexit",null,D),BW&&D==="SIGHUP")D="SIGINT";TD.kill(TD.pid,D)}}}),f5.exports.signals=function(){return i8},p8=!1,dF=function(){if(p8||!l8(global.process))return;p8=!0,sD.count+=1,i8=i8.filter(function($){try{return TD.on($,u2[$]),!0}catch(X){return!1}}),TD.emit=jW,TD.reallyExit=MW},f5.exports.load=dF,nF=TD.reallyExit,MW=function($){if(!l8(global.process))return;TD.exitCode=$||0,E4("exit",TD.exitCode,null),E4("afterexit",TD.exitCode,null),nF.call(TD,TD.exitCode)},x2=TD.emit,jW=function($,X){if($==="exit"&&l8(global.process)){if(X!==void 0)TD.exitCode=X;var J=x2.apply(this,arguments);return E4("exit",TD.exitCode,null),E4("afterexit",TD.exitCode,null),J}else return x2.apply(this,arguments)}}var LW,i8,BW,_5,sD,v2,E4,u2,p8,dF,nF,MW,x2,jW});var w_=E((nW0,IW)=>{var q_=Symbol();function cW0(D,$,X){let J=$[q_];if(J)return $.stat(D,(F,Q)=>{if(F)return X(F);X(null,Q.mtime,J)});let Y=new Date(Math.ceil(Date.now()/1000)*1000+5);$.utimes(D,Y,Y,(F)=>{if(F)return X(F);$.stat(D,(Q,U)=>{if(Q)return X(Q);let Z=U.mtime.getTime()%1000===0?"s":"ms";Object.defineProperty($,q_,{value:Z}),X(null,U.mtime,Z)})})}function dW0(D){let $=Date.now();if(D==="s")$=Math.ceil($/1000)*1000;return new Date($)}nW0.probe=cW0;nW0.getMtime=dW0});var V_=E((eW0,f2)=>{var pW0=l("path"),RW=mD(),rW0=G_(),tW0=lF(),W_=w_(),c6={};function _2(D,$){return $.lockfilePath||`${D}.lock`}function TW(D,$,X){if(!$.realpath)return X(null,pW0.resolve(D));$.fs.realpath(D,X)}function AW(D,$,X){let J=_2(D,$);$.fs.mkdir(J,(Y)=>{if(!Y)return W_.probe(J,$.fs,(F,Q,U)=>{if(F)return $.fs.rmdir(J,()=>{}),X(F);X(null,Q,U)});if(Y.code!=="EEXIST")return X(Y);if($.stale<=0)return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));$.fs.stat(J,(F,Q)=>{if(F){if(F.code==="ENOENT")return AW(D,{...$,stale:0},X);return X(F)}if(!K_(Q,$))return X(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:D}));H_(D,$,(U)=>{if(U)return X(U);AW(D,{...$,stale:0},X)})})})}function K_(D,$){return D.mtime.getTime()<Date.now()-$.stale}function H_(D,$,X){$.fs.rmdir(_2(D,$),(J)=>{if(J&&J.code!=="ENOENT")return X(J);X()})}function iF(D,$){let X=c6[D];if(X.updateTimeout)return;if(X.updateDelay=X.updateDelay||$.update,X.updateTimeout=setTimeout(()=>{X.updateTimeout=null,$.fs.stat(X.lockfilePath,(J,Y)=>{let F=X.lastUpdate+$.stale<Date.now();if(J){if(J.code==="ENOENT"||F)return EW(D,X,Object.assign(J,{code:"ECOMPROMISED"}));return X.updateDelay=1000,iF(D,$)}if(X.mtime.getTime()!==Y.mtime.getTime())return EW(D,X,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let U=W_.getMtime(X.mtimePrecision);$.fs.utimes(X.lockfilePath,U,U,(Z)=>{let G=X.lastUpdate+$.stale<Date.now();if(X.released)return;if(Z){if(Z.code==="ENOENT"||G)return EW(D,X,Object.assign(Z,{code:"ECOMPROMISED"}));return X.updateDelay=1000,iF(D,$)}X.mtime=U,X.lastUpdate=Date.now(),X.updateDelay=null,iF(D,$)})})},X.updateDelay),X.updateTimeout.unref)X.updateTimeout.unref()}function EW(D,$,X){if($.released=!0,$.updateTimeout)clearTimeout($.updateTimeout);if(c6[D]===$)delete c6[D];$.options.onCompromised(X)}function oW0(D,$,X){$={stale:1e4,update:null,realpath:!0,retries:0,fs:RW,onCompromised:(J)=>{throw J},...$},$.retries=$.retries||0,$.retries=typeof $.retries==="number"?{retries:$.retries}:$.retries,$.stale=Math.max($.stale||0,2000),$.update=$.update==null?$.stale/2:$.update||0,$.update=Math.max(Math.min($.update,$.stale/2),1000),TW(D,$,(J,Y)=>{if(J)return X(J);let F=rW0.operation($.retries);F.attempt(()=>{AW(Y,$,(Q,U,Z)=>{if(F.retry(Q))return;if(Q)return X(F.mainError());let G=c6[Y]={lockfilePath:_2(Y,$),mtime:U,mtimePrecision:Z,options:$,lastUpdate:Date.now()};iF(Y,$),X(null,(O)=>{if(G.released)return O&&O(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));z_(Y,{...$,realpath:!1},O)})})})})}function z_(D,$,X){$={fs:RW,realpath:!0,...$},TW(D,$,(J,Y)=>{if(J)return X(J);let F=c6[Y];if(!F)return X(Object.assign(Error("Lock is not acquired/owned by you"),{code:"ENOTACQUIRED"}));F.updateTimeout&&clearTimeout(F.updateTimeout),F.released=!0,delete c6[Y],H_(Y,$,X)})}function aW0(D,$,X){$={stale:1e4,realpath:!0,fs:RW,...$},$.stale=Math.max($.stale||0,2000),TW(D,$,(J,Y)=>{if(J)return X(J);$.fs.stat(_2(Y,$),(F,Q)=>{if(F)return F.code==="ENOENT"?X(null,!1):X(F);return X(null,!K_(Q,$))})})}function sW0(){return c6}tW0(()=>{for(let D in c6){let $=c6[D].options;try{$.fs.rmdirSync(_2(D,$))}catch(X){}}});eW0.lock=oW0;eW0.unlock=z_;eW0.check=aW0;eW0.getLocks=sW0});var L_=E((ne0,N_)=>{var YK0=mD();function FK0(D){let $=["mkdir","realpath","stat","rmdir","utimes"],X={...D};return $.forEach((J)=>{X[J]=(...Y)=>{let F=Y.pop(),Q;try{Q=D[`${J}Sync`](...Y)}catch(U){return F(U)}F(null,Q)}}),X}function QK0(D){return(...$)=>new Promise((X,J)=>{$.push((Y,F)=>{if(Y)J(Y);else X(F)}),D(...$)})}function UK0(D){return(...$)=>{let X,J;if($.push((Y,F)=>{X=Y,J=F}),D(...$),X)throw X;return J}}function ZK0(D){if(D={...D},D.fs=FK0(D.fs||YK0),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}N_.exports={toPromise:QK0,toSync:UK0,toSyncOptions:ZK0}});var M_=E((le0,A4)=>{var k5=V_(),{toPromise:pF,toSync:rF,toSyncOptions:CW}=L_();async function B_(D,$){let X=await pF(k5.lock)(D,$);return pF(X)}function GK0(D,$){let X=rF(k5.lock)(D,CW($));return rF(X)}function OK0(D,$){return pF(k5.unlock)(D,$)}function qK0(D,$){return rF(k5.unlock)(D,CW($))}function wK0(D,$){return pF(k5.check)(D,$)}function WK0(D,$){return rF(k5.check)(D,CW($))}A4.exports=B_;A4.exports.lock=B_;A4.exports.unlock=OK0;A4.exports.lockSync=GK0;A4.exports.unlockSync=qK0;A4.exports.check=wK0;A4.exports.checkSync=WK0});var C_=E((R_)=>{Object.defineProperty(R_,"__esModule",{value:!0});R_.canStoreURLs=R_.FileUrlStorage=void 0;var j_=l("fs"),KK0=zK0(ox()),I_=HK0(M_());function A_(D){if(typeof WeakMap!="function")return null;var $=new WeakMap,X=new WeakMap;return(A_=function(J){return J?X:$})(D)}function HK0(D,$){if(!$&&D&&D.__esModule)return D;if(D===null||typeof D!="object"&&typeof D!="function")return{default:D};var X=A_($);if(X&&X.has(D))return X.get(D);var J={__proto__:null},Y=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var F in D)if(F!=="default"&&{}.hasOwnProperty.call(D,F)){var Q=Y?Object.getOwnPropertyDescriptor(D,F):null;Q&&(Q.get||Q.set)?Object.defineProperty(J,F,Q):J[F]=D[F]}return J.default=D,X&&X.set(D,J),J}function zK0(D){return D&&D.__esModule?D:{default:D}}function k2(D){return k2=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},k2(D)}function VK0(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function E_(D,$){for(var X=0;X<$.length;X++){var J=$[X];if(J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J)J.writable=!0;Object.defineProperty(D,LK0(J.key),J)}}function NK0(D,$,X){if($)E_(D.prototype,$);if(X)E_(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function LK0(D){var $=BK0(D,"string");return k2($)=="symbol"?$:$+""}function BK0(D,$){if(k2(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var J=X.call(D,$||"default");if(k2(J)!="object")return J;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var ie0=R_.canStoreURLs=!0,pe0=R_.FileUrlStorage=function(){function D($){VK0(this,D),this.path=$}return NK0(D,[{key:"findAllUploads",value:function(){var X=this;return new Promise(function(J,Y){X._getItems("tus::",function(F,Q){if(F)Y(F);else J(Q)})})}},{key:"findUploadsByFingerprint",value:function(X){var J=this;return new Promise(function(Y,F){J._getItems("tus::".concat(X),function(Q,U){if(Q)F(Q);else Y(U)})})}},{key:"removeUpload",value:function(X){var J=this;return new Promise(function(Y,F){J._removeItem(X,function(Q){if(Q)F(Q);else Y()})})}},{key:"addUpload",value:function(X,J){var Y=this,F=Math.round(Math.random()*1000000000000),Q="tus::".concat(X,"::").concat(F);return new Promise(function(U,Z){Y._setItem(Q,J,function(G){if(G)Z(G);else U(Q)})})}},{key:"_setItem",value:function(X,J,Y){var F=this;I_.lock(this.path,this._lockfileOptions()).then(function(Q){Y=F._releaseAndCb(Q,Y),F._getData(function(U,Z){if(U){Y(U);return}Z[X]=J,F._writeData(Z,function(G){return Y(G)})})}).catch(Y)}},{key:"_getItems",value:function(X,J){this._getData(function(Y,F){if(Y){J(Y);return}var Q=Object.keys(F).filter(function(U){return U.startsWith(X)}).map(function(U){var Z=F[U];return Z.urlStorageKey=U,Z});J(null,Q)})}},{key:"_removeItem",value:function(X,J){var Y=this;I_.lock(this.path,this._lockfileOptions()).then(function(F){J=Y._releaseAndCb(F,J),Y._getData(function(Q,U){if(Q){J(Q);return}delete U[X],Y._writeData(U,function(Z){return J(Z)})})}).catch(J)}},{key:"_lockfileOptions",value:function(){return{realpath:!1,retries:{retries:5,minTimeout:20}}}},{key:"_releaseAndCb",value:function(X,J){return function(Y){if(Y){X().then(function(){return J(Y)}).catch(function(F){return J((0,KK0.default)([Y,F]))});return}X().then(J).catch(J)}}},{key:"_writeData",value:function(X,J){var Y={encoding:"utf8",mode:432,flag:"w"};(0,j_.writeFile)(this.path,JSON.stringify(X),Y,function(F){return J(F)})}},{key:"_getData",value:function(X){(0,j_.readFile)(this.path,"utf8",function(J,Y){if(J){if(J.code==="ENOENT")X(null,{});else X(J);return}try{Y=!Y.trim().length?{}:JSON.parse(Y)}catch(F){X(F);return}X(null,Y)})}}])}()});var oF=E((R4)=>{Object.defineProperty(R4,"__esModule",{value:!0});Object.defineProperty(R4,"DefaultHttpStack",{enumerable:!0,get:function(){return u_.default}});Object.defineProperty(R4,"DetailedError",{enumerable:!0,get:function(){return jK0.default}});Object.defineProperty(R4,"FileUrlStorage",{enumerable:!0,get:function(){return x_.FileUrlStorage}});Object.defineProperty(R4,"StreamSource",{enumerable:!0,get:function(){return TK0.default}});R4.Upload=void 0;Object.defineProperty(R4,"canStoreURLs",{enumerable:!0,get:function(){return x_.canStoreURLs}});R4.defaultOptions=void 0;Object.defineProperty(R4,"enableDebugLog",{enumerable:!0,get:function(){return IK0.enableDebugLog}});R4.isSupported=void 0;var jK0=r8(Cw()),IK0=Pw(),EK0=r8(Mv()),PW=r8(Du()),AK0=r8(Bu()),RK0=r8(Au()),u_=r8(mu()),TK0=r8(hw()),x_=C_();function r8(D){return D&&D.__esModule?D:{default:D}}function b5(D){return b5=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},b5(D)}function CK0(D,$){if(!(D instanceof $))throw TypeError("Cannot call a class as a function")}function P_(D,$){for(var X=0;X<$.length;X++){var J=$[X];if(J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J)J.writable=!0;Object.defineProperty(D,f_(J.key),J)}}function PK0(D,$,X){if($)P_(D.prototype,$);if(X)P_(D,X);return Object.defineProperty(D,"prototype",{writable:!1}),D}function SK0(D,$,X){return $=tF($),vK0(D,__()?Reflect.construct($,X||[],tF(D).constructor):$.apply(D,X))}function vK0(D,$){if($&&(b5($)==="object"||typeof $==="function"))return $;else if($!==void 0)throw TypeError("Derived constructors may only return object or undefined");return uK0(D)}function uK0(D){if(D===void 0)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return D}function __(){try{var D=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch($){}return(__=function(){return!!D})()}function tF(D){return tF=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(X){return X.__proto__||Object.getPrototypeOf(X)},tF(D)}function xK0(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}),$)SW(D,$)}function SW(D,$){return SW=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(J,Y){return J.__proto__=Y,J},SW(D,$)}function S_(D,$){var X=Object.keys(D);if(Object.getOwnPropertySymbols){var J=Object.getOwnPropertySymbols(D);$&&(J=J.filter(function(Y){return Object.getOwnPropertyDescriptor(D,Y).enumerable})),X.push.apply(X,J)}return X}function y5(D){for(var $=1;$<arguments.length;$++){var X=arguments[$]!=null?arguments[$]:{};$%2?S_(Object(X),!0).forEach(function(J){_K0(D,J,X[J])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(X)):S_(Object(X)).forEach(function(J){Object.defineProperty(D,J,Object.getOwnPropertyDescriptor(X,J))})}return D}function _K0(D,$,X){if($=f_($),$ in D)Object.defineProperty(D,$,{value:X,enumerable:!0,configurable:!0,writable:!0});else D[$]=X;return D}function f_(D){var $=fK0(D,"string");return b5($)=="symbol"?$:$+""}function fK0(D,$){if(b5(D)!="object"||!D)return D;var X=D[Symbol.toPrimitive];if(X!==void 0){var J=X.call(D,$||"default");if(b5(J)!="object")return J;throw TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(D)}var v_=R4.defaultOptions=y5(y5({},PW.default.defaultOptions),{},{httpStack:new u_.default,fileReader:new AK0.default,urlStorage:new EK0.default,fingerprint:RK0.default}),te0=R4.Upload=function(D){function $(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,J=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return CK0(this,$),J=y5(y5({},v_),J),SK0(this,$,[X,J])}return xK0($,D),PK0($,null,[{key:"terminate",value:function(J){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Y=y5(y5({},v_),Y),PW.default.terminate(J,Y)}}])}(PW.default),oe0=R4.isSupported=!0});var B1;var T4=r(()=>{B1={name:"@capgo/cli",type:"module",version:"8.5.3",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/capgo/tree/main/cli#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/capgo.git",directory:"cli"},bugs:{url:"https://github.com/Cap-go/capgo/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk","tanstack-intent"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},files:["!skills/_artifacts","dist","skills"],engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && bun build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"bunx --bun supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",typecheck:"tsgo --project tsconfig.tsgo.json --noEmit",lint:"bun run lint:ox","lint:ox":"oxlint --config ../.oxlintrc.json src","lint:fix":"oxlint --config ../.oxlintrc.json --fix src","check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md","test:bundle":"bun test/test-bundle.mjs","test:functional":"bun test/test-functional.mjs","test:semver":"bun test/test-semver-validation.mjs","test:version-edge-cases":"bun test/test-version-validation.mjs","test:regex":"bun test/test-regex-validation.mjs","test:upload":"bun test/test-upload-validation.mjs","test:fail-on-incompatible":"bun test/test-fail-on-incompatible.mjs","test:credentials":"bun test/test-credentials.mjs","test:asc-key-protocol":"bun test/test-asc-key-protocol.mjs","test:credentials-validation":"bun test/test-credentials-validation.mjs","test:android-service-account-validation":"bun test/test-android-service-account-validation.mjs","test:build-zip-filter":"bun test/test-build-zip-filter.mjs","test:checksum":"bun test/test-checksum-algorithm.mjs","test:build-needed":"bun test/test-build-needed.mjs","test:ci-prompts":"bun test/test-ci-prompts.mjs","test:ci-secrets":"bun test/test-ci-secrets.mjs","test:android-onboarding-progress":"bun test/test-android-onboarding-progress.mjs","test:onboarding-telemetry":"bun test/test-onboarding-telemetry.mjs","test:v2-event-migration":"bun test/test-v2-event-migration.mjs","test:analytics":"bun test/test-analytics.mjs","test:analytics-error-category":"bun test/test-analytics-error-category.mjs","test:analytics-org-resolver":"bun test/test-analytics-org-resolver.mjs","test:supabase-perf":"bun test/test-supabase-perf.mjs","test:preview-qr":"bun test/test-preview-qr.mjs","test:mcp-analytics":"bun test/test-mcp-analytics.mjs","test:app-created-source":"bun test/test-app-created-source.mjs","test:doctor-analytics":"bun test/test-doctor-analytics.mjs","test:posthog-exception":"bun test/test-posthog-exception.mjs","test:onboarding-recovery":"bun test/test-onboarding-recovery.mjs","test:onboarding-progress":"bun test/test-onboarding-progress.mjs","test:onboarding-run-targets":"bun test/test-onboarding-run-targets.mjs","test:run-device-command":"bun test/test-run-device-command.mjs","test:init-app-conflict":"bun test/test-init-app-conflict.mjs","test:init-guardrails":"bun test/test-init-guardrails.mjs","test:prompt-preferences":"bun test/test-prompt-preferences.mjs","test:esm-sdk":"node test/test-sdk-esm.mjs","test:mcp":"node test/test-mcp.mjs","test:version-detection":"node test/test-get-installed-version.mjs","test:version-detection:setup":"./test/fixtures/setup-test-projects.sh","test:platform-paths":"bun test/test-platform-paths.mjs","test:payload-split":"bun test/test-payload-split.mjs","test:macos-signing":"bun test/test-macos-signing.mjs","test:helper-dce":"bash scripts/check-helper-dce.sh","test:apple-api-import-helpers":"bun test/test-apple-api-import-helpers.mjs","test:bundle-id-detector":"bun test/test-bundle-id-detector.mjs","test:apple-api-app-list":"bun test/test-apple-api-app-list.mjs","test:apple-api-cert-create":"bun test/test-apple-api-cert-create.mjs","test:app-verification":"bun test/test-app-verification.mjs","test:pbxproj-parser":"bun test/test-pbxproj-parser.mjs","test:manifest-path-encoding":"bun test/test-manifest-path-encoding.mjs","test:self-update":"bun test/test-self-update.mjs","test:update-prompt":"bun test/test-update-prompt.mjs","test:android-tail-engine":"bun test/test-android-tail-engine.mjs","test:android-tail-render":"bun test/test-android-tail-render.mjs","test:android-tail-routing":"bun test/test-android-tail-routing.mjs","test:dev-gate-stripped":"bun test/test-dev-gate-stripped.mjs","test:frame-fit-ios-shared":"bun test/test-frame-fit-ios-shared.mjs","test:ios-confirm-app-id":"bun test/test-ios-confirm-app-id.mjs","test:ios-create-new":"bun test/test-ios-create-new.mjs","test:ios-e2e":"bun test/test-ios-e2e.mjs","test:ios-flow-contract":"bun test/test-ios-flow-contract.mjs","test:ios-import-discovery":"bun test/test-ios-import-discovery.mjs","test:ios-import-export":"bun test/test-ios-import-export.mjs","test:ios-import-pickers":"bun test/test-ios-import-pickers.mjs","test:ios-import-recovery":"bun test/test-ios-import-recovery.mjs","test:ios-recovery":"bun test/test-ios-recovery.mjs","test:ios-resume":"bun test/test-ios-resume.mjs","test:ios-tail-handoff":"bun test/test-ios-tail-handoff.mjs","test:ios-tui-render":"bun test/test-ios-tui-render.mjs","test:p8-error":"bun test/test-p8-error.mjs","test:ios-tui-routing":"bun test/test-ios-tui-routing.mjs","test:ios-updater-sync-validation":"bun test/test-ios-updater-sync-validation.mjs","test:ios-verify-app":"bun test/test-ios-verify-app.mjs","test:platform-flow-contract":"bun test/test-platform-flow-contract.mjs","test:tail-engine-shared":"bun test/test-tail-engine-shared.mjs",test:"bun run build && bun run test:helper-dce && bun run test:version-detection:setup && bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:fail-on-incompatible && bun run test:credentials && bun run test:credentials-validation && bun run test:android-service-account-validation && bun run test:build-zip-filter && bun run test:checksum && bun run test:build-needed && bun run test:ci-prompts && bun run test:ci-secrets && bun run test:android-onboarding-progress && bun run test:onboarding-telemetry && bun run test:v2-event-migration && bun run test:analytics && bun run test:analytics-error-category && bun run test:analytics-org-resolver && bun run test:supabase-perf && bun run test:preview-qr && bun run test:mcp-analytics && bun run test:app-created-source && bun run test:doctor-analytics && bun run test:posthog-exception && bun run test:build-platform-selection && bun run test:onboarding-recovery && bun run test:onboarding-progress && bun run test:onboarding-run-targets && bun run test:run-device-command && bun run test:init-app-conflict && bun run test:init-guardrails && bun run test:prompt-preferences && bun run test:esm-sdk && bun run test:mcp && bun run test:version-detection && bun run test:platform-paths && bun run test:payload-split && bun run test:manifest-path-encoding && bun run test:macos-signing && bun run test:asc-key-protocol && bun run test:apple-api-import-helpers && bun run test:bundle-id-detector && bun run test:apple-api-app-list && bun run test:app-verification && bun run test:pbxproj-parser && bun run test:ai-log-capture && bun run test:ai-analyze-flow && bun run test:ai-sse-parser && bun run test:ai-render-markdown && bun run test:ai-stream-markdown && bun run test:ai-onboarding-mode && bun run test:ai-fit && bun run test:platform-layout && bun run test:frame-fit && bun run test:onboarding-min-size && bun run test:min-size-gate && bun run test:shell-size-gate && bun run test:build-log-sanitize && bun run test:build-output-viewport && bun run test:diff-viewer-viewport && bun run test:build-complete-exit && bun run test:ai-analyze-stream && bun run test:support-mailto && bun run test:support-redact && bun run test:support-internal-log && bun run test:support-help-menu && bun run test:support-contact && bun run test:support-bundle-files && bun run test:self-update && bun run test:update-prompt && bun run test:apple-api-cert-create && bun run test:android-tail-engine && bun run test:android-tail-render && bun run test:android-tail-routing && bun run test:dev-gate-stripped && bun run test:frame-fit-ios-shared && bun run test:ios-confirm-app-id && bun run test:ios-create-new && bun run test:ios-e2e && bun run test:ios-flow-contract && bun run test:ios-import-discovery && bun run test:ios-import-export && bun run test:ios-import-pickers && bun run test:ios-import-recovery && bun run test:ios-recovery && bun run test:ios-resume && bun run test:ios-tail-handoff && bun run test:ios-tui-render && bun run test:p8-error && bun run test:ios-tui-routing && bun run test:ios-updater-sync-validation && bun run test:ios-verify-app && bun run test:platform-flow-contract && bun run test:tail-engine-shared","test:build-platform-selection":"bun test/test-build-platform-selection.mjs","test:ai-log-capture":"bun test/test-ai-log-capture.mjs","test:ai-analyze-flow":"bun test/test-ai-analyze-flow.mjs","test:ai-analyze-stream":"bun test/test-ai-analyze-stream.mjs","test:ai-sse-parser":"bun test/test-ai-sse-parser.mjs","test:ai-render-markdown":"bun test/test-ai-render-markdown.mjs","test:ai-onboarding-mode":"bun test/test-ai-onboarding-mode.mjs","test:ai-fit":"bun test/test-ai-fit.mjs","test:platform-layout":"bun test/test-platform-layout.mjs","test:frame-fit":"bun test/run-frame-fit.mjs","test:onboarding-min-size":"bun test/test-onboarding-min-size.mjs","test:min-size-gate":"bun test/test-min-size-gate.mjs","test:shell-size-gate":"bun test/test-shell-size-gate.mjs","test:build-log-sanitize":"bun test/test-build-log-sanitize.mjs","test:build-output-viewport":"bun test/test-build-output-viewport.mjs","test:diff-viewer-viewport":"bun test/test-diff-viewer-viewport.mjs","test:build-complete-exit":"bun test/test-build-complete-exit.mjs","test:ai-stream-markdown":"bun test/test-ai-stream-markdown.mjs","test:support-mailto":"bun test/test-support-mailto.mjs","test:support-redact":"bun test/test-support-redact.mjs","test:support-internal-log":"bun test/test-support-internal-log.mjs","test:support-help-menu":"bun test/test-support-help-menu.mjs","test:support-contact":"bun test/test-support-contact.mjs","test:support-bundle-files":"bun test/test-support-bundle-files.mjs"},dependencies:{"@inkjs/ui":"^2.0.0",ink:"^7.0.4","ink-spinner":"^5.0.0",jsonwebtoken:"^9.0.3","node-forge":"^1.4.0",qrcode:"^1.5.4",react:"^19.2.6","string-width":"^8.2.1"},optionalDependencies:{"@capgo/cli-helper-darwin-arm64":"^1.1.1","@capgo/cli-helper-darwin-x64":"^1.1.1"},devDependencies:{"@antfu/eslint-config":"^9.0.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.6","@capacitor/cli":"^8.3.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^1.4.0","@modelcontextprotocol/sdk":"^1.29.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.8","@supabase/supabase-js":"^2.106.2","@tanstack/intent":"^0.0.41","@types/adm-zip":"^0.5.8","@types/jsonwebtoken":"^9.0.10","@types/node":"^25.9.1","@types/node-forge":"^1.3.14","@types/prettyjson":"^0.0.33","@types/qrcode":"^1.5.6","@types/react":"^19.2.15","@types/tmp":"^0.2.6","@types/ws":"^8.18.1","@typescript/native-preview":"7.0.0-dev.20260526.1","@vercel/ncc":"^0.38.4","@xterm/headless":"^6.0.0","adm-zip":"^0.5.17","ci-info":"^4.4.0",commander:"^14.0.3",eslint:"^10.4.0","git-format-staged":"4.0.1",husky:"^9.1.7","is-wsl":"^3.1.1",micromatch:"^4.0.8",open:"^11.0.0",oxlint:"^1.67.0",partysocket:"^1.1.19",prettyjson:"^1.2.5",tmp:"^0.2.6","tus-js-client":"^4.3.1",typescript:"^6.0.3",ws:"^8.21.0",zod:"^4.4.3"}}});async function aF(D){try{let X=`https://registry.npmjs.org/${encodeURIComponent(D.toLowerCase())}`,J=await fetch(X,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"}});if(!J.ok)return null;return(await J.json())["dist-tags"]?.latest||null}catch{return null}}async function yK0(){let D=await aF("@capgo/cli")??"",$=D?.split(".")[0]??"";return{currentVersion:B1.version,latestVersion:D,isOutdated:!!D&&D!==B1.version,majorVersion:$}}async function VD(){let{isOutdated:D,currentVersion:$,latestVersion:X,majorVersion:J}=await yK0();if(D)L.warning(`\uD83D\uDEA8 You are using @capgo/cli@${$} it's not the latest version.
128
128
  Please use @capgo/cli@${X}" or @capgo/cli@${J} to keep up to date with the latest features and bug fixes.`)}var x1=r(()=>{g0();T4()});async function g_(D,$,X,J,Y,F="✅"){await j0(X,{channel:D,event:J,icon:F,org_id:$,tracking_version:2,...Y?{tags:{"app-id":Y}}:{},notify:!1})}var h_=r(()=>{g0();i9();x1();_0()});var c_=E((G0D,m_)=>{var g5=1000,h5=g5*60,m5=h5*60,t8=m5*24,bK0=t8*7,gK0=t8*365.25;m_.exports=function(D,$){$=$||{};var X=typeof D;if(X==="string"&&D.length>0)return hK0(D);else if(X==="number"&&isFinite(D))return $.long?cK0(D):mK0(D);throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(D))};function hK0(D){if(D=String(D),D.length>100)return;var $=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(D);if(!$)return;var X=parseFloat($[1]),J=($[2]||"ms").toLowerCase();switch(J){case"years":case"year":case"yrs":case"yr":case"y":return X*gK0;case"weeks":case"week":case"w":return X*bK0;case"days":case"day":case"d":return X*t8;case"hours":case"hour":case"hrs":case"hr":case"h":return X*m5;case"minutes":case"minute":case"mins":case"min":case"m":return X*h5;case"seconds":case"second":case"secs":case"sec":case"s":return X*g5;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return X;default:return}}function mK0(D){var $=Math.abs(D);if($>=t8)return Math.round(D/t8)+"d";if($>=m5)return Math.round(D/m5)+"h";if($>=h5)return Math.round(D/h5)+"m";if($>=g5)return Math.round(D/g5)+"s";return D+"ms"}function cK0(D){var $=Math.abs(D);if($>=t8)return sF(D,$,t8,"day");if($>=m5)return sF(D,$,m5,"hour");if($>=h5)return sF(D,$,h5,"minute");if($>=g5)return sF(D,$,g5,"second");return D+" ms"}function sF(D,$,X,J){var Y=$>=X*1.5;return Math.round(D/X)+" "+J+(Y?"s":"")}});var vW=E((O0D,d_)=>{function dK0(D){X.debug=X,X.default=X,X.coerce=Z,X.disable=Q,X.enable=Y,X.enabled=U,X.humanize=c_(),X.destroy=G,Object.keys(D).forEach((O)=>{X[O]=D[O]}),X.names=[],X.skips=[],X.formatters={};function $(O){let q=0;for(let w=0;w<O.length;w++)q=(q<<5)-q+O.charCodeAt(w),q|=0;return X.colors[Math.abs(q)%X.colors.length]}X.selectColor=$;function X(O){let q,w=null,W,K;function H(...B){if(!H.enabled)return;let M=H,j=Number(new Date),z=j-(q||j);if(M.diff=z,M.prev=q,M.curr=j,q=j,B[0]=X.coerce(B[0]),typeof B[0]!=="string")B.unshift("%O");let V=0;B[0]=B[0].replace(/%([a-zA-Z%])/g,(A,u)=>{if(A==="%%")return"%";V++;let _=X.formatters[u];if(typeof _==="function"){let I=B[V];A=_.call(M,I),B.splice(V,1),V--}return A}),X.formatArgs.call(M,B),(M.log||X.log).apply(M,B)}if(H.namespace=O,H.useColors=X.useColors(),H.color=X.selectColor(O),H.extend=J,H.destroy=X.destroy,Object.defineProperty(H,"enabled",{enumerable:!0,configurable:!1,get:()=>{if(w!==null)return w;if(W!==X.namespaces)W=X.namespaces,K=X.enabled(O);return K},set:(B)=>{w=B}}),typeof X.init==="function")X.init(H);return H}function J(O,q){let w=X(this.namespace+(typeof q>"u"?":":q)+O);return w.log=this.log,w}function Y(O){X.save(O),X.namespaces=O,X.names=[],X.skips=[];let q=(typeof O==="string"?O:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let w of q)if(w[0]==="-")X.skips.push(w.slice(1));else X.names.push(w)}function F(O,q){let w=0,W=0,K=-1,H=0;while(w<O.length)if(W<q.length&&(q[W]===O[w]||q[W]==="*"))if(q[W]==="*")K=W,H=w,W++;else w++,W++;else if(K!==-1)W=K+1,H++,w=H;else return!1;while(W<q.length&&q[W]==="*")W++;return W===q.length}function Q(){let O=[...X.names,...X.skips.map((q)=>"-"+q)].join(",");return X.enable(""),O}function U(O){for(let q of X.skips)if(F(O,q))return!1;for(let q of X.names)if(F(O,q))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}d_.exports=dK0});var l_=E((n_,eF)=>{n_.formatArgs=lK0;n_.save=iK0;n_.load=pK0;n_.useColors=nK0;n_.storage=rK0();n_.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`.")}})();n_.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 nK0(){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 lK0(D){if(D[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+D[0]+(this.useColors?"%c ":" ")+"+"+eF.exports.humanize(this.diff),!this.useColors)return;let $="color: "+this.color;D.splice(1,0,$,"color: inherit");let X=0,J=0;D[0].replace(/%[a-zA-Z%]/g,(Y)=>{if(Y==="%%")return;if(X++,Y==="%c")J=X}),D.splice(J,0,$)}n_.log=console.debug||console.log||(()=>{});function iK0(D){try{if(D)n_.storage.setItem("debug",D);else n_.storage.removeItem("debug")}catch($){}}function pK0(){let D;try{D=n_.storage.getItem("debug")||n_.storage.getItem("DEBUG")}catch($){}if(!D&&typeof process<"u"&&"env"in process)D=process.env.DEBUG;return D}function rK0(){try{return localStorage}catch(D){}}eF.exports=vW()(n_);var{formatters:tK0}=eF.exports;tK0.j=function(D){try{return JSON.stringify(D)}catch($){return"[UnexpectedJSONParseError]: "+$.message}}});var p_=E((w0D,i_)=>{i_.exports=(D,$=process.argv)=>{let X=D.startsWith("-")?"":D.length===1?"-":"--",J=$.indexOf(X+D),Y=$.indexOf("--");return J!==-1&&(Y===-1||J<Y)}});var o_=E((W0D,t_)=>{var JH0=l("os"),r_=l("tty"),A$=p_(),{env:X1}=process,C4;if(A$("no-color")||A$("no-colors")||A$("color=false")||A$("color=never"))C4=0;else if(A$("color")||A$("colors")||A$("color=true")||A$("color=always"))C4=1;if("FORCE_COLOR"in X1)if(X1.FORCE_COLOR==="true")C4=1;else if(X1.FORCE_COLOR==="false")C4=0;else C4=X1.FORCE_COLOR.length===0?1:Math.min(parseInt(X1.FORCE_COLOR,10),3);function uW(D){if(D===0)return!1;return{level:D,hasBasic:!0,has256:D>=2,has16m:D>=3}}function xW(D,$){if(C4===0)return 0;if(A$("color=16m")||A$("color=full")||A$("color=truecolor"))return 3;if(A$("color=256"))return 2;if(D&&!$&&C4===void 0)return 0;let X=C4||0;if(X1.TERM==="dumb")return X;if(process.platform==="win32"){let J=JH0.release().split(".");if(Number(J[0])>=10&&Number(J[2])>=10586)return Number(J[2])>=14931?3:2;return 1}if("CI"in X1){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((J)=>(J in X1))||X1.CI_NAME==="codeship")return 1;return X}if("TEAMCITY_VERSION"in X1)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(X1.TEAMCITY_VERSION)?1:0;if(X1.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in X1){let J=parseInt((X1.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(X1.TERM_PROGRAM){case"iTerm.app":return J>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(X1.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(X1.TERM))return 1;if("COLORTERM"in X1)return 1;return X}function YH0(D){let $=xW(D,D&&D.isTTY);return uW($)}t_.exports={supportsColor:YH0,stdout:uW(xW(!0,r_.isatty(1))),stderr:uW(xW(!0,r_.isatty(2)))}});var Df=E((s_,$Q)=>{var FH0=l("tty"),DQ=l("util");s_.init=wH0;s_.log=GH0;s_.formatArgs=UH0;s_.save=OH0;s_.load=qH0;s_.useColors=QH0;s_.destroy=DQ.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");s_.colors=[6,2,3,4,5,1];try{let D=o_();if(D&&(D.stderr||D).level>=2)s_.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){}s_.inspectOpts=Object.keys(process.env).filter((D)=>{return/^debug_/i.test(D)}).reduce((D,$)=>{let X=$.substring(6).toLowerCase().replace(/_([a-z])/g,(Y,F)=>{return F.toUpperCase()}),J=process.env[$];if(/^(yes|on|true|enabled)$/i.test(J))J=!0;else if(/^(no|off|false|disabled)$/i.test(J))J=!1;else if(J==="null")J=null;else J=Number(J);return D[X]=J,D},{});function QH0(){return"colors"in s_.inspectOpts?Boolean(s_.inspectOpts.colors):FH0.isatty(process.stderr.fd)}function UH0(D){let{namespace:$,useColors:X}=this;if(X){let J=this.color,Y="\x1B[3"+(J<8?J:"8;5;"+J),F=` ${Y};1m${$} \x1B[0m`;D[0]=F+D[0].split(`
129
129
  `).join(`
130
130
  `+F),D.push(Y+"m+"+$Q.exports.humanize(this.diff)+"\x1B[0m")}else D[0]=ZH0()+$+" "+D[0]}function ZH0(){if(s_.inspectOpts.hideDate)return"";return new Date().toISOString()+" "}function GH0(...D){return process.stderr.write(DQ.formatWithOptions(s_.inspectOpts,...D)+`
@@ -630,7 +630,7 @@ The bundle size is ${_} Mb, this may take a while to download for users
630
630
  Bundle uploaded \uD83D\uDCAA in 0 seconds`),Q.verbose)L.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let W=await U6();if(Q.verbose)L.info("[Verbose] Local config retrieved for upload");if(Q.multipart!==void 0&&Q.multipart||Q.tus!==void 0&&Q.tus){if(Q.multipart)L.info("Uploading bundle with multipart is deprecated, we upload with TUS instead");else L.info("Uploading bundle with TUS protocol");if(Q.verbose)L.info("[Verbose] Starting TUS resumable upload..."),L.info(` - Host: ${W.hostWeb}`),L.info(` - Chunk size: ${Math.floor(U/1024/1024)} MB`);if(await s00(D,F,Y,X,J,Z,W,U),O=!0,Q.verbose)L.info("[Verbose] TUS upload completed, updating database with R2 path...");let K=`orgs/${Y}/apps/${X}/${J}.zip`,{error:H}=await $.from("app_versions").update({r2_path:K}).eq("name",J).eq("app_id",X);if(H){if(L.error(`Cannot finish TUS upload ${o(H)}`),Q.verbose)L.info(`[Verbose] Database update failed: ${o(H)}`);throw Error("Cannot finish TUS upload")}if(Q.verbose)L.info(`[Verbose] Database updated with R2 path: ${K}`)}else{if(Q.verbose)L.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let K=await t00($,X,J);if(!K){if(L.error("Cannot get upload url"),Q.verbose)L.info("[Verbose] Failed to retrieve presigned upload URL from database");throw Error("Cannot get upload url")}if(Q.verbose)L.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),L.info(` - Timeout: ${Q.timeout||lj}ms`),L.info(" - Retry attempts: 5"),L.info(" - Content-Type: application/zip");let H=new AbortController,B=setTimeout(()=>H.abort(),Q.timeout||lj);try{let M=await fetch(K,{method:"PUT",body:F,headers:{"Content-Type":"application/zip"},signal:H.signal});if(!M.ok)throw Error(`HTTP error! status: ${M.status}`)}finally{clearTimeout(B)}if(Q.verbose)L.info("[Verbose] HTTP PUT upload completed successfully")}}catch(W){let H=((performance.now()-G)/1000).toFixed(2);if(Z.error(`Failed to upload bundle ( after ${H} seconds)`),Q.verbose)L.info(`[Verbose] Upload failed after ${H} seconds`),L.info(`[Verbose] Error type: ${W instanceof Error?"Error":typeof W}`);if(W instanceof Error&&W.message.includes("HTTP error"))try{let B=W.message.match(/status: (\d+)/),M=B?B[1]:"unknown";L.error(`Upload failed with status ${M}: ${W.message}`)}catch{L.error(`Upload failed: ${W.message}`)}else{if(Q.verbose)L.info(`[Verbose] Non-HTTP error: ${o(W)}`);if(!Q.tus)L.error(`Cannot upload bundle ( try again with --tus option) ${o(W)}`);else L.error(`Cannot upload bundle please contact support if the issue persists ${o(W)}`)}if(Q.verbose)L.info("[Verbose] Cleaning up failed version from database...");if(await ij($,X,J),Q.verbose)L.info("[Verbose] Failed version cleaned up");throw W instanceof Error?W:Error(String(W))}let w=((performance.now()-G)/1000).toFixed(2);if(Z.stop(`Bundle uploaded \uD83D\uDCAA in (${w} seconds)`),Q.verbose)L.info("[Verbose] Upload successful:"),L.info(` - Upload time: ${w} seconds`),L.info(` - Upload method: ${O?"TUS (resumable)":"Standard HTTP PUT"}`),L.info(` - Bundle size: ${Math.floor(F.byteLength/1024)} KB`),L.info("[Verbose] Sending performance event...");if(await j0(D,{channel:"performance",event:O?"TUS upload zip performance":"Upload zip performance",icon:"\uD83D\uDE84",org_id:Y,tracking_version:2,tags:{"app-id":X,time:w},notify:!1},Q.verbose),Q.verbose)L.info("[Verbose] Performance event sent successfully")}async function Ip0(D,$,X){let{data:J,error:Y}=await D.from("channels").select("version ( id, name, deleted )").eq("app_id",$).eq("name",X);if(Y)return L.error(`Cannot delete linked bundle on upload ${o(Y)}`),null;if(J.length===0)return L.warn("No linked bundle found in the channel you are trying to upload to"),null;let F=J[0].version;if(!F)return L.warn("No linked bundle found in the channel you are trying to upload to"),null;if(F.deleted)return L.warn("The linked bundle is already deleted"),null;return F}async function Ep0(D,$){if(!$)return;let{error:X}=await D.from("app_versions").update({deleted:!0}).eq("id",$.id);if(X){L.error(`Cannot delete linked bundle on upload ${o(X)}`);return}L.info(`Linked bundle ${$.name} deleted`)}async function Ap0(D,$,X,J,Y,F,Q,U,Z,G){let{data:O}=await D.rpc("get_app_versions",{apikey:$,name_version:J,appid:U}).single();if(!O)qD("Cannot get version id, cannot set channel");if(await dG(D,$,"app.create_channel",{appId:U})){let{error:w,data:W}=await cG(D,{name:Y,app_id:U,created_by:F,version:O,owner_org:Q,...G?{allow_device_self_set:!0}:{}});if(w)qD(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${o(w)}`);let K=`${Z.hostWeb}/app/${U}/channel/${W.id}`;if(W?.public)L.info("Your update is now available in your public channel \uD83C\uDF89");else if(W?.id)L.info(`Link device to this bundle to try it: ${K}`);if(X)L.info(`Bundle url: ${K}`);return!0}return L.warn("The upload key is not allowed to set the version in the channel"),!1}async function Rp0(D,$,X){let{error:J,data:Y}=await $.from("apps").select("default_upload_channel").eq("app_id",D).single();if(J)throw Error(`Cannot find default upload channel: ${o(J)}. You can set it here: ${X}/app/${D}/info`);return Y.default_upload_channel}async function VA(D,$,X=!1){if(!X)B0(`Uploading with CLI version ${B1.version}`);let J,Y=E9();await VD();let{s3Region:F,s3Apikey:Q,s3Apisecret:U,s3BucketName:Z,s3Endpoint:G,s3Port:O,s3SSL:q}=$;if($.verbose)L.info("[Verbose] Starting upload process with options:"),L.info(` - API key: ${$.apikey?"provided":"from saved key"}`),L.info(` - Path: ${$.path||"from capacitor config"}`),L.info(` - Channel: ${$.channel||"from default upload channel"}`),L.info(` - Bundle: ${$.bundle||"auto-detected"}`),L.info(` - External: ${$.external||"false"}`),L.info(` - Encryption: ${$.keyV2||$.keyDataV2?"v2":$.key===!1?"disabled":"auto"}`),L.info(` - Upload method: ${$.tus?"TUS":$.zip?"ZIP":"auto"}`),L.info(` - Delta updates: ${$.delta||$.partial?"enabled":"disabled"}`);let w=Kp0($);if($.verbose)L.info("[Verbose] API key retrieved successfully");let W=await E0();if($.verbose)L.info("[Verbose] Capacitor config loaded successfully");let K=d80(W?.config?.plugins?.CapacitorUpdater),H=kG({silent:X});if(K&&$.delta===void 0){if(H){L.info("\uD83D\uDCA1 Instant updates are enabled in your config"),L.info(" Delta updates send only changed files instead of the full bundle");let U0=await kD({message:"Enable delta updates for this upload? (Recommended with instant updates)",initialValue:!0});if(!c0(U0)&&U0){if($.delta=!0,$.verbose)L.info("[Verbose] Delta updates auto-enabled due to instant update configuration")}}else if(!X){if($.delta!==!1){if($.delta=!0,$.verbose)L.info("[Verbose] Delta updates auto-enabled in CI/CD mode due to instant update configuration")}}}let B=await h00();if($.verbose)L.info("[Verbose] Remote file config retrieved:"),L.info(` - Max upload length: ${Math.floor(B.maxUploadLength/1024/1024)} MB`),L.info(` - Alert upload size: ${Math.floor(B.alertUploadSize/1024/1024)} MB`),L.info(` - TUS upload: ${B.TUSUpload?"enabled":"disabled"}`),L.info(` - TUS upload forced: ${B.TUSUploadForced?"yes":"no"}`),L.info(` - Partial upload: ${B.partialUpload?"enabled":"disabled"}`),L.info(` - Max chunk size: ${Math.floor(B.maxChunkSize/1024/1024)} MB`);let{appid:M,path:j}=Hp0(D,$,W.config);if($.verbose)L.info(`[Verbose] App ID: ${M}, Build path: ${j}`);let z=await Wp0(W.config,$);if($.verbose)L.info(`[Verbose] Bundle version: ${z}`);let V=$.external?"external":"r2-direct",N="none";if($.autoSetBundle){if(await b00({version:z}),$.verbose)L.info("[Verbose] Auto-set bundle version in capacitor.config.json")}if(zp0($,j),$.verbose)L.info("[Verbose] Code check passed (notifyAppReady found and index.html present)");L.info(`Upload ${M}@${z} started from path "${j}" to Capgo cloud`);let A=await U6();if($.verbose)L.info(`[Verbose] Local config loaded: host=${A.hostWeb}`);if($.supaHost&&$.supaAnon){if(L.info("Using custom supabase instance from provided options"),A.supaHost=$.supaHost,A.supaKey=$.supaAnon,$.verbose)L.info(`[Verbose] Custom Supabase host: ${$.supaHost}`)}let u=await C0(w,$.supaHost,$.supaAnon);if($.verbose)L.info("[Verbose] Supabase client created successfully");await tD(u,M,X);let _=await $D(u,w);if($.verbose)L.info(`[Verbose] User verified successfully, user_id: ${_}`);let I=KA($.channel);if($.channel!==void 0&&I.length===0)qD("Missing channel name, pass one channel or a comma-separated list with --channel");let x=I.length>0?null:await Rp0(M,u,A.hostWeb),P=I.length>0?I:KA(x||"production");if(P.length===0)qD("Cannot resolve target channel");let m=C3(P),b=P;if($.verbose)L.info(`[Verbose] Target channel${P.length>1?"s":""}: ${m}`);let p=await rD(u,M);if($.verbose)L.info(`[Verbose] Organization ID: ${p}`);if(await n00(u,p,B1.version),$.verbose)L.info("[Verbose] Remote CLI messages checked");if(await i00(u,p,w,M,!0),$.verbose)L.info("[Verbose] Plan validation passed");if($.verbose)L.info("[Verbose] Trial check completed");if($.verbose)L.info(`[Verbose] Checking if version ${z} already exists...`);let k=await Np0(u,M,z,$.versionExistsOk,H);if($.verbose)L.info(`[Verbose] Version exists check: ${k?typeof k==="string"?`retry with ${k}`:"yes (skipping)":"no (continuing)"}`);if(k===!0)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:z,checksum:null,encryptionMethod:N,storageProvider:V};if(typeof k==="string")return L.info(`Retrying upload with new version: ${k}`),VA(D,{...$,bundle:k},X);if($.external&&!$.external.startsWith("https://"))qD(`External link should should start with "https://" current is "${$.external}"`);let R=null,S="",v;if(!$.external){if($.verbose)L.info(`[Verbose] Preparing bundle file from path: ${j}`);let U0=W.config?.plugins?.CapacitorUpdater?.publicKey;if(v=await Mp0(j,$,w,p,M,B.maxUploadLength,B.alertUploadSize,U0),J=v.sessionKey,R=v.zipped,N=v.encryptionMethod,S=v.finalKeyData,$.verbose)L.info("[Verbose] Bundle prepared:"),L.info(` - Size: ${Math.floor((v.zipped?.byteLength??0)/1024)} KB`),L.info(` - Checksum: ${v.checksum}`),L.info(` - Encryption: ${v.encryptionMethod}`),L.info(` - IV Session Key: ${v.ivSessionKey?"present":"none"}`),L.info(` - Key ID: ${v.keyId||"none"}`);if(!$.ignoreChecksumCheck){if($.verbose)L.info("[Verbose] Checking for duplicate checksum...");if(b=await Bp0(u,M,P,v.checksum),$.verbose)L.info("[Verbose] Checksum is unique or already satisfied across target channels")}}let f=C3(b);if($.verbose)L.info(`[Verbose] Checking compatibility with channel${b.length>1?"s":""} ${f}...`);let h=[];for(let U0 of b){let I0=await Vp0(u,Y,$,U0,M,z,p);h.push({channel:U0,...I0})}let y=h.find((U0)=>U0.nativePackages)?.nativePackages,a=Lp0(h),c=h.filter((U0)=>U0.compatibility.result==="incompatible"),t=c.length>0,W0=c.reduce((U0,I0)=>Math.max(U0,I0.incompatibleCount),0),F0=C3(c.map((U0)=>U0.channel)),R0=()=>{let U0=F0||f;l0({channel:"bundle",event:"Bundle Upload Blocked",icon:"⛔",apikey:$.apikey,appId:M,orgId:p,tags:{reason:"incompatible",channel:U0,channel_name:U0,channel_names:U0,channel_count:c.length||b.length,incompatible_count:W0,interactive:H}});let u0=`Upload aborted: bundle is incompatible with ${c.length===1?"channel":"channels"} "${U0}" (${W0} native package(s) changed). A native build / app-store update is required. Run a native build with Capgo Builder (https://capgo.app/docs/cli/cloud-build/), or remove --fail-on-incompatible to upload anyway.`;throw L.error(u0),new O50(u0)};if(t&&!X){if($.failOnIncompatible&&!H)R0();let U0=await zO(M)!==null,I0=await t80({incompatible:t,interactive:H,hasCredentials:U0,appId:M,orgId:p,apikey:w,incompatibleCount:W0});if(I0==="abort")throw Error(qp0);if(I0!=="continue")return{success:!0,skipped:!0,reason:"NATIVE_BUILD",builderAction:I0,bundle:z,checksum:null,encryptionMethod:N,storageProvider:V};if(p80({incompatible:t,failOnIncompatible:!!$.failOnIncompatible,interactive:H,builderAction:I0}))R0()}if($.verbose)L.info("[Verbose] Compatibility check completed:"),L.info(` - Native packages: ${y?y.length:0}`),L.info(` - Min update version: ${a||"none"}`);if($.deleteLinkedBundleOnUpload)L.warn(`Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the target channel${b.length>1?"s":""}: ${f}.`),L.warn("Please make sure you want to do this, if you are not sure, please do not use this option.");let h0={name:z,app_id:M,session_key:$.external?$.ivSessionKey:v?.ivSessionKey,external_url:$.external,storage_provider:V,min_update_version:a,native_packages:y,owner_org:p,user_id:_,checksum:$.external?$.encryptedChecksum:v?.checksum,link:$.link||null,comment:$.comment||null,key_id:v?.keyId||void 0,cli_version:B1.version};if($.external){if($.verbose)L.info(`[Verbose] Using external URL: ${$.external}`);if(await j0(w,{channel:"app",event:"App external",icon:"\uD83D\uDCE4",org_id:p,tracking_version:2,tags:{"app-id":M},notify:!1},$.verbose),$.verbose)L.info("[Verbose] External bundle configured:"),L.info(` - URL: ${$.external}`),L.info(` - IV Session Key: ${$.ivSessionKey?"provided":"none"}`),L.info(` - Encrypted Checksum: ${$.encryptedChecksum?"provided":"none"}`)}if($.zip){if($.tus=!1,$.verbose)L.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")}else if(!B.TUSUpload||$.external){if($.tus=!1,$.verbose)L.info("[Verbose] Upload method: Standard (TUS not available or external URL)")}else if($.tus=$.tus||B.TUSUploadForced,$.verbose)L.info(`[Verbose] Upload method: ${$.tus?"TUS (resumable)":"Standard"}`);if(!B.partialUpload||$.external){if($.delta=!1,$.verbose&&$.external)L.info("[Verbose] Delta updates disabled (not available with external URLs)")}else if($.delta=$.delta||$.partial||$.deltaOnly||$.partialOnly||B.partialUploadForced,$.verbose)L.info(`[Verbose] Delta updates: ${$.delta?"enabled":"disabled"}`);if($.encryptPartial&&N==="v1")qD("You cannot encrypt the partial update if you are not using the v2 encryption method");let Q0="5.30.0",T0="6.30.0",C="7.30.0",T=!1;if($.delta&&N==="v2"&&!$.encryptPartial){let U0=K1(zA()),I0=await U$("@capgo/capacitor-updater",U0,$.packageJson),u0;try{u0=I0?YD(I0):void 0}catch{u0=void 0}if(I0&&u0&&vq(u0,YD("6.14.4"))){if(L.info(`Auto-enabling partial update encryption for updater version ${u0} (> 6.14.4)`),$.verbose)L.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4");$.encryptPartial=!0}}if($.delta&&($.encryptPartial||N==="v2")){let U0=K1(zA()),I0=await U$("@capgo/capacitor-updater",U0,$.packageJson),u0;try{u0=I0?YD(I0):void 0}catch{u0=void 0}if(I0&&u0){if(T=!u$(u0,Q0,T0,C),$.verbose&&T)L.info(`[Verbose] Using hex checksum format for updater version ${u0}`)}}if($.verbose&&$.delta)L.info("[Verbose] Preparing delta/partial update manifest...");let n=$.delta?await U50(j,w,p,M,$.encryptPartial?N:"none",S,T):[];if($.verbose&&$.delta)L.info(`[Verbose] Delta manifest prepared with ${n.length} files`);if($.verbose)L.info("[Verbose] Creating version record in database...");if(await HA(u,h0,"add"),$.verbose)L.info("[Verbose] Version record created successfully");if($.dryUpload){if($.verbose)L.info("[Verbose] Dry upload mode: skipping bundle publishing and channel assignment");if(!X)M0("Dry upload saved bundle metadata without uploading files or updating channels");return{success:!0,bundle:z,checksum:h0.checksum??null,encryptionMethod:N,sessionKey:J?J.toString("base64"):void 0,ivSessionKey:typeof h0.session_key==="string"?h0.session_key:void 0,storageProvider:h0.storage_provider,skipped:!0,reason:"DRY_UPLOAD"}}if($.tusChunkSize&&$.tusChunkSize>B.maxChunkSize)L.error(`Chunk size ${$.tusChunkSize} is greater than the maximum chunk size ${B.maxChunkSize}, using the maximum chunk size`),$.tusChunkSize=B.maxChunkSize;else if(!$.tusChunkSize)$.tusChunkSize=B.maxChunkSize;if($.verbose)L.info(`[Verbose] TUS chunk size: ${Math.floor($.tusChunkSize/1024/1024)} MB`);if(R&&(Z||G||F||Q||U||O||q)){if(!Z||!G||!F||!Q||!U||!O)qD("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret");if(L.info("Uploading to S3"),$.verbose)L.info("[Verbose] S3 configuration:"),L.info(` - Endpoint: ${G}`),L.info(` - Region: ${F}`),L.info(` - Bucket: ${Z}`),L.info(` - Port: ${O}`),L.info(` - SSL: ${q?"enabled":"disabled"}`);let U0=`${q?"https":"http"}://${G}${O?`:${O}`:""}`,I0=new yO({endPoint:G,region:F,port:O,pathStyle:!0,bucket:Z,accessKey:Q,secretKey:U}),u0=`${M}-${z}`,t0=encodeURIComponent(u0);if($.verbose)L.info(`[Verbose] Uploading to S3 as: ${u0}`);try{await I0.putObject(u0,Uint8Array.from(R)),h0.external_url=`${U0}/${t0}`,h0.storage_provider="external",await HA(u,h0,"update")}catch(z1){await ij(u,M,z),qD(`Cannot upload bundle to S3 ${o(z1)}`)}if($.verbose)L.info(`[Verbose] S3 upload complete, external URL: ${h0.external_url}`)}else if(R){if(!$.partialOnly&&!$.deltaOnly){if($.verbose)L.info("[Verbose] Starting full bundle upload to Capgo Cloud...");await jp0(w,u,M,z,p,R,$,$.tusChunkSize)}else if($.verbose)L.info("[Verbose] Skipping full bundle upload (delta-only mode)");let U0=null;try{if($.dryUpload){if($.delta=!1,$.verbose)L.info("[Verbose] Dry upload mode: skipping delta upload")}let I0=h0.session_key&&$.encryptPartial&&J?{sessionKey:J,ivSessionKey:h0.session_key}:void 0;if($.verbose&&$.delta)L.info("[Verbose] Starting delta/partial file upload..."),L.info(` - Manifest entries: ${n.length}`),L.info(` - Encryption: ${I0?"enabled":"disabled"}`);if(U0=$.delta?await Z50(w,n,j,M,p,I0,$):null,$.verbose&&U0)L.info(`[Verbose] Delta upload complete with ${U0.length} files`)}catch(I0){if(!!($.partial||$.delta||$.partialOnly||$.deltaOnly))throw I0;if(L.info(`Failed to upload partial files to capgo cloud. Error: ${o(I0)}. This is not a critical error, the bundle has been uploaded without the partial files`),$.verbose)L.info(`[Verbose] Delta upload error details: ${o(I0)}`)}if(h0.storage_provider="r2",h0.manifest=U0,$.verbose)L.info("[Verbose] Updating version record with storage provider and manifest...");if(await HA(u,h0,"update"),$.verbose)L.info("[Verbose] Version record updated successfully")}if($.verbose)L.info("[Verbose] Checking app permissions...");let g=await fD(u,w,M,2,!1,!0);if($.verbose)L.info("[Verbose] Permissions:"),L.info(` - Upload: ${s7(g,2)?"yes":"no"}`),L.info(` - Write: ${s7(g,3)?"yes":"no"}`),L.info(` - Admin: ${s7(g,4)?"yes":"no"}`);let Z0=$.deleteLinkedBundleOnUpload&&s7(g,3),v0=Z0?await Promise.all(b.map(async(U0)=>({channel:U0,version:await Ip0(u,M,U0)}))):[];if($.deleteLinkedBundleOnUpload&&!Z0)L.warn("Cannot delete linked bundle on upload as a upload organization member");let P0=new Set;if(s7(g,3)){for(let U0 of b){if($.verbose)L.info(`[Verbose] Setting bundle ${z} to channel ${U0}...`);if(await Ap0(u,w,!!$.bundleUrl,z,U0,_,p,M,A,$.selfAssign))P0.add(U0);if($.verbose)L.info(`[Verbose] Channel ${U0} updated successfully`)}if(Z0){let U0=new Set;for(let I0 of v0){if(!I0.version||U0.has(I0.version.id))continue;if($.verbose)L.info(`[Verbose] Deleting previously linked bundle in channel ${I0.channel}...`);await Ep0(u,I0.version),U0.add(I0.version.id)}}}else L.warn("Cannot set channel as a upload organization member");if($.verbose)L.info("[Verbose] Sending upload event...");await j0(w,{channel:"app",event:"App Uploaded",icon:"⏫",org_id:p,tracking_version:2,tags:{"app-id":M,bundle:z},notify:!1},$.verbose),await j0(w,{channel:"app",event:"Bundle Uploaded",icon:"⏫",org_id:p,tracking_version:2,tags:{"app-id":M,bundle:z},notify:!1,notifyConsole:!0}).catch(()=>{});for(let U0 of h){if(U0.compatibility.result!=="incompatible")continue;l0({channel:"bundle",event:"Bundle Incompatible",icon:"\uD83D\uDEAB",apikey:w,appId:M,orgId:p,tags:{source:"upload",channel:U0.channel,channel_name:U0.channel,channel_overwritten:P0.has(U0.channel),version_new_name:z,...U0.compatibility.versionOldId?{version_old_id:U0.compatibility.versionOldId}:{},...U0.compatibility.versionOldName?{version_old_name:U0.compatibility.versionOldName}:{}}})}let y0={success:!0,bundle:z,checksum:h0.checksum??null,encryptionMethod:N,sessionKey:J?J.toString("base64"):void 0,ivSessionKey:typeof h0.session_key==="string"?h0.session_key:void 0,storageProvider:h0.storage_provider};if($.verbose)L.info("[Verbose] Upload completed successfully:"),L.info(` - Bundle: ${y0.bundle}`),L.info(` - Checksum: ${y0.checksum}`),L.info(` - Encryption: ${y0.encryptionMethod}`),L.info(` - Storage: ${y0.storageProvider}`);if(H&&!y0.skipped){let U0=$.showReplicationProgress;if(U0===void 0)U0=await g80({preferenceKey:"uploadShowReplicationProgress",message:"Show Capgo global replication progress for this upload so you can confirm rollout in all regions?",initialValue:!1,rememberMessage:"Remember this replication progress preference for future uploads on this machine?"});if(U0)await c80({title:"Replicating your bundle in all regions to guarantee fast updates.",completeMessage:"Replication complete. Your update is now globally available.",interactive:H})}if(!X&&!y0.skipped)M0("Time to share your update to the world \uD83C\uDF0D");return y0}g0();k6();H1();x1();xX();_0();import{randomUUID as Tp0}from"node:crypto";import{existsSync as Cp0,writeFileSync as Pp0}from"node:fs";import{cwd as Sp0}from"node:process";var vp0=20;function up0(D){console.log(JSON.stringify(D,null,2))}function qY(D){console.error(o(D))}async function q50(D,$,X=!1){let{json:J}=$,{bundle:Y,path:F}=$,Q=!J&&!X;try{if(Q)await VD();let U=await E0(),Z=i0(D,U?.config),G=Tp0().split("-")[0],O=J8("",$.packageJson);if(Y=Y||O||`0.0.1-beta.local-${G}`,Q)B0(`Zipping ${Z}@${Y}`);if(Y&&!a7.test(Y)){let A=`Your bundle name ${Y}, is not valid it should follow semver convention : https://semver.org/`;if(!X)if(J)qY({error:"invalid_semver"});else L.error(A);throw Error("Invalid bundle version format")}if(F=F||U?.config?.webDir,!Z||!Y||!F){if(!X)if(J)qY({error:"missing_argument"});else L.error("Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project");throw Error("Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project")}if(Q)L.info(`Started from path "${F}"`);if(typeof $.codeCheck>"u"?!0:$.codeCheck){if(!FY(F,"notifyAppReady")){if(!X)if(J)qY({error:"notifyAppReady_not_in_source_code"});else L.error("notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready");throw Error("notifyAppReady() is missing in build folder")}if(!cO(F)){if(!X)if(J)qY({error:"index_html_not_found"});else L.error(`index.html is missing in the root folder of ${F}`);throw Error("index.html is missing in root folder")}}let w=await mG(F);if(Q)L.info(`Zipped ${w.byteLength} bytes`);let W=Q?jD():null;if(W)W.start("Calculating checksum");let K=K1(Sp0()),H=await U$("@capgo/capacitor-updater",K,$.packageJson);if(!H){if(!X)L.warn("Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager");throw Error("Cannot find @capgo/capacitor-updater in node_modules, please install it first with your package manager")}let B=!1,M;try{M=H?YD(H):void 0}catch{M=void 0}if(M)B=!u$(M,void 0,void 0,"7.0.0");else if(H==="link:@capgo/capacitor-updater"){if(!X)L.warn("Using local @capgo/capacitor-updater. Assuming v7");B=!0}let j=await p4(w,$.keyV2||Cp0(V$)||B?"sha256":"crc32");if(W)W.stop(`Checksum ${B?"SHA256":"CRC32"}: ${j}`);let z=Math.floor(w.byteLength/1024/1024);if(z>vp0&&Q)L.warn(`WARNING !!
631
631
  The bundle size is ${z} Mb, this may take a while to download for users
632
632
  `),L.warn(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
633
- `);let V=Q?jD():null,N=$.name||`${Z}_${Y}.zip`;if(V)V.start(`Saving to ${N}`);if(Pp0(N,w),V)V.stop(`Saved to ${N}`);if(l0({channel:"bundle",event:"Bundle Zipped",icon:"\uD83D\uDDDC️",tags:{zip_size_bytes:w.byteLength}}),Q)M0("Done ✅");if(!X&&J)up0({bundle:Y,filename:N,checksum:j});return{bundle:Y,filename:N,checksum:j}}catch(U){if(!X)if(J)qY(U);else L.error(o(U));throw U instanceof Error?U:Error(String(U))}}g0();_0();async function w50(D,$,X,J=!1){if(!J)B0("Create channel");X.apikey=X.apikey||z0();let Y=await E0(J).catch(()=>{return});if($=i0($,Y?.config),!X.apikey){if(!J)L.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!$){if(!J)L.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let F=await C0(X.apikey,X.supaHost,X.supaAnon,J);if(await tD(F,$,J),await $D(F,X.apikey),await fD(F,X.apikey,$,4,J,!0),!J)L.info(`Creating channel ${$}#${D} to Capgo`);let Q=await rD(F,$),U=await $D(F,X.apikey),Z=await UD0(F,{name:D,app_id:$,version:null,created_by:U,owner_org:Q,allow_device_self_set:X.selfAssign??!1,public:X.default??!1});if(Z.error){if(!J)L.error(`Cannot create Channel \uD83D\uDE40
633
+ `);let V=Q?jD():null,N=$.name||`${Z}_${Y}.zip`;if(V)V.start(`Saving to ${N}`);if(Pp0(N,w),V)V.stop(`Saved to ${N}`);if(l0({channel:"bundle",event:"Bundle Zipped",icon:"\uD83D\uDDDC️",tags:{zip_size_bytes:w.byteLength}}),Q)M0("Done ✅");if(!X&&J)up0({bundle:Y,filename:N,checksum:j});return{bundle:Y,filename:N,checksum:j}}catch(U){if(!X)if(J)qY(U);else L.error(o(U));throw U instanceof Error?U:Error(String(U))}}g0();_0();async function w50(D,$,X,J=!1){if(!J)B0("Create channel");X.apikey=X.apikey||z0();let Y=await E0(J).catch(()=>{return});if($=i0($,Y?.config),!X.apikey){if(!J)L.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!$){if(!J)L.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let F=await C0(X.apikey,X.supaHost,X.supaAnon,J);if(await tD(F,$,J),await $D(F,X.apikey),await fD(F,X.apikey,$,3,J,!0),!J)L.info(`Creating channel ${$}#${D} to Capgo`);let Q=await rD(F,$),U=await $D(F,X.apikey),Z=await UD0(F,{name:D,app_id:$,version:null,created_by:U,owner_org:Q,allow_device_self_set:X.selfAssign??!1,public:X.default??!1});if(Z.error){if(!J)L.error(`Cannot create Channel \uD83D\uDE40
634
634
  ${o(Z.error)}`);throw Error(`Cannot create channel: ${o(Z.error)}`)}if(await j0(X.apikey,{channel:"channel",event:"Create channel",icon:"✅",org_id:Q,tracking_version:2,tags:{"app-id":$,channel:D},notify:!1}).catch(()=>{}),!J)L.success("Channel created ✅"),M0("Done ✅");return Z.data??!0}g0();H1();_0();async function W50(D,$,X,J=!1){let{quiet:Y}=X;if(!Y&&!J)B0("List current bundle");X.apikey=X.apikey||z0(Y);let F=await E0();if($=i0($,F?.config),!X.apikey){if(!J)L.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!$){if(!J)L.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let Q=await C0(X.apikey,X.supaHost,X.supaAnon);if(await tD(Q,$,J),await $D(Q,X.apikey),await fD(Q,X.apikey,$,1,J,!0),!D){if(!J)L.error("Please provide a channel to get the bundle from.");throw Error("Channel name missing")}let{data:U,error:Z}=await jJ("channels.currentBundle",()=>Q.from("channels").select("version ( name )").eq("name",D).eq("app_id",$).limit(1));if(Z||!U?.length){if(!J)L.error(`Error retrieving channel ${D} for app ${$}. Perhaps the channel does not exist?`);throw Error(`Channel ${D} not found for app ${$}`)}let{version:G}=U[0];if(l0({channel:"channel",event:"Channel Current Bundle Viewed",icon:"\uD83D\uDCE6",tags:{has_bundle:Boolean(G)}}),!G){if(!J)L.error(`Error retrieving channel ${D} for app ${$}. Perhaps the channel does not exist?`);throw Error(`Channel ${D} does not have a bundle linked`)}if(!J)if(!Y)L.info(`Current bundle for channel ${D} is ${G.name}`);else L.info(G.name);return G.name}g0();_0();async function K50(D,$,X,J=!1){if(!J)B0("Delete channel");X.apikey=X.apikey||z0();let Y=await E0();if($=i0($,Y?.config),!X.apikey){if(!J)L.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!$){if(!J)L.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let F=await C0(X.apikey,X.supaHost,X.supaAnon);await tD(F,$,J);let Q=await $D(F,X.apikey);if(await fD(F,X.apikey,$,4,J,!0),X.deleteBundle&&!J)L.info(`Deleting bundle ${$}#${D} from Capgo`);if(X.deleteBundle){let w=await qD0(F,$,D);if(w?.name&&!J)L.info(`Deleting bundle ${w.name} from Capgo`);if(w?.name)await oj(F,$,w.name)}let{data:U,error:Z}=await GD0(F,$,D);if(Z||!U){if(!J)L.error(`Channel ${D} not found`);if(X.successIfNotFound){if(!J)L.success(`Channel ${D} not found and successIfNotFound is true`);return!0}throw Error(`Channel ${D} not found`)}let{error:G}=await OD0(F,$,U.id);if(G){if(!J)L.error(`Cannot delete channel devices: ${o(G)}`);throw Error(`Cannot delete channel devices: ${o(G)}`)}if(!J)L.info(`Deleting channel ${$}#${D} from Capgo`);let O=await ZD0(F,D,$,Q);if(O.error){if(!J)L.error(`Cannot delete Channel \uD83D\uDE40 ${o(O.error)}`);throw Error(`Cannot delete channel: ${o(O.error)}`)}let q=await rD(F,$);if(await j0(X.apikey,{channel:"channel",event:"Delete channel",icon:"✅",org_id:q,tracking_version:2,tags:{"app-id":$,channel:D},notify:!1}).catch(()=>{}),!J)L.success("Channel deleted"),M0("Done ✅");return!0}g0();_0();async function H50(D,$,X=!1){if(!X)B0("List channels");$.apikey=$.apikey||z0();let J=await E0();if(D=i0(D,J?.config),!$.apikey){if(!X)L.error("Missing API key, you need to provide an API key to upload your bundle");throw Error("Missing API key")}if(!D){if(!X)L.error("Missing argument, you need to provide a appId, or be in a capacitor project");throw Error("Missing appId")}let Y=await C0($.apikey,$.supaHost,$.supaAnon);await tD(Y,D,X);let F=await rD(Y,D);if(await fD(Y,$.apikey,D,1,X,!0),!X)L.info("Querying available channels in Capgo");let Q=await WD0(Y,D);if(!X)L.info(`Active channels in Capgo: ${Q?.length??0}`),wD0(Q);if(await j0($.apikey,{channel:"channel",event:"List channel",icon:"✅",org_id:F,tracking_version:2,tags:{"app-id":D},notify:!1}).catch(()=>{}),!X)M0("Done ✅");return Q}g0();g0();var V50=JD(TO(),1);import{stdout as xp0}from"node:process";_0();function _p0(D,$){if(!/^\d+$/.test(D))return;let X=Number.parseInt(D,10);return Number.isSafeInteger(X)&&X>=$?X:void 0}function fp0(D){if(D.kind==="channel"){let X=new URL("capgo://preview/channel");return X.searchParams.set("appId",D.appId),X.searchParams.set("channel",D.channelName),X.searchParams.set("channelId",String(D.channelId)),X.toString()}let $=new URL("capgo://preview/bundle");return $.searchParams.set("appId",D.appId),$.searchParams.set("versionId",String(D.versionId)),$.toString()}async function kp0(D){return V50.default.toString(D,{type:"utf8",errorCorrectionLevel:"L"})}async function yp0(D,$){let{data:X,error:J}=await D.from("apps").select("app_id, allow_preview").eq("app_id",$).single();if(J||!X)throw Error(`Cannot load app ${$}: ${o(J)}`);return X}async function bp0(D,$){if(!(await yp0(D,$)).allow_preview)throw Error(`Preview is disabled for app ${$}. Enable it with: npx @capgo/cli@latest app set ${$} --preview`)}async function gp0(D,$,X){let{data:J,error:Y}=await D.from("channels").select("id, name").eq("app_id",$).eq("id",X).maybeSingle();if(Y)throw Error(`Cannot load channel ${X}: ${o(Y)}`);return J}async function z50(D,$,X){let{data:J,error:Y}=await D.from("channels").select("id, name").eq("app_id",$).eq("name",X).maybeSingle();if(Y)throw Error(`Cannot load channel ${X}: ${o(Y)}`);return J}async function N50(D,$,X){let J=_p0(X,1),Y=J===void 0?await z50(D,$,X):await gp0(D,$,J)??await z50(D,$,X);if(!Y)return null;return{appId:$,channelId:Y.id,channelName:Y.name,kind:"channel"}}async function hp0(D){let $=fp0(D),X=await kp0($),J=D.kind==="bundle"?`Bundle ${D.bundleName} (${D.versionId})`:`Channel ${D.channelName} (${D.channelId})`;L.success(`Preview QR for ${J}`),xp0.write(`
635
635
  ${X}
636
636
  ${$}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
3
  "type": "module",
4
- "version": "8.5.1",
4
+ "version": "8.5.3",
5
5
  "description": "A CLI to upload to capgo servers",
6
6
  "author": "Martin martin@capgo.app",
7
7
  "license": "Apache 2.0",
@@ -176,8 +176,8 @@
176
176
  "string-width": "^8.2.1"
177
177
  },
178
178
  "optionalDependencies": {
179
- "@capgo/cli-helper-darwin-arm64": "^1.1.0",
180
- "@capgo/cli-helper-darwin-x64": "^1.1.0"
179
+ "@capgo/cli-helper-darwin-arm64": "^1.1.1",
180
+ "@capgo/cli-helper-darwin-x64": "^1.1.1"
181
181
  },
182
182
  "devDependencies": {
183
183
  "@antfu/eslint-config": "^9.0.0",