read-excel-file 5.5.0 → 5.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -1
- package/bundle/read-excel-file.min.js +1 -1
- package/bundle/read-excel-file.min.js.map +1 -1
- package/commonjs/read/unpackXlsxFileBrowser.js +20 -15
- package/commonjs/read/unpackXlsxFileBrowser.js.map +1 -1
- package/commonjs/read/unpackXlsxFileNode.js +8 -2
- package/commonjs/read/unpackXlsxFileNode.js.map +1 -1
- package/index.d.ts +1 -1
- package/modules/read/unpackXlsxFileBrowser.js +20 -15
- package/modules/read/unpackXlsxFileBrowser.js.map +1 -1
- package/modules/read/unpackXlsxFileNode.js +2 -2
- package/modules/read/unpackXlsxFileNode.js.map +1 -1
- package/node/index.d.ts +1 -1
- package/package.json +1 -1
- package/web-worker/index.d.ts +1 -1
|
@@ -9,23 +9,28 @@ var _fflate = require("fflate");
|
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Reads XLSX file in a browser.
|
|
12
|
-
* @param {File}
|
|
12
|
+
* @param {(File|ArrayBuffer)} input - A `File` or an `ArrayBuffer`.
|
|
13
13
|
* @return {Promise} Resolves to an object holding XLSX file entries.
|
|
14
14
|
*/
|
|
15
|
-
function unpackXlsxFile(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
15
|
+
function unpackXlsxFile(input) {
|
|
16
|
+
if (input instanceof File) {
|
|
17
|
+
return input.arrayBuffer().then(unpackXlsxArrayBuffer);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return unpackXlsxArrayBuffer(input);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function unpackXlsxArrayBuffer(arrayBuffer) {
|
|
24
|
+
var archive = new Uint8Array(arrayBuffer);
|
|
25
|
+
var contents = (0, _fflate.unzipSync)(archive);
|
|
26
|
+
return getContents(contents); // return new Promise((resolve, reject) => {
|
|
27
|
+
// unzip(archive, (error, contents) => {
|
|
28
|
+
// if (error) {
|
|
29
|
+
// return reject(error)
|
|
30
|
+
// }
|
|
31
|
+
// return resolve(getContents(contents))
|
|
32
|
+
// })
|
|
33
|
+
// })
|
|
29
34
|
}
|
|
30
35
|
|
|
31
36
|
function getContents(contents) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unpackXlsxFileBrowser.js","names":["unpackXlsxFile","
|
|
1
|
+
{"version":3,"file":"unpackXlsxFileBrowser.js","names":["unpackXlsxFile","input","File","arrayBuffer","then","unpackXlsxArrayBuffer","archive","Uint8Array","contents","unzipSync","getContents","unzippedFiles","Object","keys","key","strFromU8"],"sources":["../../source/read/unpackXlsxFileBrowser.js"],"sourcesContent":["import { unzipSync, strFromU8 } from 'fflate'\r\n\r\n/**\r\n * Reads XLSX file in a browser.\r\n * @param {(File|ArrayBuffer)} input - A `File` or an `ArrayBuffer`.\r\n * @return {Promise} Resolves to an object holding XLSX file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n\tif (input instanceof File) {\r\n\t\treturn input.arrayBuffer().then(unpackXlsxArrayBuffer)\r\n\t}\r\n\treturn unpackXlsxArrayBuffer(input)\r\n}\r\n\r\nfunction unpackXlsxArrayBuffer(arrayBuffer) {\r\n\tconst archive = new Uint8Array(arrayBuffer)\r\n\tconst contents = unzipSync(archive)\r\n\treturn getContents(contents)\r\n\t// return new Promise((resolve, reject) => {\r\n\t// \tunzip(archive, (error, contents) => {\r\n\t// \t\tif (error) {\r\n\t// \t\t\treturn reject(error)\r\n\t// \t\t}\r\n\t// \t\treturn resolve(getContents(contents))\r\n\t// \t})\r\n\t// })\r\n}\r\n\r\nfunction getContents(contents) {\r\n\tconst unzippedFiles = []\r\n\tfor (const key of Object.keys(contents)) {\r\n\t\tunzippedFiles[key] = strFromU8(contents[key])\r\n\t}\r\n\treturn unzippedFiles\r\n}"],"mappings":";;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACe,SAASA,cAAT,CAAwBC,KAAxB,EAA+B;EAC7C,IAAIA,KAAK,YAAYC,IAArB,EAA2B;IAC1B,OAAOD,KAAK,CAACE,WAAN,GAAoBC,IAApB,CAAyBC,qBAAzB,CAAP;EACA;;EACD,OAAOA,qBAAqB,CAACJ,KAAD,CAA5B;AACA;;AAED,SAASI,qBAAT,CAA+BF,WAA/B,EAA4C;EAC3C,IAAMG,OAAO,GAAG,IAAIC,UAAJ,CAAeJ,WAAf,CAAhB;EACA,IAAMK,QAAQ,GAAG,IAAAC,iBAAA,EAAUH,OAAV,CAAjB;EACA,OAAOI,WAAW,CAACF,QAAD,CAAlB,CAH2C,CAI3C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;;AAED,SAASE,WAAT,CAAqBF,QAArB,EAA+B;EAC9B,IAAMG,aAAa,GAAG,EAAtB;;EACA,gCAAkBC,MAAM,CAACC,IAAP,CAAYL,QAAZ,CAAlB,kCAAyC;IAApC,IAAMM,GAAG,mBAAT;IACJH,aAAa,CAACG,GAAD,CAAb,GAAqB,IAAAC,iBAAA,EAAUP,QAAQ,CAACM,GAAD,CAAlB,CAArB;EACA;;EACD,OAAOH,aAAP;AACA"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -7,10 +9,14 @@ exports["default"] = unpackXlsxFile;
|
|
|
7
9
|
|
|
8
10
|
var _fs = _interopRequireDefault(require("fs"));
|
|
9
11
|
|
|
10
|
-
var _stream =
|
|
12
|
+
var _stream = _interopRequireWildcard(require("stream"));
|
|
11
13
|
|
|
12
14
|
var _unzipper = _interopRequireDefault(require("unzipper"));
|
|
13
15
|
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
14
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
15
21
|
|
|
16
22
|
/**
|
|
@@ -23,7 +29,7 @@ function unpackXlsxFile(input) {
|
|
|
23
29
|
// The `entries` object stores the files
|
|
24
30
|
// and their contents from this XLSX zip archive.
|
|
25
31
|
var entries = {};
|
|
26
|
-
var stream = input instanceof _stream["default"] ? input : _fs["default"].createReadStream(input);
|
|
32
|
+
var stream = input instanceof _stream["default"] ? input : input instanceof Buffer ? _stream.Readable.from(input) : _fs["default"].createReadStream(input);
|
|
27
33
|
return new Promise(function (resolve, reject) {
|
|
28
34
|
var entryPromises = [];
|
|
29
35
|
stream // This first "error" listener is for the original stream errors.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unpackXlsxFileNode.js","names":["unpackXlsxFile","input","entries","stream","Stream","fs","createReadStream","Promise","resolve","reject","entryPromises","on","pipe","unzip","Parse","all","then","entry","contents","push","setEncoding","data","toString","path"],"sources":["../../source/read/unpackXlsxFileNode.js"],"sourcesContent":["import fs from 'fs'\r\nimport Stream from 'stream'\r\nimport unzip from 'unzipper'\r\n\r\n/**\r\n * Reads XLSX file in Node.js.\r\n * @param {(string|Stream)} input - A Node.js readable stream or a path to a file.\r\n * @return {Promise} Resolves to an object holding XLSX file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n // XLSX file is a zip archive.\r\n // The `entries` object stores the files\r\n // and their contents from this XLSX zip archive.\r\n const entries = {}\r\n\r\n const stream = input instanceof Stream ? input
|
|
1
|
+
{"version":3,"file":"unpackXlsxFileNode.js","names":["unpackXlsxFile","input","entries","stream","Stream","Buffer","Readable","from","fs","createReadStream","Promise","resolve","reject","entryPromises","on","pipe","unzip","Parse","all","then","entry","contents","push","setEncoding","data","toString","path"],"sources":["../../source/read/unpackXlsxFileNode.js"],"sourcesContent":["import fs from 'fs'\r\nimport Stream, { Readable } from 'stream'\r\nimport unzip from 'unzipper'\r\n\r\n/**\r\n * Reads XLSX file in Node.js.\r\n * @param {(string|Stream)} input - A Node.js readable stream or a path to a file.\r\n * @return {Promise} Resolves to an object holding XLSX file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n // XLSX file is a zip archive.\r\n // The `entries` object stores the files\r\n // and their contents from this XLSX zip archive.\r\n const entries = {}\r\n\r\n const stream = input instanceof Stream\r\n ? input\r\n : (\r\n input instanceof Buffer\r\n ? Readable.from(input)\r\n : fs.createReadStream(input)\r\n )\r\n\r\n return new Promise((resolve, reject) => {\r\n const entryPromises = []\r\n\r\n stream\r\n // This first \"error\" listener is for the original stream errors.\r\n .on('error', reject)\r\n .pipe(unzip.Parse())\r\n // This second \"error\" listener is for the unzip stream errors.\r\n .on('error', reject)\r\n .on('close', () => Promise.all(entryPromises).then(() => resolve(entries)))\r\n .on('entry', (entry) => {\r\n let contents = ''\r\n // To ignore an entry: `entry.autodrain()`.\r\n entryPromises.push(new Promise((resolve) => {\r\n // It's not clear what encoding are the files inside XLSX in.\r\n // https://stackoverflow.com/questions/45194771/are-xlsx-files-utf-8-encoded-by-definition\r\n // For example, for XML files, encoding is specified at the top node:\r\n // `<?xml version=\"1.0\" encoding=\"UTF-8\"/>`.\r\n //\r\n // `unzipper` supports setting encoding when reading an `entry`.\r\n // https://github.com/ZJONSSON/node-unzipper/issues/35\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/54\r\n //\r\n // If the `entry.setEncoding('utf8')` line would be commented out,\r\n // there's a `nonAsciiCharacterEncoding` test that wouldn't pass.\r\n //\r\n entry.setEncoding('utf8')\r\n //\r\n entry\r\n .on('data', data => contents += data.toString())\r\n .on('end', () => resolve(entries[entry.path] = contents))\r\n }))\r\n })\r\n })\r\n}\r\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACe,SAASA,cAAT,CAAwBC,KAAxB,EAA+B;EAC5C;EACA;EACA;EACA,IAAMC,OAAO,GAAG,EAAhB;EAEA,IAAMC,MAAM,GAAGF,KAAK,YAAYG,kBAAjB,GACXH,KADW,GAGXA,KAAK,YAAYI,MAAjB,GACIC,gBAAA,CAASC,IAAT,CAAcN,KAAd,CADJ,GAEIO,cAAA,CAAGC,gBAAH,CAAoBR,KAApB,CALR;EAQA,OAAO,IAAIS,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;IACtC,IAAMC,aAAa,GAAG,EAAtB;IAEAV,MAAM,CACJ;IADI,CAEHW,EAFH,CAEM,OAFN,EAEeF,MAFf,EAGGG,IAHH,CAGQC,oBAAA,CAAMC,KAAN,EAHR,EAIE;IAJF,CAKGH,EALH,CAKM,OALN,EAKeF,MALf,EAMGE,EANH,CAMM,OANN,EAMe;MAAA,OAAOJ,OAAO,CAACQ,GAAR,CAAYL,aAAZ,EAA2BM,IAA3B,CAAgC;QAAA,OAAMR,OAAO,CAACT,OAAD,CAAb;MAAA,CAAhC,CAAP;IAAA,CANf,EAOGY,EAPH,CAOM,OAPN,EAOe,UAACM,KAAD,EAAW;MACtB,IAAIC,QAAQ,GAAG,EAAf,CADsB,CAEtB;;MACAR,aAAa,CAACS,IAAd,CAAmB,IAAIZ,OAAJ,CAAY,UAACC,OAAD,EAAa;QAC1C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACAS,KAAK,CAACG,WAAN,CAAkB,MAAlB,EAb0C,CAc1C;;QACAH,KAAK,CACFN,EADH,CACM,MADN,EACc,UAAAU,IAAI;UAAA,OAAIH,QAAQ,IAAIG,IAAI,CAACC,QAAL,EAAhB;QAAA,CADlB,EAEGX,EAFH,CAEM,KAFN,EAEa;UAAA,OAAMH,OAAO,CAACT,OAAO,CAACkB,KAAK,CAACM,IAAP,CAAP,GAAsBL,QAAvB,CAAb;QAAA,CAFb;MAGD,CAlBkB,CAAnB;IAmBD,CA7BH;EA8BD,CAjCM,CAAP;AAkCD"}
|
package/index.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export {
|
|
|
17
17
|
|
|
18
18
|
export function parseExcelDate(excelSerialDate: number) : typeof Date;
|
|
19
19
|
|
|
20
|
-
type Input = File;
|
|
20
|
+
type Input = File | ArrayBuffer;
|
|
21
21
|
|
|
22
22
|
export function readXlsxFile<T extends object>(input: Input, options: ParseWithSchemaOptions<T>) : Promise<ParsedObjectsResult<T>>;
|
|
23
23
|
export function readXlsxFile<T extends object>(input: Input, options: ParseWithMapOptions) : Promise<ParsedObjectsResult<T>>;
|
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
import { unzipSync, strFromU8 } from 'fflate';
|
|
2
2
|
/**
|
|
3
3
|
* Reads XLSX file in a browser.
|
|
4
|
-
* @param {File}
|
|
4
|
+
* @param {(File|ArrayBuffer)} input - A `File` or an `ArrayBuffer`.
|
|
5
5
|
* @return {Promise} Resolves to an object holding XLSX file entries.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
export default function unpackXlsxFile(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
8
|
+
export default function unpackXlsxFile(input) {
|
|
9
|
+
if (input instanceof File) {
|
|
10
|
+
return input.arrayBuffer().then(unpackXlsxArrayBuffer);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return unpackXlsxArrayBuffer(input);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function unpackXlsxArrayBuffer(arrayBuffer) {
|
|
17
|
+
var archive = new Uint8Array(arrayBuffer);
|
|
18
|
+
var contents = unzipSync(archive);
|
|
19
|
+
return getContents(contents); // return new Promise((resolve, reject) => {
|
|
20
|
+
// unzip(archive, (error, contents) => {
|
|
21
|
+
// if (error) {
|
|
22
|
+
// return reject(error)
|
|
23
|
+
// }
|
|
24
|
+
// return resolve(getContents(contents))
|
|
25
|
+
// })
|
|
26
|
+
// })
|
|
22
27
|
}
|
|
23
28
|
|
|
24
29
|
function getContents(contents) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unpackXlsxFileBrowser.js","names":["unzipSync","strFromU8","unpackXlsxFile","
|
|
1
|
+
{"version":3,"file":"unpackXlsxFileBrowser.js","names":["unzipSync","strFromU8","unpackXlsxFile","input","File","arrayBuffer","then","unpackXlsxArrayBuffer","archive","Uint8Array","contents","getContents","unzippedFiles","Object","keys","key"],"sources":["../../source/read/unpackXlsxFileBrowser.js"],"sourcesContent":["import { unzipSync, strFromU8 } from 'fflate'\r\n\r\n/**\r\n * Reads XLSX file in a browser.\r\n * @param {(File|ArrayBuffer)} input - A `File` or an `ArrayBuffer`.\r\n * @return {Promise} Resolves to an object holding XLSX file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n\tif (input instanceof File) {\r\n\t\treturn input.arrayBuffer().then(unpackXlsxArrayBuffer)\r\n\t}\r\n\treturn unpackXlsxArrayBuffer(input)\r\n}\r\n\r\nfunction unpackXlsxArrayBuffer(arrayBuffer) {\r\n\tconst archive = new Uint8Array(arrayBuffer)\r\n\tconst contents = unzipSync(archive)\r\n\treturn getContents(contents)\r\n\t// return new Promise((resolve, reject) => {\r\n\t// \tunzip(archive, (error, contents) => {\r\n\t// \t\tif (error) {\r\n\t// \t\t\treturn reject(error)\r\n\t// \t\t}\r\n\t// \t\treturn resolve(getContents(contents))\r\n\t// \t})\r\n\t// })\r\n}\r\n\r\nfunction getContents(contents) {\r\n\tconst unzippedFiles = []\r\n\tfor (const key of Object.keys(contents)) {\r\n\t\tunzippedFiles[key] = strFromU8(contents[key])\r\n\t}\r\n\treturn unzippedFiles\r\n}"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,SAApB,QAAqC,QAArC;AAEA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,cAAT,CAAwBC,KAAxB,EAA+B;EAC7C,IAAIA,KAAK,YAAYC,IAArB,EAA2B;IAC1B,OAAOD,KAAK,CAACE,WAAN,GAAoBC,IAApB,CAAyBC,qBAAzB,CAAP;EACA;;EACD,OAAOA,qBAAqB,CAACJ,KAAD,CAA5B;AACA;;AAED,SAASI,qBAAT,CAA+BF,WAA/B,EAA4C;EAC3C,IAAMG,OAAO,GAAG,IAAIC,UAAJ,CAAeJ,WAAf,CAAhB;EACA,IAAMK,QAAQ,GAAGV,SAAS,CAACQ,OAAD,CAA1B;EACA,OAAOG,WAAW,CAACD,QAAD,CAAlB,CAH2C,CAI3C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;;AAED,SAASC,WAAT,CAAqBD,QAArB,EAA+B;EAC9B,IAAME,aAAa,GAAG,EAAtB;;EACA,gCAAkBC,MAAM,CAACC,IAAP,CAAYJ,QAAZ,CAAlB,kCAAyC;IAApC,IAAMK,GAAG,mBAAT;IACJH,aAAa,CAACG,GAAD,CAAb,GAAqBd,SAAS,CAACS,QAAQ,CAACK,GAAD,CAAT,CAA9B;EACA;;EACD,OAAOH,aAAP;AACA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
|
-
import Stream from 'stream';
|
|
2
|
+
import Stream, { Readable } from 'stream';
|
|
3
3
|
import unzip from 'unzipper';
|
|
4
4
|
/**
|
|
5
5
|
* Reads XLSX file in Node.js.
|
|
@@ -12,7 +12,7 @@ export default function unpackXlsxFile(input) {
|
|
|
12
12
|
// The `entries` object stores the files
|
|
13
13
|
// and their contents from this XLSX zip archive.
|
|
14
14
|
var entries = {};
|
|
15
|
-
var stream = input instanceof Stream ? input : fs.createReadStream(input);
|
|
15
|
+
var stream = input instanceof Stream ? input : input instanceof Buffer ? Readable.from(input) : fs.createReadStream(input);
|
|
16
16
|
return new Promise(function (resolve, reject) {
|
|
17
17
|
var entryPromises = [];
|
|
18
18
|
stream // This first "error" listener is for the original stream errors.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unpackXlsxFileNode.js","names":["fs","Stream","unzip","unpackXlsxFile","input","entries","stream","createReadStream","Promise","resolve","reject","entryPromises","on","pipe","Parse","all","then","entry","contents","push","setEncoding","data","toString","path"],"sources":["../../source/read/unpackXlsxFileNode.js"],"sourcesContent":["import fs from 'fs'\r\nimport Stream from 'stream'\r\nimport unzip from 'unzipper'\r\n\r\n/**\r\n * Reads XLSX file in Node.js.\r\n * @param {(string|Stream)} input - A Node.js readable stream or a path to a file.\r\n * @return {Promise} Resolves to an object holding XLSX file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n // XLSX file is a zip archive.\r\n // The `entries` object stores the files\r\n // and their contents from this XLSX zip archive.\r\n const entries = {}\r\n\r\n const stream = input instanceof Stream ? input
|
|
1
|
+
{"version":3,"file":"unpackXlsxFileNode.js","names":["fs","Stream","Readable","unzip","unpackXlsxFile","input","entries","stream","Buffer","from","createReadStream","Promise","resolve","reject","entryPromises","on","pipe","Parse","all","then","entry","contents","push","setEncoding","data","toString","path"],"sources":["../../source/read/unpackXlsxFileNode.js"],"sourcesContent":["import fs from 'fs'\r\nimport Stream, { Readable } from 'stream'\r\nimport unzip from 'unzipper'\r\n\r\n/**\r\n * Reads XLSX file in Node.js.\r\n * @param {(string|Stream)} input - A Node.js readable stream or a path to a file.\r\n * @return {Promise} Resolves to an object holding XLSX file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n // XLSX file is a zip archive.\r\n // The `entries` object stores the files\r\n // and their contents from this XLSX zip archive.\r\n const entries = {}\r\n\r\n const stream = input instanceof Stream\r\n ? input\r\n : (\r\n input instanceof Buffer\r\n ? Readable.from(input)\r\n : fs.createReadStream(input)\r\n )\r\n\r\n return new Promise((resolve, reject) => {\r\n const entryPromises = []\r\n\r\n stream\r\n // This first \"error\" listener is for the original stream errors.\r\n .on('error', reject)\r\n .pipe(unzip.Parse())\r\n // This second \"error\" listener is for the unzip stream errors.\r\n .on('error', reject)\r\n .on('close', () => Promise.all(entryPromises).then(() => resolve(entries)))\r\n .on('entry', (entry) => {\r\n let contents = ''\r\n // To ignore an entry: `entry.autodrain()`.\r\n entryPromises.push(new Promise((resolve) => {\r\n // It's not clear what encoding are the files inside XLSX in.\r\n // https://stackoverflow.com/questions/45194771/are-xlsx-files-utf-8-encoded-by-definition\r\n // For example, for XML files, encoding is specified at the top node:\r\n // `<?xml version=\"1.0\" encoding=\"UTF-8\"/>`.\r\n //\r\n // `unzipper` supports setting encoding when reading an `entry`.\r\n // https://github.com/ZJONSSON/node-unzipper/issues/35\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/54\r\n //\r\n // If the `entry.setEncoding('utf8')` line would be commented out,\r\n // there's a `nonAsciiCharacterEncoding` test that wouldn't pass.\r\n //\r\n entry.setEncoding('utf8')\r\n //\r\n entry\r\n .on('data', data => contents += data.toString())\r\n .on('end', () => resolve(entries[entry.path] = contents))\r\n }))\r\n })\r\n })\r\n}\r\n"],"mappings":"AAAA,OAAOA,EAAP,MAAe,IAAf;AACA,OAAOC,MAAP,IAAiBC,QAAjB,QAAiC,QAAjC;AACA,OAAOC,KAAP,MAAkB,UAAlB;AAEA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,cAAT,CAAwBC,KAAxB,EAA+B;EAC5C;EACA;EACA;EACA,IAAMC,OAAO,GAAG,EAAhB;EAEA,IAAMC,MAAM,GAAGF,KAAK,YAAYJ,MAAjB,GACXI,KADW,GAGXA,KAAK,YAAYG,MAAjB,GACIN,QAAQ,CAACO,IAAT,CAAcJ,KAAd,CADJ,GAEIL,EAAE,CAACU,gBAAH,CAAoBL,KAApB,CALR;EAQA,OAAO,IAAIM,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;IACtC,IAAMC,aAAa,GAAG,EAAtB;IAEAP,MAAM,CACJ;IADI,CAEHQ,EAFH,CAEM,OAFN,EAEeF,MAFf,EAGGG,IAHH,CAGQb,KAAK,CAACc,KAAN,EAHR,EAIE;IAJF,CAKGF,EALH,CAKM,OALN,EAKeF,MALf,EAMGE,EANH,CAMM,OANN,EAMe;MAAA,OAAOJ,OAAO,CAACO,GAAR,CAAYJ,aAAZ,EAA2BK,IAA3B,CAAgC;QAAA,OAAMP,OAAO,CAACN,OAAD,CAAb;MAAA,CAAhC,CAAP;IAAA,CANf,EAOGS,EAPH,CAOM,OAPN,EAOe,UAACK,KAAD,EAAW;MACtB,IAAIC,QAAQ,GAAG,EAAf,CADsB,CAEtB;;MACAP,aAAa,CAACQ,IAAd,CAAmB,IAAIX,OAAJ,CAAY,UAACC,OAAD,EAAa;QAC1C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACAQ,KAAK,CAACG,WAAN,CAAkB,MAAlB,EAb0C,CAc1C;;QACAH,KAAK,CACFL,EADH,CACM,MADN,EACc,UAAAS,IAAI;UAAA,OAAIH,QAAQ,IAAIG,IAAI,CAACC,QAAL,EAAhB;QAAA,CADlB,EAEGV,EAFH,CAEM,KAFN,EAEa;UAAA,OAAMH,OAAO,CAACN,OAAO,CAACc,KAAK,CAACM,IAAP,CAAP,GAAsBL,QAAvB,CAAb;QAAA,CAFb;MAGD,CAlBkB,CAAnB;IAmBD,CA7BH;EA8BD,CAjCM,CAAP;AAkCD"}
|
package/node/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export {
|
|
|
22
22
|
|
|
23
23
|
export function parseExcelDate(excelSerialDate: number) : typeof Date;
|
|
24
24
|
|
|
25
|
-
type Input = Stream | PathLike;
|
|
25
|
+
type Input = Stream | Buffer | PathLike;
|
|
26
26
|
|
|
27
27
|
export function readXlsxFile<T extends object>(input: Input, options: ParseWithSchemaOptions<T>) : Promise<ParsedObjectsResult<T>>;
|
|
28
28
|
export function readXlsxFile<T extends object>(input: Input, options: ParseWithMapOptions) : Promise<ParsedObjectsResult<T>>;
|
package/package.json
CHANGED
package/web-worker/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export {
|
|
|
16
16
|
|
|
17
17
|
export function parseExcelDate(excelSerialDate: number) : typeof Date;
|
|
18
18
|
|
|
19
|
-
type Input = File;
|
|
19
|
+
type Input = File | ArrayBuffer;
|
|
20
20
|
|
|
21
21
|
export function readXlsxFile<T extends object>(input: Input, options: ParseWithSchemaOptions<T>) : Promise<ParsedObjectsResult<T>>;
|
|
22
22
|
export function readXlsxFile<T extends object>(input: Input, options: ParseWithMapOptions) : Promise<ParsedObjectsResult<T>>;
|