@junobuild/cli 0.0.47 → 0.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -220,7 +220,7 @@ Are you sure the folder containing your built app (the "source" tag in the juno.
|
|
|
220
220
|
${r}`,"utf-8")},kBe=async()=>{await TBe(iY,{recursive:!0}),await Ws({command:"ic-wasm",args:[Cl(nY,"satellite.wasm"),"-o",As,"shrink"]}),await Ws({command:"ic-wasm",args:[As,"-o",As,"metadata","candid:service","-f",oY,"-v","public"]}),await Ws({command:"ic-wasm",args:[As,"-o",As,"metadata","juno:build","-d","extended","-v","public"]}),await Ws({command:"ic-wasm",args:[As,"-o",As,"metadata","supported_certificate_versions","-d",'"1,2"',"-v","public"]})},PBe=async e=>{let t=`${As}.gz`,{size:r}=await QBe(t),n=i=>Intl.NumberFormat("en-US",{maximumSignificantDigits:2}).format(i/(1024*1024));e.succeed(`${(0,Lo.green)("Success!")}
|
|
221
221
|
|
|
222
222
|
The satellite has been compiled.
|
|
223
|
-
Output file: ${(0,Lo.yellow)(`${RBe(process.cwd(),t)}`)} ${(0,Lo.grey)(`(${n(r)}MB)`)}`)},qBe=async()=>{let{valid:e}=await eY();return e===!1?{valid:e}:(e==="error"&&(await Dn(`The ${(0,Lo.magenta)("ic-wasm")} ${(0,Lo.yellow)(`v${Wp}`)} tool is required to build a satellite but appears to be not available. Would you like to install it on your machine?`),await Ma({command:"cargo",args:["install",`ic-wasm@${Wp}`]})),{valid:!0})},MBe=async()=>{let{valid:e}=await tY();return e===!1?{valid:e}:(e==="error"&&(await Dn(`The ${(0,Lo.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 Ma({command:"cargo",args:["install","candid-extractor"]})),{valid:!0})};var $2=Ee(Ue(),1);import{existsSync as cY}from"node:fs";var uY="../templates/docker",lY=process.cwd(),fY=async()=>{let{valid:e}=await q2();e==="error"||!e||(await M2(),await $Be(),await jBe(),await Ma({command:"docker",args:["compose","up"]}))},pY=async()=>{let{valid:e}=await q2();e==="error"||!e||(await M2(),await Ma({command:"docker",args:["compose","stop"]}))},$Be=async()=>{cY("juno.dev.json")||(await Dn(`A config file is required for development. Would you like the CLI to create a default ${(0,$2.magenta)("juno.dev.json")} for you?`),await $a({template:"juno.dev.json",sourceFolder:uY,destinationFolder:lY}))},jBe=async()=>{cY("docker-compose.yml")||(await Dn(`The CLI utilizes Docker Compose, which is handy for customizing configurations. Would you like the CLI to generate a default ${(0,$2.magenta)("docker-compose.yml")} file for you?`),await $a({template:"docker-compose.yml",sourceFolder:uY,destinationFolder:lY}))};var Jc=Ee(Ue(),1);import{mkdir as GBe}from"node:fs/promises";import{join as xY}from"node:path";var Be=Ee(Ue(),1);var Gb="0.0.
|
|
223
|
+
Output file: ${(0,Lo.yellow)(`${RBe(process.cwd(),t)}`)} ${(0,Lo.grey)(`(${n(r)}MB)`)}`)},qBe=async()=>{let{valid:e}=await eY();return e===!1?{valid:e}:(e==="error"&&(await Dn(`The ${(0,Lo.magenta)("ic-wasm")} ${(0,Lo.yellow)(`v${Wp}`)} tool is required to build a satellite but appears to be not available. Would you like to install it on your machine?`),await Ma({command:"cargo",args:["install",`ic-wasm@${Wp}`]})),{valid:!0})},MBe=async()=>{let{valid:e}=await tY();return e===!1?{valid:e}:(e==="error"&&(await Dn(`The ${(0,Lo.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 Ma({command:"cargo",args:["install","candid-extractor"]})),{valid:!0})};var $2=Ee(Ue(),1);import{existsSync as cY}from"node:fs";var uY="../templates/docker",lY=process.cwd(),fY=async()=>{let{valid:e}=await q2();e==="error"||!e||(await M2(),await $Be(),await jBe(),await Ma({command:"docker",args:["compose","up"]}))},pY=async()=>{let{valid:e}=await q2();e==="error"||!e||(await M2(),await Ma({command:"docker",args:["compose","stop"]}))},$Be=async()=>{cY("juno.dev.json")||(await Dn(`A config file is required for development. Would you like the CLI to create a default ${(0,$2.magenta)("juno.dev.json")} for you?`),await $a({template:"juno.dev.json",sourceFolder:uY,destinationFolder:lY}))},jBe=async()=>{cY("docker-compose.yml")||(await Dn(`The CLI utilizes Docker Compose, which is handy for customizing configurations. Would you like the CLI to generate a default ${(0,$2.magenta)("docker-compose.yml")} file for you?`),await $a({template:"docker-compose.yml",sourceFolder:uY,destinationFolder:lY}))};var Jc=Ee(Ue(),1);import{mkdir as GBe}from"node:fs/promises";import{join as xY}from"node:path";var Be=Ee(Ue(),1);var Gb="0.0.49";var UBe=` __ __ __ __ _ ____
|
|
224
224
|
__) || | || \\| |/ \\
|
|
225
225
|
\\___/ \\___/ |_|\\__|\\____/`,ja=`${UBe} CLI ${(0,Be.grey)(`v${Gb}`)}`,Hb=`
|
|
226
226
|
${ja}
|
|
@@ -329,7 +329,7 @@ Useful ${(0,Jc.green)("juno")} ${(0,Jc.cyan)("dev")} ${(0,Jc.magenta)("<subcomma
|
|
|
329
329
|
Subcommands:
|
|
330
330
|
${wY}
|
|
331
331
|
`;var BY=async e=>{let[t]=e??[];switch(t){case"eject":await IY();break;case"build":await sY();break;case"start":await fY();break;case"stop":await pY();break;default:console.log(`${(0,_Y.red)("Unknown command.")}`),console.log(Vb)}};var CY=Ee(Ue(),1);var Xp=e=>`https://${e}.icp0.io`,Yb=e=>`${b4}${e}`;var j2=async()=>{if(gL()||!await Cn())return;let{satelliteId:e}=await un(),t=Xp(e),r=Yb(e);try{let n=rn(e),i=await pp({satellite:n});if(console.log(`
|
|
332
|
-
\u{1F6E0}\uFE0F ${rp(r)}`),i.length===0){console.log(`\u{1F6F0}\uFE0F ${rp(t)}`);return}i.forEach(({domain:s})=>{console.log(`\u{1F30D} ${rp(`https://${s}`)}`)})}catch{console.log(`${(0,CY.red)("Cannot list the custom domains.")}`)}};var DY=Ee(Mu(),1);var SY=async e=>{if(!await Cn()){Bp();return}let t=Or({args:e,option:"-b"})??Or({args:e,option:"--browser"}),{satelliteId:r}=await un();if(ln({args:e,options:["-c","--console"]})){await sp({url:Yb(r),browser:t});return}let n=rn(r),i=await pp({satellite:n});if(i.length===0){await sp({url:Xp(r),browser:t});return}let s=await VBe({domains:i,satelliteId:r});await sp({url:s,browser:t})},VBe=async({satelliteId:e,domains:t})=>{let{url:r}=await(0,DY.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:Xp(e),value:Xp(e)}]});return rs(r),r};var Uo=Ee(Ue(),1),PY=Ee(Mu(),1),V2=Ee(Qc(),1);var L2=Ee(Ue(),1);var YBe=async({wasm_module:e})=>{let t=Buffer.from(e),r=OV(t)?await RV({source:t}):t,n=new WebAssembly.Module(r),i=WebAssembly.Module.customSections(n,"icp:public juno:build"),o=new TextDecoder().decode(i[0]);return wn(o)&&["stock","extended"].includes(o)?o:void 0},QY=async({satellite:e,wasm_module:t})=>{let[
|
|
332
|
+
\u{1F6E0}\uFE0F ${rp(r)}`),i.length===0){console.log(`\u{1F6F0}\uFE0F ${rp(t)}`);return}i.forEach(({domain:s})=>{console.log(`\u{1F30D} ${rp(`https://${s}`)}`)})}catch{console.log(`${(0,CY.red)("Cannot list the custom domains.")}`)}};var DY=Ee(Mu(),1);var SY=async e=>{if(!await Cn()){Bp();return}let t=Or({args:e,option:"-b"})??Or({args:e,option:"--browser"}),{satelliteId:r}=await un();if(ln({args:e,options:["-c","--console"]})){await sp({url:Yb(r),browser:t});return}let n=rn(r),i=await pp({satellite:n});if(i.length===0){await sp({url:Xp(r),browser:t});return}let s=await VBe({domains:i,satelliteId:r});await sp({url:s,browser:t})},VBe=async({satelliteId:e,domains:t})=>{let{url:r}=await(0,DY.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:Xp(e),value:Xp(e)}]});return rs(r),r};var Uo=Ee(Ue(),1),PY=Ee(Mu(),1),V2=Ee(Qc(),1);var L2=Ee(Ue(),1);var YBe=async({wasm_module:e})=>{let t=Buffer.from(e),r=OV(t)?await RV({source:t}):t,n=new WebAssembly.Module(r),i=WebAssembly.Module.customSections(n,"icp:public juno:build"),o=new TextDecoder().decode(i[0]);return wn(o)&&["stock","extended"].includes(o)?o:void 0},QY=async({satellite:e,wasm_module:t})=>{let r=globalThis.console.warn;globalThis.console.warn=()=>null;let[n,i]=await Promise.allSettled([YBe({wasm_module:t}),Fj({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:o}=i;o==="extended"&&(s==="stock"||$t(s))&&await Dn(`Your satellite is currently running on an ${(0,L2.yellow)("extended")} build. However, you are about to upgrade it to the ${(0,L2.yellow)("stock")} version. Are you sure you want to proceed?`)};var FY=Ee(Ue(),1);import{createHash as TY}from"crypto";import{readFile as JBe}from"node:fs/promises";import{get as zBe}from"https";var U2=async e=>await new Promise((t,r)=>{zBe(e,async n=>{wn(n.statusCode)&&[301,302].includes(n.statusCode)&&await U2(n.headers.location).then(t,r);let i=[];n.on("data",s=>i.push(s)),n.on("end",()=>{t(Buffer.concat(i))}),n.on("error",r)})});var RY=async({upgrade:e,wasm:t,hash:r,assert:n,reset:i=!1})=>{await n?.({wasm_module:t}),await Dn(`Wasm hash is ${(0,FY.cyan)(r)}.${Uy}Start upgrade${i?" and reset":""} now?`);let s=Oi(`Upgrading Wasm${i?" and resetting state":""}...`).start();try{await e({wasm_module:t})}finally{s.stop()}},zb=async({src:e,upgrade:t,reset:r,assert:n})=>{let i=async o=>{let a=await JBe(o);return{wasm:a,hash:TY("sha256").update(a).digest("hex")}},s=Oi("Loading Wasm...").start();try{let{hash:o,wasm:a}=await i(e);s.stop(),await RY({upgrade:t,wasm:a,hash:o,reset:r,assert:n})}catch(o){throw s.stop(),o}},Jb=async({version:e,assetKey:t,upgrade:r,assert:n,reset:i})=>{let s=async()=>{let{hostname:a}=new URL(qy),c=await U2({hostname:a,path:`/releases/${t}-v${e}.wasm.gz`,headers:{"Accept-Encoding":"gzip, deflate, br"}});return{wasm:c,hash:TY("sha256").update(c).digest("hex")}},o=Oi("Downloading Wasm...").start();try{let{hash:a,wasm:c}=await s();o.stop(),await RY({upgrade:r,wasm:c,hash:a,reset:i,assert:n})}catch(a){throw o.stop(),a}},OY=async e=>{let t=Oi("Setting back custom domains...").start();try{await Oj(e)}finally{t.stop()}};var Kb=e=>{switch(e){case"orbiter":return"orbiters";case"mission_control":return"mission_controls";default:return"satellites"}};var H2=Ee(Qc(),1);var G2=async()=>{let e=await fetch(`${qy}/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 NY=async e=>{try{let r=(await G2())[e].sort((i,s)=>(0,H2.compare)(i,s));return(i=>{let{length:s,[s-1]:o}=i;return o})(r)}catch{return}},kY=async({currentVersion:e,assetKeys:t})=>{try{return{result:(await G2())[t].filter(n=>(0,H2.compare)(e,n)===-1)}}catch{return{result:void 0,error:"Cannot fetch new releases from Juno's CDN \u{1F622}."}}};var qY=async e=>{if(ln({args:e,options:["-m","--mission-control"]})){await KBe(e);return}if(ln({args:e,options:["-o","--orbiter"]})){await WBe(e);return}await ZBe(e)},KBe=async e=>{let t=$y();if($t(t)){console.log(`${(0,Uo.red)("No mission control found.")} Ignore this error if your controller does not control your mission control.`);return}let r={missionControlId:t,...Mc()};if(ln({args:e,options:["-s","--src"]})){await nCe({args:e,missionControlParameters:r});return}await rCe(r)},WBe=async e=>{let t=Sa();if(t===void 0||t.length===0)return;let r=async n=>{let i={orbiterId:n,...Mc()};if(ln({args:e,options:["-s","--src"]})){await sCe({args:e,orbiterParameters:i});return}await iCe(i)};for(let n of t)await r(n.p)},ZBe=async e=>{if(!await Cn()){Bp();return}let{satelliteId:t}=await un(),r=rn(t);if(ln({args:e,options:["-s","--src"]})){await tCe({satellite:r,args:e});return}await eCe({satellite:r,args:e})},XBe=async({newerReleases:e,assetKey:t})=>{let r=e.map(i=>({title:`v${i}`,value:i})),{version:n}=await(0,PY.default)({type:"select",name:"version",message:`To which version should your ${t.replace("_"," ")} be upgraded?`,choices:r,initial:0});return rs(n),n},eCe=async({satellite:e,args:t})=>{let r=await ll({satellite:e}),n=`satellite "${UE(e.satelliteId??"")}"`,i=await Y2({currentVersion:r,assetKey:Ny,displayHint:n});if($t(i))return;await MY({satellite:e,args:t,currentVersion:r,upgrade:async o=>{await Jb({version:i,assetKey:"satellite",...o})}})},tCe=async({satellite:e,args:t})=>{let r=Or({args:t,option:"-s"})??Or({args:t,option:"--src"});if(r===void 0){console.log(`${(0,Uo.red)("No source file provided.")}`);return}let n=await ll({satellite:e});await MY({satellite:e,args:t,currentVersion:n,upgrade:async s=>{await zb({src:r,...s})}})},MY=async({satellite:e,args:t,currentVersion:r,upgrade:n})=>{let i=await z2({args:t,assetKey:"satellite"}),s=i?await pp({satellite:e}):[];await n({upgrade:async({wasm_module:c})=>{await Rj({satellite:e,wasm_module:c,deprecated:(0,V2.compare)(r,"0.0.7")<0,deprecatedNoScope:(0,V2.compare)(r,"0.0.9")<0,...i&&{reset:i}})},reset:i,assert:async c=>{await QY({satellite:e,...c})}}),i&&s.length>0&&await OY({satellite:e,domains:s})},rCe=async e=>{let t=await uE({missionControl:e}),n=await Y2({currentVersion:t,assetKey:ky,displayHint:"mission control"});if(n===void 0)return;await Jb({version:n,assetKey:"mission_control",upgrade:async({wasm_module:s})=>{await t1({missionControl:e,wasm_module:s})}})},nCe=async({missionControlParameters:e,args:t})=>{let r=Or({args:t,option:"-s"})??Or({args:t,option:"--src"});if(r===void 0){console.log(`${(0,Uo.red)("No source file provided.")}`);return}await zb({src:r,upgrade:async({wasm_module:i})=>{await t1({missionControl:e,wasm_module:i})}})},iCe=async({args:e,...t})=>{let r=await lE({orbiter:t}),n=`orbiter "${GE(t.orbiterId)}"`,i=await Y2({currentVersion:r,assetKey:Py,displayHint:n});if(i===void 0)return;let s=await z2({args:e,assetKey:"orbiter"});await Jb({version:i,assetKey:"orbiter",upgrade:async({wasm_module:a})=>{await r1({orbiter:t,wasm_module:a,...s&&{reset:s}})},reset:s})},sCe=async({orbiterParameters:e,args:t})=>{let r=Or({args:t,option:"-s"})??Or({args:t,option:"--src"});if(r===void 0){console.log(`${(0,Uo.red)("No source file provided.")}`);return}let n=await z2({args:t,assetKey:"orbiter"});await zb({src:r,upgrade:async({wasm_module:s})=>{await r1({orbiter:e,wasm_module:s,...n&&{reset:n}})},reset:n})},Y2=async({currentVersion:e,assetKey:t,displayHint:r})=>{let{result:n,error:i}=await kY({currentVersion:e,assetKeys:Kb(t)});if(i!==void 0){console.log(`${(0,Uo.red)(i)}`);return}if(n===void 0){console.log(`${(0,Uo.red)("Did not find any new releases of Juno \u{1F622}.")}`);return}if(n.length===0){console.log("No newer releases are available at the moment.");return}let s=await XBe({newerReleases:n,assetKey:t}),{canUpgrade:o}=Qj({currentVersion:e,selectedVersion:s});if(!o){console.log(`There may have been breaking changes between your ${r} ${(0,Uo.yellow)(`v${e}`)} and selected version ${(0,Uo.yellow)(`v${s}`)}.
|
|
333
333
|
Please upgrade iteratively.`);return}return s},z2=async({args:e,assetKey:t})=>ln({args:e,options:["-r","--reset"]})?(await Dn(`\u26A0\uFE0F Are you absolutely sure you want to upgrade and reset (\u2757\uFE0F) your ${t.replace("_"," ")} to its initial state?`),!0):!1;var Dl=Ee(Ue(),1);var $Y=e=>{if(ln({args:e,options:["-l","--list"]})){oCe();return}aCe(e)},oCe=()=>{let e=js();if(e===void 0){console.log("No particular profiles available. Using default.");return}let t=Qo();console.log(`Available profiles:
|
|
334
334
|
`),console.log(Object.keys(e).map(r=>r===t?`${(0,Dl.green)(r)} (currently selected)`:`${r}`).join(`
|
|
335
335
|
`))},aCe=e=>{let t=Or({args:e,option:"-p"})??Or({args:e,option:"--profile"});if(t===void 0){console.log(`${(0,Dl.red)("No profile provided.")}`);return}if(t==="default"){EC(),console.log(`Now using ${(0,Dl.green)("default")}.`);return}if(js()?.[t]===void 0){console.log(`${(0,Dl.red)("No corresponding profile found.")}`);return}bC(t),console.log(`Now using ${(0,Dl.green)(t)}.`)};var gi=Ee(Ue(),1),Wb=Ee(Qc(),1);var cCe={headers:{accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}},uCe=async e=>{let t=await fetch(`${e}/releases/latest`,cCe);if(t.ok)return await t.json()},jY=async()=>await uCe(v4);var LY=async()=>{await lCe(),await fCe(),await pCe(),await dCe()},lCe=async()=>{let e=await jY();if(e===void 0){console.log(`${(0,gi.red)("Cannot fetch last release version of Juno on GitHub \u{1F622}.")}`);return}let{tag_name:t}=e,r=(0,Wb.clean)(t);if($t(r)){console.log(`${(0,gi.red)("Cannot extract version from release. Reach out Juno\u2757\uFE0F")}`);return}UY({currentVersion:Gb,latestVersion:r,displayHint:"CLI",commandLineHint:"npm i -g @junobuild/cli"})},fCe=async()=>{let e=$y();if($t(e)){console.log(`${(0,gi.yellow)("No mission control found.")} Ignore this error if your controller does not control your mission control.`);return}let t={missionControlId:e,...Mc()},r=await uE({missionControl:t});await J2({currentVersion:r,assetKey:ky,displayHint:"mission control"})},pCe=async()=>{if(!await Cn()){console.log(`No ${(0,gi.yellow)("juno.json")} configuration file found.`);return}let{satelliteId:e}=await un(),t=rn(e),r=await ll({satellite:t}),n=`satellite "${UE(e)}"`;await J2({currentVersion:r,assetKey:Ny,displayHint:n})},dCe=async()=>{let e=Sa();if($t(e)||e.length===0)return;let t=async r=>{let n={orbiterId:r,...Mc()},i=await lE({orbiter:n}),s=`orbiter "${GE(r)}"`;await J2({currentVersion:i,assetKey:Py,displayHint:s})};await Promise.allSettled(e.map(async({p:r})=>{await t(r)}))},J2=async({currentVersion:e,assetKey:t,displayHint:r})=>{let n=await NY(Kb(t));if(n===void 0){console.log(`${(0,gi.red)(`Cannot fetch last release version of ${r} on Juno's CDN \u{1F622}.`)}`);return}UY({currentVersion:e,latestVersion:n,displayHint:r,commandLineHint:`juno upgrade${t==="mission_control"?" -m":""}`})},UY=({currentVersion:e,latestVersion:t,displayHint:r,commandLineHint:n})=>{let i=(0,Wb.compare)(e,t);if(i===0){console.log(`Your ${r} (${(0,gi.green)(`v${e}`)}) is up-to-date.`);return}if(i===1){console.log(`${(0,gi.yellow)(`Your ${r} version is more recent than the latest available \u{1F914}.`)}`);return}console.log(`Your ${r} (${(0,gi.yellow)(`v${e}`)}) is behind the latest version (${(0,gi.green)(`v${t}`)}) available. Run ${(0,gi.cyan)(n)} to update it.`)};var GY=Ee(rA(),1);var K2=Ee(Ue(),1);var HY=()=>{let e=Qo();To(e)||console.log(`\u{1F464} Profile: ${(0,K2.green)(e)}`);let t=Tc();if($t(t)){console.log("No controller found.");return}let r=GY.Ed25519KeyIdentity.fromParsedJson(t);console.log(`\u{1F510} Controller: ${(0,K2.green)(r.getPrincipal().toText())}`)};var ACe=async()=>{let{valid:e}=XV();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(Hb);return}if(ln({args:r,options:["-h","--help"]})){switch(t){case"login":console.log(hY);break;case"upgrade":console.log(dY);break;case"open":console.log(gY);break;case"use":console.log(mY);break;case"clear":console.log(EY);break;case"deploy":console.log(yY);break;case"dev":console.log(Vb);break;default:console.log(AY(t))}return}switch(t){case"login":await x$(r);break;case"logout":await w$();break;case"init":await Xf();break;case"deploy":await GV(r),await j2();break;case"config":await IL();break;case"clear":await xL(r);break;case"version":await LY();break;case"open":await SY(r);break;case"upgrade":await qY(r);break;case"whoami":HY(),await j2();break;case"use":$Y(r);break;case"dev":await BY(r);break;case"help":console.log(Hb);break;default:console.log(`${(0,W2.red)("Unknown command.")}`),console.log(Hb)}};(async()=>{try{await ACe()}catch(e){console.log(`${(0,W2.red)("An unexpected error happened \u{1F62B}.")}
|
package/package.json
CHANGED