@tty-pt/ndc
Version:
ndc example project
7 lines (6 loc) • 2.91 kB
JavaScript
var b=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var G=(i,t)=>{for(var c in t)b(i,c,{get:t[c],enumerable:!0})},P=(i,t,c,w)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of H(t))!D.call(i,l)&&l!==c&&b(i,l,{get:()=>t[l],enumerable:!(w=z(t,l))||w.enumerable});return i};var R=i=>P(b({},"__esModule",{value:!0}),i);var j={};G(j,{create:()=>g,default:()=>U});module.exports=R(j);var h=require("@xterm/addon-fit"),B=require("@xterm/addon-web-links"),C=0;function g(i,t={}){let{proto:c=location.protocol==="https:"?"wss":"ws",port:w=window.location.port,url:l=c+"://"+window.location.hostname+":"+w}=t,p=new h.FitAddon,y=new ResizeObserver(()=>p.fit()),n=new globalThis.Terminal({convertEol:!0,fontSize:13,fontFamily:"Consolas,Liberation Mono,Menlo,Courier,monospace",allowProposedApi:!0}),r=new WebSocket(l,"binary");r.binaryType="arraybuffer";let s=t.sub,m={...t,ws:r,term:n,write:o=>n.write(o)},S=C;C++;function d(o){console.log("SEND!",S,o),s.ws.send(o)}s?Object.assign(s,{...m,onMessage:s.onMessage,onOpen:s.onOpen,onClose:s.onClose,send:d}):s={...m,onMessage:function(o,e){return!0},onOpen:function(o,e){},onClose:function(o){},send:d};let v=new TextDecoder("utf-8"),O=null,I=new Promise(o=>O=o),f=!0,a=!1;function L(o){let e=new Uint8Array(o.data);if(s.onMessage(o,e)){if(e[0]!=255){let u=v.decode(e);n.write(u)}else if(e[1]==252)switch(e[2]){case 1:f=!1,t.debug&&console.log("WONT ECHO");break;case 3:a=!1,t.debug&&console.log("WONT SGA (ICANON/not raw)");break}else if(e[1]==251)switch(e[2]){case 1:f=!0,t.debug&&console.log("WILL ECHO");break;case 3:a=!0,t.debug&&console.log("WILL SGA (not ICANON/raw)");break}else if(e[1]==250)switch(e[2]){case 31:}}else return}function N(o,e){O(),p.fit(),s.onOpen(o,e)}function E(){s.onClose(s),r=r.onclose=r.onmessage=r.onopen=null,n.dispose();let o=setInterval(()=>{g(i,{...t,sub:s})},3e3),e=s.onOpen;s.onOpen=(u,A)=>{clearInterval(o),e(u,A),s.onOpen=e}}r.onopen=N,r.onmessage=L,r.onclose=E;function W(o,e){let T=o>>8,_=o&255,k=e>>8,F=e&255,x=new Uint8Array([255,250,31,T,_,k,F,255,240]);I.then(()=>r.send(x))}function M(o){return o.scrollTop=o.scrollHeight,n.loadAddon(p),n.loadAddon(new B.WebLinksAddon),n.open(o),n.inputBuf="",n.perm="",n.onResize(({cols:e,rows:u})=>W(e,u)),y.observe(o),n.element.addEventListener("focusin",()=>{n.focused=!0}),n.element.addEventListener("focusout",()=>{n.focused=!1}),n.onData(e=>{if(t.debug&&console.log("term.onData",e,e.charAt(0),a,f),a)d(e==="\r"?`\r
`:e);else if(e==="\r"||e===`
`)f?n.write("\b \b".repeat(n.inputBuf.length)):n.write(`
`),r.send(n.inputBuf+`\r
`),n.inputBuf="";else if(e==="\x7F")a?d(e):(n.write("\b \b"),n.inputBuf=n.inputBuf.length>0?n.inputBuf.slice(0,n.inputBuf.length-1):"");else{n.inputBuf+=e,f&&n.write(e);return}n.lastInput=!1}),n}return M(i),s}var U={create:g};
//# sourceMappingURL=ndc.js.map