import { Readable } from 'stream' import * as csv from 'csv-parse' const DEFAULT_SEPARATOR = ';' export function csvToJSON({ file, delimiter }: { file: Buffer; delimiter?: string }): Promise { delimiter = delimiter || DEFAULT_SEPARATOR return new Promise((resolve, reject) => { const rows = [] new Readable({ read() { this.push(file) this.push(null) }, }) .pipe(csv({ delimiter, columns: true, bom: true })) .on('error', error => { reject(error) }) .on('data', row => { rows.push(row) }) .on('end', () => { resolve(rows) }) }) }