json-streaming-reader
Version:
Line delimited and concatenated JSON streaming protocol reader.
42 lines • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const stream_1 = require("stream");
const StreamJson = require("stream-json");
const JsonStreamRecordBuilder_1 = require("./JsonStreamRecordBuilder");
class JsonStreamReader extends stream_1.Transform {
constructor() {
super({
writableObjectMode: false,
readableObjectMode: true
});
this.builder = new JsonStreamRecordBuilder_1.JsonStreamRecordBuilder();
this.parser = StreamJson({
jsonStreaming: true,
streamKeys: false,
streamNumbers: false,
streamStrings: false,
streamValues: false,
});
this.parser.on('data', (chunk) => {
try {
this.builder.onData(chunk);
}
catch (e) {
this.push(null); // stop stream
this.emit('error', e);
return;
}
if (this.builder.isDone()) {
const record = this.builder.getRecord();
this.builder.purge();
// push record to stream
this.push({ record });
}
});
}
_transform(chunk, encoding, callback) {
this.parser._transform(chunk, encoding, callback);
}
}
exports.JsonStreamReader = JsonStreamReader;
//# sourceMappingURL=JsonStreamReader.js.map