From 30f12bffe3f0e41274af5e9b3c8a75e4dba45787 Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Wed, 30 Apr 2025 17:04:16 -0700 Subject: [PATCH 1/4] docs: update readme example to use esm imports --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0bc2338..326327f 100644 --- a/README.md +++ b/README.md @@ -92,8 +92,9 @@ Bugs Bunny,22 It could then be parsed, and results shown like so: ``` js -const csv = require('csv-parser') -const fs = require('fs') +import csv from 'csv-parser'; +import fs from 'node:fs'; + const results = []; fs.createReadStream('data.csv') From cd3866abdeb63c8d07356dadd05848353155c286 Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Wed, 30 Apr 2025 17:06:35 -0700 Subject: [PATCH 2/4] docs: add async iterables example --- README.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 326327f..7a9b19f 100644 --- a/README.md +++ b/README.md @@ -92,8 +92,8 @@ Bugs Bunny,22 It could then be parsed, and results shown like so: ``` js -import csv from 'csv-parser'; import fs from 'node:fs'; +import csv from 'csv-parser'; const results = []; @@ -109,6 +109,27 @@ fs.createReadStream('data.csv') }); ``` +You can also use async iterators in modern Node.js versions: + +```js +import fs from 'node:fs'; +import csv from 'csv-parser'; + +async function readCSV(file) { + const results = []; + + for await (const data of fs.createReadStream(file).pipe(csv())) { + results.push(data); + } + + return results; +} + +readCSV('data.csv') + .then((results) => console.log(results)) + .catch((err) => console.error(err)); +``` + To specify options for `csv`, pass an object argument to the function. For example: From f3df598e0909dad3a6f14487d3135340a656d987 Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Wed, 30 Apr 2025 17:18:13 -0700 Subject: [PATCH 3/4] docs: add Array.fromAsync version --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 7a9b19f..8f36d74 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,21 @@ readCSV('data.csv') .catch((err) => console.error(err)); ``` +Or a shorter version in Node.js 22+ using [Array.fromAsync](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fromAsync): + +```js +import fs from 'node:fs'; +import csv from 'csv-parser'; + +async function readCSV(file) { + return Array.fromAsync(fs.createReadStream(file).pipe(csv())); +} + +readCSV('data.csv') + .then((results) => console.log(results)) + .catch((err) => console.error(err)); +``` + To specify options for `csv`, pass an object argument to the function. For example: From 9c98212c7d04160b18f887909bb06f2562bbbc07 Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Wed, 30 Apr 2025 17:27:03 -0700 Subject: [PATCH 4/4] docs: add node22.mjs example --- examples/node22.mjs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 examples/node22.mjs diff --git a/examples/node22.mjs b/examples/node22.mjs new file mode 100644 index 0000000..e064686 --- /dev/null +++ b/examples/node22.mjs @@ -0,0 +1,12 @@ +import fs from 'node:fs' +import path from 'node:path' + +import csv from '../index.js' + +async function readCSV (file) { + return Array.fromAsync(fs.createReadStream(file).pipe(csv())) +} + +const results = await readCSV(path.join(import.meta.dirname, '../test/fixtures/basic.csv')) + +console.log(results)