UNPKG

faster-csv

Version:

Minimal dependency, fast CSV parser and formatter using modern Node.js APIs.

22 lines (21 loc) 677 B
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; } } }