| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 'use strict';function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }var Buffer = require('safe-buffer').Buffer;var util = require('util');function copyBuffer(src, target, offset) {  src.copy(target, offset);}module.exports = function () {  function BufferList() {    _classCallCheck(this, BufferList);    this.head = null;    this.tail = null;    this.length = 0;  }  BufferList.prototype.push = function push(v) {    var entry = { data: v, next: null };    if (this.length > 0) this.tail.next = entry;else this.head = entry;    this.tail = entry;    ++this.length;  };  BufferList.prototype.unshift = function unshift(v) {    var entry = { data: v, next: this.head };    if (this.length === 0) this.tail = entry;    this.head = entry;    ++this.length;  };  BufferList.prototype.shift = function shift() {    if (this.length === 0) return;    var ret = this.head.data;    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;    --this.length;    return ret;  };  BufferList.prototype.clear = function clear() {    this.head = this.tail = null;    this.length = 0;  };  BufferList.prototype.join = function join(s) {    if (this.length === 0) return '';    var p = this.head;    var ret = '' + p.data;    while (p = p.next) {      ret += s + p.data;    }return ret;  };  BufferList.prototype.concat = function concat(n) {    if (this.length === 0) return Buffer.alloc(0);    if (this.length === 1) return this.head.data;    var ret = Buffer.allocUnsafe(n >>> 0);    var p = this.head;    var i = 0;    while (p) {      copyBuffer(p.data, ret, i);      i += p.data.length;      p = p.next;    }    return ret;  };  return BufferList;}();if (util && util.inspect && util.inspect.custom) {  module.exports.prototype[util.inspect.custom] = function () {    var obj = util.inspect({ length: this.length });    return this.constructor.name + ' ' + obj;  };}
 |