ravendb
Version:
RavenDB client for Node.js
50 lines • 1.58 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Utf8Stream = void 0;
const node_stream_1 = require("node:stream");
const node_string_decoder_1 = require("node:string_decoder");
class Utf8Stream extends node_stream_1.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 node_string_decoder_1.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);
}
}
exports.Utf8Stream = Utf8Stream;
//# sourceMappingURL=Utf8Stream.js.map