9remote 2.0.22 → 2.0.26

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.
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  const __importMetaUrl = require('url').pathToFileURL(__filename).href;
3
- var _=Object.create;var L=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var q=(e,r,s,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of $(r))!A.call(e,t)&&t!==s&&L(e,t,{get:()=>r[t],enumerable:!(n=T(r,t))||n.enumerable});return e};var w=(e,r,s)=>(s=e!=null?_(N(e)):{},q(r||!e||!e.__esModule?L(s,"default",{value:e,enumerable:!0}):s,e));var C=w(require("net"),1),o=w(require("fs"),1),y=w(require("path"),1),v=w(require("os"),1),M=w(require("node-pty"),1);var k={win32:[{id:"cmd",label:"Command Prompt",path:"cmd.exe",args:[]},{id:"powershell",label:"PowerShell",path:"powershell.exe",args:["-NoLogo"]},{id:"pwsh",label:"PowerShell Core",path:"pwsh.exe",args:["-NoLogo"]}],unix:[{id:"bash",label:"Bash",path:"/bin/bash",args:["-l"]},{id:"zsh",label:"Zsh",path:"/bin/zsh",args:["-l"]},{id:"sh",label:"Sh",path:"/bin/sh",args:["-l"]}]};function x(e){if(process.platform==="win32"){let n=e?k.win32.find(c=>c.id===e):null;if(n)return n;let t=process.env.COMSPEC;return t?{id:"cmd",label:"Command Prompt",path:t,args:[]}:k.win32[0]}let r=process.env.SHELL||"/bin/bash",s=r.split("/").pop();return{id:s,label:s,path:r,args:["-l"]}}var I=y.default.join(v.default.homedir(),".9remote"),b=process.platform==="win32"?"\\\\.\\pipe\\9remote-pty":y.default.join(I,"pty-daemon.sock"),D=y.default.join(I,"pids","ptyDaemon.pid"),a=new Map,O=new Set,F=50*1024,z=5*1024*1024,P=y.default.join(I,"logs"),E=y.default.join(P,"daemon.log");try{o.default.existsSync(P)||o.default.mkdirSync(P,{recursive:!0})}catch{}function j(){try{if(o.default.existsSync(E)&&o.default.statSync(E).size>z){let s=o.default.readFileSync(E,"utf8").slice(-1024*1024);o.default.writeFileSync(E,s)}}catch{}}function m(e,r=null){j();let n=`[${new Date().toISOString()}] ERROR: ${e}`;r&&(n+=` - ${r.message||r}`),n+=`
4
- `;try{o.default.appendFileSync(E,n)}catch{}console.error(n.trim())}function H(){return process.env.CODESPACES==="true"?process.env.CODESPACE_VSCODE_FOLDER||"/workspaces":process.env.HOME||process.env.USERPROFILE||v.default.homedir()}function G(e){let r={...process.env,TERM:"xterm-256color",COLORTERM:"truecolor",LANG:process.env.LANG||"en_US.UTF-8"},s=e.includes("zsh"),n=e.includes("bash");if(s){r.ZDOTDIR=r.ZDOTDIR||r.HOME;let t=`
3
+ var A=Object.create;var L=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var q=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var j=(e,r,s,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of $(r))!F.call(e,t)&&t!==s&&L(e,t,{get:()=>r[t],enumerable:!(o=T(r,t))||o.enumerable});return e};var g=(e,r,s)=>(s=e!=null?A(q(e)):{},j(r||!e||!e.__esModule?L(s,"default",{value:e,enumerable:!0}):s,e));var N=g(require("net"),1),n=g(require("fs"),1),m=g(require("path"),1),v=g(require("os"),1),_=g(require("node-pty"),1);var k={win32:[{id:"cmd",label:"Command Prompt",path:"cmd.exe",args:[]},{id:"powershell",label:"PowerShell",path:"powershell.exe",args:["-NoLogo"]},{id:"pwsh",label:"PowerShell Core",path:"pwsh.exe",args:["-NoLogo"]}],unix:[{id:"bash",label:"Bash",path:"/bin/bash",args:["-l"]},{id:"zsh",label:"Zsh",path:"/bin/zsh",args:["-l"]},{id:"sh",label:"Sh",path:"/bin/sh",args:["-l"]}]};function C(e){if(process.platform==="win32"){let o=e?k.win32.find(a=>a.id===e):null;if(o)return o;let t=process.env.COMSPEC;return t?{id:"cmd",label:"Command Prompt",path:t,args:[]}:k.win32[0]}let r=process.env.SHELL||"/bin/bash",s=r.split("/").pop();return{id:s,label:s,path:r,args:["-l"]}}var E=m.default.join(v.default.homedir(),".9remote"),b=process.platform==="win32"?"\\\\.\\pipe\\9remote-pty":m.default.join(E,"pty-daemon.sock"),D=m.default.join(E,"pids","ptyDaemon.pid"),l=new Map,O=new Set,M=2*1024*1024,H=5*1024*1024,R=m.default.join(E,"logs"),w=m.default.join(R,"daemon.log");try{n.default.existsSync(R)||n.default.mkdirSync(R,{recursive:!0})}catch{}function G(){try{if(n.default.existsSync(w)&&n.default.statSync(w).size>H){let s=n.default.readFileSync(w,"utf8").slice(-1024*1024);n.default.writeFileSync(w,s)}}catch{}}function f(e,r=null){G();let o=`[${new Date().toISOString()}] ERROR: ${e}`;r&&(o+=` - ${r.message||r}`),o+=`
4
+ `;try{n.default.appendFileSync(w,o)}catch{}console.error(o.trim())}function U(){return process.env.CODESPACES==="true"?process.env.CODESPACE_VSCODE_FOLDER||"/workspaces":process.env.HOME||process.env.USERPROFILE||v.default.homedir()}function Z(e){let r={...process.env,TERM:"xterm-256color",COLORTERM:"truecolor",LANG:process.env.LANG||"en_US.UTF-8"},s=e.includes("zsh"),o=e.includes("bash");if(s){r.ZDOTDIR=r.ZDOTDIR||r.HOME;let t=`
5
5
  precmd() {
6
6
  print -Pn "\\e]7;file://%m\${PWD}\\e\\\\"
7
7
  }
8
- `;r._9REMOTE_PRECMD=t}else if(n){let t=r.PROMPT_COMMAND||"";r.PROMPT_COMMAND=`printf "\\e]7;file://%s\\a" "\${HOSTNAME}\${PWD}"${t?`; ${t}`:""}`}return r}function R(e){let r=JSON.stringify(e)+`
9
- `;for(let s of O)try{s.write(r)}catch{}}function l(e,r){try{e.write(JSON.stringify(r)+`
10
- `)}catch{}}function U(e,r,s=80,n=24,t=null){if(a.has(e))return{success:!1,error:"Session already exists"};let c=x(t),p=H();try{let i=G(c.path);i.NINE_REMOTE_SESSION_ID=e;let S=M.default.spawn(c.path,c.args,{name:"xterm-256color",cols:s,rows:n,cwd:p,env:i,useConpty:process.platform==="win32"});if(c.id==="powershell"||c.id==="pwsh"){let f=`function prompt { $p = $PWD.Path -replace '\\\\','/'; "$([char]27)]7;file://$([System.Net.Dns]::GetHostName())$p$([char]27)\\PS $($PWD.Path)> " }\r
11
- `;setTimeout(()=>{try{S.write(f)}catch{}},500)}let u={pty:S,buffer:[],name:r||`Terminal ${a.size+1}`,createdAt:Date.now(),cwd:p,shellId:c.id,shellLabel:c.label};return S.onData(f=>{u.buffer.push(f);let g=u.buffer.reduce((d,h)=>d+h.length,0);for(;g>F&&u.buffer.length>1;)u.buffer.shift(),g=u.buffer.reduce((d,h)=>d+h.length,0);R({type:"output",sessionId:e,data:Buffer.from(f).toString("base64")})}),S.onExit(()=>{a.delete(e),R({type:"sessionClosed",sessionId:e})}),a.set(e,u),{success:!0,sessionId:e,cwd:p,shellId:c.id,shellLabel:c.label}}catch(i){return m("Failed to create session",i),{success:!1,error:i.message}}}function Z(e,r){let{type:s,sessionId:n,...t}=r;switch(s){case"ping":l(e,{type:"pong"});break;case"listSessions":let c=Array.from(a.entries()).map(([d,h])=>({id:d,name:h.name,createdAt:h.createdAt,shellId:h.shellId,shellLabel:h.shellLabel}));l(e,{type:"sessionList",sessions:c,requestId:t.requestId});break;case"createSession":let p=U(t.sessionId||`session-${Date.now()}`,t.name,t.cols,t.rows,t.shellId);l(e,{type:"createResult",...p,requestId:t.requestId});break;case"joinSession":let i=a.get(n);if(!i){l(e,{type:"joinResult",success:!1,error:"Session not found",requestId:t.requestId});return}if(i.buffer.length>0){let d=i.buffer.join("");l(e,{type:"output",sessionId:n,data:Buffer.from(d).toString("base64")})}l(e,{type:"joinResult",success:!0,name:i.name,cwd:i.cwd,shellId:i.shellId,shellLabel:i.shellLabel,requestId:t.requestId});break;case"input":let S=a.get(n);S?.pty&&S.pty.write(t.data);break;case"resize":let u=a.get(n);if(u?.pty)try{u.pty.resize(t.cols,t.rows)}catch{}break;case"deleteSession":let f=a.get(n);f?(f.pty&&f.pty.kill(),a.delete(n),R({type:"sessionClosed",sessionId:n}),l(e,{type:"deleteResult",success:!0,requestId:t.requestId})):l(e,{type:"deleteResult",success:!1,error:"Session not found",requestId:t.requestId});break;case"renameSession":let g=a.get(n);g?(g.name=t.name,R({type:"sessionRenamed",sessionId:n,name:t.name}),l(e,{type:"renameResult",success:!0,requestId:t.requestId})):l(e,{type:"renameResult",success:!1,error:"Session not found",requestId:t.requestId});break;default:m(`Unknown message type: ${s}`)}}function B(){if(!o.default.existsSync(I))try{o.default.mkdirSync(I,{recursive:!0})}catch(s){m("Failed to create socket directory",s),process.exit(1)}if(process.platform!=="win32"&&o.default.existsSync(b))try{o.default.unlinkSync(b)}catch(s){m("Failed to remove stale socket",s),process.exit(1)}let e=C.default.createServer(s=>{O.add(s);let n="";s.on("data",t=>{n+=t.toString();let c=n.split(`
12
- `);n=c.pop()||"";for(let p of c)if(p.trim())try{let i=JSON.parse(p);Z(s,i)}catch{m("Invalid message",p)}}),s.on("close",()=>{O.delete(s)}),s.on("error",t=>{m("Client error",t),O.delete(s)})});e.on("error",s=>{m("Server error",s),s.code==="EADDRINUSE"&&m("Socket already in use, exiting"),process.exit(1)}),e.listen(b,()=>{if(process.platform!=="win32")try{o.default.chmodSync(b,384)}catch{}});try{o.default.mkdirSync(y.default.dirname(D),{recursive:!0}),o.default.writeFileSync(D,String(process.pid),{mode:384})}catch{}let r=()=>{for(let[,s]of a)if(s.pty)try{s.pty.kill()}catch{}try{e.close()}catch{}if(process.platform!=="win32"&&o.default.existsSync(b))try{o.default.unlinkSync(b)}catch{}try{o.default.unlinkSync(D)}catch{}process.exit(0)};process.on("SIGTERM",r),process.on("SIGINT",r)}B();
8
+ `;r._9REMOTE_PRECMD=t}else if(o){let t=r.PROMPT_COMMAND||"";r.PROMPT_COMMAND=`printf "\\e]7;file://%s\\a" "\${HOSTNAME}\${PWD}"${t?`; ${t}`:""}`}return r}function x(e){let r=JSON.stringify(e)+`
9
+ `;for(let s of O)try{s.write(r)}catch{}}function u(e,r){try{e.write(JSON.stringify(r)+`
10
+ `)}catch{}}function B(e,r,s=80,o=24,t=null,a=null){if(l.has(e))return{success:!1,error:"Session already exists"};let i=C(t);(!a||!n.default.existsSync(a))&&(a=U());try{let c=Z(i.path);c.NINE_REMOTE_SESSION_ID=e;let h=_.default.spawn(i.path,i.args,{name:"xterm-256color",cols:s,rows:o,cwd:a,env:c,useConpty:process.platform==="win32"});if(i.id==="powershell"||i.id==="pwsh"){let d=`function prompt { $p = $PWD.Path -replace '\\\\','/'; "$([char]27)]7;file://$([System.Net.Dns]::GetHostName())$p$([char]27)\\PS $($PWD.Path)> " }\r
11
+ `;setTimeout(()=>{try{h.write(d)}catch{}},500)}let p={pty:h,buffer:[],name:r,createdAt:Date.now(),cwd:a,shellId:i.id,shellLabel:i.label};return h.onData(d=>{p.buffer.push(d);let y=d.match(/\x1b\]7;file:\/\/[^/]*([^\x07\x1b]*)/);if(y)try{p.cwd=decodeURIComponent(y[1])}catch{}p.buffer.reduce((I,S)=>I+S.length,0)>M&&(p.buffer=[p.buffer.join("").slice(-M)]),x({type:"output",sessionId:e,data:Buffer.from(d).toString("base64")})}),h.onExit(()=>{l.delete(e),x({type:"sessionClosed",sessionId:e})}),l.set(e,p),{success:!0,sessionId:e,cwd:a,shellId:i.id,shellLabel:i.label}}catch(c){return f("Failed to create session",c),{success:!1,error:c.message}}}function W(e,r){let{type:s,sessionId:o,...t}=r;switch(s){case"ping":u(e,{type:"pong",version:"17",requestId:t.requestId});break;case"listSessions":let a=Array.from(l.entries()).map(([I,S])=>({id:I,name:S.name,createdAt:S.createdAt,shellId:S.shellId,shellLabel:S.shellLabel,cwd:S.cwd}));u(e,{type:"sessionList",sessions:a,requestId:t.requestId});break;case"createSession":let i=B(t.sessionId||`session-${Date.now()}`,t.name,t.cols,t.rows,t.shellId,t.cwd);u(e,{type:"createResult",...i,requestId:t.requestId});break;case"joinSession":let c=l.get(o);if(!c){u(e,{type:"joinResult",success:!1,error:"Session not found",requestId:t.requestId});return}let h=c.buffer.length>0?c.buffer.join(""):"";h&&u(e,{type:"output",sessionId:o,data:Buffer.from(h).toString("base64")}),u(e,{type:"joinResult",success:!0,name:c.name,cwd:c.cwd,shellId:c.shellId,shellLabel:c.shellLabel,requestId:t.requestId});break;case"input":let p=l.get(o);p?.pty&&p.pty.write(t.data);break;case"resize":let d=l.get(o);if(d?.pty)try{d.pty.resize(t.cols,t.rows)}catch{}break;case"deleteSession":let y=l.get(o);y?(y.pty&&y.pty.kill(),l.delete(o),x({type:"sessionClosed",sessionId:o}),u(e,{type:"deleteResult",success:!0,requestId:t.requestId})):u(e,{type:"deleteResult",success:!1,error:"Session not found",requestId:t.requestId});break;case"getCwd":let P=l.get(o);u(e,{type:"cwdResult",cwd:P?.cwd||null,requestId:t.requestId});break;default:f(`Unknown message type: ${s}`)}}function J(){if(!n.default.existsSync(E))try{n.default.mkdirSync(E,{recursive:!0})}catch(s){f("Failed to create socket directory",s),process.exit(1)}if(process.platform!=="win32"&&n.default.existsSync(b))try{n.default.unlinkSync(b)}catch(s){f("Failed to remove stale socket",s),process.exit(1)}let e=N.default.createServer(s=>{O.add(s);let o="";s.on("data",t=>{o+=t.toString();let a=o.split(`
12
+ `);o=a.pop()||"";for(let i of a)if(i.trim())try{let c=JSON.parse(i);W(s,c)}catch{f("Invalid message",i)}}),s.on("close",()=>{O.delete(s)}),s.on("error",t=>{f("Client error",t),O.delete(s)})});e.on("error",s=>{f("Server error",s),s.code==="EADDRINUSE"&&f("Socket already in use, exiting"),process.exit(1)}),e.listen(b,()=>{if(process.platform!=="win32")try{n.default.chmodSync(b,384)}catch{}});try{n.default.mkdirSync(m.default.dirname(D),{recursive:!0}),n.default.writeFileSync(D,String(process.pid),{mode:384})}catch{}let r=()=>{for(let[,s]of l)if(s.pty)try{s.pty.kill()}catch{}try{e.close()}catch{}if(process.platform!=="win32"&&n.default.existsSync(b))try{n.default.unlinkSync(b)}catch{}try{n.default.unlinkSync(D)}catch{}process.exit(0)};process.on("SIGTERM",r),process.on("SIGINT",r)}J();