30 lines
747 B
JavaScript
30 lines
747 B
JavaScript
'use strict';
|
|
|
|
const {Transform} = require('stream');
|
|
|
|
class JsonlStringer extends Transform {
|
|
static make(options) {
|
|
return new JsonlStringer(options);
|
|
}
|
|
|
|
constructor(options) {
|
|
super(Object.assign({}, options, {writableObjectMode: true, readableObjectMode: false}));
|
|
this._replacer = options && options.replacer;
|
|
}
|
|
|
|
_transform(chunk, _, callback) {
|
|
this.push(JSON.stringify(chunk, this._replacer));
|
|
this._transform = this._nextTransform;
|
|
callback(null);
|
|
}
|
|
|
|
_nextTransform(chunk, _, callback) {
|
|
this.push('\n' + JSON.stringify(chunk, this._replacer));
|
|
callback(null);
|
|
}
|
|
}
|
|
JsonlStringer.stringer = JsonlStringer.make;
|
|
JsonlStringer.make.Constructor = JsonlStringer;
|
|
|
|
module.exports = JsonlStringer;
|