Socket
Socket
Sign inDemoInstall

csv-parse

Package Overview
Dependencies
Maintainers
1
Versions
141
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

csv-parse - npm Package Compare versions

Comparing version 4.8.9 to 4.9.0

5

CHANGELOG.md

@@ -13,2 +13,7 @@

## Version 4.9.0
New Feature:
* delimiter: accept multiple values
## Version 4.8.9

@@ -15,0 +20,0 @@

44

lib/es5/index.js

@@ -150,11 +150,25 @@ "use strict";

if (options.delimiter === undefined || options.delimiter === null || options.delimiter === false) {
options.delimiter = Buffer.from(',');
} else if (typeof options.delimiter === 'string' && options.delimiter.length !== 0) {
options.delimiter = Buffer.from(options.delimiter);
} else if (Buffer.isBuffer(options.delimiter) && options.delimiter.length === 0 || typeof options.delimiter === 'string' && options.delimiter.length === 0 || !Buffer.isBuffer(options.delimiter) && typeof options.delimiter !== 'string') {
throw new CsvError('CSV_INVALID_OPTION_DELIMITER', ['Invalid option delimiter:', 'delimiter must be a non empty string or buffer,', "got ".concat(JSON.stringify(options.delimiter))]);
} // Normalize option `escape`
var delimiter_json = JSON.stringify(options.delimiter);
if (!Array.isArray(options.delimiter)) options.delimiter = [options.delimiter];
if (options.delimiter.length === 0) {
throw new CsvError('CSV_INVALID_OPTION_DELIMITER', ['Invalid option delimiter:', 'delimiter must be a non empty string or buffer or array of string|buffer,', "got ".concat(delimiter_json)]);
}
options.delimiter = options.delimiter.map(function (delimiter) {
if (delimiter === undefined || delimiter === null || delimiter === false) {
return Buffer.from(',');
}
if (typeof delimiter === 'string') {
delimiter = Buffer.from(delimiter);
}
if (!Buffer.isBuffer(delimiter) || delimiter.length === 0) {
throw new CsvError('CSV_INVALID_OPTION_DELIMITER', ['Invalid option delimiter:', 'delimiter must be a non empty string or buffer or array of string|buffer,', "got ".concat(delimiter_json)]);
}
return delimiter;
}); // Normalize option `escape`
if (options.escape === undefined || options.escape === null) {

@@ -1122,10 +1136,16 @@ options.escape = Buffer.from('"');

var delimiter = this.options.delimiter;
var delLength = delimiter.length;
if (delimiter[0] !== chr) return 0;
for (var i = 1; i < delLength; i++) {
if (delimiter[i] !== buf[pos + i]) return 0;
loop1: for (var i = 0; i < delimiter.length; i++) {
var del = delimiter[i];
if (del[0] === chr) {
for (var j = 1; j < del.length; j++) {
if (del[j] !== buf[pos + j]) continue loop1;
}
return del.length;
}
}
return delimiter.length;
return 0;
}

@@ -1132,0 +1152,0 @@ }, {

@@ -98,17 +98,27 @@

// Normalize option `delimiter`
if(options.delimiter === undefined || options.delimiter === null || options.delimiter === false){
options.delimiter = Buffer.from(',')
}else if(typeof options.delimiter === 'string' && options.delimiter.length !== 0){
options.delimiter = Buffer.from(options.delimiter)
}else if(
(Buffer.isBuffer(options.delimiter) && options.delimiter.length === 0) ||
(typeof options.delimiter === 'string' && options.delimiter.length === 0) ||
(!Buffer.isBuffer(options.delimiter) && typeof options.delimiter !== 'string')
){
const delimiter_json = JSON.stringify(options.delimiter)
if(!Array.isArray(options.delimiter)) options.delimiter = [options.delimiter]
if(options.delimiter.length === 0){
throw new CsvError('CSV_INVALID_OPTION_DELIMITER', [
'Invalid option delimiter:',
'delimiter must be a non empty string or buffer,',
`got ${JSON.stringify(options.delimiter)}`
'delimiter must be a non empty string or buffer or array of string|buffer,',
`got ${delimiter_json}`
])
}
options.delimiter = options.delimiter.map(function(delimiter){
if(delimiter === undefined || delimiter === null || delimiter === false){
return Buffer.from(',')
}
if(typeof delimiter === 'string'){
delimiter = Buffer.from(delimiter)
}
if( !Buffer.isBuffer(delimiter) || delimiter.length === 0){
throw new CsvError('CSV_INVALID_OPTION_DELIMITER', [
'Invalid option delimiter:',
'delimiter must be a non empty string or buffer or array of string|buffer,',
`got ${delimiter_json}`
])
}
return delimiter
})
// Normalize option `escape`

@@ -927,8 +937,12 @@ if(options.escape === undefined || options.escape === null){

const {delimiter} = this.options
const delLength = delimiter.length
if(delimiter[0] !== chr) return 0
for(let i = 1; i < delLength; i++){
if(delimiter[i] !== buf[pos+i]) return 0
loop1: for(let i = 0; i < delimiter.length; i++){
const del = delimiter[i]
if(del[0] === chr){
for(let j = 1; j < del.length; j++){
if(del[j] !== buf[pos+j]) continue loop1
}
return del.length
}
}
return delimiter.length
return 0
}

@@ -935,0 +949,0 @@ __isRecordDelimiter(chr, buf, pos){

{
"version": "4.8.9",
"version": "4.9.0",
"name": "csv-parse",

@@ -4,0 +4,0 @@ "description": "CSV parsing implementing the Node.js `stream.Transform` API",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc