From ecc9617402515af8338372882c2f0f2a0f6484ae Mon Sep 17 00:00:00 2001 From: Tom Emelko Date: Tue, 18 Apr 2023 17:13:38 +0000 Subject: [PATCH 1/3] fix(csv-stringify): use switch in formula escaping --- packages/csv-stringify/dist/cjs/index.cjs | 13 +++++++++++-- packages/csv-stringify/dist/cjs/sync.cjs | 13 +++++++++++-- packages/csv-stringify/dist/esm/index.js | 13 +++++++++++-- packages/csv-stringify/dist/esm/sync.js | 13 +++++++++++-- packages/csv-stringify/dist/iife/index.js | 13 +++++++++++-- packages/csv-stringify/dist/iife/sync.js | 13 +++++++++++-- packages/csv-stringify/dist/umd/index.js | 13 +++++++++++-- packages/csv-stringify/dist/umd/sync.js | 13 +++++++++++-- packages/csv-stringify/lib/api/index.js | 13 +++++++++++-- packages/csv/dist/cjs/index.cjs | 13 +++++++++++-- packages/csv/dist/cjs/sync.cjs | 13 +++++++++++-- packages/csv/dist/esm/index.js | 13 +++++++++++-- packages/csv/dist/esm/sync.js | 13 +++++++++++-- packages/csv/dist/iife/index.js | 13 +++++++++++-- packages/csv/dist/iife/sync.js | 13 +++++++++++-- packages/csv/dist/umd/index.js | 13 +++++++++++-- packages/csv/dist/umd/sync.js | 13 +++++++++++-- 17 files changed, 187 insertions(+), 34 deletions(-) diff --git a/packages/csv-stringify/dist/cjs/index.cjs b/packages/csv-stringify/dist/cjs/index.cjs index 59356991..6703b542 100644 --- a/packages/csv-stringify/dist/cjs/index.cjs +++ b/packages/csv-stringify/dist/cjs/index.cjs @@ -475,8 +475,17 @@ const stringifier = function(options, state, info){ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv-stringify/dist/cjs/sync.cjs b/packages/csv-stringify/dist/cjs/sync.cjs index 1978e275..04c25f65 100644 --- a/packages/csv-stringify/dist/cjs/sync.cjs +++ b/packages/csv-stringify/dist/cjs/sync.cjs @@ -473,8 +473,17 @@ const stringifier = function(options, state, info){ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv-stringify/dist/esm/index.js b/packages/csv-stringify/dist/esm/index.js index fb0be81c..17aaa9eb 100644 --- a/packages/csv-stringify/dist/esm/index.js +++ b/packages/csv-stringify/dist/esm/index.js @@ -5533,8 +5533,17 @@ const stringifier = function(options, state, info){ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv-stringify/dist/esm/sync.js b/packages/csv-stringify/dist/esm/sync.js index 3954e705..dc4c42da 100644 --- a/packages/csv-stringify/dist/esm/sync.js +++ b/packages/csv-stringify/dist/esm/sync.js @@ -2443,8 +2443,17 @@ const stringifier = function(options, state, info){ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv-stringify/dist/iife/index.js b/packages/csv-stringify/dist/iife/index.js index daad9dcb..3b663827 100644 --- a/packages/csv-stringify/dist/iife/index.js +++ b/packages/csv-stringify/dist/iife/index.js @@ -5536,8 +5536,17 @@ var csv_stringify = (function (exports) { } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv-stringify/dist/iife/sync.js b/packages/csv-stringify/dist/iife/sync.js index a36da0d9..d74bf5c8 100644 --- a/packages/csv-stringify/dist/iife/sync.js +++ b/packages/csv-stringify/dist/iife/sync.js @@ -2446,8 +2446,17 @@ var csv_stringify_sync = (function (exports) { } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv-stringify/dist/umd/index.js b/packages/csv-stringify/dist/umd/index.js index efed7e3b..fb080cd3 100644 --- a/packages/csv-stringify/dist/umd/index.js +++ b/packages/csv-stringify/dist/umd/index.js @@ -5539,8 +5539,17 @@ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv-stringify/dist/umd/sync.js b/packages/csv-stringify/dist/umd/sync.js index c995979e..4122ab53 100644 --- a/packages/csv-stringify/dist/umd/sync.js +++ b/packages/csv-stringify/dist/umd/sync.js @@ -2449,8 +2449,17 @@ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv-stringify/lib/api/index.js b/packages/csv-stringify/lib/api/index.js index fa9d5664..399ba84c 100644 --- a/packages/csv-stringify/lib/api/index.js +++ b/packages/csv-stringify/lib/api/index.js @@ -158,8 +158,17 @@ const stringifier = function(options, state, info){ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv/dist/cjs/index.cjs b/packages/csv/dist/cjs/index.cjs index 8dbf7e0e..efdaeed4 100644 --- a/packages/csv/dist/cjs/index.cjs +++ b/packages/csv/dist/cjs/index.cjs @@ -2271,8 +2271,17 @@ const stringifier = function(options, state, info){ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv/dist/cjs/sync.cjs b/packages/csv/dist/cjs/sync.cjs index ab358cf4..0949324d 100644 --- a/packages/csv/dist/cjs/sync.cjs +++ b/packages/csv/dist/cjs/sync.cjs @@ -2048,8 +2048,17 @@ const stringifier = function(options, state, info){ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv/dist/esm/index.js b/packages/csv/dist/esm/index.js index 865ba570..5263fec5 100644 --- a/packages/csv/dist/esm/index.js +++ b/packages/csv/dist/esm/index.js @@ -7398,8 +7398,17 @@ const stringifier = function(options, state, info){ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv/dist/esm/sync.js b/packages/csv/dist/esm/sync.js index f36c4bf1..dc174967 100644 --- a/packages/csv/dist/esm/sync.js +++ b/packages/csv/dist/esm/sync.js @@ -7175,8 +7175,17 @@ const stringifier = function(options, state, info){ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv/dist/iife/index.js b/packages/csv/dist/iife/index.js index 8579af30..43b54c7c 100644 --- a/packages/csv/dist/iife/index.js +++ b/packages/csv/dist/iife/index.js @@ -7401,8 +7401,17 @@ var csv = (function (exports) { } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv/dist/iife/sync.js b/packages/csv/dist/iife/sync.js index 5718c67f..92e4ca21 100644 --- a/packages/csv/dist/iife/sync.js +++ b/packages/csv/dist/iife/sync.js @@ -7178,8 +7178,17 @@ var csv_sync = (function (exports) { } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv/dist/umd/index.js b/packages/csv/dist/umd/index.js index 841c7e67..3ba5f999 100644 --- a/packages/csv/dist/umd/index.js +++ b/packages/csv/dist/umd/index.js @@ -7404,8 +7404,17 @@ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ diff --git a/packages/csv/dist/umd/sync.js b/packages/csv/dist/umd/sync.js index 51b9584d..7f7e1c84 100644 --- a/packages/csv/dist/umd/sync.js +++ b/packages/csv/dist/umd/sync.js @@ -7181,8 +7181,17 @@ } }); quotedMatch = quotedMatch && quotedMatch.length > 0; - if (escape_formulas && ['=', '+', '-', '@', '\t', '\r'].includes(value[0])) { - value = `'${value}`; + if (escape_formulas) { + switch (value[0]) { + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + value = `'${value}`; + break; + } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; if(shouldQuote === true && containsEscape === true){ From 741f46e833c48d10c2b527719058c546bb295d92 Mon Sep 17 00:00:00 2001 From: Tom Emelko Date: Tue, 18 Apr 2023 17:49:09 +0000 Subject: [PATCH 2/3] fix(csv-stringify): add unicode character equivalents in formula sanitization --- packages/csv-stringify/dist/cjs/index.cjs | 4 ++++ packages/csv-stringify/dist/cjs/sync.cjs | 4 ++++ packages/csv-stringify/dist/esm/index.js | 20 ++++++++++++-------- packages/csv-stringify/dist/esm/sync.js | 4 ++++ packages/csv-stringify/dist/iife/index.js | 20 ++++++++++++-------- packages/csv-stringify/dist/iife/sync.js | 4 ++++ packages/csv-stringify/dist/umd/index.js | 20 ++++++++++++-------- packages/csv-stringify/dist/umd/sync.js | 4 ++++ packages/csv-stringify/lib/api/index.js | 4 ++++ packages/csv/dist/cjs/index.cjs | 4 ++++ packages/csv/dist/cjs/sync.cjs | 4 ++++ packages/csv/dist/esm/index.js | 4 ++++ packages/csv/dist/esm/sync.js | 4 ++++ packages/csv/dist/iife/index.js | 4 ++++ packages/csv/dist/iife/sync.js | 4 ++++ packages/csv/dist/umd/index.js | 4 ++++ packages/csv/dist/umd/sync.js | 4 ++++ 17 files changed, 92 insertions(+), 24 deletions(-) diff --git a/packages/csv-stringify/dist/cjs/index.cjs b/packages/csv-stringify/dist/cjs/index.cjs index 6703b542..d4769eef 100644 --- a/packages/csv-stringify/dist/cjs/index.cjs +++ b/packages/csv-stringify/dist/cjs/index.cjs @@ -483,6 +483,10 @@ const stringifier = function(options, state, info){ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv-stringify/dist/cjs/sync.cjs b/packages/csv-stringify/dist/cjs/sync.cjs index 04c25f65..a0d83508 100644 --- a/packages/csv-stringify/dist/cjs/sync.cjs +++ b/packages/csv-stringify/dist/cjs/sync.cjs @@ -481,6 +481,10 @@ const stringifier = function(options, state, info){ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv-stringify/dist/esm/index.js b/packages/csv-stringify/dist/esm/index.js index 17aaa9eb..96ca7942 100644 --- a/packages/csv-stringify/dist/esm/index.js +++ b/packages/csv-stringify/dist/esm/index.js @@ -5535,14 +5535,18 @@ const stringifier = function(options, state, info){ quotedMatch = quotedMatch && quotedMatch.length > 0; if (escape_formulas) { switch (value[0]) { - case '=': - case '+': - case '-': - case '@': - case '\t': - case '\r': - value = `'${value}`; - break; + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' + value = `'${value}`; + break; } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; diff --git a/packages/csv-stringify/dist/esm/sync.js b/packages/csv-stringify/dist/esm/sync.js index dc4c42da..a0f795c7 100644 --- a/packages/csv-stringify/dist/esm/sync.js +++ b/packages/csv-stringify/dist/esm/sync.js @@ -2451,6 +2451,10 @@ const stringifier = function(options, state, info){ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv-stringify/dist/iife/index.js b/packages/csv-stringify/dist/iife/index.js index 3b663827..6dc014fb 100644 --- a/packages/csv-stringify/dist/iife/index.js +++ b/packages/csv-stringify/dist/iife/index.js @@ -5538,14 +5538,18 @@ var csv_stringify = (function (exports) { quotedMatch = quotedMatch && quotedMatch.length > 0; if (escape_formulas) { switch (value[0]) { - case '=': - case '+': - case '-': - case '@': - case '\t': - case '\r': - value = `'${value}`; - break; + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' + value = `'${value}`; + break; } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; diff --git a/packages/csv-stringify/dist/iife/sync.js b/packages/csv-stringify/dist/iife/sync.js index d74bf5c8..5d261a4d 100644 --- a/packages/csv-stringify/dist/iife/sync.js +++ b/packages/csv-stringify/dist/iife/sync.js @@ -2454,6 +2454,10 @@ var csv_stringify_sync = (function (exports) { case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv-stringify/dist/umd/index.js b/packages/csv-stringify/dist/umd/index.js index fb080cd3..c0693f95 100644 --- a/packages/csv-stringify/dist/umd/index.js +++ b/packages/csv-stringify/dist/umd/index.js @@ -5541,14 +5541,18 @@ quotedMatch = quotedMatch && quotedMatch.length > 0; if (escape_formulas) { switch (value[0]) { - case '=': - case '+': - case '-': - case '@': - case '\t': - case '\r': - value = `'${value}`; - break; + case '=': + case '+': + case '-': + case '@': + case '\t': + case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' + value = `'${value}`; + break; } } const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch; diff --git a/packages/csv-stringify/dist/umd/sync.js b/packages/csv-stringify/dist/umd/sync.js index 4122ab53..a617683a 100644 --- a/packages/csv-stringify/dist/umd/sync.js +++ b/packages/csv-stringify/dist/umd/sync.js @@ -2457,6 +2457,10 @@ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv-stringify/lib/api/index.js b/packages/csv-stringify/lib/api/index.js index 399ba84c..80c9f36b 100644 --- a/packages/csv-stringify/lib/api/index.js +++ b/packages/csv-stringify/lib/api/index.js @@ -166,6 +166,10 @@ const stringifier = function(options, state, info){ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv/dist/cjs/index.cjs b/packages/csv/dist/cjs/index.cjs index efdaeed4..54b6d0f0 100644 --- a/packages/csv/dist/cjs/index.cjs +++ b/packages/csv/dist/cjs/index.cjs @@ -2279,6 +2279,10 @@ const stringifier = function(options, state, info){ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv/dist/cjs/sync.cjs b/packages/csv/dist/cjs/sync.cjs index 0949324d..01772180 100644 --- a/packages/csv/dist/cjs/sync.cjs +++ b/packages/csv/dist/cjs/sync.cjs @@ -2056,6 +2056,10 @@ const stringifier = function(options, state, info){ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv/dist/esm/index.js b/packages/csv/dist/esm/index.js index 5263fec5..e0d52851 100644 --- a/packages/csv/dist/esm/index.js +++ b/packages/csv/dist/esm/index.js @@ -7406,6 +7406,10 @@ const stringifier = function(options, state, info){ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv/dist/esm/sync.js b/packages/csv/dist/esm/sync.js index dc174967..863d443a 100644 --- a/packages/csv/dist/esm/sync.js +++ b/packages/csv/dist/esm/sync.js @@ -7183,6 +7183,10 @@ const stringifier = function(options, state, info){ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv/dist/iife/index.js b/packages/csv/dist/iife/index.js index 43b54c7c..d4a39ff3 100644 --- a/packages/csv/dist/iife/index.js +++ b/packages/csv/dist/iife/index.js @@ -7409,6 +7409,10 @@ var csv = (function (exports) { case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv/dist/iife/sync.js b/packages/csv/dist/iife/sync.js index 92e4ca21..e19d3fd6 100644 --- a/packages/csv/dist/iife/sync.js +++ b/packages/csv/dist/iife/sync.js @@ -7186,6 +7186,10 @@ var csv_sync = (function (exports) { case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv/dist/umd/index.js b/packages/csv/dist/umd/index.js index 3ba5f999..856e10fb 100644 --- a/packages/csv/dist/umd/index.js +++ b/packages/csv/dist/umd/index.js @@ -7412,6 +7412,10 @@ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } diff --git a/packages/csv/dist/umd/sync.js b/packages/csv/dist/umd/sync.js index 7f7e1c84..9a4ba5db 100644 --- a/packages/csv/dist/umd/sync.js +++ b/packages/csv/dist/umd/sync.js @@ -7189,6 +7189,10 @@ case '@': case '\t': case '\r': + case '\uFF1D': // Unicode '=' + case '\uFF0B': // Unicode '+' + case '\uFF0D': // Unicode '-' + case '\uFF20': // Unicode '@' value = `'${value}`; break; } From 754cf81917f45d2145c8a317e88cfd6c12bffa66 Mon Sep 17 00:00:00 2001 From: Tom Emelko Date: Fri, 28 Apr 2023 15:53:12 +0000 Subject: [PATCH 3/3] chore: update tests --- .../csv-stringify/test/option.escape_formulas.coffee | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/csv-stringify/test/option.escape_formulas.coffee b/packages/csv-stringify/test/option.escape_formulas.coffee index f7058f3b..fd606031 100644 --- a/packages/csv-stringify/test/option.escape_formulas.coffee +++ b/packages/csv-stringify/test/option.escape_formulas.coffee @@ -19,7 +19,7 @@ describe 'Option `escape_formulas`', -> code: 'CSV_OPTION_ESCAPE_FORMULAS_INVALID_TYPE' message: 'option `escape_formulas` must be a boolean, got "invalid"' - it 'escape =, +, -, @, \\t, \\r signs', (next) -> + it 'escape =, +, -, @, \\t, \\r and unicode equivalent signs', (next) -> stringify [ [ '=a',1] [ '+b',2] @@ -28,6 +28,11 @@ describe 'Option `escape_formulas`', -> [ '\te',5] [ '\rf',6] [ 'g',7] + [ '\uFF1Dh',8] + [ '\uFF0Bi',9] + [ '\uFF0Dj',10] + [ '\uFF20k',11] + [ '\uFF0Cl',12] # \uFF0C is 'full width comma' and should not be escaped ], escape_formulas: true, eof: false, (err, data) -> return next err if err data.should.eql """ @@ -38,6 +43,11 @@ describe 'Option `escape_formulas`', -> '\te,5 '\rf,6 g,7 + '\uFF1Dh,8 + '\uFF0Bi,9 + '\uFF0Dj,10 + '\uFF20k,11 + \uFF0Cl,12 """ next()