Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const { EOL } = require('os');
const csv = require('@fast-csv/parse');
const CSV_STRING = ['firstName,lastName', 'bob,yukon', 'sally,yukon', 'timmy,yukon'].join(EOL);
const stream = csv
.parse({ headers: true })
.validate(data => data.firstName !== 'bob')
.on('error', error => console.error(error))
.on('data', row => console.log(`Valid [row=${JSON.stringify(row)}]`))
.on('data-invalid', (row, rowNumber) =>
console.log(`Invalid [rowNumber=${rowNumber}] [row=${JSON.stringify(row)}]`),
)
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
stream.write(CSV_STRING);
stream.end();
// Output:
// Invalid [rowNumber=1] [row={"firstName":"bob","lastName":"yukon"}]
// Valid [row={"firstName":"sally","lastName":"yukon"}]
// Valid [row={"firstName":"timmy","lastName":"yukon"}]
const { EOL } = require('os');
const csv = require('@fast-csv/parse');
const CSV_STRING = ['a1,b1', 'a2,b2'].join(EOL);
const stream = csv
.parse({ headers: ['a', 'b'] })
.on('error', error => console.error(error))
.on('data', row => console.log(row))
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
stream.write(CSV_STRING);
stream.end();
// Output:
// { a: 'a1', b: 'b1' }
// { a: 'a2', b: 'b2' }
// Parsed 2 rows
const { EOL } = require('os');
const csv = require('@fast-csv/parse');
const CSV_STRING = ['firstName,lastName', 'bob,yukon', 'sally,yukon', 'timmy,yukon'].join(EOL);
const stream = csv
.parse({ headers: true })
.validate((row, cb) => {
setImmediate(() => cb(null, row.firstName !== 'bob'));
})
.on('error', error => console.error(error))
.on('data', row => console.log(`Valid [row=${JSON.stringify(row)}]`))
.on('data-invalid', row => console.log(`Invalid [row=${JSON.stringify(row)}]`))
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
stream.write(CSV_STRING);
stream.end();
// Output:
// Invalid [row={"firstName":"bob","lastName":"yukon"}]
// Valid [row={"firstName":"sally","lastName":"yukon"}]
// Valid [row={"firstName":"timmy","lastName":"yukon"}]
const { EOL } = require('os');
const csv = require('@fast-csv/parse');
const CSV_STRING = ['a1,b1', ',', 'a2,b2', ' ,\t', ''].join(EOL);
const stream = csv
.parse({ ignoreEmpty: true })
.on('error', error => console.error(error))
.on('data', row => console.log(row))
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
stream.write(CSV_STRING);
stream.end();
// Output:
// [ 'a1', 'b1' ]
// [ 'a2', 'b2' ]
// Parsed 2 rows
const { EOL } = require('os');
const csv = require('@fast-csv/parse');
const CSV_STRING = ['firstName,lastName', 'bob,yukon', 'sally,yukon', 'timmy,yukon'].join(EOL);
const stream = csv
.parse({ headers: true })
.transform(data => ({
firstName: data.firstName.toUpperCase(),
lastName: data.lastName.toUpperCase(),
properName: `${data.firstName} ${data.lastName}`,
}))
.on('error', error => console.error(error))
.on('data', row => console.log(JSON.stringify(row)))
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
stream.write(CSV_STRING);
stream.end();
// Output:
// {"firstName":"BOB","lastName":"YUKON","properName":"bob yukon"}
// {"firstName":"SALLY","lastName":"YUKON","properName":"sally yukon"}
const rows = [
'header1,header2\n',
'col1,col1\n',
'col2,col2\n',
'col3,col3\n',
'col4,col4\n',
'col5,col5\n',
'col6,col6\n',
'col7,col7\n',
'col8,col8\n',
'col9,col9\n',
'col10,col10',
];
const stream = csv
.parse({ headers: true, maxRows: 5 })
.on('error', error => console.error(error))
.on('data', row => console.log(row))
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
rows.forEach(row => stream.write(row));
stream.end();
// Output:
// { header1: 'col1', header2: 'col1' }
// { header1: 'col2', header2: 'col2' }
// { header1: 'col3', header2: 'col3' }
// { header1: 'col4', header2: 'col4' }
// { header1: 'col5', header2: 'col5' }
// Parsed 5 rows
const csv = require('@fast-csv/parse');
const rows = [
'skip1_header1,skip1_header2\n',
'skip2_header1,skip2_header2\n',
'header1,header2\n',
'col1,col1\n',
'col2,col2\n',
'col3,col3\n',
'col4,col4\n',
];
const stream = csv
.parse({ headers: true, skipLines: 2 })
.on('error', error => console.error(error))
.on('data', row => console.log(row))
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
rows.forEach(row => stream.write(row));
stream.end();
// Output:
// { header1: 'col1', header2: 'col1' }
// { header1: 'col2', header2: 'col2' }
// { header1: 'col3', header2: 'col3' }
// { header1: 'col4', header2: 'col4' }
// Parsed 4 rows
const { EOL } = require('os');
const csv = require('@fast-csv/parse');
const CSV_STRING = ['a,b', 'a1,b1', 'a2,b2'].join(EOL);
const stream = csv
.parse({ headers: true })
.on('error', error => console.error(error))
.on('data', row => console.log(row))
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
stream.write(CSV_STRING);
stream.end();
// Output:
// { a: 'a1', b: 'b1' }
// { a: 'a2', b: 'b2' }
// Parsed 2 rows
const csv = require('@fast-csv/parse');
const rows = [
'header1,header2\n',
'col1,col1\n',
'col2,col2\n',
'col3,col3\n',
'col4,col4\n',
'col5,col5\n',
'col6,col6\n',
];
const stream = csv
.parse({ headers: true, skipRows: 2 })
.on('error', error => console.error(error))
.on('data', row => console.log(row))
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
rows.forEach(row => stream.write(row));
stream.end();
// Output:
// { header1: 'col3', header2: 'col3' }
// { header1: 'col4', header2: 'col4' }
// { header1: 'col5', header2: 'col5' }
// { header1: 'col6', header2: 'col6' }
// Parsed 4 rows
const { EOL } = require('os');
const csv = require('@fast-csv/parse');
const CSV_STRING = ['header1,header2', 'a1,b1', 'a2,b2'].join(EOL);
const stream = csv
.parse({
headers: headers => headers.map(h => h.toUpperCase()),
})
.on('error', error => console.error(error))
.on('data', row => console.log(row))
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
stream.write(CSV_STRING);
stream.end();
// Output:
// { HEADER1: 'a1', HEADER2: 'b1' }
// { HEADER1: 'a2', HEADER2: 'b2' }
// Parsed 2 rows