@naturalcycles/nodejs-lib
Version:
Standard library for Node.js
35 lines (34 loc) • 1.06 kB
JavaScript
import { Transform } from 'node:stream';
import { CSVWriter } from './csvWriter.js';
/**
* Transforms objects (objectMode=true) into chunks \n-terminated CSV strings (readableObjectMode=false).
*/
export function transformToCSV(opt) {
const { strict = true } = opt;
const writer = new CSVWriter(opt);
let firstRow = true;
return new Transform({
writableObjectMode: true,
readableObjectMode: false,
readableHighWaterMark: 64 * 1024,
transform(chunk, _, cb) {
try {
let s = '';
if (firstRow) {
s = writer.writeHeader() + '\n';
firstRow = false;
}
cb(null, s + writer.writeRow(chunk) + '\n');
}
catch (err) {
console.error(err);
if (strict) {
cb(err); // emit error
}
else {
cb(); // emit no error, but no result neither
}
}
},
});
}