From 36debb0eaa92a063d5995f845e3c2c5c0fa177fe Mon Sep 17 00:00:00 2001 From: SheetJS Date: Thu, 19 Sep 2024 19:44:45 -0400 Subject: [PATCH] RollupJS workaround (fixes #3219 h/t @lvzhenbo) --- bits/22_xmlutils.js | 8 +++++++- bits/88_write.js | 4 ++-- types/index.d.ts | 3 +++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/bits/22_xmlutils.js b/bits/22_xmlutils.js index fb4e5ef..3318fb3 100644 --- a/bits/22_xmlutils.js +++ b/bits/22_xmlutils.js @@ -153,7 +153,13 @@ function utf8readb(data) { function utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); } var utf8corpus = "foo bar baz\u00e2\u0098\u0083\u00f0\u009f\u008d\u00a3"; -var utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada; +var utf8read = /*#__PURE__*/(function() { + if(has_buf) { + if(utf8readc(utf8corpus) == utf8reada(utf8corpus)) return utf8readc; + if(utf8readb(utf8corpus) == utf8reada(utf8corpus)) return utf8readb; + } + return utf8reada; +})(); var utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString("binary"); } : function(orig/*:string*/)/*:string*/ { var out/*:Array*/ = [], i = 0, c = 0, d = 0; diff --git a/bits/88_write.js b/bits/88_write.js index 7ca6a42..076856a 100644 --- a/bits/88_write.js +++ b/bits/88_write.js @@ -111,7 +111,7 @@ function write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ { function writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) { reset_cp(); - check_wb(wb); + if(!opts || !opts.unsafe) check_wb(wb); var o = dup(opts||{}); if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } if(o.type == "array") { o.type = "binary"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = "array"; return s2ab(out); } @@ -120,7 +120,7 @@ function writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) { function writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) { reset_cp(); - check_wb(wb); + if(!opts || !opts.unsafe) check_wb(wb); var o = dup(opts||{}); if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } if(o.type == "array") { o.type = "binary"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = "array"; return s2ab(out); } diff --git a/types/index.d.ts b/types/index.d.ts index 5d1811f..c75f4ae 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -317,6 +317,9 @@ export interface WritingOptions extends CommonOptions { /** Record Separator ("row separator") for CSV / Text output */ RS?: string; + + /** Skip certain validity checks (NOTE: generated files may not open in Excel) */ + unsafe?: boolean; } /** Workbook Object */