Skip to content

Main module

Eugene Lazutkin edited this page Apr 2, 2026 · 5 revisions

Main module

The main module creates a parser Duplex stream decorated with emit() from stream-json. This lets you listen for token types as named events instead of inspecting data objects.

Import

// ESM
import makeParser from 'stream-csv-as-json';

// CommonJS
const makeParser = require('stream-csv-as-json');

The parser factory is also available as a named export:

// ESM
import {parser} from 'stream-csv-as-json';

// CommonJS
const {parser} = require('stream-csv-as-json');

Usage

Event-based processing

import fs from 'node:fs';
import makeParser from 'stream-csv-as-json';

const stream = makeParser();

let rowCount = 0;
stream.on('startArray', () => ++rowCount);
stream.on('stringValue', val => console.log('field:', val));
stream.on('end', () => console.log(`${rowCount} rows`));

fs.createReadStream('data.csv').pipe(stream);

Using parser without emit()

If you don't need named events and prefer the data event with token objects, use parser directly — this avoids the small overhead of emit():

import {parser} from 'stream-csv-as-json';
import fs from 'node:fs';

const pipeline = fs.createReadStream('data.csv').pipe(parser.asStream());

pipeline.on('data', token => console.log(token.name, token.value));

Or use it as a function in a chain() pipeline:

import chain from 'stream-chain';

chain([fs.createReadStream('data.csv'), parser(), token => console.log(token)]);

API

make(options)

Takes optional parser options and returns a Duplex stream with emit() applied. The stream emits named events for each token type (startArray, endArray, startString, endString, stringChunk, stringValue).

make.parser

The parser factory function. Equivalent to require('stream-csv-as-json/parser.js').

Clone this wiki locally