UNPKG

@naturalcycles/nodejs-lib

Version:
35 lines (34 loc) 1.06 kB
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 } } }, }); }