9remote 0.1.50 → 0.1.51
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/cli.cjs +2 -2
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -61,7 +61,7 @@ ${G6.default.cursorShow}`)}releaseCursor(){this.extraLinesUnderPrompt>0&&jf(this
|
|
|
61
61
|
`:`
|
|
62
62
|
`)+t,i=n+1,n=r.indexOf(`
|
|
63
63
|
`,i)}while(n!==-1);return o+=r.slice(i),o}var{stdout:wy,stderr:Ey}=_y,nx=Symbol("GENERATOR"),ri=Symbol("STYLER"),ho=Symbol("IS_EMPTY"),Sy=["ansi","ansi","ansi256","ansi16m"],ti=Object.create(null),lR=(r,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=wy?wy.level:0;r.level=e.level===void 0?t:e.level};var fR=r=>{let e=(...t)=>t.join(" ");return lR(e,r),Object.setPrototypeOf(e,po.prototype),e};function po(r){return fR(r)}Object.setPrototypeOf(po.prototype,Function.prototype);for(let[r,e]of Object.entries(Ze))ti[r]={get(){let t=rc(this,ox(e.open,e.close,this[ri]),this[ho]);return Object.defineProperty(this,r,{value:t}),t}};ti.visible={get(){let r=rc(this,this[ri],!0);return Object.defineProperty(this,"visible",{value:r}),r}};var ix=(r,e,t,...n)=>r==="rgb"?e==="ansi16m"?Ze[t].ansi16m(...n):e==="ansi256"?Ze[t].ansi256(Ze.rgbToAnsi256(...n)):Ze[t].ansi(Ze.rgbToAnsi(...n)):r==="hex"?ix("rgb",e,t,...Ze.hexToRgb(...n)):Ze[t][r](...n),dR=["rgb","hex","ansi256"];for(let r of dR){ti[r]={get(){let{level:t}=this;return function(...n){let i=ox(ix(r,Sy[t],"color",...n),Ze.color.close,this[ri]);return rc(this,i,this[ho])}}};let e="bg"+r[0].toUpperCase()+r.slice(1);ti[e]={get(){let{level:t}=this;return function(...n){let i=ox(ix(r,Sy[t],"bgColor",...n),Ze.bgColor.close,this[ri]);return rc(this,i,this[ho])}}}}var xR=Object.defineProperties(()=>{},{...ti,level:{enumerable:!0,get(){return this[nx].level},set(r){this[nx].level=r}}}),ox=(r,e,t)=>{let n,i;return t===void 0?(n=r,i=e):(n=t.openAll+r,i=e+t.closeAll),{open:r,close:e,openAll:n,closeAll:i,parent:t}},rc=(r,e,t)=>{let n=(...i)=>hR(n,i.length===1?""+i[0]:i.join(" "));return Object.setPrototypeOf(n,xR),n[nx]=r,n[ri]=e,n[ho]=t,n},hR=(r,e)=>{if(r.level<=0||!e)return r[ho]?"":e;let t=r[ri];if(t===void 0)return e;let{openAll:n,closeAll:i}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=gy(e,t.close,t.open),t=t.parent;let o=e.indexOf(`
|
|
64
|
-
`);return o!==-1&&(e=Dy(e,i,n,o)),n+e+i};Object.defineProperties(po.prototype,ti);var pR=po(),FV=po({level:Ey?Ey.level:0});var q=pR;var b_=S(zy(),1),si=require("child_process"),Vt=S(require("path"),1),m_=require("url"),dc=S(require("fs"),1),y_=S(require("os"),1),__=S(require("dns"),1),g_=S(require("https"),1),D_=require("util");var Jy=S(Qy(),1),dx=S(require("crypto"),1),{machineIdSync:ER}=Jy.default;async function bo(r=null){let e=r||process.env.MACHINE_ID_SALT||"9remote-salt";try{let t=ER();return dx.default.createHash("sha256").update(t+e).digest("hex").substring(0,16)}catch(t){return console.error("Error getting machine ID:",t),dx.default.randomUUID().replace(/-/g,"").substring(0,16)}}var Xy=S(require("crypto"),1),SR=process.env.API_KEY_SECRET||"9remote-api-key-secret";function OR(){let r="abcdefghijklmnopqrstuvwxyz0123456789",e="";for(let t=0;t<6;t++)e+=r.charAt(Math.floor(Math.random()*r.length));return e}function CR(r,e){return Xy.default.createHmac("sha256",SR).update(r+e).digest("hex").slice(0,8)}function ni(r){let e=OR(),t=CR(r,e);return{key:`sk-${r}-${e}-${t}`,keyId:e}}var rr=S(require("fs"),1),ac=S(require("path"),1),Zy=S(require("os"),1),oc=ac.default.join(Zy.default.homedir(),".9remote"),mo=ac.default.join(oc,"state.json"),xx=ac.default.join(oc,"keys.json");function uc(){rr.default.existsSync(oc)||rr.default.mkdirSync(oc,{recursive:!0})}function e_(){try{return uc(),rr.default.existsSync(mo)?JSON.parse(rr.default.readFileSync(mo,"utf8")):null}catch{return null}}function r_(r){try{uc(),rr.default.writeFileSync(mo,JSON.stringify(r,null,2))}catch(e){console.error("Error saving state:",e)}}function t_(){try{rr.default.existsSync(mo)&&rr.default.unlinkSync(mo)}catch{}}function yo(){try{return uc(),rr.default.existsSync(xx)?JSON.parse(rr.default.readFileSync(xx,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function ii(r,e,t="Default"){try{uc();let n={machineId:r,key:e,name:t,createdAt:new Date().toISOString()};return rr.default.writeFileSync(xx,JSON.stringify(n,null,2)),n}catch(n){return console.error("Error saving key:",n),null}}async function hx(r,e){try{let t=await fetch(`${e}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r,expiryMinutes:30})});if(!t.ok){let n=await t.json();throw new Error(n.error||"Failed to create temp key")}return await t.json()}catch(t){return console.error("Error creating temp key:",t),null}}var Wt=require("fs"),n_=require("url"),i_=require("child_process"),_o=S(require("path"),1),px=S(require("os"),1),FR=_o.default.dirname((0,n_.fileURLToPath)(__importMetaUrl)),Pe="9remote",AR=`https://registry.npmjs.org/${Pe}/latest`,qR=3e3,PR=8e3;function TR(){return"0.1.
|
|
64
|
+
`);return o!==-1&&(e=Dy(e,i,n,o)),n+e+i};Object.defineProperties(po.prototype,ti);var pR=po(),FV=po({level:Ey?Ey.level:0});var q=pR;var b_=S(zy(),1),si=require("child_process"),Vt=S(require("path"),1),m_=require("url"),dc=S(require("fs"),1),y_=S(require("os"),1),__=S(require("dns"),1),g_=S(require("https"),1),D_=require("util");var Jy=S(Qy(),1),dx=S(require("crypto"),1),{machineIdSync:ER}=Jy.default;async function bo(r=null){let e=r||process.env.MACHINE_ID_SALT||"9remote-salt";try{let t=ER();return dx.default.createHash("sha256").update(t+e).digest("hex").substring(0,16)}catch(t){return console.error("Error getting machine ID:",t),dx.default.randomUUID().replace(/-/g,"").substring(0,16)}}var Xy=S(require("crypto"),1),SR=process.env.API_KEY_SECRET||"9remote-api-key-secret";function OR(){let r="abcdefghijklmnopqrstuvwxyz0123456789",e="";for(let t=0;t<6;t++)e+=r.charAt(Math.floor(Math.random()*r.length));return e}function CR(r,e){return Xy.default.createHmac("sha256",SR).update(r+e).digest("hex").slice(0,8)}function ni(r){let e=OR(),t=CR(r,e);return{key:`sk-${r}-${e}-${t}`,keyId:e}}var rr=S(require("fs"),1),ac=S(require("path"),1),Zy=S(require("os"),1),oc=ac.default.join(Zy.default.homedir(),".9remote"),mo=ac.default.join(oc,"state.json"),xx=ac.default.join(oc,"keys.json");function uc(){rr.default.existsSync(oc)||rr.default.mkdirSync(oc,{recursive:!0})}function e_(){try{return uc(),rr.default.existsSync(mo)?JSON.parse(rr.default.readFileSync(mo,"utf8")):null}catch{return null}}function r_(r){try{uc(),rr.default.writeFileSync(mo,JSON.stringify(r,null,2))}catch(e){console.error("Error saving state:",e)}}function t_(){try{rr.default.existsSync(mo)&&rr.default.unlinkSync(mo)}catch{}}function yo(){try{return uc(),rr.default.existsSync(xx)?JSON.parse(rr.default.readFileSync(xx,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function ii(r,e,t="Default"){try{uc();let n={machineId:r,key:e,name:t,createdAt:new Date().toISOString()};return rr.default.writeFileSync(xx,JSON.stringify(n,null,2)),n}catch(n){return console.error("Error saving key:",n),null}}async function hx(r,e){try{let t=await fetch(`${e}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r,expiryMinutes:30})});if(!t.ok){let n=await t.json();throw new Error(n.error||"Failed to create temp key")}return await t.json()}catch(t){return console.error("Error creating temp key:",t),null}}var Wt=require("fs"),n_=require("url"),i_=require("child_process"),_o=S(require("path"),1),px=S(require("os"),1),FR=_o.default.dirname((0,n_.fileURLToPath)(__importMetaUrl)),Pe="9remote",AR=`https://registry.npmjs.org/${Pe}/latest`,qR=3e3,PR=8e3;function TR(){return"0.1.51"}function BR(r,e){let t=r.split(".").map(Number),n=e.split(".").map(Number);for(let i=0;i<3;i++){if(n[i]>t[i])return!0;if(n[i]<t[i])return!1}return!1}function jR(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,Wt.existsSync)("/.dockerenv")?"Docker":null}async function o_(r=!1){if(r)return!1;let e=TR();if(!e)return!1;let t=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],n=0,i=null,o=u=>{process.stdout.isTTY&&(process.stdout.write(`\r${t[0]} ${u}`),i=setInterval(()=>{process.stdout.write(`\r${t[n++%t.length]} ${u}`)},80))},a=()=>{i&&(clearInterval(i),i=null),process.stdout.isTTY&&process.stdout.write("\r\x1B[K")};return new Promise(u=>{let s=!1,c=x=>{s||(s=!0,a(),u(x))},l=setTimeout(()=>c(!1),PR);o("Checking for updates..."),fetch(AR,{signal:AbortSignal.timeout(qR)}).then(x=>x.json()).then(x=>{if(s)return;clearTimeout(l);let h=x.version;if(!h||!BR(e,h)){c(!1);return}a(),console.log(q.green(`\u2705 New version available: ${e} \u2192 ${h}`));let v=jR();if(v){console.log(q.yellow(` \u26A0\uFE0F ${v} detected - manual update required`)),console.log(q.gray(` Run: npm install -g ${Pe}@latest
|
|
65
65
|
`)),c(!1);return}console.log(q.yellow(`\u{1F504} Auto-updating...
|
|
66
66
|
`));let b=process.argv.slice(2).filter(A=>A!=="--skip-update").join(" "),m=process.platform,y,_;if(m==="win32"){let A=`@echo off
|
|
67
67
|
echo \u{1F4E5} Downloading update...
|
|
@@ -108,7 +108,7 @@ else
|
|
|
108
108
|
${Pe} ${b} --skip-update
|
|
109
109
|
fi
|
|
110
110
|
`;y=_o.default.join(px.default.tmpdir(),`${Pe}-update.sh`),(0,Wt.writeFileSync)(y,A,{mode:493}),_=["sh",[y]]}(0,i_.spawn)(_[0],_[1],{detached:!0,stdio:"inherit"}).unref(),process.exit(0)}).catch(()=>{clearTimeout(l),c(!1)})})}var pe=S(require("fs"),1),Eo=S(require("path"),1),c_=S(require("https"),1),$t=S(require("os"),1),fc=require("child_process"),wo=null,sc=null,lc=null,go=Eo.default.join($t.default.homedir(),".9remote","bin"),a_="cloudflared",bx=$t.default.platform()==="win32",MR=bx?`${a_}.exe`:a_,oi=Eo.default.join(go,MR),cc=Eo.default.join($t.default.homedir(),".9remote","cloudflared.pid"),Do=!1,vx=5,u_=6e4,ai=[],ui=null,RR="https://github.com/cloudflare/cloudflared/releases/latest/download",IR={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-amd64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function kR(){let r=$t.default.platform(),e=$t.default.arch(),t=IR[r];if(!t)throw new Error(`Unsupported platform: ${r}`);let n=t[e];if(!n)throw new Error(`Unsupported architecture: ${e} for platform ${r}`);return`${RR}/${n}`}async function l_(r,e){return new Promise((t,n)=>{let i=pe.default.createWriteStream(e);c_.default.get(r,o=>{if([301,302].includes(o.statusCode)){i.close(),pe.default.unlinkSync(e),l_(o.headers.location,e).then(t).catch(n);return}if(o.statusCode!==200){i.close(),pe.default.unlinkSync(e),n(new Error(`Download failed with status ${o.statusCode}`));return}o.pipe(i),i.on("finish",()=>{i.close(()=>t(e))}),i.on("error",a=>{i.close(),pe.default.unlinkSync(e),n(a)})}).on("error",o=>{i.close(),pe.default.existsSync(e)&&pe.default.unlinkSync(e),n(o)})})}async function mx(){if(pe.default.existsSync(go)||pe.default.mkdirSync(go,{recursive:!0}),pe.default.existsSync(oi))return bx||pe.default.chmodSync(oi,"755"),oi;console.log("\u{1F4E5} Downloading tunnel binary...");let r=kR(),e=r.endsWith(".tgz"),t=e?Eo.default.join(go,"cloudflared.tgz"):oi;try{return await l_(r,t),e&&(console.log("\u2705 Extracting..."),(0,fc.execSync)(`tar -xzf "${t}" -C "${go}"`,{stdio:"pipe"}),pe.default.unlinkSync(t)),bx||pe.default.chmodSync(oi,"755"),console.log("\u2705 cloudflared ready"),oi}catch(n){throw console.error("\u274C Failed to download cloudflared:",n.message),n}}var LR=["INF Starting tunnel","INF Version","GOOS:","Settings:","Autoupdate frequency","Generated Connector","Initial protocol","ICMP proxy","Created ICMP","Starting metrics server","curve preferences","Updated to new configuration"];async function f_(r,e=null){let t=await mx();e&&(ui=e),lc=r;let n=(0,fc.spawn)(t,["tunnel","run","--token",r],{detached:!1,stdio:["ignore","pipe","pipe"]});return Do=!1,console.log(`\u2705 Cloudflared spawned with PID: ${n.pid}`),await new Promise((i,o)=>{let a=0,u=!1,s=setTimeout(()=>{u||(u=!0,i(n))},9e4),c=l=>{let x=l.toString().trim();if(!LR.some(h=>x.includes(h))&&!Do&&x.includes("Registered tunnel connection")){a++,a<=4&&(process.stdout.write(`\r \u2714 Connection ${a}/4 established`),a===4&&(process.stdout.write(`
|
|
111
|
-
`),u||(u=!0,clearTimeout(s),i(n))));return}};n.stdout.on("data",c),n.stderr.on("data",c),n.on("error",l=>{u||(u=!0,clearTimeout(s),o(l))}),n.on("exit",l=>{u||(u=!0,clearTimeout(s),o(new Error(`cloudflared exited with code ${l}`)))})}),n.on("error",i=>{console.error("\u274C cloudflared error:",i)}),n.on("exit",(i,o)=>{if(console.log(`\u26A0\uFE0F Cloudflared process exited (code: ${i}, signal: ${o}, intentional: ${Do})`),Do)console.log("\u2139\uFE0F Cloudflared exit ignored (intentional shutdown)");else if(console.log("\u26A0\uFE0F Cloudflared unexpected exit detected - will restart"),ui){let a=Date.now();ai.push(a),ai=ai.filter(u=>u>a-u_),ai.length<=vx?(console.log(`\u{1F504} Restarting tunnel... (attempt ${ai.length}/${vx})`),setTimeout(()=>{console.log("\u{1F504} Executing tunnel restart..."),ui(r)},2e3)):console.log(`\u274C Too many tunnel restarts (${vx} in ${u_/1e3}s). Giving up.`)}else console.log("\u26A0\uFE0F No restart callback registered")}),pe.default.writeFileSync(cc,n.pid.toString()),NR(),n}function yx(){try{if(pe.default.existsSync(cc)){Do=!0;let r=parseInt(pe.default.readFileSync(cc,"utf8"));process.kill(r),pe.default.unlinkSync(cc),console.log("\u2705 Cloudflared killed")}}catch{}}function d_(){ai=[],ui=null,lc=null,UR()}function s_(){let r=$t.default.networkInterfaces(),e=[];for(let[t,n]of Object.entries(r))if(n)for(let i of n)!i.internal&&i.family==="IPv4"&&e.push(`${t}:${i.address}`);return e.sort().join("|")}function NR(){wo||(sc=s_(),wo=setInterval(()=>{let r=s_();r!==sc&&(console.log("\u{1F504} Network change detected - restarting tunnel..."),sc=r,yx(),ui&&lc&&setTimeout(()=>{console.log("\u{1F504} Restarting tunnel after network change..."),ui(lc)},2e3))},5e3))}function UR(){wo&&(clearInterval(wo),wo=null),sc=null}var gx=new __.default.Resolver;gx.setServers(["1.1.1.1","1.0.0.1"]);var WR=(0,D_.promisify)(gx.resolve4.bind(gx));function $R(r,e=5e3){return new Promise(async(t,n)=>{try{let i=new URL(r),[o]=await WR(i.hostname),a=g_.default.request({hostname:o,port:443,path:i.pathname+i.search,method:"GET",headers:{host:i.hostname},servername:i.hostname,rejectUnauthorized:!0},u=>{let s="";u.on("data",c=>{s+=c}),u.on("end",()=>t({ok:u.statusCode>=200&&u.statusCode<300,status:u.statusCode,body:s}))});a.setTimeout(e,()=>{a.destroy(),n(new Error("timeout"))}),a.on("error",n),a.end()}catch(i){n(i)}})}var VR=process.argv.includes("--skip-update"),xc=Vt.default.dirname((0,m_.fileURLToPath)(__importMetaUrl)),tK=Vt.default.resolve(xc,"../.."),KR=Vt.default.resolve(xc,"../dist/server.cjs"),x_=Vt.default.resolve(xc,"../index.js"),Ar="https://9remote.cc",dt=2208,h_="abcdefghijklmnpqrstuvwxyz23456789",_x=10,p_=6e4,H=q.rgb(230,138,110),GR=q.rgb(200,120,95);function HR(){return"0.1.
|
|
111
|
+
`),u||(u=!0,clearTimeout(s),i(n))));return}};n.stdout.on("data",c),n.stderr.on("data",c),n.on("error",l=>{u||(u=!0,clearTimeout(s),o(l))}),n.on("exit",l=>{u||(u=!0,clearTimeout(s),o(new Error(`cloudflared exited with code ${l}`)))})}),n.on("error",i=>{console.error("\u274C cloudflared error:",i)}),n.on("exit",(i,o)=>{if(console.log(`\u26A0\uFE0F Cloudflared process exited (code: ${i}, signal: ${o}, intentional: ${Do})`),Do)console.log("\u2139\uFE0F Cloudflared exit ignored (intentional shutdown)");else if(console.log("\u26A0\uFE0F Cloudflared unexpected exit detected - will restart"),ui){let a=Date.now();ai.push(a),ai=ai.filter(u=>u>a-u_),ai.length<=vx?(console.log(`\u{1F504} Restarting tunnel... (attempt ${ai.length}/${vx})`),setTimeout(()=>{console.log("\u{1F504} Executing tunnel restart..."),ui(r)},2e3)):console.log(`\u274C Too many tunnel restarts (${vx} in ${u_/1e3}s). Giving up.`)}else console.log("\u26A0\uFE0F No restart callback registered")}),pe.default.writeFileSync(cc,n.pid.toString()),NR(),n}function yx(){try{if(pe.default.existsSync(cc)){Do=!0;let r=parseInt(pe.default.readFileSync(cc,"utf8"));process.kill(r),pe.default.unlinkSync(cc),console.log("\u2705 Cloudflared killed")}}catch{}}function d_(){ai=[],ui=null,lc=null,UR()}function s_(){let r=$t.default.networkInterfaces(),e=[];for(let[t,n]of Object.entries(r))if(n)for(let i of n)!i.internal&&i.family==="IPv4"&&e.push(`${t}:${i.address}`);return e.sort().join("|")}function NR(){wo||(sc=s_(),wo=setInterval(()=>{let r=s_();r!==sc&&(console.log("\u{1F504} Network change detected - restarting tunnel..."),sc=r,yx(),ui&&lc&&setTimeout(()=>{console.log("\u{1F504} Restarting tunnel after network change..."),ui(lc)},2e3))},5e3))}function UR(){wo&&(clearInterval(wo),wo=null),sc=null}var gx=new __.default.Resolver;gx.setServers(["1.1.1.1","1.0.0.1"]);var WR=(0,D_.promisify)(gx.resolve4.bind(gx));function $R(r,e=5e3){return new Promise(async(t,n)=>{try{let i=new URL(r),[o]=await WR(i.hostname),a=g_.default.request({hostname:o,port:443,path:i.pathname+i.search,method:"GET",headers:{host:i.hostname},servername:i.hostname,rejectUnauthorized:!0},u=>{let s="";u.on("data",c=>{s+=c}),u.on("end",()=>t({ok:u.statusCode>=200&&u.statusCode<300,status:u.statusCode,body:s}))});a.setTimeout(e,()=>{a.destroy(),n(new Error("timeout"))}),a.on("error",n),a.end()}catch(i){n(i)}})}var VR=process.argv.includes("--skip-update"),xc=Vt.default.dirname((0,m_.fileURLToPath)(__importMetaUrl)),tK=Vt.default.resolve(xc,"../.."),KR=Vt.default.resolve(xc,"../dist/server.cjs"),x_=Vt.default.resolve(xc,"../index.js"),Ar="https://9remote.cc",dt=2208,h_="abcdefghijklmnpqrstuvwxyz23456789",_x=10,p_=6e4,H=q.rgb(230,138,110),GR=q.rgb(200,120,95);function HR(){return"0.1.51"}function Dx(){let r=HR(),e=Math.min(44,process.stdout.columns||44);console.log(""),console.log(H("\u2554"+"\u2550".repeat(e-2)+"\u2557")),console.log(H("\u2551")+" ".repeat(e-2)+H("\u2551"));let t=`\u{1F680} 9Remote v${r}`,n=Math.floor((e-2-t.length)/2);console.log(H("\u2551")+" ".repeat(n)+H.bold(t)+" ".repeat(e-2-n-t.length)+H("\u2551"));let i="Remote terminal access from anywhere",o=Math.floor((e-2-i.length)/2);console.log(H("\u2551")+" ".repeat(o)+q.gray(i)+" ".repeat(e-2-o-i.length)+H("\u2551")),console.log(H("\u2551")+" ".repeat(e-2)+H("\u2551")),console.log(H("\u255A"+"\u2550".repeat(e-2)+"\u255D")),console.log("")}function YR(){let r="";for(let e=0;e<6;e++)r+=h_.charAt(Math.floor(Math.random()*h_.length));return r}function w_(r,e="\u{1F4F1} Scan QR to connect:"){console.log(H(`
|
|
112
112
|
${e}`)),b_.default.generate(r,{small:!0,type:"terminal",margin:0},t=>{let n=t.trim().split(`
|
|
113
113
|
`);console.log(n.join(`
|
|
114
114
|
`))})}async function wx(r,e){let t=await hx(r,Ar);if(!t){console.log(q.red("\u274C Failed to create temp key"));return}let n=`${Ar}/login?k=${t.tempKey}`,i=Math.min(44,process.stdout.columns||55);So({step:3,tunnelUrl:e,oneTimeKey:t.tempKey,qrUrl:n}),w_(n),console.log(q.gray(`
|