UNPKG

ravendb

Version:
46 lines 1.4 kB
import { Transform } from "node:stream"; import { StringDecoder } from "node:string_decoder"; export class Utf8Stream extends Transform { _buffer; _stringDecoder; constructor(options) { super(Object.assign({}, options, { writableObjectMode: false })); this._buffer = ''; } _transform(chunk, encoding, callback) { if (typeof chunk == 'string') { this._transform = this._transformString; } else { this._stringDecoder = new StringDecoder(); this._transform = this._transformBuffer; } this._transform(chunk, encoding, callback); } _transformBuffer(chunk, _, callback) { this._buffer += this._stringDecoder.write(chunk); this._processBuffer(callback); } _transformString(chunk, _, callback) { this._buffer += chunk.toString(); this._processBuffer(callback); } _processBuffer(callback) { if (this._buffer) { this.push(this._buffer, 'utf8'); this._buffer = ''; } callback(null); } _flushInput() { // meant to be called from _flush() if (this._stringDecoder) { this._buffer += this._stringDecoder.end(); } } _flush(callback) { this._flushInput(); this._processBuffer(callback); } } //# sourceMappingURL=Utf8Stream.js.map