@nethesis/phone-island
Version:
NethVoice CTI Phone Island
3 lines (2 loc) • 2.1 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./encodePacket.browser.js"),t=require("./decodePacket.browser.js"),r=require("./commons.js");const n=String.fromCharCode(30);let o;function a(e){return e.reduce(((e,t)=>e+t.length),0)}function c(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let n=0;for(let o=0;o<t;o++)r[o]=e[0][n++],n===e[0].length&&(e.shift(),n=0);return e.length&&n<e[0].length&&(e[0]=e[0].slice(n)),r}exports.encodePacket=e.encodePacket,exports.decodePacket=t.decodePacket,exports.createPacketDecoderStream=function(e,n){o||(o=new TextDecoder);const s=[];let i=0,f=-1,u=!1;return new TransformStream({transform(d,l){for(s.push(d);;){if(0===i){if(a(s)<1)break;const e=c(s,1);u=!(128&~e[0]),f=127&e[0],i=f<126?3:126===f?1:2}else if(1===i){if(a(s)<2)break;const e=c(s,2);f=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(a(s)<8)break;const e=c(s,8),t=new DataView(e.buffer,e.byteOffset,e.length),n=t.getUint32(0);if(n>Math.pow(2,21)-1){l.enqueue(r.ERROR_PACKET);break}f=n*Math.pow(2,32)+t.getUint32(4),i=3}else{if(a(s)<f)break;const e=c(s,f);l.enqueue(t.decodePacket(u?e:o.decode(e),n)),i=0}if(0===f||f>e){l.enqueue(r.ERROR_PACKET);break}}}})},exports.createPacketEncoderStream=function(){return new TransformStream({transform(t,r){e.encodePacketToBinary(t,(e=>{const n=e.length;let o;if(n<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,n);else if(n<65536){o=new Uint8Array(3);const e=new DataView(o.buffer);e.setUint8(0,126),e.setUint16(1,n)}else{o=new Uint8Array(9);const e=new DataView(o.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(n))}t.data&&"string"!=typeof t.data&&(o[0]|=128),r.enqueue(o),r.enqueue(e)}))}})},exports.decodePayload=(e,r)=>{const o=e.split(n),a=[];for(let e=0;e<o.length;e++){const n=t.decodePacket(o[e],r);if(a.push(n),"error"===n.type)break}return a},exports.encodePayload=(t,r)=>{const o=t.length,a=new Array(o);let c=0;t.forEach(((t,s)=>{e.encodePacket(t,!1,(e=>{a[s]=e,++c===o&&r(a.join(n))}))}))},exports.protocol=4;
//# sourceMappingURL=index.js.map