Skip to content

Commit

Permalink
feat(csv-parse): improve record_delimiter validation
Browse files Browse the repository at this point in the history
  • Loading branch information
wdavidw committed Nov 6, 2021
1 parent 67053ab commit 67b7da8
Show file tree
Hide file tree
Showing 10 changed files with 479 additions and 167 deletions.
34 changes: 31 additions & 3 deletions packages/csv-parse/dist/cjs/index.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -5386,12 +5386,40 @@ class Parser extends Transform {
throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`);
}
// Normalize option `record_delimiter`
if(!options.record_delimiter){
if(options.record_delimiter === undefined){
options.record_delimiter = [];
}else if(!Array.isArray(options.record_delimiter)){
}else if(typeof options.record_delimiter === 'string' || isBuffer(options.record_delimiter) ){
if(options.record_delimiter.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = [options.record_delimiter];
}else if(!Array.isArray(options.record_delimiter)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = options.record_delimiter.map(function(rd){
options.record_delimiter = options.record_delimiter.map(function(rd, i){
if(typeof rd !== 'string' && ! isBuffer(rd) ){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}else if(rd.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}
if(typeof rd === 'string'){
rd = Buffer.from(rd, options.encoding);
}
Expand Down
34 changes: 31 additions & 3 deletions packages/csv-parse/dist/cjs/sync.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -5386,12 +5386,40 @@ class Parser extends Transform {
throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`);
}
// Normalize option `record_delimiter`
if(!options.record_delimiter){
if(options.record_delimiter === undefined){
options.record_delimiter = [];
}else if(!Array.isArray(options.record_delimiter)){
}else if(typeof options.record_delimiter === 'string' || isBuffer(options.record_delimiter)){
if(options.record_delimiter.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = [options.record_delimiter];
}else if(!Array.isArray(options.record_delimiter)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = options.record_delimiter.map(function(rd){
options.record_delimiter = options.record_delimiter.map(function(rd, i){
if(typeof rd !== 'string' && ! isBuffer(rd)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}else if(rd.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}
if(typeof rd === 'string'){
rd = Buffer.from(rd, options.encoding);
}
Expand Down
34 changes: 31 additions & 3 deletions packages/csv-parse/dist/esm/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5382,12 +5382,40 @@ class Parser extends Transform {
throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`);
}
// Normalize option `record_delimiter`
if(!options.record_delimiter){
if(options.record_delimiter === undefined){
options.record_delimiter = [];
}else if(!Array.isArray(options.record_delimiter)){
}else if(typeof options.record_delimiter === 'string' || isBuffer(options.record_delimiter) ){
if(options.record_delimiter.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = [options.record_delimiter];
}else if(!Array.isArray(options.record_delimiter)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = options.record_delimiter.map(function(rd){
options.record_delimiter = options.record_delimiter.map(function(rd, i){
if(typeof rd !== 'string' && ! isBuffer(rd) ){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}else if(rd.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}
if(typeof rd === 'string'){
rd = Buffer.from(rd, options.encoding);
}
Expand Down
34 changes: 31 additions & 3 deletions packages/csv-parse/dist/esm/sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -5382,12 +5382,40 @@ class Parser extends Transform {
throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`);
}
// Normalize option `record_delimiter`
if(!options.record_delimiter){
if(options.record_delimiter === undefined){
options.record_delimiter = [];
}else if(!Array.isArray(options.record_delimiter)){
}else if(typeof options.record_delimiter === 'string' || isBuffer(options.record_delimiter)){
if(options.record_delimiter.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = [options.record_delimiter];
}else if(!Array.isArray(options.record_delimiter)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = options.record_delimiter.map(function(rd){
options.record_delimiter = options.record_delimiter.map(function(rd, i){
if(typeof rd !== 'string' && ! isBuffer(rd)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}else if(rd.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}
if(typeof rd === 'string'){
rd = Buffer.from(rd, options.encoding);
}
Expand Down
34 changes: 31 additions & 3 deletions packages/csv-parse/dist/iife/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5385,12 +5385,40 @@ var csv_parse = (function (exports) {
throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`);
}
// Normalize option `record_delimiter`
if(!options.record_delimiter){
if(options.record_delimiter === undefined){
options.record_delimiter = [];
}else if(!Array.isArray(options.record_delimiter)){
}else if(typeof options.record_delimiter === 'string' || isBuffer(options.record_delimiter) ){
if(options.record_delimiter.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = [options.record_delimiter];
}else if(!Array.isArray(options.record_delimiter)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = options.record_delimiter.map(function(rd){
options.record_delimiter = options.record_delimiter.map(function(rd, i){
if(typeof rd !== 'string' && ! isBuffer(rd) ){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}else if(rd.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}
if(typeof rd === 'string'){
rd = Buffer.from(rd, options.encoding);
}
Expand Down
34 changes: 31 additions & 3 deletions packages/csv-parse/dist/iife/sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -5385,12 +5385,40 @@ var csv_parse_sync = (function (exports) {
throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`);
}
// Normalize option `record_delimiter`
if(!options.record_delimiter){
if(options.record_delimiter === undefined){
options.record_delimiter = [];
}else if(!Array.isArray(options.record_delimiter)){
}else if(typeof options.record_delimiter === 'string' || isBuffer(options.record_delimiter)){
if(options.record_delimiter.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = [options.record_delimiter];
}else if(!Array.isArray(options.record_delimiter)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = options.record_delimiter.map(function(rd){
options.record_delimiter = options.record_delimiter.map(function(rd, i){
if(typeof rd !== 'string' && ! isBuffer(rd)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}else if(rd.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}
if(typeof rd === 'string'){
rd = Buffer.from(rd, options.encoding);
}
Expand Down
34 changes: 31 additions & 3 deletions packages/csv-parse/dist/umd/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5388,12 +5388,40 @@
throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`);
}
// Normalize option `record_delimiter`
if(!options.record_delimiter){
if(options.record_delimiter === undefined){
options.record_delimiter = [];
}else if(!Array.isArray(options.record_delimiter)){
}else if(typeof options.record_delimiter === 'string' || isBuffer(options.record_delimiter) ){
if(options.record_delimiter.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = [options.record_delimiter];
}else if(!Array.isArray(options.record_delimiter)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = options.record_delimiter.map(function(rd){
options.record_delimiter = options.record_delimiter.map(function(rd, i){
if(typeof rd !== 'string' && ! isBuffer(rd) ){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}else if(rd.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}
if(typeof rd === 'string'){
rd = Buffer.from(rd, options.encoding);
}
Expand Down
34 changes: 31 additions & 3 deletions packages/csv-parse/dist/umd/sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -5388,12 +5388,40 @@
throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`);
}
// Normalize option `record_delimiter`
if(!options.record_delimiter){
if(options.record_delimiter === undefined){
options.record_delimiter = [];
}else if(!Array.isArray(options.record_delimiter)){
}else if(typeof options.record_delimiter === 'string' || isBuffer(options.record_delimiter)){
if(options.record_delimiter.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = [options.record_delimiter];
}else if(!Array.isArray(options.record_delimiter)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer,',
`got ${JSON.stringify(options.record_delimiter)}`
], options);
}
options.record_delimiter = options.record_delimiter.map(function(rd){
options.record_delimiter = options.record_delimiter.map(function(rd, i){
if(typeof rd !== 'string' && ! isBuffer(rd)){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a string, a buffer or array of string|buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}else if(rd.length === 0){
throw new CsvError('CSV_INVALID_OPTION_RECORD_DELIMITER', [
'Invalid option `record_delimiter`:',
'value must be a non empty string or buffer',
`at index ${i},`,
`got ${JSON.stringify(rd)}`
], options);
}
if(typeof rd === 'string'){
rd = Buffer.from(rd, options.encoding);
}
Expand Down
Loading

0 comments on commit 67b7da8

Please sign in to comment.