@junobuild/cli 0.0.73 → 0.0.75

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.
Files changed (2) hide show
  1. package/dist/index.js +2 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -638,7 +638,7 @@ Are you sure the folder containing your built app (the "source" tag in the confi
638
638
  ${r}`,"utf-8")},Mxe=async()=>{await Fxe(JU,{recursive:!0}),await La({command:"ic-wasm",args:[nd(YU,"satellite.wasm"),"-o",Sa,"shrink"]}),await La({command:"ic-wasm",args:[Sa,"-o",Sa,"metadata","candid:service","-f",ZU,"-v","public"]}),await La({command:"ic-wasm",args:[Sa,"-o",Sa,"metadata","juno:build","-d","extended","-v","public"]}),await La({command:"ic-wasm",args:[Sa,"-o",Sa,"metadata","supported_certificate_versions","-d",'"1,2"',"-v","public"]})},Lxe=async e=>{let t=`${Sa}.gz`,{size:r}=await Nxe(t),n=i=>Intl.NumberFormat("en-US",{maximumSignificantDigits:2}).format(i/(1024*1024));e.succeed(`${(0,xl.green)("Success!")}
639
639
 
640
640
  The satellite has been compiled.
641
- Output file: ${(0,xl.yellow)(`${kxe(process.cwd(),t)}`)} ${(0,xl.grey)(`(${n(r)}MB)`)}`)},$xe=async()=>{let{valid:e}=await WU();return e===!1?{valid:e}:(e==="error"&&(await Di(`The ${(0,xl.magenta)("ic-wasm")} ${(0,xl.yellow)(`v${sh}`)} tool is required to build a satellite but appears to be not available. Would you like to install it on your machine?`),await Jl({command:"cargo",args:["install",`ic-wasm@${sh}`]})),{valid:!0})},Uxe=async()=>{let{valid:e}=await KU();return e===!1?{valid:e}:(e==="error"&&(await Di(`The ${(0,xl.magenta)("candid-extractor")} tool is required to generate the API ("did file") of your custom satellite but appears to be not available. Would you like to install it on your machine?`),await Jl({command:"cargo",args:["install","candid-extractor"]})),{valid:!0})};var nq=St(Gt(),1);import{existsSync as qxe}from"node:fs";import{writeFile as Vxe}from"node:fs/promises";import{basename as Gxe,join as Hxe}from"node:path";var dD={filename:_b},eq=async()=>await ev(dD),tq=()=>tv(dD),rq=()=>Gf(dD);var iq="../templates/docker",sq=process.cwd(),aq=async()=>{let{valid:e}=await cD();e==="error"||!e||(await pD(),await Wxe(),await zxe(),await Jl({command:"docker",args:["compose","up"]}))},oq=async()=>{let{valid:e}=await cD();e==="error"||!e||(await pD(),await Jl({command:"docker",args:["compose","stop"]}))},Wxe=async()=>{if(await eq())return;await Di("A config file is required for development. Would you like the CLI to create one for you?");let{configType:e,configPath:t}=await Kxe();await Vc({template:`${_b}.${e}`,sourceFolder:iq,destinationFolder:sq,...or(t)&&{destinationFilename:t}})},Kxe=async()=>{let e=tq();return or(e)?e:{configType:await jv()}},zxe=async()=>{if(qxe("docker-compose.yml"))return;await Di(`The CLI utilizes Docker Compose, which is handy for customizing configurations. Would you like the CLI to generate a default ${(0,nq.magenta)("docker-compose.yml")} file for you?`);let e=await Hf({template:"docker-compose.yml",sourceFolder:iq}),{configPath:t}=rq(),r=Gxe(t),n=e.replaceAll("<JUNO_DEV_CONFIG>",r);await Vxe(Hxe(sq,"docker-compose.yml"),n,"utf-8")};var Yc=St(Gt(),1);import{mkdir as Xxe}from"node:fs/promises";import{join as bq}from"node:path";var Tt=St(Gt(),1);var qv="0.0.73";var Jxe=` __ __ __ __ _ ____
641
+ Output file: ${(0,xl.yellow)(`${kxe(process.cwd(),t)}`)} ${(0,xl.grey)(`(${n(r)}MB)`)}`)},$xe=async()=>{let{valid:e}=await WU();return e===!1?{valid:e}:(e==="error"&&(await Di(`The ${(0,xl.magenta)("ic-wasm")} ${(0,xl.yellow)(`v${sh}`)} tool is required to build a satellite but appears to be not available. Would you like to install it on your machine?`),await Jl({command:"cargo",args:["install",`ic-wasm@${sh}`]})),{valid:!0})},Uxe=async()=>{let{valid:e}=await KU();return e===!1?{valid:e}:(e==="error"&&(await Di(`The ${(0,xl.magenta)("candid-extractor")} tool is required to generate the API ("did file") of your custom satellite but appears to be not available. Would you like to install it on your machine?`),await Jl({command:"cargo",args:["install","candid-extractor"]})),{valid:!0})};var nq=St(Gt(),1);import{existsSync as qxe}from"node:fs";import{writeFile as Vxe}from"node:fs/promises";import{basename as Gxe,join as Hxe}from"node:path";var dD={filename:_b},eq=async()=>await ev(dD),tq=()=>tv(dD),rq=()=>Gf(dD);var iq="../templates/docker",sq=process.cwd(),aq=async()=>{let{valid:e}=await cD();e==="error"||!e||(await pD(),await Wxe(),await zxe(),await Jl({command:"docker",args:["compose","up"]}))},oq=async()=>{let{valid:e}=await cD();e==="error"||!e||(await pD(),await Jl({command:"docker",args:["compose","stop"]}))},Wxe=async()=>{if(await eq())return;await Di("A config file is required for development. Would you like the CLI to create one for you?");let{configType:e,configPath:t}=await Kxe();await Vc({template:`${_b}.${e}`,sourceFolder:iq,destinationFolder:sq,...or(t)&&{destinationFilename:t}})},Kxe=async()=>{let e=tq();return or(e)?e:{configType:await jv()}},zxe=async()=>{if(qxe("docker-compose.yml"))return;await Di(`The CLI utilizes Docker Compose, which is handy for customizing configurations. Would you like the CLI to generate a default ${(0,nq.magenta)("docker-compose.yml")} file for you?`);let e=await Hf({template:"docker-compose.yml",sourceFolder:iq}),{configPath:t}=rq(),r=Gxe(t),n=e.replaceAll("<JUNO_DEV_CONFIG>",r);await Vxe(Hxe(sq,"docker-compose.yml"),n,"utf-8")};var Yc=St(Gt(),1);import{mkdir as Xxe}from"node:fs/promises";import{join as bq}from"node:path";var Tt=St(Gt(),1);var qv="0.0.75";var Jxe=` __ __ __ __ _ ____
642
642
  __) || | || \\| |/ \\
643
643
  \\___/ \\___/ |_|\\__|\\____/`,El=`${Jxe} CLI ${(0,Tt.grey)(`v${qv}`)}`,Vv=`
644
644
  ${El}
@@ -764,7 +764,7 @@ Subcommands:
764
764
  `;var Eq=async e=>{let[t]=e??[];switch(t){case"eject":await vq();break;case"build":await XU();break;case"start":await aq();break;case"stop":await oq();break;default:console.log(`${(0,xq.red)("Unknown subcommand.")}`),console.log(Hv)}};var wq=St(fu(),1);var _q=async e=>{if(!await Oi()){Qf();return}let t=Zr({args:e,option:"-b"})??Zr({args:e,option:"--browser"}),r=Ci(e),{satellite:n}=await Ii(r),i=await bi({satellite:n,env:r}),{satelliteId:s}=i;if(mn({args:e,options:["-c","--console"]})){await Ff({url:Mv(s),browser:t});return}let a=await Kc({satellite:i});if(a.length===0){await Ff({url:nh(s),browser:t});return}let l=await Qxe({domains:a,satelliteId:s});await Ff({url:l,browser:t})},Qxe=async({satelliteId:e,domains:t})=>{let{url:r}=await(0,wq.default)({type:"select",name:"url",message:"Which URL of your satellite should be opened?",choices:[...t.map(({domain:n})=>({title:`https://${n}`,value:`https://${n}`})),{title:nh(e),value:nh(e)}]});return ci(r),r};var Rq=St(Gt(),1);var K0=St(Gt(),1);var lh=St(Gt(),1);import{createHash as Dq}from"crypto";import{readFile as tEe}from"node:fs/promises";var Cq=St(fu(),1);var Wv=e=>{switch(e){case"orbiter":return"orbiters";case"mission_control":return"mission_controls";default:return"satellites"}};var mD=St(kc(),1);var hD=async()=>{let e=await fetch(`${Pb}/releases/metadata.json`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!e.ok)throw new Error("Fetching releases metadata failed.");return await e.json()};var Tq=async e=>{try{let r=(await hD())[e].sort((i,s)=>(0,mD.compare)(i,s));return(i=>{let{length:s,[s-1]:a}=i;return a})(r)}catch{return}},Sq=async({currentVersion:e,assetKeys:t})=>{try{return{result:(await hD())[t].filter(n=>(0,mD.compare)(e,n)===-1)}}catch{return{result:void 0,error:"Cannot fetch new releases from Juno's CDN \u{1F622}."}}};var H0=St(Gt(),1);var eEe=async({wasm_module:e})=>{let t=Buffer.from(e),r=BC(t)?await FC({source:t}):t,n=new WebAssembly.Module(r),i=WebAssembly.Module.customSections(n,"icp:public juno:build"),a=new TextDecoder().decode(i[0]);return or(a)&&["stock","extended"].includes(a)?a:void 0},Aq=async({satellite:e,wasm_module:t})=>{let r=globalThis.console.warn;globalThis.console.warn=()=>null;let[n,i]=await Promise.allSettled([eEe({wasm_module:t}),HL({satellite:e})]);if(globalThis.console.warn=r,n.status==="rejected")throw new Error("The custom sections of the WASM module you try to upgrade cannot be read.");if(i.status==="rejected")return;let{value:s}=n,{value:a}=i;a==="extended"&&(s==="stock"||ir(s))&&await Di(`Your satellite is currently running on an ${(0,H0.cyan)("extended")} build.${mi}However, you are about to upgrade it to the ${(0,H0.yellow)("stock")} version.${mi}Are you sure you want to proceed?`)},Pq=async({hash:e,reset:t})=>{await Di(`The Wasm hash to be applied for the upgrade is ${(0,H0.cyan)(e)}.${mi}Start upgrade${t?" and reset":""} now?`)};var Oq=async({upgrade:e,wasm:t,hash:r,assert:n,reset:i=!1,nocheck:s})=>{s||(await n?.({wasm_module:t}),await Pq({hash:r,reset:i}));let a=Vs(`Upgrading Wasm${i?" and resetting state":""}...`).start();try{await e({wasm_module:t})}finally{a.stop()}},uh=async({src:e,upgrade:t,reset:r,assert:n,nocheck:i})=>{let s=async l=>{let u=await tEe(l);return{wasm:u,hash:Dq("sha256").update(u).digest("hex")}},a=Vs("Loading Wasm...").start();try{let{hash:l,wasm:u}=await s(e);a.stop(),await Oq({upgrade:t,wasm:u,hash:l,reset:r,assert:n,nocheck:i})}catch(l){throw a.stop(),l}},ch=async({version:e,assetKey:t,upgrade:r,assert:n,reset:i,nocheck:s})=>{let a=async()=>{let{hostname:u}=new URL(Pb),c=await Tx({hostname:u,path:`/releases/${t}-v${e}.wasm.gz`,headers:{"Accept-Encoding":"gzip, deflate, br"}});return{wasm:c,hash:Dq("sha256").update(c).digest("hex")}},l=Vs("Downloading Wasm...").start();try{let{hash:u,wasm:c}=await a();l.stop(),await Oq({upgrade:r,wasm:c,hash:u,reset:i,assert:n,nocheck:s})}catch(u){throw l.stop(),u}},Iq=async e=>{let t=Vs("Setting back custom domains...").start();try{await pv(e)}finally{t.stop()}},rEe=async({newerReleases:e,assetKey:t})=>{let r=e.map(i=>({title:`v${i}`,value:i})),{version:n}=await(0,Cq.default)({type:"select",name:"version",message:`To which version should your ${t.replace("_"," ")} be upgraded?`,choices:r,initial:0});return ci(n),n},ph=async({currentVersion:e,assetKey:t,displayHint:r})=>{let{result:n,error:i}=await Sq({currentVersion:e,assetKeys:Wv(t)});if(i!==void 0){console.log(`${(0,lh.red)(i)}`);return}if(n===void 0){console.log(`${(0,lh.red)("Did not find any new releases of Juno \u{1F622}.")}`);return}if(n.length===0){console.log("Currently, there are no new releases available.");return}let s=await rEe({newerReleases:n,assetKey:t}),{canUpgrade:a}=$L({currentVersion:e,selectedVersion:s});if(!a){console.log(`There may have been breaking changes between your ${r} ${(0,lh.yellow)(`v${e}`)} and selected version ${(0,lh.yellow)(`v${s}`)}.
765
765
  Please upgrade iteratively.`);return}return s},W0=async({args:e,assetKey:t})=>mn({args:e,options:["-r","--reset"]})?(await Di(`\u26A0\uFE0F Are you absolutely sure you want to upgrade and reset (\u2757\uFE0F) your ${t.replace("_"," ")} to its initial state?`),!0):!1;var Nq=async e=>{let t=await A1();if(ir(t)){console.log(`${(0,K0.red)("No mission control found.")} Ignore this error if your controller does not control your mission control.`);return}console.log(`${mi}Initiating upgrade for mission control ${(0,K0.cyan)(t)}.${mi}`);let r={missionControlId:t,...await gl()},n=()=>{console.log("\u2705 Mission control successfully upgraded.")};if(mn({args:e,options:["-s","--src"]})){await iEe({args:e,missionControlParameters:r}),n();return}await nEe({args:e,missionControlParameters:r}),n()},nEe=async({args:e,missionControlParameters:t})=>{let r=await uv({missionControl:t}),i=await ph({currentVersion:r,assetKey:Sb,displayHint:"mission control"});if(i===void 0)return;let s=mn({args:e,options:["-n","--nocheck"]});await ch({version:i,nocheck:s,assetKey:"mission_control",upgrade:async({wasm_module:l})=>{await mP({missionControl:t,wasm_module:l})}})},iEe=async({missionControlParameters:e,args:t})=>{let r=Zr({args:t,option:"-s"})??Zr({args:t,option:"--src"});if(r===void 0){console.log(`${(0,K0.red)("No source file provided.")}`);return}let n=mn({args:t,options:["-n","--nocheck"]});await uh({src:r,nocheck:n,upgrade:async({wasm_module:s})=>{await mP({missionControl:e,wasm_module:s})}})};var Kv=St(Gt(),1);var Fq=async e=>{let t=await wu();if(t===void 0||t.length===0)return;let r=async n=>{console.log(`${mi}Initiating upgrade for Orbiter ${(0,Kv.cyan)(n)}.${mi}`);let i={orbiterId:n,...await gl()},s=()=>{console.log("\u2705 Orbiter successfully upgraded.")};if(mn({args:e,options:["-s","--src"]})){await sEe({args:e,orbiterParameters:i}),s();return}await aEe(i),s()};for(let n of t)await r(n.p)},sEe=async({orbiterParameters:e,args:t})=>{let r=Zr({args:t,option:"-s"})??Zr({args:t,option:"--src"});if(r===void 0){console.log(`${(0,Kv.red)("No source file provided.")}`);return}let n=await W0({args:t,assetKey:"orbiter"}),i=mn({args:t,options:["-n","--nocheck"]});await uh({src:r,nocheck:i,upgrade:async({wasm_module:a})=>{await yP({orbiter:e,wasm_module:a,...n&&{reset:n}})},reset:n})},aEe=async({args:e,...t})=>{let r=await cv({orbiter:t}),n=`orbiter "${await Fv(t.orbiterId)}"`,i=await ph({currentVersion:r,assetKey:Ab,displayHint:n});if(i===void 0)return;let s=await W0({args:e,assetKey:"orbiter"}),a=mn({args:e,options:["-n","--nocheck"]});await ch({version:i,assetKey:"orbiter",upgrade:async({wasm_module:u})=>{await yP({orbiter:t,wasm_module:u,...s&&{reset:s}})},reset:s,nocheck:a})};var zv=St(Gt(),1),yD=St(kc(),1);var Bq=async e=>{if(!await Oi()){Qf();return}let t=Ci(e),{satellite:r}=await Ii(t),n=await bi({satellite:r,env:t}),{satelliteId:i}=n;console.log(`${mi}Initiating upgrade for satellite ${(0,zv.cyan)(i)}.${mi}`);let s=()=>{console.log("\u2705 Satellite successfully upgraded.")};if(mn({args:e,options:["-s","--src"]})){await oEe({satellite:n,args:e}),s();return}await lEe({satellite:n,args:e}),s()},oEe=async({satellite:e,args:t})=>{let r=Zr({args:t,option:"-s"})??Zr({args:t,option:"--src"});if(r===void 0){console.log(`${(0,zv.red)("No source file provided.")}`);return}let n=await Zp({satellite:e}),i=mn({args:t,options:["-n","--nocheck"]});await kq({satellite:e,args:t,currentVersion:n,upgrade:async a=>{await uh({src:r,nocheck:i,...a})}})},lEe=async({satellite:e,args:t})=>{let r=await Zp({satellite:e}),n=`satellite "${await Nv(e.satelliteId??"")}"`,i=await ph({currentVersion:r,assetKey:Tb,displayHint:n});if(ir(i))return;let s=mn({args:t,options:["-n","--nocheck"]});await kq({satellite:e,args:t,currentVersion:r,upgrade:async l=>{await ch({version:i,assetKey:"satellite",nocheck:s,...l})}})},kq=async({satellite:e,args:t,currentVersion:r,upgrade:n})=>{let i=await W0({args:t,assetKey:"satellite"}),s=i?await Kc({satellite:e}):[];await n({upgrade:async({wasm_module:u})=>{await WL({satellite:e,wasm_module:u,deprecated:(0,yD.compare)(r,"0.0.7")<0,deprecatedNoScope:(0,yD.compare)(r,"0.0.9")<0,...i&&{reset:i}})},reset:i,assert:async u=>{await Aq({satellite:e,...u})}}),i&&s.length>0&&await Iq({satellite:e,domains:s})};var jq=async e=>{switch(Zr({args:e,option:"-t"})??Zr({args:e,option:"--target"})){case"s":case"satellite":await Bq(e);break;case"m":case"mission-control":await Nq(e);break;case"o":case"orbiter":await Fq(e);break;default:console.log(`${(0,Rq.red)("Unknown target.")}`),console.log(Gv)}};var id=St(Gt(),1);var Mq=async e=>{if(mn({args:e,options:["-l","--list"]})){await uEe();return}await cEe(e)},uEe=async()=>{let e=await to();if(e===void 0){console.log("No particular profiles available. Using default.");return}let t=await cl();console.log(`Available profiles:
766
766
  `),console.log(Object.keys(e).map(r=>r===t?`${(0,id.green)(r)} (currently selected)`:`${r}`).join(`
767
- `))},cEe=async e=>{let t=Zr({args:e,option:"-p"})??Zr({args:e,option:"--profile"});if(t===void 0){console.log(`${(0,id.red)("No profile provided.")}`);return}if(t==="default"){await pA(),console.log(`Now using ${(0,id.green)("default")}.`);return}if((await to())?.[t]===void 0){console.log(`${(0,id.red)("No corresponding profile found.")}`);return}await dA(t),console.log(`Now using ${(0,id.green)(t)}.`)};var Is=St(Gt(),1),Yv=St(kc(),1);var pEe={headers:{accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}},dEe=async e=>{let t=await fetch(`${e}/releases/latest`,pEe);if(t.ok)return await t.json()},Lq=async()=>await dEe(xB);var gD=async e=>{await fEe(),await hEe(),await mEe(e),await yEe()},fEe=async()=>{let e=await Lq();if(e===void 0){console.log(`${(0,Is.red)("Cannot fetch last release version of Juno on GitHub \u{1F622}.")}`);return}let{tag_name:t}=e,r=(0,Yv.clean)(t);if(ir(r)){console.log(`${(0,Is.red)("Cannot extract version from release. Reach out Juno\u2757\uFE0F")}`);return}$q({currentVersion:qv,latestVersion:r,displayHint:"CLI",commandLineHint:"npm i -g @junobuild/cli"})},hEe=async()=>{let e=await A1();if(ir(e)){console.log(`${(0,Is.yellow)("No mission control found.")} Ignore this error if your controller does not control your mission control.`);return}let t={missionControlId:e,...await gl()},r=await uv({missionControl:t});await bD({currentVersion:r,assetKey:Sb,displayHint:"mission control"})},mEe=async e=>{if(!await Oi()){console.log(`No ${(0,Is.yellow)("config")} file found.`);return}let t=Ci(e),{satellite:r}=await Ii(t),n=await bi({satellite:r,env:t}),{satelliteId:i}=n,s=await Zp({satellite:n}),a=`satellite "${await Nv(i)}"`;await bD({currentVersion:s,assetKey:Tb,displayHint:a})},yEe=async()=>{let e=await wu();if(ir(e)||e.length===0)return;let t=async r=>{let n={orbiterId:r,...await gl()},i=await cv({orbiter:n}),s=`orbiter "${await Fv(r)}"`;await bD({currentVersion:i,assetKey:Ab,displayHint:s})};await Promise.allSettled(e.map(async({p:r})=>{await t(r)}))},bD=async({currentVersion:e,assetKey:t,displayHint:r})=>{let n=await Tq(Wv(t));if(n===void 0){console.log(`${(0,Is.red)(`Cannot fetch last release version of ${r} on Juno's CDN \u{1F622}.`)}`);return}$q({currentVersion:e,latestVersion:n,displayHint:r,commandLineHint:`juno upgrade${t==="mission_control"?"-t m":""}`})},$q=({currentVersion:e,latestVersion:t,displayHint:r,commandLineHint:n})=>{let i=(0,Yv.compare)(e,t);if(i===0){console.log(`Your ${r} (${(0,Is.green)(`v${e}`)}) is up-to-date.`);return}if(i===1){console.log(`${(0,Is.yellow)(`Your ${r} version is more recent than the latest available \u{1F914}.`)}`);return}console.log(`Your ${r} (${(0,Is.yellow)(`v${e}`)}) is behind the latest version (${(0,Is.green)(`v${t}`)}) available. Run ${(0,Is.cyan)(n)} to update it.`)};var Uq=St(fm(),1);var vD=St(Gt(),1);var qq=async e=>{let{success:t}=await gEe();t&&await Lv(e)},gEe=async()=>{let e=await cl();pl(e)||console.log(`\u{1F464} Profile: ${(0,vD.green)(e)}`);let t=await Rc();if(ir(t))return console.log("No controller found."),{success:!1};let r=Uq.Ed25519KeyIdentity.fromParsedJson(t);return console.log(`\u{1F510} Controller: ${(0,vD.green)(r.getPrincipal().toText())}`),{success:!0}};var bEe=async()=>{let{valid:e}=HU();if(e==="error"){console.error("Cannot detect your Node runtime version. Is NodeJS installed on your machine?");return}if(!e)return;let[t,...r]=process.argv.slice(2);if(["-h","--help"].includes(t)){console.log(Vv);return}if(["-v","--version"].includes(t)){await gD(r);return}if(mn({args:r,options:["-h","--help"]})){switch(t){case"login":console.log(uq);break;case"upgrade":console.log(Gv);break;case"open":console.log(pq);break;case"use":console.log(cq);break;case"clear":console.log(fq);break;case"config":console.log(hq);break;case"deploy":console.log(dq);break;case"dev":console.log(Hv);break;case"version":case"whoami":console.log(lq(t));break;default:console.log(fD(t))}return}switch(t){case"login":await rM(r);break;case"logout":await tM();break;case"init":await rh(r);break;case"deploy":await qU(r);break;case"config":await BU();break;case"clear":await uU(r);break;case"version":await gD(r);break;case"open":await _q(r);break;case"upgrade":await jq(r);break;case"whoami":await qq(r);break;case"use":await Mq(r);break;case"dev":await Eq(r);break;case"help":console.log(Vv);break;default:console.log(`${(0,xD.red)("Unknown command.")}`),console.log(Vv)}};(async()=>{try{await bEe()}catch(e){console.log(`${(0,xD.red)("An unexpected error happened \u{1F62B}.")}
767
+ `))},cEe=async e=>{let t=Zr({args:e,option:"-p"})??Zr({args:e,option:"--profile"});if(t===void 0){console.log(`${(0,id.red)("No profile provided.")}`);return}if(t==="default"){await pA(),console.log(`Now using ${(0,id.green)("default")}.`);return}if((await to())?.[t]===void 0){console.log(`${(0,id.red)("No corresponding profile found.")}`);return}await dA(t),console.log(`Now using ${(0,id.green)(t)}.`)};var Is=St(Gt(),1),Yv=St(kc(),1);var pEe={headers:{accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}},dEe=async e=>{let t=await fetch(`${e}/releases/latest`,pEe);if(t.ok)return await t.json()},Lq=async()=>await dEe(xB);var gD=async e=>{await fEe(),await hEe(),await mEe(e),await yEe()},fEe=async()=>{let e=await Lq();if(e===void 0){console.log(`${(0,Is.red)("Cannot fetch last release version of Juno on GitHub \u{1F622}.")}`);return}let{tag_name:t}=e,r=(0,Yv.clean)(t);if(ir(r)){console.log(`${(0,Is.red)("Cannot extract version from release. Reach out Juno\u2757\uFE0F")}`);return}$q({currentVersion:qv,latestVersion:r,displayHint:"CLI",commandLineHint:"npm i -g @junobuild/cli"})},hEe=async()=>{let e=await A1();if(ir(e)){console.log(`${(0,Is.yellow)("No mission control found.")} Ignore this error if your controller does not control your mission control.`);return}let t={missionControlId:e,...await gl()},r=await uv({missionControl:t});await bD({currentVersion:r,assetKey:Sb,displayHint:"mission control"})},mEe=async e=>{if(!await Oi()){console.log(`No ${(0,Is.yellow)("config")} file found.`);return}let t=Ci(e),{satellite:r}=await Ii(t),n=await bi({satellite:r,env:t}),{satelliteId:i}=n,s=await Zp({satellite:n}),a=`satellite "${await Nv(i)}"`;await bD({currentVersion:s,assetKey:Tb,displayHint:a})},yEe=async()=>{let e=await wu();if(ir(e)||e.length===0)return;let t=async r=>{let n={orbiterId:r,...await gl()},i=await cv({orbiter:n}),s=`orbiter "${await Fv(r)}"`;await bD({currentVersion:i,assetKey:Ab,displayHint:s})};await Promise.allSettled(e.map(async({p:r})=>{await t(r)}))},bD=async({currentVersion:e,assetKey:t,displayHint:r})=>{let n=await Tq(Wv(t));if(n===void 0){console.log(`${(0,Is.red)(`Cannot fetch last release version of ${r} on Juno's CDN \u{1F622}.`)}`);return}$q({currentVersion:e,latestVersion:n,displayHint:r,commandLineHint:`juno upgrade${t==="mission_control"?"-t m":""}`})},$q=({currentVersion:e,latestVersion:t,displayHint:r,commandLineHint:n})=>{let i=(0,Yv.compare)(e,t);if(i===0){console.log(`Your ${r} (${(0,Is.green)(`v${e}`)}) is up-to-date.`);return}if(i===1){console.log(`${(0,Is.yellow)(`Your ${r} version is more recent than the latest available \u{1F914}.`)}`);return}console.log(`Your ${r} (${(0,Is.yellow)(`v${e}`)}) is behind the latest version (${(0,Is.green)(`v${t}`)}) available. Run ${(0,Is.cyan)(n)} to update it.`)};var Uq=St(fm(),1);var vD=St(Gt(),1);var qq=async e=>{let{success:t}=await gEe();t&&await Lv(e)},gEe=async()=>{let e=await cl();pl(e)||console.log(`\u{1F464} Profile: ${(0,vD.green)(e)}`);let t=await Rc();if(ir(t))return console.log("No controller found."),{success:!1};let r=Uq.Ed25519KeyIdentity.fromParsedJson(t);return console.log(`\u{1F510} Controller: ${(0,vD.green)(r.getPrincipal().toText())}`),{success:!0}};var bEe=async()=>{let{valid:e}=HU();if(e==="error"){console.error("Cannot detect your Node runtime version. Is NodeJS installed on your machine?");return}e||process.exit(1);let[t,...r]=process.argv.slice(2);if(["-h","--help"].includes(t)){console.log(Vv);return}if(["-v","--version"].includes(t)){await gD(r);return}if(mn({args:r,options:["-h","--help"]})){switch(t){case"login":console.log(uq);break;case"upgrade":console.log(Gv);break;case"open":console.log(pq);break;case"use":console.log(cq);break;case"clear":console.log(fq);break;case"config":console.log(hq);break;case"deploy":console.log(dq);break;case"dev":console.log(Hv);break;case"version":case"whoami":console.log(lq(t));break;default:console.log(fD(t))}return}switch(t){case"login":await rM(r);break;case"logout":await tM();break;case"init":await rh(r);break;case"deploy":await qU(r);break;case"config":await BU();break;case"clear":await uU(r);break;case"version":await gD(r);break;case"open":await _q(r);break;case"upgrade":await jq(r);break;case"whoami":await qq(r);break;case"use":await Mq(r);break;case"dev":await Eq(r);break;case"help":console.log(Vv);break;default:console.log(`${(0,xD.red)("Unknown command.")}`),console.log(Vv)}};(async()=>{try{await bEe()}catch(e){console.log(`${(0,xD.red)("An unexpected error happened \u{1F62B}.")}
768
768
  `),console.log(e),process.exit(1)}})();export{bEe as run};
769
769
  /*! Bundled license information:
770
770
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@junobuild/cli",
3
- "version": "0.0.73",
3
+ "version": "0.0.75",
4
4
  "description": "The Juno command-line interface",
5
5
  "author": "David Dal Busco (https://daviddalbusco.com)",
6
6
  "license": "MIT",