@capgo/cli 7.18.13 → 7.18.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/src/sdk.js CHANGED
@@ -316,7 +316,7 @@ Trial expires in ${k} days, upgrade here: ${r.hostWeb}/dashboard/settings/plans
316
316
  Upgrade here: ${r.hostWeb}/dashboard/settings/plans
317
317
  `),b3(100),Promise.resolve().then(()=>(bD(),pD)).then(j=>{j.default(`${r.hostWeb}/dashboard/settings/plans`)}),b3(500),new Error("Plan upgrade required for upload");let[k,x0]=await Promise.all([PW(i,e),IW(i,e)]);k>0&&o&&!x0&&I0.warn(`WARNING !!
318
318
  Trial expires in ${k} days, upgrade here: ${r.hostWeb}/dashboard/settings/plans
319
- `)}function Te(i=!1){let e=En.env.CAPGO_TOKEN?.trim();if(e)return i||I0.info("Use CAPGO_TOKEN environment variable"),e;let s=(0,g3.homedir)(),n,o=`${s}/.capgo`;if((0,c6.existsSync)(o)&&(i||I0.info(`Use global API key ${o}`),n=(0,c6.readFileSync)(o,"utf8").trim()),o=".capgo",!n&&(0,c6.existsSync)(o)&&(i||I0.info(`Use local API key ${o}`),n=(0,c6.readFileSync)(o,"utf8").trim()),!n){let r=`Cannot find API key in local folder or global, please login first with ${Es().runner} @capacitor/cli login`;throw I0.error(r),new Error(r)}return n}function t7(i){let e=/\.(jpg|jpeg|png|gif|bmp|webp)$/i,s=i.match(e);if(s)switch(s[1].toLowerCase()){case"jpg":case"jpeg":return"image/jpeg";case"png":return"image/png";case"webp":return"image/webp"}return null}async function wD(i,e){return i.from("app_versions").upsert(e,{onConflict:"name,app_id"}).eq("app_id",e.app_id).eq("name",e.name)}async function LW(i,e,s){let n={app_id:e,name:s,version:0};try{let r=await i.functions.invoke("files/upload_link",{body:JSON.stringify(n)});if(r.error){if(r.error instanceof Zc.FunctionsHttpError){let a=await r.error.context.json();I0.error(`Upload URL error: ${a.status||JSON.stringify(a)}`)}else I0.error(`Cannot get upload url: ${r.error.message}`);return""}return r.data.url}catch(o){I0.error(`Cannot get upload url ${se(o)}`)}return""}async function*MW(i){let e=(0,c6.readdirSync)(i,{withFileTypes:!0});for(let s of e){let n=(0,d6.join)(i,s.name);s.isDirectory()?yield*MW(n):yield n}}async function qW(i){let e=[],s=[".DS_Store",".git",".gitignore","node_modules","package-lock.json","tsconfig.json","tsconfig.app.json","tsconfig.spec.json","tsconfig.app.json","tsconfig.spec.json","tsconfig.app.json","tsconfig.spec.json"];for await(let n of MW(i)){if(s.some(k=>n.includes(k))){I0.info(`Ignoring file ${n}, please ensure you have only required files in your dist folder`);continue}let o=(0,c6.readFileSync)(n);if(o.length===0){I0.info(`Ignoring empty file ${n}, please ensure you have only required files in your dist folder`);continue}let r=await(0,AW.checksum)(o,"sha256"),a=(0,d6.relative)(i,n);a.startsWith("/")&&(a=a.substring(1)),e.push({file:a,hash:r})}return e}async function D3(i){return(0,g3.platform)()==="win32"?Wy0(i):zy0(i)}function zy0(i){let e=new mD.default;return e.addLocalFolder(i),e.toBuffer()}async function Wy0(i){I0.info("Zipping file windows mode");let e=new mD.default,s=(n,o)=>{let r=(0,c6.readdirSync)(n);for(let a of r){let k=(0,d6.join)(n,a),x0=(0,c6.statSync)(k);if(x0.isFile()){let j=(0,c6.readFileSync)(k);e.addFile((0,d6.join)(o,a).split(d6.sep).join("/"),j)}else x0.isDirectory()&&s(k,(0,d6.join)(o,a))}};return s(i,""),e.toBuffer()}async function UW(i,e,s,n,o,r,a,k){return new Promise((x0,j)=>{ut(i,{channel:"app",event:"App TUS upload",icon:"\u23EB",user_id:s,tags:{"app-id":n},notify:!1}),new m3.Upload(e,{endpoint:`${a.hostFilesApi}/files/upload/attachments/`,chunkSize:k,metadataForPartialUploads:{filename:`orgs/${s}/apps/${n}/${o}.zip`,filetype:"application/gzip"},metadata:{filename:`orgs/${s}/apps/${n}/${o}.zip`,filetype:"application/zip"},headers:{Authorization:i},onError(s0){if(I0.error(`Error uploading bundle: ${s0.message}`),s0 instanceof m3.DetailedError){let l0=s0.originalResponse?.getBody(),u0=JSON.parse(l0||'{"error": "unknown error"}');j(u0.status||u0.error||u0.message||"unknown error")}else j(s0.message||s0.toString()||"unknown error")},onProgress(s0,l0){let u0=(s0/l0*100).toFixed(2);r.message(`Uploaded ${u0}%`)},async onSuccess(){await ut(i,{channel:"app",event:"App TUS done",icon:"\u23EB",user_id:s,tags:{"app-id":n},notify:!1}).catch(),x0(!0)}}).start()})}async function HW(i,e,s){let n={app_id:e,name:s};try{let r=await i.functions.invoke("private/delete_failed_version",{body:JSON.stringify(n),method:"DELETE"});if(r.error){if(r.error instanceof Zc.FunctionsHttpError){let a=await r.error.context.json();I0.error(`Cannot delete failed version: ${a.status||JSON.stringify(a)}`)}else I0.error(`Cannot delete failed version: ${r.error.message}`);return}return r.data?.status}catch(o){if(o instanceof Zc.FunctionsHttpError){let r=await o.context.json();I0.error(`Cannot delete failed version: ${r.message||JSON.stringify(r)}`)}else I0.error(`Cannot delete failed version: ${se(o)}`)}}async function v3(i,e){if(!e.app_id||!e.name||!e.created_by)return I0.error("missing app_id, name, or created_by"),Promise.reject(new Error("missing app_id, name, or created_by"));let{data:s,error:n}=await i.from("channels").select().eq("app_id",e.app_id).eq("name",e.name).single();return s&&!n?i.from("channels").update(e).eq("app_id",e.app_id).eq("name",e.name).select().single():i.from("channels").insert(e).select().single()}async function ut(i,e){try{let s=await w3(),n=await G2.post(`${s.hostApi}/private/events`,{json:e,headers:{capgkey:i},timeout:1e4,retry:3}).json();n.error&&I0.error(`Failed to send LogSnag event: ${n.error}`)}catch{}}async function E3(i,e){let{error:s,data:n}=await i.rpc("get_orgs_v6");if(s)throw I0.error("Cannot get the list of organizations - exiting"),I0.error(`Error ${JSON.stringify(s)}`),new Error("Cannot get the list of organizations");let o=n.filter(x0=>!!e.find(j=>j===x0.role));if(n.length===0)throw I0.error("Could not get organization please create an organization first"),new Error("No organizations available");if(o.length===0)throw I0.error(`Could not find organization with roles: ${e.join(" or ")} please create an organization or ask the admin to add you to the organization with this roles`),new Error("Could not find organization with required roles");let r=o.length>1?await m2({message:"Please pick the organization that you want to insert to",options:o.map(x0=>({value:x0.gid,label:x0.name}))}):o[0].gid;if(C6(r))throw I0.error("Canceled organization selection, exiting"),new Error("Organization selection cancelled");let a=r,k=n.find(x0=>x0.gid===a);return I0.info(`Using the organization "${k.name}" as the app owner`),k}async function Xe(i,e,s=["all"]){await jy0(i,e,s);let{data:n,error:o}=await i.rpc("get_user_id",{apikey:e}).single(),r=(n||"").toString();if(!r||o)throw I0.error("Cannot auth user with apikey"),new Error("Cannot authenticate user with provided API key");return r}async function zi(i,e){let{data:s,error:n}=await i.from("apps").select("owner_org").eq("app_id",e).single();if(!s||n)throw I0.error(`Cannot get organization id for app id ${e}`),se(n),new Error(`Cannot get organization id for app id ${e}`);return s.owner_org}function r7(i){return new Date(i||"").toLocaleString()}var EW=!1,Jc="npm",Hf="install",gD="npx";function Es(){if(EW)return{pm:Jc,command:Hf,installCommand:`${Jc} ${Hf}`,runner:gD};let i=_r((0,En.cwd)());return Jc=M7(i,"npm"),Hf=Kl(Jc),EW=!0,gD=gA(i),{pm:Jc,command:Hf,installCommand:`${Jc} ${Hf}`,runner:gD}}function jW(i){return(0,c6.readdirSync)(i,{withFileTypes:!0}).flatMap(n=>{let o=(0,d6.join)(i,n.name);return n.isDirectory()?jW(o):o.split(`node_modules${d6.sep}`)[1]||o})}async function DD(i,e){let s=e?e.split(","):[],n;try{n=await pi("",i)}catch(r0){throw I0.error("Invalid package.json, JSON parsing failed"),console.error("json parse error: ",r0),r0 instanceof Error?r0:new Error("Invalid package.json")}let o=i?.split(",")[0],r=o?d6.default.resolve(o).replace(hi,""):_r((0,En.cwd)());if(!n)throw I0.error("Missing dependencies section in package.json"),new Error("Missing dependencies section in package.json");for(let[r0,s0]of Object.entries(n))if(typeof s0!="string")throw I0.error(`Invalid dependency ${r0}: ${s0}, expected string, got ${typeof s0}`),new Error(`Invalid dependency ${r0}: expected string version`);let a=s.length===0?[(0,d6.join)((0,En.cwd)(),"node_modules")]:s;if(!a.some(r0=>(0,c6.existsSync)(r0))){let r0=M7(r,"npm"),s0=Kl(r0);throw I0.error(`Missing node_modules folder at ${a.join(", ")}, please run ${r0} ${s0}`),new Error("Missing node_modules folder")}let x0=!1,j=await Promise.all(Array.from(n.entries()).map(async([r0,s0])=>{let l0=!1,u0=!1;for(let h0 of a){let y0=(0,d6.join)(h0,r0);if((0,c6.existsSync)(y0)){l0=!0;try{if(jW(y0).some(_0=>Hy0.test(_0))){u0=!0;break}}catch(v0){throw I0.error(`Error reading node_modules files for ${r0} package in ${h0}`),console.error(v0),v0 instanceof Error?v0:new Error(`Error reading node_modules files for ${r0}`)}}}if(!l0){x0=!0;let h0=M7(r,"npm"),y0=Kl(h0);return I0.error(`Missing dependency ${r0}, please run ${h0} ${y0}`),{name:r0,version:s0}}return{name:r0,version:s0,native:u0}})).catch(()=>[]);if(x0||j.find(r0=>r0.native===void 0))throw I0.error("Missing dependencies or invalid dependencies"),I0.error("If you use monorepo, workspace or any special package manager you can use the --package-json [path,] and --node-modules [path,] options to make the command work properly"),new Error("Missing dependencies or invalid dependencies");return j}async function Qy0(i,e,s){let{data:n,error:o}=await i.from("channels").select("version(checksum)").eq("name",s).eq("app_id",e).single(),r=n;return o||r===null||!r.version||!r.version.checksum?null:r.version.checksum}function Ky0(i){if(!i)throw I0.error("Error parsing native packages, perhaps the metadata does not exist in Capgo?"),new Error("Error parsing native packages");for(let s of i){if(typeof s!="object")throw I0.error(`Invalid remote native package data: ${s}, expected object, got ${typeof s}`),new Error("Invalid remote native package data");let{name:n,version:o}=s;if(!n||typeof n!="string")throw I0.error(`Invalid remote native package name: ${n}, expected string, got ${typeof n}`),new Error("Invalid remote native package name");if(!o||typeof o!="string")throw I0.error(`Invalid remote native package version: ${o}, expected string, got ${typeof o}`),new Error("Invalid remote native package version")}return new Map(i.map(s=>[s.name,s]))}async function VW(i,e,s){let{data:n,error:o}=await i.from("channels").select(`version (
319
+ `)}function Te(i=!1){let e=En.env.CAPGO_TOKEN?.trim();if(e)return i||I0.info("Use CAPGO_TOKEN environment variable"),e;let s=(0,g3.homedir)(),n,o=`${s}/.capgo`;if((0,c6.existsSync)(o)&&(i||I0.info(`Use global API key ${o}`),n=(0,c6.readFileSync)(o,"utf8").trim()),o=".capgo",!n&&(0,c6.existsSync)(o)&&(i||I0.info(`Use local API key ${o}`),n=(0,c6.readFileSync)(o,"utf8").trim()),!n){let r=`Cannot find API key in local folder or global, please login first with ${Es().runner} @capacitor/cli login`;throw I0.error(r),new Error(r)}return n}function t7(i){let e=/\.(jpg|jpeg|png|gif|bmp|webp)$/i,s=i.match(e);if(s)switch(s[1].toLowerCase()){case"jpg":case"jpeg":return"image/jpeg";case"png":return"image/png";case"webp":return"image/webp"}return null}async function wD(i,e){return i.from("app_versions").upsert(e,{onConflict:"name,app_id"}).eq("app_id",e.app_id).eq("name",e.name)}async function LW(i,e,s){let n={app_id:e,name:s,version:0};try{let r=await i.functions.invoke("files/upload_link",{body:JSON.stringify(n)});if(r.error){if(r.error instanceof Zc.FunctionsHttpError){let a=await r.error.context.json();I0.error(`Upload URL error: ${a.status||JSON.stringify(a)}`)}else I0.error(`Cannot get upload url: ${r.error.message}`);return""}return r.data.url}catch(o){I0.error(`Cannot get upload url ${se(o)}`)}return""}async function*MW(i){let e=(0,c6.readdirSync)(i,{withFileTypes:!0});for(let s of e){let n=(0,d6.join)(i,s.name);s.isDirectory()?yield*MW(n):yield n}}async function qW(i){let e=[],s=[".DS_Store",".git",".gitignore","node_modules","package-lock.json","tsconfig.json","tsconfig.app.json","tsconfig.spec.json","tsconfig.app.json","tsconfig.spec.json","tsconfig.app.json","tsconfig.spec.json"];for await(let n of MW(i)){if(s.some(k=>n.includes(k))){I0.info(`Ignoring file ${n}, please ensure you have only required files in your dist folder`);continue}let o=(0,c6.readFileSync)(n);if(o.length===0){I0.info(`Ignoring empty file ${n}, please ensure you have only required files in your dist folder`);continue}let r=await(0,AW.checksum)(o,"sha256"),a=(0,d6.relative)(i,n);a.startsWith("/")&&(a=a.substring(1)),e.push({file:a,hash:r})}return e}async function D3(i){return(0,g3.platform)()==="win32"?Wy0(i):zy0(i)}function zy0(i){let e=new mD.default;return e.addLocalFolder(i),e.toBuffer()}async function Wy0(i){I0.info("Zipping file windows mode");let e=new mD.default,s=(n,o)=>{let r=(0,c6.readdirSync)(n);for(let a of r){let k=(0,d6.join)(n,a),x0=(0,c6.statSync)(k);if(x0.isFile()){let j=(0,c6.readFileSync)(k);e.addFile((0,d6.join)(o,a).split(d6.sep).join("/"),j)}else x0.isDirectory()&&s(k,(0,d6.join)(o,a))}};return s(i,""),e.toBuffer()}async function UW(i,e,s,n,o,r,a,k){return new Promise((x0,j)=>{ut(i,{channel:"app",event:"App TUS upload",icon:"\u23EB",user_id:s,tags:{"app-id":n},notify:!1}),new m3.Upload(e,{endpoint:`${a.hostFilesApi}/files/upload/attachments/`,chunkSize:k,metadataForPartialUploads:{filename:`orgs/${s}/apps/${n}/${o}.zip`,filetype:"application/gzip"},metadata:{filename:`orgs/${s}/apps/${n}/${o}.zip`,filetype:"application/zip"},headers:{Authorization:i},onError(s0){if(I0.error(`Error uploading bundle: ${s0.message}`),s0 instanceof m3.DetailedError){let l0=s0.originalResponse?.getBody(),u0=JSON.parse(l0||'{"error": "unknown error"}');j(u0.status||u0.error||u0.message||"unknown error")}else j(s0.message||s0.toString()||"unknown error")},onProgress(s0,l0){let u0=(s0/l0*100).toFixed(2);r.message(`Uploaded ${u0}%`)},async onSuccess(){await ut(i,{channel:"app",event:"App TUS done",icon:"\u23EB",user_id:s,tags:{"app-id":n},notify:!1}).catch(),x0(!0)}}).start()})}async function HW(i,e,s){let n={app_id:e,name:s};try{let r=await i.functions.invoke("private/delete_failed_version",{body:JSON.stringify(n),method:"DELETE"});if(r.error){if(r.error instanceof Zc.FunctionsHttpError){let a=await r.error.context.json();I0.error(`Cannot delete failed version: ${a.status||JSON.stringify(a)}`)}else I0.error(`Cannot delete failed version: ${r.error.message}`);return}return r.data?.status}catch(o){if(o instanceof Zc.FunctionsHttpError){let r=await o.context.json();I0.error(`Cannot delete failed version: ${r.message||JSON.stringify(r)}`)}else I0.error(`Cannot delete failed version: ${se(o)}`)}}async function v3(i,e){if(!e.app_id||!e.name||!e.created_by)return I0.error("missing app_id, name, or created_by"),Promise.reject(new Error("missing app_id, name, or created_by"));let{data:s,error:n}=await i.from("channels").select().eq("app_id",e.app_id).eq("name",e.name).single();return s&&!n?i.from("channels").update(e).eq("app_id",e.app_id).eq("name",e.name).select().single():i.from("channels").insert(e).select().single()}async function ut(i,e,s){try{let n=await w3(),o=await G2.post(`${n.hostApi}/private/events`,{json:e,headers:{capgkey:i},timeout:1e4,retry:3}).json();o.error&&I0.error(`Failed to send LogSnag event: ${o.error}`)}catch(n){s&&(I0.error("Failed to send Stats event details:"),I0.error(se(n)))}}async function E3(i,e){let{error:s,data:n}=await i.rpc("get_orgs_v6");if(s)throw I0.error("Cannot get the list of organizations - exiting"),I0.error(`Error ${JSON.stringify(s)}`),new Error("Cannot get the list of organizations");let o=n.filter(x0=>!!e.find(j=>j===x0.role));if(n.length===0)throw I0.error("Could not get organization please create an organization first"),new Error("No organizations available");if(o.length===0)throw I0.error(`Could not find organization with roles: ${e.join(" or ")} please create an organization or ask the admin to add you to the organization with this roles`),new Error("Could not find organization with required roles");let r=o.length>1?await m2({message:"Please pick the organization that you want to insert to",options:o.map(x0=>({value:x0.gid,label:x0.name}))}):o[0].gid;if(C6(r))throw I0.error("Canceled organization selection, exiting"),new Error("Organization selection cancelled");let a=r,k=n.find(x0=>x0.gid===a);return I0.info(`Using the organization "${k.name}" as the app owner`),k}async function Xe(i,e,s=["all"]){await jy0(i,e,s);let{data:n,error:o}=await i.rpc("get_user_id",{apikey:e}).single(),r=(n||"").toString();if(!r||o)throw I0.error("Cannot auth user with apikey"),new Error("Cannot authenticate user with provided API key");return r}async function zi(i,e){let{data:s,error:n}=await i.from("apps").select("owner_org").eq("app_id",e).single();if(!s||n)throw I0.error(`Cannot get organization id for app id ${e}`),se(n),new Error(`Cannot get organization id for app id ${e}`);return s.owner_org}function r7(i){return new Date(i||"").toLocaleString()}var EW=!1,Jc="npm",Hf="install",gD="npx";function Es(){if(EW)return{pm:Jc,command:Hf,installCommand:`${Jc} ${Hf}`,runner:gD};let i=_r((0,En.cwd)());return Jc=M7(i,"npm"),Hf=Kl(Jc),EW=!0,gD=gA(i),{pm:Jc,command:Hf,installCommand:`${Jc} ${Hf}`,runner:gD}}function jW(i){return(0,c6.readdirSync)(i,{withFileTypes:!0}).flatMap(n=>{let o=(0,d6.join)(i,n.name);return n.isDirectory()?jW(o):o.split(`node_modules${d6.sep}`)[1]||o})}async function DD(i,e){let s=e?e.split(","):[],n;try{n=await pi("",i)}catch(r0){throw I0.error("Invalid package.json, JSON parsing failed"),console.error("json parse error: ",r0),r0 instanceof Error?r0:new Error("Invalid package.json")}let o=i?.split(",")[0],r=o?d6.default.resolve(o).replace(hi,""):_r((0,En.cwd)());if(!n)throw I0.error("Missing dependencies section in package.json"),new Error("Missing dependencies section in package.json");for(let[r0,s0]of Object.entries(n))if(typeof s0!="string")throw I0.error(`Invalid dependency ${r0}: ${s0}, expected string, got ${typeof s0}`),new Error(`Invalid dependency ${r0}: expected string version`);let a=s.length===0?[(0,d6.join)((0,En.cwd)(),"node_modules")]:s;if(!a.some(r0=>(0,c6.existsSync)(r0))){let r0=M7(r,"npm"),s0=Kl(r0);throw I0.error(`Missing node_modules folder at ${a.join(", ")}, please run ${r0} ${s0}`),new Error("Missing node_modules folder")}let x0=!1,j=await Promise.all(Array.from(n.entries()).map(async([r0,s0])=>{let l0=!1,u0=!1;for(let h0 of a){let y0=(0,d6.join)(h0,r0);if((0,c6.existsSync)(y0)){l0=!0;try{if(jW(y0).some(_0=>Hy0.test(_0))){u0=!0;break}}catch(v0){throw I0.error(`Error reading node_modules files for ${r0} package in ${h0}`),console.error(v0),v0 instanceof Error?v0:new Error(`Error reading node_modules files for ${r0}`)}}}if(!l0){x0=!0;let h0=M7(r,"npm"),y0=Kl(h0);return I0.error(`Missing dependency ${r0}, please run ${h0} ${y0}`),{name:r0,version:s0}}return{name:r0,version:s0,native:u0}})).catch(()=>[]);if(x0||j.find(r0=>r0.native===void 0))throw I0.error("Missing dependencies or invalid dependencies"),I0.error("If you use monorepo, workspace or any special package manager you can use the --package-json [path,] and --node-modules [path,] options to make the command work properly"),new Error("Missing dependencies or invalid dependencies");return j}async function Qy0(i,e,s){let{data:n,error:o}=await i.from("channels").select("version(checksum)").eq("name",s).eq("app_id",e).single(),r=n;return o||r===null||!r.version||!r.version.checksum?null:r.version.checksum}function Ky0(i){if(!i)throw I0.error("Error parsing native packages, perhaps the metadata does not exist in Capgo?"),new Error("Error parsing native packages");for(let s of i){if(typeof s!="object")throw I0.error(`Invalid remote native package data: ${s}, expected object, got ${typeof s}`),new Error("Invalid remote native package data");let{name:n,version:o}=s;if(!n||typeof n!="string")throw I0.error(`Invalid remote native package name: ${n}, expected string, got ${typeof n}`),new Error("Invalid remote native package name");if(!o||typeof o!="string")throw I0.error(`Invalid remote native package version: ${o}, expected string, got ${typeof o}`),new Error("Invalid remote native package version")}return new Map(i.map(s=>[s.name,s]))}async function VW(i,e,s){let{data:n,error:o}=await i.from("channels").select(`version (
320
320
  native_packages
321
321
  )`).eq("name",s).eq("app_id",e).single();if(o)throw I0.error(`Error fetching native packages: ${o.message}`),new Error(`Error fetching native packages: ${o.message}`);return Ky0(n.version.native_packages??[])}async function GW(i,e,s,n){let o=P6();o.start(`Checking bundle checksum compatibility with channel ${s}`);let r=await Qy0(i,e,s);if(!r){o.stop(`No checksum found for channel ${s}, the bundle will be uploaded`);return}if(r&&r===n)throw I0.error(`Cannot upload the same bundle content.
322
322
  Current bundle checksum matches remote bundle for channel ${s}
@@ -340,7 +340,7 @@ ${se(r)}`),new Error(`Cannot retrieve unknown version for app ${e}: ${se(r)}`);r
340
340
  created_by,
341
341
  app_id,
342
342
  version (id, name)
343
- `).eq("app_id",e).order("created_at",{ascending:!1});if(o)throw s||I0.error(`App ${e} not found in database`),new Error(`App ${e} not found in database: ${se(o)}`);return n}async function AD(i,e,s,n={}){let{silent:o=!1}=n,{error:r}=await i.from("app_versions").update({deleted:!0}).eq("app_id",e).eq("deleted",!1).eq("name",s);if(r){let a=`App version ${e}@${s} not found in database`;throw o||I0.error(a),new Error(`${a}: ${se(r)}`)}}async function C3(i,e,s,n={}){let{silent:o=!1,autoUnlink:r=!1}=n,a=await Yy0(i,e,s,{silent:o});await zW(i,e,a,{silent:o,autoUnlink:r}),await AD(i,e,s,{silent:o})}function $W(i,e=!1){if(e)return;if(!i.length)throw new Error("No bundle found");let s=new V6;s.theme=V6.roundTheme,s.headers=["Version","Created","Keep"],s.rows=[];for(let n of i.toReversed())s.rows.push([n.name,r7(n.created_at),n.keep??""]);I0.success("Bundles"),I0.success(s.toString())}async function S3(i,e,s={}){let{silent:n=!1}=s,{data:o,error:r}=await i.from("app_versions").select().eq("app_id",e).eq("deleted",!1).order("created_at",{ascending:!1});if(r){let a=`App ${e} not found in database`;throw n||I0.error(a),new Error(`${a}: ${se(r)}`)}return o??[]}async function xQ(i,e,s={}){let{silent:n=!1}=s,{data:o,error:r}=await i.from("channels").select("version").eq("app_id",e);if(r){let a=`App ${e} not found in database`;throw n||I0.error(a),new Error(`${a}: ${se(r)}`)}return(o??[]).map(a=>a.version)}async function Yy0(i,e,s,n={}){let{silent:o=!1}=n,{data:r,error:a}=await i.from("app_versions").select().eq("app_id",e).eq("name",s).eq("deleted",!1).single();if(!r||a){let k=`App version ${e}@${s} doesn't exist`;throw o||I0.error(k),new Error(`${k}${a?`: ${se(a)}`:""}`)}return r}var p7=require("node:fs");async function eQ(i,e){let{data:s}=await i.rpc("exist_app_v2",{appid:e}).single();return!!s}async function Zt(i,e,s,n,o=!1){let r=Es(),a=await _W(i,e,s);if(!a.okay)switch(a.error){case"INVALID_APIKEY":{let j="Invalid apikey, such apikey does not exists!";throw o||I0.error(j),new Error(j)}case"NO_APP":{let j=`App ${s} does not exist, run first \`${r.runner} @capgo/cli app add ${s}\` to create it`;throw o||I0.error(j),new Error(j)}case"NO_ORG":{let j="Could not find organization, please contact support to resolve this!";throw o||I0.error(j),new Error(j)}}let k=a.data;if(n>k){let j=`Insuficcent permissions for app ${s}. Current permission: ${rr[a.data]}, required for this action: ${rr[n]}.`;throw o||I0.error(j),new Error(j)}return a.data}var Jr="assets/icon.png";var jf=class extends Error{response;request;options;constructor(e,s,n){let o=e.status||e.status===0?e.status:"",r=e.statusText||"",a=`${o} ${r}`.trim(),k=a?`status code ${a}`:"an unknown error";super(`Request failed with ${k}: ${s.method} ${s.url}`),this.name="HTTPError",this.response=e,this.request=s,this.options=n}};var i7=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name="TimeoutError",this.request=e}};var n7=i=>i!==null&&typeof i=="object";var Vf=(...i)=>{for(let e of i)if((!n7(e)||Array.isArray(e))&&e!==void 0)throw new TypeError("The `options` argument must be an object");return OD({},...i)},CD=(i={},e={})=>{let s=new globalThis.Headers(i),n=e instanceof globalThis.Headers,o=new globalThis.Headers(e);for(let[r,a]of o.entries())n&&a==="undefined"||a===void 0?s.delete(r):s.set(r,a);return s};function O3(i,e,s){return Object.hasOwn(e,s)&&e[s]===void 0?[]:OD(i[s]??[],e[s]??[])}var SD=(i={},e={})=>({beforeRequest:O3(i,e,"beforeRequest"),beforeRetry:O3(i,e,"beforeRetry"),afterResponse:O3(i,e,"afterResponse"),beforeError:O3(i,e,"beforeError")}),OD=(...i)=>{let e={},s={},n={};for(let o of i)if(Array.isArray(o))Array.isArray(e)||(e=[]),e=[...e,...o];else if(n7(o)){for(let[r,a]of Object.entries(o))n7(a)&&r in e&&(a=OD(e[r],a)),e={...e,[r]:a};n7(o.hooks)&&(n=SD(n,o.hooks),e.hooks=n),n7(o.headers)&&(s=CD(s,o.headers),e.headers=s)}return e};var tQ=(()=>{let i=!1,e=!1,s=typeof globalThis.ReadableStream=="function",n=typeof globalThis.Request=="function";if(s&&n)try{e=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return i=!0,"half"}}).headers.has("Content-Type")}catch(o){if(o instanceof Error&&o.message==="unsupported BodyInit type")return!1;throw o}return i&&!e})(),rQ=typeof globalThis.AbortController=="function",iQ=typeof globalThis.ReadableStream=="function",nQ=typeof globalThis.FormData=="function",k3=["get","post","put","patch","head","delete"],Xy0=()=>{};Xy0();var sQ={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*"},T3=2147483647,F3=Symbol("stop"),aQ={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,fetch:!0},oQ={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,dispatcher:!0,duplex:!0,priority:!0};var uQ=i=>k3.includes(i)?i.toUpperCase():i,Jy0=["get","put","head","delete","options","trace"],Zy0=[408,413,429,500,502,503,504],$y0=[413,429,503],cQ={limit:2,methods:Jy0,statusCodes:Zy0,afterStatusCodes:$y0,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:i=>.3*2**(i-1)*1e3},fQ=(i={})=>{if(typeof i=="number")return{...cQ,limit:i};if(i.methods&&!Array.isArray(i.methods))throw new Error("retry.methods must be an array");if(i.statusCodes&&!Array.isArray(i.statusCodes))throw new Error("retry.statusCodes must be an array");return{...cQ,...i}};async function kD(i,e,s,n){return new Promise((o,r)=>{let a=setTimeout(()=>{s&&s.abort(),r(new i7(i))},n.timeout);n.fetch(i,e).then(o).catch(r).then(()=>{clearTimeout(a)})})}async function TD(i,{signal:e}){return new Promise((s,n)=>{e&&(e.throwIfAborted(),e.addEventListener("abort",o,{once:!0}));function o(){clearTimeout(r),n(e.reason)}let r=setTimeout(()=>{e?.removeEventListener("abort",o),s()},i)})}var lQ=(i,e)=>{let s={};for(let n in e)!(n in oQ)&&!(n in aQ)&&!(n in i)&&(s[n]=e[n]);return s};var Gf=class i{static create(e,s){let n=new i(e,s),o=async()=>{if(typeof n._options.timeout=="number"&&n._options.timeout>T3)throw new RangeError(`The \`timeout\` option cannot be greater than ${T3}`);await Promise.resolve();let k=await n._fetch();for(let x0 of n._options.hooks.afterResponse){let j=await x0(n.request,n._options,n._decorateResponse(k.clone()));j instanceof globalThis.Response&&(k=j)}if(n._decorateResponse(k),!k.ok&&n._options.throwHttpErrors){let x0=new jf(k,n.request,n._options);for(let j of n._options.hooks.beforeError)x0=await j(x0);throw x0}if(n._options.onDownloadProgress){if(typeof n._options.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!iQ)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");return n._stream(k.clone(),n._options.onDownloadProgress)}return k},a=n._options.retry.methods.includes(n.request.method.toLowerCase())?n._retry(o):o();for(let[k,x0]of Object.entries(sQ))a[k]=async()=>{n.request.headers.set("accept",n.request.headers.get("accept")||x0);let j=await a;if(k==="json"){if(j.status===204||(await j.clone().arrayBuffer()).byteLength===0)return"";if(s.parseJson)return s.parseJson(await j.text())}return j[k]()};return a}request;abortController;_retryCount=0;_input;_options;constructor(e,s={}){if(this._input=e,this._options={...s,headers:CD(this._input.headers,s.headers),hooks:SD({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},s.hooks),method:uQ(s.method??this._input.method??"GET"),prefixUrl:String(s.prefixUrl||""),retry:fQ(s.retry),throwHttpErrors:s.throwHttpErrors!==!1,timeout:s.timeout??1e4,fetch:s.fetch??globalThis.fetch.bind(globalThis)},typeof this._input!="string"&&!(this._input instanceof URL||this._input instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(this._options.prefixUrl&&typeof this._input=="string"){if(this._input.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");this._options.prefixUrl.endsWith("/")||(this._options.prefixUrl+="/"),this._input=this._options.prefixUrl+this._input}if(rQ){this.abortController=new globalThis.AbortController;let n=this._options.signal??this._input.signal;n?.aborted&&this.abortController.abort(n?.reason),n?.addEventListener("abort",()=>{this.abortController.abort(n.reason)}),this._options.signal=this.abortController.signal}if(tQ&&(this._options.duplex="half"),this._options.json!==void 0&&(this._options.body=this._options.stringifyJson?.(this._options.json)??JSON.stringify(this._options.json),this._options.headers.set("content-type",this._options.headers.get("content-type")??"application/json")),this.request=new globalThis.Request(this._input,this._options),this._options.searchParams){let o="?"+(typeof this._options.searchParams=="string"?this._options.searchParams.replace(/^\?/,""):new URLSearchParams(this._options.searchParams).toString()),r=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,o);(nQ&&this._options.body instanceof globalThis.FormData||this._options.body instanceof URLSearchParams)&&!(this._options.headers&&this._options.headers["content-type"])&&this.request.headers.delete("content-type"),this.request=new globalThis.Request(new globalThis.Request(r,{...this.request}),this._options)}}_calculateRetryDelay(e){if(this._retryCount++,this._retryCount>this._options.retry.limit||e instanceof i7)throw e;if(e instanceof jf){if(!this._options.retry.statusCodes.includes(e.response.status))throw e;let n=e.response.headers.get("Retry-After")??e.response.headers.get("RateLimit-Reset")??e.response.headers.get("X-RateLimit-Reset")??e.response.headers.get("X-Rate-Limit-Reset");if(n&&this._options.retry.afterStatusCodes.includes(e.response.status)){let o=Number(n)*1e3;Number.isNaN(o)?o=Date.parse(n)-Date.now():o>=Date.parse("2024-01-01")&&(o-=Date.now());let r=this._options.retry.maxRetryAfter??o;return o<r?o:r}if(e.response.status===413)throw e}let s=this._options.retry.delay(this._retryCount);return Math.min(this._options.retry.backoffLimit,s)}_decorateResponse(e){return this._options.parseJson&&(e.json=async()=>this._options.parseJson(await e.text())),e}async _retry(e){try{return await e()}catch(s){let n=Math.min(this._calculateRetryDelay(s),T3);if(this._retryCount<1)throw s;await TD(n,{signal:this._options.signal});for(let o of this._options.hooks.beforeRetry)if(await o({request:this.request,options:this._options,error:s,retryCount:this._retryCount})===F3)return;return this._retry(e)}}async _fetch(){for(let n of this._options.hooks.beforeRequest){let o=await n(this.request,this._options);if(o instanceof Request){this.request=o;break}if(o instanceof Response)return o}let e=lQ(this.request,this._options),s=this.request;return this.request=s.clone(),this._options.timeout===!1?this._options.fetch(s,e):kD(s,e,this.abortController,this._options)}_stream(e,s){let n=Number(e.headers.get("content-length"))||0,o=0;return e.status===204?(s&&s({percent:1,totalBytes:n,transferredBytes:o},new Uint8Array),new globalThis.Response(null,{status:e.status,statusText:e.statusText,headers:e.headers})):new globalThis.Response(new globalThis.ReadableStream({async start(r){let a=e.body.getReader();s&&s({percent:0,transferredBytes:0,totalBytes:n},new Uint8Array);async function k(){let{done:x0,value:j}=await a.read();if(x0){r.close();return}if(s){o+=j.byteLength;let r0=n===0?0:o/n;s({percent:r0,transferredBytes:o,totalBytes:n},j)}r.enqueue(j),await k()}await k()}}),{status:e.status,statusText:e.statusText,headers:e.headers})}};var FD=i=>{let e=(s,n)=>Gf.create(s,Vf(i,n));for(let s of k3)e[s]=(n,o)=>Gf.create(n,Vf(i,o,{method:s}));return e.create=s=>FD(Vf(s)),e.extend=s=>(typeof s=="function"&&(s=s(i??{})),FD(Vf(i,s))),e.stop=F3,e},xw0=FD(),dQ=xw0;var LQ=Me(BQ(),1);function RD(i){let e=(0,LQ.default)("npm",{registry:"https://registry.npmjs.org/"}),s=e[`${i}:registry`]||e.config_registry||e.registry;return s.slice(-1)==="/"?s:`${s}/`}var AX=Me(RK(),1),CX=Me(EX(),1),lv=class extends Error{constructor(e){super(`Package \`${e}\` could not be found`),this.name="PackageNotFoundError"}},dv=class extends Error{constructor(e,s){super(`Version \`${s}\` for package \`${e}\` could not be found`),this.name="VersionNotFoundError"}};async function hv(i,e={}){let{version:s="latest"}=e,{omitDeprecated:n=!0}=e,o=i.split("/")[0],r=e.registryUrl??RD(o),a=new URL(encodeURIComponent(i).replace(/^%40/,"@"),r),k=(0,AX.default)(r.toString(),{recursive:!0}),x0={accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"};e.fullMetadata&&delete x0.accept,k&&(x0.authorization=`${k.type} ${k.token}`);let j;try{j=await dQ(a,{headers:x0,keepalive:!0}).json()}catch(s0){throw s0?.response?.status===404?new lv(i):s0}if(e.allVersions)return j;let r0=new dv(i,s);if(j["dist-tags"][s]){let{time:s0}=j;j=j.versions[j["dist-tags"][s]],j.time=s0}else if(s){let s0=!!j.versions[s];if(n&&!s0)for(let[u0,h0]of Object.entries(j.versions))h0.deprecated&&delete j.versions[u0];if(!s0){let u0=Object.keys(j.versions);if(s=CX.default.maxSatisfying(u0,s),!s)throw r0}let{time:l0}=j;if(j=j.versions[s],j.time=l0,!j)throw r0}return j}async function rl(i,e){let{version:s}=await hv(i.toLowerCase(),e);return s}var Cs={name:"@capgo/cli",version:"7.18.13",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md"},"//dependencies":{ky:"We temporarily fixed ky version until this issue is resolved: https://github.com/sindresorhus/ky/issues/689 otherwise nodejs upload fails on node 18/20"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^7.4.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.76.1","@tomasklaen/checksum":"^1.1.0","@types/adm-zip":"^0.5.7","@types/brotli":"^1.3.4","@types/node":"^24.9.1","@types/prettyjson":"^0.0.33","@types/semver":"^7.7.1","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16",brotli:"^1.3.3","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.25.11",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",ky:"1.13.0","latest-version":"^9.0.0",open:"^10.1.2",pkg:"5.8.1",prettyjson:"^1.2.5",semver:"^7.7.3",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};async function It(){let i=await rl("@capgo/cli").catch(()=>""),e=i?.split(".")[0];i!==Cs.version&&I0.warning(`\u{1F6A8} You are using @capgo/cli@${Cs.version} it's not the latest version.
343
+ `).eq("app_id",e).order("created_at",{ascending:!1});if(o)throw s||I0.error(`App ${e} not found in database`),new Error(`App ${e} not found in database: ${se(o)}`);return n}async function AD(i,e,s,n={}){let{silent:o=!1}=n,{error:r}=await i.from("app_versions").update({deleted:!0}).eq("app_id",e).eq("deleted",!1).eq("name",s);if(r){let a=`App version ${e}@${s} not found in database`;throw o||I0.error(a),new Error(`${a}: ${se(r)}`)}}async function C3(i,e,s,n={}){let{silent:o=!1,autoUnlink:r=!1}=n,a=await Yy0(i,e,s,{silent:o});await zW(i,e,a,{silent:o,autoUnlink:r}),await AD(i,e,s,{silent:o})}function $W(i,e=!1){if(e)return;if(!i.length)throw new Error("No bundle found");let s=new V6;s.theme=V6.roundTheme,s.headers=["Version","Created","Keep"],s.rows=[];for(let n of i.toReversed())s.rows.push([n.name,r7(n.created_at),n.keep??""]);I0.success("Bundles"),I0.success(s.toString())}async function S3(i,e,s={}){let{silent:n=!1}=s,{data:o,error:r}=await i.from("app_versions").select().eq("app_id",e).eq("deleted",!1).order("created_at",{ascending:!1});if(r){let a=`App ${e} not found in database`;throw n||I0.error(a),new Error(`${a}: ${se(r)}`)}return o??[]}async function xQ(i,e,s={}){let{silent:n=!1}=s,{data:o,error:r}=await i.from("channels").select("version").eq("app_id",e);if(r){let a=`App ${e} not found in database`;throw n||I0.error(a),new Error(`${a}: ${se(r)}`)}return(o??[]).map(a=>a.version)}async function Yy0(i,e,s,n={}){let{silent:o=!1}=n,{data:r,error:a}=await i.from("app_versions").select().eq("app_id",e).eq("name",s).eq("deleted",!1).single();if(!r||a){let k=`App version ${e}@${s} doesn't exist`;throw o||I0.error(k),new Error(`${k}${a?`: ${se(a)}`:""}`)}return r}var p7=require("node:fs");async function eQ(i,e){let{data:s}=await i.rpc("exist_app_v2",{appid:e}).single();return!!s}async function Zt(i,e,s,n,o=!1){let r=Es(),a=await _W(i,e,s);if(!a.okay)switch(a.error){case"INVALID_APIKEY":{let j="Invalid apikey, such apikey does not exists!";throw o||I0.error(j),new Error(j)}case"NO_APP":{let j=`App ${s} does not exist, run first \`${r.runner} @capgo/cli app add ${s}\` to create it`;throw o||I0.error(j),new Error(j)}case"NO_ORG":{let j="Could not find organization, please contact support to resolve this!";throw o||I0.error(j),new Error(j)}}let k=a.data;if(n>k){let j=`Insuficcent permissions for app ${s}. Current permission: ${rr[a.data]}, required for this action: ${rr[n]}.`;throw o||I0.error(j),new Error(j)}return a.data}var Jr="assets/icon.png";var jf=class extends Error{response;request;options;constructor(e,s,n){let o=e.status||e.status===0?e.status:"",r=e.statusText||"",a=`${o} ${r}`.trim(),k=a?`status code ${a}`:"an unknown error";super(`Request failed with ${k}: ${s.method} ${s.url}`),this.name="HTTPError",this.response=e,this.request=s,this.options=n}};var i7=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name="TimeoutError",this.request=e}};var n7=i=>i!==null&&typeof i=="object";var Vf=(...i)=>{for(let e of i)if((!n7(e)||Array.isArray(e))&&e!==void 0)throw new TypeError("The `options` argument must be an object");return OD({},...i)},CD=(i={},e={})=>{let s=new globalThis.Headers(i),n=e instanceof globalThis.Headers,o=new globalThis.Headers(e);for(let[r,a]of o.entries())n&&a==="undefined"||a===void 0?s.delete(r):s.set(r,a);return s};function O3(i,e,s){return Object.hasOwn(e,s)&&e[s]===void 0?[]:OD(i[s]??[],e[s]??[])}var SD=(i={},e={})=>({beforeRequest:O3(i,e,"beforeRequest"),beforeRetry:O3(i,e,"beforeRetry"),afterResponse:O3(i,e,"afterResponse"),beforeError:O3(i,e,"beforeError")}),OD=(...i)=>{let e={},s={},n={};for(let o of i)if(Array.isArray(o))Array.isArray(e)||(e=[]),e=[...e,...o];else if(n7(o)){for(let[r,a]of Object.entries(o))n7(a)&&r in e&&(a=OD(e[r],a)),e={...e,[r]:a};n7(o.hooks)&&(n=SD(n,o.hooks),e.hooks=n),n7(o.headers)&&(s=CD(s,o.headers),e.headers=s)}return e};var tQ=(()=>{let i=!1,e=!1,s=typeof globalThis.ReadableStream=="function",n=typeof globalThis.Request=="function";if(s&&n)try{e=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return i=!0,"half"}}).headers.has("Content-Type")}catch(o){if(o instanceof Error&&o.message==="unsupported BodyInit type")return!1;throw o}return i&&!e})(),rQ=typeof globalThis.AbortController=="function",iQ=typeof globalThis.ReadableStream=="function",nQ=typeof globalThis.FormData=="function",k3=["get","post","put","patch","head","delete"],Xy0=()=>{};Xy0();var sQ={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*"},T3=2147483647,F3=Symbol("stop"),aQ={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,fetch:!0},oQ={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,dispatcher:!0,duplex:!0,priority:!0};var uQ=i=>k3.includes(i)?i.toUpperCase():i,Jy0=["get","put","head","delete","options","trace"],Zy0=[408,413,429,500,502,503,504],$y0=[413,429,503],cQ={limit:2,methods:Jy0,statusCodes:Zy0,afterStatusCodes:$y0,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:i=>.3*2**(i-1)*1e3},fQ=(i={})=>{if(typeof i=="number")return{...cQ,limit:i};if(i.methods&&!Array.isArray(i.methods))throw new Error("retry.methods must be an array");if(i.statusCodes&&!Array.isArray(i.statusCodes))throw new Error("retry.statusCodes must be an array");return{...cQ,...i}};async function kD(i,e,s,n){return new Promise((o,r)=>{let a=setTimeout(()=>{s&&s.abort(),r(new i7(i))},n.timeout);n.fetch(i,e).then(o).catch(r).then(()=>{clearTimeout(a)})})}async function TD(i,{signal:e}){return new Promise((s,n)=>{e&&(e.throwIfAborted(),e.addEventListener("abort",o,{once:!0}));function o(){clearTimeout(r),n(e.reason)}let r=setTimeout(()=>{e?.removeEventListener("abort",o),s()},i)})}var lQ=(i,e)=>{let s={};for(let n in e)!(n in oQ)&&!(n in aQ)&&!(n in i)&&(s[n]=e[n]);return s};var Gf=class i{static create(e,s){let n=new i(e,s),o=async()=>{if(typeof n._options.timeout=="number"&&n._options.timeout>T3)throw new RangeError(`The \`timeout\` option cannot be greater than ${T3}`);await Promise.resolve();let k=await n._fetch();for(let x0 of n._options.hooks.afterResponse){let j=await x0(n.request,n._options,n._decorateResponse(k.clone()));j instanceof globalThis.Response&&(k=j)}if(n._decorateResponse(k),!k.ok&&n._options.throwHttpErrors){let x0=new jf(k,n.request,n._options);for(let j of n._options.hooks.beforeError)x0=await j(x0);throw x0}if(n._options.onDownloadProgress){if(typeof n._options.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!iQ)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");return n._stream(k.clone(),n._options.onDownloadProgress)}return k},a=n._options.retry.methods.includes(n.request.method.toLowerCase())?n._retry(o):o();for(let[k,x0]of Object.entries(sQ))a[k]=async()=>{n.request.headers.set("accept",n.request.headers.get("accept")||x0);let j=await a;if(k==="json"){if(j.status===204||(await j.clone().arrayBuffer()).byteLength===0)return"";if(s.parseJson)return s.parseJson(await j.text())}return j[k]()};return a}request;abortController;_retryCount=0;_input;_options;constructor(e,s={}){if(this._input=e,this._options={...s,headers:CD(this._input.headers,s.headers),hooks:SD({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},s.hooks),method:uQ(s.method??this._input.method??"GET"),prefixUrl:String(s.prefixUrl||""),retry:fQ(s.retry),throwHttpErrors:s.throwHttpErrors!==!1,timeout:s.timeout??1e4,fetch:s.fetch??globalThis.fetch.bind(globalThis)},typeof this._input!="string"&&!(this._input instanceof URL||this._input instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(this._options.prefixUrl&&typeof this._input=="string"){if(this._input.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");this._options.prefixUrl.endsWith("/")||(this._options.prefixUrl+="/"),this._input=this._options.prefixUrl+this._input}if(rQ){this.abortController=new globalThis.AbortController;let n=this._options.signal??this._input.signal;n?.aborted&&this.abortController.abort(n?.reason),n?.addEventListener("abort",()=>{this.abortController.abort(n.reason)}),this._options.signal=this.abortController.signal}if(tQ&&(this._options.duplex="half"),this._options.json!==void 0&&(this._options.body=this._options.stringifyJson?.(this._options.json)??JSON.stringify(this._options.json),this._options.headers.set("content-type",this._options.headers.get("content-type")??"application/json")),this.request=new globalThis.Request(this._input,this._options),this._options.searchParams){let o="?"+(typeof this._options.searchParams=="string"?this._options.searchParams.replace(/^\?/,""):new URLSearchParams(this._options.searchParams).toString()),r=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,o);(nQ&&this._options.body instanceof globalThis.FormData||this._options.body instanceof URLSearchParams)&&!(this._options.headers&&this._options.headers["content-type"])&&this.request.headers.delete("content-type"),this.request=new globalThis.Request(new globalThis.Request(r,{...this.request}),this._options)}}_calculateRetryDelay(e){if(this._retryCount++,this._retryCount>this._options.retry.limit||e instanceof i7)throw e;if(e instanceof jf){if(!this._options.retry.statusCodes.includes(e.response.status))throw e;let n=e.response.headers.get("Retry-After")??e.response.headers.get("RateLimit-Reset")??e.response.headers.get("X-RateLimit-Reset")??e.response.headers.get("X-Rate-Limit-Reset");if(n&&this._options.retry.afterStatusCodes.includes(e.response.status)){let o=Number(n)*1e3;Number.isNaN(o)?o=Date.parse(n)-Date.now():o>=Date.parse("2024-01-01")&&(o-=Date.now());let r=this._options.retry.maxRetryAfter??o;return o<r?o:r}if(e.response.status===413)throw e}let s=this._options.retry.delay(this._retryCount);return Math.min(this._options.retry.backoffLimit,s)}_decorateResponse(e){return this._options.parseJson&&(e.json=async()=>this._options.parseJson(await e.text())),e}async _retry(e){try{return await e()}catch(s){let n=Math.min(this._calculateRetryDelay(s),T3);if(this._retryCount<1)throw s;await TD(n,{signal:this._options.signal});for(let o of this._options.hooks.beforeRetry)if(await o({request:this.request,options:this._options,error:s,retryCount:this._retryCount})===F3)return;return this._retry(e)}}async _fetch(){for(let n of this._options.hooks.beforeRequest){let o=await n(this.request,this._options);if(o instanceof Request){this.request=o;break}if(o instanceof Response)return o}let e=lQ(this.request,this._options),s=this.request;return this.request=s.clone(),this._options.timeout===!1?this._options.fetch(s,e):kD(s,e,this.abortController,this._options)}_stream(e,s){let n=Number(e.headers.get("content-length"))||0,o=0;return e.status===204?(s&&s({percent:1,totalBytes:n,transferredBytes:o},new Uint8Array),new globalThis.Response(null,{status:e.status,statusText:e.statusText,headers:e.headers})):new globalThis.Response(new globalThis.ReadableStream({async start(r){let a=e.body.getReader();s&&s({percent:0,transferredBytes:0,totalBytes:n},new Uint8Array);async function k(){let{done:x0,value:j}=await a.read();if(x0){r.close();return}if(s){o+=j.byteLength;let r0=n===0?0:o/n;s({percent:r0,transferredBytes:o,totalBytes:n},j)}r.enqueue(j),await k()}await k()}}),{status:e.status,statusText:e.statusText,headers:e.headers})}};var FD=i=>{let e=(s,n)=>Gf.create(s,Vf(i,n));for(let s of k3)e[s]=(n,o)=>Gf.create(n,Vf(i,o,{method:s}));return e.create=s=>FD(Vf(s)),e.extend=s=>(typeof s=="function"&&(s=s(i??{})),FD(Vf(i,s))),e.stop=F3,e},xw0=FD(),dQ=xw0;var LQ=Me(BQ(),1);function RD(i){let e=(0,LQ.default)("npm",{registry:"https://registry.npmjs.org/"}),s=e[`${i}:registry`]||e.config_registry||e.registry;return s.slice(-1)==="/"?s:`${s}/`}var AX=Me(RK(),1),CX=Me(EX(),1),lv=class extends Error{constructor(e){super(`Package \`${e}\` could not be found`),this.name="PackageNotFoundError"}},dv=class extends Error{constructor(e,s){super(`Version \`${s}\` for package \`${e}\` could not be found`),this.name="VersionNotFoundError"}};async function hv(i,e={}){let{version:s="latest"}=e,{omitDeprecated:n=!0}=e,o=i.split("/")[0],r=e.registryUrl??RD(o),a=new URL(encodeURIComponent(i).replace(/^%40/,"@"),r),k=(0,AX.default)(r.toString(),{recursive:!0}),x0={accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"};e.fullMetadata&&delete x0.accept,k&&(x0.authorization=`${k.type} ${k.token}`);let j;try{j=await dQ(a,{headers:x0,keepalive:!0}).json()}catch(s0){throw s0?.response?.status===404?new lv(i):s0}if(e.allVersions)return j;let r0=new dv(i,s);if(j["dist-tags"][s]){let{time:s0}=j;j=j.versions[j["dist-tags"][s]],j.time=s0}else if(s){let s0=!!j.versions[s];if(n&&!s0)for(let[u0,h0]of Object.entries(j.versions))h0.deprecated&&delete j.versions[u0];if(!s0){let u0=Object.keys(j.versions);if(s=CX.default.maxSatisfying(u0,s),!s)throw r0}let{time:l0}=j;if(j=j.versions[s],j.time=l0,!j)throw r0}return j}async function rl(i,e){let{version:s}=await hv(i.toLowerCase(),e);return s}var Cs={name:"@capgo/cli",version:"7.18.14",description:"A CLI to upload to capgo servers",author:"Martin martin@capgo.app",license:"Apache 2.0",homepage:"https://github.com/Cap-go/CLI#readme",repository:{type:"git",url:"git+https://github.com/Cap-go/CLI.git"},bugs:{url:"https://github.com/Cap-go/CLI/issues"},keywords:["appflow alternative","ionic","capacitor","auto update","live update","capgo","cli","upload","capgo-cli","sdk"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./sdk":{types:"./dist/src/sdk.d.ts",import:"./dist/src/sdk.js",require:"./dist/src/sdk.js"}},main:"dist/index.js",types:"dist/src/index.d.ts",bin:{capgo:"dist/index.js"},engines:{npm:">=8.0.0",node:">=20.0.0"},scripts:{build:"tsc && node build.mjs",dev:"NODE_ENV=development ncc build","no-debug":"node dist/index.js","dev-build":"SUPA_DB=development ncc build",pack:"pkg",types:"npx --yes supabase gen types typescript --project-id=xvwzpoazmxkqosrdewyv > src/types/supabase.types.ts",lint:'eslint "src/**/*.ts" --fix',"check-posix-paths":"node test/check-posix-paths.js","generate-docs":"node dist/index.js generate-docs README.md"},"//dependencies":{ky:"We temporarily fixed ky version until this issue is resolved: https://github.com/sindresorhus/ky/issues/689 otherwise nodejs upload fails on node 18/20"},devDependencies:{"@antfu/eslint-config":"^6.1.0","@bradenmacdonald/s3-lite-client":"npm:@jsr/bradenmacdonald__s3-lite-client@0.9.4","@capacitor/cli":"^7.4.4","@capgo/find-package-manager":"^0.0.18","@clack/prompts":"^0.11.0","@sauber/table":"npm:@jsr/sauber__table","@std/semver":"npm:@jsr/std__semver@1.0.6","@supabase/supabase-js":"^2.76.1","@tomasklaen/checksum":"^1.1.0","@types/adm-zip":"^0.5.7","@types/brotli":"^1.3.4","@types/node":"^24.9.1","@types/prettyjson":"^0.0.33","@types/semver":"^7.7.1","@types/tmp":"^0.2.6","@vercel/ncc":"^0.38.4","adm-zip":"^0.5.16",brotli:"^1.3.3","ci-info":"^4.3.1",commander:"^14.0.2",esbuild:"^0.25.11",eslint:"^9.38.0","git-format-staged":"3.1.1",husky:"^9.1.7","is-wsl":"^3.1.0",ky:"1.13.0","latest-version":"^9.0.0",open:"^10.1.2",pkg:"5.8.1",prettyjson:"^1.2.5",semver:"^7.7.3",tmp:"^0.2.5","tus-js-client":"^4.3.1",typescript:"^5.9.3"}};async function It(){let i=await rl("@capgo/cli").catch(()=>""),e=i?.split(".")[0];i!==Cs.version&&I0.warning(`\u{1F6A8} You are using @capgo/cli@${Cs.version} it's not the latest version.
344
344
  Please use @capgo/cli@${i}" or @capgo/cli@${e} to keep up to date with the latest features and bug fixes.`)}function rA0(i,e,s){if(!e.apikey)throw s||I0.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!i)throw s||I0.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(i.includes("--"))throw s||I0.error('The app id includes illegal symbols. You cannot use "--" in the app id'),new Error("App id includes illegal symbols")}async function iA0(i,e,s){if(await eQ(i,e))throw e==="io.ionic.starter"?(s||I0.error(`This appId ${e} cannot be used it's reserved, please change it in your capacitor config.`),new Error("Reserved appId, please change it in capacitor config")):(s||I0.error(`App ${e} already exist`),new Error(`App ${e} already exists`))}async function SX(i,e,s,n=!1){n||Ne("Adding"),await It(),e.apikey=e.apikey||Te();let o=await Qe(),r=mt(i,o?.config);rA0(r,e,n);let a=await Ke(e.apikey,e.supaHost,e.supaAnon),k=await Xe(a,e.apikey,["write","all"]);await iA0(a,r,n),s||(s=await E3(a,["admin","super_admin"]));let x0=s.gid,{name:j,icon:r0}=e;if(j=j||o.config?.appName||"Unknown",r0=r0||"resources/icon.png",!r0||!j)throw n||I0.error("Missing argument, you need to provide a appId and a name, or be in a capacitor project"),new Error("Missing app name or icon path");n||I0.info(`Adding ${r} to Capgo`);let s0=null,l0=null;r0&&(0,p7.existsSync)(r0)?(s0=(0,p7.readFileSync)(r0),l0=t7(r0)||"image/png",n||I0.warn(`Found app icon ${r0}`)):(0,p7.existsSync)(Jr)?(s0=(0,p7.readFileSync)(Jr),l0=t7(Jr)||"image/png",n||I0.warn(`Found app icon ${Jr}`)):n||I0.warn(`Cannot find app icon in any of the following locations: ${r0}, ${Jr}`);let u0="icon",h0="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(s0&&l0){let{error:_0}=await a.storage.from(`images/org/${x0}/${r}`).upload(u0,s0,{contentType:l0});if(_0)throw n||console.error(_0),n||I0.error(`Could not add app ${se(_0)}`),new Error(`Could not add app ${se(_0)}`);let{data:B0}=await a.storage.from(`images/org/${x0}/${r}`).getPublicUrl(u0);h0=B0?.publicUrl||h0}let{error:y0}=await a.from("apps").insert({icon_url:h0,owner_org:x0,user_id:k,name:j,app_id:r});if(y0)throw n||I0.error(`Could not add app ${se(y0)}`),new Error(`Could not add app ${se(y0)}`);let{error:v0}=await a.from("app_versions").insert([{owner_org:x0,deleted:!0,name:"unknown",app_id:r},{owner_org:x0,deleted:!0,name:"builtin",app_id:r}]);if(v0)throw n||I0.error(`Could not add app ${se(v0)}`),new Error(`Could not add app ${se(v0)}`);return n||(I0.success(`App ${r} added to Capgo. You can upload a bundle now`),qe("Done \u2705")),{appId:r,organizationUid:x0,userId:k,name:j,signedURL:h0}}async function OX(i,e,s=!1,n=!1){s||Ne("Deleting"),e.apikey=e.apikey||Te();let o=await Qe(),r=mt(i,o?.config);if(!e.apikey)throw s||I0.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!r)throw s||I0.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let a=await Ke(e.apikey,e.supaHost,e.supaAnon),k=await Xe(a,e.apikey,["write","all"]);await Zt(a,e.apikey,r,5,s);let{data:x0,error:j}=await a.from("apps").select("owner_org ( created_by, id )").eq("app_id",r).single(),r0=x0;if(!n&&!j&&(r0?.owner_org.created_by??"")!==k){if(s)throw new Error("Cannot delete app: you are not the organization owner");{I0.warn("Deleting the app is not recomended for users that are not the organization owner"),I0.warn("You are invited as a super_admin but your are not the owner"),I0.warn("It's strongly recomended that you do not continue!");let y0=await m2({message:"Do you want to continue?",options:[{label:"Yes",value:"yes"},{label:"No",value:"no"}]});if(C6(y0)||y0==="no")throw I0.error("Canceled deleting the app, exiting"),new Error("App deletion cancelled")}}else j&&!s&&I0.warn(`Cannot get the app owner ${se(j)}`);let{error:s0}=await a.storage.from("images").remove([`org/${r0?.owner_org.id}/${r}/icon`]);s0&&!s&&I0.error("Could not delete app logo");let{error:l0}=await a.storage.from(`apps/${r}/${k}`).remove(["versions"]);l0&&!s&&I0.error("Could not delete app version");let{error:u0}=await a.from("apps").delete().eq("app_id",r);if(u0)throw s||I0.error("Could not delete app"),new Error(`Could not delete app: ${se(u0)}`);let h0=await zi(a,r);return await ut(e.apikey,{channel:"app",event:"App Deleted",icon:"\u{1F5D1}\uFE0F",user_id:h0,tags:{"app-id":r},notify:!1}).catch(()=>{}),s||(I0.success("App deleted in Capgo"),qe("Done \u2705")),!0}var eh=require("node:os"),TX=require("node:process");async function kX(i){let e={},s=Object.keys(i);return(await Promise.all(s.map(o=>rl(o).catch(()=>null)))).forEach((o,r)=>{o&&(e[s[r]]=o)}),e}async function nA0(){let i=await pi(),e={"@capgo/cli":Cs.version};for(let[s,n]of i)(s.startsWith("@capgo/")||s.startsWith("@capawesome/")||s.startsWith("capacitor"))&&(e[s]=n);return e}async function FX(i,e=!1){e||I0.warn(" \u{1F48A} Capgo Doctor \u{1F48A}");let s=await Qe(),n=vs("",i.packageJson),o=s?.config?.plugins?.CapacitorUpdater?.version||n,r=s?.config?.appName||"",a=mt("",s?.config),k=s?.config?.webDir||"";e||(I0.info(` App Name: ${r}`),I0.info(` App ID: ${a}`),I0.info(` App Version: ${o}`),I0.info(` Web Dir: ${k}`),I0.info(` OS: ${(0,eh.platform)()} ${(0,eh.version)()}`),I0.info(` Node: ${TX.version}`),I0.info(" Installed Dependencies:"));let x0=await nA0();if(Object.keys(x0).length===0)throw e||I0.warning("\x1B[31m%s\x1B[0m \u{1F6A8} No dependencies found"),new Error("No dependencies found");if(!e)for(let r0 of Object.keys(x0))I0.info(` ${r0}: ${x0[r0]}`);let j={};if(e)j=await kX(x0);else{let r0=P6();r0.start("Running: Loading latest dependencies"),j=await kX(x0),r0.stop("Latest Dependencies:");for(let s0 of Object.keys(j))I0.info(` ${s0}: ${j[s0]}`)}if(JSON.stringify(x0)!==JSON.stringify(j))throw e||I0.warn("\x1B[31m\u{1F6A8} Some dependencies are not up to date\x1B[0m"),new Error("Some dependencies are not up to date");return e||I0.success("\x1B[32m\u2705 All dependencies are up to date\x1B[0m"),{appName:r,appId:a,appVersion:o,webDir:k,installedDependencies:x0,latestDependencies:j}}function sA0(i){let e=new V6;e.headers=["Name","id","Created"],e.rows=[];for(let s of i.toReversed())e.rows.push([s.name??"",s.app_id,r7(s.created_at)]);I0.success("Apps"),I0.success(e.toString())}async function aA0(i,e){let{data:s,error:n}=await i.from("apps").select().order("created_at",{ascending:!1});if(n)throw e||I0.error("Apps not found"),new Error("Apps not found");return s??[]}async function IX(i,e=!1){e||Ne("List apps in Capgo"),await It(),i.apikey=i.apikey||Te();let s=await Ke(i.apikey,i.supaHost,i.supaAnon);await Xe(s,i.apikey,["write","all","read","upload"]),e||I0.info("Getting active bundle in Capgo");let n=await aA0(s,e);if(!n.length)throw e||I0.error("No apps found"),new Error("No apps found");return e||(I0.info(`Active app in Capgo: ${n.length}`),sA0(n),qe("Done \u2705")),n}var PX=require("node:crypto"),b7=require("node:fs");async function _X(i,e,s=!1){s||Ne("Set app"),e.apikey=e.apikey||Te();let n=await Qe();if(i=mt(i,n?.config),!e.apikey)throw s||I0.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!i)throw s||I0.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let o=await Ke(e.apikey,e.supaHost,e.supaAnon),a=(await E3(o,["admin","super_admin"])).gid,k=await Xe(o,e.apikey,["write","all"]);await Zt(o,e.apikey,i,4,s);let{name:x0,icon:j,retention:r0}=e;if(r0&&Number.isNaN(Number(r0)))throw s||I0.error("retention value must be a number"),new Error("Retention value must be a number");if(r0&&r0<0)throw s||I0.error("retention value cannot be less than 0"),new Error("Retention value cannot be less than 0");if(r0&&r0>=63113904)throw s||I0.error("retention value cannot be greater than 63113904 seconds (2 years)"),new Error("Retention value cannot be greater than 63113904 seconds (2 years)");let s0,l0,u0=`icon_${(0,PX.randomUUID)()}`,h0="https://xvwzpoazmxkqosrdewyv.supabase.co/storage/v1/object/public/images/capgo.png";if(j&&(0,b7.existsSync)(j)?(s0=(0,b7.readFileSync)(j),l0=t7(j)||"image/png",s||I0.warn(`Found app icon ${j}`)):(0,b7.existsSync)(Jr)?(s0=(0,b7.readFileSync)(Jr),l0=t7(Jr)||"image/png",s||I0.warn(`Found app icon ${Jr}`)):s||I0.warn(`Cannot find app icon in any of the following locations: ${j}, ${Jr}`),s0&&l0){let{error:v0}=await o.storage.from(`images/org/${a}/${i}`).upload(u0,s0,{contentType:l0});if(v0)throw s||I0.error(`Could not set app ${se(v0)}`),new Error(`Could not set app: ${se(v0)}`);let{data:_0}=await o.storage.from(`images/org/${a}/${i}`).getPublicUrl(u0);h0=_0?.publicUrl||h0}let{error:y0}=await o.from("apps").update({icon_url:h0,name:x0,retention:r0?r0*24*60*60:void 0}).eq("app_id",i).eq("user_id",k);if(y0)throw s||I0.error(`Could not set app ${se(y0)}`),new Error(`Could not set app: ${se(y0)}`);return s||qe("Done \u2705"),!0}async function RX(i,e,s=!1){if(s||Ne("Set a specific setting in capacitor config"),e.bool&&e.string)throw s||I0.error("Bool and string CANNOT be set at the same time"),new Error("Bool and string cannot both be provided");if(!e.bool&&!e.string)throw s||I0.error("You MUST provide either bool or string as the value"),new Error("Either bool or string value is required");if(e.bool&&e.bool!=="true"&&e.bool!=="false")throw s||I0.error("Invalid bool"),new Error("Invalid bool value; expected true or false");try{let n=await Qe(),o=n.config,r=i.split(".");if(r.length===0)throw s||I0.error("Invalid path"),new Error("Invalid config path");for(let k of r.slice(0,-1))Object.prototype.hasOwnProperty.call(o,k)||(o[k]={}),o=o[k];let a=e.bool?e.bool==="true":e.string;o[r.at(-1)]=a,await Kc(n,!0),s||I0.success(`Set "${i}" to "${a}"`)}catch(n){throw s||I0.error(`Cannot set config in capacitor settings ${se(n)}`),new Error(`Cannot set capacitor config: ${se(n)}`)}s||qe("Done \u2705")}function th(i,e){if(isNaN(i)||isNaN(e))throw new Error("Cannot compare against non-numbers");return i===e?0:i<e?-1:1}function LX(i=[],e=[]){return i.length&&!e.length?-1:!i.length&&e.length?1:0}function bv(i=[],e=[]){let s=Math.max(i.length,e.length);for(let n=0;n<s;n++){let o=i[n],r=e[n];if(o===void 0&&r===void 0)return 0;if(r===void 0)return 1;if(o===void 0)return-1;if(typeof o=="string"&&typeof r=="number")return 1;if(typeof o=="number"&&typeof r=="string"||o<r)return-1;if(o>r)return 1}return 0}var g7="0|[1-9]\\d*",oA0="\\d*[a-zA-Z-][a-zA-Z0-9-]*",cA0=`(?<major>${g7})\\.(?<minor>${g7})\\.(?<patch>${g7})`,NX=`(?:${g7}|${oA0})`,MX=`(?:-(?<prerelease>${NX}(?:\\.${NX})*))`,BX="[0-9A-Za-z-]+",qX=`(?:\\+(?<buildmetadata>${BX}(?:\\.${BX})*))`,UX=`v?${cA0}${MX}?${qX}?`,HX=new RegExp(`^${UX}$`),jX="(?:<|>)?=?",uA0="x|X|\\*",pv=`${g7}|${uA0}`,VX=`[v=\\s]*(?<major>${pv})(?:\\.(?<minor>${pv})(?:\\.(?<patch>${pv})${MX}?${qX}?)?)?`,fA0=new RegExp(`^(?<operator>~>?|\\^|${jX})\\s*${VX}$`),lA0=new RegExp(`^(?<operator>${jX})\\s*(${UX})$|^$`);function gv(i){return typeof i=="number"&&!Number.isNaN(i)&&(!Number.isFinite(i)||0<=i&&i<=Number.MAX_SAFE_INTEGER)}var mv=256;var dA0=new RegExp(`^${g7}$`);function il(i){return i.split(".").filter(Boolean).map(e=>{if(dA0.test(e)){let s=Number(e);if(gv(s))return s}return e})}function nl(i){return i.split(".").filter(Boolean)}function sl(i,e){let s=Number(i);if(!gv(s))throw new TypeError(e);return s}function xi(i,e){return i===e?0:th(i.major,e.major)||th(i.minor,e.minor)||th(i.patch,e.patch)||LX(i.prerelease,e.prerelease)||bv(i.prerelease,e.prerelease)}function yv(i){return i.toFixed(0)}function m7(i){let e=yv(i.major),s=yv(i.minor),n=yv(i.patch),o=i.prerelease?.join(".")??"",r=i.build?.join(".")??"";return[[`${e}.${s}.${n}`,o].filter(x0=>x0).join("-"),r].filter(x0=>x0).join("+")}function hA0(i=[]){let e=[...i],s=e.length;for(;s>=0;){let n=e[s];if(typeof n=="number"){e[s]=n+1;break}s-=1}return s===-1&&e.push(0),e}function al(i=[],e){let s=hA0(i);if(!e)return s;let n=il(e);if(n.every(o=>typeof o=="string")){if(n.every((o,r)=>o===s[r])&&typeof s[n.length]=="number")return s;n=[...n,0]}return n}function zX(i,e,s={}){let n=s.build!==void 0?nl(s.build):i.build??[];switch(e){case"premajor":return{major:i.major+1,minor:0,patch:0,prerelease:al(i.prerelease,s.prerelease),build:n};case"preminor":return{major:i.major,minor:i.minor+1,patch:0,prerelease:al(i.prerelease,s.prerelease),build:n};case"prepatch":return{major:i.major,minor:i.minor,patch:i.patch+1,prerelease:al(i.prerelease,s.prerelease),build:n};case"prerelease":{let r=(i.prerelease??[]).length===0?i.patch+1:i.patch;return{major:i.major,minor:i.minor,patch:r,prerelease:al(i.prerelease,s.prerelease),build:n}}case"major":return{major:(i.prerelease??[]).length===0||i.minor!==0||i.patch!==0?i.major+1:i.major,minor:0,patch:0,prerelease:[],build:n};case"minor":{let r=(i.prerelease??[]).length===0||i.patch!==0?i.minor+1:i.minor;return{major:i.major,minor:r,patch:0,prerelease:[],build:n}}case"patch":{let r=(i.prerelease??[]).length===0?i.patch+1:i.patch;return{major:i.major,minor:i.minor,patch:r,prerelease:[],build:n}}case"pre":return{major:i.major,minor:i.minor,patch:i.patch,prerelease:al(i.prerelease,s.prerelease),build:n};default:throw new TypeError(`Cannot increment version: invalid argument ${e}`)}}var wv={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},WX={operator:void 0,...wv};function Dv(i,e){return xi(i,e)>0}function vv(i,e){return xi(i,e)<0}function ol(i){if(typeof i!="string")throw new TypeError(`Cannot parse version as version must be a string: received ${typeof i}`);if(i.length>mv)throw new TypeError(`Cannot parse version as version length is too long: length is ${i.length}, max length is ${mv}`);i=i.trim();let e=i.match(HX)?.groups;if(!e)throw new TypeError(`Cannot parse version: ${i}`);let s=sl(e.major,`Cannot parse version ${i}: invalid major version`),n=sl(e.minor,`Cannot parse version ${i}: invalid minor version`),o=sl(e.patch,`Cannot parse version ${i}: invalid patch version`),r=e.prerelease?il(e.prerelease):[],a=e.buildmetadata?nl(e.buildmetadata):[];return{major:s,minor:n,patch:o,prerelease:r,build:a}}async function pA0(i,e,s,n){for await(let o of i)n||I0.warn(`Removing ${o.name} created on ${r7(o.created_at)}`),await C3(e,s,o.name)}function bA0(i,e,s){let n=[];for(let o of i??[]){let r=ol(o.name);Dv(r,e)&&vv(r,s)&&n.push(o)}return n}async function KX(i,e,s=!1){s||Ne("Cleanup versions in Capgo"),await It(),e.apikey=e.apikey||Te();let{bundle:n,keep:o=4}=e,r=e.force||!1,a=e.ignoreChannel||!1,k=await Qe();if(i=mt(i,k?.config),!e.apikey)throw s||I0.error("Missing API key, you need to provide an API key to delete your app"),new Error("Missing API key");if(!i)throw s||I0.error("Missing argument, you need to provide a appid, or be in a capacitor project"),new Error("Missing appId");let x0=await Ke(e.apikey,e.supaHost,e.supaAnon);await Xe(x0,e.apikey,["write","all"]),await Zt(x0,e.apikey,i,3,s),s||I0.info("Querying all available versions in Capgo");let j=await S3(x0,i),r0=await xQ(x0,i);if(s||I0.info(`Total active versions in Capgo: ${j?.length??0}`),!j?.length)throw s||I0.error("No versions found, aborting cleanup"),new Error("No versions found");if(n){let u0=ol(n),h0=zX(u0,"major");s||I0.info(`Querying available versions in Capgo between ${m7(u0)} and ${m7(h0)}`),j=bA0(j,u0,h0),s||I0.info(`Active versions in Capgo between ${m7(u0)} and ${m7(h0)}: ${j?.length??0}`)}let s0=[],l0=0;for(let u0 of j){let h0=r0.find(y0=>y0===u0.id);l0<o||h0&&!a?(u0.keep=h0?"\u2705 (Linked to channel)":"\u2705",l0+=1):(u0.keep="\u274C",s0.push(u0))}if(!s0.length)return s||I0.warn("Nothing to be removed, aborting removal..."),{removed:0,kept:l0};if(s||$W(j),!r){if(s)throw new Error("Cleanup requires force=true in SDK mode to prevent accidental deletions");{let u0=await yi({message:"Do you want to continue removing the versions specified?"});if(C6(u0)||!u0)throw I0.warn("Not confirmed, aborting removal..."),new Error("Cleanup cancelled by user")}}return s||I0.success("You have confirmed removal, removing versions now"),await pA0(s0,x0,i,s),s||qe("Done \u2705"),{removed:s0.length,kept:l0}}async function YX(i,e,s=!1){s||Ne("Check compatibility");let n={...e,apikey:e.apikey||Te()},o=await Qe(),r=mt(i,o?.config),a=n.channel;if(!a)throw s||I0.error("Missing argument, you need to provide a channel"),new Error("Missing channel");if(!n.apikey)throw s||I0.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!r)throw s||I0.error("Missing argument, you need to provide an appId, or be in a capacitor project"),new Error("Missing appId");let k=await Ke(n.apikey,n.supaHost,n.supaAnon);await Xe(k,n.apikey,["write","all","read","upload"]),await Zt(k,n.apikey,r,1,s);let x0=await A3(k,r,a,n.packageJson,n.nodeModules);if(!s){let j=new V6;j.headers=["Package","Local version","Remote version","Compatible"],j.theme=V6.roundTheme,j.rows=[];let r0=n.text?"Yes":"\u2705",s0=n.text?"No":"\u274C";for(let l0 of x0.finalCompatibility){let{name:u0,localVersion:h0,remoteVersion:y0}=l0,v0=Lo(l0)?r0:s0;j.rows.push([u0,h0,y0,v0])}I0.success("Compatibility"),I0.success(j.toString())}return{finalCompatibility:x0.finalCompatibility}}var kn=require("node:fs");var xJ=Me(pu());var Ss=require("node:buffer"),T6=require("node:crypto"),XX="aes-128-cbc",On="base64",ih=T6.constants.RSA_PKCS1_PADDING;function nh(i){let e=(0,T6.randomBytes)(16),s=(0,T6.randomBytes)(16),n=e.toString(On),o=(0,T6.privateEncrypt)({key:i,padding:ih},s).toString(On);return{sessionKey:s,ivSessionKey:`${n}:${o}`}}function y7(i,e,s){let[n]=s.split(":"),o=Ss.Buffer.from(n,On),r=(0,T6.createCipheriv)(XX,e,o);return r.setAutoPadding(!0),Ss.Buffer.concat([r.update(i),r.final()])}function JX(i,e,s){let[n,o]=e.split(":"),r=(0,T6.publicDecrypt)({key:s,padding:ih},Ss.Buffer.from(o,On)),a=Ss.Buffer.from(n,On),k=(0,T6.createDecipheriv)(XX,r,a);return k.setAutoPadding(!0),Ss.Buffer.concat([k.update(i),k.final()])}function w7(i,e){return(0,T6.privateEncrypt)({key:e,padding:ih},Ss.Buffer.from(i,On)).toString(On)}function ZX(i="pem",e=2048){let{publicKey:s,privateKey:n}=(0,T6.generateKeyPairSync)("rsa",{modulusLength:e});return i==="pem"?{publicKey:s.export({type:"pkcs1",format:"pem"}),privateKey:n.export({type:"pkcs1",format:"pem"})}:{publicKey:s.export({type:"spki",format:"der"}).toString("base64"),privateKey:n.export({type:"pkcs1",format:"pem"}).toString("base64")}}function $X(i,e){return(0,T6.publicDecrypt)({key:e,padding:ih},Ss.Buffer.from(i,On)).toString(On)}function gA0(i,e){let s=i.key||An,n=e.config.plugins?.CapacitorUpdater?.publicKey;return(0,kn.existsSync)(s)?n=(0,kn.readFileSync)(s,"utf8"):!n&&i.keyData&&(n=i.keyData),{publicKey:n,fallbackKeyPath:s}}async function eJ(i,e,s,n=!1){n||Ne("Decrypt zip file");try{if(await It(),!(0,kn.existsSync)(i)){let s0=`Zip not found at the path ${i}`;throw n||I0.error(s0),new Error(s0)}let o=await Qe();if(!s.key&&!(0,kn.existsSync)(An)&&!o.config.plugins?.CapacitorUpdater?.privateKey){let s0=`Private Key not found at the path ${An} or in ${o.path}`;throw n||I0.error(s0),new Error(s0)}let{publicKey:r,fallbackKeyPath:a}=gA0(s,o);if(!r){let s0=`Cannot find public key ${a} or as keyData option or in ${o.path}`;throw n||I0.error(s0),new Error(s0)}let k=(0,kn.readFileSync)(i),x0=JX(k,e,s.keyData??r),j=`${i}_decrypted.zip`;(0,kn.writeFileSync)(j,x0),n||I0.info(`Decrypted zip file at ${j}`);let r0;if(s.checksum){let s0=await(0,xJ.checksum)(x0,"sha256"),l0=$X(s.checksum,s.keyData??r);if(r0=s0===l0,!r0){let u0=`Checksum does not match ${s0} !== ${l0}`;throw n||I0.error(u0),new Error(u0)}n||I0.info("Checksum matches")}return n||qe("\u2705 done"),{outputPath:j,checksumMatches:r0}}catch(o){throw n||I0.error(`Error decrypting zip file ${se(o)}`),o instanceof Error?o:new Error(String(o))}}async function tJ(i,e,s,n=!1){n||Ne("Delete bundle"),s.apikey=s.apikey||Te();let o=await Qe();if(e=mt(e,o?.config),!s.apikey)throw n||I0.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||I0.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");if(!i)throw n||I0.error("Missing argument, you need to provide a bundleId, or be in a capacitor project"),new Error("Missing bundleId");let r=await Ke(s.apikey,s.supaHost,s.supaAnon);return await Xe(r,s.apikey,["write","all"]),await Zt(r,s.apikey,e,3,n),n||(I0.info(`Deleting bundle ${e}@${i} from Capgo`),I0.info("Keep in mind that you will not be able to reuse this bundle version, it's gone forever")),await C3(r,e,i),n||(I0.success(`Bundle ${e}@${i} deleted in Capgo`),qe("Done")),!0}var Tn=require("node:fs");function cl(i){console.error(se(i))}async function rJ(i,e,s,n=!1){let{json:o}=s,r=!o&&!n;r&&(Ne("Encryption"),await It());try{let a=await Qe(),k=!!a.config.plugins?.CapacitorUpdater?.privateKey,x0=!!a.config.plugins?.CapacitorUpdater?.publicKey;if(k&&r&&I0.warning("There is still a privateKey in the config"),!(0,Tn.existsSync)(i)){let _0=`Zip not found at the path ${i}`;throw n||(o?cl({error:"zip_not_found"}):I0.error(`Error: ${_0}`)),new Error(_0)}if(!x0)throw n||(o?cl({error:"missing_public_key"}):I0.warning("Warning: Missing Public Key in config")),new Error("Missing public key in config");let j=s.key||Pr,r0=s.keyData||"";if(!(0,Tn.existsSync)(j)&&!r0)throw n||(o?cl({error:"missing_key"}):(I0.warning(`Cannot find a private key at ${j} or as a keyData option`),I0.error("Error: Missing key"))),new Error("Missing private key");if((0,Tn.existsSync)(j)&&(r0=(0,Tn.readFileSync)(j,"utf8")),r0&&!r0.startsWith("-----BEGIN RSA PRIVATE KEY-----"))throw n||(o?cl({error:"invalid_private_key"}):I0.error("The private key provided is not a valid RSA Private key")),new Error("Invalid private key format");let s0=(0,Tn.readFileSync)(i),{sessionKey:l0,ivSessionKey:u0}=nh(r0),h0=y7(s0,l0,u0),y0=w7(e,r0),v0=`${i}_encrypted.zip`;return(0,Tn.writeFileSync)(v0,h0),n||(o?console.log(JSON.stringify({checksum:y0,filename:v0,ivSessionKey:u0},null,2)):(I0.success(`Encoded Checksum: ${y0}`),I0.success(`ivSessionKey: ${u0}`),I0.success(`Encrypted zip saved at ${v0}`),qe("Done \u2705"))),{checksum:y0,filename:v0,ivSessionKey:u0}}catch(a){throw n||(s.json?cl(a):I0.error(`Error encrypting zip file ${se(a)}`)),a instanceof Error?a:new Error(String(a))}}var d$=require("node:crypto"),a2=require("node:fs"),fE=require("node:path/posix"),lE=require("node:process");var sh=class extends TransformStream{outChunkSize;constructor(e){let s=new Uint8Array(e),n=0;super({transform(o,r){let a=0;for(;a<o.length;){let k=e-n,x0=Math.min(k,o.length-a);s.set(o.subarray(a,a+x0),n),a+=x0,n+=x0,n===e&&(r.enqueue(s),s=new Uint8Array(e),n=0)}},flush(o){n>0&&o.enqueue(s.subarray(0,n))}}),this.outChunkSize=e}};function Os(i){return i=i.trim(),i=i.replace(/<!--[\s\S]*?-->/g,""),e();function e(){return{declaration:s(),root:n()}}function s(){if(!x0(/^<\?xml\s*/))return;let l0={attributes:{}};for(;!(j()||r0("?>"));){let u0=r();if(!u0)return l0;l0.attributes[u0.name]=u0.value}return x0(/\?>\s*/),l0}function n(){let s0=x0(/^<([\w-:.]+)\s*/);if(!s0)return;let l0={name:s0[1],attributes:{},children:[]};for(;!(j()||r0(">")||r0("?>")||r0("/>"));){let h0=r();if(!h0)return l0;l0.attributes[h0.name]=h0.value}if(x0(/^\s*\/>\s*/))return l0;x0(/\??>\s*/),l0.content=o();let u0;for(;u0=n();)l0.children.push(u0);return x0(/^<\/[\w-:.]+>\s*/),l0}function o(){let s0=x0(/^([^<]*)/);return s0?k(s0[1]):""}function r(){let s0=x0(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(s0)return{name:s0[1],value:k(a(s0[2]))}}function a(s0){return s0.replace(/^['"]|['"]$/g,"")}function k(s0){return s0.replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}function x0(s0){let l0=i.match(s0);if(l0)return i=i.slice(l0[0].length),l0}function j(){return i.length===0}function r0(s0){return i.startsWith(s0)}}var Qi=class extends Error{};var H6=class extends Qi{},ul=class extends Qi{},ah=class extends Qi{bucketName;constructor(e){super(`Invalid bucket name: ${e}`),this.bucketName=e}},Ki=class extends Qi{objectName;constructor(e){super(`Invalid object name: ${e}`),this.objectName=e}},ks=class extends Qi{constructor(){super("accessKey is required")}},D7=class extends Qi{constructor(){super("secretKey is required")}},fl=class extends Qi{constructor(){super("expirySeconds cannot be less than 1 second or more than 7 days")}},Fn=class extends Qi{statusCode;code;key;bucketName;resource;region;constructor(e,s,n,o={}){super(n),this.statusCode=e,this.code=s,this.key=o.key,this.bucketName=o.bucketName,this.resource=o.resource,this.region=o.region}};async function iJ(i){try{let s=Os(await i.text()).root;if(s?.name!=="Error")throw new Error("Invalid root, expected <Error>");let n=s.children.find(j=>j.name==="Code")?.content??"UnknownErrorCode",o=s.children.find(j=>j.name==="Message")?.content??"The error message could not be determined.",r=s.children.find(j=>j.name==="Key")?.content,a=s.children.find(j=>j.name==="BucketName")?.content,k=s.children.find(j=>j.name==="Resource")?.content,x0=s.children.find(j=>j.name==="Region")?.content;return new Fn(i.status,n,o,{key:r,bucketName:a,resource:k,region:x0})}catch{return new Fn(i.status,"UnrecognizedError",`Error: Unexpected response code ${i.status} ${i.statusText}. Unable to parse response as XML.`)}}function nJ(i){return typeof i!="number"||isNaN(i)?!1:i>=1&&i<=65535}function sJ(i){return typeof i!="string"||i.length<3||i.length>63||i.includes("..")||i.match(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)?!1:!!i.match(/^[a-z0-9][a-z0-9.-]+[a-z0-9]$/)}function Ts(i){return!(!mA0(i)||i.length===0)}function mA0(i){return!(typeof i!="string"||i.length>1024)}function ll(i){return Array.from(i).map(e=>e.toString(16).padStart(2,"0")).join("")}function Ko(i=""){let e={'"':"","&quot;":"","&#34;":"","&QUOT;":"","&#x00022":""};return i.replace(/^("|&quot;|&#34;)|("|&quot;|&#34;)$/g,s=>e[s])}function Av(i){return i.get("x-amz-version-id")??null}function Yo(i){let e=i.toISOString();return e.slice(0,4)+e.slice(5,7)+e.slice(8,13)+e.slice(14,16)+e.slice(17,19)+"Z"}function Cv(i){return Yo(i).slice(0,8)}function Sv(i,e){return`${Cv(e)}/${i}/s3/aws4_request`}async function oh(i){return i instanceof Uint8Array||(i=new TextEncoder().encode(i)),ll(new Uint8Array(await crypto.subtle.digest("SHA-256",i)))}var yA0=["x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5"],ch=class extends WritableStream{getResult;constructor({client:e,bucketName:s,objectName:n,partSize:o,metadata:r}){let a,k=1,x0,j=[],r0,s0=[];super({start(){},async write(l0,u0){let y0=k++;try{if(y0==1&&l0.length<o){let B0=await e.makeRequest({method:"PUT",headers:new Headers({...r,"Content-Length":String(l0.length)}),bucketName:s,objectName:n,payload:l0});a={etag:Ko(B0.headers.get("etag")??void 0),versionId:Av(B0.headers)};return}y0===1&&(x0=(await wA0({client:e,bucketName:s,objectName:n,metadata:r})).uploadId);let v0={"Content-Length":String(l0.length)};for(let B0 of yA0){let b0=r[B0];b0&&(v0[B0]=b0)}let _0=e.makeRequest({method:"PUT",query:{partNumber:y0.toString(),uploadId:x0},headers:new Headers(v0),bucketName:s,objectName:n,payload:l0}).then(B0=>{let b0=B0.headers.get("etag")??"";return b0&&(b0=b0.replace(/^"/,"").replace(/"$/,"")),j.push({part:y0,etag:b0}),B0});s0.push(_0.catch(B0=>{r0||(r0=B0)}))}catch(v0){throw v0}},async close(){if(!a)if(x0){if(await Promise.all(s0),r0)throw r0;j.sort((l0,u0)=>l0.part>u0.part?1:-1),a=await DA0({client:e,bucketName:s,objectName:n,uploadId:x0,etags:j})}else throw new Error("Stream was closed without uploading any data.")}}),this.getResult=()=>{if(a===void 0)throw new Error("Result is not ready. await the stream first.");return a}}};async function wA0(i){let e="POST",s=new Headers(i.metadata),r=await(await i.client.makeRequest({method:e,bucketName:i.bucketName,objectName:i.objectName,query:"uploads",headers:s,returnBody:!0})).text(),a=Os(r).root;if(!a||a.name!=="InitiateMultipartUploadResult")throw new Error(`Unexpected response: ${r}`);let k=a.children.find(x0=>x0.name==="UploadId")?.content;if(!k)throw new Error(`Unable to get UploadId from response: ${r}`);return{uploadId:k}}async function DA0({client:i,bucketName:e,objectName:s,uploadId:n,etags:o}){let r=`
345
345
  <CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
346
346
  ${o.map(s0=>` <Part><PartNumber>${s0.part}</PartNumber><ETag>${s0.etag}</ETag></Part>`).join(`
@@ -352,14 +352,14 @@ Please use @capgo/cli@${i}" or @capgo/cli@${e} to keep up to date with the lates
352
352
  `)}async function fJ(i,e,s){let n=await oh(i),o=Sv(s,e);return[dl,Yo(e),o,n].join(`
353
353
  `)}async function kv(i,e,s){let n=Cv(i),o=await Jo("AWS4"+s,n),r=await Jo(o,e),a=await Jo(r,"s3");return await Jo(a,"aws4_request")}function Tv(i,e,s){return`${i}/${Sv(e,s)}`}async function Jo(i,e){let s=new TextEncoder,n=await crypto.subtle.importKey("raw",i instanceof Uint8Array?i:s.encode(i),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]),o=await crypto.subtle.sign("HMAC",n,e instanceof Uint8Array?e:s.encode(e));return new Uint8Array(o)}async function lJ(i){if(!i.accessKey)throw new ks;if(!i.secretKey)throw new D7;if(i.expirySeconds<1||i.expirySeconds>604800)throw new fl;let e=new Date(i.date);e.setSeconds(e.getSeconds()+i.expirySeconds);let s=Tv(i.accessKey,i.region,i.date),n=Yo(i.date),o={"X-Amz-Algorithm":dl,"X-Amz-Credential":s,"X-Amz-Date":n,key:i.objectKey,...i.fields},r=[{bucket:i.bucket},{key:i.objectKey},{"X-Amz-Algorithm":dl},{"X-Amz-Credential":s},{"X-Amz-Date":n}];i.conditions&&r.push(...i.conditions);for(let[u0,h0]of Object.entries(i.fields||{}))["key","X-Amz-Algorithm","X-Amz-Credential","X-Amz-Date"].includes(u0)||r.push({[u0]:h0});let a={expiration:e.toISOString(),conditions:r},k=new TextEncoder().encode(JSON.stringify(a)),x0=btoa(String.fromCharCode(...k));o.policy=x0;let j=x0,r0=await kv(i.date,i.region,i.secretKey),s0=ll(await Jo(r0,j)).toLowerCase();return o["X-Amz-Signature"]=s0,{url:`${i.protocol}//${i.host}/${i.bucket}`,fields:o}}var EA0=["Content-Type","Cache-Control","Content-Disposition","Content-Encoding","Content-Language","Expires","x-amz-checksum-sha256","x-amz-grant-full-control","x-amz-grant-read","x-amz-grant-read-acp","x-amz-grant-write-acp","x-amz-server-side-encryption","x-amz-storage-class","x-amz-website-redirect-location","x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key","x-amz-server-side-encryption-customer-key-MD5","x-amz-server-side-encryption-aws-kms-key-id","x-amz-server-side-encryption-context","x-amz-server-side-encryption-bucket-key-enabled","x-amz-request-payer","x-amz-tagging","x-amz-object-lock-mode","x-amz-object-lock-retain-until-date","x-amz-object-lock-legal-hold","x-amz-expected-bucket-owner"],AA0=5*1024*1024,CA0=5*1024*1024*1024,Fv=5*1024*1024*1024*1024,hl=class{host;port;protocol;accessKey;#n;sessionToken;defaultBucket;region;userAgent="s3-lite-client";pathStyle;pathPrefix;constructor({endPoint:e,useSSL:s,port:n,pathPrefix:o,...r}){if(/^https?:\/\//i.test(e)){if(s!==void 0||n!==void 0||o!==void 0)throw new H6("useSSL/port/pathPrefix cannot be specified if endPoint is a URL.");try{let k=new URL(e);e=k.hostname,s=k.protocol==="https:",n=k.port?parseInt(k.port,10):s?443:80,k.pathname&&k.pathname!=="/"&&(o=k.pathname.endsWith("/")?k.pathname.slice(0,-1):k.pathname)}catch{throw new ul(`Invalid endPoint URL: ${e}`)}}if(typeof e!="string"||e.length===0)throw new ul(`Invalid endPoint: ${e}`);if(s===void 0&&(s=!0),n!==void 0&&!nJ(n))throw new H6(`Invalid port: ${n}`);if(r.accessKey&&!r.secretKey)throw new H6("If specifying access key, secret key must also be provided.");if(r.accessKey&&r.accessKey.startsWith("ASIA")&&!r.sessionToken)throw new H6("If specifying temporary access key, session token must also be provided.");let a=s?443:80;if(this.port=n??a,this.host=e.toLowerCase()+(this.port!==a?`:${this.port}`:""),this.protocol=s?"https:":"http:",this.accessKey=r.accessKey,this.#n=r.secretKey??"",this.sessionToken=r.sessionToken,this.pathStyle=r.pathStyle??!0,this.pathPrefix=o??"",this.defaultBucket=r.bucket,this.region=r.region,this.pathPrefix){if(!this.pathStyle)throw new H6("pathPrefix is incompatible with pathStyle=false");if(!this.pathPrefix.startsWith("/"))throw new H6("pathPrefix should start with /");if(this.pathPrefix.endsWith("/"))throw new H6("pathPrefix should not end with /")}}getBucketName(e){let s=e?.bucketName??this.defaultBucket;if(s===void 0||!sJ(s))throw new ah(s??"");return s}buildRequestOptions(e){let s=this.getBucketName(e),n=this.pathStyle?this.host:`${s}.${this.host}`,o=e.headers??new Headers;o.set("host",n);let r=typeof e.query=="object"?new URLSearchParams(e.query).toString().replace("+","%20"):e.query,a=this.pathStyle?`${this.pathPrefix}/${s}/${e.objectName}`:`/${e.objectName}`,k=r?`?${r}`:"",x0=a+k,j=a.split("/").map(r0=>encodeURIComponent(r0)).join("/")+k;return{headers:o,host:n,path:x0,encodedPath:j}}async makeRequest({method:e,payload:s,...n}){let o=new Date,{headers:r,host:a,path:k,encodedPath:x0}=this.buildRequestOptions(n),j=n.statusCode??200;if(e==="POST"||e==="PUT"||e==="DELETE")s===void 0?s=new Uint8Array:typeof s=="string"&&(s=new TextEncoder().encode(s)),r.set("Content-Length",String(s.length));else if(s)throw new Error(`Unexpected payload on ${e} request.`);let r0=await oh(s??new Uint8Array);r.set("x-amz-date",Yo(o)),r.set("x-amz-content-sha256",r0),this.accessKey&&(this.sessionToken&&r.set("x-amz-security-token",this.sessionToken),r.set("authorization",await aJ({headers:r,method:e,path:k,accessKey:this.accessKey,secretKey:this.#n,region:this.region,date:o})));let s0=`${this.protocol}//${a}${x0}`,l0=await fetch(s0,{method:e,headers:r,body:s});if(l0.status!==j)throw l0.status>=400?await iJ(l0):l0.status===301?new Fn(l0.status,"UnexpectedRedirect",'The server unexpectedly returned a redirect response. With AWS S3, this usually means you need to use a region-specific endpoint like "s3.us-west-2.amazonaws.com" instead of "s3.amazonaws.com"'):new Fn(l0.status,"UnexpectedStatusCode",`Unexpected response code from the server (expected ${j}, got ${l0.status} ${l0.statusText}).`);return n.returnBody||await l0.body?.getReader().read(),l0}async deleteObject(e,s={}){let n=this.getBucketName(s);if(!Ts(e))throw new Ki(e);let o=s.versionId?{versionId:s.versionId}:{},r=new Headers;s.governanceBypass&&r.set("X-Amz-Bypass-Governance-Retention","true"),await this.makeRequest({method:"DELETE",bucketName:n,objectName:e,headers:r,query:o,statusCode:204})}async exists(e,s){try{return await this.statObject(e,s),!0}catch(n){if(n instanceof Fn&&n.statusCode===404)return!1;throw n}}getObject(e,s){return this.getPartialObject(e,{...s,offset:0,length:0})}async getPartialObject(e,{offset:s,length:n,...o}){let r=this.getBucketName(o);if(!Ts(e))throw new Ki(e);let a=new Headers(Object.entries(o.metadata??{})),k=200;if(s||n){let j="";s?j=`bytes=${+s}-`:(j="bytes=0-",s=0),n&&(j+=`${+n+s-1}`),a.set("Range",j),k=206}let x0={...o.responseParams,...o.versionId?{versionId:o.versionId}:{}};return await this.makeRequest({method:"GET",bucketName:r,objectName:e,headers:a,query:x0,statusCode:k,returnBody:!0})}getPresignedUrl(e,s,n={}){if(!this.accessKey)throw new ks;if(!Ts(s))throw new Ki(s);let{headers:o,path:r}=this.buildRequestOptions({objectName:s,bucketName:n.bucketName,query:n.parameters}),a=n.requestDate??new Date,k=n.expirySeconds??1440*60*7;return oJ({protocol:this.protocol,headers:o,method:e,path:r,accessKey:this.accessKey,secretKey:this.#n,sessionToken:this.sessionToken,region:this.region,date:a,expirySeconds:k})}presignedGetObject(e,s={}){let{versionId:n,responseParams:o,...r}=s,a={...o,...n?{versionId:n}:{}};return this.getPresignedUrl("GET",e,{parameters:a,...r})}async*listObjects(e={}){for await(let s of this.listObjectsGrouped({...e,delimiter:""}))if(s.type==="Object")yield s;else throw new Error(`Unexpected result from listObjectsGrouped(): ${s}`)}async*listObjectsGrouped(e){let s=this.getBucketName(e),n="",o=e.pageSize??1e3;if(o<1||o>1e3)throw new H6("pageSize must be between 1 and 1,000.");let r=0;for(;;){let a=e.maxResults?Math.min(o,e.maxResults-r):o;if(a===0)return;let x0=await(await this.makeRequest({method:"GET",bucketName:s,objectName:"",query:{"list-type":"2",prefix:e.prefix??"",delimiter:e.delimiter,"max-keys":String(a),...n?{"continuation-token":n}:{}},returnBody:!0})).text(),j=Os(x0).root;if(!j||j.name!=="ListBucketResult")throw new Error(`Unexpected response: ${x0}`);let r0=j.children.filter(u0=>u0.name==="CommonPrefixes").flatMap(u0=>u0.children),s0=[];for(let u0 of r0)s0.push({type:"CommonPrefix",prefix:u0.content??""}),r++;for(let u0 of j.children.filter(h0=>h0.name==="Contents"))s0.push({type:"Object",key:u0.children.find(h0=>h0.name==="Key")?.content??"",etag:Ko(u0.children.find(h0=>h0.name==="ETag")?.content??""),size:parseInt(u0.children.find(h0=>h0.name==="Size")?.content??"",10),lastModified:new Date(u0.children.find(h0=>h0.name==="LastModified")?.content??"invalid")}),r++;s0.sort((u0,h0)=>{let y0=u0.type==="Object"?u0.key:u0.prefix,v0=h0.type==="Object"?h0.key:h0.prefix;return y0>v0?1:y0<v0?-1:0});for(let u0 of s0)yield u0;if(j.children.find(u0=>u0.name==="IsTruncated")?.content==="true"){let u0=j.children.find(h0=>h0.name==="NextContinuationToken")?.content;if(!u0)throw new Error("Unexpectedly missing continuation token, but server said there are more results.");n=u0}else return}}async putObject(e,s,n){let o=this.getBucketName(n);if(!Ts(e))throw new Ki(e);let r,a;if(typeof s=="string"){let r0=new TextEncoder().encode(s);typeof ReadableStream.from<"u"?a=ReadableStream.from([r0]):a=new ReadableStream({start(s0){s0.enqueue(r0),s0.close()}}),r=r0.length}else if(s instanceof Uint8Array)typeof ReadableStream.from<"u"?a=ReadableStream.from([s]):a=new ReadableStream({start(r0){r0.enqueue(s),r0.close()}}),r=s.byteLength;else if(s instanceof ReadableStream)a=s;else throw new H6("Invalid stream/data type provided.");if(n?.size!==void 0){if(r!==void 0&&n?.size!==r)throw new H6(`size was specified (${n.size}) but doesn't match auto-detected size (${r}).`);if(typeof n.size!="number"||n.size<0||isNaN(n.size))throw new H6(`invalid size specified: ${n.size}`);r=n.size}let k=n?.partSize??this.calculatePartSize(r);if(k<AA0)throw new H6("Part size should be greater than 5MB");if(k>CA0)throw new H6("Part size should be less than 6MB");let x0=new sh(k),j=new ch({client:this,bucketName:o,objectName:e,partSize:k,metadata:n?.metadata??{}});return await a.pipeThrough(x0).pipeTo(j),j.getResult()}calculatePartSize(e){if(e===void 0&&(e=Fv),e>Fv)throw new TypeError(`size should not be more than ${Fv}`);let s=64*1024*1024;for(;;){if(s*1e4>e)return s;s+=16*1024*1024}}async statObject(e,s){let n=this.getBucketName(s);if(!Ts(e))throw new Ki(e);let o={};s?.versionId&&(o.versionId=s.versionId);let r=await this.makeRequest({method:"HEAD",bucketName:n,objectName:e,query:o,headers:new Headers(s?.headers)}),a={};for(let k of EA0)r.headers.has(k)&&(a[k]=r.headers.get(k));return r.headers.forEach((k,x0)=>{x0.startsWith("x-amz-meta-")&&(a[x0]=r.headers.get(x0))}),{type:"Object",key:e,size:parseInt(r.headers.get("content-length")??"",10),metadata:a,lastModified:new Date(r.headers.get("Last-Modified")??"error: missing last modified"),versionId:r.headers.get("x-amz-version-id")||null,etag:Ko(r.headers.get("ETag")??"")}}async copyObject(e,s,n){let o=this.getBucketName(n),r=e.sourceBucketName??o;if(!Ts(s))throw new Ki(s);let a=`${r}/${e.sourceKey}`;e.sourceVersionId&&(a+=`?versionId=${e.sourceVersionId}`);let k=new Headers(n?.metadata);n?.metadata!==void 0&&k.set("x-amz-metadata-directive","REPLACE"),k.set("x-amz-copy-source",a);let x0=await this.makeRequest({method:"PUT",bucketName:o,objectName:s,headers:k,returnBody:!0}),j=await x0.text(),r0=Os(j).root;if(!r0||r0.name!=="CopyObjectResult")throw new Error(`Unexpected response: ${j}`);let s0=r0.children.find(u0=>u0.name==="ETag")?.content??"",l0=r0.children.find(u0=>u0.name==="LastModified")?.content;if(l0===void 0)throw new Error("Unable to find <LastModified>...</LastModified> from the server.");return{copySourceVersionId:x0.headers.get("x-amz-copy-source-version-id")||null,etag:Ko(s0),lastModified:new Date(l0),versionId:x0.headers.get("x-amz-version-id")||null}}async bucketExists(e){try{return await this.listObjects({bucketName:e}).next(),!0}catch(s){if(s instanceof Fn&&s.statusCode===404)return!1;throw s}}async makeBucket(e){await this.makeRequest({method:"PUT",bucketName:this.getBucketName({bucketName:e}),objectName:"",statusCode:200})}async removeBucket(e){await this.makeRequest({method:"DELETE",bucketName:this.getBucketName({bucketName:e}),objectName:"",statusCode:204})}presignedPostObject(e,s={}){if(!Ts(e))throw new Ki(e);let n=this.getBucketName(s);if(!n)throw new Error("Bucket name is required for presignedPost, but none was provided either to this method nor to the client constructor");let o=s.requestDate||new Date,r=s.expirySeconds??3600;return lJ({protocol:this.protocol,host:this.host,bucket:n,objectKey:e,accessKey:this.accessKey||"",secretKey:this.#n||"",region:this.region,date:o,expirySeconds:r,conditions:s.conditions,fields:s.fields})}};var uE=Me(pu());var dE=Me(Nf()),hE=Me(Zs());var Zo=require("node:fs"),uh=require("node:path");function SA0(i,e){return(0,Zo.readFileSync)(i,"utf8").includes(e)}function pl(i,e){let s=(0,Zo.readdirSync)(i);for(let n of s){let o=(0,uh.join)(i,n),r=(0,Zo.statSync)(o);if(r.isDirectory()){if(pl(o,e))return!0}else if(r.isFile()&&(0,uh.extname)(o)===".js"&&SA0(o,e))return!0}return!1}function fh(i){return(0,Zo.readdirSync)(i).indexOf("index.html")>-1}var Ch=require("node:buffer"),Pn=require("node:fs"),i$=require("node:os"),_n=require("node:path"),aE=require("node:process"),I7=require("node:stream/consumers"),oE=require("node:zlib");var n$=Me(YJ()),s$=Me(r$()),cE=Me(Nf()),a$=Me(Zs()),o$=Me(K2()),c$=Me(Hg());async function IS0(i,e){try{return(await fetch(`${i.hostFilesApi}/files/read/attachments/${encodeURIComponent(e)}`,{method:"HEAD"})).ok}catch{return!1}}var PS0=4096,u$=8192,Dl="7.0.37",_S0=Ch.Buffer.from([27,0,6]);async function RS0(i){let e=(0,_n.join)(_r((0,aE.cwd)()),hi),n=(await pi(void 0,i.packageJson||e)).get("@capgo/capacitor-updater"),o=(0,cE.default)(n);if(!n||!o)return{version:null,supportsBrotliV2:!1};let r=(0,a$.default)(o.version,Dl);return{version:o.version,supportsBrotliV2:r}}function NS0(i,e){if(!e)return!1;let s=e.split(",").map(n=>n.trim()).filter(n=>!!n);return s.length===0?!1:s$.isMatch(i,s)}async function BS0(i,e){let n=(0,Pn.statSync)(i).size;if(n===0)return _S0;let o=await(0,I7.buffer)((0,Pn.createReadStream)(i)),r=await(0,I7.buffer)((0,Pn.createReadStream)(i).pipe((0,oE.createBrotliCompress)({})));if(n<PS0||r.length>=n-10){let a=n$.compress(o,{mode:0,quality:0});if(a)return Ch.Buffer.from(a);let k=(0,_n.join)(_r((0,aE.cwd)()),hi),j=(await pi(void 0,e.packageJson||k)).get("@capgo/capacitor-updater"),r0=(0,cE.default)(j);if(!j||!r0)throw I0.warn("Cannot find @capgo/capacitor-updater in package.json, please provide the package.json path to the command with --package-json"),new Error("Updater version not found");if(!(0,o$.default)(r0,">=6.14.12 <7.0.0 || >=7.0.23"))throw I0.warn(`Brotli library failed for ${i}, falling back to zlib output or minimal stream, this require updater 6.14.12 for Capacitor 6 or 7.0.23 for Capacitor 7`),new Error("To use partial update, you need to upgrade @capgo/capacitor-updater to version >=6.14.12 <7.0.0 or >=7.0.23");return r.length>0&&r.length<n+10?r:Ch.Buffer.from([27,0,6,...o,3])}return r}async function LS0(i,e,s){let o=(0,Pn.statSync)(i).size,r=await(0,I7.buffer)((0,Pn.createReadStream)(i));if(o===0)return{buffer:r,useBrotli:!1};if(NS0(e,s.noBrotliPatterns))return I0.info(`Skipping brotli for excluded file: ${e}`),{buffer:r,useBrotli:!1};if(o<u$)return{buffer:r,useBrotli:!1};try{let a=await(0,I7.buffer)((0,Pn.createReadStream)(i).pipe((0,oE.createBrotliCompress)({})));return a.length>=o-10?(I0.info(`Brotli not effective for ${e} (${o} bytes), using original file`),{buffer:r,useBrotli:!1}):{buffer:a,useBrotli:!0}}catch(a){return I0.warn(`Brotli compression failed for ${i}: ${a}, using original file`),{buffer:r,useBrotli:!1}}}async function f$(i,e,s,n,o,r){let a=P6();a.start(o!=="v2"?"Generating the update manifest":"Generating the update manifest with v2 encryption");let k=await qW(i);if(o==="v2")for(let x0 of k)x0.hash=w7(x0.hash,r);return a.stop("Manifest generated successfully"),await ut(e,{channel:"partial-update",event:"Generate manifest",icon:"\u{1F4C2}",user_id:s,tags:{"app-id":n},notify:!1}),k}function MS0(i){return(0,i$.platform)()!=="win32"?i:_n.win32.normalize(i).split(_n.win32.sep).join(_n.posix.sep)}function qS0(i){let e=i.split("/").map(s=>encodeURIComponent(s)).join("/");return i.includes(" ")&&I0.warn(`File "${i}" contains spaces in its name.`),e}async function l$(i,e,s,n,o,r,a,k){let x0=P6();x0.start("Preparing partial update with TUS protocol");let j=performance.now(),r0=await Bo(),{version:s0,supportsBrotliV2:l0}=await RS0(k);if(l0)k.disableBrotli?I0.info("Brotli compression disabled by user request"):(x0.message(`Using .br extension for compatible files (updater ${s0} >= ${Dl})`),k.noBrotliPatterns&&I0.info(`Files matching patterns (${k.noBrotliPatterns}) will be excluded from brotli compression`),I0.info(`Files smaller than ${u$} bytes will be excluded from brotli compression (Brotli RFC minimum)`));else{if(k.disableBrotli&&I0.warn(`--disable-brotli option has no effect with updater version ${s0||"unknown"} (requires ${Dl}+)`),k.noBrotliPatterns)throw new Error(`--no-brotli-patterns option requires updater version ${Dl} or higher, but you have ${s0||"unknown"}`);I0.info(`Using legacy compression (updater ${s0||"unknown"} < ${Dl})`)}let u0=e.filter(_0=>_0.file.includes(" "));if(u0.length>0)throw new Error(`Files with spaces in their names (${u0.map(_0=>_0.file).join(", ")}). Please rename the files.`);let h0=0,y0=e.length,v0=0;try{let _0=e.map(async D0=>{let N0=(0,_n.join)(s,D0.file),q0=MS0(D0.file),R0,V0=!1;if(!l0)R0=await BS0(N0,k);else if(k.disableBrotli)R0=await(0,I7.buffer)((0,Pn.createReadStream)(N0)),V0=!1;else{let Gx=await LS0(N0,q0,k);R0=Gx.buffer,V0=Gx.useBrotli}let W0=R0;a&&(W0=y7(R0,a.sessionKey,a.ivSessionKey));let G0=q0;V0&&(G0=`${q0}.br`,v0++);let cx=qS0(G0),Dx=`orgs/${r}/apps/${n}/delta/${D0.hash}_${cx}`;return await IS0(r0,Dx)?(h0++,Promise.resolve({file_name:cx,s3_path:Dx,file_hash:D0.hash})):new Promise((Gx,O0)=>{new c$.Upload(W0,{endpoint:`${r0.hostFilesApi}/files/upload/attachments/`,chunkSize:k.tusChunkSize,metadata:{filename:Dx},headers:{Authorization:i},onError(Q0){I0.info(`Failed to upload ${q0}: ${Q0}`),O0(Q0)},onProgress(){let Q0=(h0/y0*100).toFixed(2);x0.message(`Uploading partial update: ${Q0}%`)},onSuccess(){h0++,Gx({file_name:cx,s3_path:Dx,file_hash:D0.hash})}}).start()})}),B0=await Promise.all(_0),E0=((performance.now()-j)/1e3).toFixed(2);return x0.stop(`Partial update uploaded successfully \u{1F4AA} in (${E0} seconds)`),v0>0&&I0.info(`${v0} of ${y0} files were compressed with brotli and use .br extension`),await ut(i,{channel:"app",event:`App Partial TUS done${v0>0?" with .br extension":""}`,icon:"\u23EB",user_id:r,tags:{"app-id":n},notify:!1}),await ut(i,{channel:"performance",event:"Partial upload performance",icon:"\u{1F684}",user_id:r,tags:{"app-id":n,time:E0},notify:!1}),B0}catch(_0){let b0=((performance.now()-j)/1e3).toFixed(2);return x0.stop(`Failed to upload Partial bundle (after ${b0} seconds)`),I0.info(`Error uploading partial update: ${_0}, This is not a critical error, the bundle has been uploaded without the partial files`),null}}function $t(i){throw I0.error(i),new Error(i)}async function US0(i,e){let s=vs("",e.packageJson),n=e.bundle||i?.plugins?.CapacitorUpdater?.version||s||`0.0.1-beta.${(0,d$.randomUUID)().split("-")[0]}`;return x7.test(n)||$t(`Your bundle name ${n}, is not valid it should follow semver convention : https://semver.org/`),n}function HS0(i){let e=i.apikey||Te();return e||$t("Missing API key, you need to provide an API key to upload your bundle"),e}function jS0(i,e,s){let n=mt(i,s),o=e.path||s?.webDir;return n||$t("Missing argument, you need to provide a appid or be in a capacitor project"),o||$t("Missing argument, you need to provide a path (--path), or be in a capacitor project"),(0,a2.existsSync)(o)||$t(`Path ${o} does not exist, build your app first, or provide a valid path`),{appid:n,path:o}}function VS0(i,e){let s=i.codeCheck;(typeof s>"u"||s)&&(pl(e,"notifyAppReady")||$t(`notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready
354
354
  If you are sure your app has this code, you can use the --no-code-check option`),fh(e)||$t(`index.html is missing in the root folder of ${e}`))}async function GS0(i,e,s,n,o,r){let a=s.ignoreMetadataCheck,k=s.autoMinUpdateVersion,x0=s.minUpdateVersion,{data:j,error:r0}=await i.from("channels").select("disable_auto_update, version ( min_update_version, native_packages )").eq("name",n).eq("app_id",o).single(),s0=!!j&&j.disable_auto_update==="version_number",l0,u0;if(!r0&&j&&j.version&&j.version.native_packages&&!a){let v0=P6();v0.start(`Checking bundle compatibility with channel ${n}`);let{finalCompatibility:_0,localDependencies:B0}=await A3(i,o,n,s.packageJson,s.nodeModules);if(u0=_0,l0=B0,u0.find(b0=>!Lo(b0)))v0.stop(`Bundle NOT compatible with ${n} channel`),I0.warn(`You can check compatibility with "${e.runner} @capgo/cli bundle compatibility"`),k&&(x0=r,I0.info(`Auto set min-update-version to ${x0}`));else if(k)try{let{min_update_version:b0}=j.version;(!b0||!x7.test(b0))&&$t("Invalid remote min update version, skipping auto setting compatibility"),x0=b0,v0.stop(`Auto set min-update-version to ${x0}`)}catch{$t(`Cannot auto set compatibility, invalid data ${j}`)}else v0.stop(`Bundle compatible with ${n} channel`)}else a||(I0.warn(`Channel ${n} is new or it's your first upload with compatibility check, it will be ignored this time`),l0=await DD(s.packageJson,s.nodeModules),k&&(x0=r,I0.info(`Auto set min-update-version to ${x0}`)));s0&&!x0&&!a&&$t("You need to provide a min-update-version to upload a bundle to this channel"),x0&&(x7.test(x0)||$t(`Your minimal version update ${x0}, is not valid it should follow semver convention : https://semver.org/`));let h0=l0?new Map(l0.filter(v0=>!!v0.native&&v0.native!==void 0).map(v0=>[v0.name,v0])):new Map;return{nativePackages:h0.size>0||!s.ignoreMetadataCheck?Array.from(h0,([v0,_0])=>({name:v0,version:_0.version})):void 0,minUpdateVersion:x0}}async function zS0(i,e,s){let{data:n,error:o}=await i.rpc("is_trial_org",{orgid:e}).single();(n&&n>0||o)&&(I0.warn(`WARNING !!
355
- Trial expires in ${n} days`),I0.warn(`Upgrade here: ${s.hostWeb}/dashboard/settings/plans?oid=${e}`))}async function WS0(i,e,s,n=!1){let{data:o,error:r}=await i.rpc("exist_app_versions",{appid:e,apikey:"",name_version:s}).single();if(o||r){if(n)return I0.warn(`Version ${s} already exists - exiting gracefully due to --silent-fail option`),qe("Bundle version already exists - exiting gracefully \u{1F389}"),!0;$t(`Version ${s} already exists ${se(r)}`)}return!1}async function QS0(i,e,s,n,o,r,a){let k,x0,j="",r0=null,s0="none",l0="",u0=e.keyV2,h0=e.key===!1;r0=await D3(i);let y0=P6();y0.start("Calculating checksum");let v0=(0,fE.join)(_r((0,lE.cwd)()),hi),B0=(await pi(void 0,e.packageJson||v0)).get("@capgo/capacitor-updater"),b0=!1,E0=(0,dE.default)(B0);if(B0?E0?b0=(0,hE.default)(E0.version,"7.0.0"):B0==="link:@capgo/capacitor-updater"&&(I0.warn("Using local @capgo/capacitor-updater. Assuming v7"),b0=!0):$t("Cannot find @capgo/capacitor-updater in ./package.json, provide the package.json path with --package-json it's required for v7 CLI to work"),(u0||e.keyDataV2||(0,a2.existsSync)(Pr))&&!h0||b0?j=await(0,uE.checksum)(r0,"sha256"):j=await(0,uE.checksum)(r0,"crc32"),y0.stop(`Checksum: ${j}`),h0)I0.info("Encryption ignored");else if((u0||(0,a2.existsSync)(Pr)||e.keyDataV2)&&!e.oldEncryption){let q0=typeof u0=="string"?u0:Pr,R0=e.keyDataV2||"";!R0&&!(0,a2.existsSync)(q0)&&$t(`Cannot find private key ${q0}`),await ut(s,{channel:"app",event:"App encryption v2",icon:"\u{1F511}",user_id:n,tags:{"app-id":o},notify:!1}),R0||(R0=(0,a2.readFileSync)(q0).toString()),I0.info("Encrypting your bundle with V2");let{sessionKey:V0,ivSessionKey:W0}=nh(R0),G0=y7(r0,V0,W0);j=w7(j,R0),k=W0,x0=V0,s0="v2",l0=R0,e.displayIvSession&&I0.info(`Your Iv Session key is ${k},
355
+ Trial expires in ${n} days`),I0.warn(`Upgrade here: ${s.hostWeb}/dashboard/settings/plans?oid=${e}`))}async function WS0(i,e,s,n=!1){let{data:o,error:r}=await i.rpc("exist_app_versions",{appid:e,apikey:"",name_version:s}).single();if(o||r){if(n)return I0.warn(`Version ${s} already exists - exiting gracefully due to --silent-fail option`),qe("Bundle version already exists - exiting gracefully \u{1F389}"),!0;$t(`Version ${s} already exists ${se(r)}`)}return!1}async function QS0(i,e,s,n,o,r,a){let k,x0,j="",r0=null,s0="none",l0="",u0=e.keyV2,h0=e.key===!1;r0=await D3(i);let y0=P6();y0.start("Calculating checksum");let v0=(0,fE.join)(_r((0,lE.cwd)()),hi),B0=(await pi(void 0,e.packageJson||v0)).get("@capgo/capacitor-updater"),b0=!1,E0=(0,dE.default)(B0);if(B0?E0?b0=(0,hE.default)(E0.version,"7.0.0"):B0==="link:@capgo/capacitor-updater"&&(I0.warn("Using local @capgo/capacitor-updater. Assuming v7"),b0=!0):$t("Cannot find @capgo/capacitor-updater in ./package.json, provide the package.json path with --package-json it's required for v7 CLI to work"),(u0||e.keyDataV2||(0,a2.existsSync)(Pr))&&!h0||b0?j=await(0,uE.checksum)(r0,"sha256"):j=await(0,uE.checksum)(r0,"crc32"),y0.stop(`Checksum: ${j}`),h0)I0.info("Encryption ignored");else if((u0||(0,a2.existsSync)(Pr)||e.keyDataV2)&&!e.oldEncryption){let q0=typeof u0=="string"?u0:Pr,R0=e.keyDataV2||"";!R0&&!(0,a2.existsSync)(q0)&&$t(`Cannot find private key ${q0}`),await ut(s,{channel:"app",event:"App encryption v2",icon:"\u{1F511}",user_id:n,tags:{"app-id":o},notify:!1},e.verbose),R0||(R0=(0,a2.readFileSync)(q0).toString()),I0.info("Encrypting your bundle with V2");let{sessionKey:V0,ivSessionKey:W0}=nh(R0),G0=y7(r0,V0,W0);j=w7(j,R0),k=W0,x0=V0,s0="v2",l0=R0,e.displayIvSession&&I0.info(`Your Iv Session key is ${k},
356
356
  keep it safe, you will need it to decrypt your bundle.
357
357
  It will be also visible in your dashboard
358
358
  `),r0=G0}let D0=Math.floor((r0?.byteLength??0)/1024/1024),N0=Math.floor(r/1024/1024);return r0?.byteLength>r?$t(`The bundle size is ${D0} Mb, this is greater than the maximum upload length ${N0} Mb, please reduce the size of your bundle`):r0?.byteLength>a?(I0.warn(`WARNING !!
359
359
  The bundle size is ${D0} Mb, this may take a while to download for users
360
360
  `),I0.info(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
361
- `),e.verbose&&(I0.info("[Verbose] Bundle size details:"),I0.info(` - Actual size: ${D0} MB (${r0?.byteLength} bytes)`),I0.info(` - Alert threshold: ${Math.floor(a/1024/1024)} MB`),I0.info(` - Maximum allowed: ${N0} MB`),I0.info("[Verbose] Sending 'App Too Large' event to analytics...")),await ut(s,{channel:"app-error",event:"App Too Large",icon:"\u{1F69B}",user_id:n,tags:{"app-id":o},notify:!1}),e.verbose&&I0.info("[Verbose] Event sent successfully")):e.verbose&&I0.info(`[Verbose] Bundle size OK: ${D0} MB (under ${Math.floor(a/1024/1024)} MB alert threshold)`),e.verbose&&I0.info("[Verbose] Bundle preparation complete, returning bundle data"),{zipped:r0,ivSessionKey:k,sessionKey:x0,checksum:j,encryptionMethod:s0,finalKeyData:l0}}async function KS0(i,e,s,n,o,r,a,k){let x0=P6();x0.start("Uploading Bundle");let j=performance.now(),r0=!1;if(a.verbose&&(I0.info("[Verbose] uploadBundleToCapgoCloud called:"),I0.info(` - Bundle size: ${Math.floor(r.byteLength/1024)} KB`),I0.info(` - App ID: ${s}`),I0.info(` - Bundle version: ${n}`),I0.info(` - Chunk size: ${Math.floor(k/1024/1024)} MB`)),a.dryUpload){x0.stop(`Dry run, bundle not uploaded
362
- Bundle uploaded \u{1F4AA} in 0 seconds`),a.verbose&&I0.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let u0=await Bo();if(a.verbose&&I0.info("[Verbose] Local config retrieved for upload"),a.multipart!==void 0&&a.multipart||a.tus!==void 0&&a.tus){a.multipart?I0.info("Uploading bundle with multipart is deprecated, we upload with TUS instead"):I0.info("Uploading bundle with TUS protocol"),a.verbose&&(I0.info("[Verbose] Starting TUS resumable upload..."),I0.info(` - Host: ${u0.hostWeb}`),I0.info(` - Chunk size: ${Math.floor(k/1024/1024)} MB`)),await UW(i,r,o,s,n,x0,u0,k),r0=!0,a.verbose&&I0.info("[Verbose] TUS upload completed, updating database with R2 path...");let h0=`orgs/${o}/apps/${s}/${n}.zip`,{error:y0}=await e.from("app_versions").update({r2_path:h0}).eq("name",n).eq("app_id",s);if(y0)return I0.error(`Cannot finish TUS upload ${se(y0)}`),a.verbose&&I0.info(`[Verbose] Database update failed: ${se(y0)}`),Promise.reject(new Error("Cannot finish TUS upload"));a.verbose&&I0.info(`[Verbose] Database updated with R2 path: ${h0}`)}else{a.verbose&&I0.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let h0=await LW(e,s,n);if(!h0)return I0.error("Cannot get upload url"),a.verbose&&I0.info("[Verbose] Failed to retrieve presigned upload URL from database"),Promise.reject(new Error("Cannot get upload url"));a.verbose&&(I0.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),I0.info(` - Timeout: ${a.timeout||yD}ms`),I0.info(" - Retry attempts: 5"),I0.info(" - Content-Type: application/zip")),await G2.put(h0,{timeout:a.timeout||yD,retry:5,body:r,headers:{"Content-Type":"application/zip"}}),a.verbose&&I0.info("[Verbose] HTTP PUT upload completed successfully")}}catch(u0){let y0=((performance.now()-j)/1e3).toFixed(2);if(x0.stop(`Failed to upload bundle ( after ${y0} seconds)`),a.verbose&&(I0.info(`[Verbose] Upload failed after ${y0} seconds`),I0.info(`[Verbose] Error type: ${u0 instanceof ai?"HTTPError":typeof u0}`)),u0 instanceof ai)try{let v0=await u0.response.text();if(a.verbose&&I0.info(`[Verbose] HTTP error response body: ${v0.substring(0,500)}`),v0.startsWith("<?xml")){let _0=v0.match(/<Message>(.*?)<\/Message>/s),B0=_0?_0[1]:"Unknown S3 error";I0.error(`S3 Upload Error: ${B0}`)}else{let _0=JSON.parse(v0);I0.error(`Response Error: ${_0.error||_0.status||_0.message}`)}}catch{I0.error(`Upload failed with status ${u0.response.status}: ${u0.message}`)}else a.verbose&&I0.info(`[Verbose] Non-HTTP error: ${se(u0)}`),a.tus?I0.error(`Cannot upload bundle please contact support if the issue persists ${se(u0)}`):I0.error(`Cannot upload bundle ( try again with --tus option) ${se(u0)}`);throw a.verbose&&I0.info("[Verbose] Cleaning up failed version from database..."),await HW(e,s,n),a.verbose&&I0.info("[Verbose] Failed version cleaned up"),u0 instanceof Error?u0:new Error(String(u0))}let l0=((performance.now()-j)/1e3).toFixed(2);x0.stop(`Bundle uploaded \u{1F4AA} in (${l0} seconds)`),a.verbose&&(I0.info("[Verbose] Upload successful:"),I0.info(` - Upload time: ${l0} seconds`),I0.info(` - Upload method: ${r0?"TUS (resumable)":"Standard HTTP PUT"}`),I0.info(` - Bundle size: ${Math.floor(r.byteLength/1024)} KB`),I0.info("[Verbose] Sending performance event...")),await ut(i,{channel:"performance",event:r0?"TUS upload zip performance":"Upload zip performance",icon:"\u{1F684}",user_id:o,tags:{"app-id":s,time:l0},notify:!1}),a.verbose&&I0.info("[Verbose] Performance event sent successfully")}async function YS0(i,e,s){let{data:n,error:o}=await i.from("channels").select("version ( id, name, deleted )").eq("app_id",e).eq("name",s);if(o){I0.error(`Cannot delete linked bundle on upload ${se(o)}`);return}if(n.length===0){I0.warn("No linked bundle found in the channel you are trying to upload to");return}let r=n[0].version;if(r.deleted){I0.warn("The linked bundle is already deleted");return}let{error:a}=await i.from("app_versions").update({deleted:!0}).eq("id",r.id);if(a){I0.error(`Cannot delete linked bundle on upload ${se(a)}`);return}I0.info("Linked bundle deleted")}async function XS0(i,e,s,n,o,r,a,k,x0,j){let{data:r0}=await i.rpc("get_app_versions",{apikey:e,name_version:n,appid:k}).single();r0||$t("Cannot get version id, cannot set channel");let{data:s0}=await i.rpc("is_allowed_capgkey",{apikey:e,keymode:["write","all"]}).single();if(s0){let{error:l0,data:u0}=await v3(i,{name:o,app_id:k,created_by:r,version:r0,owner_org:a,...j?{allow_device_self_set:!0}:{}});l0&&$t(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${se(l0)}`);let h0=`${x0.hostWeb}/app/p/${k}/channel/${u0.id}`;u0?.public?I0.info("Your update is now available in your public channel \u{1F389}"):u0?.id&&I0.info(`Link device to this bundle to try it: ${h0}`),s&&I0.info(`Bundle url: ${h0}`)}else I0.warn("The upload key is not allowed to set the version in the channel")}async function JS0(i,e,s){let{error:n,data:o}=await e.from("apps").select("default_upload_channel").eq("app_id",i).single();return n?(I0.warn("Cannot find default upload channel"),I0.info(`You can set it here: ${s}/app/p/${i}/settings`),null):o.default_upload_channel}async function h$(i,e,s=!0){s&&Ne(`Uploading with CLI version ${Cs.version}`);let n,o=Es();await It();let{s3Region:r,s3Apikey:a,s3Apisecret:k,s3BucketName:x0,s3Endpoint:j,s3Port:r0,s3SSL:s0}=e;e.verbose&&(I0.info("[Verbose] Starting upload process with options:"),I0.info(` - API key: ${e.apikey?"provided":"from saved key"}`),I0.info(` - Path: ${e.path||"from capacitor config"}`),I0.info(` - Channel: ${e.channel||"from default upload channel"}`),I0.info(` - Bundle: ${e.bundle||"auto-detected"}`),I0.info(` - External: ${e.external||"false"}`),I0.info(` - Encryption: ${e.keyV2||e.keyDataV2?"v2":e.key===!1?"disabled":"auto"}`),I0.info(` - Upload method: ${e.tus?"TUS":e.zip?"ZIP":"auto"}`),I0.info(` - Delta updates: ${e.delta||e.partial?"enabled":"disabled"}`));let l0=HS0(e);e.verbose&&I0.info("[Verbose] API key retrieved successfully");let u0=await Qe();e.verbose&&I0.info("[Verbose] Capacitor config loaded successfully");let h0=await FW();e.verbose&&(I0.info("[Verbose] Remote file config retrieved:"),I0.info(` - Max upload length: ${Math.floor(h0.maxUploadLength/1024/1024)} MB`),I0.info(` - Alert upload size: ${Math.floor(h0.alertUploadSize/1024/1024)} MB`),I0.info(` - TUS upload: ${h0.TUSUpload?"enabled":"disabled"}`),I0.info(` - TUS upload forced: ${h0.TUSUploadForced?"yes":"no"}`),I0.info(` - Partial upload: ${h0.partialUpload?"enabled":"disabled"}`),I0.info(` - Max chunk size: ${Math.floor(h0.maxChunkSize/1024/1024)} MB`));let{appid:y0,path:v0}=jS0(i,e,u0.config);e.verbose&&I0.info(`[Verbose] App ID: ${y0}, Build path: ${v0}`);let _0=await US0(u0.config,e);e.verbose&&I0.info(`[Verbose] Bundle version: ${_0}`);let B0=e.external?"external":"r2-direct",b0="none";e.autoSetBundle&&(await TW({version:_0}),e.verbose&&I0.info("[Verbose] Auto-set bundle version in capacitor.config.json")),VS0(e,v0),e.verbose&&I0.info("[Verbose] Code check passed (notifyAppReady found and index.html present)"),I0.info(`Upload ${y0}@${_0} started from path "${v0}" to Capgo cloud`);let E0=await Bo();e.verbose&&I0.info(`[Verbose] Local config loaded: host=${E0.hostWeb}`),e.supaHost&&e.supaAnon&&(I0.info("Using custom supabase instance from provided options"),E0.supaHost=e.supaHost,E0.supaKey=e.supaAnon,e.verbose&&I0.info(`[Verbose] Custom Supabase host: ${e.supaHost}`));let D0=await Ke(l0,e.supaHost,e.supaAnon);e.verbose&&I0.info("[Verbose] Supabase client created successfully");let N0=await Xe(D0,l0,["write","all","upload"]);e.verbose&&I0.info(`[Verbose] User verified successfully, user_id: ${N0}`);let q0=e.channel||await JS0(y0,D0,E0.hostWeb)||"dev";e.verbose&&I0.info(`[Verbose] Target channel: ${q0}`);let R0=await zi(D0,y0);e.verbose&&I0.info(`[Verbose] Organization ID: ${R0}`),await RW(D0,R0,Cs.version),e.verbose&&I0.info("[Verbose] Remote CLI messages checked"),await BW(D0,R0,l0,y0,!0),e.verbose&&I0.info("[Verbose] Plan validation passed"),await zS0(D0,R0,E0),e.verbose&&I0.info("[Verbose] Trial check completed"),e.verbose&&I0.info(`[Verbose] Checking compatibility with channel ${q0}...`);let{nativePackages:V0,minUpdateVersion:W0}=await GS0(D0,o,e,q0,y0,_0);e.verbose&&(I0.info("[Verbose] Compatibility check completed:"),I0.info(` - Native packages: ${V0?V0.length:0}`),I0.info(` - Min update version: ${W0||"none"}`)),e.verbose&&I0.info(`[Verbose] Checking if version ${_0} already exists...`);let G0=await WS0(D0,y0,_0,e.versionExistsOk);if(e.verbose&&I0.info(`[Verbose] Version exists check: ${G0?"yes (skipping)":"no (continuing)"}`),G0)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:_0,checksum:null,encryptionMethod:b0,storageProvider:B0};e.external&&!e.external.startsWith("https://")&&$t(`External link should should start with "https://" current is "${e.external}"`),e.deleteLinkedBundleOnUpload&&(I0.warn("Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the channel you are trying to upload to."),I0.warn("Please make sure you want to do this, if you are not sure, please do not use this option."));let cx={name:_0,app_id:y0,session_key:void 0,external_url:e.external,storage_provider:B0,min_update_version:W0,native_packages:V0,owner_org:R0,user_id:N0,checksum:void 0,link:e.link||null,comment:e.comment||null},Dx=null,Gx="";if(e.external)e.verbose&&I0.info(`[Verbose] Using external URL: ${e.external}`),await ut(l0,{channel:"app",event:"App external",icon:"\u{1F4E4}",user_id:R0,tags:{"app-id":y0},notify:!1}),cx.session_key=e.ivSessionKey,cx.checksum=e.encryptedChecksum,e.verbose&&(I0.info("[Verbose] External bundle configured:"),I0.info(` - URL: ${e.external}`),I0.info(` - IV Session Key: ${e.ivSessionKey?"provided":"none"}`),I0.info(` - Encrypted Checksum: ${e.encryptedChecksum?"provided":"none"}`));else{e.verbose&&I0.info(`[Verbose] Preparing bundle file from path: ${v0}`);let{zipped:ax,ivSessionKey:Fx,checksum:Cx,sessionKey:ie,encryptionMethod:Ix,finalKeyData:Qx}=await QS0(v0,e,l0,R0,y0,h0.maxUploadLength,h0.alertUploadSize);cx.session_key=Fx,cx.checksum=Cx,n=ie,Dx=ax,b0=Ix,Gx=Qx,e.verbose&&(I0.info("[Verbose] Bundle prepared:"),I0.info(` - Size: ${Math.floor((ax?.byteLength??0)/1024)} KB`),I0.info(` - Checksum: ${Cx}`),I0.info(` - Encryption: ${Ix}`),I0.info(` - IV Session Key: ${Fx?"present":"none"}`)),e.ignoreChecksumCheck||(e.verbose&&I0.info("[Verbose] Checking for duplicate checksum..."),await GW(D0,y0,q0,Cx),e.verbose&&I0.info("[Verbose] Checksum is unique"))}if(e.zip?(e.tus=!1,e.verbose&&I0.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")):!h0.TUSUpload||e.external?(e.tus=!1,e.verbose&&I0.info("[Verbose] Upload method: Standard (TUS not available or external URL)")):(e.tus=e.tus||h0.TUSUploadForced,e.verbose&&I0.info(`[Verbose] Upload method: ${e.tus?"TUS (resumable)":"Standard"}`)),!h0.partialUpload||e.external?(e.delta=!1,e.verbose&&e.external&&I0.info("[Verbose] Delta updates disabled (not available with external URLs)")):(e.delta=e.delta||e.partial||e.deltaOnly||e.partialOnly||h0.partialUploadForced,e.verbose&&I0.info(`[Verbose] Delta updates: ${e.delta?"enabled":"disabled"}`)),e.encryptPartial&&b0==="v1"&&$t("You cannot encrypt the partial update if you are not using the v2 encryption method"),e.delta&&b0==="v2"&&!e.encryptPartial){let ax=(0,fE.join)(_r((0,lE.cwd)()),hi),Cx=(await pi(void 0,e.packageJson||ax)).get("@capgo/capacitor-updater"),ie=(0,dE.default)(Cx);Cx&&ie&&(0,hE.default)(ie.version,"6.14.4")&&(I0.info(`Auto-enabling partial update encryption for updater version ${ie.version} (> 6.14.4)`),e.verbose&&I0.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4"),e.encryptPartial=!0)}e.verbose&&e.delta&&I0.info("[Verbose] Preparing delta/partial update manifest...");let O0=e.delta?await f$(v0,l0,R0,y0,e.encryptPartial?b0:"none",Gx):[];e.verbose&&e.delta&&I0.info(`[Verbose] Delta manifest prepared with ${O0.length} files`),e.verbose&&I0.info("[Verbose] Creating version record in database...");let{error:L0}=await wD(D0,cx);if(L0&&$t(`Cannot add bundle ${se(L0)}`),e.verbose&&I0.info("[Verbose] Version record created successfully"),e.tusChunkSize&&e.tusChunkSize>h0.maxChunkSize?(I0.error(`Chunk size ${e.tusChunkSize} is greater than the maximum chunk size ${h0.maxChunkSize}, using the maximum chunk size`),e.tusChunkSize=h0.maxChunkSize):e.tusChunkSize||(e.tusChunkSize=h0.maxChunkSize),e.verbose&&I0.info(`[Verbose] TUS chunk size: ${Math.floor(e.tusChunkSize/1024/1024)} MB`),Dx&&(x0||j||r||a||k||r0||s0)){(!x0||!j||!r||!a||!k||!r0)&&$t("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret"),I0.info("Uploading to S3"),e.verbose&&(I0.info("[Verbose] S3 configuration:"),I0.info(` - Endpoint: ${j}`),I0.info(` - Region: ${r}`),I0.info(` - Bucket: ${x0}`),I0.info(` - Port: ${r0}`),I0.info(` - SSL: ${s0?"enabled":"disabled"}`));let ax=s0?`https://${j}`:`http://${j}`,Fx=new hl({endPoint:j,region:r,port:r0,pathStyle:!0,bucket:x0,accessKey:a,secretKey:k}),Cx=`${y0}-${_0}`,ie=encodeURIComponent(Cx);e.verbose&&I0.info(`[Verbose] Uploading to S3 as: ${Cx}`),await Fx.putObject(Cx,Uint8Array.from(Dx)),cx.external_url=`${ax}/${ie}`,cx.storage_provider="external",e.verbose&&I0.info(`[Verbose] S3 upload complete, external URL: ${cx.external_url}`)}else if(Dx){!e.partialOnly&&!e.deltaOnly?(e.verbose&&I0.info("[Verbose] Starting full bundle upload to Capgo Cloud..."),await KS0(l0,D0,y0,_0,R0,Dx,e,e.tusChunkSize)):e.verbose&&I0.info("[Verbose] Skipping full bundle upload (delta-only mode)");let ax=null;try{e.dryUpload&&(e.delta=!1,e.verbose&&I0.info("[Verbose] Dry upload mode: skipping delta upload"));let Cx=cx.session_key&&e.encryptPartial&&n?{sessionKey:n,ivSessionKey:cx.session_key}:void 0;e.verbose&&e.delta&&(I0.info("[Verbose] Starting delta/partial file upload..."),I0.info(` - Manifest entries: ${O0.length}`),I0.info(` - Encryption: ${Cx?"enabled":"disabled"}`)),ax=e.delta?await l$(l0,O0,v0,y0,_0,R0,Cx,e):null,e.verbose&&ax&&I0.info(`[Verbose] Delta upload complete with ${ax.length} files`)}catch(Cx){I0.info(`Failed to upload partial files to capgo cloud. Error: ${se(Cx)}. This is not a critical error, the bundle has been uploaded without the partial files`),e.verbose&&I0.info(`[Verbose] Delta upload error details: ${se(Cx)}`)}cx.storage_provider="r2",cx.manifest=ax,e.verbose&&I0.info("[Verbose] Updating version record with storage provider and manifest...");let{error:Fx}=await wD(D0,cx);Fx&&$t(`Cannot update bundle ${se(Fx)}`),e.verbose&&I0.info("[Verbose] Version record updated successfully")}e.verbose&&I0.info("[Verbose] Checking app permissions...");let Q0=await Zt(D0,l0,y0,2);e.verbose&&(I0.info("[Verbose] Permissions:"),I0.info(` - Upload: ${e7(Q0,2)?"yes":"no"}`),I0.info(` - Write: ${e7(Q0,3)?"yes":"no"}`),I0.info(` - Admin: ${e7(Q0,4)?"yes":"no"}`)),e.deleteLinkedBundleOnUpload&&e7(Q0,3)?(e.verbose&&I0.info(`[Verbose] Deleting linked bundle in channel ${q0}...`),await YS0(D0,y0,q0)):e.deleteLinkedBundleOnUpload&&I0.warn("Cannot delete linked bundle on upload as a upload organization member"),e7(Q0,3)?(e.verbose&&I0.info(`[Verbose] Setting bundle ${_0} to channel ${q0}...`),await XS0(D0,l0,!!e.bundleUrl,_0,q0,N0,R0,y0,E0,e.selfAssign),e.verbose&&I0.info("[Verbose] Channel updated successfully")):I0.warn("Cannot set channel as a upload organization member"),e.verbose&&I0.info("[Verbose] Sending upload event..."),await ut(l0,{channel:"app",event:"App Uploaded",icon:"\u23EB",user_id:R0,tags:{"app-id":y0},notify:!1});let X0={success:!0,bundle:_0,checksum:cx.checksum??null,encryptionMethod:b0,sessionKey:n?n.toString("base64"):void 0,ivSessionKey:typeof cx.session_key=="string"?cx.session_key:void 0,storageProvider:cx.storage_provider};return e.verbose&&(I0.info("[Verbose] Upload completed successfully:"),I0.info(` - Bundle: ${X0.bundle}`),I0.info(` - Checksum: ${X0.checksum}`),I0.info(` - Encryption: ${X0.encryptionMethod}`),I0.info(` - Storage: ${X0.storageProvider}`)),s&&!X0.skipped&&qe("Time to share your update to the world \u{1F30D}"),X0}var p$=require("node:crypto"),Sh=require("node:fs"),b$=require("node:path"),g$=require("node:process");var m$=Me(pu()),y$=Me(Nf()),w$=Me(Zs());var ZS0=20;function $S0(i){console.log(JSON.stringify(i,null,2))}function vl(i){console.error(se(i))}async function D$(i,e,s=!1){let{json:n}=e,{bundle:o,path:r}=e,a=!n&&!s;try{a&&await It();let k=await Qe(),x0=mt(i,k?.config),j=(0,p$.randomUUID)().split("-")[0],r0=vs("",e.packageJson);if(o=o||r0||`0.0.1-beta.${j}`,a&&Ne(`Zipping ${x0}@${o}`),o&&!x7.test(o)){let q0=`Your bundle name ${o}, is not valid it should follow semver convention : https://semver.org/`;throw s||(n?vl({error:"invalid_semver"}):I0.error(q0)),new Error("Invalid bundle version format")}if(r=r||k?.config?.webDir,!x0||!o||!r){let q0="Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project";throw s||(n?vl({error:"missing_argument"}):I0.error(q0)),new Error(q0)}if(a&&I0.info(`Started from path "${r}"`),typeof e.codeCheck>"u"?!0:e.codeCheck){if(!pl(r,"notifyAppReady"))throw s||(n?vl({error:"notifyAppReady_not_in_source_code"}):I0.error("notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready")),new Error("notifyAppReady() is missing in build folder");if(!fh(r))throw s||(n?vl({error:"index_html_not_found"}):I0.error(`index.html is missing in the root folder of ${r}`)),new Error("index.html is missing in root folder")}let l0=await D3(r);a&&I0.info(`Zipped ${l0.byteLength} bytes`);let u0=a?P6():null;u0&&u0.start("Calculating checksum");let h0=(0,b$.join)(_r((0,g$.cwd)()),hi),v0=(await pi(void 0,e.packageJson||h0)).get("@capgo/capacitor-updater");if(!v0){let q0="Cannot find @capgo/capacitor-updater in ./package.json, provide the package.json path with --package-json it's required for v7 CLI to work";throw s||I0.warn(q0),new Error(q0)}let _0=!1,B0=(0,y$.default)(v0);B0?_0=(0,w$.default)(B0.version,"7.0.0"):v0==="link:@capgo/capacitor-updater"&&(s||I0.warn("Using local @capgo/capacitor-updater. Assuming v7"),_0=!0);let b0=await(0,m$.checksum)(l0,e.keyV2||(0,Sh.existsSync)(Pr)||_0?"sha256":"crc32");u0&&u0.stop(`Checksum: ${b0}`);let E0=Math.floor(l0.byteLength/1024/1024);E0>ZS0&&a&&(I0.warn(`WARNING !!
361
+ `),e.verbose&&(I0.info("[Verbose] Bundle size details:"),I0.info(` - Actual size: ${D0} MB (${r0?.byteLength} bytes)`),I0.info(` - Alert threshold: ${Math.floor(a/1024/1024)} MB`),I0.info(` - Maximum allowed: ${N0} MB`),I0.info("[Verbose] Sending 'App Too Large' event to analytics...")),await ut(s,{channel:"app-error",event:"App Too Large",icon:"\u{1F69B}",user_id:n,tags:{"app-id":o},notify:!1},e.verbose),e.verbose&&I0.info("[Verbose] Event sent successfully")):e.verbose&&I0.info(`[Verbose] Bundle size OK: ${D0} MB (under ${Math.floor(a/1024/1024)} MB alert threshold)`),e.verbose&&I0.info("[Verbose] Bundle preparation complete, returning bundle data"),{zipped:r0,ivSessionKey:k,sessionKey:x0,checksum:j,encryptionMethod:s0,finalKeyData:l0}}async function KS0(i,e,s,n,o,r,a,k){let x0=P6();x0.start("Uploading Bundle");let j=performance.now(),r0=!1;if(a.verbose&&(I0.info("[Verbose] uploadBundleToCapgoCloud called:"),I0.info(` - Bundle size: ${Math.floor(r.byteLength/1024)} KB`),I0.info(` - App ID: ${s}`),I0.info(` - Bundle version: ${n}`),I0.info(` - Chunk size: ${Math.floor(k/1024/1024)} MB`)),a.dryUpload){x0.stop(`Dry run, bundle not uploaded
362
+ Bundle uploaded \u{1F4AA} in 0 seconds`),a.verbose&&I0.info("[Verbose] Dry upload mode - skipping actual upload");return}try{let u0=await Bo();if(a.verbose&&I0.info("[Verbose] Local config retrieved for upload"),a.multipart!==void 0&&a.multipart||a.tus!==void 0&&a.tus){a.multipart?I0.info("Uploading bundle with multipart is deprecated, we upload with TUS instead"):I0.info("Uploading bundle with TUS protocol"),a.verbose&&(I0.info("[Verbose] Starting TUS resumable upload..."),I0.info(` - Host: ${u0.hostWeb}`),I0.info(` - Chunk size: ${Math.floor(k/1024/1024)} MB`)),await UW(i,r,o,s,n,x0,u0,k),r0=!0,a.verbose&&I0.info("[Verbose] TUS upload completed, updating database with R2 path...");let h0=`orgs/${o}/apps/${s}/${n}.zip`,{error:y0}=await e.from("app_versions").update({r2_path:h0}).eq("name",n).eq("app_id",s);if(y0)return I0.error(`Cannot finish TUS upload ${se(y0)}`),a.verbose&&I0.info(`[Verbose] Database update failed: ${se(y0)}`),Promise.reject(new Error("Cannot finish TUS upload"));a.verbose&&I0.info(`[Verbose] Database updated with R2 path: ${h0}`)}else{a.verbose&&I0.info("[Verbose] Using standard upload (non-TUS), getting presigned URL...");let h0=await LW(e,s,n);if(!h0)return I0.error("Cannot get upload url"),a.verbose&&I0.info("[Verbose] Failed to retrieve presigned upload URL from database"),Promise.reject(new Error("Cannot get upload url"));a.verbose&&(I0.info("[Verbose] Presigned URL obtained, uploading via HTTP PUT..."),I0.info(` - Timeout: ${a.timeout||yD}ms`),I0.info(" - Retry attempts: 5"),I0.info(" - Content-Type: application/zip")),await G2.put(h0,{timeout:a.timeout||yD,retry:5,body:r,headers:{"Content-Type":"application/zip"}}),a.verbose&&I0.info("[Verbose] HTTP PUT upload completed successfully")}}catch(u0){let y0=((performance.now()-j)/1e3).toFixed(2);if(x0.stop(`Failed to upload bundle ( after ${y0} seconds)`),a.verbose&&(I0.info(`[Verbose] Upload failed after ${y0} seconds`),I0.info(`[Verbose] Error type: ${u0 instanceof ai?"HTTPError":typeof u0}`)),u0 instanceof ai)try{let v0=await u0.response.text();if(a.verbose&&I0.info(`[Verbose] HTTP error response body: ${v0.substring(0,500)}`),v0.startsWith("<?xml")){let _0=v0.match(/<Message>(.*?)<\/Message>/s),B0=_0?_0[1]:"Unknown S3 error";I0.error(`S3 Upload Error: ${B0}`)}else{let _0=JSON.parse(v0);I0.error(`Response Error: ${_0.error||_0.status||_0.message}`)}}catch{I0.error(`Upload failed with status ${u0.response.status}: ${u0.message}`)}else a.verbose&&I0.info(`[Verbose] Non-HTTP error: ${se(u0)}`),a.tus?I0.error(`Cannot upload bundle please contact support if the issue persists ${se(u0)}`):I0.error(`Cannot upload bundle ( try again with --tus option) ${se(u0)}`);throw a.verbose&&I0.info("[Verbose] Cleaning up failed version from database..."),await HW(e,s,n),a.verbose&&I0.info("[Verbose] Failed version cleaned up"),u0 instanceof Error?u0:new Error(String(u0))}let l0=((performance.now()-j)/1e3).toFixed(2);x0.stop(`Bundle uploaded \u{1F4AA} in (${l0} seconds)`),a.verbose&&(I0.info("[Verbose] Upload successful:"),I0.info(` - Upload time: ${l0} seconds`),I0.info(` - Upload method: ${r0?"TUS (resumable)":"Standard HTTP PUT"}`),I0.info(` - Bundle size: ${Math.floor(r.byteLength/1024)} KB`),I0.info("[Verbose] Sending performance event...")),await ut(i,{channel:"performance",event:r0?"TUS upload zip performance":"Upload zip performance",icon:"\u{1F684}",user_id:o,tags:{"app-id":s,time:l0},notify:!1},a.verbose),a.verbose&&I0.info("[Verbose] Performance event sent successfully")}async function YS0(i,e,s){let{data:n,error:o}=await i.from("channels").select("version ( id, name, deleted )").eq("app_id",e).eq("name",s);if(o){I0.error(`Cannot delete linked bundle on upload ${se(o)}`);return}if(n.length===0){I0.warn("No linked bundle found in the channel you are trying to upload to");return}let r=n[0].version;if(r.deleted){I0.warn("The linked bundle is already deleted");return}let{error:a}=await i.from("app_versions").update({deleted:!0}).eq("id",r.id);if(a){I0.error(`Cannot delete linked bundle on upload ${se(a)}`);return}I0.info("Linked bundle deleted")}async function XS0(i,e,s,n,o,r,a,k,x0,j){let{data:r0}=await i.rpc("get_app_versions",{apikey:e,name_version:n,appid:k}).single();r0||$t("Cannot get version id, cannot set channel");let{data:s0}=await i.rpc("is_allowed_capgkey",{apikey:e,keymode:["write","all"]}).single();if(s0){let{error:l0,data:u0}=await v3(i,{name:o,app_id:k,created_by:r,version:r0,owner_org:a,...j?{allow_device_self_set:!0}:{}});l0&&$t(`Cannot set channel, the upload key is not allowed to do that, use the "all" for this. ${se(l0)}`);let h0=`${x0.hostWeb}/app/p/${k}/channel/${u0.id}`;u0?.public?I0.info("Your update is now available in your public channel \u{1F389}"):u0?.id&&I0.info(`Link device to this bundle to try it: ${h0}`),s&&I0.info(`Bundle url: ${h0}`)}else I0.warn("The upload key is not allowed to set the version in the channel")}async function JS0(i,e,s){let{error:n,data:o}=await e.from("apps").select("default_upload_channel").eq("app_id",i).single();return n?(I0.warn("Cannot find default upload channel"),I0.info(`You can set it here: ${s}/app/p/${i}/settings`),null):o.default_upload_channel}async function h$(i,e,s=!0){s&&Ne(`Uploading with CLI version ${Cs.version}`);let n,o=Es();await It();let{s3Region:r,s3Apikey:a,s3Apisecret:k,s3BucketName:x0,s3Endpoint:j,s3Port:r0,s3SSL:s0}=e;e.verbose&&(I0.info("[Verbose] Starting upload process with options:"),I0.info(` - API key: ${e.apikey?"provided":"from saved key"}`),I0.info(` - Path: ${e.path||"from capacitor config"}`),I0.info(` - Channel: ${e.channel||"from default upload channel"}`),I0.info(` - Bundle: ${e.bundle||"auto-detected"}`),I0.info(` - External: ${e.external||"false"}`),I0.info(` - Encryption: ${e.keyV2||e.keyDataV2?"v2":e.key===!1?"disabled":"auto"}`),I0.info(` - Upload method: ${e.tus?"TUS":e.zip?"ZIP":"auto"}`),I0.info(` - Delta updates: ${e.delta||e.partial?"enabled":"disabled"}`));let l0=HS0(e);e.verbose&&I0.info("[Verbose] API key retrieved successfully");let u0=await Qe();e.verbose&&I0.info("[Verbose] Capacitor config loaded successfully");let h0=await FW();e.verbose&&(I0.info("[Verbose] Remote file config retrieved:"),I0.info(` - Max upload length: ${Math.floor(h0.maxUploadLength/1024/1024)} MB`),I0.info(` - Alert upload size: ${Math.floor(h0.alertUploadSize/1024/1024)} MB`),I0.info(` - TUS upload: ${h0.TUSUpload?"enabled":"disabled"}`),I0.info(` - TUS upload forced: ${h0.TUSUploadForced?"yes":"no"}`),I0.info(` - Partial upload: ${h0.partialUpload?"enabled":"disabled"}`),I0.info(` - Max chunk size: ${Math.floor(h0.maxChunkSize/1024/1024)} MB`));let{appid:y0,path:v0}=jS0(i,e,u0.config);e.verbose&&I0.info(`[Verbose] App ID: ${y0}, Build path: ${v0}`);let _0=await US0(u0.config,e);e.verbose&&I0.info(`[Verbose] Bundle version: ${_0}`);let B0=e.external?"external":"r2-direct",b0="none";e.autoSetBundle&&(await TW({version:_0}),e.verbose&&I0.info("[Verbose] Auto-set bundle version in capacitor.config.json")),VS0(e,v0),e.verbose&&I0.info("[Verbose] Code check passed (notifyAppReady found and index.html present)"),I0.info(`Upload ${y0}@${_0} started from path "${v0}" to Capgo cloud`);let E0=await Bo();e.verbose&&I0.info(`[Verbose] Local config loaded: host=${E0.hostWeb}`),e.supaHost&&e.supaAnon&&(I0.info("Using custom supabase instance from provided options"),E0.supaHost=e.supaHost,E0.supaKey=e.supaAnon,e.verbose&&I0.info(`[Verbose] Custom Supabase host: ${e.supaHost}`));let D0=await Ke(l0,e.supaHost,e.supaAnon);e.verbose&&I0.info("[Verbose] Supabase client created successfully");let N0=await Xe(D0,l0,["write","all","upload"]);e.verbose&&I0.info(`[Verbose] User verified successfully, user_id: ${N0}`);let q0=e.channel||await JS0(y0,D0,E0.hostWeb)||"dev";e.verbose&&I0.info(`[Verbose] Target channel: ${q0}`);let R0=await zi(D0,y0);e.verbose&&I0.info(`[Verbose] Organization ID: ${R0}`),await RW(D0,R0,Cs.version),e.verbose&&I0.info("[Verbose] Remote CLI messages checked"),await BW(D0,R0,l0,y0,!0),e.verbose&&I0.info("[Verbose] Plan validation passed"),await zS0(D0,R0,E0),e.verbose&&I0.info("[Verbose] Trial check completed"),e.verbose&&I0.info(`[Verbose] Checking compatibility with channel ${q0}...`);let{nativePackages:V0,minUpdateVersion:W0}=await GS0(D0,o,e,q0,y0,_0);e.verbose&&(I0.info("[Verbose] Compatibility check completed:"),I0.info(` - Native packages: ${V0?V0.length:0}`),I0.info(` - Min update version: ${W0||"none"}`)),e.verbose&&I0.info(`[Verbose] Checking if version ${_0} already exists...`);let G0=await WS0(D0,y0,_0,e.versionExistsOk);if(e.verbose&&I0.info(`[Verbose] Version exists check: ${G0?"yes (skipping)":"no (continuing)"}`),G0)return{success:!0,skipped:!0,reason:"VERSION_EXISTS",bundle:_0,checksum:null,encryptionMethod:b0,storageProvider:B0};e.external&&!e.external.startsWith("https://")&&$t(`External link should should start with "https://" current is "${e.external}"`),e.deleteLinkedBundleOnUpload&&(I0.warn("Deleting linked bundle on upload is destructive, it will delete the currently linked bundle in the channel you are trying to upload to."),I0.warn("Please make sure you want to do this, if you are not sure, please do not use this option."));let cx={name:_0,app_id:y0,session_key:void 0,external_url:e.external,storage_provider:B0,min_update_version:W0,native_packages:V0,owner_org:R0,user_id:N0,checksum:void 0,link:e.link||null,comment:e.comment||null},Dx=null,Gx="";if(e.external)e.verbose&&I0.info(`[Verbose] Using external URL: ${e.external}`),await ut(l0,{channel:"app",event:"App external",icon:"\u{1F4E4}",user_id:R0,tags:{"app-id":y0},notify:!1},e.verbose),cx.session_key=e.ivSessionKey,cx.checksum=e.encryptedChecksum,e.verbose&&(I0.info("[Verbose] External bundle configured:"),I0.info(` - URL: ${e.external}`),I0.info(` - IV Session Key: ${e.ivSessionKey?"provided":"none"}`),I0.info(` - Encrypted Checksum: ${e.encryptedChecksum?"provided":"none"}`));else{e.verbose&&I0.info(`[Verbose] Preparing bundle file from path: ${v0}`);let{zipped:ax,ivSessionKey:Fx,checksum:Cx,sessionKey:ie,encryptionMethod:Ix,finalKeyData:Qx}=await QS0(v0,e,l0,R0,y0,h0.maxUploadLength,h0.alertUploadSize);cx.session_key=Fx,cx.checksum=Cx,n=ie,Dx=ax,b0=Ix,Gx=Qx,e.verbose&&(I0.info("[Verbose] Bundle prepared:"),I0.info(` - Size: ${Math.floor((ax?.byteLength??0)/1024)} KB`),I0.info(` - Checksum: ${Cx}`),I0.info(` - Encryption: ${Ix}`),I0.info(` - IV Session Key: ${Fx?"present":"none"}`)),e.ignoreChecksumCheck||(e.verbose&&I0.info("[Verbose] Checking for duplicate checksum..."),await GW(D0,y0,q0,Cx),e.verbose&&I0.info("[Verbose] Checksum is unique"))}if(e.zip?(e.tus=!1,e.verbose&&I0.info("[Verbose] Upload method: ZIP (explicitly set via --zip)")):!h0.TUSUpload||e.external?(e.tus=!1,e.verbose&&I0.info("[Verbose] Upload method: Standard (TUS not available or external URL)")):(e.tus=e.tus||h0.TUSUploadForced,e.verbose&&I0.info(`[Verbose] Upload method: ${e.tus?"TUS (resumable)":"Standard"}`)),!h0.partialUpload||e.external?(e.delta=!1,e.verbose&&e.external&&I0.info("[Verbose] Delta updates disabled (not available with external URLs)")):(e.delta=e.delta||e.partial||e.deltaOnly||e.partialOnly||h0.partialUploadForced,e.verbose&&I0.info(`[Verbose] Delta updates: ${e.delta?"enabled":"disabled"}`)),e.encryptPartial&&b0==="v1"&&$t("You cannot encrypt the partial update if you are not using the v2 encryption method"),e.delta&&b0==="v2"&&!e.encryptPartial){let ax=(0,fE.join)(_r((0,lE.cwd)()),hi),Cx=(await pi(void 0,e.packageJson||ax)).get("@capgo/capacitor-updater"),ie=(0,dE.default)(Cx);Cx&&ie&&(0,hE.default)(ie.version,"6.14.4")&&(I0.info(`Auto-enabling partial update encryption for updater version ${ie.version} (> 6.14.4)`),e.verbose&&I0.info("[Verbose] Partial encryption auto-enabled for updater >= 6.14.4"),e.encryptPartial=!0)}e.verbose&&e.delta&&I0.info("[Verbose] Preparing delta/partial update manifest...");let O0=e.delta?await f$(v0,l0,R0,y0,e.encryptPartial?b0:"none",Gx):[];e.verbose&&e.delta&&I0.info(`[Verbose] Delta manifest prepared with ${O0.length} files`),e.verbose&&I0.info("[Verbose] Creating version record in database...");let{error:L0}=await wD(D0,cx);if(L0&&$t(`Cannot add bundle ${se(L0)}`),e.verbose&&I0.info("[Verbose] Version record created successfully"),e.tusChunkSize&&e.tusChunkSize>h0.maxChunkSize?(I0.error(`Chunk size ${e.tusChunkSize} is greater than the maximum chunk size ${h0.maxChunkSize}, using the maximum chunk size`),e.tusChunkSize=h0.maxChunkSize):e.tusChunkSize||(e.tusChunkSize=h0.maxChunkSize),e.verbose&&I0.info(`[Verbose] TUS chunk size: ${Math.floor(e.tusChunkSize/1024/1024)} MB`),Dx&&(x0||j||r||a||k||r0||s0)){(!x0||!j||!r||!a||!k||!r0)&&$t("Missing argument, for S3 upload you need to provide a bucket name, endpoint, region, port, API key, and API secret"),I0.info("Uploading to S3"),e.verbose&&(I0.info("[Verbose] S3 configuration:"),I0.info(` - Endpoint: ${j}`),I0.info(` - Region: ${r}`),I0.info(` - Bucket: ${x0}`),I0.info(` - Port: ${r0}`),I0.info(` - SSL: ${s0?"enabled":"disabled"}`));let ax=s0?`https://${j}`:`http://${j}`,Fx=new hl({endPoint:j,region:r,port:r0,pathStyle:!0,bucket:x0,accessKey:a,secretKey:k}),Cx=`${y0}-${_0}`,ie=encodeURIComponent(Cx);e.verbose&&I0.info(`[Verbose] Uploading to S3 as: ${Cx}`),await Fx.putObject(Cx,Uint8Array.from(Dx)),cx.external_url=`${ax}/${ie}`,cx.storage_provider="external",e.verbose&&I0.info(`[Verbose] S3 upload complete, external URL: ${cx.external_url}`)}else if(Dx){!e.partialOnly&&!e.deltaOnly?(e.verbose&&I0.info("[Verbose] Starting full bundle upload to Capgo Cloud..."),await KS0(l0,D0,y0,_0,R0,Dx,e,e.tusChunkSize)):e.verbose&&I0.info("[Verbose] Skipping full bundle upload (delta-only mode)");let ax=null;try{e.dryUpload&&(e.delta=!1,e.verbose&&I0.info("[Verbose] Dry upload mode: skipping delta upload"));let Cx=cx.session_key&&e.encryptPartial&&n?{sessionKey:n,ivSessionKey:cx.session_key}:void 0;e.verbose&&e.delta&&(I0.info("[Verbose] Starting delta/partial file upload..."),I0.info(` - Manifest entries: ${O0.length}`),I0.info(` - Encryption: ${Cx?"enabled":"disabled"}`)),ax=e.delta?await l$(l0,O0,v0,y0,_0,R0,Cx,e):null,e.verbose&&ax&&I0.info(`[Verbose] Delta upload complete with ${ax.length} files`)}catch(Cx){I0.info(`Failed to upload partial files to capgo cloud. Error: ${se(Cx)}. This is not a critical error, the bundle has been uploaded without the partial files`),e.verbose&&I0.info(`[Verbose] Delta upload error details: ${se(Cx)}`)}cx.storage_provider="r2",cx.manifest=ax,e.verbose&&I0.info("[Verbose] Updating version record with storage provider and manifest...");let{error:Fx}=await wD(D0,cx);Fx&&$t(`Cannot update bundle ${se(Fx)}`),e.verbose&&I0.info("[Verbose] Version record updated successfully")}e.verbose&&I0.info("[Verbose] Checking app permissions...");let Q0=await Zt(D0,l0,y0,2);e.verbose&&(I0.info("[Verbose] Permissions:"),I0.info(` - Upload: ${e7(Q0,2)?"yes":"no"}`),I0.info(` - Write: ${e7(Q0,3)?"yes":"no"}`),I0.info(` - Admin: ${e7(Q0,4)?"yes":"no"}`)),e.deleteLinkedBundleOnUpload&&e7(Q0,3)?(e.verbose&&I0.info(`[Verbose] Deleting linked bundle in channel ${q0}...`),await YS0(D0,y0,q0)):e.deleteLinkedBundleOnUpload&&I0.warn("Cannot delete linked bundle on upload as a upload organization member"),e7(Q0,3)?(e.verbose&&I0.info(`[Verbose] Setting bundle ${_0} to channel ${q0}...`),await XS0(D0,l0,!!e.bundleUrl,_0,q0,N0,R0,y0,E0,e.selfAssign),e.verbose&&I0.info("[Verbose] Channel updated successfully")):I0.warn("Cannot set channel as a upload organization member"),e.verbose&&I0.info("[Verbose] Sending upload event..."),await ut(l0,{channel:"app",event:"App Uploaded",icon:"\u23EB",user_id:R0,tags:{"app-id":y0},notify:!1},e.verbose);let X0={success:!0,bundle:_0,checksum:cx.checksum??null,encryptionMethod:b0,sessionKey:n?n.toString("base64"):void 0,ivSessionKey:typeof cx.session_key=="string"?cx.session_key:void 0,storageProvider:cx.storage_provider};return e.verbose&&(I0.info("[Verbose] Upload completed successfully:"),I0.info(` - Bundle: ${X0.bundle}`),I0.info(` - Checksum: ${X0.checksum}`),I0.info(` - Encryption: ${X0.encryptionMethod}`),I0.info(` - Storage: ${X0.storageProvider}`)),s&&!X0.skipped&&qe("Time to share your update to the world \u{1F30D}"),X0}var p$=require("node:crypto"),Sh=require("node:fs"),b$=require("node:path"),g$=require("node:process");var m$=Me(pu()),y$=Me(Nf()),w$=Me(Zs());var ZS0=20;function $S0(i){console.log(JSON.stringify(i,null,2))}function vl(i){console.error(se(i))}async function D$(i,e,s=!1){let{json:n}=e,{bundle:o,path:r}=e,a=!n&&!s;try{a&&await It();let k=await Qe(),x0=mt(i,k?.config),j=(0,p$.randomUUID)().split("-")[0],r0=vs("",e.packageJson);if(o=o||r0||`0.0.1-beta.${j}`,a&&Ne(`Zipping ${x0}@${o}`),o&&!x7.test(o)){let q0=`Your bundle name ${o}, is not valid it should follow semver convention : https://semver.org/`;throw s||(n?vl({error:"invalid_semver"}):I0.error(q0)),new Error("Invalid bundle version format")}if(r=r||k?.config?.webDir,!x0||!o||!r){let q0="Missing argument, you need to provide a appId and a bundle and a path, or be in a capacitor project";throw s||(n?vl({error:"missing_argument"}):I0.error(q0)),new Error(q0)}if(a&&I0.info(`Started from path "${r}"`),typeof e.codeCheck>"u"?!0:e.codeCheck){if(!pl(r,"notifyAppReady"))throw s||(n?vl({error:"notifyAppReady_not_in_source_code"}):I0.error("notifyAppReady() is missing in the build folder of your app. see: https://capgo.app/docs/plugin/api/#notifyappready")),new Error("notifyAppReady() is missing in build folder");if(!fh(r))throw s||(n?vl({error:"index_html_not_found"}):I0.error(`index.html is missing in the root folder of ${r}`)),new Error("index.html is missing in root folder")}let l0=await D3(r);a&&I0.info(`Zipped ${l0.byteLength} bytes`);let u0=a?P6():null;u0&&u0.start("Calculating checksum");let h0=(0,b$.join)(_r((0,g$.cwd)()),hi),v0=(await pi(void 0,e.packageJson||h0)).get("@capgo/capacitor-updater");if(!v0){let q0="Cannot find @capgo/capacitor-updater in ./package.json, provide the package.json path with --package-json it's required for v7 CLI to work";throw s||I0.warn(q0),new Error(q0)}let _0=!1,B0=(0,y$.default)(v0);B0?_0=(0,w$.default)(B0.version,"7.0.0"):v0==="link:@capgo/capacitor-updater"&&(s||I0.warn("Using local @capgo/capacitor-updater. Assuming v7"),_0=!0);let b0=await(0,m$.checksum)(l0,e.keyV2||(0,Sh.existsSync)(Pr)||_0?"sha256":"crc32");u0&&u0.stop(`Checksum: ${b0}`);let E0=Math.floor(l0.byteLength/1024/1024);E0>ZS0&&a&&(I0.warn(`WARNING !!
363
363
  The bundle size is ${E0} Mb, this may take a while to download for users
364
364
  `),I0.warn(`Learn how to optimize your assets https://capgo.app/blog/optimise-your-images-for-updates/
365
365
  `));let D0=a?P6():null,N0=e.name||`${x0}_${o}.zip`;return D0&&D0.start(`Saving to ${N0}`),(0,Sh.writeFileSync)(N0,l0),D0&&D0.stop(`Saved to ${N0}`),a&&qe("Done \u2705"),!s&&n&&$S0({bundle:o,filename:N0,checksum:b0}),{bundle:o,filename:N0,checksum:b0}}catch(k){throw s||(n?vl(k):I0.error(se(k))),k instanceof Error?k:new Error(String(k))}}async function v$(i,e,s,n=!1){n||Ne("Create channel"),s.apikey=s.apikey||Te();let o=await Qe().catch(()=>{});if(e=mt(e,o?.config),!s.apikey)throw n||I0.error("Missing API key, you need to provide an API key to upload your bundle"),new Error("Missing API key");if(!e)throw n||I0.error("Missing argument, you need to provide a appId, or be in a capacitor project"),new Error("Missing appId");let r=await Ke(s.apikey,s.supaHost,s.supaAnon);await Xe(r,s.apikey,["write","all"]),await Zt(r,s.apikey,e,4,n),n||I0.info(`Creating channel ${e}#${i} to Capgo`);let a=await ED(r,e);if(!a)throw n||I0.error("Cannot find default version for channel creation, please contact Capgo support \u{1F928}"),new Error("Cannot find default version for channel creation");let k=await zi(r,e),x0=await Xe(r,s.apikey,["write","all"]),j=await WW(r,{name:i,app_id:e,version:a.id,created_by:x0,owner_org:k,allow_device_self_set:s.selfAssign??!1,public:s.default??!1});if(j.error)throw n||I0.error(`Cannot create Channel \u{1F640}
@@ -2373,7 +2373,7 @@ export declare function updateOrCreateChannel(supabase: SupabaseClient<Database>
2373
2373
  updated_at: string;
2374
2374
  version: number;
2375
2375
  }>>;
2376
- export declare function sendEvent(capgkey: string, payload: TrackOptions): Promise<void>;
2376
+ export declare function sendEvent(capgkey: string, payload: TrackOptions, verbose?: boolean): Promise<void>;
2377
2377
  export declare function getOrganization(supabase: SupabaseClient<Database>, roles: string[]): Promise<Organization>;
2378
2378
  export declare function verifyUser(supabase: SupabaseClient<Database>, apikey: string, keymod?: Database['public']['Enums']['key_mode'][]): Promise<string>;
2379
2379
  export declare function getOrganizationId(supabase: SupabaseClient<Database>, appId: string): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
package/dist/src/utils.js CHANGED
@@ -831,7 +831,7 @@ export async function updateOrCreateChannel(supabase, update) {
831
831
  .select()
832
832
  .single();
833
833
  }
834
- export async function sendEvent(capgkey, payload) {
834
+ export async function sendEvent(capgkey, payload, verbose) {
835
835
  try {
836
836
  const config = await getRemoteConfig();
837
837
  const response = await ky.post(`${config.hostApi}/private/events`, {
@@ -846,7 +846,11 @@ export async function sendEvent(capgkey, payload) {
846
846
  log.error(`Failed to send LogSnag event: ${response.error}`);
847
847
  }
848
848
  }
849
- catch {
849
+ catch (error) {
850
+ if (verbose) {
851
+ log.error('Failed to send Stats event details:');
852
+ log.error(formatError(error));
853
+ }
850
854
  }
851
855
  }
852
856
  export async function getOrganization(supabase, roles) {