@junobuild/cli 0.1.8-next-2025-02-21 → 0.1.9
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 +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -196,7 +196,7 @@ Done. The ${ga(t)} ${(0,Ho.green)(r)} has been configured for your terminal. \u2
|
|
|
196
196
|
`),await ai("Have you completed this step?")};var _$=at(O0(),1);var Yd=at(Ft(),1);import{createServer as cve}from"http";import pve from"node:fs";import dve,{dirname as hve}from"node:path";import{fileURLToPath as fve}from"url";import mve from"util";var Q7=({port:e,nonce:t,principal:r})=>{let n=pbe({port:e,nonce:t}),s=new URL(S7);return s.searchParams.set("redirect_uri",encodeURIComponent(n.toString())),s.searchParams.set("principal",r),s.toString()},Z7=({port:e,reqUrl:t})=>`${PC.replace("{port}",`${e}`)}${t}`,pbe=({port:e,nonce:t})=>{let r=new URL(PC.replace("{port}",`${e}`));return r.searchParams.set("state",`${t}`),r.toString()};import ux from"node:process";import{Buffer as Bbe}from"node:buffer";import l$ from"node:path";import{fileURLToPath as kbe}from"node:url";import jbe from"node:child_process";import JC,{constants as u$}from"node:fs/promises";import r$ from"node:process";import ybe from"node:os";import gbe from"node:fs";import fbe from"node:fs";import e$ from"node:fs";var qC;function dbe(){try{return e$.statSync("/.dockerenv"),!0}catch{return!1}}function hbe(){try{return e$.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function VC(){return qC===void 0&&(qC=dbe()||hbe()),qC}var KC,mbe=()=>{try{return fbe.statSync("/run/.containerenv"),!0}catch{return!1}};function Rf(){return KC===void 0&&(KC=mbe()||VC()),KC}var t$=()=>{if(r$.platform!=="linux")return!1;if(ybe.release().toLowerCase().includes("microsoft"))return!Rf();try{return gbe.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!Rf():!1}catch{return!1}},My=r$.env.__IS_WSL_TEST__?t$:t$();function Gd(e,t,r){let n=s=>Object.defineProperty(e,t,{value:s,enumerable:!0,writable:!0});return Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){let s=r();return n(s),s},set(s){n(s)}}),e}import{promisify as Obe}from"node:util";import zC from"node:process";import{execFile as Ibe}from"node:child_process";import{promisify as bbe}from"node:util";import vbe from"node:process";import{execFile as xbe}from"node:child_process";var Ebe=bbe(xbe);async function WC(){if(vbe.platform!=="darwin")throw new Error("macOS only");let{stdout:e}=await Ebe("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]);return/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e)?.groups.id??"com.apple.Safari"}import Tbe from"node:process";import{promisify as wbe}from"node:util";import{execFile as Sbe,execFileSync as Q6e}from"node:child_process";var Abe=wbe(Sbe);async function n$(e,{humanReadableOutput:t=!0}={}){if(Tbe.platform!=="darwin")throw new Error("macOS only");let r=t?[]:["-ss"],{stdout:n}=await Abe("osascript",["-e",e,r]);return n.trim()}async function HC(e){return n$(`tell application "Finder" to set app_path to application file id "${e}" as string
|
|
197
197
|
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}import{promisify as Pbe}from"node:util";import{execFile as _be}from"node:child_process";var Cbe=Pbe(_be),Dbe={AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},MSEdgeDHTML:{name:"Edge",id:"com.microsoft.edge"},MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"}},lx=class extends Error{};async function GC(e=Cbe){let{stdout:t}=await e("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),r=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(t);if(!r)throw new lx(`Cannot find Windows browser in stdout: ${JSON.stringify(t)}`);let{id:n}=r.groups,s=Dbe[n];if(!s)throw new lx(`Unknown browser ID: ${n}`);return s}var Nbe=Obe(Ibe),Fbe=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,t=>t.toUpperCase());async function YC(){if(zC.platform==="darwin"){let e=await WC();return{name:await HC(e),id:e}}if(zC.platform==="linux"){let{stdout:e}=await Nbe("xdg-mime",["query","default","x-scheme-handler/http"]),t=e.trim();return{name:Fbe(t.replace(/.desktop$/,"").replace("-"," ")),id:t}}if(zC.platform==="win32")return GC();throw new Error("Only macOS, Linux, and Windows are supported")}var XC=l$.dirname(kbe(import.meta.url)),i$=l$.join(XC,"xdg-open"),{platform:Lf,arch:s$}=ux,Mbe=(()=>{let e="/mnt/",t;return async function(){if(t)return t;let r="/etc/wsl.conf",n=!1;try{await JC.access(r,u$.F_OK),n=!0}catch{}if(!n)return e;let s=await JC.readFile(r,{encoding:"utf8"}),o=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(s);return o?(t=o.groups.mountPoint.trim(),t=t.endsWith("/")?t:`${t}/`,t):e}})(),a$=async(e,t)=>{let r;for(let n of e)try{return await t(n)}catch(s){r=s}throw r},cx=async e=>{if(e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e},Array.isArray(e.app))return a$(e.app,c=>cx({...e,app:c}));let{name:t,arguments:r=[]}=e.app??{};if(r=[...r],Array.isArray(t))return a$(t,c=>cx({...e,app:{name:c,arguments:r}}));if(t==="browser"||t==="browserPrivate"){let c={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","microsoft-edge.desktop":"edge"},p={chrome:"--incognito",firefox:"--private-window",edge:"--inPrivate"},d=await YC();if(d.id in c){let l=c[d.id];return t==="browserPrivate"&&r.push(p[l]),cx({...e,app:{name:Lp[l],arguments:r}})}throw new Error(`${d.name} is not supported as a default browser`)}let n,s=[],o={};if(Lf==="darwin")n="open",e.wait&&s.push("--wait-apps"),e.background&&s.push("--background"),e.newInstance&&s.push("--new"),t&&s.push("-a",t);else if(Lf==="win32"||My&&!Rf()&&!t){let c=await Mbe();n=My?`${c}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`:`${ux.env.SYSTEMROOT||ux.env.windir||"C:\\Windows"}\\System32\\WindowsPowerShell\\v1.0\\powershell`,s.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"),My||(o.windowsVerbatimArguments=!0);let p=["Start"];e.wait&&p.push("-Wait"),t?(p.push(`"\`"${t}\`""`),e.target&&r.push(e.target)):e.target&&p.push(`"${e.target}"`),r.length>0&&(r=r.map(d=>`"\`"${d}\`""`),p.push("-ArgumentList",r.join(","))),e.target=Bbe.from(p.join(" "),"utf16le").toString("base64")}else{if(t)n=t;else{let c=!XC||XC==="/",p=!1;try{await JC.access(i$,u$.X_OK),p=!0}catch{}n=ux.versions.electron??(Lf==="android"||c||!p)?"xdg-open":i$}r.length>0&&s.push(...r),e.wait||(o.stdio="ignore",o.detached=!0)}Lf==="darwin"&&r.length>0&&s.push("--args",...r),e.target&&s.push(e.target);let a=jbe.spawn(n,s,o);return e.wait?new Promise((c,p)=>{a.once("error",p),a.once("close",d=>{if(!e.allowNonzeroExitCode&&d>0){p(new Error(`Exited with code ${d}`));return}c(a)})}):(a.unref(),a)},Rbe=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a `target`");return cx({...t,target:e})};function o$(e){if(typeof e=="string"||Array.isArray(e))return e;let{[s$]:t}=e;if(!t)throw new Error(`${s$} is not supported`);return t}function QC({[Lf]:e},{wsl:t}){if(t&&My)return o$(t);if(!e)throw new Error(`${Lf} is not supported`);return o$(e)}var Lp={};Gd(Lp,"chrome",()=>QC({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));Gd(Lp,"firefox",()=>QC({darwin:"firefox",win32:"C:\\Program Files\\Mozilla Firefox\\firefox.exe",linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));Gd(Lp,"edge",()=>QC({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));Gd(Lp,"browser",()=>"browser");Gd(Lp,"browserPrivate",()=>"browserPrivate");var c$=Rbe;var $f=async({url:e,browser:t})=>{let{chrome:r,firefox:n,edge:s}=Lp,o;switch(t?.toLowerCase()){case"chrome":o=r;break;case"firefox":o=n;break;case"edge":o=s;break;case"safari":o="Safari";break;default:o=void 0}return await c$(e,o!==void 0?{app:{name:o}}:void 0)};var vx=at(A$(),1);(0,vx.setBasePort)(9005);var P$=async()=>await(0,vx.getPortPromise)();var yve=fve(import.meta.url),gve=hve(yve),$y=async e=>{let t=await P$(),r=Math.floor(Math.random()*(2<<29)+1),n=_$.Ed25519KeyIdentity.generate(),s=n.getPrincipal().toText(),o=n.toJSON();console.log(`
|
|
198
198
|
\u{1F513} Your terminal will take control as: ${(0,Yd.green)(s)}`);let a=Lr({args:e,option:"-b"})??Lr({args:e,option:"--browser"});await new Promise((c,p)=>{let d=cve(async(l,y)=>{let m=new URL(Z7({port:t,reqUrl:l.url})),g=m.searchParams.get("state"),f=m.searchParams.get("satellites"),v=m.searchParams.get("orbiters"),T=m.searchParams.get("mission_control"),x=m.searchParams.get("profile");if(g!==`${r}`){await iD(l,y,400,"../templates/login/failure.html"),p(new Error("Unexpected error while logging in.")),d.close();return}try{await bve({token:o,satellites:f,orbiters:v,missionControl:T,profile:x}),await iD(l,y,200,"../templates/login/success.html"),console.log(`${(0,Yd.green)("Success!")} Logged in. \u2705`),c()}catch(S){console.error(S),await iD(l,y,400,"../templates/login/failure.html"),p(S)}d.close()});d.listen(t,async()=>{let l=Q7({port:t,nonce:r,principal:s});console.log(),console.log("Visit this URL on this device to log in:"),console.log((0,Yd.bold)((0,Yd.underline)(l))),console.log(),console.log("Waiting for authentication..."),await $f({url:l,browser:a})}),d.on("error",l=>{p(l)})})};async function iD(e,t,r,n){let s=await mve.promisify(pve.readFile)(dve.join(gve,n));t.writeHead(r,{"Content-Length":s.length,"Content-Type":"text/html"}),t.end(s),e.socket.destroy()}var bve=async({token:e,satellites:t,orbiters:r,missionControl:n,profile:s})=>{await k7({token:e,satellites:JSON.parse(decodeURIComponent(t??"[]")),orbiters:r!==null?JSON.parse(decodeURIComponent(r)):null,missionControl:n,profile:s})};var I$=async()=>{await q7(),console.log((0,sD.green)("Logged out"))},N$=async e=>{let t=await jp();if((0,D$.isNullish)(t)){await $y(e);return}let r=C$.Ed25519KeyIdentity.fromParsedJson(t);console.log(`\u{1F510} Your terminal is already a controller: ${(0,sD.green)(r.getPrincipal().toText())}
|
|
199
|
-
`);let{action:n}=await(0,O$.default)({type:"select",name:"action",message:"What would you like to do?",choices:[{title:"Create a new controller via a login with your browser",value:"login"},{title:"Reuse the existing controller",value:"reuse"}]});if(is(n),n==="login"){await $y(e);return}await X7(r.getPrincipal())};var hO=at(Ft(),1);var yl=at(Ft(),1);var F$=at(Ft(),1),Qn=`${(0,F$.yellow)("-m, --mode")} Set env mode. For example production or a custom string. Default is production.`,mn=e=>Pr({args:e,options:["-d","--doc"]})?"doc":"cli";var Di=at(Ft(),1);var xx="0.1.
|
|
199
|
+
`);let{action:n}=await(0,O$.default)({type:"select",name:"action",message:"What would you like to do?",choices:[{title:"Create a new controller via a login with your browser",value:"login"},{title:"Reuse the existing controller",value:"reuse"}]});if(is(n),n==="login"){await $y(e);return}await X7(r.getPrincipal())};var hO=at(Ft(),1);var yl=at(Ft(),1);var F$=at(Ft(),1),Qn=`${(0,F$.yellow)("-m, --mode")} Set env mode. For example production or a custom string. Default is production.`,mn=e=>Pr({args:e,options:["-d","--doc"]})?"doc":"cli";var Di=at(Ft(),1);var xx="0.1.9";var $p=at(Ft(),1);var Ex="Clear existing dapp code by removing JavaScript, HTML, CSS, and other files from your satellite.",B$=`Usage: ${(0,$p.green)("juno")} ${(0,$p.cyan)("clear")} ${(0,$p.yellow)("[options]")}
|
|
200
200
|
|
|
201
201
|
Options:
|
|
202
202
|
${(0,$p.yellow)("-f, --fullPath")} Clear a particular file of your dapp.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@junobuild/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "The Juno command-line interface",
|
|
5
5
|
"author": "David Dal Busco (https://daviddalbusco.com)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@dfinity/identity": "^2.3.0",
|
|
32
32
|
"@dfinity/principal": "^2.3.0",
|
|
33
33
|
"@junobuild/admin": "^0.1.5",
|
|
34
|
-
"@junobuild/cli-tools": "^0.1.
|
|
34
|
+
"@junobuild/cli-tools": "^0.1.2",
|
|
35
35
|
"@junobuild/config-loader": "^0.1.1",
|
|
36
36
|
"@junobuild/core": "^0.1.7",
|
|
37
37
|
"@junobuild/did-tools": "^0.1.0",
|
|
@@ -82,4 +82,4 @@
|
|
|
82
82
|
"engines": {
|
|
83
83
|
"node": ">=20"
|
|
84
84
|
}
|
|
85
|
-
}
|
|
85
|
+
}
|