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