faster-csv
Version:
Minimal dependency, fast CSV parser and formatter using modern Node.js APIs.
22 lines (21 loc) • 677 B
JavaScript
import { createReadStream } from "node:fs";
import { createInterface } from "node:readline";
export async function* parseCSV(filePath, { headers = true, separator = "," } = {}) {
const stream = createReadStream(filePath, "utf-8");
const rl = createInterface({ input: stream });
let keys = null;
for await (const line of rl) {
const values = line.split(separator);
if (headers && !keys) {
keys = values;
}
else if (headers && keys) {
const row = {};
keys.forEach((k, i) => (row[k] = values[i] ?? ""));
yield row;
}
else {
yield values;
}
}
}