@nethesis/phone-island
Version:
NethVoice CTI Phone Island
3 lines (2 loc) • 2.3 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../_virtual/EBMLEncoder.js"),t=require("./tools.js");require("./ebmlID.js");var r,n=require("../../../../_virtual/ebmlID.js");exports.__require=function(){if(r)return e.__exports;r=1,Object.defineProperty(e.__exports,"__esModule",{value:!0});var a=t.__require(),s=t.__require(),o=n.__exports,u=function(){function e(){this._schema=o.byEbmlID,this._buffers=[],this._stack=[]}return e.prototype.encode=function(e){var t=this;return a.concat(e.reduce((function(e,r){return e.concat(t.encodeChunk(r))}),[])).buffer},e.prototype.encodeChunk=function(e){return"m"===e.type?e.isEnd?this.endTag(e):this.startTag(e):(e.data=s.Buffer.from(e.data),this.writeTag(e)),this.flush()},e.prototype.flush=function(){var e=this._buffers;return this._buffers=[],e},e.prototype.getSchemaInfo=function(e){for(var t=Object.keys(this._schema).map(Number),r=0;r<t.length;r++){var n=t[r];if(this._schema[n].name===e)return new s.Buffer(n.toString(16),"hex")}return null},e.prototype.writeTag=function(e){var t=e.name,r=this.getSchemaInfo(t),n=e.data;if(null==r)throw new Error("No schema entry found for "+t);var s=a.encodeTag(r,n);this._stack.length>0?this._stack[this._stack.length-1].children.push({tagId:r,elm:e,children:[],data:s}):this._buffers=this._buffers.concat(s)},e.prototype.startTag=function(e){var t=e.name,r=this.getSchemaInfo(t);if(null==r)throw new Error("No schema entry found for "+t);if(e.unknownSize){var n=a.encodeTag(r,new s.Buffer(0),e.unknownSize);this._buffers=this._buffers.concat(n)}else{var o={tagId:r,elm:e,children:[],data:null};this._stack.length>0&&this._stack[this._stack.length-1].children.push(o),this._stack.push(o)}},e.prototype.endTag=function(e){e.name;var t=this._stack.pop();if(null==t)throw new Error("EBML structure is broken");if(t.elm.name!==e.name)throw new Error("EBML structure is broken");var r=t.children.reduce((function(e,t){if(null===t.data)throw new Error("EBML structure is broken");return e.concat(t.data)}),[]),n=a.concat(r);"m"===t.elm.type?t.data=a.encodeTag(t.tagId,n,t.elm.unknownSize):t.data=a.encodeTag(t.tagId,n),this._stack.length<1&&(this._buffers=this._buffers.concat(t.data))},e}();return e.__exports.default=u,e.__exports};
//# sourceMappingURL=EBMLEncoder.js.map