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