mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-17 21:26:00 +00:00
31 lines
838 B
JavaScript
31 lines
838 B
JavaScript
const fs = require('fs');
|
|
const stream = require('stream');
|
|
|
|
class StringifyStream extends stream.Transform {
|
|
constructor({ header }) {
|
|
super({ objectMode: true });
|
|
this.header = header;
|
|
this.wasHeader = false;
|
|
}
|
|
_transform(chunk, encoding, done) {
|
|
if (!this.wasHeader) {
|
|
if (this.header) this.push(JSON.stringify(chunk) + '\n');
|
|
this.wasHeader = true;
|
|
} else {
|
|
this.push(JSON.stringify(chunk) + '\n');
|
|
}
|
|
done();
|
|
}
|
|
}
|
|
|
|
async function jsonLinesWriter({ fileName, encoding = 'utf-8', header = true }) {
|
|
console.log(`Writing file ${fileName}`);
|
|
const stringify = new StringifyStream({ header });
|
|
const fileStream = fs.createWriteStream(fileName, encoding);
|
|
stringify.pipe(fileStream);
|
|
stringify['finisher'] = fileStream;
|
|
return stringify;
|
|
}
|
|
|
|
module.exports = jsonLinesWriter;
|