UNPKG

buffer-readable

Version:

convert a string/Buffer/Uint8Array to a readable stream, support highWaterMark and adjustable push delay

48 lines (47 loc) 1.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BufferReadable = void 0; const stream_1 = require("stream"); class BufferReadable extends stream_1.Readable { constructor(buffer, opts) { super(Object.assign(Object.assign({}, opts), { objectMode: false })); this.__delay = 0; this.__pos = 0; if (Buffer.isBuffer(buffer)) { this.__buffer = buffer; } else if (typeof buffer === "string" || buffer instanceof Uint8Array) { this.__buffer = Buffer.from(buffer); } else { throw new Error("arguments type error"); } this.__buffer_len = this.__buffer.length; const delay = opts === null || opts === void 0 ? void 0 : opts.delay; if (typeof delay === "number" && Number.isSafeInteger(delay) && delay > 0) { this.__delay = delay; } } _read(size) { if (this.__pos >= this.__buffer_len) { this.push(null); } else { const start = this.__pos; const end = start + size; const chunk = this.__buffer.slice(start, end); this.__pos = end; setTimeout(() => { this.push(chunk); if (end >= this.__buffer_len) { this.push(null); } }, this.__delay); } } _destroy(error, callback) { this.__buffer = null; callback(error); } } exports.BufferReadable = BufferReadable;