1"use strict"; 2Object.defineProperty(exports, "__esModule", { value: true }); 3class ReceiveBuffer { 4 constructor(size = 4096) { 5 this._buffer = Buffer.allocUnsafe(size); 6 this._offset = 0; 7 this._originalSize = size; 8 } 9 get length() { 10 return this._offset; 11 } 12 append(data) { 13 if (!Buffer.isBuffer(data)) { 14 throw new Error('Attempted to append a non-buffer instance to ReceiveBuffer.'); 15 } 16 if (this._offset + data.length >= this._buffer.length) { 17 const tmp = this._buffer; 18 this._buffer = Buffer.allocUnsafe(Math.max(this._buffer.length + this._originalSize, this._buffer.length + data.length)); 19 tmp.copy(this._buffer); 20 } 21 data.copy(this._buffer, this._offset); 22 return (this._offset += data.length); 23 } 24 peek(length) { 25 if (length > this._offset) { 26 throw new Error('Attempted to read beyond the bounds of the managed internal data.'); 27 } 28 return this._buffer.slice(0, length); 29 } 30 get(length) { 31 if (length > this._offset) { 32 throw new Error('Attempted to read beyond the bounds of the managed internal data.'); 33 } 34 const value = Buffer.allocUnsafe(length); 35 this._buffer.slice(0, length).copy(value); 36 this._buffer.copyWithin(0, length, length + this._offset - length); 37 this._offset -= length; 38 return value; 39 } 40} 41exports.ReceiveBuffer = ReceiveBuffer; 42//# sourceMappingURL=receivebuffer.js.map